From a1f1b95d0043e92a504510434e143962079ffaf2 Mon Sep 17 00:00:00 2001 From: Amos Wenger Date: Tue, 26 Jul 2022 11:53:50 +0200 Subject: [PATCH 001/478] Merge commit 'e36a20c24f35a4cee82bbdc600289104c9237c22' into ra-sync-and-pms-component --- Cargo.lock | 7 + crates/hir-def/src/body/lower.rs | 42 +++++- crates/hir-def/src/data.rs | 19 ++- crates/hir-def/src/expr.rs | 12 +- crates/hir-def/src/item_scope.rs | 35 +++-- crates/hir-def/src/lib.rs | 10 +- crates/hir-def/src/nameres.rs | 27 +++- crates/hir-def/src/nameres/collector.rs | 56 +++---- crates/hir-def/src/resolver.rs | 7 +- crates/hir-ty/src/diagnostics/expr.rs | 5 +- crates/hir-ty/src/infer/expr.rs | 18 +-- crates/hir/src/lib.rs | 26 ++++ crates/hir/src/semantics.rs | 142 +++++++++++------- crates/hir/src/semantics/source_to_def.rs | 2 + crates/hir/src/source_analyzer.rs | 71 +++++++-- .../src/handlers/add_missing_impl_members.rs | 17 ++- .../src/utils/gen_trait_fn_body.rs | 11 +- crates/ide-completion/src/item.rs | 1 + crates/ide-completion/src/render.rs | 40 ++++- crates/ide-db/src/defs.rs | 13 +- crates/ide-db/src/lib.rs | 1 + crates/ide-db/src/path_transform.rs | 3 +- crates/ide-db/src/rename.rs | 12 +- crates/ide-db/src/search.rs | 10 +- .../src/handlers/missing_fields.rs | 31 ++++ crates/ide/src/doc_links.rs | 6 +- crates/ide/src/hover.rs | 7 +- crates/ide/src/hover/render.rs | 1 + crates/ide/src/navigation_target.rs | 2 + crates/ide/src/signature_help.rs | 3 +- crates/ide/src/syntax_highlighting.rs | 8 + .../ide/src/syntax_highlighting/highlight.rs | 1 + crates/ide/src/syntax_highlighting/inject.rs | 1 + crates/ide/src/syntax_highlighting/tags.rs | 1 + crates/proc-macro-api/src/process.rs | 1 + crates/proc-macro-srv-cli/Cargo.toml | 17 +++ crates/proc-macro-srv-cli/src/main.rs | 19 +++ crates/proc-macro-test/build.rs | 3 +- crates/project-model/src/project_json.rs | 5 + crates/project-model/src/sysroot.rs | 21 ++- crates/project-model/src/tests.rs | 7 +- crates/project-model/src/workspace.rs | 24 ++- crates/rust-analyzer/src/cli/load_cargo.rs | 6 +- crates/rust-analyzer/src/global_state.rs | 4 +- crates/rust-analyzer/src/handlers.rs | 2 +- crates/rust-analyzer/src/reload.rs | 77 +++++++--- crates/rust-analyzer/src/semantic_tokens.rs | 1 + crates/rust-analyzer/src/to_proto.rs | 5 +- 48 files changed, 627 insertions(+), 213 deletions(-) create mode 100644 crates/proc-macro-srv-cli/Cargo.toml create mode 100644 crates/proc-macro-srv-cli/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 4c830006832c..703f0e5b8af9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1198,6 +1198,13 @@ dependencies = [ "tt", ] +[[package]] +name = "proc-macro-srv-cli" +version = "0.0.0" +dependencies = [ + "proc-macro-srv", +] + [[package]] name = "proc-macro-test" version = "0.0.0" diff --git a/crates/hir-def/src/body/lower.rs b/crates/hir-def/src/body/lower.rs index c3f261122784..66f9c24e8724 100644 --- a/crates/hir-def/src/body/lower.rs +++ b/crates/hir-def/src/body/lower.rs @@ -96,6 +96,7 @@ pub(super) fn lower( expander, name_to_pat_grouping: Default::default(), is_lowering_inside_or_pat: false, + is_lowering_assignee_expr: false, } .collect(params, body) } @@ -109,6 +110,7 @@ struct ExprCollector<'a> { // a poor-mans union-find? name_to_pat_grouping: FxHashMap>, is_lowering_inside_or_pat: bool, + is_lowering_assignee_expr: bool, } impl ExprCollector<'_> { @@ -283,7 +285,10 @@ impl ExprCollector<'_> { } else { Box::default() }; - self.alloc_expr(Expr::Call { callee, args }, syntax_ptr) + self.alloc_expr( + Expr::Call { callee, args, is_assignee_expr: self.is_lowering_assignee_expr }, + syntax_ptr, + ) } ast::Expr::MethodCallExpr(e) => { let receiver = self.collect_expr_opt(e.receiver()); @@ -359,6 +364,7 @@ impl ExprCollector<'_> { ast::Expr::RecordExpr(e) => { let path = e.path().and_then(|path| self.expander.parse_path(self.db, path)).map(Box::new); + let is_assignee_expr = self.is_lowering_assignee_expr; let record_lit = if let Some(nfl) = e.record_expr_field_list() { let fields = nfl .fields() @@ -378,9 +384,16 @@ impl ExprCollector<'_> { }) .collect(); let spread = nfl.spread().map(|s| self.collect_expr(s)); - Expr::RecordLit { path, fields, spread } + let ellipsis = nfl.dotdot_token().is_some(); + Expr::RecordLit { path, fields, spread, ellipsis, is_assignee_expr } } else { - Expr::RecordLit { path, fields: Box::default(), spread: None } + Expr::RecordLit { + path, + fields: Box::default(), + spread: None, + ellipsis: false, + is_assignee_expr, + } }; self.alloc_expr(record_lit, syntax_ptr) @@ -458,14 +471,21 @@ impl ExprCollector<'_> { ) } ast::Expr::BinExpr(e) => { - let lhs = self.collect_expr_opt(e.lhs()); - let rhs = self.collect_expr_opt(e.rhs()); let op = e.op_kind(); + if let Some(ast::BinaryOp::Assignment { op: None }) = op { + self.is_lowering_assignee_expr = true; + } + let lhs = self.collect_expr_opt(e.lhs()); + self.is_lowering_assignee_expr = false; + let rhs = self.collect_expr_opt(e.rhs()); self.alloc_expr(Expr::BinaryOp { lhs, rhs, op }, syntax_ptr) } ast::Expr::TupleExpr(e) => { let exprs = e.fields().map(|expr| self.collect_expr(expr)).collect(); - self.alloc_expr(Expr::Tuple { exprs }, syntax_ptr) + self.alloc_expr( + Expr::Tuple { exprs, is_assignee_expr: self.is_lowering_assignee_expr }, + syntax_ptr, + ) } ast::Expr::BoxExpr(e) => { let expr = self.collect_expr_opt(e.expr()); @@ -477,8 +497,14 @@ impl ExprCollector<'_> { match kind { ArrayExprKind::ElementList(e) => { - let exprs = e.map(|expr| self.collect_expr(expr)).collect(); - self.alloc_expr(Expr::Array(Array::ElementList(exprs)), syntax_ptr) + let elements = e.map(|expr| self.collect_expr(expr)).collect(); + self.alloc_expr( + Expr::Array(Array::ElementList { + elements, + is_assignee_expr: self.is_lowering_assignee_expr, + }), + syntax_ptr, + ) } ArrayExprKind::Repeat { initializer, repeat } => { let initializer = self.collect_expr_opt(initializer); diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs index 430941141933..35c8708955a7 100644 --- a/crates/hir-def/src/data.rs +++ b/crates/hir-def/src/data.rs @@ -12,7 +12,7 @@ use crate::{ db::DefDatabase, intern::Interned, item_tree::{self, AssocItem, FnFlags, ItemTree, ItemTreeId, ModItem, Param, TreeId}, - nameres::{attr_resolution::ResolvedAttr, DefMap}, + nameres::{attr_resolution::ResolvedAttr, proc_macro::ProcMacroKind, DefMap}, type_ref::{TraitRef, TypeBound, TypeRef}, visibility::RawVisibility, AssocItemId, AstIdWithPath, ConstId, ConstLoc, FunctionId, FunctionLoc, HasModule, ImplId, @@ -348,7 +348,8 @@ impl MacroRulesData { #[derive(Debug, Clone, PartialEq, Eq)] pub struct ProcMacroData { pub name: Name, - // FIXME: Record deriver helper here? + /// Derive helpers, if this is a derive + pub helpers: Option>, } impl ProcMacroData { @@ -360,17 +361,23 @@ impl ProcMacroData { let item_tree = loc.id.item_tree(db); let makro = &item_tree[loc.id.value]; - let name = if let Some(def) = item_tree + let (name, helpers) = if let Some(def) = item_tree .attrs(db, loc.container.krate(), ModItem::from(loc.id.value).into()) .parse_proc_macro_decl(&makro.name) { - def.name + ( + def.name, + match def.kind { + ProcMacroKind::CustomDerive { helpers } => Some(helpers), + ProcMacroKind::FnLike | ProcMacroKind::Attr => None, + }, + ) } else { // eeeh... stdx::never!("proc macro declaration is not a proc macro"); - makro.name.clone() + (makro.name.clone(), None) }; - Arc::new(ProcMacroData { name }) + Arc::new(ProcMacroData { name, helpers }) } } diff --git a/crates/hir-def/src/expr.rs b/crates/hir-def/src/expr.rs index a991365d6bf4..c1b3788acb7d 100644 --- a/crates/hir-def/src/expr.rs +++ b/crates/hir-def/src/expr.rs @@ -110,6 +110,7 @@ pub enum Expr { Call { callee: ExprId, args: Box<[ExprId]>, + is_assignee_expr: bool, }, MethodCall { receiver: ExprId, @@ -138,6 +139,8 @@ pub enum Expr { path: Option>, fields: Box<[RecordLitField]>, spread: Option, + ellipsis: bool, + is_assignee_expr: bool, }, Field { expr: ExprId, @@ -196,6 +199,7 @@ pub enum Expr { }, Tuple { exprs: Box<[ExprId]>, + is_assignee_expr: bool, }, Unsafe { body: ExprId, @@ -211,7 +215,7 @@ pub enum Expr { #[derive(Debug, Clone, Eq, PartialEq)] pub enum Array { - ElementList(Box<[ExprId]>), + ElementList { elements: Box<[ExprId]>, is_assignee_expr: bool }, Repeat { initializer: ExprId, repeat: ExprId }, } @@ -285,7 +289,7 @@ impl Expr { f(*iterable); f(*body); } - Expr::Call { callee, args } => { + Expr::Call { callee, args, .. } => { f(*callee); args.iter().copied().for_each(f); } @@ -339,9 +343,9 @@ impl Expr { | Expr::Box { expr } => { f(*expr); } - Expr::Tuple { exprs } => exprs.iter().copied().for_each(f), + Expr::Tuple { exprs, .. } => exprs.iter().copied().for_each(f), Expr::Array(a) => match a { - Array::ElementList(exprs) => exprs.iter().copied().for_each(f), + Array::ElementList { elements, .. } => elements.iter().copied().for_each(f), Array::Repeat { initializer, repeat } => { f(*initializer); f(*repeat) diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index b98b2855cb08..579f803ea193 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -66,10 +66,14 @@ pub struct ItemScope { attr_macros: FxHashMap, MacroCallId>, /// The derive macro invocations in this scope, keyed by the owner item over the actual derive attributes /// paired with the derive macro invocations for the specific attribute. - derive_macros: FxHashMap< - AstId, - SmallVec<[(AttrId, MacroCallId, SmallVec<[Option; 1]>); 1]>, - >, + derive_macros: FxHashMap, SmallVec<[DeriveMacroInvocation; 1]>>, +} + +#[derive(Debug, PartialEq, Eq)] +struct DeriveMacroInvocation { + attr_id: AttrId, + attr_call_id: MacroCallId, + derive_call_ids: SmallVec<[Option; 1]>, } pub(crate) static BUILTIN_SCOPE: Lazy> = Lazy::new(|| { @@ -210,12 +214,14 @@ impl ItemScope { &mut self, adt: AstId, call: MacroCallId, - attr_id: AttrId, + id: AttrId, idx: usize, ) { if let Some(derives) = self.derive_macros.get_mut(&adt) { - if let Some((.., invocs)) = derives.iter_mut().find(|&&mut (id, ..)| id == attr_id) { - invocs[idx] = Some(call); + if let Some(DeriveMacroInvocation { derive_call_ids, .. }) = + derives.iter_mut().find(|&&mut DeriveMacroInvocation { attr_id, .. }| id == attr_id) + { + derive_call_ids[idx] = Some(call); } } } @@ -227,10 +233,14 @@ impl ItemScope { &mut self, adt: AstId, attr_id: AttrId, - call_id: MacroCallId, + attr_call_id: MacroCallId, len: usize, ) { - self.derive_macros.entry(adt).or_default().push((attr_id, call_id, smallvec![None; len])); + self.derive_macros.entry(adt).or_default().push(DeriveMacroInvocation { + attr_id, + attr_call_id, + derive_call_ids: smallvec![None; len], + }); } pub(crate) fn derive_macro_invocs( @@ -242,7 +252,12 @@ impl ItemScope { ), > + '_ { self.derive_macros.iter().map(|(k, v)| { - (*k, v.iter().map(|&(attr_id, call_id, ref invocs)| (attr_id, call_id, &**invocs))) + ( + *k, + v.iter().map(|DeriveMacroInvocation { attr_id, attr_call_id, derive_call_ids }| { + (*attr_id, *attr_call_id, &**derive_call_ids) + }), + ) }) } diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs index 0dd0a5861ef3..56603f4b1545 100644 --- a/crates/hir-def/src/lib.rs +++ b/crates/hir-def/src/lib.rs @@ -934,11 +934,11 @@ fn derive_macro_as_call_id( derive_attr: AttrId, derive_pos: u32, krate: CrateId, - resolver: impl Fn(path::ModPath) -> Option, -) -> Result { - let def: MacroDefId = resolver(item_attr.path.clone()) + resolver: impl Fn(path::ModPath) -> Option<(MacroId, MacroDefId)>, +) -> Result<(MacroId, MacroDefId, MacroCallId), UnresolvedMacro> { + let (macro_id, def_id) = resolver(item_attr.path.clone()) .ok_or_else(|| UnresolvedMacro { path: item_attr.path.clone() })?; - let res = def.as_lazy_macro( + let call_id = def_id.as_lazy_macro( db.upcast(), krate, MacroCallKind::Derive { @@ -947,7 +947,7 @@ fn derive_macro_as_call_id( derive_attr_index: derive_attr.ast_index, }, ); - Ok(res) + Ok((macro_id, def_id, call_id)) } fn attr_macro_as_call_id( diff --git a/crates/hir-def/src/nameres.rs b/crates/hir-def/src/nameres.rs index 756fd583af4d..6eb530ecc542 100644 --- a/crates/hir-def/src/nameres.rs +++ b/crates/hir-def/src/nameres.rs @@ -48,19 +48,19 @@ //! the result pub mod attr_resolution; -mod collector; +pub mod proc_macro; pub mod diagnostics; +mod collector; mod mod_resolution; mod path_resolution; -mod proc_macro; #[cfg(test)] mod tests; -use std::{cmp::Ord, sync::Arc}; +use std::{cmp::Ord, ops::Deref, sync::Arc}; use base_db::{CrateId, Edition, FileId}; -use hir_expand::{name::Name, InFile, MacroDefId}; +use hir_expand::{name::Name, InFile, MacroCallId, MacroDefId}; use itertools::Itertools; use la_arena::Arena; use profile::Count; @@ -76,7 +76,7 @@ use crate::{ path::ModPath, per_ns::PerNs, visibility::Visibility, - AstId, BlockId, BlockLoc, FunctionId, LocalModuleId, ModuleId, ProcMacroId, + AstId, BlockId, BlockLoc, FunctionId, LocalModuleId, MacroId, ModuleId, ProcMacroId, }; /// Contains the results of (early) name resolution. @@ -106,6 +106,9 @@ pub struct DefMap { fn_proc_macro_mapping: FxHashMap, /// The error that occurred when failing to load the proc-macro dll. proc_macro_loading_error: Option>, + /// Tracks which custom derives are in scope for an item, to allow resolution of derive helper + /// attributes. + derive_helpers_in_scope: FxHashMap, Vec<(Name, MacroId, MacroCallId)>>, /// Custom attributes registered with `#![register_attr]`. registered_attrs: Vec, @@ -275,6 +278,7 @@ impl DefMap { exported_derives: FxHashMap::default(), fn_proc_macro_mapping: FxHashMap::default(), proc_macro_loading_error: None, + derive_helpers_in_scope: FxHashMap::default(), prelude: None, root, modules, @@ -294,12 +298,22 @@ impl DefMap { pub fn modules(&self) -> impl Iterator + '_ { self.modules.iter() } + + pub fn derive_helpers_in_scope( + &self, + id: AstId, + ) -> Option<&[(Name, MacroId, MacroCallId)]> { + self.derive_helpers_in_scope.get(&id.map(|it| it.upcast())).map(Deref::deref) + } + pub fn registered_tools(&self) -> &[SmolStr] { &self.registered_tools } + pub fn registered_attrs(&self) -> &[SmolStr] { &self.registered_attrs } + pub fn root(&self) -> LocalModuleId { self.root } @@ -307,6 +321,7 @@ impl DefMap { pub fn fn_as_proc_macro(&self, id: FunctionId) -> Option { self.fn_proc_macro_mapping.get(&id).copied() } + pub fn proc_macro_loading_error(&self) -> Option<&str> { self.proc_macro_loading_error.as_deref() } @@ -463,6 +478,7 @@ impl DefMap { registered_attrs, registered_tools, fn_proc_macro_mapping, + derive_helpers_in_scope, proc_macro_loading_error: _, block: _, edition: _, @@ -479,6 +495,7 @@ impl DefMap { registered_attrs.shrink_to_fit(); registered_tools.shrink_to_fit(); fn_proc_macro_mapping.shrink_to_fit(); + derive_helpers_in_scope.shrink_to_fit(); for (_, module) in modules.iter_mut() { module.children.shrink_to_fit(); module.scope.shrink_to_fit(); diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index 67651e06413c..f394c541719f 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -18,7 +18,7 @@ use hir_expand::{ ExpandTo, HirFileId, InFile, MacroCallId, MacroCallKind, MacroCallLoc, MacroDefId, MacroDefKind, }; -use itertools::Itertools; +use itertools::{izip, Itertools}; use la_arena::Idx; use limit::Limit; use rustc_hash::{FxHashMap, FxHashSet}; @@ -110,7 +110,6 @@ pub(super) fn collect_defs(db: &dyn DefDatabase, mut def_map: DefMap, tree_id: T proc_macros, from_glob_import: Default::default(), skip_attrs: Default::default(), - derive_helpers_in_scope: Default::default(), is_proc_macro, }; if tree_id.is_block() { @@ -258,9 +257,6 @@ struct DefCollector<'a> { /// This also stores the attributes to skip when we resolve derive helpers and non-macro /// non-builtin attributes in general. skip_attrs: FxHashMap, AttrId>, - /// Tracks which custom derives are in scope for an item, to allow resolution of derive helper - /// attributes. - derive_helpers_in_scope: FxHashMap, Vec>, } impl DefCollector<'_> { @@ -1059,7 +1055,7 @@ impl DefCollector<'_> { }; let mut res = ReachedFixedPoint::Yes; macros.retain(|directive| { - let resolver = |path| { + let resolver2 = |path| { let resolved_res = self.def_map.resolve_path_fp_with_macro( self.db, ResolveMode::Other, @@ -1067,8 +1063,12 @@ impl DefCollector<'_> { &path, BuiltinShadowMode::Module, ); - resolved_res.resolved_def.take_macros().map(|it| macro_id_to_def_id(self.db, it)) + resolved_res + .resolved_def + .take_macros() + .map(|it| (it, macro_id_to_def_id(self.db, it))) }; + let resolver = |path| resolver2(path).map(|(_, it)| it); match &directive.kind { MacroDirectiveKind::FnLike { ast_id, expand_to } => { @@ -1087,21 +1087,37 @@ impl DefCollector<'_> { } } MacroDirectiveKind::Derive { ast_id, derive_attr, derive_pos } => { - let call_id = derive_macro_as_call_id( + let id = derive_macro_as_call_id( self.db, ast_id, *derive_attr, *derive_pos as u32, self.def_map.krate, - &resolver, + &resolver2, ); - if let Ok(call_id) = call_id { + + if let Ok((macro_id, def_id, call_id)) = id { self.def_map.modules[directive.module_id].scope.set_derive_macro_invoc( ast_id.ast_id, call_id, *derive_attr, *derive_pos, ); + // Record its helper attributes. + if def_id.krate != self.def_map.krate { + let def_map = self.db.crate_def_map(def_id.krate); + if let Some(helpers) = def_map.exported_derives.get(&def_id) { + self.def_map + .derive_helpers_in_scope + .entry(ast_id.ast_id.map(|it| it.upcast())) + .or_default() + .extend(izip!( + helpers.iter().cloned(), + iter::repeat(macro_id), + iter::repeat(call_id), + )); + } + } push_resolved(directive, call_id); res = ReachedFixedPoint::No; @@ -1132,8 +1148,8 @@ impl DefCollector<'_> { }; if let Some(ident) = path.as_ident() { - if let Some(helpers) = self.derive_helpers_in_scope.get(&ast_id) { - if helpers.contains(ident) { + if let Some(helpers) = self.def_map.derive_helpers_in_scope.get(&ast_id) { + if helpers.iter().any(|(it, ..)| it == ident) { cov_mark::hit!(resolved_derive_helper); // Resolved to derive helper. Collect the item's attributes again, // starting after the derive helper. @@ -1148,7 +1164,7 @@ impl DefCollector<'_> { }; if matches!( def, - MacroDefId { kind:MacroDefKind::BuiltInAttr(expander, _),.. } + MacroDefId { kind:MacroDefKind::BuiltInAttr(expander, _),.. } if expander.is_derive() ) { // Resolved to `#[derive]` @@ -1317,19 +1333,6 @@ impl DefCollector<'_> { self.def_map.diagnostics.push(diag); } - // If we've just resolved a derive, record its helper attributes. - if let MacroCallKind::Derive { ast_id, .. } = &loc.kind { - if loc.def.krate != self.def_map.krate { - let def_map = self.db.crate_def_map(loc.def.krate); - if let Some(helpers) = def_map.exported_derives.get(&loc.def) { - self.derive_helpers_in_scope - .entry(ast_id.map(|it| it.upcast())) - .or_default() - .extend(helpers.iter().cloned()); - } - } - } - // Then, fetch and process the item tree. This will reuse the expansion result from above. let item_tree = self.db.file_item_tree(file_id); let mod_dir = self.mod_dirs[&module_id].clone(); @@ -2140,7 +2143,6 @@ mod tests { proc_macros: Default::default(), from_glob_import: Default::default(), skip_attrs: Default::default(), - derive_helpers_in_scope: Default::default(), is_proc_macro: false, }; collector.seed_with_top_level(); diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs index c8d3052102f4..3163fa0f93fa 100644 --- a/crates/hir-def/src/resolver.rs +++ b/crates/hir-def/src/resolver.rs @@ -149,6 +149,7 @@ impl Resolver { self.resolve_module_path(db, path, BuiltinShadowMode::Module) } + // FIXME: This shouldn't exist pub fn resolve_module_path_in_trait_assoc_items( &self, db: &dyn DefDatabase, @@ -448,10 +449,14 @@ impl Resolver { } pub fn krate(&self) -> CrateId { + self.def_map().krate() + } + + pub fn def_map(&self) -> &DefMap { self.scopes .get(0) .and_then(|scope| match scope { - Scope::ModuleScope(m) => Some(m.def_map.krate()), + Scope::ModuleScope(m) => Some(&m.def_map), _ => None, }) .expect("module scope invariant violated") diff --git a/crates/hir-ty/src/diagnostics/expr.rs b/crates/hir-ty/src/diagnostics/expr.rs index 8cca522aef62..642e03edd230 100644 --- a/crates/hir-ty/src/diagnostics/expr.rs +++ b/crates/hir-ty/src/diagnostics/expr.rs @@ -305,7 +305,10 @@ pub fn record_literal_missing_fields( expr: &Expr, ) -> Option<(VariantId, Vec, /*exhaustive*/ bool)> { let (fields, exhaustive) = match expr { - Expr::RecordLit { path: _, fields, spread } => (fields, spread.is_none()), + Expr::RecordLit { fields, spread, ellipsis, is_assignee_expr, .. } => { + let exhaustive = if *is_assignee_expr { !*ellipsis } else { spread.is_none() }; + (fields, exhaustive) + } _ => return None, }; diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 2f3346707209..d164e64a8be0 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -276,7 +276,7 @@ impl<'a> InferenceContext<'a> { closure_ty } - Expr::Call { callee, args } => { + Expr::Call { callee, args, .. } => { let callee_ty = self.infer_expr(*callee, &Expectation::none()); let mut derefs = Autoderef::new(&mut self.table, callee_ty.clone()); let mut res = None; @@ -421,7 +421,7 @@ impl<'a> InferenceContext<'a> { } TyKind::Never.intern(Interner) } - Expr::RecordLit { path, fields, spread } => { + Expr::RecordLit { path, fields, spread, .. } => { let (ty, def_id) = self.resolve_variant(path.as_deref(), false); if let Some(variant) = def_id { self.write_variant_resolution(tgt_expr.into(), variant); @@ -693,7 +693,7 @@ impl<'a> InferenceContext<'a> { self.err_ty() } } - Expr::Tuple { exprs } => { + Expr::Tuple { exprs, .. } => { let mut tys = match expected .only_has_type(&mut self.table) .as_ref() @@ -724,12 +724,12 @@ impl<'a> InferenceContext<'a> { let expected = Expectation::has_type(elem_ty.clone()); let len = match array { - Array::ElementList(items) => { - for &expr in items.iter() { + Array::ElementList { elements, .. } => { + for &expr in elements.iter() { let cur_elem_ty = self.infer_expr_inner(expr, &expected); coerce.coerce(self, Some(expr), &cur_elem_ty); } - consteval::usize_const(Some(items.len() as u128)) + consteval::usize_const(Some(elements.len() as u128)) } &Array::Repeat { initializer, repeat } => { self.infer_expr_coerce(initializer, &Expectation::has_type(elem_ty)); @@ -850,7 +850,7 @@ impl<'a> InferenceContext<'a> { let rhs_ty = self.resolve_ty_shallow(rhs_ty); let ty = match &self.body[lhs] { - Expr::Tuple { exprs } => { + Expr::Tuple { exprs, .. } => { // We don't consider multiple ellipses. This is analogous to // `hir_def::body::lower::ExprCollector::collect_tuple_pat()`. let ellipsis = exprs.iter().position(|e| is_rest_expr(*e)); @@ -858,7 +858,7 @@ impl<'a> InferenceContext<'a> { self.infer_tuple_pat_like(&rhs_ty, (), ellipsis, &exprs) } - Expr::Call { callee, args } => { + Expr::Call { callee, args, .. } => { // Tuple structs let path = match &self.body[*callee] { Expr::Path(path) => Some(path), @@ -872,7 +872,7 @@ impl<'a> InferenceContext<'a> { self.infer_tuple_struct_pat_like(path, &rhs_ty, (), lhs, ellipsis, &args) } - Expr::Array(Array::ElementList(elements)) => { + Expr::Array(Array::ElementList { elements, .. }) => { let elem_ty = match rhs_ty.kind(Interner) { TyKind::Array(st, _) => st.clone(), _ => self.err_ty(), diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 9ffbb3964cf1..d4925455d7bd 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -2252,6 +2252,32 @@ impl Local { } } +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub struct DeriveHelper { + pub(crate) derive: MacroId, + pub(crate) idx: usize, +} + +impl DeriveHelper { + pub fn derive(&self) -> Macro { + Macro { id: self.derive.into() } + } + + pub fn name(&self, db: &dyn HirDatabase) -> Name { + match self.derive { + MacroId::Macro2Id(_) => None, + MacroId::MacroRulesId(_) => None, + MacroId::ProcMacroId(proc_macro) => db + .proc_macro_data(proc_macro) + .helpers + .as_ref() + .and_then(|it| it.get(self.idx)) + .cloned(), + } + .unwrap_or_else(|| Name::missing()) + } +} + // FIXME: Wrong name? This is could also be a registered attribute #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub struct BuiltinAttr { diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 043f2b7c24dc..fc8f23f19ab9 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -29,9 +29,9 @@ use crate::{ db::HirDatabase, semantics::source_to_def::{ChildContainer, SourceToDefCache, SourceToDefCtx}, source_analyzer::{resolve_hir_path, SourceAnalyzer}, - Access, BindingMode, BuiltinAttr, Callable, ConstParam, Crate, Field, Function, HasSource, - HirFileId, Impl, InFile, Label, LifetimeParam, Local, Macro, Module, ModuleDef, Name, Path, - ScopeDef, ToolModule, Trait, Type, TypeAlias, TypeParam, VariantDef, + Access, BindingMode, BuiltinAttr, Callable, ConstParam, Crate, DeriveHelper, Field, Function, + HasSource, HirFileId, Impl, InFile, Label, LifetimeParam, Local, Macro, Module, ModuleDef, + Name, Path, ScopeDef, ToolModule, Trait, Type, TypeAlias, TypeParam, VariantDef, }; #[derive(Debug, Clone, PartialEq, Eq)] @@ -47,6 +47,7 @@ pub enum PathResolution { SelfType(Impl), BuiltinAttr(BuiltinAttr), ToolModule(ToolModule), + DeriveHelper(DeriveHelper), } impl PathResolution { @@ -71,6 +72,7 @@ impl PathResolution { PathResolution::BuiltinAttr(_) | PathResolution::ToolModule(_) | PathResolution::Local(_) + | PathResolution::DeriveHelper(_) | PathResolution::ConstParam(_) => None, PathResolution::TypeParam(param) => Some(TypeNs::GenericParam((*param).into())), PathResolution::SelfType(impl_def) => Some(TypeNs::SelfType((*impl_def).into())), @@ -733,6 +735,8 @@ impl<'db> SemanticsImpl<'db> { Some(it) => it, None => return, }; + let def_map = sa.resolver.def_map(); + let mut stack: SmallVec<[_; 4]> = smallvec![InFile::new(sa.file_id, token)]; let mut cache = self.expansion_info_cache.borrow_mut(); let mut mcache = self.macro_call_cache.borrow_mut(); @@ -764,7 +768,7 @@ impl<'db> SemanticsImpl<'db> { while let Some(token) = stack.pop() { self.db.unwind_if_cancelled(); let was_not_remapped = (|| { - // are we inside an attribute macro call + // First expand into attribute invocations let containing_attribute_macro_call = self.with_ctx(|ctx| { token.value.parent_ancestors().filter_map(ast::Item::cast).find_map(|item| { if item.attrs().next().is_none() { @@ -784,53 +788,19 @@ impl<'db> SemanticsImpl<'db> { ); } - // or are we inside a function-like macro call - if let Some(tt) = - // FIXME replace map.while_some with take_while once stable - token - .value - .parent_ancestors() - .map(ast::TokenTree::cast) - .while_some() - .last() - { - let parent = tt.syntax().parent()?; - // check for derive attribute here - let macro_call = match_ast! { - match parent { - ast::MacroCall(mcall) => mcall, - // attribute we failed expansion for earlier, this might be a derive invocation - // so try downmapping the token into the pseudo derive expansion - // see [hir_expand::builtin_attr_macro] for how the pseudo derive expansion works - ast::Meta(meta) => { - let attr = meta.parent_attr()?; - let adt = attr.syntax().parent().and_then(ast::Adt::cast)?; - let call_id = self.with_ctx(|ctx| { - let (_, call_id, _) = ctx.attr_to_derive_macro_call( - token.with_value(&adt), - token.with_value(attr), - )?; - Some(call_id) - })?; - let file_id = call_id.as_file(); - return process_expansion_for_token( - &mut stack, - file_id, - Some(adt.into()), - token.as_ref(), - ); - }, - _ => return None, - } - }; + // Then check for token trees, that means we are either in a function-like macro or + // secondary attribute inputs + let tt = token.value.parent_ancestors().map_while(ast::TokenTree::cast).last()?; + let parent = tt.syntax().parent()?; - if tt.left_delimiter_token().map_or(false, |it| it == token.value) { - return None; - } - if tt.right_delimiter_token().map_or(false, |it| it == token.value) { - return None; - } + if tt.left_delimiter_token().map_or(false, |it| it == token.value) { + return None; + } + if tt.right_delimiter_token().map_or(false, |it| it == token.value) { + return None; + } + if let Some(macro_call) = ast::MacroCall::cast(parent.clone()) { let mcall = token.with_value(macro_call); let file_id = match mcache.get(&mcall) { Some(&it) => it, @@ -840,11 +810,77 @@ impl<'db> SemanticsImpl<'db> { it } }; - return process_expansion_for_token(&mut stack, file_id, None, token.as_ref()); - } + process_expansion_for_token(&mut stack, file_id, None, token.as_ref()) + } else if let Some(meta) = ast::Meta::cast(parent.clone()) { + // attribute we failed expansion for earlier, this might be a derive invocation + // or derive helper attribute + let attr = meta.parent_attr()?; - // outside of a macro invocation so this is a "final" token - None + let adt = if let Some(adt) = attr.syntax().parent().and_then(ast::Adt::cast) { + // this might be a derive, or a derive helper on an ADT + let derive_call = self.with_ctx(|ctx| { + // so try downmapping the token into the pseudo derive expansion + // see [hir_expand::builtin_attr_macro] for how the pseudo derive expansion works + ctx.attr_to_derive_macro_call( + token.with_value(&adt), + token.with_value(attr.clone()), + ) + .map(|(_, call_id, _)| call_id) + }); + + match derive_call { + Some(call_id) => { + // resolved to a derive + let file_id = call_id.as_file(); + return process_expansion_for_token( + &mut stack, + file_id, + Some(adt.into()), + token.as_ref(), + ); + } + None => Some(adt), + } + } else { + // Otherwise this could be a derive helper on a variant or field + if let Some(field) = attr.syntax().parent().and_then(ast::RecordField::cast) + { + field.syntax().ancestors().take(4).find_map(ast::Adt::cast) + } else if let Some(field) = + attr.syntax().parent().and_then(ast::TupleField::cast) + { + field.syntax().ancestors().take(4).find_map(ast::Adt::cast) + } else if let Some(variant) = + attr.syntax().parent().and_then(ast::Variant::cast) + { + variant.syntax().ancestors().nth(2).and_then(ast::Adt::cast) + } else { + None + } + }?; + if !self.with_ctx(|ctx| ctx.has_derives(InFile::new(token.file_id, &adt))) { + return None; + } + // Not an attribute, nor a derive, so it's either a builtin or a derive helper + // Try to resolve to a derive helper and downmap + let attr_name = attr.path().and_then(|it| it.as_single_name_ref())?.as_name(); + let id = self.db.ast_id_map(token.file_id).ast_id(&adt); + let helpers = + def_map.derive_helpers_in_scope(InFile::new(token.file_id, id))?; + let item = Some(adt.into()); + let mut res = None; + for (.., derive) in helpers.iter().filter(|(helper, ..)| *helper == attr_name) { + res = res.or(process_expansion_for_token( + &mut stack, + derive.as_file(), + item.clone(), + token.as_ref(), + )); + } + res + } else { + None + } })() .is_none(); diff --git a/crates/hir/src/semantics/source_to_def.rs b/crates/hir/src/semantics/source_to_def.rs index 5c4cfa7b45a5..ba9a1cfb6b51 100644 --- a/crates/hir/src/semantics/source_to_def.rs +++ b/crates/hir/src/semantics/source_to_def.rs @@ -247,6 +247,7 @@ impl SourceToDefCtx<'_, '_> { map[keys::ATTR_MACRO_CALL].get(&src.value).copied() } + /// (AttrId, derive attribute call id, derive call ids) pub(super) fn attr_to_derive_macro_call( &mut self, item: InFile<&ast::Adt>, @@ -257,6 +258,7 @@ impl SourceToDefCtx<'_, '_> { .get(&src.value) .map(|&(attr_id, call_id, ref ids)| (attr_id, call_id, &**ids)) } + pub(super) fn has_derives(&mut self, adt: InFile<&ast::Adt>) -> bool { self.dyn_map(adt).as_ref().map_or(false, |map| !map[keys::DERIVE_MACRO_CALL].is_empty()) } diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index e89f8a542981..1eb51b20c356 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -35,6 +35,7 @@ use hir_ty::{ method_resolution, Adjust, Adjustment, AutoBorrow, InferenceResult, Interner, Substitution, TyExt, TyKind, TyLoweringContext, }; +use itertools::Itertools; use smallvec::SmallVec; use syntax::{ ast::{self, AstNode}, @@ -43,8 +44,8 @@ use syntax::{ use crate::{ db::HirDatabase, semantics::PathResolution, Adt, AssocItem, BindingMode, BuiltinAttr, - BuiltinType, Callable, Const, Field, Function, Local, Macro, ModuleDef, Static, Struct, - ToolModule, Trait, Type, TypeAlias, Variant, + BuiltinType, Callable, Const, DeriveHelper, Field, Function, Local, Macro, ModuleDef, Static, + Struct, ToolModule, Trait, Type, TypeAlias, Variant, }; /// `SourceAnalyzer` is a convenience wrapper which exposes HIR API in terms of @@ -429,19 +430,21 @@ impl SourceAnalyzer { } } - let is_path_of_attr = path + let meta_path = path .syntax() .ancestors() - .map(|it| it.kind()) - .take_while(|&kind| ast::Path::can_cast(kind) || ast::Meta::can_cast(kind)) + .take_while(|it| { + let kind = it.kind(); + ast::Path::can_cast(kind) || ast::Meta::can_cast(kind) + }) .last() - .map_or(false, ast::Meta::can_cast); + .and_then(ast::Meta::cast); // Case where path is a qualifier of another path, e.g. foo::bar::Baz where we are // trying to resolve foo::bar. if path.parent_path().is_some() { return match resolve_hir_path_qualifier(db, &self.resolver, &hir_path) { - None if is_path_of_attr => { + None if meta_path.is_some() => { path.first_segment().and_then(|it| it.name_ref()).and_then(|name_ref| { ToolModule::by_name(db, self.resolver.krate().into(), &name_ref.text()) .map(PathResolution::ToolModule) @@ -449,16 +452,56 @@ impl SourceAnalyzer { } res => res, }; - } else if is_path_of_attr { + } else if let Some(meta_path) = meta_path { // Case where we are resolving the final path segment of a path in an attribute // in this case we have to check for inert/builtin attributes and tools and prioritize // resolution of attributes over other namespaces - let name_ref = path.as_single_name_ref(); - let builtin = name_ref.as_ref().and_then(|name_ref| { - BuiltinAttr::by_name(db, self.resolver.krate().into(), &name_ref.text()) - }); - if let Some(_) = builtin { - return builtin.map(PathResolution::BuiltinAttr); + if let Some(name_ref) = path.as_single_name_ref() { + let builtin = + BuiltinAttr::by_name(db, self.resolver.krate().into(), &name_ref.text()); + if let Some(_) = builtin { + return builtin.map(PathResolution::BuiltinAttr); + } + + if let Some(attr) = meta_path.parent_attr() { + let adt = if let Some(field) = + attr.syntax().parent().and_then(ast::RecordField::cast) + { + field.syntax().ancestors().take(4).find_map(ast::Adt::cast) + } else if let Some(field) = + attr.syntax().parent().and_then(ast::TupleField::cast) + { + field.syntax().ancestors().take(4).find_map(ast::Adt::cast) + } else if let Some(variant) = + attr.syntax().parent().and_then(ast::Variant::cast) + { + variant.syntax().ancestors().nth(2).and_then(ast::Adt::cast) + } else { + None + }; + if let Some(adt) = adt { + let ast_id = db.ast_id_map(self.file_id).ast_id(&adt); + if let Some(helpers) = self + .resolver + .def_map() + .derive_helpers_in_scope(InFile::new(self.file_id, ast_id)) + { + // FIXME: Multiple derives can have the same helper + let name_ref = name_ref.as_name(); + for (macro_id, mut helpers) in + helpers.iter().group_by(|(_, macro_id, ..)| macro_id).into_iter() + { + if let Some(idx) = helpers.position(|(name, ..)| *name == name_ref) + { + return Some(PathResolution::DeriveHelper(DeriveHelper { + derive: *macro_id, + idx, + })); + } + } + } + } + } } return match resolve_hir_path_as_macro(db, &self.resolver, &hir_path) { Some(m) => Some(PathResolution::Def(ModuleDef::Macro(m))), diff --git a/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/crates/ide-assists/src/handlers/add_missing_impl_members.rs index 7f2a26ad0674..c808c010c672 100644 --- a/crates/ide-assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ide-assists/src/handlers/add_missing_impl_members.rs @@ -145,13 +145,16 @@ fn add_missing_impl_members_inner( Some(cap) => { let mut cursor = Cursor::Before(first_new_item.syntax()); let placeholder; - if let ast::AssocItem::Fn(func) = &first_new_item { - if try_gen_trait_body(ctx, func, &trait_, &impl_def).is_none() { - if let Some(m) = func.syntax().descendants().find_map(ast::MacroCall::cast) - { - if m.syntax().text() == "todo!()" { - placeholder = m; - cursor = Cursor::Replace(placeholder.syntax()); + if let DefaultMethods::No = mode { + if let ast::AssocItem::Fn(func) = &first_new_item { + if try_gen_trait_body(ctx, func, &trait_, &impl_def).is_none() { + if let Some(m) = + func.syntax().descendants().find_map(ast::MacroCall::cast) + { + if m.syntax().text() == "todo!()" { + placeholder = m; + cursor = Cursor::Replace(placeholder.syntax()); + } } } } diff --git a/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/crates/ide-assists/src/utils/gen_trait_fn_body.rs index ec4835969f88..7a0c912959a1 100644 --- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs +++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs @@ -5,7 +5,7 @@ use syntax::{ ted, }; -/// Generate custom trait bodies where possible. +/// Generate custom trait bodies without default implementation where possible. /// /// Returns `Option` so that we can use `?` rather than `if let Some`. Returning /// `None` means that generating a custom trait body failed, and the body will remain @@ -28,6 +28,7 @@ pub(crate) fn gen_trait_fn_body( /// Generate a `Clone` impl based on the fields and members of the target type. fn gen_clone_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { + stdx::always!(func.name().map_or(false, |name| name.text() == "clone")); fn gen_clone_call(target: ast::Expr) -> ast::Expr { let method = make::name_ref("clone"); make::expr_method_call(target, method, make::arg_list(None)) @@ -339,6 +340,7 @@ fn gen_default_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { /// Generate a `Hash` impl based on the fields and members of the target type. fn gen_hash_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { + stdx::always!(func.name().map_or(false, |name| name.text() == "hash")); fn gen_hash_call(target: ast::Expr) -> ast::Stmt { let method = make::name_ref("hash"); let arg = make::expr_path(make::ext::ident_path("state")); @@ -394,9 +396,7 @@ fn gen_hash_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { /// Generate a `PartialEq` impl based on the fields and members of the target type. fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { - if func.name().map_or(false, |name| name.text() == "ne") { - return None; - } + stdx::always!(func.name().map_or(false, |name| name.text() == "eq")); fn gen_eq_chain(expr: Option, cmp: ast::Expr) -> Option { match expr { Some(expr) => Some(make::expr_bin_op(expr, BinaryOp::LogicOp(LogicOp::And), cmp)), @@ -573,6 +573,7 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { } fn gen_partial_ord(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { + stdx::always!(func.name().map_or(false, |name| name.text() == "partial_cmp")); fn gen_partial_eq_match(match_target: ast::Expr) -> Option { let mut arms = vec![]; @@ -643,7 +644,7 @@ fn gen_partial_ord(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { make::block_expr(stmts.into_iter(), tail).indent(ast::edit::IndentLevel(1)) } - // No fields in the body means there's nothing to hash. + // No fields in the body means there's nothing to compare. None => { let expr = make::expr_literal("true").into(); make::block_expr(None, Some(expr)).indent(ast::edit::IndentLevel(1)) diff --git a/crates/ide-completion/src/item.rs b/crates/ide-completion/src/item.rs index 27482ea489be..27c3ccb35a1e 100644 --- a/crates/ide-completion/src/item.rs +++ b/crates/ide-completion/src/item.rs @@ -292,6 +292,7 @@ impl CompletionItemKind { SymbolKind::Const => "ct", SymbolKind::ConstParam => "cp", SymbolKind::Derive => "de", + SymbolKind::DeriveHelper => "dh", SymbolKind::Enum => "en", SymbolKind::Field => "fd", SymbolKind::Function => "fn", diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 3f25b294e018..9b25964a6086 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -121,7 +121,7 @@ pub(crate) fn render_field( let mut item = CompletionItem::new( SymbolKind::Field, ctx.source_range(), - receiver.map_or_else(|| name.clone(), |receiver| format!("{}.{}", receiver, name).into()), + field_with_receiver(receiver.as_ref(), &name), ); item.set_relevance(CompletionRelevance { type_match: compute_type_match(ctx.completion, ty), @@ -132,7 +132,7 @@ pub(crate) fn render_field( .set_documentation(field.docs(ctx.db())) .set_deprecated(is_deprecated) .lookup_by(name.clone()); - item.insert_text(escaped_name); + item.insert_text(field_with_receiver(receiver.as_ref(), &escaped_name)); if let Some(receiver) = &dot_access.receiver { if let Some(original) = ctx.completion.sema.original_ast_node(receiver.clone()) { if let Some(ref_match) = compute_ref_match(ctx.completion, ty) { @@ -143,6 +143,11 @@ pub(crate) fn render_field( item.build() } +fn field_with_receiver(receiver: Option<&hir::Name>, field_name: &str) -> SmolStr { + receiver + .map_or_else(|| field_name.into(), |receiver| format!("{}.{}", receiver, field_name).into()) +} + pub(crate) fn render_tuple_field( ctx: RenderContext<'_>, receiver: Option, @@ -152,7 +157,7 @@ pub(crate) fn render_tuple_field( let mut item = CompletionItem::new( SymbolKind::Field, ctx.source_range(), - receiver.map_or_else(|| field.to_string(), |receiver| format!("{}.{}", receiver, field)), + field_with_receiver(receiver.as_ref(), &field.to_string()), ); item.detail(ty.display(ctx.db()).to_string()).lookup_by(field.to_string()); item.build() @@ -1873,6 +1878,35 @@ impl r#trait for r#struct { type t$0 } struct r#struct {} trait r#trait { type r#type; } impl r#trait for r#struct { type r#type = $0; } +"#, + ) + } + + #[test] + fn field_access_includes_self() { + check_edit( + "length", + r#" +struct S { + length: i32 +} + +impl S { + fn some_fn(&self) { + let l = len$0 + } +} +"#, + r#" +struct S { + length: i32 +} + +impl S { + fn some_fn(&self) { + let l = self.length + } +} "#, ) } diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs index 692a31572030..aeaca00ec65c 100644 --- a/crates/ide-db/src/defs.rs +++ b/crates/ide-db/src/defs.rs @@ -7,9 +7,9 @@ use arrayvec::ArrayVec; use hir::{ - Adt, AsAssocItem, AssocItem, BuiltinAttr, BuiltinType, Const, Crate, Field, Function, - GenericParam, HasVisibility, Impl, ItemInNs, Label, Local, Macro, Module, ModuleDef, Name, - PathResolution, Semantics, Static, ToolModule, Trait, TypeAlias, Variant, Visibility, + Adt, AsAssocItem, AssocItem, BuiltinAttr, BuiltinType, Const, Crate, DeriveHelper, Field, + Function, GenericParam, HasVisibility, Impl, ItemInNs, Label, Local, Macro, Module, ModuleDef, + Name, PathResolution, Semantics, Static, ToolModule, Trait, TypeAlias, Variant, Visibility, }; use stdx::impl_from; use syntax::{ @@ -37,6 +37,7 @@ pub enum Definition { Local(Local), GenericParam(GenericParam), Label(Label), + DeriveHelper(DeriveHelper), BuiltinAttr(BuiltinAttr), ToolModule(ToolModule), } @@ -69,6 +70,7 @@ impl Definition { Definition::Local(it) => it.module(db), Definition::GenericParam(it) => it.module(db), Definition::Label(it) => it.module(db), + Definition::DeriveHelper(it) => it.derive().module(db), Definition::BuiltinAttr(_) | Definition::BuiltinType(_) | Definition::ToolModule(_) => { return None } @@ -94,7 +96,8 @@ impl Definition { | Definition::SelfType(_) | Definition::Local(_) | Definition::GenericParam(_) - | Definition::Label(_) => return None, + | Definition::Label(_) + | Definition::DeriveHelper(_) => return None, }; Some(vis) } @@ -118,6 +121,7 @@ impl Definition { Definition::Label(it) => it.name(db), Definition::BuiltinAttr(_) => return None, // FIXME Definition::ToolModule(_) => return None, // FIXME + Definition::DeriveHelper(it) => it.name(db), }; Some(name) } @@ -500,6 +504,7 @@ impl From for Definition { PathResolution::SelfType(impl_def) => Definition::SelfType(impl_def), PathResolution::BuiltinAttr(attr) => Definition::BuiltinAttr(attr), PathResolution::ToolModule(tool) => Definition::ToolModule(tool), + PathResolution::DeriveHelper(helper) => Definition::DeriveHelper(helper), } } } diff --git a/crates/ide-db/src/lib.rs b/crates/ide-db/src/lib.rs index 26648b4d7638..966bba616f62 100644 --- a/crates/ide-db/src/lib.rs +++ b/crates/ide-db/src/lib.rs @@ -173,6 +173,7 @@ pub enum SymbolKind { Const, ConstParam, Derive, + DeriveHelper, Enum, Field, Function, diff --git a/crates/ide-db/src/path_transform.rs b/crates/ide-db/src/path_transform.rs index d78b8758d651..40af9e6fe2ad 100644 --- a/crates/ide-db/src/path_transform.rs +++ b/crates/ide-db/src/path_transform.rs @@ -224,7 +224,8 @@ impl<'a> Ctx<'a> { | hir::PathResolution::SelfType(_) | hir::PathResolution::Def(_) | hir::PathResolution::BuiltinAttr(_) - | hir::PathResolution::ToolModule(_) => (), + | hir::PathResolution::ToolModule(_) + | hir::PathResolution::DeriveHelper(_) => (), } Some(()) } diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index bb466e43e752..517fe3f246d0 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -156,6 +156,8 @@ impl Definition { Definition::SelfType(_) => return None, Definition::BuiltinAttr(_) => return None, Definition::ToolModule(_) => return None, + // FIXME: This should be doable in theory + Definition::DeriveHelper(_) => return None, }; return res; @@ -316,14 +318,20 @@ pub fn source_edit_from_references( // macros can cause multiple refs to occur for the same text range, so keep track of what we have edited so far let mut edited_ranges = Vec::new(); for &FileReference { range, ref name, .. } in references { + let name_range = name.syntax().text_range(); + if name_range.len() != range.len() { + // This usage comes from a different token kind that was downmapped to a NameLike in a macro + // Renaming this will most likely break things syntax-wise + continue; + } let has_emitted_edit = match name { // if the ranges differ then the node is inside a macro call, we can't really attempt // to make special rewrites like shorthand syntax and such, so just rename the node in // the macro input - ast::NameLike::NameRef(name_ref) if name_ref.syntax().text_range() == range => { + ast::NameLike::NameRef(name_ref) if name_range == range => { source_edit_from_name_ref(&mut edit, name_ref, new_name, def) } - ast::NameLike::Name(name) if name.syntax().text_range() == range => { + ast::NameLike::Name(name) if name_range == range => { source_edit_from_name(&mut edit, name, new_name) } _ => false, diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index c75364084e36..bd038cdaa068 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -54,7 +54,9 @@ impl IntoIterator for UsageSearchResult { #[derive(Debug, Clone)] pub struct FileReference { + /// The range of the reference in the original file pub range: TextRange, + /// The node of the reference in the (macro-)file pub name: ast::NameLike, pub category: Option, } @@ -276,16 +278,16 @@ impl Definition { } } hir::MacroKind::BuiltIn => SearchScope::crate_graph(db), - // FIXME: We don't actually see derives in derive attributes as these do not - // expand to something that references the derive macro in the output. - // We could get around this by doing pseudo expansions for proc_macro_derive like we - // do for the derive attribute hir::MacroKind::Derive | hir::MacroKind::Attr | hir::MacroKind::ProcMacro => { SearchScope::reverse_dependencies(db, module.krate()) } }; } + if let Definition::DeriveHelper(_) = self { + return SearchScope::reverse_dependencies(db, module.krate()); + } + let vis = self.visibility(db); if let Some(Visibility::Public) = vis { return SearchScope::reverse_dependencies(db, module.krate()); diff --git a/crates/ide-diagnostics/src/handlers/missing_fields.rs b/crates/ide-diagnostics/src/handlers/missing_fields.rs index 30f903af50d5..edb1fc0919c2 100644 --- a/crates/ide-diagnostics/src/handlers/missing_fields.rs +++ b/crates/ide-diagnostics/src/handlers/missing_fields.rs @@ -292,6 +292,37 @@ fn x(a: S) { ) } + #[test] + fn missing_record_expr_in_assignee_expr() { + check_diagnostics( + r" +struct S { s: usize, t: usize } +struct S2 { s: S, t: () } +struct T(S); +fn regular(a: S) { + let s; + S { s, .. } = a; +} +fn nested(a: S2) { + let s; + S2 { s: S { s, .. }, .. } = a; +} +fn in_tuple(a: (S,)) { + let s; + (S { s, .. },) = a; +} +fn in_array(a: [S;1]) { + let s; + [S { s, .. },] = a; +} +fn in_tuple_struct(a: T) { + let s; + T(S { s, .. }) = a; +} + ", + ); + } + #[test] fn range_mapping_out_of_macros() { check_fix( diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index fed327f52be5..582e9fe7e808 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -190,7 +190,8 @@ pub(crate) fn resolve_doc_path_for_def( | Definition::SelfType(_) | Definition::Local(_) | Definition::GenericParam(_) - | Definition::Label(_) => None, + | Definition::Label(_) + | Definition::DeriveHelper(_) => None, } .map(Definition::from) } @@ -515,7 +516,8 @@ fn filename_and_frag_for_def( | Definition::GenericParam(_) | Definition::Label(_) | Definition::BuiltinAttr(_) - | Definition::ToolModule(_) => return None, + | Definition::ToolModule(_) + | Definition::DeriveHelper(_) => return None, }; Some((def, res, None)) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index d8867cf783ad..59c97f2dcf96 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -115,7 +115,12 @@ pub(crate) fn hover( }); } - let descended = sema.descend_into_macros_with_same_text(original_token.clone()); + let in_attr = matches!(original_token.parent().and_then(ast::TokenTree::cast), Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind()))); + let descended = if in_attr { + [sema.descend_into_macros_with_kind_preference(original_token.clone())].into() + } else { + sema.descend_into_macros_with_same_text(original_token.clone()) + }; // FIXME: Definition should include known lints and the like instead of having this special case here let hovered_lint = descended.iter().find_map(|token| { diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index 925aaa61cdd0..6c50a4e6adc0 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -370,6 +370,7 @@ pub(super) fn definition( // FIXME: We should be able to show more info about these Definition::BuiltinAttr(it) => return render_builtin_attr(db, it), Definition::ToolModule(it) => return Some(Markup::fenced_block(&it.name(db))), + Definition::DeriveHelper(it) => (format!("derive_helper {}", it.name(db)), None), }; let docs = match config.documentation { diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs index 1fb3b5ec3f38..9f049e298ad1 100644 --- a/crates/ide/src/navigation_target.rs +++ b/crates/ide/src/navigation_target.rs @@ -196,6 +196,8 @@ impl TryToNav for Definition { Definition::BuiltinType(_) => None, Definition::ToolModule(_) => None, Definition::BuiltinAttr(_) => None, + // FIXME: The focus range should be set to the helper declaration + Definition::DeriveHelper(it) => it.derive().try_to_nav(db), } } } diff --git a/crates/ide/src/signature_help.rs b/crates/ide/src/signature_help.rs index ba287d13aec1..fedc1a435827 100644 --- a/crates/ide/src/signature_help.rs +++ b/crates/ide/src/signature_help.rs @@ -237,7 +237,8 @@ fn signature_help_for_generics( | hir::PathResolution::Local(_) | hir::PathResolution::TypeParam(_) | hir::PathResolution::ConstParam(_) - | hir::PathResolution::SelfType(_) => return None, + | hir::PathResolution::SelfType(_) + | hir::PathResolution::DeriveHelper(_) => return None, }; generic_def diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index d7ad6a757995..d013d6f4b19f 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs @@ -107,6 +107,7 @@ pub struct HlRange { // builtinType:: Emitted for builtin types like `u32`, `str` and `f32`. // comment:: Emitted for comments. // constParameter:: Emitted for const parameters. +// deriveHelper:: Emitted for derive helper attributes. // enumMember:: Emitted for enum variants. // generic:: Emitted for generic tokens that have no mapping. // keyword:: Emitted for keywords. @@ -431,6 +432,13 @@ fn traverse( // let the editor do its highlighting for these tokens instead continue; } + if highlight.tag == HlTag::UnresolvedReference + && matches!(attr_or_derive_item, Some(AttrOrDerive::Derive(_)) if inside_attribute) + { + // do not emit unresolved references in derive helpers if the token mapping maps to + // something unresolvable. FIXME: There should be a way to prevent that + continue; + } if inside_attribute { highlight |= HlMod::Attribute } diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index fd3723ed4548..9395e914c43a 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -472,6 +472,7 @@ fn highlight_def( Definition::Label(_) => Highlight::new(HlTag::Symbol(SymbolKind::Label)), Definition::BuiltinAttr(_) => Highlight::new(HlTag::Symbol(SymbolKind::BuiltinAttr)), Definition::ToolModule(_) => Highlight::new(HlTag::Symbol(SymbolKind::ToolModule)), + Definition::DeriveHelper(_) => Highlight::new(HlTag::Symbol(SymbolKind::DeriveHelper)), }; let def_crate = def.krate(db); diff --git a/crates/ide/src/syntax_highlighting/inject.rs b/crates/ide/src/syntax_highlighting/inject.rs index 94d573a30b04..f779a985a99a 100644 --- a/crates/ide/src/syntax_highlighting/inject.rs +++ b/crates/ide/src/syntax_highlighting/inject.rs @@ -270,6 +270,7 @@ fn module_def_to_hl_tag(def: Definition) -> HlTag { Definition::Label(_) => SymbolKind::Label, Definition::BuiltinAttr(_) => SymbolKind::BuiltinAttr, Definition::ToolModule(_) => SymbolKind::ToolModule, + Definition::DeriveHelper(_) => SymbolKind::DeriveHelper, }; HlTag::Symbol(symbol) } diff --git a/crates/ide/src/syntax_highlighting/tags.rs b/crates/ide/src/syntax_highlighting/tags.rs index b900dadcfa3c..5262770f3031 100644 --- a/crates/ide/src/syntax_highlighting/tags.rs +++ b/crates/ide/src/syntax_highlighting/tags.rs @@ -134,6 +134,7 @@ impl HlTag { SymbolKind::Const => "constant", SymbolKind::ConstParam => "const_param", SymbolKind::Derive => "derive", + SymbolKind::DeriveHelper => "derive_helper", SymbolKind::Enum => "enum", SymbolKind::Field => "field", SymbolKind::Function => "function", diff --git a/crates/proc-macro-api/src/process.rs b/crates/proc-macro-api/src/process.rs index ff4c59447d87..c4018d3b39e7 100644 --- a/crates/proc-macro-api/src/process.rs +++ b/crates/proc-macro-api/src/process.rs @@ -86,6 +86,7 @@ fn mk_child( ) -> io::Result { Command::new(path.as_os_str()) .args(args) + .env("RUST_ANALYZER_INTERNALS_DO_NOT_USE", "this is unstable") .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::inherit()) diff --git a/crates/proc-macro-srv-cli/Cargo.toml b/crates/proc-macro-srv-cli/Cargo.toml new file mode 100644 index 000000000000..9d0da5dee9c1 --- /dev/null +++ b/crates/proc-macro-srv-cli/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "proc-macro-srv-cli" +version = "0.0.0" +description = "TBD" +license = "MIT OR Apache-2.0" +edition = "2021" +rust-version = "1.57" + +[dependencies] +proc-macro-srv = { version = "0.0.0", path = "../proc-macro-srv" } + +[features] +sysroot-abi = ["proc-macro-srv/sysroot-abi"] + +[[bin]] +name = "rust-analyzer-proc-macro-srv" +path = "src/main.rs" diff --git a/crates/proc-macro-srv-cli/src/main.rs b/crates/proc-macro-srv-cli/src/main.rs new file mode 100644 index 000000000000..ac9fa9f5a4ce --- /dev/null +++ b/crates/proc-macro-srv-cli/src/main.rs @@ -0,0 +1,19 @@ +//! A standalone binary for `proc-macro-srv`. + +use proc_macro_srv::cli; + +fn main() -> std::io::Result<()> { + let v = std::env::var("RUST_ANALYZER_INTERNALS_DO_NOT_USE"); + match v.as_deref() { + Ok("this is unstable") => { + // very well, if you must + } + _ => { + eprintln!("If you're rust-analyzer, you can use this tool by exporting RUST_ANALYZER_INTERNALS_DO_NOT_USE='this is unstable'."); + eprintln!("If not, you probably shouldn't use this tool. But do what you want: I'm an error message, not a cop."); + std::process::exit(122); + } + } + + cli::run() +} diff --git a/crates/proc-macro-test/build.rs b/crates/proc-macro-test/build.rs index c90144509dec..a80c962617bb 100644 --- a/crates/proc-macro-test/build.rs +++ b/crates/proc-macro-test/build.rs @@ -62,8 +62,7 @@ fn main() { Command::new(toolchain::cargo()) }; - cmd - .current_dir(&staging_dir) + cmd.current_dir(&staging_dir) .args(&["build", "-p", "proc-macro-test-impl", "--message-format", "json"]) // Explicit override the target directory to avoid using the same one which the parent // cargo is using, or we'll deadlock. diff --git a/crates/project-model/src/project_json.rs b/crates/project-model/src/project_json.rs index a3c5ac167406..63d1d0ace96b 100644 --- a/crates/project-model/src/project_json.rs +++ b/crates/project-model/src/project_json.rs @@ -17,6 +17,9 @@ use crate::cfg_flag::CfgFlag; /// Roots and crates that compose this Rust project. #[derive(Clone, Debug, Eq, PartialEq)] pub struct ProjectJson { + /// e.g. `path/to/sysroot` + pub(crate) sysroot: Option, + /// e.g. `path/to/sysroot/lib/rustlib/src/rust` pub(crate) sysroot_src: Option, project_root: AbsPathBuf, crates: Vec, @@ -52,6 +55,7 @@ impl ProjectJson { /// configuration. pub fn new(base: &AbsPath, data: ProjectJsonData) -> ProjectJson { ProjectJson { + sysroot: data.sysroot.map(|it| base.join(it)), sysroot_src: data.sysroot_src.map(|it| base.join(it)), project_root: base.to_path_buf(), crates: data @@ -122,6 +126,7 @@ impl ProjectJson { #[derive(Deserialize, Debug, Clone)] pub struct ProjectJsonData { + sysroot: Option, sysroot_src: Option, crates: Vec, } diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs index 52750f48969f..362bb0f5e79c 100644 --- a/crates/project-model/src/sysroot.rs +++ b/crates/project-model/src/sysroot.rs @@ -15,6 +15,7 @@ use crate::{utf8_stdout, ManifestPath}; #[derive(Debug, Clone, Eq, PartialEq)] pub struct Sysroot { root: AbsPathBuf, + src_root: AbsPathBuf, crates: Arena, } @@ -35,10 +36,19 @@ impl ops::Index for Sysroot { } impl Sysroot { + /// Returns sysroot "root" directory, where `bin/`, `etc/`, `lib/`, `libexec/` + /// subfolder live, like: + /// `$HOME/.rustup/toolchains/nightly-2022-07-23-x86_64-unknown-linux-gnu` pub fn root(&self) -> &AbsPath { &self.root } + /// Returns the sysroot "source" directory, where stdlib sources are located, like: + /// `$HOME/.rustup/toolchains/nightly-2022-07-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library` + pub fn src_root(&self) -> &AbsPath { + &self.src_root + } + pub fn public_deps(&self) -> impl Iterator + '_ { // core is added as a dependency before std in order to // mimic rustcs dependency order @@ -61,7 +71,7 @@ impl Sysroot { tracing::debug!("Discovering sysroot for {}", dir.display()); let sysroot_dir = discover_sysroot_dir(dir)?; let sysroot_src_dir = discover_sysroot_src_dir(&sysroot_dir, dir)?; - let res = Sysroot::load(sysroot_src_dir)?; + let res = Sysroot::load(sysroot_dir, sysroot_src_dir)?; Ok(res) } @@ -71,14 +81,15 @@ impl Sysroot { discover_sysroot_dir(current_dir).ok().and_then(|sysroot_dir| get_rustc_src(&sysroot_dir)) } - pub fn load(sysroot_src_dir: AbsPathBuf) -> Result { - let mut sysroot = Sysroot { root: sysroot_src_dir, crates: Arena::default() }; + pub fn load(sysroot_dir: AbsPathBuf, sysroot_src_dir: AbsPathBuf) -> Result { + let mut sysroot = + Sysroot { root: sysroot_dir, src_root: sysroot_src_dir, crates: Arena::default() }; for path in SYSROOT_CRATES.trim().lines() { let name = path.split('/').last().unwrap(); let root = [format!("{}/src/lib.rs", path), format!("lib{}/lib.rs", path)] .into_iter() - .map(|it| sysroot.root.join(it)) + .map(|it| sysroot.src_root.join(it)) .filter_map(|it| ManifestPath::try_from(it).ok()) .find(|it| fs::metadata(it).is_ok()); @@ -119,7 +130,7 @@ impl Sysroot { }; anyhow::bail!( "could not find libcore in sysroot path `{}`{}", - sysroot.root.as_path().display(), + sysroot.src_root.as_path().display(), var_note, ); } diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index ddfea0ce4c4f..e304a59c0180 100644 --- a/crates/project-model/src/tests.rs +++ b/crates/project-model/src/tests.rs @@ -75,8 +75,11 @@ fn get_test_path(file: &str) -> PathBuf { fn get_fake_sysroot() -> Sysroot { let sysroot_path = get_test_path("fake-sysroot"); - let sysroot_src_dir = AbsPathBuf::assert(sysroot_path); - Sysroot::load(sysroot_src_dir).unwrap() + // there's no `libexec/` directory with a `proc-macro-srv` binary in that + // fake sysroot, so we give them both the same path: + let sysroot_dir = AbsPathBuf::assert(sysroot_path); + let sysroot_src_dir = sysroot_dir.clone(); + Sysroot::load(sysroot_dir, sysroot_src_dir).unwrap() } fn rooted_project_json(data: ProjectJsonData) -> ProjectJson { diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index de4245835456..b144006b44e0 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -230,10 +230,26 @@ impl ProjectWorkspace { project_json: ProjectJson, target: Option<&str>, ) -> Result { - let sysroot = match &project_json.sysroot_src { - Some(path) => Some(Sysroot::load(path.clone())?), - None => None, + let sysroot = match (project_json.sysroot.clone(), project_json.sysroot_src.clone()) { + (Some(sysroot), Some(sysroot_src)) => Some(Sysroot::load(sysroot, sysroot_src)?), + (Some(sysroot), None) => { + // assume sysroot is structured like rustup's and guess `sysroot_src` + let sysroot_src = + sysroot.join("lib").join("rustlib").join("src").join("rust").join("library"); + + Some(Sysroot::load(sysroot, sysroot_src)?) + } + (None, Some(sysroot_src)) => { + // assume sysroot is structured like rustup's and guess `sysroot` + let mut sysroot = sysroot_src.clone(); + for _ in 0..5 { + sysroot.pop(); + } + Some(Sysroot::load(sysroot, sysroot_src)?) + } + (None, None) => None, }; + let rustc_cfg = rustc_cfg::get(None, target); Ok(ProjectWorkspace::Json { project: project_json, sysroot, rustc_cfg }) } @@ -345,7 +361,7 @@ impl ProjectWorkspace { }) .chain(sysroot.iter().map(|sysroot| PackageRoot { is_local: false, - include: vec![sysroot.root().to_path_buf()], + include: vec![sysroot.src_root().to_path_buf()], exclude: Vec::new(), })) .chain(rustc.iter().flat_map(|rustc| { diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs index 4243af25ff1a..0ada4b73e842 100644 --- a/crates/rust-analyzer/src/cli/load_cargo.rs +++ b/crates/rust-analyzer/src/cli/load_cargo.rs @@ -60,9 +60,9 @@ pub fn load_workspace( let proc_macro_client = if load_config.with_proc_macro { let path = AbsPathBuf::assert(std::env::current_exe()?); - Some(ProcMacroServer::spawn(path, &["proc-macro"]).unwrap()) + Ok(ProcMacroServer::spawn(path, &["proc-macro"]).unwrap()) } else { - None + Err("proc macro server not started".to_owned()) }; let crate_graph = ws.to_crate_graph( @@ -89,7 +89,7 @@ pub fn load_workspace( if load_config.prefill_caches { host.analysis().parallel_prime_caches(1, |_| {})?; } - Ok((host, vfs, proc_macro_client)) + Ok((host, vfs, proc_macro_client.ok())) } fn load_crate_graph( diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index 4af60035a20e..8f881cba4dbd 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs @@ -61,7 +61,7 @@ pub(crate) struct GlobalState { pub(crate) proc_macro_changed: bool, pub(crate) last_reported_status: Option, pub(crate) source_root_config: SourceRootConfig, - pub(crate) proc_macro_client: Option, + pub(crate) proc_macro_clients: Vec>, pub(crate) flycheck: Vec, pub(crate) flycheck_sender: Sender, @@ -151,7 +151,7 @@ impl GlobalState { proc_macro_changed: false, last_reported_status: None, source_root_config: SourceRootConfig::default(), - proc_macro_client: None, + proc_macro_clients: vec![], flycheck: Vec::new(), flycheck_sender, diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 520aa7d1dd48..deb777c952fd 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -44,7 +44,7 @@ use crate::{ }; pub(crate) fn handle_workspace_reload(state: &mut GlobalState, _: ()) -> Result<()> { - state.proc_macro_client = None; + state.proc_macro_clients.clear(); state.proc_macro_changed = false; state.fetch_workspaces_queue.request_op("reload workspace request".to_string()); state.fetch_build_data_queue.request_op("reload workspace request".to_string()); diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index 77125f88f473..9ae361b034e2 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -303,18 +303,55 @@ impl GlobalState { let files_config = self.config.files(); let project_folders = ProjectFolders::new(&self.workspaces, &files_config.exclude); - if self.proc_macro_client.is_none() { + if self.proc_macro_clients.is_empty() { if let Some((path, args)) = self.config.proc_macro_srv() { - match ProcMacroServer::spawn(path.clone(), args) { - Ok(it) => self.proc_macro_client = Some(it), - Err(err) => { - tracing::error!( - "Failed to run proc_macro_srv from path {}, error: {:?}", + self.proc_macro_clients = self + .workspaces + .iter() + .map(|ws| { + let mut args = args.clone(); + let mut path = path.clone(); + + if let ProjectWorkspace::Cargo { sysroot, .. } = ws { + tracing::info!("Found a cargo workspace..."); + if let Some(sysroot) = sysroot.as_ref() { + tracing::info!("Found a cargo workspace with a sysroot..."); + let server_path = sysroot + .root() + .join("libexec") + .join("rust-analyzer-proc-macro-srv"); + if std::fs::metadata(&server_path).is_ok() { + tracing::info!( + "And the server exists at {}", + server_path.display() + ); + path = server_path; + args = vec![]; + } else { + tracing::info!( + "And the server does not exist at {}", + server_path.display() + ); + } + } + } + + tracing::info!( + "Using proc-macro server at {} with args {:?}", path.display(), - err + args ); - } - } + ProcMacroServer::spawn(path.clone(), args.clone()).map_err(|err| { + let error = format!( + "Failed to run proc_macro_srv from path {}, error: {:?}", + path.display(), + err + ); + tracing::error!(error); + error + }) + }) + .collect(); } } @@ -331,15 +368,7 @@ impl GlobalState { // Create crate graph from all the workspaces let crate_graph = { - let proc_macro_client = self.proc_macro_client.as_ref(); let dummy_replacements = self.config.dummy_replacements(); - let mut load_proc_macro = move |crate_name: &str, path: &AbsPath| { - load_proc_macro( - proc_macro_client, - path, - dummy_replacements.get(crate_name).map(|v| &**v).unwrap_or_default(), - ) - }; let vfs = &mut self.vfs.write().0; let loader = &mut self.loader; @@ -359,7 +388,15 @@ impl GlobalState { }; let mut crate_graph = CrateGraph::default(); - for ws in self.workspaces.iter() { + for (idx, ws) in self.workspaces.iter().enumerate() { + let proc_macro_client = self.proc_macro_clients[idx].as_ref(); + let mut load_proc_macro = move |crate_name: &str, path: &AbsPath| { + load_proc_macro( + proc_macro_client, + path, + dummy_replacements.get(crate_name).map(|v| &**v).unwrap_or_default(), + ) + }; crate_graph.extend(ws.to_crate_graph(&mut load_proc_macro, &mut load)); } crate_graph @@ -536,14 +573,14 @@ impl SourceRootConfig { /// Load the proc-macros for the given lib path, replacing all expanders whose names are in `dummy_replace` /// with an identity dummy expander. pub(crate) fn load_proc_macro( - server: Option<&ProcMacroServer>, + server: Result<&ProcMacroServer, &String>, path: &AbsPath, dummy_replace: &[Box], ) -> ProcMacroLoadResult { let res: Result, String> = (|| { let dylib = MacroDylib::new(path.to_path_buf()) .map_err(|io| format!("Proc-macro dylib loading failed: {io}"))?; - let server = server.ok_or_else(|| format!("Proc-macro server not started"))?; + let server = server.map_err(ToOwned::to_owned)?; let vec = server.load_dylib(dylib).map_err(|e| format!("{e}"))?; if vec.is_empty() { return Err("proc macro library returned no proc macros".to_string()); diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs index 5fb945ea9872..6c78b5df1a70 100644 --- a/crates/rust-analyzer/src/semantic_tokens.rs +++ b/crates/rust-analyzer/src/semantic_tokens.rs @@ -54,6 +54,7 @@ define_semantic_token_types![ (COMPARISON, "comparison"), (CONST_PARAMETER, "constParameter"), (DERIVE, "derive"), + (DERIVE_HELPER, "deriveHelper"), (DOT, "dot"), (ESCAPE_SEQUENCE, "escapeSequence"), (FORMAT_SPECIFIER, "formatSpecifier"), diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 9c8e618b6ed0..7f4fa57fa1e0 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -53,7 +53,8 @@ pub(crate) fn symbol_kind(symbol_kind: SymbolKind) -> lsp_types::SymbolKind { SymbolKind::Macro | SymbolKind::BuiltinAttr | SymbolKind::Attribute - | SymbolKind::Derive => lsp_types::SymbolKind::FUNCTION, + | SymbolKind::Derive + | SymbolKind::DeriveHelper => lsp_types::SymbolKind::FUNCTION, SymbolKind::Module | SymbolKind::ToolModule => lsp_types::SymbolKind::MODULE, SymbolKind::TypeAlias | SymbolKind::TypeParam | SymbolKind::SelfType => { lsp_types::SymbolKind::TYPE_PARAMETER @@ -117,6 +118,7 @@ pub(crate) fn completion_item_kind( SymbolKind::Const => lsp_types::CompletionItemKind::CONSTANT, SymbolKind::ConstParam => lsp_types::CompletionItemKind::TYPE_PARAMETER, SymbolKind::Derive => lsp_types::CompletionItemKind::FUNCTION, + SymbolKind::DeriveHelper => lsp_types::CompletionItemKind::FUNCTION, SymbolKind::Enum => lsp_types::CompletionItemKind::ENUM, SymbolKind::Field => lsp_types::CompletionItemKind::FIELD, SymbolKind::Function => lsp_types::CompletionItemKind::FUNCTION, @@ -561,6 +563,7 @@ fn semantic_token_type_and_modifiers( HlTag::Symbol(symbol) => match symbol { SymbolKind::Attribute => semantic_tokens::ATTRIBUTE, SymbolKind::Derive => semantic_tokens::DERIVE, + SymbolKind::DeriveHelper => semantic_tokens::DERIVE_HELPER, SymbolKind::Module => lsp_types::SemanticTokenType::NAMESPACE, SymbolKind::Impl => semantic_tokens::TYPE_ALIAS, SymbolKind::Field => lsp_types::SemanticTokenType::PROPERTY, From 9d2cb42a413e51deb50b36794a2e1605381878fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Tue, 2 Aug 2022 09:05:16 +0300 Subject: [PATCH 002/478] :arrow_up: rust-analyzer --- .github/workflows/publish.yml | 17 +- crates/hir-def/src/attr.rs | 21 +- crates/hir-def/src/item_scope.rs | 10 +- crates/hir-def/src/nameres/collector.rs | 13 +- crates/hir-ty/src/chalk_ext.rs | 5 + crates/hir/src/lib.rs | 4 + crates/hir/src/semantics.rs | 25 +- .../src/handlers/expand_glob_import.rs | 10 +- .../ide-assists/src/handlers/inline_call.rs | 48 ++- crates/ide-assists/src/tests/generated.rs | 2 +- crates/ide-completion/src/completions.rs | 13 +- .../src/completions/attribute.rs | 2 +- .../src/completions/attribute/derive.rs | 2 +- crates/ide-completion/src/completions/expr.rs | 56 +++- .../src/completions/item_list.rs | 2 +- .../ide-completion/src/completions/pattern.rs | 4 +- crates/ide-completion/src/completions/type.rs | 18 +- crates/ide-completion/src/completions/use_.rs | 2 +- crates/ide-completion/src/completions/vis.rs | 2 +- crates/ide-completion/src/context.rs | 5 +- crates/ide-completion/src/context/analysis.rs | 316 +++++++++++------- crates/ide-completion/src/context/tests.rs | 20 ++ crates/ide-completion/src/render.rs | 25 +- crates/ide-completion/src/render/function.rs | 4 +- crates/ide-completion/src/render/pattern.rs | 23 +- crates/ide-completion/src/tests.rs | 7 +- crates/ide-completion/src/tests/expression.rs | 21 +- crates/ide-completion/src/tests/pattern.rs | 4 +- crates/ide-completion/src/tests/record.rs | 1 - crates/ide-completion/src/tests/special.rs | 55 ++- crates/ide/src/syntax_highlighting.rs | 4 +- crates/ide/src/syntax_highlighting/inject.rs | 9 +- .../highlight_module_docs_inline.html | 51 +++ .../highlight_module_docs_outline.html | 50 +++ crates/ide/src/syntax_highlighting/tests.rs | 46 +++ crates/limit/src/lib.rs | 15 +- crates/parser/src/grammar/paths.rs | 2 +- crates/proc-macro-srv/src/lib.rs | 13 +- crates/rust-analyzer/src/cli/load_cargo.rs | 4 +- crates/rust-analyzer/src/reload.rs | 16 +- crates/syntax/src/ast/generated/nodes.rs | 4 - crates/syntax/src/ast/node_ext.rs | 38 +++ crates/syntax/src/tests/sourcegen_ast.rs | 2 + docs/dev/README.md | 7 +- xtask/src/release.rs | 10 +- 45 files changed, 766 insertions(+), 242 deletions(-) create mode 100644 crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_inline.html create mode 100644 crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_outline.html diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 927996c1bef2..a4497f49e3c2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -34,8 +34,21 @@ jobs: git config --global user.email "runner@gha.local" git config --global user.name "Github Action" rm Cargo.lock + # Fix names for crates that were published before switch to kebab-case. + cargo workspaces rename --from base-db base_db + cargo workspaces rename --from hir-def hir_def + cargo workspaces rename --from hir-expand hir_expand + cargo workspaces rename --from hir-ty hir_ty + cargo workspaces rename --from ide-assists ide_assists + cargo workspaces rename --from ide-completion ide_completion + cargo workspaces rename --from ide-db ide_db + cargo workspaces rename --from ide-diagnostics ide_diagnostics + cargo workspaces rename --from ide-ssr ide_ssr + cargo workspaces rename --from proc-macro-api proc_macro_api + cargo workspaces rename --from proc-macro-srv proc_macro_srv + cargo workspaces rename --from project-model project_model + cargo workspaces rename --from test-utils test_utils + cargo workspaces rename --from text-edit text_edit cargo workspaces rename ra_ap_%n find crates/rust-analyzer -type f -name '*.rs' -exec sed -i 's/rust_analyzer/ra_ap_rust_analyzer/g' {} + - # Fix names for crates that were published before switch to kebab-case. - find crates -name 'Cargo.toml' -exec sed -i "s/ra_ap_base-db/ra_ap_base_db/g; s/ra_ap_hir-def/ra_ap_hir_def/g; s/ra_ap_hir-expand/ra_ap_hir_expand/g; s/ra_ap_hir-ty/ra_ap_hir_ty/g; s/ra_ap_ide-assists/ra_ap_ide_assists/g; s/ra_ap_ide-completion/ra_ap_ide_completion/g; s/ra_ap_ide-db/ra_ap_ide_db/g; s/ra_ap_ide-diagnostics/ra_ap_ide_diagnostics/g; s/ra_ap_ide-ssr/ra_ap_ide_ssr/g; s/ra_ap_proc-macro-api/ra_ap_proc_macro_api/g; s/ra_ap_proc-macro-srv/ra_ap_proc_macro_srv/g; s/ra_ap_project-model/ra_ap_project_model/g; s/ra_ap_test-utils/ra_ap_test_utils/g; s/ra_ap_text-edit/ra_ap_text_edit/g" {} + cargo workspaces publish --yes --force '*' --exact --no-git-commit --allow-dirty --skip-published custom 0.0.$PATCH diff --git a/crates/hir-def/src/attr.rs b/crates/hir-def/src/attr.rs index 8a6b6f3effd2..2b39c6f8da86 100644 --- a/crates/hir-def/src/attr.rs +++ b/crates/hir-def/src/attr.rs @@ -124,13 +124,24 @@ impl RawAttrs { pub(crate) fn merge(&self, other: Self) -> Self { // FIXME: This needs to fixup `AttrId`s - match (&self.entries, &other.entries) { + match (&self.entries, other.entries) { (None, None) => Self::EMPTY, - (Some(entries), None) | (None, Some(entries)) => { - Self { entries: Some(entries.clone()) } - } + (None, entries @ Some(_)) => Self { entries }, + (Some(entries), None) => Self { entries: Some(entries.clone()) }, (Some(a), Some(b)) => { - Self { entries: Some(a.iter().chain(b.iter()).cloned().collect()) } + let last_ast_index = a.last().map_or(0, |it| it.id.ast_index + 1); + Self { + entries: Some( + a.iter() + .cloned() + .chain(b.iter().map(|it| { + let mut it = it.clone(); + it.id.ast_index += last_ast_index; + it + })) + .collect(), + ), + } } } } diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index 579f803ea193..a11a92204c15 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -5,6 +5,7 @@ use std::collections::hash_map::Entry; use base_db::CrateId; use hir_expand::{name::Name, AstId, MacroCallId}; +use itertools::Itertools; use once_cell::sync::Lazy; use profile::Count; use rustc_hash::{FxHashMap, FxHashSet}; @@ -97,15 +98,14 @@ pub(crate) enum BuiltinShadowMode { impl ItemScope { pub fn entries<'a>(&'a self) -> impl Iterator + 'a { // FIXME: shadowing - let keys: FxHashSet<_> = self - .types + self.types .keys() .chain(self.values.keys()) .chain(self.macros.keys()) .chain(self.unresolved.iter()) - .collect(); - - keys.into_iter().map(move |name| (name, self.get(name))) + .sorted() + .unique() + .map(move |name| (name, self.get(name))) } pub fn declarations(&self) -> impl Iterator + '_ { diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index f394c541719f..8a6bb929c3df 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -1055,7 +1055,7 @@ impl DefCollector<'_> { }; let mut res = ReachedFixedPoint::Yes; macros.retain(|directive| { - let resolver2 = |path| { + let resolver = |path| { let resolved_res = self.def_map.resolve_path_fp_with_macro( self.db, ResolveMode::Other, @@ -1068,7 +1068,7 @@ impl DefCollector<'_> { .take_macros() .map(|it| (it, macro_id_to_def_id(self.db, it))) }; - let resolver = |path| resolver2(path).map(|(_, it)| it); + let resolver_def_id = |path| resolver(path).map(|(_, it)| it); match &directive.kind { MacroDirectiveKind::FnLike { ast_id, expand_to } => { @@ -1077,7 +1077,7 @@ impl DefCollector<'_> { ast_id, *expand_to, self.def_map.krate, - &resolver, + &resolver_def_id, &mut |_err| (), ); if let Ok(Ok(call_id)) = call_id { @@ -1093,7 +1093,7 @@ impl DefCollector<'_> { *derive_attr, *derive_pos as u32, self.def_map.krate, - &resolver2, + &resolver, ); if let Ok((macro_id, def_id, call_id)) = id { @@ -1158,7 +1158,7 @@ impl DefCollector<'_> { } } - let def = match resolver(path.clone()) { + let def = match resolver_def_id(path.clone()) { Some(def) if def.is_attribute() => def, _ => return true, }; @@ -1292,7 +1292,8 @@ impl DefCollector<'_> { true }); // Attribute resolution can add unresolved macro invocations, so concatenate the lists. - self.unresolved_macros.extend(macros); + macros.extend(mem::take(&mut self.unresolved_macros)); + self.unresolved_macros = macros; for (module_id, depth, container, macro_call_id) in resolved { self.collect_macro_expansion(module_id, macro_call_id, depth, container); diff --git a/crates/hir-ty/src/chalk_ext.rs b/crates/hir-ty/src/chalk_ext.rs index b0885ab003f7..a9c124b42dc2 100644 --- a/crates/hir-ty/src/chalk_ext.rs +++ b/crates/hir-ty/src/chalk_ext.rs @@ -34,6 +34,7 @@ pub trait TyExt { fn callable_sig(&self, db: &dyn HirDatabase) -> Option; fn strip_references(&self) -> &Ty; + fn strip_reference(&self) -> &Ty; /// If this is a `dyn Trait`, returns that trait. fn dyn_trait(&self) -> Option; @@ -182,6 +183,10 @@ impl TyExt for Ty { t } + fn strip_reference(&self) -> &Ty { + self.as_reference().map_or(self, |(ty, _, _)| ty) + } + fn impl_trait_bounds(&self, db: &dyn HirDatabase) -> Option> { match self.kind(Interner) { TyKind::OpaqueType(opaque_ty_id, subst) => { diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index d4925455d7bd..8f984210e117 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -2769,6 +2769,10 @@ impl Type { self.derived(self.ty.strip_references().clone()) } + pub fn strip_reference(&self) -> Type { + self.derived(self.ty.strip_reference().clone()) + } + pub fn is_unknown(&self) -> bool { self.ty.is_unknown() } diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index fc8f23f19ab9..c84318b2fb87 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -324,6 +324,10 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { self.imp.resolve_type(ty) } + pub fn resolve_trait(&self, trait_: &ast::Path) -> Option { + self.imp.resolve_trait(trait_) + } + // FIXME: Figure out a nice interface to inspect adjustments pub fn is_implicit_reborrow(&self, expr: &ast::Expr) -> Option { self.imp.is_implicit_reborrow(expr) @@ -924,7 +928,12 @@ impl<'db> SemanticsImpl<'db> { } fn original_ast_node(&self, node: N) -> Option { - self.wrap_node_infile(node).original_ast_node(self.db.upcast()).map(|it| it.value) + self.wrap_node_infile(node).original_ast_node(self.db.upcast()).map( + |InFile { file_id, value }| { + self.cache(find_root(value.syntax()), file_id); + value + }, + ) } fn diagnostics_display_range(&self, src: InFile) -> FileRange { @@ -1009,6 +1018,20 @@ impl<'db> SemanticsImpl<'db> { Some(Type::new_with_resolver(self.db, &analyze.resolver, ty)) } + fn resolve_trait(&self, path: &ast::Path) -> Option { + let analyze = self.analyze(path.syntax())?; + let hygiene = hir_expand::hygiene::Hygiene::new(self.db.upcast(), analyze.file_id); + let ctx = body::LowerCtx::with_hygiene(self.db.upcast(), &hygiene); + let hir_path = Path::from_src(path.clone(), &ctx)?; + match analyze + .resolver + .resolve_path_in_type_ns_fully(self.db.upcast(), hir_path.mod_path())? + { + TypeNs::TraitId(id) => Some(Trait { id }), + _ => None, + } + } + fn is_implicit_reborrow(&self, expr: &ast::Expr) -> Option { self.analyze(expr.syntax())?.is_implicit_reborrow(self.db, expr) } diff --git a/crates/ide-assists/src/handlers/expand_glob_import.rs b/crates/ide-assists/src/handlers/expand_glob_import.rs index 943c1d90e636..87f5018fb695 100644 --- a/crates/ide-assists/src/handlers/expand_glob_import.rs +++ b/crates/ide-assists/src/handlers/expand_glob_import.rs @@ -36,7 +36,7 @@ use crate::{ // pub struct Baz; // } // -// use foo::{Baz, Bar}; +// use foo::{Bar, Baz}; // // fn qux(bar: Bar, baz: Baz) {} // ``` @@ -281,7 +281,7 @@ mod foo { pub fn f() {} } -use foo::{Baz, Bar, f}; +use foo::{Bar, Baz, f}; fn qux(bar: Bar, baz: Baz) { f(); @@ -351,7 +351,7 @@ mod foo { pub fn f() {} } -use foo::{Baz, Bar, f}; +use foo::{Bar, Baz, f}; fn qux(bar: Bar, baz: Baz) { f(); @@ -440,7 +440,7 @@ mod foo { } } -use foo::{bar::{Baz, Bar, f}, baz::*}; +use foo::{bar::{Bar, Baz, f}, baz::*}; fn qux(bar: Bar, baz: Baz) { f(); @@ -561,7 +561,7 @@ mod foo { use foo::{ bar::{*, f}, - baz::{g, qux::{q, h}} + baz::{g, qux::{h, q}} }; fn qux(bar: Bar, baz: Baz) { diff --git a/crates/ide-assists/src/handlers/inline_call.rs b/crates/ide-assists/src/handlers/inline_call.rs index 658a1aadf53e..80d3b9255936 100644 --- a/crates/ide-assists/src/handlers/inline_call.rs +++ b/crates/ide-assists/src/handlers/inline_call.rs @@ -7,7 +7,7 @@ use ide_db::{ imports::insert_use::remove_path_if_in_use_stmt, path_transform::PathTransform, search::{FileReference, SearchScope}, - syntax_helpers::node_ext::expr_as_name_ref, + syntax_helpers::{insert_whitespace_into_node::insert_ws_into, node_ext::expr_as_name_ref}, RootDatabase, }; use itertools::{izip, Itertools}; @@ -301,7 +301,16 @@ fn inline( params: &[(ast::Pat, Option, hir::Param)], CallInfo { node, arguments, generic_arg_list }: &CallInfo, ) -> ast::Expr { - let body = fn_body.clone_for_update(); + let body = if sema.hir_file_for(fn_body.syntax()).is_macro() { + cov_mark::hit!(inline_call_defined_in_macro); + if let Some(body) = ast::BlockExpr::cast(insert_ws_into(fn_body.syntax().clone())) { + body + } else { + fn_body.clone_for_update() + } + } else { + fn_body.clone_for_update() + }; let usages_for_locals = |local| { Definition::Local(local) .usages(sema) @@ -1144,6 +1153,41 @@ fn bar() -> u32 { x }) + foo() } +"#, + ) + } + + #[test] + fn inline_call_defined_in_macro() { + cov_mark::check!(inline_call_defined_in_macro); + check_assist( + inline_call, + r#" +macro_rules! define_foo { + () => { fn foo() -> u32 { + let x = 0; + x + } }; +} +define_foo!(); +fn bar() -> u32 { + foo$0() +} +"#, + r#" +macro_rules! define_foo { + () => { fn foo() -> u32 { + let x = 0; + x + } }; +} +define_foo!(); +fn bar() -> u32 { + { + let x = 0; + x + } +} "#, ) } diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index e8d48607be0e..6eaab48a32ba 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -535,7 +535,7 @@ mod foo { pub struct Baz; } -use foo::{Baz, Bar}; +use foo::{Bar, Baz}; fn qux(bar: Bar, baz: Baz) {} "#####, diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs index 149afcac9d47..72579e6026ae 100644 --- a/crates/ide-completion/src/completions.rs +++ b/crates/ide-completion/src/completions.rs @@ -400,7 +400,7 @@ impl Completions { ) { if let PathCompletionCtx { kind: PathKind::Pat { pat_ctx }, .. } = path_ctx { cov_mark::hit!(enum_variant_pattern_path); - self.add_variant_pat(ctx, pat_ctx, variant, local_name); + self.add_variant_pat(ctx, pat_ctx, Some(path_ctx), variant, local_name); return; } @@ -484,12 +484,14 @@ impl Completions { &mut self, ctx: &CompletionContext<'_>, pattern_ctx: &PatternContext, + path_ctx: Option<&PathCompletionCtx>, variant: hir::Variant, local_name: Option, ) { self.add_opt(render_variant_pat( RenderContext::new(ctx), pattern_ctx, + path_ctx, variant, local_name.clone(), None, @@ -504,7 +506,14 @@ impl Completions { path: hir::ModPath, ) { let path = Some(&path); - self.add_opt(render_variant_pat(RenderContext::new(ctx), pattern_ctx, variant, None, path)); + self.add_opt(render_variant_pat( + RenderContext::new(ctx), + pattern_ctx, + None, + variant, + None, + path, + )); } pub(crate) fn add_struct_pat( diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs index 1d8a8c5f20db..d9fe94cb44ee 100644 --- a/crates/ide-completion/src/completions/attribute.rs +++ b/crates/ide-completion/src/completions/attribute.rs @@ -115,7 +115,7 @@ pub(crate) fn complete_attribute_path( }); acc.add_nameref_keywords_with_colon(ctx); } - Qualified::Infer | Qualified::With { .. } => {} + Qualified::TypeAnchor { .. } | Qualified::With { .. } => {} } let attributes = annotated_item_kind.and_then(|kind| { diff --git a/crates/ide-completion/src/completions/attribute/derive.rs b/crates/ide-completion/src/completions/attribute/derive.rs index 14538fef6072..793c22630bf8 100644 --- a/crates/ide-completion/src/completions/attribute/derive.rs +++ b/crates/ide-completion/src/completions/attribute/derive.rs @@ -97,7 +97,7 @@ pub(crate) fn complete_derive_path( }); acc.add_nameref_keywords_with_colon(ctx); } - Qualified::Infer | Qualified::With { .. } => {} + Qualified::TypeAnchor { .. } | Qualified::With { .. } => {} } } diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs index bdf6e64f0969..5d0ddaaf2a22 100644 --- a/crates/ide-completion/src/completions/expr.rs +++ b/crates/ide-completion/src/completions/expr.rs @@ -11,7 +11,14 @@ pub(crate) fn complete_expr_path( acc: &mut Completions, ctx: &CompletionContext<'_>, path_ctx @ PathCompletionCtx { qualified, .. }: &PathCompletionCtx, - &ExprCtx { + expr_ctx: &ExprCtx, +) { + let _p = profile::span("complete_expr_path"); + if !ctx.qualifier_ctx.none() { + return; + } + + let &ExprCtx { in_block_expr, in_loop_body, after_if_expr, @@ -23,12 +30,7 @@ pub(crate) fn complete_expr_path( ref impl_, in_match_guard, .. - }: &ExprCtx, -) { - let _p = profile::span("complete_expr_path"); - if !ctx.qualifier_ctx.none() { - return; - } + } = expr_ctx; let wants_mut_token = ref_expr_parent.as_ref().map(|it| it.mut_token().is_none()).unwrap_or(false); @@ -46,11 +48,32 @@ pub(crate) fn complete_expr_path( }; match qualified { - Qualified::Infer => ctx + Qualified::TypeAnchor { ty: None, trait_: None } => ctx .traits_in_scope() .iter() .flat_map(|&it| hir::Trait::from(it).items(ctx.sema.db)) .for_each(|item| add_assoc_item(acc, item)), + Qualified::TypeAnchor { trait_: Some(trait_), .. } => { + trait_.items(ctx.sema.db).into_iter().for_each(|item| add_assoc_item(acc, item)) + } + Qualified::TypeAnchor { ty: Some(ty), trait_: None } => { + if let Some(hir::Adt::Enum(e)) = ty.as_adt() { + cov_mark::hit!(completes_variant_through_alias); + acc.add_enum_variants(ctx, path_ctx, e); + } + + ctx.iterate_path_candidates(&ty, |item| { + add_assoc_item(acc, item); + }); + + // Iterate assoc types separately + ty.iterate_assoc_items(ctx.db, ctx.krate, |item| { + if let hir::AssocItem::TypeAlias(ty) = item { + acc.add_type_alias(ctx, ty) + } + None::<()> + }); + } Qualified::With { resolution: None, .. } => {} Qualified::With { resolution: Some(resolution), .. } => { // Add associated types on type parameters and `Self`. @@ -179,10 +202,21 @@ pub(crate) fn complete_expr_path( } } } - ctx.process_all_names(&mut |name, def| { - if scope_def_applicable(def) { - acc.add_path_resolution(ctx, path_ctx, name, def); + ctx.process_all_names(&mut |name, def| match def { + ScopeDef::ModuleDef(hir::ModuleDef::Trait(t)) => { + let assocs = t.items_with_supertraits(ctx.db); + match &*assocs { + // traits with no assoc items are unusable as expressions since + // there is no associated item path that can be constructed with them + [] => (), + // FIXME: Render the assoc item with the trait qualified + &[_item] => acc.add_path_resolution(ctx, path_ctx, name, def), + // FIXME: Append `::` to the thing here, since a trait on its own won't work + [..] => acc.add_path_resolution(ctx, path_ctx, name, def), + } } + _ if scope_def_applicable(def) => acc.add_path_resolution(ctx, path_ctx, name, def), + _ => (), }); if is_func_update.is_none() { diff --git a/crates/ide-completion/src/completions/item_list.rs b/crates/ide-completion/src/completions/item_list.rs index 4e4c9fba6cc5..60d05ae46b91 100644 --- a/crates/ide-completion/src/completions/item_list.rs +++ b/crates/ide-completion/src/completions/item_list.rs @@ -66,7 +66,7 @@ pub(crate) fn complete_item_list( }); acc.add_nameref_keywords_with_colon(ctx); } - Qualified::Infer | Qualified::No | Qualified::With { .. } => {} + Qualified::TypeAnchor { .. } | Qualified::No | Qualified::With { .. } => {} } } diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs index 17dfe432b352..71d2d9d434b4 100644 --- a/crates/ide-completion/src/completions/pattern.rs +++ b/crates/ide-completion/src/completions/pattern.rs @@ -74,7 +74,7 @@ pub(crate) fn complete_pattern( hir::ModuleDef::Variant(variant) if refutable || single_variant_enum(variant.parent_enum(ctx.db)) => { - acc.add_variant_pat(ctx, pattern_ctx, variant, Some(name.clone())); + acc.add_variant_pat(ctx, pattern_ctx, None, variant, Some(name.clone())); true } hir::ModuleDef::Adt(hir::Adt::Enum(e)) => refutable || single_variant_enum(e), @@ -180,6 +180,6 @@ pub(crate) fn complete_pattern_path( acc.add_nameref_keywords_with_colon(ctx); } - Qualified::Infer | Qualified::With { .. } => {} + Qualified::TypeAnchor { .. } | Qualified::With { .. } => {} } } diff --git a/crates/ide-completion/src/completions/type.rs b/crates/ide-completion/src/completions/type.rs index 87a998dfcce6..8f9db2f94c20 100644 --- a/crates/ide-completion/src/completions/type.rs +++ b/crates/ide-completion/src/completions/type.rs @@ -49,11 +49,27 @@ pub(crate) fn complete_type_path( }; match qualified { - Qualified::Infer => ctx + Qualified::TypeAnchor { ty: None, trait_: None } => ctx .traits_in_scope() .iter() .flat_map(|&it| hir::Trait::from(it).items(ctx.sema.db)) .for_each(|item| add_assoc_item(acc, item)), + Qualified::TypeAnchor { trait_: Some(trait_), .. } => { + trait_.items(ctx.sema.db).into_iter().for_each(|item| add_assoc_item(acc, item)) + } + Qualified::TypeAnchor { ty: Some(ty), trait_: None } => { + ctx.iterate_path_candidates(&ty, |item| { + add_assoc_item(acc, item); + }); + + // Iterate assoc types separately + ty.iterate_assoc_items(ctx.db, ctx.krate, |item| { + if let hir::AssocItem::TypeAlias(ty) = item { + acc.add_type_alias(ctx, ty) + } + None::<()> + }); + } Qualified::With { resolution: None, .. } => {} Qualified::With { resolution: Some(resolution), .. } => { // Add associated types on type parameters and `Self`. diff --git a/crates/ide-completion/src/completions/use_.rs b/crates/ide-completion/src/completions/use_.rs index bb2ecc9fdde7..2555c34aa747 100644 --- a/crates/ide-completion/src/completions/use_.rs +++ b/crates/ide-completion/src/completions/use_.rs @@ -115,6 +115,6 @@ pub(crate) fn complete_use_path( }); acc.add_nameref_keywords_with_colon(ctx); } - Qualified::Infer | Qualified::With { resolution: None, .. } => {} + Qualified::TypeAnchor { .. } | Qualified::With { resolution: None, .. } => {} } } diff --git a/crates/ide-completion/src/completions/vis.rs b/crates/ide-completion/src/completions/vis.rs index ca8303906a80..5e6cf4bf9a52 100644 --- a/crates/ide-completion/src/completions/vis.rs +++ b/crates/ide-completion/src/completions/vis.rs @@ -29,7 +29,7 @@ pub(crate) fn complete_vis_path( acc.add_super_keyword(ctx, *super_chain_len); } - Qualified::Absolute | Qualified::Infer | Qualified::With { .. } => {} + Qualified::Absolute | Qualified::TypeAnchor { .. } | Qualified::With { .. } => {} Qualified::No => { if !has_in_token { cov_mark::hit!(kw_completion_in); diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 93b6ad5d145d..e35f79d2b695 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -193,7 +193,10 @@ pub(super) enum Qualified { super_chain_len: Option, }, /// <_>:: - Infer, + TypeAnchor { + ty: Option, + trait_: Option, + }, /// Whether the path is an absolute path Absolute, } diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index c71ffa0ed86f..22ec7cead498 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -162,11 +162,52 @@ impl<'a> CompletionContext<'a> { } /// Calculate the expected type and name of the cursor position. - fn expected_type_and_name(&self) -> (Option, Option) { + fn expected_type_and_name( + &self, + name_like: &ast::NameLike, + ) -> (Option, Option) { let mut node = match self.token.parent() { Some(it) => it, None => return (None, None), }; + + let strip_refs = |mut ty: Type| match name_like { + ast::NameLike::NameRef(n) => { + let p = match n.syntax().parent() { + Some(it) => it, + None => return ty, + }; + let top_syn = match_ast! { + match p { + ast::FieldExpr(e) => e + .syntax() + .ancestors() + .map_while(ast::FieldExpr::cast) + .last() + .map(|it| it.syntax().clone()), + ast::PathSegment(e) => e + .syntax() + .ancestors() + .skip(1) + .take_while(|it| ast::Path::can_cast(it.kind()) || ast::PathExpr::can_cast(it.kind())) + .find_map(ast::PathExpr::cast) + .map(|it| it.syntax().clone()), + _ => None + } + }; + let top_syn = match top_syn { + Some(it) => it, + None => return ty, + }; + for _ in top_syn.ancestors().skip(1).map_while(ast::RefExpr::cast) { + cov_mark::hit!(expected_type_fn_param_ref); + ty = ty.strip_reference(); + } + ty + } + _ => ty, + }; + loop { break match_ast! { match node { @@ -199,13 +240,9 @@ impl<'a> CompletionContext<'a> { self.token.clone(), ).map(|ap| { let name = ap.ident().map(NameOrNameRef::Name); - let ty = if has_ref(&self.token) { - cov_mark::hit!(expected_type_fn_param_ref); - ap.ty.remove_ref() - } else { - Some(ap.ty) - }; - (ty, name) + + let ty = strip_refs(ap.ty); + (Some(ty), name) }) .unwrap_or((None, None)) }, @@ -330,8 +367,6 @@ impl<'a> CompletionContext<'a> { return None; } - (self.expected_type, self.expected_name) = self.expected_type_and_name(); - // Overwrite the path kind for derives if let Some((original_file, file_with_fake_ident, offset, origin_attr)) = derive_ctx { if let Some(ast::NameLike::NameRef(name_ref)) = @@ -389,6 +424,7 @@ impl<'a> CompletionContext<'a> { return Some(analysis); } }; + (self.expected_type, self.expected_name) = self.expected_type_and_name(&name_like); let analysis = match name_like { ast::NameLike::Lifetime(lifetime) => CompletionAnalysis::Lifetime( Self::classify_lifetime(&self.sema, original_file, lifetime)?, @@ -556,7 +592,7 @@ impl<'a> CompletionContext<'a> { has_call_parens: false, has_macro_bang: false, qualified: Qualified::No, - parent: path.parent_path(), + parent: None, path: path.clone(), kind: PathKind::Item { kind: ItemListKind::SourceFile }, has_type_args: false, @@ -791,92 +827,125 @@ impl<'a> CompletionContext<'a> { PathKind::Type { location: location.unwrap_or(TypeLocation::Other) } }; + let mut kind_macro_call = |it: ast::MacroCall| { + path_ctx.has_macro_bang = it.excl_token().is_some(); + let parent = it.syntax().parent()?; + // Any path in an item list will be treated as a macro call by the parser + let kind = match_ast! { + match parent { + ast::MacroExpr(expr) => make_path_kind_expr(expr.into()), + ast::MacroPat(it) => PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())}, + ast::MacroType(ty) => make_path_kind_type(ty.into()), + ast::ItemList(_) => PathKind::Item { kind: ItemListKind::Module }, + ast::AssocItemList(_) => PathKind::Item { kind: match parent.parent() { + Some(it) => match_ast! { + match it { + ast::Trait(_) => ItemListKind::Trait, + ast::Impl(it) => if it.trait_().is_some() { + ItemListKind::TraitImpl(find_node_in_file_compensated(sema, original_file, &it)) + } else { + ItemListKind::Impl + }, + _ => return None + } + }, + None => return None, + } }, + ast::ExternItemList(_) => PathKind::Item { kind: ItemListKind::ExternBlock }, + ast::SourceFile(_) => PathKind::Item { kind: ItemListKind::SourceFile }, + _ => return None, + } + }; + Some(kind) + }; + let make_path_kind_attr = |meta: ast::Meta| { + let attr = meta.parent_attr()?; + let kind = attr.kind(); + let attached = attr.syntax().parent()?; + let is_trailing_outer_attr = kind != AttrKind::Inner + && non_trivia_sibling(attr.syntax().clone().into(), syntax::Direction::Next) + .is_none(); + let annotated_item_kind = + if is_trailing_outer_attr { None } else { Some(attached.kind()) }; + Some(PathKind::Attr { attr_ctx: AttrCtx { kind, annotated_item_kind } }) + }; + // Infer the path kind let parent = path.syntax().parent()?; let kind = match_ast! { - match parent { - ast::PathType(it) => make_path_kind_type(it.into()), - ast::PathExpr(it) => { - if let Some(p) = it.syntax().parent() { - if ast::ExprStmt::can_cast(p.kind()) { - if let Some(kind) = inbetween_body_and_decl_check(p) { - return Some(make_res(NameRefKind::Keyword(kind))); - } + match parent { + ast::PathType(it) => make_path_kind_type(it.into()), + ast::PathExpr(it) => { + if let Some(p) = it.syntax().parent() { + if ast::ExprStmt::can_cast(p.kind()) { + if let Some(kind) = inbetween_body_and_decl_check(p) { + return Some(make_res(NameRefKind::Keyword(kind))); } } + } - path_ctx.has_call_parens = it.syntax().parent().map_or(false, |it| ast::CallExpr::can_cast(it.kind())); + path_ctx.has_call_parens = it.syntax().parent().map_or(false, |it| ast::CallExpr::can_cast(it.kind())); - make_path_kind_expr(it.into()) - }, - ast::TupleStructPat(it) => { - path_ctx.has_call_parens = true; - PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())} - }, - ast::RecordPat(it) => { - path_ctx.has_call_parens = true; - PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())} - }, - ast::PathPat(it) => { - PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())} - }, - ast::MacroCall(it) => { - // A macro call in this position is usually a result of parsing recovery, so check that - if let Some(kind) = inbetween_body_and_decl_check(it.syntax().clone()) { - return Some(make_res(NameRefKind::Keyword(kind))); + make_path_kind_expr(it.into()) + }, + ast::TupleStructPat(it) => { + path_ctx.has_call_parens = true; + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into()) } + }, + ast::RecordPat(it) => { + path_ctx.has_call_parens = true; + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into()) } + }, + ast::PathPat(it) => { + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())} + }, + ast::MacroCall(it) => { + // A macro call in this position is usually a result of parsing recovery, so check that + if let Some(kind) = inbetween_body_and_decl_check(it.syntax().clone()) { + return Some(make_res(NameRefKind::Keyword(kind))); + } + + kind_macro_call(it)? + }, + ast::Meta(meta) => make_path_kind_attr(meta)?, + ast::Visibility(it) => PathKind::Vis { has_in_token: it.in_token().is_some() }, + ast::UseTree(_) => PathKind::Use, + // completing inside a qualifier + ast::Path(parent) => { + path_ctx.parent = Some(parent.clone()); + let parent = iter::successors(Some(parent), |it| it.parent_path()).last()?.syntax().parent()?; + match_ast! { + match parent { + ast::PathType(it) => make_path_kind_type(it.into()), + ast::PathExpr(it) => { + path_ctx.has_call_parens = it.syntax().parent().map_or(false, |it| ast::CallExpr::can_cast(it.kind())); + + make_path_kind_expr(it.into()) + }, + ast::TupleStructPat(it) => { + path_ctx.has_call_parens = true; + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into()) } + }, + ast::RecordPat(it) => { + path_ctx.has_call_parens = true; + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into()) } + }, + ast::PathPat(it) => { + PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())} + }, + ast::MacroCall(it) => { + kind_macro_call(it)? + }, + ast::Meta(meta) => make_path_kind_attr(meta)?, + ast::Visibility(it) => PathKind::Vis { has_in_token: it.in_token().is_some() }, + ast::UseTree(_) => PathKind::Use, + ast::RecordExpr(it) => make_path_kind_expr(it.into()), + _ => return None, } - - path_ctx.has_macro_bang = it.excl_token().is_some(); - let parent = it.syntax().parent()?; - // Any path in an item list will be treated as a macro call by the parser - match_ast! { - match parent { - ast::MacroExpr(expr) => make_path_kind_expr(expr.into()), - ast::MacroPat(it) => PathKind::Pat { pat_ctx: pattern_context_for(sema, original_file, it.into())}, - ast::MacroType(ty) => make_path_kind_type(ty.into()), - ast::ItemList(_) => PathKind::Item { kind: ItemListKind::Module }, - ast::AssocItemList(_) => PathKind::Item { kind: match parent.parent() { - Some(it) => match_ast! { - match it { - ast::Trait(_) => ItemListKind::Trait, - ast::Impl(it) => if it.trait_().is_some() { - ItemListKind::TraitImpl(find_node_in_file_compensated(sema, original_file, &it)) - } else { - ItemListKind::Impl - }, - _ => return None - } - }, - None => return None, - } }, - ast::ExternItemList(_) => PathKind::Item { kind: ItemListKind::ExternBlock }, - ast::SourceFile(_) => PathKind::Item { kind: ItemListKind::SourceFile }, - _ => return None, - } - } - }, - ast::Meta(meta) => { - let attr = meta.parent_attr()?; - let kind = attr.kind(); - let attached = attr.syntax().parent()?; - let is_trailing_outer_attr = kind != AttrKind::Inner - && non_trivia_sibling(attr.syntax().clone().into(), syntax::Direction::Next).is_none(); - let annotated_item_kind = if is_trailing_outer_attr { - None - } else { - Some(attached.kind()) - }; - PathKind::Attr { - attr_ctx: AttrCtx { - kind, - annotated_item_kind, - } - } - }, - ast::Visibility(it) => PathKind::Vis { has_in_token: it.in_token().is_some() }, - ast::UseTree(_) => PathKind::Use, - _ => return None, - + } + }, + ast::RecordExpr(it) => make_path_kind_expr(it.into()), + _ => return None, } }; @@ -884,49 +953,53 @@ impl<'a> CompletionContext<'a> { path_ctx.has_type_args = segment.generic_arg_list().is_some(); // calculate the qualifier context - if let Some((path, use_tree_parent)) = path_or_use_tree_qualifier(&path) { + if let Some((qualifier, use_tree_parent)) = path_or_use_tree_qualifier(&path) { path_ctx.use_tree_parent = use_tree_parent; if !use_tree_parent && segment.coloncolon_token().is_some() { path_ctx.qualified = Qualified::Absolute; } else { - let path = path + let qualifier = qualifier .segment() .and_then(|it| find_node_in_file(original_file, &it)) .map(|it| it.parent_path()); - if let Some(path) = path { - // `<_>::$0` - let is_infer_qualifier = path.qualifier().is_none() - && matches!( - path.segment().and_then(|it| it.kind()), - Some(ast::PathSegmentKind::Type { - type_ref: Some(ast::Type::InferType(_)), - trait_ref: None, - }) - ); + if let Some(qualifier) = qualifier { + let type_anchor = match qualifier.segment().and_then(|it| it.kind()) { + Some(ast::PathSegmentKind::Type { + type_ref: Some(type_ref), + trait_ref, + }) if qualifier.qualifier().is_none() => Some((type_ref, trait_ref)), + _ => None, + }; - path_ctx.qualified = if is_infer_qualifier { - Qualified::Infer + path_ctx.qualified = if let Some((ty, trait_ref)) = type_anchor { + let ty = match ty { + ast::Type::InferType(_) => None, + ty => sema.resolve_type(&ty), + }; + let trait_ = trait_ref.and_then(|it| sema.resolve_trait(&it.path()?)); + Qualified::TypeAnchor { ty, trait_ } } else { - let res = sema.resolve_path(&path); + let res = sema.resolve_path(&qualifier); // For understanding how and why super_chain_len is calculated the way it // is check the documentation at it's definition let mut segment_count = 0; - let super_count = iter::successors(Some(path.clone()), |p| p.qualifier()) - .take_while(|p| { - p.segment() - .and_then(|s| { - segment_count += 1; - s.super_token() - }) - .is_some() - }) - .count(); + let super_count = + iter::successors(Some(qualifier.clone()), |p| p.qualifier()) + .take_while(|p| { + p.segment() + .and_then(|s| { + segment_count += 1; + s.super_token() + }) + .is_some() + }) + .count(); let super_chain_len = if segment_count > super_count { None } else { Some(super_count) }; - Qualified::With { path, resolution: res, super_chain_len } + Qualified::With { path: qualifier, resolution: res, super_chain_len } } }; } @@ -1141,19 +1214,6 @@ fn path_or_use_tree_qualifier(path: &ast::Path) -> Option<(ast::Path, bool)> { Some((use_tree.path()?, true)) } -fn has_ref(token: &SyntaxToken) -> bool { - let mut token = token.clone(); - for skip in [SyntaxKind::IDENT, SyntaxKind::WHITESPACE, T![mut]] { - if token.kind() == skip { - token = match token.prev_token() { - Some(it) => it, - None => return false, - } - } - } - token.kind() == T![&] -} - pub(crate) fn is_in_token_of_for_loop(element: SyntaxElement) -> bool { // oh my ... (|| { diff --git a/crates/ide-completion/src/context/tests.rs b/crates/ide-completion/src/context/tests.rs index c5557bdafb33..50845b3881f4 100644 --- a/crates/ide-completion/src/context/tests.rs +++ b/crates/ide-completion/src/context/tests.rs @@ -391,3 +391,23 @@ fn foo($0: Foo) {} expect![[r#"ty: ?, name: ?"#]], ); } + +#[test] +fn expected_type_ref_prefix_on_field() { + check_expected_type_and_name( + r#" +fn foo(_: &mut i32) {} +struct S { + field: i32, +} + +fn main() { + let s = S { + field: 100, + }; + foo(&mut s.f$0); +} +"#, + expect!["ty: i32, name: ?"], + ); +} diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 9b25964a6086..946134b0ff95 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -1271,8 +1271,8 @@ fn main() { st S [] st &mut S [type] st S [] - fn main() [] fn foo(…) [] + fn main() [] "#]], ); check_relevance( @@ -1288,8 +1288,8 @@ fn main() { lc s [type+name+local] st S [type] st S [] - fn main() [] fn foo(…) [] + fn main() [] "#]], ); check_relevance( @@ -1305,8 +1305,8 @@ fn main() { lc ssss [type+local] st S [type] st S [] - fn main() [] fn foo(…) [] + fn main() [] "#]], ); } @@ -1342,12 +1342,11 @@ fn main() { lc &t [type+local] st S [] st &S [type] - st T [] st S [] - fn main() [] + st T [] fn foo(…) [] + fn main() [] md core [] - tt Sized [] "#]], ) } @@ -1389,12 +1388,11 @@ fn main() { lc &mut t [type+local] st S [] st &mut S [type] - st T [] st S [] - fn main() [] + st T [] fn foo(…) [] + fn main() [] md core [] - tt Sized [] "#]], ) } @@ -1485,14 +1483,13 @@ fn main() { expect![[r#" st S [] st &S [type] - st T [] st S [] - fn main() [] + st T [] fn bar() [] fn &bar() [type] fn foo(…) [] + fn main() [] md core [] - tt Sized [] "#]], ) } @@ -1636,8 +1633,8 @@ fn foo() { ev Foo::B [type_could_unify] fn foo() [] en Foo [] - fn baz() [] fn bar() [] + fn baz() [] "#]], ); } @@ -1727,9 +1724,9 @@ fn f() { } "#, expect![[r#" - md std [] st Buffer [] fn f() [] + md std [] tt BufRead (use std::io::BufRead) [requires_import] st BufReader (use std::io::BufReader) [requires_import] st BufWriter (use std::io::BufWriter) [requires_import] diff --git a/crates/ide-completion/src/render/function.rs b/crates/ide-completion/src/render/function.rs index 241de0a1834a..4b5535718c5d 100644 --- a/crates/ide-completion/src/render/function.rs +++ b/crates/ide-completion/src/render/function.rs @@ -85,7 +85,9 @@ fn render( item.ref_match(ref_match, path_ctx.path.syntax().text_range().start()); } FuncKind::Method(DotAccess { receiver: Some(receiver), .. }, _) => { - item.ref_match(ref_match, receiver.syntax().text_range().start()); + if let Some(original_expr) = completion.sema.original_ast_node(receiver.clone()) { + item.ref_match(ref_match, original_expr.syntax().text_range().start()); + } } _ => (), } diff --git a/crates/ide-completion/src/render/pattern.rs b/crates/ide-completion/src/render/pattern.rs index 03db08a911e9..34a384f2f7ae 100644 --- a/crates/ide-completion/src/render/pattern.rs +++ b/crates/ide-completion/src/render/pattern.rs @@ -6,7 +6,7 @@ use itertools::Itertools; use syntax::SmolStr; use crate::{ - context::{ParamContext, ParamKind, PatternContext}, + context::{ParamContext, ParamKind, PathCompletionCtx, PatternContext}, render::{ variant::{format_literal_label, visible_fields}, RenderContext, @@ -42,6 +42,7 @@ pub(crate) fn render_struct_pat( pub(crate) fn render_variant_pat( ctx: RenderContext<'_>, pattern_ctx: &PatternContext, + path_ctx: Option<&PathCompletionCtx>, variant: hir::Variant, local_name: Option, path: Option<&hir::ModPath>, @@ -58,9 +59,23 @@ pub(crate) fn render_variant_pat( (name.to_smol_str(), name.escaped().to_smol_str()) } }; - let kind = variant.kind(ctx.db()); - let label = format_literal_label(name.as_str(), kind); - let pat = render_pat(&ctx, pattern_ctx, &escaped_name, kind, &visible_fields, fields_omitted)?; + + let (label, pat) = match path_ctx { + Some(PathCompletionCtx { has_call_parens: true, .. }) => (name, escaped_name.to_string()), + _ => { + let kind = variant.kind(ctx.db()); + let label = format_literal_label(name.as_str(), kind); + let pat = render_pat( + &ctx, + pattern_ctx, + &escaped_name, + kind, + &visible_fields, + fields_omitted, + )?; + (label, pat) + } + }; Some(build_completion(ctx, label, pat, variant)) } diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs index 4be6acbe8461..cf826648dcf7 100644 --- a/crates/ide-completion/src/tests.rs +++ b/crates/ide-completion/src/tests.rs @@ -23,8 +23,6 @@ mod type_pos; mod use_tree; mod visibility; -use std::mem; - use hir::{db::DefDatabase, PrefixKind, Semantics}; use ide_db::{ base_db::{fixture::ChangeFixture, FileLoader, FilePosition}, @@ -107,12 +105,9 @@ fn completion_list_with_config( ) -> String { // filter out all but one builtintype completion for smaller test outputs let items = get_all_items(config, ra_fixture, trigger_character); - let mut bt_seen = false; let items = items .into_iter() - .filter(|it| { - it.kind() != CompletionItemKind::BuiltinType || !mem::replace(&mut bt_seen, true) - }) + .filter(|it| it.kind() != CompletionItemKind::BuiltinType || it.label() == "u32") .filter(|it| include_keywords || it.kind() != CompletionItemKind::Keyword) .filter(|it| include_keywords || it.kind() != CompletionItemKind::Snippet) .sorted_by_key(|it| (it.kind(), it.label().to_owned(), it.detail().map(ToOwned::to_owned))) diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs index ce9d01d337ba..925081ebf660 100644 --- a/crates/ide-completion/src/tests/expression.rs +++ b/crates/ide-completion/src/tests/expression.rs @@ -44,7 +44,6 @@ fn baz() { st Record st Tuple st Unit - tt Trait un Union ev TupleV(…) TupleV(u32) bt u32 @@ -137,7 +136,6 @@ impl Unit { st Record st Tuple st Unit - tt Trait tp TypeParam un Union ev TupleV(…) TupleV(u32) @@ -653,3 +651,22 @@ fn main() { "]], ); } + +#[test] +fn complete_record_expr_path() { + check( + r#" +struct Zulu; +impl Zulu { + fn test() -> Self { } +} +fn boi(val: Zulu) { } +fn main() { + boi(Zulu:: $0 {}); +} +"#, + expect![[r#" + fn test() fn() -> Zulu + "#]], + ); +} diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs index 877b5f216433..30ddbe2dc6f6 100644 --- a/crates/ide-completion/src/tests/pattern.rs +++ b/crates/ide-completion/src/tests/pattern.rs @@ -443,7 +443,7 @@ fn foo() { } "#, expect![[r#" - bn TupleVariant(…) TupleVariant($1)$0 + bn TupleVariant TupleVariant "#]], ); check_empty( @@ -458,7 +458,7 @@ fn foo() { } "#, expect![[r#" - bn RecordVariant {…} RecordVariant { field$1 }$0 + bn RecordVariant RecordVariant "#]], ); } diff --git a/crates/ide-completion/src/tests/record.rs b/crates/ide-completion/src/tests/record.rs index ec32602fa3c2..f6accc68e5e8 100644 --- a/crates/ide-completion/src/tests/record.rs +++ b/crates/ide-completion/src/tests/record.rs @@ -167,7 +167,6 @@ fn main() { st Foo st Foo {…} Foo { foo1: u32, foo2: u32 } tt Default - tt Sized bt u32 kw crate:: kw self:: diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index ca779c2fc713..033dc99c26cf 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -674,7 +674,60 @@ fn bar() -> Bar { expect![[r#" fn foo() (as Foo) fn() -> Self "#]], - ) + ); +} + +#[test] +fn type_anchor_type() { + check( + r#" +trait Foo { + fn foo() -> Self; +} +struct Bar; +impl Bar { + fn bar() {} +} +impl Foo for Bar { + fn foo() -> { + Bar + } +} +fn bar() -> Bar { + ::$0 +} +"#, + expect![[r#" + fn bar() fn() + fn foo() (as Foo) fn() -> Self + "#]], + ); +} + +#[test] +fn type_anchor_type_trait() { + check( + r#" +trait Foo { + fn foo() -> Self; +} +struct Bar; +impl Bar { + fn bar() {} +} +impl Foo for Bar { + fn foo() -> { + Bar + } +} +fn bar() -> Bar { + ::$0 +} +"#, + expect![[r#" + fn foo() (as Foo) fn() -> Self + "#]], + ); } #[test] diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index d013d6f4b19f..3fb49b45d988 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs @@ -13,7 +13,7 @@ mod html; #[cfg(test)] mod tests; -use hir::{InFile, Name, Semantics}; +use hir::{Name, Semantics}; use ide_db::{FxHashMap, RootDatabase}; use syntax::{ ast, AstNode, AstToken, NodeOrToken, SyntaxKind::*, SyntaxNode, TextRange, WalkEvent, T, @@ -325,7 +325,7 @@ fn traverse( Leave(NodeOrToken::Node(node)) => { // Doc comment highlighting injection, we do this when leaving the node // so that we overwrite the highlighting of the doc comment itself. - inject::doc_comment(hl, sema, InFile::new(file_id.into(), &node)); + inject::doc_comment(hl, sema, file_id, &node); continue; } }; diff --git a/crates/ide/src/syntax_highlighting/inject.rs b/crates/ide/src/syntax_highlighting/inject.rs index f779a985a99a..f376f9fda7a5 100644 --- a/crates/ide/src/syntax_highlighting/inject.rs +++ b/crates/ide/src/syntax_highlighting/inject.rs @@ -5,7 +5,8 @@ use std::mem; use either::Either; use hir::{InFile, Semantics}; use ide_db::{ - active_parameter::ActiveParameter, defs::Definition, rust_doc::is_rust_fence, SymbolKind, + active_parameter::ActiveParameter, base_db::FileId, defs::Definition, rust_doc::is_rust_fence, + SymbolKind, }; use syntax::{ ast::{self, AstNode, IsString, QuoteOffsets}, @@ -81,16 +82,18 @@ pub(super) fn ra_fixture( const RUSTDOC_FENCE_LENGTH: usize = 3; const RUSTDOC_FENCES: [&str; 2] = ["```", "~~~"]; -/// Injection of syntax highlighting of doctests. +/// Injection of syntax highlighting of doctests and intra doc links. pub(super) fn doc_comment( hl: &mut Highlights, sema: &Semantics<'_, RootDatabase>, - InFile { file_id: src_file_id, value: node }: InFile<&SyntaxNode>, + src_file_id: FileId, + node: &SyntaxNode, ) { let (attributes, def) = match doc_attributes(sema, node) { Some(it) => it, None => return, }; + let src_file_id = src_file_id.into(); // Extract intra-doc links and emit highlights for them. if let Some((docs, doc_mapping)) = attributes.docs_with_rangemap(sema.db) { diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_inline.html b/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_inline.html new file mode 100644 index 000000000000..8a1d69816e68 --- /dev/null +++ b/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_inline.html @@ -0,0 +1,51 @@ + + +
//! [Struct]
+//! This is an intra doc injection test for modules
+//! [Struct]
+//! This is an intra doc injection test for modules
+
+pub struct Struct;
+
\ No newline at end of file diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_outline.html b/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_outline.html new file mode 100644 index 000000000000..c4c3e3dc2606 --- /dev/null +++ b/crates/ide/src/syntax_highlighting/test_data/highlight_module_docs_outline.html @@ -0,0 +1,50 @@ + + +
/// [crate::foo::Struct]
+/// This is an intra doc injection test for modules
+/// [crate::foo::Struct]
+/// This is an intra doc injection test for modules
+mod foo;
+
\ No newline at end of file diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs index 6ba6153178da..99be7c664868 100644 --- a/crates/ide/src/syntax_highlighting/tests.rs +++ b/crates/ide/src/syntax_highlighting/tests.rs @@ -915,6 +915,52 @@ fn main() { } #[test] +fn test_mod_hl_injection() { + check_highlighting( + r##" +//- /foo.rs +//! [Struct] +//! This is an intra doc injection test for modules +//! [Struct] +//! This is an intra doc injection test for modules + +pub struct Struct; +//- /lib.rs crate:foo +/// [crate::foo::Struct] +/// This is an intra doc injection test for modules +/// [crate::foo::Struct] +/// This is an intra doc injection test for modules +mod foo; +"##, + expect_file!["./test_data/highlight_module_docs_inline.html"], + false, + ); + check_highlighting( + r##" +//- /lib.rs crate:foo +/// [crate::foo::Struct] +/// This is an intra doc injection test for modules +/// [crate::foo::Struct] +/// This is an intra doc injection test for modules +mod foo; +//- /foo.rs +//! [Struct] +//! This is an intra doc injection test for modules +//! [Struct] +//! This is an intra doc injection test for modules + +pub struct Struct; +"##, + expect_file!["./test_data/highlight_module_docs_outline.html"], + false, + ); +} + +#[test] +#[cfg_attr( + all(unix, not(target_pointer_width = "64")), + ignore = "depends on `DefaultHasher` outputs" +)] fn test_rainbow_highlighting() { check_highlighting( r#" diff --git a/crates/limit/src/lib.rs b/crates/limit/src/lib.rs index 3c1da80edb98..d6a706a7cd73 100644 --- a/crates/limit/src/lib.rs +++ b/crates/limit/src/lib.rs @@ -2,12 +2,13 @@ #![warn(rust_2018_idioms, unused_lifetimes, semicolon_in_expressions_from_macros)] +#[cfg(feature = "tracking")] use std::sync::atomic::AtomicUsize; /// Represents a struct used to enforce a numerical limit. pub struct Limit { upper_bound: usize, - #[allow(unused)] + #[cfg(feature = "tracking")] max: AtomicUsize, } @@ -15,14 +16,22 @@ impl Limit { /// Creates a new limit. #[inline] pub const fn new(upper_bound: usize) -> Self { - Self { upper_bound, max: AtomicUsize::new(0) } + Self { + upper_bound, + #[cfg(feature = "tracking")] + max: AtomicUsize::new(0), + } } /// Creates a new limit. #[inline] #[cfg(feature = "tracking")] pub const fn new_tracking(upper_bound: usize) -> Self { - Self { upper_bound, max: AtomicUsize::new(1) } + Self { + upper_bound, + #[cfg(feature = "tracking")] + max: AtomicUsize::new(1), + } } /// Gets the underlying numeric limit. diff --git a/crates/parser/src/grammar/paths.rs b/crates/parser/src/grammar/paths.rs index f9efcef92a61..8de5d33a1936 100644 --- a/crates/parser/src/grammar/paths.rs +++ b/crates/parser/src/grammar/paths.rs @@ -54,7 +54,7 @@ fn path_for_qualifier( mut qual: CompletedMarker, ) -> CompletedMarker { loop { - let use_tree = matches!(p.nth(2), T![*] | T!['{']); + let use_tree = mode == Mode::Use && matches!(p.nth(2), T![*] | T!['{']); if p.at(T![::]) && !use_tree { let path = qual.precede(p); p.bump(T![::]); diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs index 4b1858b8ed89..4c205b9cadac 100644 --- a/crates/proc-macro-srv/src/lib.rs +++ b/crates/proc-macro-srv/src/lib.rs @@ -39,6 +39,8 @@ pub(crate) struct ProcMacroSrv { expanders: HashMap<(PathBuf, SystemTime), dylib::Expander>, } +const EXPANDER_STACK_SIZE: usize = 8 * 1024 * 1024; + impl ProcMacroSrv { pub fn expand(&mut self, task: ExpandMacro) -> Result { let expander = self.expander(task.lib.as_ref()).map_err(|err| { @@ -66,13 +68,18 @@ impl ProcMacroSrv { // FIXME: replace this with std's scoped threads once they stabilize // (then remove dependency on crossbeam) let result = crossbeam::scope(|s| { - let res = s + let res = match s + .builder() + .stack_size(EXPANDER_STACK_SIZE) + .name(task.macro_name.clone()) .spawn(|_| { expander .expand(&task.macro_name, ¯o_body, attributes.as_ref()) .map(|it| FlatTree::new(&it)) - }) - .join(); + }) { + Ok(handle) => handle.join(), + Err(e) => std::panic::resume_unwind(Box::new(e)), + }; match res { Ok(res) => res, diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs index 0ada4b73e842..5d1c013c3275 100644 --- a/crates/rust-analyzer/src/cli/load_cargo.rs +++ b/crates/rust-analyzer/src/cli/load_cargo.rs @@ -66,7 +66,9 @@ pub fn load_workspace( }; let crate_graph = ws.to_crate_graph( - &mut |_, path: &AbsPath| load_proc_macro(proc_macro_client.as_ref(), path, &[]), + &mut |_, path: &AbsPath| { + load_proc_macro(proc_macro_client.as_ref().map_err(|e| &**e), path, &[]) + }, &mut |path: &AbsPath| { let contents = loader.load_sync(path); let path = vfs::VfsPath::from(path.to_path_buf()); diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index 9ae361b034e2..eaab275bc68a 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -303,6 +303,9 @@ impl GlobalState { let files_config = self.config.files(); let project_folders = ProjectFolders::new(&self.workspaces, &files_config.exclude); + let standalone_server_name = + format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX); + if self.proc_macro_clients.is_empty() { if let Some((path, args)) = self.config.proc_macro_srv() { self.proc_macro_clients = self @@ -316,10 +319,8 @@ impl GlobalState { tracing::info!("Found a cargo workspace..."); if let Some(sysroot) = sysroot.as_ref() { tracing::info!("Found a cargo workspace with a sysroot..."); - let server_path = sysroot - .root() - .join("libexec") - .join("rust-analyzer-proc-macro-srv"); + let server_path = + sysroot.root().join("libexec").join(&standalone_server_name); if std::fs::metadata(&server_path).is_ok() { tracing::info!( "And the server exists at {}", @@ -389,7 +390,10 @@ impl GlobalState { let mut crate_graph = CrateGraph::default(); for (idx, ws) in self.workspaces.iter().enumerate() { - let proc_macro_client = self.proc_macro_clients[idx].as_ref(); + let proc_macro_client = match self.proc_macro_clients.get(idx) { + Some(res) => res.as_ref().map_err(|e| &**e), + None => Err("Proc macros are disabled"), + }; let mut load_proc_macro = move |crate_name: &str, path: &AbsPath| { load_proc_macro( proc_macro_client, @@ -573,7 +577,7 @@ impl SourceRootConfig { /// Load the proc-macros for the given lib path, replacing all expanders whose names are in `dummy_replace` /// with an identity dummy expander. pub(crate) fn load_proc_macro( - server: Result<&ProcMacroServer, &String>, + server: Result<&ProcMacroServer, &str>, path: &AbsPath, dummy_replace: &[Box], ) -> ProcMacroLoadResult { diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs index cf90ba64cff1..63309a155219 100644 --- a/crates/syntax/src/ast/generated/nodes.rs +++ b/crates/syntax/src/ast/generated/nodes.rs @@ -880,7 +880,6 @@ impl ForExpr { pub fn for_token(&self) -> Option { support::token(&self.syntax, T![for]) } pub fn pat(&self) -> Option { support::child(&self.syntax) } pub fn in_token(&self) -> Option { support::token(&self.syntax, T![in]) } - pub fn iterable(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -890,7 +889,6 @@ pub struct IfExpr { impl ast::HasAttrs for IfExpr {} impl IfExpr { pub fn if_token(&self) -> Option { support::token(&self.syntax, T![if]) } - pub fn condition(&self) -> Option { support::child(&self.syntax) } pub fn else_token(&self) -> Option { support::token(&self.syntax, T![else]) } } @@ -1051,7 +1049,6 @@ pub struct WhileExpr { impl ast::HasAttrs for WhileExpr {} impl WhileExpr { pub fn while_token(&self) -> Option { support::token(&self.syntax, T![while]) } - pub fn condition(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -1170,7 +1167,6 @@ pub struct MatchGuard { } impl MatchGuard { pub fn if_token(&self) -> Option { support::token(&self.syntax, T![if]) } - pub fn condition(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs index b143df1f83f2..bb92c51e9a90 100644 --- a/crates/syntax/src/ast/node_ext.rs +++ b/crates/syntax/src/ast/node_ext.rs @@ -806,6 +806,19 @@ impl ast::GenericParamList { } } +impl ast::ForExpr { + pub fn iterable(&self) -> Option { + // If the iterable is a BlockExpr, check if the body is missing. + // If it is assume the iterable is the expression that is missing instead. + let mut exprs = support::children(self.syntax()); + let first = exprs.next(); + match first { + Some(ast::Expr::BlockExpr(_)) => exprs.next().and(first), + first => first, + } + } +} + impl ast::HasLoopBody for ast::ForExpr { fn loop_body(&self) -> Option { let mut exprs = support::children(self.syntax()); @@ -815,6 +828,19 @@ impl ast::HasLoopBody for ast::ForExpr { } } +impl ast::WhileExpr { + pub fn condition(&self) -> Option { + // If the condition is a BlockExpr, check if the body is missing. + // If it is assume the condition is the expression that is missing instead. + let mut exprs = support::children(self.syntax()); + let first = exprs.next(); + match first { + Some(ast::Expr::BlockExpr(_)) => exprs.next().and(first), + first => first, + } + } +} + impl ast::HasLoopBody for ast::WhileExpr { fn loop_body(&self) -> Option { let mut exprs = support::children(self.syntax()); @@ -835,3 +861,15 @@ impl From for ast::Item { } } } + +impl ast::IfExpr { + pub fn condition(&self) -> Option { + support::child(&self.syntax) + } +} + +impl ast::MatchGuard { + pub fn condition(&self) -> Option { + support::child(&self.syntax) + } +} diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs index 4cfb8075cb15..6d2766225103 100644 --- a/crates/syntax/src/tests/sourcegen_ast.rs +++ b/crates/syntax/src/tests/sourcegen_ast.rs @@ -682,6 +682,8 @@ fn lower_rule(acc: &mut Vec, grammar: &Grammar, label: Option<&String>, r | "value" | "trait" | "self_ty" + | "iterable" + | "condition" ); if manually_implemented { return; diff --git a/docs/dev/README.md b/docs/dev/README.md index 468f2b9e981f..76bbd1e91889 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -210,7 +210,8 @@ Release process is handled by `release`, `dist` and `promote` xtasks, `release` ./rust-rust-analyzer # Note the name! ``` -Additionally, it assumes that the remote for `rust-analyzer` is called `upstream` (I use `origin` to point to my fork). +The remote for `rust-analyzer` must be called `upstream` (I use `origin` to point to my fork). +In addition, for `xtask promote` (see below), `rust-rust-analyzer` must have a `rust-analyzer` remote pointing to this repository on GitHub. `release` calls the GitHub API calls to scrape pull request comments and categorize them in the changelog. This step uses the `curl` and `jq` applications, which need to be available in `PATH`. @@ -225,13 +226,13 @@ Release steps: * push it to `upstream`. This triggers GitHub Actions which: * runs `cargo xtask dist` to package binaries and VS Code extension * makes a GitHub release - * pushes VS Code extension to the marketplace + * publishes the VS Code extension to the marketplace * call the GitHub API for PR details * create a new changelog in `rust-analyzer.github.io` 3. While the release is in progress, fill in the changelog 4. Commit & push the changelog 5. Tweet -6. Inside `rust-analyzer`, run `cargo xtask promote` -- this will create a PR to rust-lang/rust updating rust-analyzer's submodule. +6. Inside `rust-analyzer`, run `cargo xtask promote` -- this will create a PR to rust-lang/rust updating rust-analyzer's subtree. Self-approve the PR. If the GitHub Actions release fails because of a transient problem like a timeout, you can re-run the job from the Actions console. diff --git a/xtask/src/release.rs b/xtask/src/release.rs index 1c5fc64c2417..17ada5156407 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -77,18 +77,12 @@ impl flags::Promote { cmd!(sh, "git switch master").run()?; cmd!(sh, "git fetch upstream").run()?; cmd!(sh, "git reset --hard upstream/master").run()?; - cmd!(sh, "git submodule update --recursive").run()?; let date = date_iso(sh)?; let branch = format!("rust-analyzer-{date}"); cmd!(sh, "git switch -c {branch}").run()?; - { - let _dir = sh.push_dir("src/tools/rust-analyzer"); - cmd!(sh, "git fetch origin").run()?; - cmd!(sh, "git reset --hard origin/release").run()?; - } - cmd!(sh, "git add src/tools/rust-analyzer").run()?; - cmd!(sh, "git commit -m':arrow_up: rust-analyzer'").run()?; + cmd!(sh, "git subtree pull -P src/tools/rust-analyzer rust-analyzer master").run()?; + if !self.dry_run { cmd!(sh, "git push -u origin {branch}").run()?; cmd!( From 2c7f2c105bb52d83409fc29bd181af442b8ba43d Mon Sep 17 00:00:00 2001 From: Nika Layzell Date: Mon, 25 Jul 2022 00:43:33 -0400 Subject: [PATCH 003/478] proc_macro/bridge: send diagnostics over the bridge as a struct This removes some RPC when creating and emitting diagnostics, and simplifies the bridge slightly. After this change, there are no remaining methods which take advantage of the support for `&mut` references to objects in the store as arguments, meaning that support for them could technically be removed if we wanted. The only remaining uses of immutable references into the store are `TokenStream` and `SourceFile`. --- .../src/abis/abi_sysroot/ra_server.rs | 59 ++----------------- 1 file changed, 4 insertions(+), 55 deletions(-) diff --git a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs index 46882845a807..c1f8615aaf20 100644 --- a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs @@ -37,23 +37,6 @@ pub struct SourceFile { type Level = super::proc_macro::Level; type LineColumn = super::proc_macro::LineColumn; -/// A structure representing a diagnostic message and associated children -/// messages. -#[derive(Clone, Debug)] -pub struct Diagnostic { - level: Level, - message: String, - spans: Vec, - children: Vec, -} - -impl Diagnostic { - /// Creates a new diagnostic with the given `level` and `message`. - pub fn new>(level: Level, message: T) -> Diagnostic { - Diagnostic { level, message: message.into(), spans: vec![], children: vec![] } - } -} - pub struct FreeFunctions; #[derive(Default)] @@ -65,8 +48,6 @@ impl server::Types for RustAnalyzer { type FreeFunctions = FreeFunctions; type TokenStream = TokenStream; type SourceFile = SourceFile; - type MultiSpan = Vec; - type Diagnostic = Diagnostic; type Span = Span; type Symbol = Symbol; } @@ -90,6 +71,10 @@ impl server::FreeFunctions for RustAnalyzer { span: tt::TokenId::unspecified(), }) } + + fn emit_diagnostic(&mut self, _: bridge::Diagnostic) { + // FIXME handle diagnostic + } } impl server::TokenStream for RustAnalyzer { @@ -282,30 +267,6 @@ impl server::SourceFile for RustAnalyzer { } } -impl server::Diagnostic for RustAnalyzer { - fn new(&mut self, level: Level, msg: &str, spans: Self::MultiSpan) -> Self::Diagnostic { - let mut diag = Diagnostic::new(level, msg); - diag.spans = spans; - diag - } - - fn sub( - &mut self, - _diag: &mut Self::Diagnostic, - _level: Level, - _msg: &str, - _spans: Self::MultiSpan, - ) { - // FIXME handle diagnostic - // - } - - fn emit(&mut self, _diag: Self::Diagnostic) { - // FIXME handle diagnostic - // diag.emit() - } -} - impl server::Span for RustAnalyzer { fn debug(&mut self, span: Self::Span) -> String { format!("{:?}", span.0) @@ -372,18 +333,6 @@ impl server::Span for RustAnalyzer { } } -impl server::MultiSpan for RustAnalyzer { - fn new(&mut self) -> Self::MultiSpan { - // FIXME handle span - vec![] - } - - fn push(&mut self, other: &mut Self::MultiSpan, span: Self::Span) { - //TODP - other.push(span) - } -} - impl server::Symbol for RustAnalyzer { fn normalize_and_validate_ident(&mut self, string: &str) -> Result { // FIXME: nfc-normalize and validate idents From 22c8c9c4014c63309524f218d92554ebfdf9621e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Tue, 9 Aug 2022 07:23:57 +0300 Subject: [PATCH 004/478] :arrow_up: rust-analyzer --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/workflows/release.yaml | 16 +- README.md | 2 +- crates/flycheck/src/lib.rs | 15 +- crates/hir-def/src/generics.rs | 2 +- crates/hir-def/src/item_tree.rs | 2 +- crates/hir-def/src/visibility.rs | 2 +- crates/hir-expand/src/fixup.rs | 110 ++++- crates/hir-expand/src/name.rs | 2 + crates/hir-ty/src/infer/expr.rs | 63 +-- crates/hir-ty/src/lower.rs | 2 +- crates/hir-ty/src/method_resolution.rs | 51 ++- crates/hir/src/semantics.rs | 40 ++ crates/hir/src/source_analyzer.rs | 120 +++++- .../src/handlers/generate_enum_variant.rs | 375 +++++++++++++++++- crates/ide-db/src/apply_change.rs | 2 +- crates/ide-db/src/defs.rs | 80 ++++ crates/ide-ssr/src/lib.rs | 2 +- crates/ide/src/call_hierarchy.rs | 4 +- crates/ide/src/expand_macro.rs | 4 +- crates/ide/src/goto_definition.rs | 122 +++++- crates/ide/src/goto_implementation.rs | 2 +- crates/ide/src/highlight_related.rs | 3 +- crates/ide/src/hover.rs | 22 +- crates/ide/src/hover/tests.rs | 34 ++ crates/ide/src/inlay_hints.rs | 2 +- crates/ide/src/join_lines.rs | 2 +- crates/ide/src/matching_brace.rs | 2 +- crates/ide/src/moniker.rs | 2 +- crates/ide/src/move_item.rs | 4 +- crates/ide/src/parent_module.rs | 2 +- crates/ide/src/runnables.rs | 81 +++- crates/ide/src/shuffle_crate_graph.rs | 2 +- crates/ide/src/static_index.rs | 2 +- crates/ide/src/status.rs | 2 +- crates/ide/src/syntax_highlighting/tests.rs | 2 +- crates/ide/src/syntax_tree.rs | 2 +- crates/ide/src/view_crate_graph.rs | 2 +- crates/ide/src/view_hir.rs | 2 +- crates/ide/src/view_item_tree.rs | 2 +- crates/paths/src/lib.rs | 8 + crates/proc-macro-api/src/lib.rs | 2 +- crates/proc-macro-srv/src/abis/mod.rs | 2 +- crates/project-model/src/cargo_workspace.rs | 2 +- crates/rust-analyzer/src/diagnostics.rs | 26 +- crates/rust-analyzer/src/global_state.rs | 34 +- crates/rust-analyzer/src/handlers.rs | 4 +- .../src/integrated_benchmarks.rs | 4 +- crates/rust-analyzer/src/main_loop.rs | 89 ++++- crates/rust-analyzer/src/reload.rs | 70 ++-- crates/rust-analyzer/tests/slow-tests/tidy.rs | 7 +- crates/sourcegen/src/lib.rs | 14 +- crates/syntax/src/ast/edit_in_place.rs | 171 ++++++-- crates/syntax/src/ast/make.rs | 5 +- crates/syntax/src/lib.rs | 2 +- crates/vfs-notify/src/lib.rs | 7 +- docs/dev/README.md | 8 +- docs/dev/architecture.md | 2 +- docs/dev/guide.md | 2 +- docs/user/manual.adoc | 4 +- editors/code/package.json | 63 +-- editors/code/src/config.ts | 14 +- editors/code/src/main.ts | 4 +- lib/la-arena/src/lib.rs | 12 +- lib/la-arena/src/map.rs | 169 +++++++- xtask/src/release.rs | 2 +- 66 files changed, 1636 insertions(+), 281 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 7ba06356a37c..a038dce3248a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -19,7 +19,7 @@ Before submitting, please make sure that you're not running into one of these kn Otherwise please try to provide information which will help us to fix the issue faster. Minimal reproducible examples with few dependencies are especially lovely <3. --> -**rust-analyzer version**: (eg. output of "Rust Analyzer: Show RA Version" command) +**rust-analyzer version**: (eg. output of "rust-analyzer: Show RA Version" command, accessible in VSCode via Ctrl/⌘+Shift+P) **rustc version**: (eg. output of `rustc -V`) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4e62f2cde279..ca8eb1309de3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,6 +18,7 @@ env: FETCH_DEPTH: 0 # pull in the tags for the version string MACOSX_DEPLOYMENT_TARGET: 10.15 CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc jobs: dist: @@ -36,6 +37,9 @@ jobs: - os: ubuntu-18.04 target: aarch64-unknown-linux-gnu code-target: linux-arm64 + - os: ubuntu-18.04 + target: arm-unknown-linux-gnueabihf + code-target: linux-armhf - os: macos-11 target: x86_64-apple-darwin code-target: darwin-x64 @@ -67,13 +71,17 @@ jobs: node-version: 14.x - name: Update apt repositories - if: matrix.target == 'aarch64-unknown-linux-gnu' + if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'arm-unknown-linux-gnueabihf' run: sudo apt-get update - - name: Install target toolchain + - name: Install AArch64 target toolchain if: matrix.target == 'aarch64-unknown-linux-gnu' run: sudo apt-get install gcc-aarch64-linux-gnu + - name: Install ARM target toolchain + if: matrix.target == 'arm-unknown-linux-gnueabihf' + run: sudo apt-get install gcc-arm-linux-gnueabihf + - name: Dist run: cargo xtask dist --client-patch-version ${{ github.run_number }} @@ -204,6 +212,10 @@ jobs: with: name: dist-aarch64-unknown-linux-gnu path: dist + - uses: actions/download-artifact@v1 + with: + name: dist-arm-unknown-linux-gnueabihf + path: dist - uses: actions/download-artifact@v1 with: name: dist-x86_64-pc-windows-msvc diff --git a/README.md b/README.md index 8bb0517ed5ab..8c3f6f8468bf 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer ## License -Rust analyzer is primarily distributed under the terms of both the MIT +rust-analyzer is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details. diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 4e8bc881ae73..3347940ec6d6 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -57,6 +57,7 @@ pub struct FlycheckHandle { // XXX: drop order is significant sender: Sender, _thread: jod_thread::JoinHandle, + id: usize, } impl FlycheckHandle { @@ -72,18 +73,22 @@ impl FlycheckHandle { .name("Flycheck".to_owned()) .spawn(move || actor.run(receiver)) .expect("failed to spawn thread"); - FlycheckHandle { sender, _thread: thread } + FlycheckHandle { id, sender, _thread: thread } } /// Schedule a re-start of the cargo check worker. pub fn update(&self) { self.sender.send(Restart).unwrap(); } + + pub fn id(&self) -> usize { + self.id + } } pub enum Message { /// Request adding a diagnostic with fixes included to a file - AddDiagnostic { workspace_root: AbsPathBuf, diagnostic: Diagnostic }, + AddDiagnostic { id: usize, workspace_root: AbsPathBuf, diagnostic: Diagnostic }, /// Request check progress notification to client Progress { @@ -96,8 +101,9 @@ pub enum Message { impl fmt::Debug for Message { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { - Message::AddDiagnostic { workspace_root, diagnostic } => f + Message::AddDiagnostic { id, workspace_root, diagnostic } => f .debug_struct("AddDiagnostic") + .field("id", id) .field("workspace_root", workspace_root) .field("diagnostic_code", &diagnostic.code.as_ref().map(|it| &it.code)) .finish(), @@ -183,7 +189,7 @@ impl FlycheckActor { } } Event::CheckEvent(None) => { - tracing::debug!("flycheck finished"); + tracing::debug!(flycheck_id = self.id, "flycheck finished"); // Watcher finished let cargo_handle = self.cargo_handle.take().unwrap(); @@ -203,6 +209,7 @@ impl FlycheckActor { CargoMessage::Diagnostic(msg) => { self.send(Message::AddDiagnostic { + id: self.id, workspace_root: self.workspace_root.clone(), diagnostic: msg, }); diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs index 2397cf501584..469b28c2d9ed 100644 --- a/crates/hir-def/src/generics.rs +++ b/crates/hir-def/src/generics.rs @@ -451,7 +451,7 @@ impl HasChildSource for GenericDefId { if let GenericDefId::TraitId(id) = *self { let trait_ref = id.lookup(db).source(db).value; let idx = idx_iter.next().unwrap(); - params.insert(idx, Either::Right(trait_ref)) + params.insert(idx, Either::Right(trait_ref)); } if let Some(generic_params_list) = generic_params_list { diff --git a/crates/hir-def/src/item_tree.rs b/crates/hir-def/src/item_tree.rs index 375587ee935b..3342d4db4aa6 100644 --- a/crates/hir-def/src/item_tree.rs +++ b/crates/hir-def/src/item_tree.rs @@ -14,7 +14,7 @@ //! unaffected, so we don't have to recompute name resolution results or item data (see `data.rs`). //! //! The `ItemTree` for the currently open file can be displayed by using the VS Code command -//! "Rust Analyzer: Debug ItemTree". +//! "rust-analyzer: Debug ItemTree". //! //! Compared to rustc's architecture, `ItemTree` has properties from both rustc's AST and HIR: many //! syntax-level Rust features are already desugared to simpler forms in the `ItemTree`, but name diff --git a/crates/hir-def/src/visibility.rs b/crates/hir-def/src/visibility.rs index 6e22a877a9fa..087268a9ecee 100644 --- a/crates/hir-def/src/visibility.rs +++ b/crates/hir-def/src/visibility.rs @@ -224,7 +224,7 @@ pub(crate) fn field_visibilities_query( let resolver = variant_id.module(db).resolver(db); let mut res = ArenaMap::default(); for (field_id, field_data) in var_data.fields().iter() { - res.insert(field_id, field_data.visibility.resolve(db, &resolver)) + res.insert(field_id, field_data.visibility.resolve(db, &resolver)); } Arc::new(res) } diff --git a/crates/hir-expand/src/fixup.rs b/crates/hir-expand/src/fixup.rs index 9999790fae72..e46f43a878fe 100644 --- a/crates/hir-expand/src/fixup.rs +++ b/crates/hir-expand/src/fixup.rs @@ -5,7 +5,7 @@ use std::mem; use mbe::{SyntheticToken, SyntheticTokenId, TokenMap}; use rustc_hash::FxHashMap; use syntax::{ - ast::{self, AstNode}, + ast::{self, AstNode, HasLoopBody}, match_ast, SyntaxElement, SyntaxKind, SyntaxNode, TextRange, }; use tt::Subtree; @@ -142,8 +142,59 @@ pub(crate) fn fixup_syntax(node: &SyntaxNode) -> SyntaxFixups { ]); } }, + ast::WhileExpr(it) => { + if it.condition().is_none() { + // insert placeholder token after the while token + let while_token = match it.while_token() { + Some(t) => t, + None => continue, + }; + append.insert(while_token.into(), vec![ + SyntheticToken { + kind: SyntaxKind::IDENT, + text: "__ra_fixup".into(), + range: end_range, + id: EMPTY_ID, + }, + ]); + } + if it.loop_body().is_none() { + append.insert(node.clone().into(), vec![ + SyntheticToken { + kind: SyntaxKind::L_CURLY, + text: "{".into(), + range: end_range, + id: EMPTY_ID, + }, + SyntheticToken { + kind: SyntaxKind::R_CURLY, + text: "}".into(), + range: end_range, + id: EMPTY_ID, + }, + ]); + } + }, + ast::LoopExpr(it) => { + if it.loop_body().is_none() { + append.insert(node.clone().into(), vec![ + SyntheticToken { + kind: SyntaxKind::L_CURLY, + text: "{".into(), + range: end_range, + id: EMPTY_ID, + }, + SyntheticToken { + kind: SyntaxKind::R_CURLY, + text: "}".into(), + range: end_range, + id: EMPTY_ID, + }, + ]); + } + }, // FIXME: foo:: - // FIXME: for, loop, match etc. + // FIXME: for, match etc. _ => (), } } @@ -376,6 +427,61 @@ fn foo() { // the {} gets parsed as the condition, I think? expect![[r#" fn foo () {if {} {}} +"#]], + ) + } + + #[test] + fn fixup_while_1() { + check( + r#" +fn foo() { + while +} +"#, + expect![[r#" +fn foo () {while __ra_fixup {}} +"#]], + ) + } + + #[test] + fn fixup_while_2() { + check( + r#" +fn foo() { + while foo +} +"#, + expect![[r#" +fn foo () {while foo {}} +"#]], + ) + } + #[test] + fn fixup_while_3() { + check( + r#" +fn foo() { + while {} +} +"#, + expect![[r#" +fn foo () {while __ra_fixup {}} +"#]], + ) + } + + #[test] + fn fixup_loop() { + check( + r#" +fn foo() { + loop +} +"#, + expect![[r#" +fn foo () {loop {}} "#]], ) } diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index 85b0a7735fe9..47d191822d84 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -381,6 +381,7 @@ pub mod known { bitor, bitxor_assign, bitxor, + branch, deref_mut, deref, div_assign, @@ -396,6 +397,7 @@ pub mod known { not, owned_box, partial_ord, + poll, r#fn, rem_assign, rem, diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index d164e64a8be0..2a13106390d9 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -10,13 +10,13 @@ use chalk_ir::{ cast::Cast, fold::Shift, DebruijnIndex, GenericArgData, Mutability, TyVariableKind, }; use hir_def::{ - expr::{ArithOp, Array, BinaryOp, CmpOp, Expr, ExprId, Literal, Ordering, Statement, UnaryOp}, + expr::{ArithOp, Array, BinaryOp, CmpOp, Expr, ExprId, Literal, Statement, UnaryOp}, generics::TypeOrConstParamData, path::{GenericArg, GenericArgs}, resolver::resolver_for_expr, - ConstParamId, FieldId, FunctionId, ItemContainerId, Lookup, + ConstParamId, FieldId, ItemContainerId, Lookup, }; -use hir_expand::name::{name, Name}; +use hir_expand::name::Name; use stdx::always; use syntax::ast::RangeOp; @@ -28,7 +28,7 @@ use crate::{ const_or_path_to_chalk, generic_arg_to_chalk, lower_to_chalk_mutability, ParamLoweringMode, }, mapping::{from_chalk, ToChalk}, - method_resolution::{self, VisibleFromModule}, + method_resolution::{self, lang_names_for_bin_op, VisibleFromModule}, primitive::{self, UintTy}, static_lifetime, to_chalk_trait_id, utils::{generics, Generics}, @@ -947,7 +947,9 @@ impl<'a> InferenceContext<'a> { let lhs_ty = self.infer_expr(lhs, &lhs_expectation); let rhs_ty = self.table.new_type_var(); - let func = self.resolve_binop_method(op); + let func = lang_names_for_bin_op(op).and_then(|(name, lang_item)| { + self.db.trait_data(self.resolve_lang_item(lang_item)?.as_trait()?).method_by_name(&name) + }); let func = match func { Some(func) => func, None => { @@ -1473,55 +1475,4 @@ impl<'a> InferenceContext<'a> { }, }) } - - fn resolve_binop_method(&self, op: BinaryOp) -> Option { - let (name, lang_item) = match op { - BinaryOp::LogicOp(_) => return None, - BinaryOp::ArithOp(aop) => match aop { - ArithOp::Add => (name!(add), name!(add)), - ArithOp::Mul => (name!(mul), name!(mul)), - ArithOp::Sub => (name!(sub), name!(sub)), - ArithOp::Div => (name!(div), name!(div)), - ArithOp::Rem => (name!(rem), name!(rem)), - ArithOp::Shl => (name!(shl), name!(shl)), - ArithOp::Shr => (name!(shr), name!(shr)), - ArithOp::BitXor => (name!(bitxor), name!(bitxor)), - ArithOp::BitOr => (name!(bitor), name!(bitor)), - ArithOp::BitAnd => (name!(bitand), name!(bitand)), - }, - BinaryOp::Assignment { op: Some(aop) } => match aop { - ArithOp::Add => (name!(add_assign), name!(add_assign)), - ArithOp::Mul => (name!(mul_assign), name!(mul_assign)), - ArithOp::Sub => (name!(sub_assign), name!(sub_assign)), - ArithOp::Div => (name!(div_assign), name!(div_assign)), - ArithOp::Rem => (name!(rem_assign), name!(rem_assign)), - ArithOp::Shl => (name!(shl_assign), name!(shl_assign)), - ArithOp::Shr => (name!(shr_assign), name!(shr_assign)), - ArithOp::BitXor => (name!(bitxor_assign), name!(bitxor_assign)), - ArithOp::BitOr => (name!(bitor_assign), name!(bitor_assign)), - ArithOp::BitAnd => (name!(bitand_assign), name!(bitand_assign)), - }, - BinaryOp::CmpOp(cop) => match cop { - CmpOp::Eq { negated: false } => (name!(eq), name!(eq)), - CmpOp::Eq { negated: true } => (name!(ne), name!(eq)), - CmpOp::Ord { ordering: Ordering::Less, strict: false } => { - (name!(le), name!(partial_ord)) - } - CmpOp::Ord { ordering: Ordering::Less, strict: true } => { - (name!(lt), name!(partial_ord)) - } - CmpOp::Ord { ordering: Ordering::Greater, strict: false } => { - (name!(ge), name!(partial_ord)) - } - CmpOp::Ord { ordering: Ordering::Greater, strict: true } => { - (name!(gt), name!(partial_ord)) - } - }, - BinaryOp::Assignment { op: None } => return None, - }; - - let trait_ = self.resolve_lang_item(lang_item)?.as_trait()?; - - self.db.trait_data(trait_).method_by_name(&name) - } } diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index 3ed9c941f479..239f66bcb7e7 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -1126,7 +1126,7 @@ pub(crate) fn field_types_query( let ctx = TyLoweringContext::new(db, &resolver).with_type_param_mode(ParamLoweringMode::Variable); for (field_id, field_data) in var_data.fields().iter() { - res.insert(field_id, make_binders(db, &generics, ctx.lower_ty(&field_data.type_ref))) + res.insert(field_id, make_binders(db, &generics, ctx.lower_ty(&field_data.type_ref))); } Arc::new(res) } diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 15df7b3dd2b9..64622545f840 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -336,7 +336,7 @@ impl InherentImpls { } } -pub fn inherent_impl_crates_query( +pub(crate) fn inherent_impl_crates_query( db: &dyn HirDatabase, krate: CrateId, fp: TyFingerprint, @@ -419,6 +419,55 @@ pub fn def_crates( } } +pub fn lang_names_for_bin_op(op: syntax::ast::BinaryOp) -> Option<(Name, Name)> { + use hir_expand::name; + use syntax::ast::{ArithOp, BinaryOp, CmpOp, Ordering}; + Some(match op { + BinaryOp::LogicOp(_) => return None, + BinaryOp::ArithOp(aop) => match aop { + ArithOp::Add => (name!(add), name!(add)), + ArithOp::Mul => (name!(mul), name!(mul)), + ArithOp::Sub => (name!(sub), name!(sub)), + ArithOp::Div => (name!(div), name!(div)), + ArithOp::Rem => (name!(rem), name!(rem)), + ArithOp::Shl => (name!(shl), name!(shl)), + ArithOp::Shr => (name!(shr), name!(shr)), + ArithOp::BitXor => (name!(bitxor), name!(bitxor)), + ArithOp::BitOr => (name!(bitor), name!(bitor)), + ArithOp::BitAnd => (name!(bitand), name!(bitand)), + }, + BinaryOp::Assignment { op: Some(aop) } => match aop { + ArithOp::Add => (name!(add_assign), name!(add_assign)), + ArithOp::Mul => (name!(mul_assign), name!(mul_assign)), + ArithOp::Sub => (name!(sub_assign), name!(sub_assign)), + ArithOp::Div => (name!(div_assign), name!(div_assign)), + ArithOp::Rem => (name!(rem_assign), name!(rem_assign)), + ArithOp::Shl => (name!(shl_assign), name!(shl_assign)), + ArithOp::Shr => (name!(shr_assign), name!(shr_assign)), + ArithOp::BitXor => (name!(bitxor_assign), name!(bitxor_assign)), + ArithOp::BitOr => (name!(bitor_assign), name!(bitor_assign)), + ArithOp::BitAnd => (name!(bitand_assign), name!(bitand_assign)), + }, + BinaryOp::CmpOp(cop) => match cop { + CmpOp::Eq { negated: false } => (name!(eq), name!(eq)), + CmpOp::Eq { negated: true } => (name!(ne), name!(eq)), + CmpOp::Ord { ordering: Ordering::Less, strict: false } => { + (name!(le), name!(partial_ord)) + } + CmpOp::Ord { ordering: Ordering::Less, strict: true } => { + (name!(lt), name!(partial_ord)) + } + CmpOp::Ord { ordering: Ordering::Greater, strict: false } => { + (name!(ge), name!(partial_ord)) + } + CmpOp::Ord { ordering: Ordering::Greater, strict: true } => { + (name!(gt), name!(partial_ord)) + } + }, + BinaryOp::Assignment { op: None } => return None, + }) +} + /// Look up the method with the given name. pub(crate) fn lookup_method( ty: &Canonical, diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index c84318b2fb87..416b6f58061d 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -357,6 +357,26 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { self.imp.resolve_method_call(call).map(Function::from) } + pub fn resolve_await_to_poll(&self, await_expr: &ast::AwaitExpr) -> Option { + self.imp.resolve_await_to_poll(await_expr).map(Function::from) + } + + pub fn resolve_prefix_expr(&self, prefix_expr: &ast::PrefixExpr) -> Option { + self.imp.resolve_prefix_expr(prefix_expr).map(Function::from) + } + + pub fn resolve_index_expr(&self, index_expr: &ast::IndexExpr) -> Option { + self.imp.resolve_index_expr(index_expr).map(Function::from) + } + + pub fn resolve_bin_expr(&self, bin_expr: &ast::BinExpr) -> Option { + self.imp.resolve_bin_expr(bin_expr).map(Function::from) + } + + pub fn resolve_try_expr(&self, try_expr: &ast::TryExpr) -> Option { + self.imp.resolve_try_expr(try_expr).map(Function::from) + } + pub fn resolve_method_call_as_callable(&self, call: &ast::MethodCallExpr) -> Option { self.imp.resolve_method_call_as_callable(call) } @@ -1066,6 +1086,26 @@ impl<'db> SemanticsImpl<'db> { self.analyze(call.syntax())?.resolve_method_call(self.db, call) } + fn resolve_await_to_poll(&self, await_expr: &ast::AwaitExpr) -> Option { + self.analyze(await_expr.syntax())?.resolve_await_to_poll(self.db, await_expr) + } + + fn resolve_prefix_expr(&self, prefix_expr: &ast::PrefixExpr) -> Option { + self.analyze(prefix_expr.syntax())?.resolve_prefix_expr(self.db, prefix_expr) + } + + fn resolve_index_expr(&self, index_expr: &ast::IndexExpr) -> Option { + self.analyze(index_expr.syntax())?.resolve_index_expr(self.db, index_expr) + } + + fn resolve_bin_expr(&self, bin_expr: &ast::BinExpr) -> Option { + self.analyze(bin_expr.syntax())?.resolve_bin_expr(self.db, bin_expr) + } + + fn resolve_try_expr(&self, try_expr: &ast::TryExpr) -> Option { + self.analyze(try_expr.syntax())?.resolve_try_expr(self.db, try_expr) + } + fn resolve_method_call_as_callable(&self, call: &ast::MethodCallExpr) -> Option { self.analyze(call.syntax())?.resolve_method_call_as_callable(self.db, call) } diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index 1eb51b20c356..f5e2e4430709 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -25,15 +25,20 @@ use hir_def::{ Lookup, ModuleDefId, VariantId, }; use hir_expand::{ - builtin_fn_macro::BuiltinFnLikeExpander, hygiene::Hygiene, name::AsName, HirFileId, InFile, + builtin_fn_macro::BuiltinFnLikeExpander, + hygiene::Hygiene, + name, + name::{AsName, Name}, + HirFileId, InFile, }; use hir_ty::{ diagnostics::{ record_literal_missing_fields, record_pattern_missing_fields, unsafe_expressions, UnsafeExpr, }, - method_resolution, Adjust, Adjustment, AutoBorrow, InferenceResult, Interner, Substitution, - TyExt, TyKind, TyLoweringContext, + method_resolution::{self, lang_names_for_bin_op}, + Adjust, Adjustment, AutoBorrow, InferenceResult, Interner, Substitution, Ty, TyExt, TyKind, + TyLoweringContext, }; use itertools::Itertools; use smallvec::SmallVec; @@ -255,8 +260,90 @@ impl SourceAnalyzer { ) -> Option { let expr_id = self.expr_id(db, &call.clone().into())?; let (f_in_trait, substs) = self.infer.as_ref()?.method_resolution(expr_id)?; - let f_in_impl = self.resolve_impl_method(db, f_in_trait, &substs); - f_in_impl.or(Some(f_in_trait)) + + Some(self.resolve_impl_method_or_trait_def(db, f_in_trait, &substs)) + } + + pub(crate) fn resolve_await_to_poll( + &self, + db: &dyn HirDatabase, + await_expr: &ast::AwaitExpr, + ) -> Option { + let ty = self.ty_of_expr(db, &await_expr.expr()?.into())?; + + let op_fn = db + .lang_item(self.resolver.krate(), hir_expand::name![poll].to_smol_str())? + .as_function()?; + let substs = hir_ty::TyBuilder::subst_for_def(db, op_fn).push(ty.clone()).build(); + + Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) + } + + pub(crate) fn resolve_prefix_expr( + &self, + db: &dyn HirDatabase, + prefix_expr: &ast::PrefixExpr, + ) -> Option { + let lang_item_name = match prefix_expr.op_kind()? { + ast::UnaryOp::Deref => name![deref], + ast::UnaryOp::Not => name![not], + ast::UnaryOp::Neg => name![neg], + }; + let ty = self.ty_of_expr(db, &prefix_expr.expr()?.into())?; + + let op_fn = self.lang_trait_fn(db, &lang_item_name, &lang_item_name)?; + let substs = hir_ty::TyBuilder::subst_for_def(db, op_fn).push(ty.clone()).build(); + + Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) + } + + pub(crate) fn resolve_index_expr( + &self, + db: &dyn HirDatabase, + index_expr: &ast::IndexExpr, + ) -> Option { + let base_ty = self.ty_of_expr(db, &index_expr.base()?.into())?; + let index_ty = self.ty_of_expr(db, &index_expr.index()?.into())?; + + let lang_item_name = name![index]; + + let op_fn = self.lang_trait_fn(db, &lang_item_name, &lang_item_name)?; + let substs = hir_ty::TyBuilder::subst_for_def(db, op_fn) + .push(base_ty.clone()) + .push(index_ty.clone()) + .build(); + Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) + } + + pub(crate) fn resolve_bin_expr( + &self, + db: &dyn HirDatabase, + binop_expr: &ast::BinExpr, + ) -> Option { + let op = binop_expr.op_kind()?; + let lhs = self.ty_of_expr(db, &binop_expr.lhs()?.into())?; + let rhs = self.ty_of_expr(db, &binop_expr.rhs()?.into())?; + + let op_fn = lang_names_for_bin_op(op) + .and_then(|(name, lang_item)| self.lang_trait_fn(db, &lang_item, &name))?; + let substs = + hir_ty::TyBuilder::subst_for_def(db, op_fn).push(lhs.clone()).push(rhs.clone()).build(); + + Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) + } + + pub(crate) fn resolve_try_expr( + &self, + db: &dyn HirDatabase, + try_expr: &ast::TryExpr, + ) -> Option { + let ty = self.ty_of_expr(db, &try_expr.expr()?.into())?; + + let op_fn = + db.lang_item(self.resolver.krate(), name![branch].to_smol_str())?.as_function()?; + let substs = hir_ty::TyBuilder::subst_for_def(db, op_fn).push(ty.clone()).build(); + + Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) } pub(crate) fn resolve_field( @@ -666,6 +753,29 @@ impl SourceAnalyzer { let fun_data = db.function_data(func); method_resolution::lookup_impl_method(self_ty, db, trait_env, impled_trait, &fun_data.name) } + + fn resolve_impl_method_or_trait_def( + &self, + db: &dyn HirDatabase, + func: FunctionId, + substs: &Substitution, + ) -> FunctionId { + self.resolve_impl_method(db, func, substs).unwrap_or(func) + } + + fn lang_trait_fn( + &self, + db: &dyn HirDatabase, + lang_trait: &Name, + method_name: &Name, + ) -> Option { + db.trait_data(db.lang_item(self.resolver.krate(), lang_trait.to_smol_str())?.as_trait()?) + .method_by_name(method_name) + } + + fn ty_of_expr(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option<&Ty> { + self.infer.as_ref()?.type_of_expr.get(self.expr_id(db, &expr)?) + } } fn scope_for( diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs index 4461fbd5ac82..35cd42908af2 100644 --- a/crates/ide-assists/src/handlers/generate_enum_variant.rs +++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs @@ -1,8 +1,8 @@ -use hir::{HasSource, InFile}; +use hir::{HasSource, HirDisplay, InFile}; use ide_db::assists::{AssistId, AssistKind}; use syntax::{ - ast::{self, edit::IndentLevel}, - AstNode, TextSize, + ast::{self, make, HasArgList}, + match_ast, AstNode, SyntaxNode, }; use crate::assist_context::{AssistContext, Assists}; @@ -32,8 +32,8 @@ use crate::assist_context::{AssistContext, Assists}; // } // ``` pub(crate) fn generate_enum_variant(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - let path_expr: ast::PathExpr = ctx.find_node_at_offset()?; - let path = path_expr.path()?; + let path: ast::Path = ctx.find_node_at_offset()?; + let parent = path_parent(&path)?; if ctx.sema.resolve_path(&path).is_some() { // No need to generate anything if the path resolves @@ -50,26 +50,71 @@ pub(crate) fn generate_enum_variant(acc: &mut Assists, ctx: &AssistContext<'_>) ctx.sema.resolve_path(&path.qualifier()?) { let target = path.syntax().text_range(); - return add_variant_to_accumulator(acc, ctx, target, e, &name_ref); + return add_variant_to_accumulator(acc, ctx, target, e, &name_ref, parent); } None } +#[derive(Debug)] +enum PathParent { + PathExpr(ast::PathExpr), + RecordExpr(ast::RecordExpr), + PathPat(ast::PathPat), + UseTree(ast::UseTree), +} + +impl PathParent { + fn syntax(&self) -> &SyntaxNode { + match self { + PathParent::PathExpr(it) => it.syntax(), + PathParent::RecordExpr(it) => it.syntax(), + PathParent::PathPat(it) => it.syntax(), + PathParent::UseTree(it) => it.syntax(), + } + } + + fn make_field_list(&self, ctx: &AssistContext<'_>) -> Option { + let scope = ctx.sema.scope(self.syntax())?; + + match self { + PathParent::PathExpr(it) => { + if let Some(call_expr) = it.syntax().parent().and_then(ast::CallExpr::cast) { + make_tuple_field_list(call_expr, ctx, &scope) + } else { + None + } + } + PathParent::RecordExpr(it) => make_record_field_list(it, ctx, &scope), + PathParent::UseTree(_) | PathParent::PathPat(_) => None, + } + } +} + +fn path_parent(path: &ast::Path) -> Option { + let parent = path.syntax().parent()?; + + match_ast! { + match parent { + ast::PathExpr(it) => Some(PathParent::PathExpr(it)), + ast::RecordExpr(it) => Some(PathParent::RecordExpr(it)), + ast::PathPat(it) => Some(PathParent::PathPat(it)), + ast::UseTree(it) => Some(PathParent::UseTree(it)), + _ => None + } + } +} + fn add_variant_to_accumulator( acc: &mut Assists, ctx: &AssistContext<'_>, target: syntax::TextRange, adt: hir::Enum, name_ref: &ast::NameRef, + parent: PathParent, ) -> Option<()> { let db = ctx.db(); let InFile { file_id, value: enum_node } = adt.source(db)?.original_ast_node(db)?; - let enum_indent = IndentLevel::from_node(&enum_node.syntax()); - - let variant_list = enum_node.variant_list()?; - let offset = variant_list.syntax().text_range().end() - TextSize::of('}'); - let empty_enum = variant_list.variants().next().is_none(); acc.add( AssistId("generate_enum_variant", AssistKind::Generate), @@ -77,18 +122,80 @@ fn add_variant_to_accumulator( target, |builder| { builder.edit_file(file_id.original_file(db)); - let text = format!( - "{maybe_newline}{indent_1}{name},\n{enum_indent}", - maybe_newline = if empty_enum { "\n" } else { "" }, - indent_1 = IndentLevel(1), - name = name_ref, - enum_indent = enum_indent - ); - builder.insert(offset, text) + let node = builder.make_mut(enum_node); + let variant = make_variant(ctx, name_ref, parent); + node.variant_list().map(|it| it.add_variant(variant.clone_for_update())); }, ) } +fn make_variant( + ctx: &AssistContext<'_>, + name_ref: &ast::NameRef, + parent: PathParent, +) -> ast::Variant { + let field_list = parent.make_field_list(ctx); + make::variant(make::name(&name_ref.text()), field_list) +} + +fn make_record_field_list( + record: &ast::RecordExpr, + ctx: &AssistContext<'_>, + scope: &hir::SemanticsScope<'_>, +) -> Option { + let fields = record.record_expr_field_list()?.fields(); + let record_fields = fields.map(|field| { + let name = name_from_field(&field); + + let ty = field + .expr() + .and_then(|it| expr_ty(ctx, it, scope)) + .unwrap_or_else(make::ty_placeholder); + + make::record_field(None, name, ty) + }); + Some(make::record_field_list(record_fields).into()) +} + +fn name_from_field(field: &ast::RecordExprField) -> ast::Name { + let text = match field.name_ref() { + Some(it) => it.to_string(), + None => name_from_field_shorthand(field).unwrap_or("unknown".to_string()), + }; + make::name(&text) +} + +fn name_from_field_shorthand(field: &ast::RecordExprField) -> Option { + let path = match field.expr()? { + ast::Expr::PathExpr(path_expr) => path_expr.path(), + _ => None, + }?; + Some(path.as_single_name_ref()?.to_string()) +} + +fn make_tuple_field_list( + call_expr: ast::CallExpr, + ctx: &AssistContext<'_>, + scope: &hir::SemanticsScope<'_>, +) -> Option { + let args = call_expr.arg_list()?.args(); + let tuple_fields = args.map(|arg| { + let ty = expr_ty(ctx, arg, &scope).unwrap_or_else(make::ty_placeholder); + make::tuple_field(None, ty) + }); + Some(make::tuple_field_list(tuple_fields).into()) +} + +fn expr_ty( + ctx: &AssistContext<'_>, + arg: ast::Expr, + scope: &hir::SemanticsScope<'_>, +) -> Option { + let ty = ctx.sema.type_of_expr(&arg).map(|it| it.adjusted())?; + let text = ty.display_source_code(ctx.db(), scope.module().into()).ok()?; + Some(make::ty(&text)) +} + #[cfg(test)] mod tests { use crate::tests::{check_assist, check_assist_not_applicable}; @@ -221,6 +328,236 @@ mod m { fn main() { m::Foo::Baz } +", + ) + } + + #[test] + fn associated_single_element_tuple() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + Foo::Bar$0(true) +} +", + r" +enum Foo { + Bar(bool), +} +fn main() { + Foo::Bar(true) +} +", + ) + } + + #[test] + fn associated_single_element_tuple_unknown_type() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + Foo::Bar$0(x) +} +", + r" +enum Foo { + Bar(_), +} +fn main() { + Foo::Bar(x) +} +", + ) + } + + #[test] + fn associated_multi_element_tuple() { + check_assist( + generate_enum_variant, + r" +struct Struct {} +enum Foo {} +fn main() { + Foo::Bar$0(true, x, Struct {}) +} +", + r" +struct Struct {} +enum Foo { + Bar(bool, _, Struct), +} +fn main() { + Foo::Bar(true, x, Struct {}) +} +", + ) + } + + #[test] + fn associated_record() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + Foo::$0Bar { x: true } +} +", + r" +enum Foo { + Bar { x: bool }, +} +fn main() { + Foo::Bar { x: true } +} +", + ) + } + + #[test] + fn associated_record_unknown_type() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + Foo::$0Bar { x: y } +} +", + r" +enum Foo { + Bar { x: _ }, +} +fn main() { + Foo::Bar { x: y } +} +", + ) + } + + #[test] + fn associated_record_field_shorthand() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + let x = true; + Foo::$0Bar { x } +} +", + r" +enum Foo { + Bar { x: bool }, +} +fn main() { + let x = true; + Foo::Bar { x } +} +", + ) + } + + #[test] + fn associated_record_field_shorthand_unknown_type() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn main() { + Foo::$0Bar { x } +} +", + r" +enum Foo { + Bar { x: _ }, +} +fn main() { + Foo::Bar { x } +} +", + ) + } + + #[test] + fn associated_record_field_multiple_fields() { + check_assist( + generate_enum_variant, + r" +struct Struct {} +enum Foo {} +fn main() { + Foo::$0Bar { x, y: x, s: Struct {} } +} +", + r" +struct Struct {} +enum Foo { + Bar { x: _, y: _, s: Struct }, +} +fn main() { + Foo::Bar { x, y: x, s: Struct {} } +} +", + ) + } + + #[test] + fn use_tree() { + check_assist( + generate_enum_variant, + r" +//- /main.rs +mod foo; +use foo::Foo::Bar$0; + +//- /foo.rs +enum Foo {} +", + r" +enum Foo { + Bar, +} +", + ) + } + + #[test] + fn not_applicable_for_path_type() { + check_assist_not_applicable( + generate_enum_variant, + r" +enum Foo {} +impl Foo::Bar$0 {} +", + ) + } + + #[test] + fn path_pat() { + check_assist( + generate_enum_variant, + r" +enum Foo {} +fn foo(x: Foo) { + match x { + Foo::Bar$0 => + } +} +", + r" +enum Foo { + Bar, +} +fn foo(x: Foo) { + match x { + Foo::Bar => + } +} ", ) } diff --git a/crates/ide-db/src/apply_change.rs b/crates/ide-db/src/apply_change.rs index 98b0e9c947a7..f8134c552f75 100644 --- a/crates/ide-db/src/apply_change.rs +++ b/crates/ide-db/src/apply_change.rs @@ -45,7 +45,7 @@ impl RootDatabase { // |=== // | Editor | Action Name // - // | VS Code | **Rust Analyzer: Memory Usage (Clears Database)** + // | VS Code | **rust-analyzer: Memory Usage (Clears Database)** // |=== // image::https://user-images.githubusercontent.com/48062697/113065592-08559f00-91b1-11eb-8c96-64b88068ec02.gif[] pub fn per_query_memory_usage(&mut self) -> Vec<(String, Bytes)> { diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs index aeaca00ec65c..6c13c039723b 100644 --- a/crates/ide-db/src/defs.rs +++ b/crates/ide-db/src/defs.rs @@ -127,10 +127,12 @@ impl Definition { } } +// FIXME: IdentClass as a name no longer fits #[derive(Debug)] pub enum IdentClass { NameClass(NameClass), NameRefClass(NameRefClass), + Operator(OperatorClass), } impl IdentClass { @@ -147,6 +149,11 @@ impl IdentClass { .map(IdentClass::NameClass) .or_else(|| NameRefClass::classify_lifetime(sema, &lifetime).map(IdentClass::NameRefClass)) }, + ast::AwaitExpr(await_expr) => OperatorClass::classify_await(sema, &await_expr).map(IdentClass::Operator), + ast::BinExpr(bin_expr) => OperatorClass::classify_bin(sema, &bin_expr).map(IdentClass::Operator), + ast::IndexExpr(index_expr) => OperatorClass::classify_index(sema, &index_expr).map(IdentClass::Operator), + ast::PrefixExpr(prefix_expr) => OperatorClass::classify_prefix(sema,&prefix_expr).map(IdentClass::Operator), + ast::TryExpr(try_expr) => OperatorClass::classify_try(sema,&try_expr).map(IdentClass::Operator), _ => None, } } @@ -184,6 +191,33 @@ impl IdentClass { res.push(Definition::Local(local_ref)); res.push(Definition::Field(field_ref)); } + IdentClass::Operator( + OperatorClass::Await(func) + | OperatorClass::Prefix(func) + | OperatorClass::Bin(func) + | OperatorClass::Index(func) + | OperatorClass::Try(func), + ) => res.push(Definition::Function(func)), + } + res + } + + pub fn definitions_no_ops(self) -> ArrayVec { + let mut res = ArrayVec::new(); + match self { + IdentClass::NameClass(NameClass::Definition(it) | NameClass::ConstReference(it)) => { + res.push(it) + } + IdentClass::NameClass(NameClass::PatFieldShorthand { local_def, field_ref }) => { + res.push(Definition::Local(local_def)); + res.push(Definition::Field(field_ref)); + } + IdentClass::NameRefClass(NameRefClass::Definition(it)) => res.push(it), + IdentClass::NameRefClass(NameRefClass::FieldShorthand { local_ref, field_ref }) => { + res.push(Definition::Local(local_ref)); + res.push(Definition::Field(field_ref)); + } + IdentClass::Operator(_) => (), } res } @@ -332,6 +366,52 @@ impl NameClass { } } +#[derive(Debug)] +pub enum OperatorClass { + Await(Function), + Prefix(Function), + Index(Function), + Try(Function), + Bin(Function), +} + +impl OperatorClass { + pub fn classify_await( + sema: &Semantics<'_, RootDatabase>, + await_expr: &ast::AwaitExpr, + ) -> Option { + sema.resolve_await_to_poll(await_expr).map(OperatorClass::Await) + } + + pub fn classify_prefix( + sema: &Semantics<'_, RootDatabase>, + prefix_expr: &ast::PrefixExpr, + ) -> Option { + sema.resolve_prefix_expr(prefix_expr).map(OperatorClass::Prefix) + } + + pub fn classify_try( + sema: &Semantics<'_, RootDatabase>, + try_expr: &ast::TryExpr, + ) -> Option { + sema.resolve_try_expr(try_expr).map(OperatorClass::Try) + } + + pub fn classify_index( + sema: &Semantics<'_, RootDatabase>, + index_expr: &ast::IndexExpr, + ) -> Option { + sema.resolve_index_expr(index_expr).map(OperatorClass::Index) + } + + pub fn classify_bin( + sema: &Semantics<'_, RootDatabase>, + bin_expr: &ast::BinExpr, + ) -> Option { + sema.resolve_bin_expr(bin_expr).map(OperatorClass::Bin) + } +} + /// This is similar to [`NameClass`], but works for [`ast::NameRef`] rather than /// for [`ast::Name`]. Similarly, what looks like a reference in syntax is a /// reference most of the time, but there are a couple of annoying exceptions. diff --git a/crates/ide-ssr/src/lib.rs b/crates/ide-ssr/src/lib.rs index a5e24daa9fa0..739e0ccb436d 100644 --- a/crates/ide-ssr/src/lib.rs +++ b/crates/ide-ssr/src/lib.rs @@ -57,7 +57,7 @@ // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Structural Search Replace** +// | VS Code | **rust-analyzer: Structural Search Replace** // |=== // // Also available as an assist, by writing a comment containing the structural diff --git a/crates/ide/src/call_hierarchy.rs b/crates/ide/src/call_hierarchy.rs index a18a6bea9798..5a8cda8fb3dd 100644 --- a/crates/ide/src/call_hierarchy.rs +++ b/crates/ide/src/call_hierarchy.rs @@ -7,7 +7,7 @@ use ide_db::{ search::FileReference, FxIndexMap, RootDatabase, }; -use syntax::{ast, AstNode, SyntaxKind::NAME, TextRange}; +use syntax::{ast, AstNode, SyntaxKind::IDENT, TextRange}; use crate::{goto_definition, FilePosition, NavigationTarget, RangeInfo, TryToNav}; @@ -79,7 +79,7 @@ pub(crate) fn outgoing_calls(db: &RootDatabase, position: FilePosition) -> Optio let file = sema.parse(file_id); let file = file.syntax(); let token = pick_best_token(file.token_at_offset(position.offset), |kind| match kind { - NAME => 1, + IDENT => 1, _ => 0, })?; let mut calls = CallLocations::default(); diff --git a/crates/ide/src/expand_macro.rs b/crates/ide/src/expand_macro.rs index efa8551a00d5..93252339cd4a 100644 --- a/crates/ide/src/expand_macro.rs +++ b/crates/ide/src/expand_macro.rs @@ -19,7 +19,7 @@ pub struct ExpandedMacro { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Expand macro recursively** +// | VS Code | **rust-analyzer: Expand macro recursively** // |=== // // image::https://user-images.githubusercontent.com/48062697/113020648-b3973180-917a-11eb-84a9-ecb921293dc5.gif[] @@ -32,7 +32,7 @@ pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option< _ => 0, })?; - // due to how Rust Analyzer works internally, we need to special case derive attributes, + // due to how rust-analyzer works internally, we need to special case derive attributes, // otherwise they might not get found, e.g. here with the cursor at $0 `#[attr]` would expand: // ``` // #[attr] diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index d9c97751c95c..b2123b9a8793 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -39,7 +39,11 @@ pub(crate) fn goto_definition( | T![super] | T![crate] | T![Self] - | COMMENT => 2, + | COMMENT => 4, + // index and prefix ops + T!['['] | T![']'] | T![?] | T![*] | T![-] | T![!] => 3, + kind if kind.is_keyword() => 2, + T!['('] | T![')'] => 2, kind if kind.is_trivia() => 0, _ => 1, })?; @@ -1628,6 +1632,122 @@ macro_rules! foo { } foo!(bar$0); +"#, + ); + } + + #[test] + fn goto_await_poll() { + check( + r#" +//- minicore: future + +struct MyFut; + +impl core::future::Future for MyFut { + type Output = (); + + fn poll( + //^^^^ + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll + { + () + } +} + +fn f() { + MyFut.await$0; +} +"#, + ); + } + + #[test] + fn goto_try_op() { + check( + r#" +//- minicore: try + +struct Struct; + +impl core::ops::Try for Struct { + fn branch( + //^^^^^^ + self + ) {} +} + +fn f() { + Struct?$0; +} +"#, + ); + } + + #[test] + fn goto_index_op() { + check( + r#" +//- minicore: index + +struct Struct; + +impl core::ops::Index for Struct { + fn index( + //^^^^^ + self + ) {} +} + +fn f() { + Struct[0]$0; +} +"#, + ); + } + + #[test] + fn goto_prefix_op() { + check( + r#" +//- minicore: deref + +struct Struct; + +impl core::ops::Deref for Struct { + fn deref( + //^^^^^ + self + ) {} +} + +fn f() { + $0*Struct; +} +"#, + ); + } + + #[test] + fn goto_bin_op() { + check( + r#" +//- minicore: add + +struct Struct; + +impl core::ops::Add for Struct { + fn add( + //^^^ + self + ) {} +} + +fn f() { + Struct +$0 Struct; +} "#, ); } diff --git a/crates/ide/src/goto_implementation.rs b/crates/ide/src/goto_implementation.rs index 04b51c839407..b3f711b6b88c 100644 --- a/crates/ide/src/goto_implementation.rs +++ b/crates/ide/src/goto_implementation.rs @@ -30,7 +30,7 @@ pub(crate) fn goto_implementation( let original_token = pick_best_token(syntax.token_at_offset(position.offset), |kind| match kind { - IDENT | T![self] => 1, + IDENT | T![self] | INT_NUMBER => 1, _ => 0, })?; let range = original_token.text_range(); diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs index f2d7029eab19..f190da326e45 100644 --- a/crates/ide/src/highlight_related.rs +++ b/crates/ide/src/highlight_related.rs @@ -333,7 +333,8 @@ fn cover_range(r0: Option, r1: Option) -> Option, token: SyntaxToken) -> FxHashSet { sema.descend_into_macros(token) .into_iter() - .filter_map(|token| IdentClass::classify_token(sema, &token).map(IdentClass::definitions)) + .filter_map(|token| IdentClass::classify_token(sema, &token)) + .map(IdentClass::definitions_no_ops) .flatten() .collect() } diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 59c97f2dcf96..3ada181f1ed2 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -9,7 +9,7 @@ use either::Either; use hir::{HasSource, Semantics}; use ide_db::{ base_db::FileRange, - defs::{Definition, IdentClass}, + defs::{Definition, IdentClass, OperatorClass}, famous_defs::FamousDefs, helpers::pick_best_token, FxIndexSet, RootDatabase, @@ -101,7 +101,10 @@ pub(crate) fn hover( let offset = range.start(); let original_token = pick_best_token(file.token_at_offset(offset), |kind| match kind { - IDENT | INT_NUMBER | LIFETIME_IDENT | T![self] | T![super] | T![crate] | T![Self] => 3, + IDENT | INT_NUMBER | LIFETIME_IDENT | T![self] | T![super] | T![crate] | T![Self] => 4, + // index and prefix ops + T!['['] | T![']'] | T![?] | T![*] | T![-] | T![!] => 3, + kind if kind.is_keyword() => 2, T!['('] | T![')'] => 2, kind if kind.is_trivia() => 0, _ => 1, @@ -136,6 +139,11 @@ pub(crate) fn hover( .filter_map(|token| { let node = token.parent()?; let class = IdentClass::classify_token(sema, token)?; + if let IdentClass::Operator(OperatorClass::Await(_)) = class { + // It's better for us to fall back to the keyword hover here, + // rendering poll is very confusing + return None; + } Some(class.definitions().into_iter().zip(iter::once(node).cycle())) }) .flatten() @@ -232,10 +240,12 @@ fn hover_type_fallback( token: &SyntaxToken, original_token: &SyntaxToken, ) -> Option> { - let node = token - .parent_ancestors() - .take_while(|it| !ast::Item::can_cast(it.kind())) - .find(|n| ast::Expr::can_cast(n.kind()) || ast::Pat::can_cast(n.kind()))?; + let node = + token.parent_ancestors().take_while(|it| !ast::Item::can_cast(it.kind())).find(|n| { + ast::Expr::can_cast(n.kind()) + || ast::Pat::can_cast(n.kind()) + || ast::Type::can_cast(n.kind()) + })?; let expr_or_pat = match_ast! { match node { diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 867d1f54d4fe..c6274264b8f1 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -5051,3 +5051,37 @@ fn f() { ```"#]], ); } + +#[test] +fn hover_deref() { + check( + r#" +//- minicore: deref + +struct Struct(usize); + +impl core::ops::Deref for Struct { + type Target = usize; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +fn f() { + $0*Struct(0); +} +"#, + expect![[r#" + *** + + ```rust + test::Struct + ``` + + ```rust + fn deref(&self) -> &Self::Target + ``` + "#]], + ); +} diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 5aae669aa4d6..ed19784d1fa4 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -100,7 +100,7 @@ pub enum InlayTooltip { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Toggle inlay hints* +// | VS Code | **rust-analyzer: Toggle inlay hints* // |=== // // image::https://user-images.githubusercontent.com/48062697/113020660-b5f98b80-917a-11eb-8d70-3be3fd558cdd.png[] diff --git a/crates/ide/src/join_lines.rs b/crates/ide/src/join_lines.rs index 08621addeef4..edc48e84d725 100644 --- a/crates/ide/src/join_lines.rs +++ b/crates/ide/src/join_lines.rs @@ -28,7 +28,7 @@ pub struct JoinLinesConfig { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Join lines** +// | VS Code | **rust-analyzer: Join lines** // |=== // // image::https://user-images.githubusercontent.com/48062697/113020661-b6922200-917a-11eb-87c4-b75acc028f11.gif[] diff --git a/crates/ide/src/matching_brace.rs b/crates/ide/src/matching_brace.rs index da70cecdd8e1..6e8a6d020cc7 100644 --- a/crates/ide/src/matching_brace.rs +++ b/crates/ide/src/matching_brace.rs @@ -12,7 +12,7 @@ use syntax::{ // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Find matching brace** +// | VS Code | **rust-analyzer: Find matching brace** // |=== // // image::https://user-images.githubusercontent.com/48062697/113065573-04298180-91b1-11eb-8dec-d4e2a202f304.gif[] diff --git a/crates/ide/src/moniker.rs b/crates/ide/src/moniker.rs index 6bab9fa1ebbb..4f758967b461 100644 --- a/crates/ide/src/moniker.rs +++ b/crates/ide/src/moniker.rs @@ -90,7 +90,7 @@ pub(crate) fn moniker( .descend_into_macros(original_token.clone()) .into_iter() .filter_map(|token| { - IdentClass::classify_token(sema, &token).map(IdentClass::definitions).map(|it| { + IdentClass::classify_token(sema, &token).map(IdentClass::definitions_no_ops).map(|it| { it.into_iter().flat_map(|def| def_to_moniker(sema.db, def, current_crate)) }) }) diff --git a/crates/ide/src/move_item.rs b/crates/ide/src/move_item.rs index 02e9fb8b5e28..ffc4bdd7da33 100644 --- a/crates/ide/src/move_item.rs +++ b/crates/ide/src/move_item.rs @@ -19,8 +19,8 @@ pub enum Direction { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Move item up** -// | VS Code | **Rust Analyzer: Move item down** +// | VS Code | **rust-analyzer: Move item up** +// | VS Code | **rust-analyzer: Move item down** // |=== // // image::https://user-images.githubusercontent.com/48062697/113065576-04298180-91b1-11eb-91ce-4505e99ed598.gif[] diff --git a/crates/ide/src/parent_module.rs b/crates/ide/src/parent_module.rs index 9b1f480446aa..8f3cc86873f5 100644 --- a/crates/ide/src/parent_module.rs +++ b/crates/ide/src/parent_module.rs @@ -18,7 +18,7 @@ use crate::NavigationTarget; // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Locate parent module** +// | VS Code | **rust-analyzer: Locate parent module** // |=== // // image::https://user-images.githubusercontent.com/48062697/113065580-04c21800-91b1-11eb-9a32-00086161c0bd.gif[] diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs index bec770ed99f1..b0853b10fde2 100644 --- a/crates/ide/src/runnables.rs +++ b/crates/ide/src/runnables.rs @@ -116,7 +116,7 @@ impl Runnable { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Run** +// | VS Code | **rust-analyzer: Run** // |=== // image::https://user-images.githubusercontent.com/48062697/113065583-055aae80-91b1-11eb-958f-d67efcaf6a2f.gif[] pub(crate) fn runnables(db: &RootDatabase, file_id: FileId) -> Vec { @@ -202,7 +202,7 @@ pub(crate) fn runnables(db: &RootDatabase, file_id: FileId) -> Vec { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Peek related tests** +// | VS Code | **rust-analyzer: Peek related tests** // |=== pub(crate) fn related_tests( db: &RootDatabase, @@ -373,11 +373,13 @@ pub(crate) fn runnable_impl( let adt_name = ty.as_adt()?.name(sema.db); let mut ty_args = ty.type_arguments().peekable(); let params = if ty_args.peek().is_some() { - format!("<{}>", ty_args.format_with(", ", |ty, cb| cb(&ty.display(sema.db)))) + format!("<{}>", ty_args.format_with(",", |ty, cb| cb(&ty.display(sema.db)))) } else { String::new() }; - let test_id = TestId::Path(format!("{}{}", adt_name, params)); + let mut test_id = format!("{}{}", adt_name, params); + test_id.retain(|c| c != ' '); + let test_id = TestId::Path(test_id); Some(Runnable { use_name_in_title: false, nav, kind: RunnableKind::DocTest { test_id }, cfg }) } @@ -441,10 +443,11 @@ fn module_def_doctest(db: &RootDatabase, def: Definition) -> Option { format_to!( path, "<{}>", - ty_args.format_with(", ", |ty, cb| cb(&ty.display(db))) + ty_args.format_with(",", |ty, cb| cb(&ty.display(db))) ); } format_to!(path, "::{}", def_name); + path.retain(|c| c != ' '); return Some(path); } } @@ -2067,13 +2070,23 @@ mod tests { $0 struct Foo; +/// ``` +/// ``` impl Foo { /// ```rust /// ```` fn t() {} } + +/// ``` +/// ``` +impl Foo, ()> { + /// ``` + /// ``` + fn t() {} +} "#, - &[DocTest], + &[DocTest, DocTest, DocTest, DocTest], expect![[r#" [ Runnable { @@ -2082,12 +2095,64 @@ impl Foo { file_id: FileId( 0, ), - full_range: 47..85, + full_range: 20..103, + focus_range: 47..56, + name: "impl", + kind: Impl, + }, + kind: DocTest { + test_id: Path( + "Foo", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 63..101, name: "t", }, kind: DocTest { test_id: Path( - "Foo::t", + "Foo::t", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 105..188, + focus_range: 126..146, + name: "impl", + kind: Impl, + }, + kind: DocTest { + test_id: Path( + "Foo,()>", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 153..186, + name: "t", + }, + kind: DocTest { + test_id: Path( + "Foo,()>::t", ), }, cfg: None, diff --git a/crates/ide/src/shuffle_crate_graph.rs b/crates/ide/src/shuffle_crate_graph.rs index 15cb89dcce95..2d86627643d7 100644 --- a/crates/ide/src/shuffle_crate_graph.rs +++ b/crates/ide/src/shuffle_crate_graph.rs @@ -12,7 +12,7 @@ use ide_db::{ // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Shuffle Crate Graph** +// | VS Code | **rust-analyzer: Shuffle Crate Graph** // |=== pub(crate) fn shuffle_crate_graph(db: &mut RootDatabase) { let crate_graph = db.crate_graph(); diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index d74b640415c7..cc79ee55b7da 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -204,7 +204,7 @@ impl StaticIndex<'_> { fn get_definition(sema: &Semantics<'_, RootDatabase>, token: SyntaxToken) -> Option { for token in sema.descend_into_macros(token) { - let def = IdentClass::classify_token(sema, &token).map(IdentClass::definitions); + let def = IdentClass::classify_token(sema, &token).map(IdentClass::definitions_no_ops); if let Some(&[x]) = def.as_deref() { return Some(x); } else { diff --git a/crates/ide/src/status.rs b/crates/ide/src/status.rs index 3191870eb5e8..32e39f82a0e9 100644 --- a/crates/ide/src/status.rs +++ b/crates/ide/src/status.rs @@ -29,7 +29,7 @@ fn macro_syntax_tree_stats(db: &RootDatabase) -> SyntaxTreeStats { // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Status** +// | VS Code | **rust-analyzer: Status** // |=== // image::https://user-images.githubusercontent.com/48062697/113065584-05f34500-91b1-11eb-98cc-5c196f76be7f.gif[] pub(crate) fn status(db: &RootDatabase, file_id: Option) -> String { diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs index 99be7c664868..382735cb368d 100644 --- a/crates/ide/src/syntax_highlighting/tests.rs +++ b/crates/ide/src/syntax_highlighting/tests.rs @@ -958,7 +958,7 @@ pub struct Struct; #[test] #[cfg_attr( - all(unix, not(target_pointer_width = "64")), + not(all(unix, target_pointer_width = "64")), ignore = "depends on `DefaultHasher` outputs" )] fn test_rainbow_highlighting() { diff --git a/crates/ide/src/syntax_tree.rs b/crates/ide/src/syntax_tree.rs index 9003e7cd34d0..4256fea0f81e 100644 --- a/crates/ide/src/syntax_tree.rs +++ b/crates/ide/src/syntax_tree.rs @@ -12,7 +12,7 @@ use syntax::{ // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Show Syntax Tree** +// | VS Code | **rust-analyzer: Show Syntax Tree** // |=== // image::https://user-images.githubusercontent.com/48062697/113065586-068bdb80-91b1-11eb-9507-fee67f9f45a0.gif[] pub(crate) fn syntax_tree( diff --git a/crates/ide/src/view_crate_graph.rs b/crates/ide/src/view_crate_graph.rs index 51291a64532f..bf7b7efe2822 100644 --- a/crates/ide/src/view_crate_graph.rs +++ b/crates/ide/src/view_crate_graph.rs @@ -16,7 +16,7 @@ use ide_db::{ // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: View Crate Graph** +// | VS Code | **rust-analyzer: View Crate Graph** // |=== pub(crate) fn view_crate_graph(db: &RootDatabase, full: bool) -> Result { let crate_graph = db.crate_graph(); diff --git a/crates/ide/src/view_hir.rs b/crates/ide/src/view_hir.rs index 7312afe5310b..bf0835ed7e0d 100644 --- a/crates/ide/src/view_hir.rs +++ b/crates/ide/src/view_hir.rs @@ -8,7 +8,7 @@ use syntax::{algo::find_node_at_offset, ast, AstNode}; // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: View Hir** +// | VS Code | **rust-analyzer: View Hir** // |=== // image::https://user-images.githubusercontent.com/48062697/113065588-068bdb80-91b1-11eb-9a78-0b4ef1e972fb.gif[] pub(crate) fn view_hir(db: &RootDatabase, position: FilePosition) -> String { diff --git a/crates/ide/src/view_item_tree.rs b/crates/ide/src/view_item_tree.rs index 3dc03085d651..9c1f93356ee2 100644 --- a/crates/ide/src/view_item_tree.rs +++ b/crates/ide/src/view_item_tree.rs @@ -9,7 +9,7 @@ use ide_db::RootDatabase; // |=== // | Editor | Action Name // -// | VS Code | **Rust Analyzer: Debug ItemTree** +// | VS Code | **rust-analyzer: Debug ItemTree** // |=== pub(crate) fn view_item_tree(db: &RootDatabase, file_id: FileId) -> String { db.file_item_tree(file_id.into()).pretty_print() diff --git a/crates/paths/src/lib.rs b/crates/paths/src/lib.rs index 025093f4a94a..6ae23ac841ad 100644 --- a/crates/paths/src/lib.rs +++ b/crates/paths/src/lib.rs @@ -106,6 +106,14 @@ impl AsRef for AbsPath { } } +impl ToOwned for AbsPath { + type Owned = AbsPathBuf; + + fn to_owned(&self) -> Self::Owned { + AbsPathBuf(self.0.to_owned()) + } +} + impl<'a> TryFrom<&'a Path> for &'a AbsPath { type Error = &'a Path; fn try_from(path: &'a Path) -> Result<&'a AbsPath, &'a Path> { diff --git a/crates/proc-macro-api/src/lib.rs b/crates/proc-macro-api/src/lib.rs index d7010e825aa9..a3ea05f4aff8 100644 --- a/crates/proc-macro-api/src/lib.rs +++ b/crates/proc-macro-api/src/lib.rs @@ -60,7 +60,7 @@ impl MacroDylib { let info = version::read_dylib_info(&path)?; if info.version.0 < 1 || info.version.1 < 47 { - let msg = format!("proc-macro {} built by {:#?} is not supported by Rust Analyzer, please update your rust version.", path.display(), info); + let msg = format!("proc-macro {} built by {:#?} is not supported by rust-analyzer, please update your Rust version.", path.display(), info); return Err(io::Error::new(io::ErrorKind::InvalidData, msg)); } diff --git a/crates/proc-macro-srv/src/abis/mod.rs b/crates/proc-macro-srv/src/abis/mod.rs index bcf3f1184cf6..705d09ea9458 100644 --- a/crates/proc-macro-srv/src/abis/mod.rs +++ b/crates/proc-macro-srv/src/abis/mod.rs @@ -5,7 +5,7 @@ //! compiler into submodules of this module (e.g proc_macro_srv::abis::abi_1_47). //! //! All of these ABIs are subsumed in the `Abi` enum, which exposes a simple -//! interface the rest of rust analyzer can use to talk to the macro +//! interface the rest of rust-analyzer can use to talk to the macro //! provider. //! //! # Adding a new ABI diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index 597880c2ca21..eed955b42daa 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -19,7 +19,7 @@ use crate::{utf8_stdout, ManifestPath}; /// [`CargoWorkspace`] represents the logical structure of, well, a Cargo /// workspace. It pretty closely mirrors `cargo metadata` output. /// -/// Note that internally, rust analyzer uses a different structure: +/// Note that internally, rust-analyzer uses a different structure: /// `CrateGraph`. `CrateGraph` is lower-level: it knows only about the crates, /// while this knows about `Packages` & `Targets`: purely cargo-related /// concepts. diff --git a/crates/rust-analyzer/src/diagnostics.rs b/crates/rust-analyzer/src/diagnostics.rs index 202a01adf710..09150c77d7dd 100644 --- a/crates/rust-analyzer/src/diagnostics.rs +++ b/crates/rust-analyzer/src/diagnostics.rs @@ -8,7 +8,7 @@ use rustc_hash::{FxHashMap, FxHashSet}; use crate::lsp_ext; -pub(crate) type CheckFixes = Arc>>; +pub(crate) type CheckFixes = Arc>>>; #[derive(Debug, Default, Clone)] pub struct DiagnosticsMapConfig { @@ -22,7 +22,7 @@ pub(crate) struct DiagnosticCollection { // FIXME: should be FxHashMap> pub(crate) native: FxHashMap>, // FIXME: should be Vec - pub(crate) check: FxHashMap>, + pub(crate) check: FxHashMap>>, pub(crate) check_fixes: CheckFixes, changes: FxHashSet, } @@ -35,9 +35,19 @@ pub(crate) struct Fix { } impl DiagnosticCollection { - pub(crate) fn clear_check(&mut self) { + pub(crate) fn clear_check(&mut self, flycheck_id: usize) { + if let Some(it) = Arc::make_mut(&mut self.check_fixes).get_mut(&flycheck_id) { + it.clear(); + } + if let Some(it) = self.check.get_mut(&flycheck_id) { + self.changes.extend(it.drain().map(|(key, _value)| key)); + } + } + + pub(crate) fn clear_check_all(&mut self) { Arc::make_mut(&mut self.check_fixes).clear(); - self.changes.extend(self.check.drain().map(|(key, _value)| key)) + self.changes + .extend(self.check.values_mut().flat_map(|it| it.drain().map(|(key, _value)| key))) } pub(crate) fn clear_native_for(&mut self, file_id: FileId) { @@ -47,11 +57,12 @@ impl DiagnosticCollection { pub(crate) fn add_check_diagnostic( &mut self, + flycheck_id: usize, file_id: FileId, diagnostic: lsp_types::Diagnostic, fix: Option, ) { - let diagnostics = self.check.entry(file_id).or_default(); + let diagnostics = self.check.entry(flycheck_id).or_default().entry(file_id).or_default(); for existing_diagnostic in diagnostics.iter() { if are_diagnostics_equal(existing_diagnostic, &diagnostic) { return; @@ -59,7 +70,7 @@ impl DiagnosticCollection { } let check_fixes = Arc::make_mut(&mut self.check_fixes); - check_fixes.entry(file_id).or_default().extend(fix); + check_fixes.entry(flycheck_id).or_default().entry(file_id).or_default().extend(fix); diagnostics.push(diagnostic); self.changes.insert(file_id); } @@ -89,7 +100,8 @@ impl DiagnosticCollection { file_id: FileId, ) -> impl Iterator { let native = self.native.get(&file_id).into_iter().flatten(); - let check = self.check.get(&file_id).into_iter().flatten(); + let check = + self.check.values().filter_map(move |it| it.get(&file_id)).into_iter().flatten(); native.chain(check) } diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index 8f881cba4dbd..b5f6aef2e1a8 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs @@ -8,7 +8,7 @@ use std::{sync::Arc, time::Instant}; use crossbeam_channel::{unbounded, Receiver, Sender}; use flycheck::FlycheckHandle; use ide::{Analysis, AnalysisHost, Cancellable, Change, FileId}; -use ide_db::base_db::{CrateId, FileLoader, SourceDatabase}; +use ide_db::base_db::{CrateId, FileLoader, SourceDatabase, SourceDatabaseExt}; use lsp_types::{SemanticTokens, Url}; use parking_lot::{Mutex, RwLock}; use proc_macro_api::ProcMacroServer; @@ -176,7 +176,7 @@ impl GlobalState { pub(crate) fn process_changes(&mut self) -> bool { let _p = profile::span("GlobalState::process_changes"); - let mut fs_changes = Vec::new(); + let mut fs_refresh_changes = Vec::new(); // A file was added or deleted let mut has_structure_changes = false; @@ -192,15 +192,14 @@ impl GlobalState { if let Some(path) = vfs.file_path(file.file_id).as_path() { let path = path.to_path_buf(); if reload::should_refresh_for_change(&path, file.change_kind) { - self.fetch_workspaces_queue - .request_op(format!("vfs file change: {}", path.display())); + fs_refresh_changes.push((path, file.file_id)); } - fs_changes.push((path, file.change_kind)); if file.is_created_or_deleted() { has_structure_changes = true; } } + // Clear native diagnostics when their file gets deleted if !file.exists() { self.diagnostics.clear_native_for(file.file_id); } @@ -226,14 +225,25 @@ impl GlobalState { self.analysis_host.apply_change(change); - let raw_database = &self.analysis_host.raw_database(); - self.proc_macro_changed = - changed_files.iter().filter(|file| !file.is_created_or_deleted()).any(|file| { - let crates = raw_database.relevant_crates(file.file_id); - let crate_graph = raw_database.crate_graph(); + { + let raw_database = self.analysis_host.raw_database(); + let workspace_structure_change = + fs_refresh_changes.into_iter().find(|&(_, file_id)| { + !raw_database.source_root(raw_database.file_source_root(file_id)).is_library + }); + if let Some((path, _)) = workspace_structure_change { + self.fetch_workspaces_queue + .request_op(format!("workspace vfs file change: {}", path.display())); + } + self.proc_macro_changed = + changed_files.iter().filter(|file| !file.is_created_or_deleted()).any(|file| { + let crates = raw_database.relevant_crates(file.file_id); + let crate_graph = raw_database.crate_graph(); + + crates.iter().any(|&krate| crate_graph[krate].is_proc_macro) + }); + } - crates.iter().any(|&krate| crate_graph[krate].is_proc_macro) - }); true } diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index deb777c952fd..47daa732d5d3 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -1094,7 +1094,9 @@ pub(crate) fn handle_code_action( } // Fixes from `cargo check`. - for fix in snap.check_fixes.get(&frange.file_id).into_iter().flatten() { + for fix in + snap.check_fixes.values().filter_map(|it| it.get(&frange.file_id)).into_iter().flatten() + { // FIXME: this mapping is awkward and shouldn't exist. Refactor // `snap.check_fixes` to not convert to LSP prematurely. let intersect_fix_range = fix diff --git a/crates/rust-analyzer/src/integrated_benchmarks.rs b/crates/rust-analyzer/src/integrated_benchmarks.rs index 47cdd8dfc75d..e49a98685a7f 100644 --- a/crates/rust-analyzer/src/integrated_benchmarks.rs +++ b/crates/rust-analyzer/src/integrated_benchmarks.rs @@ -6,8 +6,8 @@ //! code here exercise this specific completion, and thus have a fast //! edit/compile/test cycle. //! -//! Note that "Rust Analyzer: Run" action does not allow running a single test -//! in release mode in VS Code. There's however "Rust Analyzer: Copy Run Command Line" +//! Note that "rust-analyzer: Run" action does not allow running a single test +//! in release mode in VS Code. There's however "rust-analyzer: Copy Run Command Line" //! which you can use to paste the command in terminal and add `--release` manually. use std::sync::Arc; diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 5845cf712c89..b504c2487826 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -2,13 +2,15 @@ //! requests/replies and notifications back to the client. use std::{ fmt, + ops::Deref, sync::Arc, time::{Duration, Instant}, }; use always_assert::always; use crossbeam_channel::{select, Receiver}; -use ide_db::base_db::{SourceDatabaseExt, VfsPath}; +use ide_db::base_db::{SourceDatabase, SourceDatabaseExt, VfsPath}; +use itertools::Itertools; use lsp_server::{Connection, Notification, Request}; use lsp_types::notification::Notification as _; use vfs::{ChangeKind, FileId}; @@ -371,7 +373,7 @@ impl GlobalState { let _p = profile::span("GlobalState::handle_event/flycheck"); loop { match task { - flycheck::Message::AddDiagnostic { workspace_root, diagnostic } => { + flycheck::Message::AddDiagnostic { id, workspace_root, diagnostic } => { let snap = self.snapshot(); let diagnostics = crate::diagnostics::to_proto::map_rust_diagnostic_to_lsp( @@ -383,6 +385,7 @@ impl GlobalState { for diag in diagnostics { match url_to_file_id(&self.vfs.read().0, &diag.url) { Ok(file_id) => self.diagnostics.add_check_diagnostic( + id, file_id, diag.diagnostic, diag.fix, @@ -400,7 +403,7 @@ impl GlobalState { flycheck::Message::Progress { id, progress } => { let (state, message) = match progress { flycheck::Progress::DidStart => { - self.diagnostics.clear_check(); + self.diagnostics.clear_check(id); (Progress::Begin, None) } flycheck::Progress::DidCheckCrate(target) => { @@ -444,7 +447,10 @@ impl GlobalState { let memdocs_added_or_removed = self.mem_docs.take_changes(); if self.is_quiescent() { - if !was_quiescent { + if !was_quiescent + && !self.fetch_workspaces_queue.op_requested() + && !self.fetch_build_data_queue.op_requested() + { for flycheck in &self.flycheck { flycheck.update(); } @@ -734,13 +740,76 @@ impl GlobalState { Ok(()) })? .on::(|this, params| { - for flycheck in &this.flycheck { - flycheck.update(); + let mut updated = false; + if let Ok(vfs_path) = from_proto::vfs_path(¶ms.text_document.uri) { + let (vfs, _) = &*this.vfs.read(); + if let Some(file_id) = vfs.file_id(&vfs_path) { + let analysis = this.analysis_host.analysis(); + // Crates containing or depending on the saved file + let crate_ids: Vec<_> = analysis + .crate_for(file_id)? + .into_iter() + .flat_map(|id| { + this.analysis_host + .raw_database() + .crate_graph() + .transitive_rev_deps(id) + }) + .sorted() + .unique() + .collect(); + + let crate_root_paths: Vec<_> = crate_ids + .iter() + .filter_map(|&crate_id| { + analysis + .crate_root(crate_id) + .map(|file_id| { + vfs.file_path(file_id).as_path().map(ToOwned::to_owned) + }) + .transpose() + }) + .collect::>()?; + let crate_root_paths: Vec<_> = + crate_root_paths.iter().map(Deref::deref).collect(); + + // Find all workspaces that have at least one target containing the saved file + let workspace_ids = + this.workspaces.iter().enumerate().filter(|(_, ws)| match ws { + project_model::ProjectWorkspace::Cargo { cargo, .. } => { + cargo.packages().any(|pkg| { + cargo[pkg].targets.iter().any(|&it| { + crate_root_paths.contains(&cargo[it].root.as_path()) + }) + }) + } + project_model::ProjectWorkspace::Json { project, .. } => project + .crates() + .any(|(c, _)| crate_ids.iter().any(|&crate_id| crate_id == c)), + project_model::ProjectWorkspace::DetachedFiles { .. } => false, + }); + + // Find and trigger corresponding flychecks + for flycheck in &this.flycheck { + for (id, _) in workspace_ids.clone() { + if id == flycheck.id() { + updated = true; + flycheck.update(); + continue; + } + } + } + } + if let Some(abs_path) = vfs_path.as_path() { + if reload::should_refresh_for_change(&abs_path, ChangeKind::Modify) { + this.fetch_workspaces_queue + .request_op(format!("DidSaveTextDocument {}", abs_path.display())); + } + } } - if let Ok(abs_path) = from_proto::abs_path(¶ms.text_document.uri) { - if reload::should_refresh_for_change(&abs_path, ChangeKind::Modify) { - this.fetch_workspaces_queue - .request_op(format!("DidSaveTextDocument {}", abs_path.display())); + if !updated { + for flycheck in &this.flycheck { + flycheck.update(); } } Ok(()) diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index eaab275bc68a..49ccad71a10e 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -196,10 +196,7 @@ impl GlobalState { } if let Err(error) = self.fetch_build_data_error() { - self.show_and_log_error( - "rust-analyzer failed to run build scripts".to_string(), - Some(error), - ); + self.show_and_log_error("failed to run build scripts".to_string(), Some(error)); } let workspaces = self @@ -308,6 +305,7 @@ impl GlobalState { if self.proc_macro_clients.is_empty() { if let Some((path, args)) = self.config.proc_macro_srv() { + tracing::info!("Spawning proc-macro servers"); self.proc_macro_clients = self .workspaces .iter() @@ -316,20 +314,20 @@ impl GlobalState { let mut path = path.clone(); if let ProjectWorkspace::Cargo { sysroot, .. } = ws { - tracing::info!("Found a cargo workspace..."); + tracing::debug!("Found a cargo workspace..."); if let Some(sysroot) = sysroot.as_ref() { - tracing::info!("Found a cargo workspace with a sysroot..."); + tracing::debug!("Found a cargo workspace with a sysroot..."); let server_path = sysroot.root().join("libexec").join(&standalone_server_name); if std::fs::metadata(&server_path).is_ok() { - tracing::info!( + tracing::debug!( "And the server exists at {}", server_path.display() ); path = server_path; args = vec![]; } else { - tracing::info!( + tracing::debug!( "And the server does not exist at {}", server_path.display() ); @@ -337,14 +335,10 @@ impl GlobalState { } } - tracing::info!( - "Using proc-macro server at {} with args {:?}", - path.display(), - args - ); + tracing::info!(?args, "Using proc-macro server at {}", path.display(),); ProcMacroServer::spawn(path.clone(), args.clone()).map_err(|err| { let error = format!( - "Failed to run proc_macro_srv from path {}, error: {:?}", + "Failed to run proc-macro server from path {}, error: {:?}", path.display(), err ); @@ -458,7 +452,7 @@ impl GlobalState { Some(it) => it, None => { self.flycheck = Vec::new(); - self.diagnostics.clear_check(); + self.diagnostics.clear_check_all(); return; } }; @@ -621,7 +615,10 @@ pub(crate) fn load_proc_macro( }; let expander: Arc = if dummy_replace.iter().any(|replace| &**replace == name) { - Arc::new(DummyExpander) + match kind { + ProcMacroKind::Attr => Arc::new(IdentityExpander), + _ => Arc::new(EmptyExpander), + } } else { Arc::new(Expander(expander)) }; @@ -647,11 +644,11 @@ pub(crate) fn load_proc_macro( } } - /// Dummy identity expander, used for proc-macros that are deliberately ignored by the user. + /// Dummy identity expander, used for attribute proc-macros that are deliberately ignored by the user. #[derive(Debug)] - struct DummyExpander; + struct IdentityExpander; - impl ProcMacroExpander for DummyExpander { + impl ProcMacroExpander for IdentityExpander { fn expand( &self, subtree: &tt::Subtree, @@ -661,27 +658,46 @@ pub(crate) fn load_proc_macro( Ok(subtree.clone()) } } + + /// Empty expander, used for proc-macros that are deliberately ignored by the user. + #[derive(Debug)] + struct EmptyExpander; + + impl ProcMacroExpander for EmptyExpander { + fn expand( + &self, + _: &tt::Subtree, + _: Option<&tt::Subtree>, + _: &Env, + ) -> Result { + Ok(tt::Subtree::default()) + } + } } pub(crate) fn should_refresh_for_change(path: &AbsPath, change_kind: ChangeKind) -> bool { const IMPLICIT_TARGET_FILES: &[&str] = &["build.rs", "src/main.rs", "src/lib.rs"]; const IMPLICIT_TARGET_DIRS: &[&str] = &["src/bin", "examples", "tests", "benches"]; - let file_name = path.file_name().unwrap_or_default(); - if file_name == "Cargo.toml" || file_name == "Cargo.lock" { + let file_name = match path.file_name().unwrap_or_default().to_str() { + Some(it) => it, + None => return false, + }; + + if let "Cargo.toml" | "Cargo.lock" = file_name { return true; } if change_kind == ChangeKind::Modify { return false; } + + // .cargo/config{.toml} if path.extension().unwrap_or_default() != "rs" { - if (file_name == "config.toml" || file_name == "config") - && path.parent().map(|parent| parent.as_ref().ends_with(".cargo")) == Some(true) - { - return true; - } - return false; + let is_cargo_config = matches!(file_name, "config.toml" | "config") + && path.parent().map(|parent| parent.as_ref().ends_with(".cargo")).unwrap_or(false); + return is_cargo_config; } + if IMPLICIT_TARGET_FILES.iter().any(|it| path.as_ref().ends_with(it)) { return true; } diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index 18f95925d9a4..58099a58de05 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -13,9 +13,8 @@ use xshell::cmd; fn check_code_formatting() { let sh = &Shell::new().unwrap(); sh.change_dir(sourcegen::project_root()); - sh.set_var("RUSTUP_TOOLCHAIN", "stable"); - let out = cmd!(sh, "rustfmt --version").read().unwrap(); + let out = cmd!(sh, "rustup run stable rustfmt --version").read().unwrap(); if !out.contains("stable") { panic!( "Failed to run rustfmt from toolchain 'stable'. \ @@ -23,9 +22,9 @@ fn check_code_formatting() { ) } - let res = cmd!(sh, "cargo fmt -- --check").run(); + let res = cmd!(sh, "rustup run stable cargo fmt -- --check").run(); if res.is_err() { - let _ = cmd!(sh, "cargo fmt").run(); + let _ = cmd!(sh, "rustup run stable cargo fmt").run(); } res.unwrap() } diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index ce0224ec744d..4e0ee63f32f2 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -136,7 +136,7 @@ impl fmt::Display for Location { } fn ensure_rustfmt(sh: &Shell) { - let version = cmd!(sh, "rustfmt --version").read().unwrap_or_default(); + let version = cmd!(sh, "rustup run stable rustfmt --version").read().unwrap_or_default(); if !version.contains("stable") { panic!( "Failed to run rustfmt from toolchain 'stable'. \ @@ -147,13 +147,15 @@ fn ensure_rustfmt(sh: &Shell) { pub fn reformat(text: String) -> String { let sh = Shell::new().unwrap(); - sh.set_var("RUSTUP_TOOLCHAIN", "stable"); ensure_rustfmt(&sh); let rustfmt_toml = project_root().join("rustfmt.toml"); - let mut stdout = cmd!(sh, "rustfmt --config-path {rustfmt_toml} --config fn_single_line=true") - .stdin(text) - .read() - .unwrap(); + let mut stdout = cmd!( + sh, + "rustup run stable rustfmt --config-path {rustfmt_toml} --config fn_single_line=true" + ) + .stdin(text) + .read() + .unwrap(); if !stdout.ends_with('\n') { stdout.push('\n'); } diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs index e3e928aecd4a..8efd58e2c39a 100644 --- a/crates/syntax/src/ast/edit_in_place.rs +++ b/crates/syntax/src/ast/edit_in_place.rs @@ -11,7 +11,7 @@ use crate::{ ted::{self, Position}, AstNode, AstToken, Direction, SyntaxKind::{ATTR, COMMENT, WHITESPACE}, - SyntaxNode, + SyntaxNode, SyntaxToken, }; use super::HasName; @@ -506,19 +506,7 @@ impl ast::RecordExprFieldList { let position = match self.fields().last() { Some(last_field) => { - let comma = match last_field - .syntax() - .siblings_with_tokens(Direction::Next) - .filter_map(|it| it.into_token()) - .find(|it| it.kind() == T![,]) - { - Some(it) => it, - None => { - let comma = ast::make::token(T![,]); - ted::insert(Position::after(last_field.syntax()), &comma); - comma - } - }; + let comma = get_or_insert_comma_after(last_field.syntax()); Position::after(comma) } None => match self.l_curly_token() { @@ -579,19 +567,8 @@ impl ast::RecordPatFieldList { let position = match self.fields().last() { Some(last_field) => { - let comma = match last_field - .syntax() - .siblings_with_tokens(Direction::Next) - .filter_map(|it| it.into_token()) - .find(|it| it.kind() == T![,]) - { - Some(it) => it, - None => { - let comma = ast::make::token(T![,]); - ted::insert(Position::after(last_field.syntax()), &comma); - comma - } - }; + let syntax = last_field.syntax(); + let comma = get_or_insert_comma_after(syntax); Position::after(comma) } None => match self.l_curly_token() { @@ -606,12 +583,53 @@ impl ast::RecordPatFieldList { } } } + +fn get_or_insert_comma_after(syntax: &SyntaxNode) -> SyntaxToken { + let comma = match syntax + .siblings_with_tokens(Direction::Next) + .filter_map(|it| it.into_token()) + .find(|it| it.kind() == T![,]) + { + Some(it) => it, + None => { + let comma = ast::make::token(T![,]); + ted::insert(Position::after(syntax), &comma); + comma + } + }; + comma +} + impl ast::StmtList { pub fn push_front(&self, statement: ast::Stmt) { ted::insert(Position::after(self.l_curly_token().unwrap()), statement.syntax()); } } +impl ast::VariantList { + pub fn add_variant(&self, variant: ast::Variant) { + let (indent, position) = match self.variants().last() { + Some(last_item) => ( + IndentLevel::from_node(last_item.syntax()), + Position::after(get_or_insert_comma_after(last_item.syntax())), + ), + None => match self.l_curly_token() { + Some(l_curly) => { + normalize_ws_between_braces(self.syntax()); + (IndentLevel::from_token(&l_curly) + 1, Position::after(&l_curly)) + } + None => (IndentLevel::single(), Position::last_child_of(self.syntax())), + }, + }; + let elements: Vec> = vec![ + make::tokens::whitespace(&format!("{}{}", "\n", indent)).into(), + variant.syntax().clone().into(), + ast::make::token(T![,]).into(), + ]; + ted::insert_all(position, elements); + } +} + fn normalize_ws_between_braces(node: &SyntaxNode) -> Option<()> { let l = node .children_with_tokens() @@ -661,6 +679,9 @@ impl Indent for N {} mod tests { use std::fmt; + use stdx::trim_indent; + use test_utils::assert_eq_text; + use crate::SourceFile; use super::*; @@ -714,4 +735,100 @@ mod tests { }", ); } + + #[test] + fn add_variant_to_empty_enum() { + let variant = make::variant(make::name("Bar"), None).clone_for_update(); + + check_add_variant( + r#" +enum Foo {} +"#, + r#" +enum Foo { + Bar, +} +"#, + variant, + ); + } + + #[test] + fn add_variant_to_non_empty_enum() { + let variant = make::variant(make::name("Baz"), None).clone_for_update(); + + check_add_variant( + r#" +enum Foo { + Bar, +} +"#, + r#" +enum Foo { + Bar, + Baz, +} +"#, + variant, + ); + } + + #[test] + fn add_variant_with_tuple_field_list() { + let variant = make::variant( + make::name("Baz"), + Some(ast::FieldList::TupleFieldList(make::tuple_field_list(std::iter::once( + make::tuple_field(None, make::ty("bool")), + )))), + ) + .clone_for_update(); + + check_add_variant( + r#" +enum Foo { + Bar, +} +"#, + r#" +enum Foo { + Bar, + Baz(bool), +} +"#, + variant, + ); + } + + #[test] + fn add_variant_with_record_field_list() { + let variant = make::variant( + make::name("Baz"), + Some(ast::FieldList::RecordFieldList(make::record_field_list(std::iter::once( + make::record_field(None, make::name("x"), make::ty("bool")), + )))), + ) + .clone_for_update(); + + check_add_variant( + r#" +enum Foo { + Bar, +} +"#, + r#" +enum Foo { + Bar, + Baz { x: bool }, +} +"#, + variant, + ); + } + + fn check_add_variant(before: &str, expected: &str, variant: ast::Variant) { + let enum_ = ast_mut_from_text::(before); + enum_.variant_list().map(|it| it.add_variant(variant)); + let after = enum_.to_string(); + assert_eq_text!(&trim_indent(expected.trim()), &trim_indent(&after.trim())); + } } diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index 5908dda8e638..037de876d45c 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs @@ -745,7 +745,10 @@ pub fn tuple_field(visibility: Option, ty: ast::Type) -> ast::T pub fn variant(name: ast::Name, field_list: Option) -> ast::Variant { let field_list = match field_list { None => String::new(), - Some(it) => format!("{}", it), + Some(it) => match it { + ast::FieldList::RecordFieldList(record) => format!(" {}", record), + ast::FieldList::TupleFieldList(tuple) => format!("{}", tuple), + }, }; ast_from_text(&format!("enum f {{ {}{} }}", name, field_list)) } diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index 7fa354c0c465..4f5e273a520a 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs @@ -1,4 +1,4 @@ -//! Syntax Tree library used throughout the rust analyzer. +//! Syntax Tree library used throughout the rust-analyzer. //! //! Properties: //! - easy and fast incremental re-parsing diff --git a/crates/vfs-notify/src/lib.rs b/crates/vfs-notify/src/lib.rs index 4d33a9afb963..d6d9c66159fe 100644 --- a/crates/vfs-notify/src/lib.rs +++ b/crates/vfs-notify/src/lib.rs @@ -40,12 +40,15 @@ impl loader::Handle for NotifyHandle { .expect("failed to spawn thread"); NotifyHandle { sender, _thread: thread } } + fn set_config(&mut self, config: loader::Config) { self.sender.send(Message::Config(config)).unwrap(); } + fn invalidate(&mut self, path: AbsPathBuf) { self.sender.send(Message::Invalidate(path)).unwrap(); } + fn load_sync(&mut self, path: &AbsPath) -> Option> { read(path) } @@ -70,6 +73,7 @@ impl NotifyActor { fn new(sender: loader::Sender) -> NotifyActor { NotifyActor { sender, watched_entries: Vec::new(), watcher: None } } + fn next_event(&self, receiver: &Receiver) -> Option { let watcher_receiver = self.watcher.as_ref().map(|(_, receiver)| receiver); select! { @@ -77,9 +81,10 @@ impl NotifyActor { recv(watcher_receiver.unwrap_or(&never())) -> it => Some(Event::NotifyEvent(it.unwrap())), } } + fn run(mut self, inbox: Receiver) { while let Some(event) = self.next_event(&inbox) { - tracing::debug!("vfs-notify event: {:?}", event); + tracing::debug!(?event, "vfs-notify event"); match event { Event::Message(msg) => match msg { Message::Config(config) => { diff --git a/docs/dev/README.md b/docs/dev/README.md index 76bbd1e91889..c7f152acc266 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -82,7 +82,7 @@ There's **"Run Extension (Debug Build)"** launch configuration for this in VS Co In general, I use one of the following workflows for fixing bugs and implementing features: If the problem concerns only internal parts of rust-analyzer (i.e. I don't need to touch the `rust-analyzer` crate or TypeScript code), there is a unit-test for it. -So, I use **Rust Analyzer: Run** action in VS Code to run this single test, and then just do printf-driven development/debugging. +So, I use **rust-analyzer: Run** action in VS Code to run this single test, and then just do printf-driven development/debugging. As a sanity check after I'm done, I use `cargo xtask install --server` and **Reload Window** action in VS Code to verify that the thing works as I expect. If the problem concerns only the VS Code extension, I use **Run Installed Extension** launch configuration from `launch.json`. @@ -152,11 +152,11 @@ To log all communication between the server and the client, there are two choice There are also several VS Code commands which might be of interest: -* `Rust Analyzer: Status` shows some memory-usage statistics. +* `rust-analyzer: Status` shows some memory-usage statistics. -* `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection. +* `rust-analyzer: Syntax Tree` shows syntax tree of the current file/selection. -* `Rust Analyzer: View Hir` shows the HIR expressions within the function containing the cursor. +* `rust-analyzer: View Hir` shows the HIR expressions within the function containing the cursor. You can hover over syntax nodes in the opened text file to see the appropriate rust code that it refers to and the rust editor will also highlight the proper diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index ea4035baf114..51e26c58a917 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md @@ -371,7 +371,7 @@ That is, rust-analyzer requires unwinding. ### Testing -Rust Analyzer has three interesting [system boundaries](https://www.tedinski.com/2018/04/10/making-tests-a-positive-influence-on-design.html) to concentrate tests on. +rust-analyzer has three interesting [system boundaries](https://www.tedinski.com/2018/04/10/making-tests-a-positive-influence-on-design.html) to concentrate tests on. The outermost boundary is the `rust-analyzer` crate, which defines an LSP interface in terms of stdio. We do integration testing of this component, by feeding it with a stream of LSP requests and checking responses. diff --git a/docs/dev/guide.md b/docs/dev/guide.md index 47ae3f3e6a90..808eb5d10bf4 100644 --- a/docs/dev/guide.md +++ b/docs/dev/guide.md @@ -63,7 +63,7 @@ Next, let's talk about what the inputs to the `Analysis` are, precisely. ## Inputs -Rust Analyzer never does any I/O itself, all inputs get passed explicitly via +rust-analyzer never does any I/O itself, all inputs get passed explicitly via the `AnalysisHost::apply_change` method, which accepts a single argument, a `Change`. [`Change`] is a builder for a single change "transaction", so it suffices to study its methods to understand all of the diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index 999a6437ab9e..c482fcbed0e0 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc @@ -479,7 +479,7 @@ You can follow instructions for installing < `${this.rootSection}.${opt}` - ); + private readonly requiresWorkspaceReloadOpts = [ + "serverPath", + "server", + // FIXME: This shouldn't be here, changing this setting should reload + // `continueCommentsOnNewline` behavior without restart + "typing", + ].map((opt) => `${this.rootSection}.${opt}`); private readonly requiresReloadOpts = [ "cargo", "procMacro", @@ -140,6 +144,10 @@ export class Config { return this.get("restartServerOnConfigChange"); } + get typingContinueCommentsOnNewline() { + return this.get("typing.continueCommentsOnNewline"); + } + get debug() { let sourceFileMap = this.get | "auto">("debug.sourceFileMap"); if (sourceFileMap !== "auto") { diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 9ae20ddc4ac4..d78b711a47a8 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -84,7 +84,9 @@ async function tryActivate(context: vscode.ExtensionContext): Promise diff --git a/lib/la-arena/src/lib.rs b/lib/la-arena/src/lib.rs index dadee43b1085..a3fe59e946ee 100644 --- a/lib/la-arena/src/lib.rs +++ b/lib/la-arena/src/lib.rs @@ -12,7 +12,7 @@ use std::{ }; mod map; -pub use map::ArenaMap; +pub use map::{ArenaMap, Entry, OccupiedEntry, VacantEntry}; /// The raw index of a value in an arena. #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -208,6 +208,16 @@ impl Arena { Arena { data: Vec::new() } } + /// Create a new empty arena with specific capacity. + /// + /// ``` + /// let arena: la_arena::Arena = la_arena::Arena::with_capacity(42); + /// assert!(arena.is_empty()); + /// ``` + pub fn with_capacity(capacity: usize) -> Arena { + Arena { data: Vec::with_capacity(capacity) } + } + /// Empties the arena, removing all contained values. /// /// ``` diff --git a/lib/la-arena/src/map.rs b/lib/la-arena/src/map.rs index d27f086d37bf..5f347e274500 100644 --- a/lib/la-arena/src/map.rs +++ b/lib/la-arena/src/map.rs @@ -11,12 +11,52 @@ pub struct ArenaMap { } impl ArenaMap, V> { + /// Creates a new empty map. + pub const fn new() -> Self { + Self { v: Vec::new(), _ty: PhantomData } + } + + /// Create a new empty map with specific capacity. + pub fn with_capacity(capacity: usize) -> Self { + Self { v: Vec::with_capacity(capacity), _ty: PhantomData } + } + + /// Reserves capacity for at least additional more elements to be inserted in the map. + pub fn reserve(&mut self, additional: usize) { + self.v.reserve(additional); + } + + /// Clears the map, removing all elements. + pub fn clear(&mut self) { + self.v.clear(); + } + + /// Shrinks the capacity of the map as much as possible. + pub fn shrink_to_fit(&mut self) { + let min_len = self.v.iter().rposition(|slot| slot.is_some()).map_or(0, |i| i + 1); + self.v.truncate(min_len); + self.v.shrink_to_fit(); + } + + /// Returns whether the map contains a value for the specified index. + pub fn contains_idx(&self, idx: Idx) -> bool { + matches!(self.v.get(Self::to_idx(idx)), Some(Some(_))) + } + + /// Removes an index from the map, returning the value at the index if the index was previously in the map. + pub fn remove(&mut self, idx: Idx) -> Option { + self.v.get_mut(Self::to_idx(idx))?.take() + } + /// Inserts a value associated with a given arena index into the map. - pub fn insert(&mut self, idx: Idx, t: V) { + /// + /// If the map did not have this index present, None is returned. + /// Otherwise, the value is updated, and the old value is returned. + pub fn insert(&mut self, idx: Idx, t: V) -> Option { let idx = Self::to_idx(idx); self.v.resize_with((idx + 1).max(self.v.len()), || None); - self.v[idx] = Some(t); + self.v[idx].replace(t) } /// Returns a reference to the value associated with the provided index @@ -46,6 +86,16 @@ impl ArenaMap, V> { self.v.iter().enumerate().filter_map(|(idx, o)| Some((Self::from_idx(idx), o.as_ref()?))) } + /// Gets the given key's corresponding entry in the map for in-place manipulation. + pub fn entry(&mut self, idx: Idx) -> Entry<'_, Idx, V> { + let idx = Self::to_idx(idx); + self.v.resize_with((idx + 1).max(self.v.len()), || None); + match &mut self.v[idx] { + slot @ Some(_) => Entry::Occupied(OccupiedEntry { slot, _ty: PhantomData }), + slot @ None => Entry::Vacant(VacantEntry { slot, _ty: PhantomData }), + } + } + fn to_idx(idx: Idx) -> usize { u32::from(idx.into_raw()) as usize } @@ -70,6 +120,119 @@ impl std::ops::IndexMut> for ArenaMap, T> { impl Default for ArenaMap, T> { fn default() -> Self { - ArenaMap { v: Vec::new(), _ty: PhantomData } + Self::new() + } +} + +impl Extend<(Idx, T)> for ArenaMap, T> { + fn extend, T)>>(&mut self, iter: I) { + iter.into_iter().for_each(move |(k, v)| { + self.insert(k, v); + }); + } +} + +impl FromIterator<(Idx, T)> for ArenaMap, T> { + fn from_iter, T)>>(iter: I) -> Self { + let mut this = Self::new(); + this.extend(iter); + this + } +} + +/// A view into a single entry in a map, which may either be vacant or occupied. +/// +/// This `enum` is constructed from the [`entry`] method on [`ArenaMap`]. +/// +/// [`entry`]: ArenaMap::entry +pub enum Entry<'a, IDX, V> { + /// A vacant entry. + Vacant(VacantEntry<'a, IDX, V>), + /// An occupied entry. + Occupied(OccupiedEntry<'a, IDX, V>), +} + +impl<'a, IDX, V> Entry<'a, IDX, V> { + /// Ensures a value is in the entry by inserting the default if empty, and returns a mutable reference to + /// the value in the entry. + pub fn or_insert(self, default: V) -> &'a mut V { + match self { + Self::Vacant(ent) => ent.insert(default), + Self::Occupied(ent) => ent.into_mut(), + } + } + + /// Ensures a value is in the entry by inserting the result of the default function if empty, and returns + /// a mutable reference to the value in the entry. + pub fn or_insert_with V>(self, default: F) -> &'a mut V { + match self { + Self::Vacant(ent) => ent.insert(default()), + Self::Occupied(ent) => ent.into_mut(), + } + } + + /// Provides in-place mutable access to an occupied entry before any potential inserts into the map. + pub fn and_modify(mut self, f: F) -> Self { + if let Self::Occupied(ent) = &mut self { + f(ent.get_mut()); + } + self + } +} + +impl<'a, IDX, V> Entry<'a, IDX, V> +where + V: Default, +{ + /// Ensures a value is in the entry by inserting the default value if empty, and returns a mutable reference + /// to the value in the entry. + pub fn or_default(self) -> &'a mut V { + self.or_insert_with(Default::default) + } +} + +/// A view into an vacant entry in a [`ArenaMap`]. It is part of the [`Entry`] enum. +pub struct VacantEntry<'a, IDX, V> { + slot: &'a mut Option, + _ty: PhantomData, +} + +impl<'a, IDX, V> VacantEntry<'a, IDX, V> { + /// Sets the value of the entry with the `VacantEntry`’s key, and returns a mutable reference to it. + pub fn insert(self, value: V) -> &'a mut V { + self.slot.insert(value) + } +} + +/// A view into an occupied entry in a [`ArenaMap`]. It is part of the [`Entry`] enum. +pub struct OccupiedEntry<'a, IDX, V> { + slot: &'a mut Option, + _ty: PhantomData, +} + +impl<'a, IDX, V> OccupiedEntry<'a, IDX, V> { + /// Gets a reference to the value in the entry. + pub fn get(&self) -> &V { + self.slot.as_ref().expect("Occupied") + } + + /// Gets a mutable reference to the value in the entry. + pub fn get_mut(&mut self) -> &mut V { + self.slot.as_mut().expect("Occupied") + } + + /// Converts the entry into a mutable reference to its value. + pub fn into_mut(self) -> &'a mut V { + self.slot.as_mut().expect("Occupied") + } + + /// Sets the value of the entry with the `OccupiedEntry`’s key, and returns the entry’s old value. + pub fn insert(&mut self, value: V) -> V { + self.slot.replace(value).expect("Occupied") + } + + /// Takes the value of the entry out of the map, and returns it. + pub fn remove(self) -> V { + self.slot.take().expect("Occupied") } } diff --git a/xtask/src/release.rs b/xtask/src/release.rs index 17ada5156407..eda8fceef05b 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -81,7 +81,7 @@ impl flags::Promote { let date = date_iso(sh)?; let branch = format!("rust-analyzer-{date}"); cmd!(sh, "git switch -c {branch}").run()?; - cmd!(sh, "git subtree pull -P src/tools/rust-analyzer rust-analyzer master").run()?; + cmd!(sh, "git subtree pull -m ':arrow_up: rust-analyzer' -P src/tools/rust-analyzer rust-analyzer release").run()?; if !self.dry_run { cmd!(sh, "git push -u origin {branch}").run()?; From 8231fee466a7a288a3b506a5fdf0ab057b2acbeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Tue, 16 Aug 2022 11:24:50 +0300 Subject: [PATCH 005/478] :arrow_up: rust-analyzer --- .github/workflows/ci.yaml | 2 +- .github/workflows/release.yaml | 10 +- .vscode/launch.json | 2 +- Cargo.lock | 1 + crates/base-db/src/input.rs | 2 +- .../macro_expansion_tests/builtin_fn_macro.rs | 4 +- .../hir-def/src/macro_expansion_tests/mbe.rs | 12 +- .../macro_expansion_tests/mbe/regression.rs | 4 +- .../mbe/tt_conversion.rs | 2 +- .../src/macro_expansion_tests/proc_macros.rs | 2 +- crates/hir-def/src/nameres/mod_resolution.rs | 2 + .../src/nameres/tests/mod_resolution.rs | 4 +- crates/hir-expand/src/builtin_fn_macro.rs | 22 +- crates/hir-expand/src/fixup.rs | 190 +- crates/hir-expand/src/mod_path.rs | 16 +- crates/hir-expand/src/name.rs | 52 +- crates/hir-expand/src/quote.rs | 4 +- crates/hir-ty/src/consteval.rs | 1 - crates/hir-ty/src/infer/pat.rs | 33 +- crates/hir-ty/src/tests/patterns.rs | 45 + crates/hir/src/diagnostics.rs | 1 + crates/hir/src/source_analyzer.rs | 1 + crates/ide-assists/src/assist_context.rs | 157 +- .../src/handlers/add_missing_impl_members.rs | 2 +- .../convert_tuple_struct_to_named_struct.rs | 10 +- .../src/handlers/destructure_tuple_binding.rs | 10 +- .../extract_struct_from_enum_variant.rs | 4 +- .../src/handlers/generate_deref.rs | 4 +- .../src/handlers/introduce_named_lifetime.rs | 4 +- .../src/handlers/remove_unused_param.rs | 5 +- .../replace_derive_with_manual_impl.rs | 4 +- crates/ide-assists/src/utils.rs | 4 +- crates/ide-completion/src/completions.rs | 1 - crates/ide-completion/src/completions/expr.rs | 118 +- .../src/completions/item_list/trait_impl.rs | 3 +- .../ide-completion/src/completions/record.rs | 59 +- crates/ide-completion/src/context.rs | 1 + crates/ide-completion/src/render.rs | 11 +- crates/ide-completion/src/render/const_.rs | 2 +- crates/ide-completion/src/render/function.rs | 8 +- crates/ide-completion/src/render/literal.rs | 2 +- crates/ide-completion/src/render/macro_.rs | 2 +- crates/ide-completion/src/render/pattern.rs | 10 +- .../ide-completion/src/render/type_alias.rs | 4 +- .../src/render/union_literal.rs | 12 +- crates/ide-completion/src/render/variant.rs | 4 +- crates/ide-completion/src/tests/record.rs | 92 +- crates/ide-db/src/search.rs | 2 +- crates/ide-db/src/source_change.rs | 136 +- crates/ide-diagnostics/Cargo.toml | 1 + .../src/handlers/inactive_code.rs | 2 +- .../src/handlers/json_is_not_rust.rs | 310 ++ .../src/handlers/macro_error.rs | 2 +- .../src/handlers/no_such_field.rs | 18 +- crates/ide-diagnostics/src/lib.rs | 33 +- crates/ide-diagnostics/src/tests.rs | 12 +- crates/ide/src/goto_definition.rs | 2 +- crates/ide/src/runnables.rs | 186 + crates/ide/src/status.rs | 2 +- crates/mbe/src/syntax_bridge.rs | 11 +- crates/parser/src/grammar/expressions.rs | 26 +- crates/parser/src/grammar/patterns.rs | 34 +- ...ord_literal_missing_ellipsis_recovery.rast | 43 + ...ecord_literal_missing_ellipsis_recovery.rs | 3 + .../parser/inline/ok/0058_range_pat.rast | 116 + .../parser/inline/ok/0058_range_pat.rs | 10 + .../parser/inline/ok/0061_record_lit.rast | 49 + .../parser/inline/ok/0061_record_lit.rs | 2 + .../inline/ok/0166_half_open_range_pat.rast | 23 +- .../inline/ok/0166_half_open_range_pat.rs | 5 +- crates/proc-macro-api/src/msg/flat.rs | 5 +- .../src/abis/abi_1_58/proc_macro/mod.rs | 4 +- .../src/abis/abi_1_58/ra_server.rs | 1 - .../src/abis/abi_1_63/proc_macro/mod.rs | 4 +- .../src/abis/abi_1_63/ra_server.rs | 1 - .../proc-macro-srv/src/abis/abi_1_64/mod.rs | 105 - .../abis/abi_1_64/proc_macro/bridge/buffer.rs | 156 - .../abis/abi_1_64/proc_macro/bridge/client.rs | 529 --- .../abi_1_64/proc_macro/bridge/closure.rs | 32 - .../abis/abi_1_64/proc_macro/bridge/handle.rs | 89 - .../abis/abi_1_64/proc_macro/bridge/mod.rs | 493 -- .../abis/abi_1_64/proc_macro/bridge/rpc.rs | 304 -- .../abi_1_64/proc_macro/bridge/scoped_cell.rs | 81 - .../proc_macro/bridge/selfless_reify.rs | 84 - .../abis/abi_1_64/proc_macro/bridge/server.rs | 339 -- .../abis/abi_1_64/proc_macro/diagnostic.rs | 166 - .../src/abis/abi_1_64/proc_macro/mod.rs | 1125 ----- .../src/abis/abi_1_64/proc_macro/quote.rs | 139 - .../src/abis/abi_1_64/ra_server.rs | 792 ---- .../src/abis/abi_sysroot/ra_server.rs | 2 +- crates/proc-macro-srv/src/abis/mod.rs | 11 +- crates/proc-macro-srv/src/dylib.rs | 1 - crates/proc-macro-srv/src/tests/mod.rs | 6 +- crates/project-model/src/build_scripts.rs | 26 +- crates/project-model/src/tests.rs | 1 + crates/project-model/src/workspace.rs | 18 +- crates/rust-analyzer/src/bin/rustc_wrapper.rs | 7 +- crates/rust-analyzer/src/cli/diagnostics.rs | 2 +- crates/rust-analyzer/src/cli/flags.rs | 6 +- crates/rust-analyzer/src/config.rs | 1 + .../rust-analyzer/src/diagnostics/to_proto.rs | 2 +- crates/rust-analyzer/src/handlers.rs | 3 +- crates/rust-analyzer/src/main_loop.rs | 399 +- crates/rust-analyzer/src/reload.rs | 1 + crates/rust-analyzer/src/to_proto.rs | 2 +- crates/syntax/src/ast/operators.rs | 2 +- crates/syntax/src/fuzz.rs | 5 +- editors/code/package-lock.json | 3974 ++++++++++++++++- editors/code/src/client.ts | 16 + editors/code/src/commands.ts | 18 +- lib/la-arena/src/lib.rs | 1 - 111 files changed, 5796 insertions(+), 5130 deletions(-) create mode 100644 crates/ide-diagnostics/src/handlers/json_is_not_rust.rs create mode 100644 crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rast create mode 100644 crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/mod.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/buffer.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/client.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/closure.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/handle.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/mod.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/rpc.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/scoped_cell.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/selfless_reify.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/server.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/diagnostic.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/mod.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/quote.rs delete mode 100644 crates/proc-macro-srv/src/abis/abi_1_64/ra_server.rs diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0c81ff0789fb..a70252fa65a5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -101,7 +101,7 @@ jobs: - name: Install Nodejs uses: actions/setup-node@v1 with: - node-version: 14.x + node-version: 16.x - name: Install xvfb if: matrix.os == 'ubuntu-latest' diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ca8eb1309de3..3c36c4fb84a2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -68,7 +68,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v1 with: - node-version: 14.x + node-version: 16.x - name: Update apt repositories if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'arm-unknown-linux-gnueabihf' @@ -133,7 +133,7 @@ jobs: container: image: rust:alpine volumes: - - /usr/local/cargo/registry + - /usr/local/cargo/registry:/usr/local/cargo/registry steps: - name: Install dependencies @@ -176,7 +176,7 @@ jobs: - name: Install Nodejs uses: actions/setup-node@v1 with: - node-version: 14.x + node-version: 16.x - run: echo "TAG=$(date --iso -u)" >> $GITHUB_ENV if: github.ref == 'refs/heads/release' @@ -253,9 +253,9 @@ jobs: - name: Publish Extension (Code Marketplace, nightly) if: github.ref != 'refs/heads/release' && (github.repository == 'rust-analyzer/rust-analyzer' || github.repository == 'rust-lang/rust-analyzer') working-directory: ./editors/code - run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix --pre-release + run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix - name: Publish Extension (OpenVSX, nightly) if: github.ref != 'refs/heads/release' && (github.repository == 'rust-analyzer/rust-analyzer' || github.repository == 'rust-lang/rust-analyzer') working-directory: ./editors/code - run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix --pre-release + run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix diff --git a/.vscode/launch.json b/.vscode/launch.json index 021b8f048cf2..1e21214ffc4b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -78,7 +78,7 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "--disable-extension", "matklad.rust-analyzer", + "--disable-extension", "rust-lang.rust-analyzer", "--extensionDevelopmentPath=${workspaceFolder}/editors/code" ], "outFiles": [ diff --git a/Cargo.lock b/Cargo.lock index 703f0e5b8af9..7c6796d70bdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -710,6 +710,7 @@ dependencies = [ "ide-db", "itertools", "profile", + "serde_json", "sourcegen", "stdx", "syntax", diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs index 9b5a10acfbea..9580ce8007c7 100644 --- a/crates/base-db/src/input.rs +++ b/crates/base-db/src/input.rs @@ -6,7 +6,7 @@ //! actual IO. See `vfs` and `project_model` in the `rust-analyzer` crate for how //! actual IO is done and lowered to input. -use std::{fmt, iter::FromIterator, ops, panic::RefUnwindSafe, str::FromStr, sync::Arc}; +use std::{fmt, ops, panic::RefUnwindSafe, str::FromStr, sync::Arc}; use cfg::CfgOptions; use rustc_hash::{FxHashMap, FxHashSet}; diff --git a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs index 92dffa7f372e..4f626105a53d 100644 --- a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs +++ b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs @@ -295,13 +295,13 @@ fn test_concat_expand() { #[rustc_builtin_macro] macro_rules! concat {} -fn main() { concat!("foo", "r", 0, r#"bar"#, "\n", false); } +fn main() { concat!("foo", "r", 0, r#"bar"#, "\n", false, '"', '\0'); } "##, expect![[r##" #[rustc_builtin_macro] macro_rules! concat {} -fn main() { "foor0bar\nfalse"; } +fn main() { "foor0bar\nfalse\"\u{0}"; } "##]], ); } diff --git a/crates/hir-def/src/macro_expansion_tests/mbe.rs b/crates/hir-def/src/macro_expansion_tests/mbe.rs index 30d39d52f385..457e43925c63 100644 --- a/crates/hir-def/src/macro_expansion_tests/mbe.rs +++ b/crates/hir-def/src/macro_expansion_tests/mbe.rs @@ -885,7 +885,7 @@ macro_rules! m { ($t:ty) => ( fn bar() -> $ t {} ) } -fn bar() -> & 'a Baz {} +fn bar() -> &'a Baz {} fn bar() -> extern "Rust"fn() -> Ret {} "#]], @@ -1578,7 +1578,7 @@ macro_rules !register_methods { ($$($val: expr), *) = > { struct Foo; impl Foo { - $(fn $method()-> & 'static[u32] { + $(fn $method()-> &'static[u32] { &[$$($$val), *] } )* @@ -1591,10 +1591,10 @@ macro_rules !implement_methods { ($($val: expr), *) = > { struct Foo; impl Foo { - fn alpha()-> & 'static[u32] { + fn alpha()-> &'static[u32] { &[$($val), *] } - fn beta()-> & 'static[u32] { + fn beta()-> &'static[u32] { &[$($val), *] } } @@ -1602,10 +1602,10 @@ macro_rules !implement_methods { } struct Foo; impl Foo { - fn alpha() -> & 'static[u32] { + fn alpha() -> &'static[u32] { &[1, 2, 3] } - fn beta() -> & 'static[u32] { + fn beta() -> &'static[u32] { &[1, 2, 3] } } diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs index 2dff4adf2ee8..d2505e7cafe5 100644 --- a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs +++ b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs @@ -166,7 +166,7 @@ macro_rules! int_base { } } #[stable(feature = "rust1", since = "1.0.0")] impl fmt::Binary for isize { - fn fmt(&self , f: &mut fmt::Formatter< '_>) -> fmt::Result { + fn fmt(&self , f: &mut fmt::Formatter<'_>) -> fmt::Result { Binary.fmt_int(*self as usize, f) } } @@ -724,7 +724,7 @@ macro_rules! delegate_impl { } } } -impl <> Data for & 'amut G where G: Data {} +impl <> Data for &'amut G where G: Data {} "##]], ); } diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs b/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs index 0710b1ac3d69..b8d2ca687c9e 100644 --- a/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs +++ b/crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs @@ -78,7 +78,7 @@ m!(static bar: &'static str = "hello";); macro_rules! m { ($($t:tt)*) => { $($t)*} } -static bar: & 'static str = "hello"; +static bar: &'static str = "hello"; "#]], ); } diff --git a/crates/hir-def/src/macro_expansion_tests/proc_macros.rs b/crates/hir-def/src/macro_expansion_tests/proc_macros.rs index 72c44a0fbcb2..029821e5e87f 100644 --- a/crates/hir-def/src/macro_expansion_tests/proc_macros.rs +++ b/crates/hir-def/src/macro_expansion_tests/proc_macros.rs @@ -87,7 +87,7 @@ fn foo() { bar.; blub } fn foo() { bar.; blub } fn foo() { - bar. ; + bar.; blub }"##]], ); diff --git a/crates/hir-def/src/nameres/mod_resolution.rs b/crates/hir-def/src/nameres/mod_resolution.rs index 52a620fe22f6..99f7f1b549e2 100644 --- a/crates/hir-def/src/nameres/mod_resolution.rs +++ b/crates/hir-def/src/nameres/mod_resolution.rs @@ -73,10 +73,12 @@ impl ModDir { candidate_files.push(self.dir_path.join_attr(attr_path, self.root_non_dir_owner)) } None if file_id.is_include_macro(db.upcast()) => { + let name = name.unescaped(); candidate_files.push(format!("{}.rs", name)); candidate_files.push(format!("{}/mod.rs", name)); } None => { + let name = name.unescaped(); candidate_files.push(format!("{}{}.rs", self.dir_path.0, name)); candidate_files.push(format!("{}{}/mod.rs", self.dir_path.0, name)); } diff --git a/crates/hir-def/src/nameres/tests/mod_resolution.rs b/crates/hir-def/src/nameres/tests/mod_resolution.rs index 79a74873b4a4..3fa585574dee 100644 --- a/crates/hir-def/src/nameres/tests/mod_resolution.rs +++ b/crates/hir-def/src/nameres/tests/mod_resolution.rs @@ -132,9 +132,9 @@ pub struct Bar; expect![[r#" crate Bar: t v - async: t + r#async: t - crate::async + crate::r#async Bar: t v "#]], ); diff --git a/crates/hir-expand/src/builtin_fn_macro.rs b/crates/hir-expand/src/builtin_fn_macro.rs index 76da7c9f1ee8..8befa7f7da72 100644 --- a/crates/hir-expand/src/builtin_fn_macro.rs +++ b/crates/hir-expand/src/builtin_fn_macro.rs @@ -251,9 +251,13 @@ fn format_args_expand( } for arg in &mut args { // Remove `key =`. - if matches!(arg.token_trees.get(1), Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p))) if p.char == '=' && p.spacing != tt::Spacing::Joint) + if matches!(arg.token_trees.get(1), Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p))) if p.char == '=') { - arg.token_trees.drain(..2); + // but not with `==` + if !matches!(arg.token_trees.get(2), Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p))) if p.char == '=' ) + { + arg.token_trees.drain(..2); + } } } let _format_string = args.remove(0); @@ -357,6 +361,12 @@ fn unquote_str(lit: &tt::Literal) -> Option { token.value().map(|it| it.into_owned()) } +fn unquote_char(lit: &tt::Literal) -> Option { + let lit = ast::make::tokens::literal(&lit.to_string()); + let token = ast::Char::cast(lit)?; + token.value() +} + fn unquote_byte_string(lit: &tt::Literal) -> Option> { let lit = ast::make::tokens::literal(&lit.to_string()); let token = ast::ByteString::cast(lit)?; @@ -408,8 +418,12 @@ fn concat_expand( // concat works with string and char literals, so remove any quotes. // It also works with integer, float and boolean literals, so just use the rest // as-is. - let component = unquote_str(it).unwrap_or_else(|| it.text.to_string()); - text.push_str(&component); + if let Some(c) = unquote_char(it) { + text.push(c); + } else { + let component = unquote_str(it).unwrap_or_else(|| it.text.to_string()); + text.push_str(&component); + } } // handle boolean literals tt::TokenTree::Leaf(tt::Leaf::Ident(id)) diff --git a/crates/hir-expand/src/fixup.rs b/crates/hir-expand/src/fixup.rs index e46f43a878fe..893e6fe4b824 100644 --- a/crates/hir-expand/src/fixup.rs +++ b/crates/hir-expand/src/fixup.rs @@ -67,7 +67,6 @@ pub(crate) fn fixup_syntax(node: &SyntaxNode) -> SyntaxFixups { preorder.skip_subtree(); continue; } - // In some other situations, we can fix things by just appending some tokens. let end_range = TextRange::empty(node.text_range().end()); match_ast! { @@ -194,7 +193,75 @@ pub(crate) fn fixup_syntax(node: &SyntaxNode) -> SyntaxFixups { } }, // FIXME: foo:: - // FIXME: for, match etc. + ast::MatchExpr(it) => { + if it.expr().is_none() { + let match_token = match it.match_token() { + Some(t) => t, + None => continue + }; + append.insert(match_token.into(), vec![ + SyntheticToken { + kind: SyntaxKind::IDENT, + text: "__ra_fixup".into(), + range: end_range, + id: EMPTY_ID + }, + ]); + } + if it.match_arm_list().is_none() { + // No match arms + append.insert(node.clone().into(), vec![ + SyntheticToken { + kind: SyntaxKind::L_CURLY, + text: "{".into(), + range: end_range, + id: EMPTY_ID, + }, + SyntheticToken { + kind: SyntaxKind::R_CURLY, + text: "}".into(), + range: end_range, + id: EMPTY_ID, + }, + ]); + } + }, + ast::ForExpr(it) => { + let for_token = match it.for_token() { + Some(token) => token, + None => continue + }; + + let [pat, in_token, iter] = [ + (SyntaxKind::UNDERSCORE, "_"), + (SyntaxKind::IN_KW, "in"), + (SyntaxKind::IDENT, "__ra_fixup") + ].map(|(kind, text)| SyntheticToken { kind, text: text.into(), range: end_range, id: EMPTY_ID}); + + if it.pat().is_none() && it.in_token().is_none() && it.iterable().is_none() { + append.insert(for_token.into(), vec![pat, in_token, iter]); + // does something funky -- see test case for_no_pat + } else if it.pat().is_none() { + append.insert(for_token.into(), vec![pat]); + } + + if it.loop_body().is_none() { + append.insert(node.clone().into(), vec![ + SyntheticToken { + kind: SyntaxKind::L_CURLY, + text: "{".into(), + range: end_range, + id: EMPTY_ID, + }, + SyntheticToken { + kind: SyntaxKind::R_CURLY, + text: "}".into(), + range: end_range, + id: EMPTY_ID, + }, + ]); + } + }, _ => (), } } @@ -287,6 +354,111 @@ mod tests { assert_eq!(tt.to_string(), original_as_tt.to_string()); } + #[test] + fn just_for_token() { + check( + r#" +fn foo() { + for +} +"#, + expect![[r#" +fn foo () {for _ in __ra_fixup {}} +"#]], + ) + } + + #[test] + fn for_no_iter_pattern() { + check( + r#" +fn foo() { + for {} +} +"#, + expect![[r#" +fn foo () {for _ in __ra_fixup {}} +"#]], + ) + } + + #[test] + fn for_no_body() { + check( + r#" +fn foo() { + for bar in qux +} +"#, + expect![[r#" +fn foo () {for bar in qux {}} +"#]], + ) + } + + // FIXME: https://github.com/rust-lang/rust-analyzer/pull/12937#discussion_r937633695 + #[test] + fn for_no_pat() { + check( + r#" +fn foo() { + for in qux { + + } +} +"#, + expect![[r#" +fn foo () {__ra_fixup} +"#]], + ) + } + + #[test] + fn match_no_expr_no_arms() { + check( + r#" +fn foo() { + match +} +"#, + expect![[r#" +fn foo () {match __ra_fixup {}} +"#]], + ) + } + + #[test] + fn match_expr_no_arms() { + check( + r#" +fn foo() { + match x { + + } +} +"#, + expect![[r#" +fn foo () {match x {}} +"#]], + ) + } + + #[test] + fn match_no_expr() { + check( + r#" +fn foo() { + match { + _ => {} + } +} +"#, + expect![[r#" +fn foo () {match __ra_fixup {}} +"#]], + ) + } + #[test] fn incomplete_field_expr_1() { check( @@ -296,7 +468,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a . __ra_fixup} +fn foo () {a .__ra_fixup} "#]], ) } @@ -306,11 +478,11 @@ fn foo () {a . __ra_fixup} check( r#" fn foo() { - a. ; + a.; } "#, expect![[r#" -fn foo () {a . __ra_fixup ;} +fn foo () {a .__ra_fixup ;} "#]], ) } @@ -320,12 +492,12 @@ fn foo () {a . __ra_fixup ;} check( r#" fn foo() { - a. ; + a.; bar(); } "#, expect![[r#" -fn foo () {a . __ra_fixup ; bar () ;} +fn foo () {a .__ra_fixup ; bar () ;} "#]], ) } @@ -353,7 +525,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {let x = a . __ra_fixup ;} +fn foo () {let x = a .__ra_fixup ;} "#]], ) } @@ -369,7 +541,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a . b ; bar () ;} +fn foo () {a .b ; bar () ;} "#]], ) } diff --git a/crates/hir-expand/src/mod_path.rs b/crates/hir-expand/src/mod_path.rs index fea09521e87c..d0f73ec8208c 100644 --- a/crates/hir-expand/src/mod_path.rs +++ b/crates/hir-expand/src/mod_path.rs @@ -22,7 +22,7 @@ pub struct ModPath { } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct EscapedModPath<'a>(&'a ModPath); +pub struct UnescapedModPath<'a>(&'a ModPath); #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum PathKind { @@ -102,8 +102,8 @@ impl ModPath { } } - pub fn escaped(&self) -> EscapedModPath<'_> { - EscapedModPath(self) + pub fn unescaped(&self) -> UnescapedModPath<'_> { + UnescapedModPath(self) } fn _fmt(&self, f: &mut fmt::Formatter<'_>, escaped: bool) -> fmt::Result { @@ -134,9 +134,9 @@ impl ModPath { } first_segment = false; if escaped { - segment.escaped().fmt(f)? - } else { segment.fmt(f)? + } else { + segment.unescaped().fmt(f)? }; } Ok(()) @@ -145,13 +145,13 @@ impl ModPath { impl Display for ModPath { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self._fmt(f, false) + self._fmt(f, true) } } -impl<'a> Display for EscapedModPath<'a> { +impl<'a> Display for UnescapedModPath<'a> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0._fmt(f, true) + self.0._fmt(f, false) } } diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index 47d191822d84..87c663eec8e8 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -7,12 +7,16 @@ use syntax::{ast, SmolStr, SyntaxKind}; /// `Name` is a wrapper around string, which is used in hir for both references /// and declarations. In theory, names should also carry hygiene info, but we are /// not there yet! +/// +/// Note that `Name` holds and prints escaped name i.e. prefixed with "r#" when it +/// is a raw identifier. Use [`unescaped()`][Name::unescaped] when you need the +/// name without "r#". #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct Name(Repr); -/// `EscapedName` will add a prefix "r#" to the wrapped `Name` when it is a raw identifier +/// Wrapper of `Name` to print the name without "r#" even when it is a raw identifier. #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] -pub struct EscapedName<'a>(&'a Name); +pub struct UnescapedName<'a>(&'a Name); #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] enum Repr { @@ -34,37 +38,26 @@ fn is_raw_identifier(name: &str) -> bool { is_keyword && !matches!(name, "self" | "crate" | "super" | "Self") } -impl<'a> fmt::Display for EscapedName<'a> { +impl<'a> fmt::Display for UnescapedName<'a> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match &self.0 .0 { Repr::Text(text) => { - if is_raw_identifier(text) { - write!(f, "r#{}", &text) - } else { - fmt::Display::fmt(&text, f) - } + let text = text.strip_prefix("r#").unwrap_or(text); + fmt::Display::fmt(&text, f) } Repr::TupleField(idx) => fmt::Display::fmt(&idx, f), } } } -impl<'a> EscapedName<'a> { - pub fn is_escaped(&self) -> bool { - match &self.0 .0 { - Repr::Text(it) => is_raw_identifier(&it), - Repr::TupleField(_) => false, - } - } - - /// Returns the textual representation of this name as a [`SmolStr`]. - /// Prefer using this over [`ToString::to_string`] if possible as this conversion is cheaper in - /// the general case. +impl<'a> UnescapedName<'a> { + /// Returns the textual representation of this name as a [`SmolStr`]. Prefer using this over + /// [`ToString::to_string`] if possible as this conversion is cheaper in the general case. pub fn to_smol_str(&self) -> SmolStr { match &self.0 .0 { Repr::Text(it) => { - if is_raw_identifier(&it) { - SmolStr::from_iter(["r#", &it]) + if let Some(stripped) = it.strip_prefix("r#") { + SmolStr::new(stripped) } else { it.clone() } @@ -97,9 +90,11 @@ impl Name { /// Resolve a name from the text of token. fn resolve(raw_text: &str) -> Name { + // When `raw_text` starts with "r#" but the name does not coincide with any + // keyword, we never need the prefix so we strip it. match raw_text.strip_prefix("r#") { - Some(text) => Name::new_text(SmolStr::new(text)), - None => Name::new_text(raw_text.into()), + Some(text) if !is_raw_identifier(text) => Name::new_text(SmolStr::new(text)), + _ => Name::new_text(raw_text.into()), } } @@ -142,8 +137,15 @@ impl Name { } } - pub fn escaped(&self) -> EscapedName<'_> { - EscapedName(self) + pub fn unescaped(&self) -> UnescapedName<'_> { + UnescapedName(self) + } + + pub fn is_escaped(&self) -> bool { + match &self.0 { + Repr::Text(it) => it.starts_with("r#"), + Repr::TupleField(_) => false, + } } } diff --git a/crates/hir-expand/src/quote.rs b/crates/hir-expand/src/quote.rs index 82f410ecda91..e839e97bf02d 100644 --- a/crates/hir-expand/src/quote.rs +++ b/crates/hir-expand/src/quote.rs @@ -196,8 +196,8 @@ impl_to_to_tokentrees! { tt::Literal => self { self }; tt::Ident => self { self }; tt::Punct => self { self }; - &str => self { tt::Literal{text: format!("\"{}\"", self.escape_debug()).into(), id: tt::TokenId::unspecified()}}; - String => self { tt::Literal{text: format!("\"{}\"", self.escape_debug()).into(), id: tt::TokenId::unspecified()}} + &str => self { tt::Literal{text: format!("\"{}\"", self.escape_default()).into(), id: tt::TokenId::unspecified()}}; + String => self { tt::Literal{text: format!("\"{}\"", self.escape_default()).into(), id: tt::TokenId::unspecified()}} } #[cfg(test)] diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs index 0495a4e64cac..6ecb6e6fd173 100644 --- a/crates/hir-ty/src/consteval.rs +++ b/crates/hir-ty/src/consteval.rs @@ -2,7 +2,6 @@ use std::{ collections::HashMap, - convert::TryInto, fmt::{Display, Write}, }; diff --git a/crates/hir-ty/src/infer/pat.rs b/crates/hir-ty/src/infer/pat.rs index 5e7320a5dd30..53259d66dec6 100644 --- a/crates/hir-ty/src/infer/pat.rs +++ b/crates/hir-ty/src/infer/pat.rs @@ -14,8 +14,9 @@ use crate::{ consteval::intern_const_scalar, infer::{BindingMode, Expectation, InferenceContext, TypeMismatch}, lower::lower_to_chalk_mutability, - static_lifetime, ConcreteConst, ConstValue, Interner, Substitution, Ty, TyBuilder, TyExt, - TyKind, + primitive::UintTy, + static_lifetime, ConcreteConst, ConstValue, Interner, Scalar, Substitution, Ty, TyBuilder, + TyExt, TyKind, }; use super::PatLike; @@ -294,7 +295,29 @@ impl<'a> InferenceContext<'a> { let start_ty = self.infer_expr(*start, &Expectation::has_type(expected.clone())); self.infer_expr(*end, &Expectation::has_type(start_ty)) } - Pat::Lit(expr) => self.infer_expr(*expr, &Expectation::has_type(expected.clone())), + &Pat::Lit(expr) => { + // FIXME: using `Option` here is a workaround until we can use if-let chains in stable. + let mut pat_ty = None; + + // Like slice patterns, byte string patterns can denote both `&[u8; N]` and `&[u8]`. + if let Expr::Literal(Literal::ByteString(_)) = self.body[expr] { + if let Some((inner, ..)) = expected.as_reference() { + let inner = self.resolve_ty_shallow(inner); + if matches!(inner.kind(Interner), TyKind::Slice(_)) { + let elem_ty = TyKind::Scalar(Scalar::Uint(UintTy::U8)).intern(Interner); + let slice_ty = TyKind::Slice(elem_ty).intern(Interner); + let ty = TyKind::Ref(Mutability::Not, static_lifetime(), slice_ty) + .intern(Interner); + self.write_expr_ty(expr, ty.clone()); + pat_ty = Some(ty); + } + } + } + + pat_ty.unwrap_or_else(|| { + self.infer_expr(expr, &Expectation::has_type(expected.clone())) + }) + } Pat::Box { inner } => match self.resolve_boxed_box() { Some(box_adt) => { let (inner_ty, alloc_ty) = match expected.as_adt() { @@ -343,7 +366,9 @@ fn is_non_ref_pat(body: &hir_def::body::Body, pat: PatId) -> bool { // FIXME: ConstBlock/Path/Lit might actually evaluate to ref, but inference is unimplemented. Pat::Path(..) => true, Pat::ConstBlock(..) => true, - Pat::Lit(expr) => !matches!(body[*expr], Expr::Literal(Literal::String(..))), + Pat::Lit(expr) => { + !matches!(body[*expr], Expr::Literal(Literal::String(..) | Literal::ByteString(..))) + } Pat::Bind { mode: BindingAnnotation::Mutable | BindingAnnotation::Unannotated, subpat: Some(subpat), diff --git a/crates/hir-ty/src/tests/patterns.rs b/crates/hir-ty/src/tests/patterns.rs index 399553356b04..94efe7bc11a8 100644 --- a/crates/hir-ty/src/tests/patterns.rs +++ b/crates/hir-ty/src/tests/patterns.rs @@ -315,6 +315,51 @@ fn infer_pattern_match_string_literal() { ); } +#[test] +fn infer_pattern_match_byte_string_literal() { + check_infer_with_mismatches( + r#" + //- minicore: index + struct S; + impl core::ops::Index for [T; N] { + type Output = [u8]; + fn index(&self, index: core::ops::RangeFull) -> &Self::Output { + loop {} + } + } + fn test(v: [u8; 3]) { + if let b"foo" = &v[S] {} + if let b"foo" = &v {} + } + "#, + expect![[r#" + 105..109 'self': &[T; N] + 111..116 'index': {unknown} + 157..180 '{ ... }': &[u8] + 167..174 'loop {}': ! + 172..174 '{}': () + 191..192 'v': [u8; 3] + 203..261 '{ ...v {} }': () + 209..233 'if let...[S] {}': () + 212..230 'let b"... &v[S]': bool + 216..222 'b"foo"': &[u8] + 216..222 'b"foo"': &[u8] + 225..230 '&v[S]': &[u8] + 226..227 'v': [u8; 3] + 226..230 'v[S]': [u8] + 228..229 'S': S + 231..233 '{}': () + 238..259 'if let... &v {}': () + 241..256 'let b"foo" = &v': bool + 245..251 'b"foo"': &[u8; 3] + 245..251 'b"foo"': &[u8; 3] + 254..256 '&v': &[u8; 3] + 255..256 'v': [u8; 3] + 257..259 '{}': () + "#]], + ); +} + #[test] fn infer_pattern_match_or() { check_infer_with_mismatches( diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs index 6c6c11ea4ebd..50374f4b3fe4 100644 --- a/crates/hir/src/diagnostics.rs +++ b/crates/hir/src/diagnostics.rs @@ -14,6 +14,7 @@ use crate::{MacroKind, Type}; macro_rules! diagnostics { ($($diag:ident,)*) => { + #[derive(Debug)] pub enum AnyDiagnostic {$( $diag(Box<$diag>), )*} diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index f5e2e4430709..ae2896e19329 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -368,6 +368,7 @@ impl SourceAnalyzer { let local = if field.name_ref().is_some() { None } else { + // Shorthand syntax, resolve to the local let path = ModPath::from_segments(PathKind::Plain, once(local_name.clone())); match self.resolver.resolve_path_in_value_ns_fully(db.upcast(), &path) { Some(ValueNs::LocalBinding(pat_id)) => { diff --git a/crates/ide-assists/src/assist_context.rs b/crates/ide-assists/src/assist_context.rs index f9b426614257..8c7670e0cb71 100644 --- a/crates/ide-assists/src/assist_context.rs +++ b/crates/ide-assists/src/assist_context.rs @@ -1,28 +1,20 @@ //! See [`AssistContext`]. -use std::mem; - use hir::Semantics; -use ide_db::{ - base_db::{AnchoredPathBuf, FileId, FileRange}, - SnippetCap, -}; -use ide_db::{ - label::Label, - source_change::{FileSystemEdit, SourceChange}, - RootDatabase, -}; +use ide_db::base_db::{FileId, FileRange}; +use ide_db::{label::Label, RootDatabase}; use syntax::{ algo::{self, find_node_at_offset, find_node_at_range}, - AstNode, AstToken, Direction, SourceFile, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxNodePtr, - SyntaxToken, TextRange, TextSize, TokenAtOffset, + AstNode, AstToken, Direction, SourceFile, SyntaxElement, SyntaxKind, SyntaxToken, TextRange, + TextSize, TokenAtOffset, }; -use text_edit::{TextEdit, TextEditBuilder}; use crate::{ assist_config::AssistConfig, Assist, AssistId, AssistKind, AssistResolveStrategy, GroupLabel, }; +pub(crate) use ide_db::source_change::{SourceChangeBuilder, TreeMutator}; + /// `AssistContext` allows to apply an assist or check if it could be applied. /// /// Assists use a somewhat over-engineered approach, given the current needs. @@ -163,7 +155,7 @@ impl Assists { id: AssistId, label: impl Into, target: TextRange, - f: impl FnOnce(&mut AssistBuilder), + f: impl FnOnce(&mut SourceChangeBuilder), ) -> Option<()> { let mut f = Some(f); self.add_impl(None, id, label.into(), target, &mut |it| f.take().unwrap()(it)) @@ -175,7 +167,7 @@ impl Assists { id: AssistId, label: impl Into, target: TextRange, - f: impl FnOnce(&mut AssistBuilder), + f: impl FnOnce(&mut SourceChangeBuilder), ) -> Option<()> { let mut f = Some(f); self.add_impl(Some(group), id, label.into(), target, &mut |it| f.take().unwrap()(it)) @@ -187,7 +179,7 @@ impl Assists { id: AssistId, label: String, target: TextRange, - f: &mut dyn FnMut(&mut AssistBuilder), + f: &mut dyn FnMut(&mut SourceChangeBuilder), ) -> Option<()> { if !self.is_allowed(&id) { return None; @@ -195,7 +187,7 @@ impl Assists { let mut trigger_signature_help = false; let source_change = if self.resolve.should_resolve(&id) { - let mut builder = AssistBuilder::new(self.file); + let mut builder = SourceChangeBuilder::new(self.file); f(&mut builder); trigger_signature_help = builder.trigger_signature_help; Some(builder.finish()) @@ -216,132 +208,3 @@ impl Assists { } } } - -pub(crate) struct AssistBuilder { - edit: TextEditBuilder, - file_id: FileId, - source_change: SourceChange, - trigger_signature_help: bool, - - /// Maps the original, immutable `SyntaxNode` to a `clone_for_update` twin. - mutated_tree: Option, -} - -pub(crate) struct TreeMutator { - immutable: SyntaxNode, - mutable_clone: SyntaxNode, -} - -impl TreeMutator { - pub(crate) fn new(immutable: &SyntaxNode) -> TreeMutator { - let immutable = immutable.ancestors().last().unwrap(); - let mutable_clone = immutable.clone_for_update(); - TreeMutator { immutable, mutable_clone } - } - - pub(crate) fn make_mut(&self, node: &N) -> N { - N::cast(self.make_syntax_mut(node.syntax())).unwrap() - } - - pub(crate) fn make_syntax_mut(&self, node: &SyntaxNode) -> SyntaxNode { - let ptr = SyntaxNodePtr::new(node); - ptr.to_node(&self.mutable_clone) - } -} - -impl AssistBuilder { - pub(crate) fn new(file_id: FileId) -> AssistBuilder { - AssistBuilder { - edit: TextEdit::builder(), - file_id, - source_change: SourceChange::default(), - trigger_signature_help: false, - mutated_tree: None, - } - } - - pub(crate) fn edit_file(&mut self, file_id: FileId) { - self.commit(); - self.file_id = file_id; - } - - fn commit(&mut self) { - if let Some(tm) = self.mutated_tree.take() { - algo::diff(&tm.immutable, &tm.mutable_clone).into_text_edit(&mut self.edit) - } - - let edit = mem::take(&mut self.edit).finish(); - if !edit.is_empty() { - self.source_change.insert_source_edit(self.file_id, edit); - } - } - - pub(crate) fn make_mut(&mut self, node: N) -> N { - self.mutated_tree.get_or_insert_with(|| TreeMutator::new(node.syntax())).make_mut(&node) - } - /// Returns a copy of the `node`, suitable for mutation. - /// - /// Syntax trees in rust-analyzer are typically immutable, and mutating - /// operations panic at runtime. However, it is possible to make a copy of - /// the tree and mutate the copy freely. Mutation is based on interior - /// mutability, and different nodes in the same tree see the same mutations. - /// - /// The typical pattern for an assist is to find specific nodes in the read - /// phase, and then get their mutable couterparts using `make_mut` in the - /// mutable state. - pub(crate) fn make_syntax_mut(&mut self, node: SyntaxNode) -> SyntaxNode { - self.mutated_tree.get_or_insert_with(|| TreeMutator::new(&node)).make_syntax_mut(&node) - } - - /// Remove specified `range` of text. - pub(crate) fn delete(&mut self, range: TextRange) { - self.edit.delete(range) - } - /// Append specified `text` at the given `offset` - pub(crate) fn insert(&mut self, offset: TextSize, text: impl Into) { - self.edit.insert(offset, text.into()) - } - /// Append specified `snippet` at the given `offset` - pub(crate) fn insert_snippet( - &mut self, - _cap: SnippetCap, - offset: TextSize, - snippet: impl Into, - ) { - self.source_change.is_snippet = true; - self.insert(offset, snippet); - } - /// Replaces specified `range` of text with a given string. - pub(crate) fn replace(&mut self, range: TextRange, replace_with: impl Into) { - self.edit.replace(range, replace_with.into()) - } - /// Replaces specified `range` of text with a given `snippet`. - pub(crate) fn replace_snippet( - &mut self, - _cap: SnippetCap, - range: TextRange, - snippet: impl Into, - ) { - self.source_change.is_snippet = true; - self.replace(range, snippet); - } - pub(crate) fn replace_ast(&mut self, old: N, new: N) { - algo::diff(old.syntax(), new.syntax()).into_text_edit(&mut self.edit) - } - pub(crate) fn create_file(&mut self, dst: AnchoredPathBuf, content: impl Into) { - let file_system_edit = FileSystemEdit::CreateFile { dst, initial_contents: content.into() }; - self.source_change.push_file_system_edit(file_system_edit); - } - pub(crate) fn move_file(&mut self, src: FileId, dst: AnchoredPathBuf) { - let file_system_edit = FileSystemEdit::MoveFile { src, dst }; - self.source_change.push_file_system_edit(file_system_edit); - } - pub(crate) fn trigger_signature_help(&mut self) { - self.trigger_signature_help = true; - } - - fn finish(mut self) -> SourceChange { - self.commit(); - mem::take(&mut self.source_change) - } -} diff --git a/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/crates/ide-assists/src/handlers/add_missing_impl_members.rs index c808c010c672..62cf5ab4f37a 100644 --- a/crates/ide-assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ide-assists/src/handlers/add_missing_impl_members.rs @@ -944,7 +944,7 @@ foo!(); struct Foo(usize); impl FooB for Foo { - $0fn foo< 'lt>(& 'lt self){} + $0fn foo<'lt>(&'lt self){} } "#, ) diff --git a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs index 4ab8e93a2909..d8f522708460 100644 --- a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs +++ b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs @@ -5,7 +5,7 @@ use syntax::{ match_ast, SyntaxNode, }; -use crate::{assist_context::AssistBuilder, AssistContext, AssistId, AssistKind, Assists}; +use crate::{assist_context::SourceChangeBuilder, AssistContext, AssistId, AssistKind, Assists}; // Assist: convert_tuple_struct_to_named_struct // @@ -80,7 +80,7 @@ pub(crate) fn convert_tuple_struct_to_named_struct( fn edit_struct_def( ctx: &AssistContext<'_>, - edit: &mut AssistBuilder, + edit: &mut SourceChangeBuilder, strukt: &Either, tuple_fields: ast::TupleFieldList, names: Vec, @@ -122,7 +122,7 @@ fn edit_struct_def( fn edit_struct_references( ctx: &AssistContext<'_>, - edit: &mut AssistBuilder, + edit: &mut SourceChangeBuilder, strukt: Either, names: &[ast::Name], ) { @@ -132,7 +132,7 @@ fn edit_struct_references( }; let usages = strukt_def.usages(&ctx.sema).include_self_refs().all(); - let edit_node = |edit: &mut AssistBuilder, node: SyntaxNode| -> Option<()> { + let edit_node = |edit: &mut SourceChangeBuilder, node: SyntaxNode| -> Option<()> { match_ast! { match node { ast::TupleStructPat(tuple_struct_pat) => { @@ -203,7 +203,7 @@ fn edit_struct_references( fn edit_field_references( ctx: &AssistContext<'_>, - edit: &mut AssistBuilder, + edit: &mut SourceChangeBuilder, fields: impl Iterator, names: &[ast::Name], ) { diff --git a/crates/ide-assists/src/handlers/destructure_tuple_binding.rs b/crates/ide-assists/src/handlers/destructure_tuple_binding.rs index c1f57532bb29..dc581ff3bd2c 100644 --- a/crates/ide-assists/src/handlers/destructure_tuple_binding.rs +++ b/crates/ide-assists/src/handlers/destructure_tuple_binding.rs @@ -8,7 +8,7 @@ use syntax::{ TextRange, }; -use crate::assist_context::{AssistBuilder, AssistContext, Assists}; +use crate::assist_context::{AssistContext, Assists, SourceChangeBuilder}; // Assist: destructure_tuple_binding // @@ -151,7 +151,7 @@ struct TupleData { } fn edit_tuple_assignment( ctx: &AssistContext<'_>, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, data: &TupleData, in_sub_pattern: bool, ) { @@ -195,7 +195,7 @@ fn edit_tuple_assignment( fn edit_tuple_usages( data: &TupleData, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, ctx: &AssistContext<'_>, in_sub_pattern: bool, ) { @@ -211,7 +211,7 @@ fn edit_tuple_usages( } fn edit_tuple_usage( ctx: &AssistContext<'_>, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, usage: &FileReference, data: &TupleData, in_sub_pattern: bool, @@ -239,7 +239,7 @@ fn edit_tuple_usage( fn edit_tuple_field_usage( ctx: &AssistContext<'_>, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, data: &TupleData, index: TupleIndex, ) { diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index a93648f2d315..dfb565212646 100644 --- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs @@ -20,7 +20,7 @@ use syntax::{ SyntaxNode, T, }; -use crate::{assist_context::AssistBuilder, AssistContext, AssistId, AssistKind, Assists}; +use crate::{assist_context::SourceChangeBuilder, AssistContext, AssistId, AssistKind, Assists}; // Assist: extract_struct_from_enum_variant // @@ -374,7 +374,7 @@ fn apply_references( fn process_references( ctx: &AssistContext<'_>, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, visited_modules: &mut FxHashSet, enum_module_def: &ModuleDef, variant_hir_name: &Name, diff --git a/crates/ide-assists/src/handlers/generate_deref.rs b/crates/ide-assists/src/handlers/generate_deref.rs index b9637ee8d7c6..b484635121eb 100644 --- a/crates/ide-assists/src/handlers/generate_deref.rs +++ b/crates/ide-assists/src/handlers/generate_deref.rs @@ -8,7 +8,7 @@ use syntax::{ }; use crate::{ - assist_context::{AssistBuilder, AssistContext, Assists}, + assist_context::{AssistContext, Assists, SourceChangeBuilder}, utils::generate_trait_impl_text, AssistId, AssistKind, }; @@ -120,7 +120,7 @@ fn generate_tuple_deref(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<() } fn generate_edit( - edit: &mut AssistBuilder, + edit: &mut SourceChangeBuilder, strukt: ast::Struct, field_type_syntax: &SyntaxNode, field_name: impl Display, diff --git a/crates/ide-assists/src/handlers/introduce_named_lifetime.rs b/crates/ide-assists/src/handlers/introduce_named_lifetime.rs index ce91dd23703b..2fc754e3e50d 100644 --- a/crates/ide-assists/src/handlers/introduce_named_lifetime.rs +++ b/crates/ide-assists/src/handlers/introduce_named_lifetime.rs @@ -5,7 +5,7 @@ use syntax::{ AstNode, TextRange, }; -use crate::{assist_context::AssistBuilder, AssistContext, AssistId, AssistKind, Assists}; +use crate::{assist_context::SourceChangeBuilder, AssistContext, AssistId, AssistKind, Assists}; static ASSIST_NAME: &str = "introduce_named_lifetime"; static ASSIST_LABEL: &str = "Introduce named lifetime"; @@ -140,7 +140,7 @@ enum NeedsLifetime { } impl NeedsLifetime { - fn make_mut(self, builder: &mut AssistBuilder) -> Self { + fn make_mut(self, builder: &mut SourceChangeBuilder) -> Self { match self { Self::SelfParam(it) => Self::SelfParam(builder.make_mut(it)), Self::RefType(it) => Self::RefType(builder.make_mut(it)), diff --git a/crates/ide-assists/src/handlers/remove_unused_param.rs b/crates/ide-assists/src/handlers/remove_unused_param.rs index 59ea94ea1ff6..bd2e8fbe3896 100644 --- a/crates/ide-assists/src/handlers/remove_unused_param.rs +++ b/crates/ide-assists/src/handlers/remove_unused_param.rs @@ -8,7 +8,8 @@ use syntax::{ use SyntaxKind::WHITESPACE; use crate::{ - assist_context::AssistBuilder, utils::next_prev, AssistContext, AssistId, AssistKind, Assists, + assist_context::SourceChangeBuilder, utils::next_prev, AssistContext, AssistId, AssistKind, + Assists, }; // Assist: remove_unused_param @@ -88,7 +89,7 @@ pub(crate) fn remove_unused_param(acc: &mut Assists, ctx: &AssistContext<'_>) -> fn process_usages( ctx: &AssistContext<'_>, - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, file_id: FileId, references: Vec, arg_to_remove: usize, diff --git a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs index bd50208da5ff..d139f78a6f36 100644 --- a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs @@ -10,7 +10,7 @@ use syntax::{ }; use crate::{ - assist_context::{AssistBuilder, AssistContext, Assists}, + assist_context::{AssistContext, Assists, SourceChangeBuilder}, utils::{ add_trait_assoc_items_to_impl, filter_assoc_items, gen_trait_fn_body, generate_trait_impl_text, render_snippet, Cursor, DefaultMethods, @@ -224,7 +224,7 @@ fn impl_def_from_trait( } fn update_attribute( - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, old_derives: &[ast::Path], old_tree: &ast::TokenTree, old_trait_path: &ast::Path, diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index 3e61d0741d3f..103e3259fa2e 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -20,7 +20,7 @@ use syntax::{ SyntaxNode, TextRange, TextSize, T, }; -use crate::assist_context::{AssistBuilder, AssistContext}; +use crate::assist_context::{AssistContext, SourceChangeBuilder}; pub(crate) mod suggest_name; mod gen_trait_fn_body; @@ -484,7 +484,7 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str } pub(crate) fn add_method_to_adt( - builder: &mut AssistBuilder, + builder: &mut SourceChangeBuilder, adt: &ast::Adt, impl_def: Option, method: &str, diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs index 72579e6026ae..55c3e28392a4 100644 --- a/crates/ide-completion/src/completions.rs +++ b/crates/ide-completion/src/completions.rs @@ -617,7 +617,6 @@ pub(super) fn complete_name_ref( dot::complete_undotted_self(acc, ctx, path_ctx, expr_ctx); item_list::complete_item_list_in_expr(acc, ctx, path_ctx, expr_ctx); - record::complete_record_expr_func_update(acc, ctx, path_ctx, expr_ctx); snippet::complete_expr_snippet(acc, ctx, path_ctx, expr_ctx); } PathKind::Type { location } => { diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs index 5d0ddaaf2a22..4d66af9e8d5b 100644 --- a/crates/ide-completion/src/completions/expr.rs +++ b/crates/ide-completion/src/completions/expr.rs @@ -1,8 +1,10 @@ //! Completion of names from the current scope in expression position. use hir::ScopeDef; +use syntax::ast; use crate::{ + completions::record::add_default_update, context::{ExprCtx, PathCompletionCtx, Qualified}, CompletionContext, Completions, }; @@ -219,60 +221,78 @@ pub(crate) fn complete_expr_path( _ => (), }); - if is_func_update.is_none() { - let mut add_keyword = - |kw, snippet| acc.add_keyword_snippet_expr(ctx, incomplete_let, kw, snippet); + match is_func_update { + Some(record_expr) => { + let ty = ctx.sema.type_of_expr(&ast::Expr::RecordExpr(record_expr.clone())); - if !in_block_expr { - add_keyword("unsafe", "unsafe {\n $0\n}"); + match ty.as_ref().and_then(|t| t.original.as_adt()) { + Some(hir::Adt::Union(_)) => (), + _ => { + cov_mark::hit!(functional_update); + let missing_fields = + ctx.sema.record_literal_missing_fields(record_expr); + if !missing_fields.is_empty() { + add_default_update(acc, ctx, ty); + } + } + }; } - add_keyword("match", "match $1 {\n $0\n}"); - add_keyword("while", "while $1 {\n $0\n}"); - add_keyword("while let", "while let $1 = $2 {\n $0\n}"); - add_keyword("loop", "loop {\n $0\n}"); - if in_match_guard { - add_keyword("if", "if $0"); - } else { - add_keyword("if", "if $1 {\n $0\n}"); - } - add_keyword("if let", "if let $1 = $2 {\n $0\n}"); - add_keyword("for", "for $1 in $2 {\n $0\n}"); - add_keyword("true", "true"); - add_keyword("false", "false"); + None => { + let mut add_keyword = |kw, snippet| { + acc.add_keyword_snippet_expr(ctx, incomplete_let, kw, snippet) + }; - if in_condition || in_block_expr { - add_keyword("let", "let"); - } - - if after_if_expr { - add_keyword("else", "else {\n $0\n}"); - add_keyword("else if", "else if $1 {\n $0\n}"); - } - - if wants_mut_token { - add_keyword("mut", "mut "); - } - - if in_loop_body { - if in_block_expr { - add_keyword("continue", "continue;"); - add_keyword("break", "break;"); - } else { - add_keyword("continue", "continue"); - add_keyword("break", "break"); + if !in_block_expr { + add_keyword("unsafe", "unsafe {\n $0\n}"); } - } + add_keyword("match", "match $1 {\n $0\n}"); + add_keyword("while", "while $1 {\n $0\n}"); + add_keyword("while let", "while let $1 = $2 {\n $0\n}"); + add_keyword("loop", "loop {\n $0\n}"); + if in_match_guard { + add_keyword("if", "if $0"); + } else { + add_keyword("if", "if $1 {\n $0\n}"); + } + add_keyword("if let", "if let $1 = $2 {\n $0\n}"); + add_keyword("for", "for $1 in $2 {\n $0\n}"); + add_keyword("true", "true"); + add_keyword("false", "false"); - if let Some(ty) = innermost_ret_ty { - add_keyword( - "return", - match (in_block_expr, ty.is_unit()) { - (true, true) => "return ;", - (true, false) => "return;", - (false, true) => "return $0", - (false, false) => "return", - }, - ); + if in_condition || in_block_expr { + add_keyword("let", "let"); + } + + if after_if_expr { + add_keyword("else", "else {\n $0\n}"); + add_keyword("else if", "else if $1 {\n $0\n}"); + } + + if wants_mut_token { + add_keyword("mut", "mut "); + } + + if in_loop_body { + if in_block_expr { + add_keyword("continue", "continue;"); + add_keyword("break", "break;"); + } else { + add_keyword("continue", "continue"); + add_keyword("break", "break"); + } + } + + if let Some(ty) = innermost_ret_ty { + add_keyword( + "return", + match (in_block_expr, ty.is_unit()) { + (true, true) => "return ;", + (true, false) => "return;", + (false, true) => "return $0", + (false, false) => "return", + }, + ); + } } } } diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs index e9256803cc4f..785db6fde1d5 100644 --- a/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs @@ -233,7 +233,8 @@ fn add_type_alias_impl( type_alias: hir::TypeAlias, ) { let alias_name = type_alias.name(ctx.db); - let (alias_name, escaped_name) = (alias_name.to_smol_str(), alias_name.escaped().to_smol_str()); + let (alias_name, escaped_name) = + (alias_name.unescaped().to_smol_str(), alias_name.to_smol_str()); let label = format!("type {} =", alias_name); let replacement = format!("type {} = ", escaped_name); diff --git a/crates/ide-completion/src/completions/record.rs b/crates/ide-completion/src/completions/record.rs index 1c9042390d3b..bfb98b9f2777 100644 --- a/crates/ide-completion/src/completions/record.rs +++ b/crates/ide-completion/src/completions/record.rs @@ -3,7 +3,7 @@ use ide_db::SymbolKind; use syntax::ast::{self, Expr}; use crate::{ - context::{DotAccess, DotAccessKind, ExprCtx, PathCompletionCtx, PatternContext, Qualified}, + context::{DotAccess, DotAccessKind, PatternContext}, CompletionContext, CompletionItem, CompletionItemKind, CompletionRelevance, CompletionRelevancePostfixMatch, Completions, }; @@ -14,7 +14,24 @@ pub(crate) fn complete_record_pattern_fields( pattern_ctx: &PatternContext, ) { if let PatternContext { record_pat: Some(record_pat), .. } = pattern_ctx { - complete_fields(acc, ctx, ctx.sema.record_pattern_missing_fields(record_pat)); + let ty = ctx.sema.type_of_pat(&ast::Pat::RecordPat(record_pat.clone())); + let missing_fields = match ty.as_ref().and_then(|t| t.original.as_adt()) { + Some(hir::Adt::Union(un)) => { + // ctx.sema.record_pat_missing_fields will always return + // an empty Vec on a union literal. This is normally + // reasonable, but here we'd like to present the full list + // of fields if the literal is empty. + let were_fields_specified = + record_pat.record_pat_field_list().and_then(|fl| fl.fields().next()).is_some(); + + match were_fields_specified { + false => un.fields(ctx.db).into_iter().map(|f| (f, f.ty(ctx.db))).collect(), + true => return, + } + } + _ => ctx.sema.record_pattern_missing_fields(record_pat), + }; + complete_fields(acc, ctx, missing_fields); } } @@ -42,8 +59,13 @@ pub(crate) fn complete_record_expr_fields( } _ => { let missing_fields = ctx.sema.record_literal_missing_fields(record_expr); - add_default_update(acc, ctx, ty, &missing_fields); + + if !missing_fields.is_empty() { + cov_mark::hit!(functional_update_field); + add_default_update(acc, ctx, ty); + } if dot_prefix { + cov_mark::hit!(functional_update_one_dot); let mut item = CompletionItem::new(CompletionItemKind::Snippet, ctx.source_range(), ".."); item.insert_text("."); @@ -56,41 +78,18 @@ pub(crate) fn complete_record_expr_fields( complete_fields(acc, ctx, missing_fields); } -// FIXME: This should probably be part of complete_path_expr -pub(crate) fn complete_record_expr_func_update( - acc: &mut Completions, - ctx: &CompletionContext<'_>, - path_ctx: &PathCompletionCtx, - expr_ctx: &ExprCtx, -) { - if !matches!(path_ctx.qualified, Qualified::No) { - return; - } - if let ExprCtx { is_func_update: Some(record_expr), .. } = expr_ctx { - let ty = ctx.sema.type_of_expr(&Expr::RecordExpr(record_expr.clone())); - - match ty.as_ref().and_then(|t| t.original.as_adt()) { - Some(hir::Adt::Union(_)) => (), - _ => { - let missing_fields = ctx.sema.record_literal_missing_fields(record_expr); - add_default_update(acc, ctx, ty, &missing_fields); - } - }; - } -} - -fn add_default_update( +pub(crate) fn add_default_update( acc: &mut Completions, ctx: &CompletionContext<'_>, ty: Option, - missing_fields: &[(hir::Field, hir::Type)], ) { let default_trait = ctx.famous_defs().core_default_Default(); - let impl_default_trait = default_trait + let impls_default_trait = default_trait .zip(ty.as_ref()) .map_or(false, |(default_trait, ty)| ty.original.impls_trait(ctx.db, default_trait, &[])); - if impl_default_trait && !missing_fields.is_empty() { + if impls_default_trait { // FIXME: This should make use of scope_def like completions so we get all the other goodies + // that is we should handle this like actually completing the default function let completion_text = "..Default::default()"; let mut item = CompletionItem::new(SymbolKind::Field, ctx.source_range(), completion_text); let completion_text = diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index e35f79d2b695..759742d34723 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -134,6 +134,7 @@ pub(crate) struct ExprCtx { pub(crate) in_condition: bool, pub(crate) incomplete_let: bool, pub(crate) ref_expr_parent: Option, + /// The surrounding RecordExpression we are completing a functional update pub(crate) is_func_update: Option, pub(crate) self_param: Option, pub(crate) innermost_ret_ty: Option, diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 946134b0ff95..693007ca3071 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -117,7 +117,7 @@ pub(crate) fn render_field( ) -> CompletionItem { let is_deprecated = ctx.is_deprecated(field); let name = field.name(ctx.db()); - let (name, escaped_name) = (name.to_smol_str(), name.escaped().to_smol_str()); + let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let mut item = CompletionItem::new( SymbolKind::Field, ctx.source_range(), @@ -283,8 +283,8 @@ fn render_resolution_path( let name = local_name.to_smol_str(); let mut item = render_resolution_simple_(ctx, &local_name, import_to_add, resolution); - if local_name.escaped().is_escaped() { - item.insert_text(local_name.escaped().to_smol_str()); + if local_name.is_escaped() { + item.insert_text(local_name.to_smol_str()); } // Add `<>` for generic types let type_path_no_ty_args = matches!( @@ -306,7 +306,7 @@ fn render_resolution_path( item.lookup_by(name.clone()) .label(SmolStr::from_iter([&name, "<…>"])) .trigger_call_info() - .insert_snippet(cap, format!("{}<$0>", local_name.escaped())); + .insert_snippet(cap, format!("{}<$0>", local_name)); } } } @@ -342,7 +342,8 @@ fn render_resolution_simple_( let ctx = ctx.import_to_add(import_to_add); let kind = res_to_kind(resolution); - let mut item = CompletionItem::new(kind, ctx.source_range(), local_name.to_smol_str()); + let mut item = + CompletionItem::new(kind, ctx.source_range(), local_name.unescaped().to_smol_str()); item.set_relevance(ctx.completion_relevance()) .set_documentation(scope_def_docs(db, resolution)) .set_deprecated(scope_def_is_deprecated(&ctx, resolution)); diff --git a/crates/ide-completion/src/render/const_.rs b/crates/ide-completion/src/render/const_.rs index a810eef18dd1..93ea825e0042 100644 --- a/crates/ide-completion/src/render/const_.rs +++ b/crates/ide-completion/src/render/const_.rs @@ -13,7 +13,7 @@ pub(crate) fn render_const(ctx: RenderContext<'_>, const_: hir::Const) -> Option fn render(ctx: RenderContext<'_>, const_: hir::Const) -> Option { let db = ctx.db(); let name = const_.name(db)?; - let (name, escaped_name) = (name.to_smol_str(), name.escaped().to_smol_str()); + let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let detail = const_.display(db).to_string(); let mut item = CompletionItem::new(SymbolKind::Const, ctx.source_range(), name.clone()); diff --git a/crates/ide-completion/src/render/function.rs b/crates/ide-completion/src/render/function.rs index 4b5535718c5d..9cf64691298e 100644 --- a/crates/ide-completion/src/render/function.rs +++ b/crates/ide-completion/src/render/function.rs @@ -52,10 +52,10 @@ fn render( let (call, escaped_call) = match &func_kind { FuncKind::Method(_, Some(receiver)) => ( - format!("{}.{}", receiver, &name).into(), - format!("{}.{}", receiver.escaped(), name.escaped()).into(), + format!("{}.{}", receiver.unescaped(), name.unescaped()).into(), + format!("{}.{}", receiver, name).into(), ), - _ => (name.to_smol_str(), name.escaped().to_smol_str()), + _ => (name.unescaped().to_smol_str(), name.to_smol_str()), }; let mut item = CompletionItem::new( if func.self_param(db).is_some() { @@ -96,7 +96,7 @@ fn render( item.set_documentation(ctx.docs(func)) .set_deprecated(ctx.is_deprecated(func) || ctx.is_deprecated_assoc_item(func)) .detail(detail(db, func)) - .lookup_by(name.to_smol_str()); + .lookup_by(name.unescaped().to_smol_str()); match ctx.completion.config.snippet_cap { Some(cap) => { diff --git a/crates/ide-completion/src/render/literal.rs b/crates/ide-completion/src/render/literal.rs index 91a253f8fc8c..707dea206be5 100644 --- a/crates/ide-completion/src/render/literal.rs +++ b/crates/ide-completion/src/render/literal.rs @@ -73,7 +73,7 @@ fn render( None => (name.clone().into(), name.into(), false), }; let (qualified_name, escaped_qualified_name) = - (qualified_name.to_string(), qualified_name.escaped().to_string()); + (qualified_name.unescaped().to_string(), qualified_name.to_string()); let snippet_cap = ctx.snippet_cap(); let mut rendered = match kind { diff --git a/crates/ide-completion/src/render/macro_.rs b/crates/ide-completion/src/render/macro_.rs index ca2269f1398f..eabd0bd17d65 100644 --- a/crates/ide-completion/src/render/macro_.rs +++ b/crates/ide-completion/src/render/macro_.rs @@ -46,7 +46,7 @@ fn render( ctx.source_range() }; - let (name, escaped_name) = (name.to_smol_str(), name.escaped().to_smol_str()); + let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let docs = ctx.docs(macro_); let docs_str = docs.as_ref().map(Documentation::as_str).unwrap_or_default(); let is_fn_like = macro_.is_fn_like(completion.db); diff --git a/crates/ide-completion/src/render/pattern.rs b/crates/ide-completion/src/render/pattern.rs index 34a384f2f7ae..1c1299e33b67 100644 --- a/crates/ide-completion/src/render/pattern.rs +++ b/crates/ide-completion/src/render/pattern.rs @@ -31,7 +31,7 @@ pub(crate) fn render_struct_pat( } let name = local_name.unwrap_or_else(|| strukt.name(ctx.db())); - let (name, escaped_name) = (name.to_smol_str(), name.escaped().to_smol_str()); + let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let kind = strukt.kind(ctx.db()); let label = format_literal_label(name.as_str(), kind); let pat = render_pat(&ctx, pattern_ctx, &escaped_name, kind, &visible_fields, fields_omitted)?; @@ -53,10 +53,10 @@ pub(crate) fn render_variant_pat( let (visible_fields, fields_omitted) = visible_fields(ctx.completion, &fields, variant)?; let (name, escaped_name) = match path { - Some(path) => (path.to_string().into(), path.escaped().to_string().into()), + Some(path) => (path.unescaped().to_string().into(), path.to_string().into()), None => { let name = local_name.unwrap_or_else(|| variant.name(ctx.db())); - (name.to_smol_str(), name.escaped().to_smol_str()) + (name.unescaped().to_smol_str(), name.to_smol_str()) } }; @@ -146,7 +146,7 @@ fn render_record_as_pat( format!( "{name} {{ {}{} }}", fields.enumerate().format_with(", ", |(idx, field), f| { - f(&format_args!("{}${}", field.name(db).escaped(), idx + 1)) + f(&format_args!("{}${}", field.name(db), idx + 1)) }), if fields_omitted { ", .." } else { "" }, name = name @@ -155,7 +155,7 @@ fn render_record_as_pat( None => { format!( "{name} {{ {}{} }}", - fields.map(|field| field.name(db).escaped().to_smol_str()).format(", "), + fields.map(|field| field.name(db).to_smol_str()).format(", "), if fields_omitted { ", .." } else { "" }, name = name ) diff --git a/crates/ide-completion/src/render/type_alias.rs b/crates/ide-completion/src/render/type_alias.rs index f1b23c76e7b4..de919429f2f9 100644 --- a/crates/ide-completion/src/render/type_alias.rs +++ b/crates/ide-completion/src/render/type_alias.rs @@ -32,11 +32,11 @@ fn render( let name = type_alias.name(db); let (name, escaped_name) = if with_eq { ( + SmolStr::from_iter([&name.unescaped().to_smol_str(), " = "]), SmolStr::from_iter([&name.to_smol_str(), " = "]), - SmolStr::from_iter([&name.escaped().to_smol_str(), " = "]), ) } else { - (name.to_smol_str(), name.escaped().to_smol_str()) + (name.unescaped().to_smol_str(), name.to_smol_str()) }; let detail = type_alias.display(db).to_string(); diff --git a/crates/ide-completion/src/render/union_literal.rs b/crates/ide-completion/src/render/union_literal.rs index 9c9540a9bd96..bb32330f276d 100644 --- a/crates/ide-completion/src/render/union_literal.rs +++ b/crates/ide-completion/src/render/union_literal.rs @@ -21,8 +21,8 @@ pub(crate) fn render_union_literal( let name = local_name.unwrap_or_else(|| un.name(ctx.db())); let (qualified_name, escaped_qualified_name) = match path { - Some(p) => (p.to_string(), p.escaped().to_string()), - None => (name.to_string(), name.escaped().to_string()), + Some(p) => (p.unescaped().to_string(), p.to_string()), + None => (name.unescaped().to_string(), name.to_string()), }; let mut item = CompletionItem::new( @@ -42,15 +42,15 @@ pub(crate) fn render_union_literal( format!( "{} {{ ${{1|{}|}}: ${{2:()}} }}$0", escaped_qualified_name, - fields.iter().map(|field| field.name(ctx.db()).escaped().to_smol_str()).format(",") + fields.iter().map(|field| field.name(ctx.db()).to_smol_str()).format(",") ) } else { format!( "{} {{ {} }}", escaped_qualified_name, - fields.iter().format_with(", ", |field, f| { - f(&format_args!("{}: ()", field.name(ctx.db()).escaped())) - }) + fields + .iter() + .format_with(", ", |field, f| { f(&format_args!("{}: ()", field.name(ctx.db()))) }) ) }; diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs index 003a0c11ed2f..664845330eb8 100644 --- a/crates/ide-completion/src/render/variant.rs +++ b/crates/ide-completion/src/render/variant.rs @@ -24,9 +24,9 @@ pub(crate) fn render_record_lit( ) -> RenderedLiteral { let completions = fields.iter().enumerate().format_with(", ", |(idx, field), f| { if snippet_cap.is_some() { - f(&format_args!("{}: ${{{}:()}}", field.name(db).escaped(), idx + 1)) + f(&format_args!("{}: ${{{}:()}}", field.name(db), idx + 1)) } else { - f(&format_args!("{}: ()", field.name(db).escaped())) + f(&format_args!("{}: ()", field.name(db))) } }); diff --git a/crates/ide-completion/src/tests/record.rs b/crates/ide-completion/src/tests/record.rs index f6accc68e5e8..328faaa060f0 100644 --- a/crates/ide-completion/src/tests/record.rs +++ b/crates/ide-completion/src/tests/record.rs @@ -103,47 +103,9 @@ fn foo(f: Struct) { } #[test] -fn functional_update() { - // FIXME: This should filter out all completions that do not have the type `Foo` - check( - r#" -//- minicore:default -struct Foo { foo1: u32, foo2: u32 } -impl Default for Foo { - fn default() -> Self { loop {} } -} +fn in_functional_update() { + cov_mark::check!(functional_update); -fn main() { - let thing = 1; - let foo = Foo { foo1: 0, foo2: 0 }; - let foo2 = Foo { thing, $0 } -} -"#, - expect![[r#" - fd ..Default::default() - fd foo1 u32 - fd foo2 u32 - "#]], - ); - check( - r#" -//- minicore:default -struct Foo { foo1: u32, foo2: u32 } -impl Default for Foo { - fn default() -> Self { loop {} } -} - -fn main() { - let thing = 1; - let foo = Foo { foo1: 0, foo2: 0 }; - let foo2 = Foo { thing, .$0 } -} -"#, - expect![[r#" - fd ..Default::default() - sn .. - "#]], - ); check( r#" //- minicore:default @@ -192,6 +154,56 @@ fn main() { ); } +#[test] +fn functional_update_no_dot() { + cov_mark::check!(functional_update_field); + // FIXME: This should filter out all completions that do not have the type `Foo` + check( + r#" +//- minicore:default +struct Foo { foo1: u32, foo2: u32 } +impl Default for Foo { + fn default() -> Self { loop {} } +} + +fn main() { + let thing = 1; + let foo = Foo { foo1: 0, foo2: 0 }; + let foo2 = Foo { thing, $0 } +} +"#, + expect![[r#" + fd ..Default::default() + fd foo1 u32 + fd foo2 u32 + "#]], + ); +} + +#[test] +fn functional_update_one_dot() { + cov_mark::check!(functional_update_one_dot); + check( + r#" +//- minicore:default +struct Foo { foo1: u32, foo2: u32 } +impl Default for Foo { + fn default() -> Self { loop {} } +} + +fn main() { + let thing = 1; + let foo = Foo { foo1: 0, foo2: 0 }; + let foo2 = Foo { thing, .$0 } +} +"#, + expect![[r#" + fd ..Default::default() + sn .. + "#]], + ); +} + #[test] fn empty_union_literal() { check( diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index bd038cdaa068..9eaabeec7a4e 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -4,7 +4,7 @@ //! get a super-set of matches. Then, we we confirm each match using precise //! name resolution. -use std::{convert::TryInto, mem, sync::Arc}; +use std::{mem, sync::Arc}; use base_db::{FileId, FileRange, SourceDatabase, SourceDatabaseExt}; use hir::{DefWithBody, HasAttrs, HasSource, InFile, ModuleSource, Semantics, Visibility}; diff --git a/crates/ide-db/src/source_change.rs b/crates/ide-db/src/source_change.rs index 8132c73ef26b..21314ad74ef9 100644 --- a/crates/ide-db/src/source_change.rs +++ b/crates/ide-db/src/source_change.rs @@ -3,12 +3,15 @@ //! //! It can be viewed as a dual for `Change`. -use std::{collections::hash_map::Entry, iter}; +use std::{collections::hash_map::Entry, iter, mem}; use base_db::{AnchoredPathBuf, FileId}; use rustc_hash::FxHashMap; use stdx::never; -use text_edit::TextEdit; +use syntax::{algo, AstNode, SyntaxNode, SyntaxNodePtr, TextRange, TextSize}; +use text_edit::{TextEdit, TextEditBuilder}; + +use crate::SnippetCap; #[derive(Default, Debug, Clone)] pub struct SourceChange { @@ -81,6 +84,135 @@ impl From> for SourceChange { } } +pub struct SourceChangeBuilder { + pub edit: TextEditBuilder, + pub file_id: FileId, + pub source_change: SourceChange, + pub trigger_signature_help: bool, + + /// Maps the original, immutable `SyntaxNode` to a `clone_for_update` twin. + pub mutated_tree: Option, +} + +pub struct TreeMutator { + immutable: SyntaxNode, + mutable_clone: SyntaxNode, +} + +impl TreeMutator { + pub fn new(immutable: &SyntaxNode) -> TreeMutator { + let immutable = immutable.ancestors().last().unwrap(); + let mutable_clone = immutable.clone_for_update(); + TreeMutator { immutable, mutable_clone } + } + + pub fn make_mut(&self, node: &N) -> N { + N::cast(self.make_syntax_mut(node.syntax())).unwrap() + } + + pub fn make_syntax_mut(&self, node: &SyntaxNode) -> SyntaxNode { + let ptr = SyntaxNodePtr::new(node); + ptr.to_node(&self.mutable_clone) + } +} + +impl SourceChangeBuilder { + pub fn new(file_id: FileId) -> SourceChangeBuilder { + SourceChangeBuilder { + edit: TextEdit::builder(), + file_id, + source_change: SourceChange::default(), + trigger_signature_help: false, + mutated_tree: None, + } + } + + pub fn edit_file(&mut self, file_id: FileId) { + self.commit(); + self.file_id = file_id; + } + + fn commit(&mut self) { + if let Some(tm) = self.mutated_tree.take() { + algo::diff(&tm.immutable, &tm.mutable_clone).into_text_edit(&mut self.edit) + } + + let edit = mem::take(&mut self.edit).finish(); + if !edit.is_empty() { + self.source_change.insert_source_edit(self.file_id, edit); + } + } + + pub fn make_mut(&mut self, node: N) -> N { + self.mutated_tree.get_or_insert_with(|| TreeMutator::new(node.syntax())).make_mut(&node) + } + /// Returns a copy of the `node`, suitable for mutation. + /// + /// Syntax trees in rust-analyzer are typically immutable, and mutating + /// operations panic at runtime. However, it is possible to make a copy of + /// the tree and mutate the copy freely. Mutation is based on interior + /// mutability, and different nodes in the same tree see the same mutations. + /// + /// The typical pattern for an assist is to find specific nodes in the read + /// phase, and then get their mutable couterparts using `make_mut` in the + /// mutable state. + pub fn make_syntax_mut(&mut self, node: SyntaxNode) -> SyntaxNode { + self.mutated_tree.get_or_insert_with(|| TreeMutator::new(&node)).make_syntax_mut(&node) + } + + /// Remove specified `range` of text. + pub fn delete(&mut self, range: TextRange) { + self.edit.delete(range) + } + /// Append specified `text` at the given `offset` + pub fn insert(&mut self, offset: TextSize, text: impl Into) { + self.edit.insert(offset, text.into()) + } + /// Append specified `snippet` at the given `offset` + pub fn insert_snippet( + &mut self, + _cap: SnippetCap, + offset: TextSize, + snippet: impl Into, + ) { + self.source_change.is_snippet = true; + self.insert(offset, snippet); + } + /// Replaces specified `range` of text with a given string. + pub fn replace(&mut self, range: TextRange, replace_with: impl Into) { + self.edit.replace(range, replace_with.into()) + } + /// Replaces specified `range` of text with a given `snippet`. + pub fn replace_snippet( + &mut self, + _cap: SnippetCap, + range: TextRange, + snippet: impl Into, + ) { + self.source_change.is_snippet = true; + self.replace(range, snippet); + } + pub fn replace_ast(&mut self, old: N, new: N) { + algo::diff(old.syntax(), new.syntax()).into_text_edit(&mut self.edit) + } + pub fn create_file(&mut self, dst: AnchoredPathBuf, content: impl Into) { + let file_system_edit = FileSystemEdit::CreateFile { dst, initial_contents: content.into() }; + self.source_change.push_file_system_edit(file_system_edit); + } + pub fn move_file(&mut self, src: FileId, dst: AnchoredPathBuf) { + let file_system_edit = FileSystemEdit::MoveFile { src, dst }; + self.source_change.push_file_system_edit(file_system_edit); + } + pub fn trigger_signature_help(&mut self) { + self.trigger_signature_help = true; + } + + pub fn finish(mut self) -> SourceChange { + self.commit(); + mem::take(&mut self.source_change) + } +} + #[derive(Debug, Clone)] pub enum FileSystemEdit { CreateFile { dst: AnchoredPathBuf, initial_contents: String }, diff --git a/crates/ide-diagnostics/Cargo.toml b/crates/ide-diagnostics/Cargo.toml index e221425edd5b..9b9e21a4ddb5 100644 --- a/crates/ide-diagnostics/Cargo.toml +++ b/crates/ide-diagnostics/Cargo.toml @@ -15,6 +15,7 @@ itertools = "0.10.3" either = "1.7.0" +serde_json = "1.0.82" profile = { path = "../profile", version = "0.0.0" } stdx = { path = "../stdx", version = "0.0.0" } diff --git a/crates/ide-diagnostics/src/handlers/inactive_code.rs b/crates/ide-diagnostics/src/handlers/inactive_code.rs index 97ea5c456a63..5694f33525e0 100644 --- a/crates/ide-diagnostics/src/handlers/inactive_code.rs +++ b/crates/ide-diagnostics/src/handlers/inactive_code.rs @@ -43,7 +43,7 @@ mod tests { use crate::{tests::check_diagnostics_with_config, DiagnosticsConfig}; pub(crate) fn check(ra_fixture: &str) { - let config = DiagnosticsConfig::default(); + let config = DiagnosticsConfig::test_sample(); check_diagnostics_with_config(config, ra_fixture) } diff --git a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs new file mode 100644 index 000000000000..a21db5b2cec9 --- /dev/null +++ b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs @@ -0,0 +1,310 @@ +//! This diagnostic provides an assist for creating a struct definition from a JSON +//! example. + +use hir::{PathResolution, Semantics}; +use ide_db::{ + base_db::FileId, + helpers::mod_path_to_ast, + imports::insert_use::{insert_use, ImportScope}, + source_change::SourceChangeBuilder, + RootDatabase, +}; +use itertools::Itertools; +use stdx::{format_to, never}; +use syntax::{ + ast::{self, make}, + SyntaxKind, SyntaxNode, +}; +use text_edit::TextEdit; + +use crate::{fix, Diagnostic, DiagnosticsConfig, Severity}; + +#[derive(Default)] +struct State { + result: String, + struct_counts: usize, + has_serialize: bool, + has_deserialize: bool, +} + +impl State { + fn generate_new_name(&mut self) -> ast::Name { + self.struct_counts += 1; + make::name(&format!("Struct{}", self.struct_counts)) + } + + fn serde_derive(&self) -> String { + let mut v = vec![]; + if self.has_serialize { + v.push("Serialize"); + } + if self.has_deserialize { + v.push("Deserialize"); + } + match v.as_slice() { + [] => "".to_string(), + [x] => format!("#[derive({x})]\n"), + [x, y] => format!("#[derive({x}, {y})]\n"), + _ => { + never!(); + "".to_string() + } + } + } + + fn build_struct(&mut self, value: &serde_json::Map) -> ast::Type { + let name = self.generate_new_name(); + let ty = make::ty(&name.to_string()); + let strukt = make::struct_( + None, + name, + None, + make::record_field_list(value.iter().sorted_unstable_by_key(|x| x.0).map( + |(name, value)| make::record_field(None, make::name(name), self.type_of(value)), + )) + .into(), + ); + format_to!(self.result, "{}{}\n", self.serde_derive(), strukt); + ty + } + + fn type_of(&mut self, value: &serde_json::Value) -> ast::Type { + match value { + serde_json::Value::Null => make::ty_unit(), + serde_json::Value::Bool(_) => make::ty("bool"), + serde_json::Value::Number(it) => make::ty(if it.is_i64() { "i64" } else { "f64" }), + serde_json::Value::String(_) => make::ty("String"), + serde_json::Value::Array(it) => { + let ty = match it.iter().next() { + Some(x) => self.type_of(x), + None => make::ty_placeholder(), + }; + make::ty(&format!("Vec<{ty}>")) + } + serde_json::Value::Object(x) => self.build_struct(x), + } + } +} + +pub(crate) fn json_in_items( + sema: &Semantics<'_, RootDatabase>, + acc: &mut Vec, + file_id: FileId, + node: &SyntaxNode, + config: &DiagnosticsConfig, +) { + (|| { + if node.kind() == SyntaxKind::ERROR + && node.first_token().map(|x| x.kind()) == Some(SyntaxKind::L_CURLY) + && node.last_token().map(|x| x.kind()) == Some(SyntaxKind::R_CURLY) + { + let node_string = node.to_string(); + if let Ok(it) = serde_json::from_str(&node_string) { + if let serde_json::Value::Object(it) = it { + let import_scope = ImportScope::find_insert_use_container(node, sema)?; + let range = node.text_range(); + let mut edit = TextEdit::builder(); + edit.delete(range); + let mut state = State::default(); + let semantics_scope = sema.scope(node)?; + let scope_resolve = + |it| semantics_scope.speculative_resolve(&make::path_from_text(it)); + let scope_has = |it| scope_resolve(it).is_some(); + let deserialize_resolved = scope_resolve("::serde::Deserialize"); + let serialize_resolved = scope_resolve("::serde::Serialize"); + state.has_deserialize = deserialize_resolved.is_some(); + state.has_serialize = serialize_resolved.is_some(); + state.build_struct(&it); + edit.insert(range.start(), state.result); + acc.push( + Diagnostic::new( + "json-is-not-rust", + "JSON syntax is not valid as a Rust item", + range, + ) + .severity(Severity::WeakWarning) + .with_fixes(Some(vec![{ + let mut scb = SourceChangeBuilder::new(file_id); + let scope = match import_scope.clone() { + ImportScope::File(it) => ImportScope::File(scb.make_mut(it)), + ImportScope::Module(it) => ImportScope::Module(scb.make_mut(it)), + ImportScope::Block(it) => ImportScope::Block(scb.make_mut(it)), + }; + let current_module = semantics_scope.module(); + if !scope_has("Serialize") { + if let Some(PathResolution::Def(it)) = serialize_resolved { + if let Some(it) = current_module.find_use_path_prefixed( + sema.db, + it, + config.insert_use.prefix_kind, + ) { + insert_use( + &scope, + mod_path_to_ast(&it), + &config.insert_use, + ); + } + } + } + if !scope_has("Deserialize") { + if let Some(PathResolution::Def(it)) = deserialize_resolved { + if let Some(it) = current_module.find_use_path_prefixed( + sema.db, + it, + config.insert_use.prefix_kind, + ) { + insert_use( + &scope, + mod_path_to_ast(&it), + &config.insert_use, + ); + } + } + } + let mut sc = scb.finish(); + sc.insert_source_edit(file_id, edit.finish()); + fix("convert_json_to_struct", "Convert JSON to struct", sc, range) + }])), + ); + } + } + } + Some(()) + })(); +} + +#[cfg(test)] +mod tests { + use crate::{ + tests::{check_diagnostics_with_config, check_fix, check_no_fix}, + DiagnosticsConfig, + }; + + #[test] + fn diagnostic_for_simple_case() { + let mut config = DiagnosticsConfig::test_sample(); + config.disabled.insert("syntax-error".to_string()); + check_diagnostics_with_config( + config, + r#" + { "foo": "bar" } + // ^^^^^^^^^^^^^^^^ 💡 weak: JSON syntax is not valid as a Rust item +"#, + ); + } + + #[test] + fn types_of_primitives() { + check_fix( + r#" + //- /lib.rs crate:lib deps:serde + use serde::Serialize; + + fn some_garbage() { + + } + + {$0 + "foo": "bar", + "bar": 2.3, + "baz": null, + "bay": 57, + "box": true + } + //- /serde.rs crate:serde + + pub trait Serialize { + fn serialize() -> u8; + } + "#, + r#" + use serde::Serialize; + + fn some_garbage() { + + } + + #[derive(Serialize)] + struct Struct1{ bar: f64, bay: i64, baz: (), r#box: bool, foo: String } + + "#, + ); + } + + #[test] + fn nested_structs() { + check_fix( + r#" + {$0 + "foo": "bar", + "bar": { + "kind": "Object", + "value": {} + } + } + "#, + r#" + struct Struct3{ } + struct Struct2{ kind: String, value: Struct3 } + struct Struct1{ bar: Struct2, foo: String } + + "#, + ); + } + + #[test] + fn arrays() { + check_fix( + r#" + //- /lib.rs crate:lib deps:serde + { + "of_string": ["foo", "2", "x"], $0 + "of_object": [{ + "x": 10, + "y": 20 + }, { + "x": 10, + "y": 20 + }], + "nested": [[[2]]], + "empty": [] + } + //- /serde.rs crate:serde + + pub trait Serialize { + fn serialize() -> u8; + } + pub trait Deserialize { + fn deserialize() -> u8; + } + "#, + r#" + use serde::Serialize; + use serde::Deserialize; + + #[derive(Serialize, Deserialize)] + struct Struct2{ x: i64, y: i64 } + #[derive(Serialize, Deserialize)] + struct Struct1{ empty: Vec<_>, nested: Vec>>, of_object: Vec, of_string: Vec } + + "#, + ); + } + + #[test] + fn no_emit_outside_of_item_position() { + check_no_fix( + r#" + fn foo() { + let json = {$0 + "foo": "bar", + "bar": { + "kind": "Object", + "value": {} + } + }; + } + "#, + ); + } +} diff --git a/crates/ide-diagnostics/src/handlers/macro_error.rs b/crates/ide-diagnostics/src/handlers/macro_error.rs index d6a66dc15091..43ff4ed5a6c8 100644 --- a/crates/ide-diagnostics/src/handlers/macro_error.rs +++ b/crates/ide-diagnostics/src/handlers/macro_error.rs @@ -79,7 +79,7 @@ pub macro panic { #[test] fn include_macro_should_allow_empty_content() { - let mut config = DiagnosticsConfig::default(); + let mut config = DiagnosticsConfig::test_sample(); // FIXME: This is a false-positive, the file is actually linked in via // `include!` macro diff --git a/crates/ide-diagnostics/src/handlers/no_such_field.rs b/crates/ide-diagnostics/src/handlers/no_such_field.rs index e032c578f028..a80299106bd3 100644 --- a/crates/ide-diagnostics/src/handlers/no_such_field.rs +++ b/crates/ide-diagnostics/src/handlers/no_such_field.rs @@ -68,7 +68,7 @@ fn missing_record_expr_field_fixes( } let new_field = make::record_field( None, - make::name(&record_expr_field.field_name()?.text()), + make::name(&record_expr_field.field_name()?.ident_token()?.text()), make::ty(&new_field_type.display_source_code(sema.db, module.into()).ok()?), ); @@ -109,7 +109,7 @@ fn missing_record_expr_field_fixes( #[cfg(test)] mod tests { - use crate::tests::{check_diagnostics, check_fix}; + use crate::tests::{check_diagnostics, check_fix, check_no_fix}; #[test] fn no_such_field_diagnostics() { @@ -277,6 +277,20 @@ struct Foo { bar: i32, pub(crate) baz: bool } +"#, + ) + } + + #[test] + fn test_tuple_field_on_record_struct() { + check_no_fix( + r#" +struct Struct {} +fn main() { + Struct { + 0$0: 0 + } +} "#, ) } diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs index 41abaa836f5f..61e63ea7a93c 100644 --- a/crates/ide-diagnostics/src/lib.rs +++ b/crates/ide-diagnostics/src/lib.rs @@ -50,6 +50,7 @@ mod handlers { pub(crate) mod field_shorthand; pub(crate) mod useless_braces; pub(crate) mod unlinked_file; + pub(crate) mod json_is_not_rust; } #[cfg(test)] @@ -59,6 +60,7 @@ use hir::{diagnostics::AnyDiagnostic, InFile, Semantics}; use ide_db::{ assists::{Assist, AssistId, AssistKind, AssistResolveStrategy}, base_db::{FileId, FileRange, SourceDatabase}, + imports::insert_use::InsertUseConfig, label::Label, source_change::SourceChange, FxHashSet, RootDatabase, @@ -139,13 +141,37 @@ impl Default for ExprFillDefaultMode { } } -#[derive(Default, Debug, Clone)] +#[derive(Debug, Clone)] pub struct DiagnosticsConfig { pub proc_macros_enabled: bool, pub proc_attr_macros_enabled: bool, pub disable_experimental: bool, pub disabled: FxHashSet, pub expr_fill_default: ExprFillDefaultMode, + // FIXME: We may want to include a whole `AssistConfig` here + pub insert_use: InsertUseConfig, +} + +impl DiagnosticsConfig { + pub fn test_sample() -> Self { + use hir::PrefixKind; + use ide_db::imports::insert_use::ImportGranularity; + + Self { + proc_macros_enabled: Default::default(), + proc_attr_macros_enabled: Default::default(), + disable_experimental: Default::default(), + disabled: Default::default(), + expr_fill_default: Default::default(), + insert_use: InsertUseConfig { + granularity: ImportGranularity::Preserve, + enforce_granularity: false, + prefix_kind: PrefixKind::Plain, + group: false, + skip_glob_imports: false, + }, + } + } } struct DiagnosticsContext<'a> { @@ -172,9 +198,12 @@ pub fn diagnostics( }), ); - for node in parse.tree().syntax().descendants() { + let parse = sema.parse(file_id); + + for node in parse.syntax().descendants() { handlers::useless_braces::useless_braces(&mut res, file_id, &node); handlers::field_shorthand::field_shorthand(&mut res, file_id, &node); + handlers::json_is_not_rust::json_in_items(&sema, &mut res, file_id, &node, &config); } let module = sema.to_module_def(file_id); diff --git a/crates/ide-diagnostics/src/tests.rs b/crates/ide-diagnostics/src/tests.rs index 7312bca32fed..729619cfde03 100644 --- a/crates/ide-diagnostics/src/tests.rs +++ b/crates/ide-diagnostics/src/tests.rs @@ -37,7 +37,7 @@ fn check_nth_fix(nth: usize, ra_fixture_before: &str, ra_fixture_after: &str) { let after = trim_indent(ra_fixture_after); let (db, file_position) = RootDatabase::with_position(ra_fixture_before); - let mut conf = DiagnosticsConfig::default(); + let mut conf = DiagnosticsConfig::test_sample(); conf.expr_fill_default = ExprFillDefaultMode::Default; let diagnostic = super::diagnostics(&db, &conf, &AssistResolveStrategy::All, file_position.file_id) @@ -69,7 +69,7 @@ pub(crate) fn check_no_fix(ra_fixture: &str) { let (db, file_position) = RootDatabase::with_position(ra_fixture); let diagnostic = super::diagnostics( &db, - &DiagnosticsConfig::default(), + &DiagnosticsConfig::test_sample(), &AssistResolveStrategy::All, file_position.file_id, ) @@ -82,7 +82,7 @@ pub(crate) fn check_expect(ra_fixture: &str, expect: Expect) { let (db, file_id) = RootDatabase::with_single_file(ra_fixture); let diagnostics = super::diagnostics( &db, - &DiagnosticsConfig::default(), + &DiagnosticsConfig::test_sample(), &AssistResolveStrategy::All, file_id, ); @@ -91,7 +91,7 @@ pub(crate) fn check_expect(ra_fixture: &str, expect: Expect) { #[track_caller] pub(crate) fn check_diagnostics(ra_fixture: &str) { - let mut config = DiagnosticsConfig::default(); + let mut config = DiagnosticsConfig::test_sample(); config.disabled.insert("inactive-code".to_string()); check_diagnostics_with_config(config, ra_fixture) } @@ -127,7 +127,7 @@ pub(crate) fn check_diagnostics_with_config(config: DiagnosticsConfig, ra_fixtur #[test] fn test_disabled_diagnostics() { - let mut config = DiagnosticsConfig::default(); + let mut config = DiagnosticsConfig::test_sample(); config.disabled.insert("unresolved-module".into()); let (db, file_id) = RootDatabase::with_single_file(r#"mod foo;"#); @@ -137,7 +137,7 @@ fn test_disabled_diagnostics() { let diagnostics = super::diagnostics( &db, - &DiagnosticsConfig::default(), + &DiagnosticsConfig::test_sample(), &AssistResolveStrategy::All, file_id, ); diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index b2123b9a8793..d6cd5783f05e 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -1,4 +1,4 @@ -use std::{convert::TryInto, mem::discriminant}; +use std::mem::discriminant; use crate::{doc_links::token_as_doc_comment, FilePosition, NavigationTarget, RangeInfo, TryToNav}; use hir::{AsAssocItem, AssocItem, Semantics}; diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs index b0853b10fde2..0181c6b8e456 100644 --- a/crates/ide/src/runnables.rs +++ b/crates/ide/src/runnables.rs @@ -2225,4 +2225,190 @@ macro_rules! foo { "#]], ); } + + #[test] + fn test_paths_with_raw_ident() { + check( + r#" +//- /lib.rs +$0 +mod r#mod { + #[test] + fn r#fn() {} + + /// ``` + /// ``` + fn r#for() {} + + /// ``` + /// ``` + struct r#struct(r#type); + + /// ``` + /// ``` + impl r#struct { + /// ``` + /// ``` + fn r#fn() {} + } + + enum r#enum {} + impl r#struct { + /// ``` + /// ``` + fn r#fn() {} + } + + trait r#trait {} + + /// ``` + /// ``` + impl r#trait for r#struct {} +} +"#, + &[TestMod, Test, DocTest, DocTest, DocTest, DocTest, DocTest, DocTest], + expect![[r#" + [ + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 1..461, + focus_range: 5..10, + name: "r#mod", + kind: Module, + description: "mod r#mod", + }, + kind: TestMod { + path: "r#mod", + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 17..41, + focus_range: 32..36, + name: "r#fn", + kind: Function, + }, + kind: Test { + test_id: Path( + "r#mod::r#fn", + ), + attr: TestAttr { + ignore: false, + }, + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 47..84, + name: "r#for", + }, + kind: DocTest { + test_id: Path( + "r#mod::r#for", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 90..146, + name: "r#struct", + }, + kind: DocTest { + test_id: Path( + "r#mod::r#struct", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 152..266, + focus_range: 189..205, + name: "impl", + kind: Impl, + }, + kind: DocTest { + test_id: Path( + "r#struct", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 216..260, + name: "r#fn", + }, + kind: DocTest { + test_id: Path( + "r#mod::r#struct::r#fn", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 323..367, + name: "r#fn", + }, + kind: DocTest { + test_id: Path( + "r#mod::r#struct::r#fn", + ), + }, + cfg: None, + }, + Runnable { + use_name_in_title: false, + nav: NavigationTarget { + file_id: FileId( + 0, + ), + full_range: 401..459, + focus_range: 445..456, + name: "impl", + kind: Impl, + }, + kind: DocTest { + test_id: Path( + "r#struct", + ), + }, + cfg: None, + }, + ] + "#]], + ) + } } diff --git a/crates/ide/src/status.rs b/crates/ide/src/status.rs index 32e39f82a0e9..f4d0387440d4 100644 --- a/crates/ide/src/status.rs +++ b/crates/ide/src/status.rs @@ -1,4 +1,4 @@ -use std::{fmt, iter::FromIterator, sync::Arc}; +use std::{fmt, sync::Arc}; use hir::{ExpandResult, MacroFile}; use ide_db::base_db::{ diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index aca6ecd424e4..e4c56565b92d 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -228,16 +228,7 @@ fn convert_tokens(conv: &mut C) -> tt::Subtree { } let spacing = match conv.peek().map(|next| next.kind(conv)) { - Some(kind) - if !kind.is_trivia() - && kind.is_punct() - && kind != T!['['] - && kind != T!['{'] - && kind != T!['('] - && kind != UNDERSCORE => - { - tt::Spacing::Joint - } + Some(kind) if !kind.is_trivia() => tt::Spacing::Joint, _ => tt::Spacing::Alone, }; let char = match token.to_char(conv) { diff --git a/crates/parser/src/grammar/expressions.rs b/crates/parser/src/grammar/expressions.rs index e7402104eb83..dcaceade652a 100644 --- a/crates/parser/src/grammar/expressions.rs +++ b/crates/parser/src/grammar/expressions.rs @@ -564,8 +564,10 @@ fn path_expr(p: &mut Parser<'_>, r: Restrictions) -> (CompletedMarker, BlockLike // test record_lit // fn foo() { // S {}; +// S { x }; // S { x, y: 32, }; // S { x, y: 32, ..Default::default() }; +// S { x: ::default() }; // TupleStruct { 0: 1 }; // } pub(crate) fn record_expr_field_list(p: &mut Parser<'_>) { @@ -582,16 +584,26 @@ pub(crate) fn record_expr_field_list(p: &mut Parser<'_>) { match p.current() { IDENT | INT_NUMBER => { - // test_err record_literal_before_ellipsis_recovery + // test_err record_literal_missing_ellipsis_recovery // fn main() { - // S { field ..S::default() } + // S { S::default() } // } - if p.nth_at(1, T![:]) || p.nth_at(1, T![..]) { - name_ref_or_index(p); - p.expect(T![:]); + if p.nth_at(1, T![::]) { + m.abandon(p); + p.expect(T![..]); + expr(p); + } else { + // test_err record_literal_before_ellipsis_recovery + // fn main() { + // S { field ..S::default() } + // } + if p.nth_at(1, T![:]) || p.nth_at(1, T![..]) { + name_ref_or_index(p); + p.expect(T![:]); + } + expr(p); + m.complete(p, RECORD_EXPR_FIELD); } - expr(p); - m.complete(p, RECORD_EXPR_FIELD); } T![.] if p.at(T![..]) => { m.abandon(p); diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs index 4cbf10306149..7e21a808da0a 100644 --- a/crates/parser/src/grammar/patterns.rs +++ b/crates/parser/src/grammar/patterns.rs @@ -75,6 +75,16 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { // Some(1..) => () // } // + // match () { + // S { a: 0 } => (), + // S { a: 1.. } => (), + // } + // + // match () { + // [0] => (), + // [1..] => (), + // } + // // match (10 as u8, 5 as u8) { // (0, _) => (), // (1.., _) => () @@ -88,11 +98,27 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { let m = lhs.precede(p); p.bump(range_op); - // `0 .. =>` or `let 0 .. =` or `Some(0 .. )` - // ^ ^ ^ - if p.at(T![=]) | p.at(T![')']) | p.at(T![,]) { + // testing if we're at one of the following positions: + // `0 .. =>` + // ^ + // `let 0 .. =` + // ^ + // `let 0..: _ =` + // ^ + // (1.., _) + // ^ + // `Some(0 .. )` + // ^ + // `S { t: 0.. }` + // ^ + // `[0..]` + // ^ + if matches!(p.current(), T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']']) { // test half_open_range_pat - // fn f() { let 0 .. = 1u32; } + // fn f() { + // let 0 .. = 1u32; + // let 0..: _ = 1u32; + // } } else { atom_pat(p, recovery_set); } diff --git a/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rast b/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rast new file mode 100644 index 000000000000..0c5b618e6f05 --- /dev/null +++ b/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rast @@ -0,0 +1,43 @@ +SOURCE_FILE + FN + FN_KW "fn" + WHITESPACE " " + NAME + IDENT "main" + PARAM_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + BLOCK_EXPR + STMT_LIST + L_CURLY "{" + WHITESPACE "\n " + RECORD_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_EXPR_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + CALL_EXPR + PATH_EXPR + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + COLON2 "::" + PATH_SEGMENT + NAME_REF + IDENT "default" + ARG_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + R_CURLY "}" + WHITESPACE "\n" + R_CURLY "}" + WHITESPACE "\n" +error 19: expected DOT2 diff --git a/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rs b/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rs new file mode 100644 index 000000000000..1b594e8ab962 --- /dev/null +++ b/crates/parser/test_data/parser/inline/err/0014_record_literal_missing_ellipsis_recovery.rs @@ -0,0 +1,3 @@ +fn main() { + S { S::default() } +} diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast index 44c967e8dc59..cfef5d3f9538 100644 --- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast +++ b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast @@ -172,6 +172,122 @@ SOURCE_FILE WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n\n " + EXPR_STMT + MATCH_EXPR + MATCH_KW "match" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + MATCH_ARM_LIST + L_CURLY "{" + WHITESPACE "\n " + MATCH_ARM + RECORD_PAT + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_PAT_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + RECORD_PAT_FIELD + NAME_REF + IDENT "a" + COLON ":" + WHITESPACE " " + LITERAL_PAT + LITERAL + INT_NUMBER "0" + WHITESPACE " " + R_CURLY "}" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + MATCH_ARM + RECORD_PAT + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_PAT_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + RECORD_PAT_FIELD + NAME_REF + IDENT "a" + COLON ":" + WHITESPACE " " + RANGE_PAT + LITERAL_PAT + LITERAL + INT_NUMBER "1" + DOT2 ".." + WHITESPACE " " + R_CURLY "}" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + R_CURLY "}" + WHITESPACE "\n\n " + EXPR_STMT + MATCH_EXPR + MATCH_KW "match" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + MATCH_ARM_LIST + L_CURLY "{" + WHITESPACE "\n " + MATCH_ARM + SLICE_PAT + L_BRACK "[" + LITERAL_PAT + LITERAL + INT_NUMBER "0" + R_BRACK "]" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + MATCH_ARM + SLICE_PAT + L_BRACK "[" + RANGE_PAT + LITERAL_PAT + LITERAL + INT_NUMBER "1" + DOT2 ".." + R_BRACK "]" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + R_CURLY "}" + WHITESPACE "\n\n " MATCH_EXPR MATCH_KW "match" WHITESPACE " " diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs index 6c586a895609..2411d51096b3 100644 --- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs +++ b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs @@ -11,6 +11,16 @@ fn main() { Some(1..) => () } + match () { + S { a: 0 } => (), + S { a: 1.. } => (), + } + + match () { + [0] => (), + [1..] => (), + } + match (10 as u8, 5 as u8) { (0, _) => (), (1.., _) => () diff --git a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast index 9997d0ae348c..00948c322f4c 100644 --- a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast +++ b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast @@ -24,6 +24,26 @@ SOURCE_FILE R_CURLY "}" SEMICOLON ";" WHITESPACE "\n " + EXPR_STMT + RECORD_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_EXPR_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + RECORD_EXPR_FIELD + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "x" + WHITESPACE " " + R_CURLY "}" + SEMICOLON ";" + WHITESPACE "\n " EXPR_STMT RECORD_EXPR PATH @@ -100,6 +120,35 @@ SOURCE_FILE R_CURLY "}" SEMICOLON ";" WHITESPACE "\n " + EXPR_STMT + RECORD_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_EXPR_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + RECORD_EXPR_FIELD + NAME_REF + IDENT "x" + COLON ":" + WHITESPACE " " + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + COLON2 "::" + NAME_REF + IDENT "default" + ARG_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + R_CURLY "}" + SEMICOLON ";" + WHITESPACE "\n " EXPR_STMT RECORD_EXPR PATH diff --git a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rs b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rs index 6285e5549772..86411fbb7dc0 100644 --- a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rs +++ b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rs @@ -1,6 +1,8 @@ fn foo() { S {}; + S { x }; S { x, y: 32, }; S { x, y: 32, ..Default::default() }; + S { x: ::default() }; TupleStruct { 0: 1 }; } diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast index 3d3587a70633..4b401b60df0c 100644 --- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast +++ b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast @@ -11,7 +11,7 @@ SOURCE_FILE BLOCK_EXPR STMT_LIST L_CURLY "{" - WHITESPACE " " + WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " @@ -27,6 +27,25 @@ SOURCE_FILE LITERAL INT_NUMBER "1u32" SEMICOLON ";" - WHITESPACE " " + WHITESPACE "\n " + LET_STMT + LET_KW "let" + WHITESPACE " " + RANGE_PAT + LITERAL_PAT + LITERAL + INT_NUMBER "0" + DOT2 ".." + COLON ":" + WHITESPACE " " + INFER_TYPE + UNDERSCORE "_" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1u32" + SEMICOLON ";" + WHITESPACE "\n" R_CURLY "}" WHITESPACE "\n" diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs index 1360eda05658..c9386a221a95 100644 --- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs +++ b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs @@ -1 +1,4 @@ -fn f() { let 0 .. = 1u32; } +fn f() { + let 0 .. = 1u32; + let 0..: _ = 1u32; +} diff --git a/crates/proc-macro-api/src/msg/flat.rs b/crates/proc-macro-api/src/msg/flat.rs index 8437444e183a..268a03bb5359 100644 --- a/crates/proc-macro-api/src/msg/flat.rs +++ b/crates/proc-macro-api/src/msg/flat.rs @@ -35,10 +35,7 @@ //! as we don't have bincode in Cargo.toml yet, lets stick with serde_json for //! the time being. -use std::{ - collections::{HashMap, VecDeque}, - convert::TryInto, -}; +use std::collections::{HashMap, VecDeque}; use serde::{Deserialize, Serialize}; use tt::TokenId; diff --git a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs index 4a07f22779e6..a405497f3c9b 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs @@ -157,7 +157,7 @@ impl From for TokenStream { } /// Collects a number of token trees into a single stream. -impl iter::FromIterator for TokenStream { +impl FromIterator for TokenStream { fn from_iter>(trees: I) -> Self { trees.into_iter().map(TokenStream::from).collect() } @@ -165,7 +165,7 @@ impl iter::FromIterator for TokenStream { /// A "flattening" operation on token streams, collects token trees /// from multiple token streams into a single stream. -impl iter::FromIterator for TokenStream { +impl FromIterator for TokenStream { fn from_iter>(streams: I) -> Self { let mut builder = bridge::client::TokenStreamBuilder::new(); streams.into_iter().for_each(|stream| builder.push(stream.0)); diff --git a/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs index ebdfca00d735..b1e982f4779f 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs @@ -12,7 +12,6 @@ use super::proc_macro::bridge::{self, server}; use std::collections::HashMap; use std::hash::Hash; -use std::iter::FromIterator; use std::ops::Bound; use std::{ascii, vec::IntoIter}; diff --git a/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/mod.rs index c50a16bf4d1d..7ab1f421daf8 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/mod.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/mod.rs @@ -207,7 +207,7 @@ impl ConcatStreamsHelper { } /// Collects a number of token trees into a single stream. -impl iter::FromIterator for TokenStream { +impl FromIterator for TokenStream { fn from_iter>(trees: I) -> Self { trees.into_iter().map(TokenStream::from).collect() } @@ -215,7 +215,7 @@ impl iter::FromIterator for TokenStream { /// A "flattening" operation on token streams, collects token trees /// from multiple token streams into a single stream. -impl iter::FromIterator for TokenStream { +impl FromIterator for TokenStream { fn from_iter>(streams: I) -> Self { let iter = streams.into_iter(); let mut builder = ConcatStreamsHelper::new(iter.size_hint().0); diff --git a/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs index 05a565fbf343..ed49cc759660 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs @@ -12,7 +12,6 @@ use super::proc_macro::bridge::{self, server}; use std::collections::HashMap; use std::hash::Hash; -use std::iter::FromIterator; use std::ops::Bound; use std::{ascii, vec::IntoIter}; diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_64/mod.rs deleted file mode 100644 index 9d56f0eaf888..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/mod.rs +++ /dev/null @@ -1,105 +0,0 @@ -//! Proc macro ABI. - -#[allow(dead_code)] -#[doc(hidden)] -mod proc_macro; - -#[allow(dead_code)] -#[doc(hidden)] -mod ra_server; - -use libloading::Library; -use proc_macro_api::ProcMacroKind; - -use super::PanicMessage; - -pub use ra_server::TokenStream; - -pub(crate) struct Abi { - exported_macros: Vec, -} - -impl From for PanicMessage { - fn from(p: proc_macro::bridge::PanicMessage) -> Self { - Self { message: p.as_str().map(|s| s.to_string()) } - } -} - -impl Abi { - pub unsafe fn from_lib(lib: &Library, symbol_name: String) -> Result { - let macros: libloading::Symbol<'_, &&[proc_macro::bridge::client::ProcMacro]> = - lib.get(symbol_name.as_bytes())?; - Ok(Self { exported_macros: macros.to_vec() }) - } - - pub fn expand( - &self, - macro_name: &str, - macro_body: &tt::Subtree, - attributes: Option<&tt::Subtree>, - ) -> Result { - let parsed_body = TokenStream::with_subtree(macro_body.clone()); - - let parsed_attributes = - attributes.map_or(TokenStream::new(), |attr| TokenStream::with_subtree(attr.clone())); - - for proc_macro in &self.exported_macros { - match proc_macro { - proc_macro::bridge::client::ProcMacro::CustomDerive { - trait_name, client, .. - } if *trait_name == macro_name => { - let res = client.run( - &proc_macro::bridge::server::SameThread, - ra_server::RustAnalyzer::default(), - parsed_body, - true, - ); - return res.map(|it| it.into_subtree()).map_err(PanicMessage::from); - } - proc_macro::bridge::client::ProcMacro::Bang { name, client } - if *name == macro_name => - { - let res = client.run( - &proc_macro::bridge::server::SameThread, - ra_server::RustAnalyzer::default(), - parsed_body, - true, - ); - return res.map(|it| it.into_subtree()).map_err(PanicMessage::from); - } - proc_macro::bridge::client::ProcMacro::Attr { name, client } - if *name == macro_name => - { - let res = client.run( - &proc_macro::bridge::server::SameThread, - ra_server::RustAnalyzer::default(), - parsed_attributes, - parsed_body, - true, - ); - return res.map(|it| it.into_subtree()).map_err(PanicMessage::from); - } - _ => continue, - } - } - - Err(proc_macro::bridge::PanicMessage::String("Nothing to expand".to_string()).into()) - } - - pub fn list_macros(&self) -> Vec<(String, ProcMacroKind)> { - self.exported_macros - .iter() - .map(|proc_macro| match proc_macro { - proc_macro::bridge::client::ProcMacro::CustomDerive { trait_name, .. } => { - (trait_name.to_string(), ProcMacroKind::CustomDerive) - } - proc_macro::bridge::client::ProcMacro::Bang { name, .. } => { - (name.to_string(), ProcMacroKind::FuncLike) - } - proc_macro::bridge::client::ProcMacro::Attr { name, .. } => { - (name.to_string(), ProcMacroKind::Attr) - } - }) - .collect() - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/buffer.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/buffer.rs deleted file mode 100644 index 48030f8d82dc..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/buffer.rs +++ /dev/null @@ -1,156 +0,0 @@ -//! Buffer management for same-process client<->server communication. - -use std::io::{self, Write}; -use std::mem; -use std::ops::{Deref, DerefMut}; -use std::slice; - -#[repr(C)] -pub struct Buffer { - data: *mut u8, - len: usize, - capacity: usize, - reserve: extern "C" fn(Buffer, usize) -> Buffer, - drop: extern "C" fn(Buffer), -} - -unsafe impl Sync for Buffer {} -unsafe impl Send for Buffer {} - -impl Default for Buffer { - #[inline] - fn default() -> Self { - Self::from(vec![]) - } -} - -impl Deref for Buffer { - type Target = [u8]; - #[inline] - fn deref(&self) -> &[u8] { - unsafe { slice::from_raw_parts(self.data as *const u8, self.len) } - } -} - -impl DerefMut for Buffer { - #[inline] - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { slice::from_raw_parts_mut(self.data, self.len) } - } -} - -impl Buffer { - #[inline] - pub(super) fn new() -> Self { - Self::default() - } - - #[inline] - pub(super) fn clear(&mut self) { - self.len = 0; - } - - #[inline] - pub(super) fn take(&mut self) -> Self { - mem::take(self) - } - - // We have the array method separate from extending from a slice. This is - // because in the case of small arrays, codegen can be more efficient - // (avoiding a memmove call). With extend_from_slice, LLVM at least - // currently is not able to make that optimization. - #[inline] - pub(super) fn extend_from_array(&mut self, xs: &[u8; N]) { - if xs.len() > (self.capacity - self.len) { - let b = self.take(); - *self = (b.reserve)(b, xs.len()); - } - unsafe { - xs.as_ptr().copy_to_nonoverlapping(self.data.add(self.len), xs.len()); - self.len += xs.len(); - } - } - - #[inline] - pub(super) fn extend_from_slice(&mut self, xs: &[u8]) { - if xs.len() > (self.capacity - self.len) { - let b = self.take(); - *self = (b.reserve)(b, xs.len()); - } - unsafe { - xs.as_ptr().copy_to_nonoverlapping(self.data.add(self.len), xs.len()); - self.len += xs.len(); - } - } - - #[inline] - pub(super) fn push(&mut self, v: u8) { - // The code here is taken from Vec::push, and we know that reserve() - // will panic if we're exceeding isize::MAX bytes and so there's no need - // to check for overflow. - if self.len == self.capacity { - let b = self.take(); - *self = (b.reserve)(b, 1); - } - unsafe { - *self.data.add(self.len) = v; - self.len += 1; - } - } -} - -impl Write for Buffer { - #[inline] - fn write(&mut self, xs: &[u8]) -> io::Result { - self.extend_from_slice(xs); - Ok(xs.len()) - } - - #[inline] - fn write_all(&mut self, xs: &[u8]) -> io::Result<()> { - self.extend_from_slice(xs); - Ok(()) - } - - #[inline] - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } -} - -impl Drop for Buffer { - #[inline] - fn drop(&mut self) { - let b = self.take(); - (b.drop)(b); - } -} - -impl From> for Buffer { - fn from(mut v: Vec) -> Self { - let (data, len, capacity) = (v.as_mut_ptr(), v.len(), v.capacity()); - mem::forget(v); - - // This utility function is nested in here because it can *only* - // be safely called on `Buffer`s created by *this* `proc_macro`. - fn to_vec(b: Buffer) -> Vec { - unsafe { - let Buffer { data, len, capacity, .. } = b; - mem::forget(b); - Vec::from_raw_parts(data, len, capacity) - } - } - - extern "C" fn reserve(b: Buffer, additional: usize) -> Buffer { - let mut v = to_vec(b); - v.reserve(additional); - Buffer::from(v) - } - - extern "C" fn drop(b: Buffer) { - mem::drop(to_vec(b)); - } - - Buffer { data, len, capacity, reserve, drop } - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/client.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/client.rs deleted file mode 100644 index 22bda8ba5a7c..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/client.rs +++ /dev/null @@ -1,529 +0,0 @@ -//! Client-side types. - -use super::*; - -use std::marker::PhantomData; - -macro_rules! define_handles { - ( - 'owned: $($oty:ident,)* - 'interned: $($ity:ident,)* - ) => { - #[repr(C)] - #[allow(non_snake_case)] - pub struct HandleCounters { - $($oty: AtomicUsize,)* - $($ity: AtomicUsize,)* - } - - impl HandleCounters { - // FIXME(eddyb) use a reference to the `static COUNTERS`, instead of - // a wrapper `fn` pointer, once `const fn` can reference `static`s. - extern "C" fn get() -> &'static Self { - static COUNTERS: HandleCounters = HandleCounters { - $($oty: AtomicUsize::new(1),)* - $($ity: AtomicUsize::new(1),)* - }; - &COUNTERS - } - } - - // FIXME(eddyb) generate the definition of `HandleStore` in `server.rs`. - #[repr(C)] - #[allow(non_snake_case)] - pub(super) struct HandleStore { - $($oty: handle::OwnedStore,)* - $($ity: handle::InternedStore,)* - } - - impl HandleStore { - pub(super) fn new(handle_counters: &'static HandleCounters) -> Self { - HandleStore { - $($oty: handle::OwnedStore::new(&handle_counters.$oty),)* - $($ity: handle::InternedStore::new(&handle_counters.$ity),)* - } - } - } - - $( - #[repr(C)] - pub(crate) struct $oty { - handle: handle::Handle, - // Prevent Send and Sync impls. `!Send`/`!Sync` is the usual - // way of doing this, but that requires unstable features. - // rust-analyzer uses this code and avoids unstable features. - _marker: PhantomData<*mut ()>, - } - - // Forward `Drop::drop` to the inherent `drop` method. - impl Drop for $oty { - fn drop(&mut self) { - $oty { - handle: self.handle, - _marker: PhantomData, - }.drop(); - } - } - - impl Encode for $oty { - fn encode(self, w: &mut Writer, s: &mut S) { - let handle = self.handle; - mem::forget(self); - handle.encode(w, s); - } - } - - impl DecodeMut<'_, '_, HandleStore>> - for Marked - { - fn decode(r: &mut Reader<'_>, s: &mut HandleStore>) -> Self { - s.$oty.take(handle::Handle::decode(r, &mut ())) - } - } - - impl Encode for &$oty { - fn encode(self, w: &mut Writer, s: &mut S) { - self.handle.encode(w, s); - } - } - - impl<'s, S: server::Types> Decode<'_, 's, HandleStore>> - for &'s Marked - { - fn decode(r: &mut Reader<'_>, s: &'s HandleStore>) -> Self { - &s.$oty[handle::Handle::decode(r, &mut ())] - } - } - - impl Encode for &mut $oty { - fn encode(self, w: &mut Writer, s: &mut S) { - self.handle.encode(w, s); - } - } - - impl<'s, S: server::Types> DecodeMut<'_, 's, HandleStore>> - for &'s mut Marked - { - fn decode( - r: &mut Reader<'_>, - s: &'s mut HandleStore> - ) -> Self { - &mut s.$oty[handle::Handle::decode(r, &mut ())] - } - } - - impl Encode>> - for Marked - { - fn encode(self, w: &mut Writer, s: &mut HandleStore>) { - s.$oty.alloc(self).encode(w, s); - } - } - - impl DecodeMut<'_, '_, S> for $oty { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - $oty { - handle: handle::Handle::decode(r, s), - _marker: PhantomData, - } - } - } - )* - - $( - #[repr(C)] - #[derive(Copy, Clone, PartialEq, Eq, Hash)] - pub(crate) struct $ity { - handle: handle::Handle, - // Prevent Send and Sync impls. `!Send`/`!Sync` is the usual - // way of doing this, but that requires unstable features. - // rust-analyzer uses this code and avoids unstable features. - _marker: PhantomData<*mut ()>, - } - - impl Encode for $ity { - fn encode(self, w: &mut Writer, s: &mut S) { - self.handle.encode(w, s); - } - } - - impl DecodeMut<'_, '_, HandleStore>> - for Marked - { - fn decode(r: &mut Reader<'_>, s: &mut HandleStore>) -> Self { - s.$ity.copy(handle::Handle::decode(r, &mut ())) - } - } - - impl Encode>> - for Marked - { - fn encode(self, w: &mut Writer, s: &mut HandleStore>) { - s.$ity.alloc(self).encode(w, s); - } - } - - impl DecodeMut<'_, '_, S> for $ity { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - $ity { - handle: handle::Handle::decode(r, s), - _marker: PhantomData, - } - } - } - )* - } -} -define_handles! { - 'owned: - FreeFunctions, - TokenStream, - Literal, - SourceFile, - MultiSpan, - Diagnostic, - - 'interned: - Ident, - Span, -} - -// FIXME(eddyb) generate these impls by pattern-matching on the -// names of methods - also could use the presence of `fn drop` -// to distinguish between 'owned and 'interned, above. -// Alternatively, special "modes" could be listed of types in with_api -// instead of pattern matching on methods, here and in server decl. - -impl Clone for TokenStream { - fn clone(&self) -> Self { - self.clone() - } -} - -impl Clone for Literal { - fn clone(&self) -> Self { - self.clone() - } -} - -impl fmt::Debug for Literal { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Literal") - // format the kind without quotes, as in `kind: Float` - .field("kind", &format_args!("{}", &self.debug_kind())) - .field("symbol", &self.symbol()) - // format `Some("...")` on one line even in {:#?} mode - .field("suffix", &format_args!("{:?}", &self.suffix())) - .field("span", &self.span()) - .finish() - } -} - -impl Clone for SourceFile { - fn clone(&self) -> Self { - self.clone() - } -} - -impl Span { - pub(crate) fn def_site() -> Span { - Bridge::with(|bridge| bridge.globals.def_site) - } - - pub(crate) fn call_site() -> Span { - Bridge::with(|bridge| bridge.globals.call_site) - } - - pub(crate) fn mixed_site() -> Span { - Bridge::with(|bridge| bridge.globals.mixed_site) - } -} - -impl fmt::Debug for Span { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.debug()) - } -} - -macro_rules! define_client_side { - ($($name:ident { - $(fn $method:ident($($arg:ident: $arg_ty:ty),* $(,)?) $(-> $ret_ty:ty)*;)* - }),* $(,)?) => { - $(impl $name { - $(pub(crate) fn $method($($arg: $arg_ty),*) $(-> $ret_ty)* { - Bridge::with(|bridge| { - let mut buf = bridge.cached_buffer.take(); - - buf.clear(); - api_tags::Method::$name(api_tags::$name::$method).encode(&mut buf, &mut ()); - reverse_encode!(buf; $($arg),*); - - buf = bridge.dispatch.call(buf); - - let r = Result::<_, PanicMessage>::decode(&mut &buf[..], &mut ()); - - bridge.cached_buffer = buf; - - r.unwrap_or_else(|e| panic::resume_unwind(e.into())) - }) - })* - })* - } -} -with_api!(self, self, define_client_side); - -struct Bridge<'a> { - /// Reusable buffer (only `clear`-ed, never shrunk), primarily - /// used for making requests. - cached_buffer: Buffer, - - /// Server-side function that the client uses to make requests. - dispatch: closure::Closure<'a, Buffer, Buffer>, - - /// Provided globals for this macro expansion. - globals: ExpnGlobals, -} - -enum BridgeState<'a> { - /// No server is currently connected to this client. - NotConnected, - - /// A server is connected and available for requests. - Connected(Bridge<'a>), - - /// Access to the bridge is being exclusively acquired - /// (e.g., during `BridgeState::with`). - InUse, -} - -enum BridgeStateL {} - -impl<'a> scoped_cell::ApplyL<'a> for BridgeStateL { - type Out = BridgeState<'a>; -} - -thread_local! { - static BRIDGE_STATE: scoped_cell::ScopedCell = - scoped_cell::ScopedCell::new(BridgeState::NotConnected); -} - -impl BridgeState<'_> { - /// Take exclusive control of the thread-local - /// `BridgeState`, and pass it to `f`, mutably. - /// The state will be restored after `f` exits, even - /// by panic, including modifications made to it by `f`. - /// - /// N.B., while `f` is running, the thread-local state - /// is `BridgeState::InUse`. - fn with(f: impl FnOnce(&mut BridgeState<'_>) -> R) -> R { - BRIDGE_STATE.with(|state| { - state.replace(BridgeState::InUse, |mut state| { - // FIXME(#52812) pass `f` directly to `replace` when `RefMutL` is gone - f(&mut *state) - }) - }) - } -} - -impl Bridge<'_> { - fn with(f: impl FnOnce(&mut Bridge<'_>) -> R) -> R { - BridgeState::with(|state| match state { - BridgeState::NotConnected => { - panic!("procedural macro API is used outside of a procedural macro"); - } - BridgeState::InUse => { - panic!("procedural macro API is used while it's already in use"); - } - BridgeState::Connected(bridge) => f(bridge), - }) - } -} - -pub(crate) fn is_available() -> bool { - BridgeState::with(|state| match state { - BridgeState::Connected(_) | BridgeState::InUse => true, - BridgeState::NotConnected => false, - }) -} - -/// A client-side RPC entry-point, which may be using a different `proc_macro` -/// from the one used by the server, but can be invoked compatibly. -/// -/// Note that the (phantom) `I` ("input") and `O` ("output") type parameters -/// decorate the `Client` with the RPC "interface" of the entry-point, but -/// do not themselves participate in ABI, at all, only facilitate type-checking. -/// -/// E.g. `Client` is the common proc macro interface, -/// used for `#[proc_macro] fn foo(input: TokenStream) -> TokenStream`, -/// indicating that the RPC input and output will be serialized token streams, -/// and forcing the use of APIs that take/return `S::TokenStream`, server-side. -#[repr(C)] -pub struct Client { - // FIXME(eddyb) use a reference to the `static COUNTERS`, instead of - // a wrapper `fn` pointer, once `const fn` can reference `static`s. - pub(super) get_handle_counters: extern "C" fn() -> &'static HandleCounters, - - pub(super) run: extern "C" fn(BridgeConfig<'_>) -> Buffer, - - pub(super) _marker: PhantomData O>, -} - -impl Copy for Client {} -impl Clone for Client { - fn clone(&self) -> Self { - *self - } -} - -fn maybe_install_panic_hook(force_show_panics: bool) { - // Hide the default panic output within `proc_macro` expansions. - // NB. the server can't do this because it may use a different libstd. - static HIDE_PANICS_DURING_EXPANSION: Once = Once::new(); - HIDE_PANICS_DURING_EXPANSION.call_once(|| { - let prev = panic::take_hook(); - panic::set_hook(Box::new(move |info| { - let show = BridgeState::with(|state| match state { - BridgeState::NotConnected => true, - BridgeState::Connected(_) | BridgeState::InUse => force_show_panics, - }); - if show { - prev(info) - } - })); - }); -} - -/// Client-side helper for handling client panics, entering the bridge, -/// deserializing input and serializing output. -// FIXME(eddyb) maybe replace `Bridge::enter` with this? -fn run_client DecodeMut<'a, 's, ()>, R: Encode<()>>( - config: BridgeConfig<'_>, - f: impl FnOnce(A) -> R, -) -> Buffer { - let BridgeConfig { input: mut buf, dispatch, force_show_panics, .. } = config; - - panic::catch_unwind(panic::AssertUnwindSafe(|| { - maybe_install_panic_hook(force_show_panics); - - let reader = &mut &buf[..]; - let (globals, input) = <(ExpnGlobals, A)>::decode(reader, &mut ()); - - // Put the buffer we used for input back in the `Bridge` for requests. - let new_state = - BridgeState::Connected(Bridge { cached_buffer: buf.take(), dispatch, globals }); - - BRIDGE_STATE.with(|state| { - state.set(new_state, || { - let output = f(input); - - // Take the `cached_buffer` back out, for the output value. - buf = Bridge::with(|bridge| bridge.cached_buffer.take()); - - // HACK(eddyb) Separate encoding a success value (`Ok(output)`) - // from encoding a panic (`Err(e: PanicMessage)`) to avoid - // having handles outside the `bridge.enter(|| ...)` scope, and - // to catch panics that could happen while encoding the success. - // - // Note that panics should be impossible beyond this point, but - // this is defensively trying to avoid any accidental panicking - // reaching the `extern "C"` (which should `abort` but might not - // at the moment, so this is also potentially preventing UB). - buf.clear(); - Ok::<_, ()>(output).encode(&mut buf, &mut ()); - }) - }) - })) - .map_err(PanicMessage::from) - .unwrap_or_else(|e| { - buf.clear(); - Err::<(), _>(e).encode(&mut buf, &mut ()); - }); - buf -} - -impl Client { - pub const fn expand1( - f: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy, - ) -> Self { - Client { - get_handle_counters: HandleCounters::get, - run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| { - run_client(bridge, |input| f(super::super::TokenStream(input)).0) - }), - _marker: PhantomData, - } - } -} - -impl Client<(super::super::TokenStream, super::super::TokenStream), super::super::TokenStream> { - pub const fn expand2( - f: impl Fn(super::super::TokenStream, super::super::TokenStream) -> super::super::TokenStream - + Copy, - ) -> Self { - Client { - get_handle_counters: HandleCounters::get, - run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| { - run_client(bridge, |(input, input2)| { - f(super::super::TokenStream(input), super::super::TokenStream(input2)).0 - }) - }), - _marker: PhantomData, - } - } -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub enum ProcMacro { - CustomDerive { - trait_name: &'static str, - attributes: &'static [&'static str], - client: Client, - }, - - Attr { - name: &'static str, - client: Client< - (super::super::TokenStream, super::super::TokenStream), - super::super::TokenStream, - >, - }, - - Bang { - name: &'static str, - client: Client, - }, -} - -impl ProcMacro { - pub fn name(&self) -> &'static str { - match self { - ProcMacro::CustomDerive { trait_name, .. } => trait_name, - ProcMacro::Attr { name, .. } => name, - ProcMacro::Bang { name, .. } => name, - } - } - - pub const fn custom_derive( - trait_name: &'static str, - attributes: &'static [&'static str], - expand: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy, - ) -> Self { - ProcMacro::CustomDerive { trait_name, attributes, client: Client::expand1(expand) } - } - - pub const fn attr( - name: &'static str, - expand: impl Fn(super::super::TokenStream, super::super::TokenStream) -> super::super::TokenStream - + Copy, - ) -> Self { - ProcMacro::Attr { name, client: Client::expand2(expand) } - } - - pub const fn bang( - name: &'static str, - expand: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy, - ) -> Self { - ProcMacro::Bang { name, client: Client::expand1(expand) } - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/closure.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/closure.rs deleted file mode 100644 index d371ae3cea09..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/closure.rs +++ /dev/null @@ -1,32 +0,0 @@ -//! Closure type (equivalent to `&mut dyn FnMut(A) -> R`) that's `repr(C)`. - -use std::marker::PhantomData; - -#[repr(C)] -pub struct Closure<'a, A, R> { - call: unsafe extern "C" fn(*mut Env, A) -> R, - env: *mut Env, - // Prevent Send and Sync impls. `!Send`/`!Sync` is the usual way of doing - // this, but that requires unstable features. rust-analyzer uses this code - // and avoids unstable features. - // - // The `'a` lifetime parameter represents the lifetime of `Env`. - _marker: PhantomData<*mut &'a mut ()>, -} - -struct Env; - -impl<'a, A, R, F: FnMut(A) -> R> From<&'a mut F> for Closure<'a, A, R> { - fn from(f: &'a mut F) -> Self { - unsafe extern "C" fn call R>(env: *mut Env, arg: A) -> R { - (*(env as *mut _ as *mut F))(arg) - } - Closure { call: call::, env: f as *mut _ as *mut Env, _marker: PhantomData } - } -} - -impl<'a, A, R> Closure<'a, A, R> { - pub fn call(&mut self, arg: A) -> R { - unsafe { (self.call)(self.env, arg) } - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/handle.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/handle.rs deleted file mode 100644 index c219a9465d39..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/handle.rs +++ /dev/null @@ -1,89 +0,0 @@ -//! Server-side handles and storage for per-handle data. - -use std::collections::{BTreeMap, HashMap}; -use std::hash::{BuildHasher, Hash}; -use std::num::NonZeroU32; -use std::ops::{Index, IndexMut}; -use std::sync::atomic::{AtomicUsize, Ordering}; - -pub(super) type Handle = NonZeroU32; - -/// A store that associates values of type `T` with numeric handles. A value can -/// be looked up using its handle. -pub(super) struct OwnedStore { - counter: &'static AtomicUsize, - data: BTreeMap, -} - -impl OwnedStore { - pub(super) fn new(counter: &'static AtomicUsize) -> Self { - // Ensure the handle counter isn't 0, which would panic later, - // when `NonZeroU32::new` (aka `Handle::new`) is called in `alloc`. - assert_ne!(counter.load(Ordering::SeqCst), 0); - - OwnedStore { counter, data: BTreeMap::new() } - } -} - -impl OwnedStore { - pub(super) fn alloc(&mut self, x: T) -> Handle { - let counter = self.counter.fetch_add(1, Ordering::SeqCst); - let handle = Handle::new(counter as u32).expect("`proc_macro` handle counter overflowed"); - assert!(self.data.insert(handle, x).is_none()); - handle - } - - pub(super) fn take(&mut self, h: Handle) -> T { - self.data.remove(&h).expect("use-after-free in `proc_macro` handle") - } -} - -impl Index for OwnedStore { - type Output = T; - fn index(&self, h: Handle) -> &T { - self.data.get(&h).expect("use-after-free in `proc_macro` handle") - } -} - -impl IndexMut for OwnedStore { - fn index_mut(&mut self, h: Handle) -> &mut T { - self.data.get_mut(&h).expect("use-after-free in `proc_macro` handle") - } -} - -// HACK(eddyb) deterministic `std::collections::hash_map::RandomState` replacement -// that doesn't require adding any dependencies to `proc_macro` (like `rustc-hash`). -#[derive(Clone)] -struct NonRandomState; - -impl BuildHasher for NonRandomState { - type Hasher = std::collections::hash_map::DefaultHasher; - #[inline] - fn build_hasher(&self) -> Self::Hasher { - Self::Hasher::new() - } -} - -/// Like `OwnedStore`, but avoids storing any value more than once. -pub(super) struct InternedStore { - owned: OwnedStore, - interner: HashMap, -} - -impl InternedStore { - pub(super) fn new(counter: &'static AtomicUsize) -> Self { - InternedStore { - owned: OwnedStore::new(counter), - interner: HashMap::with_hasher(NonRandomState), - } - } - - pub(super) fn alloc(&mut self, x: T) -> Handle { - let owned = &mut self.owned; - *self.interner.entry(x).or_insert_with(|| owned.alloc(x)) - } - - pub(super) fn copy(&mut self, h: Handle) -> T { - self.owned[h] - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/mod.rs deleted file mode 100644 index ffd440793231..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/mod.rs +++ /dev/null @@ -1,493 +0,0 @@ -//! Internal interface for communicating between a `proc_macro` client -//! (a proc macro crate) and a `proc_macro` server (a compiler front-end). -//! -//! Serialization (with C ABI buffers) and unique integer handles are employed -//! to allow safely interfacing between two copies of `proc_macro` built -//! (from the same source) by different compilers with potentially mismatching -//! Rust ABIs (e.g., stage0/bin/rustc vs stage1/bin/rustc during bootstrap). - -#![deny(unsafe_code)] - -pub use super::{Delimiter, Level, LineColumn, Spacing}; -use std::fmt; -use std::hash::Hash; -use std::marker; -use std::mem; -use std::ops::Bound; -use std::panic; -use std::sync::atomic::AtomicUsize; -use std::sync::Once; -use std::thread; - -/// Higher-order macro describing the server RPC API, allowing automatic -/// generation of type-safe Rust APIs, both client-side and server-side. -/// -/// `with_api!(MySelf, my_self, my_macro)` expands to: -/// ```rust,ignore (pseudo-code) -/// my_macro! { -/// // ... -/// Literal { -/// // ... -/// fn character(ch: char) -> MySelf::Literal; -/// // ... -/// fn span(my_self: &MySelf::Literal) -> MySelf::Span; -/// fn set_span(my_self: &mut MySelf::Literal, span: MySelf::Span); -/// }, -/// // ... -/// } -/// ``` -/// -/// The first two arguments serve to customize the arguments names -/// and argument/return types, to enable several different usecases: -/// -/// If `my_self` is just `self`, then each `fn` signature can be used -/// as-is for a method. If it's anything else (`self_` in practice), -/// then the signatures don't have a special `self` argument, and -/// can, therefore, have a different one introduced. -/// -/// If `MySelf` is just `Self`, then the types are only valid inside -/// a trait or a trait impl, where the trait has associated types -/// for each of the API types. If non-associated types are desired, -/// a module name (`self` in practice) can be used instead of `Self`. -macro_rules! with_api { - ($S:ident, $self:ident, $m:ident) => { - $m! { - FreeFunctions { - fn drop($self: $S::FreeFunctions); - fn track_env_var(var: &str, value: Option<&str>); - fn track_path(path: &str); - }, - TokenStream { - fn drop($self: $S::TokenStream); - fn clone($self: &$S::TokenStream) -> $S::TokenStream; - fn is_empty($self: &$S::TokenStream) -> bool; - fn expand_expr($self: &$S::TokenStream) -> Result<$S::TokenStream, ()>; - fn from_str(src: &str) -> $S::TokenStream; - fn to_string($self: &$S::TokenStream) -> String; - fn from_token_tree( - tree: TokenTree<$S::TokenStream, $S::Span, $S::Ident, $S::Literal>, - ) -> $S::TokenStream; - fn concat_trees( - base: Option<$S::TokenStream>, - trees: Vec>, - ) -> $S::TokenStream; - fn concat_streams( - base: Option<$S::TokenStream>, - streams: Vec<$S::TokenStream>, - ) -> $S::TokenStream; - fn into_trees( - $self: $S::TokenStream - ) -> Vec>; - }, - Ident { - fn new(string: &str, span: $S::Span, is_raw: bool) -> $S::Ident; - fn span($self: $S::Ident) -> $S::Span; - fn with_span($self: $S::Ident, span: $S::Span) -> $S::Ident; - }, - Literal { - fn drop($self: $S::Literal); - fn clone($self: &$S::Literal) -> $S::Literal; - fn from_str(s: &str) -> Result<$S::Literal, ()>; - fn to_string($self: &$S::Literal) -> String; - fn debug_kind($self: &$S::Literal) -> String; - fn symbol($self: &$S::Literal) -> String; - fn suffix($self: &$S::Literal) -> Option; - fn integer(n: &str) -> $S::Literal; - fn typed_integer(n: &str, kind: &str) -> $S::Literal; - fn float(n: &str) -> $S::Literal; - fn f32(n: &str) -> $S::Literal; - fn f64(n: &str) -> $S::Literal; - fn string(string: &str) -> $S::Literal; - fn character(ch: char) -> $S::Literal; - fn byte_string(bytes: &[u8]) -> $S::Literal; - fn span($self: &$S::Literal) -> $S::Span; - fn set_span($self: &mut $S::Literal, span: $S::Span); - fn subspan( - $self: &$S::Literal, - start: Bound, - end: Bound, - ) -> Option<$S::Span>; - }, - SourceFile { - fn drop($self: $S::SourceFile); - fn clone($self: &$S::SourceFile) -> $S::SourceFile; - fn eq($self: &$S::SourceFile, other: &$S::SourceFile) -> bool; - fn path($self: &$S::SourceFile) -> String; - fn is_real($self: &$S::SourceFile) -> bool; - }, - MultiSpan { - fn drop($self: $S::MultiSpan); - fn new() -> $S::MultiSpan; - fn push($self: &mut $S::MultiSpan, span: $S::Span); - }, - Diagnostic { - fn drop($self: $S::Diagnostic); - fn new(level: Level, msg: &str, span: $S::MultiSpan) -> $S::Diagnostic; - fn sub( - $self: &mut $S::Diagnostic, - level: Level, - msg: &str, - span: $S::MultiSpan, - ); - fn emit($self: $S::Diagnostic); - }, - Span { - fn debug($self: $S::Span) -> String; - fn source_file($self: $S::Span) -> $S::SourceFile; - fn parent($self: $S::Span) -> Option<$S::Span>; - fn source($self: $S::Span) -> $S::Span; - fn start($self: $S::Span) -> LineColumn; - fn end($self: $S::Span) -> LineColumn; - fn before($self: $S::Span) -> $S::Span; - fn after($self: $S::Span) -> $S::Span; - fn join($self: $S::Span, other: $S::Span) -> Option<$S::Span>; - fn resolved_at($self: $S::Span, at: $S::Span) -> $S::Span; - fn source_text($self: $S::Span) -> Option; - fn save_span($self: $S::Span) -> usize; - fn recover_proc_macro_span(id: usize) -> $S::Span; - }, - } - }; -} - -// FIXME(eddyb) this calls `encode` for each argument, but in reverse, -// to match the ordering in `reverse_decode`. -macro_rules! reverse_encode { - ($writer:ident;) => {}; - ($writer:ident; $first:ident $(, $rest:ident)*) => { - reverse_encode!($writer; $($rest),*); - $first.encode(&mut $writer, &mut ()); - } -} - -// FIXME(eddyb) this calls `decode` for each argument, but in reverse, -// to avoid borrow conflicts from borrows started by `&mut` arguments. -macro_rules! reverse_decode { - ($reader:ident, $s:ident;) => {}; - ($reader:ident, $s:ident; $first:ident: $first_ty:ty $(, $rest:ident: $rest_ty:ty)*) => { - reverse_decode!($reader, $s; $($rest: $rest_ty),*); - let $first = <$first_ty>::decode(&mut $reader, $s); - } -} - -#[allow(unsafe_code)] -mod buffer; -#[forbid(unsafe_code)] -pub mod client; -#[allow(unsafe_code)] -mod closure; -#[forbid(unsafe_code)] -mod handle; -#[macro_use] -#[forbid(unsafe_code)] -mod rpc; -#[allow(unsafe_code)] -mod scoped_cell; -#[allow(unsafe_code)] -mod selfless_reify; -#[forbid(unsafe_code)] -pub mod server; - -use buffer::Buffer; -pub use rpc::PanicMessage; -use rpc::{Decode, DecodeMut, Encode, Reader, Writer}; - -/// Configuration for establishing an active connection between a server and a -/// client. The server creates the bridge config (`run_server` in `server.rs`), -/// then passes it to the client through the function pointer in the `run` field -/// of `client::Client`. The client constructs a local `Bridge` from the config -/// in TLS during its execution (`Bridge::{enter, with}` in `client.rs`). -#[repr(C)] -pub struct BridgeConfig<'a> { - /// Buffer used to pass initial input to the client. - input: Buffer, - - /// Server-side function that the client uses to make requests. - dispatch: closure::Closure<'a, Buffer, Buffer>, - - /// If 'true', always invoke the default panic hook - force_show_panics: bool, - - // Prevent Send and Sync impls. `!Send`/`!Sync` is the usual way of doing - // this, but that requires unstable features. rust-analyzer uses this code - // and avoids unstable features. - _marker: marker::PhantomData<*mut ()>, -} - -#[forbid(unsafe_code)] -#[allow(non_camel_case_types)] -mod api_tags { - use super::rpc::{DecodeMut, Encode, Reader, Writer}; - - macro_rules! declare_tags { - ($($name:ident { - $(fn $method:ident($($arg:ident: $arg_ty:ty),* $(,)?) $(-> $ret_ty:ty)*;)* - }),* $(,)?) => { - $( - pub(super) enum $name { - $($method),* - } - rpc_encode_decode!(enum $name { $($method),* }); - )* - - pub(super) enum Method { - $($name($name)),* - } - rpc_encode_decode!(enum Method { $($name(m)),* }); - } - } - with_api!(self, self, declare_tags); -} - -/// Helper to wrap associated types to allow trait impl dispatch. -/// That is, normally a pair of impls for `T::Foo` and `T::Bar` -/// can overlap, but if the impls are, instead, on types like -/// `Marked` and `Marked`, they can't. -trait Mark { - type Unmarked; - fn mark(unmarked: Self::Unmarked) -> Self; -} - -/// Unwrap types wrapped by `Mark::mark` (see `Mark` for details). -trait Unmark { - type Unmarked; - fn unmark(self) -> Self::Unmarked; -} - -#[derive(Copy, Clone, PartialEq, Eq, Hash)] -struct Marked { - value: T, - _marker: marker::PhantomData, -} - -impl Mark for Marked { - type Unmarked = T; - fn mark(unmarked: Self::Unmarked) -> Self { - Marked { value: unmarked, _marker: marker::PhantomData } - } -} -impl Unmark for Marked { - type Unmarked = T; - fn unmark(self) -> Self::Unmarked { - self.value - } -} -impl<'a, T, M> Unmark for &'a Marked { - type Unmarked = &'a T; - fn unmark(self) -> Self::Unmarked { - &self.value - } -} -impl<'a, T, M> Unmark for &'a mut Marked { - type Unmarked = &'a mut T; - fn unmark(self) -> Self::Unmarked { - &mut self.value - } -} - -impl Mark for Vec { - type Unmarked = Vec; - fn mark(unmarked: Self::Unmarked) -> Self { - // Should be a no-op due to std's in-place collect optimizations. - unmarked.into_iter().map(T::mark).collect() - } -} -impl Unmark for Vec { - type Unmarked = Vec; - fn unmark(self) -> Self::Unmarked { - // Should be a no-op due to std's in-place collect optimizations. - self.into_iter().map(T::unmark).collect() - } -} - -macro_rules! mark_noop { - ($($ty:ty),* $(,)?) => { - $( - impl Mark for $ty { - type Unmarked = Self; - fn mark(unmarked: Self::Unmarked) -> Self { - unmarked - } - } - impl Unmark for $ty { - type Unmarked = Self; - fn unmark(self) -> Self::Unmarked { - self - } - } - )* - } -} -mark_noop! { - (), - bool, - char, - &'_ [u8], - &'_ str, - String, - u8, - usize, - Delimiter, - Level, - LineColumn, - Spacing, -} - -rpc_encode_decode!( - enum Delimiter { - Parenthesis, - Brace, - Bracket, - None, - } -); -rpc_encode_decode!( - enum Level { - Error, - Warning, - Note, - Help, - } -); -rpc_encode_decode!(struct LineColumn { line, column }); -rpc_encode_decode!( - enum Spacing { - Alone, - Joint, - } -); - -macro_rules! mark_compound { - (struct $name:ident <$($T:ident),+> { $($field:ident),* $(,)? }) => { - impl<$($T: Mark),+> Mark for $name <$($T),+> { - type Unmarked = $name <$($T::Unmarked),+>; - fn mark(unmarked: Self::Unmarked) -> Self { - $name { - $($field: Mark::mark(unmarked.$field)),* - } - } - } - impl<$($T: Unmark),+> Unmark for $name <$($T),+> { - type Unmarked = $name <$($T::Unmarked),+>; - fn unmark(self) -> Self::Unmarked { - $name { - $($field: Unmark::unmark(self.$field)),* - } - } - } - }; - (enum $name:ident <$($T:ident),+> { $($variant:ident $(($field:ident))?),* $(,)? }) => { - impl<$($T: Mark),+> Mark for $name <$($T),+> { - type Unmarked = $name <$($T::Unmarked),+>; - fn mark(unmarked: Self::Unmarked) -> Self { - match unmarked { - $($name::$variant $(($field))? => { - $name::$variant $((Mark::mark($field)))? - })* - } - } - } - impl<$($T: Unmark),+> Unmark for $name <$($T),+> { - type Unmarked = $name <$($T::Unmarked),+>; - fn unmark(self) -> Self::Unmarked { - match self { - $($name::$variant $(($field))? => { - $name::$variant $((Unmark::unmark($field)))? - })* - } - } - } - } -} - -macro_rules! compound_traits { - ($($t:tt)*) => { - rpc_encode_decode!($($t)*); - mark_compound!($($t)*); - }; -} - -compound_traits!( - enum Bound { - Included(x), - Excluded(x), - Unbounded, - } -); - -compound_traits!( - enum Option { - Some(t), - None, - } -); - -compound_traits!( - enum Result { - Ok(t), - Err(e), - } -); - -#[derive(Copy, Clone)] -pub struct DelimSpan { - pub open: Span, - pub close: Span, - pub entire: Span, -} - -impl DelimSpan { - pub fn from_single(span: Span) -> Self { - DelimSpan { open: span, close: span, entire: span } - } -} - -compound_traits!(struct DelimSpan { open, close, entire }); - -#[derive(Clone)] -pub struct Group { - pub delimiter: Delimiter, - pub stream: Option, - pub span: DelimSpan, -} - -compound_traits!(struct Group { delimiter, stream, span }); - -#[derive(Clone)] -pub struct Punct { - pub ch: u8, - pub joint: bool, - pub span: Span, -} - -compound_traits!(struct Punct { ch, joint, span }); - -#[derive(Clone)] -pub enum TokenTree { - Group(Group), - Punct(Punct), - Ident(Ident), - Literal(Literal), -} - -compound_traits!( - enum TokenTree { - Group(tt), - Punct(tt), - Ident(tt), - Literal(tt), - } -); - -/// Globals provided alongside the initial inputs for a macro expansion. -/// Provides values such as spans which are used frequently to avoid RPC. -#[derive(Clone)] -pub struct ExpnGlobals { - pub def_site: Span, - pub call_site: Span, - pub mixed_site: Span, -} - -compound_traits!( - struct ExpnGlobals { def_site, call_site, mixed_site } -); diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/rpc.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/rpc.rs deleted file mode 100644 index e9d7a46c06f6..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/rpc.rs +++ /dev/null @@ -1,304 +0,0 @@ -//! Serialization for client-server communication. - -use std::any::Any; -use std::char; -use std::io::Write; -use std::num::NonZeroU32; -use std::str; - -pub(super) type Writer = super::buffer::Buffer; - -pub(super) trait Encode: Sized { - fn encode(self, w: &mut Writer, s: &mut S); -} - -pub(super) type Reader<'a> = &'a [u8]; - -pub(super) trait Decode<'a, 's, S>: Sized { - fn decode(r: &mut Reader<'a>, s: &'s S) -> Self; -} - -pub(super) trait DecodeMut<'a, 's, S>: Sized { - fn decode(r: &mut Reader<'a>, s: &'s mut S) -> Self; -} - -macro_rules! rpc_encode_decode { - (le $ty:ty) => { - impl Encode for $ty { - fn encode(self, w: &mut Writer, _: &mut S) { - w.extend_from_array(&self.to_le_bytes()); - } - } - - impl DecodeMut<'_, '_, S> for $ty { - fn decode(r: &mut Reader<'_>, _: &mut S) -> Self { - const N: usize = ::std::mem::size_of::<$ty>(); - - let mut bytes = [0; N]; - bytes.copy_from_slice(&r[..N]); - *r = &r[N..]; - - Self::from_le_bytes(bytes) - } - } - }; - (struct $name:ident $(<$($T:ident),+>)? { $($field:ident),* $(,)? }) => { - impl),+)?> Encode for $name $(<$($T),+>)? { - fn encode(self, w: &mut Writer, s: &mut S) { - $(self.$field.encode(w, s);)* - } - } - - impl<'a, S, $($($T: for<'s> DecodeMut<'a, 's, S>),+)?> DecodeMut<'a, '_, S> - for $name $(<$($T),+>)? - { - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - $name { - $($field: DecodeMut::decode(r, s)),* - } - } - } - }; - (enum $name:ident $(<$($T:ident),+>)? { $($variant:ident $(($field:ident))*),* $(,)? }) => { - impl),+)?> Encode for $name $(<$($T),+>)? { - fn encode(self, w: &mut Writer, s: &mut S) { - // HACK(eddyb): `Tag` enum duplicated between the - // two impls as there's no other place to stash it. - #[allow(non_upper_case_globals)] - mod tag { - #[repr(u8)] enum Tag { $($variant),* } - - $(pub const $variant: u8 = Tag::$variant as u8;)* - } - - match self { - $($name::$variant $(($field))* => { - tag::$variant.encode(w, s); - $($field.encode(w, s);)* - })* - } - } - } - - impl<'a, S, $($($T: for<'s> DecodeMut<'a, 's, S>),+)?> DecodeMut<'a, '_, S> - for $name $(<$($T),+>)? - { - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - // HACK(eddyb): `Tag` enum duplicated between the - // two impls as there's no other place to stash it. - #[allow(non_upper_case_globals)] - mod tag { - #[repr(u8)] enum Tag { $($variant),* } - - $(pub const $variant: u8 = Tag::$variant as u8;)* - } - - match u8::decode(r, s) { - $(tag::$variant => { - $(let $field = DecodeMut::decode(r, s);)* - $name::$variant $(($field))* - })* - _ => unreachable!(), - } - } - } - } -} - -impl Encode for () { - fn encode(self, _: &mut Writer, _: &mut S) {} -} - -impl DecodeMut<'_, '_, S> for () { - fn decode(_: &mut Reader<'_>, _: &mut S) -> Self {} -} - -impl Encode for u8 { - fn encode(self, w: &mut Writer, _: &mut S) { - w.push(self); - } -} - -impl DecodeMut<'_, '_, S> for u8 { - fn decode(r: &mut Reader<'_>, _: &mut S) -> Self { - let x = r[0]; - *r = &r[1..]; - x - } -} - -rpc_encode_decode!(le u32); -rpc_encode_decode!(le usize); - -impl Encode for bool { - fn encode(self, w: &mut Writer, s: &mut S) { - (self as u8).encode(w, s); - } -} - -impl DecodeMut<'_, '_, S> for bool { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - match u8::decode(r, s) { - 0 => false, - 1 => true, - _ => unreachable!(), - } - } -} - -impl Encode for char { - fn encode(self, w: &mut Writer, s: &mut S) { - (self as u32).encode(w, s); - } -} - -impl DecodeMut<'_, '_, S> for char { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - char::from_u32(u32::decode(r, s)).unwrap() - } -} - -impl Encode for NonZeroU32 { - fn encode(self, w: &mut Writer, s: &mut S) { - self.get().encode(w, s); - } -} - -impl DecodeMut<'_, '_, S> for NonZeroU32 { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - Self::new(u32::decode(r, s)).unwrap() - } -} - -impl, B: Encode> Encode for (A, B) { - fn encode(self, w: &mut Writer, s: &mut S) { - self.0.encode(w, s); - self.1.encode(w, s); - } -} - -impl<'a, S, A: for<'s> DecodeMut<'a, 's, S>, B: for<'s> DecodeMut<'a, 's, S>> DecodeMut<'a, '_, S> - for (A, B) -{ - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - (DecodeMut::decode(r, s), DecodeMut::decode(r, s)) - } -} - -impl Encode for &[u8] { - fn encode(self, w: &mut Writer, s: &mut S) { - self.len().encode(w, s); - w.write_all(self).unwrap(); - } -} - -impl<'a, S> DecodeMut<'a, '_, S> for &'a [u8] { - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - let len = usize::decode(r, s); - let xs = &r[..len]; - *r = &r[len..]; - xs - } -} - -impl Encode for &str { - fn encode(self, w: &mut Writer, s: &mut S) { - self.as_bytes().encode(w, s); - } -} - -impl<'a, S> DecodeMut<'a, '_, S> for &'a str { - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - str::from_utf8(<&[u8]>::decode(r, s)).unwrap() - } -} - -impl Encode for String { - fn encode(self, w: &mut Writer, s: &mut S) { - self[..].encode(w, s); - } -} - -impl DecodeMut<'_, '_, S> for String { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - <&str>::decode(r, s).to_string() - } -} - -impl> Encode for Vec { - fn encode(self, w: &mut Writer, s: &mut S) { - self.len().encode(w, s); - for x in self { - x.encode(w, s); - } - } -} - -impl<'a, S, T: for<'s> DecodeMut<'a, 's, S>> DecodeMut<'a, '_, S> for Vec { - fn decode(r: &mut Reader<'a>, s: &mut S) -> Self { - let len = usize::decode(r, s); - let mut vec = Vec::with_capacity(len); - for _ in 0..len { - vec.push(T::decode(r, s)); - } - vec - } -} - -/// Simplified version of panic payloads, ignoring -/// types other than `&'static str` and `String`. -pub enum PanicMessage { - StaticStr(&'static str), - String(String), - Unknown, -} - -impl From> for PanicMessage { - fn from(payload: Box) -> Self { - if let Some(s) = payload.downcast_ref::<&'static str>() { - return PanicMessage::StaticStr(s); - } - if let Ok(s) = payload.downcast::() { - return PanicMessage::String(*s); - } - PanicMessage::Unknown - } -} - -impl Into> for PanicMessage { - fn into(self) -> Box { - match self { - PanicMessage::StaticStr(s) => Box::new(s), - PanicMessage::String(s) => Box::new(s), - PanicMessage::Unknown => { - struct UnknownPanicMessage; - Box::new(UnknownPanicMessage) - } - } - } -} - -impl PanicMessage { - pub fn as_str(&self) -> Option<&str> { - match self { - PanicMessage::StaticStr(s) => Some(s), - PanicMessage::String(s) => Some(s), - PanicMessage::Unknown => None, - } - } -} - -impl Encode for PanicMessage { - fn encode(self, w: &mut Writer, s: &mut S) { - self.as_str().encode(w, s); - } -} - -impl DecodeMut<'_, '_, S> for PanicMessage { - fn decode(r: &mut Reader<'_>, s: &mut S) -> Self { - match Option::::decode(r, s) { - Some(s) => PanicMessage::String(s), - None => PanicMessage::Unknown, - } - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/scoped_cell.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/scoped_cell.rs deleted file mode 100644 index 2cde1f65adf9..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/scoped_cell.rs +++ /dev/null @@ -1,81 +0,0 @@ -//! `Cell` variant for (scoped) existential lifetimes. - -use std::cell::Cell; -use std::mem; -use std::ops::{Deref, DerefMut}; - -/// Type lambda application, with a lifetime. -#[allow(unused_lifetimes)] -pub trait ApplyL<'a> { - type Out; -} - -/// Type lambda taking a lifetime, i.e., `Lifetime -> Type`. -pub trait LambdaL: for<'a> ApplyL<'a> {} - -impl ApplyL<'a>> LambdaL for T {} - -// HACK(eddyb) work around projection limitations with a newtype -// FIXME(#52812) replace with `&'a mut >::Out` -pub struct RefMutL<'a, 'b, T: LambdaL>(&'a mut >::Out); - -impl<'a, 'b, T: LambdaL> Deref for RefMutL<'a, 'b, T> { - type Target = >::Out; - fn deref(&self) -> &Self::Target { - self.0 - } -} - -impl<'a, 'b, T: LambdaL> DerefMut for RefMutL<'a, 'b, T> { - fn deref_mut(&mut self) -> &mut Self::Target { - self.0 - } -} - -pub struct ScopedCell(Cell<>::Out>); - -impl ScopedCell { - pub const fn new(value: >::Out) -> Self { - ScopedCell(Cell::new(value)) - } - - /// Sets the value in `self` to `replacement` while - /// running `f`, which gets the old value, mutably. - /// The old value will be restored after `f` exits, even - /// by panic, including modifications made to it by `f`. - pub fn replace<'a, R>( - &self, - replacement: >::Out, - f: impl for<'b, 'c> FnOnce(RefMutL<'b, 'c, T>) -> R, - ) -> R { - /// Wrapper that ensures that the cell always gets filled - /// (with the original state, optionally changed by `f`), - /// even if `f` had panicked. - struct PutBackOnDrop<'a, T: LambdaL> { - cell: &'a ScopedCell, - value: Option<>::Out>, - } - - impl<'a, T: LambdaL> Drop for PutBackOnDrop<'a, T> { - fn drop(&mut self) { - self.cell.0.set(self.value.take().unwrap()); - } - } - - let mut put_back_on_drop = PutBackOnDrop { - cell: self, - value: Some(self.0.replace(unsafe { - let erased = mem::transmute_copy(&replacement); - mem::forget(replacement); - erased - })), - }; - - f(RefMutL(put_back_on_drop.value.as_mut().unwrap())) - } - - /// Sets the value in `self` to `value` while running `f`. - pub fn set(&self, value: >::Out, f: impl FnOnce() -> R) -> R { - self.replace(value, |_| f()) - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/selfless_reify.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/selfless_reify.rs deleted file mode 100644 index 907ad256e4b4..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/selfless_reify.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! Abstraction for creating `fn` pointers from any callable that *effectively* -//! has the equivalent of implementing `Default`, even if the compiler neither -//! provides `Default` nor allows reifying closures (i.e. creating `fn` pointers) -//! other than those with absolutely no captures. -//! -//! More specifically, for a closure-like type to be "effectively `Default`": -//! * it must be a ZST (zero-sized type): no information contained within, so -//! that `Default`'s return value (if it were implemented) is unambiguous -//! * it must be `Copy`: no captured "unique ZST tokens" or any other similar -//! types that would make duplicating values at will unsound -//! * combined with the ZST requirement, this confers a kind of "telecopy" -//! ability: similar to `Copy`, but without keeping the value around, and -//! instead "reconstructing" it (a noop given it's a ZST) when needed -//! * it must be *provably* inhabited: no captured uninhabited types or any -//! other types that cannot be constructed by the user of this abstraction -//! * the proof is a value of the closure-like type itself, in a sense the -//! "seed" for the "telecopy" process made possible by ZST + `Copy` -//! * this requirement is the only reason an abstraction limited to a specific -//! usecase is required: ZST + `Copy` can be checked with *at worst* a panic -//! at the "attempted `::default()` call" time, but that doesn't guarantee -//! that the value can be soundly created, and attempting to use the typical -//! "proof ZST token" approach leads yet again to having a ZST + `Copy` type -//! that is not proof of anything without a value (i.e. isomorphic to a -//! newtype of the type it's trying to prove the inhabitation of) -//! -//! A more flexible (and safer) solution to the general problem could exist once -//! `const`-generic parameters can have type parameters in their types: -//! -//! ```rust,ignore (needs future const-generics) -//! extern "C" fn ffi_wrapper< -//! A, R, -//! F: Fn(A) -> R, -//! const f: F, // <-- this `const`-generic is not yet allowed -//! >(arg: A) -> R { -//! f(arg) -//! } -//! ``` - -use std::mem; - -// FIXME(eddyb) this could be `trait` impls except for the `const fn` requirement. -macro_rules! define_reify_functions { - ($( - fn $name:ident $(<$($param:ident),*>)? - for $(extern $abi:tt)? fn($($arg:ident: $arg_ty:ty),*) -> $ret_ty:ty; - )+) => { - $(pub const fn $name< - $($($param,)*)? - F: Fn($($arg_ty),*) -> $ret_ty + Copy - >(f: F) -> $(extern $abi)? fn($($arg_ty),*) -> $ret_ty { - // FIXME(eddyb) describe the `F` type (e.g. via `type_name::`) once panic - // formatting becomes possible in `const fn`. - assert!(mem::size_of::() == 0, "selfless_reify: closure must be zero-sized"); - - $(extern $abi)? fn wrapper< - $($($param,)*)? - F: Fn($($arg_ty),*) -> $ret_ty + Copy - >($($arg: $arg_ty),*) -> $ret_ty { - let f = unsafe { - // SAFETY: `F` satisfies all criteria for "out of thin air" - // reconstructability (see module-level doc comment). - mem::MaybeUninit::::uninit().assume_init() - }; - f($($arg),*) - } - let _f_proof = f; - wrapper::< - $($($param,)*)? - F - > - })+ - } -} - -define_reify_functions! { - fn _reify_to_extern_c_fn_unary for extern "C" fn(arg: A) -> R; - - // HACK(eddyb) this abstraction is used with `for<'a> fn(BridgeConfig<'a>) - // -> T` but that doesn't work with just `reify_to_extern_c_fn_unary` - // because of the `fn` pointer type being "higher-ranked" (i.e. the - // `for<'a>` binder). - // FIXME(eddyb) try to remove the lifetime from `BridgeConfig`, that'd help. - fn reify_to_extern_c_fn_hrt_bridge for extern "C" fn(bridge: super::BridgeConfig<'_>) -> R; -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/server.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/server.rs deleted file mode 100644 index 6e7a8d8c10df..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/bridge/server.rs +++ /dev/null @@ -1,339 +0,0 @@ -//! Server-side traits. - -use super::*; - -// FIXME(eddyb) generate the definition of `HandleStore` in `server.rs`. -use super::client::HandleStore; - -pub trait Types { - type FreeFunctions: 'static; - type TokenStream: 'static + Clone; - type Ident: 'static + Copy + Eq + Hash; - type Literal: 'static + Clone; - type SourceFile: 'static + Clone; - type MultiSpan: 'static; - type Diagnostic: 'static; - type Span: 'static + Copy + Eq + Hash; -} - -/// Declare an associated fn of one of the traits below, adding necessary -/// default bodies. -macro_rules! associated_fn { - (fn drop(&mut self, $arg:ident: $arg_ty:ty)) => - (fn drop(&mut self, $arg: $arg_ty) { mem::drop($arg) }); - - (fn clone(&mut self, $arg:ident: $arg_ty:ty) -> $ret_ty:ty) => - (fn clone(&mut self, $arg: $arg_ty) -> $ret_ty { $arg.clone() }); - - ($($item:tt)*) => ($($item)*;) -} - -macro_rules! declare_server_traits { - ($($name:ident { - $(fn $method:ident($($arg:ident: $arg_ty:ty),* $(,)?) $(-> $ret_ty:ty)?;)* - }),* $(,)?) => { - $(pub trait $name: Types { - $(associated_fn!(fn $method(&mut self, $($arg: $arg_ty),*) $(-> $ret_ty)?);)* - })* - - pub trait Server: Types $(+ $name)* { - fn globals(&mut self) -> ExpnGlobals; - } - } -} -with_api!(Self, self_, declare_server_traits); - -pub(super) struct MarkedTypes(S); - -impl Server for MarkedTypes { - fn globals(&mut self) -> ExpnGlobals { - <_>::mark(Server::globals(&mut self.0)) - } -} - -macro_rules! define_mark_types_impls { - ($($name:ident { - $(fn $method:ident($($arg:ident: $arg_ty:ty),* $(,)?) $(-> $ret_ty:ty)?;)* - }),* $(,)?) => { - impl Types for MarkedTypes { - $(type $name = Marked;)* - } - - $(impl $name for MarkedTypes { - $(fn $method(&mut self, $($arg: $arg_ty),*) $(-> $ret_ty)? { - <_>::mark($name::$method(&mut self.0, $($arg.unmark()),*)) - })* - })* - } -} -with_api!(Self, self_, define_mark_types_impls); - -struct Dispatcher { - handle_store: HandleStore, - server: S, -} - -macro_rules! define_dispatcher_impl { - ($($name:ident { - $(fn $method:ident($($arg:ident: $arg_ty:ty),* $(,)?) $(-> $ret_ty:ty)?;)* - }),* $(,)?) => { - // FIXME(eddyb) `pub` only for `ExecutionStrategy` below. - pub trait DispatcherTrait { - // HACK(eddyb) these are here to allow `Self::$name` to work below. - $(type $name;)* - fn dispatch(&mut self, buf: Buffer) -> Buffer; - } - - impl DispatcherTrait for Dispatcher> { - $(type $name = as Types>::$name;)* - fn dispatch(&mut self, mut buf: Buffer) -> Buffer { - let Dispatcher { handle_store, server } = self; - - let mut reader = &buf[..]; - match api_tags::Method::decode(&mut reader, &mut ()) { - $(api_tags::Method::$name(m) => match m { - $(api_tags::$name::$method => { - let mut call_method = || { - reverse_decode!(reader, handle_store; $($arg: $arg_ty),*); - $name::$method(server, $($arg),*) - }; - // HACK(eddyb) don't use `panic::catch_unwind` in a panic. - // If client and server happen to use the same `libstd`, - // `catch_unwind` asserts that the panic counter was 0, - // even when the closure passed to it didn't panic. - let r = if thread::panicking() { - Ok(call_method()) - } else { - panic::catch_unwind(panic::AssertUnwindSafe(call_method)) - .map_err(PanicMessage::from) - }; - - buf.clear(); - r.encode(&mut buf, handle_store); - })* - }),* - } - buf - } - } - } -} -with_api!(Self, self_, define_dispatcher_impl); - -pub trait ExecutionStrategy { - fn run_bridge_and_client( - &self, - dispatcher: &mut impl DispatcherTrait, - input: Buffer, - run_client: extern "C" fn(BridgeConfig<'_>) -> Buffer, - force_show_panics: bool, - ) -> Buffer; -} - -pub struct SameThread; - -impl ExecutionStrategy for SameThread { - fn run_bridge_and_client( - &self, - dispatcher: &mut impl DispatcherTrait, - input: Buffer, - run_client: extern "C" fn(BridgeConfig<'_>) -> Buffer, - force_show_panics: bool, - ) -> Buffer { - let mut dispatch = |buf| dispatcher.dispatch(buf); - - run_client(BridgeConfig { - input, - dispatch: (&mut dispatch).into(), - force_show_panics, - _marker: marker::PhantomData, - }) - } -} - -// NOTE(eddyb) Two implementations are provided, the second one is a bit -// faster but neither is anywhere near as fast as same-thread execution. - -pub struct CrossThread1; - -impl ExecutionStrategy for CrossThread1 { - fn run_bridge_and_client( - &self, - dispatcher: &mut impl DispatcherTrait, - input: Buffer, - run_client: extern "C" fn(BridgeConfig<'_>) -> Buffer, - force_show_panics: bool, - ) -> Buffer { - use std::sync::mpsc::channel; - - let (req_tx, req_rx) = channel(); - let (res_tx, res_rx) = channel(); - - let join_handle = thread::spawn(move || { - let mut dispatch = |buf| { - req_tx.send(buf).unwrap(); - res_rx.recv().unwrap() - }; - - run_client(BridgeConfig { - input, - dispatch: (&mut dispatch).into(), - force_show_panics, - _marker: marker::PhantomData, - }) - }); - - for b in req_rx { - res_tx.send(dispatcher.dispatch(b)).unwrap(); - } - - join_handle.join().unwrap() - } -} - -pub struct CrossThread2; - -impl ExecutionStrategy for CrossThread2 { - fn run_bridge_and_client( - &self, - dispatcher: &mut impl DispatcherTrait, - input: Buffer, - run_client: extern "C" fn(BridgeConfig<'_>) -> Buffer, - force_show_panics: bool, - ) -> Buffer { - use std::sync::{Arc, Mutex}; - - enum State { - Req(T), - Res(T), - } - - let mut state = Arc::new(Mutex::new(State::Res(Buffer::new()))); - - let server_thread = thread::current(); - let state2 = state.clone(); - let join_handle = thread::spawn(move || { - let mut dispatch = |b| { - *state2.lock().unwrap() = State::Req(b); - server_thread.unpark(); - loop { - thread::park(); - if let State::Res(b) = &mut *state2.lock().unwrap() { - break b.take(); - } - } - }; - - let r = run_client(BridgeConfig { - input, - dispatch: (&mut dispatch).into(), - force_show_panics, - _marker: marker::PhantomData, - }); - - // Wake up the server so it can exit the dispatch loop. - drop(state2); - server_thread.unpark(); - - r - }); - - // Check whether `state2` was dropped, to know when to stop. - while Arc::get_mut(&mut state).is_none() { - thread::park(); - let mut b = match &mut *state.lock().unwrap() { - State::Req(b) => b.take(), - _ => continue, - }; - b = dispatcher.dispatch(b.take()); - *state.lock().unwrap() = State::Res(b); - join_handle.thread().unpark(); - } - - join_handle.join().unwrap() - } -} - -fn run_server< - S: Server, - I: Encode>>, - O: for<'a, 's> DecodeMut<'a, 's, HandleStore>>, ->( - strategy: &impl ExecutionStrategy, - handle_counters: &'static client::HandleCounters, - server: S, - input: I, - run_client: extern "C" fn(BridgeConfig<'_>) -> Buffer, - force_show_panics: bool, -) -> Result { - let mut dispatcher = - Dispatcher { handle_store: HandleStore::new(handle_counters), server: MarkedTypes(server) }; - - let globals = dispatcher.server.globals(); - - let mut buf = Buffer::new(); - (globals, input).encode(&mut buf, &mut dispatcher.handle_store); - - buf = strategy.run_bridge_and_client(&mut dispatcher, buf, run_client, force_show_panics); - - Result::decode(&mut &buf[..], &mut dispatcher.handle_store) -} - -impl client::Client { - pub fn run( - &self, - strategy: &impl ExecutionStrategy, - server: S, - input: S::TokenStream, - force_show_panics: bool, - ) -> Result - where - S: Server, - S::TokenStream: Default, - { - let client::Client { get_handle_counters, run, _marker } = *self; - run_server( - strategy, - get_handle_counters(), - server, - as Types>::TokenStream::mark(input), - run, - force_show_panics, - ) - .map(|s| as Types>::TokenStream>>::unmark(s).unwrap_or_default()) - } -} - -impl - client::Client< - (super::super::TokenStream, super::super::TokenStream), - super::super::TokenStream, - > -{ - pub fn run( - &self, - strategy: &impl ExecutionStrategy, - server: S, - input: S::TokenStream, - input2: S::TokenStream, - force_show_panics: bool, - ) -> Result - where - S: Server, - S::TokenStream: Default, - { - let client::Client { get_handle_counters, run, _marker } = *self; - run_server( - strategy, - get_handle_counters(), - server, - ( - as Types>::TokenStream::mark(input), - as Types>::TokenStream::mark(input2), - ), - run, - force_show_panics, - ) - .map(|s| as Types>::TokenStream>>::unmark(s).unwrap_or_default()) - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/diagnostic.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/diagnostic.rs deleted file mode 100644 index 3fade2dc4f9c..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/diagnostic.rs +++ /dev/null @@ -1,166 +0,0 @@ -//! lib-proc-macro diagnostic -//! -//! Copy from -//! augmented with removing unstable features - -use super::Span; - -/// An enum representing a diagnostic level. -#[derive(Copy, Clone, Debug)] -#[non_exhaustive] -pub enum Level { - /// An error. - Error, - /// A warning. - Warning, - /// A note. - Note, - /// A help message. - Help, -} - -/// Trait implemented by types that can be converted into a set of `Span`s. -pub trait MultiSpan { - /// Converts `self` into a `Vec`. - fn into_spans(self) -> Vec; -} - -impl MultiSpan for Span { - fn into_spans(self) -> Vec { - vec![self] - } -} - -impl MultiSpan for Vec { - fn into_spans(self) -> Vec { - self - } -} - -impl<'a> MultiSpan for &'a [Span] { - fn into_spans(self) -> Vec { - self.to_vec() - } -} - -/// A structure representing a diagnostic message and associated children -/// messages. -#[derive(Clone, Debug)] -pub struct Diagnostic { - level: Level, - message: String, - spans: Vec, - children: Vec, -} - -macro_rules! diagnostic_child_methods { - ($spanned:ident, $regular:ident, $level:expr) => { - #[doc = concat!("Adds a new child diagnostics message to `self` with the [`", - stringify!($level), "`] level, and the given `spans` and `message`.")] - pub fn $spanned(mut self, spans: S, message: T) -> Diagnostic - where - S: MultiSpan, - T: Into, - { - self.children.push(Diagnostic::spanned(spans, $level, message)); - self - } - - #[doc = concat!("Adds a new child diagnostic message to `self` with the [`", - stringify!($level), "`] level, and the given `message`.")] - pub fn $regular>(mut self, message: T) -> Diagnostic { - self.children.push(Diagnostic::new($level, message)); - self - } - }; -} - -/// Iterator over the children diagnostics of a `Diagnostic`. -#[derive(Debug, Clone)] -pub struct Children<'a>(std::slice::Iter<'a, Diagnostic>); - -impl<'a> Iterator for Children<'a> { - type Item = &'a Diagnostic; - - fn next(&mut self) -> Option { - self.0.next() - } -} - -impl Diagnostic { - /// Creates a new diagnostic with the given `level` and `message`. - pub fn new>(level: Level, message: T) -> Diagnostic { - Diagnostic { level, message: message.into(), spans: vec![], children: vec![] } - } - - /// Creates a new diagnostic with the given `level` and `message` pointing to - /// the given set of `spans`. - pub fn spanned(spans: S, level: Level, message: T) -> Diagnostic - where - S: MultiSpan, - T: Into, - { - Diagnostic { level, message: message.into(), spans: spans.into_spans(), children: vec![] } - } - - diagnostic_child_methods!(span_error, error, Level::Error); - diagnostic_child_methods!(span_warning, warning, Level::Warning); - diagnostic_child_methods!(span_note, note, Level::Note); - diagnostic_child_methods!(span_help, help, Level::Help); - - /// Returns the diagnostic `level` for `self`. - pub fn level(&self) -> Level { - self.level - } - - /// Sets the level in `self` to `level`. - pub fn set_level(&mut self, level: Level) { - self.level = level; - } - - /// Returns the message in `self`. - pub fn message(&self) -> &str { - &self.message - } - - /// Sets the message in `self` to `message`. - pub fn set_message>(&mut self, message: T) { - self.message = message.into(); - } - - /// Returns the `Span`s in `self`. - pub fn spans(&self) -> &[Span] { - &self.spans - } - - /// Sets the `Span`s in `self` to `spans`. - pub fn set_spans(&mut self, spans: S) { - self.spans = spans.into_spans(); - } - - /// Returns an iterator over the children diagnostics of `self`. - pub fn children(&self) -> Children<'_> { - Children(self.children.iter()) - } - - /// Emit the diagnostic. - pub fn emit(self) { - fn to_internal(spans: Vec) -> super::bridge::client::MultiSpan { - let mut multi_span = super::bridge::client::MultiSpan::new(); - for span in spans { - multi_span.push(span.0); - } - multi_span - } - - let mut diag = super::bridge::client::Diagnostic::new( - self.level, - &self.message[..], - to_internal(self.spans), - ); - for c in self.children { - diag.sub(c.level, &c.message[..], to_internal(c.spans)); - } - diag.emit(); - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/mod.rs deleted file mode 100644 index be62c73ef32b..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/mod.rs +++ /dev/null @@ -1,1125 +0,0 @@ -//! A support library for macro authors when defining new macros. -//! -//! This library, provided by the standard distribution, provides the types -//! consumed in the interfaces of procedurally defined macro definitions such as -//! function-like macros `#[proc_macro]`, macro attributes `#[proc_macro_attribute]` and -//! custom derive attributes`#[proc_macro_derive]`. -//! -//! See [the book] for more. -//! -//! [the book]: ../book/ch19-06-macros.html#procedural-macros-for-generating-code-from-attributes - -#[doc(hidden)] -pub mod bridge; - -mod diagnostic; - -pub use diagnostic::{Diagnostic, Level, MultiSpan}; - -use std::cmp::Ordering; -use std::ops::RangeBounds; -use std::path::PathBuf; -use std::str::FromStr; -use std::{error, fmt, iter, mem}; - -/// Determines whether proc_macro has been made accessible to the currently -/// running program. -/// -/// The proc_macro crate is only intended for use inside the implementation of -/// procedural macros. All the functions in this crate panic if invoked from -/// outside of a procedural macro, such as from a build script or unit test or -/// ordinary Rust binary. -/// -/// With consideration for Rust libraries that are designed to support both -/// macro and non-macro use cases, `proc_macro::is_available()` provides a -/// non-panicking way to detect whether the infrastructure required to use the -/// API of proc_macro is presently available. Returns true if invoked from -/// inside of a procedural macro, false if invoked from any other binary. -pub fn is_available() -> bool { - bridge::client::is_available() -} - -/// The main type provided by this crate, representing an abstract stream of -/// tokens, or, more specifically, a sequence of token trees. -/// The type provide interfaces for iterating over those token trees and, conversely, -/// collecting a number of token trees into one stream. -/// -/// This is both the input and output of `#[proc_macro]`, `#[proc_macro_attribute]` -/// and `#[proc_macro_derive]` definitions. -#[derive(Clone)] -pub struct TokenStream(Option); - -/// Error returned from `TokenStream::from_str`. -#[non_exhaustive] -#[derive(Debug)] -pub struct LexError; - -impl fmt::Display for LexError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("cannot parse string into token stream") - } -} - -impl error::Error for LexError {} - -/// Error returned from `TokenStream::expand_expr`. -#[non_exhaustive] -#[derive(Debug)] -pub struct ExpandError; - -impl fmt::Display for ExpandError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("macro expansion failed") - } -} - -impl error::Error for ExpandError {} - -impl TokenStream { - /// Returns an empty `TokenStream` containing no token trees. - pub fn new() -> TokenStream { - TokenStream(None) - } - - /// Checks if this `TokenStream` is empty. - pub fn is_empty(&self) -> bool { - self.0.as_ref().map(|h| h.is_empty()).unwrap_or(true) - } - - /// Parses this `TokenStream` as an expression and attempts to expand any - /// macros within it. Returns the expanded `TokenStream`. - /// - /// Currently only expressions expanding to literals will succeed, although - /// this may be relaxed in the future. - /// - /// NOTE: In error conditions, `expand_expr` may leave macros unexpanded, - /// report an error, failing compilation, and/or return an `Err(..)`. The - /// specific behavior for any error condition, and what conditions are - /// considered errors, is unspecified and may change in the future. - pub fn expand_expr(&self) -> Result { - let stream = self.0.as_ref().ok_or(ExpandError)?; - match bridge::client::TokenStream::expand_expr(stream) { - Ok(stream) => Ok(TokenStream(Some(stream))), - Err(_) => Err(ExpandError), - } - } -} - -/// Attempts to break the string into tokens and parse those tokens into a token stream. -/// May fail for a number of reasons, for example, if the string contains unbalanced delimiters -/// or characters not existing in the language. -/// All tokens in the parsed stream get `Span::call_site()` spans. -/// -/// NOTE: some errors may cause panics instead of returning `LexError`. We reserve the right to -/// change these errors into `LexError`s later. -impl FromStr for TokenStream { - type Err = LexError; - - fn from_str(src: &str) -> Result { - Ok(TokenStream(Some(bridge::client::TokenStream::from_str(src)))) - } -} - -/// Prints the token stream as a string that is supposed to be losslessly convertible back -/// into the same token stream (modulo spans), except for possibly `TokenTree::Group`s -/// with `Delimiter::None` delimiters and negative numeric literals. -impl fmt::Display for TokenStream { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -/// Prints token in a form convenient for debugging. -impl fmt::Debug for TokenStream { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("TokenStream ")?; - f.debug_list().entries(self.clone()).finish() - } -} - -impl Default for TokenStream { - fn default() -> Self { - TokenStream::new() - } -} - -pub use quote::{quote, quote_span}; - -fn tree_to_bridge_tree( - tree: TokenTree, -) -> bridge::TokenTree< - bridge::client::TokenStream, - bridge::client::Span, - bridge::client::Ident, - bridge::client::Literal, -> { - match tree { - TokenTree::Group(tt) => bridge::TokenTree::Group(tt.0), - TokenTree::Punct(tt) => bridge::TokenTree::Punct(tt.0), - TokenTree::Ident(tt) => bridge::TokenTree::Ident(tt.0), - TokenTree::Literal(tt) => bridge::TokenTree::Literal(tt.0), - } -} - -/// Creates a token stream containing a single token tree. -impl From for TokenStream { - fn from(tree: TokenTree) -> TokenStream { - TokenStream(Some(bridge::client::TokenStream::from_token_tree(tree_to_bridge_tree(tree)))) - } -} - -/// Non-generic helper for implementing `FromIterator` and -/// `Extend` with less monomorphization in calling crates. -struct ConcatStreamsHelper { - streams: Vec, -} - -impl ConcatStreamsHelper { - fn new(capacity: usize) -> Self { - ConcatStreamsHelper { streams: Vec::with_capacity(capacity) } - } - - fn push(&mut self, stream: TokenStream) { - if let Some(stream) = stream.0 { - self.streams.push(stream); - } - } - - fn build(mut self) -> TokenStream { - if self.streams.len() <= 1 { - TokenStream(self.streams.pop()) - } else { - TokenStream(Some(bridge::client::TokenStream::concat_streams(None, self.streams))) - } - } - - fn append_to(mut self, stream: &mut TokenStream) { - if self.streams.is_empty() { - return; - } - let base = stream.0.take(); - if base.is_none() && self.streams.len() == 1 { - stream.0 = self.streams.pop(); - } else { - stream.0 = Some(bridge::client::TokenStream::concat_streams(base, self.streams)); - } - } -} - -/// Collects a number of token trees into a single stream. -impl iter::FromIterator for TokenStream { - fn from_iter>(trees: I) -> Self { - trees.into_iter().map(TokenStream::from).collect() - } -} - -/// A "flattening" operation on token streams, collects token trees -/// from multiple token streams into a single stream. -impl iter::FromIterator for TokenStream { - fn from_iter>(streams: I) -> Self { - let iter = streams.into_iter(); - let mut builder = ConcatStreamsHelper::new(iter.size_hint().0); - iter.for_each(|stream| builder.push(stream)); - builder.build() - } -} - -impl Extend for TokenStream { - fn extend>(&mut self, trees: I) { - self.extend(trees.into_iter().map(TokenStream::from)); - } -} - -impl Extend for TokenStream { - fn extend>(&mut self, streams: I) { - // FIXME(eddyb) Use an optimized implementation if/when possible. - *self = iter::once(mem::replace(self, Self::new())).chain(streams).collect(); - } -} - -/// Public implementation details for the `TokenStream` type, such as iterators. -pub mod token_stream { - use super::{bridge, Group, Ident, Literal, Punct, TokenStream, TokenTree}; - - /// An iterator over `TokenStream`'s `TokenTree`s. - /// The iteration is "shallow", e.g., the iterator doesn't recurse into delimited groups, - /// and returns whole groups as token trees. - #[derive(Clone)] - pub struct IntoIter( - std::vec::IntoIter< - bridge::TokenTree< - bridge::client::TokenStream, - bridge::client::Span, - bridge::client::Ident, - bridge::client::Literal, - >, - >, - ); - - impl Iterator for IntoIter { - type Item = TokenTree; - - fn next(&mut self) -> Option { - self.0.next().map(|tree| match tree { - bridge::TokenTree::Group(tt) => TokenTree::Group(Group(tt)), - bridge::TokenTree::Punct(tt) => TokenTree::Punct(Punct(tt)), - bridge::TokenTree::Ident(tt) => TokenTree::Ident(Ident(tt)), - bridge::TokenTree::Literal(tt) => TokenTree::Literal(Literal(tt)), - }) - } - } - - impl IntoIterator for TokenStream { - type Item = TokenTree; - type IntoIter = IntoIter; - - fn into_iter(self) -> IntoIter { - IntoIter(self.0.map(|v| v.into_trees()).unwrap_or_default().into_iter()) - } - } -} - -#[doc(hidden)] -mod quote; - -/// A region of source code, along with macro expansion information. -#[derive(Copy, Clone)] -pub struct Span(bridge::client::Span); - -macro_rules! diagnostic_method { - ($name:ident, $level:expr) => { - /// Creates a new `Diagnostic` with the given `message` at the span - /// `self`. - pub fn $name>(self, message: T) -> Diagnostic { - Diagnostic::spanned(self, $level, message) - } - }; -} - -impl Span { - /// A span that resolves at the macro definition site. - pub fn def_site() -> Span { - Span(bridge::client::Span::def_site()) - } - - /// The span of the invocation of the current procedural macro. - /// Identifiers created with this span will be resolved as if they were written - /// directly at the macro call location (call-site hygiene) and other code - /// at the macro call site will be able to refer to them as well. - pub fn call_site() -> Span { - Span(bridge::client::Span::call_site()) - } - - /// A span that represents `macro_rules` hygiene, and sometimes resolves at the macro - /// definition site (local variables, labels, `$crate`) and sometimes at the macro - /// call site (everything else). - /// The span location is taken from the call-site. - pub fn mixed_site() -> Span { - Span(bridge::client::Span::mixed_site()) - } - - /// The original source file into which this span points. - pub fn source_file(&self) -> SourceFile { - SourceFile(self.0.source_file()) - } - - /// The `Span` for the tokens in the previous macro expansion from which - /// `self` was generated from, if any. - pub fn parent(&self) -> Option { - self.0.parent().map(Span) - } - - /// The span for the origin source code that `self` was generated from. If - /// this `Span` wasn't generated from other macro expansions then the return - /// value is the same as `*self`. - pub fn source(&self) -> Span { - Span(self.0.source()) - } - - /// Gets the starting line/column in the source file for this span. - pub fn start(&self) -> LineColumn { - self.0.start().add_1_to_column() - } - - /// Gets the ending line/column in the source file for this span. - pub fn end(&self) -> LineColumn { - self.0.end().add_1_to_column() - } - - /// Creates an empty span pointing to directly before this span. - pub fn before(&self) -> Span { - Span(self.0.before()) - } - - /// Creates an empty span pointing to directly after this span. - pub fn after(&self) -> Span { - Span(self.0.after()) - } - - /// Creates a new span encompassing `self` and `other`. - /// - /// Returns `None` if `self` and `other` are from different files. - pub fn join(&self, other: Span) -> Option { - self.0.join(other.0).map(Span) - } - - /// Creates a new span with the same line/column information as `self` but - /// that resolves symbols as though it were at `other`. - pub fn resolved_at(&self, other: Span) -> Span { - Span(self.0.resolved_at(other.0)) - } - - /// Creates a new span with the same name resolution behavior as `self` but - /// with the line/column information of `other`. - pub fn located_at(&self, other: Span) -> Span { - other.resolved_at(*self) - } - - /// Compares to spans to see if they're equal. - pub fn eq(&self, other: &Span) -> bool { - self.0 == other.0 - } - - /// Returns the source text behind a span. This preserves the original source - /// code, including spaces and comments. It only returns a result if the span - /// corresponds to real source code. - /// - /// Note: The observable result of a macro should only rely on the tokens and - /// not on this source text. The result of this function is a best effort to - /// be used for diagnostics only. - pub fn source_text(&self) -> Option { - self.0.source_text() - } - - // Used by the implementation of `Span::quote` - #[doc(hidden)] - pub fn save_span(&self) -> usize { - self.0.save_span() - } - - // Used by the implementation of `Span::quote` - #[doc(hidden)] - pub fn recover_proc_macro_span(id: usize) -> Span { - Span(bridge::client::Span::recover_proc_macro_span(id)) - } - - diagnostic_method!(error, Level::Error); - diagnostic_method!(warning, Level::Warning); - diagnostic_method!(note, Level::Note); - diagnostic_method!(help, Level::Help); -} - -/// Prints a span in a form convenient for debugging. -impl fmt::Debug for Span { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - -/// A line-column pair representing the start or end of a `Span`. -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub struct LineColumn { - /// The 1-indexed line in the source file on which the span starts or ends (inclusive). - pub line: usize, - /// The 1-indexed column (number of bytes in UTF-8 encoding) in the source - /// file on which the span starts or ends (inclusive). - pub column: usize, -} - -impl LineColumn { - fn add_1_to_column(self) -> Self { - LineColumn { line: self.line, column: self.column + 1 } - } -} - -impl Ord for LineColumn { - fn cmp(&self, other: &Self) -> Ordering { - self.line.cmp(&other.line).then(self.column.cmp(&other.column)) - } -} - -impl PartialOrd for LineColumn { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } -} - -/// The source file of a given `Span`. -#[derive(Clone)] -pub struct SourceFile(bridge::client::SourceFile); - -impl SourceFile { - /// Gets the path to this source file. - /// - /// ### Note - /// If the code span associated with this `SourceFile` was generated by an external macro, this - /// macro, this might not be an actual path on the filesystem. Use [`is_real`] to check. - /// - /// Also note that even if `is_real` returns `true`, if `--remap-path-prefix` was passed on - /// the command line, the path as given might not actually be valid. - /// - /// [`is_real`]: Self::is_real - pub fn path(&self) -> PathBuf { - PathBuf::from(self.0.path()) - } - - /// Returns `true` if this source file is a real source file, and not generated by an external - /// macro's expansion. - pub fn is_real(&self) -> bool { - // This is a hack until intercrate spans are implemented and we can have real source files - // for spans generated in external macros. - // https://github.com/rust-lang/rust/pull/43604#issuecomment-333334368 - self.0.is_real() - } -} - -impl fmt::Debug for SourceFile { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("SourceFile") - .field("path", &self.path()) - .field("is_real", &self.is_real()) - .finish() - } -} - -impl PartialEq for SourceFile { - fn eq(&self, other: &Self) -> bool { - self.0.eq(&other.0) - } -} - -impl Eq for SourceFile {} - -/// A single token or a delimited sequence of token trees (e.g., `[1, (), ..]`). -#[derive(Clone)] -pub enum TokenTree { - /// A token stream surrounded by bracket delimiters. - Group(Group), - /// An identifier. - Ident(Ident), - /// A single punctuation character (`+`, `,`, `$`, etc.). - Punct(Punct), - /// A literal character (`'a'`), string (`"hello"`), number (`2.3`), etc. - Literal(Literal), -} - -impl TokenTree { - /// Returns the span of this tree, delegating to the `span` method of - /// the contained token or a delimited stream. - pub fn span(&self) -> Span { - match *self { - TokenTree::Group(ref t) => t.span(), - TokenTree::Ident(ref t) => t.span(), - TokenTree::Punct(ref t) => t.span(), - TokenTree::Literal(ref t) => t.span(), - } - } - - /// Configures the span for *only this token*. - /// - /// Note that if this token is a `Group` then this method will not configure - /// the span of each of the internal tokens, this will simply delegate to - /// the `set_span` method of each variant. - pub fn set_span(&mut self, span: Span) { - match *self { - TokenTree::Group(ref mut t) => t.set_span(span), - TokenTree::Ident(ref mut t) => t.set_span(span), - TokenTree::Punct(ref mut t) => t.set_span(span), - TokenTree::Literal(ref mut t) => t.set_span(span), - } - } -} - -/// Prints token tree in a form convenient for debugging. -impl fmt::Debug for TokenTree { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - // Each of these has the name in the struct type in the derived debug, - // so don't bother with an extra layer of indirection - match *self { - TokenTree::Group(ref tt) => tt.fmt(f), - TokenTree::Ident(ref tt) => tt.fmt(f), - TokenTree::Punct(ref tt) => tt.fmt(f), - TokenTree::Literal(ref tt) => tt.fmt(f), - } - } -} - -impl From for TokenTree { - fn from(g: Group) -> TokenTree { - TokenTree::Group(g) - } -} - -impl From for TokenTree { - fn from(g: Ident) -> TokenTree { - TokenTree::Ident(g) - } -} - -impl From for TokenTree { - fn from(g: Punct) -> TokenTree { - TokenTree::Punct(g) - } -} - -impl From for TokenTree { - fn from(g: Literal) -> TokenTree { - TokenTree::Literal(g) - } -} - -/// Prints the token tree as a string that is supposed to be losslessly convertible back -/// into the same token tree (modulo spans), except for possibly `TokenTree::Group`s -/// with `Delimiter::None` delimiters and negative numeric literals. -impl fmt::Display for TokenTree { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -/// A delimited token stream. -/// -/// A `Group` internally contains a `TokenStream` which is surrounded by `Delimiter`s. -#[derive(Clone)] -pub struct Group(bridge::Group); - -/// Describes how a sequence of token trees is delimited. -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub enum Delimiter { - /// `( ... )` - Parenthesis, - /// `{ ... }` - Brace, - /// `[ ... ]` - Bracket, - /// `Ø ... Ø` - /// An invisible delimiter, that may, for example, appear around tokens coming from a - /// "macro variable" `$var`. It is important to preserve operator priorities in cases like - /// `$var * 3` where `$var` is `1 + 2`. - /// Invisible delimiters might not survive roundtrip of a token stream through a string. - None, -} - -impl Group { - /// Creates a new `Group` with the given delimiter and token stream. - /// - /// This constructor will set the span for this group to - /// `Span::call_site()`. To change the span you can use the `set_span` - /// method below. - pub fn new(delimiter: Delimiter, stream: TokenStream) -> Group { - Group(bridge::Group { - delimiter, - stream: stream.0, - span: bridge::DelimSpan::from_single(Span::call_site().0), - }) - } - - /// Returns the delimiter of this `Group` - pub fn delimiter(&self) -> Delimiter { - self.0.delimiter - } - - /// Returns the `TokenStream` of tokens that are delimited in this `Group`. - /// - /// Note that the returned token stream does not include the delimiter - /// returned above. - pub fn stream(&self) -> TokenStream { - TokenStream(self.0.stream.clone()) - } - - /// Returns the span for the delimiters of this token stream, spanning the - /// entire `Group`. - /// - /// ```text - /// pub fn span(&self) -> Span { - /// ^^^^^^^ - /// ``` - pub fn span(&self) -> Span { - Span(self.0.span.entire) - } - - /// Returns the span pointing to the opening delimiter of this group. - /// - /// ```text - /// pub fn span_open(&self) -> Span { - /// ^ - /// ``` - pub fn span_open(&self) -> Span { - Span(self.0.span.open) - } - - /// Returns the span pointing to the closing delimiter of this group. - /// - /// ```text - /// pub fn span_close(&self) -> Span { - /// ^ - /// ``` - pub fn span_close(&self) -> Span { - Span(self.0.span.close) - } - - /// Configures the span for this `Group`'s delimiters, but not its internal - /// tokens. - /// - /// This method will **not** set the span of all the internal tokens spanned - /// by this group, but rather it will only set the span of the delimiter - /// tokens at the level of the `Group`. - pub fn set_span(&mut self, span: Span) { - self.0.span = bridge::DelimSpan::from_single(span.0); - } -} - -/// Prints the group as a string that should be losslessly convertible back -/// into the same group (modulo spans), except for possibly `TokenTree::Group`s -/// with `Delimiter::None` delimiters. -impl fmt::Display for Group { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -impl fmt::Debug for Group { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Group") - .field("delimiter", &self.delimiter()) - .field("stream", &self.stream()) - .field("span", &self.span()) - .finish() - } -} - -/// A `Punct` is a single punctuation character such as `+`, `-` or `#`. -/// -/// Multi-character operators like `+=` are represented as two instances of `Punct` with different -/// forms of `Spacing` returned. -#[derive(Clone)] -pub struct Punct(bridge::Punct); - -/// Describes whether a `Punct` is followed immediately by another `Punct` ([`Spacing::Joint`]) or -/// by a different token or whitespace ([`Spacing::Alone`]). -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub enum Spacing { - /// A `Punct` is not immediately followed by another `Punct`. - /// E.g. `+` is `Alone` in `+ =`, `+ident` and `+()`. - Alone, - /// A `Punct` is immediately followed by another `Punct`. - /// E.g. `+` is `Joint` in `+=` and `++`. - /// - /// Additionally, single quote `'` can join with identifiers to form lifetimes: `'ident`. - Joint, -} - -impl Punct { - /// Creates a new `Punct` from the given character and spacing. - /// The `ch` argument must be a valid punctuation character permitted by the language, - /// otherwise the function will panic. - /// - /// The returned `Punct` will have the default span of `Span::call_site()` - /// which can be further configured with the `set_span` method below. - pub fn new(ch: char, spacing: Spacing) -> Punct { - const LEGAL_CHARS: &[char] = &[ - '=', '<', '>', '!', '~', '+', '-', '*', '/', '%', '^', '&', '|', '@', '.', ',', ';', - ':', '#', '$', '?', '\'', - ]; - if !LEGAL_CHARS.contains(&ch) { - panic!("unsupported character `{:?}`", ch); - } - Punct(bridge::Punct { - ch: ch as u8, - joint: spacing == Spacing::Joint, - span: Span::call_site().0, - }) - } - - /// Returns the value of this punctuation character as `char`. - pub fn as_char(&self) -> char { - self.0.ch as char - } - - /// Returns the spacing of this punctuation character, indicating whether it's immediately - /// followed by another `Punct` in the token stream, so they can potentially be combined into - /// a multi-character operator (`Joint`), or it's followed by some other token or whitespace - /// (`Alone`) so the operator has certainly ended. - pub fn spacing(&self) -> Spacing { - if self.0.joint { - Spacing::Joint - } else { - Spacing::Alone - } - } - - /// Returns the span for this punctuation character. - pub fn span(&self) -> Span { - Span(self.0.span) - } - - /// Configure the span for this punctuation character. - pub fn set_span(&mut self, span: Span) { - self.0.span = span.0; - } -} - -/// Prints the punctuation character as a string that should be losslessly convertible -/// back into the same character. -impl fmt::Display for Punct { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -impl fmt::Debug for Punct { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Punct") - .field("ch", &self.as_char()) - .field("spacing", &self.spacing()) - .field("span", &self.span()) - .finish() - } -} - -impl PartialEq for Punct { - fn eq(&self, rhs: &char) -> bool { - self.as_char() == *rhs - } -} - -impl PartialEq for char { - fn eq(&self, rhs: &Punct) -> bool { - *self == rhs.as_char() - } -} - -/// An identifier (`ident`). -#[derive(Clone)] -pub struct Ident(bridge::client::Ident); - -impl Ident { - /// Creates a new `Ident` with the given `string` as well as the specified - /// `span`. - /// The `string` argument must be a valid identifier permitted by the - /// language (including keywords, e.g. `self` or `fn`). Otherwise, the function will panic. - /// - /// Note that `span`, currently in rustc, configures the hygiene information - /// for this identifier. - /// - /// As of this time `Span::call_site()` explicitly opts-in to "call-site" hygiene - /// meaning that identifiers created with this span will be resolved as if they were written - /// directly at the location of the macro call, and other code at the macro call site will be - /// able to refer to them as well. - /// - /// Later spans like `Span::def_site()` will allow to opt-in to "definition-site" hygiene - /// meaning that identifiers created with this span will be resolved at the location of the - /// macro definition and other code at the macro call site will not be able to refer to them. - /// - /// Due to the current importance of hygiene this constructor, unlike other - /// tokens, requires a `Span` to be specified at construction. - pub fn new(string: &str, span: Span) -> Ident { - Ident(bridge::client::Ident::new(string, span.0, false)) - } - - /// Same as `Ident::new`, but creates a raw identifier (`r#ident`). - /// The `string` argument be a valid identifier permitted by the language - /// (including keywords, e.g. `fn`). Keywords which are usable in path segments - /// (e.g. `self`, `super`) are not supported, and will cause a panic. - pub fn new_raw(string: &str, span: Span) -> Ident { - Ident(bridge::client::Ident::new(string, span.0, true)) - } - - /// Returns the span of this `Ident`, encompassing the entire string returned - /// by [`to_string`](Self::to_string). - pub fn span(&self) -> Span { - Span(self.0.span()) - } - - /// Configures the span of this `Ident`, possibly changing its hygiene context. - pub fn set_span(&mut self, span: Span) { - self.0 = self.0.with_span(span.0); - } -} - -/// Prints the identifier as a string that should be losslessly convertible -/// back into the same identifier. -impl fmt::Display for Ident { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -impl fmt::Debug for Ident { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Ident") - .field("ident", &self.to_string()) - .field("span", &self.span()) - .finish() - } -} - -/// A literal string (`"hello"`), byte string (`b"hello"`), -/// character (`'a'`), byte character (`b'a'`), an integer or floating point number -/// with or without a suffix (`1`, `1u8`, `2.3`, `2.3f32`). -/// Boolean literals like `true` and `false` do not belong here, they are `Ident`s. -#[derive(Clone)] -pub struct Literal(bridge::client::Literal); - -macro_rules! suffixed_int_literals { - ($($name:ident => $kind:ident,)*) => ($( - /// Creates a new suffixed integer literal with the specified value. - /// - /// This function will create an integer like `1u32` where the integer - /// value specified is the first part of the token and the integral is - /// also suffixed at the end. - /// Literals created from negative numbers might not survive round-trips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// Literals created through this method have the `Span::call_site()` - /// span by default, which can be configured with the `set_span` method - /// below. - pub fn $name(n: $kind) -> Literal { - Literal(bridge::client::Literal::typed_integer(&n.to_string(), stringify!($kind))) - } - )*) -} - -macro_rules! unsuffixed_int_literals { - ($($name:ident => $kind:ident,)*) => ($( - /// Creates a new unsuffixed integer literal with the specified value. - /// - /// This function will create an integer like `1` where the integer - /// value specified is the first part of the token. No suffix is - /// specified on this token, meaning that invocations like - /// `Literal::i8_unsuffixed(1)` are equivalent to - /// `Literal::u32_unsuffixed(1)`. - /// Literals created from negative numbers might not survive rountrips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// Literals created through this method have the `Span::call_site()` - /// span by default, which can be configured with the `set_span` method - /// below. - pub fn $name(n: $kind) -> Literal { - Literal(bridge::client::Literal::integer(&n.to_string())) - } - )*) -} - -impl Literal { - suffixed_int_literals! { - u8_suffixed => u8, - u16_suffixed => u16, - u32_suffixed => u32, - u64_suffixed => u64, - u128_suffixed => u128, - usize_suffixed => usize, - i8_suffixed => i8, - i16_suffixed => i16, - i32_suffixed => i32, - i64_suffixed => i64, - i128_suffixed => i128, - isize_suffixed => isize, - } - - unsuffixed_int_literals! { - u8_unsuffixed => u8, - u16_unsuffixed => u16, - u32_unsuffixed => u32, - u64_unsuffixed => u64, - u128_unsuffixed => u128, - usize_unsuffixed => usize, - i8_unsuffixed => i8, - i16_unsuffixed => i16, - i32_unsuffixed => i32, - i64_unsuffixed => i64, - i128_unsuffixed => i128, - isize_unsuffixed => isize, - } - - /// Creates a new unsuffixed floating-point literal. - /// - /// This constructor is similar to those like `Literal::i8_unsuffixed` where - /// the float's value is emitted directly into the token but no suffix is - /// used, so it may be inferred to be a `f64` later in the compiler. - /// Literals created from negative numbers might not survive rountrips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// # Panics - /// - /// This function requires that the specified float is finite, for - /// example if it is infinity or NaN this function will panic. - pub fn f32_unsuffixed(n: f32) -> Literal { - if !n.is_finite() { - panic!("Invalid float literal {n}"); - } - let mut repr = n.to_string(); - if !repr.contains('.') { - repr.push_str(".0"); - } - Literal(bridge::client::Literal::float(&repr)) - } - - /// Creates a new suffixed floating-point literal. - /// - /// This constructor will create a literal like `1.0f32` where the value - /// specified is the preceding part of the token and `f32` is the suffix of - /// the token. This token will always be inferred to be an `f32` in the - /// compiler. - /// Literals created from negative numbers might not survive rountrips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// # Panics - /// - /// This function requires that the specified float is finite, for - /// example if it is infinity or NaN this function will panic. - pub fn f32_suffixed(n: f32) -> Literal { - if !n.is_finite() { - panic!("Invalid float literal {n}"); - } - Literal(bridge::client::Literal::f32(&n.to_string())) - } - - /// Creates a new unsuffixed floating-point literal. - /// - /// This constructor is similar to those like `Literal::i8_unsuffixed` where - /// the float's value is emitted directly into the token but no suffix is - /// used, so it may be inferred to be a `f64` later in the compiler. - /// Literals created from negative numbers might not survive rountrips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// # Panics - /// - /// This function requires that the specified float is finite, for - /// example if it is infinity or NaN this function will panic. - pub fn f64_unsuffixed(n: f64) -> Literal { - if !n.is_finite() { - panic!("Invalid float literal {n}"); - } - let mut repr = n.to_string(); - if !repr.contains('.') { - repr.push_str(".0"); - } - Literal(bridge::client::Literal::float(&repr)) - } - - /// Creates a new suffixed floating-point literal. - /// - /// This constructor will create a literal like `1.0f64` where the value - /// specified is the preceding part of the token and `f64` is the suffix of - /// the token. This token will always be inferred to be an `f64` in the - /// compiler. - /// Literals created from negative numbers might not survive rountrips through - /// `TokenStream` or strings and may be broken into two tokens (`-` and positive literal). - /// - /// # Panics - /// - /// This function requires that the specified float is finite, for - /// example if it is infinity or NaN this function will panic. - pub fn f64_suffixed(n: f64) -> Literal { - if !n.is_finite() { - panic!("Invalid float literal {n}"); - } - Literal(bridge::client::Literal::f64(&n.to_string())) - } - - /// String literal. - pub fn string(string: &str) -> Literal { - Literal(bridge::client::Literal::string(string)) - } - - /// Character literal. - pub fn character(ch: char) -> Literal { - Literal(bridge::client::Literal::character(ch)) - } - - /// Byte string literal. - pub fn byte_string(bytes: &[u8]) -> Literal { - Literal(bridge::client::Literal::byte_string(bytes)) - } - - /// Returns the span encompassing this literal. - pub fn span(&self) -> Span { - Span(self.0.span()) - } - - /// Configures the span associated for this literal. - pub fn set_span(&mut self, span: Span) { - self.0.set_span(span.0); - } - - /// Returns a `Span` that is a subset of `self.span()` containing only the - /// source bytes in range `range`. Returns `None` if the would-be trimmed - /// span is outside the bounds of `self`. - // FIXME(SergioBenitez): check that the byte range starts and ends at a - // UTF-8 boundary of the source. otherwise, it's likely that a panic will - // occur elsewhere when the source text is printed. - // FIXME(SergioBenitez): there is no way for the user to know what - // `self.span()` actually maps to, so this method can currently only be - // called blindly. For example, `to_string()` for the character 'c' returns - // "'\u{63}'"; there is no way for the user to know whether the source text - // was 'c' or whether it was '\u{63}'. - pub fn subspan>(&self, range: R) -> Option { - self.0.subspan(range.start_bound().cloned(), range.end_bound().cloned()).map(Span) - } -} - -/// Parse a single literal from its stringified representation. -/// -/// In order to parse successfully, the input string must not contain anything -/// but the literal token. Specifically, it must not contain whitespace or -/// comments in addition to the literal. -/// -/// The resulting literal token will have a `Span::call_site()` span. -/// -/// NOTE: some errors may cause panics instead of returning `LexError`. We -/// reserve the right to change these errors into `LexError`s later. -impl FromStr for Literal { - type Err = LexError; - - fn from_str(src: &str) -> Result { - match bridge::client::Literal::from_str(src) { - Ok(literal) => Ok(Literal(literal)), - Err(()) => Err(LexError), - } - } -} - -/// Prints the literal as a string that should be losslessly convertible -/// back into the same literal (except for possible rounding for floating point literals). -impl fmt::Display for Literal { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(&self.to_string()) - } -} - -impl fmt::Debug for Literal { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - -/// Tracked access to environment variables. -pub mod tracked_env { - use std::env::{self, VarError}; - use std::ffi::OsStr; - - /// Retrieve an environment variable and add it to build dependency info. - /// Build system executing the compiler will know that the variable was accessed during - /// compilation, and will be able to rerun the build when the value of that variable changes. - /// Besides the dependency tracking this function should be equivalent to `env::var` from the - /// standard library, except that the argument must be UTF-8. - pub fn var + AsRef>(key: K) -> Result { - let key: &str = key.as_ref(); - let value = env::var(key); - super::bridge::client::FreeFunctions::track_env_var(key, value.as_deref().ok()); - value - } -} - -/// Tracked access to additional files. -pub mod tracked_path { - - /// Track a file explicitly. - /// - /// Commonly used for tracking asset preprocessing. - pub fn path>(path: P) { - let path: &str = path.as_ref(); - super::bridge::client::FreeFunctions::track_path(path); - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/quote.rs b/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/quote.rs deleted file mode 100644 index 39309faa4121..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/proc_macro/quote.rs +++ /dev/null @@ -1,139 +0,0 @@ -//! # Quasiquoter -//! This file contains the implementation internals of the quasiquoter provided by `quote!`. - -//! This quasiquoter uses macros 2.0 hygiene to reliably access -//! items from `proc_macro`, to build a `proc_macro::TokenStream`. - -use super::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree}; - -macro_rules! quote_tt { - (($($t:tt)*)) => { Group::new(Delimiter::Parenthesis, quote!($($t)*)) }; - ([$($t:tt)*]) => { Group::new(Delimiter::Bracket, quote!($($t)*)) }; - ({$($t:tt)*}) => { Group::new(Delimiter::Brace, quote!($($t)*)) }; - (,) => { Punct::new(',', Spacing::Alone) }; - (.) => { Punct::new('.', Spacing::Alone) }; - (;) => { Punct::new(';', Spacing::Alone) }; - (!) => { Punct::new('!', Spacing::Alone) }; - (<) => { Punct::new('<', Spacing::Alone) }; - (>) => { Punct::new('>', Spacing::Alone) }; - (&) => { Punct::new('&', Spacing::Alone) }; - (=) => { Punct::new('=', Spacing::Alone) }; - ($i:ident) => { Ident::new(stringify!($i), Span::def_site()) }; -} - -macro_rules! quote_ts { - ((@ $($t:tt)*)) => { $($t)* }; - (::) => { - [ - TokenTree::from(Punct::new(':', Spacing::Joint)), - TokenTree::from(Punct::new(':', Spacing::Alone)), - ].iter() - .cloned() - .map(|mut x| { - x.set_span(Span::def_site()); - x - }) - .collect::() - }; - ($t:tt) => { TokenTree::from(quote_tt!($t)) }; -} - -/// Simpler version of the real `quote!` macro, implemented solely -/// through `macro_rules`, for bootstrapping the real implementation -/// (see the `quote` function), which does not have access to the -/// real `quote!` macro due to the `proc_macro` crate not being -/// able to depend on itself. -/// -/// Note: supported tokens are a subset of the real `quote!`, but -/// unquoting is different: instead of `$x`, this uses `(@ expr)`. -macro_rules! quote { - () => { TokenStream::new() }; - ($($t:tt)*) => { - [ - $(TokenStream::from(quote_ts!($t)),)* - ].iter().cloned().collect::() - }; -} - -/// Quote a `TokenStream` into a `TokenStream`. -/// This is the actual implementation of the `quote!()` proc macro. -/// -/// It is loaded by the compiler in `register_builtin_macros`. -pub fn quote(stream: TokenStream) -> TokenStream { - if stream.is_empty() { - return quote!(super::TokenStream::new()); - } - let proc_macro_crate = quote!(crate); - let mut after_dollar = false; - let tokens = stream - .into_iter() - .filter_map(|tree| { - if after_dollar { - after_dollar = false; - match tree { - TokenTree::Ident(_) => { - return Some(quote!(Into::::into( - Clone::clone(&(@ tree))),)); - } - TokenTree::Punct(ref tt) if tt.as_char() == '$' => {} - _ => panic!("`$` must be followed by an ident or `$` in `quote!`"), - } - } else if let TokenTree::Punct(ref tt) = tree { - if tt.as_char() == '$' { - after_dollar = true; - return None; - } - } - - Some(quote!(super::TokenStream::from((@ match tree { - TokenTree::Punct(tt) => quote!(super::TokenTree::Punct(super::Punct::new( - (@ TokenTree::from(Literal::character(tt.as_char()))), - (@ match tt.spacing() { - Spacing::Alone => quote!(super::Spacing::Alone), - Spacing::Joint => quote!(super::Spacing::Joint), - }), - ))), - TokenTree::Group(tt) => quote!(super::TokenTree::Group(super::Group::new( - (@ match tt.delimiter() { - Delimiter::Parenthesis => quote!(super::Delimiter::Parenthesis), - Delimiter::Brace => quote!(super::Delimiter::Brace), - Delimiter::Bracket => quote!(super::Delimiter::Bracket), - Delimiter::None => quote!(super::Delimiter::None), - }), - (@ quote(tt.stream())), - ))), - TokenTree::Ident(tt) => quote!(super::TokenTree::Ident(super::Ident::new( - (@ TokenTree::from(Literal::string(&tt.to_string()))), - (@ quote_span(proc_macro_crate.clone(), tt.span())), - ))), - TokenTree::Literal(tt) => quote!(super::TokenTree::Literal({ - let mut iter = (@ TokenTree::from(Literal::string(&tt.to_string()))) - .parse::() - .unwrap() - .into_iter(); - if let (Some(super::TokenTree::Literal(mut lit)), None) = - (iter.next(), iter.next()) - { - lit.set_span((@ quote_span(proc_macro_crate.clone(), tt.span()))); - lit - } else { - unreachable!() - } - })) - })),)) - }) - .collect::(); - - if after_dollar { - panic!("unexpected trailing `$` in `quote!`"); - } - - quote!([(@ tokens)].iter().cloned().collect::()) -} - -/// Quote a `Span` into a `TokenStream`. -/// This is needed to implement a custom quoter. -pub fn quote_span(proc_macro_crate: TokenStream, span: Span) -> TokenStream { - let id = span.save_span(); - quote!((@ proc_macro_crate ) ::Span::recover_proc_macro_span((@ TokenTree::from(Literal::usize_unsuffixed(id))))) -} diff --git a/crates/proc-macro-srv/src/abis/abi_1_64/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_1_64/ra_server.rs deleted file mode 100644 index 7e8e67856e9f..000000000000 --- a/crates/proc-macro-srv/src/abis/abi_1_64/ra_server.rs +++ /dev/null @@ -1,792 +0,0 @@ -//! Rustc proc-macro server implementation with tt -//! -//! Based on idea from -//! The lib-proc-macro server backend is `TokenStream`-agnostic, such that -//! we could provide any TokenStream implementation. -//! The original idea from fedochet is using proc-macro2 as backend, -//! we use tt instead for better integration with RA. -//! -//! FIXME: No span and source file information is implemented yet - -use super::proc_macro::bridge::{self, server}; - -use std::collections::HashMap; -use std::hash::Hash; -use std::iter::FromIterator; -use std::ops::Bound; -use std::{ascii, vec::IntoIter}; - -type Group = tt::Subtree; -type TokenTree = tt::TokenTree; -type Punct = tt::Punct; -type Spacing = tt::Spacing; -type Literal = tt::Literal; -type Span = tt::TokenId; - -#[derive(Debug, Default, Clone)] -pub struct TokenStream { - pub token_trees: Vec, -} - -impl TokenStream { - pub fn new() -> Self { - TokenStream::default() - } - - pub fn with_subtree(subtree: tt::Subtree) -> Self { - if subtree.delimiter.is_some() { - TokenStream { token_trees: vec![TokenTree::Subtree(subtree)] } - } else { - TokenStream { token_trees: subtree.token_trees } - } - } - - pub fn into_subtree(self) -> tt::Subtree { - tt::Subtree { delimiter: None, token_trees: self.token_trees } - } - - pub fn is_empty(&self) -> bool { - self.token_trees.is_empty() - } -} - -/// Creates a token stream containing a single token tree. -impl From for TokenStream { - fn from(tree: TokenTree) -> TokenStream { - TokenStream { token_trees: vec![tree] } - } -} - -/// Collects a number of token trees into a single stream. -impl FromIterator for TokenStream { - fn from_iter>(trees: I) -> Self { - trees.into_iter().map(TokenStream::from).collect() - } -} - -/// A "flattening" operation on token streams, collects token trees -/// from multiple token streams into a single stream. -impl FromIterator for TokenStream { - fn from_iter>(streams: I) -> Self { - let mut builder = TokenStreamBuilder::new(); - streams.into_iter().for_each(|stream| builder.push(stream)); - builder.build() - } -} - -impl Extend for TokenStream { - fn extend>(&mut self, trees: I) { - self.extend(trees.into_iter().map(TokenStream::from)); - } -} - -impl Extend for TokenStream { - fn extend>(&mut self, streams: I) { - for item in streams { - for tkn in item { - match tkn { - tt::TokenTree::Subtree(subtree) if subtree.delimiter.is_none() => { - self.token_trees.extend(subtree.token_trees); - } - _ => { - self.token_trees.push(tkn); - } - } - } - } - } -} - -#[derive(Clone)] -pub struct SourceFile { - // FIXME stub -} - -type Level = super::proc_macro::Level; -type LineColumn = super::proc_macro::LineColumn; - -/// A structure representing a diagnostic message and associated children -/// messages. -#[derive(Clone, Debug)] -pub struct Diagnostic { - level: Level, - message: String, - spans: Vec, - children: Vec, -} - -impl Diagnostic { - /// Creates a new diagnostic with the given `level` and `message`. - pub fn new>(level: Level, message: T) -> Diagnostic { - Diagnostic { level, message: message.into(), spans: vec![], children: vec![] } - } -} - -// Rustc Server Ident has to be `Copyable` -// We use a stub here for bypassing -#[derive(Hash, Eq, PartialEq, Copy, Clone)] -pub struct IdentId(u32); - -#[derive(Clone, Hash, Eq, PartialEq)] -struct IdentData(tt::Ident); - -#[derive(Default)] -struct IdentInterner { - idents: HashMap, - ident_data: Vec, -} - -impl IdentInterner { - fn intern(&mut self, data: &IdentData) -> u32 { - if let Some(index) = self.idents.get(data) { - return *index; - } - - let index = self.idents.len() as u32; - self.ident_data.push(data.clone()); - self.idents.insert(data.clone(), index); - index - } - - fn get(&self, index: u32) -> &IdentData { - &self.ident_data[index as usize] - } - - #[allow(unused)] - fn get_mut(&mut self, index: u32) -> &mut IdentData { - self.ident_data.get_mut(index as usize).expect("Should be consistent") - } -} - -pub struct TokenStreamBuilder { - acc: TokenStream, -} - -/// Public implementation details for the `TokenStream` type, such as iterators. -pub mod token_stream { - use std::str::FromStr; - - use super::{TokenStream, TokenTree}; - - /// An iterator over `TokenStream`'s `TokenTree`s. - /// The iteration is "shallow", e.g., the iterator doesn't recurse into delimited groups, - /// and returns whole groups as token trees. - impl IntoIterator for TokenStream { - type Item = TokenTree; - type IntoIter = super::IntoIter; - - fn into_iter(self) -> Self::IntoIter { - self.token_trees.into_iter() - } - } - - type LexError = String; - - /// Attempts to break the string into tokens and parse those tokens into a token stream. - /// May fail for a number of reasons, for example, if the string contains unbalanced delimiters - /// or characters not existing in the language. - /// All tokens in the parsed stream get `Span::call_site()` spans. - /// - /// NOTE: some errors may cause panics instead of returning `LexError`. We reserve the right to - /// change these errors into `LexError`s later. - impl FromStr for TokenStream { - type Err = LexError; - - fn from_str(src: &str) -> Result { - let (subtree, _token_map) = - mbe::parse_to_token_tree(src).ok_or("Failed to parse from mbe")?; - - let subtree = subtree_replace_token_ids_with_unspecified(subtree); - Ok(TokenStream::with_subtree(subtree)) - } - } - - impl ToString for TokenStream { - fn to_string(&self) -> String { - tt::pretty(&self.token_trees) - } - } - - fn subtree_replace_token_ids_with_unspecified(subtree: tt::Subtree) -> tt::Subtree { - tt::Subtree { - delimiter: subtree - .delimiter - .map(|d| tt::Delimiter { id: tt::TokenId::unspecified(), ..d }), - token_trees: subtree - .token_trees - .into_iter() - .map(token_tree_replace_token_ids_with_unspecified) - .collect(), - } - } - - fn token_tree_replace_token_ids_with_unspecified(tt: tt::TokenTree) -> tt::TokenTree { - match tt { - tt::TokenTree::Leaf(leaf) => { - tt::TokenTree::Leaf(leaf_replace_token_ids_with_unspecified(leaf)) - } - tt::TokenTree::Subtree(subtree) => { - tt::TokenTree::Subtree(subtree_replace_token_ids_with_unspecified(subtree)) - } - } - } - - fn leaf_replace_token_ids_with_unspecified(leaf: tt::Leaf) -> tt::Leaf { - match leaf { - tt::Leaf::Literal(lit) => { - tt::Leaf::Literal(tt::Literal { id: tt::TokenId::unspecified(), ..lit }) - } - tt::Leaf::Punct(punct) => { - tt::Leaf::Punct(tt::Punct { id: tt::TokenId::unspecified(), ..punct }) - } - tt::Leaf::Ident(ident) => { - tt::Leaf::Ident(tt::Ident { id: tt::TokenId::unspecified(), ..ident }) - } - } - } -} - -impl TokenStreamBuilder { - fn new() -> TokenStreamBuilder { - TokenStreamBuilder { acc: TokenStream::new() } - } - - fn push(&mut self, stream: TokenStream) { - self.acc.extend(stream.into_iter()) - } - - fn build(self) -> TokenStream { - self.acc - } -} - -pub struct FreeFunctions; - -#[derive(Clone)] -pub struct TokenStreamIter { - trees: IntoIter, -} - -#[derive(Default)] -pub struct RustAnalyzer { - ident_interner: IdentInterner, - // FIXME: store span information here. -} - -impl server::Types for RustAnalyzer { - type FreeFunctions = FreeFunctions; - type TokenStream = TokenStream; - type Ident = IdentId; - type Literal = Literal; - type SourceFile = SourceFile; - type Diagnostic = Diagnostic; - type Span = Span; - type MultiSpan = Vec; -} - -impl server::FreeFunctions for RustAnalyzer { - fn track_env_var(&mut self, _var: &str, _value: Option<&str>) { - // FIXME: track env var accesses - // https://github.com/rust-lang/rust/pull/71858 - } - fn track_path(&mut self, _path: &str) {} -} - -impl server::TokenStream for RustAnalyzer { - fn is_empty(&mut self, stream: &Self::TokenStream) -> bool { - stream.is_empty() - } - fn from_str(&mut self, src: &str) -> Self::TokenStream { - use std::str::FromStr; - - Self::TokenStream::from_str(src).expect("cannot parse string") - } - fn to_string(&mut self, stream: &Self::TokenStream) -> String { - stream.to_string() - } - fn from_token_tree( - &mut self, - tree: bridge::TokenTree, - ) -> Self::TokenStream { - match tree { - bridge::TokenTree::Group(group) => { - let group = Group { - delimiter: delim_to_internal(group.delimiter), - token_trees: match group.stream { - Some(stream) => stream.into_iter().collect(), - None => Vec::new(), - }, - }; - let tree = TokenTree::from(group); - Self::TokenStream::from_iter(vec![tree]) - } - - bridge::TokenTree::Ident(IdentId(index)) => { - let IdentData(ident) = self.ident_interner.get(index).clone(); - let ident: tt::Ident = ident; - let leaf = tt::Leaf::from(ident); - let tree = TokenTree::from(leaf); - Self::TokenStream::from_iter(vec![tree]) - } - - bridge::TokenTree::Literal(literal) => { - let leaf = tt::Leaf::from(literal); - let tree = TokenTree::from(leaf); - Self::TokenStream::from_iter(vec![tree]) - } - - bridge::TokenTree::Punct(p) => { - let punct = tt::Punct { - char: p.ch as char, - spacing: if p.joint { Spacing::Joint } else { Spacing::Alone }, - id: p.span, - }; - let leaf = tt::Leaf::from(punct); - let tree = TokenTree::from(leaf); - Self::TokenStream::from_iter(vec![tree]) - } - } - } - - fn expand_expr(&mut self, self_: &Self::TokenStream) -> Result { - Ok(self_.clone()) - } - - fn concat_trees( - &mut self, - base: Option, - trees: Vec>, - ) -> Self::TokenStream { - let mut builder = TokenStreamBuilder::new(); - if let Some(base) = base { - builder.push(base); - } - for tree in trees { - builder.push(self.from_token_tree(tree)); - } - builder.build() - } - - fn concat_streams( - &mut self, - base: Option, - streams: Vec, - ) -> Self::TokenStream { - let mut builder = TokenStreamBuilder::new(); - if let Some(base) = base { - builder.push(base); - } - for stream in streams { - builder.push(stream); - } - builder.build() - } - - fn into_trees( - &mut self, - stream: Self::TokenStream, - ) -> Vec> { - stream - .into_iter() - .map(|tree| match tree { - tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => { - bridge::TokenTree::Ident(IdentId(self.ident_interner.intern(&IdentData(ident)))) - } - tt::TokenTree::Leaf(tt::Leaf::Literal(lit)) => bridge::TokenTree::Literal(lit), - tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) => { - bridge::TokenTree::Punct(bridge::Punct { - ch: punct.char as u8, - joint: punct.spacing == Spacing::Joint, - span: punct.id, - }) - } - tt::TokenTree::Subtree(subtree) => bridge::TokenTree::Group(bridge::Group { - delimiter: delim_to_external(subtree.delimiter), - stream: if subtree.token_trees.is_empty() { - None - } else { - Some(subtree.token_trees.into_iter().collect()) - }, - span: bridge::DelimSpan::from_single( - subtree.delimiter.map_or(Span::unspecified(), |del| del.id), - ), - }), - }) - .collect() - } -} - -fn delim_to_internal(d: bridge::Delimiter) -> Option { - let kind = match d { - bridge::Delimiter::Parenthesis => tt::DelimiterKind::Parenthesis, - bridge::Delimiter::Brace => tt::DelimiterKind::Brace, - bridge::Delimiter::Bracket => tt::DelimiterKind::Bracket, - bridge::Delimiter::None => return None, - }; - Some(tt::Delimiter { id: tt::TokenId::unspecified(), kind }) -} - -fn delim_to_external(d: Option) -> bridge::Delimiter { - match d.map(|it| it.kind) { - Some(tt::DelimiterKind::Parenthesis) => bridge::Delimiter::Parenthesis, - Some(tt::DelimiterKind::Brace) => bridge::Delimiter::Brace, - Some(tt::DelimiterKind::Bracket) => bridge::Delimiter::Bracket, - None => bridge::Delimiter::None, - } -} - -fn spacing_to_internal(spacing: bridge::Spacing) -> Spacing { - match spacing { - bridge::Spacing::Alone => Spacing::Alone, - bridge::Spacing::Joint => Spacing::Joint, - } -} - -fn spacing_to_external(spacing: Spacing) -> bridge::Spacing { - match spacing { - Spacing::Alone => bridge::Spacing::Alone, - Spacing::Joint => bridge::Spacing::Joint, - } -} - -impl server::Ident for RustAnalyzer { - fn new(&mut self, string: &str, span: Self::Span, _is_raw: bool) -> Self::Ident { - IdentId(self.ident_interner.intern(&IdentData(tt::Ident { text: string.into(), id: span }))) - } - - fn span(&mut self, ident: Self::Ident) -> Self::Span { - self.ident_interner.get(ident.0).0.id - } - fn with_span(&mut self, ident: Self::Ident, span: Self::Span) -> Self::Ident { - let data = self.ident_interner.get(ident.0); - let new = IdentData(tt::Ident { id: span, ..data.0.clone() }); - IdentId(self.ident_interner.intern(&new)) - } -} - -impl server::Literal for RustAnalyzer { - fn debug_kind(&mut self, _literal: &Self::Literal) -> String { - // r-a: debug_kind and suffix are unsupported; corresponding client code has been changed to not call these. - // They must still be present to be ABI-compatible and work with upstream proc_macro. - "".to_owned() - } - fn from_str(&mut self, s: &str) -> Result { - Ok(Literal { text: s.into(), id: tt::TokenId::unspecified() }) - } - fn symbol(&mut self, literal: &Self::Literal) -> String { - literal.text.to_string() - } - fn suffix(&mut self, _literal: &Self::Literal) -> Option { - None - } - - fn to_string(&mut self, literal: &Self::Literal) -> String { - literal.to_string() - } - - fn integer(&mut self, n: &str) -> Self::Literal { - let n = match n.parse::() { - Ok(n) => n.to_string(), - Err(_) => n.parse::().unwrap().to_string(), - }; - Literal { text: n.into(), id: tt::TokenId::unspecified() } - } - - fn typed_integer(&mut self, n: &str, kind: &str) -> Self::Literal { - macro_rules! def_suffixed_integer { - ($kind:ident, $($ty:ty),*) => { - match $kind { - $( - stringify!($ty) => { - let n: $ty = n.parse().unwrap(); - format!(concat!("{}", stringify!($ty)), n) - } - )* - _ => unimplemented!("unknown args for typed_integer: n {}, kind {}", n, $kind), - } - } - } - - let text = def_suffixed_integer! {kind, u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize}; - - Literal { text: text.into(), id: tt::TokenId::unspecified() } - } - - fn float(&mut self, n: &str) -> Self::Literal { - let n: f64 = n.parse().unwrap(); - let mut text = f64::to_string(&n); - if !text.contains('.') { - text += ".0" - } - Literal { text: text.into(), id: tt::TokenId::unspecified() } - } - - fn f32(&mut self, n: &str) -> Self::Literal { - let n: f32 = n.parse().unwrap(); - let text = format!("{}f32", n); - Literal { text: text.into(), id: tt::TokenId::unspecified() } - } - - fn f64(&mut self, n: &str) -> Self::Literal { - let n: f64 = n.parse().unwrap(); - let text = format!("{}f64", n); - Literal { text: text.into(), id: tt::TokenId::unspecified() } - } - - fn string(&mut self, string: &str) -> Self::Literal { - let mut escaped = String::new(); - for ch in string.chars() { - escaped.extend(ch.escape_debug()); - } - Literal { text: format!("\"{}\"", escaped).into(), id: tt::TokenId::unspecified() } - } - - fn character(&mut self, ch: char) -> Self::Literal { - Literal { text: format!("'{}'", ch).into(), id: tt::TokenId::unspecified() } - } - - fn byte_string(&mut self, bytes: &[u8]) -> Self::Literal { - let string = bytes - .iter() - .cloned() - .flat_map(ascii::escape_default) - .map(Into::::into) - .collect::(); - - Literal { text: format!("b\"{}\"", string).into(), id: tt::TokenId::unspecified() } - } - - fn span(&mut self, literal: &Self::Literal) -> Self::Span { - literal.id - } - - fn set_span(&mut self, literal: &mut Self::Literal, span: Self::Span) { - literal.id = span; - } - - fn subspan( - &mut self, - _literal: &Self::Literal, - _start: Bound, - _end: Bound, - ) -> Option { - // FIXME handle span - None - } -} - -impl server::SourceFile for RustAnalyzer { - // FIXME these are all stubs - fn eq(&mut self, _file1: &Self::SourceFile, _file2: &Self::SourceFile) -> bool { - true - } - fn path(&mut self, _file: &Self::SourceFile) -> String { - String::new() - } - fn is_real(&mut self, _file: &Self::SourceFile) -> bool { - true - } -} - -impl server::Diagnostic for RustAnalyzer { - fn new(&mut self, level: Level, msg: &str, spans: Self::MultiSpan) -> Self::Diagnostic { - let mut diag = Diagnostic::new(level, msg); - diag.spans = spans; - diag - } - - fn sub( - &mut self, - _diag: &mut Self::Diagnostic, - _level: Level, - _msg: &str, - _spans: Self::MultiSpan, - ) { - // FIXME handle diagnostic - // - } - - fn emit(&mut self, _diag: Self::Diagnostic) { - // FIXME handle diagnostic - // diag.emit() - } -} - -impl server::Span for RustAnalyzer { - fn debug(&mut self, span: Self::Span) -> String { - format!("{:?}", span.0) - } - fn source_file(&mut self, _span: Self::Span) -> Self::SourceFile { - SourceFile {} - } - fn save_span(&mut self, _span: Self::Span) -> usize { - // FIXME stub - 0 - } - fn recover_proc_macro_span(&mut self, _id: usize) -> Self::Span { - // FIXME stub - tt::TokenId::unspecified() - } - /// Recent feature, not yet in the proc_macro - /// - /// See PR: - /// https://github.com/rust-lang/rust/pull/55780 - fn source_text(&mut self, _span: Self::Span) -> Option { - None - } - - fn parent(&mut self, _span: Self::Span) -> Option { - // FIXME handle span - None - } - fn source(&mut self, span: Self::Span) -> Self::Span { - // FIXME handle span - span - } - fn start(&mut self, _span: Self::Span) -> LineColumn { - // FIXME handle span - LineColumn { line: 0, column: 0 } - } - fn end(&mut self, _span: Self::Span) -> LineColumn { - // FIXME handle span - LineColumn { line: 0, column: 0 } - } - fn join(&mut self, first: Self::Span, _second: Self::Span) -> Option { - // Just return the first span again, because some macros will unwrap the result. - Some(first) - } - fn resolved_at(&mut self, _span: Self::Span, _at: Self::Span) -> Self::Span { - // FIXME handle span - tt::TokenId::unspecified() - } - - fn after(&mut self, _self_: Self::Span) -> Self::Span { - tt::TokenId::unspecified() - } - - fn before(&mut self, _self_: Self::Span) -> Self::Span { - tt::TokenId::unspecified() - } -} - -impl server::MultiSpan for RustAnalyzer { - fn new(&mut self) -> Self::MultiSpan { - // FIXME handle span - vec![] - } - - fn push(&mut self, other: &mut Self::MultiSpan, span: Self::Span) { - //TODP - other.push(span) - } -} - -impl server::Server for RustAnalyzer { - fn globals(&mut self) -> bridge::ExpnGlobals { - bridge::ExpnGlobals { - def_site: Span::unspecified(), - call_site: Span::unspecified(), - mixed_site: Span::unspecified(), - } - } -} - -#[cfg(test)] -mod tests { - use super::super::proc_macro::bridge::server::Literal; - use super::*; - - #[test] - fn test_ra_server_literals() { - let mut srv = RustAnalyzer { ident_interner: IdentInterner::default() }; - assert_eq!(srv.integer("1234").text, "1234"); - - assert_eq!(srv.typed_integer("12", "u8").text, "12u8"); - assert_eq!(srv.typed_integer("255", "u16").text, "255u16"); - assert_eq!(srv.typed_integer("1234", "u32").text, "1234u32"); - assert_eq!(srv.typed_integer("15846685", "u64").text, "15846685u64"); - assert_eq!(srv.typed_integer("15846685258", "u128").text, "15846685258u128"); - assert_eq!(srv.typed_integer("156788984", "usize").text, "156788984usize"); - assert_eq!(srv.typed_integer("127", "i8").text, "127i8"); - assert_eq!(srv.typed_integer("255", "i16").text, "255i16"); - assert_eq!(srv.typed_integer("1234", "i32").text, "1234i32"); - assert_eq!(srv.typed_integer("15846685", "i64").text, "15846685i64"); - assert_eq!(srv.typed_integer("15846685258", "i128").text, "15846685258i128"); - assert_eq!(srv.float("0").text, "0.0"); - assert_eq!(srv.float("15684.5867").text, "15684.5867"); - assert_eq!(srv.f32("15684.58").text, "15684.58f32"); - assert_eq!(srv.f64("15684.58").text, "15684.58f64"); - - assert_eq!(srv.string("hello_world").text, "\"hello_world\""); - assert_eq!(srv.character('c').text, "'c'"); - assert_eq!(srv.byte_string(b"1234586\x88").text, "b\"1234586\\x88\""); - - // u128::max - assert_eq!( - srv.integer("340282366920938463463374607431768211455").text, - "340282366920938463463374607431768211455" - ); - // i128::min - assert_eq!( - srv.integer("-170141183460469231731687303715884105728").text, - "-170141183460469231731687303715884105728" - ); - } - - #[test] - fn test_ra_server_to_string() { - let s = TokenStream { - token_trees: vec![ - tt::TokenTree::Leaf(tt::Leaf::Ident(tt::Ident { - text: "struct".into(), - id: tt::TokenId::unspecified(), - })), - tt::TokenTree::Leaf(tt::Leaf::Ident(tt::Ident { - text: "T".into(), - id: tt::TokenId::unspecified(), - })), - tt::TokenTree::Subtree(tt::Subtree { - delimiter: Some(tt::Delimiter { - id: tt::TokenId::unspecified(), - kind: tt::DelimiterKind::Brace, - }), - token_trees: vec![], - }), - ], - }; - - assert_eq!(s.to_string(), "struct T {}"); - } - - #[test] - fn test_ra_server_from_str() { - use std::str::FromStr; - let subtree_paren_a = tt::TokenTree::Subtree(tt::Subtree { - delimiter: Some(tt::Delimiter { - id: tt::TokenId::unspecified(), - kind: tt::DelimiterKind::Parenthesis, - }), - token_trees: vec![tt::TokenTree::Leaf(tt::Leaf::Ident(tt::Ident { - text: "a".into(), - id: tt::TokenId::unspecified(), - }))], - }); - - let t1 = TokenStream::from_str("(a)").unwrap(); - assert_eq!(t1.token_trees.len(), 1); - assert_eq!(t1.token_trees[0], subtree_paren_a); - - let t2 = TokenStream::from_str("(a);").unwrap(); - assert_eq!(t2.token_trees.len(), 2); - assert_eq!(t2.token_trees[0], subtree_paren_a); - - let underscore = TokenStream::from_str("_").unwrap(); - assert_eq!( - underscore.token_trees[0], - tt::TokenTree::Leaf(tt::Leaf::Ident(tt::Ident { - text: "_".into(), - id: tt::TokenId::unspecified(), - })) - ); - } -} diff --git a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs index 46882845a807..52eb7ce17d6a 100644 --- a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs @@ -20,7 +20,7 @@ use token_stream::TokenStreamBuilder; mod symbol; pub use symbol::*; -use std::{iter::FromIterator, ops::Bound}; +use std::ops::Bound; type Group = tt::Subtree; type TokenTree = tt::TokenTree; diff --git a/crates/proc-macro-srv/src/abis/mod.rs b/crates/proc-macro-srv/src/abis/mod.rs index 705d09ea9458..f7d3a30919e1 100644 --- a/crates/proc-macro-srv/src/abis/mod.rs +++ b/crates/proc-macro-srv/src/abis/mod.rs @@ -25,7 +25,6 @@ mod abi_1_58; mod abi_1_63; -mod abi_1_64; #[cfg(feature = "sysroot-abi")] mod abi_sysroot; @@ -34,12 +33,11 @@ include!(concat!(env!("OUT_DIR"), "/rustc_version.rs")); // Used by `test/utils.rs` #[cfg(test)] -pub(crate) use abi_1_64::TokenStream as TestTokenStream; +pub(crate) use abi_1_63::TokenStream as TestTokenStream; use super::dylib::LoadProcMacroDylibError; pub(crate) use abi_1_58::Abi as Abi_1_58; pub(crate) use abi_1_63::Abi as Abi_1_63; -pub(crate) use abi_1_64::Abi as Abi_1_64; #[cfg(feature = "sysroot-abi")] pub(crate) use abi_sysroot::Abi as Abi_Sysroot; use libloading::Library; @@ -58,7 +56,6 @@ impl PanicMessage { pub(crate) enum Abi { Abi1_58(Abi_1_58), Abi1_63(Abi_1_63), - Abi1_64(Abi_1_64), #[cfg(feature = "sysroot-abi")] AbiSysroot(Abi_Sysroot), } @@ -120,10 +117,6 @@ impl Abi { let inner = unsafe { Abi_1_63::from_lib(lib, symbol_name) }?; Ok(Abi::Abi1_63(inner)) } - (1, 64..) => { - let inner = unsafe { Abi_1_64::from_lib(lib, symbol_name) }?; - Ok(Abi::Abi1_64(inner)) - } _ => Err(LoadProcMacroDylibError::UnsupportedABI), } } @@ -137,7 +130,6 @@ impl Abi { match self { Self::Abi1_58(abi) => abi.expand(macro_name, macro_body, attributes), Self::Abi1_63(abi) => abi.expand(macro_name, macro_body, attributes), - Self::Abi1_64(abi) => abi.expand(macro_name, macro_body, attributes), #[cfg(feature = "sysroot-abi")] Self::AbiSysroot(abi) => abi.expand(macro_name, macro_body, attributes), } @@ -147,7 +139,6 @@ impl Abi { match self { Self::Abi1_58(abi) => abi.list_macros(), Self::Abi1_63(abi) => abi.list_macros(), - Self::Abi1_64(abi) => abi.list_macros(), #[cfg(feature = "sysroot-abi")] Self::AbiSysroot(abi) => abi.list_macros(), } diff --git a/crates/proc-macro-srv/src/dylib.rs b/crates/proc-macro-srv/src/dylib.rs index 2b6c070fece3..7aba74e5396d 100644 --- a/crates/proc-macro-srv/src/dylib.rs +++ b/crates/proc-macro-srv/src/dylib.rs @@ -1,7 +1,6 @@ //! Handles dynamic library loading for proc macro use std::{ - convert::TryInto, fmt, fs::File, io, diff --git a/crates/proc-macro-srv/src/tests/mod.rs b/crates/proc-macro-srv/src/tests/mod.rs index 07222907f088..6339d56d0179 100644 --- a/crates/proc-macro-srv/src/tests/mod.rs +++ b/crates/proc-macro-srv/src/tests/mod.rs @@ -19,7 +19,7 @@ fn test_derive_error() { expect![[r##" SUBTREE $ IDENT compile_error 4294967295 - PUNCH ! [alone] 4294967295 + PUNCH ! [joint] 4294967295 SUBTREE () 4294967295 LITERAL "#[derive(DeriveError)] struct S ;" 4294967295 PUNCH ; [alone] 4294967295"##]], @@ -109,7 +109,7 @@ fn test_fn_like_macro_clone_literals() { PUNCH , [alone] 4294967295 LITERAL 2_u32 4294967295 PUNCH , [alone] 4294967295 - PUNCH - [alone] 4294967295 + PUNCH - [joint] 4294967295 LITERAL 4i64 4294967295 PUNCH , [alone] 4294967295 LITERAL 3.14f32 4294967295 @@ -130,7 +130,7 @@ fn test_attr_macro() { expect![[r##" SUBTREE $ IDENT compile_error 4294967295 - PUNCH ! [alone] 4294967295 + PUNCH ! [joint] 4294967295 SUBTREE () 4294967295 LITERAL "#[attr_error(some arguments)] mod m {}" 4294967295 PUNCH ; [alone] 4294967295"##]], diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index ee7f8339a76a..84e772d1684a 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -12,6 +12,7 @@ use cargo_metadata::{camino::Utf8Path, Message}; use la_arena::ArenaMap; use paths::AbsPathBuf; use rustc_hash::FxHashMap; +use semver::Version; use serde::Deserialize; use crate::{cfg_flag::CfgFlag, CargoConfig, CargoWorkspace, Package}; @@ -77,9 +78,32 @@ impl WorkspaceBuildScripts { config: &CargoConfig, workspace: &CargoWorkspace, progress: &dyn Fn(String), + toolchain: &Option, ) -> io::Result { - let mut cmd = Self::build_command(config); + const RUST_1_62: Version = Version::new(1, 62, 0); + match Self::run_(Self::build_command(config), config, workspace, progress) { + Ok(WorkspaceBuildScripts { error: Some(error), .. }) + if toolchain.as_ref().map_or(false, |it| *it >= RUST_1_62) => + { + // building build scripts failed, attempt to build with --keep-going so + // that we potentially get more build data + let mut cmd = Self::build_command(config); + cmd.args(&["-Z", "unstable-options", "--keep-going"]).env("RUSTC_BOOTSTRAP", "1"); + let mut res = Self::run_(cmd, config, workspace, progress)?; + res.error = Some(error); + Ok(res) + } + res => res, + } + } + + fn run_( + mut cmd: Command, + config: &CargoConfig, + workspace: &CargoWorkspace, + progress: &dyn Fn(String), + ) -> io::Result { if config.wrap_rustc_in_build_scripts { // Setup RUSTC_WRAPPER to point to `rust-analyzer` binary itself. We use // that to compile only proc macros and build scripts during the initial diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index e304a59c0180..8d0fa757c2e1 100644 --- a/crates/project-model/src/tests.rs +++ b/crates/project-model/src/tests.rs @@ -28,6 +28,7 @@ fn load_cargo_with_overrides(file: &str, cfg_overrides: CfgOverrides) -> CrateGr rustc: None, rustc_cfg: Vec::new(), cfg_overrides, + toolchain: None, }; to_crate_graph(project_workspace) } diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index b144006b44e0..daabb299f76c 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -12,6 +12,7 @@ use base_db::{ use cfg::{CfgDiff, CfgOptions}; use paths::{AbsPath, AbsPathBuf}; use rustc_hash::{FxHashMap, FxHashSet}; +use semver::Version; use stdx::always; use crate::{ @@ -77,6 +78,7 @@ pub enum ProjectWorkspace { /// different target. rustc_cfg: Vec, cfg_overrides: CfgOverrides, + toolchain: Option, }, /// Project workspace was manually specified using a `rust-project.json` file. Json { project: ProjectJson, sysroot: Option, rustc_cfg: Vec }, @@ -105,6 +107,7 @@ impl fmt::Debug for ProjectWorkspace { rustc, rustc_cfg, cfg_overrides, + toolchain, } => f .debug_struct("Cargo") .field("root", &cargo.workspace_root().file_name()) @@ -116,6 +119,7 @@ impl fmt::Debug for ProjectWorkspace { ) .field("n_rustc_cfg", &rustc_cfg.len()) .field("n_cfg_overrides", &cfg_overrides.len()) + .field("toolchain", &toolchain) .finish(), ProjectWorkspace::Json { project, sysroot, rustc_cfg } => { let mut debug_struct = f.debug_struct("Json"); @@ -160,6 +164,9 @@ impl ProjectWorkspace { cmd.arg("--version"); cmd })?; + let toolchain = cargo_version + .get("cargo ".len()..) + .and_then(|it| Version::parse(it.split_whitespace().next()?).ok()); let meta = CargoWorkspace::fetch_metadata( &cargo_toml, @@ -169,9 +176,9 @@ impl ProjectWorkspace { ) .with_context(|| { format!( - "Failed to read Cargo metadata from Cargo.toml file {}, {}", + "Failed to read Cargo metadata from Cargo.toml file {}, {:?}", cargo_toml.display(), - cargo_version + toolchain ) })?; let cargo = CargoWorkspace::new(meta); @@ -219,6 +226,7 @@ impl ProjectWorkspace { rustc, rustc_cfg, cfg_overrides, + toolchain, } } }; @@ -271,8 +279,8 @@ impl ProjectWorkspace { progress: &dyn Fn(String), ) -> Result { match self { - ProjectWorkspace::Cargo { cargo, .. } => { - WorkspaceBuildScripts::run(config, cargo, progress).with_context(|| { + ProjectWorkspace::Cargo { cargo, toolchain, .. } => { + WorkspaceBuildScripts::run(config, cargo, progress, toolchain).with_context(|| { format!("Failed to run build scripts for {}", &cargo.workspace_root().display()) }) } @@ -320,6 +328,7 @@ impl ProjectWorkspace { rustc_cfg: _, cfg_overrides: _, build_scripts, + toolchain: _, } => { cargo .packages() @@ -425,6 +434,7 @@ impl ProjectWorkspace { rustc_cfg, cfg_overrides, build_scripts, + toolchain: _, } => cargo_to_crate_graph( rustc_cfg.clone(), cfg_overrides, diff --git a/crates/rust-analyzer/src/bin/rustc_wrapper.rs b/crates/rust-analyzer/src/bin/rustc_wrapper.rs index 2f6d4706d879..38e9c7dd7e11 100644 --- a/crates/rust-analyzer/src/bin/rustc_wrapper.rs +++ b/crates/rust-analyzer/src/bin/rustc_wrapper.rs @@ -17,6 +17,11 @@ pub(crate) fn run_rustc_skipping_cargo_checking( rustc_executable: OsString, args: Vec, ) -> io::Result { + // `CARGO_CFG_TARGET_ARCH` is only set by cargo when executing build scripts + // We don't want to exit out checks unconditionally with success if a build + // script tries to invoke checks themselves + // See https://github.com/rust-lang/rust-analyzer/issues/12973 for context + let not_invoked_by_build_script = std::env::var_os("CARGO_CFG_TARGET_ARCH").is_none(); let is_cargo_check = args.iter().any(|arg| { let arg = arg.to_string_lossy(); // `cargo check` invokes `rustc` with `--emit=metadata` argument. @@ -29,7 +34,7 @@ pub(crate) fn run_rustc_skipping_cargo_checking( // The default output filename is CRATE_NAME.rmeta. arg.starts_with("--emit=") && arg.contains("metadata") && !arg.contains("link") }); - if is_cargo_check { + if not_invoked_by_build_script && is_cargo_check { return Ok(ExitCode(Some(0))); } run_rustc(rustc_executable, args) diff --git a/crates/rust-analyzer/src/cli/diagnostics.rs b/crates/rust-analyzer/src/cli/diagnostics.rs index 52511ceb5805..247007db0a78 100644 --- a/crates/rust-analyzer/src/cli/diagnostics.rs +++ b/crates/rust-analyzer/src/cli/diagnostics.rs @@ -43,7 +43,7 @@ impl flags::Diagnostics { println!("processing crate: {}, module: {}", crate_name, _vfs.file_path(file_id)); for diagnostic in analysis .diagnostics( - &DiagnosticsConfig::default(), + &DiagnosticsConfig::test_sample(), AssistResolveStrategy::None, file_id, ) diff --git a/crates/rust-analyzer/src/cli/flags.rs b/crates/rust-analyzer/src/cli/flags.rs index 19907ebddb6a..080e2fb44388 100644 --- a/crates/rust-analyzer/src/cli/flags.rs +++ b/crates/rust-analyzer/src/cli/flags.rs @@ -10,6 +10,10 @@ xflags::xflags! { src "./src/cli/flags.rs" /// LSP server for the Rust programming language. + /// + /// Subcommands and their flags do not provide any stability guarantees and may be removed or + /// changed without notice. Top-level flags that are not are marked as [Unstable] provide + /// backwards-compatibility and may be relied on. cmd rust-analyzer { /// Verbosity level, can be repeated multiple times. repeated -v, --verbose @@ -21,7 +25,7 @@ xflags::xflags! { /// Flush log records to the file immediately. optional --no-log-buffering - /// Wait until a debugger is attached to (requires debug build). + /// [Unstable] Wait until a debugger is attached to (requires debug build). optional --wait-dbg default cmd lsp-server { diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index ac0fdf85a774..1629c1dd328a 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -881,6 +881,7 @@ impl Config { ExprFillDefaultDef::Todo => ExprFillDefaultMode::Todo, ExprFillDefaultDef::Default => ExprFillDefaultMode::Default, }, + insert_use: self.insert_use_config(), } } diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index cff4bd7f66ac..74689fd8757f 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -512,7 +512,7 @@ fn clippy_code_description(code: Option<&str>) -> Option self.complete_request(resp), }, - Event::Task(mut task) => { + Event::Task(task) => { let _p = profile::span("GlobalState::handle_event/task"); let mut prime_caches_progress = Vec::new(); - loop { - match task { - Task::Response(response) => self.respond(response), - Task::Retry(req) => self.on_request(req), - Task::Diagnostics(diagnostics_per_file) => { - for (file_id, diagnostics) in diagnostics_per_file { - self.diagnostics.set_native_diagnostics(file_id, diagnostics) - } - } - Task::PrimeCaches(progress) => match progress { - PrimeCachesProgress::Begin => prime_caches_progress.push(progress), - PrimeCachesProgress::Report(_) => { - match prime_caches_progress.last_mut() { - Some(last @ PrimeCachesProgress::Report(_)) => { - // Coalesce subsequent update events. - *last = progress; - } - _ => prime_caches_progress.push(progress), - } - } - PrimeCachesProgress::End { .. } => prime_caches_progress.push(progress), - }, - Task::FetchWorkspace(progress) => { - let (state, msg) = match progress { - ProjectWorkspaceProgress::Begin => (Progress::Begin, None), - ProjectWorkspaceProgress::Report(msg) => { - (Progress::Report, Some(msg)) - } - ProjectWorkspaceProgress::End(workspaces) => { - self.fetch_workspaces_queue.op_completed(workspaces); - let old = Arc::clone(&self.workspaces); - self.switch_workspaces("fetched workspace".to_string()); - let workspaces_updated = !Arc::ptr_eq(&old, &self.workspaces); - - if self.config.run_build_scripts() && workspaces_updated { - self.fetch_build_data_queue - .request_op(format!("workspace updated")); - } - - (Progress::End, None) - } - }; - - self.report_progress("Fetching", state, msg, None); - } - Task::FetchBuildData(progress) => { - let (state, msg) = match progress { - BuildDataProgress::Begin => (Some(Progress::Begin), None), - BuildDataProgress::Report(msg) => { - (Some(Progress::Report), Some(msg)) - } - BuildDataProgress::End(build_data_result) => { - self.fetch_build_data_queue.op_completed(build_data_result); - - self.switch_workspaces("fetched build data".to_string()); - - (Some(Progress::End), None) - } - }; - - if let Some(state) = state { - self.report_progress("Loading", state, msg, None); - } - } - } - - // Coalesce multiple task events into one loop turn - task = match self.task_pool.receiver.try_recv() { - Ok(task) => task, - Err(_) => break, - }; + self.handle_task(&mut prime_caches_progress, task); + // Coalesce multiple task events into one loop turn + while let Ok(task) = self.task_pool.receiver.try_recv() { + self.handle_task(&mut prime_caches_progress, task); } for progress in prime_caches_progress { @@ -326,119 +260,20 @@ impl GlobalState { self.report_progress("Indexing", state, message, Some(fraction)); } } - Event::Vfs(mut task) => { + Event::Vfs(message) => { let _p = profile::span("GlobalState::handle_event/vfs"); - loop { - match task { - vfs::loader::Message::Loaded { files } => { - let vfs = &mut self.vfs.write().0; - for (path, contents) in files { - let path = VfsPath::from(path); - if !self.mem_docs.contains(&path) { - vfs.set_file_contents(path, contents); - } - } - } - vfs::loader::Message::Progress { n_total, n_done, config_version } => { - always!(config_version <= self.vfs_config_version); - - self.vfs_progress_config_version = config_version; - self.vfs_progress_n_total = n_total; - self.vfs_progress_n_done = n_done; - - let state = if n_done == 0 { - Progress::Begin - } else if n_done < n_total { - Progress::Report - } else { - assert_eq!(n_done, n_total); - Progress::End - }; - self.report_progress( - "Roots Scanned", - state, - Some(format!("{}/{}", n_done, n_total)), - Some(Progress::fraction(n_done, n_total)), - ) - } - } - // Coalesce many VFS event into a single loop turn - task = match self.loader.receiver.try_recv() { - Ok(task) => task, - Err(_) => break, - } + self.handle_vfs_msg(message); + // Coalesce many VFS event into a single loop turn + while let Ok(message) = self.loader.receiver.try_recv() { + self.handle_vfs_msg(message); } } - Event::Flycheck(mut task) => { + Event::Flycheck(message) => { let _p = profile::span("GlobalState::handle_event/flycheck"); - loop { - match task { - flycheck::Message::AddDiagnostic { id, workspace_root, diagnostic } => { - let snap = self.snapshot(); - let diagnostics = - crate::diagnostics::to_proto::map_rust_diagnostic_to_lsp( - &self.config.diagnostics_map(), - &diagnostic, - &workspace_root, - &snap, - ); - for diag in diagnostics { - match url_to_file_id(&self.vfs.read().0, &diag.url) { - Ok(file_id) => self.diagnostics.add_check_diagnostic( - id, - file_id, - diag.diagnostic, - diag.fix, - ), - Err(err) => { - tracing::error!( - "File with cargo diagnostic not found in VFS: {}", - err - ); - } - }; - } - } - - flycheck::Message::Progress { id, progress } => { - let (state, message) = match progress { - flycheck::Progress::DidStart => { - self.diagnostics.clear_check(id); - (Progress::Begin, None) - } - flycheck::Progress::DidCheckCrate(target) => { - (Progress::Report, Some(target)) - } - flycheck::Progress::DidCancel => (Progress::End, None), - flycheck::Progress::DidFinish(result) => { - if let Err(err) = result { - self.show_and_log_error( - "cargo check failed".to_string(), - Some(err.to_string()), - ); - } - (Progress::End, None) - } - }; - - // When we're running multiple flychecks, we have to include a disambiguator in - // the title, or the editor complains. Note that this is a user-facing string. - let title = if self.flycheck.len() == 1 { - match self.config.flycheck() { - Some(config) => format!("{}", config), - None => "cargo check".to_string(), - } - } else { - format!("cargo check (#{})", id + 1) - }; - self.report_progress(&title, state, message, None); - } - } - // Coalesce many flycheck updates into a single loop turn - task = match self.flycheck_receiver.try_recv() { - Ok(task) => task, - Err(_) => break, - } + self.handle_flycheck_msg(message); + // Coalesce many flycheck updates into a single loop turn + while let Ok(message) = self.flycheck_receiver.try_recv() { + self.handle_flycheck_msg(message); } } } @@ -447,13 +282,13 @@ impl GlobalState { let memdocs_added_or_removed = self.mem_docs.take_changes(); if self.is_quiescent() { - if !was_quiescent - && !self.fetch_workspaces_queue.op_requested() - && !self.fetch_build_data_queue.op_requested() - { - for flycheck in &self.flycheck { - flycheck.update(); - } + let became_quiescent = !(was_quiescent + || self.fetch_workspaces_queue.op_requested() + || self.fetch_build_data_queue.op_requested()); + + if became_quiescent { + // Project has loaded properly, kick off initial flycheck + self.flycheck.iter().for_each(FlycheckHandle::update); if self.config.prefill_caches() { self.prime_caches_queue.request_op("became quiescent".to_string()); } @@ -492,28 +327,15 @@ impl GlobalState { continue; } - let url = file_id_to_url(&self.vfs.read().0, file_id); - let mut diagnostics = + let uri = file_id_to_url(&self.vfs.read().0, file_id); + let diagnostics = self.diagnostics.diagnostics_for(file_id).cloned().collect::>(); - // https://github.com/rust-lang/rust-analyzer/issues/11404 - for d in &mut diagnostics { - if d.message.is_empty() { - d.message = " ".to_string(); - } - if let Some(rds) = d.related_information.as_mut() { - for rd in rds { - if rd.message.is_empty() { - rd.message = " ".to_string(); - } - } - } - } - let version = from_proto::vfs_path(&url) + let version = from_proto::vfs_path(&uri) .map(|path| self.mem_docs.get(&path).map(|it| it.version)) .unwrap_or_default(); self.send_notification::( - lsp_types::PublishDiagnosticsParams { uri: url, diagnostics, version }, + lsp_types::PublishDiagnosticsParams { uri, diagnostics, version }, ); } } @@ -575,11 +397,171 @@ impl GlobalState { Ok(()) } + fn handle_task(&mut self, prime_caches_progress: &mut Vec, task: Task) { + match task { + Task::Response(response) => self.respond(response), + Task::Retry(req) => self.on_request(req), + Task::Diagnostics(diagnostics_per_file) => { + for (file_id, diagnostics) in diagnostics_per_file { + self.diagnostics.set_native_diagnostics(file_id, diagnostics) + } + } + Task::PrimeCaches(progress) => match progress { + PrimeCachesProgress::Begin => prime_caches_progress.push(progress), + PrimeCachesProgress::Report(_) => { + match prime_caches_progress.last_mut() { + Some(last @ PrimeCachesProgress::Report(_)) => { + // Coalesce subsequent update events. + *last = progress; + } + _ => prime_caches_progress.push(progress), + } + } + PrimeCachesProgress::End { .. } => prime_caches_progress.push(progress), + }, + Task::FetchWorkspace(progress) => { + let (state, msg) = match progress { + ProjectWorkspaceProgress::Begin => (Progress::Begin, None), + ProjectWorkspaceProgress::Report(msg) => (Progress::Report, Some(msg)), + ProjectWorkspaceProgress::End(workspaces) => { + self.fetch_workspaces_queue.op_completed(workspaces); + + let old = Arc::clone(&self.workspaces); + self.switch_workspaces("fetched workspace".to_string()); + let workspaces_updated = !Arc::ptr_eq(&old, &self.workspaces); + + if self.config.run_build_scripts() && workspaces_updated { + self.fetch_build_data_queue.request_op(format!("workspace updated")); + } + + (Progress::End, None) + } + }; + + self.report_progress("Fetching", state, msg, None); + } + Task::FetchBuildData(progress) => { + let (state, msg) = match progress { + BuildDataProgress::Begin => (Some(Progress::Begin), None), + BuildDataProgress::Report(msg) => (Some(Progress::Report), Some(msg)), + BuildDataProgress::End(build_data_result) => { + self.fetch_build_data_queue.op_completed(build_data_result); + + self.switch_workspaces("fetched build data".to_string()); + + (Some(Progress::End), None) + } + }; + + if let Some(state) = state { + self.report_progress("Loading", state, msg, None); + } + } + } + } + + fn handle_vfs_msg(&mut self, message: vfs::loader::Message) { + match message { + vfs::loader::Message::Loaded { files } => { + let vfs = &mut self.vfs.write().0; + for (path, contents) in files { + let path = VfsPath::from(path); + if !self.mem_docs.contains(&path) { + vfs.set_file_contents(path, contents); + } + } + } + vfs::loader::Message::Progress { n_total, n_done, config_version } => { + always!(config_version <= self.vfs_config_version); + + self.vfs_progress_config_version = config_version; + self.vfs_progress_n_total = n_total; + self.vfs_progress_n_done = n_done; + + let state = if n_done == 0 { + Progress::Begin + } else if n_done < n_total { + Progress::Report + } else { + assert_eq!(n_done, n_total); + Progress::End + }; + self.report_progress( + "Roots Scanned", + state, + Some(format!("{}/{}", n_done, n_total)), + Some(Progress::fraction(n_done, n_total)), + ) + } + } + } + + fn handle_flycheck_msg(&mut self, message: flycheck::Message) { + match message { + flycheck::Message::AddDiagnostic { id, workspace_root, diagnostic } => { + let snap = self.snapshot(); + let diagnostics = crate::diagnostics::to_proto::map_rust_diagnostic_to_lsp( + &self.config.diagnostics_map(), + &diagnostic, + &workspace_root, + &snap, + ); + for diag in diagnostics { + match url_to_file_id(&self.vfs.read().0, &diag.url) { + Ok(file_id) => self.diagnostics.add_check_diagnostic( + id, + file_id, + diag.diagnostic, + diag.fix, + ), + Err(err) => { + tracing::error!("File with cargo diagnostic not found in VFS: {}", err); + } + }; + } + } + + flycheck::Message::Progress { id, progress } => { + let (state, message) = match progress { + flycheck::Progress::DidStart => { + self.diagnostics.clear_check(id); + (Progress::Begin, None) + } + flycheck::Progress::DidCheckCrate(target) => (Progress::Report, Some(target)), + flycheck::Progress::DidCancel => (Progress::End, None), + flycheck::Progress::DidFinish(result) => { + if let Err(err) = result { + self.show_and_log_error( + "cargo check failed".to_string(), + Some(err.to_string()), + ); + } + (Progress::End, None) + } + }; + + // When we're running multiple flychecks, we have to include a disambiguator in + // the title, or the editor complains. Note that this is a user-facing string. + let title = if self.flycheck.len() == 1 { + match self.config.flycheck() { + Some(config) => format!("{}", config), + None => "cargo check".to_string(), + } + } else { + format!("cargo check (#{})", id + 1) + }; + self.report_progress(&title, state, message, None); + } + } + } + + /// Registers and handles a request. This should only be called once per incoming request. fn on_new_request(&mut self, request_received: Instant, req: Request) { self.register_request(&req, request_received); self.on_request(req); } + /// Handles a request. fn on_request(&mut self, req: Request) { if self.shutdown_requested { self.respond(lsp_server::Response::new_err( @@ -670,6 +652,7 @@ impl GlobalState { .finish(); } + /// Handles an incoming notification. fn on_notification(&mut self, not: Notification) -> Result<()> { NotificationDispatcher { not: Some(not), global_state: self } .on::(|this, params| { @@ -743,6 +726,8 @@ impl GlobalState { let mut updated = false; if let Ok(vfs_path) = from_proto::vfs_path(¶ms.text_document.uri) { let (vfs, _) = &*this.vfs.read(); + + // Trigger flychecks for all workspaces that depend on the saved file if let Some(file_id) = vfs.file_id(&vfs_path) { let analysis = this.analysis_host.analysis(); // Crates containing or depending on the saved file @@ -800,6 +785,8 @@ impl GlobalState { } } } + + // Re-fetch workspaces if a workspace related file has changed if let Some(abs_path) = vfs_path.as_path() { if reload::should_refresh_for_change(&abs_path, ChangeKind::Modify) { this.fetch_workspaces_queue @@ -807,6 +794,8 @@ impl GlobalState { } } } + + // No specific flycheck was triggered, so let's trigger all of them. if !updated { for flycheck in &this.flycheck { flycheck.update(); diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index 49ccad71a10e..ceb2a6d703d9 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -219,6 +219,7 @@ impl GlobalState { cfg_overrides, build_scripts: _, + toolchain: _, } => Some((cargo, sysroot, rustc, rustc_cfg, cfg_overrides)), _ => None, }; diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 7f4fa57fa1e0..e7115b0732e2 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -1386,7 +1386,7 @@ fn main() { #[test] #[cfg(target_os = "windows")] fn test_lowercase_drive_letter() { - use std::{convert::TryInto, path::Path}; + use std::path::Path; let url = url_from_abs_path(Path::new("C:\\Test").try_into().unwrap()); assert_eq!(url.to_string(), "file:///c:/Test"); diff --git a/crates/syntax/src/ast/operators.rs b/crates/syntax/src/ast/operators.rs index a687ba0b77a5..8f7b3fb60087 100644 --- a/crates/syntax/src/ast/operators.rs +++ b/crates/syntax/src/ast/operators.rs @@ -111,10 +111,10 @@ impl fmt::Display for BinaryOp { BinaryOp::ArithOp(op) => fmt::Display::fmt(op, f), BinaryOp::CmpOp(op) => fmt::Display::fmt(op, f), BinaryOp::Assignment { op } => { - f.write_str("=")?; if let Some(op) = op { fmt::Display::fmt(op, f)?; } + f.write_str("=")?; Ok(()) } } diff --git a/crates/syntax/src/fuzz.rs b/crates/syntax/src/fuzz.rs index 256999fe09cf..7c7a60d62994 100644 --- a/crates/syntax/src/fuzz.rs +++ b/crates/syntax/src/fuzz.rs @@ -2,10 +2,7 @@ //! //! We don't normally run fuzzying, so this is hopelessly bitrotten :( -use std::{ - convert::TryInto, - str::{self, FromStr}, -}; +use std::str::{self, FromStr}; use text_edit::Indel; diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index 0436681b1a0a..3ff4b6897a16 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json @@ -1,8 +1,3956 @@ { "name": "rust-analyzer", "version": "0.5.0-dev", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "rust-analyzer", + "version": "0.5.0-dev", + "license": "MIT OR Apache-2.0", + "dependencies": { + "d3": "^7.6.1", + "d3-graphviz": "^4.1.1", + "vscode-languageclient": "^8.0.0-next.14" + }, + "devDependencies": { + "@types/node": "~16.11.7", + "@types/vscode": "~1.66.0", + "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/parser": "^5.30.5", + "@vscode/test-electron": "^2.1.5", + "cross-env": "^7.0.3", + "esbuild": "^0.14.48", + "eslint": "^8.19.0", + "eslint-config-prettier": "^8.5.0", + "ovsx": "^0.5.1", + "prettier": "^2.7.1", + "tslib": "^2.4.0", + "typescript": "^4.7.4", + "vsce": "^2.9.2" + }, + "engines": { + "vscode": "^1.66.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hpcc-js/wasm": { + "version": "1.12.8", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-1.12.8.tgz", + "integrity": "sha512-n4q9ARKco2hpCLsuVaW6Az3cDVaua7B3DSONHkc49WtEzgY/btvcDG5Zr1P6PZDv0sQ7oPnAi9Y+W2DI++MgcQ==", + "dependencies": { + "yargs": "^17.3.1" + }, + "bin": { + "dot-wasm": "bin/cli.js" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.43.tgz", + "integrity": "sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ==", + "dev": true + }, + "node_modules/@types/vscode": { + "version": "1.66.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.66.0.tgz", + "integrity": "sha512-ZfJck4M7nrGasfs4A4YbUoxis3Vu24cETw3DERsNYtDZmYSYtk6ljKexKFKhImO/ZmY6ZMsmegu2FPkXoUFImA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz", + "integrity": "sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/type-utils": "5.30.5", + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", + "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", + "integrity": "sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz", + "integrity": "sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.30.5", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.5.tgz", + "integrity": "sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz", + "integrity": "sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/visitor-keys": "5.30.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.5.tgz", + "integrity": "sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.30.5", + "@typescript-eslint/types": "5.30.5", + "@typescript-eslint/typescript-estree": "5.30.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.30.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz", + "integrity": "sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.30.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.5.tgz", + "integrity": "sha512-O/ioqFpV+RvKbRykX2ItYPnbcZ4Hk5V0rY4uhQjQTLhGL9WZUvS7exzuYQCCI+ilSqJpctvxq2llTfGXf9UnnA==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=8.9.3" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-devops-node-api": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/d3": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", + "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", + "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush/node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", + "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag/node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-graphviz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-4.1.1.tgz", + "integrity": "sha512-s0IVbKf8rs4eJI2xo5Umr7nXDX/LEZw/x2WtKxmlyQxR0qUY49UiLhBNOX7VDHZywMle43NKEXnU6fn22fpJvQ==", + "dependencies": { + "@hpcc-js/wasm": "1.12.8", + "d3-dispatch": "^2.0.0", + "d3-format": "^2.0.0", + "d3-interpolate": "^2.0.1", + "d3-path": "^2.0.0", + "d3-timer": "^2.0.0", + "d3-transition": "^2.0.0", + "d3-zoom": "^2.0.0" + }, + "peerDependencies": { + "d3-selection": "^2.0.0" + } + }, + "node_modules/d3-graphviz/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/d3-graphviz/node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-graphviz/node_modules/d3-drag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", + "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-selection": "2" + } + }, + "node_modules/d3-graphviz/node_modules/d3-ease": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", + "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + }, + "node_modules/d3-graphviz/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/d3-graphviz/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/d3-graphviz/node_modules/d3-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", + "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + }, + "node_modules/d3-graphviz/node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "node_modules/d3-graphviz/node_modules/d3-transition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", + "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "dependencies": { + "d3-color": "1 - 2", + "d3-dispatch": "1 - 2", + "d3-ease": "1 - 2", + "d3-interpolate": "1 - 2", + "d3-timer": "1 - 2" + }, + "peerDependencies": { + "d3-selection": "2" + } + }, + "node_modules/d3-graphviz/node_modules/d3-zoom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", + "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + }, + "node_modules/d3-shape": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", + "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", + "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.48", + "esbuild-android-arm64": "0.14.48", + "esbuild-darwin-64": "0.14.48", + "esbuild-darwin-arm64": "0.14.48", + "esbuild-freebsd-64": "0.14.48", + "esbuild-freebsd-arm64": "0.14.48", + "esbuild-linux-32": "0.14.48", + "esbuild-linux-64": "0.14.48", + "esbuild-linux-arm": "0.14.48", + "esbuild-linux-arm64": "0.14.48", + "esbuild-linux-mips64le": "0.14.48", + "esbuild-linux-ppc64le": "0.14.48", + "esbuild-linux-riscv64": "0.14.48", + "esbuild-linux-s390x": "0.14.48", + "esbuild-netbsd-64": "0.14.48", + "esbuild-openbsd-64": "0.14.48", + "esbuild-sunos-64": "0.14.48", + "esbuild-windows-32": "0.14.48", + "esbuild-windows-64": "0.14.48", + "esbuild-windows-arm64": "0.14.48" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", + "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", + "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", + "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", + "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", + "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", + "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", + "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", + "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", + "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", + "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", + "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", + "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", + "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", + "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", + "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", + "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", + "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", + "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", + "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.48", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", + "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz", + "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ovsx": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.1.tgz", + "integrity": "sha512-3OWq0l7DuVHi2bd2aQe5+QVQlFIqvrcw3/2vGXL404L6Tr+R4QHtzfnYYghv8CCa85xJHjU0RhcaC7pyXkAUbg==", + "dev": true, + "dependencies": { + "commander": "^6.1.0", + "follow-redirects": "^1.14.6", + "is-ci": "^2.0.0", + "leven": "^3.1.0", + "tmp": "^0.2.1", + "vsce": "^2.6.3" + }, + "bin": { + "ovsx": "lib/ovsx" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ovsx/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "dev": true, + "dependencies": { + "entities": "^4.3.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.9.tgz", + "integrity": "sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==", + "dev": true, + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/underscore": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", + "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==", + "dev": true + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/vsce": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", + "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", + "dev": true, + "dependencies": { + "azure-devops-node-api": "^11.0.1", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "commander": "^6.1.0", + "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "keytar": "^7.7.0", + "leven": "^3.1.0", + "markdown-it": "^12.3.2", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^5.1.0", + "tmp": "^0.2.1", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.4.23", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/vsce/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vsce/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vsce/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/vsce/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/vsce/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vsce/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/vsce/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/vsce/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/vsce/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.0.0-next.7", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.7.tgz", + "integrity": "sha512-JX/F31LEsims0dAlOTKFE4E+AJMiJvdRSRViifFJSqSN7EzeYyWlfuDchF7g91oRNPZOIWfibTkDf3/UMsQGzQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.0.0-next.14", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.0-next.14.tgz", + "integrity": "sha512-NqjkOuDTMu8uo+PhoMsV72VO9Gd3wBi/ZpOrkRUOrWKQo7yUdiIw183g8wjH8BImgbK9ZP51HM7TI0ZhCnI1Mw==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.5", + "vscode-languageserver-protocol": "3.17.0-next.16" + }, + "engines": { + "vscode": "^1.66.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.0-next.16", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.16.tgz", + "integrity": "sha512-tx4DnXw9u3N7vw+bx6n2NKp6FoxoNwiP/biH83AS30I2AnTGyLd7afSeH6Oewn2E8jvB7K15bs12sMppkKOVeQ==", + "dependencies": { + "vscode-jsonrpc": "8.0.0-next.7", + "vscode-languageserver-types": "3.17.0-next.9" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.0-next.9", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.9.tgz", + "integrity": "sha512-9/PeDNPYduaoXRUzYpqmu4ZV9L01HGo0wH9FUt+sSHR7IXwA7xoXBfNUlv8gB9H0D2WwEmMomSy1NmhjKQyn3A==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + }, "dependencies": { "@eslint/eslintrc": { "version": "1.3.0", @@ -213,7 +4161,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "agent-base": { "version": "6.0.2", @@ -1278,7 +5227,8 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true + "dev": true, + "requires": {} }, "eslint-scope": { "version": "5.1.1", @@ -2348,6 +6298,15 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2358,15 +6317,6 @@ "strip-ansi": "^6.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 8a2dea6b35b7..27ab31db8db4 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -105,6 +105,22 @@ export async function createClient( traceOutputChannel: traceOutputChannel(), outputChannel: outputChannel(), middleware: { + async handleDiagnostics(uri, diagnostics, next) { + // Workaround for https://github.com/microsoft/vscode/issues/155531 + for (const diagnostic of diagnostics) { + if (!diagnostic.message) { + diagnostic.message = " "; + } + if (diagnostic.relatedInformation) { + for (const relatedInformation of diagnostic.relatedInformation) { + if (!relatedInformation.message) { + relatedInformation.message = " "; + } + } + } + } + next(uri, diagnostics); + }, async provideHover( document: vscode.TextDocument, position: vscode.Position, diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index bf55329ca1f5..1b793bb0b15c 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -326,8 +326,22 @@ export function toggleInlayHints(_ctx: Ctx): Cmd { const config = vscode.workspace.getConfiguration("editor.inlayHints", { languageId: "rust", }); - const value = !config.get("enabled"); - await config.update("enabled", value, vscode.ConfigurationTarget.Global); + + const value = config.get("enabled"); + let stringValue; + if (typeof value === "string") { + stringValue = value; + } else { + stringValue = value ? "on" : "off"; + } + const nextValues: Record = { + on: "off", + off: "on", + onUnlessPressed: "offUnlessPressed", + offUnlessPressed: "onUnlessPressed", + }; + const nextValue = nextValues[stringValue] ?? "on"; + await config.update("enabled", nextValue, vscode.ConfigurationTarget.Global); }; } diff --git a/lib/la-arena/src/lib.rs b/lib/la-arena/src/lib.rs index a3fe59e946ee..50e8d06b6604 100644 --- a/lib/la-arena/src/lib.rs +++ b/lib/la-arena/src/lib.rs @@ -6,7 +6,6 @@ use std::{ fmt, hash::{Hash, Hasher}, - iter::FromIterator, marker::PhantomData, ops::{Index, IndexMut, Range, RangeInclusive}, }; From 3a1aa376c55cd070474a8488a2cf30a600beeb2f Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Wed, 17 Aug 2022 04:58:26 +0900 Subject: [PATCH 006/478] avoid a `&str` to `String` conversion --- bench_data/glorious_old_parser | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bench_data/glorious_old_parser b/bench_data/glorious_old_parser index 7e900dfeb1ee..764893daa12a 100644 --- a/bench_data/glorious_old_parser +++ b/bench_data/glorious_old_parser @@ -1988,7 +1988,7 @@ impl<'a> Parser<'a> { err.span_suggestion( span, "declare the type after the parameter binding", - String::from(": "), + ": ", Applicability::HasPlaceholders, ); } else if require_name && is_trait_item { From 31519bb394b609b12dc9a214284c8436e842c91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Tue, 23 Aug 2022 10:05:52 +0300 Subject: [PATCH 007/478] :arrow_up: rust-analyzer --- .github/workflows/release.yaml | 6 +- Cargo.lock | 167 +++-- crates/flycheck/src/lib.rs | 28 +- crates/hir-def/src/body.rs | 5 + crates/hir-def/src/body/lower.rs | 10 +- crates/hir-def/src/body/pretty.rs | 621 ++++++++++++++++++ crates/hir-def/src/builtin_type.rs | 35 + crates/hir-def/src/expr.rs | 6 +- crates/hir-def/src/item_tree/pretty.rs | 179 +---- crates/hir-def/src/item_tree/tests.rs | 12 +- crates/hir-def/src/lib.rs | 1 + crates/hir-def/src/nameres/path_resolution.rs | 32 +- crates/hir-def/src/nameres/proc_macro.rs | 2 +- crates/hir-def/src/per_ns.rs | 12 + crates/hir-def/src/pretty.rs | 209 ++++++ crates/hir-def/src/type_ref.rs | 4 + crates/hir-expand/src/ast_id_map.rs | 21 +- crates/hir-expand/src/db.rs | 6 +- crates/hir-expand/src/lib.rs | 3 +- crates/hir-expand/src/mod_path.rs | 1 + crates/hir-expand/src/name.rs | 12 +- crates/hir-ty/Cargo.toml | 6 +- crates/hir-ty/src/infer.rs | 6 +- crates/hir-ty/src/lower.rs | 61 +- crates/hir-ty/src/method_resolution.rs | 142 ++-- crates/hir-ty/src/tests/method_resolution.rs | 43 ++ crates/hir-ty/src/tests/patterns.rs | 36 + crates/hir-ty/src/tests/regression.rs | 17 + crates/hir-ty/src/tests/traits.rs | 53 ++ crates/hir/src/lib.rs | 55 +- crates/hir/src/source_analyzer.rs | 32 +- .../src/handlers/extract_module.rs | 6 +- .../src/handlers/generate_function.rs | 144 ++-- .../ide-assists/src/handlers/inline_call.rs | 35 +- .../src/handlers/inline_type_alias.rs | 229 ++++++- .../replace_turbofish_with_explicit_type.rs | 2 +- crates/ide-assists/src/lib.rs | 1 + crates/ide-assists/src/tests/generated.rs | 25 + crates/ide-assists/src/utils/suggest_name.rs | 5 +- crates/ide-completion/src/completions/dot.rs | 2 +- .../ide-completion/src/completions/keyword.rs | 70 +- .../src/completions/postfix/format_like.rs | 4 +- .../ide-completion/src/completions/record.rs | 10 +- crates/ide-completion/src/render.rs | 4 +- crates/ide-completion/src/render/literal.rs | 16 +- crates/ide-completion/src/render/pattern.rs | 18 +- .../src/render/union_literal.rs | 9 +- crates/ide-completion/src/render/variant.rs | 9 + crates/ide-completion/src/tests/flyimport.rs | 2 +- crates/ide-completion/src/tests/pattern.rs | 2 +- crates/ide-db/src/apply_change.rs | 2 +- crates/ide-db/src/rename.rs | 2 +- crates/ide-db/src/search.rs | 4 +- .../src/handlers/missing_match_arms.rs | 2 +- crates/ide/src/goto_definition.rs | 34 + crates/ide/src/hover.rs | 3 + crates/ide/src/hover/render.rs | 2 +- crates/ide/src/hover/tests.rs | 42 +- crates/ide/src/static_index.rs | 7 +- crates/ide/src/view_hir.rs | 14 +- crates/mbe/src/expander/matcher.rs | 2 +- crates/project-model/src/lib.rs | 2 +- crates/project-model/src/workspace.rs | 2 +- crates/rust-analyzer/src/bin/logger.rs | 2 +- crates/rust-analyzer/src/config.rs | 13 +- crates/rust-analyzer/src/global_state.rs | 15 +- crates/rust-analyzer/src/handlers.rs | 32 +- crates/rust-analyzer/src/lsp_ext.rs | 8 + crates/rust-analyzer/src/main_loop.rs | 7 +- crates/syntax/src/hacks.rs | 2 +- crates/test-utils/src/minicore.rs | 15 + crates/vfs-notify/Cargo.toml | 2 +- crates/vfs-notify/src/lib.rs | 11 +- crates/vfs/src/lib.rs | 2 +- docs/dev/architecture.md | 2 +- docs/dev/lsp-extensions.md | 2 +- docs/user/generated_config.adoc | 10 + editors/code/package.json | 12 +- editors/code/src/commands.ts | 10 +- editors/code/src/config.ts | 6 - editors/code/src/lsp_ext.ts | 30 +- editors/code/src/main.ts | 1 + editors/code/src/toolchain.ts | 2 +- 83 files changed, 2092 insertions(+), 626 deletions(-) create mode 100644 crates/hir-def/src/body/pretty.rs create mode 100644 crates/hir-def/src/pretty.rs diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3c36c4fb84a2..b2e5db6f689b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -31,13 +31,13 @@ jobs: - os: windows-latest target: aarch64-pc-windows-msvc code-target: win32-arm64 - - os: ubuntu-18.04 + - os: ubuntu-20.04 target: x86_64-unknown-linux-gnu code-target: linux-x64 - - os: ubuntu-18.04 + - os: ubuntu-20.04 target: aarch64-unknown-linux-gnu code-target: linux-arm64 - - os: ubuntu-18.04 + - os: ubuntu-20.04 target: arm-unknown-linux-gnueabihf code-target: linux-armhf - os: macos-11 diff --git a/Cargo.lock b/Cargo.lock index 7c6796d70bdc..8a61ea1c9241 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,9 +37,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.58" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" +checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305" [[package]] name = "anymap" @@ -78,16 +78,16 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", "cfg-if", "libc", "miniz_oxide", - "object 0.28.4", + "object", "rustc-demangle", ] @@ -114,9 +114,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "camino" -version = "1.0.9" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412" +checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" dependencies = [ "serde", ] @@ -171,9 +171,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chalk-derive" -version = "0.83.0" +version = "0.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83553c2ef7717e58aecdf42dd9e3c876229f5a1f35a16435b5ddc4addef81827" +checksum = "cf29c109d57f8d57b0e7675391be37a9285d86dd93278bd5f14a0ad3c447a6c2" dependencies = [ "proc-macro2", "quote", @@ -183,9 +183,9 @@ dependencies = [ [[package]] name = "chalk-ir" -version = "0.83.0" +version = "0.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dd42107d579d8ec2a5af20a8de62a37524a67bf6a4c0ff08a950068f0bfea91" +checksum = "d391763027b5e50a5e15caf6d2857ec585fd68160367bbeac9e1804209620918" dependencies = [ "bitflags", "chalk-derive", @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "chalk-recursive" -version = "0.83.0" +version = "0.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c444031541a76c13c145e76d91f1548e9feb2240e7f0c3e77879ceb694994f2d" +checksum = "afafd92dcdc7fe0ea940ee94bdd8cc5bd18f4a4a84c593d6d7025fe16c150478" dependencies = [ "chalk-derive", "chalk-ir", @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "chalk-solve" -version = "0.83.0" +version = "0.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76f2db19c5e8a3d42340cf5b4d90b8c218750536fca35e2bb285ab6653c0bc8" +checksum = "3af1d111f11c91c48ace02e93e470c5bae6d2631bd112e4545317da53660d7fc" dependencies = [ "chalk-derive", "chalk-ir", @@ -249,9 +249,9 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ "cfg-if", "crossbeam-channel", @@ -263,9 +263,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ "cfg-if", "crossbeam-utils", @@ -273,9 +273,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -284,9 +284,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" dependencies = [ "autocfg", "cfg-if", @@ -298,9 +298,9 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" dependencies = [ "cfg-if", "crossbeam-utils", @@ -308,9 +308,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" dependencies = [ "cfg-if", "once_cell", @@ -359,9 +359,9 @@ checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1" [[package]] name = "either" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "ena" @@ -458,15 +458,15 @@ checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a" [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" [[package]] name = "hashbrown" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "heck" @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "jod-thread" @@ -836,9 +836,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libloading" @@ -944,9 +944,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5172b50c23043ff43dd53e51392f36519d9b35a8f3a410d30ece5d1aedd58ae" +checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" dependencies = [ "libc", ] @@ -1001,9 +1001,9 @@ dependencies = [ [[package]] name = "notify" -version = "5.0.0-pre.15" +version = "5.0.0-pre.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553f9844ad0b0824605c20fb55a661679782680410abfb1a8144c2e7e437e7a7" +checksum = "530f6314d6904508082f4ea424a0275cf62d341e118b313663f266429cb19693" dependencies = [ "bitflags", "crossbeam-channel", @@ -1027,15 +1027,6 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.28.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" -dependencies = [ - "memchr", -] - [[package]] name = "object" version = "0.29.0" @@ -1047,9 +1038,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" [[package]] name = "oorandom" @@ -1118,9 +1109,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" [[package]] name = "paths" @@ -1172,7 +1163,7 @@ name = "proc-macro-api" version = "0.0.0" dependencies = [ "memmap2", - "object 0.29.0", + "object", "paths", "profile", "serde", @@ -1192,7 +1183,7 @@ dependencies = [ "libloading", "mbe", "memmap2", - "object 0.29.0", + "object", "paths", "proc-macro-api", "proc-macro-test", @@ -1221,9 +1212,9 @@ version = "0.0.0" [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -1265,9 +1256,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" +checksum = "2d9cc634bc78768157b5cbfe988ffcd1dcba95cd2b2f03a88316c08c6d00ed63" dependencies = [ "bitflags", "memchr", @@ -1285,9 +1276,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -1318,18 +1309,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.5.6" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "regex-syntax", ] @@ -1345,9 +1336,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "rowan" @@ -1438,9 +1429,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "salsa" @@ -1494,27 +1485,27 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "semver" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.138" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.138" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" dependencies = [ "proc-macro2", "quote", @@ -1523,9 +1514,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ "indexmap", "itoa", @@ -1535,9 +1526,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed" +checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" dependencies = [ "proc-macro2", "quote", @@ -1594,9 +1585,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -1739,9 +1730,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", "pin-project-lite", @@ -1762,9 +1753,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ "once_cell", "valuable", @@ -1783,9 +1774,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59" +checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" dependencies = [ "matchers", "once_cell", diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 3347940ec6d6..c22945c81fcb 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -77,8 +77,13 @@ impl FlycheckHandle { } /// Schedule a re-start of the cargo check worker. - pub fn update(&self) { - self.sender.send(Restart).unwrap(); + pub fn restart(&self) { + self.sender.send(Restart::Yes).unwrap(); + } + + /// Stop this cargo check worker. + pub fn cancel(&self) { + self.sender.send(Restart::No).unwrap(); } pub fn id(&self) -> usize { @@ -122,7 +127,10 @@ pub enum Progress { DidCancel, } -struct Restart; +enum Restart { + Yes, + No, +} struct FlycheckActor { id: usize, @@ -149,6 +157,7 @@ impl FlycheckActor { config: FlycheckConfig, workspace_root: AbsPathBuf, ) -> FlycheckActor { + tracing::info!(%id, ?workspace_root, "Spawning flycheck"); FlycheckActor { id, sender, config, workspace_root, cargo_handle: None } } fn progress(&self, progress: Progress) { @@ -164,10 +173,13 @@ impl FlycheckActor { fn run(mut self, inbox: Receiver) { while let Some(event) = self.next_event(&inbox) { match event { - Event::Restart(Restart) => { + Event::Restart(Restart::No) => { + self.cancel_check_process(); + } + Event::Restart(Restart::Yes) => { // Cancel the previously spawned process self.cancel_check_process(); - while let Ok(Restart) = inbox.recv_timeout(Duration::from_millis(50)) {} + while let Ok(_) = inbox.recv_timeout(Duration::from_millis(50)) {} let command = self.check_command(); tracing::debug!(?command, "will restart flycheck"); @@ -223,6 +235,10 @@ impl FlycheckActor { fn cancel_check_process(&mut self) { if let Some(cargo_handle) = self.cargo_handle.take() { + tracing::debug!( + command = ?self.check_command(), + "did cancel flycheck" + ); cargo_handle.cancel(); self.progress(Progress::DidCancel); } @@ -345,7 +361,7 @@ impl CargoActor { // // Because cargo only outputs one JSON object per line, we can // simply skip a line if it doesn't parse, which just ignores any - // erroneus output. + // erroneous output. let mut error = String::new(); let mut read_at_least_one_message = false; diff --git a/crates/hir-def/src/body.rs b/crates/hir-def/src/body.rs index 080a307b1f8a..1d818d96267c 100644 --- a/crates/hir-def/src/body.rs +++ b/crates/hir-def/src/body.rs @@ -4,6 +4,7 @@ mod lower; #[cfg(test)] mod tests; pub mod scope; +mod pretty; use std::{ops::Index, sync::Arc}; @@ -352,6 +353,10 @@ impl Body { } } + pub fn pretty_print(&self, db: &dyn DefDatabase, owner: DefWithBodyId) -> String { + pretty::print_body_hir(db, self, owner) + } + fn new( db: &dyn DefDatabase, expander: Expander, diff --git a/crates/hir-def/src/body/lower.rs b/crates/hir-def/src/body/lower.rs index 66f9c24e8724..f6ec8bf7e9e0 100644 --- a/crates/hir-def/src/body/lower.rs +++ b/crates/hir-def/src/body/lower.rs @@ -551,9 +551,17 @@ impl ExprCollector<'_> { } } ast::Expr::MacroStmts(e) => { - let statements = e.statements().filter_map(|s| self.collect_stmt(s)).collect(); + let statements: Box<[_]> = + e.statements().filter_map(|s| self.collect_stmt(s)).collect(); let tail = e.expr().map(|e| self.collect_expr(e)); + if e.syntax().children().next().is_none() { + // HACK: make sure that macros that expand to nothing aren't treated as a `()` + // expression when used in block tail position. + cov_mark::hit!(empty_macro_in_trailing_position_is_removed); + return None; + } + self.alloc_expr(Expr::MacroStmts { tail, statements }, syntax_ptr) } ast::Expr::UnderscoreExpr(_) => self.alloc_expr(Expr::Underscore, syntax_ptr), diff --git a/crates/hir-def/src/body/pretty.rs b/crates/hir-def/src/body/pretty.rs new file mode 100644 index 000000000000..ddd476efe5c4 --- /dev/null +++ b/crates/hir-def/src/body/pretty.rs @@ -0,0 +1,621 @@ +//! A pretty-printer for HIR. + +use std::fmt::{self, Write}; + +use crate::{ + expr::{Array, BindingAnnotation, Literal, Statement}, + pretty::{print_generic_args, print_path, print_type_ref}, + type_ref::TypeRef, +}; + +use super::*; + +pub(super) fn print_body_hir(db: &dyn DefDatabase, body: &Body, owner: DefWithBodyId) -> String { + let needs_semi; + let header = match owner { + DefWithBodyId::FunctionId(it) => { + needs_semi = false; + let item_tree_id = it.lookup(db).id; + format!("fn {}(…) ", item_tree_id.item_tree(db)[item_tree_id.value].name) + } + DefWithBodyId::StaticId(it) => { + needs_semi = true; + let item_tree_id = it.lookup(db).id; + format!("static {} = ", item_tree_id.item_tree(db)[item_tree_id.value].name) + } + DefWithBodyId::ConstId(it) => { + needs_semi = true; + let item_tree_id = it.lookup(db).id; + let name = match &item_tree_id.item_tree(db)[item_tree_id.value].name { + Some(name) => name.to_string(), + None => "_".to_string(), + }; + format!("const {} = ", name) + } + }; + + let mut p = Printer { body, buf: header, indent_level: 0, needs_indent: false }; + p.print_expr(body.body_expr); + if needs_semi { + p.buf.push(';'); + } + p.buf +} + +macro_rules! w { + ($dst:expr, $($arg:tt)*) => { + { let _ = write!($dst, $($arg)*); } + }; +} + +macro_rules! wln { + ($dst:expr) => { + { let _ = writeln!($dst); } + }; + ($dst:expr, $($arg:tt)*) => { + { let _ = writeln!($dst, $($arg)*); } + }; +} + +struct Printer<'a> { + body: &'a Body, + buf: String, + indent_level: usize, + needs_indent: bool, +} + +impl<'a> Write for Printer<'a> { + fn write_str(&mut self, s: &str) -> fmt::Result { + for line in s.split_inclusive('\n') { + if self.needs_indent { + match self.buf.chars().rev().skip_while(|ch| *ch == ' ').next() { + Some('\n') | None => {} + _ => self.buf.push('\n'), + } + self.buf.push_str(&" ".repeat(self.indent_level)); + self.needs_indent = false; + } + + self.buf.push_str(line); + self.needs_indent = line.ends_with('\n'); + } + + Ok(()) + } +} + +impl<'a> Printer<'a> { + fn indented(&mut self, f: impl FnOnce(&mut Self)) { + self.indent_level += 1; + wln!(self); + f(self); + self.indent_level -= 1; + self.buf = self.buf.trim_end_matches('\n').to_string(); + } + + fn whitespace(&mut self) { + match self.buf.chars().next_back() { + None | Some('\n' | ' ') => {} + _ => self.buf.push(' '), + } + } + + fn newline(&mut self) { + match self.buf.chars().rev().skip_while(|ch| *ch == ' ').next() { + Some('\n') | None => {} + _ => writeln!(self).unwrap(), + } + } + + fn print_expr(&mut self, expr: ExprId) { + let expr = &self.body[expr]; + + match expr { + Expr::Missing => w!(self, "�"), + Expr::Underscore => w!(self, "_"), + Expr::Path(path) => self.print_path(path), + Expr::If { condition, then_branch, else_branch } => { + w!(self, "if "); + self.print_expr(*condition); + w!(self, " "); + self.print_expr(*then_branch); + if let Some(els) = *else_branch { + w!(self, " else "); + self.print_expr(els); + } + } + Expr::Let { pat, expr } => { + w!(self, "let "); + self.print_pat(*pat); + w!(self, " = "); + self.print_expr(*expr); + } + Expr::Loop { body, label } => { + if let Some(lbl) = label { + w!(self, "{}: ", self.body[*lbl].name); + } + w!(self, "loop "); + self.print_expr(*body); + } + Expr::While { condition, body, label } => { + if let Some(lbl) = label { + w!(self, "{}: ", self.body[*lbl].name); + } + w!(self, "while "); + self.print_expr(*condition); + self.print_expr(*body); + } + Expr::For { iterable, pat, body, label } => { + if let Some(lbl) = label { + w!(self, "{}: ", self.body[*lbl].name); + } + w!(self, "for "); + self.print_pat(*pat); + w!(self, " in "); + self.print_expr(*iterable); + self.print_expr(*body); + } + Expr::Call { callee, args, is_assignee_expr: _ } => { + self.print_expr(*callee); + w!(self, "("); + if !args.is_empty() { + self.indented(|p| { + for arg in &**args { + p.print_expr(*arg); + wln!(p, ","); + } + }); + } + w!(self, ")"); + } + Expr::MethodCall { receiver, method_name, args, generic_args } => { + self.print_expr(*receiver); + w!(self, ".{}", method_name); + if let Some(args) = generic_args { + w!(self, "::<"); + print_generic_args(args, self).unwrap(); + w!(self, ">"); + } + w!(self, "("); + if !args.is_empty() { + self.indented(|p| { + for arg in &**args { + p.print_expr(*arg); + wln!(p, ","); + } + }); + } + w!(self, ")"); + } + Expr::Match { expr, arms } => { + w!(self, "match "); + self.print_expr(*expr); + w!(self, " {{"); + self.indented(|p| { + for arm in &**arms { + p.print_pat(arm.pat); + if let Some(guard) = arm.guard { + w!(p, " if "); + p.print_expr(guard); + } + w!(p, " => "); + p.print_expr(arm.expr); + wln!(p, ","); + } + }); + wln!(self, "}}"); + } + Expr::Continue { label } => { + w!(self, "continue"); + if let Some(label) = label { + w!(self, " {}", label); + } + } + Expr::Break { expr, label } => { + w!(self, "break"); + if let Some(label) = label { + w!(self, " {}", label); + } + if let Some(expr) = expr { + self.whitespace(); + self.print_expr(*expr); + } + } + Expr::Return { expr } => { + w!(self, "return"); + if let Some(expr) = expr { + self.whitespace(); + self.print_expr(*expr); + } + } + Expr::Yield { expr } => { + w!(self, "yield"); + if let Some(expr) = expr { + self.whitespace(); + self.print_expr(*expr); + } + } + Expr::RecordLit { path, fields, spread, ellipsis, is_assignee_expr: _ } => { + match path { + Some(path) => self.print_path(path), + None => w!(self, "�"), + } + + w!(self, "{{"); + self.indented(|p| { + for field in &**fields { + w!(p, "{}: ", field.name); + p.print_expr(field.expr); + wln!(p, ","); + } + if let Some(spread) = spread { + w!(p, ".."); + p.print_expr(*spread); + wln!(p); + } + if *ellipsis { + wln!(p, ".."); + } + }); + w!(self, "}}"); + } + Expr::Field { expr, name } => { + self.print_expr(*expr); + w!(self, ".{}", name); + } + Expr::Await { expr } => { + self.print_expr(*expr); + w!(self, ".await"); + } + Expr::Try { expr } => { + self.print_expr(*expr); + w!(self, "?"); + } + Expr::TryBlock { body } => { + w!(self, "try "); + self.print_expr(*body); + } + Expr::Async { body } => { + w!(self, "async "); + self.print_expr(*body); + } + Expr::Const { body } => { + w!(self, "const "); + self.print_expr(*body); + } + Expr::Cast { expr, type_ref } => { + self.print_expr(*expr); + w!(self, " as "); + self.print_type_ref(type_ref); + } + Expr::Ref { expr, rawness, mutability } => { + w!(self, "&"); + if rawness.is_raw() { + w!(self, "raw "); + } + if mutability.is_mut() { + w!(self, "mut "); + } + self.print_expr(*expr); + } + Expr::Box { expr } => { + w!(self, "box "); + self.print_expr(*expr); + } + Expr::UnaryOp { expr, op } => { + let op = match op { + ast::UnaryOp::Deref => "*", + ast::UnaryOp::Not => "!", + ast::UnaryOp::Neg => "-", + }; + w!(self, "{}", op); + self.print_expr(*expr); + } + Expr::BinaryOp { lhs, rhs, op } => { + let (bra, ket) = match op { + None | Some(ast::BinaryOp::Assignment { .. }) => ("", ""), + _ => ("(", ")"), + }; + w!(self, "{}", bra); + self.print_expr(*lhs); + w!(self, "{} ", ket); + match op { + Some(op) => w!(self, "{}", op), + None => w!(self, "�"), // :) + } + w!(self, " {}", bra); + self.print_expr(*rhs); + w!(self, "{}", ket); + } + Expr::Range { lhs, rhs, range_type } => { + if let Some(lhs) = lhs { + w!(self, "("); + self.print_expr(*lhs); + w!(self, ") "); + } + let range = match range_type { + ast::RangeOp::Exclusive => "..", + ast::RangeOp::Inclusive => "..=", + }; + w!(self, "{}", range); + if let Some(rhs) = rhs { + w!(self, "("); + self.print_expr(*rhs); + w!(self, ") "); + } + } + Expr::Index { base, index } => { + self.print_expr(*base); + w!(self, "["); + self.print_expr(*index); + w!(self, "]"); + } + Expr::Closure { args, arg_types, ret_type, body } => { + w!(self, "|"); + for (i, (pat, ty)) in args.iter().zip(arg_types.iter()).enumerate() { + if i != 0 { + w!(self, ", "); + } + self.print_pat(*pat); + if let Some(ty) = ty { + w!(self, ": "); + self.print_type_ref(ty); + } + } + w!(self, "|"); + if let Some(ret_ty) = ret_type { + w!(self, " -> "); + self.print_type_ref(ret_ty); + } + self.whitespace(); + self.print_expr(*body); + } + Expr::Tuple { exprs, is_assignee_expr: _ } => { + w!(self, "("); + for expr in exprs.iter() { + self.print_expr(*expr); + w!(self, ", "); + } + w!(self, ")"); + } + Expr::Unsafe { body } => { + w!(self, "unsafe "); + self.print_expr(*body); + } + Expr::Array(arr) => { + w!(self, "["); + if !matches!(arr, Array::ElementList { elements, .. } if elements.is_empty()) { + self.indented(|p| match arr { + Array::ElementList { elements, is_assignee_expr: _ } => { + for elem in elements.iter() { + p.print_expr(*elem); + w!(p, ", "); + } + } + Array::Repeat { initializer, repeat } => { + p.print_expr(*initializer); + w!(p, "; "); + p.print_expr(*repeat); + } + }); + self.newline(); + } + w!(self, "]"); + } + Expr::Literal(lit) => self.print_literal(lit), + Expr::Block { id: _, statements, tail, label } => { + self.whitespace(); + if let Some(lbl) = label { + w!(self, "{}: ", self.body[*lbl].name); + } + w!(self, "{{"); + if !statements.is_empty() || tail.is_some() { + self.indented(|p| { + for stmt in &**statements { + p.print_stmt(stmt); + } + if let Some(tail) = tail { + p.print_expr(*tail); + } + p.newline(); + }); + } + w!(self, "}}"); + } + Expr::MacroStmts { statements, tail } => { + w!(self, "{{ // macro statements"); + self.indented(|p| { + for stmt in statements.iter() { + p.print_stmt(stmt); + } + if let Some(tail) = tail { + p.print_expr(*tail); + } + }); + self.newline(); + w!(self, "}}"); + } + } + } + + fn print_pat(&mut self, pat: PatId) { + let pat = &self.body[pat]; + + match pat { + Pat::Missing => w!(self, "�"), + Pat::Wild => w!(self, "_"), + Pat::Tuple { args, ellipsis } => { + w!(self, "("); + for (i, pat) in args.iter().enumerate() { + if i != 0 { + w!(self, ", "); + } + if *ellipsis == Some(i) { + w!(self, ".., "); + } + self.print_pat(*pat); + } + w!(self, ")"); + } + Pat::Or(pats) => { + for (i, pat) in pats.iter().enumerate() { + if i != 0 { + w!(self, " | "); + } + self.print_pat(*pat); + } + } + Pat::Record { path, args, ellipsis } => { + match path { + Some(path) => self.print_path(path), + None => w!(self, "�"), + } + + w!(self, " {{"); + self.indented(|p| { + for arg in args.iter() { + w!(p, "{}: ", arg.name); + p.print_pat(arg.pat); + wln!(p, ","); + } + if *ellipsis { + wln!(p, ".."); + } + }); + w!(self, "}}"); + } + Pat::Range { start, end } => { + self.print_expr(*start); + w!(self, "..."); + self.print_expr(*end); + } + Pat::Slice { prefix, slice, suffix } => { + w!(self, "["); + for pat in prefix.iter() { + self.print_pat(*pat); + w!(self, ", "); + } + if let Some(pat) = slice { + self.print_pat(*pat); + w!(self, ", "); + } + for pat in suffix.iter() { + self.print_pat(*pat); + w!(self, ", "); + } + w!(self, "]"); + } + Pat::Path(path) => self.print_path(path), + Pat::Lit(expr) => self.print_expr(*expr), + Pat::Bind { mode, name, subpat } => { + let mode = match mode { + BindingAnnotation::Unannotated => "", + BindingAnnotation::Mutable => "mut ", + BindingAnnotation::Ref => "ref ", + BindingAnnotation::RefMut => "ref mut ", + }; + w!(self, "{}{}", mode, name); + if let Some(pat) = subpat { + self.whitespace(); + self.print_pat(*pat); + } + } + Pat::TupleStruct { path, args, ellipsis } => { + match path { + Some(path) => self.print_path(path), + None => w!(self, "�"), + } + w!(self, "("); + for (i, arg) in args.iter().enumerate() { + if i != 0 { + w!(self, ", "); + } + if *ellipsis == Some(i) { + w!(self, ", .."); + } + self.print_pat(*arg); + } + w!(self, ")"); + } + Pat::Ref { pat, mutability } => { + w!(self, "&"); + if mutability.is_mut() { + w!(self, "mut "); + } + self.print_pat(*pat); + } + Pat::Box { inner } => { + w!(self, "box "); + self.print_pat(*inner); + } + Pat::ConstBlock(c) => { + w!(self, "const "); + self.print_expr(*c); + } + } + } + + fn print_stmt(&mut self, stmt: &Statement) { + match stmt { + Statement::Let { pat, type_ref, initializer, else_branch } => { + w!(self, "let "); + self.print_pat(*pat); + if let Some(ty) = type_ref { + w!(self, ": "); + self.print_type_ref(ty); + } + if let Some(init) = initializer { + w!(self, " = "); + self.print_expr(*init); + } + if let Some(els) = else_branch { + w!(self, " else "); + self.print_expr(*els); + } + wln!(self, ";"); + } + Statement::Expr { expr, has_semi } => { + self.print_expr(*expr); + if *has_semi { + w!(self, ";"); + } + wln!(self); + } + } + } + + fn print_literal(&mut self, literal: &Literal) { + match literal { + Literal::String(it) => w!(self, "{:?}", it), + Literal::ByteString(it) => w!(self, "\"{}\"", it.escape_ascii()), + Literal::Char(it) => w!(self, "'{}'", it.escape_debug()), + Literal::Bool(it) => w!(self, "{}", it), + Literal::Int(i, suffix) => { + w!(self, "{}", i); + if let Some(suffix) = suffix { + w!(self, "{}", suffix); + } + } + Literal::Uint(i, suffix) => { + w!(self, "{}", i); + if let Some(suffix) = suffix { + w!(self, "{}", suffix); + } + } + Literal::Float(f, suffix) => { + w!(self, "{}", f); + if let Some(suffix) = suffix { + w!(self, "{}", suffix); + } + } + } + } + + fn print_type_ref(&mut self, ty: &TypeRef) { + print_type_ref(ty, self).unwrap(); + } + + fn print_path(&mut self, path: &Path) { + print_path(path, self).unwrap(); + } +} diff --git a/crates/hir-def/src/builtin_type.rs b/crates/hir-def/src/builtin_type.rs index 25a408036ff7..dd69c3ab4731 100644 --- a/crates/hir-def/src/builtin_type.rs +++ b/crates/hir-def/src/builtin_type.rs @@ -156,3 +156,38 @@ impl BuiltinFloat { Some(res) } } + +impl fmt::Display for BuiltinInt { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + BuiltinInt::Isize => "isize", + BuiltinInt::I8 => "i8", + BuiltinInt::I16 => "i16", + BuiltinInt::I32 => "i32", + BuiltinInt::I64 => "i64", + BuiltinInt::I128 => "i128", + }) + } +} + +impl fmt::Display for BuiltinUint { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + BuiltinUint::Usize => "usize", + BuiltinUint::U8 => "u8", + BuiltinUint::U16 => "u16", + BuiltinUint::U32 => "u32", + BuiltinUint::U64 => "u64", + BuiltinUint::U128 => "u128", + }) + } +} + +impl fmt::Display for BuiltinFloat { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + BuiltinFloat::F32 => "f32", + BuiltinFloat::F64 => "f64", + }) + } +} diff --git a/crates/hir-def/src/expr.rs b/crates/hir-def/src/expr.rs index c1b3788acb7d..4381b43c258b 100644 --- a/crates/hir-def/src/expr.rs +++ b/crates/hir-def/src/expr.rs @@ -12,6 +12,8 @@ //! //! See also a neighboring `body` module. +use std::fmt; + use hir_expand::name::Name; use la_arena::{Idx, RawIdx}; @@ -52,8 +54,8 @@ impl FloatTypeWrapper { } } -impl std::fmt::Display for FloatTypeWrapper { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { +impl fmt::Display for FloatTypeWrapper { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{:?}", f64::from_bits(self.0)) } } diff --git a/crates/hir-def/src/item_tree/pretty.rs b/crates/hir-def/src/item_tree/pretty.rs index f12d9a1273cc..34dd817fd130 100644 --- a/crates/hir-def/src/item_tree/pretty.rs +++ b/crates/hir-def/src/item_tree/pretty.rs @@ -2,13 +2,10 @@ use std::fmt::{self, Write}; -use itertools::Itertools; - use crate::{ attr::RawAttrs, generics::{TypeOrConstParamData, WherePredicate, WherePredicateTypeTarget}, - path::GenericArg, - type_ref::TraitBoundModifier, + pretty::{print_path, print_type_bounds, print_type_ref}, visibility::RawVisibility, }; @@ -464,183 +461,15 @@ impl<'a> Printer<'a> { } fn print_type_ref(&mut self, type_ref: &TypeRef) { - // FIXME: deduplicate with `HirDisplay` impl - match type_ref { - TypeRef::Never => w!(self, "!"), - TypeRef::Placeholder => w!(self, "_"), - TypeRef::Tuple(fields) => { - w!(self, "("); - for (i, field) in fields.iter().enumerate() { - if i != 0 { - w!(self, ", "); - } - self.print_type_ref(field); - } - w!(self, ")"); - } - TypeRef::Path(path) => self.print_path(path), - TypeRef::RawPtr(pointee, mtbl) => { - let mtbl = match mtbl { - Mutability::Shared => "*const", - Mutability::Mut => "*mut", - }; - w!(self, "{} ", mtbl); - self.print_type_ref(pointee); - } - TypeRef::Reference(pointee, lt, mtbl) => { - let mtbl = match mtbl { - Mutability::Shared => "", - Mutability::Mut => "mut ", - }; - w!(self, "&"); - if let Some(lt) = lt { - w!(self, "{} ", lt.name); - } - w!(self, "{}", mtbl); - self.print_type_ref(pointee); - } - TypeRef::Array(elem, len) => { - w!(self, "["); - self.print_type_ref(elem); - w!(self, "; {}]", len); - } - TypeRef::Slice(elem) => { - w!(self, "["); - self.print_type_ref(elem); - w!(self, "]"); - } - TypeRef::Fn(args_and_ret, varargs) => { - let ((_, return_type), args) = - args_and_ret.split_last().expect("TypeRef::Fn is missing return type"); - w!(self, "fn("); - for (i, (_, typeref)) in args.iter().enumerate() { - if i != 0 { - w!(self, ", "); - } - self.print_type_ref(typeref); - } - if *varargs { - if !args.is_empty() { - w!(self, ", "); - } - w!(self, "..."); - } - w!(self, ") -> "); - self.print_type_ref(return_type); - } - TypeRef::Macro(_ast_id) => { - w!(self, ""); - } - TypeRef::Error => w!(self, "{{unknown}}"), - TypeRef::ImplTrait(bounds) => { - w!(self, "impl "); - self.print_type_bounds(bounds); - } - TypeRef::DynTrait(bounds) => { - w!(self, "dyn "); - self.print_type_bounds(bounds); - } - } + print_type_ref(type_ref, self).unwrap(); } fn print_type_bounds(&mut self, bounds: &[Interned]) { - for (i, bound) in bounds.iter().enumerate() { - if i != 0 { - w!(self, " + "); - } - - match bound.as_ref() { - TypeBound::Path(path, modifier) => { - match modifier { - TraitBoundModifier::None => (), - TraitBoundModifier::Maybe => w!(self, "?"), - } - self.print_path(path) - } - TypeBound::ForLifetime(lifetimes, path) => { - w!(self, "for<{}> ", lifetimes.iter().format(", ")); - self.print_path(path); - } - TypeBound::Lifetime(lt) => w!(self, "{}", lt.name), - TypeBound::Error => w!(self, "{{unknown}}"), - } - } + print_type_bounds(bounds, self).unwrap(); } fn print_path(&mut self, path: &Path) { - match path.type_anchor() { - Some(anchor) => { - w!(self, "<"); - self.print_type_ref(anchor); - w!(self, ">::"); - } - None => match path.kind() { - PathKind::Plain => {} - PathKind::Super(0) => w!(self, "self::"), - PathKind::Super(n) => { - for _ in 0..*n { - w!(self, "super::"); - } - } - PathKind::Crate => w!(self, "crate::"), - PathKind::Abs => w!(self, "::"), - PathKind::DollarCrate(_) => w!(self, "$crate::"), - }, - } - - for (i, segment) in path.segments().iter().enumerate() { - if i != 0 { - w!(self, "::"); - } - - w!(self, "{}", segment.name); - if let Some(generics) = segment.args_and_bindings { - // NB: these are all in type position, so `::<` turbofish syntax is not necessary - w!(self, "<"); - let mut first = true; - let args = if generics.has_self_type { - let (self_ty, args) = generics.args.split_first().unwrap(); - w!(self, "Self="); - self.print_generic_arg(self_ty); - first = false; - args - } else { - &generics.args - }; - for arg in args { - if !first { - w!(self, ", "); - } - first = false; - self.print_generic_arg(arg); - } - for binding in &generics.bindings { - if !first { - w!(self, ", "); - } - first = false; - w!(self, "{}", binding.name); - if !binding.bounds.is_empty() { - w!(self, ": "); - self.print_type_bounds(&binding.bounds); - } - if let Some(ty) = &binding.type_ref { - w!(self, " = "); - self.print_type_ref(ty); - } - } - - w!(self, ">"); - } - } - } - - fn print_generic_arg(&mut self, arg: &GenericArg) { - match arg { - GenericArg::Type(ty) => self.print_type_ref(ty), - GenericArg::Const(c) => w!(self, "{}", c), - GenericArg::Lifetime(lt) => w!(self, "{}", lt.name), - } + print_path(path, self).unwrap(); } fn print_generic_params(&mut self, params: &GenericParams) { diff --git a/crates/hir-def/src/item_tree/tests.rs b/crates/hir-def/src/item_tree/tests.rs index 5cdf36cc61b8..e30d9652bb5d 100644 --- a/crates/hir-def/src/item_tree/tests.rs +++ b/crates/hir-def/src/item_tree/tests.rs @@ -283,10 +283,10 @@ struct S { "#, expect![[r#" pub(self) struct S { - pub(self) a: Mixed<'a, T, Item = (), OtherItem = u8>, - pub(self) b: Qualified::Syntax, - pub(self) c: ::Path<'a>, - pub(self) d: dyn for<'a> Trait<'a>, + pub(self) a: Mixed::<'a, T, Item = (), OtherItem = u8>, + pub(self) b: Qualified::::Syntax, + pub(self) c: ::Path::<'a>, + pub(self) d: dyn for<'a> Trait::<'a>, } "#]], ) @@ -329,7 +329,7 @@ trait Tr<'a, T: 'a>: Super where Self: for<'a> Tr<'a, T> {} T: Copy, U: ?Sized; - impl<'a, 'b, T, const K: u8> S<'a, 'b, T, K> + impl<'a, 'b, T, const K: u8> S::<'a, 'b, T, K> where T: Copy, T: 'a, @@ -352,7 +352,7 @@ trait Tr<'a, T: 'a>: Super where Self: for<'a> Tr<'a, T> {} where Self: Super, T: 'a, - Self: for<'a> Tr<'a, T> + Self: for<'a> Tr::<'a, T> { } "#]], diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs index 56603f4b1545..32ebfda4fd92 100644 --- a/crates/hir-def/src/lib.rs +++ b/crates/hir-def/src/lib.rs @@ -53,6 +53,7 @@ pub mod import_map; mod test_db; #[cfg(test)] mod macro_expansion_tests; +mod pretty; use std::{ hash::{Hash, Hasher}, diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs index c579bc9194c3..8dfda6df64e7 100644 --- a/crates/hir-def/src/nameres/path_resolution.rs +++ b/crates/hir-def/src/nameres/path_resolution.rs @@ -399,14 +399,15 @@ impl DefMap { Some(_) | None => from_scope.or(from_builtin), }, }; - let from_extern_prelude = self - .extern_prelude - .get(name) - .map_or(PerNs::none(), |&it| PerNs::types(it.into(), Visibility::Public)); - let from_prelude = self.resolve_in_prelude(db, name); + let extern_prelude = || { + self.extern_prelude + .get(name) + .map_or(PerNs::none(), |&it| PerNs::types(it.into(), Visibility::Public)) + }; + let prelude = || self.resolve_in_prelude(db, name); - from_legacy_macro.or(from_scope_or_builtin).or(from_extern_prelude).or(from_prelude) + from_legacy_macro.or(from_scope_or_builtin).or_else(extern_prelude).or_else(prelude) } fn resolve_name_in_crate_root_or_extern_prelude( @@ -414,20 +415,19 @@ impl DefMap { db: &dyn DefDatabase, name: &Name, ) -> PerNs { - let arc; - let crate_def_map = match self.block { + let from_crate_root = match self.block { Some(_) => { - arc = self.crate_root(db).def_map(db); - &arc + let def_map = self.crate_root(db).def_map(db); + def_map[def_map.root].scope.get(name) } - None => self, + None => self[self.root].scope.get(name), + }; + let from_extern_prelude = || { + self.resolve_name_in_extern_prelude(db, name) + .map_or(PerNs::none(), |it| PerNs::types(it.into(), Visibility::Public)) }; - let from_crate_root = crate_def_map[crate_def_map.root].scope.get(name); - let from_extern_prelude = self - .resolve_name_in_extern_prelude(db, name) - .map_or(PerNs::none(), |it| PerNs::types(it.into(), Visibility::Public)); - from_crate_root.or(from_extern_prelude) + from_crate_root.or_else(from_extern_prelude) } fn resolve_in_prelude(&self, db: &dyn DefDatabase, name: &Name) -> PerNs { diff --git a/crates/hir-def/src/nameres/proc_macro.rs b/crates/hir-def/src/nameres/proc_macro.rs index 5089ef2d8171..52b79cd0fdda 100644 --- a/crates/hir-def/src/nameres/proc_macro.rs +++ b/crates/hir-def/src/nameres/proc_macro.rs @@ -45,7 +45,7 @@ impl Attrs { kind: ProcMacroKind::CustomDerive { helpers: Box::new([]) }, }), - // `#[proc_macro_derive(Trait, attibutes(helper1, helper2, ...))]` + // `#[proc_macro_derive(Trait, attributes(helper1, helper2, ...))]` [ TokenTree::Leaf(Leaf::Ident(trait_name)), TokenTree::Leaf(Leaf::Punct(comma)), diff --git a/crates/hir-def/src/per_ns.rs b/crates/hir-def/src/per_ns.rs index bf5bf10c4caa..2bc1f8e926e9 100644 --- a/crates/hir-def/src/per_ns.rs +++ b/crates/hir-def/src/per_ns.rs @@ -43,6 +43,10 @@ impl PerNs { self.types.is_none() && self.values.is_none() && self.macros.is_none() } + pub fn is_full(&self) -> bool { + self.types.is_some() && self.values.is_some() && self.macros.is_some() + } + pub fn take_types(self) -> Option { self.types.map(|it| it.0) } @@ -84,6 +88,14 @@ impl PerNs { } } + pub fn or_else(self, f: impl FnOnce() -> PerNs) -> PerNs { + if self.is_full() { + self + } else { + self.or(f()) + } + } + pub fn iter_items(self) -> impl Iterator { let _p = profile::span("PerNs::iter_items"); self.types diff --git a/crates/hir-def/src/pretty.rs b/crates/hir-def/src/pretty.rs new file mode 100644 index 000000000000..6636c8a23ca5 --- /dev/null +++ b/crates/hir-def/src/pretty.rs @@ -0,0 +1,209 @@ +//! Display and pretty printing routines. + +use std::fmt::{self, Write}; + +use hir_expand::mod_path::PathKind; +use itertools::Itertools; + +use crate::{ + intern::Interned, + path::{GenericArg, GenericArgs, Path}, + type_ref::{Mutability, TraitBoundModifier, TypeBound, TypeRef}, +}; + +pub(crate) fn print_path(path: &Path, buf: &mut dyn Write) -> fmt::Result { + match path.type_anchor() { + Some(anchor) => { + write!(buf, "<")?; + print_type_ref(anchor, buf)?; + write!(buf, ">::")?; + } + None => match path.kind() { + PathKind::Plain => {} + PathKind::Super(0) => write!(buf, "self")?, + PathKind::Super(n) => { + for i in 0..*n { + if i == 0 { + buf.write_str("super")?; + } else { + buf.write_str("::super")?; + } + } + } + PathKind::Crate => write!(buf, "crate")?, + PathKind::Abs => {} + PathKind::DollarCrate(_) => write!(buf, "$crate")?, + }, + } + + for (i, segment) in path.segments().iter().enumerate() { + if i != 0 || !matches!(path.kind(), PathKind::Plain) { + write!(buf, "::")?; + } + + write!(buf, "{}", segment.name)?; + if let Some(generics) = segment.args_and_bindings { + write!(buf, "::<")?; + print_generic_args(generics, buf)?; + + write!(buf, ">")?; + } + } + + Ok(()) +} + +pub(crate) fn print_generic_args(generics: &GenericArgs, buf: &mut dyn Write) -> fmt::Result { + let mut first = true; + let args = if generics.has_self_type { + let (self_ty, args) = generics.args.split_first().unwrap(); + write!(buf, "Self=")?; + print_generic_arg(self_ty, buf)?; + first = false; + args + } else { + &generics.args + }; + for arg in args { + if !first { + write!(buf, ", ")?; + } + first = false; + print_generic_arg(arg, buf)?; + } + for binding in &generics.bindings { + if !first { + write!(buf, ", ")?; + } + first = false; + write!(buf, "{}", binding.name)?; + if !binding.bounds.is_empty() { + write!(buf, ": ")?; + print_type_bounds(&binding.bounds, buf)?; + } + if let Some(ty) = &binding.type_ref { + write!(buf, " = ")?; + print_type_ref(ty, buf)?; + } + } + Ok(()) +} + +pub(crate) fn print_generic_arg(arg: &GenericArg, buf: &mut dyn Write) -> fmt::Result { + match arg { + GenericArg::Type(ty) => print_type_ref(ty, buf), + GenericArg::Const(c) => write!(buf, "{}", c), + GenericArg::Lifetime(lt) => write!(buf, "{}", lt.name), + } +} + +pub(crate) fn print_type_ref(type_ref: &TypeRef, buf: &mut dyn Write) -> fmt::Result { + // FIXME: deduplicate with `HirDisplay` impl + match type_ref { + TypeRef::Never => write!(buf, "!")?, + TypeRef::Placeholder => write!(buf, "_")?, + TypeRef::Tuple(fields) => { + write!(buf, "(")?; + for (i, field) in fields.iter().enumerate() { + if i != 0 { + write!(buf, ", ")?; + } + print_type_ref(field, buf)?; + } + write!(buf, ")")?; + } + TypeRef::Path(path) => print_path(path, buf)?, + TypeRef::RawPtr(pointee, mtbl) => { + let mtbl = match mtbl { + Mutability::Shared => "*const", + Mutability::Mut => "*mut", + }; + write!(buf, "{} ", mtbl)?; + print_type_ref(pointee, buf)?; + } + TypeRef::Reference(pointee, lt, mtbl) => { + let mtbl = match mtbl { + Mutability::Shared => "", + Mutability::Mut => "mut ", + }; + write!(buf, "&")?; + if let Some(lt) = lt { + write!(buf, "{} ", lt.name)?; + } + write!(buf, "{}", mtbl)?; + print_type_ref(pointee, buf)?; + } + TypeRef::Array(elem, len) => { + write!(buf, "[")?; + print_type_ref(elem, buf)?; + write!(buf, "; {}]", len)?; + } + TypeRef::Slice(elem) => { + write!(buf, "[")?; + print_type_ref(elem, buf)?; + write!(buf, "]")?; + } + TypeRef::Fn(args_and_ret, varargs) => { + let ((_, return_type), args) = + args_and_ret.split_last().expect("TypeRef::Fn is missing return type"); + write!(buf, "fn(")?; + for (i, (_, typeref)) in args.iter().enumerate() { + if i != 0 { + write!(buf, ", ")?; + } + print_type_ref(typeref, buf)?; + } + if *varargs { + if !args.is_empty() { + write!(buf, ", ")?; + } + write!(buf, "...")?; + } + write!(buf, ") -> ")?; + print_type_ref(return_type, buf)?; + } + TypeRef::Macro(_ast_id) => { + write!(buf, "")?; + } + TypeRef::Error => write!(buf, "{{unknown}}")?, + TypeRef::ImplTrait(bounds) => { + write!(buf, "impl ")?; + print_type_bounds(bounds, buf)?; + } + TypeRef::DynTrait(bounds) => { + write!(buf, "dyn ")?; + print_type_bounds(bounds, buf)?; + } + } + + Ok(()) +} + +pub(crate) fn print_type_bounds( + bounds: &[Interned], + buf: &mut dyn Write, +) -> fmt::Result { + for (i, bound) in bounds.iter().enumerate() { + if i != 0 { + write!(buf, " + ")?; + } + + match bound.as_ref() { + TypeBound::Path(path, modifier) => { + match modifier { + TraitBoundModifier::None => (), + TraitBoundModifier::Maybe => write!(buf, "?")?, + } + print_path(path, buf)?; + } + TypeBound::ForLifetime(lifetimes, path) => { + write!(buf, "for<{}> ", lifetimes.iter().format(", "))?; + print_path(path, buf)?; + } + TypeBound::Lifetime(lt) => write!(buf, "{}", lt.name)?, + TypeBound::Error => write!(buf, "{{unknown}}")?, + } + } + + Ok(()) +} diff --git a/crates/hir-def/src/type_ref.rs b/crates/hir-def/src/type_ref.rs index 9248059627d2..5b4c71be7fb8 100644 --- a/crates/hir-def/src/type_ref.rs +++ b/crates/hir-def/src/type_ref.rs @@ -77,6 +77,10 @@ impl Rawness { Rawness::Ref } } + + pub fn is_raw(&self) -> bool { + matches!(self, Self::RawPtr) + } } #[derive(Clone, PartialEq, Eq, Hash, Debug)] diff --git a/crates/hir-expand/src/ast_id_map.rs b/crates/hir-expand/src/ast_id_map.rs index c1ddef03ba3b..11c0a6764e9d 100644 --- a/crates/hir-expand/src/ast_id_map.rs +++ b/crates/hir-expand/src/ast_id_map.rs @@ -15,7 +15,7 @@ use std::{ use la_arena::{Arena, Idx}; use profile::Count; use rustc_hash::FxHasher; -use syntax::{ast, match_ast, AstNode, AstPtr, SyntaxNode, SyntaxNodePtr}; +use syntax::{ast, AstNode, AstPtr, SyntaxNode, SyntaxNodePtr}; /// `AstId` points to an AST node in a specific file. pub struct FileAstId { @@ -92,18 +92,12 @@ impl AstIdMap { // change parent's id. This means that, say, adding a new function to a // trait does not change ids of top-level items, which helps caching. bdfs(node, |it| { - match_ast! { - match it { - ast::Item(module_item) => { - res.alloc(module_item.syntax()); - true - }, - ast::BlockExpr(block) => { - res.alloc(block.syntax()); - true - }, - _ => false, - } + let kind = it.kind(); + if ast::Item::can_cast(kind) || ast::BlockExpr::can_cast(kind) { + res.alloc(&it); + true + } else { + false } }); res.map = hashbrown::HashMap::with_capacity_and_hasher(res.arena.len(), ()); @@ -123,6 +117,7 @@ impl AstIdMap { let raw = self.erased_ast_id(item.syntax()); FileAstId { raw, _ty: PhantomData } } + fn erased_ast_id(&self, item: &SyntaxNode) -> ErasedFileAstId { let ptr = SyntaxNodePtr::new(item); let hash = hash_ptr(&ptr); diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs index bd60c3d26868..bc97ee15c7d3 100644 --- a/crates/hir-expand/src/db.rs +++ b/crates/hir-expand/src/db.rs @@ -321,7 +321,11 @@ fn censor_for_macro_input(loc: &MacroCallLoc, node: &SyntaxNode) -> FxHashSet), BuiltIn(BuiltinFnLikeExpander, AstId), - // FIXME: maybe just Builtin and rename BuiltinFnLikeExpander to BuiltinExpander BuiltInAttr(BuiltinAttrExpander, AstId), BuiltInDerive(BuiltinDeriveExpander, AstId), BuiltInEager(EagerExpander, AstId), @@ -617,7 +616,7 @@ impl ExpansionInfo { let token_id = match token_id_in_attr_input { Some(token_id) => token_id, - // the token is not inside an attribute's input so do the lookup in the macro_arg as ususal + // the token is not inside an attribute's input so do the lookup in the macro_arg as usual None => { let relative_range = token.value.text_range().checked_sub(self.arg.value.text_range().start())?; diff --git a/crates/hir-expand/src/mod_path.rs b/crates/hir-expand/src/mod_path.rs index d0f73ec8208c..d7586d129b76 100644 --- a/crates/hir-expand/src/mod_path.rs +++ b/crates/hir-expand/src/mod_path.rs @@ -257,6 +257,7 @@ macro_rules! __known_path { (core::ops::RangeToInclusive) => {}; (core::ops::RangeInclusive) => {}; (core::future::Future) => {}; + (core::future::IntoFuture) => {}; (core::ops::Try) => {}; ($path:path) => { compile_error!("Please register your known path in the path module") diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index 87c663eec8e8..2b859f775095 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -90,10 +90,16 @@ impl Name { /// Resolve a name from the text of token. fn resolve(raw_text: &str) -> Name { - // When `raw_text` starts with "r#" but the name does not coincide with any - // keyword, we never need the prefix so we strip it. match raw_text.strip_prefix("r#") { + // When `raw_text` starts with "r#" but the name does not coincide with any + // keyword, we never need the prefix so we strip it. Some(text) if !is_raw_identifier(text) => Name::new_text(SmolStr::new(text)), + // Keywords (in the current edition) *can* be used as a name in earlier editions of + // Rust, e.g. "try" in Rust 2015. Even in such cases, we keep track of them in their + // escaped form. + None if is_raw_identifier(raw_text) => { + Name::new_text(SmolStr::from_iter(["r#", raw_text])) + } _ => Name::new_text(raw_text.into()), } } @@ -260,6 +266,7 @@ pub mod known { Try, Ok, Future, + IntoFuture, Result, Option, Output, @@ -393,6 +400,7 @@ pub mod known { future_trait, index, index_mut, + into_future, mul_assign, mul, neg, diff --git a/crates/hir-ty/Cargo.toml b/crates/hir-ty/Cargo.toml index 5cd444c1ad3b..7f143f396c76 100644 --- a/crates/hir-ty/Cargo.toml +++ b/crates/hir-ty/Cargo.toml @@ -18,9 +18,9 @@ ena = "0.14.0" tracing = "0.1.35" rustc-hash = "1.1.0" scoped-tls = "1.0.0" -chalk-solve = { version = "0.83.0", default-features = false } -chalk-ir = "0.83.0" -chalk-recursive = { version = "0.83.0", default-features = false } +chalk-solve = { version = "0.84.0", default-features = false } +chalk-ir = "0.84.0" +chalk-recursive = { version = "0.84.0", default-features = false } la-arena = { version = "0.3.0", path = "../../lib/la-arena" } once_cell = "1.12.0" typed-arena = "2.0.1" diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 46eeea0e6fc4..5df48e5fdcba 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -734,6 +734,7 @@ impl<'a> InferenceContext<'a> { let ty = self.insert_type_vars(ty.substitute(Interner, &substs)); return (ty, Some(strukt.into())); } + ValueNs::ImplSelf(impl_id) => (TypeNs::SelfType(impl_id), None), _ => return (self.err_ty(), None), }, Some(ResolveValueResult::Partial(typens, unresolved)) => (typens, Some(unresolved)), @@ -875,7 +876,10 @@ impl<'a> InferenceContext<'a> { } fn resolve_future_future_output(&self) -> Option { - let trait_ = self.resolve_lang_item(name![future_trait])?.as_trait()?; + let trait_ = self + .resolver + .resolve_known_trait(self.db.upcast(), &path![core::future::IntoFuture]) + .or_else(|| self.resolve_lang_item(name![future_trait])?.as_trait())?; self.db.trait_data(trait_).associated_type_by_name(&name![Output]) } diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index 239f66bcb7e7..ae115c8c0da8 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -238,18 +238,7 @@ impl<'a> TyLoweringContext<'a> { }) .intern(Interner) } - TypeRef::DynTrait(bounds) => { - let self_ty = - TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)).intern(Interner); - let bounds = self.with_shifted_in(DebruijnIndex::ONE, |ctx| { - QuantifiedWhereClauses::from_iter( - Interner, - bounds.iter().flat_map(|b| ctx.lower_type_bound(b, self_ty.clone(), false)), - ) - }); - let bounds = crate::make_single_type_binders(bounds); - TyKind::Dyn(DynTy { bounds, lifetime: static_lifetime() }).intern(Interner) - } + TypeRef::DynTrait(bounds) => self.lower_dyn_trait(bounds), TypeRef::ImplTrait(bounds) => { match self.impl_trait_mode { ImplTraitLoweringMode::Opaque => { @@ -468,29 +457,10 @@ impl<'a> TyLoweringContext<'a> { } } 0 => { - let self_ty = Some( - TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)) - .intern(Interner), - ); - let trait_ref = self.with_shifted_in(DebruijnIndex::ONE, |ctx| { - ctx.lower_trait_ref_from_resolved_path( - trait_, - resolved_segment, - self_ty, - ) - }); - let dyn_ty = DynTy { - bounds: crate::make_single_type_binders( - QuantifiedWhereClauses::from_iter( - Interner, - Some(crate::wrap_empty_binders(WhereClause::Implemented( - trait_ref, - ))), - ), - ), - lifetime: static_lifetime(), - }; - TyKind::Dyn(dyn_ty).intern(Interner) + // Trait object type without dyn; this should be handled in upstream. See + // `lower_path()`. + stdx::never!("unexpected fully resolved trait path"); + TyKind::Error.intern(Interner) } _ => { // FIXME report error (ambiguous associated type) @@ -555,11 +525,20 @@ impl<'a> TyLoweringContext<'a> { let (ty, res) = self.lower_ty_ext(type_ref); return self.lower_ty_relative_path(ty, res, path.segments()); } + let (resolution, remaining_index) = match self.resolver.resolve_path_in_type_ns(self.db.upcast(), path.mod_path()) { Some(it) => it, None => return (TyKind::Error.intern(Interner), None), }; + + if matches!(resolution, TypeNs::TraitId(_)) && remaining_index.is_none() { + // trait object type without dyn + let bound = TypeBound::Path(path.clone(), TraitBoundModifier::None); + let ty = self.lower_dyn_trait(&[Interned::new(bound)]); + return (ty, None); + } + let (resolved_segment, remaining_segments) = match remaining_index { None => ( path.segments().last().expect("resolved path has at least one element"), @@ -987,6 +966,18 @@ impl<'a> TyLoweringContext<'a> { }) } + fn lower_dyn_trait(&self, bounds: &[Interned]) -> Ty { + let self_ty = TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)).intern(Interner); + let bounds = self.with_shifted_in(DebruijnIndex::ONE, |ctx| { + QuantifiedWhereClauses::from_iter( + Interner, + bounds.iter().flat_map(|b| ctx.lower_type_bound(b, self_ty.clone(), false)), + ) + }); + let bounds = crate::make_single_type_binders(bounds); + TyKind::Dyn(DynTy { bounds, lifetime: static_lifetime() }).intern(Interner) + } + fn lower_impl_trait( &self, bounds: &[Interned], diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 64622545f840..9a63d5013b46 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -1064,6 +1064,14 @@ pub fn resolve_indexing_op( None } +macro_rules! check_that { + ($cond:expr) => { + if !$cond { + return false; + } + }; +} + fn is_valid_candidate( table: &mut InferenceTable<'_>, name: Option<&Name>, @@ -1072,54 +1080,10 @@ fn is_valid_candidate( self_ty: &Ty, visible_from_module: Option, ) -> bool { - macro_rules! check_that { - ($cond:expr) => { - if !$cond { - return false; - } - }; - } - let db = table.db; match item { AssocItemId::FunctionId(m) => { - let data = db.function_data(m); - - check_that!(name.map_or(true, |n| n == &data.name)); - check_that!(visible_from_module.map_or(true, |from_module| { - let v = db.function_visibility(m).is_visible_from(db.upcast(), from_module); - if !v { - cov_mark::hit!(autoderef_candidate_not_visible); - } - v - })); - - table.run_in_snapshot(|table| { - let subst = TyBuilder::subst_for_def(db, m).fill_with_inference_vars(table).build(); - let expect_self_ty = match m.lookup(db.upcast()).container { - ItemContainerId::TraitId(_) => { - subst.at(Interner, 0).assert_ty_ref(Interner).clone() - } - ItemContainerId::ImplId(impl_id) => { - subst.apply(db.impl_self_ty(impl_id).skip_binders().clone(), Interner) - } - // We should only get called for associated items (impl/trait) - ItemContainerId::ModuleId(_) | ItemContainerId::ExternBlockId(_) => { - unreachable!() - } - }; - check_that!(table.unify(&expect_self_ty, self_ty)); - if let Some(receiver_ty) = receiver_ty { - check_that!(data.has_self_param()); - - let sig = db.callable_item_signature(m.into()); - let expected_receiver = - sig.map(|s| s.params()[0].clone()).substitute(Interner, &subst); - - check_that!(table.unify(&receiver_ty, &expected_receiver)); - } - true - }) + is_valid_fn_candidate(table, m, name, receiver_ty, self_ty, visible_from_module) } AssocItemId::ConstId(c) => { let data = db.const_data(c); @@ -1152,6 +1116,94 @@ fn is_valid_candidate( } } +fn is_valid_fn_candidate( + table: &mut InferenceTable<'_>, + fn_id: FunctionId, + name: Option<&Name>, + receiver_ty: Option<&Ty>, + self_ty: &Ty, + visible_from_module: Option, +) -> bool { + let db = table.db; + let data = db.function_data(fn_id); + + check_that!(name.map_or(true, |n| n == &data.name)); + check_that!(visible_from_module.map_or(true, |from_module| { + let v = db.function_visibility(fn_id).is_visible_from(db.upcast(), from_module); + if !v { + cov_mark::hit!(autoderef_candidate_not_visible); + } + v + })); + + table.run_in_snapshot(|table| { + let container = fn_id.lookup(db.upcast()).container; + let impl_subst = match container { + ItemContainerId::ImplId(it) => { + TyBuilder::subst_for_def(db, it).fill_with_inference_vars(table).build() + } + ItemContainerId::TraitId(it) => { + TyBuilder::subst_for_def(db, it).fill_with_inference_vars(table).build() + } + _ => unreachable!(), + }; + + let fn_subst = TyBuilder::subst_for_def(db, fn_id) + .use_parent_substs(&impl_subst) + .fill_with_inference_vars(table) + .build(); + + let expect_self_ty = match container { + ItemContainerId::TraitId(_) => fn_subst.at(Interner, 0).assert_ty_ref(Interner).clone(), + ItemContainerId::ImplId(impl_id) => { + fn_subst.apply(db.impl_self_ty(impl_id).skip_binders().clone(), Interner) + } + // We should only get called for associated items (impl/trait) + ItemContainerId::ModuleId(_) | ItemContainerId::ExternBlockId(_) => { + unreachable!() + } + }; + check_that!(table.unify(&expect_self_ty, self_ty)); + + if let Some(receiver_ty) = receiver_ty { + check_that!(data.has_self_param()); + + let sig = db.callable_item_signature(fn_id.into()); + let expected_receiver = + sig.map(|s| s.params()[0].clone()).substitute(Interner, &fn_subst); + + check_that!(table.unify(&receiver_ty, &expected_receiver)); + } + + if let ItemContainerId::ImplId(impl_id) = container { + // We need to consider the bounds on the impl to distinguish functions of the same name + // for a type. + let predicates = db.generic_predicates(impl_id.into()); + predicates + .iter() + .map(|predicate| { + let (p, b) = predicate + .clone() + .substitute(Interner, &impl_subst) + // Skipping the inner binders is ok, as we don't handle quantified where + // clauses yet. + .into_value_and_skipped_binders(); + stdx::always!(b.len(Interner) == 0); + p + }) + // It's ok to get ambiguity here, as we may not have enough information to prove + // obligations. We'll check if the user is calling the selected method properly + // later anyway. + .all(|p| table.try_obligation(p.cast(Interner)).is_some()) + } else { + // For `ItemContainerId::TraitId`, we check if `self_ty` implements the trait in + // `iterate_trait_method_candidates()`. + // For others, this function shouldn't be called. + true + } + }) +} + pub fn implements_trait( ty: &Canonical, db: &dyn HirDatabase, diff --git a/crates/hir-ty/src/tests/method_resolution.rs b/crates/hir-ty/src/tests/method_resolution.rs index 68463dc068bc..81588a7c4ffd 100644 --- a/crates/hir-ty/src/tests/method_resolution.rs +++ b/crates/hir-ty/src/tests/method_resolution.rs @@ -1790,3 +1790,46 @@ impl u16 { "#, ) } + +#[test] +fn with_impl_bounds() { + check_types( + r#" +trait Trait {} +struct Foo(T); +impl Trait for isize {} + +impl Foo { + fn foo() -> isize { 0 } + fn bar(&self) -> isize { 0 } +} + +impl Foo<()> { + fn foo() {} + fn bar(&self) {} +} + +fn f() { + let _ = Foo::::foo(); + //^isize + let _ = Foo(0isize).bar(); + //^isize + let _ = Foo::<()>::foo(); + //^() + let _ = Foo(()).bar(); + //^() + let _ = Foo::::foo(); + //^{unknown} + let _ = Foo(0usize).bar(); + //^{unknown} +} + +fn g(a: T) { + let _ = Foo::::foo(); + //^isize + let _ = Foo(a).bar(); + //^isize +} + "#, + ); +} diff --git a/crates/hir-ty/src/tests/patterns.rs b/crates/hir-ty/src/tests/patterns.rs index 94efe7bc11a8..eb04bf87783b 100644 --- a/crates/hir-ty/src/tests/patterns.rs +++ b/crates/hir-ty/src/tests/patterns.rs @@ -488,6 +488,42 @@ fn infer_adt_pattern() { ); } +#[test] +fn tuple_struct_destructured_with_self() { + check_infer( + r#" +struct Foo(usize,); +impl Foo { + fn f() { + let Self(s,) = &Foo(0,); + let Self(s,) = &mut Foo(0,); + let Self(s,) = Foo(0,); + } +} + "#, + expect![[r#" + 42..151 '{ ... }': () + 56..64 'Self(s,)': Foo + 61..62 's': &usize + 67..75 '&Foo(0,)': &Foo + 68..71 'Foo': Foo(usize) -> Foo + 68..75 'Foo(0,)': Foo + 72..73 '0': usize + 89..97 'Self(s,)': Foo + 94..95 's': &mut usize + 100..112 '&mut Foo(0,)': &mut Foo + 105..108 'Foo': Foo(usize) -> Foo + 105..112 'Foo(0,)': Foo + 109..110 '0': usize + 126..134 'Self(s,)': Foo + 131..132 's': usize + 137..140 'Foo': Foo(usize) -> Foo + 137..144 'Foo(0,)': Foo + 141..142 '0': usize + "#]], + ); +} + #[test] fn enum_variant_through_self_in_pattern() { check_infer( diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs index 93a88ab58ef8..1b5ed0603bfd 100644 --- a/crates/hir-ty/src/tests/regression.rs +++ b/crates/hir-ty/src/tests/regression.rs @@ -1648,3 +1648,20 @@ fn main() { "#]], ); } + +#[test] +fn trailing_empty_macro() { + cov_mark::check!(empty_macro_in_trailing_position_is_removed); + check_no_mismatches( + r#" +macro_rules! m2 { + ($($t:tt)*) => {$($t)*}; +} + +fn macrostmts() -> u8 { + m2! { 0 } + m2! {} +} + "#, + ); +} diff --git a/crates/hir-ty/src/tests/traits.rs b/crates/hir-ty/src/tests/traits.rs index 75802a5eb4db..0f37970e2b38 100644 --- a/crates/hir-ty/src/tests/traits.rs +++ b/crates/hir-ty/src/tests/traits.rs @@ -137,6 +137,31 @@ fn not_send() -> Box + 'static> { ); } +#[test] +fn into_future_trait() { + check_types( + r#" +//- minicore: future +struct Futurable; +impl core::future::IntoFuture for Futurable { + type Output = u64; + type IntoFuture = IntFuture; +} + +struct IntFuture; +impl core::future::Future for IntFuture { + type Output = u64; +} + +fn test() { + let r = Futurable; + let v = r.await; + v; +} //^ u64 +"#, + ); +} + #[test] fn infer_try() { check_types( @@ -1476,6 +1501,34 @@ fn test(x: Trait, y: &Trait) -> u64 { 165..172 'z.foo()': u64 "#]], ); + + check_infer_with_mismatches( + r#" +//- minicore: fn, coerce_unsized +struct S; +impl S { + fn foo(&self) {} +} +fn f(_: &Fn(S)) {} +fn main() { + f(&|number| number.foo()); +} + "#, + expect![[r#" + 31..35 'self': &S + 37..39 '{}': () + 47..48 '_': &dyn Fn(S) + 58..60 '{}': () + 71..105 '{ ...()); }': () + 77..78 'f': fn f(&dyn Fn(S)) + 77..102 'f(&|nu...foo())': () + 79..101 '&|numb....foo()': &|S| -> () + 80..101 '|numbe....foo()': |S| -> () + 81..87 'number': S + 89..95 'number': S + 89..101 'number.foo()': () + "#]], + ) } #[test] diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 8f984210e117..aa019ca48381 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -72,7 +72,7 @@ use itertools::Itertools; use nameres::diagnostics::DefDiagnosticKind; use once_cell::unsync::Lazy; use rustc_hash::FxHashSet; -use stdx::{format_to, impl_from, never}; +use stdx::{impl_from, never}; use syntax::{ ast::{self, HasAttrs as _, HasDocComments, HasName}, AstNode, AstPtr, SmolStr, SyntaxNodePtr, TextRange, T, @@ -1136,6 +1136,20 @@ impl DefWithBody { } } + fn id(&self) -> DefWithBodyId { + match self { + DefWithBody::Function(it) => it.id.into(), + DefWithBody::Static(it) => it.id.into(), + DefWithBody::Const(it) => it.id.into(), + } + } + + /// A textual representation of the HIR of this def's body for debugging purposes. + pub fn debug_hir(self, db: &dyn HirDatabase) -> String { + let body = db.body(self.id()); + body.pretty_print(db.upcast(), self.id()) + } + pub fn diagnostics(self, db: &dyn HirDatabase, acc: &mut Vec) { let krate = self.module(db).id.krate(); @@ -1470,19 +1484,6 @@ impl Function { let def_map = db.crate_def_map(loc.krate(db).into()); def_map.fn_as_proc_macro(self.id).map(|id| Macro { id: id.into() }) } - - /// A textual representation of the HIR of this function for debugging purposes. - pub fn debug_hir(self, db: &dyn HirDatabase) -> String { - let body = db.body(self.id.into()); - - let mut result = String::new(); - format_to!(result, "HIR expressions in the body of `{}`:\n", self.name(db)); - for (id, expr) in body.exprs.iter() { - format_to!(result, "{:?}: {:?}\n", id, expr); - } - - result - } } // Note: logically, this belongs to `hir_ty`, but we are not using it there yet. @@ -2777,20 +2778,32 @@ impl Type { self.ty.is_unknown() } - /// Checks that particular type `ty` implements `std::future::Future`. + /// Checks that particular type `ty` implements `std::future::IntoFuture` or + /// `std::future::Future`. /// This function is used in `.await` syntax completion. - pub fn impls_future(&self, db: &dyn HirDatabase) -> bool { - let std_future_trait = db - .lang_item(self.env.krate, SmolStr::new_inline("future_trait")) - .and_then(|it| it.as_trait()); - let std_future_trait = match std_future_trait { + pub fn impls_into_future(&self, db: &dyn HirDatabase) -> bool { + let trait_ = db + .lang_item(self.env.krate, SmolStr::new_inline("into_future")) + .and_then(|it| { + let into_future_fn = it.as_function()?; + let assoc_item = as_assoc_item(db, AssocItem::Function, into_future_fn)?; + let into_future_trait = assoc_item.containing_trait_or_trait_impl(db)?; + Some(into_future_trait.id) + }) + .or_else(|| { + let future_trait = + db.lang_item(self.env.krate, SmolStr::new_inline("future_trait"))?; + future_trait.as_trait() + }); + + let trait_ = match trait_ { Some(it) => it, None => return false, }; let canonical_ty = Canonical { value: self.ty.clone(), binders: CanonicalVarKinds::empty(Interner) }; - method_resolution::implements_trait(&canonical_ty, db, self.env.clone(), std_future_trait) + method_resolution::implements_trait(&canonical_ty, db, self.env.clone(), trait_) } /// Checks that particular type `ty` implements `std::ops::FnOnce`. diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index ae2896e19329..bd35af06e23e 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -27,6 +27,7 @@ use hir_def::{ use hir_expand::{ builtin_fn_macro::BuiltinFnLikeExpander, hygiene::Hygiene, + mod_path::path, name, name::{AsName, Name}, HirFileId, InFile, @@ -269,14 +270,35 @@ impl SourceAnalyzer { db: &dyn HirDatabase, await_expr: &ast::AwaitExpr, ) -> Option { - let ty = self.ty_of_expr(db, &await_expr.expr()?.into())?; + let mut ty = self.ty_of_expr(db, &await_expr.expr()?.into())?.clone(); - let op_fn = db + let into_future_trait = self + .resolver + .resolve_known_trait(db.upcast(), &path![core::future::IntoFuture]) + .map(Trait::from); + + if let Some(into_future_trait) = into_future_trait { + let type_ = Type::new_with_resolver(db, &self.resolver, ty.clone()); + if type_.impls_trait(db, into_future_trait, &[]) { + let items = into_future_trait.items(db); + let into_future_type = items.into_iter().find_map(|item| match item { + AssocItem::TypeAlias(alias) + if alias.name(db) == hir_expand::name![IntoFuture] => + { + Some(alias) + } + _ => None, + })?; + let future_trait = type_.normalize_trait_assoc_type(db, &[], into_future_type)?; + ty = future_trait.ty; + } + } + + let poll_fn = db .lang_item(self.resolver.krate(), hir_expand::name![poll].to_smol_str())? .as_function()?; - let substs = hir_ty::TyBuilder::subst_for_def(db, op_fn).push(ty.clone()).build(); - - Some(self.resolve_impl_method_or_trait_def(db, op_fn, &substs)) + let substs = hir_ty::TyBuilder::subst_for_def(db, poll_fn).push(ty.clone()).build(); + Some(self.resolve_impl_method_or_trait_def(db, poll_fn, &substs)) } pub(crate) fn resolve_prefix_expr( diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs index b3c4d306ac1c..897980c66504 100644 --- a/crates/ide-assists/src/handlers/extract_module.rs +++ b/crates/ide-assists/src/handlers/extract_module.rs @@ -29,7 +29,7 @@ use super::remove_unused_param::range_to_remove; // Assist: extract_module // -// Extracts a selected region as seperate module. All the references, visibility and imports are +// Extracts a selected region as separate module. All the references, visibility and imports are // resolved. // // ``` @@ -105,7 +105,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti // //- Thirdly, resolving all the imports this includes removing paths from imports // outside the module, shifting/cloning them inside new module, or shifting the imports, or making - // new import statemnts + // new import statements //We are getting item usages and record_fields together, record_fields //for change_visibility and usages for first point mentioned above in the process @@ -661,7 +661,7 @@ fn check_intersection_and_push( import_path: TextRange, ) { if import_paths_to_be_removed.len() > 0 { - // Text ranges recieved here for imports are extended to the + // Text ranges received here for imports are extended to the // next/previous comma which can cause intersections among them // and later deletion of these can cause panics similar // to reported in #11766. So to mitigate it, we diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs index d564a0540898..e26c76da1891 100644 --- a/crates/ide-assists/src/handlers/generate_function.rs +++ b/crates/ide-assists/src/handlers/generate_function.rs @@ -61,43 +61,8 @@ fn gen_fn(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { } let fn_name = &*name_ref.text(); - let target_module; - let mut adt_name = None; - - let (target, file, insert_offset) = match path.qualifier() { - Some(qualifier) => match ctx.sema.resolve_path(&qualifier) { - Some(hir::PathResolution::Def(hir::ModuleDef::Module(module))) => { - target_module = Some(module); - get_fn_target(ctx, &target_module, call.clone())? - } - Some(hir::PathResolution::Def(hir::ModuleDef::Adt(adt))) => { - if let hir::Adt::Enum(_) = adt { - // Don't suggest generating function if the name starts with an uppercase letter - if name_ref.text().starts_with(char::is_uppercase) { - return None; - } - } - - let current_module = ctx.sema.scope(call.syntax())?.module(); - let module = adt.module(ctx.sema.db); - target_module = if current_module == module { None } else { Some(module) }; - if current_module.krate() != module.krate() { - return None; - } - let (impl_, file) = get_adt_source(ctx, &adt, fn_name)?; - let (target, insert_offset) = get_method_target(ctx, &module, &impl_)?; - adt_name = if impl_.is_none() { Some(adt.name(ctx.sema.db)) } else { None }; - (target, file, insert_offset) - } - _ => { - return None; - } - }, - _ => { - target_module = None; - get_fn_target(ctx, &target_module, call.clone())? - } - }; + let TargetInfo { target_module, adt_name, target, file, insert_offset } = + fn_target_info(ctx, path, &call, fn_name)?; let function_builder = FunctionBuilder::from_call(ctx, &call, fn_name, target_module, target)?; let text_range = call.syntax().text_range(); let label = format!("Generate {} function", function_builder.fn_name); @@ -113,6 +78,57 @@ fn gen_fn(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { ) } +struct TargetInfo { + target_module: Option, + adt_name: Option, + target: GeneratedFunctionTarget, + file: FileId, + insert_offset: TextSize, +} + +impl TargetInfo { + fn new( + target_module: Option, + adt_name: Option, + target: GeneratedFunctionTarget, + file: FileId, + insert_offset: TextSize, + ) -> Self { + Self { target_module, adt_name, target, file, insert_offset } + } +} + +fn fn_target_info( + ctx: &AssistContext<'_>, + path: ast::Path, + call: &CallExpr, + fn_name: &str, +) -> Option { + match path.qualifier() { + Some(qualifier) => match ctx.sema.resolve_path(&qualifier) { + Some(hir::PathResolution::Def(hir::ModuleDef::Module(module))) => { + get_fn_target_info(ctx, &Some(module), call.clone()) + } + Some(hir::PathResolution::Def(hir::ModuleDef::Adt(adt))) => { + if let hir::Adt::Enum(_) = adt { + // Don't suggest generating function if the name starts with an uppercase letter + if fn_name.starts_with(char::is_uppercase) { + return None; + } + } + + assoc_fn_target_info(ctx, call, adt, fn_name) + } + Some(hir::PathResolution::SelfType(impl_)) => { + let adt = impl_.self_ty(ctx.db()).as_adt()?; + assoc_fn_target_info(ctx, call, adt, fn_name) + } + _ => None, + }, + _ => get_fn_target_info(ctx, &None, call.clone()), + } +} + fn gen_method(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { let call: ast::MethodCallExpr = ctx.find_node_at_offset()?; if ctx.sema.resolve_method_call(&call).is_some() { @@ -366,6 +382,15 @@ fn make_return_type( (ret_type, should_focus_return_type) } +fn get_fn_target_info( + ctx: &AssistContext<'_>, + target_module: &Option, + call: CallExpr, +) -> Option { + let (target, file, insert_offset) = get_fn_target(ctx, target_module, call)?; + Some(TargetInfo::new(*target_module, None, target, file, insert_offset)) +} + fn get_fn_target( ctx: &AssistContext<'_>, target_module: &Option, @@ -399,6 +424,24 @@ fn get_method_target( Some((target.clone(), get_insert_offset(&target))) } +fn assoc_fn_target_info( + ctx: &AssistContext<'_>, + call: &CallExpr, + adt: hir::Adt, + fn_name: &str, +) -> Option { + let current_module = ctx.sema.scope(call.syntax())?.module(); + let module = adt.module(ctx.sema.db); + let target_module = if current_module == module { None } else { Some(module) }; + if current_module.krate() != module.krate() { + return None; + } + let (impl_, file) = get_adt_source(ctx, &adt, fn_name)?; + let (target, insert_offset) = get_method_target(ctx, &module, &impl_)?; + let adt_name = if impl_.is_none() { Some(adt.name(ctx.sema.db)) } else { None }; + Some(TargetInfo::new(target_module, adt_name, target, file, insert_offset)) +} + fn get_insert_offset(target: &GeneratedFunctionTarget) -> TextSize { match &target { GeneratedFunctionTarget::BehindItem(it) => it.text_range().end(), @@ -1633,6 +1676,33 @@ fn bar() ${0:-> _} { ) } + #[test] + fn create_static_method_within_an_impl_with_self_syntax() { + check_assist( + generate_function, + r" +struct S; +impl S { + fn foo(&self) { + Self::bar$0(); + } +} +", + r" +struct S; +impl S { + fn foo(&self) { + Self::bar(); + } + + fn bar() ${0:-> _} { + todo!() + } +} +", + ) + } + #[test] fn no_panic_on_invalid_global_path() { check_assist( diff --git a/crates/ide-assists/src/handlers/inline_call.rs b/crates/ide-assists/src/handlers/inline_call.rs index 80d3b9255936..b5d092e39b02 100644 --- a/crates/ide-assists/src/handlers/inline_call.rs +++ b/crates/ide-assists/src/handlers/inline_call.rs @@ -13,7 +13,7 @@ use ide_db::{ use itertools::{izip, Itertools}; use syntax::{ ast::{self, edit_in_place::Indent, HasArgList, PathExpr}, - ted, AstNode, + ted, AstNode, NodeOrToken, SyntaxKind, }; use crate::{ @@ -311,6 +311,13 @@ fn inline( } else { fn_body.clone_for_update() }; + if let Some(t) = body.syntax().ancestors().find_map(ast::Impl::cast).and_then(|i| i.self_ty()) { + body.syntax() + .descendants_with_tokens() + .filter_map(NodeOrToken::into_token) + .filter(|tok| tok.kind() == SyntaxKind::SELF_TYPE_KW) + .for_each(|tok| ted::replace(tok, t.syntax())); + } let usages_for_locals = |local| { Definition::Local(local) .usages(sema) @@ -345,6 +352,7 @@ fn inline( } }) .collect(); + if function.self_param(sema.db).is_some() { let this = || make::name_ref("this").syntax().clone_for_update(); if let Some(self_local) = params[0].2.as_local(sema.db) { @@ -1188,6 +1196,31 @@ fn bar() -> u32 { x } } +"#, + ) + } + + #[test] + fn inline_call_with_self_type() { + check_assist( + inline_call, + r#" +struct A(u32); +impl A { + fn f() -> Self { Self(114514) } +} +fn main() { + A::f$0(); +} +"#, + r#" +struct A(u32); +impl A { + fn f() -> Self { Self(114514) } +} +fn main() { + A(114514); +} "#, ) } diff --git a/crates/ide-assists/src/handlers/inline_type_alias.rs b/crates/ide-assists/src/handlers/inline_type_alias.rs index 054663a06a11..9adf6381c1cb 100644 --- a/crates/ide-assists/src/handlers/inline_type_alias.rs +++ b/crates/ide-assists/src/handlers/inline_type_alias.rs @@ -1,9 +1,9 @@ // Some ideas for future improvements: // - Support replacing aliases which are used in expressions, e.g. `A::new()`. -// - "inline_alias_to_users" assist #10881. // - Remove unused aliases if there are no longer any users, see inline_call.rs. use hir::{HasSource, PathResolution}; +use ide_db::{defs::Definition, search::FileReference}; use itertools::Itertools; use std::collections::HashMap; use syntax::{ @@ -16,6 +16,78 @@ use crate::{ AssistId, AssistKind, }; +// Assist: inline_type_alias_uses +// +// Inline a type alias into all of its uses where possible. +// +// ``` +// type $0A = i32; +// fn id(x: A) -> A { +// x +// }; +// fn foo() { +// let _: A = 3; +// } +// ``` +// -> +// ``` +// type A = i32; +// fn id(x: i32) -> i32 { +// x +// }; +// fn foo() { +// let _: i32 = 3; +// } +pub(crate) fn inline_type_alias_uses(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let name = ctx.find_node_at_offset::()?; + let ast_alias = name.syntax().parent().and_then(ast::TypeAlias::cast)?; + + let hir_alias = ctx.sema.to_def(&ast_alias)?; + let concrete_type = ast_alias.ty()?; + + let usages = Definition::TypeAlias(hir_alias).usages(&ctx.sema); + if !usages.at_least_one() { + return None; + } + + // until this is ok + + acc.add( + AssistId("inline_type_alias_uses", AssistKind::RefactorInline), + "Inline type alias into all uses", + name.syntax().text_range(), + |builder| { + let usages = usages.all(); + + let mut inline_refs_for_file = |file_id, refs: Vec| { + builder.edit_file(file_id); + + let path_types: Vec = refs + .into_iter() + .filter_map(|file_ref| match file_ref.name { + ast::NameLike::NameRef(path_type) => { + path_type.syntax().ancestors().nth(3).and_then(ast::PathType::cast) + } + _ => None, + }) + .collect(); + + for (target, replacement) in path_types.into_iter().filter_map(|path_type| { + let replacement = inline(&ast_alias, &path_type)?.to_text(&concrete_type); + let target = path_type.syntax().text_range(); + Some((target, replacement)) + }) { + builder.replace(target, replacement); + } + }; + + for (file_id, refs) in usages.into_iter() { + inline_refs_for_file(file_id, refs); + } + }, + ) +} + // Assist: inline_type_alias // // Replace a type alias with its concrete type. @@ -36,11 +108,6 @@ use crate::{ // } // ``` pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - enum Replacement { - Generic { lifetime_map: LifetimeMap, const_and_type_map: ConstAndTypeMap }, - Plain, - } - let alias_instance = ctx.find_node_at_offset::()?; let concrete_type; let replacement; @@ -59,23 +126,7 @@ pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> O _ => { let alias = get_type_alias(&ctx, &alias_instance)?; concrete_type = alias.ty()?; - - replacement = if let Some(alias_generics) = alias.generic_param_list() { - if alias_generics.generic_params().next().is_none() { - cov_mark::hit!(no_generics_params); - return None; - } - - let instance_args = - alias_instance.syntax().descendants().find_map(ast::GenericArgList::cast); - - Replacement::Generic { - lifetime_map: LifetimeMap::new(&instance_args, &alias_generics)?, - const_and_type_map: ConstAndTypeMap::new(&instance_args, &alias_generics)?, - } - } else { - Replacement::Plain - }; + replacement = inline(&alias, &alias_instance)?; } } @@ -85,19 +136,45 @@ pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> O AssistId("inline_type_alias", AssistKind::RefactorInline), "Inline type alias", target, - |builder| { - let replacement_text = match replacement { - Replacement::Generic { lifetime_map, const_and_type_map } => { - create_replacement(&lifetime_map, &const_and_type_map, &concrete_type) - } - Replacement::Plain => concrete_type.to_string(), - }; - - builder.replace(target, replacement_text); - }, + |builder| builder.replace(target, replacement.to_text(&concrete_type)), ) } +impl Replacement { + fn to_text(&self, concrete_type: &ast::Type) -> String { + match self { + Replacement::Generic { lifetime_map, const_and_type_map } => { + create_replacement(&lifetime_map, &const_and_type_map, &concrete_type) + } + Replacement::Plain => concrete_type.to_string(), + } + } +} + +enum Replacement { + Generic { lifetime_map: LifetimeMap, const_and_type_map: ConstAndTypeMap }, + Plain, +} + +fn inline(alias_def: &ast::TypeAlias, alias_instance: &ast::PathType) -> Option { + let repl = if let Some(alias_generics) = alias_def.generic_param_list() { + if alias_generics.generic_params().next().is_none() { + cov_mark::hit!(no_generics_params); + return None; + } + let instance_args = + alias_instance.syntax().descendants().find_map(ast::GenericArgList::cast); + + Replacement::Generic { + lifetime_map: LifetimeMap::new(&instance_args, &alias_generics)?, + const_and_type_map: ConstAndTypeMap::new(&instance_args, &alias_generics)?, + } + } else { + Replacement::Plain + }; + Some(repl) +} + struct LifetimeMap(HashMap); impl LifetimeMap { @@ -835,4 +912,90 @@ trait Tr { "#, ); } + + mod inline_type_alias_uses { + use crate::{handlers::inline_type_alias::inline_type_alias_uses, tests::check_assist}; + + #[test] + fn inline_uses() { + check_assist( + inline_type_alias_uses, + r#" +type $0A = u32; + +fn foo() { + let _: A = 3; + let _: A = 4; +} +"#, + r#" +type A = u32; + +fn foo() { + let _: u32 = 3; + let _: u32 = 4; +} +"#, + ); + } + + #[test] + fn inline_uses_across_files() { + check_assist( + inline_type_alias_uses, + r#" +//- /lib.rs +mod foo; +type $0T = Vec; +fn f() -> T<&str> { + vec!["hello"] +} + +//- /foo.rs +use super::T; +fn foo() { + let _: T = Vec::new(); +} +"#, + r#" +//- /lib.rs +mod foo; +type T = Vec; +fn f() -> Vec<&str> { + vec!["hello"] +} + +//- /foo.rs +use super::T; +fn foo() { + let _: Vec = Vec::new(); +} +"#, + ); + } + + #[test] + fn inline_uses_across_files_2() { + check_assist( + inline_type_alias_uses, + r#" +//- /lib.rs +mod foo; +type $0I = i32; + +//- /foo.rs +use super::I; +fn foo() { + let _: I = 0; +} +"#, + r#" +use super::I; +fn foo() { + let _: i32 = 0; +} +"#, + ); + } + } } diff --git a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs index 6112e09455a4..5242f3b5100c 100644 --- a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs +++ b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs @@ -88,7 +88,7 @@ pub(crate) fn replace_turbofish_with_explicit_type( }, ); } else if let Some(InferType(t)) = let_stmt.ty() { - // If there's a type inferrence underscore, we can offer to replace it with the type in + // If there's a type inference underscore, we can offer to replace it with the type in // the turbofish. // let x: _ = fn::<...>(); let underscore_range = t.syntax().text_range(); diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index fe87aa15fcf2..7fb35143fa2f 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -243,6 +243,7 @@ mod handlers { inline_call::inline_into_callers, inline_local_variable::inline_local_variable, inline_type_alias::inline_type_alias, + inline_type_alias::inline_type_alias_uses, introduce_named_generic::introduce_named_generic, introduce_named_lifetime::introduce_named_lifetime, invert_if::invert_if, diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 6eaab48a32ba..22319f36134f 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -1356,6 +1356,31 @@ fn main() { ) } +#[test] +fn doctest_inline_type_alias_uses() { + check_doc_test( + "inline_type_alias_uses", + r#####" +type $0A = i32; +fn id(x: A) -> A { + x +}; +fn foo() { + let _: A = 3; +} +"#####, + r#####" +type A = i32; +fn id(x: i32) -> i32 { + x +}; +fn foo() { + let _: i32 = 3; +} +"#####, + ) +} + #[test] fn doctest_introduce_named_generic() { check_doc_test( diff --git a/crates/ide-assists/src/utils/suggest_name.rs b/crates/ide-assists/src/utils/suggest_name.rs index 779cdbc93c54..c521a10fccfc 100644 --- a/crates/ide-assists/src/utils/suggest_name.rs +++ b/crates/ide-assists/src/utils/suggest_name.rs @@ -55,6 +55,7 @@ const USELESS_METHODS: &[&str] = &[ "iter", "into_iter", "iter_mut", + "into_future", ]; pub(crate) fn for_generic_parameter(ty: &ast::ImplTraitType) -> SmolStr { @@ -75,7 +76,7 @@ pub(crate) fn for_generic_parameter(ty: &ast::ImplTraitType) -> SmolStr { /// In current implementation, the function tries to get the name from /// the following sources: /// -/// * if expr is an argument to function/method, use paramter name +/// * if expr is an argument to function/method, use parameter name /// * if expr is a function/method call, use function name /// * expression type name if it exists (E.g. `()`, `fn() -> ()` or `!` do not have names) /// * fallback: `var_name` @@ -85,7 +86,7 @@ pub(crate) fn for_generic_parameter(ty: &ast::ImplTraitType) -> SmolStr { /// Currently it sticks to the first name found. // FIXME: Microoptimize and return a `SmolStr` here. pub(crate) fn for_variable(expr: &ast::Expr, sema: &Semantics<'_, RootDatabase>) -> String { - // `from_param` does not benifit from stripping + // `from_param` does not benefit from stripping // it need the largest context possible // so we check firstmost if let Some(name) = from_param(expr, sema) { diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index cf40ca489c00..02004ff7b686 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -19,7 +19,7 @@ pub(crate) fn complete_dot( }; // Suggest .await syntax for types that implement Future trait - if receiver_ty.impls_future(ctx.db) { + if receiver_ty.impls_into_future(ctx.db) { let mut item = CompletionItem::new(CompletionItemKind::Keyword, ctx.source_range(), "await"); item.detail("expr.await"); diff --git a/crates/ide-completion/src/completions/keyword.rs b/crates/ide-completion/src/completions/keyword.rs index 3989a451bde4..1d03c8cc5ca6 100644 --- a/crates/ide-completion/src/completions/keyword.rs +++ b/crates/ide-completion/src/completions/keyword.rs @@ -75,16 +75,17 @@ impl Future for A {} fn foo(a: A) { a.$0 } "#, expect![[r#" - kw await expr.await - sn box Box::new(expr) - sn call function(expr) - sn dbg dbg!(expr) - sn dbgr dbg!(&expr) - sn let let - sn letm let mut - sn match match expr {} - sn ref &expr - sn refm &mut expr + kw await expr.await + me into_future() (as IntoFuture) fn(self) -> ::IntoFuture + sn box Box::new(expr) + sn call function(expr) + sn dbg dbg!(expr) + sn dbgr dbg!(&expr) + sn let let + sn letm let mut + sn match match expr {} + sn ref &expr + sn refm &mut expr "#]], ); @@ -98,18 +99,45 @@ fn foo() { } "#, expect![[r#" - kw await expr.await - sn box Box::new(expr) - sn call function(expr) - sn dbg dbg!(expr) - sn dbgr dbg!(&expr) - sn let let - sn letm let mut - sn match match expr {} - sn ref &expr - sn refm &mut expr + kw await expr.await + me into_future() (use core::future::IntoFuture) fn(self) -> ::IntoFuture + sn box Box::new(expr) + sn call function(expr) + sn dbg dbg!(expr) + sn dbgr dbg!(&expr) + sn let let + sn letm let mut + sn match match expr {} + sn ref &expr + sn refm &mut expr "#]], - ) + ); + } + + #[test] + fn test_completion_await_impls_into_future() { + check( + r#" +//- minicore: future +use core::future::*; +struct A {} +impl IntoFuture for A {} +fn foo(a: A) { a.$0 } +"#, + expect![[r#" + kw await expr.await + me into_future() (as IntoFuture) fn(self) -> ::IntoFuture + sn box Box::new(expr) + sn call function(expr) + sn dbg dbg!(expr) + sn dbgr dbg!(&expr) + sn let let + sn letm let mut + sn match match expr {} + sn ref &expr + sn refm &mut expr + "#]], + ); } #[test] diff --git a/crates/ide-completion/src/completions/postfix/format_like.rs b/crates/ide-completion/src/completions/postfix/format_like.rs index 6b94347e0ad0..b273a4cb53ba 100644 --- a/crates/ide-completion/src/completions/postfix/format_like.rs +++ b/crates/ide-completion/src/completions/postfix/format_like.rs @@ -173,7 +173,7 @@ impl FormatStrParser { } } (State::Expr, ':') if chars.peek().copied() == Some(':') => { - // path seperator + // path separator current_expr.push_str("::"); chars.next(); } @@ -185,7 +185,7 @@ impl FormatStrParser { current_expr = String::new(); self.state = State::FormatOpts; } else { - // We're inside of braced expression, assume that it's a struct field name/value delimeter. + // We're inside of braced expression, assume that it's a struct field name/value delimiter. current_expr.push(chr); } } diff --git a/crates/ide-completion/src/completions/record.rs b/crates/ide-completion/src/completions/record.rs index bfb98b9f2777..5d96fbd30a81 100644 --- a/crates/ide-completion/src/completions/record.rs +++ b/crates/ide-completion/src/completions/record.rs @@ -129,7 +129,7 @@ mod tests { #[test] fn literal_struct_completion_edit() { check_edit( - "FooDesc {…}", + "FooDesc{}", r#" struct FooDesc { pub bar: bool } @@ -154,7 +154,7 @@ fn baz() { #[test] fn literal_struct_impl_self_completion() { check_edit( - "Self {…}", + "Self{}", r#" struct Foo { bar: u64, @@ -180,7 +180,7 @@ impl Foo { ); check_edit( - "Self(…)", + "Self()", r#" mod submod { pub struct Foo(pub u64); @@ -209,7 +209,7 @@ impl submod::Foo { #[test] fn literal_struct_completion_from_sub_modules() { check_edit( - "submod::Struct {…}", + "submod::Struct{}", r#" mod submod { pub struct Struct { @@ -238,7 +238,7 @@ fn f() -> submod::Struct { #[test] fn literal_struct_complexion_module() { check_edit( - "FooDesc {…}", + "FooDesc{}", r#" mod _69latrick { pub struct FooDesc { pub six: bool, pub neuf: Vec, pub bar: bool } diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 693007ca3071..a2cf6d68e5b3 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -565,6 +565,7 @@ fn main() { Foo::Fo$0 } kind: SymbolKind( Variant, ), + lookup: "Foo{}", detail: "Foo { x: i32, y: i32 }", }, ] @@ -591,6 +592,7 @@ fn main() { Foo::Fo$0 } kind: SymbolKind( Variant, ), + lookup: "Foo()", detail: "Foo(i32, i32)", }, ] @@ -707,7 +709,7 @@ fn main() { let _: m::Spam = S$0 } kind: SymbolKind( Variant, ), - lookup: "Spam::Bar(…)", + lookup: "Spam::Bar()", detail: "m::Spam::Bar(i32)", relevance: CompletionRelevance { exact_name_match: false, diff --git a/crates/ide-completion/src/render/literal.rs b/crates/ide-completion/src/render/literal.rs index 707dea206be5..af9c88a7e0a6 100644 --- a/crates/ide-completion/src/render/literal.rs +++ b/crates/ide-completion/src/render/literal.rs @@ -10,8 +10,8 @@ use crate::{ render::{ compute_ref_match, compute_type_match, variant::{ - format_literal_label, render_record_lit, render_tuple_lit, visible_fields, - RenderedLiteral, + format_literal_label, format_literal_lookup, render_record_lit, render_tuple_lit, + visible_fields, RenderedLiteral, }, RenderContext, }, @@ -97,13 +97,20 @@ fn render( if !should_add_parens { kind = StructKind::Unit; } + let label = format_literal_label(&qualified_name, kind); + let lookup = if qualified { + format_literal_lookup(&short_qualified_name.to_string(), kind) + } else { + format_literal_lookup(&qualified_name, kind) + }; let mut item = CompletionItem::new( CompletionItemKind::SymbolKind(thing.symbol_kind()), ctx.source_range(), - format_literal_label(&qualified_name, kind), + label, ); + item.lookup_by(lookup); item.detail(rendered.detail); match snippet_cap { @@ -111,9 +118,6 @@ fn render( None => item.insert_text(rendered.literal), }; - if qualified { - item.lookup_by(format_literal_label(&short_qualified_name.to_string(), kind)); - } item.set_documentation(thing.docs(db)).set_deprecated(thing.is_deprecated(&ctx)); let ty = thing.ty(db); diff --git a/crates/ide-completion/src/render/pattern.rs b/crates/ide-completion/src/render/pattern.rs index 1c1299e33b67..c845ff21aaba 100644 --- a/crates/ide-completion/src/render/pattern.rs +++ b/crates/ide-completion/src/render/pattern.rs @@ -8,7 +8,7 @@ use syntax::SmolStr; use crate::{ context::{ParamContext, ParamKind, PathCompletionCtx, PatternContext}, render::{ - variant::{format_literal_label, visible_fields}, + variant::{format_literal_label, format_literal_lookup, visible_fields}, RenderContext, }, CompletionItem, CompletionItemKind, @@ -34,9 +34,10 @@ pub(crate) fn render_struct_pat( let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let kind = strukt.kind(ctx.db()); let label = format_literal_label(name.as_str(), kind); + let lookup = format_literal_lookup(name.as_str(), kind); let pat = render_pat(&ctx, pattern_ctx, &escaped_name, kind, &visible_fields, fields_omitted)?; - Some(build_completion(ctx, label, pat, strukt)) + Some(build_completion(ctx, label, lookup, pat, strukt)) } pub(crate) fn render_variant_pat( @@ -60,11 +61,14 @@ pub(crate) fn render_variant_pat( } }; - let (label, pat) = match path_ctx { - Some(PathCompletionCtx { has_call_parens: true, .. }) => (name, escaped_name.to_string()), + let (label, lookup, pat) = match path_ctx { + Some(PathCompletionCtx { has_call_parens: true, .. }) => { + (name.clone(), name, escaped_name.to_string()) + } _ => { let kind = variant.kind(ctx.db()); let label = format_literal_label(name.as_str(), kind); + let lookup = format_literal_lookup(name.as_str(), kind); let pat = render_pat( &ctx, pattern_ctx, @@ -73,16 +77,17 @@ pub(crate) fn render_variant_pat( &visible_fields, fields_omitted, )?; - (label, pat) + (label, lookup, pat) } }; - Some(build_completion(ctx, label, pat, variant)) + Some(build_completion(ctx, label, lookup, pat, variant)) } fn build_completion( ctx: RenderContext<'_>, label: SmolStr, + lookup: SmolStr, pat: String, def: impl HasAttrs + Copy, ) -> CompletionItem { @@ -90,6 +95,7 @@ fn build_completion( item.set_documentation(ctx.docs(def)) .set_deprecated(ctx.is_deprecated(def)) .detail(&pat) + .lookup_by(lookup) .set_relevance(ctx.completion_relevance()); match ctx.snippet_cap() { Some(snippet_cap) => item.insert_snippet(snippet_cap, pat), diff --git a/crates/ide-completion/src/render/union_literal.rs b/crates/ide-completion/src/render/union_literal.rs index bb32330f276d..54e97dd57ba8 100644 --- a/crates/ide-completion/src/render/union_literal.rs +++ b/crates/ide-completion/src/render/union_literal.rs @@ -6,7 +6,7 @@ use itertools::Itertools; use crate::{ render::{ - variant::{format_literal_label, visible_fields}, + variant::{format_literal_label, format_literal_lookup, visible_fields}, RenderContext, }, CompletionItem, CompletionItemKind, @@ -24,13 +24,16 @@ pub(crate) fn render_union_literal( Some(p) => (p.unescaped().to_string(), p.to_string()), None => (name.unescaped().to_string(), name.to_string()), }; - + let label = format_literal_label(&name.to_smol_str(), StructKind::Record); + let lookup = format_literal_lookup(&name.to_smol_str(), StructKind::Record); let mut item = CompletionItem::new( CompletionItemKind::SymbolKind(SymbolKind::Union), ctx.source_range(), - format_literal_label(&name.to_smol_str(), StructKind::Record), + label, ); + item.lookup_by(lookup); + let fields = un.fields(ctx.db()); let (fields, fields_omitted) = visible_fields(ctx.completion, &fields, un)?; diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs index 664845330eb8..24e6abdc9ad6 100644 --- a/crates/ide-completion/src/render/variant.rs +++ b/crates/ide-completion/src/render/variant.rs @@ -94,3 +94,12 @@ pub(crate) fn format_literal_label(name: &str, kind: StructKind) -> SmolStr { StructKind::Unit => name.into(), } } + +/// Format a struct, etc. literal option for lookup used in completions filtering. +pub(crate) fn format_literal_lookup(name: &str, kind: StructKind) -> SmolStr { + match kind { + StructKind::Tuple => SmolStr::from_iter([name, "()"]), + StructKind::Record => SmolStr::from_iter([name, "{}"]), + StructKind::Unit => name.into(), + } +} diff --git a/crates/ide-completion/src/tests/flyimport.rs b/crates/ide-completion/src/tests/flyimport.rs index 0bba7f2459ca..a63ef006875b 100644 --- a/crates/ide-completion/src/tests/flyimport.rs +++ b/crates/ide-completion/src/tests/flyimport.rs @@ -159,7 +159,7 @@ pub mod some_module { pub struct ThiiiiiirdStruct; // contains all letters from the query, but not in the beginning, displayed second pub struct AfterThirdStruct; - // contains all letters from the query in the begginning, displayed first + // contains all letters from the query in the beginning, displayed first pub struct ThirdStruct; } diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs index 30ddbe2dc6f6..85c4dbd6625d 100644 --- a/crates/ide-completion/src/tests/pattern.rs +++ b/crates/ide-completion/src/tests/pattern.rs @@ -467,7 +467,7 @@ fn foo() { fn completes_enum_variant_pat() { cov_mark::check!(enum_variant_pattern_path); check_edit( - "RecordVariant {…}", + "RecordVariant{}", r#" enum Enum { RecordVariant { field: u32 } diff --git a/crates/ide-db/src/apply_change.rs b/crates/ide-db/src/apply_change.rs index f8134c552f75..b1ee9b58d5ba 100644 --- a/crates/ide-db/src/apply_change.rs +++ b/crates/ide-db/src/apply_change.rs @@ -20,7 +20,7 @@ impl RootDatabase { pub fn apply_change(&mut self, change: Change) { let _p = profile::span("RootDatabase::apply_change"); self.request_cancellation(); - tracing::info!("apply_change {:?}", change); + tracing::trace!("apply_change {:?}", change); if let Some(roots) = &change.roots { let mut local_roots = FxHashSet::default(); let mut library_roots = FxHashSet::default(); diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index 517fe3f246d0..49b81265ea5b 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -82,7 +82,7 @@ impl Definition { } /// Textual range of the identifier which will change when renaming this - /// `Definition`. Note that some definitions, like buitin types, can't be + /// `Definition`. Note that some definitions, like builtin types, can't be /// renamed. pub fn range_for_rename(self, sema: &Semantics<'_, RootDatabase>) -> Option { let res = match self { diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index 9eaabeec7a4e..2f4aa113170a 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -402,7 +402,9 @@ impl<'a> FindUsages<'a> { .or_else(|| ty.as_builtin().map(|builtin| builtin.name())) }) }; - self.def.name(sema.db).or_else(self_kw_refs).map(|it| it.to_smol_str()) + // We need to unescape the name in case it is written without "r#" in earlier + // editions of Rust where it isn't a keyword. + self.def.name(sema.db).or_else(self_kw_refs).map(|it| it.unescaped().to_smol_str()) } }; let name = match &name { diff --git a/crates/ide-diagnostics/src/handlers/missing_match_arms.rs b/crates/ide-diagnostics/src/handlers/missing_match_arms.rs index 9e66fbfb7522..5fcaf405b14b 100644 --- a/crates/ide-diagnostics/src/handlers/missing_match_arms.rs +++ b/crates/ide-diagnostics/src/handlers/missing_match_arms.rs @@ -750,7 +750,7 @@ fn main() { enum Foo { A } fn main() { // FIXME: this should not bail out but current behavior is such as the old algorithm. - // ExprValidator::validate_match(..) checks types of top level patterns incorrecly. + // ExprValidator::validate_match(..) checks types of top level patterns incorrectly. match Foo::A { ref _x => {} Foo::A => {} diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index d6cd5783f05e..36a648fe4a8e 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -1664,6 +1664,40 @@ fn f() { ); } + #[test] + fn goto_await_into_future_poll() { + check( + r#" +//- minicore: future + +struct Futurable; + +impl core::future::IntoFuture for Futurable { + type IntoFuture = MyFut; +} + +struct MyFut; + +impl core::future::Future for MyFut { + type Output = (); + + fn poll( + //^^^^ + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll + { + () + } +} + +fn f() { + Futurable.await$0; +} +"#, + ); + } + #[test] fn goto_try_op() { check( diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 3ada181f1ed2..3687b597fc64 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -27,6 +27,7 @@ use crate::{ pub struct HoverConfig { pub links_in_hover: bool, pub documentation: Option, + pub keywords: bool, } impl HoverConfig { @@ -119,6 +120,8 @@ pub(crate) fn hover( } let in_attr = matches!(original_token.parent().and_then(ast::TokenTree::cast), Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind()))); + // prefer descending the same token kind in attribute expansions, in normal macros text + // equivalency is more important let descended = if in_attr { [sema.descend_into_macros_with_kind_preference(original_token.clone())].into() } else { diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index 6c50a4e6adc0..d52adaee535f 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -230,7 +230,7 @@ pub(super) fn keyword( config: &HoverConfig, token: &SyntaxToken, ) -> Option { - if !token.kind().is_keyword() || !config.documentation.is_some() { + if !token.kind().is_keyword() || !config.documentation.is_some() || !config.keywords { return None; } let parent = token.parent()?; diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index c6274264b8f1..685eb4521ebd 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -8,7 +8,11 @@ fn check_hover_no_result(ra_fixture: &str) { let (analysis, position) = fixture::position(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: true, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: true, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, FileRange { file_id: position.file_id, range: TextRange::empty(position.offset) }, ) .unwrap(); @@ -20,7 +24,11 @@ fn check(ra_fixture: &str, expect: Expect) { let (analysis, position) = fixture::position(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: true, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: true, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, FileRange { file_id: position.file_id, range: TextRange::empty(position.offset) }, ) .unwrap() @@ -37,7 +45,11 @@ fn check_hover_no_links(ra_fixture: &str, expect: Expect) { let (analysis, position) = fixture::position(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: false, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: false, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, FileRange { file_id: position.file_id, range: TextRange::empty(position.offset) }, ) .unwrap() @@ -54,7 +66,11 @@ fn check_hover_no_markdown(ra_fixture: &str, expect: Expect) { let (analysis, position) = fixture::position(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: true, documentation: Some(HoverDocFormat::PlainText) }, + &HoverConfig { + links_in_hover: true, + documentation: Some(HoverDocFormat::PlainText), + keywords: true, + }, FileRange { file_id: position.file_id, range: TextRange::empty(position.offset) }, ) .unwrap() @@ -71,7 +87,11 @@ fn check_actions(ra_fixture: &str, expect: Expect) { let (analysis, file_id, position) = fixture::range_or_position(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: true, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: true, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, FileRange { file_id, range: position.range_or_empty() }, ) .unwrap() @@ -83,7 +103,11 @@ fn check_hover_range(ra_fixture: &str, expect: Expect) { let (analysis, range) = fixture::range(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: false, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: false, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, range, ) .unwrap() @@ -95,7 +119,11 @@ fn check_hover_range_no_results(ra_fixture: &str) { let (analysis, range) = fixture::range(ra_fixture); let hover = analysis .hover( - &HoverConfig { links_in_hover: false, documentation: Some(HoverDocFormat::Markdown) }, + &HoverConfig { + links_in_hover: false, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }, range, ) .unwrap(); diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index cc79ee55b7da..9e5eb909508f 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -130,8 +130,11 @@ impl StaticIndex<'_> { syntax::NodeOrToken::Node(_) => None, syntax::NodeOrToken::Token(x) => Some(x), }); - let hover_config = - HoverConfig { links_in_hover: true, documentation: Some(HoverDocFormat::Markdown) }; + let hover_config = HoverConfig { + links_in_hover: true, + documentation: Some(HoverDocFormat::Markdown), + keywords: true, + }; let tokens = tokens.filter(|token| { matches!( token.kind(), diff --git a/crates/ide/src/view_hir.rs b/crates/ide/src/view_hir.rs index bf0835ed7e0d..d2bbbf6d26ab 100644 --- a/crates/ide/src/view_hir.rs +++ b/crates/ide/src/view_hir.rs @@ -1,4 +1,4 @@ -use hir::{Function, Semantics}; +use hir::{DefWithBody, Semantics}; use ide_db::base_db::FilePosition; use ide_db::RootDatabase; use syntax::{algo::find_node_at_offset, ast, AstNode}; @@ -19,8 +19,12 @@ fn body_hir(db: &RootDatabase, position: FilePosition) -> Option { let sema = Semantics::new(db); let source_file = sema.parse(position.file_id); - let function = find_node_at_offset::(source_file.syntax(), position.offset)?; - - let function: Function = sema.to_def(&function)?; - Some(function.debug_hir(db)) + let item = find_node_at_offset::(source_file.syntax(), position.offset)?; + let def: DefWithBody = match item { + ast::Item::Fn(it) => sema.to_def(&it)?.into(), + ast::Item::Const(it) => sema.to_def(&it)?.into(), + ast::Item::Static(it) => sema.to_def(&it)?.into(), + _ => return None, + }; + Some(def.debug_hir(db)) } diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index 5020e9abaf31..c1aa14d6b7e7 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -321,7 +321,7 @@ struct MatchState<'t> { /// The KleeneOp of this sequence if we are in a repetition. sep_kind: Option, - /// Number of tokens of seperator parsed + /// Number of tokens of separator parsed sep_parsed: Option, /// Matched meta variables bindings diff --git a/crates/project-model/src/lib.rs b/crates/project-model/src/lib.rs index e3f83084ac8a..b81b7432f655 100644 --- a/crates/project-model/src/lib.rs +++ b/crates/project-model/src/lib.rs @@ -3,7 +3,7 @@ //! //! Pure model is represented by the [`base_db::CrateGraph`] from another crate. //! -//! In this crate, we are conserned with "real world" project models. +//! In this crate, we are concerned with "real world" project models. //! //! Specifically, here we have a representation for a Cargo project //! ([`CargoWorkspace`]) and for manually specified layout ([`ProjectJson`]). diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index daabb299f76c..8d6f50f5587c 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -770,7 +770,7 @@ fn handle_rustc_crates( queue.push_back(root_pkg); while let Some(pkg) = queue.pop_front() { // Don't duplicate packages if they are dependended on a diamond pattern - // N.B. if this line is ommitted, we try to analyse over 4_800_000 crates + // N.B. if this line is omitted, we try to analyse over 4_800_000 crates // which is not ideal if rustc_pkg_crates.contains_key(&pkg) { continue; diff --git a/crates/rust-analyzer/src/bin/logger.rs b/crates/rust-analyzer/src/bin/logger.rs index 0b69f75bc0db..298814af5a46 100644 --- a/crates/rust-analyzer/src/bin/logger.rs +++ b/crates/rust-analyzer/src/bin/logger.rs @@ -52,7 +52,7 @@ impl Logger { // merge chalk filter to our main filter (from RA_LOG env). // // The acceptable syntax of CHALK_DEBUG is `target[span{field=value}]=level`. - // As the value should only affect chalk crates, we'd better mannually + // As the value should only affect chalk crates, we'd better manually // specify the target. And for simplicity, CHALK_DEBUG only accept the value // that specify level. let chalk_level_dir = std::env::var("CHALK_DEBUG") diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 1629c1dd328a..6649f42b4ef9 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -45,7 +45,8 @@ mod patch_old_style; // - foo_command = overrides the subcommand, foo_overrideCommand allows full overwriting, extra args only applies for foo_command // Defines the server-side configuration of the rust-analyzer. We generate -// *parts* of VS Code's `package.json` config from this. +// *parts* of VS Code's `package.json` config from this. Run `cargo test` to +// re-generate that file. // // However, editor specific config, which the server doesn't know about, should // be specified directly in `package.json`. @@ -120,6 +121,10 @@ config_data! { /// Cargo, you might also want to change /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`. /// + /// If there are multiple linked projects, this command is invoked for + /// each of them, with the working directory being the project root + /// (i.e., the folder containing the `Cargo.toml`). + /// /// An example command would be: /// /// ```bash @@ -243,7 +248,10 @@ config_data! { hover_actions_run_enable: bool = "true", /// Whether to show documentation on hover. - hover_documentation_enable: bool = "true", + hover_documentation_enable: bool = "true", + /// Whether to show keyword hover popups. Only applies when + /// `#rust-analyzer.hover.documentation.enable#` is set. + hover_documentation_keywords_enable: bool = "true", /// Use markdown syntax for links in hover. hover_links_enable: bool = "true", @@ -1187,6 +1195,7 @@ impl Config { HoverDocFormat::PlainText } }), + keywords: self.data.hover_documentation_keywords_enable, } } diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index b5f6aef2e1a8..c55bbbbe6ef7 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs @@ -8,7 +8,7 @@ use std::{sync::Arc, time::Instant}; use crossbeam_channel::{unbounded, Receiver, Sender}; use flycheck::FlycheckHandle; use ide::{Analysis, AnalysisHost, Cancellable, Change, FileId}; -use ide_db::base_db::{CrateId, FileLoader, SourceDatabase, SourceDatabaseExt}; +use ide_db::base_db::{CrateId, FileLoader, SourceDatabase}; use lsp_types::{SemanticTokens, Url}; use parking_lot::{Mutex, RwLock}; use proc_macro_api::ProcMacroServer; @@ -176,9 +176,9 @@ impl GlobalState { pub(crate) fn process_changes(&mut self) -> bool { let _p = profile::span("GlobalState::process_changes"); - let mut fs_refresh_changes = Vec::new(); // A file was added or deleted let mut has_structure_changes = false; + let mut workspace_structure_change = None; let (change, changed_files) = { let mut change = Change::new(); @@ -192,7 +192,7 @@ impl GlobalState { if let Some(path) = vfs.file_path(file.file_id).as_path() { let path = path.to_path_buf(); if reload::should_refresh_for_change(&path, file.change_kind) { - fs_refresh_changes.push((path, file.file_id)); + workspace_structure_change = Some(path); } if file.is_created_or_deleted() { has_structure_changes = true; @@ -227,11 +227,10 @@ impl GlobalState { { let raw_database = self.analysis_host.raw_database(); - let workspace_structure_change = - fs_refresh_changes.into_iter().find(|&(_, file_id)| { - !raw_database.source_root(raw_database.file_source_root(file_id)).is_library - }); - if let Some((path, _)) = workspace_structure_change { + // FIXME: ideally we should only trigger a workspace fetch for non-library changes + // but somethings going wrong with the source root business when we add a new local + // crate see https://github.com/rust-lang/rust-analyzer/issues/13029 + if let Some(path) = workspace_structure_change { self.fetch_workspaces_queue .request_op(format!("workspace vfs file change: {}", path.display())); } diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 943d043bc199..e0bcc80b31cb 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -51,6 +51,12 @@ pub(crate) fn handle_workspace_reload(state: &mut GlobalState, _: ()) -> Result< Ok(()) } +pub(crate) fn handle_cancel_flycheck(state: &mut GlobalState, _: ()) -> Result<()> { + let _p = profile::span("handle_stop_flycheck"); + state.flycheck.iter().for_each(|flycheck| flycheck.cancel()); + Ok(()) +} + pub(crate) fn handle_analyzer_status( snap: GlobalStateSnapshot, params: lsp_ext::AnalyzerStatusParams, @@ -703,10 +709,8 @@ pub(crate) fn handle_runnables( let mut res = Vec::new(); for runnable in snap.analysis.runnables(file_id)? { - if let Some(offset) = offset { - if !runnable.nav.full_range.contains_inclusive(offset) { - continue; - } + if should_skip_for_offset(&runnable, offset) { + continue; } if should_skip_target(&runnable, cargo_spec.as_ref()) { continue; @@ -772,6 +776,14 @@ pub(crate) fn handle_runnables( Ok(res) } +fn should_skip_for_offset(runnable: &Runnable, offset: Option) -> bool { + match offset { + None => false, + _ if matches!(&runnable.kind, RunnableKind::TestMod { .. }) => false, + Some(offset) => !runnable.nav.full_range.contains_inclusive(offset), + } +} + pub(crate) fn handle_related_tests( snap: GlobalStateSnapshot, params: lsp_types::TextDocumentPositionParams, @@ -1765,7 +1777,7 @@ fn run_rustfmt( let line_index = snap.file_line_index(file_id)?; - let mut rustfmt = match snap.config.rustfmt() { + let mut command = match snap.config.rustfmt() { RustfmtConfig::Rustfmt { extra_args, enable_range_formatting } => { let mut cmd = process::Command::new(toolchain::rustfmt()); cmd.args(extra_args); @@ -1830,12 +1842,12 @@ fn run_rustfmt( } }; - let mut rustfmt = rustfmt + let mut rustfmt = command .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn() - .context(format!("Failed to spawn {:?}", rustfmt))?; + .context(format!("Failed to spawn {:?}", command))?; rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?; @@ -1854,7 +1866,11 @@ fn run_rustfmt( // formatting because otherwise an error is surfaced to the user on top of the // syntax error diagnostics they're already receiving. This is especially jarring // if they have format on save enabled. - tracing::info!("rustfmt exited with status 1, assuming parse error and ignoring"); + tracing::warn!( + ?command, + %captured_stderr, + "rustfmt exited with status 1" + ); Ok(None) } _ => { diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs index 5f0e108624b2..e61c8b643d2d 100644 --- a/crates/rust-analyzer/src/lsp_ext.rs +++ b/crates/rust-analyzer/src/lsp_ext.rs @@ -129,6 +129,14 @@ pub struct ExpandedMacro { pub expansion: String, } +pub enum CancelFlycheck {} + +impl Request for CancelFlycheck { + type Params = (); + type Result = (); + const METHOD: &'static str = "rust-analyzer/cancelFlycheck"; +} + pub enum MatchingBrace {} impl Request for MatchingBrace { diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 77419998249f..f187547019a1 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -288,7 +288,7 @@ impl GlobalState { if became_quiescent { // Project has loaded properly, kick off initial flycheck - self.flycheck.iter().for_each(FlycheckHandle::update); + self.flycheck.iter().for_each(FlycheckHandle::restart); if self.config.prefill_caches() { self.prime_caches_queue.request_op("became quiescent".to_string()); } @@ -590,6 +590,7 @@ impl GlobalState { .on_sync_mut::(handlers::handle_workspace_reload) .on_sync_mut::(handlers::handle_memory_usage) .on_sync_mut::(handlers::handle_shuffle_crate_graph) + .on_sync_mut::(handlers::handle_cancel_flycheck) .on_sync::(handlers::handle_join_lines) .on_sync::(handlers::handle_on_enter) .on_sync::(handlers::handle_selection_range) @@ -779,7 +780,7 @@ impl GlobalState { for (id, _) in workspace_ids.clone() { if id == flycheck.id() { updated = true; - flycheck.update(); + flycheck.restart(); continue; } } @@ -798,7 +799,7 @@ impl GlobalState { // No specific flycheck was triggered, so let's trigger all of them. if !updated { for flycheck in &this.flycheck { - flycheck.update(); + flycheck.restart(); } } Ok(()) diff --git a/crates/syntax/src/hacks.rs b/crates/syntax/src/hacks.rs index a047f61fa03c..ec3d3d444c36 100644 --- a/crates/syntax/src/hacks.rs +++ b/crates/syntax/src/hacks.rs @@ -1,4 +1,4 @@ -//! Things which exist to solve practial issues, but which shouldn't exist. +//! Things which exist to solve practical issues, but which shouldn't exist. //! //! Please avoid adding new usages of the functions in this module diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index f48d1ec66aae..6df29db4745d 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -471,6 +471,21 @@ pub mod future { #[lang = "poll"] fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll; } + + pub trait IntoFuture { + type Output; + type IntoFuture: Future; + #[lang = "into_future"] + fn into_future(self) -> Self::IntoFuture; + } + + impl IntoFuture for F { + type Output = F::Output; + type IntoFuture = F; + fn into_future(self) -> F { + self + } + } } pub mod task { pub enum Poll { diff --git a/crates/vfs-notify/Cargo.toml b/crates/vfs-notify/Cargo.toml index 9ee4415dcada..fcc693a7ddac 100644 --- a/crates/vfs-notify/Cargo.toml +++ b/crates/vfs-notify/Cargo.toml @@ -14,7 +14,7 @@ tracing = "0.1.35" jod-thread = "0.1.2" walkdir = "2.3.2" crossbeam-channel = "0.5.5" -notify = "=5.0.0-pre.15" +notify = "=5.0.0-pre.16" vfs = { path = "../vfs", version = "0.0.0" } paths = { path = "../paths", version = "0.0.0" } diff --git a/crates/vfs-notify/src/lib.rs b/crates/vfs-notify/src/lib.rs index d6d9c66159fe..c95304e55ac1 100644 --- a/crates/vfs-notify/src/lib.rs +++ b/crates/vfs-notify/src/lib.rs @@ -12,7 +12,7 @@ use std::fs; use crossbeam_channel::{never, select, unbounded, Receiver, Sender}; -use notify::{RecommendedWatcher, RecursiveMode, Watcher}; +use notify::{Config, RecommendedWatcher, RecursiveMode, Watcher}; use paths::{AbsPath, AbsPathBuf}; use vfs::loader; use walkdir::WalkDir; @@ -91,9 +91,12 @@ impl NotifyActor { self.watcher = None; if !config.watch.is_empty() { let (watcher_sender, watcher_receiver) = unbounded(); - let watcher = log_notify_error(RecommendedWatcher::new(move |event| { - watcher_sender.send(event).unwrap(); - })); + let watcher = log_notify_error(RecommendedWatcher::new( + move |event| { + watcher_sender.send(event).unwrap(); + }, + Config::default(), + )); self.watcher = watcher.map(|it| (it, watcher_receiver)); } diff --git a/crates/vfs/src/lib.rs b/crates/vfs/src/lib.rs index 10fae41d081c..7badb1c363b4 100644 --- a/crates/vfs/src/lib.rs +++ b/crates/vfs/src/lib.rs @@ -64,7 +64,7 @@ pub struct FileId(pub u32); /// Storage for all files read by rust-analyzer. /// -/// For more informations see the [crate-level](crate) documentation. +/// For more information see the [crate-level](crate) documentation. #[derive(Default)] pub struct Vfs { interner: PathInterner, diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index 51e26c58a917..c173a239feab 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md @@ -485,7 +485,7 @@ Mind the code--architecture gap: at the moment, we are using fewer feature flags ### Serialization In Rust, it is easy (often too easy) to add serialization to any type by adding `#[derive(Serialize)]`. -This easiness is misleading -- serializable types impose significant backwards compatability constraints. +This easiness is misleading -- serializable types impose significant backwards compatibility constraints. If a type is serializable, then it is a part of some IPC boundary. You often don't control the other side of this boundary, so changing serializable types is hard. diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index 5040643d34a3..6d2c7d7b0634 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md @@ -1,5 +1,5 @@ diff --git a/.github/ISSUE_TEMPLATE/critical_nightly_regression.md b/.github/ISSUE_TEMPLATE/critical_nightly_regression.md index a0b1627d7e2e..ad220ff65ca1 100644 --- a/.github/ISSUE_TEMPLATE/critical_nightly_regression.md +++ b/.github/ISSUE_TEMPLATE/critical_nightly_regression.md @@ -2,8 +2,8 @@ name: Critical Nightly Regression about: You are using nightly rust-analyzer and the latest version is unusable. title: '' -labels: '' -assignees: 'matklad' +labels: 'Broken Window' +assignees: '' --- @@ -14,4 +14,3 @@ Please try to provide information which will help us to fix the issue faster. Mi --> This is a serious regression in nightly and it's important to fix it before the next release. -@matklad, please take a look. diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 422fe29f9d5c..b070dd3406f2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -257,8 +257,7 @@ jobs: - name: Publish Extension (OpenVSX, release) if: github.ref == 'refs/heads/release' && (github.repository == 'rust-analyzer/rust-analyzer' || github.repository == 'rust-lang/rust-analyzer') working-directory: ./editors/code - # token from https://dev.azure.com/rust-analyzer/ - run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix || true + run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix timeout-minutes: 2 - name: Publish Extension (Code Marketplace, nightly) @@ -269,5 +268,5 @@ jobs: - name: Publish Extension (OpenVSX, nightly) if: github.ref != 'refs/heads/release' && (github.repository == 'rust-analyzer/rust-analyzer' || github.repository == 'rust-lang/rust-analyzer') working-directory: ./editors/code - run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix || true + run: npx ovsx publish --pat ${{ secrets.OPENVSX_TOKEN }} --packagePath ../../dist/rust-analyzer-*.vsix timeout-minutes: 2 diff --git a/crates/hir-def/src/pretty.rs b/crates/hir-def/src/pretty.rs index 6636c8a23ca5..933970d10e47 100644 --- a/crates/hir-def/src/pretty.rs +++ b/crates/hir-def/src/pretty.rs @@ -143,9 +143,12 @@ pub(crate) fn print_type_ref(type_ref: &TypeRef, buf: &mut dyn Write) -> fmt::Re print_type_ref(elem, buf)?; write!(buf, "]")?; } - TypeRef::Fn(args_and_ret, varargs) => { + TypeRef::Fn(args_and_ret, varargs, is_unsafe) => { let ((_, return_type), args) = args_and_ret.split_last().expect("TypeRef::Fn is missing return type"); + if *is_unsafe { + write!(buf, "unsafe ")?; + } write!(buf, "fn(")?; for (i, (_, typeref)) in args.iter().enumerate() { if i != 0 { diff --git a/crates/hir-def/src/type_ref.rs b/crates/hir-def/src/type_ref.rs index 5b4c71be7fb8..f8bb78ddcfe0 100644 --- a/crates/hir-def/src/type_ref.rs +++ b/crates/hir-def/src/type_ref.rs @@ -119,7 +119,7 @@ pub enum TypeRef { Array(Box, ConstScalarOrPath), Slice(Box), /// A fn pointer. Last element of the vector is the return type. - Fn(Vec<(Option, TypeRef)>, bool /*varargs*/), + Fn(Vec<(Option, TypeRef)>, bool /*varargs*/, bool /*is_unsafe*/), ImplTrait(Vec>), DynTrait(Vec>), Macro(AstId), @@ -229,7 +229,7 @@ impl TypeRef { Vec::new() }; params.push((None, ret_ty)); - TypeRef::Fn(params, is_varargs) + TypeRef::Fn(params, is_varargs, inner.unsafe_token().is_some()) } // for types are close enough for our purposes to the inner type for now... ast::Type::ForType(inner) => TypeRef::from_ast_opt(ctx, inner.ty()), @@ -263,7 +263,7 @@ impl TypeRef { fn go(type_ref: &TypeRef, f: &mut impl FnMut(&TypeRef)) { f(type_ref); match type_ref { - TypeRef::Fn(params, _) => { + TypeRef::Fn(params, _, _) => { params.iter().for_each(|(_, param_type)| go(param_type, f)) } TypeRef::Tuple(types) => types.iter().for_each(|t| go(t, f)), diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs index 5ad661326353..a22a4b170f61 100644 --- a/crates/hir-ty/src/display.rs +++ b/crates/hir-ty/src/display.rs @@ -1187,8 +1187,11 @@ impl HirDisplay for TypeRef { inner.hir_fmt(f)?; write!(f, "]")?; } - TypeRef::Fn(parameters, is_varargs) => { + &TypeRef::Fn(ref parameters, is_varargs, is_unsafe) => { // FIXME: Function pointer qualifiers. + if is_unsafe { + write!(f, "unsafe ")?; + } write!(f, "fn(")?; if let Some(((_, return_type), function_parameters)) = parameters.split_last() { for index in 0..function_parameters.len() { @@ -1203,7 +1206,7 @@ impl HirDisplay for TypeRef { write!(f, ", ")?; } } - if *is_varargs { + if is_varargs { write!(f, "{}...", if parameters.len() == 1 { "" } else { ", " })?; } write!(f, ")")?; diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 0efff651cc17..0b3c23f5747a 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -1020,7 +1020,7 @@ impl Expectation { /// The primary use case is where the expected type is a fat pointer, /// like `&[isize]`. For example, consider the following statement: /// - /// let x: &[isize] = &[1, 2, 3]; + /// let x: &[isize] = &[1, 2, 3]; /// /// In this case, the expected type for the `&[1, 2, 3]` expression is /// `&[isize]`. If however we were to say that `[1, 2, 3]` has the diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index f56108b26c45..b1f4de826077 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -85,6 +85,7 @@ impl<'a> InferenceContext<'a> { let ty = match &self.body[tgt_expr] { Expr::Missing => self.err_ty(), &Expr::If { condition, then_branch, else_branch } => { + let expected = &expected.adjust_for_branches(&mut self.table); self.infer_expr( condition, &Expectation::has_type(TyKind::Scalar(Scalar::Bool).intern(Interner)), diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index 42c3b58d5ada..b68c764bdca0 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -38,10 +38,12 @@ use std::sync::Arc; use chalk_ir::{ fold::{Shift, TypeFoldable}, interner::HasInterner, - NoSolution, + NoSolution, UniverseIndex, }; use hir_def::{expr::ExprId, type_ref::Rawness, TypeOrConstParamId}; +use hir_expand::name; use itertools::Either; +use traits::FnTrait; use utils::Generics; use crate::{consteval::unknown_const, db::HirDatabase, utils::generics}; @@ -208,6 +210,7 @@ pub(crate) fn make_binders>( pub struct CallableSig { params_and_return: Arc<[Ty]>, is_varargs: bool, + safety: Safety, } has_interner!(CallableSig); @@ -216,9 +219,14 @@ has_interner!(CallableSig); pub type PolyFnSig = Binders; impl CallableSig { - pub fn from_params_and_return(mut params: Vec, ret: Ty, is_varargs: bool) -> CallableSig { + pub fn from_params_and_return( + mut params: Vec, + ret: Ty, + is_varargs: bool, + safety: Safety, + ) -> CallableSig { params.push(ret); - CallableSig { params_and_return: params.into(), is_varargs } + CallableSig { params_and_return: params.into(), is_varargs, safety } } pub fn from_fn_ptr(fn_ptr: &FnPointer) -> CallableSig { @@ -235,13 +243,14 @@ impl CallableSig { .map(|arg| arg.assert_ty_ref(Interner).clone()) .collect(), is_varargs: fn_ptr.sig.variadic, + safety: fn_ptr.sig.safety, } } pub fn to_fn_ptr(&self) -> FnPointer { FnPointer { num_binders: 0, - sig: FnSig { abi: (), safety: Safety::Safe, variadic: self.is_varargs }, + sig: FnSig { abi: (), safety: self.safety, variadic: self.is_varargs }, substitution: FnSubst(Substitution::from_iter( Interner, self.params_and_return.iter().cloned(), @@ -266,7 +275,11 @@ impl TypeFoldable for CallableSig { ) -> Result { let vec = self.params_and_return.to_vec(); let folded = vec.try_fold_with(folder, outer_binder)?; - Ok(CallableSig { params_and_return: folded.into(), is_varargs: self.is_varargs }) + Ok(CallableSig { + params_and_return: folded.into(), + is_varargs: self.is_varargs, + safety: self.safety, + }) } } @@ -508,3 +521,68 @@ where }); Canonical { value, binders: chalk_ir::CanonicalVarKinds::from_iter(Interner, kinds) } } + +pub fn callable_sig_from_fnonce( + self_ty: &Canonical, + env: Arc, + db: &dyn HirDatabase, +) -> Option { + let krate = env.krate; + let fn_once_trait = FnTrait::FnOnce.get_id(db, krate)?; + let output_assoc_type = db.trait_data(fn_once_trait).associated_type_by_name(&name![Output])?; + + let mut kinds = self_ty.binders.interned().to_vec(); + let b = TyBuilder::trait_ref(db, fn_once_trait); + if b.remaining() != 2 { + return None; + } + let fn_once = b + .push(self_ty.value.clone()) + .fill_with_bound_vars(DebruijnIndex::INNERMOST, kinds.len()) + .build(); + kinds.extend(fn_once.substitution.iter(Interner).skip(1).map(|x| { + let vk = match x.data(Interner) { + chalk_ir::GenericArgData::Ty(_) => { + chalk_ir::VariableKind::Ty(chalk_ir::TyVariableKind::General) + } + chalk_ir::GenericArgData::Lifetime(_) => chalk_ir::VariableKind::Lifetime, + chalk_ir::GenericArgData::Const(c) => { + chalk_ir::VariableKind::Const(c.data(Interner).ty.clone()) + } + }; + chalk_ir::WithKind::new(vk, UniverseIndex::ROOT) + })); + + // FIXME: chalk refuses to solve `>::Output == ^0.1`, so we first solve + // `>` and then replace `^0.0` with the concrete argument tuple. + let trait_env = env.env.clone(); + let obligation = InEnvironment { goal: fn_once.cast(Interner), environment: trait_env }; + let canonical = + Canonical { binders: CanonicalVarKinds::from_iter(Interner, kinds), value: obligation }; + let subst = match db.trait_solve(krate, canonical) { + Some(Solution::Unique(vars)) => vars.value.subst, + _ => return None, + }; + let args = subst.at(Interner, self_ty.binders.interned().len()).ty(Interner)?; + let params = match args.kind(Interner) { + chalk_ir::TyKind::Tuple(_, subst) => { + subst.iter(Interner).filter_map(|arg| arg.ty(Interner).cloned()).collect::>() + } + _ => return None, + }; + if params.iter().any(|ty| ty.is_unknown()) { + return None; + } + + let fn_once = TyBuilder::trait_ref(db, fn_once_trait) + .push(self_ty.value.clone()) + .push(args.clone()) + .build(); + let projection = + TyBuilder::assoc_type_projection(db, output_assoc_type, Some(fn_once.substitution.clone())) + .build(); + + let ret_ty = db.normalize_projection(projection, env); + + Some(CallableSig::from_params_and_return(params, ret_ty.clone(), false, Safety::Safe)) +} diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index 22a85cf15458..baf9842d5fbf 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -227,13 +227,17 @@ impl<'a> TyLoweringContext<'a> { .intern(Interner) } TypeRef::Placeholder => TyKind::Error.intern(Interner), - TypeRef::Fn(params, is_varargs) => { + &TypeRef::Fn(ref params, variadic, is_unsafe) => { let substs = self.with_shifted_in(DebruijnIndex::ONE, |ctx| { Substitution::from_iter(Interner, params.iter().map(|(_, tr)| ctx.lower_ty(tr))) }); TyKind::Function(FnPointer { num_binders: 0, // FIXME lower `for<'a> fn()` correctly - sig: FnSig { abi: (), safety: Safety::Safe, variadic: *is_varargs }, + sig: FnSig { + abi: (), + safety: if is_unsafe { Safety::Unsafe } else { Safety::Safe }, + variadic, + }, substitution: FnSubst(substs), }) .intern(Interner) @@ -1573,7 +1577,12 @@ fn fn_sig_for_fn(db: &dyn HirDatabase, def: FunctionId) -> PolyFnSig { .with_type_param_mode(ParamLoweringMode::Variable); let ret = ctx_ret.lower_ty(&data.ret_type); let generics = generics(db.upcast(), def.into()); - let sig = CallableSig::from_params_and_return(params, ret, data.is_varargs()); + let sig = CallableSig::from_params_and_return( + params, + ret, + data.is_varargs(), + if data.has_unsafe_kw() { Safety::Unsafe } else { Safety::Safe }, + ); make_binders(db, &generics, sig) } @@ -1617,7 +1626,7 @@ fn fn_sig_for_struct_constructor(db: &dyn HirDatabase, def: StructId) -> PolyFnS TyLoweringContext::new(db, &resolver).with_type_param_mode(ParamLoweringMode::Variable); let params = fields.iter().map(|(_, field)| ctx.lower_ty(&field.type_ref)).collect::>(); let (ret, binders) = type_for_adt(db, def.into()).into_value_and_skipped_binders(); - Binders::new(binders, CallableSig::from_params_and_return(params, ret, false)) + Binders::new(binders, CallableSig::from_params_and_return(params, ret, false, Safety::Safe)) } /// Build the type of a tuple struct constructor. @@ -1644,7 +1653,7 @@ fn fn_sig_for_enum_variant_constructor(db: &dyn HirDatabase, def: EnumVariantId) TyLoweringContext::new(db, &resolver).with_type_param_mode(ParamLoweringMode::Variable); let params = fields.iter().map(|(_, field)| ctx.lower_ty(&field.type_ref)).collect::>(); let (ret, binders) = type_for_adt(db, def.parent.into()).into_value_and_skipped_binders(); - Binders::new(binders, CallableSig::from_params_and_return(params, ret, false)) + Binders::new(binders, CallableSig::from_params_and_return(params, ret, false, Safety::Safe)) } /// Build the type of a tuple enum variant constructor. diff --git a/crates/hir-ty/src/tests/coercion.rs b/crates/hir-ty/src/tests/coercion.rs index d301595bcd98..7e3aecc2ae0a 100644 --- a/crates/hir-ty/src/tests/coercion.rs +++ b/crates/hir-ty/src/tests/coercion.rs @@ -122,6 +122,23 @@ fn test() { ) } +#[test] +fn if_else_adjust_for_branches_discard_type_var() { + check_no_mismatches( + r#" +fn test() { + let f = || { + if true { + &"" + } else { + "" + } + }; +} +"#, + ); +} + #[test] fn match_first_coerce() { check_no_mismatches( @@ -182,6 +199,22 @@ fn test() { ); } +#[test] +fn match_adjust_for_branches_discard_type_var() { + check_no_mismatches( + r#" +fn test() { + let f = || { + match 0i32 { + 0i32 => &"", + _ => "", + } + }; +} +"#, + ); +} + #[test] fn return_coerce_unknown() { check_types( @@ -357,7 +390,7 @@ fn test() { let f: fn(u32) -> isize = foo; // ^^^ adjustments: Pointer(ReifyFnPointer) let f: unsafe fn(u32) -> isize = foo; - // ^^^ adjustments: Pointer(ReifyFnPointer) + // ^^^ adjustments: Pointer(ReifyFnPointer), Pointer(UnsafeFnPointer) }", ); } @@ -388,7 +421,10 @@ fn coerce_closure_to_fn_ptr() { check_no_mismatches( r" fn test() { - let f: fn(u32) -> isize = |x| { 1 }; + let f: fn(u32) -> u32 = |x| x; + // ^^^^^ adjustments: Pointer(ClosureFnPointer(Safe)) + let f: unsafe fn(u32) -> u32 = |x| x; + // ^^^^^ adjustments: Pointer(ClosureFnPointer(Unsafe)) }", ); } diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index f5324208c9a4..cbd9bf32a548 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -2995,7 +2995,17 @@ impl Type { let callee = match self.ty.kind(Interner) { TyKind::Closure(id, _) => Callee::Closure(*id), TyKind::Function(_) => Callee::FnPtr, - _ => Callee::Def(self.ty.callable_def(db)?), + TyKind::FnDef(..) => Callee::Def(self.ty.callable_def(db)?), + _ => { + let ty = hir_ty::replace_errors_with_variables(&self.ty); + let sig = hir_ty::callable_sig_from_fnonce(&ty, self.env.clone(), db)?; + return Some(Callable { + ty: self.clone(), + sig, + callee: Callee::Other, + is_bound_method: false, + }); + } }; let sig = self.ty.callable_sig(db)?; @@ -3464,6 +3474,7 @@ enum Callee { Def(CallableDefId), Closure(ClosureId), FnPtr, + Other, } pub enum CallableKind { @@ -3472,6 +3483,8 @@ pub enum CallableKind { TupleEnumVariant(Variant), Closure, FnPtr, + /// Some other type that implements `FnOnce`. + Other, } impl Callable { @@ -3483,6 +3496,7 @@ impl Callable { Def(CallableDefId::EnumVariantId(it)) => CallableKind::TupleEnumVariant(it.into()), Closure(_) => CallableKind::Closure, FnPtr => CallableKind::FnPtr, + Other => CallableKind::Other, } } pub fn receiver_param(&self, db: &dyn HirDatabase) -> Option { diff --git a/crates/ide-assists/src/assist_config.rs b/crates/ide-assists/src/assist_config.rs index 60d1588a44e5..b273ebc85a50 100644 --- a/crates/ide-assists/src/assist_config.rs +++ b/crates/ide-assists/src/assist_config.rs @@ -14,4 +14,5 @@ pub struct AssistConfig { pub allowed: Option>, pub insert_use: InsertUseConfig, pub prefer_no_std: bool, + pub assist_emit_must_use: bool, } diff --git a/crates/ide-assists/src/handlers/add_explicit_type.rs b/crates/ide-assists/src/handlers/add_explicit_type.rs index bfa9759ec84b..b5f99726fe1c 100644 --- a/crates/ide-assists/src/handlers/add_explicit_type.rs +++ b/crates/ide-assists/src/handlers/add_explicit_type.rs @@ -69,14 +69,14 @@ pub(crate) fn add_explicit_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> O let inferred_type = ty.display_source_code(ctx.db(), module.into()).ok()?; acc.add( AssistId("add_explicit_type", AssistKind::RefactorRewrite), - format!("Insert explicit type `{}`", inferred_type), + format!("Insert explicit type `{inferred_type}`"), pat_range, |builder| match ascribed_ty { Some(ascribed_ty) => { builder.replace(ascribed_ty.syntax().text_range(), inferred_type); } None => { - builder.insert(pat_range.end(), format!(": {}", inferred_type)); + builder.insert(pat_range.end(), format!(": {inferred_type}")); } }, ) diff --git a/crates/ide-assists/src/handlers/add_return_type.rs b/crates/ide-assists/src/handlers/add_return_type.rs index f858d7a15c24..89040a8569e6 100644 --- a/crates/ide-assists/src/handlers/add_return_type.rs +++ b/crates/ide-assists/src/handlers/add_return_type.rs @@ -35,16 +35,16 @@ pub(crate) fn add_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt match builder_edit_pos { InsertOrReplace::Insert(insert_pos, needs_whitespace) => { let preceeding_whitespace = if needs_whitespace { " " } else { "" }; - builder.insert(insert_pos, &format!("{}-> {} ", preceeding_whitespace, ty)) + builder.insert(insert_pos, &format!("{preceeding_whitespace}-> {ty} ")) } InsertOrReplace::Replace(text_range) => { - builder.replace(text_range, &format!("-> {}", ty)) + builder.replace(text_range, &format!("-> {ty}")) } } if let FnType::Closure { wrap_expr: true } = fn_type { cov_mark::hit!(wrap_closure_non_block_expr); // `|x| x` becomes `|x| -> T x` which is invalid, so wrap it in a block - builder.replace(tail_expr.syntax().text_range(), &format!("{{{}}}", tail_expr)); + builder.replace(tail_expr.syntax().text_range(), &format!("{{{tail_expr}}}")); } }, ) diff --git a/crates/ide-assists/src/handlers/add_turbo_fish.rs b/crates/ide-assists/src/handlers/add_turbo_fish.rs index c0bf238db731..acf82e4b2579 100644 --- a/crates/ide-assists/src/handlers/add_turbo_fish.rs +++ b/crates/ide-assists/src/handlers/add_turbo_fish.rs @@ -93,12 +93,13 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti builder.trigger_signature_help(); match ctx.config.snippet_cap { Some(cap) => { - let snip = format!("::<{}>", get_snippet_fish_head(number_of_arguments)); + let fish_head = get_snippet_fish_head(number_of_arguments); + let snip = format!("::<{fish_head}>"); builder.insert_snippet(cap, ident.text_range().end(), snip) } None => { let fish_head = std::iter::repeat("_").take(number_of_arguments).format(", "); - let snip = format!("::<{}>", fish_head); + let snip = format!("::<{fish_head}>"); builder.insert(ident.text_range().end(), snip); } } @@ -109,7 +110,7 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti /// This will create a snippet string with tabstops marked fn get_snippet_fish_head(number_of_arguments: usize) -> String { let mut fish_head = (1..number_of_arguments) - .format_with("", |i, f| f(&format_args!("${{{}:_}}, ", i))) + .format_with("", |i, f| f(&format_args!("${{{i}:_}}, "))) .to_string(); // tabstop 0 is a special case and always the last one diff --git a/crates/ide-assists/src/handlers/apply_demorgan.rs b/crates/ide-assists/src/handlers/apply_demorgan.rs index 2853d1d1be3c..57cfa17cc8e1 100644 --- a/crates/ide-assists/src/handlers/apply_demorgan.rs +++ b/crates/ide-assists/src/handlers/apply_demorgan.rs @@ -123,20 +123,20 @@ pub(crate) fn apply_demorgan(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let lhs_range = lhs.syntax().text_range(); let not_lhs = invert_boolean_expression(lhs); - edit.replace(lhs_range, format!("!({}", not_lhs.syntax().text())); + edit.replace(lhs_range, format!("!({not_lhs}")); } if let Some(rhs) = terms.pop_back() { let rhs_range = rhs.syntax().text_range(); let not_rhs = invert_boolean_expression(rhs); - edit.replace(rhs_range, format!("{})", not_rhs.syntax().text())); + edit.replace(rhs_range, format!("{not_rhs})")); } for term in terms { let term_range = term.syntax().text_range(); let not_term = invert_boolean_expression(term); - edit.replace(term_range, not_term.syntax().text()); + edit.replace(term_range, not_term.to_string()); } } }, diff --git a/crates/ide-assists/src/handlers/auto_import.rs b/crates/ide-assists/src/handlers/auto_import.rs index 678dc877d138..a689270bc091 100644 --- a/crates/ide-assists/src/handlers/auto_import.rs +++ b/crates/ide-assists/src/handlers/auto_import.rs @@ -127,10 +127,12 @@ pub(crate) fn auto_import(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option< .sort_by_key(|import| Reverse(relevance_score(ctx, import, current_module.as_ref()))); for import in proposed_imports { + let import_path = import.import_path; + acc.add_group( &group_label, AssistId("auto_import", AssistKind::QuickFix), - format!("Import `{}`", import.import_path), + format!("Import `{import_path}`"), range, |builder| { let scope = match scope.clone() { @@ -138,7 +140,7 @@ pub(crate) fn auto_import(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option< ImportScope::Module(it) => ImportScope::Module(builder.make_mut(it)), ImportScope::Block(it) => ImportScope::Block(builder.make_mut(it)), }; - insert_use(&scope, mod_path_to_ast(&import.import_path), &ctx.config.insert_use); + insert_use(&scope, mod_path_to_ast(&import_path), &ctx.config.insert_use); }, ); } diff --git a/crates/ide-assists/src/handlers/convert_comment_block.rs b/crates/ide-assists/src/handlers/convert_comment_block.rs index f171dd81a811..312cb65abd2a 100644 --- a/crates/ide-assists/src/handlers/convert_comment_block.rs +++ b/crates/ide-assists/src/handlers/convert_comment_block.rs @@ -54,16 +54,17 @@ fn block_to_line(acc: &mut Assists, comment: ast::Comment) -> Option<()> { let indent_spaces = indentation.to_string(); let output = lines - .map(|l| l.trim_start_matches(&indent_spaces)) - .map(|l| { + .map(|line| { + let line = line.trim_start_matches(&indent_spaces); + // Don't introduce trailing whitespace - if l.is_empty() { + if line.is_empty() { line_prefix.to_string() } else { - format!("{} {}", line_prefix, l.trim_start_matches(&indent_spaces)) + format!("{line_prefix} {line}") } }) - .join(&format!("\n{}", indent_spaces)); + .join(&format!("\n{indent_spaces}")); edit.replace(target, output) }, @@ -96,7 +97,7 @@ fn line_to_block(acc: &mut Assists, comment: ast::Comment) -> Option<()> { let block_prefix = CommentKind { shape: CommentShape::Block, ..comment.kind() }.prefix(); - let output = format!("{}\n{}\n{}*/", block_prefix, block_comment_body, indentation); + let output = format!("{block_prefix}\n{block_comment_body}\n{indentation}*/"); edit.replace(target, output) }, diff --git a/crates/ide-assists/src/handlers/convert_integer_literal.rs b/crates/ide-assists/src/handlers/convert_integer_literal.rs index 9060696cdc8e..ff2195f7e6c4 100644 --- a/crates/ide-assists/src/handlers/convert_integer_literal.rs +++ b/crates/ide-assists/src/handlers/convert_integer_literal.rs @@ -32,19 +32,19 @@ pub(crate) fn convert_integer_literal(acc: &mut Assists, ctx: &AssistContext<'_> } let mut converted = match target_radix { - Radix::Binary => format!("0b{:b}", value), - Radix::Octal => format!("0o{:o}", value), + Radix::Binary => format!("0b{value:b}"), + Radix::Octal => format!("0o{value:o}"), Radix::Decimal => value.to_string(), - Radix::Hexadecimal => format!("0x{:X}", value), + Radix::Hexadecimal => format!("0x{value:X}"), }; - let label = format!("Convert {} to {}{}", literal, converted, suffix.unwrap_or_default()); - // Appends the type suffix back into the new literal if it exists. if let Some(suffix) = suffix { converted.push_str(suffix); } + let label = format!("Convert {literal} to {converted}"); + acc.add_group( &group_id, AssistId("convert_integer_literal", AssistKind::RefactorInline), diff --git a/crates/ide-assists/src/handlers/convert_into_to_from.rs b/crates/ide-assists/src/handlers/convert_into_to_from.rs index 95d11abe8bc0..872b52c98fff 100644 --- a/crates/ide-assists/src/handlers/convert_into_to_from.rs +++ b/crates/ide-assists/src/handlers/convert_into_to_from.rs @@ -86,9 +86,9 @@ pub(crate) fn convert_into_to_from(acc: &mut Assists, ctx: &AssistContext<'_>) - impl_.syntax().text_range(), |builder| { builder.replace(src_type.syntax().text_range(), dest_type.to_string()); - builder.replace(ast_trait.syntax().text_range(), format!("From<{}>", src_type)); + builder.replace(ast_trait.syntax().text_range(), format!("From<{src_type}>")); builder.replace(into_fn_return.syntax().text_range(), "-> Self"); - builder.replace(into_fn_params.syntax().text_range(), format!("(val: {})", src_type)); + builder.replace(into_fn_params.syntax().text_range(), format!("(val: {src_type})")); builder.replace(into_fn_name.syntax().text_range(), "from"); for s in selfs { diff --git a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs index 2cf370c09074..80eecf4a0986 100644 --- a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs +++ b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs @@ -119,19 +119,19 @@ pub(crate) fn convert_for_loop_with_for_each( { // We have either "for x in &col" and col implements a method called iter // or "for x in &mut col" and col implements a method called iter_mut - format_to!(buf, "{}.{}()", expr_behind_ref, method); + format_to!(buf, "{expr_behind_ref}.{method}()"); } else if let ast::Expr::RangeExpr(..) = iterable { // range expressions need to be parenthesized for the syntax to be correct - format_to!(buf, "({})", iterable); + format_to!(buf, "({iterable})"); } else if impls_core_iter(&ctx.sema, &iterable) { - format_to!(buf, "{}", iterable); + format_to!(buf, "{iterable}"); } else if let ast::Expr::RefExpr(_) = iterable { - format_to!(buf, "({}).into_iter()", iterable); + format_to!(buf, "({iterable}).into_iter()"); } else { - format_to!(buf, "{}.into_iter()", iterable); + format_to!(buf, "{iterable}.into_iter()"); } - format_to!(buf, ".for_each(|{}| {});", pat, body); + format_to!(buf, ".for_each(|{pat}| {body});"); builder.replace(for_loop.syntax().text_range(), buf) }, diff --git a/crates/ide-assists/src/handlers/convert_let_else_to_match.rs b/crates/ide-assists/src/handlers/convert_let_else_to_match.rs index 00095de257d5..c82a3b530325 100644 --- a/crates/ide-assists/src/handlers/convert_let_else_to_match.rs +++ b/crates/ide-assists/src/handlers/convert_let_else_to_match.rs @@ -80,7 +80,7 @@ fn binders_to_str(binders: &[(Name, bool)], addmut: bool) -> String { .map( |(ident, ismut)| { if *ismut && addmut { - format!("mut {}", ident) + format!("mut {ident}") } else { ident.to_string() } @@ -93,7 +93,7 @@ fn binders_to_str(binders: &[(Name, bool)], addmut: bool) -> String { } else if binders.len() == 1 { vars } else { - format!("({})", vars) + format!("({vars})") } } @@ -153,7 +153,7 @@ pub(crate) fn convert_let_else_to_match(acc: &mut Assists, ctx: &AssistContext<' let only_expr = let_else_block.statements().next().is_none(); let branch2 = match &let_else_block.tail_expr() { - Some(tail) if only_expr => format!("{},", tail.syntax().text()), + Some(tail) if only_expr => format!("{tail},"), _ => let_else_block.syntax().text().to_string(), }; let replace = if binders.is_empty() { diff --git a/crates/ide-assists/src/handlers/convert_match_to_let_else.rs b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs new file mode 100644 index 000000000000..5bf04a3ad371 --- /dev/null +++ b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs @@ -0,0 +1,413 @@ +use ide_db::defs::{Definition, NameRefClass}; +use syntax::{ + ast::{self, HasName}, + ted, AstNode, SyntaxNode, +}; + +use crate::{ + assist_context::{AssistContext, Assists}, + AssistId, AssistKind, +}; + +// Assist: convert_match_to_let_else +// +// Converts let statement with match initializer to let-else statement. +// +// ``` +// # //- minicore: option +// fn foo(opt: Option<()>) { +// let val = $0match opt { +// Some(it) => it, +// None => return, +// }; +// } +// ``` +// -> +// ``` +// fn foo(opt: Option<()>) { +// let Some(val) = opt else { return }; +// } +// ``` +pub(crate) fn convert_match_to_let_else(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let let_stmt: ast::LetStmt = ctx.find_node_at_offset()?; + let binding = find_binding(let_stmt.pat()?)?; + + let initializer = match let_stmt.initializer() { + Some(ast::Expr::MatchExpr(it)) => it, + _ => return None, + }; + let initializer_expr = initializer.expr()?; + + let (extracting_arm, diverging_arm) = match find_arms(ctx, &initializer) { + Some(it) => it, + None => return None, + }; + if extracting_arm.guard().is_some() { + cov_mark::hit!(extracting_arm_has_guard); + return None; + } + + let diverging_arm_expr = diverging_arm.expr()?; + let extracting_arm_pat = extracting_arm.pat()?; + let extracted_variable = find_extracted_variable(ctx, &extracting_arm)?; + + acc.add( + AssistId("convert_match_to_let_else", AssistKind::RefactorRewrite), + "Convert match to let-else", + let_stmt.syntax().text_range(), + |builder| { + let extracting_arm_pat = rename_variable(&extracting_arm_pat, extracted_variable, binding); + builder.replace( + let_stmt.syntax().text_range(), + format!("let {extracting_arm_pat} = {initializer_expr} else {{ {diverging_arm_expr} }};") + ) + }, + ) +} + +// Given a pattern, find the name introduced to the surrounding scope. +fn find_binding(pat: ast::Pat) -> Option { + if let ast::Pat::IdentPat(ident) = pat { + Some(ident) + } else { + None + } +} + +// Given a match expression, find extracting and diverging arms. +fn find_arms( + ctx: &AssistContext<'_>, + match_expr: &ast::MatchExpr, +) -> Option<(ast::MatchArm, ast::MatchArm)> { + let arms = match_expr.match_arm_list()?.arms().collect::>(); + if arms.len() != 2 { + return None; + } + + let mut extracting = None; + let mut diverging = None; + for arm in arms { + if ctx.sema.type_of_expr(&arm.expr().unwrap()).unwrap().original().is_never() { + diverging = Some(arm); + } else { + extracting = Some(arm); + } + } + + match (extracting, diverging) { + (Some(extracting), Some(diverging)) => Some((extracting, diverging)), + _ => { + cov_mark::hit!(non_diverging_match); + None + } + } +} + +// Given an extracting arm, find the extracted variable. +fn find_extracted_variable(ctx: &AssistContext<'_>, arm: &ast::MatchArm) -> Option { + match arm.expr()? { + ast::Expr::PathExpr(path) => { + let name_ref = path.syntax().descendants().find_map(ast::NameRef::cast)?; + match NameRefClass::classify(&ctx.sema, &name_ref)? { + NameRefClass::Definition(Definition::Local(local)) => { + let source = local.source(ctx.db()).value.left()?; + Some(source.name()?) + } + _ => None, + } + } + _ => { + cov_mark::hit!(extracting_arm_is_not_an_identity_expr); + return None; + } + } +} + +// Rename `extracted` with `binding` in `pat`. +fn rename_variable(pat: &ast::Pat, extracted: ast::Name, binding: ast::IdentPat) -> SyntaxNode { + let syntax = pat.syntax().clone_for_update(); + let extracted_syntax = syntax.covering_element(extracted.syntax().text_range()); + + // If `extracted` variable is a record field, we should rename it to `binding`, + // otherwise we just need to replace `extracted` with `binding`. + + if let Some(record_pat_field) = extracted_syntax.ancestors().find_map(ast::RecordPatField::cast) + { + if let Some(name_ref) = record_pat_field.field_name() { + ted::replace( + record_pat_field.syntax(), + ast::make::record_pat_field(ast::make::name_ref(&name_ref.text()), binding.into()) + .syntax() + .clone_for_update(), + ); + } + } else { + ted::replace(extracted_syntax, binding.syntax().clone_for_update()); + } + + syntax +} + +#[cfg(test)] +mod tests { + use crate::tests::{check_assist, check_assist_not_applicable}; + + use super::*; + + #[test] + fn should_not_be_applicable_for_non_diverging_match() { + cov_mark::check!(non_diverging_match); + check_assist_not_applicable( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + let val = $0match opt { + Some(it) => it, + None => (), + }; +} +"#, + ); + } + + #[test] + fn should_not_be_applicable_if_extracting_arm_is_not_an_identity_expr() { + cov_mark::check_count!(extracting_arm_is_not_an_identity_expr, 2); + check_assist_not_applicable( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option) { + let val = $0match opt { + Some(it) => it + 1, + None => return, + }; +} +"#, + ); + + check_assist_not_applicable( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + let val = $0match opt { + Some(it) => { + let _ = 1 + 1; + it + }, + None => return, + }; +} +"#, + ); + } + + #[test] + fn should_not_be_applicable_if_extracting_arm_has_guard() { + cov_mark::check!(extracting_arm_has_guard); + check_assist_not_applicable( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + let val = $0match opt { + Some(it) if 2 > 1 => it, + None => return, + }; +} +"#, + ); + } + + #[test] + fn basic_pattern() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + let val = $0match opt { + Some(it) => it, + None => return, + }; +} + "#, + r#" +fn foo(opt: Option<()>) { + let Some(val) = opt else { return }; +} + "#, + ); + } + + #[test] + fn keeps_modifiers() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + let ref mut val = $0match opt { + Some(it) => it, + None => return, + }; +} + "#, + r#" +fn foo(opt: Option<()>) { + let Some(ref mut val) = opt else { return }; +} + "#, + ); + } + + #[test] + fn nested_pattern() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option, result +fn foo(opt: Option>) { + let val = $0match opt { + Some(Ok(it)) => it, + _ => return, + }; +} + "#, + r#" +fn foo(opt: Option>) { + let Some(Ok(val)) = opt else { return }; +} + "#, + ); + } + + #[test] + fn works_with_any_diverging_block() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + loop { + let val = $0match opt { + Some(it) => it, + None => break, + }; + } +} + "#, + r#" +fn foo(opt: Option<()>) { + loop { + let Some(val) = opt else { break }; + } +} + "#, + ); + + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option<()>) { + loop { + let val = $0match opt { + Some(it) => it, + None => continue, + }; + } +} + "#, + r#" +fn foo(opt: Option<()>) { + loop { + let Some(val) = opt else { continue }; + } +} + "#, + ); + + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn panic() -> ! {} + +fn foo(opt: Option<()>) { + loop { + let val = $0match opt { + Some(it) => it, + None => panic(), + }; + } +} + "#, + r#" +fn panic() -> ! {} + +fn foo(opt: Option<()>) { + loop { + let Some(val) = opt else { panic() }; + } +} + "#, + ); + } + + #[test] + fn struct_pattern() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +struct Point { + x: i32, + y: i32, +} + +fn foo(opt: Option) { + let val = $0match opt { + Some(Point { x: 0, y }) => y, + _ => return, + }; +} + "#, + r#" +struct Point { + x: i32, + y: i32, +} + +fn foo(opt: Option) { + let Some(Point { x: 0, y: val }) = opt else { return }; +} + "#, + ); + } + + #[test] + fn renames_whole_binding() { + check_assist( + convert_match_to_let_else, + r#" +//- minicore: option +fn foo(opt: Option) -> Option { + let val = $0match opt { + it @ Some(42) => it, + _ => return None, + }; + val +} + "#, + r#" +fn foo(opt: Option) -> Option { + let val @ Some(42) = opt else { return None }; + val +} + "#, + ); + } +} diff --git a/crates/ide-assists/src/handlers/convert_to_guarded_return.rs b/crates/ide-assists/src/handlers/convert_to_guarded_return.rs index cb75619ced9c..b97be34c5f7e 100644 --- a/crates/ide-assists/src/handlers/convert_to_guarded_return.rs +++ b/crates/ide-assists/src/handlers/convert_to_guarded_return.rs @@ -129,32 +129,15 @@ pub(crate) fn convert_to_guarded_return(acc: &mut Assists, ctx: &AssistContext<' } Some((path, bound_ident)) => { // If-let. - let match_expr = { - let happy_arm = { - let pat = make::tuple_struct_pat( - path, - once(make::ext::simple_ident_pat(make::name("it")).into()), - ); - let expr = { - let path = make::ext::ident_path("it"); - make::expr_path(path) - }; - make::match_arm(once(pat.into()), None, expr) - }; - - let sad_arm = make::match_arm( - // FIXME: would be cool to use `None` or `Err(_)` if appropriate - once(make::wildcard_pat().into()), - None, - early_expression, - ); - - make::expr_match(cond_expr, make::match_arm_list(vec![happy_arm, sad_arm])) - }; - - let let_stmt = make::let_stmt(bound_ident, None, Some(match_expr)); - let let_stmt = let_stmt.indent(if_indent_level); - let_stmt.syntax().clone_for_update() + let pat = make::tuple_struct_pat(path, once(bound_ident)); + let let_else_stmt = make::let_else_stmt( + pat.into(), + None, + cond_expr, + ast::make::tail_only_block_expr(early_expression), + ); + let let_else_stmt = let_else_stmt.indent(if_indent_level); + let_else_stmt.syntax().clone_for_update() } }; @@ -238,10 +221,7 @@ fn main(n: Option) { r#" fn main(n: Option) { bar(); - let n = match n { - Some(it) => it, - _ => return, - }; + let Some(n) = n else { return }; foo(n); // comment @@ -264,10 +244,7 @@ fn main() { "#, r#" fn main() { - let x = match Err(92) { - Ok(it) => it, - _ => return, - }; + let Ok(x) = Err(92) else { return }; foo(x); } "#, @@ -292,10 +269,7 @@ fn main(n: Option) { r#" fn main(n: Option) { bar(); - let n = match n { - Some(it) => it, - _ => return, - }; + let Some(n) = n else { return }; foo(n); // comment @@ -323,10 +297,7 @@ fn main(n: Option) { r#" fn main(n: Option) { bar(); - let mut n = match n { - Some(it) => it, - _ => return, - }; + let Some(mut n) = n else { return }; foo(n); // comment @@ -354,10 +325,7 @@ fn main(n: Option<&str>) { r#" fn main(n: Option<&str>) { bar(); - let ref n = match n { - Some(it) => it, - _ => return, - }; + let Some(ref n) = n else { return }; foo(n); // comment @@ -412,10 +380,7 @@ fn main() { r#" fn main() { while true { - let n = match n { - Some(it) => it, - _ => continue, - }; + let Some(n) = n else { continue }; foo(n); bar(); } @@ -469,10 +434,7 @@ fn main() { r#" fn main() { loop { - let n = match n { - Some(it) => it, - _ => continue, - }; + let Some(n) = n else { continue }; foo(n); bar(); } diff --git a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs index d8f522708460..92e091fca126 100644 --- a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs +++ b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs @@ -226,7 +226,13 @@ fn edit_field_references( } fn generate_names(fields: impl Iterator) -> Vec { - fields.enumerate().map(|(i, _)| ast::make::name(&format!("field{}", i + 1))).collect() + fields + .enumerate() + .map(|(i, _)| { + let idx = i + 1; + ast::make::name(&format!("field{idx}")) + }) + .collect() } #[cfg(test)] diff --git a/crates/ide-assists/src/handlers/convert_two_arm_bool_match_to_matches_macro.rs b/crates/ide-assists/src/handlers/convert_two_arm_bool_match_to_matches_macro.rs index 54a7f480a4e4..b1b0f587cd33 100644 --- a/crates/ide-assists/src/handlers/convert_two_arm_bool_match_to_matches_macro.rs +++ b/crates/ide-assists/src/handlers/convert_two_arm_bool_match_to_matches_macro.rs @@ -58,16 +58,16 @@ pub(crate) fn convert_two_arm_bool_match_to_matches_macro( target_range, |builder| { let mut arm_str = String::new(); - if let Some(ref pat) = first_arm.pat() { + if let Some(pat) = &first_arm.pat() { arm_str += &pat.to_string(); } - if let Some(ref guard) = first_arm.guard() { - arm_str += &format!(" {}", &guard.to_string()); + if let Some(guard) = &first_arm.guard() { + arm_str += &format!(" {guard}"); } if invert_matches { - builder.replace(target_range, format!("!matches!({}, {})", expr, arm_str)); + builder.replace(target_range, format!("!matches!({expr}, {arm_str})")); } else { - builder.replace(target_range, format!("matches!({}, {})", expr, arm_str)); + builder.replace(target_range, format!("matches!({expr}, {arm_str})")); } }, ) diff --git a/crates/ide-assists/src/handlers/destructure_tuple_binding.rs b/crates/ide-assists/src/handlers/destructure_tuple_binding.rs index dc581ff3bd2c..31c2ce7c1b54 100644 --- a/crates/ide-assists/src/handlers/destructure_tuple_binding.rs +++ b/crates/ide-assists/src/handlers/destructure_tuple_binding.rs @@ -133,7 +133,7 @@ fn generate_name( _usages: &Option, ) -> String { // FIXME: detect if name already used - format!("_{}", index) + format!("_{index}") } enum RefType { @@ -168,12 +168,12 @@ fn edit_tuple_assignment( let add_cursor = |text: &str| { // place cursor on first tuple item let first_tuple = &data.field_names[0]; - text.replacen(first_tuple, &format!("$0{}", first_tuple), 1) + text.replacen(first_tuple, &format!("$0{first_tuple}"), 1) }; // with sub_pattern: keep original tuple and add subpattern: `tup @ (_0, _1)` if in_sub_pattern { - let text = format!(" @ {}", tuple_pat); + let text = format!(" @ {tuple_pat}"); match ctx.config.snippet_cap { Some(cap) => { let snip = add_cursor(&text); @@ -314,9 +314,9 @@ struct RefData { impl RefData { fn format(&self, field_name: &str) -> String { match (self.needs_deref, self.needs_parentheses) { - (true, true) => format!("(*{})", field_name), - (true, false) => format!("*{}", field_name), - (false, true) => format!("({})", field_name), + (true, true) => format!("(*{field_name})"), + (true, false) => format!("*{field_name}"), + (false, true) => format!("({field_name})"), (false, false) => field_name.to_string(), } } diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index d6c8ea785f84..060588358492 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -181,7 +181,7 @@ fn make_function_name(semantics_scope: &hir::SemanticsScope<'_>) -> ast::NameRef let mut counter = 0; while names_in_scope.contains(&name) { counter += 1; - name = format!("{}{}", &default_name, counter) + name = format!("{default_name}{counter}") } make::name_ref(&name) } @@ -1291,19 +1291,23 @@ fn make_call(ctx: &AssistContext<'_>, fun: &Function, indent: IndentLevel) -> St match fun.outliving_locals.as_slice() { [] => {} [var] => { - format_to!(buf, "let {}{} = ", mut_modifier(var), var.local.name(ctx.db())) + let modifier = mut_modifier(var); + let name = var.local.name(ctx.db()); + format_to!(buf, "let {modifier}{name} = ") } vars => { buf.push_str("let ("); let bindings = vars.iter().format_with(", ", |local, f| { - f(&format_args!("{}{}", mut_modifier(local), local.local.name(ctx.db()))) + let modifier = mut_modifier(local); + let name = local.local.name(ctx.db()); + f(&format_args!("{modifier}{name}")) }); - format_to!(buf, "{}", bindings); + format_to!(buf, "{bindings}"); buf.push_str(") = "); } } - format_to!(buf, "{}", expr); + format_to!(buf, "{expr}"); let insert_comma = fun .body .parent() @@ -1447,6 +1451,8 @@ fn format_function( new_indent: IndentLevel, ) -> String { let mut fn_def = String::new(); + + let fun_name = &fun.name; let params = fun.make_param_list(ctx, module); let ret_ty = fun.make_ret_ty(ctx, module); let body = make_body(ctx, old_indent, new_indent, fun); @@ -1454,42 +1460,28 @@ fn format_function( let async_kw = if fun.control_flow.is_async { "async " } else { "" }; let unsafe_kw = if fun.control_flow.is_unsafe { "unsafe " } else { "" }; let (generic_params, where_clause) = make_generic_params_and_where_clause(ctx, fun); + + format_to!(fn_def, "\n\n{new_indent}{const_kw}{async_kw}{unsafe_kw}"); match ctx.config.snippet_cap { - Some(_) => format_to!( - fn_def, - "\n\n{}{}{}{}fn $0{}", - new_indent, - const_kw, - async_kw, - unsafe_kw, - fun.name, - ), - None => format_to!( - fn_def, - "\n\n{}{}{}{}fn {}", - new_indent, - const_kw, - async_kw, - unsafe_kw, - fun.name, - ), + Some(_) => format_to!(fn_def, "fn $0{fun_name}"), + None => format_to!(fn_def, "fn {fun_name}"), } if let Some(generic_params) = generic_params { - format_to!(fn_def, "{}", generic_params); + format_to!(fn_def, "{generic_params}"); } - format_to!(fn_def, "{}", params); + format_to!(fn_def, "{params}"); if let Some(ret_ty) = ret_ty { - format_to!(fn_def, " {}", ret_ty); + format_to!(fn_def, " {ret_ty}"); } if let Some(where_clause) = where_clause { - format_to!(fn_def, " {}", where_clause); + format_to!(fn_def, " {where_clause}"); } - format_to!(fn_def, " {}", body); + format_to!(fn_def, " {body}"); fn_def } diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs index 897980c66504..56834394aeba 100644 --- a/crates/ide-assists/src/handlers/extract_module.rs +++ b/crates/ide-assists/src/handlers/extract_module.rs @@ -127,7 +127,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti for item in items_to_be_processed { let item = item.indent(IndentLevel(1)); let mut indented_item = String::new(); - format_to!(indented_item, "{}{}", new_item_indent, item.to_string()); + format_to!(indented_item, "{new_item_indent}{item}"); body_items.push(indented_item); } @@ -137,30 +137,28 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let mut impl_body_def = String::new(); if let Some(self_ty) = impl_.self_ty() { - format_to!( - impl_body_def, - "{}impl {} {{\n{}\n{}}}", - old_item_indent + 1, - self_ty.to_string(), - body, - old_item_indent + 1 - ); - + { + let impl_indent = old_item_indent + 1; + format_to!( + impl_body_def, + "{impl_indent}impl {self_ty} {{\n{body}\n{impl_indent}}}", + ); + } body = impl_body_def; // Add the import for enum/struct corresponding to given impl block module.make_use_stmt_of_node_with_super(self_ty.syntax()); for item in module.use_items { - let mut indented_item = String::new(); - format_to!(indented_item, "{}{}", old_item_indent + 1, item.to_string()); - body = format!("{}\n\n{}", indented_item, body); + let item_indent = old_item_indent + 1; + body = format!("{item_indent}{item}\n\n{body}"); } } } let mut module_def = String::new(); - format_to!(module_def, "mod {} {{\n{}\n{}}}", module.name, body, old_item_indent); + let module_name = module.name; + format_to!(module_def, "mod {module_name} {{\n{body}\n{old_item_indent}}}"); let mut usages_to_be_updated_for_curr_file = vec![]; for usages_to_be_updated_for_file in usages_to_be_processed { @@ -199,7 +197,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti builder.delete(range); } - builder.insert(impl_.syntax().text_range().end(), format!("\n\n{}", module_def)); + builder.insert(impl_.syntax().text_range().end(), format!("\n\n{module_def}")); } else { builder.replace(module.text_range, module_def) } @@ -343,9 +341,10 @@ impl Module { && !self.text_range.contains_range(desc.text_range()) { if let Some(name_ref) = ast::NameRef::cast(desc) { + let mod_name = self.name; return Some(( name_ref.syntax().text_range(), - format!("{}::{}", self.name, name_ref), + format!("{mod_name}::{name_ref}"), )); } } diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index 970e948dfd93..b4e10667b07a 100644 --- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs @@ -296,10 +296,14 @@ fn create_struct_def( fn update_variant(variant: &ast::Variant, generics: Option) -> Option<()> { let name = variant.name()?; - let ty = generics + let generic_args = generics .filter(|generics| generics.generic_params().count() > 0) - .map(|generics| make::ty(&format!("{}{}", &name.text(), generics.to_generic_args()))) - .unwrap_or_else(|| make::ty(&name.text())); + .map(|generics| generics.to_generic_args()); + // FIXME: replace with a `ast::make` constructor + let ty = match generic_args { + Some(generic_args) => make::ty(&format!("{name}{generic_args}")), + None => make::ty(&name.text()), + }; // change from a record to a tuple field list let tuple_field = make::tuple_field(None, ty); diff --git a/crates/ide-assists/src/handlers/extract_type_alias.rs b/crates/ide-assists/src/handlers/extract_type_alias.rs index 03aa8601d14e..3116935fc5e7 100644 --- a/crates/ide-assists/src/handlers/extract_type_alias.rs +++ b/crates/ide-assists/src/handlers/extract_type_alias.rs @@ -1,8 +1,7 @@ use either::Either; use ide_db::syntax_helpers::node_ext::walk_ty; -use itertools::Itertools; use syntax::{ - ast::{self, edit::IndentLevel, AstNode, HasGenericParams, HasName}, + ast::{self, edit::IndentLevel, make, AstNode, HasGenericParams, HasName}, match_ast, }; @@ -64,41 +63,29 @@ pub(crate) fn extract_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> known_generics.extend(it.generic_params()); } let generics = collect_used_generics(&ty, &known_generics); + let generic_params = + generics.map(|it| make::generic_param_list(it.into_iter().cloned())); - let replacement = if !generics.is_empty() { - format!( - "Type<{}>", - generics.iter().format_with(", ", |generic, f| { - match generic { - ast::GenericParam::ConstParam(cp) => f(&cp.name().unwrap()), - ast::GenericParam::LifetimeParam(lp) => f(&lp.lifetime().unwrap()), - ast::GenericParam::TypeParam(tp) => f(&tp.name().unwrap()), - } - }) - ) - } else { - String::from("Type") - }; + let ty_args = generic_params + .as_ref() + .map_or(String::new(), |it| it.to_generic_args().to_string()); + let replacement = format!("Type{ty_args}"); builder.replace(target, replacement); let indent = IndentLevel::from_node(node); - let generics = if !generics.is_empty() { - format!("<{}>", generics.iter().format(", ")) - } else { - String::new() - }; + let generic_params = generic_params.map_or(String::new(), |it| it.to_string()); match ctx.config.snippet_cap { Some(cap) => { builder.insert_snippet( cap, insert_pos, - format!("type $0Type{} = {};\n\n{}", generics, ty, indent), + format!("type $0Type{generic_params} = {ty};\n\n{indent}"), ); } None => { builder.insert( insert_pos, - format!("type Type{} = {};\n\n{}", generics, ty, indent), + format!("type Type{generic_params} = {ty};\n\n{indent}"), ); } } @@ -109,7 +96,7 @@ pub(crate) fn extract_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> fn collect_used_generics<'gp>( ty: &ast::Type, known_generics: &'gp [ast::GenericParam], -) -> Vec<&'gp ast::GenericParam> { +) -> Option> { // can't use a closure -> closure here cause lifetime inference fails for that fn find_lifetime(text: &str) -> impl Fn(&&ast::GenericParam) -> bool + '_ { move |gp: &&ast::GenericParam| match gp { @@ -198,7 +185,8 @@ fn collect_used_generics<'gp>( ast::GenericParam::LifetimeParam(_) => 0, ast::GenericParam::TypeParam(_) => 1, }); - generics + + Some(generics).filter(|it| it.len() > 0) } #[cfg(test)] diff --git a/crates/ide-assists/src/handlers/extract_variable.rs b/crates/ide-assists/src/handlers/extract_variable.rs index 3596b6f82381..a738deffb95b 100644 --- a/crates/ide-assists/src/handlers/extract_variable.rs +++ b/crates/ide-assists/src/handlers/extract_variable.rs @@ -91,13 +91,13 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op match anchor { Anchor::Before(_) | Anchor::Replace(_) => { - format_to!(buf, "let {}{} = {}", var_modifier, var_name, reference_modifier) + format_to!(buf, "let {var_modifier}{var_name} = {reference_modifier}") } Anchor::WrapInBlock(_) => { - format_to!(buf, "{{ let {} = {}", var_name, reference_modifier) + format_to!(buf, "{{ let {var_name} = {reference_modifier}") } }; - format_to!(buf, "{}", to_extract.syntax()); + format_to!(buf, "{to_extract}"); if let Anchor::Replace(stmt) = anchor { cov_mark::hit!(test_extract_var_expr_stmt); @@ -107,8 +107,8 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op match ctx.config.snippet_cap { Some(cap) => { let snip = buf.replace( - &format!("let {}{}", var_modifier, var_name), - &format!("let {}$0{}", var_modifier, var_name), + &format!("let {var_modifier}{var_name}"), + &format!("let {var_modifier}$0{var_name}"), ); edit.replace_snippet(cap, expr_range, snip) } @@ -135,8 +135,8 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op match ctx.config.snippet_cap { Some(cap) => { let snip = buf.replace( - &format!("let {}{}", var_modifier, var_name), - &format!("let {}$0{}", var_modifier, var_name), + &format!("let {var_modifier}{var_name}"), + &format!("let {var_modifier}$0{var_name}"), ); edit.insert_snippet(cap, offset, snip) } diff --git a/crates/ide-assists/src/handlers/fix_visibility.rs b/crates/ide-assists/src/handlers/fix_visibility.rs index b33846f54665..876454302870 100644 --- a/crates/ide-assists/src/handlers/fix_visibility.rs +++ b/crates/ide-assists/src/handlers/fix_visibility.rs @@ -57,8 +57,8 @@ fn add_vis_to_referenced_module_def(acc: &mut Assists, ctx: &AssistContext<'_>) if current_module.krate() == target_module.krate() { "pub(crate)" } else { "pub" }; let assist_label = match target_name { - None => format!("Change visibility to {}", missing_visibility), - Some(name) => format!("Change visibility of {} to {}", name, missing_visibility), + None => format!("Change visibility to {missing_visibility}"), + Some(name) => format!("Change visibility of {name} to {missing_visibility}"), }; acc.add(AssistId("fix_visibility", AssistKind::QuickFix), assist_label, target, |builder| { @@ -68,15 +68,15 @@ fn add_vis_to_referenced_module_def(acc: &mut Assists, ctx: &AssistContext<'_>) Some(current_visibility) => builder.replace_snippet( cap, current_visibility.syntax().text_range(), - format!("$0{}", missing_visibility), + format!("$0{missing_visibility}"), ), - None => builder.insert_snippet(cap, offset, format!("$0{} ", missing_visibility)), + None => builder.insert_snippet(cap, offset, format!("$0{missing_visibility} ")), }, None => match current_visibility { Some(current_visibility) => { builder.replace(current_visibility.syntax().text_range(), missing_visibility) } - None => builder.insert(offset, format!("{} ", missing_visibility)), + None => builder.insert(offset, format!("{missing_visibility} ")), }, } }) @@ -114,7 +114,7 @@ fn add_vis_to_referenced_record_field(acc: &mut Assists, ctx: &AssistContext<'_> let target_name = record_field_def.name(ctx.db()); let assist_label = - format!("Change visibility of {}.{} to {}", parent_name, target_name, missing_visibility); + format!("Change visibility of {parent_name}.{target_name} to {missing_visibility}"); acc.add(AssistId("fix_visibility", AssistKind::QuickFix), assist_label, target, |builder| { builder.edit_file(target_file); @@ -123,15 +123,15 @@ fn add_vis_to_referenced_record_field(acc: &mut Assists, ctx: &AssistContext<'_> Some(current_visibility) => builder.replace_snippet( cap, current_visibility.syntax().text_range(), - format!("$0{}", missing_visibility), + format!("$0{missing_visibility}"), ), - None => builder.insert_snippet(cap, offset, format!("$0{} ", missing_visibility)), + None => builder.insert_snippet(cap, offset, format!("$0{missing_visibility} ")), }, None => match current_visibility { Some(current_visibility) => { builder.replace(current_visibility.syntax().text_range(), missing_visibility) } - None => builder.insert(offset, format!("{} ", missing_visibility)), + None => builder.insert(offset, format!("{missing_visibility} ")), }, } }) diff --git a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs index bdd3cf4f06c2..c9aa41c845ad 100644 --- a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs +++ b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs @@ -124,6 +124,7 @@ fn generate_enum_projection_method( happy_case, sad_case, } = props; + let variant = ctx.find_node_at_offset::()?; let variant_name = variant.name()?; let parent_enum = ast::Adt::Enum(variant.parent_enum()); @@ -144,7 +145,7 @@ fn generate_enum_projection_method( ast::StructKind::Unit => return None, }; - let fn_name = format!("{}_{}", fn_name_prefix, &to_lower_snake_case(&variant_name.text())); + let fn_name = format!("{fn_name_prefix}_{}", &to_lower_snake_case(&variant_name.text())); // Return early if we've found an existing new fn let impl_def = find_struct_impl(ctx, &parent_enum, &[fn_name.clone()])?; @@ -156,15 +157,25 @@ fn generate_enum_projection_method( assist_description, target, |builder| { - let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{v} ")); + let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{} ", v)); + + let field_type_syntax = field_type.syntax(); + + let must_use = if ctx.config.assist_emit_must_use { + "#[must_use]\n " + } else { + "" + }; + let method = format!( - " {vis}fn {fn_name}({self_param}) -> {return_prefix}{field_type}{return_suffix} {{ + " {must_use}{vis}fn {fn_name}({self_param}) -> {return_prefix}{field_type_syntax}{return_suffix} {{ if let Self::{variant_name}{pattern_suffix} = self {{ {happy_case}({bound_name}) }} else {{ {sad_case} }} - }}"); + }}" + ); add_method_to_adt(builder, &parent_enum, impl_def, &method); }, diff --git a/crates/ide-assists/src/handlers/inline_call.rs b/crates/ide-assists/src/handlers/inline_call.rs index 9f51cdaf8b1e..0c546ce5d41c 100644 --- a/crates/ide-assists/src/handlers/inline_call.rs +++ b/crates/ide-assists/src/handlers/inline_call.rs @@ -1,3 +1,5 @@ +use std::collections::BTreeSet; + use ast::make; use either::Either; use hir::{db::HirDatabase, PathResolution, Semantics, TypeInfo}; @@ -190,10 +192,10 @@ pub(crate) fn inline_call(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option< PathResolution::Def(hir::ModuleDef::Function(f)) => f, _ => return None, }; - (function, format!("Inline `{}`", path)) + (function, format!("Inline `{path}`")) } ast::CallableExpr::MethodCall(call) => { - (ctx.sema.resolve_method_call(call)?, format!("Inline `{}`", name_ref)) + (ctx.sema.resolve_method_call(call)?, format!("Inline `{name_ref}`")) } }; @@ -373,8 +375,44 @@ fn inline( }) } } + + let mut func_let_vars: BTreeSet = BTreeSet::new(); + + // grab all of the local variable declarations in the function + for stmt in fn_body.statements() { + if let Some(let_stmt) = ast::LetStmt::cast(stmt.syntax().to_owned()) { + for has_token in let_stmt.syntax().children_with_tokens() { + if let Some(node) = has_token.as_node() { + if let Some(ident_pat) = ast::IdentPat::cast(node.to_owned()) { + func_let_vars.insert(ident_pat.syntax().text().to_string()); + } + } + } + } + } + // Inline parameter expressions or generate `let` statements depending on whether inlining works or not. for ((pat, param_ty, _), usages, expr) in izip!(params, param_use_nodes, arguments).rev() { + // izip confuses RA due to our lack of hygiene info currently losing us type info causing incorrect errors + let usages: &[ast::PathExpr] = &*usages; + let expr: &ast::Expr = expr; + + let insert_let_stmt = || { + let ty = sema.type_of_expr(expr).filter(TypeInfo::has_adjustment).and(param_ty.clone()); + if let Some(stmt_list) = body.stmt_list() { + stmt_list.push_front( + make::let_stmt(pat.clone(), ty, Some(expr.clone())).clone_for_update().into(), + ) + } + }; + + // check if there is a local var in the function that conflicts with parameter + // if it does then emit a let statement and continue + if func_let_vars.contains(&expr.syntax().text().to_string()) { + insert_let_stmt(); + continue; + } + let inline_direct = |usage, replacement: &ast::Expr| { if let Some(field) = path_expr_as_record_field(usage) { cov_mark::hit!(inline_call_inline_direct_field); @@ -383,9 +421,7 @@ fn inline( ted::replace(usage.syntax(), &replacement.syntax().clone_for_update()); } }; - // izip confuses RA due to our lack of hygiene info currently losing us type info causing incorrect errors - let usages: &[ast::PathExpr] = &*usages; - let expr: &ast::Expr = expr; + match usages { // inline single use closure arguments [usage] @@ -408,18 +444,11 @@ fn inline( } // can't inline, emit a let statement _ => { - let ty = - sema.type_of_expr(expr).filter(TypeInfo::has_adjustment).and(param_ty.clone()); - if let Some(stmt_list) = body.stmt_list() { - stmt_list.push_front( - make::let_stmt(pat.clone(), ty, Some(expr.clone())) - .clone_for_update() - .into(), - ) - } + insert_let_stmt(); } } } + if let Some(generic_arg_list) = generic_arg_list.clone() { if let Some((target, source)) = &sema.scope(node.syntax()).zip(sema.scope(fn_body.syntax())) { @@ -1256,4 +1285,37 @@ impl A { "#, ) } + + #[test] + fn local_variable_shadowing_callers_argument() { + check_assist( + inline_call, + r#" +fn foo(bar: u32, baz: u32) -> u32 { + let a = 1; + bar * baz * a * 6 +} +fn main() { + let a = 7; + let b = 1; + let res = foo$0(a, b); +} +"#, + r#" +fn foo(bar: u32, baz: u32) -> u32 { + let a = 1; + bar * baz * a * 6 +} +fn main() { + let a = 7; + let b = 1; + let res = { + let bar = a; + let a = 1; + bar * b * a * 6 + }; +} +"#, + ); + } } diff --git a/crates/ide-assists/src/handlers/inline_local_variable.rs b/crates/ide-assists/src/handlers/inline_local_variable.rs index 7259d6781941..ce44100e34be 100644 --- a/crates/ide-assists/src/handlers/inline_local_variable.rs +++ b/crates/ide-assists/src/handlers/inline_local_variable.rs @@ -113,7 +113,7 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext<'_>) .collect::>>()?; let init_str = initializer_expr.syntax().text().to_string(); - let init_in_paren = format!("({})", &init_str); + let init_in_paren = format!("({init_str})"); let target = match target { ast::NameOrNameRef::Name(it) => it.syntax().text_range(), @@ -132,7 +132,7 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext<'_>) let replacement = if should_wrap { &init_in_paren } else { &init_str }; if ast::RecordExprField::for_field_name(&name).is_some() { cov_mark::hit!(inline_field_shorthand); - builder.insert(range.end(), format!(": {}", replacement)); + builder.insert(range.end(), format!(": {replacement}")); } else { builder.replace(range, replacement.clone()) } diff --git a/crates/ide-assists/src/handlers/introduce_named_lifetime.rs b/crates/ide-assists/src/handlers/introduce_named_lifetime.rs index 2fc754e3e50d..a54dc4f96de0 100644 --- a/crates/ide-assists/src/handlers/introduce_named_lifetime.rs +++ b/crates/ide-assists/src/handlers/introduce_named_lifetime.rs @@ -127,7 +127,7 @@ fn generate_unique_lifetime_param_name( Some(type_params) => { let used_lifetime_params: FxHashSet<_> = type_params.lifetime_params().map(|p| p.syntax().text().to_string()).collect(); - ('a'..='z').map(|it| format!("'{}", it)).find(|it| !used_lifetime_params.contains(it)) + ('a'..='z').map(|it| format!("'{it}")).find(|it| !used_lifetime_params.contains(it)) } None => Some("'a".to_string()), } diff --git a/crates/ide-assists/src/handlers/merge_match_arms.rs b/crates/ide-assists/src/handlers/merge_match_arms.rs index c24015b1c517..641c90885bf5 100644 --- a/crates/ide-assists/src/handlers/merge_match_arms.rs +++ b/crates/ide-assists/src/handlers/merge_match_arms.rs @@ -78,7 +78,7 @@ pub(crate) fn merge_match_arms(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op .join(" | ") }; - let arm = format!("{} => {},", pats, current_expr.syntax().text()); + let arm = format!("{pats} => {current_expr},"); if let [first, .., last] = &*arms_to_merge { let start = first.syntax().text_range().start(); diff --git a/crates/ide-assists/src/handlers/move_from_mod_rs.rs b/crates/ide-assists/src/handlers/move_from_mod_rs.rs index a6c85a2b18b3..1728c03cd03e 100644 --- a/crates/ide-assists/src/handlers/move_from_mod_rs.rs +++ b/crates/ide-assists/src/handlers/move_from_mod_rs.rs @@ -40,11 +40,11 @@ pub(crate) fn move_from_mod_rs(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op let target = source_file.syntax().text_range(); let module_name = module.name(ctx.db())?.to_string(); - let path = format!("../{}.rs", module_name); + let path = format!("../{module_name}.rs"); let dst = AnchoredPathBuf { anchor: ctx.file_id(), path }; acc.add( AssistId("move_from_mod_rs", AssistKind::Refactor), - format!("Convert {}/mod.rs to {}.rs", module_name, module_name), + format!("Convert {module_name}/mod.rs to {module_name}.rs"), target, |builder| { builder.move_file(ctx.file_id(), dst); diff --git a/crates/ide-assists/src/handlers/move_guard.rs b/crates/ide-assists/src/handlers/move_guard.rs index b8f1b36deb93..ec3281619cc3 100644 --- a/crates/ide-assists/src/handlers/move_guard.rs +++ b/crates/ide-assists/src/handlers/move_guard.rs @@ -133,16 +133,16 @@ pub(crate) fn move_arm_cond_to_match_guard( }; let then_arm_end = match_arm.syntax().text_range().end(); let indent_level = match_arm.indent_level(); - let spaces = " ".repeat(indent_level.0 as _); + let spaces = indent_level; let mut first = true; for (cond, block) in conds_blocks { if !first { - edit.insert(then_arm_end, format!("\n{}", spaces)); + edit.insert(then_arm_end, format!("\n{spaces}")); } else { first = false; } - let guard = format!("{} if {} => ", match_pat, cond.syntax().text()); + let guard = format!("{match_pat} if {cond} => "); edit.insert(then_arm_end, guard); let only_expr = block.statements().next().is_none(); match &block.tail_expr() { @@ -158,7 +158,7 @@ pub(crate) fn move_arm_cond_to_match_guard( } if let Some(e) = tail { cov_mark::hit!(move_guard_ifelse_else_tail); - let guard = format!("\n{}{} => ", spaces, match_pat); + let guard = format!("\n{spaces}{match_pat} => "); edit.insert(then_arm_end, guard); let only_expr = e.statements().next().is_none(); match &e.tail_expr() { @@ -183,7 +183,7 @@ pub(crate) fn move_arm_cond_to_match_guard( { cov_mark::hit!(move_guard_ifelse_has_wildcard); } - _ => edit.insert(then_arm_end, format!("\n{}{} => {{}}", spaces, match_pat)), + _ => edit.insert(then_arm_end, format!("\n{spaces}{match_pat} => {{}}")), } } }, diff --git a/crates/ide-assists/src/handlers/move_module_to_file.rs b/crates/ide-assists/src/handlers/move_module_to_file.rs index 7468318a594a..a7c605325ea6 100644 --- a/crates/ide-assists/src/handlers/move_module_to_file.rs +++ b/crates/ide-assists/src/handlers/move_module_to_file.rs @@ -52,7 +52,7 @@ pub(crate) fn move_module_to_file(acc: &mut Assists, ctx: &AssistContext<'_>) -> let mut buf = String::from("./"); match parent_module.name(ctx.db()) { Some(name) if !parent_module.is_mod_rs(ctx.db()) => { - format_to!(buf, "{}/", name) + format_to!(buf, "{name}/") } _ => (), } @@ -82,7 +82,7 @@ pub(crate) fn move_module_to_file(acc: &mut Assists, ctx: &AssistContext<'_>) -> items }; - let buf = format!("mod {};", module_name); + let buf = format!("mod {module_name};"); let replacement_start = match module_ast.mod_token() { Some(mod_token) => mod_token.text_range(), diff --git a/crates/ide-assists/src/handlers/move_to_mod_rs.rs b/crates/ide-assists/src/handlers/move_to_mod_rs.rs index a909ce8b2679..076d25411a81 100644 --- a/crates/ide-assists/src/handlers/move_to_mod_rs.rs +++ b/crates/ide-assists/src/handlers/move_to_mod_rs.rs @@ -40,11 +40,11 @@ pub(crate) fn move_to_mod_rs(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let target = source_file.syntax().text_range(); let module_name = module.name(ctx.db())?.to_string(); - let path = format!("./{}/mod.rs", module_name); + let path = format!("./{module_name}/mod.rs"); let dst = AnchoredPathBuf { anchor: ctx.file_id(), path }; acc.add( AssistId("move_to_mod_rs", AssistKind::Refactor), - format!("Convert {}.rs to {}/mod.rs", module_name, module_name), + format!("Convert {module_name}.rs to {module_name}/mod.rs"), target, |builder| { builder.move_file(ctx.file_id(), dst); diff --git a/crates/ide-assists/src/handlers/number_representation.rs b/crates/ide-assists/src/handlers/number_representation.rs index 424db7437a74..7e3fef516bfd 100644 --- a/crates/ide-assists/src/handlers/number_representation.rs +++ b/crates/ide-assists/src/handlers/number_representation.rs @@ -38,7 +38,7 @@ pub(crate) fn reformat_number_literal(acc: &mut Assists, ctx: &AssistContext<'_> converted.push_str(suffix); let group_id = GroupLabel("Reformat number literal".into()); - let label = format!("Convert {} to {}", literal, converted); + let label = format!("Convert {literal} to {converted}"); let range = literal.syntax().text_range(); acc.add_group( &group_id, diff --git a/crates/ide-assists/src/handlers/qualify_method_call.rs b/crates/ide-assists/src/handlers/qualify_method_call.rs index e57d1d065d62..1ea87429c509 100644 --- a/crates/ide-assists/src/handlers/qualify_method_call.rs +++ b/crates/ide-assists/src/handlers/qualify_method_call.rs @@ -54,7 +54,7 @@ pub(crate) fn qualify_method_call(acc: &mut Assists, ctx: &AssistContext<'_>) -> acc.add( AssistId("qualify_method_call", AssistKind::RefactorInline), - format!("Qualify `{}` method call", ident.text()), + format!("Qualify `{ident}` method call"), range, |builder| { qualify_candidate.qualify( diff --git a/crates/ide-assists/src/handlers/qualify_path.rs b/crates/ide-assists/src/handlers/qualify_path.rs index 4b2af550bc5e..e759e1561cbd 100644 --- a/crates/ide-assists/src/handlers/qualify_path.rs +++ b/crates/ide-assists/src/handlers/qualify_path.rs @@ -118,14 +118,14 @@ impl QualifyCandidate<'_> { match self { QualifyCandidate::QualifierStart(segment, generics) => { let generics = generics.as_ref().map_or_else(String::new, ToString::to_string); - replacer(format!("{}{}::{}", import, generics, segment)); + replacer(format!("{import}{generics}::{segment}")); } QualifyCandidate::UnqualifiedName(generics) => { let generics = generics.as_ref().map_or_else(String::new, ToString::to_string); - replacer(format!("{}{}", import, generics)); + replacer(format!("{import}{generics}")); } QualifyCandidate::TraitAssocItem(qualifier, segment) => { - replacer(format!("<{} as {}>::{}", qualifier, import, segment)); + replacer(format!("<{qualifier} as {import}>::{segment}")); } QualifyCandidate::TraitMethod(db, mcall_expr) => { Self::qualify_trait_method(db, mcall_expr, replacer, import, item); @@ -155,16 +155,11 @@ impl QualifyCandidate<'_> { hir::Access::Exclusive => make::expr_ref(receiver, true), hir::Access::Owned => receiver, }; - replacer(format!( - "{}::{}{}{}", - import, - method_name, - generics, - match arg_list { - Some(args) => make::arg_list(iter::once(receiver).chain(args)), - None => make::arg_list(iter::once(receiver)), - } - )); + let arg_list = match arg_list { + Some(args) => make::arg_list(iter::once(receiver).chain(args)), + None => make::arg_list(iter::once(receiver)), + }; + replacer(format!("{import}::{method_name}{generics}{arg_list}")); } Some(()) } @@ -218,15 +213,17 @@ fn group_label(candidate: &ImportCandidate) -> GroupLabel { } } .text(); - GroupLabel(format!("Qualify {}", name)) + GroupLabel(format!("Qualify {name}")) } fn label(candidate: &ImportCandidate, import: &LocatedImport) -> String { + let import_path = &import.import_path; + match candidate { ImportCandidate::Path(candidate) if candidate.qualifier.is_none() => { - format!("Qualify as `{}`", import.import_path) + format!("Qualify as `{import_path}`") } - _ => format!("Qualify with `{}`", import.import_path), + _ => format!("Qualify with `{import_path}`"), } } diff --git a/crates/ide-assists/src/handlers/raw_string.rs b/crates/ide-assists/src/handlers/raw_string.rs index dbe8cb7bf031..c9bc25b27a5e 100644 --- a/crates/ide-assists/src/handlers/raw_string.rs +++ b/crates/ide-assists/src/handlers/raw_string.rs @@ -34,13 +34,10 @@ pub(crate) fn make_raw_string(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt let hashes = "#".repeat(required_hashes(&value).max(1)); if matches!(value, Cow::Borrowed(_)) { // Avoid replacing the whole string to better position the cursor. - edit.insert(token.syntax().text_range().start(), format!("r{}", hashes)); + edit.insert(token.syntax().text_range().start(), format!("r{hashes}")); edit.insert(token.syntax().text_range().end(), hashes); } else { - edit.replace( - token.syntax().text_range(), - format!("r{}\"{}\"{}", hashes, value, hashes), - ); + edit.replace(token.syntax().text_range(), format!("r{hashes}\"{value}\"{hashes}")); } }, ) @@ -83,7 +80,7 @@ pub(crate) fn make_usual_string(acc: &mut Assists, ctx: &AssistContext<'_>) -> O } } - edit.replace(token.syntax().text_range(), format!("\"{}\"", escaped)); + edit.replace(token.syntax().text_range(), format!("\"{escaped}\"")); }, ) } diff --git a/crates/ide-assists/src/handlers/remove_dbg.rs b/crates/ide-assists/src/handlers/remove_dbg.rs index afaa7c933c73..3d9cbff177ba 100644 --- a/crates/ide-assists/src/handlers/remove_dbg.rs +++ b/crates/ide-assists/src/handlers/remove_dbg.rs @@ -102,7 +102,7 @@ pub(crate) fn remove_dbg(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<( }; ( macro_call.syntax().text_range(), - if wrap { format!("({})", expr) } else { expr.to_string() }, + if wrap { format!("({expr})") } else { expr.to_string() }, ) } // dbg!(expr0, expr1, ...) @@ -127,8 +127,8 @@ mod tests { fn check(ra_fixture_before: &str, ra_fixture_after: &str) { check_assist( remove_dbg, - &format!("fn main() {{\n{}\n}}", ra_fixture_before), - &format!("fn main() {{\n{}\n}}", ra_fixture_after), + &format!("fn main() {{\n{ra_fixture_before}\n}}"), + &format!("fn main() {{\n{ra_fixture_after}\n}}"), ); } diff --git a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs index 9fd5e1886d20..f9ba289ee175 100644 --- a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs @@ -124,7 +124,7 @@ fn add_assist( ) -> Option<()> { let target = attr.syntax().text_range(); let annotated_name = adt.name()?; - let label = format!("Convert to manual `impl {} for {}`", replace_trait_path, annotated_name); + let label = format!("Convert to manual `impl {replace_trait_path} for {annotated_name}`"); acc.add( AssistId("replace_derive_with_manual_impl", AssistKind::Refactor), @@ -158,11 +158,8 @@ fn add_assist( } } - builder.insert_snippet( - cap, - insert_pos, - format!("\n\n{}", render_snippet(cap, impl_def.syntax(), cursor)), - ) + let rendered = render_snippet(cap, impl_def.syntax(), cursor); + builder.insert_snippet(cap, insert_pos, format!("\n\n{rendered}")) } }; }, diff --git a/crates/ide-assists/src/handlers/replace_or_with_or_else.rs b/crates/ide-assists/src/handlers/replace_or_with_or_else.rs index 7d91be621013..77382056c183 100644 --- a/crates/ide-assists/src/handlers/replace_or_with_or_else.rs +++ b/crates/ide-assists/src/handlers/replace_or_with_or_else.rs @@ -62,7 +62,7 @@ pub(crate) fn replace_or_with_or_else(acc: &mut Assists, ctx: &AssistContext<'_> acc.add( AssistId("replace_or_with_or_else", AssistKind::RefactorRewrite), - format!("Replace {} with {}", name.text(), replace), + format!("Replace {name} with {replace}"), call.syntax().text_range(), |builder| { builder.replace(name.syntax().text_range(), replace); @@ -138,7 +138,7 @@ pub(crate) fn replace_or_else_with_or(acc: &mut Assists, ctx: &AssistContext<'_> acc.add( AssistId("replace_or_else_with_or", AssistKind::RefactorRewrite), - format!("Replace {} with {}", name.text(), replace), + format!("Replace {name} with {replace}"), call.syntax().text_range(), |builder| { builder.replace(name.syntax().text_range(), replace); diff --git a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs index 521447c26dfb..c177adc7a10d 100644 --- a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs +++ b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs @@ -79,7 +79,7 @@ pub(crate) fn replace_turbofish_with_explicit_type( "Replace turbofish with explicit type", TextRange::new(initializer_start, turbofish_range.end()), |builder| { - builder.insert(ident_range.end(), format!(": {}", returned_type)); + builder.insert(ident_range.end(), format!(": {returned_type}")); builder.delete(turbofish_range); }, ); diff --git a/crates/ide-assists/src/handlers/unnecessary_async.rs b/crates/ide-assists/src/handlers/unnecessary_async.rs index d5cd2d551349..043988322533 100644 --- a/crates/ide-assists/src/handlers/unnecessary_async.rs +++ b/crates/ide-assists/src/handlers/unnecessary_async.rs @@ -44,6 +44,12 @@ pub(crate) fn unnecessary_async(acc: &mut Assists, ctx: &AssistContext<'_>) -> O if function.body()?.syntax().descendants().find_map(ast::AwaitExpr::cast).is_some() { return None; } + // Do nothing if the method is a member of trait. + if let Some(impl_) = function.syntax().ancestors().nth(2).and_then(ast::Impl::cast) { + if let Some(_) = impl_.trait_() { + return None; + } + } // Remove the `async` keyword plus whitespace after it, if any. let async_range = { @@ -254,4 +260,18 @@ pub async fn f(s: &S) { s.f2() }"#, fn does_not_apply_when_not_on_prototype() { check_assist_not_applicable(unnecessary_async, "pub async fn f() { $0f2() }") } + + #[test] + fn does_not_apply_on_async_trait_method() { + check_assist_not_applicable( + unnecessary_async, + r#" +trait Trait { + async fn foo(); +} +impl Trait for () { + $0async fn foo() {} +}"#, + ); + } } diff --git a/crates/ide-assists/src/handlers/unwrap_tuple.rs b/crates/ide-assists/src/handlers/unwrap_tuple.rs index 25c58d086e97..d09614c51127 100644 --- a/crates/ide-assists/src/handlers/unwrap_tuple.rs +++ b/crates/ide-assists/src/handlers/unwrap_tuple.rs @@ -69,13 +69,13 @@ pub(crate) fn unwrap_tuple(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option for (pat, ty, expr) in itertools::izip!(tuple_pat.fields(), tys.fields(), tuple_init.fields()) { - zipped_decls.push_str(&format!("{}let {pat}: {ty} = {expr};\n", indents)) + zipped_decls.push_str(&format!("{indents}let {pat}: {ty} = {expr};\n")) } edit.replace(parent.text_range(), zipped_decls.trim()); } else { let mut zipped_decls = String::new(); for (pat, expr) in itertools::izip!(tuple_pat.fields(), tuple_init.fields()) { - zipped_decls.push_str(&format!("{}let {pat} = {expr};\n", indents)); + zipped_decls.push_str(&format!("{indents}let {pat} = {expr};\n")); } edit.replace(parent.text_range(), zipped_decls.trim()); } diff --git a/crates/ide-assists/src/handlers/wrap_return_type_in_result.rs b/crates/ide-assists/src/handlers/wrap_return_type_in_result.rs index 83446387db1c..b6c489eb62ee 100644 --- a/crates/ide-assists/src/handlers/wrap_return_type_in_result.rs +++ b/crates/ide-assists/src/handlers/wrap_return_type_in_result.rs @@ -76,11 +76,11 @@ pub(crate) fn wrap_return_type_in_result(acc: &mut Assists, ctx: &AssistContext< match ctx.config.snippet_cap { Some(cap) => { - let snippet = format!("Result<{}, ${{0:_}}>", type_ref); + let snippet = format!("Result<{type_ref}, ${{0:_}}>"); builder.replace_snippet(cap, type_ref.syntax().text_range(), snippet) } None => builder - .replace(type_ref.syntax().text_range(), format!("Result<{}, _>", type_ref)), + .replace(type_ref.syntax().text_range(), format!("Result<{type_ref}, _>")), } }, ) diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index a07318cefad2..387cc6314282 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -120,6 +120,7 @@ mod handlers { mod convert_into_to_from; mod convert_iter_for_each_to_for; mod convert_let_else_to_match; + mod convert_match_to_let_else; mod convert_tuple_struct_to_named_struct; mod convert_named_struct_to_tuple_struct; mod convert_to_guarded_return; @@ -220,6 +221,7 @@ mod handlers { convert_iter_for_each_to_for::convert_for_loop_with_for_each, convert_let_else_to_match::convert_let_else_to_match, convert_named_struct_to_tuple_struct::convert_named_struct_to_tuple_struct, + convert_match_to_let_else::convert_match_to_let_else, convert_to_guarded_return::convert_to_guarded_return, convert_tuple_struct_to_named_struct::convert_tuple_struct_to_named_struct, convert_two_arm_bool_match_to_matches_macro::convert_two_arm_bool_match_to_matches_macro, diff --git a/crates/ide-assists/src/tests.rs b/crates/ide-assists/src/tests.rs index f7f2417d0745..92ced27c78ae 100644 --- a/crates/ide-assists/src/tests.rs +++ b/crates/ide-assists/src/tests.rs @@ -30,6 +30,7 @@ pub(crate) const TEST_CONFIG: AssistConfig = AssistConfig { skip_glob_imports: true, }, prefer_no_std: false, + assist_emit_must_use: false, }; pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 2c4000efe0fa..029d169899bb 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -407,6 +407,27 @@ fn main() { ) } +#[test] +fn doctest_convert_match_to_let_else() { + check_doc_test( + "convert_match_to_let_else", + r#####" +//- minicore: option +fn foo(opt: Option<()>) { + let val = $0match opt { + Some(it) => it, + None => return, + }; +} +"#####, + r#####" +fn foo(opt: Option<()>) { + let Some(val) = opt else { return }; +} +"#####, + ) +} + #[test] fn doctest_convert_named_struct_to_tuple_struct() { check_doc_test( diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index db32e7182c44..307e67927056 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -189,8 +189,8 @@ pub(crate) fn render_snippet(_cap: SnippetCap, node: &SyntaxNode, cursor: Cursor let mut placeholder = cursor.node().to_string(); escape(&mut placeholder); let tab_stop = match cursor { - Cursor::Replace(placeholder) => format!("${{0:{}}}", placeholder), - Cursor::Before(placeholder) => format!("$0{}", placeholder), + Cursor::Replace(placeholder) => format!("${{0:{placeholder}}}"), + Cursor::Before(placeholder) => format!("$0{placeholder}"), }; let mut buf = node.to_string(); @@ -539,17 +539,17 @@ impl ReferenceConversion { ReferenceConversionType::AsRefSlice => { let type_argument_name = self.ty.type_arguments().next().unwrap().display(db).to_string(); - format!("&[{}]", type_argument_name) + format!("&[{type_argument_name}]") } ReferenceConversionType::Dereferenced => { let type_argument_name = self.ty.type_arguments().next().unwrap().display(db).to_string(); - format!("&{}", type_argument_name) + format!("&{type_argument_name}") } ReferenceConversionType::Option => { let type_argument_name = self.ty.type_arguments().next().unwrap().display(db).to_string(); - format!("Option<&{}>", type_argument_name) + format!("Option<&{type_argument_name}>") } ReferenceConversionType::Result => { let mut type_arguments = self.ty.type_arguments(); @@ -557,19 +557,19 @@ impl ReferenceConversion { type_arguments.next().unwrap().display(db).to_string(); let second_type_argument_name = type_arguments.next().unwrap().display(db).to_string(); - format!("Result<&{}, &{}>", first_type_argument_name, second_type_argument_name) + format!("Result<&{first_type_argument_name}, &{second_type_argument_name}>") } } } pub(crate) fn getter(&self, field_name: String) -> String { match self.conversion { - ReferenceConversionType::Copy => format!("self.{}", field_name), + ReferenceConversionType::Copy => format!("self.{field_name}"), ReferenceConversionType::AsRefStr | ReferenceConversionType::AsRefSlice | ReferenceConversionType::Dereferenced | ReferenceConversionType::Option - | ReferenceConversionType::Result => format!("self.{}.as_ref()", field_name), + | ReferenceConversionType::Result => format!("self.{field_name}.as_ref()"), } } } diff --git a/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/crates/ide-assists/src/utils/gen_trait_fn_body.rs index 7a0c912959a1..6c87e66c134d 100644 --- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs +++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs @@ -41,7 +41,7 @@ fn gen_clone_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut arms = vec![]; for variant in list.variants() { let name = variant.name()?; - let variant_name = make::ext::path_from_idents(["Self", &format!("{}", name)])?; + let variant_name = make::ext::path_from_idents(["Self", &format!("{name}")])?; match variant.field_list() { // => match self { Self::Name { x } => Self::Name { x: x.clone() } } @@ -70,7 +70,7 @@ fn gen_clone_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut pats = vec![]; let mut fields = vec![]; for (i, _) in list.fields().enumerate() { - let field_name = format!("arg{}", i); + let field_name = format!("arg{i}"); let pat = make::ident_pat(false, false, make::name(&field_name)); pats.push(pat.into()); @@ -118,7 +118,7 @@ fn gen_clone_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut fields = vec![]; for (i, _) in field_list.fields().enumerate() { let f_path = make::expr_path(make::ext::ident_path("self")); - let target = make::expr_field(f_path, &format!("{}", i)); + let target = make::expr_field(f_path, &format!("{i}")); fields.push(gen_clone_call(target)); } let struct_name = make::expr_path(make::ext::ident_path("Self")); @@ -151,7 +151,7 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut arms = vec![]; for variant in list.variants() { let name = variant.name()?; - let variant_name = make::ext::path_from_idents(["Self", &format!("{}", name)])?; + let variant_name = make::ext::path_from_idents(["Self", &format!("{name}")])?; let target = make::expr_path(make::ext::ident_path("f")); match variant.field_list() { @@ -159,7 +159,7 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { // => f.debug_struct(name) let target = make::expr_path(make::ext::ident_path("f")); let method = make::name_ref("debug_struct"); - let struct_name = format!("\"{}\"", name); + let struct_name = format!("\"{name}\""); let args = make::arg_list(Some(make::expr_literal(&struct_name).into())); let mut expr = make::expr_method_call(target, method, args); @@ -173,8 +173,8 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { // => .field("field_name", field) let method_name = make::name_ref("field"); - let name = make::expr_literal(&(format!("\"{}\"", field_name))).into(); - let path = &format!("{}", field_name); + let name = make::expr_literal(&(format!("\"{field_name}\""))).into(); + let path = &format!("{field_name}"); let path = make::expr_path(make::ext::ident_path(path)); let args = make::arg_list(vec![name, path]); expr = make::expr_method_call(expr, method_name, args); @@ -192,13 +192,13 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { // => f.debug_tuple(name) let target = make::expr_path(make::ext::ident_path("f")); let method = make::name_ref("debug_tuple"); - let struct_name = format!("\"{}\"", name); + let struct_name = format!("\"{name}\""); let args = make::arg_list(Some(make::expr_literal(&struct_name).into())); let mut expr = make::expr_method_call(target, method, args); let mut pats = vec![]; for (i, _) in list.fields().enumerate() { - let name = format!("arg{}", i); + let name = format!("arg{i}"); // create a field pattern for use in `MyStruct(fields..)` let field_name = make::name(&name); @@ -222,7 +222,7 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { arms.push(make::match_arm(Some(pat.into()), None, expr)); } None => { - let fmt_string = make::expr_literal(&(format!("\"{}\"", name))).into(); + let fmt_string = make::expr_literal(&(format!("\"{name}\""))).into(); let args = make::arg_list([target, fmt_string]); let macro_name = make::expr_path(make::ext::ident_path("write")); let macro_call = make::expr_macro_call(macro_name, args); @@ -244,7 +244,7 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { } ast::Adt::Struct(strukt) => { - let name = format!("\"{}\"", annotated_name); + let name = format!("\"{annotated_name}\""); let args = make::arg_list(Some(make::expr_literal(&name).into())); let target = make::expr_path(make::ext::ident_path("f")); @@ -258,10 +258,10 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut expr = make::expr_method_call(target, method, args); for field in field_list.fields() { let name = field.name()?; - let f_name = make::expr_literal(&(format!("\"{}\"", name))).into(); + let f_name = make::expr_literal(&(format!("\"{name}\""))).into(); let f_path = make::expr_path(make::ext::ident_path("self")); let f_path = make::expr_ref(f_path, false); - let f_path = make::expr_field(f_path, &format!("{}", name)); + let f_path = make::expr_field(f_path, &format!("{name}")); let args = make::arg_list([f_name, f_path]); expr = make::expr_method_call(expr, make::name_ref("field"), args); } @@ -275,7 +275,7 @@ fn gen_debug_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { for (i, _) in field_list.fields().enumerate() { let f_path = make::expr_path(make::ext::ident_path("self")); let f_path = make::expr_ref(f_path, false); - let f_path = make::expr_field(f_path, &format!("{}", i)); + let f_path = make::expr_field(f_path, &format!("{i}")); let method = make::name_ref("field"); expr = make::expr_method_call(expr, method, make::arg_list(Some(f_path))); } @@ -379,7 +379,7 @@ fn gen_hash_impl(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut stmts = vec![]; for (i, _) in field_list.fields().enumerate() { let base = make::expr_path(make::ext::ident_path("self")); - let target = make::expr_field(base, &format!("{}", i)); + let target = make::expr_field(base, &format!("{i}")); stmts.push(gen_hash_call(target)); } make::block_expr(stmts, None).indent(ast::edit::IndentLevel(1)) @@ -453,10 +453,10 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { for field in list.fields() { let field_name = field.name()?.to_string(); - let l_name = &format!("l_{}", field_name); + let l_name = &format!("l_{field_name}"); l_fields.push(gen_record_pat_field(&field_name, l_name)); - let r_name = &format!("r_{}", field_name); + let r_name = &format!("r_{field_name}"); r_fields.push(gen_record_pat_field(&field_name, r_name)); let lhs = make::expr_path(make::ext::ident_path(l_name)); @@ -484,12 +484,12 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { let mut r_fields = vec![]; for (i, _) in list.fields().enumerate() { - let field_name = format!("{}", i); + let field_name = format!("{i}"); - let l_name = format!("l{}", field_name); + let l_name = format!("l{field_name}"); l_fields.push(gen_tuple_field(&l_name)); - let r_name = format!("r{}", field_name); + let r_name = format!("r{field_name}"); r_fields.push(gen_tuple_field(&r_name)); let lhs = make::expr_path(make::ext::ident_path(&l_name)); @@ -548,7 +548,7 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { Some(ast::FieldList::TupleFieldList(field_list)) => { let mut expr = None; for (i, _) in field_list.fields().enumerate() { - let idx = format!("{}", i); + let idx = format!("{i}"); let lhs = make::expr_path(make::ext::ident_path("self")); let lhs = make::expr_field(lhs, &idx); let rhs = make::expr_path(make::ext::ident_path("other")); @@ -628,7 +628,7 @@ fn gen_partial_ord(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { Some(ast::FieldList::TupleFieldList(field_list)) => { let mut exprs = vec![]; for (i, _) in field_list.fields().enumerate() { - let idx = format!("{}", i); + let idx = format!("{i}"); let lhs = make::expr_path(make::ext::ident_path("self")); let lhs = make::expr_field(lhs, &idx); let rhs = make::expr_path(make::ext::ident_path("other")); diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 9a891cea2d45..b9bd47f7da50 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -69,10 +69,6 @@ pub(crate) fn complete_postfix( } } - if !ctx.config.snippets.is_empty() { - add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text); - } - let try_enum = TryEnum::from_ty(&ctx.sema, &receiver_ty.strip_references()); if let Some(try_enum) = &try_enum { match try_enum { @@ -140,6 +136,10 @@ pub(crate) fn complete_postfix( None => return, }; + if !ctx.config.snippets.is_empty() { + add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text); + } + match try_enum { Some(try_enum) => match try_enum { TryEnum::Result => { @@ -613,4 +613,25 @@ fn main() { r#"fn main() { log::error!("{}", 2+2) }"#, ); } + + #[test] + fn postfix_custom_snippets_completion_for_references() { + check_edit_with_config( + CompletionConfig { + snippets: vec![Snippet::new( + &[], + &["ok".into()], + &["Ok(${receiver})".into()], + "", + &[], + crate::SnippetScope::Expr, + ) + .unwrap()], + ..TEST_CONFIG + }, + "ok", + r#"fn main() { &&42.$0 }"#, + r#"fn main() { Ok(&&42) }"#, + ); + } } diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index 82b85f2fa5ed..aa5d7e9beb54 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -446,33 +446,47 @@ impl<'a> FindUsages<'a> { }) } - // FIXME: There should be optimization potential here - // Currently we try to descend everything we find which - // means we call `Semantics::descend_into_macros` on - // every textual hit. That function is notoriously - // expensive even for things that do not get down mapped - // into macros. + let find_nodes = move |name: &str, node: &syntax::SyntaxNode, offset: TextSize| { + node.token_at_offset(offset).find(|it| it.text() == name).map(|token| { + // FIXME: There should be optimization potential here + // Currently we try to descend everything we find which + // means we call `Semantics::descend_into_macros` on + // every textual hit. That function is notoriously + // expensive even for things that do not get down mapped + // into macros. + sema.descend_into_macros(token).into_iter().filter_map(|it| it.parent()) + }) + }; + for (text, file_id, search_range) in scope_files(sema, &search_scope) { let tree = Lazy::new(move || sema.parse(file_id).syntax().clone()); // Search for occurrences of the items name for offset in match_indices(&text, finder, search_range) { - for name in sema.find_nodes_at_offset_with_descend(&tree, offset) { - if match name { - ast::NameLike::NameRef(name_ref) => self.found_name_ref(&name_ref, sink), - ast::NameLike::Name(name) => self.found_name(&name, sink), - ast::NameLike::Lifetime(lifetime) => self.found_lifetime(&lifetime, sink), - } { - return; + if let Some(iter) = find_nodes(name, &tree, offset) { + for name in iter.filter_map(ast::NameLike::cast) { + if match name { + ast::NameLike::NameRef(name_ref) => { + self.found_name_ref(&name_ref, sink) + } + ast::NameLike::Name(name) => self.found_name(&name, sink), + ast::NameLike::Lifetime(lifetime) => { + self.found_lifetime(&lifetime, sink) + } + } { + return; + } } } } // Search for occurrences of the `Self` referring to our type if let Some((self_ty, finder)) = &include_self_kw_refs { for offset in match_indices(&text, finder, search_range) { - for name_ref in sema.find_nodes_at_offset_with_descend(&tree, offset) { - if self.found_self_ty_name_ref(self_ty, &name_ref, sink) { - return; + if let Some(iter) = find_nodes("Self", &tree, offset) { + for name_ref in iter.filter_map(ast::NameRef::cast) { + if self.found_self_ty_name_ref(self_ty, &name_ref, sink) { + return; + } } } } @@ -493,17 +507,21 @@ impl<'a> FindUsages<'a> { let tree = Lazy::new(move || sema.parse(file_id).syntax().clone()); for offset in match_indices(&text, finder, search_range) { - for name_ref in sema.find_nodes_at_offset_with_descend(&tree, offset) { - if self.found_name_ref(&name_ref, sink) { - return; + if let Some(iter) = find_nodes("super", &tree, offset) { + for name_ref in iter.filter_map(ast::NameRef::cast) { + if self.found_name_ref(&name_ref, sink) { + return; + } } } } if let Some(finder) = &is_crate_root { for offset in match_indices(&text, finder, search_range) { - for name_ref in sema.find_nodes_at_offset_with_descend(&tree, offset) { - if self.found_name_ref(&name_ref, sink) { - return; + if let Some(iter) = find_nodes("crate", &tree, offset) { + for name_ref in iter.filter_map(ast::NameRef::cast) { + if self.found_name_ref(&name_ref, sink) { + return; + } } } } @@ -544,9 +562,11 @@ impl<'a> FindUsages<'a> { let finder = &Finder::new("self"); for offset in match_indices(&text, finder, search_range) { - for name_ref in sema.find_nodes_at_offset_with_descend(&tree, offset) { - if self.found_self_module_name_ref(&name_ref, sink) { - return; + if let Some(iter) = find_nodes("self", &tree, offset) { + for name_ref in iter.filter_map(ast::NameRef::cast) { + if self.found_self_module_name_ref(&name_ref, sink) { + return; + } } } } diff --git a/crates/ide/src/moniker.rs b/crates/ide/src/moniker.rs index 852a8fd83761..07d117aff10b 100644 --- a/crates/ide/src/moniker.rs +++ b/crates/ide/src/moniker.rs @@ -73,8 +73,8 @@ impl MonikerResult { #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct PackageInformation { pub name: String, - pub repo: String, - pub version: String, + pub repo: Option, + pub version: Option, } pub(crate) fn crate_for_file(db: &RootDatabase, file_id: FileId) -> Option { @@ -256,18 +256,18 @@ pub(crate) fn def_to_moniker( let (name, repo, version) = match krate.origin(db) { CrateOrigin::CratesIo { repo, name } => ( name.unwrap_or(krate.display_name(db)?.canonical_name().to_string()), - repo?, - krate.version(db)?, + repo, + krate.version(db), ), CrateOrigin::Lang(lang) => ( krate.display_name(db)?.canonical_name().to_string(), - "https://github.com/rust-lang/rust/".to_string(), - match lang { + Some("https://github.com/rust-lang/rust/".to_string()), + Some(match lang { LangCrateOrigin::Other => { "https://github.com/rust-lang/rust/library/".into() } lang => format!("https://github.com/rust-lang/rust/library/{lang}",), - }, + }), ), }; PackageInformation { name, repo, version } @@ -315,7 +315,7 @@ pub mod module { } "#, "foo::module::func", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Import, ); check_moniker( @@ -331,7 +331,7 @@ pub mod module { } "#, "foo::module::func", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Export, ); } @@ -348,7 +348,7 @@ pub mod module { } "#, "foo::module::MyTrait::func", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Export, ); } @@ -365,7 +365,7 @@ pub mod module { } "#, "foo::module::MyTrait::MY_CONST", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Export, ); } @@ -382,7 +382,7 @@ pub mod module { } "#, "foo::module::MyTrait::MyType", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Export, ); } @@ -405,7 +405,7 @@ pub mod module { } "#, "foo::module::MyStruct::MyTrait::func", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Export, ); } @@ -425,7 +425,7 @@ pub struct St { } "#, "foo::St::a", - r#"PackageInformation { name: "foo", repo: "https://a.b/foo.git", version: "0.1.0" }"#, + r#"PackageInformation { name: "foo", repo: Some("https://a.b/foo.git"), version: Some("0.1.0") }"#, MonikerKind::Import, ); } diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs index fe44856dcad2..b4df0437050f 100644 --- a/crates/ide/src/rename.rs +++ b/crates/ide/src/rename.rs @@ -40,7 +40,9 @@ pub(crate) fn prepare_rename( if def.range_for_rename(&sema).is_none() { bail!("No references found at position") } - let frange = sema.original_range(name_like.syntax()); + let Some(frange) = sema.original_range_opt(name_like.syntax()) else { + bail!("No references found at position"); + }; always!( frange.range.contains_inclusive(position.offset) @@ -51,7 +53,7 @@ pub(crate) fn prepare_rename( .reduce(|acc, cur| match (acc, cur) { // ensure all ranges are the same (Ok(acc_inner), Ok(cur_inner)) if acc_inner == cur_inner => Ok(acc_inner), - (Err(e), _) => Err(e), + (e @ Err(_), _) | (_, e @ Err(_)) => e, _ => bail!("inconsistent text range"), }); @@ -2249,4 +2251,33 @@ fn foo((bar | bar | bar): ()) { "#, ); } + + #[test] + fn regression_13498() { + check( + "Testing", + r" +mod foo { + pub struct Test$0; +} + +use foo::Test as Tester; + +fn main() { + let t = Tester; +} +", + r" +mod foo { + pub struct Testing; +} + +use foo::Testing as Tester; + +fn main() { + let t = Tester; +} +", + ) + } } diff --git a/crates/ide/src/signature_help.rs b/crates/ide/src/signature_help.rs index fedc1a435827..7486b20293a6 100644 --- a/crates/ide/src/signature_help.rs +++ b/crates/ide/src/signature_help.rs @@ -149,7 +149,7 @@ fn signature_help_for_call( variant.name(db) ); } - hir::CallableKind::Closure | hir::CallableKind::FnPtr => (), + hir::CallableKind::Closure | hir::CallableKind::FnPtr | hir::CallableKind::Other => (), } res.signature.push('('); @@ -189,9 +189,10 @@ fn signature_help_for_call( hir::CallableKind::Function(func) if callable.return_type().contains_unknown() => { render(func.ret_type(db)) } - hir::CallableKind::Function(_) | hir::CallableKind::Closure | hir::CallableKind::FnPtr => { - render(callable.return_type()) - } + hir::CallableKind::Function(_) + | hir::CallableKind::Closure + | hir::CallableKind::FnPtr + | hir::CallableKind::Other => render(callable.return_type()), hir::CallableKind::TupleStruct(_) | hir::CallableKind::TupleEnumVariant(_) => {} } Some(res) @@ -387,10 +388,9 @@ mod tests { } fn check(ra_fixture: &str, expect: Expect) { - // Implicitly add `Sized` to avoid noisy `T: ?Sized` in the results. let fixture = format!( r#" -#[lang = "sized"] trait Sized {{}} +//- minicore: sized, fn {ra_fixture} "# ); @@ -1331,4 +1331,19 @@ fn f() { "#]], ); } + + #[test] + fn help_for_generic_call() { + check( + r#" +fn f i32>(f: F) { + f($0) +} +"#, + expect![[r#" + (u8, u16) -> i32 + ^^ --- + "#]], + ); + } } diff --git a/crates/rust-analyzer/src/cli/lsif.rs b/crates/rust-analyzer/src/cli/lsif.rs index 5ff347b9bd72..c74ddabb1777 100644 --- a/crates/rust-analyzer/src/cli/lsif.rs +++ b/crates/rust-analyzer/src/cli/lsif.rs @@ -106,12 +106,12 @@ impl LsifManager<'_> { manager: "cargo".to_string(), uri: None, content: None, - repository: Some(lsif::Repository { - url: pi.repo, + repository: pi.repo.map(|url| lsif::Repository { + url, r#type: "git".to_string(), commit_id: None, }), - version: Some(pi.version), + version: pi.version, })); self.package_map.insert(package_information, result_set_id); result_set_id diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs index 16298862b50f..ca7ba896b67c 100644 --- a/crates/rust-analyzer/src/cli/scip.rs +++ b/crates/rust-analyzer/src/cli/scip.rs @@ -231,7 +231,7 @@ fn token_to_symbol(token: &TokenStaticData) -> Option { package: Some(scip_types::Package { manager: "cargo".to_string(), name: package_name, - version, + version: version.unwrap_or_else(|| ".".to_string()), ..Default::default() }) .into(), @@ -415,4 +415,42 @@ pub mod module { "", ); } + + #[test] + fn global_symbol_for_pub_struct() { + check_symbol( + r#" + //- /lib.rs crate:main + mod foo; + + fn main() { + let _bar = foo::Bar { i: 0 }; + } + //- /foo.rs + pub struct Bar$0 { + pub i: i32, + } + "#, + "rust-analyzer cargo main . foo/Bar#", + ); + } + + #[test] + fn global_symbol_for_pub_struct_reference() { + check_symbol( + r#" + //- /lib.rs crate:main + mod foo; + + fn main() { + let _bar = foo::Bar$0 { i: 0 }; + } + //- /foo.rs + pub struct Bar { + pub i: i32, + } + "#, + "rust-analyzer cargo main . foo/Bar#", + ); + } } diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 1ed8f2bb5f35..4072ae585dbd 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -56,6 +56,9 @@ mod patch_old_style; // parsing the old name. config_data! { struct ConfigData { + /// Whether to insert #[must_use] when generating `as_` methods + /// for enum variants. + assist_emitMustUse: bool = "false", /// Placeholder expression to use for missing expressions in assists. assist_expressionFillDefault: ExprFillDefaultDef = "\"todo\"", @@ -1276,6 +1279,7 @@ impl Config { allowed: None, insert_use: self.insert_use_config(), prefer_no_std: self.data.imports_prefer_no_std, + assist_emit_must_use: self.data.assist_emitMustUse, } } diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index 4057a75e7c1e..8c26009add2b 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs @@ -334,6 +334,10 @@ pub fn block_expr( ast_from_text(&format!("fn f() {buf}")) } +pub fn tail_only_block_expr(tail_expr: ast::Expr) -> ast::BlockExpr { + ast_from_text(&format!("fn f() {{ {tail_expr} }}")) +} + /// Ideally this function wouldn't exist since it involves manual indenting. /// It differs from `make::block_expr` by also supporting comments. /// @@ -656,6 +660,22 @@ pub fn let_stmt( }; ast_from_text(&format!("fn f() {{ {text} }}")) } + +pub fn let_else_stmt( + pattern: ast::Pat, + ty: Option, + expr: ast::Expr, + diverging: ast::BlockExpr, +) -> ast::LetStmt { + let mut text = String::new(); + format_to!(text, "let {pattern}"); + if let Some(ty) = ty { + format_to!(text, ": {ty}"); + } + format_to!(text, " = {expr} else {diverging};"); + ast_from_text(&format!("fn f() {{ {text} }}")) +} + pub fn expr_stmt(expr: ast::Expr) -> ast::ExprStmt { let semi = if expr.is_block_like() { "" } else { ";" }; ast_from_text(&format!("fn f() {{ {expr}{semi} (); }}")) diff --git a/docs/dev/guide.md b/docs/dev/guide.md index 52a13da31c5d..56a68ef04379 100644 --- a/docs/dev/guide.md +++ b/docs/dev/guide.md @@ -338,7 +338,7 @@ The algorithm for building a tree of modules is to start with a crate root declarations and recursively process child modules. This is handled by the [`module_tree_query`], with two slight variations. -[`module_tree_query`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/module_tree.rs#L116-L123 +[`module_tree_query`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/module_tree.rs#L115-L133 First, rust-analyzer builds a module tree for all crates in a source root simultaneously. The main reason for this is historical (`module_tree` predates @@ -361,7 +361,7 @@ the same, we don't have to re-execute [`module_tree_query`]. In fact, we only need to re-execute it when we add/remove new files or when we change mod declarations. -[`submodules_query`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/module_tree.rs#L41 +[`submodules_query`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/module_tree.rs#L41 We store the resulting modules in a `Vec`-based indexed arena. The indices in the arena becomes module IDs. And this brings us to the next topic: @@ -389,8 +389,8 @@ integers which can "intern" a location and return an integer ID back. The salsa database we use includes a couple of [interners]. How to "garbage collect" unused locations is an open question. -[`LocationInterner`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/base_db/src/loc2id.rs#L65-L71 -[interners]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/db.rs#L22-L23 +[`LocationInterner`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_db/src/loc2id.rs#L65-L71 +[interners]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/db.rs#L22-L23 For example, we use `LocationInterner` to assign IDs to definitions of functions, structs, enums, etc. The location, [`DefLoc`] contains two bits of information: @@ -404,7 +404,7 @@ using offsets, text ranges or syntax trees as keys and values for queries. What we do instead is we store "index" of the item among all of the items of a file (so, a positional based ID, but localized to a single file). -[`DefLoc`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/ids.rs#L127-L139 +[`DefLoc`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/ids.rs#L129-L139 One thing we've glossed over for the time being is support for macros. We have only proof of concept handling of macros at the moment, but they are extremely @@ -437,7 +437,7 @@ terms of `HirFileId`! This does not recur infinitely though: any chain of `HirFileId`s bottoms out in `HirFileId::FileId`, that is, some source file actually written by the user. -[`HirFileId`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/ids.rs#L18-L125 +[`HirFileId`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/ids.rs#L31-L93 Now that we understand how to identify a definition, in a source or in a macro-generated file, we can discuss name resolution a bit. @@ -451,14 +451,13 @@ each module into a position-independent representation which does not change if we modify bodies of the items. After that we [loop] resolving all imports until we've reached a fixed point. -[lower]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres/lower.rs#L113-L117 -[loop]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres.rs#L186-L196 - +[lower]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres/lower.rs#L113-L147 +[loop]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres.rs#L186-L196 And, given all our preparation with IDs and a position-independent representation, it is satisfying to [test] that typing inside function body does not invalidate name resolution results. -[test]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres/tests.rs#L376 +[test]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres/tests.rs#L376 An interesting fact about name resolution is that it "erases" all of the intermediate paths from the imports: in the end, we know which items are defined @@ -493,10 +492,10 @@ there's an intermediate [projection query] which returns only the first position-independent part of the lowering. The result of this query is stable. Naturally, name resolution [uses] this stable projection query. -[imports]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres/lower.rs#L52-L59 -[`SourceMap`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres/lower.rs#L52-L59 -[projection query]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/nameres/lower.rs#L97-L103 -[uses]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/query_definitions.rs#L49 +[imports]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres/lower.rs#L52-L59 +[`SourceMap`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres/lower.rs#L52-L59 +[projection query]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/nameres/lower.rs#L97-L103 +[uses]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/query_definitions.rs#L49 ## Type inference @@ -518,10 +517,10 @@ construct a mapping from `ExprId`s to types. [@flodiebold]: https://github.com/flodiebold [#327]: https://github.com/rust-lang/rust-analyzer/pull/327 -[lower the AST]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/expr.rs -[positional ID]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/expr.rs#L13-L15 -[a source map]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/expr.rs#L41-L44 -[type inference]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/hir/src/ty.rs#L1208-L1223 +[lower the AST]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/expr.rs +[positional ID]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/expr.rs#L13-L15 +[a source map]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/expr.rs#L41-L44 +[type inference]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_hir/src/ty.rs#L1208-L1223 ## Tying it all together: completion @@ -563,10 +562,11 @@ the type to completion. [catch]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L436-L442 [the handler]: https://salsa.zulipchat.com/#narrow/stream/181542-rfcs.2Fsalsa-query-group/topic/design.20next.20steps [ask analysis for completion]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/lib.rs#L439-L444 -[completion implementation]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion.rs#L46-L62 -[`CompletionContext`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion/completion_context.rs#L14-L37 -["IntelliJ Trick"]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion/completion_context.rs#L72-L75 -[find an ancestor `fn` node]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion/completion_context.rs#L116-L120 -[semantic model]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion/completion_context.rs#L123 -[series of independent completion routines]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion.rs#L52-L59 -[`complete_dot`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/completion/complete_dot.rs#L6-L22 +[ask analysis for completion]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/lib.rs#L439-L444 +[completion implementation]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion.rs#L46-L62 +[`CompletionContext`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion/completion_context.rs#L14-L37 +["IntelliJ Trick"]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion/completion_context.rs#L72-L75 +[find an ancestor `fn` node]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion/completion_context.rs#L116-L120 +[semantic model]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion/completion_context.rs#L123 +[series of independent completion routines]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion.rs#L52-L59 +[`complete_dot`]: https://github.com/rust-lang/rust-analyzer/blob/guide-2019-01/crates/ra_ide_api/src/completion/complete_dot.rs#L6-L22 diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 502833de72c1..36794efe4272 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -1,3 +1,9 @@ +[[rust-analyzer.assist.emitMustUse]]rust-analyzer.assist.emitMustUse (default: `false`):: ++ +-- +Whether to insert #[must_use] when generating `as_` methods +for enum variants. +-- [[rust-analyzer.assist.expressionFillDefault]]rust-analyzer.assist.expressionFillDefault (default: `"todo"`):: + -- diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index c30838e5f5e1..49500e390a50 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc @@ -487,6 +487,12 @@ https://docs.helix-editor.com/[Helix] supports LSP by default. However, it won't install `rust-analyzer` automatically. You can follow instructions for installing <>. +=== Crates + +There is a package named `ra_ap_rust_analyzer` available on https://crates.io/crates/ra_ap_rust-analyzer[crates.io], for someone who wants to use it programmatically. + +For more details, see https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/publish.yml[the publish workflow]. + == Troubleshooting Start with looking at the rust-analyzer version. diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index a72865d4fe44..0b25564e28d3 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json @@ -23,7 +23,7 @@ "esbuild": "^0.14.48", "eslint": "^8.19.0", "eslint-config-prettier": "^8.5.0", - "ovsx": "^0.5.1", + "ovsx": "^0.5.2", "prettier": "^2.7.1", "tslib": "^2.4.0", "typescript": "^4.7.4", @@ -2874,9 +2874,9 @@ } }, "node_modules/ovsx": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.1.tgz", - "integrity": "sha512-3OWq0l7DuVHi2bd2aQe5+QVQlFIqvrcw3/2vGXL404L6Tr+R4QHtzfnYYghv8CCa85xJHjU0RhcaC7pyXkAUbg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.2.tgz", + "integrity": "sha512-UbLultRCk46WddeA0Cly4hoRhzBJUiLgbIEViXlgOvV54LbsppClDkMLoCevUUBHoiNdMX2NuiSgURAEXgCZdw==", "dev": true, "dependencies": { "commander": "^6.1.0", @@ -5958,9 +5958,9 @@ } }, "ovsx": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.1.tgz", - "integrity": "sha512-3OWq0l7DuVHi2bd2aQe5+QVQlFIqvrcw3/2vGXL404L6Tr+R4QHtzfnYYghv8CCa85xJHjU0RhcaC7pyXkAUbg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.2.tgz", + "integrity": "sha512-UbLultRCk46WddeA0Cly4hoRhzBJUiLgbIEViXlgOvV54LbsppClDkMLoCevUUBHoiNdMX2NuiSgURAEXgCZdw==", "dev": true, "requires": { "commander": "^6.1.0", diff --git a/editors/code/package.json b/editors/code/package.json index 6771cad28a79..1a97a9c08937 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -49,7 +49,7 @@ "esbuild": "^0.14.48", "eslint": "^8.19.0", "eslint-config-prettier": "^8.5.0", - "ovsx": "^0.5.1", + "ovsx": "^0.5.2", "prettier": "^2.7.1", "tslib": "^2.4.0", "typescript": "^4.7.4", @@ -100,22 +100,32 @@ { "command": "rust-analyzer.syntaxTree", "title": "Show Syntax Tree", - "category": "rust-analyzer" + "category": "rust-analyzer (debug command)" }, { "command": "rust-analyzer.viewHir", "title": "View Hir", - "category": "rust-analyzer" + "category": "rust-analyzer (debug command)" }, { "command": "rust-analyzer.viewFileText", "title": "View File Text (as seen by the server)", - "category": "rust-analyzer" + "category": "rust-analyzer (debug command)" }, { "command": "rust-analyzer.viewItemTree", "title": "Debug ItemTree", - "category": "rust-analyzer" + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.shuffleCrateGraph", + "title": "Shuffle Crate Graph", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.memoryUsage", + "title": "Memory Usage (Clears Database)", + "category": "rust-analyzer (debug command)" }, { "command": "rust-analyzer.viewCrateGraph", @@ -172,16 +182,6 @@ "title": "Status", "category": "rust-analyzer" }, - { - "command": "rust-analyzer.memoryUsage", - "title": "Memory Usage (Clears Database)", - "category": "rust-analyzer" - }, - { - "command": "rust-analyzer.shuffleCrateGraph", - "title": "Shuffle Crate Graph", - "category": "rust-analyzer" - }, { "command": "rust-analyzer.reloadWorkspace", "title": "Reload workspace", @@ -397,6 +397,11 @@ "type": "boolean" }, "$generated-start": {}, + "rust-analyzer.assist.emitMustUse": { + "markdownDescription": "Whether to insert #[must_use] when generating `as_` methods\nfor enum variants.", + "default": false, + "type": "boolean" + }, "rust-analyzer.assist.expressionFillDefault": { "markdownDescription": "Placeholder expression to use for missing expressions in assists.", "default": "todo", diff --git a/triagebot.toml b/triagebot.toml index fa0824ac53c0..a910e012b734 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -1 +1,11 @@ [assign] + +[shortcut] + +[relabel] +allow-unauthenticated = [ + "S-*", +] + +[autolabel."S-waiting-on-review"] +new_pr = true From f26d5484d89bd41e4fe89367fc4d13463d498d8b Mon Sep 17 00:00:00 2001 From: yue4u Date: Sat, 12 Nov 2022 22:33:40 +0900 Subject: [PATCH 026/478] fix: filter unnecessary completions after colon --- crates/ide-completion/src/context.rs | 42 ++++++++- crates/ide-completion/src/lib.rs | 1 - crates/ide-completion/src/tests/attribute.rs | 24 +++++ crates/ide-completion/src/tests/special.rs | 97 +++++++++++++++++++- crates/rust-analyzer/src/handlers.rs | 14 +-- 5 files changed, 162 insertions(+), 16 deletions(-) diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 9850813a0ce1..27f6745d2417 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -19,7 +19,7 @@ use syntax::{ ast::{self, AttrKind, NameOrNameRef}, AstNode, SyntaxKind::{self, *}, - SyntaxToken, TextRange, TextSize, + SyntaxToken, TextRange, TextSize, T, }; use text_edit::Indel; @@ -569,6 +569,28 @@ impl<'a> CompletionContext<'a> { // completing on let original_token = original_file.syntax().token_at_offset(offset).left_biased()?; + // try to skip completions on path with qinvalid colons + // this approach works in normal path and inside token tree + match original_token.kind() { + T![:] => { + // return if no prev token before colon + let prev_token = original_token.prev_token()?; + + // only has a single colon + if prev_token.kind() != T![:] { + return None; + } + + if !is_prev_token_valid_path_start_or_segment(&prev_token) { + return None; + } + } + T![::] if !is_prev_token_valid_path_start_or_segment(&original_token) => { + return None; + } + _ => {} + } + let AnalysisResult { analysis, expected: (expected_type, expected_name), @@ -618,6 +640,24 @@ impl<'a> CompletionContext<'a> { } } +fn is_prev_token_valid_path_start_or_segment(token: &SyntaxToken) -> bool { + if let Some(prev_token) = token.prev_token() { + // token before coloncolon is invalid + if !matches!( + prev_token.kind(), + // trival + WHITESPACE | COMMENT + // PathIdentSegment + | IDENT | T![super] | T![self] | T![Self] | T![crate] + // QualifiedPath + | T![>] + ) { + return false; + } + } + true +} + const OP_TRAIT_LANG_NAMES: &[&str] = &[ "add_assign", "add", diff --git a/crates/ide-completion/src/lib.rs b/crates/ide-completion/src/lib.rs index 9d0044e55f59..4b48ec6bc339 100644 --- a/crates/ide-completion/src/lib.rs +++ b/crates/ide-completion/src/lib.rs @@ -164,7 +164,6 @@ pub fn completions( completions::vis::complete_vis_path(&mut completions, ctx, path_ctx, has_in_token); } } - // prevent `(` from triggering unwanted completion noise return Some(completions.into()); } diff --git a/crates/ide-completion/src/tests/attribute.rs b/crates/ide-completion/src/tests/attribute.rs index 1578ba2c3771..4e60820dd6d6 100644 --- a/crates/ide-completion/src/tests/attribute.rs +++ b/crates/ide-completion/src/tests/attribute.rs @@ -607,6 +607,30 @@ fn attr_in_source_file_end() { ); } +#[test] +fn invalid_path() { + check( + r#" +//- proc_macros: identity +#[proc_macros:::$0] +struct Foo; +"#, + expect![[r#""#]], + ); + + check( + r#" +//- minicore: derive, copy +mod foo { + pub use Copy as Bar; +} +#[derive(foo:::::$0)] +struct Foo; +"#, + expect![""], + ); +} + mod cfg { use super::*; diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index 033dc99c26cf..1aea5d89b4a0 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -2,13 +2,22 @@ use expect_test::{expect, Expect}; -use crate::tests::{check_edit, completion_list_no_kw}; +use crate::tests::{check_edit, completion_list_no_kw, completion_list_with_trigger_character}; fn check(ra_fixture: &str, expect: Expect) { let actual = completion_list_no_kw(ra_fixture); expect.assert_eq(&actual) } +pub(crate) fn check_with_trigger_character( + ra_fixture: &str, + trigger_character: Option, + expect: Expect, +) { + let actual = completion_list_with_trigger_character(ra_fixture, trigger_character); + expect.assert_eq(&actual) +} + #[test] fn completes_if_prefix_is_keyword() { check_edit( @@ -893,3 +902,89 @@ fn f() { "#]], ); } + +#[test] +fn completes_after_colon_with_trigger() { + check_with_trigger_character( + r#" +//- minicore: option +fn foo { ::$0 } +"#, + Some(':'), + expect![[r#" + md core + "#]], + ); + check_with_trigger_character( + r#" +//- minicore: option +fn foo { /* test */::$0 } +"#, + Some(':'), + expect![[r#" + md core + "#]], + ); + + check_with_trigger_character( + r#" +fn foo { crate::$0 } +"#, + Some(':'), + expect![[r#" + fn foo() fn() + "#]], + ); + + check_with_trigger_character( + r#" +fn foo { crate:$0 } +"#, + Some(':'), + expect![""], + ); +} + +#[test] +fn completes_after_colon_without_trigger() { + check_with_trigger_character( + r#" +fn foo { crate::$0 } +"#, + None, + expect![[r#" + fn foo() fn() + "#]], + ); + + check_with_trigger_character( + r#" +fn foo { crate:$0 } +"#, + None, + expect![""], + ); +} + +#[test] +fn no_completions_in_invalid_path() { + check( + r#" +fn foo { crate:::$0 } +"#, + expect![""], + ); + check( + r#" +fn foo { crate::::$0 } +"#, + expect![""], + ); + + check( + r#" +fn foo { crate:::::$0 } +"#, + expect![""], + ); +} diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index d190a9f4e2ca..4f318f39de5f 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -28,7 +28,7 @@ use lsp_types::{ use project_model::{ManifestPath, ProjectWorkspace, TargetKind}; use serde_json::json; use stdx::{format_to, never}; -use syntax::{algo, ast, AstNode, TextRange, TextSize, T}; +use syntax::{algo, ast, AstNode, TextRange, TextSize}; use vfs::AbsPathBuf; use crate::{ @@ -812,18 +812,6 @@ pub(crate) fn handle_completion( let completion_trigger_character = params.context.and_then(|ctx| ctx.trigger_character).and_then(|s| s.chars().next()); - if Some(':') == completion_trigger_character { - let source_file = snap.analysis.parse(position.file_id)?; - let left_token = source_file.syntax().token_at_offset(position.offset).left_biased(); - let completion_triggered_after_single_colon = match left_token { - Some(left_token) => left_token.kind() == T![:], - None => true, - }; - if completion_triggered_after_single_colon { - return Ok(None); - } - } - let completion_config = &snap.config.completion(); let items = match snap.analysis.completions( completion_config, From 0ffb361eb943cdfaa6c21b761a7906161fd3b041 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Sat, 19 Nov 2022 11:10:47 +0530 Subject: [PATCH 027/478] feat: adds hover hint to ".." in record pattern currently only works with struct pattern --- crates/ide/src/hover.rs | 7 +++-- crates/ide/src/hover/render.rs | 54 +++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 838fb18c3d59..966daad1358d 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -87,7 +87,7 @@ pub struct HoverResult { // Shows additional information, like the type of an expression or the documentation for a definition when "focusing" code. // Focusing is usually hovering with a mouse, but can also be triggered with a shortcut. // -// image::https://user-images.githubusercontent.com/48062697/113020658-b5f98b80-917a-11eb-9f88-3dbc27320c95.gif[] +// image::https://user-images.githubusercontent.com/48062697/113020658-b5f98b80-917a-11eb-9f88-3dbc27320c95.gif pub(crate) fn hover( db: &RootDatabase, FileRange { file_id, range }: FileRange, @@ -268,7 +268,10 @@ fn hover_type_fallback( } }; - let res = render::type_info(sema, config, &expr_or_pat)?; + let res = + render::type_info(sema, config, &expr_or_pat) + .or_else(|| render::struct_rest_pat(sema, config, &expr_or_pat))?; + let range = sema .original_range_opt(&node) .map(|frange| frange.range) diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index d109c0769194..3b561f65da97 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -14,7 +14,7 @@ use ide_db::{ use itertools::Itertools; use stdx::format_to; use syntax::{ - algo, ast, match_ast, AstNode, Direction, + algo, ast::{self, RecordPat}, match_ast, AstNode, Direction, SyntaxKind::{LET_EXPR, LET_STMT}, SyntaxToken, T, }; @@ -250,6 +250,58 @@ pub(super) fn keyword( Some(HoverResult { markup, actions }) } +pub(super) fn struct_rest_pat( + sema: &Semantics<'_, RootDatabase>, + config: &HoverConfig, + expr_or_pat: &Either, +) -> Option { + let pat = expr_or_pat.as_ref().right()?; + + let mut ancestors = sema.ancestors_with_macros(pat.syntax().clone()); + let _record_pat_field_list = ancestors.next()?; + let record_pat = ancestors.next()?; + let pattern = sema + .find_nodes_at_offset_with_descend::( + &record_pat, + record_pat.text_range().start()) + .next()?; + + let missing_fields = sema.record_pattern_missing_fields(&pattern); + + // if there are no missing fields, the end result is a hover that shows ".." + // should be left in to indicate that there are no more fields in the pattern + // example, S {a: 1, b: 2, ..} when struct S {a: u32, b: u32} + + let mut res = HoverResult::default(); + let mut targets: Vec = Vec::new(); + let mut push_new_def = |item: hir::ModuleDef| { + if !targets.contains(&item) { + targets.push(item); + } + }; + for (_, t) in &missing_fields { + walk_and_push_ty(sema.db, &t, &mut push_new_def); + } + + res.markup = { + let mut s = String::from(".., "); + for (f, _) in &missing_fields { + s += f.display(sema.db).to_string().as_ref(); + s += ", "; + } + // get rid of trailing comma + if s.len() > 0 {s.truncate(s.len() - 2);} + + if config.markdown() { + Markup::fenced_block(&s) + } else { + s.into() + } + }; + res.actions.push(HoverAction::goto_type_from_targets(sema.db, targets)); + Some(res) +} + pub(super) fn try_for_lint(attr: &ast::Attr, token: &SyntaxToken) -> Option { let (path, tt) = attr.as_simple_call()?; if !tt.syntax().text_range().contains(token.text_range().start()) { From a778203db9d23d2c6dbbd1bd038d6ef2d5368b94 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Sat, 19 Nov 2022 11:17:43 +0530 Subject: [PATCH 028/478] simplify ancestor climbing to not consider macros --- crates/ide/src/hover/render.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index 3b561f65da97..b5320c6b6b21 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -257,7 +257,7 @@ pub(super) fn struct_rest_pat( ) -> Option { let pat = expr_or_pat.as_ref().right()?; - let mut ancestors = sema.ancestors_with_macros(pat.syntax().clone()); + let mut ancestors = pat.syntax().ancestors(); let _record_pat_field_list = ancestors.next()?; let record_pat = ancestors.next()?; let pattern = sema From 8b176810588734bdba3b5ea3374d39046f184f45 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Sat, 19 Nov 2022 11:34:49 +0530 Subject: [PATCH 029/478] fix formatting and remove unnecessary check --- crates/ide/src/hover.rs | 3 +-- crates/ide/src/hover/render.rs | 9 ++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 966daad1358d..cc64b0c3db39 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -268,8 +268,7 @@ fn hover_type_fallback( } }; - let res = - render::type_info(sema, config, &expr_or_pat) + let res = render::type_info(sema, config, &expr_or_pat) .or_else(|| render::struct_rest_pat(sema, config, &expr_or_pat))?; let range = sema diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index b5320c6b6b21..b66c029257dd 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -14,7 +14,9 @@ use ide_db::{ use itertools::Itertools; use stdx::format_to; use syntax::{ - algo, ast::{self, RecordPat}, match_ast, AstNode, Direction, + algo, + ast::{self, RecordPat}, + match_ast, AstNode, Direction, SyntaxKind::{LET_EXPR, LET_STMT}, SyntaxToken, T, }; @@ -263,7 +265,8 @@ pub(super) fn struct_rest_pat( let pattern = sema .find_nodes_at_offset_with_descend::( &record_pat, - record_pat.text_range().start()) + record_pat.text_range().start(), + ) .next()?; let missing_fields = sema.record_pattern_missing_fields(&pattern); @@ -290,7 +293,7 @@ pub(super) fn struct_rest_pat( s += ", "; } // get rid of trailing comma - if s.len() > 0 {s.truncate(s.len() - 2);} + s.truncate(s.len() - 2); if config.markdown() { Markup::fenced_block(&s) From 87658c81731cd99b80bcd32d2188890f2ca22291 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Sat, 19 Nov 2022 21:22:10 +0530 Subject: [PATCH 030/478] refactor hover change struct_rest_pat to guarentee a HoverResult Move token and node matching out of struct_rest_pat into hover --- crates/ide/src/hover.rs | 104 +++++++++++++++++++-------------- crates/ide/src/hover/render.rs | 23 +++----- 2 files changed, 66 insertions(+), 61 deletions(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index cc64b0c3db39..1e07e7dbac9c 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -127,6 +127,7 @@ pub(crate) fn hover( original_token.parent().and_then(ast::TokenTree::cast), Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind())) ); + // prefer descending the same token kind in attribute expansions, in normal macros text // equivalency is more important let descended = if in_attr { @@ -135,54 +136,68 @@ pub(crate) fn hover( sema.descend_into_macros_with_same_text(original_token.clone()) }; - // FIXME: Definition should include known lints and the like instead of having this special case here - let hovered_lint = descended.iter().find_map(|token| { - let attr = token.parent_ancestors().find_map(ast::Attr::cast)?; - render::try_for_lint(&attr, token) - }); - if let Some(res) = hovered_lint { - return Some(RangeInfo::new(original_token.text_range(), res)); - } - + // try lint hover let result = descended .iter() - .filter_map(|token| { - let node = token.parent()?; - let class = IdentClass::classify_token(sema, token)?; - if let IdentClass::Operator(OperatorClass::Await(_)) = class { - // It's better for us to fall back to the keyword hover here, - // rendering poll is very confusing - return None; - } - Some(class.definitions().into_iter().zip(iter::once(node).cycle())) + .find_map(|token| { + // FIXME: Definition should include known lints and the like instead of having this special case here + let attr = token.parent_ancestors().find_map(ast::Attr::cast)?; + render::try_for_lint(&attr, token) }) - .flatten() - .unique_by(|&(def, _)| def) - .filter_map(|(def, node)| hover_for_definition(sema, file_id, def, &node, config)) - .reduce(|mut acc: HoverResult, HoverResult { markup, actions }| { - acc.actions.extend(actions); - acc.markup = Markup::from(format!("{}\n---\n{}", acc.markup, markup)); - acc + // try item definitions + .or_else(|| { + descended + .iter() + .filter_map(|token| { + let node = token.parent()?; + let class = IdentClass::classify_token(sema, token)?; + if let IdentClass::Operator(OperatorClass::Await(_)) = class { + // It's better for us to fall back to the keyword hover here, + // rendering poll is very confusing + return None; + } + Some(class.definitions().into_iter().zip(iter::once(node).cycle())) + }) + .flatten() + .unique_by(|&(def, _)| def) + .filter_map(|(def, node)| hover_for_definition(sema, file_id, def, &node, config)) + .reduce(|mut acc: HoverResult, HoverResult { markup, actions }| { + acc.actions.extend(actions); + acc.markup = Markup::from(format!("{}\n---\n{}", acc.markup, markup)); + acc + }) + }) + // try keywords + .or_else(|| { + descended.iter().find_map(|token| render::keyword(sema, config, token)) + }) + // try rest item hover + .or_else(|| { + descended.iter().find_map(|token| { + if token.kind() != DOT2 { + return None; + } + + let record_pat_field_list = + token.parent_ancestors().find_map(ast::RecordPatFieldList::cast)?; + + let record_pat = + record_pat_field_list.syntax().parent().and_then(ast::RecordPat::cast)?; + + Some(render::struct_rest_pat(sema, config, &record_pat)) + }) }); - if result.is_none() { - // fallbacks, show keywords or types - - let res = descended.iter().find_map(|token| render::keyword(sema, config, token)); - if let Some(res) = res { - return Some(RangeInfo::new(original_token.text_range(), res)); - } - let res = descended - .iter() - .find_map(|token| hover_type_fallback(sema, config, token, &original_token)); - if let Some(_) = res { - return res; - } - } - result.map(|mut res: HoverResult| { - res.actions = dedupe_or_merge_hover_actions(res.actions); - RangeInfo::new(original_token.text_range(), res) - }) + result + .map(|mut res: HoverResult| { + res.actions = dedupe_or_merge_hover_actions(res.actions); + RangeInfo::new(original_token.text_range(), res) + }) + // fallback to type hover if there aren't any other suggestions + // this finds its own range instead of using the closest token's range + .or_else(|| { + descended.iter().find_map(|token| hover_type_fallback(sema, config, token, &token)) + }) } pub(crate) fn hover_for_definition( @@ -268,8 +283,7 @@ fn hover_type_fallback( } }; - let res = render::type_info(sema, config, &expr_or_pat) - .or_else(|| render::struct_rest_pat(sema, config, &expr_or_pat))?; + let res = render::type_info(sema, config, &expr_or_pat)?; let range = sema .original_range_opt(&node) diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index b66c029257dd..fb00a40f9619 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -252,24 +252,15 @@ pub(super) fn keyword( Some(HoverResult { markup, actions }) } +/// Returns missing types in a record pattern. +/// Only makes sense when there's a rest pattern in the record pattern. +/// i.e. `let S {a, ..} = S {a: 1, b: 2}` pub(super) fn struct_rest_pat( sema: &Semantics<'_, RootDatabase>, config: &HoverConfig, - expr_or_pat: &Either, -) -> Option { - let pat = expr_or_pat.as_ref().right()?; - - let mut ancestors = pat.syntax().ancestors(); - let _record_pat_field_list = ancestors.next()?; - let record_pat = ancestors.next()?; - let pattern = sema - .find_nodes_at_offset_with_descend::( - &record_pat, - record_pat.text_range().start(), - ) - .next()?; - - let missing_fields = sema.record_pattern_missing_fields(&pattern); + pattern: &RecordPat, +) -> HoverResult { + let missing_fields = sema.record_pattern_missing_fields(pattern); // if there are no missing fields, the end result is a hover that shows ".." // should be left in to indicate that there are no more fields in the pattern @@ -302,7 +293,7 @@ pub(super) fn struct_rest_pat( } }; res.actions.push(HoverAction::goto_type_from_targets(sema.db, targets)); - Some(res) + res } pub(super) fn try_for_lint(attr: &ast::Attr, token: &SyntaxToken) -> Option { From 29951f9766dc8ffc2b661b78cdff44ceafef3d57 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Sat, 19 Nov 2022 21:23:33 +0530 Subject: [PATCH 031/478] fix formatting --- crates/ide/src/hover.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 1e07e7dbac9c..9751dc11db6b 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -127,7 +127,7 @@ pub(crate) fn hover( original_token.parent().and_then(ast::TokenTree::cast), Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind())) ); - + // prefer descending the same token kind in attribute expansions, in normal macros text // equivalency is more important let descended = if in_attr { @@ -168,9 +168,7 @@ pub(crate) fn hover( }) }) // try keywords - .or_else(|| { - descended.iter().find_map(|token| render::keyword(sema, config, token)) - }) + .or_else(|| descended.iter().find_map(|token| render::keyword(sema, config, token))) // try rest item hover .or_else(|| { descended.iter().find_map(|token| { From a6d0e342a3eff8494f49966ca58f858a0ff5cc85 Mon Sep 17 00:00:00 2001 From: yue Date: Sun, 20 Nov 2022 00:58:59 +0900 Subject: [PATCH 032/478] Update crates/ide-completion/src/context.rs Co-authored-by: Lukas Wirth --- crates/ide-completion/src/context.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 27f6745d2417..1201854ff4f9 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -569,7 +569,7 @@ impl<'a> CompletionContext<'a> { // completing on let original_token = original_file.syntax().token_at_offset(offset).left_biased()?; - // try to skip completions on path with qinvalid colons + // try to skip completions on path with invalid colons // this approach works in normal path and inside token tree match original_token.kind() { T![:] => { From 7a568f7f9571c2c93fd8e60712878736d942c787 Mon Sep 17 00:00:00 2001 From: yue4u Date: Sun, 20 Nov 2022 01:29:02 +0900 Subject: [PATCH 033/478] fix: remove insufficient check for coloncolon --- crates/ide-completion/src/context.rs | 3 --- crates/ide-completion/src/tests/special.rs | 7 ------- 2 files changed, 10 deletions(-) diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 1201854ff4f9..a0e1153f08b8 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -585,9 +585,6 @@ impl<'a> CompletionContext<'a> { return None; } } - T![::] if !is_prev_token_valid_path_start_or_segment(&original_token) => { - return None; - } _ => {} } diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index 1aea5d89b4a0..6cfa72d6539b 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -977,13 +977,6 @@ fn foo { crate:::$0 } check( r#" fn foo { crate::::$0 } -"#, - expect![""], - ); - - check( - r#" -fn foo { crate:::::$0 } "#, expect![""], ); From 23cfe0702de3a7144be6842bf54d94091b0cde6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nyikos=20Zolt=C3=A1n?= Date: Sat, 19 Nov 2022 20:08:01 +0100 Subject: [PATCH 034/478] fix: tuple to named struct inside macros seems to fix #13634 --- .../convert_tuple_struct_to_named_struct.rs | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs index 92e091fca126..b0383291e737 100644 --- a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs +++ b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs @@ -168,7 +168,7 @@ fn edit_struct_references( let arg_list = call_expr.syntax().descendants().find_map(ast::ArgList::cast)?; edit.replace( - call_expr.syntax().text_range(), + ctx.sema.original_range(&node).range, ast::make::record_expr( path, ast::make::record_expr_field_list(arg_list.args().zip(names).map( @@ -249,6 +249,24 @@ mod tests { ); check_assist_not_applicable(convert_tuple_struct_to_named_struct, r#"struct Foo$0;"#); } + #[test] + fn convert_in_macro_args() { + check_assist( + convert_tuple_struct_to_named_struct, + r#" +macro_rules! foo {($i:expr) => {$i} } +struct T$0(u8); +fn test() { + foo!(T(1)); +}"#, + r#" +macro_rules! foo {($i:expr) => {$i} } +struct T { field1: u8 } +fn test() { + foo!(T { field1: 1 }); +}"#, + ); + } #[test] fn convert_simple_struct() { @@ -554,6 +572,29 @@ where ); } + #[test] + fn convert_variant_in_macro_args() { + check_assist( + convert_tuple_struct_to_named_struct, + r#" +macro_rules! foo {($i:expr) => {$i} } +enum T { + V$0(u8) +} +fn test() { + foo!(T::V(1)); +}"#, + r#" +macro_rules! foo {($i:expr) => {$i} } +enum T { + V { field1: u8 } +} +fn test() { + foo!(T::V { field1: 1 }); +}"#, + ); + } + #[test] fn convert_simple_variant() { check_assist( From 427b63b676c89dc6be407181f25f74ddc9950ea1 Mon Sep 17 00:00:00 2001 From: Jake Heinz Date: Sun, 20 Nov 2022 08:48:27 +0000 Subject: [PATCH 035/478] hir-expand: fix compile_error! expansion not unquoting strings --- .../src/macro_expansion_tests/builtin_fn_macro.rs | 6 ++++-- crates/hir-expand/src/builtin_fn_macro.rs | 13 ++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs index c04cd1651926..bb45266725c6 100644 --- a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs +++ b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs @@ -163,7 +163,8 @@ macro_rules! compile_error { } // This expands to nothing (since it's in item position), but emits an error. -compile_error!("error!"); +compile_error!("error, with an escaped quote: \""); +compile_error!(r"this is a raw string"); "#, expect![[r##" #[rustc_builtin_macro] @@ -172,7 +173,8 @@ macro_rules! compile_error { ($msg:expr,) => ({ /* compiler built-in */ }) } -/* error: error! */ +/* error: error, with an escaped quote: " */ +/* error: this is a raw string */ "##]], ); } diff --git a/crates/hir-expand/src/builtin_fn_macro.rs b/crates/hir-expand/src/builtin_fn_macro.rs index 7b19518e25a8..985954d44e46 100644 --- a/crates/hir-expand/src/builtin_fn_macro.rs +++ b/crates/hir-expand/src/builtin_fn_macro.rs @@ -379,15 +379,10 @@ fn compile_error_expand( tt: &tt::Subtree, ) -> ExpandResult { let err = match &*tt.token_trees { - [tt::TokenTree::Leaf(tt::Leaf::Literal(it))] => { - let text = it.text.as_str(); - if text.starts_with('"') && text.ends_with('"') { - // FIXME: does not handle raw strings - ExpandError::Other(text[1..text.len() - 1].into()) - } else { - ExpandError::Other("`compile_error!` argument must be a string".into()) - } - } + [tt::TokenTree::Leaf(tt::Leaf::Literal(it))] => match unquote_str(it) { + Some(unquoted) => ExpandError::Other(unquoted.into()), + None => ExpandError::Other("`compile_error!` argument must be a string".into()), + }, _ => ExpandError::Other("`compile_error!` argument must be a string".into()), }; From 95b4a7487b4055d951b59967caffcdc92a733c84 Mon Sep 17 00:00:00 2001 From: Bben01 <52465698+Bben01@users.noreply.github.com> Date: Mon, 7 Nov 2022 22:31:43 +0200 Subject: [PATCH 036/478] Suppress "Implement default members" inside contained items --- .../src/handlers/add_missing_impl_members.rs | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/crates/ide-assists/src/handlers/add_missing_impl_members.rs index 62cf5ab4f37a..2394e4341afb 100644 --- a/crates/ide-assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ide-assists/src/handlers/add_missing_impl_members.rs @@ -107,6 +107,14 @@ fn add_missing_impl_members_inner( ) -> Option<()> { let _p = profile::span("add_missing_impl_members_inner"); let impl_def = ctx.find_node_at_offset::()?; + + if ctx.token_at_offset().all(|t| { + t.parent_ancestors() + .any(|s| ast::BlockExpr::can_cast(s.kind()) || ast::ParamList::can_cast(s.kind())) + }) { + return None; + } + let target_scope = ctx.sema.scope(impl_def.syntax())?; let trait_ = resolve_target_trait(&ctx.sema, &impl_def)?; @@ -1337,4 +1345,95 @@ impl PartialEq for SomeStruct { "#, ); } + + #[test] + fn test_ignore_function_body() { + check_assist_not_applicable( + add_missing_default_members, + r#" +trait Trait { + type X; + fn foo(&self); + fn bar(&self) {} +} + +impl Trait for () { + type X = u8; + fn foo(&self) {$0 + let x = 5; + } +}"#, + ) + } + + #[test] + fn test_ignore_param_list() { + check_assist_not_applicable( + add_missing_impl_members, + r#" +trait Trait { + type X; + fn foo(&self); + fn bar(&self); +} + +impl Trait for () { + type X = u8; + fn foo(&self$0) { + let x = 5; + } +}"#, + ) + } + + #[test] + fn test_ignore_scope_inside_function() { + check_assist_not_applicable( + add_missing_impl_members, + r#" +trait Trait { + type X; + fn foo(&self); + fn bar(&self); +} + +impl Trait for () { + type X = u8; + fn foo(&self) { + let x = async {$0 5 }; + } +}"#, + ) + } + + #[test] + fn test_apply_outside_function() { + check_assist( + add_missing_default_members, + r#" +trait Trait { + type X; + fn foo(&self); + fn bar(&self) {} +} + +impl Trait for () { + type X = u8; + fn foo(&self)$0 {} +}"#, + r#" +trait Trait { + type X; + fn foo(&self); + fn bar(&self) {} +} + +impl Trait for () { + type X = u8; + fn foo(&self) {} + + $0fn bar(&self) {} +}"#, + ) + } } From ecb15ca7173a6d416c9f74af06f71cf003cdd597 Mon Sep 17 00:00:00 2001 From: Mihail Mihov Date: Wed, 9 Nov 2022 23:43:07 +0200 Subject: [PATCH 037/478] Add assist to generate trait impl's --- .../src/handlers/generate_trait_impl.rs | 226 ++++++++++++++++++ crates/ide-assists/src/lib.rs | 2 + crates/ide-assists/src/tests/generated.rs | 21 ++ 3 files changed, 249 insertions(+) create mode 100644 crates/ide-assists/src/handlers/generate_trait_impl.rs diff --git a/crates/ide-assists/src/handlers/generate_trait_impl.rs b/crates/ide-assists/src/handlers/generate_trait_impl.rs new file mode 100644 index 000000000000..7b1ee5b5c310 --- /dev/null +++ b/crates/ide-assists/src/handlers/generate_trait_impl.rs @@ -0,0 +1,226 @@ +use syntax::ast::{self, AstNode, HasName}; + +use crate::{utils::generate_trait_impl_text, AssistContext, AssistId, AssistKind, Assists}; + +// Assist: generate_trait_impl +// +// Adds a new trait impl for a type. +// +// ``` +// struct $0Ctx { +// data: T, +// } +// ``` +// -> +// ``` +// struct Ctx { +// data: T, +// } +// +// impl $0 for Ctx { +// +// } +// ``` +pub(crate) fn generate_trait_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let nominal = ctx.find_node_at_offset::()?; + let name = nominal.name()?; + let target = nominal.syntax().text_range(); + + if let Some(_) = ctx.find_node_at_offset::() { + return None; + } + + acc.add( + AssistId("generate_trait_impl", AssistKind::Generate), + format!("Generate trait impl for `{name}`"), + target, + |edit| { + let start_offset = nominal.syntax().text_range().end(); + match ctx.config.snippet_cap { + Some(cap) => { + let snippet = generate_trait_impl_text(&nominal, "$0", ""); + edit.insert_snippet(cap, start_offset, snippet); + } + None => { + let text = generate_trait_impl_text(&nominal, "", ""); + edit.insert(start_offset, text); + } + } + }, + ) +} + +#[cfg(test)] +mod tests { + use crate::tests::{check_assist, check_assist_target}; + + use super::*; + + #[test] + fn test_add_trait_impl() { + check_assist( + generate_trait_impl, + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl $0 for Foo { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_generics() { + check_assist( + generate_trait_impl, + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl $0 for Foo { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_generics_and_lifetime_parameters() { + check_assist( + generate_trait_impl, + r#" + struct Foo<'a, T: Foo<'a>>$0 {} + "#, + r#" + struct Foo<'a, T: Foo<'a>> {} + + impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_attributes() { + check_assist( + generate_trait_impl, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo$0<'a>> {} + "#, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo<'a>> {} + + #[cfg(feature = "foo")] + impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_default_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl $0 for Defaulted { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_constrained_default_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + "#, + r#" + struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + + impl<'a, 'b: 'a, T: Debug + Clone + 'a + 'b, const S: usize> $0 for Defaulted<'a, 'b, T, S> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_const_defaulted_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl $0 for Defaulted { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_trait_constraint() { + check_assist( + generate_trait_impl, + r#" + pub trait Trait {} + struct Struct$0 + where + T: Trait, + { + inner: T, + } + "#, + r#" + pub trait Trait {} + struct Struct + where + T: Trait, + { + inner: T, + } + + impl $0 for Struct + where + T: Trait, + { + + } + "#, + ); + } + + #[test] + fn add_trait_impl_target() { + check_assist_target( + generate_trait_impl, + r#" + struct SomeThingIrrelevant; + /// Has a lifetime parameter + struct Foo$0<'a, T: Foo<'a>> {} + struct EvenMoreIrrelevant; + "#, + "/// Has a lifetime parameter\nstruct Foo<'a, T: Foo<'a>> {}", + ); + } +} diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index 387cc6314282..e3c483cf0a96 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -152,6 +152,7 @@ mod handlers { mod generate_function; mod generate_getter; mod generate_impl; + mod generate_trait_impl; mod generate_is_empty_from_len; mod generate_new; mod generate_setter; @@ -247,6 +248,7 @@ mod handlers { generate_from_impl_for_enum::generate_from_impl_for_enum, generate_function::generate_function, generate_impl::generate_impl, + generate_trait_impl::generate_trait_impl, generate_is_empty_from_len::generate_is_empty_from_len, generate_new::generate_new, inline_call::inline_call, diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index c09317572acf..67657b61bb52 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -1341,6 +1341,27 @@ impl Person { ) } +#[test] +fn doctest_generate_trait_impl() { + check_doc_test( + "generate_trait_impl", + r#####" +struct $0Ctx { + data: T, +} +"#####, + r#####" +struct Ctx { + data: T, +} + +impl $0 for Ctx { + +} +"#####, + ) +} + #[test] fn doctest_inline_call() { check_doc_test( From 0bd11f817136f372b30a328ccf71c0bb0c68ef21 Mon Sep 17 00:00:00 2001 From: Mihail Mihov Date: Thu, 10 Nov 2022 00:01:29 +0200 Subject: [PATCH 038/478] Reduce trigger range of `generate_impl` assist and update tests --- .../ide-assists/src/handlers/generate_impl.rs | 280 ++++++++++-------- crates/ide-assists/src/tests/generated.rs | 4 +- 2 files changed, 160 insertions(+), 124 deletions(-) diff --git a/crates/ide-assists/src/handlers/generate_impl.rs b/crates/ide-assists/src/handlers/generate_impl.rs index 9af26c04eb45..1bea220f3893 100644 --- a/crates/ide-assists/src/handlers/generate_impl.rs +++ b/crates/ide-assists/src/handlers/generate_impl.rs @@ -7,8 +7,8 @@ use crate::{utils::generate_impl_text, AssistContext, AssistId, AssistKind, Assi // Adds a new inherent impl for a type. // // ``` -// struct Ctx { -// data: T,$0 +// struct Ctx$0 { +// data: T, // } // ``` // -> @@ -26,6 +26,10 @@ pub(crate) fn generate_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Optio let name = nominal.name()?; let target = nominal.syntax().text_range(); + if let Some(_) = ctx.find_node_at_offset::() { + return None; + } + acc.add( AssistId("generate_impl", AssistKind::Generate), format!("Generate impl for `{name}`"), @@ -52,139 +56,171 @@ mod tests { use super::*; - // FIXME: break up into separate test fns #[test] fn test_add_impl() { - check_assist( - generate_impl, - "struct Foo {$0}\n", - "struct Foo {}\n\nimpl Foo {\n $0\n}\n", - ); - check_assist( - generate_impl, - "struct Foo {$0}", - "struct Foo {}\n\nimpl Foo {\n $0\n}", - ); - check_assist( - generate_impl, - "struct Foo<'a, T: Foo<'a>> {$0}", - "struct Foo<'a, T: Foo<'a>> {}\n\nimpl<'a, T: Foo<'a>> Foo<'a, T> {\n $0\n}", - ); check_assist( generate_impl, r#" - struct MyOwnArray {}$0"#, + struct Foo$0 {} + "#, r#" - struct MyOwnArray {} + struct Foo {} - impl MyOwnArray { - $0 - }"#, - ); - check_assist( - generate_impl, - r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo<'a>> {$0}"#, - r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo<'a>> {} - - #[cfg(feature = "foo")] - impl<'a, T: Foo<'a>> Foo<'a, T> { - $0 - }"#, - ); - - check_assist( - generate_impl, - r#" - #[cfg(not(feature = "foo"))] - struct Foo<'a, T: Foo<'a>> {$0}"#, - r#" - #[cfg(not(feature = "foo"))] - struct Foo<'a, T: Foo<'a>> {} - - #[cfg(not(feature = "foo"))] - impl<'a, T: Foo<'a>> Foo<'a, T> { - $0 - }"#, - ); - - check_assist( - generate_impl, - r#" - struct Defaulted {}$0"#, - r#" - struct Defaulted {} - - impl Defaulted { - $0 - }"#, - ); - - check_assist( - generate_impl, - r#" - struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {}$0"#, - r#" - struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} - - impl<'a, 'b: 'a, T: Debug + Clone + 'a + 'b, const S: usize> Defaulted<'a, 'b, T, S> { - $0 - }"#, - ); - - check_assist( - generate_impl, - r#" - struct Defaulted {}$0"#, - r#" - struct Defaulted {} - - impl Defaulted { - $0 - }"#, - ); - - check_assist( - generate_impl, - r#"pub trait Trait {} -struct Struct$0 -where - T: Trait, -{ - inner: T, -}"#, - r#"pub trait Trait {} -struct Struct -where - T: Trait, -{ - inner: T, -} - -impl Struct -where - T: Trait, -{ - $0 -}"#, + impl Foo { + $0 + } + "#, ); } #[test] - fn add_impl_target() { + fn test_add_impl_with_generics() { + check_assist( + generate_impl, + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl Foo { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_generics_and_lifetime_parameters() { + check_assist( + generate_impl, + r#" + struct Foo<'a, T: Foo<'a>>$0 {} + "#, + r#" + struct Foo<'a, T: Foo<'a>> {} + + impl<'a, T: Foo<'a>> Foo<'a, T> { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_attributes() { + check_assist( + generate_impl, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo$0<'a>> {} + "#, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo<'a>> {} + + #[cfg(feature = "foo")] + impl<'a, T: Foo<'a>> Foo<'a, T> { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_default_generic() { + check_assist( + generate_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl Defaulted { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_constrained_default_generic() { + check_assist( + generate_impl, + r#" + struct Defaulted$0<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + "#, + r#" + struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + + impl<'a, 'b: 'a, T: Debug + Clone + 'a + 'b, const S: usize> Defaulted<'a, 'b, T, S> { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_const_defaulted_generic() { + check_assist( + generate_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl Defaulted { + $0 + } + "#, + ); + } + + #[test] + fn test_add_impl_with_trait_constraint() { + check_assist( + generate_impl, + r#" + pub trait Trait {} + struct Struct$0 + where + T: Trait, + { + inner: T, + } + "#, + r#" + pub trait Trait {} + struct Struct + where + T: Trait, + { + inner: T, + } + + impl Struct + where + T: Trait, + { + $0 + } + "#, + ); + } + + #[test] + fn add_trait_impl_target() { check_assist_target( generate_impl, - " -struct SomeThingIrrelevant; -/// Has a lifetime parameter -struct Foo<'a, T: Foo<'a>> {$0} -struct EvenMoreIrrelevant; -", - "/// Has a lifetime parameter -struct Foo<'a, T: Foo<'a>> {}", + r#" + struct SomeThingIrrelevant; + /// Has a lifetime parameter + struct Foo$0<'a, T: Foo<'a>> {} + struct EvenMoreIrrelevant; + "#, + "/// Has a lifetime parameter\nstruct Foo<'a, T: Foo<'a>> {}", ); } } diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 67657b61bb52..d797f077672d 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -1249,8 +1249,8 @@ fn doctest_generate_impl() { check_doc_test( "generate_impl", r#####" -struct Ctx { - data: T,$0 +struct Ctx$0 { + data: T, } "#####, r#####" From 469f620b064d2935c741222927dc955da395532b Mon Sep 17 00:00:00 2001 From: Mihail Mihov Date: Mon, 21 Nov 2022 22:58:01 +0200 Subject: [PATCH 039/478] Combine `generate_impl` and `generate_trait_impl` into a single file --- .../ide-assists/src/handlers/generate_impl.rs | 223 ++++++++++++++++- .../src/handlers/generate_trait_impl.rs | 226 ------------------ crates/ide-assists/src/lib.rs | 3 +- 3 files changed, 222 insertions(+), 230 deletions(-) delete mode 100644 crates/ide-assists/src/handlers/generate_trait_impl.rs diff --git a/crates/ide-assists/src/handlers/generate_impl.rs b/crates/ide-assists/src/handlers/generate_impl.rs index 1bea220f3893..690c97e26d8c 100644 --- a/crates/ide-assists/src/handlers/generate_impl.rs +++ b/crates/ide-assists/src/handlers/generate_impl.rs @@ -1,6 +1,9 @@ use syntax::ast::{self, AstNode, HasName}; -use crate::{utils::generate_impl_text, AssistContext, AssistId, AssistKind, Assists}; +use crate::{ + utils::{generate_impl_text, generate_trait_impl_text}, + AssistContext, AssistId, AssistKind, Assists, +}; // Assist: generate_impl // @@ -50,6 +53,54 @@ pub(crate) fn generate_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Optio ) } +// Assist: generate_trait_impl +// +// Adds a new trait impl for a type. +// +// ``` +// struct $0Ctx { +// data: T, +// } +// ``` +// -> +// ``` +// struct Ctx { +// data: T, +// } +// +// impl $0 for Ctx { +// +// } +// ``` +pub(crate) fn generate_trait_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let nominal = ctx.find_node_at_offset::()?; + let name = nominal.name()?; + let target = nominal.syntax().text_range(); + + if let Some(_) = ctx.find_node_at_offset::() { + return None; + } + + acc.add( + AssistId("generate_trait_impl", AssistKind::Generate), + format!("Generate trait impl for `{name}`"), + target, + |edit| { + let start_offset = nominal.syntax().text_range().end(); + match ctx.config.snippet_cap { + Some(cap) => { + let snippet = generate_trait_impl_text(&nominal, "$0", ""); + edit.insert_snippet(cap, start_offset, snippet); + } + None => { + let text = generate_trait_impl_text(&nominal, "", ""); + edit.insert(start_offset, text); + } + } + }, + ) +} + #[cfg(test)] mod tests { use crate::tests::{check_assist, check_assist_target}; @@ -211,7 +262,7 @@ mod tests { } #[test] - fn add_trait_impl_target() { + fn add_impl_target() { check_assist_target( generate_impl, r#" @@ -223,4 +274,172 @@ mod tests { "/// Has a lifetime parameter\nstruct Foo<'a, T: Foo<'a>> {}", ); } + + #[test] + fn test_add_trait_impl() { + check_assist( + generate_trait_impl, + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl $0 for Foo { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_generics() { + check_assist( + generate_trait_impl, + r#" + struct Foo$0 {} + "#, + r#" + struct Foo {} + + impl $0 for Foo { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_generics_and_lifetime_parameters() { + check_assist( + generate_trait_impl, + r#" + struct Foo<'a, T: Foo<'a>>$0 {} + "#, + r#" + struct Foo<'a, T: Foo<'a>> {} + + impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_attributes() { + check_assist( + generate_trait_impl, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo$0<'a>> {} + "#, + r#" + #[cfg(feature = "foo")] + struct Foo<'a, T: Foo<'a>> {} + + #[cfg(feature = "foo")] + impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_default_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl $0 for Defaulted { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_constrained_default_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + "#, + r#" + struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} + + impl<'a, 'b: 'a, T: Debug + Clone + 'a + 'b, const S: usize> $0 for Defaulted<'a, 'b, T, S> { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_const_defaulted_generic() { + check_assist( + generate_trait_impl, + r#" + struct Defaulted$0 {} + "#, + r#" + struct Defaulted {} + + impl $0 for Defaulted { + + } + "#, + ); + } + + #[test] + fn test_add_trait_impl_with_trait_constraint() { + check_assist( + generate_trait_impl, + r#" + pub trait Trait {} + struct Struct$0 + where + T: Trait, + { + inner: T, + } + "#, + r#" + pub trait Trait {} + struct Struct + where + T: Trait, + { + inner: T, + } + + impl $0 for Struct + where + T: Trait, + { + + } + "#, + ); + } + + #[test] + fn add_trait_impl_target() { + check_assist_target( + generate_trait_impl, + r#" + struct SomeThingIrrelevant; + /// Has a lifetime parameter + struct Foo$0<'a, T: Foo<'a>> {} + struct EvenMoreIrrelevant; + "#, + "/// Has a lifetime parameter\nstruct Foo<'a, T: Foo<'a>> {}", + ); + } } diff --git a/crates/ide-assists/src/handlers/generate_trait_impl.rs b/crates/ide-assists/src/handlers/generate_trait_impl.rs deleted file mode 100644 index 7b1ee5b5c310..000000000000 --- a/crates/ide-assists/src/handlers/generate_trait_impl.rs +++ /dev/null @@ -1,226 +0,0 @@ -use syntax::ast::{self, AstNode, HasName}; - -use crate::{utils::generate_trait_impl_text, AssistContext, AssistId, AssistKind, Assists}; - -// Assist: generate_trait_impl -// -// Adds a new trait impl for a type. -// -// ``` -// struct $0Ctx { -// data: T, -// } -// ``` -// -> -// ``` -// struct Ctx { -// data: T, -// } -// -// impl $0 for Ctx { -// -// } -// ``` -pub(crate) fn generate_trait_impl(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - let nominal = ctx.find_node_at_offset::()?; - let name = nominal.name()?; - let target = nominal.syntax().text_range(); - - if let Some(_) = ctx.find_node_at_offset::() { - return None; - } - - acc.add( - AssistId("generate_trait_impl", AssistKind::Generate), - format!("Generate trait impl for `{name}`"), - target, - |edit| { - let start_offset = nominal.syntax().text_range().end(); - match ctx.config.snippet_cap { - Some(cap) => { - let snippet = generate_trait_impl_text(&nominal, "$0", ""); - edit.insert_snippet(cap, start_offset, snippet); - } - None => { - let text = generate_trait_impl_text(&nominal, "", ""); - edit.insert(start_offset, text); - } - } - }, - ) -} - -#[cfg(test)] -mod tests { - use crate::tests::{check_assist, check_assist_target}; - - use super::*; - - #[test] - fn test_add_trait_impl() { - check_assist( - generate_trait_impl, - r#" - struct Foo$0 {} - "#, - r#" - struct Foo {} - - impl $0 for Foo { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_generics() { - check_assist( - generate_trait_impl, - r#" - struct Foo$0 {} - "#, - r#" - struct Foo {} - - impl $0 for Foo { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_generics_and_lifetime_parameters() { - check_assist( - generate_trait_impl, - r#" - struct Foo<'a, T: Foo<'a>>$0 {} - "#, - r#" - struct Foo<'a, T: Foo<'a>> {} - - impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_attributes() { - check_assist( - generate_trait_impl, - r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo$0<'a>> {} - "#, - r#" - #[cfg(feature = "foo")] - struct Foo<'a, T: Foo<'a>> {} - - #[cfg(feature = "foo")] - impl<'a, T: Foo<'a>> $0 for Foo<'a, T> { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_default_generic() { - check_assist( - generate_trait_impl, - r#" - struct Defaulted$0 {} - "#, - r#" - struct Defaulted {} - - impl $0 for Defaulted { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_constrained_default_generic() { - check_assist( - generate_trait_impl, - r#" - struct Defaulted$0<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} - "#, - r#" - struct Defaulted<'a, 'b: 'a, T: Debug + Clone + 'a + 'b = String, const S: usize> {} - - impl<'a, 'b: 'a, T: Debug + Clone + 'a + 'b, const S: usize> $0 for Defaulted<'a, 'b, T, S> { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_const_defaulted_generic() { - check_assist( - generate_trait_impl, - r#" - struct Defaulted$0 {} - "#, - r#" - struct Defaulted {} - - impl $0 for Defaulted { - - } - "#, - ); - } - - #[test] - fn test_add_trait_impl_with_trait_constraint() { - check_assist( - generate_trait_impl, - r#" - pub trait Trait {} - struct Struct$0 - where - T: Trait, - { - inner: T, - } - "#, - r#" - pub trait Trait {} - struct Struct - where - T: Trait, - { - inner: T, - } - - impl $0 for Struct - where - T: Trait, - { - - } - "#, - ); - } - - #[test] - fn add_trait_impl_target() { - check_assist_target( - generate_trait_impl, - r#" - struct SomeThingIrrelevant; - /// Has a lifetime parameter - struct Foo$0<'a, T: Foo<'a>> {} - struct EvenMoreIrrelevant; - "#, - "/// Has a lifetime parameter\nstruct Foo<'a, T: Foo<'a>> {}", - ); - } -} diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index e3c483cf0a96..b12f99cc5329 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -152,7 +152,6 @@ mod handlers { mod generate_function; mod generate_getter; mod generate_impl; - mod generate_trait_impl; mod generate_is_empty_from_len; mod generate_new; mod generate_setter; @@ -248,7 +247,7 @@ mod handlers { generate_from_impl_for_enum::generate_from_impl_for_enum, generate_function::generate_function, generate_impl::generate_impl, - generate_trait_impl::generate_trait_impl, + generate_impl::generate_trait_impl, generate_is_empty_from_len::generate_is_empty_from_len, generate_new::generate_new, inline_call::inline_call, From b116fe9be0812ce3052d7c96359e87cfe7aca558 Mon Sep 17 00:00:00 2001 From: Isobel Redelmeier Date: Mon, 21 Nov 2022 16:40:32 -0500 Subject: [PATCH 040/478] Fix: Handle empty `checkOnSave/target` values This fixes a regression introduced by #13290, in which failing to set `checkOnSave/target` (or `checkOnSave/targets`) would lead to an invalid config. --- crates/rust-analyzer/src/config.rs | 20 ++++++++++++++------ docs/user/generated_config.adoc | 2 +- editors/code/package.json | 5 ++++- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 6b2f22faa717..6c0d712a4f47 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -182,7 +182,7 @@ config_data! { /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. /// /// Aliased as `"checkOnSave.targets"`. - checkOnSave_target | checkOnSave_targets: CheckOnSaveTargets = "[]", + checkOnSave_target | checkOnSave_targets: Option = "null", /// Toggles the additional completions that automatically add imports when completed. /// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. @@ -1153,10 +1153,15 @@ impl Config { } Some(_) | None => FlycheckConfig::CargoCommand { command: self.data.checkOnSave_command.clone(), - target_triples: match &self.data.checkOnSave_target.0[..] { - [] => self.data.cargo_target.clone().into_iter().collect(), - targets => targets.into(), - }, + target_triples: self + .data + .checkOnSave_target + .clone() + .and_then(|targets| match &targets.0[..] { + [] => None, + targets => Some(targets.into()), + }) + .unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()), all_targets: self.data.checkOnSave_allTargets, no_default_features: self .data @@ -2126,8 +2131,11 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "The command will be executed in the project root." ], }, - "CheckOnSaveTargets" => set! { + "Option" => set! { "anyOf": [ + { + "type": "null" + }, { "type": "string", }, diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 57f950034cbb..db41c7bf109e 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -190,7 +190,7 @@ cargo check --workspace --message-format=json --all-targets ``` . -- -[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `[]`):: +[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`):: + -- Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. diff --git a/editors/code/package.json b/editors/code/package.json index c4d4e428ea07..a3385a3868b6 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -640,8 +640,11 @@ }, "rust-analyzer.checkOnSave.target": { "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", - "default": [], + "default": null, "anyOf": [ + { + "type": "null" + }, { "type": "string" }, From a2a1d995458c60175ad3aa37b7b8c5b2752e968c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 23 Nov 2022 17:24:03 +0200 Subject: [PATCH 041/478] :arrow_up: rust-analyzer --- Cargo.lock | 116 +++++--- crates/base-db/Cargo.toml | 2 +- crates/cfg/Cargo.toml | 2 +- crates/flycheck/Cargo.toml | 3 +- crates/flycheck/src/lib.rs | 27 +- crates/hir-def/Cargo.toml | 2 +- crates/hir-def/src/data.rs | 18 +- crates/hir-def/src/item_tree.rs | 3 +- crates/hir-def/src/item_tree/lower.rs | 10 +- crates/hir-def/src/item_tree/pretty.rs | 19 +- .../src/macro_expansion_tests/mbe/matching.rs | 10 +- .../src/macro_expansion_tests/proc_macros.rs | 6 +- crates/hir-def/src/nameres/collector.rs | 4 + crates/hir-def/src/nameres/path_resolution.rs | 7 + crates/hir-def/src/nameres/tests.rs | 6 +- crates/hir-def/src/nameres/tests/globs.rs | 33 ++- .../src/nameres/tests/mod_resolution.rs | 2 +- crates/hir-expand/Cargo.toml | 2 +- crates/hir-expand/src/fixup.rs | 96 +++++-- crates/hir-expand/src/lib.rs | 4 +- crates/hir-ty/Cargo.toml | 2 +- crates/hir-ty/src/lib.rs | 50 ++-- crates/hir-ty/src/method_resolution.rs | 2 +- crates/hir-ty/src/tests/method_resolution.rs | 40 +-- crates/hir-ty/src/tests/regression.rs | 16 ++ crates/hir-ty/src/tests/simple.rs | 18 +- crates/hir-ty/src/tests/traits.rs | 36 +-- crates/hir/Cargo.toml | 2 +- crates/hir/src/lib.rs | 27 +- crates/hir/src/semantics.rs | 37 ++- crates/hir/src/source_analyzer.rs | 16 +- crates/ide-assists/Cargo.toml | 2 +- .../src/handlers/add_missing_impl_members.rs | 38 +-- .../src/handlers/extract_function.rs | 270 +++++++++++++++++- .../src/handlers/fix_visibility.rs | 20 +- .../src/handlers/generate_enum_variant.rs | 12 +- .../src/handlers/generate_function.rs | 4 +- .../src/handlers/move_format_string_arg.rs | 6 +- crates/ide-assists/src/handlers/remove_dbg.rs | 63 +++- .../replace_derive_with_manual_impl.rs | 2 - crates/ide-assists/src/tests/generated.rs | 4 +- crates/ide-assists/src/utils.rs | 4 + crates/ide-completion/Cargo.toml | 2 +- .../src/completions/item_list/trait_impl.rs | 159 +++++++++-- crates/ide-completion/src/context/analysis.rs | 8 +- crates/ide-completion/src/tests/item_list.rs | 32 +++ crates/ide-db/Cargo.toml | 2 +- crates/ide-db/src/line_index.rs | 7 +- .../src/syntax_helpers/format_string_exprs.rs | 60 ++-- crates/ide-diagnostics/Cargo.toml | 2 +- .../src/handlers/macro_error.rs | 5 +- .../src/handlers/no_such_field.rs | 4 +- .../src/handlers/unresolved_macro_call.rs | 5 +- .../src/handlers/unresolved_proc_macro.rs | 12 +- .../src/handlers/useless_braces.rs | 20 +- crates/ide-diagnostics/src/lib.rs | 22 ++ crates/ide-ssr/Cargo.toml | 2 +- crates/ide/Cargo.toml | 2 +- crates/ide/src/goto_definition.rs | 6 +- crates/ide/src/hover.rs | 9 +- crates/ide/src/inlay_hints.rs | 243 +++++++++++----- crates/ide/src/lib.rs | 6 +- crates/ide/src/moniker.rs | 20 +- crates/ide/src/references.rs | 2 + crates/ide/src/signature_help.rs | 31 ++ crates/ide/src/static_index.rs | 7 +- crates/limit/Cargo.toml | 2 +- crates/mbe/Cargo.toml | 2 +- crates/mbe/src/syntax_bridge.rs | 89 ++++-- crates/mbe/src/syntax_bridge/tests.rs | 93 ++++++ crates/parser/Cargo.toml | 2 +- crates/paths/Cargo.toml | 2 +- crates/proc-macro-api/Cargo.toml | 2 +- crates/proc-macro-srv-cli/Cargo.toml | 2 +- crates/proc-macro-srv/Cargo.toml | 2 +- crates/proc-macro-srv/src/abis/mod.rs | 2 +- crates/proc-macro-srv/src/dylib.rs | 4 +- crates/proc-macro-srv/src/lib.rs | 4 +- crates/proc-macro-srv/src/tests/mod.rs | 6 +- crates/proc-macro-test/Cargo.toml | 2 +- crates/proc-macro-test/imp/Cargo.toml | 2 +- crates/profile/Cargo.toml | 2 +- crates/project-model/Cargo.toml | 2 +- crates/project-model/src/build_scripts.rs | 2 +- crates/project-model/src/cargo_workspace.rs | 52 +++- crates/project-model/src/sysroot.rs | 27 +- crates/project-model/src/tests.rs | 79 ++--- crates/project-model/src/workspace.rs | 92 +++--- crates/rust-analyzer/Cargo.toml | 2 +- crates/rust-analyzer/src/cargo_target_spec.rs | 10 +- crates/rust-analyzer/src/cli/load_cargo.rs | 22 +- crates/rust-analyzer/src/cli/scip.rs | 113 +++++--- crates/rust-analyzer/src/config.rs | 83 +++++- .../rust-analyzer/src/diagnostics/to_proto.rs | 22 +- crates/rust-analyzer/src/from_proto.rs | 6 +- crates/rust-analyzer/src/global_state.rs | 2 +- crates/rust-analyzer/src/handlers.rs | 19 +- crates/rust-analyzer/src/line_index.rs | 62 +++- crates/rust-analyzer/src/lsp_utils.rs | 111 +++---- crates/rust-analyzer/src/main_loop.rs | 8 +- crates/rust-analyzer/src/mem_docs.rs | 8 +- crates/rust-analyzer/src/reload.rs | 64 ++--- crates/rust-analyzer/src/to_proto.rs | 60 ++-- crates/sourcegen/Cargo.toml | 2 +- crates/stdx/Cargo.toml | 4 +- crates/syntax/Cargo.toml | 2 +- crates/syntax/fuzz/Cargo.toml | 2 +- crates/syntax/rust.ungram | 7 +- crates/syntax/src/ast/generated/nodes.rs | 2 + crates/syntax/src/ast/token_ext.rs | 46 ++- crates/syntax/src/tests/sourcegen_ast.rs | 2 +- crates/test-utils/Cargo.toml | 2 +- crates/text-edit/Cargo.toml | 2 +- crates/toolchain/Cargo.toml | 2 +- crates/tt/Cargo.toml | 2 +- crates/vfs-notify/Cargo.toml | 2 +- crates/vfs/Cargo.toml | 2 +- docs/dev/architecture.md | 6 +- docs/user/generated_config.adoc | 20 +- docs/user/manual.adoc | 2 +- editors/code/package.json | 46 ++- editors/code/src/client.ts | 42 ++- editors/code/src/config.ts | 3 + editors/code/src/ctx.ts | 3 +- editors/code/src/main.ts | 24 ++ xtask/Cargo.toml | 2 +- 126 files changed, 2098 insertions(+), 904 deletions(-) create mode 100644 crates/mbe/src/syntax_bridge/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 8931c17bbdc1..41c5d36671de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -221,6 +221,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "command-group" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a8a86f409b4a59df3a3e4bee2de0b83f1755fdd2a25e3a9684c396fc4bed2c" +dependencies = [ + "nix", + "winapi", +] + [[package]] name = "countme" version = "3.0.1" @@ -300,7 +310,7 @@ dependencies = [ "hashbrown", "lock_api", "once_cell", - "parking_lot_core 0.9.3", + "parking_lot_core 0.9.4", ] [[package]] @@ -359,14 +369,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -390,6 +400,7 @@ name = "flycheck" version = "0.0.0" dependencies = [ "cargo_metadata", + "command-group", "crossbeam-channel", "jod-thread", "paths", @@ -963,11 +974,24 @@ dependencies = [ [[package]] name = "miow" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7377f7792b3afb6a3cba68daa54ca23c032137010460d667fda53a8d66be00e" +checksum = "52ffbca2f655e33c08be35d87278e5b18b89550a37dbd598c20db92f6a471123" dependencies = [ - "windows-sys 0.28.0", + "windows-sys 0.42.0", +] + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if", + "libc", + "memoffset", ] [[package]] @@ -1037,7 +1061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.3", + "parking_lot_core 0.9.4", ] [[package]] @@ -1056,15 +1080,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -1979,19 +2003,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ca39602d5cbfa692c4b67e3bcbb2751477355141c1ed434c94da4186836ff6" -dependencies = [ - "windows_aarch64_msvc 0.28.0", - "windows_i686_gnu 0.28.0", - "windows_i686_msvc 0.28.0", - "windows_x86_64_gnu 0.28.0", - "windows_x86_64_msvc 0.28.0", -] - [[package]] name = "windows-sys" version = "0.36.1" @@ -2006,10 +2017,25 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_msvc" -version = "0.28.0" +name = "windows-sys" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52695a41e536859d5308cc613b4a022261a274390b25bd29dfff4bf08505f3c2" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" [[package]] name = "windows_aarch64_msvc" @@ -2018,10 +2044,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] -name = "windows_i686_gnu" -version = "0.28.0" +name = "windows_aarch64_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54725ac23affef038fecb177de6c9bf065787c2f432f79e3c373da92f3e1d8a" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" [[package]] name = "windows_i686_gnu" @@ -2030,10 +2056,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] -name = "windows_i686_msvc" -version = "0.28.0" +name = "windows_i686_gnu" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d5158a43cc43623c0729d1ad6647e62fa384a3d135fd15108d37c683461f64" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" [[package]] name = "windows_i686_msvc" @@ -2042,10 +2068,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] -name = "windows_x86_64_gnu" -version = "0.28.0" +name = "windows_i686_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc31f409f565611535130cfe7ee8e6655d3fa99c1c61013981e491921b5ce954" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" [[package]] name = "windows_x86_64_gnu" @@ -2054,10 +2080,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] -name = "windows_x86_64_msvc" -version = "0.28.0" +name = "windows_x86_64_gnu" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2b8c7cbd3bfdddd9ab98769f9746a7fad1bca236554cd032b78d768bc0e89f" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" [[package]] name = "windows_x86_64_msvc" @@ -2065,6 +2097,12 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + [[package]] name = "write-json" version = "0.1.2" diff --git a/crates/base-db/Cargo.toml b/crates/base-db/Cargo.toml index f02a51ab6c47..a484ecec6825 100644 --- a/crates/base-db/Cargo.toml +++ b/crates/base-db/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/cfg/Cargo.toml b/crates/cfg/Cargo.toml index ee1ad677a95f..2857420c285a 100644 --- a/crates/cfg/Cargo.toml +++ b/crates/cfg/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/flycheck/Cargo.toml b/crates/flycheck/Cargo.toml index 2ad32d24837d..514d567fcce7 100644 --- a/crates/flycheck/Cargo.toml +++ b/crates/flycheck/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false @@ -17,6 +17,7 @@ rustc-hash = "1.1.0" serde = { version = "1.0.137", features = ["derive"] } serde_json = "1.0.86" jod-thread = "0.1.2" +command-group = "1.0.8" toolchain = { path = "../toolchain", version = "0.0.0" } stdx = { path = "../stdx", version = "0.0.0" } diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 8a91d6066614..8f93dad06e3f 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -10,11 +10,12 @@ use std::{ time::Duration, }; +use command_group::{CommandGroup, GroupChild}; use crossbeam_channel::{never, select, unbounded, Receiver, Sender}; use paths::AbsPathBuf; use rustc_hash::FxHashMap; use serde::Deserialize; -use stdx::{process::streaming_output, JodChild}; +use stdx::process::streaming_output; pub use cargo_metadata::diagnostic::{ Applicability, Diagnostic, DiagnosticCode, DiagnosticLevel, DiagnosticSpan, @@ -39,7 +40,7 @@ pub enum InvocationLocation { pub enum FlycheckConfig { CargoCommand { command: String, - target_triple: Option, + target_triples: Vec, all_targets: bool, no_default_features: bool, all_features: bool, @@ -285,7 +286,7 @@ impl FlycheckActor { let (mut cmd, args) = match &self.config { FlycheckConfig::CargoCommand { command, - target_triple, + target_triples, no_default_features, all_targets, all_features, @@ -299,7 +300,7 @@ impl FlycheckActor { cmd.args(&["--workspace", "--message-format=json", "--manifest-path"]) .arg(self.root.join("Cargo.toml").as_os_str()); - if let Some(target) = target_triple { + for target in target_triples { cmd.args(&["--target", target.as_str()]); } if *all_targets { @@ -359,10 +360,12 @@ impl FlycheckActor { } } +struct JodChild(GroupChild); + /// A handle to a cargo process used for fly-checking. struct CargoHandle { /// The handle to the actual cargo process. As we cannot cancel directly from with - /// a read syscall dropping and therefor terminating the process is our best option. + /// a read syscall dropping and therefore terminating the process is our best option. child: JodChild, thread: jod_thread::JoinHandle>, receiver: Receiver, @@ -371,10 +374,10 @@ struct CargoHandle { impl CargoHandle { fn spawn(mut command: Command) -> std::io::Result { command.stdout(Stdio::piped()).stderr(Stdio::piped()).stdin(Stdio::null()); - let mut child = JodChild::spawn(command)?; + let mut child = command.group_spawn().map(JodChild)?; - let stdout = child.stdout.take().unwrap(); - let stderr = child.stderr.take().unwrap(); + let stdout = child.0.inner().stdout.take().unwrap(); + let stderr = child.0.inner().stderr.take().unwrap(); let (sender, receiver) = unbounded(); let actor = CargoActor::new(sender, stdout, stderr); @@ -386,13 +389,13 @@ impl CargoHandle { } fn cancel(mut self) { - let _ = self.child.kill(); - let _ = self.child.wait(); + let _ = self.child.0.kill(); + let _ = self.child.0.wait(); } fn join(mut self) -> io::Result<()> { - let _ = self.child.kill(); - let exit_status = self.child.wait()?; + let _ = self.child.0.kill(); + let exit_status = self.child.0.wait()?; let (read_at_least_one_message, error) = self.thread.join()?; if read_at_least_one_message || exit_status.success() { Ok(()) diff --git a/crates/hir-def/Cargo.toml b/crates/hir-def/Cargo.toml index 4ad8e75970b5..22f98ea7cd45 100644 --- a/crates/hir-def/Cargo.toml +++ b/crates/hir-def/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs index 2dc69b00ace0..9c7696908648 100644 --- a/crates/hir-def/src/data.rs +++ b/crates/hir-def/src/data.rs @@ -236,11 +236,19 @@ impl TraitData { .by_key("rustc_skip_array_during_method_dispatch") .exists(); - let mut collector = - AssocItemCollector::new(db, module_id, tree_id.file_id(), ItemContainerId::TraitId(tr)); - collector.collect(&item_tree, tree_id.tree_id(), &tr_def.items); - let (items, attribute_calls, diagnostics) = collector.finish(); - + let (items, attribute_calls, diagnostics) = match &tr_def.items { + Some(items) => { + let mut collector = AssocItemCollector::new( + db, + module_id, + tree_id.file_id(), + ItemContainerId::TraitId(tr), + ); + collector.collect(&item_tree, tree_id.tree_id(), items); + collector.finish() + } + None => Default::default(), + }; ( Arc::new(TraitData { name, diff --git a/crates/hir-def/src/item_tree.rs b/crates/hir-def/src/item_tree.rs index 570344596def..0aa531eff71f 100644 --- a/crates/hir-def/src/item_tree.rs +++ b/crates/hir-def/src/item_tree.rs @@ -666,7 +666,8 @@ pub struct Trait { pub generic_params: Interned, pub is_auto: bool, pub is_unsafe: bool, - pub items: Box<[AssocItem]>, + /// This is [`None`] if this Trait is a trait alias. + pub items: Option>, pub ast_id: FileAstId, } diff --git a/crates/hir-def/src/item_tree/lower.rs b/crates/hir-def/src/item_tree/lower.rs index 79249757d9e9..b25274bccc9a 100644 --- a/crates/hir-def/src/item_tree/lower.rs +++ b/crates/hir-def/src/item_tree/lower.rs @@ -451,15 +451,7 @@ impl<'a> Ctx<'a> { .collect() }); let ast_id = self.source_ast_id_map.ast_id(trait_def); - let res = Trait { - name, - visibility, - generic_params, - is_auto, - is_unsafe, - items: items.unwrap_or_default(), - ast_id, - }; + let res = Trait { name, visibility, generic_params, is_auto, is_unsafe, items, ast_id }; Some(id(self.data().traits.alloc(res))) } diff --git a/crates/hir-def/src/item_tree/pretty.rs b/crates/hir-def/src/item_tree/pretty.rs index da1643152c2f..48c40df22ff5 100644 --- a/crates/hir-def/src/item_tree/pretty.rs +++ b/crates/hir-def/src/item_tree/pretty.rs @@ -375,12 +375,21 @@ impl<'a> Printer<'a> { } w!(self, "trait {}", name); self.print_generic_params(generic_params); - self.print_where_clause_and_opening_brace(generic_params); - self.indented(|this| { - for item in &**items { - this.print_mod_item((*item).into()); + match items { + Some(items) => { + self.print_where_clause_and_opening_brace(generic_params); + self.indented(|this| { + for item in &**items { + this.print_mod_item((*item).into()); + } + }); } - }); + None => { + w!(self, " = "); + // FIXME: Print the aliased traits + self.print_where_clause_and_opening_brace(generic_params); + } + } wln!(self, "}}"); } ModItem::Impl(it) => { diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs b/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs index bc162d0fa206..fc90c6e9f370 100644 --- a/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs +++ b/crates/hir-def/src/macro_expansion_tests/mbe/matching.rs @@ -94,11 +94,11 @@ macro_rules! m { ($($s:stmt)*) => (stringify!($($s |)*);) } stringify!(; -|; -|92|; -|let x = 92|; +| ; +|92| ; +|let x = 92| ; |loop {} -|; +| ; |); "#]], ); @@ -118,7 +118,7 @@ m!(.. .. ..); macro_rules! m { ($($p:pat)*) => (stringify!($($p |)*);) } -stringify!(.. .. ..|); +stringify!(.. .. .. |); "#]], ); } diff --git a/crates/hir-def/src/macro_expansion_tests/proc_macros.rs b/crates/hir-def/src/macro_expansion_tests/proc_macros.rs index 029821e5e87f..118c14ed843f 100644 --- a/crates/hir-def/src/macro_expansion_tests/proc_macros.rs +++ b/crates/hir-def/src/macro_expansion_tests/proc_macros.rs @@ -82,14 +82,14 @@ fn attribute_macro_syntax_completion_2() { #[proc_macros::identity_when_valid] fn foo() { bar.; blub } "#, - expect![[r##" + expect![[r#" #[proc_macros::identity_when_valid] fn foo() { bar.; blub } fn foo() { - bar.; + bar. ; blub -}"##]], +}"#]], ); } diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index 9ffc218818ca..b0dd01f9dbea 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -212,6 +212,7 @@ impl Import { #[derive(Debug, Eq, PartialEq)] struct ImportDirective { + /// The module this import directive is in. module_id: LocalModuleId, import: Import, status: PartialResolvedImport, @@ -963,8 +964,10 @@ impl DefCollector<'_> { fn update( &mut self, + // The module for which `resolutions` have been resolve module_id: LocalModuleId, resolutions: &[(Option, PerNs)], + // Visibility this import will have vis: Visibility, import_type: ImportType, ) { @@ -974,6 +977,7 @@ impl DefCollector<'_> { fn update_recursive( &mut self, + // The module for which `resolutions` have been resolve module_id: LocalModuleId, resolutions: &[(Option, PerNs)], // All resolutions are imported with this visibility; the visibilities in diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs index 8dfda6df64e7..20d39ec6cb92 100644 --- a/crates/hir-def/src/nameres/path_resolution.rs +++ b/crates/hir-def/src/nameres/path_resolution.rs @@ -73,7 +73,10 @@ impl DefMap { pub(crate) fn resolve_visibility( &self, db: &dyn DefDatabase, + // module to import to original_module: LocalModuleId, + // pub(path) + // ^^^^ this visibility: &RawVisibility, ) -> Option { let mut vis = match visibility { @@ -115,6 +118,7 @@ impl DefMap { &self, db: &dyn DefDatabase, mode: ResolveMode, + // module to import to mut original_module: LocalModuleId, path: &ModPath, shadow: BuiltinShadowMode, @@ -361,6 +365,9 @@ impl DefMap { ); } }; + + curr_per_ns = curr_per_ns + .filter_visibility(|vis| vis.is_visible_from_def_map(db, self, original_module)); } ResolvePathResult::with(curr_per_ns, ReachedFixedPoint::Yes, None, Some(self.krate)) diff --git a/crates/hir-def/src/nameres/tests.rs b/crates/hir-def/src/nameres/tests.rs index 70dd2eb3ade6..0d90047c28f6 100644 --- a/crates/hir-def/src/nameres/tests.rs +++ b/crates/hir-def/src/nameres/tests.rs @@ -58,9 +58,9 @@ extern { "#, expect![[r#" crate - E: t + E: _ S: t v - V: t v + V: _ foo: t crate::foo @@ -307,7 +307,7 @@ pub struct FromLib; Bar: t v crate::foo - Bar: t v + Bar: _ FromLib: t v "#]], ); diff --git a/crates/hir-def/src/nameres/tests/globs.rs b/crates/hir-def/src/nameres/tests/globs.rs index b2a6a592cf38..88a3c76393f0 100644 --- a/crates/hir-def/src/nameres/tests/globs.rs +++ b/crates/hir-def/src/nameres/tests/globs.rs @@ -119,7 +119,7 @@ use foo::*; use foo::bar::*; //- /foo/mod.rs -mod bar; +pub mod bar; fn Foo() {}; pub struct Foo {}; @@ -132,6 +132,7 @@ pub(crate) struct PubCrateStruct; crate Foo: t PubCrateStruct: t v + bar: t foo: t crate::foo @@ -336,3 +337,33 @@ mod d { "#]], ); } + +#[test] +fn glob_name_collision_check_visibility() { + check( + r#" +mod event { + mod serenity { + pub fn Event() {} + } + use serenity::*; + + pub struct Event {} +} + +use event::Event; + "#, + expect![[r#" + crate + Event: t + event: t + + crate::event + Event: t v + serenity: t + + crate::event::serenity + Event: v + "#]], + ); +} diff --git a/crates/hir-def/src/nameres/tests/mod_resolution.rs b/crates/hir-def/src/nameres/tests/mod_resolution.rs index ba3bf8b5a5cf..c575bf7cac25 100644 --- a/crates/hir-def/src/nameres/tests/mod_resolution.rs +++ b/crates/hir-def/src/nameres/tests/mod_resolution.rs @@ -580,7 +580,7 @@ fn module_resolution_decl_inside_inline_module_in_crate_root() { //- /main.rs mod foo { #[path = "baz.rs"] - mod bar; + pub mod bar; } use self::foo::bar::Baz; diff --git a/crates/hir-expand/Cargo.toml b/crates/hir-expand/Cargo.toml index 3359c99b3961..77eb1fd45043 100644 --- a/crates/hir-expand/Cargo.toml +++ b/crates/hir-expand/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/hir-expand/src/fixup.rs b/crates/hir-expand/src/fixup.rs index 893e6fe4b824..a4abe75626e6 100644 --- a/crates/hir-expand/src/fixup.rs +++ b/crates/hir-expand/src/fixup.rs @@ -4,6 +4,7 @@ use std::mem; use mbe::{SyntheticToken, SyntheticTokenId, TokenMap}; use rustc_hash::FxHashMap; +use smallvec::SmallVec; use syntax::{ ast::{self, AstNode, HasLoopBody}, match_ast, SyntaxElement, SyntaxKind, SyntaxNode, TextRange, @@ -292,25 +293,34 @@ pub(crate) fn reverse_fixups( token_map: &TokenMap, undo_info: &SyntaxFixupUndoInfo, ) { - tt.token_trees.retain(|tt| match tt { - tt::TokenTree::Leaf(leaf) => { - token_map.synthetic_token_id(leaf.id()).is_none() - || token_map.synthetic_token_id(leaf.id()) != Some(EMPTY_ID) - } - tt::TokenTree::Subtree(st) => st.delimiter.map_or(true, |d| { - token_map.synthetic_token_id(d.id).is_none() - || token_map.synthetic_token_id(d.id) != Some(EMPTY_ID) - }), - }); - tt.token_trees.iter_mut().for_each(|tt| match tt { - tt::TokenTree::Subtree(tt) => reverse_fixups(tt, token_map, undo_info), - tt::TokenTree::Leaf(leaf) => { - if let Some(id) = token_map.synthetic_token_id(leaf.id()) { - let original = &undo_info.original[id.0 as usize]; - *tt = tt::TokenTree::Subtree(original.clone()); + let tts = std::mem::take(&mut tt.token_trees); + tt.token_trees = tts + .into_iter() + .filter(|tt| match tt { + tt::TokenTree::Leaf(leaf) => token_map.synthetic_token_id(leaf.id()) != Some(EMPTY_ID), + tt::TokenTree::Subtree(st) => { + st.delimiter.map_or(true, |d| token_map.synthetic_token_id(d.id) != Some(EMPTY_ID)) } - } - }); + }) + .flat_map(|tt| match tt { + tt::TokenTree::Subtree(mut tt) => { + reverse_fixups(&mut tt, token_map, undo_info); + SmallVec::from_const([tt.into()]) + } + tt::TokenTree::Leaf(leaf) => { + if let Some(id) = token_map.synthetic_token_id(leaf.id()) { + let original = undo_info.original[id.0 as usize].clone(); + if original.delimiter.is_none() { + original.token_trees.into() + } else { + SmallVec::from_const([original.into()]) + } + } else { + SmallVec::from_const([leaf.into()]) + } + } + }) + .collect(); } #[cfg(test)] @@ -319,6 +329,31 @@ mod tests { use super::reverse_fixups; + // The following three functions are only meant to check partial structural equivalence of + // `TokenTree`s, see the last assertion in `check()`. + fn check_leaf_eq(a: &tt::Leaf, b: &tt::Leaf) -> bool { + match (a, b) { + (tt::Leaf::Literal(a), tt::Leaf::Literal(b)) => a.text == b.text, + (tt::Leaf::Punct(a), tt::Leaf::Punct(b)) => a.char == b.char, + (tt::Leaf::Ident(a), tt::Leaf::Ident(b)) => a.text == b.text, + _ => false, + } + } + + fn check_subtree_eq(a: &tt::Subtree, b: &tt::Subtree) -> bool { + a.delimiter.map(|it| it.kind) == b.delimiter.map(|it| it.kind) + && a.token_trees.len() == b.token_trees.len() + && a.token_trees.iter().zip(&b.token_trees).all(|(a, b)| check_tt_eq(a, b)) + } + + fn check_tt_eq(a: &tt::TokenTree, b: &tt::TokenTree) -> bool { + match (a, b) { + (tt::TokenTree::Leaf(a), tt::TokenTree::Leaf(b)) => check_leaf_eq(a, b), + (tt::TokenTree::Subtree(a), tt::TokenTree::Subtree(b)) => check_subtree_eq(a, b), + _ => false, + } + } + #[track_caller] fn check(ra_fixture: &str, mut expect: Expect) { let parsed = syntax::SourceFile::parse(ra_fixture); @@ -331,17 +366,15 @@ mod tests { fixups.append, ); - let mut actual = tt.to_string(); - actual.push('\n'); + let actual = format!("{}\n", tt); expect.indent(false); expect.assert_eq(&actual); // the fixed-up tree should be syntactically valid let (parse, _) = mbe::token_tree_to_syntax_node(&tt, ::mbe::TopEntryPoint::MacroItems); - assert_eq!( - parse.errors(), - &[], + assert!( + parse.errors().is_empty(), "parse has syntax errors. parse tree:\n{:#?}", parse.syntax_node() ); @@ -349,9 +382,12 @@ mod tests { reverse_fixups(&mut tt, &tmap, &fixups.undo_info); // the fixed-up + reversed version should be equivalent to the original input - // (but token IDs don't matter) + // modulo token IDs and `Punct`s' spacing. let (original_as_tt, _) = mbe::syntax_node_to_token_tree(&parsed.syntax_node()); - assert_eq!(tt.to_string(), original_as_tt.to_string()); + assert!( + check_subtree_eq(&tt, &original_as_tt), + "different token tree: {tt:?}, {original_as_tt:?}" + ); } #[test] @@ -468,7 +504,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a .__ra_fixup} +fn foo () {a . __ra_fixup} "#]], ) } @@ -482,7 +518,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a .__ra_fixup ;} +fn foo () {a . __ra_fixup ;} "#]], ) } @@ -497,7 +533,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a .__ra_fixup ; bar () ;} +fn foo () {a . __ra_fixup ; bar () ;} "#]], ) } @@ -525,7 +561,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {let x = a .__ra_fixup ;} +fn foo () {let x = a . __ra_fixup ;} "#]], ) } @@ -541,7 +577,7 @@ fn foo() { } "#, expect![[r#" -fn foo () {a .b ; bar () ;} +fn foo () {a . b ; bar () ;} "#]], ) } diff --git a/crates/hir-expand/src/lib.rs b/crates/hir-expand/src/lib.rs index a5b499fe8d9d..7352b003a491 100644 --- a/crates/hir-expand/src/lib.rs +++ b/crates/hir-expand/src/lib.rs @@ -814,7 +814,7 @@ impl<'a> InFile<&'a SyntaxNode> { pub fn original_syntax_node(self, db: &dyn db::AstDatabase) -> Option> { // This kind of upmapping can only be achieved in attribute expanded files, - // as we don't have node inputs otherwise and therefor can't find an `N` node in the input + // as we don't have node inputs otherwise and therefore can't find an `N` node in the input if !self.file_id.is_macro() { return Some(self.map(Clone::clone)); } else if !self.file_id.is_attr_macro(db) { @@ -926,7 +926,7 @@ impl InFile { pub fn original_ast_node(self, db: &dyn db::AstDatabase) -> Option> { // This kind of upmapping can only be achieved in attribute expanded files, - // as we don't have node inputs otherwise and therefor can't find an `N` node in the input + // as we don't have node inputs otherwise and therefore can't find an `N` node in the input if !self.file_id.is_macro() { return Some(self); } else if !self.file_id.is_attr_macro(db) { diff --git a/crates/hir-ty/Cargo.toml b/crates/hir-ty/Cargo.toml index ed13275bab8f..a1d6835bfaed 100644 --- a/crates/hir-ty/Cargo.toml +++ b/crates/hir-ty/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index b68c764bdca0..39514fc44e6c 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -53,7 +53,7 @@ pub use builder::{ParamKind, TyBuilder}; pub use chalk_ext::*; pub use infer::{ could_coerce, could_unify, Adjust, Adjustment, AutoBorrow, BindingMode, InferenceDiagnostic, - InferenceResult, + InferenceResult, OverloadedDeref, PointerCast, }; pub use interner::Interner; pub use lower::{ @@ -523,7 +523,7 @@ where } pub fn callable_sig_from_fnonce( - self_ty: &Canonical, + self_ty: &Ty, env: Arc, db: &dyn HirDatabase, ) -> Option { @@ -531,27 +531,28 @@ pub fn callable_sig_from_fnonce( let fn_once_trait = FnTrait::FnOnce.get_id(db, krate)?; let output_assoc_type = db.trait_data(fn_once_trait).associated_type_by_name(&name![Output])?; - let mut kinds = self_ty.binders.interned().to_vec(); let b = TyBuilder::trait_ref(db, fn_once_trait); if b.remaining() != 2 { return None; } - let fn_once = b - .push(self_ty.value.clone()) - .fill_with_bound_vars(DebruijnIndex::INNERMOST, kinds.len()) - .build(); - kinds.extend(fn_once.substitution.iter(Interner).skip(1).map(|x| { - let vk = match x.data(Interner) { - chalk_ir::GenericArgData::Ty(_) => { - chalk_ir::VariableKind::Ty(chalk_ir::TyVariableKind::General) - } - chalk_ir::GenericArgData::Lifetime(_) => chalk_ir::VariableKind::Lifetime, - chalk_ir::GenericArgData::Const(c) => { - chalk_ir::VariableKind::Const(c.data(Interner).ty.clone()) - } - }; - chalk_ir::WithKind::new(vk, UniverseIndex::ROOT) - })); + let fn_once = b.push(self_ty.clone()).fill_with_bound_vars(DebruijnIndex::INNERMOST, 0).build(); + let kinds = fn_once + .substitution + .iter(Interner) + .skip(1) + .map(|x| { + let vk = match x.data(Interner) { + chalk_ir::GenericArgData::Ty(_) => { + chalk_ir::VariableKind::Ty(chalk_ir::TyVariableKind::General) + } + chalk_ir::GenericArgData::Lifetime(_) => chalk_ir::VariableKind::Lifetime, + chalk_ir::GenericArgData::Const(c) => { + chalk_ir::VariableKind::Const(c.data(Interner).ty.clone()) + } + }; + chalk_ir::WithKind::new(vk, UniverseIndex::ROOT) + }) + .collect::>(); // FIXME: chalk refuses to solve `>::Output == ^0.1`, so we first solve // `>` and then replace `^0.0` with the concrete argument tuple. @@ -563,21 +564,16 @@ pub fn callable_sig_from_fnonce( Some(Solution::Unique(vars)) => vars.value.subst, _ => return None, }; - let args = subst.at(Interner, self_ty.binders.interned().len()).ty(Interner)?; + let args = subst.at(Interner, 0).ty(Interner)?; let params = match args.kind(Interner) { chalk_ir::TyKind::Tuple(_, subst) => { subst.iter(Interner).filter_map(|arg| arg.ty(Interner).cloned()).collect::>() } _ => return None, }; - if params.iter().any(|ty| ty.is_unknown()) { - return None; - } - let fn_once = TyBuilder::trait_ref(db, fn_once_trait) - .push(self_ty.value.clone()) - .push(args.clone()) - .build(); + let fn_once = + TyBuilder::trait_ref(db, fn_once_trait).push(self_ty.clone()).push(args.clone()).build(); let projection = TyBuilder::assoc_type_projection(db, output_assoc_type, Some(fn_once.substitution.clone())) .build(); diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 50859475e1d9..8bcfa2728f07 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -541,7 +541,7 @@ pub struct ReceiverAdjustments { impl ReceiverAdjustments { pub(crate) fn apply(&self, table: &mut InferenceTable<'_>, ty: Ty) -> (Ty, Vec) { - let mut ty = ty; + let mut ty = table.resolve_ty_shallow(&ty); let mut adjust = Vec::new(); for _ in 0..self.autoderefs { match autoderef::autoderef_step(table, ty.clone()) { diff --git a/crates/hir-ty/src/tests/method_resolution.rs b/crates/hir-ty/src/tests/method_resolution.rs index ac8edb841a58..5d76d185ffc0 100644 --- a/crates/hir-ty/src/tests/method_resolution.rs +++ b/crates/hir-ty/src/tests/method_resolution.rs @@ -164,16 +164,16 @@ fn infer_associated_method_with_modules() { check_infer( r#" mod a { - struct A; + pub struct A; impl A { pub fn thing() -> A { A {} }} } mod b { - struct B; + pub struct B; impl B { pub fn thing() -> u32 { 99 }} - mod c { - struct C; + pub mod c { + pub struct C; impl C { pub fn thing() -> C { C {} }} } } @@ -186,22 +186,22 @@ fn infer_associated_method_with_modules() { } "#, expect![[r#" - 55..63 '{ A {} }': A - 57..61 'A {}': A - 125..131 '{ 99 }': u32 - 127..129 '99': u32 - 201..209 '{ C {} }': C - 203..207 'C {}': C - 240..324 '{ ...g(); }': () - 250..251 'x': A - 254..265 'a::A::thing': fn thing() -> A - 254..267 'a::A::thing()': A - 277..278 'y': u32 - 281..292 'b::B::thing': fn thing() -> u32 - 281..294 'b::B::thing()': u32 - 304..305 'z': C - 308..319 'c::C::thing': fn thing() -> C - 308..321 'c::C::thing()': C + 59..67 '{ A {} }': A + 61..65 'A {}': A + 133..139 '{ 99 }': u32 + 135..137 '99': u32 + 217..225 '{ C {} }': C + 219..223 'C {}': C + 256..340 '{ ...g(); }': () + 266..267 'x': A + 270..281 'a::A::thing': fn thing() -> A + 270..283 'a::A::thing()': A + 293..294 'y': u32 + 297..308 'b::B::thing': fn thing() -> u32 + 297..310 'b::B::thing()': u32 + 320..321 'z': C + 324..335 'c::C::thing': fn thing() -> C + 324..337 'c::C::thing()': C "#]], ); } diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs index a155adcec6c3..4e46397459d5 100644 --- a/crates/hir-ty/src/tests/regression.rs +++ b/crates/hir-ty/src/tests/regression.rs @@ -1707,3 +1707,19 @@ impl Trait for [T; N] { "#, ); } + +#[test] +fn unsize_array_with_inference_variable() { + check_types( + r#" +//- minicore: try, slice +use core::ops::ControlFlow; +fn foo() -> ControlFlow<(), [usize; 1]> { loop {} } +fn bar() -> ControlFlow<(), ()> { + let a = foo()?.len(); + //^ usize + ControlFlow::Continue(()) +} +"#, + ); +} diff --git a/crates/hir-ty/src/tests/simple.rs b/crates/hir-ty/src/tests/simple.rs index 080e2ac1b8e1..d7431443b83d 100644 --- a/crates/hir-ty/src/tests/simple.rs +++ b/crates/hir-ty/src/tests/simple.rs @@ -214,7 +214,7 @@ fn infer_paths() { fn a() -> u32 { 1 } mod b { - fn c() -> u32 { 1 } + pub fn c() -> u32 { 1 } } fn test() { @@ -225,13 +225,13 @@ fn test() { expect![[r#" 14..19 '{ 1 }': u32 16..17 '1': u32 - 47..52 '{ 1 }': u32 - 49..50 '1': u32 - 66..90 '{ ...c(); }': () - 72..73 'a': fn a() -> u32 - 72..75 'a()': u32 - 81..85 'b::c': fn c() -> u32 - 81..87 'b::c()': u32 + 51..56 '{ 1 }': u32 + 53..54 '1': u32 + 70..94 '{ ...c(); }': () + 76..77 'a': fn a() -> u32 + 76..79 'a()': u32 + 85..89 'b::c': fn c() -> u32 + 85..91 'b::c()': u32 "#]], ); } @@ -1856,7 +1856,7 @@ fn not_shadowing_module_by_primitive() { check_types( r#" //- /str.rs -fn foo() -> u32 {0} +pub fn foo() -> u32 {0} //- /main.rs mod str; diff --git a/crates/hir-ty/src/tests/traits.rs b/crates/hir-ty/src/tests/traits.rs index 7d42b8b9bc8d..3d7194b6f446 100644 --- a/crates/hir-ty/src/tests/traits.rs +++ b/crates/hir-ty/src/tests/traits.rs @@ -1706,7 +1706,7 @@ fn where_clause_trait_in_scope_for_method_resolution() { check_types( r#" mod foo { - trait Trait { + pub trait Trait { fn foo(&self) -> u32 { 0 } } } @@ -1723,7 +1723,7 @@ fn super_trait_method_resolution() { check_infer( r#" mod foo { - trait SuperTrait { + pub trait SuperTrait { fn foo(&self) -> u32 {} } } @@ -1735,15 +1735,15 @@ fn test(x: T, y: U) { y.foo(); }"#, expect![[r#" - 49..53 'self': &Self - 62..64 '{}': u32 - 181..182 'x': T - 187..188 'y': U - 193..222 '{ ...o(); }': () - 199..200 'x': T - 199..206 'x.foo()': u32 - 212..213 'y': U - 212..219 'y.foo()': u32 + 53..57 'self': &Self + 66..68 '{}': u32 + 185..186 'x': T + 191..192 'y': U + 197..226 '{ ...o(); }': () + 203..204 'x': T + 203..210 'x.foo()': u32 + 216..217 'y': U + 216..223 'y.foo()': u32 "#]], ); } @@ -1754,7 +1754,7 @@ fn super_trait_impl_trait_method_resolution() { r#" //- minicore: sized mod foo { - trait SuperTrait { + pub trait SuperTrait { fn foo(&self) -> u32 {} } } @@ -1764,12 +1764,12 @@ fn test(x: &impl Trait1) { x.foo(); }"#, expect![[r#" - 49..53 'self': &Self - 62..64 '{}': u32 - 115..116 'x': &impl Trait1 - 132..148 '{ ...o(); }': () - 138..139 'x': &impl Trait1 - 138..145 'x.foo()': u32 + 53..57 'self': &Self + 66..68 '{}': u32 + 119..120 'x': &impl Trait1 + 136..152 '{ ...o(); }': () + 142..143 'x': &impl Trait1 + 142..149 'x.foo()': u32 "#]], ); } diff --git a/crates/hir/Cargo.toml b/crates/hir/Cargo.toml index e1418de3cdc2..f780e3f53c85 100644 --- a/crates/hir/Cargo.toml +++ b/crates/hir/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index cbd9bf32a548..cbbcaebb4285 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -117,7 +117,7 @@ pub use { name::{known, Name}, ExpandResult, HirFileId, InFile, MacroFile, Origin, }, - hir_ty::display::HirDisplay, + hir_ty::{display::HirDisplay, PointerCast, Safety}, }; // These are negative re-exports: pub using these names is forbidden, they @@ -2997,8 +2997,7 @@ impl Type { TyKind::Function(_) => Callee::FnPtr, TyKind::FnDef(..) => Callee::Def(self.ty.callable_def(db)?), _ => { - let ty = hir_ty::replace_errors_with_variables(&self.ty); - let sig = hir_ty::callable_sig_from_fnonce(&ty, self.env.clone(), db)?; + let sig = hir_ty::callable_sig_from_fnonce(&self.ty, self.env.clone(), db)?; return Some(Callable { ty: self.clone(), sig, @@ -3651,6 +3650,28 @@ impl From for ScopeDef { } } +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub enum Adjust { + /// Go from ! to any type. + NeverToAny, + /// Dereference once, producing a place. + Deref(Option), + /// Take the address and produce either a `&` or `*` pointer. + Borrow(AutoBorrow), + Pointer(PointerCast), +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub enum AutoBorrow { + /// Converts from T to &T. + Ref(Mutability), + /// Converts from T to *T. + RawPtr(Mutability), +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub struct OverloadedDeref(pub Mutability); + pub trait HasVisibility { fn visibility(&self, db: &dyn HirDatabase) -> Visibility; fn is_visible_from(&self, db: &dyn HirDatabase, module: Module) -> bool { diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 119ec3210e17..2e1f88ba0904 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -29,9 +29,10 @@ use crate::{ db::HirDatabase, semantics::source_to_def::{ChildContainer, SourceToDefCache, SourceToDefCtx}, source_analyzer::{resolve_hir_path, SourceAnalyzer}, - Access, BindingMode, BuiltinAttr, Callable, ConstParam, Crate, DeriveHelper, Field, Function, - HasSource, HirFileId, Impl, InFile, Label, LifetimeParam, Local, Macro, Module, ModuleDef, - Name, Path, ScopeDef, ToolModule, Trait, Type, TypeAlias, TypeParam, VariantDef, + Access, Adjust, AutoBorrow, BindingMode, BuiltinAttr, Callable, ConstParam, Crate, + DeriveHelper, Field, Function, HasSource, HirFileId, Impl, InFile, Label, LifetimeParam, Local, + Macro, Module, ModuleDef, Name, OverloadedDeref, Path, ScopeDef, ToolModule, Trait, Type, + TypeAlias, TypeParam, VariantDef, }; #[derive(Debug, Clone, PartialEq, Eq)] @@ -333,9 +334,8 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { self.imp.resolve_trait(trait_) } - // FIXME: Figure out a nice interface to inspect adjustments - pub fn is_implicit_reborrow(&self, expr: &ast::Expr) -> Option { - self.imp.is_implicit_reborrow(expr) + pub fn expr_adjustments(&self, expr: &ast::Expr) -> Option> { + self.imp.expr_adjustments(expr) } pub fn type_of_expr(&self, expr: &ast::Expr) -> Option { @@ -1067,8 +1067,29 @@ impl<'db> SemanticsImpl<'db> { } } - fn is_implicit_reborrow(&self, expr: &ast::Expr) -> Option { - self.analyze(expr.syntax())?.is_implicit_reborrow(self.db, expr) + fn expr_adjustments(&self, expr: &ast::Expr) -> Option> { + let mutability = |m| match m { + hir_ty::Mutability::Not => Mutability::Shared, + hir_ty::Mutability::Mut => Mutability::Mut, + }; + self.analyze(expr.syntax())?.expr_adjustments(self.db, expr).map(|it| { + it.iter() + .map(|adjust| match adjust.kind { + hir_ty::Adjust::NeverToAny => Adjust::NeverToAny, + hir_ty::Adjust::Deref(Some(hir_ty::OverloadedDeref(m))) => { + Adjust::Deref(Some(OverloadedDeref(mutability(m)))) + } + hir_ty::Adjust::Deref(None) => Adjust::Deref(None), + hir_ty::Adjust::Borrow(hir_ty::AutoBorrow::RawPtr(m)) => { + Adjust::Borrow(AutoBorrow::RawPtr(mutability(m))) + } + hir_ty::Adjust::Borrow(hir_ty::AutoBorrow::Ref(m)) => { + Adjust::Borrow(AutoBorrow::Ref(mutability(m))) + } + hir_ty::Adjust::Pointer(pc) => Adjust::Pointer(pc), + }) + .collect() + }) } fn type_of_expr(&self, expr: &ast::Expr) -> Option { diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index f86c57100536..91ea1c24d14f 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -38,8 +38,7 @@ use hir_ty::{ UnsafeExpr, }, method_resolution::{self, lang_names_for_bin_op}, - Adjust, Adjustment, AutoBorrow, InferenceResult, Interner, Substitution, Ty, TyExt, TyKind, - TyLoweringContext, + Adjustment, InferenceResult, Interner, Substitution, Ty, TyExt, TyKind, TyLoweringContext, }; use itertools::Itertools; use smallvec::SmallVec; @@ -156,21 +155,14 @@ impl SourceAnalyzer { Some(res) } - pub(crate) fn is_implicit_reborrow( + pub(crate) fn expr_adjustments( &self, db: &dyn HirDatabase, expr: &ast::Expr, - ) -> Option { + ) -> Option<&[Adjustment]> { let expr_id = self.expr_id(db, expr)?; let infer = self.infer.as_ref()?; - let adjustments = infer.expr_adjustments.get(&expr_id)?; - adjustments.windows(2).find_map(|slice| match slice { - &[Adjustment {kind: Adjust::Deref(None), ..}, Adjustment {kind: Adjust::Borrow(AutoBorrow::Ref(m)), ..}] => Some(match m { - hir_ty::Mutability::Mut => Mutability::Mut, - hir_ty::Mutability::Not => Mutability::Shared, - }), - _ => None, - }) + infer.expr_adjustments.get(&expr_id).map(|v| &**v) } pub(crate) fn type_of_expr( diff --git a/crates/ide-assists/Cargo.toml b/crates/ide-assists/Cargo.toml index 57a41f3d9a93..e781c0a016d5 100644 --- a/crates/ide-assists/Cargo.toml +++ b/crates/ide-assists/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/crates/ide-assists/src/handlers/add_missing_impl_members.rs index 62cf5ab4f37a..2b3793659cf7 100644 --- a/crates/ide-assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ide-assists/src/handlers/add_missing_impl_members.rs @@ -196,6 +196,7 @@ trait Foo { type Output; const CONST: usize = 42; + const CONST_2: i32; fn foo(&self); fn bar(&self); @@ -213,6 +214,7 @@ trait Foo { type Output; const CONST: usize = 42; + const CONST_2: i32; fn foo(&self); fn bar(&self); @@ -226,7 +228,7 @@ impl Foo for S { $0type Output; - const CONST: usize = 42; + const CONST_2: i32; fn foo(&self) { todo!() @@ -379,14 +381,14 @@ impl Foo for S { r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { $0 }"#, r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { @@ -439,14 +441,14 @@ impl bar::Foo for S { r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { $0 }"#, r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { @@ -464,14 +466,14 @@ impl foo::Foo for S { r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { $0 }"#, r#" mod foo { pub struct Bar; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { @@ -489,7 +491,7 @@ impl foo::Foo for S { add_missing_impl_members, r#" mod foo { - trait Foo { fn foo(&self, bar: T); } + pub trait Foo { fn foo(&self, bar: T); } pub struct Param; } struct Param; @@ -497,7 +499,7 @@ struct S; impl foo::Foo for S { $0 }"#, r#" mod foo { - trait Foo { fn foo(&self, bar: T); } + pub trait Foo { fn foo(&self, bar: T); } pub struct Param; } struct Param; @@ -518,7 +520,7 @@ impl foo::Foo for S { mod foo { pub struct Bar; impl Bar { type Assoc = u32; } - trait Foo { fn foo(&self, bar: Bar::Assoc); } + pub trait Foo { fn foo(&self, bar: Bar::Assoc); } } struct S; impl foo::Foo for S { $0 }"#, @@ -526,7 +528,7 @@ impl foo::Foo for S { $0 }"#, mod foo { pub struct Bar; impl Bar { type Assoc = u32; } - trait Foo { fn foo(&self, bar: Bar::Assoc); } + pub trait Foo { fn foo(&self, bar: Bar::Assoc); } } struct S; impl foo::Foo for S { @@ -545,7 +547,7 @@ impl foo::Foo for S { mod foo { pub struct Bar; pub struct Baz; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { $0 }"#, @@ -553,7 +555,7 @@ impl foo::Foo for S { $0 }"#, mod foo { pub struct Bar; pub struct Baz; - trait Foo { fn foo(&self, bar: Bar); } + pub trait Foo { fn foo(&self, bar: Bar); } } struct S; impl foo::Foo for S { @@ -571,14 +573,14 @@ impl foo::Foo for S { r#" mod foo { pub trait Fn { type Output; } - trait Foo { fn foo(&self, bar: dyn Fn(u32) -> i32); } + pub trait Foo { fn foo(&self, bar: dyn Fn(u32) -> i32); } } struct S; impl foo::Foo for S { $0 }"#, r#" mod foo { pub trait Fn { type Output; } - trait Foo { fn foo(&self, bar: dyn Fn(u32) -> i32); } + pub trait Foo { fn foo(&self, bar: dyn Fn(u32) -> i32); } } struct S; impl foo::Foo for S { @@ -658,6 +660,7 @@ trait Foo { type Output; const CONST: usize = 42; + const CONST_2: i32; fn valid(some: u32) -> bool { false } fn foo(some: u32) -> bool; @@ -669,13 +672,16 @@ trait Foo { type Output; const CONST: usize = 42; + const CONST_2: i32; fn valid(some: u32) -> bool { false } fn foo(some: u32) -> bool; } struct S; impl Foo for S { - $0fn valid(some: u32) -> bool { false } + $0const CONST: usize = 42; + + fn valid(some: u32) -> bool { false } }"#, ) } diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index 060588358492..c1e2f19ab18b 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -109,8 +109,6 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op let params = body.extracted_function_params(ctx, &container_info, locals_used.iter().copied()); - let extracted_from_trait_impl = body.extracted_from_trait_impl(); - let name = make_function_name(&semantics_scope); let fun = Function { @@ -129,8 +127,11 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op builder.replace(target_range, make_call(ctx, &fun, old_indent)); + let has_impl_wrapper = + insert_after.ancestors().any(|a| a.kind() == SyntaxKind::IMPL && a != insert_after); + let fn_def = match fun.self_param_adt(ctx) { - Some(adt) if extracted_from_trait_impl => { + Some(adt) if anchor == Anchor::Method && !has_impl_wrapper => { let fn_def = format_function(ctx, module, &fun, old_indent, new_indent + 1); generate_impl_text(&adt, &fn_def).replace("{\n\n", "{") } @@ -272,7 +273,7 @@ enum FunType { } /// Where to put extracted function definition -#[derive(Debug)] +#[derive(Debug, Eq, PartialEq, Clone, Copy)] enum Anchor { /// Extract free function and put right after current top-level function Freestanding, @@ -1245,6 +1246,14 @@ fn node_to_insert_after(body: &FunctionBody, anchor: Anchor) -> Option break, + SyntaxKind::IMPL => { + if body.extracted_from_trait_impl() && matches!(anchor, Anchor::Method) { + let impl_node = find_non_trait_impl(&next_ancestor); + if let target_node @ Some(_) = impl_node.as_ref().and_then(last_impl_member) { + return target_node; + } + } + } SyntaxKind::ITEM_LIST if !matches!(anchor, Anchor::Freestanding) => continue, SyntaxKind::ITEM_LIST => { if ancestors.peek().map(SyntaxNode::kind) == Some(SyntaxKind::MODULE) { @@ -1265,6 +1274,29 @@ fn node_to_insert_after(body: &FunctionBody, anchor: Anchor) -> Option Option { + let as_impl = ast::Impl::cast(trait_impl.clone())?; + let impl_type = Some(impl_type_name(&as_impl)?); + + let sibblings = trait_impl.parent()?.children(); + sibblings + .filter_map(ast::Impl::cast) + .find(|s| impl_type_name(s) == impl_type && !is_trait_impl(s)) +} + +fn last_impl_member(impl_node: &ast::Impl) -> Option { + let last_child = impl_node.assoc_item_list()?.assoc_items().last()?; + Some(last_child.syntax().clone()) +} + +fn is_trait_impl(node: &ast::Impl) -> bool { + node.trait_().is_some() +} + +fn impl_type_name(impl_node: &ast::Impl) -> Option { + Some(impl_node.self_ty()?.to_string()) +} + fn make_call(ctx: &AssistContext<'_>, fun: &Function, indent: IndentLevel) -> String { let ret_ty = fun.return_type(ctx); @@ -5051,6 +5083,236 @@ impl Struct { ); } + #[test] + fn extract_method_from_trait_with_existing_non_empty_impl_block() { + check_assist( + extract_function, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl Struct { + fn foo() {} +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + $0self.0 + 2$0 + } +} +"#, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl Struct { + fn foo() {} + + fn $0fun_name(&self) -> i32 { + self.0 + 2 + } +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + self.fun_name() + } +} +"#, + ) + } + + #[test] + fn extract_function_from_trait_with_existing_non_empty_impl_block() { + check_assist( + extract_function, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl Struct { + fn foo() {} +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + let three_squared = $03 * 3$0; + self.0 + three_squared + } +} +"#, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl Struct { + fn foo() {} +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + let three_squared = fun_name(); + self.0 + three_squared + } +} + +fn $0fun_name() -> i32 { + 3 * 3 +} +"#, + ) + } + + #[test] + fn extract_method_from_trait_with_multiple_existing_impl_blocks() { + check_assist( + extract_function, + r#" +struct Struct(i32); +struct StructBefore(i32); +struct StructAfter(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl StructBefore { + fn foo(){} +} + +impl Struct { + fn foo(){} +} + +impl StructAfter { + fn foo(){} +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + $0self.0 + 2$0 + } +} +"#, + r#" +struct Struct(i32); +struct StructBefore(i32); +struct StructAfter(i32); +trait Trait { + fn bar(&self) -> i32; +} + +impl StructBefore { + fn foo(){} +} + +impl Struct { + fn foo(){} + + fn $0fun_name(&self) -> i32 { + self.0 + 2 + } +} + +impl StructAfter { + fn foo(){} +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + self.fun_name() + } +} +"#, + ) + } + + #[test] + fn extract_method_from_trait_with_multiple_existing_trait_impl_blocks() { + check_assist( + extract_function, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} +trait TraitBefore { + fn before(&self) -> i32; +} +trait TraitAfter { + fn after(&self) -> i32; +} + +impl TraitBefore for Struct { + fn before(&self) -> i32 { + 42 + } +} + +impl Struct { + fn foo(){} +} + +impl TraitAfter for Struct { + fn after(&self) -> i32 { + 42 + } +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + $0self.0 + 2$0 + } +} +"#, + r#" +struct Struct(i32); +trait Trait { + fn bar(&self) -> i32; +} +trait TraitBefore { + fn before(&self) -> i32; +} +trait TraitAfter { + fn after(&self) -> i32; +} + +impl TraitBefore for Struct { + fn before(&self) -> i32 { + 42 + } +} + +impl Struct { + fn foo(){} + + fn $0fun_name(&self) -> i32 { + self.0 + 2 + } +} + +impl TraitAfter for Struct { + fn after(&self) -> i32 { + 42 + } +} + +impl Trait for Struct { + fn bar(&self) -> i32 { + self.fun_name() + } +} +"#, + ) + } + #[test] fn closure_arguments() { check_assist( diff --git a/crates/ide-assists/src/handlers/fix_visibility.rs b/crates/ide-assists/src/handlers/fix_visibility.rs index 876454302870..d9e00435ecf5 100644 --- a/crates/ide-assists/src/handlers/fix_visibility.rs +++ b/crates/ide-assists/src/handlers/fix_visibility.rs @@ -1,4 +1,4 @@ -use hir::{db::HirDatabase, HasSource, HasVisibility, PathResolution}; +use hir::{db::HirDatabase, HasSource, HasVisibility, ModuleDef, PathResolution, ScopeDef}; use ide_db::base_db::FileId; use syntax::{ ast::{self, HasVisibility as _}, @@ -18,7 +18,7 @@ use crate::{utils::vis_offset, AssistContext, AssistId, AssistKind, Assists}; // fn frobnicate() {} // } // fn main() { -// m::frobnicate$0() {} +// m::frobnicate$0(); // } // ``` // -> @@ -27,7 +27,7 @@ use crate::{utils::vis_offset, AssistContext, AssistId, AssistKind, Assists}; // $0pub(crate) fn frobnicate() {} // } // fn main() { -// m::frobnicate() {} +// m::frobnicate(); // } // ``` pub(crate) fn fix_visibility(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { @@ -37,11 +37,15 @@ pub(crate) fn fix_visibility(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti fn add_vis_to_referenced_module_def(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { let path: ast::Path = ctx.find_node_at_offset()?; - let path_res = ctx.sema.resolve_path(&path)?; - let def = match path_res { - PathResolution::Def(def) => def, - _ => return None, - }; + let qualifier = path.qualifier()?; + let name_ref = path.segment()?.name_ref()?; + let qualifier_res = ctx.sema.resolve_path(&qualifier)?; + let PathResolution::Def(ModuleDef::Module(module)) = qualifier_res else { return None; }; + let (_, def) = module + .scope(ctx.db(), None) + .into_iter() + .find(|(name, _)| name.to_smol_str() == name_ref.text().as_str())?; + let ScopeDef::ModuleDef(def) = def else { return None; }; let current_module = ctx.sema.scope(path.syntax())?.module(); let target_module = def.module(ctx.db())?; diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs index 35cd42908af2..0bcb5728311b 100644 --- a/crates/ide-assists/src/handlers/generate_enum_variant.rs +++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs @@ -261,12 +261,12 @@ fn main() { } //- /foo.rs -enum Foo { +pub enum Foo { Bar, } ", r" -enum Foo { +pub enum Foo { Bar, Baz, } @@ -310,7 +310,7 @@ fn main() { generate_enum_variant, r" mod m { - enum Foo { + pub enum Foo { Bar, } } @@ -320,7 +320,7 @@ fn main() { ", r" mod m { - enum Foo { + pub enum Foo { Bar, Baz, } @@ -516,10 +516,10 @@ mod foo; use foo::Foo::Bar$0; //- /foo.rs -enum Foo {} +pub enum Foo {} ", r" -enum Foo { +pub enum Foo { Bar, } ", diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs index c229127e48ff..57f198748cb7 100644 --- a/crates/ide-assists/src/handlers/generate_function.rs +++ b/crates/ide-assists/src/handlers/generate_function.rs @@ -1324,7 +1324,7 @@ fn foo() { generate_function, r" mod bar { - mod baz {} + pub mod baz {} } fn foo() { @@ -1333,7 +1333,7 @@ fn foo() { ", r" mod bar { - mod baz { + pub mod baz { pub(crate) fn my_fn() { ${0:todo!()} } diff --git a/crates/ide-assists/src/handlers/move_format_string_arg.rs b/crates/ide-assists/src/handlers/move_format_string_arg.rs index aa710d2ce651..11db6ae7f7b8 100644 --- a/crates/ide-assists/src/handlers/move_format_string_arg.rs +++ b/crates/ide-assists/src/handlers/move_format_string_arg.rs @@ -92,7 +92,7 @@ pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) NodeOrToken::Node(n) => { format_to!(current_arg, "{n}"); }, - NodeOrToken::Token(t) if t.kind() == COMMA=> { + NodeOrToken::Token(t) if t.kind() == COMMA => { existing_args.push(current_arg.trim().into()); current_arg.clear(); }, @@ -238,14 +238,14 @@ fn main() { &add_macro_decl( r#" fn main() { - print!("{} {x + 1:b} {Struct(1, 2)}$0", 1); + print!("{:b} {x + 1:b} {Struct(1, 2)}$0", 1); } "#, ), &add_macro_decl( r#" fn main() { - print!("{} {:b} {}"$0, 1, x + 1, Struct(1, 2)); + print!("{:b} {:b} {}"$0, 1, x + 1, Struct(1, 2)); } "#, ), diff --git a/crates/ide-assists/src/handlers/remove_dbg.rs b/crates/ide-assists/src/handlers/remove_dbg.rs index 3d9cbff177ba..99ae60e07bcf 100644 --- a/crates/ide-assists/src/handlers/remove_dbg.rs +++ b/crates/ide-assists/src/handlers/remove_dbg.rs @@ -1,7 +1,7 @@ use itertools::Itertools; use syntax::{ ast::{self, AstNode, AstToken}, - match_ast, NodeOrToken, SyntaxElement, TextSize, T, + match_ast, NodeOrToken, SyntaxElement, TextRange, TextSize, T, }; use crate::{AssistContext, AssistId, AssistKind, Assists}; @@ -22,7 +22,36 @@ use crate::{AssistContext, AssistId, AssistKind, Assists}; // } // ``` pub(crate) fn remove_dbg(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - let macro_call = ctx.find_node_at_offset::()?; + let macro_calls = if ctx.has_empty_selection() { + vec![ctx.find_node_at_offset::()?] + } else { + ctx.covering_element() + .as_node()? + .descendants() + .filter(|node| ctx.selection_trimmed().contains_range(node.text_range())) + .filter_map(ast::MacroCall::cast) + .collect() + }; + + let replacements = + macro_calls.into_iter().filter_map(compute_dbg_replacement).collect::>(); + if replacements.is_empty() { + return None; + } + + acc.add( + AssistId("remove_dbg", AssistKind::Refactor), + "Remove dbg!()", + ctx.selection_trimmed(), + |builder| { + for (range, text) in replacements { + builder.replace(range, text); + } + }, + ) +} + +fn compute_dbg_replacement(macro_call: ast::MacroCall) -> Option<(TextRange, String)> { let tt = macro_call.token_tree()?; let r_delim = NodeOrToken::Token(tt.right_delimiter_token()?); if macro_call.path()?.segment()?.name_ref()?.text() != "dbg" @@ -41,7 +70,7 @@ pub(crate) fn remove_dbg(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<( let macro_expr = ast::MacroExpr::cast(macro_call.syntax().parent()?)?; let parent = macro_expr.syntax().parent()?; - let (range, text) = match &*input_expressions { + Some(match &*input_expressions { // dbg!() [] => { match_ast! { @@ -107,10 +136,6 @@ pub(crate) fn remove_dbg(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<( } // dbg!(expr0, expr1, ...) exprs => (macro_call.syntax().text_range(), format!("({})", exprs.iter().format(", "))), - }; - - acc.add(AssistId("remove_dbg", AssistKind::Refactor), "Remove dbg!()", range, |builder| { - builder.replace(range, text); }) } @@ -238,4 +263,28 @@ fn foo() { check(r#"$0dbg!(0, 1)"#, r#"(0, 1)"#); check(r#"$0dbg!(0, (1, 2))"#, r#"(0, (1, 2))"#); } + + #[test] + fn test_range() { + check( + r#" +fn f() { + dbg!(0) + $0dbg!(1); + dbg!(())$0 +} +"#, + r#" +fn f() { + dbg!(0) + 1; + () +} +"#, + ); + } + + #[test] + fn test_range_partial() { + check_assist_not_applicable(remove_dbg, r#"$0dbg$0!(0)"#); + check_assist_not_applicable(remove_dbg, r#"$0dbg!(0$0)"#); + } } diff --git a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs index f9ba289ee175..6fa15b28e4ef 100644 --- a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs @@ -1019,8 +1019,6 @@ struct Foo { impl foo::Bar for Foo { $0type Qux; - const Baz: usize = 42; - const Fez: usize; fn foo() { diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 029d169899bb..c09317572acf 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -741,7 +741,7 @@ mod m { fn frobnicate() {} } fn main() { - m::frobnicate$0() {} + m::frobnicate$0(); } "#####, r#####" @@ -749,7 +749,7 @@ mod m { $0pub(crate) fn frobnicate() {} } fn main() { - m::frobnicate() {} + m::frobnicate(); } "#####, ) diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index 307e67927056..68c31b4f8e92 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -119,6 +119,10 @@ pub fn filter_assoc_items( (default_methods, def.body()), (DefaultMethods::Only, Some(_)) | (DefaultMethods::No, None) ), + ast::AssocItem::Const(def) => matches!( + (default_methods, def.body()), + (DefaultMethods::Only, Some(_)) | (DefaultMethods::No, None) + ), _ => default_methods == DefaultMethods::No, }) .collect::>() diff --git a/crates/ide-completion/Cargo.toml b/crates/ide-completion/Cargo.toml index 75835bce95da..11310e2f1291 100644 --- a/crates/ide-completion/Cargo.toml +++ b/crates/ide-completion/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs index e82cbfdcb840..7384a3f2d80b 100644 --- a/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs @@ -157,7 +157,7 @@ fn complete_trait_impl( add_function_impl(acc, ctx, replacement_range, func, hir_impl) } (hir::AssocItem::TypeAlias(type_alias), All | TypeAlias) => { - add_type_alias_impl(acc, ctx, replacement_range, type_alias) + add_type_alias_impl(acc, ctx, replacement_range, type_alias, hir_impl) } (hir::AssocItem::Const(const_), All | Const) => { add_const_impl(acc, ctx, replacement_range, const_, hir_impl) @@ -236,9 +236,7 @@ fn get_transformed_assoc_item( ); transform.apply(assoc_item.syntax()); - if let ast::AssocItem::Fn(func) = &assoc_item { - func.remove_attrs_and_docs(); - } + assoc_item.remove_attrs_and_docs(); Some(assoc_item) } @@ -247,24 +245,50 @@ fn add_type_alias_impl( ctx: &CompletionContext<'_>, replacement_range: TextRange, type_alias: hir::TypeAlias, + impl_def: hir::Impl, ) { - let alias_name = type_alias.name(ctx.db); - let (alias_name, escaped_name) = - (alias_name.unescaped().to_smol_str(), alias_name.to_smol_str()); + let alias_name = type_alias.name(ctx.db).unescaped().to_smol_str(); let label = format!("type {} =", alias_name); - let replacement = format!("type {} = ", escaped_name); let mut item = CompletionItem::new(SymbolKind::TypeAlias, replacement_range, label); item.lookup_by(format!("type {}", alias_name)) .set_documentation(type_alias.docs(ctx.db)) .set_relevance(CompletionRelevance { is_item_from_trait: true, ..Default::default() }); - match ctx.config.snippet_cap { - Some(cap) => item - .snippet_edit(cap, TextEdit::replace(replacement_range, format!("{}$0;", replacement))), - None => item.text_edit(TextEdit::replace(replacement_range, replacement)), - }; - item.add_to(acc); + + if let Some(source) = ctx.sema.source(type_alias) { + let assoc_item = ast::AssocItem::TypeAlias(source.value); + if let Some(transformed_item) = get_transformed_assoc_item(ctx, assoc_item, impl_def) { + let transformed_ty = match transformed_item { + ast::AssocItem::TypeAlias(ty) => ty, + _ => unreachable!(), + }; + + let start = transformed_ty.syntax().text_range().start(); + let Some(end) = transformed_ty + .eq_token() + .map(|tok| tok.text_range().start()) + .or(transformed_ty.semicolon_token().map(|tok| tok.text_range().start())) else { return }; + + let len = end - start; + let mut decl = transformed_ty.syntax().text().slice(..len).to_string(); + if !decl.ends_with(' ') { + decl.push(' '); + } + decl.push_str("= "); + + match ctx.config.snippet_cap { + Some(cap) => { + let snippet = format!("{}$0;", decl); + item.snippet_edit(cap, TextEdit::replace(replacement_range, snippet)); + } + None => { + item.text_edit(TextEdit::replace(replacement_range, decl)); + } + }; + item.add_to(acc); + } + } } fn add_const_impl( @@ -309,7 +333,6 @@ fn add_const_impl( } fn make_const_compl_syntax(const_: &ast::Const, needs_whitespace: bool) -> String { - const_.remove_attrs_and_docs(); let const_ = if needs_whitespace { insert_whitespace_into_node::insert_ws_into(const_.syntax().clone()) } else { @@ -333,8 +356,6 @@ fn make_const_compl_syntax(const_: &ast::Const, needs_whitespace: bool) -> Strin } fn function_declaration(node: &ast::Fn, needs_whitespace: bool) -> String { - node.remove_attrs_and_docs(); - let node = if needs_whitespace { insert_whitespace_into_node::insert_ws_into(node.syntax().clone()) } else { @@ -350,9 +371,7 @@ fn function_declaration(node: &ast::Fn, needs_whitespace: bool) -> String { .map_or(end, |f| f.text_range().start()); let len = end - start; - let range = TextRange::new(0.into(), len); - - let syntax = node.text().slice(range).to_string(); + let syntax = node.text().slice(..len).to_string(); syntax.trim_end().to_owned() } @@ -1160,6 +1179,106 @@ impl Foo for Test { $0 } } +"#, + ); + } + + #[test] + fn includes_gat_generics() { + check_edit( + "type Ty", + r#" +trait Tr<'b> { + type Ty<'a: 'b, T: Copy, const C: usize>; +} + +impl<'b> Tr<'b> for () { + $0 +} +"#, + r#" +trait Tr<'b> { + type Ty<'a: 'b, T: Copy, const C: usize>; +} + +impl<'b> Tr<'b> for () { + type Ty<'a: 'b, T: Copy, const C: usize> = $0; +} +"#, + ); + } + + #[test] + fn strips_comments() { + check_edit( + "fn func", + r#" +trait Tr { + /// docs + #[attr] + fn func(); +} +impl Tr for () { + $0 +} +"#, + r#" +trait Tr { + /// docs + #[attr] + fn func(); +} +impl Tr for () { + fn func() { + $0 +} +} +"#, + ); + check_edit( + "const C", + r#" +trait Tr { + /// docs + #[attr] + const C: usize; +} +impl Tr for () { + $0 +} +"#, + r#" +trait Tr { + /// docs + #[attr] + const C: usize; +} +impl Tr for () { + const C: usize = $0; +} +"#, + ); + check_edit( + "type Item", + r#" +trait Tr { + /// docs + #[attr] + type Item; +} +impl Tr for () { + $0 +} +"#, + r#" +trait Tr { + /// docs + #[attr] + type Item; +} +impl Tr for () { + type Item = $0; +} "#, ); } diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index 04111ec7efaa..c142a7305f9e 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -681,9 +681,13 @@ fn classify_name_ref( ast::Item::ExternBlock(it) => it.extern_item_list().is_none(), ast::Item::Fn(it) => it.body().is_none(), ast::Item::Impl(it) => it.assoc_item_list().is_none(), - ast::Item::Module(it) => it.item_list().is_none(), + ast::Item::Module(it) => { + it.item_list().is_none() && it.semicolon_token().is_none() + } ast::Item::Static(it) => it.body().is_none(), - ast::Item::Struct(it) => it.field_list().is_none(), + ast::Item::Struct(it) => { + it.field_list().is_none() && it.semicolon_token().is_none() + } ast::Item::Trait(it) => it.assoc_item_list().is_none(), ast::Item::TypeAlias(it) => it.ty().is_none(), ast::Item::Union(it) => it.record_field_list().is_none(), diff --git a/crates/ide-completion/src/tests/item_list.rs b/crates/ide-completion/src/tests/item_list.rs index 5076c6e86cae..8ed6cb3cf867 100644 --- a/crates/ide-completion/src/tests/item_list.rs +++ b/crates/ide-completion/src/tests/item_list.rs @@ -245,3 +245,35 @@ impl Test for () { "#]], ); } + +#[test] +fn after_unit_struct() { + check( + r#"struct S; f$0"#, + expect![[r#" + ma makro!(…) macro_rules! makro + md module + kw const + kw crate:: + kw enum + kw extern + kw fn + kw impl + kw mod + kw pub + kw pub(crate) + kw pub(super) + kw self:: + kw static + kw struct + kw trait + kw type + kw union + kw unsafe + kw use + sn macro_rules + sn tfn (Test function) + sn tmod (Test module) + "#]], + ); +} diff --git a/crates/ide-db/Cargo.toml b/crates/ide-db/Cargo.toml index cf0bcd5c96b2..f48cce58c6e7 100644 --- a/crates/ide-db/Cargo.toml +++ b/crates/ide-db/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide-db/src/line_index.rs b/crates/ide-db/src/line_index.rs index 75d49ff2fd77..1b8f56187a02 100644 --- a/crates/ide-db/src/line_index.rs +++ b/crates/ide-db/src/line_index.rs @@ -58,8 +58,11 @@ impl LineIndex { let mut utf16_lines = NoHashHashMap::default(); let mut utf16_chars = Vec::new(); - let mut newlines = vec![0.into()]; - let mut curr_row @ mut curr_col = 0.into(); + let mut newlines = Vec::with_capacity(16); + newlines.push(TextSize::from(0)); + + let mut curr_row = 0.into(); + let mut curr_col = 0.into(); let mut line = 0; for c in text.chars() { let c_len = TextSize::of(c); diff --git a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs index ac6c6e8feeea..313346ee1315 100644 --- a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs +++ b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs @@ -104,6 +104,11 @@ pub fn parse_format_exprs(input: &str) -> Result<(String, Vec), ()> { extracted_expressions.push(Arg::Placeholder); state = State::NotArg; } + (State::MaybeArg, ':') => { + output.push(chr); + extracted_expressions.push(Arg::Placeholder); + state = State::FormatOpts; + } (State::MaybeArg, _) => { if matches!(chr, '\\' | '$') { current_expr.push('\\'); @@ -118,44 +123,41 @@ pub fn parse_format_exprs(input: &str) -> Result<(String, Vec), ()> { state = State::Expr; } } - (State::Ident | State::Expr, '}') => { - if inexpr_open_count == 0 { - output.push(chr); - - if matches!(state, State::Expr) { - extracted_expressions.push(Arg::Expr(current_expr.trim().into())); - } else { - extracted_expressions.push(Arg::Ident(current_expr.trim().into())); - } - - current_expr = String::new(); - state = State::NotArg; - } else { - // We're closing one brace met before inside of the expression. - current_expr.push(chr); - inexpr_open_count -= 1; - } - } (State::Ident | State::Expr, ':') if matches!(chars.peek(), Some(':')) => { // path separator state = State::Expr; current_expr.push_str("::"); chars.next(); } - (State::Ident | State::Expr, ':') => { + (State::Ident | State::Expr, ':' | '}') => { if inexpr_open_count == 0 { - // We're outside of braces, thus assume that it's a specifier, like "{Some(value):?}" - output.push(chr); + let trimmed = current_expr.trim(); - if matches!(state, State::Expr) { - extracted_expressions.push(Arg::Expr(current_expr.trim().into())); + // if the expression consists of a single number, like "0" or "12", it can refer to + // format args in the order they are specified. + // see: https://doc.rust-lang.org/std/fmt/#positional-parameters + if trimmed.chars().fold(true, |only_num, c| c.is_ascii_digit() && only_num) { + output.push_str(trimmed); + } else if matches!(state, State::Expr) { + extracted_expressions.push(Arg::Expr(trimmed.into())); } else { - extracted_expressions.push(Arg::Ident(current_expr.trim().into())); + extracted_expressions.push(Arg::Ident(trimmed.into())); } - current_expr = String::new(); - state = State::FormatOpts; - } else { + output.push(chr); + current_expr.clear(); + state = if chr == ':' { + State::FormatOpts + } else if chr == '}' { + State::NotArg + } else { + unreachable!() + }; + } else if chr == '}' { + // We're closing one brace met before inside of the expression. + current_expr.push(chr); + inexpr_open_count -= 1; + } else if chr == ':' { // We're inside of braced expression, assume that it's a struct field name/value delimiter. current_expr.push(chr); } @@ -219,6 +221,10 @@ mod tests { ("{expr} is {2 + 2}", expect![["{} is {}; expr, 2 + 2"]]), ("{expr:?}", expect![["{:?}; expr"]]), ("{expr:1$}", expect![[r"{:1\$}; expr"]]), + ("{:1$}", expect![[r"{:1\$}; $1"]]), + ("{:>padding$}", expect![[r"{:>padding\$}; $1"]]), + ("{}, {}, {0}", expect![[r"{}, {}, {0}; $1, $2"]]), + ("{}, {}, {0:b}", expect![[r"{}, {}, {0:b}; $1, $2"]]), ("{$0}", expect![[r"{}; \$0"]]), ("{malformed", expect![["-"]]), ("malformed}", expect![["-"]]), diff --git a/crates/ide-diagnostics/Cargo.toml b/crates/ide-diagnostics/Cargo.toml index e1d146f4ee56..7e9a1125d751 100644 --- a/crates/ide-diagnostics/Cargo.toml +++ b/crates/ide-diagnostics/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide-diagnostics/src/handlers/macro_error.rs b/crates/ide-diagnostics/src/handlers/macro_error.rs index 43ff4ed5a6c8..870c78d1f1eb 100644 --- a/crates/ide-diagnostics/src/handlers/macro_error.rs +++ b/crates/ide-diagnostics/src/handlers/macro_error.rs @@ -5,10 +5,7 @@ use crate::{Diagnostic, DiagnosticsContext}; // This diagnostic is shown for macro expansion errors. pub(crate) fn macro_error(ctx: &DiagnosticsContext<'_>, d: &hir::MacroError) -> Diagnostic { // Use more accurate position if available. - let display_range = d - .precise_location - .unwrap_or_else(|| ctx.sema.diagnostics_display_range(d.node.clone()).range); - + let display_range = ctx.resolve_precise_location(&d.node, d.precise_location); Diagnostic::new("macro-error", d.message.clone(), display_range).experimental() } diff --git a/crates/ide-diagnostics/src/handlers/no_such_field.rs b/crates/ide-diagnostics/src/handlers/no_such_field.rs index a80299106bd3..d8f2a9de9818 100644 --- a/crates/ide-diagnostics/src/handlers/no_such_field.rs +++ b/crates/ide-diagnostics/src/handlers/no_such_field.rs @@ -268,12 +268,12 @@ fn main() { foo::Foo { bar: 3, $0baz: false}; } //- /foo.rs -struct Foo { +pub struct Foo { bar: i32 } "#, r#" -struct Foo { +pub struct Foo { bar: i32, pub(crate) baz: bool } diff --git a/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs b/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs index 4b43124757f0..87531f4acfb7 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs @@ -9,10 +9,7 @@ pub(crate) fn unresolved_macro_call( d: &hir::UnresolvedMacroCall, ) -> Diagnostic { // Use more accurate position if available. - let display_range = d - .precise_location - .unwrap_or_else(|| ctx.sema.diagnostics_display_range(d.macro_call.clone()).range); - + let display_range = ctx.resolve_precise_location(&d.macro_call, d.precise_location); let bang = if d.is_bang { "!" } else { "" }; Diagnostic::new( "unresolved-macro-call", diff --git a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs index 760f51f90498..23818d883f73 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs @@ -1,5 +1,4 @@ use hir::db::DefDatabase; -use syntax::NodeOrToken; use crate::{Diagnostic, DiagnosticsContext, Severity}; @@ -19,16 +18,7 @@ pub(crate) fn unresolved_proc_macro( proc_attr_macros_enabled: bool, ) -> Diagnostic { // Use more accurate position if available. - let display_range = (|| { - let precise_location = d.precise_location?; - let root = ctx.sema.parse_or_expand(d.node.file_id)?; - match root.covering_element(precise_location) { - NodeOrToken::Node(it) => Some(ctx.sema.original_range(&it)), - NodeOrToken::Token(it) => d.node.with_value(it).original_file_range_opt(ctx.sema.db), - } - })() - .unwrap_or_else(|| ctx.sema.diagnostics_display_range(d.node.clone())) - .range; + let display_range = ctx.resolve_precise_location(&d.node, d.precise_location); let config_enabled = match d.kind { hir::MacroKind::Attr => proc_macros_enabled && proc_attr_macros_enabled, diff --git a/crates/ide-diagnostics/src/handlers/useless_braces.rs b/crates/ide-diagnostics/src/handlers/useless_braces.rs index 8b9330e04013..289ed0458c67 100644 --- a/crates/ide-diagnostics/src/handlers/useless_braces.rs +++ b/crates/ide-diagnostics/src/handlers/useless_braces.rs @@ -71,9 +71,9 @@ use a; use a::{c, d::e}; mod a { - mod c {} - mod d { - mod e {} + pub mod c {} + pub mod d { + pub mod e {} } } "#, @@ -87,9 +87,9 @@ use a::{ }; mod a { - mod c {} - mod d { - mod e {} + pub mod c {} + pub mod d { + pub mod e {} } } "#, @@ -116,11 +116,11 @@ use b; ); check_fix( r#" -mod a { mod c {} } +mod a { pub mod c {} } use a::{c$0}; "#, r#" -mod a { mod c {} } +mod a { pub mod c {} } use a::c; "#, ); @@ -136,11 +136,11 @@ use a; ); check_fix( r#" -mod a { mod c {} mod d { mod e {} } } +mod a { pub mod c {} pub mod d { pub mod e {} } } use a::{c, d::{e$0}}; "#, r#" -mod a { mod c {} mod d { mod e {} } } +mod a { pub mod c {} pub mod d { pub mod e {} } } use a::{c, d::e}; "#, ); diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs index ae299f058414..d81e36a1f863 100644 --- a/crates/ide-diagnostics/src/lib.rs +++ b/crates/ide-diagnostics/src/lib.rs @@ -182,6 +182,28 @@ struct DiagnosticsContext<'a> { resolve: &'a AssistResolveStrategy, } +impl<'a> DiagnosticsContext<'a> { + fn resolve_precise_location( + &self, + node: &InFile, + precise_location: Option, + ) -> TextRange { + let sema = &self.sema; + (|| { + let precise_location = precise_location?; + let root = sema.parse_or_expand(node.file_id)?; + match root.covering_element(precise_location) { + syntax::NodeOrToken::Node(it) => Some(sema.original_range(&it)), + syntax::NodeOrToken::Token(it) => { + node.with_value(it).original_file_range_opt(sema.db) + } + } + })() + .unwrap_or_else(|| sema.diagnostics_display_range(node.clone())) + .range + } +} + pub fn diagnostics( db: &RootDatabase, config: &DiagnosticsConfig, diff --git a/crates/ide-ssr/Cargo.toml b/crates/ide-ssr/Cargo.toml index 4baf786c4555..7be62a8d9ffe 100644 --- a/crates/ide-ssr/Cargo.toml +++ b/crates/ide-ssr/Cargo.toml @@ -5,7 +5,7 @@ description = "Structural search and replace of Rust code" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/rust-analyzer" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide/Cargo.toml b/crates/ide/Cargo.toml index 712459a7ee9c..73f202630f15 100644 --- a/crates/ide/Cargo.toml +++ b/crates/ide/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index f97c67b144ac..43f7a529bc29 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -289,10 +289,10 @@ mod b; enum E { X(Foo$0) } //- /a.rs -struct Foo; - //^^^ +pub struct Foo; + //^^^ //- /b.rs -struct Foo; +pub struct Foo; "#, ); } diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 3687b597fc64..838fb18c3d59 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -119,7 +119,14 @@ pub(crate) fn hover( }); } - let in_attr = matches!(original_token.parent().and_then(ast::TokenTree::cast), Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind()))); + let in_attr = original_token + .parent_ancestors() + .filter_map(ast::Item::cast) + .any(|item| sema.is_attr_macro_call(&item)) + && !matches!( + original_token.parent().and_then(ast::TokenTree::cast), + Some(tt) if tt.syntax().ancestors().any(|it| ast::Meta::can_cast(it.kind())) + ); // prefer descending the same token kind in attribute expansions, in normal macros text // equivalency is more important let descended = if in_attr { diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 34d8bf67a301..37384c4e7e07 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -1,7 +1,10 @@ use std::fmt; use either::Either; -use hir::{known, Callable, HasVisibility, HirDisplay, Mutability, Semantics, TypeInfo}; +use hir::{ + known, Adjust, AutoBorrow, Callable, HasVisibility, HirDisplay, Mutability, OverloadedDeref, + PointerCast, Safety, Semantics, TypeInfo, +}; use ide_db::{ base_db::FileRange, famous_defs::FamousDefs, syntax_helpers::node_ext::walk_ty, FxHashMap, RootDatabase, @@ -22,7 +25,7 @@ pub struct InlayHintsConfig { pub type_hints: bool, pub parameter_hints: bool, pub chaining_hints: bool, - pub reborrow_hints: ReborrowHints, + pub adjustment_hints: AdjustmentHints, pub closure_return_type_hints: ClosureReturnTypeHints, pub binding_mode_hints: bool, pub lifetime_elision_hints: LifetimeElisionHints, @@ -48,9 +51,9 @@ pub enum LifetimeElisionHints { } #[derive(Clone, Debug, PartialEq, Eq)] -pub enum ReborrowHints { +pub enum AdjustmentHints { Always, - MutableOnly, + ReborrowOnly, Never, } @@ -61,7 +64,8 @@ pub enum InlayKind { ClosingBraceHint, ClosureReturnTypeHint, GenericParamListHint, - ImplicitReborrowHint, + AdjustmentHint, + AdjustmentHintClosingParenthesis, LifetimeHint, ParameterHint, TypeHint, @@ -115,6 +119,12 @@ impl From for InlayHintLabel { } } +impl From<&str> for InlayHintLabel { + fn from(s: &str) -> Self { + Self { parts: vec![InlayHintLabelPart { text: s.into(), linked_location: None }] } + } +} + impl fmt::Display for InlayHintLabel { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self.parts.iter().map(|part| &part.text).format("")) @@ -180,7 +190,7 @@ impl fmt::Debug for InlayHintLabelPart { pub(crate) fn inlay_hints( db: &RootDatabase, file_id: FileId, - range_limit: Option, + range_limit: Option, config: &InlayHintsConfig, ) -> Vec { let _p = profile::span("inlay_hints"); @@ -195,7 +205,7 @@ pub(crate) fn inlay_hints( let hints = |node| hints(&mut acc, &famous_defs, config, file_id, node); match range_limit { - Some(FileRange { range, .. }) => match file.covering_element(range) { + Some(range) => match file.covering_element(range) { NodeOrToken::Token(_) => return acc, NodeOrToken::Node(n) => n .descendants() @@ -221,6 +231,7 @@ fn hints( match node { ast::Expr(expr) => { chaining_hints(hints, sema, &famous_defs, config, file_id, &expr); + adjustment_hints(hints, sema, config, &expr); match expr { ast::Expr::CallExpr(it) => param_name_hints(hints, sema, config, ast::Expr::from(it)), ast::Expr::MethodCallExpr(it) => { @@ -229,7 +240,7 @@ fn hints( ast::Expr::ClosureExpr(it) => closure_ret_hints(hints, sema, &famous_defs, config, file_id, it), // We could show reborrows for all expressions, but usually that is just noise to the user // and the main point here is to show why "moving" a mutable reference doesn't necessarily move it - ast::Expr::PathExpr(_) => reborrow_hints(hints, sema, config, &expr), + // ast::Expr::PathExpr(_) => reborrow_hints(hints, sema, config, &expr), _ => None, } }, @@ -617,30 +628,95 @@ fn closure_ret_hints( Some(()) } -fn reborrow_hints( +fn adjustment_hints( acc: &mut Vec, sema: &Semantics<'_, RootDatabase>, config: &InlayHintsConfig, expr: &ast::Expr, ) -> Option<()> { - if config.reborrow_hints == ReborrowHints::Never { + if config.adjustment_hints == AdjustmentHints::Never { return None; } + if let ast::Expr::ParenExpr(_) = expr { + // These inherit from the inner expression which would result in duplicate hints + return None; + } + + let parent = expr.syntax().parent().and_then(ast::Expr::cast); let descended = sema.descend_node_into_attributes(expr.clone()).pop(); let desc_expr = descended.as_ref().unwrap_or(expr); - let mutability = sema.is_implicit_reborrow(desc_expr)?; - let label = match mutability { - hir::Mutability::Shared if config.reborrow_hints != ReborrowHints::MutableOnly => "&*", - hir::Mutability::Mut => "&mut *", - _ => return None, + let adjustments = sema.expr_adjustments(desc_expr).filter(|it| !it.is_empty())?; + let needs_parens = match parent { + Some(parent) => { + match parent { + ast::Expr::AwaitExpr(_) + | ast::Expr::CallExpr(_) + | ast::Expr::CastExpr(_) + | ast::Expr::FieldExpr(_) + | ast::Expr::MethodCallExpr(_) + | ast::Expr::TryExpr(_) => true, + // FIXME: shorthands need special casing, though not sure if adjustments are even valid there + ast::Expr::RecordExpr(_) => false, + ast::Expr::IndexExpr(index) => index.base().as_ref() == Some(expr), + _ => false, + } + } + None => false, }; - acc.push(InlayHint { - range: expr.syntax().text_range(), - kind: InlayKind::ImplicitReborrowHint, - label: label.to_string().into(), - tooltip: Some(InlayTooltip::String("Compiler inserted reborrow".into())), - }); + if needs_parens { + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::AdjustmentHint, + label: "(".into(), + tooltip: None, + }); + } + for adjustment in adjustments.into_iter().rev() { + // FIXME: Add some nicer tooltips to each of these + let text = match adjustment { + Adjust::NeverToAny if config.adjustment_hints == AdjustmentHints::Always => { + "" + } + Adjust::Deref(None) => "*", + Adjust::Deref(Some(OverloadedDeref(Mutability::Mut))) => "*", + Adjust::Deref(Some(OverloadedDeref(Mutability::Shared))) => "*", + Adjust::Borrow(AutoBorrow::Ref(Mutability::Shared)) => "&", + Adjust::Borrow(AutoBorrow::Ref(Mutability::Mut)) => "&mut ", + Adjust::Borrow(AutoBorrow::RawPtr(Mutability::Shared)) => "&raw const ", + Adjust::Borrow(AutoBorrow::RawPtr(Mutability::Mut)) => "&raw mut ", + // some of these could be represented via `as` casts, but that's not too nice and + // handling everything as a prefix expr makes the `(` and `)` insertion easier + Adjust::Pointer(cast) if config.adjustment_hints == AdjustmentHints::Always => { + match cast { + PointerCast::ReifyFnPointer => "", + PointerCast::UnsafeFnPointer => "", + PointerCast::ClosureFnPointer(Safety::Unsafe) => { + "" + } + PointerCast::ClosureFnPointer(Safety::Safe) => "", + PointerCast::MutToConstPointer => "", + PointerCast::ArrayToPointer => "", + PointerCast::Unsize => "", + } + } + _ => continue, + }; + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::AdjustmentHint, + label: text.into(), + tooltip: None, + }); + } + if needs_parens { + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::AdjustmentHintClosingParenthesis, + label: ")".into(), + tooltip: None, + }); + } Some(()) } @@ -1213,12 +1289,11 @@ fn get_callable( #[cfg(test)] mod tests { use expect_test::{expect, Expect}; - use ide_db::base_db::FileRange; use itertools::Itertools; use syntax::{TextRange, TextSize}; use test_utils::extract_annotations; - use crate::inlay_hints::ReborrowHints; + use crate::inlay_hints::AdjustmentHints; use crate::{fixture, inlay_hints::InlayHintsConfig, LifetimeElisionHints}; use super::ClosureReturnTypeHints; @@ -1230,7 +1305,7 @@ mod tests { chaining_hints: false, lifetime_elision_hints: LifetimeElisionHints::Never, closure_return_type_hints: ClosureReturnTypeHints::Never, - reborrow_hints: ReborrowHints::Always, + adjustment_hints: AdjustmentHints::Never, binding_mode_hints: false, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, @@ -1242,7 +1317,6 @@ mod tests { type_hints: true, parameter_hints: true, chaining_hints: true, - reborrow_hints: ReborrowHints::Always, closure_return_type_hints: ClosureReturnTypeHints::WithBlock, binding_mode_hints: true, lifetime_elision_hints: LifetimeElisionHints::Always, @@ -1838,10 +1912,7 @@ fn main() { .inlay_hints( &InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, file_id, - Some(FileRange { - file_id, - range: TextRange::new(TextSize::from(500), TextSize::from(600)), - }), + Some(TextRange::new(TextSize::from(500), TextSize::from(600))), ) .unwrap(); let actual = @@ -2845,48 +2916,6 @@ impl () { ); } - #[test] - fn hints_implicit_reborrow() { - check_with_config( - InlayHintsConfig { - reborrow_hints: ReborrowHints::Always, - parameter_hints: true, - ..DISABLED_CONFIG - }, - r#" -fn __() { - let unique = &mut (); - let r_mov = unique; - let foo: &mut _ = unique; - //^^^^^^ &mut * - ref_mut_id(unique); - //^^^^^^ mut_ref - //^^^^^^ &mut * - let shared = ref_id(unique); - //^^^^^^ shared_ref - //^^^^^^ &* - let mov = shared; - let r_mov: &_ = shared; - ref_id(shared); - //^^^^^^ shared_ref - - identity(unique); - identity(shared); -} -fn identity(t: T) -> T { - t -} -fn ref_mut_id(mut_ref: &mut ()) -> &mut () { - mut_ref - //^^^^^^^ &mut * -} -fn ref_id(shared_ref: &()) -> &() { - shared_ref -} -"#, - ); - } - #[test] fn hints_binding_modes() { check_with_config( @@ -2994,4 +3023,76 @@ fn f() { "#, ); } + + #[test] + fn adjustment_hints() { + check_with_config( + InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, ..DISABLED_CONFIG }, + r#" +//- minicore: coerce_unsized +fn main() { + let _: u32 = loop {}; + //^^^^^^^ + let _: &u32 = &mut 0; + //^^^^^^& + //^^^^^^* + let _: &mut u32 = &mut 0; + //^^^^^^&mut $ + //^^^^^^* + let _: *const u32 = &mut 0; + //^^^^^^&raw const $ + //^^^^^^* + let _: *mut u32 = &mut 0; + //^^^^^^&raw mut $ + //^^^^^^* + let _: fn() = main; + //^^^^ + let _: unsafe fn() = main; + //^^^^ + //^^^^ + let _: unsafe fn() = main as fn(); + //^^^^^^^^^^^^ + let _: fn() = || {}; + //^^^^^ + let _: unsafe fn() = || {}; + //^^^^^ + let _: *const u32 = &mut 0u32 as *mut u32; + //^^^^^^^^^^^^^^^^^^^^^ + let _: &mut [_] = &mut [0; 0]; + //^^^^^^^^^^^ + //^^^^^^^^^^^&mut $ + //^^^^^^^^^^^* + + Struct.consume(); + Struct.by_ref(); + //^^^^^^( + //^^^^^^& + //^^^^^^) + Struct.by_ref_mut(); + //^^^^^^( + //^^^^^^&mut $ + //^^^^^^) + + (&Struct).consume(); + //^^^^^^^* + (&Struct).by_ref(); + + (&mut Struct).consume(); + //^^^^^^^^^^^* + (&mut Struct).by_ref(); + //^^^^^^^^^^^& + //^^^^^^^^^^^* + (&mut Struct).by_ref_mut(); +} + +#[derive(Copy, Clone)] +struct Struct; +impl Struct { + fn consume(self) {} + fn by_ref(&self) {} + fn by_ref_mut(&mut self) {} +} +"#, + ) + } } diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 416817ca0b42..7402e86f36fa 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs @@ -81,8 +81,8 @@ pub use crate::{ highlight_related::{HighlightRelatedConfig, HighlightedRange}, hover::{HoverAction, HoverConfig, HoverDocFormat, HoverGotoTypeData, HoverResult}, inlay_hints::{ - ClosureReturnTypeHints, InlayHint, InlayHintLabel, InlayHintsConfig, InlayKind, - InlayTooltip, LifetimeElisionHints, ReborrowHints, + AdjustmentHints, ClosureReturnTypeHints, InlayHint, InlayHintLabel, InlayHintsConfig, + InlayKind, InlayTooltip, LifetimeElisionHints, }, join_lines::JoinLinesConfig, markup::Markup, @@ -367,7 +367,7 @@ impl Analysis { &self, config: &InlayHintsConfig, file_id: FileId, - range: Option, + range: Option, ) -> Cancellable> { self.with_db(|db| inlay_hints::inlay_hints(db, file_id, range, config)) } diff --git a/crates/ide/src/moniker.rs b/crates/ide/src/moniker.rs index 07d117aff10b..fcbf6d8e58c4 100644 --- a/crates/ide/src/moniker.rs +++ b/crates/ide/src/moniker.rs @@ -1,9 +1,9 @@ //! This module generates [moniker](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.6.0/specification/#exportsImports) //! for LSIF and LSP. -use hir::{db::DefDatabase, AsAssocItem, AssocItemContainer, Crate, Name, Semantics}; +use hir::{AsAssocItem, AssocItemContainer, Crate, Name, Semantics}; use ide_db::{ - base_db::{CrateOrigin, FileId, FileLoader, FilePosition, LangCrateOrigin}, + base_db::{CrateOrigin, FilePosition, LangCrateOrigin}, defs::{Definition, IdentClass}, helpers::pick_best_token, RootDatabase, @@ -11,7 +11,7 @@ use ide_db::{ use itertools::Itertools; use syntax::{AstNode, SyntaxKind::*, T}; -use crate::{doc_links::token_as_doc_comment, RangeInfo}; +use crate::{doc_links::token_as_doc_comment, parent_module::crates_for, RangeInfo}; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum MonikerDescriptorKind { @@ -77,25 +77,13 @@ pub struct PackageInformation { pub version: Option, } -pub(crate) fn crate_for_file(db: &RootDatabase, file_id: FileId) -> Option { - for &krate in db.relevant_crates(file_id).iter() { - let crate_def_map = db.crate_def_map(krate); - for (_, data) in crate_def_map.modules() { - if data.origin.file_id() == Some(file_id) { - return Some(krate.into()); - } - } - } - None -} - pub(crate) fn moniker( db: &RootDatabase, FilePosition { file_id, offset }: FilePosition, ) -> Option>> { let sema = &Semantics::new(db); let file = sema.parse(file_id).syntax().clone(); - let current_crate = crate_for_file(db, file_id)?; + let current_crate: hir::Crate = crates_for(db, file_id).pop()?.into(); let original_token = pick_best_token(file.token_at_offset(offset), |kind| match kind { IDENT | INT_NUMBER diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs index e942413c1105..0f758cfa2d34 100644 --- a/crates/ide/src/references.rs +++ b/crates/ide/src/references.rs @@ -16,6 +16,7 @@ use ide_db::{ search::{ReferenceCategory, SearchScope, UsageSearchResult}, RootDatabase, }; +use itertools::Itertools; use stdx::hash::NoHashHashMap; use syntax::{ algo::find_node_at_offset, @@ -86,6 +87,7 @@ pub(crate) fn find_all_refs( file_id, refs.into_iter() .map(|file_ref| (file_ref.range, file_ref.category)) + .unique() .collect(), ) }) diff --git a/crates/ide/src/signature_help.rs b/crates/ide/src/signature_help.rs index 7486b20293a6..e7412d27faf4 100644 --- a/crates/ide/src/signature_help.rs +++ b/crates/ide/src/signature_help.rs @@ -1345,5 +1345,36 @@ fn f i32>(f: F) { ^^ --- "#]], ); + check( + r#" +fn f &T>(f: F) { + f($0) +} +"#, + expect![[r#" + (&T, u16) -> &T + ^^ --- + "#]], + ); + } + + #[test] + fn regression_13579() { + check( + r#" +fn f() { + take(2)($0); +} + +fn take( + count: C +) -> impl Fn() -> C { + move || count +} +"#, + expect![[r#" + () -> i32 + "#]], + ); } } diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index 27ad1a948d13..2380cf7381c1 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -13,7 +13,8 @@ use syntax::{AstNode, SyntaxKind::*, SyntaxToken, TextRange, T}; use crate::{ hover::hover_for_definition, - moniker::{crate_for_file, def_to_moniker, MonikerResult}, + moniker::{def_to_moniker, MonikerResult}, + parent_module::crates_for, Analysis, Fold, HoverConfig, HoverDocFormat, HoverResult, InlayHint, InlayHintsConfig, TryToNav, }; @@ -99,7 +100,7 @@ fn all_modules(db: &dyn HirDatabase) -> Vec { impl StaticIndex<'_> { fn add_file(&mut self, file_id: FileId) { - let current_crate = crate_for_file(self.db, file_id); + let current_crate = crates_for(self.db, file_id).pop().map(Into::into); let folds = self.analysis.folding_ranges(file_id).unwrap(); let inlay_hints = self .analysis @@ -111,7 +112,7 @@ impl StaticIndex<'_> { chaining_hints: true, closure_return_type_hints: crate::ClosureReturnTypeHints::WithBlock, lifetime_elision_hints: crate::LifetimeElisionHints::Never, - reborrow_hints: crate::ReborrowHints::Never, + adjustment_hints: crate::AdjustmentHints::Never, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, param_names_for_lifetime_elision_hints: false, diff --git a/crates/limit/Cargo.toml b/crates/limit/Cargo.toml index 893db436d8b7..3536f73da73e 100644 --- a/crates/limit/Cargo.toml +++ b/crates/limit/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [features] tracking = [] diff --git a/crates/mbe/Cargo.toml b/crates/mbe/Cargo.toml index 13cd8901031d..bce2fc9a70e8 100644 --- a/crates/mbe/Cargo.toml +++ b/crates/mbe/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index e4c56565b92d..cf53c16726bf 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -12,6 +12,9 @@ use tt::buffer::{Cursor, TokenBuffer}; use crate::{to_parser_input::to_parser_input, tt_iter::TtIter, TokenMap}; +#[cfg(test)] +mod tests; + /// Convert the syntax node to a `TokenTree` (what macro /// will consume). pub fn syntax_node_to_token_tree(node: &SyntaxNode) -> (tt::Subtree, TokenMap) { @@ -35,7 +38,7 @@ pub fn syntax_node_to_token_tree_with_modifications( append: FxHashMap>, ) -> (tt::Subtree, TokenMap, u32) { let global_offset = node.text_range().start(); - let mut c = Convertor::new(node, global_offset, existing_token_map, next_id, replace, append); + let mut c = Converter::new(node, global_offset, existing_token_map, next_id, replace, append); let subtree = convert_tokens(&mut c); c.id_alloc.map.shrink_to_fit(); always!(c.replace.is_empty(), "replace: {:?}", c.replace); @@ -100,7 +103,7 @@ pub fn parse_to_token_tree(text: &str) -> Option<(tt::Subtree, TokenMap)> { return None; } - let mut conv = RawConvertor { + let mut conv = RawConverter { lexed, pos: 0, id_alloc: TokenIdAlloc { @@ -148,7 +151,7 @@ pub fn parse_exprs_with_sep(tt: &tt::Subtree, sep: char) -> Vec { res } -fn convert_tokens(conv: &mut C) -> tt::Subtree { +fn convert_tokens(conv: &mut C) -> tt::Subtree { struct StackEntry { subtree: tt::Subtree, idx: usize, @@ -228,7 +231,7 @@ fn convert_tokens(conv: &mut C) -> tt::Subtree { } let spacing = match conv.peek().map(|next| next.kind(conv)) { - Some(kind) if !kind.is_trivia() => tt::Spacing::Joint, + Some(kind) if is_single_token_op(kind) => tt::Spacing::Joint, _ => tt::Spacing::Alone, }; let char = match token.to_char(conv) { @@ -307,6 +310,35 @@ fn convert_tokens(conv: &mut C) -> tt::Subtree { } } +fn is_single_token_op(kind: SyntaxKind) -> bool { + matches!( + kind, + EQ | L_ANGLE + | R_ANGLE + | BANG + | AMP + | PIPE + | TILDE + | AT + | DOT + | COMMA + | SEMICOLON + | COLON + | POUND + | DOLLAR + | QUESTION + | PLUS + | MINUS + | STAR + | SLASH + | PERCENT + | CARET + // LIFETIME_IDENT will be split into a sequence of `'` (a single quote) and an + // identifier. + | LIFETIME_IDENT + ) +} + /// Returns the textual content of a doc comment block as a quoted string /// That is, strips leading `///` (or `/**`, etc) /// and strips the ending `*/` @@ -425,8 +457,8 @@ impl TokenIdAlloc { } } -/// A raw token (straight from lexer) convertor -struct RawConvertor<'a> { +/// A raw token (straight from lexer) converter +struct RawConverter<'a> { lexed: parser::LexedStr<'a>, pos: usize, id_alloc: TokenIdAlloc, @@ -442,7 +474,7 @@ trait SrcToken: std::fmt::Debug { fn synthetic_id(&self, ctx: &Ctx) -> Option; } -trait TokenConvertor: Sized { +trait TokenConverter: Sized { type Token: SrcToken; fn convert_doc_comment(&self, token: &Self::Token) -> Option>; @@ -454,25 +486,25 @@ trait TokenConvertor: Sized { fn id_alloc(&mut self) -> &mut TokenIdAlloc; } -impl<'a> SrcToken> for usize { - fn kind(&self, ctx: &RawConvertor<'a>) -> SyntaxKind { +impl<'a> SrcToken> for usize { + fn kind(&self, ctx: &RawConverter<'a>) -> SyntaxKind { ctx.lexed.kind(*self) } - fn to_char(&self, ctx: &RawConvertor<'a>) -> Option { + fn to_char(&self, ctx: &RawConverter<'a>) -> Option { ctx.lexed.text(*self).chars().next() } - fn to_text(&self, ctx: &RawConvertor<'_>) -> SmolStr { + fn to_text(&self, ctx: &RawConverter<'_>) -> SmolStr { ctx.lexed.text(*self).into() } - fn synthetic_id(&self, _ctx: &RawConvertor<'a>) -> Option { + fn synthetic_id(&self, _ctx: &RawConverter<'a>) -> Option { None } } -impl<'a> TokenConvertor for RawConvertor<'a> { +impl<'a> TokenConverter for RawConverter<'a> { type Token = usize; fn convert_doc_comment(&self, &token: &usize) -> Option> { @@ -504,7 +536,7 @@ impl<'a> TokenConvertor for RawConvertor<'a> { } } -struct Convertor { +struct Converter { id_alloc: TokenIdAlloc, current: Option, current_synthetic: Vec, @@ -515,7 +547,7 @@ struct Convertor { punct_offset: Option<(SyntaxToken, TextSize)>, } -impl Convertor { +impl Converter { fn new( node: &SyntaxNode, global_offset: TextSize, @@ -523,11 +555,11 @@ impl Convertor { next_id: u32, mut replace: FxHashMap>, mut append: FxHashMap>, - ) -> Convertor { + ) -> Converter { let range = node.text_range(); let mut preorder = node.preorder_with_tokens(); let (first, synthetic) = Self::next_token(&mut preorder, &mut replace, &mut append); - Convertor { + Converter { id_alloc: { TokenIdAlloc { map: existing_token_map, global_offset, next_id } }, current: first, current_synthetic: synthetic, @@ -590,15 +622,15 @@ impl SynToken { } } -impl SrcToken for SynToken { - fn kind(&self, _ctx: &Convertor) -> SyntaxKind { +impl SrcToken for SynToken { + fn kind(&self, ctx: &Converter) -> SyntaxKind { match self { SynToken::Ordinary(token) => token.kind(), - SynToken::Punch(token, _) => token.kind(), + SynToken::Punch(..) => SyntaxKind::from_char(self.to_char(ctx).unwrap()).unwrap(), SynToken::Synthetic(token) => token.kind, } } - fn to_char(&self, _ctx: &Convertor) -> Option { + fn to_char(&self, _ctx: &Converter) -> Option { match self { SynToken::Ordinary(_) => None, SynToken::Punch(it, i) => it.text().chars().nth((*i).into()), @@ -606,7 +638,7 @@ impl SrcToken for SynToken { SynToken::Synthetic(_) => None, } } - fn to_text(&self, _ctx: &Convertor) -> SmolStr { + fn to_text(&self, _ctx: &Converter) -> SmolStr { match self { SynToken::Ordinary(token) => token.text().into(), SynToken::Punch(token, _) => token.text().into(), @@ -614,7 +646,7 @@ impl SrcToken for SynToken { } } - fn synthetic_id(&self, _ctx: &Convertor) -> Option { + fn synthetic_id(&self, _ctx: &Converter) -> Option { match self { SynToken::Synthetic(token) => Some(token.id), _ => None, @@ -622,7 +654,7 @@ impl SrcToken for SynToken { } } -impl TokenConvertor for Convertor { +impl TokenConverter for Converter { type Token = SynToken; fn convert_doc_comment(&self, token: &Self::Token) -> Option> { convert_doc_comment(token.token()?) @@ -651,7 +683,7 @@ impl TokenConvertor for Convertor { } let curr = self.current.clone()?; - if !&self.range.contains_range(curr.text_range()) { + if !self.range.contains_range(curr.text_range()) { return None; } let (new_current, new_synth) = @@ -809,12 +841,15 @@ impl<'a> TtTreeSink<'a> { let next = last.bump(); if let ( Some(tt::buffer::TokenTreeRef::Leaf(tt::Leaf::Punct(curr), _)), - Some(tt::buffer::TokenTreeRef::Leaf(tt::Leaf::Punct(_), _)), + Some(tt::buffer::TokenTreeRef::Leaf(tt::Leaf::Punct(next), _)), ) = (last.token_tree(), next.token_tree()) { // Note: We always assume the semi-colon would be the last token in // other parts of RA such that we don't add whitespace here. - if curr.spacing == tt::Spacing::Alone && curr.char != ';' { + // + // When `next` is a `Punct` of `'`, that's a part of a lifetime identifier so we don't + // need to add whitespace either. + if curr.spacing == tt::Spacing::Alone && curr.char != ';' && next.char != '\'' { self.inner.token(WHITESPACE, " "); self.text_pos += TextSize::of(' '); } diff --git a/crates/mbe/src/syntax_bridge/tests.rs b/crates/mbe/src/syntax_bridge/tests.rs new file mode 100644 index 000000000000..4e04d2bc1c77 --- /dev/null +++ b/crates/mbe/src/syntax_bridge/tests.rs @@ -0,0 +1,93 @@ +use std::collections::HashMap; + +use syntax::{ast, AstNode}; +use test_utils::extract_annotations; +use tt::{ + buffer::{TokenBuffer, TokenTreeRef}, + Leaf, Punct, Spacing, +}; + +use super::syntax_node_to_token_tree; + +fn check_punct_spacing(fixture: &str) { + let source_file = ast::SourceFile::parse(fixture).ok().unwrap(); + let (subtree, token_map) = syntax_node_to_token_tree(source_file.syntax()); + let mut annotations: HashMap<_, _> = extract_annotations(fixture) + .into_iter() + .map(|(range, annotation)| { + let token = token_map.token_by_range(range).expect("no token found"); + let spacing = match annotation.as_str() { + "Alone" => Spacing::Alone, + "Joint" => Spacing::Joint, + a => panic!("unknown annotation: {}", a), + }; + (token, spacing) + }) + .collect(); + + let buf = TokenBuffer::from_subtree(&subtree); + let mut cursor = buf.begin(); + while !cursor.eof() { + while let Some(token_tree) = cursor.token_tree() { + if let TokenTreeRef::Leaf(Leaf::Punct(Punct { spacing, id, .. }), _) = token_tree { + if let Some(expected) = annotations.remove(&id) { + assert_eq!(expected, *spacing); + } + } + cursor = cursor.bump_subtree(); + } + cursor = cursor.bump(); + } + + assert!(annotations.is_empty(), "unchecked annotations: {:?}", annotations); +} + +#[test] +fn punct_spacing() { + check_punct_spacing( + r#" +fn main() { + 0+0; + //^ Alone + 0+(0); + //^ Alone + 0<=0; + //^ Joint + // ^ Alone + 0<=(0); + // ^ Alone + a=0; + //^ Alone + a=(0); + //^ Alone + a+=0; + //^ Joint + // ^ Alone + a+=(0); + // ^ Alone + a&&b; + //^ Joint + // ^ Alone + a&&(b); + // ^ Alone + foo::bar; + // ^ Joint + // ^ Alone + use foo::{bar,baz,}; + // ^ Alone + // ^ Alone + // ^ Alone + struct Struct<'a> {}; + // ^ Joint + // ^ Joint + Struct::<0>; + // ^ Alone + Struct::<{0}>; + // ^ Alone + ;; + //^ Joint + // ^ Alone +} + "#, + ); +} diff --git a/crates/parser/Cargo.toml b/crates/parser/Cargo.toml index a286a6bcddde..d1420de8937a 100644 --- a/crates/parser/Cargo.toml +++ b/crates/parser/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/paths/Cargo.toml b/crates/paths/Cargo.toml index 5e83de7d994e..d23a63d2a973 100644 --- a/crates/paths/Cargo.toml +++ b/crates/paths/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/proc-macro-api/Cargo.toml b/crates/proc-macro-api/Cargo.toml index 54879c1870c0..f261f3def45d 100644 --- a/crates/proc-macro-api/Cargo.toml +++ b/crates/proc-macro-api/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/proc-macro-srv-cli/Cargo.toml b/crates/proc-macro-srv-cli/Cargo.toml index 9d0da5dee9c1..7991e125ab83 100644 --- a/crates/proc-macro-srv-cli/Cargo.toml +++ b/crates/proc-macro-srv-cli/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [dependencies] proc-macro-srv = { version = "0.0.0", path = "../proc-macro-srv" } diff --git a/crates/proc-macro-srv/Cargo.toml b/crates/proc-macro-srv/Cargo.toml index e39026ac70bf..a136abc12b75 100644 --- a/crates/proc-macro-srv/Cargo.toml +++ b/crates/proc-macro-srv/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/proc-macro-srv/src/abis/mod.rs b/crates/proc-macro-srv/src/abis/mod.rs index 2f854bc15954..0ce099ae0bab 100644 --- a/crates/proc-macro-srv/src/abis/mod.rs +++ b/crates/proc-macro-srv/src/abis/mod.rs @@ -117,7 +117,7 @@ impl Abi { let inner = unsafe { Abi_1_63::from_lib(lib, symbol_name) }?; Ok(Abi::Abi1_63(inner)) } - _ => Err(LoadProcMacroDylibError::UnsupportedABI), + _ => Err(LoadProcMacroDylibError::UnsupportedABI(info.version_string.clone())), } } diff --git a/crates/proc-macro-srv/src/dylib.rs b/crates/proc-macro-srv/src/dylib.rs index 7aba74e5396d..0722cd89d729 100644 --- a/crates/proc-macro-srv/src/dylib.rs +++ b/crates/proc-macro-srv/src/dylib.rs @@ -80,14 +80,14 @@ fn load_library(file: &Path) -> Result { pub enum LoadProcMacroDylibError { Io(io::Error), LibLoading(libloading::Error), - UnsupportedABI, + UnsupportedABI(String), } impl fmt::Display for LoadProcMacroDylibError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Io(e) => e.fmt(f), - Self::UnsupportedABI => write!(f, "unsupported ABI version"), + Self::UnsupportedABI(v) => write!(f, "unsupported ABI `{v}`"), Self::LibLoading(e) => e.fmt(f), } } diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs index 72a2dfe72d37..b4f5ebd157f3 100644 --- a/crates/proc-macro-srv/src/lib.rs +++ b/crates/proc-macro-srv/src/lib.rs @@ -113,12 +113,12 @@ impl ProcMacroSrv { fn expander(&mut self, path: &Path) -> Result<&dylib::Expander, String> { let time = fs::metadata(path).and_then(|it| it.modified()).map_err(|err| { - format!("Failed to get file metadata for {}: {:?}", path.display(), err) + format!("Failed to get file metadata for {}: {}", path.display(), err) })?; Ok(match self.expanders.entry((path.to_path_buf(), time)) { Entry::Vacant(v) => v.insert(dylib::Expander::new(path).map_err(|err| { - format!("Cannot create expander for {}: {:?}", path.display(), err) + format!("Cannot create expander for {}: {}", path.display(), err) })?), Entry::Occupied(e) => e.into_mut(), }) diff --git a/crates/proc-macro-srv/src/tests/mod.rs b/crates/proc-macro-srv/src/tests/mod.rs index b46cdddcf6b1..cc0fc91fe989 100644 --- a/crates/proc-macro-srv/src/tests/mod.rs +++ b/crates/proc-macro-srv/src/tests/mod.rs @@ -19,7 +19,7 @@ fn test_derive_error() { expect![[r##" SUBTREE $ IDENT compile_error 4294967295 - PUNCH ! [joint] 4294967295 + PUNCH ! [alone] 4294967295 SUBTREE () 4294967295 LITERAL "#[derive(DeriveError)] struct S ;" 4294967295 PUNCH ; [alone] 4294967295"##]], @@ -109,7 +109,7 @@ fn test_fn_like_macro_clone_literals() { PUNCH , [alone] 4294967295 LITERAL 2_u32 4294967295 PUNCH , [alone] 4294967295 - PUNCH - [joint] 4294967295 + PUNCH - [alone] 4294967295 LITERAL 4i64 4294967295 PUNCH , [alone] 4294967295 LITERAL 3.14f32 4294967295 @@ -130,7 +130,7 @@ fn test_attr_macro() { expect![[r##" SUBTREE $ IDENT compile_error 4294967295 - PUNCH ! [joint] 4294967295 + PUNCH ! [alone] 4294967295 SUBTREE () 4294967295 LITERAL "#[attr_error(some arguments)] mod m {}" 4294967295 PUNCH ; [alone] 4294967295"##]], diff --git a/crates/proc-macro-test/Cargo.toml b/crates/proc-macro-test/Cargo.toml index 684477191b27..d2a79f91074a 100644 --- a/crates/proc-macro-test/Cargo.toml +++ b/crates/proc-macro-test/Cargo.toml @@ -3,7 +3,7 @@ name = "proc-macro-test" version = "0.0.0" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" publish = false [lib] diff --git a/crates/proc-macro-test/imp/Cargo.toml b/crates/proc-macro-test/imp/Cargo.toml index 2d1fc3c5c7a3..1bd14070e90d 100644 --- a/crates/proc-macro-test/imp/Cargo.toml +++ b/crates/proc-macro-test/imp/Cargo.toml @@ -3,7 +3,7 @@ name = "proc-macro-test-impl" version = "0.0.0" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" publish = false [lib] diff --git a/crates/profile/Cargo.toml b/crates/profile/Cargo.toml index 5697aea964f7..01d1735bf784 100644 --- a/crates/profile/Cargo.toml +++ b/crates/profile/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/project-model/Cargo.toml b/crates/project-model/Cargo.toml index cf9868740cb0..39902a53214d 100644 --- a/crates/project-model/Cargo.toml +++ b/crates/project-model/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index a26a7c57acfc..ae2b41f27d58 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -69,7 +69,7 @@ impl WorkspaceBuildScripts { cmd.args(&["check", "--quiet", "--workspace", "--message-format=json"]); // --all-targets includes tests, benches and examples in addition to the - // default lib and bins. This is an independent concept from the --targets + // default lib and bins. This is an independent concept from the --target // flag below. cmd.arg("--all-targets"); diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index b4c2ba436772..02ec7a4f6f99 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -270,11 +270,7 @@ impl CargoWorkspace { config: &CargoConfig, progress: &dyn Fn(String), ) -> Result { - let target = config - .target - .clone() - .or_else(|| cargo_config_build_target(cargo_toml, &config.extra_env)) - .or_else(|| rustc_discover_host_triple(cargo_toml, &config.extra_env)); + let targets = find_list_of_build_targets(config, cargo_toml); let mut meta = MetadataCommand::new(); meta.cargo_path(toolchain::cargo()); @@ -294,8 +290,12 @@ impl CargoWorkspace { } meta.current_dir(current_dir.as_os_str()); - if let Some(target) = target { - meta.other_options(vec![String::from("--filter-platform"), target]); + if !targets.is_empty() { + let other_options: Vec<_> = targets + .into_iter() + .flat_map(|target| ["--filter-platform".to_string(), target]) + .collect(); + meta.other_options(other_options); } // FIXME: Fetching metadata is a slow process, as it might require @@ -469,6 +469,19 @@ impl CargoWorkspace { } } +fn find_list_of_build_targets(config: &CargoConfig, cargo_toml: &ManifestPath) -> Vec { + if let Some(target) = &config.target { + return [target.into()].to_vec(); + } + + let build_targets = cargo_config_build_target(cargo_toml, &config.extra_env); + if !build_targets.is_empty() { + return build_targets; + } + + rustc_discover_host_triple(cargo_toml, &config.extra_env).into_iter().collect() +} + fn rustc_discover_host_triple( cargo_toml: &ManifestPath, extra_env: &FxHashMap, @@ -499,7 +512,7 @@ fn rustc_discover_host_triple( fn cargo_config_build_target( cargo_toml: &ManifestPath, extra_env: &FxHashMap, -) -> Option { +) -> Vec { let mut cargo_config = Command::new(toolchain::cargo()); cargo_config.envs(extra_env); cargo_config @@ -507,12 +520,21 @@ fn cargo_config_build_target( .args(&["-Z", "unstable-options", "config", "get", "build.target"]) .env("RUSTC_BOOTSTRAP", "1"); // if successful we receive `build.target = "target-triple"` + // or `build.target = ["", ..]` tracing::debug!("Discovering cargo config target by {:?}", cargo_config); - match utf8_stdout(cargo_config) { - Ok(stdout) => stdout - .strip_prefix("build.target = \"") - .and_then(|stdout| stdout.strip_suffix('"')) - .map(ToOwned::to_owned), - Err(_) => None, - } + utf8_stdout(cargo_config).map(parse_output_cargo_config_build_target).unwrap_or_default() +} + +fn parse_output_cargo_config_build_target(stdout: String) -> Vec { + let trimmed = stdout.trim_start_matches("build.target = ").trim_matches('"'); + + if !trimmed.starts_with('[') { + return [trimmed.to_string()].to_vec(); + } + + let res = serde_json::from_str(trimmed); + if let Err(e) = &res { + tracing::warn!("Failed to parse `build.target` as an array of target: {}`", e); + } + res.unwrap_or_default() } diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs index fa8d76f3f452..f6c09a27c9d7 100644 --- a/crates/project-model/src/sysroot.rs +++ b/crates/project-model/src/sysroot.rs @@ -128,14 +128,18 @@ impl Sysroot { } if let Some(alloc) = sysroot.by_name("alloc") { - if let Some(core) = sysroot.by_name("core") { - sysroot.crates[alloc].deps.push(core); + for dep in ALLOC_DEPS.trim().lines() { + if let Some(dep) = sysroot.by_name(dep) { + sysroot.crates[alloc].deps.push(dep) + } } } if let Some(proc_macro) = sysroot.by_name("proc_macro") { - if let Some(std) = sysroot.by_name("std") { - sysroot.crates[proc_macro].deps.push(std); + for dep in PROC_MACRO_DEPS.trim().lines() { + if let Some(dep) = sysroot.by_name(dep) { + sysroot.crates[proc_macro].deps.push(dep) + } } } @@ -239,6 +243,7 @@ fn get_rust_src(sysroot_path: &AbsPath) -> Option { const SYSROOT_CRATES: &str = " alloc +backtrace core panic_abort panic_unwind @@ -246,17 +251,19 @@ proc_macro profiler_builtins std stdarch/crates/std_detect -term test unwind"; +const ALLOC_DEPS: &str = "core"; + const STD_DEPS: &str = " alloc -core -panic_abort panic_unwind +panic_abort +core profiler_builtins +unwind std_detect -term -test -unwind"; +test"; + +const PROC_MACRO_DEPS: &str = "std"; diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index e2444e24974a..a1cb438bddc4 100644 --- a/crates/project-model/src/tests.rs +++ b/crates/project-model/src/tests.rs @@ -1566,10 +1566,10 @@ fn rust_project_hello_world_project_model() { }, Dependency { crate_id: CrateId( - 1, + 3, ), name: CrateName( - "core", + "panic_unwind", ), prelude: true, }, @@ -1584,10 +1584,10 @@ fn rust_project_hello_world_project_model() { }, Dependency { crate_id: CrateId( - 3, + 1, ), name: CrateName( - "panic_unwind", + "core", ), prelude: true, }, @@ -1600,6 +1600,15 @@ fn rust_project_hello_world_project_model() { ), prelude: true, }, + Dependency { + crate_id: CrateId( + 9, + ), + name: CrateName( + "unwind", + ), + prelude: true, + }, Dependency { crate_id: CrateId( 7, @@ -1613,29 +1622,11 @@ fn rust_project_hello_world_project_model() { crate_id: CrateId( 8, ), - name: CrateName( - "term", - ), - prelude: true, - }, - Dependency { - crate_id: CrateId( - 9, - ), name: CrateName( "test", ), prelude: true, }, - Dependency { - crate_id: CrateId( - 10, - ), - name: CrateName( - "unwind", - ), - prelude: true, - }, ], proc_macro: Err( "no proc macro loaded for sysroot crate", @@ -1687,40 +1678,6 @@ fn rust_project_hello_world_project_model() { ), edition: Edition2018, version: None, - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "term", - ), - canonical_name: "term", - }, - ), - cfg_options: CfgOptions( - [], - ), - potential_cfg_options: CfgOptions( - [], - ), - env: Env { - entries: {}, - }, - dependencies: [], - proc_macro: Err( - "no proc macro loaded for sysroot crate", - ), - origin: Lang( - Other, - ), - is_proc_macro: false, - }, - CrateId( - 9, - ): CrateData { - root_file_id: FileId( - 10, - ), - edition: Edition2018, - version: None, display_name: Some( CrateDisplayName { crate_name: CrateName( @@ -1748,10 +1705,10 @@ fn rust_project_hello_world_project_model() { is_proc_macro: false, }, CrateId( - 10, + 9, ): CrateData { root_file_id: FileId( - 11, + 10, ), edition: Edition2018, version: None, @@ -1782,10 +1739,10 @@ fn rust_project_hello_world_project_model() { is_proc_macro: false, }, CrateId( - 11, + 10, ): CrateData { root_file_id: FileId( - 12, + 11, ), edition: Edition2018, version: None, @@ -1836,7 +1793,7 @@ fn rust_project_hello_world_project_model() { }, Dependency { crate_id: CrateId( - 9, + 8, ), name: CrateName( "test", diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 2780c62ed118..3d199ed24afe 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -377,6 +377,21 @@ impl ProjectWorkspace { } } + pub fn find_sysroot_proc_macro_srv(&self) -> Option { + match self { + ProjectWorkspace::Cargo { sysroot: Some(sysroot), .. } + | ProjectWorkspace::Json { sysroot: Some(sysroot), .. } => { + let standalone_server_name = + format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX); + ["libexec", "lib"] + .into_iter() + .map(|segment| sysroot.root().join(segment).join(&standalone_server_name)) + .find(|server_path| std::fs::metadata(&server_path).is_ok()) + } + _ => None, + } + } + /// Returns the roots for the current `ProjectWorkspace` /// The return type contains the path and whether or not /// the root is a member of the current workspace @@ -509,14 +524,14 @@ impl ProjectWorkspace { build_scripts, toolchain: _, } => cargo_to_crate_graph( - rustc_cfg.clone(), - cfg_overrides, load_proc_macro, load, - cargo, - build_scripts, - sysroot.as_ref(), rustc, + cargo, + sysroot.as_ref(), + rustc_cfg.clone(), + cfg_overrides, + build_scripts, ), ProjectWorkspace::DetachedFiles { files, sysroot, rustc_cfg } => { detached_files_to_crate_graph(rustc_cfg.clone(), load, files, sysroot) @@ -602,7 +617,7 @@ fn project_json_to_crate_graph( for (from, krate) in project.crates() { if let Some(&from) = crates.get(&from) { if let Some((public_deps, libproc_macro)) = &sysroot_deps { - public_deps.add(from, &mut crate_graph); + public_deps.add_to_crate_graph(&mut crate_graph, from); if krate.is_proc_macro { if let Some(proc_macro) = libproc_macro { add_dep( @@ -626,14 +641,14 @@ fn project_json_to_crate_graph( } fn cargo_to_crate_graph( - rustc_cfg: Vec, - override_cfg: &CfgOverrides, load_proc_macro: &mut dyn FnMut(&str, &AbsPath) -> ProcMacroLoadResult, load: &mut dyn FnMut(&AbsPath) -> Option, - cargo: &CargoWorkspace, - build_scripts: &WorkspaceBuildScripts, - sysroot: Option<&Sysroot>, rustc: &Option, + cargo: &CargoWorkspace, + sysroot: Option<&Sysroot>, + rustc_cfg: Vec, + override_cfg: &CfgOverrides, + build_scripts: &WorkspaceBuildScripts, ) -> CrateGraph { let _p = profile::span("cargo_to_crate_graph"); let mut crate_graph = CrateGraph::default(); @@ -642,13 +657,15 @@ fn cargo_to_crate_graph( None => (SysrootPublicDeps::default(), None), }; - let mut cfg_options = CfgOptions::default(); - cfg_options.extend(rustc_cfg); + let cfg_options = { + let mut cfg_options = CfgOptions::default(); + cfg_options.extend(rustc_cfg); + cfg_options.insert_atom("debug_assertions".into()); + cfg_options + }; let mut pkg_to_lib_crate = FxHashMap::default(); - cfg_options.insert_atom("debug_assertions".into()); - let mut pkg_crates = FxHashMap::default(); // Does any crate signal to rust-analyzer that they need the rustc_private crates? let mut has_private = false; @@ -723,7 +740,7 @@ fn cargo_to_crate_graph( // Set deps to the core, std and to the lib target of the current package for &(from, kind) in pkg_crates.get(&pkg).into_iter().flatten() { // Add sysroot deps first so that a lib target named `core` etc. can overwrite them. - public_deps.add(from, &mut crate_graph); + public_deps.add_to_crate_graph(&mut crate_graph, from); if let Some((to, name)) = lib_tgt.clone() { if to != from && kind != TargetKind::BuildScript { @@ -767,15 +784,16 @@ fn cargo_to_crate_graph( if let Some(rustc_workspace) = rustc { handle_rustc_crates( &mut crate_graph, - rustc_workspace, + &mut pkg_to_lib_crate, load, + load_proc_macro, + rustc_workspace, + cargo, + &public_deps, + libproc_macro, + &pkg_crates, &cfg_options, override_cfg, - load_proc_macro, - &mut pkg_to_lib_crate, - &public_deps, - cargo, - &pkg_crates, build_scripts, ); } @@ -825,28 +843,29 @@ fn detached_files_to_crate_graph( }, ); - public_deps.add(detached_file_crate, &mut crate_graph); + public_deps.add_to_crate_graph(&mut crate_graph, detached_file_crate); } crate_graph } fn handle_rustc_crates( crate_graph: &mut CrateGraph, - rustc_workspace: &CargoWorkspace, + pkg_to_lib_crate: &mut FxHashMap, load: &mut dyn FnMut(&AbsPath) -> Option, + load_proc_macro: &mut dyn FnMut(&str, &AbsPath) -> ProcMacroLoadResult, + rustc_workspace: &CargoWorkspace, + cargo: &CargoWorkspace, + public_deps: &SysrootPublicDeps, + libproc_macro: Option, + pkg_crates: &FxHashMap>, cfg_options: &CfgOptions, override_cfg: &CfgOverrides, - load_proc_macro: &mut dyn FnMut(&str, &AbsPath) -> ProcMacroLoadResult, - pkg_to_lib_crate: &mut FxHashMap, - public_deps: &SysrootPublicDeps, - cargo: &CargoWorkspace, - pkg_crates: &FxHashMap>, build_scripts: &WorkspaceBuildScripts, ) { let mut rustc_pkg_crates = FxHashMap::default(); // The root package of the rustc-dev component is rustc_driver, so we match that let root_pkg = - rustc_workspace.packages().find(|package| rustc_workspace[*package].name == "rustc_driver"); + rustc_workspace.packages().find(|&package| rustc_workspace[package].name == "rustc_driver"); // The rustc workspace might be incomplete (such as if rustc-dev is not // installed for the current toolchain) and `rustc_source` is set to discover. if let Some(root_pkg) = root_pkg { @@ -901,7 +920,16 @@ fn handle_rustc_crates( ); pkg_to_lib_crate.insert(pkg, crate_id); // Add dependencies on core / std / alloc for this crate - public_deps.add(crate_id, crate_graph); + public_deps.add_to_crate_graph(crate_graph, crate_id); + if let Some(proc_macro) = libproc_macro { + add_dep_with_prelude( + crate_graph, + crate_id, + CrateName::new("proc_macro").unwrap(), + proc_macro, + rustc_workspace[tgt].is_proc_macro, + ); + } rustc_pkg_crates.entry(pkg).or_insert_with(Vec::new).push(crate_id); } } @@ -1009,7 +1037,7 @@ struct SysrootPublicDeps { impl SysrootPublicDeps { /// Makes `from` depend on the public sysroot crates. - fn add(&self, from: CrateId, crate_graph: &mut CrateGraph) { + fn add_to_crate_graph(&self, crate_graph: &mut CrateGraph, from: CrateId) { for (name, krate, prelude) in &self.deps { add_dep_with_prelude(crate_graph, from, name.clone(), *krate, *prelude); } diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml index 7ae5324ab051..56f14fe18749 100644 --- a/crates/rust-analyzer/Cargo.toml +++ b/crates/rust-analyzer/Cargo.toml @@ -8,7 +8,7 @@ documentation = "https://rust-analyzer.github.io/manual.html" license = "MIT OR Apache-2.0" autobins = false edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/rust-analyzer/src/cargo_target_spec.rs b/crates/rust-analyzer/src/cargo_target_spec.rs index 6ede194babc2..cf51cf15a0e1 100644 --- a/crates/rust-analyzer/src/cargo_target_spec.rs +++ b/crates/rust-analyzer/src/cargo_target_spec.rs @@ -3,11 +3,11 @@ use std::mem; use cfg::{CfgAtom, CfgExpr}; -use ide::{FileId, RunnableKind, TestId}; +use ide::{Cancellable, FileId, RunnableKind, TestId}; use project_model::{self, CargoFeatures, ManifestPath, TargetKind}; use vfs::AbsPathBuf; -use crate::{global_state::GlobalStateSnapshot, Result}; +use crate::global_state::GlobalStateSnapshot; /// Abstract representation of Cargo target. /// @@ -29,7 +29,7 @@ impl CargoTargetSpec { spec: Option, kind: &RunnableKind, cfg: &Option, - ) -> Result<(Vec, Vec)> { + ) -> (Vec, Vec) { let mut args = Vec::new(); let mut extra_args = Vec::new(); @@ -111,13 +111,13 @@ impl CargoTargetSpec { } } } - Ok((args, extra_args)) + (args, extra_args) } pub(crate) fn for_file( global_state_snapshot: &GlobalStateSnapshot, file_id: FileId, - ) -> Result> { + ) -> Cancellable> { let crate_id = match &*global_state_snapshot.analysis.crates_for(file_id)? { &[crate_id, ..] => crate_id, _ => return Ok(None), diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs index 5dba545b8718..762d7d3a18e8 100644 --- a/crates/rust-analyzer/src/cli/load_cargo.rs +++ b/crates/rust-analyzer/src/cli/load_cargo.rs @@ -60,24 +60,12 @@ pub fn load_workspace( }; let proc_macro_client = if load_config.with_proc_macro { - let mut path = AbsPathBuf::assert(std::env::current_exe()?); - let mut args = vec!["proc-macro"]; + let (server_path, args): (_, &[_]) = match ws.find_sysroot_proc_macro_srv() { + Some(server_path) => (server_path, &[]), + None => (AbsPathBuf::assert(std::env::current_exe()?), &["proc-macro"]), + }; - if let ProjectWorkspace::Cargo { sysroot, .. } | ProjectWorkspace::Json { sysroot, .. } = - &ws - { - if let Some(sysroot) = sysroot.as_ref() { - let standalone_server_name = - format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX); - let server_path = sysroot.root().join("libexec").join(&standalone_server_name); - if std::fs::metadata(&server_path).is_ok() { - path = server_path; - args = vec![]; - } - } - } - - ProcMacroServer::spawn(path.clone(), args.clone()).map_err(|e| e.to_string()) + ProcMacroServer::spawn(server_path, args).map_err(|e| e.to_string()) } else { Err("proc macro server disabled".to_owned()) }; diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs index ca7ba896b67c..9edd045ab071 100644 --- a/crates/rust-analyzer/src/cli/scip.rs +++ b/crates/rust-analyzer/src/cli/scip.rs @@ -47,30 +47,27 @@ impl flags::Scip { let si = StaticIndex::compute(&analysis); - let mut index = scip_types::Index { - metadata: Some(scip_types::Metadata { - version: scip_types::ProtocolVersion::UnspecifiedProtocolVersion.into(), - tool_info: Some(scip_types::ToolInfo { - name: "rust-analyzer".to_owned(), - version: "0.1".to_owned(), - arguments: vec![], - ..Default::default() - }) - .into(), - project_root: format!( - "file://{}", - path.normalize() - .as_os_str() - .to_str() - .ok_or(anyhow::anyhow!("Unable to normalize project_root path"))? - .to_string() - ), - text_document_encoding: scip_types::TextEncoding::UTF8.into(), - ..Default::default() + let metadata = scip_types::Metadata { + version: scip_types::ProtocolVersion::UnspecifiedProtocolVersion.into(), + tool_info: Some(scip_types::ToolInfo { + name: "rust-analyzer".to_owned(), + version: "0.1".to_owned(), + arguments: vec![], + special_fields: Default::default(), }) .into(), - ..Default::default() + project_root: format!( + "file://{}", + path.normalize() + .as_os_str() + .to_str() + .ok_or(anyhow::anyhow!("Unable to normalize project_root path"))? + .to_string() + ), + text_document_encoding: scip_types::TextEncoding::UTF8.into(), + special_fields: Default::default(), }; + let mut documents = Vec::new(); let mut symbols_emitted: HashSet = HashSet::default(); let mut tokens_to_symbol: HashMap = HashMap::new(); @@ -95,18 +92,14 @@ impl flags::Scip { endings: LineEndings::Unix, }; - let mut doc = scip_types::Document { - relative_path, - language: "rust".to_string(), - ..Default::default() - }; + let mut occurrences = Vec::new(); + let mut symbols = Vec::new(); - tokens.into_iter().for_each(|(range, id)| { + tokens.into_iter().for_each(|(text_range, id)| { let token = si.tokens.get(id).unwrap(); - let mut occurrence = scip_types::Occurrence::default(); - occurrence.range = text_range_to_scip_range(&line_index, range); - occurrence.symbol = tokens_to_symbol + let range = text_range_to_scip_range(&line_index, text_range); + let symbol = tokens_to_symbol .entry(id) .or_insert_with(|| { let symbol = token_to_symbol(&token).unwrap_or_else(&mut new_local_symbol); @@ -114,34 +107,62 @@ impl flags::Scip { }) .clone(); + let mut symbol_roles = Default::default(); + if let Some(def) = token.definition { - if def.range == range { - occurrence.symbol_roles |= scip_types::SymbolRole::Definition as i32; + if def.range == text_range { + symbol_roles |= scip_types::SymbolRole::Definition as i32; } if symbols_emitted.insert(id) { - let mut symbol_info = scip_types::SymbolInformation::default(); - symbol_info.symbol = occurrence.symbol.clone(); - if let Some(hover) = &token.hover { - if !hover.markup.as_str().is_empty() { - symbol_info.documentation = vec![hover.markup.as_str().to_string()]; - } - } + let documentation = token + .hover + .as_ref() + .map(|hover| hover.markup.as_str()) + .filter(|it| !it.is_empty()) + .map(|it| vec![it.to_owned()]); + let symbol_info = scip_types::SymbolInformation { + symbol: symbol.clone(), + documentation: documentation.unwrap_or_default(), + relationships: Vec::new(), + special_fields: Default::default(), + }; - doc.symbols.push(symbol_info) + symbols.push(symbol_info) } } - doc.occurrences.push(occurrence); + occurrences.push(scip_types::Occurrence { + range, + symbol, + symbol_roles, + override_documentation: Vec::new(), + syntax_kind: Default::default(), + diagnostics: Vec::new(), + special_fields: Default::default(), + }); }); - if doc.occurrences.is_empty() { + if occurrences.is_empty() { continue; } - index.documents.push(doc); + documents.push(scip_types::Document { + relative_path, + language: "rust".to_string(), + occurrences, + symbols, + special_fields: Default::default(), + }); } + let index = scip_types::Index { + metadata: Some(metadata).into(), + documents, + external_symbols: Vec::new(), + special_fields: Default::default(), + }; + scip::write_message_to_file("index.scip", index) .map_err(|err| anyhow::anyhow!("Failed to write scip to file: {}", err))?; @@ -181,7 +202,7 @@ fn new_descriptor_str( name: name.to_string(), disambiguator: "".to_string(), suffix: suffix.into(), - ..Default::default() + special_fields: Default::default(), } } @@ -232,11 +253,11 @@ fn token_to_symbol(token: &TokenStaticData) -> Option { manager: "cargo".to_string(), name: package_name, version: version.unwrap_or_else(|| ".".to_string()), - ..Default::default() + special_fields: Default::default(), }) .into(), descriptors, - ..Default::default() + special_fields: Default::default(), }) } diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 4072ae585dbd..6b2f22faa717 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -118,9 +118,11 @@ config_data! { /// This option does not take effect until rust-analyzer is restarted. cargo_sysroot: Option = "\"discover\"", /// Compilation target override (target triple). + // FIXME(@poliorcetics): move to multiple targets here too, but this will need more work + // than `checkOnSave_target` cargo_target: Option = "null", /// Unsets `#[cfg(test)]` for the specified crates. - cargo_unsetTest: Vec = "[\"core\"]", + cargo_unsetTest: Vec = "[\"core\"]", /// Check all targets and tests (`--all-targets`). checkOnSave_allTargets: bool = "true", @@ -157,7 +159,7 @@ config_data! { checkOnSave_noDefaultFeatures: Option = "null", /// Override the command rust-analyzer uses instead of `cargo check` for /// diagnostics on save. The command is required to output json and - /// should therefor include `--message-format=json` or a similar option. + /// should therefore include `--message-format=json` or a similar option. /// /// If you're changing this because you're using some tool wrapping /// Cargo, you might also want to change @@ -174,9 +176,13 @@ config_data! { /// ``` /// . checkOnSave_overrideCommand: Option> = "null", - /// Check for a specific target. Defaults to - /// `#rust-analyzer.cargo.target#`. - checkOnSave_target: Option = "null", + /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + /// + /// Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. + /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + /// + /// Aliased as `"checkOnSave.targets"`. + checkOnSave_target | checkOnSave_targets: CheckOnSaveTargets = "[]", /// Toggles the additional completions that automatically add imports when completed. /// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. @@ -261,6 +267,7 @@ config_data! { files_excludeDirs: Vec = "[]", /// Controls file watching implementation. files_watcher: FilesWatcherDef = "\"client\"", + /// Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords. highlightRelated_breakPoints_enable: bool = "true", /// Enables highlighting of all exit points while the cursor is on any `return`, `?`, `fn`, or return type arrow (`->`). @@ -320,6 +327,8 @@ config_data! { inlayHints_closingBraceHints_minLines: usize = "25", /// Whether to show inlay type hints for return types of closures. inlayHints_closureReturnTypeHints_enable: ClosureReturnTypeHintsDef = "\"never\"", + /// Whether to show inlay hints for type adjustments. + inlayHints_expressionAdjustmentHints_enable: AdjustmentHintsDef = "\"never\"", /// Whether to show inlay type hints for elided lifetimes in function signatures. inlayHints_lifetimeElisionHints_enable: LifetimeElisionDef = "\"never\"", /// Whether to prefer using parameter names as the name for elided lifetime hints if possible. @@ -329,7 +338,8 @@ config_data! { /// Whether to show function parameter name inlay hints at the call /// site. inlayHints_parameterHints_enable: bool = "true", - /// Whether to show inlay type hints for compiler inserted reborrows. + /// Whether to show inlay hints for compiler inserted reborrows. + /// This setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#. inlayHints_reborrowHints_enable: ReborrowHintsDef = "\"never\"", /// Whether to render leading colons for type hints, and trailing colons for parameter hints. inlayHints_renderColons: bool = "true", @@ -1143,11 +1153,10 @@ impl Config { } Some(_) | None => FlycheckConfig::CargoCommand { command: self.data.checkOnSave_command.clone(), - target_triple: self - .data - .checkOnSave_target - .clone() - .or_else(|| self.data.cargo_target.clone()), + target_triples: match &self.data.checkOnSave_target.0[..] { + [] => self.data.cargo_target.clone().into_iter().collect(), + targets => targets.into(), + }, all_targets: self.data.checkOnSave_allTargets, no_default_features: self .data @@ -1200,10 +1209,15 @@ impl Config { hide_closure_initialization_hints: self .data .inlayHints_typeHints_hideClosureInitialization, - reborrow_hints: match self.data.inlayHints_reborrowHints_enable { - ReborrowHintsDef::Always => ide::ReborrowHints::Always, - ReborrowHintsDef::Never => ide::ReborrowHints::Never, - ReborrowHintsDef::Mutable => ide::ReborrowHints::MutableOnly, + adjustment_hints: match self.data.inlayHints_expressionAdjustmentHints_enable { + AdjustmentHintsDef::Always => ide::AdjustmentHints::Always, + AdjustmentHintsDef::Never => match self.data.inlayHints_reborrowHints_enable { + ReborrowHintsDef::Always | ReborrowHintsDef::Mutable => { + ide::AdjustmentHints::ReborrowOnly + } + ReborrowHintsDef::Never => ide::AdjustmentHints::Never, + }, + AdjustmentHintsDef::Reborrow => ide::AdjustmentHints::ReborrowOnly, }, binding_mode_hints: self.data.inlayHints_bindingModeHints_enable, param_names_for_lifetime_elision_hints: self @@ -1538,6 +1552,7 @@ mod de_unit_v { named_unit_variant!(all); named_unit_variant!(skip_trivial); named_unit_variant!(mutable); + named_unit_variant!(reborrow); named_unit_variant!(with_block); } @@ -1647,6 +1662,9 @@ enum InvocationStrategy { PerWorkspace, } +#[derive(Deserialize, Debug, Clone)] +struct CheckOnSaveTargets(#[serde(deserialize_with = "single_or_array")] Vec); + #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] enum InvocationLocation { @@ -1687,6 +1705,17 @@ enum ReborrowHintsDef { Mutable, } +#[derive(Deserialize, Debug, Clone)] +#[serde(untagged)] +enum AdjustmentHintsDef { + #[serde(deserialize_with = "true_or_always")] + Always, + #[serde(deserialize_with = "false_or_never")] + Never, + #[serde(deserialize_with = "de_unit_v::reborrow")] + Reborrow, +} + #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] enum FilesWatcherDef { @@ -1996,6 +2025,19 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "Only show mutable reborrow hints." ] }, + "AdjustmentHintsDef" => set! { + "type": "string", + "enum": [ + "always", + "never", + "reborrow" + ], + "enumDescriptions": [ + "Always show all adjustment hints.", + "Never show adjustment hints.", + "Only show auto borrow and dereference adjustment hints." + ] + }, "CargoFeaturesDef" => set! { "anyOf": [ { @@ -2084,6 +2126,17 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "The command will be executed in the project root." ], }, + "CheckOnSaveTargets" => set! { + "anyOf": [ + { + "type": "string", + }, + { + "type": "array", + "items": { "type": "string" } + }, + ], + }, _ => panic!("missing entry for {}: {}", ty, default), } diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index 189ac2fbf533..beb23c54c9f0 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -359,14 +359,15 @@ pub(crate) fn map_rust_diagnostic_to_lsp( .iter() .flat_map(|primary_span| { let primary_location = primary_location(config, workspace_root, primary_span, snap); - - let mut message = message.clone(); - if needs_primary_span_label { - if let Some(primary_span_label) = &primary_span.label { - format_to!(message, "\n{}", primary_span_label); + let message = { + let mut message = message.clone(); + if needs_primary_span_label { + if let Some(primary_span_label) = &primary_span.label { + format_to!(message, "\n{}", primary_span_label); + } } - } - + message + }; // Each primary diagnostic span may result in multiple LSP diagnostics. let mut diagnostics = Vec::new(); @@ -417,7 +418,7 @@ pub(crate) fn map_rust_diagnostic_to_lsp( message: message.clone(), related_information: Some(information_for_additional_diagnostic), tags: if tags.is_empty() { None } else { Some(tags.clone()) }, - data: None, + data: Some(serde_json::json!({ "rendered": rd.rendered })), }; diagnostics.push(MappedRustDiagnostic { url: secondary_location.uri, @@ -449,7 +450,7 @@ pub(crate) fn map_rust_diagnostic_to_lsp( } }, tags: if tags.is_empty() { None } else { Some(tags.clone()) }, - data: None, + data: Some(serde_json::json!({ "rendered": rd.rendered })), }, fix: None, }); @@ -534,7 +535,8 @@ mod tests { Config::new(workspace_root.to_path_buf(), ClientCapabilities::default()), ); let snap = state.snapshot(); - let actual = map_rust_diagnostic_to_lsp(&config, &diagnostic, workspace_root, &snap); + let mut actual = map_rust_diagnostic_to_lsp(&config, &diagnostic, workspace_root, &snap); + actual.iter_mut().for_each(|diag| diag.diagnostic.data = None); expect.assert_debug_eq(&actual) } diff --git a/crates/rust-analyzer/src/from_proto.rs b/crates/rust-analyzer/src/from_proto.rs index 936957bab488..dd433b0f4d31 100644 --- a/crates/rust-analyzer/src/from_proto.rs +++ b/crates/rust-analyzer/src/from_proto.rs @@ -42,8 +42,10 @@ pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> R pub(crate) fn text_range(line_index: &LineIndex, range: lsp_types::Range) -> Result { let start = offset(line_index, range.start)?; let end = offset(line_index, range.end)?; - let text_range = TextRange::new(start, end); - Ok(text_range) + match end < start { + true => Err(format_err!("Invalid Range").into()), + false => Ok(TextRange::new(start, end)), + } } pub(crate) fn file_id(snap: &GlobalStateSnapshot, url: &lsp_types::Url) -> Result { diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index 74277ff2e576..4e8bc8d6462c 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs @@ -100,7 +100,7 @@ pub(crate) struct GlobalState { /// the user just adds comments or whitespace to Cargo.toml, we do not want /// to invalidate any salsa caches. pub(crate) workspaces: Arc>, - pub(crate) fetch_workspaces_queue: OpQueue>>, + pub(crate) fetch_workspaces_queue: OpQueue>>>, pub(crate) fetch_build_data_queue: OpQueue<(Arc>, Vec>)>, diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 34795a8eb40a..d190a9f4e2ca 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -9,9 +9,9 @@ use std::{ use anyhow::Context; use ide::{ - AnnotationConfig, AssistKind, AssistResolveStrategy, FileId, FilePosition, FileRange, - HoverAction, HoverGotoTypeData, Query, RangeInfo, ReferenceCategory, Runnable, RunnableKind, - SingleResolve, SourceChange, TextEdit, + AnnotationConfig, AssistKind, AssistResolveStrategy, Cancellable, FileId, FilePosition, + FileRange, HoverAction, HoverGotoTypeData, Query, RangeInfo, ReferenceCategory, Runnable, + RunnableKind, SingleResolve, SourceChange, TextEdit, }; use ide_db::SymbolKind; use lsp_server::ErrorCode; @@ -556,7 +556,7 @@ pub(crate) fn handle_will_rename_files( if source_change.source_file_edits.is_empty() { Ok(None) } else { - to_proto::workspace_edit(&snap, source_change).map(Some) + Ok(Some(to_proto::workspace_edit(&snap, source_change)?)) } } @@ -1313,7 +1313,7 @@ pub(crate) fn handle_ssr( position, selections, )??; - to_proto::workspace_edit(&snap, source_change) + to_proto::workspace_edit(&snap, source_change).map_err(Into::into) } pub(crate) fn publish_diagnostics( @@ -1354,13 +1354,12 @@ pub(crate) fn handle_inlay_hints( ) -> Result>> { let _p = profile::span("handle_inlay_hints"); let document_uri = ¶ms.text_document.uri; - let file_id = from_proto::file_id(&snap, document_uri)?; - let line_index = snap.file_line_index(file_id)?; - let range = from_proto::file_range( + let FileRange { file_id, range } = from_proto::file_range( &snap, TextDocumentIdentifier::new(document_uri.to_owned()), params.range, )?; + let line_index = snap.file_line_index(file_id)?; let inlay_hints_config = snap.config.inlay_hints(); Ok(Some( snap.analysis @@ -1369,7 +1368,7 @@ pub(crate) fn handle_inlay_hints( .map(|it| { to_proto::inlay_hint(&snap, &line_index, inlay_hints_config.render_colons, it) }) - .collect::>>()?, + .collect::>>()?, )) } @@ -1426,7 +1425,7 @@ pub(crate) fn handle_call_hierarchy_prepare( .into_iter() .filter(|it| it.kind == Some(SymbolKind::Function)) .map(|it| to_proto::call_hierarchy_item(&snap, it)) - .collect::>>()?; + .collect::>>()?; Ok(Some(res)) } diff --git a/crates/rust-analyzer/src/line_index.rs b/crates/rust-analyzer/src/line_index.rs index 0d424b915703..2945dba12f25 100644 --- a/crates/rust-analyzer/src/line_index.rs +++ b/crates/rust-analyzer/src/line_index.rs @@ -27,10 +27,6 @@ pub(crate) enum LineEndings { impl LineEndings { /// Replaces `\r\n` with `\n` in-place in `src`. pub(crate) fn normalize(src: String) -> (String, LineEndings) { - if !src.as_bytes().contains(&b'\r') { - return (src, LineEndings::Unix); - } - // We replace `\r\n` with `\n` in-place, which doesn't break utf-8 encoding. // While we *can* call `as_mut_vec` and do surgery on the live string // directly, let's rather steal the contents of `src`. This makes the code @@ -39,10 +35,19 @@ impl LineEndings { let mut buf = src.into_bytes(); let mut gap_len = 0; let mut tail = buf.as_mut_slice(); + let mut crlf_seen = false; + + let find_crlf = |src: &[u8]| src.windows(2).position(|it| it == b"\r\n"); + loop { let idx = match find_crlf(&tail[gap_len..]) { - None => tail.len(), - Some(idx) => idx + gap_len, + None if crlf_seen => tail.len(), + // SAFETY: buf is unchanged and therefore still contains utf8 data + None => return (unsafe { String::from_utf8_unchecked(buf) }, LineEndings::Unix), + Some(idx) => { + crlf_seen = true; + idx + gap_len + } }; tail.copy_within(gap_len..idx, 0); tail = &mut tail[idx - gap_len..]; @@ -54,15 +59,48 @@ impl LineEndings { // Account for removed `\r`. // After `set_len`, `buf` is guaranteed to contain utf-8 again. - let new_len = buf.len() - gap_len; let src = unsafe { + let new_len = buf.len() - gap_len; buf.set_len(new_len); String::from_utf8_unchecked(buf) }; - return (src, LineEndings::Dos); - - fn find_crlf(src: &[u8]) -> Option { - src.windows(2).position(|it| it == b"\r\n") - } + (src, LineEndings::Dos) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn unix() { + let src = "a\nb\nc\n\n\n\n"; + let (res, endings) = LineEndings::normalize(src.into()); + assert_eq!(endings, LineEndings::Unix); + assert_eq!(res, src); + } + + #[test] + fn dos() { + let src = "\r\na\r\n\r\nb\r\nc\r\n\r\n\r\n\r\n"; + let (res, endings) = LineEndings::normalize(src.into()); + assert_eq!(endings, LineEndings::Dos); + assert_eq!(res, "\na\n\nb\nc\n\n\n\n"); + } + + #[test] + fn mixed() { + let src = "a\r\nb\r\nc\r\n\n\r\n\n"; + let (res, endings) = LineEndings::normalize(src.into()); + assert_eq!(endings, LineEndings::Dos); + assert_eq!(res, "a\nb\nc\n\n\n\n"); + } + + #[test] + fn none() { + let src = "abc"; + let (res, endings) = LineEndings::normalize(src.into()); + assert_eq!(endings, LineEndings::Unix); + assert_eq!(res, src); } } diff --git a/crates/rust-analyzer/src/lsp_utils.rs b/crates/rust-analyzer/src/lsp_utils.rs index c6a4db9a453a..0971dc36f3a5 100644 --- a/crates/rust-analyzer/src/lsp_utils.rs +++ b/crates/rust-analyzer/src/lsp_utils.rs @@ -1,5 +1,5 @@ //! Utilities for LSP-related boilerplate code. -use std::{ops::Range, sync::Arc}; +use std::{mem, ops::Range, sync::Arc}; use lsp_server::Notification; @@ -133,11 +133,37 @@ impl GlobalState { } pub(crate) fn apply_document_changes( - old_text: &mut String, - content_changes: Vec, -) { + file_contents: impl FnOnce() -> String, + mut content_changes: Vec, +) -> String { + // Skip to the last full document change, as it invalidates all previous changes anyways. + let mut start = content_changes + .iter() + .rev() + .position(|change| change.range.is_none()) + .map(|idx| content_changes.len() - idx - 1) + .unwrap_or(0); + + let mut text: String = match content_changes.get_mut(start) { + // peek at the first content change as an optimization + Some(lsp_types::TextDocumentContentChangeEvent { range: None, text, .. }) => { + let text = mem::take(text); + start += 1; + + // The only change is a full document update + if start == content_changes.len() { + return text; + } + text + } + Some(_) => file_contents(), + // we received no content changes + None => return file_contents(), + }; + let mut line_index = LineIndex { - index: Arc::new(ide::LineIndex::new(old_text)), + // the index will be overwritten in the bottom loop's first iteration + index: Arc::new(ide::LineIndex::new(&text)), // We don't care about line endings or offset encoding here. endings: LineEndings::Unix, encoding: PositionEncoding::Utf16, @@ -148,38 +174,20 @@ pub(crate) fn apply_document_changes( // Some clients (e.g. Code) sort the ranges in reverse. As an optimization, we // remember the last valid line in the index and only rebuild it if needed. // The VFS will normalize the end of lines to `\n`. - enum IndexValid { - All, - UpToLineExclusive(u32), - } - - impl IndexValid { - fn covers(&self, line: u32) -> bool { - match *self { - IndexValid::UpToLineExclusive(to) => to > line, - _ => true, - } - } - } - - let mut index_valid = IndexValid::All; + let mut index_valid = !0u32; for change in content_changes { - match change.range { - Some(range) => { - if !index_valid.covers(range.end.line) { - line_index.index = Arc::new(ide::LineIndex::new(old_text)); - } - index_valid = IndexValid::UpToLineExclusive(range.start.line); - if let Ok(range) = from_proto::text_range(&line_index, range) { - old_text.replace_range(Range::::from(range), &change.text); - } + // The None case can't happen as we have handled it above already + if let Some(range) = change.range { + if index_valid <= range.end.line { + *Arc::make_mut(&mut line_index.index) = ide::LineIndex::new(&text); } - None => { - *old_text = change.text; - index_valid = IndexValid::UpToLineExclusive(0); + index_valid = range.start.line; + if let Ok(range) = from_proto::text_range(&line_index, range) { + text.replace_range(Range::::from(range), &change.text); } } } + text } /// Checks that the edits inside the completion and the additional edits do not overlap. @@ -242,11 +250,10 @@ mod tests { }; } - let mut text = String::new(); - apply_document_changes(&mut text, vec![]); + let text = apply_document_changes(|| String::new(), vec![]); assert_eq!(text, ""); - apply_document_changes( - &mut text, + let text = apply_document_changes( + || text, vec![TextDocumentContentChangeEvent { range: None, range_length: None, @@ -254,39 +261,39 @@ mod tests { }], ); assert_eq!(text, "the"); - apply_document_changes(&mut text, c![0, 3; 0, 3 => " quick"]); + let text = apply_document_changes(|| text, c![0, 3; 0, 3 => " quick"]); assert_eq!(text, "the quick"); - apply_document_changes(&mut text, c![0, 0; 0, 4 => "", 0, 5; 0, 5 => " foxes"]); + let text = apply_document_changes(|| text, c![0, 0; 0, 4 => "", 0, 5; 0, 5 => " foxes"]); assert_eq!(text, "quick foxes"); - apply_document_changes(&mut text, c![0, 11; 0, 11 => "\ndream"]); + let text = apply_document_changes(|| text, c![0, 11; 0, 11 => "\ndream"]); assert_eq!(text, "quick foxes\ndream"); - apply_document_changes(&mut text, c![1, 0; 1, 0 => "have "]); + let text = apply_document_changes(|| text, c![1, 0; 1, 0 => "have "]); assert_eq!(text, "quick foxes\nhave dream"); - apply_document_changes( - &mut text, + let text = apply_document_changes( + || text, c![0, 0; 0, 0 => "the ", 1, 4; 1, 4 => " quiet", 1, 16; 1, 16 => "s\n"], ); assert_eq!(text, "the quick foxes\nhave quiet dreams\n"); - apply_document_changes(&mut text, c![0, 15; 0, 15 => "\n", 2, 17; 2, 17 => "\n"]); + let text = apply_document_changes(|| text, c![0, 15; 0, 15 => "\n", 2, 17; 2, 17 => "\n"]); assert_eq!(text, "the quick foxes\n\nhave quiet dreams\n\n"); - apply_document_changes( - &mut text, + let text = apply_document_changes( + || text, c![1, 0; 1, 0 => "DREAM", 2, 0; 2, 0 => "they ", 3, 0; 3, 0 => "DON'T THEY?"], ); assert_eq!(text, "the quick foxes\nDREAM\nthey have quiet dreams\nDON'T THEY?\n"); - apply_document_changes(&mut text, c![0, 10; 1, 5 => "", 2, 0; 2, 12 => ""]); + let text = apply_document_changes(|| text, c![0, 10; 1, 5 => "", 2, 0; 2, 12 => ""]); assert_eq!(text, "the quick \nthey have quiet dreams\n"); - text = String::from("❤️"); - apply_document_changes(&mut text, c![0, 0; 0, 0 => "a"]); + let text = String::from("❤️"); + let text = apply_document_changes(|| text, c![0, 0; 0, 0 => "a"]); assert_eq!(text, "a❤️"); - text = String::from("a\nb"); - apply_document_changes(&mut text, c![0, 1; 1, 0 => "\nțc", 0, 1; 1, 1 => "d"]); + let text = String::from("a\nb"); + let text = apply_document_changes(|| text, c![0, 1; 1, 0 => "\nțc", 0, 1; 1, 1 => "d"]); assert_eq!(text, "adcb"); - text = String::from("a\nb"); - apply_document_changes(&mut text, c![0, 1; 1, 0 => "ț\nc", 0, 2; 0, 2 => "c"]); + let text = String::from("a\nb"); + let text = apply_document_changes(|| text, c![0, 1; 1, 0 => "ț\nc", 0, 2; 0, 2 => "c"]); assert_eq!(text, "ațc\ncb"); } diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 7d10dc5d15b6..274588ce0e07 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -451,7 +451,7 @@ impl GlobalState { ProjectWorkspaceProgress::Begin => (Progress::Begin, None), ProjectWorkspaceProgress::Report(msg) => (Progress::Report, Some(msg)), ProjectWorkspaceProgress::End(workspaces) => { - self.fetch_workspaces_queue.op_completed(workspaces); + self.fetch_workspaces_queue.op_completed(Some(workspaces)); let old = Arc::clone(&self.workspaces); self.switch_workspaces("fetched workspace".to_string()); @@ -759,8 +759,10 @@ impl GlobalState { let vfs = &mut this.vfs.write().0; let file_id = vfs.file_id(&path).unwrap(); - let mut text = String::from_utf8(vfs.file_contents(file_id).to_vec()).unwrap(); - apply_document_changes(&mut text, params.content_changes); + let text = apply_document_changes( + || std::str::from_utf8(vfs.file_contents(file_id)).unwrap().into(), + params.content_changes, + ); vfs.set_file_contents(path, Some(text.into_bytes())); } diff --git a/crates/rust-analyzer/src/mem_docs.rs b/crates/rust-analyzer/src/mem_docs.rs index f86a0f66ad8d..45a1dab9772f 100644 --- a/crates/rust-analyzer/src/mem_docs.rs +++ b/crates/rust-analyzer/src/mem_docs.rs @@ -7,7 +7,7 @@ use vfs::VfsPath; /// Holds the set of in-memory documents. /// -/// For these document, there true contents is maintained by the client. It +/// For these document, their true contents is maintained by the client. It /// might be different from what's on disk. #[derive(Default, Clone)] pub(crate) struct MemDocs { @@ -19,6 +19,7 @@ impl MemDocs { pub(crate) fn contains(&self, path: &VfsPath) -> bool { self.mem_docs.contains_key(path) } + pub(crate) fn insert(&mut self, path: VfsPath, data: DocumentData) -> Result<(), ()> { self.added_or_removed = true; match self.mem_docs.insert(path, data) { @@ -26,6 +27,7 @@ impl MemDocs { None => Ok(()), } } + pub(crate) fn remove(&mut self, path: &VfsPath) -> Result<(), ()> { self.added_or_removed = true; match self.mem_docs.remove(path) { @@ -33,17 +35,21 @@ impl MemDocs { None => Err(()), } } + pub(crate) fn get(&self, path: &VfsPath) -> Option<&DocumentData> { self.mem_docs.get(path) } + pub(crate) fn get_mut(&mut self, path: &VfsPath) -> Option<&mut DocumentData> { // NB: don't set `self.added_or_removed` here, as that purposefully only // tracks changes to the key set. self.mem_docs.get_mut(path) } + pub(crate) fn iter(&self) -> impl Iterator { self.mem_docs.keys() } + pub(crate) fn take_changes(&mut self) -> bool { mem::replace(&mut self.added_or_removed, false) } diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index e1f651786dee..fcfe4be0b8ce 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -106,6 +106,14 @@ impl GlobalState { status.health = lsp_ext::Health::Error; status.message = Some(error) } + + if self.config.linked_projects().is_empty() + && self.config.detached_files().is_empty() + && self.config.notifications().cargo_toml_not_found + { + status.health = lsp_ext::Health::Warning; + status.message = Some("Workspace reload required".to_string()) + } status } @@ -198,12 +206,9 @@ impl GlobalState { self.show_and_log_error("failed to run build scripts".to_string(), Some(error)); } - let workspaces = self - .fetch_workspaces_queue - .last_op_result() - .iter() - .filter_map(|res| res.as_ref().ok().cloned()) - .collect::>(); + let Some(workspaces) = self.fetch_workspaces_queue.last_op_result() else { return; }; + let workspaces = + workspaces.iter().filter_map(|res| res.as_ref().ok().cloned()).collect::>(); fn eq_ignore_build_data<'a>( left: &'a ProjectWorkspace, @@ -300,9 +305,6 @@ impl GlobalState { let files_config = self.config.files(); let project_folders = ProjectFolders::new(&self.workspaces, &files_config.exclude); - let standalone_server_name = - format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX); - if self.proc_macro_clients.is_empty() { if let Some((path, path_manually_set)) = self.config.proc_macro_srv() { tracing::info!("Spawning proc-macro servers"); @@ -310,40 +312,17 @@ impl GlobalState { .workspaces .iter() .map(|ws| { - let (path, args) = if path_manually_set { + let (path, args): (_, &[_]) = if path_manually_set { tracing::debug!( "Pro-macro server path explicitly set: {}", path.display() ); - (path.clone(), vec![]) + (path.clone(), &[]) } else { - let mut sysroot_server = None; - if let ProjectWorkspace::Cargo { sysroot, .. } - | ProjectWorkspace::Json { sysroot, .. } = ws - { - if let Some(sysroot) = sysroot.as_ref() { - let server_path = sysroot - .root() - .join("libexec") - .join(&standalone_server_name); - if std::fs::metadata(&server_path).is_ok() { - tracing::debug!( - "Sysroot proc-macro server exists at {}", - server_path.display() - ); - sysroot_server = Some(server_path); - } else { - tracing::debug!( - "Sysroot proc-macro server does not exist at {}", - server_path.display() - ); - } - } + match ws.find_sysroot_proc_macro_srv() { + Some(server_path) => (server_path, &[]), + None => (path.clone(), &["proc-macro"]), } - sysroot_server.map_or_else( - || (path.clone(), vec!["proc-macro".to_owned()]), - |path| (path, vec![]), - ) }; tracing::info!(?args, "Using proc-macro server at {}", path.display(),); @@ -427,9 +406,14 @@ impl GlobalState { fn fetch_workspace_error(&self) -> Result<(), String> { let mut buf = String::new(); - for ws in self.fetch_workspaces_queue.last_op_result() { - if let Err(err) = ws { - stdx::format_to!(buf, "rust-analyzer failed to load workspace: {:#}\n", err); + let Some(last_op_result) = self.fetch_workspaces_queue.last_op_result() else { return Ok(()) }; + if last_op_result.is_empty() { + stdx::format_to!(buf, "rust-analyzer failed to discover workspace"); + } else { + for ws in last_op_result { + if let Err(err) = ws { + stdx::format_to!(buf, "rust-analyzer failed to load workspace: {:#}\n", err); + } } } diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 6c84a2069cd5..81cc1952ba5c 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -24,7 +24,7 @@ use crate::{ line_index::{LineEndings, LineIndex, PositionEncoding}, lsp_ext, lsp_utils::invalid_params_error, - semantic_tokens, Result, + semantic_tokens, }; pub(crate) fn position(line_index: &LineIndex, offset: TextSize) -> lsp_types::Position { @@ -429,7 +429,7 @@ pub(crate) fn inlay_hint( line_index: &LineIndex, render_colons: bool, mut inlay_hint: InlayHint, -) -> Result { +) -> Cancellable { match inlay_hint.kind { InlayKind::ParameterHint if render_colons => inlay_hint.label.append_str(":"), InlayKind::TypeHint if render_colons => inlay_hint.label.prepend_str(": "), @@ -440,32 +440,35 @@ pub(crate) fn inlay_hint( Ok(lsp_types::InlayHint { position: match inlay_hint.kind { // before annotated thing - InlayKind::ParameterHint - | InlayKind::ImplicitReborrowHint - | InlayKind::BindingModeHint => position(line_index, inlay_hint.range.start()), + InlayKind::ParameterHint | InlayKind::AdjustmentHint | InlayKind::BindingModeHint => { + position(line_index, inlay_hint.range.start()) + } // after annotated thing InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint | InlayKind::ChainingHint | InlayKind::GenericParamListHint + | InlayKind::AdjustmentHintClosingParenthesis | InlayKind::LifetimeHint | InlayKind::ClosingBraceHint => position(line_index, inlay_hint.range.end()), }, padding_left: Some(match inlay_hint.kind { InlayKind::TypeHint => !render_colons, InlayKind::ChainingHint | InlayKind::ClosingBraceHint => true, - InlayKind::BindingModeHint + InlayKind::AdjustmentHintClosingParenthesis + | InlayKind::BindingModeHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint - | InlayKind::ImplicitReborrowHint + | InlayKind::AdjustmentHint | InlayKind::LifetimeHint | InlayKind::ParameterHint => false, }), padding_right: Some(match inlay_hint.kind { - InlayKind::ChainingHint + InlayKind::AdjustmentHintClosingParenthesis + | InlayKind::ChainingHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint - | InlayKind::ImplicitReborrowHint + | InlayKind::AdjustmentHint | InlayKind::TypeHint | InlayKind::ClosingBraceHint => false, InlayKind::BindingModeHint => inlay_hint.label.as_simple_str() != Some("&"), @@ -476,10 +479,11 @@ pub(crate) fn inlay_hint( InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint | InlayKind::ChainingHint => { Some(lsp_types::InlayHintKind::TYPE) } - InlayKind::BindingModeHint + InlayKind::AdjustmentHintClosingParenthesis + | InlayKind::BindingModeHint | InlayKind::GenericParamListHint | InlayKind::LifetimeHint - | InlayKind::ImplicitReborrowHint + | InlayKind::AdjustmentHint | InlayKind::ClosingBraceHint => None, }, text_edits: None, @@ -518,7 +522,7 @@ pub(crate) fn inlay_hint( fn inlay_hint_label( snap: &GlobalStateSnapshot, label: InlayHintLabel, -) -> Result { +) -> Cancellable { Ok(match label.as_simple_str() { Some(s) => lsp_types::InlayHintLabel::String(s.into()), None => lsp_types::InlayHintLabel::LabelParts( @@ -536,7 +540,7 @@ fn inlay_hint_label( command: None, }) }) - .collect::>>()?, + .collect::>>()?, ), }) } @@ -794,7 +798,7 @@ pub(crate) fn optional_versioned_text_document_identifier( pub(crate) fn location( snap: &GlobalStateSnapshot, frange: FileRange, -) -> Result { +) -> Cancellable { let url = url(snap, frange.file_id); let line_index = snap.file_line_index(frange.file_id)?; let range = range(&line_index, frange.range); @@ -806,7 +810,7 @@ pub(crate) fn location( pub(crate) fn location_from_nav( snap: &GlobalStateSnapshot, nav: NavigationTarget, -) -> Result { +) -> Cancellable { let url = url(snap, nav.file_id); let line_index = snap.file_line_index(nav.file_id)?; let range = range(&line_index, nav.full_range); @@ -818,7 +822,7 @@ pub(crate) fn location_link( snap: &GlobalStateSnapshot, src: Option, target: NavigationTarget, -) -> Result { +) -> Cancellable { let origin_selection_range = match src { Some(src) => { let line_index = snap.file_line_index(src.file_id)?; @@ -840,7 +844,7 @@ pub(crate) fn location_link( fn location_info( snap: &GlobalStateSnapshot, target: NavigationTarget, -) -> Result<(lsp_types::Url, lsp_types::Range, lsp_types::Range)> { +) -> Cancellable<(lsp_types::Url, lsp_types::Range, lsp_types::Range)> { let line_index = snap.file_line_index(target.file_id)?; let target_uri = url(snap, target.file_id); @@ -854,12 +858,12 @@ pub(crate) fn goto_definition_response( snap: &GlobalStateSnapshot, src: Option, targets: Vec, -) -> Result { +) -> Cancellable { if snap.config.location_link() { let links = targets .into_iter() .map(|nav| location_link(snap, src, nav)) - .collect::>>()?; + .collect::>>()?; Ok(links.into()) } else { let locations = targets @@ -867,7 +871,7 @@ pub(crate) fn goto_definition_response( .map(|nav| { location(snap, FileRange { file_id: nav.file_id, range: nav.focus_or_full_range() }) }) - .collect::>>()?; + .collect::>>()?; Ok(locations.into()) } } @@ -881,7 +885,7 @@ pub(crate) fn snippet_text_document_edit( is_snippet: bool, file_id: FileId, edit: TextEdit, -) -> Result { +) -> Cancellable { let text_document = optional_versioned_text_document_identifier(snap, file_id); let line_index = snap.file_line_index(file_id)?; let mut edits: Vec<_> = @@ -958,7 +962,7 @@ pub(crate) fn snippet_text_document_ops( pub(crate) fn snippet_workspace_edit( snap: &GlobalStateSnapshot, source_change: SourceChange, -) -> Result { +) -> Cancellable { let mut document_changes: Vec = Vec::new(); for op in source_change.file_system_edits { @@ -995,7 +999,7 @@ pub(crate) fn snippet_workspace_edit( pub(crate) fn workspace_edit( snap: &GlobalStateSnapshot, source_change: SourceChange, -) -> Result { +) -> Cancellable { assert!(!source_change.is_snippet); snippet_workspace_edit(snap, source_change).map(|it| it.into()) } @@ -1048,7 +1052,7 @@ impl From pub(crate) fn call_hierarchy_item( snap: &GlobalStateSnapshot, target: NavigationTarget, -) -> Result { +) -> Cancellable { let name = target.name.to_string(); let detail = target.description.clone(); let kind = target.kind.map(symbol_kind).unwrap_or(lsp_types::SymbolKind::FUNCTION); @@ -1080,7 +1084,7 @@ pub(crate) fn code_action( snap: &GlobalStateSnapshot, assist: Assist, resolve_data: Option<(usize, lsp_types::CodeActionParams)>, -) -> Result { +) -> Cancellable { let mut res = lsp_ext::CodeAction { title: assist.label.to_string(), group: assist.group.filter(|_| snap.config.code_action_group()).map(|gr| gr.0), @@ -1113,13 +1117,13 @@ pub(crate) fn code_action( pub(crate) fn runnable( snap: &GlobalStateSnapshot, runnable: Runnable, -) -> Result { +) -> Cancellable { let config = snap.config.runnables(); let spec = CargoTargetSpec::for_file(snap, runnable.nav.file_id)?; let workspace_root = spec.as_ref().map(|it| it.workspace_root.clone()); let target = spec.as_ref().map(|s| s.target.clone()); let (cargo_args, executable_args) = - CargoTargetSpec::runnable_args(snap, spec, &runnable.kind, &runnable.cfg)?; + CargoTargetSpec::runnable_args(snap, spec, &runnable.kind, &runnable.cfg); let label = runnable.label(target); let location = location_link(snap, None, runnable.nav)?; @@ -1142,7 +1146,7 @@ pub(crate) fn code_lens( acc: &mut Vec, snap: &GlobalStateSnapshot, annotation: Annotation, -) -> Result<()> { +) -> Cancellable<()> { let client_commands_config = snap.config.client_commands(); match annotation.kind { AnnotationKind::Runnable(run) => { diff --git a/crates/sourcegen/Cargo.toml b/crates/sourcegen/Cargo.toml index e75867e2d81c..593dc4e55b21 100644 --- a/crates/sourcegen/Cargo.toml +++ b/crates/sourcegen/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/stdx/Cargo.toml b/crates/stdx/Cargo.toml index e0657ab0f6d1..f7b7d09640ff 100644 --- a/crates/stdx/Cargo.toml +++ b/crates/stdx/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false @@ -16,7 +16,7 @@ always-assert = { version = "0.1.2", features = ["log"] } # Think twice before adding anything here [target.'cfg(windows)'.dependencies] -miow = "0.4.0" +miow = "0.5.0" winapi = { version = "0.3.9", features = ["winerror"] } [features] diff --git a/crates/syntax/Cargo.toml b/crates/syntax/Cargo.toml index 1ef903371cf8..00743cca5593 100644 --- a/crates/syntax/Cargo.toml +++ b/crates/syntax/Cargo.toml @@ -5,7 +5,7 @@ description = "Comment and whitespace preserving parser for the Rust language" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/rust-analyzer" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/syntax/fuzz/Cargo.toml b/crates/syntax/fuzz/Cargo.toml index ba2f515b0bc1..f295c40065db 100644 --- a/crates/syntax/fuzz/Cargo.toml +++ b/crates/syntax/fuzz/Cargo.toml @@ -4,7 +4,7 @@ name = "syntax-fuzz" version = "0.0.1" publish = false edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [package.metadata] cargo-fuzz = true diff --git a/crates/syntax/rust.ungram b/crates/syntax/rust.ungram index 5379732ac6c3..0a0cb0290d6c 100644 --- a/crates/syntax/rust.ungram +++ b/crates/syntax/rust.ungram @@ -239,8 +239,11 @@ Static = Trait = Attr* Visibility? 'unsafe'? 'auto'? - 'trait' Name GenericParamList? (':' TypeBoundList?)? WhereClause? - AssocItemList + 'trait' Name GenericParamList? + ( + (':' TypeBoundList?)? WhereClause? AssocItemList + | '=' TypeBoundList? WhereClause? ';' + ) AssocItemList = '{' Attr* AssocItem* '}' diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs index 6cfb98d92fcf..2ea715f47fb2 100644 --- a/crates/syntax/src/ast/generated/nodes.rs +++ b/crates/syntax/src/ast/generated/nodes.rs @@ -407,6 +407,8 @@ impl Trait { pub fn auto_token(&self) -> Option { support::token(&self.syntax, T![auto]) } pub fn trait_token(&self) -> Option { support::token(&self.syntax, T![trait]) } pub fn assoc_item_list(&self) -> Option { support::child(&self.syntax) } + pub fn eq_token(&self) -> Option { support::token(&self.syntax, T![=]) } + pub fn semicolon_token(&self) -> Option { support::token(&self.syntax, T![;]) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] diff --git a/crates/syntax/src/ast/token_ext.rs b/crates/syntax/src/ast/token_ext.rs index ba72e64425b2..8990f7a7d4e8 100644 --- a/crates/syntax/src/ast/token_ext.rs +++ b/crates/syntax/src/ast/token_ext.rs @@ -209,17 +209,19 @@ impl ast::String { let text = &text[self.text_range_between_quotes()? - self.syntax().text_range().start()]; let mut buf = String::new(); - let mut text_iter = text.chars(); + let mut prev_end = 0; let mut has_error = false; unescape_literal(text, Mode::Str, &mut |char_range, unescaped_char| match ( unescaped_char, buf.capacity() == 0, ) { (Ok(c), false) => buf.push(c), - (Ok(c), true) if char_range.len() == 1 && Some(c) == text_iter.next() => (), + (Ok(_), true) if char_range.len() == 1 && char_range.start == prev_end => { + prev_end = char_range.end + } (Ok(c), true) => { buf.reserve_exact(text.len()); - buf.push_str(&text[..char_range.start]); + buf.push_str(&text[..prev_end]); buf.push(c); } (Err(_), _) => has_error = true, @@ -252,17 +254,19 @@ impl ast::ByteString { let text = &text[self.text_range_between_quotes()? - self.syntax().text_range().start()]; let mut buf: Vec = Vec::new(); - let mut text_iter = text.chars(); + let mut prev_end = 0; let mut has_error = false; unescape_literal(text, Mode::ByteStr, &mut |char_range, unescaped_char| match ( unescaped_char, buf.capacity() == 0, ) { (Ok(c), false) => buf.push(c as u8), - (Ok(c), true) if char_range.len() == 1 && Some(c) == text_iter.next() => (), + (Ok(_), true) if char_range.len() == 1 && char_range.start == prev_end => { + prev_end = char_range.end + } (Ok(c), true) => { buf.reserve_exact(text.len()); - buf.extend_from_slice(text[..char_range.start].as_bytes()); + buf.extend_from_slice(text[..prev_end].as_bytes()); buf.push(c as u8); } (Err(_), _) => has_error = true, @@ -445,6 +449,36 @@ mod tests { check_string_value(r"\foobar", None); check_string_value(r"\nfoobar", "\nfoobar"); check_string_value(r"C:\\Windows\\System32\\", "C:\\Windows\\System32\\"); + check_string_value(r"\x61bcde", "abcde"); + check_string_value( + r"a\ +bcde", "abcde", + ); + } + + fn check_byte_string_value<'a, const N: usize>( + lit: &str, + expected: impl Into>, + ) { + assert_eq!( + ast::ByteString { syntax: make::tokens::literal(&format!("b\"{}\"", lit)) } + .value() + .as_deref(), + expected.into().map(|value| &value[..]) + ); + } + + #[test] + fn test_byte_string_escape() { + check_byte_string_value(r"foobar", b"foobar"); + check_byte_string_value(r"\foobar", None::<&[u8; 0]>); + check_byte_string_value(r"\nfoobar", b"\nfoobar"); + check_byte_string_value(r"C:\\Windows\\System32\\", b"C:\\Windows\\System32\\"); + check_byte_string_value(r"\x61bcde", b"abcde"); + check_byte_string_value( + r"a\ +bcde", b"abcde", + ); } #[test] diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs index 70b54843dbaa..712ef5f63b65 100644 --- a/crates/syntax/src/tests/sourcegen_ast.rs +++ b/crates/syntax/src/tests/sourcegen_ast.rs @@ -86,7 +86,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String { .traits .iter() .filter(|trait_name| { - // Loops have two expressions so this might collide, therefor manual impl it + // Loops have two expressions so this might collide, therefore manual impl it node.name != "ForExpr" && node.name != "WhileExpr" || trait_name.as_str() != "HasLoopBody" }) diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index cceafe04e377..1047373b1c75 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/text-edit/Cargo.toml b/crates/text-edit/Cargo.toml index 7a90d64a98ba..8df7e1af6116 100644 --- a/crates/text-edit/Cargo.toml +++ b/crates/text-edit/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/toolchain/Cargo.toml b/crates/toolchain/Cargo.toml index 3e0f31f19c50..a6a3ae742aeb 100644 --- a/crates/toolchain/Cargo.toml +++ b/crates/toolchain/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/tt/Cargo.toml b/crates/tt/Cargo.toml index 52dfb8608041..4f2103f3a97f 100644 --- a/crates/tt/Cargo.toml +++ b/crates/tt/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/vfs-notify/Cargo.toml b/crates/vfs-notify/Cargo.toml index df5dc24e2cd1..061f3c157a88 100644 --- a/crates/vfs-notify/Cargo.toml +++ b/crates/vfs-notify/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/crates/vfs/Cargo.toml b/crates/vfs/Cargo.toml index d7549a284153..e55bf6f293c4 100644 --- a/crates/vfs/Cargo.toml +++ b/crates/vfs/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" description = "TBD" license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [lib] doctest = false diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index e3a4fdfda90c..a07cf036e060 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md @@ -481,7 +481,7 @@ It is not cheap enough to enable in prod, and this is a bug which should be fixe rust-analyzer strives to be as configurable as possible while offering reasonable defaults where no configuration exists yet. The rule of thumb is to enable most features by default unless they are buggy or degrade performance too much. There will always be features that some people find more annoying than helpful, so giving the users the ability to tweak or disable these is a big part of offering a good user experience. -Enabling them by default is a matter of discoverability, as many users end up don't know about some features even though they are presented in the manual. +Enabling them by default is a matter of discoverability, as many users don't know about some features even though they are presented in the manual. Mind the code--architecture gap: at the moment, we are using fewer feature flags than we really should. ### Serialization @@ -492,8 +492,8 @@ If a type is serializable, then it is a part of some IPC boundary. You often don't control the other side of this boundary, so changing serializable types is hard. For this reason, the types in `ide`, `base_db` and below are not serializable by design. -If such types need to cross an IPC boundary, then the client of rust-analyzer needs to provide custom, client-specific serialization format. +If such types need to cross an IPC boundary, then the client of rust-analyzer needs to provide a custom, client-specific serialization format. This isolates backwards compatibility and migration concerns to a specific client. -For example, `rust-project.json` is it's own format -- it doesn't include `CrateGraph` as is. +For example, `rust-project.json` is its own format -- it doesn't include `CrateGraph` as is. Instead, it creates a `CrateGraph` by calling appropriate constructing functions. diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 36794efe4272..57f950034cbb 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -173,7 +173,7 @@ Whether to pass `--no-default-features` to Cargo. Defaults to -- Override the command rust-analyzer uses instead of `cargo check` for diagnostics on save. The command is required to output json and -should therefor include `--message-format=json` or a similar option. +should therefore include `--message-format=json` or a similar option. If you're changing this because you're using some tool wrapping Cargo, you might also want to change @@ -190,11 +190,15 @@ cargo check --workspace --message-format=json --all-targets ``` . -- -[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`):: +[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `[]`):: + -- -Check for a specific target. Defaults to -`#rust-analyzer.cargo.target#`. +Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + +Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. +`["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + +Aliased as `"checkOnSave.targets"`. -- [[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`):: + @@ -450,6 +454,11 @@ to always show them). -- Whether to show inlay type hints for return types of closures. -- +[[rust-analyzer.inlayHints.expressionAdjustmentHints.enable]]rust-analyzer.inlayHints.expressionAdjustmentHints.enable (default: `"never"`):: ++ +-- +Whether to show inlay hints for type adjustments. +-- [[rust-analyzer.inlayHints.lifetimeElisionHints.enable]]rust-analyzer.inlayHints.lifetimeElisionHints.enable (default: `"never"`):: + -- @@ -474,7 +483,8 @@ site. [[rust-analyzer.inlayHints.reborrowHints.enable]]rust-analyzer.inlayHints.reborrowHints.enable (default: `"never"`):: + -- -Whether to show inlay type hints for compiler inserted reborrows. +Whether to show inlay hints for compiler inserted reborrows. +This setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#. -- [[rust-analyzer.inlayHints.renderColons]]rust-analyzer.inlayHints.renderColons (default: `true`):: + diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index 49500e390a50..1a4c70575b03 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc @@ -367,7 +367,7 @@ if executable('rust-analyzer') endif ---- -There is no dedicated UI for the server configuration, so you would need to send any options as a value of the `initialization_options` field, as described in the <<_configuration,Configuration>> section. +There is no dedicated UI for the server configuration, so you would need to send any options as a value of the `initialization_options` field, as described in the <> section. Here is an example of how to enable the proc-macro support: [source,vim] diff --git a/editors/code/package.json b/editors/code/package.json index 1a97a9c08937..c4d4e428ea07 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -396,6 +396,11 @@ "default": true, "type": "boolean" }, + "rust-analyzer.diagnostics.previewRustcOutput": { + "markdownDescription": "Whether to show the main part of the rendered rustc output of a diagnostic message.", + "default": false, + "type": "boolean" + }, "$generated-start": {}, "rust-analyzer.assist.emitMustUse": { "markdownDescription": "Whether to insert #[must_use] when generating `as_` methods\nfor enum variants.", @@ -623,7 +628,7 @@ ] }, "rust-analyzer.checkOnSave.overrideCommand": { - "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefor include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", "default": null, "type": [ "null", @@ -634,11 +639,18 @@ } }, "rust-analyzer.checkOnSave.target": { - "markdownDescription": "Check for a specific target. Defaults to\n`#rust-analyzer.cargo.target#`.", - "default": null, - "type": [ - "null", - "string" + "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", + "default": [], + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } ] }, "rust-analyzer.completion.autoimport.enable": { @@ -935,6 +947,21 @@ "Only show type hints for return types of closures with blocks." ] }, + "rust-analyzer.inlayHints.expressionAdjustmentHints.enable": { + "markdownDescription": "Whether to show inlay hints for type adjustments.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "reborrow" + ], + "enumDescriptions": [ + "Always show all adjustment hints.", + "Never show adjustment hints.", + "Only show auto borrow and dereference adjustment hints." + ] + }, "rust-analyzer.inlayHints.lifetimeElisionHints.enable": { "markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.", "default": "never", @@ -970,7 +997,7 @@ "type": "boolean" }, "rust-analyzer.inlayHints.reborrowHints.enable": { - "markdownDescription": "Whether to show inlay type hints for compiler inserted reborrows.", + "markdownDescription": "Whether to show inlay hints for compiler inserted reborrows.\nThis setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#.", "default": "never", "type": "string", "enum": [ @@ -1276,6 +1303,11 @@ "$generated-end": {} } }, + "configurationDefaults": { + "explorer.fileNesting.patterns": { + "Cargo.toml": "Cargo.lock" + } + }, "problemPatterns": [ { "name": "rustc", diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index fb667619c86b..23e039722ee3 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -4,7 +4,7 @@ import * as ra from "../src/lsp_ext"; import * as Is from "vscode-languageclient/lib/common/utils/is"; import { assert } from "./util"; import { WorkspaceEdit } from "vscode"; -import { substituteVSCodeVariables } from "./config"; +import { Config, substituteVSCodeVariables } from "./config"; import { randomUUID } from "crypto"; export interface Env { @@ -66,7 +66,8 @@ export async function createClient( traceOutputChannel: vscode.OutputChannel, outputChannel: vscode.OutputChannel, initializationOptions: vscode.WorkspaceConfiguration, - serverOptions: lc.ServerOptions + serverOptions: lc.ServerOptions, + config: Config ): Promise { const clientOptions: lc.LanguageClientOptions = { documentSelector: [{ scheme: "file", language: "rust" }], @@ -99,6 +100,43 @@ export async function createClient( } }, }, + async handleDiagnostics( + uri: vscode.Uri, + diagnostics: vscode.Diagnostic[], + next: lc.HandleDiagnosticsSignature + ) { + const preview = config.previewRustcOutput; + diagnostics.forEach((diag, idx) => { + // Abuse the fact that VSCode leaks the LSP diagnostics data field through the + // Diagnostic class, if they ever break this we are out of luck and have to go + // back to the worst diagnostics experience ever:) + + // We encode the rendered output of a rustc diagnostic in the rendered field of + // the data payload of the lsp diagnostic. If that field exists, overwrite the + // diagnostic code such that clicking it opens the diagnostic in a readonly + // text editor for easy inspection + const rendered = (diag as unknown as { data?: { rendered?: string } }).data + ?.rendered; + if (rendered) { + if (preview) { + const index = rendered.match(/^(note|help):/m)?.index || 0; + diag.message = rendered + .substring(0, index) + .replace(/^ -->[^\n]+\n/m, ""); + } + diag.code = { + target: vscode.Uri.from({ + scheme: "rust-analyzer-diagnostics-view", + path: "/diagnostic message", + fragment: uri.toString(), + query: idx.toString(), + }), + value: "Click for full compiler diagnostic", + }; + } + }); + return next(uri, diagnostics); + }, async provideHover( document: vscode.TextDocument, position: vscode.Position, diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 632a7d86faa3..d8dbd1df16df 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -238,6 +238,9 @@ export class Config { gotoTypeDef: this.get("hover.actions.gotoTypeDef.enable"), }; } + get previewRustcOutput() { + return this.get("diagnostics.previewRustcOutput"); + } } const VarRegex = new RegExp(/\$\{(.+?)\}/g); diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts index 3e366525ee29..d6cee5c8fc61 100644 --- a/editors/code/src/ctx.ts +++ b/editors/code/src/ctx.ts @@ -179,7 +179,8 @@ export class Ctx { this.traceOutputChannel, this.outputChannel, initializationOptions, - serverOptions + serverOptions, + this.config ); this.pushClientCleanup( this._client.onNotification(ra.serverStatus, (params) => diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index e76b657c1bfb..25f1e83d109c 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -48,6 +48,30 @@ async function activateServer(ctx: Ctx): Promise { ctx.pushExtCleanup(activateTaskProvider(ctx.config)); } + ctx.pushExtCleanup( + vscode.workspace.registerTextDocumentContentProvider( + "rust-analyzer-diagnostics-view", + new (class implements vscode.TextDocumentContentProvider { + async provideTextDocumentContent(uri: vscode.Uri): Promise { + const diags = ctx.client?.diagnostics?.get( + vscode.Uri.parse(uri.fragment, true) + ); + if (!diags) { + return "Unable to find original rustc diagnostic"; + } + + const diag = diags[parseInt(uri.query)]; + if (!diag) { + return "Unable to find original rustc diagnostic"; + } + const rendered = (diag as unknown as { data?: { rendered?: string } }).data + ?.rendered; + return rendered ?? "Unable to find original rustc diagnostic"; + } + })() + ) + ); + vscode.workspace.onDidChangeWorkspaceFolders( async (_) => ctx.onWorkspaceFolderChanges(), null, diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 0be0bf920de9..95e27beab5dc 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" publish = false license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.57" +rust-version = "1.65" [dependencies] anyhow = "1.0.62" From 2300c9de83d0dbff1f27546a04f12a1ebe59c9e3 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 24 Nov 2022 10:21:19 +0100 Subject: [PATCH 042/478] Handle sysroot config in detached-files workspaces --- crates/project-model/src/workspace.rs | 58 ++++++++++++++++++--------- crates/rust-analyzer/src/reload.rs | 6 ++- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 4a2f468de725..d263912328fe 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -93,7 +93,7 @@ pub enum ProjectWorkspace { // // /// Project with a set of disjoint files, not belonging to any particular workspace. /// Backed by basic sysroot crates for basic completion and highlighting. - DetachedFiles { files: Vec, sysroot: Sysroot, rustc_cfg: Vec }, + DetachedFiles { files: Vec, sysroot: Option, rustc_cfg: Vec }, } impl fmt::Debug for ProjectWorkspace { @@ -133,7 +133,7 @@ impl fmt::Debug for ProjectWorkspace { ProjectWorkspace::DetachedFiles { files, sysroot, rustc_cfg } => f .debug_struct("DetachedFiles") .field("n_files", &files.len()) - .field("n_sysroot_crates", &sysroot.crates().len()) + .field("sysroot", &sysroot.is_some()) .field("n_rustc_cfg", &rustc_cfg.len()) .finish(), } @@ -191,10 +191,7 @@ impl ProjectWorkspace { let sysroot = match &config.sysroot { Some(RustcSource::Path(path)) => { Some(Sysroot::with_sysroot_dir(path.clone()).with_context(|| { - format!( - "Failed to find sysroot for Cargo.toml file {}.", - cargo_toml.display() - ) + format!("Failed to find sysroot at {}.", path.display()) })?) } Some(RustcSource::Discover) => Some( @@ -291,14 +288,29 @@ impl ProjectWorkspace { Ok(ProjectWorkspace::Json { project: project_json, sysroot, rustc_cfg }) } - pub fn load_detached_files(detached_files: Vec) -> Result { - let sysroot = Sysroot::discover( - detached_files - .first() - .and_then(|it| it.parent()) - .ok_or_else(|| format_err!("No detached files to load"))?, - &Default::default(), - )?; + pub fn load_detached_files( + detached_files: Vec, + config: &CargoConfig, + ) -> Result { + let sysroot = match &config.sysroot { + Some(RustcSource::Path(path)) => Some( + Sysroot::with_sysroot_dir(path.clone()) + .with_context(|| format!("Failed to find sysroot at {}.", path.display()))?, + ), + Some(RustcSource::Discover) => { + let dir = &detached_files + .first() + .and_then(|it| it.parent()) + .ok_or_else(|| format_err!("No detached files to load"))?; + Some(Sysroot::discover(dir, &config.extra_env).with_context(|| { + format!("Failed to find sysroot in {}. Is rust-src installed?", dir.display()) + })?) + } + None => None, + }; + if let Some(sysroot) = &sysroot { + tracing::info!(src_root = %sysroot.src_root().display(), root = %sysroot.root().display(), "Using sysroot"); + } let rustc_cfg = rustc_cfg::get(None, None, &Default::default()); Ok(ProjectWorkspace::DetachedFiles { files: detached_files, sysroot, rustc_cfg }) } @@ -464,21 +476,25 @@ impl ProjectWorkspace { include: vec![detached_file.clone()], exclude: Vec::new(), }) - .chain(mk_sysroot(Some(sysroot))) + .chain(mk_sysroot(sysroot.as_ref())) .collect(), } } pub fn n_packages(&self) -> usize { match self { - ProjectWorkspace::Json { project, .. } => project.n_crates(), + ProjectWorkspace::Json { project, sysroot, .. } => { + let sysroot_package_len = sysroot.as_ref().map_or(0, |it| it.crates().len()); + sysroot_package_len + project.n_crates() + } ProjectWorkspace::Cargo { cargo, sysroot, rustc, .. } => { let rustc_package_len = rustc.as_ref().map_or(0, |it| it.packages().len()); let sysroot_package_len = sysroot.as_ref().map_or(0, |it| it.crates().len()); cargo.packages().len() + sysroot_package_len + rustc_package_len } ProjectWorkspace::DetachedFiles { sysroot, files, .. } => { - sysroot.crates().len() + files.len() + let sysroot_package_len = sysroot.as_ref().map_or(0, |it| it.crates().len()); + sysroot_package_len + files.len() } } } @@ -790,12 +806,14 @@ fn detached_files_to_crate_graph( rustc_cfg: Vec, load: &mut dyn FnMut(&AbsPath) -> Option, detached_files: &[AbsPathBuf], - sysroot: &Sysroot, + sysroot: &Option, ) -> CrateGraph { let _p = profile::span("detached_files_to_crate_graph"); let mut crate_graph = CrateGraph::default(); - let (public_deps, _libproc_macro) = - sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load); + let (public_deps, _libproc_macro) = match sysroot { + Some(sysroot) => sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load), + None => (SysrootPublicDeps::default(), None), + }; let mut cfg_options = CfgOptions::default(); cfg_options.extend(rustc_cfg); diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index aa0510a4ea6a..0306b6640b20 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -158,8 +158,10 @@ impl GlobalState { .collect::>(); if !detached_files.is_empty() { - workspaces - .push(project_model::ProjectWorkspace::load_detached_files(detached_files)); + workspaces.push(project_model::ProjectWorkspace::load_detached_files( + detached_files, + &cargo_config, + )); } tracing::info!("did fetch workspaces {:?}", workspaces); From c8b6fef70fd77e412a665ea8a1e45b0122e68544 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 24 Nov 2022 21:30:15 +0100 Subject: [PATCH 043/478] Properly implement Drop for JodGroupChild --- crates/flycheck/src/lib.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 8f93dad06e3f..f13088cd90ef 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -360,13 +360,20 @@ impl FlycheckActor { } } -struct JodChild(GroupChild); +struct JodGroupChild(GroupChild); + +impl Drop for JodGroupChild { + fn drop(&mut self) { + _ = self.0.kill(); + _ = self.0.wait(); + } +} /// A handle to a cargo process used for fly-checking. struct CargoHandle { /// The handle to the actual cargo process. As we cannot cancel directly from with /// a read syscall dropping and therefore terminating the process is our best option. - child: JodChild, + child: JodGroupChild, thread: jod_thread::JoinHandle>, receiver: Receiver, } @@ -374,7 +381,7 @@ struct CargoHandle { impl CargoHandle { fn spawn(mut command: Command) -> std::io::Result { command.stdout(Stdio::piped()).stderr(Stdio::piped()).stdin(Stdio::null()); - let mut child = command.group_spawn().map(JodChild)?; + let mut child = command.group_spawn().map(JodGroupChild)?; let stdout = child.0.inner().stdout.take().unwrap(); let stderr = child.0.inner().stderr.take().unwrap(); From 9fba39f0c02e43a0503a64b1ed4b36a05d8a1658 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 24 Nov 2022 22:26:05 +0100 Subject: [PATCH 044/478] Add deriveHelper to semanticTokenTypes section of package.json --- editors/code/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editors/code/package.json b/editors/code/package.json index c4d4e428ea07..eb4f25812081 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -1493,6 +1493,11 @@ "description": "Style for derives", "superType": "attribute" }, + { + "id": "deriveHelper", + "description": "Style for derive helpers", + "superType": "attribute" + }, { "id": "dot", "description": "Style for .", From f64feeb11ac78db9c634339465d973ceb9cb3c97 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Thu, 24 Nov 2022 22:32:15 -0800 Subject: [PATCH 045/478] Correct node traversal to look at parent instead Co-authored-by: Lukas Wirth --- crates/ide/src/hover.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 9751dc11db6b..5e812a1569cd 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -176,8 +176,8 @@ pub(crate) fn hover( return None; } - let record_pat_field_list = - token.parent_ancestors().find_map(ast::RecordPatFieldList::cast)?; + let rest_pat = token.syntax().parent().and_then(ast::RestPat::cast)?; + let record_pat_field_list = rest_pat.syntax().parent().and_then(ast::RecordPatFieldList::cast)?; let record_pat = record_pat_field_list.syntax().parent().and_then(ast::RecordPat::cast)?; From 132d5ffc7d86e77ee80a45545b8e9f503b59a8c4 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Fri, 25 Nov 2022 12:03:49 +0530 Subject: [PATCH 046/478] add back [] in hover documentation --- crates/ide/src/hover.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 5e812a1569cd..cbf61efba059 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -87,7 +87,7 @@ pub struct HoverResult { // Shows additional information, like the type of an expression or the documentation for a definition when "focusing" code. // Focusing is usually hovering with a mouse, but can also be triggered with a shortcut. // -// image::https://user-images.githubusercontent.com/48062697/113020658-b5f98b80-917a-11eb-9f88-3dbc27320c95.gif +// image::https://user-images.githubusercontent.com/48062697/113020658-b5f98b80-917a-11eb-9f88-3dbc27320c95.gif[] pub(crate) fn hover( db: &RootDatabase, FileRange { file_id, range }: FileRange, From e86d451484bf06a452a330af4b1b0c00de286715 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Fri, 25 Nov 2022 12:20:34 +0530 Subject: [PATCH 047/478] fix token method call --- crates/ide/src/hover.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index cbf61efba059..016567311c82 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -176,7 +176,7 @@ pub(crate) fn hover( return None; } - let rest_pat = token.syntax().parent().and_then(ast::RestPat::cast)?; + let rest_pat = token.parent().and_then(ast::RestPat::cast)?; let record_pat_field_list = rest_pat.syntax().parent().and_then(ast::RecordPatFieldList::cast)?; let record_pat = From 91e7624de01fc28e4abe2400a6f945b430ab0ab1 Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Fri, 25 Nov 2022 12:20:38 +0530 Subject: [PATCH 048/478] add hover tests --- crates/ide/src/hover/tests.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index eb997e6fef83..f8be4cfb04c2 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -5307,3 +5307,38 @@ fn main() { $0V; } "#]], ); } + +#[test] +fn hover_rest_pat() { + check( + r#" +struct Struct {a: u32, b: u32, c: u8, d: u16}; + +fn main() { + let Struct {a, c, .$0.} = Struct {a: 1, b: 2, c: 3, d: 4}; +} +"#, + expect![[r#" + *..* + ```rust + .., b: u32, d: u16 + ``` + "#]], + ); + + check( + r#" +struct Struct {a: u32, b: u32, c: u8, d: u16}; + +fn main() { + let Struct {a, b, c, d, .$0.} = Struct {a: 1, b: 2, c: 3, d: 4}; +} +"#, + expect![[r#" + *..* + ```rust + .. + ``` + "#]], + ); +} From a26aef9055e116d790ea63c37118aefcf93d3d0f Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Fri, 25 Nov 2022 12:22:06 +0530 Subject: [PATCH 049/478] fix formatting --- crates/ide/src/hover.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 016567311c82..9cbfed4763b0 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -177,7 +177,8 @@ pub(crate) fn hover( } let rest_pat = token.parent().and_then(ast::RestPat::cast)?; - let record_pat_field_list = rest_pat.syntax().parent().and_then(ast::RecordPatFieldList::cast)?; + let record_pat_field_list = + rest_pat.syntax().parent().and_then(ast::RecordPatFieldList::cast)?; let record_pat = record_pat_field_list.syntax().parent().and_then(ast::RecordPat::cast)?; From 3c794a34da24398bfc3783966f14e21c59026cb6 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 25 Nov 2022 10:27:49 +0100 Subject: [PATCH 050/478] Go to declaration goes to assoc items of trait declarations --- crates/ide/src/goto_declaration.rs | 90 +++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 8 deletions(-) diff --git a/crates/ide/src/goto_declaration.rs b/crates/ide/src/goto_declaration.rs index 926292c9b3ce..5c17b7f41586 100644 --- a/crates/ide/src/goto_declaration.rs +++ b/crates/ide/src/goto_declaration.rs @@ -1,18 +1,22 @@ -use hir::Semantics; +use hir::{AsAssocItem, Semantics}; use ide_db::{ defs::{Definition, NameClass, NameRefClass}, RootDatabase, }; use syntax::{ast, match_ast, AstNode, SyntaxKind::*, T}; -use crate::{FilePosition, NavigationTarget, RangeInfo}; +use crate::{ + goto_definition::goto_definition, navigation_target::TryToNav, FilePosition, NavigationTarget, + RangeInfo, +}; // Feature: Go to Declaration // // Navigates to the declaration of an identifier. // -// This is currently the same as `Go to Definition` with the exception of outline modules where it -// will navigate to the `mod name;` item declaration. +// This is the same as `Go to Definition` with the following exceptions: +// - outline modules will navigate to the `mod name;` item declaration +// - trait assoc items will navigate to the assoc item of the trait declaration opposed to the trait impl pub(crate) fn goto_declaration( db: &RootDatabase, position: FilePosition, @@ -41,16 +45,28 @@ pub(crate) fn goto_declaration( _ => None } }; - match def? { + let assoc = match def? { Definition::Module(module) => { - Some(NavigationTarget::from_module_to_decl(db, module)) + return Some(NavigationTarget::from_module_to_decl(db, module)) } + Definition::Const(c) => c.as_assoc_item(db), + Definition::TypeAlias(ta) => ta.as_assoc_item(db), + Definition::Function(f) => f.as_assoc_item(db), _ => None, - } + }?; + + let trait_ = assoc.containing_trait_impl(db)?; + let name = Some(assoc.name(db)?); + let item = trait_.items(db).into_iter().find(|it| it.name(db) == name)?; + item.try_to_nav(db) }) .collect(); - Some(RangeInfo::new(range, info)) + if info.is_empty() { + goto_definition(db, position) + } else { + Some(RangeInfo::new(range, info)) + } } #[cfg(test)] @@ -109,4 +125,62 @@ mod foo { "#, ) } + + #[test] + fn goto_decl_goto_def_fallback() { + check( + r#" +struct Foo; + // ^^^ +impl Foo$0 {} +"#, + ); + } + + #[test] + fn goto_decl_assoc_item_no_impl_item() { + check( + r#" +trait Trait { + const C: () = (); + // ^ +} +impl Trait for () {} + +fn main() { + <()>::C$0; +} +"#, + ); + } + + #[test] + fn goto_decl_assoc_item() { + check( + r#" +trait Trait { + const C: () = (); + // ^ +} +impl Trait for () { + const C: () = (); +} + +fn main() { + <()>::C$0; +} +"#, + ); + check( + r#" +trait Trait { + const C: () = (); + // ^ +} +impl Trait for () { + const C$0: () = (); +} +"#, + ); + } } From ae0bdffcc9b9e25412f118dfe788cf112fb7e2ef Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 25 Nov 2022 00:03:48 +0100 Subject: [PATCH 051/478] Go to declaration goes to field declaration in pattern and expression shorthands --- crates/ide/src/goto_declaration.rs | 33 +++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/crates/ide/src/goto_declaration.rs b/crates/ide/src/goto_declaration.rs index 5c17b7f41586..c7130a2a4bb0 100644 --- a/crates/ide/src/goto_declaration.rs +++ b/crates/ide/src/goto_declaration.rs @@ -36,11 +36,11 @@ pub(crate) fn goto_declaration( match parent { ast::NameRef(name_ref) => match NameRefClass::classify(&sema, &name_ref)? { NameRefClass::Definition(it) => Some(it), - _ => None + NameRefClass::FieldShorthand { field_ref, .. } => return field_ref.try_to_nav(db), }, ast::Name(name) => match NameClass::classify(&sema, &name)? { - NameClass::Definition(it) => Some(it), - _ => None + NameClass::Definition(it) | NameClass::ConstReference(it) => Some(it), + NameClass::PatFieldShorthand { field_ref, .. } => return field_ref.try_to_nav(db), }, _ => None } @@ -180,6 +180,33 @@ trait Trait { impl Trait for () { const C$0: () = (); } +"#, + ); + } + + #[test] + fn goto_decl_field_pat_shorthand() { + check( + r#" +struct Foo { field: u32 } + //^^^^^ +fn main() { + let Foo { field$0 }; +} +"#, + ); + } + + #[test] + fn goto_decl_constructor_shorthand() { + check( + r#" +struct Foo { field: u32 } + //^^^^^ +fn main() { + let field = 0; + Foo { field$0 }; +} "#, ); } From 7bf2a25dfe8337fe46a2698756cdfab46556ef88 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 25 Nov 2022 23:17:21 +0100 Subject: [PATCH 052/478] Encode the variants of `HirFileId` in a u32 with MSB as the tag --- crates/hir-expand/src/db.rs | 2 +- crates/hir-expand/src/hygiene.rs | 8 +- crates/hir-expand/src/lib.rs | 227 +++++++++--------- .../test_symbol_index_collection.txt | 134 ++--------- 4 files changed, 145 insertions(+), 226 deletions(-) diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs index 87e4db03984a..0096649be146 100644 --- a/crates/hir-expand/src/db.rs +++ b/crates/hir-expand/src/db.rs @@ -240,7 +240,7 @@ fn ast_id_map(db: &dyn AstDatabase, file_id: HirFileId) -> Arc { } fn parse_or_expand(db: &dyn AstDatabase, file_id: HirFileId) -> Option { - match file_id.0 { + match file_id.repr() { HirFileIdRepr::FileId(file_id) => Some(db.parse(file_id).tree().syntax().clone()), HirFileIdRepr::MacroFile(macro_file) => { // FIXME: Note how we convert from `Parse` to `SyntaxNode` here, diff --git a/crates/hir-expand/src/hygiene.rs b/crates/hir-expand/src/hygiene.rs index d60734372c0c..df1e20256ca3 100644 --- a/crates/hir-expand/src/hygiene.rs +++ b/crates/hir-expand/src/hygiene.rs @@ -17,7 +17,7 @@ use crate::{ db::{self, AstDatabase}, fixup, name::{AsName, Name}, - HirFileId, HirFileIdRepr, InFile, MacroCallKind, MacroCallLoc, MacroDefKind, MacroFile, + HirFileId, InFile, MacroCallKind, MacroCallLoc, MacroDefKind, MacroFile, }; #[derive(Clone, Debug)] @@ -216,9 +216,9 @@ fn make_hygiene_info( impl HygieneFrame { pub(crate) fn new(db: &dyn AstDatabase, file_id: HirFileId) -> HygieneFrame { - let (info, krate, local_inner) = match file_id.0 { - HirFileIdRepr::FileId(_) => (None, None, false), - HirFileIdRepr::MacroFile(macro_file) => { + let (info, krate, local_inner) = match file_id.macro_file() { + None => (None, None, false), + Some(macro_file) => { let loc = db.lookup_intern_macro_call(macro_file.macro_call_id); let info = make_hygiene_info(db, macro_file, &loc).map(|info| (loc.kind.file_id(), info)); diff --git a/crates/hir-expand/src/lib.rs b/crates/hir-expand/src/lib.rs index 7352b003a491..bc5f9f3b8afd 100644 --- a/crates/hir-expand/src/lib.rs +++ b/crates/hir-expand/src/lib.rs @@ -23,7 +23,11 @@ pub use mbe::{Origin, ValueResult}; use std::{fmt, hash::Hash, iter, sync::Arc}; -use base_db::{impl_intern_key, salsa, CrateId, FileId, FileRange, ProcMacroKind}; +use base_db::{ + impl_intern_key, + salsa::{self, InternId}, + CrateId, FileId, FileRange, ProcMacroKind, +}; use either::Either; use syntax::{ algo::{self, skip_trivia_token}, @@ -79,26 +83,12 @@ impl fmt::Display for ExpandError { /// finite (because everything bottoms out at the real `FileId`) and small /// (`MacroCallId` uses the location interning. You can check details here: /// ). +/// +/// The two variants are encoded in a single u32 which are differentiated by the MSB. +/// If the MSB is 0, the value represents a `FileId`, otherwise the remaining 31 bits represent a +/// `MacroCallId`. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct HirFileId(HirFileIdRepr); - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -enum HirFileIdRepr { - FileId(FileId), - MacroFile(MacroFile), -} - -impl From for HirFileId { - fn from(id: FileId) -> Self { - HirFileId(HirFileIdRepr::FileId(id)) - } -} - -impl From for HirFileId { - fn from(id: MacroFile) -> Self { - HirFileId(HirFileIdRepr::MacroFile(id)) - } -} +pub struct HirFileId(u32); #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct MacroFile { @@ -172,13 +162,37 @@ pub enum MacroCallKind { }, } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +enum HirFileIdRepr { + FileId(FileId), + MacroFile(MacroFile), +} + +impl From for HirFileId { + fn from(FileId(id): FileId) -> Self { + assert!(id < Self::MAX_FILE_ID); + HirFileId(id) + } +} + +impl From for HirFileId { + fn from(MacroFile { macro_call_id: MacroCallId(id) }: MacroFile) -> Self { + let id = id.as_u32(); + assert!(id < Self::MAX_FILE_ID); + HirFileId(id | Self::MACRO_FILE_TAG_MASK) + } +} + impl HirFileId { + const MAX_FILE_ID: u32 = u32::MAX ^ Self::MACRO_FILE_TAG_MASK; + const MACRO_FILE_TAG_MASK: u32 = 1 << 31; + /// For macro-expansion files, returns the file original source file the /// expansion originated from. pub fn original_file(self, db: &dyn db::AstDatabase) -> FileId { let mut file_id = self; loop { - match file_id.0 { + match file_id.repr() { HirFileIdRepr::FileId(id) => break id, HirFileIdRepr::MacroFile(MacroFile { macro_call_id }) => { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_call_id); @@ -194,7 +208,7 @@ impl HirFileId { pub fn expansion_level(self, db: &dyn db::AstDatabase) -> u32 { let mut level = 0; let mut curr = self; - while let HirFileIdRepr::MacroFile(macro_file) = curr.0 { + while let Some(macro_file) = curr.macro_file() { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); level += 1; @@ -205,25 +219,17 @@ impl HirFileId { /// If this is a macro call, returns the syntax node of the call. pub fn call_node(self, db: &dyn db::AstDatabase) -> Option> { - match self.0 { - HirFileIdRepr::FileId(_) => None, - HirFileIdRepr::MacroFile(macro_file) => { - let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); - Some(loc.kind.to_node(db)) - } - } + let macro_file = self.macro_file()?; + let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); + Some(loc.kind.to_node(db)) } /// If this is a macro call, returns the syntax node of the very first macro call this file resides in. pub fn original_call_node(self, db: &dyn db::AstDatabase) -> Option<(FileId, SyntaxNode)> { - let mut call = match self.0 { - HirFileIdRepr::FileId(_) => return None, - HirFileIdRepr::MacroFile(MacroFile { macro_call_id }) => { - db.lookup_intern_macro_call(macro_call_id).kind.to_node(db) - } - }; + let mut call = + db.lookup_intern_macro_call(self.macro_file()?.macro_call_id).kind.to_node(db); loop { - match call.file_id.0 { + match call.file_id.repr() { HirFileIdRepr::FileId(file_id) => break Some((file_id, call.value)), HirFileIdRepr::MacroFile(MacroFile { macro_call_id }) => { call = db.lookup_intern_macro_call(macro_call_id).kind.to_node(db); @@ -234,84 +240,74 @@ impl HirFileId { /// Return expansion information if it is a macro-expansion file pub fn expansion_info(self, db: &dyn db::AstDatabase) -> Option { - match self.0 { - HirFileIdRepr::FileId(_) => None, - HirFileIdRepr::MacroFile(macro_file) => { - let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); + let macro_file = self.macro_file()?; + let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); - let arg_tt = loc.kind.arg(db)?; + let arg_tt = loc.kind.arg(db)?; - let macro_def = db.macro_def(loc.def).ok()?; - let (parse, exp_map) = db.parse_macro_expansion(macro_file).value?; - let macro_arg = db.macro_arg(macro_file.macro_call_id)?; + let macro_def = db.macro_def(loc.def).ok()?; + let (parse, exp_map) = db.parse_macro_expansion(macro_file).value?; + let macro_arg = db.macro_arg(macro_file.macro_call_id)?; - let def = loc.def.ast_id().left().and_then(|id| { - let def_tt = match id.to_node(db) { - ast::Macro::MacroRules(mac) => mac.token_tree()?, - ast::Macro::MacroDef(_) - if matches!(*macro_def, TokenExpander::BuiltinAttr(_)) => - { - return None - } - ast::Macro::MacroDef(mac) => mac.body()?, - }; - Some(InFile::new(id.file_id, def_tt)) - }); - let attr_input_or_mac_def = def.or_else(|| match loc.kind { - MacroCallKind::Attr { ast_id, invoc_attr_index, .. } => { - let tt = ast_id - .to_node(db) - .doc_comments_and_attrs() - .nth(invoc_attr_index as usize) - .and_then(Either::left)? - .token_tree()?; - Some(InFile::new(ast_id.file_id, tt)) - } - _ => None, - }); - - Some(ExpansionInfo { - expanded: InFile::new(self, parse.syntax_node()), - arg: InFile::new(loc.kind.file_id(), arg_tt), - attr_input_or_mac_def, - macro_arg_shift: mbe::Shift::new(¯o_arg.0), - macro_arg, - macro_def, - exp_map, - }) + let def = loc.def.ast_id().left().and_then(|id| { + let def_tt = match id.to_node(db) { + ast::Macro::MacroRules(mac) => mac.token_tree()?, + ast::Macro::MacroDef(_) if matches!(*macro_def, TokenExpander::BuiltinAttr(_)) => { + return None + } + ast::Macro::MacroDef(mac) => mac.body()?, + }; + Some(InFile::new(id.file_id, def_tt)) + }); + let attr_input_or_mac_def = def.or_else(|| match loc.kind { + MacroCallKind::Attr { ast_id, invoc_attr_index, .. } => { + let tt = ast_id + .to_node(db) + .doc_comments_and_attrs() + .nth(invoc_attr_index as usize) + .and_then(Either::left)? + .token_tree()?; + Some(InFile::new(ast_id.file_id, tt)) } - } + _ => None, + }); + + Some(ExpansionInfo { + expanded: InFile::new(self, parse.syntax_node()), + arg: InFile::new(loc.kind.file_id(), arg_tt), + attr_input_or_mac_def, + macro_arg_shift: mbe::Shift::new(¯o_arg.0), + macro_arg, + macro_def, + exp_map, + }) } /// Indicate it is macro file generated for builtin derive pub fn is_builtin_derive(&self, db: &dyn db::AstDatabase) -> Option> { - match self.0 { - HirFileIdRepr::FileId(_) => None, - HirFileIdRepr::MacroFile(macro_file) => { - let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); - let attr = match loc.def.kind { - MacroDefKind::BuiltInDerive(..) => loc.kind.to_node(db), - _ => return None, - }; - Some(attr.with_value(ast::Attr::cast(attr.value.clone())?)) - } - } + let macro_file = self.macro_file()?; + let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); + let attr = match loc.def.kind { + MacroDefKind::BuiltInDerive(..) => loc.kind.to_node(db), + _ => return None, + }; + Some(attr.with_value(ast::Attr::cast(attr.value.clone())?)) } pub fn is_custom_derive(&self, db: &dyn db::AstDatabase) -> bool { - match self.0 { - HirFileIdRepr::FileId(_) => false, - HirFileIdRepr::MacroFile(macro_file) => { + match self.macro_file() { + Some(macro_file) => { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); matches!(loc.def.kind, MacroDefKind::ProcMacro(_, ProcMacroKind::CustomDerive, _)) } + None => false, } } /// Return whether this file is an include macro pub fn is_include_macro(&self, db: &dyn db::AstDatabase) -> bool { - match self.0 { - HirFileIdRepr::MacroFile(macro_file) => { + match self.macro_file() { + Some(macro_file) => { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); matches!(loc.eager, Some(EagerCallInfo { included_file: Some(_), .. })) } @@ -321,8 +317,8 @@ impl HirFileId { /// Return whether this file is an attr macro pub fn is_attr_macro(&self, db: &dyn db::AstDatabase) -> bool { - match self.0 { - HirFileIdRepr::MacroFile(macro_file) => { + match self.macro_file() { + Some(macro_file) => { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); matches!(loc.kind, MacroCallKind::Attr { .. }) } @@ -333,23 +329,36 @@ impl HirFileId { /// Return whether this file is the pseudo expansion of the derive attribute. /// See [`crate::builtin_attr_macro::derive_attr_expand`]. pub fn is_derive_attr_pseudo_expansion(&self, db: &dyn db::AstDatabase) -> bool { - match self.0 { - HirFileIdRepr::MacroFile(macro_file) => { + match self.macro_file() { + Some(macro_file) => { let loc: MacroCallLoc = db.lookup_intern_macro_call(macro_file.macro_call_id); matches!(loc.kind, MacroCallKind::Attr { is_derive: true, .. }) } - _ => false, + None => false, } } + #[inline] pub fn is_macro(self) -> bool { - matches!(self.0, HirFileIdRepr::MacroFile(_)) + self.0 & Self::MACRO_FILE_TAG_MASK != 0 } + #[inline] pub fn macro_file(self) -> Option { - match self.0 { - HirFileIdRepr::FileId(_) => None, - HirFileIdRepr::MacroFile(m) => Some(m), + match self.0 & Self::MACRO_FILE_TAG_MASK { + 0 => None, + _ => Some(MacroFile { + macro_call_id: MacroCallId(InternId::from(self.0 ^ Self::MACRO_FILE_TAG_MASK)), + }), + } + } + + fn repr(self) -> HirFileIdRepr { + match self.0 & Self::MACRO_FILE_TAG_MASK { + 0 => HirFileIdRepr::FileId(FileId(self.0)), + _ => HirFileIdRepr::MacroFile(MacroFile { + macro_call_id: MacroCallId(InternId::from(self.0 ^ Self::MACRO_FILE_TAG_MASK)), + }), } } } @@ -442,7 +451,7 @@ impl MacroCallKind { pub fn original_call_range_with_body(self, db: &dyn db::AstDatabase) -> FileRange { let mut kind = self; let file_id = loop { - match kind.file_id().0 { + match kind.file_id().repr() { HirFileIdRepr::MacroFile(file) => { kind = db.lookup_intern_macro_call(file.macro_call_id).kind; } @@ -467,7 +476,7 @@ impl MacroCallKind { pub fn original_call_range(self, db: &dyn db::AstDatabase) -> FileRange { let mut kind = self; let file_id = loop { - match kind.file_id().0 { + match kind.file_id().repr() { HirFileIdRepr::MacroFile(file) => { kind = db.lookup_intern_macro_call(file.macro_call_id).kind; } @@ -779,7 +788,7 @@ impl<'a> InFile<&'a SyntaxNode> { /// For attributes and derives, this will point back to the attribute only. /// For the entire item `InFile::use original_file_range_full`. pub fn original_file_range(self, db: &dyn db::AstDatabase) -> FileRange { - match self.file_id.0 { + match self.file_id.repr() { HirFileIdRepr::FileId(file_id) => FileRange { file_id, range: self.value.text_range() }, HirFileIdRepr::MacroFile(mac_file) => { if let Some(res) = self.original_file_range_opt(db) { @@ -846,7 +855,7 @@ impl InFile { /// Falls back to the macro call range if the node cannot be mapped up fully. pub fn original_file_range(self, db: &dyn db::AstDatabase) -> FileRange { - match self.file_id.0 { + match self.file_id.repr() { HirFileIdRepr::FileId(file_id) => FileRange { file_id, range: self.value.text_range() }, HirFileIdRepr::MacroFile(mac_file) => { if let Some(res) = self.original_file_range_opt(db) { @@ -861,7 +870,7 @@ impl InFile { /// Attempts to map the syntax node back up its macro calls. pub fn original_file_range_opt(self, db: &dyn db::AstDatabase) -> Option { - match self.file_id.0 { + match self.file_id.repr() { HirFileIdRepr::FileId(file_id) => { Some(FileRange { file_id, range: self.value.text_range() }) } diff --git a/crates/ide-db/src/test_data/test_symbol_index_collection.txt b/crates/ide-db/src/test_data/test_symbol_index_collection.txt index 2f531ca0c709..8c11408dec5d 100644 --- a/crates/ide-db/src/test_data/test_symbol_index_collection.txt +++ b/crates/ide-db/src/test_data/test_symbol_index_collection.txt @@ -14,11 +14,7 @@ name: "Alias", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: TYPE_ALIAS, @@ -36,11 +32,7 @@ name: "CONST", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: CONST, @@ -58,11 +50,7 @@ name: "CONST_WITH_INNER", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: CONST, @@ -80,11 +68,7 @@ name: "Enum", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: ENUM, @@ -102,11 +86,7 @@ name: "Macro", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: MACRO_DEF, @@ -124,11 +104,7 @@ name: "STATIC", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STATIC, @@ -146,11 +122,7 @@ name: "Struct", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -168,13 +140,7 @@ name: "StructFromMacro", loc: DeclarationLocation { hir_file_id: HirFileId( - MacroFile( - MacroFile { - macro_call_id: MacroCallId( - 0, - ), - }, - ), + 2147483648, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -192,11 +158,7 @@ name: "StructInFn", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -216,11 +178,7 @@ name: "StructInNamedConst", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -240,11 +198,7 @@ name: "StructInUnnamedConst", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -262,11 +216,7 @@ name: "Trait", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: TRAIT, @@ -284,11 +234,7 @@ name: "Union", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: UNION, @@ -306,11 +252,7 @@ name: "a_mod", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: MODULE, @@ -328,11 +270,7 @@ name: "b_mod", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: MODULE, @@ -350,11 +288,7 @@ name: "define_struct", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: MACRO_RULES, @@ -372,11 +306,7 @@ name: "impl_fn", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: FN, @@ -394,11 +324,7 @@ name: "macro_rules_macro", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: MACRO_RULES, @@ -416,11 +342,7 @@ name: "main", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: FN, @@ -438,11 +360,7 @@ name: "trait_fn", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: FN, @@ -475,11 +393,7 @@ name: "StructInModA", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 0, - ), - ), + 0, ), ptr: SyntaxNodePtr { kind: STRUCT, @@ -510,11 +424,7 @@ name: "StructInModB", loc: DeclarationLocation { hir_file_id: HirFileId( - FileId( - FileId( - 1, - ), - ), + 1, ), ptr: SyntaxNodePtr { kind: STRUCT, From 822c61f559dc522dbd28f2886d20989a55613fc0 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sat, 26 Nov 2022 23:51:57 +0900 Subject: [PATCH 053/478] refactor: remove unnecessary stuff --- crates/ide-assists/src/handlers/extract_function.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index c1e2f19ab18b..10a3a33226bb 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -265,7 +265,7 @@ enum ParamKind { MutRef, } -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug)] enum FunType { Unit, Single(hir::Type), @@ -1368,7 +1368,7 @@ impl FlowHandler { None => FlowHandler::None, Some(flow_kind) => { let action = flow_kind.clone(); - if *ret_ty == FunType::Unit { + if let FunType::Unit = ret_ty { match flow_kind { FlowKind::Return(None) | FlowKind::Break(_, None) @@ -1946,7 +1946,7 @@ fn update_external_control_flow(handler: &FlowHandler, syntax: &SyntaxNode) { if nested_scope.is_none() { if let Some(expr) = ast::Expr::cast(e.clone()) { match expr { - ast::Expr::ReturnExpr(return_expr) if nested_scope.is_none() => { + ast::Expr::ReturnExpr(return_expr) => { let expr = return_expr.expr(); if let Some(replacement) = make_rewritten_flow(handler, expr) { ted::replace(return_expr.syntax(), replacement.syntax()) From 8e03f18e37d2782189391955bc56d3aebead81f5 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sat, 26 Nov 2022 23:51:22 +0900 Subject: [PATCH 054/478] fix: check if range contains tail expression --- .../src/handlers/extract_function.rs | 204 ++++++++++++++++-- 1 file changed, 183 insertions(+), 21 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index 10a3a33226bb..0483cfdc6466 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -11,7 +11,9 @@ use ide_db::{ helpers::mod_path_to_ast, imports::insert_use::{insert_use, ImportScope}, search::{FileReference, ReferenceCategory, SearchScope}, - syntax_helpers::node_ext::{preorder_expr, walk_expr, walk_pat, walk_patterns_in_expr}, + syntax_helpers::node_ext::{ + for_each_tail_expr, preorder_expr, walk_expr, walk_pat, walk_patterns_in_expr, + }, FxIndexSet, RootDatabase, }; use itertools::Itertools; @@ -78,7 +80,7 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op }; let body = extraction_target(&node, range)?; - let container_info = body.analyze_container(&ctx.sema)?; + let (container_info, contains_tail_expr) = body.analyze_container(&ctx.sema)?; let (locals_used, self_param) = body.analyze(&ctx.sema); @@ -119,6 +121,7 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op ret_ty, body, outliving_locals, + contains_tail_expr, mods: container_info, }; @@ -245,6 +248,8 @@ struct Function { ret_ty: RetType, body: FunctionBody, outliving_locals: Vec, + /// Whether at least one of the container's tail expr is contained in the range we're extracting. + contains_tail_expr: bool, mods: ContainerInfo, } @@ -294,7 +299,6 @@ struct ControlFlow { #[derive(Clone, Debug)] struct ContainerInfo { is_const: bool, - is_in_tail: bool, parent_loop: Option, /// The function's return type, const's type etc. ret_type: Option, @@ -743,7 +747,10 @@ impl FunctionBody { (res, self_param) } - fn analyze_container(&self, sema: &Semantics<'_, RootDatabase>) -> Option { + fn analyze_container( + &self, + sema: &Semantics<'_, RootDatabase>, + ) -> Option<(ContainerInfo, bool)> { let mut ancestors = self.parent()?.ancestors(); let infer_expr_opt = |expr| sema.type_of_expr(&expr?).map(TypeInfo::adjusted); let mut parent_loop = None; @@ -815,28 +822,36 @@ impl FunctionBody { } }; }; - let container_tail = match expr? { - ast::Expr::BlockExpr(block) => block.tail_expr(), - expr => Some(expr), - }; - let is_in_tail = - container_tail.zip(self.tail_expr()).map_or(false, |(container_tail, body_tail)| { - container_tail.syntax().text_range().contains_range(body_tail.syntax().text_range()) + + let expr = expr?; + let contains_tail_expr = if let Some(body_tail) = self.tail_expr() { + let mut contains_tail_expr = false; + let tail_expr_range = body_tail.syntax().text_range(); + for_each_tail_expr(&expr, &mut |e| { + if tail_expr_range.contains_range(e.syntax().text_range()) { + contains_tail_expr = true; + } }); + contains_tail_expr + } else { + false + }; let parent = self.parent()?; let parents = generic_parents(&parent); let generic_param_lists = parents.iter().filter_map(|it| it.generic_param_list()).collect(); let where_clauses = parents.iter().filter_map(|it| it.where_clause()).collect(); - Some(ContainerInfo { - is_in_tail, - is_const, - parent_loop, - ret_type: ty, - generic_param_lists, - where_clauses, - }) + Some(( + ContainerInfo { + is_const, + parent_loop, + ret_type: ty, + generic_param_lists, + where_clauses, + }, + contains_tail_expr, + )) } fn return_ty(&self, ctx: &AssistContext<'_>) -> Option { @@ -1633,7 +1648,7 @@ impl Function { fn make_ret_ty(&self, ctx: &AssistContext<'_>, module: hir::Module) -> Option { let fun_ty = self.return_type(ctx); - let handler = if self.mods.is_in_tail { + let handler = if self.contains_tail_expr { FlowHandler::None } else { FlowHandler::from_ret_ty(self, &fun_ty) @@ -1707,7 +1722,7 @@ fn make_body( fun: &Function, ) -> ast::BlockExpr { let ret_ty = fun.return_type(ctx); - let handler = if fun.mods.is_in_tail { + let handler = if fun.contains_tail_expr { FlowHandler::None } else { FlowHandler::from_ret_ty(fun, &ret_ty) @@ -5582,6 +5597,153 @@ impl Struct where T: Into + Copy, U: Debug { fn $0fun_name(t: T, v: V) -> i32 where T: Into + Copy, V: Into { t.into() + v.into() } +"#, + ); + } + + #[test] + fn non_tail_expr_of_tail_expr_loop() { + check_assist( + extract_function, + r#" +pub fn f() { + loop { + $0if true { + continue; + }$0 + + if false { + break; + } + } +} +"#, + r#" +pub fn f() { + loop { + if let ControlFlow::Break(_) = fun_name() { + continue; + } + + if false { + break; + } + } +} + +fn $0fun_name() -> ControlFlow<()> { + if true { + return ControlFlow::Break(()); + } + ControlFlow::Continue(()) +} +"#, + ); + } + + #[test] + fn non_tail_expr_of_tail_if_block() { + // FIXME: double semicolon + check_assist( + extract_function, + r#" +//- minicore: option, try +impl core::ops::Try for Option { + type Output = T; + type Residual = Option; +} +impl core::ops::FromResidual for Option {} + +fn f() -> Option<()> { + if true { + let a = $0if true { + Some(())? + } else { + () + }$0; + Some(a) + } else { + None + } +} +"#, + r#" +impl core::ops::Try for Option { + type Output = T; + type Residual = Option; +} +impl core::ops::FromResidual for Option {} + +fn f() -> Option<()> { + if true { + let a = fun_name()?;; + Some(a) + } else { + None + } +} + +fn $0fun_name() -> Option<()> { + Some(if true { + Some(())? + } else { + () + }) +} +"#, + ); + } + + #[test] + fn tail_expr_of_tail_block_nested() { + check_assist( + extract_function, + r#" +//- minicore: option, try +impl core::ops::Try for Option { + type Output = T; + type Residual = Option; +} +impl core::ops::FromResidual for Option {} + +fn f() -> Option<()> { + if true { + $0{ + let a = if true { + Some(())? + } else { + () + }; + Some(a) + }$0 + } else { + None + } +} +"#, + r#" +impl core::ops::Try for Option { + type Output = T; + type Residual = Option; +} +impl core::ops::FromResidual for Option {} + +fn f() -> Option<()> { + if true { + fun_name()? + } else { + None + } +} + +fn $0fun_name() -> Option<()> { + let a = if true { + Some(())? + } else { + () + }; + Some(a) +} "#, ); } From e1de04d60ceff530295f57ae47a65e9c05716bbf Mon Sep 17 00:00:00 2001 From: yue4u Date: Sun, 27 Nov 2022 01:53:45 +0900 Subject: [PATCH 055/478] fix: only special casing 3 colon in a row --- crates/ide-completion/src/context.rs | 22 +++------------------- crates/ide-completion/src/tests/special.rs | 8 +------- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index a0e1153f08b8..0e3b677f2d67 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -581,7 +581,9 @@ impl<'a> CompletionContext<'a> { return None; } - if !is_prev_token_valid_path_start_or_segment(&prev_token) { + // has 3 colon in a row + // special casing this as per discussion in https://github.com/rust-lang/rust-analyzer/pull/13611#discussion_r1031845205 + if prev_token.prev_token().map(|t| t.kind() == T![:]).unwrap_or(false) { return None; } } @@ -637,24 +639,6 @@ impl<'a> CompletionContext<'a> { } } -fn is_prev_token_valid_path_start_or_segment(token: &SyntaxToken) -> bool { - if let Some(prev_token) = token.prev_token() { - // token before coloncolon is invalid - if !matches!( - prev_token.kind(), - // trival - WHITESPACE | COMMENT - // PathIdentSegment - | IDENT | T![super] | T![self] | T![Self] | T![crate] - // QualifiedPath - | T![>] - ) { - return false; - } - } - true -} - const OP_TRAIT_LANG_NAMES: &[&str] = &[ "add_assign", "add", diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index 6cfa72d6539b..0e59f4ec5416 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -967,16 +967,10 @@ fn foo { crate:$0 } } #[test] -fn no_completions_in_invalid_path() { +fn no_completions_in_after_tripple_colon() { check( r#" fn foo { crate:::$0 } -"#, - expect![""], - ); - check( - r#" -fn foo { crate::::$0 } "#, expect![""], ); From 1ca5cb7ed9928fad4222cb26727da41ff9ac148f Mon Sep 17 00:00:00 2001 From: yue4u Date: Sun, 27 Nov 2022 02:39:38 +0900 Subject: [PATCH 056/478] fix: also exclude 2 coloncolon in a row --- crates/ide-completion/src/context.rs | 9 +++++++-- crates/ide-completion/src/tests/special.rs | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 0e3b677f2d67..aa77f449530e 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -581,9 +581,14 @@ impl<'a> CompletionContext<'a> { return None; } - // has 3 colon in a row + // has 3 colon or 2 coloncolon in a row // special casing this as per discussion in https://github.com/rust-lang/rust-analyzer/pull/13611#discussion_r1031845205 - if prev_token.prev_token().map(|t| t.kind() == T![:]).unwrap_or(false) { + // and https://github.com/rust-lang/rust-analyzer/pull/13611#discussion_r1032812751 + if prev_token + .prev_token() + .map(|t| t.kind() == T![:] || t.kind() == T![::]) + .unwrap_or(false) + { return None; } } diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index 0e59f4ec5416..cad4af4937de 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -967,11 +967,17 @@ fn foo { crate:$0 } } #[test] -fn no_completions_in_after_tripple_colon() { +fn no_completions_in_invalid_path() { check( r#" fn foo { crate:::$0 } "#, expect![""], ); + check( + r#" +fn foo { crate::::$0 } +"#, + expect![""], + ) } From 8661740626ae7f608051e1309d802c408b1e20e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Jos=C3=A9=20Solano?= Date: Sun, 27 Nov 2022 09:46:37 -0800 Subject: [PATCH 057/478] Use typed notification method --- editors/code/src/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 25f1e83d109c..01a1a2db7fdf 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -79,7 +79,7 @@ async function activateServer(ctx: Ctx): Promise { ); vscode.workspace.onDidChangeConfiguration( async (_) => { - await ctx.client?.sendNotification("workspace/didChangeConfiguration", { + await ctx.client?.sendNotification(lc.DidChangeConfigurationNotification.type, { settings: "", }); }, From 2174aca8f8601a0135827377ebf349838e1123db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Jos=C3=A9=20Solano?= Date: Sun, 27 Nov 2022 10:07:09 -0800 Subject: [PATCH 058/478] Check for workspace root in runnable codelens --- crates/rust-analyzer/src/to_proto.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 81cc1952ba5c..fcc4d7be24d2 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -1164,7 +1164,7 @@ pub(crate) fn code_lens( let r = runnable(snap, run)?; let lens_config = snap.config.lens(); - if lens_config.run && client_commands_config.run_single { + if lens_config.run && client_commands_config.run_single && r.args.workspace_root.is_some() { let command = command::run_single(&r, &title); acc.push(lsp_types::CodeLens { range: annotation_range, From 76438d26b1809c1499859f2943709e40f8df450c Mon Sep 17 00:00:00 2001 From: Fabian Hintringer Date: Mon, 28 Nov 2022 23:01:15 +0100 Subject: [PATCH 059/478] Add example for iterator_flatten --- library/core/src/iter/traits/iterator.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/core/src/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index 83c7e8977e9f..6e9b48cb794c 100644 --- a/library/core/src/iter/traits/iterator.rs +++ b/library/core/src/iter/traits/iterator.rs @@ -1495,6 +1495,14 @@ pub trait Iterator { /// assert_eq!(merged, "alphabetagamma"); /// ``` /// + /// Flattening also works on other types like Option and Result: + /// + /// ``` + /// let values = vec![Some(123), Some(321), None, Some(231)]; + /// let flattened_values: Vec<_> = values.into_iter().flatten().collect(); + /// assert_eq!(flattened_values, vec![123, 321, 231]); + /// ``` + /// /// You can also rewrite this in terms of [`flat_map()`], which is preferable /// in this case since it conveys intent more clearly: /// From b3bd5a471e314841fb1d2d94fdc50ef3c8d8548f Mon Sep 17 00:00:00 2001 From: Crauzer Date: Tue, 29 Nov 2022 00:32:13 +0100 Subject: [PATCH 060/478] implement vararg type collection from function params --- crates/hir-expand/src/name.rs | 1 + crates/hir-ty/src/infer.rs | 19 ++++++++++++++++++- crates/hir-ty/src/tests/patterns.rs | 12 ++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index 2679a1c36026..259fe1327f88 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -419,6 +419,7 @@ pub mod known { shr, sub_assign, sub, + va_list ); // self/Self cannot be used as an identifier diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 0b3c23f5747a..112eb5bd84cd 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -537,8 +537,20 @@ impl<'a> InferenceContext<'a> { let data = self.db.function_data(func); let ctx = crate::lower::TyLoweringContext::new(self.db, &self.resolver) .with_impl_trait_mode(ImplTraitLoweringMode::Param); - let param_tys = + let mut param_tys = data.params.iter().map(|(_, type_ref)| ctx.lower_ty(type_ref)).collect::>(); + // Check if function contains a va_list, if it does then we append it to the parameter types + // that are collected from the function data + if data.is_varargs() { + let va_list_ty = match self.resolve_va_list() { + Some(va_list) => TyBuilder::adt(self.db, va_list) + .fill_with_defaults(self.db, || self.table.new_type_var()) + .build(), + None => self.err_ty(), + }; + + param_tys.push(va_list_ty) + } for (ty, pat) in param_tys.into_iter().zip(self.body.params.iter()) { let ty = self.insert_type_vars(ty); let ty = self.normalize_associated_types_in(ty); @@ -983,6 +995,11 @@ impl<'a> InferenceContext<'a> { let trait_ = self.resolve_ops_index()?; self.db.trait_data(trait_).associated_type_by_name(&name![Output]) } + + fn resolve_va_list(&self) -> Option { + let struct_ = self.resolve_lang_item(name![va_list])?.as_struct()?; + Some(struct_.into()) + } } /// When inferring an expression, we propagate downward whatever type hint we diff --git a/crates/hir-ty/src/tests/patterns.rs b/crates/hir-ty/src/tests/patterns.rs index 74de33117ee7..9333e2693522 100644 --- a/crates/hir-ty/src/tests/patterns.rs +++ b/crates/hir-ty/src/tests/patterns.rs @@ -1080,3 +1080,15 @@ fn my_fn(#[cfg(feature = "feature")] u8: u8, u32: u32) {} "#, ); } + +#[test] +fn var_args() { + check_types( + r#" +#[lang = "va_list"] +pub struct VaListImpl<'f>; +fn my_fn(foo: ...) {} + //^^^ VaListImpl +"#, + ); +} From 9914d30450ffbd64c2acbfa44d22add033df2a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Jos=C3=A9=20Solano?= Date: Mon, 28 Nov 2022 19:10:16 -0800 Subject: [PATCH 061/478] Fix formatting --- crates/rust-analyzer/src/to_proto.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index fcc4d7be24d2..d1f805af1d46 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -1164,7 +1164,10 @@ pub(crate) fn code_lens( let r = runnable(snap, run)?; let lens_config = snap.config.lens(); - if lens_config.run && client_commands_config.run_single && r.args.workspace_root.is_some() { + if lens_config.run + && client_commands_config.run_single + && r.args.workspace_root.is_some() + { let command = command::run_single(&r, &title); acc.push(lsp_types::CodeLens { range: annotation_range, From 16bf32fcdd1398d7adeccfbd9e11cd8e2d3b4c11 Mon Sep 17 00:00:00 2001 From: Wilco Kusee Date: Tue, 29 Nov 2022 15:25:09 +0100 Subject: [PATCH 062/478] Update Chalk to version 87 --- Cargo.lock | 16 ++++++++-------- crates/hir-ty/Cargo.toml | 8 ++++---- crates/hir-ty/src/chalk_db.rs | 2 ++ crates/hir-ty/src/display.rs | 1 - 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41c5d36671de..84dda206db2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -171,9 +171,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chalk-derive" -version = "0.86.0" +version = "0.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5499d415d855b5094366a824815341893ad3de0ecb6048c430118bdae6d27402" +checksum = "d552b2fa341f5fc35c6b917b1d289d3c3a34d0b74e579390ea6192d6152a8cdb" dependencies = [ "proc-macro2", "quote", @@ -183,9 +183,9 @@ dependencies = [ [[package]] name = "chalk-ir" -version = "0.86.0" +version = "0.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3800118c76a48507b0eece3a01f3a429b5c478d203c493096e6040c67ab960e1" +checksum = "43aa55deff4e7fbdb09fa014543372f2c95a06835ac487b9ce57b5099b950838" dependencies = [ "bitflags", "chalk-derive", @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "chalk-recursive" -version = "0.86.0" +version = "0.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1baf60628fd73104d1f8562586a52d48f37f1e84435aab2e62674b1fd935b8c8" +checksum = "80179569cdc8b618b02e2b91b3314802778f4d73b75cd6fd2a451171df9d5611" dependencies = [ "chalk-derive", "chalk-ir", @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "chalk-solve" -version = "0.86.0" +version = "0.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9c3c068f9358786348e58a1b94ef0a5cf90a9810fc1f10fda896f0b5d80185" +checksum = "61213deefc36ba265ad01c4d997e18bcddf7922862a4594a47ca4575afb3dab4" dependencies = [ "chalk-derive", "chalk-ir", diff --git a/crates/hir-ty/Cargo.toml b/crates/hir-ty/Cargo.toml index a1d6835bfaed..802face85243 100644 --- a/crates/hir-ty/Cargo.toml +++ b/crates/hir-ty/Cargo.toml @@ -18,10 +18,10 @@ ena = "0.14.0" tracing = "0.1.35" rustc-hash = "1.1.0" scoped-tls = "1.0.0" -chalk-solve = { version = "0.86.0", default-features = false } -chalk-ir = "0.86.0" -chalk-recursive = { version = "0.86.0", default-features = false } -chalk-derive = "0.86.0" +chalk-solve = { version = "0.87.0", default-features = false } +chalk-ir = "0.87.0" +chalk-recursive = { version = "0.87.0", default-features = false } +chalk-derive = "0.87.0" la-arena = { version = "0.3.0", path = "../../lib/la-arena" } once_cell = "1.15.0" typed-arena = "2.0.1" diff --git a/crates/hir-ty/src/chalk_db.rs b/crates/hir-ty/src/chalk_db.rs index 43c3451cab37..1c2b8de7f784 100644 --- a/crates/hir-ty/src/chalk_db.rs +++ b/crates/hir-ty/src/chalk_db.rs @@ -568,6 +568,7 @@ fn well_known_trait_from_lang_attr(name: &str) -> Option { "sized" => WellKnownTrait::Sized, "unpin" => WellKnownTrait::Unpin, "unsize" => WellKnownTrait::Unsize, + "tuple_trait" => WellKnownTrait::Tuple, _ => return None, }) } @@ -585,6 +586,7 @@ fn lang_attr_from_well_known_trait(attr: WellKnownTrait) -> &'static str { WellKnownTrait::FnOnce => "fn_once", WellKnownTrait::Generator => "generator", WellKnownTrait::Sized => "sized", + WellKnownTrait::Tuple => "tuple_trait", WellKnownTrait::Unpin => "unpin", WellKnownTrait::Unsize => "unsize", } diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs index a22a4b170f61..9d453eef7168 100644 --- a/crates/hir-ty/src/display.rs +++ b/crates/hir-ty/src/display.rs @@ -1098,7 +1098,6 @@ impl HirDisplay for LifetimeData { write!(f, "{}", param_data.name) } LifetimeData::Static => write!(f, "'static"), - LifetimeData::Empty(_) => Ok(()), LifetimeData::Erased => Ok(()), LifetimeData::Phantom(_, _) => Ok(()), } From b65b02fd976d0174312e71ac8735ed8fecdfc74e Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 29 Nov 2022 18:50:21 +0100 Subject: [PATCH 063/478] Fix signature help not showing up when cursor is between `))` or `>>` --- crates/ide/src/signature_help.rs | 58 +++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/crates/ide/src/signature_help.rs b/crates/ide/src/signature_help.rs index e7412d27faf4..6045a787ecc2 100644 --- a/crates/ide/src/signature_help.rs +++ b/crates/ide/src/signature_help.rs @@ -74,20 +74,28 @@ pub(crate) fn signature_help(db: &RootDatabase, position: FilePosition) -> Optio ast::ArgList(arg_list) => { let cursor_outside = arg_list.r_paren_token().as_ref() == Some(&token); if cursor_outside { - return None; + continue; } - return signature_help_for_call(&sema, token); + return signature_help_for_call(&sema, arg_list, token); }, ast::GenericArgList(garg_list) => { let cursor_outside = garg_list.r_angle_token().as_ref() == Some(&token); if cursor_outside { - return None; + continue; } - return signature_help_for_generics(&sema, token); + return signature_help_for_generics(&sema, garg_list, token); }, _ => (), } } + + // Stop at multi-line expressions, since the signature of the outer call is not very + // helpful inside them. + if let Some(expr) = ast::Expr::cast(node.clone()) { + if expr.syntax().text().contains_char('\n') { + return None; + } + } } None @@ -95,10 +103,11 @@ pub(crate) fn signature_help(db: &RootDatabase, position: FilePosition) -> Optio fn signature_help_for_call( sema: &Semantics<'_, RootDatabase>, + arg_list: ast::ArgList, token: SyntaxToken, ) -> Option { // Find the calling expression and its NameRef - let mut node = token.parent()?; + let mut node = arg_list.syntax().parent()?; let calling_node = loop { if let Some(callable) = ast::CallableExpr::cast(node.clone()) { if callable @@ -109,14 +118,6 @@ fn signature_help_for_call( } } - // Stop at multi-line expressions, since the signature of the outer call is not very - // helpful inside them. - if let Some(expr) = ast::Expr::cast(node.clone()) { - if expr.syntax().text().contains_char('\n') { - return None; - } - } - node = node.parent()?; }; @@ -200,10 +201,11 @@ fn signature_help_for_call( fn signature_help_for_generics( sema: &Semantics<'_, RootDatabase>, + garg_list: ast::GenericArgList, token: SyntaxToken, ) -> Option { - let parent = token.parent()?; - let arg_list = parent + let arg_list = garg_list + .syntax() .ancestors() .filter_map(ast::GenericArgList::cast) .find(|list| list.syntax().text_range().contains(token.text_range().start()))?; @@ -770,6 +772,32 @@ fn f() { "#, expect![[]], ); + check( + r#" +fn foo(a: u8) -> u8 {a} +fn bar(a: u8) -> u8 {a} +fn f() { + foo(bar(123)$0) +} +"#, + expect![[r#" + fn foo(a: u8) -> u8 + ^^^^^ + "#]], + ); + check( + r#" +struct Vec(T); +struct Vec2(T); +fn f() { + let _: Vec2$0> +} +"#, + expect![[r#" + struct Vec2 + ^ + "#]], + ); } #[test] From 335cb2605010b29426a87c7ba15244f580fd92f7 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 29 Nov 2022 19:20:32 +0100 Subject: [PATCH 064/478] Version the inlay hint resolve data --- crates/rust-analyzer/src/from_proto.rs | 10 +++++++++- crates/rust-analyzer/src/handlers.rs | 22 ++++++++++++++++++++-- crates/rust-analyzer/src/lsp_ext.rs | 4 ++-- crates/rust-analyzer/src/to_proto.rs | 10 ++++++++-- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/crates/rust-analyzer/src/from_proto.rs b/crates/rust-analyzer/src/from_proto.rs index dd433b0f4d31..4e7095b3ce3b 100644 --- a/crates/rust-analyzer/src/from_proto.rs +++ b/crates/rust-analyzer/src/from_proto.rs @@ -67,7 +67,15 @@ pub(crate) fn file_range( text_document_identifier: lsp_types::TextDocumentIdentifier, range: lsp_types::Range, ) -> Result { - let file_id = file_id(snap, &text_document_identifier.uri)?; + file_range_uri(snap, &text_document_identifier.uri, range) +} + +pub(crate) fn file_range_uri( + snap: &GlobalStateSnapshot, + document: &lsp_types::Url, + range: lsp_types::Range, +) -> Result { + let file_id = file_id(snap, document)?; let line_index = snap.file_line_index(file_id)?; let range = text_range(&line_index, range)?; Ok(FileRange { file_id, range }) diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 4f318f39de5f..1604a02fb135 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -29,6 +29,7 @@ use project_model::{ManifestPath, ProjectWorkspace, TargetKind}; use serde_json::json; use stdx::{format_to, never}; use syntax::{algo, ast, AstNode, TextRange, TextSize}; +use tracing::error; use vfs::AbsPathBuf; use crate::{ @@ -1372,9 +1373,26 @@ pub(crate) fn handle_inlay_hints_resolve( let resolve_data: lsp_ext::InlayHintResolveData = serde_json::from_value(data)?; - let file_range = from_proto::file_range( + match snap.url_file_version(&resolve_data.text_document.uri) { + Some(version) if version == resolve_data.text_document.version => {} + Some(version) => { + error!( + "attempted inlayHints/resolve of '{}' at version {} while server version is {}", + resolve_data.text_document.uri, resolve_data.text_document.version, version, + ); + return Ok(hint); + } + None => { + error!( + "attempted inlayHints/resolve of unknown file '{}' at version {}", + resolve_data.text_document.uri, resolve_data.text_document.version, + ); + return Ok(hint); + } + } + let file_range = from_proto::file_range_uri( &snap, - resolve_data.text_document, + &resolve_data.text_document.uri, match resolve_data.position { PositionOrRange::Position(pos) => Range::new(pos, pos), PositionOrRange::Range(range) => range, diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs index 8cc5648f3ce0..a1df0b6d7dd5 100644 --- a/crates/rust-analyzer/src/lsp_ext.rs +++ b/crates/rust-analyzer/src/lsp_ext.rs @@ -3,11 +3,11 @@ use std::{collections::HashMap, path::PathBuf}; use lsp_types::request::Request; -use lsp_types::PositionEncodingKind; use lsp_types::{ notification::Notification, CodeActionKind, DocumentOnTypeFormattingParams, PartialResultParams, Position, Range, TextDocumentIdentifier, WorkDoneProgressParams, }; +use lsp_types::{PositionEncodingKind, VersionedTextDocumentIdentifier}; use serde::{Deserialize, Serialize}; pub enum AnalyzerStatus {} @@ -550,7 +550,7 @@ pub struct CompletionResolveData { #[derive(Debug, Serialize, Deserialize)] pub struct InlayHintResolveData { - pub text_document: TextDocumentIdentifier, + pub text_document: VersionedTextDocumentIdentifier, pub position: PositionOrRange, } diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index d1f805af1d46..3ce24bdd14fd 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -492,7 +492,10 @@ pub(crate) fn inlay_hint( let uri = url(snap, file_id); let line_index = snap.file_line_index(file_id).ok()?; - let text_document = lsp_types::TextDocumentIdentifier { uri }; + let text_document = lsp_types::VersionedTextDocumentIdentifier { + version: snap.url_file_version(&uri)?, + uri, + }; to_value(lsp_ext::InlayHintResolveData { text_document, position: lsp_ext::PositionOrRange::Position(position(&line_index, offset)), @@ -501,7 +504,10 @@ pub(crate) fn inlay_hint( } Some(ide::InlayTooltip::HoverRanged(file_id, text_range)) => { let uri = url(snap, file_id); - let text_document = lsp_types::TextDocumentIdentifier { uri }; + let text_document = lsp_types::VersionedTextDocumentIdentifier { + version: snap.url_file_version(&uri)?, + uri, + }; let line_index = snap.file_line_index(file_id).ok()?; to_value(lsp_ext::InlayHintResolveData { text_document, From 32f59cf01de639d0b23753687f5fb5b08c0758c0 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 29 Nov 2022 19:33:16 +0100 Subject: [PATCH 065/478] Update hash --- docs/dev/lsp-extensions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index fe316fcae9b8..5aced035d526 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md @@ -1,5 +1,5 @@ $DIR/issue-105645.rs:4:9 + | +LL | foo(&mut bref); + | --- ^^^^^^^^^ the trait `std::io::Write` is not implemented for `&[u8]` + | | + | required by a bound introduced by this call + | + = help: the trait `std::io::Write` is implemented for `&mut [u8]` +note: required by a bound in `foo` + --> $DIR/issue-105645.rs:8:21 + | +LL | fn foo(_: &mut impl std::io::Write) {} + | ^^^^^^^^^^^^^^ required by this bound in `foo` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. From ef4a9f0ac23f6d4a0e60bf7b299be8995ce686da Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Tue, 13 Dec 2022 16:39:00 +0100 Subject: [PATCH 111/478] Fix wrong config patching logic for addCallParenthesis --- crates/rust-analyzer/src/config/patch_old_style.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/rust-analyzer/src/config/patch_old_style.rs b/crates/rust-analyzer/src/config/patch_old_style.rs index 472e2e0eeeab..3b174a719342 100644 --- a/crates/rust-analyzer/src/config/patch_old_style.rs +++ b/crates/rust-analyzer/src/config/patch_old_style.rs @@ -116,7 +116,7 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { copy.pointer("/completion/addCallParenthesis"), ) { (Some(Value::Bool(true)), Some(Value::Bool(true))) => json!("fill_arguments"), - (Some(Value::Bool(true)), _) => json!("add_parentheses"), + (_, Some(Value::Bool(true))) => json!("add_parentheses"), (Some(Value::Bool(false)), Some(Value::Bool(false))) => json!("none"), (_, _) => return, }; From 9e0aaf4cf34ce0be50970e092b9e22e3c1e029f3 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 13 Dec 2022 17:32:25 +0100 Subject: [PATCH 112/478] Parse `..= X` patterns --- crates/parser/src/grammar/patterns.rs | 75 +++++++------ crates/parser/src/parser.rs | 2 +- .../parser/inline/ok/0058_range_pat.rast | 106 ++++++++++++++++++ .../parser/inline/ok/0058_range_pat.rs | 9 +- 4 files changed, 157 insertions(+), 35 deletions(-) diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs index bc1224af9b21..633e3e0a0b92 100644 --- a/crates/parser/src/grammar/patterns.rs +++ b/crates/parser/src/grammar/patterns.rs @@ -62,39 +62,50 @@ fn pattern_r(p: &mut Parser<'_>, recovery_set: TokenSet) { } fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { - if let Some(lhs) = atom_pat(p, recovery_set) { - // test range_pat - // fn main() { - // match 92 { - // 0 ... 100 => (), - // 101 ..= 200 => (), - // 200 .. 301 => (), - // 302 .. => (), - // } - // - // match Some(10 as u8) { - // Some(0) | None => (), - // Some(1..) => () - // } - // - // match () { - // S { a: 0 } => (), - // S { a: 1.. } => (), - // } - // - // match () { - // [0] => (), - // [1..] => (), - // } - // - // match (10 as u8, 5 as u8) { - // (0, _) => (), - // (1.., _) => () - // } - // } + // test range_pat + // fn main() { + // match 92 { + // 0 ... 100 => (), + // 101 ..= 200 => (), + // 200 .. 301 => (), + // 302 .. => (), + // ..= 303 => (), + // } + // + // match Some(10 as u8) { + // Some(0) | None => (), + // Some(1..) => (), + // Some(..=2) => (), + // } + // + // match () { + // S { a: 0 } => (), + // S { a: 1.. } => (), + // S { a: ..=2 } => (), + // } + // + // match () { + // [0] => (), + // [1..] => (), + // [..=2] => (), + // } + // + // match (10 as u8, 5 as u8) { + // (0, _) => (), + // (1.., _) => (), + // (..=2, _) => (), + // } + // } - // FIXME: support half_open_range_patterns (`..=2`), - // exclusive_range_pattern (`..5`) with missing lhs + if p.at(T![..=]) { + let m = p.start(); + p.bump(T![..=]); + atom_pat(p, recovery_set); + m.complete(p, RANGE_PAT); + return; + } + + if let Some(lhs) = atom_pat(p, recovery_set) { for range_op in [T![...], T![..=], T![..]] { if p.at(range_op) { let m = lhs.precede(p); diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index 48d8350e07ee..33d645b048b8 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -162,7 +162,7 @@ impl<'t> Parser<'t> { Marker::new(pos) } - /// Consume the next token if `kind` matches. + /// Consume the next token. Panics if the parser isn't currently at `kind`. pub(crate) fn bump(&mut self, kind: SyntaxKind) { assert!(self.eat(kind)); } diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast index cfef5d3f9538..d9981c50719f 100644 --- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast +++ b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast @@ -93,6 +93,21 @@ SOURCE_FILE L_PAREN "(" R_PAREN ")" COMMA "," + WHITESPACE "\n " + MATCH_ARM + RANGE_PAT + DOT2EQ "..=" + WHITESPACE " " + LITERAL_PAT + LITERAL + INT_NUMBER "303" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n\n " @@ -169,6 +184,28 @@ SOURCE_FILE TUPLE_EXPR L_PAREN "(" R_PAREN ")" + COMMA "," + WHITESPACE "\n " + MATCH_ARM + TUPLE_STRUCT_PAT + PATH + PATH_SEGMENT + NAME_REF + IDENT "Some" + L_PAREN "(" + RANGE_PAT + DOT2EQ "..=" + LITERAL_PAT + LITERAL + INT_NUMBER "2" + R_PAREN ")" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n\n " @@ -240,6 +277,36 @@ SOURCE_FILE L_PAREN "(" R_PAREN ")" COMMA "," + WHITESPACE "\n " + MATCH_ARM + RECORD_PAT + PATH + PATH_SEGMENT + NAME_REF + IDENT "S" + WHITESPACE " " + RECORD_PAT_FIELD_LIST + L_CURLY "{" + WHITESPACE " " + RECORD_PAT_FIELD + NAME_REF + IDENT "a" + COLON ":" + WHITESPACE " " + RANGE_PAT + DOT2EQ "..=" + LITERAL_PAT + LITERAL + INT_NUMBER "2" + WHITESPACE " " + R_CURLY "}" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n\n " @@ -285,6 +352,23 @@ SOURCE_FILE L_PAREN "(" R_PAREN ")" COMMA "," + WHITESPACE "\n " + MATCH_ARM + SLICE_PAT + L_BRACK "[" + RANGE_PAT + DOT2EQ "..=" + LITERAL_PAT + LITERAL + INT_NUMBER "2" + R_BRACK "]" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n\n " @@ -360,6 +444,28 @@ SOURCE_FILE TUPLE_EXPR L_PAREN "(" R_PAREN ")" + COMMA "," + WHITESPACE "\n " + MATCH_ARM + TUPLE_PAT + L_PAREN "(" + RANGE_PAT + DOT2EQ "..=" + LITERAL_PAT + LITERAL + INT_NUMBER "2" + COMMA "," + WHITESPACE " " + WILDCARD_PAT + UNDERSCORE "_" + R_PAREN ")" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," WHITESPACE "\n " R_CURLY "}" WHITESPACE "\n" diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs index 2411d51096b3..b54354211d2d 100644 --- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs +++ b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs @@ -4,25 +4,30 @@ fn main() { 101 ..= 200 => (), 200 .. 301 => (), 302 .. => (), + ..= 303 => (), } match Some(10 as u8) { Some(0) | None => (), - Some(1..) => () + Some(1..) => (), + Some(..=2) => (), } match () { S { a: 0 } => (), S { a: 1.. } => (), + S { a: ..=2 } => (), } match () { [0] => (), [1..] => (), + [..=2] => (), } match (10 as u8, 5 as u8) { (0, _) => (), - (1.., _) => () + (1.., _) => (), + (..=2, _) => (), } } From a77336b1aab8f8abbdca6915a2f57ae9cfe5d417 Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Wed, 14 Dec 2022 02:12:24 +0900 Subject: [PATCH 113/478] Implement inline macro handling for AsciiDoc-to-Markdown conversion --- xtask/src/publish/notes.rs | 182 +++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) diff --git a/xtask/src/publish/notes.rs b/xtask/src/publish/notes.rs index 3ff0f5a28078..974baabefeaf 100644 --- a/xtask/src/publish/notes.rs +++ b/xtask/src/publish/notes.rs @@ -1,5 +1,6 @@ use anyhow::{anyhow, bail}; use std::{ + borrow::Cow, io::{BufRead, Lines}, iter::Peekable, }; @@ -431,6 +432,141 @@ impl ListMarker { } } +fn process_inline_macros(line: &str) -> anyhow::Result> { + let mut chars = line.char_indices(); + loop { + let (start, end, a_macro) = match get_next_line_component(&mut chars) { + Component::None => break, + Component::Text => continue, + Component::Macro(s, e, m) => (s, e, m), + }; + let mut src = line.chars(); + let mut processed = String::new(); + for _ in 0..start { + processed.push(src.next().unwrap()); + } + processed.push_str(a_macro.process()?.as_str()); + for _ in start..end { + let _ = src.next().unwrap(); + } + let mut pos = end; + + loop { + let (start, end, a_macro) = match get_next_line_component(&mut chars) { + Component::None => break, + Component::Text => continue, + Component::Macro(s, e, m) => (s, e, m), + }; + for _ in pos..start { + processed.push(src.next().unwrap()); + } + processed.push_str(a_macro.process()?.as_str()); + for _ in start..end { + let _ = src.next().unwrap(); + } + pos = end; + } + for ch in src { + processed.push(ch); + } + return Ok(Cow::Owned(processed)); + } + Ok(Cow::Borrowed(line)) +} + +fn get_next_line_component(chars: &mut std::str::CharIndices<'_>) -> Component { + let (start, mut macro_name) = match chars.next() { + None => return Component::None, + Some((_, ch)) if ch == ' ' || !ch.is_ascii() => return Component::Text, + Some((pos, ch)) => (pos, String::from(ch)), + }; + loop { + match chars.next() { + None => return Component::None, + Some((_, ch)) if ch == ' ' || !ch.is_ascii() => return Component::Text, + Some((_, ':')) => break, + Some((_, ch)) => macro_name.push(ch), + } + } + + let mut macro_target = String::new(); + loop { + match chars.next() { + None => return Component::None, + Some((_, ' ')) => return Component::Text, + Some((_, '[')) => break, + Some((_, ch)) => macro_target.push(ch), + } + } + + let mut attr_value = String::new(); + let end = loop { + match chars.next() { + None => return Component::None, + Some((pos, ']')) => break pos + 1, + Some((_, ch)) => attr_value.push(ch), + } + }; + + Component::Macro(start, end, Macro::new(macro_name, macro_target, attr_value)) +} + +enum Component { + None, + Text, + Macro(usize, usize, Macro), +} + +struct Macro { + name: String, + target: String, + attrs: String, +} + +impl Macro { + fn new(name: String, target: String, attrs: String) -> Self { + Self { name, target, attrs } + } + + fn process(&self) -> anyhow::Result { + let name = &self.name; + let text = match name.as_str() { + "https" => { + let url = &self.target; + let anchor_text = &self.attrs; + format!("[{anchor_text}](https:{url})") + } + "image" => { + let url = &self.target; + let alt = &self.attrs; + format!("![{alt}]({url})") + } + "kbd" => { + let keys = self.attrs.split('+').map(|k| Cow::Owned(format!("{k}"))); + keys.collect::>().join("+") + } + "pr" => { + let pr = &self.target; + let url = format!("https://github.com/rust-analyzer/rust-analyzer/pull/{pr}"); + format!("[`#{pr}`]({url})") + } + "commit" => { + let hash = &self.target; + let short = &hash[0..7]; + let url = format!("https://github.com/rust-analyzer/rust-analyzer/commit/{hash}"); + format!("[`{short}`]({url})") + } + "release" => { + let date = &self.target; + let url = format!("https://github.com/rust-analyzer/rust-analyzer/releases/{date}"); + format!("[`{date}`]({url})") + } + _ => bail!("macro not supported: {name}"), + }; + Ok(text) + } +} + #[cfg(test)] mod tests { use super::*; @@ -612,4 +748,50 @@ This is a plain listing. assert_eq!(actual, expected); } + + macro_rules! test_inline_macro_processing { + ($(( + $name:ident, + $input:expr, + $expected:expr + ),)*) => ($( + #[test] + fn $name() { + let input = $input; + let actual = process_inline_macros(&input).unwrap(); + let expected = $expected; + assert_eq!(actual, expected) + } + )*); + } + + test_inline_macro_processing! { + (inline_macro_processing_for_empty_line, "", ""), + (inline_macro_processing_for_line_with_no_macro, "foo bar", "foo bar"), + ( + inline_macro_processing_for_macro_in_line_start, + "kbd::[Ctrl+T] foo", + "Ctrl+T foo" + ), + ( + inline_macro_processing_for_macro_in_line_end, + "foo kbd::[Ctrl+T]", + "foo Ctrl+T" + ), + ( + inline_macro_processing_for_macro_in_the_middle_of_line, + "foo kbd::[Ctrl+T] foo", + "foo Ctrl+T foo" + ), + ( + inline_macro_processing_for_several_macros, + "foo kbd::[Ctrl+T] foo kbd::[Enter] foo", + "foo Ctrl+T foo Enter foo" + ), + ( + inline_macro_processing_for_several_macros_without_text_in_between, + "foo kbd::[Ctrl+T]kbd::[Enter] foo", + "foo Ctrl+TEnter foo" + ), + } } From fd5be91d944f07b8eae8729a20d69d086bd12a94 Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Wed, 14 Dec 2022 13:33:20 +0900 Subject: [PATCH 114/478] Integrate inline macro support with the main AsciiDoc-to-Markdown conversion process --- xtask/src/publish/notes.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/xtask/src/publish/notes.rs b/xtask/src/publish/notes.rs index 974baabefeaf..03c0b6a0c64c 100644 --- a/xtask/src/publish/notes.rs +++ b/xtask/src/publish/notes.rs @@ -74,8 +74,9 @@ impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { fn process_document_title(&mut self) -> anyhow::Result<()> { if let Some(Ok(line)) = self.iter.next() { if let Some((level, title)) = get_title(&line) { + let title = process_inline_macros(title)?; if level == 1 { - self.write_title(level, title); + self.write_title(level, &title); return Ok(()); } } @@ -90,6 +91,7 @@ impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { if get_list_item(&line).is_some() { let line = self.iter.next().unwrap()?; + let line = process_inline_macros(&line)?; let (marker, item) = get_list_item(&line).unwrap(); nesting.set_current(marker); self.write_list_item(item, &nesting); @@ -258,6 +260,7 @@ impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { self.write_indent(level); let line = self.iter.next().unwrap()?; let line = line.trim_start(); + let line = process_inline_macros(&line)?; if line.ends_with('+') { let line = &line[..(line.len() - 1)]; self.output.push_str(line); @@ -585,7 +588,7 @@ Release: release:2022-01-01[] == New Features -* pr:1111[] foo bar baz +* **BREAKING** pr:1111[] shortcut kbd:[ctrl+r] - hyphen-prefixed list item * nested list item ** `foo` -> `foofoo` @@ -645,9 +648,11 @@ paragraph == Another Section * foo bar baz -* foo bar baz +* list item with an inline image + image:https://example.com/animation.gif[] The highlight of the month is probably pr:1111[]. +See https://example.com/manual[online manual] for more information. [source,bash] ---- @@ -668,12 +673,12 @@ This is a plain listing. Hello! -Commit: commit:0123456789abcdef0123456789abcdef01234567[] \\ -Release: release:2022-01-01[] +Commit: [`0123456`](https://github.com/rust-analyzer/rust-analyzer/commit/0123456789abcdef0123456789abcdef01234567) \\ +Release: [`2022-01-01`](https://github.com/rust-analyzer/rust-analyzer/releases/2022-01-01) ## New Features -- pr:1111[] foo bar baz +- **BREAKING** [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111) shortcut ctrl+r - hyphen-prefixed list item - nested list item - `foo` -> `foofoo` @@ -728,9 +733,11 @@ Release: release:2022-01-01[] ## Another Section - foo bar baz -- foo bar baz +- list item with an inline image + ![](https://example.com/animation.gif) -The highlight of the month is probably pr:1111[]. +The highlight of the month is probably [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111). +See [online manual](https://example.com/manual) for more information. ```bash rustup update nightly From afefbb66c3abea2e9b3acacddf7516b24c2bbeb8 Mon Sep 17 00:00:00 2001 From: Deep Majumder Date: Wed, 14 Dec 2022 10:30:44 +0530 Subject: [PATCH 115/478] Clean up mut keyword check --- .../src/traits/error_reporting/suggestions.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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 2323161039a2..554cab3fb6cb 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1369,13 +1369,9 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { .span_take_while(span, |c| c.is_whitespace() || *c == '&'); if points_at_arg && mutability.is_not() && refs_number > 0 { // If we have a call like foo(&mut buf), then don't suggest foo(&mut mut buf) - if "mut" - == snippet - .chars() - .filter(|c| !c.is_whitespace()) - .skip(refs_number) - .take(3) - .collect::() + if snippet + .trim_start_matches(|c: char| c.is_whitespace() || c == '&') + .starts_with("mut") { return; } From c78d759ab3f201e29f5fcd9ec06e05744e4f6dd4 Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Wed, 14 Dec 2022 14:14:55 +0900 Subject: [PATCH 116/478] Add a link to the original changelog from release notes on GitHub Releases --- xtask/src/publish.rs | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/xtask/src/publish.rs b/xtask/src/publish.rs index 2decd85c18a2..c8249929bdc7 100644 --- a/xtask/src/publish.rs +++ b/xtask/src/publish.rs @@ -8,8 +8,13 @@ use xshell::{cmd, Shell}; impl flags::PublishReleaseNotes { pub(crate) fn run(self, sh: &Shell) -> Result<()> { let asciidoc = sh.read_file(&self.changelog)?; - let markdown = notes::convert_asciidoc_to_markdown(std::io::Cursor::new(&asciidoc))?; - let tag_name = extract_tag_name(&self.changelog)?; + let mut markdown = notes::convert_asciidoc_to_markdown(std::io::Cursor::new(&asciidoc))?; + let file_name = check_file_name(self.changelog)?; + let tag_name = &file_name[0..10]; + let original_changelog_url = create_original_changelog_url(&file_name); + let additional_paragraph = + format!("\nSee also [original changelog]({original_changelog_url})."); + markdown.push_str(&additional_paragraph); if self.dry_run { println!("{}", markdown); } else { @@ -19,7 +24,7 @@ impl flags::PublishReleaseNotes { } } -fn extract_tag_name>(path: P) -> Result { +fn check_file_name>(path: P) -> Result { let file_name = path .as_ref() .file_name() @@ -39,12 +44,23 @@ fn extract_tag_name>(path: P) -> Result { && chars.next().unwrap().is_ascii_digit() && chars.next().unwrap().is_ascii_digit() { - Ok(file_name[0..10].to_owned()) + Ok(file_name.to_string()) } else { - bail!("extraction of date from the file name failed") + bail!("unexpected file name format; no date information prefixed") } } +fn create_original_changelog_url(file_name: &str) -> String { + let year = &file_name[0..4]; + let month = &file_name[5..7]; + let day = &file_name[8..10]; + let mut stem = &file_name[11..]; + if let Some(stripped) = stem.strip_suffix(".adoc") { + stem = stripped; + } + format!("https://rust-analyzer.github.io/thisweek/{year}/{month}/{day}/{stem}.html") +} + fn update_release(sh: &Shell, tag_name: &str, release_notes: &str) -> Result<()> { let token = match env::var("GITHUB_TOKEN") { Ok(token) => token, @@ -78,3 +94,16 @@ fn update_release(sh: &Shell, tag_name: &str, release_notes: &str) -> Result<()> Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn original_changelog_url_creation() { + let input = "2019-07-24-changelog-0.adoc"; + let actual = create_original_changelog_url(&input); + let expected = "https://rust-analyzer.github.io/thisweek/2019/07/24/changelog-0.html"; + assert_eq!(actual, expected); + } +} From 37b404d6c63c654fe105b8c9e745b532de5064cf Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Wed, 14 Dec 2022 18:49:26 +0900 Subject: [PATCH 117/478] minor: Set the `experimental` AsciiDoc document attribute to generated draft changelog The keyboard macro (`kbd:[...]`) requires this attribute. This default change will prevent issues like https://github.com/rust-analyzer/rust-analyzer.github.io/pull/191 . --- xtask/src/release/changelog.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs index 2647f7794f2c..cbf79b657c0a 100644 --- a/xtask/src/release/changelog.rs +++ b/xtask/src/release/changelog.rs @@ -65,6 +65,7 @@ pub(crate) fn get_changelog( "\ = Changelog #{} :sectanchors: +:experimental: :page-layout: post Commit: commit:{}[] + From 12b05d241698fb3ecb18eaebc75cdce85abb1013 Mon Sep 17 00:00:00 2001 From: rami3l Date: Tue, 13 Dec 2022 12:25:44 +0800 Subject: [PATCH 118/478] fix: add generic `TypeBoundList` in generated derivable impl --- .../replace_derive_with_manual_impl.rs | 64 ++++++++++++++++++- crates/ide-assists/src/utils.rs | 20 +++++- crates/syntax/src/ast/make.rs | 21 ++++-- 3 files changed, 98 insertions(+), 7 deletions(-) diff --git a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs index 2854701c088e..a6693d7d790c 100644 --- a/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs @@ -994,6 +994,68 @@ impl PartialEq for Foo { ) } + #[test] + fn add_custom_impl_partial_eq_tuple_enum_generic() { + check_assist( + replace_derive_with_manual_impl, + r#" +//- minicore: eq, derive +#[derive(Partial$0Eq)] +enum Either { + Left(T), + Right(U), +} +"#, + r#" +enum Either { + Left(T), + Right(U), +} + +impl PartialEq for Either { + $0fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::Left(l0), Self::Left(r0)) => l0 == r0, + (Self::Right(l0), Self::Right(r0)) => l0 == r0, + _ => false, + } + } +} +"#, + ) + } + + #[test] + fn add_custom_impl_partial_eq_tuple_enum_generic_existing_bounds() { + check_assist( + replace_derive_with_manual_impl, + r#" +//- minicore: eq, derive +#[derive(Partial$0Eq)] +enum Either { + Left(T), + Right(U), +} +"#, + r#" +enum Either { + Left(T), + Right(U), +} + +impl PartialEq for Either { + $0fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::Left(l0), Self::Left(r0)) => l0 == r0, + (Self::Right(l0), Self::Right(r0)) => l0 == r0, + _ => false, + } + } +} +"#, + ) + } + #[test] fn add_custom_impl_partial_eq_record_enum() { check_assist( @@ -1170,7 +1232,7 @@ struct Foo { bar: U, } -impl Default for Foo { +impl Default for Foo { $0fn default() -> Self { Self { foo: Default::default(), bar: Default::default() } } diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index f38a2d04ff6e..2dcf56501d6e 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -5,6 +5,7 @@ use std::ops; pub(crate) use gen_trait_fn_body::gen_trait_fn_body; use hir::{db::HirDatabase, HirDisplay, Semantics}; use ide_db::{famous_defs::FamousDefs, path_transform::PathTransform, RootDatabase, SnippetCap}; +use itertools::Itertools; use stdx::format_to; use syntax::{ ast::{ @@ -452,15 +453,32 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str let lifetime_params = generic_params.lifetime_params().map(ast::GenericParam::LifetimeParam); let ty_or_const_params = generic_params.type_or_const_params().filter_map(|param| { - // remove defaults since they can't be specified in impls match param { ast::TypeOrConstParam::Type(param) => { let param = param.clone_for_update(); + // remove defaults since they can't be specified in impls param.remove_default(); + let mut bounds = param + .type_bound_list() + .map_or_else(Vec::new, |it| it.bounds().collect_vec()); + // `{ty_param}: {trait_text}` + if let Some(trait_) = trait_text { + // Defense against the following cases: + // - The trait is undetermined, e.g. `$0`. + // - The trait is a `From`, e.g. `From`. + if !trait_.starts_with('$') + && !matches!(trait_.split_once('<'), Some((left, _right)) if left.trim() == "From") + { + bounds.push(make::type_bound(trait_)); + } + }; + let param = + make::type_param(param.name().unwrap(), make::type_bound_list(bounds)); Some(ast::GenericParam::TypeParam(param)) } ast::TypeOrConstParam::Const(param) => { let param = param.clone_for_update(); + // remove defaults since they can't be specified in impls param.remove_default(); Some(ast::GenericParam::ConstParam(param)) } diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index 8c26009add2b..11822361f40f 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs @@ -719,11 +719,22 @@ pub fn param_list( ast_from_text(&list) } -pub fn type_param(name: ast::Name, ty: Option) -> ast::TypeParam { - let bound = match ty { - Some(it) => format!(": {it}"), - None => String::new(), - }; +pub fn type_bound(bound: &str) -> ast::TypeBound { + ast_from_text(&format!("fn f() {{ }}")) +} + +pub fn type_bound_list( + bounds: impl IntoIterator, +) -> Option { + let bounds = bounds.into_iter().map(|it| it.to_string()).unique().join(" + "); + if bounds.is_empty() { + return None; + } + Some(ast_from_text(&format!("fn f() {{ }}"))) +} + +pub fn type_param(name: ast::Name, bounds: Option) -> ast::TypeParam { + let bound = bounds.map_or_else(String::new, |it| format!(": {it}")); ast_from_text(&format!("fn f<{name}{bound}>() {{ }}")) } From bb99d2a6fbcbd5db75a004fa4135413b24ebe3dc Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Wed, 14 Dec 2022 21:56:55 +0900 Subject: [PATCH 119/478] fix: resolve all inference vars in `InferenceResult::assoc_resolutions` --- crates/hir-ty/src/infer.rs | 3 +++ crates/ide/src/hover/tests.rs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index a42f8a0ac028..7cf4fb10506f 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -535,6 +535,9 @@ impl<'a> InferenceContext<'a> { for (_, subst) in result.method_resolutions.values_mut() { *subst = table.resolve_completely(subst.clone()); } + for (_, subst) in result.assoc_resolutions.values_mut() { + *subst = table.resolve_completely(subst.clone()); + } for adjustment in result.expr_adjustments.values_mut().flatten() { adjustment.target = table.resolve_completely(adjustment.target.clone()); } diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 62404afc4b7d..3580c4570263 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -4079,6 +4079,37 @@ const FOO$0: f64 = 1.0f64; ); } +#[test] +fn hover_const_eval_in_generic_trait() { + // Doesn't compile, but we shouldn't crash. + check( + r#" +trait Trait { + const FOO: bool = false; +} +struct S(T); +impl Trait for S { + const FOO: bool = true; +} + +fn test() { + S::FOO$0; +} +"#, + expect![[r#" + *FOO* + + ```rust + test + ``` + + ```rust + const FOO: bool = true + ``` + "#]], + ); +} + #[test] fn hover_const_pat() { check( From 11331b1030fba551df4c7fc2babd44496040030f Mon Sep 17 00:00:00 2001 From: Tomer Zeitune Date: Sun, 27 Nov 2022 00:35:52 +0200 Subject: [PATCH 120/478] Enable atomic cas for bpf targets --- compiler/rustc_target/src/spec/bpf_base.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_target/src/spec/bpf_base.rs b/compiler/rustc_target/src/spec/bpf_base.rs index baf36587147a..2b00cda44b51 100644 --- a/compiler/rustc_target/src/spec/bpf_base.rs +++ b/compiler/rustc_target/src/spec/bpf_base.rs @@ -6,7 +6,7 @@ pub fn opts(endian: Endian) -> TargetOptions { allow_asm: true, endian, linker_flavor: LinkerFlavor::Bpf, - atomic_cas: false, + atomic_cas: true, dynamic_linking: true, no_builtins: true, panic_strategy: PanicStrategy::Abort, @@ -19,6 +19,10 @@ pub fn opts(endian: Endian) -> TargetOptions { obj_is_bitcode: true, requires_lto: false, singlethread: true, + // When targeting the `v3` cpu in llvm, 32-bit atomics are also supported. + // But making this value change based on the target cpu can be mostly confusing + // and would require a bit of a refactor. + min_atomic_width: Some(64), max_atomic_width: Some(64), ..Default::default() } From 6a295fcd3b81498a7c2a83c8bb2d6d3e3c33c722 Mon Sep 17 00:00:00 2001 From: Dezhi Wu Date: Thu, 15 Dec 2022 12:46:02 +0800 Subject: [PATCH 121/478] fix: add a check for `if` token in patterns parser Closes #13776 --- crates/parser/src/grammar/patterns.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs index 633e3e0a0b92..8de42c99eecc 100644 --- a/crates/parser/src/grammar/patterns.rs +++ b/crates/parser/src/grammar/patterns.rs @@ -126,7 +126,10 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { // ^ // `[0..]` // ^ - if matches!(p.current(), T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']']) { + if matches!( + p.current(), + T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']'] | T![if] + ) { // test half_open_range_pat // fn f() { // let 0 .. = 1u32; From 0c6fd4dbe59b12ab2d063dc6ba3c5003c1a389ed Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Thu, 15 Dec 2022 14:25:59 +0900 Subject: [PATCH 122/478] Split the input/output data of the conversion from the test code to the respective files --- xtask/src/publish/notes.rs | 180 +----------------------------------- xtask/test_data/expected.md | 81 ++++++++++++++++ xtask/test_data/input.adoc | 90 ++++++++++++++++++ 3 files changed, 175 insertions(+), 176 deletions(-) create mode 100644 xtask/test_data/expected.md create mode 100644 xtask/test_data/input.adoc diff --git a/xtask/src/publish/notes.rs b/xtask/src/publish/notes.rs index 03c0b6a0c64c..3584278c19b2 100644 --- a/xtask/src/publish/notes.rs +++ b/xtask/src/publish/notes.rs @@ -573,185 +573,13 @@ impl Macro { #[cfg(test)] mod tests { use super::*; + use std::fs::read_to_string; #[test] fn test_asciidoc_to_markdown_conversion() { - let input = "\ -= Changelog #256 -:sectanchors: -:page-layout: post - -Hello! - -Commit: commit:0123456789abcdef0123456789abcdef01234567[] + -Release: release:2022-01-01[] - -== New Features - -* **BREAKING** pr:1111[] shortcut kbd:[ctrl+r] -- hyphen-prefixed list item -* nested list item -** `foo` -> `foofoo` -** `bar` -> `barbar` -* listing in the secondary level -. install -. add to config -+ -[source,json] ----- -{\"foo\":\"bar\"} ----- -* list item with continuation -+ -image::https://example.com/animation.gif[] -+ -image::https://example.com/animation.gif[\"alt text\"] -+ -video::https://example.com/movie.mp4[options=loop] -+ -video::https://example.com/movie.mp4[options=\"autoplay,loop\"] -+ -.Image -image::https://example.com/animation.gif[] -+ -.Video -video::https://example.com/movie.mp4[options=loop] -+ -[source,bash] ----- -rustup update nightly ----- -+ ----- -This is a plain listing. ----- -* single line item followed by empty lines - -* multiline list -item followed by empty lines - -* multiline list - item with indent - -* multiline list -item not followed by empty lines -* multiline list -item followed by different marker -** foo -** bar -* multiline list -item followed by list continuation -+ -paragraph -paragraph - -== Another Section - -* foo bar baz -* list item with an inline image - image:https://example.com/animation.gif[] - -The highlight of the month is probably pr:1111[]. -See https://example.com/manual[online manual] for more information. - -[source,bash] ----- -rustup update nightly ----- - -[source] ----- -rustup update nightly ----- - ----- -This is a plain listing. ----- -"; - let expected = "\ -# Changelog #256 - -Hello! - -Commit: [`0123456`](https://github.com/rust-analyzer/rust-analyzer/commit/0123456789abcdef0123456789abcdef01234567) \\ -Release: [`2022-01-01`](https://github.com/rust-analyzer/rust-analyzer/releases/2022-01-01) - -## New Features - -- **BREAKING** [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111) shortcut ctrl+r - - hyphen-prefixed list item -- nested list item - - `foo` -> `foofoo` - - `bar` -> `barbar` -- listing in the secondary level - 1. install - 1. add to config - - ```json - {\"foo\":\"bar\"} - ``` -- list item with continuation - - ![](https://example.com/animation.gif) - - ![alt text](https://example.com/animation.gif) - - - - - - _Image_\\ - ![](https://example.com/animation.gif) - - _Video_\\ - - - ```bash - rustup update nightly - ``` - - ``` - This is a plain listing. - ``` -- single line item followed by empty lines -- multiline list - item followed by empty lines -- multiline list - item with indent -- multiline list - item not followed by empty lines -- multiline list - item followed by different marker - - foo - - bar -- multiline list - item followed by list continuation - - paragraph - paragraph - -## Another Section - -- foo bar baz -- list item with an inline image - ![](https://example.com/animation.gif) - -The highlight of the month is probably [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111). -See [online manual](https://example.com/manual) for more information. - -```bash -rustup update nightly -``` - -``` -rustup update nightly -``` - -``` -This is a plain listing. -``` -"; - let actual = convert_asciidoc_to_markdown(std::io::Cursor::new(input)).unwrap(); + let input = read_to_string("test_data/input.adoc").unwrap(); + let expected = read_to_string("test_data/expected.md").unwrap(); + let actual = convert_asciidoc_to_markdown(std::io::Cursor::new(&input)).unwrap(); assert_eq!(actual, expected); } diff --git a/xtask/test_data/expected.md b/xtask/test_data/expected.md new file mode 100644 index 000000000000..19c940c67bdc --- /dev/null +++ b/xtask/test_data/expected.md @@ -0,0 +1,81 @@ +# Changelog #256 + +Hello! + +Commit: [`0123456`](https://github.com/rust-analyzer/rust-analyzer/commit/0123456789abcdef0123456789abcdef01234567) \ +Release: [`2022-01-01`](https://github.com/rust-analyzer/rust-analyzer/releases/2022-01-01) + +## New Features + +- **BREAKING** [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111) shortcut ctrl+r + - hyphen-prefixed list item +- nested list item + - `foo` -> `foofoo` + - `bar` -> `barbar` +- listing in the secondary level + 1. install + 1. add to config + + ```json + {"foo":"bar"} + ``` +- list item with continuation + + ![](https://example.com/animation.gif) + + ![alt text](https://example.com/animation.gif) + + + + + + _Image_\ + ![](https://example.com/animation.gif) + + _Video_\ + + + ```bash + rustup update nightly + ``` + + ``` + This is a plain listing. + ``` +- single line item followed by empty lines +- multiline list + item followed by empty lines +- multiline list + item with indent +- multiline list + item not followed by empty lines +- multiline list + item followed by different marker + - foo + - bar +- multiline list + item followed by list continuation + + paragraph + paragraph + +## Another Section + +- foo bar baz +- list item with an inline image + ![](https://example.com/animation.gif) + +The highlight of the month is probably [`#1111`](https://github.com/rust-analyzer/rust-analyzer/pull/1111). +See [online manual](https://example.com/manual) for more information. + +```bash +rustup update nightly +``` + +``` +rustup update nightly +``` + +``` +This is a plain listing. +``` diff --git a/xtask/test_data/input.adoc b/xtask/test_data/input.adoc new file mode 100644 index 000000000000..105bd8df0db7 --- /dev/null +++ b/xtask/test_data/input.adoc @@ -0,0 +1,90 @@ += Changelog #256 +:sectanchors: +:page-layout: post + +Hello! + +Commit: commit:0123456789abcdef0123456789abcdef01234567[] + +Release: release:2022-01-01[] + +== New Features + +* **BREAKING** pr:1111[] shortcut kbd:[ctrl+r] +- hyphen-prefixed list item +* nested list item +** `foo` -> `foofoo` +** `bar` -> `barbar` +* listing in the secondary level +. install +. add to config ++ +[source,json] +---- +{"foo":"bar"} +---- +* list item with continuation ++ +image::https://example.com/animation.gif[] ++ +image::https://example.com/animation.gif["alt text"] ++ +video::https://example.com/movie.mp4[options=loop] ++ +video::https://example.com/movie.mp4[options="autoplay,loop"] ++ +.Image +image::https://example.com/animation.gif[] ++ +.Video +video::https://example.com/movie.mp4[options=loop] ++ +[source,bash] +---- +rustup update nightly +---- ++ +---- +This is a plain listing. +---- +* single line item followed by empty lines + +* multiline list +item followed by empty lines + +* multiline list + item with indent + +* multiline list +item not followed by empty lines +* multiline list +item followed by different marker +** foo +** bar +* multiline list +item followed by list continuation ++ +paragraph +paragraph + +== Another Section + +* foo bar baz +* list item with an inline image + image:https://example.com/animation.gif[] + +The highlight of the month is probably pr:1111[]. +See https://example.com/manual[online manual] for more information. + +[source,bash] +---- +rustup update nightly +---- + +[source] +---- +rustup update nightly +---- + +---- +This is a plain listing. +---- From fccc094712c734de24ba87ed3f4290fa17632a8b Mon Sep 17 00:00:00 2001 From: Noritada Kobayashi Date: Thu, 15 Dec 2022 14:52:23 +0900 Subject: [PATCH 123/478] Make minor improvements and cleanups --- xtask/src/publish.rs | 14 +++++++------- xtask/src/publish/notes.rs | 21 ++++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/xtask/src/publish.rs b/xtask/src/publish.rs index c8249929bdc7..79b5f3d2f61b 100644 --- a/xtask/src/publish.rs +++ b/xtask/src/publish.rs @@ -16,9 +16,9 @@ impl flags::PublishReleaseNotes { format!("\nSee also [original changelog]({original_changelog_url})."); markdown.push_str(&additional_paragraph); if self.dry_run { - println!("{}", markdown); + println!("{markdown}"); } else { - update_release(sh, &tag_name, &markdown)?; + update_release(sh, tag_name, &markdown)?; } Ok(()) } @@ -67,7 +67,7 @@ fn update_release(sh: &Shell, tag_name: &str, release_notes: &str) -> Result<()> Err(_) => bail!("Please obtain a personal access token from https://github.com/settings/tokens and set the `GITHUB_TOKEN` environment variable."), }; let accept = "Accept: application/vnd.github+json"; - let authorization = format!("Authorization: Bearer {}", token); + let authorization = format!("Authorization: Bearer {token}"); let api_version = "X-GitHub-Api-Version: 2022-11-28"; let release_url = "https://api.github.com/repos/rust-lang/rust-analyzer/releases"; @@ -80,10 +80,10 @@ fn update_release(sh: &Shell, tag_name: &str, release_notes: &str) -> Result<()> let mut patch = String::new(); write_json::object(&mut patch) - .string("tag_name", &tag_name) + .string("tag_name", tag_name) .string("target_commitish", "master") - .string("name", &tag_name) - .string("body", &release_notes) + .string("name", tag_name) + .string("body", release_notes) .bool("draft", false) .bool("prerelease", false); let _ = cmd!( @@ -102,7 +102,7 @@ mod tests { #[test] fn original_changelog_url_creation() { let input = "2019-07-24-changelog-0.adoc"; - let actual = create_original_changelog_url(&input); + let actual = create_original_changelog_url(input); let expected = "https://rust-analyzer.github.io/thisweek/2019/07/24/changelog-0.html"; assert_eq!(actual, expected); } diff --git a/xtask/src/publish/notes.rs b/xtask/src/publish/notes.rs index 3584278c19b2..c30267295bf4 100644 --- a/xtask/src/publish/notes.rs +++ b/xtask/src/publish/notes.rs @@ -5,9 +5,9 @@ use std::{ iter::Peekable, }; -const LISTING_DELIMITER: &'static str = "----"; -const IMAGE_BLOCK_PREFIX: &'static str = "image::"; -const VIDEO_BLOCK_PREFIX: &'static str = "video::"; +const LISTING_DELIMITER: &str = "----"; +const IMAGE_BLOCK_PREFIX: &str = "image::"; +const VIDEO_BLOCK_PREFIX: &str = "video::"; struct Converter<'a, 'b, R: BufRead> { iter: &'a mut Peekable>, @@ -89,7 +89,7 @@ impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { while let Some(line) = self.iter.peek() { let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; - if get_list_item(&line).is_some() { + if get_list_item(line).is_some() { let line = self.iter.next().unwrap()?; let line = process_inline_macros(&line)?; let (marker, item) = get_list_item(&line).unwrap(); @@ -253,17 +253,16 @@ impl<'a, 'b, R: BufRead> Converter<'a, 'b, R> { { while let Some(line) = self.iter.peek() { let line = line.as_deref().map_err(|e| anyhow!("{e}"))?; - if predicate(&line) { + if predicate(line) { break; } self.write_indent(level); let line = self.iter.next().unwrap()?; let line = line.trim_start(); - let line = process_inline_macros(&line)?; - if line.ends_with('+') { - let line = &line[..(line.len() - 1)]; - self.output.push_str(line); + let line = process_inline_macros(line)?; + if let Some(stripped) = line.strip_suffix('+') { + self.output.push_str(stripped); self.output.push('\\'); } else { self.output.push_str(&line); @@ -339,8 +338,8 @@ fn get_title(line: &str) -> Option<(usize, &str)> { } fn get_list_item(line: &str) -> Option<(ListMarker, &str)> { - const HYPHYEN_MARKER: &'static str = "- "; - if let Some(text) = line.strip_prefix(HYPHYEN_MARKER) { + const HYPHEN_MARKER: &str = "- "; + if let Some(text) = line.strip_prefix(HYPHEN_MARKER) { Some((ListMarker::Hyphen, text)) } else if let Some((count, text)) = strip_prefix_symbol(line, '*') { Some((ListMarker::Asterisk(count), text)) From 258e532434c5086a29c46535ff0388ecf80fd02a Mon Sep 17 00:00:00 2001 From: Dezhi Wu Date: Fri, 16 Dec 2022 10:44:25 +0800 Subject: [PATCH 124/478] docs: update the comment and add a test to `half_open_range_pat` --- crates/parser/src/grammar/patterns.rs | 7 +++ .../inline/ok/0166_half_open_range_pat.rast | 43 +++++++++++++++++++ .../inline/ok/0166_half_open_range_pat.rs | 5 +++ 3 files changed, 55 insertions(+) diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs index 8de42c99eecc..abcefffa23f0 100644 --- a/crates/parser/src/grammar/patterns.rs +++ b/crates/parser/src/grammar/patterns.rs @@ -126,6 +126,8 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { // ^ // `[0..]` // ^ + // `0 .. if` + // ^ if matches!( p.current(), T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']'] | T![if] @@ -134,6 +136,11 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) { // fn f() { // let 0 .. = 1u32; // let 0..: _ = 1u32; + // + // match 42 { + // 0 .. if true => (), + // _ => (), + // } // } } else { atom_pat(p, recovery_set); diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast index 4b401b60df0c..c85a68599110 100644 --- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast +++ b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast @@ -46,6 +46,49 @@ SOURCE_FILE LITERAL INT_NUMBER "1u32" SEMICOLON ";" + WHITESPACE "\n\n " + MATCH_EXPR + MATCH_KW "match" + WHITESPACE " " + LITERAL + INT_NUMBER "42" + WHITESPACE " " + MATCH_ARM_LIST + L_CURLY "{" + WHITESPACE "\n " + MATCH_ARM + RANGE_PAT + LITERAL_PAT + LITERAL + INT_NUMBER "0" + WHITESPACE " " + DOT2 ".." + WHITESPACE " " + MATCH_GUARD + IF_KW "if" + WHITESPACE " " + LITERAL + TRUE_KW "true" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + MATCH_ARM + WILDCARD_PAT + UNDERSCORE "_" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + TUPLE_EXPR + L_PAREN "(" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + R_CURLY "}" WHITESPACE "\n" R_CURLY "}" WHITESPACE "\n" diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs index c9386a221a95..f7e2d07922ec 100644 --- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs +++ b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rs @@ -1,4 +1,9 @@ fn f() { let 0 .. = 1u32; let 0..: _ = 1u32; + + match 42 { + 0 .. if true => (), + _ => (), + } } From b6c2bb21ab54a84a05163fcb0fce87b540c4ed1e Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 16 Dec 2022 20:52:31 +0100 Subject: [PATCH 125/478] Add parentheses for binding mode hints when they attach to an Or-pattern --- crates/ide/src/inlay_hints.rs | 34 ++++++++++++++++++++++++---- crates/rust-analyzer/src/to_proto.rs | 18 +++++++++------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 08ce7be18111..b5b4d6ca64f8 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -65,10 +65,11 @@ pub enum InlayKind { ClosureReturnTypeHint, GenericParamListHint, AdjustmentHint, - AdjustmentHintClosingParenthesis, LifetimeHint, ParameterHint, TypeHint, + OpeningParenthesis, + ClosingParenthesis, } #[derive(Debug)] @@ -671,7 +672,7 @@ fn adjustment_hints( if needs_parens { acc.push(InlayHint { range: expr.syntax().text_range(), - kind: InlayKind::AdjustmentHint, + kind: InlayKind::OpeningParenthesis, label: "(".into(), tooltip: None, }); @@ -716,7 +717,7 @@ fn adjustment_hints( if needs_parens { acc.push(InlayHint { range: expr.syntax().text_range(), - kind: InlayKind::AdjustmentHintClosingParenthesis, + kind: InlayKind::ClosingParenthesis, label: ")".into(), tooltip: None, }); @@ -880,6 +881,20 @@ fn binding_mode_hints( tooltip: Some(InlayTooltip::String("Inferred binding mode".into())), }); } + ast::Pat::OrPat(pat) => { + acc.push(InlayHint { + range: pat.syntax().text_range(), + kind: InlayKind::OpeningParenthesis, + label: "(".into(), + tooltip: None, + }); + acc.push(InlayHint { + range: pat.syntax().text_range(), + kind: InlayKind::ClosingParenthesis, + label: ")".into(), + tooltip: None, + }); + } _ => (), } @@ -2951,9 +2966,18 @@ fn __( (x,) => () } match &(0,) { - (x,) => () - //^^^^ & + (x,) | (x,) => (), + //^^^^^^^^^^^& //^ ref + //^ ref + //^^^^^^^^^^^( + //^^^^^^^^^^^) + ((x,) | (x,)) => (), + //^^^^^^^^^^^& + //^ ref + //^ ref + //^^^^^^^^^^^( + //^^^^^^^^^^^) } match &mut (0,) { (x,) => () diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 3ce24bdd14fd..a7106acc78b1 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -440,22 +440,24 @@ pub(crate) fn inlay_hint( Ok(lsp_types::InlayHint { position: match inlay_hint.kind { // before annotated thing - InlayKind::ParameterHint | InlayKind::AdjustmentHint | InlayKind::BindingModeHint => { - position(line_index, inlay_hint.range.start()) - } + InlayKind::OpeningParenthesis + | InlayKind::ParameterHint + | InlayKind::AdjustmentHint + | InlayKind::BindingModeHint => position(line_index, inlay_hint.range.start()), // after annotated thing InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint | InlayKind::ChainingHint | InlayKind::GenericParamListHint - | InlayKind::AdjustmentHintClosingParenthesis + | InlayKind::ClosingParenthesis | InlayKind::LifetimeHint | InlayKind::ClosingBraceHint => position(line_index, inlay_hint.range.end()), }, padding_left: Some(match inlay_hint.kind { InlayKind::TypeHint => !render_colons, InlayKind::ChainingHint | InlayKind::ClosingBraceHint => true, - InlayKind::AdjustmentHintClosingParenthesis + InlayKind::ClosingParenthesis + | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint @@ -464,7 +466,8 @@ pub(crate) fn inlay_hint( | InlayKind::ParameterHint => false, }), padding_right: Some(match inlay_hint.kind { - InlayKind::AdjustmentHintClosingParenthesis + InlayKind::ClosingParenthesis + | InlayKind::OpeningParenthesis | InlayKind::ChainingHint | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint @@ -479,7 +482,8 @@ pub(crate) fn inlay_hint( InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint | InlayKind::ChainingHint => { Some(lsp_types::InlayHintKind::TYPE) } - InlayKind::AdjustmentHintClosingParenthesis + InlayKind::ClosingParenthesis + | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::GenericParamListHint | InlayKind::LifetimeHint From ba3e3282da0a6500a2a8945a664631fbd9463c64 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 16 Dec 2022 21:16:55 +0100 Subject: [PATCH 126/478] Deduplicate inserted parentheses in binding mode hints --- crates/ide/src/inlay_hints.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index b5b4d6ca64f8..66a40627dc4a 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -850,7 +850,18 @@ fn binding_mode_hints( return None; } - let range = pat.syntax().text_range(); + let outer_paren_pat = pat + .syntax() + .ancestors() + .skip(1) + .map_while(ast::Pat::cast) + .map_while(|pat| match pat { + ast::Pat::ParenPat(pat) => Some(pat), + _ => None, + }) + .last(); + let range = + outer_paren_pat.as_ref().map_or_else(|| pat.syntax(), |it| it.syntax()).text_range(); sema.pattern_adjustments(&pat).iter().for_each(|ty| { let reference = ty.is_reference(); let mut_reference = ty.is_mutable_reference(); @@ -875,13 +886,13 @@ fn binding_mode_hints( hir::BindingMode::Ref(Mutability::Shared) => "ref", }; acc.push(InlayHint { - range, + range: pat.syntax().text_range(), kind: InlayKind::BindingModeHint, label: bm.to_string().into(), tooltip: Some(InlayTooltip::String("Inferred binding mode".into())), }); } - ast::Pat::OrPat(pat) => { + ast::Pat::OrPat(pat) if outer_paren_pat.is_none() => { acc.push(InlayHint { range: pat.syntax().text_range(), kind: InlayKind::OpeningParenthesis, @@ -2973,11 +2984,9 @@ fn __( //^^^^^^^^^^^( //^^^^^^^^^^^) ((x,) | (x,)) => (), - //^^^^^^^^^^^& + //^^^^^^^^^^^^^& //^ ref //^ ref - //^^^^^^^^^^^( - //^^^^^^^^^^^) } match &mut (0,) { (x,) => () From a04feb915a0e5ef348075a3537a95875cb1b1ffe Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 16 Dec 2022 22:43:14 +0100 Subject: [PATCH 127/478] Add command for manually running flychecks --- crates/rust-analyzer/src/lsp_ext.rs | 13 ++ crates/rust-analyzer/src/main_loop.rs | 173 +++++++++++++++----------- docs/dev/lsp-extensions.md | 2 +- editors/code/package.json | 5 + editors/code/src/commands.ts | 15 ++- editors/code/src/lsp_ext.ts | 4 + editors/code/src/main.ts | 1 + 7 files changed, 133 insertions(+), 80 deletions(-) diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs index a1df0b6d7dd5..a2d539cf6ca1 100644 --- a/crates/rust-analyzer/src/lsp_ext.rs +++ b/crates/rust-analyzer/src/lsp_ext.rs @@ -138,6 +138,19 @@ impl Request for CancelFlycheck { const METHOD: &'static str = "rust-analyzer/cancelFlycheck"; } +pub enum RunFlycheck {} + +impl Notification for RunFlycheck { + type Params = RunFlycheckParams; + const METHOD: &'static str = "rust-analyzer/runFlycheck"; +} + +#[derive(Deserialize, Serialize, Debug)] +#[serde(rename_all = "camelCase")] +pub struct RunFlycheckParams { + pub text_document: Option, +} + pub enum MatchingBrace {} impl Request for MatchingBrace { diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 274588ce0e07..d979317b2187 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -703,6 +703,88 @@ impl GlobalState { /// Handles an incoming notification. fn on_notification(&mut self, not: Notification) -> Result<()> { + // FIXME: Move these implementations out into a module similar to on_request + fn run_flycheck(this: &mut GlobalState, vfs_path: VfsPath) -> bool { + let file_id = this.vfs.read().0.file_id(&vfs_path); + if let Some(file_id) = file_id { + let world = this.snapshot(); + let mut updated = false; + let task = move || -> std::result::Result<(), ide::Cancelled> { + // Trigger flychecks for all workspaces that depend on the saved file + // Crates containing or depending on the saved file + let crate_ids: Vec<_> = world + .analysis + .crates_for(file_id)? + .into_iter() + .flat_map(|id| world.analysis.transitive_rev_deps(id)) + .flatten() + .sorted() + .unique() + .collect(); + + let crate_root_paths: Vec<_> = crate_ids + .iter() + .filter_map(|&crate_id| { + world + .analysis + .crate_root(crate_id) + .map(|file_id| { + world + .file_id_to_file_path(file_id) + .as_path() + .map(ToOwned::to_owned) + }) + .transpose() + }) + .collect::>()?; + let crate_root_paths: Vec<_> = + crate_root_paths.iter().map(Deref::deref).collect(); + + // Find all workspaces that have at least one target containing the saved file + let workspace_ids = + world.workspaces.iter().enumerate().filter(|(_, ws)| match ws { + project_model::ProjectWorkspace::Cargo { cargo, .. } => { + cargo.packages().any(|pkg| { + cargo[pkg].targets.iter().any(|&it| { + crate_root_paths.contains(&cargo[it].root.as_path()) + }) + }) + } + project_model::ProjectWorkspace::Json { project, .. } => project + .crates() + .any(|(c, _)| crate_ids.iter().any(|&crate_id| crate_id == c)), + project_model::ProjectWorkspace::DetachedFiles { .. } => false, + }); + + // Find and trigger corresponding flychecks + for flycheck in world.flycheck.iter() { + for (id, _) in workspace_ids.clone() { + if id == flycheck.id() { + updated = true; + flycheck.restart(); + continue; + } + } + } + // No specific flycheck was triggered, so let's trigger all of them. + if !updated { + for flycheck in world.flycheck.iter() { + flycheck.restart(); + } + } + Ok(()) + }; + this.task_pool.handle.spawn_with_sender(move |_| { + if let Err(e) = std::panic::catch_unwind(task) { + tracing::error!("flycheck task panicked: {e:?}") + } + }); + true + } else { + false + } + } + NotificationDispatcher { not: Some(not), global_state: self } .on::(|this, params| { let id: lsp_server::RequestId = match params.id { @@ -782,6 +864,20 @@ impl GlobalState { } Ok(()) })? + .on::(|this, params| { + if let Some(text_document) = params.text_document { + if let Ok(vfs_path) = from_proto::vfs_path(&text_document.uri) { + if run_flycheck(this, vfs_path) { + return Ok(()); + } + } + } + // No specific flycheck was triggered, so let's trigger all of them. + for flycheck in this.flycheck.iter() { + flycheck.restart(); + } + Ok(()) + })? .on::(|this, params| { if let Ok(vfs_path) = from_proto::vfs_path(¶ms.text_document.uri) { // Re-fetch workspaces if a workspace related file has changed @@ -792,82 +888,7 @@ impl GlobalState { } } - let file_id = this.vfs.read().0.file_id(&vfs_path); - if let Some(file_id) = file_id { - let world = this.snapshot(); - let mut updated = false; - let task = move || -> std::result::Result<(), ide::Cancelled> { - // Trigger flychecks for all workspaces that depend on the saved file - // Crates containing or depending on the saved file - let crate_ids: Vec<_> = world - .analysis - .crates_for(file_id)? - .into_iter() - .flat_map(|id| world.analysis.transitive_rev_deps(id)) - .flatten() - .sorted() - .unique() - .collect(); - - let crate_root_paths: Vec<_> = crate_ids - .iter() - .filter_map(|&crate_id| { - world - .analysis - .crate_root(crate_id) - .map(|file_id| { - world - .file_id_to_file_path(file_id) - .as_path() - .map(ToOwned::to_owned) - }) - .transpose() - }) - .collect::>()?; - let crate_root_paths: Vec<_> = - crate_root_paths.iter().map(Deref::deref).collect(); - - // Find all workspaces that have at least one target containing the saved file - let workspace_ids = - world.workspaces.iter().enumerate().filter(|(_, ws)| match ws { - project_model::ProjectWorkspace::Cargo { cargo, .. } => { - cargo.packages().any(|pkg| { - cargo[pkg].targets.iter().any(|&it| { - crate_root_paths.contains(&cargo[it].root.as_path()) - }) - }) - } - project_model::ProjectWorkspace::Json { project, .. } => { - project.crates().any(|(c, _)| { - crate_ids.iter().any(|&crate_id| crate_id == c) - }) - } - project_model::ProjectWorkspace::DetachedFiles { .. } => false, - }); - - // Find and trigger corresponding flychecks - for flycheck in world.flycheck.iter() { - for (id, _) in workspace_ids.clone() { - if id == flycheck.id() { - updated = true; - flycheck.restart(); - continue; - } - } - } - // No specific flycheck was triggered, so let's trigger all of them. - if !updated { - for flycheck in world.flycheck.iter() { - flycheck.restart(); - } - } - Ok(()) - }; - this.task_pool.handle.spawn_with_sender(move |_| { - if let Err(e) = std::panic::catch_unwind(task) { - tracing::error!("DidSaveTextDocument flycheck task panicked: {e:?}") - } - }); + if run_flycheck(this, vfs_path) { return Ok(()); } } diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index 5aced035d526..308a92bebe06 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md @@ -1,5 +1,5 @@ $DIR/needless_return.rs:294:9 + | +LL | return Ok(format!("ok!")); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: remove `return` + +error: unneeded `return` statement + --> $DIR/needless_return.rs:296:9 + | +LL | return Err(format!("err!")); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: remove `return` + +error: aborting due to 48 previous errors From 1d59c7b667b411c8938c3c5cfe58770f050fd926 Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Fri, 23 Dec 2022 02:08:08 -0500 Subject: [PATCH 158/478] Remove non-needed clones I am not certain if this will improve performance, but it seems having a .clone() without any need should be removed. This was done with clippy, and manually reviewed: ``` cargo clippy --fix -- -A clippy::all -D clippy::redundant_clone ``` --- crates/hir-def/src/nameres/collector.rs | 2 +- crates/hir-ty/src/lib.rs | 5 ++--- crates/hir-ty/src/lower.rs | 2 +- crates/hir/src/semantics.rs | 2 +- crates/hir/src/source_analyzer.rs | 2 +- .../ide-assists/src/handlers/replace_or_with_or_else.rs | 4 ++-- crates/ide-completion/src/completions.rs | 2 +- crates/ide-completion/src/completions/postfix.rs | 4 ++-- crates/ide-completion/src/context/analysis.rs | 8 ++------ crates/ide-completion/src/render.rs | 2 +- crates/ide-completion/src/render/const_.rs | 2 +- crates/ide-completion/src/render/literal.rs | 2 +- crates/ide-completion/src/render/type_alias.rs | 2 +- crates/ide-completion/src/tests.rs | 2 +- crates/ide-diagnostics/src/handlers/json_is_not_rust.rs | 2 +- crates/ide/src/inlay_hints/bind_pat.rs | 2 +- crates/ide/src/inlay_hints/closure_ret.rs | 2 +- crates/parser/src/lexed_str.rs | 2 +- crates/proc-macro-srv/src/abis/mod.rs | 2 +- crates/rust-analyzer/src/main_loop.rs | 5 +---- crates/rust-analyzer/src/reload.rs | 2 +- 21 files changed, 25 insertions(+), 33 deletions(-) diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index f21d674f20d6..1cd42500c080 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -1345,7 +1345,7 @@ impl DefCollector<'_> { // Missing proc macros are non-fatal, so they are handled specially. DefDiagnostic::unresolved_proc_macro(module_id, loc.kind.clone(), loc.def.krate) } - _ => DefDiagnostic::macro_error(module_id, loc.kind.clone(), err.to_string()), + _ => DefDiagnostic::macro_error(module_id, loc.kind, err.to_string()), }; self.def_map.diagnostics.push(diag); diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index 2a41cafba98a..48581d4e0a41 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -577,10 +577,9 @@ pub fn callable_sig_from_fnonce( let fn_once = TyBuilder::trait_ref(db, fn_once_trait).push(self_ty.clone()).push(args.clone()).build(); let projection = - TyBuilder::assoc_type_projection(db, output_assoc_type, Some(fn_once.substitution.clone())) - .build(); + TyBuilder::assoc_type_projection(db, output_assoc_type, Some(fn_once.substitution)).build(); let ret_ty = db.normalize_projection(projection, env); - Some(CallableSig::from_params_and_return(params, ret_ty.clone(), false, Safety::Safe)) + Some(CallableSig::from_params_and_return(params, ret_ty, false, Safety::Safe)) } diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index e8466a7eda5c..752a3caceb44 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -1983,7 +1983,7 @@ fn fallback_bound_vars + HasInterner SemanticsImpl<'db> { } }; process_expansion_for_token(&mut stack, file_id, None, token.as_ref()) - } else if let Some(meta) = ast::Meta::cast(parent.clone()) { + } else if let Some(meta) = ast::Meta::cast(parent) { // attribute we failed expansion for earlier, this might be a derive invocation // or derive helper attribute let attr = meta.parent_attr()?; diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index 5e444db4a14b..e2fa1d5cabe1 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -118,7 +118,7 @@ impl SourceAnalyzer { fn expr_id(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option { let src = match expr { ast::Expr::MacroExpr(expr) => { - self.expand_expr(db, InFile::new(self.file_id, expr.macro_call()?.clone()))? + self.expand_expr(db, InFile::new(self.file_id, expr.macro_call()?))? } _ => InFile::new(self.file_id, expr.clone()), }; diff --git a/crates/ide-assists/src/handlers/replace_or_with_or_else.rs b/crates/ide-assists/src/handlers/replace_or_with_or_else.rs index 77382056c183..f0ed3c4fe6f5 100644 --- a/crates/ide-assists/src/handlers/replace_or_with_or_else.rs +++ b/crates/ide-assists/src/handlers/replace_or_with_or_else.rs @@ -75,7 +75,7 @@ fn into_closure(param: &Expr) -> Expr { (|| { if let ast::Expr::CallExpr(call) = param { if call.arg_list()?.args().count() == 0 { - Some(call.expr()?.clone()) + Some(call.expr()?) } else { None } @@ -151,7 +151,7 @@ fn into_call(param: &Expr) -> Expr { (|| { if let ast::Expr::ClosureExpr(closure) = param { if closure.param_list()?.params().count() == 0 { - Some(closure.body()?.clone()) + Some(closure.body()?) } else { None } diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs index 296dfc14250f..ba5afde19bcf 100644 --- a/crates/ide-completion/src/completions.rs +++ b/crates/ide-completion/src/completions.rs @@ -494,7 +494,7 @@ impl Completions { pattern_ctx, path_ctx, variant, - local_name.clone(), + local_name, None, )); } diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 3669f462a99e..31ec9d9f6396 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -224,7 +224,7 @@ fn include_references(initial_element: &ast::Expr) -> (ast::Expr, ast::Expr) { if let Some(first_ref_expr) = resulting_element.syntax().parent().and_then(ast::RefExpr::cast) { if let Some(expr) = first_ref_expr.expr() { - resulting_element = expr.clone(); + resulting_element = expr; } while let Some(parent_ref_element) = @@ -571,7 +571,7 @@ fn main() { ControlFlow::Break('\\\\') } ); check_edit_with_config( - config.clone(), + config, "break", r#" //- minicore: try diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index c142a7305f9e..c412fd575c9d 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -286,7 +286,7 @@ fn analyze( ast::NameLike::NameRef(name_ref) => { let parent = name_ref.syntax().parent()?; let (nameref_ctx, qualifier_ctx) = - classify_name_ref(sema, &original_file, name_ref, parent.clone())?; + classify_name_ref(sema, &original_file, name_ref, parent)?; qual_ctx = qualifier_ctx; CompletionAnalysis::NameRef(nameref_ctx) } @@ -585,11 +585,7 @@ fn classify_name_ref( original_file, &record_field.parent_record_pat(), ), - ..pattern_context_for( - sema, - original_file, - record_field.parent_record_pat().clone().into(), - ) + ..pattern_context_for(sema, original_file, record_field.parent_record_pat().into()) }); return Some(make_res(kind)); } diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 86302cb0678f..c3ffc6d50743 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -131,7 +131,7 @@ pub(crate) fn render_field( item.detail(ty.display(ctx.db()).to_string()) .set_documentation(field.docs(ctx.db())) .set_deprecated(is_deprecated) - .lookup_by(name.clone()); + .lookup_by(name); item.insert_text(field_with_receiver(receiver.as_ref(), &escaped_name)); if let Some(receiver) = &dot_access.receiver { if let Some(original) = ctx.completion.sema.original_ast_node(receiver.clone()) { diff --git a/crates/ide-completion/src/render/const_.rs b/crates/ide-completion/src/render/const_.rs index 93ea825e0042..70b19988ca73 100644 --- a/crates/ide-completion/src/render/const_.rs +++ b/crates/ide-completion/src/render/const_.rs @@ -16,7 +16,7 @@ fn render(ctx: RenderContext<'_>, const_: hir::Const) -> Option let (name, escaped_name) = (name.unescaped().to_smol_str(), name.to_smol_str()); let detail = const_.display(db).to_string(); - let mut item = CompletionItem::new(SymbolKind::Const, ctx.source_range(), name.clone()); + let mut item = CompletionItem::new(SymbolKind::Const, ctx.source_range(), name); item.set_documentation(ctx.docs(const_)) .set_deprecated(ctx.is_deprecated(const_) || ctx.is_deprecated_assoc_item(const_)) .detail(detail) diff --git a/crates/ide-completion/src/render/literal.rs b/crates/ide-completion/src/render/literal.rs index 3aeb69258ee7..64dab02f7c5c 100644 --- a/crates/ide-completion/src/render/literal.rs +++ b/crates/ide-completion/src/render/literal.rs @@ -84,7 +84,7 @@ fn render( } _ => RenderedLiteral { literal: escaped_qualified_name.clone(), - detail: escaped_qualified_name.clone(), + detail: escaped_qualified_name, }, }; diff --git a/crates/ide-completion/src/render/type_alias.rs b/crates/ide-completion/src/render/type_alias.rs index de919429f2f9..fbe120d2ac94 100644 --- a/crates/ide-completion/src/render/type_alias.rs +++ b/crates/ide-completion/src/render/type_alias.rs @@ -40,7 +40,7 @@ fn render( }; let detail = type_alias.display(db).to_string(); - let mut item = CompletionItem::new(SymbolKind::TypeAlias, ctx.source_range(), name.clone()); + let mut item = CompletionItem::new(SymbolKind::TypeAlias, ctx.source_range(), name); item.set_documentation(ctx.docs(type_alias)) .set_deprecated(ctx.is_deprecated(type_alias) || ctx.is_deprecated_assoc_item(type_alias)) .detail(detail) diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs index 9e2beb9ee328..5e9011f9e8aa 100644 --- a/crates/ide-completion/src/tests.rs +++ b/crates/ide-completion/src/tests.rs @@ -86,7 +86,7 @@ pub(crate) fn completion_list_no_kw(ra_fixture: &str) -> String { } pub(crate) fn completion_list_no_kw_with_private_editable(ra_fixture: &str) -> String { - let mut config = TEST_CONFIG.clone(); + let mut config = TEST_CONFIG; config.enable_private_editable = true; completion_list_with_config(config, ra_fixture, false, None) } diff --git a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs index 3034295196b4..e8df6dcf285d 100644 --- a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs +++ b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs @@ -125,7 +125,7 @@ pub(crate) fn json_in_items( .severity(Severity::WeakWarning) .with_fixes(Some(vec![{ let mut scb = SourceChangeBuilder::new(file_id); - let scope = match import_scope.clone() { + let scope = match import_scope { ImportScope::File(it) => ImportScope::File(scb.make_mut(it)), ImportScope::Module(it) => ImportScope::Module(scb.make_mut(it)), ImportScope::Block(it) => ImportScope::Block(scb.make_mut(it)), diff --git a/crates/ide/src/inlay_hints/bind_pat.rs b/crates/ide/src/inlay_hints/bind_pat.rs index e22b16a3f820..355ededb5a43 100644 --- a/crates/ide/src/inlay_hints/bind_pat.rs +++ b/crates/ide/src/inlay_hints/bind_pat.rs @@ -81,7 +81,7 @@ fn should_not_display_type_hint( if config.hide_closure_initialization_hints { if let Some(parent) = bind_pat.syntax().parent() { - if let Some(it) = ast::LetStmt::cast(parent.clone()) { + if let Some(it) = ast::LetStmt::cast(parent) { if let Some(ast::Expr::ClosureExpr(closure)) = it.initializer() { if closure_has_block_body(&closure) { return true; diff --git a/crates/ide/src/inlay_hints/closure_ret.rs b/crates/ide/src/inlay_hints/closure_ret.rs index e711a4af235a..d9929beaac0c 100644 --- a/crates/ide/src/inlay_hints/closure_ret.rs +++ b/crates/ide/src/inlay_hints/closure_ret.rs @@ -32,7 +32,7 @@ pub(super) fn hints( let param_list = closure.param_list()?; - let closure = sema.descend_node_into_attributes(closure.clone()).pop()?; + let closure = sema.descend_node_into_attributes(closure).pop()?; let ty = sema.type_of_expr(&ast::Expr::ClosureExpr(closure))?.adjusted(); let callable = ty.as_callable(sema.db)?; let ty = callable.return_type(); diff --git a/crates/parser/src/lexed_str.rs b/crates/parser/src/lexed_str.rs index f4b9988eacb0..b48921f19177 100644 --- a/crates/parser/src/lexed_str.rs +++ b/crates/parser/src/lexed_str.rs @@ -57,7 +57,7 @@ impl<'a> LexedStr<'a> { let mut conv = Converter::new(text); conv.extend_token(&token.kind, text); match &*conv.res.kind { - [kind] => Some((*kind, conv.res.error.pop().map(|it| it.msg.clone()))), + [kind] => Some((*kind, conv.res.error.pop().map(|it| it.msg))), _ => None, } } diff --git a/crates/proc-macro-srv/src/abis/mod.rs b/crates/proc-macro-srv/src/abis/mod.rs index 0ce099ae0bab..5b8aca4d8164 100644 --- a/crates/proc-macro-srv/src/abis/mod.rs +++ b/crates/proc-macro-srv/src/abis/mod.rs @@ -117,7 +117,7 @@ impl Abi { let inner = unsafe { Abi_1_63::from_lib(lib, symbol_name) }?; Ok(Abi::Abi1_63(inner)) } - _ => Err(LoadProcMacroDylibError::UnsupportedABI(info.version_string.clone())), + _ => Err(LoadProcMacroDylibError::UnsupportedABI(info.version_string)), } } diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 47776f734b0d..2d443231b4ed 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -561,10 +561,7 @@ impl GlobalState { flycheck::Progress::DidCheckCrate(target) => (Progress::Report, Some(target)), flycheck::Progress::DidCancel => (Progress::End, None), flycheck::Progress::DidFailToRestart(err) => { - self.show_and_log_error( - "cargo check failed".to_string(), - Some(err.to_string()), - ); + self.show_and_log_error("cargo check failed".to_string(), Some(err)); return; } flycheck::Progress::DidFinish(result) => { diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index faf7a2c21317..9bbce70ec0a8 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -461,7 +461,7 @@ impl GlobalState { flycheck::InvocationStrategy::Once => vec![FlycheckHandle::spawn( 0, Box::new(move |msg| sender.send(msg).unwrap()), - config.clone(), + config, self.config.root_path().clone(), )], flycheck::InvocationStrategy::PerWorkspace => { From e341e996f793587ce4ce088d5390c017c4da849d Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Fri, 23 Dec 2022 02:51:52 -0500 Subject: [PATCH 159/478] Clippy-fix explicit auto-deref Seems like these can be safely fixed. With one, I was particularly surprised -- `Some(pats) => &**pats,` in body.rs? ``` cargo clippy --fix -- -A clippy::all -D clippy::explicit_auto_deref ``` --- crates/base-db/src/input.rs | 4 ++-- crates/base-db/src/lib.rs | 2 +- crates/hir-def/src/body.rs | 2 +- crates/hir-def/src/body/scope.rs | 2 +- crates/hir/src/semantics.rs | 2 +- crates/ide-assists/src/handlers/inline_call.rs | 2 +- crates/ide-db/src/lib.rs | 2 +- crates/ide-diagnostics/src/tests.rs | 2 +- crates/ide/src/inlay_hints.rs | 2 +- crates/ide/src/inlay_hints/bind_pat.rs | 2 +- .../src/abis/abi_1_58/proc_macro/bridge/client.rs | 2 +- .../src/abis/abi_1_63/proc_macro/bridge/client.rs | 2 +- crates/profile/src/hprof.rs | 2 +- crates/project-model/src/cargo_workspace.rs | 2 +- crates/project-model/src/manifest_path.rs | 2 +- crates/rust-analyzer/src/cli/lsif.rs | 2 +- crates/rust-analyzer/src/config.rs | 2 +- crates/rust-analyzer/src/handlers.rs | 4 ++-- crates/stdx/src/panic_context.rs | 2 +- crates/tt/src/buffer.rs | 2 +- 20 files changed, 22 insertions(+), 22 deletions(-) diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs index 7aff9b1ae844..20bf8497cb58 100644 --- a/crates/base-db/src/input.rs +++ b/crates/base-db/src/input.rs @@ -128,7 +128,7 @@ impl fmt::Display for CrateName { impl ops::Deref for CrateName { type Target = str; fn deref(&self) -> &str { - &*self.0 + &self.0 } } @@ -211,7 +211,7 @@ impl fmt::Display for CrateDisplayName { impl ops::Deref for CrateDisplayName { type Target = str; fn deref(&self) -> &str { - &*self.crate_name + &self.crate_name } } diff --git a/crates/base-db/src/lib.rs b/crates/base-db/src/lib.rs index da11e4ae7bb9..f725064cda9e 100644 --- a/crates/base-db/src/lib.rs +++ b/crates/base-db/src/lib.rs @@ -77,7 +77,7 @@ pub trait SourceDatabase: FileLoader + std::fmt::Debug { fn parse_query(db: &dyn SourceDatabase, file_id: FileId) -> Parse { let _p = profile::span("parse_query").detail(|| format!("{:?}", file_id)); let text = db.file_text(file_id); - SourceFile::parse(&*text) + SourceFile::parse(&text) } /// We don't want to give HIR knowledge of source roots, hence we extract these diff --git a/crates/hir-def/src/body.rs b/crates/hir-def/src/body.rs index 759f3b8c04b6..78fbaa9d7d35 100644 --- a/crates/hir-def/src/body.rs +++ b/crates/hir-def/src/body.rs @@ -372,7 +372,7 @@ impl Body { /// Retrieves all ident patterns this pattern shares the ident with. pub fn ident_patterns_for<'slf>(&'slf self, pat: &'slf PatId) -> &'slf [PatId] { match self.or_pats.get(pat) { - Some(pats) => &**pats, + Some(pats) => pats, None => std::slice::from_ref(pat), } } diff --git a/crates/hir-def/src/body/scope.rs b/crates/hir-def/src/body/scope.rs index 45f64ebb0600..2617d4288a3a 100644 --- a/crates/hir-def/src/body/scope.rs +++ b/crates/hir-def/src/body/scope.rs @@ -47,7 +47,7 @@ pub struct ScopeData { impl ExprScopes { pub(crate) fn expr_scopes_query(db: &dyn DefDatabase, def: DefWithBodyId) -> Arc { let body = db.body(def); - let mut scopes = ExprScopes::new(&*body); + let mut scopes = ExprScopes::new(&body); scopes.shrink_to_fit(); Arc::new(scopes) } diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 76c1963e2eed..55950da9d54f 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -1246,7 +1246,7 @@ impl<'db> SemanticsImpl<'db> { fn with_ctx) -> T, T>(&self, f: F) -> T { let mut cache = self.s2d_cache.borrow_mut(); - let mut ctx = SourceToDefCtx { db: self.db, cache: &mut *cache }; + let mut ctx = SourceToDefCtx { db: self.db, cache: &mut cache }; f(&mut ctx) } diff --git a/crates/ide-assists/src/handlers/inline_call.rs b/crates/ide-assists/src/handlers/inline_call.rs index 0c546ce5d41c..5ac18727c196 100644 --- a/crates/ide-assists/src/handlers/inline_call.rs +++ b/crates/ide-assists/src/handlers/inline_call.rs @@ -394,7 +394,7 @@ fn inline( // Inline parameter expressions or generate `let` statements depending on whether inlining works or not. for ((pat, param_ty, _), usages, expr) in izip!(params, param_use_nodes, arguments).rev() { // izip confuses RA due to our lack of hygiene info currently losing us type info causing incorrect errors - let usages: &[ast::PathExpr] = &*usages; + let usages: &[ast::PathExpr] = &usages; let expr: &ast::Expr = expr; let insert_let_stmt = || { diff --git a/crates/ide-db/src/lib.rs b/crates/ide-db/src/lib.rs index e0bc0f89f0a1..156bbb634e4d 100644 --- a/crates/ide-db/src/lib.rs +++ b/crates/ide-db/src/lib.rs @@ -165,7 +165,7 @@ pub trait LineIndexDatabase: base_db::SourceDatabase { fn line_index(db: &dyn LineIndexDatabase, file_id: FileId) -> Arc { let text = db.file_text(file_id); - Arc::new(LineIndex::new(&*text)) + Arc::new(LineIndex::new(&text)) } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] diff --git a/crates/ide-diagnostics/src/tests.rs b/crates/ide-diagnostics/src/tests.rs index 729619cfde03..82967883176f 100644 --- a/crates/ide-diagnostics/src/tests.rs +++ b/crates/ide-diagnostics/src/tests.rs @@ -102,7 +102,7 @@ pub(crate) fn check_diagnostics_with_config(config: DiagnosticsConfig, ra_fixtur for file_id in files { let diagnostics = super::diagnostics(&db, &config, &AssistResolveStrategy::All, file_id); - let expected = extract_annotations(&*db.file_text(file_id)); + let expected = extract_annotations(&db.file_text(file_id)); let mut actual = diagnostics .into_iter() .map(|d| { diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 2b78dc51d948..6b3c15fba7fe 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -459,7 +459,7 @@ mod tests { #[track_caller] pub(super) fn check_with_config(config: InlayHintsConfig, ra_fixture: &str) { let (analysis, file_id) = fixture::file(ra_fixture); - let mut expected = extract_annotations(&*analysis.file_text(file_id).unwrap()); + let mut expected = extract_annotations(&analysis.file_text(file_id).unwrap()); let inlay_hints = analysis.inlay_hints(&config, file_id, None).unwrap(); let actual = inlay_hints .into_iter() diff --git a/crates/ide/src/inlay_hints/bind_pat.rs b/crates/ide/src/inlay_hints/bind_pat.rs index 355ededb5a43..4e63740098b7 100644 --- a/crates/ide/src/inlay_hints/bind_pat.rs +++ b/crates/ide/src/inlay_hints/bind_pat.rs @@ -463,7 +463,7 @@ fn main() { } "#; let (analysis, file_id) = fixture::file(fixture); - let expected = extract_annotations(&*analysis.file_text(file_id).unwrap()); + let expected = extract_annotations(&analysis.file_text(file_id).unwrap()); let inlay_hints = analysis .inlay_hints( &InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG }, diff --git a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs index ed0e91da3617..e78842f5c37e 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/bridge/client.rs @@ -286,7 +286,7 @@ impl BridgeState<'_> { BRIDGE_STATE.with(|state| { state.replace(BridgeState::InUse, |mut state| { // FIXME(#52812) pass `f` directly to `replace` when `RefMutL` is gone - f(&mut *state) + f(&mut state) }) }) } diff --git a/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs b/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs index 102027d14a98..b346c2c18969 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs @@ -301,7 +301,7 @@ impl BridgeState<'_> { BRIDGE_STATE.with(|state| { state.replace(BridgeState::InUse, |mut state| { // FIXME(#52812) pass `f` directly to `replace` when `RefMutL` is gone - f(&mut *state) + f(&mut state) }) }) } diff --git a/crates/profile/src/hprof.rs b/crates/profile/src/hprof.rs index b562c193e713..deea0b0dd8f1 100644 --- a/crates/profile/src/hprof.rs +++ b/crates/profile/src/hprof.rs @@ -133,7 +133,7 @@ static FILTER: Lazy> = Lazy::new(Default::default); fn with_profile_stack(f: impl FnOnce(&mut ProfileStack) -> T) -> T { thread_local!(static STACK: RefCell = RefCell::new(ProfileStack::new())); - STACK.with(|it| f(&mut *it.borrow_mut())) + STACK.with(|it| f(&mut it.borrow_mut())) } #[derive(Default, Clone, Debug)] diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index 02ec7a4f6f99..93f44d1ef562 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -427,7 +427,7 @@ impl CargoWorkspace { } pub fn package_flag(&self, package: &PackageData) -> String { - if self.is_unique(&*package.name) { + if self.is_unique(&package.name) { package.name.clone() } else { format!("{}:{}", package.name, package.version) diff --git a/crates/project-model/src/manifest_path.rs b/crates/project-model/src/manifest_path.rs index 4910fd3d11cc..980d92d3df9d 100644 --- a/crates/project-model/src/manifest_path.rs +++ b/crates/project-model/src/manifest_path.rs @@ -40,7 +40,7 @@ impl ops::Deref for ManifestPath { type Target = AbsPath; fn deref(&self) -> &Self::Target { - &*self.file + &self.file } } diff --git a/crates/rust-analyzer/src/cli/lsif.rs b/crates/rust-analyzer/src/cli/lsif.rs index c74ddabb1777..431617784132 100644 --- a/crates/rust-analyzer/src/cli/lsif.rs +++ b/crates/rust-analyzer/src/cli/lsif.rs @@ -253,7 +253,7 @@ impl LsifManager<'_> { }; let result = folds .into_iter() - .map(|it| to_proto::folding_range(&*text, &line_index, false, it)) + .map(|it| to_proto::folding_range(&text, &line_index, false, it)) .collect(); let folding_id = self.add_vertex(lsif::Vertex::FoldingRangeResult { result }); self.add_edge(lsif::Edge::FoldingRange(lsif::EdgeData { diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index cba04b00c3dd..76ff2d5859e9 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -2178,7 +2178,7 @@ fn manual(fields: &[(&'static str, &'static str, &[&str], &str)]) -> String { .iter() .map(|(field, _ty, doc, default)| { let name = format!("rust-analyzer.{}", field.replace('_', ".")); - let doc = doc_comment_to_string(*doc); + let doc = doc_comment_to_string(doc); if default.contains('\n') { format!( r#"[[{}]]{}:: diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 2850bc2c3d9e..7a4d372a285b 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -899,7 +899,7 @@ pub(crate) fn handle_folding_range( let line_folding_only = snap.config.line_folding_only(); let res = folds .into_iter() - .map(|it| to_proto::folding_range(&*text, &line_index, line_folding_only, it)) + .map(|it| to_proto::folding_range(&text, &line_index, line_folding_only, it)) .collect(); Ok(Some(res)) } @@ -979,7 +979,7 @@ pub(crate) fn handle_rename( let position = from_proto::file_position(&snap, params.text_document_position)?; let mut change = - snap.analysis.rename(position, &*params.new_name)?.map_err(to_proto::rename_error)?; + snap.analysis.rename(position, ¶ms.new_name)?.map_err(to_proto::rename_error)?; // this is kind of a hack to prevent double edits from happening when moving files // When a module gets renamed by renaming the mod declaration this causes the file to move diff --git a/crates/stdx/src/panic_context.rs b/crates/stdx/src/panic_context.rs index f8fafc5a6772..a64f9a6f3faa 100644 --- a/crates/stdx/src/panic_context.rs +++ b/crates/stdx/src/panic_context.rs @@ -45,5 +45,5 @@ fn with_ctx(f: impl FnOnce(&mut Vec)) { thread_local! { static CTX: RefCell> = RefCell::new(Vec::new()); } - CTX.with(|ctx| f(&mut *ctx.borrow_mut())); + CTX.with(|ctx| f(&mut ctx.borrow_mut())); } diff --git a/crates/tt/src/buffer.rs b/crates/tt/src/buffer.rs index 69226bd4c480..d27a7aa0d4d3 100644 --- a/crates/tt/src/buffer.rs +++ b/crates/tt/src/buffer.rs @@ -190,7 +190,7 @@ impl<'a> Cursor<'a> { pub fn token_tree(self) -> Option> { match self.entry() { Some(Entry::Leaf(tt)) => match tt { - TokenTree::Leaf(leaf) => Some(TokenTreeRef::Leaf(leaf, *tt)), + TokenTree::Leaf(leaf) => Some(TokenTreeRef::Leaf(leaf, tt)), TokenTree::Subtree(subtree) => Some(TokenTreeRef::Subtree(subtree, Some(tt))), }, Some(Entry::Subtree(tt, subtree, _)) => Some(TokenTreeRef::Subtree(subtree, *tt)), From ec55dd1d7b766bb2cf5cb91f77fbb175c20e128f Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Fri, 23 Dec 2022 03:07:42 -0500 Subject: [PATCH 160/478] Minor manual cleanu * use default derive * use `strip_prefix` where possible to avoid dup work --- crates/proc-macro-test/build.rs | 13 +++++-------- crates/vfs/src/file_set.rs | 7 +------ crates/vfs/src/path_interner.rs | 7 +------ xtask/src/release/changelog.rs | 6 ++---- 4 files changed, 9 insertions(+), 24 deletions(-) diff --git a/crates/proc-macro-test/build.rs b/crates/proc-macro-test/build.rs index a80c962617bb..dd6203e2eeb9 100644 --- a/crates/proc-macro-test/build.rs +++ b/crates/proc-macro-test/build.rs @@ -85,16 +85,13 @@ fn main() { let mut artifact_path = None; for message in Message::parse_stream(output.stdout.as_slice()) { - match message.unwrap() { - Message::CompilerArtifact(artifact) => { - if artifact.target.kind.contains(&"proc-macro".to_string()) { - let repr = format!("{} {}", name, version); - if artifact.package_id.repr.starts_with(&repr) { - artifact_path = Some(PathBuf::from(&artifact.filenames[0])); - } + if let Message::CompilerArtifact(artifact) = message.unwrap() { + if artifact.target.kind.contains(&"proc-macro".to_string()) { + let repr = format!("{} {}", name, version); + if artifact.package_id.repr.starts_with(&repr) { + artifact_path = Some(PathBuf::from(&artifact.filenames[0])); } } - _ => (), // Unknown message } } diff --git a/crates/vfs/src/file_set.rs b/crates/vfs/src/file_set.rs index e0ef737b3fc0..700aebe0b34f 100644 --- a/crates/vfs/src/file_set.rs +++ b/crates/vfs/src/file_set.rs @@ -140,16 +140,11 @@ impl FileSetConfig { } /// Builder for [`FileSetConfig`]. +#[derive(Default)] pub struct FileSetConfigBuilder { roots: Vec>, } -impl Default for FileSetConfigBuilder { - fn default() -> Self { - FileSetConfigBuilder { roots: Vec::new() } - } -} - impl FileSetConfigBuilder { /// Returns the number of sets currently held. pub fn len(&self) -> usize { diff --git a/crates/vfs/src/path_interner.rs b/crates/vfs/src/path_interner.rs index 6e049f0d40f7..64f51976053d 100644 --- a/crates/vfs/src/path_interner.rs +++ b/crates/vfs/src/path_interner.rs @@ -9,16 +9,11 @@ use rustc_hash::FxHasher; use crate::{FileId, VfsPath}; /// Structure to map between [`VfsPath`] and [`FileId`]. +#[derive(Default)] pub(crate) struct PathInterner { map: IndexSet>, } -impl Default for PathInterner { - fn default() -> Self { - Self { map: IndexSet::default() } - } -} - impl PathInterner { /// Get the id corresponding to `path`. /// diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs index cbf79b657c0a..7df8f89dbe22 100644 --- a/xtask/src/release/changelog.rs +++ b/xtask/src/release/changelog.rs @@ -113,11 +113,9 @@ fn unescape(s: &str) -> String { fn parse_pr_number(s: &str) -> Option { const BORS_PREFIX: &str = "Merge #"; const HOMU_PREFIX: &str = "Auto merge of #"; - if s.starts_with(BORS_PREFIX) { - let s = &s[BORS_PREFIX.len()..]; + if let Some(s) = s.strip_prefix(BORS_PREFIX) { s.parse().ok() - } else if s.starts_with(HOMU_PREFIX) { - let s = &s[HOMU_PREFIX.len()..]; + } else if let Some(s) = s.strip_prefix(HOMU_PREFIX) { if let Some(space) = s.find(' ') { s[..space].parse().ok() } else { From df8fc78eced2a720d26592a1540140aabc37c85a Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 23 Dec 2022 11:28:46 +0100 Subject: [PATCH 161/478] Enum variant discriminants hints --- crates/ide/src/inlay_hints.rs | 15 +++ crates/ide/src/inlay_hints/discrimant.rs | 142 +++++++++++++++++++++++ crates/ide/src/lib.rs | 4 +- crates/ide/src/static_index.rs | 1 + crates/rust-analyzer/src/config.rs | 32 +++++ crates/rust-analyzer/src/to_proto.rs | 5 + docs/user/generated_config.adoc | 5 + editors/code/package.json | 15 +++ 8 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 crates/ide/src/inlay_hints/discrimant.rs diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 2b78dc51d948..073252e17bdf 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -24,12 +24,14 @@ mod chaining; mod param_name; mod binding_mode; mod bind_pat; +mod discrimant; #[derive(Clone, Debug, PartialEq, Eq)] pub struct InlayHintsConfig { pub location_links: bool, pub render_colons: bool, pub type_hints: bool, + pub discriminant_hints: DiscriminantHints, pub parameter_hints: bool, pub chaining_hints: bool, pub adjustment_hints: AdjustmentHints, @@ -51,6 +53,13 @@ pub enum ClosureReturnTypeHints { Never, } +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum DiscriminantHints { + Always, + Never, + Fieldless, +} + #[derive(Clone, Debug, PartialEq, Eq)] pub enum LifetimeElisionHints { Always, @@ -76,6 +85,7 @@ pub enum InlayKind { LifetimeHint, ParameterHint, TypeHint, + DiscriminantHint, OpeningParenthesis, ClosingParenthesis, } @@ -365,6 +375,9 @@ fn hints( ast::Item::Const(it) => implicit_static::hints(hints, config, Either::Right(it)), _ => None, }, + ast::Variant(v) => { + discrimant::hints(hints, famous_defs, config, file_id, &v) + }, // FIXME: fn-ptr type, dyn fn type, and trait object type elisions ast::Type(_) => None, _ => None, @@ -418,12 +431,14 @@ mod tests { use test_utils::extract_annotations; use crate::inlay_hints::AdjustmentHints; + use crate::DiscriminantHints; use crate::{fixture, inlay_hints::InlayHintsConfig, LifetimeElisionHints}; use super::ClosureReturnTypeHints; pub(super) const DISABLED_CONFIG: InlayHintsConfig = InlayHintsConfig { location_links: false, + discriminant_hints: DiscriminantHints::Never, render_colons: false, type_hints: false, parameter_hints: false, diff --git a/crates/ide/src/inlay_hints/discrimant.rs b/crates/ide/src/inlay_hints/discrimant.rs new file mode 100644 index 000000000000..f32c4bdf2883 --- /dev/null +++ b/crates/ide/src/inlay_hints/discrimant.rs @@ -0,0 +1,142 @@ +//! Implementation of "enum variant discriminant" inlay hints: +//! ```no_run +//! enum Foo { +//! Bar/* = 0*/, +//! } +//! ``` +use ide_db::{base_db::FileId, famous_defs::FamousDefs}; +use syntax::ast::{self, AstNode, HasName}; + +use crate::{DiscriminantHints, InlayHint, InlayHintsConfig, InlayKind, InlayTooltip}; + +pub(super) fn hints( + acc: &mut Vec, + FamousDefs(sema, _): &FamousDefs<'_, '_>, + config: &InlayHintsConfig, + _: FileId, + variant: &ast::Variant, +) -> Option<()> { + let field_list = match config.discriminant_hints { + DiscriminantHints::Always => variant.field_list(), + DiscriminantHints::Fieldless => match variant.field_list() { + Some(_) => return None, + None => None, + }, + DiscriminantHints::Never => return None, + }; + + if variant.eq_token().is_some() { + return None; + } + + let name = variant.name()?; + + let descended = sema.descend_node_into_attributes(variant.clone()).pop(); + let desc_pat = descended.as_ref().unwrap_or(variant); + let v = sema.to_def(desc_pat)?; + let d = v.eval(sema.db); + + acc.push(InlayHint { + range: match field_list { + Some(field_list) => name.syntax().text_range().cover(field_list.syntax().text_range()), + None => name.syntax().text_range(), + }, + kind: InlayKind::DiscriminantHint, + label: match &d { + Ok(v) => format!("{}", v).into(), + Err(_) => "?".into(), + }, + tooltip: Some(InlayTooltip::String(match &d { + Ok(_) => "enum variant discriminant".into(), + Err(e) => format!("{e:?}").into(), + })), + }); + + Some(()) +} + +#[cfg(test)] +mod tests { + use crate::inlay_hints::{ + tests::{check_with_config, DISABLED_CONFIG}, + DiscriminantHints, InlayHintsConfig, + }; + + #[track_caller] + fn check_discriminants(ra_fixture: &str) { + check_with_config( + InlayHintsConfig { discriminant_hints: DiscriminantHints::Always, ..DISABLED_CONFIG }, + ra_fixture, + ); + } + + #[track_caller] + fn check_discriminants_fieldless(ra_fixture: &str) { + check_with_config( + InlayHintsConfig { + discriminant_hints: DiscriminantHints::Fieldless, + ..DISABLED_CONFIG + }, + ra_fixture, + ); + } + + #[test] + fn fieldless() { + check_discriminants( + r#" +enum Enum { + Variant, + //^^^^^^^0 + Variant1, + //^^^^^^^^1 + Variant2, + //^^^^^^^^2 + Variant5 = 5, + Variant6, + //^^^^^^^^6 +} +"#, + ); + } + + #[test] + fn datacarrying_mixed() { + check_discriminants( + r#" +enum Enum { + Variant(), + //^^^^^^^^^0 + Variant1, + //^^^^^^^^1 + Variant2 {}, + //^^^^^^^^^^^2 + Variant3, + //^^^^^^^^3 + Variant5 = 5, + Variant6, + //^^^^^^^^6 +} +"#, + ); + } + + #[test] + fn datacarrying_mixed_fieldless_set() { + check_discriminants_fieldless( + r#" +enum Enum { + Variant(), + Variant1, + //^^^^^^^^1 + Variant2 {}, + Variant3, + //^^^^^^^^3 + Variant5 = 5, + Variant6, + //^^^^^^^^6 +} +"#, + ); + } +} diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 6698bf766a05..200958a43300 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs @@ -81,8 +81,8 @@ pub use crate::{ highlight_related::{HighlightRelatedConfig, HighlightedRange}, hover::{HoverAction, HoverConfig, HoverDocFormat, HoverGotoTypeData, HoverResult}, inlay_hints::{ - AdjustmentHints, ClosureReturnTypeHints, InlayHint, InlayHintLabel, InlayHintsConfig, - InlayKind, InlayTooltip, LifetimeElisionHints, + AdjustmentHints, ClosureReturnTypeHints, DiscriminantHints, InlayHint, InlayHintLabel, + InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints, }, join_lines::JoinLinesConfig, markup::Markup, diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index a8ffc387080d..331ff822657e 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -108,6 +108,7 @@ impl StaticIndex<'_> { &InlayHintsConfig { location_links: true, render_colons: true, + discriminant_hints: crate::DiscriminantHints::Fieldless, type_hints: true, parameter_hints: true, chaining_hints: true, diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index cba04b00c3dd..0fe4c2bb9999 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -327,6 +327,8 @@ config_data! { inlayHints_closingBraceHints_minLines: usize = "25", /// Whether to show inlay type hints for return types of closures. inlayHints_closureReturnTypeHints_enable: ClosureReturnTypeHintsDef = "\"never\"", + /// Whether to show enum variant discriminant hints. + inlayHints_discriminantHints_enable: DiscriminantHintsDef = "\"never\"", /// Whether to show inlay hints for type adjustments. inlayHints_expressionAdjustmentHints_enable: AdjustmentHintsDef = "\"never\"", /// Whether to hide inlay hints for type adjustments outside of `unsafe` blocks. @@ -1218,6 +1220,11 @@ impl Config { type_hints: self.data.inlayHints_typeHints_enable, parameter_hints: self.data.inlayHints_parameterHints_enable, chaining_hints: self.data.inlayHints_chainingHints_enable, + discriminant_hints: match self.data.inlayHints_discriminantHints_enable { + DiscriminantHintsDef::Always => ide::DiscriminantHints::Always, + DiscriminantHintsDef::Never => ide::DiscriminantHints::Never, + DiscriminantHintsDef::Fieldless => ide::DiscriminantHints::Fieldless, + }, closure_return_type_hints: match self.data.inlayHints_closureReturnTypeHints_enable { ClosureReturnTypeHintsDef::Always => ide::ClosureReturnTypeHints::Always, ClosureReturnTypeHintsDef::Never => ide::ClosureReturnTypeHints::Never, @@ -1579,6 +1586,7 @@ mod de_unit_v { named_unit_variant!(skip_trivial); named_unit_variant!(mutable); named_unit_variant!(reborrow); + named_unit_variant!(fieldless); named_unit_variant!(with_block); } @@ -1742,6 +1750,17 @@ enum AdjustmentHintsDef { Reborrow, } +#[derive(Deserialize, Debug, Clone)] +#[serde(untagged)] +enum DiscriminantHintsDef { + #[serde(deserialize_with = "true_or_always")] + Always, + #[serde(deserialize_with = "false_or_never")] + Never, + #[serde(deserialize_with = "de_unit_v::fieldless")] + Fieldless, +} + #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] enum FilesWatcherDef { @@ -2064,6 +2083,19 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "Only show auto borrow and dereference adjustment hints." ] }, + "DiscriminantHintsDef" => set! { + "type": "string", + "enum": [ + "always", + "never", + "fieldless" + ], + "enumDescriptions": [ + "Always show all discriminant hints.", + "Never show discriminant hints.", + "Only show discriminant hints on fieldless enum variants." + ] + }, "CargoFeaturesDef" => set! { "anyOf": [ { diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index a7106acc78b1..0a11aaf3af7d 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -434,6 +434,7 @@ pub(crate) fn inlay_hint( InlayKind::ParameterHint if render_colons => inlay_hint.label.append_str(":"), InlayKind::TypeHint if render_colons => inlay_hint.label.prepend_str(": "), InlayKind::ClosureReturnTypeHint => inlay_hint.label.prepend_str(" -> "), + InlayKind::DiscriminantHint => inlay_hint.label.prepend_str(" = "), _ => {} } @@ -447,6 +448,7 @@ pub(crate) fn inlay_hint( // after annotated thing InlayKind::ClosureReturnTypeHint | InlayKind::TypeHint + | InlayKind::DiscriminantHint | InlayKind::ChainingHint | InlayKind::GenericParamListHint | InlayKind::ClosingParenthesis @@ -457,6 +459,7 @@ pub(crate) fn inlay_hint( InlayKind::TypeHint => !render_colons, InlayKind::ChainingHint | InlayKind::ClosingBraceHint => true, InlayKind::ClosingParenthesis + | InlayKind::DiscriminantHint | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::ClosureReturnTypeHint @@ -473,6 +476,7 @@ pub(crate) fn inlay_hint( | InlayKind::GenericParamListHint | InlayKind::AdjustmentHint | InlayKind::TypeHint + | InlayKind::DiscriminantHint | InlayKind::ClosingBraceHint => false, InlayKind::BindingModeHint => inlay_hint.label.as_simple_str() != Some("&"), InlayKind::ParameterHint | InlayKind::LifetimeHint => true, @@ -483,6 +487,7 @@ pub(crate) fn inlay_hint( Some(lsp_types::InlayHintKind::TYPE) } InlayKind::ClosingParenthesis + | InlayKind::DiscriminantHint | InlayKind::OpeningParenthesis | InlayKind::BindingModeHint | InlayKind::GenericParamListHint diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 867fd5620fd1..91f8e98449ec 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -454,6 +454,11 @@ to always show them). -- Whether to show inlay type hints for return types of closures. -- +[[rust-analyzer.inlayHints.discriminantHints.enable]]rust-analyzer.inlayHints.discriminantHints.enable (default: `"never"`):: ++ +-- +Whether to show enum variant discriminant hints. +-- [[rust-analyzer.inlayHints.expressionAdjustmentHints.enable]]rust-analyzer.inlayHints.expressionAdjustmentHints.enable (default: `"never"`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index fad67ce80310..b45058a6cf3d 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -960,6 +960,21 @@ "Only show type hints for return types of closures with blocks." ] }, + "rust-analyzer.inlayHints.discriminantHints.enable": { + "markdownDescription": "Whether to show enum variant discriminant hints.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "fieldless" + ], + "enumDescriptions": [ + "Always show all discriminant hints.", + "Never show discriminant hints.", + "Only show discriminant hints on fieldless enum variants." + ] + }, "rust-analyzer.inlayHints.expressionAdjustmentHints.enable": { "markdownDescription": "Whether to show inlay hints for type adjustments.", "default": "never", From 67cbd8f7c15544cabbaeaeeed9253c9874ed5842 Mon Sep 17 00:00:00 2001 From: bvanjoi Date: Fri, 23 Dec 2022 17:43:48 +0800 Subject: [PATCH 162/478] fix(completion): remove bound insert of type in trait --- .../src/completions/item_list/trait_impl.rs | 21 +++-- crates/ide-completion/src/tests/item_list.rs | 90 ++++++++++++++++++- 2 files changed, 105 insertions(+), 6 deletions(-) diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs index 7384a3f2d80b..4a1bacfa9d9e 100644 --- a/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs @@ -37,7 +37,7 @@ use ide_db::{ traits::get_missing_assoc_items, SymbolKind, }; use syntax::{ - ast::{self, edit_in_place::AttrsOwnerEdit}, + ast::{self, edit_in_place::AttrsOwnerEdit, HasTypeBounds}, AstNode, SyntaxElement, SyntaxKind, TextRange, T, }; use text_edit::TextEdit; @@ -265,10 +265,21 @@ fn add_type_alias_impl( }; let start = transformed_ty.syntax().text_range().start(); - let Some(end) = transformed_ty - .eq_token() - .map(|tok| tok.text_range().start()) - .or(transformed_ty.semicolon_token().map(|tok| tok.text_range().start())) else { return }; + + let end = if let Some(end) = + transformed_ty.colon_token().map(|tok| tok.text_range().start()) + { + end + } else if let Some(end) = transformed_ty.eq_token().map(|tok| tok.text_range().start()) + { + end + } else if let Some(end) = + transformed_ty.semicolon_token().map(|tok| tok.text_range().start()) + { + end + } else { + return; + }; let len = end - start; let mut decl = transformed_ty.syntax().text().slice(..len).to_string(); diff --git a/crates/ide-completion/src/tests/item_list.rs b/crates/ide-completion/src/tests/item_list.rs index 8ed6cb3cf867..2b10294cc5b9 100644 --- a/crates/ide-completion/src/tests/item_list.rs +++ b/crates/ide-completion/src/tests/item_list.rs @@ -1,7 +1,7 @@ //! Completion tests for item list position. use expect_test::{expect, Expect}; -use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; +use crate::tests::{check_edit, completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); @@ -277,3 +277,91 @@ fn after_unit_struct() { "#]], ); } + +#[test] +fn type_in_impl_trait() { + check_edit( + "type O", + r" +struct A; +trait B { +type O: ?Sized; +} +impl B for A { +$0 +} +", + r#" +struct A; +trait B { +type O: ?Sized; +} +impl B for A { +type O = $0; +} +"#, + ); + check_edit( + "type O", + r" +struct A; +trait B { +type O; +} +impl B for A { +$0 +} +", + r#" +struct A; +trait B { +type O; +} +impl B for A { +type O = $0; +} +"#, + ); + check_edit( + "type O", + r" +struct A; +trait B { +type O: ?Sized = u32; +} +impl B for A { +$0 +} +", + r#" +struct A; +trait B { +type O: ?Sized = u32; +} +impl B for A { +type O = $0; +} +"#, + ); + check_edit( + "type O", + r" +struct A; +trait B { +type O = u32; +} +impl B for A { +$0 +} +", + r" +struct A; +trait B { +type O = u32; +} +impl B for A { +type O = $0; +} +", + ) +} From 16654ce1549b51a17e64d4b4b4eadecd034eb683 Mon Sep 17 00:00:00 2001 From: Tom Kunc Date: Fri, 23 Dec 2022 23:22:46 +1100 Subject: [PATCH 163/478] Create new inline_macro assist. --- .../ide-assists/src/handlers/inline_macro.rs | 242 ++++++++++++++++++ crates/ide-assists/src/lib.rs | 2 + crates/ide-assists/src/tests/generated.rs | 33 +++ 3 files changed, 277 insertions(+) create mode 100644 crates/ide-assists/src/handlers/inline_macro.rs diff --git a/crates/ide-assists/src/handlers/inline_macro.rs b/crates/ide-assists/src/handlers/inline_macro.rs new file mode 100644 index 000000000000..d669826aa7aa --- /dev/null +++ b/crates/ide-assists/src/handlers/inline_macro.rs @@ -0,0 +1,242 @@ +use syntax::ast::{self, AstNode}; + +use crate::{AssistContext, AssistId, AssistKind, Assists}; + +// Assist: inline_macro +// +// Takes a macro and inlines it one step. +// +// ``` +// macro_rules! num { +// (+$($t:tt)+) => (1 + num!($($t )+)); +// (-$($t:tt)+) => (-1 + num!($($t )+)); +// (+) => (1); +// (-) => (-1); +// } +// +// fn main() { +// let number = num$0!(+ + + - + +); +// println!("{number}"); +// } +// ``` +// -> +// ``` +// macro_rules! num { +// (+$($t:tt)+) => (1 + num!($($t )+)); +// (-$($t:tt)+) => (-1 + num!($($t )+)); +// (+) => (1); +// (-) => (-1); +// } +// +// fn main() { +// let number = 1+num!(+ + - + +); +// println!("{number}"); +// } +// ``` +pub(crate) fn inline_macro(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let tok = ctx.token_at_offset().right_biased()?; + + let mut anc = tok.parent_ancestors(); + let (_name, expanded, unexpanded) = loop { + let node = anc.next()?; + if let Some(mac) = ast::MacroCall::cast(node.clone()) { + break ( + mac.path()?.segment()?.name_ref()?.to_string(), + ctx.sema.expand(&mac)?.clone_for_update(), + node, + ); + } + }; + + acc.add( + AssistId("inline_macro", AssistKind::RefactorRewrite), + format!("Inline macro"), + unexpanded.text_range(), + |builder| builder.replace(unexpanded.text_range(), expanded.to_string()), + ) +} + +#[cfg(test)] +mod tests { + use super::*; + + use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target}; + + macro_rules! simple_macro { + () => { + r#" +macro_rules! foo { + (foo) => (true); + () => (false); +} +"# + }; + } + macro_rules! double_macro { + () => { + r#" +macro_rules! bar { + (bar) => (true); + ($($tt:tt)?) => (false); +} +macro_rules! foo { + (foo) => (true); + (bar) => (bar!(bar)); + ($($tt:tt)?) => (bar!($($tt)?)); +} +"# + }; + } + + macro_rules! complex_macro { + () => { + r#" +macro_rules! num { + (+$($t:tt)+) => (1 + num!($($t )+)); + (-$($t:tt)+) => (-1 + num!($($t )+)); + (+) => (1); + (-) => (-1); +} +"# + }; + } + #[test] + fn inline_macro_target() { + check_assist_target( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let a = foo$0!(foo); }"#), + "foo!(foo)", + ); + } + + #[test] + fn inline_macro_target_start() { + check_assist_target( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let a = $0foo!(foo); }"#), + "foo!(foo)", + ); + } + + #[test] + fn inline_macro_target_end() { + check_assist_target( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let a = foo!(foo$0); }"#), + "foo!(foo)", + ); + } + + #[test] + fn inline_macro_simple_case1() { + check_assist( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let result = foo$0!(foo); }"#), + concat!(simple_macro!(), r#"fn f() { let result = true; }"#), + ); + } + + #[test] + fn inline_macro_simple_case2() { + check_assist( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let result = foo$0!(); }"#), + concat!(simple_macro!(), r#"fn f() { let result = false; }"#), + ); + } + + #[test] + fn inline_macro_simple_not_applicable() { + check_assist_not_applicable( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let result$0 = foo!(foo); }"#), + ); + } + + #[test] + fn inline_macro_simple_not_applicable_broken_macro() { + // FIXME: This is a bug. The macro should not expand, but it's + // the same behaviour as the "Expand Macro Recursively" commmand + // so it's presumably OK for the time being. + check_assist( + inline_macro, + concat!(simple_macro!(), r#"fn f() { let result = foo$0!(asdfasdf); }"#), + concat!(simple_macro!(), r#"fn f() { let result = true; }"#), + ); + } + + #[test] + fn inline_macro_double_case1() { + check_assist( + inline_macro, + concat!(double_macro!(), r#"fn f() { let result = foo$0!(bar); }"#), + concat!(double_macro!(), r#"fn f() { let result = bar!(bar); }"#), + ); + } + + #[test] + fn inline_macro_double_case2() { + check_assist( + inline_macro, + concat!(double_macro!(), r#"fn f() { let result = foo$0!(asdf); }"#), + concat!(double_macro!(), r#"fn f() { let result = bar!(asdf); }"#), + ); + } + + #[test] + fn inline_macro_complex_case1() { + check_assist( + inline_macro, + concat!(complex_macro!(), r#"fn f() { let result = num!(+ +$0 + - +); }"#), + concat!(complex_macro!(), r#"fn f() { let result = 1+num!(+ + - +); }"#), + ); + } + + #[test] + fn inline_macro_complex_case2() { + check_assist( + inline_macro, + concat!(complex_macro!(), r#"fn f() { let result = n$0um!(- + + - +); }"#), + concat!(complex_macro!(), r#"fn f() { let result = -1+num!(+ + - +); }"#), + ); + } + + #[test] + fn inline_macro_recursive_macro() { + check_assist( + inline_macro, + r#" +macro_rules! foo { + () => {foo!()} +} +fn f() { let result = foo$0!(); } +"#, + r#" +macro_rules! foo { + () => {foo!()} +} +fn f() { let result = foo!(); } +"#, + ); + } + + #[test] + fn inline_macro_unknown_macro() { + check_assist_not_applicable( + inline_macro, + r#" +fn f() { let result = foo$0!(); } +"#, + ); + } + + #[test] + fn inline_macro_function_call_not_applicable() { + check_assist_not_applicable( + inline_macro, + r#" +fn f() { let result = foo$0(); } +"#, + ); + } +} diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index b12f99cc5329..1e6d755faed5 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -159,6 +159,7 @@ mod handlers { mod add_return_type; mod inline_call; mod inline_local_variable; + mod inline_macro; mod inline_type_alias; mod introduce_named_lifetime; mod invert_if; @@ -255,6 +256,7 @@ mod handlers { inline_local_variable::inline_local_variable, inline_type_alias::inline_type_alias, inline_type_alias::inline_type_alias_uses, + inline_macro::inline_macro, introduce_named_generic::introduce_named_generic, introduce_named_lifetime::introduce_named_lifetime, invert_if::invert_if, diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index d797f077672d..666b794c01a7 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -1438,6 +1438,39 @@ fn main() { ) } +#[test] +fn doctest_inline_macro() { + check_doc_test( + "inline_macro", + r#####" +macro_rules! num { + (+$($t:tt)+) => (1 + num!($($t )+)); + (-$($t:tt)+) => (-1 + num!($($t )+)); + (+) => (1); + (-) => (-1); +} + +fn main() { + let number = num$0!(+ + + - + +); + println!("{number}"); +} +"#####, + r#####" +macro_rules! num { + (+$($t:tt)+) => (1 + num!($($t )+)); + (-$($t:tt)+) => (-1 + num!($($t )+)); + (+) => (1); + (-) => (-1); +} + +fn main() { + let number = 1+num!(+ + - + +); + println!("{number}"); +} +"#####, + ) +} + #[test] fn doctest_inline_type_alias() { check_doc_test( From e16c76e3c30fd1123921e33f408d99b5cb40532f Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Fri, 23 Dec 2022 13:42:58 -0500 Subject: [PATCH 164/478] Inline all format arguments where possible This makes code more readale and concise, moving all format arguments like `format!("{}", foo)` into the more compact `format!("{foo}")` form. The change was automatically created with, so there are far less change of an accidental typo. ``` cargo clippy --fix -- -A clippy::all -W clippy::uninlined_format_args ``` --- crates/base-db/src/fixture.rs | 6 +-- crates/base-db/src/input.rs | 4 +- crates/base-db/src/lib.rs | 2 +- crates/cfg/src/cfg_expr.rs | 2 +- crates/cfg/src/lib.rs | 6 +-- crates/flycheck/src/lib.rs | 6 +-- crates/hir-def/src/attr.rs | 2 +- crates/hir-def/src/body/pretty.rs | 4 +- crates/hir-def/src/find_path.rs | 4 +- crates/hir-def/src/import_map.rs | 8 ++-- crates/hir-def/src/item_tree.rs | 4 +- crates/hir-def/src/macro_expansion_tests.rs | 2 +- crates/hir-def/src/nameres.rs | 2 +- crates/hir-def/src/nameres/collector.rs | 2 +- crates/hir-def/src/nameres/mod_resolution.rs | 12 ++--- crates/hir-def/src/nameres/path_resolution.rs | 4 +- .../hir-def/src/nameres/tests/incremental.rs | 8 ++-- crates/hir-def/src/pretty.rs | 8 ++-- crates/hir-expand/src/db.rs | 2 +- crates/hir-expand/src/eager.rs | 2 +- crates/hir-expand/src/fixup.rs | 2 +- crates/hir-expand/src/quote.rs | 2 +- crates/hir-ty/src/builder.rs | 2 +- crates/hir-ty/src/consteval.rs | 4 +- crates/hir-ty/src/consteval/tests.rs | 4 +- crates/hir-ty/src/diagnostics/match_check.rs | 2 +- .../match_check/deconstruct_pat.rs | 2 +- crates/hir-ty/src/display.rs | 32 ++++++------- crates/hir-ty/src/interner.rs | 2 +- crates/hir-ty/src/lib.rs | 2 +- crates/hir-ty/src/tests.rs | 6 +-- crates/hir-ty/src/tests/incremental.rs | 4 +- crates/hir-ty/src/tests/macros.rs | 2 +- crates/hir-ty/src/tls.rs | 10 ++-- crates/hir-ty/src/traits.rs | 2 +- crates/hir/src/attrs.rs | 2 +- crates/hir/src/display.rs | 16 +++---- crates/hir/src/lib.rs | 2 +- crates/hir/src/semantics.rs | 2 +- .../src/handlers/generate_delegate_methods.rs | 2 +- .../generate_enum_projection_method.rs | 2 +- .../src/handlers/generate_getter.rs | 2 +- crates/ide-assists/src/tests.rs | 2 +- crates/ide-assists/src/tests/sourcegen.rs | 6 +-- crates/ide-completion/src/completions.rs | 2 +- .../src/completions/attribute/cfg.rs | 4 +- .../src/completions/attribute/lint.rs | 2 +- .../src/completions/env_vars.rs | 6 +-- .../src/completions/fn_param.rs | 2 +- .../src/completions/item_list/trait_impl.rs | 18 ++++---- .../ide-completion/src/completions/postfix.rs | 46 +++++++++---------- .../src/completions/postfix/format_like.rs | 4 +- .../ide-completion/src/completions/snippet.rs | 2 +- crates/ide-completion/src/context/tests.rs | 2 +- crates/ide-completion/src/item.rs | 4 +- crates/ide-completion/src/render.rs | 11 ++--- crates/ide-completion/src/render/function.rs | 12 ++--- crates/ide-completion/src/render/macro_.rs | 2 +- crates/ide-completion/src/render/variant.rs | 10 ++-- crates/ide-completion/src/snippet.rs | 2 +- crates/ide-completion/src/tests.rs | 4 +- crates/ide-completion/src/tests/expression.rs | 2 +- crates/ide-completion/src/tests/item.rs | 2 +- crates/ide-completion/src/tests/item_list.rs | 2 +- crates/ide-completion/src/tests/pattern.rs | 2 +- crates/ide-completion/src/tests/predicate.rs | 2 +- crates/ide-completion/src/tests/type_pos.rs | 2 +- crates/ide-db/src/assists.rs | 2 +- crates/ide-db/src/imports/import_assets.rs | 2 +- crates/ide-db/src/imports/insert_use/tests.rs | 2 +- crates/ide-db/src/rename.rs | 12 ++--- crates/ide-db/src/symbol_index.rs | 2 +- .../src/syntax_helpers/format_string_exprs.rs | 2 +- crates/ide-db/src/tests/sourcegen_lints.rs | 6 +-- .../src/handlers/mismatched_arg_count.rs | 2 +- .../src/handlers/no_such_field.rs | 6 +-- .../src/handlers/type_mismatch.rs | 4 +- .../src/handlers/unlinked_file.rs | 22 ++++----- .../src/handlers/unresolved_macro_call.rs | 2 +- .../src/handlers/unresolved_module.rs | 2 +- .../src/handlers/unresolved_proc_macro.rs | 2 +- crates/ide-diagnostics/src/lib.rs | 2 +- crates/ide-diagnostics/src/tests.rs | 2 +- crates/ide-diagnostics/src/tests/sourcegen.rs | 2 +- crates/ide-ssr/src/parsing.rs | 2 +- crates/ide-ssr/src/tests.rs | 4 +- crates/ide/src/doc_links.rs | 4 +- crates/ide/src/doc_links/intra_doc_links.rs | 4 +- crates/ide/src/doc_links/tests.rs | 2 +- crates/ide/src/goto_definition.rs | 2 +- crates/ide/src/hover.rs | 2 +- crates/ide/src/hover/render.rs | 16 +++---- crates/ide/src/hover/tests.rs | 6 +-- crates/ide/src/inlay_hints.rs | 2 +- crates/ide/src/inlay_hints/bind_pat.rs | 4 +- crates/ide/src/markup.rs | 2 +- crates/ide/src/moniker.rs | 2 +- crates/ide/src/navigation_target.rs | 4 +- crates/ide/src/rename.rs | 8 ++-- crates/ide/src/runnables.rs | 12 ++--- crates/ide/src/static_index.rs | 8 ++-- crates/ide/src/status.rs | 4 +- crates/ide/src/syntax_highlighting/html.rs | 2 +- crates/ide/src/syntax_tree.rs | 2 +- crates/ide/src/typing.rs | 2 +- crates/ide/src/typing/on_enter.rs | 11 ++--- crates/limit/src/lib.rs | 2 +- crates/mbe/src/benchmark.rs | 4 +- crates/mbe/src/syntax_bridge.rs | 2 +- crates/mbe/src/syntax_bridge/tests.rs | 4 +- crates/mbe/src/to_parser_input.rs | 2 +- crates/parser/src/parser.rs | 2 +- crates/parser/src/tests.rs | 26 +++++------ .../src/tests/sourcegen_inline_tests.rs | 6 +-- crates/proc-macro-api/src/lib.rs | 2 +- crates/proc-macro-api/src/msg/flat.rs | 6 +-- crates/proc-macro-api/src/version.rs | 2 +- .../src/abis/abi_1_58/proc_macro/mod.rs | 8 ++-- .../src/abis/abi_1_58/ra_server.rs | 10 ++-- .../src/abis/abi_1_63/ra_server.rs | 10 ++-- crates/proc-macro-srv/src/lib.rs | 18 ++++---- crates/proc-macro-test/build.rs | 4 +- crates/profile/src/hprof.rs | 10 ++-- crates/profile/src/memory_usage.rs | 2 +- crates/profile/src/stop_watch.rs | 10 ++-- crates/project-model/src/build_scripts.rs | 4 +- crates/project-model/src/cfg_flag.rs | 2 +- crates/project-model/src/lib.rs | 2 +- crates/project-model/src/project_json.rs | 2 +- crates/project-model/src/sysroot.rs | 2 +- crates/project-model/src/tests.rs | 2 +- crates/rust-analyzer/src/bin/logger.rs | 10 ++-- crates/rust-analyzer/src/bin/main.rs | 4 +- crates/rust-analyzer/src/cli.rs | 4 +- .../rust-analyzer/src/cli/analysis_stats.rs | 18 ++++---- crates/rust-analyzer/src/cli/diagnostics.rs | 4 +- crates/rust-analyzer/src/cli/flags.rs | 2 +- crates/rust-analyzer/src/cli/highlight.rs | 2 +- crates/rust-analyzer/src/cli/lsif.rs | 2 +- .../rust-analyzer/src/cli/progress_report.rs | 4 +- crates/rust-analyzer/src/cli/scip.rs | 8 ++-- crates/rust-analyzer/src/cli/ssr.rs | 2 +- crates/rust-analyzer/src/cli/symbols.rs | 2 +- crates/rust-analyzer/src/config.rs | 12 ++--- .../rust-analyzer/src/diagnostics/to_proto.rs | 6 +-- crates/rust-analyzer/src/dispatch.rs | 2 +- crates/rust-analyzer/src/global_state.rs | 2 +- crates/rust-analyzer/src/handlers.rs | 16 +++---- .../src/integrated_benchmarks.rs | 4 +- crates/rust-analyzer/src/lib.rs | 2 +- crates/rust-analyzer/src/lsp_utils.rs | 2 +- crates/rust-analyzer/src/main_loop.rs | 8 ++-- crates/rust-analyzer/src/to_proto.rs | 8 ++-- crates/rust-analyzer/tests/slow-tests/main.rs | 12 ++--- .../tests/slow-tests/sourcegen.rs | 6 +-- .../rust-analyzer/tests/slow-tests/support.rs | 8 ++-- .../rust-analyzer/tests/slow-tests/testdir.rs | 4 +- crates/rust-analyzer/tests/slow-tests/tidy.rs | 10 ++-- crates/sourcegen/src/lib.rs | 4 +- crates/stdx/src/panic_context.rs | 2 +- crates/syntax/src/algo.rs | 4 +- crates/syntax/src/ast/edit.rs | 4 +- crates/syntax/src/ast/edit_in_place.rs | 14 +++--- crates/syntax/src/ast/token_ext.rs | 6 +-- crates/syntax/src/fuzz.rs | 6 +-- crates/syntax/src/hacks.rs | 2 +- crates/syntax/src/ted.rs | 6 +-- crates/syntax/src/tests.rs | 4 +- crates/syntax/src/tests/sourcegen_ast.rs | 8 ++-- crates/test-utils/src/assert_linear.rs | 2 +- crates/test-utils/src/fixture.rs | 17 ++++--- crates/test-utils/src/lib.rs | 13 +++--- crates/tt/src/lib.rs | 16 +++---- crates/vfs/src/vfs_path.rs | 2 +- lib/lsp-server/examples/goto_def.rs | 12 ++--- lib/lsp-server/src/lib.rs | 8 ++-- xtask/src/dist.rs | 14 +++--- xtask/src/metrics.rs | 2 +- xtask/src/release.rs | 2 +- xtask/src/release/changelog.rs | 4 +- 180 files changed, 487 insertions(+), 501 deletions(-) diff --git a/crates/base-db/src/fixture.rs b/crates/base-db/src/fixture.rs index 83286cf6b777..6f83ea40e76f 100644 --- a/crates/base-db/src/fixture.rs +++ b/crates/base-db/src/fixture.rs @@ -407,9 +407,9 @@ fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option) { Some((version, url)) => { (version, CrateOrigin::CratesIo { repo: Some(url.to_owned()), name: None }) } - _ => panic!("Bad crates.io parameter: {}", data), + _ => panic!("Bad crates.io parameter: {data}"), }, - _ => panic!("Bad string for crate origin: {}", b), + _ => panic!("Bad string for crate origin: {b}"), }; (a.to_owned(), origin, Some(version.to_string())) } else { @@ -439,7 +439,7 @@ impl From for FileMeta { introduce_new_source_root: f.introduce_new_source_root.map(|kind| match &*kind { "local" => SourceRootKind::Local, "library" => SourceRootKind::Library, - invalid => panic!("invalid source root kind '{}'", invalid), + invalid => panic!("invalid source root kind '{invalid}'"), }), target_data_layout: f.target_data_layout, } diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs index 20bf8497cb58..5fa4a8024950 100644 --- a/crates/base-db/src/input.rs +++ b/crates/base-db/src/input.rs @@ -618,8 +618,8 @@ impl CyclicDependenciesError { impl fmt::Display for CyclicDependenciesError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let render = |(id, name): &(CrateId, Option)| match name { - Some(it) => format!("{}({:?})", it, id), - None => format!("{:?}", id), + Some(it) => format!("{it}({id:?})"), + None => format!("{id:?}"), }; let path = self.path.iter().rev().map(render).collect::>().join(" -> "); write!( diff --git a/crates/base-db/src/lib.rs b/crates/base-db/src/lib.rs index f725064cda9e..55a51d3bbb2c 100644 --- a/crates/base-db/src/lib.rs +++ b/crates/base-db/src/lib.rs @@ -75,7 +75,7 @@ pub trait SourceDatabase: FileLoader + std::fmt::Debug { } fn parse_query(db: &dyn SourceDatabase, file_id: FileId) -> Parse { - let _p = profile::span("parse_query").detail(|| format!("{:?}", file_id)); + let _p = profile::span("parse_query").detail(|| format!("{file_id:?}")); let text = db.file_text(file_id); SourceFile::parse(&text) } diff --git a/crates/cfg/src/cfg_expr.rs b/crates/cfg/src/cfg_expr.rs index fd9e31ed3b4f..5f4eefa83661 100644 --- a/crates/cfg/src/cfg_expr.rs +++ b/crates/cfg/src/cfg_expr.rs @@ -44,7 +44,7 @@ impl fmt::Display for CfgAtom { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { CfgAtom::Flag(name) => name.fmt(f), - CfgAtom::KeyValue { key, value } => write!(f, "{} = {:?}", key, value), + CfgAtom::KeyValue { key, value } => write!(f, "{key} = {value:?}"), } } } diff --git a/crates/cfg/src/lib.rs b/crates/cfg/src/lib.rs index d78ef4fb11e7..30709c968dac 100644 --- a/crates/cfg/src/lib.rs +++ b/crates/cfg/src/lib.rs @@ -37,7 +37,7 @@ impl fmt::Debug for CfgOptions { .iter() .map(|atom| match atom { CfgAtom::Flag(it) => it.to_string(), - CfgAtom::KeyValue { key, value } => format!("{}={}", key, value), + CfgAtom::KeyValue { key, value } => format!("{key}={value}"), }) .collect::>(); items.sort(); @@ -175,7 +175,7 @@ impl fmt::Display for InactiveReason { atom.fmt(f)?; } let is_are = if self.enabled.len() == 1 { "is" } else { "are" }; - write!(f, " {} enabled", is_are)?; + write!(f, " {is_are} enabled")?; if !self.disabled.is_empty() { f.write_str(" and ")?; @@ -194,7 +194,7 @@ impl fmt::Display for InactiveReason { atom.fmt(f)?; } let is_are = if self.disabled.len() == 1 { "is" } else { "are" }; - write!(f, " {} disabled", is_are)?; + write!(f, " {is_are} disabled")?; } Ok(()) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index f13088cd90ef..b3e7443d1c1c 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -60,9 +60,9 @@ pub enum FlycheckConfig { impl fmt::Display for FlycheckConfig { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { - FlycheckConfig::CargoCommand { command, .. } => write!(f, "cargo {}", command), + FlycheckConfig::CargoCommand { command, .. } => write!(f, "cargo {command}"), FlycheckConfig::CustomCommand { command, args, .. } => { - write!(f, "{} {}", command, args.join(" ")) + write!(f, "{command} {}", args.join(" ")) } } } @@ -474,7 +474,7 @@ impl CargoActor { ); match output { Ok(_) => Ok((read_at_least_one_message, error)), - Err(e) => Err(io::Error::new(e.kind(), format!("{:?}: {}", e, error))), + Err(e) => Err(io::Error::new(e.kind(), format!("{e:?}: {error}"))), } } } diff --git a/crates/hir-def/src/attr.rs b/crates/hir-def/src/attr.rs index 2b39c6f8da86..ab5d180e1bb9 100644 --- a/crates/hir-def/src/attr.rs +++ b/crates/hir-def/src/attr.rs @@ -712,7 +712,7 @@ impl AttrSourceMap { self.source .get(ast_idx) .map(|it| InFile::new(file_id, it)) - .unwrap_or_else(|| panic!("cannot find attr at index {:?}", id)) + .unwrap_or_else(|| panic!("cannot find attr at index {id:?}")) } } diff --git a/crates/hir-def/src/body/pretty.rs b/crates/hir-def/src/body/pretty.rs index 162d173d5240..04279751f0c8 100644 --- a/crates/hir-def/src/body/pretty.rs +++ b/crates/hir-def/src/body/pretty.rs @@ -32,7 +32,7 @@ pub(super) fn print_body_hir(db: &dyn DefDatabase, body: &Body, owner: DefWithBo Some(name) => name.to_string(), None => "_".to_string(), }; - format!("const {} = ", name) + format!("const {name} = ") } DefWithBodyId::VariantId(it) => { needs_semi = false; @@ -42,7 +42,7 @@ pub(super) fn print_body_hir(db: &dyn DefDatabase, body: &Body, owner: DefWithBo Some(name) => name.to_string(), None => "_".to_string(), }; - format!("{}", name) + format!("{name}") } }; diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs index c70e6fdccdcd..e90dc47cf38d 100644 --- a/crates/hir-def/src/find_path.rs +++ b/crates/hir-def/src/find_path.rs @@ -512,7 +512,7 @@ mod tests { fn check_found_path_(ra_fixture: &str, path: &str, prefix_kind: Option) { let (db, pos) = TestDB::with_position(ra_fixture); let module = db.module_at_position(pos); - let parsed_path_file = syntax::SourceFile::parse(&format!("use {};", path)); + let parsed_path_file = syntax::SourceFile::parse(&format!("use {path};")); let ast_path = parsed_path_file.syntax_node().descendants().find_map(syntax::ast::Path::cast).unwrap(); let mod_path = ModPath::from_src(&db, ast_path, &Hygiene::new_unhygienic()).unwrap(); @@ -531,7 +531,7 @@ mod tests { let found_path = find_path_inner(&db, ItemInNs::Types(resolved), module, prefix_kind, false); - assert_eq!(found_path, Some(mod_path), "{:?}", prefix_kind); + assert_eq!(found_path, Some(mod_path), "{prefix_kind:?}"); } fn check_found_path( diff --git a/crates/hir-def/src/import_map.rs b/crates/hir-def/src/import_map.rs index 05e0ceb05a9a..193c76620088 100644 --- a/crates/hir-def/src/import_map.rs +++ b/crates/hir-def/src/import_map.rs @@ -243,7 +243,7 @@ impl fmt::Debug for ImportMap { ItemInNs::Values(_) => "v", ItemInNs::Macros(_) => "m", }; - format!("- {} ({})", info.path, ns) + format!("- {} ({ns})", info.path) }) .collect(); @@ -398,7 +398,7 @@ pub fn search_dependencies<'a>( krate: CrateId, query: Query, ) -> FxHashSet { - let _p = profile::span("search_dependencies").detail(|| format!("{:?}", query)); + let _p = profile::span("search_dependencies").detail(|| format!("{query:?}")); let graph = db.crate_graph(); let import_maps: Vec<_> = @@ -549,7 +549,7 @@ mod tests { None } })?; - return Some(format!("{}::{}", dependency_imports.path_of(trait_)?, assoc_item_name)); + return Some(format!("{}::{assoc_item_name}", dependency_imports.path_of(trait_)?)); } None } @@ -589,7 +589,7 @@ mod tests { let map = db.import_map(krate); - Some(format!("{}:\n{:?}\n", name, map)) + Some(format!("{name}:\n{map:?}\n")) }) .sorted() .collect::(); diff --git a/crates/hir-def/src/item_tree.rs b/crates/hir-def/src/item_tree.rs index 0aa531eff71f..80297f8adf16 100644 --- a/crates/hir-def/src/item_tree.rs +++ b/crates/hir-def/src/item_tree.rs @@ -105,7 +105,7 @@ pub struct ItemTree { impl ItemTree { pub(crate) fn file_item_tree_query(db: &dyn DefDatabase, file_id: HirFileId) -> Arc { - let _p = profile::span("file_item_tree_query").detail(|| format!("{:?}", file_id)); + let _p = profile::span("file_item_tree_query").detail(|| format!("{file_id:?}")); let syntax = match db.parse_or_expand(file_id) { Some(node) => node, None => return Default::default(), @@ -132,7 +132,7 @@ impl ItemTree { ctx.lower_macro_stmts(stmts) }, _ => { - panic!("cannot create item tree from {:?} {}", syntax, syntax); + panic!("cannot create item tree from {syntax:?} {syntax}"); }, } }; diff --git a/crates/hir-def/src/macro_expansion_tests.rs b/crates/hir-def/src/macro_expansion_tests.rs index 81b9c5c4bfaf..907cc98f7b59 100644 --- a/crates/hir-def/src/macro_expansion_tests.rs +++ b/crates/hir-def/src/macro_expansion_tests.rs @@ -179,7 +179,7 @@ pub fn identity_when_valid(_attr: TokenStream, item: TokenStream) -> TokenStream if tree { let tree = format!("{:#?}", parse.syntax_node()) .split_inclusive('\n') - .map(|line| format!("// {}", line)) + .map(|line| format!("// {line}")) .collect::(); format_to!(expn_text, "\n{}", tree) } diff --git a/crates/hir-def/src/nameres.rs b/crates/hir-def/src/nameres.rs index 09732d37106c..393747d304b7 100644 --- a/crates/hir-def/src/nameres.rs +++ b/crates/hir-def/src/nameres.rs @@ -461,7 +461,7 @@ impl DefMap { for (name, child) in map.modules[module].children.iter().sorted_by(|a, b| Ord::cmp(&a.0, &b.0)) { - let path = format!("{}::{}", path, name); + let path = format!("{path}::{name}"); buf.push('\n'); go(buf, map, &path, *child); } diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index 1cd42500c080..6e1f85bc081c 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -1017,7 +1017,7 @@ impl DefCollector<'_> { None => true, Some(old_vis) => { let max_vis = old_vis.max(vis, &self.def_map).unwrap_or_else(|| { - panic!("`Tr as _` imports with unrelated visibilities {:?} and {:?} (trait {:?})", old_vis, vis, tr); + panic!("`Tr as _` imports with unrelated visibilities {old_vis:?} and {vis:?} (trait {tr:?})"); }); if max_vis == old_vis { diff --git a/crates/hir-def/src/nameres/mod_resolution.rs b/crates/hir-def/src/nameres/mod_resolution.rs index ca7bcc814e8f..11d20d3db39a 100644 --- a/crates/hir-def/src/nameres/mod_resolution.rs +++ b/crates/hir-def/src/nameres/mod_resolution.rs @@ -74,12 +74,12 @@ impl ModDir { candidate_files.push(self.dir_path.join_attr(attr_path, self.root_non_dir_owner)) } None if file_id.is_include_macro(db.upcast()) => { - candidate_files.push(format!("{}.rs", name)); - candidate_files.push(format!("{}/mod.rs", name)); + candidate_files.push(format!("{name}.rs")); + candidate_files.push(format!("{name}/mod.rs")); } None => { - candidate_files.push(format!("{}{}.rs", self.dir_path.0, name)); - candidate_files.push(format!("{}{}/mod.rs", self.dir_path.0, name)); + candidate_files.push(format!("{}{name}.rs", self.dir_path.0)); + candidate_files.push(format!("{}{name}/mod.rs", self.dir_path.0)); } }; @@ -91,7 +91,7 @@ impl ModDir { let (dir_path, root_non_dir_owner) = if is_mod_rs || attr_path.is_some() { (DirPath::empty(), false) } else { - (DirPath::new(format!("{}/", name)), true) + (DirPath::new(format!("{name}/")), true) }; if let Some(mod_dir) = self.child(dir_path, root_non_dir_owner) { return Ok((file_id, is_mod_rs, mod_dir)); @@ -156,7 +156,7 @@ impl DirPath { } else { attr }; - let res = format!("{}{}", base, attr); + let res = format!("{base}{attr}"); res } } diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs index 20d39ec6cb92..c7c50fa94a09 100644 --- a/crates/hir-def/src/nameres/path_resolution.rs +++ b/crates/hir-def/src/nameres/path_resolution.rs @@ -170,8 +170,8 @@ impl DefMap { ) -> ResolvePathResult { let graph = db.crate_graph(); let _cx = stdx::panic_context::enter(format!( - "DefMap {:?} crate_name={:?} block={:?} path={}", - self.krate, graph[self.krate].display_name, self.block, path + "DefMap {:?} crate_name={:?} block={:?} path={path}", + self.krate, graph[self.krate].display_name, self.block )); let mut segments = path.segments().iter().enumerate(); diff --git a/crates/hir-def/src/nameres/tests/incremental.rs b/crates/hir-def/src/nameres/tests/incremental.rs index 2e8cb3621fce..f5190b76db05 100644 --- a/crates/hir-def/src/nameres/tests/incremental.rs +++ b/crates/hir-def/src/nameres/tests/incremental.rs @@ -13,7 +13,7 @@ fn check_def_map_is_not_recomputed(ra_fixture_initial: &str, ra_fixture_change: let events = db.log_executed(|| { db.crate_def_map(krate); }); - assert!(format!("{:?}", events).contains("crate_def_map"), "{:#?}", events) + assert!(format!("{events:?}").contains("crate_def_map"), "{events:#?}") } db.set_file_text(pos.file_id, Arc::new(ra_fixture_change.to_string())); @@ -21,7 +21,7 @@ fn check_def_map_is_not_recomputed(ra_fixture_initial: &str, ra_fixture_change: let events = db.log_executed(|| { db.crate_def_map(krate); }); - assert!(!format!("{:?}", events).contains("crate_def_map"), "{:#?}", events) + assert!(!format!("{events:?}").contains("crate_def_map"), "{events:#?}") } } @@ -94,7 +94,7 @@ fn typing_inside_a_macro_should_not_invalidate_def_map() { let (_, module_data) = crate_def_map.modules.iter().last().unwrap(); assert_eq!(module_data.scope.resolutions().count(), 1); }); - assert!(format!("{:?}", events).contains("crate_def_map"), "{:#?}", events) + assert!(format!("{events:?}").contains("crate_def_map"), "{events:#?}") } db.set_file_text(pos.file_id, Arc::new("m!(Y);".to_string())); @@ -104,7 +104,7 @@ fn typing_inside_a_macro_should_not_invalidate_def_map() { let (_, module_data) = crate_def_map.modules.iter().last().unwrap(); assert_eq!(module_data.scope.resolutions().count(), 1); }); - assert!(!format!("{:?}", events).contains("crate_def_map"), "{:#?}", events) + assert!(!format!("{events:?}").contains("crate_def_map"), "{events:#?}") } } diff --git a/crates/hir-def/src/pretty.rs b/crates/hir-def/src/pretty.rs index 933970d10e47..befd0c5ffa05 100644 --- a/crates/hir-def/src/pretty.rs +++ b/crates/hir-def/src/pretty.rs @@ -92,7 +92,7 @@ pub(crate) fn print_generic_args(generics: &GenericArgs, buf: &mut dyn Write) -> pub(crate) fn print_generic_arg(arg: &GenericArg, buf: &mut dyn Write) -> fmt::Result { match arg { GenericArg::Type(ty) => print_type_ref(ty, buf), - GenericArg::Const(c) => write!(buf, "{}", c), + GenericArg::Const(c) => write!(buf, "{c}"), GenericArg::Lifetime(lt) => write!(buf, "{}", lt.name), } } @@ -118,7 +118,7 @@ pub(crate) fn print_type_ref(type_ref: &TypeRef, buf: &mut dyn Write) -> fmt::Re Mutability::Shared => "*const", Mutability::Mut => "*mut", }; - write!(buf, "{} ", mtbl)?; + write!(buf, "{mtbl} ")?; print_type_ref(pointee, buf)?; } TypeRef::Reference(pointee, lt, mtbl) => { @@ -130,13 +130,13 @@ pub(crate) fn print_type_ref(type_ref: &TypeRef, buf: &mut dyn Write) -> fmt::Re if let Some(lt) = lt { write!(buf, "{} ", lt.name)?; } - write!(buf, "{}", mtbl)?; + write!(buf, "{mtbl}")?; print_type_ref(pointee, buf)?; } TypeRef::Array(elem, len) => { write!(buf, "[")?; print_type_ref(elem, buf)?; - write!(buf, "; {}]", len)?; + write!(buf, "; {len}]")?; } TypeRef::Slice(elem) => { write!(buf, "[")?; diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs index 0096649be146..b28e60187def 100644 --- a/crates/hir-expand/src/db.rs +++ b/crates/hir-expand/src/db.rs @@ -444,7 +444,7 @@ fn macro_expand(db: &dyn AstDatabase, id: MacroCallId) -> ExpandResult { return ExpandResult::only_err(ExpandError::Other( - format!("invalid macro definition: {}", err).into(), + format!("invalid macro definition: {err}").into(), )) } }; diff --git a/crates/hir-expand/src/eager.rs b/crates/hir-expand/src/eager.rs index 5fd099aea7d6..2f55e78b7634 100644 --- a/crates/hir-expand/src/eager.rs +++ b/crates/hir-expand/src/eager.rs @@ -161,7 +161,7 @@ pub fn expand_eager_macro( Ok(Ok(db.intern_macro_call(loc))) } else { - panic!("called `expand_eager_macro` on non-eager macro def {:?}", def); + panic!("called `expand_eager_macro` on non-eager macro def {def:?}"); } } diff --git a/crates/hir-expand/src/fixup.rs b/crates/hir-expand/src/fixup.rs index a4abe75626e6..75d364d5f846 100644 --- a/crates/hir-expand/src/fixup.rs +++ b/crates/hir-expand/src/fixup.rs @@ -366,7 +366,7 @@ mod tests { fixups.append, ); - let actual = format!("{}\n", tt); + let actual = format!("{tt}\n"); expect.indent(false); expect.assert_eq(&actual); diff --git a/crates/hir-expand/src/quote.rs b/crates/hir-expand/src/quote.rs index e839e97bf02d..c0a7bc7ca881 100644 --- a/crates/hir-expand/src/quote.rs +++ b/crates/hir-expand/src/quote.rs @@ -233,7 +233,7 @@ mod tests { let quoted = quote!(#a); assert_eq!(quoted.to_string(), "hello"); - let t = format!("{:?}", quoted); + let t = format!("{quoted:?}"); assert_eq!(t, "SUBTREE $\n IDENT hello 4294967295"); } diff --git a/crates/hir-ty/src/builder.rs b/crates/hir-ty/src/builder.rs index 9ae752556d89..d5ef0c22dec8 100644 --- a/crates/hir-ty/src/builder.rs +++ b/crates/hir-ty/src/builder.rs @@ -142,7 +142,7 @@ impl TyBuilder { match (a.data(Interner), e) { (chalk_ir::GenericArgData::Ty(_), ParamKind::Type) | (chalk_ir::GenericArgData::Const(_), ParamKind::Const(_)) => (), - _ => panic!("Mismatched kinds: {:?}, {:?}, {:?}", a, self.vec, self.param_kinds), + _ => panic!("Mismatched kinds: {a:?}, {:?}, {:?}", self.vec, self.param_kinds), } } } diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs index 340968525701..345cf63c4fd0 100644 --- a/crates/hir-ty/src/consteval.rs +++ b/crates/hir-ty/src/consteval.rs @@ -90,14 +90,14 @@ impl Display for ComputedExpr { ComputedExpr::Literal(l) => match l { Literal::Int(x, _) => { if *x >= 10 { - write!(f, "{} ({:#X})", x, x) + write!(f, "{x} ({x:#X})") } else { x.fmt(f) } } Literal::Uint(x, _) => { if *x >= 10 { - write!(f, "{} ({:#X})", x, x) + write!(f, "{x} ({x:#X})") } else { x.fmt(f) } diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs index b76506f6ebc2..6ba03737cf8e 100644 --- a/crates/hir-ty/src/consteval/tests.rs +++ b/crates/hir-ty/src/consteval/tests.rs @@ -14,7 +14,7 @@ fn check_number(ra_fixture: &str, answer: i128) { match r { ComputedExpr::Literal(Literal::Int(r, _)) => assert_eq!(r, answer), ComputedExpr::Literal(Literal::Uint(r, _)) => assert_eq!(r, answer as u128), - x => panic!("Expected number but found {:?}", x), + x => panic!("Expected number but found {x:?}"), } } @@ -126,7 +126,7 @@ fn enums() { assert_eq!(name, "E::A"); assert_eq!(val, 1); } - x => panic!("Expected enum but found {:?}", x), + x => panic!("Expected enum but found {x:?}"), } } diff --git a/crates/hir-ty/src/diagnostics/match_check.rs b/crates/hir-ty/src/diagnostics/match_check.rs index e0905e01b6a1..8b0f051b46b6 100644 --- a/crates/hir-ty/src/diagnostics/match_check.rs +++ b/crates/hir-ty/src/diagnostics/match_check.rs @@ -386,7 +386,7 @@ impl HirDisplay for Pat { } subpattern.hir_fmt(f) } - PatKind::LiteralBool { value } => write!(f, "{}", value), + PatKind::LiteralBool { value } => write!(f, "{value}"), PatKind::Or { pats } => f.write_joined(pats.iter(), " | "), } } diff --git a/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs b/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs index 47d60fc41e70..d130827a77e8 100644 --- a/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs +++ b/crates/hir-ty/src/diagnostics/match_check/deconstruct_pat.rs @@ -372,7 +372,7 @@ impl Constructor { hir_def::AdtId::UnionId(id) => id.into(), } } - _ => panic!("bad constructor {:?} for adt {:?}", self, adt), + _ => panic!("bad constructor {self:?} for adt {adt:?}"), } } diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs index 57a15d114f07..66e813eed8b4 100644 --- a/crates/hir-ty/src/display.rs +++ b/crates/hir-ty/src/display.rs @@ -176,13 +176,13 @@ impl<'a> HirFormatter<'a> { let mut first = true; for e in iter { if !first { - write!(self, "{}", sep)?; + write!(self, "{sep}")?; } first = false; // Abbreviate multiple omitted types with a single ellipsis. if self.should_truncate() { - return write!(self, "{}", TYPE_HINT_TRUNCATION); + return write!(self, "{TYPE_HINT_TRUNCATION}"); } e.hir_fmt(self)?; @@ -320,7 +320,7 @@ impl HirDisplay for Interned { impl HirDisplay for ProjectionTy { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); + return write!(f, "{TYPE_HINT_TRUNCATION}"); } let trait_ref = self.trait_ref(f.db); @@ -342,7 +342,7 @@ impl HirDisplay for ProjectionTy { impl HirDisplay for OpaqueTy { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); + return write!(f, "{TYPE_HINT_TRUNCATION}"); } self.substitution.at(Interner, 0).hir_fmt(f) @@ -385,7 +385,7 @@ impl HirDisplay for BoundVar { impl HirDisplay for Ty { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); + return write!(f, "{TYPE_HINT_TRUNCATION}"); } match self.kind(Interner) { @@ -572,7 +572,7 @@ impl HirDisplay for Ty { hir_def::AdtId::UnionId(it) => f.db.union_data(it).name.clone(), hir_def::AdtId::EnumId(it) => f.db.enum_data(it).name.clone(), }; - write!(f, "{}", name)?; + write!(f, "{name}")?; } DisplayTarget::SourceCode { module_id } => { if let Some(path) = find_path::find_path( @@ -581,7 +581,7 @@ impl HirDisplay for Ty { module_id, false, ) { - write!(f, "{}", path)?; + write!(f, "{path}")?; } else { return Err(HirDisplayError::DisplaySourceCodeError( DisplaySourceCodeError::PathNotFound, @@ -737,7 +737,7 @@ impl HirDisplay for Ty { if sig.params().is_empty() { write!(f, "||")?; } else if f.should_truncate() { - write!(f, "|{}|", TYPE_HINT_TRUNCATION)?; + write!(f, "|{TYPE_HINT_TRUNCATION}|")?; } else { write!(f, "|")?; f.write_joined(sig.params(), ", ")?; @@ -928,7 +928,7 @@ pub fn write_bounds_like_dyn_trait_with_prefix( default_sized: SizedByDefault, f: &mut HirFormatter<'_>, ) -> Result<(), HirDisplayError> { - write!(f, "{}", prefix)?; + write!(f, "{prefix}")?; if !predicates.is_empty() || predicates.is_empty() && matches!(default_sized, SizedByDefault::Sized { .. }) { @@ -1056,7 +1056,7 @@ fn fmt_trait_ref( use_as: bool, ) -> Result<(), HirDisplayError> { if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); + return write!(f, "{TYPE_HINT_TRUNCATION}"); } tr.self_type_parameter(Interner).hir_fmt(f)?; @@ -1083,7 +1083,7 @@ impl HirDisplay for TraitRef { impl HirDisplay for WhereClause { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); + return write!(f, "{TYPE_HINT_TRUNCATION}"); } match self { @@ -1197,7 +1197,7 @@ impl HirDisplay for TypeRef { hir_def::type_ref::Mutability::Shared => "*const ", hir_def::type_ref::Mutability::Mut => "*mut ", }; - write!(f, "{}", mutability)?; + write!(f, "{mutability}")?; inner.hir_fmt(f)?; } TypeRef::Reference(inner, lifetime, mutability) => { @@ -1209,13 +1209,13 @@ impl HirDisplay for TypeRef { if let Some(lifetime) = lifetime { write!(f, "{} ", lifetime.name)?; } - write!(f, "{}", mutability)?; + write!(f, "{mutability}")?; inner.hir_fmt(f)?; } TypeRef::Array(inner, len) => { write!(f, "[")?; inner.hir_fmt(f)?; - write!(f, "; {}]", len)?; + write!(f, "; {len}]")?; } TypeRef::Slice(inner) => { write!(f, "[")?; @@ -1232,7 +1232,7 @@ impl HirDisplay for TypeRef { for index in 0..function_parameters.len() { let (param_name, param_type) = &function_parameters[index]; if let Some(name) = param_name { - write!(f, "{}: ", name)?; + write!(f, "{name}: ")?; } param_type.hir_fmt(f)?; @@ -1408,7 +1408,7 @@ impl HirDisplay for hir_def::path::GenericArg { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { match self { hir_def::path::GenericArg::Type(ty) => ty.hir_fmt(f), - hir_def::path::GenericArg::Const(c) => write!(f, "{}", c), + hir_def::path::GenericArg::Const(c) => write!(f, "{c}"), hir_def::path::GenericArg::Lifetime(lifetime) => write!(f, "{}", lifetime.name), } } diff --git a/crates/hir-ty/src/interner.rs b/crates/hir-ty/src/interner.rs index ca76e08fddb9..01b5719be4c0 100644 --- a/crates/hir-ty/src/interner.rs +++ b/crates/hir-ty/src/interner.rs @@ -143,7 +143,7 @@ impl chalk_ir::interner::Interner for Interner { fn debug_goal(goal: &Goal, fmt: &mut fmt::Formatter<'_>) -> Option { let goal_data = goal.data(Interner); - Some(write!(fmt, "{:?}", goal_data)) + Some(write!(fmt, "{goal_data:?}")) } fn debug_goals( diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index 48581d4e0a41..d3b445c01790 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -513,7 +513,7 @@ where let mut error_replacer = ErrorReplacer { vars: 0 }; let value = match t.clone().try_fold_with(&mut error_replacer, DebruijnIndex::INNERMOST) { Ok(t) => t, - Err(_) => panic!("Encountered unbound or inference vars in {:?}", t), + Err(_) => panic!("Encountered unbound or inference vars in {t:?}"), }; let kinds = (0..error_replacer.vars).map(|_| { chalk_ir::CanonicalVarKind::new( diff --git a/crates/hir-ty/src/tests.rs b/crates/hir-ty/src/tests.rs index ebbc5410147c..7bcf89ff59c0 100644 --- a/crates/hir-ty/src/tests.rs +++ b/crates/hir-ty/src/tests.rs @@ -105,7 +105,7 @@ fn check_impl(ra_fixture: &str, allow_none: bool, only_types: bool, display_sour .collect(), ); } else { - panic!("unexpected annotation: {}", expected); + panic!("unexpected annotation: {expected}"); } had_annotations = true; } @@ -181,11 +181,11 @@ fn check_impl(ra_fixture: &str, allow_none: bool, only_types: bool, display_sour expected, adjustments .iter() - .map(|Adjustment { kind, .. }| format!("{:?}", kind)) + .map(|Adjustment { kind, .. }| format!("{kind:?}")) .collect::>() ); } else { - panic!("expected {:?} adjustments, found none", expected); + panic!("expected {expected:?} adjustments, found none"); } } } diff --git a/crates/hir-ty/src/tests/incremental.rs b/crates/hir-ty/src/tests/incremental.rs index 3e08e83e89a3..073d6d9be2b9 100644 --- a/crates/hir-ty/src/tests/incremental.rs +++ b/crates/hir-ty/src/tests/incremental.rs @@ -24,7 +24,7 @@ fn typing_whitespace_inside_a_function_should_not_invalidate_types() { db.infer(def); }); }); - assert!(format!("{:?}", events).contains("infer")) + assert!(format!("{events:?}").contains("infer")) } let new_text = " @@ -46,6 +46,6 @@ fn typing_whitespace_inside_a_function_should_not_invalidate_types() { db.infer(def); }); }); - assert!(!format!("{:?}", events).contains("infer"), "{:#?}", events) + assert!(!format!("{events:?}").contains("infer"), "{events:#?}") } } diff --git a/crates/hir-ty/src/tests/macros.rs b/crates/hir-ty/src/tests/macros.rs index b3adafaafd38..8b75ec842a4f 100644 --- a/crates/hir-ty/src/tests/macros.rs +++ b/crates/hir-ty/src/tests/macros.rs @@ -849,7 +849,7 @@ fn main() { //^^^^^^^^^^^^^^^^^ RegisterBlock } "#; - let fixture = format!("{}\n//- /foo.rs\n{}", fixture, data); + let fixture = format!("{fixture}\n//- /foo.rs\n{data}"); { let _b = bench("include macro"); diff --git a/crates/hir-ty/src/tls.rs b/crates/hir-ty/src/tls.rs index 92711a24fe39..b7e6ee6740be 100644 --- a/crates/hir-ty/src/tls.rs +++ b/crates/hir-ty/src/tls.rs @@ -67,12 +67,12 @@ impl DebugContext<'_> { let trait_ref = projection_ty.trait_ref(self.0); let trait_params = trait_ref.substitution.as_slice(Interner); let self_ty = trait_ref.self_type_parameter(Interner); - write!(fmt, "<{:?} as {}", self_ty, trait_name)?; + write!(fmt, "<{self_ty:?} as {trait_name}")?; if trait_params.len() > 1 { write!( fmt, "<{}>", - trait_params[1..].iter().format_with(", ", |x, f| f(&format_args!("{:?}", x))), + trait_params[1..].iter().format_with(", ", |x, f| f(&format_args!("{x:?}"))), )?; } write!(fmt, ">::{}", type_alias_data.name)?; @@ -83,7 +83,7 @@ impl DebugContext<'_> { write!( fmt, "<{}>", - proj_params.iter().format_with(", ", |x, f| f(&format_args!("{:?}", x))), + proj_params.iter().format_with(", ", |x, f| f(&format_args!("{x:?}"))), )?; } @@ -105,9 +105,9 @@ impl DebugContext<'_> { } }; match def { - CallableDefId::FunctionId(_) => write!(fmt, "{{fn {}}}", name), + CallableDefId::FunctionId(_) => write!(fmt, "{{fn {name}}}"), CallableDefId::StructId(_) | CallableDefId::EnumVariantId(_) => { - write!(fmt, "{{ctor {}}}", name) + write!(fmt, "{{ctor {name}}}") } } } diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs index da454eeb42ea..615fd9d94db6 100644 --- a/crates/hir-ty/src/traits.rs +++ b/crates/hir-ty/src/traits.rs @@ -130,7 +130,7 @@ fn solve( let mut solve = || { let _ctx = if is_chalk_debug() || is_chalk_print() { - Some(panic_context::enter(format!("solving {:?}", goal))) + Some(panic_context::enter(format!("solving {goal:?}"))) } else { None }; diff --git a/crates/hir/src/attrs.rs b/crates/hir/src/attrs.rs index 0bd379340010..54425d69b6b7 100644 --- a/crates/hir/src/attrs.rs +++ b/crates/hir/src/attrs.rs @@ -148,7 +148,7 @@ fn resolve_doc_path( let modpath = { // FIXME: this is not how we should get a mod path here - let ast_path = ast::SourceFile::parse(&format!("type T = {};", link)) + let ast_path = ast::SourceFile::parse(&format!("type T = {link};")) .syntax_node() .descendants() .find_map(ast::Path::cast)?; diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs index 27b2f445d73c..5a4b2f334496 100644 --- a/crates/hir/src/display.rs +++ b/crates/hir/src/display.rs @@ -79,7 +79,7 @@ impl HirDisplay for Function { } } match name { - Some(name) => write!(f, "{}: ", name)?, + Some(name) => write!(f, "{name}: ")?, None => f.write_str("_: ")?, } // FIXME: Use resolved `param.ty` or raw `type_ref`? @@ -327,7 +327,7 @@ fn write_generic_params( continue; } delim(f)?; - write!(f, "{}", name)?; + write!(f, "{name}")?; if let Some(default) = &ty.default { f.write_str(" = ")?; default.hir_fmt(f)?; @@ -335,7 +335,7 @@ fn write_generic_params( } TypeOrConstParamData::ConstParamData(c) => { delim(f)?; - write!(f, "const {}: ", name)?; + write!(f, "const {name}: ")?; c.ty.hir_fmt(f)?; } } @@ -372,7 +372,7 @@ fn write_where_clause(def: GenericDefId, f: &mut HirFormatter<'_>) -> Result<(), WherePredicateTypeTarget::TypeRef(ty) => ty.hir_fmt(f), WherePredicateTypeTarget::TypeOrConstParam(id) => { match ¶ms.type_or_consts[*id].name() { - Some(name) => write!(f, "{}", name), + Some(name) => write!(f, "{name}"), None => f.write_str("{unnamed}"), } } @@ -424,7 +424,7 @@ fn write_where_clause(def: GenericDefId, f: &mut HirFormatter<'_>) -> Result<(), if idx != 0 { f.write_str(", ")?; } - write!(f, "{}", lifetime)?; + write!(f, "{lifetime}")?; } f.write_str("> ")?; write_target(target, f)?; @@ -447,7 +447,7 @@ impl HirDisplay for Const { let data = f.db.const_data(self.id); f.write_str("const ")?; match &data.name { - Some(name) => write!(f, "{}: ", name)?, + Some(name) => write!(f, "{name}: ")?, None => f.write_str("_: ")?, } data.type_ref.hir_fmt(f)?; @@ -511,9 +511,9 @@ impl HirDisplay for Module { fn hir_fmt(&self, f: &mut HirFormatter<'_>) -> Result<(), HirDisplayError> { // FIXME: Module doesn't have visibility saved in data. match self.name(f.db) { - Some(name) => write!(f, "mod {}", name), + Some(name) => write!(f, "mod {name}"), None if self.is_crate_root(f.db) => match self.krate(f.db).display_name(f.db) { - Some(name) => write!(f, "extern crate {}", name), + Some(name) => write!(f, "extern crate {name}"), None => f.write_str("extern crate {unknown}"), }, None => f.write_str("mod {unnamed}"), diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index aabfd170487e..3f8acdfd2ff9 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -813,7 +813,7 @@ fn precise_macro_call_location( .doc_comments_and_attrs() .nth((*invoc_attr_index) as usize) .and_then(Either::left) - .unwrap_or_else(|| panic!("cannot find attribute #{}", invoc_attr_index)); + .unwrap_or_else(|| panic!("cannot find attribute #{invoc_attr_index}")); ( ast_id.with_value(SyntaxNodePtr::from(AstPtr::new(&attr))), diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 55950da9d54f..a255dc1972ce 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -1378,7 +1378,7 @@ impl<'db> SemanticsImpl<'db> { self.cache .borrow() .keys() - .map(|it| format!("{:?}", it)) + .map(|it| format!("{it:?}")) .collect::>() .join(", ") ) diff --git a/crates/ide-assists/src/handlers/generate_delegate_methods.rs b/crates/ide-assists/src/handlers/generate_delegate_methods.rs index ceae80755037..c2c5bf3aabb1 100644 --- a/crates/ide-assists/src/handlers/generate_delegate_methods.rs +++ b/crates/ide-assists/src/handlers/generate_delegate_methods.rs @@ -81,7 +81,7 @@ pub(crate) fn generate_delegate_methods(acc: &mut Assists, ctx: &AssistContext<' acc.add_group( &GroupLabel("Generate delegate methods…".to_owned()), AssistId("generate_delegate_methods", AssistKind::Generate), - format!("Generate delegate for `{}.{}()`", field_name, method.name(ctx.db())), + format!("Generate delegate for `{field_name}.{}()`", method.name(ctx.db())), target, |builder| { // Create the function diff --git a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs index c9aa41c845ad..ee643ce9a4ac 100644 --- a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs +++ b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs @@ -157,7 +157,7 @@ fn generate_enum_projection_method( assist_description, target, |builder| { - let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{} ", v)); + let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{v} ")); let field_type_syntax = field_type.syntax(); diff --git a/crates/ide-assists/src/handlers/generate_getter.rs b/crates/ide-assists/src/handlers/generate_getter.rs index 5e7191428349..a82dde233377 100644 --- a/crates/ide-assists/src/handlers/generate_getter.rs +++ b/crates/ide-assists/src/handlers/generate_getter.rs @@ -235,7 +235,7 @@ fn generate_getter_from_info( ) -> String { let mut buf = String::with_capacity(512); - let vis = info.strukt.visibility().map_or(String::new(), |v| format!("{} ", v)); + let vis = info.strukt.visibility().map_or(String::new(), |v| format!("{v} ")); let (ty, body) = if info.mutable { ( format!("&mut {}", record_field_info.field_ty), diff --git a/crates/ide-assists/src/tests.rs b/crates/ide-assists/src/tests.rs index 92ced27c78ae..fca268a1f0b2 100644 --- a/crates/ide-assists/src/tests.rs +++ b/crates/ide-assists/src/tests.rs @@ -171,7 +171,7 @@ fn check(handler: Handler, before: &str, expected: ExpectedResult<'_>, assist_la } FileSystemEdit::MoveDir { src, src_id, dst } => { // temporary placeholder for MoveDir since we are not using MoveDir in ide assists yet. - (dst, format!("{:?}\n{:?}", src_id, src)) + (dst, format!("{src_id:?}\n{src:?}")) } }; let sr = db.file_source_root(dst.anchor); diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs index 070b83d3c16b..c574d6bc631a 100644 --- a/crates/ide-assists/src/tests/sourcegen.rs +++ b/crates/ide-assists/src/tests/sourcegen.rs @@ -18,7 +18,7 @@ use super::check_doc_test; for assist in assists.iter() { for (idx, section) in assist.sections.iter().enumerate() { let test_id = - if idx == 0 { assist.id.clone() } else { format!("{}_{}", &assist.id, idx) }; + if idx == 0 { assist.id.clone() } else { format!("{}_{idx}", &assist.id) }; let test = format!( r######" #[test] @@ -175,7 +175,7 @@ impl fmt::Display for Assist { fn hide_hash_comments(text: &str) -> String { text.split('\n') // want final newline .filter(|&it| !(it.starts_with("# ") || it == "#")) - .map(|it| format!("{}\n", it)) + .map(|it| format!("{it}\n")) .collect() } @@ -190,6 +190,6 @@ fn reveal_hash_comments(text: &str) -> String { it } }) - .map(|it| format!("{}\n", it)) + .map(|it| format!("{it}\n")) .collect() } diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs index ba5afde19bcf..eb87d6c58262 100644 --- a/crates/ide-completion/src/completions.rs +++ b/crates/ide-completion/src/completions.rs @@ -133,7 +133,7 @@ impl Completions { if incomplete_let && snippet.ends_with('}') { // complete block expression snippets with a trailing semicolon, if inside an incomplete let cov_mark::hit!(let_semi); - item.insert_snippet(cap, format!("{};", snippet)); + item.insert_snippet(cap, format!("{snippet};")); } else { item.insert_snippet(cap, snippet); } diff --git a/crates/ide-completion/src/completions/attribute/cfg.rs b/crates/ide-completion/src/completions/attribute/cfg.rs index 311060143b06..7ef4ff30b56c 100644 --- a/crates/ide-completion/src/completions/attribute/cfg.rs +++ b/crates/ide-completion/src/completions/attribute/cfg.rs @@ -11,7 +11,7 @@ use crate::{completions::Completions, context::CompletionContext, CompletionItem pub(crate) fn complete_cfg(acc: &mut Completions, ctx: &CompletionContext<'_>) { let add_completion = |item: &str| { let mut completion = CompletionItem::new(SymbolKind::BuiltinAttr, ctx.source_range(), item); - completion.insert_text(format!(r#""{}""#, item)); + completion.insert_text(format!(r#""{item}""#)); acc.add(completion.build()); }; @@ -29,7 +29,7 @@ pub(crate) fn complete_cfg(acc: &mut Completions, ctx: &CompletionContext<'_>) { Some("target_vendor") => KNOWN_VENDOR.iter().copied().for_each(add_completion), Some("target_endian") => ["little", "big"].into_iter().for_each(add_completion), Some(name) => ctx.krate.potential_cfg(ctx.db).get_cfg_values(name).cloned().for_each(|s| { - let insert_text = format!(r#""{}""#, s); + let insert_text = format!(r#""{s}""#); let mut item = CompletionItem::new(SymbolKind::BuiltinAttr, ctx.source_range(), s); item.insert_text(insert_text); diff --git a/crates/ide-completion/src/completions/attribute/lint.rs b/crates/ide-completion/src/completions/attribute/lint.rs index 967f6ddd9a83..818c3cfd5fe7 100644 --- a/crates/ide-completion/src/completions/attribute/lint.rs +++ b/crates/ide-completion/src/completions/attribute/lint.rs @@ -51,7 +51,7 @@ pub(super) fn complete_lint( continue; } let label = match qual { - Some(qual) if !is_qualified => format!("{}::{}", qual, name), + Some(qual) if !is_qualified => format!("{qual}::{name}"), _ => name.to_owned(), }; let mut item = CompletionItem::new(SymbolKind::Attribute, ctx.source_range(), label); diff --git a/crates/ide-completion/src/completions/env_vars.rs b/crates/ide-completion/src/completions/env_vars.rs index 09e95e53de63..a094e857bbad 100644 --- a/crates/ide-completion/src/completions/env_vars.rs +++ b/crates/ide-completion/src/completions/env_vars.rs @@ -112,7 +112,7 @@ mod tests { "#; let completions = completion_list(fixture); - assert!(completions.is_empty(), "Completions weren't empty: {}", completions); + assert!(completions.is_empty(), "Completions weren't empty: {completions}"); } #[test] @@ -129,7 +129,7 @@ mod tests { "#; let completions = completion_list(fixture); - assert!(completions.is_empty(), "Completions weren't empty: {}", completions); + assert!(completions.is_empty(), "Completions weren't empty: {completions}"); } #[test] @@ -145,6 +145,6 @@ mod tests { "#; let completions = completion_list(fixture); - assert!(completions.is_empty(), "Completions weren't empty: {}", completions) + assert!(completions.is_empty(), "Completions weren't empty: {completions}") } } diff --git a/crates/ide-completion/src/completions/fn_param.rs b/crates/ide-completion/src/completions/fn_param.rs index f0ecc595af33..d8b8a190eb84 100644 --- a/crates/ide-completion/src/completions/fn_param.rs +++ b/crates/ide-completion/src/completions/fn_param.rs @@ -192,5 +192,5 @@ fn comma_wrapper(ctx: &CompletionContext<'_>) -> Option<(impl Fn(&str) -> String matches!(prev_token_kind, SyntaxKind::COMMA | SyntaxKind::L_PAREN | SyntaxKind::PIPE); let leading = if has_leading_comma { "" } else { ", " }; - Some((move |label: &_| (format!("{}{}{}", leading, label, trailing)), param.text_range())) + Some((move |label: &_| (format!("{leading}{label}{trailing}")), param.text_range())) } diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs index 4a1bacfa9d9e..21ec13bba015 100644 --- a/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs @@ -190,7 +190,7 @@ fn add_function_impl( }; let mut item = CompletionItem::new(completion_kind, replacement_range, label); - item.lookup_by(format!("fn {}", fn_name)) + item.lookup_by(format!("fn {fn_name}")) .set_documentation(func.docs(ctx.db)) .set_relevance(CompletionRelevance { is_item_from_trait: true, ..Default::default() }); @@ -205,11 +205,11 @@ fn add_function_impl( let function_decl = function_declaration(&transformed_fn, source.file_id.is_macro()); match ctx.config.snippet_cap { Some(cap) => { - let snippet = format!("{} {{\n $0\n}}", function_decl); + let snippet = format!("{function_decl} {{\n $0\n}}"); item.snippet_edit(cap, TextEdit::replace(replacement_range, snippet)); } None => { - let header = format!("{} {{", function_decl); + let header = format!("{function_decl} {{"); item.text_edit(TextEdit::replace(replacement_range, header)); } }; @@ -249,10 +249,10 @@ fn add_type_alias_impl( ) { let alias_name = type_alias.name(ctx.db).unescaped().to_smol_str(); - let label = format!("type {} =", alias_name); + let label = format!("type {alias_name} ="); let mut item = CompletionItem::new(SymbolKind::TypeAlias, replacement_range, label); - item.lookup_by(format!("type {}", alias_name)) + item.lookup_by(format!("type {alias_name}")) .set_documentation(type_alias.docs(ctx.db)) .set_relevance(CompletionRelevance { is_item_from_trait: true, ..Default::default() }); @@ -290,7 +290,7 @@ fn add_type_alias_impl( match ctx.config.snippet_cap { Some(cap) => { - let snippet = format!("{}$0;", decl); + let snippet = format!("{decl}$0;"); item.snippet_edit(cap, TextEdit::replace(replacement_range, snippet)); } None => { @@ -321,10 +321,10 @@ fn add_const_impl( }; let label = make_const_compl_syntax(&transformed_const, source.file_id.is_macro()); - let replacement = format!("{} ", label); + let replacement = format!("{label} "); let mut item = CompletionItem::new(SymbolKind::Const, replacement_range, label); - item.lookup_by(format!("const {}", const_name)) + item.lookup_by(format!("const {const_name}")) .set_documentation(const_.docs(ctx.db)) .set_relevance(CompletionRelevance { is_item_from_trait: true, @@ -333,7 +333,7 @@ fn add_const_impl( match ctx.config.snippet_cap { Some(cap) => item.snippet_edit( cap, - TextEdit::replace(replacement_range, format!("{}$0;", replacement)), + TextEdit::replace(replacement_range, format!("{replacement}$0;")), ), None => item.text_edit(TextEdit::replace(replacement_range, replacement)), }; diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 31ec9d9f6396..2404491c1f09 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -61,7 +61,7 @@ pub(crate) fn complete_postfix( let mut item = postfix_snippet( "drop", "fn drop(&mut self)", - &format!("drop($0{})", receiver_text), + &format!("drop($0{receiver_text})"), ); item.set_documentation(drop_fn.docs(ctx.db)); item.add_to(acc); @@ -76,14 +76,14 @@ pub(crate) fn complete_postfix( postfix_snippet( "ifl", "if let Ok {}", - &format!("if let Ok($1) = {} {{\n $0\n}}", receiver_text), + &format!("if let Ok($1) = {receiver_text} {{\n $0\n}}"), ) .add_to(acc); postfix_snippet( "while", "while let Ok {}", - &format!("while let Ok($1) = {} {{\n $0\n}}", receiver_text), + &format!("while let Ok($1) = {receiver_text} {{\n $0\n}}"), ) .add_to(acc); } @@ -91,41 +91,37 @@ pub(crate) fn complete_postfix( postfix_snippet( "ifl", "if let Some {}", - &format!("if let Some($1) = {} {{\n $0\n}}", receiver_text), + &format!("if let Some($1) = {receiver_text} {{\n $0\n}}"), ) .add_to(acc); postfix_snippet( "while", "while let Some {}", - &format!("while let Some($1) = {} {{\n $0\n}}", receiver_text), + &format!("while let Some($1) = {receiver_text} {{\n $0\n}}"), ) .add_to(acc); } } } else if receiver_ty.is_bool() || receiver_ty.is_unknown() { - postfix_snippet("if", "if expr {}", &format!("if {} {{\n $0\n}}", receiver_text)) + postfix_snippet("if", "if expr {}", &format!("if {receiver_text} {{\n $0\n}}")) .add_to(acc); - postfix_snippet( - "while", - "while expr {}", - &format!("while {} {{\n $0\n}}", receiver_text), - ) - .add_to(acc); - postfix_snippet("not", "!expr", &format!("!{}", receiver_text)).add_to(acc); + postfix_snippet("while", "while expr {}", &format!("while {receiver_text} {{\n $0\n}}")) + .add_to(acc); + postfix_snippet("not", "!expr", &format!("!{receiver_text}")).add_to(acc); } else if let Some(trait_) = ctx.famous_defs().core_iter_IntoIterator() { if receiver_ty.impls_trait(ctx.db, trait_, &[]) { postfix_snippet( "for", "for ele in expr {}", - &format!("for ele in {} {{\n $0\n}}", receiver_text), + &format!("for ele in {receiver_text} {{\n $0\n}}"), ) .add_to(acc); } } - postfix_snippet("ref", "&expr", &format!("&{}", receiver_text)).add_to(acc); - postfix_snippet("refm", "&mut expr", &format!("&mut {}", receiver_text)).add_to(acc); + postfix_snippet("ref", "&expr", &format!("&{receiver_text}")).add_to(acc); + postfix_snippet("refm", "&mut expr", &format!("&mut {receiver_text}")).add_to(acc); // The rest of the postfix completions create an expression that moves an argument, // so it's better to consider references now to avoid breaking the compilation @@ -148,7 +144,7 @@ pub(crate) fn complete_postfix( postfix_snippet( "match", "match expr {}", - &format!("match {} {{\n Ok(${{1:_}}) => {{$2}},\n Err(${{3:_}}) => {{$0}},\n}}", receiver_text), + &format!("match {receiver_text} {{\n Ok(${{1:_}}) => {{$2}},\n Err(${{3:_}}) => {{$0}},\n}}"), ) .add_to(acc); } @@ -168,21 +164,21 @@ pub(crate) fn complete_postfix( postfix_snippet( "match", "match expr {}", - &format!("match {} {{\n ${{1:_}} => {{$0}},\n}}", receiver_text), + &format!("match {receiver_text} {{\n ${{1:_}} => {{$0}},\n}}"), ) .add_to(acc); } } - postfix_snippet("box", "Box::new(expr)", &format!("Box::new({})", receiver_text)).add_to(acc); - postfix_snippet("dbg", "dbg!(expr)", &format!("dbg!({})", receiver_text)).add_to(acc); // fixme - postfix_snippet("dbgr", "dbg!(&expr)", &format!("dbg!(&{})", receiver_text)).add_to(acc); - postfix_snippet("call", "function(expr)", &format!("${{1}}({})", receiver_text)).add_to(acc); + postfix_snippet("box", "Box::new(expr)", &format!("Box::new({receiver_text})")).add_to(acc); + postfix_snippet("dbg", "dbg!(expr)", &format!("dbg!({receiver_text})")).add_to(acc); // fixme + postfix_snippet("dbgr", "dbg!(&expr)", &format!("dbg!(&{receiver_text})")).add_to(acc); + postfix_snippet("call", "function(expr)", &format!("${{1}}({receiver_text})")).add_to(acc); if let Some(parent) = dot_receiver.syntax().parent().and_then(|p| p.parent()) { if matches!(parent.kind(), STMT_LIST | EXPR_STMT) { - postfix_snippet("let", "let", &format!("let $0 = {};", receiver_text)).add_to(acc); - postfix_snippet("letm", "let mut", &format!("let mut $0 = {};", receiver_text)) + postfix_snippet("let", "let", &format!("let $0 = {receiver_text};")).add_to(acc); + postfix_snippet("letm", "let mut", &format!("let mut $0 = {receiver_text};")) .add_to(acc); } } @@ -300,7 +296,7 @@ fn add_custom_postfix_completions( let body = snippet.postfix_snippet(receiver_text); let mut builder = postfix_snippet(trigger, snippet.description.as_deref().unwrap_or_default(), &body); - builder.documentation(Documentation::new(format!("```rust\n{}\n```", body))); + builder.documentation(Documentation::new(format!("```rust\n{body}\n```"))); for import in imports.into_iter() { builder.add_import(import); } diff --git a/crates/ide-completion/src/completions/postfix/format_like.rs b/crates/ide-completion/src/completions/postfix/format_like.rs index b43bdb9ab9d1..d64d6379a9cd 100644 --- a/crates/ide-completion/src/completions/postfix/format_like.rs +++ b/crates/ide-completion/src/completions/postfix/format_like.rs @@ -54,7 +54,7 @@ pub(crate) fn add_format_like_completions( if let Ok((out, exprs)) = parse_format_exprs(receiver_text.text()) { let exprs = with_placeholders(exprs); for (label, macro_name) in KINDS { - let snippet = format!(r#"{}({}, {})"#, macro_name, out, exprs.join(", ")); + let snippet = format!(r#"{macro_name}({out}, {})"#, exprs.join(", ")); postfix_snippet(label, macro_name, &snippet).add_to(acc); } @@ -81,7 +81,7 @@ mod tests { for (kind, input, output) in test_vector { let (parsed_string, exprs) = parse_format_exprs(input).unwrap(); let exprs = with_placeholders(exprs); - let snippet = format!(r#"{}("{}", {})"#, kind, parsed_string, exprs.join(", ")); + let snippet = format!(r#"{kind}("{parsed_string}", {})"#, exprs.join(", ")); assert_eq!(&snippet, output); } } diff --git a/crates/ide-completion/src/completions/snippet.rs b/crates/ide-completion/src/completions/snippet.rs index 66adb4286373..da1f0542d286 100644 --- a/crates/ide-completion/src/completions/snippet.rs +++ b/crates/ide-completion/src/completions/snippet.rs @@ -141,7 +141,7 @@ fn add_custom_completions( }; let body = snip.snippet(); let mut builder = snippet(ctx, cap, trigger, &body); - builder.documentation(Documentation::new(format!("```rust\n{}\n```", body))); + builder.documentation(Documentation::new(format!("```rust\n{body}\n```"))); for import in imports.into_iter() { builder.add_import(import); } diff --git a/crates/ide-completion/src/context/tests.rs b/crates/ide-completion/src/context/tests.rs index 50845b3881f4..a654a5db5744 100644 --- a/crates/ide-completion/src/context/tests.rs +++ b/crates/ide-completion/src/context/tests.rs @@ -19,7 +19,7 @@ fn check_expected_type_and_name(ra_fixture: &str, expect: Expect) { let name = completion_context.expected_name.map_or_else(|| "?".to_owned(), |name| name.to_string()); - expect.assert_eq(&format!("ty: {}, name: {}", ty, name)); + expect.assert_eq(&format!("ty: {ty}, name: {name}")); } #[test] diff --git a/crates/ide-completion/src/item.rs b/crates/ide-completion/src/item.rs index 27c3ccb35a1e..657eab5b1b83 100644 --- a/crates/ide-completion/src/item.rs +++ b/crates/ide-completion/src/item.rs @@ -453,10 +453,10 @@ impl Builder { // snippets can have multiple imports, but normal completions only have up to one if let Some(original_path) = import_edit.original_path.as_ref() { lookup = lookup.or_else(|| Some(label.clone())); - label = SmolStr::from(format!("{} (use {})", label, original_path)); + label = SmolStr::from(format!("{label} (use {original_path})")); } } else if let Some(trait_name) = self.trait_name { - label = SmolStr::from(format!("{} (as {})", label, trait_name)); + label = SmolStr::from(format!("{label} (as {trait_name})")); } let text_edit = match self.text_edit { diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index c3ffc6d50743..e48d1aecd04f 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -144,8 +144,7 @@ pub(crate) fn render_field( } fn field_with_receiver(receiver: Option<&hir::Name>, field_name: &str) -> SmolStr { - receiver - .map_or_else(|| field_name.into(), |receiver| format!("{}.{}", receiver, field_name).into()) + receiver.map_or_else(|| field_name.into(), |receiver| format!("{receiver}.{field_name}").into()) } pub(crate) fn render_tuple_field( @@ -306,7 +305,7 @@ fn render_resolution_path( item.lookup_by(name.clone()) .label(SmolStr::from_iter([&name, "<…>"])) .trigger_call_info() - .insert_snippet(cap, format!("{}<$0>", local_name)); + .insert_snippet(cap, format!("{local_name}<$0>")); } } } @@ -528,13 +527,13 @@ mod tests { let tag = it.kind().tag(); let relevance = display_relevance(it.relevance()); - items.push(format!("{} {} {}\n", tag, it.label(), relevance)); + items.push(format!("{tag} {} {relevance}\n", it.label())); if let Some((mutability, _offset, relevance)) = it.ref_match() { let label = format!("&{}{}", mutability.as_keyword_for_ref(), it.label()); let relevance = display_relevance(relevance); - items.push(format!("{} {} {}\n", tag, label, relevance)); + items.push(format!("{tag} {label} {relevance}\n")); } items @@ -563,7 +562,7 @@ mod tests { .filter_map(|(cond, desc)| if cond { Some(desc) } else { None }) .join("+"); - format!("[{}]", relevance_factors) + format!("[{relevance_factors}]") } } diff --git a/crates/ide-completion/src/render/function.rs b/crates/ide-completion/src/render/function.rs index 376120846047..197592e78ce2 100644 --- a/crates/ide-completion/src/render/function.rs +++ b/crates/ide-completion/src/render/function.rs @@ -53,7 +53,7 @@ fn render( let (call, escaped_call) = match &func_kind { FuncKind::Method(_, Some(receiver)) => ( format!("{}.{}", receiver.unescaped(), name.unescaped()).into(), - format!("{}.{}", receiver, name).into(), + format!("{receiver}.{name}").into(), ), _ => (name.unescaped().to_smol_str(), name.to_smol_str()), }; @@ -162,7 +162,7 @@ pub(super) fn add_call_parens<'b>( cov_mark::hit!(inserts_parens_for_function_calls); let (snippet, label_suffix) = if self_param.is_none() && params.is_empty() { - (format!("{}()$0", escaped_name), "()") + (format!("{escaped_name}()$0"), "()") } else { builder.trigger_call_info(); let snippet = if let Some(CallableSnippets::FillArguments) = ctx.config.callable { @@ -174,7 +174,7 @@ pub(super) fn add_call_parens<'b>( let smol_str = n.to_smol_str(); let text = smol_str.as_str().trim_start_matches('_'); let ref_ = ref_of_param(ctx, text, param.ty()); - f(&format_args!("${{{}:{}{}}}", index + offset, ref_, text)) + f(&format_args!("${{{}:{ref_}{text}}}", index + offset)) } None => { let name = match param.ty().as_adt() { @@ -185,7 +185,7 @@ pub(super) fn add_call_parens<'b>( .map(|s| to_lower_snake_case(s.as_str())) .unwrap_or_else(|| "_".to_string()), }; - f(&format_args!("${{{}:{}}}", index + offset, name)) + f(&format_args!("${{{}:{name}}}", index + offset)) } } }); @@ -200,12 +200,12 @@ pub(super) fn add_call_parens<'b>( ) } None => { - format!("{}({})$0", escaped_name, function_params_snippet) + format!("{escaped_name}({function_params_snippet})$0") } } } else { cov_mark::hit!(suppress_arg_snippets); - format!("{}($0)", escaped_name) + format!("{escaped_name}($0)") }; (snippet, "(…)") diff --git a/crates/ide-completion/src/render/macro_.rs b/crates/ide-completion/src/render/macro_.rs index eabd0bd17d65..ffcad1185aa4 100644 --- a/crates/ide-completion/src/render/macro_.rs +++ b/crates/ide-completion/src/render/macro_.rs @@ -66,7 +66,7 @@ fn render( match ctx.snippet_cap() { Some(cap) if needs_bang && !has_call_parens => { - let snippet = format!("{}!{}$0{}", escaped_name, bra, ket); + let snippet = format!("{escaped_name}!{bra}$0{ket}"); let lookup = banged_name(&name); item.insert_snippet(cap, snippet).lookup_by(lookup); } diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs index d69906a70657..5995da68a165 100644 --- a/crates/ide-completion/src/render/variant.rs +++ b/crates/ide-completion/src/render/variant.rs @@ -35,8 +35,8 @@ pub(crate) fn render_record_lit( }); RenderedLiteral { - literal: format!("{} {{ {} }}", path, completions), - detail: format!("{} {{ {} }}", path, types), + literal: format!("{path} {{ {completions} }}"), + detail: format!("{path} {{ {types} }}"), } } @@ -49,7 +49,7 @@ pub(crate) fn render_tuple_lit( path: &str, ) -> RenderedLiteral { if snippet_cap.is_none() { - return RenderedLiteral { literal: format!("{}", path), detail: format!("{}", path) }; + return RenderedLiteral { literal: format!("{path}"), detail: format!("{path}") }; } let completions = fields.iter().enumerate().format_with(", ", |(idx, _), f| { if snippet_cap.is_some() { @@ -62,8 +62,8 @@ pub(crate) fn render_tuple_lit( let types = fields.iter().format_with(", ", |field, f| f(&field.ty(db).display(db))); RenderedLiteral { - literal: format!("{}({})", path, completions), - detail: format!("{}({})", path, types), + literal: format!("{path}({completions})"), + detail: format!("{path}({types})"), } } diff --git a/crates/ide-completion/src/snippet.rs b/crates/ide-completion/src/snippet.rs index f3b8eae4fe8c..343719c53694 100644 --- a/crates/ide-completion/src/snippet.rs +++ b/crates/ide-completion/src/snippet.rs @@ -199,7 +199,7 @@ fn validate_snippet( ) -> Option<(Box<[GreenNode]>, String, Option>)> { let mut imports = Vec::with_capacity(requires.len()); for path in requires.iter() { - let use_path = ast::SourceFile::parse(&format!("use {};", path)) + let use_path = ast::SourceFile::parse(&format!("use {path};")) .syntax_node() .descendants() .find_map(ast::Path::cast)?; diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs index 5e9011f9e8aa..d206377e177a 100644 --- a/crates/ide-completion/src/tests.rs +++ b/crates/ide-completion/src/tests.rs @@ -153,7 +153,7 @@ fn render_completion_list(completions: Vec) -> String { .into_iter() .map(|it| { let tag = it.kind().tag(); - let var_name = format!("{} {}", tag, it.label()); + let var_name = format!("{tag} {}", it.label()); let mut buf = var_name; if let Some(detail) = it.detail() { let width = label_width.saturating_sub(monospace_width(it.label())); @@ -188,7 +188,7 @@ pub(crate) fn check_edit_with_config( .iter() .filter(|it| it.lookup() == what) .collect_tuple() - .unwrap_or_else(|| panic!("can't find {:?} completion in {:#?}", what, completions)); + .unwrap_or_else(|| panic!("can't find {what:?} completion in {completions:#?}")); let mut actual = db.file_text(position.file_id).to_string(); let mut combined_edit = completion.text_edit().to_owned(); diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs index 8e26d889f9b6..043f552bd8a4 100644 --- a/crates/ide-completion/src/tests/expression.rs +++ b/crates/ide-completion/src/tests/expression.rs @@ -4,7 +4,7 @@ use expect_test::{expect, Expect}; use crate::tests::{check_edit, completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-completion/src/tests/item.rs b/crates/ide-completion/src/tests/item.rs index 409413c1dcdb..3ef2a7c942bc 100644 --- a/crates/ide-completion/src/tests/item.rs +++ b/crates/ide-completion/src/tests/item.rs @@ -7,7 +7,7 @@ use expect_test::{expect, Expect}; use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-completion/src/tests/item_list.rs b/crates/ide-completion/src/tests/item_list.rs index 2b10294cc5b9..b62b988885d0 100644 --- a/crates/ide-completion/src/tests/item_list.rs +++ b/crates/ide-completion/src/tests/item_list.rs @@ -4,7 +4,7 @@ use expect_test::{expect, Expect}; use crate::tests::{check_edit, completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs index db8bef66405e..ad9254e7f2ec 100644 --- a/crates/ide-completion/src/tests/pattern.rs +++ b/crates/ide-completion/src/tests/pattern.rs @@ -9,7 +9,7 @@ fn check_empty(ra_fixture: &str, expect: Expect) { } fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}\n{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}\n{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-completion/src/tests/predicate.rs b/crates/ide-completion/src/tests/predicate.rs index a8676e2f2478..2656a4d545e6 100644 --- a/crates/ide-completion/src/tests/predicate.rs +++ b/crates/ide-completion/src/tests/predicate.rs @@ -4,7 +4,7 @@ use expect_test::{expect, Expect}; use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}\n{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}\n{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-completion/src/tests/type_pos.rs b/crates/ide-completion/src/tests/type_pos.rs index f0b7726c51d9..c3f4fb4d1817 100644 --- a/crates/ide-completion/src/tests/type_pos.rs +++ b/crates/ide-completion/src/tests/type_pos.rs @@ -4,7 +4,7 @@ use expect_test::{expect, Expect}; use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; fn check(ra_fixture: &str, expect: Expect) { - let actual = completion_list(&format!("{}\n{}", BASE_ITEMS_FIXTURE, ra_fixture)); + let actual = completion_list(&format!("{BASE_ITEMS_FIXTURE}\n{ra_fixture}")); expect.assert_eq(&actual) } diff --git a/crates/ide-db/src/assists.rs b/crates/ide-db/src/assists.rs index da23763dc292..8c6c1c44aa70 100644 --- a/crates/ide-db/src/assists.rs +++ b/crates/ide-db/src/assists.rs @@ -88,7 +88,7 @@ impl FromStr for AssistKind { "RefactorExtract" => Ok(AssistKind::RefactorExtract), "RefactorInline" => Ok(AssistKind::RefactorInline), "RefactorRewrite" => Ok(AssistKind::RefactorRewrite), - unknown => Err(format!("Unknown AssistKind: '{}'", unknown)), + unknown => Err(format!("Unknown AssistKind: '{unknown}'")), } } } diff --git a/crates/ide-db/src/imports/import_assets.rs b/crates/ide-db/src/imports/import_assets.rs index 40a6a3e8970f..994d48385a0f 100644 --- a/crates/ide-db/src/imports/import_assets.rs +++ b/crates/ide-db/src/imports/import_assets.rs @@ -367,7 +367,7 @@ fn import_for_item( let expected_import_end = if item_as_assoc(db, original_item).is_some() { unresolved_qualifier.to_string() } else { - format!("{}::{}", unresolved_qualifier, item_name(db, original_item)?) + format!("{unresolved_qualifier}::{}", item_name(db, original_item)?) }; if !import_path_string.contains(unresolved_first_segment) || !import_path_string.ends_with(&expected_import_end) diff --git a/crates/ide-db/src/imports/insert_use/tests.rs b/crates/ide-db/src/imports/insert_use/tests.rs index 59673af3204e..b92e367f7e12 100644 --- a/crates/ide-db/src/imports/insert_use/tests.rs +++ b/crates/ide-db/src/imports/insert_use/tests.rs @@ -1014,7 +1014,7 @@ fn check_with_config( .and_then(|it| ImportScope::find_insert_use_container(&it, sema)) .or_else(|| ImportScope::from(syntax)) .unwrap(); - let path = ast::SourceFile::parse(&format!("use {};", path)) + let path = ast::SourceFile::parse(&format!("use {path};")) .tree() .syntax() .descendants() diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index 49b81265ea5b..cd4a7e1554cd 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -197,7 +197,7 @@ fn rename_mod( // Module exists in a named file if !is_mod_rs { - let path = format!("{}.rs", new_name); + let path = format!("{new_name}.rs"); let dst = AnchoredPathBuf { anchor, path }; source_change.push_file_system_edit(FileSystemEdit::MoveFile { src: anchor, dst }) } @@ -207,9 +207,7 @@ fn rename_mod( // - Module has submodules defined in separate files let dir_paths = match (is_mod_rs, has_detached_child, module.name(sema.db)) { // Go up one level since the anchor is inside the dir we're trying to rename - (true, _, Some(mod_name)) => { - Some((format!("../{}", mod_name), format!("../{}", new_name))) - } + (true, _, Some(mod_name)) => Some((format!("../{mod_name}"), format!("../{new_name}"))), // The anchor is on the same level as target dir (false, true, Some(mod_name)) => Some((mod_name.to_string(), new_name.to_string())), _ => None, @@ -356,7 +354,7 @@ fn source_edit_from_name(edit: &mut TextEditBuilder, name: &ast::Name, new_name: // FIXME: instead of splitting the shorthand, recursively trigger a rename of the // other name https://github.com/rust-lang/rust-analyzer/issues/6547 - edit.insert(ident_pat.syntax().text_range().start(), format!("{}: ", new_name)); + edit.insert(ident_pat.syntax().text_range().start(), format!("{new_name}: ")); return true; } } @@ -414,7 +412,7 @@ fn source_edit_from_name_ref( // Foo { field } -> Foo { new_name: field } // ^ insert `new_name: ` let offset = name_ref.syntax().text_range().start(); - edit.insert(offset, format!("{}: ", new_name)); + edit.insert(offset, format!("{new_name}: ")); return true; } (None, Some(_)) if matches!(def, Definition::Local(_)) => { @@ -422,7 +420,7 @@ fn source_edit_from_name_ref( // Foo { field } -> Foo { field: new_name } // ^ insert `: new_name` let offset = name_ref.syntax().text_range().end(); - edit.insert(offset, format!(": {}", new_name)); + edit.insert(offset, format!(": {new_name}")); return true; } _ => (), diff --git a/crates/ide-db/src/symbol_index.rs b/crates/ide-db/src/symbol_index.rs index bfb003127710..c054cc159796 100644 --- a/crates/ide-db/src/symbol_index.rs +++ b/crates/ide-db/src/symbol_index.rs @@ -206,7 +206,7 @@ pub fn world_symbols(db: &RootDatabase, query: Query) -> Vec { } pub fn crate_symbols(db: &RootDatabase, krate: Crate, query: Query) -> Vec { - let _p = profile::span("crate_symbols").detail(|| format!("{:?}", query)); + let _p = profile::span("crate_symbols").detail(|| format!("{query:?}")); let modules = krate.modules(db); let indices: Vec<_> = modules diff --git a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs index 313346ee1315..f5f03d70b013 100644 --- a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs +++ b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs @@ -205,7 +205,7 @@ mod tests { fn check(input: &str, expect: &Expect) { let (output, exprs) = parse_format_exprs(input).unwrap_or(("-".to_string(), vec![])); let outcome_repr = if !exprs.is_empty() { - format!("{}; {}", output, with_placeholders(exprs).join(", ")) + format!("{output}; {}", with_placeholders(exprs).join(", ")) } else { output }; diff --git a/crates/ide-db/src/tests/sourcegen_lints.rs b/crates/ide-db/src/tests/sourcegen_lints.rs index 5042f6d815a1..c7d5f3613d4b 100644 --- a/crates/ide-db/src/tests/sourcegen_lints.rs +++ b/crates/ide-db/src/tests/sourcegen_lints.rs @@ -241,9 +241,9 @@ fn generate_descriptor_clippy(buf: &mut String, path: &Path) { buf.push_str(r#"pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &["#); for (id, children) in clippy_groups { - let children = children.iter().map(|id| format!("clippy::{}", id)).collect::>(); + let children = children.iter().map(|id| format!("clippy::{id}")).collect::>(); if !children.is_empty() { - let lint_ident = format!("clippy::{}", id); + let lint_ident = format!("clippy::{id}"); let description = format!("lint group for: {}", children.iter().join(", ")); push_lint_group(buf, &lint_ident, &description, &children); } @@ -273,7 +273,7 @@ fn push_lint_group(buf: &mut String, label: &str, description: &str, children: & push_lint_completion(buf, label, description); - let children = format!("&[{}]", children.iter().map(|it| format!("\"{}\"", it)).join(", ")); + let children = format!("&[{}]", children.iter().map(|it| format!("\"{it}\"")).join(", ")); format_to!( buf, r###" diff --git a/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs b/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs index 5f8b3e543b94..c5db8c3741b8 100644 --- a/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs +++ b/crates/ide-diagnostics/src/handlers/mismatched_arg_count.rs @@ -13,7 +13,7 @@ pub(crate) fn mismatched_arg_count( d: &hir::MismatchedArgCount, ) -> Diagnostic { let s = if d.expected == 1 { "" } else { "s" }; - let message = format!("expected {} argument{}, found {}", d.expected, s, d.found); + let message = format!("expected {} argument{s}, found {}", d.expected, d.found); Diagnostic::new("mismatched-arg-count", message, invalid_args_range(ctx, d)) } diff --git a/crates/ide-diagnostics/src/handlers/no_such_field.rs b/crates/ide-diagnostics/src/handlers/no_such_field.rs index d8f2a9de9818..8673524c109d 100644 --- a/crates/ide-diagnostics/src/handlers/no_such_field.rs +++ b/crates/ide-diagnostics/src/handlers/no_such_field.rs @@ -78,13 +78,13 @@ fn missing_record_expr_field_fixes( let mut new_field = new_field.to_string(); if usage_file_id != def_file_id { - new_field = format!("pub(crate) {}", new_field); + new_field = format!("pub(crate) {new_field}"); } - new_field = format!("\n{}{}", indent, new_field); + new_field = format!("\n{indent}{new_field}"); let needs_comma = !last_field_syntax.to_string().ends_with(','); if needs_comma { - new_field = format!(",{}", new_field); + new_field = format!(",{new_field}"); } let source_change = SourceChange::from_text_edit( diff --git a/crates/ide-diagnostics/src/handlers/type_mismatch.rs b/crates/ide-diagnostics/src/handlers/type_mismatch.rs index 62c69f90baa4..2adae165e4d2 100644 --- a/crates/ide-diagnostics/src/handlers/type_mismatch.rs +++ b/crates/ide-diagnostics/src/handlers/type_mismatch.rs @@ -106,11 +106,11 @@ fn add_missing_ok_or_some( } let mut builder = TextEdit::builder(); - builder.insert(expr.syntax().text_range().start(), format!("{}(", variant_name)); + builder.insert(expr.syntax().text_range().start(), format!("{variant_name}(")); builder.insert(expr.syntax().text_range().end(), ")".to_string()); let source_change = SourceChange::from_text_edit(d.expr.file_id.original_file(ctx.sema.db), builder.finish()); - let name = format!("Wrap in {}", variant_name); + let name = format!("Wrap in {variant_name}"); acc.push(fix("wrap_in_constructor", &name, source_change, expr_range)); Some(()) } diff --git a/crates/ide-diagnostics/src/handlers/unlinked_file.rs b/crates/ide-diagnostics/src/handlers/unlinked_file.rs index c626932f196b..be70f0ac4f79 100644 --- a/crates/ide-diagnostics/src/handlers/unlinked_file.rs +++ b/crates/ide-diagnostics/src/handlers/unlinked_file.rs @@ -64,7 +64,7 @@ fn fixes(ctx: &DiagnosticsContext<'_>, file_id: FileId) -> Option> { // `submod/bla.rs` -> `submod.rs` let parent_mod = (|| { let (name, _) = parent.name_and_extension()?; - parent.parent()?.join(&format!("{}.rs", name)) + parent.parent()?.join(&format!("{name}.rs")) })(); paths.extend(parent_mod); paths @@ -99,8 +99,8 @@ fn make_fixes( matches!(item, ast::Item::Module(m) if m.item_list().is_none()) } - let mod_decl = format!("mod {};", new_mod_name); - let pub_mod_decl = format!("pub mod {};", new_mod_name); + let mod_decl = format!("mod {new_mod_name};"); + let pub_mod_decl = format!("pub mod {new_mod_name};"); let ast: ast::SourceFile = db.parse(parent_file_id).tree(); @@ -125,8 +125,8 @@ fn make_fixes( Some(last) => { cov_mark::hit!(unlinked_file_append_to_existing_mods); let offset = last.syntax().text_range().end(); - mod_decl_builder.insert(offset, format!("\n{}", mod_decl)); - pub_mod_decl_builder.insert(offset, format!("\n{}", pub_mod_decl)); + mod_decl_builder.insert(offset, format!("\n{mod_decl}")); + pub_mod_decl_builder.insert(offset, format!("\n{pub_mod_decl}")); } None => { // Prepend before the first item in the file. @@ -134,15 +134,15 @@ fn make_fixes( Some(item) => { cov_mark::hit!(unlinked_file_prepend_before_first_item); let offset = item.syntax().text_range().start(); - mod_decl_builder.insert(offset, format!("{}\n\n", mod_decl)); - pub_mod_decl_builder.insert(offset, format!("{}\n\n", pub_mod_decl)); + mod_decl_builder.insert(offset, format!("{mod_decl}\n\n")); + pub_mod_decl_builder.insert(offset, format!("{pub_mod_decl}\n\n")); } None => { // No items in the file, so just append at the end. cov_mark::hit!(unlinked_file_empty_file); let offset = ast.syntax().text_range().end(); - mod_decl_builder.insert(offset, format!("{}\n", mod_decl)); - pub_mod_decl_builder.insert(offset, format!("{}\n", pub_mod_decl)); + mod_decl_builder.insert(offset, format!("{mod_decl}\n")); + pub_mod_decl_builder.insert(offset, format!("{pub_mod_decl}\n")); } } } @@ -152,13 +152,13 @@ fn make_fixes( Some(vec![ fix( "add_mod_declaration", - &format!("Insert `{}`", mod_decl), + &format!("Insert `{mod_decl}`"), SourceChange::from_text_edit(parent_file_id, mod_decl_builder.finish()), trigger_range, ), fix( "add_pub_mod_declaration", - &format!("Insert `{}`", pub_mod_decl), + &format!("Insert `{pub_mod_decl}`"), SourceChange::from_text_edit(parent_file_id, pub_mod_decl_builder.finish()), trigger_range, ), diff --git a/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs b/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs index 87531f4acfb7..1a5efff2c0c6 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_macro_call.rs @@ -13,7 +13,7 @@ pub(crate) fn unresolved_macro_call( let bang = if d.is_bang { "!" } else { "" }; Diagnostic::new( "unresolved-macro-call", - format!("unresolved macro `{}{}`", d.path, bang), + format!("unresolved macro `{}{bang}`", d.path), display_range, ) .experimental() diff --git a/crates/ide-diagnostics/src/handlers/unresolved_module.rs b/crates/ide-diagnostics/src/handlers/unresolved_module.rs index b8f2a9e94a40..91395f1d841a 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_module.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_module.rs @@ -16,7 +16,7 @@ pub(crate) fn unresolved_module( "unresolved-module", match &*d.candidates { [] => "unresolved module".to_string(), - [candidate] => format!("unresolved module, can't find module file: {}", candidate), + [candidate] => format!("unresolved module, can't find module file: {candidate}"), [candidates @ .., last] => { format!( "unresolved module, can't find module file: {}, or {}", diff --git a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs index 23818d883f73..b2ed19104e27 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs @@ -26,7 +26,7 @@ pub(crate) fn unresolved_proc_macro( }; let message = match &d.macro_name { - Some(name) => format!("proc macro `{}` not expanded", name), + Some(name) => format!("proc macro `{name}` not expanded"), None => "proc macro not expanded".to_string(), }; let severity = if config_enabled { Severity::Error } else { Severity::WeakWarning }; diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs index d81e36a1f863..b244666d1c0e 100644 --- a/crates/ide-diagnostics/src/lib.rs +++ b/crates/ide-diagnostics/src/lib.rs @@ -218,7 +218,7 @@ pub fn diagnostics( // [#34344] Only take first 128 errors to prevent slowing down editor/ide, the number 128 is chosen arbitrarily. res.extend( parse.errors().iter().take(128).map(|err| { - Diagnostic::new("syntax-error", format!("Syntax Error: {}", err), err.range()) + Diagnostic::new("syntax-error", format!("Syntax Error: {err}"), err.range()) }), ); diff --git a/crates/ide-diagnostics/src/tests.rs b/crates/ide-diagnostics/src/tests.rs index 82967883176f..afa641c733eb 100644 --- a/crates/ide-diagnostics/src/tests.rs +++ b/crates/ide-diagnostics/src/tests.rs @@ -75,7 +75,7 @@ pub(crate) fn check_no_fix(ra_fixture: &str) { ) .pop() .unwrap(); - assert!(diagnostic.fixes.is_none(), "got a fix when none was expected: {:?}", diagnostic); + assert!(diagnostic.fixes.is_none(), "got a fix when none was expected: {diagnostic:?}"); } pub(crate) fn check_expect(ra_fixture: &str, expect: Expect) { diff --git a/crates/ide-diagnostics/src/tests/sourcegen.rs b/crates/ide-diagnostics/src/tests/sourcegen.rs index ec6558a46efb..71d27e6d217d 100644 --- a/crates/ide-diagnostics/src/tests/sourcegen.rs +++ b/crates/ide-diagnostics/src/tests/sourcegen.rs @@ -39,7 +39,7 @@ impl Diagnostic { for block in comment_blocks { let id = block.id; if let Err(msg) = is_valid_diagnostic_name(&id) { - panic!("invalid diagnostic name: {:?}:\n {}", id, msg) + panic!("invalid diagnostic name: {id:?}:\n {msg}") } let doc = block.contents.join("\n"); let location = sourcegen::Location { file: path.clone(), line: block.line }; diff --git a/crates/ide-ssr/src/parsing.rs b/crates/ide-ssr/src/parsing.rs index f6220b928a4c..d78d009681a6 100644 --- a/crates/ide-ssr/src/parsing.rs +++ b/crates/ide-ssr/src/parsing.rs @@ -352,7 +352,7 @@ impl NodeKind { impl Placeholder { fn new(name: SmolStr, constraints: Vec) -> Self { Self { - stand_in_name: format!("__placeholder_{}", name), + stand_in_name: format!("__placeholder_{name}"), constraints, ident: Var(name.to_string()), } diff --git a/crates/ide-ssr/src/tests.rs b/crates/ide-ssr/src/tests.rs index 1ecb7aa9aa70..61698fca80fe 100644 --- a/crates/ide-ssr/src/tests.rs +++ b/crates/ide-ssr/src/tests.rs @@ -121,7 +121,7 @@ fn print_match_debug_info(match_finder: &MatchFinder<'_>, file_id: FileId, snipp snippet ); for (index, d) in debug_info.iter().enumerate() { - println!("Node #{}\n{:#?}\n", index, d); + println!("Node #{index}\n{d:#?}\n"); } } @@ -144,7 +144,7 @@ fn assert_no_match(pattern: &str, code: &str) { let matches = match_finder.matches().flattened().matches; if !matches.is_empty() { print_match_debug_info(&match_finder, position.file_id, &matches[0].matched_text()); - panic!("Got {} matches when we expected none: {:#?}", matches.len(), matches); + panic!("Got {} matches when we expected none: {matches:#?}", matches.len()); } } diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index d96827326cfd..8569701346d4 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -453,7 +453,7 @@ fn get_doc_base_url(db: &RootDatabase, def: Definition) -> Option { })? } }; - Url::parse(&base).ok()?.join(&format!("{}/", display_name)).ok() + Url::parse(&base).ok()?.join(&format!("{display_name}/")).ok() } /// Get the filename and extension generated for a symbol by rustdoc. @@ -488,7 +488,7 @@ fn filename_and_frag_for_def( Some(kw) => { format!("keyword.{}.html", kw.trim_matches('"')) } - None => format!("{}/index.html", name), + None => format!("{name}/index.html"), }, None => String::from("index.html"), }, diff --git a/crates/ide/src/doc_links/intra_doc_links.rs b/crates/ide/src/doc_links/intra_doc_links.rs index 1df9aaae281e..13088bdc3b30 100644 --- a/crates/ide/src/doc_links/intra_doc_links.rs +++ b/crates/ide/src/doc_links/intra_doc_links.rs @@ -63,8 +63,8 @@ mod tests { fn check(link: &str, expected: Expect) { let (l, a) = parse_intra_doc_link(link); - let a = a.map_or_else(String::new, |a| format!(" ({:?})", a)); - expected.assert_eq(&format!("{}{}", l, a)); + let a = a.map_or_else(String::new, |a| format!(" ({a:?})")); + expected.assert_eq(&format!("{l}{a}")); } #[test] diff --git a/crates/ide/src/doc_links/tests.rs b/crates/ide/src/doc_links/tests.rs index c6bfb6b9d097..104181a33e68 100644 --- a/crates/ide/src/doc_links/tests.rs +++ b/crates/ide/src/doc_links/tests.rs @@ -40,7 +40,7 @@ fn check_doc_links(ra_fixture: &str) { .into_iter() .map(|(_, link, ns)| { let def = resolve_doc_path_for_def(sema.db, cursor_def, &link, ns) - .unwrap_or_else(|| panic!("Failed to resolve {}", link)); + .unwrap_or_else(|| panic!("Failed to resolve {link}")); let nav_target = def.try_to_nav(sema.db).unwrap(); let range = FileRange { file_id: nav_target.file_id, range: nav_target.focus_or_full_range() }; diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index 43f7a529bc29..73fd518a9ef0 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -187,7 +187,7 @@ mod tests { let (analysis, position) = fixture::position(ra_fixture); let navs = analysis.goto_definition(position).unwrap().expect("no definition found").info; - assert!(navs.is_empty(), "didn't expect this to resolve anywhere: {:?}", navs) + assert!(navs.is_empty(), "didn't expect this to resolve anywhere: {navs:?}") } #[test] diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 9cbfed4763b0..bfb19a40bdec 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -163,7 +163,7 @@ pub(crate) fn hover( .filter_map(|(def, node)| hover_for_definition(sema, file_id, def, &node, config)) .reduce(|mut acc: HoverResult, HoverResult { markup, actions }| { acc.actions.extend(actions); - acc.markup = Markup::from(format!("{}\n---\n{}", acc.markup, markup)); + acc.markup = Markup::from(format!("{}\n---\n{markup}", acc.markup)); acc }) }) diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index ef434e51c106..4015a411c588 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -417,8 +417,8 @@ pub(super) fn definition( Definition::Variant(it) => label_value_and_docs(db, it, |&it| { if !it.parent_enum(db).is_data_carrying(db) { match it.eval(db) { - Ok(x) => Some(format!("{}", x)), - Err(_) => it.value(db).map(|x| format!("{:?}", x)), + Ok(x) => Some(format!("{x}")), + Err(_) => it.value(db).map(|x| format!("{x:?}")), } } else { None @@ -427,7 +427,7 @@ pub(super) fn definition( Definition::Const(it) => label_value_and_docs(db, it, |it| { let body = it.eval(db); match body { - Ok(x) => Some(format!("{}", x)), + Ok(x) => Some(format!("{x}")), Err(_) => { let source = it.source(db)?; let mut body = source.value.body()?.syntax().clone(); @@ -483,7 +483,7 @@ pub(super) fn definition( fn render_builtin_attr(db: &RootDatabase, attr: hir::BuiltinAttr) -> Option { let name = attr.name(db); - let desc = format!("#[{}]", name); + let desc = format!("#[{name}]"); let AttributeTemplate { word, list, name_value_str } = match attr.template(db) { Some(template) => template, @@ -522,7 +522,7 @@ where V: Display, { let label = if let Some(value) = value_extractor(&def) { - format!("{} // {}", def.display(db), value) + format!("{} // {value}", def.display(db)) } else { def.display(db).to_string() }; @@ -541,7 +541,7 @@ where V: Display, { let label = if let Some(value) = value_extractor(&def) { - format!("{} = {}", def.display(db), value) + format!("{} = {value}", def.display(db)) } else { def.display(db).to_string() }; @@ -605,9 +605,9 @@ fn local(db: &RootDatabase, it: hir::Local) -> Option { } else { "" }; - format!("{}{}{}: {}", let_kw, is_mut, name, ty) + format!("{let_kw}{is_mut}{name}: {ty}") } - Either::Right(_) => format!("{}self: {}", is_mut, ty), + Either::Right(_) => format!("{is_mut}self: {ty}"), }; markup(None, desc, None) } diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 3580c4570263..c7f241f2fea6 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -37,7 +37,7 @@ fn check(ra_fixture: &str, expect: Expect) { let content = analysis.db.file_text(position.file_id); let hovered_element = &content[hover.range]; - let actual = format!("*{}*\n{}\n", hovered_element, hover.info.markup); + let actual = format!("*{hovered_element}*\n{}\n", hover.info.markup); expect.assert_eq(&actual) } @@ -58,7 +58,7 @@ fn check_hover_no_links(ra_fixture: &str, expect: Expect) { let content = analysis.db.file_text(position.file_id); let hovered_element = &content[hover.range]; - let actual = format!("*{}*\n{}\n", hovered_element, hover.info.markup); + let actual = format!("*{hovered_element}*\n{}\n", hover.info.markup); expect.assert_eq(&actual) } @@ -79,7 +79,7 @@ fn check_hover_no_markdown(ra_fixture: &str, expect: Expect) { let content = analysis.db.file_text(position.file_id); let hovered_element = &content[hover.range]; - let actual = format!("*{}*\n{}\n", hovered_element, hover.info.markup); + let actual = format!("*{hovered_element}*\n{}\n", hover.info.markup); expect.assert_eq(&actual) } diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 6b3c15fba7fe..9fabc6bc4f95 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -468,7 +468,7 @@ mod tests { .collect::>(); expected.sort_by_key(|(range, _)| range.start()); - assert_eq!(expected, actual, "\nExpected:\n{:#?}\n\nActual:\n{:#?}", expected, actual); + assert_eq!(expected, actual, "\nExpected:\n{expected:#?}\n\nActual:\n{actual:#?}"); } #[track_caller] diff --git a/crates/ide/src/inlay_hints/bind_pat.rs b/crates/ide/src/inlay_hints/bind_pat.rs index 4e63740098b7..7127c433c63d 100644 --- a/crates/ide/src/inlay_hints/bind_pat.rs +++ b/crates/ide/src/inlay_hints/bind_pat.rs @@ -160,7 +160,7 @@ fn is_named_constructor( let ctor_name = match qual_seg.kind()? { ast::PathSegmentKind::Name(name_ref) => { match qual_seg.generic_arg_list().map(|it| it.generic_args()) { - Some(generics) => format!("{}<{}>", name_ref, generics.format(", ")), + Some(generics) => format!("{name_ref}<{}>", generics.format(", ")), None => name_ref.to_string(), } } @@ -473,7 +473,7 @@ fn main() { .unwrap(); let actual = inlay_hints.into_iter().map(|it| (it.range, it.label.to_string())).collect::>(); - assert_eq!(expected, actual, "\nExpected:\n{:#?}\n\nActual:\n{:#?}", expected, actual); + assert_eq!(expected, actual, "\nExpected:\n{expected:#?}\n\nActual:\n{actual:#?}"); } #[test] diff --git a/crates/ide/src/markup.rs b/crates/ide/src/markup.rs index 60c193c40aba..de9fef61a78e 100644 --- a/crates/ide/src/markup.rs +++ b/crates/ide/src/markup.rs @@ -33,6 +33,6 @@ impl Markup { self.text.as_str() } pub fn fenced_block(contents: &impl fmt::Display) -> Markup { - format!("```rust\n{}\n```", contents).into() + format!("```rust\n{contents}\n```").into() } } diff --git a/crates/ide/src/moniker.rs b/crates/ide/src/moniker.rs index fcbf6d8e58c4..af5e96d2381a 100644 --- a/crates/ide/src/moniker.rs +++ b/crates/ide/src/moniker.rs @@ -273,7 +273,7 @@ mod tests { fn no_moniker(ra_fixture: &str) { let (analysis, position) = fixture::position(ra_fixture); if let Some(x) = analysis.moniker(position).unwrap() { - assert_eq!(x.info.len(), 0, "Moniker founded but no moniker expected: {:?}", x); + assert_eq!(x.info.len(), 0, "Moniker founded but no moniker expected: {x:?}"); } } diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs index 9f049e298ad1..3aa799d43a8a 100644 --- a/crates/ide/src/navigation_target.rs +++ b/crates/ide/src/navigation_target.rs @@ -117,10 +117,10 @@ impl NavigationTarget { self.full_range ); if let Some(focus_range) = self.focus_range { - buf.push_str(&format!(" {:?}", focus_range)) + buf.push_str(&format!(" {focus_range:?}")) } if let Some(container_name) = &self.container_name { - buf.push_str(&format!(" {}", container_name)) + buf.push_str(&format!(" {container_name}")) } buf } diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs index b4df0437050f..595a3b8ac4f1 100644 --- a/crates/ide/src/rename.rs +++ b/crates/ide/src/rename.rs @@ -345,7 +345,7 @@ mod tests { let (analysis, position) = fixture::position(ra_fixture_before); let rename_result = analysis .rename(position, new_name) - .unwrap_or_else(|err| panic!("Rename to '{}' was cancelled: {}", new_name, err)); + .unwrap_or_else(|err| panic!("Rename to '{new_name}' was cancelled: {err}")); match rename_result { Ok(source_change) => { let mut text_edit_builder = TextEdit::builder(); @@ -371,7 +371,7 @@ mod tests { .collect::(); assert_eq!(error_message.trim(), err.to_string()); } else { - panic!("Rename to '{}' failed unexpectedly: {}", new_name, err) + panic!("Rename to '{new_name}' failed unexpectedly: {err}") } } }; @@ -397,11 +397,11 @@ mod tests { let (analysis, position) = fixture::position(ra_fixture); let result = analysis .prepare_rename(position) - .unwrap_or_else(|err| panic!("PrepareRename was cancelled: {}", err)); + .unwrap_or_else(|err| panic!("PrepareRename was cancelled: {err}")); match result { Ok(RangeInfo { range, info: () }) => { let source = analysis.file_text(position.file_id).unwrap(); - expect.assert_eq(&format!("{:?}: {}", range, &source[range])) + expect.assert_eq(&format!("{range:?}: {}", &source[range])) } Err(RenameError(err)) => expect.assert_eq(&err), }; diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs index 0181c6b8e456..5b35262aabe1 100644 --- a/crates/ide/src/runnables.rs +++ b/crates/ide/src/runnables.rs @@ -66,12 +66,12 @@ impl Runnable { // test package::module::testname pub fn label(&self, target: Option) -> String { match &self.kind { - RunnableKind::Test { test_id, .. } => format!("test {}", test_id), - RunnableKind::TestMod { path } => format!("test-mod {}", path), - RunnableKind::Bench { test_id } => format!("bench {}", test_id), - RunnableKind::DocTest { test_id, .. } => format!("doctest {}", test_id), + RunnableKind::Test { test_id, .. } => format!("test {test_id}"), + RunnableKind::TestMod { path } => format!("test-mod {path}"), + RunnableKind::Bench { test_id } => format!("bench {test_id}"), + RunnableKind::DocTest { test_id, .. } => format!("doctest {test_id}"), RunnableKind::Bin => { - target.map_or_else(|| "run binary".to_string(), |t| format!("run {}", t)) + target.map_or_else(|| "run binary".to_string(), |t| format!("run {t}")) } } } @@ -377,7 +377,7 @@ pub(crate) fn runnable_impl( } else { String::new() }; - let mut test_id = format!("{}{}", adt_name, params); + let mut test_id = format!("{adt_name}{params}"); test_id.retain(|c| c != ' '); let test_id = TestId::Path(test_id); diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index a8ffc387080d..b6a58f5ef59b 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -233,13 +233,13 @@ mod tests { for (range, _) in f.tokens { let x = FileRange { file_id: f.file_id, range }; if !range_set.contains(&x) { - panic!("additional range {:?}", x); + panic!("additional range {x:?}"); } range_set.remove(&x); } } if !range_set.is_empty() { - panic!("unfound ranges {:?}", range_set); + panic!("unfound ranges {range_set:?}"); } } @@ -254,13 +254,13 @@ mod tests { continue; } if !range_set.contains(&x) { - panic!("additional definition {:?}", x); + panic!("additional definition {x:?}"); } range_set.remove(&x); } } if !range_set.is_empty() { - panic!("unfound definitions {:?}", range_set); + panic!("unfound definitions {range_set:?}"); } } diff --git a/crates/ide/src/status.rs b/crates/ide/src/status.rs index 20810c25b3e8..7ce782f93be1 100644 --- a/crates/ide/src/status.rs +++ b/crates/ide/src/status.rs @@ -52,8 +52,8 @@ pub(crate) fn status(db: &RootDatabase, file_id: Option) -> String { let crate_graph = db.crate_graph(); for krate in crates { let display_crate = |krate: CrateId| match &crate_graph[krate].display_name { - Some(it) => format!("{}({:?})", it, krate), - None => format!("{:?}", krate), + Some(it) => format!("{it}({krate:?})"), + None => format!("{krate:?}"), }; format_to!(buf, "Crate: {}\n", display_crate(krate)); let deps = crate_graph[krate] diff --git a/crates/ide/src/syntax_highlighting/html.rs b/crates/ide/src/syntax_highlighting/html.rs index e91fd7f12571..2c7823069b3f 100644 --- a/crates/ide/src/syntax_highlighting/html.rs +++ b/crates/ide/src/syntax_highlighting/html.rs @@ -52,7 +52,7 @@ pub(crate) fn highlight_as_html(db: &RootDatabase, file_id: FileId, rainbow: boo let class = r.highlight.to_string().replace('.', " "); let color = match (rainbow, r.binding_hash) { (true, Some(hash)) => { - format!(" data-binding-hash=\"{}\" style=\"color: {};\"", hash, rainbowify(hash)) + format!(" data-binding-hash=\"{hash}\" style=\"color: {};\"", rainbowify(hash)) } _ => "".into(), }; diff --git a/crates/ide/src/syntax_tree.rs b/crates/ide/src/syntax_tree.rs index 4256fea0f81e..bb6827e8a44e 100644 --- a/crates/ide/src/syntax_tree.rs +++ b/crates/ide/src/syntax_tree.rs @@ -32,7 +32,7 @@ pub(crate) fn syntax_tree( } }; - format!("{:#?}", node) + format!("{node:#?}") } else { format!("{:#?}", parse.tree().syntax()) } diff --git a/crates/ide/src/typing.rs b/crates/ide/src/typing.rs index 9118f3c699c0..eba5a485636e 100644 --- a/crates/ide/src/typing.rs +++ b/crates/ide/src/typing.rs @@ -397,7 +397,7 @@ mod tests { fn type_char(char_typed: char, ra_fixture_before: &str, ra_fixture_after: &str) { let actual = do_type_char(char_typed, ra_fixture_before) - .unwrap_or_else(|| panic!("typing `{}` did nothing", char_typed)); + .unwrap_or_else(|| panic!("typing `{char_typed}` did nothing")); assert_eq_text!(ra_fixture_after, &actual); } diff --git a/crates/ide/src/typing/on_enter.rs b/crates/ide/src/typing/on_enter.rs index 48c1713270b6..298482f2ab5c 100644 --- a/crates/ide/src/typing/on_enter.rs +++ b/crates/ide/src/typing/on_enter.rs @@ -108,7 +108,7 @@ fn on_enter_in_comment( } let indent = node_indent(file, comment.syntax())?; - let inserted = format!("\n{}{} $0", indent, prefix); + let inserted = format!("\n{indent}{prefix} $0"); let delete = if remove_trailing_whitespace { let trimmed_len = comment.text().trim_end().len() as u32; let trailing_whitespace_len = comment.text().len() as u32 - trimmed_len; @@ -129,7 +129,7 @@ fn on_enter_in_block(block: ast::BlockExpr, position: FilePosition) -> Option let indent = IndentLevel::from_node(list.syntax()); let mut edit = TextEdit::insert(position.offset, format!("\n{}$0", indent + 1)); - edit.union(TextEdit::insert( - list.r_curly_token()?.text_range().start(), - format!("\n{}", indent), - )) - .ok()?; + edit.union(TextEdit::insert(list.r_curly_token()?.text_range().start(), format!("\n{indent}"))) + .ok()?; Some(edit) } diff --git a/crates/limit/src/lib.rs b/crates/limit/src/lib.rs index d6a706a7cd73..6b2534aa4619 100644 --- a/crates/limit/src/lib.rs +++ b/crates/limit/src/lib.rs @@ -59,7 +59,7 @@ impl Limit { .compare_exchange_weak(old_max, other, Ordering::Relaxed, Ordering::Relaxed) .is_ok() { - eprintln!("new max: {}", other); + eprintln!("new max: {other}"); } } diff --git a/crates/mbe/src/benchmark.rs b/crates/mbe/src/benchmark.rs index 9c92bae6a196..1915c0b6611b 100644 --- a/crates/mbe/src/benchmark.rs +++ b/crates/mbe/src/benchmark.rs @@ -101,7 +101,7 @@ fn invocation_fixtures(rules: &FxHashMap) -> Vec<(Stri } try_cnt += 1; if try_cnt > 100 { - panic!("invocaton fixture {} cannot be generated.\n", name); + panic!("invocaton fixture {name} cannot be generated.\n"); } } } @@ -139,7 +139,7 @@ fn invocation_fixtures(rules: &FxHashMap) -> Vec<(Stri } None => (), - Some(kind) => panic!("Unhandled kind {:?}", kind), + Some(kind) => panic!("Unhandled kind {kind:?}"), }, Op::Leaf(leaf) => parent.token_trees.push(leaf.clone().into()), Op::Repeat { tokens, kind, separator } => { diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index cf53c16726bf..4ca3ba74ae34 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -237,7 +237,7 @@ fn convert_tokens(conv: &mut C) -> tt::Subtree { let char = match token.to_char(conv) { Some(c) => c, None => { - panic!("Token from lexer must be single char: token = {:#?}", token); + panic!("Token from lexer must be single char: token = {token:#?}"); } }; tt::Leaf::from(tt::Punct { char, spacing, id: conv.id_alloc().alloc(range, synth_id) }) diff --git a/crates/mbe/src/syntax_bridge/tests.rs b/crates/mbe/src/syntax_bridge/tests.rs index 4e04d2bc1c77..606c259e5182 100644 --- a/crates/mbe/src/syntax_bridge/tests.rs +++ b/crates/mbe/src/syntax_bridge/tests.rs @@ -19,7 +19,7 @@ fn check_punct_spacing(fixture: &str) { let spacing = match annotation.as_str() { "Alone" => Spacing::Alone, "Joint" => Spacing::Joint, - a => panic!("unknown annotation: {}", a), + a => panic!("unknown annotation: {a}"), }; (token, spacing) }) @@ -39,7 +39,7 @@ fn check_punct_spacing(fixture: &str) { cursor = cursor.bump(); } - assert!(annotations.is_empty(), "unchecked annotations: {:?}", annotations); + assert!(annotations.is_empty(), "unchecked annotations: {annotations:?}"); } #[test] diff --git a/crates/mbe/src/to_parser_input.rs b/crates/mbe/src/to_parser_input.rs index 783c3ca4a89f..7013aa58b55d 100644 --- a/crates/mbe/src/to_parser_input.rs +++ b/crates/mbe/src/to_parser_input.rs @@ -60,7 +60,7 @@ pub(crate) fn to_parser_input(buffer: &TokenBuffer<'_>) -> parser::Input { }, tt::Leaf::Punct(punct) => { let kind = SyntaxKind::from_char(punct.char) - .unwrap_or_else(|| panic!("{:#?} is not a valid punct", punct)); + .unwrap_or_else(|| panic!("{punct:#?} is not a valid punct")); res.push(kind); if punct.spacing == tt::Spacing::Joint { res.was_joint(); diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index b621ebc37c3b..30bd0b3b169e 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -205,7 +205,7 @@ impl<'t> Parser<'t> { if self.eat(kind) { return true; } - self.error(format!("expected {:?}", kind)); + self.error(format!("expected {kind:?}")); false } diff --git a/crates/parser/src/tests.rs b/crates/parser/src/tests.rs index 735c0b3e4020..caf1a3e83cb9 100644 --- a/crates/parser/src/tests.rs +++ b/crates/parser/src/tests.rs @@ -37,8 +37,8 @@ fn lex(text: &str) -> String { let text = lexed.text(i); let error = lexed.error(i); - let error = error.map(|err| format!(" error: {}", err)).unwrap_or_default(); - writeln!(res, "{:?} {:?}{}", kind, text, error).unwrap(); + let error = error.map(|err| format!(" error: {err}")).unwrap_or_default(); + writeln!(res, "{kind:?} {text:?}{error}").unwrap(); } res } @@ -47,7 +47,7 @@ fn lex(text: &str) -> String { fn parse_ok() { for case in TestCase::list("parser/ok") { let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text); - assert!(!errors, "errors in an OK file {}:\n{}", case.rs.display(), actual); + assert!(!errors, "errors in an OK file {}:\n{actual}", case.rs.display()); expect_file![case.rast].assert_eq(&actual); } } @@ -56,7 +56,7 @@ fn parse_ok() { fn parse_inline_ok() { for case in TestCase::list("parser/inline/ok") { let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text); - assert!(!errors, "errors in an OK file {}:\n{}", case.rs.display(), actual); + assert!(!errors, "errors in an OK file {}:\n{actual}", case.rs.display()); expect_file![case.rast].assert_eq(&actual); } } @@ -65,7 +65,7 @@ fn parse_inline_ok() { fn parse_err() { for case in TestCase::list("parser/err") { let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text); - assert!(errors, "no errors in an ERR file {}:\n{}", case.rs.display(), actual); + assert!(errors, "no errors in an ERR file {}:\n{actual}", case.rs.display()); expect_file![case.rast].assert_eq(&actual) } } @@ -74,7 +74,7 @@ fn parse_err() { fn parse_inline_err() { for case in TestCase::list("parser/inline/err") { let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text); - assert!(errors, "no errors in an ERR file {}:\n{}", case.rs.display(), actual); + assert!(errors, "no errors in an ERR file {}:\n{actual}", case.rs.display()); expect_file![case.rast].assert_eq(&actual) } } @@ -93,14 +93,14 @@ fn parse(entry: TopEntryPoint, text: &str) -> (String, bool) { crate::StrStep::Token { kind, text } => { assert!(depth > 0); len += text.len(); - write!(buf, "{}", indent).unwrap(); - write!(buf, "{:?} {:?}\n", kind, text).unwrap(); + write!(buf, "{indent}").unwrap(); + write!(buf, "{kind:?} {text:?}\n").unwrap(); } crate::StrStep::Enter { kind } => { assert!(depth > 0 || len == 0); depth += 1; - write!(buf, "{}", indent).unwrap(); - write!(buf, "{:?}\n", kind).unwrap(); + write!(buf, "{indent}").unwrap(); + write!(buf, "{kind:?}\n").unwrap(); indent.push_str(" "); } crate::StrStep::Exit => { @@ -111,7 +111,7 @@ fn parse(entry: TopEntryPoint, text: &str) -> (String, bool) { } crate::StrStep::Error { msg, pos } => { assert!(depth > 0); - errors.push(format!("error {}: {}\n", pos, msg)) + errors.push(format!("error {pos}: {msg}\n")) } }); assert_eq!( @@ -124,7 +124,7 @@ fn parse(entry: TopEntryPoint, text: &str) -> (String, bool) { for (token, msg) in lexed.errors() { let pos = lexed.text_start(token); - errors.push(format!("error {}: {}\n", pos, msg)); + errors.push(format!("error {pos}: {msg}\n")); } let has_errors = !errors.is_empty(); @@ -149,7 +149,7 @@ impl TestCase { let mut res = Vec::new(); let read_dir = fs::read_dir(&dir) - .unwrap_or_else(|err| panic!("can't `read_dir` {}: {}", dir.display(), err)); + .unwrap_or_else(|err| panic!("can't `read_dir` {}: {err}", dir.display())); for file in read_dir { let file = file.unwrap(); let path = file.path(); diff --git a/crates/parser/src/tests/sourcegen_inline_tests.rs b/crates/parser/src/tests/sourcegen_inline_tests.rs index 7b2b703deb69..54e85c07344b 100644 --- a/crates/parser/src/tests/sourcegen_inline_tests.rs +++ b/crates/parser/src/tests/sourcegen_inline_tests.rs @@ -23,7 +23,7 @@ fn sourcegen_parser_tests() { // ok is never actually read, but it needs to be specified to create a Test in existing_tests let existing = existing_tests(&tests_dir, true); for t in existing.keys().filter(|&t| !tests.contains_key(t)) { - panic!("Test is deleted: {}", t); + panic!("Test is deleted: {t}"); } let mut new_idx = existing.len() + 1; @@ -31,7 +31,7 @@ fn sourcegen_parser_tests() { let path = match existing.get(name) { Some((path, _test)) => path.clone(), None => { - let file_name = format!("{:04}_{}.rs", new_idx, name); + let file_name = format!("{new_idx:04}_{name}.rs"); new_idx += 1; tests_dir.join(file_name) } @@ -116,7 +116,7 @@ fn existing_tests(dir: &Path, ok: bool) -> HashMap { let text = fs::read_to_string(&path).unwrap(); let test = Test { name: name.clone(), text, ok }; if let Some(old) = res.insert(name, (path, test)) { - println!("Duplicate test: {:?}", old); + println!("Duplicate test: {old:?}"); } } res diff --git a/crates/proc-macro-api/src/lib.rs b/crates/proc-macro-api/src/lib.rs index a3ea05f4aff8..7921fda331ee 100644 --- a/crates/proc-macro-api/src/lib.rs +++ b/crates/proc-macro-api/src/lib.rs @@ -60,7 +60,7 @@ impl MacroDylib { let info = version::read_dylib_info(&path)?; if info.version.0 < 1 || info.version.1 < 47 { - let msg = format!("proc-macro {} built by {:#?} is not supported by rust-analyzer, please update your Rust version.", path.display(), info); + let msg = format!("proc-macro {} built by {info:#?} is not supported by rust-analyzer, please update your Rust version.", path.display()); return Err(io::Error::new(io::ErrorKind::InvalidData, msg)); } diff --git a/crates/proc-macro-api/src/msg/flat.rs b/crates/proc-macro-api/src/msg/flat.rs index 268a03bb5359..f50ecccf1e2b 100644 --- a/crates/proc-macro-api/src/msg/flat.rs +++ b/crates/proc-macro-api/src/msg/flat.rs @@ -137,7 +137,7 @@ impl SubtreeRepr { 1 => Some(tt::DelimiterKind::Parenthesis), 2 => Some(tt::DelimiterKind::Brace), 3 => Some(tt::DelimiterKind::Bracket), - other => panic!("bad kind {}", other), + other => panic!("bad kind {other}"), }; SubtreeRepr { id: TokenId(id), kind, tt: [lo, len] } } @@ -164,7 +164,7 @@ impl PunctRepr { let spacing = match spacing { 0 => tt::Spacing::Alone, 1 => tt::Spacing::Joint, - other => panic!("bad spacing {}", other), + other => panic!("bad spacing {other}"), }; PunctRepr { id: TokenId(id), char: char.try_into().unwrap(), spacing } } @@ -312,7 +312,7 @@ impl Reader { }) .into() } - other => panic!("bad tag: {}", other), + other => panic!("bad tag: {other}"), } }) .collect(), diff --git a/crates/proc-macro-api/src/version.rs b/crates/proc-macro-api/src/version.rs index 030531b80d7b..40125c2a512a 100644 --- a/crates/proc-macro-api/src/version.rs +++ b/crates/proc-macro-api/src/version.rs @@ -125,7 +125,7 @@ pub fn read_version(dylib_path: &AbsPath) -> io::Result { _ => { return Err(io::Error::new( io::ErrorKind::InvalidData, - format!("unsupported metadata version {}", version), + format!("unsupported metadata version {version}"), )); } } diff --git a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs index a405497f3c9b..c5145d00e329 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_58/proc_macro/mod.rs @@ -877,7 +877,7 @@ impl Literal { /// example if it is infinity or NaN this function will panic. pub fn f32_unsuffixed(n: f32) -> Literal { if !n.is_finite() { - panic!("Invalid float literal {}", n); + panic!("Invalid float literal {n}"); } let mut repr = n.to_string(); if !repr.contains('.') { @@ -901,7 +901,7 @@ impl Literal { /// example if it is infinity or NaN this function will panic. pub fn f32_suffixed(n: f32) -> Literal { if !n.is_finite() { - panic!("Invalid float literal {}", n); + panic!("Invalid float literal {n}"); } Literal(bridge::client::Literal::f32(&n.to_string())) } @@ -920,7 +920,7 @@ impl Literal { /// example if it is infinity or NaN this function will panic. pub fn f64_unsuffixed(n: f64) -> Literal { if !n.is_finite() { - panic!("Invalid float literal {}", n); + panic!("Invalid float literal {n}"); } let mut repr = n.to_string(); if !repr.contains('.') { @@ -944,7 +944,7 @@ impl Literal { /// example if it is infinity or NaN this function will panic. pub fn f64_suffixed(n: f64) -> Literal { if !n.is_finite() { - panic!("Invalid float literal {}", n); + panic!("Invalid float literal {n}"); } Literal(bridge::client::Literal::f64(&n.to_string())) } diff --git a/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs index c19684850fcb..22d4ad94f770 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_58/ra_server.rs @@ -548,13 +548,13 @@ impl server::Literal for RustAnalyzer { fn f32(&mut self, n: &str) -> Self::Literal { let n: f32 = n.parse().unwrap(); - let text = format!("{}f32", n); + let text = format!("{n}f32"); Literal { text: text.into(), id: tt::TokenId::unspecified() } } fn f64(&mut self, n: &str) -> Self::Literal { let n: f64 = n.parse().unwrap(); - let text = format!("{}f64", n); + let text = format!("{n}f64"); Literal { text: text.into(), id: tt::TokenId::unspecified() } } @@ -563,11 +563,11 @@ impl server::Literal for RustAnalyzer { for ch in string.chars() { escaped.extend(ch.escape_debug()); } - Literal { text: format!("\"{}\"", escaped).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("\"{escaped}\"").into(), id: tt::TokenId::unspecified() } } fn character(&mut self, ch: char) -> Self::Literal { - Literal { text: format!("'{}'", ch).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("'{ch}'").into(), id: tt::TokenId::unspecified() } } fn byte_string(&mut self, bytes: &[u8]) -> Self::Literal { @@ -578,7 +578,7 @@ impl server::Literal for RustAnalyzer { .map(Into::::into) .collect::(); - Literal { text: format!("b\"{}\"", string).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("b\"{string}\"").into(), id: tt::TokenId::unspecified() } } fn span(&mut self, literal: &Self::Literal) -> Self::Span { diff --git a/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs index eb9d7a94b5dc..f82f20c37bc3 100644 --- a/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs +++ b/crates/proc-macro-srv/src/abis/abi_1_63/ra_server.rs @@ -563,13 +563,13 @@ impl server::Literal for RustAnalyzer { fn f32(&mut self, n: &str) -> Self::Literal { let n: f32 = n.parse().unwrap(); - let text = format!("{}f32", n); + let text = format!("{n}f32"); Literal { text: text.into(), id: tt::TokenId::unspecified() } } fn f64(&mut self, n: &str) -> Self::Literal { let n: f64 = n.parse().unwrap(); - let text = format!("{}f64", n); + let text = format!("{n}f64"); Literal { text: text.into(), id: tt::TokenId::unspecified() } } @@ -578,11 +578,11 @@ impl server::Literal for RustAnalyzer { for ch in string.chars() { escaped.extend(ch.escape_debug()); } - Literal { text: format!("\"{}\"", escaped).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("\"{escaped}\"").into(), id: tt::TokenId::unspecified() } } fn character(&mut self, ch: char) -> Self::Literal { - Literal { text: format!("'{}'", ch).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("'{ch}'").into(), id: tt::TokenId::unspecified() } } fn byte_string(&mut self, bytes: &[u8]) -> Self::Literal { @@ -593,7 +593,7 @@ impl server::Literal for RustAnalyzer { .map(Into::::into) .collect::(); - Literal { text: format!("b\"{}\"", string).into(), id: tt::TokenId::unspecified() } + Literal { text: format!("b\"{string}\"").into(), id: tt::TokenId::unspecified() } } fn span(&mut self, literal: &Self::Literal) -> Self::Span { diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs index b4f5ebd157f3..2eb939a7ce58 100644 --- a/crates/proc-macro-srv/src/lib.rs +++ b/crates/proc-macro-srv/src/lib.rs @@ -48,7 +48,7 @@ impl ProcMacroSrv { pub fn expand(&mut self, task: ExpandMacro) -> Result { let expander = self.expander(task.lib.as_ref()).map_err(|err| { debug_assert!(false, "should list macros before asking to expand"); - PanicMessage(format!("failed to load macro: {}", err)) + PanicMessage(format!("failed to load macro: {err}")) })?; let prev_env = EnvSnapshot::new(); @@ -59,7 +59,7 @@ impl ProcMacroSrv { Some(dir) => { let prev_working_dir = std::env::current_dir().ok(); if let Err(err) = std::env::set_current_dir(&dir) { - eprintln!("Failed to set the current working dir to {}. Error: {:?}", dir, err) + eprintln!("Failed to set the current working dir to {dir}. Error: {err:?}") } prev_working_dir } @@ -112,14 +112,16 @@ impl ProcMacroSrv { } fn expander(&mut self, path: &Path) -> Result<&dylib::Expander, String> { - let time = fs::metadata(path).and_then(|it| it.modified()).map_err(|err| { - format!("Failed to get file metadata for {}: {}", path.display(), err) - })?; + let time = fs::metadata(path) + .and_then(|it| it.modified()) + .map_err(|err| format!("Failed to get file metadata for {}: {err}", path.display()))?; Ok(match self.expanders.entry((path.to_path_buf(), time)) { - Entry::Vacant(v) => v.insert(dylib::Expander::new(path).map_err(|err| { - format!("Cannot create expander for {}: {}", path.display(), err) - })?), + Entry::Vacant(v) => { + v.insert(dylib::Expander::new(path).map_err(|err| { + format!("Cannot create expander for {}: {err}", path.display()) + })?) + } Entry::Occupied(e) => e.into_mut(), }) } diff --git a/crates/proc-macro-test/build.rs b/crates/proc-macro-test/build.rs index dd6203e2eeb9..340e9f93ed6c 100644 --- a/crates/proc-macro-test/build.rs +++ b/crates/proc-macro-test/build.rs @@ -71,7 +71,7 @@ fn main() { .arg("--target-dir") .arg(&target_dir); - println!("Running {:?}", cmd); + println!("Running {cmd:?}"); let output = cmd.output().unwrap(); if !output.status.success() { @@ -87,7 +87,7 @@ fn main() { for message in Message::parse_stream(output.stdout.as_slice()) { if let Message::CompilerArtifact(artifact) = message.unwrap() { if artifact.target.kind.contains(&"proc-macro".to_string()) { - let repr = format!("{} {}", name, version); + let repr = format!("{name} {version}"); if artifact.package_id.repr.starts_with(&repr) { artifact_path = Some(PathBuf::from(&artifact.filenames[0])); } diff --git a/crates/profile/src/hprof.rs b/crates/profile/src/hprof.rs index deea0b0dd8f1..ea89a89c5c5c 100644 --- a/crates/profile/src/hprof.rs +++ b/crates/profile/src/hprof.rs @@ -238,7 +238,7 @@ impl ProfileStack { self.heartbeat(frame.heartbeats); let avg_span = duration / (frame.heartbeats + 1); if avg_span > self.filter.heartbeat_longer_than { - eprintln!("Too few heartbeats {} ({}/{:?})?", label, frame.heartbeats, duration); + eprintln!("Too few heartbeats {label} ({}/{duration:?})?", frame.heartbeats); } } @@ -275,7 +275,7 @@ fn print( out: &mut impl Write, ) { let current_indent = " ".repeat(level as usize); - let detail = tree[curr].detail.as_ref().map(|it| format!(" @ {}", it)).unwrap_or_default(); + let detail = tree[curr].detail.as_ref().map(|it| format!(" @ {it}")).unwrap_or_default(); writeln!( out, "{}{} - {}{}", @@ -302,13 +302,13 @@ fn print( } for (child_msg, (duration, count)) in &short_children { - writeln!(out, " {}{} - {} ({} calls)", current_indent, ms(*duration), child_msg, count) + writeln!(out, " {current_indent}{} - {child_msg} ({count} calls)", ms(*duration)) .expect("printing profiling info"); } let unaccounted = tree[curr].duration - accounted_for; if tree.children(curr).next().is_some() && unaccounted > longer_than { - writeln!(out, " {}{} - ???", current_indent, ms(unaccounted)) + writeln!(out, " {current_indent}{} - ???", ms(unaccounted)) .expect("printing profiling info"); } } @@ -320,7 +320,7 @@ impl fmt::Display for ms { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self.0.as_millis() { 0 => f.write_str(" 0 "), - n => write!(f, "{:5}ms", n), + n => write!(f, "{n:5}ms"), } } } diff --git a/crates/profile/src/memory_usage.rs b/crates/profile/src/memory_usage.rs index ee882b4cb4c6..8017f865792b 100644 --- a/crates/profile/src/memory_usage.rs +++ b/crates/profile/src/memory_usage.rs @@ -109,7 +109,7 @@ impl fmt::Display for Bytes { suffix = "mb"; } } - f.pad(&format!("{}{}", value, suffix)) + f.pad(&format!("{value}{suffix}")) } } diff --git a/crates/profile/src/stop_watch.rs b/crates/profile/src/stop_watch.rs index 625832848296..71303d5a6316 100644 --- a/crates/profile/src/stop_watch.rs +++ b/crates/profile/src/stop_watch.rs @@ -33,11 +33,11 @@ impl StopWatch { if *PERF_ENABLED { let mut counter = perf_event::Builder::new() .build() - .map_err(|err| eprintln!("Failed to create perf counter: {}", err)) + .map_err(|err| eprintln!("Failed to create perf counter: {err}")) .ok(); if let Some(counter) = &mut counter { if let Err(err) = counter.enable() { - eprintln!("Failed to start perf counter: {}", err) + eprintln!("Failed to start perf counter: {err}") } } counter @@ -64,7 +64,7 @@ impl StopWatch { #[cfg(target_os = "linux")] let instructions = self.counter.as_mut().and_then(|it| { - it.read().map_err(|err| eprintln!("Failed to read perf counter: {}", err)).ok() + it.read().map_err(|err| eprintln!("Failed to read perf counter: {err}")).ok() }); #[cfg(not(target_os = "linux"))] let instructions = None; @@ -91,10 +91,10 @@ impl fmt::Display for StopWatchSpan { instructions /= 1000; prefix = "g"; } - write!(f, ", {}{}instr", instructions, prefix)?; + write!(f, ", {instructions}{prefix}instr")?; } if let Some(memory) = self.memory { - write!(f, ", {}", memory)?; + write!(f, ", {memory}")?; } Ok(()) } diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index ae2b41f27d58..ae9cba52ded2 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -295,7 +295,7 @@ impl WorkspaceBuildScripts { match message { Message::BuildScriptExecuted(mut message) => { with_output_for(&message.package_id.repr, &mut |name, data| { - progress(format!("running build-script: {}", name)); + progress(format!("running build-script: {name}")); let cfgs = { let mut acc = Vec::new(); for cfg in &message.cfgs { @@ -334,7 +334,7 @@ impl WorkspaceBuildScripts { } Message::CompilerArtifact(message) => { with_output_for(&message.package_id.repr, &mut |name, data| { - progress(format!("building proc-macros: {}", name)); + progress(format!("building proc-macros: {name}")); if message.target.kind.iter().any(|k| k == "proc-macro") { // Skip rmeta file if let Some(filename) = diff --git a/crates/project-model/src/cfg_flag.rs b/crates/project-model/src/cfg_flag.rs index f3dd8f51333b..c134b78ab3a2 100644 --- a/crates/project-model/src/cfg_flag.rs +++ b/crates/project-model/src/cfg_flag.rs @@ -17,7 +17,7 @@ impl FromStr for CfgFlag { let res = match s.split_once('=') { Some((key, value)) => { if !(value.starts_with('"') && value.ends_with('"')) { - return Err(format!("Invalid cfg ({:?}), value should be in quotes", s)); + return Err(format!("Invalid cfg ({s:?}), value should be in quotes")); } let key = key.to_string(); let value = value[1..value.len() - 1].to_string(); diff --git a/crates/project-model/src/lib.rs b/crates/project-model/src/lib.rs index 835f2b3dd031..e2f09bad2ded 100644 --- a/crates/project-model/src/lib.rs +++ b/crates/project-model/src/lib.rs @@ -146,7 +146,7 @@ impl ProjectManifest { } fn utf8_stdout(mut cmd: Command) -> Result { - let output = cmd.output().with_context(|| format!("{:?} failed", cmd))?; + let output = cmd.output().with_context(|| format!("{cmd:?} failed"))?; if !output.status.success() { match String::from_utf8(output.stderr) { Ok(stderr) if !stderr.is_empty() => { diff --git a/crates/project-model/src/project_json.rs b/crates/project-model/src/project_json.rs index 5133a14d532b..9af0eafe9fdd 100644 --- a/crates/project-model/src/project_json.rs +++ b/crates/project-model/src/project_json.rs @@ -197,5 +197,5 @@ where D: de::Deserializer<'de>, { let name = String::deserialize(de)?; - CrateName::new(&name).map_err(|err| de::Error::custom(format!("invalid crate name: {:?}", err))) + CrateName::new(&name).map_err(|err| de::Error::custom(format!("invalid crate name: {err:?}"))) } diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs index f6c09a27c9d7..b62b2026b64b 100644 --- a/crates/project-model/src/sysroot.rs +++ b/crates/project-model/src/sysroot.rs @@ -104,7 +104,7 @@ impl Sysroot { for path in SYSROOT_CRATES.trim().lines() { let name = path.split('/').last().unwrap(); - let root = [format!("{}/src/lib.rs", path), format!("lib{}/lib.rs", path)] + let root = [format!("{path}/src/lib.rs"), format!("lib{path}/lib.rs")] .into_iter() .map(|it| sysroot.src_root.join(it)) .filter_map(|it| ManifestPath::try_from(it).ok()) diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index adb106e97931..2bb9ebf998bd 100644 --- a/crates/project-model/src/tests.rs +++ b/crates/project-model/src/tests.rs @@ -107,7 +107,7 @@ fn to_crate_graph(project_workspace: ProjectWorkspace) -> CrateGraph { } fn check_crate_graph(crate_graph: CrateGraph, expect: Expect) { - let mut crate_graph = format!("{:#?}", crate_graph); + let mut crate_graph = format!("{crate_graph:#?}"); replace_root(&mut crate_graph, false); expect.assert_eq(&crate_graph); } diff --git a/crates/rust-analyzer/src/bin/logger.rs b/crates/rust-analyzer/src/bin/logger.rs index ac10721d9551..8caadecd850b 100644 --- a/crates/rust-analyzer/src/bin/logger.rs +++ b/crates/rust-analyzer/src/bin/logger.rs @@ -81,9 +81,9 @@ impl Logger { Registry::default() .with( self.filter - .add_directive(format!("chalk_solve={}", val).parse()?) - .add_directive(format!("chalk_ir={}", val).parse()?) - .add_directive(format!("chalk_recursive={}", val).parse()?), + .add_directive(format!("chalk_solve={val}").parse()?) + .add_directive(format!("chalk_ir={val}").parse()?) + .add_directive(format!("chalk_recursive={val}").parse()?), ) .with(ra_fmt_layer) .with(chalk_layer) @@ -124,7 +124,7 @@ where Some(log) => log.target(), None => event.metadata().target(), }; - write!(writer, "[{} {}] ", level, target)?; + write!(writer, "[{level} {target}] ")?; // Write spans and fields of each span ctx.visit_spans(|span| { @@ -140,7 +140,7 @@ where let fields = &ext.get::>().expect("will never be `None`"); if !fields.is_empty() { - write!(writer, "{{{}}}", fields)?; + write!(writer, "{{{fields}}}")?; } write!(writer, ": ")?; diff --git a/crates/rust-analyzer/src/bin/main.rs b/crates/rust-analyzer/src/bin/main.rs index ec5053e991d3..53710749de3d 100644 --- a/crates/rust-analyzer/src/bin/main.rs +++ b/crates/rust-analyzer/src/bin/main.rs @@ -30,7 +30,7 @@ fn main() { let code = match rustc_wrapper::run_rustc_skipping_cargo_checking(rustc, args.collect()) { Ok(rustc_wrapper::ExitCode(code)) => code.unwrap_or(102), Err(err) => { - eprintln!("{}", err); + eprintln!("{err}"); 101 } }; @@ -40,7 +40,7 @@ fn main() { let flags = flags::RustAnalyzer::from_env_or_exit(); if let Err(err) = try_main(flags) { tracing::error!("Unexpected error: {}", err); - eprintln!("{}", err); + eprintln!("{err}"); process::exit(101); } } diff --git a/crates/rust-analyzer/src/cli.rs b/crates/rust-analyzer/src/cli.rs index 60ba67e25f93..d5d877680a09 100644 --- a/crates/rust-analyzer/src/cli.rs +++ b/crates/rust-analyzer/src/cli.rs @@ -46,7 +46,7 @@ fn report_metric(metric: &str, value: u64, unit: &str) { if std::env::var("RA_METRICS").is_err() { return; } - println!("METRIC:{}:{}:{}", metric, value, unit) + println!("METRIC:{metric}:{value}:{unit}") } fn print_memory_usage(mut host: AnalysisHost, vfs: Vfs) { @@ -65,6 +65,6 @@ fn print_memory_usage(mut host: AnalysisHost, vfs: Vfs) { for (name, bytes) in mem { // NOTE: Not a debug print, so avoid going through the `eprintln` defined above. - eprintln!("{:>8} {}", bytes, name); + eprintln!("{bytes:>8} {name}"); } } diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs index 01fccc83e822..053db5fc5331 100644 --- a/crates/rust-analyzer/src/cli/analysis_stats.rs +++ b/crates/rust-analyzer/src/cli/analysis_stats.rs @@ -87,9 +87,9 @@ impl flags::AnalysisStats { load_workspace(workspace, &cargo_config.extra_env, &load_cargo_config)?; let db = host.raw_database(); eprint!("{:<20} {}", "Database loaded:", db_load_sw.elapsed()); - eprint!(" (metadata {}", metadata_time); + eprint!(" (metadata {metadata_time}"); if let Some(build_scripts_time) = build_scripts_time { - eprint!("; build {}", build_scripts_time); + eprint!("; build {build_scripts_time}"); } eprintln!(")"); @@ -118,7 +118,7 @@ impl flags::AnalysisStats { shuffle(&mut rng, &mut visit_queue); } - eprint!(" crates: {}", num_crates); + eprint!(" crates: {num_crates}"); let mut num_decls = 0; let mut funcs = Vec::new(); while let Some(module) = visit_queue.pop() { @@ -142,7 +142,7 @@ impl flags::AnalysisStats { } } } - eprintln!(", mods: {}, decls: {}, fns: {}", visited_modules.len(), num_decls, funcs.len()); + eprintln!(", mods: {}, decls: {num_decls}, fns: {}", visited_modules.len(), funcs.len()); eprintln!("{:<20} {}", "Item Collection:", analysis_sw.elapsed()); if self.randomize { @@ -154,7 +154,7 @@ impl flags::AnalysisStats { } let total_span = analysis_sw.elapsed(); - eprintln!("{:<20} {}", "Total:", total_span); + eprintln!("{:<20} {total_span}", "Total:"); report_metric("total time", total_span.time.as_millis() as u64, "ms"); if let Some(instructions) = total_span.instructions { report_metric("total instructions", instructions, "#instr"); @@ -179,7 +179,7 @@ impl flags::AnalysisStats { total_macro_file_size += syntax_len(val.syntax_node()) } } - eprintln!("source files: {}, macro files: {}", total_file_size, total_macro_file_size); + eprintln!("source files: {total_file_size}, macro files: {total_macro_file_size}"); } if self.memory_usage && verbosity.is_verbose() { @@ -239,7 +239,7 @@ impl flags::AnalysisStats { continue; } } - let mut msg = format!("processing: {}", full_name); + let mut msg = format!("processing: {full_name}"); if verbosity.is_verbose() { if let Some(src) = f.source(db) { let original_file = src.file_id.original_file(db); @@ -275,7 +275,7 @@ impl flags::AnalysisStats { end.col, )); } else { - bar.println(format!("{}: Unknown type", name,)); + bar.println(format!("{name}: Unknown type",)); } } true @@ -402,7 +402,7 @@ fn location_csv( let text_range = original_range.range; let (start, end) = (line_index.line_col(text_range.start()), line_index.line_col(text_range.end())); - format!("{},{}:{},{}:{}", path, start.line + 1, start.col, end.line + 1, end.col) + format!("{path},{}:{},{}:{}", start.line + 1, start.col, end.line + 1, end.col) } fn expr_syntax_range( diff --git a/crates/rust-analyzer/src/cli/diagnostics.rs b/crates/rust-analyzer/src/cli/diagnostics.rs index 247007db0a78..fd5b3ce61f78 100644 --- a/crates/rust-analyzer/src/cli/diagnostics.rs +++ b/crates/rust-analyzer/src/cli/diagnostics.rs @@ -40,7 +40,7 @@ impl flags::Diagnostics { if !visited_files.contains(&file_id) { let crate_name = module.krate().display_name(db).as_deref().unwrap_or("unknown").to_string(); - println!("processing crate: {}, module: {}", crate_name, _vfs.file_path(file_id)); + println!("processing crate: {crate_name}, module: {}", _vfs.file_path(file_id)); for diagnostic in analysis .diagnostics( &DiagnosticsConfig::test_sample(), @@ -53,7 +53,7 @@ impl flags::Diagnostics { found_error = true; } - println!("{:?}", diagnostic); + println!("{diagnostic:?}"); } visited_files.insert(file_id); diff --git a/crates/rust-analyzer/src/cli/flags.rs b/crates/rust-analyzer/src/cli/flags.rs index 5bcc97e22612..770612cc9478 100644 --- a/crates/rust-analyzer/src/cli/flags.rs +++ b/crates/rust-analyzer/src/cli/flags.rs @@ -255,7 +255,7 @@ impl FromStr for OutputFormat { fn from_str(s: &str) -> Result { match s { "csv" => Ok(Self::Csv), - _ => Err(format!("unknown output format `{}`", s)), + _ => Err(format!("unknown output format `{s}`")), } } } diff --git a/crates/rust-analyzer/src/cli/highlight.rs b/crates/rust-analyzer/src/cli/highlight.rs index 4f9b362f1bec..84607b9fd5d5 100644 --- a/crates/rust-analyzer/src/cli/highlight.rs +++ b/crates/rust-analyzer/src/cli/highlight.rs @@ -8,7 +8,7 @@ impl flags::Highlight { pub fn run(self) -> anyhow::Result<()> { let (analysis, file_id) = Analysis::from_single_file(read_stdin()?); let html = analysis.highlight_as_html(file_id, self.rainbow).unwrap(); - println!("{}", html); + println!("{html}"); Ok(()) } } diff --git a/crates/rust-analyzer/src/cli/lsif.rs b/crates/rust-analyzer/src/cli/lsif.rs index 431617784132..af8356d041f8 100644 --- a/crates/rust-analyzer/src/cli/lsif.rs +++ b/crates/rust-analyzer/src/cli/lsif.rs @@ -83,7 +83,7 @@ impl LsifManager<'_> { // FIXME: support file in addition to stdout here fn emit(&self, data: &str) { - println!("{}", data); + println!("{data}"); } fn get_token_id(&mut self, id: TokenId) -> Id { diff --git a/crates/rust-analyzer/src/cli/progress_report.rs b/crates/rust-analyzer/src/cli/progress_report.rs index 5a2dc39d52b3..d459dd115ceb 100644 --- a/crates/rust-analyzer/src/cli/progress_report.rs +++ b/crates/rust-analyzer/src/cli/progress_report.rs @@ -67,7 +67,7 @@ impl ProgressReport { return; } let percent = (self.curr * 100.0) as u32; - let text = format!("{}/{} {:3>}% {}", self.pos, self.len, percent, self.msg); + let text = format!("{}/{} {percent:3>}% {}", self.pos, self.len, self.msg); self.update_text(&text); } @@ -114,7 +114,7 @@ impl ProgressReport { // Fill all last text to space and return the cursor let spaces = " ".repeat(self.text.len()); let backspaces = "\x08".repeat(self.text.len()); - print!("{}{}{}", backspaces, spaces, backspaces); + print!("{backspaces}{spaces}{backspaces}"); let _ = io::stdout().flush(); self.text = String::new(); diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs index 9edd045ab071..b1a803d28c6b 100644 --- a/crates/rust-analyzer/src/cli/scip.rs +++ b/crates/rust-analyzer/src/cli/scip.rs @@ -28,7 +28,7 @@ impl flags::Scip { let now = Instant::now(); let cargo_config = CargoConfig::default(); - let no_progress = &|s| (eprintln!("rust-analyzer: Loading {}", s)); + let no_progress = &|s| (eprintln!("rust-analyzer: Loading {s}")); let load_cargo_config = LoadCargoConfig { load_out_dirs_from_check: true, with_proc_macro: true, @@ -209,7 +209,7 @@ fn new_descriptor_str( fn new_descriptor(name: Name, suffix: scip_types::descriptor::Suffix) -> scip_types::Descriptor { let mut name = name.to_string(); if name.contains("'") { - name = format!("`{}`", name); + name = format!("`{name}`"); } new_descriptor_str(name.as_str(), suffix) @@ -303,11 +303,11 @@ mod test { } if expected == "" { - assert!(found_symbol.is_none(), "must have no symbols {:?}", found_symbol); + assert!(found_symbol.is_none(), "must have no symbols {found_symbol:?}"); return; } - assert!(found_symbol.is_some(), "must have one symbol {:?}", found_symbol); + assert!(found_symbol.is_some(), "must have one symbol {found_symbol:?}"); let res = found_symbol.unwrap(); let formatted = format_symbol(res); assert_eq!(formatted, expected); diff --git a/crates/rust-analyzer/src/cli/ssr.rs b/crates/rust-analyzer/src/cli/ssr.rs index e8291782b7ac..84c48917167b 100644 --- a/crates/rust-analyzer/src/cli/ssr.rs +++ b/crates/rust-analyzer/src/cli/ssr.rs @@ -70,7 +70,7 @@ impl flags::Search { let sr = db.source_root(root); for file_id in sr.iter() { for debug_info in match_finder.debug_where_text_equal(file_id, debug_snippet) { - println!("{:#?}", debug_info); + println!("{debug_info:#?}"); } } } diff --git a/crates/rust-analyzer/src/cli/symbols.rs b/crates/rust-analyzer/src/cli/symbols.rs index 84659b5ea9cd..9fad6723afcd 100644 --- a/crates/rust-analyzer/src/cli/symbols.rs +++ b/crates/rust-analyzer/src/cli/symbols.rs @@ -9,7 +9,7 @@ impl flags::Symbols { let (analysis, file_id) = Analysis::from_single_file(text); let structure = analysis.file_structure(file_id).unwrap(); for s in structure { - println!("{:?}", s); + println!("{s:?}"); } Ok(()) } diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 76ff2d5859e9..ac496a7a9f9a 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -1869,14 +1869,14 @@ fn schema(fields: &[(&'static str, &'static str, &[&str], &str)]) -> serde_json: fn key(f: &str) -> &str { f.splitn(2, '_').next().unwrap() } - assert!(key(f1) <= key(f2), "wrong field order: {:?} {:?}", f1, f2); + assert!(key(f1) <= key(f2), "wrong field order: {f1:?} {f2:?}"); } let map = fields .iter() .map(|(field, ty, doc, default)| { let name = field.replace('_', "."); - let name = format!("rust-analyzer.{}", name); + let name = format!("rust-analyzer.{name}"); let props = field_props(field, ty, doc, default); (name, props) }) @@ -2166,7 +2166,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json }, ], }, - _ => panic!("missing entry for {}: {}", ty, default), + _ => panic!("missing entry for {ty}: {default}"), } map.into() @@ -2194,14 +2194,14 @@ Default: name, name, default, doc ) } else { - format!("[[{}]]{} (default: `{}`)::\n+\n--\n{}--\n", name, name, default, doc) + format!("[[{name}]]{name} (default: `{default}`)::\n+\n--\n{doc}--\n") } }) .collect::() } fn doc_comment_to_string(doc: &[&str]) -> String { - doc.iter().map(|it| it.strip_prefix(' ').unwrap_or(it)).map(|it| format!("{}\n", it)).collect() + doc.iter().map(|it| it.strip_prefix(' ').unwrap_or(it)).map(|it| format!("{it}\n")).collect() } #[cfg(test)] @@ -2215,7 +2215,7 @@ mod tests { #[test] fn generate_package_json_config() { let s = Config::json_schema(); - let schema = format!("{:#}", s); + let schema = format!("{s:#}"); let mut schema = schema .trim_start_matches('{') .trim_end_matches('}') diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index beb23c54c9f0..d1ee99af3ec6 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -161,7 +161,7 @@ fn resolve_path( .iter() .find_map(|(from, to)| file_name.strip_prefix(from).map(|file_name| (to, file_name))) { - Some((to, file_name)) => workspace_root.join(format!("{}{}", to, file_name)), + Some((to, file_name)) => workspace_root.join(format!("{to}{file_name}")), None => workspace_root.join(file_name), } } @@ -218,7 +218,7 @@ fn map_rust_child_diagnostic( if !suggested_replacements.is_empty() { message.push_str(": "); let suggestions = - suggested_replacements.iter().map(|suggestion| format!("`{}`", suggestion)).join(", "); + suggested_replacements.iter().map(|suggestion| format!("`{suggestion}`")).join(", "); message.push_str(&suggestions); } @@ -493,7 +493,7 @@ fn rustc_code_description(code: Option<&str>) -> Option RequestDispatcher<'a> { match res { Ok(params) => { let panic_context = - format!("\nversion: {}\nrequest: {} {:#?}", version(), R::METHOD, params); + format!("\nversion: {}\nrequest: {} {params:#?}", version(), R::METHOD); Some((req, params, panic_context)) } Err(err) => { diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs index 4e8bc8d6462c..7f6ced26ce9a 100644 --- a/crates/rust-analyzer/src/global_state.rs +++ b/crates/rust-analyzer/src/global_state.rs @@ -429,6 +429,6 @@ pub(crate) fn file_id_to_url(vfs: &vfs::Vfs, id: FileId) -> Url { pub(crate) fn url_to_file_id(vfs: &vfs::Vfs, url: &Url) -> Result { let path = from_proto::vfs_path(url)?; - let res = vfs.file_id(&path).ok_or_else(|| format!("file not found: {}", path))?; + let res = vfs.file_id(&path).ok_or_else(|| format!("file not found: {path}"))?; Ok(res) } diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 7a4d372a285b..33f5b8a4efb2 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -730,7 +730,7 @@ pub(crate) fn handle_runnables( Some(spec) => { for cmd in ["check", "test"] { res.push(lsp_ext::Runnable { - label: format!("cargo {} -p {} --all-targets", cmd, spec.package), + label: format!("cargo {cmd} -p {} --all-targets", spec.package), location: None, kind: lsp_ext::RunnableKind::Cargo, args: lsp_ext::CargoRunnable { @@ -1146,8 +1146,8 @@ pub(crate) fn handle_code_action_resolve( Ok(parsed_data) => parsed_data, Err(e) => { return Err(invalid_params_error(format!( - "Failed to parse action id string '{}': {}", - params.id, e + "Failed to parse action id string '{}': {e}", + params.id )) .into()) } @@ -1191,7 +1191,7 @@ fn parse_action_id(action_id: &str) -> Result<(usize, SingleResolve), String> { let assist_kind: AssistKind = assist_kind_string.parse()?; let index: usize = match index_string.parse() { Ok(index) => index, - Err(e) => return Err(format!("Incorrect index string: {}", e)), + Err(e) => return Err(format!("Incorrect index string: {e}")), }; Ok((index, SingleResolve { assist_id: assist_id_string.to_string(), assist_kind })) } @@ -1870,7 +1870,7 @@ fn run_rustfmt( .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn() - .context(format!("Failed to spawn {:?}", command))?; + .context(format!("Failed to spawn {command:?}"))?; rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?; @@ -1903,9 +1903,9 @@ fn run_rustfmt( format!( r#"rustfmt exited with: Status: {} - stdout: {} - stderr: {}"#, - output.status, captured_stdout, captured_stderr, + stdout: {captured_stdout} + stderr: {captured_stderr}"#, + output.status, ), ) .into()) diff --git a/crates/rust-analyzer/src/integrated_benchmarks.rs b/crates/rust-analyzer/src/integrated_benchmarks.rs index 96b1cb6b1271..405d261db6fb 100644 --- a/crates/rust-analyzer/src/integrated_benchmarks.rs +++ b/crates/rust-analyzer/src/integrated_benchmarks.rs @@ -48,7 +48,7 @@ fn integrated_highlighting_benchmark() { let file_id = { let file = workspace_to_load.join(file); let path = VfsPath::from(AbsPathBuf::assert(file)); - vfs.file_id(&path).unwrap_or_else(|| panic!("can't find virtual file for {}", path)) + vfs.file_id(&path).unwrap_or_else(|| panic!("can't find virtual file for {path}")) }; { @@ -102,7 +102,7 @@ fn integrated_completion_benchmark() { let file_id = { let file = workspace_to_load.join(file); let path = VfsPath::from(AbsPathBuf::assert(file)); - vfs.file_id(&path).unwrap_or_else(|| panic!("can't find virtual file for {}", path)) + vfs.file_id(&path).unwrap_or_else(|| panic!("can't find virtual file for {path}")) }; { diff --git a/crates/rust-analyzer/src/lib.rs b/crates/rust-analyzer/src/lib.rs index 552379752fa6..32dc3750fdf6 100644 --- a/crates/rust-analyzer/src/lib.rs +++ b/crates/rust-analyzer/src/lib.rs @@ -55,7 +55,7 @@ pub type Result = std::result::Result; pub fn from_json(what: &'static str, json: &serde_json::Value) -> Result { let res = serde_json::from_value(json.clone()) - .map_err(|e| format!("Failed to deserialize {}: {}; {}", what, e, json))?; + .map_err(|e| format!("Failed to deserialize {what}: {e}; {json}"))?; Ok(res) } diff --git a/crates/rust-analyzer/src/lsp_utils.rs b/crates/rust-analyzer/src/lsp_utils.rs index 0971dc36f3a5..dcaee92857ab 100644 --- a/crates/rust-analyzer/src/lsp_utils.rs +++ b/crates/rust-analyzer/src/lsp_utils.rs @@ -98,7 +98,7 @@ impl GlobalState { }); let cancellable = Some(cancel_token.is_some()); let token = lsp_types::ProgressToken::String( - cancel_token.unwrap_or_else(|| format!("rustAnalyzer/{}", title)), + cancel_token.unwrap_or_else(|| format!("rustAnalyzer/{title}")), ); let work_done_progress = match state { Progress::Begin => { diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 2d443231b4ed..9cedcf1bec1d 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -229,8 +229,8 @@ impl GlobalState { message = match &report.crates_currently_indexing[..] { [crate_name] => Some(format!( - "{}/{} ({})", - report.crates_done, report.crates_total, crate_name + "{}/{} ({crate_name})", + report.crates_done, report.crates_total )), [crate_name, rest @ ..] => Some(format!( "{}/{} ({} + {} more)", @@ -516,7 +516,7 @@ impl GlobalState { self.report_progress( "Roots Scanned", state, - Some(format!("{}/{}", n_done, n_total)), + Some(format!("{n_done}/{n_total}")), Some(Progress::fraction(n_done, n_total)), None, ) @@ -587,7 +587,7 @@ impl GlobalState { state, message, None, - Some(format!("rust-analyzer/flycheck/{}", id)), + Some(format!("rust-analyzer/flycheck/{id}")), ); } } diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index a7106acc78b1..35ced15de549 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -342,7 +342,7 @@ fn completion_item( // by the client. Hex format is used because it is easier to // visually compare very large values, which the sort text // tends to be since it is the opposite of the score. - res.sort_text = Some(format!("{:08x}", sort_score)); + res.sort_text = Some(format!("{sort_score:08x}")); } } @@ -1113,7 +1113,7 @@ pub(crate) fn code_action( (Some(it), _) => res.edit = Some(snippet_workspace_edit(snap, it)?), (None, Some((index, code_action_params))) => { res.data = Some(lsp_ext::CodeActionData { - id: format!("{}:{}:{}", assist.id.0, assist.id.1.name(), index), + id: format!("{}:{}:{index}", assist.id.0, assist.id.1.name()), code_action_params, }); } @@ -1352,7 +1352,7 @@ pub(crate) fn implementation_title(count: usize) -> String { if count == 1 { "1 implementation".into() } else { - format!("{} implementations", count) + format!("{count} implementations") } } @@ -1360,7 +1360,7 @@ pub(crate) fn reference_title(count: usize) -> String { if count == 1 { "1 reference".into() } else { - format!("{} references", count) + format!("{count} references") } } diff --git a/crates/rust-analyzer/tests/slow-tests/main.rs b/crates/rust-analyzer/tests/slow-tests/main.rs index fa55f7d90c49..76eb60ac7cb2 100644 --- a/crates/rust-analyzer/tests/slow-tests/main.rs +++ b/crates/rust-analyzer/tests/slow-tests/main.rs @@ -263,7 +263,7 @@ mod tests { for runnable in ["consumer", "dependency", "devdependency"] { server.request::( RunnablesParams { - text_document: server.doc_id(&format!("{}/src/lib.rs", runnable)), + text_document: server.doc_id(&format!("{runnable}/src/lib.rs")), position: None, }, json!([ @@ -595,8 +595,8 @@ fn diagnostics_dont_block_typing() { return; } - let librs: String = (0..10).map(|i| format!("mod m{};", i)).collect(); - let libs: String = (0..10).map(|i| format!("//- /src/m{}.rs\nfn foo() {{}}\n\n", i)).collect(); + let librs: String = (0..10).map(|i| format!("mod m{i};")).collect(); + let libs: String = (0..10).map(|i| format!("//- /src/m{i}.rs\nfn foo() {{}}\n\n")).collect(); let server = Project::with_fixture(&format!( r#" //- /Cargo.toml @@ -622,7 +622,7 @@ fn main() {{}} for i in 0..10 { server.notification::(DidOpenTextDocumentParams { text_document: TextDocumentItem { - uri: server.doc_id(&format!("src/m{}.rs", i)).uri, + uri: server.doc_id(&format!("src/m{i}.rs")).uri, language_id: "rust".to_string(), version: 0, text: "/// Docs\nfn foo() {}".to_string(), @@ -645,7 +645,7 @@ fn main() {{}} }]), ); let elapsed = start.elapsed(); - assert!(elapsed.as_millis() < 2000, "typing enter took {:?}", elapsed); + assert!(elapsed.as_millis() < 2000, "typing enter took {elapsed:?}"); } #[test] @@ -942,7 +942,7 @@ fn test_will_rename_files_same_level() { let tmp_dir = TestDir::new(); let tmp_dir_path = tmp_dir.path().to_owned(); let tmp_dir_str = tmp_dir_path.to_str().unwrap(); - let base_path = PathBuf::from(format!("file://{}", tmp_dir_str)); + let base_path = PathBuf::from(format!("file://{tmp_dir_str}")); let code = r#" //- /Cargo.toml diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs index e6ac018a05fe..7465ca9ab577 100644 --- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs +++ b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs @@ -42,7 +42,7 @@ impl Feature { for block in comment_blocks { let id = block.id; if let Err(msg) = is_valid_feature_name(&id) { - panic!("invalid feature name: {:?}:\n {}", id, msg) + panic!("invalid feature name: {id:?}:\n {msg}") } let doc = block.contents.join("\n"); let location = sourcegen::Location { file: path.clone(), line: block.line }; @@ -63,11 +63,11 @@ fn is_valid_feature_name(feature: &str) -> Result<(), String> { } for short in ["To", "And"] { if word == short { - return Err(format!("Don't capitalize {:?}", word)); + return Err(format!("Don't capitalize {word:?}")); } } if !word.starts_with(char::is_uppercase) { - return Err(format!("Capitalize {:?}", word)); + return Err(format!("Capitalize {word:?}")); } } Ok(()) diff --git a/crates/rust-analyzer/tests/slow-tests/support.rs b/crates/rust-analyzer/tests/slow-tests/support.rs index 7257445dabe0..269212ebb99c 100644 --- a/crates/rust-analyzer/tests/slow-tests/support.rs +++ b/crates/rust-analyzer/tests/slow-tests/support.rs @@ -216,7 +216,7 @@ impl Server { fn send_request_(&self, r: Request) -> Value { let id = r.id.clone(); self.client.sender.send(r.clone().into()).unwrap(); - while let Some(msg) = self.recv().unwrap_or_else(|Timeout| panic!("timeout: {:?}", r)) { + while let Some(msg) = self.recv().unwrap_or_else(|Timeout| panic!("timeout: {r:?}")) { match msg { Message::Request(req) => { if req.method == "client/registerCapability" { @@ -228,19 +228,19 @@ impl Server { continue; } } - panic!("unexpected request: {:?}", req) + panic!("unexpected request: {req:?}") } Message::Notification(_) => (), Message::Response(res) => { assert_eq!(res.id, id); if let Some(err) = res.error { - panic!("error response: {:#?}", err); + panic!("error response: {err:#?}"); } return res.result.unwrap(); } } } - panic!("no response for {:?}", r); + panic!("no response for {r:?}"); } pub(crate) fn wait_until_workspace_is_loaded(self) -> Server { self.wait_for_message_cond(1, &|msg: &Message| match msg { diff --git a/crates/rust-analyzer/tests/slow-tests/testdir.rs b/crates/rust-analyzer/tests/slow-tests/testdir.rs index 3bec23a91175..f7fceb588869 100644 --- a/crates/rust-analyzer/tests/slow-tests/testdir.rs +++ b/crates/rust-analyzer/tests/slow-tests/testdir.rs @@ -28,7 +28,7 @@ impl TestDir { static CNT: AtomicUsize = AtomicUsize::new(0); for _ in 0..100 { let cnt = CNT.fetch_add(1, Ordering::Relaxed); - let path = base.join(format!("{}_{}", pid, cnt)); + let path = base.join(format!("{pid}_{cnt}")); if path.is_dir() { continue; } @@ -53,7 +53,7 @@ impl Drop for TestDir { return; } remove_dir_all(&self.path).unwrap_or_else(|err| { - panic!("failed to remove temporary directory {}: {}", self.path.display(), err) + panic!("failed to remove temporary directory {}: {err}", self.path.display()) }) } } diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index 24e68eca676d..745faf424916 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -216,18 +216,18 @@ Zlib OR Apache-2.0 OR MIT diff.push_str("New Licenses:\n"); for &l in licenses.iter() { if !expected.contains(&l) { - diff += &format!(" {}\n", l) + diff += &format!(" {l}\n") } } diff.push_str("\nMissing Licenses:\n"); for &l in expected.iter() { if !licenses.contains(&l) { - diff += &format!(" {}\n", l) + diff += &format!(" {l}\n") } } - panic!("different set of licenses!\n{}", diff); + panic!("different set of licenses!\n{diff}"); } assert_eq!(licenses, expected); } @@ -316,7 +316,7 @@ fn check_test_attrs(path: &Path, text: &str) { "ide-assists/src/tests/generated.rs", ]; if text.contains("#[ignore") && !need_ignore.iter().any(|p| path.ends_with(p)) { - panic!("\ndon't `#[ignore]` tests, see:\n\n {}\n\n {}\n", ignore_rule, path.display(),) + panic!("\ndon't `#[ignore]` tests, see:\n\n {ignore_rule}\n\n {}\n", path.display(),) } let panic_rule = @@ -438,7 +438,7 @@ impl TidyMarks { self.hits.symmetric_difference(&self.checks).map(|it| it.as_str()).collect(); if !diff.is_empty() { - panic!("unpaired marks: {:?}", diff) + panic!("unpaired marks: {diff:?}") } } } diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index 4e0ee63f32f2..9d7a0c480bde 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -57,7 +57,7 @@ impl CommentBlock { pub fn extract(tag: &str, text: &str) -> Vec { assert!(tag.starts_with(char::is_uppercase)); - let tag = format!("{}:", tag); + let tag = format!("{tag}:"); // Would be nice if we had `.retain_mut` here! CommentBlock::extract_untagged(text) .into_iter() @@ -163,7 +163,7 @@ pub fn reformat(text: String) -> String { } pub fn add_preamble(generator: &'static str, mut text: String) -> String { - let preamble = format!("//! Generated by `{}`, do not edit by hand.\n\n", generator); + let preamble = format!("//! Generated by `{generator}`, do not edit by hand.\n\n"); text.insert_str(0, &preamble); text } diff --git a/crates/stdx/src/panic_context.rs b/crates/stdx/src/panic_context.rs index a64f9a6f3faa..c3e8813b0e81 100644 --- a/crates/stdx/src/panic_context.rs +++ b/crates/stdx/src/panic_context.rs @@ -25,7 +25,7 @@ impl PanicContext { if !ctx.is_empty() { eprintln!("Panic context:"); for frame in ctx.iter() { - eprintln!("> {}\n", frame); + eprintln!("> {frame}\n"); } } default_hook(panic_info); diff --git a/crates/syntax/src/algo.rs b/crates/syntax/src/algo.rs index 8b14789dd917..bcfece4503c8 100644 --- a/crates/syntax/src/algo.rs +++ b/crates/syntax/src/algo.rs @@ -616,7 +616,7 @@ fn main() { let fmt_syntax = |syn: &SyntaxElement| match syn.kind() { SyntaxKind::WHITESPACE => format!("{:?}", syn.to_string()), - _ => format!("{}", syn), + _ => format!("{syn}"), }; let insertions = @@ -637,7 +637,7 @@ fn main() { .iter() .sorted_by_key(|(syntax, _)| syntax.text_range().start()) .format_with("\n", |(k, v), f| { - f(&format!("Line {}: {:?} -> {}", line_number(k), k, fmt_syntax(v))) + f(&format!("Line {}: {k:?} -> {}", line_number(k), fmt_syntax(v))) }); let deletions = diff diff --git a/crates/syntax/src/ast/edit.rs b/crates/syntax/src/ast/edit.rs index 15805dfc8608..5bc6b780e47f 100644 --- a/crates/syntax/src/ast/edit.rs +++ b/crates/syntax/src/ast/edit.rs @@ -87,7 +87,7 @@ impl IndentLevel { for token in tokens { if let Some(ws) = ast::Whitespace::cast(token) { if ws.text().contains('\n') { - let new_ws = make::tokens::whitespace(&format!("{}{}", ws.syntax(), self)); + let new_ws = make::tokens::whitespace(&format!("{}{self}", ws.syntax())); ted::replace(ws.syntax(), &new_ws); } } @@ -103,7 +103,7 @@ impl IndentLevel { if let Some(ws) = ast::Whitespace::cast(token) { if ws.text().contains('\n') { let new_ws = make::tokens::whitespace( - &ws.syntax().text().replace(&format!("\n{}", self), "\n"), + &ws.syntax().text().replace(&format!("\n{self}"), "\n"), ); ted::replace(ws.syntax(), &new_ws); } diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs index 660c057e99c5..d7ad4f332f36 100644 --- a/crates/syntax/src/ast/edit_in_place.rs +++ b/crates/syntax/src/ast/edit_in_place.rs @@ -481,7 +481,7 @@ impl ast::AssocItemList { }, }; let elements: Vec> = vec![ - make::tokens::whitespace(&format!("{}{}", whitespace, indent)).into(), + make::tokens::whitespace(&format!("{whitespace}{indent}")).into(), item.syntax().clone().into(), ]; ted::insert_all(position, elements); @@ -537,7 +537,7 @@ impl ast::MatchArmList { }, }; let indent = IndentLevel::from_node(self.syntax()) + 1; - elements.push(make::tokens::whitespace(&format!("\n{}", indent)).into()); + elements.push(make::tokens::whitespace(&format!("\n{indent}")).into()); elements.push(arm.syntax().clone().into()); if needs_comma(&arm) { ted::append_child(arm.syntax(), make::token(SyntaxKind::COMMA)); @@ -555,7 +555,7 @@ impl ast::RecordExprFieldList { let is_multiline = self.syntax().text().contains_char('\n'); let whitespace = if is_multiline { let indent = IndentLevel::from_node(self.syntax()) + 1; - make::tokens::whitespace(&format!("\n{}", indent)) + make::tokens::whitespace(&format!("\n{indent}")) } else { make::tokens::single_space() }; @@ -616,7 +616,7 @@ impl ast::RecordPatFieldList { let is_multiline = self.syntax().text().contains_char('\n'); let whitespace = if is_multiline { let indent = IndentLevel::from_node(self.syntax()) + 1; - make::tokens::whitespace(&format!("\n{}", indent)) + make::tokens::whitespace(&format!("\n{indent}")) } else { make::tokens::single_space() }; @@ -681,7 +681,7 @@ impl ast::VariantList { }, }; let elements: Vec> = vec![ - make::tokens::whitespace(&format!("{}{}", "\n", indent)).into(), + make::tokens::whitespace(&format!("{}{indent}", "\n")).into(), variant.syntax().clone().into(), ast::make::token(T![,]).into(), ]; @@ -704,11 +704,11 @@ fn normalize_ws_between_braces(node: &SyntaxNode) -> Option<()> { match l.next_sibling_or_token() { Some(ws) if ws.kind() == SyntaxKind::WHITESPACE => { if ws.next_sibling_or_token()?.into_token()? == r { - ted::replace(ws, make::tokens::whitespace(&format!("\n{}", indent))); + ted::replace(ws, make::tokens::whitespace(&format!("\n{indent}"))); } } Some(ws) if ws.kind() == T!['}'] => { - ted::insert(Position::after(l), make::tokens::whitespace(&format!("\n{}", indent))); + ted::insert(Position::after(l), make::tokens::whitespace(&format!("\n{indent}"))); } _ => (), } diff --git a/crates/syntax/src/ast/token_ext.rs b/crates/syntax/src/ast/token_ext.rs index 8990f7a7d4e8..ca18196300df 100644 --- a/crates/syntax/src/ast/token_ext.rs +++ b/crates/syntax/src/ast/token_ext.rs @@ -436,9 +436,7 @@ mod tests { fn check_string_value<'a>(lit: &str, expected: impl Into>) { assert_eq!( - ast::String { syntax: make::tokens::literal(&format!("\"{}\"", lit)) } - .value() - .as_deref(), + ast::String { syntax: make::tokens::literal(&format!("\"{lit}\"")) }.value().as_deref(), expected.into() ); } @@ -461,7 +459,7 @@ bcde", "abcde", expected: impl Into>, ) { assert_eq!( - ast::ByteString { syntax: make::tokens::literal(&format!("b\"{}\"", lit)) } + ast::ByteString { syntax: make::tokens::literal(&format!("b\"{lit}\"")) } .value() .as_deref(), expected.into().map(|value| &value[..]) diff --git a/crates/syntax/src/fuzz.rs b/crates/syntax/src/fuzz.rs index 7c7a60d62994..239a89f9b2d5 100644 --- a/crates/syntax/src/fuzz.rs +++ b/crates/syntax/src/fuzz.rs @@ -36,7 +36,7 @@ impl CheckReparse { let delete_len = usize::from_str(lines.next()?).ok()?; let insert = lines.next()?.to_string(); let text = lines.collect::>().join("\n"); - let text = format!("{}{}{}", PREFIX, text, SUFFIX); + let text = format!("{PREFIX}{text}{SUFFIX}"); text.get(delete_start..delete_start.checked_add(delete_len)?)?; // make sure delete is a valid range let delete = TextRange::at(delete_start.try_into().unwrap(), delete_len.try_into().unwrap()); @@ -60,8 +60,8 @@ impl CheckReparse { eprint!("reparsed:\n{:#?}", new_parse.tree().syntax()); eprint!("full reparse:\n{:#?}", full_reparse.tree().syntax()); assert_eq!( - format!("{:?}", a), - format!("{:?}", b), + format!("{a:?}"), + format!("{b:?}"), "different syntax tree produced by the full reparse" ); } diff --git a/crates/syntax/src/hacks.rs b/crates/syntax/src/hacks.rs index ec3d3d444c36..a3023c3195f3 100644 --- a/crates/syntax/src/hacks.rs +++ b/crates/syntax/src/hacks.rs @@ -6,7 +6,7 @@ use crate::{ast, AstNode}; pub fn parse_expr_from_str(s: &str) -> Option { let s = s.trim(); - let file = ast::SourceFile::parse(&format!("const _: () = {};", s)); + let file = ast::SourceFile::parse(&format!("const _: () = {s};")); let expr = file.syntax_node().descendants().find_map(ast::Expr::cast)?; if expr.syntax().text() != s { return None; diff --git a/crates/syntax/src/ted.rs b/crates/syntax/src/ted.rs index a47b4b11c0ae..29788d05e845 100644 --- a/crates/syntax/src/ted.rs +++ b/crates/syntax/src/ted.rs @@ -157,7 +157,7 @@ fn ws_before(position: &Position, new: &SyntaxElement) -> Option { if let Some(item_list) = prev.parent().and_then(ast::ItemList::cast) { let mut indent = IndentLevel::from_element(&item_list.syntax().clone().into()); indent.0 += 1; - return Some(make::tokens::whitespace(&format!("\n{}", indent))); + return Some(make::tokens::whitespace(&format!("\n{indent}"))); } } @@ -165,7 +165,7 @@ fn ws_before(position: &Position, new: &SyntaxElement) -> Option { if let Some(stmt_list) = prev.parent().and_then(ast::StmtList::cast) { let mut indent = IndentLevel::from_element(&stmt_list.syntax().clone().into()); indent.0 += 1; - return Some(make::tokens::whitespace(&format!("\n{}", indent))); + return Some(make::tokens::whitespace(&format!("\n{indent}"))); } } @@ -200,7 +200,7 @@ fn ws_between(left: &SyntaxElement, right: &SyntaxElement) -> Option(); - panic!("Parsing errors:\n{}\n", errors); + panic!("Parsing errors:\n{errors}\n"); } } @@ -181,6 +181,6 @@ fn rust_files_in_dir(dir: &Path) -> Vec { /// so this should always be correct. fn read_text(path: &Path) -> String { fs::read_to_string(path) - .unwrap_or_else(|_| panic!("File at {:?} should be valid", path)) + .unwrap_or_else(|_| panic!("File at {path:?} should be valid")) .replace("\r\n", "\n") } diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs index 712ef5f63b65..d66ff7365f8e 100644 --- a/crates/syntax/src/tests/sourcegen_ast.rs +++ b/crates/syntax/src/tests/sourcegen_ast.rs @@ -328,7 +328,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String { fn write_doc_comment(contents: &[String], dest: &mut String) { for line in contents { - writeln!(dest, "///{}", line).unwrap(); + writeln!(dest, "///{line}").unwrap(); } } @@ -501,7 +501,7 @@ fn to_pascal_case(s: &str) -> String { } fn pluralize(s: &str) -> String { - format!("{}s", s) + format!("{s}s") } impl Field { @@ -637,7 +637,7 @@ fn lower_rule(acc: &mut Vec, grammar: &Grammar, label: Option<&String>, r let mut name = grammar[*token].name.clone(); if name != "int_number" && name != "string" { if "[]{}()".contains(&name) { - name = format!("'{}'", name); + name = format!("'{name}'"); } let field = Field::Token(name); acc.push(field); @@ -651,7 +651,7 @@ fn lower_rule(acc: &mut Vec, grammar: &Grammar, label: Option<&String>, r acc.push(field); return; } - panic!("unhandled rule: {:?}", rule) + panic!("unhandled rule: {rule:?}") } Rule::Labeled { label: l, rule } => { assert!(label.is_none()); diff --git a/crates/test-utils/src/assert_linear.rs b/crates/test-utils/src/assert_linear.rs index 24502ddb41af..d6acdde383f1 100644 --- a/crates/test-utils/src/assert_linear.rs +++ b/crates/test-utils/src/assert_linear.rs @@ -83,7 +83,7 @@ impl Round { let a = mean_y - b * mean_x; - self.plot = format!("y_pred = {:.3} + {:.3} * x\n\nx y y_pred\n", a, b); + self.plot = format!("y_pred = {a:.3} + {b:.3} * x\n\nx y y_pred\n"); let mut se = 0.0; let mut max_error = 0.0f64; diff --git a/crates/test-utils/src/fixture.rs b/crates/test-utils/src/fixture.rs index 73e72c18809b..e7bc64620b2c 100644 --- a/crates/test-utils/src/fixture.rs +++ b/crates/test-utils/src/fixture.rs @@ -153,7 +153,7 @@ impl Fixture { && !line.contains('.') && line.chars().all(|it| !it.is_uppercase()) { - panic!("looks like invalid metadata line: {:?}", line); + panic!("looks like invalid metadata line: {line:?}"); } if let Some(entry) = res.last_mut() { @@ -172,7 +172,7 @@ impl Fixture { let components = meta.split_ascii_whitespace().collect::>(); let path = components[0].to_string(); - assert!(path.starts_with('/'), "fixture path does not start with `/`: {:?}", path); + assert!(path.starts_with('/'), "fixture path does not start with `/`: {path:?}"); let mut krate = None; let mut deps = Vec::new(); @@ -184,9 +184,8 @@ impl Fixture { let mut introduce_new_source_root = None; let mut target_data_layout = None; for component in components[1..].iter() { - let (key, value) = component - .split_once(':') - .unwrap_or_else(|| panic!("invalid meta line: {:?}", meta)); + let (key, value) = + component.split_once(':').unwrap_or_else(|| panic!("invalid meta line: {meta:?}")); match key { "crate" => krate = Some(value.to_string()), "deps" => deps = value.split(',').map(|it| it.to_string()).collect(), @@ -216,7 +215,7 @@ impl Fixture { } "new_source_root" => introduce_new_source_root = Some(value.to_string()), "target_data_layout" => target_data_layout = Some(value.to_string()), - _ => panic!("bad component: {:?}", component), + _ => panic!("bad component: {component:?}"), } } @@ -253,7 +252,7 @@ impl MiniCore { #[track_caller] fn assert_valid_flag(&self, flag: &str) { if !self.valid_flags.iter().any(|it| it == flag) { - panic!("invalid flag: {:?}, valid flags: {:?}", flag, self.valid_flags); + panic!("invalid flag: {flag:?}, valid flags: {:?}", self.valid_flags); } } @@ -263,7 +262,7 @@ impl MiniCore { let line = line.strip_prefix("//- minicore:").unwrap().trim(); for entry in line.split(", ") { if res.has_flag(entry) { - panic!("duplicate minicore flag: {:?}", entry); + panic!("duplicate minicore flag: {entry:?}"); } res.activated_flags.push(entry.to_owned()); } @@ -369,7 +368,7 @@ impl MiniCore { for flag in &self.valid_flags { if !seen_regions.iter().any(|it| it == flag) { - panic!("unused minicore flag: {:?}", flag); + panic!("unused minicore flag: {flag:?}"); } } buf diff --git a/crates/test-utils/src/lib.rs b/crates/test-utils/src/lib.rs index 8a9cfb6c22e4..74468ea750d9 100644 --- a/crates/test-utils/src/lib.rs +++ b/crates/test-utils/src/lib.rs @@ -146,8 +146,8 @@ pub fn extract_range_or_offset(text: &str) -> (RangeOrOffset, String) { /// Extracts ranges, marked with ` ` pairs from the `text` pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option)>, String) { - let open = format!("<{}", tag); - let close = format!("", tag); + let open = format!("<{tag}"); + let close = format!(""); let mut ranges = Vec::new(); let mut res = String::new(); let mut stack = Vec::new(); @@ -169,8 +169,7 @@ pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option", tag)); + let (from, attr) = stack.pop().unwrap_or_else(|| panic!("unmatched ")); let to = TextSize::of(&res); ranges.push((TextRange::new(from, to), attr)); } else { @@ -180,7 +179,7 @@ pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option", tag); + assert!(stack.is_empty(), "unmatched <{tag}>"); ranges.sort_by_key(|r| (r.0.start(), r.0.end())); (ranges, res) } @@ -413,8 +412,8 @@ pub fn format_diff(chunks: Vec>) -> String { for chunk in chunks { let formatted = match chunk { dissimilar::Chunk::Equal(text) => text.into(), - dissimilar::Chunk::Delete(text) => format!("\x1b[41m{}\x1b[0m", text), - dissimilar::Chunk::Insert(text) => format!("\x1b[42m{}\x1b[0m", text), + dissimilar::Chunk::Delete(text) => format!("\x1b[41m{text}\x1b[0m"), + dissimilar::Chunk::Insert(text) => format!("\x1b[42m{text}\x1b[0m"), }; buf.push_str(&formatted); } diff --git a/crates/tt/src/lib.rs b/crates/tt/src/lib.rs index 85daec262c42..353b09fd8c1e 100644 --- a/crates/tt/src/lib.rs +++ b/crates/tt/src/lib.rs @@ -115,15 +115,15 @@ fn print_debug_subtree(f: &mut fmt::Formatter<'_>, subtree: &Subtree, level: usi let aux = match subtree.delimiter.map(|it| (it.kind, it.id.0)) { None => "$".to_string(), - Some((DelimiterKind::Parenthesis, id)) => format!("() {}", id), - Some((DelimiterKind::Brace, id)) => format!("{{}} {}", id), - Some((DelimiterKind::Bracket, id)) => format!("[] {}", id), + Some((DelimiterKind::Parenthesis, id)) => format!("() {id}"), + Some((DelimiterKind::Brace, id)) => format!("{{}} {id}"), + Some((DelimiterKind::Bracket, id)) => format!("[] {id}"), }; if subtree.token_trees.is_empty() { - write!(f, "{}SUBTREE {}", align, aux)?; + write!(f, "{align}SUBTREE {aux}")?; } else { - writeln!(f, "{}SUBTREE {}", align, aux)?; + writeln!(f, "{align}SUBTREE {aux}")?; for (idx, child) in subtree.token_trees.iter().enumerate() { print_debug_token(f, child, level + 1)?; if idx != subtree.token_trees.len() - 1 { @@ -140,7 +140,7 @@ fn print_debug_token(f: &mut fmt::Formatter<'_>, tkn: &TokenTree, level: usize) match tkn { TokenTree::Leaf(leaf) => match leaf { - Leaf::Literal(lit) => write!(f, "{}LITERAL {} {}", align, lit.text, lit.id.0)?, + Leaf::Literal(lit) => write!(f, "{align}LITERAL {} {}", lit.text, lit.id.0)?, Leaf::Punct(punct) => write!( f, "{}PUNCH {} [{}] {}", @@ -149,7 +149,7 @@ fn print_debug_token(f: &mut fmt::Formatter<'_>, tkn: &TokenTree, level: usize) if punct.spacing == Spacing::Alone { "alone" } else { "joint" }, punct.id.0 )?, - Leaf::Ident(ident) => write!(f, "{}IDENT {} {}", align, ident.text, ident.id.0)?, + Leaf::Ident(ident) => write!(f, "{align}IDENT {} {}", ident.text, ident.id.0)?, }, TokenTree::Subtree(subtree) => { print_debug_subtree(f, subtree, level)?; @@ -312,7 +312,7 @@ pub fn pretty(tkns: &[TokenTree]) -> String { Some(DelimiterKind::Parenthesis) => ("(", ")"), Some(DelimiterKind::Bracket) => ("[", "]"), }; - format!("{}{}{}", open, content, close) + format!("{open}{content}{close}") } } } diff --git a/crates/vfs/src/vfs_path.rs b/crates/vfs/src/vfs_path.rs index 668c7320d4ec..b23c9f1966d5 100644 --- a/crates/vfs/src/vfs_path.rs +++ b/crates/vfs/src/vfs_path.rs @@ -364,7 +364,7 @@ impl VirtualPath { path = &path["../".len()..]; } path = path.trim_start_matches("./"); - res.0 = format!("{}/{}", res.0, path); + res.0 = format!("{}/{path}", res.0); Some(res) } diff --git a/lib/lsp-server/examples/goto_def.rs b/lib/lsp-server/examples/goto_def.rs index ca7ad0b53673..2f270afbbf19 100644 --- a/lib/lsp-server/examples/goto_def.rs +++ b/lib/lsp-server/examples/goto_def.rs @@ -80,32 +80,32 @@ fn main_loop( let _params: InitializeParams = serde_json::from_value(params).unwrap(); eprintln!("starting example main loop"); for msg in &connection.receiver { - eprintln!("got msg: {:?}", msg); + eprintln!("got msg: {msg:?}"); match msg { Message::Request(req) => { if connection.handle_shutdown(&req)? { return Ok(()); } - eprintln!("got request: {:?}", req); + eprintln!("got request: {req:?}"); match cast::(req) { Ok((id, params)) => { - eprintln!("got gotoDefinition request #{}: {:?}", id, params); + eprintln!("got gotoDefinition request #{id}: {params:?}"); let result = Some(GotoDefinitionResponse::Array(Vec::new())); let result = serde_json::to_value(&result).unwrap(); let resp = Response { id, result: Some(result), error: None }; connection.sender.send(Message::Response(resp))?; continue; } - Err(err @ ExtractError::JsonError { .. }) => panic!("{:?}", err), + Err(err @ ExtractError::JsonError { .. }) => panic!("{err:?}"), Err(ExtractError::MethodMismatch(req)) => req, }; // ... } Message::Response(resp) => { - eprintln!("got response: {:?}", resp); + eprintln!("got response: {resp:?}"); } Message::Notification(not) => { - eprintln!("got notification: {:?}", not); + eprintln!("got notification: {not:?}"); } } } diff --git a/lib/lsp-server/src/lib.rs b/lib/lsp-server/src/lib.rs index d567077d4a4b..8c3c81feabc1 100644 --- a/lib/lsp-server/src/lib.rs +++ b/lib/lsp-server/src/lib.rs @@ -123,7 +123,7 @@ impl Connection { let resp = Response::new_err( req.id.clone(), ErrorCode::ServerNotInitialized as i32, - format!("expected initialize request, got {:?}", req), + format!("expected initialize request, got {req:?}"), ); self.sender.send(resp.into()).unwrap(); } @@ -221,11 +221,9 @@ impl Connection { match &self.receiver.recv_timeout(std::time::Duration::from_secs(30)) { Ok(Message::Notification(n)) if n.is_exit() => (), Ok(msg) => { - return Err(ProtocolError(format!("unexpected message during shutdown: {:?}", msg))) - } - Err(e) => { - return Err(ProtocolError(format!("unexpected error during shutdown: {}", e))) + return Err(ProtocolError(format!("unexpected message during shutdown: {msg:?}"))) } + Err(e) => return Err(ProtocolError(format!("unexpected error during shutdown: {e}"))), } Ok(true) } diff --git a/xtask/src/dist.rs b/xtask/src/dist.rs index 686aec4ae507..410276bc45be 100644 --- a/xtask/src/dist.rs +++ b/xtask/src/dist.rs @@ -26,10 +26,10 @@ impl flags::Dist { if let Some(patch_version) = self.client_patch_version { let version = if stable { - format!("{}.{}", VERSION_STABLE, patch_version) + format!("{VERSION_STABLE}.{patch_version}") } else { // A hack to make VS Code prefer nightly over stable. - format!("{}.{}", VERSION_NIGHTLY, patch_version) + format!("{VERSION_NIGHTLY}.{patch_version}") }; dist_server(sh, &format!("{version}-standalone"), &target)?; let release_tag = if stable { date_iso(sh)? } else { "nightly".to_string() }; @@ -59,10 +59,10 @@ fn dist_client( let mut patch = Patch::new(sh, "./package.json")?; patch .replace( - &format!(r#""version": "{}.0-dev""#, VERSION_DEV), - &format!(r#""version": "{}""#, version), + &format!(r#""version": "{VERSION_DEV}.0-dev""#), + &format!(r#""version": "{version}""#), ) - .replace(r#""releaseTag": null"#, &format!(r#""releaseTag": "{}""#, release_tag)) + .replace(r#""releaseTag": null"#, &format!(r#""releaseTag": "{release_tag}""#)) .replace(r#""$generated-start": {},"#, "") .replace(",\n \"$generated-end\": {}", "") .replace(r#""enabledApiProposals": [],"#, r#""#); @@ -130,8 +130,8 @@ impl Target { } else { (String::new(), None) }; - let server_path = out_path.join(format!("rust-analyzer{}", exe_suffix)); - let artifact_name = format!("rust-analyzer-{}{}", name, exe_suffix); + let server_path = out_path.join(format!("rust-analyzer{exe_suffix}")); + let artifact_name = format!("rust-analyzer-{name}{exe_suffix}"); Self { name, server_path, symbols_path, artifact_name } } } diff --git a/xtask/src/metrics.rs b/xtask/src/metrics.rs index ebeb873463ea..b6f730dbf126 100644 --- a/xtask/src/metrics.rs +++ b/xtask/src/metrics.rs @@ -87,7 +87,7 @@ impl Metrics { self.measure_analysis_stats_path( sh, bench, - &format!("./target/rustc-perf/collector/benchmarks/{}", bench), + &format!("./target/rustc-perf/collector/benchmarks/{bench}"), ) } fn measure_analysis_stats_path( diff --git a/xtask/src/release.rs b/xtask/src/release.rs index eda8fceef05b..bfbe95569641 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -64,7 +64,7 @@ impl flags::Release { let prev_tag = tags.lines().filter(|line| is_release_tag(line)).last().unwrap(); let contents = changelog::get_changelog(sh, changelog_n, &commit, prev_tag, &today)?; - let path = changelog_dir.join(format!("{}-changelog-{}.adoc", today, changelog_n)); + let path = changelog_dir.join(format!("{today}-changelog-{changelog_n}.adoc")); sh.write_file(&path, &contents)?; Ok(()) diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs index 7df8f89dbe22..4a06bb9ac081 100644 --- a/xtask/src/release/changelog.rs +++ b/xtask/src/release/changelog.rs @@ -25,7 +25,7 @@ pub(crate) fn get_changelog( let line = line.trim_start(); if let Some(pr_num) = parse_pr_number(&line) { let accept = "Accept: application/vnd.github.v3+json"; - let authorization = format!("Authorization: token {}", token); + let authorization = format!("Authorization: token {token}"); let pr_url = "https://api.github.com/repos/rust-lang/rust-analyzer/issues"; // we don't use an HTTPS client or JSON parser to keep the build times low @@ -57,7 +57,7 @@ pub(crate) fn get_changelog( PrKind::Other => &mut others, PrKind::Skip => continue, }; - writeln!(s, "* pr:{}[] {}", pr_num, l.message.as_deref().unwrap_or(&pr_title)).unwrap(); + writeln!(s, "* pr:{pr_num}[] {}", l.message.as_deref().unwrap_or(&pr_title)).unwrap(); } } From a639917b6612692a3c76a47c9b747c8bfbfaec0f Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sun, 25 Dec 2022 05:07:44 +0900 Subject: [PATCH 165/478] fix: handle lifetime variables in `CallableSig` query --- crates/hir-ty/src/lib.rs | 64 ++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs index 48581d4e0a41..41151e4a1167 100644 --- a/crates/hir-ty/src/lib.rs +++ b/crates/hir-ty/src/lib.rs @@ -40,7 +40,7 @@ use std::sync::Arc; use chalk_ir::{ fold::{Shift, TypeFoldable}, interner::HasInterner, - NoSolution, UniverseIndex, + NoSolution, }; use hir_def::{expr::ExprId, type_ref::Rawness, TypeOrConstParamId}; use hir_expand::name; @@ -48,7 +48,9 @@ use itertools::Either; use traits::FnTrait; use utils::Generics; -use crate::{consteval::unknown_const, db::HirDatabase, utils::generics}; +use crate::{ + consteval::unknown_const, db::HirDatabase, infer::unify::InferenceTable, utils::generics, +}; pub use autoderef::autoderef; pub use builder::{ParamKind, TyBuilder}; @@ -533,53 +535,31 @@ pub fn callable_sig_from_fnonce( let fn_once_trait = FnTrait::FnOnce.get_id(db, krate)?; let output_assoc_type = db.trait_data(fn_once_trait).associated_type_by_name(&name![Output])?; + let mut table = InferenceTable::new(db, env.clone()); let b = TyBuilder::trait_ref(db, fn_once_trait); if b.remaining() != 2 { return None; } - let fn_once = b.push(self_ty.clone()).fill_with_bound_vars(DebruijnIndex::INNERMOST, 0).build(); - let kinds = fn_once - .substitution - .iter(Interner) - .skip(1) - .map(|x| { - let vk = match x.data(Interner) { - chalk_ir::GenericArgData::Ty(_) => { - chalk_ir::VariableKind::Ty(chalk_ir::TyVariableKind::General) - } - chalk_ir::GenericArgData::Lifetime(_) => chalk_ir::VariableKind::Lifetime, - chalk_ir::GenericArgData::Const(c) => { - chalk_ir::VariableKind::Const(c.data(Interner).ty.clone()) - } - }; - chalk_ir::WithKind::new(vk, UniverseIndex::ROOT) - }) - .collect::>(); - // FIXME: chalk refuses to solve `>::Output == ^0.1`, so we first solve - // `>` and then replace `^0.0` with the concrete argument tuple. - let trait_env = env.env.clone(); - let obligation = InEnvironment { goal: fn_once.cast(Interner), environment: trait_env }; - let canonical = - Canonical { binders: CanonicalVarKinds::from_iter(Interner, kinds), value: obligation }; - let subst = match db.trait_solve(krate, canonical) { - Some(Solution::Unique(vars)) => vars.value.subst, - _ => return None, - }; - let args = subst.at(Interner, 0).ty(Interner)?; - let params = match args.kind(Interner) { - chalk_ir::TyKind::Tuple(_, subst) => { - subst.iter(Interner).filter_map(|arg| arg.ty(Interner).cloned()).collect::>() - } - _ => return None, - }; + // Register two obligations: + // - Self: FnOnce + // - >::Output == ?ret_ty + let args_ty = table.new_type_var(); + let trait_ref = b.push(self_ty.clone()).push(args_ty.clone()).build(); + let projection = TyBuilder::assoc_type_projection( + db, + output_assoc_type, + Some(trait_ref.substitution.clone()), + ) + .build(); + table.register_obligation(trait_ref.cast(Interner)); + let ret_ty = table.normalize_projection_ty(projection); - let fn_once = - TyBuilder::trait_ref(db, fn_once_trait).push(self_ty.clone()).push(args.clone()).build(); - let projection = - TyBuilder::assoc_type_projection(db, output_assoc_type, Some(fn_once.substitution)).build(); + let ret_ty = table.resolve_completely(ret_ty); + let args_ty = table.resolve_completely(args_ty); - let ret_ty = db.normalize_projection(projection, env); + let params = + args_ty.as_tuple()?.iter(Interner).map(|it| it.assert_ty_ref(Interner)).cloned().collect(); Some(CallableSig::from_params_and_return(params, ret_ty, false, Safety::Safe)) } From b8f5115b847252c4cbf9b02a83e5c0e788763e1e Mon Sep 17 00:00:00 2001 From: Overpeek Date: Sun, 25 Dec 2022 02:47:16 +0200 Subject: [PATCH 166/478] fix: generate delegate async methods --- .../ide-assists/src/handlers/generate_delegate_methods.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/ide-assists/src/handlers/generate_delegate_methods.rs b/crates/ide-assists/src/handlers/generate_delegate_methods.rs index ceae80755037..cfe0fb3f4fb3 100644 --- a/crates/ide-assists/src/handlers/generate_delegate_methods.rs +++ b/crates/ide-assists/src/handlers/generate_delegate_methods.rs @@ -104,9 +104,11 @@ pub(crate) fn generate_delegate_methods(acc: &mut Assists, ctx: &AssistContext<' make::name_ref(&method_name.to_string()), arg_list, ); - let body = make::block_expr([], Some(tail_expr)); let ret_type = method_source.ret_type(); let is_async = method_source.async_token().is_some(); + let tail_expr_finished = + if is_async { make::expr_await(tail_expr) } else { tail_expr }; + let body = make::block_expr([], Some(tail_expr_finished)); let f = make::fn_(vis, name, type_params, params, body, ret_type, is_async) .indent(ast::edit::IndentLevel(1)) .clone_for_update(); @@ -306,7 +308,7 @@ struct Person { impl Person { $0pub(crate) async fn age(&'a mut self, ty: T, arg: J) -> T { - self.age.age(ty, arg) + self.age.age(ty, arg).await } }"#, ); From 0e5fcb7b7f13c30668637568e9eb11ce0672a5ed Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Sat, 24 Dec 2022 23:47:14 -0600 Subject: [PATCH 167/478] move mutex_atomic to clippy::restriction --- clippy_lints/src/mutex_atomic.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/mutex_atomic.rs b/clippy_lints/src/mutex_atomic.rs index 09cb53331763..45bb217979aa 100644 --- a/clippy_lints/src/mutex_atomic.rs +++ b/clippy_lints/src/mutex_atomic.rs @@ -39,7 +39,7 @@ declare_clippy_lint! { /// ``` #[clippy::version = "pre 1.29.0"] pub MUTEX_ATOMIC, - nursery, + restriction, "using a mutex where an atomic value could be used instead" } From d3dbf9c194d0badc7c340ae012069f67d55e4753 Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Sat, 24 Dec 2022 16:09:08 -0500 Subject: [PATCH 168/478] Moar linting: needless_borrow, let_unit_value, ... * There are a few needless borrows that don't seem to be needed. I even did a quick assembly comparison and posted a q to stackoveflow on it. See [here](https://stackoverflow.com/questions/74910196/advantages-of-pass-by-ref-val-with-impl-intoiteratoritem-impl-asrefstr) * removed several `let _ = ...` when they don't look necessary (even a few ones that were not suggested by clippy (?)) * there were a few `then(|| ctor{})` that clippy suggested to replace with `then_some(ctor{})` -- seems reasonable? * some unneeded assignment+return - keep the code a bit leaner * a few `writeln!` instead of `write!`, or even consolidate write! * a nice optimization to use `ch.is_ascii_digit` instead of `ch.is_digit(10)` --- crates/flycheck/src/lib.rs | 4 ++-- crates/parser/src/grammar.rs | 6 +++--- crates/parser/src/shortcuts.rs | 4 ++-- crates/parser/src/tests.rs | 6 ++---- crates/proc-macro-api/src/process.rs | 2 +- crates/proc-macro-test/build.rs | 2 +- crates/syntax/src/ast/prec.rs | 6 ++---- crates/syntax/src/ptr.rs | 2 +- crates/syntax/src/validation.rs | 2 +- crates/test-utils/src/bench_fixture.rs | 4 ++-- crates/test-utils/src/lib.rs | 2 +- crates/toolchain/src/lib.rs | 2 +- xtask/src/install.rs | 2 +- xtask/src/release.rs | 2 +- xtask/src/release/changelog.rs | 2 +- 15 files changed, 22 insertions(+), 26 deletions(-) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index b3e7443d1c1c..8605379620ba 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -297,11 +297,11 @@ impl FlycheckActor { let mut cmd = Command::new(toolchain::cargo()); cmd.arg(command); cmd.current_dir(&self.root); - cmd.args(&["--workspace", "--message-format=json", "--manifest-path"]) + cmd.args(["--workspace", "--message-format=json", "--manifest-path"]) .arg(self.root.join("Cargo.toml").as_os_str()); for target in target_triples { - cmd.args(&["--target", target.as_str()]); + cmd.args(["--target", target.as_str()]); } if *all_targets { cmd.arg("--all-targets"); diff --git a/crates/parser/src/grammar.rs b/crates/parser/src/grammar.rs index b7468329610a..485b612f0818 100644 --- a/crates/parser/src/grammar.rs +++ b/crates/parser/src/grammar.rs @@ -51,7 +51,7 @@ pub(crate) mod entry { use super::*; pub(crate) fn vis(p: &mut Parser<'_>) { - let _ = opt_visibility(p, false); + opt_visibility(p, false); } pub(crate) fn block(p: &mut Parser<'_>) { @@ -70,10 +70,10 @@ pub(crate) mod entry { types::type_(p); } pub(crate) fn expr(p: &mut Parser<'_>) { - let _ = expressions::expr(p); + expressions::expr(p); } pub(crate) fn path(p: &mut Parser<'_>) { - let _ = paths::type_path(p); + paths::type_path(p); } pub(crate) fn item(p: &mut Parser<'_>) { items::item_or_macro(p, true); diff --git a/crates/parser/src/shortcuts.rs b/crates/parser/src/shortcuts.rs index 4b805faddcba..2be4050d1357 100644 --- a/crates/parser/src/shortcuts.rs +++ b/crates/parser/src/shortcuts.rs @@ -80,8 +80,8 @@ impl<'a> LexedStr<'a> { State::PendingEnter | State::Normal => unreachable!(), } - let is_eof = builder.pos == builder.lexed.len(); - is_eof + // is_eof? + builder.pos == builder.lexed.len() } } diff --git a/crates/parser/src/tests.rs b/crates/parser/src/tests.rs index caf1a3e83cb9..c1b4e9a7d8ae 100644 --- a/crates/parser/src/tests.rs +++ b/crates/parser/src/tests.rs @@ -93,14 +93,12 @@ fn parse(entry: TopEntryPoint, text: &str) -> (String, bool) { crate::StrStep::Token { kind, text } => { assert!(depth > 0); len += text.len(); - write!(buf, "{indent}").unwrap(); - write!(buf, "{kind:?} {text:?}\n").unwrap(); + writeln!(buf, "{indent}{kind:?} {text:?}").unwrap(); } crate::StrStep::Enter { kind } => { assert!(depth > 0 || len == 0); depth += 1; - write!(buf, "{indent}").unwrap(); - write!(buf, "{kind:?}\n").unwrap(); + writeln!(buf, "{indent}{kind:?}").unwrap(); indent.push_str(" "); } crate::StrStep::Exit => { diff --git a/crates/proc-macro-api/src/process.rs b/crates/proc-macro-api/src/process.rs index c4018d3b39e7..54dcb17f4e8b 100644 --- a/crates/proc-macro-api/src/process.rs +++ b/crates/proc-macro-api/src/process.rs @@ -67,7 +67,7 @@ impl Process { args: impl IntoIterator>, ) -> io::Result { let args: Vec = args.into_iter().map(|s| s.as_ref().into()).collect(); - let child = JodChild(mk_child(&path, &args)?); + let child = JodChild(mk_child(&path, args)?); Ok(Process { child }) } diff --git a/crates/proc-macro-test/build.rs b/crates/proc-macro-test/build.rs index 340e9f93ed6c..19a5caa4ccda 100644 --- a/crates/proc-macro-test/build.rs +++ b/crates/proc-macro-test/build.rs @@ -63,7 +63,7 @@ fn main() { }; cmd.current_dir(&staging_dir) - .args(&["build", "-p", "proc-macro-test-impl", "--message-format", "json"]) + .args(["build", "-p", "proc-macro-test-impl", "--message-format", "json"]) // Explicit override the target directory to avoid using the same one which the parent // cargo is using, or we'll deadlock. // This can happen when `CARGO_TARGET_DIR` is set or global config forces all cargo diff --git a/crates/syntax/src/ast/prec.rs b/crates/syntax/src/ast/prec.rs index ac7ef45c1dee..c118ef063593 100644 --- a/crates/syntax/src/ast/prec.rs +++ b/crates/syntax/src/ast/prec.rs @@ -119,7 +119,7 @@ impl Expr { fn binding_power(&self) -> (u8, u8) { use ast::{ArithOp::*, BinaryOp::*, Expr::*, LogicOp::*}; - let dps = match self { + match self { // (0, 0) -- paren-like/nullary // (0, N) -- prefix // (N, 0) -- postfix @@ -170,9 +170,7 @@ impl Expr { ArrayExpr(_) | TupleExpr(_) | Literal(_) | PathExpr(_) | ParenExpr(_) | IfExpr(_) | WhileExpr(_) | ForExpr(_) | LoopExpr(_) | MatchExpr(_) | BlockExpr(_) | RecordExpr(_) | UnderscoreExpr(_) => (0, 0), - }; - - dps + } } fn is_paren_like(&self) -> bool { diff --git a/crates/syntax/src/ptr.rs b/crates/syntax/src/ptr.rs index a886972fff96..1d4a89201ae4 100644 --- a/crates/syntax/src/ptr.rs +++ b/crates/syntax/src/ptr.rs @@ -82,7 +82,7 @@ impl AstPtr { /// Like `SyntaxNodePtr::cast` but the trait bounds work out. pub fn try_from_raw(raw: SyntaxNodePtr) -> Option> { - N::can_cast(raw.kind()).then(|| AstPtr { raw, _ty: PhantomData }) + N::can_cast(raw.kind()).then_some(AstPtr { raw, _ty: PhantomData }) } } diff --git a/crates/syntax/src/validation.rs b/crates/syntax/src/validation.rs index 1eea2346451d..fb2381110bfe 100644 --- a/crates/syntax/src/validation.rs +++ b/crates/syntax/src/validation.rs @@ -196,7 +196,7 @@ pub(crate) fn validate_block_structure(root: &SyntaxNode) { fn validate_numeric_name(name_ref: Option, errors: &mut Vec) { if let Some(int_token) = int_token(name_ref) { - if int_token.text().chars().any(|c| !c.is_digit(10)) { + if int_token.text().chars().any(|c| !c.is_ascii_digit()) { errors.push(SyntaxError::new( "Tuple (struct) field access is only allowed through \ decimal integers with no underscores or suffix", diff --git a/crates/test-utils/src/bench_fixture.rs b/crates/test-utils/src/bench_fixture.rs index 979156263de1..9296fd2e6835 100644 --- a/crates/test-utils/src/bench_fixture.rs +++ b/crates/test-utils/src/bench_fixture.rs @@ -36,10 +36,10 @@ struct S{} {{ pub fn glorious_old_parser() -> String { let path = project_root().join("bench_data/glorious_old_parser"); - fs::read_to_string(&path).unwrap() + fs::read_to_string(path).unwrap() } pub fn numerous_macro_rules() -> String { let path = project_root().join("bench_data/numerous_macro_rules"); - fs::read_to_string(&path).unwrap() + fs::read_to_string(path).unwrap() } diff --git a/crates/test-utils/src/lib.rs b/crates/test-utils/src/lib.rs index 74468ea750d9..ec3bf2140511 100644 --- a/crates/test-utils/src/lib.rs +++ b/crates/test-utils/src/lib.rs @@ -396,7 +396,7 @@ pub fn skip_slow_tests() -> bool { eprintln!("ignoring slow test"); } else { let path = project_root().join("./target/.slow_tests_cookie"); - fs::write(&path, ".").unwrap(); + fs::write(path, ".").unwrap(); } should_skip } diff --git a/crates/toolchain/src/lib.rs b/crates/toolchain/src/lib.rs index b05da769161e..67bdad2aadd8 100644 --- a/crates/toolchain/src/lib.rs +++ b/crates/toolchain/src/lib.rs @@ -35,7 +35,7 @@ fn get_path_for_executable(executable_name: &'static str) -> PathBuf { // example: for cargo, this tries ~/.cargo/bin/cargo // It seems that this is a reasonable place to try for cargo, rustc, and rustup let env_var = executable_name.to_ascii_uppercase(); - if let Some(path) = env::var_os(&env_var) { + if let Some(path) = env::var_os(env_var) { return path.into(); } diff --git a/xtask/src/install.rs b/xtask/src/install.rs index ae978d5512e7..83223a551d13 100644 --- a/xtask/src/install.rs +++ b/xtask/src/install.rs @@ -62,7 +62,7 @@ fn fix_path_for_mac(sh: &Shell) -> Result<()> { let mut paths = env::split_paths(&vars).collect::>(); paths.append(&mut vscode_path); let new_paths = env::join_paths(paths).context("build env PATH")?; - sh.set_var("PATH", &new_paths); + sh.set_var("PATH", new_paths); } Ok(()) diff --git a/xtask/src/release.rs b/xtask/src/release.rs index bfbe95569641..4a3069147785 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -65,7 +65,7 @@ impl flags::Release { let contents = changelog::get_changelog(sh, changelog_n, &commit, prev_tag, &today)?; let path = changelog_dir.join(format!("{today}-changelog-{changelog_n}.adoc")); - sh.write_file(&path, &contents)?; + sh.write_file(path, contents)?; Ok(()) } diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs index 4a06bb9ac081..90095df99e89 100644 --- a/xtask/src/release/changelog.rs +++ b/xtask/src/release/changelog.rs @@ -23,7 +23,7 @@ pub(crate) fn get_changelog( let mut others = String::new(); for line in git_log.lines() { let line = line.trim_start(); - if let Some(pr_num) = parse_pr_number(&line) { + if let Some(pr_num) = parse_pr_number(line) { let accept = "Accept: application/vnd.github.v3+json"; let authorization = format!("Authorization: token {token}"); let pr_url = "https://api.github.com/repos/rust-lang/rust-analyzer/issues"; From a1a408367e5c4d8b4a323d5e65d8df4d3d9c44cc Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sun, 25 Dec 2022 23:22:33 +0900 Subject: [PATCH 169/478] Add regression test --- crates/ide/src/syntax_highlighting/tests.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs index 46cc667fc454..2f870d769c0f 100644 --- a/crates/ide/src/syntax_highlighting/tests.rs +++ b/crates/ide/src/syntax_highlighting/tests.rs @@ -1028,6 +1028,26 @@ macro_rules! test {} let _ = analysis.highlight(HL_CONFIG, file_id).unwrap(); } +#[test] +fn highlight_callable_no_crash() { + // regression test for #13838. + let (analysis, file_id) = fixture::file( + r#" +//- minicore: fn, sized +impl FnOnce for &F +where + F: Fn, +{ + type Output = F::Output; +} + +trait Trait {} +fn foo(x: &fn(&dyn Trait)) {} +"#, + ); + let _ = analysis.highlight(HL_CONFIG, file_id).unwrap(); +} + /// Highlights the code given by the `ra_fixture` argument, renders the /// result as HTML, and compares it with the HTML file given as `snapshot`. /// Note that the `snapshot` file is overwritten by the rendered HTML. From 564435f20a740d9d95180f3a053aec36feed765d Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 27 Dec 2022 04:28:02 +0000 Subject: [PATCH 170/478] Suppress suggestions for nested use tree --- compiler/rustc_resolve/src/imports.rs | 44 ++++++++++++------- src/test/ui/imports/bad-import-in-nested.rs | 14 ++++++ .../ui/imports/bad-import-in-nested.stderr | 9 ++++ 3 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 src/test/ui/imports/bad-import-in-nested.rs create mode 100644 src/test/ui/imports/bad-import-in-nested.stderr diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index 4d896b055268..f9121ae046ad 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -475,12 +475,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { errors = vec![]; } if seen_spans.insert(err.span) { - let path = import_path_to_string( - &import.module_path.iter().map(|seg| seg.ident).collect::>(), - &import.kind, - err.span, - ); - errors.push((path, err)); + errors.push((import, err)); prev_root_id = import.root_id; } } else if is_indeterminate { @@ -496,8 +491,10 @@ impl<'a, 'b> ImportResolver<'a, 'b> { suggestion: None, candidate: None, }; + // FIXME: there should be a better way of doing this than + // formatting this as a string then checking for `::` if path.contains("::") { - errors.push((path, err)) + errors.push((import, err)) } } } @@ -507,7 +504,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { } } - fn throw_unresolved_import_error(&self, errors: Vec<(String, UnresolvedImportError)>) { + fn throw_unresolved_import_error(&self, errors: Vec<(&Import<'_>, UnresolvedImportError)>) { if errors.is_empty() { return; } @@ -516,7 +513,17 @@ impl<'a, 'b> ImportResolver<'a, 'b> { const MAX_LABEL_COUNT: usize = 10; let span = MultiSpan::from_spans(errors.iter().map(|(_, err)| err.span).collect()); - let paths = errors.iter().map(|(path, _)| format!("`{}`", path)).collect::>(); + let paths = errors + .iter() + .map(|(import, err)| { + let path = import_path_to_string( + &import.module_path.iter().map(|seg| seg.ident).collect::>(), + &import.kind, + err.span, + ); + format!("`{path}`") + }) + .collect::>(); let msg = format!("unresolved import{} {}", pluralize!(paths.len()), paths.join(", "),); let mut diag = struct_span_err!(self.r.session, span, E0432, "{}", &msg); @@ -525,7 +532,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { diag.note(note); } - for (_, err) in errors.into_iter().take(MAX_LABEL_COUNT) { + for (import, err) in errors.into_iter().take(MAX_LABEL_COUNT) { if let Some(label) = err.label { diag.span_label(err.span, label); } @@ -539,13 +546,16 @@ impl<'a, 'b> ImportResolver<'a, 'b> { } if let Some(candidate) = &err.candidate { - import_candidates( - self.r.session, - &self.r.untracked.source_span, - &mut diag, - Some(err.span), - &candidate, - ) + match &import.kind { + ImportKind::Single { nested: false, .. } => import_candidates( + self.r.session, + &self.r.untracked.source_span, + &mut diag, + Some(err.span), + &candidate, + ), + _ => {} + } } } diff --git a/src/test/ui/imports/bad-import-in-nested.rs b/src/test/ui/imports/bad-import-in-nested.rs new file mode 100644 index 000000000000..5ab0d3d60c9c --- /dev/null +++ b/src/test/ui/imports/bad-import-in-nested.rs @@ -0,0 +1,14 @@ +#![allow(unused)] + +mod A { + pub(crate) type AA = (); +} + +mod C {} + +mod B { + use crate::C::{self, AA}; + //~^ ERROR unresolved import `crate::C::AA` +} + +fn main() {} diff --git a/src/test/ui/imports/bad-import-in-nested.stderr b/src/test/ui/imports/bad-import-in-nested.stderr new file mode 100644 index 000000000000..a107048d579c --- /dev/null +++ b/src/test/ui/imports/bad-import-in-nested.stderr @@ -0,0 +1,9 @@ +error[E0432]: unresolved import `crate::C::AA` + --> $DIR/bad-import-in-nested.rs:10:26 + | +LL | use crate::C::{self, AA}; + | ^^ no `AA` in `C` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0432`. From 9e2536b9389f56386d7f722b403d9730911ee811 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 27 Dec 2022 05:09:33 +0000 Subject: [PATCH 171/478] Note alternative import candidates in nested use tree --- compiler/rustc_resolve/src/diagnostics.rs | 5 ++-- compiler/rustc_resolve/src/imports.rs | 29 +++++++++++++------ src/test/ui/imports/bad-import-in-nested.rs | 17 +++++++++-- .../ui/imports/bad-import-in-nested.stderr | 25 ++++++++++++++-- 4 files changed, 61 insertions(+), 15 deletions(-) diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 37771693417b..2e28dad52c7c 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -2309,7 +2309,7 @@ enum FoundUse { } /// Whether a binding is part of a pattern or a use statement. Used for diagnostics. -enum DiagnosticMode { +pub(crate) enum DiagnosticMode { Normal, /// The binding is part of a pattern Pattern, @@ -2324,6 +2324,7 @@ pub(crate) fn import_candidates( // This is `None` if all placement locations are inside expansions use_placement_span: Option, candidates: &[ImportSuggestion], + mode: DiagnosticMode, ) { show_candidates( session, @@ -2333,7 +2334,7 @@ pub(crate) fn import_candidates( candidates, Instead::Yes, FoundUse::Yes, - DiagnosticMode::Import, + mode, vec![], ); } diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index f9121ae046ad..b3593fc9e471 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -1,6 +1,6 @@ //! A bunch of methods and structures more or less related to resolving imports. -use crate::diagnostics::{import_candidates, Suggestion}; +use crate::diagnostics::{import_candidates, DiagnosticMode, Suggestion}; use crate::Determinacy::{self, *}; use crate::Namespace::*; use crate::{module_to_string, names_to_string, ImportSuggestion}; @@ -402,7 +402,7 @@ struct UnresolvedImportError { label: Option, note: Option, suggestion: Option, - candidate: Option>, + candidates: Option>, } pub struct ImportResolver<'a, 'b> { @@ -489,7 +489,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { label: None, note: None, suggestion: None, - candidate: None, + candidates: None, }; // FIXME: there should be a better way of doing this than // formatting this as a string then checking for `::` @@ -545,15 +545,26 @@ impl<'a, 'b> ImportResolver<'a, 'b> { diag.multipart_suggestion(&msg, suggestions, applicability); } - if let Some(candidate) = &err.candidate { + if let Some(candidates) = &err.candidates { match &import.kind { ImportKind::Single { nested: false, .. } => import_candidates( self.r.session, &self.r.untracked.source_span, &mut diag, Some(err.span), - &candidate, + &candidates, + DiagnosticMode::Import, ), + ImportKind::Single { nested: true, .. } => { + import_candidates( + self.r.session, + &self.r.untracked.source_span, + &mut diag, + None, + &candidates, + DiagnosticMode::Normal, + ); + } _ => {} } } @@ -717,14 +728,14 @@ impl<'a, 'b> ImportResolver<'a, 'b> { String::from("a similar path exists"), Applicability::MaybeIncorrect, )), - candidate: None, + candidates: None, }, None => UnresolvedImportError { span, label: Some(label), note: None, suggestion, - candidate: None, + candidates: None, }, }; return Some(err); @@ -771,7 +782,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { )), note: None, suggestion: None, - candidate: None, + candidates: None, }); } } @@ -953,7 +964,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { label: Some(label), note, suggestion, - candidate: if !parent_suggestion.is_empty() { + candidates: if !parent_suggestion.is_empty() { Some(parent_suggestion) } else { None diff --git a/src/test/ui/imports/bad-import-in-nested.rs b/src/test/ui/imports/bad-import-in-nested.rs index 5ab0d3d60c9c..2e95480ad412 100644 --- a/src/test/ui/imports/bad-import-in-nested.rs +++ b/src/test/ui/imports/bad-import-in-nested.rs @@ -1,14 +1,27 @@ +// edition: 2021 + #![allow(unused)] mod A { pub(crate) type AA = (); + pub(crate) type BB = (); + + mod A2 { + use super::{super::C::D::AA, AA as _}; + //~^ ERROR unresolved import + } } -mod C {} +mod C { + pub mod D {} +} mod B { use crate::C::{self, AA}; - //~^ ERROR unresolved import `crate::C::AA` + //~^ ERROR unresolved import + + use crate::{A, C::BB}; + //~^ ERROR unresolved import } fn main() {} diff --git a/src/test/ui/imports/bad-import-in-nested.stderr b/src/test/ui/imports/bad-import-in-nested.stderr index a107048d579c..855b1e637e97 100644 --- a/src/test/ui/imports/bad-import-in-nested.stderr +++ b/src/test/ui/imports/bad-import-in-nested.stderr @@ -1,9 +1,30 @@ +error[E0432]: unresolved import `super::super::C::D::AA` + --> $DIR/bad-import-in-nested.rs:10:21 + | +LL | use super::{super::C::D::AA, AA as _}; + | ^^^^^^^^^^^^^^^ no `AA` in `C::D` + | + = note: consider importing this type alias instead: + crate::A::AA + error[E0432]: unresolved import `crate::C::AA` - --> $DIR/bad-import-in-nested.rs:10:26 + --> $DIR/bad-import-in-nested.rs:20:26 | LL | use crate::C::{self, AA}; | ^^ no `AA` in `C` + | + = note: consider importing this type alias instead: + crate::A::AA -error: aborting due to previous error +error[E0432]: unresolved import `crate::C::BB` + --> $DIR/bad-import-in-nested.rs:23:20 + | +LL | use crate::{A, C::BB}; + | ^^^^^ no `BB` in `C` + | + = note: consider importing this type alias instead: + crate::A::BB + +error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0432`. From d2404d6dca59d34d5b9f0c66b425b08229f20f4b Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 27 Dec 2022 07:05:45 +0000 Subject: [PATCH 172/478] Dont clobber `as ..` rename in import suggestion --- compiler/rustc_resolve/src/diagnostics.rs | 9 ++++++- compiler/rustc_resolve/src/imports.rs | 6 +++-- src/test/ui/imports/bad-import-with-rename.rs | 16 ++++++++++++ .../ui/imports/bad-import-with-rename.stderr | 25 +++++++++++++++++++ .../inaccessible-test-modules.stderr | 4 +-- 5 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/test/ui/imports/bad-import-with-rename.rs create mode 100644 src/test/ui/imports/bad-import-with-rename.stderr diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 2e28dad52c7c..c8b96aae7a69 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -161,6 +161,7 @@ impl<'a> Resolver<'a> { found_use, DiagnosticMode::Normal, path, + None, ); err.emit(); } else if let Some((span, msg, sugg, appl)) = suggestion { @@ -690,6 +691,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Pattern, vec![], + None, ); } err @@ -1344,6 +1346,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Normal, vec![], + None, ); if macro_kind == MacroKind::Derive && (ident.name == sym::Send || ident.name == sym::Sync) { @@ -2325,6 +2328,7 @@ pub(crate) fn import_candidates( use_placement_span: Option, candidates: &[ImportSuggestion], mode: DiagnosticMode, + append: Option<&str>, ) { show_candidates( session, @@ -2336,6 +2340,7 @@ pub(crate) fn import_candidates( FoundUse::Yes, mode, vec![], + append, ); } @@ -2353,10 +2358,12 @@ fn show_candidates( found_use: FoundUse, mode: DiagnosticMode, path: Vec, + append: Option<&str>, ) { if candidates.is_empty() { return; } + let append = append.unwrap_or(""); let mut accessible_path_strings: Vec<(String, &str, Option, &Option)> = Vec::new(); @@ -2417,7 +2424,7 @@ fn show_candidates( // produce an additional newline to separate the new use statement // from the directly following item. let additional_newline = if let FoundUse::Yes = found_use { "" } else { "\n" }; - candidate.0 = format!("{}{};\n{}", add_use, &candidate.0, additional_newline); + candidate.0 = format!("{add_use}{}{append};\n{additional_newline}", &candidate.0); } err.span_suggestions( diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index b3593fc9e471..d99c1cb6d3cb 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -547,15 +547,16 @@ impl<'a, 'b> ImportResolver<'a, 'b> { if let Some(candidates) = &err.candidates { match &import.kind { - ImportKind::Single { nested: false, .. } => import_candidates( + ImportKind::Single { nested: false, source, target, .. } => import_candidates( self.r.session, &self.r.untracked.source_span, &mut diag, Some(err.span), &candidates, DiagnosticMode::Import, + (source != target).then(|| format!(" as {target}")).as_deref(), ), - ImportKind::Single { nested: true, .. } => { + ImportKind::Single { nested: true, source, target, .. } => { import_candidates( self.r.session, &self.r.untracked.source_span, @@ -563,6 +564,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { None, &candidates, DiagnosticMode::Normal, + (source != target).then(|| format!(" as {target}")).as_deref(), ); } _ => {} diff --git a/src/test/ui/imports/bad-import-with-rename.rs b/src/test/ui/imports/bad-import-with-rename.rs new file mode 100644 index 000000000000..ffe56916f92f --- /dev/null +++ b/src/test/ui/imports/bad-import-with-rename.rs @@ -0,0 +1,16 @@ +mod A { + pub type B = (); + pub type B2 = (); +} + +mod C { + use crate::D::B as _; + //~^ ERROR unresolved import `crate::D::B` + + use crate::D::B2; + //~^ ERROR unresolved import `crate::D::B2` +} + +mod D {} + +fn main() {} diff --git a/src/test/ui/imports/bad-import-with-rename.stderr b/src/test/ui/imports/bad-import-with-rename.stderr new file mode 100644 index 000000000000..cace2a7a51c8 --- /dev/null +++ b/src/test/ui/imports/bad-import-with-rename.stderr @@ -0,0 +1,25 @@ +error[E0432]: unresolved import `crate::D::B` + --> $DIR/bad-import-with-rename.rs:7:9 + | +LL | use crate::D::B as _; + | ^^^^^^^^^^^^^^^^ no `B` in `D` + | +help: consider importing this type alias instead + | +LL | use A::B as _; + | ~~~~~~~~~~ + +error[E0432]: unresolved import `crate::D::B2` + --> $DIR/bad-import-with-rename.rs:10:9 + | +LL | use crate::D::B2; + | ^^^^^^^^^^^^ no `B2` in `D` + | +help: consider importing this type alias instead + | +LL | use A::B2; + | ~~~~~~ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0432`. diff --git a/src/test/ui/test-attrs/inaccessible-test-modules.stderr b/src/test/ui/test-attrs/inaccessible-test-modules.stderr index 0c16ecd4c862..17ea648aad6a 100644 --- a/src/test/ui/test-attrs/inaccessible-test-modules.stderr +++ b/src/test/ui/test-attrs/inaccessible-test-modules.stderr @@ -19,8 +19,8 @@ LL | use test as y; | ~~~~ help: consider importing this module instead | -LL | use test::test; - | ~~~~~~~~~~~ +LL | use test::test as y; + | ~~~~~~~~~~~~~~~~ error: aborting due to 2 previous errors From 050bc95ce2b23b034d5f41e5c3a8c6e627dfd52a Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 27 Dec 2022 07:17:22 +0000 Subject: [PATCH 173/478] Fix some totally useless suggestions --- compiler/rustc_resolve/src/imports.rs | 2 +- .../ui/hygiene/extern-prelude-from-opaque-fail.stderr | 5 +---- src/test/ui/test-attrs/inaccessible-test-modules.stderr | 9 +-------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index d99c1cb6d3cb..0a2a737e1a45 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -896,7 +896,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { let resolutions = resolutions.as_ref().into_iter().flat_map(|r| r.iter()); let names = resolutions .filter_map(|(BindingKey { ident: i, .. }, resolution)| { - if *i == ident { + if i.name == ident.name { return None; } // Never suggest the same name match *resolution.borrow() { diff --git a/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr b/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr index e89c19b5881e..f1f4caee3619 100644 --- a/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr +++ b/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr @@ -2,10 +2,7 @@ error[E0432]: unresolved import `my_core` --> $DIR/extern-prelude-from-opaque-fail.rs:20:9 | LL | use my_core; - | ^^^^^^^ - | | - | no `my_core` in the root - | help: a similar name exists in the module: `my_core` + | ^^^^^^^ no `my_core` in the root error[E0432]: unresolved import `my_core` --> $DIR/extern-prelude-from-opaque-fail.rs:7:13 diff --git a/src/test/ui/test-attrs/inaccessible-test-modules.stderr b/src/test/ui/test-attrs/inaccessible-test-modules.stderr index 17ea648aad6a..a45c5bd45880 100644 --- a/src/test/ui/test-attrs/inaccessible-test-modules.stderr +++ b/src/test/ui/test-attrs/inaccessible-test-modules.stderr @@ -2,10 +2,7 @@ error[E0432]: unresolved import `main` --> $DIR/inaccessible-test-modules.rs:5:5 | LL | use main as x; - | ----^^^^^ - | | - | no `main` in the root - | help: a similar name exists in the module: `main` + | ^^^^^^^^^ no `main` in the root error[E0432]: unresolved import `test` --> $DIR/inaccessible-test-modules.rs:6:5 @@ -13,10 +10,6 @@ error[E0432]: unresolved import `test` LL | use test as y; | ^^^^^^^^^ no `test` in the root | -help: a similar name exists in the module - | -LL | use test as y; - | ~~~~ help: consider importing this module instead | LL | use test::test as y; From 47c6c8e2f3393fc2094bd6ab0f6f8ad426f32d29 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sat, 24 Dec 2022 17:57:50 +0900 Subject: [PATCH 174/478] Extract multi-character punct handling into a method --- crates/mbe/src/expander/matcher.rs | 53 +++++++----------------------- crates/mbe/src/tt_iter.rs | 43 +++++++++++++++++++++++- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index b6c5c1026ee0..d7a745860cc3 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -837,7 +837,7 @@ impl<'a> TtIter<'a> { }, Err(_) => false, }, - Separator::Puncts(lhss) if idx < lhss.len() => match fork.expect_punct() { + Separator::Puncts(lhss) if idx < lhss.len() => match fork.expect_single_punct() { Ok(rhs) => rhs.char == lhss[idx].char, Err(_) => false, }, @@ -850,52 +850,21 @@ impl<'a> TtIter<'a> { } fn expect_tt(&mut self) -> Result { - match self.peek_n(0) { - Some(tt::TokenTree::Leaf(tt::Leaf::Punct(punct))) if punct.char == '\'' => { - return self.expect_lifetime(); + if let Some(tt::TokenTree::Leaf(tt::Leaf::Punct(punct))) = self.peek_n(0) { + if punct.char == '\'' { + self.expect_lifetime() + } else { + let puncts = self.expect_glued_punct()?; + let token_trees = puncts.into_iter().map(|p| tt::Leaf::Punct(p).into()).collect(); + Ok(tt::TokenTree::Subtree(tt::Subtree { delimiter: None, token_trees })) } - _ => (), - } - - let tt = self.next().ok_or(())?.clone(); - let punct = match tt { - tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) if punct.spacing == tt::Spacing::Joint => { - punct - } - _ => return Ok(tt), - }; - - let (second, third) = match (self.peek_n(0), self.peek_n(1)) { - ( - Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p2))), - Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p3))), - ) if p2.spacing == tt::Spacing::Joint => (p2.char, Some(p3.char)), - (Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p2))), _) => (p2.char, None), - _ => return Ok(tt), - }; - - match (punct.char, second, third) { - ('.', '.', Some('.' | '=')) | ('<', '<', Some('=')) | ('>', '>', Some('=')) => { - let tt2 = self.next().unwrap().clone(); - let tt3 = self.next().unwrap().clone(); - Ok(tt::Subtree { delimiter: None, token_trees: vec![tt, tt2, tt3] }.into()) - } - ('-' | '!' | '*' | '/' | '&' | '%' | '^' | '+' | '<' | '=' | '>' | '|', '=', _) - | ('-' | '=' | '>', '>', _) - | (':', ':', _) - | ('.', '.', _) - | ('&', '&', _) - | ('<', '<', _) - | ('|', '|', _) => { - let tt2 = self.next().unwrap().clone(); - Ok(tt::Subtree { delimiter: None, token_trees: vec![tt, tt2] }.into()) - } - _ => Ok(tt), + } else { + self.next().ok_or(()).cloned() } } fn expect_lifetime(&mut self) -> Result { - let punct = self.expect_punct()?; + let punct = self.expect_single_punct()?; if punct.char != '\'' { return Err(()); } diff --git a/crates/mbe/src/tt_iter.rs b/crates/mbe/src/tt_iter.rs index 7aceb676c749..a08eb2f5543d 100644 --- a/crates/mbe/src/tt_iter.rs +++ b/crates/mbe/src/tt_iter.rs @@ -1,6 +1,7 @@ //! A "Parser" structure for token trees. We use this when parsing a declarative //! macro definition into a list of patterns and templates. +use smallvec::{smallvec, SmallVec}; use syntax::SyntaxKind; use tt::buffer::TokenBuffer; @@ -80,13 +81,53 @@ impl<'a> TtIter<'a> { } } - pub(crate) fn expect_punct(&mut self) -> Result<&'a tt::Punct, ()> { + pub(crate) fn expect_single_punct(&mut self) -> Result<&'a tt::Punct, ()> { match self.expect_leaf()? { tt::Leaf::Punct(it) => Ok(it), _ => Err(()), } } + pub(crate) fn expect_glued_punct(&mut self) -> Result, ()> { + let tt::TokenTree::Leaf(tt::Leaf::Punct(first)) = self.next().ok_or(())?.clone() else { + return Err(()); + }; + + if first.spacing == tt::Spacing::Alone { + return Ok(smallvec![first]); + } + + let (second, third) = match (self.peek_n(0), self.peek_n(1)) { + ( + Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p2))), + Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p3))), + ) if p2.spacing == tt::Spacing::Joint => (p2, Some(p3)), + (Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p2))), _) => (p2, None), + _ => return Ok(smallvec![first]), + }; + + match (first.char, second.char, third.map(|it| it.char)) { + ('.', '.', Some('.' | '=')) | ('<', '<', Some('=')) | ('>', '>', Some('=')) => { + let puncts = smallvec![first, second.clone(), third.unwrap().clone()]; + let _ = self.next().unwrap(); + let _ = self.next().unwrap(); + Ok(puncts) + } + ('-' | '!' | '*' | '/' | '&' | '%' | '^' | '+' | '<' | '=' | '>' | '|', '=', _) + | ('-' | '=' | '>', '>', _) + | (':', ':', _) + | ('.', '.', _) + | ('&', '&', _) + | ('<', '<', _) + | ('|', '|', _) => { + let puncts = smallvec![first, second.clone()]; + let _ = self.next().unwrap(); + Ok(puncts) + } + _ => Ok(smallvec![first]), + } + } + pub(crate) fn expect_fragment( &mut self, entry_point: parser::PrefixEntryPoint, From ec7148b0919a1d0a3b61a274acb5b6b6619a209e Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Tue, 27 Dec 2022 18:18:18 +0900 Subject: [PATCH 175/478] mbe: split `Op::Leaf` and handle multi-character puncts --- .../hir-def/src/macro_expansion_tests/mbe.rs | 45 ++++++ crates/mbe/src/benchmark.rs | 8 +- crates/mbe/src/expander/matcher.rs | 128 ++++++++++++------ crates/mbe/src/expander/transcriber.rs | 8 +- crates/mbe/src/parser.rs | 44 ++++-- crates/mbe/src/tt_iter.rs | 6 +- 6 files changed, 183 insertions(+), 56 deletions(-) diff --git a/crates/hir-def/src/macro_expansion_tests/mbe.rs b/crates/hir-def/src/macro_expansion_tests/mbe.rs index 457e43925c63..2d5f2a692e5d 100644 --- a/crates/hir-def/src/macro_expansion_tests/mbe.rs +++ b/crates/hir-def/src/macro_expansion_tests/mbe.rs @@ -1630,3 +1630,48 @@ const _: i32 = -0--1--2; "#]], ); } + +#[test] +fn test_punct_without_space() { + // Puncts are "glued" greedily. + check( + r#" +macro_rules! foo { + (: : :) => { "1 1 1" }; + (: ::) => { "1 2" }; + (:: :) => { "2 1" }; + + (: : : :) => { "1 1 1 1" }; + (:: : :) => { "2 1 1" }; + (: :: :) => { "1 2 1" }; + (: : ::) => { "1 1 2" }; + (:: ::) => { "2 2" }; +} + +fn test() { + foo!(:::); + foo!(: :::); + foo!(::::); +} +"#, + expect![[r#" +macro_rules! foo { + (: : :) => { "1 1 1" }; + (: ::) => { "1 2" }; + (:: :) => { "2 1" }; + + (: : : :) => { "1 1 1 1" }; + (:: : :) => { "2 1 1" }; + (: :: :) => { "1 2 1" }; + (: : ::) => { "1 1 2" }; + (:: ::) => { "2 2" }; +} + +fn test() { + "2 1"; + "1 2 1"; + "2 2"; +} +"#]], + ); +} diff --git a/crates/mbe/src/benchmark.rs b/crates/mbe/src/benchmark.rs index 1915c0b6611b..4b7500250187 100644 --- a/crates/mbe/src/benchmark.rs +++ b/crates/mbe/src/benchmark.rs @@ -141,7 +141,13 @@ fn invocation_fixtures(rules: &FxHashMap) -> Vec<(Stri None => (), Some(kind) => panic!("Unhandled kind {kind:?}"), }, - Op::Leaf(leaf) => parent.token_trees.push(leaf.clone().into()), + Op::Literal(it) => parent.token_trees.push(tt::Leaf::from(it.clone()).into()), + Op::Ident(it) => parent.token_trees.push(tt::Leaf::from(it.clone()).into()), + Op::Punct(puncts) => { + for punct in puncts { + parent.token_trees.push(tt::Leaf::from(punct.clone()).into()); + } + } Op::Repeat { tokens, kind, separator } => { let max = 10; let cnt = match kind { diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index d7a745860cc3..8773993a2ed7 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -68,7 +68,7 @@ use crate::{ expander::{Binding, Bindings, ExpandResult, Fragment}, parser::{MetaVarKind, Op, RepeatKind, Separator}, tt_iter::TtIter, - ExpandError, MetaTemplate, + ExpandError, MetaTemplate, ValueResult, }; impl Bindings { @@ -500,18 +500,69 @@ fn match_loop_inner<'t>( } } } - OpDelimited::Op(Op::Leaf(leaf)) => { - if let Err(err) = match_leaf(leaf, &mut src.clone()) { - res.add_err(err); - item.is_error = true; + OpDelimited::Op(Op::Literal(lhs)) => { + if let Ok(rhs) = src.clone().expect_leaf() { + if matches!(rhs, tt::Leaf::Literal(it) if it.text == lhs.text) { + item.dot.next(); + } else { + res.add_err(ExpandError::UnexpectedToken); + item.is_error = true; + } } else { - item.dot.next(); + res.add_err(ExpandError::binding_error(format!("expected literal: `{lhs}`"))); + item.is_error = true; } try_push!(next_items, item); } + OpDelimited::Op(Op::Ident(lhs)) => { + if let Ok(rhs) = src.clone().expect_leaf() { + if matches!(rhs, tt::Leaf::Ident(it) if it.text == lhs.text) { + item.dot.next(); + } else { + res.add_err(ExpandError::UnexpectedToken); + item.is_error = true; + } + } else { + res.add_err(ExpandError::binding_error(format!("expected ident: `{lhs}`"))); + item.is_error = true; + } + try_push!(next_items, item); + } + OpDelimited::Op(Op::Punct(lhs)) => { + let mut fork = src.clone(); + let error = if let Ok(rhs) = fork.expect_glued_punct() { + let first_is_single_quote = rhs[0].char == '\''; + let lhs = lhs.iter().map(|it| it.char); + let rhs = rhs.iter().map(|it| it.char); + if lhs.clone().eq(rhs) { + // HACK: here we use `meta_result` to pass `TtIter` back to caller because + // it might have been advanced multiple times. `ValueResult` is + // insignificant. + item.meta_result = Some((fork, ValueResult::ok(None))); + item.dot.next(); + next_items.push(item); + continue; + } + + if first_is_single_quote { + // If the first punct token is a single quote, that's a part of a lifetime + // ident, not a punct. + ExpandError::UnexpectedToken + } else { + let lhs: SmolStr = lhs.collect(); + ExpandError::binding_error(format!("expected punct: `{lhs}`")) + } + } else { + ExpandError::UnexpectedToken + }; + + res.add_err(error); + item.is_error = true; + error_items.push(item); + } OpDelimited::Op(Op::Ignore { .. } | Op::Index { .. }) => {} OpDelimited::Open => { - if matches!(src.clone().next(), Some(tt::TokenTree::Subtree(..))) { + if matches!(src.peek_n(0), Some(tt::TokenTree::Subtree(..))) { item.dot.next(); try_push!(next_items, item); } @@ -616,21 +667,33 @@ fn match_loop(pattern: &MetaTemplate, src: &tt::Subtree) -> Match { } // Dump all possible `next_items` into `cur_items` for the next iteration. else if !next_items.is_empty() { + if let Some((iter, _)) = next_items[0].meta_result.take() { + // We've matched a possibly "glued" punct. The matched punct (hence + // `meta_result` also) must be the same for all items. + // FIXME: If there are multiple items, it's definitely redundant (and it's hacky! + // `meta_result` isn't supposed to be used this way). + + // We already bumped, so no need to call `.next()` like in the other branch. + src = iter; + for item in next_items.iter_mut() { + item.meta_result = None; + } + } else { + match src.next() { + Some(tt::TokenTree::Subtree(subtree)) => { + stack.push(src.clone()); + src = TtIter::new(subtree); + } + None => { + if let Some(iter) = stack.pop() { + src = iter; + } + } + _ => (), + } + } // Now process the next token cur_items.extend(next_items.drain(..)); - - match src.next() { - Some(tt::TokenTree::Subtree(subtree)) => { - stack.push(src.clone()); - src = TtIter::new(subtree); - } - None => { - if let Some(iter) = stack.pop() { - src = iter; - } - } - _ => (), - } } // Finally, we have the case where we need to call the black-box parser to get some // nonterminal. @@ -663,27 +726,6 @@ fn match_loop(pattern: &MetaTemplate, src: &tt::Subtree) -> Match { } } -fn match_leaf(lhs: &tt::Leaf, src: &mut TtIter<'_>) -> Result<(), ExpandError> { - let rhs = src - .expect_leaf() - .map_err(|()| ExpandError::binding_error(format!("expected leaf: `{lhs}`")))?; - match (lhs, rhs) { - ( - tt::Leaf::Punct(tt::Punct { char: lhs, .. }), - tt::Leaf::Punct(tt::Punct { char: rhs, .. }), - ) if lhs == rhs => Ok(()), - ( - tt::Leaf::Ident(tt::Ident { text: lhs, .. }), - tt::Leaf::Ident(tt::Ident { text: rhs, .. }), - ) if lhs == rhs => Ok(()), - ( - tt::Leaf::Literal(tt::Literal { text: lhs, .. }), - tt::Leaf::Literal(tt::Literal { text: rhs, .. }), - ) if lhs == rhs => Ok(()), - _ => Err(ExpandError::UnexpectedToken), - } -} - fn match_meta_var(kind: MetaVarKind, input: &mut TtIter<'_>) -> ExpandResult> { let fragment = match kind { MetaVarKind::Path => parser::PrefixEntryPoint::Path, @@ -756,10 +798,10 @@ fn collect_vars(collector_fun: &mut impl FnMut(SmolStr), pattern: &MetaTemplate) for op in pattern.iter() { match op { Op::Var { name, .. } => collector_fun(name.clone()), - Op::Leaf(_) => (), Op::Subtree { tokens, .. } => collect_vars(collector_fun, tokens), Op::Repeat { tokens, .. } => collect_vars(collector_fun, tokens), - Op::Ignore { .. } | Op::Index { .. } => {} + Op::Ignore { .. } | Op::Index { .. } | Op::Literal(_) | Op::Ident(_) | Op::Punct(_) => { + } } } } diff --git a/crates/mbe/src/expander/transcriber.rs b/crates/mbe/src/expander/transcriber.rs index cbb59ab8e67b..db0d327bf409 100644 --- a/crates/mbe/src/expander/transcriber.rs +++ b/crates/mbe/src/expander/transcriber.rs @@ -134,7 +134,13 @@ fn expand_subtree( let mut err = None; for op in template.iter() { match op { - Op::Leaf(tt) => arena.push(tt.clone().into()), + Op::Literal(it) => arena.push(tt::Leaf::from(it.clone()).into()), + Op::Ident(it) => arena.push(tt::Leaf::from(it.clone()).into()), + Op::Punct(puncts) => { + for punct in puncts { + arena.push(tt::Leaf::from(punct.clone()).into()); + } + } Op::Subtree { tokens, delimiter } => { let ExpandResult { value: tt, err: e } = expand_subtree(ctx, tokens, *delimiter, arena); diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index 351c359b73c8..c2c702261c4e 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -1,7 +1,7 @@ //! Parser recognizes special macro syntax, `$var` and `$(repeat)*`, in token //! trees. -use smallvec::SmallVec; +use smallvec::{smallvec, SmallVec}; use syntax::SmolStr; use crate::{tt_iter::TtIter, ParseError}; @@ -39,7 +39,7 @@ impl MetaTemplate { let mut src = TtIter::new(tt); let mut res = Vec::new(); - while let Some(first) = src.next() { + while let Some(first) = src.peek_n(0) { let op = next_op(first, &mut src, mode)?; res.push(op); } @@ -54,8 +54,10 @@ pub(crate) enum Op { Ignore { name: SmolStr, id: tt::TokenId }, Index { depth: u32 }, Repeat { tokens: MetaTemplate, kind: RepeatKind, separator: Option }, - Leaf(tt::Leaf), Subtree { tokens: MetaTemplate, delimiter: Option }, + Literal(tt::Literal), + Punct(SmallVec<[tt::Punct; 3]>), + Ident(tt::Ident), } #[derive(Copy, Clone, Debug, PartialEq, Eq)] @@ -124,12 +126,17 @@ enum Mode { Template, } -fn next_op<'a>(first: &tt::TokenTree, src: &mut TtIter<'a>, mode: Mode) -> Result { - let res = match first { - tt::TokenTree::Leaf(leaf @ tt::Leaf::Punct(tt::Punct { char: '$', .. })) => { +fn next_op<'a>( + first_peeked: &tt::TokenTree, + src: &mut TtIter<'a>, + mode: Mode, +) -> Result { + let res = match first_peeked { + tt::TokenTree::Leaf(tt::Leaf::Punct(p @ tt::Punct { char: '$', .. })) => { + src.next().expect("first token already peeked"); // Note that the '$' itself is a valid token inside macro_rules. let second = match src.next() { - None => return Ok(Op::Leaf(leaf.clone())), + None => return Ok(Op::Punct(smallvec![p.clone()])), Some(it) => it, }; match second { @@ -160,7 +167,7 @@ fn next_op<'a>(first: &tt::TokenTree, src: &mut TtIter<'a>, mode: Mode) -> Resul tt::TokenTree::Leaf(leaf) => match leaf { tt::Leaf::Ident(ident) if ident.text == "crate" => { // We simply produce identifier `$crate` here. And it will be resolved when lowering ast to Path. - Op::Leaf(tt::Leaf::from(tt::Ident { text: "$crate".into(), id: ident.id })) + Op::Ident(tt::Ident { text: "$crate".into(), id: ident.id }) } tt::Leaf::Ident(ident) => { let kind = eat_fragment_kind(src, mode)?; @@ -180,7 +187,7 @@ fn next_op<'a>(first: &tt::TokenTree, src: &mut TtIter<'a>, mode: Mode) -> Resul "`$$` is not allowed on the pattern side", )) } - Mode::Template => Op::Leaf(tt::Leaf::Punct(*punct)), + Mode::Template => Op::Punct(smallvec![*punct]), }, tt::Leaf::Punct(_) | tt::Leaf::Literal(_) => { return Err(ParseError::expected("expected ident")) @@ -188,8 +195,25 @@ fn next_op<'a>(first: &tt::TokenTree, src: &mut TtIter<'a>, mode: Mode) -> Resul }, } } - tt::TokenTree::Leaf(tt) => Op::Leaf(tt.clone()), + + tt::TokenTree::Leaf(tt::Leaf::Literal(it)) => { + src.next().expect("first token already peeked"); + Op::Literal(it.clone()) + } + + tt::TokenTree::Leaf(tt::Leaf::Ident(it)) => { + src.next().expect("first token already peeked"); + Op::Ident(it.clone()) + } + + tt::TokenTree::Leaf(tt::Leaf::Punct(_)) => { + // There's at least one punct so this shouldn't fail. + let puncts = src.expect_glued_punct().unwrap(); + Op::Punct(puncts) + } + tt::TokenTree::Subtree(subtree) => { + src.next().expect("first token already peeked"); let tokens = MetaTemplate::parse(subtree, mode)?; Op::Subtree { tokens, delimiter: subtree.delimiter } } diff --git a/crates/mbe/src/tt_iter.rs b/crates/mbe/src/tt_iter.rs index a08eb2f5543d..16387bc896ab 100644 --- a/crates/mbe/src/tt_iter.rs +++ b/crates/mbe/src/tt_iter.rs @@ -88,6 +88,10 @@ impl<'a> TtIter<'a> { } } + /// Returns consecutive `Punct`s that can be glued together. + /// + /// This method currently may return a single quotation, which is part of lifetime ident and + /// conceptually not a punct in the context of mbe. Callers should handle this. pub(crate) fn expect_glued_punct(&mut self) -> Result, ()> { let tt::TokenTree::Leaf(tt::Leaf::Punct(first)) = self.next().ok_or(())?.clone() else { return Err(()); @@ -182,7 +186,7 @@ impl<'a> TtIter<'a> { ExpandResult { value: res, err } } - pub(crate) fn peek_n(&self, n: usize) -> Option<&tt::TokenTree> { + pub(crate) fn peek_n(&self, n: usize) -> Option<&'a tt::TokenTree> { self.inner.as_slice().get(n) } } From 767351fb87688b45eaf1024cff6edf59afcfb8ef Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Tue, 27 Dec 2022 18:33:21 +0900 Subject: [PATCH 176/478] mbe: treat `<-` as one punct --- crates/mbe/src/tt_iter.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/mbe/src/tt_iter.rs b/crates/mbe/src/tt_iter.rs index 16387bc896ab..e216e5658b8d 100644 --- a/crates/mbe/src/tt_iter.rs +++ b/crates/mbe/src/tt_iter.rs @@ -119,6 +119,7 @@ impl<'a> TtIter<'a> { } ('-' | '!' | '*' | '/' | '&' | '%' | '^' | '+' | '<' | '=' | '>' | '|', '=', _) | ('-' | '=' | '>', '>', _) + | ('<', '-', _) | (':', ':', _) | ('.', '.', _) | ('&', '&', _) From 73e7207bfc0dc47f7b54c81c0d2351387ef708fb Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Thu, 22 Dec 2022 16:40:50 +0100 Subject: [PATCH 177/478] Fix ui constant tests for big-endian platforms A number of tests under ui/const-ptr and ui/consts are currently failing on big-endian platforms as the binary encoding of some constants is hard-coded in the stderr test files. Fix this by providing a normalize-stderr-test rule that strips out the raw bytes hex dump, so the comparison can be done in an endianness-independent manner. Note that in most cases, this means the tests are now also independent of word size, so the 32bit and 64bit cases can be re-unified. To keep tests that verify the details of those raw bytes dumps, a new test case raw-bytes.rs performs the tests where the hex dumps were stripped out a second time, but only on little- endian platforms. In addition, src/test/ui/const-ptr/forbidden_slices.rs exposes an endian-specific difference in this diagnostic output: constructing invalid value at .[0]: encountered 0x11, but expected a boolean depending on which byte of D0 is not a boolean value (0 or 1). Fixed this by choosing a value of D0 that differs from 0 or 1 in all bytes. Fixes part of https://github.com/rust-lang/rust/issues/105383. --- .../const-ptr/forbidden_slices.64bit.stderr | 240 ------- src/test/ui/const-ptr/forbidden_slices.rs | 7 +- ...s.32bit.stderr => forbidden_slices.stderr} | 64 +- .../consts/const-eval/raw-bytes.32bit.stderr | 596 ++++++++++++++++++ .../consts/const-eval/raw-bytes.64bit.stderr | 596 ++++++++++++++++++ src/test/ui/consts/const-eval/raw-bytes.rs | 263 ++++++++ .../ui/consts/const-eval/ub-enum.32bit.stderr | 46 +- .../ui/consts/const-eval/ub-enum.64bit.stderr | 46 +- src/test/ui/consts/const-eval/ub-enum.rs | 3 + .../consts/const-eval/ub-nonnull.64bit.stderr | 81 --- src/test/ui/consts/const-eval/ub-nonnull.rs | 4 +- ...nonnull.32bit.stderr => ub-nonnull.stderr} | 40 +- .../consts/const-eval/ub-ref-ptr.64bit.stderr | 186 ------ src/test/ui/consts/const-eval/ub-ref-ptr.rs | 4 +- ...ref-ptr.32bit.stderr => ub-ref-ptr.stderr} | 72 +-- .../const-eval/ub-uninhabit.64bit.stderr | 32 - src/test/ui/consts/const-eval/ub-uninhabit.rs | 4 +- ...habit.32bit.stderr => ub-uninhabit.stderr} | 14 +- .../const-eval/ub-wide-ptr.64bit.stderr | 297 --------- src/test/ui/consts/const-eval/ub-wide-ptr.rs | 5 +- ...de-ptr.32bit.stderr => ub-wide-ptr.stderr} | 136 ++-- src/test/ui/consts/issue-83182.64bit.stderr | 15 - src/test/ui/consts/issue-83182.rs | 4 +- ...-83182.32bit.stderr => issue-83182.stderr} | 6 +- src/test/ui/consts/std/alloc.32bit.stderr | 12 +- src/test/ui/consts/std/alloc.64bit.stderr | 12 +- src/test/ui/consts/std/alloc.rs | 3 + .../consts/validate_never_arrays.64bit.stderr | 36 -- src/test/ui/consts/validate_never_arrays.rs | 4 +- ...it.stderr => validate_never_arrays.stderr} | 18 +- 30 files changed, 1716 insertions(+), 1130 deletions(-) delete mode 100644 src/test/ui/const-ptr/forbidden_slices.64bit.stderr rename src/test/ui/const-ptr/{forbidden_slices.32bit.stderr => forbidden_slices.stderr} (84%) create mode 100644 src/test/ui/consts/const-eval/raw-bytes.32bit.stderr create mode 100644 src/test/ui/consts/const-eval/raw-bytes.64bit.stderr create mode 100644 src/test/ui/consts/const-eval/raw-bytes.rs delete mode 100644 src/test/ui/consts/const-eval/ub-nonnull.64bit.stderr rename src/test/ui/consts/const-eval/{ub-nonnull.32bit.stderr => ub-nonnull.stderr} (77%) delete mode 100644 src/test/ui/consts/const-eval/ub-ref-ptr.64bit.stderr rename src/test/ui/consts/const-eval/{ub-ref-ptr.32bit.stderr => ub-ref-ptr.stderr} (82%) delete mode 100644 src/test/ui/consts/const-eval/ub-uninhabit.64bit.stderr rename src/test/ui/consts/const-eval/{ub-uninhabit.32bit.stderr => ub-uninhabit.stderr} (80%) delete mode 100644 src/test/ui/consts/const-eval/ub-wide-ptr.64bit.stderr rename src/test/ui/consts/const-eval/{ub-wide-ptr.32bit.stderr => ub-wide-ptr.stderr} (78%) delete mode 100644 src/test/ui/consts/issue-83182.64bit.stderr rename src/test/ui/consts/{issue-83182.32bit.stderr => issue-83182.stderr} (74%) delete mode 100644 src/test/ui/consts/validate_never_arrays.64bit.stderr rename src/test/ui/consts/{validate_never_arrays.32bit.stderr => validate_never_arrays.stderr} (73%) diff --git a/src/test/ui/const-ptr/forbidden_slices.64bit.stderr b/src/test/ui/const-ptr/forbidden_slices.64bit.stderr deleted file mode 100644 index f4f9fe69516a..000000000000 --- a/src/test/ui/const-ptr/forbidden_slices.64bit.stderr +++ /dev/null @@ -1,240 +0,0 @@ -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL - | - = note: dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance) - | -note: inside `std::slice::from_raw_parts::<'_, u32>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `S0` - --> $DIR/forbidden_slices.rs:18:34 - | -LL | pub static S0: &[u32] = unsafe { from_raw_parts(ptr::null(), 0) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL - | - = note: dereferencing pointer failed: null pointer is a dangling pointer (it has no provenance) - | -note: inside `std::slice::from_raw_parts::<'_, ()>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `S1` - --> $DIR/forbidden_slices.rs:19:33 - | -LL | pub static S1: &[()] = unsafe { from_raw_parts(ptr::null(), 0) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL - | - = note: dereferencing pointer failed: allocN has size 4, so pointer to 8 bytes starting at offset 0 is out-of-bounds - | -note: inside `std::slice::from_raw_parts::<'_, u32>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `S2` - --> $DIR/forbidden_slices.rs:22:34 - | -LL | pub static S2: &[u32] = unsafe { from_raw_parts(&D0, 2) }; - | ^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:25:1 - | -LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }; - | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:27:1 - | -LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size_of::<&u32>()) }; - | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 08 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:29:1 - | -LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) }; - | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:32:1 - | -LL | pub static S7: &[u16] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[1]: encountered uninitialized bytes - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID+0x2╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL - | - = note: dereferencing pointer failed: allocN has size 8, so pointer to 8 bytes starting at offset 1 is out-of-bounds - | -note: inside `std::slice::from_raw_parts::<'_, u64>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `S8` - --> $DIR/forbidden_slices.rs:43:5 - | -LL | from_raw_parts(ptr, 1) - | ^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: out-of-bounds offset_from: null pointer is a dangling pointer (it has no provenance) - | -note: inside `ptr::const_ptr::::sub_ptr` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `from_ptr_range::<'_, u32>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `R0` - --> $DIR/forbidden_slices.rs:46:34 - | -LL | pub static R0: &[u32] = unsafe { from_ptr_range(ptr::null()..ptr::null()) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: the evaluated program panicked at 'assertion failed: 0 < pointee_size && pointee_size <= isize::MAX as usize', $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | -note: inside `ptr::const_ptr::::sub_ptr` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `from_ptr_range::<'_, ()>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `R1` - --> $DIR/forbidden_slices.rs:47:33 - | -LL | pub static R1: &[()] = unsafe { from_ptr_range(ptr::null()..ptr::null()) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - = note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: out-of-bounds pointer arithmetic: allocN has size 4, so pointer to 8 bytes starting at offset 0 is out-of-bounds - | -note: inside `ptr::const_ptr::::offset` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `ptr::const_ptr::::add` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `R2` - --> $DIR/forbidden_slices.rs:50:25 - | -LL | from_ptr_range(ptr..ptr.add(2)) - | ^^^^^^^^^^ - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:52:1 - | -LL | pub static R4: &[u8] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:57:1 - | -LL | pub static R5: &[u8] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 08 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:62:1 - | -LL | pub static R6: &[bool] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL - | - = note: accessing memory with alignment 1, but alignment 2 is required - | -note: inside `std::slice::from_raw_parts::<'_, u16>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `from_ptr_range::<'_, u16>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `R7` - --> $DIR/forbidden_slices.rs:69:5 - | -LL | from_ptr_range(ptr..ptr.add(4)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: out-of-bounds pointer arithmetic: allocN has size 8, so pointer to 8 bytes starting at offset 1 is out-of-bounds - | -note: inside `ptr::const_ptr::::offset` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `ptr::const_ptr::::add` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `R8` - --> $DIR/forbidden_slices.rs:73:25 - | -LL | from_ptr_range(ptr..ptr.add(1)) - | ^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: `ptr_offset_from_unsigned` called on pointers into different allocations - | -note: inside `ptr::const_ptr::::sub_ptr` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `from_ptr_range::<'_, u32>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `R9` - --> $DIR/forbidden_slices.rs:78:34 - | -LL | pub static R9: &[u32] = unsafe { from_ptr_range(&D0..(&D0 as *const u32).add(1)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: could not evaluate static initializer - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | - = note: `ptr_offset_from_unsigned` called on pointers into different allocations - | -note: inside `ptr::const_ptr::::sub_ptr` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `from_ptr_range::<'_, u32>` - --> $SRC_DIR/core/src/slice/raw.rs:LL:COL -note: inside `R10` - --> $DIR/forbidden_slices.rs:79:35 - | -LL | pub static R10: &[u32] = unsafe { from_ptr_range(&D0..&D0) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 18 previous errors - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/const-ptr/forbidden_slices.rs b/src/test/ui/const-ptr/forbidden_slices.rs index cc6100226dc1..192b6a46de60 100644 --- a/src/test/ui/const-ptr/forbidden_slices.rs +++ b/src/test/ui/const-ptr/forbidden_slices.rs @@ -1,5 +1,6 @@ -// stderr-per-bitwidth -// normalize-stderr-test "╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼" -> "╾ALLOC_ID$2╼" +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" // normalize-stderr-test "alloc\d+" -> "allocN" // error-pattern: could not evaluate static initializer #![feature( @@ -78,7 +79,7 @@ pub static R8: &[u64] = unsafe { pub static R9: &[u32] = unsafe { from_ptr_range(&D0..(&D0 as *const u32).add(1)) }; pub static R10: &[u32] = unsafe { from_ptr_range(&D0..&D0) }; -const D0: u32 = 0x11; +const D0: u32 = 0x11111111; // Constant chosen for endianness-independent behavior. const D1: MaybeUninit<&u32> = MaybeUninit::uninit(); const D2: Struct = Struct { a: 1, b: 2, c: 3, d: 4 }; const D3: &u32 = &42; diff --git a/src/test/ui/const-ptr/forbidden_slices.32bit.stderr b/src/test/ui/const-ptr/forbidden_slices.stderr similarity index 84% rename from src/test/ui/const-ptr/forbidden_slices.32bit.stderr rename to src/test/ui/const-ptr/forbidden_slices.stderr index 0079bb3aad6d..b42361872c47 100644 --- a/src/test/ui/const-ptr/forbidden_slices.32bit.stderr +++ b/src/test/ui/const-ptr/forbidden_slices.stderr @@ -6,7 +6,7 @@ error[E0080]: could not evaluate static initializer note: inside `std::slice::from_raw_parts::<'_, u32>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `S0` - --> $DIR/forbidden_slices.rs:18:34 + --> $DIR/forbidden_slices.rs:19:34 | LL | pub static S0: &[u32] = unsafe { from_raw_parts(ptr::null(), 0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,7 +19,7 @@ error[E0080]: could not evaluate static initializer note: inside `std::slice::from_raw_parts::<'_, ()>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `S1` - --> $DIR/forbidden_slices.rs:19:33 + --> $DIR/forbidden_slices.rs:20:33 | LL | pub static S1: &[()] = unsafe { from_raw_parts(ptr::null(), 0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -32,54 +32,54 @@ error[E0080]: could not evaluate static initializer note: inside `std::slice::from_raw_parts::<'_, u32>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `S2` - --> $DIR/forbidden_slices.rs:22:34 + --> $DIR/forbidden_slices.rs:23:34 | LL | pub static S2: &[u32] = unsafe { from_raw_parts(&D0, 2) }; | ^^^^^^^^^^^^^^^^^^^^^^ error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:25:1 + --> $DIR/forbidden_slices.rs:26:1 | LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }; | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:27:1 + --> $DIR/forbidden_slices.rs:28:1 | LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, size_of::<&u32>()) }; | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes | = help: this code performed an operation that depends on the underlying bytes representing a pointer = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:29:1 + --> $DIR/forbidden_slices.rs:30:1 | LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) }; | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:32:1 + --> $DIR/forbidden_slices.rs:33:1 | LL | pub static S7: &[u16] = unsafe { | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[1]: encountered uninitialized bytes | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID+0x2╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: could not evaluate static initializer @@ -90,7 +90,7 @@ error[E0080]: could not evaluate static initializer note: inside `std::slice::from_raw_parts::<'_, u64>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `S8` - --> $DIR/forbidden_slices.rs:43:5 + --> $DIR/forbidden_slices.rs:44:5 | LL | from_raw_parts(ptr, 1) | ^^^^^^^^^^^^^^^^^^^^^^ @@ -105,7 +105,7 @@ note: inside `ptr::const_ptr::::sub_ptr` note: inside `from_ptr_range::<'_, u32>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `R0` - --> $DIR/forbidden_slices.rs:46:34 + --> $DIR/forbidden_slices.rs:47:34 | LL | pub static R0: &[u32] = unsafe { from_ptr_range(ptr::null()..ptr::null()) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -120,7 +120,7 @@ note: inside `ptr::const_ptr::::sub_ptr` note: inside `from_ptr_range::<'_, ()>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `R1` - --> $DIR/forbidden_slices.rs:47:33 + --> $DIR/forbidden_slices.rs:48:33 | LL | pub static R1: &[()] = unsafe { from_ptr_range(ptr::null()..ptr::null()) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -136,43 +136,43 @@ note: inside `ptr::const_ptr::::offset` note: inside `ptr::const_ptr::::add` --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL note: inside `R2` - --> $DIR/forbidden_slices.rs:50:25 + --> $DIR/forbidden_slices.rs:51:25 | LL | from_ptr_range(ptr..ptr.add(2)) | ^^^^^^^^^^ error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:52:1 + --> $DIR/forbidden_slices.rs:53:1 | LL | pub static R4: &[u8] = unsafe { | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:57:1 + --> $DIR/forbidden_slices.rs:58:1 | LL | pub static R5: &[u8] = unsafe { | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes | = help: this code performed an operation that depends on the underlying bytes representing a pointer = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/forbidden_slices.rs:62:1 + --> $DIR/forbidden_slices.rs:63:1 | LL | pub static R6: &[bool] = unsafe { | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: could not evaluate static initializer @@ -185,7 +185,7 @@ note: inside `std::slice::from_raw_parts::<'_, u16>` note: inside `from_ptr_range::<'_, u16>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `R7` - --> $DIR/forbidden_slices.rs:69:5 + --> $DIR/forbidden_slices.rs:70:5 | LL | from_ptr_range(ptr..ptr.add(4)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -200,7 +200,7 @@ note: inside `ptr::const_ptr::::offset` note: inside `ptr::const_ptr::::add` --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL note: inside `R8` - --> $DIR/forbidden_slices.rs:73:25 + --> $DIR/forbidden_slices.rs:74:25 | LL | from_ptr_range(ptr..ptr.add(1)) | ^^^^^^^^^^ @@ -215,7 +215,7 @@ note: inside `ptr::const_ptr::::sub_ptr` note: inside `from_ptr_range::<'_, u32>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `R9` - --> $DIR/forbidden_slices.rs:78:34 + --> $DIR/forbidden_slices.rs:79:34 | LL | pub static R9: &[u32] = unsafe { from_ptr_range(&D0..(&D0 as *const u32).add(1)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -230,7 +230,7 @@ note: inside `ptr::const_ptr::::sub_ptr` note: inside `from_ptr_range::<'_, u32>` --> $SRC_DIR/core/src/slice/raw.rs:LL:COL note: inside `R10` - --> $DIR/forbidden_slices.rs:79:35 + --> $DIR/forbidden_slices.rs:80:35 | LL | pub static R10: &[u32] = unsafe { from_ptr_range(&D0..&D0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/consts/const-eval/raw-bytes.32bit.stderr b/src/test/ui/consts/const-eval/raw-bytes.32bit.stderr new file mode 100644 index 000000000000..91a426580c3c --- /dev/null +++ b/src/test/ui/consts/const-eval/raw-bytes.32bit.stderr @@ -0,0 +1,596 @@ +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:20:1 + | +LL | const BAD_ENUM: Enum = unsafe { mem::transmute(1usize) }; + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x00000001, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 01 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:28:1 + | +LL | const BAD_ENUM2: Enum2 = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x00000000, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:42:1 + | +LL | const BAD_UNINHABITED_VARIANT1: UninhDiscriminant = unsafe { mem::transmute(1u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 01 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:44:1 + | +LL | const BAD_UNINHABITED_VARIANT2: UninhDiscriminant = unsafe { mem::transmute(3u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of uninhabited type Never + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 03 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:50:1 + | +LL | const BAD_OPTION_CHAR: Option<(char, char)> = Some(('x', unsafe { mem::transmute(!0u32) })); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0.1: encountered 0xffffffff, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 78 00 00 00 ff ff ff ff │ x....... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:54:1 + | +LL | const NULL_PTR: NonNull = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:57:1 + | +LL | const NULL_U8: NonZeroU8 = unsafe { mem::transmute(0u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 00 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:59:1 + | +LL | const NULL_USIZE: NonZeroUsize = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:65:1 + | +LL | const BAD_RANGE1: RestrictedRange1 = unsafe { RestrictedRange1(42) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 42, but expected something in the range 10..=30 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 2a 00 00 00 │ *... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:71:1 + | +LL | const BAD_RANGE2: RestrictedRange2 = unsafe { RestrictedRange2(20) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 20, but expected something less or equal to 10, or greater or equal to 30 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 14 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:74:1 + | +LL | const NULL_FAT_PTR: NonNull = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 00 00 00 00 ╾ALLOC_ID╼ │ ....╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:82:1 + | +LL | const UNALIGNED: &u16 = unsafe { mem::transmute(&[0u8; 4]) }; + | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:86:1 + | +LL | const UNALIGNED_BOX: Box = unsafe { mem::transmute(&[0u8; 4]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned box (required 2 byte alignment but found 1) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:90:1 + | +LL | const NULL: &u16 = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null reference + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:93:1 + | +LL | const NULL_BOX: Box = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null box + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:96:1 + | +LL | const USIZE_AS_REF: &'static u8 = unsafe { mem::transmute(1337usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (address 0x539 is unallocated) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 39 05 00 00 │ 9... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:99:1 + | +LL | const USIZE_AS_BOX: Box = unsafe { mem::transmute(1337usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (address 0x539 is unallocated) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 39 05 00 00 │ 9... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:102:1 + | +LL | const NULL_FN_PTR: fn() = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 00 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:104:1 + | +LL | const DANGLING_FN_PTR: fn() = unsafe { mem::transmute(13usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0xd[noalloc], but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 0d 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:106:1 + | +LL | const DATA_FN_PTR: fn() = unsafe { mem::transmute(&13) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:112:1 + | +LL | const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type Bar + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 01 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:137:1 + | +LL | const STR_TOO_LONG: &str = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:139:1 + | +LL | const NESTED_STR_MUCH_TOO_LONG: (&str,) = (unsafe { mem::transmute((&42, usize::MAX)) },); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ff ff ff ff │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:141:1 + | +LL | const MY_STR_MUCH_TOO_LONG: &MyStr = unsafe { mem::transmute((&42u8, usize::MAX)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ff ff ff ff │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:144:1 + | +LL | const STR_NO_INIT: &str = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered uninitialized data in `str` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:146:1 + | +LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered uninitialized data in `str` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:148:1 + | +LL | const MYSTR_NO_INIT_ISSUE83182: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:152:1 + | +LL | const SLICE_TOO_LONG: &[u8] = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:154:1 + | +LL | const SLICE_TOO_LONG_OVERFLOW: &[u32] = unsafe { mem::transmute((&42u32, isize::MAX)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ff ff ff 7f │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:157:1 + | +LL | const SLICE_TOO_LONG_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:160:1 + | +LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:160:40 + | +LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:166:1 + | +LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:166:42 + | +LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:170:1 + | +LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..1[0]: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + ╾ALLOC_ID╼ │ ╾──╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:170:42 + | +LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:175:1 + | +LL | const TRAIT_OBJ_SHORT_VTABLE_1: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u8))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:179:1 + | +LL | const TRAIT_OBJ_SHORT_VTABLE_2: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u64))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:183:1 + | +LL | const TRAIT_OBJ_INT_VTABLE: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, 4usize))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered 0x4[noalloc], but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:186:1 + | +LL | const TRAIT_OBJ_BAD_DROP_FN_NOT_FN_PTR: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &[&42u8; 8]))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:190:1 + | +LL | const TRAIT_OBJ_CONTENT_INVALID: &dyn Trait = unsafe { mem::transmute::<_, &bool>(&3u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:194:1 + | +LL | const RAW_TRAIT_OBJ_VTABLE_NULL: *const dyn Trait = unsafe { mem::transmute((&92u8, 0usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 00 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:196:1 + | +LL | const RAW_TRAIT_OBJ_VTABLE_INVALID: *const dyn Trait = unsafe { mem::transmute((&92u8, &3u64)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:201:1 + | +LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x00000000, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 00 10 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:205:1 + | +LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x00000003, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 09 00 00 00 03 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:209:1 + | +LL | const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; + | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type [!; 1] + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 01 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:210:1 + | +LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 1]) }; + | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 01 00 00 00 01 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:211:1 + | +LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 42]) }; + | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 01 00 00 00 2a 00 00 00 │ ....*... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:215:1 + | +LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }; + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:218:1 + | +LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, mem::size_of::<&u32>()) }; + | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:221:1 + | +LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) }; + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:225:1 + | +LL | pub static S7: &[u16] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[1]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID+0x2╼ 04 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:232:1 + | +LL | pub static R4: &[u8] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:237:1 + | +LL | pub static R5: &[u8] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:242:1 + | +LL | pub static R6: &[bool] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + } + +error: aborting due to 52 previous errors + +For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/const-eval/raw-bytes.64bit.stderr b/src/test/ui/consts/const-eval/raw-bytes.64bit.stderr new file mode 100644 index 000000000000..e4c5e62f6bd3 --- /dev/null +++ b/src/test/ui/consts/const-eval/raw-bytes.64bit.stderr @@ -0,0 +1,596 @@ +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:20:1 + | +LL | const BAD_ENUM: Enum = unsafe { mem::transmute(1usize) }; + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x0000000000000001, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 01 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:28:1 + | +LL | const BAD_ENUM2: Enum2 = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x0000000000000000, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:42:1 + | +LL | const BAD_UNINHABITED_VARIANT1: UninhDiscriminant = unsafe { mem::transmute(1u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 01 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:44:1 + | +LL | const BAD_UNINHABITED_VARIANT2: UninhDiscriminant = unsafe { mem::transmute(3u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of uninhabited type Never + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 03 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:50:1 + | +LL | const BAD_OPTION_CHAR: Option<(char, char)> = Some(('x', unsafe { mem::transmute(!0u32) })); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0.1: encountered 0xffffffff, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 4) { + 78 00 00 00 ff ff ff ff │ x....... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:54:1 + | +LL | const NULL_PTR: NonNull = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:57:1 + | +LL | const NULL_U8: NonZeroU8 = unsafe { mem::transmute(0u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 1, align: 1) { + 00 │ . + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:59:1 + | +LL | const NULL_USIZE: NonZeroUsize = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:65:1 + | +LL | const BAD_RANGE1: RestrictedRange1 = unsafe { RestrictedRange1(42) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 42, but expected something in the range 10..=30 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 2a 00 00 00 │ *... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:71:1 + | +LL | const BAD_RANGE2: RestrictedRange2 = unsafe { RestrictedRange2(20) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 20, but expected something less or equal to 10, or greater or equal to 30 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 4, align: 4) { + 14 00 00 00 │ .... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:74:1 + | +LL | const NULL_FAT_PTR: NonNull = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + 00 00 00 00 00 00 00 00 ╾ALLOC_ID╼ │ ........╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:82:1 + | +LL | const UNALIGNED: &u16 = unsafe { mem::transmute(&[0u8; 4]) }; + | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:86:1 + | +LL | const UNALIGNED_BOX: Box = unsafe { mem::transmute(&[0u8; 4]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned box (required 2 byte alignment but found 1) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:90:1 + | +LL | const NULL: &u16 = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null reference + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:93:1 + | +LL | const NULL_BOX: Box = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null box + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:96:1 + | +LL | const USIZE_AS_REF: &'static u8 = unsafe { mem::transmute(1337usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (address 0x539 is unallocated) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 39 05 00 00 00 00 00 00 │ 9....... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:99:1 + | +LL | const USIZE_AS_BOX: Box = unsafe { mem::transmute(1337usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (address 0x539 is unallocated) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 39 05 00 00 00 00 00 00 │ 9....... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:102:1 + | +LL | const NULL_FN_PTR: fn() = unsafe { mem::transmute(0usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 00 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:104:1 + | +LL | const DANGLING_FN_PTR: fn() = unsafe { mem::transmute(13usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0xd[noalloc], but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 0d 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:106:1 + | +LL | const DATA_FN_PTR: fn() = unsafe { mem::transmute(&13) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a function pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:112:1 + | +LL | const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type Bar + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 01 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:137:1 + | +LL | const STR_TOO_LONG: &str = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:139:1 + | +LL | const NESTED_STR_MUCH_TOO_LONG: (&str,) = (unsafe { mem::transmute((&42, usize::MAX)) },); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ff ff ff ff ff ff ff ff │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:141:1 + | +LL | const MY_STR_MUCH_TOO_LONG: &MyStr = unsafe { mem::transmute((&42u8, usize::MAX)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ff ff ff ff ff ff ff ff │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:144:1 + | +LL | const STR_NO_INIT: &str = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered uninitialized data in `str` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:146:1 + | +LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered uninitialized data in `str` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:148:1 + | +LL | const MYSTR_NO_INIT_ISSUE83182: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:152:1 + | +LL | const SLICE_TOO_LONG: &[u8] = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:154:1 + | +LL | const SLICE_TOO_LONG_OVERFLOW: &[u32] = unsafe { mem::transmute((&42u32, isize::MAX)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ff ff ff ff ff ff ff 7f │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:157:1 + | +LL | const SLICE_TOO_LONG_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, 999usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (going beyond the bounds of its allocation) + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:160:1 + | +LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:160:40 + | +LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:166:1 + | +LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:166:42 + | +LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:170:1 + | +LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..1[0]: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + ╾ALLOC_ID╼ │ ╾──────╼ + } + +note: erroneous constant used + --> $DIR/raw-bytes.rs:170:42 + | +LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:175:1 + | +LL | const TRAIT_OBJ_SHORT_VTABLE_1: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u8))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:179:1 + | +LL | const TRAIT_OBJ_SHORT_VTABLE_2: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u64))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:183:1 + | +LL | const TRAIT_OBJ_INT_VTABLE: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, 4usize))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered 0x4[noalloc], but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:186:1 + | +LL | const TRAIT_OBJ_BAD_DROP_FN_NOT_FN_PTR: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &[&42u8; 8]))) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:190:1 + | +LL | const TRAIT_OBJ_CONTENT_INVALID: &dyn Trait = unsafe { mem::transmute::<_, &bool>(&3u8) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..: encountered 0x03, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:194:1 + | +LL | const RAW_TRAIT_OBJ_VTABLE_NULL: *const dyn Trait = unsafe { mem::transmute((&92u8, 0usize)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 00 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:196:1 + | +LL | const RAW_TRAIT_OBJ_VTABLE_INVALID: *const dyn Trait = unsafe { mem::transmute((&92u8, &3u64)) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a vtable pointer + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:201:1 + | +LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x0000000000000000, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:205:1 + | +LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x0000000000000003, but expected a valid enum tag + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + 09 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 │ ................ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:209:1 + | +LL | const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; + | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type [!; 1] + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 8, align: 8) { + 01 00 00 00 00 00 00 00 │ ........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:210:1 + | +LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 1]) }; + | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 │ ................ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:211:1 + | +LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 42]) }; + | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + 01 00 00 00 00 00 00 00 2a 00 00 00 00 00 00 00 │ ........*....... + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:215:1 + | +LL | pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }; + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:218:1 + | +LL | pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, mem::size_of::<&u32>()) }; + | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 08 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:221:1 + | +LL | pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) }; + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:225:1 + | +LL | pub static S7: &[u16] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[1]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID+0x2╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:232:1 + | +LL | pub static R4: &[u8] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered uninitialized bytes + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:237:1 + | +LL | pub static R5: &[u8] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes + | + = help: this code performed an operation that depends on the underlying bytes representing a pointer + = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 08 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error[E0080]: it is undefined behavior to use this value + --> $DIR/raw-bytes.rs:242:1 + | +LL | pub static R6: &[bool] = unsafe { + | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x11, but expected a boolean + | + = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. + = note: the raw bytes of the constant (size: 16, align: 8) { + ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ + } + +error: aborting due to 52 previous errors + +For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/const-eval/raw-bytes.rs b/src/test/ui/consts/const-eval/raw-bytes.rs new file mode 100644 index 000000000000..6c1238c0a063 --- /dev/null +++ b/src/test/ui/consts/const-eval/raw-bytes.rs @@ -0,0 +1,263 @@ +// stderr-per-bitwidth +// ignore-endian-big +// ignore-tidy-linelength +// normalize-stderr-test "╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼" -> "╾ALLOC_ID$2╼" +// normalize-stderr-test "alloc\d+" -> "allocN" +#![feature(never_type, rustc_attrs, ptr_metadata, slice_from_ptr_range, const_slice_from_ptr_range)] +#![allow(invalid_value)] + +use std::mem; +use std::alloc::Layout; +use std::ptr::NonNull; +use std::num::{NonZeroU8, NonZeroUsize}; +use std::slice::{from_ptr_range, from_raw_parts}; + +#[repr(usize)] +#[derive(Copy, Clone)] +enum Enum { + A = 0, +} +const BAD_ENUM: Enum = unsafe { mem::transmute(1usize) }; +//~^ ERROR is undefined behavior + +#[repr(usize)] +#[derive(Copy, Clone)] +enum Enum2 { + A = 2, +} +const BAD_ENUM2: Enum2 = unsafe { mem::transmute(0usize) }; +//~^ ERROR is undefined behavior + +#[derive(Copy, Clone)] +enum Never {} + +// An enum with 3 variants of which some are uninhabited -- so the uninhabited variants *do* +// have a discriminant. +enum UninhDiscriminant { + A, + B(!), + C, + D(Never), +} +const BAD_UNINHABITED_VARIANT1: UninhDiscriminant = unsafe { mem::transmute(1u8) }; +//~^ ERROR is undefined behavior +const BAD_UNINHABITED_VARIANT2: UninhDiscriminant = unsafe { mem::transmute(3u8) }; +//~^ ERROR is undefined behavior + +// Invalid enum field content (mostly to test printing of paths for enum tuple +// variants and tuples). +// Need to create something which does not clash with enum layout optimizations. +const BAD_OPTION_CHAR: Option<(char, char)> = Some(('x', unsafe { mem::transmute(!0u32) })); +//~^ ERROR is undefined behavior + + +const NULL_PTR: NonNull = unsafe { mem::transmute(0usize) }; +//~^ ERROR it is undefined behavior to use this value + +const NULL_U8: NonZeroU8 = unsafe { mem::transmute(0u8) }; +//~^ ERROR it is undefined behavior to use this value +const NULL_USIZE: NonZeroUsize = unsafe { mem::transmute(0usize) }; +//~^ ERROR it is undefined behavior to use this value + +#[rustc_layout_scalar_valid_range_start(10)] +#[rustc_layout_scalar_valid_range_end(30)] +struct RestrictedRange1(u32); +const BAD_RANGE1: RestrictedRange1 = unsafe { RestrictedRange1(42) }; +//~^ ERROR it is undefined behavior to use this value + +#[rustc_layout_scalar_valid_range_start(30)] +#[rustc_layout_scalar_valid_range_end(10)] +struct RestrictedRange2(u32); +const BAD_RANGE2: RestrictedRange2 = unsafe { RestrictedRange2(20) }; +//~^ ERROR it is undefined behavior to use this value + +const NULL_FAT_PTR: NonNull = unsafe { +//~^ ERROR it is undefined behavior to use this value + let x: &dyn Send = &42; + let meta = std::ptr::metadata(x); + mem::transmute((0_usize, meta)) +}; + + +const UNALIGNED: &u16 = unsafe { mem::transmute(&[0u8; 4]) }; +//~^ ERROR it is undefined behavior to use this value +//~| constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1) + +const UNALIGNED_BOX: Box = unsafe { mem::transmute(&[0u8; 4]) }; +//~^ ERROR it is undefined behavior to use this value +//~| constructing invalid value: encountered an unaligned box (required 2 byte alignment but found 1) + +const NULL: &u16 = unsafe { mem::transmute(0usize) }; +//~^ ERROR it is undefined behavior to use this value + +const NULL_BOX: Box = unsafe { mem::transmute(0usize) }; +//~^ ERROR it is undefined behavior to use this value + +const USIZE_AS_REF: &'static u8 = unsafe { mem::transmute(1337usize) }; +//~^ ERROR it is undefined behavior to use this value + +const USIZE_AS_BOX: Box = unsafe { mem::transmute(1337usize) }; +//~^ ERROR it is undefined behavior to use this value + +const NULL_FN_PTR: fn() = unsafe { mem::transmute(0usize) }; +//~^ ERROR it is undefined behavior to use this value +const DANGLING_FN_PTR: fn() = unsafe { mem::transmute(13usize) }; +//~^ ERROR it is undefined behavior to use this value +const DATA_FN_PTR: fn() = unsafe { mem::transmute(&13) }; +//~^ ERROR it is undefined behavior to use this value + +#[derive(Copy, Clone)] +enum Bar {} + +const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) }; +//~^ ERROR it is undefined behavior to use this value + + +/// A newtype wrapper to prevent MIR generation from inserting reborrows that would affect the error +/// message. +#[repr(transparent)] +struct W(T); + +#[repr(C)] +union MaybeUninit { + uninit: (), + init: T, +} + +trait Trait {} +impl Trait for bool {} + +// custom unsized type +struct MyStr(str); + +// custom unsized type with sized fields +struct MySlice(bool, T); +type MySliceBool = MySlice<[bool]>; + +const STR_TOO_LONG: &str = unsafe { mem::transmute((&42u8, 999usize)) }; +//~^ ERROR it is undefined behavior to use this value +const NESTED_STR_MUCH_TOO_LONG: (&str,) = (unsafe { mem::transmute((&42, usize::MAX)) },); +//~^ ERROR it is undefined behavior to use this value +const MY_STR_MUCH_TOO_LONG: &MyStr = unsafe { mem::transmute((&42u8, usize::MAX)) }; +//~^ ERROR it is undefined behavior to use this value + +const STR_NO_INIT: &str = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; +//~^ ERROR it is undefined behavior to use this value +const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; +//~^ ERROR it is undefined behavior to use this value +const MYSTR_NO_INIT_ISSUE83182: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; +//~^ ERROR: it is undefined behavior to use this value + +// # slice +const SLICE_TOO_LONG: &[u8] = unsafe { mem::transmute((&42u8, 999usize)) }; +//~^ ERROR it is undefined behavior to use this value +const SLICE_TOO_LONG_OVERFLOW: &[u32] = unsafe { mem::transmute((&42u32, isize::MAX)) }; +//~^ ERROR it is undefined behavior to use this value +// bad slice box: length too big +const SLICE_TOO_LONG_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, 999usize)) }; +//~^ ERROR it is undefined behavior to use this value +// bad data *inside* the slice +const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; +//~^ ERROR it is undefined behavior to use this value +//~| constant + + +// bad: sized field is not okay +const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); +//~^ ERROR it is undefined behavior to use this value +//~| constant +// bad: unsized part is not okay +const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); +//~^ ERROR it is undefined behavior to use this value +//~| constant + +// bad trait object +const TRAIT_OBJ_SHORT_VTABLE_1: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u8))) }; +//~^ ERROR it is undefined behavior to use this value +//~| expected a vtable +// bad trait object +const TRAIT_OBJ_SHORT_VTABLE_2: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u64))) }; +//~^ ERROR it is undefined behavior to use this value +//~| expected a vtable +// bad trait object +const TRAIT_OBJ_INT_VTABLE: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, 4usize))) }; +//~^ ERROR it is undefined behavior to use this value +//~| expected a vtable +const TRAIT_OBJ_BAD_DROP_FN_NOT_FN_PTR: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &[&42u8; 8]))) }; +//~^ ERROR it is undefined behavior to use this value +//~| expected a vtable +// bad data *inside* the trait object +const TRAIT_OBJ_CONTENT_INVALID: &dyn Trait = unsafe { mem::transmute::<_, &bool>(&3u8) }; +//~^ ERROR it is undefined behavior to use this value +//~| expected a boolean + +const RAW_TRAIT_OBJ_VTABLE_NULL: *const dyn Trait = unsafe { mem::transmute((&92u8, 0usize)) }; +//~^ ERROR it is undefined behavior to use this value +const RAW_TRAIT_OBJ_VTABLE_INVALID: *const dyn Trait = unsafe { mem::transmute((&92u8, &3u64)) }; +//~^ ERROR it is undefined behavior to use this value + + +// not ok, since alignment needs to be non-zero. +const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; +//~^ ERROR it is undefined behavior to use this value + +// not ok, since alignment needs to be a power of two. +const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; +//~^ ERROR it is undefined behavior to use this value + + +const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; //~ ERROR undefined behavior +const _: &[!] = unsafe { &*(1_usize as *const [!; 1]) }; //~ ERROR undefined behavior +const _: &[!] = unsafe { &*(1_usize as *const [!; 42]) }; //~ ERROR undefined behavior + + +// Reading uninitialized data +pub static S4: &[u8] = unsafe { from_raw_parts((&D1) as *const _ as _, 1) }; +//~^ ERROR: it is undefined behavior to use this value +// Reinterpret pointers as integers (UB in CTFE.) +pub static S5: &[u8] = unsafe { from_raw_parts((&D3) as *const _ as _, mem::size_of::<&u32>()) }; +//~^ ERROR: it is undefined behavior to use this value +// Layout mismatch +pub static S6: &[bool] = unsafe { from_raw_parts((&D0) as *const _ as _, 4) }; +//~^ ERROR: it is undefined behavior to use this value + +// Reading padding is not ok +pub static S7: &[u16] = unsafe { + //~^ ERROR: it is undefined behavior to use this value + let ptr = (&D2 as *const Struct as *const u16).add(1); + + from_raw_parts(ptr, 4) +}; + +pub static R4: &[u8] = unsafe { + //~^ ERROR: it is undefined behavior to use this value + let ptr = (&D1) as *const mem::MaybeUninit<&u32> as *const u8; + from_ptr_range(ptr..ptr.add(1)) +}; +pub static R5: &[u8] = unsafe { + //~^ ERROR: it is undefined behavior to use this value + let ptr = &D3 as *const &u32; + from_ptr_range(ptr.cast()..ptr.add(1).cast()) +}; +pub static R6: &[bool] = unsafe { + //~^ ERROR: it is undefined behavior to use this value + let ptr = &D0 as *const u32 as *const bool; + from_ptr_range(ptr..ptr.add(4)) +}; + +const D0: u32 = 0x11111111; // Constant chosen for endianness-independent behavior. +const D1: mem::MaybeUninit<&u32> = mem::MaybeUninit::uninit(); +const D2: Struct = Struct { a: 1, b: 2, c: 3, d: 4 }; +const D3: &u32 = &42; + +#[repr(C)] +struct Struct { + a: u8, + // _pad: [mem::MaybeUninit; 3] + b: u32, + c: u16, + d: u8, + // _pad: [mem::MaybeUninit; 1] +} + +fn main() {} diff --git a/src/test/ui/consts/const-eval/ub-enum.32bit.stderr b/src/test/ui/consts/const-eval/ub-enum.32bit.stderr index 93bc96e67674..2d86bd88f1c8 100644 --- a/src/test/ui/consts/const-eval/ub-enum.32bit.stderr +++ b/src/test/ui/consts/const-eval/ub-enum.32bit.stderr @@ -1,16 +1,16 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:24:1 + --> $DIR/ub-enum.rs:27:1 | LL | const BAD_ENUM: Enum = unsafe { mem::transmute(1usize) }; | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x00000001, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 01 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:27:1 + --> $DIR/ub-enum.rs:30:1 | LL | const BAD_ENUM_PTR: Enum = unsafe { mem::transmute(&1) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -19,7 +19,7 @@ LL | const BAD_ENUM_PTR: Enum = unsafe { mem::transmute(&1) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:30:1 + --> $DIR/ub-enum.rs:33:1 | LL | const BAD_ENUM_WRAPPED: Wrap = unsafe { mem::transmute(&1) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -28,18 +28,18 @@ LL | const BAD_ENUM_WRAPPED: Wrap = unsafe { mem::transmute(&1) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:42:1 + --> $DIR/ub-enum.rs:45:1 | LL | const BAD_ENUM2: Enum2 = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x00000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:44:1 + --> $DIR/ub-enum.rs:47:1 | LL | const BAD_ENUM2_PTR: Enum2 = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -48,7 +48,7 @@ LL | const BAD_ENUM2_PTR: Enum2 = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:47:1 + --> $DIR/ub-enum.rs:50:1 | LL | const BAD_ENUM2_WRAPPED: Wrap = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -57,13 +57,13 @@ LL | const BAD_ENUM2_WRAPPED: Wrap = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:56:42 + --> $DIR/ub-enum.rs:59:42 | LL | const BAD_ENUM2_UNDEF : Enum2 = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:61:1 + --> $DIR/ub-enum.rs:64:1 | LL | const BAD_ENUM2_OPTION_PTR: Option = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -72,46 +72,46 @@ LL | const BAD_ENUM2_OPTION_PTR: Option = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:78:1 + --> $DIR/ub-enum.rs:81:1 | LL | const BAD_UNINHABITED_VARIANT1: UninhDiscriminant = unsafe { mem::transmute(1u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of the never type `!` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 01 │ . + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:80:1 + --> $DIR/ub-enum.rs:83:1 | LL | const BAD_UNINHABITED_VARIANT2: UninhDiscriminant = unsafe { mem::transmute(3u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of uninhabited type Never | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 03 │ . + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:88:1 + --> $DIR/ub-enum.rs:91:1 | LL | const BAD_OPTION_CHAR: Option<(char, char)> = Some(('x', unsafe { mem::transmute(!0u32) })); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0.1: encountered 0xffffffff, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 78 00 00 00 ff ff ff ff │ x....... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:93:77 + --> $DIR/ub-enum.rs:96:77 | LL | const BAD_UNINHABITED_WITH_DATA1: Result<(i32, Never), (i32, !)> = unsafe { mem::transmute(0u64) }; | ^^^^^^^^^^^^^^^^^^^^ transmuting to uninhabited type error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:95:77 + --> $DIR/ub-enum.rs:98:77 | LL | const BAD_UNINHABITED_WITH_DATA2: Result<(i32, !), (i32, Never)> = unsafe { mem::transmute(0u64) }; | ^^^^^^^^^^^^^^^^^^^^ transmuting to uninhabited type diff --git a/src/test/ui/consts/const-eval/ub-enum.64bit.stderr b/src/test/ui/consts/const-eval/ub-enum.64bit.stderr index 280ba25a83ca..a89d7ec5f6d4 100644 --- a/src/test/ui/consts/const-eval/ub-enum.64bit.stderr +++ b/src/test/ui/consts/const-eval/ub-enum.64bit.stderr @@ -1,16 +1,16 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:24:1 + --> $DIR/ub-enum.rs:27:1 | LL | const BAD_ENUM: Enum = unsafe { mem::transmute(1usize) }; | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x0000000000000001, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 01 00 00 00 00 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:27:1 + --> $DIR/ub-enum.rs:30:1 | LL | const BAD_ENUM_PTR: Enum = unsafe { mem::transmute(&1) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -19,7 +19,7 @@ LL | const BAD_ENUM_PTR: Enum = unsafe { mem::transmute(&1) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:30:1 + --> $DIR/ub-enum.rs:33:1 | LL | const BAD_ENUM_WRAPPED: Wrap = unsafe { mem::transmute(&1) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -28,18 +28,18 @@ LL | const BAD_ENUM_WRAPPED: Wrap = unsafe { mem::transmute(&1) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:42:1 + --> $DIR/ub-enum.rs:45:1 | LL | const BAD_ENUM2: Enum2 = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered 0x0000000000000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:44:1 + --> $DIR/ub-enum.rs:47:1 | LL | const BAD_ENUM2_PTR: Enum2 = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -48,7 +48,7 @@ LL | const BAD_ENUM2_PTR: Enum2 = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:47:1 + --> $DIR/ub-enum.rs:50:1 | LL | const BAD_ENUM2_WRAPPED: Wrap = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -57,13 +57,13 @@ LL | const BAD_ENUM2_WRAPPED: Wrap = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:56:42 + --> $DIR/ub-enum.rs:59:42 | LL | const BAD_ENUM2_UNDEF : Enum2 = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:61:1 + --> $DIR/ub-enum.rs:64:1 | LL | const BAD_ENUM2_OPTION_PTR: Option = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -72,46 +72,46 @@ LL | const BAD_ENUM2_OPTION_PTR: Option = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:78:1 + --> $DIR/ub-enum.rs:81:1 | LL | const BAD_UNINHABITED_VARIANT1: UninhDiscriminant = unsafe { mem::transmute(1u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of the never type `!` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 01 │ . + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:80:1 + --> $DIR/ub-enum.rs:83:1 | LL | const BAD_UNINHABITED_VARIANT2: UninhDiscriminant = unsafe { mem::transmute(3u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered a value of uninhabited type Never | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 03 │ . + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-enum.rs:88:1 + --> $DIR/ub-enum.rs:91:1 | LL | const BAD_OPTION_CHAR: Option<(char, char)> = Some(('x', unsafe { mem::transmute(!0u32) })); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0.1: encountered 0xffffffff, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 78 00 00 00 ff ff ff ff │ x....... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:93:77 + --> $DIR/ub-enum.rs:96:77 | LL | const BAD_UNINHABITED_WITH_DATA1: Result<(i32, Never), (i32, !)> = unsafe { mem::transmute(0u64) }; | ^^^^^^^^^^^^^^^^^^^^ transmuting to uninhabited type error[E0080]: evaluation of constant value failed - --> $DIR/ub-enum.rs:95:77 + --> $DIR/ub-enum.rs:98:77 | LL | const BAD_UNINHABITED_WITH_DATA2: Result<(i32, !), (i32, Never)> = unsafe { mem::transmute(0u64) }; | ^^^^^^^^^^^^^^^^^^^^ transmuting to uninhabited type diff --git a/src/test/ui/consts/const-eval/ub-enum.rs b/src/test/ui/consts/const-eval/ub-enum.rs index 6935be2f92fe..8f26d9a00d71 100644 --- a/src/test/ui/consts/const-eval/ub-enum.rs +++ b/src/test/ui/consts/const-eval/ub-enum.rs @@ -1,4 +1,7 @@ // stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" #![feature(never_type)] #![allow(invalid_value)] diff --git a/src/test/ui/consts/const-eval/ub-nonnull.64bit.stderr b/src/test/ui/consts/const-eval/ub-nonnull.64bit.stderr deleted file mode 100644 index 92b8d017c0b7..000000000000 --- a/src/test/ui/consts/const-eval/ub-nonnull.64bit.stderr +++ /dev/null @@ -1,81 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:12:1 - | -LL | const NULL_PTR: NonNull = unsafe { mem::transmute(0usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-nonnull.rs:18:30 - | -LL | let out_of_bounds_ptr = &ptr[255]; - | ^^^^^^^^ dereferencing pointer failed: alloc11 has size 1, so pointer to 256 bytes starting at offset 0 is out-of-bounds - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:22:1 - | -LL | const NULL_U8: NonZeroU8 = unsafe { mem::transmute(0u8) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 00 │ . - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:24:1 - | -LL | const NULL_USIZE: NonZeroUsize = unsafe { mem::transmute(0usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-nonnull.rs:32:36 - | -LL | const UNINIT: NonZeroU8 = unsafe { MaybeUninit { uninit: () }.init }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:41:1 - | -LL | const BAD_RANGE1: RestrictedRange1 = unsafe { RestrictedRange1(42) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 42, but expected something in the range 10..=30 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 2a 00 00 00 │ *... - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:47:1 - | -LL | const BAD_RANGE2: RestrictedRange2 = unsafe { RestrictedRange2(20) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 20, but expected something less or equal to 10, or greater or equal to 30 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 14 00 00 00 │ .... - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:50:1 - | -LL | const NULL_FAT_PTR: NonNull = unsafe { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 00 00 00 00 00 00 00 00 ╾───────alloc26───────╼ │ ........╾──────╼ - } - -error: aborting due to 8 previous errors - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/const-eval/ub-nonnull.rs b/src/test/ui/consts/const-eval/ub-nonnull.rs index 49092582267c..a64b3a74cf6c 100644 --- a/src/test/ui/consts/const-eval/ub-nonnull.rs +++ b/src/test/ui/consts/const-eval/ub-nonnull.rs @@ -1,4 +1,6 @@ -// stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" #![feature(rustc_attrs, ptr_metadata)] #![allow(invalid_value)] // make sure we cannot allow away the errors tested here diff --git a/src/test/ui/consts/const-eval/ub-nonnull.32bit.stderr b/src/test/ui/consts/const-eval/ub-nonnull.stderr similarity index 77% rename from src/test/ui/consts/const-eval/ub-nonnull.32bit.stderr rename to src/test/ui/consts/const-eval/ub-nonnull.stderr index b24e0cc37aa6..961648708045 100644 --- a/src/test/ui/consts/const-eval/ub-nonnull.32bit.stderr +++ b/src/test/ui/consts/const-eval/ub-nonnull.stderr @@ -1,79 +1,79 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:12:1 + --> $DIR/ub-nonnull.rs:14:1 | LL | const NULL_PTR: NonNull = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-nonnull.rs:18:30 + --> $DIR/ub-nonnull.rs:20:30 | LL | let out_of_bounds_ptr = &ptr[255]; | ^^^^^^^^ dereferencing pointer failed: alloc11 has size 1, so pointer to 256 bytes starting at offset 0 is out-of-bounds error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:22:1 + --> $DIR/ub-nonnull.rs:24:1 | LL | const NULL_U8: NonZeroU8 = unsafe { mem::transmute(0u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 1, align: 1) { - 00 │ . + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:24:1 + --> $DIR/ub-nonnull.rs:26:1 | LL | const NULL_USIZE: NonZeroUsize = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-nonnull.rs:32:36 + --> $DIR/ub-nonnull.rs:34:36 | LL | const UNINIT: NonZeroU8 = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:41:1 + --> $DIR/ub-nonnull.rs:43:1 | LL | const BAD_RANGE1: RestrictedRange1 = unsafe { RestrictedRange1(42) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 42, but expected something in the range 10..=30 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 2a 00 00 00 │ *... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:47:1 + --> $DIR/ub-nonnull.rs:49:1 | LL | const BAD_RANGE2: RestrictedRange2 = unsafe { RestrictedRange2(20) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 20, but expected something less or equal to 10, or greater or equal to 30 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 14 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-nonnull.rs:50:1 + --> $DIR/ub-nonnull.rs:52:1 | LL | const NULL_FAT_PTR: NonNull = unsafe { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0, but expected something greater or equal to 1 | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 00 00 00 00 ╾─alloc26─╼ │ ....╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 8 previous errors diff --git a/src/test/ui/consts/const-eval/ub-ref-ptr.64bit.stderr b/src/test/ui/consts/const-eval/ub-ref-ptr.64bit.stderr deleted file mode 100644 index d53b44671e3f..000000000000 --- a/src/test/ui/consts/const-eval/ub-ref-ptr.64bit.stderr +++ /dev/null @@ -1,186 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:14:1 - | -LL | const UNALIGNED: &u16 = unsafe { mem::transmute(&[0u8; 4]) }; - | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾───────alloc3────────╼ │ ╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:18:1 - | -LL | const UNALIGNED_BOX: Box = unsafe { mem::transmute(&[0u8; 4]) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned box (required 2 byte alignment but found 1) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾───────alloc7────────╼ │ ╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:22:1 - | -LL | const NULL: &u16 = unsafe { mem::transmute(0usize) }; - | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null reference - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:25:1 - | -LL | const NULL_BOX: Box = unsafe { mem::transmute(0usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null box - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:32:1 - | -LL | const REF_AS_USIZE: usize = unsafe { mem::transmute(&0) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:35:39 - | -LL | const REF_AS_USIZE_SLICE: &[usize] = &[unsafe { mem::transmute(&0) }]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -note: erroneous constant used - --> $DIR/ub-ref-ptr.rs:35:38 - | -LL | const REF_AS_USIZE_SLICE: &[usize] = &[unsafe { mem::transmute(&0) }]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:38:86 - | -LL | const REF_AS_USIZE_BOX_SLICE: Box<[usize]> = unsafe { mem::transmute::<&[usize], _>(&[mem::transmute(&0)]) }; - | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -note: erroneous constant used - --> $DIR/ub-ref-ptr.rs:38:85 - | -LL | const REF_AS_USIZE_BOX_SLICE: Box<[usize]> = unsafe { mem::transmute::<&[usize], _>(&[mem::transmute(&0)]) }; - | ^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:41:1 - | -LL | const USIZE_AS_REF: &'static u8 = unsafe { mem::transmute(1337usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (address 0x539 is unallocated) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 39 05 00 00 00 00 00 00 │ 9....... - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:44:1 - | -LL | const USIZE_AS_BOX: Box = unsafe { mem::transmute(1337usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (address 0x539 is unallocated) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 39 05 00 00 00 00 00 00 │ 9....... - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:47:41 - | -LL | const UNINIT_PTR: *const i32 = unsafe { MaybeUninit { uninit: () }.init }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:51:1 - | -LL | const NULL_FN_PTR: fn() = unsafe { mem::transmute(0usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a function pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 00 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:53:38 - | -LL | const UNINIT_FN_PTR: fn() = unsafe { MaybeUninit { uninit: () }.init }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:56:1 - | -LL | const DANGLING_FN_PTR: fn() = unsafe { mem::transmute(13usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0xd[noalloc], but expected a function pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 0d 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:58:1 - | -LL | const DATA_FN_PTR: fn() = unsafe { mem::transmute(&13) }; - | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered alloc41, but expected a function pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾───────alloc41───────╼ │ ╾──────╼ - } - -error: accessing memory with alignment 1, but alignment 4 is required - --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL - | - = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! - = note: for more information, see issue #68585 -note: inside `std::ptr::read::` - --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL -note: inside `ptr::const_ptr::::read` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `UNALIGNED_READ` - --> $DIR/ub-ref-ptr.rs:65:5 - | -LL | ptr.read(); - | ^^^^^^^^^^ - = note: `#[deny(invalid_alignment)]` on by default - -error: aborting due to 15 previous errors - -For more information about this error, try `rustc --explain E0080`. -Future incompatibility report: Future breakage diagnostic: -error: accessing memory with alignment 1, but alignment 4 is required - --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL - | - = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! - = note: for more information, see issue #68585 -note: inside `std::ptr::read::` - --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL -note: inside `ptr::const_ptr::::read` - --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL -note: inside `UNALIGNED_READ` - --> $DIR/ub-ref-ptr.rs:65:5 - | -LL | ptr.read(); - | ^^^^^^^^^^ - = note: `#[deny(invalid_alignment)]` on by default - diff --git a/src/test/ui/consts/const-eval/ub-ref-ptr.rs b/src/test/ui/consts/const-eval/ub-ref-ptr.rs index b0fc3c196a49..369e4519407f 100644 --- a/src/test/ui/consts/const-eval/ub-ref-ptr.rs +++ b/src/test/ui/consts/const-eval/ub-ref-ptr.rs @@ -1,5 +1,7 @@ // ignore-tidy-linelength -// stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" #![allow(invalid_value)] #![feature(const_ptr_read)] diff --git a/src/test/ui/consts/const-eval/ub-ref-ptr.32bit.stderr b/src/test/ui/consts/const-eval/ub-ref-ptr.stderr similarity index 82% rename from src/test/ui/consts/const-eval/ub-ref-ptr.32bit.stderr rename to src/test/ui/consts/const-eval/ub-ref-ptr.stderr index a0a8d76d10d2..ce618802bd2c 100644 --- a/src/test/ui/consts/const-eval/ub-ref-ptr.32bit.stderr +++ b/src/test/ui/consts/const-eval/ub-ref-ptr.stderr @@ -1,49 +1,49 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:14:1 + --> $DIR/ub-ref-ptr.rs:16:1 | LL | const UNALIGNED: &u16 = unsafe { mem::transmute(&[0u8; 4]) }; | ^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 2 byte alignment but found 1) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾─alloc3──╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:18:1 + --> $DIR/ub-ref-ptr.rs:20:1 | LL | const UNALIGNED_BOX: Box = unsafe { mem::transmute(&[0u8; 4]) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned box (required 2 byte alignment but found 1) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾─alloc7──╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:22:1 + --> $DIR/ub-ref-ptr.rs:24:1 | LL | const NULL: &u16 = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null reference | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:25:1 + --> $DIR/ub-ref-ptr.rs:27:1 | LL | const NULL_BOX: Box = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a null box | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:32:1 + --> $DIR/ub-ref-ptr.rs:34:1 | LL | const REF_AS_USIZE: usize = unsafe { mem::transmute(&0) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -52,7 +52,7 @@ LL | const REF_AS_USIZE: usize = unsafe { mem::transmute(&0) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:35:39 + --> $DIR/ub-ref-ptr.rs:37:39 | LL | const REF_AS_USIZE_SLICE: &[usize] = &[unsafe { mem::transmute(&0) }]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -61,13 +61,13 @@ LL | const REF_AS_USIZE_SLICE: &[usize] = &[unsafe { mem::transmute(&0) }]; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported note: erroneous constant used - --> $DIR/ub-ref-ptr.rs:35:38 + --> $DIR/ub-ref-ptr.rs:37:38 | LL | const REF_AS_USIZE_SLICE: &[usize] = &[unsafe { mem::transmute(&0) }]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:38:86 + --> $DIR/ub-ref-ptr.rs:40:86 | LL | const REF_AS_USIZE_BOX_SLICE: Box<[usize]> = unsafe { mem::transmute::<&[usize], _>(&[mem::transmute(&0)]) }; | ^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -76,76 +76,76 @@ LL | const REF_AS_USIZE_BOX_SLICE: Box<[usize]> = unsafe { mem::transmute::<&[us = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported note: erroneous constant used - --> $DIR/ub-ref-ptr.rs:38:85 + --> $DIR/ub-ref-ptr.rs:40:85 | LL | const REF_AS_USIZE_BOX_SLICE: Box<[usize]> = unsafe { mem::transmute::<&[usize], _>(&[mem::transmute(&0)]) }; | ^^^^^^^^^^^^^^^^^^^^^ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:41:1 + --> $DIR/ub-ref-ptr.rs:43:1 | LL | const USIZE_AS_REF: &'static u8 = unsafe { mem::transmute(1337usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (address 0x539 is unallocated) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 39 05 00 00 │ 9... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:44:1 + --> $DIR/ub-ref-ptr.rs:46:1 | LL | const USIZE_AS_BOX: Box = unsafe { mem::transmute(1337usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (address 0x539 is unallocated) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 39 05 00 00 │ 9... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:47:41 + --> $DIR/ub-ref-ptr.rs:49:41 | LL | const UNINIT_PTR: *const i32 = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:51:1 + --> $DIR/ub-ref-ptr.rs:53:1 | LL | const NULL_FN_PTR: fn() = unsafe { mem::transmute(0usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a function pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 00 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-ref-ptr.rs:53:38 + --> $DIR/ub-ref-ptr.rs:55:38 | LL | const UNINIT_FN_PTR: fn() = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:56:1 + --> $DIR/ub-ref-ptr.rs:58:1 | LL | const DANGLING_FN_PTR: fn() = unsafe { mem::transmute(13usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0xd[noalloc], but expected a function pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 0d 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-ref-ptr.rs:58:1 + --> $DIR/ub-ref-ptr.rs:60:1 | LL | const DATA_FN_PTR: fn() = unsafe { mem::transmute(&13) }; | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered alloc41, but expected a function pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾─alloc41─╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: accessing memory with alignment 1, but alignment 4 is required @@ -158,7 +158,7 @@ note: inside `std::ptr::read::` note: inside `ptr::const_ptr::::read` --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL note: inside `UNALIGNED_READ` - --> $DIR/ub-ref-ptr.rs:65:5 + --> $DIR/ub-ref-ptr.rs:67:5 | LL | ptr.read(); | ^^^^^^^^^^ @@ -178,7 +178,7 @@ note: inside `std::ptr::read::` note: inside `ptr::const_ptr::::read` --> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL note: inside `UNALIGNED_READ` - --> $DIR/ub-ref-ptr.rs:65:5 + --> $DIR/ub-ref-ptr.rs:67:5 | LL | ptr.read(); | ^^^^^^^^^^ diff --git a/src/test/ui/consts/const-eval/ub-uninhabit.64bit.stderr b/src/test/ui/consts/const-eval/ub-uninhabit.64bit.stderr deleted file mode 100644 index 2b7659f5d107..000000000000 --- a/src/test/ui/consts/const-eval/ub-uninhabit.64bit.stderr +++ /dev/null @@ -1,32 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:14:1 - | -LL | const BAD_BAD_BAD: Bar = unsafe { MaybeUninit { uninit: () }.init }; - | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a value of uninhabited type Bar - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 0, align: 1) {} - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:17:1 - | -LL | const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) }; - | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type Bar - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 01 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:20:1 - | -LL | const BAD_BAD_ARRAY: [Bar; 1] = unsafe { MaybeUninit { uninit: () }.init }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at [0]: encountered a value of uninhabited type Bar - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 0, align: 1) {} - -error: aborting due to 3 previous errors - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/const-eval/ub-uninhabit.rs b/src/test/ui/consts/const-eval/ub-uninhabit.rs index 213f15b79174..4c4ef216d862 100644 --- a/src/test/ui/consts/const-eval/ub-uninhabit.rs +++ b/src/test/ui/consts/const-eval/ub-uninhabit.rs @@ -1,4 +1,6 @@ -// stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" use std::mem; diff --git a/src/test/ui/consts/const-eval/ub-uninhabit.32bit.stderr b/src/test/ui/consts/const-eval/ub-uninhabit.stderr similarity index 80% rename from src/test/ui/consts/const-eval/ub-uninhabit.32bit.stderr rename to src/test/ui/consts/const-eval/ub-uninhabit.stderr index 7d3232257416..0ae376d03fc3 100644 --- a/src/test/ui/consts/const-eval/ub-uninhabit.32bit.stderr +++ b/src/test/ui/consts/const-eval/ub-uninhabit.stderr @@ -1,31 +1,31 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:14:1 + --> $DIR/ub-uninhabit.rs:16:1 | LL | const BAD_BAD_BAD: Bar = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a value of uninhabited type Bar | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 0, align: 1) {} + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) {} error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:17:1 + --> $DIR/ub-uninhabit.rs:19:1 | LL | const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) }; | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type Bar | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 01 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-uninhabit.rs:20:1 + --> $DIR/ub-uninhabit.rs:22:1 | LL | const BAD_BAD_ARRAY: [Bar; 1] = unsafe { MaybeUninit { uninit: () }.init }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at [0]: encountered a value of uninhabited type Bar | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 0, align: 1) {} + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) {} error: aborting due to 3 previous errors diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.64bit.stderr b/src/test/ui/consts/const-eval/ub-wide-ptr.64bit.stderr deleted file mode 100644 index ab25303ddc0c..000000000000 --- a/src/test/ui/consts/const-eval/ub-wide-ptr.64bit.stderr +++ /dev/null @@ -1,297 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:37:1 - | -LL | const STR_TOO_LONG: &str = unsafe { mem::transmute((&42u8, 999usize)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:39:1 - | -LL | const NESTED_STR_MUCH_TOO_LONG: (&str,) = (unsafe { mem::transmute((&42, usize::MAX)) },); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered invalid reference metadata: slice is bigger than largest supported object - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ff ff ff ff ff ff ff ff │ ╾──────╼........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:42:1 - | -LL | const STR_LENGTH_PTR: &str = unsafe { mem::transmute((&42u8, &3)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:45:1 - | -LL | const MY_STR_LENGTH_PTR: &MyStr = unsafe { mem::transmute((&42u8, &3)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:47:1 - | -LL | const MY_STR_MUCH_TOO_LONG: &MyStr = unsafe { mem::transmute((&42u8, usize::MAX)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ff ff ff ff ff ff ff ff │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:51:1 - | -LL | const STR_NO_INIT: &str = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; - | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered uninitialized data in `str` - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:54:1 - | -LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered uninitialized data in `str` - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:61:1 - | -LL | const SLICE_LENGTH_UNINIT: &[u8] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:68:1 - | -LL | const SLICE_TOO_LONG: &[u8] = unsafe { mem::transmute((&42u8, 999usize)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:71:1 - | -LL | const SLICE_TOO_LONG_OVERFLOW: &[u32] = unsafe { mem::transmute((&42u32, isize::MAX)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ff ff ff ff ff ff ff 7f │ ╾──────╼........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:74:1 - | -LL | const SLICE_LENGTH_PTR: &[u8] = unsafe { mem::transmute((&42u8, &3)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:77:1 - | -LL | const SLICE_TOO_LONG_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, 999usize)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (going beyond the bounds of its allocation) - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ e7 03 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:80:1 - | -LL | const SLICE_LENGTH_PTR_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, &3)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:84:1 - | -LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x03, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾ALLOC_ID╼ │ ╾──────╼ - } - -note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:84:40 - | -LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:91:1 - | -LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered 0x03, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾ALLOC_ID╼ │ ╾──────╼ - } - -note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:91:42 - | -LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:95:1 - | -LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..1[0]: encountered 0x03, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - ╾ALLOC_ID╼ │ ╾──────╼ - } - -note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:95:42 - | -LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:103:1 - | -LL | const RAW_SLICE_LENGTH_UNINIT: *const [u8] = unsafe { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:112:1 - | -LL | const TRAIT_OBJ_SHORT_VTABLE_1: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u8))) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:116:1 - | -LL | const TRAIT_OBJ_SHORT_VTABLE_2: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u64))) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:120:1 - | -LL | const TRAIT_OBJ_INT_VTABLE: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, 4usize))) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered 0x4[noalloc], but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 04 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:123:57 - | -LL | const TRAIT_OBJ_UNALIGNED_VTABLE: &dyn Trait = unsafe { mem::transmute((&92u8, &[0u8; 128])) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:126:57 - | -LL | const TRAIT_OBJ_BAD_DROP_FN_NULL: &dyn Trait = unsafe { mem::transmute((&92u8, &[0usize; 8])) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable - -error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:129:56 - | -LL | const TRAIT_OBJ_BAD_DROP_FN_INT: &dyn Trait = unsafe { mem::transmute((&92u8, &[1usize; 8])) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:132:1 - | -LL | const TRAIT_OBJ_BAD_DROP_FN_NOT_FN_PTR: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &[&42u8; 8]))) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:137:1 - | -LL | const TRAIT_OBJ_CONTENT_INVALID: &dyn Trait = unsafe { mem::transmute::<_, &bool>(&3u8) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..: encountered 0x03, but expected a boolean - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:142:1 - | -LL | const RAW_TRAIT_OBJ_VTABLE_NULL: *const dyn Trait = unsafe { mem::transmute((&92u8, 0usize)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ 00 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:144:1 - | -LL | const RAW_TRAIT_OBJ_VTABLE_INVALID: *const dyn Trait = unsafe { mem::transmute((&92u8, &3u64)) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a vtable pointer - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──────╼╾──────╼ - } - -error[E0080]: could not evaluate static initializer - --> $DIR/ub-wide-ptr.rs:150:5 - | -LL | mem::transmute::<_, &dyn Trait>((&92u8, 0usize)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ out-of-bounds pointer use: null pointer is a dangling pointer (it has no provenance) - -error[E0080]: could not evaluate static initializer - --> $DIR/ub-wide-ptr.rs:154:5 - | -LL | mem::transmute::<_, &dyn Trait>((&92u8, &3u64)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable - -error: aborting due to 29 previous errors - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.rs b/src/test/ui/consts/const-eval/ub-wide-ptr.rs index d12e5e2bed93..a765dc71273d 100644 --- a/src/test/ui/consts/const-eval/ub-wide-ptr.rs +++ b/src/test/ui/consts/const-eval/ub-wide-ptr.rs @@ -1,10 +1,11 @@ -// stderr-per-bitwidth // ignore-tidy-linelength #![allow(unused)] use std::mem; -// normalize-stderr-test "╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼" -> "╾ALLOC_ID$2╼" +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" // normalize-stderr-test "offset \d+" -> "offset N" // normalize-stderr-test "alloc\d+" -> "allocN" // normalize-stderr-test "size \d+" -> "size N" diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.32bit.stderr b/src/test/ui/consts/const-eval/ub-wide-ptr.stderr similarity index 78% rename from src/test/ui/consts/const-eval/ub-wide-ptr.32bit.stderr rename to src/test/ui/consts/const-eval/ub-wide-ptr.stderr index 90a3dcada058..f38e7916b755 100644 --- a/src/test/ui/consts/const-eval/ub-wide-ptr.32bit.stderr +++ b/src/test/ui/consts/const-eval/ub-wide-ptr.stderr @@ -1,27 +1,27 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:37:1 + --> $DIR/ub-wide-ptr.rs:38:1 | LL | const STR_TOO_LONG: &str = unsafe { mem::transmute((&42u8, 999usize)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:39:1 + --> $DIR/ub-wide-ptr.rs:40:1 | LL | const NESTED_STR_MUCH_TOO_LONG: (&str,) = (unsafe { mem::transmute((&42, usize::MAX)) },); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered invalid reference metadata: slice is bigger than largest supported object | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ff ff ff ff │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:42:1 + --> $DIR/ub-wide-ptr.rs:43:1 | LL | const STR_LENGTH_PTR: &str = unsafe { mem::transmute((&42u8, &3)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -30,7 +30,7 @@ LL | const STR_LENGTH_PTR: &str = unsafe { mem::transmute((&42u8, &3)) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:45:1 + --> $DIR/ub-wide-ptr.rs:46:1 | LL | const MY_STR_LENGTH_PTR: &MyStr = unsafe { mem::transmute((&42u8, &3)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -39,68 +39,68 @@ LL | const MY_STR_LENGTH_PTR: &MyStr = unsafe { mem::transmute((&42u8, &3)) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:47:1 + --> $DIR/ub-wide-ptr.rs:48:1 | LL | const MY_STR_MUCH_TOO_LONG: &MyStr = unsafe { mem::transmute((&42u8, usize::MAX)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ff ff ff ff │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:51:1 + --> $DIR/ub-wide-ptr.rs:52:1 | LL | const STR_NO_INIT: &str = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; | ^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .: encountered uninitialized data in `str` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:54:1 + --> $DIR/ub-wide-ptr.rs:55:1 | LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[MaybeUninit:: { uninit: () }]) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered uninitialized data in `str` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 01 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:61:1 + --> $DIR/ub-wide-ptr.rs:62:1 | LL | const SLICE_LENGTH_UNINIT: &[u8] = unsafe { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:68:1 + --> $DIR/ub-wide-ptr.rs:69:1 | LL | const SLICE_TOO_LONG: &[u8] = unsafe { mem::transmute((&42u8, 999usize)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (going beyond the bounds of its allocation) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:71:1 + --> $DIR/ub-wide-ptr.rs:72:1 | LL | const SLICE_TOO_LONG_OVERFLOW: &[u32] = unsafe { mem::transmute((&42u32, isize::MAX)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered invalid reference metadata: slice is bigger than largest supported object | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ff ff ff 7f │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:74:1 + --> $DIR/ub-wide-ptr.rs:75:1 | LL | const SLICE_LENGTH_PTR: &[u8] = unsafe { mem::transmute((&42u8, &3)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -109,18 +109,18 @@ LL | const SLICE_LENGTH_PTR: &[u8] = unsafe { mem::transmute((&42u8, &3)) }; = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:77:1 + --> $DIR/ub-wide-ptr.rs:78:1 | LL | const SLICE_TOO_LONG_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, 999usize)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling box (going beyond the bounds of its allocation) | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ e7 03 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:80:1 + --> $DIR/ub-wide-ptr.rs:81:1 | LL | const SLICE_LENGTH_PTR_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, &3)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes @@ -129,165 +129,165 @@ LL | const SLICE_LENGTH_PTR_BOX: Box<[u8]> = unsafe { mem::transmute((&42u8, &3) = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:84:1 + --> $DIR/ub-wide-ptr.rs:85:1 | LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered 0x03, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾ALLOC_ID╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:84:40 + --> $DIR/ub-wide-ptr.rs:85:40 | LL | const SLICE_CONTENT_INVALID: &[bool] = &[unsafe { mem::transmute(3u8) }]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:91:1 + --> $DIR/ub-wide-ptr.rs:92:1 | LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..0: encountered 0x03, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾ALLOC_ID╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:91:42 + --> $DIR/ub-wide-ptr.rs:92:42 | LL | const MYSLICE_PREFIX_BAD: &MySliceBool = &MySlice(unsafe { mem::transmute(3u8) }, [false]); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:95:1 + --> $DIR/ub-wide-ptr.rs:96:1 | LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..1[0]: encountered 0x03, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - ╾ALLOC_ID╼ │ ╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } note: erroneous constant used - --> $DIR/ub-wide-ptr.rs:95:42 + --> $DIR/ub-wide-ptr.rs:96:42 | LL | const MYSLICE_SUFFIX_BAD: &MySliceBool = &MySlice(true, [unsafe { mem::transmute(3u8) }]); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:103:1 + --> $DIR/ub-wide-ptr.rs:104:1 | LL | const RAW_SLICE_LENGTH_UNINIT: *const [u8] = unsafe { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using uninitialized data, but this operation requires initialized memory error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:112:1 + --> $DIR/ub-wide-ptr.rs:113:1 | LL | const TRAIT_OBJ_SHORT_VTABLE_1: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u8))) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:116:1 + --> $DIR/ub-wide-ptr.rs:117:1 | LL | const TRAIT_OBJ_SHORT_VTABLE_2: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &3u64))) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:120:1 + --> $DIR/ub-wide-ptr.rs:121:1 | LL | const TRAIT_OBJ_INT_VTABLE: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, 4usize))) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered 0x4[noalloc], but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 04 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:123:57 + --> $DIR/ub-wide-ptr.rs:124:57 | LL | const TRAIT_OBJ_UNALIGNED_VTABLE: &dyn Trait = unsafe { mem::transmute((&92u8, &[0u8; 128])) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:126:57 + --> $DIR/ub-wide-ptr.rs:127:57 | LL | const TRAIT_OBJ_BAD_DROP_FN_NULL: &dyn Trait = unsafe { mem::transmute((&92u8, &[0usize; 8])) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable error[E0080]: evaluation of constant value failed - --> $DIR/ub-wide-ptr.rs:129:56 + --> $DIR/ub-wide-ptr.rs:130:56 | LL | const TRAIT_OBJ_BAD_DROP_FN_INT: &dyn Trait = unsafe { mem::transmute((&92u8, &[1usize; 8])) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:132:1 + --> $DIR/ub-wide-ptr.rs:133:1 | LL | const TRAIT_OBJ_BAD_DROP_FN_NOT_FN_PTR: W<&dyn Trait> = unsafe { mem::transmute(W((&92u8, &[&42u8; 8]))) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .0: encountered allocN, but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:137:1 + --> $DIR/ub-wide-ptr.rs:138:1 | LL | const TRAIT_OBJ_CONTENT_INVALID: &dyn Trait = unsafe { mem::transmute::<_, &bool>(&3u8) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at ..: encountered 0x03, but expected a boolean | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:142:1 + --> $DIR/ub-wide-ptr.rs:143:1 | LL | const RAW_TRAIT_OBJ_VTABLE_NULL: *const dyn Trait = unsafe { mem::transmute((&92u8, 0usize)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered null pointer, but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ 00 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/ub-wide-ptr.rs:144:1 + --> $DIR/ub-wide-ptr.rs:145:1 | LL | const RAW_TRAIT_OBJ_VTABLE_INVALID: *const dyn Trait = unsafe { mem::transmute((&92u8, &3u64)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered allocN, but expected a vtable pointer | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾ALLOC_ID╼ ╾ALLOC_ID╼ │ ╾──╼╾──╼ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: could not evaluate static initializer - --> $DIR/ub-wide-ptr.rs:150:5 + --> $DIR/ub-wide-ptr.rs:151:5 | LL | mem::transmute::<_, &dyn Trait>((&92u8, 0usize)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ out-of-bounds pointer use: null pointer is a dangling pointer (it has no provenance) error[E0080]: could not evaluate static initializer - --> $DIR/ub-wide-ptr.rs:154:5 + --> $DIR/ub-wide-ptr.rs:155:5 | LL | mem::transmute::<_, &dyn Trait>((&92u8, &3u64)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ using allocN as vtable pointer but it does not point to a vtable diff --git a/src/test/ui/consts/issue-83182.64bit.stderr b/src/test/ui/consts/issue-83182.64bit.stderr deleted file mode 100644 index 9e884ce12890..000000000000 --- a/src/test/ui/consts/issue-83182.64bit.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/issue-83182.rs:5:1 - | -LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes - | - = help: this code performed an operation that depends on the underlying bytes representing a pointer - = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 16, align: 8) { - ╾───────alloc4────────╼ 01 00 00 00 00 00 00 00 │ ╾──────╼........ - } - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/issue-83182.rs b/src/test/ui/consts/issue-83182.rs index 2536d2f08f28..b62f903bdc27 100644 --- a/src/test/ui/consts/issue-83182.rs +++ b/src/test/ui/consts/issue-83182.rs @@ -1,4 +1,6 @@ -// stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" use std::mem; struct MyStr(str); diff --git a/src/test/ui/consts/issue-83182.32bit.stderr b/src/test/ui/consts/issue-83182.stderr similarity index 74% rename from src/test/ui/consts/issue-83182.32bit.stderr rename to src/test/ui/consts/issue-83182.stderr index 2776e2b6fa21..1d578f910c04 100644 --- a/src/test/ui/consts/issue-83182.32bit.stderr +++ b/src/test/ui/consts/issue-83182.stderr @@ -1,13 +1,13 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/issue-83182.rs:5:1 + --> $DIR/issue-83182.rs:7:1 | LL | const MYSTR_NO_INIT: &MyStr = unsafe { mem::transmute::<&[_], _>(&[&()]) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to turn pointer into raw bytes | = help: this code performed an operation that depends on the underlying bytes representing a pointer = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported - = note: the raw bytes of the constant (size: 8, align: 4) { - ╾─alloc4──╼ 01 00 00 00 │ ╾──╼.... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to previous error diff --git a/src/test/ui/consts/std/alloc.32bit.stderr b/src/test/ui/consts/std/alloc.32bit.stderr index 79efcd3f62ee..8c83df53dade 100644 --- a/src/test/ui/consts/std/alloc.32bit.stderr +++ b/src/test/ui/consts/std/alloc.32bit.stderr @@ -1,23 +1,23 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:9:1 + --> $DIR/alloc.rs:12:1 | LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x00000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 00 10 00 00 00 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:13:1 + --> $DIR/alloc.rs:16:1 | LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x00000003, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 09 00 00 00 03 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 2 previous errors diff --git a/src/test/ui/consts/std/alloc.64bit.stderr b/src/test/ui/consts/std/alloc.64bit.stderr index cb477b72b312..addedad17047 100644 --- a/src/test/ui/consts/std/alloc.64bit.stderr +++ b/src/test/ui/consts/std/alloc.64bit.stderr @@ -1,23 +1,23 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:9:1 + --> $DIR/alloc.rs:12:1 | LL | const LAYOUT_INVALID_ZERO: Layout = unsafe { Layout::from_size_align_unchecked(0x1000, 0x00) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x0000000000000000, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/alloc.rs:13:1 + --> $DIR/alloc.rs:16:1 | LL | const LAYOUT_INVALID_THREE: Layout = unsafe { Layout::from_size_align_unchecked(9, 3) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .align.0.: encountered 0x0000000000000003, but expected a valid enum tag | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 09 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 │ ................ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 2 previous errors diff --git a/src/test/ui/consts/std/alloc.rs b/src/test/ui/consts/std/alloc.rs index 708b954e84ae..9abf35d63d30 100644 --- a/src/test/ui/consts/std/alloc.rs +++ b/src/test/ui/consts/std/alloc.rs @@ -1,5 +1,8 @@ // stderr-per-bitwidth // ignore-debug (the debug assertions change the error) +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" use std::alloc::Layout; // ok diff --git a/src/test/ui/consts/validate_never_arrays.64bit.stderr b/src/test/ui/consts/validate_never_arrays.64bit.stderr deleted file mode 100644 index dac4e200a89d..000000000000 --- a/src/test/ui/consts/validate_never_arrays.64bit.stderr +++ /dev/null @@ -1,36 +0,0 @@ -error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:4:1 - | -LL | const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; - | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type [!; 1] - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 8) { - 01 00 00 00 00 00 00 00 │ ........ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:7:1 - | -LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 1]) }; - | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 │ ................ - } - -error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:8:1 - | -LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 42]) }; - | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` - | - = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 16, align: 8) { - 01 00 00 00 00 00 00 00 2a 00 00 00 00 00 00 00 │ ........*....... - } - -error: aborting due to 3 previous errors - -For more information about this error, try `rustc --explain E0080`. diff --git a/src/test/ui/consts/validate_never_arrays.rs b/src/test/ui/consts/validate_never_arrays.rs index a02e386c66c4..f96ca6839265 100644 --- a/src/test/ui/consts/validate_never_arrays.rs +++ b/src/test/ui/consts/validate_never_arrays.rs @@ -1,4 +1,6 @@ -// stderr-per-bitwidth +// Strip out raw byte dumps to make comparison platform-independent: +// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)" +// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*a(lloc)?[0-9]+(\+[a-z0-9]+)?─*╼ )+ *│.*" -> "HEX_DUMP" #![feature(never_type)] const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; //~ ERROR undefined behavior diff --git a/src/test/ui/consts/validate_never_arrays.32bit.stderr b/src/test/ui/consts/validate_never_arrays.stderr similarity index 73% rename from src/test/ui/consts/validate_never_arrays.32bit.stderr rename to src/test/ui/consts/validate_never_arrays.stderr index a5dbc718145c..12090e483a4e 100644 --- a/src/test/ui/consts/validate_never_arrays.32bit.stderr +++ b/src/test/ui/consts/validate_never_arrays.stderr @@ -1,34 +1,34 @@ error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:4:1 + --> $DIR/validate_never_arrays.rs:6:1 | LL | const _: &[!; 1] = unsafe { &*(1_usize as *const [!; 1]) }; | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered a reference pointing to uninhabited type [!; 1] | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 4, align: 4) { - 01 00 00 00 │ .... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:7:1 + --> $DIR/validate_never_arrays.rs:9:1 | LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 1]) }; | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 01 00 00 00 01 00 00 00 │ ........ + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error[E0080]: it is undefined behavior to use this value - --> $DIR/validate_never_arrays.rs:8:1 + --> $DIR/validate_never_arrays.rs:10:1 | LL | const _: &[!] = unsafe { &*(1_usize as *const [!; 42]) }; | ^^^^^^^^^^^^^ constructing invalid value at .[0]: encountered a value of the never type `!` | = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior. - = note: the raw bytes of the constant (size: 8, align: 4) { - 01 00 00 00 2a 00 00 00 │ ....*... + = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) { + HEX_DUMP } error: aborting due to 3 previous errors From a7d411425c10261bd1535d0e98cbe2e7181b9553 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Wed, 28 Dec 2022 00:59:56 +0900 Subject: [PATCH 178/478] mbe: handle multi-character separator --- crates/mbe/src/expander/matcher.rs | 42 +++++++++++++++++------------- crates/mbe/src/parser.rs | 10 ------- crates/mbe/src/tt_iter.rs | 6 ++--- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index 8773993a2ed7..88eae136f732 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -321,8 +321,8 @@ struct MatchState<'t> { /// The KleeneOp of this sequence if we are in a repetition. sep_kind: Option, - /// Number of tokens of separator parsed - sep_parsed: Option, + /// Whether we already matched separator token. + sep_matched: bool, /// Matched meta variables bindings bindings: BindingsIdx, @@ -387,7 +387,7 @@ fn match_loop_inner<'t>( None => { // We are at or past the end of the matcher of `item`. if let Some(up) = &item.up { - if item.sep_parsed.is_none() { + if !item.sep_matched { // Get the `up` matcher let mut new_pos = (**up).clone(); new_pos.bindings = bindings_builder.copy(&new_pos.bindings); @@ -401,14 +401,17 @@ fn match_loop_inner<'t>( } // Check if we need a separator. - // We check the separator one by one - let sep_idx = item.sep_parsed.unwrap_or(0); - let sep_len = item.sep.as_ref().map_or(0, Separator::tt_count); - if item.sep.is_some() && sep_idx != sep_len { + if item.sep.is_some() && !item.sep_matched { let sep = item.sep.as_ref().unwrap(); - if src.clone().expect_separator(sep, sep_idx) { + let mut fork = src.clone(); + if fork.expect_separator(sep) { + // HACK: here we use `meta_result` to pass `TtIter` back to caller because + // it might have been advanced multiple times. `ValueResult` is + // insignificant. + item.meta_result = Some((fork, ValueResult::ok(None))); item.dot.next(); - item.sep_parsed = Some(sep_idx + 1); + // item.sep_parsed = Some(sep_len); + item.sep_matched = true; try_push!(next_items, item); } } @@ -416,7 +419,7 @@ fn match_loop_inner<'t>( // and try to match again UNLESS we are only allowed to have _one_ repetition. else if item.sep_kind != Some(RepeatKind::ZeroOrOne) { item.dot = item.dot.reset(); - item.sep_parsed = None; + item.sep_matched = false; bindings_builder.push_default(&mut item.bindings); cur_items.push(item); } @@ -451,7 +454,7 @@ fn match_loop_inner<'t>( up: Some(Box::new(item)), sep: separator.clone(), sep_kind: Some(*kind), - sep_parsed: None, + sep_matched: false, bindings: bindings_builder.alloc(), meta_result: None, is_error: false, @@ -592,7 +595,7 @@ fn match_loop(pattern: &MetaTemplate, src: &tt::Subtree) -> Match { up: None, sep: None, sep_kind: None, - sep_parsed: None, + sep_matched: false, bindings: bindings_builder.alloc(), is_error: false, meta_result: None, @@ -864,14 +867,14 @@ impl<'a> Iterator for OpDelimitedIter<'a> { } impl<'a> TtIter<'a> { - fn expect_separator(&mut self, separator: &Separator, idx: usize) -> bool { + fn expect_separator(&mut self, separator: &Separator) -> bool { let mut fork = self.clone(); let ok = match separator { - Separator::Ident(lhs) if idx == 0 => match fork.expect_ident_or_underscore() { + Separator::Ident(lhs) => match fork.expect_ident_or_underscore() { Ok(rhs) => rhs.text == lhs.text, Err(_) => false, }, - Separator::Literal(lhs) if idx == 0 => match fork.expect_literal() { + Separator::Literal(lhs) => match fork.expect_literal() { Ok(rhs) => match rhs { tt::Leaf::Literal(rhs) => rhs.text == lhs.text, tt::Leaf::Ident(rhs) => rhs.text == lhs.text, @@ -879,11 +882,14 @@ impl<'a> TtIter<'a> { }, Err(_) => false, }, - Separator::Puncts(lhss) if idx < lhss.len() => match fork.expect_single_punct() { - Ok(rhs) => rhs.char == lhss[idx].char, + Separator::Puncts(lhs) => match fork.expect_glued_punct() { + Ok(rhs) => { + let lhs = lhs.iter().map(|it| it.char); + let rhs = rhs.iter().map(|it| it.char); + lhs.eq(rhs) + } Err(_) => false, }, - _ => false, }; if ok { *self = fork; diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index c2c702261c4e..3d9a61dbc866 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -110,16 +110,6 @@ impl PartialEq for Separator { } } -impl Separator { - pub(crate) fn tt_count(&self) -> usize { - match self { - Separator::Literal(_) => 1, - Separator::Ident(_) => 1, - Separator::Puncts(it) => it.len(), - } - } -} - #[derive(Clone, Copy)] enum Mode { Pattern, diff --git a/crates/mbe/src/tt_iter.rs b/crates/mbe/src/tt_iter.rs index e216e5658b8d..bee7b5de6ac3 100644 --- a/crates/mbe/src/tt_iter.rs +++ b/crates/mbe/src/tt_iter.rs @@ -112,10 +112,9 @@ impl<'a> TtIter<'a> { match (first.char, second.char, third.map(|it| it.char)) { ('.', '.', Some('.' | '=')) | ('<', '<', Some('=')) | ('>', '>', Some('=')) => { - let puncts = smallvec![first, second.clone(), third.unwrap().clone()]; let _ = self.next().unwrap(); let _ = self.next().unwrap(); - Ok(puncts) + Ok(smallvec![first, second.clone(), third.unwrap().clone()]) } ('-' | '!' | '*' | '/' | '&' | '%' | '^' | '+' | '<' | '=' | '>' | '|', '=', _) | ('-' | '=' | '>', '>', _) @@ -125,9 +124,8 @@ impl<'a> TtIter<'a> { | ('&', '&', _) | ('<', '<', _) | ('|', '|', _) => { - let puncts = smallvec![first, second.clone()]; let _ = self.next().unwrap(); - Ok(puncts) + Ok(smallvec![first, second.clone()]) } _ => Ok(smallvec![first]), } From c617a8e01cf3ac7c4b69a473be038a80e7219371 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Wed, 28 Dec 2022 18:06:11 +0100 Subject: [PATCH 179/478] Rename `Rptr` to `Ref` in AST and HIR The name makes a lot more sense, and `ty::TyKind` calls it `Ref` already as well. --- clippy_lints/src/dereference.rs | 4 ++-- clippy_lints/src/manual_async_fn.rs | 2 +- clippy_lints/src/methods/mod.rs | 2 +- clippy_lints/src/mut_mut.rs | 4 ++-- clippy_lints/src/needless_arbitrary_self_type.rs | 2 +- clippy_lints/src/pass_by_ref_or_value.rs | 2 +- clippy_lints/src/ptr.rs | 10 +++++----- clippy_lints/src/redundant_static_lifetimes.rs | 2 +- clippy_lints/src/ref_option_ref.rs | 4 ++-- clippy_lints/src/transmute/transmute_ptr_to_ref.rs | 2 +- clippy_lints/src/types/mod.rs | 2 +- clippy_lints/src/types/type_complexity.rs | 2 +- clippy_lints/src/types/utils.rs | 2 +- .../src/utils/internal_lints/lint_without_lint_pass.rs | 2 +- clippy_utils/src/ast_utils.rs | 2 +- clippy_utils/src/hir_utils.rs | 4 ++-- clippy_utils/src/lib.rs | 2 +- clippy_utils/src/sugg.rs | 4 ++-- clippy_utils/src/ty.rs | 2 +- 19 files changed, 28 insertions(+), 28 deletions(-) diff --git a/clippy_lints/src/dereference.rs b/clippy_lints/src/dereference.rs index 7b43d8ccc67d..05f2b92c0370 100644 --- a/clippy_lints/src/dereference.rs +++ b/clippy_lints/src/dereference.rs @@ -969,14 +969,14 @@ fn binding_ty_auto_deref_stability<'tcx>( precedence: i8, binder_args: &'tcx List, ) -> Position { - let TyKind::Rptr(_, ty) = &ty.kind else { + let TyKind::Ref(_, ty) = &ty.kind else { return Position::Other(precedence); }; let mut ty = ty; loop { break match ty.ty.kind { - TyKind::Rptr(_, ref ref_ty) => { + TyKind::Ref(_, ref ref_ty) => { ty = ref_ty; continue; }, diff --git a/clippy_lints/src/manual_async_fn.rs b/clippy_lints/src/manual_async_fn.rs index 075ecbe7eded..676a37e04f60 100644 --- a/clippy_lints/src/manual_async_fn.rs +++ b/clippy_lints/src/manual_async_fn.rs @@ -152,7 +152,7 @@ fn captures_all_lifetimes(inputs: &[Ty<'_>], output_lifetimes: &[LifetimeName]) let input_lifetimes: Vec = inputs .iter() .filter_map(|ty| { - if let TyKind::Rptr(lt, _) = ty.kind { + if let TyKind::Ref(lt, _) = ty.kind { Some(lt.res) } else { None diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs index 561e4336593b..77be61b47934 100644 --- a/clippy_lints/src/methods/mod.rs +++ b/clippy_lints/src/methods/mod.rs @@ -3986,7 +3986,7 @@ impl OutType { (Self::Unit, &hir::FnRetTy::Return(ty)) if is_unit(ty) => true, (Self::Bool, &hir::FnRetTy::Return(ty)) if is_bool(ty) => true, (Self::Any, &hir::FnRetTy::Return(ty)) if !is_unit(ty) => true, - (Self::Ref, &hir::FnRetTy::Return(ty)) => matches!(ty.kind, hir::TyKind::Rptr(_, _)), + (Self::Ref, &hir::FnRetTy::Return(ty)) => matches!(ty.kind, hir::TyKind::Ref(_, _)), _ => false, } } diff --git a/clippy_lints/src/mut_mut.rs b/clippy_lints/src/mut_mut.rs index bc90e131b7f3..64d8333a093b 100644 --- a/clippy_lints/src/mut_mut.rs +++ b/clippy_lints/src/mut_mut.rs @@ -86,7 +86,7 @@ impl<'a, 'tcx> intravisit::Visitor<'tcx> for MutVisitor<'a, 'tcx> { return; } - if let hir::TyKind::Rptr( + if let hir::TyKind::Ref( _, hir::MutTy { ty: pty, @@ -94,7 +94,7 @@ impl<'a, 'tcx> intravisit::Visitor<'tcx> for MutVisitor<'a, 'tcx> { }, ) = ty.kind { - if let hir::TyKind::Rptr( + if let hir::TyKind::Ref( _, hir::MutTy { mutbl: hir::Mutability::Mut, diff --git a/clippy_lints/src/needless_arbitrary_self_type.rs b/clippy_lints/src/needless_arbitrary_self_type.rs index f2ffac85bf40..5457eeec4eac 100644 --- a/clippy_lints/src/needless_arbitrary_self_type.rs +++ b/clippy_lints/src/needless_arbitrary_self_type.rs @@ -124,7 +124,7 @@ impl EarlyLintPass for NeedlessArbitrarySelfType { check_param_inner(cx, path, p.span.to(p.ty.span), &Mode::Value, mutbl); } }, - TyKind::Rptr(lifetime, mut_ty) => { + TyKind::Ref(lifetime, mut_ty) => { if_chain! { if let TyKind::Path(None, path) = &mut_ty.ty.kind; if let PatKind::Ident(BindingAnnotation::NONE, _, _) = p.pat.kind; diff --git a/clippy_lints/src/pass_by_ref_or_value.rs b/clippy_lints/src/pass_by_ref_or_value.rs index f9fd3645668a..75add4ee4aad 100644 --- a/clippy_lints/src/pass_by_ref_or_value.rs +++ b/clippy_lints/src/pass_by_ref_or_value.rs @@ -184,7 +184,7 @@ impl<'tcx> PassByRefOrValue { if is_copy(cx, ty) && let Some(size) = cx.layout_of(ty).ok().map(|l| l.size.bytes()) && size <= self.ref_min_size - && let hir::TyKind::Rptr(_, MutTy { ty: decl_ty, .. }) = input.kind + && let hir::TyKind::Ref(_, MutTy { ty: decl_ty, .. }) = input.kind { if let Some(typeck) = cx.maybe_typeck_results() { // Don't lint if an unsafe pointer is created. diff --git a/clippy_lints/src/ptr.rs b/clippy_lints/src/ptr.rs index e395ff54cb15..262953042581 100644 --- a/clippy_lints/src/ptr.rs +++ b/clippy_lints/src/ptr.rs @@ -421,7 +421,7 @@ fn check_fn_args<'cx, 'tcx: 'cx>( if let ty::Ref(_, ty, mutability) = *ty.kind(); if let ty::Adt(adt, substs) = *ty.kind(); - if let TyKind::Rptr(lt, ref ty) = hir_ty.kind; + if let TyKind::Ref(lt, ref ty) = hir_ty.kind; if let TyKind::Path(QPath::Resolved(None, path)) = ty.ty.kind; // Check that the name as typed matches the actual name of the type. @@ -503,14 +503,14 @@ fn check_fn_args<'cx, 'tcx: 'cx>( fn check_mut_from_ref<'tcx>(cx: &LateContext<'tcx>, sig: &FnSig<'_>, body: Option<&'tcx Body<'_>>) { if let FnRetTy::Return(ty) = sig.decl.output - && let Some((out, Mutability::Mut, _)) = get_rptr_lm(ty) + && let Some((out, Mutability::Mut, _)) = get_ref_lm(ty) { let out_region = cx.tcx.named_region(out.hir_id); let args: Option> = sig .decl .inputs .iter() - .filter_map(get_rptr_lm) + .filter_map(get_ref_lm) .filter(|&(lt, _, _)| cx.tcx.named_region(lt.hir_id) == out_region) .map(|(_, mutability, span)| (mutability == Mutability::Not).then_some(span)) .collect(); @@ -704,8 +704,8 @@ fn matches_preds<'tcx>( }) } -fn get_rptr_lm<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> Option<(&'tcx Lifetime, Mutability, Span)> { - if let TyKind::Rptr(lt, ref m) = ty.kind { +fn get_ref_lm<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> Option<(&'tcx Lifetime, Mutability, Span)> { + if let TyKind::Ref(lt, ref m) = ty.kind { Some((lt, m.mutbl, ty.span)) } else { None diff --git a/clippy_lints/src/redundant_static_lifetimes.rs b/clippy_lints/src/redundant_static_lifetimes.rs index 41f991a967bf..44bf824aa0e2 100644 --- a/clippy_lints/src/redundant_static_lifetimes.rs +++ b/clippy_lints/src/redundant_static_lifetimes.rs @@ -59,7 +59,7 @@ impl RedundantStaticLifetimes { } }, // This is what we are looking for ! - TyKind::Rptr(ref optional_lifetime, ref borrow_type) => { + TyKind::Ref(ref optional_lifetime, ref borrow_type) => { // Match the 'static lifetime if let Some(lifetime) = *optional_lifetime { match borrow_type.ty.kind { diff --git a/clippy_lints/src/ref_option_ref.rs b/clippy_lints/src/ref_option_ref.rs index f21b3ea6c3b0..448a32b77c03 100644 --- a/clippy_lints/src/ref_option_ref.rs +++ b/clippy_lints/src/ref_option_ref.rs @@ -39,7 +39,7 @@ declare_lint_pass!(RefOptionRef => [REF_OPTION_REF]); impl<'tcx> LateLintPass<'tcx> for RefOptionRef { fn check_ty(&mut self, cx: &LateContext<'tcx>, ty: &'tcx Ty<'tcx>) { if_chain! { - if let TyKind::Rptr(_, ref mut_ty) = ty.kind; + if let TyKind::Ref(_, ref mut_ty) = ty.kind; if mut_ty.mutbl == Mutability::Not; if let TyKind::Path(ref qpath) = &mut_ty.ty.kind; let last = last_path_segment(qpath); @@ -52,7 +52,7 @@ impl<'tcx> LateLintPass<'tcx> for RefOptionRef { GenericArg::Type(inner_ty) => Some(inner_ty), _ => None, }); - if let TyKind::Rptr(_, ref inner_mut_ty) = inner_ty.kind; + if let TyKind::Ref(_, ref inner_mut_ty) = inner_ty.kind; if inner_mut_ty.mutbl == Mutability::Not; then { diff --git a/clippy_lints/src/transmute/transmute_ptr_to_ref.rs b/clippy_lints/src/transmute/transmute_ptr_to_ref.rs index 3dde4eee6717..54ac04df1c12 100644 --- a/clippy_lints/src/transmute/transmute_ptr_to_ref.rs +++ b/clippy_lints/src/transmute/transmute_ptr_to_ref.rs @@ -71,7 +71,7 @@ pub(super) fn check<'tcx>( /// Gets the type `Bar` in `…::transmute`. fn get_explicit_type<'tcx>(path: &'tcx Path<'tcx>) -> Option<&'tcx hir::Ty<'tcx>> { if let GenericArg::Type(ty) = path.segments.last()?.args?.args.get(1)? - && let TyKind::Rptr(_, ty) = &ty.kind + && let TyKind::Ref(_, ty) = &ty.kind { Some(ty.ty) } else { diff --git a/clippy_lints/src/types/mod.rs b/clippy_lints/src/types/mod.rs index 20978e81dc58..c14f056a1f2d 100644 --- a/clippy_lints/src/types/mod.rs +++ b/clippy_lints/src/types/mod.rs @@ -539,7 +539,7 @@ impl Types { QPath::LangItem(..) => {}, } }, - TyKind::Rptr(lt, ref mut_ty) => { + TyKind::Ref(lt, ref mut_ty) => { context.is_nested_call = true; if !borrowed_box::check(cx, hir_ty, lt, mut_ty) { self.check_ty(cx, mut_ty.ty, context); diff --git a/clippy_lints/src/types/type_complexity.rs b/clippy_lints/src/types/type_complexity.rs index 5ca4023aa5c1..0aa50c99c169 100644 --- a/clippy_lints/src/types/type_complexity.rs +++ b/clippy_lints/src/types/type_complexity.rs @@ -44,7 +44,7 @@ impl<'tcx> Visitor<'tcx> for TypeComplexityVisitor { fn visit_ty(&mut self, ty: &'tcx hir::Ty<'_>) { let (add_score, sub_nest) = match ty.kind { // _, &x and *x have only small overhead; don't mess with nesting level - TyKind::Infer | TyKind::Ptr(..) | TyKind::Rptr(..) => (1, 0), + TyKind::Infer | TyKind::Ptr(..) | TyKind::Ref(..) => (1, 0), // the "normal" components of a type: named types, arrays/tuples TyKind::Path(..) | TyKind::Slice(..) | TyKind::Tup(..) | TyKind::Array(..) => (10 * self.nest, 1), diff --git a/clippy_lints/src/types/utils.rs b/clippy_lints/src/types/utils.rs index 0fa75f8f0a9b..7f43b7841ff3 100644 --- a/clippy_lints/src/types/utils.rs +++ b/clippy_lints/src/types/utils.rs @@ -13,7 +13,7 @@ pub(super) fn match_borrows_parameter(_cx: &LateContext<'_>, qpath: &QPath<'_>) GenericArg::Type(ty) => Some(ty), _ => None, }); - if let TyKind::Rptr(..) = ty.kind; + if let TyKind::Ref(..) = ty.kind; then { return Some(ty.span); } diff --git a/clippy_lints/src/utils/internal_lints/lint_without_lint_pass.rs b/clippy_lints/src/utils/internal_lints/lint_without_lint_pass.rs index 786d9608c851..4c3b1b131fd4 100644 --- a/clippy_lints/src/utils/internal_lints/lint_without_lint_pass.rs +++ b/clippy_lints/src/utils/internal_lints/lint_without_lint_pass.rs @@ -257,7 +257,7 @@ impl<'tcx> LateLintPass<'tcx> for LintWithoutLintPass { } pub(super) fn is_lint_ref_type(cx: &LateContext<'_>, ty: &hir::Ty<'_>) -> bool { - if let TyKind::Rptr( + if let TyKind::Ref( _, MutTy { ty: inner, diff --git a/clippy_utils/src/ast_utils.rs b/clippy_utils/src/ast_utils.rs index 49e5f283db08..9d0263e93be7 100644 --- a/clippy_utils/src/ast_utils.rs +++ b/clippy_utils/src/ast_utils.rs @@ -625,7 +625,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool { (Slice(l), Slice(r)) => eq_ty(l, r), (Array(le, ls), Array(re, rs)) => eq_ty(le, re) && eq_expr(&ls.value, &rs.value), (Ptr(l), Ptr(r)) => l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty), - (Rptr(ll, l), Rptr(rl, r)) => { + (Ref(ll, l), Ref(rl, r)) => { both(ll, rl, |l, r| eq_id(l.ident, r.ident)) && l.mutbl == r.mutbl && eq_ty(&l.ty, &r.ty) }, (BareFn(l), BareFn(r)) => { diff --git a/clippy_utils/src/hir_utils.rs b/clippy_utils/src/hir_utils.rs index 07fb6af91ba0..2bbe1a19b625 100644 --- a/clippy_utils/src/hir_utils.rs +++ b/clippy_utils/src/hir_utils.rs @@ -430,7 +430,7 @@ impl HirEqInterExpr<'_, '_, '_> { (&TyKind::Slice(l_vec), &TyKind::Slice(r_vec)) => self.eq_ty(l_vec, r_vec), (&TyKind::Array(lt, ll), &TyKind::Array(rt, rl)) => self.eq_ty(lt, rt) && self.eq_array_length(ll, rl), (TyKind::Ptr(l_mut), TyKind::Ptr(r_mut)) => l_mut.mutbl == r_mut.mutbl && self.eq_ty(l_mut.ty, r_mut.ty), - (TyKind::Rptr(_, l_rmut), TyKind::Rptr(_, r_rmut)) => { + (TyKind::Ref(_, l_rmut), TyKind::Ref(_, r_rmut)) => { l_rmut.mutbl == r_rmut.mutbl && self.eq_ty(l_rmut.ty, r_rmut.ty) }, (TyKind::Path(l), TyKind::Path(r)) => self.eq_qpath(l, r), @@ -950,7 +950,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { self.hash_ty(mut_ty.ty); mut_ty.mutbl.hash(&mut self.s); }, - TyKind::Rptr(lifetime, ref mut_ty) => { + TyKind::Ref(lifetime, ref mut_ty) => { self.hash_lifetime(lifetime); self.hash_ty(mut_ty.ty); mut_ty.mutbl.hash(&mut self.s); diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index 43e2d1ec826c..d863609b6a72 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -2264,7 +2264,7 @@ pub fn peel_hir_ty_refs<'a>(mut ty: &'a hir::Ty<'a>) -> (&'a hir::Ty<'a>, usize) let mut count = 0; loop { match &ty.kind { - TyKind::Rptr(_, ref_ty) => { + TyKind::Ref(_, ref_ty) => { ty = ref_ty.ty; count += 1; }, diff --git a/clippy_utils/src/sugg.rs b/clippy_utils/src/sugg.rs index b66604f33db1..a203a7afddf8 100644 --- a/clippy_utils/src/sugg.rs +++ b/clippy_utils/src/sugg.rs @@ -813,9 +813,9 @@ pub fn deref_closure_args(cx: &LateContext<'_>, closure: &hir::Expr<'_>) -> Opti let closure_body = cx.tcx.hir().body(body); // is closure arg a type annotated double reference (i.e.: `|x: &&i32| ...`) // a type annotation is present if param `kind` is different from `TyKind::Infer` - let closure_arg_is_type_annotated_double_ref = if let TyKind::Rptr(_, MutTy { ty, .. }) = fn_decl.inputs[0].kind + let closure_arg_is_type_annotated_double_ref = if let TyKind::Ref(_, MutTy { ty, .. }) = fn_decl.inputs[0].kind { - matches!(ty.kind, TyKind::Rptr(_, MutTy { .. })) + matches!(ty.kind, TyKind::Ref(_, MutTy { .. })) } else { false }; diff --git a/clippy_utils/src/ty.rs b/clippy_utils/src/ty.rs index 2773da70d788..c8d56a3be5cf 100644 --- a/clippy_utils/src/ty.rs +++ b/clippy_utils/src/ty.rs @@ -496,7 +496,7 @@ pub fn type_is_unsafe_function<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -> bo /// Returns the base type for HIR references and pointers. pub fn walk_ptrs_hir_ty<'tcx>(ty: &'tcx hir::Ty<'tcx>) -> &'tcx hir::Ty<'tcx> { match ty.kind { - TyKind::Ptr(ref mut_ty) | TyKind::Rptr(_, ref mut_ty) => walk_ptrs_hir_ty(mut_ty.ty), + TyKind::Ptr(ref mut_ty) | TyKind::Ref(_, ref mut_ty) => walk_ptrs_hir_ty(mut_ty.ty), _ => ty, } } From 16264a3a53765d692e55ba73c74bb3abc653cb4b Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 20:43:12 +0000 Subject: [PATCH 180/478] fixup a doc comment --- crates/hir-ty/src/infer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 7cf4fb10506f..18e45511a4b4 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -688,7 +688,7 @@ impl<'a> InferenceContext<'a> { } } - /// Replaces Ty::Unknown by a new type var, so we can maybe still infer it. + /// Replaces `Ty::Error` by a new type var, so we can maybe still infer it. fn insert_type_vars_shallow(&mut self, ty: Ty) -> Ty { match ty.kind(Interner) { TyKind::Error => self.table.new_type_var(), From eecab99dec7a812199d2c403013d393dd1dec680 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 20:46:45 +0000 Subject: [PATCH 181/478] Allow `break` and co to go through `try{}` blocks --- crates/hir-ty/src/infer/expr.rs | 2 +- .../src/handlers/break_outside_of_loop.rs | 40 +++++++++---------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index b1f4de826077..0d3f15c3d5d8 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -152,7 +152,7 @@ impl<'a> InferenceContext<'a> { .1 } Expr::TryBlock { body } => { - self.with_breakable_ctx(BreakableKind::Border, self.err_ty(), None, |this| { + self.with_breakable_ctx(BreakableKind::Block, self.err_ty(), None, |this| { let _inner = this.infer_expr(*body, expected); }); // FIXME should be std::result::Result<{inner}, _> diff --git a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs index 0c92e706b391..7a957e1c5042 100644 --- a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs +++ b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs @@ -37,28 +37,6 @@ fn foo() { ); } - #[test] - fn try_blocks_are_borders() { - check_diagnostics( - r#" -fn foo() { - 'a: loop { - try { - break; - //^^^^^ error: break outside of loop - break 'a; - //^^^^^^^^ error: break outside of loop - continue; - //^^^^^^^^ error: continue outside of loop - continue 'a; - //^^^^^^^^^^^ error: continue outside of loop - }; - } -} -"#, - ); - } - #[test] fn async_blocks_are_borders() { check_diagnostics( @@ -121,6 +99,24 @@ fn foo() { ); } + #[test] + fn try_blocks_pass_through() { + check_diagnostics( + r#" +fn foo() { + 'a: loop { + try { + break; + break 'a; + continue; + continue 'a; + }; + } +} +"#, + ); + } + #[test] fn label_blocks() { check_diagnostics( From 797da9e8da3a464ba9b0ce6420e4323ed8e53dc1 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 20:53:55 +0000 Subject: [PATCH 182/478] Actually test `async{}` blocks in `async_blocks_are_borders` --- crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs index 7a957e1c5042..a27996593a45 100644 --- a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs +++ b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs @@ -43,7 +43,7 @@ fn foo() { r#" fn foo() { 'a: loop { - try { + async { break; //^^^^^ error: break outside of loop break 'a; From ef303f224fb67fa09fe007894242828fa17d24f8 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 20:54:38 +0000 Subject: [PATCH 183/478] Actually test closures in `closures_are_borders` --- crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs index a27996593a45..10e637979f2c 100644 --- a/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs +++ b/crates/ide-diagnostics/src/handlers/break_outside_of_loop.rs @@ -65,7 +65,7 @@ fn foo() { r#" fn foo() { 'a: loop { - try { + || { break; //^^^^^ error: break outside of loop break 'a; From aaa682c534f488b51063e015a23597b344a335ff Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 21:25:47 +0000 Subject: [PATCH 184/478] Implement `try{}` block type inference --- crates/hir-ty/src/infer/expr.rs | 17 +++++++++++++---- crates/hir-ty/src/tests/simple.rs | 28 ++++++++++++++-------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 0d3f15c3d5d8..d4050f9af49c 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -152,11 +152,20 @@ impl<'a> InferenceContext<'a> { .1 } Expr::TryBlock { body } => { - self.with_breakable_ctx(BreakableKind::Block, self.err_ty(), None, |this| { - let _inner = this.infer_expr(*body, expected); + // The type that is returned from the try block + let try_ty = self.table.new_type_var(); + if let Some(ty) = expected.only_has_type(&mut self.table) { + self.unify(&try_ty, &ty); + } + + // The ok-ish type that is expected from the last expression + let ok_ty = self.resolve_associated_type(try_ty.clone(), self.resolve_ops_try_ok()); + + self.with_breakable_ctx(BreakableKind::Block, ok_ty.clone(), None, |this| { + this.infer_expr(*body, &Expectation::has_type(ok_ty)); }); - // FIXME should be std::result::Result<{inner}, _> - self.err_ty() + + try_ty } Expr::Async { body } => { let ret_ty = self.table.new_type_var(); diff --git a/crates/hir-ty/src/tests/simple.rs b/crates/hir-ty/src/tests/simple.rs index d7431443b83d..146145523b24 100644 --- a/crates/hir-ty/src/tests/simple.rs +++ b/crates/hir-ty/src/tests/simple.rs @@ -2064,17 +2064,17 @@ fn fn_pointer_return() { fn block_modifiers_smoke_test() { check_infer( r#" -//- minicore: future +//- minicore: future, try async fn main() { let x = unsafe { 92 }; let y = async { async { () }.await }; - let z = try { () }; + let z: core::ops::ControlFlow<(), _> = try { () }; let w = const { 92 }; let t = 'a: { 92 }; } "#, expect![[r#" - 16..162 '{ ...2 }; }': () + 16..193 '{ ...2 }; }': () 26..27 'x': i32 30..43 'unsafe { 92 }': i32 30..43 'unsafe { 92 }': i32 @@ -2086,17 +2086,17 @@ async fn main() { 65..77 'async { () }': impl Future 65..83 'async ....await': () 73..75 '()': () - 95..96 'z': {unknown} - 99..109 'try { () }': () - 99..109 'try { () }': {unknown} - 105..107 '()': () - 119..120 'w': i32 - 123..135 'const { 92 }': i32 - 123..135 'const { 92 }': i32 - 131..133 '92': i32 - 145..146 't': i32 - 149..159 ''a: { 92 }': i32 - 155..157 '92': i32 + 95..96 'z': ControlFlow<(), ()> + 130..140 'try { () }': () + 130..140 'try { () }': ControlFlow<(), ()> + 136..138 '()': () + 150..151 'w': i32 + 154..166 'const { 92 }': i32 + 154..166 'const { 92 }': i32 + 162..164 '92': i32 + 176..177 't': i32 + 180..190 ''a: { 92 }': i32 + 186..188 '92': i32 "#]], ) } From 4a16afa264b294b42509660eb7423a8efeaf6787 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 22:42:26 +0000 Subject: [PATCH 185/478] Parse `do yeet` expressions --- crates/ide/src/signature_help.rs | 2 +- crates/parser/src/grammar/expressions/atom.rs | 20 ++++++++++++ crates/parser/src/parser.rs | 7 ++++- crates/parser/src/syntax_kind/generated.rs | 9 +++++- .../parser/inline/ok/0204_yeet_expr.rast | 31 +++++++++++++++++++ .../parser/inline/ok/0204_yeet_expr.rs | 4 +++ crates/syntax/src/tests/ast_src.rs | 5 +-- 7 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast create mode 100644 crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs diff --git a/crates/ide/src/signature_help.rs b/crates/ide/src/signature_help.rs index 6045a787ecc2..f807ba30f40a 100644 --- a/crates/ide/src/signature_help.rs +++ b/crates/ide/src/signature_help.rs @@ -646,7 +646,7 @@ pub fn add_one(x: i32) -> i32 { x + 1 } -pub fn do() { +pub fn r#do() { add_one($0 }"#, expect![[r##" diff --git a/crates/parser/src/grammar/expressions/atom.rs b/crates/parser/src/grammar/expressions/atom.rs index 81027a7bf33d..efa3997353bf 100644 --- a/crates/parser/src/grammar/expressions/atom.rs +++ b/crates/parser/src/grammar/expressions/atom.rs @@ -48,6 +48,7 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet = T![unsafe], T![return], T![yield], + T![do], T![break], T![continue], T![async], @@ -93,6 +94,7 @@ pub(super) fn atom_expr( T![match] => match_expr(p), T![return] => return_expr(p), T![yield] => yield_expr(p), + T![do] if p.nth_at_contextual_kw(1, T![yeet]) => yeet_expr(p), T![continue] => continue_expr(p), T![break] => break_expr(p, r), @@ -533,6 +535,7 @@ fn return_expr(p: &mut Parser<'_>) -> CompletedMarker { } m.complete(p, RETURN_EXPR) } + // test yield_expr // fn foo() { // yield; @@ -548,6 +551,23 @@ fn yield_expr(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, YIELD_EXPR) } +// test yeet_expr +// fn foo() { +// do yeet; +// do yeet 1 +// } +fn yeet_expr(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(T![do])); + assert!(p.nth_at_contextual_kw(1, T![yeet])); + let m = p.start(); + p.bump(T![do]); + p.bump_remap(T![yeet]); + if p.at_ts(EXPR_FIRST) { + expr(p); + } + m.complete(p, YEET_EXPR) +} + // test continue_expr // fn foo() { // loop { diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index 30bd0b3b169e..48aecb35be12 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -148,11 +148,16 @@ impl<'t> Parser<'t> { kinds.contains(self.current()) } - /// Checks if the current token is contextual keyword with text `t`. + /// Checks if the current token is contextual keyword `kw`. pub(crate) fn at_contextual_kw(&self, kw: SyntaxKind) -> bool { self.inp.contextual_kind(self.pos) == kw } + /// Checks if the nth token is contextual keyword `kw`. + pub(crate) fn nth_at_contextual_kw(&self, n: usize, kw: SyntaxKind) -> bool { + self.inp.contextual_kind(self.pos + n) == kw + } + /// Starts a new node in the syntax tree. All nodes and tokens /// consumed between the `start` and the corresponding `Marker::complete` /// belong to the same node. diff --git a/crates/parser/src/syntax_kind/generated.rs b/crates/parser/src/syntax_kind/generated.rs index c84f45f1f8e4..52b3fc23d59c 100644 --- a/crates/parser/src/syntax_kind/generated.rs +++ b/crates/parser/src/syntax_kind/generated.rs @@ -69,6 +69,7 @@ pub enum SyntaxKind { CONST_KW, CONTINUE_KW, CRATE_KW, + DO_KW, DYN_KW, ELSE_KW, ENUM_KW, @@ -109,6 +110,7 @@ pub enum SyntaxKind { UNION_KW, RAW_KW, MACRO_RULES_KW, + YEET_KW, INT_NUMBER, FLOAT_NUMBER, CHAR, @@ -188,6 +190,7 @@ pub enum SyntaxKind { STMT_LIST, RETURN_EXPR, YIELD_EXPR, + YEET_EXPR, LET_EXPR, UNDERSCORE_EXPR, MACRO_EXPR, @@ -272,6 +275,7 @@ impl SyntaxKind { | CONST_KW | CONTINUE_KW | CRATE_KW + | DO_KW | DYN_KW | ELSE_KW | ENUM_KW @@ -312,6 +316,7 @@ impl SyntaxKind { | UNION_KW | RAW_KW | MACRO_RULES_KW + | YEET_KW ) } pub fn is_punct(self) -> bool { @@ -384,6 +389,7 @@ impl SyntaxKind { "const" => CONST_KW, "continue" => CONTINUE_KW, "crate" => CRATE_KW, + "do" => DO_KW, "dyn" => DYN_KW, "else" => ELSE_KW, "enum" => ENUM_KW, @@ -430,6 +436,7 @@ impl SyntaxKind { "union" => UNION_KW, "raw" => RAW_KW, "macro_rules" => MACRO_RULES_KW, + "yeet" => YEET_KW, _ => return None, }; Some(kw) @@ -470,5 +477,5 @@ impl SyntaxKind { } } #[macro_export] -macro_rules ! T { [;] => { $ crate :: SyntaxKind :: SEMICOLON } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_CURLY } ; ['}'] => { $ crate :: SyntaxKind :: R_CURLY } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; [<] => { $ crate :: SyntaxKind :: L_ANGLE } ; [>] => { $ crate :: SyntaxKind :: R_ANGLE } ; [@] => { $ crate :: SyntaxKind :: AT } ; [#] => { $ crate :: SyntaxKind :: POUND } ; [~] => { $ crate :: SyntaxKind :: TILDE } ; [?] => { $ crate :: SyntaxKind :: QUESTION } ; [$] => { $ crate :: SyntaxKind :: DOLLAR } ; [&] => { $ crate :: SyntaxKind :: AMP } ; [|] => { $ crate :: SyntaxKind :: PIPE } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [*] => { $ crate :: SyntaxKind :: STAR } ; [/] => { $ crate :: SyntaxKind :: SLASH } ; [^] => { $ crate :: SyntaxKind :: CARET } ; [%] => { $ crate :: SyntaxKind :: PERCENT } ; [_] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [..] => { $ crate :: SyntaxKind :: DOT2 } ; [...] => { $ crate :: SyntaxKind :: DOT3 } ; [..=] => { $ crate :: SyntaxKind :: DOT2EQ } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLON2 } ; [=] => { $ crate :: SyntaxKind :: EQ } ; [==] => { $ crate :: SyntaxKind :: EQ2 } ; [=>] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [!] => { $ crate :: SyntaxKind :: BANG } ; [!=] => { $ crate :: SyntaxKind :: NEQ } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [->] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [<=] => { $ crate :: SyntaxKind :: LTEQ } ; [>=] => { $ crate :: SyntaxKind :: GTEQ } ; [+=] => { $ crate :: SyntaxKind :: PLUSEQ } ; [-=] => { $ crate :: SyntaxKind :: MINUSEQ } ; [|=] => { $ crate :: SyntaxKind :: PIPEEQ } ; [&=] => { $ crate :: SyntaxKind :: AMPEQ } ; [^=] => { $ crate :: SyntaxKind :: CARETEQ } ; [/=] => { $ crate :: SyntaxKind :: SLASHEQ } ; [*=] => { $ crate :: SyntaxKind :: STAREQ } ; [%=] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [&&] => { $ crate :: SyntaxKind :: AMP2 } ; [||] => { $ crate :: SyntaxKind :: PIPE2 } ; [<<] => { $ crate :: SyntaxKind :: SHL } ; [>>] => { $ crate :: SyntaxKind :: SHR } ; [<<=] => { $ crate :: SyntaxKind :: SHLEQ } ; [>>=] => { $ crate :: SyntaxKind :: SHREQ } ; [as] => { $ crate :: SyntaxKind :: AS_KW } ; [async] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [await] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [box] => { $ crate :: SyntaxKind :: BOX_KW } ; [break] => { $ crate :: SyntaxKind :: BREAK_KW } ; [const] => { $ crate :: SyntaxKind :: CONST_KW } ; [continue] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [crate] => { $ crate :: SyntaxKind :: CRATE_KW } ; [dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [enum] => { $ crate :: SyntaxKind :: ENUM_KW } ; [extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [fn] => { $ crate :: SyntaxKind :: FN_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [impl] => { $ crate :: SyntaxKind :: IMPL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [let] => { $ crate :: SyntaxKind :: LET_KW } ; [loop] => { $ crate :: SyntaxKind :: LOOP_KW } ; [macro] => { $ crate :: SyntaxKind :: MACRO_KW } ; [match] => { $ crate :: SyntaxKind :: MATCH_KW } ; [mod] => { $ crate :: SyntaxKind :: MOD_KW } ; [move] => { $ crate :: SyntaxKind :: MOVE_KW } ; [mut] => { $ crate :: SyntaxKind :: MUT_KW } ; [pub] => { $ crate :: SyntaxKind :: PUB_KW } ; [ref] => { $ crate :: SyntaxKind :: REF_KW } ; [return] => { $ crate :: SyntaxKind :: RETURN_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [Self] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [static] => { $ crate :: SyntaxKind :: STATIC_KW } ; [struct] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [trait] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [try] => { $ crate :: SyntaxKind :: TRY_KW } ; [type] => { $ crate :: SyntaxKind :: TYPE_KW } ; [unsafe] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [use] => { $ crate :: SyntaxKind :: USE_KW } ; [where] => { $ crate :: SyntaxKind :: WHERE_KW } ; [while] => { $ crate :: SyntaxKind :: WHILE_KW } ; [yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [default] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [existential] => { $ crate :: SyntaxKind :: EXISTENTIAL_KW } ; [union] => { $ crate :: SyntaxKind :: UNION_KW } ; [raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; } +macro_rules ! T { [;] => { $ crate :: SyntaxKind :: SEMICOLON } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_CURLY } ; ['}'] => { $ crate :: SyntaxKind :: R_CURLY } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; [<] => { $ crate :: SyntaxKind :: L_ANGLE } ; [>] => { $ crate :: SyntaxKind :: R_ANGLE } ; [@] => { $ crate :: SyntaxKind :: AT } ; [#] => { $ crate :: SyntaxKind :: POUND } ; [~] => { $ crate :: SyntaxKind :: TILDE } ; [?] => { $ crate :: SyntaxKind :: QUESTION } ; [$] => { $ crate :: SyntaxKind :: DOLLAR } ; [&] => { $ crate :: SyntaxKind :: AMP } ; [|] => { $ crate :: SyntaxKind :: PIPE } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [*] => { $ crate :: SyntaxKind :: STAR } ; [/] => { $ crate :: SyntaxKind :: SLASH } ; [^] => { $ crate :: SyntaxKind :: CARET } ; [%] => { $ crate :: SyntaxKind :: PERCENT } ; [_] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [..] => { $ crate :: SyntaxKind :: DOT2 } ; [...] => { $ crate :: SyntaxKind :: DOT3 } ; [..=] => { $ crate :: SyntaxKind :: DOT2EQ } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLON2 } ; [=] => { $ crate :: SyntaxKind :: EQ } ; [==] => { $ crate :: SyntaxKind :: EQ2 } ; [=>] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [!] => { $ crate :: SyntaxKind :: BANG } ; [!=] => { $ crate :: SyntaxKind :: NEQ } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [->] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [<=] => { $ crate :: SyntaxKind :: LTEQ } ; [>=] => { $ crate :: SyntaxKind :: GTEQ } ; [+=] => { $ crate :: SyntaxKind :: PLUSEQ } ; [-=] => { $ crate :: SyntaxKind :: MINUSEQ } ; [|=] => { $ crate :: SyntaxKind :: PIPEEQ } ; [&=] => { $ crate :: SyntaxKind :: AMPEQ } ; [^=] => { $ crate :: SyntaxKind :: CARETEQ } ; [/=] => { $ crate :: SyntaxKind :: SLASHEQ } ; [*=] => { $ crate :: SyntaxKind :: STAREQ } ; [%=] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [&&] => { $ crate :: SyntaxKind :: AMP2 } ; [||] => { $ crate :: SyntaxKind :: PIPE2 } ; [<<] => { $ crate :: SyntaxKind :: SHL } ; [>>] => { $ crate :: SyntaxKind :: SHR } ; [<<=] => { $ crate :: SyntaxKind :: SHLEQ } ; [>>=] => { $ crate :: SyntaxKind :: SHREQ } ; [as] => { $ crate :: SyntaxKind :: AS_KW } ; [async] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [await] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [box] => { $ crate :: SyntaxKind :: BOX_KW } ; [break] => { $ crate :: SyntaxKind :: BREAK_KW } ; [const] => { $ crate :: SyntaxKind :: CONST_KW } ; [continue] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [crate] => { $ crate :: SyntaxKind :: CRATE_KW } ; [do] => { $ crate :: SyntaxKind :: DO_KW } ; [dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [enum] => { $ crate :: SyntaxKind :: ENUM_KW } ; [extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [fn] => { $ crate :: SyntaxKind :: FN_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [impl] => { $ crate :: SyntaxKind :: IMPL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [let] => { $ crate :: SyntaxKind :: LET_KW } ; [loop] => { $ crate :: SyntaxKind :: LOOP_KW } ; [macro] => { $ crate :: SyntaxKind :: MACRO_KW } ; [match] => { $ crate :: SyntaxKind :: MATCH_KW } ; [mod] => { $ crate :: SyntaxKind :: MOD_KW } ; [move] => { $ crate :: SyntaxKind :: MOVE_KW } ; [mut] => { $ crate :: SyntaxKind :: MUT_KW } ; [pub] => { $ crate :: SyntaxKind :: PUB_KW } ; [ref] => { $ crate :: SyntaxKind :: REF_KW } ; [return] => { $ crate :: SyntaxKind :: RETURN_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [Self] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [static] => { $ crate :: SyntaxKind :: STATIC_KW } ; [struct] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [trait] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [try] => { $ crate :: SyntaxKind :: TRY_KW } ; [type] => { $ crate :: SyntaxKind :: TYPE_KW } ; [unsafe] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [use] => { $ crate :: SyntaxKind :: USE_KW } ; [where] => { $ crate :: SyntaxKind :: WHERE_KW } ; [while] => { $ crate :: SyntaxKind :: WHILE_KW } ; [yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [default] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [existential] => { $ crate :: SyntaxKind :: EXISTENTIAL_KW } ; [union] => { $ crate :: SyntaxKind :: UNION_KW } ; [raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; } pub use T; diff --git a/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast b/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast new file mode 100644 index 000000000000..24931bfcd7cd --- /dev/null +++ b/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rast @@ -0,0 +1,31 @@ +SOURCE_FILE + FN + FN_KW "fn" + WHITESPACE " " + NAME + IDENT "foo" + PARAM_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + BLOCK_EXPR + STMT_LIST + L_CURLY "{" + WHITESPACE "\n " + EXPR_STMT + YEET_EXPR + DO_KW "do" + WHITESPACE " " + YEET_KW "yeet" + SEMICOLON ";" + WHITESPACE "\n " + YEET_EXPR + DO_KW "do" + WHITESPACE " " + YEET_KW "yeet" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE "\n" + R_CURLY "}" + WHITESPACE "\n" diff --git a/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs b/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs new file mode 100644 index 000000000000..624f86c9dc0d --- /dev/null +++ b/crates/parser/test_data/parser/inline/ok/0204_yeet_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + do yeet; + do yeet 1 +} diff --git a/crates/syntax/src/tests/ast_src.rs b/crates/syntax/src/tests/ast_src.rs index cf5be1c30fba..3ff6e03006b5 100644 --- a/crates/syntax/src/tests/ast_src.rs +++ b/crates/syntax/src/tests/ast_src.rs @@ -65,12 +65,12 @@ pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc { (">>=", "SHREQ"), ], keywords: &[ - "as", "async", "await", "box", "break", "const", "continue", "crate", "dyn", "else", + "as", "async", "await", "box", "break", "const", "continue", "crate", "do", "dyn", "else", "enum", "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop", "macro", "match", "mod", "move", "mut", "pub", "ref", "return", "self", "Self", "static", "struct", "super", "trait", "true", "try", "type", "unsafe", "use", "where", "while", "yield", ], - contextual_keywords: &["auto", "default", "existential", "union", "raw", "macro_rules"], + contextual_keywords: &["auto", "default", "existential", "union", "raw", "macro_rules", "yeet"], literals: &["INT_NUMBER", "FLOAT_NUMBER", "CHAR", "BYTE", "STRING", "BYTE_STRING"], tokens: &["ERROR", "IDENT", "WHITESPACE", "LIFETIME_IDENT", "COMMENT", "SHEBANG"], nodes: &[ @@ -142,6 +142,7 @@ pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc { "STMT_LIST", "RETURN_EXPR", "YIELD_EXPR", + "YEET_EXPR", "LET_EXPR", "UNDERSCORE_EXPR", "MACRO_EXPR", From 346bf5fb5b9ce94b7fa24d466ba82ec709f95286 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 28 Dec 2022 23:17:13 +0000 Subject: [PATCH 186/478] Implement `do yeet` expression --- crates/hir-def/src/body/lower.rs | 4 +++ crates/hir-def/src/body/pretty.rs | 9 +++++ crates/hir-def/src/expr.rs | 8 ++++- crates/hir-ty/src/infer/expr.rs | 6 ++++ crates/ide-db/src/syntax_helpers/node_ext.rs | 3 +- .../ide/src/syntax_highlighting/highlight.rs | 1 + crates/syntax/rust.ungram | 4 +++ crates/syntax/src/ast/generated/nodes.rs | 35 +++++++++++++++++++ crates/syntax/src/ast/prec.rs | 6 ++-- 9 files changed, 72 insertions(+), 4 deletions(-) diff --git a/crates/hir-def/src/body/lower.rs b/crates/hir-def/src/body/lower.rs index ccc01c3efca5..e8da24e3adda 100644 --- a/crates/hir-def/src/body/lower.rs +++ b/crates/hir-def/src/body/lower.rs @@ -371,6 +371,10 @@ impl ExprCollector<'_> { let expr = e.expr().map(|e| self.collect_expr(e)); self.alloc_expr(Expr::Yield { expr }, syntax_ptr) } + ast::Expr::YeetExpr(e) => { + let expr = e.expr().map(|e| self.collect_expr(e)); + self.alloc_expr(Expr::Yeet { expr }, syntax_ptr) + } ast::Expr::RecordExpr(e) => { let path = e.path().and_then(|path| self.expander.parse_path(self.db, path)).map(Box::new); diff --git a/crates/hir-def/src/body/pretty.rs b/crates/hir-def/src/body/pretty.rs index 04279751f0c8..10b9b26bbeaa 100644 --- a/crates/hir-def/src/body/pretty.rs +++ b/crates/hir-def/src/body/pretty.rs @@ -247,6 +247,15 @@ impl<'a> Printer<'a> { self.print_expr(*expr); } } + Expr::Yeet { expr } => { + w!(self, "do"); + self.whitespace(); + w!(self, "yeet"); + if let Some(expr) = expr { + self.whitespace(); + self.print_expr(*expr); + } + } Expr::RecordLit { path, fields, spread, ellipsis, is_assignee_expr: _ } => { match path { Some(path) => self.print_path(path), diff --git a/crates/hir-def/src/expr.rs b/crates/hir-def/src/expr.rs index 162646550207..3066213ace8e 100644 --- a/crates/hir-def/src/expr.rs +++ b/crates/hir-def/src/expr.rs @@ -137,6 +137,9 @@ pub enum Expr { Yield { expr: Option, }, + Yeet { + expr: Option, + }, RecordLit { path: Option>, fields: Box<[RecordLitField]>, @@ -313,7 +316,10 @@ impl Expr { arms.iter().map(|arm| arm.expr).for_each(f); } Expr::Continue { .. } => {} - Expr::Break { expr, .. } | Expr::Return { expr } | Expr::Yield { expr } => { + Expr::Break { expr, .. } + | Expr::Return { expr } + | Expr::Yield { expr } + | Expr::Yeet { expr } => { if let &Some(expr) = expr { f(expr); } diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index b1f4de826077..8070655cab5c 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -465,6 +465,12 @@ impl<'a> InferenceContext<'a> { TyKind::Error.intern(Interner) } } + Expr::Yeet { expr } => { + if let &Some(expr) = expr { + self.infer_expr_inner(expr, &Expectation::None); + } + TyKind::Never.intern(Interner) + } Expr::RecordLit { path, fields, spread, .. } => { let (ty, def_id) = self.resolve_variant(path.as_deref(), false); if let Some(variant) = def_id { diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs index 39710b8f13eb..347e87ce9720 100644 --- a/crates/ide-db/src/syntax_helpers/node_ext.rs +++ b/crates/ide-db/src/syntax_helpers/node_ext.rs @@ -328,7 +328,8 @@ pub fn for_each_tail_expr(expr: &ast::Expr, cb: &mut dyn FnMut(&ast::Expr)) { | ast::Expr::WhileExpr(_) | ast::Expr::LetExpr(_) | ast::Expr::UnderscoreExpr(_) - | ast::Expr::YieldExpr(_) => cb(expr), + | ast::Expr::YieldExpr(_) + | ast::Expr::YeetExpr(_) => cb(expr), } } diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index e7d0a8be7f57..a06c6abf286e 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -174,6 +174,7 @@ fn keyword( | T![return] | T![while] | T![yield] => h | HlMod::ControlFlow, + T![do] | T![yeet] if parent_matches::(&token) => h | HlMod::ControlFlow, T![for] if parent_matches::(&token) => h | HlMod::ControlFlow, T![unsafe] => h | HlMod::Unsafe, T![true] | T![false] => HlTag::BoolLiteral.into(), diff --git a/crates/syntax/rust.ungram b/crates/syntax/rust.ungram index 0a0cb0290d6c..2c67586a3905 100644 --- a/crates/syntax/rust.ungram +++ b/crates/syntax/rust.ungram @@ -359,6 +359,7 @@ Expr = | TupleExpr | WhileExpr | YieldExpr +| YeetExpr | LetExpr | UnderscoreExpr @@ -503,6 +504,9 @@ ReturnExpr = YieldExpr = Attr* 'yield' Expr? +YeetExpr = + Attr* 'do' 'yeet' Expr? + LetExpr = Attr* 'let' Pat '=' Expr diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs index 2ea715f47fb2..86d222723d50 100644 --- a/crates/syntax/src/ast/generated/nodes.rs +++ b/crates/syntax/src/ast/generated/nodes.rs @@ -1063,6 +1063,17 @@ impl YieldExpr { pub fn expr(&self) -> Option { support::child(&self.syntax) } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct YeetExpr { + pub(crate) syntax: SyntaxNode, +} +impl ast::HasAttrs for YeetExpr {} +impl YeetExpr { + pub fn do_token(&self) -> Option { support::token(&self.syntax, T![do]) } + pub fn yeet_token(&self) -> Option { support::token(&self.syntax, T![yeet]) } + pub fn expr(&self) -> Option { support::child(&self.syntax) } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct LetExpr { pub(crate) syntax: SyntaxNode, @@ -1541,6 +1552,7 @@ pub enum Expr { TupleExpr(TupleExpr), WhileExpr(WhileExpr), YieldExpr(YieldExpr), + YeetExpr(YeetExpr), LetExpr(LetExpr), UnderscoreExpr(UnderscoreExpr), } @@ -2694,6 +2706,17 @@ impl AstNode for YieldExpr { } fn syntax(&self) -> &SyntaxNode { &self.syntax } } +impl AstNode for YeetExpr { + fn can_cast(kind: SyntaxKind) -> bool { kind == YEET_EXPR } + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + fn syntax(&self) -> &SyntaxNode { &self.syntax } +} impl AstNode for LetExpr { fn can_cast(kind: SyntaxKind) -> bool { kind == LET_EXPR } fn cast(syntax: SyntaxNode) -> Option { @@ -3382,6 +3405,9 @@ impl From for Expr { impl From for Expr { fn from(node: YieldExpr) -> Expr { Expr::YieldExpr(node) } } +impl From for Expr { + fn from(node: YeetExpr) -> Expr { Expr::YeetExpr(node) } +} impl From for Expr { fn from(node: LetExpr) -> Expr { Expr::LetExpr(node) } } @@ -3422,6 +3448,7 @@ impl AstNode for Expr { | TUPLE_EXPR | WHILE_EXPR | YIELD_EXPR + | YEET_EXPR | LET_EXPR | UNDERSCORE_EXPR ) @@ -3458,6 +3485,7 @@ impl AstNode for Expr { TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }), WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }), YIELD_EXPR => Expr::YieldExpr(YieldExpr { syntax }), + YEET_EXPR => Expr::YeetExpr(YeetExpr { syntax }), LET_EXPR => Expr::LetExpr(LetExpr { syntax }), UNDERSCORE_EXPR => Expr::UnderscoreExpr(UnderscoreExpr { syntax }), _ => return None, @@ -3496,6 +3524,7 @@ impl AstNode for Expr { Expr::TupleExpr(it) => &it.syntax, Expr::WhileExpr(it) => &it.syntax, Expr::YieldExpr(it) => &it.syntax, + Expr::YeetExpr(it) => &it.syntax, Expr::LetExpr(it) => &it.syntax, Expr::UnderscoreExpr(it) => &it.syntax, } @@ -3963,6 +3992,7 @@ impl AstNode for AnyHasAttrs { | TUPLE_EXPR | WHILE_EXPR | YIELD_EXPR + | YEET_EXPR | LET_EXPR | UNDERSCORE_EXPR | STMT_LIST @@ -4655,6 +4685,11 @@ impl std::fmt::Display for YieldExpr { std::fmt::Display::fmt(self.syntax(), f) } } +impl std::fmt::Display for YeetExpr { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(self.syntax(), f) + } +} impl std::fmt::Display for LetExpr { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) diff --git a/crates/syntax/src/ast/prec.rs b/crates/syntax/src/ast/prec.rs index c118ef063593..4ec388914e60 100644 --- a/crates/syntax/src/ast/prec.rs +++ b/crates/syntax/src/ast/prec.rs @@ -130,7 +130,7 @@ impl Expr { // ContinueExpr(_) => (0, 0), - ClosureExpr(_) | ReturnExpr(_) | YieldExpr(_) | BreakExpr(_) => (0, 1), + ClosureExpr(_) | ReturnExpr(_) | YieldExpr(_) | YeetExpr(_) | BreakExpr(_) => (0, 1), RangeExpr(_) => (5, 5), @@ -291,6 +291,7 @@ impl Expr { ReturnExpr(e) => e.return_token(), TryExpr(e) => e.question_mark_token(), YieldExpr(e) => e.yield_token(), + YeetExpr(e) => e.do_token(), LetExpr(e) => e.let_token(), ArrayExpr(_) | TupleExpr(_) | Literal(_) | PathExpr(_) | ParenExpr(_) @@ -313,7 +314,8 @@ impl Expr { // For BinExpr and RangeExpr this is technically wrong -- the child can be on the left... BinExpr(_) | RangeExpr(_) | BoxExpr(_) | BreakExpr(_) | ContinueExpr(_) - | PrefixExpr(_) | RefExpr(_) | ReturnExpr(_) | YieldExpr(_) | LetExpr(_) => self + | PrefixExpr(_) | RefExpr(_) | ReturnExpr(_) | YieldExpr(_) | YeetExpr(_) + | LetExpr(_) => self .syntax() .parent() .and_then(Expr::cast) From 4ccafea92d00fe35c71fb1ab419df7b4f264d25f Mon Sep 17 00:00:00 2001 From: Philipp Krones Date: Thu, 29 Dec 2022 14:28:34 +0100 Subject: [PATCH 187/478] Merge commit '4f3ab69ea0a0908260944443c739426cc384ae1a' into clippyup --- CHANGELOG.md | 4 + .../src/casts/cast_slice_different_sizes.rs | 2 +- clippy_lints/src/declared_lints.rs | 4 + clippy_lints/src/dereference.rs | 8 +- clippy_lints/src/floating_point_arithmetic.rs | 2 +- clippy_lints/src/fn_null_check.rs | 106 +++++++ clippy_lints/src/format_args.rs | 2 +- clippy_lints/src/functions/mod.rs | 33 ++- clippy_lints/src/large_const_arrays.rs | 6 +- clippy_lints/src/large_enum_variant.rs | 2 +- clippy_lints/src/large_stack_arrays.rs | 6 +- clippy_lints/src/len_zero.rs | 2 +- clippy_lints/src/lib.rs | 8 +- .../src/loops/explicit_counter_loop.rs | 2 +- clippy_lints/src/manual_async_fn.rs | 2 +- clippy_lints/src/manual_clamp.rs | 5 +- clippy_lints/src/manual_strip.rs | 2 +- clippy_lints/src/matches/manual_filter.rs | 17 +- .../src/matches/match_single_binding.rs | 18 +- clippy_lints/src/matches/match_wild_enum.rs | 2 +- .../src/methods/inefficient_to_string.rs | 2 +- clippy_lints/src/methods/iter_skip_next.rs | 2 +- .../src/methods/option_map_unwrap_or.rs | 2 +- clippy_lints/src/methods/str_splitn.rs | 2 +- .../src/methods/unnecessary_lazy_eval.rs | 2 +- clippy_lints/src/needless_late_init.rs | 6 +- clippy_lints/src/octal_escapes.rs | 4 +- .../src/operators/misrefactored_assign_op.rs | 2 +- .../src/permissions_set_readonly_false.rs | 52 ++++ clippy_lints/src/redundant_clone.rs | 4 +- clippy_lints/src/returns.rs | 8 +- clippy_lints/src/same_name_method.rs | 4 +- clippy_lints/src/size_of_ref.rs | 73 +++++ clippy_lints/src/swap.rs | 4 +- clippy_lints/src/transmute/mod.rs | 31 ++ .../src/transmute/transmute_null_to_fn.rs | 64 ++++ .../src/transmute/transmute_undefined_repr.rs | 14 +- .../transmutes_expressible_as_ptr_casts.rs | 2 +- .../src/transmute/transmuting_null.rs | 3 +- .../src/transmute/useless_transmute.rs | 2 +- .../src/types/redundant_allocation.rs | 8 +- clippy_lints/src/unit_types/unit_arg.rs | 4 +- clippy_lints/src/useless_conversion.rs | 28 +- clippy_lints/src/utils/conf.rs | 2 +- .../internal_lints/metadata_collector.rs | 4 +- clippy_lints/src/write.rs | 4 +- clippy_utils/src/consts.rs | 7 +- clippy_utils/src/diagnostics.rs | 2 +- clippy_utils/src/mir/maybe_storage_live.rs | 52 ---- clippy_utils/src/mir/mod.rs | 2 - clippy_utils/src/mir/possible_borrower.rs | 280 +++++++++++------- clippy_utils/src/sugg.rs | 1 - rust-toolchain | 2 +- tests/ui/crashes/ice-10044.rs | 3 + tests/ui/crashes/ice-10044.stderr | 10 + tests/ui/floating_point_powi.fixed | 9 + tests/ui/floating_point_powi.rs | 9 + tests/ui/floating_point_powi.stderr | 44 ++- tests/ui/fn_null_check.rs | 21 ++ tests/ui/fn_null_check.stderr | 43 +++ tests/ui/manual_filter.fixed | 41 +++ tests/ui/manual_filter.rs | 41 +++ tests/ui/manual_retain.fixed | 2 +- tests/ui/manual_retain.rs | 2 +- tests/ui/match_single_binding.fixed | 13 + tests/ui/match_single_binding.rs | 14 + tests/ui/match_single_binding.stderr | 27 +- .../match_wildcard_for_single_variants.fixed | 22 ++ .../ui/match_wildcard_for_single_variants.rs | 22 ++ .../match_wildcard_for_single_variants.stderr | 8 +- tests/ui/needless_borrow.fixed | 13 +- tests/ui/needless_borrow.rs | 13 +- tests/ui/needless_borrow.stderr | 8 +- tests/ui/needless_return.fixed | 5 + tests/ui/needless_return.rs | 5 + tests/ui/needless_return.stderr | 92 +++--- tests/ui/permissions_set_readonly_false.rs | 29 ++ .../ui/permissions_set_readonly_false.stderr | 13 + tests/ui/redundant_clone.fixed | 6 + tests/ui/redundant_clone.rs | 6 + tests/ui/redundant_clone.stderr | 14 +- tests/ui/size_of_ref.rs | 27 ++ tests/ui/size_of_ref.stderr | 27 ++ tests/ui/transmute_null_to_fn.rs | 28 ++ tests/ui/transmute_null_to_fn.stderr | 27 ++ tests/ui/useless_conversion.fixed | 73 ++++- tests/ui/useless_conversion.rs | 73 ++++- tests/ui/useless_conversion.stderr | 54 +++- tests/ui/wildcard_imports.fixed | 1 - tests/ui/wildcard_imports.rs | 1 - tests/ui/wildcard_imports.stderr | 42 +-- .../wildcard_imports_2021.edition2018.fixed | 240 +++++++++++++++ .../wildcard_imports_2021.edition2018.stderr | 132 +++++++++ .../wildcard_imports_2021.edition2021.fixed | 240 +++++++++++++++ .../wildcard_imports_2021.edition2021.stderr | 132 +++++++++ tests/ui/wildcard_imports_2021.rs | 241 +++++++++++++++ tests/ui/wildcard_imports_2021.stderr | 132 +++++++++ 97 files changed, 2558 insertions(+), 359 deletions(-) create mode 100644 clippy_lints/src/fn_null_check.rs create mode 100644 clippy_lints/src/permissions_set_readonly_false.rs create mode 100644 clippy_lints/src/size_of_ref.rs create mode 100644 clippy_lints/src/transmute/transmute_null_to_fn.rs delete mode 100644 clippy_utils/src/mir/maybe_storage_live.rs create mode 100644 tests/ui/crashes/ice-10044.rs create mode 100644 tests/ui/crashes/ice-10044.stderr create mode 100644 tests/ui/fn_null_check.rs create mode 100644 tests/ui/fn_null_check.stderr create mode 100644 tests/ui/permissions_set_readonly_false.rs create mode 100644 tests/ui/permissions_set_readonly_false.stderr create mode 100644 tests/ui/size_of_ref.rs create mode 100644 tests/ui/size_of_ref.stderr create mode 100644 tests/ui/transmute_null_to_fn.rs create mode 100644 tests/ui/transmute_null_to_fn.stderr create mode 100644 tests/ui/wildcard_imports_2021.edition2018.fixed create mode 100644 tests/ui/wildcard_imports_2021.edition2018.stderr create mode 100644 tests/ui/wildcard_imports_2021.edition2021.fixed create mode 100644 tests/ui/wildcard_imports_2021.edition2021.stderr create mode 100644 tests/ui/wildcard_imports_2021.rs create mode 100644 tests/ui/wildcard_imports_2021.stderr diff --git a/CHANGELOG.md b/CHANGELOG.md index 903ee938d9d2..02f3188f8be0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4203,6 +4203,7 @@ Released 2018-09-13 [`float_cmp_const`]: https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp_const [`float_equality_without_abs`]: https://rust-lang.github.io/rust-clippy/master/index.html#float_equality_without_abs [`fn_address_comparisons`]: https://rust-lang.github.io/rust-clippy/master/index.html#fn_address_comparisons +[`fn_null_check`]: https://rust-lang.github.io/rust-clippy/master/index.html#fn_null_check [`fn_params_excessive_bools`]: https://rust-lang.github.io/rust-clippy/master/index.html#fn_params_excessive_bools [`fn_to_numeric_cast`]: https://rust-lang.github.io/rust-clippy/master/index.html#fn_to_numeric_cast [`fn_to_numeric_cast_any`]: https://rust-lang.github.io/rust-clippy/master/index.html#fn_to_numeric_cast_any @@ -4460,6 +4461,7 @@ Released 2018-09-13 [`partialeq_to_none`]: https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [`path_buf_push_overwrite`]: https://rust-lang.github.io/rust-clippy/master/index.html#path_buf_push_overwrite [`pattern_type_mismatch`]: https://rust-lang.github.io/rust-clippy/master/index.html#pattern_type_mismatch +[`permissions_set_readonly_false`]: https://rust-lang.github.io/rust-clippy/master/index.html#permissions_set_readonly_false [`positional_named_format_parameters`]: https://rust-lang.github.io/rust-clippy/master/index.html#positional_named_format_parameters [`possible_missing_comma`]: https://rust-lang.github.io/rust-clippy/master/index.html#possible_missing_comma [`precedence`]: https://rust-lang.github.io/rust-clippy/master/index.html#precedence @@ -4545,6 +4547,7 @@ Released 2018-09-13 [`single_match`]: https://rust-lang.github.io/rust-clippy/master/index.html#single_match [`single_match_else`]: https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else [`size_of_in_element_count`]: https://rust-lang.github.io/rust-clippy/master/index.html#size_of_in_element_count +[`size_of_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#size_of_ref [`skip_while_next`]: https://rust-lang.github.io/rust-clippy/master/index.html#skip_while_next [`slow_vector_initialization`]: https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [`stable_sort_primitive`]: https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive @@ -4590,6 +4593,7 @@ Released 2018-09-13 [`transmute_int_to_bool`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_bool [`transmute_int_to_char`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_char [`transmute_int_to_float`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float +[`transmute_null_to_fn`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_null_to_fn [`transmute_num_to_bytes`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_num_to_bytes [`transmute_ptr_to_ptr`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [`transmute_ptr_to_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref diff --git a/clippy_lints/src/casts/cast_slice_different_sizes.rs b/clippy_lints/src/casts/cast_slice_different_sizes.rs index e862f13e69fc..c8e54d7b8e0c 100644 --- a/clippy_lints/src/casts/cast_slice_different_sizes.rs +++ b/clippy_lints/src/casts/cast_slice_different_sizes.rs @@ -54,7 +54,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &Expr<'tcx>, msrv: &Msrv diag.span_suggestion( expr.span, - &format!("replace with `ptr::slice_from_raw_parts{mutbl_fn_str}`"), + format!("replace with `ptr::slice_from_raw_parts{mutbl_fn_str}`"), sugg, rustc_errors::Applicability::HasPlaceholders, ); diff --git a/clippy_lints/src/declared_lints.rs b/clippy_lints/src/declared_lints.rs index 3cd7d1d7e722..2982460c9cfa 100644 --- a/clippy_lints/src/declared_lints.rs +++ b/clippy_lints/src/declared_lints.rs @@ -161,6 +161,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[ crate::float_literal::LOSSY_FLOAT_LITERAL_INFO, crate::floating_point_arithmetic::IMPRECISE_FLOPS_INFO, crate::floating_point_arithmetic::SUBOPTIMAL_FLOPS_INFO, + crate::fn_null_check::FN_NULL_CHECK_INFO, crate::format::USELESS_FORMAT_INFO, crate::format_args::FORMAT_IN_FORMAT_ARGS_INFO, crate::format_args::TO_STRING_IN_FORMAT_ARGS_INFO, @@ -494,6 +495,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[ crate::pass_by_ref_or_value::LARGE_TYPES_PASSED_BY_VALUE_INFO, crate::pass_by_ref_or_value::TRIVIALLY_COPY_PASS_BY_REF_INFO, crate::pattern_type_mismatch::PATTERN_TYPE_MISMATCH_INFO, + crate::permissions_set_readonly_false::PERMISSIONS_SET_READONLY_FALSE_INFO, crate::precedence::PRECEDENCE_INFO, crate::ptr::CMP_NULL_INFO, crate::ptr::INVALID_NULL_PTR_USAGE_INFO, @@ -535,6 +537,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[ crate::single_char_lifetime_names::SINGLE_CHAR_LIFETIME_NAMES_INFO, crate::single_component_path_imports::SINGLE_COMPONENT_PATH_IMPORTS_INFO, crate::size_of_in_element_count::SIZE_OF_IN_ELEMENT_COUNT_INFO, + crate::size_of_ref::SIZE_OF_REF_INFO, crate::slow_vector_initialization::SLOW_VECTOR_INITIALIZATION_INFO, crate::std_instead_of_core::ALLOC_INSTEAD_OF_CORE_INFO, crate::std_instead_of_core::STD_INSTEAD_OF_ALLOC_INFO, @@ -568,6 +571,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[ crate::transmute::TRANSMUTE_INT_TO_BOOL_INFO, crate::transmute::TRANSMUTE_INT_TO_CHAR_INFO, crate::transmute::TRANSMUTE_INT_TO_FLOAT_INFO, + crate::transmute::TRANSMUTE_NULL_TO_FN_INFO, crate::transmute::TRANSMUTE_NUM_TO_BYTES_INFO, crate::transmute::TRANSMUTE_PTR_TO_PTR_INFO, crate::transmute::TRANSMUTE_PTR_TO_REF_INFO, diff --git a/clippy_lints/src/dereference.rs b/clippy_lints/src/dereference.rs index 7b43d8ccc67d..728941b8b3d9 100644 --- a/clippy_lints/src/dereference.rs +++ b/clippy_lints/src/dereference.rs @@ -1282,10 +1282,10 @@ fn referent_used_exactly_once<'tcx>( possible_borrowers.push((body_owner_local_def_id, PossibleBorrowerMap::new(cx, mir))); } let possible_borrower = &mut possible_borrowers.last_mut().unwrap().1; - // If `only_borrowers` were used here, the `copyable_iterator::warn` test would fail. The reason is - // that `PossibleBorrowerVisitor::visit_terminator` considers `place.local` a possible borrower of - // itself. See the comment in that method for an explanation as to why. - possible_borrower.bounded_borrowers(&[local], &[local, place.local], place.local, location) + // If `place.local` were not included here, the `copyable_iterator::warn` test would fail. The + // reason is that `PossibleBorrowerVisitor::visit_terminator` considers `place.local` a possible + // borrower of itself. See the comment in that method for an explanation as to why. + possible_borrower.at_most_borrowers(cx, &[local, place.local], place.local, location) && used_exactly_once(mir, place.local).unwrap_or(false) } else { false diff --git a/clippy_lints/src/floating_point_arithmetic.rs b/clippy_lints/src/floating_point_arithmetic.rs index 0ed301964758..f95b628e6c31 100644 --- a/clippy_lints/src/floating_point_arithmetic.rs +++ b/clippy_lints/src/floating_point_arithmetic.rs @@ -324,7 +324,7 @@ fn check_powi(cx: &LateContext<'_>, expr: &Expr<'_>, receiver: &Expr<'_>, args: let maybe_neg_sugg = |expr, hir_id| { let sugg = Sugg::hir(cx, expr, ".."); if matches!(op, BinOpKind::Sub) && hir_id == rhs.hir_id { - format!("-{sugg}") + format!("-{}", sugg.maybe_par()) } else { sugg.to_string() } diff --git a/clippy_lints/src/fn_null_check.rs b/clippy_lints/src/fn_null_check.rs new file mode 100644 index 000000000000..91c8c340ce28 --- /dev/null +++ b/clippy_lints/src/fn_null_check.rs @@ -0,0 +1,106 @@ +use clippy_utils::consts::{constant, Constant}; +use clippy_utils::diagnostics::span_lint_and_help; +use clippy_utils::{is_integer_literal, is_path_diagnostic_item}; +use rustc_hir::{BinOpKind, Expr, ExprKind, TyKind}; +use rustc_lint::{LateContext, LateLintPass}; +use rustc_session::{declare_lint_pass, declare_tool_lint}; +use rustc_span::sym; + +declare_clippy_lint! { + /// ### What it does + /// Checks for comparing a function pointer to null. + /// + /// ### Why is this bad? + /// Function pointers are assumed to not be null. + /// + /// ### Example + /// ```rust,ignore + /// let fn_ptr: fn() = /* somehow obtained nullable function pointer */ + /// + /// if (fn_ptr as *const ()).is_null() { ... } + /// ``` + /// Use instead: + /// ```rust,ignore + /// let fn_ptr: Option = /* somehow obtained nullable function pointer */ + /// + /// if fn_ptr.is_none() { ... } + /// ``` + #[clippy::version = "1.67.0"] + pub FN_NULL_CHECK, + correctness, + "`fn()` type assumed to be nullable" +} +declare_lint_pass!(FnNullCheck => [FN_NULL_CHECK]); + +fn lint_expr(cx: &LateContext<'_>, expr: &Expr<'_>) { + span_lint_and_help( + cx, + FN_NULL_CHECK, + expr.span, + "function pointer assumed to be nullable, even though it isn't", + None, + "try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value", + ); +} + +fn is_fn_ptr_cast(cx: &LateContext<'_>, expr: &Expr<'_>) -> bool { + if let ExprKind::Cast(cast_expr, cast_ty) = expr.kind + && let TyKind::Ptr(_) = cast_ty.kind + { + cx.typeck_results().expr_ty_adjusted(cast_expr).is_fn() + } else { + false + } +} + +impl<'tcx> LateLintPass<'tcx> for FnNullCheck { + fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) { + match expr.kind { + // Catching: + // (fn_ptr as * ).is_null() + ExprKind::MethodCall(method_name, receiver, _, _) + if method_name.ident.as_str() == "is_null" && is_fn_ptr_cast(cx, receiver) => + { + lint_expr(cx, expr); + }, + + ExprKind::Binary(op, left, right) if matches!(op.node, BinOpKind::Eq) => { + let to_check: &Expr<'_>; + if is_fn_ptr_cast(cx, left) { + to_check = right; + } else if is_fn_ptr_cast(cx, right) { + to_check = left; + } else { + return; + } + + match to_check.kind { + // Catching: + // (fn_ptr as * ) == (0 as ) + ExprKind::Cast(cast_expr, _) if is_integer_literal(cast_expr, 0) => { + lint_expr(cx, expr); + }, + + // Catching: + // (fn_ptr as * ) == std::ptr::null() + ExprKind::Call(func, []) if is_path_diagnostic_item(cx, func, sym::ptr_null) => { + lint_expr(cx, expr); + }, + + // Catching: + // (fn_ptr as * ) == + _ if matches!( + constant(cx, cx.typeck_results(), to_check), + Some((Constant::RawPtr(0), _)) + ) => + { + lint_expr(cx, expr); + }, + + _ => {}, + } + }, + _ => {}, + } + } +} diff --git a/clippy_lints/src/format_args.rs b/clippy_lints/src/format_args.rs index 69f7c152fc4a..043112bbc959 100644 --- a/clippy_lints/src/format_args.rs +++ b/clippy_lints/src/format_args.rs @@ -382,7 +382,7 @@ fn check_format_in_format_args( call_site, &format!("`format!` in `{name}!` args"), |diag| { - diag.help(&format!( + diag.help(format!( "combine the `format!(..)` arguments with the outer `{name}!(..)` call" )); diag.help("or consider changing `format!` to `format_args!`"); diff --git a/clippy_lints/src/functions/mod.rs b/clippy_lints/src/functions/mod.rs index 91e6ffe64479..9dbce3f889be 100644 --- a/clippy_lints/src/functions/mod.rs +++ b/clippy_lints/src/functions/mod.rs @@ -63,23 +63,40 @@ declare_clippy_lint! { /// arguments but are not marked `unsafe`. /// /// ### Why is this bad? - /// The function should probably be marked `unsafe`, since - /// for an arbitrary raw pointer, there is no way of telling for sure if it is - /// valid. + /// The function should almost definitely be marked `unsafe`, since for an + /// arbitrary raw pointer, there is no way of telling for sure if it is valid. + /// + /// In general, this lint should **never be disabled** unless it is definitely a + /// false positive (please submit an issue if so) since it breaks Rust's + /// soundness guarantees, directly exposing API users to potentially dangerous + /// program behavior. This is also true for internal APIs, as it is easy to leak + /// unsoundness. + /// + /// ### Context + /// In Rust, an `unsafe {...}` block is used to indicate that the code in that + /// section has been verified in some way that the compiler can not. For a + /// function that accepts a raw pointer then accesses the pointer's data, this is + /// generally impossible as the incoming pointer could point anywhere, valid or + /// not. So, the signature should be marked `unsafe fn`: this indicates that the + /// function's caller must provide some verification that the arguments it sends + /// are valid (and then call the function within an `unsafe` block). /// /// ### Known problems /// * It does not check functions recursively so if the pointer is passed to a /// private non-`unsafe` function which does the dereferencing, the lint won't - /// trigger. + /// trigger (false negative). /// * It only checks for arguments whose type are raw pointers, not raw pointers /// got from an argument in some other way (`fn foo(bar: &[*const u8])` or - /// `some_argument.get_raw_ptr()`). + /// `some_argument.get_raw_ptr()`) (false negative). /// /// ### Example /// ```rust,ignore /// pub fn foo(x: *const u8) { /// println!("{}", unsafe { *x }); /// } + /// + /// // this call "looks" safe but will segfault or worse! + /// // foo(invalid_ptr); /// ``` /// /// Use instead: @@ -87,6 +104,12 @@ declare_clippy_lint! { /// pub unsafe fn foo(x: *const u8) { /// println!("{}", unsafe { *x }); /// } + /// + /// // this would cause a compiler error for calling without `unsafe` + /// // foo(invalid_ptr); + /// + /// // sound call if the caller knows the pointer is valid + /// unsafe { foo(valid_ptr); } /// ``` #[clippy::version = "pre 1.29.0"] pub NOT_UNSAFE_PTR_ARG_DEREF, diff --git a/clippy_lints/src/large_const_arrays.rs b/clippy_lints/src/large_const_arrays.rs index 76c83ab47d09..db637dfc068d 100644 --- a/clippy_lints/src/large_const_arrays.rs +++ b/clippy_lints/src/large_const_arrays.rs @@ -34,12 +34,12 @@ declare_clippy_lint! { } pub struct LargeConstArrays { - maximum_allowed_size: u64, + maximum_allowed_size: u128, } impl LargeConstArrays { #[must_use] - pub fn new(maximum_allowed_size: u64) -> Self { + pub fn new(maximum_allowed_size: u128) -> Self { Self { maximum_allowed_size } } } @@ -56,7 +56,7 @@ impl<'tcx> LateLintPass<'tcx> for LargeConstArrays { if let ConstKind::Value(ty::ValTree::Leaf(element_count)) = cst.kind(); if let Ok(element_count) = element_count.try_to_machine_usize(cx.tcx); if let Ok(element_size) = cx.layout_of(*element_type).map(|l| l.size.bytes()); - if self.maximum_allowed_size < element_count * element_size; + if self.maximum_allowed_size < u128::from(element_count) * u128::from(element_size); then { let hi_pos = item.ident.span.lo() - BytePos::from_usize(1); diff --git a/clippy_lints/src/large_enum_variant.rs b/clippy_lints/src/large_enum_variant.rs index b18456ee5234..b8d4abdbb781 100644 --- a/clippy_lints/src/large_enum_variant.rs +++ b/clippy_lints/src/large_enum_variant.rs @@ -111,7 +111,7 @@ impl<'tcx> LateLintPass<'tcx> for LargeEnumVariant { ); diag.span_label( def.variants[variants_size[1].ind].span, - &if variants_size[1].fields_size.is_empty() { + if variants_size[1].fields_size.is_empty() { "the second-largest variant carries no data at all".to_owned() } else { format!( diff --git a/clippy_lints/src/large_stack_arrays.rs b/clippy_lints/src/large_stack_arrays.rs index 5857d81ab1f2..89ae83d48f53 100644 --- a/clippy_lints/src/large_stack_arrays.rs +++ b/clippy_lints/src/large_stack_arrays.rs @@ -24,12 +24,12 @@ declare_clippy_lint! { } pub struct LargeStackArrays { - maximum_allowed_size: u64, + maximum_allowed_size: u128, } impl LargeStackArrays { #[must_use] - pub fn new(maximum_allowed_size: u64) -> Self { + pub fn new(maximum_allowed_size: u128) -> Self { Self { maximum_allowed_size } } } @@ -45,7 +45,7 @@ impl<'tcx> LateLintPass<'tcx> for LargeStackArrays { && let Ok(element_size) = cx.layout_of(*element_type).map(|l| l.size.bytes()) && !cx.tcx.hir().parent_iter(expr.hir_id) .any(|(_, node)| matches!(node, Node::Item(Item { kind: ItemKind::Static(..), .. }))) - && self.maximum_allowed_size < element_count * element_size { + && self.maximum_allowed_size < u128::from(element_count) * u128::from(element_size) { span_lint_and_help( cx, LARGE_STACK_ARRAYS, diff --git a/clippy_lints/src/len_zero.rs b/clippy_lints/src/len_zero.rs index e88d1764a248..9eba46756299 100644 --- a/clippy_lints/src/len_zero.rs +++ b/clippy_lints/src/len_zero.rs @@ -361,7 +361,7 @@ fn check_for_is_empty<'tcx>( db.span_note(span, "`is_empty` defined here"); } if let Some(self_kind) = self_kind { - db.note(&output.expected_sig(self_kind)); + db.note(output.expected_sig(self_kind)); } }); } diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs index 39850d598038..dcd8ca81ae87 100644 --- a/clippy_lints/src/lib.rs +++ b/clippy_lints/src/lib.rs @@ -125,6 +125,7 @@ mod explicit_write; mod fallible_impl_from; mod float_literal; mod floating_point_arithmetic; +mod fn_null_check; mod format; mod format_args; mod format_impl; @@ -234,6 +235,7 @@ mod partialeq_ne_impl; mod partialeq_to_none; mod pass_by_ref_or_value; mod pattern_type_mismatch; +mod permissions_set_readonly_false; mod precedence; mod ptr; mod ptr_offset_with_cast; @@ -263,6 +265,7 @@ mod shadow; mod single_char_lifetime_names; mod single_component_path_imports; mod size_of_in_element_count; +mod size_of_ref; mod slow_vector_initialization; mod std_instead_of_core; mod strings; @@ -334,7 +337,7 @@ pub fn read_conf(sess: &Session, path: &io::Result>) -> Conf { Ok(Some(path)) => path, Ok(None) => return Conf::default(), Err(error) => { - sess.struct_err(&format!("error finding Clippy's configuration file: {error}")) + sess.struct_err(format!("error finding Clippy's configuration file: {error}")) .emit(); return Conf::default(); }, @@ -902,6 +905,9 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf: store.register_late_pass(|_| Box::new(suspicious_xor_used_as_pow::ConfusingXorAndPow)); store.register_late_pass(move |_| Box::new(manual_is_ascii_check::ManualIsAsciiCheck::new(msrv()))); store.register_late_pass(|_| Box::new(semicolon_block::SemicolonBlock)); + store.register_late_pass(|_| Box::new(fn_null_check::FnNullCheck)); + store.register_late_pass(|_| Box::new(permissions_set_readonly_false::PermissionsSetReadonlyFalse)); + store.register_late_pass(|_| Box::new(size_of_ref::SizeOfRef)); // add lints here, do not remove this comment, it's used in `new_lint` } diff --git a/clippy_lints/src/loops/explicit_counter_loop.rs b/clippy_lints/src/loops/explicit_counter_loop.rs index 14f223481327..1953ee8a7175 100644 --- a/clippy_lints/src/loops/explicit_counter_loop.rs +++ b/clippy_lints/src/loops/explicit_counter_loop.rs @@ -77,7 +77,7 @@ pub(super) fn check<'tcx>( applicability, ); - diag.note(&format!( + diag.note(format!( "`{name}` is of type `{int_name}`, making it ineligible for `Iterator::enumerate`" )); }, diff --git a/clippy_lints/src/manual_async_fn.rs b/clippy_lints/src/manual_async_fn.rs index 075ecbe7eded..af7c05635557 100644 --- a/clippy_lints/src/manual_async_fn.rs +++ b/clippy_lints/src/manual_async_fn.rs @@ -76,7 +76,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualAsyncFn { let help = format!("make the function `async` and {ret_sugg}"); diag.span_suggestion( header_span, - &help, + help, format!("async {}{ret_snip}", &header_snip[..ret_pos]), Applicability::MachineApplicable ); diff --git a/clippy_lints/src/manual_clamp.rs b/clippy_lints/src/manual_clamp.rs index bb6d628af3b5..f239736d38a4 100644 --- a/clippy_lints/src/manual_clamp.rs +++ b/clippy_lints/src/manual_clamp.rs @@ -35,6 +35,9 @@ declare_clippy_lint! { /// Some may consider panicking in these situations to be desirable, but it also may /// introduce panicking where there wasn't any before. /// + /// See also [the discussion in the + /// PR](https://github.com/rust-lang/rust-clippy/pull/9484#issuecomment-1278922613). + /// /// ### Examples /// ```rust /// # let (input, min, max) = (0, -2, 1); @@ -78,7 +81,7 @@ declare_clippy_lint! { /// ``` #[clippy::version = "1.66.0"] pub MANUAL_CLAMP, - complexity, + nursery, "using a clamp pattern instead of the clamp function" } impl_lint_pass!(ManualClamp => [MANUAL_CLAMP]); diff --git a/clippy_lints/src/manual_strip.rs b/clippy_lints/src/manual_strip.rs index de166b9765f4..c795c1d9a16c 100644 --- a/clippy_lints/src/manual_strip.rs +++ b/clippy_lints/src/manual_strip.rs @@ -109,7 +109,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualStrip { let test_span = expr.span.until(then.span); span_lint_and_then(cx, MANUAL_STRIP, strippings[0], &format!("stripping a {kind_word} manually"), |diag| { - diag.span_note(test_span, &format!("the {kind_word} was tested here")); + diag.span_note(test_span, format!("the {kind_word} was tested here")); multispan_sugg( diag, &format!("try using the `strip_{kind_word}` method"), diff --git a/clippy_lints/src/matches/manual_filter.rs b/clippy_lints/src/matches/manual_filter.rs index d521a529e0d6..f6bf0e7aa1ad 100644 --- a/clippy_lints/src/matches/manual_filter.rs +++ b/clippy_lints/src/matches/manual_filter.rs @@ -3,7 +3,7 @@ use clippy_utils::ty::is_type_diagnostic_item; use clippy_utils::visitors::contains_unsafe_block; use clippy_utils::{is_res_lang_ctor, path_res, path_to_local_id}; -use rustc_hir::LangItem::OptionSome; +use rustc_hir::LangItem::{OptionNone, OptionSome}; use rustc_hir::{Arm, Expr, ExprKind, HirId, Pat, PatKind}; use rustc_lint::LateContext; use rustc_span::{sym, SyntaxContext}; @@ -25,15 +25,13 @@ fn get_cond_expr<'tcx>( if let Some(block_expr) = peels_blocks_incl_unsafe_opt(expr); if let ExprKind::If(cond, then_expr, Some(else_expr)) = block_expr.kind; if let PatKind::Binding(_,target, ..) = pat.kind; - if let (then_visitor, else_visitor) - = (is_some_expr(cx, target, ctxt, then_expr), - is_some_expr(cx, target, ctxt, else_expr)); - if then_visitor != else_visitor; // check that one expr resolves to `Some(x)`, the other to `None` + if is_some_expr(cx, target, ctxt, then_expr) && is_none_expr(cx, else_expr) + || is_none_expr(cx, then_expr) && is_some_expr(cx, target, ctxt, else_expr); // check that one expr resolves to `Some(x)`, the other to `None` then { return Some(SomeExpr { expr: peels_blocks_incl_unsafe(cond.peel_drop_temps()), needs_unsafe_block: contains_unsafe_block(cx, expr), - needs_negated: !then_visitor // if the `then_expr` resolves to `None`, need to negate the cond + needs_negated: is_none_expr(cx, then_expr) // if the `then_expr` resolves to `None`, need to negate the cond }) } }; @@ -74,6 +72,13 @@ fn is_some_expr(cx: &LateContext<'_>, target: HirId, ctxt: SyntaxContext, expr: false } +fn is_none_expr(cx: &LateContext<'_>, expr: &Expr<'_>) -> bool { + if let Some(inner_expr) = peels_blocks_incl_unsafe_opt(expr) { + return is_res_lang_ctor(cx, path_res(cx, inner_expr), OptionNone); + }; + false +} + // given the closure: `|| ` // returns `|&| ` fn add_ampersand_if_copy(body_str: String, has_copy_trait: bool) -> String { diff --git a/clippy_lints/src/matches/match_single_binding.rs b/clippy_lints/src/matches/match_single_binding.rs index 1bf8d4e96ad4..c94a1f763306 100644 --- a/clippy_lints/src/matches/match_single_binding.rs +++ b/clippy_lints/src/matches/match_single_binding.rs @@ -31,19 +31,11 @@ pub(crate) fn check<'a>(cx: &LateContext<'a>, ex: &Expr<'a>, arms: &[Arm<'_>], e }; // Do we need to add ';' to suggestion ? - match match_body.kind { - ExprKind::Block(block, _) => { - // macro + expr_ty(body) == () - if block.span.from_expansion() && cx.typeck_results().expr_ty(match_body).is_unit() { - snippet_body.push(';'); - } - }, - _ => { - // expr_ty(body) == () - if cx.typeck_results().expr_ty(match_body).is_unit() { - snippet_body.push(';'); - } - }, + if let ExprKind::Block(block, _) = match_body.kind { + // macro + expr_ty(body) == () + if block.span.from_expansion() && cx.typeck_results().expr_ty(match_body).is_unit() { + snippet_body.push(';'); + } } let mut applicability = Applicability::MaybeIncorrect; diff --git a/clippy_lints/src/matches/match_wild_enum.rs b/clippy_lints/src/matches/match_wild_enum.rs index 7f8d124838cb..59de8c0384ba 100644 --- a/clippy_lints/src/matches/match_wild_enum.rs +++ b/clippy_lints/src/matches/match_wild_enum.rs @@ -30,7 +30,7 @@ pub(crate) fn check(cx: &LateContext<'_>, ex: &Expr<'_>, arms: &[Arm<'_>]) { let mut has_non_wild = false; for arm in arms { match peel_hir_pat_refs(arm.pat).0.kind { - PatKind::Wild => wildcard_span = Some(arm.pat.span), + PatKind::Wild if arm.guard.is_none() => wildcard_span = Some(arm.pat.span), PatKind::Binding(_, _, ident, None) => { wildcard_span = Some(arm.pat.span); wildcard_ident = Some(ident); diff --git a/clippy_lints/src/methods/inefficient_to_string.rs b/clippy_lints/src/methods/inefficient_to_string.rs index d8c821bc9eee..424482859ee8 100644 --- a/clippy_lints/src/methods/inefficient_to_string.rs +++ b/clippy_lints/src/methods/inefficient_to_string.rs @@ -36,7 +36,7 @@ pub fn check( expr.span, &format!("calling `to_string` on `{arg_ty}`"), |diag| { - diag.help(&format!( + diag.help(format!( "`{self_ty}` implements `ToString` through a slower blanket impl, but `{deref_self_ty}` has a fast specialization of `ToString`" )); let mut applicability = Applicability::MachineApplicable; diff --git a/clippy_lints/src/methods/iter_skip_next.rs b/clippy_lints/src/methods/iter_skip_next.rs index beb772100aff..279175e20c37 100644 --- a/clippy_lints/src/methods/iter_skip_next.rs +++ b/clippy_lints/src/methods/iter_skip_next.rs @@ -29,7 +29,7 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr application = Applicability::Unspecified; diag.span_help( pat.span, - &format!("for this change `{}` has to be mutable", snippet(cx, pat.span, "..")), + format!("for this change `{}` has to be mutable", snippet(cx, pat.span, "..")), ); } } diff --git a/clippy_lints/src/methods/option_map_unwrap_or.rs b/clippy_lints/src/methods/option_map_unwrap_or.rs index 910ee14855e2..4c6328481e43 100644 --- a/clippy_lints/src/methods/option_map_unwrap_or.rs +++ b/clippy_lints/src/methods/option_map_unwrap_or.rs @@ -84,7 +84,7 @@ pub(super) fn check<'tcx>( suggestion.push((map_arg_span.with_hi(map_arg_span.lo()), format!("{unwrap_snippet}, "))); } - diag.multipart_suggestion(&format!("use `{suggest}` instead"), suggestion, applicability); + diag.multipart_suggestion(format!("use `{suggest}` instead"), suggestion, applicability); }); } } diff --git a/clippy_lints/src/methods/str_splitn.rs b/clippy_lints/src/methods/str_splitn.rs index 3c01ce1fecd3..d00708e828ea 100644 --- a/clippy_lints/src/methods/str_splitn.rs +++ b/clippy_lints/src/methods/str_splitn.rs @@ -167,7 +167,7 @@ fn check_manual_split_once_indirect( }; diag.span_suggestion_verbose( local.span, - &format!("try `{r}split_once`"), + format!("try `{r}split_once`"), format!("let ({lhs}, {rhs}) = {self_snip}.{r}split_once({pat_snip}){unwrap};"), app, ); diff --git a/clippy_lints/src/methods/unnecessary_lazy_eval.rs b/clippy_lints/src/methods/unnecessary_lazy_eval.rs index 0e73459ad65f..47e2e744112c 100644 --- a/clippy_lints/src/methods/unnecessary_lazy_eval.rs +++ b/clippy_lints/src/methods/unnecessary_lazy_eval.rs @@ -62,7 +62,7 @@ pub(super) fn check<'tcx>( span_lint_and_then(cx, UNNECESSARY_LAZY_EVALUATIONS, expr.span, msg, |diag| { diag.span_suggestion( span, - &format!("use `{simplify_using}(..)` instead"), + format!("use `{simplify_using}(..)` instead"), format!("{simplify_using}({})", snippet(cx, body_expr.span, "..")), applicability, ); diff --git a/clippy_lints/src/needless_late_init.rs b/clippy_lints/src/needless_late_init.rs index 67debe7e08af..5a9387b34cc1 100644 --- a/clippy_lints/src/needless_late_init.rs +++ b/clippy_lints/src/needless_late_init.rs @@ -284,7 +284,7 @@ fn check<'tcx>( diag.span_suggestion( assign.lhs_span, - &format!("declare `{binding_name}` here"), + format!("declare `{binding_name}` here"), let_snippet, Applicability::MachineApplicable, ); @@ -304,7 +304,7 @@ fn check<'tcx>( diag.span_suggestion_verbose( usage.stmt.span.shrink_to_lo(), - &format!("declare `{binding_name}` here"), + format!("declare `{binding_name}` here"), format!("{let_snippet} = "), applicability, ); @@ -335,7 +335,7 @@ fn check<'tcx>( diag.span_suggestion_verbose( usage.stmt.span.shrink_to_lo(), - &format!("declare `{binding_name}` here"), + format!("declare `{binding_name}` here"), format!("{let_snippet} = "), applicability, ); diff --git a/clippy_lints/src/octal_escapes.rs b/clippy_lints/src/octal_escapes.rs index ae0a41db918a..7376ab0c846d 100644 --- a/clippy_lints/src/octal_escapes.rs +++ b/clippy_lints/src/octal_escapes.rs @@ -125,7 +125,7 @@ fn check_lit(cx: &EarlyContext<'_>, lit: &Lit, span: Span, is_string: bool) { if is_string { "string" } else { "byte string" } ), |diag| { - diag.help(&format!( + diag.help(format!( "octal escapes are not supported, `\\0` is always a null {}", if is_string { "character" } else { "byte" } )); @@ -139,7 +139,7 @@ fn check_lit(cx: &EarlyContext<'_>, lit: &Lit, span: Span, is_string: bool) { // suggestion 2: unambiguous null byte diag.span_suggestion( span, - &format!( + format!( "if the null {} is intended, disambiguate using", if is_string { "character" } else { "byte" } ), diff --git a/clippy_lints/src/operators/misrefactored_assign_op.rs b/clippy_lints/src/operators/misrefactored_assign_op.rs index ae805147f07a..015f6c14e761 100644 --- a/clippy_lints/src/operators/misrefactored_assign_op.rs +++ b/clippy_lints/src/operators/misrefactored_assign_op.rs @@ -50,7 +50,7 @@ fn lint_misrefactored_assign_op( let long = format!("{snip_a} = {}", sugg::make_binop(op.into(), a, r)); diag.span_suggestion( expr.span, - &format!( + format!( "did you mean `{snip_a} = {snip_a} {} {snip_r}` or `{long}`? Consider replacing it with", op.as_str() ), diff --git a/clippy_lints/src/permissions_set_readonly_false.rs b/clippy_lints/src/permissions_set_readonly_false.rs new file mode 100644 index 000000000000..e7095ec191f7 --- /dev/null +++ b/clippy_lints/src/permissions_set_readonly_false.rs @@ -0,0 +1,52 @@ +use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::paths; +use clippy_utils::ty::match_type; +use rustc_ast::ast::LitKind; +use rustc_hir::{Expr, ExprKind}; +use rustc_lint::{LateContext, LateLintPass}; +use rustc_session::{declare_lint_pass, declare_tool_lint}; + +declare_clippy_lint! { + /// ### What it does + /// Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`. + /// + /// ### Why is this bad? + /// On Unix platforms this results in the file being world writable, + /// equivalent to `chmod a+w `. + /// ### Example + /// ```rust + /// use std::fs::File; + /// let f = File::create("foo.txt").unwrap(); + /// let metadata = f.metadata().unwrap(); + /// let mut permissions = metadata.permissions(); + /// permissions.set_readonly(false); + /// ``` + #[clippy::version = "1.66.0"] + pub PERMISSIONS_SET_READONLY_FALSE, + suspicious, + "Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`" +} +declare_lint_pass!(PermissionsSetReadonlyFalse => [PERMISSIONS_SET_READONLY_FALSE]); + +impl<'tcx> LateLintPass<'tcx> for PermissionsSetReadonlyFalse { + fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { + if let ExprKind::MethodCall(path, receiver, [arg], _) = &expr.kind + && match_type(cx, cx.typeck_results().expr_ty(receiver), &paths::PERMISSIONS) + && path.ident.name == sym!(set_readonly) + && let ExprKind::Lit(lit) = &arg.kind + && LitKind::Bool(false) == lit.node + { + span_lint_and_then( + cx, + PERMISSIONS_SET_READONLY_FALSE, + expr.span, + "call to `set_readonly` with argument `false`", + |diag| { + diag.note("on Unix platforms this results in the file being world writable"); + diag.help("you can set the desired permissions using `PermissionsExt`. For more information, see\n\ + https://doc.rust-lang.org/std/os/unix/fs/trait.PermissionsExt.html"); + } + ); + } + } +} diff --git a/clippy_lints/src/redundant_clone.rs b/clippy_lints/src/redundant_clone.rs index c1677fb3da1c..0e7c5cca7240 100644 --- a/clippy_lints/src/redundant_clone.rs +++ b/clippy_lints/src/redundant_clone.rs @@ -131,7 +131,7 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClone { // `res = clone(arg)` can be turned into `res = move arg;` // if `arg` is the only borrow of `cloned` at this point. - if cannot_move_out || !possible_borrower.only_borrowers(&[arg], cloned, loc) { + if cannot_move_out || !possible_borrower.at_most_borrowers(cx, &[arg], cloned, loc) { continue; } @@ -178,7 +178,7 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClone { // StorageDead(pred_arg); // res = to_path_buf(cloned); // ``` - if cannot_move_out || !possible_borrower.only_borrowers(&[arg, cloned], local, loc) { + if cannot_move_out || !possible_borrower.at_most_borrowers(cx, &[arg, cloned], local, loc) { continue; } diff --git a/clippy_lints/src/returns.rs b/clippy_lints/src/returns.rs index 81143d7799ea..d4d506605206 100644 --- a/clippy_lints/src/returns.rs +++ b/clippy_lints/src/returns.rs @@ -6,7 +6,7 @@ use core::ops::ControlFlow; use if_chain::if_chain; use rustc_errors::Applicability; use rustc_hir::intravisit::FnKind; -use rustc_hir::{Block, Body, Expr, ExprKind, FnDecl, HirId, MatchSource, PatKind, StmtKind}; +use rustc_hir::{Block, Body, Expr, ExprKind, FnDecl, HirId, LangItem, MatchSource, PatKind, QPath, StmtKind}; use rustc_lint::{LateContext, LateLintPass, LintContext}; use rustc_middle::lint::in_external_macro; use rustc_middle::ty::subst::GenericArgKind; @@ -207,6 +207,12 @@ fn check_final_expr<'tcx>( match &peeled_drop_expr.kind { // simple return is always "bad" ExprKind::Ret(ref inner) => { + // if desugar of `do yeet`, don't lint + if let Some(inner_expr) = inner + && let ExprKind::Call(path_expr, _) = inner_expr.kind + && let ExprKind::Path(QPath::LangItem(LangItem::TryTraitFromYeet, _, _)) = path_expr.kind { + return; + } if cx.tcx.hir().attrs(expr.hir_id).is_empty() { let borrows = inner.map_or(false, |inner| last_statement_borrows(cx, inner)); if !borrows { diff --git a/clippy_lints/src/same_name_method.rs b/clippy_lints/src/same_name_method.rs index caab5851bafc..17763128cd14 100644 --- a/clippy_lints/src/same_name_method.rs +++ b/clippy_lints/src/same_name_method.rs @@ -108,7 +108,7 @@ impl<'tcx> LateLintPass<'tcx> for SameNameMethod { |diag| { diag.span_note( trait_method_span, - &format!("existing `{method_name}` defined here"), + format!("existing `{method_name}` defined here"), ); }, ); @@ -151,7 +151,7 @@ impl<'tcx> LateLintPass<'tcx> for SameNameMethod { // iterate on trait_spans? diag.span_note( trait_spans[0], - &format!("existing `{method_name}` defined here"), + format!("existing `{method_name}` defined here"), ); }, ); diff --git a/clippy_lints/src/size_of_ref.rs b/clippy_lints/src/size_of_ref.rs new file mode 100644 index 000000000000..3fcdb4288ce6 --- /dev/null +++ b/clippy_lints/src/size_of_ref.rs @@ -0,0 +1,73 @@ +use clippy_utils::{diagnostics::span_lint_and_help, path_def_id, ty::peel_mid_ty_refs}; +use rustc_hir::{Expr, ExprKind}; +use rustc_lint::{LateContext, LateLintPass}; +use rustc_session::{declare_lint_pass, declare_tool_lint}; +use rustc_span::sym; + +declare_clippy_lint! { + /// ### What it does + /// + /// Checks for calls to `std::mem::size_of_val()` where the argument is + /// a reference to a reference. + /// + /// ### Why is this bad? + /// + /// Calling `size_of_val()` with a reference to a reference as the argument + /// yields the size of the reference-type, not the size of the value behind + /// the reference. + /// + /// ### Example + /// ```rust + /// struct Foo { + /// buffer: [u8], + /// } + /// + /// impl Foo { + /// fn size(&self) -> usize { + /// // Note that `&self` as an argument is a `&&Foo`: Because `self` + /// // is already a reference, `&self` is a double-reference. + /// // The return value of `size_of_val()` therefor is the + /// // size of the reference-type, not the size of `self`. + /// std::mem::size_of_val(&self) + /// } + /// } + /// ``` + /// Use instead: + /// ```rust + /// struct Foo { + /// buffer: [u8], + /// } + /// + /// impl Foo { + /// fn size(&self) -> usize { + /// // Correct + /// std::mem::size_of_val(self) + /// } + /// } + /// ``` + #[clippy::version = "1.67.0"] + pub SIZE_OF_REF, + suspicious, + "Argument to `std::mem::size_of_val()` is a double-reference, which is almost certainly unintended" +} +declare_lint_pass!(SizeOfRef => [SIZE_OF_REF]); + +impl LateLintPass<'_> for SizeOfRef { + fn check_expr(&mut self, cx: &LateContext<'_>, expr: &'_ Expr<'_>) { + if let ExprKind::Call(path, [arg]) = expr.kind + && let Some(def_id) = path_def_id(cx, path) + && cx.tcx.is_diagnostic_item(sym::mem_size_of_val, def_id) + && let arg_ty = cx.typeck_results().expr_ty(arg) + && peel_mid_ty_refs(arg_ty).1 > 1 + { + span_lint_and_help( + cx, + SIZE_OF_REF, + expr.span, + "argument to `std::mem::size_of_val()` is a reference to a reference", + None, + "dereference the argument to `std::mem::size_of_val()` to get the size of the value instead of the size of the reference-type", + ); + } + } +} diff --git a/clippy_lints/src/swap.rs b/clippy_lints/src/swap.rs index c374529d1ea9..17e9cc5f6b7c 100644 --- a/clippy_lints/src/swap.rs +++ b/clippy_lints/src/swap.rs @@ -132,7 +132,7 @@ fn generate_swap_warning(cx: &LateContext<'_>, e1: &Expr<'_>, e2: &Expr<'_>, spa applicability, ); if !is_xor_based { - diag.note(&format!("or maybe you should use `{sugg}::mem::replace`?")); + diag.note(format!("or maybe you should use `{sugg}::mem::replace`?")); } }, ); @@ -214,7 +214,7 @@ fn check_suspicious_swap(cx: &LateContext<'_>, block: &Block<'_>) { Applicability::MaybeIncorrect, ); diag.note( - &format!("or maybe you should use `{sugg}::mem::replace`?") + format!("or maybe you should use `{sugg}::mem::replace`?") ); } }); diff --git a/clippy_lints/src/transmute/mod.rs b/clippy_lints/src/transmute/mod.rs index 83e651aba8e8..691d759d7739 100644 --- a/clippy_lints/src/transmute/mod.rs +++ b/clippy_lints/src/transmute/mod.rs @@ -3,6 +3,7 @@ mod transmute_float_to_int; mod transmute_int_to_bool; mod transmute_int_to_char; mod transmute_int_to_float; +mod transmute_null_to_fn; mod transmute_num_to_bytes; mod transmute_ptr_to_ptr; mod transmute_ptr_to_ref; @@ -409,6 +410,34 @@ declare_clippy_lint! { "transmutes from a null pointer to a reference, which is undefined behavior" } +declare_clippy_lint! { + /// ### What it does + /// Checks for null function pointer creation through transmute. + /// + /// ### Why is this bad? + /// Creating a null function pointer is undefined behavior. + /// + /// More info: https://doc.rust-lang.org/nomicon/ffi.html#the-nullable-pointer-optimization + /// + /// ### Known problems + /// Not all cases can be detected at the moment of this writing. + /// For example, variables which hold a null pointer and are then fed to a `transmute` + /// call, aren't detectable yet. + /// + /// ### Example + /// ```rust + /// let null_fn: fn() = unsafe { std::mem::transmute( std::ptr::null::<()>() ) }; + /// ``` + /// Use instead: + /// ```rust + /// let null_fn: Option = None; + /// ``` + #[clippy::version = "1.67.0"] + pub TRANSMUTE_NULL_TO_FN, + correctness, + "transmute results in a null function pointer, which is undefined behavior" +} + pub struct Transmute { msrv: Msrv, } @@ -428,6 +457,7 @@ impl_lint_pass!(Transmute => [ TRANSMUTES_EXPRESSIBLE_AS_PTR_CASTS, TRANSMUTE_UNDEFINED_REPR, TRANSMUTING_NULL, + TRANSMUTE_NULL_TO_FN, ]); impl Transmute { #[must_use] @@ -461,6 +491,7 @@ impl<'tcx> LateLintPass<'tcx> for Transmute { let linted = wrong_transmute::check(cx, e, from_ty, to_ty) | crosspointer_transmute::check(cx, e, from_ty, to_ty) | transmuting_null::check(cx, e, arg, to_ty) + | transmute_null_to_fn::check(cx, e, arg, to_ty) | transmute_ptr_to_ref::check(cx, e, from_ty, to_ty, arg, path, &self.msrv) | transmute_int_to_char::check(cx, e, from_ty, to_ty, arg, const_context) | transmute_ref_to_ref::check(cx, e, from_ty, to_ty, arg, const_context) diff --git a/clippy_lints/src/transmute/transmute_null_to_fn.rs b/clippy_lints/src/transmute/transmute_null_to_fn.rs new file mode 100644 index 000000000000..e75d7f6bf1d5 --- /dev/null +++ b/clippy_lints/src/transmute/transmute_null_to_fn.rs @@ -0,0 +1,64 @@ +use clippy_utils::consts::{constant, Constant}; +use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::{is_integer_literal, is_path_diagnostic_item}; +use rustc_hir::{Expr, ExprKind}; +use rustc_lint::LateContext; +use rustc_middle::ty::Ty; +use rustc_span::symbol::sym; + +use super::TRANSMUTE_NULL_TO_FN; + +fn lint_expr(cx: &LateContext<'_>, expr: &Expr<'_>) { + span_lint_and_then( + cx, + TRANSMUTE_NULL_TO_FN, + expr.span, + "transmuting a known null pointer into a function pointer", + |diag| { + diag.span_label(expr.span, "this transmute results in undefined behavior"); + diag.help( + "try wrapping your function pointer type in `Option` instead, and using `None` as a null pointer value" + ); + }, + ); +} + +pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>, arg: &'tcx Expr<'_>, to_ty: Ty<'tcx>) -> bool { + if !to_ty.is_fn() { + return false; + } + + match arg.kind { + // Catching: + // transmute over constants that resolve to `null`. + ExprKind::Path(ref _qpath) + if matches!(constant(cx, cx.typeck_results(), arg), Some((Constant::RawPtr(0), _))) => + { + lint_expr(cx, expr); + true + }, + + // Catching: + // `std::mem::transmute(0 as *const i32)` + ExprKind::Cast(inner_expr, _cast_ty) if is_integer_literal(inner_expr, 0) => { + lint_expr(cx, expr); + true + }, + + // Catching: + // `std::mem::transmute(std::ptr::null::())` + ExprKind::Call(func1, []) if is_path_diagnostic_item(cx, func1, sym::ptr_null) => { + lint_expr(cx, expr); + true + }, + + _ => { + // FIXME: + // Also catch transmutations of variables which are known nulls. + // To do this, MIR const propagation seems to be the better tool. + // Whenever MIR const prop routines are more developed, this will + // become available. As of this writing (25/03/19) it is not yet. + false + }, + } +} diff --git a/clippy_lints/src/transmute/transmute_undefined_repr.rs b/clippy_lints/src/transmute/transmute_undefined_repr.rs index 34642f4b122f..af0242348ac2 100644 --- a/clippy_lints/src/transmute/transmute_undefined_repr.rs +++ b/clippy_lints/src/transmute/transmute_undefined_repr.rs @@ -77,7 +77,7 @@ pub(super) fn check<'tcx>( &format!("transmute from `{from_ty_orig}` which has an undefined layout"), |diag| { if from_ty_orig.peel_refs() != from_ty.peel_refs() { - diag.note(&format!("the contained type `{from_ty}` has an undefined layout")); + diag.note(format!("the contained type `{from_ty}` has an undefined layout")); } }, ); @@ -91,7 +91,7 @@ pub(super) fn check<'tcx>( &format!("transmute to `{to_ty_orig}` which has an undefined layout"), |diag| { if to_ty_orig.peel_refs() != to_ty.peel_refs() { - diag.note(&format!("the contained type `{to_ty}` has an undefined layout")); + diag.note(format!("the contained type `{to_ty}` has an undefined layout")); } }, ); @@ -119,16 +119,16 @@ pub(super) fn check<'tcx>( ), |diag| { if let Some(same_adt_did) = same_adt_did { - diag.note(&format!( + diag.note(format!( "two instances of the same generic type (`{}`) may have different layouts", cx.tcx.item_name(same_adt_did) )); } else { if from_ty_orig.peel_refs() != from_ty { - diag.note(&format!("the contained type `{from_ty}` has an undefined layout")); + diag.note(format!("the contained type `{from_ty}` has an undefined layout")); } if to_ty_orig.peel_refs() != to_ty { - diag.note(&format!("the contained type `{to_ty}` has an undefined layout")); + diag.note(format!("the contained type `{to_ty}` has an undefined layout")); } } }, @@ -146,7 +146,7 @@ pub(super) fn check<'tcx>( &format!("transmute from `{from_ty_orig}` which has an undefined layout"), |diag| { if from_ty_orig.peel_refs() != from_ty { - diag.note(&format!("the contained type `{from_ty}` has an undefined layout")); + diag.note(format!("the contained type `{from_ty}` has an undefined layout")); } }, ); @@ -163,7 +163,7 @@ pub(super) fn check<'tcx>( &format!("transmute into `{to_ty_orig}` which has an undefined layout"), |diag| { if to_ty_orig.peel_refs() != to_ty { - diag.note(&format!("the contained type `{to_ty}` has an undefined layout")); + diag.note(format!("the contained type `{to_ty}` has an undefined layout")); } }, ); diff --git a/clippy_lints/src/transmute/transmutes_expressible_as_ptr_casts.rs b/clippy_lints/src/transmute/transmutes_expressible_as_ptr_casts.rs index 6b444922a7cc..b79d4e915a27 100644 --- a/clippy_lints/src/transmute/transmutes_expressible_as_ptr_casts.rs +++ b/clippy_lints/src/transmute/transmutes_expressible_as_ptr_casts.rs @@ -24,7 +24,7 @@ pub(super) fn check<'tcx>( &format!("transmute from `{from_ty}` to `{to_ty}` which could be expressed as a pointer cast instead"), |diag| { if let Some(arg) = sugg::Sugg::hir_opt(cx, arg) { - let sugg = arg.as_ty(&to_ty.to_string()).to_string(); + let sugg = arg.as_ty(to_ty.to_string()).to_string(); diag.span_suggestion(e.span, "try", sugg, Applicability::MachineApplicable); } }, diff --git a/clippy_lints/src/transmute/transmuting_null.rs b/clippy_lints/src/transmute/transmuting_null.rs index 19ce5ae72c24..1e407fc4138c 100644 --- a/clippy_lints/src/transmute/transmuting_null.rs +++ b/clippy_lints/src/transmute/transmuting_null.rs @@ -18,8 +18,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>, arg: &'t // Catching transmute over constants that resolve to `null`. let mut const_eval_context = constant_context(cx, cx.typeck_results()); if let ExprKind::Path(ref _qpath) = arg.kind && - let Some(Constant::RawPtr(x)) = const_eval_context.expr(arg) && - x == 0 + let Some(Constant::RawPtr(0)) = const_eval_context.expr(arg) { span_lint(cx, TRANSMUTING_NULL, expr.span, LINT_MSG); return true; diff --git a/clippy_lints/src/transmute/useless_transmute.rs b/clippy_lints/src/transmute/useless_transmute.rs index f919bbd5afca..871c3fadbba7 100644 --- a/clippy_lints/src/transmute/useless_transmute.rs +++ b/clippy_lints/src/transmute/useless_transmute.rs @@ -61,7 +61,7 @@ pub(super) fn check<'tcx>( "transmute from an integer to a pointer", |diag| { if let Some(arg) = sugg::Sugg::hir_opt(cx, arg) { - diag.span_suggestion(e.span, "try", arg.as_ty(&to_ty.to_string()), Applicability::Unspecified); + diag.span_suggestion(e.span, "try", arg.as_ty(to_ty.to_string()), Applicability::Unspecified); } }, ); diff --git a/clippy_lints/src/types/redundant_allocation.rs b/clippy_lints/src/types/redundant_allocation.rs index fae5385ffc84..f9b9a66b5fa4 100644 --- a/clippy_lints/src/types/redundant_allocation.rs +++ b/clippy_lints/src/types/redundant_allocation.rs @@ -31,7 +31,7 @@ pub(super) fn check(cx: &LateContext<'_>, hir_ty: &hir::Ty<'_>, qpath: &QPath<'_ &format!("usage of `{outer_sym}<{generic_snippet}>`"), |diag| { diag.span_suggestion(hir_ty.span, "try", format!("{generic_snippet}"), applicability); - diag.note(&format!( + diag.note(format!( "`{generic_snippet}` is already a pointer, `{outer_sym}<{generic_snippet}>` allocates a pointer on the heap" )); }, @@ -78,7 +78,7 @@ pub(super) fn check(cx: &LateContext<'_>, hir_ty: &hir::Ty<'_>, qpath: &QPath<'_ format!("{outer_sym}<{generic_snippet}>"), applicability, ); - diag.note(&format!( + diag.note(format!( "`{inner_sym}<{generic_snippet}>` is already on the heap, `{outer_sym}<{inner_sym}<{generic_snippet}>>` makes an extra allocation" )); }, @@ -91,10 +91,10 @@ pub(super) fn check(cx: &LateContext<'_>, hir_ty: &hir::Ty<'_>, qpath: &QPath<'_ hir_ty.span, &format!("usage of `{outer_sym}<{inner_sym}<{generic_snippet}>>`"), |diag| { - diag.note(&format!( + diag.note(format!( "`{inner_sym}<{generic_snippet}>` is already on the heap, `{outer_sym}<{inner_sym}<{generic_snippet}>>` makes an extra allocation" )); - diag.help(&format!( + diag.help(format!( "consider using just `{outer_sym}<{generic_snippet}>` or `{inner_sym}<{generic_snippet}>`" )); }, diff --git a/clippy_lints/src/unit_types/unit_arg.rs b/clippy_lints/src/unit_types/unit_arg.rs index f6d3fb00f4ee..ef9f740f7047 100644 --- a/clippy_lints/src/unit_types/unit_arg.rs +++ b/clippy_lints/src/unit_types/unit_arg.rs @@ -129,7 +129,7 @@ fn lint_unit_args(cx: &LateContext<'_>, expr: &Expr<'_>, args_to_recover: &[&Exp if arg_snippets_without_empty_blocks.is_empty() { db.multipart_suggestion( - &format!("use {singular}unit literal{plural} instead"), + format!("use {singular}unit literal{plural} instead"), args_to_recover .iter() .map(|arg| (arg.span, "()".to_string())) @@ -142,7 +142,7 @@ fn lint_unit_args(cx: &LateContext<'_>, expr: &Expr<'_>, args_to_recover: &[&Exp let it_or_them = if plural { "them" } else { "it" }; db.span_suggestion( expr.span, - &format!( + format!( "{or}move the expression{empty_or_s} in front of the call and replace {it_or_them} with the unit literal `()`" ), sugg, diff --git a/clippy_lints/src/useless_conversion.rs b/clippy_lints/src/useless_conversion.rs index 3743d5d97a73..a95e7b613746 100644 --- a/clippy_lints/src/useless_conversion.rs +++ b/clippy_lints/src/useless_conversion.rs @@ -1,11 +1,11 @@ use clippy_utils::diagnostics::{span_lint_and_help, span_lint_and_sugg}; use clippy_utils::source::{snippet, snippet_with_macro_callsite}; use clippy_utils::sugg::Sugg; -use clippy_utils::ty::{is_type_diagnostic_item, same_type_and_consts}; -use clippy_utils::{get_parent_expr, is_trait_method, match_def_path, paths}; +use clippy_utils::ty::{is_copy, is_type_diagnostic_item, same_type_and_consts}; +use clippy_utils::{get_parent_expr, is_trait_method, match_def_path, path_to_local, paths}; use if_chain::if_chain; use rustc_errors::Applicability; -use rustc_hir::{Expr, ExprKind, HirId, MatchSource}; +use rustc_hir::{BindingAnnotation, Expr, ExprKind, HirId, MatchSource, Node, PatKind}; use rustc_lint::{LateContext, LateLintPass}; use rustc_middle::ty; use rustc_session::{declare_tool_lint, impl_lint_pass}; @@ -81,16 +81,24 @@ impl<'tcx> LateLintPass<'tcx> for UselessConversion { } } if is_trait_method(cx, e, sym::IntoIterator) && name.ident.name == sym::into_iter { - if let Some(parent_expr) = get_parent_expr(cx, e) { - if let ExprKind::MethodCall(parent_name, ..) = parent_expr.kind { - if parent_name.ident.name != sym::into_iter { - return; - } - } + if get_parent_expr(cx, e).is_some() && + let Some(id) = path_to_local(recv) && + let Node::Pat(pat) = cx.tcx.hir().get(id) && + let PatKind::Binding(ann, ..) = pat.kind && + ann != BindingAnnotation::MUT + { + // Do not remove .into_iter() applied to a non-mutable local variable used in + // a larger expression context as it would differ in mutability. + return; } + let a = cx.typeck_results().expr_ty(e); let b = cx.typeck_results().expr_ty(recv); - if same_type_and_consts(a, b) { + + // If the types are identical then .into_iter() can be removed, unless the type + // implements Copy, in which case .into_iter() returns a copy of the receiver and + // cannot be safely omitted. + if same_type_and_consts(a, b) && !is_copy(cx, b) { let sugg = snippet(cx, recv.span, "").into_owned(); span_lint_and_sugg( cx, diff --git a/clippy_lints/src/utils/conf.rs b/clippy_lints/src/utils/conf.rs index 3e7d0028c0fb..c1589c771c46 100644 --- a/clippy_lints/src/utils/conf.rs +++ b/clippy_lints/src/utils/conf.rs @@ -333,7 +333,7 @@ define_Conf! { /// Lint: LARGE_STACK_ARRAYS, LARGE_CONST_ARRAYS. /// /// The maximum allowed size for arrays on the stack - (array_size_threshold: u64 = 512_000), + (array_size_threshold: u128 = 512_000), /// Lint: VEC_BOX. /// /// The size of the boxed type in bytes, where boxing in a `Vec` is allowed diff --git a/clippy_lints/src/utils/internal_lints/metadata_collector.rs b/clippy_lints/src/utils/internal_lints/metadata_collector.rs index 857abe77e21f..929544cd69d5 100644 --- a/clippy_lints/src/utils/internal_lints/metadata_collector.rs +++ b/clippy_lints/src/utils/internal_lints/metadata_collector.rs @@ -558,8 +558,8 @@ impl fmt::Display for ClippyConfiguration { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> fmt::Result { writeln!( f, - "* `{}`: `{}`: {} (defaults to `{}`)", - self.name, self.config_type, self.doc, self.default + "* `{}`: `{}`(defaults to `{}`): {}", + self.name, self.config_type, self.default, self.doc ) } } diff --git a/clippy_lints/src/write.rs b/clippy_lints/src/write.rs index 6b321765bc08..df3350388817 100644 --- a/clippy_lints/src/write.rs +++ b/clippy_lints/src/write.rs @@ -377,7 +377,7 @@ fn check_newline(cx: &LateContext<'_>, format_args: &FormatArgsExpn<'_>, macro_c // print!("\n"), write!(f, "\n") diag.multipart_suggestion( - &format!("use `{name}ln!` instead"), + format!("use `{name}ln!` instead"), vec![(name_span, format!("{name}ln")), (format_string_span, String::new())], Applicability::MachineApplicable, ); @@ -388,7 +388,7 @@ fn check_newline(cx: &LateContext<'_>, format_args: &FormatArgsExpn<'_>, macro_c let newline_span = format_string_span.with_lo(hi - BytePos(3)).with_hi(hi - BytePos(1)); diag.multipart_suggestion( - &format!("use `{name}ln!` instead"), + format!("use `{name}ln!` instead"), vec![(name_span, format!("{name}ln")), (newline_span, String::new())], Applicability::MachineApplicable, ); diff --git a/clippy_utils/src/consts.rs b/clippy_utils/src/consts.rs index 7a637d32babe..a67bd8d46006 100644 --- a/clippy_utils/src/consts.rs +++ b/clippy_utils/src/consts.rs @@ -620,12 +620,7 @@ pub fn miri_to_const<'tcx>(tcx: TyCtxt<'tcx>, result: mir::ConstantKind<'tcx>) - ty::Float(FloatTy::F64) => Some(Constant::F64(f64::from_bits( int.try_into().expect("invalid f64 bit representation"), ))), - ty::RawPtr(type_and_mut) => { - if let ty::Uint(_) = type_and_mut.ty.kind() { - return Some(Constant::RawPtr(int.assert_bits(int.size()))); - } - None - }, + ty::RawPtr(_) => Some(Constant::RawPtr(int.assert_bits(int.size()))), // FIXME: implement other conversions. _ => None, } diff --git a/clippy_utils/src/diagnostics.rs b/clippy_utils/src/diagnostics.rs index 16b160b6fd27..812f6fe71a0a 100644 --- a/clippy_utils/src/diagnostics.rs +++ b/clippy_utils/src/diagnostics.rs @@ -17,7 +17,7 @@ use std::env; fn docs_link(diag: &mut Diagnostic, lint: &'static Lint) { if env::var("CLIPPY_DISABLE_DOCS_LINKS").is_err() { if let Some(lint) = lint.name_lower().strip_prefix("clippy::") { - diag.help(&format!( + diag.help(format!( "for further information visit https://rust-lang.github.io/rust-clippy/{}/index.html#{lint}", &option_env!("RUST_RELEASE_NUM").map_or("master".to_string(), |n| { // extract just major + minor version and ignore patch versions diff --git a/clippy_utils/src/mir/maybe_storage_live.rs b/clippy_utils/src/mir/maybe_storage_live.rs deleted file mode 100644 index d262b335d99d..000000000000 --- a/clippy_utils/src/mir/maybe_storage_live.rs +++ /dev/null @@ -1,52 +0,0 @@ -use rustc_index::bit_set::BitSet; -use rustc_middle::mir; -use rustc_mir_dataflow::{AnalysisDomain, CallReturnPlaces, GenKill, GenKillAnalysis}; - -/// Determines liveness of each local purely based on `StorageLive`/`Dead`. -#[derive(Copy, Clone)] -pub(super) struct MaybeStorageLive; - -impl<'tcx> AnalysisDomain<'tcx> for MaybeStorageLive { - type Domain = BitSet; - const NAME: &'static str = "maybe_storage_live"; - - fn bottom_value(&self, body: &mir::Body<'tcx>) -> Self::Domain { - // bottom = dead - BitSet::new_empty(body.local_decls.len()) - } - - fn initialize_start_block(&self, body: &mir::Body<'tcx>, state: &mut Self::Domain) { - for arg in body.args_iter() { - state.insert(arg); - } - } -} - -impl<'tcx> GenKillAnalysis<'tcx> for MaybeStorageLive { - type Idx = mir::Local; - - fn statement_effect(&self, trans: &mut impl GenKill, stmt: &mir::Statement<'tcx>, _: mir::Location) { - match stmt.kind { - mir::StatementKind::StorageLive(l) => trans.gen(l), - mir::StatementKind::StorageDead(l) => trans.kill(l), - _ => (), - } - } - - fn terminator_effect( - &self, - _trans: &mut impl GenKill, - _terminator: &mir::Terminator<'tcx>, - _loc: mir::Location, - ) { - } - - fn call_return_effect( - &self, - _trans: &mut impl GenKill, - _block: mir::BasicBlock, - _return_places: CallReturnPlaces<'_, 'tcx>, - ) { - // Nothing to do when a call returns successfully - } -} diff --git a/clippy_utils/src/mir/mod.rs b/clippy_utils/src/mir/mod.rs index 818e603f665e..26c0015e87e0 100644 --- a/clippy_utils/src/mir/mod.rs +++ b/clippy_utils/src/mir/mod.rs @@ -5,8 +5,6 @@ use rustc_middle::mir::{ }; use rustc_middle::ty::TyCtxt; -mod maybe_storage_live; - mod possible_borrower; pub use possible_borrower::PossibleBorrowerMap; diff --git a/clippy_utils/src/mir/possible_borrower.rs b/clippy_utils/src/mir/possible_borrower.rs index 25717bf3d2fe..395d46e7a2f8 100644 --- a/clippy_utils/src/mir/possible_borrower.rs +++ b/clippy_utils/src/mir/possible_borrower.rs @@ -1,92 +1,137 @@ -use super::{ - maybe_storage_live::MaybeStorageLive, possible_origin::PossibleOriginVisitor, - transitive_relation::TransitiveRelation, -}; +use super::possible_origin::PossibleOriginVisitor; use crate::ty::is_copy; -use rustc_data_structures::fx::FxHashMap; +use rustc_data_structures::fx::{FxHashMap, FxIndexMap}; use rustc_index::bit_set::{BitSet, HybridBitSet}; use rustc_lint::LateContext; -use rustc_middle::mir::{self, visit::Visitor as _, Mutability}; -use rustc_middle::ty::{self, visit::TypeVisitor}; -use rustc_mir_dataflow::{Analysis, ResultsCursor}; +use rustc_middle::mir::{ + self, visit::Visitor as _, BasicBlock, Local, Location, Mutability, Statement, StatementKind, Terminator, +}; +use rustc_middle::ty::{self, visit::TypeVisitor, TyCtxt}; +use rustc_mir_dataflow::{ + fmt::DebugWithContext, impls::MaybeStorageLive, lattice::JoinSemiLattice, Analysis, AnalysisDomain, + CallReturnPlaces, ResultsCursor, +}; +use std::borrow::Cow; use std::ops::ControlFlow; /// Collects the possible borrowers of each local. /// For example, `b = &a; c = &a;` will make `b` and (transitively) `c` /// possible borrowers of `a`. #[allow(clippy::module_name_repetitions)] -struct PossibleBorrowerVisitor<'a, 'b, 'tcx> { - possible_borrower: TransitiveRelation, +struct PossibleBorrowerAnalysis<'b, 'tcx> { + tcx: TyCtxt<'tcx>, body: &'b mir::Body<'tcx>, - cx: &'a LateContext<'tcx>, possible_origin: FxHashMap>, } -impl<'a, 'b, 'tcx> PossibleBorrowerVisitor<'a, 'b, 'tcx> { +#[derive(Clone, Debug, Eq, PartialEq)] +struct PossibleBorrowerState { + map: FxIndexMap>, + domain_size: usize, +} + +impl PossibleBorrowerState { + fn new(domain_size: usize) -> Self { + Self { + map: FxIndexMap::default(), + domain_size, + } + } + + #[allow(clippy::similar_names)] + fn add(&mut self, borrowed: Local, borrower: Local) { + self.map + .entry(borrowed) + .or_insert(BitSet::new_empty(self.domain_size)) + .insert(borrower); + } +} + +impl DebugWithContext for PossibleBorrowerState { + fn fmt_with(&self, _ctxt: &C, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + <_ as std::fmt::Debug>::fmt(self, f) + } + fn fmt_diff_with(&self, _old: &Self, _ctxt: &C, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + unimplemented!() + } +} + +impl JoinSemiLattice for PossibleBorrowerState { + fn join(&mut self, other: &Self) -> bool { + let mut changed = false; + for (&borrowed, borrowers) in other.map.iter() { + if !borrowers.is_empty() { + changed |= self + .map + .entry(borrowed) + .or_insert(BitSet::new_empty(self.domain_size)) + .union(borrowers); + } + } + changed + } +} + +impl<'b, 'tcx> AnalysisDomain<'tcx> for PossibleBorrowerAnalysis<'b, 'tcx> { + type Domain = PossibleBorrowerState; + + const NAME: &'static str = "possible_borrower"; + + fn bottom_value(&self, body: &mir::Body<'tcx>) -> Self::Domain { + PossibleBorrowerState::new(body.local_decls.len()) + } + + fn initialize_start_block(&self, _body: &mir::Body<'tcx>, _entry_set: &mut Self::Domain) {} +} + +impl<'b, 'tcx> PossibleBorrowerAnalysis<'b, 'tcx> { fn new( - cx: &'a LateContext<'tcx>, + tcx: TyCtxt<'tcx>, body: &'b mir::Body<'tcx>, possible_origin: FxHashMap>, ) -> Self { Self { - possible_borrower: TransitiveRelation::default(), - cx, + tcx, body, possible_origin, } } - - fn into_map( - self, - cx: &'a LateContext<'tcx>, - maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, - ) -> PossibleBorrowerMap<'b, 'tcx> { - let mut map = FxHashMap::default(); - for row in (1..self.body.local_decls.len()).map(mir::Local::from_usize) { - if is_copy(cx, self.body.local_decls[row].ty) { - continue; - } - - let mut borrowers = self.possible_borrower.reachable_from(row, self.body.local_decls.len()); - borrowers.remove(mir::Local::from_usize(0)); - if !borrowers.is_empty() { - map.insert(row, borrowers); - } - } - - let bs = BitSet::new_empty(self.body.local_decls.len()); - PossibleBorrowerMap { - map, - maybe_live, - bitset: (bs.clone(), bs), - } - } } -impl<'a, 'b, 'tcx> mir::visit::Visitor<'tcx> for PossibleBorrowerVisitor<'a, 'b, 'tcx> { - fn visit_assign(&mut self, place: &mir::Place<'tcx>, rvalue: &mir::Rvalue<'_>, _location: mir::Location) { - let lhs = place.local; - match rvalue { - mir::Rvalue::Ref(_, _, borrowed) => { - self.possible_borrower.add(borrowed.local, lhs); - }, - other => { - if ContainsRegion - .visit_ty(place.ty(&self.body.local_decls, self.cx.tcx).ty) - .is_continue() - { - return; - } - rvalue_locals(other, |rhs| { - if lhs != rhs { - self.possible_borrower.add(rhs, lhs); +impl<'b, 'tcx> Analysis<'tcx> for PossibleBorrowerAnalysis<'b, 'tcx> { + fn apply_call_return_effect( + &self, + _state: &mut Self::Domain, + _block: BasicBlock, + _return_places: CallReturnPlaces<'_, 'tcx>, + ) { + } + + fn apply_statement_effect(&self, state: &mut Self::Domain, statement: &Statement<'tcx>, _location: Location) { + if let StatementKind::Assign(box (place, rvalue)) = &statement.kind { + let lhs = place.local; + match rvalue { + mir::Rvalue::Ref(_, _, borrowed) => { + state.add(borrowed.local, lhs); + }, + other => { + if ContainsRegion + .visit_ty(place.ty(&self.body.local_decls, self.tcx).ty) + .is_continue() + { + return; } - }); - }, + rvalue_locals(other, |rhs| { + if lhs != rhs { + state.add(rhs, lhs); + } + }); + }, + } } } - fn visit_terminator(&mut self, terminator: &mir::Terminator<'_>, _loc: mir::Location) { + fn apply_terminator_effect(&self, state: &mut Self::Domain, terminator: &Terminator<'tcx>, _location: Location) { if let mir::TerminatorKind::Call { args, destination: mir::Place { local: dest, .. }, @@ -126,10 +171,10 @@ impl<'a, 'b, 'tcx> mir::visit::Visitor<'tcx> for PossibleBorrowerVisitor<'a, 'b, for y in mutable_variables { for x in &immutable_borrowers { - self.possible_borrower.add(*x, y); + state.add(*x, y); } for x in &mutable_borrowers { - self.possible_borrower.add(*x, y); + state.add(*x, y); } } } @@ -165,73 +210,98 @@ fn rvalue_locals(rvalue: &mir::Rvalue<'_>, mut visit: impl FnMut(mir::Local)) { } } -/// Result of `PossibleBorrowerVisitor`. +/// Result of `PossibleBorrowerAnalysis`. #[allow(clippy::module_name_repetitions)] pub struct PossibleBorrowerMap<'b, 'tcx> { - /// Mapping `Local -> its possible borrowers` - pub map: FxHashMap>, - maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, - // Caches to avoid allocation of `BitSet` on every query - pub bitset: (BitSet, BitSet), + body: &'b mir::Body<'tcx>, + possible_borrower: ResultsCursor<'b, 'tcx, PossibleBorrowerAnalysis<'b, 'tcx>>, + maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive<'b>>, + pushed: BitSet, + stack: Vec, } -impl<'a, 'b, 'tcx> PossibleBorrowerMap<'b, 'tcx> { - pub fn new(cx: &'a LateContext<'tcx>, mir: &'b mir::Body<'tcx>) -> Self { +impl<'b, 'tcx> PossibleBorrowerMap<'b, 'tcx> { + pub fn new(cx: &LateContext<'tcx>, mir: &'b mir::Body<'tcx>) -> Self { let possible_origin = { let mut vis = PossibleOriginVisitor::new(mir); vis.visit_body(mir); vis.into_map(cx) }; - let maybe_storage_live_result = MaybeStorageLive + let possible_borrower = PossibleBorrowerAnalysis::new(cx.tcx, mir, possible_origin) .into_engine(cx.tcx, mir) - .pass_name("redundant_clone") + .pass_name("possible_borrower") .iterate_to_fixpoint() .into_results_cursor(mir); - let mut vis = PossibleBorrowerVisitor::new(cx, mir, possible_origin); - vis.visit_body(mir); - vis.into_map(cx, maybe_storage_live_result) + let maybe_live = MaybeStorageLive::new(Cow::Owned(BitSet::new_empty(mir.local_decls.len()))) + .into_engine(cx.tcx, mir) + .pass_name("possible_borrower") + .iterate_to_fixpoint() + .into_results_cursor(mir); + PossibleBorrowerMap { + body: mir, + possible_borrower, + maybe_live, + pushed: BitSet::new_empty(mir.local_decls.len()), + stack: Vec::with_capacity(mir.local_decls.len()), + } } - /// Returns true if the set of borrowers of `borrowed` living at `at` matches with `borrowers`. - pub fn only_borrowers(&mut self, borrowers: &[mir::Local], borrowed: mir::Local, at: mir::Location) -> bool { - self.bounded_borrowers(borrowers, borrowers, borrowed, at) - } - - /// Returns true if the set of borrowers of `borrowed` living at `at` includes at least `below` - /// but no more than `above`. - pub fn bounded_borrowers( + /// Returns true if the set of borrowers of `borrowed` living at `at` includes no more than + /// `borrowers`. + /// Notes: + /// 1. It would be nice if `PossibleBorrowerMap` could store `cx` so that `at_most_borrowers` + /// would not require it to be passed in. But a `PossibleBorrowerMap` is stored in `LintPass` + /// `Dereferencing`, which outlives any `LateContext`. + /// 2. In all current uses of `at_most_borrowers`, `borrowers` is a slice of at most two + /// elements. Thus, `borrowers.contains(...)` is effectively a constant-time operation. If + /// `at_most_borrowers`'s uses were to expand beyond this, its implementation might have to be + /// adjusted. + pub fn at_most_borrowers( &mut self, - below: &[mir::Local], - above: &[mir::Local], + cx: &LateContext<'tcx>, + borrowers: &[mir::Local], borrowed: mir::Local, at: mir::Location, ) -> bool { - self.maybe_live.seek_after_primary_effect(at); + if is_copy(cx, self.body.local_decls[borrowed].ty) { + return true; + } - self.bitset.0.clear(); - let maybe_live = &mut self.maybe_live; - if let Some(bitset) = self.map.get(&borrowed) { - for b in bitset.iter().filter(move |b| maybe_live.contains(*b)) { - self.bitset.0.insert(b); + self.possible_borrower.seek_before_primary_effect(at); + self.maybe_live.seek_before_primary_effect(at); + + let possible_borrower = &self.possible_borrower.get().map; + let maybe_live = &self.maybe_live; + + self.pushed.clear(); + self.stack.clear(); + + if let Some(borrowers) = possible_borrower.get(&borrowed) { + for b in borrowers.iter() { + if self.pushed.insert(b) { + self.stack.push(b); + } } } else { - return false; + // Nothing borrows `borrowed` at `at`. + return true; } - self.bitset.1.clear(); - for b in below { - self.bitset.1.insert(*b); + while let Some(borrower) = self.stack.pop() { + if maybe_live.contains(borrower) && !borrowers.contains(&borrower) { + return false; + } + + if let Some(borrowers) = possible_borrower.get(&borrower) { + for b in borrowers.iter() { + if self.pushed.insert(b) { + self.stack.push(b); + } + } + } } - if !self.bitset.0.superset(&self.bitset.1) { - return false; - } - - for b in above { - self.bitset.0.remove(*b); - } - - self.bitset.0.is_empty() + true } pub fn local_is_alive_at(&mut self, local: mir::Local, at: mir::Location) -> bool { diff --git a/clippy_utils/src/sugg.rs b/clippy_utils/src/sugg.rs index b66604f33db1..4c4c077d771f 100644 --- a/clippy_utils/src/sugg.rs +++ b/clippy_utils/src/sugg.rs @@ -185,7 +185,6 @@ impl<'a> Sugg<'a> { ) -> Self { use rustc_ast::ast::RangeLimits; - #[expect(clippy::match_wildcard_for_single_variants)] match expr.kind { _ if expr.span.ctxt() != ctxt => Sugg::NonParen(snippet_with_context(cx, expr.span, ctxt, default, app).0), ast::ExprKind::AddrOf(..) diff --git a/rust-toolchain b/rust-toolchain index 8e21cef32abb..9399d422036d 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2022-12-17" +channel = "nightly-2022-12-29" components = ["cargo", "llvm-tools", "rust-src", "rust-std", "rustc", "rustc-dev", "rustfmt"] diff --git a/tests/ui/crashes/ice-10044.rs b/tests/ui/crashes/ice-10044.rs new file mode 100644 index 000000000000..65f38fe71188 --- /dev/null +++ b/tests/ui/crashes/ice-10044.rs @@ -0,0 +1,3 @@ +fn main() { + [0; usize::MAX]; +} diff --git a/tests/ui/crashes/ice-10044.stderr b/tests/ui/crashes/ice-10044.stderr new file mode 100644 index 000000000000..731f8265ad6c --- /dev/null +++ b/tests/ui/crashes/ice-10044.stderr @@ -0,0 +1,10 @@ +error: statement with no effect + --> $DIR/ice-10044.rs:2:5 + | +LL | [0; usize::MAX]; + | ^^^^^^^^^^^^^^^^ + | + = note: `-D clippy::no-effect` implied by `-D warnings` + +error: aborting due to previous error + diff --git a/tests/ui/floating_point_powi.fixed b/tests/ui/floating_point_powi.fixed index 884d05fed71b..8ffd4cc51379 100644 --- a/tests/ui/floating_point_powi.fixed +++ b/tests/ui/floating_point_powi.fixed @@ -14,6 +14,15 @@ fn main() { let _ = (y as f32).mul_add(y as f32, x); let _ = x.mul_add(x, y).sqrt(); let _ = y.mul_add(y, x).sqrt(); + + let _ = (x - 1.0).mul_add(x - 1.0, -y); + let _ = (x - 1.0).mul_add(x - 1.0, -y) + 3.0; + let _ = (x - 1.0).mul_add(x - 1.0, -(y + 3.0)); + let _ = (y + 1.0).mul_add(-(y + 1.0), x); + let _ = (3.0 * y).mul_add(-(3.0 * y), x); + let _ = (y + 1.0 + x).mul_add(-(y + 1.0 + x), x); + let _ = (y + 1.0 + 2.0).mul_add(-(y + 1.0 + 2.0), x); + // Cases where the lint shouldn't be applied let _ = x.powi(2); let _ = x.powi(1 + 1); diff --git a/tests/ui/floating_point_powi.rs b/tests/ui/floating_point_powi.rs index e6a1c895371b..9ae3455a1346 100644 --- a/tests/ui/floating_point_powi.rs +++ b/tests/ui/floating_point_powi.rs @@ -14,6 +14,15 @@ fn main() { let _ = x + (y as f32).powi(2); let _ = (x.powi(2) + y).sqrt(); let _ = (x + y.powi(2)).sqrt(); + + let _ = (x - 1.0).powi(2) - y; + let _ = (x - 1.0).powi(2) - y + 3.0; + let _ = (x - 1.0).powi(2) - (y + 3.0); + let _ = x - (y + 1.0).powi(2); + let _ = x - (3.0 * y).powi(2); + let _ = x - (y + 1.0 + x).powi(2); + let _ = x - (y + 1.0 + 2.0).powi(2); + // Cases where the lint shouldn't be applied let _ = x.powi(2); let _ = x.powi(1 + 1); diff --git a/tests/ui/floating_point_powi.stderr b/tests/ui/floating_point_powi.stderr index 5df0de1fef22..fdf6d088052e 100644 --- a/tests/ui/floating_point_powi.stderr +++ b/tests/ui/floating_point_powi.stderr @@ -42,5 +42,47 @@ error: multiply and add expressions can be calculated more efficiently and accur LL | let _ = (x + y.powi(2)).sqrt(); | ^^^^^^^^^^^^^^^ help: consider using: `y.mul_add(y, x)` -error: aborting due to 7 previous errors +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:18:13 + | +LL | let _ = (x - 1.0).powi(2) - y; + | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(x - 1.0).mul_add(x - 1.0, -y)` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:19:13 + | +LL | let _ = (x - 1.0).powi(2) - y + 3.0; + | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(x - 1.0).mul_add(x - 1.0, -y)` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:20:13 + | +LL | let _ = (x - 1.0).powi(2) - (y + 3.0); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(x - 1.0).mul_add(x - 1.0, -(y + 3.0))` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:21:13 + | +LL | let _ = x - (y + 1.0).powi(2); + | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(y + 1.0).mul_add(-(y + 1.0), x)` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:22:13 + | +LL | let _ = x - (3.0 * y).powi(2); + | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(3.0 * y).mul_add(-(3.0 * y), x)` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:23:13 + | +LL | let _ = x - (y + 1.0 + x).powi(2); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(y + 1.0 + x).mul_add(-(y + 1.0 + x), x)` + +error: multiply and add expressions can be calculated more efficiently and accurately + --> $DIR/floating_point_powi.rs:24:13 + | +LL | let _ = x - (y + 1.0 + 2.0).powi(2); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `(y + 1.0 + 2.0).mul_add(-(y + 1.0 + 2.0), x)` + +error: aborting due to 14 previous errors diff --git a/tests/ui/fn_null_check.rs b/tests/ui/fn_null_check.rs new file mode 100644 index 000000000000..df5bc8420d57 --- /dev/null +++ b/tests/ui/fn_null_check.rs @@ -0,0 +1,21 @@ +#![allow(unused)] +#![warn(clippy::fn_null_check)] +#![allow(clippy::cmp_null)] +#![allow(clippy::ptr_eq)] +#![allow(clippy::zero_ptr)] + +pub const ZPTR: *const () = 0 as *const _; +pub const NOT_ZPTR: *const () = 1 as *const _; + +fn main() { + let fn_ptr = main; + + if (fn_ptr as *mut ()).is_null() {} + if (fn_ptr as *const u8).is_null() {} + if (fn_ptr as *const ()) == std::ptr::null() {} + if (fn_ptr as *const ()) == (0 as *const ()) {} + if (fn_ptr as *const ()) == ZPTR {} + + // no lint + if (fn_ptr as *const ()) == NOT_ZPTR {} +} diff --git a/tests/ui/fn_null_check.stderr b/tests/ui/fn_null_check.stderr new file mode 100644 index 000000000000..660dd3239792 --- /dev/null +++ b/tests/ui/fn_null_check.stderr @@ -0,0 +1,43 @@ +error: function pointer assumed to be nullable, even though it isn't + --> $DIR/fn_null_check.rs:13:8 + | +LL | if (fn_ptr as *mut ()).is_null() {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value + = note: `-D clippy::fn-null-check` implied by `-D warnings` + +error: function pointer assumed to be nullable, even though it isn't + --> $DIR/fn_null_check.rs:14:8 + | +LL | if (fn_ptr as *const u8).is_null() {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value + +error: function pointer assumed to be nullable, even though it isn't + --> $DIR/fn_null_check.rs:15:8 + | +LL | if (fn_ptr as *const ()) == std::ptr::null() {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value + +error: function pointer assumed to be nullable, even though it isn't + --> $DIR/fn_null_check.rs:16:8 + | +LL | if (fn_ptr as *const ()) == (0 as *const ()) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value + +error: function pointer assumed to be nullable, even though it isn't + --> $DIR/fn_null_check.rs:17:8 + | +LL | if (fn_ptr as *const ()) == ZPTR {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: try wrapping your function pointer type in `Option` instead, and using `is_none` to check for null pointer value + +error: aborting due to 5 previous errors + diff --git a/tests/ui/manual_filter.fixed b/tests/ui/manual_filter.fixed index 3553291b87df..ef6780dc96d9 100644 --- a/tests/ui/manual_filter.fixed +++ b/tests/ui/manual_filter.fixed @@ -116,4 +116,45 @@ fn main() { }, None => None, }; + + match Some(20) { + // Don't Lint, because `Some(3*x)` is not `None` + None => None, + Some(x) => { + if x > 0 { + Some(3 * x) + } else { + Some(x) + } + }, + }; + + // Don't lint: https://github.com/rust-lang/rust-clippy/issues/10088 + let result = if let Some(a) = maybe_some() { + if let Some(b) = maybe_some() { + Some(a + b) + } else { + Some(a) + } + } else { + None + }; + + let allowed_integers = vec![3, 4, 5, 6]; + // Don't lint, since there's a side effect in the else branch + match Some(21) { + Some(x) => { + if allowed_integers.contains(&x) { + Some(x) + } else { + println!("Invalid integer: {x:?}"); + None + } + }, + None => None, + }; +} + +fn maybe_some() -> Option { + Some(0) } diff --git a/tests/ui/manual_filter.rs b/tests/ui/manual_filter.rs index aa9f90f752b1..ea0ce83172b7 100644 --- a/tests/ui/manual_filter.rs +++ b/tests/ui/manual_filter.rs @@ -240,4 +240,45 @@ fn main() { }, None => None, }; + + match Some(20) { + // Don't Lint, because `Some(3*x)` is not `None` + None => None, + Some(x) => { + if x > 0 { + Some(3 * x) + } else { + Some(x) + } + }, + }; + + // Don't lint: https://github.com/rust-lang/rust-clippy/issues/10088 + let result = if let Some(a) = maybe_some() { + if let Some(b) = maybe_some() { + Some(a + b) + } else { + Some(a) + } + } else { + None + }; + + let allowed_integers = vec![3, 4, 5, 6]; + // Don't lint, since there's a side effect in the else branch + match Some(21) { + Some(x) => { + if allowed_integers.contains(&x) { + Some(x) + } else { + println!("Invalid integer: {x:?}"); + None + } + }, + None => None, + }; +} + +fn maybe_some() -> Option { + Some(0) } diff --git a/tests/ui/manual_retain.fixed b/tests/ui/manual_retain.fixed index e5ae3cf3e503..8f25fea678f1 100644 --- a/tests/ui/manual_retain.fixed +++ b/tests/ui/manual_retain.fixed @@ -1,6 +1,6 @@ // run-rustfix #![warn(clippy::manual_retain)] -#![allow(unused)] +#![allow(unused, clippy::redundant_clone)] use std::collections::BTreeMap; use std::collections::BTreeSet; use std::collections::BinaryHeap; diff --git a/tests/ui/manual_retain.rs b/tests/ui/manual_retain.rs index 1021f15edd1e..e6b3995a689b 100644 --- a/tests/ui/manual_retain.rs +++ b/tests/ui/manual_retain.rs @@ -1,6 +1,6 @@ // run-rustfix #![warn(clippy::manual_retain)] -#![allow(unused)] +#![allow(unused, clippy::redundant_clone)] use std::collections::BTreeMap; use std::collections::BTreeSet; use std::collections::BinaryHeap; diff --git a/tests/ui/match_single_binding.fixed b/tests/ui/match_single_binding.fixed index a6e315e4773a..6cfb6661a039 100644 --- a/tests/ui/match_single_binding.fixed +++ b/tests/ui/match_single_binding.fixed @@ -133,3 +133,16 @@ fn issue_9575() { println!("Needs curlies"); }; } + +#[allow(dead_code)] +fn issue_9725(r: Option) { + let x = r; + match x { + Some(_) => { + println!("Some"); + }, + None => { + println!("None"); + }, + }; +} diff --git a/tests/ui/match_single_binding.rs b/tests/ui/match_single_binding.rs index cecbd703e566..f188aeb5f2ff 100644 --- a/tests/ui/match_single_binding.rs +++ b/tests/ui/match_single_binding.rs @@ -148,3 +148,17 @@ fn issue_9575() { _ => println!("Needs curlies"), }; } + +#[allow(dead_code)] +fn issue_9725(r: Option) { + match r { + x => match x { + Some(_) => { + println!("Some"); + }, + None => { + println!("None"); + }, + }, + }; +} diff --git a/tests/ui/match_single_binding.stderr b/tests/ui/match_single_binding.stderr index 2b9ec7ee7026..e960d64ad2b0 100644 --- a/tests/ui/match_single_binding.stderr +++ b/tests/ui/match_single_binding.stderr @@ -213,5 +213,30 @@ LL + println!("Needs curlies"); LL ~ }; | -error: aborting due to 14 previous errors +error: this match could be written as a `let` statement + --> $DIR/match_single_binding.rs:154:5 + | +LL | / match r { +LL | | x => match x { +LL | | Some(_) => { +LL | | println!("Some"); +... | +LL | | }, +LL | | }; + | |_____^ + | +help: consider using a `let` statement + | +LL ~ let x = r; +LL + match x { +LL + Some(_) => { +LL + println!("Some"); +LL + }, +LL + None => { +LL + println!("None"); +LL + }, +LL ~ }; + | + +error: aborting due to 15 previous errors diff --git a/tests/ui/match_wildcard_for_single_variants.fixed b/tests/ui/match_wildcard_for_single_variants.fixed index e675c183ea71..fc252cdd3529 100644 --- a/tests/ui/match_wildcard_for_single_variants.fixed +++ b/tests/ui/match_wildcard_for_single_variants.fixed @@ -132,3 +132,25 @@ fn main() { } } } + +mod issue9993 { + enum Foo { + A(bool), + B, + } + + fn test() { + let _ = match Foo::A(true) { + _ if false => 0, + Foo::A(true) => 1, + Foo::A(false) => 2, + Foo::B => 3, + }; + + let _ = match Foo::B { + _ if false => 0, + Foo::A(_) => 1, + Foo::B => 2, + }; + } +} diff --git a/tests/ui/match_wildcard_for_single_variants.rs b/tests/ui/match_wildcard_for_single_variants.rs index 38c3ffc00c71..9a5c849e6ec9 100644 --- a/tests/ui/match_wildcard_for_single_variants.rs +++ b/tests/ui/match_wildcard_for_single_variants.rs @@ -132,3 +132,25 @@ fn main() { } } } + +mod issue9993 { + enum Foo { + A(bool), + B, + } + + fn test() { + let _ = match Foo::A(true) { + _ if false => 0, + Foo::A(true) => 1, + Foo::A(false) => 2, + Foo::B => 3, + }; + + let _ = match Foo::B { + _ if false => 0, + Foo::A(_) => 1, + _ => 2, + }; + } +} diff --git a/tests/ui/match_wildcard_for_single_variants.stderr b/tests/ui/match_wildcard_for_single_variants.stderr index 34538dea8e5f..6fa313dc9111 100644 --- a/tests/ui/match_wildcard_for_single_variants.stderr +++ b/tests/ui/match_wildcard_for_single_variants.stderr @@ -48,5 +48,11 @@ error: wildcard matches only a single variant and will also match any future add LL | _ => (), | ^ help: try this: `Color::Blue` -error: aborting due to 8 previous errors +error: wildcard matches only a single variant and will also match any future added variants + --> $DIR/match_wildcard_for_single_variants.rs:153:13 + | +LL | _ => 2, + | ^ help: try this: `Foo::B` + +error: aborting due to 9 previous errors diff --git a/tests/ui/needless_borrow.fixed b/tests/ui/needless_borrow.fixed index 4cb7f6b687f1..31e1cb6c3d7f 100644 --- a/tests/ui/needless_borrow.fixed +++ b/tests/ui/needless_borrow.fixed @@ -1,5 +1,5 @@ // run-rustfix -#![feature(lint_reasons)] +#![feature(custom_inner_attributes, lint_reasons, rustc_private)] #![allow( unused, clippy::uninlined_format_args, @@ -491,3 +491,14 @@ mod issue_9782_method_variant { S.foo::<&[u8; 100]>(&a); } } + +extern crate rustc_lint; +extern crate rustc_span; + +#[allow(dead_code)] +mod span_lint { + use rustc_lint::{LateContext, Lint, LintContext}; + fn foo(cx: &LateContext<'_>, lint: &'static Lint) { + cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(String::new())); + } +} diff --git a/tests/ui/needless_borrow.rs b/tests/ui/needless_borrow.rs index 9a01190ed8db..55c2738fcf27 100644 --- a/tests/ui/needless_borrow.rs +++ b/tests/ui/needless_borrow.rs @@ -1,5 +1,5 @@ // run-rustfix -#![feature(lint_reasons)] +#![feature(custom_inner_attributes, lint_reasons, rustc_private)] #![allow( unused, clippy::uninlined_format_args, @@ -491,3 +491,14 @@ mod issue_9782_method_variant { S.foo::<&[u8; 100]>(&a); } } + +extern crate rustc_lint; +extern crate rustc_span; + +#[allow(dead_code)] +mod span_lint { + use rustc_lint::{LateContext, Lint, LintContext}; + fn foo(cx: &LateContext<'_>, lint: &'static Lint) { + cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(&String::new())); + } +} diff --git a/tests/ui/needless_borrow.stderr b/tests/ui/needless_borrow.stderr index d26c317124b8..98a48d68317b 100644 --- a/tests/ui/needless_borrow.stderr +++ b/tests/ui/needless_borrow.stderr @@ -216,5 +216,11 @@ error: the borrowed expression implements the required traits LL | foo(&a); | ^^ help: change this to: `a` -error: aborting due to 36 previous errors +error: the borrowed expression implements the required traits + --> $DIR/needless_borrow.rs:502:85 + | +LL | cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(&String::new())); + | ^^^^^^^^^^^^^^ help: change this to: `String::new()` + +error: aborting due to 37 previous errors diff --git a/tests/ui/needless_return.fixed b/tests/ui/needless_return.fixed index 4386aaec49e2..d451be1f389a 100644 --- a/tests/ui/needless_return.fixed +++ b/tests/ui/needless_return.fixed @@ -1,6 +1,7 @@ // run-rustfix #![feature(lint_reasons)] +#![feature(yeet_expr)] #![allow(unused)] #![allow( clippy::if_same_then_else, @@ -272,4 +273,8 @@ mod issue9416 { } } +fn issue9947() -> Result<(), String> { + do yeet "hello"; +} + fn main() {} diff --git a/tests/ui/needless_return.rs b/tests/ui/needless_return.rs index 666dc54b76b4..e1a1bea2c0b8 100644 --- a/tests/ui/needless_return.rs +++ b/tests/ui/needless_return.rs @@ -1,6 +1,7 @@ // run-rustfix #![feature(lint_reasons)] +#![feature(yeet_expr)] #![allow(unused)] #![allow( clippy::if_same_then_else, @@ -282,4 +283,8 @@ mod issue9416 { } } +fn issue9947() -> Result<(), String> { + do yeet "hello"; +} + fn main() {} diff --git a/tests/ui/needless_return.stderr b/tests/ui/needless_return.stderr index a8b5d86cd558..ca2253e65863 100644 --- a/tests/ui/needless_return.stderr +++ b/tests/ui/needless_return.stderr @@ -1,5 +1,5 @@ error: unneeded `return` statement - --> $DIR/needless_return.rs:26:5 + --> $DIR/needless_return.rs:27:5 | LL | return true; | ^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:30:5 + --> $DIR/needless_return.rs:31:5 | LL | return true; | ^^^^^^^^^^^ @@ -16,7 +16,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:35:9 + --> $DIR/needless_return.rs:36:9 | LL | return true; | ^^^^^^^^^^^ @@ -24,7 +24,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:37:9 + --> $DIR/needless_return.rs:38:9 | LL | return false; | ^^^^^^^^^^^^ @@ -32,7 +32,7 @@ LL | return false; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:43:17 + --> $DIR/needless_return.rs:44:17 | LL | true => return false, | ^^^^^^^^^^^^ @@ -40,7 +40,7 @@ LL | true => return false, = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:45:13 + --> $DIR/needless_return.rs:46:13 | LL | return true; | ^^^^^^^^^^^ @@ -48,7 +48,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:52:9 + --> $DIR/needless_return.rs:53:9 | LL | return true; | ^^^^^^^^^^^ @@ -56,7 +56,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:54:16 + --> $DIR/needless_return.rs:55:16 | LL | let _ = || return true; | ^^^^^^^^^^^ @@ -64,7 +64,7 @@ LL | let _ = || return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:58:5 + --> $DIR/needless_return.rs:59:5 | LL | return the_answer!(); | ^^^^^^^^^^^^^^^^^^^^ @@ -72,7 +72,7 @@ LL | return the_answer!(); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:61:21 + --> $DIR/needless_return.rs:62:21 | LL | fn test_void_fun() { | _____________________^ @@ -82,7 +82,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:66:11 + --> $DIR/needless_return.rs:67:11 | LL | if b { | ___________^ @@ -92,7 +92,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:68:13 + --> $DIR/needless_return.rs:69:13 | LL | } else { | _____________^ @@ -102,7 +102,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:76:14 + --> $DIR/needless_return.rs:77:14 | LL | _ => return, | ^^^^^^ @@ -110,7 +110,7 @@ LL | _ => return, = help: replace `return` with a unit value error: unneeded `return` statement - --> $DIR/needless_return.rs:84:24 + --> $DIR/needless_return.rs:85:24 | LL | let _ = 42; | ________________________^ @@ -120,7 +120,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:87:14 + --> $DIR/needless_return.rs:88:14 | LL | _ => return, | ^^^^^^ @@ -128,7 +128,7 @@ LL | _ => return, = help: replace `return` with a unit value error: unneeded `return` statement - --> $DIR/needless_return.rs:100:9 + --> $DIR/needless_return.rs:101:9 | LL | return String::from("test"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -136,7 +136,7 @@ LL | return String::from("test"); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:102:9 + --> $DIR/needless_return.rs:103:9 | LL | return String::new(); | ^^^^^^^^^^^^^^^^^^^^ @@ -144,7 +144,7 @@ LL | return String::new(); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:124:32 + --> $DIR/needless_return.rs:125:32 | LL | bar.unwrap_or_else(|_| return) | ^^^^^^ @@ -152,7 +152,7 @@ LL | bar.unwrap_or_else(|_| return) = help: replace `return` with an empty block error: unneeded `return` statement - --> $DIR/needless_return.rs:128:21 + --> $DIR/needless_return.rs:129:21 | LL | let _ = || { | _____________________^ @@ -162,7 +162,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:131:20 + --> $DIR/needless_return.rs:132:20 | LL | let _ = || return; | ^^^^^^ @@ -170,7 +170,7 @@ LL | let _ = || return; = help: replace `return` with an empty block error: unneeded `return` statement - --> $DIR/needless_return.rs:137:32 + --> $DIR/needless_return.rs:138:32 | LL | res.unwrap_or_else(|_| return Foo) | ^^^^^^^^^^ @@ -178,7 +178,7 @@ LL | res.unwrap_or_else(|_| return Foo) = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:146:5 + --> $DIR/needless_return.rs:147:5 | LL | return true; | ^^^^^^^^^^^ @@ -186,7 +186,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:150:5 + --> $DIR/needless_return.rs:151:5 | LL | return true; | ^^^^^^^^^^^ @@ -194,7 +194,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:155:9 + --> $DIR/needless_return.rs:156:9 | LL | return true; | ^^^^^^^^^^^ @@ -202,7 +202,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:157:9 + --> $DIR/needless_return.rs:158:9 | LL | return false; | ^^^^^^^^^^^^ @@ -210,7 +210,7 @@ LL | return false; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:163:17 + --> $DIR/needless_return.rs:164:17 | LL | true => return false, | ^^^^^^^^^^^^ @@ -218,7 +218,7 @@ LL | true => return false, = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:165:13 + --> $DIR/needless_return.rs:166:13 | LL | return true; | ^^^^^^^^^^^ @@ -226,7 +226,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:172:9 + --> $DIR/needless_return.rs:173:9 | LL | return true; | ^^^^^^^^^^^ @@ -234,7 +234,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:174:16 + --> $DIR/needless_return.rs:175:16 | LL | let _ = || return true; | ^^^^^^^^^^^ @@ -242,7 +242,7 @@ LL | let _ = || return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:178:5 + --> $DIR/needless_return.rs:179:5 | LL | return the_answer!(); | ^^^^^^^^^^^^^^^^^^^^ @@ -250,7 +250,7 @@ LL | return the_answer!(); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:181:33 + --> $DIR/needless_return.rs:182:33 | LL | async fn async_test_void_fun() { | _________________________________^ @@ -260,7 +260,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:186:11 + --> $DIR/needless_return.rs:187:11 | LL | if b { | ___________^ @@ -270,7 +270,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:188:13 + --> $DIR/needless_return.rs:189:13 | LL | } else { | _____________^ @@ -280,7 +280,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:196:14 + --> $DIR/needless_return.rs:197:14 | LL | _ => return, | ^^^^^^ @@ -288,7 +288,7 @@ LL | _ => return, = help: replace `return` with a unit value error: unneeded `return` statement - --> $DIR/needless_return.rs:209:9 + --> $DIR/needless_return.rs:210:9 | LL | return String::from("test"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -296,7 +296,7 @@ LL | return String::from("test"); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:211:9 + --> $DIR/needless_return.rs:212:9 | LL | return String::new(); | ^^^^^^^^^^^^^^^^^^^^ @@ -304,7 +304,7 @@ LL | return String::new(); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:227:5 + --> $DIR/needless_return.rs:228:5 | LL | return format!("Hello {}", "world!"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -312,7 +312,7 @@ LL | return format!("Hello {}", "world!"); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:238:9 + --> $DIR/needless_return.rs:239:9 | LL | return true; | ^^^^^^^^^^^ @@ -320,7 +320,7 @@ LL | return true; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:240:9 + --> $DIR/needless_return.rs:241:9 | LL | return false; | ^^^^^^^^^^^^ @@ -328,7 +328,7 @@ LL | return false; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:247:13 + --> $DIR/needless_return.rs:248:13 | LL | return 10; | ^^^^^^^^^ @@ -336,7 +336,7 @@ LL | return 10; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:250:13 + --> $DIR/needless_return.rs:251:13 | LL | return 100; | ^^^^^^^^^^ @@ -344,7 +344,7 @@ LL | return 100; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:258:9 + --> $DIR/needless_return.rs:259:9 | LL | return 0; | ^^^^^^^^ @@ -352,7 +352,7 @@ LL | return 0; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:265:13 + --> $DIR/needless_return.rs:266:13 | LL | return *(x as *const isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -360,7 +360,7 @@ LL | return *(x as *const isize); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:267:13 + --> $DIR/needless_return.rs:268:13 | LL | return !*(x as *const isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -368,7 +368,7 @@ LL | return !*(x as *const isize); = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:274:20 + --> $DIR/needless_return.rs:275:20 | LL | let _ = 42; | ____________________^ @@ -379,7 +379,7 @@ LL | | return; = help: remove `return` error: unneeded `return` statement - --> $DIR/needless_return.rs:281:20 + --> $DIR/needless_return.rs:282:20 | LL | let _ = 42; return; | ^^^^^^^ diff --git a/tests/ui/permissions_set_readonly_false.rs b/tests/ui/permissions_set_readonly_false.rs new file mode 100644 index 000000000000..28c00d100942 --- /dev/null +++ b/tests/ui/permissions_set_readonly_false.rs @@ -0,0 +1,29 @@ +#![allow(unused)] +#![warn(clippy::permissions_set_readonly_false)] + +use std::fs::File; + +struct A; + +impl A { + pub fn set_readonly(&mut self, b: bool) {} +} + +fn set_readonly(b: bool) {} + +fn main() { + let f = File::create("foo.txt").unwrap(); + let metadata = f.metadata().unwrap(); + let mut permissions = metadata.permissions(); + // lint here + permissions.set_readonly(false); + // no lint + permissions.set_readonly(true); + + let mut a = A; + // no lint here - a is not of type std::fs::Permissions + a.set_readonly(false); + + // no lint here - plain function + set_readonly(false); +} diff --git a/tests/ui/permissions_set_readonly_false.stderr b/tests/ui/permissions_set_readonly_false.stderr new file mode 100644 index 000000000000..e7a8ee6cb19b --- /dev/null +++ b/tests/ui/permissions_set_readonly_false.stderr @@ -0,0 +1,13 @@ +error: call to `set_readonly` with argument `false` + --> $DIR/permissions_set_readonly_false.rs:19:5 + | +LL | permissions.set_readonly(false); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: on Unix platforms this results in the file being world writable + = help: you can set the desired permissions using `PermissionsExt`. For more information, see + https://doc.rust-lang.org/std/os/unix/fs/trait.PermissionsExt.html + = note: `-D clippy::permissions-set-readonly-false` implied by `-D warnings` + +error: aborting due to previous error + diff --git a/tests/ui/redundant_clone.fixed b/tests/ui/redundant_clone.fixed index 00b427450935..a157b6a6f9ad 100644 --- a/tests/ui/redundant_clone.fixed +++ b/tests/ui/redundant_clone.fixed @@ -239,3 +239,9 @@ fn false_negative_5707() { let _z = x.clone(); // pr 7346 can't lint on `x` drop(y); } + +#[allow(unused, clippy::manual_retain)] +fn possible_borrower_improvements() { + let mut s = String::from("foobar"); + s = s.chars().filter(|&c| c != 'o').collect(); +} diff --git a/tests/ui/redundant_clone.rs b/tests/ui/redundant_clone.rs index f899127db8d0..430672e8b8df 100644 --- a/tests/ui/redundant_clone.rs +++ b/tests/ui/redundant_clone.rs @@ -239,3 +239,9 @@ fn false_negative_5707() { let _z = x.clone(); // pr 7346 can't lint on `x` drop(y); } + +#[allow(unused, clippy::manual_retain)] +fn possible_borrower_improvements() { + let mut s = String::from("foobar"); + s = s.chars().filter(|&c| c != 'o').to_owned().collect(); +} diff --git a/tests/ui/redundant_clone.stderr b/tests/ui/redundant_clone.stderr index 782590034d05..1bacc2c76af1 100644 --- a/tests/ui/redundant_clone.stderr +++ b/tests/ui/redundant_clone.stderr @@ -179,5 +179,17 @@ note: this value is dropped without further use LL | foo(&x.clone(), move || { | ^ -error: aborting due to 15 previous errors +error: redundant clone + --> $DIR/redundant_clone.rs:246:40 + | +LL | s = s.chars().filter(|&c| c != 'o').to_owned().collect(); + | ^^^^^^^^^^^ help: remove this + | +note: this value is dropped without further use + --> $DIR/redundant_clone.rs:246:9 + | +LL | s = s.chars().filter(|&c| c != 'o').to_owned().collect(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 16 previous errors diff --git a/tests/ui/size_of_ref.rs b/tests/ui/size_of_ref.rs new file mode 100644 index 000000000000..1e83ab82907d --- /dev/null +++ b/tests/ui/size_of_ref.rs @@ -0,0 +1,27 @@ +#![allow(unused)] +#![warn(clippy::size_of_ref)] + +use std::mem::size_of_val; + +fn main() { + let x = 5; + let y = &x; + + size_of_val(&x); // no lint + size_of_val(y); // no lint + + size_of_val(&&x); + size_of_val(&y); +} + +struct S { + field: u32, + data: Vec, +} + +impl S { + /// Get size of object including `self`, in bytes. + pub fn size(&self) -> usize { + std::mem::size_of_val(&self) + (std::mem::size_of::() * self.data.capacity()) + } +} diff --git a/tests/ui/size_of_ref.stderr b/tests/ui/size_of_ref.stderr new file mode 100644 index 000000000000..d4c13ac3290b --- /dev/null +++ b/tests/ui/size_of_ref.stderr @@ -0,0 +1,27 @@ +error: argument to `std::mem::size_of_val()` is a reference to a reference + --> $DIR/size_of_ref.rs:13:5 + | +LL | size_of_val(&&x); + | ^^^^^^^^^^^^^^^^ + | + = help: dereference the argument to `std::mem::size_of_val()` to get the size of the value instead of the size of the reference-type + = note: `-D clippy::size-of-ref` implied by `-D warnings` + +error: argument to `std::mem::size_of_val()` is a reference to a reference + --> $DIR/size_of_ref.rs:14:5 + | +LL | size_of_val(&y); + | ^^^^^^^^^^^^^^^ + | + = help: dereference the argument to `std::mem::size_of_val()` to get the size of the value instead of the size of the reference-type + +error: argument to `std::mem::size_of_val()` is a reference to a reference + --> $DIR/size_of_ref.rs:25:9 + | +LL | std::mem::size_of_val(&self) + (std::mem::size_of::() * self.data.capacity()) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: dereference the argument to `std::mem::size_of_val()` to get the size of the value instead of the size of the reference-type + +error: aborting due to 3 previous errors + diff --git a/tests/ui/transmute_null_to_fn.rs b/tests/ui/transmute_null_to_fn.rs new file mode 100644 index 000000000000..b3ea3d9039e0 --- /dev/null +++ b/tests/ui/transmute_null_to_fn.rs @@ -0,0 +1,28 @@ +#![allow(dead_code)] +#![warn(clippy::transmute_null_to_fn)] +#![allow(clippy::zero_ptr)] + +// Easy to lint because these only span one line. +fn one_liners() { + unsafe { + let _: fn() = std::mem::transmute(0 as *const ()); + let _: fn() = std::mem::transmute(std::ptr::null::<()>()); + } +} + +pub const ZPTR: *const usize = 0 as *const _; +pub const NOT_ZPTR: *const usize = 1 as *const _; + +fn transmute_const() { + unsafe { + // Should raise a lint. + let _: fn() = std::mem::transmute(ZPTR); + // Should NOT raise a lint. + let _: fn() = std::mem::transmute(NOT_ZPTR); + } +} + +fn main() { + one_liners(); + transmute_const(); +} diff --git a/tests/ui/transmute_null_to_fn.stderr b/tests/ui/transmute_null_to_fn.stderr new file mode 100644 index 000000000000..f0c65497d750 --- /dev/null +++ b/tests/ui/transmute_null_to_fn.stderr @@ -0,0 +1,27 @@ +error: transmuting a known null pointer into a function pointer + --> $DIR/transmute_null_to_fn.rs:8:23 + | +LL | let _: fn() = std::mem::transmute(0 as *const ()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this transmute results in undefined behavior + | + = help: try wrapping your function pointer type in `Option` instead, and using `None` as a null pointer value + = note: `-D clippy::transmute-null-to-fn` implied by `-D warnings` + +error: transmuting a known null pointer into a function pointer + --> $DIR/transmute_null_to_fn.rs:9:23 + | +LL | let _: fn() = std::mem::transmute(std::ptr::null::<()>()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this transmute results in undefined behavior + | + = help: try wrapping your function pointer type in `Option` instead, and using `None` as a null pointer value + +error: transmuting a known null pointer into a function pointer + --> $DIR/transmute_null_to_fn.rs:19:23 + | +LL | let _: fn() = std::mem::transmute(ZPTR); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ this transmute results in undefined behavior + | + = help: try wrapping your function pointer type in `Option` instead, and using `None` as a null pointer value + +error: aborting due to 3 previous errors + diff --git a/tests/ui/useless_conversion.fixed b/tests/ui/useless_conversion.fixed index 70ff08f36551..94b206d8e58f 100644 --- a/tests/ui/useless_conversion.fixed +++ b/tests/ui/useless_conversion.fixed @@ -33,12 +33,71 @@ fn test_issue_3913() -> Result<(), std::io::Error> { Ok(()) } -fn test_issue_5833() -> Result<(), ()> { +fn dont_lint_into_iter_on_immutable_local_implementing_iterator_in_expr() { let text = "foo\r\nbar\n\nbaz\n"; let lines = text.lines(); if Some("ok") == lines.into_iter().next() {} +} - Ok(()) +fn lint_into_iter_on_mutable_local_implementing_iterator_in_expr() { + let text = "foo\r\nbar\n\nbaz\n"; + let mut lines = text.lines(); + if Some("ok") == lines.next() {} +} + +fn lint_into_iter_on_expr_implementing_iterator() { + let text = "foo\r\nbar\n\nbaz\n"; + let mut lines = text.lines(); + if Some("ok") == lines.next() {} +} + +fn lint_into_iter_on_expr_implementing_iterator_2() { + let text = "foo\r\nbar\n\nbaz\n"; + if Some("ok") == text.lines().next() {} +} + +#[allow(const_item_mutation)] +fn lint_into_iter_on_const_implementing_iterator() { + const NUMBERS: std::ops::Range = 0..10; + let _ = NUMBERS.next(); +} + +fn lint_into_iter_on_const_implementing_iterator_2() { + const NUMBERS: std::ops::Range = 0..10; + let mut n = NUMBERS; + n.next(); +} + +#[derive(Clone, Copy)] +struct CopiableCounter { + counter: u32, +} + +impl Iterator for CopiableCounter { + type Item = u32; + + fn next(&mut self) -> Option { + self.counter = self.counter.wrapping_add(1); + Some(self.counter) + } +} + +fn dont_lint_into_iter_on_copy_iter() { + let mut c = CopiableCounter { counter: 0 }; + assert_eq!(c.into_iter().next(), Some(1)); + assert_eq!(c.into_iter().next(), Some(1)); + assert_eq!(c.next(), Some(1)); + assert_eq!(c.next(), Some(2)); +} + +fn dont_lint_into_iter_on_static_copy_iter() { + static mut C: CopiableCounter = CopiableCounter { counter: 0 }; + unsafe { + assert_eq!(C.into_iter().next(), Some(1)); + assert_eq!(C.into_iter().next(), Some(1)); + assert_eq!(C.next(), Some(1)); + assert_eq!(C.next(), Some(2)); + } } fn main() { @@ -46,7 +105,15 @@ fn main() { test_generic2::(10i32); test_questionmark().unwrap(); test_issue_3913().unwrap(); - test_issue_5833().unwrap(); + + dont_lint_into_iter_on_immutable_local_implementing_iterator_in_expr(); + lint_into_iter_on_mutable_local_implementing_iterator_in_expr(); + lint_into_iter_on_expr_implementing_iterator(); + lint_into_iter_on_expr_implementing_iterator_2(); + lint_into_iter_on_const_implementing_iterator(); + lint_into_iter_on_const_implementing_iterator_2(); + dont_lint_into_iter_on_copy_iter(); + dont_lint_into_iter_on_static_copy_iter(); let _: String = "foo".into(); let _: String = From::from("foo"); diff --git a/tests/ui/useless_conversion.rs b/tests/ui/useless_conversion.rs index f2444a8f436b..c7ae927941bf 100644 --- a/tests/ui/useless_conversion.rs +++ b/tests/ui/useless_conversion.rs @@ -33,12 +33,71 @@ fn test_issue_3913() -> Result<(), std::io::Error> { Ok(()) } -fn test_issue_5833() -> Result<(), ()> { +fn dont_lint_into_iter_on_immutable_local_implementing_iterator_in_expr() { let text = "foo\r\nbar\n\nbaz\n"; let lines = text.lines(); if Some("ok") == lines.into_iter().next() {} +} - Ok(()) +fn lint_into_iter_on_mutable_local_implementing_iterator_in_expr() { + let text = "foo\r\nbar\n\nbaz\n"; + let mut lines = text.lines(); + if Some("ok") == lines.into_iter().next() {} +} + +fn lint_into_iter_on_expr_implementing_iterator() { + let text = "foo\r\nbar\n\nbaz\n"; + let mut lines = text.lines().into_iter(); + if Some("ok") == lines.next() {} +} + +fn lint_into_iter_on_expr_implementing_iterator_2() { + let text = "foo\r\nbar\n\nbaz\n"; + if Some("ok") == text.lines().into_iter().next() {} +} + +#[allow(const_item_mutation)] +fn lint_into_iter_on_const_implementing_iterator() { + const NUMBERS: std::ops::Range = 0..10; + let _ = NUMBERS.into_iter().next(); +} + +fn lint_into_iter_on_const_implementing_iterator_2() { + const NUMBERS: std::ops::Range = 0..10; + let mut n = NUMBERS.into_iter(); + n.next(); +} + +#[derive(Clone, Copy)] +struct CopiableCounter { + counter: u32, +} + +impl Iterator for CopiableCounter { + type Item = u32; + + fn next(&mut self) -> Option { + self.counter = self.counter.wrapping_add(1); + Some(self.counter) + } +} + +fn dont_lint_into_iter_on_copy_iter() { + let mut c = CopiableCounter { counter: 0 }; + assert_eq!(c.into_iter().next(), Some(1)); + assert_eq!(c.into_iter().next(), Some(1)); + assert_eq!(c.next(), Some(1)); + assert_eq!(c.next(), Some(2)); +} + +fn dont_lint_into_iter_on_static_copy_iter() { + static mut C: CopiableCounter = CopiableCounter { counter: 0 }; + unsafe { + assert_eq!(C.into_iter().next(), Some(1)); + assert_eq!(C.into_iter().next(), Some(1)); + assert_eq!(C.next(), Some(1)); + assert_eq!(C.next(), Some(2)); + } } fn main() { @@ -46,7 +105,15 @@ fn main() { test_generic2::(10i32); test_questionmark().unwrap(); test_issue_3913().unwrap(); - test_issue_5833().unwrap(); + + dont_lint_into_iter_on_immutable_local_implementing_iterator_in_expr(); + lint_into_iter_on_mutable_local_implementing_iterator_in_expr(); + lint_into_iter_on_expr_implementing_iterator(); + lint_into_iter_on_expr_implementing_iterator_2(); + lint_into_iter_on_const_implementing_iterator(); + lint_into_iter_on_const_implementing_iterator_2(); + dont_lint_into_iter_on_copy_iter(); + dont_lint_into_iter_on_static_copy_iter(); let _: String = "foo".into(); let _: String = From::from("foo"); diff --git a/tests/ui/useless_conversion.stderr b/tests/ui/useless_conversion.stderr index 65ee3807fa9d..be067c6843ac 100644 --- a/tests/ui/useless_conversion.stderr +++ b/tests/ui/useless_conversion.stderr @@ -22,71 +22,101 @@ error: useless conversion to the same type: `i32` LL | let _: i32 = 0i32.into(); | ^^^^^^^^^^^ help: consider removing `.into()`: `0i32` +error: useless conversion to the same type: `std::str::Lines<'_>` + --> $DIR/useless_conversion.rs:45:22 + | +LL | if Some("ok") == lines.into_iter().next() {} + | ^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `lines` + +error: useless conversion to the same type: `std::str::Lines<'_>` + --> $DIR/useless_conversion.rs:50:21 + | +LL | let mut lines = text.lines().into_iter(); + | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `text.lines()` + +error: useless conversion to the same type: `std::str::Lines<'_>` + --> $DIR/useless_conversion.rs:56:22 + | +LL | if Some("ok") == text.lines().into_iter().next() {} + | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `text.lines()` + +error: useless conversion to the same type: `std::ops::Range` + --> $DIR/useless_conversion.rs:62:13 + | +LL | let _ = NUMBERS.into_iter().next(); + | ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `NUMBERS` + +error: useless conversion to the same type: `std::ops::Range` + --> $DIR/useless_conversion.rs:67:17 + | +LL | let mut n = NUMBERS.into_iter(); + | ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `NUMBERS` + error: useless conversion to the same type: `std::string::String` - --> $DIR/useless_conversion.rs:61:21 + --> $DIR/useless_conversion.rs:128:21 | LL | let _: String = "foo".to_string().into(); | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `"foo".to_string()` error: useless conversion to the same type: `std::string::String` - --> $DIR/useless_conversion.rs:62:21 + --> $DIR/useless_conversion.rs:129:21 | LL | let _: String = From::from("foo".to_string()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `From::from()`: `"foo".to_string()` error: useless conversion to the same type: `std::string::String` - --> $DIR/useless_conversion.rs:63:13 + --> $DIR/useless_conversion.rs:130:13 | LL | let _ = String::from("foo".to_string()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `"foo".to_string()` error: useless conversion to the same type: `std::string::String` - --> $DIR/useless_conversion.rs:64:13 + --> $DIR/useless_conversion.rs:131:13 | LL | let _ = String::from(format!("A: {:04}", 123)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("A: {:04}", 123)` error: useless conversion to the same type: `std::str::Lines<'_>` - --> $DIR/useless_conversion.rs:65:13 + --> $DIR/useless_conversion.rs:132:13 | LL | let _ = "".lines().into_iter(); | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `"".lines()` error: useless conversion to the same type: `std::vec::IntoIter` - --> $DIR/useless_conversion.rs:66:13 + --> $DIR/useless_conversion.rs:133:13 | LL | let _ = vec![1, 2, 3].into_iter().into_iter(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![1, 2, 3].into_iter()` error: useless conversion to the same type: `std::string::String` - --> $DIR/useless_conversion.rs:67:21 + --> $DIR/useless_conversion.rs:134:21 | LL | let _: String = format!("Hello {}", "world").into(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `format!("Hello {}", "world")` error: useless conversion to the same type: `i32` - --> $DIR/useless_conversion.rs:72:13 + --> $DIR/useless_conversion.rs:139:13 | LL | let _ = i32::from(a + b) * 3; | ^^^^^^^^^^^^^^^^ help: consider removing `i32::from()`: `(a + b)` error: useless conversion to the same type: `Foo<'a'>` - --> $DIR/useless_conversion.rs:78:23 + --> $DIR/useless_conversion.rs:145:23 | LL | let _: Foo<'a'> = s2.into(); | ^^^^^^^^^ help: consider removing `.into()`: `s2` error: useless conversion to the same type: `Foo<'a'>` - --> $DIR/useless_conversion.rs:80:13 + --> $DIR/useless_conversion.rs:147:13 | LL | let _ = Foo::<'a'>::from(s3); | ^^^^^^^^^^^^^^^^^^^^ help: consider removing `Foo::<'a'>::from()`: `s3` error: useless conversion to the same type: `std::vec::IntoIter>` - --> $DIR/useless_conversion.rs:82:13 + --> $DIR/useless_conversion.rs:149:13 | LL | let _ = vec![s4, s4, s4].into_iter().into_iter(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `vec![s4, s4, s4].into_iter()` -error: aborting due to 14 previous errors +error: aborting due to 19 previous errors diff --git a/tests/ui/wildcard_imports.fixed b/tests/ui/wildcard_imports.fixed index ef55f1c31a88..0baec6f0b641 100644 --- a/tests/ui/wildcard_imports.fixed +++ b/tests/ui/wildcard_imports.fixed @@ -5,7 +5,6 @@ // the 2015 edition here is needed because edition 2018 changed the module system // (see https://doc.rust-lang.org/edition-guide/rust-2018/path-changes.html) which means the lint // no longer detects some of the cases starting with Rust 2018. -// FIXME: We should likely add another edition 2021 test case for this lint #![warn(clippy::wildcard_imports)] #![allow(unused, clippy::unnecessary_wraps, clippy::let_unit_value)] diff --git a/tests/ui/wildcard_imports.rs b/tests/ui/wildcard_imports.rs index b81285142069..db591d56ab4d 100644 --- a/tests/ui/wildcard_imports.rs +++ b/tests/ui/wildcard_imports.rs @@ -5,7 +5,6 @@ // the 2015 edition here is needed because edition 2018 changed the module system // (see https://doc.rust-lang.org/edition-guide/rust-2018/path-changes.html) which means the lint // no longer detects some of the cases starting with Rust 2018. -// FIXME: We should likely add another edition 2021 test case for this lint #![warn(clippy::wildcard_imports)] #![allow(unused, clippy::unnecessary_wraps, clippy::let_unit_value)] diff --git a/tests/ui/wildcard_imports.stderr b/tests/ui/wildcard_imports.stderr index 626c1754fc82..6b469cdfc444 100644 --- a/tests/ui/wildcard_imports.stderr +++ b/tests/ui/wildcard_imports.stderr @@ -1,5 +1,5 @@ error: usage of wildcard import - --> $DIR/wildcard_imports.rs:16:5 + --> $DIR/wildcard_imports.rs:15:5 | LL | use crate::fn_mod::*; | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` @@ -7,85 +7,85 @@ LL | use crate::fn_mod::*; = note: `-D clippy::wildcard-imports` implied by `-D warnings` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:17:5 + --> $DIR/wildcard_imports.rs:16:5 | LL | use crate::mod_mod::*; | ^^^^^^^^^^^^^^^^^ help: try: `crate::mod_mod::inner_mod` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:18:5 + --> $DIR/wildcard_imports.rs:17:5 | LL | use crate::multi_fn_mod::*; | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:20:5 + --> $DIR/wildcard_imports.rs:19:5 | LL | use crate::struct_mod::*; | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::struct_mod::{A, inner_struct_mod}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:24:5 + --> $DIR/wildcard_imports.rs:23:5 | LL | use wildcard_imports_helper::inner::inner_for_self_import::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:25:5 + --> $DIR/wildcard_imports.rs:24:5 | LL | use wildcard_imports_helper::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:96:13 + --> $DIR/wildcard_imports.rs:95:13 | LL | use crate::fn_mod::*; | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:102:75 + --> $DIR/wildcard_imports.rs:101:75 | LL | use wildcard_imports_helper::inner::inner_for_self_import::{self, *}; | ^ help: try: `inner_extern_foo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:103:13 + --> $DIR/wildcard_imports.rs:102:13 | LL | use wildcard_imports_helper::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:114:20 + --> $DIR/wildcard_imports.rs:113:20 | LL | use self::{inner::*, inner2::*}; | ^^^^^^^^ help: try: `inner::inner_foo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:114:30 + --> $DIR/wildcard_imports.rs:113:30 | LL | use self::{inner::*, inner2::*}; | ^^^^^^^^^ help: try: `inner2::inner_bar` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:121:13 + --> $DIR/wildcard_imports.rs:120:13 | LL | use wildcard_imports_helper::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:150:9 + --> $DIR/wildcard_imports.rs:149:9 | LL | use crate::in_fn_test::*; | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:159:9 + --> $DIR/wildcard_imports.rs:158:9 | LL | use crate:: in_fn_test:: * ; | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate:: in_fn_test::exported` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:160:9 + --> $DIR/wildcard_imports.rs:159:9 | LL | use crate:: fn_mod:: | _________^ @@ -93,37 +93,37 @@ LL | | *; | |_________^ help: try: `crate:: fn_mod::foo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:171:13 + --> $DIR/wildcard_imports.rs:170:13 | LL | use super::*; | ^^^^^^^^ help: try: `super::foofoo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:206:17 + --> $DIR/wildcard_imports.rs:205:17 | LL | use super::*; | ^^^^^^^^ help: try: `super::insidefoo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:214:13 + --> $DIR/wildcard_imports.rs:213:13 | LL | use super_imports::*; | ^^^^^^^^^^^^^^^^ help: try: `super_imports::foofoo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:223:17 + --> $DIR/wildcard_imports.rs:222:17 | LL | use super::super::*; | ^^^^^^^^^^^^^^^ help: try: `super::super::foofoo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:232:13 + --> $DIR/wildcard_imports.rs:231:13 | LL | use super::super::super_imports::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `super::super::super_imports::foofoo` error: usage of wildcard import - --> $DIR/wildcard_imports.rs:240:13 + --> $DIR/wildcard_imports.rs:239:13 | LL | use super::*; | ^^^^^^^^ help: try: `super::foofoo` diff --git a/tests/ui/wildcard_imports_2021.edition2018.fixed b/tests/ui/wildcard_imports_2021.edition2018.fixed new file mode 100644 index 000000000000..6d534a10edcd --- /dev/null +++ b/tests/ui/wildcard_imports_2021.edition2018.fixed @@ -0,0 +1,240 @@ +// revisions: edition2018 edition2021 +//[edition2018] edition:2018 +//[edition2021] edition:2021 +// run-rustfix +// aux-build:wildcard_imports_helper.rs + +#![warn(clippy::wildcard_imports)] +#![allow(unused, clippy::unnecessary_wraps, clippy::let_unit_value)] +#![warn(unused_imports)] + +extern crate wildcard_imports_helper; + +use crate::fn_mod::foo; +use crate::mod_mod::inner_mod; +use crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}; +use crate::struct_mod::{A, inner_struct_mod}; + +#[allow(unused_imports)] +use wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar; +use wildcard_imports_helper::prelude::v1::*; +use wildcard_imports_helper::{ExternA, extern_foo}; + +use std::io::prelude::*; + +struct ReadFoo; + +impl Read for ReadFoo { + fn read(&mut self, _buf: &mut [u8]) -> std::io::Result { + Ok(0) + } +} + +mod fn_mod { + pub fn foo() {} +} + +mod mod_mod { + pub mod inner_mod { + pub fn foo() {} + } +} + +mod multi_fn_mod { + pub fn multi_foo() {} + pub fn multi_bar() {} + pub fn multi_baz() {} + pub mod multi_inner_mod { + pub fn foo() {} + } +} + +mod struct_mod { + pub struct A; + pub struct B; + pub mod inner_struct_mod { + pub struct C; + } + + #[macro_export] + macro_rules! double_struct_import_test { + () => { + let _ = A; + }; + } +} + +fn main() { + foo(); + multi_foo(); + multi_bar(); + multi_inner_mod::foo(); + inner_mod::foo(); + extern_foo(); + inner_extern_bar(); + + let _ = A; + let _ = inner_struct_mod::C; + let _ = ExternA; + let _ = PreludeModAnywhere; + + double_struct_import_test!(); + double_struct_import_test!(); +} + +mod in_fn_test { + pub use self::inner_exported::*; + #[allow(unused_imports)] + pub(crate) use self::inner_exported2::*; + + fn test_intern() { + use crate::fn_mod::foo; + + foo(); + } + + fn test_extern() { + use wildcard_imports_helper::inner::inner_for_self_import::{self, inner_extern_foo}; + use wildcard_imports_helper::{ExternA, extern_foo}; + + inner_for_self_import::inner_extern_foo(); + inner_extern_foo(); + + extern_foo(); + + let _ = ExternA; + } + + fn test_inner_nested() { + use self::{inner::inner_foo, inner2::inner_bar}; + + inner_foo(); + inner_bar(); + } + + fn test_extern_reexported() { + use wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}; + + extern_exported(); + let _ = ExternExportedStruct; + let _ = ExternExportedEnum::A; + } + + mod inner_exported { + pub fn exported() {} + pub struct ExportedStruct; + pub enum ExportedEnum { + A, + } + } + + mod inner_exported2 { + pub(crate) fn exported2() {} + } + + mod inner { + pub fn inner_foo() {} + } + + mod inner2 { + pub fn inner_bar() {} + } +} + +fn test_reexported() { + use crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}; + + exported(); + let _ = ExportedStruct; + let _ = ExportedEnum::A; +} + +#[rustfmt::skip] +fn test_weird_formatting() { + use crate:: in_fn_test::exported; + use crate:: fn_mod::foo; + + exported(); + foo(); +} + +mod super_imports { + fn foofoo() {} + + mod should_be_replaced { + use super::foofoo; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass { + use super::*; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass_inside_function { + fn with_super_inside_function() { + use super::*; + let _ = foofoo(); + } + } + + mod test_should_pass_further_inside { + fn insidefoo() {} + mod inner { + use super::*; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod should_be_replaced_further_inside { + fn insidefoo() {} + mod inner { + use super::insidefoo; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod use_explicit_should_be_replaced { + use crate::super_imports::foofoo; + + fn with_explicit() { + let _ = foofoo(); + } + } + + mod use_double_super_should_be_replaced { + mod inner { + use super::super::foofoo; + + fn with_double_super() { + let _ = foofoo(); + } + } + } + + mod use_super_explicit_should_be_replaced { + use super::super::super_imports::foofoo; + + fn with_super_explicit() { + let _ = foofoo(); + } + } + + mod attestation_should_be_replaced { + use super::foofoo; + + fn with_explicit() { + let _ = foofoo(); + } + } +} diff --git a/tests/ui/wildcard_imports_2021.edition2018.stderr b/tests/ui/wildcard_imports_2021.edition2018.stderr new file mode 100644 index 000000000000..acca9f651b47 --- /dev/null +++ b/tests/ui/wildcard_imports_2021.edition2018.stderr @@ -0,0 +1,132 @@ +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:13:5 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + | + = note: `-D clippy::wildcard-imports` implied by `-D warnings` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:14:5 + | +LL | use crate::mod_mod::*; + | ^^^^^^^^^^^^^^^^^ help: try: `crate::mod_mod::inner_mod` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:15:5 + | +LL | use crate::multi_fn_mod::*; + | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:16:5 + | +LL | use crate::struct_mod::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::struct_mod::{A, inner_struct_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:19:5 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:21:5 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:91:13 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:97:75 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::{self, *}; + | ^ help: try: `inner_extern_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:98:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:109:20 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^ help: try: `inner::inner_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:109:30 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^^ help: try: `inner2::inner_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:116:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:145:9 + | +LL | use crate::in_fn_test::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:154:9 + | +LL | use crate:: in_fn_test:: * ; + | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate:: in_fn_test::exported` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:155:9 + | +LL | use crate:: fn_mod:: + | _________^ +LL | | *; + | |_________^ help: try: `crate:: fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:166:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:201:17 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::insidefoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:209:13 + | +LL | use crate::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:218:17 + | +LL | use super::super::*; + | ^^^^^^^^^^^^^^^ help: try: `super::super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:227:13 + | +LL | use super::super::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `super::super::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:235:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: aborting due to 21 previous errors + diff --git a/tests/ui/wildcard_imports_2021.edition2021.fixed b/tests/ui/wildcard_imports_2021.edition2021.fixed new file mode 100644 index 000000000000..6d534a10edcd --- /dev/null +++ b/tests/ui/wildcard_imports_2021.edition2021.fixed @@ -0,0 +1,240 @@ +// revisions: edition2018 edition2021 +//[edition2018] edition:2018 +//[edition2021] edition:2021 +// run-rustfix +// aux-build:wildcard_imports_helper.rs + +#![warn(clippy::wildcard_imports)] +#![allow(unused, clippy::unnecessary_wraps, clippy::let_unit_value)] +#![warn(unused_imports)] + +extern crate wildcard_imports_helper; + +use crate::fn_mod::foo; +use crate::mod_mod::inner_mod; +use crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}; +use crate::struct_mod::{A, inner_struct_mod}; + +#[allow(unused_imports)] +use wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar; +use wildcard_imports_helper::prelude::v1::*; +use wildcard_imports_helper::{ExternA, extern_foo}; + +use std::io::prelude::*; + +struct ReadFoo; + +impl Read for ReadFoo { + fn read(&mut self, _buf: &mut [u8]) -> std::io::Result { + Ok(0) + } +} + +mod fn_mod { + pub fn foo() {} +} + +mod mod_mod { + pub mod inner_mod { + pub fn foo() {} + } +} + +mod multi_fn_mod { + pub fn multi_foo() {} + pub fn multi_bar() {} + pub fn multi_baz() {} + pub mod multi_inner_mod { + pub fn foo() {} + } +} + +mod struct_mod { + pub struct A; + pub struct B; + pub mod inner_struct_mod { + pub struct C; + } + + #[macro_export] + macro_rules! double_struct_import_test { + () => { + let _ = A; + }; + } +} + +fn main() { + foo(); + multi_foo(); + multi_bar(); + multi_inner_mod::foo(); + inner_mod::foo(); + extern_foo(); + inner_extern_bar(); + + let _ = A; + let _ = inner_struct_mod::C; + let _ = ExternA; + let _ = PreludeModAnywhere; + + double_struct_import_test!(); + double_struct_import_test!(); +} + +mod in_fn_test { + pub use self::inner_exported::*; + #[allow(unused_imports)] + pub(crate) use self::inner_exported2::*; + + fn test_intern() { + use crate::fn_mod::foo; + + foo(); + } + + fn test_extern() { + use wildcard_imports_helper::inner::inner_for_self_import::{self, inner_extern_foo}; + use wildcard_imports_helper::{ExternA, extern_foo}; + + inner_for_self_import::inner_extern_foo(); + inner_extern_foo(); + + extern_foo(); + + let _ = ExternA; + } + + fn test_inner_nested() { + use self::{inner::inner_foo, inner2::inner_bar}; + + inner_foo(); + inner_bar(); + } + + fn test_extern_reexported() { + use wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}; + + extern_exported(); + let _ = ExternExportedStruct; + let _ = ExternExportedEnum::A; + } + + mod inner_exported { + pub fn exported() {} + pub struct ExportedStruct; + pub enum ExportedEnum { + A, + } + } + + mod inner_exported2 { + pub(crate) fn exported2() {} + } + + mod inner { + pub fn inner_foo() {} + } + + mod inner2 { + pub fn inner_bar() {} + } +} + +fn test_reexported() { + use crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}; + + exported(); + let _ = ExportedStruct; + let _ = ExportedEnum::A; +} + +#[rustfmt::skip] +fn test_weird_formatting() { + use crate:: in_fn_test::exported; + use crate:: fn_mod::foo; + + exported(); + foo(); +} + +mod super_imports { + fn foofoo() {} + + mod should_be_replaced { + use super::foofoo; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass { + use super::*; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass_inside_function { + fn with_super_inside_function() { + use super::*; + let _ = foofoo(); + } + } + + mod test_should_pass_further_inside { + fn insidefoo() {} + mod inner { + use super::*; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod should_be_replaced_further_inside { + fn insidefoo() {} + mod inner { + use super::insidefoo; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod use_explicit_should_be_replaced { + use crate::super_imports::foofoo; + + fn with_explicit() { + let _ = foofoo(); + } + } + + mod use_double_super_should_be_replaced { + mod inner { + use super::super::foofoo; + + fn with_double_super() { + let _ = foofoo(); + } + } + } + + mod use_super_explicit_should_be_replaced { + use super::super::super_imports::foofoo; + + fn with_super_explicit() { + let _ = foofoo(); + } + } + + mod attestation_should_be_replaced { + use super::foofoo; + + fn with_explicit() { + let _ = foofoo(); + } + } +} diff --git a/tests/ui/wildcard_imports_2021.edition2021.stderr b/tests/ui/wildcard_imports_2021.edition2021.stderr new file mode 100644 index 000000000000..acca9f651b47 --- /dev/null +++ b/tests/ui/wildcard_imports_2021.edition2021.stderr @@ -0,0 +1,132 @@ +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:13:5 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + | + = note: `-D clippy::wildcard-imports` implied by `-D warnings` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:14:5 + | +LL | use crate::mod_mod::*; + | ^^^^^^^^^^^^^^^^^ help: try: `crate::mod_mod::inner_mod` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:15:5 + | +LL | use crate::multi_fn_mod::*; + | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:16:5 + | +LL | use crate::struct_mod::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::struct_mod::{A, inner_struct_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:19:5 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:21:5 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:91:13 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:97:75 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::{self, *}; + | ^ help: try: `inner_extern_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:98:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:109:20 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^ help: try: `inner::inner_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:109:30 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^^ help: try: `inner2::inner_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:116:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:145:9 + | +LL | use crate::in_fn_test::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:154:9 + | +LL | use crate:: in_fn_test:: * ; + | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate:: in_fn_test::exported` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:155:9 + | +LL | use crate:: fn_mod:: + | _________^ +LL | | *; + | |_________^ help: try: `crate:: fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:166:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:201:17 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::insidefoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:209:13 + | +LL | use crate::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:218:17 + | +LL | use super::super::*; + | ^^^^^^^^^^^^^^^ help: try: `super::super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:227:13 + | +LL | use super::super::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `super::super::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:235:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: aborting due to 21 previous errors + diff --git a/tests/ui/wildcard_imports_2021.rs b/tests/ui/wildcard_imports_2021.rs new file mode 100644 index 000000000000..b5ed58e68136 --- /dev/null +++ b/tests/ui/wildcard_imports_2021.rs @@ -0,0 +1,241 @@ +// revisions: edition2018 edition2021 +//[edition2018] edition:2018 +//[edition2021] edition:2021 +// run-rustfix +// aux-build:wildcard_imports_helper.rs + +#![warn(clippy::wildcard_imports)] +#![allow(unused, clippy::unnecessary_wraps, clippy::let_unit_value)] +#![warn(unused_imports)] + +extern crate wildcard_imports_helper; + +use crate::fn_mod::*; +use crate::mod_mod::*; +use crate::multi_fn_mod::*; +use crate::struct_mod::*; + +#[allow(unused_imports)] +use wildcard_imports_helper::inner::inner_for_self_import::*; +use wildcard_imports_helper::prelude::v1::*; +use wildcard_imports_helper::*; + +use std::io::prelude::*; + +struct ReadFoo; + +impl Read for ReadFoo { + fn read(&mut self, _buf: &mut [u8]) -> std::io::Result { + Ok(0) + } +} + +mod fn_mod { + pub fn foo() {} +} + +mod mod_mod { + pub mod inner_mod { + pub fn foo() {} + } +} + +mod multi_fn_mod { + pub fn multi_foo() {} + pub fn multi_bar() {} + pub fn multi_baz() {} + pub mod multi_inner_mod { + pub fn foo() {} + } +} + +mod struct_mod { + pub struct A; + pub struct B; + pub mod inner_struct_mod { + pub struct C; + } + + #[macro_export] + macro_rules! double_struct_import_test { + () => { + let _ = A; + }; + } +} + +fn main() { + foo(); + multi_foo(); + multi_bar(); + multi_inner_mod::foo(); + inner_mod::foo(); + extern_foo(); + inner_extern_bar(); + + let _ = A; + let _ = inner_struct_mod::C; + let _ = ExternA; + let _ = PreludeModAnywhere; + + double_struct_import_test!(); + double_struct_import_test!(); +} + +mod in_fn_test { + pub use self::inner_exported::*; + #[allow(unused_imports)] + pub(crate) use self::inner_exported2::*; + + fn test_intern() { + use crate::fn_mod::*; + + foo(); + } + + fn test_extern() { + use wildcard_imports_helper::inner::inner_for_self_import::{self, *}; + use wildcard_imports_helper::*; + + inner_for_self_import::inner_extern_foo(); + inner_extern_foo(); + + extern_foo(); + + let _ = ExternA; + } + + fn test_inner_nested() { + use self::{inner::*, inner2::*}; + + inner_foo(); + inner_bar(); + } + + fn test_extern_reexported() { + use wildcard_imports_helper::*; + + extern_exported(); + let _ = ExternExportedStruct; + let _ = ExternExportedEnum::A; + } + + mod inner_exported { + pub fn exported() {} + pub struct ExportedStruct; + pub enum ExportedEnum { + A, + } + } + + mod inner_exported2 { + pub(crate) fn exported2() {} + } + + mod inner { + pub fn inner_foo() {} + } + + mod inner2 { + pub fn inner_bar() {} + } +} + +fn test_reexported() { + use crate::in_fn_test::*; + + exported(); + let _ = ExportedStruct; + let _ = ExportedEnum::A; +} + +#[rustfmt::skip] +fn test_weird_formatting() { + use crate:: in_fn_test:: * ; + use crate:: fn_mod:: + *; + + exported(); + foo(); +} + +mod super_imports { + fn foofoo() {} + + mod should_be_replaced { + use super::*; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass { + use super::*; + + fn with_super() { + let _ = foofoo(); + } + } + + mod test_should_pass_inside_function { + fn with_super_inside_function() { + use super::*; + let _ = foofoo(); + } + } + + mod test_should_pass_further_inside { + fn insidefoo() {} + mod inner { + use super::*; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod should_be_replaced_further_inside { + fn insidefoo() {} + mod inner { + use super::*; + fn with_super() { + let _ = insidefoo(); + } + } + } + + mod use_explicit_should_be_replaced { + use crate::super_imports::*; + + fn with_explicit() { + let _ = foofoo(); + } + } + + mod use_double_super_should_be_replaced { + mod inner { + use super::super::*; + + fn with_double_super() { + let _ = foofoo(); + } + } + } + + mod use_super_explicit_should_be_replaced { + use super::super::super_imports::*; + + fn with_super_explicit() { + let _ = foofoo(); + } + } + + mod attestation_should_be_replaced { + use super::*; + + fn with_explicit() { + let _ = foofoo(); + } + } +} diff --git a/tests/ui/wildcard_imports_2021.stderr b/tests/ui/wildcard_imports_2021.stderr new file mode 100644 index 000000000000..92f6d31530fa --- /dev/null +++ b/tests/ui/wildcard_imports_2021.stderr @@ -0,0 +1,132 @@ +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:9:5 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + | + = note: `-D clippy::wildcard-imports` implied by `-D warnings` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:10:5 + | +LL | use crate::mod_mod::*; + | ^^^^^^^^^^^^^^^^^ help: try: `crate::mod_mod::inner_mod` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:11:5 + | +LL | use crate::multi_fn_mod::*; + | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::multi_fn_mod::{multi_bar, multi_foo, multi_inner_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:12:5 + | +LL | use crate::struct_mod::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::struct_mod::{A, inner_struct_mod}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:15:5 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::inner::inner_for_self_import::inner_extern_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:17:5 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:87:13 + | +LL | use crate::fn_mod::*; + | ^^^^^^^^^^^^^^^^ help: try: `crate::fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:93:75 + | +LL | use wildcard_imports_helper::inner::inner_for_self_import::{self, *}; + | ^ help: try: `inner_extern_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:94:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternA, extern_foo}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:105:20 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^ help: try: `inner::inner_foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:105:30 + | +LL | use self::{inner::*, inner2::*}; + | ^^^^^^^^^ help: try: `inner2::inner_bar` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:112:13 + | +LL | use wildcard_imports_helper::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wildcard_imports_helper::{ExternExportedEnum, ExternExportedStruct, extern_exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:141:9 + | +LL | use crate::in_fn_test::*; + | ^^^^^^^^^^^^^^^^^^^^ help: try: `crate::in_fn_test::{ExportedEnum, ExportedStruct, exported}` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:150:9 + | +LL | use crate:: in_fn_test:: * ; + | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate:: in_fn_test::exported` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:151:9 + | +LL | use crate:: fn_mod:: + | _________^ +LL | | *; + | |_________^ help: try: `crate:: fn_mod::foo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:162:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:197:17 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::insidefoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:205:13 + | +LL | use crate::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:214:17 + | +LL | use super::super::*; + | ^^^^^^^^^^^^^^^ help: try: `super::super::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:223:13 + | +LL | use super::super::super_imports::*; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `super::super::super_imports::foofoo` + +error: usage of wildcard import + --> $DIR/wildcard_imports_2021.rs:231:13 + | +LL | use super::*; + | ^^^^^^^^ help: try: `super::foofoo` + +error: aborting due to 21 previous errors + From 315bb10405ec6082f46c73791bed24a134a307c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Tue, 27 Dec 2022 11:03:59 -0800 Subject: [PATCH 188/478] Account for multiple multiline spans with empty padding Instead of ``` LL | fn oom( | __^ | | _| | || LL | || ) { | ||_- LL | | } | |__^ ``` emit ``` LL | // fn oom( LL | || ) { | ||_- LL | | } | |__^ ``` --- tests/ui/async_yields_async.stderr | 6 ++---- tests/ui/result_map_unit_fn_unfixable.stderr | 5 +---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/tests/ui/async_yields_async.stderr b/tests/ui/async_yields_async.stderr index 92ba35929678..22ce1c6f6471 100644 --- a/tests/ui/async_yields_async.stderr +++ b/tests/ui/async_yields_async.stderr @@ -3,8 +3,7 @@ error: an async construct yields a type which is itself awaitable | LL | let _h = async { | _____________________- -LL | | async { - | | _________^ +LL | |/ async { LL | || 3 LL | || } | ||_________^ awaitable value not awaited @@ -37,8 +36,7 @@ error: an async construct yields a type which is itself awaitable | LL | let _j = async || { | ________________________- -LL | | async { - | | _________^ +LL | |/ async { LL | || 3 LL | || } | ||_________^ awaitable value not awaited diff --git a/tests/ui/result_map_unit_fn_unfixable.stderr b/tests/ui/result_map_unit_fn_unfixable.stderr index 2e1eb8eb1806..d0e534f63568 100644 --- a/tests/ui/result_map_unit_fn_unfixable.stderr +++ b/tests/ui/result_map_unit_fn_unfixable.stderr @@ -19,10 +19,7 @@ LL | x.field.map(|value| if value > 0 { do_nothing(value); do_nothing(value) error: called `map(f)` on an `Result` value where `f` is a closure that returns the unit type `()` --> $DIR/result_map_unit_fn_unfixable.rs:29:5 | -LL | x.field.map(|value| { - | ______^ - | | _____| - | || +LL | // x.field.map(|value| { LL | || do_nothing(value); LL | || do_nothing(value) LL | || }); From 0298095ac21e8fd5eb5ead8edc1b49a365972cc4 Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Thu, 29 Dec 2022 14:48:36 -0600 Subject: [PATCH 189/478] add comment about mutex_atomic issue to description --- clippy_lints/src/mutex_atomic.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/clippy_lints/src/mutex_atomic.rs b/clippy_lints/src/mutex_atomic.rs index 45bb217979aa..dc866ab6373b 100644 --- a/clippy_lints/src/mutex_atomic.rs +++ b/clippy_lints/src/mutex_atomic.rs @@ -1,6 +1,6 @@ //! Checks for uses of mutex where an atomic value could be used //! -//! This lint is **warn** by default +//! This lint is **allow** by default use clippy_utils::diagnostics::span_lint; use clippy_utils::ty::is_type_diagnostic_item; @@ -20,6 +20,10 @@ declare_clippy_lint! { /// `std::sync::atomic::AtomicBool` and `std::sync::atomic::AtomicPtr` are leaner and /// faster. /// + /// On the other hand, `Mutex`es are, in general, easier to + /// verify correctness. An atomic does not behave the same as + /// an equivalent mutex. See [this issue](https://github.com/rust-lang/rust-clippy/issues/4295)'s commentary for more details. + /// /// ### Known problems /// This lint cannot detect if the mutex is actually used /// for waiting before a critical section. @@ -40,7 +44,7 @@ declare_clippy_lint! { #[clippy::version = "pre 1.29.0"] pub MUTEX_ATOMIC, restriction, - "using a mutex where an atomic value could be used instead" + "using a mutex where an atomic value could be used instead." } declare_clippy_lint! { From da7ce6f8102a2502cc4ada73e2bab72b6dfbf8d4 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 11:14:15 +0000 Subject: [PATCH 190/478] derive 'Hash' --- crates/vfs/src/lib.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/crates/vfs/src/lib.rs b/crates/vfs/src/lib.rs index afc9a0fa6fb2..c61f30387b70 100644 --- a/crates/vfs/src/lib.rs +++ b/crates/vfs/src/lib.rs @@ -59,15 +59,10 @@ pub use paths::{AbsPath, AbsPathBuf}; /// Handle to a file in [`Vfs`] /// /// Most functions in rust-analyzer use this when they need to refer to a file. -#[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)] pub struct FileId(pub u32); impl stdx::hash::NoHashHashable for FileId {} -impl std::hash::Hash for FileId { - fn hash(&self, state: &mut H) { - self.0.hash(state); - } -} /// Storage for all files read by rust-analyzer. /// From ba5067a6f04c0dbd5139cd876758fb2a11fad7cd Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 11:28:06 +0000 Subject: [PATCH 191/478] suppress 'clippy::approx_constant' lint in test case --- crates/syntax/src/ast/token_ext.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/syntax/src/ast/token_ext.rs b/crates/syntax/src/ast/token_ext.rs index ca18196300df..4ad7cf33cdc2 100644 --- a/crates/syntax/src/ast/token_ext.rs +++ b/crates/syntax/src/ast/token_ext.rs @@ -481,6 +481,7 @@ bcde", b"abcde", #[test] fn test_value_underscores() { + #[allow(clippy::approx_constant)] check_float_value("3.141592653589793_f64", 3.141592653589793_f64); check_float_value("1__0.__0__f32", 10.0); check_int_value("0b__1_0_", 2); From 3aae785693881ab01850809e6aa121e61c46385b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Fri, 30 Dec 2022 16:10:07 +0200 Subject: [PATCH 192/478] Avoid useless format --- crates/ide-completion/src/render/variant.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs index 5995da68a165..f3e88489f46d 100644 --- a/crates/ide-completion/src/render/variant.rs +++ b/crates/ide-completion/src/render/variant.rs @@ -49,7 +49,7 @@ pub(crate) fn render_tuple_lit( path: &str, ) -> RenderedLiteral { if snippet_cap.is_none() { - return RenderedLiteral { literal: format!("{path}"), detail: format!("{path}") }; + return RenderedLiteral { literal: path.to_string(), detail: path.to_string() }; } let completions = fields.iter().enumerate().format_with(", ", |(idx, _), f| { if snippet_cap.is_some() { From d96c489120551d36f5bdb362ce313052350821f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Fri, 30 Dec 2022 16:10:17 +0200 Subject: [PATCH 193/478] Rephrase clippy policy --- docs/dev/style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/style.md b/docs/dev/style.md index a80eebd63296..d2a03fba40d4 100644 --- a/docs/dev/style.md +++ b/docs/dev/style.md @@ -101,7 +101,7 @@ Including a description and GIF suitable for the changelog means less work for t We don't enforce Clippy. A number of default lints have high false positive rate. -Selectively patching false-positives with `allow(clippy)` is considered worse than not using Clippy at all. +Selectively patching false-positives with `allow(clippy)` is probably worse than entirely disabling a problematic lint. There's a `cargo lint` command which runs a subset of low-FPR lints. Careful tweaking of `lint` is welcome. Of course, applying Clippy suggestions is welcome as long as they indeed improve the code. From 72afcf2cadbd1434150049e4102ccc89251772a0 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Fri, 30 Dec 2022 20:29:37 +0100 Subject: [PATCH 194/478] Use `rustc_safe_intrinsic` attribute to check for intrinsic safety Instead of maintaining a list that is poorly kept in sync we can just use the attribute. --- crates/hir-def/src/builtin_attr.rs | 1 + crates/hir-ty/src/utils.rs | 60 ++++--------------- .../src/handlers/missing_unsafe.rs | 1 + 3 files changed, 14 insertions(+), 48 deletions(-) diff --git a/crates/hir-def/src/builtin_attr.rs b/crates/hir-def/src/builtin_attr.rs index 39581b33a8da..f7c1e683d0d2 100644 --- a/crates/hir-def/src/builtin_attr.rs +++ b/crates/hir-def/src/builtin_attr.rs @@ -350,6 +350,7 @@ pub const INERT_ATTRIBUTES: &[BuiltinAttribute] = &[ ), ungated!(rustc_const_unstable, Normal, template!(List: r#"feature = "name""#), DuplicatesOk), ungated!(rustc_const_stable, Normal, template!(List: r#"feature = "name""#), DuplicatesOk), + ungated!(rustc_safe_intrinsic, Normal, template!(List: r#"feature = "name""#), DuplicatesOk), gated!( allow_internal_unstable, Normal, template!(Word, List: "feat1, feat2, ..."), DuplicatesOk, "allow_internal_unstable side-steps feature gating and stability checks", diff --git a/crates/hir-ty/src/utils.rs b/crates/hir-ty/src/utils.rs index e54bcb421a22..1f3470a36222 100644 --- a/crates/hir-ty/src/utils.rs +++ b/crates/hir-ty/src/utils.rs @@ -17,7 +17,7 @@ use hir_def::{ ConstParamId, FunctionId, GenericDefId, ItemContainerId, Lookup, TraitId, TypeAliasId, TypeOrConstParamId, TypeParamId, }; -use hir_expand::name::{known, Name}; +use hir_expand::name::Name; use itertools::Either; use rustc_hash::FxHashSet; use smallvec::{smallvec, SmallVec}; @@ -335,54 +335,18 @@ pub fn is_fn_unsafe_to_call(db: &dyn HirDatabase, func: FunctionId) -> bool { // Function in an `extern` block are always unsafe to call, except when it has // `"rust-intrinsic"` ABI there are a few exceptions. let id = block.lookup(db.upcast()).id; - !matches!( - id.item_tree(db.upcast())[id.value].abi.as_deref(), - Some("rust-intrinsic") if !is_intrinsic_fn_unsafe(&data.name) - ) + + let is_intrinsic = + id.item_tree(db.upcast())[id.value].abi.as_deref() == Some("rust-intrinsic"); + + if is_intrinsic { + // Intrinsics are unsafe unless they have the rustc_safe_intrinsic attribute + !data.attrs.by_key("rustc_safe_intrinsic").exists() + } else { + // Extern items are always unsafe + true + } } _ => false, } } - -/// Returns `true` if the given intrinsic is unsafe to call, or false otherwise. -fn is_intrinsic_fn_unsafe(name: &Name) -> bool { - // Should be kept in sync with https://github.com/rust-lang/rust/blob/532d2b14c05f9bc20b2d27cbb5f4550d28343a36/compiler/rustc_typeck/src/check/intrinsic.rs#L72-L106 - ![ - known::abort, - known::add_with_overflow, - known::bitreverse, - known::black_box, - known::bswap, - known::caller_location, - known::ctlz, - known::ctpop, - known::cttz, - known::discriminant_value, - known::forget, - known::likely, - known::maxnumf32, - known::maxnumf64, - known::min_align_of, - known::minnumf32, - known::minnumf64, - known::mul_with_overflow, - known::needs_drop, - known::ptr_guaranteed_eq, - known::ptr_guaranteed_ne, - known::rotate_left, - known::rotate_right, - known::rustc_peek, - known::saturating_add, - known::saturating_sub, - known::size_of, - known::sub_with_overflow, - known::type_id, - known::type_name, - known::unlikely, - known::variant_count, - known::wrapping_add, - known::wrapping_mul, - known::wrapping_sub, - ] - .contains(name) -} diff --git a/crates/ide-diagnostics/src/handlers/missing_unsafe.rs b/crates/ide-diagnostics/src/handlers/missing_unsafe.rs index 7acd9228a89a..ea1ea5a216df 100644 --- a/crates/ide-diagnostics/src/handlers/missing_unsafe.rs +++ b/crates/ide-diagnostics/src/handlers/missing_unsafe.rs @@ -86,6 +86,7 @@ fn main() { check_diagnostics( r#" extern "rust-intrinsic" { + #[rustc_safe_intrinsic] pub fn bitreverse(x: u32) -> u32; // Safe intrinsic pub fn floorf32(x: f32) -> f32; // Unsafe intrinsic } From cc1dee148d7fb41897ab7c05d3e99ab6e65be731 Mon Sep 17 00:00:00 2001 From: Obei Sideg Date: Fri, 30 Dec 2022 17:31:59 +0300 Subject: [PATCH 195/478] Fix incorrect suggestion for extra `&` in pattern see #106182 --- compiler/rustc_hir_typeck/src/pat.rs | 17 +++++++++++++++++ .../mismatched_types/ref-pat-suggestions.stderr | 5 ++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/pat.rs b/compiler/rustc_hir_typeck/src/pat.rs index d3e88b1b80ae..837286cfd11a 100644 --- a/compiler/rustc_hir_typeck/src/pat.rs +++ b/compiler/rustc_hir_typeck/src/pat.rs @@ -758,6 +758,23 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { err.span_note(sp, format!("{msg}: `{sugg}`")); } } + hir::Node::Pat(pt) if let PatKind::TupleStruct(_, pat_arr, _) = pt.kind => { + for i in pat_arr.iter() { + if let PatKind::Ref(the_ref, _) = i.kind + && let PatKind::Binding(mt, _, ident, _) = the_ref.kind { + let hir::BindingAnnotation(_, mtblty) = mt; + err.span_suggestion_verbose( + i.span, + format!("consider removing `&{mutability}` from the pattern"), + mtblty.prefix_str().to_string() + &ident.name.to_string(), + Applicability::MaybeIncorrect, + ); + } + } + if let Some((sp, msg, sugg)) = mut_var_suggestion { + err.span_note(sp, format!("{msg}: `{sugg}`")); + } + } hir::Node::Param(_) | hir::Node::Arm(_) | hir::Node::Pat(_) => { // rely on match ergonomics or it might be nested `&&pat` err.span_suggestion_verbose( diff --git a/src/test/ui/mismatched_types/ref-pat-suggestions.stderr b/src/test/ui/mismatched_types/ref-pat-suggestions.stderr index d9501a9bbc61..63eaa3930b1c 100644 --- a/src/test/ui/mismatched_types/ref-pat-suggestions.stderr +++ b/src/test/ui/mismatched_types/ref-pat-suggestions.stderr @@ -336,9 +336,8 @@ LL | let S(&mut _b) = S(0); | ^^^^^^^ help: consider removing `&mut` from the pattern | -LL - let S(&mut _b) = S(0); -LL + let S(_b) = S(0); - | +LL | let S(_b) = S(0); + | ~~ error[E0308]: mismatched types --> $DIR/ref-pat-suggestions.rs:31:14 From a74a48852a50628b8de61ad5534f4eb3d31ecc6e Mon Sep 17 00:00:00 2001 From: Obei Sideg Date: Fri, 30 Dec 2022 17:51:42 +0300 Subject: [PATCH 196/478] Add ui test for #106182 --- .../ui/mismatched_types/issue-106182.fixed | 14 ++++++++++++++ src/test/ui/mismatched_types/issue-106182.rs | 14 ++++++++++++++ .../ui/mismatched_types/issue-106182.stderr | 18 ++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/test/ui/mismatched_types/issue-106182.fixed create mode 100644 src/test/ui/mismatched_types/issue-106182.rs create mode 100644 src/test/ui/mismatched_types/issue-106182.stderr diff --git a/src/test/ui/mismatched_types/issue-106182.fixed b/src/test/ui/mismatched_types/issue-106182.fixed new file mode 100644 index 000000000000..b8ddebf6fb63 --- /dev/null +++ b/src/test/ui/mismatched_types/issue-106182.fixed @@ -0,0 +1,14 @@ +// run-rustfix + +struct _S(u32, Vec); + +fn _foo(x: &_S) { + match x { + _S(mut _y, _v) => { + //~^ ERROR mismatched types [E0308] + } + } +} + +fn main() { +} diff --git a/src/test/ui/mismatched_types/issue-106182.rs b/src/test/ui/mismatched_types/issue-106182.rs new file mode 100644 index 000000000000..6eb6df13a028 --- /dev/null +++ b/src/test/ui/mismatched_types/issue-106182.rs @@ -0,0 +1,14 @@ +// run-rustfix + +struct _S(u32, Vec); + +fn _foo(x: &_S) { + match x { + _S(& (mut _y), _v) => { + //~^ ERROR mismatched types [E0308] + } + } +} + +fn main() { +} diff --git a/src/test/ui/mismatched_types/issue-106182.stderr b/src/test/ui/mismatched_types/issue-106182.stderr new file mode 100644 index 000000000000..ac3ab8e9895c --- /dev/null +++ b/src/test/ui/mismatched_types/issue-106182.stderr @@ -0,0 +1,18 @@ +error[E0308]: mismatched types + --> $DIR/issue-106182.rs:7:12 + | +LL | match x { + | - this expression has type `&_S` +LL | _S(& (mut _y), _v) => { + | ^^^^^^^^^^ expected `u32`, found reference + | + = note: expected type `u32` + found reference `&_` +help: consider removing `&` from the pattern + | +LL | _S(mut _y, _v) => { + | ~~~~~~ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. From 5d54c550e7f5c5c423b1a3c5b6f3c24c1a93af49 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 30 Dec 2022 23:56:08 +0100 Subject: [PATCH 197/478] Fallback to invisible associated functions and constants if no visible resolutions are found --- crates/hir-ty/src/infer/path.rs | 22 ++++- crates/hir-ty/src/method_resolution.rs | 124 +++++++++++++++---------- crates/hir/src/lib.rs | 2 +- 3 files changed, 94 insertions(+), 54 deletions(-) diff --git a/crates/hir-ty/src/infer/path.rs b/crates/hir-ty/src/infer/path.rs index 6cad84eb4f27..dc645f840eea 100644 --- a/crates/hir-ty/src/infer/path.rs +++ b/crates/hir-ty/src/infer/path.rs @@ -234,7 +234,8 @@ impl<'a> InferenceContext<'a> { let canonical_ty = self.canonicalize(ty.clone()); let traits_in_scope = self.resolver.traits_in_scope(self.db.upcast()); - method_resolution::iterate_method_candidates( + let mut not_visible = None; + let res = method_resolution::iterate_method_candidates( &canonical_ty.value, self.db, self.table.trait_env.clone(), @@ -242,7 +243,7 @@ impl<'a> InferenceContext<'a> { VisibleFromModule::Filter(self.resolver.module()), Some(name), method_resolution::LookupMode::Path, - move |_ty, item| { + |_ty, item, visible| { let (def, container) = match item { AssocItemId::FunctionId(f) => { (ValueNs::FunctionId(f), f.lookup(self.db.upcast()).container) @@ -277,10 +278,21 @@ impl<'a> InferenceContext<'a> { } }; - self.write_assoc_resolution(id, item, substs.clone()); - Some((def, Some(substs))) + if visible { + Some((def, item, Some(substs))) + } else { + if not_visible.is_none() { + not_visible = Some((def, item, Some(substs))); + } + None + } }, - ) + ); + let res = res.or(not_visible); + if let Some((_, item, Some(ref substs))) = res { + self.write_assoc_resolution(id, item, substs.clone()); + } + res.map(|(def, _, substs)| (def, substs)) } fn resolve_enum_variant_on_ty( diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 882f1afc1f85..2d162bc38e45 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -495,7 +495,8 @@ pub(crate) fn lookup_method( visible_from_module: VisibleFromModule, name: &Name, ) -> Option<(ReceiverAdjustments, FunctionId)> { - iterate_method_candidates( + let mut not_visible = None; + let res = iterate_method_candidates( ty, db, env, @@ -503,11 +504,16 @@ pub(crate) fn lookup_method( visible_from_module, Some(name), LookupMode::MethodCall, - |adjustments, f| match f { - AssocItemId::FunctionId(f) => Some((adjustments, f)), + |adjustments, f, visible| match f { + AssocItemId::FunctionId(f) if visible => Some((adjustments, f)), + AssocItemId::FunctionId(f) if not_visible.is_none() => { + not_visible = Some((adjustments, f)); + None + } _ => None, }, - ) + ); + res.or(not_visible) } /// Whether we're looking up a dotted method call (like `v.len()`) or a path @@ -619,7 +625,7 @@ pub(crate) fn iterate_method_candidates( visible_from_module: VisibleFromModule, name: Option<&Name>, mode: LookupMode, - mut callback: impl FnMut(ReceiverAdjustments, AssocItemId) -> Option, + mut callback: impl FnMut(ReceiverAdjustments, AssocItemId, bool) -> Option, ) -> Option { let mut slot = None; iterate_method_candidates_dyn( @@ -630,9 +636,9 @@ pub(crate) fn iterate_method_candidates( visible_from_module, name, mode, - &mut |adj, item| { + &mut |adj, item, visible| { assert!(slot.is_none()); - if let Some(it) = callback(adj, item) { + if let Some(it) = callback(adj, item, visible) { slot = Some(it); return ControlFlow::Break(()); } @@ -771,7 +777,7 @@ pub fn iterate_path_candidates( name, LookupMode::Path, // the adjustments are not relevant for path lookup - &mut |_, id| callback(id), + &mut |_, id, _| callback(id), ) } @@ -783,7 +789,7 @@ pub fn iterate_method_candidates_dyn( visible_from_module: VisibleFromModule, name: Option<&Name>, mode: LookupMode, - callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { match mode { LookupMode::MethodCall => { @@ -847,7 +853,7 @@ fn iterate_method_candidates_with_autoref( traits_in_scope: &FxHashSet, visible_from_module: VisibleFromModule, name: Option<&Name>, - mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { if receiver_ty.value.is_general_var(Interner, &receiver_ty.binders) { // don't try to resolve methods on unknown types @@ -908,7 +914,7 @@ fn iterate_method_candidates_by_receiver( traits_in_scope: &FxHashSet, visible_from_module: VisibleFromModule, name: Option<&Name>, - mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { let mut table = InferenceTable::new(db, env); let receiver_ty = table.instantiate_canonical(receiver_ty.clone()); @@ -954,7 +960,7 @@ fn iterate_method_candidates_for_self_ty( traits_in_scope: &FxHashSet, visible_from_module: VisibleFromModule, name: Option<&Name>, - mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + mut callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { let mut table = InferenceTable::new(db, env); let self_ty = table.instantiate_canonical(self_ty.clone()); @@ -985,7 +991,7 @@ fn iterate_trait_method_candidates( name: Option<&Name>, receiver_ty: Option<&Ty>, receiver_adjustments: Option, - callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { let db = table.db; let env = table.trait_env.clone(); @@ -1016,9 +1022,11 @@ fn iterate_trait_method_candidates( for &(_, item) in data.items.iter() { // Don't pass a `visible_from_module` down to `is_valid_candidate`, // since only inherent methods should be included into visibility checking. - if !is_valid_candidate(table, name, receiver_ty, item, self_ty, None) { - continue; - } + let visible = match is_valid_candidate(table, name, receiver_ty, item, self_ty, None) { + IsValidCandidate::Yes => true, + IsValidCandidate::NotVisible => false, + IsValidCandidate::No => continue, + }; if !known_implemented { let goal = generic_implements_goal(db, env.clone(), t, &canonical_self_ty); if db.trait_solve(env.krate, goal.cast(Interner)).is_none() { @@ -1026,7 +1034,7 @@ fn iterate_trait_method_candidates( } } known_implemented = true; - callback(receiver_adjustments.clone().unwrap_or_default(), item)?; + callback(receiver_adjustments.clone().unwrap_or_default(), item, visible)?; } } ControlFlow::Continue(()) @@ -1039,7 +1047,7 @@ fn iterate_inherent_methods( receiver_ty: Option<&Ty>, receiver_adjustments: Option, visible_from_module: VisibleFromModule, - callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { let db = table.db; let env = table.trait_env.clone(); @@ -1128,7 +1136,7 @@ fn iterate_inherent_methods( name: Option<&Name>, receiver_ty: Option<&Ty>, receiver_adjustments: Option, - callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, traits: impl Iterator, ) -> ControlFlow<()> { let db = table.db; @@ -1136,9 +1144,13 @@ fn iterate_inherent_methods( let data = db.trait_data(t); for &(_, item) in data.items.iter() { // We don't pass `visible_from_module` as all trait items should be visible. - if is_valid_candidate(table, name, receiver_ty, item, self_ty, None) { - callback(receiver_adjustments.clone().unwrap_or_default(), item)?; - } + let visible = + match is_valid_candidate(table, name, receiver_ty, item, self_ty, None) { + IsValidCandidate::Yes => true, + IsValidCandidate::NotVisible => false, + IsValidCandidate::No => continue, + }; + callback(receiver_adjustments.clone().unwrap_or_default(), item, visible)?; } } ControlFlow::Continue(()) @@ -1152,17 +1164,25 @@ fn iterate_inherent_methods( receiver_ty: Option<&Ty>, receiver_adjustments: Option, visible_from_module: Option, - callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId) -> ControlFlow<()>, + callback: &mut dyn FnMut(ReceiverAdjustments, AssocItemId, bool) -> ControlFlow<()>, ) -> ControlFlow<()> { let db = table.db; let impls_for_self_ty = impls.for_self_ty(self_ty); for &impl_def in impls_for_self_ty { for &item in &db.impl_data(impl_def).items { - if !is_valid_candidate(table, name, receiver_ty, item, self_ty, visible_from_module) - { - continue; - } - callback(receiver_adjustments.clone().unwrap_or_default(), item)?; + let visible = match is_valid_candidate( + table, + name, + receiver_ty, + item, + self_ty, + visible_from_module, + ) { + IsValidCandidate::Yes => true, + IsValidCandidate::NotVisible => false, + IsValidCandidate::No => continue, + }; + callback(receiver_adjustments.clone().unwrap_or_default(), item, visible)?; } } ControlFlow::Continue(()) @@ -1191,7 +1211,7 @@ pub fn resolve_indexing_op( macro_rules! check_that { ($cond:expr) => { if !$cond { - return false; + return IsValidCandidate::No; } }; } @@ -1203,7 +1223,7 @@ fn is_valid_candidate( item: AssocItemId, self_ty: &Ty, visible_from_module: Option, -) -> bool { +) -> IsValidCandidate { let db = table.db; match item { AssocItemId::FunctionId(m) => { @@ -1214,13 +1234,13 @@ fn is_valid_candidate( check_that!(receiver_ty.is_none()); check_that!(name.map_or(true, |n| data.name.as_ref() == Some(n))); - check_that!(visible_from_module.map_or(true, |from_module| { - let v = db.const_visibility(c).is_visible_from(db.upcast(), from_module); - if !v { + + if let Some(from_module) = visible_from_module { + if !db.const_visibility(c).is_visible_from(db.upcast(), from_module) { cov_mark::hit!(const_candidate_not_visible); + return IsValidCandidate::NotVisible; } - v - })); + } if let ItemContainerId::ImplId(impl_id) = c.lookup(db.upcast()).container { let self_ty_matches = table.run_in_snapshot(|table| { let expected_self_ty = TyBuilder::impl_self_ty(db, impl_id) @@ -1230,15 +1250,21 @@ fn is_valid_candidate( }); if !self_ty_matches { cov_mark::hit!(const_candidate_self_type_mismatch); - return false; + return IsValidCandidate::No; } } - true + IsValidCandidate::Yes } - _ => false, + _ => IsValidCandidate::No, } } +enum IsValidCandidate { + Yes, + No, + NotVisible, +} + fn is_valid_fn_candidate( table: &mut InferenceTable<'_>, fn_id: FunctionId, @@ -1246,19 +1272,17 @@ fn is_valid_fn_candidate( receiver_ty: Option<&Ty>, self_ty: &Ty, visible_from_module: Option, -) -> bool { +) -> IsValidCandidate { let db = table.db; let data = db.function_data(fn_id); check_that!(name.map_or(true, |n| n == &data.name)); - check_that!(visible_from_module.map_or(true, |from_module| { - let v = db.function_visibility(fn_id).is_visible_from(db.upcast(), from_module); - if !v { + if let Some(from_module) = visible_from_module { + if !db.function_visibility(fn_id).is_visible_from(db.upcast(), from_module) { cov_mark::hit!(autoderef_candidate_not_visible); + return IsValidCandidate::NotVisible; } - v - })); - + } table.run_in_snapshot(|table| { let container = fn_id.lookup(db.upcast()).container; let (impl_subst, expect_self_ty) = match container { @@ -1297,7 +1321,7 @@ fn is_valid_fn_candidate( // We need to consider the bounds on the impl to distinguish functions of the same name // for a type. let predicates = db.generic_predicates(impl_id.into()); - predicates + let valid = predicates .iter() .map(|predicate| { let (p, b) = predicate @@ -1312,12 +1336,16 @@ fn is_valid_fn_candidate( // It's ok to get ambiguity here, as we may not have enough information to prove // obligations. We'll check if the user is calling the selected method properly // later anyway. - .all(|p| table.try_obligation(p.cast(Interner)).is_some()) + .all(|p| table.try_obligation(p.cast(Interner)).is_some()); + match valid { + true => IsValidCandidate::Yes, + false => IsValidCandidate::No, + } } else { // For `ItemContainerId::TraitId`, we check if `self_ty` implements the trait in // `iterate_trait_method_candidates()`. // For others, this function shouldn't be called. - true + IsValidCandidate::Yes } }) } diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 3f8acdfd2ff9..ede0c0c98868 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -3274,7 +3274,7 @@ impl Type { with_local_impls.and_then(|b| b.id.containing_block()).into(), name, method_resolution::LookupMode::MethodCall, - &mut |_adj, id| callback(id), + &mut |_adj, id, _| callback(id), ); } From a29425c6d41db7d356d4fc8acddc2e3a497961ab Mon Sep 17 00:00:00 2001 From: Kathryn Long Date: Fri, 30 Dec 2022 23:56:18 -0500 Subject: [PATCH 198/478] Stabilize f16c_target_feature --- compiler/rustc_codegen_ssa/src/target_features.rs | 3 +-- compiler/rustc_feature/src/accepted.rs | 2 ++ compiler/rustc_feature/src/active.rs | 1 - library/core/src/lib.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_codegen_ssa/src/target_features.rs b/compiler/rustc_codegen_ssa/src/target_features.rs index da69fc8ecf77..739963fffd13 100644 --- a/compiler/rustc_codegen_ssa/src/target_features.rs +++ b/compiler/rustc_codegen_ssa/src/target_features.rs @@ -187,7 +187,7 @@ const X86_ALLOWED_FEATURES: &[(&str, Option)] = &[ ("bmi2", None), ("cmpxchg16b", Some(sym::cmpxchg16b_target_feature)), ("ermsb", Some(sym::ermsb_target_feature)), - ("f16c", Some(sym::f16c_target_feature)), + ("f16c", None), ("fma", None), ("fxsr", None), ("gfni", Some(sym::avx512_target_feature)), @@ -396,7 +396,6 @@ pub fn from_target_feature( Some(sym::cmpxchg16b_target_feature) => rust_features.cmpxchg16b_target_feature, Some(sym::movbe_target_feature) => rust_features.movbe_target_feature, Some(sym::rtm_target_feature) => rust_features.rtm_target_feature, - Some(sym::f16c_target_feature) => rust_features.f16c_target_feature, Some(sym::ermsb_target_feature) => rust_features.ermsb_target_feature, Some(sym::bpf_target_feature) => rust_features.bpf_target_feature, Some(sym::aarch64_ver_target_feature) => rust_features.aarch64_ver_target_feature, diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs index e2f30fb89b91..fcbc5bacfccc 100644 --- a/compiler/rustc_feature/src/accepted.rs +++ b/compiler/rustc_feature/src/accepted.rs @@ -161,6 +161,8 @@ declare_features! ( (accepted, extern_crate_self, "1.34.0", Some(56409), None), /// Allows access to crate names passed via `--extern` through prelude. (accepted, extern_prelude, "1.30.0", Some(44660), None), + /// Allows using F16C intrinsics from `core::arch::{x86, x86_64}`. + (accepted, f16c_target_feature, "CURRENT_RUSTC_VERSION", Some(44839), None), /// Allows field shorthands (`x` meaning `x: x`) in struct literal expressions. (accepted, field_init_shorthand, "1.17.0", Some(37340), None), /// Allows `#[must_use]` on functions, and introduces must-use operators (RFC 1940). diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index 34fc62e0549d..0165840d1b26 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -256,7 +256,6 @@ declare_features! ( (active, bpf_target_feature, "1.54.0", Some(44839), None), (active, cmpxchg16b_target_feature, "1.32.0", Some(44839), None), (active, ermsb_target_feature, "1.49.0", Some(44839), None), - (active, f16c_target_feature, "1.36.0", Some(44839), None), (active, hexagon_target_feature, "1.27.0", Some(44839), None), (active, mips_target_feature, "1.27.0", Some(44839), None), (active, movbe_target_feature, "1.34.0", Some(44839), None), diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs index 890d7df8e179..5be84a4e6b96 100644 --- a/library/core/src/lib.rs +++ b/library/core/src/lib.rs @@ -238,7 +238,6 @@ #![feature(arm_target_feature)] #![feature(avx512_target_feature)] #![feature(cmpxchg16b_target_feature)] -#![feature(f16c_target_feature)] #![feature(hexagon_target_feature)] #![feature(mips_target_feature)] #![feature(powerpc_target_feature)] @@ -247,6 +246,7 @@ #![feature(sse4a_target_feature)] #![feature(tbm_target_feature)] #![feature(wasm_target_feature)] +#![cfg_attr(bootstrap, feature(f16c_target_feature))] // allow using `core::` in intra-doc links #[allow(unused_extern_crates)] From 0430b68398ef19d17f183ac4d6502612df5b4774 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sat, 31 Dec 2022 16:17:38 +0900 Subject: [PATCH 199/478] Remove unused known `Name`s --- crates/hir-expand/src/name.rs | 38 ----------------------------------- 1 file changed, 38 deletions(-) diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index beff3f6ad962..499654254330 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -338,44 +338,6 @@ pub mod known { test_case, recursion_limit, feature, - // Safe intrinsics - abort, - add_with_overflow, - black_box, - bitreverse, - bswap, - caller_location, - ctlz, - ctpop, - cttz, - discriminant_value, - forget, - likely, - maxnumf32, - maxnumf64, - min_align_of_val, - min_align_of, - minnumf32, - minnumf64, - mul_with_overflow, - needs_drop, - ptr_guaranteed_eq, - ptr_guaranteed_ne, - rotate_left, - rotate_right, - rustc_peek, - saturating_add, - saturating_sub, - size_of_val, - size_of, - sub_with_overflow, - type_id, - type_name, - unlikely, - variant_count, - wrapping_add, - wrapping_mul, - wrapping_sub, // known methods of lang items eq, ne, From b196e5b2f6b211420bb874d1e4c44e58468ff5ed Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Sat, 31 Dec 2022 09:26:58 +0000 Subject: [PATCH 200/478] fixup --- crates/syntax/src/ast/token_ext.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/syntax/src/ast/token_ext.rs b/crates/syntax/src/ast/token_ext.rs index 4ad7cf33cdc2..2cd312e7f4f8 100644 --- a/crates/syntax/src/ast/token_ext.rs +++ b/crates/syntax/src/ast/token_ext.rs @@ -481,8 +481,7 @@ bcde", b"abcde", #[test] fn test_value_underscores() { - #[allow(clippy::approx_constant)] - check_float_value("3.141592653589793_f64", 3.141592653589793_f64); + check_float_value("1.234567891011121_f64", 1.234567891011121_f64); check_float_value("1__0.__0__f32", 10.0); check_int_value("0b__1_0_", 2); check_int_value("1_1_1_1_1_1", 111111); From 7a64a51818d73b36ca4fd2ff2bbcdabe3dcd9a5c Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Sat, 31 Dec 2022 02:14:20 -0800 Subject: [PATCH 201/478] Fix typo --- book/src/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/src/installation.md b/book/src/installation.md index b2a28d0be622..cce888b17d4d 100644 --- a/book/src/installation.md +++ b/book/src/installation.md @@ -1,6 +1,6 @@ # Installation -If you're using `rustup` to install and manage you're Rust toolchains, Clippy is +If you're using `rustup` to install and manage your Rust toolchains, Clippy is usually **already installed**. In that case you can skip this chapter and go to the [Usage] chapter. From 1d782a90958ec42aab87eb09dd84b1374945ec97 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sat, 31 Dec 2022 11:42:44 +0100 Subject: [PATCH 202/478] Add test for private method inference fallback --- crates/hir-ty/src/tests/method_resolution.rs | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/hir-ty/src/tests/method_resolution.rs b/crates/hir-ty/src/tests/method_resolution.rs index b6958c362c7a..6c7a5329970d 100644 --- a/crates/hir-ty/src/tests/method_resolution.rs +++ b/crates/hir-ty/src/tests/method_resolution.rs @@ -1896,3 +1896,24 @@ impl dyn Error + Send { "#, ); } + +#[test] +fn fallback_private_methods() { + check( + r#" +mod module { + pub struct Struct; + + impl Struct { + fn func(&self) {} + } +} + +fn foo() { + let s = module::Struct; + s.func(); + //^^^^^^^^ type: () +} +"#, + ); +} From ec125fe46af50a552b1045da1a1f1c5b08b2ade2 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sat, 31 Dec 2022 12:08:25 +0100 Subject: [PATCH 203/478] Improve exit point highlighting for non-loop loops in tail position --- crates/ide-db/src/syntax_helpers/node_ext.rs | 15 ++++++++------- crates/ide/src/highlight_related.rs | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs index 347e87ce9720..b72003ff3633 100644 --- a/crates/ide-db/src/syntax_helpers/node_ext.rs +++ b/crates/ide-db/src/syntax_helpers/node_ext.rs @@ -252,6 +252,11 @@ pub fn is_pattern_cond(expr: ast::Expr) -> bool { /// Note that modifying the tree while iterating it will cause undefined iteration which might /// potentially results in an out of bounds panic. pub fn for_each_tail_expr(expr: &ast::Expr, cb: &mut dyn FnMut(&ast::Expr)) { + let walk_loop = |cb: &mut dyn FnMut(&ast::Expr), label, body: Option| { + for_each_break_expr(label, body.and_then(|it| it.stmt_list()), &mut |b| { + cb(&ast::Expr::BreakExpr(b)) + }) + }; match expr { ast::Expr::BlockExpr(b) => { match b.modifier() { @@ -291,11 +296,9 @@ pub fn for_each_tail_expr(expr: &ast::Expr, cb: &mut dyn FnMut(&ast::Expr)) { } } } - ast::Expr::LoopExpr(l) => { - for_each_break_expr(l.label(), l.loop_body().and_then(|it| it.stmt_list()), &mut |b| { - cb(&ast::Expr::BreakExpr(b)) - }) - } + ast::Expr::LoopExpr(l) => walk_loop(cb, l.label(), l.loop_body()), + ast::Expr::WhileExpr(w) => walk_loop(cb, w.label(), w.loop_body()), + ast::Expr::ForExpr(f) => walk_loop(cb, f.label(), f.loop_body()), ast::Expr::MatchExpr(m) => { if let Some(arms) = m.match_arm_list() { arms.arms().filter_map(|arm| arm.expr()).for_each(|e| for_each_tail_expr(&e, cb)); @@ -311,7 +314,6 @@ pub fn for_each_tail_expr(expr: &ast::Expr, cb: &mut dyn FnMut(&ast::Expr)) { | ast::Expr::ClosureExpr(_) | ast::Expr::ContinueExpr(_) | ast::Expr::FieldExpr(_) - | ast::Expr::ForExpr(_) | ast::Expr::IndexExpr(_) | ast::Expr::Literal(_) | ast::Expr::MacroExpr(_) @@ -325,7 +327,6 @@ pub fn for_each_tail_expr(expr: &ast::Expr, cb: &mut dyn FnMut(&ast::Expr)) { | ast::Expr::ReturnExpr(_) | ast::Expr::TryExpr(_) | ast::Expr::TupleExpr(_) - | ast::Expr::WhileExpr(_) | ast::Expr::LetExpr(_) | ast::Expr::UnderscoreExpr(_) | ast::Expr::YieldExpr(_) diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs index 540a115832d3..28f65a11cfa6 100644 --- a/crates/ide/src/highlight_related.rs +++ b/crates/ide/src/highlight_related.rs @@ -765,6 +765,23 @@ fn foo() ->$0 u32 { ); } + #[test] + fn test_hl_inner_tail_exit_points_loops() { + check( + r#" +fn foo() ->$0 u32 { + 'foo: while { return 0; true } { + // ^^^^^^ + break 'foo 0; + // ^^^^^ + return 0; + // ^^^^^^ + } +} +"#, + ); + } + #[test] fn test_hl_break_loop() { check( From 332dd6ad6ec0992137f515845ae832fb807123e8 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Sat, 31 Dec 2022 22:08:53 +0900 Subject: [PATCH 204/478] fix: merge multiple intersecting ranges --- Cargo.lock | 1 + crates/ide-assists/Cargo.toml | 1 + .../src/handlers/extract_module.rs | 82 ++++++++++++++----- 3 files changed, 64 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 275b77ce4ae4..4c255b12b7f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -655,6 +655,7 @@ dependencies = [ "ide-db", "itertools", "profile", + "smallvec", "sourcegen", "stdx", "syntax", diff --git a/crates/ide-assists/Cargo.toml b/crates/ide-assists/Cargo.toml index e781c0a016d5..b9260473b12d 100644 --- a/crates/ide-assists/Cargo.toml +++ b/crates/ide-assists/Cargo.toml @@ -14,6 +14,7 @@ cov-mark = "2.0.0-pre.1" itertools = "0.10.5" either = "1.7.0" +smallvec = "1.10.0" stdx = { path = "../stdx", version = "0.0.0" } syntax = { path = "../syntax", version = "0.0.0" } diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs index 56834394aeba..81df19082512 100644 --- a/crates/ide-assists/src/handlers/extract_module.rs +++ b/crates/ide-assists/src/handlers/extract_module.rs @@ -10,6 +10,8 @@ use ide_db::{ defs::{Definition, NameClass, NameRefClass}, search::{FileReference, SearchScope}, }; +use itertools::Itertools; +use smallvec::SmallVec; use stdx::format_to; use syntax::{ algo::find_node_at_range, @@ -657,28 +659,23 @@ impl Module { fn check_intersection_and_push( import_paths_to_be_removed: &mut Vec, - import_path: TextRange, + mut import_path: TextRange, ) { - if import_paths_to_be_removed.len() > 0 { - // Text ranges received here for imports are extended to the - // next/previous comma which can cause intersections among them - // and later deletion of these can cause panics similar - // to reported in #11766. So to mitigate it, we - // check for intersection between all current members - // and if it exists we combine both text ranges into - // one - let r = import_paths_to_be_removed - .into_iter() - .position(|it| it.intersect(import_path).is_some()); - match r { - Some(it) => { - import_paths_to_be_removed[it] = import_paths_to_be_removed[it].cover(import_path) - } - None => import_paths_to_be_removed.push(import_path), - } - } else { - import_paths_to_be_removed.push(import_path); + // Text ranges received here for imports are extended to the + // next/previous comma which can cause intersections among them + // and later deletion of these can cause panics similar + // to reported in #11766. So to mitigate it, we + // check for intersection between all current members + // and combine all such ranges into one. + let s: SmallVec<[_; 2]> = import_paths_to_be_removed + .into_iter() + .positions(|it| it.intersect(import_path).is_some()) + .collect(); + for pos in s.into_iter().rev() { + let intersecting_path = import_paths_to_be_removed.swap_remove(pos); + import_path = import_path.cover(intersecting_path); } + import_paths_to_be_removed.push(import_path); } fn does_source_exists_outside_sel_in_same_mod( @@ -1766,4 +1763,49 @@ mod modname { ", ) } + + #[test] + fn test_merge_multiple_intersections() { + check_assist( + extract_module, + r#" +mod dep { + pub struct A; + pub struct B; + pub struct C; +} + +use dep::{A, B, C}; + +$0struct S { + inner: A, + state: C, + condvar: B, +}$0 +"#, + r#" +mod dep { + pub struct A; + pub struct B; + pub struct C; +} + +use dep::{}; + +mod modname { + use super::dep::B; + + use super::dep::C; + + use super::dep::A; + + pub(crate) struct S { + pub(crate) inner: A, + pub(crate) state: C, + pub(crate) condvar: B, + } +} +"#, + ); + } } From e3d144d17fa518d471ebc0c9b6262e62ba2a702c Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sat, 31 Dec 2022 14:20:59 +0100 Subject: [PATCH 205/478] Diagnose private field accesses --- crates/hir-ty/src/infer.rs | 1 + crates/hir-ty/src/infer/expr.rs | 23 +++++--- crates/hir/src/diagnostics.rs | 9 ++- crates/hir/src/lib.rs | 7 ++- .../src/handlers/private_field.rs | 55 +++++++++++++++++++ crates/ide-diagnostics/src/lib.rs | 2 + 6 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 crates/ide-diagnostics/src/handlers/private_field.rs diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 18e45511a4b4..e38c2154413b 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -208,6 +208,7 @@ pub(crate) type InferResult = Result, TypeError>; #[derive(Debug, PartialEq, Eq, Clone)] pub enum InferenceDiagnostic { NoSuchField { expr: ExprId }, + PrivateField { expr: ExprId, field: FieldId }, BreakOutsideOfLoop { expr: ExprId, is_break: bool }, MismatchedArgCount { call_expr: ExprId, expected: usize, found: usize }, } diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 53fc7a5949d0..4881e7c8fc72 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -1,7 +1,6 @@ //! Type inference for expressions. use std::{ - collections::hash_map::Entry, iter::{repeat, repeat_with}, mem, }; @@ -521,6 +520,7 @@ impl<'a> InferenceContext<'a> { let receiver_ty = self.infer_expr_inner(*expr, &Expectation::none()); let mut autoderef = Autoderef::new(&mut self.table, receiver_ty); + let mut private_field = None; let ty = autoderef.by_ref().find_map(|(derefed_ty, _)| { let (field_id, parameters) = match derefed_ty.kind(Interner) { TyKind::Tuple(_, substs) => { @@ -547,13 +547,8 @@ impl<'a> InferenceContext<'a> { let is_visible = self.db.field_visibilities(field_id.parent)[field_id.local_id] .is_visible_from(self.db.upcast(), self.resolver.module()); if !is_visible { - // Write down the first field resolution even if it is not visible - // This aids IDE features for private fields like goto def and in - // case of autoderef finding an applicable field, this will be - // overwritten in a following cycle - if let Entry::Vacant(entry) = self.result.field_resolutions.entry(tgt_expr) - { - entry.insert(field_id); + if private_field.is_none() { + private_field = Some(field_id); } return None; } @@ -572,7 +567,17 @@ impl<'a> InferenceContext<'a> { let ty = self.normalize_associated_types_in(ty); ty } - _ => self.err_ty(), + _ => { + // Write down the first private field resolution if we found no field + // This aids IDE features for private fields like goto def + if let Some(field) = private_field { + self.result.field_resolutions.insert(tgt_expr, field); + self.result + .diagnostics + .push(InferenceDiagnostic::PrivateField { expr: tgt_expr, field }); + } + self.err_ty() + } }; ty } diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs index c5dc60f1ec5f..baeb525effe4 100644 --- a/crates/hir/src/diagnostics.rs +++ b/crates/hir/src/diagnostics.rs @@ -10,7 +10,7 @@ use hir_def::path::ModPath; use hir_expand::{name::Name, HirFileId, InFile}; use syntax::{ast, AstPtr, SyntaxNodePtr, TextRange}; -use crate::{MacroKind, Type}; +use crate::{Field, MacroKind, Type}; macro_rules! diagnostics { ($($diag:ident,)*) => { @@ -41,6 +41,7 @@ diagnostics![ MissingMatchArms, MissingUnsafe, NoSuchField, + PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch, UnimplementedBuiltinMacro, @@ -121,6 +122,12 @@ pub struct NoSuchField { pub field: InFile>, } +#[derive(Debug)] +pub struct PrivateField { + pub expr: InFile>, + pub field: Field, +} + #[derive(Debug)] pub struct BreakOutsideOfLoop { pub expr: InFile>, diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index ede0c0c98868..e8e623e7d61a 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -85,7 +85,7 @@ pub use crate::{ diagnostics::{ AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, IncorrectCase, InvalidDeriveTarget, MacroError, MalformedDerive, MismatchedArgCount, MissingFields, MissingMatchArms, - MissingUnsafe, NoSuchField, ReplaceFilterMapNextWithFindMap, TypeMismatch, + MissingUnsafe, NoSuchField, PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch, UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, UnresolvedModule, UnresolvedProcMacro, }, @@ -1353,6 +1353,11 @@ impl DefWithBody { Err(SyntheticSyntax) => (), } } + &hir_ty::InferenceDiagnostic::PrivateField { expr, field } => { + let expr = source_map.expr_syntax(expr).expect("unexpected synthetic"); + let field = field.into(); + acc.push(PrivateField { expr, field }.into()) + } } } for (expr, mismatch) in infer.expr_type_mismatches() { diff --git a/crates/ide-diagnostics/src/handlers/private_field.rs b/crates/ide-diagnostics/src/handlers/private_field.rs new file mode 100644 index 000000000000..3db5eca07bfc --- /dev/null +++ b/crates/ide-diagnostics/src/handlers/private_field.rs @@ -0,0 +1,55 @@ +use crate::{Diagnostic, DiagnosticsContext}; + +// Diagnostic: private-field +// +// This diagnostic is triggered if created structure does not have field provided in record. +pub(crate) fn private_field(ctx: &DiagnosticsContext<'_>, d: &hir::PrivateField) -> Diagnostic { + // FIXME: add quickfix + Diagnostic::new( + "private-field", + format!( + "field `{}` of `{}` is private", + d.field.name(ctx.sema.db), + d.field.parent_def(ctx.sema.db).name(ctx.sema.db) + ), + ctx.sema.diagnostics_display_range(d.expr.clone().map(|it| it.into())).range, + ) +} + +#[cfg(test)] +mod tests { + use crate::tests::check_diagnostics; + + #[test] + fn private_field() { + check_diagnostics( + r#" +mod module { pub struct Struct { field: u32 } } +fn main(s: module::Struct) { + s.field; + //^^^^^^^ error: field `field` of `Struct` is private +} +"#, + ); + } + + #[test] + fn private_but_shadowed_in_deref() { + check_diagnostics( + r#" +//- minicore: deref +mod module { + pub struct Struct { field: Inner } + pub struct Inner { pub field: u32 } + impl core::ops::Deref for Struct { + type Target = Inner; + fn deref(&self) -> &Inner { &self.field } + } +} +fn main(s: module::Struct) { + s.field; +} +"#, + ); + } +} diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs index b244666d1c0e..91555e01b9ca 100644 --- a/crates/ide-diagnostics/src/lib.rs +++ b/crates/ide-diagnostics/src/lib.rs @@ -37,6 +37,7 @@ mod handlers { pub(crate) mod missing_match_arms; pub(crate) mod missing_unsafe; pub(crate) mod no_such_field; + pub(crate) mod private_field; pub(crate) mod replace_filter_map_next_with_find_map; pub(crate) mod type_mismatch; pub(crate) mod unimplemented_builtin_macro; @@ -254,6 +255,7 @@ pub fn diagnostics( AnyDiagnostic::MissingMatchArms(d) => handlers::missing_match_arms::missing_match_arms(&ctx, &d), AnyDiagnostic::MissingUnsafe(d) => handlers::missing_unsafe::missing_unsafe(&ctx, &d), AnyDiagnostic::NoSuchField(d) => handlers::no_such_field::no_such_field(&ctx, &d), + AnyDiagnostic::PrivateField(d) => handlers::private_field::private_field(&ctx, &d), AnyDiagnostic::ReplaceFilterMapNextWithFindMap(d) => handlers::replace_filter_map_next_with_find_map::replace_filter_map_next_with_find_map(&ctx, &d), AnyDiagnostic::TypeMismatch(d) => handlers::type_mismatch::type_mismatch(&ctx, &d), AnyDiagnostic::UnimplementedBuiltinMacro(d) => handlers::unimplemented_builtin_macro::unimplemented_builtin_macro(&ctx, &d), From da7c99b81e7f863539a88f0d6ad2b79076d425f0 Mon Sep 17 00:00:00 2001 From: Samuel Moelius Date: Sun, 1 Jan 2023 06:21:28 -0500 Subject: [PATCH 206/478] Fix typo in `unused_self` diagnostic message --- clippy_lints/src/unused_self.rs | 2 +- tests/ui/unused_self.stderr | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clippy_lints/src/unused_self.rs b/clippy_lints/src/unused_self.rs index 42bccc7212b3..18231b6a7e86 100644 --- a/clippy_lints/src/unused_self.rs +++ b/clippy_lints/src/unused_self.rs @@ -72,7 +72,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedSelf { self_param.span, "unused `self` argument", None, - "consider refactoring to a associated function", + "consider refactoring to an associated function", ); } } diff --git a/tests/ui/unused_self.stderr b/tests/ui/unused_self.stderr index 23186122a9af..919f9b6efdab 100644 --- a/tests/ui/unused_self.stderr +++ b/tests/ui/unused_self.stderr @@ -4,7 +4,7 @@ error: unused `self` argument LL | fn unused_self_move(self) {} | ^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function = note: `-D clippy::unused-self` implied by `-D warnings` error: unused `self` argument @@ -13,7 +13,7 @@ error: unused `self` argument LL | fn unused_self_ref(&self) {} | ^^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:13:32 @@ -21,7 +21,7 @@ error: unused `self` argument LL | fn unused_self_mut_ref(&mut self) {} | ^^^^^^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:14:32 @@ -29,7 +29,7 @@ error: unused `self` argument LL | fn unused_self_pin_ref(self: Pin<&Self>) {} | ^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:15:36 @@ -37,7 +37,7 @@ error: unused `self` argument LL | fn unused_self_pin_mut_ref(self: Pin<&mut Self>) {} | ^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:16:35 @@ -45,7 +45,7 @@ error: unused `self` argument LL | fn unused_self_pin_nested(self: Pin>) {} | ^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:17:28 @@ -53,7 +53,7 @@ error: unused `self` argument LL | fn unused_self_box(self: Box) {} | ^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:18:40 @@ -61,7 +61,7 @@ error: unused `self` argument LL | fn unused_with_other_used_args(&self, x: u8, y: u8) -> u8 { | ^^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: unused `self` argument --> $DIR/unused_self.rs:21:37 @@ -69,7 +69,7 @@ error: unused `self` argument LL | fn unused_self_class_method(&self) { | ^^^^^ | - = help: consider refactoring to a associated function + = help: consider refactoring to an associated function error: aborting due to 9 previous errors From eee7de0225603387064fa63768f782b66b7e6018 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 1 Jan 2023 13:24:48 +0100 Subject: [PATCH 207/478] Diagnose private assoc item accesses --- crates/hir-def/src/expr.rs | 7 + crates/hir-ty/src/infer.rs | 12 +- crates/hir-ty/src/infer/expr.rs | 10 +- crates/hir-ty/src/infer/path.rs | 14 +- crates/hir-ty/src/method_resolution.rs | 8 +- crates/hir/src/diagnostics.rs | 10 +- crates/hir/src/lib.rs | 23 +++- .../src/handlers/private_assoc_item.rs | 124 ++++++++++++++++++ .../src/handlers/private_field.rs | 15 ++- crates/ide-diagnostics/src/lib.rs | 2 + 10 files changed, 199 insertions(+), 26 deletions(-) create mode 100644 crates/ide-diagnostics/src/handlers/private_assoc_item.rs diff --git a/crates/hir-def/src/expr.rs b/crates/hir-def/src/expr.rs index 3066213ace8e..7b6569421195 100644 --- a/crates/hir-def/src/expr.rs +++ b/crates/hir-def/src/expr.rs @@ -36,6 +36,13 @@ pub(crate) fn dummy_expr_id() -> ExprId { pub type PatId = Idx; +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ExprOrPatId { + ExprId(ExprId), + PatId(PatId), +} +stdx::impl_from!(ExprId, PatId for ExprOrPatId); + #[derive(Debug, Clone, Eq, PartialEq)] pub struct Label { pub name: Name, diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index e38c2154413b..7b54886d53f8 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -21,7 +21,7 @@ use hir_def::{ body::Body, builtin_type::{BuiltinInt, BuiltinType, BuiltinUint}, data::{ConstData, StaticData}, - expr::{BindingAnnotation, ExprId, PatId}, + expr::{BindingAnnotation, ExprId, ExprOrPatId, PatId}, lang_item::LangItemTarget, layout::Integer, path::{path, Path}, @@ -34,7 +34,7 @@ use hir_expand::name::{name, Name}; use itertools::Either; use la_arena::ArenaMap; use rustc_hash::FxHashMap; -use stdx::{always, impl_from}; +use stdx::always; use crate::{ db::HirDatabase, fold_tys, fold_tys_and_consts, infer::coerce::CoerceMany, @@ -120,13 +120,6 @@ pub(crate) fn normalize(db: &dyn HirDatabase, owner: DefWithBodyId, ty: Ty) -> T table.resolve_completely(ty_with_vars) } -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -enum ExprOrPatId { - ExprId(ExprId), - PatId(PatId), -} -impl_from!(ExprId, PatId for ExprOrPatId); - /// Binding modes inferred for patterns. /// #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -209,6 +202,7 @@ pub(crate) type InferResult = Result, TypeError>; pub enum InferenceDiagnostic { NoSuchField { expr: ExprId }, PrivateField { expr: ExprId, field: FieldId }, + PrivateAssocItem { id: ExprOrPatId, item: AssocItemId }, BreakOutsideOfLoop { expr: ExprId, is_break: bool }, MismatchedArgCount { call_expr: ExprId, expected: usize, found: usize }, } diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 4881e7c8fc72..a5dd02067642 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -1142,20 +1142,26 @@ impl<'a> InferenceContext<'a> { let traits_in_scope = self.resolver.traits_in_scope(self.db.upcast()); let resolved = method_resolution::lookup_method( - &canonicalized_receiver.value, self.db, + &canonicalized_receiver.value, self.trait_env.clone(), &traits_in_scope, VisibleFromModule::Filter(self.resolver.module()), method_name, ); let (receiver_ty, method_ty, substs) = match resolved { - Some((adjust, func)) => { + Some((adjust, func, visible)) => { let (ty, adjustments) = adjust.apply(&mut self.table, receiver_ty); let generics = generics(self.db.upcast(), func.into()); let substs = self.substs_for_method_call(generics, generic_args); self.write_expr_adj(receiver, adjustments); self.write_method_resolution(tgt_expr, func, substs.clone()); + if !visible { + self.push_diagnostic(InferenceDiagnostic::PrivateAssocItem { + id: tgt_expr.into(), + item: func.into(), + }) + } (ty, self.db.value_ty(func.into()), substs) } None => ( diff --git a/crates/hir-ty/src/infer/path.rs b/crates/hir-ty/src/infer/path.rs index dc645f840eea..8bd17c0f39f4 100644 --- a/crates/hir-ty/src/infer/path.rs +++ b/crates/hir-ty/src/infer/path.rs @@ -14,7 +14,8 @@ use crate::{ consteval, method_resolution::{self, VisibleFromModule}, utils::generics, - Interner, Substitution, TraitRefExt, Ty, TyBuilder, TyExt, TyKind, ValueTyDefId, + InferenceDiagnostic, Interner, Substitution, TraitRefExt, Ty, TyBuilder, TyExt, TyKind, + ValueTyDefId, }; use super::{ExprOrPatId, InferenceContext, TraitRef}; @@ -279,20 +280,23 @@ impl<'a> InferenceContext<'a> { }; if visible { - Some((def, item, Some(substs))) + Some((def, item, Some(substs), true)) } else { if not_visible.is_none() { - not_visible = Some((def, item, Some(substs))); + not_visible = Some((def, item, Some(substs), false)); } None } }, ); let res = res.or(not_visible); - if let Some((_, item, Some(ref substs))) = res { + if let Some((_, item, Some(ref substs), visible)) = res { self.write_assoc_resolution(id, item, substs.clone()); + if !visible { + self.push_diagnostic(InferenceDiagnostic::PrivateAssocItem { id, item }) + } } - res.map(|(def, _, substs)| (def, substs)) + res.map(|(def, _, substs, _)| (def, substs)) } fn resolve_enum_variant_on_ty( diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 2d162bc38e45..2f5fa3083c7a 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -488,13 +488,13 @@ pub fn lang_names_for_bin_op(op: syntax::ast::BinaryOp) -> Option<(Name, Name)> /// Look up the method with the given name. pub(crate) fn lookup_method( - ty: &Canonical, db: &dyn HirDatabase, + ty: &Canonical, env: Arc, traits_in_scope: &FxHashSet, visible_from_module: VisibleFromModule, name: &Name, -) -> Option<(ReceiverAdjustments, FunctionId)> { +) -> Option<(ReceiverAdjustments, FunctionId, bool)> { let mut not_visible = None; let res = iterate_method_candidates( ty, @@ -505,9 +505,9 @@ pub(crate) fn lookup_method( Some(name), LookupMode::MethodCall, |adjustments, f, visible| match f { - AssocItemId::FunctionId(f) if visible => Some((adjustments, f)), + AssocItemId::FunctionId(f) if visible => Some((adjustments, f, true)), AssocItemId::FunctionId(f) if not_visible.is_none() => { - not_visible = Some((adjustments, f)); + not_visible = Some((adjustments, f, false)); None } _ => None, diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs index baeb525effe4..54d43fa8dc73 100644 --- a/crates/hir/src/diagnostics.rs +++ b/crates/hir/src/diagnostics.rs @@ -10,7 +10,7 @@ use hir_def::path::ModPath; use hir_expand::{name::Name, HirFileId, InFile}; use syntax::{ast, AstPtr, SyntaxNodePtr, TextRange}; -use crate::{Field, MacroKind, Type}; +use crate::{AssocItem, Field, MacroKind, Type}; macro_rules! diagnostics { ($($diag:ident,)*) => { @@ -41,6 +41,7 @@ diagnostics![ MissingMatchArms, MissingUnsafe, NoSuchField, + PrivateAssocItem, PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch, @@ -122,6 +123,13 @@ pub struct NoSuchField { pub field: InFile>, } +#[derive(Debug)] +pub struct PrivateAssocItem { + pub expr_or_pat: + InFile, Either, AstPtr>>>, + pub item: AssocItem, +} + #[derive(Debug)] pub struct PrivateField { pub expr: InFile>, diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index e8e623e7d61a..86fd45e82469 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -41,7 +41,7 @@ use either::Either; use hir_def::{ adt::VariantData, body::{BodyDiagnostic, SyntheticSyntax}, - expr::{BindingAnnotation, LabelId, Pat, PatId}, + expr::{BindingAnnotation, ExprOrPatId, LabelId, Pat, PatId}, generics::{TypeOrConstParamData, TypeParamProvenance}, item_tree::ItemTreeNode, lang_item::LangItemTarget, @@ -85,9 +85,10 @@ pub use crate::{ diagnostics::{ AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, IncorrectCase, InvalidDeriveTarget, MacroError, MalformedDerive, MismatchedArgCount, MissingFields, MissingMatchArms, - MissingUnsafe, NoSuchField, PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch, - UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, - UnresolvedModule, UnresolvedProcMacro, + MissingUnsafe, NoSuchField, PrivateAssocItem, PrivateField, + ReplaceFilterMapNextWithFindMap, TypeMismatch, UnimplementedBuiltinMacro, + UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, UnresolvedModule, + UnresolvedProcMacro, }, has_source::HasSource, semantics::{PathResolution, Semantics, SemanticsScope, TypeInfo, VisibleTraits}, @@ -1358,6 +1359,20 @@ impl DefWithBody { let field = field.into(); acc.push(PrivateField { expr, field }.into()) } + &hir_ty::InferenceDiagnostic::PrivateAssocItem { id, item } => { + let expr_or_pat = match id { + ExprOrPatId::ExprId(expr) => source_map + .expr_syntax(expr) + .expect("unexpected synthetic") + .map(Either::Left), + ExprOrPatId::PatId(pat) => source_map + .pat_syntax(pat) + .expect("unexpected synthetic") + .map(Either::Right), + }; + let item = item.into(); + acc.push(PrivateAssocItem { expr_or_pat, item }.into()) + } } } for (expr, mismatch) in infer.expr_type_mismatches() { diff --git a/crates/ide-diagnostics/src/handlers/private_assoc_item.rs b/crates/ide-diagnostics/src/handlers/private_assoc_item.rs new file mode 100644 index 000000000000..b363a516dd1c --- /dev/null +++ b/crates/ide-diagnostics/src/handlers/private_assoc_item.rs @@ -0,0 +1,124 @@ +use either::Either; + +use crate::{Diagnostic, DiagnosticsContext}; + +// Diagnostic: private-assoc-item +// +// This diagnostic is triggered if the referenced associated item is not visible from the current +// module. +pub(crate) fn private_assoc_item( + ctx: &DiagnosticsContext<'_>, + d: &hir::PrivateAssocItem, +) -> Diagnostic { + // FIXME: add quickfix + let name = match d.item.name(ctx.sema.db) { + Some(name) => format!("`{}` ", name), + None => String::new(), + }; + Diagnostic::new( + "private-assoc-item", + format!( + "{} {}is private", + match d.item { + hir::AssocItem::Function(_) => "function", + hir::AssocItem::Const(_) => "const", + hir::AssocItem::TypeAlias(_) => "type alias", + }, + name, + ), + ctx.sema + .diagnostics_display_range(d.expr_or_pat.clone().map(|it| match it { + Either::Left(it) => it.into(), + Either::Right(it) => match it { + Either::Left(it) => it.into(), + Either::Right(it) => it.into(), + }, + })) + .range, + ) +} + +#[cfg(test)] +mod tests { + use crate::tests::check_diagnostics; + + #[test] + fn private_method() { + check_diagnostics( + r#" +mod module { + pub struct Struct; + impl Struct { + fn method(&self) {} + } +} +fn main(s: module::Struct) { + s.method(); + //^^^^^^^^^^ error: function `method` is private +} +"#, + ); + } + + #[test] + fn private_func() { + check_diagnostics( + r#" +mod module { + pub struct Struct; + impl Struct { + fn func() {} + } +} +fn main() { + module::Struct::func(); + //^^^^^^^^^^^^^^^^^^^^ error: function `func` is private +} +"#, + ); + } + + #[test] + fn private_const() { + check_diagnostics( + r#" +mod module { + pub struct Struct; + impl Struct { + const CONST: u32 = 0; + } +} +fn main() { + module::Struct::CONST; + //^^^^^^^^^^^^^^^^^^^^^ error: const `CONST` is private +} +"#, + ); + } + + #[test] + fn private_but_shadowed_in_deref() { + check_diagnostics( + r#" +//- minicore: deref +mod module { + pub struct Struct { field: Inner } + pub struct Inner; + impl core::ops::Deref for Struct { + type Target = Inner; + fn deref(&self) -> &Inner { &self.field } + } + impl Struct { + fn method(&self) {} + } + impl Inner { + pub fn method(&self) {} + } +} +fn main(s: module::Struct) { + s.method(); +} +"#, + ); + } +} diff --git a/crates/ide-diagnostics/src/handlers/private_field.rs b/crates/ide-diagnostics/src/handlers/private_field.rs index 3db5eca07bfc..e630ae36866d 100644 --- a/crates/ide-diagnostics/src/handlers/private_field.rs +++ b/crates/ide-diagnostics/src/handlers/private_field.rs @@ -2,7 +2,7 @@ use crate::{Diagnostic, DiagnosticsContext}; // Diagnostic: private-field // -// This diagnostic is triggered if created structure does not have field provided in record. +// This diagnostic is triggered if the accessed field is not visible from the current module. pub(crate) fn private_field(ctx: &DiagnosticsContext<'_>, d: &hir::PrivateField) -> Diagnostic { // FIXME: add quickfix Diagnostic::new( @@ -33,6 +33,19 @@ fn main(s: module::Struct) { ); } + #[test] + fn private_tuple_field() { + check_diagnostics( + r#" +mod module { pub struct Struct(u32); } +fn main(s: module::Struct) { + s.0; + //^^^ error: field `0` of `Struct` is private +} +"#, + ); + } + #[test] fn private_but_shadowed_in_deref() { check_diagnostics( diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs index 91555e01b9ca..b0231b875408 100644 --- a/crates/ide-diagnostics/src/lib.rs +++ b/crates/ide-diagnostics/src/lib.rs @@ -37,6 +37,7 @@ mod handlers { pub(crate) mod missing_match_arms; pub(crate) mod missing_unsafe; pub(crate) mod no_such_field; + pub(crate) mod private_assoc_item; pub(crate) mod private_field; pub(crate) mod replace_filter_map_next_with_find_map; pub(crate) mod type_mismatch; @@ -255,6 +256,7 @@ pub fn diagnostics( AnyDiagnostic::MissingMatchArms(d) => handlers::missing_match_arms::missing_match_arms(&ctx, &d), AnyDiagnostic::MissingUnsafe(d) => handlers::missing_unsafe::missing_unsafe(&ctx, &d), AnyDiagnostic::NoSuchField(d) => handlers::no_such_field::no_such_field(&ctx, &d), + AnyDiagnostic::PrivateAssocItem(d) => handlers::private_assoc_item::private_assoc_item(&ctx, &d), AnyDiagnostic::PrivateField(d) => handlers::private_field::private_field(&ctx, &d), AnyDiagnostic::ReplaceFilterMapNextWithFindMap(d) => handlers::replace_filter_map_next_with_find_map::replace_filter_map_next_with_find_map(&ctx, &d), AnyDiagnostic::TypeMismatch(d) => handlers::type_mismatch::type_mismatch(&ctx, &d), From 5b46f2db594fc3f2e8c6d8c7f9274ba77736b67c Mon Sep 17 00:00:00 2001 From: chansuke Date: Thu, 22 Dec 2022 22:59:06 +0900 Subject: [PATCH 208/478] chore: fix identation of `if_chain` in `filter_map` --- clippy_lints/src/methods/filter_map.rs | 174 ++++++++++++------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/clippy_lints/src/methods/filter_map.rs b/clippy_lints/src/methods/filter_map.rs index f888c58a72de..fc80f2eeae01 100644 --- a/clippy_lints/src/methods/filter_map.rs +++ b/clippy_lints/src/methods/filter_map.rs @@ -30,12 +30,12 @@ fn is_method(cx: &LateContext<'_>, expr: &hir::Expr<'_>, method_name: Symbol) -> match closure_expr.kind { hir::ExprKind::MethodCall(hir::PathSegment { ident, .. }, receiver, ..) => { if_chain! { - if ident.name == method_name; - if let hir::ExprKind::Path(path) = &receiver.kind; - if let Res::Local(ref local) = cx.qpath_res(path, receiver.hir_id); - then { - return arg_id == *local - } + if ident.name == method_name; + if let hir::ExprKind::Path(path) = &receiver.kind; + if let Res::Local(ref local) = cx.qpath_res(path, receiver.hir_id); + then { + return arg_id == *local + } } false }, @@ -92,92 +92,92 @@ pub(super) fn check( } if_chain! { - if is_trait_method(cx, map_recv, sym::Iterator); + if is_trait_method(cx, map_recv, sym::Iterator); - // filter(|x| ...is_some())... - if let ExprKind::Closure(&Closure { body: filter_body_id, .. }) = filter_arg.kind; - let filter_body = cx.tcx.hir().body(filter_body_id); - if let [filter_param] = filter_body.params; - // optional ref pattern: `filter(|&x| ..)` - let (filter_pat, is_filter_param_ref) = if let PatKind::Ref(ref_pat, _) = filter_param.pat.kind { - (ref_pat, true) + // filter(|x| ...is_some())... + if let ExprKind::Closure(&Closure { body: filter_body_id, .. }) = filter_arg.kind; + let filter_body = cx.tcx.hir().body(filter_body_id); + if let [filter_param] = filter_body.params; + // optional ref pattern: `filter(|&x| ..)` + let (filter_pat, is_filter_param_ref) = if let PatKind::Ref(ref_pat, _) = filter_param.pat.kind { + (ref_pat, true) + } else { + (filter_param.pat, false) + }; + // closure ends with is_some() or is_ok() + if let PatKind::Binding(_, filter_param_id, _, None) = filter_pat.kind; + if let ExprKind::MethodCall(path, filter_arg, [], _) = filter_body.value.kind; + if let Some(opt_ty) = cx.typeck_results().expr_ty(filter_arg).peel_refs().ty_adt_def(); + if let Some(is_result) = if cx.tcx.is_diagnostic_item(sym::Option, opt_ty.did()) { + Some(false) + } else if cx.tcx.is_diagnostic_item(sym::Result, opt_ty.did()) { + Some(true) + } else { + None + }; + if path.ident.name.as_str() == if is_result { "is_ok" } else { "is_some" }; + + // ...map(|x| ...unwrap()) + if let ExprKind::Closure(&Closure { body: map_body_id, .. }) = map_arg.kind; + let map_body = cx.tcx.hir().body(map_body_id); + if let [map_param] = map_body.params; + if let PatKind::Binding(_, map_param_id, map_param_ident, None) = map_param.pat.kind; + // closure ends with expect() or unwrap() + if let ExprKind::MethodCall(seg, map_arg, ..) = map_body.value.kind; + if matches!(seg.ident.name, sym::expect | sym::unwrap | sym::unwrap_or); + + // .filter(..).map(|y| f(y).copied().unwrap()) + // ~~~~ + let map_arg_peeled = match map_arg.kind { + ExprKind::MethodCall(method, original_arg, [], _) if acceptable_methods(method) => { + original_arg + }, + _ => map_arg, + }; + + // .filter(|x| x.is_some()).map(|y| y[.acceptable_method()].unwrap()) + let simple_equal = path_to_local_id(filter_arg, filter_param_id) + && path_to_local_id(map_arg_peeled, map_param_id); + + let eq_fallback = |a: &Expr<'_>, b: &Expr<'_>| { + // in `filter(|x| ..)`, replace `*x` with `x` + let a_path = if_chain! { + if !is_filter_param_ref; + if let ExprKind::Unary(UnOp::Deref, expr_path) = a.kind; + then { expr_path } else { a } + }; + // let the filter closure arg and the map closure arg be equal + path_to_local_id(a_path, filter_param_id) + && path_to_local_id(b, map_param_id) + && cx.typeck_results().expr_ty_adjusted(a) == cx.typeck_results().expr_ty_adjusted(b) + }; + + if simple_equal || SpanlessEq::new(cx).expr_fallback(eq_fallback).eq_expr(filter_arg, map_arg_peeled); + then { + let span = filter_span.with_hi(expr.span.hi()); + let (filter_name, lint) = if is_find { + ("find", MANUAL_FIND_MAP) } else { - (filter_param.pat, false) + ("filter", MANUAL_FILTER_MAP) }; - // closure ends with is_some() or is_ok() - if let PatKind::Binding(_, filter_param_id, _, None) = filter_pat.kind; - if let ExprKind::MethodCall(path, filter_arg, [], _) = filter_body.value.kind; - if let Some(opt_ty) = cx.typeck_results().expr_ty(filter_arg).peel_refs().ty_adt_def(); - if let Some(is_result) = if cx.tcx.is_diagnostic_item(sym::Option, opt_ty.did()) { - Some(false) - } else if cx.tcx.is_diagnostic_item(sym::Result, opt_ty.did()) { - Some(true) + let msg = format!("`{filter_name}(..).map(..)` can be simplified as `{filter_name}_map(..)`"); + let (to_opt, deref) = if is_result { + (".ok()", String::new()) } else { - None + let derefs = cx.typeck_results() + .expr_adjustments(map_arg) + .iter() + .filter(|adj| matches!(adj.kind, Adjust::Deref(_))) + .count(); + + ("", "*".repeat(derefs)) }; - if path.ident.name.as_str() == if is_result { "is_ok" } else { "is_some" }; - - // ...map(|x| ...unwrap()) - if let ExprKind::Closure(&Closure { body: map_body_id, .. }) = map_arg.kind; - let map_body = cx.tcx.hir().body(map_body_id); - if let [map_param] = map_body.params; - if let PatKind::Binding(_, map_param_id, map_param_ident, None) = map_param.pat.kind; - // closure ends with expect() or unwrap() - if let ExprKind::MethodCall(seg, map_arg, ..) = map_body.value.kind; - if matches!(seg.ident.name, sym::expect | sym::unwrap | sym::unwrap_or); - - // .filter(..).map(|y| f(y).copied().unwrap()) - // ~~~~ - let map_arg_peeled = match map_arg.kind { - ExprKind::MethodCall(method, original_arg, [], _) if acceptable_methods(method) => { - original_arg - }, - _ => map_arg, - }; - - // .filter(|x| x.is_some()).map(|y| y[.acceptable_method()].unwrap()) - let simple_equal = path_to_local_id(filter_arg, filter_param_id) - && path_to_local_id(map_arg_peeled, map_param_id); - - let eq_fallback = |a: &Expr<'_>, b: &Expr<'_>| { - // in `filter(|x| ..)`, replace `*x` with `x` - let a_path = if_chain! { - if !is_filter_param_ref; - if let ExprKind::Unary(UnOp::Deref, expr_path) = a.kind; - then { expr_path } else { a } - }; - // let the filter closure arg and the map closure arg be equal - path_to_local_id(a_path, filter_param_id) - && path_to_local_id(b, map_param_id) - && cx.typeck_results().expr_ty_adjusted(a) == cx.typeck_results().expr_ty_adjusted(b) - }; - - if simple_equal || SpanlessEq::new(cx).expr_fallback(eq_fallback).eq_expr(filter_arg, map_arg_peeled); - then { - let span = filter_span.with_hi(expr.span.hi()); - let (filter_name, lint) = if is_find { - ("find", MANUAL_FIND_MAP) - } else { - ("filter", MANUAL_FILTER_MAP) - }; - let msg = format!("`{filter_name}(..).map(..)` can be simplified as `{filter_name}_map(..)`"); - let (to_opt, deref) = if is_result { - (".ok()", String::new()) - } else { - let derefs = cx.typeck_results() - .expr_adjustments(map_arg) - .iter() - .filter(|adj| matches!(adj.kind, Adjust::Deref(_))) - .count(); - - ("", "*".repeat(derefs)) - }; - let sugg = format!( - "{filter_name}_map(|{map_param_ident}| {deref}{}{to_opt})", - snippet(cx, map_arg.span, ".."), - ); - span_lint_and_sugg(cx, lint, span, &msg, "try", sugg, Applicability::MachineApplicable); - } + let sugg = format!( + "{filter_name}_map(|{map_param_ident}| {deref}{}{to_opt})", + snippet(cx, map_arg.span, ".."), + ); + span_lint_and_sugg(cx, lint, span, &msg, "try", sugg, Applicability::MachineApplicable); + } } } From 6145194b687b67e65049ac8d9ec730ebadfc34d7 Mon Sep 17 00:00:00 2001 From: chansuke Date: Thu, 22 Dec 2022 23:30:51 +0900 Subject: [PATCH 209/478] chore: add simple comment for `get_enclosing_block` --- clippy_utils/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index 43e2d1ec826c..c3eb4e229ca0 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -1304,6 +1304,7 @@ pub fn get_parent_expr_for_hir<'tcx>(cx: &LateContext<'tcx>, hir_id: hir::HirId) } } +/// Gets the enclosing block, if any. pub fn get_enclosing_block<'tcx>(cx: &LateContext<'tcx>, hir_id: HirId) -> Option<&'tcx Block<'tcx>> { let map = &cx.tcx.hir(); let enclosing_node = map From 34bc240e94059e7a66a622ebd7dd9c70624d9a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Sun, 1 Jan 2023 18:52:47 +0200 Subject: [PATCH 210/478] Package release artifacts as ZIP --- Cargo.lock | 47 +++++++++++++++++++ crates/rust-analyzer/tests/slow-tests/tidy.rs | 1 + xtask/Cargo.toml | 1 + xtask/src/dist.rs | 38 ++++++++++++++- 4 files changed, 86 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4c255b12b7f1..24dcacdd72f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -112,6 +112,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + [[package]] name = "camino" version = "1.1.1" @@ -1775,6 +1781,33 @@ dependencies = [ "tikv-jemalloc-sys", ] +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2173,4 +2206,18 @@ dependencies = [ "write-json", "xflags", "xshell", + "zip", +] + +[[package]] +name = "zip" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537ce7411d25e54e8ae21a7ce0b15840e7bfcff15b51d697ec3266cc76bdf080" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", + "time", ] diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index 745faf424916..a72c7eb91d7f 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -194,6 +194,7 @@ MIT OR Apache-2.0 MIT OR Apache-2.0 OR Zlib MIT OR Zlib OR Apache-2.0 MIT/Apache-2.0 +Unlicense OR MIT Unlicense/MIT Zlib OR Apache-2.0 OR MIT " diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 95e27beab5dc..2dd01796c6e4 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -12,4 +12,5 @@ flate2 = "1.0.24" write-json = "0.1.2" xshell = "0.2.2" xflags = "0.3.0" +zip = { version = "0.6", default-features = false, features = ["deflate", "time"] } # Avoid adding more dependencies to this crate diff --git a/xtask/src/dist.rs b/xtask/src/dist.rs index 410276bc45be..74715c53eaac 100644 --- a/xtask/src/dist.rs +++ b/xtask/src/dist.rs @@ -1,12 +1,13 @@ use std::{ env, fs::File, - io, + io::{self, BufWriter}, path::{Path, PathBuf}, }; use flate2::{write::GzEncoder, Compression}; use xshell::{cmd, Shell}; +use zip::{write::FileOptions, DateTime, ZipWriter}; use crate::{date_iso, flags, project_root}; @@ -89,6 +90,9 @@ fn dist_server(sh: &Shell, release: &str, target: &Target) -> anyhow::Result<()> let dst = Path::new("dist").join(&target.artifact_name); gzip(&target.server_path, &dst.with_extension("gz"))?; + if target_name.contains("-windows-") { + zip(&target.server_path, target.symbols_path.as_ref(), &dst.with_extension("zip"))?; + } Ok(()) } @@ -101,6 +105,38 @@ fn gzip(src_path: &Path, dest_path: &Path) -> anyhow::Result<()> { Ok(()) } +fn zip(src_path: &Path, symbols_path: Option<&PathBuf>, dest_path: &Path) -> anyhow::Result<()> { + let file = File::create(dest_path)?; + let mut writer = ZipWriter::new(BufWriter::new(file)); + writer.start_file( + src_path.file_name().unwrap().to_str().unwrap(), + FileOptions::default() + .last_modified_time( + DateTime::from_time(std::fs::metadata(src_path)?.modified()?.into()).unwrap(), + ) + .unix_permissions(0o755) + .compression_method(zip::CompressionMethod::Deflated) + .compression_level(Some(9)), + )?; + let mut input = io::BufReader::new(File::open(src_path)?); + io::copy(&mut input, &mut writer)?; + if let Some(symbols_path) = symbols_path { + writer.start_file( + symbols_path.file_name().unwrap().to_str().unwrap(), + FileOptions::default() + .last_modified_time( + DateTime::from_time(std::fs::metadata(src_path)?.modified()?.into()).unwrap(), + ) + .compression_method(zip::CompressionMethod::Deflated) + .compression_level(Some(9)), + )?; + let mut input = io::BufReader::new(File::open(symbols_path)?); + io::copy(&mut input, &mut writer)?; + } + writer.finish()?; + Ok(()) +} + struct Target { name: String, server_path: PathBuf, From 8de011fdf72849e6dc25555bc1800632a66615f6 Mon Sep 17 00:00:00 2001 From: Eric Wu Date: Sun, 1 Jan 2023 21:23:32 -0500 Subject: [PATCH 211/478] don't lint field_reassign when field in closure This commit makes the ContainsName struct visit all interior expressions, which means that ContainsName will return true even if `name` is used in a closure within `expr`. --- clippy_lints/src/copies.rs | 6 +++++- clippy_lints/src/default.rs | 2 +- clippy_lints/src/loops/needless_range_loop.rs | 4 ++-- clippy_utils/src/lib.rs | 21 +++++++++++++++---- tests/ui/field_reassign_with_default.rs | 21 +++++++++++++++++++ 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/clippy_lints/src/copies.rs b/clippy_lints/src/copies.rs index 0e3d9317590f..f10c35cde52a 100644 --- a/clippy_lints/src/copies.rs +++ b/clippy_lints/src/copies.rs @@ -525,7 +525,11 @@ fn check_for_warn_of_moved_symbol(cx: &LateContext<'_>, symbols: &[(HirId, Symbo .iter() .filter(|&&(_, name)| !name.as_str().starts_with('_')) .any(|&(_, name)| { - let mut walker = ContainsName { name, result: false }; + let mut walker = ContainsName { + name, + result: false, + cx, + }; // Scan block block diff --git a/clippy_lints/src/default.rs b/clippy_lints/src/default.rs index 7f937de1dd31..55f6121a09d2 100644 --- a/clippy_lints/src/default.rs +++ b/clippy_lints/src/default.rs @@ -170,7 +170,7 @@ impl<'tcx> LateLintPass<'tcx> for Default { // find out if and which field was set by this `consecutive_statement` if let Some((field_ident, assign_rhs)) = field_reassigned_by_stmt(consecutive_statement, binding_name) { // interrupt and cancel lint if assign_rhs references the original binding - if contains_name(binding_name, assign_rhs) { + if contains_name(binding_name, assign_rhs, cx) { cancel_lint = true; break; } diff --git a/clippy_lints/src/loops/needless_range_loop.rs b/clippy_lints/src/loops/needless_range_loop.rs index 27ba27202bf7..3bca93d80aa7 100644 --- a/clippy_lints/src/loops/needless_range_loop.rs +++ b/clippy_lints/src/loops/needless_range_loop.rs @@ -81,7 +81,7 @@ pub(super) fn check<'tcx>( let skip = if starts_at_zero { String::new() - } else if visitor.indexed_mut.contains(&indexed) && contains_name(indexed, start) { + } else if visitor.indexed_mut.contains(&indexed) && contains_name(indexed, start, cx) { return; } else { format!(".skip({})", snippet(cx, start.span, "..")) @@ -109,7 +109,7 @@ pub(super) fn check<'tcx>( if is_len_call(end, indexed) || is_end_eq_array_len(cx, end, limits, indexed_ty) { String::new() - } else if visitor.indexed_mut.contains(&indexed) && contains_name(indexed, take_expr) { + } else if visitor.indexed_mut.contains(&indexed) && contains_name(indexed, take_expr, cx) { return; } else { match limits { diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index 43e2d1ec826c..b2175c5cb169 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -116,6 +116,8 @@ use crate::consts::{constant, Constant}; use crate::ty::{can_partially_move_ty, expr_sig, is_copy, is_recursively_primitive_type, ty_is_fn_once_param}; use crate::visitors::for_each_expr; +use rustc_middle::hir::nested_filter; + #[macro_export] macro_rules! extract_msrv_attr { ($context:ident) => { @@ -1253,22 +1255,33 @@ pub fn get_item_name(cx: &LateContext<'_>, expr: &Expr<'_>) -> Option { } } -pub struct ContainsName { +pub struct ContainsName<'a, 'tcx> { + pub cx: &'a LateContext<'tcx>, pub name: Symbol, pub result: bool, } -impl<'tcx> Visitor<'tcx> for ContainsName { +impl<'a, 'tcx> Visitor<'tcx> for ContainsName<'a, 'tcx> { + type NestedFilter = nested_filter::All; + fn visit_name(&mut self, name: Symbol) { if self.name == name { self.result = true; } } + + fn nested_visit_map(&mut self) -> Self::Map { + self.cx.tcx.hir() + } } /// Checks if an `Expr` contains a certain name. -pub fn contains_name(name: Symbol, expr: &Expr<'_>) -> bool { - let mut cn = ContainsName { name, result: false }; +pub fn contains_name<'tcx>(name: Symbol, expr: &'tcx Expr<'_>, cx: &LateContext<'tcx>) -> bool { + let mut cn = ContainsName { + name, + result: false, + cx, + }; cn.visit_expr(expr); cn.result } diff --git a/tests/ui/field_reassign_with_default.rs b/tests/ui/field_reassign_with_default.rs index 7367910eaa12..1f989bb12205 100644 --- a/tests/ui/field_reassign_with_default.rs +++ b/tests/ui/field_reassign_with_default.rs @@ -247,3 +247,24 @@ mod issue6312 { } } } + +struct Collection { + items: Vec, + len: usize, +} + +impl Default for Collection { + fn default() -> Self { + Self { + items: vec![1, 2, 3], + len: 0, + } + } +} + +#[allow(clippy::redundant_closure_call)] +fn issue10136() { + let mut c = Collection::default(); + // don't lint, since c.items was used to calculate this value + c.len = (|| c.items.len())(); +} From 01a2a9df4300749f5c96209e707d02aae44f39e3 Mon Sep 17 00:00:00 2001 From: Eric Wu Date: Sun, 1 Jan 2023 19:10:21 -0500 Subject: [PATCH 212/478] [`drop_ref`]: don't lint idiomatic in match arm --- clippy_lints/src/drop_forget_ref.rs | 2 +- tests/ui/drop_ref.rs | 23 +++++++++++++++++ tests/ui/drop_ref.stderr | 38 ++++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/clippy_lints/src/drop_forget_ref.rs b/clippy_lints/src/drop_forget_ref.rs index 4721a7b37056..11e1bcdf12d1 100644 --- a/clippy_lints/src/drop_forget_ref.rs +++ b/clippy_lints/src/drop_forget_ref.rs @@ -206,7 +206,7 @@ impl<'tcx> LateLintPass<'tcx> for DropForgetRef { let is_copy = is_copy(cx, arg_ty); let drop_is_single_call_in_arm = is_single_call_in_arm(cx, arg, expr); let (lint, msg) = match fn_name { - sym::mem_drop if arg_ty.is_ref() => (DROP_REF, DROP_REF_SUMMARY), + sym::mem_drop if arg_ty.is_ref() && !drop_is_single_call_in_arm => (DROP_REF, DROP_REF_SUMMARY), sym::mem_forget if arg_ty.is_ref() => (FORGET_REF, FORGET_REF_SUMMARY), sym::mem_drop if is_copy && !drop_is_single_call_in_arm => (DROP_COPY, DROP_COPY_SUMMARY), sym::mem_forget if is_copy => (FORGET_COPY, FORGET_COPY_SUMMARY), diff --git a/tests/ui/drop_ref.rs b/tests/ui/drop_ref.rs index 7de0b0bbdf9a..10044e65f115 100644 --- a/tests/ui/drop_ref.rs +++ b/tests/ui/drop_ref.rs @@ -72,3 +72,26 @@ fn test_owl_result_2() -> Result { produce_half_owl_ok().map(drop)?; Ok(1) } + +#[allow(unused)] +#[allow(clippy::unit_cmp)] +fn issue10122(x: u8) { + // This is a function which returns a reference and has a side-effect, which means + // that calling drop() on the function is considered an idiomatic way of achieving the side-effect + // in a match arm. + fn println_and(t: &T) -> &T { + println!("foo"); + t + } + + match x { + 0 => drop(println_and(&12)), // Don't lint (copy type), we only care about side-effects + 1 => drop(println_and(&String::new())), // Don't lint (no copy type), we only care about side-effects + 2 => { + drop(println_and(&13)); // Lint, even if we only care about the side-effect, it's already in a block + }, + 3 if drop(println_and(&14)) == () => (), // Lint, idiomatic use is only in body of `Arm` + 4 => drop(&2), // Lint, not a fn/method call + _ => (), + } +} diff --git a/tests/ui/drop_ref.stderr b/tests/ui/drop_ref.stderr index 4743cf79b5d3..293b9f6de832 100644 --- a/tests/ui/drop_ref.stderr +++ b/tests/ui/drop_ref.stderr @@ -107,5 +107,41 @@ note: argument has type `&SomeStruct` LL | std::mem::drop(&SomeStruct); | ^^^^^^^^^^^ -error: aborting due to 9 previous errors +error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing + --> $DIR/drop_ref.rs:91:13 + | +LL | drop(println_and(&13)); // Lint, even if we only care about the side-effect, it's already in a block + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: argument has type `&i32` + --> $DIR/drop_ref.rs:91:18 + | +LL | drop(println_and(&13)); // Lint, even if we only care about the side-effect, it's already in a block + | ^^^^^^^^^^^^^^^^ + +error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing + --> $DIR/drop_ref.rs:93:14 + | +LL | 3 if drop(println_and(&14)) == () => (), // Lint, idiomatic use is only in body of `Arm` + | ^^^^^^^^^^^^^^^^^^^^^^ + | +note: argument has type `&i32` + --> $DIR/drop_ref.rs:93:19 + | +LL | 3 if drop(println_and(&14)) == () => (), // Lint, idiomatic use is only in body of `Arm` + | ^^^^^^^^^^^^^^^^ + +error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing + --> $DIR/drop_ref.rs:94:14 + | +LL | 4 => drop(&2), // Lint, not a fn/method call + | ^^^^^^^^ + | +note: argument has type `&i32` + --> $DIR/drop_ref.rs:94:19 + | +LL | 4 => drop(&2), // Lint, not a fn/method call + | ^^ + +error: aborting due to 12 previous errors From 82f0973dd52d113666304802e9213b089e3211c6 Mon Sep 17 00:00:00 2001 From: Ben Kimock Date: Sun, 1 Jan 2023 15:02:51 -0500 Subject: [PATCH 213/478] Always take advantage of arithmetic identities --- compiler/rustc_mir_transform/src/const_prop.rs | 6 +----- ...verflow.const_dividend.PreCodegen.after.mir | 17 +++++++++++++++++ ...overflow.const_divisor.PreCodegen.after.mir | 11 +++++++++++ src/test/mir-opt/div_overflow.rs | 18 ++++++++++++++++++ 4 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir create mode 100644 src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir create mode 100644 src/test/mir-opt/div_overflow.rs diff --git a/compiler/rustc_mir_transform/src/const_prop.rs b/compiler/rustc_mir_transform/src/const_prop.rs index e384cfe16599..5c45abc5a170 100644 --- a/compiler/rustc_mir_transform/src/const_prop.rs +++ b/compiler/rustc_mir_transform/src/const_prop.rs @@ -655,11 +655,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> { return None; } - if self.tcx.sess.mir_opt_level() >= 4 { - self.eval_rvalue_with_identities(rvalue, place) - } else { - self.use_ecx(|this| this.ecx.eval_rvalue_into_place(rvalue, place)) - } + self.eval_rvalue_with_identities(rvalue, place) } // Attempt to use algebraic identities to eliminate constant expressions diff --git a/src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir b/src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir new file mode 100644 index 000000000000..d7f66a6bf4d5 --- /dev/null +++ b/src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir @@ -0,0 +1,17 @@ +// MIR for `const_dividend` after PreCodegen + +fn const_dividend(_1: i32) -> i32 { + debug a => _1; // in scope 0 at $DIR/div_overflow.rs:+0:23: +0:24 + let mut _0: i32; // return place in scope 0 at $DIR/div_overflow.rs:+0:34: +0:37 + let mut _2: bool; // in scope 0 at $DIR/div_overflow.rs:+1:5: +1:12 + + bb0: { + _2 = Eq(_1, const 0_i32); // scope 0 at $DIR/div_overflow.rs:+1:5: +1:12 + assert(!move _2, "attempt to divide `{}` by zero", const 256_i32) -> bb1; // scope 0 at $DIR/div_overflow.rs:+1:5: +1:12 + } + + bb1: { + _0 = Div(const 256_i32, move _1); // scope 0 at $DIR/div_overflow.rs:+1:5: +1:12 + return; // scope 0 at $DIR/div_overflow.rs:+2:2: +2:2 + } +} diff --git a/src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir b/src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir new file mode 100644 index 000000000000..7b7ab1978258 --- /dev/null +++ b/src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir @@ -0,0 +1,11 @@ +// MIR for `const_divisor` after PreCodegen + +fn const_divisor(_1: i32) -> i32 { + debug a => _1; // in scope 0 at $DIR/div_overflow.rs:+0:22: +0:23 + let mut _0: i32; // return place in scope 0 at $DIR/div_overflow.rs:+0:33: +0:36 + + bb0: { + _0 = Div(move _1, const 256_i32); // scope 0 at $DIR/div_overflow.rs:+1:5: +1:12 + return; // scope 0 at $DIR/div_overflow.rs:+2:2: +2:2 + } +} diff --git a/src/test/mir-opt/div_overflow.rs b/src/test/mir-opt/div_overflow.rs new file mode 100644 index 000000000000..10ce5bc0f4f0 --- /dev/null +++ b/src/test/mir-opt/div_overflow.rs @@ -0,0 +1,18 @@ +// compile-flags: -Copt-level=0 -Coverflow-checks=yes + +// Tests that division with a const does not emit a panicking branch for overflow + +// EMIT_MIR div_overflow.const_divisor.PreCodegen.after.mir +pub fn const_divisor(a: i32) -> i32 { + a / 256 +} + +// EMIT_MIR div_overflow.const_dividend.PreCodegen.after.mir +pub fn const_dividend(a: i32) -> i32 { + 256 / a +} + +fn main() { + const_divisor(123); + const_dividend(123); +} From cf2fa14db515e1b14281f436f8b793e23d83b387 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Mon, 2 Jan 2023 20:31:35 +0900 Subject: [PATCH 214/478] fix: prefix prelude items whose name collides in current scope --- crates/hir-def/src/find_path.rs | 87 ++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 13 deletions(-) diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs index e90dc47cf38d..f7dc3a736548 100644 --- a/crates/hir-def/src/find_path.rs +++ b/crates/hir-def/src/find_path.rs @@ -107,7 +107,7 @@ fn find_path_inner( } // - if the item is in the prelude, return the name from there - if let Some(value) = find_in_prelude(db, &crate_root.def_map(db), item, from) { + if let value @ Some(_) = find_in_prelude(db, &crate_root.def_map(db), &def_map, item, from) { return value; } @@ -205,7 +205,8 @@ fn find_path_for_module( } } - if let Some(value) = find_in_prelude(db, &root_def_map, ItemInNs::Types(module_id.into()), from) + if let value @ Some(_) = + find_in_prelude(db, &root_def_map, &def_map, ItemInNs::Types(module_id.into()), from) { return value; } @@ -234,23 +235,41 @@ fn find_in_scope( }) } +/// Returns single-segment path (i.e. without any prefix) if `item` is found in prelude and its +/// name doesn't clash in current scope. fn find_in_prelude( db: &dyn DefDatabase, root_def_map: &DefMap, + local_def_map: &DefMap, item: ItemInNs, from: ModuleId, -) -> Option> { - if let Some(prelude_module) = root_def_map.prelude() { - // Preludes in block DefMaps are ignored, only the crate DefMap is searched - let prelude_def_map = prelude_module.def_map(db); - let prelude_scope = &prelude_def_map[prelude_module.local_id].scope; - if let Some((name, vis)) = prelude_scope.name_of(item) { - if vis.is_visible_from(db, from) { - return Some(Some(ModPath::from_segments(PathKind::Plain, Some(name.clone())))); - } - } +) -> Option { + let prelude_module = root_def_map.prelude()?; + // Preludes in block DefMaps are ignored, only the crate DefMap is searched + let prelude_def_map = prelude_module.def_map(db); + let prelude_scope = &prelude_def_map[prelude_module.local_id].scope; + let (name, vis) = prelude_scope.name_of(item)?; + if !vis.is_visible_from(db, from) { + return None; + } + + // Check if the name is in current scope and it points to the same def. + let found_and_same_def = + local_def_map.with_ancestor_maps(db, from.local_id, &mut |def_map, local_id| { + let per_ns = def_map[local_id].scope.get(name); + let same_def = match item { + ItemInNs::Types(it) => per_ns.take_types()? == it, + ItemInNs::Values(it) => per_ns.take_values()? == it, + ItemInNs::Macros(it) => per_ns.take_macros()? == it, + }; + Some(same_def) + }); + + if found_and_same_def.unwrap_or(true) { + Some(ModPath::from_segments(PathKind::Plain, Some(name.clone()))) + } else { + None } - None } fn find_self_super(def_map: &DefMap, item: ModuleId, from: ModuleId) -> Option { @@ -808,6 +827,48 @@ pub mod prelude { ); } + #[test] + fn shadowed_prelude() { + check_found_path( + r#" +//- /main.rs crate:main deps:std +struct S; +$0 +//- /std.rs crate:std +pub mod prelude { + pub mod rust_2018 { + pub struct S; + } +} +"#, + "std::prelude::rust_2018::S", + "std::prelude::rust_2018::S", + "std::prelude::rust_2018::S", + "std::prelude::rust_2018::S", + ); + } + + #[test] + fn imported_prelude() { + check_found_path( + r#" +//- /main.rs crate:main deps:std +use S; +$0 +//- /std.rs crate:std +pub mod prelude { + pub mod rust_2018 { + pub struct S; + } +} +"#, + "S", + "S", + "S", + "S", + ); + } + #[test] fn enum_variant_from_prelude() { let code = r#" From 7a1a9c8188eed7212eab35c820dcdff88cf0f3df Mon Sep 17 00:00:00 2001 From: Max Baumann Date: Mon, 2 Jan 2023 14:58:10 +0100 Subject: [PATCH 215/478] empty_structs_with_brackets: not MachineApplicable anymore --- clippy_lints/src/empty_structs_with_brackets.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/empty_structs_with_brackets.rs b/clippy_lints/src/empty_structs_with_brackets.rs index 08bf80a42290..c3a020433de8 100644 --- a/clippy_lints/src/empty_structs_with_brackets.rs +++ b/clippy_lints/src/empty_structs_with_brackets.rs @@ -45,7 +45,7 @@ impl EarlyLintPass for EmptyStructsWithBrackets { span_after_ident, "remove the brackets", ";", - Applicability::MachineApplicable); + Applicability::Unspecified); }, ); } From 77051679d70ffb7421b1fb75402306a51c2337bd Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 07:59:11 +0000 Subject: [PATCH 216/478] use inline format args --- crates/flycheck/src/lib.rs | 3 +-- crates/hir-def/src/data.rs | 9 +++---- crates/hir-ty/src/lower.rs | 6 ++--- crates/ide-assists/src/tests/sourcegen.rs | 3 +-- .../src/completions/attribute.rs | 4 +--- .../src/completions/env_vars.rs | 14 +++++------ .../src/completions/item_list/trait_impl.rs | 24 ++++++++----------- .../ide-completion/src/completions/postfix.rs | 3 +-- crates/proc-macro-srv/src/tests/utils.rs | 4 ++-- crates/profile/src/lib.rs | 2 +- crates/project-model/src/build_scripts.rs | 3 +-- crates/rust-analyzer/src/config.rs | 13 ++++------ .../rust-analyzer/src/diagnostics/to_proto.rs | 3 +-- crates/rust-analyzer/src/main_loop.rs | 5 +--- crates/rust-analyzer/tests/slow-tests/main.rs | 10 ++++---- crates/rust-analyzer/tests/slow-tests/tidy.rs | 7 +++--- crates/sourcegen/src/lib.rs | 5 +--- crates/syntax/src/algo.rs | 3 +-- crates/test-utils/src/fixture.rs | 16 ++++--------- lib/lsp-server/src/lib.rs | 16 ++++--------- xtask/src/release/changelog.rs | 17 +++++++------ 21 files changed, 61 insertions(+), 109 deletions(-) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 8605379620ba..590a93fbaa1a 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -408,8 +408,7 @@ impl CargoHandle { Ok(()) } else { Err(io::Error::new(io::ErrorKind::Other, format!( - "Cargo watcher failed, the command produced no valid metadata (exit code: {:?}):\n{}", - exit_status, error + "Cargo watcher failed, the command produced no valid metadata (exit code: {exit_status:?}):\n{error}" ))) } } diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs index b78ab71ef21b..170cb0fd06b4 100644 --- a/crates/hir-def/src/data.rs +++ b/crates/hir-def/src/data.rs @@ -234,8 +234,7 @@ impl TraitData { let item_tree = tree_id.item_tree(db); let tr_def = &item_tree[tree_id.value]; let _cx = stdx::panic_context::enter(format!( - "trait_data_query({:?} -> {:?} -> {:?})", - tr, tr_loc, tr_def + "trait_data_query({tr:?} -> {tr_loc:?} -> {tr_def:?})" )); let name = tr_def.name.clone(); let is_auto = tr_def.is_auto; @@ -619,10 +618,8 @@ impl<'a> AssocItemCollector<'a> { let ast_id_map = self.db.ast_id_map(self.expander.current_file_id()); let call = ast_id_map.get(call.ast_id).to_node(&root); - let _cx = stdx::panic_context::enter(format!( - "collect_items MacroCall: {}", - call - )); + let _cx = + stdx::panic_context::enter(format!("collect_items MacroCall: {call}")); let res = self.expander.enter_expand::(self.db, call); if let Ok(ExpandResult { value: Some((mark, _)), .. }) = res { diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index 752a3caceb44..7a7b1e2e719b 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -1796,8 +1796,7 @@ pub(crate) fn impl_self_ty_query(db: &dyn HirDatabase, impl_id: ImplId) -> Binde let impl_data = db.impl_data(impl_id); let resolver = impl_id.resolver(db.upcast()); let _cx = stdx::panic_context::enter(format!( - "impl_self_ty_query({:?} -> {:?} -> {:?})", - impl_id, impl_loc, impl_data + "impl_self_ty_query({impl_id:?} -> {impl_loc:?} -> {impl_data:?})" )); let generics = generics(db.upcast(), impl_id.into()); let ctx = @@ -1834,8 +1833,7 @@ pub(crate) fn impl_trait_query(db: &dyn HirDatabase, impl_id: ImplId) -> Option< let impl_data = db.impl_data(impl_id); let resolver = impl_id.resolver(db.upcast()); let _cx = stdx::panic_context::enter(format!( - "impl_trait_query({:?} -> {:?} -> {:?})", - impl_id, impl_loc, impl_data + "impl_trait_query({impl_id:?} -> {impl_loc:?} -> {impl_data:?})" )); let ctx = TyLoweringContext::new(db, &resolver).with_type_param_mode(ParamLoweringMode::Variable); diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs index c574d6bc631a..b4f50c7fb26a 100644 --- a/crates/ide-assists/src/tests/sourcegen.rs +++ b/crates/ide-assists/src/tests/sourcegen.rs @@ -95,8 +95,7 @@ impl Assist { let id = block.id; assert!( id.chars().all(|it| it.is_ascii_lowercase() || it == '_'), - "invalid assist id: {:?}", - id + "invalid assist id: {id:?}" ); let mut lines = block.contents.iter().peekable(); let location = sourcegen::Location { file: path.to_path_buf(), line: block.line }; diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs index d9fe94cb44ee..21fe21263634 100644 --- a/crates/ide-completion/src/completions/attribute.rs +++ b/crates/ide-completion/src/completions/attribute.rs @@ -371,9 +371,7 @@ fn attributes_are_sorted() { attrs.for_each(|next| { assert!( prev < next, - r#"ATTRIBUTES array is not sorted, "{}" should come after "{}""#, - prev, - next + r#"ATTRIBUTES array is not sorted, "{prev}" should come after "{next}""# ); prev = next; }); diff --git a/crates/ide-completion/src/completions/env_vars.rs b/crates/ide-completion/src/completions/env_vars.rs index a094e857bbad..1002be21131d 100644 --- a/crates/ide-completion/src/completions/env_vars.rs +++ b/crates/ide-completion/src/completions/env_vars.rs @@ -68,28 +68,26 @@ mod tests { &format!( r#" #[rustc_builtin_macro] - macro_rules! {} {{ + macro_rules! {macro_name} {{ ($var:literal) => {{ 0 }} }} fn main() {{ - let foo = {}!("CAR$0"); + let foo = {macro_name}!("CAR$0"); }} - "#, - macro_name, macro_name + "# ), &format!( r#" #[rustc_builtin_macro] - macro_rules! {} {{ + macro_rules! {macro_name} {{ ($var:literal) => {{ 0 }} }} fn main() {{ - let foo = {}!("CARGO_BIN_NAME"); + let foo = {macro_name}!("CARGO_BIN_NAME"); }} - "#, - macro_name, macro_name + "# ), ); } diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs index 21ec13bba015..9a060857e9e4 100644 --- a/crates/ide-completion/src/completions/item_list/trait_impl.rs +++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs @@ -845,11 +845,10 @@ trait Test {{ struct T; impl Test for T {{ - {} - {} + {hint} + {next_sibling} }} -"#, - hint, next_sibling +"# ), &format!( r#" @@ -861,11 +860,10 @@ trait Test {{ struct T; impl Test for T {{ - {} - {} + {completed} + {next_sibling} }} -"#, - completed, next_sibling +"# ), ) }; @@ -905,10 +903,9 @@ struct T; impl Foo for T {{ // Comment #[bar] - {} + {hint} }} -"#, - hint +"# ), &format!( r#" @@ -922,10 +919,9 @@ struct T; impl Foo for T {{ // Comment #[bar] - {} + {completed} }} -"#, - completed +"# ), ) }; diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 2404491c1f09..3db400604b02 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -153,8 +153,7 @@ pub(crate) fn complete_postfix( "match", "match expr {}", &format!( - "match {} {{\n Some(${{1:_}}) => {{$2}},\n None => {{$0}},\n}}", - receiver_text + "match {receiver_text} {{\n Some(${{1:_}}) => {{$2}},\n None => {{$0}},\n}}" ), ) .add_to(acc); diff --git a/crates/proc-macro-srv/src/tests/utils.rs b/crates/proc-macro-srv/src/tests/utils.rs index 44b1b6588da0..efbeb90ca9dd 100644 --- a/crates/proc-macro-srv/src/tests/utils.rs +++ b/crates/proc-macro-srv/src/tests/utils.rs @@ -30,12 +30,12 @@ fn assert_expand_impl(macro_name: &str, input: &str, attr: Option<&str>, expect: let attr = attr.map(|attr| parse_string(attr).unwrap().into_subtree()); let res = expander.expand(macro_name, &fixture.into_subtree(), attr.as_ref()).unwrap(); - expect.assert_eq(&format!("{:?}", res)); + expect.assert_eq(&format!("{res:?}")); } pub(crate) fn list() -> Vec { let dylib_path = proc_macro_test_dylib_path(); let mut srv = ProcMacroSrv::default(); let res = srv.list_macros(&dylib_path).unwrap(); - res.into_iter().map(|(name, kind)| format!("{} [{:?}]", name, kind)).collect() + res.into_iter().map(|(name, kind)| format!("{name} [{kind:?}]")).collect() } diff --git a/crates/profile/src/lib.rs b/crates/profile/src/lib.rs index 00f7952e8072..2e2ef0cfc2d7 100644 --- a/crates/profile/src/lib.rs +++ b/crates/profile/src/lib.rs @@ -118,7 +118,7 @@ impl Drop for CpuSpan { eprintln!("Profile rendered to:\n\n {}\n", svg.display()); } _ => { - eprintln!("Failed to run:\n\n {:?}\n", cmd); + eprintln!("Failed to run:\n\n {cmd:?}\n"); } } } diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index ae9cba52ded2..ac17bb463cee 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -303,8 +303,7 @@ impl WorkspaceBuildScripts { Ok(it) => acc.push(it), Err(err) => { push_err(&format!( - "invalid cfg from cargo-metadata: {}", - err + "invalid cfg from cargo-metadata: {err}" )); return; } diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index dc876720de43..4ee92b3d4ed0 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -1908,9 +1908,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json let doc = doc.trim_end_matches('\n'); assert!( doc.ends_with('.') && doc.starts_with(char::is_uppercase), - "bad docs for {}: {:?}", - field, - doc + "bad docs for {field}: {doc:?}" ); let default = default.parse::().unwrap(); @@ -2213,17 +2211,16 @@ fn manual(fields: &[(&'static str, &'static str, &[&str], &str)]) -> String { let doc = doc_comment_to_string(doc); if default.contains('\n') { format!( - r#"[[{}]]{}:: + r#"[[{name}]]{name}:: + -- Default: ---- -{} +{default} ---- -{} +{doc} -- -"#, - name, name, default, doc +"# ) } else { format!("[[{name}]]{name} (default: `{default}`)::\n+\n--\n{doc}--\n") diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index d1ee99af3ec6..473a0eb0eb87 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -502,8 +502,7 @@ fn rustc_code_description(code: Option<&str>) -> Option) -> Option { code.and_then(|code| { lsp_types::Url::parse(&format!( - "https://rust-lang.github.io/rust-clippy/master/index.html#{}", - code + "https://rust-lang.github.io/rust-clippy/master/index.html#{code}" )) .ok() .map(|href| lsp_types::CodeDescription { href }) diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 9cedcf1bec1d..02493bb1df69 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -414,10 +414,7 @@ impl GlobalState { let loop_duration = loop_start.elapsed(); if loop_duration > Duration::from_millis(100) && was_quiescent { tracing::warn!("overly long loop turn: {:?}", loop_duration); - self.poke_rust_analyzer_developer(format!( - "overly long loop turn: {:?}", - loop_duration - )); + self.poke_rust_analyzer_developer(format!("overly long loop turn: {loop_duration:?}")); } Ok(()) } diff --git a/crates/rust-analyzer/tests/slow-tests/main.rs b/crates/rust-analyzer/tests/slow-tests/main.rs index 76eb60ac7cb2..5e3e19d44d73 100644 --- a/crates/rust-analyzer/tests/slow-tests/main.rs +++ b/crates/rust-analyzer/tests/slow-tests/main.rs @@ -528,14 +528,13 @@ fn test_missing_module_code_action_in_json_project() { let code = format!( r#" //- /rust-project.json -{PROJECT} +{project} //- /src/lib.rs mod bar; fn main() {{}} "#, - PROJECT = project, ); let server = @@ -605,13 +604,12 @@ name = "foo" version = "0.0.0" //- /src/lib.rs -{} +{librs} -{} +{libs} fn main() {{}} -"#, - librs, libs +"# )) .with_config(serde_json::json!({ "cargo": { "sysroot": "discover" } diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index 745faf424916..a5af948b08f2 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -56,12 +56,11 @@ fn check_lsp_extensions_docs() { " lsp_ext.rs was changed without touching lsp-extensions.md. -Expected hash: {:x} -Actual hash: {:x} +Expected hash: {expected_hash:x} +Actual hash: {actual_hash:x} Please adjust docs/dev/lsp-extensions.md. -", - expected_hash, actual_hash +" ) } } diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index 9d7a0c480bde..a7d9a81dfcd2 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -65,10 +65,7 @@ impl CommentBlock { let first = block.contents.remove(0); first.strip_prefix(&tag).map(|id| { if block.is_doc { - panic!( - "Use plain (non-doc) comments with tags like {}:\n {}", - tag, first - ); + panic!("Use plain (non-doc) comments with tags like {tag}:\n {first}"); } block.id = id.trim().to_string(); diff --git a/crates/syntax/src/algo.rs b/crates/syntax/src/algo.rs index bcfece4503c8..c402a7bceaeb 100644 --- a/crates/syntax/src/algo.rs +++ b/crates/syntax/src/algo.rs @@ -646,8 +646,7 @@ fn main() { .format_with("\n", |v, f| f(&format!("Line {}: {}", line_number(v), &fmt_syntax(v)))); let actual = format!( - "insertions:\n\n{}\n\nreplacements:\n\n{}\n\ndeletions:\n\n{}\n", - insertions, replacements, deletions + "insertions:\n\n{insertions}\n\nreplacements:\n\n{replacements}\n\ndeletions:\n\n{deletions}\n" ); expected_diff.assert_eq(&actual); diff --git a/crates/test-utils/src/fixture.rs b/crates/test-utils/src/fixture.rs index e7bc64620b2c..d1afd0039aa4 100644 --- a/crates/test-utils/src/fixture.rs +++ b/crates/test-utils/src/fixture.rs @@ -135,11 +135,9 @@ impl Fixture { if line.contains("//-") { assert!( line.starts_with("//-"), - "Metadata line {} has invalid indentation. \ + "Metadata line {ix} has invalid indentation. \ All metadata lines need to have the same indentation.\n\ - The offending line: {:?}", - ix, - line + The offending line: {line:?}" ); } @@ -222,9 +220,7 @@ impl Fixture { for prelude_dep in extern_prelude.iter().flatten() { assert!( deps.contains(prelude_dep), - "extern-prelude {:?} must be a subset of deps {:?}", - extern_prelude, - deps + "extern-prelude {extern_prelude:?} must be a subset of deps {deps:?}" ); } @@ -348,11 +344,7 @@ impl MiniCore { let mut keep = true; for ®ion in &active_regions { - assert!( - !region.starts_with(' '), - "region marker starts with a space: {:?}", - region - ); + assert!(!region.starts_with(' '), "region marker starts with a space: {region:?}"); self.assert_valid_flag(region); seen_regions.push(region); keep &= self.has_flag(region); diff --git a/lib/lsp-server/src/lib.rs b/lib/lsp-server/src/lib.rs index 8c3c81feabc1..b95cec4f0136 100644 --- a/lib/lsp-server/src/lib.rs +++ b/lib/lsp-server/src/lib.rs @@ -128,15 +128,11 @@ impl Connection { self.sender.send(resp.into()).unwrap(); } Ok(msg) => { - return Err(ProtocolError(format!( - "expected initialize request, got {:?}", - msg - ))) + return Err(ProtocolError(format!("expected initialize request, got {msg:?}"))) } Err(e) => { return Err(ProtocolError(format!( - "expected initialize request, got error: {}", - e + "expected initialize request, got error: {e}" ))) } }; @@ -154,15 +150,11 @@ impl Connection { match &self.receiver.recv() { Ok(Message::Notification(n)) if n.is_initialized() => (), Ok(msg) => { - return Err(ProtocolError(format!( - "expected Message::Notification, got: {:?}", - msg, - ))) + return Err(ProtocolError(format!("expected Message::Notification, got: {msg:?}",))) } Err(e) => { return Err(ProtocolError(format!( - "expected initialized notification, got error: {}", - e, + "expected initialized notification, got error: {e}", ))) } } diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs index 90095df99e89..d2a1483e3873 100644 --- a/xtask/src/release/changelog.rs +++ b/xtask/src/release/changelog.rs @@ -63,31 +63,30 @@ pub(crate) fn get_changelog( let contents = format!( "\ -= Changelog #{} += Changelog #{changelog_n} :sectanchors: :experimental: :page-layout: post -Commit: commit:{}[] + -Release: release:{}[] +Commit: commit:{commit}[] + +Release: release:{today}[] == New Features -{} +{features} == Fixes -{} +{fixes} == Internal Improvements -{} +{internal} == Others -{} -", - changelog_n, commit, today, features, fixes, internal, others +{others} +" ); Ok(contents) } From ed128872eb42c61ecc62f382fe1f93c98bd78aad Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 08:05:03 +0000 Subject: [PATCH 217/478] remove needless borrows --- crates/hir-def/src/data.rs | 4 ++-- crates/hir-def/src/find_path.rs | 2 +- crates/hir-def/src/nameres/collector.rs | 4 ++-- crates/hir-expand/src/builtin_attr_macro.rs | 3 ++- crates/hir-expand/src/name.rs | 4 ++-- crates/hir-ty/src/consteval.rs | 2 +- crates/hir-ty/src/infer/expr.rs | 2 +- crates/hir-ty/src/infer/pat.rs | 2 +- crates/hir-ty/src/layout.rs | 2 +- crates/hir-ty/src/layout/tests.rs | 3 +-- crates/hir-ty/src/lower.rs | 4 ++-- crates/hir-ty/src/method_resolution.rs | 6 +++--- crates/hir/src/semantics.rs | 2 +- crates/hir/src/source_analyzer.rs | 4 ++-- crates/ide-assists/src/handlers/add_return_type.rs | 6 +++--- crates/ide-assists/src/handlers/auto_import.rs | 2 +- .../src/handlers/generate_enum_variant.rs | 2 +- crates/ide-assists/src/handlers/generate_getter.rs | 2 +- crates/ide-assists/src/handlers/generate_new.rs | 2 +- crates/ide-assists/src/handlers/inline_type_alias.rs | 6 +++--- crates/ide-assists/src/handlers/unnecessary_async.rs | 2 +- crates/ide-completion/src/completions/dot.rs | 4 ++-- crates/ide-completion/src/completions/expr.rs | 2 +- .../ide-completion/src/completions/format_string.rs | 2 +- crates/ide-completion/src/completions/type.rs | 2 +- crates/ide-completion/src/context/analysis.rs | 12 ++++++------ crates/ide-completion/src/render/union_literal.rs | 2 +- .../ide-diagnostics/src/handlers/missing_fields.rs | 4 ++-- crates/ide-diagnostics/src/handlers/no_such_field.rs | 2 +- crates/ide-diagnostics/src/lib.rs | 2 +- crates/ide-diagnostics/src/tests/sourcegen.rs | 2 +- crates/ide/src/expand_macro.rs | 2 +- crates/ide/src/hover.rs | 2 +- crates/ide/src/hover/render.rs | 2 +- crates/ide/src/inlay_hints.rs | 6 +++--- crates/ide/src/inlay_hints/binding_mode.rs | 2 +- crates/mbe/src/syntax_bridge/tests.rs | 2 +- .../proc-macro-srv/src/abis/abi_sysroot/ra_server.rs | 2 +- crates/profile/src/lib.rs | 2 +- crates/project-model/src/build_scripts.rs | 8 ++++---- crates/project-model/src/cargo_workspace.rs | 2 +- crates/project-model/src/rustc_cfg.rs | 8 ++++---- crates/project-model/src/sysroot.rs | 4 ++-- crates/project-model/src/target_data_layout.rs | 8 ++++---- crates/project-model/src/workspace.rs | 2 +- crates/rust-analyzer/src/caps.rs | 4 ++-- crates/rust-analyzer/src/cli/scip.rs | 4 ++-- crates/rust-analyzer/src/main_loop.rs | 2 +- crates/rust-analyzer/tests/slow-tests/sourcegen.rs | 2 +- crates/sourcegen/src/lib.rs | 4 ++-- crates/syntax/src/ast/edit_in_place.rs | 2 +- crates/syntax/src/tests.rs | 2 +- crates/test-utils/src/lib.rs | 2 +- 53 files changed, 87 insertions(+), 87 deletions(-) diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs index 170cb0fd06b4..e6b05f27a544 100644 --- a/crates/hir-def/src/data.rs +++ b/crates/hir-def/src/data.rs @@ -542,7 +542,7 @@ impl<'a> AssocItemCollector<'a> { if !attrs.is_cfg_enabled(self.expander.cfg_options()) { self.inactive_diagnostics.push(DefDiagnostic::unconfigured_code( self.module_id.local_id, - InFile::new(self.expander.current_file_id(), item.ast_id(&item_tree).upcast()), + InFile::new(self.expander.current_file_id(), item.ast_id(item_tree).upcast()), attrs.cfg().unwrap(), self.expander.cfg_options().clone(), )); @@ -551,7 +551,7 @@ impl<'a> AssocItemCollector<'a> { 'attrs: for attr in &*attrs { let ast_id = - AstId::new(self.expander.current_file_id(), item.ast_id(&item_tree).upcast()); + AstId::new(self.expander.current_file_id(), item.ast_id(item_tree).upcast()); let ast_id_with_path = AstIdWithPath { path: (*attr.path).clone(), ast_id }; if let Ok(ResolvedAttr::Macro(call_id)) = self.def_map.resolve_attr_macro( diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs index f7dc3a736548..ddd7ad99e9ad 100644 --- a/crates/hir-def/src/find_path.rs +++ b/crates/hir-def/src/find_path.rs @@ -176,7 +176,7 @@ fn find_path_for_module( // - if relative paths are fine, check if we are searching for a parent if prefixed.filter(PrefixKind::is_absolute).is_none() { - if let modpath @ Some(_) = find_self_super(&def_map, module_id, from) { + if let modpath @ Some(_) = find_self_super(def_map, module_id, from) { return modpath; } } diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index 6e1f85bc081c..1955745c3b09 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -1094,7 +1094,7 @@ impl DefCollector<'_> { ast_id, *expand_to, self.def_map.krate, - &resolver_def_id, + resolver_def_id, &mut |_err| (), ); if let Ok(Ok(call_id)) = call_id { @@ -1110,7 +1110,7 @@ impl DefCollector<'_> { *derive_attr, *derive_pos as u32, self.def_map.krate, - &resolver, + resolver, ); if let Ok((macro_id, def_id, call_id)) = id { diff --git a/crates/hir-expand/src/builtin_attr_macro.rs b/crates/hir-expand/src/builtin_attr_macro.rs index 0c886ac4da9d..58d192f9fe00 100644 --- a/crates/hir-expand/src/builtin_attr_macro.rs +++ b/crates/hir-expand/src/builtin_attr_macro.rs @@ -115,7 +115,8 @@ pub fn pseudo_derive_attr_expansion( }; let mut token_trees = Vec::new(); - for tt in (&args.token_trees) + for tt in args + .token_trees .split(|tt| matches!(tt, tt::TokenTree::Leaf(tt::Leaf::Punct(tt::Punct { char: ',', .. })))) { token_trees.push(mk_leaf('#')); diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs index 499654254330..e8b3e312aab7 100644 --- a/crates/hir-expand/src/name.rs +++ b/crates/hir-expand/src/name.rs @@ -62,7 +62,7 @@ impl<'a> UnescapedName<'a> { it.clone() } } - Repr::TupleField(it) => SmolStr::new(&it.to_string()), + Repr::TupleField(it) => SmolStr::new(it.to_string()), } } } @@ -139,7 +139,7 @@ impl Name { pub fn to_smol_str(&self) -> SmolStr { match &self.0 { Repr::Text(it) => it.clone(), - Repr::TupleField(it) => SmolStr::new(&it.to_string()), + Repr::TupleField(it) => SmolStr::new(it.to_string()), } } diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs index 345cf63c4fd0..d1660914766c 100644 --- a/crates/hir-ty/src/consteval.rs +++ b/crates/hir-ty/src/consteval.rs @@ -404,7 +404,7 @@ pub(crate) fn path_to_const( args_lazy: impl FnOnce() -> Generics, debruijn: DebruijnIndex, ) -> Option { - match resolver.resolve_path_in_value_ns_fully(db.upcast(), &path) { + match resolver.resolve_path_in_value_ns_fully(db.upcast(), path) { Some(ValueNs::GenericParam(p)) => { let ty = db.const_param_ty(p); let args = args_lazy(); diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index a5dd02067642..c5aa7357772c 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -1335,7 +1335,7 @@ impl<'a> InferenceContext<'a> { ty, c, ParamLoweringMode::Placeholder, - || generics(this.db.upcast(), (&this.resolver).generic_def().unwrap()), + || generics(this.db.upcast(), this.resolver.generic_def().unwrap()), DebruijnIndex::INNERMOST, ) }, diff --git a/crates/hir-ty/src/infer/pat.rs b/crates/hir-ty/src/infer/pat.rs index 53259d66dec6..e32c760b8b07 100644 --- a/crates/hir-ty/src/infer/pat.rs +++ b/crates/hir-ty/src/infer/pat.rs @@ -153,7 +153,7 @@ impl<'a> InferenceContext<'a> { ) -> Ty { let mut expected = self.resolve_ty_shallow(expected); - if is_non_ref_pat(&self.body, pat) { + if is_non_ref_pat(self.body, pat) { let mut pat_adjustments = Vec::new(); while let Some((inner, _lifetime, mutability)) = expected.as_reference() { pat_adjustments.push(expected.clone()); diff --git a/crates/hir-ty/src/layout.rs b/crates/hir-ty/src/layout.rs index 209072176c4d..7a1cca3143ec 100644 --- a/crates/hir-ty/src/layout.rs +++ b/crates/hir-ty/src/layout.rs @@ -241,7 +241,7 @@ pub fn layout_of_ty(db: &dyn HirDatabase, ty: &Ty, krate: CrateId) -> Result, dl: &TargetDataLayout) -> Result { cx.univariant::( - &dl, + dl, &[], &ReprOptions::default(), StructKind::AlwaysSized, diff --git a/crates/hir-ty/src/layout/tests.rs b/crates/hir-ty/src/layout/tests.rs index ba821235f3f3..d97cb4bc711b 100644 --- a/crates/hir-ty/src/layout/tests.rs +++ b/crates/hir-ty/src/layout/tests.rs @@ -12,8 +12,7 @@ use super::layout_of_ty; fn eval_goal(ra_fixture: &str, minicore: &str) -> Result { // using unstable cargo features failed, fall back to using plain rustc let mut cmd = std::process::Command::new("rustc"); - cmd.args(&["-Z", "unstable-options", "--print", "target-spec-json"]) - .env("RUSTC_BOOTSTRAP", "1"); + cmd.args(["-Z", "unstable-options", "--print", "target-spec-json"]).env("RUSTC_BOOTSTRAP", "1"); let output = cmd.output().unwrap(); assert!(output.status.success(), "{}", output.status); let stdout = String::from_utf8(output.stdout).unwrap(); diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index 7a7b1e2e719b..592410008a67 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -780,7 +780,7 @@ impl<'a> TyLoweringContext<'a> { |_, c, ty| { const_or_path_to_chalk( self.db, - &self.resolver, + self.resolver, ty, c, self.type_param_mode, @@ -1852,7 +1852,7 @@ pub(crate) fn return_type_impl_traits( let ctx_ret = TyLoweringContext::new(db, &resolver) .with_impl_trait_mode(ImplTraitLoweringMode::Opaque) .with_type_param_mode(ParamLoweringMode::Variable); - let _ret = (&ctx_ret).lower_ty(&data.ret_type); + let _ret = ctx_ret.lower_ty(&data.ret_type); let generics = generics(db.upcast(), def.into()); let return_type_impl_traits = ReturnTypeImplTraits { impl_traits: ctx_ret.opaque_type_data.into_inner() }; diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index 2f5fa3083c7a..b6f41c0e828f 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -926,7 +926,7 @@ fn iterate_method_candidates_by_receiver( while let Some((self_ty, _)) = autoderef.next() { iterate_inherent_methods( &self_ty, - &mut autoderef.table, + autoderef.table, name, Some(&receiver_ty), Some(receiver_adjustments.clone()), @@ -941,7 +941,7 @@ fn iterate_method_candidates_by_receiver( while let Some((self_ty, _)) = autoderef.next() { iterate_trait_method_candidates( &self_ty, - &mut autoderef.table, + autoderef.table, traits_in_scope, name, Some(&receiver_ty), @@ -1246,7 +1246,7 @@ fn is_valid_candidate( let expected_self_ty = TyBuilder::impl_self_ty(db, impl_id) .fill_with_inference_vars(table) .build(); - table.unify(&expected_self_ty, &self_ty) + table.unify(&expected_self_ty, self_ty) }); if !self_ty_matches { cov_mark::hit!(const_candidate_self_type_mismatch); diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index a255dc1972ce..d43c5c83096e 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -1252,7 +1252,7 @@ impl<'db> SemanticsImpl<'db> { fn to_def(&self, src: &T) -> Option { let src = self.find_file(src.syntax()).with_value(src).cloned(); - T::to_def(&self, src) + T::to_def(self, src) } fn to_module_def(&self, file: FileId) -> impl Iterator { diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index e2fa1d5cabe1..be062ec3723a 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -228,7 +228,7 @@ impl SourceAnalyzer { db: &dyn HirDatabase, pat: &ast::Pat, ) -> Option> { - let pat_id = self.pat_id(&pat)?; + let pat_id = self.pat_id(pat)?; let infer = self.infer.as_ref()?; Some( infer @@ -824,7 +824,7 @@ impl SourceAnalyzer { } fn ty_of_expr(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option<&Ty> { - self.infer.as_ref()?.type_of_expr.get(self.expr_id(db, &expr)?) + self.infer.as_ref()?.type_of_expr.get(self.expr_id(db, expr)?) } } diff --git a/crates/ide-assists/src/handlers/add_return_type.rs b/crates/ide-assists/src/handlers/add_return_type.rs index 89040a8569e6..879c478acf88 100644 --- a/crates/ide-assists/src/handlers/add_return_type.rs +++ b/crates/ide-assists/src/handlers/add_return_type.rs @@ -35,16 +35,16 @@ pub(crate) fn add_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt match builder_edit_pos { InsertOrReplace::Insert(insert_pos, needs_whitespace) => { let preceeding_whitespace = if needs_whitespace { " " } else { "" }; - builder.insert(insert_pos, &format!("{preceeding_whitespace}-> {ty} ")) + builder.insert(insert_pos, format!("{preceeding_whitespace}-> {ty} ")) } InsertOrReplace::Replace(text_range) => { - builder.replace(text_range, &format!("-> {ty}")) + builder.replace(text_range, format!("-> {ty}")) } } if let FnType::Closure { wrap_expr: true } = fn_type { cov_mark::hit!(wrap_closure_non_block_expr); // `|x| x` becomes `|x| -> T x` which is invalid, so wrap it in a block - builder.replace(tail_expr.syntax().text_range(), &format!("{{{tail_expr}}}")); + builder.replace(tail_expr.syntax().text_range(), format!("{{{tail_expr}}}")); } }, ) diff --git a/crates/ide-assists/src/handlers/auto_import.rs b/crates/ide-assists/src/handlers/auto_import.rs index a689270bc091..698ad78cce6f 100644 --- a/crates/ide-assists/src/handlers/auto_import.rs +++ b/crates/ide-assists/src/handlers/auto_import.rs @@ -203,7 +203,7 @@ fn relevance_score( // get the distance between the imported path and the current module // (prefer items that are more local) Some((item_module, current_module)) => { - score -= module_distance_hueristic(db, ¤t_module, &item_module) as i32; + score -= module_distance_hueristic(db, current_module, &item_module) as i32; } // could not find relevant modules, so just use the length of the path as an estimate diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs index 0bcb5728311b..cd037f7492c6 100644 --- a/crates/ide-assists/src/handlers/generate_enum_variant.rs +++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs @@ -180,7 +180,7 @@ fn make_tuple_field_list( ) -> Option { let args = call_expr.arg_list()?.args(); let tuple_fields = args.map(|arg| { - let ty = expr_ty(ctx, arg, &scope).unwrap_or_else(make::ty_placeholder); + let ty = expr_ty(ctx, arg, scope).unwrap_or_else(make::ty_placeholder); make::tuple_field(None, ty) }); Some(make::tuple_field_list(tuple_fields).into()) diff --git a/crates/ide-assists/src/handlers/generate_getter.rs b/crates/ide-assists/src/handlers/generate_getter.rs index a82dde233377..07040f6f08b3 100644 --- a/crates/ide-assists/src/handlers/generate_getter.rs +++ b/crates/ide-assists/src/handlers/generate_getter.rs @@ -176,7 +176,7 @@ pub(crate) fn generate_getter_impl( // for separating it from other assoc items, that needs // to be handled spearately let mut getter_buf = - generate_getter_from_info(ctx, &getter_info, &record_field_info); + generate_getter_from_info(ctx, &getter_info, record_field_info); // Insert `$0` only for last getter we generate if i == record_fields_count - 1 { diff --git a/crates/ide-assists/src/handlers/generate_new.rs b/crates/ide-assists/src/handlers/generate_new.rs index 17fadea0eaf1..8d311262a753 100644 --- a/crates/ide-assists/src/handlers/generate_new.rs +++ b/crates/ide-assists/src/handlers/generate_new.rs @@ -70,7 +70,7 @@ pub(crate) fn generate_new(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option )?; let expr = use_trivial_constructor( - &ctx.sema.db, + ctx.sema.db, ide_db::helpers::mod_path_to_ast(&type_path), &ty, )?; diff --git a/crates/ide-assists/src/handlers/inline_type_alias.rs b/crates/ide-assists/src/handlers/inline_type_alias.rs index 353d467ed19f..5982e9d61dbf 100644 --- a/crates/ide-assists/src/handlers/inline_type_alias.rs +++ b/crates/ide-assists/src/handlers/inline_type_alias.rs @@ -138,7 +138,7 @@ pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> O replacement = Replacement::Plain; } _ => { - let alias = get_type_alias(&ctx, &alias_instance)?; + let alias = get_type_alias(ctx, &alias_instance)?; concrete_type = alias.ty()?; replacement = inline(&alias, &alias_instance)?; } @@ -158,7 +158,7 @@ impl Replacement { fn to_text(&self, concrete_type: &ast::Type) -> String { match self { Replacement::Generic { lifetime_map, const_and_type_map } => { - create_replacement(&lifetime_map, &const_and_type_map, &concrete_type) + create_replacement(lifetime_map, const_and_type_map, concrete_type) } Replacement::Plain => concrete_type.to_string(), } @@ -240,7 +240,7 @@ impl ConstAndTypeMap { ) -> Option { let mut inner = HashMap::new(); let instance_generics = generic_args_to_const_and_type_generics(instance_args); - let alias_generics = generic_param_list_to_const_and_type_generics(&alias_generics); + let alias_generics = generic_param_list_to_const_and_type_generics(alias_generics); if instance_generics.len() > alias_generics.len() { cov_mark::hit!(too_many_generic_args); diff --git a/crates/ide-assists/src/handlers/unnecessary_async.rs b/crates/ide-assists/src/handlers/unnecessary_async.rs index 043988322533..7f612c2a142c 100644 --- a/crates/ide-assists/src/handlers/unnecessary_async.rs +++ b/crates/ide-assists/src/handlers/unnecessary_async.rs @@ -107,7 +107,7 @@ fn find_all_references( /// If no await expression is found, returns None. fn find_await_expression(ctx: &AssistContext<'_>, nameref: &NameRef) -> Option { // From the nameref, walk up the tree to the await expression. - let await_expr = if let Some(path) = full_path_of_name_ref(&nameref) { + let await_expr = if let Some(path) = full_path_of_name_ref(nameref) { // Function calls. path.syntax() .parent() diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index 02004ff7b686..7c6e5e100f63 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -32,12 +32,12 @@ pub(crate) fn complete_dot( complete_fields( acc, ctx, - &receiver_ty, + receiver_ty, |acc, field, ty| acc.add_field(ctx, dot_access, None, field, &ty), |acc, field, ty| acc.add_tuple_field(ctx, None, field, &ty), ); } - complete_methods(ctx, &receiver_ty, |func| acc.add_method(ctx, dot_access, func, None, None)); + complete_methods(ctx, receiver_ty, |func| acc.add_method(ctx, dot_access, func, None, None)); } pub(crate) fn complete_undotted_self( diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs index 3192b21cfb2e..cfe4787f734d 100644 --- a/crates/ide-completion/src/completions/expr.rs +++ b/crates/ide-completion/src/completions/expr.rs @@ -64,7 +64,7 @@ pub(crate) fn complete_expr_path( acc.add_enum_variants(ctx, path_ctx, e); } - ctx.iterate_path_candidates(&ty, |item| { + ctx.iterate_path_candidates(ty, |item| { add_assoc_item(acc, item); }); diff --git a/crates/ide-completion/src/completions/format_string.rs b/crates/ide-completion/src/completions/format_string.rs index 038bdb4279e0..5c46c5806e65 100644 --- a/crates/ide-completion/src/completions/format_string.rs +++ b/crates/ide-completion/src/completions/format_string.rs @@ -13,7 +13,7 @@ pub(crate) fn format_string( original: &ast::String, expanded: &ast::String, ) { - if !is_format_string(&expanded) { + if !is_format_string(expanded) { return; } let cursor = ctx.position.offset; diff --git a/crates/ide-completion/src/completions/type.rs b/crates/ide-completion/src/completions/type.rs index 8f9db2f94c20..37849c251a48 100644 --- a/crates/ide-completion/src/completions/type.rs +++ b/crates/ide-completion/src/completions/type.rs @@ -58,7 +58,7 @@ pub(crate) fn complete_type_path( trait_.items(ctx.sema.db).into_iter().for_each(|item| add_assoc_item(acc, item)) } Qualified::TypeAnchor { ty: Some(ty), trait_: None } => { - ctx.iterate_path_candidates(&ty, |item| { + ctx.iterate_path_candidates(ty, |item| { add_assoc_item(acc, item); }); diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index c412fd575c9d..e34824e22eac 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -226,7 +226,7 @@ fn analyze( find_node_at_offset(&file_with_fake_ident, offset) { let parent = name_ref.syntax().parent()?; - let (mut nameref_ctx, _) = classify_name_ref(&sema, &original_file, name_ref, parent)?; + let (mut nameref_ctx, _) = classify_name_ref(sema, &original_file, name_ref, parent)?; if let NameRefKind::Path(path_ctx) = &mut nameref_ctx.kind { path_ctx.kind = PathKind::Derive { existing_derives: sema @@ -277,7 +277,7 @@ fn analyze( return Some((analysis, (None, None), QualifierCtx::default())); } }; - let expected = expected_type_and_name(sema, &self_token, &name_like); + let expected = expected_type_and_name(sema, self_token, &name_like); let mut qual_ctx = QualifierCtx::default(); let analysis = match name_like { ast::NameLike::Lifetime(lifetime) => { @@ -374,7 +374,7 @@ fn expected_type_and_name( ast::ArgList(_) => { cov_mark::hit!(expected_type_fn_param); ActiveParameter::at_token( - &sema, + sema, token.clone(), ).map(|ap| { let name = ap.ident().map(NameOrNameRef::Name); @@ -507,7 +507,7 @@ fn classify_lifetime( _ => LifetimeKind::Lifetime, } }; - let lifetime = find_node_at_offset(&original_file, lifetime.syntax().text_range().start()); + let lifetime = find_node_at_offset(original_file, lifetime.syntax().text_range().start()); Some(LifetimeContext { lifetime, kind }) } @@ -548,7 +548,7 @@ fn classify_name( _ => return None, } }; - let name = find_node_at_offset(&original_file, name.syntax().text_range().start()); + let name = find_node_at_offset(original_file, name.syntax().text_range().start()); Some(NameContext { name, kind }) } @@ -558,7 +558,7 @@ fn classify_name_ref( name_ref: ast::NameRef, parent: SyntaxNode, ) -> Option<(NameRefContext, QualifierCtx)> { - let nameref = find_node_at_offset(&original_file, name_ref.syntax().text_range().start()); + let nameref = find_node_at_offset(original_file, name_ref.syntax().text_range().start()); let make_res = |kind| (NameRefContext { nameref: nameref.clone(), kind }, Default::default()); diff --git a/crates/ide-completion/src/render/union_literal.rs b/crates/ide-completion/src/render/union_literal.rs index 2d55a1bade3d..1b09ad1731f9 100644 --- a/crates/ide-completion/src/render/union_literal.rs +++ b/crates/ide-completion/src/render/union_literal.rs @@ -68,7 +68,7 @@ pub(crate) fn render_union_literal( item.set_documentation(ctx.docs(un)) .set_deprecated(ctx.is_deprecated(un)) - .detail(&detail) + .detail(detail) .set_relevance(ctx.completion_relevance()); match ctx.snippet_cap() { diff --git a/crates/ide-diagnostics/src/handlers/missing_fields.rs b/crates/ide-diagnostics/src/handlers/missing_fields.rs index 7f140eb6a74a..43af4d4f16aa 100644 --- a/crates/ide-diagnostics/src/handlers/missing_fields.rs +++ b/crates/ide-diagnostics/src/handlers/missing_fields.rs @@ -128,9 +128,9 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::MissingFields) -> Option>().join("\n\n"); let contents = sourcegen::add_preamble("sourcegen_diagnostic_docs", contents); let dst = project_root().join("docs/user/generated_diagnostic.adoc"); - fs::write(&dst, &contents).unwrap(); + fs::write(dst, contents).unwrap(); } #[derive(Debug)] diff --git a/crates/ide/src/expand_macro.rs b/crates/ide/src/expand_macro.rs index 93252339cd4a..418043d67981 100644 --- a/crates/ide/src/expand_macro.rs +++ b/crates/ide/src/expand_macro.rs @@ -163,7 +163,7 @@ fn _format( ) -> Option { use ide_db::base_db::{FileLoader, SourceDatabase}; // hack until we get hygiene working (same character amount to preserve formatting as much as possible) - const DOLLAR_CRATE_REPLACE: &str = &"__r_a_"; + const DOLLAR_CRATE_REPLACE: &str = "__r_a_"; let expansion = expansion.replace("$crate", DOLLAR_CRATE_REPLACE); let (prefix, suffix) = match kind { SyntaxKind::MACRO_PAT => ("fn __(", ": u32);"), diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index bfb19a40bdec..b214fa12a4fe 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -195,7 +195,7 @@ pub(crate) fn hover( // fallback to type hover if there aren't any other suggestions // this finds its own range instead of using the closest token's range .or_else(|| { - descended.iter().find_map(|token| hover_type_fallback(sema, config, token, &token)) + descended.iter().find_map(|token| hover_type_fallback(sema, config, token, token)) }) } diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index 4015a411c588..47257f0bfad0 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -276,7 +276,7 @@ pub(super) fn struct_rest_pat( } }; for (_, t) in &missing_fields { - walk_and_push_ty(sema.db, &t, &mut push_new_def); + walk_and_push_ty(sema.db, t, &mut push_new_def); } res.markup = { diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 9ec3f7f29ab5..987230abfbdd 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -253,7 +253,7 @@ fn label_of_ty( ty: hir::Type, label_builder: &mut InlayHintLabelBuilder<'_>, ) { - let iter_item_type = hint_iterator(sema, &famous_defs, &ty); + let iter_item_type = hint_iterator(sema, famous_defs, &ty); match iter_item_type { Some(ty) => { const LABEL_START: &str = "impl Iterator { bridge::TokenTree::Ident(bridge::Ident { - sym: Symbol::intern(&ident.text.trim_start_matches("r#")), + sym: Symbol::intern(ident.text.trim_start_matches("r#")), is_raw: ident.text.starts_with("r#"), span: ident.id, }) diff --git a/crates/profile/src/lib.rs b/crates/profile/src/lib.rs index 2e2ef0cfc2d7..7ca3c7d62957 100644 --- a/crates/profile/src/lib.rs +++ b/crates/profile/src/lib.rs @@ -114,7 +114,7 @@ impl Drop for CpuSpan { match out { Ok(out) if out.status.success() => { let svg = profile_data.with_extension("svg"); - std::fs::write(&svg, &out.stdout).unwrap(); + std::fs::write(&svg, out.stdout).unwrap(); eprintln!("Profile rendered to:\n\n {}\n", svg.display()); } _ => { diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs index ac17bb463cee..6550cf27e991 100644 --- a/crates/project-model/src/build_scripts.rs +++ b/crates/project-model/src/build_scripts.rs @@ -66,7 +66,7 @@ impl WorkspaceBuildScripts { _ => { let mut cmd = Command::new(toolchain::cargo()); - cmd.args(&["check", "--quiet", "--workspace", "--message-format=json"]); + cmd.args(["check", "--quiet", "--workspace", "--message-format=json"]); // --all-targets includes tests, benches and examples in addition to the // default lib and bins. This is an independent concept from the --target @@ -74,7 +74,7 @@ impl WorkspaceBuildScripts { cmd.arg("--all-targets"); if let Some(target) = &config.target { - cmd.args(&["--target", target]); + cmd.args(["--target", target]); } match &config.features { @@ -122,7 +122,7 @@ impl WorkspaceBuildScripts { InvocationLocation::Root(root) if config.run_build_script_command.is_some() => { root.as_path() } - _ => &workspace.workspace_root(), + _ => workspace.workspace_root(), } .as_ref(); @@ -133,7 +133,7 @@ impl WorkspaceBuildScripts { // building build scripts failed, attempt to build with --keep-going so // that we potentially get more build data let mut cmd = Self::build_command(config)?; - cmd.args(&["-Z", "unstable-options", "--keep-going"]).env("RUSTC_BOOTSTRAP", "1"); + cmd.args(["-Z", "unstable-options", "--keep-going"]).env("RUSTC_BOOTSTRAP", "1"); let mut res = Self::run_per_ws(cmd, workspace, current_dir, progress)?; res.error = Some(error); Ok(res) diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index 93f44d1ef562..f2a972094f81 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -517,7 +517,7 @@ fn cargo_config_build_target( cargo_config.envs(extra_env); cargo_config .current_dir(cargo_toml.parent()) - .args(&["-Z", "unstable-options", "config", "get", "build.target"]) + .args(["-Z", "unstable-options", "config", "get", "build.target"]) .env("RUSTC_BOOTSTRAP", "1"); // if successful we receive `build.target = "target-triple"` // or `build.target = ["", ..]` diff --git a/crates/project-model/src/rustc_cfg.rs b/crates/project-model/src/rustc_cfg.rs index 12c8cf70dc06..0066f6717efe 100644 --- a/crates/project-model/src/rustc_cfg.rs +++ b/crates/project-model/src/rustc_cfg.rs @@ -50,10 +50,10 @@ fn get_rust_cfgs( cargo_config.envs(extra_env); cargo_config .current_dir(cargo_toml.parent()) - .args(&["rustc", "-Z", "unstable-options", "--print", "cfg"]) + .args(["rustc", "-Z", "unstable-options", "--print", "cfg"]) .env("RUSTC_BOOTSTRAP", "1"); if let Some(target) = target { - cargo_config.args(&["--target", target]); + cargo_config.args(["--target", target]); } match utf8_stdout(cargo_config) { Ok(it) => return Ok(it), @@ -63,9 +63,9 @@ fn get_rust_cfgs( // using unstable cargo features failed, fall back to using plain rustc let mut cmd = Command::new(toolchain::rustc()); cmd.envs(extra_env); - cmd.args(&["--print", "cfg", "-O"]); + cmd.args(["--print", "cfg", "-O"]); if let Some(target) = target { - cmd.args(&["--target", target]); + cmd.args(["--target", target]); } utf8_stdout(cmd) } diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs index b62b2026b64b..8d5ab0061e51 100644 --- a/crates/project-model/src/sysroot.rs +++ b/crates/project-model/src/sysroot.rs @@ -171,7 +171,7 @@ fn discover_sysroot_dir( ) -> Result { let mut rustc = Command::new(toolchain::rustc()); rustc.envs(extra_env); - rustc.current_dir(current_dir).args(&["--print", "sysroot"]); + rustc.current_dir(current_dir).args(["--print", "sysroot"]); tracing::debug!("Discovering sysroot by {:?}", rustc); let stdout = utf8_stdout(rustc)?; Ok(AbsPathBuf::assert(PathBuf::from(stdout))) @@ -203,7 +203,7 @@ fn discover_sysroot_src_dir_or_add_component( .or_else(|| { let mut rustup = Command::new(toolchain::rustup()); rustup.envs(extra_env); - rustup.current_dir(current_dir).args(&["component", "add", "rust-src"]); + rustup.current_dir(current_dir).args(["component", "add", "rust-src"]); tracing::info!("adding rust-src component by {:?}", rustup); utf8_stdout(rustup).ok()?; get_rust_src(sysroot_path) diff --git a/crates/project-model/src/target_data_layout.rs b/crates/project-model/src/target_data_layout.rs index b9d7d2338c39..40cf47c3f559 100644 --- a/crates/project-model/src/target_data_layout.rs +++ b/crates/project-model/src/target_data_layout.rs @@ -15,10 +15,10 @@ pub(super) fn get( let mut cmd = Command::new(toolchain::rustc()); cmd.envs(extra_env); cmd.current_dir(cargo_toml.parent()) - .args(&["-Z", "unstable-options", "rustc", "--print", "target-spec-json"]) + .args(["-Z", "unstable-options", "rustc", "--print", "target-spec-json"]) .env("RUSTC_BOOTSTRAP", "1"); if let Some(target) = target { - cmd.args(&["--target", target]); + cmd.args(["--target", target]); } match utf8_stdout(cmd) { Ok(it) => return Ok(it), @@ -28,10 +28,10 @@ pub(super) fn get( // using unstable cargo features failed, fall back to using plain rustc let mut cmd = Command::new(toolchain::rustc()); cmd.envs(extra_env) - .args(&["-Z", "unstable-options", "rustc", "--print", "target-spec-json"]) + .args(["-Z", "unstable-options", "rustc", "--print", "target-spec-json"]) .env("RUSTC_BOOTSTRAP", "1"); if let Some(target) = target { - cmd.args(&["--target", target]); + cmd.args(["--target", target]); } utf8_stdout(cmd) })() diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 52ac3b6dc028..e2382aa37e8e 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -407,7 +407,7 @@ impl ProjectWorkspace { ["libexec", "lib"] .into_iter() .map(|segment| sysroot.root().join(segment).join(&standalone_server_name)) - .find(|server_path| std::fs::metadata(&server_path).is_ok()) + .find(|server_path| std::fs::metadata(server_path).is_ok()) } _ => None, } diff --git a/crates/rust-analyzer/src/caps.rs b/crates/rust-analyzer/src/caps.rs index 723b888d9abc..122d2e6ff1b7 100644 --- a/crates/rust-analyzer/src/caps.rs +++ b/crates/rust-analyzer/src/caps.rs @@ -42,7 +42,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities { "(".to_string(), ]), all_commit_characters: None, - completion_item: completion_item(&config), + completion_item: completion_item(config), work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None }, }), signature_help_provider: Some(SignatureHelpOptions { @@ -67,7 +67,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities { }, document_on_type_formatting_provider: Some(DocumentOnTypeFormattingOptions { first_trigger_character: "=".to_string(), - more_trigger_character: Some(more_trigger_character(&config)), + more_trigger_character: Some(more_trigger_character(config)), }), selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)), folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)), diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs index b1a803d28c6b..b050d1e95ac1 100644 --- a/crates/rust-analyzer/src/cli/scip.rs +++ b/crates/rust-analyzer/src/cli/scip.rs @@ -102,7 +102,7 @@ impl flags::Scip { let symbol = tokens_to_symbol .entry(id) .or_insert_with(|| { - let symbol = token_to_symbol(&token).unwrap_or_else(&mut new_local_symbol); + let symbol = token_to_symbol(token).unwrap_or_else(&mut new_local_symbol); scip::symbol::format_symbol(symbol) }) .clone(); @@ -176,7 +176,7 @@ fn get_relative_filepath( rootpath: &vfs::AbsPathBuf, file_id: ide::FileId, ) -> Option { - Some(vfs.file_path(file_id).as_path()?.strip_prefix(&rootpath)?.as_ref().to_str()?.to_string()) + Some(vfs.file_path(file_id).as_path()?.strip_prefix(rootpath)?.as_ref().to_str()?.to_string()) } // SCIP Ranges have a (very large) optimization that ranges if they are on the same line diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 02493bb1df69..0bc940dfe8da 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -877,7 +877,7 @@ impl GlobalState { if let Ok(vfs_path) = from_proto::vfs_path(¶ms.text_document.uri) { // Re-fetch workspaces if a workspace related file has changed if let Some(abs_path) = vfs_path.as_path() { - if reload::should_refresh_for_change(&abs_path, ChangeKind::Modify) { + if reload::should_refresh_for_change(abs_path, ChangeKind::Modify) { this.fetch_workspaces_queue .request_op(format!("DidSaveTextDocument {}", abs_path.display())); } diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs index 7465ca9ab577..2eafb0da6921 100644 --- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs +++ b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs @@ -14,7 +14,7 @@ fn sourcegen_feature_docs() { contents.trim() ); let dst = sourcegen::project_root().join("docs/user/generated_features.adoc"); - fs::write(&dst, &contents).unwrap(); + fs::write(dst, contents).unwrap(); } #[derive(Debug)] diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index a7d9a81dfcd2..72d26635c336 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -119,7 +119,7 @@ pub struct Location { impl fmt::Display for Location { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let path = self.file.strip_prefix(&project_root()).unwrap().display().to_string(); + let path = self.file.strip_prefix(project_root()).unwrap().display().to_string(); let path = path.replace('\\', "/"); let name = self.file.file_name().unwrap(); write!( @@ -175,7 +175,7 @@ pub fn ensure_file_contents(file: &Path, contents: &str) { } } - let display_path = file.strip_prefix(&project_root()).unwrap_or(file); + let display_path = file.strip_prefix(project_root()).unwrap_or(file); eprintln!( "\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n", display_path.display() diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs index d7ad4f332f36..a493c92e7dae 100644 --- a/crates/syntax/src/ast/edit_in_place.rs +++ b/crates/syntax/src/ast/edit_in_place.rs @@ -888,6 +888,6 @@ enum Foo { let enum_ = ast_mut_from_text::(before); enum_.variant_list().map(|it| it.add_variant(variant)); let after = enum_.to_string(); - assert_eq_text!(&trim_indent(expected.trim()), &trim_indent(&after.trim())); + assert_eq_text!(&trim_indent(expected.trim()), &trim_indent(after.trim())); } } diff --git a/crates/syntax/src/tests.rs b/crates/syntax/src/tests.rs index 9148c08b4af3..168439053c27 100644 --- a/crates/syntax/src/tests.rs +++ b/crates/syntax/src/tests.rs @@ -157,7 +157,7 @@ fn collect_rust_files(root_dir: &Path, paths: &[&str]) -> Vec<(PathBuf, String)> /// Collects paths to all `.rs` files from `dir` in a sorted `Vec`. fn rust_files_in_dir(dir: &Path) -> Vec { let mut acc = Vec::new(); - for file in fs::read_dir(&dir).unwrap() { + for file in fs::read_dir(dir).unwrap() { let file = file.unwrap(); let path = file.path(); if path.extension().unwrap_or_default() == "rs" { diff --git a/crates/test-utils/src/lib.rs b/crates/test-utils/src/lib.rs index ec3bf2140511..a7a52e08e75a 100644 --- a/crates/test-utils/src/lib.rs +++ b/crates/test-utils/src/lib.rs @@ -479,7 +479,7 @@ pub fn try_ensure_file_contents(file: &Path, contents: &str) -> Result<(), ()> { } _ => (), } - let display_path = file.strip_prefix(&project_root()).unwrap_or(file); + let display_path = file.strip_prefix(project_root()).unwrap_or(file); eprintln!( "\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n", display_path.display() From 7530d76f003efa7eab20abe794a9008bc2c65784 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 08:25:39 +0000 Subject: [PATCH 218/478] use pointer args --- crates/ide-assists/src/handlers/generate_function.rs | 2 +- crates/ide-assists/src/utils/gen_trait_fn_body.rs | 2 +- crates/test-utils/src/assert_linear.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs index 57f198748cb7..da9b0cda5b59 100644 --- a/crates/ide-assists/src/handlers/generate_function.rs +++ b/crates/ide-assists/src/handlers/generate_function.rs @@ -514,7 +514,7 @@ fn fn_args( /// vec!["foo_1".into(), "foo_2".into(), "bar_1".into(), "baz".into(), "bar_2".into()]; /// assert_eq!(names, expected); /// ``` -fn deduplicate_arg_names(arg_names: &mut Vec) { +fn deduplicate_arg_names(arg_names: &mut [String]) { let mut arg_name_counts = FxHashMap::default(); for name in arg_names.iter() { *arg_name_counts.entry(name).or_insert(0) += 1; diff --git a/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/crates/ide-assists/src/utils/gen_trait_fn_body.rs index f32e5ce97d2a..d4abb51259e9 100644 --- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs +++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs @@ -419,7 +419,7 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> { make::ext::path_from_idents(["Self", &variant.name()?.to_string()]) } - fn gen_tuple_field(field_name: &String) -> ast::Pat { + fn gen_tuple_field(field_name: &str) -> ast::Pat { ast::Pat::IdentPat(make::ident_pat(false, false, make::name(field_name))) } diff --git a/crates/test-utils/src/assert_linear.rs b/crates/test-utils/src/assert_linear.rs index d6acdde383f1..15c30c52a548 100644 --- a/crates/test-utils/src/assert_linear.rs +++ b/crates/test-utils/src/assert_linear.rs @@ -100,7 +100,7 @@ impl Round { self.linear = rmse < 0.05 && max_error < 0.1 && a > -0.1; - fn normalize(xs: &mut Vec) { + fn normalize(xs: &mut [f64]) { let max = xs.iter().copied().max_by(|a, b| a.partial_cmp(b).unwrap()).unwrap(); xs.iter_mut().for_each(|it| *it /= max); } From cc80c5bd0773b28c630a43e29d42cde65b91e7c4 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 08:30:23 +0000 Subject: [PATCH 219/478] remove unnecessary lazy evaluations --- crates/hir-def/src/item_scope.rs | 9 ++++----- crates/hir-def/src/macro_expansion_tests.rs | 2 +- crates/hir-expand/src/eager.rs | 2 +- crates/hir-ty/src/layout/tests.rs | 2 +- crates/hir-ty/src/method_resolution.rs | 2 +- crates/hir-ty/src/traits.rs | 2 +- crates/hir/src/lib.rs | 2 +- crates/hir/src/semantics.rs | 4 ++-- crates/hir/src/source_analyzer.rs | 2 +- .../src/handlers/add_missing_match_arms.rs | 4 ++-- .../handlers/convert_iter_for_each_to_for.rs | 2 +- .../src/handlers/extract_function.rs | 2 +- .../extract_struct_from_enum_variant.rs | 2 +- .../src/handlers/generate_getter.rs | 2 +- crates/ide-assists/src/handlers/remove_dbg.rs | 2 +- crates/ide-assists/src/utils.rs | 8 ++++---- .../src/completions/attribute.rs | 2 +- crates/ide-db/src/imports/merge_imports.rs | 2 +- crates/ide-db/src/search.rs | 4 ++-- crates/ide-db/src/syntax_helpers/node_ext.rs | 2 +- crates/ide/src/doc_links.rs | 2 +- crates/ide/src/extend_selection.rs | 2 +- crates/ide/src/goto_implementation.rs | 2 +- crates/ide/src/highlight_related.rs | 4 ++-- crates/ide/src/inlay_hints/bind_pat.rs | 2 +- .../ide/src/syntax_highlighting/highlight.rs | 2 +- crates/mbe/src/lib.rs | 2 +- crates/mbe/src/parser.rs | 2 +- crates/rust-analyzer/src/to_proto.rs | 4 ++-- crates/syntax/src/ast/generated/nodes.rs | 18 +++++++++--------- crates/syntax/src/tests/sourcegen_ast.rs | 2 +- 31 files changed, 50 insertions(+), 51 deletions(-) diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index 7721221c4447..6753d61ef810 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -159,15 +159,14 @@ impl ItemScope { pub(crate) fn name_of(&self, item: ItemInNs) -> Option<(&Name, Visibility)> { let (def, mut iter) = match item { ItemInNs::Macros(def) => { - return self - .macros - .iter() - .find_map(|(name, &(other_def, vis))| (other_def == def).then(|| (name, vis))); + return self.macros.iter().find_map(|(name, &(other_def, vis))| { + (other_def == def).then_some((name, vis)) + }); } ItemInNs::Types(def) => (def, self.types.iter()), ItemInNs::Values(def) => (def, self.values.iter()), }; - iter.find_map(|(name, &(other_def, vis))| (other_def == def).then(|| (name, vis))) + iter.find_map(|(name, &(other_def, vis))| (other_def == def).then_some((name, vis))) } pub(crate) fn traits<'a>(&'a self) -> impl Iterator + 'a { diff --git a/crates/hir-def/src/macro_expansion_tests.rs b/crates/hir-def/src/macro_expansion_tests.rs index 907cc98f7b59..79c85d118316 100644 --- a/crates/hir-def/src/macro_expansion_tests.rs +++ b/crates/hir-def/src/macro_expansion_tests.rs @@ -170,7 +170,7 @@ pub fn identity_when_valid(_attr: TokenStream, item: TokenStream) -> TokenStream } let pp = pretty_print_macro_expansion( parse.syntax_node(), - show_token_ids.then(|| &*token_map), + show_token_ids.then_some(&*token_map), ); let indent = IndentLevel::from_node(call.syntax()); let pp = reindent(indent, pp); diff --git a/crates/hir-expand/src/eager.rs b/crates/hir-expand/src/eager.rs index 2f55e78b7634..a1474c44e6c6 100644 --- a/crates/hir-expand/src/eager.rs +++ b/crates/hir-expand/src/eager.rs @@ -208,7 +208,7 @@ fn eager_macro_recur( // Collect replacement for child in children { let def = match child.path().and_then(|path| ModPath::from_src(db, path, hygiene)) { - Some(path) => macro_resolver(path.clone()).ok_or_else(|| UnresolvedMacro { path })?, + Some(path) => macro_resolver(path.clone()).ok_or(UnresolvedMacro { path })?, None => { diagnostic_sink(ExpandError::Other("malformed macro invocation".into())); continue; diff --git a/crates/hir-ty/src/layout/tests.rs b/crates/hir-ty/src/layout/tests.rs index d97cb4bc711b..72af80fbc19e 100644 --- a/crates/hir-ty/src/layout/tests.rs +++ b/crates/hir-ty/src/layout/tests.rs @@ -37,7 +37,7 @@ fn eval_goal(ra_fixture: &str, minicore: &str) -> Result { hir_def::AdtId::UnionId(x) => db.union_data(x).name.to_smol_str(), hir_def::AdtId::EnumId(x) => db.enum_data(x).name.to_smol_str(), }; - (name == "Goal").then(|| x) + (name == "Goal").then_some(x) } _ => None, }) diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs index b6f41c0e828f..2328dceb8390 100644 --- a/crates/hir-ty/src/method_resolution.rs +++ b/crates/hir-ty/src/method_resolution.rs @@ -714,7 +714,7 @@ fn lookup_impl_assoc_item_for_trait_ref( let impl_data = find_matching_impl(impls, table, trait_ref)?; impl_data.items.iter().find_map(|it| match it { AssocItemId::FunctionId(f) => { - (db.function_data(*f).name == *name).then(|| AssocItemId::FunctionId(*f)) + (db.function_data(*f).name == *name).then_some(AssocItemId::FunctionId(*f)) } AssocItemId::ConstId(c) => db .const_data(*c) diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs index 615fd9d94db6..2d3a93392b31 100644 --- a/crates/hir-ty/src/traits.rs +++ b/crates/hir-ty/src/traits.rs @@ -61,7 +61,7 @@ impl TraitEnvironment { ) -> impl Iterator + 'a { self.traits_from_clauses .iter() - .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then(|| *trait_id)) + .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then_some(*trait_id)) } } diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 86fd45e82469..840d14698081 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -1559,7 +1559,7 @@ impl Function { } pub fn self_param(self, db: &dyn HirDatabase) -> Option { - self.has_self_param(db).then(|| SelfParam { func: self.id }) + self.has_self_param(db).then_some(SelfParam { func: self.id }) } pub fn assoc_fn_params(self, db: &dyn HirDatabase) -> Vec { diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index d43c5c83096e..e0d26103915c 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -795,7 +795,7 @@ impl<'db> SemanticsImpl<'db> { // requeue the tokens we got from mapping our current token down stack.extend(mapped_tokens); // if the length changed we have found a mapping for the token - (stack.len() != len).then(|| ()) + (stack.len() != len).then_some(()) }; // Remap the next token in the queue into a macro call its in, if it is not being remapped @@ -1221,7 +1221,7 @@ impl<'db> SemanticsImpl<'db> { krate .dependencies(self.db) .into_iter() - .find_map(|dep| (dep.name == name).then(|| dep.krate)) + .find_map(|dep| (dep.name == name).then_some(dep.krate)) } fn resolve_variant(&self, record_lit: ast::RecordExpr) -> Option { diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index be062ec3723a..7a591a54106d 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -987,7 +987,7 @@ fn resolve_hir_path_( db, def, res.in_type_ns()?, - |name, id| (name == unresolved.name).then(|| id), + |name, id| (name == unresolved.name).then_some(id), ) }) .map(TypeAlias::from) diff --git a/crates/ide-assists/src/handlers/add_missing_match_arms.rs b/crates/ide-assists/src/handlers/add_missing_match_arms.rs index 73f4db4e5ff2..8e4ac69ae6f6 100644 --- a/crates/ide-assists/src/handlers/add_missing_match_arms.rs +++ b/crates/ide-assists/src/handlers/add_missing_match_arms.rs @@ -326,7 +326,7 @@ impl ExtendedEnum { fn resolve_enum_def(sema: &Semantics<'_, RootDatabase>, expr: &ast::Expr) -> Option { sema.type_of_expr(expr)?.adjusted().autoderef(sema.db).find_map(|ty| match ty.as_adt() { Some(Adt::Enum(e)) => Some(ExtendedEnum::Enum(e)), - _ => ty.is_bool().then(|| ExtendedEnum::Bool), + _ => ty.is_bool().then_some(ExtendedEnum::Bool), }) } @@ -344,7 +344,7 @@ fn resolve_tuple_of_enum_def( // For now we only handle expansion for a tuple of enums. Here // we map non-enum items to None and rely on `collect` to // convert Vec> into Option>. - _ => ty.is_bool().then(|| ExtendedEnum::Bool), + _ => ty.is_bool().then_some(ExtendedEnum::Bool), }) }) .collect() diff --git a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs index 80eecf4a0986..f32ef2d59d89 100644 --- a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs +++ b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs @@ -216,7 +216,7 @@ fn validate_method_call_expr( let krate = module.krate(); let iter_trait = FamousDefs(sema, krate).core_iter_Iterator()?; - it_type.impls_trait(sema.db, iter_trait, &[]).then(|| (expr, receiver)) + it_type.impls_trait(sema.db, iter_trait, &[]).then_some((expr, receiver)) } #[cfg(test)] diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index 4ee9d4638bbd..74f74b793a44 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -588,7 +588,7 @@ impl FunctionBody { FunctionBody::Expr(expr) => Some(expr.clone()), FunctionBody::Span { parent, text_range } => { let tail_expr = parent.tail_expr()?; - text_range.contains_range(tail_expr.syntax().text_range()).then(|| tail_expr) + text_range.contains_range(tail_expr.syntax().text_range()).then_some(tail_expr) } } } diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index b4e10667b07a..49debafe1a0a 100644 --- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs @@ -178,7 +178,7 @@ fn extract_generic_params( .fold(false, |tagged, ty| tag_generics_in_variant(&ty, &mut generics) || tagged), }; - let generics = generics.into_iter().filter_map(|(param, tag)| tag.then(|| param)); + let generics = generics.into_iter().filter_map(|(param, tag)| tag.then_some(param)); tagged_one.then(|| make::generic_param_list(generics)) } diff --git a/crates/ide-assists/src/handlers/generate_getter.rs b/crates/ide-assists/src/handlers/generate_getter.rs index 07040f6f08b3..15641b448d00 100644 --- a/crates/ide-assists/src/handlers/generate_getter.rs +++ b/crates/ide-assists/src/handlers/generate_getter.rs @@ -271,7 +271,7 @@ fn generate_getter_from_info( }}", vis, record_field_info.fn_name, - info.mutable.then(|| "mut ").unwrap_or_default(), + info.mutable.then_some("mut ").unwrap_or_default(), ty, body, ); diff --git a/crates/ide-assists/src/handlers/remove_dbg.rs b/crates/ide-assists/src/handlers/remove_dbg.rs index 99ae60e07bcf..52dd670ec2a4 100644 --- a/crates/ide-assists/src/handlers/remove_dbg.rs +++ b/crates/ide-assists/src/handlers/remove_dbg.rs @@ -64,7 +64,7 @@ fn compute_dbg_replacement(macro_call: ast::MacroCall) -> Option<(TextRange, Str let input_expressions = mac_input.group_by(|tok| tok.kind() == T![,]); let input_expressions = input_expressions .into_iter() - .filter_map(|(is_sep, group)| (!is_sep).then(|| group)) + .filter_map(|(is_sep, group)| (!is_sep).then_some(group)) .map(|mut tokens| syntax::hacks::parse_expr_from_str(&tokens.join(""))) .collect::>>()?; diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index f38a2d04ff6e..57c37e5b8386 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -613,7 +613,7 @@ pub(crate) fn convert_reference_type( } fn handle_copy(ty: &hir::Type, db: &dyn HirDatabase) -> Option { - ty.is_copy(db).then(|| ReferenceConversionType::Copy) + ty.is_copy(db).then_some(ReferenceConversionType::Copy) } fn handle_as_ref_str( @@ -624,7 +624,7 @@ fn handle_as_ref_str( let str_type = hir::BuiltinType::str().ty(db); ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[str_type]) - .then(|| ReferenceConversionType::AsRefStr) + .then_some(ReferenceConversionType::AsRefStr) } fn handle_as_ref_slice( @@ -636,7 +636,7 @@ fn handle_as_ref_slice( let slice_type = hir::Type::new_slice(type_argument); ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[slice_type]) - .then(|| ReferenceConversionType::AsRefSlice) + .then_some(ReferenceConversionType::AsRefSlice) } fn handle_dereferenced( @@ -647,7 +647,7 @@ fn handle_dereferenced( let type_argument = ty.type_arguments().next()?; ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[type_argument]) - .then(|| ReferenceConversionType::Dereferenced) + .then_some(ReferenceConversionType::Dereferenced) } fn handle_option_as_ref( diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs index 21fe21263634..bb950c76f883 100644 --- a/crates/ide-completion/src/completions/attribute.rs +++ b/crates/ide-completion/src/completions/attribute.rs @@ -357,7 +357,7 @@ fn parse_comma_sep_expr(input: ast::TokenTree) -> Option> { Some( input_expressions .into_iter() - .filter_map(|(is_sep, group)| (!is_sep).then(|| group)) + .filter_map(|(is_sep, group)| (!is_sep).then_some(group)) .filter_map(|mut tokens| syntax::hacks::parse_expr_from_str(&tokens.join(""))) .collect::>(), ) diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs index 371d642c15d1..27b6321f3a7a 100644 --- a/crates/ide-db/src/imports/merge_imports.rs +++ b/crates/ide-db/src/imports/merge_imports.rs @@ -91,7 +91,7 @@ fn recursive_merge(lhs: &ast::UseTree, rhs: &ast::UseTree, merge: MergeBehavior) .flat_map(|list| list.use_trees()) // We use Option here to early return from this function(this is not the // same as a `filter` op). - .map(|tree| merge.is_tree_allowed(&tree).then(|| tree)) + .map(|tree| merge.is_tree_allowed(&tree).then_some(tree)) .collect::>()?; use_trees.sort_unstable_by(|a, b| path_cmp_for_sort(a.path(), b.path())); for rhs_t in rhs.use_tree_list().into_iter().flat_map(|list| list.use_trees()) { diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs index aa5d7e9beb54..b2b0e49085c8 100644 --- a/crates/ide-db/src/search.rs +++ b/crates/ide-db/src/search.rs @@ -608,7 +608,7 @@ impl<'a> FindUsages<'a> { let reference = FileReference { range, name: ast::NameLike::NameRef(name_ref.clone()), - category: is_name_ref_in_import(name_ref).then(|| ReferenceCategory::Import), + category: is_name_ref_in_import(name_ref).then_some(ReferenceCategory::Import), }; sink(file_id, reference) } @@ -787,7 +787,7 @@ impl ReferenceCategory { fn new(def: &Definition, r: &ast::NameRef) -> Option { // Only Locals and Fields have accesses for now. if !matches!(def, Definition::Local(_) | Definition::Field(_)) { - return is_name_ref_in_import(r).then(|| ReferenceCategory::Import); + return is_name_ref_in_import(r).then_some(ReferenceCategory::Import); } let mode = r.syntax().ancestors().find_map(|node| { diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs index b72003ff3633..d7e7d59e15e6 100644 --- a/crates/ide-db/src/syntax_helpers/node_ext.rs +++ b/crates/ide-db/src/syntax_helpers/node_ext.rs @@ -449,7 +449,7 @@ pub fn parse_tt_as_comma_sep_paths(input: ast::TokenTree) -> Option it.path(), diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index 8569701346d4..f937175deaeb 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -273,7 +273,7 @@ impl DocCommentToken { let (in_expansion_range, link, ns) = extract_definitions_from_docs(&docs).into_iter().find_map(|(range, link, ns)| { let mapped = doc_mapping.map(range)?; - (mapped.value.contains(abs_in_expansion_offset)).then(|| (mapped.value, link, ns)) + (mapped.value.contains(abs_in_expansion_offset)).then_some((mapped.value, link, ns)) })?; // get the relative range to the doc/attribute in the expansion let in_expansion_relative_range = in_expansion_range - descended_prefix_len - token_start; diff --git a/crates/ide/src/extend_selection.rs b/crates/ide/src/extend_selection.rs index 45f1fd74841c..9f78c75e90aa 100644 --- a/crates/ide/src/extend_selection.rs +++ b/crates/ide/src/extend_selection.rs @@ -205,7 +205,7 @@ fn extend_single_word_in_comment_or_string( } let start_idx = before.rfind(non_word_char)? as u32; - let end_idx = after.find(non_word_char).unwrap_or_else(|| after.len()) as u32; + let end_idx = after.find(non_word_char).unwrap_or(after.len()) as u32; let from: TextSize = (start_idx + 1).into(); let to: TextSize = (cursor_position + end_idx).into(); diff --git a/crates/ide/src/goto_implementation.rs b/crates/ide/src/goto_implementation.rs index b3f711b6b88c..190ab80ba0ff 100644 --- a/crates/ide/src/goto_implementation.rs +++ b/crates/ide/src/goto_implementation.rs @@ -110,7 +110,7 @@ fn impls_for_trait_item( .filter_map(|imp| { let item = imp.items(sema.db).iter().find_map(|itm| { let itm_name = itm.name(sema.db)?; - (itm_name == fun_name).then(|| *itm) + (itm_name == fun_name).then_some(*itm) })?; item.try_to_nav(sema.db) }) diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs index 28f65a11cfa6..55f8779eed7d 100644 --- a/crates/ide/src/highlight_related.rs +++ b/crates/ide/src/highlight_related.rs @@ -110,7 +110,7 @@ fn highlight_references( .and_then(|decl| decl.focus_range) .map(|range| { let category = - references::decl_mutability(&def, node, range).then(|| ReferenceCategory::Write); + references::decl_mutability(&def, node, range).then_some(ReferenceCategory::Write); HighlightedRange { range, category } }); if let Some(hl_range) = hl_range { @@ -365,7 +365,7 @@ mod tests { let mut expected = annotations .into_iter() - .map(|(r, access)| (r.range, (!access.is_empty()).then(|| access))) + .map(|(r, access)| (r.range, (!access.is_empty()).then_some(access))) .collect::>(); let mut actual = hls diff --git a/crates/ide/src/inlay_hints/bind_pat.rs b/crates/ide/src/inlay_hints/bind_pat.rs index 7127c433c63d..adec19c765a1 100644 --- a/crates/ide/src/inlay_hints/bind_pat.rs +++ b/crates/ide/src/inlay_hints/bind_pat.rs @@ -167,7 +167,7 @@ fn is_named_constructor( ast::PathSegmentKind::Type { type_ref: Some(ty), trait_ref: None } => ty.to_string(), _ => return None, }; - (ctor_name == ty_name).then(|| ()) + (ctor_name == ty_name).then_some(()) } fn pat_is_enum_variant(db: &RootDatabase, bind_pat: &ast::IdentPat, pat_ty: &hir::Type) -> bool { diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index a06c6abf286e..892e6a9bb0ab 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -111,7 +111,7 @@ fn punctuation( let is_raw_ptr = (|| { let prefix_expr = parent.and_then(ast::PrefixExpr::cast)?; let expr = prefix_expr.expr()?; - sema.type_of_expr(&expr)?.original.is_raw_ptr().then(|| ()) + sema.type_of_expr(&expr)?.original.is_raw_ptr().then_some(()) })(); if let Some(()) = is_raw_ptr { HlTag::Operator(HlOperator::Other) | HlMod::Unsafe diff --git a/crates/mbe/src/lib.rs b/crates/mbe/src/lib.rs index c4f0fa20d6de..2373db97a3e4 100644 --- a/crates/mbe/src/lib.rs +++ b/crates/mbe/src/lib.rs @@ -140,7 +140,7 @@ impl Shift { | tt::Leaf::Punct(tt::Punct { id, .. }) | tt::Leaf::Literal(tt::Literal { id, .. })) = leaf; - (id != tt::TokenId::unspecified()).then(|| id.0) + (id != tt::TokenId::unspecified()).then_some(id.0) } }; subtree.token_trees.iter().filter_map(filter).max() diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index 3d9a61dbc866..d4345ba47800 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -273,7 +273,7 @@ fn parse_repeat(src: &mut TtIter<'_>) -> Result<(Option, RepeatKind), _ => return Err(ParseError::InvalidRepeat), }, }; - return Ok((has_sep.then(|| separator), repeat_kind)); + return Ok((has_sep.then_some(separator), repeat_kind)); } } } diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 6773fc40e162..a12bd3952cc1 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -228,7 +228,7 @@ fn completion_item( max_relevance: u32, item: CompletionItem, ) { - let insert_replace_support = config.insert_replace_support().then(|| tdpp.position); + let insert_replace_support = config.insert_replace_support().then_some(tdpp.position); let mut additional_text_edits = Vec::new(); // LSP does not allow arbitrary edits in completion, so we have to do a @@ -258,7 +258,7 @@ fn completion_item( text_edit.unwrap() }; - let insert_text_format = item.is_snippet().then(|| lsp_types::InsertTextFormat::SNIPPET); + let insert_text_format = item.is_snippet().then_some(lsp_types::InsertTextFormat::SNIPPET); let tags = item.deprecated().then(|| vec![lsp_types::CompletionItemTag::DEPRECATED]); let command = if item.trigger_call_info() && config.client_commands().trigger_parameter_hints { Some(command::trigger_parameter_hints()) diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs index 86d222723d50..a214a5e4462c 100644 --- a/crates/syntax/src/ast/generated/nodes.rs +++ b/crates/syntax/src/ast/generated/nodes.rs @@ -3921,7 +3921,7 @@ impl AnyHasArgList { impl AstNode for AnyHasArgList { fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, CALL_EXPR | METHOD_CALL_EXPR) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasArgList { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasArgList { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4006,7 +4006,7 @@ impl AstNode for AnyHasAttrs { ) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasAttrs { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasAttrs { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4043,7 +4043,7 @@ impl AstNode for AnyHasDocComments { ) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasDocComments { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasDocComments { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4058,7 +4058,7 @@ impl AstNode for AnyHasGenericParams { matches!(kind, ENUM | FN | IMPL | STRUCT | TRAIT | TYPE_ALIAS | UNION) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasGenericParams { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasGenericParams { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4071,7 +4071,7 @@ impl AnyHasLoopBody { impl AstNode for AnyHasLoopBody { fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, FOR_EXPR | LOOP_EXPR | WHILE_EXPR) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasLoopBody { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasLoopBody { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4084,7 +4084,7 @@ impl AnyHasModuleItem { impl AstNode for AnyHasModuleItem { fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, MACRO_ITEMS | SOURCE_FILE | ITEM_LIST) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasModuleItem { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasModuleItem { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4119,7 +4119,7 @@ impl AstNode for AnyHasName { ) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasName { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasName { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4137,7 +4137,7 @@ impl AstNode for AnyHasTypeBounds { ) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasTypeBounds { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasTypeBounds { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } @@ -4171,7 +4171,7 @@ impl AstNode for AnyHasVisibility { ) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| AnyHasVisibility { syntax }) + Self::can_cast(syntax.kind()).then_some(AnyHasVisibility { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax } } diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs index d66ff7365f8e..03aa2c451e84 100644 --- a/crates/syntax/src/tests/sourcegen_ast.rs +++ b/crates/syntax/src/tests/sourcegen_ast.rs @@ -253,7 +253,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String { matches!(kind, #(#kinds)|*) } fn cast(syntax: SyntaxNode) -> Option { - Self::can_cast(syntax.kind()).then(|| #name { syntax }) + Self::can_cast(syntax.kind()).then_some(#name { syntax }) } fn syntax(&self) -> &SyntaxNode { &self.syntax From efd2c20e96bfcd2b988dd261f882d1405fc2361d Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 08:42:44 +0000 Subject: [PATCH 220/478] remove useless conversions --- crates/hir-def/src/nameres/collector.rs | 4 ++-- crates/hir-def/src/nameres/path_resolution.rs | 2 +- crates/hir-def/src/resolver.rs | 7 ++----- crates/hir-ty/src/consteval/tests.rs | 1 - crates/hir-ty/src/infer/expr.rs | 2 +- crates/hir-ty/src/infer/pat.rs | 2 +- crates/hir-ty/src/layout/tests.rs | 1 - crates/hir/src/lib.rs | 6 +++--- crates/hir/src/source_analyzer.rs | 14 +++++++------- .../src/handlers/generate_default_from_new.rs | 2 +- crates/ide-assists/src/handlers/generate_deref.rs | 3 +-- .../replace_turbofish_with_explicit_type.rs | 2 +- crates/ide-completion/src/tests.rs | 2 +- crates/ide/src/rename.rs | 7 ++----- crates/mbe/src/syntax_bridge.rs | 2 +- crates/rust-analyzer/src/diagnostics.rs | 3 +-- crates/rust-analyzer/src/handlers.rs | 4 +--- 17 files changed, 26 insertions(+), 38 deletions(-) diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs index 1955745c3b09..160203b77834 100644 --- a/crates/hir-def/src/nameres/collector.rs +++ b/crates/hir-def/src/nameres/collector.rs @@ -67,7 +67,7 @@ pub(super) fn collect_defs(db: &dyn DefDatabase, mut def_map: DefMap, tree_id: T let dep_def_map = db.crate_def_map(dep.crate_id); let dep_root = dep_def_map.module_id(dep_def_map.root); - deps.insert(dep.as_name(), dep_root.into()); + deps.insert(dep.as_name(), dep_root); if dep.is_prelude() && !tree_id.is_block() { def_map.extern_prelude.insert(dep.as_name(), dep_root); @@ -2085,7 +2085,7 @@ impl ModCollector<'_, '_> { .scope .get_legacy_macro(name) .and_then(|it| it.last()) - .map(|&it| macro_id_to_def_id(self.def_collector.db, it.into())) + .map(|&it| macro_id_to_def_id(self.def_collector.db, it)) }, ) }) diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs index c7c50fa94a09..1d9d5cccded2 100644 --- a/crates/hir-def/src/nameres/path_resolution.rs +++ b/crates/hir-def/src/nameres/path_resolution.rs @@ -390,7 +390,7 @@ impl DefMap { .get_legacy_macro(name) // FIXME: shadowing .and_then(|it| it.last()) - .map_or_else(PerNs::none, |&m| PerNs::macros(m.into(), Visibility::Public)); + .map_or_else(PerNs::none, |&m| PerNs::macros(m, Visibility::Public)); let from_scope = self[module].scope.get(name); let from_builtin = match self.block { Some(_) => { diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs index 070f6837133a..1ef7f9577fe8 100644 --- a/crates/hir-def/src/resolver.rs +++ b/crates/hir-def/src/resolver.rs @@ -381,7 +381,7 @@ impl Resolver { }); def_map[module_id].scope.legacy_macros().for_each(|(name, macs)| { macs.iter().for_each(|&mac| { - res.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(MacroId::from(mac)))); + res.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(mac))); }) }); def_map.extern_prelude().for_each(|(name, &def)| { @@ -517,10 +517,7 @@ impl Scope { }); m.def_map[m.module_id].scope.legacy_macros().for_each(|(name, macs)| { macs.iter().for_each(|&mac| { - acc.add( - name, - ScopeDef::ModuleDef(ModuleDefId::MacroId(MacroId::from(mac))), - ); + acc.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(mac))); }) }); } diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs index 6ba03737cf8e..3c930c077b3b 100644 --- a/crates/hir-ty/src/consteval/tests.rs +++ b/crates/hir-ty/src/consteval/tests.rs @@ -25,7 +25,6 @@ fn eval_goal(ra_fixture: &str) -> Result { let scope = &def_map[module_id.local_id].scope; let const_id = scope .declarations() - .into_iter() .find_map(|x| match x { hir_def::ModuleDefId::ConstId(x) => { if db.const_data(x).name.as_ref()?.to_string() == "GOAL" { diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index c5aa7357772c..ba8f55e8ae36 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -960,7 +960,7 @@ impl<'a> InferenceContext<'a> { Expr::RecordLit { path, fields, .. } => { let subs = fields.iter().map(|f| (f.name.clone(), f.expr)); - self.infer_record_pat_like(path.as_deref(), &rhs_ty, (), lhs.into(), subs) + self.infer_record_pat_like(path.as_deref(), &rhs_ty, (), lhs, subs) } Expr::Underscore => rhs_ty.clone(), _ => { diff --git a/crates/hir-ty/src/infer/pat.rs b/crates/hir-ty/src/infer/pat.rs index e32c760b8b07..f154dac8e879 100644 --- a/crates/hir-ty/src/infer/pat.rs +++ b/crates/hir-ty/src/infer/pat.rs @@ -220,7 +220,7 @@ impl<'a> InferenceContext<'a> { ), Pat::Record { path: p, args: fields, ellipsis: _ } => { let subs = fields.iter().map(|f| (f.name.clone(), f.pat)); - self.infer_record_pat_like(p.as_deref(), &expected, default_bm, pat.into(), subs) + self.infer_record_pat_like(p.as_deref(), &expected, default_bm, pat, subs) } Pat::Path(path) => { // FIXME use correct resolver for the surrounding expression diff --git a/crates/hir-ty/src/layout/tests.rs b/crates/hir-ty/src/layout/tests.rs index 72af80fbc19e..53838cf41d27 100644 --- a/crates/hir-ty/src/layout/tests.rs +++ b/crates/hir-ty/src/layout/tests.rs @@ -29,7 +29,6 @@ fn eval_goal(ra_fixture: &str, minicore: &str) -> Result { let scope = &def_map[module_id.local_id].scope; let adt_id = scope .declarations() - .into_iter() .find_map(|x| match x { hir_def::ModuleDefId::AdtId(x) => { let name = match x { diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 840d14698081..2b24b5c31b27 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -608,7 +608,7 @@ impl Module { pub fn legacy_macros(self, db: &dyn HirDatabase) -> Vec { let def_map = self.id.def_map(db.upcast()); let scope = &def_map[self.id.local_id].scope; - scope.legacy_macros().flat_map(|(_, it)| it).map(|&it| MacroId::from(it).into()).collect() + scope.legacy_macros().flat_map(|(_, it)| it).map(|&it| it.into()).collect() } pub fn impl_defs(self, db: &dyn HirDatabase) -> Vec { @@ -2411,7 +2411,7 @@ pub struct DeriveHelper { impl DeriveHelper { pub fn derive(&self) -> Macro { - Macro { id: self.derive.into() } + Macro { id: self.derive } } pub fn name(&self, db: &dyn HirDatabase) -> Name { @@ -2781,7 +2781,7 @@ impl Impl { pub fn all_for_trait(db: &dyn HirDatabase, trait_: Trait) -> Vec { let krate = trait_.module(db).krate(); let mut all = Vec::new(); - for Crate { id } in krate.transitive_reverse_dependencies(db).into_iter() { + for Crate { id } in krate.transitive_reverse_dependencies(db) { let impls = db.trait_impls_in_crate(id); all.extend(impls.for_trait(trait_.id).map(Self::from)) } diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index 7a591a54106d..059b80bcf139 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -270,7 +270,7 @@ impl SourceAnalyzer { db: &dyn HirDatabase, await_expr: &ast::AwaitExpr, ) -> Option { - let mut ty = self.ty_of_expr(db, &await_expr.expr()?.into())?.clone(); + let mut ty = self.ty_of_expr(db, &await_expr.expr()?)?.clone(); let into_future_trait = self .resolver @@ -316,7 +316,7 @@ impl SourceAnalyzer { ast::UnaryOp::Not => name![not], ast::UnaryOp::Neg => name![neg], }; - let ty = self.ty_of_expr(db, &prefix_expr.expr()?.into())?; + let ty = self.ty_of_expr(db, &prefix_expr.expr()?)?; let (op_trait, op_fn) = self.lang_trait_fn(db, &lang_item_name, &lang_item_name)?; // HACK: subst for all methods coincides with that for their trait because the methods @@ -331,8 +331,8 @@ impl SourceAnalyzer { db: &dyn HirDatabase, index_expr: &ast::IndexExpr, ) -> Option { - let base_ty = self.ty_of_expr(db, &index_expr.base()?.into())?; - let index_ty = self.ty_of_expr(db, &index_expr.index()?.into())?; + let base_ty = self.ty_of_expr(db, &index_expr.base()?)?; + let index_ty = self.ty_of_expr(db, &index_expr.index()?)?; let lang_item_name = name![index]; @@ -352,8 +352,8 @@ impl SourceAnalyzer { binop_expr: &ast::BinExpr, ) -> Option { let op = binop_expr.op_kind()?; - let lhs = self.ty_of_expr(db, &binop_expr.lhs()?.into())?; - let rhs = self.ty_of_expr(db, &binop_expr.rhs()?.into())?; + let lhs = self.ty_of_expr(db, &binop_expr.lhs()?)?; + let rhs = self.ty_of_expr(db, &binop_expr.rhs()?)?; let (op_trait, op_fn) = lang_names_for_bin_op(op) .and_then(|(name, lang_item)| self.lang_trait_fn(db, &lang_item, &name))?; @@ -372,7 +372,7 @@ impl SourceAnalyzer { db: &dyn HirDatabase, try_expr: &ast::TryExpr, ) -> Option { - let ty = self.ty_of_expr(db, &try_expr.expr()?.into())?; + let ty = self.ty_of_expr(db, &try_expr.expr()?)?; let op_fn = db.lang_item(self.resolver.krate(), name![branch].to_smol_str())?.as_function()?; diff --git a/crates/ide-assists/src/handlers/generate_default_from_new.rs b/crates/ide-assists/src/handlers/generate_default_from_new.rs index 49d9fd707ffc..2d074a33e7fd 100644 --- a/crates/ide-assists/src/handlers/generate_default_from_new.rs +++ b/crates/ide-assists/src/handlers/generate_default_from_new.rs @@ -53,7 +53,7 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext<' return None; } - let impl_ = fn_node.syntax().ancestors().into_iter().find_map(ast::Impl::cast)?; + let impl_ = fn_node.syntax().ancestors().find_map(ast::Impl::cast)?; if is_default_implemented(ctx, &impl_) { cov_mark::hit!(default_block_is_already_present); cov_mark::hit!(struct_in_module_with_default); diff --git a/crates/ide-assists/src/handlers/generate_deref.rs b/crates/ide-assists/src/handlers/generate_deref.rs index 55b7afb3d3b0..b6958e29193c 100644 --- a/crates/ide-assists/src/handlers/generate_deref.rs +++ b/crates/ide-assists/src/handlers/generate_deref.rs @@ -85,8 +85,7 @@ fn generate_tuple_deref(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<() let strukt = ctx.find_node_at_offset::()?; let field = ctx.find_node_at_offset::()?; let field_list = ctx.find_node_at_offset::()?; - let field_list_index = - field_list.syntax().children().into_iter().position(|s| &s == field.syntax())?; + let field_list_index = field_list.syntax().children().position(|s| &s == field.syntax())?; let deref_type_to_generate = match existing_deref_impl(&ctx.sema, &strukt) { None => DerefType::Deref, diff --git a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs index c177adc7a10d..6626ce079599 100644 --- a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs +++ b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs @@ -42,7 +42,7 @@ pub(crate) fn replace_turbofish_with_explicit_type( let r_angle = generic_args.r_angle_token()?; let turbofish_range = TextRange::new(colon2.text_range().start(), r_angle.text_range().end()); - let turbofish_args: Vec = generic_args.generic_args().into_iter().collect(); + let turbofish_args: Vec = generic_args.generic_args().collect(); // Find type of ::<_> if turbofish_args.len() != 1 { diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs index d206377e177a..abe14e48e223 100644 --- a/crates/ide-completion/src/tests.rs +++ b/crates/ide-completion/src/tests.rs @@ -183,7 +183,7 @@ pub(crate) fn check_edit_with_config( let ra_fixture_after = trim_indent(ra_fixture_after); let (db, position) = position(ra_fixture_before); let completions: Vec = - crate::completions(&db, &config, position, None).unwrap().into(); + crate::completions(&db, &config, position, None).unwrap(); let (completion,) = completions .iter() .filter(|it| it.lookup() == what) diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs index 595a3b8ac4f1..15bdf14fb9b6 100644 --- a/crates/ide/src/rename.rs +++ b/crates/ide/src/rename.rs @@ -364,11 +364,8 @@ mod tests { } Err(err) => { if ra_fixture_after.starts_with("error:") { - let error_message = ra_fixture_after - .chars() - .into_iter() - .skip("error:".len()) - .collect::(); + let error_message = + ra_fixture_after.chars().skip("error:".len()).collect::(); assert_eq!(error_message.trim(), err.to_string()); } else { panic!("Rename to '{new_name}' failed unexpectedly: {err}") diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index 4ca3ba74ae34..5c965055634e 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -145,7 +145,7 @@ pub fn parse_exprs_with_sep(tt: &tt::Subtree, sep: char) -> Vec { } if iter.peek_n(0).is_some() { - res.push(tt::Subtree { delimiter: None, token_trees: iter.into_iter().cloned().collect() }); + res.push(tt::Subtree { delimiter: None, token_trees: iter.cloned().collect() }); } res diff --git a/crates/rust-analyzer/src/diagnostics.rs b/crates/rust-analyzer/src/diagnostics.rs index f516c194da46..83b03fe47362 100644 --- a/crates/rust-analyzer/src/diagnostics.rs +++ b/crates/rust-analyzer/src/diagnostics.rs @@ -101,8 +101,7 @@ impl DiagnosticCollection { file_id: FileId, ) -> impl Iterator { let native = self.native.get(&file_id).into_iter().flatten(); - let check = - self.check.values().filter_map(move |it| it.get(&file_id)).into_iter().flatten(); + let check = self.check.values().filter_map(move |it| it.get(&file_id)).flatten(); native.chain(check) } diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 33f5b8a4efb2..59bdd3061272 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -1101,9 +1101,7 @@ pub(crate) fn handle_code_action( } // Fixes from `cargo check`. - for fix in - snap.check_fixes.values().filter_map(|it| it.get(&frange.file_id)).into_iter().flatten() - { + for fix in snap.check_fixes.values().filter_map(|it| it.get(&frange.file_id)).flatten() { // FIXME: this mapping is awkward and shouldn't exist. Refactor // `snap.check_fixes` to not convert to LSP prematurely. let intersect_fix_range = fix From 8615bba1054395891a6d881623b89ff5ee6ed5bd Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 08:45:08 +0000 Subject: [PATCH 221/478] use 'unwrap_or_default' --- crates/hir-expand/src/builtin_fn_macro.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/hir-expand/src/builtin_fn_macro.rs b/crates/hir-expand/src/builtin_fn_macro.rs index 985954d44e46..e5f1a5ebb20e 100644 --- a/crates/hir-expand/src/builtin_fn_macro.rs +++ b/crates/hir-expand/src/builtin_fn_macro.rs @@ -449,7 +449,7 @@ fn concat_bytes_expand( match token.kind() { syntax::SyntaxKind::BYTE => bytes.push(token.text().to_string()), syntax::SyntaxKind::BYTE_STRING => { - let components = unquote_byte_string(lit).unwrap_or_else(Vec::new); + let components = unquote_byte_string(lit).unwrap_or_default(); components.into_iter().for_each(|x| bytes.push(x.to_string())); } _ => { From 4f8ffd0ba4efc54ad09417d4aeb23f9fa00c1748 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 09:00:42 +0000 Subject: [PATCH 222/478] remove unnecessary lifetimes that can be elided --- crates/hir-def/src/generics.rs | 4 +- crates/hir-def/src/import_map.rs | 4 +- crates/hir-def/src/item_scope.rs | 6 +- crates/hir-ty/src/autoderef.rs | 6 +- crates/hir-ty/src/consteval.rs | 4 +- crates/hir-ty/src/interner.rs | 65 +++++++++------------ crates/hir-ty/src/traits.rs | 5 +- crates/hir-ty/src/utils.rs | 10 ++-- crates/ide/src/doc_links.rs | 2 +- crates/mbe/src/parser.rs | 4 +- crates/project-model/src/cargo_workspace.rs | 2 +- 11 files changed, 49 insertions(+), 63 deletions(-) diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs index 469b28c2d9ed..f74559f5d663 100644 --- a/crates/hir-def/src/generics.rs +++ b/crates/hir-def/src/generics.rs @@ -142,8 +142,8 @@ pub enum WherePredicateTypeTarget { impl GenericParams { /// Iterator of type_or_consts field - pub fn iter<'a>( - &'a self, + pub fn iter( + &self, ) -> impl DoubleEndedIterator, &TypeOrConstParamData)> { self.type_or_consts.iter() } diff --git a/crates/hir-def/src/import_map.rs b/crates/hir-def/src/import_map.rs index 193c76620088..63e92df0e720 100644 --- a/crates/hir-def/src/import_map.rs +++ b/crates/hir-def/src/import_map.rs @@ -393,8 +393,8 @@ impl Query { /// Searches dependencies of `krate` for an importable path matching `query`. /// /// This returns a list of items that could be imported from dependencies of `krate`. -pub fn search_dependencies<'a>( - db: &'a dyn DefDatabase, +pub fn search_dependencies( + db: &dyn DefDatabase, krate: CrateId, query: Query, ) -> FxHashSet { diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs index 6753d61ef810..c7b213b7e981 100644 --- a/crates/hir-def/src/item_scope.rs +++ b/crates/hir-def/src/item_scope.rs @@ -96,7 +96,7 @@ pub(crate) enum BuiltinShadowMode { /// Legacy macros can only be accessed through special methods like `get_legacy_macros`. /// Other methods will only resolve values, types and module scoped macros only. impl ItemScope { - pub fn entries<'a>(&'a self) -> impl Iterator + 'a { + pub fn entries(&self) -> impl Iterator + '_ { // FIXME: shadowing self.types .keys() @@ -169,7 +169,7 @@ impl ItemScope { iter.find_map(|(name, &(other_def, vis))| (other_def == def).then_some((name, vis))) } - pub(crate) fn traits<'a>(&'a self) -> impl Iterator + 'a { + pub(crate) fn traits(&self) -> impl Iterator + '_ { self.types .values() .filter_map(|&(def, _)| match def { @@ -326,7 +326,7 @@ impl ItemScope { changed } - pub(crate) fn resolutions<'a>(&'a self) -> impl Iterator, PerNs)> + 'a { + pub(crate) fn resolutions(&self) -> impl Iterator, PerNs)> + '_ { self.entries().map(|(name, res)| (Some(name.clone()), res)).chain( self.unnamed_trait_imports .iter() diff --git a/crates/hir-ty/src/autoderef.rs b/crates/hir-ty/src/autoderef.rs index 78911d8dc077..cbcf8f74c556 100644 --- a/crates/hir-ty/src/autoderef.rs +++ b/crates/hir-ty/src/autoderef.rs @@ -82,11 +82,11 @@ pub(crate) fn autoderef_step( } // FIXME: replace uses of this with Autoderef above -pub fn autoderef<'a>( - db: &'a dyn HirDatabase, +pub fn autoderef( + db: &dyn HirDatabase, env: Arc, ty: Canonical, -) -> impl Iterator> + 'a { +) -> impl Iterator> + '_ { let mut table = InferenceTable::new(db, env); let ty = table.instantiate_canonical(ty); let mut autoderef = Autoderef::new(&mut table, ty); diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs index d1660914766c..dfec0aaa296e 100644 --- a/crates/hir-ty/src/consteval.rs +++ b/crates/hir-ty/src/consteval.rs @@ -511,10 +511,10 @@ pub(crate) fn const_eval_query_variant( ) } -pub(crate) fn eval_to_const<'a>( +pub(crate) fn eval_to_const( expr: Idx, mode: ParamLoweringMode, - ctx: &mut InferenceContext<'a>, + ctx: &mut InferenceContext<'_>, args: impl FnOnce() -> Generics, debruijn: DebruijnIndex, ) -> Const { diff --git a/crates/hir-ty/src/interner.rs b/crates/hir-ty/src/interner.rs index 01b5719be4c0..441503a300e5 100644 --- a/crates/hir-ty/src/interner.rs +++ b/crates/hir-ty/src/interner.rs @@ -228,7 +228,7 @@ impl chalk_ir::interner::Interner for Interner { Interned::new(InternedWrapper(chalk_ir::TyData { kind, flags })) } - fn ty_data<'a>(self, ty: &'a Self::InternedType) -> &'a chalk_ir::TyData { + fn ty_data(self, ty: &Self::InternedType) -> &chalk_ir::TyData { &ty.0 } @@ -236,10 +236,7 @@ impl chalk_ir::interner::Interner for Interner { Interned::new(InternedWrapper(lifetime)) } - fn lifetime_data<'a>( - self, - lifetime: &'a Self::InternedLifetime, - ) -> &'a chalk_ir::LifetimeData { + fn lifetime_data(self, lifetime: &Self::InternedLifetime) -> &chalk_ir::LifetimeData { &lifetime.0 } @@ -247,7 +244,7 @@ impl chalk_ir::interner::Interner for Interner { Interned::new(InternedWrapper(constant)) } - fn const_data<'a>(self, constant: &'a Self::InternedConst) -> &'a chalk_ir::ConstData { + fn const_data(self, constant: &Self::InternedConst) -> &chalk_ir::ConstData { &constant.0 } @@ -267,10 +264,10 @@ impl chalk_ir::interner::Interner for Interner { parameter } - fn generic_arg_data<'a>( + fn generic_arg_data( self, - parameter: &'a Self::InternedGenericArg, - ) -> &'a chalk_ir::GenericArgData { + parameter: &Self::InternedGenericArg, + ) -> &chalk_ir::GenericArgData { parameter } @@ -285,11 +282,11 @@ impl chalk_ir::interner::Interner for Interner { data.into_iter().collect() } - fn goal_data<'a>(self, goal: &'a Self::InternedGoal) -> &'a GoalData { + fn goal_data(self, goal: &Self::InternedGoal) -> &GoalData { goal } - fn goals_data<'a>(self, goals: &'a Self::InternedGoals) -> &'a [Goal] { + fn goals_data(self, goals: &Self::InternedGoals) -> &[Goal] { goals } @@ -300,10 +297,7 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn substitution_data<'a>( - self, - substitution: &'a Self::InternedSubstitution, - ) -> &'a [GenericArg] { + fn substitution_data(self, substitution: &Self::InternedSubstitution) -> &[GenericArg] { &substitution.as_ref().0 } @@ -314,10 +308,10 @@ impl chalk_ir::interner::Interner for Interner { data } - fn program_clause_data<'a>( + fn program_clause_data( self, - clause: &'a Self::InternedProgramClause, - ) -> &'a chalk_ir::ProgramClauseData { + clause: &Self::InternedProgramClause, + ) -> &chalk_ir::ProgramClauseData { clause } @@ -328,10 +322,10 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn program_clauses_data<'a>( + fn program_clauses_data( self, - clauses: &'a Self::InternedProgramClauses, - ) -> &'a [chalk_ir::ProgramClause] { + clauses: &Self::InternedProgramClauses, + ) -> &[chalk_ir::ProgramClause] { clauses } @@ -342,10 +336,10 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn quantified_where_clauses_data<'a>( + fn quantified_where_clauses_data( self, - clauses: &'a Self::InternedQuantifiedWhereClauses, - ) -> &'a [chalk_ir::QuantifiedWhereClause] { + clauses: &Self::InternedQuantifiedWhereClauses, + ) -> &[chalk_ir::QuantifiedWhereClause] { clauses } @@ -356,10 +350,10 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn variable_kinds_data<'a>( + fn variable_kinds_data( self, - parameter_kinds: &'a Self::InternedVariableKinds, - ) -> &'a [chalk_ir::VariableKind] { + parameter_kinds: &Self::InternedVariableKinds, + ) -> &[chalk_ir::VariableKind] { ¶meter_kinds.as_ref().0 } @@ -370,10 +364,10 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn canonical_var_kinds_data<'a>( + fn canonical_var_kinds_data( self, - canonical_var_kinds: &'a Self::InternedCanonicalVarKinds, - ) -> &'a [chalk_ir::CanonicalVarKind] { + canonical_var_kinds: &Self::InternedCanonicalVarKinds, + ) -> &[chalk_ir::CanonicalVarKind] { canonical_var_kinds } @@ -384,10 +378,10 @@ impl chalk_ir::interner::Interner for Interner { data.into_iter().collect() } - fn constraints_data<'a>( + fn constraints_data( self, - constraints: &'a Self::InternedConstraints, - ) -> &'a [chalk_ir::InEnvironment>] { + constraints: &Self::InternedConstraints, + ) -> &[chalk_ir::InEnvironment>] { constraints } fn debug_closure_id( @@ -410,10 +404,7 @@ impl chalk_ir::interner::Interner for Interner { Ok(Interned::new(InternedWrapper(data.into_iter().collect::>()?))) } - fn variances_data<'a>( - self, - variances: &'a Self::InternedVariances, - ) -> &'a [chalk_ir::Variance] { + fn variances_data(self, variances: &Self::InternedVariances) -> &[chalk_ir::Variance] { variances } } diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs index 2d3a93392b31..778a6b82047e 100644 --- a/crates/hir-ty/src/traits.rs +++ b/crates/hir-ty/src/traits.rs @@ -55,10 +55,7 @@ impl TraitEnvironment { } } - pub fn traits_in_scope_from_clauses<'a>( - &'a self, - ty: Ty, - ) -> impl Iterator + 'a { + pub fn traits_in_scope_from_clauses(&self, ty: Ty) -> impl Iterator + '_ { self.traits_from_clauses .iter() .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then_some(*trait_id)) diff --git a/crates/hir-ty/src/utils.rs b/crates/hir-ty/src/utils.rs index 1f3470a36222..9893566bd549 100644 --- a/crates/hir-ty/src/utils.rs +++ b/crates/hir-ty/src/utils.rs @@ -184,9 +184,7 @@ pub(crate) struct Generics { } impl Generics { - pub(crate) fn iter_id<'a>( - &'a self, - ) -> impl Iterator> + 'a { + pub(crate) fn iter_id(&self) -> impl Iterator> + '_ { self.iter().map(|(id, data)| match data { TypeOrConstParamData::TypeParamData(_) => Either::Left(TypeParamId::from_unchecked(id)), TypeOrConstParamData::ConstParamData(_) => { @@ -216,9 +214,9 @@ impl Generics { } /// Iterator over types and const params of parent. - pub(crate) fn iter_parent<'a>( - &'a self, - ) -> impl DoubleEndedIterator + 'a { + pub(crate) fn iter_parent( + &self, + ) -> impl DoubleEndedIterator { self.parent_generics().into_iter().flat_map(|it| { let to_toc_id = move |(local_id, p)| (TypeOrConstParamId { parent: it.def, local_id }, p); diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index f937175deaeb..b4a7f2b918a4 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -285,7 +285,7 @@ impl DocCommentToken { } } -fn broken_link_clone_cb<'a>(link: BrokenLink<'a>) -> Option<(CowStr<'a>, CowStr<'a>)> { +fn broken_link_clone_cb(link: BrokenLink<'_>) -> Option<(CowStr<'_>, CowStr<'_>)> { Some((/*url*/ link.reference.clone(), /*title*/ link.reference)) } diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index d4345ba47800..fad905e97f45 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -116,9 +116,9 @@ enum Mode { Template, } -fn next_op<'a>( +fn next_op( first_peeked: &tt::TokenTree, - src: &mut TtIter<'a>, + src: &mut TtIter<'_>, mode: Mode, ) -> Result { let res = match first_peeked { diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index f2a972094f81..467cf0917875 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -411,7 +411,7 @@ impl CargoWorkspace { CargoWorkspace { packages, targets, workspace_root } } - pub fn packages<'a>(&'a self) -> impl Iterator + ExactSizeIterator + 'a { + pub fn packages(&self) -> impl Iterator + ExactSizeIterator + '_ { self.packages.iter().map(|(id, _pkg)| id) } From 0a0817905e203f80186070363cd9717ca637543f Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 09:59:22 +0000 Subject: [PATCH 223/478] return value directly from if/else block --- crates/ide-assists/src/handlers/extract_module.rs | 8 ++++---- crates/parser/src/grammar/paths.rs | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs index 81df19082512..0fa7bd558bbf 100644 --- a/crates/ide-assists/src/handlers/extract_module.rs +++ b/crates/ide-assists/src/handlers/extract_module.rs @@ -118,13 +118,13 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let mut body_items: Vec = Vec::new(); let mut items_to_be_processed: Vec = module.body_items.clone(); - let mut new_item_indent = old_item_indent + 1; - if impl_parent.is_some() { - new_item_indent = old_item_indent + 2; + let new_item_indent = if impl_parent.is_some() { + old_item_indent + 2 } else { items_to_be_processed = [module.use_items.clone(), items_to_be_processed].concat(); - } + old_item_indent + 1 + }; for item in items_to_be_processed { let item = item.indent(IndentLevel(1)); diff --git a/crates/parser/src/grammar/paths.rs b/crates/parser/src/grammar/paths.rs index 5dc9c6c82a14..af3b6f63cf51 100644 --- a/crates/parser/src/grammar/paths.rs +++ b/crates/parser/src/grammar/paths.rs @@ -83,11 +83,12 @@ fn path_segment(p: &mut Parser<'_>, mode: Mode, first: bool) { } p.expect(T![>]); } else { - let mut empty = true; - if first { + let empty = if first { p.eat(T![::]); - empty = false; - } + false + } else { + true + }; match p.current() { IDENT => { name_ref(p); From aa90d02079d0ecbdc089a9094bb68277379f98d3 Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 10:02:45 +0000 Subject: [PATCH 224/478] remove useless operations --- crates/parser/src/output.rs | 2 +- crates/proc-macro-api/src/msg/flat.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/parser/src/output.rs b/crates/parser/src/output.rs index e9ec9822d68c..6ca841cfe073 100644 --- a/crates/parser/src/output.rs +++ b/crates/parser/src/output.rs @@ -54,7 +54,7 @@ impl Output { } pub(crate) fn token(&mut self, kind: SyntaxKind, n_tokens: u8) { - let e = ((kind as u16 as u32) << 16) | ((n_tokens as u32) << 8) | (0 << 4) | 1; + let e = ((kind as u16 as u32) << 16) | ((n_tokens as u32) << 8) | 1; self.event.push(e) } diff --git a/crates/proc-macro-api/src/msg/flat.rs b/crates/proc-macro-api/src/msg/flat.rs index f50ecccf1e2b..b178c46263e0 100644 --- a/crates/proc-macro-api/src/msg/flat.rs +++ b/crates/proc-macro-api/src/msg/flat.rs @@ -210,7 +210,7 @@ impl<'a> Writer<'a> { let idx_tag = match child { tt::TokenTree::Subtree(it) => { let idx = self.enqueue(it); - idx << 2 | 0b00 + idx << 2 } tt::TokenTree::Leaf(leaf) => match leaf { tt::Leaf::Literal(lit) => { From bb083b82023a5fc187a01c4db98c3ac40d9b351d Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 30 Dec 2022 10:08:07 +0000 Subject: [PATCH 225/478] remove useless casts --- crates/hir-ty/src/consteval.rs | 4 ++-- crates/rust-analyzer/src/from_proto.rs | 7 ++----- crates/rust-analyzer/src/semantic_tokens.rs | 10 +++++----- crates/stdx/src/hash.rs | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs index dfec0aaa296e..8df70330fa9e 100644 --- a/crates/hir-ty/src/consteval.rs +++ b/crates/hir-ty/src/consteval.rs @@ -131,7 +131,7 @@ fn scalar_max(scalar: &Scalar) -> i128 { IntTy::I16 => i16::MAX as i128, IntTy::I32 => i32::MAX as i128, IntTy::I64 => i64::MAX as i128, - IntTy::I128 => i128::MAX as i128, + IntTy::I128 => i128::MAX, }, Scalar::Uint(x) => match x { chalk_ir::UintTy::Usize => usize::MAX as i128, @@ -139,7 +139,7 @@ fn scalar_max(scalar: &Scalar) -> i128 { chalk_ir::UintTy::U16 => u16::MAX as i128, chalk_ir::UintTy::U32 => u32::MAX as i128, chalk_ir::UintTy::U64 => u64::MAX as i128, - chalk_ir::UintTy::U128 => i128::MAX as i128, // ignore too big u128 for now + chalk_ir::UintTy::U128 => i128::MAX, // ignore too big u128 for now }, Scalar::Float(_) => 0, } diff --git a/crates/rust-analyzer/src/from_proto.rs b/crates/rust-analyzer/src/from_proto.rs index 4e7095b3ce3b..2dbb14fcd9a6 100644 --- a/crates/rust-analyzer/src/from_proto.rs +++ b/crates/rust-analyzer/src/from_proto.rs @@ -25,12 +25,9 @@ pub(crate) fn vfs_path(url: &lsp_types::Url) -> Result { pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> Result { let line_col = match line_index.encoding { - PositionEncoding::Utf8 => { - LineCol { line: position.line as u32, col: position.character as u32 } - } + PositionEncoding::Utf8 => LineCol { line: position.line, col: position.character }, PositionEncoding::Utf16 => { - let line_col = - LineColUtf16 { line: position.line as u32, col: position.character as u32 }; + let line_col = LineColUtf16 { line: position.line, col: position.character }; line_index.index.to_utf8(line_col) } }; diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs index c48410ed55e9..c2cc3f422d20 100644 --- a/crates/rust-analyzer/src/semantic_tokens.rs +++ b/crates/rust-analyzer/src/semantic_tokens.rs @@ -161,8 +161,8 @@ impl SemanticTokensBuilder { /// Push a new token onto the builder pub(crate) fn push(&mut self, range: Range, token_index: u32, modifier_bitset: u32) { - let mut push_line = range.start.line as u32; - let mut push_char = range.start.character as u32; + let mut push_line = range.start.line; + let mut push_char = range.start.character; if !self.data.is_empty() { push_line -= self.prev_line; @@ -177,15 +177,15 @@ impl SemanticTokensBuilder { let token = SemanticToken { delta_line: push_line, delta_start: push_char, - length: token_len as u32, + length: token_len, token_type: token_index, token_modifiers_bitset: modifier_bitset, }; self.data.push(token); - self.prev_line = range.start.line as u32; - self.prev_char = range.start.character as u32; + self.prev_line = range.start.line; + self.prev_char = range.start.character; } pub(crate) fn build(self) -> SemanticTokens { diff --git a/crates/stdx/src/hash.rs b/crates/stdx/src/hash.rs index 9909d71bdf06..0c21d2674b1a 100644 --- a/crates/stdx/src/hash.rs +++ b/crates/stdx/src/hash.rs @@ -51,7 +51,7 @@ impl Hasher for NoHashHasher { } fn write_u64(&mut self, i: u64) { - self.0 = i as u64; + self.0 = i; } fn write_usize(&mut self, i: usize) { From 9aef1a264a52d59e959e4b0a2f9a71d06c3def13 Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Sun, 1 Jan 2023 02:41:45 -0500 Subject: [PATCH 226/478] reword dbg_macro labels --- clippy_lints/src/dbg_macro.rs | 10 ++--- tests/ui-toml/dbg_macro/dbg_macro.stderr | 36 ++++++++-------- tests/ui/dbg_macro.stderr | 52 ++++++++++++------------ 3 files changed, 49 insertions(+), 49 deletions(-) diff --git a/clippy_lints/src/dbg_macro.rs b/clippy_lints/src/dbg_macro.rs index fe9f4f9ae3cb..799e71e847a9 100644 --- a/clippy_lints/src/dbg_macro.rs +++ b/clippy_lints/src/dbg_macro.rs @@ -10,11 +10,11 @@ use rustc_span::sym; declare_clippy_lint! { /// ### What it does - /// Checks for usage of dbg!() macro. + /// Checks for usage of the [`dbg!`](https://doc.rust-lang.org/std/macro.dbg.html) macro. /// /// ### Why is this bad? - /// `dbg!` macro is intended as a debugging tool. It - /// should not be in version control. + /// The `dbg!` macro is intended as a debugging tool. It should not be present in released + /// software or committed to a version control system. /// /// ### Example /// ```rust,ignore @@ -91,8 +91,8 @@ impl LateLintPass<'_> for DbgMacro { cx, DBG_MACRO, macro_call.span, - "`dbg!` macro is intended as a debugging tool", - "ensure to avoid having uses of it in version control", + "the `dbg!` macro is intended as a debugging tool", + "remove the invocation before committing it to a version control system", suggestion, applicability, ); diff --git a/tests/ui-toml/dbg_macro/dbg_macro.stderr b/tests/ui-toml/dbg_macro/dbg_macro.stderr index 46efb86dcfc5..859383a71194 100644 --- a/tests/ui-toml/dbg_macro/dbg_macro.stderr +++ b/tests/ui-toml/dbg_macro/dbg_macro.stderr @@ -1,99 +1,99 @@ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:5:22 | LL | if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n } | ^^^^^^^^^^^^^^^^^^^^^^ | = note: `-D clippy::dbg-macro` implied by `-D warnings` -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | if let Some(n) = n.checked_sub(4) { n } else { n } | ~~~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:9:8 | LL | if dbg!(n <= 1) { | ^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | if n <= 1 { | ~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:10:9 | LL | dbg!(1) | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 1 | -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:12:9 | LL | dbg!(n * factorial(n - 1)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | n * factorial(n - 1) | -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:17:5 | LL | dbg!(42); | ^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 42; | ~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:18:5 | LL | dbg!(dbg!(dbg!(42))); | ^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | dbg!(dbg!(42)); | ~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:19:14 | LL | foo(3) + dbg!(factorial(4)); | ^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | foo(3) + factorial(4); | ~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:20:5 | LL | dbg!(1, 2, dbg!(3, 4)); | ^^^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | (1, 2, dbg!(3, 4)); | ~~~~~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:21:5 | LL | dbg!(1, 2, 3, 4, 5); | ^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | (1, 2, 3, 4, 5); | ~~~~~~~~~~~~~~~ diff --git a/tests/ui/dbg_macro.stderr b/tests/ui/dbg_macro.stderr index e6a65b46d975..ddb5f1342e99 100644 --- a/tests/ui/dbg_macro.stderr +++ b/tests/ui/dbg_macro.stderr @@ -1,143 +1,143 @@ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:5:22 | LL | if let Some(n) = dbg!(n.checked_sub(4)) { n } else { n } | ^^^^^^^^^^^^^^^^^^^^^^ | = note: `-D clippy::dbg-macro` implied by `-D warnings` -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | if let Some(n) = n.checked_sub(4) { n } else { n } | ~~~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:9:8 | LL | if dbg!(n <= 1) { | ^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | if n <= 1 { | ~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:10:9 | LL | dbg!(1) | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 1 | -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:12:9 | LL | dbg!(n * factorial(n - 1)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | n * factorial(n - 1) | -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:17:5 | LL | dbg!(42); | ^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 42; | ~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:18:5 | LL | dbg!(dbg!(dbg!(42))); | ^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | dbg!(dbg!(42)); | ~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:19:14 | LL | foo(3) + dbg!(factorial(4)); | ^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | foo(3) + factorial(4); | ~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:20:5 | LL | dbg!(1, 2, dbg!(3, 4)); | ^^^^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | (1, 2, dbg!(3, 4)); | ~~~~~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:21:5 | LL | dbg!(1, 2, 3, 4, 5); | ^^^^^^^^^^^^^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | (1, 2, 3, 4, 5); | ~~~~~~~~~~~~~~~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:41:9 | LL | dbg!(2); | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 2; | ~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:47:5 | LL | dbg!(1); | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 1; | ~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:52:5 | LL | dbg!(1); | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 1; | ~ -error: `dbg!` macro is intended as a debugging tool +error: the `dbg!` macro is intended as a debugging tool --> $DIR/dbg_macro.rs:58:9 | LL | dbg!(1); | ^^^^^^^ | -help: ensure to avoid having uses of it in version control +help: remove the invocation before committing it to a version control system | LL | 1; | ~ From f53c6e2f15a54dee84cbf20228a54861fa66bf09 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 2 Jan 2023 19:58:00 +0100 Subject: [PATCH 227/478] Correct Gankra's name in the linkedlist lint --- clippy_lints/src/types/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/types/mod.rs b/clippy_lints/src/types/mod.rs index 20978e81dc58..b0d49d268569 100644 --- a/clippy_lints/src/types/mod.rs +++ b/clippy_lints/src/types/mod.rs @@ -127,7 +127,7 @@ declare_clippy_lint! { /// `Vec` or a `VecDeque` (formerly called `RingBuf`). /// /// ### Why is this bad? - /// Gankro says: + /// Gankra says: /// /// > The TL;DR of `LinkedList` is that it's built on a massive amount of /// pointers and indirection. From f51111aacbbfbbf680efc115f8feb1e815309853 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 2 Jan 2023 23:16:09 +0100 Subject: [PATCH 228/478] Write down adjustments introduced by binary operators --- crates/hir-ty/src/infer/expr.rs | 36 ++++++++++++++++++++++++----- crates/hir-ty/src/tests.rs | 27 +++++++++++----------- crates/hir-ty/src/tests/coercion.rs | 34 +++++++++++++++++++++++++++ crates/test-utils/src/minicore.rs | 6 +++++ 4 files changed, 84 insertions(+), 19 deletions(-) diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index a5dd02067642..2e5c4244109f 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -6,7 +6,7 @@ use std::{ }; use chalk_ir::{ - cast::Cast, fold::Shift, DebruijnIndex, GenericArgData, Mutability, TyVariableKind, + cast::Cast, fold::Shift, DebruijnIndex, GenericArgData, Mutability, TyKind, TyVariableKind, }; use hir_def::{ expr::{ @@ -34,8 +34,8 @@ use crate::{ primitive::{self, UintTy}, static_lifetime, to_chalk_trait_id, utils::{generics, Generics}, - AdtId, Binders, CallableDefId, FnPointer, FnSig, FnSubst, Interner, Rawness, Scalar, - Substitution, TraitRef, Ty, TyBuilder, TyExt, TyKind, + Adjust, Adjustment, AdtId, AutoBorrow, Binders, CallableDefId, FnPointer, FnSig, FnSubst, + Interner, Rawness, Scalar, Substitution, TraitRef, Ty, TyBuilder, TyExt, }; use super::{ @@ -1038,14 +1038,38 @@ impl<'a> InferenceContext<'a> { self.infer_expr_coerce(rhs, &Expectation::has_type(rhs_ty.clone())); let ret_ty = match method_ty.callable_sig(self.db) { - Some(sig) => sig.ret().clone(), + Some(sig) => { + let p_left = &sig.params()[0]; + if matches!(op, BinaryOp::CmpOp(..) | BinaryOp::Assignment { .. }) { + if let &TyKind::Ref(mtbl, _, _) = p_left.kind(Interner) { + self.write_expr_adj( + lhs, + vec![Adjustment { + kind: Adjust::Borrow(AutoBorrow::Ref(mtbl)), + target: p_left.clone(), + }], + ); + } + } + let p_right = &sig.params()[1]; + if matches!(op, BinaryOp::CmpOp(..)) { + if let &TyKind::Ref(mtbl, _, _) = p_right.kind(Interner) { + self.write_expr_adj( + rhs, + vec![Adjustment { + kind: Adjust::Borrow(AutoBorrow::Ref(mtbl)), + target: p_right.clone(), + }], + ); + } + } + sig.ret().clone() + } None => self.err_ty(), }; let ret_ty = self.normalize_associated_types_in(ret_ty); - // FIXME: record autoref adjustments - // use knowledge of built-in binary ops, which can sometimes help inference if let Some(builtin_rhs) = self.builtin_binary_op_rhs_expectation(op, lhs_ty.clone()) { self.unify(&builtin_rhs, &rhs_ty); diff --git a/crates/hir-ty/src/tests.rs b/crates/hir-ty/src/tests.rs index 7bcf89ff59c0..ba5d9c241267 100644 --- a/crates/hir-ty/src/tests.rs +++ b/crates/hir-ty/src/tests.rs @@ -94,11 +94,12 @@ fn check_impl(ra_fixture: &str, allow_none: bool, only_types: bool, display_sour types.insert(file_range, expected.trim_start_matches("type: ").to_string()); } else if expected.starts_with("expected") { mismatches.insert(file_range, expected); - } else if expected.starts_with("adjustments: ") { + } else if expected.starts_with("adjustments:") { adjustments.insert( file_range, expected - .trim_start_matches("adjustments: ") + .trim_start_matches("adjustments:") + .trim() .split(',') .map(|it| it.trim().to_string()) .filter(|it| !it.is_empty()) @@ -176,17 +177,17 @@ fn check_impl(ra_fixture: &str, allow_none: bool, only_types: bool, display_sour assert_eq!(actual, expected); } if let Some(expected) = adjustments.remove(&range) { - if let Some(adjustments) = inference_result.expr_adjustments.get(&expr) { - assert_eq!( - expected, - adjustments - .iter() - .map(|Adjustment { kind, .. }| format!("{kind:?}")) - .collect::>() - ); - } else { - panic!("expected {expected:?} adjustments, found none"); - } + let adjustments = inference_result + .expr_adjustments + .get(&expr) + .map_or_else(Default::default, |it| &**it); + assert_eq!( + expected, + adjustments + .iter() + .map(|Adjustment { kind, .. }| format!("{kind:?}")) + .collect::>() + ); } } diff --git a/crates/hir-ty/src/tests/coercion.rs b/crates/hir-ty/src/tests/coercion.rs index 7e3aecc2ae0a..3e110abaf4b1 100644 --- a/crates/hir-ty/src/tests/coercion.rs +++ b/crates/hir-ty/src/tests/coercion.rs @@ -807,3 +807,37 @@ fn main() { "#, ); } + +#[test] +fn adjust_comparison_arguments() { + check_no_mismatches( + r" +//- minicore: eq +struct Struct; +impl core::cmp::PartialEq for Struct { + fn eq(&self, other: &Self) -> bool { true } +} +fn test() { + Struct == Struct; + // ^^^^^^ adjustments: Borrow(Ref(Not)) + // ^^^^^^ adjustments: Borrow(Ref(Not)) +}", + ); +} + +#[test] +fn adjust_assign_lhs() { + check_no_mismatches( + r" +//- minicore: add +struct Struct; +impl core::ops::AddAssign for Struct { + fn add_assign(&mut self, other: Self) {} +} +fn test() { + Struct += Struct; + // ^^^^^^ adjustments: Borrow(Ref(Mut)) + // ^^^^^^ adjustments: +}", + ); +} diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index 750b64fea6fb..3ca63fcab90d 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -382,6 +382,12 @@ pub mod ops { type Output; fn add(self, rhs: Rhs) -> Self::Output; } + + #[lang = "add_assign"] + #[const_trait] + pub trait AddAssign { + fn add_assign(&mut self, rhs: Rhs); + } // endregion:add // region:generator From 506895fa2f881c68fa2619156db36225d4dd7036 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 2 Jan 2023 23:16:26 +0100 Subject: [PATCH 229/478] Fix spelling mistake --- crates/ide/src/inlay_hints.rs | 4 ++-- crates/ide/src/inlay_hints/{discrimant.rs => discriminant.rs} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename crates/ide/src/inlay_hints/{discrimant.rs => discriminant.rs} (100%) diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 9ec3f7f29ab5..368c8aaa935b 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -24,7 +24,7 @@ mod chaining; mod param_name; mod binding_mode; mod bind_pat; -mod discrimant; +mod discriminant; #[derive(Clone, Debug, PartialEq, Eq)] pub struct InlayHintsConfig { @@ -376,7 +376,7 @@ fn hints( _ => None, }, ast::Variant(v) => { - discrimant::hints(hints, famous_defs, config, file_id, &v) + discriminant::hints(hints, famous_defs, config, file_id, &v) }, // FIXME: fn-ptr type, dyn fn type, and trait object type elisions ast::Type(_) => None, diff --git a/crates/ide/src/inlay_hints/discrimant.rs b/crates/ide/src/inlay_hints/discriminant.rs similarity index 100% rename from crates/ide/src/inlay_hints/discrimant.rs rename to crates/ide/src/inlay_hints/discriminant.rs From bd83650e91a751ad352444b458f9f50549fac208 Mon Sep 17 00:00:00 2001 From: Tyler Weaver Date: Wed, 21 Dec 2022 12:47:39 -0700 Subject: [PATCH 230/478] Suggest using Path for comparing extensions Signed-off-by: Tyler Weaver --- ...se_sensitive_file_extension_comparisons.rs | 38 +++++++-- ...sensitive_file_extension_comparisons.fixed | 64 +++++++++++++++ ...se_sensitive_file_extension_comparisons.rs | 8 +- ...ensitive_file_extension_comparisons.stderr | 82 ++++++++++++++++--- 4 files changed, 175 insertions(+), 17 deletions(-) create mode 100644 tests/ui/case_sensitive_file_extension_comparisons.fixed diff --git a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs index d226c0bba659..bc9b7a73b5b1 100644 --- a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs +++ b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs @@ -1,7 +1,9 @@ -use clippy_utils::diagnostics::span_lint_and_help; +use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::sugg::Sugg; use clippy_utils::ty::is_type_lang_item; use if_chain::if_chain; use rustc_ast::ast::LitKind; +use rustc_errors::Applicability; use rustc_hir::{Expr, ExprKind, LangItem}; use rustc_lint::LateContext; use rustc_span::{source_map::Spanned, Span}; @@ -28,13 +30,39 @@ pub(super) fn check<'tcx>( let recv_ty = cx.typeck_results().expr_ty(recv).peel_refs(); if recv_ty.is_str() || is_type_lang_item(cx, recv_ty, LangItem::String); then { - span_lint_and_help( + span_lint_and_then( cx, CASE_SENSITIVE_FILE_EXTENSION_COMPARISONS, - call_span, + recv.span.to(call_span), "case-sensitive file extension comparison", - None, - "consider using a case-insensitive comparison instead", + |diag| { + diag.help("consider using a case-insensitive comparison instead"); + let mut recv_str = Sugg::hir(cx, recv, "").to_string(); + + if is_type_lang_item(cx, recv_ty, LangItem::String) { + recv_str = format!("&{recv_str}"); + } + + if recv_str.contains(".to_lowercase()") { + diag.note("to_lowercase allocates memory, this can be avoided by using Path"); + recv_str = recv_str.replace(".to_lowercase()", ""); + } + + if recv_str.contains(".to_uppercase()") { + diag.note("to_uppercase allocates memory, this can be avoided by using Path"); + recv_str = recv_str.replace(".to_uppercase()", ""); + } + + diag.span_suggestion( + recv.span.to(call_span), + "use std::path::Path", + format!("std::path::Path::new({}) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case(\"{}\"))", + recv_str, ext_str.strip_prefix('.').unwrap()), + Applicability::MaybeIncorrect, + ); + } ); } } diff --git a/tests/ui/case_sensitive_file_extension_comparisons.fixed b/tests/ui/case_sensitive_file_extension_comparisons.fixed new file mode 100644 index 000000000000..a8b5950f2087 --- /dev/null +++ b/tests/ui/case_sensitive_file_extension_comparisons.fixed @@ -0,0 +1,64 @@ +// run-rustfix +#![warn(clippy::case_sensitive_file_extension_comparisons)] + +use std::string::String; + +struct TestStruct; + +impl TestStruct { + fn ends_with(self, _arg: &str) {} +} + +#[allow(dead_code)] +fn is_rust_file(filename: &str) -> bool { + std::path::Path::new(filename) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("rs")) +} + +fn main() { + // std::string::String and &str should trigger the lint failure with .ext12 + let _ = std::path::Path::new(&String::new()) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + let _ = std::path::Path::new("str") + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + + // The test struct should not trigger the lint failure with .ext12 + TestStruct {}.ends_with(".ext12"); + + // std::string::String and &str should trigger the lint failure with .EXT12 + let _ = std::path::Path::new(&String::new()) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + let _ = std::path::Path::new("str") + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + + // This should print a note about how to_lowercase and to_uppercase allocates + let _ = std::path::Path::new(&String::new()) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + let _ = std::path::Path::new(&String::new()) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + + // The test struct should not trigger the lint failure with .EXT12 + TestStruct {}.ends_with(".EXT12"); + + // Should not trigger the lint failure with .eXT12 + let _ = String::new().ends_with(".eXT12"); + let _ = "str".ends_with(".eXT12"); + TestStruct {}.ends_with(".eXT12"); + + // Should not trigger the lint failure with .EXT123 (too long) + let _ = String::new().ends_with(".EXT123"); + let _ = "str".ends_with(".EXT123"); + TestStruct {}.ends_with(".EXT123"); + + // Shouldn't fail if it doesn't start with a dot + let _ = String::new().ends_with("a.ext"); + let _ = "str".ends_with("a.extA"); + TestStruct {}.ends_with("a.ext"); +} diff --git a/tests/ui/case_sensitive_file_extension_comparisons.rs b/tests/ui/case_sensitive_file_extension_comparisons.rs index 6f0485b5279b..ee9bcd73d52e 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.rs +++ b/tests/ui/case_sensitive_file_extension_comparisons.rs @@ -1,3 +1,4 @@ +// run-rustfix #![warn(clippy::case_sensitive_file_extension_comparisons)] use std::string::String; @@ -5,9 +6,10 @@ use std::string::String; struct TestStruct; impl TestStruct { - fn ends_with(self, arg: &str) {} + fn ends_with(self, _arg: &str) {} } +#[allow(dead_code)] fn is_rust_file(filename: &str) -> bool { filename.ends_with(".rs") } @@ -24,6 +26,10 @@ fn main() { let _ = String::new().ends_with(".EXT12"); let _ = "str".ends_with(".EXT12"); + // This should print a note about how to_lowercase and to_uppercase allocates + let _ = String::new().to_lowercase().ends_with(".EXT12"); + let _ = String::new().to_uppercase().ends_with(".EXT12"); + // The test struct should not trigger the lint failure with .EXT12 TestStruct {}.ends_with(".EXT12"); diff --git a/tests/ui/case_sensitive_file_extension_comparisons.stderr b/tests/ui/case_sensitive_file_extension_comparisons.stderr index a28dd8bd5ad3..33435f086d43 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.stderr +++ b/tests/ui/case_sensitive_file_extension_comparisons.stderr @@ -1,43 +1,103 @@ error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:12:14 + --> $DIR/case_sensitive_file_extension_comparisons.rs:14:5 | LL | filename.ends_with(".rs") - | ^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: consider using a case-insensitive comparison instead = note: `-D clippy::case-sensitive-file-extension-comparisons` implied by `-D warnings` +help: use std::path::Path + | +LL ~ std::path::Path::new(filename) +LL + .extension() +LL + .map_or(false, |ext| ext.eq_ignore_ascii_case("rs")) + | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:17:27 + --> $DIR/case_sensitive_file_extension_comparisons.rs:19:13 | LL | let _ = String::new().ends_with(".ext12"); - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: consider using a case-insensitive comparison instead +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new(&String::new()) +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:18:19 + --> $DIR/case_sensitive_file_extension_comparisons.rs:20:13 | LL | let _ = "str".ends_with(".ext12"); - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: consider using a case-insensitive comparison instead +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new("str") +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:24:27 + --> $DIR/case_sensitive_file_extension_comparisons.rs:26:13 | LL | let _ = String::new().ends_with(".EXT12"); - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: consider using a case-insensitive comparison instead +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new(&String::new()) +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:25:19 + --> $DIR/case_sensitive_file_extension_comparisons.rs:27:13 | LL | let _ = "str".ends_with(".EXT12"); - | ^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: consider using a case-insensitive comparison instead +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new("str") +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + | -error: aborting due to 5 previous errors +error: case-sensitive file extension comparison + --> $DIR/case_sensitive_file_extension_comparisons.rs:30:13 + | +LL | let _ = String::new().to_lowercase().ends_with(".EXT12"); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: consider using a case-insensitive comparison instead + = note: to_lowercase allocates memory, this can be avoided by using Path +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new(&String::new()) +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + | + +error: case-sensitive file extension comparison + --> $DIR/case_sensitive_file_extension_comparisons.rs:31:13 + | +LL | let _ = String::new().to_uppercase().ends_with(".EXT12"); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: consider using a case-insensitive comparison instead + = note: to_uppercase allocates memory, this can be avoided by using Path +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new(&String::new()) +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + | + +error: aborting due to 7 previous errors From 0aa7d73df37470b9f868873587faf64c3339f964 Mon Sep 17 00:00:00 2001 From: Tyler Weaver Date: Mon, 2 Jan 2023 07:12:43 -0700 Subject: [PATCH 231/478] Only remove method from end of recv, indent suggestion source Signed-off-by: Tyler Weaver --- ...se_sensitive_file_extension_comparisons.rs | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs index bc9b7a73b5b1..e34c377f5fc3 100644 --- a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs +++ b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs @@ -1,4 +1,5 @@ use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::source::{indent_of, reindent_multiline}; use clippy_utils::sugg::Sugg; use clippy_utils::ty::is_type_lang_item; use if_chain::if_chain; @@ -37,29 +38,36 @@ pub(super) fn check<'tcx>( "case-sensitive file extension comparison", |diag| { diag.help("consider using a case-insensitive comparison instead"); - let mut recv_str = Sugg::hir(cx, recv, "").to_string(); + let mut recv_source = Sugg::hir(cx, recv, "").to_string(); if is_type_lang_item(cx, recv_ty, LangItem::String) { - recv_str = format!("&{recv_str}"); + recv_source = format!("&{recv_source}"); } - if recv_str.contains(".to_lowercase()") { + if recv_source.ends_with(".to_lowercase()") { diag.note("to_lowercase allocates memory, this can be avoided by using Path"); - recv_str = recv_str.replace(".to_lowercase()", ""); + recv_source = recv_source.strip_suffix(".to_lowercase()").unwrap().to_string(); } - if recv_str.contains(".to_uppercase()") { + if recv_source.ends_with(".to_uppercase()") { diag.note("to_uppercase allocates memory, this can be avoided by using Path"); - recv_str = recv_str.replace(".to_uppercase()", ""); + recv_source = recv_source.strip_suffix(".to_uppercase()").unwrap().to_string(); } + let suggestion_source = reindent_multiline( + format!( + "std::path::Path::new({}) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case(\"{}\"))", + recv_source, ext_str.strip_prefix('.').unwrap()).into(), + true, + Some(indent_of(cx, call_span).unwrap_or(0) + 4) + ); + diag.span_suggestion( recv.span.to(call_span), "use std::path::Path", - format!("std::path::Path::new({}) - .extension() - .map_or(false, |ext| ext.eq_ignore_ascii_case(\"{}\"))", - recv_str, ext_str.strip_prefix('.').unwrap()), + suggestion_source, Applicability::MaybeIncorrect, ); } From cf4e9813b0fee5a8a0d7e93eadd4d51d0492a9d6 Mon Sep 17 00:00:00 2001 From: Eric Wu Date: Mon, 2 Jan 2023 18:35:21 -0500 Subject: [PATCH 232/478] use OnlyBodies instead of All we only need to check closures, so nestedfilter::All was overkill here. --- clippy_utils/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index b2175c5cb169..46769cf2392b 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -1262,7 +1262,7 @@ pub struct ContainsName<'a, 'tcx> { } impl<'a, 'tcx> Visitor<'tcx> for ContainsName<'a, 'tcx> { - type NestedFilter = nested_filter::All; + type NestedFilter = nested_filter::OnlyBodies; fn visit_name(&mut self, name: Symbol) { if self.name == name { From 0cee2c50952a11099692652af367b4fea3cb09a6 Mon Sep 17 00:00:00 2001 From: Tyler Weaver Date: Mon, 2 Jan 2023 16:42:56 -0700 Subject: [PATCH 233/478] Don't trigger lint if last method is to_lower/upper --- ...se_sensitive_file_extension_comparisons.rs | 17 ++++------ ...sensitive_file_extension_comparisons.fixed | 10 ++---- ...se_sensitive_file_extension_comparisons.rs | 2 +- ...ensitive_file_extension_comparisons.stderr | 32 +------------------ 4 files changed, 12 insertions(+), 49 deletions(-) diff --git a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs index e34c377f5fc3..b6ec0fba6cfb 100644 --- a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs +++ b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs @@ -18,6 +18,13 @@ pub(super) fn check<'tcx>( recv: &'tcx Expr<'_>, arg: &'tcx Expr<'_>, ) { + if let ExprKind::MethodCall(path_segment, ..) = recv.kind { + let method_name = path_segment.ident.name.as_str(); + if method_name == "to_lowercase" || method_name == "to_uppercase" { + return; + } + } + if_chain! { if let Some(method_id) = cx.typeck_results().type_dependent_def_id(expr.hir_id); if let Some(impl_id) = cx.tcx.impl_of_method(method_id); @@ -44,16 +51,6 @@ pub(super) fn check<'tcx>( recv_source = format!("&{recv_source}"); } - if recv_source.ends_with(".to_lowercase()") { - diag.note("to_lowercase allocates memory, this can be avoided by using Path"); - recv_source = recv_source.strip_suffix(".to_lowercase()").unwrap().to_string(); - } - - if recv_source.ends_with(".to_uppercase()") { - diag.note("to_uppercase allocates memory, this can be avoided by using Path"); - recv_source = recv_source.strip_suffix(".to_uppercase()").unwrap().to_string(); - } - let suggestion_source = reindent_multiline( format!( "std::path::Path::new({}) diff --git a/tests/ui/case_sensitive_file_extension_comparisons.fixed b/tests/ui/case_sensitive_file_extension_comparisons.fixed index a8b5950f2087..a19ed1ddcd54 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.fixed +++ b/tests/ui/case_sensitive_file_extension_comparisons.fixed @@ -36,13 +36,9 @@ fn main() { .extension() .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); - // This should print a note about how to_lowercase and to_uppercase allocates - let _ = std::path::Path::new(&String::new()) - .extension() - .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); - let _ = std::path::Path::new(&String::new()) - .extension() - .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); + // Should not trigger the lint failure because of the calls to to_lowercase and to_uppercase + let _ = String::new().to_lowercase().ends_with(".EXT12"); + let _ = String::new().to_uppercase().ends_with(".EXT12"); // The test struct should not trigger the lint failure with .EXT12 TestStruct {}.ends_with(".EXT12"); diff --git a/tests/ui/case_sensitive_file_extension_comparisons.rs b/tests/ui/case_sensitive_file_extension_comparisons.rs index ee9bcd73d52e..ad56b7296f75 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.rs +++ b/tests/ui/case_sensitive_file_extension_comparisons.rs @@ -26,7 +26,7 @@ fn main() { let _ = String::new().ends_with(".EXT12"); let _ = "str".ends_with(".EXT12"); - // This should print a note about how to_lowercase and to_uppercase allocates + // Should not trigger the lint failure because of the calls to to_lowercase and to_uppercase let _ = String::new().to_lowercase().ends_with(".EXT12"); let _ = String::new().to_uppercase().ends_with(".EXT12"); diff --git a/tests/ui/case_sensitive_file_extension_comparisons.stderr b/tests/ui/case_sensitive_file_extension_comparisons.stderr index 33435f086d43..b5c8e4b4fe68 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.stderr +++ b/tests/ui/case_sensitive_file_extension_comparisons.stderr @@ -69,35 +69,5 @@ LL + .extension() LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); | -error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:30:13 - | -LL | let _ = String::new().to_lowercase().ends_with(".EXT12"); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: consider using a case-insensitive comparison instead - = note: to_lowercase allocates memory, this can be avoided by using Path -help: use std::path::Path - | -LL ~ let _ = std::path::Path::new(&String::new()) -LL + .extension() -LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); - | - -error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:31:13 - | -LL | let _ = String::new().to_uppercase().ends_with(".EXT12"); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: consider using a case-insensitive comparison instead - = note: to_uppercase allocates memory, this can be avoided by using Path -help: use std::path::Path - | -LL ~ let _ = std::path::Path::new(&String::new()) -LL + .extension() -LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); - | - -error: aborting due to 7 previous errors +error: aborting due to 5 previous errors From 50ab30601503989ecd6501dc3334d61e2d48463c Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 3 Jan 2023 01:16:10 +0000 Subject: [PATCH 234/478] Simplify some canonical type alias names --- .../src/infer/canonical/canonicalizer.rs | 15 +++++------ .../src/infer/canonical/query_response.rs | 4 +-- compiler/rustc_middle/src/infer/canonical.rs | 4 +-- .../rustc_middle/src/ty/typeck_results.rs | 2 +- compiler/rustc_trait_selection/src/infer.rs | 6 ++--- .../src/traits/engine.rs | 4 +-- .../rustc_trait_selection/src/traits/mod.rs | 2 +- .../traits/query/type_op/ascribe_user_type.rs | 6 ++--- .../src/traits/query/type_op/eq.rs | 6 ++--- .../query/type_op/implied_outlives_bounds.rs | 6 ++--- .../src/traits/query/type_op/mod.rs | 8 +++--- .../src/traits/query/type_op/normalize.rs | 26 +++++++++---------- .../src/traits/query/type_op/outlives.rs | 6 ++--- .../traits/query/type_op/prove_predicate.rs | 6 ++--- .../src/traits/query/type_op/subtype.rs | 6 ++--- 15 files changed, 52 insertions(+), 55 deletions(-) diff --git a/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs b/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs index ec5221379d2c..091635e6c73c 100644 --- a/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs +++ b/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs @@ -6,8 +6,7 @@ //! [c]: https://rust-lang.github.io/chalk/book/canonical_queries/canonicalization.html use crate::infer::canonical::{ - Canonical, CanonicalTyVarKind, CanonicalVarInfo, CanonicalVarKind, Canonicalized, - OriginalQueryValues, + Canonical, CanonicalTyVarKind, CanonicalVarInfo, CanonicalVarKind, OriginalQueryValues, }; use crate::infer::InferCtxt; use rustc_middle::ty::flags::FlagComputation; @@ -40,7 +39,7 @@ impl<'tcx> InferCtxt<'tcx> { &self, value: V, query_state: &mut OriginalQueryValues<'tcx>, - ) -> Canonicalized<'tcx, V> + ) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { @@ -59,7 +58,7 @@ impl<'tcx> InferCtxt<'tcx> { &self, value: V, query_state: &mut OriginalQueryValues<'tcx>, - ) -> Canonicalized<'tcx, V> + ) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { @@ -99,7 +98,7 @@ impl<'tcx> InferCtxt<'tcx> { /// out the [chapter in the rustc dev guide][c]. /// /// [c]: https://rust-lang.github.io/chalk/book/canonical_queries/canonicalization.html#canonicalizing-the-query-result - pub fn canonicalize_response(&self, value: V) -> Canonicalized<'tcx, V> + pub fn canonicalize_response(&self, value: V) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { @@ -113,7 +112,7 @@ impl<'tcx> InferCtxt<'tcx> { ) } - pub fn canonicalize_user_type_annotation(&self, value: V) -> Canonicalized<'tcx, V> + pub fn canonicalize_user_type_annotation(&self, value: V) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { @@ -135,7 +134,7 @@ impl<'tcx> InferCtxt<'tcx> { &self, value: V, query_state: &mut OriginalQueryValues<'tcx>, - ) -> Canonicalized<'tcx, V> + ) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { @@ -524,7 +523,7 @@ impl<'cx, 'tcx> Canonicalizer<'cx, 'tcx> { tcx: TyCtxt<'tcx>, canonicalize_region_mode: &dyn CanonicalizeMode, query_state: &mut OriginalQueryValues<'tcx>, - ) -> Canonicalized<'tcx, V> + ) -> Canonical<'tcx, V> where V: TypeFoldable<'tcx>, { diff --git a/compiler/rustc_infer/src/infer/canonical/query_response.rs b/compiler/rustc_infer/src/infer/canonical/query_response.rs index a722613e3310..108011013f58 100644 --- a/compiler/rustc_infer/src/infer/canonical/query_response.rs +++ b/compiler/rustc_infer/src/infer/canonical/query_response.rs @@ -9,7 +9,7 @@ use crate::infer::canonical::substitute::{substitute_value, CanonicalExt}; use crate::infer::canonical::{ - Canonical, CanonicalVarValues, CanonicalizedQueryResponse, Certainty, OriginalQueryValues, + Canonical, CanonicalQueryResponse, CanonicalVarValues, Certainty, OriginalQueryValues, QueryOutlivesConstraint, QueryRegionConstraints, QueryResponse, }; use crate::infer::nll_relate::{NormalizationStrategy, TypeRelating, TypeRelatingDelegate}; @@ -57,7 +57,7 @@ impl<'tcx> InferCtxt<'tcx> { inference_vars: CanonicalVarValues<'tcx>, answer: T, fulfill_cx: &mut dyn TraitEngine<'tcx>, - ) -> Fallible> + ) -> Fallible> where T: Debug + TypeFoldable<'tcx>, Canonical<'tcx, QueryResponse<'tcx, T>>: ArenaAllocatable<'tcx>, diff --git a/compiler/rustc_middle/src/infer/canonical.rs b/compiler/rustc_middle/src/infer/canonical.rs index 0b32f67a81e1..614cf1a0051d 100644 --- a/compiler/rustc_middle/src/infer/canonical.rs +++ b/compiler/rustc_middle/src/infer/canonical.rs @@ -213,9 +213,7 @@ impl QueryRegionConstraints<'_> { } } -pub type Canonicalized<'tcx, V> = Canonical<'tcx, V>; - -pub type CanonicalizedQueryResponse<'tcx, T> = &'tcx Canonical<'tcx, QueryResponse<'tcx, T>>; +pub type CanonicalQueryResponse<'tcx, T> = &'tcx Canonical<'tcx, QueryResponse<'tcx, T>>; /// Indicates whether or not we were able to prove the query to be /// true. diff --git a/compiler/rustc_middle/src/ty/typeck_results.rs b/compiler/rustc_middle/src/ty/typeck_results.rs index 136a4906c58d..53e135bce62a 100644 --- a/compiler/rustc_middle/src/ty/typeck_results.rs +++ b/compiler/rustc_middle/src/ty/typeck_results.rs @@ -626,7 +626,7 @@ pub struct CanonicalUserTypeAnnotation<'tcx> { pub inferred_ty: Ty<'tcx>, } -/// Canonicalized user type annotation. +/// Canonical user type annotation. pub type CanonicalUserType<'tcx> = Canonical<'tcx, UserType<'tcx>>; impl<'tcx> CanonicalUserType<'tcx> { diff --git a/compiler/rustc_trait_selection/src/infer.rs b/compiler/rustc_trait_selection/src/infer.rs index 6c70bbf75163..50c1787ef8c3 100644 --- a/compiler/rustc_trait_selection/src/infer.rs +++ b/compiler/rustc_trait_selection/src/infer.rs @@ -4,7 +4,7 @@ use crate::traits::{self, ObligationCtxt}; use rustc_hir::def_id::DefId; use rustc_hir::lang_items::LangItem; use rustc_middle::arena::ArenaAllocatable; -use rustc_middle::infer::canonical::{Canonical, CanonicalizedQueryResponse, QueryResponse}; +use rustc_middle::infer::canonical::{Canonical, CanonicalQueryResponse, QueryResponse}; use rustc_middle::traits::query::Fallible; use rustc_middle::ty::{self, Ty, TypeFoldable, TypeVisitable}; use rustc_middle::ty::{GenericArg, ToPredicate}; @@ -102,7 +102,7 @@ pub trait InferCtxtBuilderExt<'tcx> { &mut self, canonical_key: &Canonical<'tcx, K>, operation: impl FnOnce(&ObligationCtxt<'_, 'tcx>, K) -> Fallible, - ) -> Fallible> + ) -> Fallible> where K: TypeFoldable<'tcx>, R: Debug + TypeFoldable<'tcx>, @@ -130,7 +130,7 @@ impl<'tcx> InferCtxtBuilderExt<'tcx> for InferCtxtBuilder<'tcx> { &mut self, canonical_key: &Canonical<'tcx, K>, operation: impl FnOnce(&ObligationCtxt<'_, 'tcx>, K) -> Fallible, - ) -> Fallible> + ) -> Fallible> where K: TypeFoldable<'tcx>, R: Debug + TypeFoldable<'tcx>, diff --git a/compiler/rustc_trait_selection/src/traits/engine.rs b/compiler/rustc_trait_selection/src/traits/engine.rs index c028e89e4ea2..0752280e78aa 100644 --- a/compiler/rustc_trait_selection/src/traits/engine.rs +++ b/compiler/rustc_trait_selection/src/traits/engine.rs @@ -8,7 +8,7 @@ use rustc_data_structures::fx::FxIndexSet; use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_infer::infer::at::ToTrace; use rustc_infer::infer::canonical::{ - Canonical, CanonicalVarValues, CanonicalizedQueryResponse, QueryResponse, + Canonical, CanonicalQueryResponse, CanonicalVarValues, QueryResponse, }; use rustc_infer::infer::{InferCtxt, InferOk}; use rustc_infer::traits::query::Fallible; @@ -213,7 +213,7 @@ impl<'a, 'tcx> ObligationCtxt<'a, 'tcx> { &self, inference_vars: CanonicalVarValues<'tcx>, answer: T, - ) -> Fallible> + ) -> Fallible> where T: Debug + TypeFoldable<'tcx>, Canonical<'tcx, QueryResponse<'tcx, T>>: ArenaAllocatable<'tcx>, diff --git a/compiler/rustc_trait_selection/src/traits/mod.rs b/compiler/rustc_trait_selection/src/traits/mod.rs index c30531fa9066..2bab380dba01 100644 --- a/compiler/rustc_trait_selection/src/traits/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/mod.rs @@ -102,7 +102,7 @@ pub enum TraitQueryMode { /// spans etc. passed in and hence can do reasonable /// error reporting on their own. Standard, - /// Canonicalized queries get dummy spans and hence + /// Canonical queries get dummy spans and hence /// must generally propagate errors to /// pre-canonicalization callsites. Canonical, diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/ascribe_user_type.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/ascribe_user_type.rs index 86b015767f0f..e6db96c9e558 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/ascribe_user_type.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/ascribe_user_type.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_middle::ty::{ParamEnvAnd, TyCtxt}; @@ -16,8 +16,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for AscribeUserType<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { tcx.type_op_ascribe_user_type(canonicalized) } } diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/eq.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/eq.rs index 490114aacd13..8c9b9610cb6e 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/eq.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/eq.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_middle::ty::{ParamEnvAnd, TyCtxt}; @@ -16,8 +16,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for Eq<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { tcx.type_op_eq(canonicalized) } } diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/implied_outlives_bounds.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/implied_outlives_bounds.rs index 2a3319f0f26f..18d7c9b19360 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/implied_outlives_bounds.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/implied_outlives_bounds.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_infer::traits::query::OutlivesBound; use rustc_middle::ty::{self, ParamEnvAnd, Ty, TyCtxt}; @@ -27,8 +27,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for ImpliedOutlivesBounds<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { // FIXME this `unchecked_map` is only necessary because the // query is defined as taking a `ParamEnvAnd`; it should // take an `ImpliedOutlivesBounds` instead diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/mod.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/mod.rs index 29ae8ae6b6e5..97002b461aa9 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/mod.rs @@ -1,10 +1,10 @@ use crate::infer::canonical::{ - Canonicalized, CanonicalizedQueryResponse, OriginalQueryValues, QueryRegionConstraints, + Canonical, CanonicalQueryResponse, OriginalQueryValues, QueryRegionConstraints, }; use crate::infer::{InferCtxt, InferOk}; use crate::traits::query::Fallible; use crate::traits::ObligationCause; -use rustc_infer::infer::canonical::{Canonical, Certainty}; +use rustc_infer::infer::canonical::Certainty; use rustc_infer::traits::query::NoSolution; use rustc_infer::traits::PredicateObligations; use rustc_middle::ty::fold::TypeFoldable; @@ -73,8 +73,8 @@ pub trait QueryTypeOp<'tcx>: fmt::Debug + Copy + TypeFoldable<'tcx> + 'tcx { /// not captured in the return value. fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible>; + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible>; fn fully_perform_into( query_key: ParamEnvAnd<'tcx, Self>, diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs index e92ca7325d34..8f0b4de31e6c 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/normalize.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_middle::ty::fold::TypeFoldable; use rustc_middle::ty::{self, Lift, ParamEnvAnd, Ty, TyCtxt}; @@ -18,8 +18,8 @@ where fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { T::type_op_method(tcx, canonicalized) } } @@ -27,15 +27,15 @@ where pub trait Normalizable<'tcx>: fmt::Debug + TypeFoldable<'tcx> + Lift<'tcx> + Copy { fn type_op_method( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize>>, - ) -> Fallible>; + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Normalize>>, + ) -> Fallible>; } impl<'tcx> Normalizable<'tcx> for Ty<'tcx> { fn type_op_method( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Normalize>>, + ) -> Fallible> { tcx.type_op_normalize_ty(canonicalized) } } @@ -43,8 +43,8 @@ impl<'tcx> Normalizable<'tcx> for Ty<'tcx> { impl<'tcx> Normalizable<'tcx> for ty::Predicate<'tcx> { fn type_op_method( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Normalize>>, + ) -> Fallible> { tcx.type_op_normalize_predicate(canonicalized) } } @@ -52,8 +52,8 @@ impl<'tcx> Normalizable<'tcx> for ty::Predicate<'tcx> { impl<'tcx> Normalizable<'tcx> for ty::PolyFnSig<'tcx> { fn type_op_method( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Normalize>>, + ) -> Fallible> { tcx.type_op_normalize_poly_fn_sig(canonicalized) } } @@ -61,8 +61,8 @@ impl<'tcx> Normalizable<'tcx> for ty::PolyFnSig<'tcx> { impl<'tcx> Normalizable<'tcx> for ty::FnSig<'tcx> { fn type_op_method( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Normalize>>, + ) -> Fallible> { tcx.type_op_normalize_fn_sig(canonicalized) } } diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/outlives.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/outlives.rs index b63382429d0a..0d42cd8250a1 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/outlives.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/outlives.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::dropck_outlives::{trivial_dropck_outlives, DropckOutlivesResult}; use crate::traits::query::Fallible; use rustc_middle::ty::{ParamEnvAnd, Ty, TyCtxt}; @@ -30,8 +30,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for DropckOutlives<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { // Subtle: note that we are not invoking // `infcx.at(...).dropck_outlives(...)` here, but rather the // underlying `dropck_outlives` query. This same underlying diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/prove_predicate.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/prove_predicate.rs index 68434c2b68d7..b63da28e2747 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/prove_predicate.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/prove_predicate.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_middle::ty::{self, ParamEnvAnd, TyCtxt}; @@ -32,8 +32,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for ProvePredicate<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - mut canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + mut canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { match canonicalized.value.value.predicate.kind().skip_binder() { ty::PredicateKind::Clause(ty::Clause::Trait(pred)) => { canonicalized.value.param_env.remap_constness_with(pred.constness); diff --git a/compiler/rustc_trait_selection/src/traits/query/type_op/subtype.rs b/compiler/rustc_trait_selection/src/traits/query/type_op/subtype.rs index 57290b669141..c51292eba14b 100644 --- a/compiler/rustc_trait_selection/src/traits/query/type_op/subtype.rs +++ b/compiler/rustc_trait_selection/src/traits/query/type_op/subtype.rs @@ -1,4 +1,4 @@ -use crate::infer::canonical::{Canonicalized, CanonicalizedQueryResponse}; +use crate::infer::canonical::{Canonical, CanonicalQueryResponse}; use crate::traits::query::Fallible; use rustc_middle::ty::{ParamEnvAnd, TyCtxt}; @@ -13,8 +13,8 @@ impl<'tcx> super::QueryTypeOp<'tcx> for Subtype<'tcx> { fn perform_query( tcx: TyCtxt<'tcx>, - canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Self>>, - ) -> Fallible> { + canonicalized: Canonical<'tcx, ParamEnvAnd<'tcx, Self>>, + ) -> Fallible> { tcx.type_op_subtype(canonicalized) } } From ddc0147d536b26a980c0446f86cda0e40378ea32 Mon Sep 17 00:00:00 2001 From: Alex Veber Date: Tue, 27 Dec 2022 08:13:38 +0200 Subject: [PATCH 235/478] Fix diagnostic code --- editors/code/package.json | 5 +++++ editors/code/src/client.ts | 14 ++++++++++++-- editors/code/src/config.ts | 4 ++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/editors/code/package.json b/editors/code/package.json index fad67ce80310..91532b3e96a8 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -411,6 +411,11 @@ "default": false, "type": "boolean" }, + "rust-analyzer.diagnostics.useRustcErrorCode": { + "markdownDescription": "Whether to use the rustc error code.", + "default": false, + "type": "boolean" + }, "$generated-start": {}, "rust-analyzer.assist.emitMustUse": { "markdownDescription": "Whether to insert #[must_use] when generating `as_` methods\nfor enum variants.", diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 23e039722ee3..1470c1f581d4 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -106,6 +106,7 @@ export async function createClient( next: lc.HandleDiagnosticsSignature ) { const preview = config.previewRustcOutput; + const errorCode = config.useRustcErrorCode; diagnostics.forEach((diag, idx) => { // Abuse the fact that VSCode leaks the LSP diagnostics data field through the // Diagnostic class, if they ever break this we are out of luck and have to go @@ -119,11 +120,20 @@ export async function createClient( ?.rendered; if (rendered) { if (preview) { - const index = rendered.match(/^(note|help):/m)?.index || 0; + const index = + rendered.match(/^(note|help):/m)?.index || rendered.length; diag.message = rendered .substring(0, index) .replace(/^ -->[^\n]+\n/m, ""); } + let value; + if (errorCode) { + if (typeof diag.code === "string" || typeof diag.code === "number") { + value = diag.code; + } else { + value = diag.code?.value; + } + } diag.code = { target: vscode.Uri.from({ scheme: "rust-analyzer-diagnostics-view", @@ -131,7 +141,7 @@ export async function createClient( fragment: uri.toString(), query: idx.toString(), }), - value: "Click for full compiler diagnostic", + value: value ?? "Click for full compiler diagnostic", }; } }); diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index d8dbd1df16df..eb4f965291fe 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -241,6 +241,10 @@ export class Config { get previewRustcOutput() { return this.get("diagnostics.previewRustcOutput"); } + + get useRustcErrorCode() { + return this.get("diagnostics.useRustcErrorCode"); + } } const VarRegex = new RegExp(/\$\{(.+?)\}/g); From b996a54cd845ae315a7b089437b43bf1b79a5e65 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 3 Jan 2023 11:58:31 +0100 Subject: [PATCH 236/478] Skip lifetime elision on fn pointers and fn trait types --- crates/hir-ty/src/infer/expr.rs | 1 + .../src/handlers/add_explicit_type.rs | 5 +- .../src/handlers/extract_type_alias.rs | 130 +++++++++--------- crates/ide-db/src/syntax_helpers/node_ext.rs | 9 +- crates/ide/src/inlay_hints/fn_lifetime_fn.rs | 30 +++- 5 files changed, 105 insertions(+), 70 deletions(-) diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 2e5c4244109f..a015f67024fd 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -334,6 +334,7 @@ impl<'a> InferenceContext<'a> { let (param_tys, ret_ty) = match res { Some(res) => { let adjustments = auto_deref_adjust_steps(&derefs); + // FIXME: Handle call adjustments for Fn/FnMut self.write_expr_adj(*callee, adjustments); res } diff --git a/crates/ide-assists/src/handlers/add_explicit_type.rs b/crates/ide-assists/src/handlers/add_explicit_type.rs index b5f99726fe1c..0057f439f1af 100644 --- a/crates/ide-assists/src/handlers/add_explicit_type.rs +++ b/crates/ide-assists/src/handlers/add_explicit_type.rs @@ -47,7 +47,10 @@ pub(crate) fn add_explicit_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> O // Don't enable the assist if there is a type ascription without any placeholders if let Some(ty) = &ascribed_ty { let mut contains_infer_ty = false; - walk_ty(ty, &mut |ty| contains_infer_ty |= matches!(ty, ast::Type::InferType(_))); + walk_ty(ty, &mut |ty| { + contains_infer_ty |= matches!(ty, ast::Type::InferType(_)); + false + }); if !contains_infer_ty { cov_mark::hit!(add_explicit_type_not_applicable_if_ty_already_specified); return None; diff --git a/crates/ide-assists/src/handlers/extract_type_alias.rs b/crates/ide-assists/src/handlers/extract_type_alias.rs index 3116935fc5e7..0505f5784f81 100644 --- a/crates/ide-assists/src/handlers/extract_type_alias.rs +++ b/crates/ide-assists/src/handlers/extract_type_alias.rs @@ -108,76 +108,80 @@ fn collect_used_generics<'gp>( } let mut generics = Vec::new(); - walk_ty(ty, &mut |ty| match ty { - ast::Type::PathType(ty) => { - if let Some(path) = ty.path() { - if let Some(name_ref) = path.as_single_name_ref() { - if let Some(param) = known_generics.iter().find(|gp| { - match gp { - ast::GenericParam::ConstParam(cp) => cp.name(), - ast::GenericParam::TypeParam(tp) => tp.name(), - _ => None, - } - .map_or(false, |n| n.text() == name_ref.text()) - }) { - generics.push(param); - } - } - generics.extend( - path.segments() - .filter_map(|seg| seg.generic_arg_list()) - .flat_map(|it| it.generic_args()) - .filter_map(|it| match it { - ast::GenericArg::LifetimeArg(lt) => { - let lt = lt.lifetime()?; - known_generics.iter().find(find_lifetime(<.text())) + walk_ty(ty, &mut |ty| { + match ty { + ast::Type::PathType(ty) => { + if let Some(path) = ty.path() { + if let Some(name_ref) = path.as_single_name_ref() { + if let Some(param) = known_generics.iter().find(|gp| { + match gp { + ast::GenericParam::ConstParam(cp) => cp.name(), + ast::GenericParam::TypeParam(tp) => tp.name(), + _ => None, } - _ => None, - }), - ); - } - } - ast::Type::ImplTraitType(impl_ty) => { - if let Some(it) = impl_ty.type_bound_list() { - generics.extend( - it.bounds() - .filter_map(|it| it.lifetime()) - .filter_map(|lt| known_generics.iter().find(find_lifetime(<.text()))), - ); - } - } - ast::Type::DynTraitType(dyn_ty) => { - if let Some(it) = dyn_ty.type_bound_list() { - generics.extend( - it.bounds() - .filter_map(|it| it.lifetime()) - .filter_map(|lt| known_generics.iter().find(find_lifetime(<.text()))), - ); - } - } - ast::Type::RefType(ref_) => generics.extend( - ref_.lifetime().and_then(|lt| known_generics.iter().find(find_lifetime(<.text()))), - ), - ast::Type::ArrayType(ar) => { - if let Some(expr) = ar.expr() { - if let ast::Expr::PathExpr(p) = expr { - if let Some(path) = p.path() { - if let Some(name_ref) = path.as_single_name_ref() { - if let Some(param) = known_generics.iter().find(|gp| { - if let ast::GenericParam::ConstParam(cp) = gp { - cp.name().map_or(false, |n| n.text() == name_ref.text()) - } else { - false + .map_or(false, |n| n.text() == name_ref.text()) + }) { + generics.push(param); + } + } + generics.extend( + path.segments() + .filter_map(|seg| seg.generic_arg_list()) + .flat_map(|it| it.generic_args()) + .filter_map(|it| match it { + ast::GenericArg::LifetimeArg(lt) => { + let lt = lt.lifetime()?; + known_generics.iter().find(find_lifetime(<.text())) + } + _ => None, + }), + ); + } + } + ast::Type::ImplTraitType(impl_ty) => { + if let Some(it) = impl_ty.type_bound_list() { + generics.extend( + it.bounds() + .filter_map(|it| it.lifetime()) + .filter_map(|lt| known_generics.iter().find(find_lifetime(<.text()))), + ); + } + } + ast::Type::DynTraitType(dyn_ty) => { + if let Some(it) = dyn_ty.type_bound_list() { + generics.extend( + it.bounds() + .filter_map(|it| it.lifetime()) + .filter_map(|lt| known_generics.iter().find(find_lifetime(<.text()))), + ); + } + } + ast::Type::RefType(ref_) => generics.extend( + ref_.lifetime() + .and_then(|lt| known_generics.iter().find(find_lifetime(<.text()))), + ), + ast::Type::ArrayType(ar) => { + if let Some(expr) = ar.expr() { + if let ast::Expr::PathExpr(p) = expr { + if let Some(path) = p.path() { + if let Some(name_ref) = path.as_single_name_ref() { + if let Some(param) = known_generics.iter().find(|gp| { + if let ast::GenericParam::ConstParam(cp) = gp { + cp.name().map_or(false, |n| n.text() == name_ref.text()) + } else { + false + } + }) { + generics.push(param); } - }) { - generics.push(param); } } } } } - } - _ => (), + _ => (), + }; + false }); // stable resort to lifetime, type, const generics.sort_by_key(|gp| match gp { diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs index b72003ff3633..aa03478599d6 100644 --- a/crates/ide-db/src/syntax_helpers/node_ext.rs +++ b/crates/ide-db/src/syntax_helpers/node_ext.rs @@ -173,7 +173,8 @@ pub fn walk_pat(pat: &ast::Pat, cb: &mut dyn FnMut(ast::Pat)) { } /// Preorder walk all the type's sub types. -pub fn walk_ty(ty: &ast::Type, cb: &mut dyn FnMut(ast::Type)) { +// FIXME: Make the control flow more proper +pub fn walk_ty(ty: &ast::Type, cb: &mut dyn FnMut(ast::Type) -> bool) { let mut preorder = ty.syntax().preorder(); while let Some(event) = preorder.next() { let node = match event { @@ -184,10 +185,12 @@ pub fn walk_ty(ty: &ast::Type, cb: &mut dyn FnMut(ast::Type)) { match ast::Type::cast(node) { Some(ty @ ast::Type::MacroType(_)) => { preorder.skip_subtree(); - cb(ty) + cb(ty); } Some(ty) => { - cb(ty); + if cb(ty) { + preorder.skip_subtree(); + } } // skip const args None if ast::ConstArg::can_cast(kind) => { diff --git a/crates/ide/src/inlay_hints/fn_lifetime_fn.rs b/crates/ide/src/inlay_hints/fn_lifetime_fn.rs index 1f5bcea63a20..2aa5e3dc734f 100644 --- a/crates/ide/src/inlay_hints/fn_lifetime_fn.rs +++ b/crates/ide/src/inlay_hints/fn_lifetime_fn.rs @@ -59,9 +59,14 @@ pub(super) fn hints( r.amp_token(), lifetime, is_elided, - )) + )); + false } - _ => (), + ast::Type::FnPtrType(_) => true, + ast::Type::PathType(t) => { + t.path().and_then(|it| it.segment()).and_then(|it| it.param_list()).is_some() + } + _ => false, }) }); acc @@ -146,8 +151,13 @@ pub(super) fn hints( is_trivial = false; acc.push(mk_lt_hint(amp, output_lt.to_string())); } + false } - _ => (), + ast::Type::FnPtrType(_) => true, + ast::Type::PathType(t) => { + t.path().and_then(|it| it.segment()).and_then(|it| it.param_list()).is_some() + } + _ => false, }) } } @@ -295,6 +305,20 @@ impl () { // ^^^<'0, '1> // ^'0 ^'1 ^'0 } +"#, + ); + } + + #[test] + fn hints_lifetimes_skip_fn_likes() { + check_with_config( + InlayHintsConfig { + lifetime_elision_hints: LifetimeElisionHints::Always, + ..TEST_CONFIG + }, + r#" +fn fn_ptr(a: fn(&()) -> &()) {} +fn fn_trait<>(a: impl Fn(&()) -> &()) {} "#, ); } From c4d8cf1dad9e2ad5710c56533c42979e91520c78 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 3 Jan 2023 12:32:38 +0100 Subject: [PATCH 237/478] Use ZWNJ to prevent VSCode from forming ligatures between hints and code --- editors/code/src/client.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 1470c1f581d4..e6595340aae9 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -100,6 +100,24 @@ export async function createClient( } }, }, + async provideInlayHints(document, viewPort, token, next) { + const inlays = await next(document, viewPort, token); + if (!inlays) { + return inlays; + } + // U+200C is a zero-width non-joiner to prevent the editor from forming a ligature + // between code and hints + for (const inlay of inlays) { + if (typeof inlay.label === "string") { + inlay.label = `\u{200c}${inlay.label}\u{200c}`; + } else if (Array.isArray(inlay.label)) { + for (const it of inlay.label) { + it.value = `\u{200c}${it.value}\u{200c}`; + } + } + } + return inlays; + }, async handleDiagnostics( uri: vscode.Uri, diagnostics: vscode.Diagnostic[], From b6bb1e9ae777d54da910885cc1437f7660d987a4 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 3 Jan 2023 15:46:08 +0100 Subject: [PATCH 238/478] Only set machine-applicable rustc diagnostics as preferred --- crates/rust-analyzer/src/diagnostics/to_proto.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index d1ee99af3ec6..80be43fe80a4 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -191,6 +191,7 @@ fn map_rust_child_diagnostic( let mut edit_map: HashMap> = HashMap::new(); let mut suggested_replacements = Vec::new(); + let mut is_preferred = true; for &span in &spans { if let Some(suggested_replacement) = &span.suggested_replacement { if !suggested_replacement.is_empty() { @@ -209,6 +210,8 @@ fn map_rust_child_diagnostic( ) { edit_map.entry(location.uri).or_default().push(edit); } + is_preferred &= + matches!(span.suggestion_applicability, Some(Applicability::MachineApplicable)); } } @@ -251,7 +254,7 @@ fn map_rust_child_diagnostic( document_changes: None, change_annotations: None, }), - is_preferred: Some(true), + is_preferred: Some(is_preferred), data: None, command: None, }, From d3a50d2fda4fd1a024dfe7b01ab69fb5a0a6b7a7 Mon Sep 17 00:00:00 2001 From: Andre Bogus Date: Wed, 4 Jan 2023 00:44:20 +0100 Subject: [PATCH 239/478] trim paths in `box_default` --- clippy_lints/src/box_default.rs | 4 ++-- tests/ui/box_default.fixed | 8 ++++---- tests/ui/box_default.stderr | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clippy_lints/src/box_default.rs b/clippy_lints/src/box_default.rs index 91900542af83..9d98a6bab710 100644 --- a/clippy_lints/src/box_default.rs +++ b/clippy_lints/src/box_default.rs @@ -8,7 +8,7 @@ use rustc_hir::{ Block, Expr, ExprKind, Local, Node, QPath, TyKind, }; use rustc_lint::{LateContext, LateLintPass, LintContext}; -use rustc_middle::lint::in_external_macro; +use rustc_middle::{lint::in_external_macro, ty::print::with_forced_trimmed_paths}; use rustc_session::{declare_lint_pass, declare_tool_lint}; use rustc_span::sym; @@ -59,7 +59,7 @@ impl LateLintPass<'_> for BoxDefault { if is_plain_default(arg_path) || given_type(cx, expr) { "Box::default()".into() } else { - format!("Box::<{arg_ty}>::default()") + with_forced_trimmed_paths!(format!("Box::<{arg_ty}>::default()")) }, Applicability::MachineApplicable ); diff --git a/tests/ui/box_default.fixed b/tests/ui/box_default.fixed index 911fa856aa0a..68ab996a7049 100644 --- a/tests/ui/box_default.fixed +++ b/tests/ui/box_default.fixed @@ -21,16 +21,16 @@ macro_rules! outer { fn main() { let _string: Box = Box::default(); let _byte = Box::::default(); - let _vec = Box::>::default(); + let _vec = Box::>::default(); let _impl = Box::::default(); let _impl2 = Box::::default(); let _impl3: Box = Box::default(); let _own = Box::new(OwnDefault::default()); // should not lint - let _in_macro = outer!(Box::::default()); - let _string_default = outer!(Box::::default()); + let _in_macro = outer!(Box::::default()); + let _string_default = outer!(Box::::default()); let _vec2: Box> = Box::default(); let _vec3: Box> = Box::default(); - let _vec4: Box<_> = Box::>::default(); + let _vec4: Box<_> = Box::>::default(); let _more = ret_ty_fn(); call_ty_fn(Box::default()); } diff --git a/tests/ui/box_default.stderr b/tests/ui/box_default.stderr index 5ea410331afb..f77c97cdfa26 100644 --- a/tests/ui/box_default.stderr +++ b/tests/ui/box_default.stderr @@ -16,7 +16,7 @@ error: `Box::new(_)` of default value --> $DIR/box_default.rs:24:16 | LL | let _vec = Box::new(Vec::::new()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::>::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::>::default()` error: `Box::new(_)` of default value --> $DIR/box_default.rs:25:17 @@ -40,13 +40,13 @@ error: `Box::new(_)` of default value --> $DIR/box_default.rs:29:28 | LL | let _in_macro = outer!(Box::new(String::new())); - | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` error: `Box::new(_)` of default value --> $DIR/box_default.rs:30:34 | LL | let _string_default = outer!(Box::new(String::from(""))); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` error: `Box::new(_)` of default value --> $DIR/box_default.rs:31:46 @@ -64,7 +64,7 @@ error: `Box::new(_)` of default value --> $DIR/box_default.rs:33:25 | LL | let _vec4: Box<_> = Box::new(Vec::from([false; 0])); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::>::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::>::default()` error: `Box::new(_)` of default value --> $DIR/box_default.rs:35:16 From c104ee9f6d24cf5b0f928ba09dbd71835fe127ee Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Mon, 26 Dec 2022 22:41:49 +0000 Subject: [PATCH 240/478] Move check_region_obligations_and_report_errors to TypeErrCtxt --- .../rustc_hir_analysis/src/check/check.rs | 2 +- .../src/check/compare_impl_item.rs | 11 +++++----- .../rustc_hir_analysis/src/check/wfcheck.rs | 4 +++- .../src/coherence/builtin.rs | 6 ++++-- .../src/impl_wf_check/min_specialization.rs | 3 ++- compiler/rustc_infer/src/infer/mod.rs | 18 +++++++++++++++- .../src/infer/outlives/obligations.rs | 21 +------------------ 7 files changed, 34 insertions(+), 31 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/check/check.rs b/compiler/rustc_hir_analysis/src/check/check.rs index 28cd18bbb8e8..ef563360c4ce 100644 --- a/compiler/rustc_hir_analysis/src/check/check.rs +++ b/compiler/rustc_hir_analysis/src/check/check.rs @@ -468,7 +468,7 @@ fn check_opaque_meets_bounds<'tcx>( // Can have different predicates to their defining use hir::OpaqueTyOrigin::TyAlias => { let outlives_environment = OutlivesEnvironment::new(param_env); - let _ = infcx.check_region_obligations_and_report_errors( + let _ = infcx.err_ctxt().check_region_obligations_and_report_errors( defining_use_anchor, &outlives_environment, ); diff --git a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs index a767338ab85c..d5bf0b30f5f3 100644 --- a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs +++ b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs @@ -619,7 +619,7 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>( Some(infcx), infcx.implied_bounds_tys(param_env, impl_m_hir_id, wf_tys), ); - infcx.check_region_obligations_and_report_errors( + infcx.err_ctxt().check_region_obligations_and_report_errors( impl_m.def_id.expect_local(), &outlives_environment, )?; @@ -1651,8 +1651,9 @@ pub(super) fn compare_impl_const_raw( } let outlives_environment = OutlivesEnvironment::new(param_env); - infcx.check_region_obligations_and_report_errors(impl_const_item_def, &outlives_environment)?; - + infcx + .err_ctxt() + .check_region_obligations_and_report_errors(impl_const_item_def, &outlives_environment)?; Ok(()) } @@ -1760,7 +1761,7 @@ fn compare_type_predicate_entailment<'tcx>( // Finally, resolve all regions. This catches wily misuses of // lifetime parameters. let outlives_environment = OutlivesEnvironment::new(param_env); - infcx.check_region_obligations_and_report_errors( + infcx.err_ctxt().check_region_obligations_and_report_errors( impl_ty.def_id.expect_local(), &outlives_environment, )?; @@ -1974,7 +1975,7 @@ pub(super) fn check_type_bounds<'tcx>( let outlives_environment = OutlivesEnvironment::with_bounds(param_env, Some(&infcx), implied_bounds); - infcx.check_region_obligations_and_report_errors( + infcx.err_ctxt().check_region_obligations_and_report_errors( impl_ty.def_id.expect_local(), &outlives_environment, )?; diff --git a/compiler/rustc_hir_analysis/src/check/wfcheck.rs b/compiler/rustc_hir_analysis/src/check/wfcheck.rs index 0d1aa39c5d95..0d16fac417df 100644 --- a/compiler/rustc_hir_analysis/src/check/wfcheck.rs +++ b/compiler/rustc_hir_analysis/src/check/wfcheck.rs @@ -115,7 +115,9 @@ pub(super) fn enter_wf_checking_ctxt<'tcx, F>( let outlives_environment = OutlivesEnvironment::with_bounds(param_env, Some(infcx), implied_bounds); - let _ = infcx.check_region_obligations_and_report_errors(body_def_id, &outlives_environment); + let _ = infcx + .err_ctxt() + .check_region_obligations_and_report_errors(body_def_id, &outlives_environment); } fn check_well_formed(tcx: TyCtxt<'_>, def_id: hir::OwnerId) { diff --git a/compiler/rustc_hir_analysis/src/coherence/builtin.rs b/compiler/rustc_hir_analysis/src/coherence/builtin.rs index bfedf63da97a..2e2c1591e9b4 100644 --- a/compiler/rustc_hir_analysis/src/coherence/builtin.rs +++ b/compiler/rustc_hir_analysis/src/coherence/builtin.rs @@ -325,7 +325,9 @@ fn visit_implementation_of_dispatch_from_dyn(tcx: TyCtxt<'_>, impl_did: LocalDef // Finally, resolve all regions. let outlives_env = OutlivesEnvironment::new(param_env); - let _ = infcx.check_region_obligations_and_report_errors(impl_did, &outlives_env); + let _ = infcx + .err_ctxt() + .check_region_obligations_and_report_errors(impl_did, &outlives_env); } } _ => { @@ -565,7 +567,7 @@ pub fn coerce_unsized_info<'tcx>(tcx: TyCtxt<'tcx>, impl_did: DefId) -> CoerceUn // Finally, resolve all regions. let outlives_env = OutlivesEnvironment::new(param_env); - let _ = infcx.check_region_obligations_and_report_errors(impl_did, &outlives_env); + let _ = infcx.err_ctxt().check_region_obligations_and_report_errors(impl_did, &outlives_env); CoerceUnsizedInfo { custom_kind: kind } } diff --git a/compiler/rustc_hir_analysis/src/impl_wf_check/min_specialization.rs b/compiler/rustc_hir_analysis/src/impl_wf_check/min_specialization.rs index 1aae9e0bd20a..8b9034d9620e 100644 --- a/compiler/rustc_hir_analysis/src/impl_wf_check/min_specialization.rs +++ b/compiler/rustc_hir_analysis/src/impl_wf_check/min_specialization.rs @@ -181,7 +181,8 @@ fn get_impl_substs( let implied_bounds = infcx.implied_bounds_tys(param_env, impl1_hir_id, assumed_wf_types); let outlives_env = OutlivesEnvironment::with_bounds(param_env, Some(infcx), implied_bounds); - let _ = infcx.check_region_obligations_and_report_errors(impl1_def_id, &outlives_env); + let _ = + infcx.err_ctxt().check_region_obligations_and_report_errors(impl1_def_id, &outlives_env); let Ok(impl2_substs) = infcx.fully_resolve(impl2_substs) else { let span = tcx.def_span(impl1_def_id); tcx.sess.emit_err(SubstsOnOverriddenImpl { span }); diff --git a/compiler/rustc_infer/src/infer/mod.rs b/compiler/rustc_infer/src/infer/mod.rs index b17a465eb383..5d5812cdfd98 100644 --- a/compiler/rustc_infer/src/infer/mod.rs +++ b/compiler/rustc_infer/src/infer/mod.rs @@ -1681,13 +1681,29 @@ impl<'tcx> InferCtxt<'tcx> { } impl<'tcx> TypeErrCtxt<'_, 'tcx> { + /// Processes registered region obliations and resolves regions, reporting + /// any errors if any were raised. Prefer using this function over manually + /// calling `resolve_regions_and_report_errors`. + pub fn check_region_obligations_and_report_errors( + &self, + generic_param_scope: LocalDefId, + outlives_env: &OutlivesEnvironment<'tcx>, + ) -> Result<(), ErrorGuaranteed> { + self.process_registered_region_obligations( + outlives_env.region_bound_pairs(), + outlives_env.param_env, + ); + + self.resolve_regions_and_report_errors(generic_param_scope, outlives_env) + } + /// Process the region constraints and report any errors that /// result. After this, no more unification operations should be /// done -- or the compiler will panic -- but it is legal to use /// `resolve_vars_if_possible` as well as `fully_resolve`. /// /// Make sure to call [`InferCtxt::process_registered_region_obligations`] - /// first, or preferably use [`InferCtxt::check_region_obligations_and_report_errors`] + /// first, or preferably use [`TypeErrCtxt::check_region_obligations_and_report_errors`] /// to do both of these operations together. pub fn resolve_regions_and_report_errors( &self, diff --git a/compiler/rustc_infer/src/infer/outlives/obligations.rs b/compiler/rustc_infer/src/infer/outlives/obligations.rs index f71c39dc0d26..a85e6a19b11b 100644 --- a/compiler/rustc_infer/src/infer/outlives/obligations.rs +++ b/compiler/rustc_infer/src/infer/outlives/obligations.rs @@ -60,7 +60,6 @@ //! imply that `'b: 'a`. use crate::infer::outlives::components::{push_outlives_components, Component}; -use crate::infer::outlives::env::OutlivesEnvironment; use crate::infer::outlives::env::RegionBoundPairs; use crate::infer::outlives::verify::VerifyBoundCx; use crate::infer::{ @@ -68,9 +67,7 @@ use crate::infer::{ }; use crate::traits::{ObligationCause, ObligationCauseCode}; use rustc_data_structures::undo_log::UndoLogs; -use rustc_errors::ErrorGuaranteed; use rustc_hir::def_id::DefId; -use rustc_hir::def_id::LocalDefId; use rustc_middle::mir::ConstraintCategory; use rustc_middle::ty::subst::GenericArgKind; use rustc_middle::ty::{self, Region, SubstsRef, Ty, TyCtxt, TypeVisitable}; @@ -116,7 +113,7 @@ impl<'tcx> InferCtxt<'tcx> { std::mem::take(&mut self.inner.borrow_mut().region_obligations) } - /// NOTE: Prefer using [`InferCtxt::check_region_obligations_and_report_errors`] + /// NOTE: Prefer using `TypeErrCtxt::check_region_obligations_and_report_errors` /// instead of calling this directly. /// /// Process the region obligations that must be proven (during @@ -170,22 +167,6 @@ impl<'tcx> InferCtxt<'tcx> { outlives.type_must_outlive(origin, sup_type, sub_region, category); } } - - /// Processes registered region obliations and resolves regions, reporting - /// any errors if any were raised. Prefer using this function over manually - /// calling `resolve_regions_and_report_errors`. - pub fn check_region_obligations_and_report_errors( - &self, - generic_param_scope: LocalDefId, - outlives_env: &OutlivesEnvironment<'tcx>, - ) -> Result<(), ErrorGuaranteed> { - self.process_registered_region_obligations( - outlives_env.region_bound_pairs(), - outlives_env.param_env, - ); - - self.err_ctxt().resolve_regions_and_report_errors(generic_param_scope, outlives_env) - } } /// The `TypeOutlives` struct has the job of "lowering" a `T: 'a` From 23d3ee81867ae0532e24b1ccbfa857d11066173b Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Mon, 2 Jan 2023 23:35:16 +0000 Subject: [PATCH 241/478] Revert "bootstrap: Get rid of `tail_args` in `stream_cargo`" This reverts commit 9dfe50440e6d48bd2fd40a4b7b3992998e55eace. Fixes `x clippy`. --- src/bootstrap/check.rs | 41 +++++++++++++++++++++++++++++----------- src/bootstrap/compile.rs | 12 ++++++++++-- src/bootstrap/tool.rs | 2 +- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index b203ecd3844b..2771bd2264ce 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -99,13 +99,20 @@ impl Step for Std { cargo_subcommand(builder.kind), ); std_cargo(builder, target, compiler.stage, &mut cargo); - cargo.args(args(builder)); builder.info(&format!( "Checking stage{} library artifacts ({} -> {})", builder.top_stage, &compiler.host, target )); - run_cargo(builder, cargo, &libstd_stamp(builder, compiler, target), vec![], true, false); + run_cargo( + builder, + cargo, + args(builder), + &libstd_stamp(builder, compiler, target), + vec![], + true, + false, + ); // We skip populating the sysroot in non-zero stage because that'll lead // to rlib/rmeta conflicts if std gets built during this session. @@ -149,7 +156,6 @@ impl Step for Std { for krate in builder.in_tree_crates("test", Some(target)) { cargo.arg("-p").arg(krate.name); } - cargo.args(args(builder)); builder.info(&format!( "Checking stage{} library test/bench/example targets ({} -> {})", @@ -158,6 +164,7 @@ impl Step for Std { run_cargo( builder, cargo, + args(builder), &libstd_test_stamp(builder, compiler, target), vec![], true, @@ -226,13 +233,20 @@ impl Step for Rustc { for krate in builder.in_tree_crates("rustc-main", Some(target)) { cargo.arg("-p").arg(krate.name); } - cargo.args(args(builder)); builder.info(&format!( "Checking stage{} compiler artifacts ({} -> {})", builder.top_stage, &compiler.host, target )); - run_cargo(builder, cargo, &librustc_stamp(builder, compiler, target), vec![], true, false); + run_cargo( + builder, + cargo, + args(builder), + &librustc_stamp(builder, compiler, target), + vec![], + true, + false, + ); let libdir = builder.sysroot_libdir(compiler, target); let hostdir = builder.sysroot_libdir(compiler, compiler.host); @@ -279,7 +293,6 @@ impl Step for CodegenBackend { .arg("--manifest-path") .arg(builder.src.join(format!("compiler/rustc_codegen_{}/Cargo.toml", backend))); rustc_cargo_env(builder, &mut cargo, target); - cargo.args(args(builder)); builder.info(&format!( "Checking stage{} {} artifacts ({} -> {})", @@ -289,6 +302,7 @@ impl Step for CodegenBackend { run_cargo( builder, cargo, + args(builder), &codegen_backend_stamp(builder, compiler, target, backend), vec![], true, @@ -345,13 +359,19 @@ impl Step for RustAnalyzer { cargo.arg("--benches"); } - cargo.args(args(builder)); - builder.info(&format!( "Checking stage{} {} artifacts ({} -> {})", compiler.stage, "rust-analyzer", &compiler.host.triple, target.triple )); - run_cargo(builder, cargo, &stamp(builder, compiler, target), vec![], true, false); + run_cargo( + builder, + cargo, + args(builder), + &stamp(builder, compiler, target), + vec![], + true, + false, + ); /// Cargo's output path in a given stage, compiled by a particular /// compiler for the specified target. @@ -405,8 +425,6 @@ macro_rules! tool_check_step { cargo.arg("--all-targets"); } - cargo.args(args(builder)); - // Enable internal lints for clippy and rustdoc // NOTE: this doesn't enable lints for any other tools unless they explicitly add `#![warn(rustc::internal)]` // See https://github.com/rust-lang/rust/pull/80573#issuecomment-754010776 @@ -422,6 +440,7 @@ macro_rules! tool_check_step { run_cargo( builder, cargo, + args(builder), &stamp(builder, compiler, target), vec![], true, diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 147ded3a9eed..6b211d3ec6e8 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -144,6 +144,7 @@ impl Step for Std { run_cargo( builder, cargo, + vec![], &libstd_stamp(builder, compiler, target), target_deps, false, @@ -738,6 +739,7 @@ impl Step for Rustc { run_cargo( builder, cargo, + vec![], &librustc_stamp(builder, compiler, target), vec![], false, @@ -998,7 +1000,7 @@ impl Step for CodegenBackend { "Building stage{} codegen backend {} ({} -> {})", compiler.stage, backend, &compiler.host, target )); - let files = run_cargo(builder, cargo, &tmp_stamp, vec![], false, false); + let files = run_cargo(builder, cargo, vec![], &tmp_stamp, vec![], false, false); if builder.config.dry_run() { return; } @@ -1422,6 +1424,7 @@ pub fn add_to_sysroot( pub fn run_cargo( builder: &Builder<'_>, cargo: Cargo, + tail_args: Vec, stamp: &Path, additional_target_deps: Vec<(PathBuf, DependencyType)>, is_check: bool, @@ -1448,7 +1451,7 @@ pub fn run_cargo( // files we need to probe for later. let mut deps = Vec::new(); let mut toplevel = Vec::new(); - let ok = stream_cargo(builder, cargo, &mut |msg| { + let ok = stream_cargo(builder, cargo, tail_args, &mut |msg| { let (filenames, crate_types) = match msg { CargoMessage::CompilerArtifact { filenames, @@ -1585,6 +1588,7 @@ pub fn run_cargo( pub fn stream_cargo( builder: &Builder<'_>, cargo: Cargo, + tail_args: Vec, cb: &mut dyn FnMut(CargoMessage<'_>), ) -> bool { let mut cargo = Command::from(cargo); @@ -1604,6 +1608,10 @@ pub fn stream_cargo( } cargo.arg("--message-format").arg(message_format).stdout(Stdio::piped()); + for arg in tail_args { + cargo.arg(arg); + } + builder.verbose(&format!("running: {:?}", cargo)); let mut child = match cargo.spawn() { Ok(child) => child, diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs index 63026bd44d47..24b033cc0dc5 100644 --- a/src/bootstrap/tool.rs +++ b/src/bootstrap/tool.rs @@ -72,7 +72,7 @@ impl Step for ToolBuild { builder.info(&format!("Building stage{} tool {} ({})", compiler.stage, tool, target)); let mut duplicates = Vec::new(); - let is_expected = compile::stream_cargo(builder, cargo, &mut |msg| { + let is_expected = compile::stream_cargo(builder, cargo, vec![], &mut |msg| { // Only care about big things like the RLS/Cargo for now match tool { "rls" | "cargo" | "clippy-driver" | "miri" | "rustfmt" => {} From 73d293fb6df79060f483f3eb1b3f59af7b6493a9 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 3 Jan 2023 07:31:04 +0000 Subject: [PATCH 242/478] rename get_parent_node to parent_id --- clippy_lints/src/escape.rs | 6 +++--- clippy_lints/src/index_refutable_slice.rs | 4 ++-- clippy_lints/src/loops/same_item_push.rs | 2 +- clippy_lints/src/manual_rem_euclid.rs | 2 +- clippy_lints/src/matches/match_single_binding.rs | 6 +++--- clippy_lints/src/mixed_read_write_in_expression.rs | 2 +- clippy_lints/src/needless_pass_by_value.rs | 2 +- clippy_lints/src/non_copy_const.rs | 2 +- clippy_lints/src/pass_by_ref_or_value.rs | 2 +- clippy_lints/src/unit_types/unit_arg.rs | 4 ++-- clippy_lints/src/unnecessary_wraps.rs | 2 +- clippy_lints/src/utils/internal_lints/metadata_collector.rs | 2 +- .../src/utils/internal_lints/unnecessary_def_path.rs | 2 +- clippy_utils/src/lib.rs | 4 ++-- 14 files changed, 21 insertions(+), 21 deletions(-) diff --git a/clippy_lints/src/escape.rs b/clippy_lints/src/escape.rs index 1d09adec12f3..58b7b9829a10 100644 --- a/clippy_lints/src/escape.rs +++ b/clippy_lints/src/escape.rs @@ -131,7 +131,7 @@ fn is_argument(map: rustc_middle::hir::map::Map<'_>, id: HirId) -> bool { _ => return false, } - matches!(map.find(map.get_parent_node(id)), Some(Node::Param(_))) + matches!(map.find(map.parent_id(id)), Some(Node::Param(_))) } impl<'a, 'tcx> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> { @@ -156,8 +156,8 @@ impl<'a, 'tcx> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> { let map = &self.cx.tcx.hir(); if is_argument(*map, cmt.hir_id) { // Skip closure arguments - let parent_id = map.get_parent_node(cmt.hir_id); - if let Some(Node::Expr(..)) = map.find(map.get_parent_node(parent_id)) { + let parent_id = map.parent_id(cmt.hir_id); + if let Some(Node::Expr(..)) = map.find(map.parent_id(parent_id)) { return; } diff --git a/clippy_lints/src/index_refutable_slice.rs b/clippy_lints/src/index_refutable_slice.rs index cf35b1f175c6..bdeddf44df7b 100644 --- a/clippy_lints/src/index_refutable_slice.rs +++ b/clippy_lints/src/index_refutable_slice.rs @@ -251,7 +251,7 @@ impl<'a, 'tcx> Visitor<'tcx> for SliceIndexLintingVisitor<'a, 'tcx> { let map = cx.tcx.hir(); // Checking for slice indexing - let parent_id = map.get_parent_node(expr.hir_id); + let parent_id = map.parent_id(expr.hir_id); if let Some(hir::Node::Expr(parent_expr)) = map.find(parent_id); if let hir::ExprKind::Index(_, index_expr) = parent_expr.kind; if let Some((Constant::Int(index_value), _)) = constant(cx, cx.typeck_results(), index_expr); @@ -259,7 +259,7 @@ impl<'a, 'tcx> Visitor<'tcx> for SliceIndexLintingVisitor<'a, 'tcx> { if index_value < max_suggested_slice; // Make sure that this slice index is read only - let maybe_addrof_id = map.get_parent_node(parent_id); + let maybe_addrof_id = map.parent_id(parent_id); if let Some(hir::Node::Expr(maybe_addrof_expr)) = map.find(maybe_addrof_id); if let hir::ExprKind::AddrOf(_kind, hir::Mutability::Not, _inner_expr) = maybe_addrof_expr.kind; then { diff --git a/clippy_lints/src/loops/same_item_push.rs b/clippy_lints/src/loops/same_item_push.rs index 07edee46fa65..540656a2cd99 100644 --- a/clippy_lints/src/loops/same_item_push.rs +++ b/clippy_lints/src/loops/same_item_push.rs @@ -63,7 +63,7 @@ pub(super) fn check<'tcx>( if let Node::Pat(pat) = node; if let PatKind::Binding(bind_ann, ..) = pat.kind; if !matches!(bind_ann, BindingAnnotation(_, Mutability::Mut)); - let parent_node = cx.tcx.hir().get_parent_node(hir_id); + let parent_node = cx.tcx.hir().parent_id(hir_id); if let Some(Node::Local(parent_let_expr)) = cx.tcx.hir().find(parent_node); if let Some(init) = parent_let_expr.init; then { diff --git a/clippy_lints/src/manual_rem_euclid.rs b/clippy_lints/src/manual_rem_euclid.rs index 8d447c37150b..494fde395e93 100644 --- a/clippy_lints/src/manual_rem_euclid.rs +++ b/clippy_lints/src/manual_rem_euclid.rs @@ -74,7 +74,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualRemEuclid { && let Some(hir_id) = path_to_local(expr3) && let Some(Node::Pat(_)) = cx.tcx.hir().find(hir_id) { // Apply only to params or locals with annotated types - match cx.tcx.hir().find(cx.tcx.hir().get_parent_node(hir_id)) { + match cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { Some(Node::Param(..)) => (), Some(Node::Local(local)) => { let Some(ty) = local.ty else { return }; diff --git a/clippy_lints/src/matches/match_single_binding.rs b/clippy_lints/src/matches/match_single_binding.rs index c94a1f763306..abe9d231f4aa 100644 --- a/clippy_lints/src/matches/match_single_binding.rs +++ b/clippy_lints/src/matches/match_single_binding.rs @@ -140,8 +140,8 @@ pub(crate) fn check<'a>(cx: &LateContext<'a>, ex: &Expr<'a>, arms: &[Arm<'_>], e fn opt_parent_assign_span<'a>(cx: &LateContext<'a>, ex: &Expr<'a>) -> Option { let map = &cx.tcx.hir(); - if let Some(Node::Expr(parent_arm_expr)) = map.find(map.get_parent_node(ex.hir_id)) { - return match map.find(map.get_parent_node(parent_arm_expr.hir_id)) { + if let Some(Node::Expr(parent_arm_expr)) = map.find(map.parent_id(ex.hir_id)) { + return match map.find(map.parent_id(parent_arm_expr.hir_id)) { Some(Node::Local(parent_let_expr)) => Some(AssignmentExpr::Local { span: parent_let_expr.span, pat_span: parent_let_expr.pat.span(), @@ -183,7 +183,7 @@ fn sugg_with_curlies<'a>( // If the parent is already an arm, and the body is another match statement, // we need curly braces around suggestion - let parent_node_id = cx.tcx.hir().get_parent_node(match_expr.hir_id); + let parent_node_id = cx.tcx.hir().parent_id(match_expr.hir_id); if let Node::Arm(arm) = &cx.tcx.hir().get(parent_node_id) { if let ExprKind::Match(..) = arm.body.kind { cbrace_end = format!("\n{indent}}}"); diff --git a/clippy_lints/src/mixed_read_write_in_expression.rs b/clippy_lints/src/mixed_read_write_in_expression.rs index 321fa4b7f999..f0be7771bb1a 100644 --- a/clippy_lints/src/mixed_read_write_in_expression.rs +++ b/clippy_lints/src/mixed_read_write_in_expression.rs @@ -186,7 +186,7 @@ fn check_for_unsequenced_reads(vis: &mut ReadVisitor<'_, '_>) { let map = &vis.cx.tcx.hir(); let mut cur_id = vis.write_expr.hir_id; loop { - let parent_id = map.get_parent_node(cur_id); + let parent_id = map.parent_id(cur_id); if parent_id == cur_id { break; } diff --git a/clippy_lints/src/needless_pass_by_value.rs b/clippy_lints/src/needless_pass_by_value.rs index 2f0b7ce16e51..58c54280a234 100644 --- a/clippy_lints/src/needless_pass_by_value.rs +++ b/clippy_lints/src/needless_pass_by_value.rs @@ -100,7 +100,7 @@ impl<'tcx> LateLintPass<'tcx> for NeedlessPassByValue { } // Exclude non-inherent impls - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().get_parent_node(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/non_copy_const.rs b/clippy_lints/src/non_copy_const.rs index 2a3bd4ee6ce6..07fd321d69fc 100644 --- a/clippy_lints/src/non_copy_const.rs +++ b/clippy_lints/src/non_copy_const.rs @@ -366,7 +366,7 @@ impl<'tcx> LateLintPass<'tcx> for NonCopyConst { let mut dereferenced_expr = expr; let mut needs_check_adjustment = true; loop { - let parent_id = cx.tcx.hir().get_parent_node(cur_expr.hir_id); + let parent_id = cx.tcx.hir().parent_id(cur_expr.hir_id); if parent_id == cur_expr.hir_id { break; } diff --git a/clippy_lints/src/pass_by_ref_or_value.rs b/clippy_lints/src/pass_by_ref_or_value.rs index 75add4ee4aad..f96a19b27235 100644 --- a/clippy_lints/src/pass_by_ref_or_value.rs +++ b/clippy_lints/src/pass_by_ref_or_value.rs @@ -299,7 +299,7 @@ impl<'tcx> LateLintPass<'tcx> for PassByRefOrValue { } // Exclude non-inherent impls - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().get_parent_node(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/unit_types/unit_arg.rs b/clippy_lints/src/unit_types/unit_arg.rs index ef9f740f7047..ac4f8789a434 100644 --- a/clippy_lints/src/unit_types/unit_arg.rs +++ b/clippy_lints/src/unit_types/unit_arg.rs @@ -21,7 +21,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { return; } let map = &cx.tcx.hir(); - let opt_parent_node = map.find(map.get_parent_node(expr.hir_id)); + let opt_parent_node = map.find(map.parent_id(expr.hir_id)); if_chain! { if let Some(hir::Node::Expr(parent_expr)) = opt_parent_node; if is_questionmark_desugar_marked_call(parent_expr); @@ -192,7 +192,7 @@ fn fmt_stmts_and_call( let mut stmts_and_call_snippet = stmts_and_call.join(&format!("{}{}", ";\n", " ".repeat(call_expr_indent))); // expr is not in a block statement or result expression position, wrap in a block - let parent_node = cx.tcx.hir().find(cx.tcx.hir().get_parent_node(call_expr.hir_id)); + let parent_node = cx.tcx.hir().find(cx.tcx.hir().parent_id(call_expr.hir_id)); if !matches!(parent_node, Some(Node::Block(_))) && !matches!(parent_node, Some(Node::Stmt(_))) { let block_indent = call_expr_indent + 4; stmts_and_call_snippet = diff --git a/clippy_lints/src/unnecessary_wraps.rs b/clippy_lints/src/unnecessary_wraps.rs index 60b46854b4ff..63f4f01b0877 100644 --- a/clippy_lints/src/unnecessary_wraps.rs +++ b/clippy_lints/src/unnecessary_wraps.rs @@ -91,7 +91,7 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryWraps { } // Abort if the method is implementing a trait or of it a trait method. - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().get_parent_node(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/utils/internal_lints/metadata_collector.rs b/clippy_lints/src/utils/internal_lints/metadata_collector.rs index 929544cd69d5..a177ae507bbe 100644 --- a/clippy_lints/src/utils/internal_lints/metadata_collector.rs +++ b/clippy_lints/src/utils/internal_lints/metadata_collector.rs @@ -1058,7 +1058,7 @@ fn get_parent_local<'hir>(cx: &LateContext<'hir>, expr: &'hir hir::Expr<'hir>) - fn get_parent_local_hir_id<'hir>(cx: &LateContext<'hir>, hir_id: hir::HirId) -> Option<&'hir hir::Local<'hir>> { let map = cx.tcx.hir(); - match map.find(map.get_parent_node(hir_id)) { + match map.find(map.parent_id(hir_id)) { Some(hir::Node::Local(local)) => Some(local), Some(hir::Node::Pat(pattern)) => get_parent_local_hir_id(cx, pattern.hir_id), _ => None, diff --git a/clippy_lints/src/utils/internal_lints/unnecessary_def_path.rs b/clippy_lints/src/utils/internal_lints/unnecessary_def_path.rs index 393988dbad38..7144363637a0 100644 --- a/clippy_lints/src/utils/internal_lints/unnecessary_def_path.rs +++ b/clippy_lints/src/utils/internal_lints/unnecessary_def_path.rs @@ -219,7 +219,7 @@ fn path_to_matched_type(cx: &LateContext<'_>, expr: &hir::Expr<'_>) -> Option match cx.qpath_res(qpath, expr.hir_id) { Res::Local(hir_id) => { - let parent_id = cx.tcx.hir().get_parent_node(hir_id); + let parent_id = cx.tcx.hir().parent_id(hir_id); if let Some(Node::Local(Local { init: Some(init), .. })) = cx.tcx.hir().find(parent_id) { path_to_matched_type(cx, init) } else { diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index d863609b6a72..63d0938169a8 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -174,7 +174,7 @@ pub fn find_binding_init<'tcx>(cx: &LateContext<'tcx>, hir_id: HirId) -> Option< if_chain! { if let Some(Node::Pat(pat)) = hir.find(hir_id); if matches!(pat.kind, PatKind::Binding(BindingAnnotation::NONE, ..)); - let parent = hir.get_parent_node(hir_id); + let parent = hir.parent_id(hir_id); if let Some(Node::Local(local)) = hir.find(parent); then { return local.init; @@ -2075,7 +2075,7 @@ pub fn is_no_core_crate(cx: &LateContext<'_>) -> bool { /// } /// ``` pub fn is_trait_impl_item(cx: &LateContext<'_>, hir_id: HirId) -> bool { - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().get_parent_node(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { matches!(item.kind, ItemKind::Impl(hir::Impl { of_trait: Some(_), .. })) } else { false From bd1d8971cf3fe6f3cefcf7cc03dbdc7d1c684617 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 3 Jan 2023 07:31:33 +0000 Subject: [PATCH 243/478] rename find_parent_node to opt_parent_id --- clippy_lints/src/casts/cast_slice_different_sizes.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/casts/cast_slice_different_sizes.rs b/clippy_lints/src/casts/cast_slice_different_sizes.rs index c8e54d7b8e0c..27cc5a1c3f04 100644 --- a/clippy_lints/src/casts/cast_slice_different_sizes.rs +++ b/clippy_lints/src/casts/cast_slice_different_sizes.rs @@ -68,7 +68,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &Expr<'tcx>, msrv: &Msrv fn is_child_of_cast(cx: &LateContext<'_>, expr: &Expr<'_>) -> bool { let map = cx.tcx.hir(); if_chain! { - if let Some(parent_id) = map.find_parent_node(expr.hir_id); + if let Some(parent_id) = map.opt_parent_id(expr.hir_id); if let Some(parent) = map.find(parent_id); then { let expr = match parent { From 70f6c478f65993f4150f5f41b33f57d7b2715f3b Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 3 Jan 2023 17:30:35 +0000 Subject: [PATCH 244/478] get_parent and find_parent --- clippy_lints/src/escape.rs | 4 ++-- clippy_lints/src/manual_rem_euclid.rs | 2 +- clippy_lints/src/matches/match_single_binding.rs | 7 +++---- clippy_lints/src/needless_pass_by_value.rs | 2 +- clippy_lints/src/pass_by_ref_or_value.rs | 2 +- clippy_lints/src/unit_types/unit_arg.rs | 4 ++-- clippy_lints/src/unnecessary_wraps.rs | 2 +- .../src/utils/internal_lints/metadata_collector.rs | 2 +- clippy_utils/src/lib.rs | 4 ++-- 9 files changed, 14 insertions(+), 15 deletions(-) diff --git a/clippy_lints/src/escape.rs b/clippy_lints/src/escape.rs index 58b7b9829a10..dfb43893326e 100644 --- a/clippy_lints/src/escape.rs +++ b/clippy_lints/src/escape.rs @@ -131,7 +131,7 @@ fn is_argument(map: rustc_middle::hir::map::Map<'_>, id: HirId) -> bool { _ => return false, } - matches!(map.find(map.parent_id(id)), Some(Node::Param(_))) + matches!(map.find_parent(id), Some(Node::Param(_))) } impl<'a, 'tcx> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> { @@ -157,7 +157,7 @@ impl<'a, 'tcx> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> { if is_argument(*map, cmt.hir_id) { // Skip closure arguments let parent_id = map.parent_id(cmt.hir_id); - if let Some(Node::Expr(..)) = map.find(map.parent_id(parent_id)) { + if let Some(Node::Expr(..)) = map.find_parent(parent_id) { return; } diff --git a/clippy_lints/src/manual_rem_euclid.rs b/clippy_lints/src/manual_rem_euclid.rs index 494fde395e93..38f41d077c16 100644 --- a/clippy_lints/src/manual_rem_euclid.rs +++ b/clippy_lints/src/manual_rem_euclid.rs @@ -74,7 +74,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualRemEuclid { && let Some(hir_id) = path_to_local(expr3) && let Some(Node::Pat(_)) = cx.tcx.hir().find(hir_id) { // Apply only to params or locals with annotated types - match cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { + match cx.tcx.hir().find_parent(hir_id) { Some(Node::Param(..)) => (), Some(Node::Local(local)) => { let Some(ty) = local.ty else { return }; diff --git a/clippy_lints/src/matches/match_single_binding.rs b/clippy_lints/src/matches/match_single_binding.rs index abe9d231f4aa..065a5c72621c 100644 --- a/clippy_lints/src/matches/match_single_binding.rs +++ b/clippy_lints/src/matches/match_single_binding.rs @@ -140,8 +140,8 @@ pub(crate) fn check<'a>(cx: &LateContext<'a>, ex: &Expr<'a>, arms: &[Arm<'_>], e fn opt_parent_assign_span<'a>(cx: &LateContext<'a>, ex: &Expr<'a>) -> Option { let map = &cx.tcx.hir(); - if let Some(Node::Expr(parent_arm_expr)) = map.find(map.parent_id(ex.hir_id)) { - return match map.find(map.parent_id(parent_arm_expr.hir_id)) { + if let Some(Node::Expr(parent_arm_expr)) = map.find_parent(ex.hir_id) { + return match map.find_parent(parent_arm_expr.hir_id) { Some(Node::Local(parent_let_expr)) => Some(AssignmentExpr::Local { span: parent_let_expr.span, pat_span: parent_let_expr.pat.span(), @@ -183,8 +183,7 @@ fn sugg_with_curlies<'a>( // If the parent is already an arm, and the body is another match statement, // we need curly braces around suggestion - let parent_node_id = cx.tcx.hir().parent_id(match_expr.hir_id); - if let Node::Arm(arm) = &cx.tcx.hir().get(parent_node_id) { + if let Node::Arm(arm) = &cx.tcx.hir().get_parent(match_expr.hir_id) { if let ExprKind::Match(..) = arm.body.kind { cbrace_end = format!("\n{indent}}}"); // Fix body indent due to the match diff --git a/clippy_lints/src/needless_pass_by_value.rs b/clippy_lints/src/needless_pass_by_value.rs index 58c54280a234..1249db5dc479 100644 --- a/clippy_lints/src/needless_pass_by_value.rs +++ b/clippy_lints/src/needless_pass_by_value.rs @@ -100,7 +100,7 @@ impl<'tcx> LateLintPass<'tcx> for NeedlessPassByValue { } // Exclude non-inherent impls - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find_parent(hir_id) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/pass_by_ref_or_value.rs b/clippy_lints/src/pass_by_ref_or_value.rs index f96a19b27235..870a1c7d88d5 100644 --- a/clippy_lints/src/pass_by_ref_or_value.rs +++ b/clippy_lints/src/pass_by_ref_or_value.rs @@ -299,7 +299,7 @@ impl<'tcx> LateLintPass<'tcx> for PassByRefOrValue { } // Exclude non-inherent impls - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find_parent(hir_id) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/unit_types/unit_arg.rs b/clippy_lints/src/unit_types/unit_arg.rs index ac4f8789a434..dd120599c04e 100644 --- a/clippy_lints/src/unit_types/unit_arg.rs +++ b/clippy_lints/src/unit_types/unit_arg.rs @@ -21,7 +21,7 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { return; } let map = &cx.tcx.hir(); - let opt_parent_node = map.find(map.parent_id(expr.hir_id)); + let opt_parent_node = map.find_parent(expr.hir_id); if_chain! { if let Some(hir::Node::Expr(parent_expr)) = opt_parent_node; if is_questionmark_desugar_marked_call(parent_expr); @@ -192,7 +192,7 @@ fn fmt_stmts_and_call( let mut stmts_and_call_snippet = stmts_and_call.join(&format!("{}{}", ";\n", " ".repeat(call_expr_indent))); // expr is not in a block statement or result expression position, wrap in a block - let parent_node = cx.tcx.hir().find(cx.tcx.hir().parent_id(call_expr.hir_id)); + let parent_node = cx.tcx.hir().find_parent(call_expr.hir_id); if !matches!(parent_node, Some(Node::Block(_))) && !matches!(parent_node, Some(Node::Stmt(_))) { let block_indent = call_expr_indent + 4; stmts_and_call_snippet = diff --git a/clippy_lints/src/unnecessary_wraps.rs b/clippy_lints/src/unnecessary_wraps.rs index 63f4f01b0877..84ec0d0fb1cf 100644 --- a/clippy_lints/src/unnecessary_wraps.rs +++ b/clippy_lints/src/unnecessary_wraps.rs @@ -91,7 +91,7 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryWraps { } // Abort if the method is implementing a trait or of it a trait method. - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find_parent(hir_id) { if matches!( item.kind, ItemKind::Impl(Impl { of_trait: Some(_), .. }) | ItemKind::Trait(..) diff --git a/clippy_lints/src/utils/internal_lints/metadata_collector.rs b/clippy_lints/src/utils/internal_lints/metadata_collector.rs index a177ae507bbe..c86f24cbd378 100644 --- a/clippy_lints/src/utils/internal_lints/metadata_collector.rs +++ b/clippy_lints/src/utils/internal_lints/metadata_collector.rs @@ -1058,7 +1058,7 @@ fn get_parent_local<'hir>(cx: &LateContext<'hir>, expr: &'hir hir::Expr<'hir>) - fn get_parent_local_hir_id<'hir>(cx: &LateContext<'hir>, hir_id: hir::HirId) -> Option<&'hir hir::Local<'hir>> { let map = cx.tcx.hir(); - match map.find(map.parent_id(hir_id)) { + match map.find_parent((hir_id)) { Some(hir::Node::Local(local)) => Some(local), Some(hir::Node::Pat(pattern)) => get_parent_local_hir_id(cx, pattern.hir_id), _ => None, diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index 63d0938169a8..8290fe9ecb4c 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -1287,7 +1287,7 @@ pub fn contains_return(expr: &hir::Expr<'_>) -> bool { /// Gets the parent node, if any. pub fn get_parent_node(tcx: TyCtxt<'_>, id: HirId) -> Option> { - tcx.hir().parent_iter(id).next().map(|(_, node)| node) + tcx.hir().find_parent(id) } /// Gets the parent expression, if any –- this is useful to constrain a lint. @@ -2075,7 +2075,7 @@ pub fn is_no_core_crate(cx: &LateContext<'_>) -> bool { /// } /// ``` pub fn is_trait_impl_item(cx: &LateContext<'_>, hir_id: HirId) -> bool { - if let Some(Node::Item(item)) = cx.tcx.hir().find(cx.tcx.hir().parent_id(hir_id)) { + if let Some(Node::Item(item)) = cx.tcx.hir().find_parent(hir_id) { matches!(item.kind, ItemKind::Impl(hir::Impl { of_trait: Some(_), .. })) } else { false From 21ea0048cd879342cbec67152dbacec6e38b56bb Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Wed, 4 Jan 2023 18:20:15 +0900 Subject: [PATCH 245/478] fix: unescape inline module names in module resolution --- crates/hir-def/src/nameres/mod_resolution.rs | 2 +- .../src/nameres/tests/mod_resolution.rs | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/crates/hir-def/src/nameres/mod_resolution.rs b/crates/hir-def/src/nameres/mod_resolution.rs index 11d20d3db39a..4c263846d27d 100644 --- a/crates/hir-def/src/nameres/mod_resolution.rs +++ b/crates/hir-def/src/nameres/mod_resolution.rs @@ -34,7 +34,7 @@ impl ModDir { let path = match attr_path.map(SmolStr::as_str) { None => { let mut path = self.dir_path.clone(); - path.push(&name.to_smol_str()); + path.push(&name.unescaped().to_smol_str()); path } Some(attr_path) => { diff --git a/crates/hir-def/src/nameres/tests/mod_resolution.rs b/crates/hir-def/src/nameres/tests/mod_resolution.rs index c575bf7cac25..a01931288478 100644 --- a/crates/hir-def/src/nameres/tests/mod_resolution.rs +++ b/crates/hir-def/src/nameres/tests/mod_resolution.rs @@ -156,6 +156,43 @@ pub struct Baz; ); } +#[test] +fn module_resolution_works_for_inline_raw_modules() { + check( + r#" +//- /lib.rs +mod r#async { + pub mod a; + pub mod r#async; +} +use self::r#async::a::Foo; +use self::r#async::r#async::Bar; + +//- /async/a.rs +pub struct Foo; + +//- /async/async.rs +pub struct Bar; +"#, + expect![[r#" + crate + Bar: t v + Foo: t v + r#async: t + + crate::r#async + a: t + r#async: t + + crate::r#async::a + Foo: t v + + crate::r#async::r#async + Bar: t v + "#]], + ); +} + #[test] fn module_resolution_decl_path() { check( From 34534152f5ad64d4d1fbc50ef475bc68cb7ac750 Mon Sep 17 00:00:00 2001 From: Kai Luo Date: Wed, 4 Jan 2023 18:00:09 +0800 Subject: [PATCH 246/478] [LSDA] Take ttype_index into account when taking action If cs_action != 0, we should check the ttype_index field in action record. If ttype_index == 0, a clean up action is taken. --- library/std/src/personality/dwarf/eh.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index a783e187004f..e7bd700b8b89 100644 --- a/library/std/src/personality/dwarf/eh.rs +++ b/library/std/src/personality/dwarf/eh.rs @@ -84,7 +84,7 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result let cs_start = read_encoded_pointer(&mut reader, context, call_site_encoding)?; let cs_len = read_encoded_pointer(&mut reader, context, call_site_encoding)?; let cs_lpad = read_encoded_pointer(&mut reader, context, call_site_encoding)?; - let cs_action = reader.read_uleb128(); + let cs_action_entry = reader.read_uleb128(); // Callsite table is sorted by cs_start, so if we've passed the ip, we // may stop searching. if ip < func_start + cs_start { @@ -95,7 +95,15 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result return Ok(EHAction::None); } else { let lpad = lpad_base + cs_lpad; - return Ok(interpret_cs_action(cs_action, lpad)); + if cs_action_entry == 0 { + return Ok(interpret_cs_action(0, lpad)); + } else { + let action_record = + (action_table as *mut u8).offset(cs_action_entry as isize - 1); + let mut action_reader = DwarfReader::new(action_record); + let ttype_index = action_reader.read_sleb128(); + return Ok(interpret_cs_action(ttype_index as u64, lpad)); + } } } } From ea6ff7ed04b5785d20af03b1e4ac73b4960fa5d5 Mon Sep 17 00:00:00 2001 From: Tyler Weaver Date: Wed, 4 Jan 2023 07:06:07 -0700 Subject: [PATCH 247/478] Apply changes suggested in review --- ...se_sensitive_file_extension_comparisons.rs | 49 ++++++++++--------- ...sensitive_file_extension_comparisons.fixed | 7 +++ ...se_sensitive_file_extension_comparisons.rs | 5 ++ ...ensitive_file_extension_comparisons.stderr | 20 ++++++-- 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs index b6ec0fba6cfb..0b3bf22743fa 100644 --- a/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs +++ b/clippy_lints/src/methods/case_sensitive_file_extension_comparisons.rs @@ -1,6 +1,6 @@ use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::source::snippet_opt; use clippy_utils::source::{indent_of, reindent_multiline}; -use clippy_utils::sugg::Sugg; use clippy_utils::ty::is_type_lang_item; use if_chain::if_chain; use rustc_ast::ast::LitKind; @@ -19,8 +19,10 @@ pub(super) fn check<'tcx>( arg: &'tcx Expr<'_>, ) { if let ExprKind::MethodCall(path_segment, ..) = recv.kind { - let method_name = path_segment.ident.name.as_str(); - if method_name == "to_lowercase" || method_name == "to_uppercase" { + if matches!( + path_segment.ident.name.as_str(), + "to_lowercase" | "to_uppercase" | "to_ascii_lowercase" | "to_ascii_uppercase" + ) { return; } } @@ -45,28 +47,29 @@ pub(super) fn check<'tcx>( "case-sensitive file extension comparison", |diag| { diag.help("consider using a case-insensitive comparison instead"); - let mut recv_source = Sugg::hir(cx, recv, "").to_string(); + if let Some(mut recv_source) = snippet_opt(cx, recv.span) { - if is_type_lang_item(cx, recv_ty, LangItem::String) { - recv_source = format!("&{recv_source}"); + if !cx.typeck_results().expr_ty(recv).is_ref() { + recv_source = format!("&{recv_source}"); + } + + let suggestion_source = reindent_multiline( + format!( + "std::path::Path::new({}) + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case(\"{}\"))", + recv_source, ext_str.strip_prefix('.').unwrap()).into(), + true, + Some(indent_of(cx, call_span).unwrap_or(0) + 4) + ); + + diag.span_suggestion( + recv.span.to(call_span), + "use std::path::Path", + suggestion_source, + Applicability::MaybeIncorrect, + ); } - - let suggestion_source = reindent_multiline( - format!( - "std::path::Path::new({}) - .extension() - .map_or(false, |ext| ext.eq_ignore_ascii_case(\"{}\"))", - recv_source, ext_str.strip_prefix('.').unwrap()).into(), - true, - Some(indent_of(cx, call_span).unwrap_or(0) + 4) - ); - - diag.span_suggestion( - recv.span.to(call_span), - "use std::path::Path", - suggestion_source, - Applicability::MaybeIncorrect, - ); } ); } diff --git a/tests/ui/case_sensitive_file_extension_comparisons.fixed b/tests/ui/case_sensitive_file_extension_comparisons.fixed index a19ed1ddcd54..5fbaa64db39e 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.fixed +++ b/tests/ui/case_sensitive_file_extension_comparisons.fixed @@ -25,6 +25,13 @@ fn main() { .extension() .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + // The fixup should preserve the indentation level + { + let _ = std::path::Path::new("str") + .extension() + .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + } + // The test struct should not trigger the lint failure with .ext12 TestStruct {}.ends_with(".ext12"); diff --git a/tests/ui/case_sensitive_file_extension_comparisons.rs b/tests/ui/case_sensitive_file_extension_comparisons.rs index ad56b7296f75..3c0d4821f9f3 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.rs +++ b/tests/ui/case_sensitive_file_extension_comparisons.rs @@ -19,6 +19,11 @@ fn main() { let _ = String::new().ends_with(".ext12"); let _ = "str".ends_with(".ext12"); + // The fixup should preserve the indentation level + { + let _ = "str".ends_with(".ext12"); + } + // The test struct should not trigger the lint failure with .ext12 TestStruct {}.ends_with(".ext12"); diff --git a/tests/ui/case_sensitive_file_extension_comparisons.stderr b/tests/ui/case_sensitive_file_extension_comparisons.stderr index b5c8e4b4fe68..44c8e3fdf740 100644 --- a/tests/ui/case_sensitive_file_extension_comparisons.stderr +++ b/tests/ui/case_sensitive_file_extension_comparisons.stderr @@ -42,7 +42,21 @@ LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:26:13 + --> $DIR/case_sensitive_file_extension_comparisons.rs:24:17 + | +LL | let _ = "str".ends_with(".ext12"); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: consider using a case-insensitive comparison instead +help: use std::path::Path + | +LL ~ let _ = std::path::Path::new("str") +LL + .extension() +LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); + | + +error: case-sensitive file extension comparison + --> $DIR/case_sensitive_file_extension_comparisons.rs:31:13 | LL | let _ = String::new().ends_with(".EXT12"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -56,7 +70,7 @@ LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); | error: case-sensitive file extension comparison - --> $DIR/case_sensitive_file_extension_comparisons.rs:27:13 + --> $DIR/case_sensitive_file_extension_comparisons.rs:32:13 | LL | let _ = "str".ends_with(".EXT12"); | ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -69,5 +83,5 @@ LL + .extension() LL ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); | -error: aborting due to 5 previous errors +error: aborting due to 6 previous errors From ae73628f6bf0ee3ac6f571b447972f4f37a39103 Mon Sep 17 00:00:00 2001 From: bvanjoi Date: Wed, 4 Jan 2023 22:10:17 +0800 Subject: [PATCH 248/478] fix: keep whitespace in extract function handler --- .../src/handlers/extract_function.rs | 9 +++++---- crates/syntax/src/ast/make.rs | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index 4ee9d4638bbd..94614360c729 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -1799,7 +1799,8 @@ fn make_body( }) .collect::>(); let tail_expr = tail_expr.map(|expr| expr.dedent(old_indent).indent(body_indent)); - make::hacky_block_expr_with_comments(elements, tail_expr) + + make::hacky_block_expr(elements, tail_expr) } }; @@ -1881,7 +1882,7 @@ fn with_tail_expr(block: ast::BlockExpr, tail_expr: ast::Expr) -> ast::BlockExpr elements.push(syntax::NodeOrToken::Node(stmt_tail.syntax().clone())); } - make::hacky_block_expr_with_comments(elements, Some(tail_expr)) + make::hacky_block_expr(elements, Some(tail_expr)) } fn format_type(ty: &hir::Type, ctx: &AssistContext<'_>, module: hir::Module) -> String { @@ -4978,9 +4979,8 @@ fn $0fun_name() { ); } - // FIXME: we do want to preserve whitespace #[test] - fn extract_function_does_not_preserve_whitespace() { + fn extract_function_does_preserve_whitespace() { check_assist( extract_function, r#" @@ -4999,6 +4999,7 @@ fn func() { fn $0fun_name() { let a = 0; + let x = 0; } "#, diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index 8c26009add2b..f17b7d8557df 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs @@ -339,10 +339,10 @@ pub fn tail_only_block_expr(tail_expr: ast::Expr) -> ast::BlockExpr { } /// Ideally this function wouldn't exist since it involves manual indenting. -/// It differs from `make::block_expr` by also supporting comments. +/// It differs from `make::block_expr` by also supporting comments and whitespace. /// /// FIXME: replace usages of this with the mutable syntax tree API -pub fn hacky_block_expr_with_comments( +pub fn hacky_block_expr( elements: impl IntoIterator, tail_expr: Option, ) -> ast::BlockExpr { @@ -350,10 +350,17 @@ pub fn hacky_block_expr_with_comments( for node_or_token in elements.into_iter() { match node_or_token { rowan::NodeOrToken::Node(n) => format_to!(buf, " {n}\n"), - rowan::NodeOrToken::Token(t) if t.kind() == SyntaxKind::COMMENT => { - format_to!(buf, " {t}\n") + rowan::NodeOrToken::Token(t) => { + let kind = t.kind(); + if kind == SyntaxKind::COMMENT { + format_to!(buf, " {t}\n") + } else if kind == SyntaxKind::WHITESPACE { + let content = t.text().trim_matches(|c| c != '\n'); + if content.len() >= 1 { + format_to!(buf, "{}", &content[1..]) + } + } } - _ => (), } } if let Some(tail_expr) = tail_expr { From 150da92b5c6e4a8dc3c27f24864de471c2b2c380 Mon Sep 17 00:00:00 2001 From: Brent Westbrook Date: Wed, 4 Jan 2023 12:55:05 -0500 Subject: [PATCH 249/478] return immediately from `render_record_lit` if `snippet_cap` is None this is the record literal version of #13805, which handled the same issue for tuple literals --- .../ide-completion/src/completions/record.rs | 31 ++++++++++++++++++- crates/ide-completion/src/render/variant.rs | 3 ++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/crates/ide-completion/src/completions/record.rs b/crates/ide-completion/src/completions/record.rs index 6743ec897f00..0521e735dedf 100644 --- a/crates/ide-completion/src/completions/record.rs +++ b/crates/ide-completion/src/completions/record.rs @@ -159,8 +159,9 @@ fn baz() { #[test] fn enum_variant_no_snippets() { let conf = CompletionConfig { snippet_cap: SnippetCap::new(false), ..TEST_CONFIG }; + // tuple variant check_edit_with_config( - conf, + conf.clone(), "Variant()", r#" enum Enum { @@ -178,6 +179,34 @@ enum Enum { Variant(usize), } +impl Enum { + fn new(u: usize) -> Self { + Self::Variant + } +} +"#, + ); + + // record variant + check_edit_with_config( + conf, + "Variant{}", + r#" +enum Enum { + Variant{u: usize}, +} + +impl Enum { + fn new(u: usize) -> Self { + Self::Va$0 + } +} +"#, + r#" +enum Enum { + Variant{u: usize}, +} + impl Enum { fn new(u: usize) -> Self { Self::Variant diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs index f3e88489f46d..55c55725be4f 100644 --- a/crates/ide-completion/src/render/variant.rs +++ b/crates/ide-completion/src/render/variant.rs @@ -22,6 +22,9 @@ pub(crate) fn render_record_lit( fields: &[hir::Field], path: &str, ) -> RenderedLiteral { + if snippet_cap.is_none() { + return RenderedLiteral { literal: path.to_string(), detail: path.to_string() }; + } let completions = fields.iter().enumerate().format_with(", ", |(idx, field), f| { if snippet_cap.is_some() { f(&format_args!("{}: ${{{}:()}}", field.name(db), idx + 1)) From d0c1605d5151c86215ad609feadead811e5602c0 Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Wed, 4 Jan 2023 13:32:34 -0800 Subject: [PATCH 250/478] Make the iter_kv_map lint handle ref/mut annotations. For the degenerate (`map(|(k, _)| k)`/`map(|(_, v)| v)`) cases a mut annotation is superfluous and a ref annotation won't compile, so no additional handling is required. For cases where the `map` call must be preserved ref/mut annotations should also be presereved so that the map body continues to work as expected. --- clippy_lints/src/methods/iter_kv_map.rs | 20 +++-- tests/ui/iter_kv_map.fixed | 35 +++++++- tests/ui/iter_kv_map.rs | 39 +++++++- tests/ui/iter_kv_map.stderr | 114 +++++++++++++++++++----- 4 files changed, 174 insertions(+), 34 deletions(-) diff --git a/clippy_lints/src/methods/iter_kv_map.rs b/clippy_lints/src/methods/iter_kv_map.rs index 2244ebfb1292..1e5805c53477 100644 --- a/clippy_lints/src/methods/iter_kv_map.rs +++ b/clippy_lints/src/methods/iter_kv_map.rs @@ -6,7 +6,7 @@ use clippy_utils::source::{snippet, snippet_with_applicability}; use clippy_utils::sugg; use clippy_utils::ty::is_type_diagnostic_item; use clippy_utils::visitors::is_local_used; -use rustc_hir::{BindingAnnotation, Body, BorrowKind, Expr, ExprKind, Mutability, Pat, PatKind}; +use rustc_hir::{BindingAnnotation, Body, BorrowKind, ByRef, Expr, ExprKind, Mutability, Pat, PatKind}; use rustc_lint::{LateContext, LintContext}; use rustc_middle::ty; use rustc_span::sym; @@ -30,9 +30,9 @@ pub(super) fn check<'tcx>( if let Body {params: [p], value: body_expr, generator_kind: _ } = cx.tcx.hir().body(c.body); if let PatKind::Tuple([key_pat, val_pat], _) = p.pat.kind; - let (replacement_kind, binded_ident) = match (&key_pat.kind, &val_pat.kind) { - (key, PatKind::Binding(_, _, value, _)) if pat_is_wild(cx, key, m_arg) => ("value", value), - (PatKind::Binding(_, _, key, _), value) if pat_is_wild(cx, value, m_arg) => ("key", key), + let (replacement_kind, annotation, binded_ident) = match (&key_pat.kind, &val_pat.kind) { + (key, PatKind::Binding(ann, _, value, _)) if pat_is_wild(cx, key, m_arg) => ("value", ann, value), + (PatKind::Binding(ann, _, key, _), value) if pat_is_wild(cx, value, m_arg) => ("key", ann, key), _ => return, }; @@ -60,13 +60,23 @@ pub(super) fn check<'tcx>( applicability, ); } else { + let ref_annotation = if annotation.0 == ByRef::Yes { + "ref " + } else { + "" + }; + let mut_annotation = if annotation.1 == Mutability::Mut { + "mut " + } else { + "" + }; span_lint_and_sugg( cx, ITER_KV_MAP, expr.span, &format!("iterating on a map's {replacement_kind}s"), "try", - format!("{recv_snippet}.{into_prefix}{replacement_kind}s().map(|{binded_ident}| {})", + format!("{recv_snippet}.{into_prefix}{replacement_kind}s().map(|{ref_annotation}{mut_annotation}{binded_ident}| {})", snippet_with_applicability(cx, body_expr.span, "/* body */", &mut applicability)), applicability, ); diff --git a/tests/ui/iter_kv_map.fixed b/tests/ui/iter_kv_map.fixed index 83fee04080fa..f2a4c284cb16 100644 --- a/tests/ui/iter_kv_map.fixed +++ b/tests/ui/iter_kv_map.fixed @@ -1,14 +1,15 @@ // run-rustfix #![warn(clippy::iter_kv_map)] -#![allow(clippy::redundant_clone)] -#![allow(clippy::suspicious_map)] -#![allow(clippy::map_identity)] +#![allow(unused_mut, clippy::redundant_clone, clippy::suspicious_map, clippy::map_identity)] use std::collections::{BTreeMap, HashMap}; fn main() { let get_key = |(key, _val)| key; + fn ref_acceptor(v: &u32) -> u32 { + *v + } let map: HashMap = HashMap::new(); @@ -36,6 +37,20 @@ fn main() { let _ = map.keys().map(|key| key * 9).count(); let _ = map.values().map(|value| value * 17).count(); + // Preserve the ref in the fix. + let _ = map.clone().into_values().map(|ref val| ref_acceptor(val)).count(); + + // Preserve the mut in the fix. + let _ = map + .clone().into_values().map(|mut val| { + val += 2; + val + }) + .count(); + + // Don't let a mut interfere. + let _ = map.clone().into_values().count(); + let map: BTreeMap = BTreeMap::new(); let _ = map.keys().collect::>(); @@ -61,4 +76,18 @@ fn main() { // Lint let _ = map.keys().map(|key| key * 9).count(); let _ = map.values().map(|value| value * 17).count(); + + // Preserve the ref in the fix. + let _ = map.clone().into_values().map(|ref val| ref_acceptor(val)).count(); + + // Preserve the mut in the fix. + let _ = map + .clone().into_values().map(|mut val| { + val += 2; + val + }) + .count(); + + // Don't let a mut interfere. + let _ = map.clone().into_values().count(); } diff --git a/tests/ui/iter_kv_map.rs b/tests/ui/iter_kv_map.rs index 7a1f1fb0198c..ad6564df4084 100644 --- a/tests/ui/iter_kv_map.rs +++ b/tests/ui/iter_kv_map.rs @@ -1,14 +1,15 @@ // run-rustfix #![warn(clippy::iter_kv_map)] -#![allow(clippy::redundant_clone)] -#![allow(clippy::suspicious_map)] -#![allow(clippy::map_identity)] +#![allow(unused_mut, clippy::redundant_clone, clippy::suspicious_map, clippy::map_identity)] use std::collections::{BTreeMap, HashMap}; fn main() { let get_key = |(key, _val)| key; + fn ref_acceptor(v: &u32) -> u32 { + *v + } let map: HashMap = HashMap::new(); @@ -36,6 +37,22 @@ fn main() { let _ = map.iter().map(|(key, _value)| key * 9).count(); let _ = map.iter().map(|(_key, value)| value * 17).count(); + // Preserve the ref in the fix. + let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count(); + + // Preserve the mut in the fix. + let _ = map + .clone() + .into_iter() + .map(|(_, mut val)| { + val += 2; + val + }) + .count(); + + // Don't let a mut interfere. + let _ = map.clone().into_iter().map(|(_, mut val)| val).count(); + let map: BTreeMap = BTreeMap::new(); let _ = map.iter().map(|(key, _)| key).collect::>(); @@ -61,4 +78,20 @@ fn main() { // Lint let _ = map.iter().map(|(key, _value)| key * 9).count(); let _ = map.iter().map(|(_key, value)| value * 17).count(); + + // Preserve the ref in the fix. + let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count(); + + // Preserve the mut in the fix. + let _ = map + .clone() + .into_iter() + .map(|(_, mut val)| { + val += 2; + val + }) + .count(); + + // Don't let a mut interfere. + let _ = map.clone().into_iter().map(|(_, mut val)| val).count(); } diff --git a/tests/ui/iter_kv_map.stderr b/tests/ui/iter_kv_map.stderr index 9b9b04c97d81..e00da223b4dd 100644 --- a/tests/ui/iter_kv_map.stderr +++ b/tests/ui/iter_kv_map.stderr @@ -1,5 +1,5 @@ error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:15:13 + --> $DIR/iter_kv_map.rs:16:13 | LL | let _ = map.iter().map(|(key, _)| key).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys()` @@ -7,130 +7,198 @@ LL | let _ = map.iter().map(|(key, _)| key).collect::>(); = note: `-D clippy::iter-kv-map` implied by `-D warnings` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:16:13 + --> $DIR/iter_kv_map.rs:17:13 | LL | let _ = map.iter().map(|(_, value)| value).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values()` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:17:13 + --> $DIR/iter_kv_map.rs:18:13 | LL | let _ = map.iter().map(|(_, v)| v + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values().map(|v| v + 2)` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:19:13 + --> $DIR/iter_kv_map.rs:20:13 | LL | let _ = map.clone().into_iter().map(|(key, _)| key).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_keys()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:20:13 + --> $DIR/iter_kv_map.rs:21:13 | LL | let _ = map.clone().into_iter().map(|(key, _)| key + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_keys().map(|key| key + 2)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:22:13 + --> $DIR/iter_kv_map.rs:23:13 | LL | let _ = map.clone().into_iter().map(|(_, val)| val).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values()` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:23:13 + --> $DIR/iter_kv_map.rs:24:13 | LL | let _ = map.clone().into_iter().map(|(_, val)| val + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values().map(|val| val + 2)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:25:13 + --> $DIR/iter_kv_map.rs:26:13 | LL | let _ = map.clone().iter().map(|(_, val)| val).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().values()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:26:13 + --> $DIR/iter_kv_map.rs:27:13 | LL | let _ = map.iter().map(|(key, _)| key).filter(|x| *x % 2 == 0).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:36:13 + --> $DIR/iter_kv_map.rs:37:13 | LL | let _ = map.iter().map(|(key, _value)| key * 9).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys().map(|key| key * 9)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:37:13 + --> $DIR/iter_kv_map.rs:38:13 | LL | let _ = map.iter().map(|(_key, value)| value * 17).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values().map(|value| value * 17)` -error: iterating on a map's keys +error: iterating on a map's values --> $DIR/iter_kv_map.rs:41:13 | +LL | let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values().map(|ref val| ref_acceptor(val))` + +error: iterating on a map's values + --> $DIR/iter_kv_map.rs:44:13 + | +LL | let _ = map + | _____________^ +LL | | .clone() +LL | | .into_iter() +LL | | .map(|(_, mut val)| { +LL | | val += 2; +LL | | val +LL | | }) + | |__________^ + | +help: try + | +LL ~ let _ = map +LL + .clone().into_values().map(|mut val| { +LL + val += 2; +LL + val +LL + }) + | + +error: iterating on a map's values + --> $DIR/iter_kv_map.rs:54:13 + | +LL | let _ = map.clone().into_iter().map(|(_, mut val)| val).count(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values()` + +error: iterating on a map's keys + --> $DIR/iter_kv_map.rs:58:13 + | LL | let _ = map.iter().map(|(key, _)| key).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys()` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:42:13 + --> $DIR/iter_kv_map.rs:59:13 | LL | let _ = map.iter().map(|(_, value)| value).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values()` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:43:13 + --> $DIR/iter_kv_map.rs:60:13 | LL | let _ = map.iter().map(|(_, v)| v + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values().map(|v| v + 2)` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:45:13 + --> $DIR/iter_kv_map.rs:62:13 | LL | let _ = map.clone().into_iter().map(|(key, _)| key).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_keys()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:46:13 + --> $DIR/iter_kv_map.rs:63:13 | LL | let _ = map.clone().into_iter().map(|(key, _)| key + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_keys().map(|key| key + 2)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:48:13 + --> $DIR/iter_kv_map.rs:65:13 | LL | let _ = map.clone().into_iter().map(|(_, val)| val).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values()` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:49:13 + --> $DIR/iter_kv_map.rs:66:13 | LL | let _ = map.clone().into_iter().map(|(_, val)| val + 2).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values().map(|val| val + 2)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:51:13 + --> $DIR/iter_kv_map.rs:68:13 | LL | let _ = map.clone().iter().map(|(_, val)| val).collect::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().values()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:52:13 + --> $DIR/iter_kv_map.rs:69:13 | LL | let _ = map.iter().map(|(key, _)| key).filter(|x| *x % 2 == 0).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys()` error: iterating on a map's keys - --> $DIR/iter_kv_map.rs:62:13 + --> $DIR/iter_kv_map.rs:79:13 | LL | let _ = map.iter().map(|(key, _value)| key * 9).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.keys().map(|key| key * 9)` error: iterating on a map's values - --> $DIR/iter_kv_map.rs:63:13 + --> $DIR/iter_kv_map.rs:80:13 | LL | let _ = map.iter().map(|(_key, value)| value * 17).count(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.values().map(|value| value * 17)` -error: aborting due to 22 previous errors +error: iterating on a map's values + --> $DIR/iter_kv_map.rs:83:13 + | +LL | let _ = map.clone().into_iter().map(|(_, ref val)| ref_acceptor(val)).count(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values().map(|ref val| ref_acceptor(val))` + +error: iterating on a map's values + --> $DIR/iter_kv_map.rs:86:13 + | +LL | let _ = map + | _____________^ +LL | | .clone() +LL | | .into_iter() +LL | | .map(|(_, mut val)| { +LL | | val += 2; +LL | | val +LL | | }) + | |__________^ + | +help: try + | +LL ~ let _ = map +LL + .clone().into_values().map(|mut val| { +LL + val += 2; +LL + val +LL + }) + | + +error: iterating on a map's values + --> $DIR/iter_kv_map.rs:96:13 + | +LL | let _ = map.clone().into_iter().map(|(_, mut val)| val).count(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map.clone().into_values()` + +error: aborting due to 28 previous errors From 21b078a64eaa2d708a793ec7d42665ba0a326fb0 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 4 Jan 2023 22:02:26 +0000 Subject: [PATCH 251/478] Use FxIndexSet when updating obligation causes in adjust_fulfillment_errors_for_expr_obligation --- compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index d342d96a10fa..d45f28a5f657 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -9,7 +9,7 @@ use crate::{ TupleArgumentsFlag, }; use rustc_ast as ast; -use rustc_data_structures::fx::FxHashSet; +use rustc_data_structures::fx::FxIndexSet; use rustc_errors::{pluralize, Applicability, Diagnostic, DiagnosticId, MultiSpan}; use rustc_hir as hir; use rustc_hir::def::{CtorOf, DefKind, Res}; @@ -1689,7 +1689,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // even if their `ObligationCauseCode` isn't an `Expr*Obligation` kind. // This is important since if we adjust one span but not the other, then // we will have "duplicated" the error on the UI side. - let mut remap_cause = FxHashSet::default(); + let mut remap_cause = FxIndexSet::default(); let mut not_adjusted = vec![]; for error in errors { @@ -1717,6 +1717,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } + // Adjust any other errors that come from other cause codes, when these + // errors are of the same predicate as one we successfully adjusted, and + // when their spans overlap (suggesting they're due to the same root cause). + // + // This is because due to normalization, we often register duplicate + // obligations with misc obligations that are basically impossible to + // line back up with a useful ExprBindingObligation. for error in not_adjusted { for (span, predicate, cause) in &remap_cause { if *predicate == error.obligation.predicate From 05ba519a3ab8c06ba449d41a14e8584d785c1cb9 Mon Sep 17 00:00:00 2001 From: Andre Bogus Date: Wed, 4 Jan 2023 11:23:35 +0100 Subject: [PATCH 252/478] trim paths in `default_trait_access`/`clone_on_copy` suggestions --- clippy_lints/src/default.rs | 5 ++--- clippy_lints/src/methods/clone_on_copy.rs | 14 ++++++++------ tests/ui/clone_on_copy.stderr | 2 +- tests/ui/default_trait_access.fixed | 8 ++++---- tests/ui/default_trait_access.stderr | 16 ++++++++-------- tests/ui/unnecessary_clone.stderr | 10 +++++----- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/clippy_lints/src/default.rs b/clippy_lints/src/default.rs index 55f6121a09d2..a04693f4637a 100644 --- a/clippy_lints/src/default.rs +++ b/clippy_lints/src/default.rs @@ -11,6 +11,7 @@ use rustc_hir::def::Res; use rustc_hir::{Block, Expr, ExprKind, PatKind, QPath, Stmt, StmtKind}; use rustc_lint::{LateContext, LateLintPass}; use rustc_middle::ty; +use rustc_middle::ty::print::with_forced_trimmed_paths; use rustc_session::{declare_tool_lint, impl_lint_pass}; use rustc_span::symbol::{Ident, Symbol}; use rustc_span::Span; @@ -98,9 +99,7 @@ impl<'tcx> LateLintPass<'tcx> for Default { if let ty::Adt(def, ..) = expr_ty.kind(); if !is_from_proc_macro(cx, expr); then { - // TODO: Work out a way to put "whatever the imported way of referencing - // this type in this file" rather than a fully-qualified type. - let replacement = format!("{}::default()", cx.tcx.def_path_str(def.did())); + let replacement = with_forced_trimmed_paths!(format!("{}::default()", cx.tcx.def_path_str(def.did()))); span_lint_and_sugg( cx, DEFAULT_TRAIT_ACCESS, diff --git a/clippy_lints/src/methods/clone_on_copy.rs b/clippy_lints/src/methods/clone_on_copy.rs index 7c7938dd2e8b..3795c0ec2509 100644 --- a/clippy_lints/src/methods/clone_on_copy.rs +++ b/clippy_lints/src/methods/clone_on_copy.rs @@ -6,7 +6,7 @@ use clippy_utils::ty::is_copy; use rustc_errors::Applicability; use rustc_hir::{BindingAnnotation, ByRef, Expr, ExprKind, MatchSource, Node, PatKind, QPath}; use rustc_lint::LateContext; -use rustc_middle::ty::{self, adjustment::Adjust}; +use rustc_middle::ty::{self, adjustment::Adjust, print::with_forced_trimmed_paths}; use rustc_span::symbol::{sym, Symbol}; use super::CLONE_DOUBLE_REF; @@ -47,10 +47,10 @@ pub(super) fn check( cx, CLONE_DOUBLE_REF, expr.span, - &format!( + &with_forced_trimmed_paths!(format!( "using `clone` on a double-reference; \ this will copy the reference of type `{ty}` instead of cloning the inner type" - ), + )), |diag| { if let Some(snip) = sugg::Sugg::hir_opt(cx, arg) { let mut ty = innermost; @@ -61,11 +61,11 @@ pub(super) fn check( } let refs = "&".repeat(n + 1); let derefs = "*".repeat(n); - let explicit = format!("<{refs}{ty}>::clone({snip})"); + let explicit = with_forced_trimmed_paths!(format!("<{refs}{ty}>::clone({snip})")); diag.span_suggestion( expr.span, "try dereferencing it", - format!("{refs}({derefs}{}).clone()", snip.deref()), + with_forced_trimmed_paths!(format!("{refs}({derefs}{}).clone()", snip.deref())), Applicability::MaybeIncorrect, ); diag.span_suggestion( @@ -129,7 +129,9 @@ pub(super) fn check( cx, CLONE_ON_COPY, expr.span, - &format!("using `clone` on type `{ty}` which implements the `Copy` trait"), + &with_forced_trimmed_paths!(format!( + "using `clone` on type `{ty}` which implements the `Copy` trait" + )), help, sugg, app, diff --git a/tests/ui/clone_on_copy.stderr b/tests/ui/clone_on_copy.stderr index 42ae227777c7..862234d204be 100644 --- a/tests/ui/clone_on_copy.stderr +++ b/tests/ui/clone_on_copy.stderr @@ -48,7 +48,7 @@ error: using `clone` on type `i32` which implements the `Copy` trait LL | vec.push(42.clone()); | ^^^^^^^^^^ help: try removing the `clone` call: `42` -error: using `clone` on type `std::option::Option` which implements the `Copy` trait +error: using `clone` on type `Option` which implements the `Copy` trait --> $DIR/clone_on_copy.rs:77:17 | LL | let value = opt.clone()?; // operator precedence needed (*opt)? diff --git a/tests/ui/default_trait_access.fixed b/tests/ui/default_trait_access.fixed index eedd43619392..5640599d48ae 100644 --- a/tests/ui/default_trait_access.fixed +++ b/tests/ui/default_trait_access.fixed @@ -12,17 +12,17 @@ use std::default::Default as D2; use std::string; fn main() { - let s1: String = std::string::String::default(); + let s1: String = String::default(); let s2 = String::default(); - let s3: String = std::string::String::default(); + let s3: String = String::default(); - let s4: String = std::string::String::default(); + let s4: String = String::default(); let s5 = string::String::default(); - let s6: String = std::string::String::default(); + let s6: String = String::default(); let s7 = std::string::String::default(); diff --git a/tests/ui/default_trait_access.stderr b/tests/ui/default_trait_access.stderr index 49b2dde3f1e8..e4f73c08d190 100644 --- a/tests/ui/default_trait_access.stderr +++ b/tests/ui/default_trait_access.stderr @@ -1,8 +1,8 @@ -error: calling `std::string::String::default()` is more clear than this expression +error: calling `String::default()` is more clear than this expression --> $DIR/default_trait_access.rs:15:22 | LL | let s1: String = Default::default(); - | ^^^^^^^^^^^^^^^^^^ help: try: `std::string::String::default()` + | ^^^^^^^^^^^^^^^^^^ help: try: `String::default()` | note: the lint level is defined here --> $DIR/default_trait_access.rs:3:9 @@ -10,23 +10,23 @@ note: the lint level is defined here LL | #![deny(clippy::default_trait_access)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: calling `std::string::String::default()` is more clear than this expression +error: calling `String::default()` is more clear than this expression --> $DIR/default_trait_access.rs:19:22 | LL | let s3: String = D2::default(); - | ^^^^^^^^^^^^^ help: try: `std::string::String::default()` + | ^^^^^^^^^^^^^ help: try: `String::default()` -error: calling `std::string::String::default()` is more clear than this expression +error: calling `String::default()` is more clear than this expression --> $DIR/default_trait_access.rs:21:22 | LL | let s4: String = std::default::Default::default(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::string::String::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `String::default()` -error: calling `std::string::String::default()` is more clear than this expression +error: calling `String::default()` is more clear than this expression --> $DIR/default_trait_access.rs:25:22 | LL | let s6: String = default::Default::default(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::string::String::default()` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `String::default()` error: calling `GenericDerivedDefault::default()` is more clear than this expression --> $DIR/default_trait_access.rs:35:46 diff --git a/tests/ui/unnecessary_clone.stderr b/tests/ui/unnecessary_clone.stderr index 94cc7777acac..6022d9fa4c5c 100644 --- a/tests/ui/unnecessary_clone.stderr +++ b/tests/ui/unnecessary_clone.stderr @@ -38,13 +38,13 @@ LL | t.clone(); | = note: `-D clippy::clone-on-copy` implied by `-D warnings` -error: using `clone` on type `std::option::Option` which implements the `Copy` trait +error: using `clone` on type `Option` which implements the `Copy` trait --> $DIR/unnecessary_clone.rs:42:5 | LL | Some(t).clone(); | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `Some(t)` -error: using `clone` on a double-reference; this will copy the reference of type `&std::vec::Vec` instead of cloning the inner type +error: using `clone` on a double-reference; this will copy the reference of type `&Vec` instead of cloning the inner type --> $DIR/unnecessary_clone.rs:48:22 | LL | let z: &Vec<_> = y.clone(); @@ -57,10 +57,10 @@ LL | let z: &Vec<_> = &(*y).clone(); | ~~~~~~~~~~~~~ help: or try being explicit if you are sure, that you want to clone a reference | -LL | let z: &Vec<_> = <&std::vec::Vec>::clone(y); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +LL | let z: &Vec<_> = <&Vec>::clone(y); + | ~~~~~~~~~~~~~~~~~~~~~ -error: using `clone` on type `many_derefs::E` which implements the `Copy` trait +error: using `clone` on type `E` which implements the `Copy` trait --> $DIR/unnecessary_clone.rs:84:20 | LL | let _: E = a.clone(); From 755ae3fa29b0b2c6b11eaecf81b201b0a9a026bf Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Wed, 4 Jan 2023 14:58:07 -0800 Subject: [PATCH 253/478] Fix spelling while we're in the neighborhood. --- clippy_lints/src/methods/iter_kv_map.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clippy_lints/src/methods/iter_kv_map.rs b/clippy_lints/src/methods/iter_kv_map.rs index 1e5805c53477..c87f5daab6f2 100644 --- a/clippy_lints/src/methods/iter_kv_map.rs +++ b/clippy_lints/src/methods/iter_kv_map.rs @@ -30,7 +30,7 @@ pub(super) fn check<'tcx>( if let Body {params: [p], value: body_expr, generator_kind: _ } = cx.tcx.hir().body(c.body); if let PatKind::Tuple([key_pat, val_pat], _) = p.pat.kind; - let (replacement_kind, annotation, binded_ident) = match (&key_pat.kind, &val_pat.kind) { + let (replacement_kind, annotation, bound_ident) = match (&key_pat.kind, &val_pat.kind) { (key, PatKind::Binding(ann, _, value, _)) if pat_is_wild(cx, key, m_arg) => ("value", ann, value), (PatKind::Binding(ann, _, key, _), value) if pat_is_wild(cx, value, m_arg) => ("key", ann, key), _ => return, @@ -47,7 +47,7 @@ pub(super) fn check<'tcx>( if_chain! { if let ExprKind::Path(rustc_hir::QPath::Resolved(_, path)) = body_expr.kind; if let [local_ident] = path.segments; - if local_ident.ident.as_str() == binded_ident.as_str(); + if local_ident.ident.as_str() == bound_ident.as_str(); then { span_lint_and_sugg( @@ -76,7 +76,7 @@ pub(super) fn check<'tcx>( expr.span, &format!("iterating on a map's {replacement_kind}s"), "try", - format!("{recv_snippet}.{into_prefix}{replacement_kind}s().map(|{ref_annotation}{mut_annotation}{binded_ident}| {})", + format!("{recv_snippet}.{into_prefix}{replacement_kind}s().map(|{ref_annotation}{mut_annotation}{bound_ident}| {})", snippet_with_applicability(cx, body_expr.span, "/* body */", &mut applicability)), applicability, ); From 0b5d6ae5dbbbe6b05a85bdcccc8aedbb96feedf4 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Thu, 5 Jan 2023 03:39:07 +0100 Subject: [PATCH 254/478] Improve fluent error messages --- compiler/rustc_errors/src/error.rs | 134 +++++++++++++++++++++++ compiler/rustc_errors/src/lib.rs | 5 + compiler/rustc_errors/src/translation.rs | 114 ++++++++----------- 3 files changed, 183 insertions(+), 70 deletions(-) create mode 100644 compiler/rustc_errors/src/error.rs diff --git a/compiler/rustc_errors/src/error.rs b/compiler/rustc_errors/src/error.rs new file mode 100644 index 000000000000..e1c8dcd3bd39 --- /dev/null +++ b/compiler/rustc_errors/src/error.rs @@ -0,0 +1,134 @@ +use rustc_error_messages::{ + fluent_bundle::resolver::errors::{ReferenceKind, ResolverError}, + FluentArgs, FluentError, +}; +use std::borrow::Cow; +use std::error::Error; +use std::fmt; + +#[derive(Debug)] +pub enum TranslateError<'args> { + One { + id: &'args Cow<'args, str>, + args: &'args FluentArgs<'args>, + kind: TranslateErrorKind<'args>, + }, + Two { + primary: Box>, + fallback: Box>, + }, +} + +impl<'args> TranslateError<'args> { + pub fn message(id: &'args Cow<'args, str>, args: &'args FluentArgs<'args>) -> Self { + Self::One { id, args, kind: TranslateErrorKind::MessageMissing } + } + pub fn primary(id: &'args Cow<'args, str>, args: &'args FluentArgs<'args>) -> Self { + Self::One { id, args, kind: TranslateErrorKind::PrimaryBundleMissing } + } + pub fn attribute( + id: &'args Cow<'args, str>, + args: &'args FluentArgs<'args>, + attr: &'args str, + ) -> Self { + Self::One { id, args, kind: TranslateErrorKind::AttributeMissing { attr } } + } + pub fn value(id: &'args Cow<'args, str>, args: &'args FluentArgs<'args>) -> Self { + Self::One { id, args, kind: TranslateErrorKind::ValueMissing } + } + + pub fn fluent( + id: &'args Cow<'args, str>, + args: &'args FluentArgs<'args>, + errs: Vec, + ) -> Self { + Self::One { id, args, kind: TranslateErrorKind::Fluent { errs } } + } + + pub fn and(self, fallback: TranslateError<'args>) -> TranslateError<'args> { + Self::Two { primary: Box::new(self), fallback: Box::new(fallback) } + } +} + +#[derive(Debug)] +pub enum TranslateErrorKind<'args> { + MessageMissing, + PrimaryBundleMissing, + AttributeMissing { attr: &'args str }, + ValueMissing, + Fluent { errs: Vec }, +} + +impl fmt::Display for TranslateError<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use TranslateErrorKind::*; + + match self { + Self::One { id, args, kind } => { + writeln!(f, "\nfailed while formatting fluent string `{id}`: ")?; + match kind { + MessageMissing => writeln!(f, "message was missing")?, + PrimaryBundleMissing => writeln!(f, "the primary bundle was missing")?, + AttributeMissing { attr } => writeln!(f, "the attribute `{attr}` was missing")?, + ValueMissing => writeln!(f, "the value was missing")?, + Fluent { errs } => { + for err in errs { + match err { + FluentError::ResolverError(ResolverError::Reference( + ReferenceKind::Message { id, .. } + | ReferenceKind::Variable { id, .. }, + )) => { + if args.iter().any(|(arg_id, _)| arg_id == id) { + writeln!( + f, + "argument `{id}` exists but was not referenced correctly" + )?; + writeln!(f, "help: try using `{{${id}}}` instead")?; + } else { + writeln!( + f, + "the fluent string has an argument `{id}` that was not found." + )?; + let vars: Vec<&str> = + args.iter().map(|(a, _v)| a).collect(); + match &*vars { + [] => writeln!(f, "help: no arguments are available")?, + [one] => writeln!( + f, + "help: the argument `{one}` is available" + )?, + [first, middle @ .., last] => { + write!(f, "help: the arguments `{first}`")?; + for a in middle { + write!(f, ", `{a}`")?; + } + writeln!(f, " and `{last}` are available")?; + } + } + } + } + _ => writeln!(f, "{err}")?, + } + } + } + } + } + // If someone cares about primary bundles, they'll probably notice it's missing + // regardless or will be using `debug_assertions` + // so we skip the arm below this one to avoid confusing the regular user. + Self::Two { primary: box Self::One { kind: PrimaryBundleMissing, .. }, fallback } => { + fmt::Display::fmt(fallback, f)?; + } + Self::Two { primary, fallback } => { + writeln!( + f, + "first, fluent formatting using the primary bundle failed:\n {primary}\n \ + while attempting to recover by using the fallback bundle instead, another error occurred:\n{fallback}" + )?; + } + } + Ok(()) + } +} + +impl Error for TranslateError<'_> {} diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 136c360201e6..6f411c5174a0 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -11,6 +11,10 @@ #![feature(never_type)] #![feature(result_option_inspect)] #![feature(rustc_attrs)] +#![feature(yeet_expr)] +#![feature(try_blocks)] +#![feature(box_patterns)] +#![feature(error_reporter)] #![allow(incomplete_features)] #[macro_use] @@ -55,6 +59,7 @@ mod diagnostic; mod diagnostic_builder; mod diagnostic_impls; pub mod emitter; +pub mod error; pub mod json; mod lock; pub mod registry; diff --git a/compiler/rustc_errors/src/translation.rs b/compiler/rustc_errors/src/translation.rs index afd660ff1bf1..26c86cdaf456 100644 --- a/compiler/rustc_errors/src/translation.rs +++ b/compiler/rustc_errors/src/translation.rs @@ -1,11 +1,10 @@ +use crate::error::TranslateError; use crate::snippet::Style; use crate::{DiagnosticArg, DiagnosticMessage, FluentBundle}; use rustc_data_structures::sync::Lrc; -use rustc_error_messages::{ - fluent_bundle::resolver::errors::{ReferenceKind, ResolverError}, - FluentArgs, FluentError, -}; +use rustc_error_messages::FluentArgs; use std::borrow::Cow; +use std::error::Report; /// Convert diagnostic arguments (a rustc internal type that exists to implement /// `Encodable`/`Decodable`) into `FluentArgs` which is necessary to perform translation. @@ -63,75 +62,50 @@ pub trait Translate { } DiagnosticMessage::FluentIdentifier(identifier, attr) => (identifier, attr), }; + let translate_with_bundle = + |bundle: &'a FluentBundle| -> Result, TranslateError<'_>> { + let message = bundle + .get_message(identifier) + .ok_or(TranslateError::message(identifier, args))?; + let value = match attr { + Some(attr) => message + .get_attribute(attr) + .ok_or(TranslateError::attribute(identifier, args, attr))? + .value(), + None => message.value().ok_or(TranslateError::value(identifier, args))?, + }; + debug!(?message, ?value); - let translate_with_bundle = |bundle: &'a FluentBundle| -> Option<(Cow<'_, str>, Vec<_>)> { - let message = bundle.get_message(identifier)?; - let value = match attr { - Some(attr) => message.get_attribute(attr)?.value(), - None => message.value()?, - }; - debug!(?message, ?value); - - let mut errs = vec![]; - let translated = bundle.format_pattern(value, Some(args), &mut errs); - debug!(?translated, ?errs); - Some((translated, errs)) - }; - - self.fluent_bundle() - .and_then(|bundle| translate_with_bundle(bundle)) - // If `translate_with_bundle` returns `None` with the primary bundle, this is likely - // just that the primary bundle doesn't contain the message being translated, so - // proceed to the fallback bundle. - // - // However, when errors are produced from translation, then that means the translation - // is broken (e.g. `{$foo}` exists in a translation but `foo` isn't provided). - // - // In debug builds, assert so that compiler devs can spot the broken translation and - // fix it.. - .inspect(|(_, errs)| { - debug_assert!( - errs.is_empty(), - "identifier: {:?}, attr: {:?}, args: {:?}, errors: {:?}", - identifier, - attr, - args, - errs - ); - }) - // ..otherwise, for end users, an error about this wouldn't be useful or actionable, so - // just hide it and try with the fallback bundle. - .filter(|(_, errs)| errs.is_empty()) - .or_else(|| translate_with_bundle(self.fallback_fluent_bundle())) - .map(|(translated, errs)| { - // Always bail out for errors with the fallback bundle. - - let mut help_messages = vec![]; - - if !errs.is_empty() { - for error in &errs { - match error { - FluentError::ResolverError(ResolverError::Reference( - ReferenceKind::Message { id, .. }, - )) if args.iter().any(|(arg_id, _)| arg_id == id) => { - help_messages.push(format!("Argument `{id}` exists but was not referenced correctly. Try using `{{${id}}}` instead")); - } - _ => {} - } - } - - panic!( - "Encountered errors while formatting message for `{identifier}`\n\ - help: {}\n\ - attr: `{attr:?}`\n\ - args: `{args:?}`\n\ - errors: `{errs:?}`", - help_messages.join("\nhelp: ") - ); + let mut errs = vec![]; + let translated = bundle.format_pattern(value, Some(args), &mut errs); + debug!(?translated, ?errs); + if errs.is_empty() { + Ok(translated) + } else { + Err(TranslateError::fluent(identifier, args, errs)) } + }; - translated - }) + let ret: Result, TranslateError<'_>> = try { + match self.fluent_bundle().map(|b| translate_with_bundle(b)) { + // The primary bundle was present and translation succeeded + Some(Ok(t)) => t, + + // Always yeet out for errors on debug + Some(Err(primary)) if cfg!(debug_assertions) => do yeet primary, + + // If `translate_with_bundle` returns `Err` with the primary bundle, this is likely + // just that the primary bundle doesn't contain the message being translated or + // something else went wrong) so proceed to the fallback bundle. + Some(Err(primary)) => translate_with_bundle(self.fallback_fluent_bundle()) + .map_err(|fallback| primary.and(fallback))?, + + // The primary bundle is missing, proceed to the fallback bundle + None => translate_with_bundle(self.fallback_fluent_bundle()) + .map_err(|fallback| TranslateError::primary(identifier, args).and(fallback))?, + } + }; + ret.map_err(Report::new) .expect("failed to find message in primary or fallback fluent bundles") } } From 1c42dbba60ece87f3031bc2dad5497f3cc9ad7d0 Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Wed, 4 Jan 2023 19:08:37 -0800 Subject: [PATCH 255/478] Expand derivable-impls to cover enums with a default unit variant. --- clippy_lints/src/derivable_impls.rs | 143 ++++++++++++++++++++-------- tests/ui/derivable_impls.fixed | 21 ++++ tests/ui/derivable_impls.rs | 23 +++++ tests/ui/derivable_impls.stderr | 23 ++++- 4 files changed, 167 insertions(+), 43 deletions(-) diff --git a/clippy_lints/src/derivable_impls.rs b/clippy_lints/src/derivable_impls.rs index ae8f6b794499..c987fdb1a679 100644 --- a/clippy_lints/src/derivable_impls.rs +++ b/clippy_lints/src/derivable_impls.rs @@ -1,11 +1,13 @@ use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::source::indent_of; use clippy_utils::{is_default_equivalent, peel_blocks}; use rustc_errors::Applicability; use rustc_hir::{ - def::{DefKind, Res}, - Body, Expr, ExprKind, GenericArg, Impl, ImplItemKind, Item, ItemKind, Node, PathSegment, QPath, TyKind, + def::{CtorKind, CtorOf, DefKind, Res}, + Body, Expr, ExprKind, GenericArg, Impl, ImplItemKind, Item, ItemKind, Node, PathSegment, QPath, Ty, TyKind, }; use rustc_lint::{LateContext, LateLintPass}; +use rustc_middle::ty::{AdtDef, DefIdTree}; use rustc_session::{declare_lint_pass, declare_tool_lint}; use rustc_span::sym; @@ -61,6 +63,98 @@ fn is_path_self(e: &Expr<'_>) -> bool { } } +fn check_struct<'tcx>( + cx: &LateContext<'tcx>, + item: &'tcx Item<'_>, + self_ty: &Ty<'_>, + func_expr: &Expr<'_>, + adt_def: AdtDef<'_>, +) { + if let TyKind::Path(QPath::Resolved(_, p)) = self_ty.kind { + if let Some(PathSegment { args: Some(a), .. }) = p.segments.last() { + for arg in a.args { + if !matches!(arg, GenericArg::Lifetime(_)) { + return; + } + } + } + } + let should_emit = match peel_blocks(func_expr).kind { + ExprKind::Tup(fields) => fields.iter().all(|e| is_default_equivalent(cx, e)), + ExprKind::Call(callee, args) if is_path_self(callee) => args.iter().all(|e| is_default_equivalent(cx, e)), + ExprKind::Struct(_, fields, _) => fields.iter().all(|ef| is_default_equivalent(cx, ef.expr)), + _ => false, + }; + + if should_emit { + let struct_span = cx.tcx.def_span(adt_def.did()); + span_lint_and_then(cx, DERIVABLE_IMPLS, item.span, "this `impl` can be derived", |diag| { + diag.span_suggestion_hidden( + item.span, + "remove the manual implementation...", + String::new(), + Applicability::MachineApplicable, + ); + diag.span_suggestion( + struct_span.shrink_to_lo(), + "...and instead derive it", + "#[derive(Default)]\n".to_string(), + Applicability::MachineApplicable, + ); + }); + } +} + +fn check_enum<'tcx>(cx: &LateContext<'tcx>, item: &'tcx Item<'_>, func_expr: &Expr<'_>, adt_def: AdtDef<'_>) { + if_chain! { + if let ExprKind::Path(QPath::Resolved(None, p)) = &peel_blocks(func_expr).kind; + if let Res::Def(DefKind::Ctor(CtorOf::Variant, CtorKind::Const), id) = p.res; + if let variant_id = cx.tcx.parent(id); + if let Some(variant_def) = adt_def.variants().iter().find(|v| v.def_id == variant_id); + if variant_def.fields.is_empty(); + if !variant_def.is_field_list_non_exhaustive(); + + then { + let enum_span = cx.tcx.def_span(adt_def.did()); + let indent_enum = indent_of(cx, enum_span).unwrap_or(0); + let variant_span = cx.tcx.def_span(variant_def.def_id); + let indent_variant = indent_of(cx, variant_span).unwrap_or(0); + span_lint_and_then( + cx, + DERIVABLE_IMPLS, + item.span, + "this `impl` can be derived", + |diag| { + diag.span_suggestion_hidden( + item.span, + "remove the manual implementation...", + String::new(), + Applicability::MachineApplicable + ); + diag.span_suggestion( + enum_span.shrink_to_lo(), + "...and instead derive it...", + format!( + "#[derive(Default)]\n{indent}", + indent = " ".repeat(indent_enum), + ), + Applicability::MachineApplicable + ); + diag.span_suggestion( + variant_span.shrink_to_lo(), + "...and mark the default variant", + format!( + "#[default]\n{indent}", + indent = " ".repeat(indent_variant), + ), + Applicability::MachineApplicable + ); + } + ); + } + } +} + impl<'tcx> LateLintPass<'tcx> for DerivableImpls { fn check_item(&mut self, cx: &LateContext<'tcx>, item: &'tcx Item<'_>) { if_chain! { @@ -83,47 +177,12 @@ impl<'tcx> LateLintPass<'tcx> for DerivableImpls { if !attrs.iter().any(|attr| attr.doc_str().is_some()); if let child_attrs = cx.tcx.hir().attrs(impl_item_hir); if !child_attrs.iter().any(|attr| attr.doc_str().is_some()); - if adt_def.is_struct(); - then { - if let TyKind::Path(QPath::Resolved(_, p)) = self_ty.kind { - if let Some(PathSegment { args: Some(a), .. }) = p.segments.last() { - for arg in a.args { - if !matches!(arg, GenericArg::Lifetime(_)) { - return; - } - } - } - } - let should_emit = match peel_blocks(func_expr).kind { - ExprKind::Tup(fields) => fields.iter().all(|e| is_default_equivalent(cx, e)), - ExprKind::Call(callee, args) - if is_path_self(callee) => args.iter().all(|e| is_default_equivalent(cx, e)), - ExprKind::Struct(_, fields, _) => fields.iter().all(|ef| is_default_equivalent(cx, ef.expr)), - _ => false, - }; - if should_emit { - let struct_span = cx.tcx.def_span(adt_def.did()); - span_lint_and_then( - cx, - DERIVABLE_IMPLS, - item.span, - "this `impl` can be derived", - |diag| { - diag.span_suggestion_hidden( - item.span, - "remove the manual implementation...", - String::new(), - Applicability::MachineApplicable - ); - diag.span_suggestion( - struct_span.shrink_to_lo(), - "...and instead derive it", - "#[derive(Default)]\n".to_string(), - Applicability::MachineApplicable - ); - } - ); + then { + if adt_def.is_struct() { + check_struct(cx, item, self_ty, func_expr, adt_def); + } else if adt_def.is_enum() { + check_enum(cx, item, func_expr, adt_def); } } } diff --git a/tests/ui/derivable_impls.fixed b/tests/ui/derivable_impls.fixed index 7dcdfb0937e8..ee8456f5deb8 100644 --- a/tests/ui/derivable_impls.fixed +++ b/tests/ui/derivable_impls.fixed @@ -210,4 +210,25 @@ impl Default for IntOrString { } } +#[derive(Default)] +pub enum SimpleEnum { + Foo, + #[default] + Bar, +} + + + +pub enum NonExhaustiveEnum { + Foo, + #[non_exhaustive] + Bar, +} + +impl Default for NonExhaustiveEnum { + fn default() -> Self { + NonExhaustiveEnum::Bar + } +} + fn main() {} diff --git a/tests/ui/derivable_impls.rs b/tests/ui/derivable_impls.rs index 625cbcdde230..14af419bcad1 100644 --- a/tests/ui/derivable_impls.rs +++ b/tests/ui/derivable_impls.rs @@ -244,4 +244,27 @@ impl Default for IntOrString { } } +pub enum SimpleEnum { + Foo, + Bar, +} + +impl Default for SimpleEnum { + fn default() -> Self { + SimpleEnum::Bar + } +} + +pub enum NonExhaustiveEnum { + Foo, + #[non_exhaustive] + Bar, +} + +impl Default for NonExhaustiveEnum { + fn default() -> Self { + NonExhaustiveEnum::Bar + } +} + fn main() {} diff --git a/tests/ui/derivable_impls.stderr b/tests/ui/derivable_impls.stderr index c1db5a58b1f5..81963c3be5b5 100644 --- a/tests/ui/derivable_impls.stderr +++ b/tests/ui/derivable_impls.stderr @@ -113,5 +113,26 @@ help: ...and instead derive it LL | #[derive(Default)] | -error: aborting due to 7 previous errors +error: this `impl` can be derived + --> $DIR/derivable_impls.rs:252:1 + | +LL | / impl Default for SimpleEnum { +LL | | fn default() -> Self { +LL | | SimpleEnum::Bar +LL | | } +LL | | } + | |_^ + | + = help: remove the manual implementation... +help: ...and instead derive it... + | +LL | #[derive(Default)] + | +help: ...and mark the default variant + | +LL ~ #[default] +LL ~ Bar, + | + +error: aborting due to 8 previous errors From 79ed23ff815bc39d0062ade40b2c38dd37e77373 Mon Sep 17 00:00:00 2001 From: Raiki Tamura Date: Thu, 5 Jan 2023 18:30:13 +0900 Subject: [PATCH 256/478] fix --- clippy_lints/src/loops/single_element_loop.rs | 14 +++++++++ tests/ui/single_element_loop.fixed | 27 +++++++++++++++++ tests/ui/single_element_loop.rs | 26 +++++++++++++++++ tests/ui/single_element_loop.stderr | 29 ++++++++++++++++++- 4 files changed, 95 insertions(+), 1 deletion(-) diff --git a/clippy_lints/src/loops/single_element_loop.rs b/clippy_lints/src/loops/single_element_loop.rs index f4b47808dfaa..7cbc456244e4 100644 --- a/clippy_lints/src/loops/single_element_loop.rs +++ b/clippy_lints/src/loops/single_element_loop.rs @@ -1,6 +1,7 @@ use super::SINGLE_ELEMENT_LOOP; use clippy_utils::diagnostics::span_lint_and_sugg; use clippy_utils::source::{indent_of, snippet_with_applicability}; +use clippy_utils::visitors::for_each_expr; use if_chain::if_chain; use rustc_ast::util::parser::PREC_PREFIX; use rustc_ast::Mutability; @@ -8,6 +9,18 @@ use rustc_errors::Applicability; use rustc_hir::{is_range_literal, BorrowKind, Expr, ExprKind, Pat}; use rustc_lint::LateContext; use rustc_span::edition::Edition; +use std::ops::ControlFlow; + +fn contains_break_or_continue(expr: &Expr<'_>) -> bool { + for_each_expr(expr, |e| { + if matches!(e.kind, ExprKind::Break(..) | ExprKind::Continue(..)) { + ControlFlow::Break(()) + } else { + ControlFlow::Continue(()) + } + }) + .is_some() +} pub(super) fn check<'tcx>( cx: &LateContext<'tcx>, @@ -67,6 +80,7 @@ pub(super) fn check<'tcx>( if_chain! { if let ExprKind::Block(block, _) = body.kind; if !block.stmts.is_empty(); + if !contains_break_or_continue(body); then { let mut applicability = Applicability::MachineApplicable; let pat_snip = snippet_with_applicability(cx, pat.span, "..", &mut applicability); diff --git a/tests/ui/single_element_loop.fixed b/tests/ui/single_element_loop.fixed index 63d31ff83f9b..a0dcc0172e8b 100644 --- a/tests/ui/single_element_loop.fixed +++ b/tests/ui/single_element_loop.fixed @@ -33,4 +33,31 @@ fn main() { let item = 0..5; dbg!(item); } + + // should not lint (issue #10018) + for e in [42] { + if e > 0 { + continue; + } + } + + // should not lint (issue #10018) + for e in [42] { + if e > 0 { + break; + } + } + + // should lint (issue #10018) + { + let _ = 42; + let _f = |n: u32| { + for i in 0..n { + if i > 10 { + dbg!(i); + break; + } + } + }; + } } diff --git a/tests/ui/single_element_loop.rs b/tests/ui/single_element_loop.rs index 2cda5a329d25..bc014035c98a 100644 --- a/tests/ui/single_element_loop.rs +++ b/tests/ui/single_element_loop.rs @@ -27,4 +27,30 @@ fn main() { for item in [0..5].into_iter() { dbg!(item); } + + // should not lint (issue #10018) + for e in [42] { + if e > 0 { + continue; + } + } + + // should not lint (issue #10018) + for e in [42] { + if e > 0 { + break; + } + } + + // should lint (issue #10018) + for _ in [42] { + let _f = |n: u32| { + for i in 0..n { + if i > 10 { + dbg!(i); + break; + } + } + }; + } } diff --git a/tests/ui/single_element_loop.stderr b/tests/ui/single_element_loop.stderr index 0aeb8da1a2e2..14437a59745e 100644 --- a/tests/ui/single_element_loop.stderr +++ b/tests/ui/single_element_loop.stderr @@ -95,5 +95,32 @@ LL + dbg!(item); LL + } | -error: aborting due to 6 previous errors +error: for loop over a single element + --> $DIR/single_element_loop.rs:46:5 + | +LL | / for _ in [42] { +LL | | let _f = |n: u32| { +LL | | for i in 0..n { +LL | | if i > 10 { +... | +LL | | }; +LL | | } + | |_____^ + | +help: try + | +LL ~ { +LL + let _ = 42; +LL + let _f = |n: u32| { +LL + for i in 0..n { +LL + if i > 10 { +LL + dbg!(i); +LL + break; +LL + } +LL + } +LL + }; +LL + } + | + +error: aborting due to 7 previous errors From 1bfc732b78aa1664245009c1d40d47d9ac149e94 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Thu, 5 Jan 2023 20:06:49 +0900 Subject: [PATCH 257/478] Store diverging flag for type variables as bitflags --- Cargo.lock | 1 + crates/hir-ty/Cargo.toml | 1 + crates/hir-ty/src/infer/unify.rs | 32 +++++++++++++++++--------------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4c255b12b7f1..59cd66756cd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -557,6 +557,7 @@ version = "0.0.0" dependencies = [ "arrayvec", "base-db", + "bitflags", "chalk-derive", "chalk-ir", "chalk-recursive", diff --git a/crates/hir-ty/Cargo.toml b/crates/hir-ty/Cargo.toml index c72199c37fe7..ae837ac6dce8 100644 --- a/crates/hir-ty/Cargo.toml +++ b/crates/hir-ty/Cargo.toml @@ -13,6 +13,7 @@ doctest = false cov-mark = "2.0.0-pre.1" itertools = "0.10.5" arrayvec = "0.7.2" +bitflags = "1.3.2" smallvec = "1.10.0" ena = "0.14.0" tracing = "0.1.35" diff --git a/crates/hir-ty/src/infer/unify.rs b/crates/hir-ty/src/infer/unify.rs index 12f45f00f9c4..c4488d6d91ea 100644 --- a/crates/hir-ty/src/infer/unify.rs +++ b/crates/hir-ty/src/infer/unify.rs @@ -1,6 +1,6 @@ //! Unification and canonicalization logic. -use std::{fmt, mem, sync::Arc}; +use std::{fmt, iter, mem, sync::Arc}; use chalk_ir::{ cast::Cast, fold::TypeFoldable, interner::HasInterner, zip::Zip, CanonicalVarKind, FloatTy, @@ -128,9 +128,11 @@ pub(crate) fn unify( )) } -#[derive(Copy, Clone, Debug)] -pub(crate) struct TypeVariableData { - diverging: bool, +bitflags::bitflags! { + #[derive(Default)] + pub(crate) struct TypeVariableFlags: u8 { + const DIVERGING = 1 << 0; + } } type ChalkInferenceTable = chalk_solve::infer::InferenceTable; @@ -140,14 +142,14 @@ pub(crate) struct InferenceTable<'a> { pub(crate) db: &'a dyn HirDatabase, pub(crate) trait_env: Arc, var_unification_table: ChalkInferenceTable, - type_variable_table: Vec, + type_variable_table: Vec, pending_obligations: Vec>>, } pub(crate) struct InferenceTableSnapshot { var_table_snapshot: chalk_solve::infer::InferenceSnapshot, pending_obligations: Vec>>, - type_variable_table_snapshot: Vec, + type_variable_table_snapshot: Vec, } impl<'a> InferenceTable<'a> { @@ -169,19 +171,19 @@ impl<'a> InferenceTable<'a> { /// result. pub(super) fn propagate_diverging_flag(&mut self) { for i in 0..self.type_variable_table.len() { - if !self.type_variable_table[i].diverging { + if !self.type_variable_table[i].contains(TypeVariableFlags::DIVERGING) { continue; } let v = InferenceVar::from(i as u32); let root = self.var_unification_table.inference_var_root(v); if let Some(data) = self.type_variable_table.get_mut(root.index() as usize) { - data.diverging = true; + *data |= TypeVariableFlags::DIVERGING; } } } pub(super) fn set_diverging(&mut self, iv: InferenceVar, diverging: bool) { - self.type_variable_table[iv.index() as usize].diverging = diverging; + self.type_variable_table[iv.index() as usize].set(TypeVariableFlags::DIVERGING, diverging); } fn fallback_value(&self, iv: InferenceVar, kind: TyVariableKind) -> Ty { @@ -189,7 +191,7 @@ impl<'a> InferenceTable<'a> { _ if self .type_variable_table .get(iv.index() as usize) - .map_or(false, |data| data.diverging) => + .map_or(false, |data| data.contains(TypeVariableFlags::DIVERGING)) => { TyKind::Never } @@ -247,10 +249,8 @@ impl<'a> InferenceTable<'a> { } fn extend_type_variable_table(&mut self, to_index: usize) { - self.type_variable_table.extend( - (0..1 + to_index - self.type_variable_table.len()) - .map(|_| TypeVariableData { diverging: false }), - ); + let count = to_index - self.type_variable_table.len() + 1; + self.type_variable_table.extend(iter::repeat(TypeVariableFlags::default()).take(count)); } fn new_var(&mut self, kind: TyVariableKind, diverging: bool) -> Ty { @@ -258,7 +258,9 @@ impl<'a> InferenceTable<'a> { // Chalk might have created some type variables for its own purposes that we don't know about... self.extend_type_variable_table(var.index() as usize); assert_eq!(var.index() as usize, self.type_variable_table.len() - 1); - self.type_variable_table[var.index() as usize].diverging = diverging; + if diverging { + self.type_variable_table[var.index() as usize] |= TypeVariableFlags::DIVERGING; + } var.to_ty_with_kind(Interner, kind) } From b183612610c6383861f9c983a10588124800bac7 Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Thu, 5 Jan 2023 20:19:46 +0900 Subject: [PATCH 258/478] Add `INTEGER` and `FLOAT` flags for type variables --- crates/hir-ty/src/infer/unify.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/hir-ty/src/infer/unify.rs b/crates/hir-ty/src/infer/unify.rs index c4488d6d91ea..a1fef48f25a8 100644 --- a/crates/hir-ty/src/infer/unify.rs +++ b/crates/hir-ty/src/infer/unify.rs @@ -132,6 +132,8 @@ bitflags::bitflags! { #[derive(Default)] pub(crate) struct TypeVariableFlags: u8 { const DIVERGING = 1 << 0; + const INTEGER = 1 << 1; + const FLOAT = 1 << 2; } } @@ -258,8 +260,14 @@ impl<'a> InferenceTable<'a> { // Chalk might have created some type variables for its own purposes that we don't know about... self.extend_type_variable_table(var.index() as usize); assert_eq!(var.index() as usize, self.type_variable_table.len() - 1); + let flags = self.type_variable_table.get_mut(var.index() as usize).unwrap(); if diverging { - self.type_variable_table[var.index() as usize] |= TypeVariableFlags::DIVERGING; + *flags |= TypeVariableFlags::DIVERGING; + } + if matches!(kind, TyVariableKind::Integer) { + *flags |= TypeVariableFlags::INTEGER; + } else if matches!(kind, TyVariableKind::Float) { + *flags |= TypeVariableFlags::FLOAT; } var.to_ty_with_kind(Interner, kind) } From 6433d796a1e22ea37f9b51bda5248b9ac82df578 Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Thu, 5 Jan 2023 13:06:43 -0800 Subject: [PATCH 259/478] Restrict suggestion of deriving Default for enums to MSRV 1.62. See https://blog.rust-lang.org/2022/06/30/Rust-1.62.0.html#default-enum-variants --- clippy_lints/src/derivable_impls.rs | 20 +++++++++++++++++--- clippy_lints/src/lib.rs | 2 +- clippy_utils/src/msrvs.rs | 4 ++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/clippy_lints/src/derivable_impls.rs b/clippy_lints/src/derivable_impls.rs index c987fdb1a679..bc18e2e5ed5f 100644 --- a/clippy_lints/src/derivable_impls.rs +++ b/clippy_lints/src/derivable_impls.rs @@ -1,4 +1,5 @@ use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::msrvs::{self, Msrv}; use clippy_utils::source::indent_of; use clippy_utils::{is_default_equivalent, peel_blocks}; use rustc_errors::Applicability; @@ -8,7 +9,7 @@ use rustc_hir::{ }; use rustc_lint::{LateContext, LateLintPass}; use rustc_middle::ty::{AdtDef, DefIdTree}; -use rustc_session::{declare_lint_pass, declare_tool_lint}; +use rustc_session::{declare_tool_lint, impl_lint_pass}; use rustc_span::sym; declare_clippy_lint! { @@ -53,7 +54,18 @@ declare_clippy_lint! { "manual implementation of the `Default` trait which is equal to a derive" } -declare_lint_pass!(DerivableImpls => [DERIVABLE_IMPLS]); +pub struct DerivableImpls { + msrv: Msrv, +} + +impl DerivableImpls { + #[must_use] + pub fn new(msrv: Msrv) -> Self { + DerivableImpls { msrv } + } +} + +impl_lint_pass!(DerivableImpls => [DERIVABLE_IMPLS]); fn is_path_self(e: &Expr<'_>) -> bool { if let ExprKind::Path(QPath::Resolved(_, p)) = e.kind { @@ -181,10 +193,12 @@ impl<'tcx> LateLintPass<'tcx> for DerivableImpls { then { if adt_def.is_struct() { check_struct(cx, item, self_ty, func_expr, adt_def); - } else if adt_def.is_enum() { + } else if adt_def.is_enum() && self.msrv.meets(msrvs::DEFAULT_ENUM_ATTRIBUTE) { check_enum(cx, item, func_expr, adt_def); } } } } + + extract_msrv_attr!(LateContext); } diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs index dcd8ca81ae87..d8e2ae02c5a6 100644 --- a/clippy_lints/src/lib.rs +++ b/clippy_lints/src/lib.rs @@ -639,7 +639,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf: store.register_late_pass(|_| Box::new(panic_unimplemented::PanicUnimplemented)); store.register_late_pass(|_| Box::new(strings::StringLitAsBytes)); store.register_late_pass(|_| Box::new(derive::Derive)); - store.register_late_pass(|_| Box::new(derivable_impls::DerivableImpls)); + store.register_late_pass(move |_| Box::new(derivable_impls::DerivableImpls::new(msrv()))); store.register_late_pass(|_| Box::new(drop_forget_ref::DropForgetRef)); store.register_late_pass(|_| Box::new(empty_enum::EmptyEnum)); store.register_late_pass(|_| Box::new(invalid_upcast_comparisons::InvalidUpcastComparisons)); diff --git a/clippy_utils/src/msrvs.rs b/clippy_utils/src/msrvs.rs index ba5bc9c3135d..dbf9f3b621d7 100644 --- a/clippy_utils/src/msrvs.rs +++ b/clippy_utils/src/msrvs.rs @@ -20,8 +20,9 @@ macro_rules! msrv_aliases { // names may refer to stabilized feature flags or library items msrv_aliases! { 1,65,0 { LET_ELSE } - 1,62,0 { BOOL_THEN_SOME } + 1,62,0 { BOOL_THEN_SOME, DEFAULT_ENUM_ATTRIBUTE } 1,58,0 { FORMAT_ARGS_CAPTURE, PATTERN_TRAIT_CHAR_ARRAY } + 1,55,0 { SEEK_REWIND } 1,53,0 { OR_PATTERNS, MANUAL_BITS, BTREE_MAP_RETAIN, BTREE_SET_RETAIN, ARRAY_INTO_ITERATOR } 1,52,0 { STR_SPLIT_ONCE, REM_EUCLID_CONST } 1,51,0 { BORROW_AS_PTR, SEEK_FROM_CURRENT, UNSIGNED_ABS } @@ -45,7 +46,6 @@ msrv_aliases! { 1,18,0 { HASH_MAP_RETAIN, HASH_SET_RETAIN } 1,17,0 { FIELD_INIT_SHORTHAND, STATIC_IN_CONST, EXPECT_ERR } 1,16,0 { STR_REPEAT } - 1,55,0 { SEEK_REWIND } } fn parse_msrv(msrv: &str, sess: Option<&Session>, span: Option) -> Option { From d01630c8f39e88aa175db9dbe92a9e2a188007ab Mon Sep 17 00:00:00 2001 From: Ryo Yoshida Date: Thu, 5 Jan 2023 21:31:10 +0900 Subject: [PATCH 260/478] Apply fallback to scalar type variables before final obligation resolution --- crates/hir-ty/src/infer.rs | 2 + crates/hir-ty/src/infer/unify.rs | 45 +++++++++++++++++++++ crates/hir-ty/src/tests/traits.rs | 65 +++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index 7b54886d53f8..6b59f1c20daa 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -512,6 +512,8 @@ impl<'a> InferenceContext<'a> { fn resolve_all(self) -> InferenceResult { let InferenceContext { mut table, mut result, .. } = self; + table.fallback_if_possible(); + // FIXME resolve obligations as well (use Guidance if necessary) table.resolve_obligations_as_possible(); diff --git a/crates/hir-ty/src/infer/unify.rs b/crates/hir-ty/src/infer/unify.rs index a1fef48f25a8..e7ddd1591fe8 100644 --- a/crates/hir-ty/src/infer/unify.rs +++ b/crates/hir-ty/src/infer/unify.rs @@ -350,6 +350,51 @@ impl<'a> InferenceTable<'a> { self.resolve_with_fallback(t, &|_, _, d, _| d) } + /// Apply a fallback to unresolved scalar types. Integer type variables and float type + /// variables are replaced with i32 and f64, respectively. + /// + /// This method is only intended to be called just before returning inference results (i.e. in + /// `InferenceContext::resolve_all()`). + /// + /// FIXME: This method currently doesn't apply fallback to unconstrained general type variables + /// whereas rustc replaces them with `()` or `!`. + pub(super) fn fallback_if_possible(&mut self) { + let int_fallback = TyKind::Scalar(Scalar::Int(IntTy::I32)).intern(Interner); + let float_fallback = TyKind::Scalar(Scalar::Float(FloatTy::F64)).intern(Interner); + + let scalar_vars: Vec<_> = self + .type_variable_table + .iter() + .enumerate() + .filter_map(|(index, flags)| { + let kind = if flags.contains(TypeVariableFlags::INTEGER) { + TyVariableKind::Integer + } else if flags.contains(TypeVariableFlags::FLOAT) { + TyVariableKind::Float + } else { + return None; + }; + + // FIXME: This is not really the nicest way to get `InferenceVar`s. Can we get them + // without directly constructing them from `index`? + let var = InferenceVar::from(index as u32).to_ty(Interner, kind); + Some(var) + }) + .collect(); + + for var in scalar_vars { + let maybe_resolved = self.resolve_ty_shallow(&var); + if let TyKind::InferenceVar(_, kind) = maybe_resolved.kind(Interner) { + let fallback = match kind { + TyVariableKind::Integer => &int_fallback, + TyVariableKind::Float => &float_fallback, + TyVariableKind::General => unreachable!(), + }; + self.unify(&var, fallback); + } + } + } + /// Unify two relatable values (e.g. `Ty`) and register new trait goals that arise from that. pub(crate) fn unify>(&mut self, ty1: &T, ty2: &T) -> bool { let result = match self.try_unify(ty1, ty2) { diff --git a/crates/hir-ty/src/tests/traits.rs b/crates/hir-ty/src/tests/traits.rs index a9fd01ee011d..d01fe0632859 100644 --- a/crates/hir-ty/src/tests/traits.rs +++ b/crates/hir-ty/src/tests/traits.rs @@ -4100,3 +4100,68 @@ where "#, ); } + +#[test] +fn bin_op_with_scalar_fallback() { + // Extra impls are significant so that chalk doesn't give us definite guidances. + check_types( + r#" +//- minicore: add +use core::ops::Add; + +struct Vec2(T, T); + +impl Add for Vec2 { + type Output = Self; + fn add(self, rhs: Self) -> Self::Output { loop {} } +} +impl Add for Vec2 { + type Output = Self; + fn add(self, rhs: Self) -> Self::Output { loop {} } +} +impl Add for Vec2 { + type Output = Self; + fn add(self, rhs: Self) -> Self::Output { loop {} } +} +impl Add for Vec2 { + type Output = Self; + fn add(self, rhs: Self) -> Self::Output { loop {} } +} + +fn test() { + let a = Vec2(1, 2); + let b = Vec2(3, 4); + let c = a + b; + //^ Vec2 + let a = Vec2(1., 2.); + let b = Vec2(3., 4.); + let c = a + b; + //^ Vec2 +} +"#, + ); +} + +#[test] +fn trait_method_with_scalar_fallback() { + check_types( + r#" +trait Trait { + type Output; + fn foo(&self) -> Self::Output; +} +impl Trait for T { + type Output = T; + fn foo(&self) -> Self::Output { loop {} } +} +fn test() { + let a = 42; + let b = a.foo(); + //^ i32 + let a = 3.14; + let b = a.foo(); + //^ f64 +} +"#, + ); +} From e443604a24029e0ffd77f917e82980539fdacbbe Mon Sep 17 00:00:00 2001 From: Robin Schroer Date: Fri, 6 Jan 2023 12:52:51 +0900 Subject: [PATCH 261/478] unused_self: Don't trigger if the method body contains todo!() If the author is using todo!(), presumably they intend to use self at some point later, so we don't have a good basis to recommend factoring out to an associated function. Fixes #10117. changelog: Don't trigger [`unused_self`] if the method body contains a `todo!()` call --- clippy_lints/src/unused_self.rs | 19 ++++++++++++++++++- tests/ui/unused_self.rs | 10 ++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/clippy_lints/src/unused_self.rs b/clippy_lints/src/unused_self.rs index 18231b6a7e86..f864c520302e 100644 --- a/clippy_lints/src/unused_self.rs +++ b/clippy_lints/src/unused_self.rs @@ -1,9 +1,11 @@ use clippy_utils::diagnostics::span_lint_and_help; +use clippy_utils::macros::root_macro_call_first_node; use clippy_utils::visitors::is_local_used; use if_chain::if_chain; -use rustc_hir::{Impl, ImplItem, ImplItemKind, ItemKind}; +use rustc_hir::{Body, Impl, ImplItem, ImplItemKind, ItemKind}; use rustc_lint::{LateContext, LateLintPass}; use rustc_session::{declare_tool_lint, impl_lint_pass}; +use std::ops::ControlFlow; declare_clippy_lint! { /// ### What it does @@ -57,6 +59,20 @@ impl<'tcx> LateLintPass<'tcx> for UnusedSelf { let parent = cx.tcx.hir().get_parent_item(impl_item.hir_id()).def_id; let parent_item = cx.tcx.hir().expect_item(parent); let assoc_item = cx.tcx.associated_item(impl_item.owner_id); + let contains_todo = |cx, body: &'_ Body<'_>| -> bool { + clippy_utils::visitors::for_each_expr(body.value, |e| { + if let Some(macro_call) = root_macro_call_first_node(cx, e) { + if cx.tcx.item_name(macro_call.def_id).as_str() == "todo" { + ControlFlow::Break(()) + } else { + ControlFlow::Continue(()) + } + } else { + ControlFlow::Continue(()) + } + }) + .is_some() + }; if_chain! { if let ItemKind::Impl(Impl { of_trait: None, .. }) = parent_item.kind; if assoc_item.fn_has_self_parameter; @@ -65,6 +81,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedSelf { let body = cx.tcx.hir().body(*body_id); if let [self_param, ..] = body.params; if !is_local_used(cx, body, self_param.pat.hir_id); + if !contains_todo(cx, body); then { span_lint_and_help( cx, diff --git a/tests/ui/unused_self.rs b/tests/ui/unused_self.rs index 92e8e1dba69d..55bd5607185c 100644 --- a/tests/ui/unused_self.rs +++ b/tests/ui/unused_self.rs @@ -60,6 +60,16 @@ mod unused_self_allow { // shouldn't trigger for public methods pub fn unused_self_move(self) {} } + + pub struct E; + + impl E { + // shouldn't trigger if body contains todo!() + pub fn unused_self_todo(self) { + let x = 42; + todo!() + } + } } pub use unused_self_allow::D; From 1b9a25e28d76221ee9906b2c3ec833a9837d0349 Mon Sep 17 00:00:00 2001 From: blyxyas Date: Fri, 6 Jan 2023 14:41:50 +0100 Subject: [PATCH 262/478] [#10167] Clarify that the lint only works if x eq. y in a `for` loop. Reading the documentation for the lint, one could expect that the lint works in all cases that `X == Y`. This is false. While the lint was updated, the documentation wasn't. More information about the `N..N` problem in #5689 and #5628 --- clippy_lints/src/ranges.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/ranges.rs b/clippy_lints/src/ranges.rs index 0a1b9d173cf9..fc655fe2d0bb 100644 --- a/clippy_lints/src/ranges.rs +++ b/clippy_lints/src/ranges.rs @@ -103,7 +103,7 @@ declare_clippy_lint! { declare_clippy_lint! { /// ### What it does /// Checks for range expressions `x..y` where both `x` and `y` - /// are constant and `x` is greater or equal to `y`. + /// are constant and `x` is greater to `y`. Also triggers if `x` is equal to `y` when they are conditions to a `for` loop. /// /// ### Why is this bad? /// Empty ranges yield no values so iterating them is a no-op. From 9f6567f20c90adc5451b0a3b87b29997131906d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Fri, 6 Jan 2023 16:00:23 +0200 Subject: [PATCH 263/478] Fix option_env expansion --- crates/hir-expand/src/builtin_fn_macro.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/hir-expand/src/builtin_fn_macro.rs b/crates/hir-expand/src/builtin_fn_macro.rs index 985954d44e46..eed71d88e28e 100644 --- a/crates/hir-expand/src/builtin_fn_macro.rs +++ b/crates/hir-expand/src/builtin_fn_macro.rs @@ -671,7 +671,7 @@ fn option_env_expand( let expanded = match get_env_inner(db, arg_id, &key) { None => quote! { #DOLLAR_CRATE::option::Option::None::<&str> }, - Some(s) => quote! { #DOLLAR_CRATE::option::Some(#s) }, + Some(s) => quote! { #DOLLAR_CRATE::option::Option::Some(#s) }, }; ExpandResult::ok(ExpandedEager::new(expanded)) From 4262aebeaaa5789279110b1f039e991ad8996fa2 Mon Sep 17 00:00:00 2001 From: Caio Date: Fri, 6 Jan 2023 12:25:51 -0300 Subject: [PATCH 264/478] [arithmetic-side-effects] Consider negative numbers and add more tests --- .../src/operators/arithmetic_side_effects.rs | 11 +- clippy_utils/src/lib.rs | 12 + .../arithmetic_side_effects_allowed.rs | 2 +- tests/ui/arithmetic_side_effects.rs | 67 ++++- tests/ui/arithmetic_side_effects.stderr | 274 ++++++++++++++---- 5 files changed, 304 insertions(+), 62 deletions(-) diff --git a/clippy_lints/src/operators/arithmetic_side_effects.rs b/clippy_lints/src/operators/arithmetic_side_effects.rs index 4fbc8398e373..cff82b875f11 100644 --- a/clippy_lints/src/operators/arithmetic_side_effects.rs +++ b/clippy_lints/src/operators/arithmetic_side_effects.rs @@ -2,7 +2,7 @@ use super::ARITHMETIC_SIDE_EFFECTS; use clippy_utils::{ consts::{constant, constant_simple}, diagnostics::span_lint, - peel_hir_expr_refs, + peel_hir_expr_refs, peel_hir_expr_unary, }; use rustc_ast as ast; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; @@ -98,8 +98,11 @@ impl ArithmeticSideEffects { } /// If `expr` is not a literal integer like `1`, returns `None`. + /// + /// Returns the absolute value of the expression, if this is an integer literal. fn literal_integer(expr: &hir::Expr<'_>) -> Option { - if let hir::ExprKind::Lit(ref lit) = expr.kind && let ast::LitKind::Int(n, _) = lit.node { + let actual = peel_hir_expr_unary(expr).0; + if let hir::ExprKind::Lit(ref lit) = actual.kind && let ast::LitKind::Int(n, _) = lit.node { Some(n) } else { @@ -123,12 +126,12 @@ impl ArithmeticSideEffects { if !matches!( op.node, hir::BinOpKind::Add - | hir::BinOpKind::Sub - | hir::BinOpKind::Mul | hir::BinOpKind::Div + | hir::BinOpKind::Mul | hir::BinOpKind::Rem | hir::BinOpKind::Shl | hir::BinOpKind::Shr + | hir::BinOpKind::Sub ) { return; }; diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index e7000fb50586..1dc68be31d92 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -2258,6 +2258,18 @@ pub fn peel_n_hir_expr_refs<'a>(expr: &'a Expr<'a>, count: usize) -> (&'a Expr<' (e, count - remaining) } +/// Peels off all unary operators of an expression. Returns the underlying expression and the number +/// of operators removed. +pub fn peel_hir_expr_unary<'a>(expr: &'a Expr<'a>) -> (&'a Expr<'a>, usize) { + let mut count: usize = 0; + let mut curr_expr = expr; + while let ExprKind::Unary(_, local_expr) = curr_expr.kind { + count = count.wrapping_add(1); + curr_expr = local_expr; + } + (curr_expr, count) +} + /// Peels off all references on the expression. Returns the underlying expression and the number of /// references removed. pub fn peel_hir_expr_refs<'a>(expr: &'a Expr<'a>) -> (&'a Expr<'a>, usize) { diff --git a/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs b/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs index 36db9e54a228..fb5b1b193f84 100644 --- a/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs +++ b/tests/ui-toml/arithmetic_side_effects_allowed/arithmetic_side_effects_allowed.rs @@ -107,7 +107,7 @@ fn rhs_is_different() { fn unary() { // is explicitly on the list let _ = -OutOfNames; - // is specifically on the list + // is explicitly on the list let _ = -Foo; // not on the list let _ = -Bar; diff --git a/tests/ui/arithmetic_side_effects.rs b/tests/ui/arithmetic_side_effects.rs index b5ed8988a518..66c468c94063 100644 --- a/tests/ui/arithmetic_side_effects.rs +++ b/tests/ui/arithmetic_side_effects.rs @@ -2,6 +2,7 @@ clippy::assign_op_pattern, clippy::erasing_op, clippy::identity_op, + clippy::no_effect, clippy::op_ref, clippy::unnecessary_owned_empty_strings, arithmetic_overflow, @@ -125,6 +126,18 @@ pub fn non_overflowing_ops_or_ops_already_handled_by_the_compiler_should_not_tri _n *= &0; _n *= 1; _n *= &1; + _n += -0; + _n += &-0; + _n -= -0; + _n -= &-0; + _n /= -99; + _n /= &-99; + _n %= -99; + _n %= &-99; + _n *= -0; + _n *= &-0; + _n *= -1; + _n *= &-1; // Binary _n = _n + 0; @@ -158,7 +171,7 @@ pub fn non_overflowing_ops_or_ops_already_handled_by_the_compiler_should_not_tri _n = -&i32::MIN; } -pub fn runtime_ops() { +pub fn unknown_ops_or_runtime_ops_that_can_overflow() { let mut _n = i32::MAX; // Assign @@ -172,6 +185,16 @@ pub fn runtime_ops() { _n %= &0; _n *= 2; _n *= &2; + _n += -1; + _n += &-1; + _n -= -1; + _n -= &-1; + _n /= -0; + _n /= &-0; + _n %= -0; + _n %= &-0; + _n *= -2; + _n *= &-2; // Binary _n = _n + 1; @@ -225,4 +248,46 @@ pub fn runtime_ops() { _n = -&_n; } +// Copied and pasted from the `integer_arithmetic` lint for comparison. +pub fn integer_arithmetic() { + let mut i = 1i32; + let mut var1 = 0i32; + let mut var2 = -1i32; + + 1 + i; + i * 2; + 1 % i / 2; + i - 2 + 2 - i; + -i; + i >> 1; + i << 1; + + -1; + -(-1); + + i & 1; + i | 1; + i ^ 1; + + i += 1; + i -= 1; + i *= 2; + i /= 2; + i /= 0; + i /= -1; + i /= var1; + i /= var2; + i %= 2; + i %= 0; + i %= -1; + i %= var1; + i %= var2; + i <<= 3; + i >>= 2; + + i |= 1; + i &= 1; + i ^= i; +} + fn main() {} diff --git a/tests/ui/arithmetic_side_effects.stderr b/tests/ui/arithmetic_side_effects.stderr index 9fe4b7cf28d8..a9bb0ae9280e 100644 --- a/tests/ui/arithmetic_side_effects.stderr +++ b/tests/ui/arithmetic_side_effects.stderr @@ -1,5 +1,5 @@ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:165:5 + --> $DIR/arithmetic_side_effects.rs:178:5 | LL | _n += 1; | ^^^^^^^ @@ -7,328 +7,490 @@ LL | _n += 1; = note: `-D clippy::arithmetic-side-effects` implied by `-D warnings` error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:166:5 + --> $DIR/arithmetic_side_effects.rs:179:5 | LL | _n += &1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:167:5 + --> $DIR/arithmetic_side_effects.rs:180:5 | LL | _n -= 1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:168:5 + --> $DIR/arithmetic_side_effects.rs:181:5 | LL | _n -= &1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:169:5 + --> $DIR/arithmetic_side_effects.rs:182:5 | LL | _n /= 0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:170:5 + --> $DIR/arithmetic_side_effects.rs:183:5 | LL | _n /= &0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:171:5 + --> $DIR/arithmetic_side_effects.rs:184:5 | LL | _n %= 0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:172:5 + --> $DIR/arithmetic_side_effects.rs:185:5 | LL | _n %= &0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:173:5 + --> $DIR/arithmetic_side_effects.rs:186:5 | LL | _n *= 2; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:174:5 + --> $DIR/arithmetic_side_effects.rs:187:5 | LL | _n *= &2; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:177:10 + --> $DIR/arithmetic_side_effects.rs:188:5 + | +LL | _n += -1; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:189:5 + | +LL | _n += &-1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:190:5 + | +LL | _n -= -1; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:191:5 + | +LL | _n -= &-1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:192:5 + | +LL | _n /= -0; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:193:5 + | +LL | _n /= &-0; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:194:5 + | +LL | _n %= -0; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:195:5 + | +LL | _n %= &-0; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:196:5 + | +LL | _n *= -2; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:197:5 + | +LL | _n *= &-2; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:200:10 | LL | _n = _n + 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:178:10 + --> $DIR/arithmetic_side_effects.rs:201:10 | LL | _n = _n + &1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:179:10 + --> $DIR/arithmetic_side_effects.rs:202:10 | LL | _n = 1 + _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:180:10 + --> $DIR/arithmetic_side_effects.rs:203:10 | LL | _n = &1 + _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:181:10 + --> $DIR/arithmetic_side_effects.rs:204:10 | LL | _n = _n - 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:182:10 + --> $DIR/arithmetic_side_effects.rs:205:10 | LL | _n = _n - &1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:183:10 + --> $DIR/arithmetic_side_effects.rs:206:10 | LL | _n = 1 - _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:184:10 + --> $DIR/arithmetic_side_effects.rs:207:10 | LL | _n = &1 - _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:185:10 + --> $DIR/arithmetic_side_effects.rs:208:10 | LL | _n = _n / 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:186:10 + --> $DIR/arithmetic_side_effects.rs:209:10 | LL | _n = _n / &0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:187:10 + --> $DIR/arithmetic_side_effects.rs:210:10 | LL | _n = _n % 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:188:10 + --> $DIR/arithmetic_side_effects.rs:211:10 | LL | _n = _n % &0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:189:10 + --> $DIR/arithmetic_side_effects.rs:212:10 | LL | _n = _n * 2; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:190:10 + --> $DIR/arithmetic_side_effects.rs:213:10 | LL | _n = _n * &2; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:191:10 + --> $DIR/arithmetic_side_effects.rs:214:10 | LL | _n = 2 * _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:192:10 + --> $DIR/arithmetic_side_effects.rs:215:10 | LL | _n = &2 * _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:193:10 + --> $DIR/arithmetic_side_effects.rs:216:10 | LL | _n = 23 + &85; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:194:10 + --> $DIR/arithmetic_side_effects.rs:217:10 | LL | _n = &23 + 85; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:195:10 + --> $DIR/arithmetic_side_effects.rs:218:10 | LL | _n = &23 + &85; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:198:13 + --> $DIR/arithmetic_side_effects.rs:221:13 | LL | let _ = Custom + 0; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:199:13 + --> $DIR/arithmetic_side_effects.rs:222:13 | LL | let _ = Custom + 1; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:200:13 + --> $DIR/arithmetic_side_effects.rs:223:13 | LL | let _ = Custom + 2; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:201:13 + --> $DIR/arithmetic_side_effects.rs:224:13 | LL | let _ = Custom + 0.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:202:13 + --> $DIR/arithmetic_side_effects.rs:225:13 | LL | let _ = Custom + 1.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:203:13 + --> $DIR/arithmetic_side_effects.rs:226:13 | LL | let _ = Custom + 2.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:204:13 + --> $DIR/arithmetic_side_effects.rs:227:13 | LL | let _ = Custom - 0; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:205:13 + --> $DIR/arithmetic_side_effects.rs:228:13 | LL | let _ = Custom - 1; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:206:13 + --> $DIR/arithmetic_side_effects.rs:229:13 | LL | let _ = Custom - 2; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:207:13 + --> $DIR/arithmetic_side_effects.rs:230:13 | LL | let _ = Custom - 0.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:208:13 + --> $DIR/arithmetic_side_effects.rs:231:13 | LL | let _ = Custom - 1.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:209:13 + --> $DIR/arithmetic_side_effects.rs:232:13 | LL | let _ = Custom - 2.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:210:13 + --> $DIR/arithmetic_side_effects.rs:233:13 | LL | let _ = Custom / 0; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:211:13 + --> $DIR/arithmetic_side_effects.rs:234:13 | LL | let _ = Custom / 1; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:212:13 + --> $DIR/arithmetic_side_effects.rs:235:13 | LL | let _ = Custom / 2; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:213:13 + --> $DIR/arithmetic_side_effects.rs:236:13 | LL | let _ = Custom / 0.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:214:13 + --> $DIR/arithmetic_side_effects.rs:237:13 | LL | let _ = Custom / 1.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:215:13 + --> $DIR/arithmetic_side_effects.rs:238:13 | LL | let _ = Custom / 2.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:216:13 + --> $DIR/arithmetic_side_effects.rs:239:13 | LL | let _ = Custom * 0; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:217:13 + --> $DIR/arithmetic_side_effects.rs:240:13 | LL | let _ = Custom * 1; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:218:13 + --> $DIR/arithmetic_side_effects.rs:241:13 | LL | let _ = Custom * 2; | ^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:219:13 + --> $DIR/arithmetic_side_effects.rs:242:13 | LL | let _ = Custom * 0.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:220:13 + --> $DIR/arithmetic_side_effects.rs:243:13 | LL | let _ = Custom * 1.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:221:13 + --> $DIR/arithmetic_side_effects.rs:244:13 | LL | let _ = Custom * 2.0; | ^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:224:10 + --> $DIR/arithmetic_side_effects.rs:247:10 | LL | _n = -_n; | ^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:225:10 + --> $DIR/arithmetic_side_effects.rs:248:10 | LL | _n = -&_n; | ^^^^ -error: aborting due to 55 previous errors +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:257:5 + | +LL | 1 + i; + | ^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:258:5 + | +LL | i * 2; + | ^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:260:5 + | +LL | i - 2 + 2 - i; + | ^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:261:5 + | +LL | -i; + | ^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:262:5 + | +LL | i >> 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:263:5 + | +LL | i << 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:272:5 + | +LL | i += 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:273:5 + | +LL | i -= 1; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:274:5 + | +LL | i *= 2; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:276:5 + | +LL | i /= 0; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:278:5 + | +LL | i /= var1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:279:5 + | +LL | i /= var2; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:281:5 + | +LL | i %= 0; + | ^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:283:5 + | +LL | i %= var1; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:284:5 + | +LL | i %= var2; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:285:5 + | +LL | i <<= 3; + | ^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:286:5 + | +LL | i >>= 2; + | ^^^^^^^ + +error: aborting due to 82 previous errors From c5bde0699fb69ba507fa1d0f5642e2407654f5e3 Mon Sep 17 00:00:00 2001 From: Paul Kirth Date: Thu, 22 Dec 2022 20:29:31 +0000 Subject: [PATCH 265/478] Enable Shadow Call Stack for Fuchsia on AArch64 Fuchsia already uses SCS by default for C/C++ code on ARM hardware. This patch allows SCS to be used for Rust code as well. --- compiler/rustc_target/src/spec/aarch64_unknown_fuchsia.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_target/src/spec/aarch64_unknown_fuchsia.rs b/compiler/rustc_target/src/spec/aarch64_unknown_fuchsia.rs index da493f0c2603..ef2ab304f9e0 100644 --- a/compiler/rustc_target/src/spec/aarch64_unknown_fuchsia.rs +++ b/compiler/rustc_target/src/spec/aarch64_unknown_fuchsia.rs @@ -8,7 +8,9 @@ pub fn target() -> Target { arch: "aarch64".into(), options: TargetOptions { max_atomic_width: Some(128), - supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::CFI, + supported_sanitizers: SanitizerSet::ADDRESS + | SanitizerSet::CFI + | SanitizerSet::SHADOWCALLSTACK, ..super::fuchsia_base::opts() }, } From fb34fbf7e01d2cd9b44d762d4cd17d456796a63a Mon Sep 17 00:00:00 2001 From: Caio Date: Fri, 6 Jan 2023 14:50:25 -0300 Subject: [PATCH 266/478] [arithmetic_side_effects] Add more tests related to custom types --- tests/ui/arithmetic_side_effects.rs | 156 +++++++--- tests/ui/arithmetic_side_effects.stderr | 394 +++++++++++++++--------- 2 files changed, 366 insertions(+), 184 deletions(-) diff --git a/tests/ui/arithmetic_side_effects.rs b/tests/ui/arithmetic_side_effects.rs index 66c468c94063..918cf81c600a 100644 --- a/tests/ui/arithmetic_side_effects.rs +++ b/tests/ui/arithmetic_side_effects.rs @@ -13,31 +13,95 @@ use core::num::{Saturating, Wrapping}; +#[derive(Clone, Copy)] pub struct Custom; macro_rules! impl_arith { - ( $( $_trait:ident, $ty:ty, $method:ident; )* ) => { + ( $( $_trait:ident, $lhs:ty, $rhs:ty, $method:ident; )* ) => { $( - impl core::ops::$_trait<$ty> for Custom { - type Output = Self; - fn $method(self, _: $ty) -> Self::Output { Self } + impl core::ops::$_trait<$lhs> for $rhs { + type Output = Custom; + fn $method(self, _: $lhs) -> Self::Output { todo!() } + } + )* + } +} + +macro_rules! impl_assign_arith { + ( $( $_trait:ident, $lhs:ty, $rhs:ty, $method:ident; )* ) => { + $( + impl core::ops::$_trait<$lhs> for $rhs { + fn $method(&mut self, _: $lhs) {} } )* } } impl_arith!( - Add, i32, add; - Div, i32, div; - Mul, i32, mul; - Sub, i32, sub; + Add, Custom, Custom, add; + Div, Custom, Custom, div; + Mul, Custom, Custom, mul; + Rem, Custom, Custom, rem; + Sub, Custom, Custom, sub; - Add, f64, add; - Div, f64, div; - Mul, f64, mul; - Sub, f64, sub; + Add, Custom, &Custom, add; + Div, Custom, &Custom, div; + Mul, Custom, &Custom, mul; + Rem, Custom, &Custom, rem; + Sub, Custom, &Custom, sub; + + Add, &Custom, Custom, add; + Div, &Custom, Custom, div; + Mul, &Custom, Custom, mul; + Rem, &Custom, Custom, rem; + Sub, &Custom, Custom, sub; + + Add, &Custom, &Custom, add; + Div, &Custom, &Custom, div; + Mul, &Custom, &Custom, mul; + Rem, &Custom, &Custom, rem; + Sub, &Custom, &Custom, sub; ); +impl_assign_arith!( + AddAssign, Custom, Custom, add_assign; + DivAssign, Custom, Custom, div_assign; + MulAssign, Custom, Custom, mul_assign; + RemAssign, Custom, Custom, rem_assign; + SubAssign, Custom, Custom, sub_assign; + + AddAssign, Custom, &Custom, add_assign; + DivAssign, Custom, &Custom, div_assign; + MulAssign, Custom, &Custom, mul_assign; + RemAssign, Custom, &Custom, rem_assign; + SubAssign, Custom, &Custom, sub_assign; + + AddAssign, &Custom, Custom, add_assign; + DivAssign, &Custom, Custom, div_assign; + MulAssign, &Custom, Custom, mul_assign; + RemAssign, &Custom, Custom, rem_assign; + SubAssign, &Custom, Custom, sub_assign; + + AddAssign, &Custom, &Custom, add_assign; + DivAssign, &Custom, &Custom, div_assign; + MulAssign, &Custom, &Custom, mul_assign; + RemAssign, &Custom, &Custom, rem_assign; + SubAssign, &Custom, &Custom, sub_assign; +); + +impl core::ops::Neg for Custom { + type Output = Custom; + fn neg(self) -> Self::Output { + todo!() + } +} +impl core::ops::Neg for &Custom { + type Output = Custom; + fn neg(self) -> Self::Output { + todo!() + } +} + pub fn association_with_structures_should_not_trigger_the_lint() { enum Foo { Bar = -2, @@ -173,6 +237,7 @@ pub fn non_overflowing_ops_or_ops_already_handled_by_the_compiler_should_not_tri pub fn unknown_ops_or_runtime_ops_that_can_overflow() { let mut _n = i32::MAX; + let mut _custom = Custom; // Assign _n += 1; @@ -195,6 +260,26 @@ pub fn unknown_ops_or_runtime_ops_that_can_overflow() { _n %= &-0; _n *= -2; _n *= &-2; + _custom += Custom; + _custom += &Custom; + _custom -= Custom; + _custom -= &Custom; + _custom /= Custom; + _custom /= &Custom; + _custom %= Custom; + _custom %= &Custom; + _custom *= Custom; + _custom *= &Custom; + _custom += -Custom; + _custom += &-Custom; + _custom -= -Custom; + _custom -= &-Custom; + _custom /= -Custom; + _custom /= &-Custom; + _custom %= -Custom; + _custom %= &-Custom; + _custom *= -Custom; + _custom *= &-Custom; // Binary _n = _n + 1; @@ -216,36 +301,31 @@ pub fn unknown_ops_or_runtime_ops_that_can_overflow() { _n = 23 + &85; _n = &23 + 85; _n = &23 + &85; - - // Custom - let _ = Custom + 0; - let _ = Custom + 1; - let _ = Custom + 2; - let _ = Custom + 0.0; - let _ = Custom + 1.0; - let _ = Custom + 2.0; - let _ = Custom - 0; - let _ = Custom - 1; - let _ = Custom - 2; - let _ = Custom - 0.0; - let _ = Custom - 1.0; - let _ = Custom - 2.0; - let _ = Custom / 0; - let _ = Custom / 1; - let _ = Custom / 2; - let _ = Custom / 0.0; - let _ = Custom / 1.0; - let _ = Custom / 2.0; - let _ = Custom * 0; - let _ = Custom * 1; - let _ = Custom * 2; - let _ = Custom * 0.0; - let _ = Custom * 1.0; - let _ = Custom * 2.0; + _custom = _custom + _custom; + _custom = _custom + &_custom; + _custom = Custom + _custom; + _custom = &Custom + _custom; + _custom = _custom - Custom; + _custom = _custom - &Custom; + _custom = Custom - _custom; + _custom = &Custom - _custom; + _custom = _custom / Custom; + _custom = _custom / &Custom; + _custom = _custom % Custom; + _custom = _custom % &Custom; + _custom = _custom * Custom; + _custom = _custom * &Custom; + _custom = Custom * _custom; + _custom = &Custom * _custom; + _custom = Custom + &Custom; + _custom = &Custom + Custom; + _custom = &Custom + &Custom; // Unary _n = -_n; _n = -&_n; + _custom = -_custom; + _custom = -&_custom; } // Copied and pasted from the `integer_arithmetic` lint for comparison. diff --git a/tests/ui/arithmetic_side_effects.stderr b/tests/ui/arithmetic_side_effects.stderr index a9bb0ae9280e..5e349f6b497c 100644 --- a/tests/ui/arithmetic_side_effects.stderr +++ b/tests/ui/arithmetic_side_effects.stderr @@ -1,5 +1,5 @@ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:178:5 + --> $DIR/arithmetic_side_effects.rs:243:5 | LL | _n += 1; | ^^^^^^^ @@ -7,490 +7,592 @@ LL | _n += 1; = note: `-D clippy::arithmetic-side-effects` implied by `-D warnings` error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:179:5 + --> $DIR/arithmetic_side_effects.rs:244:5 | LL | _n += &1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:180:5 + --> $DIR/arithmetic_side_effects.rs:245:5 | LL | _n -= 1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:181:5 + --> $DIR/arithmetic_side_effects.rs:246:5 | LL | _n -= &1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:182:5 + --> $DIR/arithmetic_side_effects.rs:247:5 | LL | _n /= 0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:183:5 + --> $DIR/arithmetic_side_effects.rs:248:5 | LL | _n /= &0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:184:5 + --> $DIR/arithmetic_side_effects.rs:249:5 | LL | _n %= 0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:185:5 + --> $DIR/arithmetic_side_effects.rs:250:5 | LL | _n %= &0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:186:5 + --> $DIR/arithmetic_side_effects.rs:251:5 | LL | _n *= 2; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:187:5 + --> $DIR/arithmetic_side_effects.rs:252:5 | LL | _n *= &2; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:188:5 + --> $DIR/arithmetic_side_effects.rs:253:5 | LL | _n += -1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:189:5 + --> $DIR/arithmetic_side_effects.rs:254:5 | LL | _n += &-1; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:190:5 + --> $DIR/arithmetic_side_effects.rs:255:5 | LL | _n -= -1; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:191:5 + --> $DIR/arithmetic_side_effects.rs:256:5 | LL | _n -= &-1; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:192:5 + --> $DIR/arithmetic_side_effects.rs:257:5 | LL | _n /= -0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:193:5 + --> $DIR/arithmetic_side_effects.rs:258:5 | LL | _n /= &-0; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:194:5 + --> $DIR/arithmetic_side_effects.rs:259:5 | LL | _n %= -0; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:195:5 + --> $DIR/arithmetic_side_effects.rs:260:5 | LL | _n %= &-0; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:196:5 + --> $DIR/arithmetic_side_effects.rs:261:5 | LL | _n *= -2; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:197:5 + --> $DIR/arithmetic_side_effects.rs:262:5 | LL | _n *= &-2; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:200:10 + --> $DIR/arithmetic_side_effects.rs:263:5 + | +LL | _custom += Custom; + | ^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:264:5 + | +LL | _custom += &Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:265:5 + | +LL | _custom -= Custom; + | ^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:266:5 + | +LL | _custom -= &Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:267:5 + | +LL | _custom /= Custom; + | ^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:268:5 + | +LL | _custom /= &Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:269:5 + | +LL | _custom %= Custom; + | ^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:270:5 + | +LL | _custom %= &Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:271:5 + | +LL | _custom *= Custom; + | ^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:272:5 + | +LL | _custom *= &Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:273:5 + | +LL | _custom += -Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:274:5 + | +LL | _custom += &-Custom; + | ^^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:275:5 + | +LL | _custom -= -Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:276:5 + | +LL | _custom -= &-Custom; + | ^^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:277:5 + | +LL | _custom /= -Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:278:5 + | +LL | _custom /= &-Custom; + | ^^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:279:5 + | +LL | _custom %= -Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:280:5 + | +LL | _custom %= &-Custom; + | ^^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:281:5 + | +LL | _custom *= -Custom; + | ^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:282:5 + | +LL | _custom *= &-Custom; + | ^^^^^^^^^^^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:285:10 | LL | _n = _n + 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:201:10 + --> $DIR/arithmetic_side_effects.rs:286:10 | LL | _n = _n + &1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:202:10 + --> $DIR/arithmetic_side_effects.rs:287:10 | LL | _n = 1 + _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:203:10 + --> $DIR/arithmetic_side_effects.rs:288:10 | LL | _n = &1 + _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:204:10 + --> $DIR/arithmetic_side_effects.rs:289:10 | LL | _n = _n - 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:205:10 + --> $DIR/arithmetic_side_effects.rs:290:10 | LL | _n = _n - &1; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:206:10 + --> $DIR/arithmetic_side_effects.rs:291:10 | LL | _n = 1 - _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:207:10 + --> $DIR/arithmetic_side_effects.rs:292:10 | LL | _n = &1 - _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:208:10 + --> $DIR/arithmetic_side_effects.rs:293:10 | LL | _n = _n / 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:209:10 + --> $DIR/arithmetic_side_effects.rs:294:10 | LL | _n = _n / &0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:210:10 + --> $DIR/arithmetic_side_effects.rs:295:10 | LL | _n = _n % 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:211:10 + --> $DIR/arithmetic_side_effects.rs:296:10 | LL | _n = _n % &0; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:212:10 + --> $DIR/arithmetic_side_effects.rs:297:10 | LL | _n = _n * 2; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:213:10 + --> $DIR/arithmetic_side_effects.rs:298:10 | LL | _n = _n * &2; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:214:10 + --> $DIR/arithmetic_side_effects.rs:299:10 | LL | _n = 2 * _n; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:215:10 + --> $DIR/arithmetic_side_effects.rs:300:10 | LL | _n = &2 * _n; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:216:10 + --> $DIR/arithmetic_side_effects.rs:301:10 | LL | _n = 23 + &85; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:217:10 + --> $DIR/arithmetic_side_effects.rs:302:10 | LL | _n = &23 + 85; | ^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:218:10 + --> $DIR/arithmetic_side_effects.rs:303:10 | LL | _n = &23 + &85; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:221:13 + --> $DIR/arithmetic_side_effects.rs:304:15 | -LL | let _ = Custom + 0; - | ^^^^^^^^^^ +LL | _custom = _custom + _custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:222:13 + --> $DIR/arithmetic_side_effects.rs:305:15 | -LL | let _ = Custom + 1; - | ^^^^^^^^^^ +LL | _custom = _custom + &_custom; + | ^^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:223:13 + --> $DIR/arithmetic_side_effects.rs:306:15 | -LL | let _ = Custom + 2; - | ^^^^^^^^^^ +LL | _custom = Custom + _custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:224:13 + --> $DIR/arithmetic_side_effects.rs:307:15 | -LL | let _ = Custom + 0.0; - | ^^^^^^^^^^^^ +LL | _custom = &Custom + _custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:225:13 + --> $DIR/arithmetic_side_effects.rs:308:15 | -LL | let _ = Custom + 1.0; - | ^^^^^^^^^^^^ +LL | _custom = _custom - Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:226:13 + --> $DIR/arithmetic_side_effects.rs:309:15 | -LL | let _ = Custom + 2.0; - | ^^^^^^^^^^^^ +LL | _custom = _custom - &Custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:227:13 + --> $DIR/arithmetic_side_effects.rs:310:15 | -LL | let _ = Custom - 0; - | ^^^^^^^^^^ +LL | _custom = Custom - _custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:228:13 + --> $DIR/arithmetic_side_effects.rs:311:15 | -LL | let _ = Custom - 1; - | ^^^^^^^^^^ +LL | _custom = &Custom - _custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:229:13 + --> $DIR/arithmetic_side_effects.rs:312:15 | -LL | let _ = Custom - 2; - | ^^^^^^^^^^ +LL | _custom = _custom / Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:230:13 + --> $DIR/arithmetic_side_effects.rs:313:15 | -LL | let _ = Custom - 0.0; - | ^^^^^^^^^^^^ +LL | _custom = _custom / &Custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:231:13 + --> $DIR/arithmetic_side_effects.rs:314:15 | -LL | let _ = Custom - 1.0; - | ^^^^^^^^^^^^ +LL | _custom = _custom % Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:232:13 + --> $DIR/arithmetic_side_effects.rs:315:15 | -LL | let _ = Custom - 2.0; - | ^^^^^^^^^^^^ +LL | _custom = _custom % &Custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:233:13 + --> $DIR/arithmetic_side_effects.rs:316:15 | -LL | let _ = Custom / 0; - | ^^^^^^^^^^ +LL | _custom = _custom * Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:234:13 + --> $DIR/arithmetic_side_effects.rs:317:15 | -LL | let _ = Custom / 1; - | ^^^^^^^^^^ +LL | _custom = _custom * &Custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:235:13 + --> $DIR/arithmetic_side_effects.rs:318:15 | -LL | let _ = Custom / 2; - | ^^^^^^^^^^ +LL | _custom = Custom * _custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:236:13 + --> $DIR/arithmetic_side_effects.rs:319:15 | -LL | let _ = Custom / 0.0; - | ^^^^^^^^^^^^ +LL | _custom = &Custom * _custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:237:13 + --> $DIR/arithmetic_side_effects.rs:320:15 | -LL | let _ = Custom / 1.0; - | ^^^^^^^^^^^^ +LL | _custom = Custom + &Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:238:13 + --> $DIR/arithmetic_side_effects.rs:321:15 | -LL | let _ = Custom / 2.0; - | ^^^^^^^^^^^^ +LL | _custom = &Custom + Custom; + | ^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:239:13 + --> $DIR/arithmetic_side_effects.rs:322:15 | -LL | let _ = Custom * 0; - | ^^^^^^^^^^ +LL | _custom = &Custom + &Custom; + | ^^^^^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:240:13 - | -LL | let _ = Custom * 1; - | ^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:241:13 - | -LL | let _ = Custom * 2; - | ^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:242:13 - | -LL | let _ = Custom * 0.0; - | ^^^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:243:13 - | -LL | let _ = Custom * 1.0; - | ^^^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:244:13 - | -LL | let _ = Custom * 2.0; - | ^^^^^^^^^^^^ - -error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:247:10 + --> $DIR/arithmetic_side_effects.rs:325:10 | LL | _n = -_n; | ^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:248:10 + --> $DIR/arithmetic_side_effects.rs:326:10 | LL | _n = -&_n; | ^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:257:5 + --> $DIR/arithmetic_side_effects.rs:327:15 + | +LL | _custom = -_custom; + | ^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:328:15 + | +LL | _custom = -&_custom; + | ^^^^^^^^^ + +error: arithmetic operation that can potentially result in unexpected side-effects + --> $DIR/arithmetic_side_effects.rs:337:5 | LL | 1 + i; | ^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:258:5 + --> $DIR/arithmetic_side_effects.rs:338:5 | LL | i * 2; | ^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:260:5 + --> $DIR/arithmetic_side_effects.rs:340:5 | LL | i - 2 + 2 - i; | ^^^^^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:261:5 + --> $DIR/arithmetic_side_effects.rs:341:5 | LL | -i; | ^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:262:5 + --> $DIR/arithmetic_side_effects.rs:342:5 | LL | i >> 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:263:5 + --> $DIR/arithmetic_side_effects.rs:343:5 | LL | i << 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:272:5 + --> $DIR/arithmetic_side_effects.rs:352:5 | LL | i += 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:273:5 + --> $DIR/arithmetic_side_effects.rs:353:5 | LL | i -= 1; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:274:5 + --> $DIR/arithmetic_side_effects.rs:354:5 | LL | i *= 2; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:276:5 + --> $DIR/arithmetic_side_effects.rs:356:5 | LL | i /= 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:278:5 + --> $DIR/arithmetic_side_effects.rs:358:5 | LL | i /= var1; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:279:5 + --> $DIR/arithmetic_side_effects.rs:359:5 | LL | i /= var2; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:281:5 + --> $DIR/arithmetic_side_effects.rs:361:5 | LL | i %= 0; | ^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:283:5 + --> $DIR/arithmetic_side_effects.rs:363:5 | LL | i %= var1; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:284:5 + --> $DIR/arithmetic_side_effects.rs:364:5 | LL | i %= var2; | ^^^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:285:5 + --> $DIR/arithmetic_side_effects.rs:365:5 | LL | i <<= 3; | ^^^^^^^ error: arithmetic operation that can potentially result in unexpected side-effects - --> $DIR/arithmetic_side_effects.rs:286:5 + --> $DIR/arithmetic_side_effects.rs:366:5 | LL | i >>= 2; | ^^^^^^^ -error: aborting due to 82 previous errors +error: aborting due to 99 previous errors From d0cf7e3bf59ecf7666820b9f2fba9760c6b7beec Mon Sep 17 00:00:00 2001 From: wcampbell Date: Fri, 6 Jan 2023 19:34:45 -0500 Subject: [PATCH 267/478] Use fmt named parameters in rustc_borrowck --- .../src/diagnostics/conflict_errors.rs | 12 +++--- .../src/diagnostics/explain_borrow.rs | 39 +++++++------------ .../rustc_borrowck/src/diagnostics/mod.rs | 38 ++++++++---------- .../src/diagnostics/mutability_errors.rs | 8 ++-- .../src/diagnostics/outlives_suggestion.rs | 18 ++++----- .../src/diagnostics/region_errors.rs | 6 +-- .../src/diagnostics/region_name.rs | 7 ++-- .../src/diagnostics/var_name.rs | 25 +++++------- compiler/rustc_borrowck/src/facts.rs | 2 +- 9 files changed, 63 insertions(+), 92 deletions(-) diff --git a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs index 492c8d020126..84d2967b5f97 100644 --- a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs +++ b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs @@ -156,7 +156,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_note( MultiSpan::from_spans(reinit_spans), &if reinits <= 3 { - format!("these {} reinitializations might get skipped", reinits) + format!("these {reinits} reinitializations might get skipped") } else { format!( "these 3 reinitializations and {} other{} might get skipped", @@ -225,9 +225,8 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_label( span, format!( - "value {} here after {}move", + "value {} here after {partial_str}move", desired_action.as_verb_in_past_tense(), - partial_str ), ); } @@ -257,7 +256,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { &format!( "consider creating a fresh reborrow of {} here", self.describe_place(moved_place) - .map(|n| format!("`{}`", n)) + .map(|n| format!("`{n}`")) .unwrap_or_else(|| "the mutable reference".to_string()), ), "&mut *", @@ -271,7 +270,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { DescribePlaceOpt { including_downcast: true, including_tuple_field: true }, ); let note_msg = match opt_name { - Some(name) => format!("`{}`", name), + Some(name) => format!("`{name}`"), None => "value".to_owned(), }; if self.suggest_borrow_fn_like(&mut err, ty, &move_site_vec, ¬e_msg) { @@ -297,9 +296,8 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { } = use_spans { err.note(&format!( - "{} occurs due to deref coercion to `{}`", + "{} occurs due to deref coercion to `{deref_target_ty}`", desired_action.as_noun(), - deref_target_ty )); // Check first whether the source is accessible (issue #87060) diff --git a/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs b/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs index 00f5e8a83972..120693b1d0cc 100644 --- a/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs +++ b/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs @@ -77,7 +77,7 @@ impl<'tcx> BorrowExplanation<'tcx> { if borrow_span.map(|sp| !sp.overlaps(var_or_use_span)).unwrap_or(true) { err.span_label( var_or_use_span, - format!("{}borrow later {}", borrow_desc, message), + format!("{borrow_desc}borrow later {message}"), ); } } else { @@ -90,7 +90,7 @@ impl<'tcx> BorrowExplanation<'tcx> { let capture_kind_label = message; err.span_label( var_or_use_span, - format!("{}borrow later {}", borrow_desc, capture_kind_label), + format!("{borrow_desc}borrow later {capture_kind_label}"), ); err.span_label(path_span, path_label); } @@ -110,7 +110,7 @@ impl<'tcx> BorrowExplanation<'tcx> { }; // We can use `var_or_use_span` if either `path_span` is not present, or both spans are the same if path_span.map(|path_span| path_span == var_or_use_span).unwrap_or(true) { - err.span_label(var_or_use_span, format!("{}{}", borrow_desc, message)); + err.span_label(var_or_use_span, format!("{borrow_desc}{message}")); } else { // path_span must be `Some` as otherwise the if condition is true let path_span = path_span.unwrap(); @@ -121,7 +121,7 @@ impl<'tcx> BorrowExplanation<'tcx> { let capture_kind_label = message; err.span_label( var_or_use_span, - format!("{}borrow later {}", borrow_desc, capture_kind_label), + format!("{borrow_desc}borrow later {capture_kind_label}"), ); err.span_label(path_span, path_label); } @@ -160,12 +160,8 @@ impl<'tcx> BorrowExplanation<'tcx> { match local_names[dropped_local] { Some(local_name) if !local_decl.from_compiler_desugaring() => { let message = format!( - "{B}borrow might be used here, when `{LOC}` is dropped \ - and runs the {DTOR} for {TYPE}", - B = borrow_desc, - LOC = local_name, - TYPE = type_desc, - DTOR = dtor_desc + "{borrow_desc}borrow might be used here, when `{local_name}` is dropped \ + and runs the {dtor_desc} for {type_desc}", ); err.span_label(body.source_info(drop_loc).span, message); @@ -180,18 +176,14 @@ impl<'tcx> BorrowExplanation<'tcx> { err.span_label( local_decl.source_info.span, format!( - "a temporary with access to the {B}borrow \ + "a temporary with access to the {borrow_desc}borrow \ is created here ...", - B = borrow_desc ), ); let message = format!( - "... and the {B}borrow might be used here, \ + "... and the {borrow_desc}borrow might be used here, \ when that temporary is dropped \ - and runs the {DTOR} for {TYPE}", - B = borrow_desc, - TYPE = type_desc, - DTOR = dtor_desc + and runs the {dtor_desc} for {type_desc}", ); err.span_label(body.source_info(drop_loc).span, message); @@ -249,20 +241,16 @@ impl<'tcx> BorrowExplanation<'tcx> { err.span_label( span, format!( - "{}requires that `{}` is borrowed for `{}`", + "{}requires that `{desc}` is borrowed for `{region_name}`", category.description(), - desc, - region_name, ), ); } else { err.span_label( span, format!( - "{}requires that {}borrow lasts for `{}`", + "{}requires that {borrow_desc}borrow lasts for `{region_name}`", category.description(), - borrow_desc, - region_name, ), ); }; @@ -296,15 +284,14 @@ impl<'tcx> BorrowExplanation<'tcx> { if region_name.was_named() { region_name.name } else { kw::UnderscoreLifetime }; let msg = format!( - "you can add a bound to the {}to make it last less than `'static` and match `{}`", + "you can add a bound to the {}to make it last less than `'static` and match `{region_name}`", category.description(), - region_name, ); err.span_suggestion_verbose( span.shrink_to_hi(), &msg, - format!(" + {}", suggestable_name), + format!(" + {suggestable_name}"), Applicability::Unspecified, ); } diff --git a/compiler/rustc_borrowck/src/diagnostics/mod.rs b/compiler/rustc_borrowck/src/diagnostics/mod.rs index 63b16aa95a6a..1b40b7143cbb 100644 --- a/compiler/rustc_borrowck/src/diagnostics/mod.rs +++ b/compiler/rustc_borrowck/src/diagnostics/mod.rs @@ -403,8 +403,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { move_prefix: &str, ) { let message = format!( - "{}move occurs because {} has type `{}`, which does not implement the `Copy` trait", - move_prefix, place_desc, ty, + "{move_prefix}move occurs because {place_desc} has type `{ty}`, which does not implement the `Copy` trait", ); if let Some(span) = span { err.span_label(span, message); @@ -739,11 +738,11 @@ impl<'tcx> BorrowedContentSource<'tcx> { BorrowedContentSource::OverloadedDeref(ty) => ty .ty_adt_def() .and_then(|adt| match tcx.get_diagnostic_name(adt.did())? { - name @ (sym::Rc | sym::Arc) => Some(format!("an `{}`", name)), + name @ (sym::Rc | sym::Arc) => Some(format!("an `{name}`")), _ => None, }) - .unwrap_or_else(|| format!("dereference of `{}`", ty)), - BorrowedContentSource::OverloadedIndex(ty) => format!("index of `{}`", ty), + .unwrap_or_else(|| format!("dereference of `{ty}`")), + BorrowedContentSource::OverloadedIndex(ty) => format!("index of `{ty}`"), } } @@ -769,11 +768,11 @@ impl<'tcx> BorrowedContentSource<'tcx> { BorrowedContentSource::OverloadedDeref(ty) => ty .ty_adt_def() .and_then(|adt| match tcx.get_diagnostic_name(adt.did())? { - name @ (sym::Rc | sym::Arc) => Some(format!("an `{}`", name)), + name @ (sym::Rc | sym::Arc) => Some(format!("an `{name}`")), _ => None, }) - .unwrap_or_else(|| format!("dereference of `{}`", ty)), - BorrowedContentSource::OverloadedIndex(ty) => format!("an index of `{}`", ty), + .unwrap_or_else(|| format!("dereference of `{ty}`")), + BorrowedContentSource::OverloadedIndex(ty) => format!("an index of `{ty}`"), } } @@ -1033,7 +1032,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { if let UseSpans::FnSelfUse { var_span, fn_call_span, fn_span, kind } = move_spans { let place_name = self .describe_place(moved_place.as_ref()) - .map(|n| format!("`{}`", n)) + .map(|n| format!("`{n}`")) .unwrap_or_else(|| "value".to_owned()); match kind { CallKind::FnCall { fn_trait_id, .. } @@ -1042,8 +1041,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_label( fn_call_span, &format!( - "{} {}moved due to this call{}", - place_name, partially_str, loop_message + "{place_name} {partially_str}moved due to this call{loop_message}", ), ); err.span_note( @@ -1056,8 +1054,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_label( fn_call_span, &format!( - "{} {}moved due to usage in operator{}", - place_name, partially_str, loop_message + "{place_name} {partially_str}moved due to usage in operator{loop_message}", ), ); if self.fn_self_span_reported.insert(fn_span) { @@ -1089,9 +1086,8 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_suggestion_verbose( move_span.shrink_to_lo(), &format!( - "consider iterating over a slice of the `{}`'s content to \ + "consider iterating over a slice of the `{ty}`'s content to \ avoid moving into the `for` loop", - ty, ), "&", Applicability::MaybeIncorrect, @@ -1101,8 +1097,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_label( fn_call_span, &format!( - "{} {}moved due to this implicit call to `.into_iter()`{}", - place_name, partially_str, loop_message + "{place_name} {partially_str}moved due to this implicit call to `.into_iter()`{loop_message}", ), ); // If the moved place was a `&mut` ref, then we can @@ -1118,7 +1113,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { &format!( "consider creating a fresh reborrow of {} here", self.describe_place(moved_place.as_ref()) - .map(|n| format!("`{}`", n)) + .map(|n| format!("`{n}`")) .unwrap_or_else(|| "the mutable reference".to_string()), ), "&mut *", @@ -1130,8 +1125,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { err.span_label( fn_call_span, &format!( - "{} {}moved due to this method call{}", - place_name, partially_str, loop_message + "{place_name} {partially_str}moved due to this method call{loop_message}", ), ); let infcx = tcx.infer_ctxt().build(); @@ -1206,7 +1200,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { if move_span != span || !loop_message.is_empty() { err.span_label( move_span, - format!("value {}moved{} here{}", partially_str, move_msg, loop_message), + format!("value {partially_str}moved{move_msg} here{loop_message}"), ); } // If the move error occurs due to a loop, don't show @@ -1214,7 +1208,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { if loop_message.is_empty() { move_spans.var_span_label( err, - format!("variable {}moved due to use{}", partially_str, move_spans.describe()), + format!("variable {partially_str}moved due to use{}", move_spans.describe()), "moved", ); } diff --git a/compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs b/compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs index c022fb55a16f..5f11da3a98da 100644 --- a/compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs +++ b/compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs @@ -264,7 +264,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> { ProjectionElem::Deref, ], } => { - err.span_label(span, format!("cannot {ACT}", ACT = act)); + err.span_label(span, format!("cannot {act}")); if let Some(span) = get_mut_span_in_struct_field( self.infcx.tcx, @@ -290,7 +290,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> { .unwrap_or(false) => { let decl = &self.body.local_decls[local]; - err.span_label(span, format!("cannot {ACT}", ACT = act)); + err.span_label(span, format!("cannot {act}")); if let Some(mir::Statement { source_info, kind: @@ -634,7 +634,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> { } PlaceRef { local: _, projection: [.., ProjectionElem::Deref] } => { - err.span_label(span, format!("cannot {ACT}", ACT = act)); + err.span_label(span, format!("cannot {act}")); match opt_source { Some(BorrowedContentSource::OverloadedDeref(ty)) => { @@ -1207,7 +1207,7 @@ fn suggest_ampmut<'tcx>( { let lt_name = &src[1..ws_pos]; let ty = &src[ws_pos..]; - return (true, highlight_span, format!("&{} mut{}", lt_name, ty)); + return (true, highlight_span, format!("&{lt_name} mut{ty}")); } let ty_mut = local_decl.ty.builtin_deref(true).unwrap(); diff --git a/compiler/rustc_borrowck/src/diagnostics/outlives_suggestion.rs b/compiler/rustc_borrowck/src/diagnostics/outlives_suggestion.rs index 35c3df768995..1eaf0a2f15ce 100644 --- a/compiler/rustc_borrowck/src/diagnostics/outlives_suggestion.rs +++ b/compiler/rustc_borrowck/src/diagnostics/outlives_suggestion.rs @@ -209,14 +209,14 @@ impl OutlivesSuggestionBuilder { let mut diag = if suggested.len() == 1 { mbcx.infcx.tcx.sess.diagnostic().struct_help(&match suggested.last().unwrap() { SuggestedConstraint::Outlives(a, bs) => { - let bs: SmallVec<[String; 2]> = bs.iter().map(|r| format!("{}", r)).collect(); - format!("add bound `{}: {}`", a, bs.join(" + ")) + let bs: SmallVec<[String; 2]> = bs.iter().map(|r| r.to_string()).collect(); + format!("add bound `{a}: {}`", bs.join(" + ")) } SuggestedConstraint::Equal(a, b) => { - format!("`{}` and `{}` must be the same: replace one with the other", a, b) + format!("`{a}` and `{b}` must be the same: replace one with the other") } - SuggestedConstraint::Static(a) => format!("replace `{}` with `'static`", a), + SuggestedConstraint::Static(a) => format!("replace `{a}` with `'static`"), }) } else { // Create a new diagnostic. @@ -231,18 +231,16 @@ impl OutlivesSuggestionBuilder { for constraint in suggested { match constraint { SuggestedConstraint::Outlives(a, bs) => { - let bs: SmallVec<[String; 2]> = - bs.iter().map(|r| format!("{}", r)).collect(); - diag.help(&format!("add bound `{}: {}`", a, bs.join(" + "))); + let bs: SmallVec<[String; 2]> = bs.iter().map(|r| r.to_string()).collect(); + diag.help(&format!("add bound `{a}: {}`", bs.join(" + "))); } SuggestedConstraint::Equal(a, b) => { diag.help(&format!( - "`{}` and `{}` must be the same: replace one with the other", - a, b + "`{a}` and `{b}` must be the same: replace one with the other", )); } SuggestedConstraint::Static(a) => { - diag.help(&format!("replace `{}` with `'static`", a)); + diag.help(&format!("replace `{a}` with `'static`")); } } } diff --git a/compiler/rustc_borrowck/src/diagnostics/region_errors.rs b/compiler/rustc_borrowck/src/diagnostics/region_errors.rs index cc33ef14756e..e8a4d1c37c18 100644 --- a/compiler/rustc_borrowck/src/diagnostics/region_errors.rs +++ b/compiler/rustc_borrowck/src/diagnostics/region_errors.rs @@ -422,7 +422,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> { ); (desc, note) } - _ => panic!("Unexpected type {:?}", ty), + _ => panic!("Unexpected type {ty:?}"), }; diag.note(&format!("requirement occurs because of {desc}",)); diag.note(¬e); @@ -725,10 +725,10 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> { let lifetime = if f.has_name() { fr_name.name } else { kw::UnderscoreLifetime }; let arg = match param.param.pat.simple_ident() { - Some(simple_ident) => format!("argument `{}`", simple_ident), + Some(simple_ident) => format!("argument `{simple_ident}`"), None => "the argument".to_string(), }; - let captures = format!("captures data from {}", arg); + let captures = format!("captures data from {arg}"); return nice_region_error::suggest_new_region_bound( self.infcx.tcx, diff --git a/compiler/rustc_borrowck/src/diagnostics/region_name.rs b/compiler/rustc_borrowck/src/diagnostics/region_name.rs index dbd4cac7b143..c41db0e1fc35 100644 --- a/compiler/rustc_borrowck/src/diagnostics/region_name.rs +++ b/compiler/rustc_borrowck/src/diagnostics/region_name.rs @@ -202,7 +202,7 @@ impl<'tcx> MirBorrowckCtxt<'_, 'tcx> { /// This is _not_ idempotent. Call `give_region_a_name` when possible. fn synthesize_region_name(&self) -> Symbol { let c = self.next_region_name.replace_with(|counter| *counter + 1); - Symbol::intern(&format!("'{:?}", c)) + Symbol::intern(&format!("'{c:?}")) } /// Maps from an internal MIR region vid to something that we can @@ -619,7 +619,7 @@ impl<'tcx> MirBorrowckCtxt<'_, 'tcx> { // programs, so we need to use delay_span_bug here. See #82126. self.infcx.tcx.sess.delay_span_bug( hir_arg.span(), - &format!("unmatched subst and hir arg: found {:?} vs {:?}", kind, hir_arg), + &format!("unmatched subst and hir arg: found {kind:?} vs {hir_arg:?}"), ); } } @@ -783,8 +783,7 @@ impl<'tcx> MirBorrowckCtxt<'_, 'tcx> { } else { span_bug!( hir_ty.span, - "bounds from lowered return type of async fn did not match expected format: {:?}", - opaque_ty + "bounds from lowered return type of async fn did not match expected format: {opaque_ty:?}", ); } } diff --git a/compiler/rustc_borrowck/src/diagnostics/var_name.rs b/compiler/rustc_borrowck/src/diagnostics/var_name.rs index b385f95b67c6..ada3310d8071 100644 --- a/compiler/rustc_borrowck/src/diagnostics/var_name.rs +++ b/compiler/rustc_borrowck/src/diagnostics/var_name.rs @@ -18,7 +18,7 @@ impl<'tcx> RegionInferenceContext<'tcx> { upvars: &[Upvar<'tcx>], fr: RegionVid, ) -> Option<(Option, Span)> { - debug!("get_var_name_and_span_for_region(fr={:?})", fr); + debug!("get_var_name_and_span_for_region(fr={fr:?})"); assert!(self.universal_regions().is_universal_region(fr)); debug!("get_var_name_and_span_for_region: attempting upvar"); @@ -44,10 +44,10 @@ impl<'tcx> RegionInferenceContext<'tcx> { ) -> Option { let upvar_index = self.universal_regions().defining_ty.upvar_tys().position(|upvar_ty| { - debug!("get_upvar_index_for_region: upvar_ty={:?}", upvar_ty); + debug!("get_upvar_index_for_region: upvar_ty={upvar_ty:?}"); tcx.any_free_region_meets(&upvar_ty, |r| { let r = r.to_region_vid(); - debug!("get_upvar_index_for_region: r={:?} fr={:?}", r, fr); + debug!("get_upvar_index_for_region: r={r:?} fr={fr:?}"); r == fr }) })?; @@ -55,8 +55,7 @@ impl<'tcx> RegionInferenceContext<'tcx> { let upvar_ty = self.universal_regions().defining_ty.upvar_tys().nth(upvar_index); debug!( - "get_upvar_index_for_region: found {:?} in upvar {} which has type {:?}", - fr, upvar_index, upvar_ty, + "get_upvar_index_for_region: found {fr:?} in upvar {upvar_index} which has type {upvar_ty:?}", ); Some(upvar_index) @@ -71,13 +70,12 @@ impl<'tcx> RegionInferenceContext<'tcx> { upvar_index: usize, ) -> (Symbol, Span) { let upvar_hir_id = upvars[upvar_index].place.get_root_variable(); - debug!("get_upvar_name_and_span_for_region: upvar_hir_id={:?}", upvar_hir_id); + debug!("get_upvar_name_and_span_for_region: upvar_hir_id={upvar_hir_id:?}"); let upvar_name = tcx.hir().name(upvar_hir_id); let upvar_span = tcx.hir().span(upvar_hir_id); debug!( - "get_upvar_name_and_span_for_region: upvar_name={:?} upvar_span={:?}", - upvar_name, upvar_span + "get_upvar_name_and_span_for_region: upvar_name={upvar_name:?} upvar_span={upvar_span:?}", ); (upvar_name, upvar_span) @@ -97,15 +95,13 @@ impl<'tcx> RegionInferenceContext<'tcx> { let argument_index = self.universal_regions().unnormalized_input_tys.iter().skip(implicit_inputs).position( |arg_ty| { - debug!("get_argument_index_for_region: arg_ty = {:?}", arg_ty); + debug!("get_argument_index_for_region: arg_ty = {arg_ty:?}"); tcx.any_free_region_meets(arg_ty, |r| r.to_region_vid() == fr) }, )?; debug!( - "get_argument_index_for_region: found {:?} in argument {} which has type {:?}", - fr, - argument_index, + "get_argument_index_for_region: found {fr:?} in argument {argument_index} which has type {:?}", self.universal_regions().unnormalized_input_tys[argument_index], ); @@ -122,13 +118,12 @@ impl<'tcx> RegionInferenceContext<'tcx> { ) -> (Option, Span) { let implicit_inputs = self.universal_regions().defining_ty.implicit_inputs(); let argument_local = Local::new(implicit_inputs + argument_index + 1); - debug!("get_argument_name_and_span_for_region: argument_local={:?}", argument_local); + debug!("get_argument_name_and_span_for_region: argument_local={argument_local:?}"); let argument_name = local_names[argument_local]; let argument_span = body.local_decls[argument_local].source_info.span; debug!( - "get_argument_name_and_span_for_region: argument_name={:?} argument_span={:?}", - argument_name, argument_span + "get_argument_name_and_span_for_region: argument_name={argument_name:?} argument_span={argument_span:?}", ); (argument_name, argument_span) diff --git a/compiler/rustc_borrowck/src/facts.rs b/compiler/rustc_borrowck/src/facts.rs index 51ed27c167d3..02ffb51fbb7e 100644 --- a/compiler/rustc_borrowck/src/facts.rs +++ b/compiler/rustc_borrowck/src/facts.rs @@ -192,7 +192,7 @@ fn write_row( ) -> Result<(), Box> { for (index, c) in columns.iter().enumerate() { let tail = if index == columns.len() - 1 { "\n" } else { "\t" }; - write!(out, "{:?}{}", c.to_string(location_table), tail)?; + write!(out, "{:?}{tail}", c.to_string(location_table))?; } Ok(()) } From d227506683e846cbeb872e089d660187a7a6041f Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Sat, 17 Sep 2022 21:35:47 +0300 Subject: [PATCH 268/478] don't normalize in astconv We delay projection normalization to further stages in order to register user type annotations before normalization in HIR typeck. There are two consumers of astconv: ItemCtxt and FnCtxt. The former already expects unnormalized types from astconv, see its AstConv trait impl. The latter needs `RawTy` for a cleaner interface. Unfortunately astconv still needs the normalization machinery in order to resolve enum variants that have projections in the self type, e.g. `<::Assoc>::StructVariant {}`. This is why `AstConv::normalize_ty_2` is necessary. --- .../rustc_hir_analysis/src/astconv/mod.rs | 37 ++--- compiler/rustc_hir_analysis/src/collect.rs | 5 - compiler/rustc_hir_typeck/src/closure.rs | 6 +- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 67 +++++---- .../rustc_hir_typeck/src/fn_ctxt/checks.rs | 32 ++-- compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs | 21 ++- .../rustc_hir_typeck/src/gather_locals.rs | 5 +- compiler/rustc_hir_typeck/src/lib.rs | 2 +- .../rustc_hir_typeck/src/method/confirm.rs | 8 +- compiler/rustc_hir_typeck/src/pat.rs | 4 +- compiler/rustc_traits/src/type_op.rs | 1 + src/test/ui/const-generics/issue-97007.rs | 6 +- .../generic-associated-types/issue-91139.rs | 8 - .../issue-91139.stderr | 61 +------- .../normalize-under-binder/issue-85455.rs | 1 + .../normalize-under-binder/issue-85455.stderr | 13 +- ...malformed-projection-input-issue-102800.rs | 12 +- ...ormed-projection-input-issue-102800.stderr | 86 +---------- .../nll/user-annotations/ascribed-type-wf.rs | 5 +- .../user-annotations/ascribed-type-wf.stderr | 10 ++ .../user-annotations/dump-adt-brace-struct.rs | 2 + .../dump-adt-brace-struct.stderr | 18 ++- .../nll/user-annotations/normalization-2.rs | 80 ++++++++++ .../user-annotations/normalization-2.stderr | 141 ++++++++++++++++++ .../ui/ufcs/ufcs-partially-resolved.stderr | 2 +- 25 files changed, 376 insertions(+), 257 deletions(-) create mode 100644 src/test/ui/nll/user-annotations/ascribed-type-wf.stderr create mode 100644 src/test/ui/nll/user-annotations/normalization-2.rs create mode 100644 src/test/ui/nll/user-annotations/normalization-2.stderr diff --git a/compiler/rustc_hir_analysis/src/astconv/mod.rs b/compiler/rustc_hir_analysis/src/astconv/mod.rs index 1b334f65b9ec..bcb695cc8e3c 100644 --- a/compiler/rustc_hir_analysis/src/astconv/mod.rs +++ b/compiler/rustc_hir_analysis/src/astconv/mod.rs @@ -106,11 +106,9 @@ pub trait AstConv<'tcx> { poly_trait_ref: ty::PolyTraitRef<'tcx>, ) -> Ty<'tcx>; - /// Normalize an associated type coming from the user. - /// - /// This should only be used by astconv. Use `FnCtxt::normalize` - /// or `ObligationCtxt::normalize` in downstream crates. - fn normalize_ty(&self, span: Span, ty: Ty<'tcx>) -> Ty<'tcx>; + fn normalize_ty_2(&self, _span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { + ty + } /// Invoked when we encounter an error from some prior pass /// (e.g., resolve) that is translated into a ty-error. This is @@ -485,14 +483,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { // Avoid ICE #86756 when type error recovery goes awry. return tcx.ty_error().into(); } - self.astconv - .normalize_ty( - self.span, - tcx.at(self.span) - .bound_type_of(param.def_id) - .subst(tcx, substs), - ) - .into() + tcx.at(self.span).bound_type_of(param.def_id).subst(tcx, substs).into() } else if infer_args { self.astconv.ty_infer(Some(param), self.span).into() } else { @@ -1254,7 +1245,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { item_segment: &hir::PathSegment<'_>, ) -> Ty<'tcx> { let substs = self.ast_path_substs_for_ty(span, did, item_segment); - self.normalize_ty(span, self.tcx().at(span).bound_type_of(did).subst(self.tcx(), substs)) + self.tcx().at(span).bound_type_of(did).subst(self.tcx(), substs) } fn conv_object_ty_poly_trait_ref( @@ -1786,7 +1777,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { Ok(bound) } - // Create a type from a path to an associated type. + // Create a type from a path to an associated type or to an enum variant. // For a path `A::B::C::D`, `qself_ty` and `qself_def` are the type and def for `A::B::C` // and item_segment is the path segment for `D`. We return a type and a def for // the whole path. @@ -1814,7 +1805,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { // Check if we have an enum variant. let mut variant_resolution = None; - if let ty::Adt(adt_def, adt_substs) = qself_ty.kind() { + if let ty::Adt(adt_def, adt_substs) = self.normalize_ty_2(span, qself_ty).kind() { if adt_def.is_enum() { let variant_def = adt_def .variants() @@ -1923,7 +1914,6 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { adt_substs, ); let ty = tcx.bound_type_of(assoc_ty_did).subst(tcx, item_substs); - let ty = self.normalize_ty(span, ty); return Ok((ty, DefKind::AssocTy, assoc_ty_did)); } } @@ -2020,7 +2010,6 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { }; let ty = self.projected_ty_from_poly_trait_ref(span, assoc_ty_did, assoc_segment, bound); - let ty = self.normalize_ty(span, ty); if let Some(variant_def_id) = variant_resolution { tcx.struct_span_lint_hir( @@ -2156,7 +2145,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { debug!("qpath_to_ty: trait_ref={:?}", trait_ref); - self.normalize_ty(span, tcx.mk_projection(item_def_id, item_substs)) + tcx.mk_projection(item_def_id, item_substs) } pub fn prohibit_generics<'a>( @@ -2417,7 +2406,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { err.note("`impl Trait` types can't have type parameters"); }); let substs = self.ast_path_substs_for_ty(span, did, item_segment.0); - self.normalize_ty(span, tcx.mk_opaque(did, substs)) + tcx.mk_opaque(did, substs) } Res::Def( DefKind::Enum @@ -2577,7 +2566,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { } tcx.ty_error_with_guaranteed(err.emit()) } else { - self.normalize_ty(span, ty) + ty } } Res::Def(DefKind::AssocTy, def_id) => { @@ -2720,8 +2709,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { None, ty::BoundConstness::NotConst, ); - EarlyBinder(self.normalize_ty(span, tcx.at(span).type_of(def_id))) - .subst(tcx, substs) + EarlyBinder(tcx.at(span).type_of(def_id)).subst(tcx, substs) } hir::TyKind::Array(ref ty, ref length) => { let length = match length { @@ -2731,8 +2719,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { } }; - let array_ty = tcx.mk_ty(ty::Array(self.ast_ty_to_ty(ty), length)); - self.normalize_ty(ast_ty.span, array_ty) + tcx.mk_ty(ty::Array(self.ast_ty_to_ty(ty), length)) } hir::TyKind::Typeof(ref e) => { let ty_erased = tcx.type_of(e.def_id); diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs index 7afde550b42a..fd54aec480ab 100644 --- a/compiler/rustc_hir_analysis/src/collect.rs +++ b/compiler/rustc_hir_analysis/src/collect.rs @@ -505,11 +505,6 @@ impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx> { } } - fn normalize_ty(&self, _span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { - // Types in item signatures are not normalized to avoid undue dependencies. - ty - } - fn set_tainted_by_errors(&self, _: ErrorGuaranteed) { // There's no obvious place to track this, so just let it go. } diff --git a/compiler/rustc_hir_typeck/src/closure.rs b/compiler/rustc_hir_typeck/src/closure.rs index 3453da500b98..399702fd41ab 100644 --- a/compiler/rustc_hir_typeck/src/closure.rs +++ b/compiler/rustc_hir_typeck/src/closure.rs @@ -647,14 +647,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ), bound_vars, ); - // Astconv can't normalize inputs or outputs with escaping bound vars, - // so normalize them here, after we've wrapped them in a binder. - let result = self.normalize(self.tcx.hir().span(hir_id), result); let c_result = self.inh.infcx.canonicalize_response(result); self.typeck_results.borrow_mut().user_provided_sigs.insert(expr_def_id, c_result); - result + // Normalize only after registering in `user_provided_sigs`. + self.normalize(self.tcx.hir().span(hir_id), result) } /// Invoked when we are translating the generator that results diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 634688de01a6..3e05f67b74bc 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -1,7 +1,7 @@ use crate::callee::{self, DeferredCallResolution}; use crate::method::{self, MethodCallee, SelfSource}; use crate::rvalue_scopes; -use crate::{BreakableCtxt, Diverges, Expectation, FnCtxt, LocalTy}; +use crate::{BreakableCtxt, Diverges, Expectation, FnCtxt, LocalTy, RawTy}; use rustc_data_structures::captures::Captures; use rustc_data_structures::fx::FxHashSet; use rustc_errors::{Applicability, Diagnostic, ErrorGuaranteed, MultiSpan}; @@ -410,23 +410,27 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - pub fn to_ty(&self, ast_t: &hir::Ty<'_>) -> Ty<'tcx> { + pub fn create_raw_ty(&self, span: Span, ty: Ty<'tcx>) -> RawTy<'tcx> { + RawTy { raw: ty, normalized: self.normalize(span, ty) } + } + + pub fn to_ty(&self, ast_t: &hir::Ty<'_>) -> RawTy<'tcx> { let t = >::ast_ty_to_ty(self, ast_t); self.register_wf_obligation(t.into(), ast_t.span, traits::WellFormed(None)); - t + self.create_raw_ty(ast_t.span, t) } pub fn to_ty_saving_user_provided_ty(&self, ast_ty: &hir::Ty<'_>) -> Ty<'tcx> { let ty = self.to_ty(ast_ty); debug!("to_ty_saving_user_provided_ty: ty={:?}", ty); - if Self::can_contain_user_lifetime_bounds(ty) { - let c_ty = self.canonicalize_response(UserType::Ty(ty)); + if Self::can_contain_user_lifetime_bounds(ty.raw) { + let c_ty = self.canonicalize_response(UserType::Ty(ty.raw)); debug!("to_ty_saving_user_provided_ty: c_ty={:?}", c_ty); self.typeck_results.borrow_mut().user_provided_types_mut().insert(ast_ty.hir_id, c_ty); } - ty + ty.normalized } pub fn array_length_to_const(&self, length: &hir::ArrayLen) -> ty::Const<'tcx> { @@ -780,7 +784,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { qpath: &'tcx QPath<'tcx>, hir_id: hir::HirId, span: Span, - ) -> (Res, Option>, &'tcx [hir::PathSegment<'tcx>]) { + ) -> (Res, Option>, &'tcx [hir::PathSegment<'tcx>]) { debug!( "resolve_ty_and_res_fully_qualified_call: qpath={:?} hir_id={:?} span={:?}", qpath, hir_id, span @@ -803,7 +807,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // to be object-safe. // We manually call `register_wf_obligation` in the success path // below. - (>::ast_ty_to_ty_in_path(self, qself), qself, segment) + let ty = >::ast_ty_to_ty_in_path(self, qself); + (self.create_raw_ty(span, ty), qself, segment) } QPath::LangItem(..) => { bug!("`resolve_ty_and_res_fully_qualified_call` called on `LangItem`") @@ -811,7 +816,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { }; if let Some(&cached_result) = self.typeck_results.borrow().type_dependent_defs().get(hir_id) { - self.register_wf_obligation(ty.into(), qself.span, traits::WellFormed(None)); + self.register_wf_obligation(ty.raw.into(), qself.span, traits::WellFormed(None)); // Return directly on cache hit. This is useful to avoid doubly reporting // errors with default match binding modes. See #44614. let def = cached_result.map_or(Res::Err, |(kind, def_id)| Res::Def(kind, def_id)); @@ -819,7 +824,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } let item_name = item_segment.ident; let result = self - .resolve_fully_qualified_call(span, item_name, ty, qself.span, hir_id) + .resolve_fully_qualified_call(span, item_name, ty.normalized, qself.span, hir_id) .or_else(|error| { let result = match error { method::MethodError::PrivateMatch(kind, def_id, _) => Ok((kind, def_id)), @@ -830,13 +835,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // a WF obligation for `dyn MyTrait` when method lookup fails. Otherwise, // register a WF obligation so that we can detect any additional // errors in the self type. - if !(matches!(error, method::MethodError::NoMatch(_)) && ty.is_trait()) { - self.register_wf_obligation(ty.into(), qself.span, traits::WellFormed(None)); + if !(matches!(error, method::MethodError::NoMatch(_)) && ty.normalized.is_trait()) { + self.register_wf_obligation( + ty.raw.into(), + qself.span, + traits::WellFormed(None), + ); } if item_name.name != kw::Empty { if let Some(mut e) = self.report_method_error( span, - ty, + ty.normalized, item_name, SelfSource::QPath(qself), error, @@ -849,7 +858,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { }); if result.is_ok() { - self.register_wf_obligation(ty.into(), qself.span, traits::WellFormed(None)); + self.register_wf_obligation(ty.raw.into(), qself.span, traits::WellFormed(None)); } // Write back the new resolution. @@ -986,7 +995,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { pub fn instantiate_value_path( &self, segments: &[hir::PathSegment<'_>], - self_ty: Option>, + self_ty: Option>, res: Res, span: Span, hir_id: hir::HirId, @@ -996,7 +1005,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let path_segs = match res { Res::Local(_) | Res::SelfCtor(_) => vec![], Res::Def(kind, def_id) => >::def_ids_for_value_path_segments( - self, segments, self_ty, kind, def_id, + self, + segments, + self_ty.map(|ty| ty.normalized), + kind, + def_id, ), _ => bug!("instantiate_value_path on {:?}", res), }; @@ -1007,8 +1020,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { Res::Def(DefKind::Ctor(CtorOf::Variant, _), _) if let Some(self_ty) = self_ty => { - let adt_def = self_ty.ty_adt_def().unwrap(); - user_self_ty = Some(UserSelfTy { impl_def_id: adt_def.did(), self_ty }); + let adt_def = self_ty.normalized.ty_adt_def().unwrap(); + user_self_ty = Some(UserSelfTy { impl_def_id: adt_def.did(), self_ty: self_ty.raw }); is_alias_variant_ctor = true; } Res::Def(DefKind::AssocFn | DefKind::AssocConst, def_id) => { @@ -1027,7 +1040,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // inherent impl, we need to record the // `T` for posterity (see `UserSelfTy` for // details). - let self_ty = self_ty.expect("UFCS sugared assoc missing Self"); + let self_ty = self_ty.expect("UFCS sugared assoc missing Self").raw; user_self_ty = Some(UserSelfTy { impl_def_id: container_id, self_ty }); } } @@ -1109,7 +1122,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .unwrap_or(false); let (res, self_ctor_substs) = if let Res::SelfCtor(impl_def_id) = res { - let ty = self.normalize_ty(span, tcx.at(span).type_of(impl_def_id)); + let ty = self.normalize_ty_2(span, tcx.at(span).type_of(impl_def_id)); match *ty.kind() { ty::Adt(adt_def, substs) if adt_def.has_ctor() => { let variant = adt_def.non_enum_variant(); @@ -1193,7 +1206,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { >::ast_region_to_region(self.fcx, lt, Some(param)).into() } (GenericParamDefKind::Type { .. }, GenericArg::Type(ty)) => { - self.fcx.to_ty(ty).into() + self.fcx.to_ty(ty).raw.into() } (GenericParamDefKind::Const { .. }, GenericArg::Const(ct)) => { self.fcx.const_arg_to_const(&ct.value, param.def_id).into() @@ -1227,7 +1240,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // is missing. let default = tcx.bound_type_of(param.def_id); self.fcx - .normalize_ty(self.span, default.subst(tcx, substs.unwrap())) + .normalize_ty_2(self.span, default.subst(tcx, substs.unwrap())) .into() } else { // If no type arguments were provided, we have to infer them. @@ -1250,13 +1263,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - let substs = self_ctor_substs.unwrap_or_else(|| { + let substs_raw = self_ctor_substs.unwrap_or_else(|| { >::create_substs_for_generic_args( tcx, def_id, &[], has_self, - self_ty, + self_ty.map(|s| s.raw), &arg_count, &mut CreateCtorSubstsContext { fcx: self, @@ -1269,7 +1282,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { }); // First, store the "user substs" for later. - self.write_user_type_annotation_from_substs(hir_id, def_id, substs, user_self_ty); + self.write_user_type_annotation_from_substs(hir_id, def_id, substs_raw, user_self_ty); + + // Normalize only after registering type annotations. + let substs = self.normalize(span, substs_raw); self.add_required_obligations_for_hir(span, def_id, &substs, hir_id); @@ -1287,6 +1303,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // with the substituted impl type. // This also occurs for an enum variant on a type alias. let impl_ty = self.normalize(span, tcx.bound_type_of(impl_def_id).subst(tcx, substs)); + let self_ty = self.normalize(span, self_ty); match self.at(&self.misc(span), self.param_env).eq(impl_ty, self_ty) { Ok(ok) => self.register_infer_ok_obligations(ok), Err(_) => { diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 7d6b4aaebf4e..6a822568775b 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -5,7 +5,7 @@ use crate::method::MethodCallee; use crate::Expectation::*; use crate::TupleArgumentsFlag::*; use crate::{ - struct_span_err, BreakableCtxt, Diverges, Expectation, FnCtxt, LocalTy, Needs, + struct_span_err, BreakableCtxt, Diverges, Expectation, FnCtxt, LocalTy, Needs, RawTy, TupleArgumentsFlag, }; use rustc_ast as ast; @@ -1231,13 +1231,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); return None; } - Res::Def(DefKind::Variant, _) => match ty.kind() { + Res::Def(DefKind::Variant, _) => match ty.normalized.kind() { ty::Adt(adt, substs) => Some((adt.variant_of_res(def), adt.did(), substs)), - _ => bug!("unexpected type: {:?}", ty), + _ => bug!("unexpected type: {:?}", ty.normalized), }, Res::Def(DefKind::Struct | DefKind::Union | DefKind::TyAlias | DefKind::AssocTy, _) | Res::SelfTyParam { .. } - | Res::SelfTyAlias { .. } => match ty.kind() { + | Res::SelfTyAlias { .. } => match ty.normalized.kind() { ty::Adt(adt, substs) if !adt.is_enum() => { Some((adt.non_enum_variant(), adt.did(), substs)) } @@ -1248,14 +1248,18 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { if let Some((variant, did, substs)) = variant { debug!("check_struct_path: did={:?} substs={:?}", did, substs); - self.write_user_type_annotation_from_substs(hir_id, did, substs, None); + + // FIXME(aliemjay): We're using UserSelfTy unconditionally here because it is the only + // way to register the raw user ty, because `substs` is normalized. + let self_ty = ty::UserSelfTy { impl_def_id: did, self_ty: ty.raw }; + self.write_user_type_annotation_from_substs(hir_id, did, substs, Some(self_ty)); // Check bounds on type arguments used in the path. self.add_required_obligations_for_hir(path_span, did, substs, hir_id); - Some((variant, ty)) + Some((variant, ty.normalized)) } else { - match ty.kind() { + match ty.normalized.kind() { ty::Error(_) => { // E0071 might be caused by a spelling error, which will have // already caused an error message and probably a suggestion @@ -1268,7 +1272,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { path_span, E0071, "expected struct, variant or union type, found {}", - ty.sort_string(self.tcx) + ty.normalized.sort_string(self.tcx) ) .span_label(path_span, "not a struct") .emit(); @@ -1656,20 +1660,21 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { qpath: &QPath<'_>, path_span: Span, hir_id: hir::HirId, - ) -> (Res, Ty<'tcx>) { + ) -> (Res, RawTy<'tcx>) { match *qpath { QPath::Resolved(ref maybe_qself, ref path) => { - let self_ty = maybe_qself.as_ref().map(|qself| self.to_ty(qself)); + let self_ty = maybe_qself.as_ref().map(|qself| self.to_ty(qself).raw); let ty = >::res_to_ty(self, self_ty, path, true); - (path.res, ty) + (path.res, self.create_raw_ty(path_span, ty)) } QPath::TypeRelative(ref qself, ref segment) => { let ty = self.to_ty(qself); let result = >::associated_path_to_ty( - self, hir_id, path_span, ty, qself, segment, true, + self, hir_id, path_span, ty.raw, qself, segment, true, ); let ty = result.map(|(ty, _, _)| ty).unwrap_or_else(|_| self.tcx().ty_error()); + let ty = self.create_raw_ty(path_span, ty); let result = result.map(|(_, kind, def_id)| (kind, def_id)); // Write back the new resolution. @@ -1678,7 +1683,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { (result.map_or(Res::Err, |(kind, def_id)| Res::Def(kind, def_id)), ty) } QPath::LangItem(lang_item, span, id) => { - self.resolve_lang_item_path(lang_item, span, hir_id, id) + let (res, ty) = self.resolve_lang_item_path(lang_item, span, hir_id, id); + (res, self.create_raw_ty(path_span, ty)) } } } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs index 30b59da7852d..d7e53a0aa047 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs @@ -17,8 +17,7 @@ use rustc_infer::infer::error_reporting::TypeErrCtxt; use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind}; use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind}; use rustc_middle::ty::subst::GenericArgKind; -use rustc_middle::ty::visit::TypeVisitable; -use rustc_middle::ty::{self, Const, Ty, TyCtxt}; +use rustc_middle::ty::{self, Const, Ty, TyCtxt, TypeVisitable}; use rustc_session::Session; use rustc_span::symbol::Ident; use rustc_span::{self, Span}; @@ -298,7 +297,7 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { self.tcx().mk_projection(item_def_id, item_substs) } - fn normalize_ty(&self, span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { + fn normalize_ty_2(&self, span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { if ty.has_escaping_bound_vars() { ty // FIXME: normalization and escaping regions } else { @@ -310,7 +309,19 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { self.infcx.set_tainted_by_errors(e) } - fn record_ty(&self, hir_id: hir::HirId, ty: Ty<'tcx>, _span: Span) { - self.write_ty(hir_id, ty) + fn record_ty(&self, hir_id: hir::HirId, ty: Ty<'tcx>, span: Span) { + self.write_ty(hir_id, self.normalize_ty_2(span, ty)) } } + +/// Represents a user-provided type in the raw form (never normalized). +/// +/// This is a bridge between the interface of `AstConv`, which outputs a raw `Ty`, +/// and the API in this module, which expect `Ty` to be fully normalized. +#[derive(Clone, Copy, Debug)] +pub struct RawTy<'tcx> { + pub raw: Ty<'tcx>, + + /// The normalized form of `raw`, stored here for efficiency. + pub normalized: Ty<'tcx>, +} diff --git a/compiler/rustc_hir_typeck/src/gather_locals.rs b/compiler/rustc_hir_typeck/src/gather_locals.rs index 9a096f24fac0..15dd3412c340 100644 --- a/compiler/rustc_hir_typeck/src/gather_locals.rs +++ b/compiler/rustc_hir_typeck/src/gather_locals.rs @@ -77,7 +77,8 @@ impl<'a, 'tcx> GatherLocalsVisitor<'a, 'tcx> { Some(ref ty) => { let o_ty = self.fcx.to_ty(&ty); - let c_ty = self.fcx.inh.infcx.canonicalize_user_type_annotation(UserType::Ty(o_ty)); + let c_ty = + self.fcx.inh.infcx.canonicalize_user_type_annotation(UserType::Ty(o_ty.raw)); debug!("visit_local: ty.hir_id={:?} o_ty={:?} c_ty={:?}", ty.hir_id, o_ty, c_ty); self.fcx .typeck_results @@ -85,7 +86,7 @@ impl<'a, 'tcx> GatherLocalsVisitor<'a, 'tcx> { .user_provided_types_mut() .insert(ty.hir_id, c_ty); - Some(LocalTy { decl_ty: o_ty, revealed_ty: o_ty }) + Some(LocalTy { decl_ty: o_ty.normalized, revealed_ty: o_ty.normalized }) } None => None, }; diff --git a/compiler/rustc_hir_typeck/src/lib.rs b/compiler/rustc_hir_typeck/src/lib.rs index 99e09b86a232..69929589541f 100644 --- a/compiler/rustc_hir_typeck/src/lib.rs +++ b/compiler/rustc_hir_typeck/src/lib.rs @@ -297,7 +297,7 @@ fn typeck_with_fallback<'tcx>( fcx.resolve_generator_interiors(def_id.to_def_id()); for (ty, span, code) in fcx.deferred_sized_obligations.borrow_mut().drain(..) { - let ty = fcx.normalize_ty(span, ty); + let ty = fcx.normalize(span, ty); fcx.require_type_is_sized(ty, span, code); } diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index 218c54688aa3..f2a41720b605 100644 --- a/compiler/rustc_hir_typeck/src/method/confirm.rs +++ b/compiler/rustc_hir_typeck/src/method/confirm.rs @@ -372,7 +372,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { .into() } (GenericParamDefKind::Type { .. }, GenericArg::Type(ty)) => { - self.cfcx.to_ty(ty).into() + self.cfcx.to_ty(ty).raw.into() } (GenericParamDefKind::Const { .. }, GenericArg::Const(ct)) => { self.cfcx.const_arg_to_const(&ct.value, param.def_id).into() @@ -397,7 +397,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { self.cfcx.var_for_def(self.cfcx.span, param) } } - >::create_substs_for_generic_args( + let substs = >::create_substs_for_generic_args( self.tcx, pick.item.def_id, parent_substs, @@ -405,7 +405,9 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { None, &arg_count_correct, &mut MethodSubstsCtxt { cfcx: self, pick, seg }, - ) + ); + // FIXME(aliemjay): Type annotation should be registered before normalization. + self.normalize(self.span, substs) } fn unify_receivers( diff --git a/compiler/rustc_hir_typeck/src/pat.rs b/compiler/rustc_hir_typeck/src/pat.rs index e0304fa2d3b9..1075378a1595 100644 --- a/compiler/rustc_hir_typeck/src/pat.rs +++ b/compiler/rustc_hir_typeck/src/pat.rs @@ -1,4 +1,4 @@ -use crate::FnCtxt; +use crate::{FnCtxt, RawTy}; use rustc_ast as ast; use rustc_data_structures::fx::FxHashMap; use rustc_errors::{ @@ -842,7 +842,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &self, pat: &Pat<'tcx>, qpath: &hir::QPath<'_>, - path_resolution: (Res, Option>, &'tcx [hir::PathSegment<'tcx>]), + path_resolution: (Res, Option>, &'tcx [hir::PathSegment<'tcx>]), expected: Ty<'tcx>, ti: TopInfo<'tcx>, ) -> Ty<'tcx> { diff --git a/compiler/rustc_traits/src/type_op.rs b/compiler/rustc_traits/src/type_op.rs index 7f964afde80f..f6eca9774303 100644 --- a/compiler/rustc_traits/src/type_op.rs +++ b/compiler/rustc_traits/src/type_op.rs @@ -91,6 +91,7 @@ pub fn type_op_ascribe_user_type_with_span<'tcx>( } if let Some(UserSelfTy { impl_def_id, self_ty }) = user_self_ty { + let self_ty = ocx.normalize(&cause, param_env, self_ty); let impl_self_ty = tcx.bound_type_of(impl_def_id).subst(tcx, substs); let impl_self_ty = ocx.normalize(&cause, param_env, impl_self_ty); diff --git a/src/test/ui/const-generics/issue-97007.rs b/src/test/ui/const-generics/issue-97007.rs index 7036834c4b11..7b9b9701ff11 100644 --- a/src/test/ui/const-generics/issue-97007.rs +++ b/src/test/ui/const-generics/issue-97007.rs @@ -1,4 +1,8 @@ -// check-pass +//~ ERROR broken MIR + +// known-bug +// failure-status: 101 +// rustc-env: RUSTC_BACKTRACE=0 #![feature(adt_const_params, generic_const_exprs)] #![allow(incomplete_features)] diff --git a/src/test/ui/generic-associated-types/issue-91139.rs b/src/test/ui/generic-associated-types/issue-91139.rs index e321da53d566..adc0cb4e0423 100644 --- a/src/test/ui/generic-associated-types/issue-91139.rs +++ b/src/test/ui/generic-associated-types/issue-91139.rs @@ -14,14 +14,6 @@ fn foo() { let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); //~^ ERROR `T` does not live long enough //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` does not live long enough - //~| ERROR `T` may not live long enough - //~| ERROR `T` may not live long enough // // FIXME: This error is bogus, but it arises because we try to validate // that `<() as Foo>::Type<'a>` is valid, which requires proving diff --git a/src/test/ui/generic-associated-types/issue-91139.stderr b/src/test/ui/generic-associated-types/issue-91139.stderr index 5485570cecd7..d9d76adfbb55 100644 --- a/src/test/ui/generic-associated-types/issue-91139.stderr +++ b/src/test/ui/generic-associated-types/issue-91139.stderr @@ -10,64 +10,5 @@ error: `T` does not live long enough LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:12 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: aborting due to 2 previous errors -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:12 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0310]: the parameter type `T` may not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^ ...so that the type `T` will meet its required lifetime bounds - | -help: consider adding an explicit lifetime bound... - | -LL | fn foo() { - | +++++++++ - -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^ - -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^ - -error[E0310]: the parameter type `T` may not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds - | -help: consider adding an explicit lifetime bound... - | -LL | fn foo() { - | +++++++++ - -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^ - -error: `T` does not live long enough - --> $DIR/issue-91139.rs:14:58 - | -LL | let _: for<'a> fn(<() as Foo>::Type<'a>, &'a T) = |_, _| (); - | ^^^^^^^^^ - -error: aborting due to 10 previous errors - -For more information about this error, try `rustc --explain E0310`. diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs b/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs index c10a0888a4f2..8aa29926d4f9 100644 --- a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs +++ b/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs @@ -7,6 +7,7 @@ trait SomeTrait<'a> { fn give_me_ice() { callee:: >::Associated>(); //~^ ERROR the trait bound `for<'a> T: SomeTrait<'a>` is not satisfied [E0277] + //~| ERROR the trait bound `for<'a> T: SomeTrait<'a>` is not satisfied [E0277] } fn callee>() { diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr b/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr index 25a4f6088deb..3240518fbbe0 100644 --- a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr +++ b/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr @@ -1,3 +1,14 @@ +error[E0277]: the trait bound `for<'a> T: SomeTrait<'a>` is not satisfied + --> $DIR/issue-85455.rs:8:14 + | +LL | callee:: >::Associated>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `for<'a> SomeTrait<'a>` is not implemented for `T` + | +help: consider restricting type parameter `T` + | +LL | fn give_me_ice SomeTrait<'a>>() { + | +++++++++++++++++++++++ + error[E0277]: the trait bound `for<'a> T: SomeTrait<'a>` is not satisfied --> $DIR/issue-85455.rs:8:5 | @@ -9,6 +20,6 @@ help: consider restricting type parameter `T` LL | fn give_me_ice SomeTrait<'a>>() { | +++++++++++++++++++++++ -error: aborting due to previous error +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs index 25f47f5b6f6c..260c16c17d4a 100644 --- a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs +++ b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs @@ -16,16 +16,6 @@ impl Trait for &'static () { fn main() { let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - //~^ ERROR lifetime may not live long enough - //~| ERROR higher-ranked subtype error - //~| ERROR higher-ranked subtype error - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough - //~| ERROR implementation of `Trait` is not general enough + //~^ ERROR implementation of `Trait` is not general enough //~| ERROR implementation of `Trait` is not general enough } diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr index dbd5dabd1dac..46dba0064339 100644 --- a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr +++ b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr @@ -1,33 +1,3 @@ -error: lifetime may not live long enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^-^ - | || - | |has type `<&'1 () as Trait>::Ty` - | requires that `'1` must outlive `'static` - -error: higher-ranked subtype error - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^ - -error: higher-ranked subtype error - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^ - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - error: implementation of `Trait` is not general enough --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 | @@ -46,59 +16,5 @@ LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... = note: ...but `Trait` is actually implemented for the type `&'static ()` -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: implementation of `Trait` is not general enough - --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 - | -LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; - | ^^^^^^ implementation of `Trait` is not general enough - | - = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... - = note: ...but `Trait` is actually implemented for the type `&'static ()` - -error: aborting due to 12 previous errors +error: aborting due to 2 previous errors diff --git a/src/test/ui/nll/user-annotations/ascribed-type-wf.rs b/src/test/ui/nll/user-annotations/ascribed-type-wf.rs index 14460dea5b52..5db02c46ec36 100644 --- a/src/test/ui/nll/user-annotations/ascribed-type-wf.rs +++ b/src/test/ui/nll/user-annotations/ascribed-type-wf.rs @@ -1,5 +1,5 @@ -// check-pass -// known-bug: #101350 +// Regression test for #101350. +// check-fail trait Trait { type Ty; @@ -11,6 +11,7 @@ impl Trait for &'static () { fn extend<'a>() { None::<<&'a () as Trait>::Ty>; + //~^ ERROR lifetime may not live long enough } fn main() {} diff --git a/src/test/ui/nll/user-annotations/ascribed-type-wf.stderr b/src/test/ui/nll/user-annotations/ascribed-type-wf.stderr new file mode 100644 index 000000000000..91e7c6b8ecf1 --- /dev/null +++ b/src/test/ui/nll/user-annotations/ascribed-type-wf.stderr @@ -0,0 +1,10 @@ +error: lifetime may not live long enough + --> $DIR/ascribed-type-wf.rs:13:5 + | +LL | fn extend<'a>() { + | -- lifetime `'a` defined here +LL | None::<<&'a () as Trait>::Ty>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: aborting due to previous error + diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs index ccda9129daba..8a80958fc672 100644 --- a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs +++ b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs @@ -11,8 +11,10 @@ struct SomeStruct { t: T } #[rustc_dump_user_substs] fn main() { SomeStruct { t: 22 }; // Nothing given, no annotation. + //~^ ERROR SomeStruct<^0> SomeStruct::<_> { t: 22 }; // Nothing interesting given, no annotation. + //~^ ERROR SomeStruct<^0> SomeStruct:: { t: 22 }; // No lifetime bounds given. diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr index 5860621909ce..b5adc584b288 100644 --- a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr +++ b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr @@ -1,8 +1,20 @@ -error: user substs: UserSubsts { substs: [&ReStatic u32], user_self_ty: None } - --> $DIR/dump-adt-brace-struct.rs:19:5 +error: user substs: UserSubsts { substs: [^0], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<^0> }) } + --> $DIR/dump-adt-brace-struct.rs:13:5 + | +LL | SomeStruct { t: 22 }; // Nothing given, no annotation. + | ^^^^^^^^^^^^^^^^^^^^ + +error: user substs: UserSubsts { substs: [^0], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<^0> }) } + --> $DIR/dump-adt-brace-struct.rs:16:5 + | +LL | SomeStruct::<_> { t: 22 }; // Nothing interesting given, no annotation. + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: user substs: UserSubsts { substs: [&ReStatic u32], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<&ReStatic u32> }) } + --> $DIR/dump-adt-brace-struct.rs:21:5 | LL | SomeStruct::<&'static u32> { t: &22 }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to previous error +error: aborting due to 3 previous errors diff --git a/src/test/ui/nll/user-annotations/normalization-2.rs b/src/test/ui/nll/user-annotations/normalization-2.rs new file mode 100644 index 000000000000..00e9eb651cd2 --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-2.rs @@ -0,0 +1,80 @@ +// Make sure we honor region constraints when normalizing type annotations. + +// check-fail + +#![feature(more_qualified_paths)] + +trait Trait { + type Assoc; +} + +impl Trait for T +where + T: 'static, +{ + type Assoc = MyTy<()>; +} + +enum MyTy { + Unit, + Tuple(), + Struct {}, + Dumb(T), +} + +impl MyTy { + fn method() {} +} + +type Ty<'a> = <&'a () as Trait>::Assoc; + +fn test_local<'a>() { + let _: Ty<'a> = MyTy::Unit; + //~^ ERROR lifetime may not live long enough +} + +fn test_closure_sig<'a, 'b>() { + |_: Ty<'a>| {}; + //~^ ERROR lifetime may not live long enough + || -> Option> { None }; + //~^ ERROR lifetime may not live long enough +} + +fn test_path<'a, 'b, 'c, 'd>() { + >::method::>; + //~^ ERROR lifetime may not live long enough + >::method::>; + //~^ ERROR lifetime may not live long enough +} + +fn test_call<'a, 'b, 'c>() { + >::method::>(); + //~^ ERROR lifetime may not live long enough + >::method::>(); + //~^ ERROR lifetime may not live long enough +} + +fn test_variants<'a, 'b, 'c>() { + >::Struct {}; //TODO + //~^ ERROR lifetime may not live long enough + >::Tuple(); + //~^ ERROR lifetime may not live long enough + >::Unit; + //~^ ERROR lifetime may not live long enough +} + +fn test_pattern<'a, 'b, 'c>() { + use MyTy::*; + match MyTy::Unit { + Struct::> {..} => {}, + //~^ ERROR lifetime may not live long enough + Tuple::> (..) => {}, + //~^ ERROR lifetime may not live long enough + Unit::> => {}, + //~^ ERROR lifetime may not live long enough + Dumb(_) => {}, + }; +} + + +fn main() {} diff --git a/src/test/ui/nll/user-annotations/normalization-2.stderr b/src/test/ui/nll/user-annotations/normalization-2.stderr new file mode 100644 index 000000000000..3c235171ef56 --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-2.stderr @@ -0,0 +1,141 @@ +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:32:12 + | +LL | fn test_local<'a>() { + | -- lifetime `'a` defined here +LL | let _: Ty<'a> = MyTy::Unit; + | ^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:37:6 + | +LL | fn test_closure_sig<'a, 'b>() { + | -- lifetime `'a` defined here +LL | |_: Ty<'a>| {}; + | ^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:39:11 + | +LL | fn test_closure_sig<'a, 'b>() { + | -- lifetime `'b` defined here +... +LL | || -> Option> { None }; + | ^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:44:5 + | +LL | fn test_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'a` defined here +LL | >::method::>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:46:5 + | +LL | fn test_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'b` defined here +... +LL | >::method::>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:51:5 + | +LL | fn test_call<'a, 'b, 'c>() { + | -- lifetime `'a` defined here +LL | >::method::>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:53:5 + | +LL | fn test_call<'a, 'b, 'c>() { + | -- lifetime `'b` defined here +... +LL | >::method::>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:58:5 + | +LL | fn test_variants<'a, 'b, 'c>() { + | -- lifetime `'a` defined here +LL | >::Struct {}; //TODO + | ^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:60:5 + | +LL | fn test_variants<'a, 'b, 'c>() { + | -- lifetime `'b` defined here +... +LL | >::Tuple(); + | ^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:62:5 + | +LL | fn test_variants<'a, 'b, 'c>() { + | -- lifetime `'c` defined here +... +LL | >::Unit; + | ^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + = help: replace `'c` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:69:9 + | +LL | fn test_pattern<'a, 'b, 'c>() { + | -- lifetime `'a` defined here +... +LL | Struct::> {..} => {}, + | ^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:71:9 + | +LL | fn test_pattern<'a, 'b, 'c>() { + | -- lifetime `'b` defined here +... +LL | Tuple::> (..) => {}, + | ^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:73:9 + | +LL | fn test_pattern<'a, 'b, 'c>() { + | -- lifetime `'c` defined here +... +LL | Unit::> => {}, + | ^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + = help: replace `'c` with `'static` + +error: aborting due to 13 previous errors + diff --git a/src/test/ui/ufcs/ufcs-partially-resolved.stderr b/src/test/ui/ufcs/ufcs-partially-resolved.stderr index 3950dc9877cd..5f7f6aa9f6ec 100644 --- a/src/test/ui/ufcs/ufcs-partially-resolved.stderr +++ b/src/test/ui/ufcs/ufcs-partially-resolved.stderr @@ -205,7 +205,7 @@ error[E0223]: ambiguous associated type --> $DIR/ufcs-partially-resolved.rs:36:12 | LL | let _: ::Y::NN; - | ^^^^^^^^^^^^^^^^^ help: use fully-qualified syntax: `::NN` + | ^^^^^^^^^^^^^^^^^ help: use fully-qualified syntax: `<::Y as Trait>::NN` error[E0599]: no associated item named `NN` found for type `u16` in the current scope --> $DIR/ufcs-partially-resolved.rs:38:20 From 34329d6f6c73a6f0080e169007d099a40db3aea1 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Sat, 29 Oct 2022 16:19:57 +0300 Subject: [PATCH 269/478] introduce AstConv::probe_adt --- .../rustc_hir_analysis/src/astconv/mod.rs | 22 +++++++++++++------ compiler/rustc_hir_analysis/src/collect.rs | 5 +++++ .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 13 ++++++----- compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs | 17 +++++++++----- 4 files changed, 38 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/astconv/mod.rs b/compiler/rustc_hir_analysis/src/astconv/mod.rs index bcb695cc8e3c..df6600626a30 100644 --- a/compiler/rustc_hir_analysis/src/astconv/mod.rs +++ b/compiler/rustc_hir_analysis/src/astconv/mod.rs @@ -106,9 +106,12 @@ pub trait AstConv<'tcx> { poly_trait_ref: ty::PolyTraitRef<'tcx>, ) -> Ty<'tcx>; - fn normalize_ty_2(&self, _span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { - ty - } + /// Returns `AdtDef` if `ty` is an ADT. + /// Note that `ty` might be a projection type that needs normalization. + /// This used to get the enum variants in scope of the type. + /// For example, `Self::A` could refer to an associated type + /// or to an enum variant depending on the result of this function. + fn probe_adt(&self, span: Span, ty: Ty<'tcx>) -> Option>; /// Invoked when we encounter an error from some prior pass /// (e.g., resolve) that is translated into a ty-error. This is @@ -1805,7 +1808,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { // Check if we have an enum variant. let mut variant_resolution = None; - if let ty::Adt(adt_def, adt_substs) = self.normalize_ty_2(span, qself_ty).kind() { + if let Some(adt_def) = self.probe_adt(span, qself_ty) { if adt_def.is_enum() { let variant_def = adt_def .variants() @@ -1907,6 +1910,10 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { let Some(assoc_ty_did) = self.lookup_assoc_ty(assoc_ident, hir_ref_id, span, impl_) else { continue; }; + let ty::Adt(_, adt_substs) = qself_ty.kind() else { + // FIXME(inherent_associated_types) + bug!("unimplemented: non-adt self of inherent assoc ty"); + }; let item_substs = self.create_substs_for_associated_item( span, assoc_ty_did, @@ -2262,6 +2269,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { self_ty: Option>, kind: DefKind, def_id: DefId, + span: Span, ) -> Vec { // We need to extract the type parameters supplied by the user in // the path `path`. Due to the current setup, this is a bit of a @@ -2329,8 +2337,8 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { // Case 2. Reference to a variant constructor. DefKind::Ctor(CtorOf::Variant, ..) | DefKind::Variant => { - let adt_def = self_ty.map(|t| t.ty_adt_def().unwrap()); - let (generics_def_id, index) = if let Some(adt_def) = adt_def { + let (generics_def_id, index) = if let Some(self_ty) = self_ty { + let adt_def = self.probe_adt(span, self_ty).unwrap(); debug_assert!(adt_def.is_enum()); (adt_def.did(), last) } else if last >= 1 && segments[last - 1].args.is_some() { @@ -2426,7 +2434,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { assert_eq!(opt_self_ty, None); let path_segs = - self.def_ids_for_value_path_segments(path.segments, None, kind, def_id); + self.def_ids_for_value_path_segments(path.segments, None, kind, def_id, span); let generic_segs: FxHashSet<_> = path_segs.iter().map(|PathSeg(_, index)| index).collect(); self.prohibit_generics( diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs index fd54aec480ab..b7f259668a1e 100644 --- a/compiler/rustc_hir_analysis/src/collect.rs +++ b/compiler/rustc_hir_analysis/src/collect.rs @@ -505,6 +505,11 @@ impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx> { } } + fn probe_adt(&self, _span: Span, ty: Ty<'tcx>) -> Option> { + // FIXME(#103640): Should we handle the case where `ty` is a projection? + ty.ty_adt_def() + } + fn set_tainted_by_errors(&self, _: ErrorGuaranteed) { // There's no obvious place to track this, so just let it go. } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 3e05f67b74bc..6c2dfaf4413b 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -1007,9 +1007,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { Res::Def(kind, def_id) => >::def_ids_for_value_path_segments( self, segments, - self_ty.map(|ty| ty.normalized), + self_ty.map(|ty| ty.raw), kind, def_id, + span, ), _ => bug!("instantiate_value_path on {:?}", res), }; @@ -1122,7 +1123,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .unwrap_or(false); let (res, self_ctor_substs) = if let Res::SelfCtor(impl_def_id) = res { - let ty = self.normalize_ty_2(span, tcx.at(span).type_of(impl_def_id)); + let ty = tcx.at(span).type_of(impl_def_id); + let ty = self.normalize(span, ty); match *ty.kind() { ty::Adt(adt_def, substs) if adt_def.has_ctor() => { let variant = adt_def.non_enum_variant(); @@ -1238,10 +1240,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // If we have a default, then we it doesn't matter that we're not // inferring the type arguments: we provide the default where any // is missing. - let default = tcx.bound_type_of(param.def_id); - self.fcx - .normalize_ty_2(self.span, default.subst(tcx, substs.unwrap())) - .into() + let default = + tcx.bound_type_of(param.def_id).subst(tcx, substs.unwrap()); + self.fcx.normalize(self.span, default).into() } else { // If no type arguments were provided, we have to infer them. // This case also occurs as a result of some malformed input, e.g. diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs index d7e53a0aa047..6347b9a69a00 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs @@ -297,11 +297,14 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { self.tcx().mk_projection(item_def_id, item_substs) } - fn normalize_ty_2(&self, span: Span, ty: Ty<'tcx>) -> Ty<'tcx> { - if ty.has_escaping_bound_vars() { - ty // FIXME: normalization and escaping regions - } else { - self.normalize(span, ty) + fn probe_adt(&self, span: Span, ty: Ty<'tcx>) -> Option> { + match ty.kind() { + ty::Adt(adt_def, _) => Some(*adt_def), + // FIXME(#104767): Should we handle bound regions here? + ty::Alias(ty::Projection, _) if !ty.has_escaping_bound_vars() => { + self.normalize(span, ty).ty_adt_def() + } + _ => None, } } @@ -310,7 +313,9 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { } fn record_ty(&self, hir_id: hir::HirId, ty: Ty<'tcx>, span: Span) { - self.write_ty(hir_id, self.normalize_ty_2(span, ty)) + // FIXME: normalization and escaping regions + let ty = if !ty.has_escaping_bound_vars() { self.normalize(span, ty) } else { ty }; + self.write_ty(hir_id, ty) } } From be5a45d39240ab3f6410c4808b0840142c657228 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Mon, 31 Oct 2022 11:45:11 +0300 Subject: [PATCH 270/478] fix struct path --- Cargo.lock | 1 + compiler/rustc_hir_typeck/Cargo.toml | 1 + .../rustc_hir_typeck/src/fn_ctxt/checks.rs | 38 ++++++--- src/test/ui/const-generics/issue-97007.rs | 6 +- .../user-annotations/dump-adt-brace-struct.rs | 2 - .../dump-adt-brace-struct.stderr | 18 +--- .../nll/user-annotations/normalization-2.rs | 36 +++++++- .../user-annotations/normalization-2.stderr | 83 +++++++++++++++---- 8 files changed, 137 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4f48506b5af4..fd55c121bc4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4134,6 +4134,7 @@ dependencies = [ name = "rustc_hir_typeck" version = "0.1.0" dependencies = [ + "either", "rustc_ast", "rustc_data_structures", "rustc_errors", diff --git a/compiler/rustc_hir_typeck/Cargo.toml b/compiler/rustc_hir_typeck/Cargo.toml index 093f9bb84486..114b2d37fb89 100644 --- a/compiler/rustc_hir_typeck/Cargo.toml +++ b/compiler/rustc_hir_typeck/Cargo.toml @@ -8,6 +8,7 @@ edition = "2021" [dependencies] smallvec = { version = "1.8.1", features = ["union", "may_dangle"] } tracing = "0.1" +either = "1.5.0" rustc_ast = { path = "../rustc_ast" } rustc_data_structures = { path = "../rustc_data_structures" } rustc_errors = { path = "../rustc_errors" } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 6a822568775b..92a0b9785d04 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -32,6 +32,8 @@ use rustc_span::symbol::{kw, Ident}; use rustc_span::{self, sym, Span}; use rustc_trait_selection::traits::{self, ObligationCauseCode, SelectionContext}; +use either::Either; + use std::iter; use std::mem; use std::ops::ControlFlow; @@ -1231,28 +1233,44 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); return None; } - Res::Def(DefKind::Variant, _) => match ty.normalized.kind() { - ty::Adt(adt, substs) => Some((adt.variant_of_res(def), adt.did(), substs)), + Res::Def(DefKind::Variant, _) => match (ty.raw.kind(), ty.normalized.kind()) { + (ty::Adt(adt, substs), _) => { + Some((adt.variant_of_res(def), adt.did(), substs, Either::Left(substs))) + } + (_, ty::Adt(adt, substs)) => { + Some((adt.variant_of_res(def), adt.did(), substs, Either::Right(ty.raw))) + } _ => bug!("unexpected type: {:?}", ty.normalized), }, Res::Def(DefKind::Struct | DefKind::Union | DefKind::TyAlias | DefKind::AssocTy, _) | Res::SelfTyParam { .. } - | Res::SelfTyAlias { .. } => match ty.normalized.kind() { - ty::Adt(adt, substs) if !adt.is_enum() => { - Some((adt.non_enum_variant(), adt.did(), substs)) + | Res::SelfTyAlias { .. } => match (ty.raw.kind(), ty.normalized.kind()) { + (ty::Adt(adt, substs), _) if !adt.is_enum() => { + Some((adt.non_enum_variant(), adt.did(), substs, Either::Left(substs))) + } + (_, ty::Adt(adt, substs)) if !adt.is_enum() => { + Some((adt.non_enum_variant(), adt.did(), substs, Either::Right(ty.raw))) } _ => None, }, _ => bug!("unexpected definition: {:?}", def), }; - if let Some((variant, did, substs)) = variant { + if let Some((variant, did, substs, user_annotation)) = variant { debug!("check_struct_path: did={:?} substs={:?}", did, substs); - // FIXME(aliemjay): We're using UserSelfTy unconditionally here because it is the only - // way to register the raw user ty, because `substs` is normalized. - let self_ty = ty::UserSelfTy { impl_def_id: did, self_ty: ty.raw }; - self.write_user_type_annotation_from_substs(hir_id, did, substs, Some(self_ty)); + // Register type annotation. + self.probe(|_| { + // UserSubsts and UserSelfTy are mutually exclusive here. + let (user_substs, self_ty) = match user_annotation { + Either::Left(substs) => (*substs, None), + Either::Right(self_ty) => { + (self.fresh_substs_for_item(path_span, did), Some(self_ty)) + } + }; + let self_ty = self_ty.map(|self_ty| ty::UserSelfTy { impl_def_id: did, self_ty }); + self.write_user_type_annotation_from_substs(hir_id, did, user_substs, self_ty); + }); // Check bounds on type arguments used in the path. self.add_required_obligations_for_hir(path_span, did, substs, hir_id); diff --git a/src/test/ui/const-generics/issue-97007.rs b/src/test/ui/const-generics/issue-97007.rs index 7b9b9701ff11..7036834c4b11 100644 --- a/src/test/ui/const-generics/issue-97007.rs +++ b/src/test/ui/const-generics/issue-97007.rs @@ -1,8 +1,4 @@ -//~ ERROR broken MIR - -// known-bug -// failure-status: 101 -// rustc-env: RUSTC_BACKTRACE=0 +// check-pass #![feature(adt_const_params, generic_const_exprs)] #![allow(incomplete_features)] diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs index 8a80958fc672..ccda9129daba 100644 --- a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs +++ b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs @@ -11,10 +11,8 @@ struct SomeStruct { t: T } #[rustc_dump_user_substs] fn main() { SomeStruct { t: 22 }; // Nothing given, no annotation. - //~^ ERROR SomeStruct<^0> SomeStruct::<_> { t: 22 }; // Nothing interesting given, no annotation. - //~^ ERROR SomeStruct<^0> SomeStruct:: { t: 22 }; // No lifetime bounds given. diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr index b5adc584b288..5860621909ce 100644 --- a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr +++ b/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr @@ -1,20 +1,8 @@ -error: user substs: UserSubsts { substs: [^0], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<^0> }) } - --> $DIR/dump-adt-brace-struct.rs:13:5 - | -LL | SomeStruct { t: 22 }; // Nothing given, no annotation. - | ^^^^^^^^^^^^^^^^^^^^ - -error: user substs: UserSubsts { substs: [^0], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<^0> }) } - --> $DIR/dump-adt-brace-struct.rs:16:5 - | -LL | SomeStruct::<_> { t: 22 }; // Nothing interesting given, no annotation. - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: user substs: UserSubsts { substs: [&ReStatic u32], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ dump_adt_brace_struct[4679]::SomeStruct), self_ty: SomeStruct<&ReStatic u32> }) } - --> $DIR/dump-adt-brace-struct.rs:21:5 +error: user substs: UserSubsts { substs: [&ReStatic u32], user_self_ty: None } + --> $DIR/dump-adt-brace-struct.rs:19:5 | LL | SomeStruct::<&'static u32> { t: &22 }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 3 previous errors +error: aborting due to previous error diff --git a/src/test/ui/nll/user-annotations/normalization-2.rs b/src/test/ui/nll/user-annotations/normalization-2.rs index 00e9eb651cd2..92600155c7f0 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.rs +++ b/src/test/ui/nll/user-annotations/normalization-2.rs @@ -24,6 +24,7 @@ enum MyTy { impl MyTy { fn method() {} + fn method2(&self) {} } type Ty<'a> = <&'a () as Trait>::Assoc; @@ -45,6 +46,9 @@ fn test_path<'a, 'b, 'c, 'd>() { //~^ ERROR lifetime may not live long enough >::method::>; //~^ ERROR lifetime may not live long enough + + MyTy::Unit::>; + //~^ ERROR lifetime may not live long enough } fn test_call<'a, 'b, 'c>() { @@ -55,7 +59,7 @@ fn test_call<'a, 'b, 'c>() { } fn test_variants<'a, 'b, 'c>() { - >::Struct {}; //TODO + >::Struct {}; //~^ ERROR lifetime may not live long enough >::Tuple(); //~^ ERROR lifetime may not live long enough @@ -63,6 +67,36 @@ fn test_variants<'a, 'b, 'c>() { //~^ ERROR lifetime may not live long enough } +fn test_method_call<'a>(x: MyTy<()>) { + // FIXME This should fail. + x.method2::>(); +} + +fn test_struct_path<'a, 'b, 'c, 'd>() { + struct Struct { x: Option, } + + trait Project { + type Struct; + type Enum; + } + impl Project for T { + type Struct = Struct<()>; + type Enum = MyTy<()>; + } + + // Resolves to enum variant + MyTy::>::Struct {}; // without SelfTy + //~^ ERROR lifetime may not live long enough + as Project>::Enum::Struct {}; // with SelfTy + //~^ ERROR lifetime may not live long enough + + // Resolves to struct and associated type respectively + Struct::> { x: None, }; // without SelfTy + //~^ ERROR lifetime may not live long enough + as Project>::Struct { x: None, }; // with SelfTy + //~^ ERROR lifetime may not live long enough +} + fn test_pattern<'a, 'b, 'c>() { use MyTy::*; match MyTy::Unit { diff --git a/src/test/ui/nll/user-annotations/normalization-2.stderr b/src/test/ui/nll/user-annotations/normalization-2.stderr index 3c235171ef56..5dbdb2ecea85 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.stderr +++ b/src/test/ui/nll/user-annotations/normalization-2.stderr @@ -1,5 +1,5 @@ error: lifetime may not live long enough - --> $DIR/normalization-2.rs:32:12 + --> $DIR/normalization-2.rs:33:12 | LL | fn test_local<'a>() { | -- lifetime `'a` defined here @@ -7,7 +7,7 @@ LL | let _: Ty<'a> = MyTy::Unit; | ^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:37:6 + --> $DIR/normalization-2.rs:38:6 | LL | fn test_closure_sig<'a, 'b>() { | -- lifetime `'a` defined here @@ -15,7 +15,7 @@ LL | |_: Ty<'a>| {}; | ^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:39:11 + --> $DIR/normalization-2.rs:40:11 | LL | fn test_closure_sig<'a, 'b>() { | -- lifetime `'b` defined here @@ -29,7 +29,7 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:44:5 + --> $DIR/normalization-2.rs:45:5 | LL | fn test_path<'a, 'b, 'c, 'd>() { | -- lifetime `'a` defined here @@ -37,7 +37,7 @@ LL | >::method::>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:46:5 + --> $DIR/normalization-2.rs:47:5 | LL | fn test_path<'a, 'b, 'c, 'd>() { | -- lifetime `'b` defined here @@ -45,13 +45,23 @@ LL | fn test_path<'a, 'b, 'c, 'd>() { LL | >::method::>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:50:5 + | +LL | fn test_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'c` defined here +... +LL | MyTy::Unit::>; + | ^^^^^^^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` + help: the following changes may resolve your lifetime errors | = help: replace `'a` with `'static` = help: replace `'b` with `'static` + = help: replace `'c` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:51:5 + --> $DIR/normalization-2.rs:55:5 | LL | fn test_call<'a, 'b, 'c>() { | -- lifetime `'a` defined here @@ -59,7 +69,7 @@ LL | >::method::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:53:5 + --> $DIR/normalization-2.rs:57:5 | LL | fn test_call<'a, 'b, 'c>() { | -- lifetime `'b` defined here @@ -73,15 +83,15 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:58:5 + --> $DIR/normalization-2.rs:62:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'a` defined here -LL | >::Struct {}; //TODO +LL | >::Struct {}; | ^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:60:5 + --> $DIR/normalization-2.rs:64:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'b` defined here @@ -90,7 +100,7 @@ LL | >::Tuple(); | ^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:62:5 + --> $DIR/normalization-2.rs:66:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'c` defined here @@ -105,7 +115,50 @@ help: the following changes may resolve your lifetime errors = help: replace `'c` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:69:9 + --> $DIR/normalization-2.rs:88:5 + | +LL | fn test_struct_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'a` defined here +... +LL | MyTy::>::Struct {}; // without SelfTy + | ^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:90:5 + | +LL | fn test_struct_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'b` defined here +... +LL | as Project>::Enum::Struct {}; // with SelfTy + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:94:5 + | +LL | fn test_struct_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'c` defined here +... +LL | Struct::> { x: None, }; // without SelfTy + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:96:5 + | +LL | fn test_struct_path<'a, 'b, 'c, 'd>() { + | -- lifetime `'d` defined here +... +LL | as Project>::Struct { x: None, }; // with SelfTy + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'d` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + = help: replace `'c` with `'static` + = help: replace `'d` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:103:9 | LL | fn test_pattern<'a, 'b, 'c>() { | -- lifetime `'a` defined here @@ -114,7 +167,7 @@ LL | Struct::> {..} => {}, | ^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:71:9 + --> $DIR/normalization-2.rs:105:9 | LL | fn test_pattern<'a, 'b, 'c>() { | -- lifetime `'b` defined here @@ -123,7 +176,7 @@ LL | Tuple::> (..) => {}, | ^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:73:9 + --> $DIR/normalization-2.rs:107:9 | LL | fn test_pattern<'a, 'b, 'c>() { | -- lifetime `'c` defined here @@ -137,5 +190,5 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` = help: replace `'c` with `'static` -error: aborting due to 13 previous errors +error: aborting due to 18 previous errors From 37b40e471a62425cb34781bad763b5cb5047f13c Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Sat, 29 Oct 2022 20:13:40 +0300 Subject: [PATCH 271/478] fix method substs --- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 43 +----------------- .../rustc_hir_typeck/src/method/confirm.rs | 44 ++++++++++++++++++- .../nll/user-annotations/normalization-2.rs | 2 +- .../user-annotations/normalization-2.stderr | 10 ++++- 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 6c2dfaf4413b..e9e43950fb2b 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -24,7 +24,7 @@ use rustc_middle::ty::visit::TypeVisitable; use rustc_middle::ty::{ self, AdtKind, CanonicalUserType, DefIdTree, GenericParamDefKind, Ty, UserType, }; -use rustc_middle::ty::{GenericArgKind, InternalSubsts, SubstsRef, UserSelfTy, UserSubsts}; +use rustc_middle::ty::{GenericArgKind, SubstsRef, UserSelfTy, UserSubsts}; use rustc_session::lint; use rustc_span::def_id::LocalDefId; use rustc_span::hygiene::DesugaringKind; @@ -161,47 +161,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { pub fn write_method_call(&self, hir_id: hir::HirId, method: MethodCallee<'tcx>) { self.write_resolution(hir_id, Ok((DefKind::AssocFn, method.def_id))); self.write_substs(hir_id, method.substs); - - // When the method is confirmed, the `method.substs` includes - // parameters from not just the method, but also the impl of - // the method -- in particular, the `Self` type will be fully - // resolved. However, those are not something that the "user - // specified" -- i.e., those types come from the inferred type - // of the receiver, not something the user wrote. So when we - // create the user-substs, we want to replace those earlier - // types with just the types that the user actually wrote -- - // that is, those that appear on the *method itself*. - // - // As an example, if the user wrote something like - // `foo.bar::(...)` -- the `Self` type here will be the - // type of `foo` (possibly adjusted), but we don't want to - // include that. We want just the `[_, u32]` part. - if !method.substs.is_empty() { - let method_generics = self.tcx.generics_of(method.def_id); - if !method_generics.params.is_empty() { - let user_type_annotation = self.probe(|_| { - let user_substs = UserSubsts { - substs: InternalSubsts::for_item(self.tcx, method.def_id, |param, _| { - let i = param.index as usize; - if i < method_generics.parent_count { - self.var_for_def(DUMMY_SP, param) - } else { - method.substs[i] - } - }), - user_self_ty: None, // not relevant here - }; - - self.canonicalize_user_type_annotation(UserType::TypeOf( - method.def_id, - user_substs, - )) - }); - - debug!("write_method_call: user_type_annotation={:?}", user_type_annotation); - self.write_user_type_annotation(hir_id, user_type_annotation); - } - } } pub fn write_substs(&self, node_id: hir::HirId, substs: SubstsRef<'tcx>) { diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index f2a41720b605..a2c6e246610b 100644 --- a/compiler/rustc_hir_typeck/src/method/confirm.rs +++ b/compiler/rustc_hir_typeck/src/method/confirm.rs @@ -12,7 +12,8 @@ use rustc_middle::ty::adjustment::{AllowTwoPhase, AutoBorrow, AutoBorrowMutabili use rustc_middle::ty::fold::TypeFoldable; use rustc_middle::ty::subst::{self, SubstsRef}; use rustc_middle::ty::{self, GenericParamDefKind, Ty}; -use rustc_span::Span; +use rustc_middle::ty::{InternalSubsts, UserSubsts, UserType}; +use rustc_span::{Span, DUMMY_SP}; use rustc_trait_selection::traits; use std::iter; @@ -397,6 +398,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { self.cfcx.var_for_def(self.cfcx.span, param) } } + let substs = >::create_substs_for_generic_args( self.tcx, pick.item.def_id, @@ -406,7 +408,45 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { &arg_count_correct, &mut MethodSubstsCtxt { cfcx: self, pick, seg }, ); - // FIXME(aliemjay): Type annotation should be registered before normalization. + + // When the method is confirmed, the `substs` includes + // parameters from not just the method, but also the impl of + // the method -- in particular, the `Self` type will be fully + // resolved. However, those are not something that the "user + // specified" -- i.e., those types come from the inferred type + // of the receiver, not something the user wrote. So when we + // create the user-substs, we want to replace those earlier + // types with just the types that the user actually wrote -- + // that is, those that appear on the *method itself*. + // + // As an example, if the user wrote something like + // `foo.bar::(...)` -- the `Self` type here will be the + // type of `foo` (possibly adjusted), but we don't want to + // include that. We want just the `[_, u32]` part. + if !substs.is_empty() && !generics.params.is_empty() { + let user_type_annotation = self.probe(|_| { + let user_substs = UserSubsts { + substs: InternalSubsts::for_item(self.tcx, pick.item.def_id, |param, _| { + let i = param.index as usize; + if i < generics.parent_count { + self.fcx.var_for_def(DUMMY_SP, param) + } else { + substs[i] + } + }), + user_self_ty: None, // not relevant here + }; + + self.fcx.canonicalize_user_type_annotation(UserType::TypeOf( + pick.item.def_id, + user_substs, + )) + }); + + debug!("instantiate_method_substs: user_type_annotation={:?}", user_type_annotation); + self.fcx.write_user_type_annotation(self.call_expr.hir_id, user_type_annotation); + } + self.normalize(self.span, substs) } diff --git a/src/test/ui/nll/user-annotations/normalization-2.rs b/src/test/ui/nll/user-annotations/normalization-2.rs index 92600155c7f0..232b957d51f9 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.rs +++ b/src/test/ui/nll/user-annotations/normalization-2.rs @@ -68,8 +68,8 @@ fn test_variants<'a, 'b, 'c>() { } fn test_method_call<'a>(x: MyTy<()>) { - // FIXME This should fail. x.method2::>(); + //~^ ERROR lifetime may not live long enough } fn test_struct_path<'a, 'b, 'c, 'd>() { diff --git a/src/test/ui/nll/user-annotations/normalization-2.stderr b/src/test/ui/nll/user-annotations/normalization-2.stderr index 5dbdb2ecea85..50382cfd9537 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.stderr +++ b/src/test/ui/nll/user-annotations/normalization-2.stderr @@ -114,6 +114,14 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` = help: replace `'c` with `'static` +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:71:7 + | +LL | fn test_method_call<'a>(x: MyTy<()>) { + | -- lifetime `'a` defined here +LL | x.method2::>(); + | ^^^^^^^ requires that `'a` must outlive `'static` + error: lifetime may not live long enough --> $DIR/normalization-2.rs:88:5 | @@ -190,5 +198,5 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` = help: replace `'c` with `'static` -error: aborting due to 18 previous errors +error: aborting due to 19 previous errors From c6a17bf8bcfa60c8b0436251d2cf70d8eca4d198 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Wed, 16 Nov 2022 13:11:44 +0300 Subject: [PATCH 272/478] make ascribe_user_type a TypeOp Projection types in user annotations may contain inference variables. This makes the normalization depend on the unification with the actual type and thus requires a separate TypeOp to track the obligations. Otherwise simply calling `TypeChecker::normalize` would ICE with "unexpected ambiguity" --- .../src/type_check/canonical.rs | 78 ++++++++++- .../src/type_check/input_output.rs | 126 +++++++----------- compiler/rustc_borrowck/src/type_check/mod.rs | 76 ++--------- compiler/rustc_middle/src/traits/query.rs | 11 +- .../rustc_middle/src/ty/typeck_results.rs | 2 +- compiler/rustc_traits/src/type_op.rs | 53 ++++++-- .../ui/nll/ty-outlives/wf-unreachable.stderr | 16 +-- .../ui/nll/user-annotations/closure-sig.rs | 15 +++ .../user-annotations/normalization-infer.rs | 40 ++++++ .../normalization-infer.stderr | 101 ++++++++++++++ ...pe-in-supertrait-outlives-container.stderr | 2 +- ...regions-free-region-ordering-caller.stderr | 6 +- ...-outlives-projection-container-hrtb.stderr | 4 +- ...ns-outlives-projection-container-wc.stderr | 2 +- ...gions-outlives-projection-container.stderr | 4 +- 15 files changed, 350 insertions(+), 186 deletions(-) create mode 100644 src/test/ui/nll/user-annotations/closure-sig.rs create mode 100644 src/test/ui/nll/user-annotations/normalization-infer.rs create mode 100644 src/test/ui/nll/user-annotations/normalization-infer.stderr diff --git a/compiler/rustc_borrowck/src/type_check/canonical.rs b/compiler/rustc_borrowck/src/type_check/canonical.rs index 3617bf58be9d..02222c0a03cb 100644 --- a/compiler/rustc_borrowck/src/type_check/canonical.rs +++ b/compiler/rustc_borrowck/src/type_check/canonical.rs @@ -1,13 +1,13 @@ use std::fmt; -use rustc_infer::infer::canonical::Canonical; -use rustc_infer::traits::query::NoSolution; +use rustc_infer::infer::{canonical::Canonical, InferOk}; use rustc_middle::mir::ConstraintCategory; -use rustc_middle::ty::{self, ToPredicate, TypeFoldable}; +use rustc_middle::ty::{self, ToPredicate, Ty, TypeFoldable}; use rustc_span::def_id::DefId; use rustc_span::Span; use rustc_trait_selection::traits::query::type_op::{self, TypeOpOutput}; -use rustc_trait_selection::traits::query::Fallible; +use rustc_trait_selection::traits::query::{Fallible, NoSolution}; +use rustc_trait_selection::traits::{ObligationCause, ObligationCtxt}; use crate::diagnostics::{ToUniverseInfo, UniverseInfo}; @@ -177,4 +177,74 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { value }) } + + #[instrument(skip(self), level = "debug")] + pub(super) fn ascribe_user_type( + &mut self, + mir_ty: Ty<'tcx>, + user_ty: ty::UserType<'tcx>, + span: Span, + ) { + // FIXME: Ideally MIR types are normalized, but this is not always true. + let mir_ty = self.normalize(mir_ty, Locations::All(span)); + + self.fully_perform_op( + Locations::All(span), + ConstraintCategory::Boring, + self.param_env.and(type_op::ascribe_user_type::AscribeUserType::new(mir_ty, user_ty)), + ) + .unwrap_or_else(|err| { + span_mirbug!( + self, + span, + "ascribe_user_type `{mir_ty:?}=={user_ty:?}` failed with `{err:?}`", + ); + }); + } + + /// *Incorrectly* skips the WF checks we normally do in `ascribe_user_type`. + /// + /// FIXME(#104478, #104477): This is a hack for backward-compatibility. + #[instrument(skip(self), level = "debug")] + pub(super) fn ascribe_user_type_skip_wf( + &mut self, + mir_ty: Ty<'tcx>, + user_ty: ty::UserType<'tcx>, + span: Span, + ) { + let ty::UserType::Ty(user_ty) = user_ty else { bug!() }; + + // A fast path for a common case with closure input/output types. + if let ty::Infer(_) = user_ty.kind() { + self.eq_types(user_ty, mir_ty, Locations::All(span), ConstraintCategory::Boring) + .unwrap(); + return; + } + + let mir_ty = self.normalize(mir_ty, Locations::All(span)); + let cause = ObligationCause::dummy_with_span(span); + let param_env = self.param_env; + let op = |infcx: &'_ _| { + let ocx = ObligationCtxt::new_in_snapshot(infcx); + let user_ty = ocx.normalize(&cause, param_env, user_ty); + ocx.eq(&cause, param_env, user_ty, mir_ty)?; + if !ocx.select_all_or_error().is_empty() { + return Err(NoSolution); + } + Ok(InferOk { value: (), obligations: vec![] }) + }; + + self.fully_perform_op( + Locations::All(span), + ConstraintCategory::Boring, + type_op::custom::CustomTypeOp::new(op, || "ascribe_user_type_skip_wf".to_string()), + ) + .unwrap_or_else(|err| { + span_mirbug!( + self, + span, + "ascribe_user_type_skip_wf `{mir_ty:?}=={user_ty:?}` failed with `{err:?}`", + ); + }); + } } diff --git a/compiler/rustc_borrowck/src/type_check/input_output.rs b/compiler/rustc_borrowck/src/type_check/input_output.rs index 8fa43f8528cc..fa9ea769a14f 100644 --- a/compiler/rustc_borrowck/src/type_check/input_output.rs +++ b/compiler/rustc_borrowck/src/type_check/input_output.rs @@ -10,7 +10,7 @@ use rustc_index::vec::Idx; use rustc_infer::infer::LateBoundRegionConversionTime; use rustc_middle::mir::*; -use rustc_middle::ty::Ty; +use rustc_middle::ty::{self, Ty}; use rustc_span::Span; use crate::universal_regions::UniversalRegions; @@ -18,6 +18,52 @@ use crate::universal_regions::UniversalRegions; use super::{Locations, TypeChecker}; impl<'a, 'tcx> TypeChecker<'a, 'tcx> { + /// Check explicit closure signature annotation, + /// e.g., `|x: FxHashMap<_, &'static u32>| ...`. + #[instrument(skip(self, body), level = "debug")] + pub(super) fn check_signature_annotation(&mut self, body: &Body<'tcx>) { + let mir_def_id = body.source.def_id().expect_local(); + if !self.tcx().is_closure(mir_def_id.to_def_id()) { + return; + } + let Some(user_provided_poly_sig) = + self.tcx().typeck(mir_def_id).user_provided_sigs.get(&mir_def_id) + else { + return; + }; + + // Instantiate the canonicalized variables from user-provided signature + // (e.g., the `_` in the code above) with fresh variables. + // Then replace the bound items in the fn sig with fresh variables, + // so that they represent the view from "inside" the closure. + let user_provided_sig = self + .instantiate_canonical_with_fresh_inference_vars(body.span, &user_provided_poly_sig); + let user_provided_sig = self.infcx.replace_bound_vars_with_fresh_vars( + body.span, + LateBoundRegionConversionTime::FnCall, + user_provided_sig, + ); + + for (&user_ty, arg_decl) in user_provided_sig.inputs().iter().zip( + // In MIR, closure args begin with an implicit `self`. Skip it! + body.args_iter().skip(1).map(|local| &body.local_decls[local]), + ) { + self.ascribe_user_type_skip_wf( + arg_decl.ty, + ty::UserType::Ty(user_ty), + arg_decl.source_info.span, + ); + } + + // If the user explicitly annotated the output type, enforce it. + let output_decl = &body.local_decls[RETURN_PLACE]; + self.ascribe_user_type_skip_wf( + output_decl.ty, + ty::UserType::Ty(user_provided_sig.output()), + output_decl.source_info.span, + ); + } + #[instrument(skip(self, body, universal_regions), level = "debug")] pub(super) fn equate_inputs_and_outputs( &mut self, @@ -31,39 +77,6 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { debug!(?normalized_output_ty); debug!(?normalized_input_tys); - let mir_def_id = body.source.def_id().expect_local(); - - // If the user explicitly annotated the input types, extract - // those. - // - // e.g., `|x: FxHashMap<_, &'static u32>| ...` - let user_provided_sig = if !self.tcx().is_closure(mir_def_id.to_def_id()) { - None - } else { - let typeck_results = self.tcx().typeck(mir_def_id); - - typeck_results.user_provided_sigs.get(&mir_def_id).map(|user_provided_poly_sig| { - // Instantiate the canonicalized variables from - // user-provided signature (e.g., the `_` in the code - // above) with fresh variables. - let poly_sig = self.instantiate_canonical_with_fresh_inference_vars( - body.span, - &user_provided_poly_sig, - ); - - // Replace the bound items in the fn sig with fresh - // variables, so that they represent the view from - // "inside" the closure. - self.infcx.replace_bound_vars_with_fresh_vars( - body.span, - LateBoundRegionConversionTime::FnCall, - poly_sig, - ) - }) - }; - - debug!(?normalized_input_tys, ?body.local_decls); - // Equate expected input tys with those in the MIR. for (argument_index, &normalized_input_ty) in normalized_input_tys.iter().enumerate() { if argument_index + 1 >= body.local_decls.len() { @@ -86,28 +99,6 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { ); } - if let Some(user_provided_sig) = user_provided_sig { - for (argument_index, &user_provided_input_ty) in - user_provided_sig.inputs().iter().enumerate() - { - // In MIR, closures begin an implicit `self`, so - // argument N is stored in local N+2. - let local = Local::new(argument_index + 2); - let mir_input_ty = body.local_decls[local].ty; - let mir_input_span = body.local_decls[local].source_info.span; - - // If the user explicitly annotated the input types, enforce those. - let user_provided_input_ty = - self.normalize(user_provided_input_ty, Locations::All(mir_input_span)); - - self.equate_normalized_input_or_output( - user_provided_input_ty, - mir_input_ty, - mir_input_span, - ); - } - } - debug!( "equate_inputs_and_outputs: body.yield_ty {:?}, universal_regions.yield_ty {:?}", body.yield_ty(), @@ -153,29 +144,6 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { terr ); }; - - // If the user explicitly annotated the output types, enforce those. - // Note that this only happens for closures. - if let Some(user_provided_sig) = user_provided_sig { - let user_provided_output_ty = user_provided_sig.output(); - let user_provided_output_ty = - self.normalize(user_provided_output_ty, Locations::All(output_span)); - if let Err(err) = self.eq_types( - user_provided_output_ty, - mir_output_ty, - Locations::All(output_span), - ConstraintCategory::BoringNoLocation, - ) { - span_mirbug!( - self, - Location::START, - "equate_inputs_and_outputs: `{:?}=={:?}` failed with `{:?}`", - mir_output_ty, - user_provided_output_ty, - err - ); - } - } } #[instrument(skip(self), level = "debug")] diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index 247607ff29e2..8778a19eeda1 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -38,7 +38,6 @@ use rustc_middle::ty::{ use rustc_span::def_id::CRATE_DEF_ID; use rustc_span::{Span, DUMMY_SP}; use rustc_target::abi::VariantIdx; -use rustc_trait_selection::traits::query::type_op; use rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints; use rustc_trait_selection::traits::query::type_op::custom::CustomTypeOp; use rustc_trait_selection::traits::query::type_op::{TypeOp, TypeOpOutput}; @@ -197,6 +196,8 @@ pub(crate) fn type_check<'mir, 'tcx>( } checker.equate_inputs_and_outputs(&body, universal_regions, &normalized_inputs_and_output); + checker.check_signature_annotation(&body); + liveness::generate( &mut checker, body, @@ -391,23 +392,14 @@ impl<'a, 'b, 'tcx> Visitor<'tcx> for TypeVerifier<'a, 'b, 'tcx> { check_err(self, promoted_body, ty, promoted_ty); } } else { - if let Err(terr) = self.cx.fully_perform_op( - locations, - ConstraintCategory::Boring, - self.cx.param_env.and(type_op::ascribe_user_type::AscribeUserType::new( - constant.literal.ty(), + self.cx.ascribe_user_type( + constant.literal.ty(), + UserType::TypeOf( uv.def.did, UserSubsts { substs: uv.substs, user_self_ty: None }, - )), - ) { - span_mirbug!( - self, - constant, - "bad constant type {:?} ({:?})", - constant, - terr - ); - } + ), + locations.span(&self.cx.body), + ); } } else if let Some(static_def_id) = constant.check_static_ptr(tcx) { let unnormalized_ty = tcx.type_of(static_def_id); @@ -1041,58 +1033,8 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { debug!(?self.user_type_annotations); for user_annotation in self.user_type_annotations { let CanonicalUserTypeAnnotation { span, ref user_ty, inferred_ty } = *user_annotation; - let inferred_ty = self.normalize(inferred_ty, Locations::All(span)); let annotation = self.instantiate_canonical_with_fresh_inference_vars(span, user_ty); - debug!(?annotation); - match annotation { - UserType::Ty(mut ty) => { - ty = self.normalize(ty, Locations::All(span)); - - if let Err(terr) = self.eq_types( - ty, - inferred_ty, - Locations::All(span), - ConstraintCategory::BoringNoLocation, - ) { - span_mirbug!( - self, - user_annotation, - "bad user type ({:?} = {:?}): {:?}", - ty, - inferred_ty, - terr - ); - } - - self.prove_predicate( - ty::Binder::dummy(ty::PredicateKind::WellFormed(inferred_ty.into())), - Locations::All(span), - ConstraintCategory::TypeAnnotation, - ); - } - UserType::TypeOf(def_id, user_substs) => { - if let Err(terr) = self.fully_perform_op( - Locations::All(span), - ConstraintCategory::BoringNoLocation, - self.param_env.and(type_op::ascribe_user_type::AscribeUserType::new( - inferred_ty, - def_id, - user_substs, - )), - ) { - span_mirbug!( - self, - user_annotation, - "bad user type AscribeUserType({:?}, {:?} {:?}, type_of={:?}): {:?}", - inferred_ty, - def_id, - user_substs, - self.tcx().type_of(def_id), - terr, - ); - } - } - } + self.ascribe_user_type(inferred_ty, annotation, span); } } diff --git a/compiler/rustc_middle/src/traits/query.rs b/compiler/rustc_middle/src/traits/query.rs index 6a149be3137e..543f5b87e00b 100644 --- a/compiler/rustc_middle/src/traits/query.rs +++ b/compiler/rustc_middle/src/traits/query.rs @@ -15,22 +15,19 @@ use rustc_span::source_map::Span; pub mod type_op { use crate::ty::fold::TypeFoldable; - use crate::ty::subst::UserSubsts; - use crate::ty::{Predicate, Ty}; - use rustc_hir::def_id::DefId; + use crate::ty::{Predicate, Ty, UserType}; use std::fmt; #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, HashStable, Lift)] #[derive(TypeFoldable, TypeVisitable)] pub struct AscribeUserType<'tcx> { pub mir_ty: Ty<'tcx>, - pub def_id: DefId, - pub user_substs: UserSubsts<'tcx>, + pub user_ty: UserType<'tcx>, } impl<'tcx> AscribeUserType<'tcx> { - pub fn new(mir_ty: Ty<'tcx>, def_id: DefId, user_substs: UserSubsts<'tcx>) -> Self { - Self { mir_ty, def_id, user_substs } + pub fn new(mir_ty: Ty<'tcx>, user_ty: UserType<'tcx>) -> Self { + Self { mir_ty, user_ty } } } diff --git a/compiler/rustc_middle/src/ty/typeck_results.rs b/compiler/rustc_middle/src/ty/typeck_results.rs index 136a4906c58d..bc7895c39707 100644 --- a/compiler/rustc_middle/src/ty/typeck_results.rs +++ b/compiler/rustc_middle/src/ty/typeck_results.rs @@ -679,7 +679,7 @@ impl<'tcx> CanonicalUserType<'tcx> { /// from constants that are named via paths, like `Foo::::new` and /// so forth. #[derive(Copy, Clone, Debug, PartialEq, TyEncodable, TyDecodable)] -#[derive(HashStable, TypeFoldable, TypeVisitable, Lift)] +#[derive(Eq, Hash, HashStable, TypeFoldable, TypeVisitable, Lift)] pub enum UserType<'tcx> { Ty(Ty<'tcx>), diff --git a/compiler/rustc_traits/src/type_op.rs b/compiler/rustc_traits/src/type_op.rs index f6eca9774303..aa5c83ac2e65 100644 --- a/compiler/rustc_traits/src/type_op.rs +++ b/compiler/rustc_traits/src/type_op.rs @@ -4,8 +4,8 @@ use rustc_infer::infer::{DefiningAnchor, TyCtxtInferExt}; use rustc_infer::traits::ObligationCauseCode; use rustc_middle::ty::query::Providers; use rustc_middle::ty::{self, FnSig, Lift, PolyFnSig, Ty, TyCtxt, TypeFoldable}; -use rustc_middle::ty::{ParamEnvAnd, Predicate, ToPredicate}; -use rustc_middle::ty::{UserSelfTy, UserSubsts}; +use rustc_middle::ty::{ParamEnvAnd, Predicate}; +use rustc_middle::ty::{UserSelfTy, UserSubsts, UserType}; use rustc_span::{Span, DUMMY_SP}; use rustc_trait_selection::infer::InferCtxtBuilderExt; use rustc_trait_selection::traits::query::normalize::QueryNormalizeExt; @@ -50,13 +50,46 @@ pub fn type_op_ascribe_user_type_with_span<'tcx>( key: ParamEnvAnd<'tcx, AscribeUserType<'tcx>>, span: Option, ) -> Result<(), NoSolution> { - let (param_env, AscribeUserType { mir_ty, def_id, user_substs }) = key.into_parts(); - debug!( - "type_op_ascribe_user_type: mir_ty={:?} def_id={:?} user_substs={:?}", - mir_ty, def_id, user_substs - ); + let (param_env, AscribeUserType { mir_ty, user_ty }) = key.into_parts(); + debug!("type_op_ascribe_user_type: mir_ty={:?} user_ty={:?}", mir_ty, user_ty); let span = span.unwrap_or(DUMMY_SP); + match user_ty { + UserType::Ty(user_ty) => relate_mir_and_user_ty(ocx, param_env, span, mir_ty, user_ty)?, + UserType::TypeOf(def_id, user_substs) => { + relate_mir_and_user_substs(ocx, param_env, span, mir_ty, def_id, user_substs)? + } + }; + Ok(()) +} +#[instrument(level = "debug", skip(ocx, param_env, span))] +fn relate_mir_and_user_ty<'tcx>( + ocx: &ObligationCtxt<'_, 'tcx>, + param_env: ty::ParamEnv<'tcx>, + span: Span, + mir_ty: Ty<'tcx>, + user_ty: Ty<'tcx>, +) -> Result<(), NoSolution> { + let cause = ObligationCause::dummy_with_span(span); + let user_ty = ocx.normalize(&cause, param_env, user_ty); + ocx.eq(&cause, param_env, mir_ty, user_ty)?; + + // FIXME(#104764): We should check well-formedness before normalization. + let predicate = ty::Binder::dummy(ty::PredicateKind::WellFormed(user_ty.into())); + ocx.register_obligation(Obligation::new(ocx.infcx.tcx, cause, param_env, predicate)); + + Ok(()) +} + +#[instrument(level = "debug", skip(ocx, param_env, span))] +fn relate_mir_and_user_substs<'tcx>( + ocx: &ObligationCtxt<'_, 'tcx>, + param_env: ty::ParamEnv<'tcx>, + span: Span, + mir_ty: Ty<'tcx>, + def_id: hir::def_id::DefId, + user_substs: UserSubsts<'tcx>, +) -> Result<(), NoSolution> { let UserSubsts { user_self_ty, substs } = user_substs; let tcx = ocx.infcx.tcx; let cause = ObligationCause::dummy_with_span(span); @@ -97,8 +130,7 @@ pub fn type_op_ascribe_user_type_with_span<'tcx>( ocx.eq(&cause, param_env, self_ty, impl_self_ty)?; - let predicate: Predicate<'tcx> = - ty::Binder::dummy(ty::PredicateKind::WellFormed(impl_self_ty.into())).to_predicate(tcx); + let predicate = ty::Binder::dummy(ty::PredicateKind::WellFormed(impl_self_ty.into())); ocx.register_obligation(Obligation::new(tcx, cause.clone(), param_env, predicate)); } @@ -113,8 +145,7 @@ pub fn type_op_ascribe_user_type_with_span<'tcx>( // them? This would only be relevant if some input // type were ill-formed but did not appear in `ty`, // which...could happen with normalization... - let predicate: Predicate<'tcx> = - ty::Binder::dummy(ty::PredicateKind::WellFormed(ty.into())).to_predicate(tcx); + let predicate = ty::Binder::dummy(ty::PredicateKind::WellFormed(ty.into())); ocx.register_obligation(Obligation::new(tcx, cause, param_env, predicate)); Ok(()) } diff --git a/src/test/ui/nll/ty-outlives/wf-unreachable.stderr b/src/test/ui/nll/ty-outlives/wf-unreachable.stderr index a62157f44f53..da3bc2083228 100644 --- a/src/test/ui/nll/ty-outlives/wf-unreachable.stderr +++ b/src/test/ui/nll/ty-outlives/wf-unreachable.stderr @@ -5,7 +5,7 @@ LL | fn uninit<'a>() { | -- lifetime `'a` defined here LL | return; LL | let x: &'static &'a (); - | ^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:11:12 @@ -14,7 +14,7 @@ LL | fn var_type<'a>() { | -- lifetime `'a` defined here LL | return; LL | let x: &'static &'a () = &&(); - | ^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:15:12 @@ -22,7 +22,7 @@ error: lifetime may not live long enough LL | fn uninit_infer<'a>() { | -- lifetime `'a` defined here LL | let x: &'static &'a _; - | ^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:21:12 @@ -31,7 +31,7 @@ LL | fn infer<'a>() { | -- lifetime `'a` defined here LL | return; LL | let x: &'static &'a _ = &&(); - | ^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:26:12 @@ -40,7 +40,7 @@ LL | fn uninit_no_var<'a>() { | -- lifetime `'a` defined here LL | return; LL | let _: &'static &'a (); - | ^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:31:12 @@ -49,7 +49,7 @@ LL | fn no_var<'a>() { | -- lifetime `'a` defined here LL | return; LL | let _: &'static &'a () = &&(); - | ^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:36:12 @@ -58,7 +58,7 @@ LL | fn infer_no_var<'a>() { | -- lifetime `'a` defined here LL | return; LL | let _: &'static &'a _ = &&(); - | ^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough --> $DIR/wf-unreachable.rs:49:12 @@ -67,7 +67,7 @@ LL | fn required_substs<'a>() { | -- lifetime `'a` defined here LL | return; LL | let _: C<'static, 'a, _> = C((), &(), &()); - | ^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` + | ^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: aborting due to 8 previous errors diff --git a/src/test/ui/nll/user-annotations/closure-sig.rs b/src/test/ui/nll/user-annotations/closure-sig.rs new file mode 100644 index 000000000000..4dbd3fd8d81e --- /dev/null +++ b/src/test/ui/nll/user-annotations/closure-sig.rs @@ -0,0 +1,15 @@ +// This test fails if #104478 is fixed before #104477. + +// check-pass + +struct Printer<'a, 'b>(&'a (), &'b ()); + +impl Printer<'_, '_> { + fn test(self) { + let clo = |_: &'_ Self| {}; + clo(&self); + clo(&self); + } +} + +fn main() {} diff --git a/src/test/ui/nll/user-annotations/normalization-infer.rs b/src/test/ui/nll/user-annotations/normalization-infer.rs new file mode 100644 index 000000000000..8bfc272d4ba0 --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-infer.rs @@ -0,0 +1,40 @@ +// Annnotations may contain projection types with inference variables as input. +// Make sure we don't get ambiguities when normalizing them. + +// check-fail + +// Single impl. +fn test1(a: A, b: B, c: C) { + trait Tr { type Ty; } + impl Tr for (T,) { type Ty = T; } + + let _: <(_,) as Tr>::Ty = a; //~ ERROR type `A` + Some::<<(_,) as Tr>::Ty>(b); //~ ERROR type `B` + || -> <(_,) as Tr>::Ty { c }; //~ ERROR type `C` + |d: <(_,) as Tr>::Ty| -> D { d }; //~ ERROR type `D` +} + + +// Two impls. The selected impl depends on the actual type. +fn test2(a: A, b: B, c: C) { + trait Tr { type Ty; } + impl Tr for (u8, T) { type Ty = T; } + impl Tr for (i8, T) { type Ty = T; } + type Alias = (<(X, Y) as Tr>::Ty, X); + + fn temp() -> String { todo!() } + + // `u8` impl, requires static. + let _: Alias<_, _> = (a, 0u8); //~ ERROR type `A` + Some::>((b, 0u8)); //~ ERROR type `B` + || -> Alias<_, _> { (c, 0u8) }; //~ ERROR type `C` + + let _: Alias<_, _> = (&temp(), 0u8); //~ ERROR temporary value + Some::>((&temp(), 0u8)); //~ ERROR temporary value + + // `i8` impl, no region constraints. + let _: Alias<_, _> = (&temp(), 0i8); + Some::>((&temp(), 0i8)); +} + +fn main() {} diff --git a/src/test/ui/nll/user-annotations/normalization-infer.stderr b/src/test/ui/nll/user-annotations/normalization-infer.stderr new file mode 100644 index 000000000000..12854ab6816b --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-infer.stderr @@ -0,0 +1,101 @@ +error[E0310]: the parameter type `A` may not live long enough + --> $DIR/normalization-infer.rs:11:12 + | +LL | let _: <(_,) as Tr>::Ty = a; + | ^^^^^^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test1(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `B` may not live long enough + --> $DIR/normalization-infer.rs:12:5 + | +LL | Some::<<(_,) as Tr>::Ty>(b); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `B` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test1(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `C` may not live long enough + --> $DIR/normalization-infer.rs:13:11 + | +LL | || -> <(_,) as Tr>::Ty { c }; + | ^^^^^^^^^^^^^^^^ ...so that the type `C` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test1(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `D` may not live long enough + --> $DIR/normalization-infer.rs:14:6 + | +LL | |d: <(_,) as Tr>::Ty| -> D { d }; + | ^ ...so that the type `D` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test1(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `A` may not live long enough + --> $DIR/normalization-infer.rs:28:12 + | +LL | let _: Alias<_, _> = (a, 0u8); + | ^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test2(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `B` may not live long enough + --> $DIR/normalization-infer.rs:29:5 + | +LL | Some::>((b, 0u8)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `B` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test2(a: A, b: B, c: C) { + | +++++++++ + +error[E0310]: the parameter type `C` may not live long enough + --> $DIR/normalization-infer.rs:30:11 + | +LL | || -> Alias<_, _> { (c, 0u8) }; + | ^^^^^^^^^^^ ...so that the type `C` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn test2(a: A, b: B, c: C) { + | +++++++++ + +error[E0716]: temporary value dropped while borrowed + --> $DIR/normalization-infer.rs:32:28 + | +LL | let _: Alias<_, _> = (&temp(), 0u8); + | ----------- ^^^^^^ creates a temporary value which is freed while still in use + | | + | type annotation requires that borrow lasts for `'static` +... +LL | } + | - temporary value is freed at the end of this statement + +error[E0716]: temporary value dropped while borrowed + --> $DIR/normalization-infer.rs:33:27 + | +LL | Some::>((&temp(), 0u8)); + | --^^^^^^------ - temporary value is freed at the end of this statement + | | | + | | creates a temporary value which is freed while still in use + | this usage requires that borrow lasts for `'static` + +error: aborting due to 9 previous errors + +Some errors have detailed explanations: E0310, E0716. +For more information about an error, try `rustc --explain E0310`. diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr b/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr index 87e33e1ccff2..2a2625203618 100644 --- a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr +++ b/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr @@ -7,7 +7,7 @@ LL | fn with_assoc<'a,'b>() { | lifetime `'a` defined here ... LL | let _: &'a WithAssoc> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.stderr b/src/test/ui/regions/regions-free-region-ordering-caller.stderr index c79ed50c6a4a..cdf70d2a5be9 100644 --- a/src/test/ui/regions/regions-free-region-ordering-caller.stderr +++ b/src/test/ui/regions/regions-free-region-ordering-caller.stderr @@ -6,7 +6,7 @@ LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) { | | | lifetime `'a` defined here LL | let z: Option<&'b &'a usize> = None; - | ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b` + | ^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b` | = help: consider adding the following bound: `'a: 'b` @@ -19,7 +19,7 @@ LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) { | lifetime `'a` defined here LL | let y: Paramd<'a> = Paramd { x: a }; LL | let z: Option<&'b Paramd<'a>> = None; - | ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b` + | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b` | = help: consider adding the following bound: `'a: 'b` @@ -31,7 +31,7 @@ LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) { | | | lifetime `'a` defined here LL | let z: Option<&'a &'b usize> = None; - | ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr b/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr index 187e9056e115..6a7c908fa400 100644 --- a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr +++ b/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr @@ -7,7 +7,7 @@ LL | fn with_assoc<'a,'b>() { | lifetime `'a` defined here ... LL | let _: &'a WithHrAssoc> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` @@ -20,7 +20,7 @@ LL | fn with_assoc_sub<'a,'b>() { | lifetime `'a` defined here ... LL | let _: &'a WithHrAssocSub> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr b/src/test/ui/regions/regions-outlives-projection-container-wc.stderr index 4178e951c86e..eba2a0d58534 100644 --- a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr +++ b/src/test/ui/regions/regions-outlives-projection-container-wc.stderr @@ -7,7 +7,7 @@ LL | fn with_assoc<'a,'b>() { | lifetime `'a` defined here ... LL | let _: &'a WithAssoc> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` diff --git a/src/test/ui/regions/regions-outlives-projection-container.stderr b/src/test/ui/regions/regions-outlives-projection-container.stderr index 073a31900227..d20a2f06adfe 100644 --- a/src/test/ui/regions/regions-outlives-projection-container.stderr +++ b/src/test/ui/regions/regions-outlives-projection-container.stderr @@ -7,7 +7,7 @@ LL | fn with_assoc<'a,'b>() { | lifetime `'a` defined here ... LL | let _x: &'a WithAssoc> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` @@ -20,7 +20,7 @@ LL | fn without_assoc<'a,'b>() { | lifetime `'a` defined here ... LL | let _x: &'a WithoutAssoc> = loop { }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a` | = help: consider adding the following bound: `'b: 'a` From 8afd3c47a800f0ebd40d1dc91d498ca02b3ab484 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Wed, 16 Nov 2022 20:20:26 +0300 Subject: [PATCH 273/478] remove unnecessary normalize call --- compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index e9e43950fb2b..f5cffef54e0e 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -1199,9 +1199,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // If we have a default, then we it doesn't matter that we're not // inferring the type arguments: we provide the default where any // is missing. - let default = - tcx.bound_type_of(param.def_id).subst(tcx, substs.unwrap()); - self.fcx.normalize(self.span, default).into() + tcx.bound_type_of(param.def_id).subst(tcx, substs.unwrap()).into() } else { // If no type arguments were provided, we have to infer them. // This case also occurs as a result of some malformed input, e.g. From dca15fd5b95c01edd81ccee1c0f0bdbc28d3f05f Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Wed, 23 Nov 2022 11:30:58 +0300 Subject: [PATCH 274/478] rename create_raw_ty -> handle_raw_ty --- compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs | 6 +++--- compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index f5cffef54e0e..970e84bf054e 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -369,14 +369,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - pub fn create_raw_ty(&self, span: Span, ty: Ty<'tcx>) -> RawTy<'tcx> { + pub fn handle_raw_ty(&self, span: Span, ty: Ty<'tcx>) -> RawTy<'tcx> { RawTy { raw: ty, normalized: self.normalize(span, ty) } } pub fn to_ty(&self, ast_t: &hir::Ty<'_>) -> RawTy<'tcx> { let t = >::ast_ty_to_ty(self, ast_t); self.register_wf_obligation(t.into(), ast_t.span, traits::WellFormed(None)); - self.create_raw_ty(ast_t.span, t) + self.handle_raw_ty(ast_t.span, t) } pub fn to_ty_saving_user_provided_ty(&self, ast_ty: &hir::Ty<'_>) -> Ty<'tcx> { @@ -767,7 +767,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // We manually call `register_wf_obligation` in the success path // below. let ty = >::ast_ty_to_ty_in_path(self, qself); - (self.create_raw_ty(span, ty), qself, segment) + (self.handle_raw_ty(span, ty), qself, segment) } QPath::LangItem(..) => { bug!("`resolve_ty_and_res_fully_qualified_call` called on `LangItem`") diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 92a0b9785d04..229220888957 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -1683,7 +1683,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { QPath::Resolved(ref maybe_qself, ref path) => { let self_ty = maybe_qself.as_ref().map(|qself| self.to_ty(qself).raw); let ty = >::res_to_ty(self, self_ty, path, true); - (path.res, self.create_raw_ty(path_span, ty)) + (path.res, self.handle_raw_ty(path_span, ty)) } QPath::TypeRelative(ref qself, ref segment) => { let ty = self.to_ty(qself); @@ -1692,7 +1692,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self, hir_id, path_span, ty.raw, qself, segment, true, ); let ty = result.map(|(ty, _, _)| ty).unwrap_or_else(|_| self.tcx().ty_error()); - let ty = self.create_raw_ty(path_span, ty); + let ty = self.handle_raw_ty(path_span, ty); let result = result.map(|(_, kind, def_id)| (kind, def_id)); // Write back the new resolution. @@ -1702,7 +1702,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } QPath::LangItem(lang_item, span, id) => { let (res, ty) = self.resolve_lang_item_path(lang_item, span, hir_id, id); - (res, self.create_raw_ty(path_span, ty)) + (res, self.handle_raw_ty(path_span, ty)) } } } From 030d60f1c729c01ef9ea11a1adb153c7c58e5fe2 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Sun, 25 Dec 2022 12:27:14 +0300 Subject: [PATCH 275/478] more tests --- .../nll/user-annotations/normalization-2.rs | 46 +++++- .../user-annotations/normalization-2.stderr | 152 ++++++++++++++---- .../ui/nll/user-annotations/normalization.rs | 9 +- .../nll/user-annotations/normalization.stderr | 18 ++- .../associated-type-impl-trait-lifetime.rs | 20 +++ 5 files changed, 208 insertions(+), 37 deletions(-) create mode 100644 src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs diff --git a/src/test/ui/nll/user-annotations/normalization-2.rs b/src/test/ui/nll/user-annotations/normalization-2.rs index 232b957d51f9..be23c3b74785 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.rs +++ b/src/test/ui/nll/user-annotations/normalization-2.rs @@ -23,10 +23,20 @@ enum MyTy { } impl MyTy { + const CONST: () = (); fn method() {} fn method2(&self) {} } +trait TraitAssoc { + const TRAIT_CONST: (); + fn trait_method(&self); +} +impl TraitAssoc for T { + const TRAIT_CONST: () = (); + fn trait_method(&self) {} +} + type Ty<'a> = <&'a () as Trait>::Assoc; fn test_local<'a>() { @@ -41,13 +51,30 @@ fn test_closure_sig<'a, 'b>() { //~^ ERROR lifetime may not live long enough } -fn test_path<'a, 'b, 'c, 'd>() { +fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { >::method::>; //~^ ERROR lifetime may not live long enough >::method::>; //~^ ERROR lifetime may not live long enough - MyTy::Unit::>; + >::trait_method::>; + //~^ ERROR lifetime may not live long enough + >::trait_method::>; + //~^ ERROR lifetime may not live long enough + + >::CONST; + //~^ ERROR lifetime may not live long enough + >::TRAIT_CONST; + //~^ ERROR lifetime may not live long enough + + >::method::>; + >::trait_method::>; + >::CONST; + >::TRAIT_CONST; + + MyTy::Unit::>; + //~^ ERROR lifetime may not live long enough + MyTy::>::Unit; //~^ ERROR lifetime may not live long enough } @@ -67,9 +94,11 @@ fn test_variants<'a, 'b, 'c>() { //~^ ERROR lifetime may not live long enough } -fn test_method_call<'a>(x: MyTy<()>) { +fn test_method_call<'a, 'b>(x: MyTy<()>) { x.method2::>(); //~^ ERROR lifetime may not live long enough + x.trait_method::>(); + //~^ ERROR lifetime may not live long enough } fn test_struct_path<'a, 'b, 'c, 'd>() { @@ -97,7 +126,7 @@ fn test_struct_path<'a, 'b, 'c, 'd>() { //~^ ERROR lifetime may not live long enough } -fn test_pattern<'a, 'b, 'c>() { +fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { use MyTy::*; match MyTy::Unit { Struct::> {..} => {}, @@ -108,6 +137,15 @@ fn test_pattern<'a, 'b, 'c>() { //~^ ERROR lifetime may not live long enough Dumb(_) => {}, }; + match MyTy::Unit { + >::Struct {..} => {}, + //~^ ERROR lifetime may not live long enough + >::Tuple (..) => {}, + //~^ ERROR lifetime may not live long enough + >::Unit => {}, + //~^ ERROR lifetime may not live long enough + Dumb(_) => {}, + }; } diff --git a/src/test/ui/nll/user-annotations/normalization-2.stderr b/src/test/ui/nll/user-annotations/normalization-2.stderr index 50382cfd9537..5299282ea151 100644 --- a/src/test/ui/nll/user-annotations/normalization-2.stderr +++ b/src/test/ui/nll/user-annotations/normalization-2.stderr @@ -1,5 +1,5 @@ error: lifetime may not live long enough - --> $DIR/normalization-2.rs:33:12 + --> $DIR/normalization-2.rs:43:12 | LL | fn test_local<'a>() { | -- lifetime `'a` defined here @@ -7,7 +7,7 @@ LL | let _: Ty<'a> = MyTy::Unit; | ^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:38:6 + --> $DIR/normalization-2.rs:48:6 | LL | fn test_closure_sig<'a, 'b>() { | -- lifetime `'a` defined here @@ -15,7 +15,7 @@ LL | |_: Ty<'a>| {}; | ^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:40:11 + --> $DIR/normalization-2.rs:50:11 | LL | fn test_closure_sig<'a, 'b>() { | -- lifetime `'b` defined here @@ -29,39 +29,89 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:45:5 + --> $DIR/normalization-2.rs:55:5 | -LL | fn test_path<'a, 'b, 'c, 'd>() { +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { | -- lifetime `'a` defined here LL | >::method::>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:47:5 + --> $DIR/normalization-2.rs:57:5 | -LL | fn test_path<'a, 'b, 'c, 'd>() { +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { | -- lifetime `'b` defined here ... LL | >::method::>; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:50:5 + --> $DIR/normalization-2.rs:60:5 | -LL | fn test_path<'a, 'b, 'c, 'd>() { +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { | -- lifetime `'c` defined here ... -LL | MyTy::Unit::>; - | ^^^^^^^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` +LL | >::trait_method::>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:62:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'d` defined here +... +LL | >::trait_method::>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'d` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:65:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'e` defined here +... +LL | >::CONST; + | ^^^^^^^^^^^^^^^ requires that `'e` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:67:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'f` defined here +... +LL | >::TRAIT_CONST; + | ^^^^^^^^^^^^^^^^^^^^^ requires that `'f` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:75:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'g` defined here +... +LL | MyTy::Unit::>; + | ^^^^^^^^^^^^^^^^^^^^ requires that `'g` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:77:5 + | +LL | fn test_path<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>() { + | -- lifetime `'h` defined here +... +LL | MyTy::>::Unit; + | ^^^^^^^^^^^^^^^^^^^^ requires that `'h` must outlive `'static` help: the following changes may resolve your lifetime errors | = help: replace `'a` with `'static` = help: replace `'b` with `'static` = help: replace `'c` with `'static` + = help: replace `'d` with `'static` + = help: replace `'e` with `'static` + = help: replace `'f` with `'static` + = help: replace `'g` with `'static` + = help: replace `'h` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:55:5 + --> $DIR/normalization-2.rs:82:5 | LL | fn test_call<'a, 'b, 'c>() { | -- lifetime `'a` defined here @@ -69,7 +119,7 @@ LL | >::method::>(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:57:5 + --> $DIR/normalization-2.rs:84:5 | LL | fn test_call<'a, 'b, 'c>() { | -- lifetime `'b` defined here @@ -83,7 +133,7 @@ help: the following changes may resolve your lifetime errors = help: replace `'b` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:62:5 + --> $DIR/normalization-2.rs:89:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'a` defined here @@ -91,7 +141,7 @@ LL | >::Struct {}; | ^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:64:5 + --> $DIR/normalization-2.rs:91:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'b` defined here @@ -100,7 +150,7 @@ LL | >::Tuple(); | ^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:66:5 + --> $DIR/normalization-2.rs:93:5 | LL | fn test_variants<'a, 'b, 'c>() { | -- lifetime `'c` defined here @@ -115,15 +165,29 @@ help: the following changes may resolve your lifetime errors = help: replace `'c` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:71:7 + --> $DIR/normalization-2.rs:98:7 | -LL | fn test_method_call<'a>(x: MyTy<()>) { +LL | fn test_method_call<'a, 'b>(x: MyTy<()>) { | -- lifetime `'a` defined here LL | x.method2::>(); | ^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:88:5 + --> $DIR/normalization-2.rs:100:7 + | +LL | fn test_method_call<'a, 'b>(x: MyTy<()>) { + | -- lifetime `'b` defined here +... +LL | x.trait_method::>(); + | ^^^^^^^^^^^^ requires that `'b` must outlive `'static` + +help: the following changes may resolve your lifetime errors + | + = help: replace `'a` with `'static` + = help: replace `'b` with `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:117:5 | LL | fn test_struct_path<'a, 'b, 'c, 'd>() { | -- lifetime `'a` defined here @@ -132,7 +196,7 @@ LL | MyTy::>::Struct {}; // without SelfTy | ^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:90:5 + --> $DIR/normalization-2.rs:119:5 | LL | fn test_struct_path<'a, 'b, 'c, 'd>() { | -- lifetime `'b` defined here @@ -141,7 +205,7 @@ LL | as Project>::Enum::Struct {}; // with SelfTy | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:94:5 + --> $DIR/normalization-2.rs:123:5 | LL | fn test_struct_path<'a, 'b, 'c, 'd>() { | -- lifetime `'c` defined here @@ -150,7 +214,7 @@ LL | Struct::> { x: None, }; // without SelfTy | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:96:5 + --> $DIR/normalization-2.rs:125:5 | LL | fn test_struct_path<'a, 'b, 'c, 'd>() { | -- lifetime `'d` defined here @@ -166,37 +230,67 @@ help: the following changes may resolve your lifetime errors = help: replace `'d` with `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:103:9 + --> $DIR/normalization-2.rs:132:9 | -LL | fn test_pattern<'a, 'b, 'c>() { +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { | -- lifetime `'a` defined here ... LL | Struct::> {..} => {}, | ^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:105:9 + --> $DIR/normalization-2.rs:134:9 | -LL | fn test_pattern<'a, 'b, 'c>() { +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { | -- lifetime `'b` defined here ... LL | Tuple::> (..) => {}, | ^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static` error: lifetime may not live long enough - --> $DIR/normalization-2.rs:107:9 + --> $DIR/normalization-2.rs:136:9 | -LL | fn test_pattern<'a, 'b, 'c>() { +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { | -- lifetime `'c` defined here ... LL | Unit::> => {}, | ^^^^^^^^^^^^^^ requires that `'c` must outlive `'static` +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:141:9 + | +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { + | -- lifetime `'d` defined here +... +LL | >::Struct {..} => {}, + | ^^^^^^^^^^^^^^^^^^^^^ requires that `'d` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:143:9 + | +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { + | -- lifetime `'e` defined here +... +LL | >::Tuple (..) => {}, + | ^^^^^^^^^^^^^^^^^^^^ requires that `'e` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-2.rs:145:9 + | +LL | fn test_pattern<'a, 'b, 'c, 'd, 'e, 'f>() { + | -- lifetime `'f` defined here +... +LL | >::Unit => {}, + | ^^^^^^^^^^^^^^ requires that `'f` must outlive `'static` + help: the following changes may resolve your lifetime errors | = help: replace `'a` with `'static` = help: replace `'b` with `'static` = help: replace `'c` with `'static` + = help: replace `'d` with `'static` + = help: replace `'e` with `'static` + = help: replace `'f` with `'static` -error: aborting due to 19 previous errors +error: aborting due to 28 previous errors diff --git a/src/test/ui/nll/user-annotations/normalization.rs b/src/test/ui/nll/user-annotations/normalization.rs index 870e3d8110cd..c2e892f573c2 100644 --- a/src/test/ui/nll/user-annotations/normalization.rs +++ b/src/test/ui/nll/user-annotations/normalization.rs @@ -3,8 +3,15 @@ trait Foo { type Out; } impl Foo for () { type Out = &'static u32; } +impl<'a> Foo for &'a () { type Out = &'a u32; } fn main() { let a = 22; - let b: <() as Foo>::Out = &a; //~ ERROR + let _: <() as Foo>::Out = &a; //~ ERROR + + let a = 22; + let _: <&'static () as Foo>::Out = &a; //~ ERROR + + let a = 22; + let _: <&'_ () as Foo>::Out = &a; } diff --git a/src/test/ui/nll/user-annotations/normalization.stderr b/src/test/ui/nll/user-annotations/normalization.stderr index 4c7893789a53..975cb4b66d91 100644 --- a/src/test/ui/nll/user-annotations/normalization.stderr +++ b/src/test/ui/nll/user-annotations/normalization.stderr @@ -1,13 +1,25 @@ error[E0597]: `a` does not live long enough - --> $DIR/normalization.rs:9:31 + --> $DIR/normalization.rs:10:31 | -LL | let b: <() as Foo>::Out = &a; +LL | let _: <() as Foo>::Out = &a; | ---------------- ^^ borrowed value does not live long enough | | | type annotation requires that `a` is borrowed for `'static` +... LL | } | - `a` dropped here while still borrowed -error: aborting due to previous error +error[E0597]: `a` does not live long enough + --> $DIR/normalization.rs:13:40 + | +LL | let _: <&'static () as Foo>::Out = &a; + | ------------------------- ^^ borrowed value does not live long enough + | | + | type annotation requires that `a` is borrowed for `'static` +... +LL | } + | - `a` dropped here while still borrowed + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0597`. diff --git a/src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs b/src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs new file mode 100644 index 000000000000..962606508be7 --- /dev/null +++ b/src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs @@ -0,0 +1,20 @@ +//check-pass + +#![feature(type_alias_impl_trait)] + +trait Trait { + type Opaque1; + type Opaque2; + fn constrain(self); +} + +impl<'a> Trait for &'a () { + type Opaque1 = impl Sized; + type Opaque2 = impl Sized + 'a; + fn constrain(self) { + let _: Self::Opaque1 = (); + let _: Self::Opaque2 = self; + } +} + +fn main() {} From bf228ace5cf6824078d6d36144ad8a65f07fa8d3 Mon Sep 17 00:00:00 2001 From: Ali MJ Al-Nasrawy Date: Mon, 26 Dec 2022 01:03:24 +0300 Subject: [PATCH 276/478] don't eagerly normalize SelfCtor type Delay until user annotations are registered. See the added test. --- Cargo.lock | 1 - compiler/rustc_hir_typeck/Cargo.toml | 1 - .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 28 ++++++++++----- .../rustc_hir_typeck/src/fn_ctxt/checks.rs | 34 +++++------------- .../user-annotations/normalization-default.rs | 22 ++++++++++++ .../normalization-default.stderr | 36 +++++++++++++++++++ .../user-annotations/normalization-self.rs | 26 ++++++++++++++ .../normalization-self.stderr | 36 +++++++++++++++++++ 8 files changed, 148 insertions(+), 36 deletions(-) create mode 100644 src/test/ui/nll/user-annotations/normalization-default.rs create mode 100644 src/test/ui/nll/user-annotations/normalization-default.stderr create mode 100644 src/test/ui/nll/user-annotations/normalization-self.rs create mode 100644 src/test/ui/nll/user-annotations/normalization-self.stderr diff --git a/Cargo.lock b/Cargo.lock index fd55c121bc4e..4f48506b5af4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4134,7 +4134,6 @@ dependencies = [ name = "rustc_hir_typeck" version = "0.1.0" dependencies = [ - "either", "rustc_ast", "rustc_data_structures", "rustc_errors", diff --git a/compiler/rustc_hir_typeck/Cargo.toml b/compiler/rustc_hir_typeck/Cargo.toml index 114b2d37fb89..093f9bb84486 100644 --- a/compiler/rustc_hir_typeck/Cargo.toml +++ b/compiler/rustc_hir_typeck/Cargo.toml @@ -8,7 +8,6 @@ edition = "2021" [dependencies] smallvec = { version = "1.8.1", features = ["union", "may_dangle"] } tracing = "0.1" -either = "1.5.0" rustc_ast = { path = "../rustc_ast" } rustc_data_structures = { path = "../rustc_data_structures" } rustc_errors = { path = "../rustc_errors" } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 970e84bf054e..b7681d108ed0 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -392,6 +392,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ty.normalized } + pub(super) fn user_substs_for_adt(ty: RawTy<'tcx>) -> UserSubsts<'tcx> { + match (ty.raw.kind(), ty.normalized.kind()) { + (ty::Adt(_, substs), _) => UserSubsts { substs, user_self_ty: None }, + (_, ty::Adt(adt, substs)) => UserSubsts { + substs, + user_self_ty: Some(UserSelfTy { impl_def_id: adt.did(), self_ty: ty.raw }), + }, + _ => bug!("non-adt type {:?}", ty), + } + } + pub fn array_length_to_const(&self, length: &hir::ArrayLen) -> ty::Const<'tcx> { match length { &hir::ArrayLen::Infer(_, span) => self.ct_infer(self.tcx.types.usize, None, span), @@ -1082,20 +1093,21 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .unwrap_or(false); let (res, self_ctor_substs) = if let Res::SelfCtor(impl_def_id) = res { - let ty = tcx.at(span).type_of(impl_def_id); - let ty = self.normalize(span, ty); - match *ty.kind() { - ty::Adt(adt_def, substs) if adt_def.has_ctor() => { - let variant = adt_def.non_enum_variant(); - let (ctor_kind, ctor_def_id) = variant.ctor.unwrap(); - (Res::Def(DefKind::Ctor(CtorOf::Struct, ctor_kind), ctor_def_id), Some(substs)) + let ty = self.handle_raw_ty(span, tcx.at(span).type_of(impl_def_id)); + match ty.normalized.ty_adt_def() { + Some(adt_def) if adt_def.has_ctor() => { + let (ctor_kind, ctor_def_id) = adt_def.non_enum_variant().ctor.unwrap(); + let new_res = Res::Def(DefKind::Ctor(CtorOf::Struct, ctor_kind), ctor_def_id); + let user_substs = Self::user_substs_for_adt(ty); + user_self_ty = user_substs.user_self_ty; + (new_res, Some(user_substs.substs)) } _ => { let mut err = tcx.sess.struct_span_err( span, "the `Self` constructor can only be used with tuple or unit structs", ); - if let Some(adt_def) = ty.ty_adt_def() { + if let Some(adt_def) = ty.normalized.ty_adt_def() { match adt_def.adt_kind() { AdtKind::Enum => { err.help("did you mean to use one of the enum's variants?"); diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 229220888957..da411d0642e7 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -32,8 +32,6 @@ use rustc_span::symbol::{kw, Ident}; use rustc_span::{self, sym, Span}; use rustc_trait_selection::traits::{self, ObligationCauseCode, SelectionContext}; -use either::Either; - use std::iter; use std::mem; use std::ops::ControlFlow; @@ -1233,44 +1231,28 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); return None; } - Res::Def(DefKind::Variant, _) => match (ty.raw.kind(), ty.normalized.kind()) { - (ty::Adt(adt, substs), _) => { - Some((adt.variant_of_res(def), adt.did(), substs, Either::Left(substs))) - } - (_, ty::Adt(adt, substs)) => { - Some((adt.variant_of_res(def), adt.did(), substs, Either::Right(ty.raw))) + Res::Def(DefKind::Variant, _) => match ty.normalized.ty_adt_def() { + Some(adt) => { + Some((adt.variant_of_res(def), adt.did(), Self::user_substs_for_adt(ty))) } _ => bug!("unexpected type: {:?}", ty.normalized), }, Res::Def(DefKind::Struct | DefKind::Union | DefKind::TyAlias | DefKind::AssocTy, _) | Res::SelfTyParam { .. } - | Res::SelfTyAlias { .. } => match (ty.raw.kind(), ty.normalized.kind()) { - (ty::Adt(adt, substs), _) if !adt.is_enum() => { - Some((adt.non_enum_variant(), adt.did(), substs, Either::Left(substs))) - } - (_, ty::Adt(adt, substs)) if !adt.is_enum() => { - Some((adt.non_enum_variant(), adt.did(), substs, Either::Right(ty.raw))) + | Res::SelfTyAlias { .. } => match ty.normalized.ty_adt_def() { + Some(adt) if !adt.is_enum() => { + Some((adt.non_enum_variant(), adt.did(), Self::user_substs_for_adt(ty))) } _ => None, }, _ => bug!("unexpected definition: {:?}", def), }; - if let Some((variant, did, substs, user_annotation)) = variant { + if let Some((variant, did, ty::UserSubsts { substs, user_self_ty })) = variant { debug!("check_struct_path: did={:?} substs={:?}", did, substs); // Register type annotation. - self.probe(|_| { - // UserSubsts and UserSelfTy are mutually exclusive here. - let (user_substs, self_ty) = match user_annotation { - Either::Left(substs) => (*substs, None), - Either::Right(self_ty) => { - (self.fresh_substs_for_item(path_span, did), Some(self_ty)) - } - }; - let self_ty = self_ty.map(|self_ty| ty::UserSelfTy { impl_def_id: did, self_ty }); - self.write_user_type_annotation_from_substs(hir_id, did, user_substs, self_ty); - }); + self.write_user_type_annotation_from_substs(hir_id, did, substs, user_self_ty); // Check bounds on type arguments used in the path. self.add_required_obligations_for_hir(path_span, did, substs, hir_id); diff --git a/src/test/ui/nll/user-annotations/normalization-default.rs b/src/test/ui/nll/user-annotations/normalization-default.rs new file mode 100644 index 000000000000..fa52e6d857f6 --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-default.rs @@ -0,0 +1,22 @@ +// check-fail + +trait Trait { type Assoc; } +impl<'a> Trait for &'a () { type Assoc = &'a (); } + +struct MyTuple::Assoc>(T, U); +fn test_tuple(x: &(), y: &()) { + MyTuple::<_>((), x); + //~^ ERROR + let _: MyTuple::<_> = MyTuple((), y); + //~^ ERROR +} + +struct MyStruct::Assoc> { val: (T, U), } +fn test_struct(x: &(), y: &()) { + MyStruct::<_> { val: ((), x) }; + //~^ ERROR + let _: MyStruct::<_> = MyStruct { val: ((), y) }; + //~^ ERROR +} + +fn main() {} diff --git a/src/test/ui/nll/user-annotations/normalization-default.stderr b/src/test/ui/nll/user-annotations/normalization-default.stderr new file mode 100644 index 000000000000..6c73ac692548 --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-default.stderr @@ -0,0 +1,36 @@ +error: lifetime may not live long enough + --> $DIR/normalization-default.rs:8:22 + | +LL | fn test_tuple(x: &(), y: &()) { + | - let's call the lifetime of this reference `'1` +LL | MyTuple::<_>((), x); + | ^ this usage requires that `'1` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-default.rs:10:12 + | +LL | fn test_tuple(x: &(), y: &()) { + | - let's call the lifetime of this reference `'2` +... +LL | let _: MyTuple::<_> = MyTuple((), y); + | ^^^^^^^^^^^^ type annotation requires that `'2` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-default.rs:16:26 + | +LL | fn test_struct(x: &(), y: &()) { + | - let's call the lifetime of this reference `'1` +LL | MyStruct::<_> { val: ((), x) }; + | ^^^^^^^ this usage requires that `'1` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-default.rs:18:12 + | +LL | fn test_struct(x: &(), y: &()) { + | - let's call the lifetime of this reference `'2` +... +LL | let _: MyStruct::<_> = MyStruct { val: ((), y) }; + | ^^^^^^^^^^^^^ type annotation requires that `'2` must outlive `'static` + +error: aborting due to 4 previous errors + diff --git a/src/test/ui/nll/user-annotations/normalization-self.rs b/src/test/ui/nll/user-annotations/normalization-self.rs new file mode 100644 index 000000000000..c18760b53cff --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-self.rs @@ -0,0 +1,26 @@ +// check-fail + +trait Trait { type Assoc; } +impl<'a> Trait for &'a () { type Assoc = &'a (); } + +struct MyTuple(T); +impl MyTuple<<&'static () as Trait>::Assoc> { + fn test(x: &(), y: &()) { + Self(x); + //~^ ERROR + let _: Self = MyTuple(y); + //~^ ERROR + } +} + +struct MyStruct { val: T, } +impl MyStruct<<&'static () as Trait>::Assoc> { + fn test(x: &(), y: &()) { + Self { val: x }; + //~^ ERROR + let _: Self = MyStruct { val: y }; + //~^ ERROR + } +} + +fn main() {} diff --git a/src/test/ui/nll/user-annotations/normalization-self.stderr b/src/test/ui/nll/user-annotations/normalization-self.stderr new file mode 100644 index 000000000000..e231ed03c2ee --- /dev/null +++ b/src/test/ui/nll/user-annotations/normalization-self.stderr @@ -0,0 +1,36 @@ +error: lifetime may not live long enough + --> $DIR/normalization-self.rs:9:14 + | +LL | fn test(x: &(), y: &()) { + | - let's call the lifetime of this reference `'1` +LL | Self(x); + | ^ this usage requires that `'1` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-self.rs:11:16 + | +LL | fn test(x: &(), y: &()) { + | - let's call the lifetime of this reference `'2` +... +LL | let _: Self = MyTuple(y); + | ^^^^ type annotation requires that `'2` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-self.rs:19:21 + | +LL | fn test(x: &(), y: &()) { + | - let's call the lifetime of this reference `'1` +LL | Self { val: x }; + | ^ this usage requires that `'1` must outlive `'static` + +error: lifetime may not live long enough + --> $DIR/normalization-self.rs:21:16 + | +LL | fn test(x: &(), y: &()) { + | - let's call the lifetime of this reference `'2` +... +LL | let _: Self = MyStruct { val: y }; + | ^^^^ type annotation requires that `'2` must outlive `'static` + +error: aborting due to 4 previous errors + From ce56cf71d956ea78c319ff510651473ca8dce47c Mon Sep 17 00:00:00 2001 From: Raiki Tamura Date: Sat, 7 Jan 2023 20:44:02 +0900 Subject: [PATCH 277/478] chore --- clippy_lints/src/loops/single_element_loop.rs | 14 +------------- clippy_utils/src/visitors.rs | 11 +++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/clippy_lints/src/loops/single_element_loop.rs b/clippy_lints/src/loops/single_element_loop.rs index 7cbc456244e4..744fd61bd135 100644 --- a/clippy_lints/src/loops/single_element_loop.rs +++ b/clippy_lints/src/loops/single_element_loop.rs @@ -1,7 +1,7 @@ use super::SINGLE_ELEMENT_LOOP; use clippy_utils::diagnostics::span_lint_and_sugg; use clippy_utils::source::{indent_of, snippet_with_applicability}; -use clippy_utils::visitors::for_each_expr; +use clippy_utils::visitors::contains_break_or_continue; use if_chain::if_chain; use rustc_ast::util::parser::PREC_PREFIX; use rustc_ast::Mutability; @@ -9,18 +9,6 @@ use rustc_errors::Applicability; use rustc_hir::{is_range_literal, BorrowKind, Expr, ExprKind, Pat}; use rustc_lint::LateContext; use rustc_span::edition::Edition; -use std::ops::ControlFlow; - -fn contains_break_or_continue(expr: &Expr<'_>) -> bool { - for_each_expr(expr, |e| { - if matches!(e.kind, ExprKind::Break(..) | ExprKind::Continue(..)) { - ControlFlow::Break(()) - } else { - ControlFlow::Continue(()) - } - }) - .is_some() -} pub(super) fn check<'tcx>( cx: &LateContext<'tcx>, diff --git a/clippy_utils/src/visitors.rs b/clippy_utils/src/visitors.rs index 863fb60fcfca..14c01a60b4c3 100644 --- a/clippy_utils/src/visitors.rs +++ b/clippy_utils/src/visitors.rs @@ -724,3 +724,14 @@ pub fn for_each_local_assignment<'tcx, B>( ControlFlow::Continue(()) } } + +pub fn contains_break_or_continue(expr: &Expr<'_>) -> bool { + for_each_expr(expr, |e| { + if matches!(e.kind, ExprKind::Break(..) | ExprKind::Continue(..)) { + ControlFlow::Break(()) + } else { + ControlFlow::Continue(()) + } + }) + .is_some() +} From d8877bbd8a04e2fb5edd22f092f1ef360ee8075c Mon Sep 17 00:00:00 2001 From: chansuke Date: Sat, 7 Jan 2023 22:57:30 +0900 Subject: [PATCH 278/478] hotfix: remove `ITER_COUNT` since it is not called --- clippy_utils/src/paths.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/clippy_utils/src/paths.rs b/clippy_utils/src/paths.rs index 9ca50105ae57..95eebab75677 100644 --- a/clippy_utils/src/paths.rs +++ b/clippy_utils/src/paths.rs @@ -47,7 +47,6 @@ pub const IDENT: [&str; 3] = ["rustc_span", "symbol", "Ident"]; #[cfg(feature = "internal")] pub const IDENT_AS_STR: [&str; 4] = ["rustc_span", "symbol", "Ident", "as_str"]; pub const INSERT_STR: [&str; 4] = ["alloc", "string", "String", "insert_str"]; -pub const ITER_COUNT: [&str; 6] = ["core", "iter", "traits", "iterator", "Iterator", "count"]; pub const ITER_EMPTY: [&str; 5] = ["core", "iter", "sources", "empty", "Empty"]; pub const ITERTOOLS_NEXT_TUPLE: [&str; 3] = ["itertools", "Itertools", "next_tuple"]; #[cfg(feature = "internal")] From 9fd744b3e32817db3dcc3210fee67bfd0bcc11fe Mon Sep 17 00:00:00 2001 From: Jacob Kiesel Date: Sat, 7 Jan 2023 11:05:33 -0700 Subject: [PATCH 279/478] add tests for div_duration_* functions --- library/core/tests/time.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/library/core/tests/time.rs b/library/core/tests/time.rs index a05128de471a..2975c81f8fec 100644 --- a/library/core/tests/time.rs +++ b/library/core/tests/time.rs @@ -173,6 +173,32 @@ fn div() { assert_eq!(Duration::new(99, 999_999_000) / 100, Duration::new(0, 999_999_990)); } +#[test] +fn div_duration_f32() { + assert_eq!(Duration::ZERO.div_duration_f32(Duration::MAX), 0.0); + assert_eq!(Duration::MAX.div_duration_f32(Duration::ZERO), f32::INFINITY); + assert_eq!((Duration::SECOND * 2).div_duration_f32(Duration::SECOND), 2.0); + assert!(Duration::ZERO.div_duration_f32(Duration::ZERO).is_nan()); + // These tests demonstrate it doesn't panic with extreme values. + // Accuracy of the computed value is not a huge concern, we know floats don't work well + // at these extremes. + assert!((Duration::MAX).div_duration_f32(Duration::NANOSECOND) > 10.0f32.powf(28.0)); + assert!((Duration::NANOSECOND).div_duration_f32(Duration::MAX) < 0.1); +} + +#[test] +fn div_duration_f64() { + assert_eq!(Duration::ZERO.div_duration_f64(Duration::MAX), 0.0); + assert_eq!(Duration::MAX.div_duration_f64(Duration::ZERO), f64::INFINITY); + assert_eq!((Duration::SECOND * 2).div_duration_f64(Duration::SECOND), 2.0); + assert!(Duration::ZERO.div_duration_f64(Duration::ZERO).is_nan()); + // These tests demonstrate it doesn't panic with extreme values. + // Accuracy of the computed value is not a huge concern, we know floats don't work well + // at these extremes. + assert!((Duration::MAX).div_duration_f64(Duration::NANOSECOND) > 10.0f64.powf(28.0)); + assert!((Duration::NANOSECOND).div_duration_f64(Duration::MAX) < 0.1); +} + #[test] fn checked_div() { assert_eq!(Duration::new(2, 0).checked_div(2), Some(Duration::new(1, 0))); From 41d290d671c48dfae282abfe43b1435803d6d053 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 7 Jan 2023 19:20:08 +0000 Subject: [PATCH 280/478] Bump d3-color and d3-graphviz in /editors/code Bumps [d3-color](https://github.com/d3/d3-color) to 3.1.0 and updates ancestor dependency [d3-graphviz](https://github.com/magjac/d3-graphviz). These dependencies need to be updated together. Updates `d3-color` from 2.0.0 to 3.1.0 - [Release notes](https://github.com/d3/d3-color/releases) - [Commits](https://github.com/d3/d3-color/compare/v2.0.0...v3.1.0) Updates `d3-graphviz` from 4.1.1 to 5.0.2 - [Release notes](https://github.com/magjac/d3-graphviz/releases) - [Changelog](https://github.com/magjac/d3-graphviz/blob/master/CHANGELOG.md) - [Commits](https://github.com/magjac/d3-graphviz/compare/v4.1.1...v5.0.2) --- updated-dependencies: - dependency-name: d3-color dependency-type: indirect - dependency-name: d3-graphviz dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- editors/code/package-lock.json | 339 ++++++++------------------------- editors/code/package.json | 2 +- 2 files changed, 79 insertions(+), 262 deletions(-) diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index 0b25564e28d3..ee69d2247604 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT OR Apache-2.0", "dependencies": { "d3": "^7.6.1", - "d3-graphviz": "^4.1.1", + "d3-graphviz": "^5.0.2", "vscode-languageclient": "^8.0.2" }, "devDependencies": { @@ -54,14 +54,14 @@ } }, "node_modules/@hpcc-js/wasm": { - "version": "1.12.8", - "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-1.12.8.tgz", - "integrity": "sha512-n4q9ARKco2hpCLsuVaW6Az3cDVaua7B3DSONHkc49WtEzgY/btvcDG5Zr1P6PZDv0sQ7oPnAi9Y+W2DI++MgcQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.5.0.tgz", + "integrity": "sha512-G26BamgaHW46f6P8bmkygapgNcy+tTDMwIvCzmMzdp39sxUS1u4gaT/vR2SSDc4x3SfL5RE4B2B8ef/wd429Hg==", "dependencies": { - "yargs": "^17.3.1" + "yargs": "17.6.2" }, "bin": { - "dot-wasm": "bin/cli.js" + "dot-wasm": "bin/dot-wasm.js" } }, "node_modules/@humanwhocodes/config-array": { @@ -698,13 +698,16 @@ "dev": true }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/color-convert": { @@ -876,14 +879,6 @@ "node": ">=12" } }, - "node_modules/d3-brush/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, "node_modules/d3-chord": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", @@ -945,14 +940,6 @@ "node": ">=12" } }, - "node_modules/d3-drag/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, "node_modules/d3-dsv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", @@ -1029,95 +1016,24 @@ } }, "node_modules/d3-graphviz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-4.1.1.tgz", - "integrity": "sha512-s0IVbKf8rs4eJI2xo5Umr7nXDX/LEZw/x2WtKxmlyQxR0qUY49UiLhBNOX7VDHZywMle43NKEXnU6fn22fpJvQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-5.0.2.tgz", + "integrity": "sha512-EVRow9rnFgm/L1trbbnu2PGOND11IcSEdWXbrDbz9hH0/Kj3YM2AqMkkTN/EAWgawD5/zryyCy+3Vm05oSJ1Kg==", "dependencies": { - "@hpcc-js/wasm": "1.12.8", - "d3-dispatch": "^2.0.0", - "d3-format": "^2.0.0", - "d3-interpolate": "^2.0.1", - "d3-path": "^2.0.0", - "d3-timer": "^2.0.0", - "d3-transition": "^2.0.0", - "d3-zoom": "^2.0.0" + "@hpcc-js/wasm": "2.5.0", + "d3-dispatch": "^3.0.1", + "d3-format": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-path": "^3.1.0", + "d3-timer": "^3.0.1", + "d3-transition": "^3.0.1", + "d3-zoom": "^3.0.0" + }, + "engines": { + "node": ">=14" }, "peerDependencies": { - "d3-selection": "^2.0.0" - } - }, - "node_modules/d3-graphviz/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "node_modules/d3-graphviz/node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "node_modules/d3-graphviz/node_modules/d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" - } - }, - "node_modules/d3-graphviz/node_modules/d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "node_modules/d3-graphviz/node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "node_modules/d3-graphviz/node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", - "dependencies": { - "d3-color": "1 - 2" - } - }, - "node_modules/d3-graphviz/node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "node_modules/d3-graphviz/node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "node_modules/d3-graphviz/node_modules/d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "dependencies": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" - }, - "peerDependencies": { - "d3-selection": "2" - } - }, - "node_modules/d3-graphviz/node_modules/d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "d3-selection": "^3.0.0" } }, "node_modules/d3-hierarchy": { @@ -1140,9 +1056,9 @@ } }, "node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "engines": { "node": ">=12" } @@ -1199,9 +1115,12 @@ } }, "node_modules/d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-shape": { "version": "3.1.0", @@ -1277,14 +1196,6 @@ "node": ">=12" } }, - "node_modules/d3/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3907,26 +3818,26 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { "node": ">=12" } @@ -3970,11 +3881,11 @@ } }, "@hpcc-js/wasm": { - "version": "1.12.8", - "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-1.12.8.tgz", - "integrity": "sha512-n4q9ARKco2hpCLsuVaW6Az3cDVaua7B3DSONHkc49WtEzgY/btvcDG5Zr1P6PZDv0sQ7oPnAi9Y+W2DI++MgcQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.5.0.tgz", + "integrity": "sha512-G26BamgaHW46f6P8bmkygapgNcy+tTDMwIvCzmMzdp39sxUS1u4gaT/vR2SSDc4x3SfL5RE4B2B8ef/wd429Hg==", "requires": { - "yargs": "^17.3.1" + "yargs": "17.6.2" } }, "@humanwhocodes/config-array": { @@ -4406,12 +4317,12 @@ "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -4518,13 +4429,6 @@ "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" - }, - "dependencies": { - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - } } }, "d3-array": { @@ -4550,13 +4454,6 @@ "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" - }, - "dependencies": { - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - } } }, "d3-chord": { @@ -4600,13 +4497,6 @@ "requires": { "d3-dispatch": "1 - 3", "d3-selection": "3" - }, - "dependencies": { - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - } } }, "d3-dsv": { @@ -4656,91 +4546,18 @@ } }, "d3-graphviz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-4.1.1.tgz", - "integrity": "sha512-s0IVbKf8rs4eJI2xo5Umr7nXDX/LEZw/x2WtKxmlyQxR0qUY49UiLhBNOX7VDHZywMle43NKEXnU6fn22fpJvQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-5.0.2.tgz", + "integrity": "sha512-EVRow9rnFgm/L1trbbnu2PGOND11IcSEdWXbrDbz9hH0/Kj3YM2AqMkkTN/EAWgawD5/zryyCy+3Vm05oSJ1Kg==", "requires": { - "@hpcc-js/wasm": "1.12.8", - "d3-dispatch": "^2.0.0", - "d3-format": "^2.0.0", - "d3-interpolate": "^2.0.1", - "d3-path": "^2.0.0", - "d3-timer": "^2.0.0", - "d3-transition": "^2.0.0", - "d3-zoom": "^2.0.0" - }, - "dependencies": { - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" - } - }, - "d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", - "requires": { - "d3-color": "1 - 2" - } - }, - "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "requires": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" - } - } + "@hpcc-js/wasm": "2.5.0", + "d3-dispatch": "^3.0.1", + "d3-format": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-path": "^3.1.0", + "d3-timer": "^3.0.1", + "d3-transition": "^3.0.1", + "d3-zoom": "^3.0.0" } }, "d3-hierarchy": { @@ -4757,9 +4574,9 @@ } }, "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" }, "d3-polygon": { "version": "3.0.1", @@ -4798,9 +4615,9 @@ } }, "d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" }, "d3-shape": { "version": "3.1.0", @@ -6720,23 +6537,23 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, "yauzl": { "version": "2.10.0", diff --git a/editors/code/package.json b/editors/code/package.json index 89ff64fca738..454b95a63b21 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "d3": "^7.6.1", - "d3-graphviz": "^4.1.1", + "d3-graphviz": "^5.0.2", "vscode-languageclient": "^8.0.2" }, "devDependencies": { From eae615dfdd9222a49182e59cc15bd47da1d536b6 Mon Sep 17 00:00:00 2001 From: yukang Date: Sun, 8 Jan 2023 05:02:04 +0800 Subject: [PATCH 281/478] Remove unnecessary lseek syscall when using std::fs::read --- library/std/src/fs.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index f357d505fe89..6ddd5c28cc2d 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -250,7 +250,9 @@ pub fn read>(path: P) -> io::Result> { fn inner(path: &Path) -> io::Result> { let mut file = File::open(path)?; let mut bytes = Vec::new(); - file.read_to_end(&mut bytes)?; + let size = file.metadata().map(|m| m.len()).unwrap_or(0); + bytes.reserve(size as usize); + io::default_read_to_end(&mut file, &mut bytes)?; Ok(bytes) } inner(path.as_ref()) @@ -289,7 +291,9 @@ pub fn read_to_string>(path: P) -> io::Result { fn inner(path: &Path) -> io::Result { let mut file = File::open(path)?; let mut string = String::new(); - file.read_to_string(&mut string)?; + let size = file.metadata().map(|m| m.len()).unwrap_or(0); + string.reserve(size as usize); + io::default_read_to_string(&mut file, &mut string)?; Ok(string) } inner(path.as_ref()) From d23dce54ecbc5b94837ddb77db4b3a5edcdf0cd9 Mon Sep 17 00:00:00 2001 From: Andre Bogus Date: Sun, 8 Jan 2023 20:25:42 +0100 Subject: [PATCH 282/478] add a test against #100898 --- tests/ui/box_default.fixed | 10 ++++++++++ tests/ui/box_default.rs | 10 ++++++++++ tests/ui/box_default.stderr | 8 +++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/ui/box_default.fixed b/tests/ui/box_default.fixed index 68ab996a7049..7e9f074fdcab 100644 --- a/tests/ui/box_default.fixed +++ b/tests/ui/box_default.fixed @@ -54,4 +54,14 @@ impl Read for ImplementsDefault { fn issue_9621_dyn_trait() { let _: Box = Box::::default(); + issue_10089(); +} + +fn issue_10089() { + let _closure = || { + #[derive(Default)] + struct WeirdPathed; + + let _ = Box::::default(); + }; } diff --git a/tests/ui/box_default.rs b/tests/ui/box_default.rs index 20019c2ee5a0..5c8d0b8354cc 100644 --- a/tests/ui/box_default.rs +++ b/tests/ui/box_default.rs @@ -54,4 +54,14 @@ impl Read for ImplementsDefault { fn issue_9621_dyn_trait() { let _: Box = Box::new(ImplementsDefault::default()); + issue_10089(); +} + +fn issue_10089() { + let _closure = || { + #[derive(Default)] + struct WeirdPathed; + + let _ = Box::new(WeirdPathed::default()); + }; } diff --git a/tests/ui/box_default.stderr b/tests/ui/box_default.stderr index f77c97cdfa26..249eb340f96c 100644 --- a/tests/ui/box_default.stderr +++ b/tests/ui/box_default.stderr @@ -84,5 +84,11 @@ error: `Box::new(_)` of default value LL | let _: Box = Box::new(ImplementsDefault::default()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` -error: aborting due to 14 previous errors +error: `Box::new(_)` of default value + --> $DIR/box_default.rs:65:17 + | +LL | let _ = Box::new(WeirdPathed::default()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::::default()` + +error: aborting due to 15 previous errors From 262ff86138730c1eb65f3ec39dd9c93222ed77e7 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Sun, 8 Jan 2023 23:35:43 +0100 Subject: [PATCH 283/478] Make translate_message return result and add tests --- compiler/rustc_errors/src/emitter.rs | 11 +- compiler/rustc_errors/src/error.rs | 7 +- compiler/rustc_errors/src/json.rs | 9 +- compiler/rustc_errors/src/lib.rs | 12 +- compiler/rustc_errors/src/tests.rs | 183 ++++++++++++++++++ compiler/rustc_errors/src/translation.rs | 15 +- .../passes/lint/check_code_block_syntax.rs | 4 +- 7 files changed, 224 insertions(+), 17 deletions(-) create mode 100644 compiler/rustc_errors/src/tests.rs diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index 0ca200abe19f..7f01df321010 100644 --- a/compiler/rustc_errors/src/emitter.rs +++ b/compiler/rustc_errors/src/emitter.rs @@ -28,6 +28,7 @@ use rustc_error_messages::{FluentArgs, SpanLabel}; use rustc_span::hygiene::{ExpnKind, MacroKind}; use std::borrow::Cow; use std::cmp::{max, min, Reverse}; +use std::error::Report; use std::io::prelude::*; use std::io::{self, IsTerminal}; use std::iter; @@ -250,7 +251,7 @@ pub trait Emitter: Translate { let mut primary_span = diag.span.clone(); let suggestions = diag.suggestions.as_deref().unwrap_or(&[]); if let Some((sugg, rest)) = suggestions.split_first() { - let msg = self.translate_message(&sugg.msg, fluent_args); + let msg = self.translate_message(&sugg.msg, fluent_args).map_err(Report::new).unwrap(); if rest.is_empty() && // ^ if there is only one suggestion // don't display multi-suggestions as labels @@ -1325,7 +1326,7 @@ impl EmitterWriter { // very *weird* formats // see? for (text, style) in msg.iter() { - let text = self.translate_message(text, args); + let text = self.translate_message(text, args).map_err(Report::new).unwrap(); let lines = text.split('\n').collect::>(); if lines.len() > 1 { for (i, line) in lines.iter().enumerate() { @@ -1387,7 +1388,7 @@ impl EmitterWriter { label_width += 2; } for (text, _) in msg.iter() { - let text = self.translate_message(text, args); + let text = self.translate_message(text, args).map_err(Report::new).unwrap(); // Account for newlines to align output to its label. for (line, text) in normalize_whitespace(&text).lines().enumerate() { buffer.append( @@ -2301,7 +2302,9 @@ impl FileWithAnnotatedLines { hi.col_display += 1; } - let label = label.as_ref().map(|m| emitter.translate_message(m, args).to_string()); + let label = label.as_ref().map(|m| { + emitter.translate_message(m, args).map_err(Report::new).unwrap().to_string() + }); if lo.line != hi.line { let ml = MultilineAnnotation { diff --git a/compiler/rustc_errors/src/error.rs b/compiler/rustc_errors/src/error.rs index e1c8dcd3bd39..ec0a2fe8cd8d 100644 --- a/compiler/rustc_errors/src/error.rs +++ b/compiler/rustc_errors/src/error.rs @@ -65,11 +65,14 @@ impl fmt::Display for TranslateError<'_> { match self { Self::One { id, args, kind } => { - writeln!(f, "\nfailed while formatting fluent string `{id}`: ")?; + writeln!(f, "failed while formatting fluent string `{id}`: ")?; match kind { MessageMissing => writeln!(f, "message was missing")?, PrimaryBundleMissing => writeln!(f, "the primary bundle was missing")?, - AttributeMissing { attr } => writeln!(f, "the attribute `{attr}` was missing")?, + AttributeMissing { attr } => { + writeln!(f, "the attribute `{attr}` was missing")?; + writeln!(f, "help: add `.{attr} = `")?; + } ValueMissing => writeln!(f, "the value was missing")?, Fluent { errs } => { for err in errs { diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index a37073d8fa32..dc38b8725ad1 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -24,6 +24,7 @@ use rustc_data_structures::sync::Lrc; use rustc_error_messages::FluentArgs; use rustc_span::hygiene::ExpnData; use rustc_span::Span; +use std::error::Report; use std::io::{self, Write}; use std::path::Path; use std::sync::{Arc, Mutex}; @@ -321,7 +322,8 @@ impl Diagnostic { fn from_errors_diagnostic(diag: &crate::Diagnostic, je: &JsonEmitter) -> Diagnostic { let args = to_fluent_args(diag.args()); let sugg = diag.suggestions.iter().flatten().map(|sugg| { - let translated_message = je.translate_message(&sugg.msg, &args); + let translated_message = + je.translate_message(&sugg.msg, &args).map_err(Report::new).unwrap(); Diagnostic { message: translated_message.to_string(), code: None, @@ -411,7 +413,10 @@ impl DiagnosticSpan { Self::from_span_etc( span.span, span.is_primary, - span.label.as_ref().map(|m| je.translate_message(m, args)).map(|m| m.to_string()), + span.label + .as_ref() + .map(|m| je.translate_message(m, args).unwrap()) + .map(|m| m.to_string()), suggestion, je, ) diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 6f411c5174a0..0b5bfdc8e898 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -46,6 +46,7 @@ use rustc_span::{Loc, Span}; use std::any::Any; use std::borrow::Cow; +use std::error::Report; use std::fmt; use std::hash::Hash; use std::num::NonZeroUsize; @@ -65,6 +66,8 @@ mod lock; pub mod registry; mod snippet; mod styled_buffer; +#[cfg(test)] +mod tests; pub mod translation; pub use diagnostic_builder::IntoDiagnostic; @@ -627,7 +630,14 @@ impl Handler { ) -> SubdiagnosticMessage { let inner = self.inner.borrow(); let args = crate::translation::to_fluent_args(args); - SubdiagnosticMessage::Eager(inner.emitter.translate_message(&message, &args).to_string()) + SubdiagnosticMessage::Eager( + inner + .emitter + .translate_message(&message, &args) + .map_err(Report::new) + .unwrap() + .to_string(), + ) } // This is here to not allow mutation of flags; diff --git a/compiler/rustc_errors/src/tests.rs b/compiler/rustc_errors/src/tests.rs new file mode 100644 index 000000000000..47220b59bd44 --- /dev/null +++ b/compiler/rustc_errors/src/tests.rs @@ -0,0 +1,183 @@ +use crate::error::{TranslateError, TranslateErrorKind}; +use crate::fluent_bundle::*; +use crate::translation::Translate; +use crate::FluentBundle; +use rustc_data_structures::sync::Lrc; +use rustc_error_messages::fluent_bundle::resolver::errors::{ReferenceKind, ResolverError}; +use rustc_error_messages::langid; +use rustc_error_messages::DiagnosticMessage; + +struct Dummy { + bundle: FluentBundle, +} + +impl Translate for Dummy { + fn fluent_bundle(&self) -> Option<&Lrc> { + None + } + + fn fallback_fluent_bundle(&self) -> &FluentBundle { + &self.bundle + } +} + +fn make_dummy(ftl: &'static str) -> Dummy { + let resource = FluentResource::try_new(ftl.into()).expect("Failed to parse an FTL string."); + + let langid_en = langid!("en-US"); + let mut bundle = FluentBundle::new(vec![langid_en]); + + bundle.add_resource(resource).expect("Failed to add FTL resources to the bundle."); + + Dummy { bundle } +} + +#[test] +fn wellformed_fluent() { + let dummy = make_dummy("mir_build_borrow_of_moved_value = borrow of moved value + .label = value moved into `{$name}` here + .occurs_because_label = move occurs because `{$name}` has type `{$ty}` which does not implement the `Copy` trait + .value_borrowed_label = value borrowed here after move + .suggestion = borrow this binding in the pattern to avoid moving the value"); + + let mut args = FluentArgs::new(); + args.set("name", "Foo"); + args.set("ty", "std::string::String"); + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("suggestion".into()), + ); + + assert_eq!( + dummy.translate_message(&message, &args).unwrap(), + "borrow this binding in the pattern to avoid moving the value" + ); + } + + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("value_borrowed_label".into()), + ); + + assert_eq!( + dummy.translate_message(&message, &args).unwrap(), + "value borrowed here after move" + ); + } + + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("occurs_because_label".into()), + ); + + assert_eq!( + dummy.translate_message(&message, &args).unwrap(), + "move occurs because `\u{2068}Foo\u{2069}` has type `\u{2068}std::string::String\u{2069}` which does not implement the `Copy` trait" + ); + + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("label".into()), + ); + + assert_eq!( + dummy.translate_message(&message, &args).unwrap(), + "value moved into `\u{2068}Foo\u{2069}` here" + ); + } + } +} + +#[test] +fn misformed_fluent() { + let dummy = make_dummy("mir_build_borrow_of_moved_value = borrow of moved value + .label = value moved into `{name}` here + .occurs_because_label = move occurs because `{$oops}` has type `{$ty}` which does not implement the `Copy` trait + .suggestion = borrow this binding in the pattern to avoid moving the value"); + + let mut args = FluentArgs::new(); + args.set("name", "Foo"); + args.set("ty", "std::string::String"); + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("value_borrowed_label".into()), + ); + + let err = dummy.translate_message(&message, &args).unwrap_err(); + assert!( + matches!( + &err, + TranslateError::Two { + primary: box TranslateError::One { + kind: TranslateErrorKind::PrimaryBundleMissing, + .. + }, + fallback: box TranslateError::One { + kind: TranslateErrorKind::AttributeMissing { attr: "value_borrowed_label" }, + .. + } + } + ), + "{err:#?}" + ); + assert_eq!( + format!("{err}"), + "failed while formatting fluent string `mir_build_borrow_of_moved_value`: \nthe attribute `value_borrowed_label` was missing\nhelp: add `.value_borrowed_label = `\n" + ); + } + + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("label".into()), + ); + + let err = dummy.translate_message(&message, &args).unwrap_err(); + if let TranslateError::Two { + primary: box TranslateError::One { kind: TranslateErrorKind::PrimaryBundleMissing, .. }, + fallback: box TranslateError::One { kind: TranslateErrorKind::Fluent { errs }, .. }, + } = &err + && let [FluentError::ResolverError(ResolverError::Reference( + ReferenceKind::Message { id, .. } + | ReferenceKind::Variable { id, .. }, + ))] = &**errs + && id == "name" + {} else { + panic!("{err:#?}") + }; + assert_eq!( + format!("{err}"), + "failed while formatting fluent string `mir_build_borrow_of_moved_value`: \nargument `name` exists but was not referenced correctly\nhelp: try using `{$name}` instead\n" + ); + } + + { + let message = DiagnosticMessage::FluentIdentifier( + "mir_build_borrow_of_moved_value".into(), + Some("occurs_because_label".into()), + ); + + let err = dummy.translate_message(&message, &args).unwrap_err(); + if let TranslateError::Two { + primary: box TranslateError::One { kind: TranslateErrorKind::PrimaryBundleMissing, .. }, + fallback: box TranslateError::One { kind: TranslateErrorKind::Fluent { errs }, .. }, + } = &err + && let [FluentError::ResolverError(ResolverError::Reference( + ReferenceKind::Message { id, .. } + | ReferenceKind::Variable { id, .. }, + ))] = &**errs + && id == "oops" + {} else { + panic!("{err:#?}") + }; + assert_eq!( + format!("{err}"), + "failed while formatting fluent string `mir_build_borrow_of_moved_value`: \nthe fluent string has an argument `oops` that was not found.\nhelp: the arguments `name` and `ty` are available\n" + ); + } +} diff --git a/compiler/rustc_errors/src/translation.rs b/compiler/rustc_errors/src/translation.rs index 26c86cdaf456..addfc9726ca4 100644 --- a/compiler/rustc_errors/src/translation.rs +++ b/compiler/rustc_errors/src/translation.rs @@ -45,7 +45,10 @@ pub trait Translate { args: &FluentArgs<'_>, ) -> Cow<'_, str> { Cow::Owned( - messages.iter().map(|(m, _)| self.translate_message(m, args)).collect::(), + messages + .iter() + .map(|(m, _)| self.translate_message(m, args).map_err(Report::new).unwrap()) + .collect::(), ) } @@ -54,11 +57,11 @@ pub trait Translate { &'a self, message: &'a DiagnosticMessage, args: &'a FluentArgs<'_>, - ) -> Cow<'_, str> { + ) -> Result, TranslateError<'_>> { trace!(?message, ?args); let (identifier, attr) = match message { DiagnosticMessage::Str(msg) | DiagnosticMessage::Eager(msg) => { - return Cow::Borrowed(msg); + return Ok(Cow::Borrowed(msg)); } DiagnosticMessage::FluentIdentifier(identifier, attr) => (identifier, attr), }; @@ -86,7 +89,7 @@ pub trait Translate { } }; - let ret: Result, TranslateError<'_>> = try { + try { match self.fluent_bundle().map(|b| translate_with_bundle(b)) { // The primary bundle was present and translation succeeded Some(Ok(t)) => t, @@ -104,8 +107,6 @@ pub trait Translate { None => translate_with_bundle(self.fallback_fluent_bundle()) .map_err(|fallback| TranslateError::primary(identifier, args).and(fallback))?, } - }; - ret.map_err(Report::new) - .expect("failed to find message in primary or fallback fluent bundles") + } } } diff --git a/src/librustdoc/passes/lint/check_code_block_syntax.rs b/src/librustdoc/passes/lint/check_code_block_syntax.rs index 5aa4f238b2d1..7158355ffdac 100644 --- a/src/librustdoc/passes/lint/check_code_block_syntax.rs +++ b/src/librustdoc/passes/lint/check_code_block_syntax.rs @@ -156,7 +156,9 @@ impl Emitter for BufferEmitter { let mut buffer = self.buffer.borrow_mut(); let fluent_args = to_fluent_args(diag.args()); - let translated_main_message = self.translate_message(&diag.message[0].0, &fluent_args); + let translated_main_message = self + .translate_message(&diag.message[0].0, &fluent_args) + .unwrap_or_else(|e| panic!("{e}")); buffer.messages.push(format!("error from rustc: {}", translated_main_message)); if diag.is_error() { From 4c0c32c895df28b762a61958b21cbe4d68f60238 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Mon, 9 Jan 2023 00:23:27 +0100 Subject: [PATCH 284/478] Fix tests --- compiler/rustc_errors/src/tests.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/rustc_errors/src/tests.rs b/compiler/rustc_errors/src/tests.rs index 47220b59bd44..52103e460977 100644 --- a/compiler/rustc_errors/src/tests.rs +++ b/compiler/rustc_errors/src/tests.rs @@ -25,6 +25,11 @@ fn make_dummy(ftl: &'static str) -> Dummy { let resource = FluentResource::try_new(ftl.into()).expect("Failed to parse an FTL string."); let langid_en = langid!("en-US"); + + #[cfg(parallel_compiler)] + let mut bundle = FluentBundle::new_concurrent(vec![langid_en]); + + #[cfg(not(parallel_compiler))] let mut bundle = FluentBundle::new(vec![langid_en]); bundle.add_resource(resource).expect("Failed to add FTL resources to the bundle."); From 1ab06ed765e082e58fd1e8f07e46c5681632130a Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Fri, 6 Jan 2023 00:05:41 +0900 Subject: [PATCH 285/478] Add regression test for #100772 Signed-off-by: Yuki Okushi --- src/test/ui/lto/issue-100772.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/test/ui/lto/issue-100772.rs diff --git a/src/test/ui/lto/issue-100772.rs b/src/test/ui/lto/issue-100772.rs new file mode 100644 index 000000000000..d6b06719277e --- /dev/null +++ b/src/test/ui/lto/issue-100772.rs @@ -0,0 +1,11 @@ +// run-pass +// needs-sanitizer-cfi +// compile-flags: -Clto -Ctarget-feature=-crt-static -Zsanitizer=cfi +// no-prefer-dynamic +// only-x86_64-unknown-linux-gnu + +#![feature(allocator_api)] + +fn main() { + let _ = Box::new_in(&[0, 1], &std::alloc::Global); +} From ecc0507fdddce66e2d3af2c8bfe8e609eb6123bd Mon Sep 17 00:00:00 2001 From: Ezra Shaw Date: Sun, 8 Jan 2023 21:35:50 +1300 Subject: [PATCH 286/478] docs/test: add empty error-docs for `E0208`, `E0640` and `E0717` --- compiler/rustc_error_codes/src/error_codes.rs | 6 +++--- compiler/rustc_error_codes/src/error_codes/E0208.md | 1 + compiler/rustc_error_codes/src/error_codes/E0640.md | 1 + compiler/rustc_error_codes/src/error_codes/E0717.md | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 compiler/rustc_error_codes/src/error_codes/E0208.md create mode 100644 compiler/rustc_error_codes/src/error_codes/E0640.md create mode 100644 compiler/rustc_error_codes/src/error_codes/E0717.md diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 76d5da19399e..6db521374147 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -110,6 +110,7 @@ E0204: include_str!("./error_codes/E0204.md"), E0205: include_str!("./error_codes/E0205.md"), E0206: include_str!("./error_codes/E0206.md"), E0207: include_str!("./error_codes/E0207.md"), +E0208: include_str!("./error_codes/E0208.md"), E0210: include_str!("./error_codes/E0210.md"), E0211: include_str!("./error_codes/E0211.md"), E0212: include_str!("./error_codes/E0212.md"), @@ -387,6 +388,7 @@ E0636: include_str!("./error_codes/E0636.md"), E0637: include_str!("./error_codes/E0637.md"), E0638: include_str!("./error_codes/E0638.md"), E0639: include_str!("./error_codes/E0639.md"), +E0640: include_str!("./error_codes/E0640.md"), E0641: include_str!("./error_codes/E0641.md"), E0642: include_str!("./error_codes/E0642.md"), E0643: include_str!("./error_codes/E0643.md"), @@ -434,6 +436,7 @@ E0713: include_str!("./error_codes/E0713.md"), E0714: include_str!("./error_codes/E0714.md"), E0715: include_str!("./error_codes/E0715.md"), E0716: include_str!("./error_codes/E0716.md"), +E0717: include_str!("./error_codes/E0717.md"), E0718: include_str!("./error_codes/E0718.md"), E0719: include_str!("./error_codes/E0719.md"), E0720: include_str!("./error_codes/E0720.md"), @@ -540,7 +543,6 @@ E0791: include_str!("./error_codes/E0791.md"), // E0190, // deprecated: can only cast a &-pointer to an &-object // E0194, // merged into E0403 // E0196, // cannot determine a type for this closure - E0208, // internal error code // E0209, // builtin traits can only be implemented on structs or enums // E0213, // associated types are not accepted in this context // E0215, // angle-bracket notation is not stable with `Fn` @@ -633,14 +635,12 @@ E0791: include_str!("./error_codes/E0791.md"), // E0629, // missing 'feature' (rustc_const_unstable) // E0630, // rustc_const_unstable attribute must be paired with stable/unstable // attribute - E0640, // infer outlives requirements, internal error code // E0645, // trait aliases not finished // E0694, // an unknown tool name found in scoped attributes // E0702, // replaced with a generic attribute input check // E0707, // multiple elided lifetimes used in arguments of `async fn` // E0709, // multiple different lifetimes used in arguments of `async fn` E0711, // a feature has been declared with conflicting stability attributes, internal error code - E0717, // rustc_promotable without stability attribute, internal error code // E0721, // `await` keyword // E0723, // unstable feature in `const` context // E0738, // Removed; errored on `#[track_caller] fn`s in `extern "Rust" { ... }`. diff --git a/compiler/rustc_error_codes/src/error_codes/E0208.md b/compiler/rustc_error_codes/src/error_codes/E0208.md new file mode 100644 index 000000000000..7edd93e56a94 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0208.md @@ -0,0 +1 @@ +#### This error code is internal to the compiler and will not be emitted with normal Rust code. diff --git a/compiler/rustc_error_codes/src/error_codes/E0640.md b/compiler/rustc_error_codes/src/error_codes/E0640.md new file mode 100644 index 000000000000..7edd93e56a94 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0640.md @@ -0,0 +1 @@ +#### This error code is internal to the compiler and will not be emitted with normal Rust code. diff --git a/compiler/rustc_error_codes/src/error_codes/E0717.md b/compiler/rustc_error_codes/src/error_codes/E0717.md new file mode 100644 index 000000000000..7edd93e56a94 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0717.md @@ -0,0 +1 @@ +#### This error code is internal to the compiler and will not be emitted with normal Rust code. From 24ce65c8d6b0ab91426e9f702b49be18a47f48f6 Mon Sep 17 00:00:00 2001 From: Ezra Shaw Date: Sun, 8 Jan 2023 21:36:19 +1300 Subject: [PATCH 287/478] docs/test: add error-docs and UI test for `E0711` --- compiler/rustc_error_codes/src/error_codes.rs | 2 +- .../src/error_codes/E0711.md | 30 +++++++++++++++++++ src/test/ui/error-codes/E0711.rs | 18 +++++++++++ src/test/ui/error-codes/E0711.stderr | 15 ++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 compiler/rustc_error_codes/src/error_codes/E0711.md create mode 100644 src/test/ui/error-codes/E0711.rs create mode 100644 src/test/ui/error-codes/E0711.stderr diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 6db521374147..686c22bc386d 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -436,6 +436,7 @@ E0713: include_str!("./error_codes/E0713.md"), E0714: include_str!("./error_codes/E0714.md"), E0715: include_str!("./error_codes/E0715.md"), E0716: include_str!("./error_codes/E0716.md"), +E0711: include_str!("./error_codes/E0711.md"), E0717: include_str!("./error_codes/E0717.md"), E0718: include_str!("./error_codes/E0718.md"), E0719: include_str!("./error_codes/E0719.md"), @@ -640,7 +641,6 @@ E0791: include_str!("./error_codes/E0791.md"), // E0702, // replaced with a generic attribute input check // E0707, // multiple elided lifetimes used in arguments of `async fn` // E0709, // multiple different lifetimes used in arguments of `async fn` - E0711, // a feature has been declared with conflicting stability attributes, internal error code // E0721, // `await` keyword // E0723, // unstable feature in `const` context // E0738, // Removed; errored on `#[track_caller] fn`s in `extern "Rust" { ... }`. diff --git a/compiler/rustc_error_codes/src/error_codes/E0711.md b/compiler/rustc_error_codes/src/error_codes/E0711.md new file mode 100644 index 000000000000..a2150037f785 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0711.md @@ -0,0 +1,30 @@ +#### This error code is internal to the compiler and will not be emitted with normal Rust code. + +Feature declared with conflicting stability requirements. + +```compile_fail,E0711 +// NOTE: this attribute is perma-unstable and should *never* be used outside of +// stdlib and the compiler. +#![feature(staged_api)] + +#![stable(feature = "...", since = "1.0.0")] + +#[stable(feature = "foo", since = "1.0.0")] +fn foo_stable_1_0_0() {} + +// error: feature `foo` is declared stable since 1.29.0 +#[stable(feature = "foo", since = "1.29.0")] +fn foo_stable_1_29_0() {} + +// error: feature `foo` is declared unstable +#[unstable(feature = "foo", issue = "none")] +fn foo_unstable() {} +``` + +In the above example, the `foo` feature is first defined to be stable since +1.0.0, but is then re-declared stable since 1.29.0. This discrepancy in +versions causes an error. Furthermore, `foo` is then re-declared as unstable, +again the conflict causes an error. + +This error can be fixed by splitting the feature, this allows any +stability requirements and removes any possibility of conflict. diff --git a/src/test/ui/error-codes/E0711.rs b/src/test/ui/error-codes/E0711.rs new file mode 100644 index 000000000000..7d2044a7da2d --- /dev/null +++ b/src/test/ui/error-codes/E0711.rs @@ -0,0 +1,18 @@ +// copied from: src/test/ui/feature-gates/stability-attribute-consistency.rs + +#![feature(staged_api)] + +#![stable(feature = "stable_test_feature", since = "1.0.0")] + +#[stable(feature = "foo", since = "1.0.0")] +fn foo_stable_1_0_0() {} + +#[stable(feature = "foo", since = "1.29.0")] +//~^ ERROR feature `foo` is declared stable since 1.29.0 +fn foo_stable_1_29_0() {} + +#[unstable(feature = "foo", issue = "none")] +//~^ ERROR feature `foo` is declared unstable +fn foo_unstable() {} + +fn main() {} diff --git a/src/test/ui/error-codes/E0711.stderr b/src/test/ui/error-codes/E0711.stderr new file mode 100644 index 000000000000..f39cb4ecd4bd --- /dev/null +++ b/src/test/ui/error-codes/E0711.stderr @@ -0,0 +1,15 @@ +error[E0711]: feature `foo` is declared stable since 1.29.0, but was previously declared stable since 1.0.0 + --> $DIR/E0711.rs:10:1 + | +LL | #[stable(feature = "foo", since = "1.29.0")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0711]: feature `foo` is declared unstable, but was previously declared stable + --> $DIR/E0711.rs:14:1 + | +LL | #[unstable(feature = "foo", issue = "none")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0711`. From 2c92c72c46e6a300c902c6d0e1c4b5c6b9b5c179 Mon Sep 17 00:00:00 2001 From: Ezra Shaw Date: Mon, 9 Jan 2023 15:44:33 +1300 Subject: [PATCH 288/478] fix: fix CI errors --- .../ui/feature-gates/stability-attribute-consistency.stderr | 1 + .../ui/stability-attribute/stability-attribute-sanity.stderr | 2 +- src/test/ui/variance/variance-associated-consts.stderr | 1 + src/test/ui/variance/variance-associated-types.stderr | 1 + src/test/ui/variance/variance-object-types.stderr | 1 + src/test/ui/variance/variance-regions-direct.stderr | 1 + src/test/ui/variance/variance-regions-indirect.stderr | 1 + src/test/ui/variance/variance-trait-bounds.stderr | 1 + src/test/ui/variance/variance-trait-object-bound.stderr | 1 + src/test/ui/variance/variance-types-bounds.stderr | 1 + src/test/ui/variance/variance-types.stderr | 1 + src/tools/tidy/src/error_codes.rs | 4 +++- src/tools/tidy/src/style.rs | 4 ++++ 13 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/test/ui/feature-gates/stability-attribute-consistency.stderr b/src/test/ui/feature-gates/stability-attribute-consistency.stderr index d49b44c8a358..1b93d3c96376 100644 --- a/src/test/ui/feature-gates/stability-attribute-consistency.stderr +++ b/src/test/ui/feature-gates/stability-attribute-consistency.stderr @@ -12,3 +12,4 @@ LL | #[unstable(feature = "foo", issue = "none")] error: aborting due to 2 previous errors +For more information about this error, try `rustc --explain E0711`. diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr b/src/test/ui/stability-attribute/stability-attribute-sanity.stderr index 079230b2a316..89a8425f5e78 100644 --- a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr +++ b/src/test/ui/stability-attribute/stability-attribute-sanity.stderr @@ -132,5 +132,5 @@ LL | #[stable(feature = "a", since = "1.0.0")] error: aborting due to 20 previous errors -Some errors have detailed explanations: E0539, E0541, E0542, E0543, E0544, E0546, E0547, E0549. +Some errors have detailed explanations: E0539, E0541, E0542, E0543, E0544, E0546, E0547, E0549, E0711. For more information about an error, try `rustc --explain E0539`. diff --git a/src/test/ui/variance/variance-associated-consts.stderr b/src/test/ui/variance/variance-associated-consts.stderr index 219f5bca9e30..f9732d02cb28 100644 --- a/src/test/ui/variance/variance-associated-consts.stderr +++ b/src/test/ui/variance/variance-associated-consts.stderr @@ -6,3 +6,4 @@ LL | struct Foo { error: aborting due to previous error +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-associated-types.stderr b/src/test/ui/variance/variance-associated-types.stderr index 94f770eda33e..5ce62884e1d8 100644 --- a/src/test/ui/variance/variance-associated-types.stderr +++ b/src/test/ui/variance/variance-associated-types.stderr @@ -12,3 +12,4 @@ LL | struct Bar<'a, T : Trait<'a>> { error: aborting due to 2 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-object-types.stderr b/src/test/ui/variance/variance-object-types.stderr index ceee53aff105..1c3c1a6d1f22 100644 --- a/src/test/ui/variance/variance-object-types.stderr +++ b/src/test/ui/variance/variance-object-types.stderr @@ -6,3 +6,4 @@ LL | struct Foo<'a> { error: aborting due to previous error +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-regions-direct.stderr b/src/test/ui/variance/variance-regions-direct.stderr index 25fb22732151..27d69b6e8257 100644 --- a/src/test/ui/variance/variance-regions-direct.stderr +++ b/src/test/ui/variance/variance-regions-direct.stderr @@ -42,3 +42,4 @@ LL | enum Test8<'a, 'b, 'c:'b> { error: aborting due to 7 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-regions-indirect.stderr b/src/test/ui/variance/variance-regions-indirect.stderr index fc52492d7efd..535e97db3fb1 100644 --- a/src/test/ui/variance/variance-regions-indirect.stderr +++ b/src/test/ui/variance/variance-regions-indirect.stderr @@ -30,3 +30,4 @@ LL | struct Derived4<'a, 'b, 'c:'b> { error: aborting due to 5 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-trait-bounds.stderr b/src/test/ui/variance/variance-trait-bounds.stderr index e3ef339f423b..3f6ca62a6406 100644 --- a/src/test/ui/variance/variance-trait-bounds.stderr +++ b/src/test/ui/variance/variance-trait-bounds.stderr @@ -24,3 +24,4 @@ LL | struct TestBox+Setter> { error: aborting due to 4 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-trait-object-bound.stderr b/src/test/ui/variance/variance-trait-object-bound.stderr index c86cf1f82b45..9a2c924b96a9 100644 --- a/src/test/ui/variance/variance-trait-object-bound.stderr +++ b/src/test/ui/variance/variance-trait-object-bound.stderr @@ -6,3 +6,4 @@ LL | struct TOption<'a> { error: aborting due to previous error +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-types-bounds.stderr b/src/test/ui/variance/variance-types-bounds.stderr index dbe8af75d517..523763b8a07b 100644 --- a/src/test/ui/variance/variance-types-bounds.stderr +++ b/src/test/ui/variance/variance-types-bounds.stderr @@ -30,3 +30,4 @@ LL | struct TestObject { error: aborting due to 5 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/test/ui/variance/variance-types.stderr b/src/test/ui/variance/variance-types.stderr index 8358b18b73ce..5a5aaecffc5e 100644 --- a/src/test/ui/variance/variance-types.stderr +++ b/src/test/ui/variance/variance-types.stderr @@ -36,3 +36,4 @@ LL | enum Enum { error: aborting due to 6 previous errors +For more information about this error, try `rustc --explain E0208`. diff --git a/src/tools/tidy/src/error_codes.rs b/src/tools/tidy/src/error_codes.rs index 8d70335a9e7b..9aacc07e0ab4 100644 --- a/src/tools/tidy/src/error_codes.rs +++ b/src/tools/tidy/src/error_codes.rs @@ -27,7 +27,8 @@ const ERROR_DOCS_PATH: &str = "compiler/rustc_error_codes/src/error_codes/"; const ERROR_TESTS_PATH: &str = "src/test/ui/error-codes/"; // Error codes that (for some reason) can't have a doctest in their explanation. Error codes are still expected to provide a code example, even if untested. -const IGNORE_DOCTEST_CHECK: &[&str] = &["E0464", "E0570", "E0601", "E0602"]; +const IGNORE_DOCTEST_CHECK: &[&str] = + &["E0208", "E0464", "E0570", "E0601", "E0602", "E0640", "E0717"]; // Error codes that don't yet have a UI test. This list will eventually be removed. const IGNORE_UI_TEST_CHECK: &[&str] = &[ @@ -193,6 +194,7 @@ fn check_error_codes_docs( "warning: Error code `{err_code}` doesn't have a code example, all error codes are expected to have one \ (even if untested)." ); + return; } let test_ignored = IGNORE_DOCTEST_CHECK.contains(&&err_code); diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index f409a86db26c..2cf8f5c7ca32 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -64,6 +64,8 @@ const PROBLEMATIC_CONSTS: &[u32] = &[ 3735927486, 3735932941, 4027431614, 4276992702, ]; +const INTERNAL_COMPILER_DOCS_LINE: &str = "#### This error code is internal to the compiler and will not be emitted with normal Rust code."; + /// Parser states for `line_is_url`. #[derive(Clone, Copy, PartialEq)] #[allow(non_camel_case_types)] @@ -132,6 +134,8 @@ fn long_line_is_ok(extension: &str, is_error_code: bool, max_columns: usize, lin "ftl" => true, // non-error code markdown is allowed to be any length "md" if !is_error_code => true, + // HACK(Ezrashaw): there is no way to split a markdown header over multiple lines + "md" if line == INTERNAL_COMPILER_DOCS_LINE => true, _ => line_is_url(is_error_code, max_columns, line) || should_ignore(line), } } From abe040d876f697ef86b1ad395caf68c03ecbf046 Mon Sep 17 00:00:00 2001 From: kadmin Date: Sun, 4 Dec 2022 19:58:03 +0000 Subject: [PATCH 289/478] Change commit_if_ok to probe --- .../src/traits/const_evaluatable.rs | 11 ++---- .../const_kind_expr/wf_obligation.rs | 3 +- .../const_kind_expr/wf_obligation.stderr | 12 +------ .../ui/const-generics/issues/issue-105037.rs | 35 +++++++++++++++++++ 4 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 src/test/ui/const-generics/issues/issue-105037.rs diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index f8efe9bfa9f8..f449d360c168 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -173,16 +173,11 @@ fn satisfied_from_param_env<'tcx>( type BreakTy = (); fn visit_const(&mut self, c: ty::Const<'tcx>) -> ControlFlow { debug!("is_const_evaluatable: candidate={:?}", c); - if let Ok(()) = self.infcx.commit_if_ok(|_| { + if self.infcx.probe(|_| { let ocx = ObligationCtxt::new_in_snapshot(self.infcx); - if let Ok(()) = ocx.eq(&ObligationCause::dummy(), self.param_env, c.ty(), self.ct.ty()) - && let Ok(()) = ocx.eq(&ObligationCause::dummy(), self.param_env, c, self.ct) + ocx.eq(&ObligationCause::dummy(), self.param_env, c.ty(), self.ct.ty()).is_ok() + && ocx.eq(&ObligationCause::dummy(), self.param_env, c, self.ct).is_ok() && ocx.select_all_or_error().is_empty() - { - Ok(()) - } else { - Err(()) - } }) { ControlFlow::BREAK } else if let ty::ConstKind::Expr(e) = c.kind() { diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs index 6093fc70b169..b96e210808b9 100644 --- a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs +++ b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs @@ -15,8 +15,7 @@ where [(); (L - 1) + 1 + L]:, { foo::<_, L>([(); L + 1 + L]); - //~^ ERROR: mismatched types - //~^^ ERROR: unconstrained generic constant + //~^ ERROR: unconstrained generic constant } fn main() {} diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr index da5194696e65..09e5e3f862a2 100644 --- a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr +++ b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr @@ -1,12 +1,3 @@ -error[E0308]: mismatched types - --> $DIR/wf_obligation.rs:17:17 - | -LL | foo::<_, L>([(); L + 1 + L]); - | ^^^^^^^^^^^^^^^ expected `N + 1 + M`, found `L + 1 + L` - | - = note: expected constant `N + 1 + M` - found constant `L + 1 + L` - error: unconstrained generic constant --> $DIR/wf_obligation.rs:17:22 | @@ -15,6 +6,5 @@ LL | foo::<_, L>([(); L + 1 + L]); | = help: try adding a `where` bound using this expression: `where [(); L + 1 + L]:` -error: aborting due to 2 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/const-generics/issues/issue-105037.rs b/src/test/ui/const-generics/issues/issue-105037.rs new file mode 100644 index 000000000000..f7d239499439 --- /dev/null +++ b/src/test/ui/const-generics/issues/issue-105037.rs @@ -0,0 +1,35 @@ +// run-pass +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] +#![allow(dead_code)] + +trait Table: Sync { + const COLUMNS: usize; +} + +struct Table1; +impl Table for Table1 { + const COLUMNS: usize = 123; +} + +struct Table2; +impl Table for Table2 { + const COLUMNS: usize = 456; +} + +fn process_table, const D: usize>(_table: T) +where + [(); T::COLUMNS]:, +{ +} + +fn process_all_tables() +where + [(); Table2::::COLUMNS]:, + [(); Table1::::COLUMNS]:, +{ + process_table(Table1::); + process_table(Table2::); +} + +fn main() {} From 77b61379b6a808f388b347044b2d37a8968a274e Mon Sep 17 00:00:00 2001 From: kadmin Date: Tue, 13 Dec 2022 09:51:13 +0000 Subject: [PATCH 290/478] Change based on comments Instead of just switching to a probe, check for different matches, and see how many there are. If one, unify it, otherwise return true and let it be unified later. --- .../src/traits/const_evaluatable.rs | 33 +++++++++++++++---- .../const_kind_expr/wf_obligation.rs | 1 + .../const_kind_expr/wf_obligation.stderr | 12 ++++++- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index f449d360c168..4f0b5f594024 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -168,7 +168,9 @@ fn satisfied_from_param_env<'tcx>( param_env: ty::ParamEnv<'tcx>, infcx: &'a InferCtxt<'tcx>, + single_match: Option, ()>>, } + impl<'a, 'tcx> TypeVisitor<'tcx> for Visitor<'a, 'tcx> { type BreakTy = (); fn visit_const(&mut self, c: ty::Const<'tcx>) -> ControlFlow { @@ -179,7 +181,9 @@ fn satisfied_from_param_env<'tcx>( && ocx.eq(&ObligationCause::dummy(), self.param_env, c, self.ct).is_ok() && ocx.select_all_or_error().is_empty() }) { - ControlFlow::BREAK + self.single_match = + if self.single_match.is_none() { Some(Ok(c)) } else { Some(Err(())) }; + ControlFlow::CONTINUE } else if let ty::ConstKind::Expr(e) = c.kind() { e.visit_with(self) } else { @@ -195,22 +199,37 @@ fn satisfied_from_param_env<'tcx>( } } + let mut single_match: Option, ()>> = None; + for pred in param_env.caller_bounds() { match pred.kind().skip_binder() { ty::PredicateKind::ConstEvaluatable(ce) => { let b_ct = tcx.expand_abstract_consts(ce); - let mut v = Visitor { ct, infcx, param_env }; - let result = b_ct.visit_with(&mut v); - - if let ControlFlow::Break(()) = result { - debug!("is_const_evaluatable: yes"); - return true; + let mut v = Visitor { ct, infcx, param_env, single_match: None }; + let _ = b_ct.visit_with(&mut v); + if let Some(inner) = v.single_match { + single_match = if single_match.is_none() { Some(inner) } else { Some(Err(())) }; } } _ => {} // don't care } } + if let Some(c) = single_match { + if let Ok(c) = c { + let is_ok = infcx + .commit_if_ok(|_| { + let ocx = ObligationCtxt::new_in_snapshot(infcx); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); + if ocx.select_all_or_error().is_empty() { Ok(()) } else { Err(()) } + }) + .is_ok(); + assert!(is_ok); + } + return true; + } + debug!("is_const_evaluatable: no"); false } diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs index b96e210808b9..d64468767eb4 100644 --- a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs +++ b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs @@ -16,6 +16,7 @@ where { foo::<_, L>([(); L + 1 + L]); //~^ ERROR: unconstrained generic constant + //~| ERROR: mismatched types } fn main() {} diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr index 09e5e3f862a2..da5194696e65 100644 --- a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr +++ b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr @@ -1,3 +1,12 @@ +error[E0308]: mismatched types + --> $DIR/wf_obligation.rs:17:17 + | +LL | foo::<_, L>([(); L + 1 + L]); + | ^^^^^^^^^^^^^^^ expected `N + 1 + M`, found `L + 1 + L` + | + = note: expected constant `N + 1 + M` + found constant `L + 1 + L` + error: unconstrained generic constant --> $DIR/wf_obligation.rs:17:22 | @@ -6,5 +15,6 @@ LL | foo::<_, L>([(); L + 1 + L]); | = help: try adding a `where` bound using this expression: `where [(); L + 1 + L]:` -error: aborting due to previous error +error: aborting due to 2 previous errors +For more information about this error, try `rustc --explain E0308`. From b79a9a0900dd1d29d8bf49e73b5ac75acafd9c3b Mon Sep 17 00:00:00 2001 From: kadmin Date: Tue, 20 Dec 2022 03:36:32 +0000 Subject: [PATCH 291/478] Set !const_evaluatable if ambig. and not inferred This prevents an ICE due to a value not actually being evaluatable later. --- .../src/traits/const_evaluatable.rs | 22 +++++++++---------- .../const-generics/ensure_is_evaluatable.rs | 20 +++++++++++++++++ .../ensure_is_evaluatable.stderr | 18 +++++++++++++++ 3 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 src/test/ui/const-generics/ensure_is_evaluatable.rs create mode 100644 src/test/ui/const-generics/ensure_is_evaluatable.stderr diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index 4f0b5f594024..8530b96796f2 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -215,18 +215,16 @@ fn satisfied_from_param_env<'tcx>( } } - if let Some(c) = single_match { - if let Ok(c) = c { - let is_ok = infcx - .commit_if_ok(|_| { - let ocx = ObligationCtxt::new_in_snapshot(infcx); - assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); - assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); - if ocx.select_all_or_error().is_empty() { Ok(()) } else { Err(()) } - }) - .is_ok(); - assert!(is_ok); - } + if let Some(Ok(c)) = single_match { + let is_ok = infcx + .commit_if_ok(|_| { + let ocx = ObligationCtxt::new_in_snapshot(infcx); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); + if ocx.select_all_or_error().is_empty() { Ok(()) } else { Err(()) } + }) + .is_ok(); + assert!(is_ok); return true; } diff --git a/src/test/ui/const-generics/ensure_is_evaluatable.rs b/src/test/ui/const-generics/ensure_is_evaluatable.rs new file mode 100644 index 000000000000..1e8d8c3d3559 --- /dev/null +++ b/src/test/ui/const-generics/ensure_is_evaluatable.rs @@ -0,0 +1,20 @@ +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +fn foo() -> [(); N+2] +where + [(); N + 1]:, + [(); M + 1]:, +{ + bar() + //~^ ERROR: unconstrained +} + +fn bar() -> [(); N] +where + [(); N + 1]:, +{ + [(); N] +} + +fn main() {} diff --git a/src/test/ui/const-generics/ensure_is_evaluatable.stderr b/src/test/ui/const-generics/ensure_is_evaluatable.stderr new file mode 100644 index 000000000000..bf6c35ad8fd8 --- /dev/null +++ b/src/test/ui/const-generics/ensure_is_evaluatable.stderr @@ -0,0 +1,18 @@ +error: unconstrained generic constant + --> $DIR/ensure_is_evaluatable.rs:9:5 + | +LL | bar() + | ^^^ + | + = help: try adding a `where` bound using this expression: `where [(); N + 1]:` +note: required by a bound in `bar` + --> $DIR/ensure_is_evaluatable.rs:15:10 + | +LL | fn bar() -> [(); N] + | --- required by a bound in this +LL | where +LL | [(); N + 1]:, + | ^^^^^ required by this bound in `bar` + +error: aborting due to previous error + From 7c5cb737357518c9a704994e007b32ed0da214f3 Mon Sep 17 00:00:00 2001 From: kadmin Date: Tue, 20 Dec 2022 21:11:19 +0000 Subject: [PATCH 292/478] Check for duplicates --- .../src/traits/const_evaluatable.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index 8530b96796f2..c4d5cf0309b9 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -181,8 +181,11 @@ fn satisfied_from_param_env<'tcx>( && ocx.eq(&ObligationCause::dummy(), self.param_env, c, self.ct).is_ok() && ocx.select_all_or_error().is_empty() }) { - self.single_match = - if self.single_match.is_none() { Some(Ok(c)) } else { Some(Err(())) }; + self.single_match = match self.single_match { + None => Some(Ok(c)), + Some(Ok(o)) if o == c => Some(Ok(c)), + Some(_) => Some(Err(())), + }; ControlFlow::CONTINUE } else if let ty::ConstKind::Expr(e) = c.kind() { e.visit_with(self) @@ -207,8 +210,17 @@ fn satisfied_from_param_env<'tcx>( let b_ct = tcx.expand_abstract_consts(ce); let mut v = Visitor { ct, infcx, param_env, single_match: None }; let _ = b_ct.visit_with(&mut v); + if let Some(inner) = v.single_match { - single_match = if single_match.is_none() { Some(inner) } else { Some(Err(())) }; + single_match = if let Ok(inner) = inner { + match single_match { + None => Some(Ok(inner)), + Some(Ok(prev)) if prev == inner => Some(Ok(prev)), + Some(_) => Some(Err(())), + } + } else { + Some(Err(())) + }; } } _ => {} // don't care From 21c5ffe008cce39bcd676ed197f691adbfbf7a2f Mon Sep 17 00:00:00 2001 From: kadmin Date: Wed, 21 Dec 2022 21:53:52 +0000 Subject: [PATCH 293/478] Clean up Simplify match statement Add multiple tests - 1 test for checking `N + 1 + 1` does not unify with `N+1` - 2 tests for checking that a function that uses two parameters only returns the parameter that is actually used. - Check exact repeat predicates --- .../src/traits/const_evaluatable.rs | 32 ++++++------------- .../fn_with_two_const_inputs.rs | 23 +++++++++++++ .../fn_with_two_const_inputs.stderr | 18 +++++++++++ .../fn_with_two_same_const_inputs.rs | 22 +++++++++++++ .../const_kind_expr/wf_obligation.rs | 4 +-- .../ui/const-generics/two_matching_preds.rs | 19 +++++++++++ .../const-generics/unify_with_nested_expr.rs | 18 +++++++++++ .../unify_with_nested_expr.stderr | 22 +++++++++++++ 8 files changed, 133 insertions(+), 25 deletions(-) create mode 100644 src/test/ui/const-generics/fn_with_two_const_inputs.rs create mode 100644 src/test/ui/const-generics/fn_with_two_const_inputs.stderr create mode 100644 src/test/ui/const-generics/fn_with_two_same_const_inputs.rs create mode 100644 src/test/ui/const-generics/two_matching_preds.rs create mode 100644 src/test/ui/const-generics/unify_with_nested_expr.rs create mode 100644 src/test/ui/const-generics/unify_with_nested_expr.stderr diff --git a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs index c4d5cf0309b9..71fb6058cd2c 100644 --- a/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs +++ b/compiler/rustc_trait_selection/src/traits/const_evaluatable.rs @@ -186,8 +186,9 @@ fn satisfied_from_param_env<'tcx>( Some(Ok(o)) if o == c => Some(Ok(c)), Some(_) => Some(Err(())), }; - ControlFlow::CONTINUE - } else if let ty::ConstKind::Expr(e) = c.kind() { + } + + if let ty::ConstKind::Expr(e) = c.kind() { e.visit_with(self) } else { // FIXME(generic_const_exprs): This doesn't recurse into `>::ASSOC`'s substs. @@ -208,35 +209,20 @@ fn satisfied_from_param_env<'tcx>( match pred.kind().skip_binder() { ty::PredicateKind::ConstEvaluatable(ce) => { let b_ct = tcx.expand_abstract_consts(ce); - let mut v = Visitor { ct, infcx, param_env, single_match: None }; + let mut v = Visitor { ct, infcx, param_env, single_match }; let _ = b_ct.visit_with(&mut v); - if let Some(inner) = v.single_match { - single_match = if let Ok(inner) = inner { - match single_match { - None => Some(Ok(inner)), - Some(Ok(prev)) if prev == inner => Some(Ok(prev)), - Some(_) => Some(Err(())), - } - } else { - Some(Err(())) - }; - } + single_match = v.single_match; } _ => {} // don't care } } if let Some(Ok(c)) = single_match { - let is_ok = infcx - .commit_if_ok(|_| { - let ocx = ObligationCtxt::new_in_snapshot(infcx); - assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); - assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); - if ocx.select_all_or_error().is_empty() { Ok(()) } else { Err(()) } - }) - .is_ok(); - assert!(is_ok); + let ocx = ObligationCtxt::new(infcx); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c.ty(), ct.ty()).is_ok()); + assert!(ocx.eq(&ObligationCause::dummy(), param_env, c, ct).is_ok()); + assert!(ocx.select_all_or_error().is_empty()); return true; } diff --git a/src/test/ui/const-generics/fn_with_two_const_inputs.rs b/src/test/ui/const-generics/fn_with_two_const_inputs.rs new file mode 100644 index 000000000000..0d6246a9f02c --- /dev/null +++ b/src/test/ui/const-generics/fn_with_two_const_inputs.rs @@ -0,0 +1,23 @@ +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +const fn both(_: usize, b: usize) -> usize { + b +} + +fn foo() -> [(); N + 2] +where + [(); both(N + 1, M + 1)]:, +{ + bar() + //~^ ERROR: unconstrained generic constant +} + +fn bar() -> [(); N] +where + [(); N + 1]:, +{ + [(); N] +} + +fn main() {} diff --git a/src/test/ui/const-generics/fn_with_two_const_inputs.stderr b/src/test/ui/const-generics/fn_with_two_const_inputs.stderr new file mode 100644 index 000000000000..614e7e0d2fc2 --- /dev/null +++ b/src/test/ui/const-generics/fn_with_two_const_inputs.stderr @@ -0,0 +1,18 @@ +error: unconstrained generic constant + --> $DIR/fn_with_two_const_inputs.rs:12:5 + | +LL | bar() + | ^^^ + | + = help: try adding a `where` bound using this expression: `where [(); N + 1]:` +note: required by a bound in `bar` + --> $DIR/fn_with_two_const_inputs.rs:18:10 + | +LL | fn bar() -> [(); N] + | --- required by a bound in this +LL | where +LL | [(); N + 1]:, + | ^^^^^ required by this bound in `bar` + +error: aborting due to previous error + diff --git a/src/test/ui/const-generics/fn_with_two_same_const_inputs.rs b/src/test/ui/const-generics/fn_with_two_same_const_inputs.rs new file mode 100644 index 000000000000..f0ce093e07a4 --- /dev/null +++ b/src/test/ui/const-generics/fn_with_two_same_const_inputs.rs @@ -0,0 +1,22 @@ +// check-pass +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +const fn both(_: usize, b: usize) -> usize { + b +} + +fn foo() +where + [(); both(N + 1, N + 1)]:, +{ + bar::(); +} + +fn bar() +where + [(); N + 1]:, +{ +} + +fn main() {} diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs index d64468767eb4..6093fc70b169 100644 --- a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs +++ b/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs @@ -15,8 +15,8 @@ where [(); (L - 1) + 1 + L]:, { foo::<_, L>([(); L + 1 + L]); - //~^ ERROR: unconstrained generic constant - //~| ERROR: mismatched types + //~^ ERROR: mismatched types + //~^^ ERROR: unconstrained generic constant } fn main() {} diff --git a/src/test/ui/const-generics/two_matching_preds.rs b/src/test/ui/const-generics/two_matching_preds.rs new file mode 100644 index 000000000000..de608f73e2c0 --- /dev/null +++ b/src/test/ui/const-generics/two_matching_preds.rs @@ -0,0 +1,19 @@ +// check-pass +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +fn foo() +where + [(); N + 1]:, + [(); N + 1]:, +{ + bar::(); +} + +fn bar() +where + [(); N + 1]:, +{ +} + +fn main() {} diff --git a/src/test/ui/const-generics/unify_with_nested_expr.rs b/src/test/ui/const-generics/unify_with_nested_expr.rs new file mode 100644 index 000000000000..1271e0902a3b --- /dev/null +++ b/src/test/ui/const-generics/unify_with_nested_expr.rs @@ -0,0 +1,18 @@ +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +fn foo() +where + [(); N + 1 + 1]:, +{ + bar(); + //~^ ERROR: type annotations +} + +fn bar() +where + [(); N + 1]:, +{ +} + +fn main() {} diff --git a/src/test/ui/const-generics/unify_with_nested_expr.stderr b/src/test/ui/const-generics/unify_with_nested_expr.stderr new file mode 100644 index 000000000000..8bab0dff7f26 --- /dev/null +++ b/src/test/ui/const-generics/unify_with_nested_expr.stderr @@ -0,0 +1,22 @@ +error[E0284]: type annotations needed + --> $DIR/unify_with_nested_expr.rs:8:5 + | +LL | bar(); + | ^^^ cannot infer the value of the const parameter `N` declared on the function `bar` + | +note: required by a bound in `bar` + --> $DIR/unify_with_nested_expr.rs:14:10 + | +LL | fn bar() + | --- required by a bound in this +LL | where +LL | [(); N + 1]:, + | ^^^^^ required by this bound in `bar` +help: consider specifying the generic argument + | +LL | bar::(); + | +++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0284`. From 0dd26821783ccc809fb0995f178fd6c53f6eebd7 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 9 Jan 2023 11:59:09 +0100 Subject: [PATCH 294/478] Refactor replace_arith assists into one module --- .../src/handlers/replace_arith_op.rs | 226 ++++++++++++++++++ .../handlers/replace_arith_with_checked.rs | 45 ---- .../handlers/replace_arith_with_saturating.rs | 48 ---- .../handlers/replace_arith_with_wrapping.rs | 48 ---- crates/ide-assists/src/lib.rs | 10 +- crates/ide-assists/src/utils.rs | 124 +--------- 6 files changed, 234 insertions(+), 267 deletions(-) create mode 100644 crates/ide-assists/src/handlers/replace_arith_op.rs delete mode 100644 crates/ide-assists/src/handlers/replace_arith_with_checked.rs delete mode 100644 crates/ide-assists/src/handlers/replace_arith_with_saturating.rs delete mode 100644 crates/ide-assists/src/handlers/replace_arith_with_wrapping.rs diff --git a/crates/ide-assists/src/handlers/replace_arith_op.rs b/crates/ide-assists/src/handlers/replace_arith_op.rs new file mode 100644 index 000000000000..f1ca35cafc3a --- /dev/null +++ b/crates/ide-assists/src/handlers/replace_arith_op.rs @@ -0,0 +1,226 @@ +use ide_db::assists::{AssistId, AssistKind, GroupLabel}; +use syntax::{ + ast::{self, ArithOp, BinaryOp}, + AstNode, TextRange, +}; + +use crate::assist_context::{AssistContext, Assists}; + +// Assist: replace_arith_with_checked +// +// Replaces arithmetic on integers with the `checked_*` equivalent. +// +// ``` +// fn main() { +// let x = 1 $0+ 2; +// } +// ``` +// -> +// ``` +// fn main() { +// let x = 1.checked_add(2); +// } +// ``` +pub(crate) fn replace_arith_with_checked(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + replace_arith(acc, ctx, ArithKind::Checked) +} + +// Assist: replace_arith_with_saturating +// +// Replaces arithmetic on integers with the `saturating_*` equivalent. +// +// ``` +// fn main() { +// let x = 1 $0+ 2; +// } +// ``` +// -> +// ``` +// fn main() { +// let x = 1.saturating_add(2); +// } +// ``` +pub(crate) fn replace_arith_with_saturating( + acc: &mut Assists, + ctx: &AssistContext<'_>, +) -> Option<()> { + replace_arith(acc, ctx, ArithKind::Saturating) +} + +// Assist: replace_arith_with_wrapping +// +// Replaces arithmetic on integers with the `wrapping_*` equivalent. +// +// ``` +// fn main() { +// let x = 1 $0+ 2; +// } +// ``` +// -> +// ``` +// fn main() { +// let x = 1.wrapping_add(2); +// } +// ``` +pub(crate) fn replace_arith_with_wrapping( + acc: &mut Assists, + ctx: &AssistContext<'_>, +) -> Option<()> { + replace_arith(acc, ctx, ArithKind::Wrapping) +} + +fn replace_arith(acc: &mut Assists, ctx: &AssistContext<'_>, kind: ArithKind) -> Option<()> { + let (lhs, op, rhs) = parse_binary_op(ctx)?; + + if !is_primitive_int(ctx, &lhs) || !is_primitive_int(ctx, &rhs) { + return None; + } + + let start = lhs.syntax().text_range().start(); + let end = rhs.syntax().text_range().end(); + let range = TextRange::new(start, end); + + acc.add_group( + &GroupLabel("replace_arith".into()), + kind.assist_id(), + kind.label(), + range, + |builder| { + let method_name = kind.method_name(op); + + builder.replace(range, format!("{lhs}.{method_name}({rhs})")) + }, + ) +} + +fn is_primitive_int(ctx: &AssistContext<'_>, expr: &ast::Expr) -> bool { + match ctx.sema.type_of_expr(expr) { + Some(ty) => ty.adjusted().is_int_or_uint(), + _ => false, + } +} + +/// Extract the operands of an arithmetic expression (e.g. `1 + 2` or `1.checked_add(2)`) +fn parse_binary_op(ctx: &AssistContext<'_>) -> Option<(ast::Expr, ArithOp, ast::Expr)> { + let expr = ctx.find_node_at_offset::()?; + + let op = match expr.op_kind() { + Some(BinaryOp::ArithOp(ArithOp::Add)) => ArithOp::Add, + Some(BinaryOp::ArithOp(ArithOp::Sub)) => ArithOp::Sub, + Some(BinaryOp::ArithOp(ArithOp::Mul)) => ArithOp::Mul, + Some(BinaryOp::ArithOp(ArithOp::Div)) => ArithOp::Div, + _ => return None, + }; + + let lhs = expr.lhs()?; + let rhs = expr.rhs()?; + + Some((lhs, op, rhs)) +} + +pub(crate) enum ArithKind { + Saturating, + Wrapping, + Checked, +} + +impl ArithKind { + fn assist_id(&self) -> AssistId { + let s = match self { + ArithKind::Saturating => "replace_arith_with_saturating", + ArithKind::Checked => "replace_arith_with_checked", + ArithKind::Wrapping => "replace_arith_with_wrapping", + }; + + AssistId(s, AssistKind::RefactorRewrite) + } + + fn label(&self) -> &'static str { + match self { + ArithKind::Saturating => "Replace arithmetic with call to saturating_*", + ArithKind::Checked => "Replace arithmetic with call to checked_*", + ArithKind::Wrapping => "Replace arithmetic with call to wrapping_*", + } + } + + fn method_name(&self, op: ArithOp) -> String { + let prefix = match self { + ArithKind::Checked => "checked_", + ArithKind::Wrapping => "wrapping_", + ArithKind::Saturating => "saturating_", + }; + + let suffix = match op { + ArithOp::Add => "add", + ArithOp::Sub => "sub", + ArithOp::Mul => "mul", + ArithOp::Div => "div", + _ => unreachable!("this function should only be called with +, -, / or *"), + }; + format!("{prefix}{suffix}") + } +} + +#[cfg(test)] +mod tests { + use crate::tests::check_assist; + + use super::*; + + #[test] + fn arith_kind_method_name() { + assert_eq!(ArithKind::Saturating.method_name(ArithOp::Add), "saturating_add"); + assert_eq!(ArithKind::Checked.method_name(ArithOp::Sub), "checked_sub"); + } + + #[test] + fn replace_arith_with_checked_add() { + check_assist( + replace_arith_with_checked, + r#" +fn main() { + let x = 1 $0+ 2; +} +"#, + r#" +fn main() { + let x = 1.checked_add(2); +} +"#, + ) + } + + #[test] + fn replace_arith_with_saturating_add() { + check_assist( + replace_arith_with_saturating, + r#" +fn main() { + let x = 1 $0+ 2; +} +"#, + r#" +fn main() { + let x = 1.saturating_add(2); +} +"#, + ) + } + + #[test] + fn replace_arith_with_wrapping_add() { + check_assist( + replace_arith_with_wrapping, + r#" +fn main() { + let x = 1 $0+ 2; +} +"#, + r#" +fn main() { + let x = 1.wrapping_add(2); +} +"#, + ) + } +} diff --git a/crates/ide-assists/src/handlers/replace_arith_with_checked.rs b/crates/ide-assists/src/handlers/replace_arith_with_checked.rs deleted file mode 100644 index ff1fba5818cc..000000000000 --- a/crates/ide-assists/src/handlers/replace_arith_with_checked.rs +++ /dev/null @@ -1,45 +0,0 @@ -use crate::assist_context::{AssistContext, Assists}; -use crate::utils::{replace_arith, ArithKind}; - -// Assist: replace_arith_with_checked -// -// Replaces arithmetic on integers with the `checked_*` equivalent. -// -// ``` -// fn main() { -// let x = 1 $0+ 2; -// } -// ``` -// -> -// ``` -// fn main() { -// let x = 1.checked_add(2); -// } -// ``` -pub(crate) fn replace_arith_with_checked(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - replace_arith(acc, ctx, ArithKind::Checked) -} - -#[cfg(test)] -mod tests { - use crate::tests::check_assist; - - use super::*; - - #[test] - fn replace_arith_with_saturating_add() { - check_assist( - replace_arith_with_checked, - r#" -fn main() { - let x = 1 $0+ 2; -} -"#, - r#" -fn main() { - let x = 1.checked_add(2); -} -"#, - ) - } -} diff --git a/crates/ide-assists/src/handlers/replace_arith_with_saturating.rs b/crates/ide-assists/src/handlers/replace_arith_with_saturating.rs deleted file mode 100644 index 717875e84f03..000000000000 --- a/crates/ide-assists/src/handlers/replace_arith_with_saturating.rs +++ /dev/null @@ -1,48 +0,0 @@ -use crate::assist_context::{AssistContext, Assists}; -use crate::utils::{replace_arith, ArithKind}; - -// Assist: replace_arith_with_saturating -// -// Replaces arithmetic on integers with the `saturating_*` equivalent. -// -// ``` -// fn main() { -// let x = 1 $0+ 2; -// } -// ``` -// -> -// ``` -// fn main() { -// let x = 1.saturating_add(2); -// } -// ``` -pub(crate) fn replace_arith_with_saturating( - acc: &mut Assists, - ctx: &AssistContext<'_>, -) -> Option<()> { - replace_arith(acc, ctx, ArithKind::Saturating) -} - -#[cfg(test)] -mod tests { - use crate::tests::check_assist; - - use super::*; - - #[test] - fn replace_arith_with_saturating_add() { - check_assist( - replace_arith_with_saturating, - r#" -fn main() { - let x = 1 $0+ 2; -} -"#, - r#" -fn main() { - let x = 1.saturating_add(2); -} -"#, - ) - } -} diff --git a/crates/ide-assists/src/handlers/replace_arith_with_wrapping.rs b/crates/ide-assists/src/handlers/replace_arith_with_wrapping.rs deleted file mode 100644 index e0a90292b194..000000000000 --- a/crates/ide-assists/src/handlers/replace_arith_with_wrapping.rs +++ /dev/null @@ -1,48 +0,0 @@ -use crate::assist_context::{AssistContext, Assists}; -use crate::utils::{replace_arith, ArithKind}; - -// Assist: replace_arith_with_wrapping -// -// Replaces arithmetic on integers with the `wrapping_*` equivalent. -// -// ``` -// fn main() { -// let x = 1 $0+ 2; -// } -// ``` -// -> -// ``` -// fn main() { -// let x = 1.wrapping_add(2); -// } -// ``` -pub(crate) fn replace_arith_with_wrapping( - acc: &mut Assists, - ctx: &AssistContext<'_>, -) -> Option<()> { - replace_arith(acc, ctx, ArithKind::Wrapping) -} - -#[cfg(test)] -mod tests { - use crate::tests::check_assist; - - use super::*; - - #[test] - fn replace_arith_with_saturating_add() { - check_assist( - replace_arith_with_wrapping, - r#" -fn main() { - let x = 1 $0+ 2; -} -"#, - r#" -fn main() { - let x = 1.wrapping_add(2); -} -"#, - ) - } -} diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index 3938fa098353..0255ffdea3f2 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -183,9 +183,7 @@ mod handlers { mod replace_derive_with_manual_impl; mod replace_if_let_with_match; mod replace_or_with_or_else; - mod replace_arith_with_checked; - mod replace_arith_with_wrapping; - mod replace_arith_with_saturating; + mod replace_arith_op; mod introduce_named_generic; mod replace_let_with_if_let; mod replace_qualified_name_with_use; @@ -289,9 +287,9 @@ mod handlers { replace_or_with_or_else::replace_or_with_or_else, replace_turbofish_with_explicit_type::replace_turbofish_with_explicit_type, replace_qualified_name_with_use::replace_qualified_name_with_use, - replace_arith_with_wrapping::replace_arith_with_wrapping, - replace_arith_with_checked::replace_arith_with_checked, - replace_arith_with_saturating::replace_arith_with_saturating, + replace_arith_op::replace_arith_with_wrapping, + replace_arith_op::replace_arith_with_checked, + replace_arith_op::replace_arith_with_saturating, sort_items::sort_items, split_import::split_import, toggle_ignore::toggle_ignore, diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs index 0227222c0896..db32e7182c44 100644 --- a/crates/ide-assists/src/utils.rs +++ b/crates/ide-assists/src/utils.rs @@ -4,27 +4,21 @@ use std::ops; pub(crate) use gen_trait_fn_body::gen_trait_fn_body; use hir::{db::HirDatabase, HirDisplay, Semantics}; -use ide_db::{ - assists::{AssistId, AssistKind}, - famous_defs::FamousDefs, - path_transform::PathTransform, - RootDatabase, SnippetCap, -}; +use ide_db::{famous_defs::FamousDefs, path_transform::PathTransform, RootDatabase, SnippetCap}; use stdx::format_to; use syntax::{ ast::{ self, edit::{self, AstNodeEdit}, edit_in_place::{AttrsOwnerEdit, Removable}, - make, ArithOp, BinExpr, BinaryOp, Expr, HasArgList, HasAttrs, HasGenericParams, HasName, - HasTypeBounds, Whitespace, + make, HasArgList, HasAttrs, HasGenericParams, HasName, HasTypeBounds, Whitespace, }, - ted, AstNode, AstToken, Direction, SmolStr, SourceFile, + ted, AstNode, AstToken, Direction, SourceFile, SyntaxKind::*, SyntaxNode, TextRange, TextSize, T, }; -use crate::assist_context::{AssistContext, Assists, SourceChangeBuilder}; +use crate::assist_context::{AssistContext, SourceChangeBuilder}; pub(crate) mod suggest_name; mod gen_trait_fn_body; @@ -711,113 +705,3 @@ pub(crate) fn convert_param_list_to_arg_list(list: ast::ParamList) -> ast::ArgLi } make::arg_list(args) } - -pub(crate) enum ArithKind { - Saturating, - Wrapping, - Checked, -} - -impl ArithKind { - fn assist_id(&self) -> AssistId { - let s = match self { - ArithKind::Saturating => "replace_arith_with_saturating", - ArithKind::Checked => "replace_arith_with_checked", - ArithKind::Wrapping => "replace_arith_with_wrapping", - }; - - AssistId(s, AssistKind::RefactorRewrite) - } - - fn label(&self) -> &'static str { - match self { - ArithKind::Saturating => "Replace arithmetic with call to saturating_*", - ArithKind::Checked => "Replace arithmetic with call to checked_*", - ArithKind::Wrapping => "Replace arithmetic with call to wrapping_*", - } - } - - fn method_name(&self, op: ArithOp) -> SmolStr { - // is this too much effort to avoid an allocation? is there a better way? - let mut bytes = [0u8; 14]; - let prefix = match self { - ArithKind::Checked => "checked_", - ArithKind::Wrapping => "wrapping_", - ArithKind::Saturating => "saturating_", - }; - - bytes[0..(prefix.len())].copy_from_slice(prefix.as_bytes()); - - let suffix = match op { - ArithOp::Add => "add", - ArithOp::Sub => "sub", - ArithOp::Mul => "mul", - ArithOp::Div => "div", - _ => unreachable!("this function should only be called with +, -, / or *"), - }; - - bytes[(prefix.len())..(prefix.len() + suffix.len())].copy_from_slice(suffix.as_bytes()); - - let len = prefix.len() + suffix.len(); - let s = core::str::from_utf8(&bytes[0..len]).unwrap(); - SmolStr::from(s) - } -} - -pub(crate) fn replace_arith( - acc: &mut Assists, - ctx: &AssistContext<'_>, - kind: ArithKind, -) -> Option<()> { - let (lhs, op, rhs) = parse_binary_op(ctx)?; - - if !is_primitive_int(ctx, &lhs) || !is_primitive_int(ctx, &rhs) { - return None; - } - - let start = lhs.syntax().text_range().start(); - let end = rhs.syntax().text_range().end(); - let range = TextRange::new(start, end); - - acc.add(kind.assist_id(), kind.label(), range, |builder| { - let method_name = kind.method_name(op); - - builder.replace(range, format!("{lhs}.{method_name}({rhs})")) - }) -} - -fn is_primitive_int(ctx: &AssistContext<'_>, expr: &Expr) -> bool { - match ctx.sema.type_of_expr(expr) { - Some(ty) => ty.adjusted().is_int_or_uint(), - _ => false, - } -} - -/// Extract the operands of an arithmetic expression (e.g. `1 + 2` or `1.checked_add(2)`) -fn parse_binary_op(ctx: &AssistContext<'_>) -> Option<(Expr, ArithOp, Expr)> { - let expr = ctx.find_node_at_offset::()?; - - let op = match expr.op_kind() { - Some(BinaryOp::ArithOp(ArithOp::Add)) => ArithOp::Add, - Some(BinaryOp::ArithOp(ArithOp::Sub)) => ArithOp::Sub, - Some(BinaryOp::ArithOp(ArithOp::Mul)) => ArithOp::Mul, - Some(BinaryOp::ArithOp(ArithOp::Div)) => ArithOp::Div, - _ => return None, - }; - - let lhs = expr.lhs()?; - let rhs = expr.rhs()?; - - Some((lhs, op, rhs)) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn arith_kind_method_name() { - assert_eq!(ArithKind::Saturating.method_name(ArithOp::Add), "saturating_add"); - assert_eq!(ArithKind::Checked.method_name(ArithOp::Sub), "checked_sub"); - } -} From 9290399ec438c8ba6f3819bbd16212dfabbcb610 Mon Sep 17 00:00:00 2001 From: unvalley Date: Sat, 26 Nov 2022 23:00:03 +0900 Subject: [PATCH 295/478] fix: rename to extract_expressions_from_format_string --- ...extract_expressions_from_format_string.rs} | 21 ++++--- crates/ide-assists/src/lib.rs | 4 +- crates/ide-assists/src/tests/generated.rs | 62 +++++++++---------- 3 files changed, 45 insertions(+), 42 deletions(-) rename crates/ide-assists/src/handlers/{move_format_string_arg.rs => extract_expressions_from_format_string.rs} (93%) diff --git a/crates/ide-assists/src/handlers/move_format_string_arg.rs b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs similarity index 93% rename from crates/ide-assists/src/handlers/move_format_string_arg.rs rename to crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs index 11db6ae7f7b8..b1bc2a9e6dbd 100644 --- a/crates/ide-assists/src/handlers/move_format_string_arg.rs +++ b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs @@ -10,7 +10,7 @@ use itertools::Itertools; use stdx::format_to; use syntax::{ast, AstNode, AstToken, NodeOrToken, SyntaxKind::COMMA, TextRange}; -// Assist: move_format_string_arg +// Assist: extract_expressions_from_format_string // // Move an expression out of a format string. // @@ -40,7 +40,10 @@ use syntax::{ast, AstNode, AstToken, NodeOrToken, SyntaxKind::COMMA, TextRange}; // } // ``` -pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { +pub(crate) fn extract_expressions_from_format_string( + acc: &mut Assists, + ctx: &AssistContext<'_>, +) -> Option<()> { let fmt_string = ctx.find_token_at_offset::()?; let tt = fmt_string.syntax().parent().and_then(ast::TokenTree::cast)?; @@ -58,7 +61,7 @@ pub(crate) fn move_format_string_arg(acc: &mut Assists, ctx: &AssistContext<'_>) acc.add( AssistId( - "move_format_string_arg", + "extract_expressions_from_format_string", // if there aren't any expressions, then make the assist a RefactorExtract if extracted_args.iter().filter(|f| matches!(f, Arg::Expr(_))).count() == 0 { AssistKind::RefactorExtract @@ -171,7 +174,7 @@ macro_rules! print { #[test] fn multiple_middle_arg() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { @@ -192,7 +195,7 @@ fn main() { #[test] fn single_arg() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { @@ -213,7 +216,7 @@ fn main() { #[test] fn multiple_middle_placeholders_arg() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { @@ -234,7 +237,7 @@ fn main() { #[test] fn multiple_trailing_args() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { @@ -255,7 +258,7 @@ fn main() { #[test] fn improper_commas() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { @@ -276,7 +279,7 @@ fn main() { #[test] fn nested_tt() { check_assist( - move_format_string_arg, + extract_expressions_from_format_string, &add_macro_decl( r#" fn main() { diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index 8b1247c640a9..0bf502fdbcd9 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -138,7 +138,7 @@ mod handlers { mod flip_binexpr; mod flip_comma; mod flip_trait_bound; - mod move_format_string_arg; + mod extract_expressions_from_format_string; mod generate_constant; mod generate_default_from_enum_variant; mod generate_default_from_new; @@ -230,6 +230,7 @@ mod handlers { convert_while_to_loop::convert_while_to_loop, destructure_tuple_binding::destructure_tuple_binding, expand_glob_import::expand_glob_import, + extract_expressions_from_format_string::extract_expressions_from_format_string, extract_struct_from_enum_variant::extract_struct_from_enum_variant, extract_type_alias::extract_type_alias, fix_visibility::fix_visibility, @@ -264,7 +265,6 @@ mod handlers { merge_match_arms::merge_match_arms, move_bounds::move_bounds_to_where_clause, move_const_to_impl::move_const_to_impl, - move_format_string_arg::move_format_string_arg, move_guard::move_arm_cond_to_match_guard, move_guard::move_guard_to_arm_body, move_module_to_file::move_module_to_file, diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 80b8c27c7c05..5e24de620777 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -624,6 +624,37 @@ fn qux(bar: Bar, baz: Baz) {} ) } +#[test] +fn doctest_extract_expressions_from_format_string() { + check_doc_test( + "extract_expressions_from_format_string", + r#####" +macro_rules! format_args { + ($lit:literal $(tt:tt)*) => { 0 }, +} +macro_rules! print { + ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); +} + +fn main() { + print!("{x + 1}$0"); +} +"#####, + r#####" +macro_rules! format_args { + ($lit:literal $(tt:tt)*) => { 0 }, +} +macro_rules! print { + ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); +} + +fn main() { + print!("{}"$0, x + 1); +} +"#####, + ) +} + #[test] fn doctest_extract_function() { check_doc_test( @@ -1703,37 +1734,6 @@ impl S { ) } -#[test] -fn doctest_move_format_string_arg() { - check_doc_test( - "move_format_string_arg", - r#####" -macro_rules! format_args { - ($lit:literal $(tt:tt)*) => { 0 }, -} -macro_rules! print { - ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); -} - -fn main() { - print!("{x + 1}$0"); -} -"#####, - r#####" -macro_rules! format_args { - ($lit:literal $(tt:tt)*) => { 0 }, -} -macro_rules! print { - ($($arg:tt)*) => (std::io::_print(format_args!($($arg)*))); -} - -fn main() { - print!("{}"$0, x + 1); -} -"#####, - ) -} - #[test] fn doctest_move_from_mod_rs() { check_doc_test( From 796a1064122d7e85b509716d46beb6bb3d267811 Mon Sep 17 00:00:00 2001 From: unvalley Date: Sat, 26 Nov 2022 23:01:52 +0900 Subject: [PATCH 296/478] fix: ide assist handlers order --- crates/ide-assists/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index 0bf502fdbcd9..cdb9c70f71be 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -128,6 +128,7 @@ mod handlers { mod convert_while_to_loop; mod destructure_tuple_binding; mod expand_glob_import; + mod extract_expressions_from_format_string; mod extract_function; mod extract_module; mod extract_struct_from_enum_variant; @@ -138,7 +139,6 @@ mod handlers { mod flip_binexpr; mod flip_comma; mod flip_trait_bound; - mod extract_expressions_from_format_string; mod generate_constant; mod generate_default_from_enum_variant; mod generate_default_from_new; From 13267adb12b6a62d69c5ca0cf872beba9413b6ec Mon Sep 17 00:00:00 2001 From: unvalley Date: Sun, 27 Nov 2022 14:44:32 +0900 Subject: [PATCH 297/478] fix: to leave Ident in parse_format_exprs --- .../src/syntax_helpers/format_string_exprs.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs index f5f03d70b013..6ff580c16761 100644 --- a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs +++ b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs @@ -140,8 +140,8 @@ pub fn parse_format_exprs(input: &str) -> Result<(String, Vec), ()> { output.push_str(trimmed); } else if matches!(state, State::Expr) { extracted_expressions.push(Arg::Expr(trimmed.into())); - } else { - extracted_expressions.push(Arg::Ident(trimmed.into())); + } else if matches!(state, State::Ident) { + output.push_str(trimmed); } output.push(chr); @@ -218,9 +218,9 @@ mod tests { let test_vector = &[ ("no expressions", expect![["no expressions"]]), (r"no expressions with \$0$1", expect![r"no expressions with \\\$0\$1"]), - ("{expr} is {2 + 2}", expect![["{} is {}; expr, 2 + 2"]]), - ("{expr:?}", expect![["{:?}; expr"]]), - ("{expr:1$}", expect![[r"{:1\$}; expr"]]), + ("{expr} is {2 + 2}", expect![["{expr} is {}; 2 + 2"]]), + ("{expr:?}", expect![["{expr:?}"]]), + ("{expr:1$}", expect![[r"{expr:1\$}"]]), ("{:1$}", expect![[r"{:1\$}; $1"]]), ("{:>padding$}", expect![[r"{:>padding\$}; $1"]]), ("{}, {}, {0}", expect![[r"{}, {}, {0}; $1, $2"]]), @@ -230,8 +230,8 @@ mod tests { ("malformed}", expect![["-"]]), ("{{correct", expect![["{{correct"]]), ("correct}}", expect![["correct}}"]]), - ("{correct}}}", expect![["{}}}; correct"]]), - ("{correct}}}}}", expect![["{}}}}}; correct"]]), + ("{correct}}}", expect![["{correct}}}"]]), + ("{correct}}}}}", expect![["{correct}}}}}"]]), ("{incorrect}}", expect![["-"]]), ("placeholders {} {}", expect![["placeholders {} {}; $1, $2"]]), ("mixed {} {2 + 2} {}", expect![["mixed {} {} {}; $1, 2 + 2, $2"]]), @@ -239,7 +239,7 @@ mod tests { "{SomeStruct { val_a: 0, val_b: 1 }}", expect![["{}; SomeStruct { val_a: 0, val_b: 1 }"]], ), - ("{expr:?} is {2.32f64:.5}", expect![["{:?} is {:.5}; expr, 2.32f64"]]), + ("{expr:?} is {2.32f64:.5}", expect![["{expr:?} is {:.5}; 2.32f64"]]), ( "{SomeStruct { val_a: 0, val_b: 1 }:?}", expect![["{:?}; SomeStruct { val_a: 0, val_b: 1 }"]], From 29f3d7dee75e20eeec573065dc01070544d3d6e3 Mon Sep 17 00:00:00 2001 From: unvalley Date: Sun, 27 Nov 2022 14:49:30 +0900 Subject: [PATCH 298/478] test: fix arg_type test --- crates/ide-db/src/syntax_helpers/format_string_exprs.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs index 6ff580c16761..fcef71fb74e7 100644 --- a/crates/ide-db/src/syntax_helpers/format_string_exprs.rs +++ b/crates/ide-db/src/syntax_helpers/format_string_exprs.rs @@ -262,8 +262,6 @@ mod tests { .unwrap() .1, vec![ - Arg::Ident("_ident".to_owned()), - Arg::Ident("r#raw_ident".to_owned()), Arg::Expr("expr.obj".to_owned()), Arg::Expr("name {thing: 42}".to_owned()), Arg::Placeholder From 285f09cfa8dfb696b8bd20a1fac5db5fec1ae46d Mon Sep 17 00:00:00 2001 From: unvalley Date: Sun, 27 Nov 2022 15:36:26 +0900 Subject: [PATCH 299/478] feat: extract only expressions from format string --- .../extract_expressions_from_format_string.rs | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs index b1bc2a9e6dbd..6b947fe36416 100644 --- a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs +++ b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs @@ -121,15 +121,14 @@ pub(crate) fn extract_expressions_from_format_string( let mut placeholder_idx = 1; for extracted_args in extracted_args { - // remove expr from format string - args.push_str(", "); - match extracted_args { - Arg::Ident(s) | Arg::Expr(s) => { + Arg::Expr(s)=> { + args.push_str(", "); // insert arg args.push_str(&s); } Arg::Placeholder => { + args.push_str(", "); // try matching with existing argument match existing_args.next() { Some(ea) => { @@ -142,6 +141,7 @@ pub(crate) fn extract_expressions_from_format_string( } } } + Arg::Ident(_s) => (), } } @@ -292,6 +292,29 @@ fn main() { fn main() { print!("My name is {} {}"$0, stringify!(Paperino), x + x) } +"#, + ), + ); + } + + #[test] + fn extract_only_expressions() { + check_assist( + extract_expressions_from_format_string, + &add_macro_decl( + r#" +fn main() { + let var = 1 + 1; + print!("foobar {var} {var:?} {x$0 + x}") +} +"#, + ), + &add_macro_decl( + r#" +fn main() { + let var = 1 + 1; + print!("foobar {var} {var:?} {}"$0, x + x) +} "#, ), ); From 872df2f4131d1dc40a412d4b160cc031a2f30c03 Mon Sep 17 00:00:00 2001 From: unvalley Date: Sun, 27 Nov 2022 17:23:46 +0900 Subject: [PATCH 300/478] chore: update assist label name --- .../src/handlers/extract_expressions_from_format_string.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs index 6b947fe36416..46d1d7b95530 100644 --- a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs +++ b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs @@ -69,7 +69,7 @@ pub(crate) fn extract_expressions_from_format_string( AssistKind::QuickFix }, ), - "Extract format args", + "Extract format expressions", tt.syntax().text_range(), |edit| { let fmt_range = fmt_string.syntax().text_range(); From a310fc0cd53ff8528ef31b5021c490fd944ab199 Mon Sep 17 00:00:00 2001 From: unvalley Date: Sun, 27 Nov 2022 18:24:43 +0900 Subject: [PATCH 301/478] docs: update assist comment --- .../src/handlers/extract_expressions_from_format_string.rs | 4 ++-- crates/ide-assists/src/tests/generated.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs index 46d1d7b95530..4f3b6e0c287c 100644 --- a/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs +++ b/crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs @@ -23,7 +23,7 @@ use syntax::{ast, AstNode, AstToken, NodeOrToken, SyntaxKind::COMMA, TextRange}; // } // // fn main() { -// print!("{x + 1}$0"); +// print!("{var} {x + 1}$0"); // } // ``` // -> @@ -36,7 +36,7 @@ use syntax::{ast, AstNode, AstToken, NodeOrToken, SyntaxKind::COMMA, TextRange}; // } // // fn main() { -// print!("{}"$0, x + 1); +// print!("{var} {}"$0, x + 1); // } // ``` diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 5e24de620777..f7ff173bb014 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -637,7 +637,7 @@ macro_rules! print { } fn main() { - print!("{x + 1}$0"); + print!("{var} {x + 1}$0"); } "#####, r#####" @@ -649,7 +649,7 @@ macro_rules! print { } fn main() { - print!("{}"$0, x + 1); + print!("{var} {}"$0, x + 1); } "#####, ) From 9eabc2cde8e76d718de81b6cd4d0091c7a8d9690 Mon Sep 17 00:00:00 2001 From: unvalley Date: Tue, 29 Nov 2022 01:39:27 +0900 Subject: [PATCH 302/478] fix: add_format_like_completions to handle no exprs --- .../ide-completion/src/completions/postfix.rs | 4 +-- .../src/completions/postfix/format_like.rs | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs index 3db400604b02..f4f37d77d81f 100644 --- a/crates/ide-completion/src/completions/postfix.rs +++ b/crates/ide-completion/src/completions/postfix.rs @@ -595,12 +595,12 @@ fn main() { check_edit( "format", r#"fn main() { "{some_var:?}".$0 }"#, - r#"fn main() { format!("{:?}", some_var) }"#, + r#"fn main() { format!("{some_var:?}") }"#, ); check_edit( "panic", r#"fn main() { "Panic with {a}".$0 }"#, - r#"fn main() { panic!("Panic with {}", a) }"#, + r#"fn main() { panic!("Panic with {a}") }"#, ); check_edit( "println", diff --git a/crates/ide-completion/src/completions/postfix/format_like.rs b/crates/ide-completion/src/completions/postfix/format_like.rs index d64d6379a9cd..dfcc78e92308 100644 --- a/crates/ide-completion/src/completions/postfix/format_like.rs +++ b/crates/ide-completion/src/completions/postfix/format_like.rs @@ -54,7 +54,11 @@ pub(crate) fn add_format_like_completions( if let Ok((out, exprs)) = parse_format_exprs(receiver_text.text()) { let exprs = with_placeholders(exprs); for (label, macro_name) in KINDS { - let snippet = format!(r#"{macro_name}({out}, {})"#, exprs.join(", ")); + let snippet = if exprs.is_empty() { + format!(r#"{}({})"#, macro_name, out) + } else { + format!(r#"{}({}, {})"#, macro_name, out, exprs.join(", ")) + }; postfix_snippet(label, macro_name, &snippet).add_to(acc); } @@ -72,10 +76,9 @@ mod tests { ("eprintln!", "{}", r#"eprintln!("{}", $1)"#), ( "log::info!", - "{} {expr} {} {2 + 2}", - r#"log::info!("{} {} {} {}", $1, expr, $2, 2 + 2)"#, + "{} {ident} {} {2 + 2}", + r#"log::info!("{} {ident} {} {}", $1, $2, 2 + 2)"#, ), - ("format!", "{expr:?}", r#"format!("{:?}", expr)"#), ]; for (kind, input, output) in test_vector { @@ -85,4 +88,18 @@ mod tests { assert_eq!(&snippet, output); } } + + #[test] + fn test_into_suggestion_no_epxrs() { + let test_vector = &[ + ("println!", "{ident}", r#"println!("{ident}")"#), + ("format!", "{ident:?}", r#"format!("{ident:?}")"#), + ]; + + for (kind, input, output) in test_vector { + let (parsed_string, _exprs) = parse_format_exprs(input).unwrap(); + let snippet = format!(r#"{}("{}")"#, kind, parsed_string); + assert_eq!(&snippet, output); + } + } } From c364d329ddda2ae2b7a553bf684a3e247977c003 Mon Sep 17 00:00:00 2001 From: Fabian Hintringer Date: Mon, 9 Jan 2023 13:19:41 +0100 Subject: [PATCH 303/478] Relocate changes --- library/core/src/iter/traits/iterator.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/library/core/src/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index 53d353802b9f..353cb147f108 100644 --- a/library/core/src/iter/traits/iterator.rs +++ b/library/core/src/iter/traits/iterator.rs @@ -1495,18 +1495,6 @@ pub trait Iterator { /// assert_eq!(merged, "alphabetagamma"); /// ``` /// - /// Flattening works on any `IntoIterator` type, including `Option` and `Result`: - /// - /// ``` - /// let options = vec![Some(123), Some(321), None, Some(231)]; - /// let flattened_options: Vec<_> = options.into_iter().flatten().collect(); - /// assert_eq!(flattened_options, vec![123, 321, 231]); - /// - /// let results = vec![Ok(123), Ok(321), Err(456), Ok(231)]; - /// let flattened_results: Vec<_> = results.into_iter().flatten().collect(); - /// assert_eq!(flattened_results, vec![123, 321, 231]); - /// ``` - /// /// You can also rewrite this in terms of [`flat_map()`], which is preferable /// in this case since it conveys intent more clearly: /// @@ -1520,6 +1508,18 @@ pub trait Iterator { /// assert_eq!(merged, "alphabetagamma"); /// ``` /// + /// Flattening works on any `IntoIterator` type, including `Option` and `Result`: + /// + /// ``` + /// let options = vec![Some(123), Some(321), None, Some(231)]; + /// let flattened_options: Vec<_> = options.into_iter().flatten().collect(); + /// assert_eq!(flattened_options, vec![123, 321, 231]); + /// + /// let results = vec![Ok(123), Ok(321), Err(456), Ok(231)]; + /// let flattened_results: Vec<_> = results.into_iter().flatten().collect(); + /// assert_eq!(flattened_results, vec![123, 321, 231]); + /// ``` + /// /// Flattening only removes one level of nesting at a time: /// /// ``` From 87d57f51bcf07eb364fcf835f9be987006158961 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 20 Dec 2022 11:31:07 +0100 Subject: [PATCH 304/478] Rename checkOnSave settings to flycheck --- crates/rust-analyzer/src/config.rs | 180 +++++++------- .../src/config/patch_old_style.rs | 17 +- docs/user/generated_config.adoc | 176 +++++++------- editors/code/package.json | 224 +++++++++--------- 4 files changed, 302 insertions(+), 295 deletions(-) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 4ee92b3d4ed0..25bfa0c28edd 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -124,65 +124,8 @@ config_data! { /// Unsets `#[cfg(test)]` for the specified crates. cargo_unsetTest: Vec = "[\"core\"]", - /// Check all targets and tests (`--all-targets`). - checkOnSave_allTargets: bool = "true", - /// Cargo command to use for `cargo check`. - checkOnSave_command: String = "\"check\"", - /// Run specified `cargo check` command for diagnostics on save. - checkOnSave_enable: bool = "true", - /// Extra arguments for `cargo check`. - checkOnSave_extraArgs: Vec = "[]", - /// Extra environment variables that will be set when running `cargo check`. - /// Extends `#rust-analyzer.cargo.extraEnv#`. - checkOnSave_extraEnv: FxHashMap = "{}", - /// List of features to activate. Defaults to - /// `#rust-analyzer.cargo.features#`. - /// - /// Set to `"all"` to pass `--all-features` to Cargo. - checkOnSave_features: Option = "null", - /// Specifies the working directory for running checks. - /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories. - // FIXME: Ideally we would support this in some way - /// This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. - /// - "root": run checks in the project's root directory. - /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` - /// is set. - checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"", - /// Specifies the invocation strategy to use when running the checkOnSave command. - /// If `per_workspace` is set, the command will be executed for each workspace. - /// If `once` is set, the command will be executed once. - /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` - /// is set. - checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", - /// Whether to pass `--no-default-features` to Cargo. Defaults to - /// `#rust-analyzer.cargo.noDefaultFeatures#`. - checkOnSave_noDefaultFeatures: Option = "null", - /// Override the command rust-analyzer uses instead of `cargo check` for - /// diagnostics on save. The command is required to output json and - /// should therefore include `--message-format=json` or a similar option. - /// - /// If you're changing this because you're using some tool wrapping - /// Cargo, you might also want to change - /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`. - /// - /// If there are multiple linked projects, this command is invoked for - /// each of them, with the working directory being the project root - /// (i.e., the folder containing the `Cargo.toml`). - /// - /// An example command would be: - /// - /// ```bash - /// cargo check --workspace --message-format=json --all-targets - /// ``` - /// . - checkOnSave_overrideCommand: Option> = "null", - /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. - /// - /// Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. - /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. - /// - /// Aliased as `"checkOnSave.targets"`. - checkOnSave_target | checkOnSave_targets: Option = "null", + /// Run the flycheck command for diagnostics on save. + checkOnSave | checkOnSave_enable: bool = "true", /// Toggles the additional completions that automatically add imports when completed. /// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. @@ -268,6 +211,64 @@ config_data! { /// Controls file watching implementation. files_watcher: FilesWatcherDef = "\"client\"", + /// Check all targets and tests (`--all-targets`). + flycheck_allTargets | checkOnSave_allTargets: bool = "true", + /// Cargo command to use for `cargo check`. + flycheck_command | checkOnSave_command: String = "\"check\"", + /// Extra arguments for `cargo check`. + flycheck_extraArgs | checkOnSave_extraArgs: Vec = "[]", + /// Extra environment variables that will be set when running `cargo check`. + /// Extends `#rust-analyzer.cargo.extraEnv#`. + flycheck_extraEnv | checkOnSave_extraEnv: FxHashMap = "{}", + /// List of features to activate. Defaults to + /// `#rust-analyzer.cargo.features#`. + /// + /// Set to `"all"` to pass `--all-features` to Cargo. + flycheck_features | checkOnSave_features: Option = "null", + /// Specifies the working directory for running checks. + /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories. + // FIXME: Ideally we would support this in some way + /// This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. + /// - "root": run checks in the project's root directory. + /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` + /// is set. + flycheck_invocationLocation | checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"", + /// Specifies the invocation strategy to use when running the checkOnSave command. + /// If `per_workspace` is set, the command will be executed for each workspace. + /// If `once` is set, the command will be executed once. + /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` + /// is set. + flycheck_invocationStrategy | checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", + /// Whether to pass `--no-default-features` to Cargo. Defaults to + /// `#rust-analyzer.cargo.noDefaultFeatures#`. + flycheck_noDefaultFeatures | checkOnSave_noDefaultFeatures: Option = "null", + /// Override the command rust-analyzer uses instead of `cargo check` for + /// diagnostics on save. The command is required to output json and + /// should therefore include `--message-format=json` or a similar option. + /// + /// If you're changing this because you're using some tool wrapping + /// Cargo, you might also want to change + /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`. + /// + /// If there are multiple linked projects, this command is invoked for + /// each of them, with the working directory being the project root + /// (i.e., the folder containing the `Cargo.toml`). + /// + /// An example command would be: + /// + /// ```bash + /// cargo check --workspace --message-format=json --all-targets + /// ``` + /// . + flycheck_overrideCommand | checkOnSave_overrideCommand: Option> = "null", + /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + /// + /// Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. + /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + /// + /// Aliased as `"checkOnSave.targets"`. + flycheck_targets | checkOnSave_targets | checkOnSave_target: Option = "null", + /// Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords. highlightRelated_breakPoints_enable: bool = "true", /// Enables highlighting of all exit points while the cursor is on any `return`, `?`, `fn`, or return type arrow (`->`). @@ -786,9 +787,9 @@ impl Config { fn validate(&self, error_sink: &mut Vec<(String, serde_json::Error)>) { use serde::de::Error; - if self.data.checkOnSave_command.is_empty() { + if self.data.flycheck_command.is_empty() { error_sink.push(( - "/checkOnSave/command".to_string(), + "/flycheck/command".to_string(), serde_json::Error::custom("expected a non-empty string"), )); } @@ -1033,7 +1034,7 @@ impl Config { pub fn check_on_save_extra_env(&self) -> FxHashMap { let mut extra_env = self.data.cargo_extraEnv.clone(); - extra_env.extend(self.data.checkOnSave_extraEnv.clone()); + extra_env.extend(self.data.flycheck_extraEnv.clone()); extra_env } @@ -1145,7 +1146,7 @@ impl Config { } pub fn flycheck(&self) -> FlycheckConfig { - match &self.data.checkOnSave_overrideCommand { + match &self.data.flycheck_overrideCommand { Some(args) if !args.is_empty() => { let mut args = args.clone(); let command = args.remove(0); @@ -1153,13 +1154,13 @@ impl Config { command, args, extra_env: self.check_on_save_extra_env(), - invocation_strategy: match self.data.checkOnSave_invocationStrategy { + invocation_strategy: match self.data.flycheck_invocationStrategy { InvocationStrategy::Once => flycheck::InvocationStrategy::Once, InvocationStrategy::PerWorkspace => { flycheck::InvocationStrategy::PerWorkspace } }, - invocation_location: match self.data.checkOnSave_invocationLocation { + invocation_location: match self.data.flycheck_invocationLocation { InvocationLocation::Root => { flycheck::InvocationLocation::Root(self.root_path.clone()) } @@ -1168,42 +1169,42 @@ impl Config { } } Some(_) | None => FlycheckConfig::CargoCommand { - command: self.data.checkOnSave_command.clone(), + command: self.data.flycheck_command.clone(), target_triples: self .data - .checkOnSave_target + .flycheck_targets .clone() .and_then(|targets| match &targets.0[..] { [] => None, targets => Some(targets.into()), }) .unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()), - all_targets: self.data.checkOnSave_allTargets, + all_targets: self.data.flycheck_allTargets, no_default_features: self .data - .checkOnSave_noDefaultFeatures + .flycheck_noDefaultFeatures .unwrap_or(self.data.cargo_noDefaultFeatures), all_features: matches!( - self.data.checkOnSave_features.as_ref().unwrap_or(&self.data.cargo_features), + self.data.flycheck_features.as_ref().unwrap_or(&self.data.cargo_features), CargoFeaturesDef::All ), features: match self .data - .checkOnSave_features + .flycheck_features .clone() .unwrap_or_else(|| self.data.cargo_features.clone()) { CargoFeaturesDef::All => vec![], CargoFeaturesDef::Selected(it) => it, }, - extra_args: self.data.checkOnSave_extraArgs.clone(), + extra_args: self.data.flycheck_extraArgs.clone(), extra_env: self.check_on_save_extra_env(), }, } } pub fn check_on_save(&self) -> bool { - self.data.checkOnSave_enable + self.data.checkOnSave } pub fn runnables(&self) -> RunnablesConfig { @@ -1862,25 +1863,27 @@ fn get_field( alias: Option<&'static str>, default: &str, ) -> T { - let default = serde_json::from_str(default).unwrap(); // XXX: check alias first, to work-around the VS Code where it pre-fills the // defaults instead of sending an empty object. alias .into_iter() .chain(iter::once(field)) - .find_map(move |field| { + .filter_map(move |field| { let mut pointer = field.replace('_', "/"); pointer.insert(0, '/'); - json.pointer_mut(&pointer).and_then(|it| match serde_json::from_value(it.take()) { - Ok(it) => Some(it), - Err(e) => { - tracing::warn!("Failed to deserialize config field at {}: {:?}", pointer, e); - error_sink.push((pointer, e)); - None - } - }) + json.pointer_mut(&pointer) + .map(|it| serde_json::from_value(it.take()).map_err(|e| (e, pointer))) }) - .unwrap_or(default) + .find(Result::is_ok) + .and_then(|res| match res { + Ok(it) => Some(it), + Err((e, pointer)) => { + tracing::warn!("Failed to deserialize config field at {}: {:?}", pointer, e); + error_sink.push((pointer, e)); + None + } + }) + .unwrap_or_else(|| serde_json::from_str(default).unwrap()) } fn schema(fields: &[(&'static str, &'static str, &[&str], &str)]) -> serde_json::Value { @@ -1964,15 +1967,6 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "type": ["null", "array"], "items": { "type": "string" }, }, - "MergeBehaviorDef" => set! { - "type": "string", - "enum": ["none", "crate", "module"], - "enumDescriptions": [ - "Do not merge imports at all.", - "Merge imports from the same crate into a single `use` statement.", - "Merge imports from the same module into a single `use` statement." - ], - }, "ExprFillDefaultDef" => set! { "type": "string", "enum": ["todo", "default"], diff --git a/crates/rust-analyzer/src/config/patch_old_style.rs b/crates/rust-analyzer/src/config/patch_old_style.rs index 3b174a719342..38b70219cb2e 100644 --- a/crates/rust-analyzer/src/config/patch_old_style.rs +++ b/crates/rust-analyzer/src/config/patch_old_style.rs @@ -4,6 +4,9 @@ use serde_json::{json, Value}; /// This function patches the json config to the new expected keys. /// That is we try to load old known config keys here and convert them to the new ones. /// See https://github.com/rust-lang/rust-analyzer/pull/12010 +/// +/// We already have an alias system for simple cases, but if we make structural changes +/// the alias infra fails down. pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { let copy = json.clone(); @@ -105,9 +108,9 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { merge(json, json!({ "cargo": { "features": "all" } })); } - // checkOnSave_allFeatures, checkOnSave_features -> checkOnSave_features + // checkOnSave_allFeatures, checkOnSave_features -> flycheck_features if let Some(Value::Bool(true)) = copy.pointer("/checkOnSave/allFeatures") { - merge(json, json!({ "checkOnSave": { "features": "all" } })); + merge(json, json!({ "flycheck": { "features": "all" } })); } // completion_addCallArgumentSnippets completion_addCallParenthesis -> completion_callable_snippets @@ -121,6 +124,16 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { (_, _) => return, }; merge(json, json!({ "completion": { "callable": {"snippets": res }} })); + + // We need to do this due to the checkOnSave_enable -> checkOnSave change, as that key now can either be an object or a bool + // checkOnSave_* -> flycheck_* + if let Some(Value::Object(obj)) = copy.pointer("/checkOnSave") { + // checkOnSave_enable -> checkOnSave + if let Some(b @ Value::Bool(_)) = obj.get("enable") { + merge(json, json!({ "checkOnSave": b })); + } + merge(json, json!({ "flycheck": obj })); + } } fn merge(dst: &mut Value, src: Value) { diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 91f8e98449ec..e6da4f38ab4e 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -109,96 +109,10 @@ Compilation target override (target triple). -- Unsets `#[cfg(test)]` for the specified crates. -- -[[rust-analyzer.checkOnSave.allTargets]]rust-analyzer.checkOnSave.allTargets (default: `true`):: +[[rust-analyzer.checkOnSave]]rust-analyzer.checkOnSave (default: `true`):: + -- -Check all targets and tests (`--all-targets`). --- -[[rust-analyzer.checkOnSave.command]]rust-analyzer.checkOnSave.command (default: `"check"`):: -+ --- -Cargo command to use for `cargo check`. --- -[[rust-analyzer.checkOnSave.enable]]rust-analyzer.checkOnSave.enable (default: `true`):: -+ --- -Run specified `cargo check` command for diagnostics on save. --- -[[rust-analyzer.checkOnSave.extraArgs]]rust-analyzer.checkOnSave.extraArgs (default: `[]`):: -+ --- -Extra arguments for `cargo check`. --- -[[rust-analyzer.checkOnSave.extraEnv]]rust-analyzer.checkOnSave.extraEnv (default: `{}`):: -+ --- -Extra environment variables that will be set when running `cargo check`. -Extends `#rust-analyzer.cargo.extraEnv#`. --- -[[rust-analyzer.checkOnSave.features]]rust-analyzer.checkOnSave.features (default: `null`):: -+ --- -List of features to activate. Defaults to -`#rust-analyzer.cargo.features#`. - -Set to `"all"` to pass `--all-features` to Cargo. --- -[[rust-analyzer.checkOnSave.invocationLocation]]rust-analyzer.checkOnSave.invocationLocation (default: `"workspace"`):: -+ --- -Specifies the working directory for running checks. -- "workspace": run checks for workspaces in the corresponding workspaces' root directories. - This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. -- "root": run checks in the project's root directory. -This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` -is set. --- -[[rust-analyzer.checkOnSave.invocationStrategy]]rust-analyzer.checkOnSave.invocationStrategy (default: `"per_workspace"`):: -+ --- -Specifies the invocation strategy to use when running the checkOnSave command. -If `per_workspace` is set, the command will be executed for each workspace. -If `once` is set, the command will be executed once. -This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` -is set. --- -[[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`):: -+ --- -Whether to pass `--no-default-features` to Cargo. Defaults to -`#rust-analyzer.cargo.noDefaultFeatures#`. --- -[[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`):: -+ --- -Override the command rust-analyzer uses instead of `cargo check` for -diagnostics on save. The command is required to output json and -should therefore include `--message-format=json` or a similar option. - -If you're changing this because you're using some tool wrapping -Cargo, you might also want to change -`#rust-analyzer.cargo.buildScripts.overrideCommand#`. - -If there are multiple linked projects, this command is invoked for -each of them, with the working directory being the project root -(i.e., the folder containing the `Cargo.toml`). - -An example command would be: - -```bash -cargo check --workspace --message-format=json --all-targets -``` -. --- -[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`):: -+ --- -Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. - -Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. -`["aarch64-apple-darwin", "x86_64-apple-darwin"]`. - -Aliased as `"checkOnSave.targets"`. +Run the flycheck command for diagnostics on save. -- [[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`):: + @@ -327,6 +241,92 @@ also need to add the folders to Code's `files.watcherExclude`. -- Controls file watching implementation. -- +[[rust-analyzer.flycheck.allTargets]]rust-analyzer.flycheck.allTargets (default: `true`):: ++ +-- +Check all targets and tests (`--all-targets`). +-- +[[rust-analyzer.flycheck.command]]rust-analyzer.flycheck.command (default: `"check"`):: ++ +-- +Cargo command to use for `cargo check`. +-- +[[rust-analyzer.flycheck.extraArgs]]rust-analyzer.flycheck.extraArgs (default: `[]`):: ++ +-- +Extra arguments for `cargo check`. +-- +[[rust-analyzer.flycheck.extraEnv]]rust-analyzer.flycheck.extraEnv (default: `{}`):: ++ +-- +Extra environment variables that will be set when running `cargo check`. +Extends `#rust-analyzer.cargo.extraEnv#`. +-- +[[rust-analyzer.flycheck.features]]rust-analyzer.flycheck.features (default: `null`):: ++ +-- +List of features to activate. Defaults to +`#rust-analyzer.cargo.features#`. + +Set to `"all"` to pass `--all-features` to Cargo. +-- +[[rust-analyzer.flycheck.invocationLocation]]rust-analyzer.flycheck.invocationLocation (default: `"workspace"`):: ++ +-- +Specifies the working directory for running checks. +- "workspace": run checks for workspaces in the corresponding workspaces' root directories. + This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. +- "root": run checks in the project's root directory. +This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` +is set. +-- +[[rust-analyzer.flycheck.invocationStrategy]]rust-analyzer.flycheck.invocationStrategy (default: `"per_workspace"`):: ++ +-- +Specifies the invocation strategy to use when running the checkOnSave command. +If `per_workspace` is set, the command will be executed for each workspace. +If `once` is set, the command will be executed once. +This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` +is set. +-- +[[rust-analyzer.flycheck.noDefaultFeatures]]rust-analyzer.flycheck.noDefaultFeatures (default: `null`):: ++ +-- +Whether to pass `--no-default-features` to Cargo. Defaults to +`#rust-analyzer.cargo.noDefaultFeatures#`. +-- +[[rust-analyzer.flycheck.overrideCommand]]rust-analyzer.flycheck.overrideCommand (default: `null`):: ++ +-- +Override the command rust-analyzer uses instead of `cargo check` for +diagnostics on save. The command is required to output json and +should therefore include `--message-format=json` or a similar option. + +If you're changing this because you're using some tool wrapping +Cargo, you might also want to change +`#rust-analyzer.cargo.buildScripts.overrideCommand#`. + +If there are multiple linked projects, this command is invoked for +each of them, with the working directory being the project root +(i.e., the folder containing the `Cargo.toml`). + +An example command would be: + +```bash +cargo check --workspace --message-format=json --all-targets +``` +. +-- +[[rust-analyzer.flycheck.targets]]rust-analyzer.flycheck.targets (default: `null`):: ++ +-- +Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + +Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. +`["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + +Aliased as `"checkOnSave.targets"`. +-- [[rust-analyzer.highlightRelated.breakPoints.enable]]rust-analyzer.highlightRelated.breakPoints.enable (default: `true`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index 454b95a63b21..4fe829382dd9 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -556,121 +556,11 @@ "type": "string" } }, - "rust-analyzer.checkOnSave.allTargets": { - "markdownDescription": "Check all targets and tests (`--all-targets`).", + "rust-analyzer.checkOnSave": { + "markdownDescription": "Run the flycheck command for diagnostics on save.", "default": true, "type": "boolean" }, - "rust-analyzer.checkOnSave.command": { - "markdownDescription": "Cargo command to use for `cargo check`.", - "default": "check", - "type": "string" - }, - "rust-analyzer.checkOnSave.enable": { - "markdownDescription": "Run specified `cargo check` command for diagnostics on save.", - "default": true, - "type": "boolean" - }, - "rust-analyzer.checkOnSave.extraArgs": { - "markdownDescription": "Extra arguments for `cargo check`.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - }, - "rust-analyzer.checkOnSave.extraEnv": { - "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.", - "default": {}, - "type": "object" - }, - "rust-analyzer.checkOnSave.features": { - "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.", - "default": null, - "anyOf": [ - { - "type": "string", - "enum": [ - "all" - ], - "enumDescriptions": [ - "Pass `--all-features` to cargo" - ] - }, - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "rust-analyzer.checkOnSave.invocationLocation": { - "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", - "default": "workspace", - "type": "string", - "enum": [ - "workspace", - "root" - ], - "enumDescriptions": [ - "The command will be executed in the corresponding workspace root.", - "The command will be executed in the project root." - ] - }, - "rust-analyzer.checkOnSave.invocationStrategy": { - "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", - "default": "per_workspace", - "type": "string", - "enum": [ - "per_workspace", - "once" - ], - "enumDescriptions": [ - "The command will be executed for each workspace.", - "The command will be executed once." - ] - }, - "rust-analyzer.checkOnSave.noDefaultFeatures": { - "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.", - "default": null, - "type": [ - "null", - "boolean" - ] - }, - "rust-analyzer.checkOnSave.overrideCommand": { - "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", - "default": null, - "type": [ - "null", - "array" - ], - "items": { - "type": "string" - } - }, - "rust-analyzer.checkOnSave.target": { - "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", - "default": null, - "anyOf": [ - { - "type": "null" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, "rust-analyzer.completion.autoimport.enable": { "markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", "default": true, @@ -812,6 +702,116 @@ "Use server-side file watching" ] }, + "rust-analyzer.flycheck.allTargets": { + "markdownDescription": "Check all targets and tests (`--all-targets`).", + "default": true, + "type": "boolean" + }, + "rust-analyzer.flycheck.command": { + "markdownDescription": "Cargo command to use for `cargo check`.", + "default": "check", + "type": "string" + }, + "rust-analyzer.flycheck.extraArgs": { + "markdownDescription": "Extra arguments for `cargo check`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.flycheck.extraEnv": { + "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.", + "default": {}, + "type": "object" + }, + "rust-analyzer.flycheck.features": { + "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.", + "default": null, + "anyOf": [ + { + "type": "string", + "enum": [ + "all" + ], + "enumDescriptions": [ + "Pass `--all-features` to cargo" + ] + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "rust-analyzer.flycheck.invocationLocation": { + "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "workspace", + "type": "string", + "enum": [ + "workspace", + "root" + ], + "enumDescriptions": [ + "The command will be executed in the corresponding workspace root.", + "The command will be executed in the project root." + ] + }, + "rust-analyzer.flycheck.invocationStrategy": { + "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "per_workspace", + "type": "string", + "enum": [ + "per_workspace", + "once" + ], + "enumDescriptions": [ + "The command will be executed for each workspace.", + "The command will be executed once." + ] + }, + "rust-analyzer.flycheck.noDefaultFeatures": { + "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.", + "default": null, + "type": [ + "null", + "boolean" + ] + }, + "rust-analyzer.flycheck.overrideCommand": { + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "default": null, + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "rust-analyzer.flycheck.targets": { + "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", + "default": null, + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, "rust-analyzer.highlightRelated.breakPoints.enable": { "markdownDescription": "Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords.", "default": true, From d2bb62b6a81d26f1e41712e04d4ac760f860d3b3 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 9 Jan 2023 14:15:13 +0100 Subject: [PATCH 305/478] Rename checkOnSave settings to check --- crates/rust-analyzer/src/config.rs | 151 ++++++------ .../src/config/patch_old_style.rs | 8 +- docs/user/generated_config.adoc | 174 +++++++------- editors/code/package.json | 222 +++++++++--------- 4 files changed, 274 insertions(+), 281 deletions(-) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 25bfa0c28edd..b97c8106be6a 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -124,9 +124,67 @@ config_data! { /// Unsets `#[cfg(test)]` for the specified crates. cargo_unsetTest: Vec = "[\"core\"]", - /// Run the flycheck command for diagnostics on save. + /// Run the check command for diagnostics on save. checkOnSave | checkOnSave_enable: bool = "true", + /// Check all targets and tests (`--all-targets`). + check_allTargets | checkOnSave_allTargets: bool = "true", + /// Cargo command to use for `cargo check`. + check_command | checkOnSave_command: String = "\"check\"", + /// Extra arguments for `cargo check`. + check_extraArgs | checkOnSave_extraArgs: Vec = "[]", + /// Extra environment variables that will be set when running `cargo check`. + /// Extends `#rust-analyzer.cargo.extraEnv#`. + check_extraEnv | checkOnSave_extraEnv: FxHashMap = "{}", + /// List of features to activate. Defaults to + /// `#rust-analyzer.cargo.features#`. + /// + /// Set to `"all"` to pass `--all-features` to Cargo. + check_features | checkOnSave_features: Option = "null", + /// Specifies the working directory for running checks. + /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories. + // FIXME: Ideally we would support this in some way + /// This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. + /// - "root": run checks in the project's root directory. + /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` + /// is set. + check_invocationLocation | checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"", + /// Specifies the invocation strategy to use when running the checkOnSave command. + /// If `per_workspace` is set, the command will be executed for each workspace. + /// If `once` is set, the command will be executed once. + /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` + /// is set. + check_invocationStrategy | checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", + /// Whether to pass `--no-default-features` to Cargo. Defaults to + /// `#rust-analyzer.cargo.noDefaultFeatures#`. + check_noDefaultFeatures | checkOnSave_noDefaultFeatures: Option = "null", + /// Override the command rust-analyzer uses instead of `cargo check` for + /// diagnostics on save. The command is required to output json and + /// should therefore include `--message-format=json` or a similar option. + /// + /// If you're changing this because you're using some tool wrapping + /// Cargo, you might also want to change + /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`. + /// + /// If there are multiple linked projects, this command is invoked for + /// each of them, with the working directory being the project root + /// (i.e., the folder containing the `Cargo.toml`). + /// + /// An example command would be: + /// + /// ```bash + /// cargo check --workspace --message-format=json --all-targets + /// ``` + /// . + check_overrideCommand | checkOnSave_overrideCommand: Option> = "null", + /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + /// + /// Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. + /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + /// + /// Aliased as `"checkOnSave.targets"`. + check_targets | checkOnSave_targets | checkOnSave_target: Option = "null", + /// Toggles the additional completions that automatically add imports when completed. /// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. completion_autoimport_enable: bool = "true", @@ -211,64 +269,6 @@ config_data! { /// Controls file watching implementation. files_watcher: FilesWatcherDef = "\"client\"", - /// Check all targets and tests (`--all-targets`). - flycheck_allTargets | checkOnSave_allTargets: bool = "true", - /// Cargo command to use for `cargo check`. - flycheck_command | checkOnSave_command: String = "\"check\"", - /// Extra arguments for `cargo check`. - flycheck_extraArgs | checkOnSave_extraArgs: Vec = "[]", - /// Extra environment variables that will be set when running `cargo check`. - /// Extends `#rust-analyzer.cargo.extraEnv#`. - flycheck_extraEnv | checkOnSave_extraEnv: FxHashMap = "{}", - /// List of features to activate. Defaults to - /// `#rust-analyzer.cargo.features#`. - /// - /// Set to `"all"` to pass `--all-features` to Cargo. - flycheck_features | checkOnSave_features: Option = "null", - /// Specifies the working directory for running checks. - /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories. - // FIXME: Ideally we would support this in some way - /// This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. - /// - "root": run checks in the project's root directory. - /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` - /// is set. - flycheck_invocationLocation | checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"", - /// Specifies the invocation strategy to use when running the checkOnSave command. - /// If `per_workspace` is set, the command will be executed for each workspace. - /// If `once` is set, the command will be executed once. - /// This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` - /// is set. - flycheck_invocationStrategy | checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"", - /// Whether to pass `--no-default-features` to Cargo. Defaults to - /// `#rust-analyzer.cargo.noDefaultFeatures#`. - flycheck_noDefaultFeatures | checkOnSave_noDefaultFeatures: Option = "null", - /// Override the command rust-analyzer uses instead of `cargo check` for - /// diagnostics on save. The command is required to output json and - /// should therefore include `--message-format=json` or a similar option. - /// - /// If you're changing this because you're using some tool wrapping - /// Cargo, you might also want to change - /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`. - /// - /// If there are multiple linked projects, this command is invoked for - /// each of them, with the working directory being the project root - /// (i.e., the folder containing the `Cargo.toml`). - /// - /// An example command would be: - /// - /// ```bash - /// cargo check --workspace --message-format=json --all-targets - /// ``` - /// . - flycheck_overrideCommand | checkOnSave_overrideCommand: Option> = "null", - /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. - /// - /// Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. - /// `["aarch64-apple-darwin", "x86_64-apple-darwin"]`. - /// - /// Aliased as `"checkOnSave.targets"`. - flycheck_targets | checkOnSave_targets | checkOnSave_target: Option = "null", - /// Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords. highlightRelated_breakPoints_enable: bool = "true", /// Enables highlighting of all exit points while the cursor is on any `return`, `?`, `fn`, or return type arrow (`->`). @@ -787,9 +787,9 @@ impl Config { fn validate(&self, error_sink: &mut Vec<(String, serde_json::Error)>) { use serde::de::Error; - if self.data.flycheck_command.is_empty() { + if self.data.check_command.is_empty() { error_sink.push(( - "/flycheck/command".to_string(), + "/check/command".to_string(), serde_json::Error::custom("expected a non-empty string"), )); } @@ -1034,7 +1034,7 @@ impl Config { pub fn check_on_save_extra_env(&self) -> FxHashMap { let mut extra_env = self.data.cargo_extraEnv.clone(); - extra_env.extend(self.data.flycheck_extraEnv.clone()); + extra_env.extend(self.data.check_extraEnv.clone()); extra_env } @@ -1146,7 +1146,7 @@ impl Config { } pub fn flycheck(&self) -> FlycheckConfig { - match &self.data.flycheck_overrideCommand { + match &self.data.check_overrideCommand { Some(args) if !args.is_empty() => { let mut args = args.clone(); let command = args.remove(0); @@ -1154,13 +1154,13 @@ impl Config { command, args, extra_env: self.check_on_save_extra_env(), - invocation_strategy: match self.data.flycheck_invocationStrategy { + invocation_strategy: match self.data.check_invocationStrategy { InvocationStrategy::Once => flycheck::InvocationStrategy::Once, InvocationStrategy::PerWorkspace => { flycheck::InvocationStrategy::PerWorkspace } }, - invocation_location: match self.data.flycheck_invocationLocation { + invocation_location: match self.data.check_invocationLocation { InvocationLocation::Root => { flycheck::InvocationLocation::Root(self.root_path.clone()) } @@ -1169,35 +1169,35 @@ impl Config { } } Some(_) | None => FlycheckConfig::CargoCommand { - command: self.data.flycheck_command.clone(), + command: self.data.check_command.clone(), target_triples: self .data - .flycheck_targets + .check_targets .clone() .and_then(|targets| match &targets.0[..] { [] => None, targets => Some(targets.into()), }) .unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()), - all_targets: self.data.flycheck_allTargets, + all_targets: self.data.check_allTargets, no_default_features: self .data - .flycheck_noDefaultFeatures + .check_noDefaultFeatures .unwrap_or(self.data.cargo_noDefaultFeatures), all_features: matches!( - self.data.flycheck_features.as_ref().unwrap_or(&self.data.cargo_features), + self.data.check_features.as_ref().unwrap_or(&self.data.cargo_features), CargoFeaturesDef::All ), features: match self .data - .flycheck_features + .check_features .clone() .unwrap_or_else(|| self.data.cargo_features.clone()) { CargoFeaturesDef::All => vec![], CargoFeaturesDef::Selected(it) => it, }, - extra_args: self.data.flycheck_extraArgs.clone(), + extra_args: self.data.check_extraArgs.clone(), extra_env: self.check_on_save_extra_env(), }, } @@ -1887,13 +1887,6 @@ fn get_field( } fn schema(fields: &[(&'static str, &'static str, &[&str], &str)]) -> serde_json::Value { - for ((f1, ..), (f2, ..)) in fields.iter().zip(&fields[1..]) { - fn key(f: &str) -> &str { - f.splitn(2, '_').next().unwrap() - } - assert!(key(f1) <= key(f2), "wrong field order: {f1:?} {f2:?}"); - } - let map = fields .iter() .map(|(field, ty, doc, default)| { diff --git a/crates/rust-analyzer/src/config/patch_old_style.rs b/crates/rust-analyzer/src/config/patch_old_style.rs index 38b70219cb2e..de6ac946a682 100644 --- a/crates/rust-analyzer/src/config/patch_old_style.rs +++ b/crates/rust-analyzer/src/config/patch_old_style.rs @@ -108,9 +108,9 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { merge(json, json!({ "cargo": { "features": "all" } })); } - // checkOnSave_allFeatures, checkOnSave_features -> flycheck_features + // checkOnSave_allFeatures, checkOnSave_features -> check_features if let Some(Value::Bool(true)) = copy.pointer("/checkOnSave/allFeatures") { - merge(json, json!({ "flycheck": { "features": "all" } })); + merge(json, json!({ "check": { "features": "all" } })); } // completion_addCallArgumentSnippets completion_addCallParenthesis -> completion_callable_snippets @@ -126,13 +126,13 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) { merge(json, json!({ "completion": { "callable": {"snippets": res }} })); // We need to do this due to the checkOnSave_enable -> checkOnSave change, as that key now can either be an object or a bool - // checkOnSave_* -> flycheck_* + // checkOnSave_* -> check_* if let Some(Value::Object(obj)) = copy.pointer("/checkOnSave") { // checkOnSave_enable -> checkOnSave if let Some(b @ Value::Bool(_)) = obj.get("enable") { merge(json, json!({ "checkOnSave": b })); } - merge(json, json!({ "flycheck": obj })); + merge(json, json!({ "check": obj })); } } diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index e6da4f38ab4e..7bdfd4288a19 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -112,7 +112,93 @@ Unsets `#[cfg(test)]` for the specified crates. [[rust-analyzer.checkOnSave]]rust-analyzer.checkOnSave (default: `true`):: + -- -Run the flycheck command for diagnostics on save. +Run the check command for diagnostics on save. +-- +[[rust-analyzer.check.allTargets]]rust-analyzer.check.allTargets (default: `true`):: ++ +-- +Check all targets and tests (`--all-targets`). +-- +[[rust-analyzer.check.command]]rust-analyzer.check.command (default: `"check"`):: ++ +-- +Cargo command to use for `cargo check`. +-- +[[rust-analyzer.check.extraArgs]]rust-analyzer.check.extraArgs (default: `[]`):: ++ +-- +Extra arguments for `cargo check`. +-- +[[rust-analyzer.check.extraEnv]]rust-analyzer.check.extraEnv (default: `{}`):: ++ +-- +Extra environment variables that will be set when running `cargo check`. +Extends `#rust-analyzer.cargo.extraEnv#`. +-- +[[rust-analyzer.check.features]]rust-analyzer.check.features (default: `null`):: ++ +-- +List of features to activate. Defaults to +`#rust-analyzer.cargo.features#`. + +Set to `"all"` to pass `--all-features` to Cargo. +-- +[[rust-analyzer.check.invocationLocation]]rust-analyzer.check.invocationLocation (default: `"workspace"`):: ++ +-- +Specifies the working directory for running checks. +- "workspace": run checks for workspaces in the corresponding workspaces' root directories. + This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. +- "root": run checks in the project's root directory. +This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` +is set. +-- +[[rust-analyzer.check.invocationStrategy]]rust-analyzer.check.invocationStrategy (default: `"per_workspace"`):: ++ +-- +Specifies the invocation strategy to use when running the checkOnSave command. +If `per_workspace` is set, the command will be executed for each workspace. +If `once` is set, the command will be executed once. +This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` +is set. +-- +[[rust-analyzer.check.noDefaultFeatures]]rust-analyzer.check.noDefaultFeatures (default: `null`):: ++ +-- +Whether to pass `--no-default-features` to Cargo. Defaults to +`#rust-analyzer.cargo.noDefaultFeatures#`. +-- +[[rust-analyzer.check.overrideCommand]]rust-analyzer.check.overrideCommand (default: `null`):: ++ +-- +Override the command rust-analyzer uses instead of `cargo check` for +diagnostics on save. The command is required to output json and +should therefore include `--message-format=json` or a similar option. + +If you're changing this because you're using some tool wrapping +Cargo, you might also want to change +`#rust-analyzer.cargo.buildScripts.overrideCommand#`. + +If there are multiple linked projects, this command is invoked for +each of them, with the working directory being the project root +(i.e., the folder containing the `Cargo.toml`). + +An example command would be: + +```bash +cargo check --workspace --message-format=json --all-targets +``` +. +-- +[[rust-analyzer.check.targets]]rust-analyzer.check.targets (default: `null`):: ++ +-- +Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. + +Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. +`["aarch64-apple-darwin", "x86_64-apple-darwin"]`. + +Aliased as `"checkOnSave.targets"`. -- [[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`):: + @@ -241,92 +327,6 @@ also need to add the folders to Code's `files.watcherExclude`. -- Controls file watching implementation. -- -[[rust-analyzer.flycheck.allTargets]]rust-analyzer.flycheck.allTargets (default: `true`):: -+ --- -Check all targets and tests (`--all-targets`). --- -[[rust-analyzer.flycheck.command]]rust-analyzer.flycheck.command (default: `"check"`):: -+ --- -Cargo command to use for `cargo check`. --- -[[rust-analyzer.flycheck.extraArgs]]rust-analyzer.flycheck.extraArgs (default: `[]`):: -+ --- -Extra arguments for `cargo check`. --- -[[rust-analyzer.flycheck.extraEnv]]rust-analyzer.flycheck.extraEnv (default: `{}`):: -+ --- -Extra environment variables that will be set when running `cargo check`. -Extends `#rust-analyzer.cargo.extraEnv#`. --- -[[rust-analyzer.flycheck.features]]rust-analyzer.flycheck.features (default: `null`):: -+ --- -List of features to activate. Defaults to -`#rust-analyzer.cargo.features#`. - -Set to `"all"` to pass `--all-features` to Cargo. --- -[[rust-analyzer.flycheck.invocationLocation]]rust-analyzer.flycheck.invocationLocation (default: `"workspace"`):: -+ --- -Specifies the working directory for running checks. -- "workspace": run checks for workspaces in the corresponding workspaces' root directories. - This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`. -- "root": run checks in the project's root directory. -This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` -is set. --- -[[rust-analyzer.flycheck.invocationStrategy]]rust-analyzer.flycheck.invocationStrategy (default: `"per_workspace"`):: -+ --- -Specifies the invocation strategy to use when running the checkOnSave command. -If `per_workspace` is set, the command will be executed for each workspace. -If `once` is set, the command will be executed once. -This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#` -is set. --- -[[rust-analyzer.flycheck.noDefaultFeatures]]rust-analyzer.flycheck.noDefaultFeatures (default: `null`):: -+ --- -Whether to pass `--no-default-features` to Cargo. Defaults to -`#rust-analyzer.cargo.noDefaultFeatures#`. --- -[[rust-analyzer.flycheck.overrideCommand]]rust-analyzer.flycheck.overrideCommand (default: `null`):: -+ --- -Override the command rust-analyzer uses instead of `cargo check` for -diagnostics on save. The command is required to output json and -should therefore include `--message-format=json` or a similar option. - -If you're changing this because you're using some tool wrapping -Cargo, you might also want to change -`#rust-analyzer.cargo.buildScripts.overrideCommand#`. - -If there are multiple linked projects, this command is invoked for -each of them, with the working directory being the project root -(i.e., the folder containing the `Cargo.toml`). - -An example command would be: - -```bash -cargo check --workspace --message-format=json --all-targets -``` -. --- -[[rust-analyzer.flycheck.targets]]rust-analyzer.flycheck.targets (default: `null`):: -+ --- -Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty. - -Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g. -`["aarch64-apple-darwin", "x86_64-apple-darwin"]`. - -Aliased as `"checkOnSave.targets"`. --- [[rust-analyzer.highlightRelated.breakPoints.enable]]rust-analyzer.highlightRelated.breakPoints.enable (default: `true`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index 4fe829382dd9..56018b9929cc 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -557,10 +557,120 @@ } }, "rust-analyzer.checkOnSave": { - "markdownDescription": "Run the flycheck command for diagnostics on save.", + "markdownDescription": "Run the check command for diagnostics on save.", "default": true, "type": "boolean" }, + "rust-analyzer.check.allTargets": { + "markdownDescription": "Check all targets and tests (`--all-targets`).", + "default": true, + "type": "boolean" + }, + "rust-analyzer.check.command": { + "markdownDescription": "Cargo command to use for `cargo check`.", + "default": "check", + "type": "string" + }, + "rust-analyzer.check.extraArgs": { + "markdownDescription": "Extra arguments for `cargo check`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.check.extraEnv": { + "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.", + "default": {}, + "type": "object" + }, + "rust-analyzer.check.features": { + "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.", + "default": null, + "anyOf": [ + { + "type": "string", + "enum": [ + "all" + ], + "enumDescriptions": [ + "Pass `--all-features` to cargo" + ] + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "rust-analyzer.check.invocationLocation": { + "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "workspace", + "type": "string", + "enum": [ + "workspace", + "root" + ], + "enumDescriptions": [ + "The command will be executed in the corresponding workspace root.", + "The command will be executed in the project root." + ] + }, + "rust-analyzer.check.invocationStrategy": { + "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "per_workspace", + "type": "string", + "enum": [ + "per_workspace", + "once" + ], + "enumDescriptions": [ + "The command will be executed for each workspace.", + "The command will be executed once." + ] + }, + "rust-analyzer.check.noDefaultFeatures": { + "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.", + "default": null, + "type": [ + "null", + "boolean" + ] + }, + "rust-analyzer.check.overrideCommand": { + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "default": null, + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "rust-analyzer.check.targets": { + "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", + "default": null, + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, "rust-analyzer.completion.autoimport.enable": { "markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", "default": true, @@ -702,116 +812,6 @@ "Use server-side file watching" ] }, - "rust-analyzer.flycheck.allTargets": { - "markdownDescription": "Check all targets and tests (`--all-targets`).", - "default": true, - "type": "boolean" - }, - "rust-analyzer.flycheck.command": { - "markdownDescription": "Cargo command to use for `cargo check`.", - "default": "check", - "type": "string" - }, - "rust-analyzer.flycheck.extraArgs": { - "markdownDescription": "Extra arguments for `cargo check`.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - }, - "rust-analyzer.flycheck.extraEnv": { - "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.", - "default": {}, - "type": "object" - }, - "rust-analyzer.flycheck.features": { - "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.", - "default": null, - "anyOf": [ - { - "type": "string", - "enum": [ - "all" - ], - "enumDescriptions": [ - "Pass `--all-features` to cargo" - ] - }, - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "rust-analyzer.flycheck.invocationLocation": { - "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", - "default": "workspace", - "type": "string", - "enum": [ - "workspace", - "root" - ], - "enumDescriptions": [ - "The command will be executed in the corresponding workspace root.", - "The command will be executed in the project root." - ] - }, - "rust-analyzer.flycheck.invocationStrategy": { - "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", - "default": "per_workspace", - "type": "string", - "enum": [ - "per_workspace", - "once" - ], - "enumDescriptions": [ - "The command will be executed for each workspace.", - "The command will be executed once." - ] - }, - "rust-analyzer.flycheck.noDefaultFeatures": { - "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.", - "default": null, - "type": [ - "null", - "boolean" - ] - }, - "rust-analyzer.flycheck.overrideCommand": { - "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", - "default": null, - "type": [ - "null", - "array" - ], - "items": { - "type": "string" - } - }, - "rust-analyzer.flycheck.targets": { - "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", - "default": null, - "anyOf": [ - { - "type": "null" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, "rust-analyzer.highlightRelated.breakPoints.enable": { "markdownDescription": "Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords.", "default": true, From b89c4f0a0529ca90dbe13d41fdd5e52331770900 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Tue, 20 Dec 2022 22:07:00 +0000 Subject: [PATCH 306/478] Implement postfix adjustment hints I'd say "First stab at implementing..." but I've been working on this for a month already lol --- crates/ide/src/inlay_hints.rs | 3 + crates/ide/src/inlay_hints/adjustment.rs | 252 ++++++++++++++++++++--- crates/ide/src/static_index.rs | 1 + crates/rust-analyzer/src/config.rs | 3 + crates/rust-analyzer/src/to_proto.rs | 4 + docs/user/generated_config.adoc | 5 + editors/code/package.json | 5 + 7 files changed, 246 insertions(+), 27 deletions(-) diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 86d25e2f5ad0..7315a37ebc70 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -35,6 +35,7 @@ pub struct InlayHintsConfig { pub parameter_hints: bool, pub chaining_hints: bool, pub adjustment_hints: AdjustmentHints, + pub adjustment_hints_postfix: bool, pub adjustment_hints_hide_outside_unsafe: bool, pub closure_return_type_hints: ClosureReturnTypeHints, pub binding_mode_hints: bool, @@ -82,6 +83,7 @@ pub enum InlayKind { ClosureReturnTypeHint, GenericParamListHint, AdjustmentHint, + AdjustmentHintPostfix, LifetimeHint, ParameterHint, TypeHint, @@ -446,6 +448,7 @@ mod tests { lifetime_elision_hints: LifetimeElisionHints::Never, closure_return_type_hints: ClosureReturnTypeHints::Never, adjustment_hints: AdjustmentHints::Never, + adjustment_hints_postfix: false, adjustment_hints_hide_outside_unsafe: false, binding_mode_hints: false, hide_named_constructor_hints: false, diff --git a/crates/ide/src/inlay_hints/adjustment.rs b/crates/ide/src/inlay_hints/adjustment.rs index 1c13f31cf24f..367bd2f6619e 100644 --- a/crates/ide/src/inlay_hints/adjustment.rs +++ b/crates/ide/src/inlay_hints/adjustment.rs @@ -5,7 +5,11 @@ //! ``` use hir::{Adjust, AutoBorrow, Mutability, OverloadedDeref, PointerCast, Safety, Semantics}; use ide_db::RootDatabase; -use syntax::ast::{self, AstNode}; + +use syntax::{ + ast::{self, make, AstNode}, + ted, +}; use crate::{AdjustmentHints, InlayHint, InlayHintsConfig, InlayKind}; @@ -32,28 +36,14 @@ pub(super) fn hints( return None; } - let parent = expr.syntax().parent().and_then(ast::Expr::cast); let descended = sema.descend_node_into_attributes(expr.clone()).pop(); let desc_expr = descended.as_ref().unwrap_or(expr); let adjustments = sema.expr_adjustments(desc_expr).filter(|it| !it.is_empty())?; - let needs_parens = match parent { - Some(parent) => { - match parent { - ast::Expr::AwaitExpr(_) - | ast::Expr::CallExpr(_) - | ast::Expr::CastExpr(_) - | ast::Expr::FieldExpr(_) - | ast::Expr::MethodCallExpr(_) - | ast::Expr::TryExpr(_) => true, - // FIXME: shorthands need special casing, though not sure if adjustments are even valid there - ast::Expr::RecordExpr(_) => false, - ast::Expr::IndexExpr(index) => index.base().as_ref() == Some(expr), - _ => false, - } - } - None => false, - }; - if needs_parens { + + let (needs_outer_parens, needs_inner_parens) = + needs_parens_for_adjustment_hints(expr, config.adjustment_hints_postfix); + + if needs_outer_parens { acc.push(InlayHint { range: expr.syntax().text_range(), kind: InlayKind::OpeningParenthesis, @@ -61,7 +51,32 @@ pub(super) fn hints( tooltip: None, }); } - for adjustment in adjustments.into_iter().rev() { + + if config.adjustment_hints_postfix && needs_inner_parens { + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::OpeningParenthesis, + label: "(".into(), + tooltip: None, + }); + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::ClosingParenthesis, + label: ")".into(), + tooltip: None, + }); + } + + let (mut tmp0, mut tmp1); + let iter: &mut dyn Iterator = if config.adjustment_hints_postfix { + tmp0 = adjustments.into_iter(); + &mut tmp0 + } else { + tmp1 = adjustments.into_iter().rev(); + &mut tmp1 + }; + + for adjustment in iter { if adjustment.source == adjustment.target { continue; } @@ -97,12 +112,34 @@ pub(super) fn hints( }; acc.push(InlayHint { range: expr.syntax().text_range(), - kind: InlayKind::AdjustmentHint, - label: text.into(), + kind: if config.adjustment_hints_postfix { + InlayKind::AdjustmentHintPostfix + } else { + InlayKind::AdjustmentHint + }, + label: if config.adjustment_hints_postfix { + format!(".{}", text.trim_end()).into() + } else { + text.into() + }, tooltip: None, }); } - if needs_parens { + if !config.adjustment_hints_postfix && needs_inner_parens { + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::OpeningParenthesis, + label: "(".into(), + tooltip: None, + }); + acc.push(InlayHint { + range: expr.syntax().text_range(), + kind: InlayKind::ClosingParenthesis, + label: ")".into(), + tooltip: None, + }); + } + if needs_outer_parens { acc.push(InlayHint { range: expr.syntax().text_range(), kind: InlayKind::ClosingParenthesis, @@ -113,6 +150,69 @@ pub(super) fn hints( Some(()) } +/// Returns whatever we need to add paretheses on the inside and/or outside of `expr`, +/// if we are going to add (`postfix`) adjustments hints to it. +fn needs_parens_for_adjustment_hints(expr: &ast::Expr, postfix: bool) -> (bool, bool) { + // This is a very miserable pile of hacks... + // + // `Expr::needs_parens_in` requires that the expression is the child of the other expression, + // that is supposed to be its parent. + // + // But we want to check what would happen if we add `*`/`.*` to the inner expression. + // To check for inner we need `` expr.needs_parens_in(`*expr`) ``, + // to check for outer we need `` `*expr`.needs_parens_in(parent) ``, + // where "expr" is the `expr` parameter, `*expr` is the editted `expr`, + // and "parent" is the parent of the original expression... + // + // For this we utilize mutable mutable trees, which is a HACK, but it works. + + // Make `&expr`/`expr?` + let dummy_expr = { + // `make::*` function go through a string, so they parse wrongly. + // for example `` make::expr_try(`|| a`) `` would result in a + // `|| (a?)` and not `(|| a)?`. + // + // Thus we need dummy parens to preserve the relationship we want. + // The parens are then simply ignored by the following code. + let dummy_paren = make::expr_paren(expr.clone()); + if postfix { + make::expr_try(dummy_paren) + } else { + make::expr_ref(dummy_paren, false) + } + }; + + // Do the dark mutable tree magic. + // This essentially makes `dummy_expr` and `expr` switch places (families), + // so that `expr`'s parent is not `dummy_expr`'s parent. + let dummy_expr = dummy_expr.clone_for_update(); + let expr = expr.clone_for_update(); + ted::replace(expr.syntax(), dummy_expr.syntax()); + + let parent = dummy_expr.syntax().parent(); + let expr = if postfix { + let ast::Expr::TryExpr(e) = &dummy_expr else { unreachable!() }; + let Some(ast::Expr::ParenExpr(e)) = e.expr() else { unreachable!() }; + + e.expr().unwrap() + } else { + let ast::Expr::RefExpr(e) = &dummy_expr else { unreachable!() }; + let Some(ast::Expr::ParenExpr(e)) = e.expr() else { unreachable!() }; + + e.expr().unwrap() + }; + + // At this point + // - `parent` is the parrent of the original expression + // - `dummy_expr` is the original expression wrapped in the operator we want (`*`/`.*`) + // - `expr` is the clone of the original expression (with `dummy_expr` as the parent) + + let needs_outer_parens = parent.map_or(false, |p| dummy_expr.needs_parens_in(p)); + let needs_inner_parens = expr.needs_parens_in(dummy_expr.syntax().clone()); + + (needs_outer_parens, needs_inner_parens) +} + #[cfg(test)] mod tests { use crate::{ @@ -125,7 +225,7 @@ mod tests { check_with_config( InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, ..DISABLED_CONFIG }, r#" -//- minicore: coerce_unsized +//- minicore: coerce_unsized, fn fn main() { let _: u32 = loop {}; //^^^^^^^ @@ -148,12 +248,16 @@ fn main() { //^^^^ let _: unsafe fn() = main as fn(); //^^^^^^^^^^^^ + //^^^^^^^^^^^^( + //^^^^^^^^^^^^) let _: fn() = || {}; //^^^^^ let _: unsafe fn() = || {}; //^^^^^ let _: *const u32 = &mut 0u32 as *mut u32; //^^^^^^^^^^^^^^^^^^^^^ + //^^^^^^^^^^^^^^^^^^^^^( + //^^^^^^^^^^^^^^^^^^^^^) let _: &mut [_] = &mut [0; 0]; //^^^^^^^^^^^ //^^^^^^^^^^^&mut $ @@ -206,6 +310,11 @@ fn main() { //^^^^^^^ //^^^^^^^&mut $ //^^^^^^^* + + let _: &mut dyn Fn() = &mut || (); + //^^^^^^^^^^ + //^^^^^^^^^^&mut $ + //^^^^^^^^^^* } #[derive(Copy, Clone)] @@ -215,12 +324,101 @@ impl Struct { fn by_ref(&self) {} fn by_ref_mut(&mut self) {} } -trait Trait {} -impl Trait for Struct {} "#, ) } + #[test] + fn adjustment_hints_postfix() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_postfix: true, + ..DISABLED_CONFIG + }, + r#" +//- minicore: coerce_unsized, fn +fn main() { + + Struct.consume(); + Struct.by_ref(); + //^^^^^^.& + Struct.by_ref_mut(); + //^^^^^^.&mut + + (&Struct).consume(); + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + (&Struct).by_ref(); + + (&mut Struct).consume(); + //^^^^^^^^^^^( + //^^^^^^^^^^^) + //^^^^^^^^^^^.* + (&mut Struct).by_ref(); + //^^^^^^^^^^^( + //^^^^^^^^^^^) + //^^^^^^^^^^^.* + //^^^^^^^^^^^.& + (&mut Struct).by_ref_mut(); + + // Check that block-like expressions don't duplicate hints + let _: &mut [u32] = (&mut []); + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + //^^^^^^^.&mut + //^^^^^^^. + let _: &mut [u32] = { &mut [] }; + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + //^^^^^^^.&mut + //^^^^^^^. + let _: &mut [u32] = unsafe { &mut [] }; + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + //^^^^^^^.&mut + //^^^^^^^. + let _: &mut [u32] = if true { + &mut [] + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + //^^^^^^^.&mut + //^^^^^^^. + } else { + loop {} + //^^^^^^^. + }; + let _: &mut [u32] = match () { () => &mut [] } + //^^^^^^^( + //^^^^^^^) + //^^^^^^^.* + //^^^^^^^.&mut + //^^^^^^^. + + let _: &mut dyn Fn() = &mut || (); + //^^^^^^^^^^( + //^^^^^^^^^^) + //^^^^^^^^^^.* + //^^^^^^^^^^.&mut + //^^^^^^^^^^. +} + +#[derive(Copy, Clone)] +struct Struct; +impl Struct { + fn consume(self) {} + fn by_ref(&self) {} + fn by_ref_mut(&mut self) {} +} +"#, + ); + } + #[test] fn never_to_never_is_never_shown() { check_with_config( diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index 6e31a1420ea7..c6cca0d8698e 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -115,6 +115,7 @@ impl StaticIndex<'_> { closure_return_type_hints: crate::ClosureReturnTypeHints::WithBlock, lifetime_elision_hints: crate::LifetimeElisionHints::Never, adjustment_hints: crate::AdjustmentHints::Never, + adjustment_hints_postfix: false, adjustment_hints_hide_outside_unsafe: false, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 0f515a6d5cbf..4d11a84091c5 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -333,6 +333,8 @@ config_data! { inlayHints_expressionAdjustmentHints_enable: AdjustmentHintsDef = "\"never\"", /// Whether to hide inlay hints for type adjustments outside of `unsafe` blocks. inlayHints_expressionAdjustmentHints_hideOutsideUnsafe: bool = "false", + /// Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc). + inlayHints_expressionAdjustmentHints_postfix: bool = "false", /// Whether to show inlay type hints for elided lifetimes in function signatures. inlayHints_lifetimeElisionHints_enable: LifetimeElisionDef = "\"never\"", /// Whether to prefer using parameter names as the name for elided lifetime hints if possible. @@ -1252,6 +1254,7 @@ impl Config { }, AdjustmentHintsDef::Reborrow => ide::AdjustmentHints::ReborrowOnly, }, + adjustment_hints_postfix: self.data.inlayHints_expressionAdjustmentHints_postfix, adjustment_hints_hide_outside_unsafe: self .data .inlayHints_expressionAdjustmentHints_hideOutsideUnsafe, diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index a12bd3952cc1..e736b2ff9a3b 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -452,6 +452,7 @@ pub(crate) fn inlay_hint( | InlayKind::ChainingHint | InlayKind::GenericParamListHint | InlayKind::ClosingParenthesis + | InlayKind::AdjustmentHintPostfix | InlayKind::LifetimeHint | InlayKind::ClosingBraceHint => position(line_index, inlay_hint.range.end()), }, @@ -465,6 +466,7 @@ pub(crate) fn inlay_hint( | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::LifetimeHint | InlayKind::ParameterHint => false, }), @@ -475,6 +477,7 @@ pub(crate) fn inlay_hint( | InlayKind::ClosureReturnTypeHint | InlayKind::GenericParamListHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::TypeHint | InlayKind::DiscriminantHint | InlayKind::ClosingBraceHint => false, @@ -493,6 +496,7 @@ pub(crate) fn inlay_hint( | InlayKind::GenericParamListHint | InlayKind::LifetimeHint | InlayKind::AdjustmentHint + | InlayKind::AdjustmentHintPostfix | InlayKind::ClosingBraceHint => None, }, text_edits: None, diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index d9794e7052a7..60c16ecadf5e 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -469,6 +469,11 @@ Whether to show inlay hints for type adjustments. -- Whether to hide inlay hints for type adjustments outside of `unsafe` blocks. -- +[[rust-analyzer.inlayHints.expressionAdjustmentHints.postfix]]rust-analyzer.inlayHints.expressionAdjustmentHints.postfix (default: `false`):: ++ +-- +Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc). +-- [[rust-analyzer.inlayHints.lifetimeElisionHints.enable]]rust-analyzer.inlayHints.lifetimeElisionHints.enable (default: `"never"`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index f508dde4f608..aeb1d97c5f6b 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -1000,6 +1000,11 @@ "default": false, "type": "boolean" }, + "rust-analyzer.inlayHints.expressionAdjustmentHints.postfix": { + "markdownDescription": "Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc).", + "default": false, + "type": "boolean" + }, "rust-analyzer.inlayHints.lifetimeElisionHints.enable": { "markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.", "default": "never", From 12b7f9f7bfb4d50ee29232d9d40430fa22db7157 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 21 Dec 2022 15:00:05 +0000 Subject: [PATCH 307/478] Add an option to minimize parentheses for adjustment hints --- crates/ide/src/inlay_hints.rs | 14 ++- crates/ide/src/inlay_hints/adjustment.rs | 111 ++++++++++++++++++++--- crates/ide/src/lib.rs | 4 +- crates/ide/src/static_index.rs | 3 +- crates/rust-analyzer/src/config.rs | 35 ++++++- docs/user/generated_config.adoc | 4 +- editors/code/package.json | 20 +++- 7 files changed, 162 insertions(+), 29 deletions(-) diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 7315a37ebc70..48a7bbfecffa 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -35,7 +35,7 @@ pub struct InlayHintsConfig { pub parameter_hints: bool, pub chaining_hints: bool, pub adjustment_hints: AdjustmentHints, - pub adjustment_hints_postfix: bool, + pub adjustment_hints_mode: AdjustmentHintsMode, pub adjustment_hints_hide_outside_unsafe: bool, pub closure_return_type_hints: ClosureReturnTypeHints, pub binding_mode_hints: bool, @@ -75,6 +75,14 @@ pub enum AdjustmentHints { Never, } +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum AdjustmentHintsMode { + Prefix, + Postfix, + PreferPrefix, + PreferPostfix, +} + #[derive(Clone, Debug, PartialEq, Eq)] pub enum InlayKind { BindingModeHint, @@ -432,7 +440,7 @@ mod tests { use itertools::Itertools; use test_utils::extract_annotations; - use crate::inlay_hints::AdjustmentHints; + use crate::inlay_hints::{AdjustmentHints, AdjustmentHintsMode}; use crate::DiscriminantHints; use crate::{fixture, inlay_hints::InlayHintsConfig, LifetimeElisionHints}; @@ -448,7 +456,7 @@ mod tests { lifetime_elision_hints: LifetimeElisionHints::Never, closure_return_type_hints: ClosureReturnTypeHints::Never, adjustment_hints: AdjustmentHints::Never, - adjustment_hints_postfix: false, + adjustment_hints_mode: AdjustmentHintsMode::Prefix, adjustment_hints_hide_outside_unsafe: false, binding_mode_hints: false, hide_named_constructor_hints: false, diff --git a/crates/ide/src/inlay_hints/adjustment.rs b/crates/ide/src/inlay_hints/adjustment.rs index 367bd2f6619e..47e854e4bd74 100644 --- a/crates/ide/src/inlay_hints/adjustment.rs +++ b/crates/ide/src/inlay_hints/adjustment.rs @@ -11,7 +11,7 @@ use syntax::{ ted, }; -use crate::{AdjustmentHints, InlayHint, InlayHintsConfig, InlayKind}; +use crate::{AdjustmentHints, AdjustmentHintsMode, InlayHint, InlayHintsConfig, InlayKind}; pub(super) fn hints( acc: &mut Vec, @@ -40,8 +40,8 @@ pub(super) fn hints( let desc_expr = descended.as_ref().unwrap_or(expr); let adjustments = sema.expr_adjustments(desc_expr).filter(|it| !it.is_empty())?; - let (needs_outer_parens, needs_inner_parens) = - needs_parens_for_adjustment_hints(expr, config.adjustment_hints_postfix); + let (postfix, needs_outer_parens, needs_inner_parens) = + mode_and_needs_parens_for_adjustment_hints(expr, config.adjustment_hints_mode); if needs_outer_parens { acc.push(InlayHint { @@ -52,7 +52,7 @@ pub(super) fn hints( }); } - if config.adjustment_hints_postfix && needs_inner_parens { + if postfix && needs_inner_parens { acc.push(InlayHint { range: expr.syntax().text_range(), kind: InlayKind::OpeningParenthesis, @@ -68,7 +68,7 @@ pub(super) fn hints( } let (mut tmp0, mut tmp1); - let iter: &mut dyn Iterator = if config.adjustment_hints_postfix { + let iter: &mut dyn Iterator = if postfix { tmp0 = adjustments.into_iter(); &mut tmp0 } else { @@ -112,20 +112,16 @@ pub(super) fn hints( }; acc.push(InlayHint { range: expr.syntax().text_range(), - kind: if config.adjustment_hints_postfix { + kind: if postfix { InlayKind::AdjustmentHintPostfix } else { InlayKind::AdjustmentHint }, - label: if config.adjustment_hints_postfix { - format!(".{}", text.trim_end()).into() - } else { - text.into() - }, + label: if postfix { format!(".{}", text.trim_end()).into() } else { text.into() }, tooltip: None, }); } - if !config.adjustment_hints_postfix && needs_inner_parens { + if !postfix && needs_inner_parens { acc.push(InlayHint { range: expr.syntax().text_range(), kind: InlayKind::OpeningParenthesis, @@ -150,6 +146,41 @@ pub(super) fn hints( Some(()) } +/// Returns whatever the hint should be postfix and if we need to add paretheses on the inside and/or outside of `expr`, +/// if we are going to add (`postfix`) adjustments hints to it. +fn mode_and_needs_parens_for_adjustment_hints( + expr: &ast::Expr, + mode: AdjustmentHintsMode, +) -> (bool, bool, bool) { + use {std::cmp::Ordering::*, AdjustmentHintsMode::*}; + + match mode { + Prefix | Postfix => { + let postfix = matches!(mode, Postfix); + let (inside, outside) = needs_parens_for_adjustment_hints(expr, postfix); + (postfix, inside, outside) + } + PreferPrefix | PreferPostfix => { + let prefer_postfix = matches!(mode, PreferPostfix); + + let (pre_inside, pre_outside) = needs_parens_for_adjustment_hints(expr, false); + let prefix = (false, pre_inside, pre_outside); + let pre_count = pre_inside as u8 + pre_outside as u8; + + let (post_inside, post_outside) = needs_parens_for_adjustment_hints(expr, true); + let postfix = (true, post_inside, post_outside); + let post_count = post_inside as u8 + post_outside as u8; + + match pre_count.cmp(&post_count) { + Less => prefix, + Greater => postfix, + Equal if prefer_postfix => postfix, + Equal => prefix, + } + } + } +} + /// Returns whatever we need to add paretheses on the inside and/or outside of `expr`, /// if we are going to add (`postfix`) adjustments hints to it. fn needs_parens_for_adjustment_hints(expr: &ast::Expr, postfix: bool) -> (bool, bool) { @@ -217,7 +248,7 @@ fn needs_parens_for_adjustment_hints(expr: &ast::Expr, postfix: bool) -> (bool, mod tests { use crate::{ inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, - AdjustmentHints, InlayHintsConfig, + AdjustmentHints, AdjustmentHintsMode, InlayHintsConfig, }; #[test] @@ -333,7 +364,7 @@ impl Struct { check_with_config( InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, - adjustment_hints_postfix: true, + adjustment_hints_mode: AdjustmentHintsMode::Postfix, ..DISABLED_CONFIG }, r#" @@ -419,6 +450,58 @@ impl Struct { ); } + #[test] + fn adjustment_hints_prefer_prefix() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_mode: AdjustmentHintsMode::PreferPrefix, + ..DISABLED_CONFIG + }, + r#" +fn main() { + let _: u32 = loop {}; + //^^^^^^^ + + Struct.by_ref(); + //^^^^^^.& + + let (): () = return (); + //^^^^^^^^^ + + struct Struct; + impl Struct { fn by_ref(&self) {} } +} + "#, + ) + } + + #[test] + fn adjustment_hints_prefer_postfix() { + check_with_config( + InlayHintsConfig { + adjustment_hints: AdjustmentHints::Always, + adjustment_hints_mode: AdjustmentHintsMode::PreferPostfix, + ..DISABLED_CONFIG + }, + r#" +fn main() { + let _: u32 = loop {}; + //^^^^^^^. + + Struct.by_ref(); + //^^^^^^.& + + let (): () = return (); + //^^^^^^^^^ + + struct Struct; + impl Struct { fn by_ref(&self) {} } +} + "#, + ) + } + #[test] fn never_to_never_is_never_shown() { check_with_config( diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 200958a43300..239456cb2816 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs @@ -81,8 +81,8 @@ pub use crate::{ highlight_related::{HighlightRelatedConfig, HighlightedRange}, hover::{HoverAction, HoverConfig, HoverDocFormat, HoverGotoTypeData, HoverResult}, inlay_hints::{ - AdjustmentHints, ClosureReturnTypeHints, DiscriminantHints, InlayHint, InlayHintLabel, - InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints, + AdjustmentHints, AdjustmentHintsMode, ClosureReturnTypeHints, DiscriminantHints, InlayHint, + InlayHintLabel, InlayHintsConfig, InlayKind, InlayTooltip, LifetimeElisionHints, }, join_lines::JoinLinesConfig, markup::Markup, diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index c6cca0d8698e..a6b30ba13962 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -13,6 +13,7 @@ use syntax::{AstNode, SyntaxKind::*, SyntaxToken, TextRange, T}; use crate::{ hover::hover_for_definition, + inlay_hints::AdjustmentHintsMode, moniker::{def_to_moniker, MonikerResult}, parent_module::crates_for, Analysis, Fold, HoverConfig, HoverDocFormat, HoverResult, InlayHint, InlayHintsConfig, @@ -115,7 +116,7 @@ impl StaticIndex<'_> { closure_return_type_hints: crate::ClosureReturnTypeHints::WithBlock, lifetime_elision_hints: crate::LifetimeElisionHints::Never, adjustment_hints: crate::AdjustmentHints::Never, - adjustment_hints_postfix: false, + adjustment_hints_mode: AdjustmentHintsMode::Prefix, adjustment_hints_hide_outside_unsafe: false, hide_named_constructor_hints: false, hide_closure_initialization_hints: false, diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 4d11a84091c5..27a86db382d4 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -333,8 +333,8 @@ config_data! { inlayHints_expressionAdjustmentHints_enable: AdjustmentHintsDef = "\"never\"", /// Whether to hide inlay hints for type adjustments outside of `unsafe` blocks. inlayHints_expressionAdjustmentHints_hideOutsideUnsafe: bool = "false", - /// Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc). - inlayHints_expressionAdjustmentHints_postfix: bool = "false", + /// Whether to show inlay hints as postfix ops (`.*` instead of `*`, etc). + inlayHints_expressionAdjustmentHints_mode: AdjustmentHintsModeDef = "\"prefix\"", /// Whether to show inlay type hints for elided lifetimes in function signatures. inlayHints_lifetimeElisionHints_enable: LifetimeElisionDef = "\"never\"", /// Whether to prefer using parameter names as the name for elided lifetime hints if possible. @@ -1254,7 +1254,12 @@ impl Config { }, AdjustmentHintsDef::Reborrow => ide::AdjustmentHints::ReborrowOnly, }, - adjustment_hints_postfix: self.data.inlayHints_expressionAdjustmentHints_postfix, + adjustment_hints_mode: match self.data.inlayHints_expressionAdjustmentHints_mode { + AdjustmentHintsModeDef::Prefix => ide::AdjustmentHintsMode::Prefix, + AdjustmentHintsModeDef::Postfix => ide::AdjustmentHintsMode::Postfix, + AdjustmentHintsModeDef::PreferPrefix => ide::AdjustmentHintsMode::PreferPrefix, + AdjustmentHintsModeDef::PreferPostfix => ide::AdjustmentHintsMode::PreferPostfix, + }, adjustment_hints_hide_outside_unsafe: self .data .inlayHints_expressionAdjustmentHints_hideOutsideUnsafe, @@ -1771,6 +1776,15 @@ enum DiscriminantHintsDef { Fieldless, } +#[derive(Deserialize, Debug, Clone)] +#[serde(rename_all = "snake_case")] +enum AdjustmentHintsModeDef { + Prefix, + Postfix, + PreferPrefix, + PreferPostfix, +} + #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] enum FilesWatcherDef { @@ -2104,6 +2118,21 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json "Only show discriminant hints on fieldless enum variants." ] }, + "AdjustmentHintsModeDef" => set! { + "type": "string", + "enum": [ + "prefix", + "postfix", + "prefer_prefix", + "prefer_postfix", + ], + "enumDescriptions": [ + "Always show adjustment hints as prefix (`*expr`).", + "Always show adjustment hints as postfix (`expr.*`).", + "Show prefix or postfix depending on which uses less parenthesis, prefering prefix.", + "Show prefix or postfix depending on which uses less parenthesis, prefering postfix.", + ] + }, "CargoFeaturesDef" => set! { "anyOf": [ { diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 60c16ecadf5e..0aaf07ebf38a 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -469,10 +469,10 @@ Whether to show inlay hints for type adjustments. -- Whether to hide inlay hints for type adjustments outside of `unsafe` blocks. -- -[[rust-analyzer.inlayHints.expressionAdjustmentHints.postfix]]rust-analyzer.inlayHints.expressionAdjustmentHints.postfix (default: `false`):: +[[rust-analyzer.inlayHints.expressionAdjustmentHints.mode]]rust-analyzer.inlayHints.expressionAdjustmentHints.mode (default: `"prefix"`):: + -- -Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc). +Whether to show inlay hints as postfix ops (`.*` instead of `*`, etc). -- [[rust-analyzer.inlayHints.lifetimeElisionHints.enable]]rust-analyzer.inlayHints.lifetimeElisionHints.enable (default: `"never"`):: + diff --git a/editors/code/package.json b/editors/code/package.json index aeb1d97c5f6b..5ffce2f55365 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -1000,10 +1000,22 @@ "default": false, "type": "boolean" }, - "rust-analyzer.inlayHints.expressionAdjustmentHints.postfix": { - "markdownDescription": "Whether to show inlay hints for type adjustments as postfix ops (`.*` instead of `*`, etc).", - "default": false, - "type": "boolean" + "rust-analyzer.inlayHints.expressionAdjustmentHints.mode": { + "markdownDescription": "Whether to show inlay hints as postfix ops (`.*` instead of `*`, etc).", + "default": "prefix", + "type": "string", + "enum": [ + "prefix", + "postfix", + "prefer_prefix", + "prefer_postfix" + ], + "enumDescriptions": [ + "Always show adjustment hints as prefix (`*expr`).", + "Always show adjustment hints as postfix (`expr.*`).", + "Show prefix or postfix depending on which uses less parenthesis, prefering prefix.", + "Show prefix or postfix depending on which uses less parenthesis, prefering postfix." + ] }, "rust-analyzer.inlayHints.lifetimeElisionHints.enable": { "markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.", From a9676cfbe3f81515483fb563f20c74e27cfa7c41 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 21 Dec 2022 15:31:57 +0000 Subject: [PATCH 308/478] Add a "bug" test for adjustment hints to check for status quo --- crates/ide/src/inlay_hints/adjustment.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/crates/ide/src/inlay_hints/adjustment.rs b/crates/ide/src/inlay_hints/adjustment.rs index 47e854e4bd74..9f6984b59e91 100644 --- a/crates/ide/src/inlay_hints/adjustment.rs +++ b/crates/ide/src/inlay_hints/adjustment.rs @@ -609,4 +609,20 @@ fn a() { "#, ); } + + #[test] + fn bug() { + check_with_config( + InlayHintsConfig { adjustment_hints: AdjustmentHints::Always, ..DISABLED_CONFIG }, + r#" +fn main() { + // These should be identical, but they are not... + + let () = return; + let (): () = return; + //^^^^^^ +} + "#, + ) + } } From b6169c2a2e5a24e9905a2614e6fe469fb37f50c9 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Mon, 9 Jan 2023 13:37:37 +0000 Subject: [PATCH 309/478] Add a fixme to remove hacks --- crates/ide/src/inlay_hints/adjustment.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/ide/src/inlay_hints/adjustment.rs b/crates/ide/src/inlay_hints/adjustment.rs index 9f6984b59e91..bdd7c05e008c 100644 --- a/crates/ide/src/inlay_hints/adjustment.rs +++ b/crates/ide/src/inlay_hints/adjustment.rs @@ -196,6 +196,8 @@ fn needs_parens_for_adjustment_hints(expr: &ast::Expr, postfix: bool) -> (bool, // and "parent" is the parent of the original expression... // // For this we utilize mutable mutable trees, which is a HACK, but it works. + // + // FIXME: comeup with a better API for `needs_parens_in`, so that we don't have to do *this* // Make `&expr`/`expr?` let dummy_expr = { From 44c84a8d2848c9fae4d496c0d9dc9e8c98c8f1ef Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Tue, 6 Dec 2022 17:34:47 +0000 Subject: [PATCH 310/478] Add `convert_ufcs_to_method` assist --- .../src/handlers/convert_ufcs_to_method.rs | 211 ++++++++++++++++++ crates/ide-assists/src/lib.rs | 2 + crates/ide-assists/src/tests/generated.rs | 19 ++ 3 files changed, 232 insertions(+) create mode 100644 crates/ide-assists/src/handlers/convert_ufcs_to_method.rs diff --git a/crates/ide-assists/src/handlers/convert_ufcs_to_method.rs b/crates/ide-assists/src/handlers/convert_ufcs_to_method.rs new file mode 100644 index 000000000000..8704e40b0d7b --- /dev/null +++ b/crates/ide-assists/src/handlers/convert_ufcs_to_method.rs @@ -0,0 +1,211 @@ +use syntax::{ + ast::{self, make, AstNode, HasArgList}, + TextRange, +}; + +use crate::{AssistContext, AssistId, AssistKind, Assists}; + +// Assist: convert_ufcs_to_method +// +// Transforms universal function call syntax into a method call. +// +// ``` +// fn main() { +// std::ops::Add::add$0(1, 2); +// } +// # mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +// ``` +// -> +// ``` +// fn main() { +// 1.add(2); +// } +// # mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +// ``` +pub(crate) fn convert_ufcs_to_method(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { + let call = ctx.find_node_at_offset::()?; + let ast::Expr::PathExpr(path_expr) = call.expr()? else { return None }; + let path = path_expr.path()?; + + let cursor_in_range = path.syntax().text_range().contains_range(ctx.selection_trimmed()); + if !cursor_in_range { + return None; + } + + let args = call.arg_list()?; + let l_paren = args.l_paren_token()?; + let mut args_iter = args.args(); + let first_arg = args_iter.next()?; + let second_arg = args_iter.next(); + + _ = path.qualifier()?; + let method_name = path.segment()?.name_ref()?; + + let res = ctx.sema.resolve_path(&path)?; + let hir::PathResolution::Def(hir::ModuleDef::Function(fun)) = res else { return None }; + if !fun.has_self_param(ctx.sema.db) { + return None; + } + + // `core::ops::Add::add(` -> `` + let delete_path = + TextRange::new(path.syntax().text_range().start(), l_paren.text_range().end()); + + // Parens around `expr` if needed + let parens = needs_parens_as_receiver(&first_arg).then(|| { + let range = first_arg.syntax().text_range(); + (range.start(), range.end()) + }); + + // `, ` -> `.add(` + let replace_comma = TextRange::new( + first_arg.syntax().text_range().end(), + second_arg + .map(|a| a.syntax().text_range().start()) + .unwrap_or_else(|| first_arg.syntax().text_range().end()), + ); + + acc.add( + AssistId("convert_ufcs_to_method", AssistKind::RefactorRewrite), + "Convert UFCS to a method call", + call.syntax().text_range(), + |edit| { + edit.delete(delete_path); + if let Some((open, close)) = parens { + edit.insert(open, "("); + edit.insert(close, ")"); + } + edit.replace(replace_comma, format!(".{method_name}(")); + }, + ) +} + +fn needs_parens_as_receiver(expr: &ast::Expr) -> bool { + // Make `(expr).dummy()` + let dummy_call = make::expr_method_call( + make::expr_paren(expr.clone()), + make::name_ref("dummy"), + make::arg_list([]), + ); + + // Get the `expr` clone with the right parent back + // (unreachable!s are fine since we've just constructed the expression) + let ast::Expr::MethodCallExpr(call) = &dummy_call else { unreachable!() }; + let Some(receiver) = call.receiver() else { unreachable!() }; + let ast::Expr::ParenExpr(parens) = receiver else { unreachable!() }; + let Some(expr) = parens.expr() else { unreachable!() }; + + expr.needs_parens_in(dummy_call.syntax().clone()) +} + +#[cfg(test)] +mod tests { + use crate::tests::{check_assist, check_assist_not_applicable}; + + use super::*; + + #[test] + fn ufcs2method_simple() { + check_assist( + convert_ufcs_to_method, + r#" +struct S; +impl S { fn f(self, S: S) {} } +fn f() { S::$0f(S, S); }"#, + r#" +struct S; +impl S { fn f(self, S: S) {} } +fn f() { S.f(S); }"#, + ); + } + + #[test] + fn ufcs2method_trait() { + check_assist( + convert_ufcs_to_method, + r#" +//- minicore: add +fn f() { ::$0add(2, 2); }"#, + r#" +fn f() { 2.add(2); }"#, + ); + + check_assist( + convert_ufcs_to_method, + r#" +//- minicore: add +fn f() { core::ops::Add::$0add(2, 2); }"#, + r#" +fn f() { 2.add(2); }"#, + ); + + check_assist( + convert_ufcs_to_method, + r#" +//- minicore: add +use core::ops::Add; +fn f() { <_>::$0add(2, 2); }"#, + r#" +use core::ops::Add; +fn f() { 2.add(2); }"#, + ); + } + + #[test] + fn ufcs2method_single_arg() { + check_assist( + convert_ufcs_to_method, + r#" + struct S; + impl S { fn f(self) {} } + fn f() { S::$0f(S); }"#, + r#" + struct S; + impl S { fn f(self) {} } + fn f() { S.f(); }"#, + ); + } + + #[test] + fn ufcs2method_parens() { + check_assist( + convert_ufcs_to_method, + r#" +//- minicore: deref +struct S; +impl core::ops::Deref for S { + type Target = S; + fn deref(&self) -> &S { self } +} +fn f() { core::ops::Deref::$0deref(&S); }"#, + r#" +struct S; +impl core::ops::Deref for S { + type Target = S; + fn deref(&self) -> &S { self } +} +fn f() { (&S).deref(); }"#, + ); + } + + #[test] + fn ufcs2method_doesnt_apply_with_cursor_not_on_path() { + check_assist_not_applicable( + convert_ufcs_to_method, + r#" +//- minicore: add +fn f() { core::ops::Add::add(2,$0 2); }"#, + ); + } + + #[test] + fn ufcs2method_doesnt_apply_with_no_self() { + check_assist_not_applicable( + convert_ufcs_to_method, + r#" +struct S; +impl S { fn assoc(S: S, S: S) {} } +fn f() { S::assoc$0(S, S); }"#, + ); + } +} diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index f7ac9d8fd6bb..6da51cfa4f70 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -126,6 +126,7 @@ mod handlers { mod convert_to_guarded_return; mod convert_two_arm_bool_match_to_matches_macro; mod convert_while_to_loop; + mod convert_ufcs_to_method; mod destructure_tuple_binding; mod expand_glob_import; mod extract_expressions_from_format_string; @@ -218,6 +219,7 @@ mod handlers { convert_bool_then::convert_bool_then_to_if, convert_bool_then::convert_if_to_bool_then, convert_comment_block::convert_comment_block, + convert_ufcs_to_method::convert_ufcs_to_method, convert_integer_literal::convert_integer_literal, convert_into_to_from::convert_into_to_from, convert_iter_for_each_to_for::convert_iter_for_each_to_for, diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index 210df6999d8c..d84f343c5510 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -554,6 +554,25 @@ fn main() { ) } +#[test] +fn doctest_convert_ufcs_to_method() { + check_doc_test( + "convert_ufcs_to_method", + r#####" +fn main() { + std::ops::Add::add$0(1, 2); +} +mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +"#####, + r#####" +fn main() { + 1.add(2); +} +mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +"#####, + ) +} + #[test] fn doctest_convert_while_to_loop() { check_doc_test( From 769273ca4ca41fe3ca704ff7793de95c5def1728 Mon Sep 17 00:00:00 2001 From: Tom Kunc Date: Mon, 9 Jan 2023 07:01:41 -0700 Subject: [PATCH 311/478] Simplify code with @Veykril's suggestion. --- .../ide-assists/src/handlers/inline_macro.rs | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/crates/ide-assists/src/handlers/inline_macro.rs b/crates/ide-assists/src/handlers/inline_macro.rs index d669826aa7aa..9d03f03d201a 100644 --- a/crates/ide-assists/src/handlers/inline_macro.rs +++ b/crates/ide-assists/src/handlers/inline_macro.rs @@ -34,25 +34,16 @@ use crate::{AssistContext, AssistId, AssistKind, Assists}; // } // ``` pub(crate) fn inline_macro(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { - let tok = ctx.token_at_offset().right_biased()?; + let unexpanded = ctx.find_node_at_offset::()?; + let expanded = ctx.sema.expand(&unexpanded)?.clone_for_update(); - let mut anc = tok.parent_ancestors(); - let (_name, expanded, unexpanded) = loop { - let node = anc.next()?; - if let Some(mac) = ast::MacroCall::cast(node.clone()) { - break ( - mac.path()?.segment()?.name_ref()?.to_string(), - ctx.sema.expand(&mac)?.clone_for_update(), - node, - ); - } - }; + let text_range = unexpanded.syntax().text_range(); acc.add( AssistId("inline_macro", AssistKind::RefactorRewrite), format!("Inline macro"), - unexpanded.text_range(), - |builder| builder.replace(unexpanded.text_range(), expanded.to_string()), + text_range, + |builder| builder.replace(text_range, expanded.to_string()), ) } From c782353a907ea121dcae670a5f0d8e14b8865b19 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Mon, 9 Jan 2023 13:59:02 +0000 Subject: [PATCH 312/478] Rename assist: `convert_ufcs_to_method` => `unqualify_method_call` --- ..._to_method.rs => unqualify_method_call.rs} | 36 +++++++++--------- crates/ide-assists/src/lib.rs | 4 +- crates/ide-assists/src/tests/generated.rs | 38 +++++++++---------- 3 files changed, 39 insertions(+), 39 deletions(-) rename crates/ide-assists/src/handlers/{convert_ufcs_to_method.rs => unqualify_method_call.rs} (85%) diff --git a/crates/ide-assists/src/handlers/convert_ufcs_to_method.rs b/crates/ide-assists/src/handlers/unqualify_method_call.rs similarity index 85% rename from crates/ide-assists/src/handlers/convert_ufcs_to_method.rs rename to crates/ide-assists/src/handlers/unqualify_method_call.rs index 8704e40b0d7b..e9d4e270cdcf 100644 --- a/crates/ide-assists/src/handlers/convert_ufcs_to_method.rs +++ b/crates/ide-assists/src/handlers/unqualify_method_call.rs @@ -5,7 +5,7 @@ use syntax::{ use crate::{AssistContext, AssistId, AssistKind, Assists}; -// Assist: convert_ufcs_to_method +// Assist: unqualify_method_call // // Transforms universal function call syntax into a method call. // @@ -22,7 +22,7 @@ use crate::{AssistContext, AssistId, AssistKind, Assists}; // } // # mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } // ``` -pub(crate) fn convert_ufcs_to_method(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { +pub(crate) fn unqualify_method_call(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()> { let call = ctx.find_node_at_offset::()?; let ast::Expr::PathExpr(path_expr) = call.expr()? else { return None }; let path = path_expr.path()?; @@ -66,8 +66,8 @@ pub(crate) fn convert_ufcs_to_method(acc: &mut Assists, ctx: &AssistContext<'_>) ); acc.add( - AssistId("convert_ufcs_to_method", AssistKind::RefactorRewrite), - "Convert UFCS to a method call", + AssistId("unqualify_method_call", AssistKind::RefactorRewrite), + "Unqualify method call", call.syntax().text_range(), |edit| { edit.delete(delete_path); @@ -105,9 +105,9 @@ mod tests { use super::*; #[test] - fn ufcs2method_simple() { + fn unqualify_method_call_simple() { check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" struct S; impl S { fn f(self, S: S) {} } @@ -120,9 +120,9 @@ fn f() { S.f(S); }"#, } #[test] - fn ufcs2method_trait() { + fn unqualify_method_call_trait() { check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" //- minicore: add fn f() { ::$0add(2, 2); }"#, @@ -131,7 +131,7 @@ fn f() { 2.add(2); }"#, ); check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" //- minicore: add fn f() { core::ops::Add::$0add(2, 2); }"#, @@ -140,7 +140,7 @@ fn f() { 2.add(2); }"#, ); check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" //- minicore: add use core::ops::Add; @@ -152,9 +152,9 @@ fn f() { 2.add(2); }"#, } #[test] - fn ufcs2method_single_arg() { + fn unqualify_method_call_single_arg() { check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" struct S; impl S { fn f(self) {} } @@ -167,9 +167,9 @@ fn f() { 2.add(2); }"#, } #[test] - fn ufcs2method_parens() { + fn unqualify_method_call_parens() { check_assist( - convert_ufcs_to_method, + unqualify_method_call, r#" //- minicore: deref struct S; @@ -189,9 +189,9 @@ fn f() { (&S).deref(); }"#, } #[test] - fn ufcs2method_doesnt_apply_with_cursor_not_on_path() { + fn unqualify_method_call_doesnt_apply_with_cursor_not_on_path() { check_assist_not_applicable( - convert_ufcs_to_method, + unqualify_method_call, r#" //- minicore: add fn f() { core::ops::Add::add(2,$0 2); }"#, @@ -199,9 +199,9 @@ fn f() { core::ops::Add::add(2,$0 2); }"#, } #[test] - fn ufcs2method_doesnt_apply_with_no_self() { + fn unqualify_method_call_doesnt_apply_with_no_self() { check_assist_not_applicable( - convert_ufcs_to_method, + unqualify_method_call, r#" struct S; impl S { fn assoc(S: S, S: S) {} } diff --git a/crates/ide-assists/src/lib.rs b/crates/ide-assists/src/lib.rs index 6da51cfa4f70..6747b950074f 100644 --- a/crates/ide-assists/src/lib.rs +++ b/crates/ide-assists/src/lib.rs @@ -126,7 +126,6 @@ mod handlers { mod convert_to_guarded_return; mod convert_two_arm_bool_match_to_matches_macro; mod convert_while_to_loop; - mod convert_ufcs_to_method; mod destructure_tuple_binding; mod expand_glob_import; mod extract_expressions_from_format_string; @@ -202,6 +201,7 @@ mod handlers { mod unnecessary_async; mod unwrap_block; mod unwrap_result_return_type; + mod unqualify_method_call; mod wrap_return_type_in_result; pub(crate) fn all() -> &'static [Handler] { @@ -219,7 +219,6 @@ mod handlers { convert_bool_then::convert_bool_then_to_if, convert_bool_then::convert_if_to_bool_then, convert_comment_block::convert_comment_block, - convert_ufcs_to_method::convert_ufcs_to_method, convert_integer_literal::convert_integer_literal, convert_into_to_from::convert_into_to_from, convert_iter_for_each_to_for::convert_iter_for_each_to_for, @@ -308,6 +307,7 @@ mod handlers { unwrap_block::unwrap_block, unwrap_result_return_type::unwrap_result_return_type, unwrap_tuple::unwrap_tuple, + unqualify_method_call::unqualify_method_call, wrap_return_type_in_result::wrap_return_type_in_result, // These are manually sorted for better priorities. By default, // priority is determined by the size of the target range (smaller diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs index d84f343c5510..2644e7dd11cd 100644 --- a/crates/ide-assists/src/tests/generated.rs +++ b/crates/ide-assists/src/tests/generated.rs @@ -554,25 +554,6 @@ fn main() { ) } -#[test] -fn doctest_convert_ufcs_to_method() { - check_doc_test( - "convert_ufcs_to_method", - r#####" -fn main() { - std::ops::Add::add$0(1, 2); -} -mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } -"#####, - r#####" -fn main() { - 1.add(2); -} -mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } -"#####, - ) -} - #[test] fn doctest_convert_while_to_loop() { check_doc_test( @@ -2552,6 +2533,25 @@ pub async fn bar() { foo() } ) } +#[test] +fn doctest_unqualify_method_call() { + check_doc_test( + "unqualify_method_call", + r#####" +fn main() { + std::ops::Add::add$0(1, 2); +} +mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +"#####, + r#####" +fn main() { + 1.add(2); +} +mod std { pub mod ops { pub trait Add { fn add(self, _: Self) {} } impl Add for i32 {} } } +"#####, + ) +} + #[test] fn doctest_unwrap_block() { check_doc_test( From bdaad9eb157b3a56f318d7e818c80bb65236211e Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Mon, 9 Jan 2023 14:26:48 +0000 Subject: [PATCH 313/478] Make `qualify_method_call` `RefactorRewrite` --- crates/ide-assists/src/handlers/qualify_method_call.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ide-assists/src/handlers/qualify_method_call.rs b/crates/ide-assists/src/handlers/qualify_method_call.rs index 1ea87429c509..e7014597a1d8 100644 --- a/crates/ide-assists/src/handlers/qualify_method_call.rs +++ b/crates/ide-assists/src/handlers/qualify_method_call.rs @@ -53,7 +53,7 @@ pub(crate) fn qualify_method_call(acc: &mut Assists, ctx: &AssistContext<'_>) -> let qualify_candidate = QualifyCandidate::ImplMethod(ctx.sema.db, call, resolved_call); acc.add( - AssistId("qualify_method_call", AssistKind::RefactorInline), + AssistId("qualify_method_call", AssistKind::RefactorRewrite), format!("Qualify `{ident}` method call"), range, |builder| { From 04a697502fbb3a69fe5dbeb0b3babf6f1e67711f Mon Sep 17 00:00:00 2001 From: Kai Luo Date: Mon, 9 Jan 2023 23:02:53 +0800 Subject: [PATCH 314/478] Also check ttype_index when using SJLJ --- library/std/src/personality/dwarf/eh.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index e7bd700b8b89..1e71da95a30b 100644 --- a/library/std/src/personality/dwarf/eh.rs +++ b/library/std/src/personality/dwarf/eh.rs @@ -121,13 +121,21 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result let mut idx = ip; loop { let cs_lpad = reader.read_uleb128(); - let cs_action = reader.read_uleb128(); + let cs_action_entry = reader.read_uleb128(); idx -= 1; if idx == 0 { // Can never have null landing pad for sjlj -- that would have // been indicated by a -1 call site index. let lpad = (cs_lpad + 1) as usize; - return Ok(interpret_cs_action(cs_action, lpad)); + if cs_action_entry == 0 { + return Ok(interpret_cs_action(0, lpad)); + } else { + let action_record = + (action_table as *mut u8).offset(cs_action_entry as isize - 1); + let mut action_reader = DwarfReader::new(action_record); + let ttype_index = action_reader.read_sleb128(); + return Ok(interpret_cs_action(ttype_index as u64, lpad)); + } } } } From 997101824b65a728f6e5ebf56be062d5d1c24a3e Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 9 Jan 2023 16:08:26 +0100 Subject: [PATCH 315/478] std test: better type name, clarifying comment --- library/std/src/sync/mutex/tests.rs | 2 +- library/std/src/thread/local/tests.rs | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/library/std/src/sync/mutex/tests.rs b/library/std/src/sync/mutex/tests.rs index 93900566f119..1786a3c09ffb 100644 --- a/library/std/src/sync/mutex/tests.rs +++ b/library/std/src/sync/mutex/tests.rs @@ -181,7 +181,7 @@ fn test_mutex_arc_poison() { let arc2 = arc.clone(); let _ = thread::spawn(move || { let lock = arc2.lock().unwrap(); - assert_eq!(*lock, 2); + assert_eq!(*lock, 2); // deliberate assertion failure to poison the mutex }) .join(); assert!(arc.lock().is_err()); diff --git a/library/std/src/thread/local/tests.rs b/library/std/src/thread/local/tests.rs index 80dc4c038d61..964c7fc5b0ca 100644 --- a/library/std/src/thread/local/tests.rs +++ b/library/std/src/thread/local/tests.rs @@ -23,11 +23,11 @@ impl Signal { } } -struct Foo(Signal); +struct NotifyOnDrop(Signal); -impl Drop for Foo { +impl Drop for NotifyOnDrop { fn drop(&mut self) { - let Foo(ref f) = *self; + let NotifyOnDrop(ref f) = *self; f.notify(); } } @@ -82,18 +82,18 @@ fn states() { #[test] fn smoke_dtor() { - thread_local!(static FOO: UnsafeCell> = UnsafeCell::new(None)); + thread_local!(static FOO: UnsafeCell> = UnsafeCell::new(None)); run(&FOO); - thread_local!(static FOO2: UnsafeCell> = const { UnsafeCell::new(None) }); + thread_local!(static FOO2: UnsafeCell> = const { UnsafeCell::new(None) }); run(&FOO2); - fn run(key: &'static LocalKey>>) { + fn run(key: &'static LocalKey>>) { let signal = Signal::default(); let signal2 = signal.clone(); let t = thread::spawn(move || unsafe { let mut signal = Some(signal2); key.with(|f| { - *f.get() = Some(Foo(signal.take().unwrap())); + *f.get() = Some(NotifyOnDrop(signal.take().unwrap())); }); }); signal.wait(); @@ -187,13 +187,13 @@ fn self_referential() { fn dtors_in_dtors_in_dtors() { struct S1(Signal); thread_local!(static K1: UnsafeCell> = UnsafeCell::new(None)); - thread_local!(static K2: UnsafeCell> = UnsafeCell::new(None)); + thread_local!(static K2: UnsafeCell> = UnsafeCell::new(None)); impl Drop for S1 { fn drop(&mut self) { let S1(ref signal) = *self; unsafe { - let _ = K2.try_with(|s| *s.get() = Some(Foo(signal.clone()))); + let _ = K2.try_with(|s| *s.get() = Some(NotifyOnDrop(signal.clone()))); } } } @@ -211,13 +211,13 @@ fn dtors_in_dtors_in_dtors() { fn dtors_in_dtors_in_dtors_const_init() { struct S1(Signal); thread_local!(static K1: UnsafeCell> = const { UnsafeCell::new(None) }); - thread_local!(static K2: UnsafeCell> = const { UnsafeCell::new(None) }); + thread_local!(static K2: UnsafeCell> = const { UnsafeCell::new(None) }); impl Drop for S1 { fn drop(&mut self) { let S1(ref signal) = *self; unsafe { - let _ = K2.try_with(|s| *s.get() = Some(Foo(signal.clone()))); + let _ = K2.try_with(|s| *s.get() = Some(NotifyOnDrop(signal.clone()))); } } } From 8333e5cf5e4a37852774993a5a2398c8a0891239 Mon Sep 17 00:00:00 2001 From: Kai Luo Date: Mon, 9 Jan 2023 23:09:18 +0800 Subject: [PATCH 316/478] Add comments --- library/std/src/personality/dwarf/eh.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index 1e71da95a30b..4a98c36f42c2 100644 --- a/library/std/src/personality/dwarf/eh.rs +++ b/library/std/src/personality/dwarf/eh.rs @@ -102,6 +102,8 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result (action_table as *mut u8).offset(cs_action_entry as isize - 1); let mut action_reader = DwarfReader::new(action_record); let ttype_index = action_reader.read_sleb128(); + // Normally, if ttype_index < 0, meaning the catch type is exception specification. + // Since we only care about if ttype_index is zero, so casting ttype_index to u64 makes sense. return Ok(interpret_cs_action(ttype_index as u64, lpad)); } } From d4926eb8ab9c70ff25f38fc699f629e50b704770 Mon Sep 17 00:00:00 2001 From: Kai Luo Date: Mon, 9 Jan 2023 23:18:06 +0800 Subject: [PATCH 317/478] Move to intepret_cs_action --- library/std/src/personality/dwarf/eh.rs | 41 ++++++++++--------------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index 4a98c36f42c2..4d114d616749 100644 --- a/library/std/src/personality/dwarf/eh.rs +++ b/library/std/src/personality/dwarf/eh.rs @@ -95,17 +95,7 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result return Ok(EHAction::None); } else { let lpad = lpad_base + cs_lpad; - if cs_action_entry == 0 { - return Ok(interpret_cs_action(0, lpad)); - } else { - let action_record = - (action_table as *mut u8).offset(cs_action_entry as isize - 1); - let mut action_reader = DwarfReader::new(action_record); - let ttype_index = action_reader.read_sleb128(); - // Normally, if ttype_index < 0, meaning the catch type is exception specification. - // Since we only care about if ttype_index is zero, so casting ttype_index to u64 makes sense. - return Ok(interpret_cs_action(ttype_index as u64, lpad)); - } + return Ok(interpret_cs_action(action_table as *mut u8, cs_action_entry, lpad)); } } } @@ -129,28 +119,31 @@ pub unsafe fn find_eh_action(lsda: *const u8, context: &EHContext<'_>) -> Result // Can never have null landing pad for sjlj -- that would have // been indicated by a -1 call site index. let lpad = (cs_lpad + 1) as usize; - if cs_action_entry == 0 { - return Ok(interpret_cs_action(0, lpad)); - } else { - let action_record = - (action_table as *mut u8).offset(cs_action_entry as isize - 1); - let mut action_reader = DwarfReader::new(action_record); - let ttype_index = action_reader.read_sleb128(); - return Ok(interpret_cs_action(ttype_index as u64, lpad)); - } + return Ok(interpret_cs_action(action_table as *mut u8, cs_action_entry, lpad)); } } } } -fn interpret_cs_action(cs_action: u64, lpad: usize) -> EHAction { - if cs_action == 0 { +unsafe fn interpret_cs_action( + action_table: *mut u8, + cs_action_entry: u64, + lpad: usize, +) -> EHAction { + if cs_action_entry == 0 { // If cs_action is 0 then this is a cleanup (Drop::drop). We run these // for both Rust panics and foreign exceptions. EHAction::Cleanup(lpad) } else { - // Stop unwinding Rust panics at catch_unwind. - EHAction::Catch(lpad) + let action_record = (action_table as *mut u8).offset(cs_action_entry as isize - 1); + let mut action_reader = DwarfReader::new(action_record); + let ttype_index = action_reader.read_sleb128(); + if ttype_index == 0 { + EHAction::Cleanup(lpad) + } else { + // Stop unwinding Rust panics at catch_unwind. + EHAction::Catch(lpad) + } } } From 93ef4b3991d19cddf011da8f0b5a7bf9a8672541 Mon Sep 17 00:00:00 2001 From: Kai Luo Date: Mon, 9 Jan 2023 23:26:06 +0800 Subject: [PATCH 318/478] Add comment --- library/std/src/personality/dwarf/eh.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/std/src/personality/dwarf/eh.rs b/library/std/src/personality/dwarf/eh.rs index 4d114d616749..87585a8fcd0d 100644 --- a/library/std/src/personality/dwarf/eh.rs +++ b/library/std/src/personality/dwarf/eh.rs @@ -131,10 +131,12 @@ unsafe fn interpret_cs_action( lpad: usize, ) -> EHAction { if cs_action_entry == 0 { - // If cs_action is 0 then this is a cleanup (Drop::drop). We run these + // If cs_action_entry is 0 then this is a cleanup (Drop::drop). We run these // for both Rust panics and foreign exceptions. EHAction::Cleanup(lpad) } else { + // If lpad != 0 and cs_action_entry != 0, we have to check ttype_index. + // If ttype_index == 0 under the condition, we take cleanup action. let action_record = (action_table as *mut u8).offset(cs_action_entry as isize - 1); let mut action_reader = DwarfReader::new(action_record); let ttype_index = action_reader.read_sleb128(); From ad79b2043f2402859f80a82c3b20e16b1cf7c9da Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 9 Jan 2023 16:38:58 +0100 Subject: [PATCH 319/478] std tests: use __OsLocalKeyInner from realstd --- library/std/src/thread/mod.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs index 7acda8e98f18..692ff0cbca68 100644 --- a/library/std/src/thread/mod.rs +++ b/library/std/src/thread/mod.rs @@ -177,6 +177,12 @@ use crate::sys_common::thread_parking::Parker; use crate::sys_common::{AsInner, IntoInner}; use crate::time::Duration; +#[stable(feature = "scoped_threads", since = "1.63.0")] +mod scoped; + +#[stable(feature = "scoped_threads", since = "1.63.0")] +pub use scoped::{scope, Scope, ScopedJoinHandle}; + //////////////////////////////////////////////////////////////////////////////// // Thread-local storage //////////////////////////////////////////////////////////////////////////////// @@ -184,12 +190,6 @@ use crate::time::Duration; #[macro_use] mod local; -#[stable(feature = "scoped_threads", since = "1.63.0")] -mod scoped; - -#[stable(feature = "scoped_threads", since = "1.63.0")] -pub use scoped::{scope, Scope, ScopedJoinHandle}; - #[stable(feature = "rust1", since = "1.0.0")] pub use self::local::{AccessError, LocalKey}; @@ -209,7 +209,6 @@ pub use self::local::{AccessError, LocalKey}; ))] #[doc(hidden)] pub use self::local::fast::Key as __FastLocalKeyInner; - // when building for tests, use real std's type #[unstable(feature = "libstd_thread_internals", issue = "none")] #[cfg(test)] @@ -220,12 +219,21 @@ pub use self::local::fast::Key as __FastLocalKeyInner; pub use realstd::thread::__FastLocalKeyInner; #[unstable(feature = "libstd_thread_internals", issue = "none")] +#[cfg(not(test))] #[cfg(all( not(target_thread_local), not(all(target_family = "wasm", not(target_feature = "atomics"))), ))] #[doc(hidden)] pub use self::local::os::Key as __OsLocalKeyInner; +// when building for tests, use real std's type +#[unstable(feature = "libstd_thread_internals", issue = "none")] +#[cfg(test)] +#[cfg(all( + not(target_thread_local), + not(all(target_family = "wasm", not(target_feature = "atomics"))), +))] +pub use realstd::thread::__OsLocalKeyInner; #[unstable(feature = "libstd_thread_internals", issue = "none")] #[cfg(all(target_family = "wasm", not(target_feature = "atomics")))] From 9eb50d3cde97690f8149f560b70f56f6dafa4da3 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 9 Jan 2023 17:03:36 +0100 Subject: [PATCH 320/478] Make it clearer when the server expects an initialized notification --- lib/lsp-server/src/lib.rs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/lib/lsp-server/src/lib.rs b/lib/lsp-server/src/lib.rs index b95cec4f0136..beccde40a897 100644 --- a/lib/lsp-server/src/lib.rs +++ b/lib/lsp-server/src/lib.rs @@ -114,10 +114,8 @@ impl Connection { /// ``` pub fn initialize_start(&self) -> Result<(RequestId, serde_json::Value), ProtocolError> { loop { - match self.receiver.recv() { - Ok(Message::Request(req)) if req.is_initialize() => { - return Ok((req.id, req.params)) - } + break match self.receiver.recv() { + Ok(Message::Request(req)) if req.is_initialize() => Ok((req.id, req.params)), // Respond to non-initialize requests with ServerNotInitialized Ok(Message::Request(req)) => { let resp = Response::new_err( @@ -126,14 +124,11 @@ impl Connection { format!("expected initialize request, got {req:?}"), ); self.sender.send(resp.into()).unwrap(); + continue; } - Ok(msg) => { - return Err(ProtocolError(format!("expected initialize request, got {msg:?}"))) - } + Ok(msg) => Err(ProtocolError(format!("expected initialize request, got {msg:?}"))), Err(e) => { - return Err(ProtocolError(format!( - "expected initialize request, got error: {e}" - ))) + Err(ProtocolError(format!("expected initialize request, got error: {e}"))) } }; } @@ -148,17 +143,14 @@ impl Connection { let resp = Response::new_ok(initialize_id, initialize_result); self.sender.send(resp.into()).unwrap(); match &self.receiver.recv() { - Ok(Message::Notification(n)) if n.is_initialized() => (), + Ok(Message::Notification(n)) if n.is_initialized() => Ok(()), Ok(msg) => { - return Err(ProtocolError(format!("expected Message::Notification, got: {msg:?}",))) + Err(ProtocolError(format!(r#"expected initialized notification, got: {msg:?}"#))) } Err(e) => { - return Err(ProtocolError(format!( - "expected initialized notification, got error: {e}", - ))) + Err(ProtocolError(format!("expected initialized notification, got error: {e}",))) } } - Ok(()) } /// Initialize the connection. Sends the server capabilities From 31099ee3840f26c59b5f9057001fd656284deb81 Mon Sep 17 00:00:00 2001 From: lcnr Date: Mon, 9 Jan 2023 17:13:14 +0100 Subject: [PATCH 321/478] update test for inductive canonical cycles --- .../inductive-canonical-cycle.rs | 75 ++++++++++++++----- .../inductive-canonical-cycle.stderr | 26 ------- 2 files changed, 58 insertions(+), 43 deletions(-) delete mode 100644 src/test/ui/traits/solver-cycles/inductive-canonical-cycle.stderr diff --git a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs b/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs index a3bb76d7e3b7..5449f5f00d52 100644 --- a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs +++ b/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs @@ -1,28 +1,69 @@ -// known-bug +// check-pass + +// This test checks that we're correctly dealing with inductive cycles +// with canonical inference variables. -// This should compile but fails with the current solver. -// -// This checks that the new solver uses `Ambiguous` when hitting the -// inductive cycle here when proving `exists<^0, ^1> (): Trait<^0, ^1>` -// which requires proving `Trait` but that has the same -// canonical representation. trait Trait {} -impl Trait for () +trait IsNotU32 {} +impl IsNotU32 for i32 {} +impl Trait for () // impl 1 where - (): Trait, - T: OtherTrait, + (): Trait {} -trait OtherTrait {} -impl OtherTrait for u32 {} +impl Trait for () {} // impl 2 -fn require_trait() +// If we now check whether `(): Trait` holds this has to +// result in ambiguity as both `for (): Trait` and `(): Trait` +// applies. The remainder of this test asserts that. + +// If we were to error on inductive cycles with canonical inference variables +// this would be wrong: + +// (): Trait +// - impl 1 +// - ?0: IsNotU32 // ambig +// - (): Trait // canonical cycle -> err +// - ERR +// - impl 2 +// - OK ?0 == u32 +// +// Result: OK ?0 == u32. + +// (): Trait +// - impl 1 +// - i32: IsNotU32 // ok +// - (): Trait +// - impl 1 +// - u32: IsNotU32 // err +// - ERR +// - impl 2 +// - OK +// - OK +// - impl 2 (trivial ERR) +// +// Result OK + +// This would mean that `(): Trait` is not complete, +// which is unsound if we're in coherence. + +fn implements_trait() -> (T, U) where - (): Trait -{} + (): Trait, +{ + todo!() +} + +// A hack to only constrain the infer vars after first checking +// the `(): Trait<_, _>`. +trait Constrain {} +impl Constrain for T {} +fn constrain, U>(_: U) {} fn main() { - require_trait::<_, _>(); - //~^ ERROR overflow evaluating + let (x, y) = implements_trait::<_, _>(); + + constrain::(x); + constrain::(y); } diff --git a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.stderr b/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.stderr deleted file mode 100644 index e4b84e07822d..000000000000 --- a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error[E0275]: overflow evaluating the requirement `_: Sized` - --> $DIR/inductive-canonical-cycle.rs:26:5 - | -LL | require_trait::<_, _>(); - | ^^^^^^^^^^^^^^^^^^^^^ - | - = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`inductive_canonical_cycle`) -note: required for `()` to implement `Trait<_, _>` - --> $DIR/inductive-canonical-cycle.rs:11:12 - | -LL | impl Trait for () - | ^^^^^^^^^^^ ^^ - = note: 128 redundant requirements hidden - = note: required for `()` to implement `Trait<_, _>` -note: required by a bound in `require_trait` - --> $DIR/inductive-canonical-cycle.rs:22:9 - | -LL | fn require_trait() - | ------------- required by a bound in this -LL | where -LL | (): Trait - | ^^^^^^^^^^^ required by this bound in `require_trait` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0275`. From c5ee72cb3b0138114e0436aca989e2d8939d107e Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Mon, 9 Jan 2023 16:33:09 +0000 Subject: [PATCH 322/478] Add test for issue 106062 --- src/test/ui/mir/issue-106062.rs | 26 ++++++++++++++++++++++++++ src/test/ui/mir/issue-106062.stderr | 16 ++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/test/ui/mir/issue-106062.rs create mode 100644 src/test/ui/mir/issue-106062.stderr diff --git a/src/test/ui/mir/issue-106062.rs b/src/test/ui/mir/issue-106062.rs new file mode 100644 index 000000000000..621ba566ee38 --- /dev/null +++ b/src/test/ui/mir/issue-106062.rs @@ -0,0 +1,26 @@ +// edition:2018 + +use std::{future::Future, marker::PhantomData}; + +fn spawn(future: T) -> PhantomData +where + T: Future, +{ + loop {} +} + +#[derive(Debug)] +struct IncomingServer {} +impl IncomingServer { + async fn connection_handler(handler: impl Sized) -> Result { + //~^ ERROR expected type, found variant `Ok` [E0573] + loop {} + } + async fn spawn(&self, request_handler: impl Sized) { + async move { + spawn(Self::connection_handler(&request_handler)); + }; + } +} + +fn main() {} diff --git a/src/test/ui/mir/issue-106062.stderr b/src/test/ui/mir/issue-106062.stderr new file mode 100644 index 000000000000..2f6524d03e00 --- /dev/null +++ b/src/test/ui/mir/issue-106062.stderr @@ -0,0 +1,16 @@ +error[E0573]: expected type, found variant `Ok` + --> $DIR/issue-106062.rs:15:64 + | +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ^^ not a type + | +help: try using the variant's enum + | +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ~~~~~~~~~~~~~~~~~~~~ +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ~~~~~~~~~~~~~~~~~~~ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0573`. From 1b8141b54cb5f89bd3dee7bfbab41109d1b48cb6 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Tue, 3 Jan 2023 10:16:16 -0500 Subject: [PATCH 323/478] Parse + decorate rendered ANSI cargo output Use ANSI control characters to display text decorations matching the VScode terminal theme, and strip them out when providing text content for rustc diagnostics. This adds the small `anser` library to parse the control codes, and it also supports HTML output so it should be fairly easy to switch to a rendered HTML/webview implementation if desired. --- editors/code/package-lock.json | 11 ++ editors/code/package.json | 1 + editors/code/src/client.ts | 11 +- editors/code/src/diagnostics.ts | 212 ++++++++++++++++++++++++++++++++ editors/code/src/main.ts | 61 ++++++--- 5 files changed, 272 insertions(+), 24 deletions(-) create mode 100644 editors/code/src/diagnostics.ts diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index ee69d2247604..4844837a06f3 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json @@ -9,6 +9,7 @@ "version": "0.5.0-dev", "license": "MIT OR Apache-2.0", "dependencies": { + "anser": "^2.1.1", "d3": "^7.6.1", "d3-graphviz": "^5.0.2", "vscode-languageclient": "^8.0.2" @@ -394,6 +395,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/anser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz", + "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==" + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -4096,6 +4102,11 @@ "uri-js": "^4.2.2" } }, + "anser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz", + "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==" + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", diff --git a/editors/code/package.json b/editors/code/package.json index 468368668fcf..3fe189e2b3b1 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -35,6 +35,7 @@ "test": "cross-env TEST_VARIABLE=test node ./out/tests/runTests.js" }, "dependencies": { + "anser": "^2.1.1", "d3": "^7.6.1", "d3-graphviz": "^5.0.2", "vscode-languageclient": "^8.0.2" diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index e6595340aae9..74cf44f42f71 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -3,6 +3,7 @@ import * as vscode from "vscode"; import * as ra from "../src/lsp_ext"; import * as Is from "vscode-languageclient/lib/common/utils/is"; import { assert } from "./util"; +import * as diagnostics from "./diagnostics"; import { WorkspaceEdit } from "vscode"; import { Config, substituteVSCodeVariables } from "./config"; import { randomUUID } from "crypto"; @@ -120,12 +121,12 @@ export async function createClient( }, async handleDiagnostics( uri: vscode.Uri, - diagnostics: vscode.Diagnostic[], + diagnosticList: vscode.Diagnostic[], next: lc.HandleDiagnosticsSignature ) { const preview = config.previewRustcOutput; const errorCode = config.useRustcErrorCode; - diagnostics.forEach((diag, idx) => { + diagnosticList.forEach((diag, idx) => { // Abuse the fact that VSCode leaks the LSP diagnostics data field through the // Diagnostic class, if they ever break this we are out of luck and have to go // back to the worst diagnostics experience ever:) @@ -154,8 +155,8 @@ export async function createClient( } diag.code = { target: vscode.Uri.from({ - scheme: "rust-analyzer-diagnostics-view", - path: "/diagnostic message", + scheme: diagnostics.URI_SCHEME, + path: `/diagnostic message [${idx.toString()}]`, fragment: uri.toString(), query: idx.toString(), }), @@ -163,7 +164,7 @@ export async function createClient( }; } }); - return next(uri, diagnostics); + return next(uri, diagnosticList); }, async provideHover( document: vscode.TextDocument, diff --git a/editors/code/src/diagnostics.ts b/editors/code/src/diagnostics.ts new file mode 100644 index 000000000000..9695d8bf26d5 --- /dev/null +++ b/editors/code/src/diagnostics.ts @@ -0,0 +1,212 @@ +import * as anser from "anser"; +import * as vscode from "vscode"; +import { ProviderResult, Range, TextEditorDecorationType, ThemeColor, window } from "vscode"; +import { Ctx } from "./ctx"; + +export const URI_SCHEME = "rust-analyzer-diagnostics-view"; + +export class TextDocumentProvider implements vscode.TextDocumentContentProvider { + private _onDidChange = new vscode.EventEmitter(); + + public constructor(private readonly ctx: Ctx) {} + + get onDidChange(): vscode.Event { + return this._onDidChange.event; + } + + triggerUpdate(uri: vscode.Uri) { + if (uri.scheme === URI_SCHEME) { + this._onDidChange.fire(uri); + } + } + + dispose() { + this._onDidChange.dispose(); + } + + async provideTextDocumentContent(uri: vscode.Uri): Promise { + const contents = getRenderedDiagnostic(this.ctx, uri); + return anser.ansiToText(contents); + } +} + +function getRenderedDiagnostic(ctx: Ctx, uri: vscode.Uri): string { + const diags = ctx.client?.diagnostics?.get(vscode.Uri.parse(uri.fragment, true)); + if (!diags) { + return "Unable to find original rustc diagnostic"; + } + + const diag = diags[parseInt(uri.query)]; + if (!diag) { + return "Unable to find original rustc diagnostic"; + } + const rendered = (diag as unknown as { data?: { rendered?: string } }).data?.rendered; + + if (!rendered) { + return "Unable to find original rustc diagnostic"; + } + + return rendered; +} + +interface AnserStyle { + fg: string; + bg: string; + fg_truecolor: string; + bg_truecolor: string; + decorations: Array; +} + +export class AnsiDecorationProvider implements vscode.Disposable { + private _decorationTypes = new Map(); + + public constructor(private readonly ctx: Ctx) {} + + dispose(): void { + for (const decorationType of this._decorationTypes.values()) { + decorationType.dispose(); + } + + this._decorationTypes.clear(); + } + + async provideDecorations(editor: vscode.TextEditor) { + if (editor.document.uri.scheme !== URI_SCHEME) { + return; + } + + const decorations = (await this._getDecorations(editor.document.uri)) || []; + for (const [decorationType, ranges] of decorations) { + editor.setDecorations(decorationType, ranges); + } + } + + private _getDecorations( + uri: vscode.Uri + ): ProviderResult<[TextEditorDecorationType, Range[]][]> { + const stringContents = getRenderedDiagnostic(this.ctx, uri); + const lines = stringContents.split("\n"); + + const result = new Map(); + // Populate all known decoration types in the result. This forces any + // lingering decorations to be cleared if the text content changes to + // something without ANSI codes for a given decoration type. + for (const decorationType of this._decorationTypes.values()) { + result.set(decorationType, []); + } + + for (const [lineNumber, line] of lines.entries()) { + const totalEscapeLength = 0; + + // eslint-disable-next-line camelcase + const parsed = anser.ansiToJson(line, { use_classes: true }); + + let offset = 0; + + for (const span of parsed) { + const { content, ...style } = span; + + const range = new Range( + lineNumber, + offset - totalEscapeLength, + lineNumber, + offset + content.length - totalEscapeLength + ); + + offset += content.length; + + const decorationType = this._getDecorationType(style); + + if (!result.has(decorationType)) { + result.set(decorationType, []); + } + + result.get(decorationType)!.push(range); + } + } + + return [...result]; + } + + private _getDecorationType(style: AnserStyle): TextEditorDecorationType { + let decorationType = this._decorationTypes.get(style); + + if (decorationType) { + return decorationType; + } + + const fontWeight = style.decorations.find((s) => s === "bold"); + const fontStyle = style.decorations.find((s) => s === "italic"); + const textDecoration = style.decorations.find((s) => s === "underline"); + + decorationType = window.createTextEditorDecorationType({ + backgroundColor: AnsiDecorationProvider._convertColor(style.bg, style.bg_truecolor), + color: AnsiDecorationProvider._convertColor(style.fg, style.fg_truecolor), + fontWeight, + fontStyle, + textDecoration, + }); + + this._decorationTypes.set(style, decorationType); + + return decorationType; + } + + // NOTE: This could just be a kebab-case to camelCase conversion, but I think it's + // a short enough list to just write these by hand + static readonly _anserToThemeColor: Record = { + "ansi-black": "ansiBlack", + "ansi-white": "ansiWhite", + "ansi-red": "ansiRed", + "ansi-green": "ansiGreen", + "ansi-yellow": "ansiYellow", + "ansi-blue": "ansiBlue", + "ansi-magenta": "ansiMagenta", + "ansi-cyan": "ansiCyan", + + "ansi-bright-black": "ansiBrightBlack", + "ansi-bright-white": "ansiBrightWhite", + "ansi-bright-red": "ansiBrightRed", + "ansi-bright-green": "ansiBrightGreen", + "ansi-bright-yellow": "ansiBrightYellow", + "ansi-bright-blue": "ansiBrightBlue", + "ansi-bright-magenta": "ansiBrightMagenta", + "ansi-bright-cyan": "ansiBrightCyan", + }; + + private static _convertColor( + color?: string, + truecolor?: string + ): ThemeColor | string | undefined { + if (!color) { + return undefined; + } + + if (color === "ansi-truecolor") { + if (!truecolor) { + return undefined; + } + return `rgb(${truecolor})`; + } + + const paletteMatch = color.match(/ansi-palette-(.+)/); + if (paletteMatch) { + const paletteColor = paletteMatch[1]; + // anser won't return both the RGB and the color name at the same time, + // so just fake a single foreground control char with the palette number: + const spans = anser.ansiToJson(`\x1b[38;5;${paletteColor}m`); + const rgb = spans[1].fg; + + if (rgb) { + return `rgb(${rgb})`; + } + } + + const themeColor = AnsiDecorationProvider._anserToThemeColor[color]; + if (themeColor) { + return new ThemeColor("terminal." + themeColor); + } + + return undefined; + } +} diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 9a9667b2cd20..dd439317c709 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -3,6 +3,7 @@ import * as lc from "vscode-languageclient/node"; import * as commands from "./commands"; import { CommandFactory, Ctx, fetchWorkspace } from "./ctx"; +import * as diagnostics from "./diagnostics"; import { activateTaskProvider } from "./tasks"; import { setContextValue } from "./util"; @@ -48,30 +49,52 @@ async function activateServer(ctx: Ctx): Promise { ctx.pushExtCleanup(activateTaskProvider(ctx.config)); } + const diagnosticProvider = new diagnostics.TextDocumentProvider(ctx); ctx.pushExtCleanup( vscode.workspace.registerTextDocumentContentProvider( - "rust-analyzer-diagnostics-view", - new (class implements vscode.TextDocumentContentProvider { - async provideTextDocumentContent(uri: vscode.Uri): Promise { - const diags = ctx.client?.diagnostics?.get( - vscode.Uri.parse(uri.fragment, true) - ); - if (!diags) { - return "Unable to find original rustc diagnostic"; - } - - const diag = diags[parseInt(uri.query)]; - if (!diag) { - return "Unable to find original rustc diagnostic"; - } - const rendered = (diag as unknown as { data?: { rendered?: string } }).data - ?.rendered; - return rendered ?? "Unable to find original rustc diagnostic"; - } - })() + diagnostics.URI_SCHEME, + diagnosticProvider ) ); + const decorationProvider = new diagnostics.AnsiDecorationProvider(ctx); + ctx.pushExtCleanup(decorationProvider); + + async function decorateVisibleEditors(document: vscode.TextDocument) { + for (const editor of vscode.window.visibleTextEditors) { + if (document === editor.document) { + await decorationProvider.provideDecorations(editor); + } + } + } + + vscode.workspace.onDidChangeTextDocument( + async (event) => await decorateVisibleEditors(event.document), + null, + ctx.subscriptions + ); + vscode.workspace.onDidOpenTextDocument(decorateVisibleEditors, null, ctx.subscriptions); + vscode.window.onDidChangeActiveTextEditor( + async (editor) => { + if (editor) { + diagnosticProvider.triggerUpdate(editor.document.uri); + await decorateVisibleEditors(editor.document); + } + }, + null, + ctx.subscriptions + ); + vscode.window.onDidChangeVisibleTextEditors( + async (visibleEditors) => { + for (const editor of visibleEditors) { + diagnosticProvider.triggerUpdate(editor.document.uri); + await decorationProvider.provideDecorations(editor); + } + }, + null, + ctx.subscriptions + ); + vscode.workspace.onDidChangeWorkspaceFolders( async (_) => ctx.onWorkspaceFolderChanges(), null, From 40207906f42c018a775dfdffdfeb89c99660fe0a Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Wed, 28 Dec 2022 09:41:24 -0500 Subject: [PATCH 324/478] Default to use colored ANSI diagnostics --- crates/flycheck/src/lib.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 590a93fbaa1a..2911c2589a30 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -297,8 +297,12 @@ impl FlycheckActor { let mut cmd = Command::new(toolchain::cargo()); cmd.arg(command); cmd.current_dir(&self.root); - cmd.args(["--workspace", "--message-format=json", "--manifest-path"]) - .arg(self.root.join("Cargo.toml").as_os_str()); + cmd.args([ + "--workspace", + "--message-format=json-diagnostic-rendered-ansi", + "--manifest-path", + ]) + .arg(self.root.join("Cargo.toml").as_os_str()); for target in target_triples { cmd.args(["--target", target.as_str()]); From c3e4bc313611d571123d4e4257af58784e42f47d Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Sun, 25 Dec 2022 13:52:42 -0500 Subject: [PATCH 325/478] Update docs to include note about ANSI diagnostics --- crates/rust-analyzer/src/config.rs | 4 +++- docs/user/generated_config.adoc | 4 +++- editors/code/package.json | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index cb55a3275835..006256544f37 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -160,7 +160,9 @@ config_data! { check_noDefaultFeatures | checkOnSave_noDefaultFeatures: Option = "null", /// Override the command rust-analyzer uses instead of `cargo check` for /// diagnostics on save. The command is required to output json and - /// should therefore include `--message-format=json` or a similar option. + /// should therefore include `--message-format=json` or a similar option + /// (for colored diagnostics, use + /// `--message-format=json-diagnostic-rendered-ansi`). /// /// If you're changing this because you're using some tool wrapping /// Cargo, you might also want to change diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 755c69e12cf3..5a3019831ae0 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -173,7 +173,9 @@ Whether to pass `--no-default-features` to Cargo. Defaults to -- Override the command rust-analyzer uses instead of `cargo check` for diagnostics on save. The command is required to output json and -should therefore include `--message-format=json` or a similar option. +should therefore include `--message-format=json` or a similar option +(for colored diagnostics, use +`--message-format=json-diagnostic-rendered-ansi`). If you're changing this because you're using some tool wrapping Cargo, you might also want to change diff --git a/editors/code/package.json b/editors/code/package.json index 3fe189e2b3b1..77da5e54538b 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -644,7 +644,7 @@ ] }, "rust-analyzer.check.overrideCommand": { - "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option\n(for colored diagnostics, use\n`--message-format=json-diagnostic-rendered-ansi`).\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", "default": null, "type": [ "null", From 738ce83d858aa498c3ff28be3417101ab5f9ce6f Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Tue, 3 Jan 2023 10:49:47 -0500 Subject: [PATCH 326/478] Strip colors before matching preview diagnostics --- editors/code/src/client.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 74cf44f42f71..c6d64ebc1ed9 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -1,3 +1,4 @@ +import * as anser from "anser"; import * as lc from "vscode-languageclient/node"; import * as vscode from "vscode"; import * as ra from "../src/lsp_ext"; @@ -139,9 +140,10 @@ export async function createClient( ?.rendered; if (rendered) { if (preview) { + const decolorized = anser.ansiToText(rendered); const index = - rendered.match(/^(note|help):/m)?.index || rendered.length; - diag.message = rendered + decolorized.match(/^(note|help):/m)?.index || rendered.length; + diag.message = decolorized .substring(0, index) .replace(/^ -->[^\n]+\n/m, ""); } From 65cf7abbe2ee75cce74592fa0af75356181566be Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Wed, 4 Jan 2023 12:04:45 -0500 Subject: [PATCH 327/478] Use experimental capability to enable color codes --- crates/flycheck/src/lib.rs | 18 ++++++++++++------ crates/rust-analyzer/src/config.rs | 10 ++++++++-- docs/user/generated_config.adoc | 4 ++-- editors/code/package.json | 2 +- editors/code/src/client.ts | 1 + 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 2911c2589a30..11f7b068ecb1 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs @@ -47,6 +47,7 @@ pub enum FlycheckConfig { features: Vec, extra_args: Vec, extra_env: FxHashMap, + ansi_color_output: bool, }, CustomCommand { command: String, @@ -293,16 +294,21 @@ impl FlycheckActor { extra_args, features, extra_env, + ansi_color_output, } => { let mut cmd = Command::new(toolchain::cargo()); cmd.arg(command); cmd.current_dir(&self.root); - cmd.args([ - "--workspace", - "--message-format=json-diagnostic-rendered-ansi", - "--manifest-path", - ]) - .arg(self.root.join("Cargo.toml").as_os_str()); + cmd.arg("--workspace"); + + cmd.arg(if *ansi_color_output { + "--message-format=json-diagnostic-rendered-ansi" + } else { + "--message-format=json" + }); + + cmd.arg("--manifest-path"); + cmd.arg(self.root.join("Cargo.toml").as_os_str()); for target in target_triples { cmd.args(["--target", target.as_str()]); diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 006256544f37..b0afbdc9a426 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -161,8 +161,8 @@ config_data! { /// Override the command rust-analyzer uses instead of `cargo check` for /// diagnostics on save. The command is required to output json and /// should therefore include `--message-format=json` or a similar option - /// (for colored diagnostics, use - /// `--message-format=json-diagnostic-rendered-ansi`). + /// (if your client supports the `colorDiagnosticOutput` experimental + /// capability, you can use `--message-format=json-diagnostic-rendered-ansi`). /// /// If you're changing this because you're using some tool wrapping /// Cargo, you might also want to change @@ -1008,6 +1008,11 @@ impl Config { self.experimental("serverStatusNotification") } + /// Whether the client supports colored output for full diagnostics from `checkOnSave`. + pub fn color_diagnostic_output(&self) -> bool { + self.experimental("colorDiagnosticOutput") + } + pub fn publish_diagnostics(&self) -> bool { self.data.diagnostics_enable } @@ -1206,6 +1211,7 @@ impl Config { }, extra_args: self.data.check_extraArgs.clone(), extra_env: self.check_on_save_extra_env(), + ansi_color_output: self.color_diagnostic_output(), }, } } diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 5a3019831ae0..b33a2e79525d 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -174,8 +174,8 @@ Whether to pass `--no-default-features` to Cargo. Defaults to Override the command rust-analyzer uses instead of `cargo check` for diagnostics on save. The command is required to output json and should therefore include `--message-format=json` or a similar option -(for colored diagnostics, use -`--message-format=json-diagnostic-rendered-ansi`). +(if your client supports the `colorDiagnosticOutput` experimental +capability, you can use `--message-format=json-diagnostic-rendered-ansi`). If you're changing this because you're using some tool wrapping Cargo, you might also want to change diff --git a/editors/code/package.json b/editors/code/package.json index 77da5e54538b..930564bd7cab 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -644,7 +644,7 @@ ] }, "rust-analyzer.check.overrideCommand": { - "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option\n(for colored diagnostics, use\n`--message-format=json-diagnostic-rendered-ansi`).\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option\n(if your client supports the `colorDiagnosticOutput` experimental\ncapability, you can use `--message-format=json-diagnostic-rendered-ansi`).\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", "default": null, "type": [ "null", diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index c6d64ebc1ed9..82cdf0390aca 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -333,6 +333,7 @@ class ExperimentalFeatures implements lc.StaticFeature { caps.codeActionGroup = true; caps.hoverActions = true; caps.serverStatusNotification = true; + caps.colorDiagnosticOutput = true; caps.commands = { commands: [ "rust-analyzer.runSingle", From 283dfc45dd8fb1e6bbe78c8b2e90cb5d543f2f06 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Mon, 9 Jan 2023 11:44:38 -0500 Subject: [PATCH 328/478] Add docs for `colorDiagnosticOutput` capability --- docs/dev/lsp-extensions.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index 1bbb4c2323c0..a4780af1a261 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md @@ -792,3 +792,29 @@ export interface ClientCommandOptions { commands: string[]; } ``` + +## Colored Diagnostic Output + +**Experimental Client Capability:** `{ "colorDiagnosticOutput": boolean }` + +If this capability is set, the "full compiler diagnostics" provided by `checkOnSave` +will include ANSI color and style codes to render the diagnostic in a similar manner +as `cargo`. This is translated into `--message-format=json-diagnostic-rendered-ansi` +when flycheck is run, instead of the default `--message-format=json`. + +The full compiler rendered diagnostics are included in the server response +regardless of this capability: + +```typescript +// https://microsoft.github.io/language-server-protocol/specifications/specification-current#diagnostic +export interface Diagnostic { + ... + data?: { + /** + * The human-readable compiler output as it would be printed to a terminal. + * Includes ANSI color and style codes if the client has set the experimental + * `colorDiagnosticOutput` capability. + */ + rendered?: string; + }; +} From 42aa0753109c44bea94f68802d3970d700f4ae13 Mon Sep 17 00:00:00 2001 From: David Koloski Date: Mon, 9 Jan 2023 10:22:08 -0500 Subject: [PATCH 329/478] Accept old spelling of Fuchsia target triples Because the old spelling is widely used, some projects may need time to migrate their uses to the new triple spelling. The old spelling may eventually be removed altogether. --- compiler/rustc_target/src/spec/aarch64_fuchsia.rs | 1 + compiler/rustc_target/src/spec/mod.rs | 6 +++++- compiler/rustc_target/src/spec/x86_64_fuchsia.rs | 1 + src/doc/rustc/src/platform-support.md | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 compiler/rustc_target/src/spec/aarch64_fuchsia.rs create mode 100644 compiler/rustc_target/src/spec/x86_64_fuchsia.rs diff --git a/compiler/rustc_target/src/spec/aarch64_fuchsia.rs b/compiler/rustc_target/src/spec/aarch64_fuchsia.rs new file mode 100644 index 000000000000..ddecbb1a8c4a --- /dev/null +++ b/compiler/rustc_target/src/spec/aarch64_fuchsia.rs @@ -0,0 +1 @@ +pub use crate::spec::aarch64_unknown_fuchsia::target; diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index dd56037a272c..d4543bce3496 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -981,7 +981,7 @@ impl fmt::Display for StackProtector { } macro_rules! supported_targets { - ( $(($triple:literal, $module:ident ),)+ ) => { + ( $(($triple:literal, $module:ident),)+ ) => { $(mod $module;)+ /// List of supported targets @@ -1109,7 +1109,11 @@ supported_targets! { ("x86_64-apple-darwin", x86_64_apple_darwin), ("i686-apple-darwin", i686_apple_darwin), + // FIXME(fuchsia): Remove aarch64-fuchsia in favor of aarch64-unknown-fuchsia + ("aarch64-fuchsia", aarch64_fuchsia), ("aarch64-unknown-fuchsia", aarch64_unknown_fuchsia), + // FIXME(fuchsia): Remove x86_64-fuchsia in favor of x86_64-unknown-fuchsia + ("x86_64-fuchsia", x86_64_fuchsia), ("x86_64-unknown-fuchsia", x86_64_unknown_fuchsia), ("avr-unknown-gnu-atmega328", avr_unknown_gnu_atmega328), diff --git a/compiler/rustc_target/src/spec/x86_64_fuchsia.rs b/compiler/rustc_target/src/spec/x86_64_fuchsia.rs new file mode 100644 index 000000000000..96fed0975666 --- /dev/null +++ b/compiler/rustc_target/src/spec/x86_64_fuchsia.rs @@ -0,0 +1 @@ +pub use crate::spec::x86_64_unknown_fuchsia::target; diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index 7ff26e420f1b..16057048259b 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -124,6 +124,7 @@ target | std | notes -------|:---:|------- `aarch64-apple-ios` | ✓ | ARM64 iOS [`aarch64-apple-ios-sim`](platform-support/aarch64-apple-ios-sim.md) | ✓ | Apple iOS Simulator on ARM64 +`aarch64-fuchsia` | ✓ | Alias for `aarch64-unknown-fuchsia` `aarch64-unknown-fuchsia` | ✓ | ARM64 Fuchsia [`aarch64-linux-android`](platform-support/android.md) | ✓ | ARM64 Android `aarch64-unknown-none-softfloat` | * | Bare ARM64, softfloat @@ -177,6 +178,7 @@ target | std | notes `wasm32-wasi` | ✓ | WebAssembly with WASI `x86_64-apple-ios` | ✓ | 64-bit x86 iOS [`x86_64-fortanix-unknown-sgx`](platform-support/x86_64-fortanix-unknown-sgx.md) | ✓ | [Fortanix ABI] for 64-bit Intel SGX +`x86_64-fuchsia` | ✓ | Alias for `x86_64-unknown-fuchsia` `x86_64-unknown-fuchsia` | ✓ | 64-bit Fuchsia [`x86_64-linux-android`](platform-support/android.md) | ✓ | 64-bit x86 Android `x86_64-pc-solaris` | ✓ | 64-bit Solaris 10/11, illumos From 36ee66c6c5e5e5f1a132faf28c6a5d28e950a2ba Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 3 Jan 2023 03:43:11 +0000 Subject: [PATCH 330/478] Check impl's where clauses in consider_impl_candidate in experimental solver --- .../src/solve/project_goals.rs | 8 +++++++- .../src/solve/trait_goals.rs | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_trait_selection/src/solve/project_goals.rs b/compiler/rustc_trait_selection/src/solve/project_goals.rs index b50f42c4d941..3d649bea19dd 100644 --- a/compiler/rustc_trait_selection/src/solve/project_goals.rs +++ b/compiler/rustc_trait_selection/src/solve/project_goals.rs @@ -131,8 +131,14 @@ impl<'tcx> assembly::GoalKind<'tcx> for ProjectionPredicate<'tcx> { else { return }; + let where_clause_bounds = tcx + .predicates_of(impl_def_id) + .instantiate(tcx, impl_substs) + .predicates + .into_iter() + .map(|pred| goal.with(tcx, pred)); - let nested_goals = obligations.into_iter().map(|o| o.into()).collect(); + let nested_goals = obligations.into_iter().map(|o| o.into()).chain(where_clause_bounds).collect(); let Ok(trait_ref_certainty) = acx.cx.evaluate_all(acx.infcx, nested_goals) else { return }; let Some(assoc_def) = fetch_eligible_assoc_item_def( diff --git a/compiler/rustc_trait_selection/src/solve/trait_goals.rs b/compiler/rustc_trait_selection/src/solve/trait_goals.rs index 10b45a77dabb..c69cc39acb53 100644 --- a/compiler/rustc_trait_selection/src/solve/trait_goals.rs +++ b/compiler/rustc_trait_selection/src/solve/trait_goals.rs @@ -71,7 +71,9 @@ impl<'tcx> assembly::GoalKind<'tcx> for TraitPredicate<'tcx> { goal: Goal<'tcx, TraitPredicate<'tcx>>, impl_def_id: DefId, ) { - let impl_trait_ref = acx.cx.tcx.bound_impl_trait_ref(impl_def_id).unwrap(); + let tcx = acx.cx.tcx; + + let impl_trait_ref = tcx.bound_impl_trait_ref(impl_def_id).unwrap(); let drcx = DeepRejectCtxt { treat_obligation_params: TreatParams::AsPlaceholder }; if iter::zip(goal.predicate.trait_ref.substs, impl_trait_ref.skip_binder().substs) .any(|(goal, imp)| !drcx.generic_args_may_unify(goal, imp)) @@ -81,7 +83,7 @@ impl<'tcx> assembly::GoalKind<'tcx> for TraitPredicate<'tcx> { acx.infcx.probe(|_| { let impl_substs = acx.infcx.fresh_substs_for_item(DUMMY_SP, impl_def_id); - let impl_trait_ref = impl_trait_ref.subst(acx.cx.tcx, impl_substs); + let impl_trait_ref = impl_trait_ref.subst(tcx, impl_substs); let Ok(InferOk { obligations, .. }) = acx .infcx @@ -92,8 +94,15 @@ impl<'tcx> assembly::GoalKind<'tcx> for TraitPredicate<'tcx> { else { return }; + let where_clause_bounds = tcx + .predicates_of(impl_def_id) + .instantiate(tcx, impl_substs) + .predicates + .into_iter() + .map(|pred| goal.with(tcx, pred)); - let nested_goals = obligations.into_iter().map(|o| o.into()).collect(); + let nested_goals = + obligations.into_iter().map(|o| o.into()).chain(where_clause_bounds).collect(); let Ok(certainty) = acx.cx.evaluate_all(acx.infcx, nested_goals) else { return }; acx.try_insert_candidate(CandidateSource::Impl(impl_def_id), certainty); From 7ee6cebd8afbb7f6085e5980121ba53f9304885e Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sun, 8 Jan 2023 22:15:22 +0000 Subject: [PATCH 331/478] Unconditionally normalize xform_ret_ty in probe --- compiler/rustc_hir_typeck/src/method/probe.rs | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index 2daf1979ee5e..aa458748a7fa 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -1521,11 +1521,30 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { }; let mut result = ProbeResult::Match; - let mut xform_ret_ty = probe.xform_ret_ty; - debug!(?xform_ret_ty); - let cause = traits::ObligationCause::misc(self.span, self.body_id); + let xform_ret_ty = if let Some(xform_ret_ty) = probe.xform_ret_ty { + // `xform_ret_ty` hasn't been normalized yet, only `xform_self_ty`, + // see the reasons mentioned in the comments in `assemble_inherent_impl_probe` + // for why this is necessary + let InferOk { + value: normalized_xform_ret_ty, + obligations: normalization_obligations, + } = self.fcx.at(&cause, self.param_env).normalize(xform_ret_ty); + debug!("xform_ret_ty after normalization: {:?}", normalized_xform_ret_ty); + + for o in normalization_obligations { + if !self.predicate_may_hold(&o) { + possibly_unsatisfied_predicates.push((o.predicate, None, Some(o.cause))); + result = ProbeResult::NoMatch; + } + } + + Some(normalized_xform_ret_ty) + } else { + None + }; + let mut parent_pred = None; // If so, impls may carry other conditions (e.g., where @@ -1534,16 +1553,6 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { // don't have enough information to fully evaluate). match probe.kind { InherentImplCandidate(ref substs, ref ref_obligations) => { - // `xform_ret_ty` hasn't been normalized yet, only `xform_self_ty`, - // see the reasons mentioned in the comments in `assemble_inherent_impl_probe` - // for why this is necessary - let InferOk { - value: normalized_xform_ret_ty, - obligations: normalization_obligations, - } = self.fcx.at(&cause, self.param_env).normalize(probe.xform_ret_ty); - xform_ret_ty = normalized_xform_ret_ty; - debug!("xform_ret_ty after normalization: {:?}", xform_ret_ty); - // Check whether the impl imposes obligations we have to worry about. let impl_def_id = probe.item.container_id(self.tcx); let impl_bounds = self.tcx.predicates_of(impl_def_id); @@ -1554,15 +1563,14 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { // Convert the bounds into obligations. let impl_obligations = traits::predicates_for_generics( - move |_, _| cause.clone(), + |_, _| cause.clone(), self.param_env, impl_bounds, ); let candidate_obligations = impl_obligations .chain(norm_obligations.into_iter()) - .chain(ref_obligations.iter().cloned()) - .chain(normalization_obligations.into_iter()); + .chain(ref_obligations.iter().cloned()); // Evaluate those obligations to see if they might possibly hold. for o in candidate_obligations { @@ -1597,7 +1605,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { ty::Binder::dummy(trait_ref).without_const().to_predicate(self.tcx); parent_pred = Some(predicate); let obligation = - traits::Obligation::new(self.tcx, cause, self.param_env, predicate); + traits::Obligation::new(self.tcx, cause.clone(), self.param_env, predicate); if !self.predicate_may_hold(&obligation) { result = ProbeResult::NoMatch; if self.probe(|_| { @@ -1656,21 +1664,22 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { } } - if let ProbeResult::Match = result { - if let (Some(return_ty), Some(xform_ret_ty)) = (self.return_type, xform_ret_ty) { - let xform_ret_ty = self.resolve_vars_if_possible(xform_ret_ty); - debug!( - "comparing return_ty {:?} with xform ret ty {:?}", - return_ty, probe.xform_ret_ty - ); - if self - .at(&ObligationCause::dummy(), self.param_env) - .define_opaque_types(false) - .sup(return_ty, xform_ret_ty) - .is_err() - { - return ProbeResult::BadReturnType; - } + if let ProbeResult::Match = result + && let Some(return_ty) = self.return_type + && let Some(xform_ret_ty) = xform_ret_ty + { + debug!( + "comparing return_ty {:?} with xform ret ty {:?}", + return_ty, xform_ret_ty + ); + if let ProbeResult::Match = result + && self + .at(&ObligationCause::dummy(), self.param_env) + .define_opaque_types(false) + .sup(return_ty, xform_ret_ty) + .is_err() + { + return ProbeResult::BadReturnType; } } From 5132e13f137ee343a7a64649fa3795560f69216b Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sat, 24 Dec 2022 21:30:15 +0000 Subject: [PATCH 332/478] No need to take opaques in check_type_bounds --- .../src/check/compare_impl_item.rs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs index 0d3391bbc1ef..17f9106e7e0b 100644 --- a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs +++ b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs @@ -424,7 +424,7 @@ fn compare_asyncness<'tcx>( ty::Alias(ty::Opaque, ..) => { // allow both `async fn foo()` and `fn foo() -> impl Future` } - ty::Error(rustc_errors::ErrorGuaranteed { .. }) => { + ty::Error(_) => { // We don't know if it's ok, but at least it's already an error. } _ => { @@ -1971,22 +1971,6 @@ pub(super) fn check_type_bounds<'tcx>( &outlives_environment, )?; - let constraints = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); - for (key, value) in constraints { - infcx - .err_ctxt() - .report_mismatched_types( - &ObligationCause::misc( - value.hidden_type.span, - tcx.hir().local_def_id_to_hir_id(impl_ty.def_id.expect_local()), - ), - tcx.mk_opaque(key.def_id.to_def_id(), key.substs), - value.hidden_type.ty, - TypeError::Mismatch, - ) - .emit(); - } - Ok(()) } From 38491c65790e393915616ccc3822a752272a4a92 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sun, 8 Jan 2023 22:31:47 +0000 Subject: [PATCH 333/478] Consider method return type for various method suggestions --- compiler/rustc_hir_typeck/src/callee.rs | 1 + compiler/rustc_hir_typeck/src/demand.rs | 8 +++ compiler/rustc_hir_typeck/src/expr.rs | 18 +++++-- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 1 + .../src/fn_ctxt/suggestions.rs | 1 + compiler/rustc_hir_typeck/src/method/mod.rs | 7 ++- compiler/rustc_hir_typeck/src/method/probe.rs | 6 ++- .../rustc_hir_typeck/src/method/suggest.rs | 51 +++++++++++++++---- ...suggest-await-on-method-return-mismatch.rs | 24 +++++++++ ...est-await-on-method-return-mismatch.stderr | 9 ++++ ...field-method-suggestion-using-return-ty.rs | 18 +++++++ ...d-method-suggestion-using-return-ty.stderr | 27 ++++++++++ .../ui/privacy/private-field-ty-err.stderr | 5 -- .../method-access-to-range-literal-typo.fixed | 34 +++++++++++++ .../method-access-to-range-literal-typo.rs | 14 +++-- ...method-access-to-range-literal-typo.stderr | 24 ++++----- ...impl-derived-implicit-sized-bound-2.stderr | 7 +++ .../impl-derived-implicit-sized-bound.stderr | 7 +++ 18 files changed, 224 insertions(+), 38 deletions(-) create mode 100644 src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs create mode 100644 src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr create mode 100644 src/test/ui/methods/field-method-suggestion-using-return-ty.rs create mode 100644 src/test/ui/methods/field-method-suggestion-using-return-ty.stderr create mode 100644 src/test/ui/suggestions/method-access-to-range-literal-typo.fixed diff --git a/compiler/rustc_hir_typeck/src/callee.rs b/compiler/rustc_hir_typeck/src/callee.rs index 2cb976f718c2..e299a65ba6fc 100644 --- a/compiler/rustc_hir_typeck/src/callee.rs +++ b/compiler/rustc_hir_typeck/src/callee.rs @@ -499,6 +499,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .probe_for_name( Mode::MethodCall, segment.ident, + expected.only_has_type(self), IsSuggestion(true), callee_ty, call_expr.hir_id, diff --git a/compiler/rustc_hir_typeck/src/demand.rs b/compiler/rustc_hir_typeck/src/demand.rs index f68a428d09ae..1f31a45cfec0 100644 --- a/compiler/rustc_hir_typeck/src/demand.rs +++ b/compiler/rustc_hir_typeck/src/demand.rs @@ -560,6 +560,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .probe_for_name( probe::Mode::MethodCall, path.ident, + None, probe::IsSuggestion(true), self_ty, deref.hir_id, @@ -570,6 +571,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let in_scope_methods = self.probe_for_name_many( probe::Mode::MethodCall, path.ident, + Some(expected), probe::IsSuggestion(true), self_ty, deref.hir_id, @@ -581,6 +583,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let all_methods = self.probe_for_name_many( probe::Mode::MethodCall, path.ident, + Some(expected), probe::IsSuggestion(true), self_ty, deref.hir_id, @@ -1850,10 +1853,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { return; } let mut expr = end.expr; + let mut expectation = Some(expected_ty); while let hir::ExprKind::MethodCall(_, rcvr, ..) = expr.kind { // Getting to the root receiver and asserting it is a fn call let's us ignore cases in // `src/test/ui/methods/issues/issue-90315.stderr`. expr = rcvr; + // If we have more than one layer of calls, then the expected ty + // cannot guide the method probe. + expectation = None; } let hir::ExprKind::Call(method_name, _) = expr.kind else { return; }; let ty::Adt(adt, _) = checked_ty.kind() else { return; }; @@ -1872,6 +1879,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let Ok(_pick) = self.probe_for_name( probe::Mode::MethodCall, *ident, + expectation, probe::IsSuggestion(true), self_ty, expr.hir_id, diff --git a/compiler/rustc_hir_typeck/src/expr.rs b/compiler/rustc_hir_typeck/src/expr.rs index b08b22108c8c..46aabe7d5c3b 100644 --- a/compiler/rustc_hir_typeck/src/expr.rs +++ b/compiler/rustc_hir_typeck/src/expr.rs @@ -351,7 +351,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ExprKind::Struct(qpath, fields, ref base_expr) => { self.check_expr_struct(expr, expected, qpath, fields, base_expr) } - ExprKind::Field(base, field) => self.check_field(expr, &base, field), + ExprKind::Field(base, field) => self.check_field(expr, &base, field, expected), ExprKind::Index(base, idx) => self.check_expr_index(base, idx, expr), ExprKind::Yield(value, ref src) => self.check_expr_yield(value, expr, src), hir::ExprKind::Err => tcx.ty_error(), @@ -1244,6 +1244,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { SelfSource::MethodCall(rcvr), error, Some((rcvr, args)), + expected, ) { err.emit(); } @@ -2186,6 +2187,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { expr: &'tcx hir::Expr<'tcx>, base: &'tcx hir::Expr<'tcx>, field: Ident, + expected: Expectation<'tcx>, ) -> Ty<'tcx> { debug!("check_field(expr: {:?}, base: {:?}, field: {:?})", expr, base, field); let base_ty = self.check_expr(base); @@ -2244,12 +2246,18 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // (#90483) apply adjustments to avoid ExprUseVisitor from // creating erroneous projection. self.apply_adjustments(base, adjustments); - self.ban_private_field_access(expr, base_ty, field, did); + self.ban_private_field_access(expr, base_ty, field, did, expected.only_has_type(self)); return self.tcx().ty_error(); } if field.name == kw::Empty { - } else if self.method_exists(field, base_ty, expr.hir_id, true) { + } else if self.method_exists( + field, + base_ty, + expr.hir_id, + true, + expected.only_has_type(self), + ) { self.ban_take_value_of_method(expr, base_ty, field); } else if !base_ty.is_primitive_ty() { self.ban_nonexisting_field(field, base, expr, base_ty); @@ -2427,6 +2435,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { expr_t: Ty<'tcx>, field: Ident, base_did: DefId, + return_ty: Option>, ) { let struct_path = self.tcx().def_path_str(base_did); let kind_name = self.tcx().def_kind(base_did).descr(base_did); @@ -2438,7 +2447,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ); err.span_label(field.span, "private field"); // Also check if an accessible method exists, which is often what is meant. - if self.method_exists(field, expr_t, expr.hir_id, false) && !self.expr_in_place(expr.hir_id) + if self.method_exists(field, expr_t, expr.hir_id, false, return_ty) + && !self.expr_in_place(expr.hir_id) { self.suggest_method_call( &mut err, diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 634688de01a6..ebbd64eba37b 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -841,6 +841,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { SelfSource::QPath(qself), error, None, + Expectation::NoExpectation, ) { e.emit(); } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 236bdc60e677..91498265259d 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs @@ -1343,6 +1343,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { if let Ok(pick) = self.probe_for_name( Mode::Path, Ident::new(capitalized_name, segment.ident.span), + Some(expected_ty), IsSuggestion(true), self_ty, expr.hir_id, diff --git a/compiler/rustc_hir_typeck/src/method/mod.rs b/compiler/rustc_hir_typeck/src/method/mod.rs index d276bcdb81e3..76c62d6fdc49 100644 --- a/compiler/rustc_hir_typeck/src/method/mod.rs +++ b/compiler/rustc_hir_typeck/src/method/mod.rs @@ -97,10 +97,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_ty: Ty<'tcx>, call_expr_id: hir::HirId, allow_private: bool, + return_type: Option>, ) -> bool { match self.probe_for_name( probe::Mode::MethodCall, method_name, + return_type, IsSuggestion(false), self_ty, call_expr_id, @@ -118,7 +120,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { Err(Ambiguity(..)) => true, Err(PrivateMatch(..)) => allow_private, Err(IllegalSizedBound { .. }) => true, - Err(BadReturnType) => bug!("no return type expectations but got BadReturnType"), + Err(BadReturnType) => false, } } @@ -137,6 +139,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .probe_for_name( probe::Mode::MethodCall, method_name, + None, IsSuggestion(true), self_ty, call_expr.hir_id, @@ -258,6 +261,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let pick = self.probe_for_name( probe::Mode::MethodCall, method_name, + None, IsSuggestion(false), self_ty, call_expr.hir_id, @@ -484,6 +488,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let pick = self.probe_for_name( probe::Mode::Path, method_name, + None, IsSuggestion(false), self_ty, expr_id, diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index aa458748a7fa..47c072831e3a 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -304,6 +304,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &self, mode: Mode, item_name: Ident, + return_type: Option>, is_suggestion: IsSuggestion, self_ty: Ty<'tcx>, scope_expr_id: hir::HirId, @@ -313,7 +314,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { item_name.span, mode, Some(item_name), - None, + return_type, is_suggestion, self_ty, scope_expr_id, @@ -327,6 +328,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &self, mode: Mode, item_name: Ident, + return_type: Option>, is_suggestion: IsSuggestion, self_ty: Ty<'tcx>, scope_expr_id: hir::HirId, @@ -336,7 +338,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { item_name.span, mode, Some(item_name), - None, + return_type, is_suggestion, self_ty, scope_expr_id, diff --git a/compiler/rustc_hir_typeck/src/method/suggest.rs b/compiler/rustc_hir_typeck/src/method/suggest.rs index 536c42706595..bd2b66a72d50 100644 --- a/compiler/rustc_hir_typeck/src/method/suggest.rs +++ b/compiler/rustc_hir_typeck/src/method/suggest.rs @@ -2,6 +2,7 @@ //! found or is otherwise invalid. use crate::errors; +use crate::Expectation; use crate::FnCtxt; use rustc_ast::ast::Mutability; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; @@ -108,6 +109,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { source: SelfSource<'tcx>, error: MethodError<'tcx>, args: Option<(&'tcx hir::Expr<'tcx>, &'tcx [hir::Expr<'tcx>])>, + expected: Expectation<'tcx>, ) -> Option> { // Avoid suggestions when we don't know what's going on. if rcvr_ty.references_error() { @@ -131,6 +133,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { args, sugg_span, &mut no_match_data, + expected, ); } @@ -250,6 +253,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { args: Option<(&'tcx hir::Expr<'tcx>, &'tcx [hir::Expr<'tcx>])>, sugg_span: Span, no_match_data: &mut NoMatchData<'tcx>, + expected: Expectation<'tcx>, ) -> Option> { let mode = no_match_data.mode; let tcx = self.tcx; @@ -320,7 +324,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { if let Mode::MethodCall = mode && let SelfSource::MethodCall(cal) = source { self.suggest_await_before_method( - &mut err, item_name, rcvr_ty, cal, span, + &mut err, item_name, rcvr_ty, cal, span, expected.only_has_type(self), ); } if let Some(span) = @@ -898,7 +902,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Don't suggest (for example) `expr.field.clone()` if `expr.clone()` // can't be called due to `typeof(expr): Clone` not holding. if unsatisfied_predicates.is_empty() { - self.suggest_calling_method_on_field(&mut err, source, span, rcvr_ty, item_name); + self.suggest_calling_method_on_field( + &mut err, + source, + span, + rcvr_ty, + item_name, + expected.only_has_type(self), + ); } self.check_for_inner_self(&mut err, source, rcvr_ty, item_name); @@ -922,6 +933,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &unsatisfied_predicates, &static_candidates, unsatisfied_bounds, + expected.only_has_type(self), ); } @@ -987,7 +999,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - self.check_for_deref_method(&mut err, source, rcvr_ty, item_name); + self.check_for_deref_method(&mut err, source, rcvr_ty, item_name, expected); return Some(err); } @@ -1377,6 +1389,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let pick = self.probe_for_name( Mode::MethodCall, item_name, + None, IsSuggestion(true), range_ty, expr.hir_id, @@ -1587,6 +1600,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { span: Span, actual: Ty<'tcx>, item_name: Ident, + return_type: Option>, ) { if let SelfSource::MethodCall(expr) = source && let mod_id = self.tcx.parent_module(expr.hir_id).to_def_id() @@ -1610,10 +1624,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.check_for_nested_field_satisfying( span, &|_, field_ty| { - self.lookup_probe( + self.probe_for_name( + Mode::MethodCall, item_name, + return_type, + IsSuggestion(true), field_ty, - call_expr, + call_expr.hir_id, ProbeScope::TraitsInScope, ) .map_or(false, |pick| { @@ -2010,12 +2027,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_source: SelfSource<'tcx>, rcvr_ty: Ty<'tcx>, item_name: Ident, + expected: Expectation<'tcx>, ) { let SelfSource::QPath(ty) = self_source else { return; }; for (deref_ty, _) in self.autoderef(rustc_span::DUMMY_SP, rcvr_ty).skip(1) { if let Ok(pick) = self.probe_for_name( Mode::Path, item_name, + expected.only_has_type(self), IsSuggestion(true), deref_ty, ty.hir_id, @@ -2080,12 +2099,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ty: Ty<'tcx>, call: &hir::Expr<'_>, span: Span, + return_type: Option>, ) { let output_ty = match self.get_impl_future_output_ty(ty) { Some(output_ty) => self.resolve_vars_if_possible(output_ty), _ => return, }; - let method_exists = self.method_exists(item_name, output_ty, call.hir_id, true); + let method_exists = + self.method_exists(item_name, output_ty, call.hir_id, true, return_type); debug!("suggest_await_before_method: is_method_exist={}", method_exists); if method_exists { err.span_suggestion_verbose( @@ -2199,6 +2220,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { )], static_candidates: &[CandidateSource], unsatisfied_bounds: bool, + return_type: Option>, ) { let mut alt_rcvr_sugg = false; if let (SelfSource::MethodCall(rcvr), false) = (source, unsatisfied_bounds) { @@ -2221,7 +2243,15 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { (self.tcx.mk_mut_ref(self.tcx.lifetimes.re_erased, rcvr_ty), "&mut "), (self.tcx.mk_imm_ref(self.tcx.lifetimes.re_erased, rcvr_ty), "&"), ] { - match self.lookup_probe(item_name, *rcvr_ty, rcvr, ProbeScope::AllTraits) { + match self.probe_for_name( + Mode::MethodCall, + item_name, + return_type, + IsSuggestion(true), + *rcvr_ty, + rcvr.hir_id, + ProbeScope::AllTraits, + ) { Ok(pick) => { // If the method is defined for the receiver we have, it likely wasn't `use`d. // We point at the method, but we just skip the rest of the check for arbitrary @@ -2254,10 +2284,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { (self.tcx.mk_diagnostic_item(*rcvr_ty, sym::Rc), "Rc::new"), ] { if let Some(new_rcvr_t) = *rcvr_ty - && let Ok(pick) = self.lookup_probe( + && let Ok(pick) = self.probe_for_name( + Mode::MethodCall, item_name, + return_type, + IsSuggestion(true), new_rcvr_t, - rcvr, + rcvr.hir_id, ProbeScope::AllTraits, ) { diff --git a/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs b/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs new file mode 100644 index 000000000000..f2f87a908178 --- /dev/null +++ b/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs @@ -0,0 +1,24 @@ +// edition:2021 + +// Test that we do not suggest `.await` when it doesn't make sense. + +struct A; + +impl A { + fn test(&self) -> i32 { + 1 + } +} + +async fn foo() -> A { + A +} + +async fn async_main() { + let x: u32 = foo().test(); + //~^ ERROR no method named `test` found for opaque type `impl Future` in the current scope +} + +fn main() { + let _ = async_main(); +} diff --git a/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr b/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr new file mode 100644 index 000000000000..e65d9d0e5d35 --- /dev/null +++ b/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr @@ -0,0 +1,9 @@ +error[E0599]: no method named `test` found for opaque type `impl Future` in the current scope + --> $DIR/dont-suggest-await-on-method-return-mismatch.rs:18:24 + | +LL | let x: u32 = foo().test(); + | ^^^^ method not found in `impl Future` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0599`. diff --git a/src/test/ui/methods/field-method-suggestion-using-return-ty.rs b/src/test/ui/methods/field-method-suggestion-using-return-ty.rs new file mode 100644 index 000000000000..07b975c44c90 --- /dev/null +++ b/src/test/ui/methods/field-method-suggestion-using-return-ty.rs @@ -0,0 +1,18 @@ +struct Wrapper(T); + +impl Wrapper> { + fn inner_mut(&self) -> Option<&mut i32> { + self.as_mut() + //~^ ERROR no method named `as_mut` found for reference `&Wrapper>` in the current scope + //~| HELP one of the expressions' fields has a method of the same name + //~| HELP items from traits can only be used if + } + + fn inner_mut_bad(&self) -> Option<&mut u32> { + self.as_mut() + //~^ ERROR no method named `as_mut` found for reference `&Wrapper>` in the current scope + //~| HELP items from traits can only be used if + } +} + +fn main() {} diff --git a/src/test/ui/methods/field-method-suggestion-using-return-ty.stderr b/src/test/ui/methods/field-method-suggestion-using-return-ty.stderr new file mode 100644 index 000000000000..51c52a07e10f --- /dev/null +++ b/src/test/ui/methods/field-method-suggestion-using-return-ty.stderr @@ -0,0 +1,27 @@ +error[E0599]: no method named `as_mut` found for reference `&Wrapper>` in the current scope + --> $DIR/field-method-suggestion-using-return-ty.rs:5:14 + | +LL | self.as_mut() + | ^^^^^^ method not found in `&Wrapper>` + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following trait defines an item `as_mut`, perhaps you need to implement it: + candidate #1: `AsMut` +help: one of the expressions' fields has a method of the same name + | +LL | self.0.as_mut() + | ++ + +error[E0599]: no method named `as_mut` found for reference `&Wrapper>` in the current scope + --> $DIR/field-method-suggestion-using-return-ty.rs:12:14 + | +LL | self.as_mut() + | ^^^^^^ method not found in `&Wrapper>` + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following trait defines an item `as_mut`, perhaps you need to implement it: + candidate #1: `AsMut` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0599`. diff --git a/src/test/ui/privacy/private-field-ty-err.stderr b/src/test/ui/privacy/private-field-ty-err.stderr index e583a25fd8fd..98ba7856e57e 100644 --- a/src/test/ui/privacy/private-field-ty-err.stderr +++ b/src/test/ui/privacy/private-field-ty-err.stderr @@ -3,11 +3,6 @@ error[E0616]: field `len` of struct `Foo` is private | LL | if x.len { | ^^^ private field - | -help: a method `len` also exists, call it with parentheses - | -LL | if x.len() { - | ++ error: aborting due to previous error diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.fixed b/src/test/ui/suggestions/method-access-to-range-literal-typo.fixed new file mode 100644 index 000000000000..13601eef6c25 --- /dev/null +++ b/src/test/ui/suggestions/method-access-to-range-literal-typo.fixed @@ -0,0 +1,34 @@ +// run-rustfix + +#![allow(unused)] + +fn as_ref() -> Option> { + None +} +struct Type { + option: Option> +} +trait Trait { + fn foo(&self) -> &Vec; +} +impl Trait for Option> { + fn foo(&self) -> &Vec { + self.as_ref().unwrap() + } +} + +impl Type { + fn method(&self) -> Option<&Vec> { + self.option.as_ref().map(|x| x) + //~^ ERROR E0308 + } + fn method2(&self) -> Option<&u8> { + self.option.foo().get(0) + //~^ ERROR E0425 + //~| ERROR E0308 + } +} + +fn main() { + let _ = Type { option: None }.method(); +} diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.rs b/src/test/ui/suggestions/method-access-to-range-literal-typo.rs index ac662edafe6b..fdcd6425d32d 100644 --- a/src/test/ui/suggestions/method-access-to-range-literal-typo.rs +++ b/src/test/ui/suggestions/method-access-to-range-literal-typo.rs @@ -1,3 +1,7 @@ +// run-rustfix + +#![allow(unused)] + fn as_ref() -> Option> { None } @@ -5,20 +9,20 @@ struct Type { option: Option> } trait Trait { - fn foo(&self) -> Vec; + fn foo(&self) -> &Vec; } impl Trait for Option> { - fn foo(&self) -> Vec { - vec![1, 2, 3] + fn foo(&self) -> &Vec { + self.as_ref().unwrap() } } impl Type { - fn method(&self) -> Option> { + fn method(&self) -> Option<&Vec> { self.option..as_ref().map(|x| x) //~^ ERROR E0308 } - fn method2(&self) -> &u8 { + fn method2(&self) -> Option<&u8> { self.option..foo().get(0) //~^ ERROR E0425 //~| ERROR E0308 diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr b/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr index c84f94678914..f421408944bb 100644 --- a/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr +++ b/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr @@ -1,5 +1,5 @@ error[E0425]: cannot find function `foo` in this scope - --> $DIR/method-access-to-range-literal-typo.rs:22:22 + --> $DIR/method-access-to-range-literal-typo.rs:26:22 | LL | self.option..foo().get(0) | ^^^ not found in this scope @@ -11,15 +11,15 @@ LL + self.option.foo().get(0) | error[E0308]: mismatched types - --> $DIR/method-access-to-range-literal-typo.rs:18:9 + --> $DIR/method-access-to-range-literal-typo.rs:22:9 | -LL | fn method(&self) -> Option> { - | --------------- expected `Option>` because of return type +LL | fn method(&self) -> Option<&Vec> { + | ---------------- expected `Option<&Vec>` because of return type LL | self.option..as_ref().map(|x| x) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `Option`, found struct `Range` | - = note: expected enum `Option<_>` - found struct `std::ops::Range>` + = note: expected enum `Option<&Vec>` + found struct `std::ops::Range>>` help: you likely meant to write a method call instead of a range | LL - self.option..as_ref().map(|x| x) @@ -27,15 +27,15 @@ LL + self.option.as_ref().map(|x| x) | error[E0308]: mismatched types - --> $DIR/method-access-to-range-literal-typo.rs:22:9 + --> $DIR/method-access-to-range-literal-typo.rs:26:9 | -LL | fn method2(&self) -> &u8 { - | --- expected `&u8` because of return type +LL | fn method2(&self) -> Option<&u8> { + | ----------- expected `Option<&u8>` because of return type LL | self.option..foo().get(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&u8`, found struct `Range` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `Option`, found struct `Range` | - = note: expected reference `&u8` - found struct `std::ops::Range>>` + = note: expected enum `Option<&u8>` + found struct `std::ops::Range>>` help: you likely meant to write a method call instead of a range | LL - self.option..foo().get(0) diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr index 543ceac8e917..7cd9788a7d34 100644 --- a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr +++ b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr @@ -17,6 +17,13 @@ LL | impl<'a, T: Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { | ^ ----------- ------------- | | | unsatisfied trait bound introduced here + = note: the following trait bounds were not satisfied: + `&Victim<'_, Self>: VictimTrait` + `&mut Victim<'_, Self>: VictimTrait` +help: consider relaxing the type parameter's implicit `Sized` bound + | +LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { + | ++++++++ help: consider relaxing the type parameter's implicit `Sized` bound | LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr index f08d685836ec..96345df73b4b 100644 --- a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr +++ b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr @@ -17,6 +17,13 @@ LL | impl<'a, T: Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { | ^ ----------- ------------- | | | unsatisfied trait bound introduced here + = note: the following trait bounds were not satisfied: + `&Victim<'_, Self>: VictimTrait` + `&mut Victim<'_, Self>: VictimTrait` +help: consider relaxing the type parameter's implicit `Sized` bound + | +LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { + | ++++++++ help: consider relaxing the type parameter's implicit `Sized` bound | LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { From 2600d6245bbc0d04e57e4ce561a6c07bf6b55951 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sun, 8 Jan 2023 22:54:05 +0000 Subject: [PATCH 334/478] Add lookup_probe_for_diagnostic --- compiler/rustc_hir_typeck/src/callee.rs | 10 +-- compiler/rustc_hir_typeck/src/demand.rs | 21 +++--- compiler/rustc_hir_typeck/src/expr.rs | 4 +- compiler/rustc_hir_typeck/src/method/mod.rs | 75 ++++++++++++------- .../rustc_hir_typeck/src/method/suggest.rs | 62 ++++++++------- 5 files changed, 98 insertions(+), 74 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/callee.rs b/compiler/rustc_hir_typeck/src/callee.rs index e299a65ba6fc..3b664363d232 100644 --- a/compiler/rustc_hir_typeck/src/callee.rs +++ b/compiler/rustc_hir_typeck/src/callee.rs @@ -1,4 +1,4 @@ -use super::method::probe::{IsSuggestion, Mode, ProbeScope}; +use super::method::probe::ProbeScope; use super::method::MethodCallee; use super::{Expectation, FnCtxt, TupleArgumentsFlag}; @@ -496,16 +496,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // any strange errors. If it's successful, then we'll do a true // method lookup. let Ok(pick) = self - .probe_for_name( - Mode::MethodCall, + .lookup_probe_for_diagnostic( segment.ident, - expected.only_has_type(self), - IsSuggestion(true), callee_ty, - call_expr.hir_id, + call_expr, // We didn't record the in scope traits during late resolution // so we need to probe AllTraits unfortunately ProbeScope::AllTraits, + expected.only_has_type(self), ) else { return None; }; diff --git a/compiler/rustc_hir_typeck/src/demand.rs b/compiler/rustc_hir_typeck/src/demand.rs index 1f31a45cfec0..33fc7413a679 100644 --- a/compiler/rustc_hir_typeck/src/demand.rs +++ b/compiler/rustc_hir_typeck/src/demand.rs @@ -303,11 +303,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Get the evaluated type *after* calling the method call, so that the influence // of the arguments can be reflected in the receiver type. The receiver // expression has the type *before* theis analysis is done. - let ty = match self.lookup_probe( + let ty = match self.lookup_probe_for_diagnostic( segment.ident, rcvr_ty, expr, probe::ProbeScope::TraitsInScope, + None, ) { Ok(pick) => pick.self_ty, Err(_) => rcvr_ty, @@ -557,14 +558,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let Some(self_ty) = self.typeck_results.borrow().expr_ty_adjusted_opt(base) else { return; }; let Ok(pick) = self - .probe_for_name( - probe::Mode::MethodCall, + .lookup_probe_for_diagnostic( path.ident, - None, - probe::IsSuggestion(true), self_ty, - deref.hir_id, + deref, probe::ProbeScope::TraitsInScope, + None, ) else { return; }; @@ -1835,7 +1834,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { pub fn check_for_range_as_method_call( &self, err: &mut Diagnostic, - expr: &hir::Expr<'_>, + expr: &hir::Expr<'tcx>, checked_ty: Ty<'tcx>, expected_ty: Ty<'tcx>, ) { @@ -1876,14 +1875,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let hir::ExprKind::Path(hir::QPath::Resolved(None, p)) = method_name.kind else { return; }; let [hir::PathSegment { ident, .. }] = p.segments else { return; }; let self_ty = self.typeck_results.borrow().expr_ty(start.expr); - let Ok(_pick) = self.probe_for_name( - probe::Mode::MethodCall, + let Ok(_pick) = self.lookup_probe_for_diagnostic( *ident, - expectation, - probe::IsSuggestion(true), self_ty, - expr.hir_id, + expr, probe::ProbeScope::AllTraits, + expectation, ) else { return; }; let mut sugg = "."; let mut span = start.expr.span.between(end.expr.span); diff --git a/compiler/rustc_hir_typeck/src/expr.rs b/compiler/rustc_hir_typeck/src/expr.rs index 46aabe7d5c3b..ba1a5a0cb03e 100644 --- a/compiler/rustc_hir_typeck/src/expr.rs +++ b/compiler/rustc_hir_typeck/src/expr.rs @@ -2431,7 +2431,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { fn ban_private_field_access( &self, - expr: &hir::Expr<'_>, + expr: &hir::Expr<'tcx>, expr_t: Ty<'tcx>, field: Ident, base_did: DefId, @@ -2462,7 +2462,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { err.emit(); } - fn ban_take_value_of_method(&self, expr: &hir::Expr<'_>, expr_t: Ty<'tcx>, field: Ident) { + fn ban_take_value_of_method(&self, expr: &hir::Expr<'tcx>, expr_t: Ty<'tcx>, field: Ident) { let mut err = type_error_struct!( self.tcx().sess, field.span, diff --git a/compiler/rustc_hir_typeck/src/method/mod.rs b/compiler/rustc_hir_typeck/src/method/mod.rs index 76c62d6fdc49..146d5e60c2f3 100644 --- a/compiler/rustc_hir_typeck/src/method/mod.rs +++ b/compiler/rustc_hir_typeck/src/method/mod.rs @@ -132,18 +132,16 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { msg: &str, method_name: Ident, self_ty: Ty<'tcx>, - call_expr: &hir::Expr<'_>, + call_expr: &hir::Expr<'tcx>, span: Option, ) { let params = self - .probe_for_name( - probe::Mode::MethodCall, + .lookup_probe_for_diagnostic( method_name, - None, - IsSuggestion(true), self_ty, - call_expr.hir_id, + call_expr, ProbeScope::TraitsInScope, + None, ) .map(|pick| { let sig = self.tcx.fn_sig(pick.item.def_id); @@ -224,25 +222,30 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } // We probe again, taking all traits into account (not only those in scope). - let candidates = - match self.lookup_probe(segment.ident, self_ty, call_expr, ProbeScope::AllTraits) { - // If we find a different result the caller probably forgot to import a trait. - Ok(ref new_pick) if pick.differs_from(new_pick) => { - vec![new_pick.item.container_id(self.tcx)] - } - Err(Ambiguity(ref sources)) => sources - .iter() - .filter_map(|source| { - match *source { - // Note: this cannot come from an inherent impl, - // because the first probing succeeded. - CandidateSource::Impl(def) => self.tcx.trait_id_of_impl(def), - CandidateSource::Trait(_) => None, - } - }) - .collect(), - _ => Vec::new(), - }; + let candidates = match self.lookup_probe_for_diagnostic( + segment.ident, + self_ty, + call_expr, + ProbeScope::AllTraits, + None, + ) { + // If we find a different result the caller probably forgot to import a trait. + Ok(ref new_pick) if pick.differs_from(new_pick) => { + vec![new_pick.item.container_id(self.tcx)] + } + Err(Ambiguity(ref sources)) => sources + .iter() + .filter_map(|source| { + match *source { + // Note: this cannot come from an inherent impl, + // because the first probing succeeded. + CandidateSource::Impl(def) => self.tcx.trait_id_of_impl(def), + CandidateSource::Trait(_) => None, + } + }) + .collect(), + _ => Vec::new(), + }; return Err(IllegalSizedBound { candidates, needs_mut, bound_span: span, self_expr }); } @@ -255,7 +258,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { &self, method_name: Ident, self_ty: Ty<'tcx>, - call_expr: &'tcx hir::Expr<'tcx>, + call_expr: &hir::Expr<'_>, scope: ProbeScope, ) -> probe::PickResult<'tcx> { let pick = self.probe_for_name( @@ -271,6 +274,26 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { Ok(pick) } + pub fn lookup_probe_for_diagnostic( + &self, + method_name: Ident, + self_ty: Ty<'tcx>, + call_expr: &hir::Expr<'_>, + scope: ProbeScope, + return_type: Option>, + ) -> probe::PickResult<'tcx> { + let pick = self.probe_for_name( + probe::Mode::MethodCall, + method_name, + return_type, + IsSuggestion(true), + self_ty, + call_expr.hir_id, + scope, + )?; + Ok(pick) + } + pub(super) fn obligation_for_method( &self, cause: ObligationCause<'tcx>, diff --git a/compiler/rustc_hir_typeck/src/method/suggest.rs b/compiler/rustc_hir_typeck/src/method/suggest.rs index bd2b66a72d50..62e80659486a 100644 --- a/compiler/rustc_hir_typeck/src/method/suggest.rs +++ b/compiler/rustc_hir_typeck/src/method/suggest.rs @@ -370,8 +370,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.suggest_fn_call(&mut err, rcvr_expr, rcvr_ty, |output_ty| { let call_expr = self.tcx.hir().expect_expr(self.tcx.hir().parent_id(rcvr_expr.hir_id)); - let probe = - self.lookup_probe(item_name, output_ty, call_expr, ProbeScope::AllTraits); + let probe = self.lookup_probe_for_diagnostic( + item_name, + output_ty, + call_expr, + ProbeScope::AllTraits, + expected.only_has_type(self), + ); probe.is_ok() }); } @@ -1386,14 +1391,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let range_ty = self.tcx.bound_type_of(range_def_id).subst(self.tcx, &[actual.into()]); - let pick = self.probe_for_name( - Mode::MethodCall, + let pick = self.lookup_probe_for_diagnostic( item_name, - None, - IsSuggestion(true), range_ty, - expr.hir_id, + expr, ProbeScope::AllTraits, + None, ); if pick.is_ok() { let range_span = parent_expr.span.with_hi(expr.span.hi()); @@ -1573,11 +1576,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { && let Some(expr) = visitor.result && let Some(self_ty) = self.node_ty_opt(expr.hir_id) { - let probe = self.lookup_probe( + let probe = self.lookup_probe_for_diagnostic( seg2.ident, self_ty, call_expr, ProbeScope::TraitsInScope, + None, ); if probe.is_ok() { let sm = self.infcx.tcx.sess.source_map(); @@ -1624,14 +1628,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.check_for_nested_field_satisfying( span, &|_, field_ty| { - self.probe_for_name( - Mode::MethodCall, + self.lookup_probe_for_diagnostic( item_name, - return_type, - IsSuggestion(true), field_ty, - call_expr.hir_id, + call_expr, ProbeScope::TraitsInScope, + return_type, ) .map_or(false, |pick| { !never_mention_traits @@ -1697,9 +1699,15 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { return None; } - self.lookup_probe(item_name, field_ty, call_expr, ProbeScope::TraitsInScope) - .ok() - .map(|pick| (variant, field, pick)) + self.lookup_probe_for_diagnostic( + item_name, + field_ty, + call_expr, + ProbeScope::TraitsInScope, + None, + ) + .ok() + .map(|pick| (variant, field, pick)) }) .collect(); @@ -1763,11 +1771,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ty::AdtKind::Struct | ty::AdtKind::Union => { let [first] = ***substs else { return; }; let ty::GenericArgKind::Type(ty) = first.unpack() else { return; }; - let Ok(pick) = self.lookup_probe( + let Ok(pick) = self.lookup_probe_for_diagnostic( item_name, ty, call_expr, ProbeScope::TraitsInScope, + None, ) else { return; }; let name = self.ty_to_value_string(actual); @@ -2243,14 +2252,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { (self.tcx.mk_mut_ref(self.tcx.lifetimes.re_erased, rcvr_ty), "&mut "), (self.tcx.mk_imm_ref(self.tcx.lifetimes.re_erased, rcvr_ty), "&"), ] { - match self.probe_for_name( - Mode::MethodCall, + match self.lookup_probe_for_diagnostic( item_name, - return_type, - IsSuggestion(true), *rcvr_ty, - rcvr.hir_id, + rcvr, ProbeScope::AllTraits, + return_type, ) { Ok(pick) => { // If the method is defined for the receiver we have, it likely wasn't `use`d. @@ -2284,14 +2291,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { (self.tcx.mk_diagnostic_item(*rcvr_ty, sym::Rc), "Rc::new"), ] { if let Some(new_rcvr_t) = *rcvr_ty - && let Ok(pick) = self.probe_for_name( - Mode::MethodCall, + && let Ok(pick) = self.lookup_probe_for_diagnostic( item_name, - return_type, - IsSuggestion(true), new_rcvr_t, - rcvr.hir_id, + rcvr, ProbeScope::AllTraits, + return_type, ) { debug!("try_alt_rcvr: pick candidate {:?}", pick); @@ -2670,11 +2675,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { name: Symbol::intern(&format!("{}_else", method_name.as_str())), span: method_name.span, }; - let probe = self.lookup_probe( + let probe = self.lookup_probe_for_diagnostic( new_name, self_ty, self_expr, ProbeScope::TraitsInScope, + Some(expected), ); // check the method arguments number From 4f15034b55f6c9e134f7644c4571faa5ddb5facb Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Mon, 9 Jan 2023 06:53:11 +0000 Subject: [PATCH 335/478] hack: don't normalize xform_ret_ty for trait/object candidates unless needed --- compiler/rustc_hir_typeck/src/method/probe.rs | 67 ++++++++++++------- ...impl-derived-implicit-sized-bound-2.stderr | 7 -- .../impl-derived-implicit-sized-bound.stderr | 7 -- 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index 47c072831e3a..02b4d5bb2fbe 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -1523,30 +1523,11 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { }; let mut result = ProbeResult::Match; + let mut xform_ret_ty = probe.xform_ret_ty; + debug!(?xform_ret_ty); + let cause = traits::ObligationCause::misc(self.span, self.body_id); - let xform_ret_ty = if let Some(xform_ret_ty) = probe.xform_ret_ty { - // `xform_ret_ty` hasn't been normalized yet, only `xform_self_ty`, - // see the reasons mentioned in the comments in `assemble_inherent_impl_probe` - // for why this is necessary - let InferOk { - value: normalized_xform_ret_ty, - obligations: normalization_obligations, - } = self.fcx.at(&cause, self.param_env).normalize(xform_ret_ty); - debug!("xform_ret_ty after normalization: {:?}", normalized_xform_ret_ty); - - for o in normalization_obligations { - if !self.predicate_may_hold(&o) { - possibly_unsatisfied_predicates.push((o.predicate, None, Some(o.cause))); - result = ProbeResult::NoMatch; - } - } - - Some(normalized_xform_ret_ty) - } else { - None - }; - let mut parent_pred = None; // If so, impls may carry other conditions (e.g., where @@ -1555,6 +1536,16 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { // don't have enough information to fully evaluate). match probe.kind { InherentImplCandidate(ref substs, ref ref_obligations) => { + // `xform_ret_ty` hasn't been normalized yet, only `xform_self_ty`, + // see the reasons mentioned in the comments in `assemble_inherent_impl_probe` + // for why this is necessary + let InferOk { + value: normalized_xform_ret_ty, + obligations: normalization_obligations, + } = self.fcx.at(&cause, self.param_env).normalize(xform_ret_ty); + xform_ret_ty = normalized_xform_ret_ty; + debug!("xform_ret_ty after normalization: {:?}", xform_ret_ty); + // Check whether the impl imposes obligations we have to worry about. let impl_def_id = probe.item.container_id(self.tcx); let impl_bounds = self.tcx.predicates_of(impl_def_id); @@ -1572,7 +1563,8 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { let candidate_obligations = impl_obligations .chain(norm_obligations.into_iter()) - .chain(ref_obligations.iter().cloned()); + .chain(ref_obligations.iter().cloned()) + .chain(normalization_obligations.into_iter()); // Evaluate those obligations to see if they might possibly hold. for o in candidate_obligations { @@ -1668,8 +1660,33 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { if let ProbeResult::Match = result && let Some(return_ty) = self.return_type - && let Some(xform_ret_ty) = xform_ret_ty + && let Some(mut xform_ret_ty) = xform_ret_ty { + // `xform_ret_ty` has only been normalized for `InherentImplCandidate`. + // We don't normalize the other candidates for perf/backwards-compat reasons... + // but `self.return_type` is only set on the diagnostic-path, so we + // should be okay doing it here. + if !matches!(probe.kind, InherentImplCandidate(..)) { + let InferOk { + value: normalized_xform_ret_ty, + obligations: normalization_obligations, + } = self.fcx.at(&cause, self.param_env).normalize(xform_ret_ty); + xform_ret_ty = normalized_xform_ret_ty; + debug!("xform_ret_ty after normalization: {:?}", xform_ret_ty); + // Evaluate those obligations to see if they might possibly hold. + for o in normalization_obligations { + let o = self.resolve_vars_if_possible(o); + if !self.predicate_may_hold(&o) { + result = ProbeResult::NoMatch; + possibly_unsatisfied_predicates.push(( + o.predicate, + None, + Some(o.cause), + )); + } + } + } + debug!( "comparing return_ty {:?} with xform ret ty {:?}", return_ty, xform_ret_ty @@ -1681,7 +1698,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { .sup(return_ty, xform_ret_ty) .is_err() { - return ProbeResult::BadReturnType; + result = ProbeResult::BadReturnType; } } diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr index 7cd9788a7d34..543ceac8e917 100644 --- a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr +++ b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr @@ -17,13 +17,6 @@ LL | impl<'a, T: Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { | ^ ----------- ------------- | | | unsatisfied trait bound introduced here - = note: the following trait bounds were not satisfied: - `&Victim<'_, Self>: VictimTrait` - `&mut Victim<'_, Self>: VictimTrait` -help: consider relaxing the type parameter's implicit `Sized` bound - | -LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { - | ++++++++ help: consider relaxing the type parameter's implicit `Sized` bound | LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr index 96345df73b4b..f08d685836ec 100644 --- a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr +++ b/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr @@ -17,13 +17,6 @@ LL | impl<'a, T: Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { | ^ ----------- ------------- | | | unsatisfied trait bound introduced here - = note: the following trait bounds were not satisfied: - `&Victim<'_, Self>: VictimTrait` - `&mut Victim<'_, Self>: VictimTrait` -help: consider relaxing the type parameter's implicit `Sized` bound - | -LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { - | ++++++++ help: consider relaxing the type parameter's implicit `Sized` bound | LL | impl<'a, T: ?Sized + Perpetrator /*+ ?Sized*/> VictimTrait for Victim<'a, T> { From 1d66a675bb61c21555dcb848ed7378b6f2848de7 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Mon, 9 Jan 2023 18:07:34 +0000 Subject: [PATCH 336/478] review comment --- compiler/rustc_resolve/src/diagnostics.rs | 11 +++++------ compiler/rustc_resolve/src/imports.rs | 10 ++++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index c8b96aae7a69..7d62d67d64f0 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -161,7 +161,7 @@ impl<'a> Resolver<'a> { found_use, DiagnosticMode::Normal, path, - None, + "", ); err.emit(); } else if let Some((span, msg, sugg, appl)) = suggestion { @@ -691,7 +691,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Pattern, vec![], - None, + "", ); } err @@ -1346,7 +1346,7 @@ impl<'a> Resolver<'a> { FoundUse::Yes, DiagnosticMode::Normal, vec![], - None, + "", ); if macro_kind == MacroKind::Derive && (ident.name == sym::Send || ident.name == sym::Sync) { @@ -2328,7 +2328,7 @@ pub(crate) fn import_candidates( use_placement_span: Option, candidates: &[ImportSuggestion], mode: DiagnosticMode, - append: Option<&str>, + append: &str, ) { show_candidates( session, @@ -2358,12 +2358,11 @@ fn show_candidates( found_use: FoundUse, mode: DiagnosticMode, path: Vec, - append: Option<&str>, + append: &str, ) { if candidates.is_empty() { return; } - let append = append.unwrap_or(""); let mut accessible_path_strings: Vec<(String, &str, Option, &Option)> = Vec::new(); diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index 0a2a737e1a45..00f65ac37b6a 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -554,7 +554,10 @@ impl<'a, 'b> ImportResolver<'a, 'b> { Some(err.span), &candidates, DiagnosticMode::Import, - (source != target).then(|| format!(" as {target}")).as_deref(), + (source != target) + .then(|| format!(" as {target}")) + .as_deref() + .unwrap_or(""), ), ImportKind::Single { nested: true, source, target, .. } => { import_candidates( @@ -564,7 +567,10 @@ impl<'a, 'b> ImportResolver<'a, 'b> { None, &candidates, DiagnosticMode::Normal, - (source != target).then(|| format!(" as {target}")).as_deref(), + (source != target) + .then(|| format!(" as {target}")) + .as_deref() + .unwrap_or(""), ); } _ => {} From 1c766d03a7ad534bfba62b61c65c2c1216a64264 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Mon, 9 Jan 2023 11:09:19 -0700 Subject: [PATCH 337/478] rustdoc: merge common CSS for `a` --- src/librustdoc/html/static/css/rustdoc.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 77401e8b76e8..8ec4631f7d08 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -253,6 +253,7 @@ h1 a, a { color: var(--link-color); + text-decoration: none; } ol, ul { @@ -662,10 +663,6 @@ nav.sub { margin: 0 0 15px 0; } -a { - text-decoration: none; -} - .small-section-header { /* fields use tags, but should get their own lines */ display: block; From 2855794257e36ec7393f3b7d8f4b99e5776f550f Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Thu, 1 Dec 2022 18:57:53 +0100 Subject: [PATCH 338/478] Use newtype for unused generic parameters --- .../rustc_const_eval/src/interpret/util.rs | 3 +- compiler/rustc_metadata/src/rmeta/encoder.rs | 2 +- compiler/rustc_metadata/src/rmeta/mod.rs | 6 +-- compiler/rustc_middle/src/query/mod.rs | 2 +- compiler/rustc_middle/src/ty/instance.rs | 38 ++++++++++++++++++- compiler/rustc_middle/src/ty/mod.rs | 2 +- compiler/rustc_middle/src/ty/parameterized.rs | 1 + compiler/rustc_middle/src/ty/query.rs | 4 +- compiler/rustc_monomorphize/src/errors.rs | 4 +- .../rustc_monomorphize/src/polymorphize.rs | 36 +++++++++--------- 10 files changed, 65 insertions(+), 33 deletions(-) diff --git a/compiler/rustc_const_eval/src/interpret/util.rs b/compiler/rustc_const_eval/src/interpret/util.rs index e4f716c31945..a61d3ab40a5c 100644 --- a/compiler/rustc_const_eval/src/interpret/util.rs +++ b/compiler/rustc_const_eval/src/interpret/util.rs @@ -40,12 +40,11 @@ where let index = index .try_into() .expect("more generic parameters than can fit into a `u32`"); - let is_used = unused_params.contains(index).map_or(true, |unused| !unused); // Only recurse when generic parameters in fns, closures and generators // are used and require substitution. // Just in case there are closures or generators within this subst, // recurse. - if is_used && subst.needs_subst() { + if unused_params.is_used(index) && subst.needs_subst() { return subst.visit_with(self); } } diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index 0d9f216700fb..bdc4ae391f04 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -1429,7 +1429,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> { let instance = ty::InstanceDef::Item(ty::WithOptConstParam::unknown(def_id.to_def_id())); let unused = tcx.unused_generic_params(instance); - if !unused.is_empty() { + if !unused.all_used() { record!(self.tables.unused_generic_params[def_id.to_def_id()] <- unused); } } diff --git a/compiler/rustc_metadata/src/rmeta/mod.rs b/compiler/rustc_metadata/src/rmeta/mod.rs index 26a41f633fff..bf9be714daf7 100644 --- a/compiler/rustc_metadata/src/rmeta/mod.rs +++ b/compiler/rustc_metadata/src/rmeta/mod.rs @@ -13,7 +13,7 @@ use rustc_hir::def::{CtorKind, DefKind}; use rustc_hir::def_id::{CrateNum, DefId, DefIndex, DefPathHash, StableCrateId}; use rustc_hir::definitions::DefKey; use rustc_hir::lang_items::LangItem; -use rustc_index::bit_set::{BitSet, FiniteBitSet}; +use rustc_index::bit_set::BitSet; use rustc_index::vec::IndexVec; use rustc_middle::metadata::ModChild; use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs; @@ -22,7 +22,7 @@ use rustc_middle::middle::resolve_lifetime::ObjectLifetimeDefault; use rustc_middle::mir; use rustc_middle::ty::fast_reject::SimplifiedType; use rustc_middle::ty::query::Providers; -use rustc_middle::ty::{self, ReprOptions, Ty}; +use rustc_middle::ty::{self, ReprOptions, Ty, UnusedGenericParams}; use rustc_middle::ty::{DeducedParamAttrs, GeneratorDiagnosticData, ParameterizedOverTcx, TyCtxt}; use rustc_serialize::opaque::FileEncoder; use rustc_session::config::SymbolManglingVersion; @@ -384,7 +384,7 @@ define_tables! { trait_item_def_id: Table, inherent_impls: Table>, expn_that_defined: Table>, - unused_generic_params: Table>>, + unused_generic_params: Table>, params_in_repr: Table>>, repr_options: Table>, // `def_keys` and `def_path_hashes` represent a lazy version of a diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index 37db2274f678..076ce1bdb348 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -1839,7 +1839,7 @@ rustc_queries! { desc { "getting codegen unit `{sym}`" } } - query unused_generic_params(key: ty::InstanceDef<'tcx>) -> FiniteBitSet { + query unused_generic_params(key: ty::InstanceDef<'tcx>) -> UnusedGenericParams { cache_on_disk_if { key.def_id().is_local() } desc { |tcx| "determining which generic parameters are unused by `{}`", diff --git a/compiler/rustc_middle/src/ty/instance.rs b/compiler/rustc_middle/src/ty/instance.rs index 35d369ffc891..4ee4d7caec1f 100644 --- a/compiler/rustc_middle/src/ty/instance.rs +++ b/compiler/rustc_middle/src/ty/instance.rs @@ -6,6 +6,7 @@ use rustc_errors::ErrorGuaranteed; use rustc_hir::def::Namespace; use rustc_hir::def_id::{CrateNum, DefId}; use rustc_hir::lang_items::LangItem; +use rustc_index::bit_set::FiniteBitSet; use rustc_macros::HashStable; use rustc_middle::ty::normalize_erasing_regions::NormalizationError; use rustc_span::Symbol; @@ -711,7 +712,7 @@ fn polymorphize<'tcx>( } InternalSubsts::for_item(tcx, def_id, |param, _| { - let is_unused = unused.contains(param.index).unwrap_or(false); + let is_unused = unused.is_unused(param.index); debug!("polymorphize: param={:?} is_unused={:?}", param, is_unused); match param.kind { // Upvar case: If parameter is a type parameter.. @@ -733,7 +734,7 @@ fn polymorphize<'tcx>( // Simple case: If parameter is a const or type parameter.. ty::GenericParamDefKind::Const { .. } | ty::GenericParamDefKind::Type { .. } if // ..and is within range and unused.. - unused.contains(param.index).unwrap_or(false) => + unused.is_unused(param.index) => // ..then use the identity for this parameter. tcx.mk_param_from_def(param), @@ -774,3 +775,36 @@ fn needs_fn_once_adapter_shim( (ty::ClosureKind::FnMut | ty::ClosureKind::FnOnce, _) => Err(()), } } + +// Set bits represent unused generic parameters. +// An empty set indicates that all parameters are used. +#[derive(Debug, Copy, Clone, Eq, PartialEq, Decodable, Encodable, HashStable)] +pub struct UnusedGenericParams(FiniteBitSet); + +impl UnusedGenericParams { + pub fn new_all_unused(amount: u32) -> Self { + let mut bitset = FiniteBitSet::new_empty(); + bitset.set_range(0..amount); + Self(bitset) + } + + pub fn new_all_used() -> Self { + Self(FiniteBitSet::new_empty()) + } + + pub fn mark_used(&mut self, idx: u32) { + self.0.clear(idx); + } + + pub fn is_unused(&self, idx: u32) -> bool { + self.0.contains(idx).unwrap_or(false) + } + + pub fn is_used(&self, idx: u32) -> bool { + !self.is_unused(idx) + } + + pub fn all_used(&self) -> bool { + self.0.is_empty() + } +} diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index f01d74539a12..fa571d480b64 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -86,7 +86,7 @@ pub use self::context::{ tls, CtxtInterners, DeducedParamAttrs, FreeRegionInfo, GlobalCtxt, Lift, OnDiskCache, TyCtxt, TyCtxtFeed, }; -pub use self::instance::{Instance, InstanceDef, ShortInstance}; +pub use self::instance::{Instance, InstanceDef, ShortInstance, UnusedGenericParams}; pub use self::list::List; pub use self::parameterized::ParameterizedOverTcx; pub use self::rvalue_scopes::RvalueScopes; diff --git a/compiler/rustc_middle/src/ty/parameterized.rs b/compiler/rustc_middle/src/ty/parameterized.rs index a21e3961cb62..72f451985796 100644 --- a/compiler/rustc_middle/src/ty/parameterized.rs +++ b/compiler/rustc_middle/src/ty/parameterized.rs @@ -60,6 +60,7 @@ trivially_parameterized_over_tcx! { ty::ImplPolarity, ty::ReprOptions, ty::TraitDef, + ty::UnusedGenericParams, ty::Visibility, ty::adjustment::CoerceUnsizedInfo, ty::fast_reject::SimplifiedType, diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs index 642900d3ab42..9d4ee22a7273 100644 --- a/compiler/rustc_middle/src/ty/query.rs +++ b/compiler/rustc_middle/src/ty/query.rs @@ -34,7 +34,7 @@ use crate::ty::layout::TyAndLayout; use crate::ty::subst::{GenericArg, SubstsRef}; use crate::ty::util::AlwaysRequiresDrop; use crate::ty::GeneratorDiagnosticData; -use crate::ty::{self, CrateInherentImpls, ParamEnvAnd, Ty, TyCtxt}; +use crate::ty::{self, CrateInherentImpls, ParamEnvAnd, Ty, TyCtxt, UnusedGenericParams}; use rustc_ast as ast; use rustc_ast::expand::allocator::AllocatorKind; use rustc_attr as attr; @@ -50,7 +50,7 @@ use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId}; use rustc_hir::hir_id::OwnerId; use rustc_hir::lang_items::{LangItem, LanguageItems}; use rustc_hir::{Crate, ItemLocalId, TraitCandidate}; -use rustc_index::{bit_set::FiniteBitSet, vec::IndexVec}; +use rustc_index::vec::IndexVec; use rustc_session::config::{EntryFnType, OptLevel, OutputFilenames, SymbolManglingVersion}; use rustc_session::cstore::{CrateDepKind, CrateSource}; use rustc_session::cstore::{ExternCrate, ForeignModule, LinkagePreference, NativeLib}; diff --git a/compiler/rustc_monomorphize/src/errors.rs b/compiler/rustc_monomorphize/src/errors.rs index aa3227cac2de..5233cfb21203 100644 --- a/compiler/rustc_monomorphize/src/errors.rs +++ b/compiler/rustc_monomorphize/src/errors.rs @@ -32,13 +32,13 @@ pub struct TypeLengthLimit { pub type_length: usize, } -pub struct UnusedGenericParams { +pub struct UnusedGenericParamsHint { pub span: Span, pub param_spans: Vec, pub param_names: Vec, } -impl IntoDiagnostic<'_> for UnusedGenericParams { +impl IntoDiagnostic<'_> for UnusedGenericParamsHint { #[track_caller] fn into_diagnostic( self, diff --git a/compiler/rustc_monomorphize/src/polymorphize.rs b/compiler/rustc_monomorphize/src/polymorphize.rs index 703ed09a254a..60fbdf2fc7a6 100644 --- a/compiler/rustc_monomorphize/src/polymorphize.rs +++ b/compiler/rustc_monomorphize/src/polymorphize.rs @@ -6,7 +6,6 @@ //! for their size, offset of a field, etc.). use rustc_hir::{def::DefKind, def_id::DefId, ConstContext}; -use rustc_index::bit_set::FiniteBitSet; use rustc_middle::mir::{ self, visit::{TyContext, Visitor}, @@ -17,12 +16,12 @@ use rustc_middle::ty::{ query::Providers, subst::SubstsRef, visit::{TypeSuperVisitable, TypeVisitable, TypeVisitor}, - Const, Ty, TyCtxt, + Const, Ty, TyCtxt, UnusedGenericParams, }; use rustc_span::symbol::sym; use std::ops::ControlFlow; -use crate::errors::UnusedGenericParams; +use crate::errors::UnusedGenericParamsHint; /// Provide implementations of queries relating to polymorphization analysis. pub fn provide(providers: &mut Providers) { @@ -36,16 +35,16 @@ pub fn provide(providers: &mut Providers) { fn unused_generic_params<'tcx>( tcx: TyCtxt<'tcx>, instance: ty::InstanceDef<'tcx>, -) -> FiniteBitSet { +) -> UnusedGenericParams { if !tcx.sess.opts.unstable_opts.polymorphize { // If polymorphization disabled, then all parameters are used. - return FiniteBitSet::new_empty(); + return UnusedGenericParams::new_all_used(); } let def_id = instance.def_id(); // Exit early if this instance should not be polymorphized. if !should_polymorphize(tcx, def_id, instance) { - return FiniteBitSet::new_empty(); + return UnusedGenericParams::new_all_used(); } let generics = tcx.generics_of(def_id); @@ -53,14 +52,13 @@ fn unused_generic_params<'tcx>( // Exit early when there are no parameters to be unused. if generics.count() == 0 { - return FiniteBitSet::new_empty(); + return UnusedGenericParams::new_all_used(); } // Create a bitset with N rightmost ones for each parameter. let generics_count: u32 = generics.count().try_into().expect("more generic parameters than can fit into a `u32`"); - let mut unused_parameters = FiniteBitSet::::new_empty(); - unused_parameters.set_range(0..generics_count); + let mut unused_parameters = UnusedGenericParams::new_all_unused(generics_count); debug!(?unused_parameters, "(start)"); mark_used_by_default_parameters(tcx, def_id, generics, &mut unused_parameters); @@ -78,7 +76,7 @@ fn unused_generic_params<'tcx>( debug!(?unused_parameters, "(end)"); // Emit errors for debugging and testing if enabled. - if !unused_parameters.is_empty() { + if !unused_parameters.all_used() { emit_unused_generic_params_error(tcx, def_id, generics, &unused_parameters); } @@ -136,13 +134,13 @@ fn mark_used_by_default_parameters<'tcx>( tcx: TyCtxt<'tcx>, def_id: DefId, generics: &'tcx ty::Generics, - unused_parameters: &mut FiniteBitSet, + unused_parameters: &mut UnusedGenericParams, ) { match tcx.def_kind(def_id) { DefKind::Closure | DefKind::Generator => { for param in &generics.params { debug!(?param, "(closure/gen)"); - unused_parameters.clear(param.index); + unused_parameters.mark_used(param.index); } } DefKind::Mod @@ -178,7 +176,7 @@ fn mark_used_by_default_parameters<'tcx>( for param in &generics.params { debug!(?param, "(other)"); if let ty::GenericParamDefKind::Lifetime = param.kind { - unused_parameters.clear(param.index); + unused_parameters.mark_used(param.index); } } } @@ -196,7 +194,7 @@ fn emit_unused_generic_params_error<'tcx>( tcx: TyCtxt<'tcx>, def_id: DefId, generics: &'tcx ty::Generics, - unused_parameters: &FiniteBitSet, + unused_parameters: &UnusedGenericParams, ) { let base_def_id = tcx.typeck_root_def_id(def_id); if !tcx.has_attr(base_def_id, sym::rustc_polymorphize_error) { @@ -213,7 +211,7 @@ fn emit_unused_generic_params_error<'tcx>( let mut next_generics = Some(generics); while let Some(generics) = next_generics { for param in &generics.params { - if unused_parameters.contains(param.index).unwrap_or(false) { + if unused_parameters.is_unused(param.index) { debug!(?param); let def_span = tcx.def_span(param.def_id); param_spans.push(def_span); @@ -224,14 +222,14 @@ fn emit_unused_generic_params_error<'tcx>( next_generics = generics.parent.map(|did| tcx.generics_of(did)); } - tcx.sess.emit_err(UnusedGenericParams { span: fn_span, param_spans, param_names }); + tcx.sess.emit_err(UnusedGenericParamsHint { span: fn_span, param_spans, param_names }); } /// Visitor used to aggregate generic parameter uses. struct MarkUsedGenericParams<'a, 'tcx> { tcx: TyCtxt<'tcx>, def_id: DefId, - unused_parameters: &'a mut FiniteBitSet, + unused_parameters: &'a mut UnusedGenericParams, } impl<'a, 'tcx> MarkUsedGenericParams<'a, 'tcx> { @@ -244,7 +242,7 @@ impl<'a, 'tcx> MarkUsedGenericParams<'a, 'tcx> { debug!(?self.unused_parameters, ?unused); for (i, arg) in substs.iter().enumerate() { let i = i.try_into().unwrap(); - if !unused.contains(i).unwrap_or(false) { + if unused.is_used(i) { arg.visit_with(self); } } @@ -308,7 +306,7 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for MarkUsedGenericParams<'a, 'tcx> { match c.kind() { ty::ConstKind::Param(param) => { debug!(?param); - self.unused_parameters.clear(param.index); + self.unused_parameters.mark_used(param.index); ControlFlow::CONTINUE } ty::ConstKind::Unevaluated(ty::UnevaluatedConst { def, substs }) From a4b859e35f2e055e6866d58e72477e4cf256afa0 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Thu, 1 Dec 2022 22:00:19 +0100 Subject: [PATCH 339/478] Delete unused polymorphization code --- .../rustc_monomorphize/src/polymorphize.rs | 47 +------------------ 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/compiler/rustc_monomorphize/src/polymorphize.rs b/compiler/rustc_monomorphize/src/polymorphize.rs index 60fbdf2fc7a6..c8fc69eb856a 100644 --- a/compiler/rustc_monomorphize/src/polymorphize.rs +++ b/compiler/rustc_monomorphize/src/polymorphize.rs @@ -340,55 +340,10 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for MarkUsedGenericParams<'a, 'tcx> { } ty::Param(param) => { debug!(?param); - self.unused_parameters.clear(param.index); + self.unused_parameters.mark_used(param.index); ControlFlow::CONTINUE } _ => ty.super_visit_with(self), } } } - -/// Visitor used to check if a generic parameter is used. -struct HasUsedGenericParams<'a> { - unused_parameters: &'a FiniteBitSet, -} - -impl<'a, 'tcx> TypeVisitor<'tcx> for HasUsedGenericParams<'a> { - type BreakTy = (); - - #[instrument(level = "debug", skip(self))] - fn visit_const(&mut self, c: Const<'tcx>) -> ControlFlow { - if !c.has_non_region_param() { - return ControlFlow::CONTINUE; - } - - match c.kind() { - ty::ConstKind::Param(param) => { - if self.unused_parameters.contains(param.index).unwrap_or(false) { - ControlFlow::CONTINUE - } else { - ControlFlow::BREAK - } - } - _ => c.super_visit_with(self), - } - } - - #[instrument(level = "debug", skip(self))] - fn visit_ty(&mut self, ty: Ty<'tcx>) -> ControlFlow { - if !ty.has_non_region_param() { - return ControlFlow::CONTINUE; - } - - match ty.kind() { - ty::Param(param) => { - if self.unused_parameters.contains(param.index).unwrap_or(false) { - ControlFlow::CONTINUE - } else { - ControlFlow::BREAK - } - } - _ => ty.super_visit_with(self), - } - } -} From f769d34291e489db19d3c972348ddb24b6b32481 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Mon, 9 Jan 2023 18:14:28 +0000 Subject: [PATCH 340/478] Assert defining anchor is set in take_opaque_types --- compiler/rustc_borrowck/src/region_infer/opaque_types.rs | 2 +- compiler/rustc_borrowck/src/type_check/mod.rs | 2 +- compiler/rustc_const_eval/src/util/compare_types.rs | 2 +- compiler/rustc_hir_analysis/src/check/check.rs | 2 +- compiler/rustc_hir_typeck/src/writeback.rs | 3 +-- compiler/rustc_infer/src/infer/canonical/query_response.rs | 5 +---- compiler/rustc_infer/src/infer/mod.rs | 6 ++++++ compiler/rustc_infer/src/infer/opaque_types/table.rs | 5 ----- compiler/rustc_trait_selection/src/traits/mod.rs | 3 --- compiler/rustc_traits/src/codegen.rs | 2 +- 10 files changed, 13 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs index d82d4cc39fb1..4fe14c7af2fa 100644 --- a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs +++ b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs @@ -318,7 +318,7 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> { // This is still required for many(half of the tests in ui/type-alias-impl-trait) // tests to pass - let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let _ = infcx.take_opaque_types(); if errors.is_empty() { definition_ty diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index 247607ff29e2..d9c1986456e8 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -208,7 +208,7 @@ pub(crate) fn type_check<'mir, 'tcx>( ); translate_outlives_facts(&mut checker); - let opaque_type_values = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let opaque_type_values = infcx.take_opaque_types(); let opaque_type_values = opaque_type_values .into_iter() diff --git a/compiler/rustc_const_eval/src/util/compare_types.rs b/compiler/rustc_const_eval/src/util/compare_types.rs index be786569cde3..f5f3d5de6b5a 100644 --- a/compiler/rustc_const_eval/src/util/compare_types.rs +++ b/compiler/rustc_const_eval/src/util/compare_types.rs @@ -58,6 +58,6 @@ pub fn is_subtype<'tcx>( // even if they're constrained in our current function. // // It seems very unlikely that this hides any bugs. - let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let _ = infcx.take_opaque_types(); errors.is_empty() } diff --git a/compiler/rustc_hir_analysis/src/check/check.rs b/compiler/rustc_hir_analysis/src/check/check.rs index 28cd18bbb8e8..13b3d53ca368 100644 --- a/compiler/rustc_hir_analysis/src/check/check.rs +++ b/compiler/rustc_hir_analysis/src/check/check.rs @@ -475,7 +475,7 @@ fn check_opaque_meets_bounds<'tcx>( } } // Clean up after ourselves - let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let _ = infcx.take_opaque_types(); } fn is_enum_of_nonnullable_ptr<'tcx>( diff --git a/compiler/rustc_hir_typeck/src/writeback.rs b/compiler/rustc_hir_typeck/src/writeback.rs index bb956ddc7804..8c24b6006444 100644 --- a/compiler/rustc_hir_typeck/src/writeback.rs +++ b/compiler/rustc_hir_typeck/src/writeback.rs @@ -534,8 +534,7 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> { #[instrument(skip(self), level = "debug")] fn visit_opaque_types(&mut self) { - let opaque_types = - self.fcx.infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let opaque_types = self.fcx.infcx.take_opaque_types(); for (opaque_type_key, decl) in opaque_types { let hidden_type = self.resolve(decl.hidden_type, &decl.hidden_type.span); let opaque_type_key = self.resolve(opaque_type_key, &decl.hidden_type.span); diff --git a/compiler/rustc_infer/src/infer/canonical/query_response.rs b/compiler/rustc_infer/src/infer/canonical/query_response.rs index a722613e3310..d85af830de86 100644 --- a/compiler/rustc_infer/src/infer/canonical/query_response.rs +++ b/compiler/rustc_infer/src/infer/canonical/query_response.rs @@ -156,10 +156,7 @@ impl<'tcx> InferCtxt<'tcx> { /// As the new solver does canonicalization slightly differently, this is also used there /// for now. This should hopefully change fairly soon. pub fn take_opaque_types_for_query_response(&self) -> Vec<(Ty<'tcx>, Ty<'tcx>)> { - self.inner - .borrow_mut() - .opaque_type_storage - .take_opaque_types() + std::mem::take(&mut self.inner.borrow_mut().opaque_type_storage.opaque_types) .into_iter() .map(|(k, v)| (self.tcx.mk_opaque(k.def_id.to_def_id(), k.substs), v.hidden_type.ty)) .collect() diff --git a/compiler/rustc_infer/src/infer/mod.rs b/compiler/rustc_infer/src/infer/mod.rs index a9de74d78cb6..192addb59d92 100644 --- a/compiler/rustc_infer/src/infer/mod.rs +++ b/compiler/rustc_infer/src/infer/mod.rs @@ -1338,6 +1338,12 @@ impl<'tcx> InferCtxt<'tcx> { var_infos } + #[instrument(level = "debug", skip(self), ret)] + pub fn take_opaque_types(&self) -> opaque_types::OpaqueTypeMap<'tcx> { + debug_assert_ne!(self.defining_use_anchor, DefiningAnchor::Error); + std::mem::take(&mut self.inner.borrow_mut().opaque_type_storage.opaque_types) + } + pub fn ty_to_string(&self, t: Ty<'tcx>) -> String { self.resolve_vars_if_possible(t).to_string() } diff --git a/compiler/rustc_infer/src/infer/opaque_types/table.rs b/compiler/rustc_infer/src/infer/opaque_types/table.rs index c146902d594a..ae4b85c8799e 100644 --- a/compiler/rustc_infer/src/infer/opaque_types/table.rs +++ b/compiler/rustc_infer/src/infer/opaque_types/table.rs @@ -29,11 +29,6 @@ impl<'tcx> OpaqueTypeStorage<'tcx> { } } - #[instrument(level = "debug", ret)] - pub fn take_opaque_types(&mut self) -> OpaqueTypeMap<'tcx> { - std::mem::take(&mut self.opaque_types) - } - #[inline] pub(crate) fn with_log<'a>( &'a mut self, diff --git a/compiler/rustc_trait_selection/src/traits/mod.rs b/compiler/rustc_trait_selection/src/traits/mod.rs index c30531fa9066..58d83d57d430 100644 --- a/compiler/rustc_trait_selection/src/traits/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/mod.rs @@ -450,9 +450,6 @@ pub fn impossible_predicates<'tcx>( } let errors = ocx.select_all_or_error(); - // Clean up after ourselves - let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); - let result = !errors.is_empty(); debug!("impossible_predicates = {:?}", result); result diff --git a/compiler/rustc_traits/src/codegen.rs b/compiler/rustc_traits/src/codegen.rs index f8f74b732efd..f127ef8343f9 100644 --- a/compiler/rustc_traits/src/codegen.rs +++ b/compiler/rustc_traits/src/codegen.rs @@ -82,7 +82,7 @@ pub fn codegen_select_candidate<'tcx>( // Opaque types may have gotten their hidden types constrained, but we can ignore them safely // as they will get constrained elsewhere, too. // (ouz-a) This is required for `type-alias-impl-trait/assoc-projection-ice.rs` to pass - let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types(); + let _ = infcx.take_opaque_types(); Ok(&*tcx.arena.alloc(impl_source)) } From 9c23629158d863068f51a7f316dbe15a76d7e602 Mon Sep 17 00:00:00 2001 From: Tyler Mandry Date: Mon, 9 Jan 2023 13:23:50 -0500 Subject: [PATCH 341/478] Add issue number to FIXMEs --- compiler/rustc_target/src/spec/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index d4543bce3496..2c3aa6720113 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1109,10 +1109,10 @@ supported_targets! { ("x86_64-apple-darwin", x86_64_apple_darwin), ("i686-apple-darwin", i686_apple_darwin), - // FIXME(fuchsia): Remove aarch64-fuchsia in favor of aarch64-unknown-fuchsia + // FIXME(#106649): Remove aarch64-fuchsia in favor of aarch64-unknown-fuchsia ("aarch64-fuchsia", aarch64_fuchsia), ("aarch64-unknown-fuchsia", aarch64_unknown_fuchsia), - // FIXME(fuchsia): Remove x86_64-fuchsia in favor of x86_64-unknown-fuchsia + // FIXME(#106649): Remove x86_64-fuchsia in favor of x86_64-unknown-fuchsia ("x86_64-fuchsia", x86_64_fuchsia), ("x86_64-unknown-fuchsia", x86_64_unknown_fuchsia), From 53c12e085ab9595dff369f26046038afa20e8e5c Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Mon, 9 Jan 2023 21:29:42 +0100 Subject: [PATCH 342/478] hash xor peq --- clippy_lints/src/derive.rs | 10 ++-------- tests/ui/derive_hash_xor_eq.rs | 19 ------------------ tests/ui/derive_hash_xor_eq.stderr | 32 +----------------------------- 3 files changed, 3 insertions(+), 58 deletions(-) diff --git a/clippy_lints/src/derive.rs b/clippy_lints/src/derive.rs index cf3483d4c00b..e39a31a8c725 100644 --- a/clippy_lints/src/derive.rs +++ b/clippy_lints/src/derive.rs @@ -243,7 +243,7 @@ fn check_hash_peq<'tcx>( cx.tcx.for_each_relevant_impl(peq_trait_def_id, ty, |impl_id| { let peq_is_automatically_derived = cx.tcx.has_attr(impl_id, sym::automatically_derived); - if peq_is_automatically_derived == hash_is_automatically_derived { + if !hash_is_automatically_derived || peq_is_automatically_derived { return; } @@ -252,17 +252,11 @@ fn check_hash_peq<'tcx>( // Only care about `impl PartialEq for Foo` // For `impl PartialEq for A, input_types is [A, B] if trait_ref.substs.type_at(1) == ty { - let mess = if peq_is_automatically_derived { - "you are implementing `Hash` explicitly but have derived `PartialEq`" - } else { - "you are deriving `Hash` but have implemented `PartialEq` explicitly" - }; - span_lint_and_then( cx, DERIVE_HASH_XOR_EQ, span, - mess, + "you are deriving `Hash` but have implemented `PartialEq` explicitly", |diag| { if let Some(local_def_id) = impl_id.as_local() { let hir_id = cx.tcx.hir().local_def_id_to_hir_id(local_def_id); diff --git a/tests/ui/derive_hash_xor_eq.rs b/tests/ui/derive_hash_xor_eq.rs index 813ddc566464..0804e3cffa1a 100644 --- a/tests/ui/derive_hash_xor_eq.rs +++ b/tests/ui/derive_hash_xor_eq.rs @@ -34,23 +34,4 @@ impl std::hash::Hash for Bah { fn hash(&self, _: &mut H) {} } -#[derive(PartialEq)] -struct Foo2; - -trait Hash {} - -// We don't want to lint on user-defined traits called `Hash` -impl Hash for Foo2 {} - -mod use_hash { - use std::hash::{Hash, Hasher}; - - #[derive(PartialEq)] - struct Foo3; - - impl Hash for Foo3 { - fn hash(&self, _: &mut H) {} - } -} - fn main() {} diff --git a/tests/ui/derive_hash_xor_eq.stderr b/tests/ui/derive_hash_xor_eq.stderr index 16c92397804e..16965aa42d8c 100644 --- a/tests/ui/derive_hash_xor_eq.stderr +++ b/tests/ui/derive_hash_xor_eq.stderr @@ -25,35 +25,5 @@ LL | impl PartialEq for Baz { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the derive macro `Hash` (in Nightly builds, run with -Z macro-backtrace for more info) -error: you are implementing `Hash` explicitly but have derived `PartialEq` - --> $DIR/derive_hash_xor_eq.rs:33:1 - | -LL | / impl std::hash::Hash for Bah { -LL | | fn hash(&self, _: &mut H) {} -LL | | } - | |_^ - | -note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:30:10 - | -LL | #[derive(PartialEq)] - | ^^^^^^^^^ - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: you are implementing `Hash` explicitly but have derived `PartialEq` - --> $DIR/derive_hash_xor_eq.rs:51:5 - | -LL | / impl Hash for Foo3 { -LL | | fn hash(&self, _: &mut H) {} -LL | | } - | |_____^ - | -note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:48:14 - | -LL | #[derive(PartialEq)] - | ^^^^^^^^^ - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 4 previous errors +error: aborting due to 2 previous errors From 05c1ac0215ef282c9ed6df6a5f758d824ee1ace9 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sat, 31 Dec 2022 01:56:59 +0000 Subject: [PATCH 343/478] Collect backtraces for delayed span-bugs too --- compiler/rustc_driver/src/lib.rs | 6 ++--- compiler/rustc_errors/src/lib.rs | 38 +++++++++++++------------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/compiler/rustc_driver/src/lib.rs b/compiler/rustc_driver/src/lib.rs index 3cbe0052359b..fcb73c64356f 100644 --- a/compiler/rustc_driver/src/lib.rs +++ b/compiler/rustc_driver/src/lib.rs @@ -1196,8 +1196,8 @@ static DEFAULT_HOOK: LazyLock) + Sync + Send + }; // Invoke the default handler, which prints the actual panic message and optionally a backtrace - // Don't do this for `GoodPathBug`, which already emits its own more useful backtrace. - if !info.payload().is::() { + // Don't do this for delayed bugs, which already emit their own more useful backtrace. + if !info.payload().is::() { (*DEFAULT_HOOK)(info); // Separate the output with an empty line @@ -1235,7 +1235,7 @@ pub fn report_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str) { // a .span_bug or .bug call has already printed what // it wants to print. if !info.payload().is::() - && !info.payload().is::() + && !info.payload().is::() { let mut d = rustc_errors::Diagnostic::new(rustc_errors::Level::Bug, "unexpected panic"); handler.emit_diagnostic(&mut d); diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index b4d23e96f8f4..66e5c41f56c2 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -40,7 +40,6 @@ use rustc_span::source_map::SourceMap; use rustc_span::HashStableContext; use rustc_span::{Loc, Span}; -use std::any::Any; use std::borrow::Cow; use std::fmt; use std::hash::Hash; @@ -364,9 +363,9 @@ pub use rustc_span::fatal_error::{FatalError, FatalErrorMarker}; /// or `.span_bug` rather than a failed assertion, etc. pub struct ExplicitBug; -/// Signifies that the compiler died with an explicit call to `.delay_good_path_bug` +/// Signifies that the compiler died with an explicit call to `.delay_*_bug` /// rather than a failed assertion, etc. -pub struct GoodPathBug; +pub struct DelayedBugPanic; pub use diagnostic::{ AddToDiagnostic, DecorateLint, Diagnostic, DiagnosticArg, DiagnosticArgValue, DiagnosticId, @@ -399,7 +398,7 @@ struct HandlerInner { warn_count: usize, deduplicated_err_count: usize, emitter: Box, - delayed_span_bugs: Vec, + delayed_span_bugs: Vec, delayed_good_path_bugs: Vec, /// This flag indicates that an expected diagnostic was emitted and suppressed. /// This is used for the `delayed_good_path_bugs` check. @@ -505,11 +504,7 @@ impl Drop for HandlerInner { if !self.has_errors() { let bugs = std::mem::replace(&mut self.delayed_span_bugs, Vec::new()); - self.flush_delayed( - bugs, - "no errors encountered even though `delay_span_bug` issued", - ExplicitBug, - ); + self.flush_delayed(bugs, "no errors encountered even though `delay_span_bug` issued"); } // FIXME(eddyb) this explains what `delayed_good_path_bugs` are! @@ -520,9 +515,8 @@ impl Drop for HandlerInner { if !self.has_any_message() && !self.suppressed_expected_diag { let bugs = std::mem::replace(&mut self.delayed_good_path_bugs, Vec::new()); self.flush_delayed( - bugs.into_iter().map(DelayedDiagnostic::decorate), + bugs, "no warnings or errors encountered even though `delayed_good_path_bugs` issued", - GoodPathBug, ); } @@ -1223,11 +1217,7 @@ impl Handler { pub fn flush_delayed(&self) { let mut inner = self.inner.lock(); let bugs = std::mem::replace(&mut inner.delayed_span_bugs, Vec::new()); - inner.flush_delayed( - bugs, - "no errors encountered even though `delay_span_bug` issued", - ExplicitBug, - ); + inner.flush_delayed(bugs, "no errors encountered even though `delay_span_bug` issued"); } } @@ -1287,7 +1277,9 @@ impl HandlerInner { // once *any* errors were emitted (and truncate `delayed_span_bugs` // when an error is first emitted, also), but maybe there's a case // in which that's not sound? otherwise this is really inefficient. - self.delayed_span_bugs.push(diagnostic.clone()); + let backtrace = std::backtrace::Backtrace::force_capture(); + self.delayed_span_bugs + .push(DelayedDiagnostic::with_backtrace(diagnostic.clone(), backtrace)); if !self.flags.report_delayed_bugs { return Some(ErrorGuaranteed::unchecked_claim_error_was_emitted()); @@ -1562,7 +1554,6 @@ impl HandlerInner { } let mut diagnostic = Diagnostic::new(Level::DelayedBug, msg); diagnostic.set_span(sp.into()); - diagnostic.note(&format!("delayed at {}", std::panic::Location::caller())); self.emit_diagnostic(&mut diagnostic).unwrap() } @@ -1605,12 +1596,13 @@ impl HandlerInner { fn flush_delayed( &mut self, - bugs: impl IntoIterator, + bugs: impl IntoIterator, explanation: impl Into + Copy, - panic_with: impl Any + Send + 'static, ) { let mut no_bugs = true; - for mut bug in bugs { + for bug in bugs { + let mut bug = bug.decorate(); + if no_bugs { // Put the overall explanation before the `DelayedBug`s, to // frame them better (e.g. separate warnings from them). @@ -1633,9 +1625,9 @@ impl HandlerInner { self.emit_diagnostic(&mut bug); } - // Panic with `ExplicitBug` to avoid "unexpected panic" messages. + // Panic with `DelayedBugPanic` to avoid "unexpected panic" messages. if !no_bugs { - panic::panic_any(panic_with); + panic::panic_any(DelayedBugPanic); } } From 5a90537b62573721c42a83c024d3d7ad031b758b Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 28 Aug 2022 13:37:00 -0400 Subject: [PATCH 344/478] add: `lints.rs` add: `lints.rs` refactor: move `InvalidAtomicOrderingDiag` to `lints.rs` --- compiler/rustc_lint/src/lib.rs | 3 +++ compiler/rustc_lint/src/lints.rs | 11 +++++++++++ compiler/rustc_lint/src/types.rs | 11 +---------- 3 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 compiler/rustc_lint/src/lints.rs diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs index 1275d6f223c7..afcf8b54322f 100644 --- a/compiler/rustc_lint/src/lib.rs +++ b/compiler/rustc_lint/src/lib.rs @@ -38,6 +38,8 @@ #![feature(never_type)] #![feature(rustc_attrs)] #![recursion_limit = "256"] +// #![deny(rustc::untranslatable_diagnostic)] +// #![deny(rustc::diagnostic_outside_of_impl)] #[macro_use] extern crate rustc_middle; @@ -60,6 +62,7 @@ mod internal; mod late; mod let_underscore; mod levels; +mod lints; mod methods; mod non_ascii_idents; mod non_fmt_panic; diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs new file mode 100644 index 000000000000..1dc23ad9e921 --- /dev/null +++ b/compiler/rustc_lint/src/lints.rs @@ -0,0 +1,11 @@ +use rustc_macros::LintDiagnostic; +use rustc_span::{Symbol, Span}; + +#[derive(LintDiagnostic)] +#[diag(lint_atomic_ordering_invalid)] +#[help] +pub struct InvalidAtomicOrderingDiag { + pub method: Symbol, + #[label] + pub fail_order_arg_span: Span, +} diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index fa415243ba06..7f3a501aeb0d 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1,3 +1,4 @@ +use crate::lints::InvalidAtomicOrderingDiag; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_attr as attr; @@ -5,7 +6,6 @@ use rustc_data_structures::fx::FxHashSet; use rustc_errors::{fluent, Applicability, DiagnosticMessage}; use rustc_hir as hir; use rustc_hir::{is_range_literal, Expr, ExprKind, Node}; -use rustc_macros::LintDiagnostic; use rustc_middle::ty::layout::{IntegerExt, LayoutOf, SizeSkeleton}; use rustc_middle::ty::subst::SubstsRef; use rustc_middle::ty::{self, AdtKind, DefIdTree, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable}; @@ -1550,15 +1550,6 @@ impl InvalidAtomicOrdering { let Some(fail_ordering) = Self::match_ordering(cx, fail_order_arg) else { return }; if matches!(fail_ordering, sym::Release | sym::AcqRel) { - #[derive(LintDiagnostic)] - #[diag(lint_atomic_ordering_invalid)] - #[help] - struct InvalidAtomicOrderingDiag { - method: Symbol, - #[label] - fail_order_arg_span: Span, - } - cx.emit_spanned_lint( INVALID_ATOMIC_ORDERING, fail_order_arg.span, From d44ccaa56f2ddebfe5794330876325d3b6b83869 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 28 Aug 2022 19:07:58 -0400 Subject: [PATCH 345/478] migrate: `types.rs` --- compiler/rustc_lint/src/lints.rs | 141 ++++++++++++++++- compiler/rustc_lint/src/types.rs | 263 +++++++++++++------------------ 2 files changed, 249 insertions(+), 155 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 1dc23ad9e921..ce93616da131 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,5 +1,142 @@ -use rustc_macros::LintDiagnostic; -use rustc_span::{Symbol, Span}; +use rustc_errors::{fluent, AddSubdiagnostic, DecorateLint, EmissionGuarantee}; +use rustc_macros::{LintDiagnostic, SessionSubdiagnostic}; +use rustc_span::{Span, Symbol}; + +#[derive(LintDiagnostic)] +#[diag(lint_range_endpoint_out_of_range)] +pub struct RangeEndpointOutOfRange<'a> { + pub ty: &'a str, + #[suggestion(code = "{start}..={literal}{suffix}", applicability = "machine-applicable")] + pub suggestion: Span, + pub start: String, + pub literal: u128, + pub suffix: &'a str, +} + +#[derive(LintDiagnostic)] +#[diag(lint_overflowing_bin_hex)] +pub struct OverflowingBinHex<'a> { + pub ty: &'a str, + pub lit: String, + pub dec: u128, + pub actually: String, + #[subdiagnostic] + pub sign: OverflowingBinHexSign, + #[subdiagnostic] + pub sub: Option>, +} + +pub enum OverflowingBinHexSign { + Positive, + Negative, +} + +impl AddSubdiagnostic for OverflowingBinHexSign { + fn add_to_diagnostic(self, diag: &mut rustc_errors::Diagnostic) { + match self { + OverflowingBinHexSign::Positive => { + diag.note(fluent::positive_note); + } + OverflowingBinHexSign::Negative => { + diag.note(fluent::negative_note); + diag.note(fluent::negative_becomes_note); + } + } + } +} + +#[derive(SessionSubdiagnostic)] +pub enum OverflowingBinHexSub<'a> { + #[suggestion( + suggestion, + code = "{sans_suffix}{suggestion_ty}", + applicability = "machine-applicable" + )] + Suggestion { + #[primary_span] + span: Span, + suggestion_ty: &'a str, + sans_suffix: &'a str, + }, + #[help(help)] + Help { suggestion_ty: &'a str }, +} + +pub struct OverflowingInt<'a> { + pub ty: &'a str, + pub lit: String, + pub min: i128, + pub max: u128, + pub suggestion_ty: Option<&'a str>, +} + +// FIXME: refactor with `Option<&'a str>` in macro +impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for OverflowingInt<'a> { + fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { + let mut diag = diag.build(fluent::lint_overflowing_int); + diag.set_arg("ty", self.ty); + diag.set_arg("lit", self.lit); + diag.set_arg("min", self.min); + diag.set_arg("max", self.max); + diag.note(fluent::note); + if let Some(suggestion_ty) = self.suggestion_ty { + diag.set_arg("suggestion_ty", suggestion_ty); + diag.help(fluent::help); + } + diag.emit(); + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_only_cast_u8_to_char)] +pub struct OnlyCastu8ToChar { + #[suggestion(code = "'\\u{{{literal:X}}}'", applicability = "machine-applicable")] + pub span: Span, + pub literal: u128, +} + +#[derive(LintDiagnostic)] +#[diag(lint_overflowing_uint)] +#[note] +pub struct OverflowingUInt<'a> { + pub ty: &'a str, + pub lit: String, + pub min: u128, + pub max: u128, +} + +#[derive(LintDiagnostic)] +#[diag(lint_overflowing_literal)] +#[note] +pub struct OverflowingLiteral<'a> { + pub ty: &'a str, + pub lit: String, +} + +#[derive(LintDiagnostic)] +#[diag(lint_unused_comparisons)] +pub struct UnusedComparisons; + +#[derive(LintDiagnostic)] +#[diag(lint_variant_size_differences)] +pub struct VariantSizeDifferencesDiag { + pub largest: u64, +} + +#[derive(LintDiagnostic)] +#[diag(lint_atomic_ordering_load)] +#[help] +pub struct AtomicOrderingLoad; + +#[derive(LintDiagnostic)] +#[diag(lint_atomic_ordering_store)] +#[help] +pub struct AtomicOrderingStore; + +#[derive(LintDiagnostic)] +#[diag(lint_atomic_ordering_fence)] +#[help] +pub struct AtomicOrderingFence; #[derive(LintDiagnostic)] #[diag(lint_atomic_ordering_invalid)] diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index 7f3a501aeb0d..46e957d15931 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1,9 +1,16 @@ -use crate::lints::InvalidAtomicOrderingDiag; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ + AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, InvalidAtomicOrderingDiag, + OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, OverflowingBinHexSub, + OverflowingInt, OverflowingLiteral, OverflowingUInt, RangeEndpointOutOfRange, + UnusedComparisons, VariantSizeDifferencesDiag, +}; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_attr as attr; use rustc_data_structures::fx::FxHashSet; -use rustc_errors::{fluent, Applicability, DiagnosticMessage}; +use rustc_errors::{fluent, DiagnosticMessage}; use rustc_hir as hir; use rustc_hir::{is_range_literal, Expr, ExprKind, Node}; use rustc_middle::ty::layout::{IntegerExt, LayoutOf, SizeSkeleton}; @@ -146,32 +153,22 @@ fn lint_overflowing_range_endpoint<'tcx>( }; let Ok(start) = cx.sess().source_map().span_to_snippet(eps[0].span) else { return false }; - cx.struct_span_lint( + use rustc_ast::{LitIntType, LitKind}; + let suffix = match lit.node { + LitKind::Int(_, LitIntType::Signed(s)) => s.name_str(), + LitKind::Int(_, LitIntType::Unsigned(s)) => s.name_str(), + LitKind::Int(_, LitIntType::Unsuffixed) => "", + _ => bug!(), + }; + cx.emit_spanned_lint( OVERFLOWING_LITERALS, struct_expr.span, - fluent::lint_range_endpoint_out_of_range, - |lint| { - use ast::{LitIntType, LitKind}; - - lint.set_arg("ty", ty); - - // We need to preserve the literal's suffix, - // as it may determine typing information. - let suffix = match lit.node { - LitKind::Int(_, LitIntType::Signed(s)) => s.name_str(), - LitKind::Int(_, LitIntType::Unsigned(s)) => s.name_str(), - LitKind::Int(_, LitIntType::Unsuffixed) => "", - _ => bug!(), - }; - let suggestion = format!("{}..={}{}", start, lit_val - 1, suffix); - lint.span_suggestion( - struct_expr.span, - fluent::suggestion, - suggestion, - Applicability::MachineApplicable, - ); - - lint + RangeEndpointOutOfRange { + ty, + suggestion: struct_expr.span, + start, + literal: lit_val - 1, + suffix, }, ); @@ -228,58 +225,37 @@ fn report_bin_hex_error( val: u128, negative: bool, ) { - cx.struct_span_lint( - OVERFLOWING_LITERALS, - expr.span, - fluent::lint_overflowing_bin_hex, - |lint| { - let (t, actually) = match ty { - attr::IntType::SignedInt(t) => { - let actually = if negative { - -(size.sign_extend(val) as i128) - } else { - size.sign_extend(val) as i128 - }; - (t.name_str(), actually.to_string()) - } - attr::IntType::UnsignedInt(t) => { - let actually = size.truncate(val); - (t.name_str(), actually.to_string()) - } - }; - - if negative { - // If the value is negative, - // emits a note about the value itself, apart from the literal. - lint.note(fluent::negative_note); - lint.note(fluent::negative_becomes_note); + let (t, actually) = match ty { + attr::IntType::SignedInt(t) => { + let actually = if negative { + -(size.sign_extend(val) as i128) } else { - lint.note(fluent::positive_note); + size.sign_extend(val) as i128 + }; + (t.name_str(), actually.to_string()) + } + attr::IntType::UnsignedInt(t) => { + let actually = size.truncate(val); + (t.name_str(), actually.to_string()) + } + }; + let sign = + if negative { OverflowingBinHexSign::Negative } else { OverflowingBinHexSign::Positive }; + let sub = get_type_suggestion(cx.typeck_results().node_type(expr.hir_id), val, negative).map( + |suggestion_ty| { + if let Some(pos) = repr_str.chars().position(|c| c == 'i' || c == 'u') { + let (sans_suffix, _) = repr_str.split_at(pos); + OverflowingBinHexSub::Suggestion { span: expr.span, suggestion_ty, sans_suffix } + } else { + OverflowingBinHexSub::Help { suggestion_ty } } - if let Some(sugg_ty) = - get_type_suggestion(cx.typeck_results().node_type(expr.hir_id), val, negative) - { - lint.set_arg("suggestion_ty", sugg_ty); - if let Some(pos) = repr_str.chars().position(|c| c == 'i' || c == 'u') { - let (sans_suffix, _) = repr_str.split_at(pos); - lint.span_suggestion( - expr.span, - fluent::suggestion, - format!("{}{}", sans_suffix, sugg_ty), - Applicability::MachineApplicable, - ); - } else { - lint.help(fluent::help); - } - } - lint.set_arg("ty", t) - .set_arg("lit", repr_str) - .set_arg("dec", val) - .set_arg("actually", actually); - - lint }, ); + cx.emit_spanned_lint( + OVERFLOWING_LITERALS, + expr.span, + OverflowingBinHex { ty: t, lit: repr_str.clone(), dec: val, actually, sign, sub }, + ) } // This function finds the next fitting type and generates a suggestion string. @@ -363,28 +339,25 @@ fn lint_int_literal<'tcx>( return; } - cx.struct_span_lint(OVERFLOWING_LITERALS, e.span, fluent::lint_overflowing_int, |lint| { - lint.set_arg("ty", t.name_str()) - .set_arg( - "lit", - cx.sess() - .source_map() - .span_to_snippet(lit.span) - .expect("must get snippet from literal"), - ) - .set_arg("min", min) - .set_arg("max", max) - .note(fluent::note); - - if let Some(sugg_ty) = - get_type_suggestion(cx.typeck_results().node_type(e.hir_id), v, negative) - { - lint.set_arg("suggestion_ty", sugg_ty); - lint.help(fluent::help); - } - - lint - }); + cx.emit_spanned_lint( + OVERFLOWING_LITERALS, + e.span, + OverflowingInt { + ty: t.name_str(), + lit: cx + .sess() + .source_map() + .span_to_snippet(lit.span) + .expect("must get snippet from literal"), + min, + max, + suggestion_ty: get_type_suggestion( + cx.typeck_results().node_type(e.hir_id), + v, + negative, + ), + }, + ); } } @@ -408,18 +381,10 @@ fn lint_uint_literal<'tcx>( match par_e.kind { hir::ExprKind::Cast(..) => { if let ty::Char = cx.typeck_results().expr_ty(par_e).kind() { - cx.struct_span_lint( + cx.emit_spanned_lint( OVERFLOWING_LITERALS, par_e.span, - fluent::lint_only_cast_u8_to_char, - |lint| { - lint.span_suggestion( - par_e.span, - fluent::suggestion, - format!("'\\u{{{:X}}}'", lit_val), - Applicability::MachineApplicable, - ) - }, + OnlyCastu8ToChar { span: par_e.span, literal: lit_val }, ); return; } @@ -443,19 +408,20 @@ fn lint_uint_literal<'tcx>( ); return; } - cx.struct_span_lint(OVERFLOWING_LITERALS, e.span, fluent::lint_overflowing_uint, |lint| { - lint.set_arg("ty", t.name_str()) - .set_arg( - "lit", - cx.sess() - .source_map() - .span_to_snippet(lit.span) - .expect("must get snippet from literal"), - ) - .set_arg("min", min) - .set_arg("max", max) - .note(fluent::note) - }); + cx.emit_spanned_lint( + OVERFLOWING_LITERALS, + e.span, + OverflowingUInt { + ty: t.name_str(), + lit: cx + .sess() + .source_map() + .span_to_snippet(lit.span) + .expect("must get snippet from literal"), + min, + max, + }, + ); } } @@ -484,20 +450,16 @@ fn lint_literal<'tcx>( _ => bug!(), }; if is_infinite == Ok(true) { - cx.struct_span_lint( + cx.emit_spanned_lint( OVERFLOWING_LITERALS, e.span, - fluent::lint_overflowing_literal, - |lint| { - lint.set_arg("ty", t.name_str()) - .set_arg( - "lit", - cx.sess() - .source_map() - .span_to_snippet(lit.span) - .expect("must get snippet from literal"), - ) - .note(fluent::note) + OverflowingLiteral { + ty: t.name_str(), + lit: cx + .sess() + .source_map() + .span_to_snippet(lit.span) + .expect("must get snippet from literal"), }, ); } @@ -517,12 +479,7 @@ impl<'tcx> LateLintPass<'tcx> for TypeLimits { } hir::ExprKind::Binary(binop, ref l, ref r) => { if is_comparison(binop) && !check_limits(cx, binop, &l, &r) { - cx.struct_span_lint( - UNUSED_COMPARISONS, - e.span, - fluent::lint_unused_comparisons, - |lint| lint, - ); + cx.emit_spanned_lint(UNUSED_COMPARISONS, e.span, UnusedComparisons); } } hir::ExprKind::Lit(ref lit) => lint_literal(cx, self, e, lit), @@ -1180,9 +1137,11 @@ impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> { CItemKind::Declaration => "block", CItemKind::Definition => "fn", }; - lint.set_arg("ty", ty); - lint.set_arg("desc", item_description); - lint.span_label(sp, fluent::label); + #[allow(rustc::diagnostic_outside_of_impl)] + let mut diag = lint.build(fluent::lint_improper_ctypes); + diag.set_arg("ty", ty); + diag.set_arg("desc", item_description); + diag.span_label(sp, fluent::label); if let Some(help) = help { lint.help(help); } @@ -1397,11 +1356,10 @@ impl<'tcx> LateLintPass<'tcx> for VariantSizeDifferences { // We only warn if the largest variant is at least thrice as large as // the second-largest. if largest > slargest * 3 && slargest > 0 { - cx.struct_span_lint( + cx.emit_spanned_lint( VARIANT_SIZE_DIFFERENCES, enum_definition.variants[largest_index].span, - fluent::lint_variant_size_differences, - |lint| lint.set_arg("largest", largest), + VariantSizeDifferencesDiag { largest }, ); } } @@ -1509,17 +1467,19 @@ impl InvalidAtomicOrdering { fn check_atomic_load_store(cx: &LateContext<'_>, expr: &Expr<'_>) { if let Some((method, args)) = Self::inherent_atomic_method_call(cx, expr, &[sym::load, sym::store]) - && let Some((ordering_arg, invalid_ordering, msg)) = match method { - sym::load => Some((&args[0], sym::Release, fluent::lint_atomic_ordering_load)), - sym::store => Some((&args[1], sym::Acquire, fluent::lint_atomic_ordering_store)), + && let Some((ordering_arg, invalid_ordering)) = match method { + sym::load => Some((&args[0], sym::Release)), + sym::store => Some((&args[1], sym::Acquire)), _ => None, } && let Some(ordering) = Self::match_ordering(cx, ordering_arg) && (ordering == invalid_ordering || ordering == sym::AcqRel) { - cx.struct_span_lint(INVALID_ATOMIC_ORDERING, ordering_arg.span, msg, |lint| { - lint.help(fluent::help) - }); + if method == sym::load { + cx.emit_spanned_lint(INVALID_ATOMIC_ORDERING, ordering_arg.span, AtomicOrderingLoad); + } else { + cx.emit_spanned_lint(INVALID_ATOMIC_ORDERING, ordering_arg.span, AtomicOrderingStore); + }; } } @@ -1530,10 +1490,7 @@ impl InvalidAtomicOrdering { && matches!(cx.tcx.get_diagnostic_name(def_id), Some(sym::fence | sym::compiler_fence)) && Self::match_ordering(cx, &args[0]) == Some(sym::Relaxed) { - cx.struct_span_lint(INVALID_ATOMIC_ORDERING, args[0].span, fluent::lint_atomic_ordering_fence, |lint| { - lint - .help(fluent::help) - }); + cx.emit_spanned_lint(INVALID_ATOMIC_ORDERING, args[0].span, AtomicOrderingFence); } } From e5ae9d019c263a37b1d47fab91b057ec9b8d7c45 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 4 Sep 2022 15:46:35 -0400 Subject: [PATCH 346/478] migrate: `unused.rs` --- compiler/rustc_lint/src/lints.rs | 133 ++++++++++++++++++++++- compiler/rustc_lint/src/unused.rs | 171 ++++++++++++------------------ 2 files changed, 201 insertions(+), 103 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index ce93616da131..c68bfc98f935 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,7 +1,11 @@ -use rustc_errors::{fluent, AddSubdiagnostic, DecorateLint, EmissionGuarantee}; +use rustc_errors::{fluent, AddSubdiagnostic, Applicability, DecorateLint, EmissionGuarantee}; +use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, SessionSubdiagnostic}; +use rustc_middle::ty::Ty; use rustc_span::{Span, Symbol}; +use crate::LateContext; + #[derive(LintDiagnostic)] #[diag(lint_range_endpoint_out_of_range)] pub struct RangeEndpointOutOfRange<'a> { @@ -146,3 +150,130 @@ pub struct InvalidAtomicOrderingDiag { #[label] pub fail_order_arg_span: Span, } + +#[derive(LintDiagnostic)] +#[diag(lint_unused_op)] +pub struct UnusedOp<'a> { + pub op: &'a str, + #[label] + pub label: Span, + #[suggestion(style = "verbose", code = "let _ = ", applicability = "machine-applicable")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_unused_result)] +pub struct UnusedResult<'a> { + pub ty: Ty<'a>, +} + +// FIXME(davidtwco): this isn't properly translatable becauses of the +// pre/post strings +#[derive(LintDiagnostic)] +#[diag(lint_unused_closure)] +#[note] +pub struct UnusedClosure<'a> { + pub count: usize, + pub pre: &'a str, + pub post: &'a str, +} + +// FIXME(davidtwco): this isn't properly translatable becauses of the +// pre/post strings +#[derive(LintDiagnostic)] +#[diag(lint_unused_generator)] +#[note] +pub struct UnusedGenerator<'a> { + pub count: usize, + pub pre: &'a str, + pub post: &'a str, +} + +// FIXME(davidtwco): this isn't properly translatable becauses of the pre/post +// strings +pub struct UnusedDef<'a, 'b> { + pub pre: &'a str, + pub post: &'a str, + pub cx: &'a LateContext<'b>, + pub def_id: DefId, + pub note: Option, +} + +// FIXME: refactor with `Option` in macro +impl<'a, 'b, G: EmissionGuarantee> DecorateLint<'_, G> for UnusedDef<'a, 'b> { + fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { + let mut diag = diag.build(fluent::lint_unused_def); + diag.set_arg("pre", self.pre); + diag.set_arg("post", self.post); + diag.set_arg("def", self.cx.tcx.def_path_str(self.def_id)); + // check for #[must_use = "..."] + if let Some(note) = self.note { + diag.note(note.as_str()); + } + diag.emit(); + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_path_statement_drop)] +pub struct PathStatementDrop { + #[subdiagnostic] + pub sub: PathStatementDropSub, +} + +#[derive(SessionSubdiagnostic)] +pub enum PathStatementDropSub { + #[suggestion( + suggestion, + code = "drop({snippet});", + applicability = "machine-applicable" + )] + Suggestion { + #[primary_span] + span: Span, + snippet: String, + }, + #[help(help)] + Help { + #[primary_span] + span: Span, + }, +} + +#[derive(LintDiagnostic)] +#[diag(lint_path_statement_no_effect)] +pub struct PathStatementNoEffect; + +#[derive(LintDiagnostic)] +#[diag(lint_unused_delim)] +pub struct UnusedDelim<'a> { + pub delim: &'static str, + pub item: &'a str, + #[subdiagnostic] + pub suggestion: Option, +} + +#[derive(Subdiagnostic)] +#[multipart_suggestion(suggestion, applicability = "machine-applicable")] +pub struct UnusedDelimSuggestion { + #[suggestion_part(code = "{start_replace}")] + pub start_span: Span, + pub start_replace: &'static str, + #[suggestion_part(code = "{end_replace}")] + pub end_span: Span, + pub end_replace: &'static str, +} + +#[derive(LintDiagnostic)] +#[diag(lint_unused_import_braces)] +pub struct UnusedImportBracesDiag { + pub node: Symbol, +} + +#[derive(LintDiagnostic)] +#[diag(lint_unused_allocation)] +pub struct UnusedAllocationDiag; + +#[derive(LintDiagnostic)] +#[diag(lint_unused_allocation_mut)] +pub struct UnusedAllocationMutDiag; diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs index 525079681ca5..8c5f68d61446 100644 --- a/compiler/rustc_lint/src/unused.rs +++ b/compiler/rustc_lint/src/unused.rs @@ -1,9 +1,16 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ + PathStatementDrop, PathStatementDropSub, PathStatementNoEffect, UnusedAllocationDiag, + UnusedAllocationMutDiag, UnusedClosure, UnusedDef, UnusedDelim, UnusedDelimSuggestion, + UnusedGenerator, UnusedImportBracesDiag, UnusedOp, UnusedResult, +}; use crate::Lint; use crate::{EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_ast::util::{classify, parser}; use rustc_ast::{ExprKind, StmtKind}; -use rustc_errors::{fluent, pluralize, Applicability, MultiSpan}; +use rustc_errors::{pluralize, MultiSpan}; use rustc_hir as hir; use rustc_hir::def::{DefKind, Res}; use rustc_hir::def_id::DefId; @@ -163,23 +170,20 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults { let mut op_warned = false; if let Some(must_use_op) = must_use_op { - cx.struct_span_lint(UNUSED_MUST_USE, expr.span, fluent::lint_unused_op, |lint| { - lint.set_arg("op", must_use_op) - .span_label(expr.span, fluent::label) - .span_suggestion_verbose( - expr.span.shrink_to_lo(), - fluent::suggestion, - "let _ = ", - Applicability::MachineApplicable, - ) - }); + cx.emit_spanned_lint( + UNUSED_MUST_USE, + expr.span, + UnusedOp { + op: must_use_op, + label: expr.span, + suggestion: expr.span.shrink_to_lo(), + }, + ); op_warned = true; } if !(type_lint_emitted_or_suppressed || fn_warned || op_warned) { - cx.struct_span_lint(UNUSED_RESULTS, s.span, fluent::lint_unused_result, |lint| { - lint.set_arg("ty", ty) - }); + cx.emit_spanned_lint(UNUSED_RESULTS, s.span, UnusedResult { ty }); } fn check_fn_must_use(cx: &LateContext<'_>, expr: &hir::Expr<'_>) -> bool { @@ -402,47 +406,31 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults { ); } MustUsePath::Closure(span) => { - cx.struct_span_lint( + cx.emit_spanned_lint( UNUSED_MUST_USE, *span, - fluent::lint_unused_closure, - |lint| { - // FIXME(davidtwco): this isn't properly translatable because of the - // pre/post strings - lint.set_arg("count", plural_len) - .set_arg("pre", descr_pre) - .set_arg("post", descr_post) - .note(fluent::note) - }, + UnusedClosure { count: plural_len, pre: descr_pre, post: descr_post }, ); } MustUsePath::Generator(span) => { - cx.struct_span_lint( + cx.emit_spanned_lint( UNUSED_MUST_USE, *span, - fluent::lint_unused_generator, - |lint| { - // FIXME(davidtwco): this isn't properly translatable because of the - // pre/post strings - lint.set_arg("count", plural_len) - .set_arg("pre", descr_pre) - .set_arg("post", descr_post) - .note(fluent::note) - }, + UnusedGenerator { count: plural_len, pre: descr_pre, post: descr_post }, ); } MustUsePath::Def(span, def_id, reason) => { - cx.struct_span_lint(UNUSED_MUST_USE, *span, fluent::lint_unused_def, |lint| { - // FIXME(davidtwco): this isn't properly translatable because of the pre/post - // strings - lint.set_arg("pre", descr_pre); - lint.set_arg("post", descr_post); - lint.set_arg("def", cx.tcx.def_path_str(*def_id)); - if let Some(note) = reason { - lint.note(note.as_str()); - } - lint - }); + cx.emit_spanned_lint( + UNUSED_MUST_USE, + *span, + UnusedDef { + pre: descr_pre, + post: descr_post, + cx, + def_id: *def_id, + note: *reason, + }, + ); } } } @@ -478,31 +466,15 @@ impl<'tcx> LateLintPass<'tcx> for PathStatements { if let hir::ExprKind::Path(_) = expr.kind { let ty = cx.typeck_results().expr_ty(expr); if ty.needs_drop(cx.tcx, cx.param_env) { - cx.struct_span_lint( - PATH_STATEMENTS, - s.span, - fluent::lint_path_statement_drop, - |lint| { - if let Ok(snippet) = cx.sess().source_map().span_to_snippet(expr.span) { - lint.span_suggestion( - s.span, - fluent::suggestion, - format!("drop({});", snippet), - Applicability::MachineApplicable, - ); - } else { - lint.span_help(s.span, fluent::suggestion); - } - lint - }, - ); + let sub = if let Ok(snippet) = cx.sess().source_map().span_to_snippet(expr.span) + { + PathStatementDropSub::Suggestion { span: s.span, snippet } + } else { + PathStatementDropSub::Help { span: s.span } + }; + cx.emit_spanned_lint(PATH_STATEMENTS, s.span, PathStatementDrop { sub }) } else { - cx.struct_span_lint( - PATH_STATEMENTS, - s.span, - fluent::lint_path_statement_no_effect, - |lint| lint, - ); + cx.emit_spanned_lint(PATH_STATEMENTS, s.span, PathStatementNoEffect); } } } @@ -695,36 +667,35 @@ trait UnusedDelimLint { } else { MultiSpan::from(value_span) }; - cx.struct_span_lint(self.lint(), primary_span, fluent::lint_unused_delim, |lint| { - lint.set_arg("delim", Self::DELIM_STR); - lint.set_arg("item", msg); - if let Some((lo, hi)) = spans { - let sm = cx.sess().source_map(); - let lo_replace = + let suggestion = spans.map(|(lo, hi)| { + let sm = cx.sess().source_map(); + let lo_replace = if keep_space.0 && let Ok(snip) = sm.span_to_prev_source(lo) && !snip.ends_with(' ') { - " ".to_string() + " " } else { - "".to_string() + "" }; - let hi_replace = + let hi_replace = if keep_space.1 && let Ok(snip) = sm.span_to_next_source(hi) && !snip.starts_with(' ') { - " ".to_string() + " " } else { - "".to_string() + "" }; - - let replacement = vec![(lo, lo_replace), (hi, hi_replace)]; - lint.multipart_suggestion( - fluent::suggestion, - replacement, - Applicability::MachineApplicable, - ); + UnusedDelimSuggestion { + start_span: lo, + start_replace: lo_replace, + end_span: hi, + end_replace: hi_replace, } - lint }); + cx.emit_spanned_lint( + self.lint(), + primary_span, + UnusedDelim { delim: Self::DELIM_STR, item: msg, suggestion }, + ); } fn check_expr(&mut self, cx: &EarlyContext<'_>, e: &ast::Expr) { @@ -1297,11 +1268,10 @@ impl UnusedImportBraces { ast::UseTreeKind::Nested(_) => return, }; - cx.struct_span_lint( + cx.emit_spanned_lint( UNUSED_IMPORT_BRACES, item.span, - fluent::lint_unused_import_braces, - |lint| lint.set_arg("node", node_name), + UnusedImportBracesDiag { node: node_name }, ); } } @@ -1351,17 +1321,14 @@ impl<'tcx> LateLintPass<'tcx> for UnusedAllocation { for adj in cx.typeck_results().expr_adjustments(e) { if let adjustment::Adjust::Borrow(adjustment::AutoBorrow::Ref(_, m)) = adj.kind { - cx.struct_span_lint( - UNUSED_ALLOCATION, - e.span, - match m { - adjustment::AutoBorrowMutability::Not => fluent::lint_unused_allocation, - adjustment::AutoBorrowMutability::Mut { .. } => { - fluent::lint_unused_allocation_mut - } - }, - |lint| lint, - ); + match m { + adjustment::AutoBorrowMutability::Not => { + cx.emit_spanned_lint(UNUSED_ALLOCATION, e.span, UnusedAllocationDiag); + } + adjustment::AutoBorrowMutability::Mut { .. } => { + cx.emit_spanned_lint(UNUSED_ALLOCATION, e.span, UnusedAllocationMutDiag); + } + }; } } } From a42afa0444118ae5549f89e8ea9a15b73702fbcf Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 11:52:08 -0400 Subject: [PATCH 347/478] migrate: `traits.rs` --- compiler/rustc_lint/src/lints.rs | 30 +++++++++++++++++++++++++++++- compiler/rustc_lint/src/traits.rs | 27 ++++++++++++--------------- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index c68bfc98f935..691cc8667e33 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,11 +1,39 @@ use rustc_errors::{fluent, AddSubdiagnostic, Applicability, DecorateLint, EmissionGuarantee}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, SessionSubdiagnostic}; -use rustc_middle::ty::Ty; +use rustc_middle::ty::{Predicate, Ty, TyCtxt}; use rustc_span::{Span, Symbol}; use crate::LateContext; +pub struct DropTraitConstraintsDiag<'a> { + pub predicate: Predicate<'a>, + pub tcx: TyCtxt<'a>, + pub def_id: DefId, +} + +impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for DropTraitConstraintsDiag<'a> { + fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { + let mut diag = diag.build(fluent::lint_drop_trait_constraints); + diag.set_arg("predicate", self.predicate); + diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)); + diag.emit(); + } +} + +pub struct DropGlue<'a> { + pub tcx: TyCtxt<'a>, + pub def_id: DefId, +} + +impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for DropGlue<'a> { + fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { + let mut diag = diag.build(fluent::lint_drop_glue); + diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)); + diag.emit(); + } +} + #[derive(LintDiagnostic)] #[diag(lint_range_endpoint_out_of_range)] pub struct RangeEndpointOutOfRange<'a> { diff --git a/compiler/rustc_lint/src/traits.rs b/compiler/rustc_lint/src/traits.rs index 1b21c2dac378..2e778cf0d0fe 100644 --- a/compiler/rustc_lint/src/traits.rs +++ b/compiler/rustc_lint/src/traits.rs @@ -1,7 +1,9 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{DropGlue, DropTraitConstraintsDiag}; use crate::LateContext; use crate::LateLintPass; use crate::LintContext; -use rustc_errors::fluent; use rustc_hir as hir; use rustc_span::symbol::sym; @@ -101,17 +103,13 @@ impl<'tcx> LateLintPass<'tcx> for DropTraitConstraints { if trait_predicate.trait_ref.self_ty().is_impl_trait() { continue; } - let Some(needs_drop) = cx.tcx.get_diagnostic_item(sym::needs_drop) else { - continue; + let Some(def_id) = cx.tcx.get_diagnostic_item(sym::needs_drop) else { + return }; - cx.struct_span_lint( + cx.emit_spanned_lint( DROP_BOUNDS, span, - fluent::lint_drop_trait_constraints, - |lint| { - lint.set_arg("predicate", predicate) - .set_arg("needs_drop", cx.tcx.def_path_str(needs_drop)) - }, + DropTraitConstraintsDiag { predicate, tcx: cx.tcx, def_id }, ); } } @@ -123,12 +121,11 @@ impl<'tcx> LateLintPass<'tcx> for DropTraitConstraints { }; for bound in &bounds[..] { let def_id = bound.trait_ref.trait_def_id(); - if cx.tcx.lang_items().drop_trait() == def_id - && let Some(needs_drop) = cx.tcx.get_diagnostic_item(sym::needs_drop) - { - cx.struct_span_lint(DYN_DROP, bound.span, fluent::lint_drop_glue, |lint| { - lint.set_arg("needs_drop", cx.tcx.def_path_str(needs_drop)) - }); + if cx.tcx.lang_items().drop_trait() == def_id { + let Some(def_id) = cx.tcx.get_diagnostic_item(sym::needs_drop) else { + return + }; + cx.emit_spanned_lint(DYN_DROP, bound.span, DropGlue { tcx: cx.tcx, def_id }); } } } From c3a6801f8e5ce0aee0a62eb022780740ee61535d Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 12:32:01 -0400 Subject: [PATCH 348/478] migrate: `redundant_semicolon.rs` --- compiler/rustc_lint/src/lints.rs | 8 ++++++++ compiler/rustc_lint/src/redundant_semicolon.rs | 17 +++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 691cc8667e33..077ee3fb6715 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,14 @@ use rustc_span::{Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_redundant_semicolons)] +pub struct RedundantSemicolonsDiag { + pub multiple: bool, + #[suggestion(code = "", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + pub struct DropTraitConstraintsDiag<'a> { pub predicate: Predicate<'a>, pub tcx: TyCtxt<'a>, diff --git a/compiler/rustc_lint/src/redundant_semicolon.rs b/compiler/rustc_lint/src/redundant_semicolon.rs index 3521de7fc084..6c6add34a520 100644 --- a/compiler/rustc_lint/src/redundant_semicolon.rs +++ b/compiler/rustc_lint/src/redundant_semicolon.rs @@ -1,6 +1,7 @@ -use crate::{EarlyContext, EarlyLintPass, LintContext}; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::{lints::RedundantSemicolonsDiag, EarlyContext, EarlyLintPass, LintContext}; use rustc_ast::{Block, StmtKind}; -use rustc_errors::{fluent, Applicability}; use rustc_span::Span; declare_lint! { @@ -48,18 +49,10 @@ fn maybe_lint_redundant_semis(cx: &EarlyContext<'_>, seq: &mut Option<(Span, boo return; } - cx.struct_span_lint( + cx.emit_spanned_lint( REDUNDANT_SEMICOLONS, span, - fluent::lint_redundant_semicolons, - |lint| { - lint.set_arg("multiple", multiple).span_suggestion( - span, - fluent::suggestion, - "", - Applicability::MaybeIncorrect, - ) - }, + RedundantSemicolonsDiag { multiple, suggestion: span }, ); } } From 6fb3a38f9b27b328c6209147793602545d291b85 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 12:38:55 -0400 Subject: [PATCH 349/478] migrate: `pass_by_value.rs` --- compiler/rustc_lint/src/lints.rs | 8 ++++++++ compiler/rustc_lint/src/pass_by_value.rs | 19 ++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 077ee3fb6715..fd68af572ff9 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,14 @@ use rustc_span::{Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_pass_by_value)] +pub struct PassByValueDiag { + pub ty: String, + #[suggestion(code = "{ty}", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + #[derive(LintDiagnostic)] #[diag(lint_redundant_semicolons)] pub struct RedundantSemicolonsDiag { diff --git a/compiler/rustc_lint/src/pass_by_value.rs b/compiler/rustc_lint/src/pass_by_value.rs index 22caadfab177..3df0fc385952 100644 --- a/compiler/rustc_lint/src/pass_by_value.rs +++ b/compiler/rustc_lint/src/pass_by_value.rs @@ -1,5 +1,7 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::PassByValueDiag; use crate::{LateContext, LateLintPass, LintContext}; -use rustc_errors::{fluent, Applicability}; use rustc_hir as hir; use rustc_hir::def::Res; use rustc_hir::{GenericArg, PathSegment, QPath, TyKind}; @@ -29,20 +31,11 @@ impl<'tcx> LateLintPass<'tcx> for PassByValue { } } if let Some(t) = path_for_pass_by_value(cx, &inner_ty) { - cx.struct_span_lint( + cx.emit_spanned_lint( PASS_BY_VALUE, ty.span, - fluent::lint_pass_by_value, - |lint| { - lint.set_arg("ty", t.clone()).span_suggestion( - ty.span, - fluent::suggestion, - t, - // Changing type of function argument - Applicability::MaybeIncorrect, - ) - }, - ) + PassByValueDiag { ty: t.clone(), suggestion: ty.span }, + ); } } _ => {} From 56fc66d196378a1af26631cbedabdcd07883bf3f Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 12:42:58 -0400 Subject: [PATCH 350/478] migrate: `noop_method_call.rs` --- compiler/rustc_lint/src/lints.rs | 10 ++++++++++ compiler/rustc_lint/src/noop_method_call.rs | 16 +++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index fd68af572ff9..83d8dce15408 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,16 @@ use rustc_span::{Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_noop_method_call)] +#[note] +pub struct NoopMethodCallDiag<'a> { + pub method: Symbol, + pub receiver_ty: Ty<'a>, + #[label] + pub label: Span, +} + #[derive(LintDiagnostic)] #[diag(lint_pass_by_value)] pub struct PassByValueDiag { diff --git a/compiler/rustc_lint/src/noop_method_call.rs b/compiler/rustc_lint/src/noop_method_call.rs index 2ef425a10931..3fba95f0750d 100644 --- a/compiler/rustc_lint/src/noop_method_call.rs +++ b/compiler/rustc_lint/src/noop_method_call.rs @@ -1,7 +1,10 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] use crate::context::LintContext; +use crate::lints::NoopMethodCallDiag; +use crate::rustc_middle::ty::TypeVisitable; use crate::LateContext; use crate::LateLintPass; -use rustc_errors::fluent; use rustc_hir::def::DefKind; use rustc_hir::{Expr, ExprKind}; use rustc_middle::ty; @@ -85,11 +88,10 @@ impl<'tcx> LateLintPass<'tcx> for NoopMethodCall { } let expr_span = expr.span; let span = expr_span.with_lo(receiver.span.hi()); - cx.struct_span_lint(NOOP_METHOD_CALL, span, fluent::lint_noop_method_call, |lint| { - lint.set_arg("method", call.ident.name) - .set_arg("receiver_ty", receiver_ty) - .span_label(span, fluent::label) - .note(fluent::note) - }); + cx.emit_spanned_lint( + NOOP_METHOD_CALL, + span, + NoopMethodCallDiag { method: call.ident.name, receiver_ty, label: span }, + ); } } From a9bbe31519b250fb331347351b47345fcbfe7932 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 13:37:57 -0400 Subject: [PATCH 351/478] migrate: `nonstandard_style.rs` --- compiler/rustc_lint/src/lints.rs | 106 ++++++++++++++- compiler/rustc_lint/src/nonstandard_style.rs | 131 ++++++++----------- 2 files changed, 156 insertions(+), 81 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 83d8dce15408..7e92b2d6b3d5 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -2,10 +2,114 @@ use rustc_errors::{fluent, AddSubdiagnostic, Applicability, DecorateLint, Emissi use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, SessionSubdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; -use rustc_span::{Span, Symbol}; +use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_non_camel_case_type)] +pub struct NonCamelCaseType<'a> { + pub sort: &'a str, + pub name: &'a str, + #[subdiagnostic] + pub sub: NonCamelCaseTypeSub, +} + +#[derive(SessionSubdiagnostic)] +pub enum NonCamelCaseTypeSub { + #[label(label)] + Label { + #[primary_span] + span: Span, + }, + #[suggestion(suggestion, code = "{replace}", applicability = "maybe-incorrect")] + Suggestion { + #[primary_span] + span: Span, + replace: String, + }, +} + +#[derive(LintDiagnostic)] +#[diag(lint_non_snake_case)] +pub struct NonSnakeCaseDiag<'a> { + pub sort: &'a str, + pub name: &'a str, + pub sc: String, + #[subdiagnostic] + pub sub: NonSnakeCaseDiagSub, +} + +pub enum NonSnakeCaseDiagSub { + Label { span: Span }, + Help, + RenameOrConvertSuggestion { span: Span, suggestion: Ident }, + ConvertSuggestion { span: Span, suggestion: String }, + SuggestionAndNote { span: Span }, +} + +impl AddSubdiagnostic for NonSnakeCaseDiagSub { + fn add_to_diagnostic(self, diag: &mut rustc_errors::Diagnostic) { + match self { + NonSnakeCaseDiagSub::Label { span } => { + diag.span_label(span, fluent::label); + } + NonSnakeCaseDiagSub::Help => { + diag.help(fluent::help); + } + NonSnakeCaseDiagSub::ConvertSuggestion { span, suggestion } => { + diag.span_suggestion( + span, + fluent::convert_suggestion, + suggestion, + Applicability::MaybeIncorrect, + ); + } + NonSnakeCaseDiagSub::RenameOrConvertSuggestion { span, suggestion } => { + diag.span_suggestion( + span, + fluent::rename_or_convert_suggestion, + suggestion, + Applicability::MaybeIncorrect, + ); + } + NonSnakeCaseDiagSub::SuggestionAndNote { span } => { + diag.note(fluent::cannot_convert_note); + diag.span_suggestion( + span, + fluent::rename_suggestion, + "", + Applicability::MaybeIncorrect, + ); + } + }; + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_non_upper_case_global)] +pub struct NonUpperCaseGlobal<'a> { + pub sort: &'a str, + pub name: &'a str, + #[subdiagnostic] + pub sub: NonUpperCaseGlobalSub, +} + +#[derive(SessionSubdiagnostic)] +pub enum NonUpperCaseGlobalSub { + #[label(label)] + Label { + #[primary_span] + span: Span, + }, + #[suggestion(suggestion, code = "{replace}", applicability = "maybe-incorrect")] + Suggestion { + #[primary_span] + span: Span, + replace: String, + }, +} + #[derive(LintDiagnostic)] #[diag(lint_noop_method_call)] #[note] diff --git a/compiler/rustc_lint/src/nonstandard_style.rs b/compiler/rustc_lint/src/nonstandard_style.rs index f37d6e9a63d4..34e3751c061f 100644 --- a/compiler/rustc_lint/src/nonstandard_style.rs +++ b/compiler/rustc_lint/src/nonstandard_style.rs @@ -1,7 +1,12 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ + NonCamelCaseType, NonCamelCaseTypeSub, NonSnakeCaseDiag, NonSnakeCaseDiagSub, + NonUpperCaseGlobal, NonUpperCaseGlobalSub, +}; use crate::{EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_attr as attr; -use rustc_errors::{fluent, Applicability}; use rustc_hir as hir; use rustc_hir::def::{DefKind, Res}; use rustc_hir::intravisit::FnKind; @@ -136,30 +141,17 @@ impl NonCamelCaseTypes { let name = ident.name.as_str(); if !is_camel_case(name) { - cx.struct_span_lint( + let cc = to_camel_case(name); + let sub = if *name != cc { + NonCamelCaseTypeSub::Suggestion { span: ident.span, replace: cc } + } else { + NonCamelCaseTypeSub::Label { span: ident.span } + }; + cx.emit_spanned_lint( NON_CAMEL_CASE_TYPES, ident.span, - fluent::lint_non_camel_case_type, - |lint| { - let cc = to_camel_case(name); - // We cannot provide meaningful suggestions - // if the characters are in the category of "Lowercase Letter". - if *name != cc { - lint.span_suggestion( - ident.span, - fluent::suggestion, - to_camel_case(name), - Applicability::MaybeIncorrect, - ); - } else { - lint.span_label(ident.span, fluent::label); - } - - lint.set_arg("sort", sort); - lint.set_arg("name", name); - lint - }, - ) + NonCamelCaseType { sort, name, sub }, + ); } } } @@ -294,47 +286,37 @@ impl NonSnakeCase { let name = ident.name.as_str(); if !is_snake_case(name) { - cx.struct_span_lint(NON_SNAKE_CASE, ident.span, fluent::lint_non_snake_case, |lint| { - let sc = NonSnakeCase::to_snake_case(name); - // We cannot provide meaningful suggestions - // if the characters are in the category of "Uppercase Letter". - if name != sc { - // We have a valid span in almost all cases, but we don't have one when linting a crate - // name provided via the command line. - if !ident.span.is_dummy() { - let sc_ident = Ident::from_str_and_span(&sc, ident.span); - let (message, suggestion) = if sc_ident.is_reserved() { - // We shouldn't suggest a reserved identifier to fix non-snake-case identifiers. - // Instead, recommend renaming the identifier entirely or, if permitted, - // escaping it to create a raw identifier. - if sc_ident.name.can_be_raw() { - (fluent::rename_or_convert_suggestion, sc_ident.to_string()) - } else { - lint.note(fluent::cannot_convert_note); - (fluent::rename_suggestion, String::new()) + let span = ident.span; + let sc = NonSnakeCase::to_snake_case(name); + // We cannot provide meaningful suggestions + // if the characters are in the category of "Uppercase Letter". + let sub = if name != sc { + // We have a valid span in almost all cases, but we don't have one when linting a crate + // name provided via the command line. + if !span.is_dummy() { + let sc_ident = Ident::from_str_and_span(&sc, span); + if sc_ident.is_reserved() { + // We shouldn't suggest a reserved identifier to fix non-snake-case identifiers. + // Instead, recommend renaming the identifier entirely or, if permitted, + // escaping it to create a raw identifier. + if sc_ident.name.can_be_raw() { + NonSnakeCaseDiagSub::RenameOrConvertSuggestion { + span, + suggestion: sc_ident, } } else { - (fluent::convert_suggestion, sc.clone()) - }; - - lint.span_suggestion( - ident.span, - message, - suggestion, - Applicability::MaybeIncorrect, - ); + NonSnakeCaseDiagSub::SuggestionAndNote { span } + } } else { - lint.help(fluent::help); + NonSnakeCaseDiagSub::ConvertSuggestion { span, suggestion: sc.clone() } } } else { - lint.span_label(ident.span, fluent::label); + NonSnakeCaseDiagSub::Help } - - lint.set_arg("sort", sort); - lint.set_arg("name", name); - lint.set_arg("sc", sc); - lint - }); + } else { + NonSnakeCaseDiagSub::Label { span } + }; + cx.emit_spanned_lint(NON_SNAKE_CASE, span, NonSnakeCaseDiag { sort, name, sc, sub }); } } } @@ -490,30 +472,19 @@ impl NonUpperCaseGlobals { fn check_upper_case(cx: &LateContext<'_>, sort: &str, ident: &Ident) { let name = ident.name.as_str(); if name.chars().any(|c| c.is_lowercase()) { - cx.struct_span_lint( + let uc = NonSnakeCase::to_snake_case(&name).to_uppercase(); + // We cannot provide meaningful suggestions + // if the characters are in the category of "Lowercase Letter". + let sub = if *name != uc { + NonUpperCaseGlobalSub::Suggestion { span: ident.span, replace: uc } + } else { + NonUpperCaseGlobalSub::Label { span: ident.span } + }; + cx.emit_spanned_lint( NON_UPPER_CASE_GLOBALS, ident.span, - fluent::lint_non_upper_case_global, - |lint| { - let uc = NonSnakeCase::to_snake_case(&name).to_uppercase(); - // We cannot provide meaningful suggestions - // if the characters are in the category of "Lowercase Letter". - if *name != uc { - lint.span_suggestion( - ident.span, - fluent::suggestion, - uc, - Applicability::MaybeIncorrect, - ); - } else { - lint.span_label(ident.span, fluent::label); - } - - lint.set_arg("sort", sort); - lint.set_arg("name", name); - lint - }, - ) + NonUpperCaseGlobal { sort, name, sub }, + ); } } } From 384010b9f47e6747e6f0b21439666cfe19e2573c Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 14:38:36 -0400 Subject: [PATCH 352/478] migrate: `non_fmt_panic.rs` --- compiler/rustc_lint/src/lints.rs | 37 ++++++++++++++++++ compiler/rustc_lint/src/non_fmt_panic.rs | 49 ++++++++---------------- 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 7e92b2d6b3d5..8a249ebf24d0 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,43 @@ use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +pub struct NonFmtPanicUnused { + pub count: usize, + pub suggestion: Option, +} + +impl DecorateLint<'_, G> for NonFmtPanicUnused { + fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { + let mut diag = diag.build(fluent::lint_non_fmt_panic_unused); + diag.set_arg("count", self.count); + diag.note(fluent::note); + if let Some(span) = self.suggestion { + diag.span_suggestion( + span.shrink_to_hi(), + fluent::add_args_suggestion, + ", ...", + Applicability::HasPlaceholders, + ); + diag.span_suggestion( + span.shrink_to_lo(), + fluent::add_fmt_suggestion, + "\"{}\", ", + Applicability::MachineApplicable, + ); + } + diag.emit(); + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_non_fmt_panic_braces)] +#[note] +pub struct NonFmtPanicBraces { + pub count: usize, + #[suggestion(code = "\"{{}}\", ", applicability = "machine-applicable")] + pub suggestion: Option, +} + #[derive(LintDiagnostic)] #[diag(lint_non_camel_case_type)] pub struct NonCamelCaseType<'a> { diff --git a/compiler/rustc_lint/src/non_fmt_panic.rs b/compiler/rustc_lint/src/non_fmt_panic.rs index 8dccfe0046c4..b86097a4bfc4 100644 --- a/compiler/rustc_lint/src/non_fmt_panic.rs +++ b/compiler/rustc_lint/src/non_fmt_panic.rs @@ -1,3 +1,6 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{NonFmtPanicBraces, NonFmtPanicUnused}; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; use rustc_errors::{fluent, Applicability}; @@ -118,6 +121,7 @@ fn check_panic<'tcx>(cx: &LateContext<'tcx>, f: &'tcx hir::Expr<'tcx>, arg: &'tc arg_span = expn.call_site; } + #[allow(rustc::diagnostic_outside_of_impl)] cx.struct_span_lint(NON_FMT_PANICS, arg_span, fluent::lint_non_fmt_panic, |lint| { lint.set_arg("name", symbol); lint.note(fluent::note); @@ -253,25 +257,14 @@ fn check_panic_str<'tcx>( .map(|span| fmt_span.from_inner(InnerSpan::new(span.start, span.end))) .collect(), }; - cx.struct_span_lint(NON_FMT_PANICS, arg_spans, fluent::lint_non_fmt_panic_unused, |lint| { - lint.set_arg("count", n_arguments); - lint.note(fluent::note); - if is_arg_inside_call(arg.span, span) { - lint.span_suggestion( - arg.span.shrink_to_hi(), - fluent::add_args_suggestion, - ", ...", - Applicability::HasPlaceholders, - ); - lint.span_suggestion( - arg.span.shrink_to_lo(), - fluent::add_fmt_suggestion, - "\"{}\", ", - Applicability::MachineApplicable, - ); - } - lint - }); + cx.emit_spanned_lint( + NON_FMT_PANICS, + arg_spans, + NonFmtPanicUnused { + count: n_arguments, + suggestion: is_arg_inside_call(arg.span, span).then_some(arg.span), + }, + ); } else { let brace_spans: Option> = snippet.filter(|s| s.starts_with('"') || s.starts_with("r#")).map(|s| { @@ -281,22 +274,12 @@ fn check_panic_str<'tcx>( .collect() }); let count = brace_spans.as_ref().map(|v| v.len()).unwrap_or(/* any number >1 */ 2); - cx.struct_span_lint( + cx.emit_spanned_lint( NON_FMT_PANICS, brace_spans.unwrap_or_else(|| vec![span]), - fluent::lint_non_fmt_panic_braces, - |lint| { - lint.set_arg("count", count); - lint.note(fluent::note); - if is_arg_inside_call(arg.span, span) { - lint.span_suggestion( - arg.span.shrink_to_lo(), - fluent::suggestion, - "\"{}\", ", - Applicability::MachineApplicable, - ); - } - lint + NonFmtPanicBraces { + count, + suggestion: is_arg_inside_call(arg.span, span).then_some(arg.span.shrink_to_lo()), }, ); } From 3f69c1b523b4606d09dfdb3c8d9cb7d05e239595 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 15:05:19 -0400 Subject: [PATCH 353/478] migrate: `non_ascii_idents.rs` --- compiler/rustc_lint/src/lints.rs | 26 +++++++++ compiler/rustc_lint/src/non_ascii_idents.rs | 58 ++++++++------------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 8a249ebf24d0..47582e6a1c68 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,32 @@ use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_identifier_non_ascii_char)] +pub struct IdentifierNonAsciiChar; + +#[derive(LintDiagnostic)] +#[diag(lint_identifier_uncommon_codepoints)] +pub struct IdentifierUncommonCodepoints; + +#[derive(LintDiagnostic)] +#[diag(lint_confusable_identifier_pair)] +pub struct ConfusableIdentifierPair { + pub existing_sym: Symbol, + pub sym: Symbol, + #[label] + pub label: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_mixed_script_confusables)] +#[note(includes_note)] +#[note] +pub struct MixedScriptConfusables { + pub set: String, + pub includes: String, +} + pub struct NonFmtPanicUnused { pub count: usize, pub suggestion: Option, diff --git a/compiler/rustc_lint/src/non_ascii_idents.rs b/compiler/rustc_lint/src/non_ascii_idents.rs index dea9506acb20..1cac1508bbd6 100644 --- a/compiler/rustc_lint/src/non_ascii_idents.rs +++ b/compiler/rustc_lint/src/non_ascii_idents.rs @@ -1,7 +1,12 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ + ConfusableIdentifierPair, IdentifierNonAsciiChar, IdentifierUncommonCodepoints, + MixedScriptConfusables, +}; use crate::{EarlyContext, EarlyLintPass, LintContext}; use rustc_ast as ast; use rustc_data_structures::fx::FxHashMap; -use rustc_errors::fluent; use rustc_span::symbol::Symbol; declare_lint! { @@ -180,21 +185,11 @@ impl EarlyLintPass for NonAsciiIdents { continue; } has_non_ascii_idents = true; - cx.struct_span_lint( - NON_ASCII_IDENTS, - sp, - fluent::lint_identifier_non_ascii_char, - |lint| lint, - ); + cx.emit_spanned_lint(NON_ASCII_IDENTS, sp, IdentifierNonAsciiChar); if check_uncommon_codepoints && !symbol_str.chars().all(GeneralSecurityProfile::identifier_allowed) { - cx.struct_span_lint( - UNCOMMON_CODEPOINTS, - sp, - fluent::lint_identifier_uncommon_codepoints, - |lint| lint, - ) + cx.emit_spanned_lint(UNCOMMON_CODEPOINTS, sp, IdentifierUncommonCodepoints); } } @@ -222,14 +217,13 @@ impl EarlyLintPass for NonAsciiIdents { .entry(skeleton_sym) .and_modify(|(existing_symbol, existing_span, existing_is_ascii)| { if !*existing_is_ascii || !is_ascii { - cx.struct_span_lint( + cx.emit_spanned_lint( CONFUSABLE_IDENTS, sp, - fluent::lint_confusable_identifier_pair, - |lint| { - lint.set_arg("existing_sym", *existing_symbol) - .set_arg("sym", symbol) - .span_label(*existing_span, fluent::label) + ConfusableIdentifierPair { + existing_sym: *existing_symbol, + sym: symbol, + label: *existing_span, }, ); } @@ -331,24 +325,18 @@ impl EarlyLintPass for NonAsciiIdents { } for ((sp, ch_list), script_set) in lint_reports { - cx.struct_span_lint( + let mut includes = String::new(); + for (idx, ch) in ch_list.into_iter().enumerate() { + if idx != 0 { + includes += ", "; + } + let char_info = format!("'{}' (U+{:04X})", ch, ch as u32); + includes += &char_info; + } + cx.emit_spanned_lint( MIXED_SCRIPT_CONFUSABLES, sp, - fluent::lint_mixed_script_confusables, - |lint| { - let mut includes = String::new(); - for (idx, ch) in ch_list.into_iter().enumerate() { - if idx != 0 { - includes += ", "; - } - let char_info = format!("'{}' (U+{:04X})", ch, ch as u32); - includes += &char_info; - } - lint.set_arg("set", script_set.to_string()) - .set_arg("includes", includes) - .note(fluent::includes_note) - .note(fluent::note) - }, + MixedScriptConfusables { set: script_set.to_string(), includes }, ); } } From 95d3e0cb782016d7e360741a590cb07cc6413d27 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Mon, 5 Sep 2022 15:37:30 -0400 Subject: [PATCH 354/478] migrate: `methods.rs` --- compiler/rustc_lint/src/lints.rs | 10 ++++++++++ compiler/rustc_lint/src/methods.rs | 14 +++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 47582e6a1c68..8ad62672f6e6 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,16 @@ use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_cstring_ptr)] +#[note] +#[help] +pub struct CStringPtr { + #[label(as_ptr_label)] + pub as_ptr: Span, + #[label(unwrap_label)] + pub unwrap: Span, +} #[derive(LintDiagnostic)] #[diag(lint_identifier_non_ascii_char)] pub struct IdentifierNonAsciiChar; diff --git a/compiler/rustc_lint/src/methods.rs b/compiler/rustc_lint/src/methods.rs index e2d7d5b49f69..06d4d2d23403 100644 --- a/compiler/rustc_lint/src/methods.rs +++ b/compiler/rustc_lint/src/methods.rs @@ -1,7 +1,9 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::CStringPtr; use crate::LateContext; use crate::LateLintPass; use crate::LintContext; -use rustc_errors::fluent; use rustc_hir::{Expr, ExprKind, PathSegment}; use rustc_middle::ty; use rustc_span::{symbol::sym, ExpnKind, Span}; @@ -90,16 +92,10 @@ fn lint_cstring_as_ptr( if cx.tcx.is_diagnostic_item(sym::Result, def.did()) { if let ty::Adt(adt, _) = substs.type_at(0).kind() { if cx.tcx.is_diagnostic_item(sym::cstring_type, adt.did()) { - cx.struct_span_lint( + cx.emit_spanned_lint( TEMPORARY_CSTRING_AS_PTR, as_ptr_span, - fluent::lint_cstring_ptr, - |diag| { - diag.span_label(as_ptr_span, fluent::as_ptr_label) - .span_label(unwrap.span, fluent::unwrap_label) - .note(fluent::note) - .help(fluent::help) - }, + CStringPtr { as_ptr: as_ptr_span, unwrap: unwrap.span }, ); } } From c63ba52562a0c6c8d19b320c558d437bb8d87bd8 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 18 Sep 2022 10:03:35 -0400 Subject: [PATCH 355/478] migrate: `array_into_iter.rs` --- compiler/rustc_lint/src/array_into_iter.rs | 52 ++++++++-------------- compiler/rustc_lint/src/lints.rs | 32 ++++++++++--- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/compiler/rustc_lint/src/array_into_iter.rs b/compiler/rustc_lint/src/array_into_iter.rs index abebc533cc17..ea5975ed4f0b 100644 --- a/compiler/rustc_lint/src/array_into_iter.rs +++ b/compiler/rustc_lint/src/array_into_iter.rs @@ -1,5 +1,7 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ArrayIntoIterDiag, ArrayIntoIterDiagSub}; use crate::{LateContext, LateLintPass, LintContext}; -use rustc_errors::{fluent, Applicability}; use rustc_hir as hir; use rustc_middle::ty; use rustc_middle::ty::adjustment::{Adjust, Adjustment}; @@ -118,41 +120,23 @@ impl<'tcx> LateLintPass<'tcx> for ArrayIntoIter { // to an array or to a slice. _ => bug!("array type coerced to something other than array or slice"), }; - cx.struct_span_lint( + let sub = if self.for_expr_span == expr.span { + Some(ArrayIntoIterDiagSub::RemoveIntoIter { + span: receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()), + }) + } else if receiver_ty.is_array() { + Some(ArrayIntoIterDiagSub::UseExplicitIntoIter { + start_span: expr.span.shrink_to_lo(), + end_span: receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()), + }) + } else { + None + }; + cx.emit_spanned_lint( ARRAY_INTO_ITER, call.ident.span, - fluent::lint_array_into_iter, - |diag| { - diag.set_arg("target", target); - diag.span_suggestion( - call.ident.span, - fluent::use_iter_suggestion, - "iter", - Applicability::MachineApplicable, - ); - if self.for_expr_span == expr.span { - diag.span_suggestion( - receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()), - fluent::remove_into_iter_suggestion, - "", - Applicability::MaybeIncorrect, - ); - } else if receiver_ty.is_array() { - diag.multipart_suggestion( - fluent::use_explicit_into_iter_suggestion, - vec![ - (expr.span.shrink_to_lo(), "IntoIterator::into_iter(".into()), - ( - receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()), - ")".into(), - ), - ], - Applicability::MaybeIncorrect, - ); - } - diag - }, - ) + ArrayIntoIterDiag { target, suggestion: call.ident.span, sub }, + ); } } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 8ad62672f6e6..9bfd000351a8 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,32 @@ use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +#[derive(LintDiagnostic)] +#[diag(lint_array_into_iter)] +pub struct ArrayIntoIterDiag<'a> { + pub target: &'a str, + #[suggestion(use_iter_suggestion, code = "iter", applicability = "machine-applicable")] + pub suggestion: Span, + #[subdiagnostic] + pub sub: Option, +} + +#[derive(SessionSubdiagnostic)] +pub enum ArrayIntoIterDiagSub { + #[suggestion(remove_into_iter_suggestion, code = "", applicability = "maybe-incorrect")] + RemoveIntoIter { + #[primary_span] + span: Span, + }, + #[multipart_suggestion(use_explicit_into_iter_suggestion, applicability = "maybe-incorrect")] + UseExplicitIntoIter { + #[suggestion_part(code = "IntoIterator::into_iter(")] + start_span: Span, + #[suggestion_part(code = ")")] + end_span: Span, + }, +} + #[derive(LintDiagnostic)] #[diag(lint_cstring_ptr)] #[note] @@ -454,11 +480,7 @@ pub struct PathStatementDrop { #[derive(SessionSubdiagnostic)] pub enum PathStatementDropSub { - #[suggestion( - suggestion, - code = "drop({snippet});", - applicability = "machine-applicable" - )] + #[suggestion(suggestion, code = "drop({snippet});", applicability = "machine-applicable")] Suggestion { #[primary_span] span: Span, From 8b897bbce6902a646f5de5df6ec4d92b0af98788 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 18 Sep 2022 10:31:35 -0400 Subject: [PATCH 356/478] migrate: `early.rs` and `enum_intrinsics_non_enums.rs` --- compiler/rustc_lint/src/early.rs | 3 +++ .../src/enum_intrinsics_non_enums.rs | 19 +++++++++++-------- compiler/rustc_lint/src/errors.rs | 1 + compiler/rustc_lint/src/lints.rs | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_lint/src/early.rs b/compiler/rustc_lint/src/early.rs index c18abaef8e25..58b1ae6e8001 100644 --- a/compiler/rustc_lint/src/early.rs +++ b/compiler/rustc_lint/src/early.rs @@ -1,3 +1,5 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] //! Implementation of lint checking. //! //! The lint checking is mostly consolidated into one pass which runs @@ -39,6 +41,7 @@ pub struct EarlyContextAndPass<'a, T: EarlyLintPass> { impl<'a, T: EarlyLintPass> EarlyContextAndPass<'a, T> { // This always-inlined function is for the hot call site. #[inline(always)] + #[allow(rustc::diagnostic_outside_of_impl)] fn inlined_check_id(&mut self, id: ast::NodeId) { for early_lint in self.context.buffered.take(id) { let BufferedEarlyLint { span, msg, node_id: _, lint_id, diagnostic } = early_lint; diff --git a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs index f9d7466228ad..6c398cebee77 100644 --- a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs +++ b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs @@ -1,5 +1,10 @@ -use crate::{context::LintContext, LateContext, LateLintPass}; -use rustc_errors::fluent; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::{ + context::LintContext, + lints::{EnumIntrinsicsMemDiscriminate, EnumIntrinsicsMemVariant}, + LateContext, LateLintPass, +}; use rustc_hir as hir; use rustc_middle::ty::{visit::TypeVisitable, Ty}; use rustc_span::{symbol::sym, Span}; @@ -50,11 +55,10 @@ fn enforce_mem_discriminant( ) { let ty_param = cx.typeck_results().node_substs(func_expr.hir_id).type_at(0); if is_non_enum(ty_param) { - cx.struct_span_lint( + cx.emit_spanned_lint( ENUM_INTRINSICS_NON_ENUMS, expr_span, - fluent::lint_enum_intrinsics_mem_discriminant, - |lint| lint.set_arg("ty_param", ty_param).span_note(args_span, fluent::note), + EnumIntrinsicsMemDiscriminate { ty_param, note: args_span }, ); } } @@ -62,11 +66,10 @@ fn enforce_mem_discriminant( fn enforce_mem_variant_count(cx: &LateContext<'_>, func_expr: &hir::Expr<'_>, span: Span) { let ty_param = cx.typeck_results().node_substs(func_expr.hir_id).type_at(0); if is_non_enum(ty_param) { - cx.struct_span_lint( + cx.emit_spanned_lint( ENUM_INTRINSICS_NON_ENUMS, span, - fluent::lint_enum_intrinsics_mem_variant, - |lint| lint.set_arg("ty_param", ty_param).note(fluent::note), + EnumIntrinsicsMemVariant { ty_param }, ); } } diff --git a/compiler/rustc_lint/src/errors.rs b/compiler/rustc_lint/src/errors.rs index 1a769893f552..cc34357fa4bc 100644 --- a/compiler/rustc_lint/src/errors.rs +++ b/compiler/rustc_lint/src/errors.rs @@ -38,6 +38,7 @@ impl AddToDiagnostic for OverruledAttributeSub { OverruledAttributeSub::NodeSource { span, reason } => { diag.span_label(span, fluent::lint_node_source); if let Some(rationale) = reason { + #[allow(rustc::diagnostic_outside_of_impl)] diag.note(rationale.as_str()); } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 9bfd000351a8..686aca2d404e 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -32,6 +32,21 @@ pub enum ArrayIntoIterDiagSub { }, } +#[derive(LintDiagnostic)] +#[diag(lint_enum_intrinsics_mem_discriminant)] +pub struct EnumIntrinsicsMemDiscriminate<'a> { + pub ty_param: Ty<'a>, + #[note] + pub note: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_enum_intrinsics_mem_variant)] +#[note] +pub struct EnumIntrinsicsMemVariant<'a> { + pub ty_param: Ty<'a>, +} + #[derive(LintDiagnostic)] #[diag(lint_cstring_ptr)] #[note] From e3bb2ebfbfba0e928f27d2aea04cc070a1b8ebfe Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 21 Sep 2022 20:42:52 -0400 Subject: [PATCH 357/478] add: `lints` for `errors.rs` --- compiler/rustc_lint/src/errors.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_lint/src/errors.rs b/compiler/rustc_lint/src/errors.rs index cc34357fa4bc..82ec88fbeebd 100644 --- a/compiler/rustc_lint/src/errors.rs +++ b/compiler/rustc_lint/src/errors.rs @@ -1,3 +1,5 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] use rustc_errors::{ fluent, AddToDiagnostic, Diagnostic, ErrorGuaranteed, Handler, IntoDiagnostic, SubdiagnosticMessage, @@ -38,7 +40,7 @@ impl AddToDiagnostic for OverruledAttributeSub { OverruledAttributeSub::NodeSource { span, reason } => { diag.span_label(span, fluent::lint_node_source); if let Some(rationale) = reason { - #[allow(rustc::diagnostic_outside_of_impl)] + #[allow(rustc::untranslatable_diagnostic)] diag.note(rationale.as_str()); } } From dc00aa31142199ac6901fd08e4e4fd2be9b22be3 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 21 Sep 2022 20:47:24 -0400 Subject: [PATCH 358/478] update: `lints.rs` for renamed traits update: `lints.rs` for renamed `SessionSubdiagnostic` and `AddSubdiagnostic` fix: NonSnakeCaseDiagSub fix: OverflowingBinHexSign --- compiler/rustc_lint/src/lints.rs | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 686aca2d404e..431ded9cd5f2 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,6 +1,6 @@ -use rustc_errors::{fluent, AddSubdiagnostic, Applicability, DecorateLint, EmissionGuarantee}; +use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, EmissionGuarantee}; use rustc_hir::def_id::DefId; -use rustc_macros::{LintDiagnostic, SessionSubdiagnostic}; +use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; use rustc_span::{symbol::Ident, Span, Symbol}; @@ -16,7 +16,7 @@ pub struct ArrayIntoIterDiag<'a> { pub sub: Option, } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum ArrayIntoIterDiagSub { #[suggestion(remove_into_iter_suggestion, code = "", applicability = "maybe-incorrect")] RemoveIntoIter { @@ -129,7 +129,7 @@ pub struct NonCamelCaseType<'a> { pub sub: NonCamelCaseTypeSub, } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum NonCamelCaseTypeSub { #[label(label)] Label { @@ -162,8 +162,14 @@ pub enum NonSnakeCaseDiagSub { SuggestionAndNote { span: Span }, } -impl AddSubdiagnostic for NonSnakeCaseDiagSub { - fn add_to_diagnostic(self, diag: &mut rustc_errors::Diagnostic) { +impl AddToDiagnostic for NonSnakeCaseDiagSub { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { match self { NonSnakeCaseDiagSub::Label { span } => { diag.span_label(span, fluent::label); @@ -209,7 +215,7 @@ pub struct NonUpperCaseGlobal<'a> { pub sub: NonUpperCaseGlobalSub, } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum NonUpperCaseGlobalSub { #[label(label)] Label { @@ -307,8 +313,14 @@ pub enum OverflowingBinHexSign { Negative, } -impl AddSubdiagnostic for OverflowingBinHexSign { - fn add_to_diagnostic(self, diag: &mut rustc_errors::Diagnostic) { +impl AddToDiagnostic for OverflowingBinHexSign { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { match self { OverflowingBinHexSign::Positive => { diag.note(fluent::positive_note); @@ -321,7 +333,7 @@ impl AddSubdiagnostic for OverflowingBinHexSign { } } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum OverflowingBinHexSub<'a> { #[suggestion( suggestion, @@ -493,7 +505,7 @@ pub struct PathStatementDrop { pub sub: PathStatementDropSub, } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum PathStatementDropSub { #[suggestion(suggestion, code = "drop({snippet});", applicability = "machine-applicable")] Suggestion { From a0614ec2c3184a025692fc06aacb0df50fba2a19 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Tue, 4 Oct 2022 17:54:47 -0400 Subject: [PATCH 359/478] fix: merge conflict --- compiler/rustc_lint/src/lints.rs | 76 ++++++++++++++------- compiler/rustc_lint/src/noop_method_call.rs | 1 - compiler/rustc_lint/src/types.rs | 7 +- 3 files changed, 55 insertions(+), 29 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 431ded9cd5f2..391c4cb671d5 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,4 +1,4 @@ -use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, EmissionGuarantee}; +use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; @@ -88,9 +88,11 @@ pub struct NonFmtPanicUnused { pub suggestion: Option, } -impl DecorateLint<'_, G> for NonFmtPanicUnused { - fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { - let mut diag = diag.build(fluent::lint_non_fmt_panic_unused); +impl<'a> DecorateLint<'a, ()> for NonFmtPanicUnused { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { diag.set_arg("count", self.count); diag.note(fluent::note); if let Some(span) = self.suggestion { @@ -107,7 +109,11 @@ impl DecorateLint<'_, G> for NonFmtPanicUnused { Applicability::MachineApplicable, ); } - diag.emit(); + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_non_fmt_panic_unused } } @@ -202,7 +208,7 @@ impl AddToDiagnostic for NonSnakeCaseDiagSub { Applicability::MaybeIncorrect, ); } - }; + } } } @@ -262,12 +268,17 @@ pub struct DropTraitConstraintsDiag<'a> { pub def_id: DefId, } -impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for DropTraitConstraintsDiag<'a> { - fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { - let mut diag = diag.build(fluent::lint_drop_trait_constraints); +impl<'a> DecorateLint<'a, ()> for DropTraitConstraintsDiag<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { diag.set_arg("predicate", self.predicate); - diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)); - diag.emit(); + diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)) + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_drop_trait_constraints } } @@ -276,11 +287,16 @@ pub struct DropGlue<'a> { pub def_id: DefId, } -impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for DropGlue<'a> { - fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { - let mut diag = diag.build(fluent::lint_drop_glue); - diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)); - diag.emit(); +impl<'a> DecorateLint<'a, ()> for DropGlue<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("needs_drop", self.tcx.def_path_str(self.def_id)) + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_drop_glue } } @@ -359,9 +375,11 @@ pub struct OverflowingInt<'a> { } // FIXME: refactor with `Option<&'a str>` in macro -impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for OverflowingInt<'a> { - fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { - let mut diag = diag.build(fluent::lint_overflowing_int); +impl<'a> DecorateLint<'a, ()> for OverflowingInt<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { diag.set_arg("ty", self.ty); diag.set_arg("lit", self.lit); diag.set_arg("min", self.min); @@ -371,7 +389,11 @@ impl<'a, G: EmissionGuarantee> DecorateLint<'_, G> for OverflowingInt<'a> { diag.set_arg("suggestion_ty", suggestion_ty); diag.help(fluent::help); } - diag.emit(); + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_overflowing_int } } @@ -484,9 +506,11 @@ pub struct UnusedDef<'a, 'b> { } // FIXME: refactor with `Option` in macro -impl<'a, 'b, G: EmissionGuarantee> DecorateLint<'_, G> for UnusedDef<'a, 'b> { - fn decorate_lint(self, diag: rustc_errors::LintDiagnosticBuilder<'_, G>) { - let mut diag = diag.build(fluent::lint_unused_def); +impl<'a> DecorateLint<'a, ()> for UnusedDef<'_, '_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { diag.set_arg("pre", self.pre); diag.set_arg("post", self.post); diag.set_arg("def", self.cx.tcx.def_path_str(self.def_id)); @@ -494,7 +518,11 @@ impl<'a, 'b, G: EmissionGuarantee> DecorateLint<'_, G> for UnusedDef<'a, 'b> { if let Some(note) = self.note { diag.note(note.as_str()); } - diag.emit(); + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_unused_def } } diff --git a/compiler/rustc_lint/src/noop_method_call.rs b/compiler/rustc_lint/src/noop_method_call.rs index 3fba95f0750d..ed796940b89d 100644 --- a/compiler/rustc_lint/src/noop_method_call.rs +++ b/compiler/rustc_lint/src/noop_method_call.rs @@ -2,7 +2,6 @@ #![deny(rustc::diagnostic_outside_of_impl)] use crate::context::LintContext; use crate::lints::NoopMethodCallDiag; -use crate::rustc_middle::ty::TypeVisitable; use crate::LateContext; use crate::LateLintPass; use rustc_hir::def::DefKind; diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index 46e957d15931..3d797d84c04f 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1138,10 +1138,9 @@ impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> { CItemKind::Definition => "fn", }; #[allow(rustc::diagnostic_outside_of_impl)] - let mut diag = lint.build(fluent::lint_improper_ctypes); - diag.set_arg("ty", ty); - diag.set_arg("desc", item_description); - diag.span_label(sp, fluent::label); + lint.set_arg("ty", ty); + lint.set_arg("desc", item_description); + lint.span_label(sp, fluent::label); if let Some(help) = help { lint.help(help); } From f9289c35fb0a6e1ddde9200423cdd7d5dafb0886 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Tue, 4 Oct 2022 19:39:02 -0400 Subject: [PATCH 360/478] refactor: comment about lint location --- compiler/rustc_lint/src/lints.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 391c4cb671d5..42deb455b061 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -6,6 +6,7 @@ use rustc_span::{symbol::Ident, Span, Symbol}; use crate::LateContext; +// array_into_iter.rs #[derive(LintDiagnostic)] #[diag(lint_array_into_iter)] pub struct ArrayIntoIterDiag<'a> { @@ -32,6 +33,7 @@ pub enum ArrayIntoIterDiagSub { }, } +// enum_intrinsics_non_enums.rs #[derive(LintDiagnostic)] #[diag(lint_enum_intrinsics_mem_discriminant)] pub struct EnumIntrinsicsMemDiscriminate<'a> { @@ -47,6 +49,7 @@ pub struct EnumIntrinsicsMemVariant<'a> { pub ty_param: Ty<'a>, } +// methods.rs #[derive(LintDiagnostic)] #[diag(lint_cstring_ptr)] #[note] @@ -57,6 +60,8 @@ pub struct CStringPtr { #[label(unwrap_label)] pub unwrap: Span, } + +// non_ascii_idents.rs #[derive(LintDiagnostic)] #[diag(lint_identifier_non_ascii_char)] pub struct IdentifierNonAsciiChar; @@ -83,6 +88,7 @@ pub struct MixedScriptConfusables { pub includes: String, } +// non_fmt_panic.rs pub struct NonFmtPanicUnused { pub count: usize, pub suggestion: Option, @@ -126,6 +132,7 @@ pub struct NonFmtPanicBraces { pub suggestion: Option, } +// nonstandard_style.rs #[derive(LintDiagnostic)] #[diag(lint_non_camel_case_type)] pub struct NonCamelCaseType<'a> { @@ -236,6 +243,7 @@ pub enum NonUpperCaseGlobalSub { }, } +// noop_method_call.rs #[derive(LintDiagnostic)] #[diag(lint_noop_method_call)] #[note] @@ -246,6 +254,7 @@ pub struct NoopMethodCallDiag<'a> { pub label: Span, } +// pass_by_value.rs #[derive(LintDiagnostic)] #[diag(lint_pass_by_value)] pub struct PassByValueDiag { @@ -254,6 +263,7 @@ pub struct PassByValueDiag { pub suggestion: Span, } +// redundant_semicolon.rs #[derive(LintDiagnostic)] #[diag(lint_redundant_semicolons)] pub struct RedundantSemicolonsDiag { @@ -262,6 +272,7 @@ pub struct RedundantSemicolonsDiag { pub suggestion: Span, } +// traits.rs pub struct DropTraitConstraintsDiag<'a> { pub predicate: Predicate<'a>, pub tcx: TyCtxt<'a>, @@ -300,6 +311,7 @@ impl<'a> DecorateLint<'a, ()> for DropGlue<'_> { } } +// types.rs #[derive(LintDiagnostic)] #[diag(lint_range_endpoint_out_of_range)] pub struct RangeEndpointOutOfRange<'a> { @@ -457,6 +469,7 @@ pub struct InvalidAtomicOrderingDiag { pub fail_order_arg_span: Span, } +// unused.rs #[derive(LintDiagnostic)] #[diag(lint_unused_op)] pub struct UnusedOp<'a> { From ab66ea61cf4b6f47109d9c24d5a3ce3ea169c60a Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 5 Oct 2022 08:23:00 -0400 Subject: [PATCH 361/478] add: `emit{,_spanned}_lint` for `LintLevelsBuilder` add: `emit_spanned_lint` and `emit_lint` for `LintLevelsBuilder` migrate: `DeprecatedLintName` --- .../locales/en-US/lint.ftl | 4 ++ compiler/rustc_lint/src/levels.rs | 48 +++++++++++-------- compiler/rustc_lint/src/lints.rs | 10 ++++ 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 2eb409a5ddd5..78b8f6aaae9e 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -16,6 +16,10 @@ lint_enum_intrinsics_mem_variant = lint_expectation = this lint expectation is unfulfilled .note = the `unfulfilled_lint_expectations` lint can't be expected and will always produce this message +lint_deprecated_lint_name = + lint name `{$name}` is deprecated and may not have an effect in the future. + .suggestion = change it to + lint_hidden_unicode_codepoints = unicode codepoint changing visible direction of text present in {$label} .label = this {$label} contains {$count -> [one] an invisible diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs index e9d3d44a3f9f..edbf0c6f37a0 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -1,9 +1,12 @@ use crate::context::{CheckLintNameResult, LintStore}; use crate::late::unerased_lint_store; +use crate::lints::DeprecatedLintName; use rustc_ast as ast; use rustc_ast_pretty::pprust; use rustc_data_structures::fx::FxHashMap; -use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder, DiagnosticMessage, MultiSpan}; +use rustc_errors::{ + Applicability, DecorateLint, Diagnostic, DiagnosticBuilder, DiagnosticMessage, MultiSpan, +}; use rustc_hir as hir; use rustc_hir::intravisit::{self, Visitor}; use rustc_hir::HirId; @@ -858,25 +861,13 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { } Err((Some(ids), ref new_lint_name)) => { let lint = builtin::RENAMED_AND_REMOVED_LINTS; - let (lvl, src) = self.provider.get_lint_level(lint, &sess); - struct_lint_level( - self.sess, + self.emit_spanned_lint( lint, - lvl, - src, - Some(sp.into()), - format!( - "lint name `{}` is deprecated \ - and may not have an effect in the future.", - name - ), - |lint| { - lint.span_suggestion( - sp, - "change it to", - new_lint_name, - Applicability::MachineApplicable, - ) + sp.into(), + DeprecatedLintName { + name, + suggestion: sp, + replace: &new_lint_name, }, ); @@ -1086,6 +1077,25 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { let (level, src) = self.lint_level(lint); struct_lint_level(self.sess, lint, level, src, span, msg, decorate) } + + pub fn emit_spanned_lint( + &self, + lint: &'static Lint, + span: MultiSpan, + decorate: impl for<'a> DecorateLint<'a, ()>, + ) { + let (level, src) = self.lint_level(lint); + struct_lint_level(self.sess, lint, level, src, Some(span), decorate.msg(), |lint| { + decorate.decorate_lint(lint) + }); + } + + pub fn emit_lint(&self, lint: &'static Lint, decorate: impl for<'a> DecorateLint<'a, ()>) { + let (level, src) = self.lint_level(lint); + struct_lint_level(self.sess, lint, level, src, None, decorate.msg(), |lint| { + decorate.decorate_lint(lint) + }); + } } pub(crate) fn provide(providers: &mut Providers) { diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 42deb455b061..942497a1d57a 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -49,6 +49,16 @@ pub struct EnumIntrinsicsMemVariant<'a> { pub ty_param: Ty<'a>, } +// levels.rs +#[derive(LintDiagnostic)] +#[diag(lint::deprecated_lint_name)] +pub struct DeprecatedLintName<'a> { + pub name: String, + #[suggestion(code = "{replace}", applicability = "machine-applicable")] + pub suggestion: Span, + pub replace: &'a str, +} + // methods.rs #[derive(LintDiagnostic)] #[diag(lint_cstring_ptr)] From 80df25e1601880a2386495b469b19b60034ca382 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Thu, 6 Oct 2022 20:28:51 -0400 Subject: [PATCH 362/478] migrate: `levels.rs` --- .../locales/en-US/lint.ftl | 12 ++ compiler/rustc_lint/src/errors.rs | 4 +- compiler/rustc_lint/src/levels.rs | 142 +++++------------- compiler/rustc_lint/src/lints.rs | 77 +++++++++- 4 files changed, 128 insertions(+), 107 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 78b8f6aaae9e..babdbb1cc196 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -20,6 +20,18 @@ lint_deprecated_lint_name = lint name `{$name}` is deprecated and may not have an effect in the future. .suggestion = change it to +lint_renamed_or_removed_lint_suggestion = use the new name + +lint_unknown_lint = + unknown lint: `{$name}` + .suggestion = did you mean + +lint_ignored_unless_crate_specified = {$level}({$name}) is ignored unless specified at crate level + +lint_unknown_gated_lint = + unknown lint: `{$name}` + .note = the `{$name}` lint is unstable + lint_hidden_unicode_codepoints = unicode codepoint changing visible direction of text present in {$label} .label = this {$label} contains {$count -> [one] an invisible diff --git a/compiler/rustc_lint/src/errors.rs b/compiler/rustc_lint/src/errors.rs index 82ec88fbeebd..0ea643fd69b6 100644 --- a/compiler/rustc_lint/src/errors.rs +++ b/compiler/rustc_lint/src/errors.rs @@ -10,12 +10,12 @@ use rustc_span::{Span, Symbol}; #[derive(Diagnostic)] #[diag(lint_overruled_attribute, code = "E0453")] -pub struct OverruledAttribute { +pub struct OverruledAttribute<'a> { #[primary_span] pub span: Span, #[label] pub overruled: Span, - pub lint_level: String, + pub lint_level: &'a str, pub lint_source: Symbol, #[subdiagnostic] pub sub: OverruledAttributeSub, diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs index edbf0c6f37a0..b335f330f5d4 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -1,12 +1,15 @@ +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] use crate::context::{CheckLintNameResult, LintStore}; use crate::late::unerased_lint_store; -use crate::lints::DeprecatedLintName; +use crate::lints::{ + DeprecatedLintName, IgnoredUnlessCrateSpecified, OverruledAtributeLint, RenamedOrRemovedLint, + UnknownLint, +}; use rustc_ast as ast; use rustc_ast_pretty::pprust; use rustc_data_structures::fx::FxHashMap; -use rustc_errors::{ - Applicability, DecorateLint, Diagnostic, DiagnosticBuilder, DiagnosticMessage, MultiSpan, -}; +use rustc_errors::{fluent, DecorateLint, DiagnosticBuilder, DiagnosticMessage, MultiSpan}; use rustc_hir as hir; use rustc_hir::intravisit::{self, Visitor}; use rustc_hir::HirId; @@ -18,6 +21,7 @@ use rustc_middle::lint::{ }; use rustc_middle::ty::query::Providers; use rustc_middle::ty::{RegisteredTools, TyCtxt}; +use rustc_session::lint::builtin::{RENAMED_AND_REMOVED_LINTS, UNKNOWN_LINTS, UNUSED_ATTRIBUTES}; use rustc_session::lint::{ builtin::{self, FORBIDDEN_LINT_GROUPS, SINGLE_USE_LIFETIMES, UNFULFILLED_LINT_EXPECTATIONS}, Level, Lint, LintExpectationId, LintId, @@ -586,57 +590,32 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { old_src, id_name ); - - let decorate_diag = |diag: &mut Diagnostic| { - diag.span_label(src.span(), "overruled by previous forbid"); - match old_src { - LintLevelSource::Default => { - diag.note(&format!( - "`forbid` lint level is the default for {}", - id.to_string() - )); - } - LintLevelSource::Node { span, reason, .. } => { - diag.span_label(span, "`forbid` level set here"); - if let Some(rationale) = reason { - diag.note(rationale.as_str()); - } - } - LintLevelSource::CommandLine(_, _) => { - diag.note("`forbid` lint level was set on command line"); - } + let sub = match old_src { + LintLevelSource::Default => { + OverruledAttributeSub::DefaultSource { id: id.to_string() } } + LintLevelSource::Node { span, reason, .. } => { + OverruledAttributeSub::NodeSource { span, reason } + } + LintLevelSource::CommandLine(_, _) => OverruledAttributeSub::CommandLineSource, }; if !fcw_warning { self.sess.emit_err(OverruledAttribute { span: src.span(), overruled: src.span(), - lint_level: level.as_str().to_string(), + lint_level: level.as_str(), lint_source: src.name(), - sub: match old_src { - LintLevelSource::Default => { - OverruledAttributeSub::DefaultSource { id: id.to_string() } - } - LintLevelSource::Node { span, reason, .. } => { - OverruledAttributeSub::NodeSource { span, reason } - } - LintLevelSource::CommandLine(_, _) => { - OverruledAttributeSub::CommandLineSource - } - }, + sub, }); } else { - self.struct_lint( + self.emit_spanned_lint( FORBIDDEN_LINT_GROUPS, - Some(src.span().into()), - format!( - "{}({}) incompatible with previous forbid", - level.as_str(), - src.name(), - ), - |lint| { - decorate_diag(lint); - lint + src.span().into(), + OverruledAtributeLint { + overruled: src.span(), + lint_level: level.as_str(), + lint_source: src.name(), + sub, }, ); } @@ -908,54 +887,22 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { _ if !self.warn_about_weird_lints => {} CheckLintNameResult::Warning(msg, renamed) => { - let lint = builtin::RENAMED_AND_REMOVED_LINTS; - let (renamed_lint_level, src) = self.provider.get_lint_level(lint, &sess); - struct_lint_level( - self.sess, - lint, - renamed_lint_level, - src, - Some(sp.into()), - msg, - |lint| { - if let Some(new_name) = &renamed { - lint.span_suggestion( - sp, - "use the new name", - new_name, - Applicability::MachineApplicable, - ); - } - lint - }, + self.emit_spanned_lint( + RENAMED_AND_REMOVED_LINTS, + sp.into(), + RenamedOrRemovedLint { msg, suggestion: sp, renamed }, ); } CheckLintNameResult::NoLint(suggestion) => { - let lint = builtin::UNKNOWN_LINTS; - let (level, src) = self.provider.get_lint_level(lint, self.sess); let name = if let Some(tool_ident) = tool_ident { format!("{}::{}", tool_ident.name, name) } else { name.to_string() }; - struct_lint_level( - self.sess, - lint, - level, - src, - Some(sp.into()), - format!("unknown lint: `{}`", name), - |lint| { - if let Some(suggestion) = suggestion { - lint.span_suggestion( - sp, - "did you mean", - suggestion, - Applicability::MaybeIncorrect, - ); - } - lint - }, + self.emit_spanned_lint( + UNKNOWN_LINTS, + sp.into(), + UnknownLint { name, suggestion: sp, replace: suggestion }, ); } } @@ -1001,20 +948,10 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { continue }; - let lint = builtin::UNUSED_ATTRIBUTES; - let (lint_level, lint_src) = self.provider.get_lint_level(lint, &self.sess); - struct_lint_level( - self.sess, - lint, - lint_level, - lint_src, - Some(lint_attr_span.into()), - format!( - "{}({}) is ignored unless specified at crate level", - level.as_str(), - lint_attr_name - ), - |lint| lint, + self.emit_spanned_lint( + UNUSED_ATTRIBUTES, + lint_attr_span.into(), + IgnoredUnlessCrateSpecified { level: level.as_str(), name: lint_attr_name }, ); // don't set a separate error for every lint in the group break; @@ -1038,11 +975,10 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { level, src, Some(span.into()), - format!("unknown lint: `{}`", lint_id.lint.name_lower()), + fluent::lint_unknown_gated_lint, |lint| { - lint.note( - &format!("the `{}` lint is unstable", lint_id.lint.name_lower(),), - ); + lint.set_arg("name", lint_id.lint.name_lower()); + lint.note(fluent::note); add_feature_diagnostics(lint, &self.sess.parse_sess, feature); lint }, diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 942497a1d57a..eb86bb7b9250 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -4,7 +4,7 @@ use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; use rustc_span::{symbol::Ident, Span, Symbol}; -use crate::LateContext; +use crate::{errors::OverruledAttributeSub, LateContext}; // array_into_iter.rs #[derive(LintDiagnostic)] @@ -51,7 +51,18 @@ pub struct EnumIntrinsicsMemVariant<'a> { // levels.rs #[derive(LintDiagnostic)] -#[diag(lint::deprecated_lint_name)] +#[diag(lint_overruled_attribute)] +pub struct OverruledAtributeLint<'a> { + #[label] + pub overruled: Span, + pub lint_level: &'a str, + pub lint_source: Symbol, + #[subdiagnostic] + pub sub: OverruledAttributeSub, +} + +#[derive(LintDiagnostic)] +#[diag(lint_deprecated_lint_name)] pub struct DeprecatedLintName<'a> { pub name: String, #[suggestion(code = "{replace}", applicability = "machine-applicable")] @@ -59,6 +70,68 @@ pub struct DeprecatedLintName<'a> { pub replace: &'a str, } +pub struct RenamedOrRemovedLint<'a> { + pub msg: &'a str, + pub suggestion: Span, + pub renamed: &'a Option, +} + +impl<'a> DecorateLint<'a, ()> for RenamedOrRemovedLint<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + if let Some(new_name) = self.renamed { + diag.span_suggestion( + self.suggestion, + fluent::lint_renamed_or_removed_lint_suggestion, + new_name, + Applicability::MachineApplicable, + ); + }; + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + rustc_errors::DiagnosticMessage::Str(self.msg.to_string()) + } +} + +pub struct UnknownLint<'a> { + pub name: String, + pub suggestion: Span, + pub replace: &'a Option, +} + +impl<'a> DecorateLint<'a, ()> for UnknownLint<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("name", self.name); + if let Some(replace) = self.replace { + diag.span_suggestion( + self.suggestion, + fluent::suggestion, + replace, + Applicability::MaybeIncorrect, + ); + }; + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_unknown_lint + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_ignored_unless_crate_specified)] +pub struct IgnoredUnlessCrateSpecified<'a> { + pub level: &'a str, + pub name: Symbol, +} + // methods.rs #[derive(LintDiagnostic)] #[diag(lint_cstring_ptr)] From e6100479404c194a4801f577be2e9f69b4c6fef9 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Fri, 7 Oct 2022 06:14:56 -0400 Subject: [PATCH 363/478] migrate: `let_underscore.rs` fix: NonBindingLetSub --- .../locales/en-US/lint.ftl | 12 +++++ compiler/rustc_lint/src/let_underscore.rs | 49 ++++++------------- compiler/rustc_lint/src/lints.rs | 46 +++++++++++++++++ 3 files changed, 74 insertions(+), 33 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index babdbb1cc196..2423d9c0ef99 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -16,6 +16,18 @@ lint_enum_intrinsics_mem_variant = lint_expectation = this lint expectation is unfulfilled .note = the `unfulfilled_lint_expectations` lint can't be expected and will always produce this message +lint_non_binding_let_on_sync_lock = + non-binding let on a synchronization lock + +lint_non_binding_let_on_drop_type = + non-binding let on a type that implements `Drop` + +lint_non_binding_let_suggestion = + consider binding to an unused variable to avoid immediately dropping the value + +lint_non_binding_let_multi_suggestion = + consider immediately dropping the value + lint_deprecated_lint_name = lint name `{$name}` is deprecated and may not have an effect in the future. .suggestion = change it to diff --git a/compiler/rustc_lint/src/let_underscore.rs b/compiler/rustc_lint/src/let_underscore.rs index 04d844d21dc3..991b3e920adb 100644 --- a/compiler/rustc_lint/src/let_underscore.rs +++ b/compiler/rustc_lint/src/let_underscore.rs @@ -1,5 +1,10 @@ -use crate::{LateContext, LateLintPass, LintContext}; -use rustc_errors::{Applicability, DiagnosticBuilder, MultiSpan}; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::{ + lints::{NonBindingLet, NonBindingLetSub}, + LateContext, LateLintPass, LintContext, +}; +use rustc_errors::MultiSpan; use rustc_hir as hir; use rustc_middle::ty; use rustc_span::Symbol; @@ -119,6 +124,11 @@ impl<'tcx> LateLintPass<'tcx> for LetUnderscore { _ => false, }; + let sub = NonBindingLetSub { + suggestion: local.pat.span, + multi_suggestion_start: local.span.until(init.span), + multi_suggestion_end: init.span.shrink_to_hi(), + }; if is_sync_lock { let mut span = MultiSpan::from_spans(vec![local.pat.span, init.span]); span.push_span_label( @@ -129,41 +139,14 @@ impl<'tcx> LateLintPass<'tcx> for LetUnderscore { init.span, "this binding will immediately drop the value assigned to it".to_string(), ); - cx.struct_span_lint( - LET_UNDERSCORE_LOCK, - span, - "non-binding let on a synchronization lock", - |lint| build_lint(lint, local, init.span), - ) + cx.emit_spanned_lint(LET_UNDERSCORE_LOCK, span, NonBindingLet::SyncLock { sub }); } else { - cx.struct_span_lint( + cx.emit_spanned_lint( LET_UNDERSCORE_DROP, local.span, - "non-binding let on a type that implements `Drop`", - |lint| build_lint(lint, local, init.span), - ) + NonBindingLet::DropType { sub }, + ); } } } } - -fn build_lint<'a, 'b>( - lint: &'a mut DiagnosticBuilder<'b, ()>, - local: &hir::Local<'_>, - init_span: rustc_span::Span, -) -> &'a mut DiagnosticBuilder<'b, ()> { - lint.span_suggestion_verbose( - local.pat.span, - "consider binding to an unused variable to avoid immediately dropping the value", - "_unused", - Applicability::MachineApplicable, - ) - .multipart_suggestion( - "consider immediately dropping the value", - vec![ - (local.span.until(init_span), "drop(".to_string()), - (init_span.shrink_to_hi(), ")".to_string()), - ], - Applicability::MachineApplicable, - ) -} diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index eb86bb7b9250..0f314606a94f 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -49,6 +49,52 @@ pub struct EnumIntrinsicsMemVariant<'a> { pub ty_param: Ty<'a>, } +// let_underscore.rs +#[derive(LintDiagnostic)] +pub enum NonBindingLet { + #[diag(lint::non_binding_let_on_sync_lock)] + SyncLock { + #[subdiagnostic] + sub: NonBindingLetSub, + }, + #[diag(lint::non_binding_let_on_drop_type)] + DropType { + #[subdiagnostic] + sub: NonBindingLetSub, + }, +} + +pub struct NonBindingLetSub { + pub suggestion: Span, + pub multi_suggestion_start: Span, + pub multi_suggestion_end: Span, +} + +impl AddToDiagnostic for NonBindingLetSub { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + diag.span_suggestion_verbose( + self.suggestion, + fluent::lint::non_binding_let_suggestion, + "_unused", + Applicability::MachineApplicable, + ); + diag.multipart_suggestion( + fluent::lint::non_binding_let_multi_suggestion, + vec![ + (self.multi_suggestion_start, "drop(".to_string()), + (self.multi_suggestion_end, ")".to_string()), + ], + Applicability::MachineApplicable, + ); + } +} + // levels.rs #[derive(LintDiagnostic)] #[diag(lint_overruled_attribute)] From 5ffaae758e45cc87b435b1a929c8aae9d9ea5a69 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Fri, 7 Oct 2022 06:38:20 -0400 Subject: [PATCH 364/478] migrate: `ImproperCTypes` --- compiler/rustc_lint/src/lints.rs | 42 ++++++++++++++++++++++++++++---- compiler/rustc_lint/src/types.rs | 42 ++++++++++++++------------------ 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 0f314606a94f..a6e00c3e883f 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,4 +1,4 @@ -use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint}; +use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; @@ -52,12 +52,12 @@ pub struct EnumIntrinsicsMemVariant<'a> { // let_underscore.rs #[derive(LintDiagnostic)] pub enum NonBindingLet { - #[diag(lint::non_binding_let_on_sync_lock)] + #[diag(lint_non_binding_let_on_sync_lock)] SyncLock { #[subdiagnostic] sub: NonBindingLetSub, }, - #[diag(lint::non_binding_let_on_drop_type)] + #[diag(lint_non_binding_let_on_drop_type)] DropType { #[subdiagnostic] sub: NonBindingLetSub, @@ -80,12 +80,12 @@ impl AddToDiagnostic for NonBindingLetSub { { diag.span_suggestion_verbose( self.suggestion, - fluent::lint::non_binding_let_suggestion, + fluent::lint_non_binding_let_suggestion, "_unused", Applicability::MachineApplicable, ); diag.multipart_suggestion( - fluent::lint::non_binding_let_multi_suggestion, + fluent::lint_non_binding_let_multi_suggestion, vec![ (self.multi_suggestion_start, "drop(".to_string()), (self.multi_suggestion_end, ")".to_string()), @@ -568,6 +568,38 @@ pub struct OverflowingLiteral<'a> { #[diag(lint_unused_comparisons)] pub struct UnusedComparisons; +pub struct ImproperCTypes<'a> { + pub ty: Ty<'a>, + pub desc: &'a str, + pub label: Span, + pub help: Option, + pub note: DiagnosticMessage, + pub span_note: Option, +} + +impl<'a> DecorateLint<'a, ()> for ImproperCTypes<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("ty", self.ty); + diag.set_arg("desc", self.desc); + diag.span_label(self.label, fluent::label); + if let Some(help) = self.help { + diag.help(help); + } + diag.note(self.note); + if let Some(note) = self.span_note { + diag.span_note(note, fluent::note); + } + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + fluent::lint_improper_ctypes + } +} + #[derive(LintDiagnostic)] #[diag(lint_variant_size_differences)] pub struct VariantSizeDifferencesDiag { diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index 3d797d84c04f..a112292eb141 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1,10 +1,10 @@ #![deny(rustc::untranslatable_diagnostic)] #![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ - AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, InvalidAtomicOrderingDiag, - OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, OverflowingBinHexSub, - OverflowingInt, OverflowingLiteral, OverflowingUInt, RangeEndpointOutOfRange, - UnusedComparisons, VariantSizeDifferencesDiag, + AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, ImproperCTypes, + InvalidAtomicOrderingDiag, OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, + OverflowingBinHexSub, OverflowingInt, OverflowingLiteral, OverflowingUInt, + RangeEndpointOutOfRange, UnusedComparisons, VariantSizeDifferencesDiag, }; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; @@ -1131,27 +1131,21 @@ impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> { CItemKind::Declaration => IMPROPER_CTYPES, CItemKind::Definition => IMPROPER_CTYPES_DEFINITIONS, }; - - self.cx.struct_span_lint(lint, sp, fluent::lint_improper_ctypes, |lint| { - let item_description = match self.mode { - CItemKind::Declaration => "block", - CItemKind::Definition => "fn", + let desc = match self.mode { + CItemKind::Declaration => "block", + CItemKind::Definition => "fn", + }; + let span_note = if let ty::Adt(def, _) = ty.kind() + && let Some(sp) = self.cx.tcx.hir().span_if_local(def.did()) { + Some(sp) + } else { + None }; - #[allow(rustc::diagnostic_outside_of_impl)] - lint.set_arg("ty", ty); - lint.set_arg("desc", item_description); - lint.span_label(sp, fluent::label); - if let Some(help) = help { - lint.help(help); - } - lint.note(note); - if let ty::Adt(def, _) = ty.kind() { - if let Some(sp) = self.cx.tcx.hir().span_if_local(def.did()) { - lint.span_note(sp, fluent::note); - } - } - lint - }); + self.cx.emit_spanned_lint( + lint, + sp, + ImproperCTypes { ty, desc, label: sp, help, note, span_note }, + ); } fn check_for_opaque_ty(&mut self, sp: Span, ty: Ty<'tcx>) -> bool { From 0b19227524622d953fbaefa272b36b0ef2fa263e Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sat, 22 Oct 2022 16:32:54 -0400 Subject: [PATCH 365/478] migrate: `internal.rs` --- .../locales/en-US/lint.ftl | 2 + compiler/rustc_lint/src/internal.rs | 111 ++++++------------ compiler/rustc_lint/src/lints.rs | 62 ++++++++++ 3 files changed, 99 insertions(+), 76 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 2423d9c0ef99..747588c683cc 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -83,6 +83,8 @@ lint_diag_out_of_impl = lint_untranslatable_diag = diagnostics should be created using translatable messages +lint_bad_opt_access = {$msg} + lint_cstring_ptr = getting the inner pointer of a temporary `CString` .as_ptr_label = this pointer will be invalid .unwrap_label = this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime diff --git a/compiler/rustc_lint/src/internal.rs b/compiler/rustc_lint/src/internal.rs index 48902cd05695..7d13bcff7fd5 100644 --- a/compiler/rustc_lint/src/internal.rs +++ b/compiler/rustc_lint/src/internal.rs @@ -1,9 +1,14 @@ //! Some lints that are only useful in the compiler or crates that use compiler internals, such as //! Clippy. +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::{ + BadOptAccessDiag, DefaultHashTypesDiag, DiagOutOfImpl, LintPassByHand, NonExistantDocKeyword, + QueryInstability, TyQualified, TykindDiag, TykindKind, UntranslatableDiag, +}; use crate::{EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext}; use rustc_ast as ast; -use rustc_errors::{fluent, Applicability}; use rustc_hir::def::Res; use rustc_hir::{def_id::DefId, Expr, ExprKind, GenericArg, PatKind, Path, PathSegment, QPath}; use rustc_hir::{HirId, Impl, Item, ItemKind, Node, Pat, Ty, TyKind}; @@ -29,20 +34,15 @@ impl LateLintPass<'_> for DefaultHashTypes { // don't lint imports, only actual usages return; } - let replace = match cx.tcx.get_diagnostic_name(def_id) { + let preferred = match cx.tcx.get_diagnostic_name(def_id) { Some(sym::HashMap) => "FxHashMap", Some(sym::HashSet) => "FxHashSet", _ => return, }; - cx.struct_span_lint( + cx.emit_spanned_lint( DEFAULT_HASH_TYPES, path.span, - fluent::lint_default_hash_types, - |lint| { - lint.set_arg("preferred", replace) - .set_arg("used", cx.tcx.item_name(def_id)) - .note(fluent::note) - }, + DefaultHashTypesDiag { preferred, used: cx.tcx.item_name(def_id) }, ); } } @@ -83,12 +83,11 @@ impl LateLintPass<'_> for QueryStability { if let Ok(Some(instance)) = ty::Instance::resolve(cx.tcx, cx.param_env, def_id, substs) { let def_id = instance.def_id(); if cx.tcx.has_attr(def_id, sym::rustc_lint_query_instability) { - cx.struct_span_lint( + cx.emit_spanned_lint( POTENTIAL_QUERY_INSTABILITY, span, - fluent::lint_query_instability, - |lint| lint.set_arg("query", cx.tcx.item_name(def_id)).note(fluent::note), - ) + QueryInstability { query: cx.tcx.item_name(def_id) }, + ); } } } @@ -126,14 +125,8 @@ impl<'tcx> LateLintPass<'tcx> for TyTyKind { let span = path.span.with_hi( segment.args.map_or(segment.ident.span, |a| a.span_ext).hi() ); - cx.struct_span_lint(USAGE_OF_TY_TYKIND, path.span, fluent::lint_tykind_kind, |lint| { - lint - .span_suggestion( - span, - fluent::suggestion, - "ty", - Applicability::MaybeIncorrect, // ty maybe needs an import - ) + cx.emit_spanned_lint(USAGE_OF_TY_TYKIND, path.span, TykindKind { + suggestion: span, }); } } @@ -190,39 +183,17 @@ impl<'tcx> LateLintPass<'tcx> for TyTyKind { match span { Some(span) => { - cx.struct_span_lint( - USAGE_OF_TY_TYKIND, - path.span, - fluent::lint_tykind_kind, - |lint| lint.span_suggestion( - span, - fluent::suggestion, - "ty", - Applicability::MaybeIncorrect, // ty maybe needs an import - ) - ) + cx.emit_spanned_lint(USAGE_OF_TY_TYKIND, path.span, TykindKind { + suggestion: span, + }); }, - None => cx.struct_span_lint( - USAGE_OF_TY_TYKIND, - path.span, - fluent::lint_tykind, - |lint| lint.help(fluent::help) - ) - } - } else if !ty.span.from_expansion() && let Some(t) = is_ty_or_ty_ctxt(cx, &path) { - if path.segments.len() > 1 { - cx.struct_span_lint(USAGE_OF_QUALIFIED_TY, path.span, fluent::lint_ty_qualified, |lint| { - lint - .set_arg("ty", t.clone()) - .span_suggestion( - path.span, - fluent::suggestion, - t, - // The import probably needs to be changed - Applicability::MaybeIncorrect, - ) - }) + None => cx.emit_spanned_lint(USAGE_OF_TY_TYKIND, path.span, TykindDiag), } + } else if !ty.span.from_expansion() && path.segments.len() > 1 && let Some(t) = is_ty_or_ty_ctxt(cx, &path) { + cx.emit_spanned_lint(USAGE_OF_QUALIFIED_TY, path.span, TyQualified { + ty: t.clone(), + suggestion: path.span, + }); } } _ => {} @@ -303,12 +274,11 @@ impl EarlyLintPass for LintPassImpl { && call_site.ctxt().outer_expn_data().kind != ExpnKind::Macro(MacroKind::Bang, sym::declare_lint_pass) { - cx.struct_span_lint( + cx.emit_spanned_lint( LINT_PASS_IMPL_WITHOUT_MACRO, lint_pass.path.span, - fluent::lint_lintpass_by_hand, - |lint| lint.help(fluent::help), - ) + LintPassByHand, + ); } } } @@ -338,17 +308,16 @@ impl<'tcx> LateLintPass<'tcx> for ExistingDocKeyword { if let Some(list) = attr.meta_item_list() { for nested in list { if nested.has_name(sym::keyword) { - let v = nested + let keyword = nested .value_str() .expect("#[doc(keyword = \"...\")] expected a value!"); - if is_doc_keyword(v) { + if is_doc_keyword(keyword) { return; } - cx.struct_span_lint( + cx.emit_spanned_lint( EXISTING_DOC_KEYWORD, attr.span, - fluent::lint_non_existant_doc_keyword, - |lint| lint.set_arg("keyword", v).help(fluent::help), + NonExistantDocKeyword { keyword }, ); } } @@ -407,12 +376,7 @@ impl LateLintPass<'_> for Diagnostics { } debug!(?found_impl); if !found_parent_with_attr && !found_impl { - cx.struct_span_lint( - DIAGNOSTIC_OUTSIDE_OF_IMPL, - span, - fluent::lint_diag_out_of_impl, - |lint| lint, - ) + cx.emit_spanned_lint(DIAGNOSTIC_OUTSIDE_OF_IMPL, span, DiagOutOfImpl); } let mut found_diagnostic_message = false; @@ -428,12 +392,7 @@ impl LateLintPass<'_> for Diagnostics { } debug!(?found_diagnostic_message); if !found_parent_with_attr && !found_diagnostic_message { - cx.struct_span_lint( - UNTRANSLATABLE_DIAGNOSTIC, - span, - fluent::lint_untranslatable_diag, - |lint| lint, - ) + cx.emit_spanned_lint(UNTRANSLATABLE_DIAGNOSTIC, span, UntranslatableDiag); } } } @@ -465,9 +424,9 @@ impl LateLintPass<'_> for BadOptAccess { let Some(lit) = item.lit() && let ast::LitKind::Str(val, _) = lit.kind { - cx.struct_span_lint(BAD_OPT_ACCESS, expr.span, val.as_str(), |lint| - lint - ); + cx.emit_spanned_lint(BAD_OPT_ACCESS, expr.span, BadOptAccessDiag { + msg: val.as_str(), + }); } } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index a6e00c3e883f..196922b78c30 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -49,6 +49,68 @@ pub struct EnumIntrinsicsMemVariant<'a> { pub ty_param: Ty<'a>, } +// internal.rs +#[derive(LintDiagnostic)] +#[diag(lint_default_hash_types)] +#[note] +pub struct DefaultHashTypesDiag<'a> { + pub preferred: &'a str, + pub used: Symbol, +} + +#[derive(LintDiagnostic)] +#[diag(lint_query_instability)] +#[note] +pub struct QueryInstability { + pub query: Symbol, +} + +#[derive(LintDiagnostic)] +#[diag(lint_tykind_kind)] +pub struct TykindKind { + #[suggestion(code = "ty", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_tykind)] +#[help] +pub struct TykindDiag; + +#[derive(LintDiagnostic)] +#[diag(lint_ty_qualified)] +pub struct TyQualified { + pub ty: String, + #[suggestion(code = "{ty}", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_lintpass_by_hand)] +#[help] +pub struct LintPassByHand; + +#[derive(LintDiagnostic)] +#[diag(lint_non_existant_doc_keyword)] +#[help] +pub struct NonExistantDocKeyword { + pub keyword: Symbol, +} + +#[derive(LintDiagnostic)] +#[diag(lint_diag_out_of_impl)] +pub struct DiagOutOfImpl; + +#[derive(LintDiagnostic)] +#[diag(lint_untranslatable_diag)] +pub struct UntranslatableDiag; + +#[derive(LintDiagnostic)] +#[diag(lint_bad_opt_access)] +pub struct BadOptAccessDiag<'a> { + pub msg: &'a str, +} + // let_underscore.rs #[derive(LintDiagnostic)] pub enum NonBindingLet { From 6ffecd2059316e2eb07ee0983e62f24027e52704 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sat, 22 Oct 2022 21:50:44 -0400 Subject: [PATCH 366/478] migrate(wip): `builtin.rs` --- .../locales/en-US/lint.ftl | 7 + compiler/rustc_lint/src/builtin.rs | 348 ++++++------------ compiler/rustc_lint/src/lints.rs | 257 ++++++++++++- 3 files changed, 383 insertions(+), 229 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 747588c683cc..1080ba2d2b56 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -433,6 +433,13 @@ lint_builtin_deref_nullptr = dereferencing a null pointer lint_builtin_asm_labels = avoid using named labels in inline assembly +lint_builtin_special_module_name_used_lib = found module declaration for lib.rs + .note = lib.rs is the root of this crate's library target + .help = to refer to it from other targets, use the library's name as the path + +lint_builtin_special_module_name_used_main = found module declaration for main.rs + .note = a binary crate cannot be used as library + lint_overruled_attribute = {$lint_level}({$lint_source}) incompatible with previous forbid .label = overruled by previous forbid diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index d58168ff3772..8a34afb1ff52 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -22,6 +22,17 @@ use crate::{ errors::BuiltinEllpisisInclusiveRangePatterns, + lints::{ + BuiltinAnonymousParams, BuiltinBoxPointers, BuiltinConstNoMangle, + BuiltinDeprecatedAttrUsed, BuiltinDerefNullptr, BuiltinEllipsisInclusiveRangePatternsLint, + BuiltinExplicitOutlives, BuiltinExplicitOutlivesSuggestion, BuiltinIncompleteFeatures, + BuiltinKeywordIdents, BuiltinMissingCopyImpl, BuiltinMissingDebugImpl, BuiltinMissingDoc, + BuiltinMutablesTransmutes, BuiltinNoMangleGeneric, BuiltinNonShorthandFieldPatterns, + BuiltinSpecialModuleNameUsed, BuiltinTrivialBounds, BuiltinUnexpectedCliConfigName, + BuiltinUnexpectedCliConfigValue, BuiltinUnnameableTestItems, BuiltinUnreachablePub, + BuiltinUnstableFeatures, BuiltinUnusedDocComment, BuiltinUnusedDocCommentSub, + BuiltinWhileTrue, + }, types::{transparent_newtype_field, CItemKind}, EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext, }; @@ -110,25 +121,17 @@ impl EarlyLintPass for WhileTrue { && !cond.span.from_expansion() { let condition_span = e.span.with_hi(cond.span.hi()); - cx.struct_span_lint( - WHILE_TRUE, - condition_span, - fluent::lint_builtin_while_true, - |lint| { - lint.span_suggestion_short( - condition_span, - fluent::suggestion, - format!( + let replace = format!( "{}loop", label.map_or_else(String::new, |label| format!( "{}: ", label.ident, )) - ), - Applicability::MachineApplicable, - ) - }, - ) + ); + cx.emit_spanned_lint(WHILE_TRUE, condition_span, BuiltinWhileTrue { + suggestion: condition_span, + replace, + }); } } } @@ -164,12 +167,7 @@ impl BoxPointers { for leaf in ty.walk() { if let GenericArgKind::Type(leaf_ty) = leaf.unpack() { if leaf_ty.is_box() { - cx.struct_span_lint( - BOX_POINTERS, - span, - fluent::lint_builtin_box_pointers, - |lint| lint.set_arg("ty", ty), - ); + cx.emit_spanned_lint(BOX_POINTERS, span, BuiltinBoxPointers { ty }); } } } @@ -267,19 +265,13 @@ impl<'tcx> LateLintPass<'tcx> for NonShorthandFieldPatterns { if cx.tcx.find_field_index(ident, &variant) == Some(cx.typeck_results().field_index(fieldpat.hir_id)) { - cx.struct_span_lint( + cx.emit_spanned_lint( NON_SHORTHAND_FIELD_PATTERNS, fieldpat.span, - fluent::lint_builtin_non_shorthand_field_patterns, - |lint| { - let suggested_ident = - format!("{}{}", binding_annot.prefix_str(), ident); - lint.set_arg("ident", ident).span_suggestion( - fieldpat.span, - fluent::suggestion, - suggested_ident, - Applicability::MachineApplicable, - ) + BuiltinNonShorthandFieldPatterns { + ident, + suggestion: fieldpat.span, + prefix: binding_annot.prefix_str(), }, ); } @@ -578,11 +570,10 @@ impl MissingDoc { let attrs = cx.tcx.hir().attrs(cx.tcx.hir().local_def_id_to_hir_id(def_id)); let has_doc = attrs.iter().any(has_doc); if !has_doc { - cx.struct_span_lint( + cx.emit_spanned_lint( MISSING_DOCS, cx.tcx.def_span(def_id), - fluent::lint_builtin_missing_doc, - |lint| lint.set_arg("article", article).set_arg("desc", desc), + BuiltinMissingDoc { article, desc }, ); } } @@ -799,12 +790,7 @@ impl<'tcx> LateLintPass<'tcx> for MissingCopyImplementations { ) .is_ok() { - cx.struct_span_lint( - MISSING_COPY_IMPLEMENTATIONS, - item.span, - fluent::lint_builtin_missing_copy_impl, - |lint| lint, - ) + cx.emit_spanned_lint(MISSING_COPY_IMPLEMENTATIONS, item.span, BuiltinMissingCopyImpl); } } } @@ -878,11 +864,10 @@ impl<'tcx> LateLintPass<'tcx> for MissingDebugImplementations { } if !self.impling_types.as_ref().unwrap().contains(&item.owner_id.def_id) { - cx.struct_span_lint( + cx.emit_spanned_lint( MISSING_DEBUG_IMPLEMENTATIONS, item.span, - fluent::lint_builtin_missing_debug_impl, - |lint| lint.set_arg("debug", cx.tcx.def_path_str(debug)), + BuiltinMissingDebugImpl { tcx: cx.tcx, def_id: debug }, ); } } @@ -958,19 +943,11 @@ impl EarlyLintPass for AnonymousParameters { } else { ("", Applicability::HasPlaceholders) }; - cx.struct_span_lint( + cx.emit_spanned_lint( ANONYMOUS_PARAMETERS, arg.pat.span, - fluent::lint_builtin_anonymous_params, - |lint| { - lint.span_suggestion( - arg.pat.span, - fluent::suggestion, - format!("_: {}", ty_snip), - appl, - ) - }, - ) + BuiltinAnonymousParams { suggestion: (arg.pat.span, appl), ty_snip }, + ); } } } @@ -1029,18 +1006,12 @@ impl EarlyLintPass for DeprecatedAttr { } } if attr.has_name(sym::no_start) || attr.has_name(sym::crate_id) { - cx.struct_span_lint( + cx.emit_spanned_lint( DEPRECATED, attr.span, - fluent::lint_builtin_deprecated_attr_used, - |lint| { - lint.set_arg("name", pprust::path_to_string(&attr.get_normal_item().path)) - .span_suggestion_short( - attr.span, - fluent::lint_builtin_deprecated_attr_default_suggestion, - "", - Applicability::MachineApplicable, - ) + BuiltinDeprecatedAttrUsed { + name: pprust::path_to_string(&attr.get_normal_item().path), + suggestion: attr.span, }, ); } @@ -1069,20 +1040,18 @@ fn warn_if_doc(cx: &EarlyContext<'_>, node_span: Span, node_kind: &str, attrs: & let span = sugared_span.take().unwrap_or(attr.span); if is_doc_comment || attr.has_name(sym::doc) { - cx.struct_span_lint( + let sub = match attr.kind { + AttrKind::DocComment(CommentKind::Line, _) | AttrKind::Normal(..) => { + BuiltinUnusedDocCommentSub::PlainHelp + } + AttrKind::DocComment(CommentKind::Block, _) => { + BuiltinUnusedDocCommentSub::BlockHelp + } + }; + cx.emit_spanned_lint( UNUSED_DOC_COMMENTS, span, - fluent::lint_builtin_unused_doc_comment, - |lint| { - lint.set_arg("kind", node_kind).span_label(node_span, fluent::label).help( - match attr.kind { - AttrKind::DocComment(CommentKind::Line, _) | AttrKind::Normal(..) => { - fluent::plain_help - } - AttrKind::DocComment(CommentKind::Block, _) => fluent::block_help, - }, - ) - }, + BuiltinUnusedDocComment { kind: node_kind, label: node_span, sub }, ); } } @@ -1197,20 +1166,10 @@ impl<'tcx> LateLintPass<'tcx> for InvalidNoMangleItems { match param.kind { GenericParamKind::Lifetime { .. } => {} GenericParamKind::Type { .. } | GenericParamKind::Const { .. } => { - cx.struct_span_lint( + cx.emit_spanned_lint( NO_MANGLE_GENERIC_ITEMS, span, - fluent::lint_builtin_no_mangle_generic, - |lint| { - lint.span_suggestion_short( - no_mangle_attr.span, - fluent::suggestion, - "", - // Use of `#[no_mangle]` suggests FFI intent; correct - // fix may be to monomorphize source by hand - Applicability::MaybeIncorrect, - ) - }, + BuiltinNoMangleGeneric { suggestion: no_mangle_attr.span }, ); break; } @@ -1225,30 +1184,23 @@ impl<'tcx> LateLintPass<'tcx> for InvalidNoMangleItems { } hir::ItemKind::Const(..) => { if cx.sess().contains_name(attrs, sym::no_mangle) { + // account for "pub const" (#45562) + let start = cx + .tcx + .sess + .source_map() + .span_to_snippet(it.span) + .map(|snippet| snippet.find("const").unwrap_or(0)) + .unwrap_or(0) as u32; + // `const` is 5 chars + let suggestion = it.span.with_hi(BytePos(it.span.lo().0 + start + 5)); + // Const items do not refer to a particular location in memory, and therefore // don't have anything to attach a symbol to - cx.struct_span_lint( + cx.emit_spanned_lint( NO_MANGLE_CONST_ITEMS, it.span, - fluent::lint_builtin_const_no_mangle, - |lint| { - // account for "pub const" (#45562) - let start = cx - .tcx - .sess - .source_map() - .span_to_snippet(it.span) - .map(|snippet| snippet.find("const").unwrap_or(0)) - .unwrap_or(0) as u32; - // `const` is 5 chars - let const_span = it.span.with_hi(BytePos(it.span.lo().0 + start + 5)); - lint.span_suggestion( - const_span, - fluent::suggestion, - "pub static", - Applicability::MachineApplicable, - ) - }, + BuiltinConstNoMangle { suggestion }, ); } } @@ -1309,12 +1261,7 @@ impl<'tcx> LateLintPass<'tcx> for MutableTransmutes { get_transmute_from_to(cx, expr).map(|(ty1, ty2)| (ty1.kind(), ty2.kind())) { if from_mutbl < to_mutbl { - cx.struct_span_lint( - MUTABLE_TRANSMUTES, - expr.span, - fluent::lint_builtin_mutable_transmutes, - |lint| lint, - ); + cx.emit_spanned_lint(MUTABLE_TRANSMUTES, expr.span, BuiltinMutablesTransmutes); } } @@ -1362,12 +1309,7 @@ impl<'tcx> LateLintPass<'tcx> for UnstableFeatures { if attr.has_name(sym::feature) { if let Some(items) = attr.meta_item_list() { for item in items { - cx.struct_span_lint( - UNSTABLE_FEATURES, - item.span(), - fluent::lint_builtin_unstable_features, - |lint| lint, - ); + cx.emit_spanned_lint(UNSTABLE_FEATURES, item.span(), BuiltinUnstableFeatures); } } } @@ -1493,18 +1435,13 @@ impl UnreachablePub { applicability = Applicability::MaybeIncorrect; } let def_span = cx.tcx.def_span(def_id); - cx.struct_span_lint( + cx.emit_spanned_lint( UNREACHABLE_PUB, def_span, - fluent::lint_builtin_unreachable_pub, - |lint| { - lint.set_arg("what", what); - - lint.span_suggestion(vis_span, fluent::suggestion, "pub(crate)", applicability); - if exportable { - lint.help(fluent::help); - } - lint + BuiltinUnreachablePub { + what, + suggestion: (vis_span, applicability), + help: exportable.then_some(()), }, ); } @@ -1767,14 +1704,10 @@ impl<'tcx> LateLintPass<'tcx> for TrivialConstraints { TypeWellFormedFromEnv(..) => continue, }; if predicate.is_global() { - cx.struct_span_lint( + cx.emit_spanned_lint( TRIVIAL_BOUNDS, span, - fluent::lint_builtin_trivial_bounds, - |lint| { - lint.set_arg("predicate_kind_name", predicate_kind_name) - .set_arg("predicate", predicate) - }, + BuiltinTrivialBounds { predicate_kind_name, predicate }, ); } } @@ -1875,8 +1808,6 @@ impl EarlyLintPass for EllipsisInclusiveRangePatterns { }; if let Some((start, end, join)) = endpoints { - let msg = fluent::lint_builtin_ellipsis_inclusive_range_patterns; - let suggestion = fluent::suggestion; if parenthesise { self.node_id = Some(pat.id); let end = expr_to_string(&end); @@ -1891,14 +1822,14 @@ impl EarlyLintPass for EllipsisInclusiveRangePatterns { replace, }); } else { - cx.struct_span_lint(ELLIPSIS_INCLUSIVE_RANGE_PATTERNS, pat.span, msg, |lint| { - lint.span_suggestion( - pat.span, - suggestion, + cx.emit_spanned_lint( + ELLIPSIS_INCLUSIVE_RANGE_PATTERNS, + pat.span, + BuiltinEllipsisInclusiveRangePatternsLint::Parenthesise { + suggestion: pat.span, replace, - Applicability::MachineApplicable, - ) - }); + }, + ); } } else { let replace = "..="; @@ -1909,14 +1840,13 @@ impl EarlyLintPass for EllipsisInclusiveRangePatterns { replace: replace.to_string(), }); } else { - cx.struct_span_lint(ELLIPSIS_INCLUSIVE_RANGE_PATTERNS, join, msg, |lint| { - lint.span_suggestion_short( - join, - suggestion, - replace, - Applicability::MachineApplicable, - ) - }); + cx.emit_spanned_lint( + ELLIPSIS_INCLUSIVE_RANGE_PATTERNS, + join, + BuiltinEllipsisInclusiveRangePatternsLint::NonParenthesise { + suggestion: join, + }, + ); } }; } @@ -1996,12 +1926,7 @@ impl<'tcx> LateLintPass<'tcx> for UnnameableTestItems { let attrs = cx.tcx.hir().attrs(it.hir_id()); if let Some(attr) = cx.sess().find_by_name(attrs, sym::rustc_test_marker) { - cx.struct_span_lint( - UNNAMEABLE_TEST_ITEMS, - attr.span, - fluent::lint_builtin_unnameable_test_items, - |lint| lint, - ); + cx.emit_spanned_lint(UNNAMEABLE_TEST_ITEMS, attr.span, BuiltinUnnameableTestItems); } } @@ -2117,18 +2042,10 @@ impl KeywordIdents { return; } - cx.struct_span_lint( + cx.emit_spanned_lint( KEYWORD_IDENTS, ident.span, - fluent::lint_builtin_keyword_idents, - |lint| { - lint.set_arg("kw", ident).set_arg("next", next_edition).span_suggestion( - ident.span, - fluent::suggestion, - format!("r#{}", ident), - Applicability::MachineApplicable, - ) - }, + BuiltinKeywordIdents { kw: ident, next: next_edition, suggestion: ident.span }, ); } } @@ -2405,16 +2322,15 @@ impl<'tcx> LateLintPass<'tcx> for ExplicitOutlivesRequirements { Applicability::MaybeIncorrect }; - cx.struct_span_lint( + cx.emit_spanned_lint( EXPLICIT_OUTLIVES_REQUIREMENTS, lint_spans.clone(), - fluent::lint_builtin_explicit_outlives, - |lint| { - lint.set_arg("count", bound_count).multipart_suggestion( - fluent::suggestion, - lint_spans.into_iter().map(|span| (span, String::new())).collect(), + BuiltinExplicitOutlives { + count: bound_count, + suggestion: BuiltinExplicitOutlivesSuggestion { + spans: lint_spans, applicability, - ) + }, }, ); } @@ -2463,24 +2379,15 @@ impl EarlyLintPass for IncompleteFeatures { .chain(features.declared_lib_features.iter().map(|(name, span)| (name, span))) .filter(|(&name, _)| features.incomplete(name)) .for_each(|(&name, &span)| { - cx.struct_span_lint( + cx.emit_spanned_lint( INCOMPLETE_FEATURES, span, - fluent::lint_builtin_incomplete_features, - |lint| { - lint.set_arg("name", name); - if let Some(n) = - rustc_feature::find_feature_issue(name, GateIssue::Language) - { - lint.set_arg("n", n); - lint.note(fluent::note); - } - if HAS_MIN_FEATURES.contains(&name) { - lint.help(fluent::help); - } - lint + BuiltinIncompleteFeatures { + name, + note: rustc_feature::find_feature_issue(name, GateIssue::Language), + help: HAS_MIN_FEATURES.contains(&name).then_some(()), }, - ) + ); }); } } @@ -3275,11 +3182,10 @@ impl<'tcx> LateLintPass<'tcx> for DerefNullPtr { if let rustc_hir::ExprKind::Unary(rustc_hir::UnOp::Deref, expr_deref) = expr.kind { if is_null_ptr(cx, expr_deref) { - cx.struct_span_lint( + cx.emit_spanned_lint( DEREF_NULLPTR, expr.span, - fluent::lint_builtin_deref_nullptr, - |lint| lint.span_label(expr.span, fluent::label), + BuiltinDerefNullptr { label: expr.span }, ); } } @@ -3464,16 +3370,17 @@ impl EarlyLintPass for SpecialModuleName { } match item.ident.name.as_str() { - "lib" => cx.struct_span_lint(SPECIAL_MODULE_NAME, item.span, "found module declaration for lib.rs", |lint| { - lint - .note("lib.rs is the root of this crate's library target") - .help("to refer to it from other targets, use the library's name as the path") - }), - "main" => cx.struct_span_lint(SPECIAL_MODULE_NAME, item.span, "found module declaration for main.rs", |lint| { - lint - .note("a binary crate cannot be used as library") - }), - _ => continue + "lib" => cx.emit_spanned_lint( + SPECIAL_MODULE_NAME, + item.span, + BuiltinSpecialModuleNameUsed::Lib, + ), + "main" => cx.emit_spanned_lint( + SPECIAL_MODULE_NAME, + item.span, + BuiltinSpecialModuleNameUsed::Main, + ), + _ => continue, } } } @@ -3489,31 +3396,16 @@ impl EarlyLintPass for UnexpectedCfgs { let cfg = &cx.sess().parse_sess.config; let check_cfg = &cx.sess().parse_sess.check_config; for &(name, value) in cfg { - if let Some(names_valid) = &check_cfg.names_valid { - if !names_valid.contains(&name) { - cx.lookup( - UNEXPECTED_CFGS, - None::, - fluent::lint_builtin_unexpected_cli_config_name, - |diag| diag.help(fluent::help).set_arg("name", name), - ); - } + if let Some(names_valid) = &check_cfg.names_valid && !names_valid.contains(&name){ + cx.emit_lint(UNEXPECTED_CFGS, BuiltinUnexpectedCliConfigName { + name, + }); } - if let Some(value) = value { - if let Some(values) = &check_cfg.values_valid.get(&name) { - if !values.contains(&value) { - cx.lookup( - UNEXPECTED_CFGS, - None::, - fluent::lint_builtin_unexpected_cli_config_value, - |diag| { - diag.help(fluent::help) - .set_arg("name", name) - .set_arg("value", value) - }, - ); - } - } + if let Some(value) = value && let Some(values) = check_cfg.values_valid.get(&name) && !values.contains(&value) { + cx.emit_lint( + UNEXPECTED_CFGS, + BuiltinUnexpectedCliConfigValue { name, value }, + ); } } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 196922b78c30..ceecc2c9501e 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,8 +1,10 @@ +use std::num::NonZeroU32; + use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; -use rustc_span::{symbol::Ident, Span, Symbol}; +use rustc_span::{edition::Edition, symbol::Ident, Span, Symbol}; use crate::{errors::OverruledAttributeSub, LateContext}; @@ -33,6 +35,259 @@ pub enum ArrayIntoIterDiagSub { }, } +// builtin.rs +#[derive(LintDiagnostic)] +#[diag(lint_builtin_while_true)] +pub struct BuiltinWhileTrue { + #[suggestion(style = "short", code = "{replace}", applicability = "machine-applicable")] + pub suggestion: Span, + pub replace: String, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_box_pointers)] +pub struct BuiltinBoxPointers<'a> { + pub ty: Ty<'a>, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_non_shorthand_field_patterns)] +pub struct BuiltinNonShorthandFieldPatterns { + pub ident: Ident, + #[suggestion(code = "{prefix}{ident}", applicability = "machine-applicable")] + pub suggestion: Span, + pub prefix: &'static str, +} + +// FIXME: add lint::unsafe_code + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_missing_doc)] +pub struct BuiltinMissingDoc<'a> { + pub article: &'a str, + pub desc: &'a str, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_missing_copy_impl)] +pub struct BuiltinMissingCopyImpl; + +pub struct BuiltinMissingDebugImpl<'a> { + pub tcx: TyCtxt<'a>, + pub def_id: DefId, +} + +impl<'a> DecorateLint<'a, ()> for BuiltinMissingDebugImpl<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("debug", self.tcx.def_path_str(self.def_id)); + diag + } + + fn msg(&self) -> DiagnosticMessage { + fluent::lint_builtin_missing_debug_impl + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_anonymous_params)] +pub struct BuiltinAnonymousParams<'a> { + #[suggestion(code = "_: {ty_snip}")] + pub suggestion: (Span, Applicability), + pub ty_snip: &'a str, +} + +// FIXME: add lint::builtin_deprecated_attr_link + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_deprecated_attr_used)] +pub struct BuiltinDeprecatedAttrUsed { + pub name: String, + #[suggestion( + lint_builtin_deprecated_attr_default_suggestion, + style = "short", + code = "", + applicability = "machine-applicable" + )] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unused_doc_comment)] +pub struct BuiltinUnusedDocComment<'a> { + pub kind: &'a str, + #[label] + pub label: Span, + #[subdiagnostic] + pub sub: BuiltinUnusedDocCommentSub, +} + +#[derive(Subdiagnostic)] +pub enum BuiltinUnusedDocCommentSub { + #[help(plain_help)] + PlainHelp, + #[help(block_help)] + BlockHelp, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_no_mangle_generic)] +pub struct BuiltinNoMangleGeneric { + // Use of `#[no_mangle]` suggests FFI intent; correct + // fix may be to monomorphize source by hand + #[suggestion(style = "short", code = "", applicability = "maybe-incorrect")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_const_no_mangle)] +pub struct BuiltinConstNoMangle { + #[suggestion(code = "pub static", applicability = "machine-applicable")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_mutable_transmutes)] +pub struct BuiltinMutablesTransmutes; + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unstable_features)] +pub struct BuiltinUnstableFeatures; + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unreachable_pub)] +pub struct BuiltinUnreachablePub<'a> { + pub what: &'a str, + #[suggestion(code = "pub(crate)")] + pub suggestion: (Span, Applicability), + #[help] + pub help: Option<()>, +} + +// FIXME: migrate builtin_type_alias_where_clause + +// FIXME: migrate builtin_type_alias_generic_bounds + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_trivial_bounds)] +pub struct BuiltinTrivialBounds<'a> { + pub predicate_kind_name: &'a str, + pub predicate: Predicate<'a>, +} + +#[derive(LintDiagnostic)] +pub enum BuiltinEllipsisInclusiveRangePatternsLint { + #[diag(lint_builtin_ellipsis_inclusive_range_patterns)] + Parenthesise { + #[suggestion(code = "{replace}", applicability = "machine-applicable")] + suggestion: Span, + replace: String, + }, + #[diag(lint_builtin_ellipsis_inclusive_range_patterns)] + NonParenthesise { + #[suggestion(style = "short", code = "..=", applicability = "machine-applicable")] + suggestion: Span, + }, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unnameable_test_items)] +pub struct BuiltinUnnameableTestItems; + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_keyword_idents)] +pub struct BuiltinKeywordIdents { + pub kw: Ident, + pub next: Edition, + #[suggestion(code = "r#{kw}", applicability = "machine-applicable")] + pub suggestion: Span, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_explicit_outlives)] +pub struct BuiltinExplicitOutlives { + pub count: usize, + #[subdiagnostic] + pub suggestion: BuiltinExplicitOutlivesSuggestion, +} + +#[derive(Subdiagnostic)] +#[multipart_suggestion(suggestion)] +pub struct BuiltinExplicitOutlivesSuggestion { + #[suggestion_part(code = "")] + pub spans: Vec, + #[applicability] + pub applicability: Applicability, +} + +pub struct BuiltinIncompleteFeatures { + pub name: Symbol, + pub note: Option, + pub help: Option<()>, +} + +impl<'a> DecorateLint<'a, ()> for BuiltinIncompleteFeatures { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("name", self.name); + if let Some(n) = self.note { + diag.set_arg("n", n); + diag.note(fluent::note); + } + if let Some(_) = self.help { + diag.help(fluent::help); + } + diag + } + + fn msg(&self) -> DiagnosticMessage { + fluent::lint_builtin_incomplete_features + } +} + +// FIXME: migrate "the type `{}` does not permit {}" + +// FIXME: fluent::lint::builtin_clashing_extern_{same,diff}_name + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_deref_nullptr)] +pub struct BuiltinDerefNullptr { + #[label] + pub label: Span, +} + +// FIXME: migrate fluent::lint::builtin_asm_labels + +#[derive(LintDiagnostic)] +pub enum BuiltinSpecialModuleNameUsed { + #[diag(lint_builtin_special_module_name_used_lib)] + #[note] + #[help] + Lib, + #[diag(lint_builtin_special_module_name_used_main)] + #[note] + Main, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unexpected_cli_config_name)] +#[help] +pub struct BuiltinUnexpectedCliConfigName { + pub name: Symbol, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_unexpected_cli_config_value)] +#[help] +pub struct BuiltinUnexpectedCliConfigValue { + pub name: Symbol, + pub value: Symbol, +} + // enum_intrinsics_non_enums.rs #[derive(LintDiagnostic)] #[diag(lint_enum_intrinsics_mem_discriminant)] From 3c1a1f3643efb57b9bba515fc753d84ce39819e0 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 9 Nov 2022 18:22:48 -0500 Subject: [PATCH 367/478] migrate: `expect.rs` --- compiler/rustc_lint/src/expect.rs | 40 +++++++++---------------------- compiler/rustc_lint/src/lints.rs | 31 +++++++++++++++++++++++- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs index cf8f31bcbd06..c0e62a8d9fc0 100644 --- a/compiler/rustc_lint/src/expect.rs +++ b/compiler/rustc_lint/src/expect.rs @@ -1,8 +1,9 @@ -use crate::builtin; -use rustc_errors::fluent; -use rustc_hir::HirId; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::lints::Expectation; use rustc_middle::ty::query::Providers; -use rustc_middle::{lint::LintExpectation, ty::TyCtxt}; +use rustc_middle::ty::TyCtxt; +use rustc_session::lint::builtin::UNFULFILLED_LINT_EXPECTATIONS; use rustc_session::lint::LintExpectationId; use rustc_span::symbol::sym; use rustc_span::Symbol; @@ -28,34 +29,15 @@ fn check_expectations(tcx: TyCtxt<'_>, tool_filter: Option) { if !fulfilled_expectations.contains(&id) && tool_filter.map_or(true, |filter| expectation.lint_tool == Some(filter)) { - emit_unfulfilled_expectation_lint(tcx, *hir_id, expectation); + tcx.emit_spanned_lint( + UNFULFILLED_LINT_EXPECTATIONS, + *hir_id, + expectation.emission_span, + Expectation { expectation }, + ); } } else { unreachable!("at this stage all `LintExpectationId`s are stable"); } } } - -fn emit_unfulfilled_expectation_lint( - tcx: TyCtxt<'_>, - hir_id: HirId, - expectation: &LintExpectation, -) { - tcx.struct_span_lint_hir( - builtin::UNFULFILLED_LINT_EXPECTATIONS, - hir_id, - expectation.emission_span, - fluent::lint_expectation, - |lint| { - if let Some(rationale) = expectation.reason { - lint.note(rationale.as_str()); - } - - if expectation.is_unfulfilled_lint_expectations { - lint.note(fluent::note); - } - - lint - }, - ); -} diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index ceecc2c9501e..782cf668b290 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -3,7 +3,10 @@ use std::num::NonZeroU32; use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; -use rustc_middle::ty::{Predicate, Ty, TyCtxt}; +use rustc_middle::{ + lint::LintExpectation, + ty::{Predicate, Ty, TyCtxt}, +}; use rustc_span::{edition::Edition, symbol::Ident, Span, Symbol}; use crate::{errors::OverruledAttributeSub, LateContext}; @@ -304,6 +307,32 @@ pub struct EnumIntrinsicsMemVariant<'a> { pub ty_param: Ty<'a>, } +// expect.rs +pub struct Expectation<'a> { + pub expectation: &'a LintExpectation, +} + +impl<'a> DecorateLint<'a, ()> for Expectation<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + if let Some(rationale) = self.expectation.reason { + diag.note(rationale.as_str()); + } + + if self.expectation.is_unfulfilled_lint_expectations { + diag.note(fluent::note); + } + + diag + } + + fn msg(&self) -> DiagnosticMessage { + fluent::lint_expectation + } +} + // internal.rs #[derive(LintDiagnostic)] #[diag(lint_default_hash_types)] From ca7df9a2a9c4b1f751e91040fe659f682c976919 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 9 Nov 2022 19:34:49 -0500 Subject: [PATCH 368/478] migrate: `for_loops_over_fallibles.rs` --- .../locales/en-US/lint.ftl | 7 ++ .../src/for_loops_over_fallibles.rs | 73 +++++++------------ compiler/rustc_lint/src/lints.rs | 49 +++++++++++++ 3 files changed, 84 insertions(+), 45 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 1080ba2d2b56..5330ce504b2c 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -16,6 +16,13 @@ lint_enum_intrinsics_mem_variant = lint_expectation = this lint expectation is unfulfilled .note = the `unfulfilled_lint_expectations` lint can't be expected and will always produce this message +lint_for_loops_over_fallibles = + for loop over {$article} `{$ty}`. This is more readably written as an `if let` statement + .suggestion = consider using `if let` to clear intent + .remove_next = to iterate over `{$recv_snip}` remove the call to `next` + .use_while_let = to check pattern in a loop use `while let` + .use_question_mark = consider unwrapping the `Result` with `?` to iterate over its contents + lint_non_binding_let_on_sync_lock = non-binding let on a synchronization lock diff --git a/compiler/rustc_lint/src/for_loops_over_fallibles.rs b/compiler/rustc_lint/src/for_loops_over_fallibles.rs index 182734fa9fc8..7526b8c06327 100644 --- a/compiler/rustc_lint/src/for_loops_over_fallibles.rs +++ b/compiler/rustc_lint/src/for_loops_over_fallibles.rs @@ -1,7 +1,14 @@ -use crate::{LateContext, LateLintPass, LintContext}; +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] +use crate::{ + lints::{ + ForLoopsOverFalliblesDiag, ForLoopsOverFalliblesLoopSub, ForLoopsOverFalliblesQuestionMark, + ForLoopsOverFalliblesSuggestion, + }, + LateContext, LateLintPass, LintContext, +}; use hir::{Expr, Pat}; -use rustc_errors::{Applicability, DelayDm}; use rustc_hir as hir; use rustc_infer::{infer::TyCtxtInferExt, traits::ObligationCause}; use rustc_middle::ty::{self, List}; @@ -53,53 +60,29 @@ impl<'tcx> LateLintPass<'tcx> for ForLoopsOverFallibles { _ => return, }; - let msg = DelayDm(|| { - format!( - "for loop over {article} `{ty}`. This is more readably written as an `if let` statement", - ) - }); - - cx.struct_span_lint(FOR_LOOPS_OVER_FALLIBLES, arg.span, msg, |lint| { - if let Some(recv) = extract_iterator_next_call(cx, arg) + let sub = if let Some(recv) = extract_iterator_next_call(cx, arg) && let Ok(recv_snip) = cx.sess().source_map().span_to_snippet(recv.span) { - lint.span_suggestion( - recv.span.between(arg.span.shrink_to_hi()), - format!("to iterate over `{recv_snip}` remove the call to `next`"), - ".by_ref()", - Applicability::MaybeIncorrect - ); + ForLoopsOverFalliblesLoopSub::RemoveNext { suggestion: recv.span.between(arg.span.shrink_to_hi()), recv_snip } } else { - lint.multipart_suggestion_verbose( - "to check pattern in a loop use `while let`", - vec![ - // NB can't use `until` here because `expr.span` and `pat.span` have different syntax contexts - (expr.span.with_hi(pat.span.lo()), format!("while let {var}(")), - (pat.span.between(arg.span), ") = ".to_string()), - ], - Applicability::MaybeIncorrect - ); - } + ForLoopsOverFalliblesLoopSub::UseWhileLet { start_span: expr.span.with_hi(pat.span.lo()), end_span: pat.span.between(arg.span), var } + } ; + let question_mark = if suggest_question_mark(cx, adt, substs, expr.span) { + Some(ForLoopsOverFalliblesQuestionMark { suggestion: arg.span.shrink_to_hi() }) + } else { + None + }; + let suggestion = ForLoopsOverFalliblesSuggestion { + var, + start_span: expr.span.with_hi(pat.span.lo()), + end_span: pat.span.between(arg.span), + }; - if suggest_question_mark(cx, adt, substs, expr.span) { - lint.span_suggestion( - arg.span.shrink_to_hi(), - "consider unwrapping the `Result` with `?` to iterate over its contents", - "?", - Applicability::MaybeIncorrect, - ); - } - - lint.multipart_suggestion_verbose( - "consider using `if let` to clear intent", - vec![ - // NB can't use `until` here because `expr.span` and `pat.span` have different syntax contexts - (expr.span.with_hi(pat.span.lo()), format!("if let {var}(")), - (pat.span.between(arg.span), ") = ".to_string()), - ], - Applicability::MaybeIncorrect, - ) - }) + cx.emit_spanned_lint( + FOR_LOOPS_OVER_FALLIBLES, + arg.span, + ForLoopsOverFalliblesDiag { article, ty, sub, question_mark, suggestion }, + ); } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 782cf668b290..a35493466040 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -333,6 +333,55 @@ impl<'a> DecorateLint<'a, ()> for Expectation<'_> { } } +// for_loops_over_fallibles.rs +#[derive(LintDiagnostic)] +#[diag(lint_for_loops_over_fallibles)] +pub struct ForLoopsOverFalliblesDiag<'a> { + pub article: &'static str, + pub ty: &'static str, + #[subdiagnostic] + pub sub: ForLoopsOverFalliblesLoopSub<'a>, + #[subdiagnostic] + pub question_mark: Option, + #[subdiagnostic] + pub suggestion: ForLoopsOverFalliblesSuggestion<'a>, +} + +#[derive(Subdiagnostic)] +pub enum ForLoopsOverFalliblesLoopSub<'a> { + #[suggestion(remove_next, code = ".by_ref()", applicability = "maybe-incorrect")] + RemoveNext { + #[primary_span] + suggestion: Span, + recv_snip: String, + }, + #[multipart_suggestion(use_while_let, applicability = "maybe-incorrect")] + UseWhileLet { + #[suggestion_part(code = "while let {var}(")] + start_span: Span, + #[suggestion_part(code = ") = ")] + end_span: Span, + var: &'a str, + }, +} + +#[derive(Subdiagnostic)] +#[suggestion(use_question_mark, code = "?", applicability = "maybe-incorrect")] +pub struct ForLoopsOverFalliblesQuestionMark { + #[primary_span] + pub suggestion: Span, +} + +#[derive(Subdiagnostic)] +#[multipart_suggestion(suggestion, applicability = "maybe-incorrect")] +pub struct ForLoopsOverFalliblesSuggestion<'a> { + pub var: &'a str, + #[suggestion_part(code = "if let {var}(")] + pub start_span: Span, + #[suggestion_part(code = ") = ")] + pub end_span: Span, +} + // internal.rs #[derive(LintDiagnostic)] #[diag(lint_default_hash_types)] From 78fce795d8084e288278270438a49df6172dd36c Mon Sep 17 00:00:00 2001 From: Rejyr Date: Thu, 10 Nov 2022 19:32:30 -0500 Subject: [PATCH 369/478] refactor: refactor to derive for some lints. --- .../locales/en-US/lint.ftl | 4 +- compiler/rustc_lint/src/builtin.rs | 16 +- compiler/rustc_lint/src/expect.rs | 6 +- compiler/rustc_lint/src/levels.rs | 13 +- compiler/rustc_lint/src/lints.rs | 176 +++++++----------- compiler/rustc_lint/src/types.rs | 26 +-- 6 files changed, 100 insertions(+), 141 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 5330ce504b2c..1518adf8e4e2 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -15,6 +15,7 @@ lint_enum_intrinsics_mem_variant = lint_expectation = this lint expectation is unfulfilled .note = the `unfulfilled_lint_expectations` lint can't be expected and will always produce this message + .rationale = {$rationale} lint_for_loops_over_fallibles = for loop over {$article} `{$ty}`. This is more readably written as an `if let` statement @@ -39,7 +40,8 @@ lint_deprecated_lint_name = lint name `{$name}` is deprecated and may not have an effect in the future. .suggestion = change it to -lint_renamed_or_removed_lint_suggestion = use the new name +lint_renamed_or_removed_lint = {$msg} + .suggestion = use the new name lint_unknown_lint = unknown lint: `{$name}` diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index 8a34afb1ff52..1dae563577a0 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -26,7 +26,8 @@ use crate::{ BuiltinAnonymousParams, BuiltinBoxPointers, BuiltinConstNoMangle, BuiltinDeprecatedAttrUsed, BuiltinDerefNullptr, BuiltinEllipsisInclusiveRangePatternsLint, BuiltinExplicitOutlives, BuiltinExplicitOutlivesSuggestion, BuiltinIncompleteFeatures, - BuiltinKeywordIdents, BuiltinMissingCopyImpl, BuiltinMissingDebugImpl, BuiltinMissingDoc, + BuiltinIncompleteFeaturesHelp, BuiltinIncompleteFeaturesNote, BuiltinKeywordIdents, + BuiltinMissingCopyImpl, BuiltinMissingDebugImpl, BuiltinMissingDoc, BuiltinMutablesTransmutes, BuiltinNoMangleGeneric, BuiltinNonShorthandFieldPatterns, BuiltinSpecialModuleNameUsed, BuiltinTrivialBounds, BuiltinUnexpectedCliConfigName, BuiltinUnexpectedCliConfigValue, BuiltinUnnameableTestItems, BuiltinUnreachablePub, @@ -2379,14 +2380,17 @@ impl EarlyLintPass for IncompleteFeatures { .chain(features.declared_lib_features.iter().map(|(name, span)| (name, span))) .filter(|(&name, _)| features.incomplete(name)) .for_each(|(&name, &span)| { + let note = rustc_feature::find_feature_issue(name, GateIssue::Language) + .map(|n| BuiltinIncompleteFeaturesNote { n }); + let help = if HAS_MIN_FEATURES.contains(&name) { + Some(BuiltinIncompleteFeaturesHelp) + } else { + None + }; cx.emit_spanned_lint( INCOMPLETE_FEATURES, span, - BuiltinIncompleteFeatures { - name, - note: rustc_feature::find_feature_issue(name, GateIssue::Language), - help: HAS_MIN_FEATURES.contains(&name).then_some(()), - }, + BuiltinIncompleteFeatures { name, note, help }, ); }); } diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs index c0e62a8d9fc0..8985ccee0cdf 100644 --- a/compiler/rustc_lint/src/expect.rs +++ b/compiler/rustc_lint/src/expect.rs @@ -1,6 +1,6 @@ #![deny(rustc::untranslatable_diagnostic)] #![deny(rustc::diagnostic_outside_of_impl)] -use crate::lints::Expectation; +use crate::lints::{Expectation, ExpectationNote}; use rustc_middle::ty::query::Providers; use rustc_middle::ty::TyCtxt; use rustc_session::lint::builtin::UNFULFILLED_LINT_EXPECTATIONS; @@ -29,11 +29,13 @@ fn check_expectations(tcx: TyCtxt<'_>, tool_filter: Option) { if !fulfilled_expectations.contains(&id) && tool_filter.map_or(true, |filter| expectation.lint_tool == Some(filter)) { + let rationale = expectation.reason.map(|rationale| ExpectationNote { rationale }); + let note = expectation.is_unfulfilled_lint_expectations.then_some(()); tcx.emit_spanned_lint( UNFULFILLED_LINT_EXPECTATIONS, *hir_id, expectation.emission_span, - Expectation { expectation }, + Expectation { rationale, note }, ); } } else { diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs index b335f330f5d4..500b1f36558d 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -4,7 +4,7 @@ use crate::context::{CheckLintNameResult, LintStore}; use crate::late::unerased_lint_store; use crate::lints::{ DeprecatedLintName, IgnoredUnlessCrateSpecified, OverruledAtributeLint, RenamedOrRemovedLint, - UnknownLint, + RenamedOrRemovedLintSuggestion, UnknownLint, UnknownLintSuggestion, }; use rustc_ast as ast; use rustc_ast_pretty::pprust; @@ -887,10 +887,15 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { _ if !self.warn_about_weird_lints => {} CheckLintNameResult::Warning(msg, renamed) => { + let suggestion = + renamed.as_ref().map(|replace| RenamedOrRemovedLintSuggestion { + suggestion: sp, + replace: replace.as_str(), + }); self.emit_spanned_lint( RENAMED_AND_REMOVED_LINTS, sp.into(), - RenamedOrRemovedLint { msg, suggestion: sp, renamed }, + RenamedOrRemovedLint { msg, suggestion }, ); } CheckLintNameResult::NoLint(suggestion) => { @@ -899,10 +904,12 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> { } else { name.to_string() }; + let suggestion = suggestion + .map(|replace| UnknownLintSuggestion { suggestion: sp, replace }); self.emit_spanned_lint( UNKNOWN_LINTS, sp.into(), - UnknownLint { name, suggestion: sp, replace: suggestion }, + UnknownLint { name, suggestion }, ); } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index a35493466040..faeb396ce8ca 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -3,10 +3,7 @@ use std::num::NonZeroU32; use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; -use rustc_middle::{ - lint::LintExpectation, - ty::{Predicate, Ty, TyCtxt}, -}; +use rustc_middle::ty::{Predicate, Ty, TyCtxt}; use rustc_span::{edition::Edition, symbol::Ident, Span, Symbol}; use crate::{errors::OverruledAttributeSub, LateContext}; @@ -80,6 +77,7 @@ pub struct BuiltinMissingDebugImpl<'a> { pub def_id: DefId, } +// Needed for def_path_str impl<'a> DecorateLint<'a, ()> for BuiltinMissingDebugImpl<'_> { fn decorate_lint<'b>( self, @@ -225,31 +223,24 @@ pub struct BuiltinExplicitOutlivesSuggestion { pub applicability: Applicability, } +#[derive(LintDiagnostic)] +#[diag(lint_builtin_incomplete_features)] pub struct BuiltinIncompleteFeatures { pub name: Symbol, - pub note: Option, - pub help: Option<()>, + #[subdiagnostic] + pub note: Option, + #[subdiagnostic] + pub help: Option, } -impl<'a> DecorateLint<'a, ()> for BuiltinIncompleteFeatures { - fn decorate_lint<'b>( - self, - diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, - ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { - diag.set_arg("name", self.name); - if let Some(n) = self.note { - diag.set_arg("n", n); - diag.note(fluent::note); - } - if let Some(_) = self.help { - diag.help(fluent::help); - } - diag - } +#[derive(Subdiagnostic)] +#[help(help)] +pub struct BuiltinIncompleteFeaturesHelp; - fn msg(&self) -> DiagnosticMessage { - fluent::lint_builtin_incomplete_features - } +#[derive(Subdiagnostic)] +#[note(note)] +pub struct BuiltinIncompleteFeaturesNote { + pub n: NonZeroU32, } // FIXME: migrate "the type `{}` does not permit {}" @@ -308,29 +299,19 @@ pub struct EnumIntrinsicsMemVariant<'a> { } // expect.rs -pub struct Expectation<'a> { - pub expectation: &'a LintExpectation, +#[derive(LintDiagnostic)] +#[diag(lint_expectation)] +pub struct Expectation { + #[subdiagnostic] + pub rationale: Option, + #[note] + pub note: Option<()>, } -impl<'a> DecorateLint<'a, ()> for Expectation<'_> { - fn decorate_lint<'b>( - self, - diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, - ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { - if let Some(rationale) = self.expectation.reason { - diag.note(rationale.as_str()); - } - - if self.expectation.is_unfulfilled_lint_expectations { - diag.note(fluent::note); - } - - diag - } - - fn msg(&self) -> DiagnosticMessage { - fluent::lint_expectation - } +#[derive(Subdiagnostic)] +#[note(rationale)] +pub struct ExpectationNote { + pub rationale: Symbol, } // for_loops_over_fallibles.rs @@ -511,59 +492,37 @@ pub struct DeprecatedLintName<'a> { pub replace: &'a str, } +// FIXME: Non-translatable msg +#[derive(LintDiagnostic)] +#[diag(lint_renamed_or_removed_lint)] pub struct RenamedOrRemovedLint<'a> { pub msg: &'a str, + #[subdiagnostic] + pub suggestion: Option>, +} + +#[derive(Subdiagnostic)] +#[suggestion(suggestion, code = "{replace}", applicability = "machine-applicable")] +pub struct RenamedOrRemovedLintSuggestion<'a> { + #[primary_span] pub suggestion: Span, - pub renamed: &'a Option, + pub replace: &'a str, } -impl<'a> DecorateLint<'a, ()> for RenamedOrRemovedLint<'_> { - fn decorate_lint<'b>( - self, - diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, - ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { - if let Some(new_name) = self.renamed { - diag.span_suggestion( - self.suggestion, - fluent::lint_renamed_or_removed_lint_suggestion, - new_name, - Applicability::MachineApplicable, - ); - }; - diag - } - - fn msg(&self) -> rustc_errors::DiagnosticMessage { - rustc_errors::DiagnosticMessage::Str(self.msg.to_string()) - } -} - -pub struct UnknownLint<'a> { +#[derive(LintDiagnostic)] +#[diag(lint_unknown_lint)] +pub struct UnknownLint { pub name: String, - pub suggestion: Span, - pub replace: &'a Option, + #[subdiagnostic] + pub suggestion: Option, } -impl<'a> DecorateLint<'a, ()> for UnknownLint<'_> { - fn decorate_lint<'b>( - self, - diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, - ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { - diag.set_arg("name", self.name); - if let Some(replace) = self.replace { - diag.span_suggestion( - self.suggestion, - fluent::suggestion, - replace, - Applicability::MaybeIncorrect, - ); - }; - diag - } - - fn msg(&self) -> rustc_errors::DiagnosticMessage { - fluent::lint_unknown_lint - } +#[derive(Subdiagnostic)] +#[suggestion(suggestion, code = "{replace}", applicability = "maybe-incorrect")] +pub struct UnknownLintSuggestion { + #[primary_span] + pub suggestion: Span, + pub replace: Symbol, } #[derive(LintDiagnostic)] @@ -618,6 +577,7 @@ pub struct NonFmtPanicUnused { pub suggestion: Option, } +// Used because of two suggestions based on one Option impl<'a> DecorateLint<'a, ()> for NonFmtPanicUnused { fn decorate_lint<'b>( self, @@ -803,6 +763,7 @@ pub struct DropTraitConstraintsDiag<'a> { pub def_id: DefId, } +// Needed for def_path_str impl<'a> DecorateLint<'a, ()> for DropTraitConstraintsDiag<'_> { fn decorate_lint<'b>( self, @@ -822,6 +783,7 @@ pub struct DropGlue<'a> { pub def_id: DefId, } +// Needed for def_path_str impl<'a> DecorateLint<'a, ()> for DropGlue<'_> { fn decorate_lint<'b>( self, @@ -902,35 +864,22 @@ pub enum OverflowingBinHexSub<'a> { Help { suggestion_ty: &'a str }, } +#[derive(LintDiagnostic)] +#[diag(lint_overflowing_int)] +#[note] pub struct OverflowingInt<'a> { pub ty: &'a str, pub lit: String, pub min: i128, pub max: u128, - pub suggestion_ty: Option<&'a str>, + #[subdiagnostic] + pub help: Option>, } -// FIXME: refactor with `Option<&'a str>` in macro -impl<'a> DecorateLint<'a, ()> for OverflowingInt<'_> { - fn decorate_lint<'b>( - self, - diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, - ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { - diag.set_arg("ty", self.ty); - diag.set_arg("lit", self.lit); - diag.set_arg("min", self.min); - diag.set_arg("max", self.max); - diag.note(fluent::note); - if let Some(suggestion_ty) = self.suggestion_ty { - diag.set_arg("suggestion_ty", suggestion_ty); - diag.help(fluent::help); - } - diag - } - - fn msg(&self) -> rustc_errors::DiagnosticMessage { - fluent::lint_overflowing_int - } +#[derive(Subdiagnostic)] +#[help(help)] +pub struct OverflowingIntHelp<'a> { + pub suggestion_ty: &'a str, } #[derive(LintDiagnostic)] @@ -972,6 +921,7 @@ pub struct ImproperCTypes<'a> { pub span_note: Option, } +// Used because of the complexity of Option, DiagnosticMessage, and Option impl<'a> DecorateLint<'a, ()> for ImproperCTypes<'_> { fn decorate_lint<'b>( self, @@ -1074,7 +1024,7 @@ pub struct UnusedDef<'a, 'b> { pub note: Option, } -// FIXME: refactor with `Option` in macro +// Needed because of def_path_str impl<'a> DecorateLint<'a, ()> for UnusedDef<'_, '_> { fn decorate_lint<'b>( self, diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index a112292eb141..1300a2fe27aa 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -3,7 +3,7 @@ use crate::lints::{ AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, ImproperCTypes, InvalidAtomicOrderingDiag, OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, - OverflowingBinHexSub, OverflowingInt, OverflowingLiteral, OverflowingUInt, + OverflowingBinHexSub, OverflowingInt, OverflowingIntHelp, OverflowingLiteral, OverflowingUInt, RangeEndpointOutOfRange, UnusedComparisons, VariantSizeDifferencesDiag, }; use crate::{LateContext, LateLintPass, LintContext}; @@ -339,24 +339,18 @@ fn lint_int_literal<'tcx>( return; } + let lit = cx + .sess() + .source_map() + .span_to_snippet(lit.span) + .expect("must get snippet from literal"); + let help = get_type_suggestion(cx.typeck_results().node_type(e.hir_id), v, negative) + .map(|suggestion_ty| OverflowingIntHelp { suggestion_ty }); + cx.emit_spanned_lint( OVERFLOWING_LITERALS, e.span, - OverflowingInt { - ty: t.name_str(), - lit: cx - .sess() - .source_map() - .span_to_snippet(lit.span) - .expect("must get snippet from literal"), - min, - max, - suggestion_ty: get_type_suggestion( - cx.typeck_results().node_type(e.hir_id), - v, - negative, - ), - }, + OverflowingInt { ty: t.name_str(), lit, min, max, help }, ); } } From ce72f942d7a9ba564332dd8b6afba05799f1f45e Mon Sep 17 00:00:00 2001 From: Rejyr Date: Thu, 10 Nov 2022 21:01:45 -0500 Subject: [PATCH 370/478] add: `#[rustc_lint_diagnostics]` for more `context.rs` functions. --- compiler/rustc_lint/src/context.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/rustc_lint/src/context.rs b/compiler/rustc_lint/src/context.rs index a16bb7f1a5f4..de9e71d26e17 100644 --- a/compiler/rustc_lint/src/context.rs +++ b/compiler/rustc_lint/src/context.rs @@ -13,6 +13,8 @@ //! previous lint state is pushed onto a stack and the ast is then recursed //! upon. As the ast is traversed, this keeps track of the current lint level //! for all lint attributes. +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] use self::TargetLint::*; @@ -965,6 +967,7 @@ pub trait LintContext: Sized { /// Note that this function should only be called for [`LintExpectationId`]s /// retrieved from the current lint pass. Buffered or manually created ids can /// cause ICEs. + #[rustc_lint_diagnostics] fn fulfill_expectation(&self, expectation: LintExpectationId) { // We need to make sure that submitted expectation ids are correctly fulfilled suppressed // and stored between compilation sessions. To not manually do these steps, we simply create @@ -1011,6 +1014,7 @@ impl<'tcx> LintContext for LateContext<'tcx> { &*self.lint_store } + #[rustc_lint_diagnostics] fn lookup>( &self, lint: &'static Lint, @@ -1045,6 +1049,7 @@ impl LintContext for EarlyContext<'_> { self.builder.lint_store() } + #[rustc_lint_diagnostics] fn lookup>( &self, lint: &'static Lint, From c06a2426b2d260b39b1601dd732777df667428ed Mon Sep 17 00:00:00 2001 From: Rejyr Date: Fri, 11 Nov 2022 22:39:37 -0500 Subject: [PATCH 371/478] migrate: `hidden_unicode_codepoints.rs` --- .../src/hidden_unicode_codepoints.rs | 67 ++++---------- compiler/rustc_lint/src/lints.rs | 90 ++++++++++++++++++- 2 files changed, 107 insertions(+), 50 deletions(-) diff --git a/compiler/rustc_lint/src/hidden_unicode_codepoints.rs b/compiler/rustc_lint/src/hidden_unicode_codepoints.rs index dc2f5c0e2967..7c1af6bee1dd 100644 --- a/compiler/rustc_lint/src/hidden_unicode_codepoints.rs +++ b/compiler/rustc_lint/src/hidden_unicode_codepoints.rs @@ -1,7 +1,12 @@ -use crate::{EarlyContext, EarlyLintPass, LintContext}; +use crate::{ + lints::{ + HiddenUnicodeCodepointsDiag, HiddenUnicodeCodepointsDiagLabels, + HiddenUnicodeCodepointsDiagSub, + }, + EarlyContext, EarlyLintPass, LintContext, +}; use ast::util::unicode::{contains_text_flow_control_chars, TEXT_FLOW_CONTROL_CHARS}; use rustc_ast as ast; -use rustc_errors::{fluent, Applicability, SuggestionStyle}; use rustc_span::{BytePos, Span, Symbol}; declare_lint! { @@ -60,55 +65,19 @@ impl HiddenUnicodeCodepoints { }) .collect(); - cx.struct_span_lint( + let count = spans.len(); + let labels = point_at_inner_spans + .then_some(HiddenUnicodeCodepointsDiagLabels { spans: spans.clone() }); + let sub = if point_at_inner_spans && !spans.is_empty() { + HiddenUnicodeCodepointsDiagSub::Escape { spans } + } else { + HiddenUnicodeCodepointsDiagSub::NoEscape { spans } + }; + + cx.emit_spanned_lint( TEXT_DIRECTION_CODEPOINT_IN_LITERAL, span, - fluent::lint_hidden_unicode_codepoints, - |lint| { - lint.set_arg("label", label); - lint.set_arg("count", spans.len()); - lint.span_label(span, fluent::label); - lint.note(fluent::note); - if point_at_inner_spans { - for (c, span) in &spans { - lint.span_label(*span, format!("{:?}", c)); - } - } - if point_at_inner_spans && !spans.is_empty() { - lint.multipart_suggestion_with_style( - fluent::suggestion_remove, - spans.iter().map(|(_, span)| (*span, "".to_string())).collect(), - Applicability::MachineApplicable, - SuggestionStyle::HideCodeAlways, - ); - lint.multipart_suggestion( - fluent::suggestion_escape, - spans - .into_iter() - .map(|(c, span)| { - let c = format!("{:?}", c); - (span, c[1..c.len() - 1].to_string()) - }) - .collect(), - Applicability::MachineApplicable, - ); - } else { - // FIXME: in other suggestions we've reversed the inner spans of doc comments. We - // should do the same here to provide the same good suggestions as we do for - // literals above. - lint.set_arg( - "escaped", - spans - .into_iter() - .map(|(c, _)| format!("{:?}", c)) - .collect::>() - .join(", "), - ); - lint.note(fluent::suggestion_remove); - lint.note(fluent::no_suggestion_note_escape); - } - lint - }, + HiddenUnicodeCodepointsDiag { label, count, span_label: span, labels, sub }, ); } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index faeb396ce8ca..4da099dcc1d6 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,6 +1,8 @@ use std::num::NonZeroU32; -use rustc_errors::{fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage}; +use rustc_errors::{ + fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage, SuggestionStyle, +}; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; @@ -363,6 +365,92 @@ pub struct ForLoopsOverFalliblesSuggestion<'a> { pub end_span: Span, } +// hidden_unicode_codepoints.rs +#[derive(LintDiagnostic)] +#[diag(lint_hidden_unicode_codepoints)] +#[note] +pub struct HiddenUnicodeCodepointsDiag<'a> { + pub label: &'a str, + pub count: usize, + #[label] + pub span_label: Span, + #[subdiagnostic] + pub labels: Option, + #[subdiagnostic] + pub sub: HiddenUnicodeCodepointsDiagSub, +} + +pub struct HiddenUnicodeCodepointsDiagLabels { + pub spans: Vec<(char, Span)>, +} + +impl AddToDiagnostic for HiddenUnicodeCodepointsDiagLabels { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + for (c, span) in self.spans { + diag.span_label(span, format!("{:?}", c)); + } + } +} + +pub enum HiddenUnicodeCodepointsDiagSub { + Escape { spans: Vec<(char, Span)> }, + NoEscape { spans: Vec<(char, Span)> }, +} + +// Used because of multiple multipart_suggestion and note +impl AddToDiagnostic for HiddenUnicodeCodepointsDiagSub { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + match self { + HiddenUnicodeCodepointsDiagSub::Escape { spans } => { + diag.multipart_suggestion_with_style( + fluent::suggestion_remove, + spans.iter().map(|(_, span)| (*span, "".to_string())).collect(), + Applicability::MachineApplicable, + SuggestionStyle::HideCodeAlways, + ); + diag.multipart_suggestion( + fluent::suggestion_escape, + spans + .into_iter() + .map(|(c, span)| { + let c = format!("{:?}", c); + (span, c[1..c.len() - 1].to_string()) + }) + .collect(), + Applicability::MachineApplicable, + ); + } + HiddenUnicodeCodepointsDiagSub::NoEscape { spans } => { + // FIXME: in other suggestions we've reversed the inner spans of doc comments. We + // should do the same here to provide the same good suggestions as we do for + // literals above. + diag.set_arg( + "escaped", + spans + .into_iter() + .map(|(c, _)| format!("{:?}", c)) + .collect::>() + .join(", "), + ); + diag.note(fluent::suggestion_remove); + diag.note(fluent::no_suggestion_note_escape); + } + } + } +} + // internal.rs #[derive(LintDiagnostic)] #[diag(lint_default_hash_types)] From 587d49766b711fab79015adecb101138fffa8acc Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sat, 12 Nov 2022 20:18:55 -0500 Subject: [PATCH 372/478] migrate: `UnsafeCode` in `builtin.rs` --- compiler/rustc_lint/src/builtin.rs | 104 ++++++----------------------- compiler/rustc_lint/src/lints.rs | 42 +++++++++++- 2 files changed, 63 insertions(+), 83 deletions(-) diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index 1dae563577a0..f7055019bab6 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -31,8 +31,8 @@ use crate::{ BuiltinMutablesTransmutes, BuiltinNoMangleGeneric, BuiltinNonShorthandFieldPatterns, BuiltinSpecialModuleNameUsed, BuiltinTrivialBounds, BuiltinUnexpectedCliConfigName, BuiltinUnexpectedCliConfigValue, BuiltinUnnameableTestItems, BuiltinUnreachablePub, - BuiltinUnstableFeatures, BuiltinUnusedDocComment, BuiltinUnusedDocCommentSub, - BuiltinWhileTrue, + BuiltinUnsafe, BuiltinUnstableFeatures, BuiltinUnusedDocComment, + BuiltinUnusedDocCommentSub, BuiltinWhileTrue, }, types::{transparent_newtype_field, CItemKind}, EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext, @@ -46,8 +46,7 @@ use rustc_ast_pretty::pprust::{self, expr_to_string}; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::stack::ensure_sufficient_stack; use rustc_errors::{ - fluent, Applicability, DelayDm, Diagnostic, DiagnosticBuilder, DiagnosticMessage, - DiagnosticStyledString, MultiSpan, + fluent, Applicability, DecorateLint, DelayDm, Diagnostic, DiagnosticStyledString, MultiSpan, }; use rustc_feature::{deprecated_attributes, AttributeGate, BuiltinAttribute, GateIssue, Stability}; use rustc_hir as hir; @@ -314,48 +313,21 @@ impl UnsafeCode { &self, cx: &EarlyContext<'_>, span: Span, - msg: impl Into, - decorate: impl for<'a, 'b> FnOnce( - &'b mut DiagnosticBuilder<'a, ()>, - ) -> &'b mut DiagnosticBuilder<'a, ()>, + decorate: impl for<'a> DecorateLint<'a, ()>, ) { // This comes from a macro that has `#[allow_internal_unsafe]`. if span.allows_unsafe() { return; } - cx.struct_span_lint(UNSAFE_CODE, span, msg, decorate); - } - - fn report_overridden_symbol_name( - &self, - cx: &EarlyContext<'_>, - span: Span, - msg: DiagnosticMessage, - ) { - self.report_unsafe(cx, span, msg, |lint| { - lint.note(fluent::lint_builtin_overridden_symbol_name) - }) - } - - fn report_overridden_symbol_section( - &self, - cx: &EarlyContext<'_>, - span: Span, - msg: DiagnosticMessage, - ) { - self.report_unsafe(cx, span, msg, |lint| { - lint.note(fluent::lint_builtin_overridden_symbol_section) - }) + cx.emit_spanned_lint(UNSAFE_CODE, span, decorate); } } impl EarlyLintPass for UnsafeCode { fn check_attribute(&mut self, cx: &EarlyContext<'_>, attr: &ast::Attribute) { if attr.has_name(sym::allow_internal_unsafe) { - self.report_unsafe(cx, attr.span, fluent::lint_builtin_allow_internal_unsafe, |lint| { - lint - }); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::AllowInternalUnsafe); } } @@ -364,7 +336,7 @@ impl EarlyLintPass for UnsafeCode { if let ast::ExprKind::Block(ref blk, _) = e.kind { // Don't warn about generated blocks; that'll just pollute the output. if blk.rules == ast::BlockCheckMode::Unsafe(ast::UserProvided) { - self.report_unsafe(cx, blk.span, fluent::lint_builtin_unsafe_block, |lint| lint); + self.report_unsafe(cx, blk.span, BuiltinUnsafe::UnsafeBlock); } } } @@ -372,62 +344,38 @@ impl EarlyLintPass for UnsafeCode { fn check_item(&mut self, cx: &EarlyContext<'_>, it: &ast::Item) { match it.kind { ast::ItemKind::Trait(box ast::Trait { unsafety: ast::Unsafe::Yes(_), .. }) => { - self.report_unsafe(cx, it.span, fluent::lint_builtin_unsafe_trait, |lint| lint) + self.report_unsafe(cx, it.span, BuiltinUnsafe::UnsafeTrait); } ast::ItemKind::Impl(box ast::Impl { unsafety: ast::Unsafe::Yes(_), .. }) => { - self.report_unsafe(cx, it.span, fluent::lint_builtin_unsafe_impl, |lint| lint) + self.report_unsafe(cx, it.span, BuiltinUnsafe::UnsafeImpl); } ast::ItemKind::Fn(..) => { if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::no_mangle) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_no_mangle_fn, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::NoMangleFn); } if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::export_name) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_export_name_fn, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::ExportNameFn); } if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::link_section) { - self.report_overridden_symbol_section( - cx, - attr.span, - fluent::lint_builtin_link_section_fn, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::LinkSectionFn); } } ast::ItemKind::Static(..) => { if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::no_mangle) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_no_mangle_static, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::NoMangleStatic); } if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::export_name) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_export_name_static, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::ExportNameStatic); } if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::link_section) { - self.report_overridden_symbol_section( - cx, - attr.span, - fluent::lint_builtin_link_section_static, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::LinkSectionStatic); } } @@ -438,18 +386,10 @@ impl EarlyLintPass for UnsafeCode { fn check_impl_item(&mut self, cx: &EarlyContext<'_>, it: &ast::AssocItem) { if let ast::AssocItemKind::Fn(..) = it.kind { if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::no_mangle) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_no_mangle_method, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::NoMangleMethod); } if let Some(attr) = cx.sess().find_by_name(&it.attrs, sym::export_name) { - self.report_overridden_symbol_name( - cx, - attr.span, - fluent::lint_builtin_export_name_method, - ); + self.report_unsafe(cx, attr.span, BuiltinUnsafe::ExportNameMethod); } } } @@ -464,13 +404,13 @@ impl EarlyLintPass for UnsafeCode { body, ) = fk { - let msg = match ctxt { + let decorator = match ctxt { FnCtxt::Foreign => return, - FnCtxt::Free => fluent::lint_builtin_decl_unsafe_fn, - FnCtxt::Assoc(_) if body.is_none() => fluent::lint_builtin_decl_unsafe_method, - FnCtxt::Assoc(_) => fluent::lint_builtin_impl_unsafe_method, + FnCtxt::Free => BuiltinUnsafe::DeclUnsafeFn, + FnCtxt::Assoc(_) if body.is_none() => BuiltinUnsafe::DeclUnsafeMethod, + FnCtxt::Assoc(_) => BuiltinUnsafe::ImplUnsafeMethod, }; - self.report_unsafe(cx, span, msg, |lint| lint); + self.report_unsafe(cx, span, decorator); } } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 4da099dcc1d6..147cd3e04608 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -61,7 +61,47 @@ pub struct BuiltinNonShorthandFieldPatterns { pub prefix: &'static str, } -// FIXME: add lint::unsafe_code +#[derive(LintDiagnostic)] +pub enum BuiltinUnsafe { + #[diag(lint_builtin_allow_internal_unsafe)] + AllowInternalUnsafe, + #[diag(lint_builtin_unsafe_block)] + UnsafeBlock, + #[diag(lint_builtin_unsafe_trait)] + UnsafeTrait, + #[diag(lint_builtin_unsafe_impl)] + UnsafeImpl, + #[diag(lint_builtin_no_mangle_fn)] + #[note(lint_builtin_overridden_symbol_name)] + NoMangleFn, + #[diag(lint_builtin_export_name_fn)] + #[note(lint_builtin_overridden_symbol_name)] + ExportNameFn, + #[diag(lint_builtin_link_section_fn)] + #[note(lint_builtin_overridden_symbol_section)] + LinkSectionFn, + #[diag(lint_builtin_no_mangle_static)] + #[note(lint_builtin_overridden_symbol_name)] + NoMangleStatic, + #[diag(lint_builtin_export_name_static)] + #[note(lint_builtin_overridden_symbol_name)] + ExportNameStatic, + #[diag(lint_builtin_link_section_static)] + #[note(lint_builtin_overridden_symbol_section)] + LinkSectionStatic, + #[diag(lint_builtin_no_mangle_method)] + #[note(lint_builtin_overridden_symbol_name)] + NoMangleMethod, + #[diag(lint_builtin_export_name_method)] + #[note(lint_builtin_overridden_symbol_name)] + ExportNameMethod, + #[diag(lint_builtin_decl_unsafe_fn)] + DeclUnsafeFn, + #[diag(lint_builtin_decl_unsafe_method)] + DeclUnsafeMethod, + #[diag(lint_builtin_impl_unsafe_method)] + ImplUnsafeMethod, +} #[derive(LintDiagnostic)] #[diag(lint_builtin_missing_doc)] From d0c47bdcc9139f366e5bac0af33a9846b2d0e4f8 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 9 Jan 2023 12:36:39 -0800 Subject: [PATCH 373/478] Fix help docs for -Zallow-features --- compiler/rustc_session/src/options.rs | 2 +- src/test/rustdoc-ui/z-help.stdout | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 043a60a1c531..9c30de7312a3 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1241,7 +1241,7 @@ options! { // tidy-alphabetical-start allow_features: Option> = (None, parse_opt_comma_list, [TRACKED], - "only allow the listed language features to be enabled in code (space separated)"), + "only allow the listed language features to be enabled in code (comma separated)"), always_encode_mir: bool = (false, parse_bool, [TRACKED], "encode MIR of all functions into the crate metadata (default: no)"), asm_comments: bool = (false, parse_bool, [TRACKED], diff --git a/src/test/rustdoc-ui/z-help.stdout b/src/test/rustdoc-ui/z-help.stdout index 537dc92be192..43f30f3d6e80 100644 --- a/src/test/rustdoc-ui/z-help.stdout +++ b/src/test/rustdoc-ui/z-help.stdout @@ -1,4 +1,4 @@ - -Z allow-features=val -- only allow the listed language features to be enabled in code (space separated) + -Z allow-features=val -- only allow the listed language features to be enabled in code (comma separated) -Z always-encode-mir=val -- encode MIR of all functions into the crate metadata (default: no) -Z asm-comments=val -- generate comments into the assembly (may change behavior) (default: no) -Z assert-incr-state=val -- assert that the incremental cache is in given state: either `loaded` or `not-loaded`. From 2ee546aa5eec78b60a922216ccfb2b3892ad450b Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Mon, 9 Jan 2023 17:39:04 -0600 Subject: [PATCH 374/478] Remove myself from rust-lang/rust reviewers I don't have time to both review and work on my foundation grant. --- triagebot.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/triagebot.toml b/triagebot.toml index 58108dac496b..817635922465 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -487,12 +487,10 @@ libs = [ ] bootstrap = [ "@Mark-Simulacrum", - "@jyn514", ] infra-ci = [ "@Mark-Simulacrum", "@pietroalbini", - "@jyn514", ] rustdoc = [ "@jsha", From c43faf110de5ee6abce0899872457dc8904723ad Mon Sep 17 00:00:00 2001 From: Caio Date: Mon, 9 Jan 2023 20:51:01 -0300 Subject: [PATCH 375/478] [RFC 2397] Initial implementation --- compiler/rustc_feature/src/active.rs | 2 ++ compiler/rustc_feature/src/builtin_attrs.rs | 3 +++ compiler/rustc_span/src/symbol.rs | 1 + .../feature-gate-do_not_recommend.rs | 21 +++++++++++++++++ .../feature-gate-do_not_recommend.stderr | 23 +++++++++++++++++++ .../unstable-feature.rs | 7 ++++++ .../unstable-feature.stderr | 12 ++++++++++ 7 files changed, 69 insertions(+) create mode 100644 src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs create mode 100644 src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr create mode 100644 src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs create mode 100644 src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index beade4d44da8..691c0955cad7 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -374,6 +374,8 @@ declare_features! ( (active, deprecated_safe, "1.61.0", Some(94978), None), /// Allows having using `suggestion` in the `#[deprecated]` attribute. (active, deprecated_suggestion, "1.61.0", Some(94785), None), + /// Controls errors in trait implementations. + (active, do_not_recommend, "1.67.0", Some(51992), None), /// Tells rustdoc to automatically generate `#[doc(cfg(...))]`. (active, doc_auto_cfg, "1.58.0", Some(43781), None), /// Allows `#[doc(cfg(...))]`. diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs index ad85231860d2..af56a0b24598 100644 --- a/compiler/rustc_feature/src/builtin_attrs.rs +++ b/compiler/rustc_feature/src/builtin_attrs.rs @@ -487,6 +487,9 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[ experimental!(collapse_debuginfo) ), + // RFC 2397 + gated!(do_not_recommend, Normal, template!(Word), WarnFollowing, experimental!(do_not_recommend)), + // ========================================================================== // Internal attributes: Stability, deprecation, and unsafe: // ========================================================================== diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs index 5d5f8d6d6540..fbb12701d96a 100644 --- a/compiler/rustc_span/src/symbol.rs +++ b/compiler/rustc_span/src/symbol.rs @@ -613,6 +613,7 @@ symbols! { dispatch_from_dyn, div, div_assign, + do_not_recommend, doc, doc_alias, doc_auto_cfg, diff --git a/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs b/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs new file mode 100644 index 000000000000..5053c115b453 --- /dev/null +++ b/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs @@ -0,0 +1,21 @@ +#![feature(do_not_recommend)] + +pub trait Foo { +} + +impl Foo for i32 { +} + +pub trait Bar { +} + +#[do_not_recommend] +impl Bar for T { +} + +fn stuff(_: T) {} + +fn main() { + stuff(1u8); + //~^ the trait bound `u8: Foo` is not satisfied +} diff --git a/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr b/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr new file mode 100644 index 000000000000..2749add82ac0 --- /dev/null +++ b/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr @@ -0,0 +1,23 @@ +error[E0277]: the trait bound `u8: Foo` is not satisfied + --> $DIR/feature-gate-do_not_recommend.rs:19:11 + | +LL | stuff(1u8); + | ----- ^^^ the trait `Foo` is not implemented for `u8` + | | + | required by a bound introduced by this call + | + = help: the trait `Foo` is implemented for `i32` +note: required for `u8` to implement `Bar` + --> $DIR/feature-gate-do_not_recommend.rs:13:14 + | +LL | impl Bar for T { + | ^^^ ^ +note: required by a bound in `stuff` + --> $DIR/feature-gate-do_not_recommend.rs:16:13 + | +LL | fn stuff(_: T) {} + | ^^^ required by this bound in `stuff` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs b/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs new file mode 100644 index 000000000000..b816c4a19da1 --- /dev/null +++ b/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs @@ -0,0 +1,7 @@ +#[do_not_recommend] +//~^ ERROR the `#[do_not_recommend]` attribute is an experimental feature +trait Foo { +} + +fn main() { +} diff --git a/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr b/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr new file mode 100644 index 000000000000..425d7e4bca0b --- /dev/null +++ b/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr @@ -0,0 +1,12 @@ +error[E0658]: the `#[do_not_recommend]` attribute is an experimental feature + --> $DIR/unstable-feature.rs:1:1 + | +LL | #[do_not_recommend] + | ^^^^^^^^^^^^^^^^^^^ + | + = note: see issue #51992 for more information + = help: add `#![feature(do_not_recommend)]` to the crate attributes to enable + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0658`. From 758140e196ae2d520d3f286797c654d517bed5b5 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 13 Nov 2022 09:46:31 -0500 Subject: [PATCH 376/478] migrate: rest of `builtin.rs` without `builtin_asm_labels` --- .../locales/en-US/lint.ftl | 12 +- compiler/rustc_lint/src/builtin.rs | 297 +++++++----------- compiler/rustc_lint/src/lints.rs | 241 +++++++++++++- 3 files changed, 364 insertions(+), 186 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 1518adf8e4e2..3fa52ff0eb31 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -370,6 +370,8 @@ lint_builtin_anonymous_params = anonymous parameters are deprecated and will be .suggestion = try naming the parameter or explicitly ignoring it lint_builtin_deprecated_attr_link = use of deprecated attribute `{$name}`: {$reason}. See {$link} + .msg_suggestion = {$msg} + .default_suggestion = remove this attribute lint_builtin_deprecated_attr_used = use of deprecated attribute `{$name}`: no longer used. lint_builtin_deprecated_attr_default_suggestion = remove this attribute @@ -430,10 +432,16 @@ lint_builtin_incomplete_features = the feature `{$name}` is incomplete and may n .note = see issue #{$n} for more information .help = consider using `min_{$name}` instead, which is more stable and complete -lint_builtin_clashing_extern_same_name = `{$this_fi}` redeclared with a different signature +lint_builtin_unpermitted_type_init_zeroed = the type `{$ty}` does not permit zero-initialization +lint_builtin_unpermitted_type_init_unint = the type `{$ty}` does not permit being left uninitialized + +lint_builtin_unpermitted_type_init_label = this code causes undefined behavior when executed +lint_builtin_unpermitted_type_init_label_suggestion = help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done + +lint_builtin_clashing_extern_same_name = `{$this}` redeclared with a different signature .previous_decl_label = `{$orig}` previously declared here .mismatch_label = this signature doesn't match the previous declaration -lint_builtin_clashing_extern_diff_name = `{$this_fi}` redeclares `{$orig}` with a different signature +lint_builtin_clashing_extern_diff_name = `{$this}` redeclares `{$orig}` with a different signature .previous_decl_label = `{$orig}` previously declared here .mismatch_label = this signature doesn't match the previous declaration diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index f7055019bab6..2bdff0d5a09c 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -1,3 +1,5 @@ +// #![deny(rustc::untranslatable_diagnostic)] +// #![deny(rustc::diagnostic_outside_of_impl)] //! Lints in the Rust compiler. //! //! This contains lints which can feasibly be implemented as their own @@ -23,16 +25,21 @@ use crate::{ errors::BuiltinEllpisisInclusiveRangePatterns, lints::{ - BuiltinAnonymousParams, BuiltinBoxPointers, BuiltinConstNoMangle, - BuiltinDeprecatedAttrUsed, BuiltinDerefNullptr, BuiltinEllipsisInclusiveRangePatternsLint, - BuiltinExplicitOutlives, BuiltinExplicitOutlivesSuggestion, BuiltinIncompleteFeatures, + BuiltinAnonymousParams, BuiltinBoxPointers, BuiltinClashingExtern, + BuiltinClashingExternSub, BuiltinConstNoMangle, BuiltinDeprecatedAttrLink, + BuiltinDeprecatedAttrLinkSuggestion, BuiltinDeprecatedAttrUsed, BuiltinDerefNullptr, + BuiltinEllipsisInclusiveRangePatternsLint, BuiltinExplicitOutlives, + BuiltinExplicitOutlivesSuggestion, BuiltinIncompleteFeatures, BuiltinIncompleteFeaturesHelp, BuiltinIncompleteFeaturesNote, BuiltinKeywordIdents, BuiltinMissingCopyImpl, BuiltinMissingDebugImpl, BuiltinMissingDoc, BuiltinMutablesTransmutes, BuiltinNoMangleGeneric, BuiltinNonShorthandFieldPatterns, - BuiltinSpecialModuleNameUsed, BuiltinTrivialBounds, BuiltinUnexpectedCliConfigName, - BuiltinUnexpectedCliConfigValue, BuiltinUnnameableTestItems, BuiltinUnreachablePub, - BuiltinUnsafe, BuiltinUnstableFeatures, BuiltinUnusedDocComment, - BuiltinUnusedDocCommentSub, BuiltinWhileTrue, + BuiltinSpecialModuleNameUsed, BuiltinTrivialBounds, BuiltinTypeAliasGenericBounds, + BuiltinTypeAliasGenericBoundsSuggestion, BuiltinTypeAliasWhereClause, + BuiltinUnexpectedCliConfigName, BuiltinUnexpectedCliConfigValue, + BuiltinUngatedAsyncFnTrackCaller, BuiltinUnnameableTestItems, BuiltinUnpermittedTypeInit, + BuiltinUnpermittedTypeInitSub, BuiltinUnreachablePub, BuiltinUnsafe, + BuiltinUnstableFeatures, BuiltinUnusedDocComment, BuiltinUnusedDocCommentSub, + BuiltinWhileTrue, SuggestChangingAssocTypes, }, types::{transparent_newtype_field, CItemKind}, EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext, @@ -45,9 +52,7 @@ use rustc_ast::{self as ast, *}; use rustc_ast_pretty::pprust::{self, expr_to_string}; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::stack::ensure_sufficient_stack; -use rustc_errors::{ - fluent, Applicability, DecorateLint, DelayDm, Diagnostic, DiagnosticStyledString, MultiSpan, -}; +use rustc_errors::{fluent, Applicability, DecorateLint, MultiSpan}; use rustc_feature::{deprecated_attributes, AttributeGate, BuiltinAttribute, GateIssue, Stability}; use rustc_hir as hir; use rustc_hir::def::{DefKind, Res}; @@ -923,24 +928,18 @@ impl EarlyLintPass for DeprecatedAttr { _, ) = gate { - // FIXME(davidtwco) translatable deprecated attr - cx.struct_span_lint( + let suggestion = match suggestion { + Some(msg) => { + BuiltinDeprecatedAttrLinkSuggestion::Msg { suggestion: attr.span, msg } + } + None => { + BuiltinDeprecatedAttrLinkSuggestion::Default { suggestion: attr.span } + } + }; + cx.emit_spanned_lint( DEPRECATED, attr.span, - fluent::lint_builtin_deprecated_attr_link, - |lint| { - lint.set_arg("name", name) - .set_arg("reason", reason) - .set_arg("link", link) - .span_suggestion_short( - attr.span, - suggestion.map(|s| s.into()).unwrap_or( - fluent::lint_builtin_deprecated_attr_default_suggestion, - ), - "", - Applicability::MachineApplicable, - ) - }, + BuiltinDeprecatedAttrLink { name, reason, link, suggestion }, ); } return; @@ -1305,20 +1304,10 @@ impl<'tcx> LateLintPass<'tcx> for UngatedAsyncFnTrackCaller { // Now, check if the function has the `#[track_caller]` attribute && let Some(attr) = attrs.iter().find(|attr| attr.has_name(sym::track_caller)) { - cx.struct_span_lint( - UNGATED_ASYNC_FN_TRACK_CALLER, - attr.span, - fluent::lint_ungated_async_fn_track_caller, - |lint| { - lint.span_label(span, fluent::label); - rustc_session::parse::add_feature_diagnostics( - lint, - &cx.tcx.sess.parse_sess, - sym::closure_track_caller, - ); - lint - }, - ); + cx.emit_spanned_lint(UNGATED_ASYNC_FN_TRACK_CALLER, attr.span, BuiltinUngatedAsyncFnTrackCaller { + label: span, + parse_sess: &cx.tcx.sess.parse_sess, + }); } } } @@ -1447,7 +1436,7 @@ declare_lint_pass!( ); impl TypeAliasBounds { - fn is_type_variable_assoc(qpath: &hir::QPath<'_>) -> bool { + pub(crate) fn is_type_variable_assoc(qpath: &hir::QPath<'_>) -> bool { match *qpath { hir::QPath::TypeRelative(ref ty, _) => { // If this is a type variable, we found a `T::Assoc`. @@ -1461,29 +1450,6 @@ impl TypeAliasBounds { hir::QPath::Resolved(..) | hir::QPath::LangItem(..) => false, } } - - fn suggest_changing_assoc_types(ty: &hir::Ty<'_>, err: &mut Diagnostic) { - // Access to associates types should use `::Assoc`, which does not need a - // bound. Let's see if this type does that. - - // We use a HIR visitor to walk the type. - use rustc_hir::intravisit::{self, Visitor}; - struct WalkAssocTypes<'a> { - err: &'a mut Diagnostic, - } - impl Visitor<'_> for WalkAssocTypes<'_> { - fn visit_qpath(&mut self, qpath: &hir::QPath<'_>, id: hir::HirId, span: Span) { - if TypeAliasBounds::is_type_variable_assoc(qpath) { - self.err.span_help(span, fluent::lint_builtin_type_alias_bounds_help); - } - intravisit::walk_qpath(self, qpath, id) - } - } - - // Let's go for a walk! - let mut visitor = WalkAssocTypes { err }; - visitor.visit_ty(ty); - } } impl<'tcx> LateLintPass<'tcx> for TypeAliasBounds { @@ -1517,35 +1483,31 @@ impl<'tcx> LateLintPass<'tcx> for TypeAliasBounds { let mut suggested_changing_assoc_types = false; if !where_spans.is_empty() { - cx.lint(TYPE_ALIAS_BOUNDS, fluent::lint_builtin_type_alias_where_clause, |lint| { - lint.set_span(where_spans); - lint.span_suggestion( - type_alias_generics.where_clause_span, - fluent::suggestion, - "", - Applicability::MachineApplicable, - ); - if !suggested_changing_assoc_types { - TypeAliasBounds::suggest_changing_assoc_types(ty, lint); - suggested_changing_assoc_types = true; - } - lint + let sub = (!suggested_changing_assoc_types).then(|| { + suggested_changing_assoc_types = true; + SuggestChangingAssocTypes { ty } }); + cx.emit_spanned_lint( + TYPE_ALIAS_BOUNDS, + where_spans, + BuiltinTypeAliasWhereClause { + suggestion: type_alias_generics.where_clause_span, + sub, + }, + ); } if !inline_spans.is_empty() { - cx.lint(TYPE_ALIAS_BOUNDS, fluent::lint_builtin_type_alias_generic_bounds, |lint| { - lint.set_span(inline_spans); - lint.multipart_suggestion( - fluent::suggestion, - inline_sugg, - Applicability::MachineApplicable, - ); - if !suggested_changing_assoc_types { - TypeAliasBounds::suggest_changing_assoc_types(ty, lint); - } - lint + let suggestion = BuiltinTypeAliasGenericBoundsSuggestion { suggestions: inline_sugg }; + let sub = (!suggested_changing_assoc_types).then(|| { + suggested_changing_assoc_types = true; + SuggestChangingAssocTypes { ty } }); + cx.emit_spanned_lint( + TYPE_ALIAS_BOUNDS, + inline_spans, + BuiltinTypeAliasGenericBounds { suggestion, sub }, + ); } } } @@ -2376,6 +2338,36 @@ declare_lint! { declare_lint_pass!(InvalidValue => [INVALID_VALUE]); +/// Information about why a type cannot be initialized this way. +pub struct InitError { + pub(crate) message: String, + /// Spans from struct fields and similar that can be obtained from just the type. + pub(crate) span: Option, + /// Used to report a trace through adts. + pub(crate) nested: Option>, +} +impl InitError { + fn spanned(self, span: Span) -> InitError { + Self { span: Some(span), ..self } + } + + fn nested(self, nested: impl Into>) -> InitError { + assert!(self.nested.is_none()); + Self { nested: nested.into().map(Box::new), ..self } + } +} + +impl<'a> From<&'a str> for InitError { + fn from(s: &'a str) -> Self { + s.to_owned().into() + } +} +impl From for InitError { + fn from(message: String) -> Self { + Self { message, span: None, nested: None } + } +} + impl<'tcx> LateLintPass<'tcx> for InvalidValue { fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &hir::Expr<'_>) { #[derive(Debug, Copy, Clone, PartialEq)] @@ -2384,36 +2376,6 @@ impl<'tcx> LateLintPass<'tcx> for InvalidValue { Uninit, } - /// Information about why a type cannot be initialized this way. - struct InitError { - message: String, - /// Spans from struct fields and similar that can be obtained from just the type. - span: Option, - /// Used to report a trace through adts. - nested: Option>, - } - impl InitError { - fn spanned(self, span: Span) -> InitError { - Self { span: Some(span), ..self } - } - - fn nested(self, nested: impl Into>) -> InitError { - assert!(self.nested.is_none()); - Self { nested: nested.into().map(Box::new), ..self } - } - } - - impl<'a> From<&'a str> for InitError { - fn from(s: &'a str) -> Self { - s.to_owned().into() - } - } - impl From for InitError { - fn from(message: String) -> Self { - Self { message, span: None, nested: None } - } - } - /// Test if this constant is all-0. fn is_zero(expr: &hir::Expr<'_>) -> bool { use hir::ExprKind::*; @@ -2637,46 +2599,16 @@ impl<'tcx> LateLintPass<'tcx> for InvalidValue { // using zeroed or uninitialized memory. // We are extremely conservative with what we warn about. let conjured_ty = cx.typeck_results().expr_ty(expr); - if let Some(mut err) = with_no_trimmed_paths!(ty_find_init_error(cx, conjured_ty, init)) - { - // FIXME(davidtwco): make translatable - cx.struct_span_lint( + if let Some(err) = with_no_trimmed_paths!(ty_find_init_error(cx, conjured_ty, init)) { + let msg = match init { + InitKind::Zeroed => fluent::lint_builtin_unpermitted_type_init_zeroed, + InitKind::Uninit => fluent::lint_builtin_unpermitted_type_init_unint, + }; + let sub = BuiltinUnpermittedTypeInitSub { err }; + cx.emit_spanned_lint( INVALID_VALUE, expr.span, - DelayDm(|| { - format!( - "the type `{}` does not permit {}", - conjured_ty, - match init { - InitKind::Zeroed => "zero-initialization", - InitKind::Uninit => "being left uninitialized", - }, - ) - }), - |lint| { - lint.span_label( - expr.span, - "this code causes undefined behavior when executed", - ); - lint.span_label( - expr.span, - "help: use `MaybeUninit` instead, \ - and only call `assume_init` after initialization is done", - ); - loop { - if let Some(span) = err.span { - lint.span_note(span, &err.message); - } else { - lint.note(&err.message); - } - if let Some(e) = err.nested { - err = *e; - } else { - break; - } - } - lint - }, + BuiltinUnpermittedTypeInit { msg, ty: conjured_ty, label: expr.span, sub }, ); } } @@ -3022,31 +2954,44 @@ impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations { SymbolName::Normal(_) => fi.span, SymbolName::Link(_, annot_span) => fi.span.to(annot_span), }; - // Finally, emit the diagnostic. - let msg = if orig.get_name() == this_fi.ident.name { - fluent::lint_builtin_clashing_extern_same_name - } else { - fluent::lint_builtin_clashing_extern_diff_name + // Finally, emit the diagnostic. + let mut expected_str = DiagnosticStyledString::new(); + expected_str.push(existing_decl_ty.fn_sig(tcx).to_string(), false); + let mut found_str = DiagnosticStyledString::new(); + found_str.push(this_decl_ty.fn_sig(tcx).to_string(), true); + + let this = this_fi.ident.name; + let orig = orig.get_name(); + let previous_decl_label = get_relevant_span(orig_fi); + let mismatch_label = get_relevant_span(this_fi); + let sub = BuiltinClashingExternSub { + tcx, + expected: existing_decl_ty, + found: this_decl_ty, }; - tcx.struct_span_lint_hir( + let decorator = if orig == this { + BuiltinClashingExtern::SameName { + this, + orig, + previous_decl_label, + mismatch_label, + sub, + } + } else { + BuiltinClashingExtern::DiffName { + this, + orig, + previous_decl_label, + mismatch_label, + sub, + } + }; + tcx.emit_spanned_lint( CLASHING_EXTERN_DECLARATIONS, this_fi.hir_id(), get_relevant_span(this_fi), - msg, - |lint| { - let mut expected_str = DiagnosticStyledString::new(); - expected_str.push(existing_decl_ty.fn_sig(tcx).to_string(), false); - let mut found_str = DiagnosticStyledString::new(); - found_str.push(this_decl_ty.fn_sig(tcx).to_string(), true); - - lint.set_arg("this_fi", this_fi.ident.name) - .set_arg("orig", orig.get_name()) - .span_label(get_relevant_span(orig_fi), fluent::previous_decl_label) - .span_label(get_relevant_span(this_fi), fluent::mismatch_label) - // FIXME(davidtwco): translatable expected/found - .note_expected_found(&"", expected_str, &"", found_str) - }, + decorator, ); } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index 147cd3e04608..ee6fa5300f4a 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,14 +1,18 @@ use std::num::NonZeroU32; use rustc_errors::{ - fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage, SuggestionStyle, + fluent, AddToDiagnostic, Applicability, DecorateLint, DiagnosticMessage, + DiagnosticStyledString, SuggestionStyle, }; use rustc_hir::def_id::DefId; use rustc_macros::{LintDiagnostic, Subdiagnostic}; use rustc_middle::ty::{Predicate, Ty, TyCtxt}; -use rustc_span::{edition::Edition, symbol::Ident, Span, Symbol}; +use rustc_session::parse::ParseSess; +use rustc_span::{edition::Edition, sym, symbol::Ident, Span, Symbol}; -use crate::{errors::OverruledAttributeSub, LateContext}; +use crate::{ + builtin::InitError, builtin::TypeAliasBounds, errors::OverruledAttributeSub, LateContext, +}; // array_into_iter.rs #[derive(LintDiagnostic)] @@ -142,7 +146,31 @@ pub struct BuiltinAnonymousParams<'a> { pub ty_snip: &'a str, } -// FIXME: add lint::builtin_deprecated_attr_link +// FIXME(davidtwco) translatable deprecated attr +#[derive(LintDiagnostic)] +#[diag(lint_builtin_deprecated_attr_link)] +pub struct BuiltinDeprecatedAttrLink<'a> { + pub name: Symbol, + pub reason: &'a str, + pub link: &'a str, + #[subdiagnostic] + pub suggestion: BuiltinDeprecatedAttrLinkSuggestion<'a>, +} + +#[derive(Subdiagnostic)] +pub enum BuiltinDeprecatedAttrLinkSuggestion<'a> { + #[suggestion(msg_suggestion, code = "", applicability = "machine-applicable")] + Msg { + #[primary_span] + suggestion: Span, + msg: &'a str, + }, + #[suggestion(default_suggestion, code = "", applicability = "machine-applicable")] + Default { + #[primary_span] + suggestion: Span, + }, +} #[derive(LintDiagnostic)] #[diag(lint_builtin_deprecated_attr_used)] @@ -199,6 +227,31 @@ pub struct BuiltinMutablesTransmutes; #[diag(lint_builtin_unstable_features)] pub struct BuiltinUnstableFeatures; +// lint_ungated_async_fn_track_caller +pub struct BuiltinUngatedAsyncFnTrackCaller<'a> { + pub label: Span, + pub parse_sess: &'a ParseSess, +} + +impl<'a> DecorateLint<'a, ()> for BuiltinUngatedAsyncFnTrackCaller<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.span_label(self.label, fluent::label); + rustc_session::parse::add_feature_diagnostics( + diag, + &self.parse_sess, + sym::closure_track_caller, + ); + diag + } + + fn msg(&self) -> DiagnosticMessage { + fluent::lint_ungated_async_fn_track_caller + } +} + #[derive(LintDiagnostic)] #[diag(lint_builtin_unreachable_pub)] pub struct BuiltinUnreachablePub<'a> { @@ -209,9 +262,83 @@ pub struct BuiltinUnreachablePub<'a> { pub help: Option<()>, } -// FIXME: migrate builtin_type_alias_where_clause +pub struct SuggestChangingAssocTypes<'a, 'b> { + pub ty: &'a rustc_hir::Ty<'b>, +} -// FIXME: migrate builtin_type_alias_generic_bounds +impl AddToDiagnostic for SuggestChangingAssocTypes<'_, '_> { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + // Access to associates types should use `::Assoc`, which does not need a + // bound. Let's see if this type does that. + + // We use a HIR visitor to walk the type. + use rustc_hir::intravisit::{self, Visitor}; + struct WalkAssocTypes<'a> { + err: &'a mut rustc_errors::Diagnostic, + } + impl Visitor<'_> for WalkAssocTypes<'_> { + fn visit_qpath( + &mut self, + qpath: &rustc_hir::QPath<'_>, + id: rustc_hir::HirId, + span: Span, + ) { + if TypeAliasBounds::is_type_variable_assoc(qpath) { + self.err.span_help(span, fluent::lint_builtin_type_alias_bounds_help); + } + intravisit::walk_qpath(self, qpath, id) + } + } + + // Let's go for a walk! + let mut visitor = WalkAssocTypes { err: diag }; + visitor.visit_ty(self.ty); + } +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_type_alias_where_clause)] +pub struct BuiltinTypeAliasWhereClause<'a, 'b> { + #[suggestion(code = "", applicability = "machine-applicable")] + pub suggestion: Span, + #[subdiagnostic] + pub sub: Option>, +} + +#[derive(LintDiagnostic)] +#[diag(lint_builtin_type_alias_generic_bounds)] +pub struct BuiltinTypeAliasGenericBounds<'a, 'b> { + #[subdiagnostic] + pub suggestion: BuiltinTypeAliasGenericBoundsSuggestion, + #[subdiagnostic] + pub sub: Option>, +} + +pub struct BuiltinTypeAliasGenericBoundsSuggestion { + pub suggestions: Vec<(Span, String)>, +} + +impl AddToDiagnostic for BuiltinTypeAliasGenericBoundsSuggestion { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + diag.multipart_suggestion( + fluent::suggestion, + self.suggestions, + Applicability::MachineApplicable, + ); + } +} #[derive(LintDiagnostic)] #[diag(lint_builtin_trivial_bounds)] @@ -285,9 +412,107 @@ pub struct BuiltinIncompleteFeaturesNote { pub n: NonZeroU32, } -// FIXME: migrate "the type `{}` does not permit {}" +pub struct BuiltinUnpermittedTypeInit<'a> { + pub msg: DiagnosticMessage, + pub ty: Ty<'a>, + pub label: Span, + pub sub: BuiltinUnpermittedTypeInitSub, +} -// FIXME: fluent::lint::builtin_clashing_extern_{same,diff}_name +impl<'a> DecorateLint<'a, ()> for BuiltinUnpermittedTypeInit<'_> { + fn decorate_lint<'b>( + self, + diag: &'b mut rustc_errors::DiagnosticBuilder<'a, ()>, + ) -> &'b mut rustc_errors::DiagnosticBuilder<'a, ()> { + diag.set_arg("ty", self.ty); + diag.span_label(self.label, fluent::lint_builtin_unpermitted_type_init_label); + diag.span_label(self.label, fluent::lint_builtin_unpermitted_type_init_label_suggestion); + self.sub.add_to_diagnostic(diag); + diag + } + + fn msg(&self) -> rustc_errors::DiagnosticMessage { + self.msg.clone() + } +} + +// FIXME(davidtwco): make translatable +pub struct BuiltinUnpermittedTypeInitSub { + pub err: InitError, +} + +impl AddToDiagnostic for BuiltinUnpermittedTypeInitSub { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + let mut err = self.err; + loop { + if let Some(span) = err.span { + diag.span_note(span, err.message); + } else { + diag.note(err.message); + } + if let Some(e) = err.nested { + err = *e; + } else { + break; + } + } + } +} + +#[derive(LintDiagnostic)] +pub enum BuiltinClashingExtern<'a> { + #[diag(lint_builtin_clashing_extern_same_name)] + SameName { + this: Symbol, + orig: Symbol, + #[label(previous_decl_label)] + previous_decl_label: Span, + #[label(mismatch_label)] + mismatch_label: Span, + #[subdiagnostic] + sub: BuiltinClashingExternSub<'a>, + }, + #[diag(lint_builtin_clashing_extern_diff_name)] + DiffName { + this: Symbol, + orig: Symbol, + #[label(previous_decl_label)] + previous_decl_label: Span, + #[label(mismatch_label)] + mismatch_label: Span, + #[subdiagnostic] + sub: BuiltinClashingExternSub<'a>, + }, +} + +// FIXME(davidtwco): translatable expected/found +pub struct BuiltinClashingExternSub<'a> { + pub tcx: TyCtxt<'a>, + pub expected: Ty<'a>, + pub found: Ty<'a>, +} + +impl AddToDiagnostic for BuiltinClashingExternSub<'_> { + fn add_to_diagnostic_with(self, diag: &mut rustc_errors::Diagnostic, _: F) + where + F: Fn( + &mut rustc_errors::Diagnostic, + rustc_errors::SubdiagnosticMessage, + ) -> rustc_errors::SubdiagnosticMessage, + { + let mut expected_str = DiagnosticStyledString::new(); + expected_str.push(self.expected.fn_sig(self.tcx).to_string(), false); + let mut found_str = DiagnosticStyledString::new(); + found_str.push(self.found.fn_sig(self.tcx).to_string(), true); + diag.note_expected_found(&"", expected_str, &"", found_str); + } +} #[derive(LintDiagnostic)] #[diag(lint_builtin_deref_nullptr)] From f38db48dbd534af0ef67c39299a393e7d1fe49e9 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Sun, 13 Nov 2022 10:42:49 -0500 Subject: [PATCH 377/478] add: allow lints in `lints.rs` --- compiler/rustc_lint/src/lints.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index ee6fa5300f4a..a98d5cec9791 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -1,3 +1,5 @@ +#![allow(rustc::untranslatable_diagnostic)] +#![allow(rustc::diagnostic_outside_of_impl)] use std::num::NonZeroU32; use rustc_errors::{ From fe09291036ca0d4c97d67f592442d09a1c45abd0 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Thu, 24 Nov 2022 20:03:06 -0500 Subject: [PATCH 378/478] migrate: `deref_into_dyn_supertrait.rs` --- .../locales/en-US/lint.ftl | 3 ++ .../src/deref_into_dyn_supertrait.rs | 30 ++++++++----------- compiler/rustc_lint/src/lints.rs | 18 +++++++++++ 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/lint.ftl b/compiler/rustc_error_messages/locales/en-US/lint.ftl index 3fa52ff0eb31..d63ff77d8e25 100644 --- a/compiler/rustc_error_messages/locales/en-US/lint.ftl +++ b/compiler/rustc_error_messages/locales/en-US/lint.ftl @@ -457,6 +457,9 @@ lint_builtin_special_module_name_used_lib = found module declaration for lib.rs lint_builtin_special_module_name_used_main = found module declaration for main.rs .note = a binary crate cannot be used as library +lint_supertrait_as_deref_target = `{$t}` implements `Deref` with supertrait `{$target_principal}` as target + .label = target type is set here + lint_overruled_attribute = {$lint_level}({$lint_source}) incompatible with previous forbid .label = overruled by previous forbid diff --git a/compiler/rustc_lint/src/deref_into_dyn_supertrait.rs b/compiler/rustc_lint/src/deref_into_dyn_supertrait.rs index 1d29a234a3c8..dff5a645c175 100644 --- a/compiler/rustc_lint/src/deref_into_dyn_supertrait.rs +++ b/compiler/rustc_lint/src/deref_into_dyn_supertrait.rs @@ -1,6 +1,8 @@ -use crate::{LateContext, LateLintPass, LintContext}; +use crate::{ + lints::{SupertraitAsDerefTarget, SupertraitAsDerefTargetLabel}, + LateContext, LateLintPass, LintContext, +}; -use rustc_errors::DelayDm; use rustc_hir as hir; use rustc_middle::{traits::util::supertraits, ty}; use rustc_span::sym; @@ -71,22 +73,14 @@ impl<'tcx> LateLintPass<'tcx> for DerefIntoDynSupertrait { && supertraits(cx.tcx, t_principal.with_self_ty(cx.tcx, cx.tcx.types.trait_object_dummy_self)) .any(|sup| sup.map_bound(|x| ty::ExistentialTraitRef::erase_self_ty(cx.tcx, x)) == target_principal) { - cx.struct_span_lint( - DEREF_INTO_DYN_SUPERTRAIT, - cx.tcx.def_span(item.owner_id.def_id), - DelayDm(|| { - format!( - "`{t}` implements `Deref` with supertrait `{target_principal}` as target" - ) - }), - |lint| { - if let Some(target_span) = impl_.items.iter().find_map(|i| (i.ident.name == sym::Target).then_some(i.span)) { - lint.span_label(target_span, "target type is set here"); - } - - lint - }, - ) + let label = impl_.items.iter().find_map(|i| (i.ident.name == sym::Target).then_some(i.span)).map(|label| SupertraitAsDerefTargetLabel { + label, + }); + cx.emit_spanned_lint(DEREF_INTO_DYN_SUPERTRAIT, cx.tcx.def_span(item.owner_id.def_id), SupertraitAsDerefTarget { + t, + target_principal: target_principal.to_string(), + label, + }); } } } diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index a98d5cec9791..c3782a496891 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -551,6 +551,24 @@ pub struct BuiltinUnexpectedCliConfigValue { pub value: Symbol, } +// deref_into_dyn_supertrait.rs +#[derive(LintDiagnostic)] +#[diag(lint_supertrait_as_deref_target)] +pub struct SupertraitAsDerefTarget<'a> { + pub t: Ty<'a>, + pub target_principal: String, + // pub target_principal: Binder<'a, ExistentialTraitRef<'b>>, + #[subdiagnostic] + pub label: Option, +} + +#[derive(Subdiagnostic)] +#[label(label)] +pub struct SupertraitAsDerefTargetLabel { + #[primary_span] + pub label: Span, +} + // enum_intrinsics_non_enums.rs #[derive(LintDiagnostic)] #[diag(lint_enum_intrinsics_mem_discriminant)] From 88e5dd2530a48b046d35402807c4b3bb44775688 Mon Sep 17 00:00:00 2001 From: Rejyr Date: Wed, 23 Nov 2022 15:52:03 -0500 Subject: [PATCH 379/478] refactor: cleanup --- compiler/rustc_lint/src/array_into_iter.rs | 2 -- compiler/rustc_lint/src/builtin.rs | 8 +------- compiler/rustc_lint/src/context.rs | 2 -- compiler/rustc_lint/src/early.rs | 2 -- compiler/rustc_lint/src/enum_intrinsics_non_enums.rs | 2 -- compiler/rustc_lint/src/errors.rs | 2 -- compiler/rustc_lint/src/expect.rs | 2 -- compiler/rustc_lint/src/for_loops_over_fallibles.rs | 2 -- compiler/rustc_lint/src/internal.rs | 2 -- compiler/rustc_lint/src/let_underscore.rs | 2 -- compiler/rustc_lint/src/levels.rs | 2 -- compiler/rustc_lint/src/lib.rs | 4 ++-- compiler/rustc_lint/src/methods.rs | 2 -- compiler/rustc_lint/src/non_ascii_idents.rs | 2 -- compiler/rustc_lint/src/non_fmt_panic.rs | 2 -- compiler/rustc_lint/src/nonstandard_style.rs | 2 -- compiler/rustc_lint/src/noop_method_call.rs | 2 -- compiler/rustc_lint/src/pass_by_value.rs | 2 -- compiler/rustc_lint/src/redundant_semicolon.rs | 2 -- compiler/rustc_lint/src/traits.rs | 2 -- compiler/rustc_lint/src/types.rs | 2 -- compiler/rustc_lint/src/unused.rs | 2 -- 22 files changed, 3 insertions(+), 49 deletions(-) diff --git a/compiler/rustc_lint/src/array_into_iter.rs b/compiler/rustc_lint/src/array_into_iter.rs index ea5975ed4f0b..3593f141df61 100644 --- a/compiler/rustc_lint/src/array_into_iter.rs +++ b/compiler/rustc_lint/src/array_into_iter.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ArrayIntoIterDiag, ArrayIntoIterDiagSub}; use crate::{LateContext, LateLintPass, LintContext}; use rustc_hir as hir; diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index 2bdff0d5a09c..6f445426df70 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -1,5 +1,3 @@ -// #![deny(rustc::untranslatable_diagnostic)] -// #![deny(rustc::diagnostic_outside_of_impl)] //! Lints in the Rust compiler. //! //! This contains lints which can feasibly be implemented as their own @@ -2956,11 +2954,6 @@ impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations { }; // Finally, emit the diagnostic. - let mut expected_str = DiagnosticStyledString::new(); - expected_str.push(existing_decl_ty.fn_sig(tcx).to_string(), false); - let mut found_str = DiagnosticStyledString::new(); - found_str.push(this_decl_ty.fn_sig(tcx).to_string(), true); - let this = this_fi.ident.name; let orig = orig.get_name(); let previous_decl_label = get_relevant_span(orig_fi); @@ -3119,6 +3112,7 @@ declare_lint! { declare_lint_pass!(NamedAsmLabels => [NAMED_ASM_LABELS]); impl<'tcx> LateLintPass<'tcx> for NamedAsmLabels { + #[allow(rustc::diagnostic_outside_of_impl)] fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'tcx>) { if let hir::Expr { kind: hir::ExprKind::InlineAsm(hir::InlineAsm { template_strs, .. }), diff --git a/compiler/rustc_lint/src/context.rs b/compiler/rustc_lint/src/context.rs index de9e71d26e17..c9b9a6225714 100644 --- a/compiler/rustc_lint/src/context.rs +++ b/compiler/rustc_lint/src/context.rs @@ -13,8 +13,6 @@ //! previous lint state is pushed onto a stack and the ast is then recursed //! upon. As the ast is traversed, this keeps track of the current lint level //! for all lint attributes. -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use self::TargetLint::*; diff --git a/compiler/rustc_lint/src/early.rs b/compiler/rustc_lint/src/early.rs index 58b1ae6e8001..769c2f88ff3d 100644 --- a/compiler/rustc_lint/src/early.rs +++ b/compiler/rustc_lint/src/early.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] //! Implementation of lint checking. //! //! The lint checking is mostly consolidated into one pass which runs diff --git a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs index 6c398cebee77..73bd4173270b 100644 --- a/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs +++ b/compiler/rustc_lint/src/enum_intrinsics_non_enums.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::{ context::LintContext, lints::{EnumIntrinsicsMemDiscriminate, EnumIntrinsicsMemVariant}, diff --git a/compiler/rustc_lint/src/errors.rs b/compiler/rustc_lint/src/errors.rs index 0ea643fd69b6..f3ae26091863 100644 --- a/compiler/rustc_lint/src/errors.rs +++ b/compiler/rustc_lint/src/errors.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use rustc_errors::{ fluent, AddToDiagnostic, Diagnostic, ErrorGuaranteed, Handler, IntoDiagnostic, SubdiagnosticMessage, diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs index 8985ccee0cdf..70c999811a52 100644 --- a/compiler/rustc_lint/src/expect.rs +++ b/compiler/rustc_lint/src/expect.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{Expectation, ExpectationNote}; use rustc_middle::ty::query::Providers; use rustc_middle::ty::TyCtxt; diff --git a/compiler/rustc_lint/src/for_loops_over_fallibles.rs b/compiler/rustc_lint/src/for_loops_over_fallibles.rs index 7526b8c06327..5219992ee94f 100644 --- a/compiler/rustc_lint/src/for_loops_over_fallibles.rs +++ b/compiler/rustc_lint/src/for_loops_over_fallibles.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::{ lints::{ ForLoopsOverFalliblesDiag, ForLoopsOverFalliblesLoopSub, ForLoopsOverFalliblesQuestionMark, diff --git a/compiler/rustc_lint/src/internal.rs b/compiler/rustc_lint/src/internal.rs index 7d13bcff7fd5..5eb54cc00342 100644 --- a/compiler/rustc_lint/src/internal.rs +++ b/compiler/rustc_lint/src/internal.rs @@ -1,8 +1,6 @@ //! Some lints that are only useful in the compiler or crates that use compiler internals, such as //! Clippy. -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ BadOptAccessDiag, DefaultHashTypesDiag, DiagOutOfImpl, LintPassByHand, NonExistantDocKeyword, QueryInstability, TyQualified, TykindDiag, TykindKind, UntranslatableDiag, diff --git a/compiler/rustc_lint/src/let_underscore.rs b/compiler/rustc_lint/src/let_underscore.rs index 991b3e920adb..b83a9665fc0c 100644 --- a/compiler/rustc_lint/src/let_underscore.rs +++ b/compiler/rustc_lint/src/let_underscore.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::{ lints::{NonBindingLet, NonBindingLetSub}, LateContext, LateLintPass, LintContext, diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs index 500b1f36558d..09dfb1022d85 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::context::{CheckLintNameResult, LintStore}; use crate::late::unerased_lint_store; use crate::lints::{ diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs index afcf8b54322f..3d818154cb94 100644 --- a/compiler/rustc_lint/src/lib.rs +++ b/compiler/rustc_lint/src/lib.rs @@ -38,8 +38,8 @@ #![feature(never_type)] #![feature(rustc_attrs)] #![recursion_limit = "256"] -// #![deny(rustc::untranslatable_diagnostic)] -// #![deny(rustc::diagnostic_outside_of_impl)] +#![deny(rustc::untranslatable_diagnostic)] +#![deny(rustc::diagnostic_outside_of_impl)] #[macro_use] extern crate rustc_middle; diff --git a/compiler/rustc_lint/src/methods.rs b/compiler/rustc_lint/src/methods.rs index 06d4d2d23403..3045fc1a4761 100644 --- a/compiler/rustc_lint/src/methods.rs +++ b/compiler/rustc_lint/src/methods.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::CStringPtr; use crate::LateContext; use crate::LateLintPass; diff --git a/compiler/rustc_lint/src/non_ascii_idents.rs b/compiler/rustc_lint/src/non_ascii_idents.rs index 1cac1508bbd6..f130a98185d6 100644 --- a/compiler/rustc_lint/src/non_ascii_idents.rs +++ b/compiler/rustc_lint/src/non_ascii_idents.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ ConfusableIdentifierPair, IdentifierNonAsciiChar, IdentifierUncommonCodepoints, MixedScriptConfusables, diff --git a/compiler/rustc_lint/src/non_fmt_panic.rs b/compiler/rustc_lint/src/non_fmt_panic.rs index b86097a4bfc4..4a02c6cce47e 100644 --- a/compiler/rustc_lint/src/non_fmt_panic.rs +++ b/compiler/rustc_lint/src/non_fmt_panic.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{NonFmtPanicBraces, NonFmtPanicUnused}; use crate::{LateContext, LateLintPass, LintContext}; use rustc_ast as ast; diff --git a/compiler/rustc_lint/src/nonstandard_style.rs b/compiler/rustc_lint/src/nonstandard_style.rs index 34e3751c061f..74d234fabea0 100644 --- a/compiler/rustc_lint/src/nonstandard_style.rs +++ b/compiler/rustc_lint/src/nonstandard_style.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ NonCamelCaseType, NonCamelCaseTypeSub, NonSnakeCaseDiag, NonSnakeCaseDiagSub, NonUpperCaseGlobal, NonUpperCaseGlobalSub, diff --git a/compiler/rustc_lint/src/noop_method_call.rs b/compiler/rustc_lint/src/noop_method_call.rs index ed796940b89d..d67a00619dd0 100644 --- a/compiler/rustc_lint/src/noop_method_call.rs +++ b/compiler/rustc_lint/src/noop_method_call.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::context::LintContext; use crate::lints::NoopMethodCallDiag; use crate::LateContext; diff --git a/compiler/rustc_lint/src/pass_by_value.rs b/compiler/rustc_lint/src/pass_by_value.rs index 3df0fc385952..57482a9edba8 100644 --- a/compiler/rustc_lint/src/pass_by_value.rs +++ b/compiler/rustc_lint/src/pass_by_value.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::PassByValueDiag; use crate::{LateContext, LateLintPass, LintContext}; use rustc_hir as hir; diff --git a/compiler/rustc_lint/src/redundant_semicolon.rs b/compiler/rustc_lint/src/redundant_semicolon.rs index 6c6add34a520..9a8b14b4907e 100644 --- a/compiler/rustc_lint/src/redundant_semicolon.rs +++ b/compiler/rustc_lint/src/redundant_semicolon.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::{lints::RedundantSemicolonsDiag, EarlyContext, EarlyLintPass, LintContext}; use rustc_ast::{Block, StmtKind}; use rustc_span::Span; diff --git a/compiler/rustc_lint/src/traits.rs b/compiler/rustc_lint/src/traits.rs index 2e778cf0d0fe..7ea1a138b7e6 100644 --- a/compiler/rustc_lint/src/traits.rs +++ b/compiler/rustc_lint/src/traits.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{DropGlue, DropTraitConstraintsDiag}; use crate::LateContext; use crate::LateLintPass; diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index 1300a2fe27aa..625258991a38 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ AtomicOrderingFence, AtomicOrderingLoad, AtomicOrderingStore, ImproperCTypes, InvalidAtomicOrderingDiag, OnlyCastu8ToChar, OverflowingBinHex, OverflowingBinHexSign, diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs index 8c5f68d61446..ac2b32b44e6a 100644 --- a/compiler/rustc_lint/src/unused.rs +++ b/compiler/rustc_lint/src/unused.rs @@ -1,5 +1,3 @@ -#![deny(rustc::untranslatable_diagnostic)] -#![deny(rustc::diagnostic_outside_of_impl)] use crate::lints::{ PathStatementDrop, PathStatementDropSub, PathStatementNoEffect, UnusedAllocationDiag, UnusedAllocationMutDiag, UnusedClosure, UnusedDef, UnusedDelim, UnusedDelimSuggestion, From f75eb24f4f397594604da304b3a1f7f11e1bea49 Mon Sep 17 00:00:00 2001 From: bowlerman Date: Fri, 6 Jan 2023 02:29:37 +0100 Subject: [PATCH 380/478] remove E0280 and ICE instead --- compiler/rustc_error_codes/src/error_codes.rs | 2 +- .../src/traits/error_reporting/mod.rs | 18 +++-- src/test/ui/chalkify/bugs/async.rs | 11 ++- src/test/ui/chalkify/bugs/async.stderr | 70 ++++++++----------- 4 files changed, 52 insertions(+), 49 deletions(-) diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 686c22bc386d..a132a8146e9b 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -574,7 +574,7 @@ E0791: include_str!("./error_codes/E0791.md"), // E0274, // on_unimplemented #2 // E0278, // requirement is not satisfied // E0279, - E0280, // requirement is not satisfied +// E0280, // changed to ICE // E0285, // overflow evaluation builtin bounds // E0296, // replaced with a generic attribute input check // E0298, // cannot compare constants diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs index 9c098e1a2fc1..5f06c4d82828 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs @@ -1102,15 +1102,19 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { } ty::PredicateKind::Clause(ty::Clause::RegionOutlives(..)) - | ty::PredicateKind::Clause(ty::Clause::Projection(..)) | ty::PredicateKind::Clause(ty::Clause::TypeOutlives(..)) => { - let predicate = self.resolve_vars_if_possible(obligation.predicate); - struct_span_err!( - self.tcx.sess, + span_bug!( span, - E0280, - "the requirement `{}` is not satisfied", - predicate + "outlives clauses should not error outside borrowck. obligation: `{:?}`", + obligation + ) + } + + ty::PredicateKind::Clause(ty::Clause::Projection(..)) => { + span_bug!( + span, + "projection clauses should be implied from elsewhere. obligation: `{:?}`", + obligation ) } diff --git a/src/test/ui/chalkify/bugs/async.rs b/src/test/ui/chalkify/bugs/async.rs index ed0f5dc9bd37..86ce42631b43 100644 --- a/src/test/ui/chalkify/bugs/async.rs +++ b/src/test/ui/chalkify/bugs/async.rs @@ -1,6 +1,13 @@ // check-fail -// known-bug: unknown -// compile-flags: -Z trait-solver=chalk --edition=2021 +// known-bug +// unset-rustc-env:RUST_BACKTRACE +// compile-flags:-Z trait-solver=chalk --edition=2021 +// error-pattern:stack backtrace: +// failure-status:101 +// normalize-stderr-test "note: .*" -> "" +// normalize-stderr-test "thread 'rustc' .*" -> "" +// normalize-stderr-test " .*\n" -> "" +// normalize-stderr-test "DefId([^)]*)" -> "..." fn main() -> () {} diff --git a/src/test/ui/chalkify/bugs/async.stderr b/src/test/ui/chalkify/bugs/async.stderr index eda867f4159f..7e2466dece43 100644 --- a/src/test/ui/chalkify/bugs/async.stderr +++ b/src/test/ui/chalkify/bugs/async.stderr @@ -1,48 +1,40 @@ -error[E0277]: `[async fn body@$DIR/async.rs:7:29: 9:2]` is not a future - --> $DIR/async.rs:7:29 - | -LL | async fn foo(x: u32) -> u32 { - | _____________________________- -LL | | x -LL | | } - | | ^ - | | | - | |_`[async fn body@$DIR/async.rs:7:29: 9:2]` is not a future - | required by a bound introduced by this call - | - = help: the trait `Future` is not implemented for `[async fn body@$DIR/async.rs:7:29: 9:2]` - = note: [async fn body@$DIR/async.rs:7:29: 9:2] must be a future or must implement `IntoFuture` to be awaited -note: required by a bound in `identity_future` - --> $SRC_DIR/core/src/future/mod.rs:LL:COL +error[E0277]: `[async fn body@$DIR/async.rs:14:29: 16:2]` is not a future +LL |LL | |LL | | } -error[E0277]: the size for values of type `<[async fn body@$DIR/async.rs:7:29: 9:2] as Future>::Output` cannot be known at compilation time - --> $DIR/async.rs:7:29 - | -LL | async fn foo(x: u32) -> u32 { - | _____________________________^ -LL | | x -LL | | } - | |_^ doesn't have a size known at compile-time - | - = help: the trait `Sized` is not implemented for `<[async fn body@$DIR/async.rs:7:29: 9:2] as Future>::Output` -note: required by a bound in `identity_future` - --> $SRC_DIR/core/src/future/mod.rs:LL:COL -error[E0277]: `[async fn body@$DIR/async.rs:7:29: 9:2]` is not a future - --> $DIR/async.rs:7:25 - | +error[E0277]: the size for values of type `<[async fn body@$DIR/async.rs:14:29: 16:2] as Future>::Output` cannot be known at compilation time +LL |LL | |LL | | } + + +error[E0277]: `[async fn body@$DIR/async.rs:14:29: 16:2]` is not a future LL | async fn foo(x: u32) -> u32 { - | ^^^ `[async fn body@$DIR/async.rs:7:29: 9:2]` is not a future - | - = help: the trait `Future` is not implemented for `[async fn body@$DIR/async.rs:7:29: 9:2]` - = note: [async fn body@$DIR/async.rs:7:29: 9:2] must be a future or must implement `IntoFuture` to be awaited -error[E0280]: the requirement `<[async fn body@$DIR/async.rs:7:29: 9:2] as Future>::Output == u32` is not satisfied - --> $DIR/async.rs:7:25 - | +error: internal compiler error: compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs:1114:25: projection clauses should be implied from elsewhere. obligation: `Obligation(predicate=Binder(ProjectionPredicate(AliasTy { substs: [[async fn body@$DIR/async.rs:14:29: 16:2]], def_id: ...), _use_mk_alias_ty_instead: () }, Term::Ty(u32)), []), depth=0)` LL | async fn foo(x: u32) -> u32 { - | ^^^ + +stack backtrace: + + + + + + + + + +query stack during panic: +#0 [typeck] type-checking `foo` +#1 [thir_body] building THIR for `foo` +#2 [mir_built] building MIR for `foo` +#3 [unsafety_check_result] unsafety-checking `foo` +#4 [mir_const] preparing `foo` for borrow checking +#5 [mir_promoted] processing MIR for `foo` +#6 [mir_borrowck] borrow-checking `foo` +#7 [type_of] computing type of `foo::{opaque#0}` +#8 [check_mod_item_types] checking item types in top-level module +#9 [analysis] running analysis passes on this crate +end of query stack error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0277`. From 203bbfa2f76090e51e237da1017de19497b36d0e Mon Sep 17 00:00:00 2001 From: Ezra Shaw Date: Mon, 9 Jan 2023 22:21:21 +1300 Subject: [PATCH 381/478] impl: specialize impl of `ToString` on `bool` --- library/alloc/src/string.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/alloc/src/string.rs b/library/alloc/src/string.rs index 24f1b3a1c875..3118c7189a5e 100644 --- a/library/alloc/src/string.rs +++ b/library/alloc/src/string.rs @@ -2548,6 +2548,15 @@ impl ToString for char { } } +#[cfg(not(no_global_oom_handling))] +#[stable(feature = "bool_to_string_specialization", since = "CURRENT_RUSTC_VERSION")] +impl ToString for bool { + #[inline] + fn to_string(&self) -> String { + String::from(if *self { "true" } else { "false" }) + } +} + #[cfg(not(no_global_oom_handling))] #[stable(feature = "u8_to_string_specialization", since = "1.54.0")] impl ToString for u8 { From 5fb9ca3c5e34a0ad4e4770ea475d75b26e201b61 Mon Sep 17 00:00:00 2001 From: ozkanonur Date: Tue, 10 Jan 2023 10:56:17 +0300 Subject: [PATCH 382/478] create helper function for `rustc_lint_defs::Level` and remove it's duplicated code r=ozkanonur Signed-off-by: ozkanonur --- compiler/rustc_errors/src/diagnostic_impls.rs | 11 +---------- compiler/rustc_lint_defs/src/lib.rs | 13 +++++++++++++ compiler/rustc_middle/src/lint.rs | 11 +---------- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/compiler/rustc_errors/src/diagnostic_impls.rs b/compiler/rustc_errors/src/diagnostic_impls.rs index 794b6efcc2b2..dad5e98aac02 100644 --- a/compiler/rustc_errors/src/diagnostic_impls.rs +++ b/compiler/rustc_errors/src/diagnostic_impls.rs @@ -179,16 +179,7 @@ impl IntoDiagnosticArg for type_ir::FloatTy { impl IntoDiagnosticArg for Level { fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> { - DiagnosticArgValue::Str(Cow::Borrowed(match self { - Level::Allow => "-A", - Level::Warn => "-W", - Level::ForceWarn(_) => "--force-warn", - Level::Deny => "-D", - Level::Forbid => "-F", - Level::Expect(_) => { - unreachable!("lints with the level of `expect` should not run this code"); - } - })) + DiagnosticArgValue::Str(Cow::Borrowed(self.to_cmd_flag())) } } diff --git a/compiler/rustc_lint_defs/src/lib.rs b/compiler/rustc_lint_defs/src/lib.rs index aa54b3d8ac2b..f4b4c5168bfd 100644 --- a/compiler/rustc_lint_defs/src/lib.rs +++ b/compiler/rustc_lint_defs/src/lib.rs @@ -253,6 +253,19 @@ impl Level { } } + pub fn to_cmd_flag(self) -> &'static str { + match self { + Level::Warn => "-W", + Level::Deny => "-D", + Level::Forbid => "-F", + Level::Allow => "-A", + Level::ForceWarn(_) => "--force-warn", + Level::Expect(_) => { + unreachable!("the expect level does not have a commandline flag") + } + } + } + pub fn is_error(self) -> bool { match self { Level::Allow | Level::Expect(_) | Level::Warn | Level::ForceWarn(_) => false, diff --git a/compiler/rustc_middle/src/lint.rs b/compiler/rustc_middle/src/lint.rs index eb48b325e84e..c61de97d5327 100644 --- a/compiler/rustc_middle/src/lint.rs +++ b/compiler/rustc_middle/src/lint.rs @@ -234,16 +234,7 @@ pub fn explain_lint_level_source( err.note_once(&format!("`#[{}({})]` on by default", level.as_str(), name)); } LintLevelSource::CommandLine(lint_flag_val, orig_level) => { - let flag = match orig_level { - Level::Warn => "-W", - Level::Deny => "-D", - Level::Forbid => "-F", - Level::Allow => "-A", - Level::ForceWarn(_) => "--force-warn", - Level::Expect(_) => { - unreachable!("the expect level does not have a commandline flag") - } - }; + let flag = orig_level.to_cmd_flag(); let hyphen_case_lint_name = name.replace('_', "-"); if lint_flag_val.as_str() == name { err.note_once(&format!( From 836ef6162dfe11c603854851a4a9b5c5e856f0d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Sat, 3 Dec 2022 00:00:00 +0000 Subject: [PATCH 383/478] Add comment to cleanup_kinds based on the original commit message 1ae7ae0c1c7ed68c616273f245647afa47f3cbde --- compiler/rustc_codegen_ssa/src/mir/analyze.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/rustc_codegen_ssa/src/mir/analyze.rs b/compiler/rustc_codegen_ssa/src/mir/analyze.rs index c7617d2e464f..dd1ac2c74aed 100644 --- a/compiler/rustc_codegen_ssa/src/mir/analyze.rs +++ b/compiler/rustc_codegen_ssa/src/mir/analyze.rs @@ -261,6 +261,9 @@ impl CleanupKind { } } +/// MSVC requires unwinding code to be split to a tree of *funclets*, where each funclet can only +/// branch to itself or to its parent. Luckily, the code we generates matches this pattern. +/// Recover that structure in an analyze pass. pub fn cleanup_kinds(mir: &mir::Body<'_>) -> IndexVec { fn discover_masters<'tcx>( result: &mut IndexVec, From 78075e1e26176f86cbafb0bf24f86dba174351ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Fri, 6 Jan 2023 00:00:00 +0000 Subject: [PATCH 384/478] Change type of mutable_noalias to bool --- compiler/rustc_interface/src/tests.rs | 2 +- compiler/rustc_session/src/options.rs | 2 +- compiler/rustc_ty_utils/src/abi.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index 316e2e29cd8b..6c26b47eaa4a 100644 --- a/compiler/rustc_interface/src/tests.rs +++ b/compiler/rustc_interface/src/tests.rs @@ -754,7 +754,7 @@ fn test_unstable_options_tracking_hash() { tracked!(mir_enable_passes, vec![("DestProp".to_string(), false)]); tracked!(mir_opt_level, Some(4)); tracked!(move_size_limit, Some(4096)); - tracked!(mutable_noalias, Some(true)); + tracked!(mutable_noalias, false); tracked!(no_generate_arange_section, true); tracked!(no_jump_tables, true); tracked!(no_link, true); diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 043a60a1c531..43c4fd011e13 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1437,7 +1437,7 @@ options! { "use line numbers relative to the function in mir pretty printing"), move_size_limit: Option = (None, parse_opt_number, [TRACKED], "the size at which the `large_assignments` lint starts to be emitted"), - mutable_noalias: Option = (None, parse_opt_bool, [TRACKED], + mutable_noalias: bool = (true, parse_bool, [TRACKED], "emit noalias metadata for mutable references (default: yes)"), nll_facts: bool = (false, parse_bool, [UNTRACKED], "dump facts from NLL analysis into side files (default: no)"), diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs index f8a5691f29de..bbb2b3b987d6 100644 --- a/compiler/rustc_ty_utils/src/abi.rs +++ b/compiler/rustc_ty_utils/src/abi.rs @@ -259,7 +259,7 @@ fn adjust_for_rust_scalar<'tcx>( // LLVM prior to version 12 had known miscompiles in the presence of noalias attributes // (see #54878), so it was conditionally disabled, but we don't support earlier // versions at all anymore. We still support turning it off using -Zmutable-noalias. - let noalias_mut_ref = cx.tcx.sess.opts.unstable_opts.mutable_noalias.unwrap_or(true); + let noalias_mut_ref = cx.tcx.sess.opts.unstable_opts.mutable_noalias; // `&mut` pointer parameters never alias other parameters, // or mutable global data From 72f8d6a6597e4b780e518e606ec39595ee0eda85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Fri, 6 Jan 2023 00:00:00 +0000 Subject: [PATCH 385/478] Change type of box_noalias to bool --- compiler/rustc_interface/src/tests.rs | 2 +- compiler/rustc_session/src/options.rs | 2 +- compiler/rustc_ty_utils/src/abi.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index 6c26b47eaa4a..a3b9891ee64e 100644 --- a/compiler/rustc_interface/src/tests.rs +++ b/compiler/rustc_interface/src/tests.rs @@ -715,7 +715,7 @@ fn test_unstable_options_tracking_hash() { tracked!(asm_comments, true); tracked!(assume_incomplete_release, true); tracked!(binary_dep_depinfo, true); - tracked!(box_noalias, Some(false)); + tracked!(box_noalias, false); tracked!( branch_protection, Some(BranchProtection { diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 43c4fd011e13..994be8d5f85f 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1255,7 +1255,7 @@ options! { binary_dep_depinfo: bool = (false, parse_bool, [TRACKED], "include artifacts (sysroot, crate dependencies) used during compilation in dep-info \ (default: no)"), - box_noalias: Option = (None, parse_opt_bool, [TRACKED], + box_noalias: bool = (true, parse_bool, [TRACKED], "emit noalias metadata for box (default: yes)"), branch_protection: Option = (None, parse_branch_protection, [TRACKED], "set options for branch target identification and pointer authentication on AArch64"), diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs index bbb2b3b987d6..d1197774fe96 100644 --- a/compiler/rustc_ty_utils/src/abi.rs +++ b/compiler/rustc_ty_utils/src/abi.rs @@ -254,7 +254,7 @@ fn adjust_for_rust_scalar<'tcx>( // The aliasing rules for `Box` are still not decided, but currently we emit // `noalias` for it. This can be turned off using an unstable flag. // See https://github.com/rust-lang/unsafe-code-guidelines/issues/326 - let noalias_for_box = cx.tcx.sess.opts.unstable_opts.box_noalias.unwrap_or(true); + let noalias_for_box = cx.tcx.sess.opts.unstable_opts.box_noalias; // LLVM prior to version 12 had known miscompiles in the presence of noalias attributes // (see #54878), so it was conditionally disabled, but we don't support earlier From 8ca900b01ce5ff90511fd9d02c29e50a89fcccf0 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Tue, 10 Jan 2023 11:12:54 +0100 Subject: [PATCH 386/478] rename --- CHANGELOG.md | 1 + clippy_lints/src/declared_lints.rs | 2 +- clippy_lints/src/derive.rs | 8 ++++---- clippy_lints/src/renamed_lints.rs | 1 + ...rive_hash_xor_eq.rs => derived_hash_with_manual_eq.rs} | 0 ...h_xor_eq.stderr => derived_hash_with_manual_eq.stderr} | 0 tests/ui/rename.rs | 2 ++ 7 files changed, 9 insertions(+), 5 deletions(-) rename tests/ui/{derive_hash_xor_eq.rs => derived_hash_with_manual_eq.rs} (100%) rename tests/ui/{derive_hash_xor_eq.stderr => derived_hash_with_manual_eq.stderr} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02f3188f8be0..8e31e8f0d981 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4137,6 +4137,7 @@ Released 2018-09-13 [`derive_hash_xor_eq`]: https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [`derive_ord_xor_partial_ord`]: https://rust-lang.github.io/rust-clippy/master/index.html#derive_ord_xor_partial_ord [`derive_partial_eq_without_eq`]: https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq +[`derived_hash_with_manual_eq`]: https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq [`disallowed_macros`]: https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_macros [`disallowed_method`]: https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_method [`disallowed_methods`]: https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_methods diff --git a/clippy_lints/src/declared_lints.rs b/clippy_lints/src/declared_lints.rs index 2982460c9cfa..91ca73633f06 100644 --- a/clippy_lints/src/declared_lints.rs +++ b/clippy_lints/src/declared_lints.rs @@ -111,7 +111,7 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[ crate::dereference::NEEDLESS_BORROW_INFO, crate::dereference::REF_BINDING_TO_REFERENCE_INFO, crate::derivable_impls::DERIVABLE_IMPLS_INFO, - crate::derive::DERIVE_HASH_XOR_EQ_INFO, + crate::derive::DERIVED_HASH_WITH_MANUAL_EQ_INFO, crate::derive::DERIVE_ORD_XOR_PARTIAL_ORD_INFO, crate::derive::DERIVE_PARTIAL_EQ_WITHOUT_EQ_INFO, crate::derive::EXPL_IMPL_CLONE_ON_COPY_INFO, diff --git a/clippy_lints/src/derive.rs b/clippy_lints/src/derive.rs index e39a31a8c725..983a517bc123 100644 --- a/clippy_lints/src/derive.rs +++ b/clippy_lints/src/derive.rs @@ -46,7 +46,7 @@ declare_clippy_lint! { /// } /// ``` #[clippy::version = "pre 1.29.0"] - pub DERIVE_HASH_XOR_EQ, + pub DERIVED_HASH_WITH_MANUAL_EQ, correctness, "deriving `Hash` but implementing `PartialEq` explicitly" } @@ -197,7 +197,7 @@ declare_clippy_lint! { declare_lint_pass!(Derive => [ EXPL_IMPL_CLONE_ON_COPY, - DERIVE_HASH_XOR_EQ, + DERIVED_HASH_WITH_MANUAL_EQ, DERIVE_ORD_XOR_PARTIAL_ORD, UNSAFE_DERIVE_DESERIALIZE, DERIVE_PARTIAL_EQ_WITHOUT_EQ @@ -226,7 +226,7 @@ impl<'tcx> LateLintPass<'tcx> for Derive { } } -/// Implementation of the `DERIVE_HASH_XOR_EQ` lint. +/// Implementation of the `DERIVED_HASH_WITH_MANUAL_EQ` lint. fn check_hash_peq<'tcx>( cx: &LateContext<'tcx>, span: Span, @@ -254,7 +254,7 @@ fn check_hash_peq<'tcx>( if trait_ref.substs.type_at(1) == ty { span_lint_and_then( cx, - DERIVE_HASH_XOR_EQ, + DERIVED_HASH_WITH_MANUAL_EQ, span, "you are deriving `Hash` but have implemented `PartialEq` explicitly", |diag| { diff --git a/clippy_lints/src/renamed_lints.rs b/clippy_lints/src/renamed_lints.rs index 72c25592609b..9f487dedb8cb 100644 --- a/clippy_lints/src/renamed_lints.rs +++ b/clippy_lints/src/renamed_lints.rs @@ -9,6 +9,7 @@ pub static RENAMED_LINTS: &[(&str, &str)] = &[ ("clippy::box_vec", "clippy::box_collection"), ("clippy::const_static_lifetime", "clippy::redundant_static_lifetimes"), ("clippy::cyclomatic_complexity", "clippy::cognitive_complexity"), + ("clippy::derive_hash_xor_eq", "clippy::derived_hash_with_manual_eq"), ("clippy::disallowed_method", "clippy::disallowed_methods"), ("clippy::disallowed_type", "clippy::disallowed_types"), ("clippy::eval_order_dependence", "clippy::mixed_read_write_in_expression"), diff --git a/tests/ui/derive_hash_xor_eq.rs b/tests/ui/derived_hash_with_manual_eq.rs similarity index 100% rename from tests/ui/derive_hash_xor_eq.rs rename to tests/ui/derived_hash_with_manual_eq.rs diff --git a/tests/ui/derive_hash_xor_eq.stderr b/tests/ui/derived_hash_with_manual_eq.stderr similarity index 100% rename from tests/ui/derive_hash_xor_eq.stderr rename to tests/ui/derived_hash_with_manual_eq.stderr diff --git a/tests/ui/rename.rs b/tests/ui/rename.rs index 699c0ff464e9..64bc1ca7116c 100644 --- a/tests/ui/rename.rs +++ b/tests/ui/rename.rs @@ -10,6 +10,7 @@ #![allow(clippy::box_collection)] #![allow(clippy::redundant_static_lifetimes)] #![allow(clippy::cognitive_complexity)] +#![allow(clippy::derived_hash_with_manual_eq)] #![allow(clippy::disallowed_methods)] #![allow(clippy::disallowed_types)] #![allow(clippy::mixed_read_write_in_expression)] @@ -45,6 +46,7 @@ #![warn(clippy::box_vec)] #![warn(clippy::const_static_lifetime)] #![warn(clippy::cyclomatic_complexity)] +#![warn(clippy::derive_hash_xor_eq)] #![warn(clippy::disallowed_method)] #![warn(clippy::disallowed_type)] #![warn(clippy::eval_order_dependence)] From 04acc1d9dcb57b973e818ea817b106af5214164f Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Tue, 10 Jan 2023 16:06:19 +0100 Subject: [PATCH 387/478] disable fast submodule checkout due to spurious ci failures --- src/ci/scripts/checkout-submodules.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ci/scripts/checkout-submodules.sh b/src/ci/scripts/checkout-submodules.sh index f6cb8f8a6da6..5bb343241aea 100755 --- a/src/ci/scripts/checkout-submodules.sh +++ b/src/ci/scripts/checkout-submodules.sh @@ -36,7 +36,8 @@ function fetch_github_commit_archive { rm $cached } -included="src/llvm-project src/doc/book src/doc/rust-by-example" +#included="src/llvm-project src/doc/book src/doc/rust-by-example" +included="" modules="$(git config --file .gitmodules --get-regexp '\.path$' | cut -d' ' -f2)" modules=($modules) use_git="" @@ -60,9 +61,9 @@ done retry sh -c "git submodule deinit -f $use_git && \ git submodule sync && \ git submodule update -j 16 --init --recursive --depth 1 $use_git" -STATUS=0 -for pid in ${bg_pids[*]} -do - wait $pid || STATUS=1 -done -exit ${STATUS} +#STATUS=0 +#for pid in ${bg_pids[*]} +#do +# wait $pid || STATUS=1 +#done +#exit ${STATUS} From f7bc68bb4edd1974f7c4aa6113902132429c00e8 Mon Sep 17 00:00:00 2001 From: yukang Date: Wed, 11 Jan 2023 00:19:27 +0800 Subject: [PATCH 388/478] use with_capacity in read read_to_string --- library/std/src/fs.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index 6ddd5c28cc2d..5c5ef0b1125a 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -249,9 +249,8 @@ pub struct DirBuilder { pub fn read>(path: P) -> io::Result> { fn inner(path: &Path) -> io::Result> { let mut file = File::open(path)?; - let mut bytes = Vec::new(); let size = file.metadata().map(|m| m.len()).unwrap_or(0); - bytes.reserve(size as usize); + let mut bytes = Vec::with_capacity(size as usize); io::default_read_to_end(&mut file, &mut bytes)?; Ok(bytes) } @@ -290,9 +289,8 @@ pub fn read>(path: P) -> io::Result> { pub fn read_to_string>(path: P) -> io::Result { fn inner(path: &Path) -> io::Result { let mut file = File::open(path)?; - let mut string = String::new(); let size = file.metadata().map(|m| m.len()).unwrap_or(0); - string.reserve(size as usize); + let mut string = String::with_capacity(size as usize); io::default_read_to_string(&mut file, &mut string)?; Ok(string) } From 4f40eee2bca86c009e1a12d611d9bdf4e3c4ed54 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Tue, 10 Jan 2023 13:13:04 +0100 Subject: [PATCH 389/478] bump Cargo submodule to fix CVE-2022-46176 --- Cargo.lock | 32 ++++++++++++++++++++++++++------ src/tools/cargo | 2 +- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da47b08c7df5..2a88152b5194 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -203,6 +203,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64ct" version = "1.5.3" @@ -328,6 +334,7 @@ name = "cargo" version = "0.69.0" dependencies = [ "anyhow", + "base64", "bytesize", "cargo-platform 0.1.2", "cargo-test-macro", @@ -345,6 +352,7 @@ dependencies = [ "git2-curl", "glob", "hex 0.4.2", + "hmac", "home", "http-auth", "humantime 2.0.1", @@ -375,6 +383,7 @@ dependencies = [ "serde-value", "serde_ignored", "serde_json", + "sha1", "shell-escape", "snapbox", "strip-ansi-escapes", @@ -1778,9 +1787,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" +checksum = "be36bc9e0546df253c0cc41fd0af34f5e92845ad8509462ec76672fac6997f5b" dependencies = [ "bitflags", "libc", @@ -1793,9 +1802,9 @@ dependencies = [ [[package]] name = "git2-curl" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed817a00721e2f8037ba722e60358d4956dae9cca10315fc982f967907d3b0cd" +checksum = "7577f4e6341ba7c90d883511130a45b956c274ba5f4d205d9f9da990f654cd33" dependencies = [ "curl", "git2", @@ -2335,9 +2344,9 @@ dependencies = [ [[package]] name = "libgit2-sys" -version = "0.14.0+1.5.0" +version = "0.14.1+1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a00859c70c8a4f7218e6d1cc32875c4b55f6799445b842b0d8ed5e4c3d959b" +checksum = "4a07fb2692bc3593bda59de45a502bb3071659f2c515e28c71e728306b038e17" dependencies = [ "cc", "libc", @@ -5094,6 +5103,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha2" version = "0.10.6" diff --git a/src/tools/cargo b/src/tools/cargo index 8c460b2237a6..d992ab4e9034 160000 --- a/src/tools/cargo +++ b/src/tools/cargo @@ -1 +1 @@ -Subproject commit 8c460b2237a6359a7e3335890db8da049bdd62fc +Subproject commit d992ab4e9034930e7809749f04077045af8f4d79 From e491b080b322324d9310b1af2b3a700b69b010f5 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Tue, 10 Jan 2023 13:08:25 +0100 Subject: [PATCH 390/478] update release notes for 1.66.1 --- RELEASES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index 770dee7b5461..2901bfcc3e3e 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,8 @@ +Version 1.66.1 (2023-01-10) +=========================== + +- Added validation of SSH host keys for git URLs in Cargo ([CVE-2022-46176](https://www.cve.org/CVERecord?id=CVE-2022-46176)) + Version 1.66.0 (2022-12-15) ========================== From 2214c6d194d668efe6b1ee000a150372110c114b Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 10 Jan 2023 18:16:43 +0100 Subject: [PATCH 391/478] Fix invalid files array re-creation in rustdoc-gui tester --- src/tools/rustdoc-gui/tester.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/rustdoc-gui/tester.js b/src/tools/rustdoc-gui/tester.js index 900ca3894362..554b2f81fa3b 100644 --- a/src/tools/rustdoc-gui/tester.js +++ b/src/tools/rustdoc-gui/tester.js @@ -278,7 +278,8 @@ async function main(argv) { await runTests(opts, framework_options, files, new_results, status_bar, it + 1 >= NB_RETRY); Array.prototype.push.apply(results.successful, new_results.successful); // We generate the new list of files with the previously failing tests. - files = Array.prototype.concat(new_results.failed, new_results.errored); + files = Array.prototype.concat(new_results.failed, new_results.errored).map( + f => f['file_name']); if (files.length > originalFilesLen / 2) { // If we have too many failing tests, it's very likely not flaky failures anymore so // no need to retry. From 0399a636e69f7a7a33070a26914ec390f4f8e824 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 10 Jan 2023 18:27:00 +0100 Subject: [PATCH 392/478] Fix scrolling for item declaration block --- src/librustdoc/html/static/css/rustdoc.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 77401e8b76e8..9848fd4fd384 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -337,6 +337,10 @@ pre { .item-decl pre { overflow-x: auto; } +/* This rule allows to have scrolling on the X axis. */ +.item-decl .type-contents-toggle { + contain: initial; +} .source .content pre { padding: 20px; From 719f54583146de66d42396290df3293e27bd861f Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 10 Jan 2023 18:27:12 +0100 Subject: [PATCH 393/478] Add GUI test for item declaration block scrolling --- src/test/rustdoc-gui/src/lib2/lib.rs | 158 ++++++++++++++++++ .../rustdoc-gui/type-declation-overflow.goml | 15 ++ 2 files changed, 173 insertions(+) diff --git a/src/test/rustdoc-gui/src/lib2/lib.rs b/src/test/rustdoc-gui/src/lib2/lib.rs index 24aecc70d65e..34e67d9d2543 100644 --- a/src/test/rustdoc-gui/src/lib2/lib.rs +++ b/src/test/rustdoc-gui/src/lib2/lib.rs @@ -183,3 +183,161 @@ impl ItemInfoAlignmentTest { #[deprecated] pub fn bar() {} } + +pub mod scroll_traits { + use std::iter::*; + + /// Shamelessly (partially) copied from `std::iter::Iterator`. + /// It allows us to check that the scroll is working as expected on "hidden" items. + pub trait Iterator { + type Item; + + fn next(&mut self) -> Option; + fn size_hint(&self) -> (usize, Option); + fn count(self) -> usize + where + Self: Sized; + fn last(self) -> Option + where + Self: Sized; + fn advance_by(&mut self, n: usize) -> Result<(), usize>; + fn nth(&mut self, n: usize) -> Option; + fn step_by(self, step: usize) -> StepBy + where + Self: Sized; + fn chain(self, other: U) -> Chain + where + Self: Sized, + U: IntoIterator; + fn zip(self, other: U) -> Zip + where + Self: Sized, + U: IntoIterator; + fn intersperse(self, separator: Self::Item) -> Intersperse + where + Self: Sized, + Self::Item: Clone; + fn intersperse_with(self, separator: G) -> IntersperseWith + where + Self: Sized, + G: FnMut() -> Self::Item; + fn map(self, f: F) -> Map + where + Self: Sized, + F: FnMut(Self::Item) -> B; + fn for_each(self, f: F) + where + Self: Sized, + F: FnMut(Self::Item); + fn filter

(self, predicate: P) -> Filter + where + Self: Sized, + P: FnMut(&Self::Item) -> bool; + fn filter_map(self, f: F) -> FilterMap + where + Self: Sized, + F: FnMut(Self::Item) -> Option; + fn enumerate(self) -> Enumerate + where + Self: Sized; + fn peekable(self) -> Peekable + where + Self: Sized; + fn skip_while

(self, predicate: P) -> SkipWhile + where + Self: Sized, + P: FnMut(&Self::Item) -> bool; + fn take_while

(self, predicate: P) -> TakeWhile + where + Self: Sized, + P: FnMut(&Self::Item) -> bool; + fn map_while(self, predicate: P) -> MapWhile + where + Self: Sized, + P: FnMut(Self::Item) -> Option; + fn skip(self, n: usize) -> Skip + where + Self: Sized; + fn take(self, n: usize) -> Take + where + Self: Sized; + fn scan(self, initial_state: St, f: F) -> Scan + where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option; + fn flat_map(self, f: F) -> FlatMap + where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U; + fn flatten(self) -> Flatten + where + Self: Sized, + Self::Item: IntoIterator; + fn fuse(self) -> Fuse + where + Self: Sized; + fn inspect(self, f: F) -> Inspect + where + Self: Sized, + F: FnMut(&Self::Item); + fn by_ref(&mut self) -> &mut Self + where + Self: Sized; + fn collect>(self) -> B + where + Self: Sized; + fn collect_into>(self, collection: &mut E) -> &mut E + where + Self: Sized; + fn partition(self, f: F) -> (B, B) + where + Self: Sized, + B: Default + Extend, + F: FnMut(&Self::Item) -> bool; + fn partition_in_place<'a, T: 'a, P>(mut self, predicate: P) -> usize + where + Self: Sized + DoubleEndedIterator, + P: FnMut(&T) -> bool; + fn is_partitioned

(mut self, mut predicate: P) -> bool + where + Self: Sized, + P: FnMut(Self::Item) -> bool; + fn fold(mut self, init: B, mut f: F) -> B + where + Self: Sized, + F: FnMut(B, Self::Item) -> B; + fn reduce(mut self, f: F) -> Option + where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item; + fn all(&mut self, f: F) -> bool + where + Self: Sized, + F: FnMut(Self::Item) -> bool; + fn any(&mut self, f: F) -> bool + where + Self: Sized, + F: FnMut(Self::Item) -> bool; + fn find

(&mut self, predicate: P) -> Option + where + Self: Sized, + P: FnMut(&Self::Item) -> bool; + fn find_map(&mut self, f: F) -> Option + where + Self: Sized, + F: FnMut(Self::Item) -> Option; + fn position

(&mut self, predicate: P) -> Option + where + Self: Sized, + P: FnMut(Self::Item) -> bool; + /// We will scroll to "string" to ensure it scrolls as expected. + fn this_is_a_method_with_a_long_name_returning_something() -> String; + } + + /// This one doesn't have hidden items (because there are too many) so we can also confirm that it + /// scrolls as expected. + pub trait TraitWithLongItemsName { + fn this_is_a_method_with_a_long_name_returning_something() -> String; + } +} diff --git a/src/test/rustdoc-gui/type-declation-overflow.goml b/src/test/rustdoc-gui/type-declation-overflow.goml index 9b60bc04738b..644429c014c1 100644 --- a/src/test/rustdoc-gui/type-declation-overflow.goml +++ b/src/test/rustdoc-gui/type-declation-overflow.goml @@ -59,3 +59,18 @@ goto: "file://" + |DOC_PATH| + "/lib2/too_long/struct.SuperIncrediblyLongLongLon compare-elements-position-false: (".main-heading h1", ".main-heading .out-of-band", ("y")) goto: "file://" + |DOC_PATH| + "/lib2/index.html" compare-elements-position-false: (".main-heading h1", ".main-heading .out-of-band", ("y")) + +// Now we will check that the scrolling is working. +// First on an item with "hidden methods". +goto: "file://" + |DOC_PATH| + "/lib2/scroll_traits/trait.Iterator.html" + +click: ".item-decl .type-contents-toggle" +assert-property: (".item-decl > pre", {"scrollLeft": 0}) +scroll-to: "//*[@class='item-decl']//details/a[text()='String']" +assert-property-false: (".item-decl > pre", {"scrollLeft": 0}) + +// Then on an item without "hidden methods". +goto: "file://" + |DOC_PATH| + "/lib2/scroll_traits/trait.TraitWithLongItemsName.html" +assert-property: (".item-decl > pre", {"scrollLeft": 0}) +scroll-to: "//*[@class='item-decl']//code/a[text()='String']" +assert-property-false: (".item-decl > pre", {"scrollLeft": 0}) From 36c9b49c145af1a98948046dcc7060e2e552881c Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 9 Jan 2023 12:09:32 +0100 Subject: [PATCH 394/478] Remove unneeded ItemId::Primitive variant --- src/librustdoc/clean/inline.rs | 4 +- src/librustdoc/clean/types.rs | 12 +-- src/librustdoc/formats/mod.rs | 6 -- src/librustdoc/html/render/search_index.rs | 101 ++++++++++++++------- src/librustdoc/json/conversions.rs | 1 - 5 files changed, 74 insertions(+), 50 deletions(-) diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index d1601272af75..aad24b4a0749 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -600,7 +600,9 @@ fn build_module_items( items.push(clean::Item { name: None, attrs: Box::new(clean::Attributes::default()), - item_id: ItemId::Primitive(prim_ty, did.krate), + // We can use the item's `DefId` directly since the only information ever used + // from it is `DefId.krate`. + item_id: ItemId::DefId(did), kind: Box::new(clean::ImportItem(clean::Import::new_simple( item.ident.name, clean::ImportSource { diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 827afafbba3b..5c63efef717d 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -62,8 +62,6 @@ pub(crate) enum ItemId { Auto { trait_: DefId, for_: DefId }, /// Identifier that is used for blanket implementations. Blanket { impl_id: DefId, for_: DefId }, - /// Identifier for primitive types. - Primitive(PrimitiveType, CrateNum), } impl ItemId { @@ -73,7 +71,6 @@ impl ItemId { ItemId::Auto { for_: id, .. } | ItemId::Blanket { for_: id, .. } | ItemId::DefId(id) => id.is_local(), - ItemId::Primitive(_, krate) => krate == LOCAL_CRATE, } } @@ -98,7 +95,6 @@ impl ItemId { ItemId::Auto { for_: id, .. } | ItemId::Blanket { for_: id, .. } | ItemId::DefId(id) => id.krate, - ItemId::Primitive(_, krate) => krate, } } } @@ -707,15 +703,13 @@ impl Item { let def_id = match self.item_id { // Anything but DefId *shouldn't* matter, but return a reasonable value anyway. ItemId::Auto { .. } | ItemId::Blanket { .. } => return None, - // Primitives and Keywords are written in the source code as private modules. - // The modules need to be private so that nobody actually uses them, but the - // keywords and primitives that they are documenting are public. - ItemId::Primitive(..) => return Some(Visibility::Public), ItemId::DefId(def_id) => def_id, }; match *self.kind { - // Explication on `ItemId::Primitive` just above. + // Primitives and Keywords are written in the source code as private modules. + // The modules need to be private so that nobody actually uses them, but the + // keywords and primitives that they are documenting are public. ItemKind::KeywordItem | ItemKind::PrimitiveItem(_) => return Some(Visibility::Public), // Variant fields inherit their enum's visibility. StructFieldItem(..) if is_field_vis_inherited(tcx, def_id) => { diff --git a/src/librustdoc/formats/mod.rs b/src/librustdoc/formats/mod.rs index b236bd7be4f0..e607a16ad545 100644 --- a/src/librustdoc/formats/mod.rs +++ b/src/librustdoc/formats/mod.rs @@ -53,12 +53,6 @@ impl Impl { ItemId::Blanket { impl_id, .. } => impl_id, ItemId::Auto { trait_, .. } => trait_, ItemId::DefId(def_id) => def_id, - ItemId::Primitive(_, _) => { - panic!( - "Unexpected ItemId::Primitive in expect_def_id: {:?}", - self.impl_item.item_id - ) - } } } diff --git a/src/librustdoc/html/render/search_index.rs b/src/librustdoc/html/render/search_index.rs index 2d61519d6c90..bc74d9cf9697 100644 --- a/src/librustdoc/html/render/search_index.rs +++ b/src/librustdoc/html/render/search_index.rs @@ -3,7 +3,6 @@ use std::collections::BTreeMap; use rustc_data_structures::fx::FxHashMap; use rustc_middle::ty::TyCtxt; -use rustc_span::def_id::LOCAL_CRATE; use rustc_span::symbol::Symbol; use serde::ser::{Serialize, SerializeStruct, Serializer}; @@ -24,6 +23,7 @@ pub(crate) fn build_index<'tcx>( tcx: TyCtxt<'tcx>, ) -> String { let mut itemid_to_pathid = FxHashMap::default(); + let mut primitives = FxHashMap::default(); let mut crate_paths = vec![]; // Attach all orphan items to the type's definition if the type @@ -78,42 +78,16 @@ pub(crate) fn build_index<'tcx>( // First, on function signatures let mut search_index = std::mem::replace(&mut cache.search_index, Vec::new()); for item in search_index.iter_mut() { - fn convert_render_type( + fn insert_into_map( ty: &mut RenderType, - cache: &mut Cache, - itemid_to_pathid: &mut FxHashMap, + map: &mut FxHashMap, + itemid: F, lastpathid: &mut usize, crate_paths: &mut Vec<(ItemType, Symbol)>, + item_type: ItemType, + path: Symbol, ) { - if let Some(generics) = &mut ty.generics { - for item in generics { - convert_render_type(item, cache, itemid_to_pathid, lastpathid, crate_paths); - } - } - let Cache { ref paths, ref external_paths, .. } = *cache; - let Some(id) = ty.id.clone() else { - assert!(ty.generics.is_some()); - return; - }; - let (itemid, path, item_type) = match id { - RenderTypeId::DefId(defid) => { - if let Some(&(ref fqp, item_type)) = - paths.get(&defid).or_else(|| external_paths.get(&defid)) - { - (ItemId::DefId(defid), *fqp.last().unwrap(), item_type) - } else { - ty.id = None; - return; - } - } - RenderTypeId::Primitive(primitive) => ( - ItemId::Primitive(primitive, LOCAL_CRATE), - primitive.as_sym(), - ItemType::Primitive, - ), - RenderTypeId::Index(_) => return, - }; - match itemid_to_pathid.entry(itemid) { + match map.entry(itemid) { Entry::Occupied(entry) => ty.id = Some(RenderTypeId::Index(*entry.get())), Entry::Vacant(entry) => { let pathid = *lastpathid; @@ -124,12 +98,72 @@ pub(crate) fn build_index<'tcx>( } } } + + fn convert_render_type( + ty: &mut RenderType, + cache: &mut Cache, + itemid_to_pathid: &mut FxHashMap, + primitives: &mut FxHashMap, + lastpathid: &mut usize, + crate_paths: &mut Vec<(ItemType, Symbol)>, + ) { + if let Some(generics) = &mut ty.generics { + for item in generics { + convert_render_type( + item, + cache, + itemid_to_pathid, + primitives, + lastpathid, + crate_paths, + ); + } + } + let Cache { ref paths, ref external_paths, .. } = *cache; + let Some(id) = ty.id.clone() else { + assert!(ty.generics.is_some()); + return; + }; + match id { + RenderTypeId::DefId(defid) => { + if let Some(&(ref fqp, item_type)) = + paths.get(&defid).or_else(|| external_paths.get(&defid)) + { + insert_into_map( + ty, + itemid_to_pathid, + ItemId::DefId(defid), + lastpathid, + crate_paths, + item_type, + *fqp.last().unwrap(), + ); + } else { + ty.id = None; + } + } + RenderTypeId::Primitive(primitive) => { + let sym = primitive.as_sym(); + insert_into_map( + ty, + primitives, + sym, + lastpathid, + crate_paths, + ItemType::Primitive, + sym, + ); + } + RenderTypeId::Index(_) => {} + } + } if let Some(search_type) = &mut item.search_type { for item in &mut search_type.inputs { convert_render_type( item, cache, &mut itemid_to_pathid, + &mut primitives, &mut lastpathid, &mut crate_paths, ); @@ -139,6 +173,7 @@ pub(crate) fn build_index<'tcx>( item, cache, &mut itemid_to_pathid, + &mut primitives, &mut lastpathid, &mut crate_paths, ); diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 56283b2c0eff..bd95ec18650b 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -252,7 +252,6 @@ pub(crate) fn from_item_id_with_name(item_id: ItemId, tcx: TyCtxt<'_>, name: Opt ItemId::Auto { for_, trait_ } => { Id(format!("a:{}-{}", DisplayDefId(trait_, tcx, None), DisplayDefId(for_, tcx, name))) } - ItemId::Primitive(_, _) => unreachable!(), } } From 7c2d48bcc2ee4e357d16ddad6f9c8866cbb6dc0b Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 11 Jan 2023 00:32:52 +0000 Subject: [PATCH 395/478] Add compiler-errors to some trait system notification groups --- triagebot.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/triagebot.toml b/triagebot.toml index 58108dac496b..fd5250ec7e76 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -344,14 +344,14 @@ cc = ["@BoxyUwU"] [mentions."compiler/rustc_trait_selection/src/solve/"] message = "Some changes occurred to the core trait solver" -cc = ["@lcnr"] +cc = ["@lcnr", "@compiler-errors"] [mentions."compiler/rustc_trait_selection/src/traits/engine.rs"] message = """ Some changes occurred in engine.rs, potentially modifying the public API \ of `ObligationCtxt`. """ -cc = ["@lcnr"] +cc = ["@lcnr", "@compiler-errors"] [mentions."compiler/rustc_error_codes/src/error_codes.rs"] message = "Some changes occurred in diagnostic error codes" From aca2f88d1e0905329971ee7dfd1d596490d0ca0b Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Tue, 10 Jan 2023 22:34:09 -0800 Subject: [PATCH 396/478] Disable "split dwarf inlining" by default. This matches clang's behavior and makes split-debuginfo behave as expected (i.e. actually split the debug info). Fixes #106592 --- compiler/rustc_session/src/options.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 043a60a1c531..c9da7b046220 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1570,7 +1570,7 @@ options! { /// o/w tests have closure@path span_free_formats: bool = (false, parse_bool, [UNTRACKED], "exclude spans when debug-printing compiler state (default: no)"), - split_dwarf_inlining: bool = (true, parse_bool, [TRACKED], + split_dwarf_inlining: bool = (false, parse_bool, [TRACKED], "provide minimal debug info in the object/executable to facilitate online \ symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF"), split_dwarf_kind: SplitDwarfKind = (SplitDwarfKind::Split, parse_split_dwarf_kind, [TRACKED], From bd5a0f956e342c263f43ffe293626ff954443232 Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Wed, 11 Jan 2023 08:38:16 +0000 Subject: [PATCH 397/478] Use CI LLVM in `test-various` builder It was disabled because it needs lld, but since 104748 was merged it is no longer needed. --- src/ci/docker/host-x86_64/test-various/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/ci/docker/host-x86_64/test-various/Dockerfile b/src/ci/docker/host-x86_64/test-various/Dockerfile index cf4451f8b33b..a59423ea380f 100644 --- a/src/ci/docker/host-x86_64/test-various/Dockerfile +++ b/src/ci/docker/host-x86_64/test-various/Dockerfile @@ -41,10 +41,6 @@ WORKDIR / COPY scripts/sccache.sh /scripts/ RUN sh /scripts/sccache.sh -# We are disabling CI LLVM since this builder needs to build LLD, which is -# currently unsupported when downloading pre-built LLVM. -ENV NO_DOWNLOAD_CI_LLVM 1 - ENV RUST_CONFIGURE_ARGS \ --musl-root-x86_64=/usr/local/x86_64-linux-musl \ --set build.nodejs=/node-v15.14.0-linux-x64/bin/node \ From cf2dff2b1e3fa55fa5415d524200070d0d7aacfe Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Thu, 5 Jan 2023 09:13:28 +0100 Subject: [PATCH 398/478] Move /src/test to /tests --- {src/test => tests}/COMPILER_TESTS.md | 0 .../assembly/aarch64-naked-fn-no-bti-prolog.rs | 0 .../test => tests}/assembly/aarch64-pointer-auth.rs | 0 {src/test => tests}/assembly/align_offset.rs | 0 {src/test => tests}/assembly/asm/aarch64-el2vmsa.rs | 0 .../assembly/asm/aarch64-modifiers.rs | 0 .../assembly/asm/aarch64-outline-atomics.rs | 0 {src/test => tests}/assembly/asm/aarch64-types.rs | 0 {src/test => tests}/assembly/asm/arm-modifiers.rs | 0 {src/test => tests}/assembly/asm/arm-types.rs | 0 {src/test => tests}/assembly/asm/avr-modifiers.rs | 0 {src/test => tests}/assembly/asm/avr-types.rs | 0 {src/test => tests}/assembly/asm/bpf-types.rs | 0 {src/test => tests}/assembly/asm/global_asm.rs | 0 {src/test => tests}/assembly/asm/hexagon-types.rs | 0 {src/test => tests}/assembly/asm/mips-types.rs | 0 {src/test => tests}/assembly/asm/msp430-types.rs | 0 {src/test => tests}/assembly/asm/nvptx-types.rs | 0 {src/test => tests}/assembly/asm/powerpc-types.rs | 0 {src/test => tests}/assembly/asm/riscv-types.rs | 0 {src/test => tests}/assembly/asm/s390x-types.rs | 0 {src/test => tests}/assembly/asm/wasm-types.rs | 0 {src/test => tests}/assembly/asm/x86-modifiers.rs | 0 {src/test => tests}/assembly/asm/x86-types.rs | 0 .../assembly/auxiliary/breakpoint-panic-handler.rs | 0 .../assembly/auxiliary/non-inline-dependency.rs | 0 {src/test => tests}/assembly/dwarf5.rs | 0 {src/test => tests}/assembly/is_aligned.rs | 0 {src/test => tests}/assembly/niche-prefer-zero.rs | 0 {src/test => tests}/assembly/nvptx-arch-default.rs | 0 {src/test => tests}/assembly/nvptx-arch-emit-asm.rs | 0 {src/test => tests}/assembly/nvptx-arch-link-arg.rs | 0 .../assembly/nvptx-arch-target-cpu.rs | 0 {src/test => tests}/assembly/nvptx-atomics.rs | 0 {src/test => tests}/assembly/nvptx-internalizing.rs | 0 .../nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs | 0 .../test => tests}/assembly/nvptx-linking-binary.rs | 0 .../test => tests}/assembly/nvptx-linking-cdylib.rs | 0 {src/test => tests}/assembly/nvptx-safe-naming.rs | 0 .../assembly/panic-no-unwind-no-uwtable.rs | 0 .../assembly/panic-unwind-no-uwtable.rs | 0 .../test => tests}/assembly/pic-relocation-model.rs | 0 .../test => tests}/assembly/pie-relocation-model.rs | 0 {src/test => tests}/assembly/sparc-struct-abi.rs | 0 .../stack-protector-heuristics-effect.rs | 0 .../stack-protector-target-support.rs | 0 .../assembly/static-relocation-model.rs | 0 {src/test => tests}/assembly/strict_provenance.rs | 0 .../assembly/target-feature-multiple.rs | 0 {src/test => tests}/assembly/x86-stack-probes.rs | 0 .../assembly/x86_64-floating-point-clamp.rs | 0 .../x86_64-fortanix-unknown-sgx-lvi-generic-load.rs | 0 .../x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs | 0 ...6_64-fortanix-unknown-sgx-lvi-inline-assembly.rs | 0 .../assembly/x86_64-naked-fn-no-cet-prolog.rs | 0 .../assembly/x86_64-no-jump-tables.rs | 0 {src/test => tests}/assembly/x86_64-sse_crc.rs | 0 {src/test => tests}/auxiliary/rust_test_helpers.c | 0 .../codegen-units/item-collection/asm-sym.rs | 0 .../auxiliary/cgu_export_trait_method.rs | 0 .../auxiliary/cgu_extern_closures.rs | 0 .../auxiliary/cgu_generic_function.rs | 0 .../item-collection/cross-crate-closures.rs | 0 .../cross-crate-generic-functions.rs | 0 .../item-collection/cross-crate-trait-method.rs | 0 .../item-collection/drop_in_place_intrinsic.rs | 0 .../item-collection/function-as-argument.rs | 0 .../item-collection/generic-drop-glue.rs | 0 .../item-collection/generic-functions.rs | 0 .../codegen-units/item-collection/generic-impl.rs | 0 .../impl-in-non-instantiated-generic.rs | 0 .../item-collection/implicit-panic-call.rs | 0 .../item-collection/instantiation-through-vtable.rs | 0 .../item-collection/items-within-generic-items.rs | 0 .../item-collection/non-generic-closures.rs | 0 .../item-collection/non-generic-drop-glue.rs | 0 .../item-collection/non-generic-functions.rs | 0 .../item-collection/overloaded-operators.rs | 0 .../codegen-units/item-collection/static-init.rs | 0 .../item-collection/statics-and-consts.rs | 0 .../item-collection/trait-implementations.rs | 0 .../item-collection/trait-method-as-argument.rs | 0 .../item-collection/trait-method-default-impl.rs | 0 .../item-collection/transitive-drop-glue.rs | 0 .../item-collection/tuple-drop-glue.rs | 0 .../item-collection/unreferenced-const-fn.rs | 0 .../item-collection/unreferenced-inline-function.rs | 0 .../codegen-units/item-collection/unsizing.rs | 0 .../item-collection/unused-traits-and-generics.rs | 0 .../partitioning/auxiliary/cgu_explicit_inlining.rs | 0 .../partitioning/auxiliary/cgu_extern_drop_glue.rs | 0 .../partitioning/auxiliary/cgu_generic_function.rs | 0 .../partitioning/auxiliary/shared_generics_aux.rs | 0 .../codegen-units/partitioning/extern-drop-glue.rs | 0 .../codegen-units/partitioning/extern-generic.rs | 0 .../partitioning/incremental-merging.rs | 0 .../partitioning/inlining-from-extern-crate.rs | 0 .../codegen-units/partitioning/local-drop-glue.rs | 0 .../codegen-units/partitioning/local-generic.rs | 0 .../partitioning/local-inlining-but-not-all.rs | 0 .../codegen-units/partitioning/local-inlining.rs | 0 .../partitioning/local-transitive-inlining.rs | 0 .../partitioning/methods-are-with-self-type.rs | 0 .../codegen-units/partitioning/regular-modules.rs | 0 .../codegen-units/partitioning/shared-generics.rs | 0 .../codegen-units/partitioning/statics.rs | 0 .../partitioning/vtable-through-const.rs | 0 .../polymorphization/unused_type_parameters.rs | 0 {src/test => tests}/codegen/README.md | 0 {src/test => tests}/codegen/abi-efiapi.rs | 0 .../codegen/abi-main-signature-16bit-c-int.rs | 0 .../codegen/abi-main-signature-32bit-c-int.rs | 0 {src/test => tests}/codegen/abi-repr-ext.rs | 0 {src/test => tests}/codegen/abi-sysv64.rs | 0 {src/test => tests}/codegen/abi-x86-interrupt.rs | 0 {src/test => tests}/codegen/abi-x86_64_sysv.rs | 0 {src/test => tests}/codegen/adjustments.rs | 0 {src/test => tests}/codegen/align-enum.rs | 0 {src/test => tests}/codegen/align-fn.rs | 0 {src/test => tests}/codegen/align-struct.rs | 0 {src/test => tests}/codegen/alloc-optimisation.rs | 0 {src/test => tests}/codegen/array-clone.rs | 0 {src/test => tests}/codegen/array-equality.rs | 0 {src/test => tests}/codegen/asm-clobber_abi.rs | 0 {src/test => tests}/codegen/asm-clobbers.rs | 0 {src/test => tests}/codegen/asm-may_unwind.rs | 0 {src/test => tests}/codegen/asm-multiple-options.rs | 0 {src/test => tests}/codegen/asm-options.rs | 0 {src/test => tests}/codegen/asm-powerpc-clobbers.rs | 0 {src/test => tests}/codegen/asm-sanitize-llvm.rs | 0 {src/test => tests}/codegen/asm-target-clobbers.rs | 0 .../codegen/async-fn-debug-awaitee-field.rs | 0 {src/test => tests}/codegen/async-fn-debug-msvc.rs | 0 {src/test => tests}/codegen/async-fn-debug.rs | 0 {src/test => tests}/codegen/atomic-operations.rs | 0 {src/test => tests}/codegen/autovectorize-f32x4.rs | 0 .../test => tests}/codegen/auxiliary/extern_decl.rs | 0 {src/test => tests}/codegen/auxiliary/nounwind.rs | 0 .../codegen/auxiliary/static_dllimport_aux.rs | 0 .../codegen/auxiliary/thread_local_aux.rs | 0 .../codegen/avr/avr-func-addrspace.rs | 0 .../codegen/binary-search-index-no-bound-check.rs | 0 {src/test => tests}/codegen/bool-cmp.rs | 0 .../codegen/box-maybe-uninit-llvm14.rs | 0 {src/test => tests}/codegen/box-maybe-uninit.rs | 0 {src/test => tests}/codegen/bpf-alu32.rs | 0 {src/test => tests}/codegen/branch-protection.rs | 0 {src/test => tests}/codegen/c-variadic-copy.rs | 0 {src/test => tests}/codegen/c-variadic-opt.rs | 0 {src/test => tests}/codegen/c-variadic.rs | 0 {src/test => tests}/codegen/call-llvm-intrinsics.rs | 0 {src/test => tests}/codegen/call-metadata.rs | 0 {src/test => tests}/codegen/catch-unwind.rs | 0 .../codegen/cdylib-external-inline-fns.rs | 0 {src/test => tests}/codegen/cf-protection.rs | 0 {src/test => tests}/codegen/cfguard-checks.rs | 0 {src/test => tests}/codegen/cfguard-disabled.rs | 0 {src/test => tests}/codegen/cfguard-nochecks.rs | 0 {src/test => tests}/codegen/cfguard-non-msvc.rs | 0 {src/test => tests}/codegen/codemodels.rs | 0 {src/test => tests}/codegen/coercions.rs | 0 .../codegen/cold-call-declare-and-call.rs | 0 .../codegen/comparison-operators-newtype.rs | 0 {src/test => tests}/codegen/consts.rs | 0 {src/test => tests}/codegen/dealloc-no-unwind.rs | 0 {src/test => tests}/codegen/debug-alignment.rs | 0 {src/test => tests}/codegen/debug-column-msvc.rs | 0 {src/test => tests}/codegen/debug-column.rs | 0 .../codegen/debug-compile-unit-path.rs | 0 {src/test => tests}/codegen/debug-linkage-name.rs | 0 {src/test => tests}/codegen/debug-vtable.rs | 0 .../codegen/debuginfo-generic-closure-env-names.rs | 0 {src/test => tests}/codegen/deduced-param-attrs.rs | 0 .../codegen/default-requires-uwtable.rs | 0 .../codegen/dllimports/auxiliary/dummy.rs | 0 .../codegen/dllimports/auxiliary/wrapper.rs | 0 {src/test => tests}/codegen/dllimports/main.rs | 0 {src/test => tests}/codegen/drop.rs | 0 .../codegen/dst-vtable-align-nonzero.rs | 0 .../test => tests}/codegen/dst-vtable-size-range.rs | 0 .../codegen/enum-bounds-check-derived-idx.rs | 0 .../codegen/enum-bounds-check-issue-13926.rs | 0 .../codegen/enum-bounds-check-issue-82871.rs | 0 {src/test => tests}/codegen/enum-bounds-check.rs | 0 {src/test => tests}/codegen/enum-debug-clike.rs | 0 {src/test => tests}/codegen/enum-debug-niche-2.rs | 0 {src/test => tests}/codegen/enum-debug-niche.rs | 0 {src/test => tests}/codegen/enum-debug-tagged.rs | 0 .../codegen/enum-discriminant-value.rs | 0 {src/test => tests}/codegen/enum-match.rs | 0 {src/test => tests}/codegen/export-no-mangle.rs | 0 .../codegen/external-no-mangle-fns.rs | 0 .../codegen/external-no-mangle-statics.rs | 0 {src/test => tests}/codegen/fastcall-inreg.rs | 0 {src/test => tests}/codegen/fatptr.rs | 0 {src/test => tests}/codegen/fewer-names.rs | 0 {src/test => tests}/codegen/ffi-const.rs | 0 .../codegen/ffi-out-of-bounds-loads.rs | 0 {src/test => tests}/codegen/ffi-pure.rs | 0 {src/test => tests}/codegen/ffi-returns-twice.rs | 0 {src/test => tests}/codegen/float_math.rs | 0 {src/test => tests}/codegen/fn-impl-trait-self.rs | 0 {src/test => tests}/codegen/foo.s | 0 {src/test => tests}/codegen/force-frame-pointers.rs | 0 .../codegen/force-no-unwind-tables.rs | 0 {src/test => tests}/codegen/force-unwind-tables.rs | 0 {src/test => tests}/codegen/frame-pointer.rs | 0 .../codegen/function-arguments-noopt.rs | 0 {src/test => tests}/codegen/function-arguments.rs | 0 .../test => tests}/codegen/gdb_debug_script_load.rs | 0 {src/test => tests}/codegen/generator-debug-msvc.rs | 0 {src/test => tests}/codegen/generator-debug.rs | 0 {src/test => tests}/codegen/generic-debug.rs | 0 {src/test => tests}/codegen/global_asm.rs | 0 {src/test => tests}/codegen/global_asm_include.rs | 0 {src/test => tests}/codegen/global_asm_x2.rs | 0 .../codegen/i686-macosx-deployment-target.rs | 0 .../codegen/i686-no-macosx-deployment-target.rs | 0 .../codegen/inline-always-works-always.rs | 0 {src/test => tests}/codegen/inline-debuginfo.rs | 0 {src/test => tests}/codegen/inline-hint.rs | 0 {src/test => tests}/codegen/instrument-coverage.rs | 0 {src/test => tests}/codegen/instrument-mcount.rs | 0 {src/test => tests}/codegen/integer-cmp.rs | 0 {src/test => tests}/codegen/integer-overflow.rs | 0 {src/test => tests}/codegen/internalize-closures.rs | 0 .../codegen/intrinsic-no-unnamed-attr.rs | 0 .../codegen/intrinsics/const_eval_select.rs | 0 {src/test => tests}/codegen/intrinsics/exact_div.rs | 0 {src/test => tests}/codegen/intrinsics/likely.rs | 0 {src/test => tests}/codegen/intrinsics/mask.rs | 0 {src/test => tests}/codegen/intrinsics/nearby.rs | 0 .../codegen/intrinsics/nontemporal.rs | 0 .../codegen/intrinsics/offset_from.rs | 0 {src/test => tests}/codegen/intrinsics/prefetch.rs | 0 .../codegen/intrinsics/unchecked_math.rs | 0 {src/test => tests}/codegen/intrinsics/volatile.rs | 0 .../codegen/intrinsics/volatile_order.rs | 0 .../codegen/issue-103285-ptr-addr-overflow-check.rs | 0 {src/test => tests}/codegen/issue-103840.rs | 0 .../codegen/issue-105386-ub-in-debuginfo.rs | 0 {src/test => tests}/codegen/issue-13018.rs | 0 {src/test => tests}/codegen/issue-15953.rs | 0 {src/test => tests}/codegen/issue-27130.rs | 0 {src/test => tests}/codegen/issue-32031.rs | 0 {src/test => tests}/codegen/issue-32364.rs | 0 {src/test => tests}/codegen/issue-34634.rs | 0 {src/test => tests}/codegen/issue-34947-pow-i32.rs | 0 {src/test => tests}/codegen/issue-37945.rs | 0 .../codegen/issue-44056-macos-tls-align.rs | 0 {src/test => tests}/codegen/issue-45222.rs | 0 {src/test => tests}/codegen/issue-45466.rs | 0 .../codegen/issue-45964-bounds-check-slice-pos.rs | 0 {src/test => tests}/codegen/issue-47278.rs | 0 {src/test => tests}/codegen/issue-47442.rs | 0 {src/test => tests}/codegen/issue-56267-2.rs | 0 {src/test => tests}/codegen/issue-56267.rs | 0 {src/test => tests}/codegen/issue-56927.rs | 0 {src/test => tests}/codegen/issue-58881.rs | 0 {src/test => tests}/codegen/issue-59352.rs | 0 .../codegen/issue-69101-bounds-check.rs | 0 {src/test => tests}/codegen/issue-73031.rs | 0 .../codegen/issue-73338-effecient-cmp.rs | 0 .../issue-73396-bounds-check-after-position.rs | 0 .../issue-73827-bounds-check-index-in-subexpr.rs | 0 .../codegen/issue-75525-bounds-checks.rs | 0 {src/test => tests}/codegen/issue-75546.rs | 0 {src/test => tests}/codegen/issue-75659.rs | 0 {src/test => tests}/codegen/issue-77812.rs | 0 .../issue-81408-dllimport-thinlto-windows.rs | 0 {src/test => tests}/codegen/issue-84268.rs | 0 .../codegen/issue-85872-multiple-reverse.rs | 0 {src/test => tests}/codegen/issue-86106.rs | 0 {src/test => tests}/codegen/issue-96274.rs | 0 .../codegen/issue-96497-slice-size-nowrap.rs | 0 .../codegen/issue-98156-const-arg-temp-lifetime.rs | 0 .../issue-98294-get-mut-copy-from-slice-opt.rs | 0 .../codegen/iter-repeat-n-trivial-drop.rs | 0 {src/test => tests}/codegen/layout-size-checks.rs | 0 {src/test => tests}/codegen/lifetime_start_end.rs | 0 {src/test => tests}/codegen/link-dead-code.rs | 0 {src/test => tests}/codegen/link_section.rs | 0 {src/test => tests}/codegen/loads.rs | 0 .../codegen/local-generics-in-exe-internalized.rs | 0 {src/test => tests}/codegen/lto-removes-invokes.rs | 0 {src/test => tests}/codegen/mainsubprogram.rs | 0 {src/test => tests}/codegen/mainsubprogramstart.rs | 0 {src/test => tests}/codegen/match-optimized.rs | 0 {src/test => tests}/codegen/match-optimizes-away.rs | 0 {src/test => tests}/codegen/match-unoptimized.rs | 0 .../codegen/mem-replace-direct-memcpy.rs | 0 {src/test => tests}/codegen/merge-functions.rs | 0 .../codegen/mir-inlined-line-numbers.rs | 0 {src/test => tests}/codegen/mir_zst_stores.rs | 0 {src/test => tests}/codegen/naked-functions.rs | 0 {src/test => tests}/codegen/naked-nocoverage.rs | 0 {src/test => tests}/codegen/naked-noinline.rs | 0 {src/test => tests}/codegen/no-assumes-on-casts.rs | 0 .../codegen/no-dllimport-w-cross-lang-lto.rs | 0 {src/test => tests}/codegen/no-jump-tables.rs | 0 {src/test => tests}/codegen/no-plt.rs | 0 {src/test => tests}/codegen/noalias-box-off.rs | 0 {src/test => tests}/codegen/noalias-box.rs | 0 {src/test => tests}/codegen/noalias-flag.rs | 0 {src/test => tests}/codegen/noalias-refcell.rs | 0 .../codegen/noalias-rwlockreadguard.rs | 0 {src/test => tests}/codegen/noalias-unpin.rs | 0 .../codegen/non-terminate/infinite-loop-1.rs | 0 .../codegen/non-terminate/infinite-loop-2.rs | 0 .../codegen/non-terminate/infinite-recursion.rs | 0 .../codegen/non-terminate/nonempty-infinite-loop.rs | 0 {src/test => tests}/codegen/noreturn-uninhabited.rs | 0 {src/test => tests}/codegen/noreturnflag.rs | 0 {src/test => tests}/codegen/nounwind.rs | 0 {src/test => tests}/codegen/nrvo.rs | 0 {src/test => tests}/codegen/optimize-attr-1.rs | 0 {src/test => tests}/codegen/option-nonzero-eq.rs | 0 {src/test => tests}/codegen/packed.rs | 0 {src/test => tests}/codegen/panic-abort-windows.rs | 0 {src/test => tests}/codegen/panic-in-drop-abort.rs | 0 .../codegen/panic-unwind-default-uwtable.rs | 0 .../test => tests}/codegen/personality_lifetimes.rs | 0 {src/test => tests}/codegen/pgo-counter-bias.rs | 0 {src/test => tests}/codegen/pgo-instrumentation.rs | 0 {src/test => tests}/codegen/pic-relocation-model.rs | 0 {src/test => tests}/codegen/pie-relocation-model.rs | 0 {src/test => tests}/codegen/refs.rs | 0 .../codegen/remap_path_prefix/aux_mod.rs | 0 .../auxiliary/remap_path_prefix_aux.rs | 0 .../remap_path_prefix/auxiliary/xcrate-generic.rs | 0 .../remap_path_prefix/issue-73167-remap-std.rs | 0 .../codegen/remap_path_prefix/main.rs | 0 .../codegen/remap_path_prefix/xcrate-generic.rs | 0 {src/test => tests}/codegen/repeat-trusted-len.rs | 0 .../codegen/repr-transparent-aggregates-1.rs | 0 .../codegen/repr-transparent-aggregates-2.rs | 0 .../codegen/repr-transparent-aggregates-3.rs | 0 .../codegen/repr-transparent-sysv64.rs | 0 {src/test => tests}/codegen/repr-transparent.rs | 0 .../codegen/riscv-abi/call-llvm-intrinsics.rs | 0 .../riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs | 0 .../codegen/riscv-abi/riscv64-lp64d-abi.rs | 0 .../codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs | 0 .../sanitizer-cfi-add-canonical-jump-tables-flag.rs | 0 .../codegen/sanitizer-cfi-emit-type-checks.rs | 0 ...zer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs | 0 ...itizer-cfi-emit-type-metadata-itanium-cxx-abi.rs | 0 .../codegen/sanitizer-kcfi-add-kcfi-flag.rs | 0 ...kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs | 0 .../codegen/sanitizer-memory-track-orgins.rs | 0 .../codegen/sanitizer-no-sanitize-inlining.rs | 0 .../test => tests}/codegen/sanitizer-no-sanitize.rs | 0 {src/test => tests}/codegen/sanitizer-recover.rs | 0 .../codegen/sanitizer_memtag_attr_check.rs | 0 .../codegen/sanitizer_scs_attr_check.rs | 0 {src/test => tests}/codegen/scalar-pair-bool.rs | 0 .../codegen/set-discriminant-invalid.rs | 0 .../simd-intrinsic/simd-intrinsic-float-abs.rs | 0 .../simd-intrinsic/simd-intrinsic-float-ceil.rs | 0 .../simd-intrinsic/simd-intrinsic-float-cos.rs | 0 .../simd-intrinsic/simd-intrinsic-float-exp.rs | 0 .../simd-intrinsic/simd-intrinsic-float-exp2.rs | 0 .../simd-intrinsic/simd-intrinsic-float-floor.rs | 0 .../simd-intrinsic/simd-intrinsic-float-fma.rs | 0 .../simd-intrinsic/simd-intrinsic-float-fsqrt.rs | 0 .../simd-intrinsic/simd-intrinsic-float-log.rs | 0 .../simd-intrinsic/simd-intrinsic-float-log10.rs | 0 .../simd-intrinsic/simd-intrinsic-float-log2.rs | 0 .../simd-intrinsic/simd-intrinsic-float-minmax.rs | 0 .../simd-intrinsic/simd-intrinsic-float-pow.rs | 0 .../simd-intrinsic/simd-intrinsic-float-powi.rs | 0 .../simd-intrinsic/simd-intrinsic-float-sin.rs | 0 .../simd-intrinsic-generic-arithmetic-saturating.rs | 0 .../simd-intrinsic-generic-bitmask.rs | 0 .../simd-intrinsic-generic-extract-insert.rs | 0 .../simd-intrinsic/simd-intrinsic-generic-gather.rs | 0 .../simd-intrinsic-generic-scatter.rs | 0 .../simd-intrinsic/simd-intrinsic-generic-select.rs | 0 .../simd-intrinsic-transmute-array.rs | 0 {src/test => tests}/codegen/simd-wide-sum.rs | 0 {src/test => tests}/codegen/simd_arith_offset.rs | 0 {src/test => tests}/codegen/slice-as_chunks.rs | 0 {src/test => tests}/codegen/slice-init.rs | 0 .../codegen/slice-iter-len-eq-zero.rs | 0 .../codegen/slice-position-bounds-check.rs | 0 {src/test => tests}/codegen/slice-ref-equality.rs | 0 {src/test => tests}/codegen/slice-reverse.rs | 0 .../codegen/slice-windows-no-bounds-check.rs | 0 .../codegen/slice_as_from_ptr_range.rs | 0 .../some-abis-do-extend-params-to-32-bits.rs | 0 {src/test => tests}/codegen/some-global-nonnull.rs | 0 {src/test => tests}/codegen/sparc-struct-abi.rs | 0 .../src-hash-algorithm/src-hash-algorithm-md5.rs | 0 .../src-hash-algorithm/src-hash-algorithm-sha1.rs | 0 .../src-hash-algorithm/src-hash-algorithm-sha256.rs | 0 {src/test => tests}/codegen/sse42-implies-crc32.rs | 0 {src/test => tests}/codegen/stack-probes-call.rs | 0 {src/test => tests}/codegen/stack-probes-inline.rs | 0 {src/test => tests}/codegen/stack-protector.rs | 0 .../codegen/static-relocation-model-msvc.rs | 0 .../codegen/staticlib-external-inline-fns.rs | 0 {src/test => tests}/codegen/stores.rs | 0 {src/test => tests}/codegen/swap-large-types.rs | 0 {src/test => tests}/codegen/swap-simd-types.rs | 0 {src/test => tests}/codegen/swap-small-types.rs | 0 .../codegen/target-cpu-on-functions.rs | 0 .../codegen/target-feature-overrides.rs | 0 {src/test => tests}/codegen/thread-local.rs | 0 {src/test => tests}/codegen/to_vec.rs | 0 {src/test => tests}/codegen/transmute-scalar.rs | 0 {src/test => tests}/codegen/try_identity.rs | 0 .../test => tests}/codegen/try_question_mark_nop.rs | 0 .../test => tests}/codegen/tune-cpu-on-functions.rs | 0 {src/test => tests}/codegen/tuple-layout-opt.rs | 0 .../test => tests}/codegen/unchecked-float-casts.rs | 0 {src/test => tests}/codegen/unchecked_shifts.rs | 0 {src/test => tests}/codegen/uninit-consts.rs | 0 {src/test => tests}/codegen/union-abi.rs | 0 {src/test => tests}/codegen/unpadded-simd.rs | 0 .../codegen/unwind-abis/aapcs-unwind-abi.rs | 0 .../codegen/unwind-abis/c-unwind-abi-panic-abort.rs | 0 .../codegen/unwind-abis/c-unwind-abi.rs | 0 .../codegen/unwind-abis/cdecl-unwind-abi.rs | 0 .../codegen/unwind-abis/fastcall-unwind-abi.rs | 0 .../unwind-abis/nounwind-on-stable-panic-abort.rs | 0 .../unwind-abis/nounwind-on-stable-panic-unwind.rs | 0 {src/test => tests}/codegen/unwind-abis/nounwind.rs | 0 .../codegen/unwind-abis/stdcall-unwind-abi.rs | 0 .../codegen/unwind-abis/system-unwind-abi.rs | 0 .../codegen/unwind-abis/sysv64-unwind-abi.rs | 0 .../codegen/unwind-abis/thiscall-unwind-abi.rs | 0 .../codegen/unwind-abis/vectorcall-unwind-abi.rs | 0 .../codegen/unwind-abis/win64-unwind-abi.rs | 0 .../codegen/unwind-and-panic-abort.rs | 0 .../test => tests}/codegen/unwind-extern-exports.rs | 0 .../test => tests}/codegen/unwind-extern-imports.rs | 0 {src/test => tests}/codegen/used_with_arg.rs | 0 {src/test => tests}/codegen/var-names.rs | 0 {src/test => tests}/codegen/vec-calloc-llvm14.rs | 0 {src/test => tests}/codegen/vec-calloc.rs | 0 {src/test => tests}/codegen/vec-in-place.rs | 0 {src/test => tests}/codegen/vec-iter-collect-len.rs | 0 {src/test => tests}/codegen/vec-optimizes-away.rs | 0 {src/test => tests}/codegen/vec-shrink-panik.rs | 0 {src/test => tests}/codegen/vecdeque_no_panic.rs | 0 .../codegen/virtual-function-elimination-32bit.rs | 0 .../codegen/virtual-function-elimination.rs | 0 {src/test => tests}/codegen/wasm_casts_trapping.rs | 0 .../codegen/x86_64-macosx-deployment-target.rs | 0 .../codegen/x86_64-no-macosx-deployment-target.rs | 0 {src/test => tests}/codegen/zip.rs | 0 {src/test => tests}/codegen/zst-offset.rs | 0 {src/test => tests}/debuginfo/associated-types.rs | 0 .../cross_crate_debuginfo_type_uniquing.rs | 0 .../debuginfo/auxiliary/cross_crate_spans.rs | 0 .../dependency-with-embedded-visualizers.natvis | 0 .../dependency-with-embedded-visualizers.py | 0 .../dependency-with-embedded-visualizers.rs | 0 .../debuginfo/auxiliary/issue-13213-aux.rs | 0 .../debuginfo/auxiliary/macro-stepping.rs | 0 .../debuginfo/basic-types-globals-metadata.rs | 0 .../test => tests}/debuginfo/basic-types-globals.rs | 0 .../debuginfo/basic-types-metadata.rs | 0 .../debuginfo/basic-types-mut-globals.rs | 0 {src/test => tests}/debuginfo/basic-types.rs | 0 {src/test => tests}/debuginfo/borrowed-basic.rs | 0 .../debuginfo/borrowed-c-style-enum.rs | 0 {src/test => tests}/debuginfo/borrowed-enum.rs | 0 {src/test => tests}/debuginfo/borrowed-struct.rs | 0 {src/test => tests}/debuginfo/borrowed-tuple.rs | 0 .../debuginfo/borrowed-unique-basic.rs | 0 {src/test => tests}/debuginfo/box.rs | 0 {src/test => tests}/debuginfo/boxed-struct.rs | 0 .../debuginfo/by-value-non-immediate-argument.rs | 0 .../by-value-self-argument-in-trait-impl.rs | 0 .../debuginfo/c-style-enum-in-composite.rs | 0 {src/test => tests}/debuginfo/c-style-enum.rs | 0 {src/test => tests}/debuginfo/captured-fields-1.rs | 0 {src/test => tests}/debuginfo/captured-fields-2.rs | 0 .../debuginfo/closure-in-generic-function.rs | 0 .../debuginfo/collapse-debuginfo-no-attr-flag.rs | 0 .../debuginfo/collapse-debuginfo-no-attr.rs | 0 .../debuginfo/collapse-debuginfo-with-attr-flag.rs | 0 .../debuginfo/collapse-debuginfo-with-attr.rs | 0 .../test => tests}/debuginfo/constant-debug-locs.rs | 0 .../debuginfo/constant-in-match-pattern.rs | 0 {src/test => tests}/debuginfo/cross-crate-spans.rs | 0 .../debuginfo/cross-crate-type-uniquing.rs | 0 .../debuginfo/destructured-fn-argument.rs | 0 .../debuginfo/destructured-for-loop-variable.rs | 0 {src/test => tests}/debuginfo/destructured-local.rs | 0 {src/test => tests}/debuginfo/drop-locations.rs | 0 {src/test => tests}/debuginfo/duration-type.rs | 0 .../debuginfo/embedded-visualizer-point.natvis | 0 .../debuginfo/embedded-visualizer-point.py | 0 .../debuginfo/embedded-visualizer.natvis | 0 .../test => tests}/debuginfo/embedded-visualizer.py | 0 .../test => tests}/debuginfo/embedded-visualizer.rs | 0 {src/test => tests}/debuginfo/empty-string.rs | 0 {src/test => tests}/debuginfo/enum-thinlto.rs | 0 {src/test => tests}/debuginfo/evec-in-struct.rs | 0 {src/test => tests}/debuginfo/extern-c-fn.rs | 0 {src/test => tests}/debuginfo/fixed-sized-array.rs | 0 .../debuginfo/function-arg-initialization.rs | 0 {src/test => tests}/debuginfo/function-arguments.rs | 0 {src/test => tests}/debuginfo/function-call.rs | 0 {src/test => tests}/debuginfo/function-names.rs | 0 .../debuginfo/function-prologue-stepping-regular.rs | 0 {src/test => tests}/debuginfo/gdb-char.rs | 0 .../debuginfo/gdb-pretty-struct-and-enums.rs | 0 {src/test => tests}/debuginfo/generator-locals.rs | 0 {src/test => tests}/debuginfo/generator-objects.rs | 0 .../generic-enum-with-different-disr-sizes.rs | 0 {src/test => tests}/debuginfo/generic-function.rs | 0 .../debuginfo/generic-functions-nested.rs | 0 .../debuginfo/generic-method-on-generic-struct.rs | 0 .../generic-static-method-on-struct-and-enum.rs | 0 .../debuginfo/generic-struct-style-enum.rs | 0 {src/test => tests}/debuginfo/generic-struct.rs | 0 .../debuginfo/generic-tuple-style-enum.rs | 0 {src/test => tests}/debuginfo/include_string.rs | 0 {src/test => tests}/debuginfo/issue-12886.rs | 0 {src/test => tests}/debuginfo/issue-13213.rs | 0 {src/test => tests}/debuginfo/issue-14411.rs | 0 {src/test => tests}/debuginfo/issue-22656.rs | 0 {src/test => tests}/debuginfo/issue-57822.rs | 0 {src/test => tests}/debuginfo/issue-7712.rs | 0 .../debuginfo/lexical-scope-in-for-loop.rs | 0 .../debuginfo/lexical-scope-in-if-let.rs | 0 .../test => tests}/debuginfo/lexical-scope-in-if.rs | 0 .../debuginfo/lexical-scope-in-match.rs | 0 .../lexical-scope-in-parameterless-closure.rs | 0 .../debuginfo/lexical-scope-in-stack-closure.rs | 0 .../lexical-scope-in-unconditional-loop.rs | 0 .../debuginfo/lexical-scope-in-unique-closure.rs | 0 .../debuginfo/lexical-scope-in-while.rs | 0 .../debuginfo/lexical-scope-with-macro.rs | 0 .../debuginfo/lexical-scopes-in-block-expression.rs | 0 {src/test => tests}/debuginfo/limited-debuginfo.rs | 0 {src/test => tests}/debuginfo/macro-stepping.inc | 0 {src/test => tests}/debuginfo/macro-stepping.rs | 0 {src/test => tests}/debuginfo/marker-types.rs | 0 {src/test => tests}/debuginfo/method-on-enum.rs | 0 .../debuginfo/method-on-generic-struct.rs | 0 {src/test => tests}/debuginfo/method-on-struct.rs | 0 {src/test => tests}/debuginfo/method-on-trait.rs | 0 .../debuginfo/method-on-tuple-struct.rs | 0 {src/test => tests}/debuginfo/msvc-pretty-enums.rs | 0 .../debuginfo/msvc-scalarpair-params.rs | 0 {src/test => tests}/debuginfo/multi-byte-chars.rs | 0 {src/test => tests}/debuginfo/multi-cgu.rs | 0 .../debuginfo/multiple-functions-equal-var-names.rs | 0 {src/test => tests}/debuginfo/multiple-functions.rs | 0 {src/test => tests}/debuginfo/mutable-locs.rs | 0 {src/test => tests}/debuginfo/mutex.rs | 0 .../debuginfo/name-shadowing-and-scope-nesting.rs | 0 {src/test => tests}/debuginfo/no_mangle-info.rs | 0 {src/test => tests}/debuginfo/numeric-types.rs | 0 {src/test => tests}/debuginfo/option-like-enum.rs | 0 .../debuginfo/packed-struct-with-destructor.rs | 0 {src/test => tests}/debuginfo/packed-struct.rs | 0 {src/test => tests}/debuginfo/pretty-huge-vec.rs | 0 {src/test => tests}/debuginfo/pretty-slices.rs | 0 .../debuginfo/pretty-std-collections-hash.rs | 0 .../debuginfo/pretty-std-collections.rs | 0 {src/test => tests}/debuginfo/pretty-std.rs | 0 .../debuginfo/pretty-uninitialized-vec.rs | 0 {src/test => tests}/debuginfo/range-types.rs | 0 {src/test => tests}/debuginfo/rc_arc.rs | 0 {src/test => tests}/debuginfo/recursive-enum.rs | 0 {src/test => tests}/debuginfo/recursive-struct.rs | 0 {src/test => tests}/debuginfo/result-types.rs | 0 {src/test => tests}/debuginfo/rwlock-read.rs | 0 {src/test => tests}/debuginfo/rwlock-write.rs | 0 .../debuginfo/self-in-default-method.rs | 0 .../debuginfo/self-in-generic-default-method.rs | 0 {src/test => tests}/debuginfo/shadowed-argument.rs | 0 {src/test => tests}/debuginfo/shadowed-variable.rs | 0 {src/test => tests}/debuginfo/should-fail.rs | 0 {src/test => tests}/debuginfo/simd.rs | 0 .../debuginfo/simple-lexical-scope.rs | 0 {src/test => tests}/debuginfo/simple-struct.rs | 0 {src/test => tests}/debuginfo/simple-tuple.rs | 0 .../debuginfo/static-method-on-struct-and-enum.rs | 0 {src/test => tests}/debuginfo/step-into-match.rs | 0 {src/test => tests}/debuginfo/struct-in-enum.rs | 0 {src/test => tests}/debuginfo/struct-in-struct.rs | 0 {src/test => tests}/debuginfo/struct-namespace.rs | 0 {src/test => tests}/debuginfo/struct-style-enum.rs | 0 .../debuginfo/struct-with-destructor.rs | 0 {src/test => tests}/debuginfo/text-to-include-1.txt | 0 {src/test => tests}/debuginfo/text-to-include-2.txt | 0 {src/test => tests}/debuginfo/text-to-include-3.txt | 0 {src/test => tests}/debuginfo/thread-names.rs | 0 {src/test => tests}/debuginfo/thread.rs | 0 {src/test => tests}/debuginfo/trait-pointers.rs | 0 {src/test => tests}/debuginfo/tuple-in-struct.rs | 0 {src/test => tests}/debuginfo/tuple-in-tuple.rs | 0 {src/test => tests}/debuginfo/tuple-struct.rs | 0 {src/test => tests}/debuginfo/tuple-style-enum.rs | 0 {src/test => tests}/debuginfo/type-names.cdb.js | 0 {src/test => tests}/debuginfo/type-names.rs | 0 {src/test => tests}/debuginfo/union-smoke.rs | 0 {src/test => tests}/debuginfo/unique-enum.rs | 0 {src/test => tests}/debuginfo/unit-type.rs | 0 {src/test => tests}/debuginfo/unreachable-locals.rs | 0 {src/test => tests}/debuginfo/unsized.rs | 0 .../debuginfo/var-captured-in-nested-closure.rs | 0 .../debuginfo/var-captured-in-sendable-closure.rs | 0 .../debuginfo/var-captured-in-stack-closure.rs | 0 {src/test => tests}/debuginfo/vec-slices.rs | 0 {src/test => tests}/debuginfo/vec.rs | 0 .../auxiliary/point.rs | 0 .../add_private_fn_at_krate_root_cc/struct_point.rs | 0 {src/test => tests}/incremental/async-lifetimes.rs | 0 .../auxiliary/incremental_proc_macro_aux.rs | 0 .../incremental/auxiliary/issue-49482-macro-def.rs | 0 .../incremental/auxiliary/issue-49482-reexport.rs | 0 .../incremental/auxiliary/issue-54059.rs | 0 .../incremental/auxiliary/issue-79661.rs | 0 .../incremental/auxiliary/issue-79890.rs | 0 .../incremental/auxiliary/rustc-rust-log-aux.rs | 0 .../incremental/cache_file_headers.rs | 0 .../callee_caller_cross_crate/auxiliary/a.rs | 0 .../incremental/callee_caller_cross_crate/b.rs | 0 .../incremental/change_add_field/struct_point.rs | 0 .../incremental/change_crate_dep_kind.rs | 0 .../incremental/change_crate_order/auxiliary/a.rs | 0 .../incremental/change_crate_order/auxiliary/b.rs | 0 .../incremental/change_crate_order/main.rs | 0 .../auxiliary/a.rs | 0 .../change_implementation_cross_crate/main.rs | 0 .../incremental/change_name_of_static_in_fn.rs | 0 .../incremental/change_private_fn/struct_point.rs | 0 .../change_private_fn_cc/auxiliary/point.rs | 0 .../change_private_fn_cc/struct_point.rs | 0 .../change_private_impl_method/struct_point.rs | 0 .../auxiliary/point.rs | 0 .../change_private_impl_method_cc/struct_point.rs | 0 .../change_pub_inherent_method_body/struct_point.rs | 0 .../change_pub_inherent_method_sig/struct_point.rs | 0 .../incremental/change_symbol_export_status.rs | 0 {src/test => tests}/incremental/commandline-args.rs | 0 .../const-generics/hash-tyvid-regression-1.rs | 0 .../const-generics/hash-tyvid-regression-2.rs | 0 .../const-generics/hash-tyvid-regression-3.rs | 0 .../const-generics/hash-tyvid-regression-4.rs | 0 .../incremental/const-generics/issue-61338.rs | 0 .../incremental/const-generics/issue-61516.rs | 0 .../incremental/const-generics/issue-62536.rs | 0 .../incremental/const-generics/issue-64087.rs | 0 .../incremental/const-generics/issue-65623.rs | 0 .../incremental/const-generics/issue-68477.rs | 0 .../issue-77708-1.rs | 0 .../issue-77708-2.rs | 0 .../issue-77708-3.rs | 0 .../issue-82034.rs | 0 .../issue-85031-1.rs | 0 .../issue-85031-3.rs | 0 .../issue-86953.rs | 0 .../issue-88022.rs | 0 .../incremental/crate_hash_reorder.rs | 0 .../incremental/cyclic-trait-hierarchy.rs | 0 {src/test => tests}/incremental/delayed_span_bug.rs | 0 {src/test => tests}/incremental/dirty_clean.rs | 0 .../incremental/extern_static/issue-49153.rs | 0 {src/test => tests}/incremental/feature_gate.rs | 0 {src/test => tests}/incremental/foreign.rs | 0 .../test => tests}/incremental/hash-module-order.rs | 0 .../incremental/hashes/call_expressions.rs | 0 .../incremental/hashes/closure_expressions.rs | 0 {src/test => tests}/incremental/hashes/consts.rs | 0 .../incremental/hashes/enum_constructors.rs | 0 {src/test => tests}/incremental/hashes/enum_defs.rs | 0 .../incremental/hashes/exported_vs_not.rs | 0 .../incremental/hashes/extern_mods.rs | 0 {src/test => tests}/incremental/hashes/for_loops.rs | 0 .../incremental/hashes/function_interfaces.rs | 0 .../incremental/hashes/if_expressions.rs | 0 .../incremental/hashes/indexing_expressions.rs | 0 .../incremental/hashes/inherent_impls.rs | 0 .../test => tests}/incremental/hashes/inline_asm.rs | 0 .../incremental/hashes/let_expressions.rs | 0 .../incremental/hashes/loop_expressions.rs | 0 .../incremental/hashes/match_expressions.rs | 0 .../incremental/hashes/panic_exprs.rs | 0 {src/test => tests}/incremental/hashes/statics.rs | 0 .../incremental/hashes/struct_constructors.rs | 0 .../incremental/hashes/struct_defs.rs | 0 .../test => tests}/incremental/hashes/trait_defs.rs | 0 .../incremental/hashes/trait_impls.rs | 0 {src/test => tests}/incremental/hashes/type_defs.rs | 0 .../incremental/hashes/unary_and_binary_exprs.rs | 0 .../incremental/hashes/while_let_loops.rs | 0 .../incremental/hashes/while_loops.rs | 0 {src/test => tests}/incremental/hello_world.rs | 0 .../incremental/hygiene/auxiliary/cached_hygiene.rs | 0 .../incremental/hygiene/load_cached_hygiene.rs | 0 .../incremental/ich_method_call_trait_scope.rs | 0 {src/test => tests}/incremental/ich_nested_items.rs | 0 .../incremental/ich_resolve_results.rs | 0 .../incremental/incremental_proc_macro.rs | 0 .../incremental/inlined_hir_34991/main.rs | 0 .../issue-100521-change-struct-name-assocty.rs | 0 {src/test => tests}/incremental/issue-101518.rs | 0 {src/test => tests}/incremental/issue-35593.rs | 0 {src/test => tests}/incremental/issue-38222.rs | 0 {src/test => tests}/incremental/issue-39569.rs | 0 .../incremental/issue-39828/auxiliary/generic.rs | 0 .../incremental/issue-39828/issue-39828.rs | 0 {src/test => tests}/incremental/issue-42602.rs | 0 {src/test => tests}/incremental/issue-49043.rs | 0 {src/test => tests}/incremental/issue-49482.rs | 0 .../incremental/issue-49595/auxiliary/lit_a.rs | 0 .../incremental/issue-49595/auxiliary/lit_b.rs | 0 .../incremental/issue-49595/issue-49595.rs | 0 {src/test => tests}/incremental/issue-51409.rs | 0 {src/test => tests}/incremental/issue-54059.rs | 0 {src/test => tests}/incremental/issue-54242.rs | 0 .../issue-59523-on-implemented-is-not-unused.rs | 0 ...59524-layout-scalar-valid-range-is-not-unused.rs | 0 {src/test => tests}/incremental/issue-60629.rs | 0 {src/test => tests}/incremental/issue-61323.rs | 0 {src/test => tests}/incremental/issue-61530.rs | 0 .../issue-62649-path-collisions-happen.rs | 0 {src/test => tests}/incremental/issue-69596.rs | 0 {src/test => tests}/incremental/issue-72386.rs | 0 .../issue-79661-missing-def-path-hash.rs | 0 .../issue-79890-imported-crates-changed.rs | 0 .../incremental/issue-80336-invalid-span.rs | 0 .../incremental/issue-80691-bad-eval-cache.rs | 0 .../issue-82920-predicate-order-miscompile.rs | 0 .../incremental/issue-84252-global-alloc.rs | 0 .../auxiliary/invalid-span-helper-lib.rs | 0 .../auxiliary/invalid-span-helper-mod.rs | 0 .../issue-85197-invalid-span/auxiliary/respan.rs | 0 .../issue-85197-invalid-span/invalid_span_main.rs | 0 .../incremental/issue-85360-eval-obligation-ice.rs | 0 {src/test => tests}/incremental/issue-86753.rs | 0 .../auxiliary/first_crate.rs | 0 .../auxiliary/second_crate.rs | 0 .../issue_92163_main.rs | 0 .../incremental/issue-92987-provisional-dep-node.rs | 0 .../incremental/issue-96319-coinductive-cycle.rs | 0 {src/test => tests}/incremental/krate-inherent.rs | 0 {src/test => tests}/incremental/krate-inlined.rs | 0 .../incremental/krate_reassign_34991/auxiliary/a.rs | 0 .../incremental/krate_reassign_34991/main.rs | 0 .../incremental/link_order/auxiliary/my_lib.rs | 0 {src/test => tests}/incremental/link_order/main.rs | 0 {src/test => tests}/incremental/lto-in-linker.rs | 0 {src/test => tests}/incremental/lto.rs | 0 {src/test => tests}/incremental/macro_export.rs | 0 {src/test => tests}/incremental/mir-opt.rs | 0 {src/test => tests}/incremental/no_mangle.rs | 0 .../remapped_paths_cc/auxiliary/extern_crate.rs | 0 .../incremental/remapped_paths_cc/main.rs | 0 .../remove-private-item-cross-crate/auxiliary/a.rs | 0 .../remove-private-item-cross-crate/main.rs | 0 .../remove_crate/auxiliary/extern_crate.rs | 0 .../test => tests}/incremental/remove_crate/main.rs | 0 .../incremental/remove_source_file/auxiliary/mod.rs | 0 .../incremental/remove_source_file/main.rs | 0 {src/test => tests}/incremental/reorder_vtable.rs | 0 {src/test => tests}/incremental/rlib-lto.rs | 0 .../incremental/rlib_cross_crate/auxiliary/a.rs | 0 .../incremental/rlib_cross_crate/b.rs | 0 {src/test => tests}/incremental/rustc-rust-log.rs | 0 .../test => tests}/incremental/source_loc_macros.rs | 0 .../incremental/span_hash_stable/auxiliary/mod.rs | 0 .../incremental/span_hash_stable/auxiliary/sub1.rs | 0 .../incremental/span_hash_stable/auxiliary/sub2.rs | 0 .../incremental/span_hash_stable/main.rs | 0 .../incremental/spans_in_type_debuginfo.rs | 0 .../incremental/spans_significant_w_debuginfo.rs | 0 .../incremental/spans_significant_w_panic.rs | 0 {src/test => tests}/incremental/spike-neg1.rs | 0 {src/test => tests}/incremental/spike-neg2.rs | 0 {src/test => tests}/incremental/spike.rs | 0 .../incremental/split_debuginfo_cached.rs | 0 .../incremental/split_debuginfo_mode.rs | 0 {src/test => tests}/incremental/static_cycle/b.rs | 0 .../static_refering_to_other_static/issue-49081.rs | 0 .../static_refering_to_other_static2/issue.rs | 0 .../static_refering_to_other_static3/issue.rs | 0 .../incremental/static_stable_hash/issue-49301.rs | 0 {src/test => tests}/incremental/string_constant.rs | 0 {src/test => tests}/incremental/struct_add_field.rs | 0 .../incremental/struct_change_field_name.rs | 0 .../incremental/struct_change_field_type.rs | 0 .../auxiliary/a.rs | 0 .../struct_change_field_type_cross_crate/b.rs | 0 .../incremental/struct_change_nothing.rs | 0 .../incremental/struct_remove_field.rs | 0 .../thinlto/cgu_invalidated_via_import.rs | 0 .../thinlto/cgu_invalidated_when_export_added.rs | 0 .../thinlto/cgu_invalidated_when_export_removed.rs | 0 .../thinlto/cgu_invalidated_when_import_added.rs | 0 .../thinlto/cgu_invalidated_when_import_removed.rs | 0 .../incremental/thinlto/cgu_keeps_identical_fn.rs | 0 .../independent_cgus_dont_affect_each_other.rs | 0 .../type_alias_cross_crate/auxiliary/a.rs | 0 .../incremental/type_alias_cross_crate/b.rs | 0 .../incremental/unchecked_dirty_clean.rs | 0 .../incremental/warnings-reemitted.rs | 0 .../76803_regression.encode.SimplifyBranchSame.diff | 0 {src/test => tests}/mir-opt/76803_regression.rs | 0 {src/test => tests}/mir-opt/README.md | 0 ...ddress_of_reborrow.SimplifyCfg-initial.after.mir | 0 ...of.borrow_and_cast.SimplifyCfg-initial.after.mir | 0 {src/test => tests}/mir-opt/address_of.rs | 0 ...orary.main.SimplifyCfg-elaborate-drops.after.mir | 0 .../mir-opt/array_index_is_temporary.rs | 0 ...d_panic_abort.main.AbortUnwindingCalls.after.mir | 0 .../mir-opt/asm_unwind_panic_abort.rs | 0 ...ic_assignment.main.SimplifyCfg-initial.after.mir | 0 {src/test => tests}/mir-opt/basic_assignment.rs | 0 .../mir-opt/bool_compare.opt1.InstCombine.diff | 0 .../mir-opt/bool_compare.opt2.InstCombine.diff | 0 .../mir-opt/bool_compare.opt3.InstCombine.diff | 0 .../mir-opt/bool_compare.opt4.InstCombine.diff | 0 {src/test => tests}/mir-opt/bool_compare.rs | 0 .../mir-opt/box_expr.main.ElaborateDrops.before.mir | 0 {src/test => tests}/mir-opt/box_expr.rs | 0 .../arbitrary_let.arbitrary_let.built.after.mir | 0 .../mir-opt/building/custom/arbitrary_let.rs | 0 .../building/custom/consts.consts.built.after.mir | 0 .../mir-opt/building/custom/consts.rs | 0 .../building/custom/consts.statics.built.after.mir | 0 .../test => tests}/mir-opt/building/custom/enums.rs | 0 .../building/custom/enums.set_discr.built.after.mir | 0 .../custom/enums.set_discr_repr.built.after.mir | 0 .../custom/enums.switch_bool.built.after.mir | 0 .../custom/enums.switch_option.built.after.mir | 0 .../custom/enums.switch_option_repr.built.after.mir | 0 .../mir-opt/building/custom/projections.rs | 0 .../building/custom/projections.set.built.after.mir | 0 .../custom/projections.simple_index.built.after.mir | 0 .../custom/projections.tuples.built.after.mir | 0 .../custom/projections.unions.built.after.mir | 0 .../custom/projections.unwrap.built.after.mir | 0 .../custom/projections.unwrap_deref.built.after.mir | 0 .../custom/references.immut_ref.built.after.mir | 0 .../custom/references.mut_ref.built.after.mir | 0 .../custom/references.raw_pointer.built.after.mir | 0 .../mir-opt/building/custom/references.rs | 0 .../mir-opt/building/custom/simple_assign.rs | 0 .../custom/simple_assign.simple.built.after.mir | 0 .../custom/simple_assign.simple_ref.built.after.mir | 0 .../terminators.assert_nonzero.built.after.mir | 0 .../custom/terminators.direct_call.built.after.mir | 0 .../custom/terminators.drop_first.built.after.mir | 0 .../custom/terminators.drop_second.built.after.mir | 0 .../terminators.indirect_call.built.after.mir | 0 .../mir-opt/building/custom/terminators.rs | 0 .../mir-opt/building/enum_cast.bar.built.after.mir | 0 .../mir-opt/building/enum_cast.boo.built.after.mir | 0 .../building/enum_cast.droppy.built.after.mir | 0 .../mir-opt/building/enum_cast.foo.built.after.mir | 0 {src/test => tests}/mir-opt/building/enum_cast.rs | 0 .../building/issue_101867.main.built.after.mir | 0 .../test => tests}/mir-opt/building/issue_101867.rs | 0 .../building/issue_49232.main.built.after.mir | 0 {src/test => tests}/mir-opt/building/issue_49232.rs | 0 ...ch_false_edges.full_tested_match.built.after.mir | 0 ...h_false_edges.full_tested_match2.built.after.mir | 0 .../building/match_false_edges.main.built.after.mir | 0 .../mir-opt/building/match_false_edges.rs | 0 .../receiver_ptr_mutability.main.built.after.mir | 0 .../mir-opt/building/receiver_ptr_mutability.rs | 0 .../simple_match.match_bool.built.after.mir | 0 .../test => tests}/mir-opt/building/simple_match.rs | 0 ...storage_live_dead_in_statics.XXX.built.after.mir | 0 .../building/storage_live_dead_in_statics.rs | 0 ...ay_move_out.move_out_by_subslice.built.after.mir | 0 ...array_move_out.move_out_from_end.built.after.mir | 0 .../mir-opt/building/uniform_array_move_out.rs | 0 ...slice.main.SimplifyCfg-elaborate-drops.after.mir | 0 {src/test => tests}/mir-opt/byte_slice.rs | 0 .../combine_array_len.norm2.InstCombine.diff | 0 {src/test => tests}/mir-opt/combine_array_len.rs | 0 .../mir-opt/combine_clone_of_primitives.rs | 0 ...ne_of_primitives.{impl#0}-clone.InstCombine.diff | 0 .../const_allocation.main.ConstProp.after.32bit.mir | 0 .../const_allocation.main.ConstProp.after.64bit.mir | 0 {src/test => tests}/mir-opt/const_allocation.rs | 0 ...const_allocation2.main.ConstProp.after.32bit.mir | 0 ...const_allocation2.main.ConstProp.after.64bit.mir | 0 {src/test => tests}/mir-opt/const_allocation2.rs | 0 ...const_allocation3.main.ConstProp.after.32bit.mir | 0 ...const_allocation3.main.ConstProp.after.64bit.mir | 0 {src/test => tests}/mir-opt/const_allocation3.rs | 0 .../const_debuginfo.main.ConstDebugInfo.diff | 0 {src/test => tests}/mir-opt/const_debuginfo.rs | 0 .../const_goto.issue_77355_opt.ConstGoto.diff | 0 {src/test => tests}/mir-opt/const_goto.rs | 0 .../const_goto_const_eval_fail.f.ConstGoto.diff | 0 .../mir-opt/const_goto_const_eval_fail.rs | 0 ...onst_goto_storage.match_nested_if.ConstGoto.diff | 0 {src/test => tests}/mir-opt/const_goto_storage.rs | 0 ...romoted[0].SimplifyCfg-elaborate-drops.after.mir | 0 ...st_promotion_extern_static.BAR.PromoteTemps.diff | 0 ...onst_promotion_extern_static.BOP.built.after.mir | 0 ...romoted[0].SimplifyCfg-elaborate-drops.after.mir | 0 ...st_promotion_extern_static.FOO.PromoteTemps.diff | 0 .../mir-opt/const_promotion_extern_static.rs | 0 .../const_prop/aggregate.main.ConstProp.diff | 0 .../const_prop/aggregate.main.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/const_prop/aggregate.rs | 0 .../array_index.main.ConstProp.32bit.diff | 0 .../array_index.main.ConstProp.64bit.diff | 0 .../mir-opt/const_prop/array_index.rs | 0 .../bad_op_div_by_zero.main.ConstProp.diff | 0 .../mir-opt/const_prop/bad_op_div_by_zero.rs | 0 .../bad_op_mod_by_zero.main.ConstProp.diff | 0 .../mir-opt/const_prop/bad_op_mod_by_zero.rs | 0 ..._unsafe_oob_for_slices.main.ConstProp.32bit.diff | 0 ..._unsafe_oob_for_slices.main.ConstProp.64bit.diff | 0 .../const_prop/bad_op_unsafe_oob_for_slices.rs | 0 .../mir-opt/const_prop/boolean_identities.rs | 0 .../boolean_identities.test.ConstProp.diff | 0 .../mir-opt/const_prop/boxes.main.ConstProp.diff | 0 {src/test => tests}/mir-opt/const_prop/boxes.rs | 0 .../mir-opt/const_prop/cast.main.ConstProp.diff | 0 {src/test => tests}/mir-opt/const_prop/cast.rs | 0 .../const_prop/checked_add.main.ConstProp.diff | 0 .../mir-opt/const_prop/checked_add.rs | 0 .../const_prop_fails_gracefully.main.ConstProp.diff | 0 .../const_prop/const_prop_fails_gracefully.rs | 0 ...control_flow_simplification.hello.ConstProp.diff | 0 ..._flow_simplification.hello.PreCodegen.before.mir | 0 .../const_prop/control_flow_simplification.rs | 0 .../discriminant.main.ConstProp.32bit.diff | 0 .../discriminant.main.ConstProp.64bit.diff | 0 .../mir-opt/const_prop/discriminant.rs | 0 .../mir-opt/const_prop/indirect.main.ConstProp.diff | 0 {src/test => tests}/mir-opt/const_prop/indirect.rs | 0 .../const_prop/invalid_constant.main.ConstProp.diff | 0 .../mir-opt/const_prop/invalid_constant.rs | 0 .../const_prop/issue_66971.main.ConstProp.diff | 0 .../mir-opt/const_prop/issue_66971.rs | 0 .../const_prop/issue_67019.main.ConstProp.diff | 0 .../mir-opt/const_prop/issue_67019.rs | 0 .../large_array_index.main.ConstProp.32bit.diff | 0 .../large_array_index.main.ConstProp.64bit.diff | 0 .../mir-opt/const_prop/large_array_index.rs | 0 .../mir-opt/const_prop/mult_by_zero.rs | 0 .../const_prop/mult_by_zero.test.ConstProp.diff | 0 .../const_prop/mutable_variable.main.ConstProp.diff | 0 .../mir-opt/const_prop/mutable_variable.rs | 0 .../mutable_variable_aggregate.main.ConstProp.diff | 0 .../const_prop/mutable_variable_aggregate.rs | 0 ...e_variable_aggregate_mut_ref.main.ConstProp.diff | 0 .../mutable_variable_aggregate_mut_ref.rs | 0 ...iable_aggregate_partial_read.main.ConstProp.diff | 0 .../mutable_variable_aggregate_partial_read.rs | 0 .../mutable_variable_no_prop.main.ConstProp.diff | 0 .../mir-opt/const_prop/mutable_variable_no_prop.rs | 0 ...table_variable_unprop_assign.main.ConstProp.diff | 0 .../const_prop/mutable_variable_unprop_assign.rs | 0 ...ptimizes_into_variable.main.ConstProp.32bit.diff | 0 ...ptimizes_into_variable.main.ConstProp.64bit.diff | 0 ...es_into_variable.main.PreCodegen.after.32bit.mir | 0 ...es_into_variable.main.PreCodegen.after.64bit.mir | 0 ...le.main.ScalarReplacementOfAggregates.32bit.diff | 0 ...le.main.ScalarReplacementOfAggregates.64bit.diff | 0 ...riable.main.SimplifyLocals-final.after.32bit.mir | 0 ...riable.main.SimplifyLocals-final.after.64bit.mir | 0 .../mir-opt/const_prop/optimizes_into_variable.rs | 0 .../read_immutable_static.main.ConstProp.diff | 0 .../mir-opt/const_prop/read_immutable_static.rs | 0 .../const_prop/ref_deref.main.ConstProp.diff | 0 .../const_prop/ref_deref.main.PromoteTemps.diff | 0 {src/test => tests}/mir-opt/const_prop/ref_deref.rs | 0 .../ref_deref_project.main.ConstProp.diff | 0 .../ref_deref_project.main.PromoteTemps.diff | 0 .../mir-opt/const_prop/ref_deref_project.rs | 0 .../const_prop/reify_fn_ptr.main.ConstProp.diff | 0 .../mir-opt/const_prop/reify_fn_ptr.rs | 0 .../const_prop/repeat.main.ConstProp.32bit.diff | 0 .../const_prop/repeat.main.ConstProp.64bit.diff | 0 {src/test => tests}/mir-opt/const_prop/repeat.rs | 0 .../const_prop/return_place.add.ConstProp.diff | 0 .../return_place.add.PreCodegen.before.mir | 0 .../mir-opt/const_prop/return_place.rs | 0 .../scalar_literal_propagation.main.ConstProp.diff | 0 .../const_prop/scalar_literal_propagation.rs | 0 .../const_prop/slice_len.main.ConstProp.32bit.diff | 0 .../const_prop/slice_len.main.ConstProp.64bit.diff | 0 {src/test => tests}/mir-opt/const_prop/slice_len.rs | 0 .../const_prop/switch_int.main.ConstProp.diff | 0 ...ain.SimplifyConstCondition-after-const-prop.diff | 0 .../test => tests}/mir-opt/const_prop/switch_int.rs | 0 .../tuple_literal_propagation.main.ConstProp.diff | 0 .../mir-opt/const_prop/tuple_literal_propagation.rs | 0 .../const_prop_miscompile.bar.ConstProp.diff | 0 .../const_prop_miscompile.foo.ConstProp.diff | 0 .../test => tests}/mir-opt/const_prop_miscompile.rs | 0 .../coverage_graphviz.bar.InstrumentCoverage.0.dot | 0 .../coverage_graphviz.main.InstrumentCoverage.0.dot | 0 {src/test => tests}/mir-opt/coverage_graphviz.rs | 0 .../cast.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/cast.rs | 0 .../checked.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/checked.rs | 0 .../enum.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/enum.rs | 0 .../if.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/if.rs | 0 .../inherit_overflow.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/inherit_overflow.rs | 0 .../issue_81605.f.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/issue_81605.rs | 0 .../ref_without_sb.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/ref_without_sb.rs | 0 .../repr_transparent.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/repr_transparent.rs | 0 .../self_assign.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/self_assign.rs | 0 .../self_assign_add.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/self_assign_add.rs | 0 .../sibling_ptr.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/sibling_ptr.rs | 0 .../struct.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/struct.rs | 0 .../terminator.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/terminator.rs | 0 .../tuple.main.DataflowConstProp.diff | 0 .../mir-opt/dataflow-const-prop/tuple.rs | 0 .../cycle.cycle.DeadStoreElimination.diff | 0 .../mir-opt/dead-store-elimination/cycle.rs | 0 ...undness.pointer_to_int.DeadStoreElimination.diff | 0 ...nance_soundness.retags.DeadStoreElimination.diff | 0 .../dead-store-elimination/provenance_soundness.rs | 0 .../mir-opt/deaggregator_test.bar.Deaggregator.diff | 0 {src/test => tests}/mir-opt/deaggregator_test.rs | 0 .../deaggregator_test_enum.bar.Deaggregator.diff | 0 .../mir-opt/deaggregator_test_enum.rs | 0 .../mir-opt/deaggregator_test_enum_2.rs | 0 ...deaggregator_test_enum_2.test1.Deaggregator.diff | 0 .../mir-opt/deaggregator_test_multiple.rs | 0 ...eaggregator_test_multiple.test.Deaggregator.diff | 0 ...cks.is_line_doc_comment_2.DeduplicateBlocks.diff | 0 {src/test => tests}/mir-opt/deduplicate_blocks.rs | 0 .../deref-patterns/string.foo.PreCodegen.after.mir | 0 .../test => tests}/mir-opt/deref-patterns/string.rs | 0 .../mir-opt/derefer_complex_case.main.Derefer.diff | 0 {src/test => tests}/mir-opt/derefer_complex_case.rs | 0 .../mir-opt/derefer_inline_test.main.Derefer.diff | 0 {src/test => tests}/mir-opt/derefer_inline_test.rs | 0 .../derefer_terminator_test.main.Derefer.diff | 0 .../mir-opt/derefer_terminator_test.rs | 0 .../mir-opt/derefer_test.main.Derefer.diff | 0 {src/test => tests}/mir-opt/derefer_test.rs | 0 .../mir-opt/derefer_test_multiple.main.Derefer.diff | 0 .../test => tests}/mir-opt/derefer_test_multiple.rs | 0 .../branch.foo.DestinationPropagation.diff | 0 {src/test => tests}/mir-opt/dest-prop/branch.rs | 0 ...pagation_arg.arg_src.DestinationPropagation.diff | 0 ..._propagation_arg.bar.DestinationPropagation.diff | 0 ..._propagation_arg.baz.DestinationPropagation.diff | 0 ..._propagation_arg.foo.DestinationPropagation.diff | 0 .../mir-opt/dest-prop/copy_propagation_arg.rs | 0 .../cycle.main.DestinationPropagation.diff | 0 {src/test => tests}/mir-opt/dest-prop/cycle.rs | 0 ..._stores_79191.f.DestinationPropagation.after.mir | 0 .../mir-opt/dest-prop/dead_stores_79191.rs | 0 ...stores_better.f.DestinationPropagation.after.mir | 0 .../mir-opt/dest-prop/dead_stores_better.rs | 0 .../simple.nrvo.DestinationPropagation.diff | 0 {src/test => tests}/mir-opt/dest-prop/simple.rs | 0 .../union.main.DestinationPropagation.diff | 0 {src/test => tests}/mir-opt/dest-prop/union.rs | 0 .../unreachable.f.DestinationPropagation.diff | 0 .../test => tests}/mir-opt/dest-prop/unreachable.rs | 0 ...div_overflow.const_dividend.PreCodegen.after.mir | 0 .../div_overflow.const_divisor.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/div_overflow.rs | 0 ..._otherwise_branch.opt1.EarlyOtherwiseBranch.diff | 0 ..._otherwise_branch.opt2.EarlyOtherwiseBranch.diff | 0 ..._otherwise_branch.opt3.EarlyOtherwiseBranch.diff | 0 .../mir-opt/early_otherwise_branch.rs | 0 ...h_3_element_tuple.opt1.EarlyOtherwiseBranch.diff | 0 .../early_otherwise_branch_3_element_tuple.rs | 0 .../mir-opt/early_otherwise_branch_68867.rs | 0 ...e_branch_68867.try_sum.EarlyOtherwiseBranch.diff | 0 ...se_branch_noopt.noopt1.EarlyOtherwiseBranch.diff | 0 .../mir-opt/early_otherwise_branch_noopt.rs | 0 ...soundness.no_deref_ptr.EarlyOtherwiseBranch.diff | 0 ..._soundness.no_downcast.EarlyOtherwiseBranch.diff | 0 .../mir-opt/early_otherwise_branch_soundness.rs | 0 .../mir-opt/equal_true.opt.InstCombine.diff | 0 {src/test => tests}/mir-opt/equal_true.rs | 0 ...ial_or.match_tuple.SimplifyCfg-initial.after.mir | 0 {src/test => tests}/mir-opt/exponential_or.rs | 0 ...nction-Fn-call.AddMovesForPackedDrops.before.mir | 0 {src/test => tests}/mir-opt/fn_ptr_shim.rs | 0 ..._arms.float_to_exponential_common.ConstProp.diff | 0 {src/test => tests}/mir-opt/funky_arms.rs | 0 ...op_cleanup.main-{closure#0}.generator_drop.0.mir | 0 .../mir-opt/generator_drop_cleanup.rs | 0 ...nwind.main-{closure#0}.StateTransform.before.mir | 0 .../mir-opt/generator_storage_dead_unwind.rs | 0 ...tor_tiny.main-{closure#0}.generator_resume.0.mir | 0 {src/test => tests}/mir-opt/generator_tiny.rs | 0 .../mir-opt/graphviz.main.built.after.dot | 0 {src/test => tests}/mir-opt/graphviz.rs | 0 ...nt.dont_opt_bool.SimplifyComparisonIntegral.diff | 0 ....dont_opt_floats.SimplifyComparisonIntegral.diff | 0 ...emove_comparison.SimplifyComparisonIntegral.diff | 0 ...ion_int.opt_char.SimplifyComparisonIntegral.diff | 0 ...ition_int.opt_i8.SimplifyComparisonIntegral.diff | 0 ...opt_multiple_ifs.SimplifyComparisonIntegral.diff | 0 ...int.opt_negative.SimplifyComparisonIntegral.diff | 0 ...tion_int.opt_u32.SimplifyComparisonIntegral.diff | 0 {src/test => tests}/mir-opt/if_condition_int.rs | 0 .../mir-opt/inline/asm_unwind.main.Inline.diff | 0 {src/test => tests}/mir-opt/inline/asm_unwind.rs | 0 .../caller_with_trivial_bound.foo.Inline.diff | 0 .../mir-opt/inline/caller_with_trivial_bound.rs | 0 .../mir-opt/inline/cycle.f.Inline.diff | 0 .../mir-opt/inline/cycle.g.Inline.diff | 0 .../mir-opt/inline/cycle.main.Inline.diff | 0 {src/test => tests}/mir-opt/inline/cycle.rs | 0 .../mir-opt/inline/dyn_trait.get_query.Inline.diff | 0 .../mir-opt/inline/dyn_trait.mk_cycle.Inline.diff | 0 {src/test => tests}/mir-opt/inline/dyn_trait.rs | 0 .../inline/dyn_trait.try_execute_query.Inline.diff | 0 .../inline/exponential_runtime.main.Inline.diff | 0 .../mir-opt/inline/exponential_runtime.rs | 0 .../inline/inline_any_operand.bar.Inline.after.mir | 0 .../mir-opt/inline/inline_any_operand.rs | 0 {src/test => tests}/mir-opt/inline/inline_async.rs | 0 .../inline/inline_closure.foo.Inline.after.mir | 0 .../test => tests}/mir-opt/inline/inline_closure.rs | 0 .../inline_closure_borrows_arg.foo.Inline.after.mir | 0 .../mir-opt/inline/inline_closure_borrows_arg.rs | 0 .../inline_closure_captures.foo.Inline.after.mir | 0 .../mir-opt/inline/inline_closure_captures.rs | 0 ...ne_compatibility.inlined_no_sanitize.Inline.diff | 0 ...compatibility.inlined_target_feature.Inline.diff | 0 ...compatibility.not_inlined_c_variadic.Inline.diff | 0 ...ompatibility.not_inlined_no_sanitize.Inline.diff | 0 ...atibility.not_inlined_target_feature.Inline.diff | 0 .../mir-opt/inline/inline_compatibility.rs | 0 .../mir-opt/inline/inline_cycle.one.Inline.diff | 0 {src/test => tests}/mir-opt/inline/inline_cycle.rs | 0 .../mir-opt/inline/inline_cycle.two.Inline.diff | 0 .../inline/inline_cycle_generic.main.Inline.diff | 0 .../mir-opt/inline/inline_cycle_generic.rs | 0 .../mir-opt/inline/inline_diverging.f.Inline.diff | 0 .../mir-opt/inline/inline_diverging.g.Inline.diff | 0 .../mir-opt/inline/inline_diverging.h.Inline.diff | 0 .../mir-opt/inline/inline_diverging.rs | 0 .../inline/inline_generator.main.Inline.diff | 0 .../mir-opt/inline/inline_generator.rs | 0 .../inline_instruction_set.default.Inline.diff | 0 .../mir-opt/inline/inline_instruction_set.rs | 0 .../inline/inline_instruction_set.t32.Inline.diff | 0 .../inline/inline_into_box_place.main.Inline.diff | 0 .../mir-opt/inline/inline_into_box_place.rs | 0 .../inline/inline_options.main.Inline.after.mir | 0 .../test => tests}/mir-opt/inline/inline_options.rs | 0 .../inline/inline_retag.bar.Inline.after.mir | 0 {src/test => tests}/mir-opt/inline/inline_retag.rs | 0 .../mir-opt/inline/inline_shims.clone.Inline.diff | 0 .../mir-opt/inline/inline_shims.drop.Inline.diff | 0 {src/test => tests}/mir-opt/inline/inline_shims.rs | 0 .../inline/inline_specialization.main.Inline.diff | 0 .../mir-opt/inline/inline_specialization.rs | 0 .../mir-opt/inline/inline_trait_method.rs | 0 .../inline_trait_method.test.Inline.after.mir | 0 .../mir-opt/inline/inline_trait_method_2.rs | 0 .../inline_trait_method_2.test2.Inline.after.mir | 0 ...ue_58867_inline_as_ref_as_mut.a.Inline.after.mir | 0 ...ue_58867_inline_as_ref_as_mut.b.Inline.after.mir | 0 ...ue_58867_inline_as_ref_as_mut.c.Inline.after.mir | 0 ...ue_58867_inline_as_ref_as_mut.d.Inline.after.mir | 0 .../inline/issue_58867_inline_as_ref_as_mut.rs | 0 ...97_inline_scopes_parenting.main.Inline.after.mir | 0 .../inline/issue_76997_inline_scopes_parenting.rs | 0 .../mir-opt/inline/issue_78442.bar.Inline.diff | 0 .../mir-opt/inline/issue_78442.bar.RevealAll.diff | 0 {src/test => tests}/mir-opt/inline/issue_78442.rs | 0 .../mir-opt/inline/polymorphic_recursion.rs | 0 .../instrument_coverage.bar.InstrumentCoverage.diff | 0 ...instrument_coverage.main.InstrumentCoverage.diff | 0 {src/test => tests}/mir-opt/instrument_coverage.rs | 0 .../mir-opt/issue_101973.inner.ConstProp.diff | 0 {src/test => tests}/mir-opt/issue_101973.rs | 0 .../issue_38669.main.SimplifyCfg-initial.after.mir | 0 {src/test => tests}/mir-opt/issue_38669.rs | 0 .../issue_41110.main.ElaborateDrops.after.mir | 0 {src/test => tests}/mir-opt/issue_41110.rs | 0 .../issue_41110.test.ElaborateDrops.after.mir | 0 {src/test => tests}/mir-opt/issue_41697.rs | 0 ...constant#0}.SimplifyCfg-promote-consts.after.mir | 0 .../issue_41888.main.ElaborateDrops.after.mir | 0 {src/test => tests}/mir-opt/issue_41888.rs | 0 {src/test => tests}/mir-opt/issue_62289.rs | 0 .../issue_62289.test.ElaborateDrops.before.mir | 0 .../mir-opt/issue_72181.bar.built.after.mir | 0 .../mir-opt/issue_72181.foo.built.after.mir | 0 .../mir-opt/issue_72181.main.built.after.mir | 0 {src/test => tests}/mir-opt/issue_72181.rs | 0 .../mir-opt/issue_72181_1.f.built.after.mir | 0 .../mir-opt/issue_72181_1.main.built.after.mir | 0 {src/test => tests}/mir-opt/issue_72181_1.rs | 0 .../issue_73223.main.SimplifyArmIdentity.diff | 0 {src/test => tests}/mir-opt/issue_73223.rs | 0 {src/test => tests}/mir-opt/issue_76432.rs | 0 ...issue_76432.test.SimplifyComparisonIntegral.diff | 0 .../mir-opt/issue_78192.f.InstCombine.diff | 0 {src/test => tests}/mir-opt/issue_78192.rs | 0 .../mir-opt/issue_91633.bar.built.after.mir | 0 .../mir-opt/issue_91633.foo.built.after.mir | 0 .../mir-opt/issue_91633.fun.built.after.mir | 0 .../mir-opt/issue_91633.hey.built.after.mir | 0 {src/test => tests}/mir-opt/issue_91633.rs | 0 .../mir-opt/issue_99325.main.built.after.mir | 0 {src/test => tests}/mir-opt/issue_99325.rs | 0 .../issue_59352.num_to_digit.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/issues/issue_59352.rs | 0 .../issue_75439.foo.MatchBranchSimplification.diff | 0 {src/test => tests}/mir-opt/issues/issue_75439.rs | 0 ...p_test.main.SimplifyCfg-promote-consts.after.mir | 0 {src/test => tests}/mir-opt/loop_test.rs | 0 ...wer_array_len.array_bound.NormalizeArrayLen.diff | 0 ...array_len.array_bound_mut.NormalizeArrayLen.diff | 0 ...lower_array_len.array_len.NormalizeArrayLen.diff | 0 ...ay_len.array_len_by_value.NormalizeArrayLen.diff | 0 {src/test => tests}/mir-opt/lower_array_len.rs | 0 ...r_array_len_e2e.array_bound.PreCodegen.after.mir | 0 ...ray_len_e2e.array_bound_mut.PreCodegen.after.mir | 0 ...wer_array_len_e2e.array_len.PreCodegen.after.mir | 0 ..._len_e2e.array_len_by_value.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/lower_array_len_e2e.rs | 0 .../lower_intrinsics.align_of.LowerIntrinsics.diff | 0 .../lower_intrinsics.assume.LowerIntrinsics.diff | 0 ...wer_intrinsics.discriminant.LowerIntrinsics.diff | 0 ...nsics.f_copy_nonoverlapping.LowerIntrinsics.diff | 0 .../lower_intrinsics.forget.LowerIntrinsics.diff | 0 .../lower_intrinsics.non_const.LowerIntrinsics.diff | 0 {src/test => tests}/mir-opt/lower_intrinsics.rs | 0 .../lower_intrinsics.size_of.LowerIntrinsics.diff | 0 ...ower_intrinsics.unreachable.LowerIntrinsics.diff | 0 .../lower_intrinsics.wrapping.LowerIntrinsics.diff | 0 .../lower_intrinsics_e2e.f_u64.PreCodegen.after.mir | 0 ...lower_intrinsics_e2e.f_unit.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/lower_intrinsics_e2e.rs | 0 .../lower_slice_len.bound.LowerSliceLenCalls.diff | 0 {src/test => tests}/mir-opt/lower_slice_len.rs | 0 ...plifyCfg-initial.after-ElaborateDrops.after.diff | 0 {src/test => tests}/mir-opt/match_arm_scopes.rs | 0 .../match_test.main.SimplifyCfg-initial.after.mir | 0 {src/test => tests}/mir-opt/match_test.rs | 0 ...duce_branches.bar.MatchBranchSimplification.diff | 0 ...duce_branches.foo.MatchBranchSimplification.diff | 0 ...s.match_nested_if.MatchBranchSimplification.diff | 0 .../mir-opt/matches_reduce_branches.rs | 0 ....exhaustive_match.MatchBranchSimplification.diff | 0 ...haustive_match_i8.MatchBranchSimplification.diff | 0 {src/test => tests}/mir-opt/matches_u8.rs | 0 .../mir-opt/multiple_return_terminators.rs | 0 ..._terminators.test.MultipleReturnTerminators.diff | 0 .../mir-opt/nll/named_lifetimes_basic.rs | 0 .../nll/named_lifetimes_basic.use_x.nll.0.mir | 0 .../nll/region_subtyping_basic.main.nll.0.32bit.mir | 0 .../nll/region_subtyping_basic.main.nll.0.64bit.mir | 0 .../mir-opt/nll/region_subtyping_basic.rs | 0 .../mir-opt/no_drop_for_inactive_variant.rs | 0 ...ant.unwrap.SimplifyCfg-elaborate-drops.after.mir | 0 ...s_drop_after_call.main.ElaborateDrops.before.mir | 0 .../mir-opt/no_spurious_drop_after_call.rs | 0 .../mir-opt/not_equal_false.opt.InstCombine.diff | 0 {src/test => tests}/mir-opt/not_equal_false.rs | 0 .../mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff | 0 {src/test => tests}/mir-opt/nrvo_simple.rs | 0 ...igned.main.SimplifyCfg-elaborate-drops.after.mir | 0 .../mir-opt/packed_struct_drop_aligned.rs | 0 ...ake_borrows.match_guard.CleanupPostBorrowck.diff | 0 {src/test => tests}/mir-opt/remove_fake_borrows.rs | 0 ...move_never_const.no_codegen.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/remove_never_const.rs | 0 ...e_storage_markers.main.RemoveStorageMarkers.diff | 0 .../mir-opt/remove_storage_markers.rs | 0 ...rops.cannot_opt_generic.RemoveUnneededDrops.diff | 0 ...unneeded_drops.dont_opt.RemoveUnneededDrops.diff | 0 ...move_unneeded_drops.opt.RemoveUnneededDrops.diff | 0 ..._drops.opt_generic_copy.RemoveUnneededDrops.diff | 0 .../test => tests}/mir-opt/remove_unneeded_drops.rs | 0 .../remove_zsts.get_union.PreCodegen.after.mir | 0 .../mir-opt/remove_zsts.get_union.RemoveZsts.diff | 0 {src/test => tests}/mir-opt/remove_zsts.rs | 0 ...rray_casts.SimplifyCfg-elaborate-drops.after.mir | 0 ...op_in_place.Test.SimplifyCfg-make_shim.after.mir | 0 ...closure#0}.SimplifyCfg-elaborate-drops.after.mir | 0 ...retag.main.SimplifyCfg-elaborate-drops.after.mir | 0 {src/test => tests}/mir-opt/retag.rs | 0 ...mpl#0}-foo.SimplifyCfg-elaborate-drops.after.mir | 0 ...0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir | 0 {src/test => tests}/mir-opt/return_an_array.rs | 0 ...e_const_switch.identity.SeparateConstSwitch.diff | 0 .../test => tests}/mir-opt/separate_const_switch.rs | 0 ...onst_switch.too_complex.SeparateConstSwitch.diff | 0 ...simple_option_map_e2e.ezmap.PreCodegen.after.mir | 0 .../test => tests}/mir-opt/simple_option_map_e2e.rs | 0 .../simplify_arm.id_try.SimplifyArmIdentity.diff | 0 .../simplify_arm.id_try.SimplifyBranchSame.diff | 0 {src/test => tests}/mir-opt/simplify_arm.rs | 0 .../test => tests}/mir-opt/simplify_arm_identity.rs | 0 .../simplify_cfg.main.SimplifyCfg-early-opt.diff | 0 .../simplify_cfg.main.SimplifyCfg-initial.diff | 0 {src/test => tests}/mir-opt/simplify_cfg.rs | 0 ...ain.SimplifyConstCondition-after-const-prop.diff | 0 {src/test => tests}/mir-opt/simplify_if.rs | 0 ...y_locals.c.SimplifyLocals-before-const-prop.diff | 0 ..._locals.d1.SimplifyLocals-before-const-prop.diff | 0 ..._locals.d2.SimplifyLocals-before-const-prop.diff | 0 ...xpose_addr.SimplifyLocals-before-const-prop.diff | 0 ...y_locals.r.SimplifyLocals-before-const-prop.diff | 0 {src/test => tests}/mir-opt/simplify_locals.rs | 0 ..._locals.t1.SimplifyLocals-before-const-prop.diff | 0 ..._locals.t2.SimplifyLocals-before-const-prop.diff | 0 ..._locals.t3.SimplifyLocals-before-const-prop.diff | 0 ..._locals.t4.SimplifyLocals-before-const-prop.diff | 0 ..._locals_fixedpoint.foo.SimplifyLocals-final.diff | 0 .../mir-opt/simplify_locals_fixedpoint.rs | 0 ...onsts.main.SimplifyLocals-before-const-prop.diff | 0 .../simplify_locals_removes_unused_consts.rs | 0 ..._reads.map.SimplifyLocals-before-const-prop.diff | 0 ...lify_locals_removes_unused_discriminant_reads.rs | 0 .../mir-opt/simplify_match.main.ConstProp.diff | 0 {src/test => tests}/mir-opt/simplify_match.rs | 0 {src/test => tests}/mir-opt/simplify_try_if_let.rs | 0 ..._if_let.{impl#0}-append.SimplifyArmIdentity.diff | 0 ...place.[String].AddMovesForPackedDrops.before.mir | 0 {src/test => tests}/mir-opt/slice_drop_shim.rs | 0 .../mir-opt/spanview_block.main.built.after.html | 0 {src/test => tests}/mir-opt/spanview_block.rs | 0 .../spanview_statement.main.built.after.html | 0 {src/test => tests}/mir-opt/spanview_statement.rs | 0 .../spanview_terminator.main.built.after.html | 0 {src/test => tests}/mir-opt/spanview_terminator.rs | 0 ...sroa.dropping.ScalarReplacementOfAggregates.diff | 0 .../sroa.enums.ScalarReplacementOfAggregates.diff | 0 ...sroa.escaping.ScalarReplacementOfAggregates.diff | 0 .../sroa.flat.ScalarReplacementOfAggregates.diff | 0 {src/test => tests}/mir-opt/sroa.rs | 0 .../sroa.structs.ScalarReplacementOfAggregates.diff | 0 .../sroa.unions.ScalarReplacementOfAggregates.diff | 0 .../mir-opt/storage_ranges.main.nll.0.mir | 0 {src/test => tests}/mir-opt/storage_ranges.rs | 0 .../mir-opt/tls_access.main.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/tls_access.rs | 0 .../try_identity_e2e.new.PreCodegen.after.mir | 0 .../try_identity_e2e.old.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/try_identity_e2e.rs | 0 ...num.process_never.SimplifyLocals-final.after.mir | 0 ...enum.process_void.SimplifyLocals-final.after.mir | 0 {src/test => tests}/mir-opt/uninhabited_enum.rs | 0 ...fyCfg-after-uninhabited-enum-branching.after.mir | 0 ...num_branching.main.UninhabitedEnumBranching.diff | 0 .../mir-opt/uninhabited_enum_branching.rs | 0 ...fyCfg-after-uninhabited-enum-branching.after.mir | 0 ...um_branching2.main.UninhabitedEnumBranching.diff | 0 .../mir-opt/uninhabited_enum_branching2.rs | 0 ...minate_fallthrough.UninhabitedEnumBranching.diff | 0 ...n.keep_fallthrough.UninhabitedEnumBranching.diff | 0 .../mir-opt/uninhabited_fallthrough_elimination.rs | 0 .../unreachable.main.UnreachablePropagation.diff | 0 {src/test => tests}/mir-opt/unreachable.rs | 0 ...hable_diverging.main.UnreachablePropagation.diff | 0 .../test => tests}/mir-opt/unreachable_diverging.rs | 0 ...sual_item_types.E-V-{constant#0}.built.after.mir | 0 ...tem_types.Test-X-{constructor#0}.built.after.mir | 0 ...place.Vec_i32_.AddMovesForPackedDrops.before.mir | 0 {src/test => tests}/mir-opt/unusual_item_types.rs | 0 ...pes.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir | 0 .../while_let_loops.change_loop_body.ConstProp.diff | 0 ..._let_loops.change_loop_body.PreCodegen.after.mir | 0 {src/test => tests}/mir-opt/while_let_loops.rs | 0 {src/test => tests}/mir-opt/while_storage.rs | 0 .../while_storage.while_loop.PreCodegen.after.mir | 0 {src/test => tests}/pretty/asm.pp | 0 {src/test => tests}/pretty/asm.rs | 0 {src/test => tests}/pretty/ast-stmt-expr-attr.rs | 0 {src/test => tests}/pretty/async.rs | 0 {src/test => tests}/pretty/attr-derive.rs | 0 {src/test => tests}/pretty/attr-fn-inner.rs | 0 {src/test => tests}/pretty/attr-literals.rs | 0 {src/test => tests}/pretty/attr-tokens-raw-ident.rs | 0 {src/test => tests}/pretty/auto-trait.rs | 0 {src/test => tests}/pretty/auxiliary/derive-foo.rs | 0 {src/test => tests}/pretty/blank-lines.rs | 0 .../pretty/block-comment-multiple-asterisks.rs | 0 .../pretty/block-comment-trailing-whitespace.rs | 0 .../pretty/block-comment-trailing-whitespace2.rs | 0 {src/test => tests}/pretty/block-comment-wchar.pp | 0 {src/test => tests}/pretty/block-comment-wchar.rs | 0 {src/test => tests}/pretty/block-disambig.rs | 0 {src/test => tests}/pretty/cast-lt.pp | 0 {src/test => tests}/pretty/cast-lt.rs | 0 {src/test => tests}/pretty/closure-reform-pretty.rs | 0 .../test => tests}/pretty/delimited-token-groups.rs | 0 {src/test => tests}/pretty/disamb-stmt-expr.rs | 0 {src/test => tests}/pretty/do1.rs | 0 {src/test => tests}/pretty/doc-comments.rs | 0 {src/test => tests}/pretty/dollar-crate.pp | 0 {src/test => tests}/pretty/dollar-crate.rs | 0 {src/test => tests}/pretty/empty-impl.rs | 0 {src/test => tests}/pretty/empty-lines.rs | 0 {src/test => tests}/pretty/enum-variant-vis.rs | 0 {src/test => tests}/pretty/example1.rs | 0 {src/test => tests}/pretty/example2.pp | 0 {src/test => tests}/pretty/example2.rs | 0 .../pretty/expanded-and-path-remap-80832.pp | 0 .../pretty/expanded-and-path-remap-80832.rs | 0 {src/test => tests}/pretty/fn-return.rs | 0 {src/test => tests}/pretty/fn-types.rs | 0 {src/test => tests}/pretty/fn-variadic.rs | 0 {src/test => tests}/pretty/for-comment.rs | 0 {src/test => tests}/pretty/gat-bounds.rs | 0 {src/test => tests}/pretty/hir-pretty-loop.pp | 0 {src/test => tests}/pretty/hir-pretty-loop.rs | 0 {src/test => tests}/pretty/if-attr.rs | 0 {src/test => tests}/pretty/import-renames.rs | 0 {src/test => tests}/pretty/issue-12590-a.rs | 0 {src/test => tests}/pretty/issue-12590-b.rs | 0 {src/test => tests}/pretty/issue-12590-c.pp | 0 {src/test => tests}/pretty/issue-12590-c.rs | 0 {src/test => tests}/pretty/issue-19077.rs | 0 {src/test => tests}/pretty/issue-25031.rs | 0 {src/test => tests}/pretty/issue-30731.rs | 0 {src/test => tests}/pretty/issue-31073.pp | 0 {src/test => tests}/pretty/issue-31073.rs | 0 {src/test => tests}/pretty/issue-4264.pp | 0 {src/test => tests}/pretty/issue-4264.rs | 0 .../pretty/issue-68710-field-attr-proc-mac-lost.rs | 0 {src/test => tests}/pretty/issue-73626.rs | 0 {src/test => tests}/pretty/issue-74745.rs | 0 {src/test => tests}/pretty/issue-85089.pp | 0 {src/test => tests}/pretty/issue-85089.rs | 0 {src/test => tests}/pretty/let.rs | 0 {src/test => tests}/pretty/lifetime.rs | 0 {src/test => tests}/pretty/macro.rs | 0 {src/test => tests}/pretty/macro_rules.rs | 0 {src/test => tests}/pretty/match-block-expr.rs | 0 .../pretty/match-naked-expr-medium.rs | 0 {src/test => tests}/pretty/match-naked-expr.rs | 0 .../pretty/nested-item-vis-defaultness.rs | 0 {src/test => tests}/pretty/path-type-bounds.rs | 0 .../pretty/qpath-associated-type-bound.rs | 0 {src/test => tests}/pretty/raw-address-of.rs | 0 {src/test => tests}/pretty/raw-str-nonexpr.rs | 0 {src/test => tests}/pretty/stmt_expr_attributes.rs | 0 {src/test => tests}/pretty/struct-pattern.rs | 0 {src/test => tests}/pretty/struct-tuple.rs | 0 {src/test => tests}/pretty/tag-blank-lines.rs | 0 {src/test => tests}/pretty/tests-are-sorted.pp | 0 {src/test => tests}/pretty/tests-are-sorted.rs | 0 .../test => tests}/pretty/top-level-doc-comments.rs | 0 {src/test => tests}/pretty/trait-inner-attr.rs | 0 {src/test => tests}/pretty/trait-polarity.rs | 0 {src/test => tests}/pretty/trait-safety.rs | 0 {src/test => tests}/pretty/unary-op-disambig.rs | 0 {src/test => tests}/pretty/use-tree.rs | 0 {src/test => tests}/pretty/vec-comments.pp | 0 {src/test => tests}/pretty/vec-comments.rs | 0 {src/test => tests}/pretty/where-clauses.rs | 0 {src/test => tests}/pretty/yeet-expr.rs | 0 .../run-make-fulldeps/a-b-a-linker-guard/Makefile | 0 .../run-make-fulldeps/a-b-a-linker-guard/a.rs | 0 .../run-make-fulldeps/a-b-a-linker-guard/b.rs | 0 .../alloc-no-oom-handling/Makefile | 0 .../run-make-fulldeps/alloc-no-rc/Makefile | 0 .../run-make-fulldeps/alloc-no-sync/Makefile | 0 .../allow-non-lint-warnings-cmdline/Makefile | 0 .../allow-non-lint-warnings-cmdline/foo.rs | 0 .../allow-warnings-cmdline-stability/Makefile | 0 .../allow-warnings-cmdline-stability/bar.rs | 0 .../allow-warnings-cmdline-stability/foo.rs | 0 .../archive-duplicate-names/Makefile | 0 .../run-make-fulldeps/archive-duplicate-names/bar.c | 0 .../archive-duplicate-names/bar.rs | 0 .../run-make-fulldeps/archive-duplicate-names/foo.c | 0 .../archive-duplicate-names/foo.rs | 0 .../arguments-non-c-like-enum/Makefile | 0 .../arguments-non-c-like-enum/nonclike.rs | 0 .../arguments-non-c-like-enum/test.c | 0 .../run-make-fulldeps/atomic-lock-free/Makefile | 0 .../atomic-lock-free/atomic_lock_free.rs | 0 .../run-make-fulldeps/bare-outfile/Makefile | 0 .../run-make-fulldeps/bare-outfile/foo.rs | 0 .../run-make-fulldeps/c-dynamic-dylib/Makefile | 0 .../run-make-fulldeps/c-dynamic-dylib/bar.rs | 0 .../run-make-fulldeps/c-dynamic-dylib/cfoo.c | 0 .../run-make-fulldeps/c-dynamic-dylib/foo.rs | 0 .../run-make-fulldeps/c-dynamic-rlib/Makefile | 0 .../run-make-fulldeps/c-dynamic-rlib/bar.rs | 0 .../run-make-fulldeps/c-dynamic-rlib/cfoo.c | 0 .../run-make-fulldeps/c-dynamic-rlib/foo.rs | 0 .../run-make-fulldeps/c-link-to-rust-dylib/Makefile | 0 .../run-make-fulldeps/c-link-to-rust-dylib/bar.c | 0 .../run-make-fulldeps/c-link-to-rust-dylib/foo.rs | 0 .../c-link-to-rust-staticlib/Makefile | 0 .../c-link-to-rust-staticlib/bar.c | 0 .../c-link-to-rust-staticlib/foo.rs | 0 .../c-link-to-rust-va-list-fn/Makefile | 0 .../c-link-to-rust-va-list-fn/checkrust.rs | 0 .../c-link-to-rust-va-list-fn/test.c | 0 .../run-make-fulldeps/c-static-dylib/Makefile | 0 .../run-make-fulldeps/c-static-dylib/bar.rs | 0 .../run-make-fulldeps/c-static-dylib/cfoo.c | 0 .../run-make-fulldeps/c-static-dylib/foo.rs | 0 .../run-make-fulldeps/c-static-rlib/Makefile | 0 .../run-make-fulldeps/c-static-rlib/bar.rs | 0 .../run-make-fulldeps/c-static-rlib/cfoo.c | 0 .../run-make-fulldeps/c-static-rlib/foo.rs | 0 .../c-unwind-abi-catch-lib-panic/Makefile | 0 .../c-unwind-abi-catch-lib-panic/add.c | 0 .../c-unwind-abi-catch-lib-panic/main.rs | 0 .../c-unwind-abi-catch-lib-panic/panic.rs | 0 .../c-unwind-abi-catch-panic/Makefile | 0 .../c-unwind-abi-catch-panic/add.c | 0 .../c-unwind-abi-catch-panic/main.rs | 0 .../cat-and-grep-sanity-check/Makefile | 0 .../run-make-fulldeps/cdylib-dylib-linkage/Makefile | 0 .../run-make-fulldeps/cdylib-dylib-linkage/bar.rs | 0 .../run-make-fulldeps/cdylib-dylib-linkage/foo.c | 0 .../run-make-fulldeps/cdylib-dylib-linkage/foo.rs | 0 .../run-make-fulldeps/cdylib-fewer-symbols/Makefile | 0 .../run-make-fulldeps/cdylib-fewer-symbols/foo.rs | 0 .../run-make-fulldeps/cdylib/Makefile | 0 {src/test => tests}/run-make-fulldeps/cdylib/bar.rs | 0 {src/test => tests}/run-make-fulldeps/cdylib/foo.c | 0 {src/test => tests}/run-make-fulldeps/cdylib/foo.rs | 0 .../codegen-options-parsing/Makefile | 0 .../codegen-options-parsing/dummy.rs | 0 .../run-make-fulldeps/compile-stdin/Makefile | 0 .../compiler-lookup-paths-2/Makefile | 0 .../run-make-fulldeps/compiler-lookup-paths-2/a.rs | 0 .../run-make-fulldeps/compiler-lookup-paths-2/b.rs | 0 .../run-make-fulldeps/compiler-lookup-paths-2/c.rs | 0 .../compiler-lookup-paths/Makefile | 0 .../run-make-fulldeps/compiler-lookup-paths/a.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/b.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/c.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/d.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/e.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/e2.rs | 0 .../run-make-fulldeps/compiler-lookup-paths/f.rs | 0 .../compiler-lookup-paths/native.c | 0 .../compiler-rt-works-on-mingw/Makefile | 0 .../compiler-rt-works-on-mingw/foo.cpp | 0 .../compiler-rt-works-on-mingw/foo.rs | 0 .../run-make-fulldeps/core-no-fp-fmt-parse/Makefile | 0 .../run-make-fulldeps/crate-data-smoke/Makefile | 0 .../run-make-fulldeps/crate-data-smoke/crate.rs | 0 .../run-make-fulldeps/crate-data-smoke/lib.rs | 0 .../run-make-fulldeps/crate-data-smoke/rlib.rs | 0 .../crate-hash-rustc-version/Makefile | 0 .../run-make-fulldeps/crate-hash-rustc-version/a.rs | 0 .../run-make-fulldeps/crate-hash-rustc-version/b.rs | 0 .../run-make-fulldeps/crate-name-priority/Makefile | 0 .../run-make-fulldeps/crate-name-priority/foo.rs | 0 .../run-make-fulldeps/crate-name-priority/foo1.rs | 0 .../run-make-fulldeps/cross-lang-lto-clang/Makefile | 0 .../run-make-fulldeps/cross-lang-lto-clang/clib.c | 0 .../run-make-fulldeps/cross-lang-lto-clang/cmain.c | 0 .../run-make-fulldeps/cross-lang-lto-clang/main.rs | 0 .../cross-lang-lto-clang/rustlib.rs | 0 .../cross-lang-lto-pgo-smoketest/Makefile | 0 .../cross-lang-lto-pgo-smoketest/clib.c | 0 .../cross-lang-lto-pgo-smoketest/cmain.c | 0 .../cross-lang-lto-pgo-smoketest/main.rs | 0 .../cross-lang-lto-pgo-smoketest/rustlib.rs | 0 .../cross-lang-lto-upstream-rlibs/Makefile | 0 .../cross-lang-lto-upstream-rlibs/staticlib.rs | 0 .../cross-lang-lto-upstream-rlibs/upstream.rs | 0 .../run-make-fulldeps/cross-lang-lto/Makefile | 0 .../run-make-fulldeps/cross-lang-lto/lib.rs | 0 .../run-make-fulldeps/cross-lang-lto/main.rs | 0 .../run-make-fulldeps/debug-assertions/Makefile | 0 .../run-make-fulldeps/debug-assertions/debug.rs | 0 .../dep-info-doesnt-run-much/Makefile | 0 .../dep-info-doesnt-run-much/foo.rs | 0 .../run-make-fulldeps/dep-info-spaces/Makefile | 0 .../run-make-fulldeps/dep-info-spaces/Makefile.foo | 0 .../run-make-fulldeps/dep-info-spaces/bar.rs | 0 .../run-make-fulldeps/dep-info-spaces/foo foo.rs | 0 .../run-make-fulldeps/dep-info-spaces/lib.rs | 0 .../run-make-fulldeps/dep-info/Makefile | 0 .../run-make-fulldeps/dep-info/Makefile.foo | 0 .../run-make-fulldeps/dep-info/bar.rs | 0 .../run-make-fulldeps/dep-info/foo.rs | 0 .../run-make-fulldeps/dep-info/lib.rs | 0 .../run-make-fulldeps/dep-info/lib2.rs | 0 .../doctests-keep-binaries/Makefile | 0 .../run-make-fulldeps/doctests-keep-binaries/t.rs | 0 .../duplicate-output-flavors/Makefile | 0 .../duplicate-output-flavors/foo.rs | 0 .../run-make-fulldeps/dylib-chain/Makefile | 0 .../run-make-fulldeps/dylib-chain/m1.rs | 0 .../run-make-fulldeps/dylib-chain/m2.rs | 0 .../run-make-fulldeps/dylib-chain/m3.rs | 0 .../run-make-fulldeps/dylib-chain/m4.rs | 0 .../run-make-fulldeps/emit-stack-sizes/Makefile | 0 .../run-make-fulldeps/emit-stack-sizes/foo.rs | 0 {src/test => tests}/run-make-fulldeps/emit/Makefile | 0 .../run-make-fulldeps/emit/test-24876.rs | 0 .../run-make-fulldeps/emit/test-26235.rs | 0 .../error-found-staticlib-instead-crate/Makefile | 0 .../error-found-staticlib-instead-crate/bar.rs | 0 .../error-found-staticlib-instead-crate/foo.rs | 0 .../error-writing-dependencies/Makefile | 0 .../error-writing-dependencies/foo.rs | 0 .../run-make-fulldeps/exit-code/Makefile | 0 .../run-make-fulldeps/exit-code/compile-error.rs | 0 .../run-make-fulldeps/exit-code/lint-failure.rs | 0 .../run-make-fulldeps/exit-code/success.rs | 0 .../extern-diff-internal-name/Makefile | 0 .../extern-diff-internal-name/lib.rs | 0 .../extern-diff-internal-name/test.rs | 0 .../extern-flag-disambiguates/Makefile | 0 .../extern-flag-disambiguates/a.rs | 0 .../extern-flag-disambiguates/b.rs | 0 .../extern-flag-disambiguates/c.rs | 0 .../extern-flag-disambiguates/d.rs | 0 .../run-make-fulldeps/extern-flag-fun/Makefile | 0 .../run-make-fulldeps/extern-flag-fun/bar-alt.rs | 0 .../run-make-fulldeps/extern-flag-fun/bar.rs | 0 .../run-make-fulldeps/extern-flag-fun/foo.rs | 0 .../extern-flag-fun/gated_unstable.rs | 0 .../run-make-fulldeps/extern-flag-fun/rustc.rs | 0 .../run-make-fulldeps/extern-flag-pathless/Makefile | 0 .../extern-flag-pathless/bar-dynamic.rs | 0 .../extern-flag-pathless/bar-static.rs | 0 .../run-make-fulldeps/extern-flag-pathless/foo.rs | 0 .../extern-flag-rename-transitive/Makefile | 0 .../extern-flag-rename-transitive/bar.rs | 0 .../extern-flag-rename-transitive/baz.rs | 0 .../extern-flag-rename-transitive/foo.rs | 0 .../run-make-fulldeps/extern-fn-generic/Makefile | 0 .../run-make-fulldeps/extern-fn-generic/test.c | 0 .../run-make-fulldeps/extern-fn-generic/test.rs | 0 .../extern-fn-generic/testcrate.rs | 0 .../run-make-fulldeps/extern-fn-mangle/Makefile | 0 .../run-make-fulldeps/extern-fn-mangle/test.c | 0 .../run-make-fulldeps/extern-fn-mangle/test.rs | 0 .../run-make-fulldeps/extern-fn-reachable/Makefile | 0 .../run-make-fulldeps/extern-fn-reachable/dylib.rs | 0 .../extern-fn-struct-passing-abi/Makefile | 0 .../extern-fn-struct-passing-abi/test.c | 0 .../extern-fn-struct-passing-abi/test.rs | 0 .../extern-fn-with-extern-types/Makefile | 0 .../extern-fn-with-extern-types/ctest.c | 0 .../extern-fn-with-extern-types/test.rs | 0 .../extern-fn-with-packed-struct/Makefile | 0 .../extern-fn-with-packed-struct/test.c | 0 .../extern-fn-with-packed-struct/test.rs | 0 .../run-make-fulldeps/extern-fn-with-union/Makefile | 0 .../run-make-fulldeps/extern-fn-with-union/ctest.c | 0 .../run-make-fulldeps/extern-fn-with-union/test.rs | 0 .../extern-fn-with-union/testcrate.rs | 0 .../extern-multiple-copies/Makefile | 0 .../run-make-fulldeps/extern-multiple-copies/bar.rs | 0 .../extern-multiple-copies/foo1.rs | 0 .../extern-multiple-copies/foo2.rs | 0 .../extern-multiple-copies2/Makefile | 0 .../extern-multiple-copies2/bar.rs | 0 .../extern-multiple-copies2/foo1.rs | 0 .../extern-multiple-copies2/foo2.rs | 0 .../extern-overrides-distribution/Makefile | 0 .../extern-overrides-distribution/libc.rs | 0 .../extern-overrides-distribution/main.rs | 0 .../extra-filename-with-temp-outputs/Makefile | 0 .../extra-filename-with-temp-outputs/foo.rs | 0 .../foreign-double-unwind/Makefile | 0 .../run-make-fulldeps/foreign-double-unwind/foo.cpp | 0 .../run-make-fulldeps/foreign-double-unwind/foo.rs | 0 .../run-make-fulldeps/foreign-exceptions/Makefile | 0 .../run-make-fulldeps/foreign-exceptions/foo.cpp | 0 .../run-make-fulldeps/foreign-exceptions/foo.rs | 0 .../foreign-rust-exceptions/Makefile | 0 .../foreign-rust-exceptions/bar.rs | 0 .../foreign-rust-exceptions/foo.rs | 0 {src/test => tests}/run-make-fulldeps/fpic/Makefile | 0 {src/test => tests}/run-make-fulldeps/fpic/hello.rs | 0 .../run-make-fulldeps/glibc-staticlib-args/Makefile | 0 .../glibc-staticlib-args/library.rs | 0 .../glibc-staticlib-args/program.c | 0 .../run-make-fulldeps/hir-tree/Makefile | 0 .../run-make-fulldeps/hir-tree/input.rs | 0 .../hotplug_codegen_backend/Makefile | 0 .../hotplug_codegen_backend/some_crate.rs | 0 .../hotplug_codegen_backend/the_backend.rs | 0 .../run-make-fulldeps/include_bytes_deps/Makefile | 0 .../run-make-fulldeps/include_bytes_deps/input.bin | 0 .../run-make-fulldeps/include_bytes_deps/input.md | 0 .../run-make-fulldeps/include_bytes_deps/input.txt | 0 .../run-make-fulldeps/include_bytes_deps/main.rs | 0 .../incr-add-rust-src-component/Makefile | 0 .../incr-add-rust-src-component/main.rs | 0 .../inline-always-many-cgu/Makefile | 0 .../run-make-fulldeps/inline-always-many-cgu/foo.rs | 0 .../interdependent-c-libraries/Makefile | 0 .../interdependent-c-libraries/bar.c | 0 .../interdependent-c-libraries/bar.rs | 0 .../interdependent-c-libraries/foo.c | 0 .../interdependent-c-libraries/foo.rs | 0 .../interdependent-c-libraries/main.rs | 0 .../intrinsic-unreachable/Makefile | 0 .../intrinsic-unreachable/exit-ret.rs | 0 .../intrinsic-unreachable/exit-unreachable.rs | 0 .../run-make-fulldeps/invalid-library/Makefile | 0 .../run-make-fulldeps/invalid-library/foo.rs | 0 .../run-make-fulldeps/invalid-staticlib/Makefile | 0 .../run-make-fulldeps/issue-11908/Makefile | 0 .../run-make-fulldeps/issue-11908/bar.rs | 0 .../run-make-fulldeps/issue-11908/foo.rs | 0 .../run-make-fulldeps/issue-14500/Makefile | 0 .../run-make-fulldeps/issue-14500/bar.rs | 0 .../run-make-fulldeps/issue-14500/foo.c | 0 .../run-make-fulldeps/issue-14500/foo.rs | 0 .../run-make-fulldeps/issue-14698/Makefile | 0 .../run-make-fulldeps/issue-14698/foo.rs | 0 .../run-make-fulldeps/issue-15460/Makefile | 0 .../run-make-fulldeps/issue-15460/bar.rs | 0 .../run-make-fulldeps/issue-15460/foo.c | 0 .../run-make-fulldeps/issue-15460/foo.rs | 0 .../run-make-fulldeps/issue-18943/Makefile | 0 .../run-make-fulldeps/issue-18943/foo.rs | 0 .../run-make-fulldeps/issue-19371/Makefile | 0 .../run-make-fulldeps/issue-19371/foo.rs | 0 .../run-make-fulldeps/issue-20626/Makefile | 0 .../run-make-fulldeps/issue-20626/foo.rs | 0 .../run-make-fulldeps/issue-22131/Makefile | 0 .../run-make-fulldeps/issue-22131/foo.rs | 0 .../run-make-fulldeps/issue-24445/Makefile | 0 .../run-make-fulldeps/issue-24445/foo.c | 0 .../run-make-fulldeps/issue-24445/foo.rs | 0 .../run-make-fulldeps/issue-25581/Makefile | 0 .../run-make-fulldeps/issue-25581/test.c | 0 .../run-make-fulldeps/issue-25581/test.rs | 0 .../run-make-fulldeps/issue-26006/Makefile | 0 .../run-make-fulldeps/issue-26006/in/libc/lib.rs | 0 .../run-make-fulldeps/issue-26006/in/time/lib.rs | 0 .../run-make-fulldeps/issue-26092/Makefile | 0 .../run-make-fulldeps/issue-26092/blank.rs | 0 .../run-make-fulldeps/issue-28595/Makefile | 0 .../run-make-fulldeps/issue-28595/a.c | 0 .../run-make-fulldeps/issue-28595/a.rs | 0 .../run-make-fulldeps/issue-28595/b.c | 0 .../run-make-fulldeps/issue-28595/b.rs | 0 .../run-make-fulldeps/issue-28766/Makefile | 0 .../run-make-fulldeps/issue-28766/foo.rs | 0 .../run-make-fulldeps/issue-28766/main.rs | 0 .../run-make-fulldeps/issue-30063/Makefile | 0 .../run-make-fulldeps/issue-30063/foo.rs | 0 .../run-make-fulldeps/issue-33329/Makefile | 0 .../run-make-fulldeps/issue-33329/main.rs | 0 .../run-make-fulldeps/issue-35164/Makefile | 0 .../run-make-fulldeps/issue-35164/main.rs | 0 .../run-make-fulldeps/issue-35164/submodule/mod.rs | 0 .../run-make-fulldeps/issue-37839/Makefile | 0 .../run-make-fulldeps/issue-37839/a.rs | 0 .../run-make-fulldeps/issue-37839/b.rs | 0 .../run-make-fulldeps/issue-37839/c.rs | 0 .../run-make-fulldeps/issue-37893/Makefile | 0 .../run-make-fulldeps/issue-37893/a.rs | 0 .../run-make-fulldeps/issue-37893/b.rs | 0 .../run-make-fulldeps/issue-37893/c.rs | 0 .../run-make-fulldeps/issue-38237/Makefile | 0 .../run-make-fulldeps/issue-38237/bar.rs | 0 .../run-make-fulldeps/issue-38237/baz.rs | 0 .../run-make-fulldeps/issue-38237/foo.rs | 0 .../run-make-fulldeps/issue-40535/Makefile | 0 .../run-make-fulldeps/issue-40535/bar.rs | 0 .../run-make-fulldeps/issue-40535/baz.rs | 0 .../run-make-fulldeps/issue-40535/foo.rs | 0 .../run-make-fulldeps/issue-46239/Makefile | 0 .../run-make-fulldeps/issue-46239/main.rs | 0 .../run-make-fulldeps/issue-47551/Makefile | 0 .../issue-47551/eh_frame-terminator.rs | 0 .../run-make-fulldeps/issue-51671/Makefile | 0 .../run-make-fulldeps/issue-51671/app.rs | 0 .../run-make-fulldeps/issue-53964/Makefile | 0 .../run-make-fulldeps/issue-53964/app.rs | 0 .../run-make-fulldeps/issue-53964/panic.rs | 0 .../run-make-fulldeps/issue-64153/Makefile | 0 .../run-make-fulldeps/issue-64153/downstream.rs | 0 .../run-make-fulldeps/issue-64153/upstream.rs | 0 .../issue-68794-textrel-on-minimal-lib/Makefile | 0 .../issue-68794-textrel-on-minimal-lib/bar.c | 0 .../issue-68794-textrel-on-minimal-lib/foo.rs | 0 .../run-make-fulldeps/issue-69368/Makefile | 0 .../run-make-fulldeps/issue-69368/a.rs | 0 .../run-make-fulldeps/issue-69368/b.rs | 0 .../run-make-fulldeps/issue-69368/c.rs | 0 .../run-make-fulldeps/issue-7349/Makefile | 0 .../run-make-fulldeps/issue-7349/foo.rs | 0 .../run-make-fulldeps/issue-83045/Makefile | 0 .../run-make-fulldeps/issue-83045/a.rs | 0 .../run-make-fulldeps/issue-83045/b.rs | 0 .../run-make-fulldeps/issue-83045/c.rs | 0 .../issue-84395-lto-embed-bitcode/Makefile | 0 .../issue-84395-lto-embed-bitcode/test.rs | 0 .../issue-97463-abi-param-passing/Makefile | 0 .../issue-97463-abi-param-passing/bad.c | 0 .../issue-97463-abi-param-passing/param_passing.rs | 0 .../run-make-fulldeps/issue64319/Makefile | 0 .../run-make-fulldeps/issue64319/bar.rs | 0 .../run-make-fulldeps/issue64319/foo.rs | 0 .../run-make-fulldeps/issues-41478-43796/Makefile | 0 .../run-make-fulldeps/issues-41478-43796/a.rs | 0 .../libs-through-symlinks/Makefile | 0 .../run-make-fulldeps/libs-through-symlinks/bar.rs | 0 .../run-make-fulldeps/libs-through-symlinks/foo.rs | 0 .../run-make-fulldeps/libtest-json/Makefile | 0 .../run-make-fulldeps/libtest-json/f.rs | 0 .../libtest-json/output-default.json | 0 .../libtest-json/output-stdout-success.json | 0 .../run-make-fulldeps/libtest-json/validate_json.py | 0 .../run-make-fulldeps/link-arg/Makefile | 0 .../run-make-fulldeps/link-arg/empty.rs | 0 .../run-make-fulldeps/link-args-order/Makefile | 0 .../run-make-fulldeps/link-args-order/empty.rs | 0 .../run-make-fulldeps/link-cfg/Makefile | 0 .../link-cfg/dep-with-staticlib.rs | 0 .../run-make-fulldeps/link-cfg/dep.rs | 0 .../run-make-fulldeps/link-cfg/no-deps.rs | 0 .../run-make-fulldeps/link-cfg/return1.c | 0 .../run-make-fulldeps/link-cfg/return2.c | 0 .../run-make-fulldeps/link-cfg/return3.c | 0 .../run-make-fulldeps/link-cfg/with-deps.rs | 0 .../link-cfg/with-staticlib-deps.rs | 0 .../run-make-fulldeps/link-dedup/Makefile | 0 .../run-make-fulldeps/link-dedup/depa.rs | 0 .../run-make-fulldeps/link-dedup/depb.rs | 0 .../run-make-fulldeps/link-dedup/depc.rs | 0 .../run-make-fulldeps/link-dedup/empty.rs | 0 .../run-make-fulldeps/link-path-order/Makefile | 0 .../run-make-fulldeps/link-path-order/correct.c | 0 .../run-make-fulldeps/link-path-order/main.rs | 0 .../run-make-fulldeps/link-path-order/wrong.c | 0 .../linkage-attr-on-static/Makefile | 0 .../run-make-fulldeps/linkage-attr-on-static/bar.rs | 0 .../run-make-fulldeps/linkage-attr-on-static/foo.c | 0 .../long-linker-command-lines-cmd-exe/Makefile | 0 .../long-linker-command-lines-cmd-exe/foo.bat | 0 .../long-linker-command-lines-cmd-exe/foo.rs | 0 .../long-linker-command-lines/Makefile | 0 .../long-linker-command-lines/foo.rs | 0 .../run-make-fulldeps/longjmp-across-rust/Makefile | 0 .../run-make-fulldeps/longjmp-across-rust/foo.c | 0 .../run-make-fulldeps/longjmp-across-rust/main.rs | 0 .../run-make-fulldeps/ls-metadata/Makefile | 0 .../run-make-fulldeps/ls-metadata/foo.rs | 0 .../run-make-fulldeps/lto-dylib-dep/Makefile | 0 .../run-make-fulldeps/lto-dylib-dep/a_dylib.rs | 0 .../run-make-fulldeps/lto-dylib-dep/main.rs | 0 .../run-make-fulldeps/lto-empty/Makefile | 0 .../run-make-fulldeps/lto-empty/lib.rs | 0 .../lto-no-link-whole-rlib/Makefile | 0 .../run-make-fulldeps/lto-no-link-whole-rlib/bar.c | 0 .../run-make-fulldeps/lto-no-link-whole-rlib/foo.c | 0 .../lto-no-link-whole-rlib/lib1.rs | 0 .../lto-no-link-whole-rlib/lib2.rs | 0 .../lto-no-link-whole-rlib/main.rs | 0 .../run-make-fulldeps/lto-readonly-lib/Makefile | 0 .../run-make-fulldeps/lto-readonly-lib/lib.rs | 0 .../run-make-fulldeps/lto-readonly-lib/main.rs | 0 .../run-make-fulldeps/lto-smoke-c/Makefile | 0 .../run-make-fulldeps/lto-smoke-c/bar.c | 0 .../run-make-fulldeps/lto-smoke-c/foo.rs | 0 .../run-make-fulldeps/lto-smoke/Makefile | 0 .../run-make-fulldeps/lto-smoke/lib.rs | 0 .../run-make-fulldeps/lto-smoke/main.rs | 0 .../run-make-fulldeps/manual-crate-name/Makefile | 0 .../run-make-fulldeps/manual-crate-name/bar.rs | 0 .../run-make-fulldeps/manual-link/Makefile | 0 .../run-make-fulldeps/manual-link/bar.c | 0 .../run-make-fulldeps/manual-link/foo.c | 0 .../run-make-fulldeps/manual-link/foo.rs | 0 .../run-make-fulldeps/manual-link/main.rs | 0 .../many-crates-but-no-match/Makefile | 0 .../many-crates-but-no-match/crateA1.rs | 0 .../many-crates-but-no-match/crateA2.rs | 0 .../many-crates-but-no-match/crateA3.rs | 0 .../many-crates-but-no-match/crateB.rs | 0 .../many-crates-but-no-match/crateC.rs | 0 .../metadata-flag-frobs-symbols/Makefile | 0 .../metadata-flag-frobs-symbols/bar.rs | 0 .../metadata-flag-frobs-symbols/foo.rs | 0 .../run-make-fulldeps/min-global-align/Makefile | 0 .../min-global-align/min_global_align.rs | 0 .../mingw-export-call-convention/Makefile | 0 .../mingw-export-call-convention/foo.rs | 0 .../mismatching-target-triples/Makefile | 0 .../mismatching-target-triples/bar.rs | 0 .../mismatching-target-triples/foo.rs | 0 .../missing-crate-dependency/Makefile | 0 .../missing-crate-dependency/crateA.rs | 0 .../missing-crate-dependency/crateB.rs | 0 .../missing-crate-dependency/crateC.rs | 0 .../run-make-fulldeps/mixing-deps/Makefile | 0 .../run-make-fulldeps/mixing-deps/both.rs | 0 .../run-make-fulldeps/mixing-deps/dylib.rs | 0 .../run-make-fulldeps/mixing-deps/prog.rs | 0 .../run-make-fulldeps/mixing-formats/Makefile | 0 .../run-make-fulldeps/mixing-formats/bar1.rs | 0 .../run-make-fulldeps/mixing-formats/bar2.rs | 0 .../run-make-fulldeps/mixing-formats/baz.rs | 0 .../run-make-fulldeps/mixing-formats/baz2.rs | 0 .../run-make-fulldeps/mixing-formats/foo.rs | 0 .../run-make-fulldeps/mixing-libs/Makefile | 0 .../run-make-fulldeps/mixing-libs/dylib.rs | 0 .../run-make-fulldeps/mixing-libs/prog.rs | 0 .../run-make-fulldeps/mixing-libs/rlib.rs | 0 .../run-make-fulldeps/msvc-opt-minsize/Makefile | 0 .../run-make-fulldeps/msvc-opt-minsize/foo.rs | 0 .../run-make-fulldeps/multiple-emits/Makefile | 0 .../run-make-fulldeps/multiple-emits/foo.rs | 0 .../run-make-fulldeps/no-builtins-lto/Makefile | 0 .../run-make-fulldeps/no-builtins-lto/main.rs | 0 .../no-builtins-lto/no_builtins.rs | 0 .../run-make-fulldeps/no-duplicate-libs/Makefile | 0 .../run-make-fulldeps/no-duplicate-libs/bar.c | 0 .../run-make-fulldeps/no-duplicate-libs/foo.c | 0 .../run-make-fulldeps/no-duplicate-libs/main.rs | 0 .../no-intermediate-extras/Makefile | 0 .../run-make-fulldeps/no-intermediate-extras/foo.rs | 0 .../run-make-fulldeps/obey-crate-type-flag/Makefile | 0 .../run-make-fulldeps/obey-crate-type-flag/test.rs | 0 .../run-make-fulldeps/obtain-borrowck/Makefile | 0 .../run-make-fulldeps/obtain-borrowck/driver.rs | 0 .../run-make-fulldeps/obtain-borrowck/output.stdout | 0 .../run-make-fulldeps/obtain-borrowck/test.rs | 0 .../Makefile | 0 .../output-filename-conflicts-with-directory/foo.rs | 0 .../output-filename-overwrites-input/Makefile | 0 .../output-filename-overwrites-input/bar.rs | 0 .../output-filename-overwrites-input/foo.rs | 0 .../output-type-permutations/Makefile | 0 .../output-type-permutations/foo.rs | 0 .../run-make-fulldeps/output-with-hyphens/Makefile | 0 .../output-with-hyphens/foo-bar.rs | 0 .../override-aliased-flags/Makefile | 0 .../override-aliased-flags/main.rs | 0 .../panic-impl-transitive/Makefile | 0 .../panic-impl-transitive/panic-impl-consumer.rs | 0 .../panic-impl-transitive/panic-impl-provider.rs | 0 .../pass-non-c-like-enum-to-c/Makefile | 0 .../pass-non-c-like-enum-to-c/nonclike.rs | 0 .../pass-non-c-like-enum-to-c/test.c | 0 .../run-make-fulldeps/pgo-branch-weights/Makefile | 0 .../pgo-branch-weights/filecheck-patterns.txt | 0 .../pgo-branch-weights/interesting.rs | 0 .../run-make-fulldeps/pgo-branch-weights/main.rs | 0 .../run-make-fulldeps/pgo-branch-weights/opaque.rs | 0 .../run-make-fulldeps/pgo-gen-lto/Makefile | 0 .../run-make-fulldeps/pgo-gen-lto/test.rs | 0 .../pgo-gen-no-imp-symbols/Makefile | 0 .../pgo-gen-no-imp-symbols/test.rs | 0 .../run-make-fulldeps/pgo-gen/Makefile | 0 .../run-make-fulldeps/pgo-gen/test.rs | 0 .../pgo-indirect-call-promotion/Makefile | 0 .../filecheck-patterns.txt | 0 .../pgo-indirect-call-promotion/interesting.rs | 0 .../pgo-indirect-call-promotion/main.rs | 0 .../pgo-indirect-call-promotion/opaque.rs | 0 .../run-make-fulldeps/pgo-use/Makefile | 0 .../pgo-use/filecheck-patterns.txt | 0 .../run-make-fulldeps/pgo-use/main.rs | 0 .../pointer-auth-link-with-c/Makefile | 0 .../pointer-auth-link-with-c/test.c | 0 .../pointer-auth-link-with-c/test.rs | 0 .../run-make-fulldeps/prefer-dylib/Makefile | 0 .../run-make-fulldeps/prefer-dylib/bar.rs | 0 .../run-make-fulldeps/prefer-dylib/foo.rs | 0 .../run-make-fulldeps/prefer-rlib/Makefile | 0 .../run-make-fulldeps/prefer-rlib/bar.rs | 0 .../run-make-fulldeps/prefer-rlib/foo.rs | 0 .../run-make-fulldeps/pretty-expanded/Makefile | 0 .../run-make-fulldeps/pretty-expanded/input.rs | 0 .../run-make-fulldeps/pretty-print-to-file/Makefile | 0 .../run-make-fulldeps/pretty-print-to-file/input.pp | 0 .../run-make-fulldeps/pretty-print-to-file/input.rs | 0 .../print-calling-conventions/Makefile | 0 .../run-make-fulldeps/print-cfg/Makefile | 0 .../run-make-fulldeps/print-target-list/Makefile | 0 .../run-make-fulldeps/profile/Makefile | 0 .../run-make-fulldeps/profile/test.rs | 0 .../run-make-fulldeps/prune-link-args/Makefile | 0 .../run-make-fulldeps/prune-link-args/empty.rs | 0 .../run-make-fulldeps/redundant-libs/Makefile | 0 .../run-make-fulldeps/redundant-libs/bar.c | 0 .../run-make-fulldeps/redundant-libs/baz.c | 0 .../run-make-fulldeps/redundant-libs/foo.c | 0 .../run-make-fulldeps/redundant-libs/main.rs | 0 .../run-make-fulldeps/relocation-model/Makefile | 0 .../run-make-fulldeps/relocation-model/foo.rs | 0 .../run-make-fulldeps/relro-levels/Makefile | 0 .../run-make-fulldeps/relro-levels/hello.rs | 0 .../run-make-fulldeps/remap-path-prefix/Makefile | 0 .../remap-path-prefix/auxiliary/lib.rs | 0 .../run-make-fulldeps/reproducible-build-2/Makefile | 0 .../reproducible-build-2/linker.rs | 0 .../reproducible-build-2/reproducible-build-aux.rs | 0 .../reproducible-build-2/reproducible-build.rs | 0 .../run-make-fulldeps/reproducible-build/Makefile | 0 .../run-make-fulldeps/reproducible-build/linker.rs | 0 .../reproducible-build/reproducible-build-aux.rs | 0 .../reproducible-build/reproducible-build.rs | 0 .../run-make-fulldeps/resolve-rename/Makefile | 0 .../run-make-fulldeps/resolve-rename/bar.rs | 0 .../run-make-fulldeps/resolve-rename/baz.rs | 0 .../run-make-fulldeps/resolve-rename/foo.rs | 0 .../return-non-c-like-enum-from-c/Makefile | 0 .../return-non-c-like-enum-from-c/nonclike.rs | 0 .../return-non-c-like-enum-from-c/test.c | 0 .../return-non-c-like-enum/Makefile | 0 .../return-non-c-like-enum/nonclike.rs | 0 .../run-make-fulldeps/return-non-c-like-enum/test.c | 0 .../run-make-fulldeps/rlib-chain/Makefile | 0 .../run-make-fulldeps/rlib-chain/m1.rs | 0 .../run-make-fulldeps/rlib-chain/m2.rs | 0 .../run-make-fulldeps/rlib-chain/m3.rs | 0 .../run-make-fulldeps/rlib-chain/m4.rs | 0 .../run-make-fulldeps/rustdoc-determinism/Makefile | 0 .../run-make-fulldeps/rustdoc-determinism/bar.rs | 0 .../run-make-fulldeps/rustdoc-determinism/foo.rs | 0 .../run-make-fulldeps/rustdoc-error-lines/Makefile | 0 .../run-make-fulldeps/rustdoc-error-lines/input.rs | 0 .../run-make-fulldeps/rustdoc-io-error/Makefile | 0 .../run-make-fulldeps/rustdoc-io-error/foo.rs | 0 .../run-make-fulldeps/rustdoc-map-file/Makefile | 0 .../rustdoc-map-file/expected.json | 0 .../run-make-fulldeps/rustdoc-map-file/foo.rs | 0 .../rustdoc-map-file/validate_json.py | 0 .../run-make-fulldeps/rustdoc-output-path/Makefile | 0 .../run-make-fulldeps/rustdoc-output-path/foo.rs | 0 .../rustdoc-scrape-examples-macros/Makefile | 0 .../rustdoc-scrape-examples-macros/examples/ex.rs | 0 .../rustdoc-scrape-examples-macros/src/lib.rs | 0 .../rustdoc-scrape-examples-macros/src/proc.rs | 0 .../rustdoc-target-spec-json-path/Makefile | 0 .../rustdoc-target-spec-json-path/dummy_core.rs | 0 .../rustdoc-target-spec-json-path/my_crate.rs | 0 .../rustdoc-target-spec-json-path/target.json | 0 .../run-make-fulldeps/rustdoc-themes/Makefile | 0 .../run-make-fulldeps/rustdoc-themes/foo.rs | 0 .../sanitizer-cdylib-link/Makefile | 0 .../sanitizer-cdylib-link/library.rs | 0 .../sanitizer-cdylib-link/program.rs | 0 .../run-make-fulldeps/sanitizer-dylib-link/Makefile | 0 .../sanitizer-dylib-link/library.rs | 0 .../sanitizer-dylib-link/program.rs | 0 .../sanitizer-staticlib-link/Makefile | 0 .../sanitizer-staticlib-link/library.rs | 0 .../sanitizer-staticlib-link/program.c | 0 .../sanitizer-staticlib-link/program.rs | 0 .../run-make-fulldeps/save-analysis-fail/Makefile | 0 .../run-make-fulldeps/save-analysis-fail/SameDir.rs | 0 .../save-analysis-fail/SameDir3.rs | 0 .../save-analysis-fail/SubDir/mod.rs | 0 .../run-make-fulldeps/save-analysis-fail/foo.rs | 0 .../run-make-fulldeps/save-analysis-fail/krate2.rs | 0 .../save-analysis-rfc2126/Makefile | 0 .../save-analysis-rfc2126/extern_absolute_paths.rs | 0 .../save-analysis-rfc2126/krate2.rs | 0 .../save-analysis-rfc2126/validate_json.py | 0 .../run-make-fulldeps/save-analysis/Makefile | 0 .../run-make-fulldeps/save-analysis/SameDir.rs | 0 .../run-make-fulldeps/save-analysis/SameDir3.rs | 0 .../run-make-fulldeps/save-analysis/SubDir/mod.rs | 0 .../run-make-fulldeps/save-analysis/extra-docs.md | 0 .../run-make-fulldeps/save-analysis/foo.rs | 0 .../run-make-fulldeps/save-analysis/krate2.rs | 0 .../run-make-fulldeps/separate-link-fail/Makefile | 0 .../run-make-fulldeps/separate-link/Makefile | 0 .../run-make-fulldeps/sepcomp-cci-copies/Makefile | 0 .../run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs | 0 .../run-make-fulldeps/sepcomp-cci-copies/foo.rs | 0 .../run-make-fulldeps/sepcomp-inlining/Makefile | 0 .../run-make-fulldeps/sepcomp-inlining/foo.rs | 0 .../run-make-fulldeps/sepcomp-separate/Makefile | 0 .../run-make-fulldeps/sepcomp-separate/foo.rs | 0 .../run-make-fulldeps/share-generics-dylib/Makefile | 0 .../share-generics-dylib/instance_provider_a.rs | 0 .../share-generics-dylib/instance_provider_b.rs | 0 .../share-generics-dylib/instance_user_a_rlib.rs | 0 .../share-generics-dylib/instance_user_b_rlib.rs | 0 .../share-generics-dylib/instance_user_dylib.rs | 0 .../share-generics-dylib/linked_leaf.rs | 0 .../run-make-fulldeps/simd-ffi/Makefile | 0 .../run-make-fulldeps/simd-ffi/simd.rs | 0 .../run-make-fulldeps/simple-dylib/Makefile | 0 .../run-make-fulldeps/simple-dylib/bar.rs | 0 .../run-make-fulldeps/simple-dylib/foo.rs | 0 .../run-make-fulldeps/simple-rlib/Makefile | 0 .../run-make-fulldeps/simple-rlib/bar.rs | 0 .../run-make-fulldeps/simple-rlib/foo.rs | 0 .../run-make-fulldeps/split-debuginfo/Makefile | 0 .../run-make-fulldeps/split-debuginfo/bar.rs | 0 .../run-make-fulldeps/split-debuginfo/baz.rs | 0 .../run-make-fulldeps/split-debuginfo/foo.rs | 0 .../run-make-fulldeps/split-debuginfo/main.rs | 0 .../run-make-fulldeps/stable-symbol-names/Makefile | 0 .../stable-symbol-names/stable-symbol-names1.rs | 0 .../stable-symbol-names/stable-symbol-names2.rs | 0 .../static-dylib-by-default/Makefile | 0 .../static-dylib-by-default/bar.rs | 0 .../static-dylib-by-default/foo.rs | 0 .../static-dylib-by-default/main.c | 0 .../run-make-fulldeps/static-extern-type/Makefile | 0 .../static-extern-type/define-foo.c | 0 .../run-make-fulldeps/static-extern-type/use-foo.rs | 0 .../run-make-fulldeps/static-unwinding/Makefile | 0 .../run-make-fulldeps/static-unwinding/lib.rs | 0 .../run-make-fulldeps/static-unwinding/main.rs | 0 .../run-make-fulldeps/staticlib-blank-lib/Makefile | 0 .../run-make-fulldeps/staticlib-blank-lib/foo.rs | 0 .../run-make-fulldeps/std-core-cycle/Makefile | 0 .../run-make-fulldeps/std-core-cycle/bar.rs | 0 .../run-make-fulldeps/std-core-cycle/foo.rs | 0 .../run-make-fulldeps/stdin-non-utf8/Makefile | 0 .../run-make-fulldeps/stdin-non-utf8/non-utf8 | 0 .../run-make-fulldeps/suspicious-library/Makefile | 0 .../run-make-fulldeps/suspicious-library/bar.rs | 0 .../run-make-fulldeps/suspicious-library/foo.rs | 0 .../run-make-fulldeps/symbol-visibility/Makefile | 0 .../run-make-fulldeps/symbol-visibility/a_cdylib.rs | 0 .../symbol-visibility/a_proc_macro.rs | 0 .../symbol-visibility/a_rust_dylib.rs | 0 .../symbol-visibility/an_executable.rs | 0 .../run-make-fulldeps/symbol-visibility/an_rlib.rs | 0 .../symbols-include-type-name/Makefile | 0 .../symbols-include-type-name/lib.rs | 0 .../run-make-fulldeps/symlinked-extern/Makefile | 0 .../run-make-fulldeps/symlinked-extern/bar.rs | 0 .../run-make-fulldeps/symlinked-extern/baz.rs | 0 .../run-make-fulldeps/symlinked-extern/foo.rs | 0 .../run-make-fulldeps/symlinked-libraries/Makefile | 0 .../run-make-fulldeps/symlinked-libraries/bar.rs | 0 .../run-make-fulldeps/symlinked-libraries/foo.rs | 0 .../run-make-fulldeps/symlinked-rlib/Makefile | 0 .../run-make-fulldeps/symlinked-rlib/bar.rs | 0 .../run-make-fulldeps/symlinked-rlib/foo.rs | 0 .../sysroot-crates-are-unstable/Makefile | 0 .../sysroot-crates-are-unstable/test.py | 0 .../run-make-fulldeps/target-cpu-native/Makefile | 0 .../run-make-fulldeps/target-cpu-native/foo.rs | 0 .../run-make-fulldeps/target-specs/Makefile | 0 .../target-specs/definitely-not-builtin-target.json | 0 .../run-make-fulldeps/target-specs/foo.rs | 0 .../target-specs/mismatching-data-layout.json | 0 .../target-specs/my-awesome-platform.json | 0 .../target-specs/my-incomplete-platform.json | 0 .../target-specs/my-invalid-platform.json | 0 .../my-x86_64-unknown-linux-gnu-platform.json | 0 .../target-without-atomic-cas/Makefile | 0 .../run-make-fulldeps/test-harness/Makefile | 0 .../test-harness/test-ignore-cfg.rs | 0 {src/test => tests}/run-make-fulldeps/tools.mk | 0 .../type-mismatch-same-crate-name/Makefile | 0 .../type-mismatch-same-crate-name/crateA.rs | 0 .../type-mismatch-same-crate-name/crateB.rs | 0 .../type-mismatch-same-crate-name/crateC.rs | 0 .../use-extern-for-plugins/Makefile | 0 .../run-make-fulldeps/use-extern-for-plugins/bar.rs | 0 .../run-make-fulldeps/use-extern-for-plugins/baz.rs | 0 .../run-make-fulldeps/use-extern-for-plugins/foo.rs | 0 .../use-suggestions-rust-2018/Makefile | 0 .../use-suggestions-rust-2018/ep-nested-lib.rs | 0 .../use-suggestions-rust-2018/use-suggestions.rs | 0 .../run-make-fulldeps/used-cdylib-macos/Makefile | 0 .../used-cdylib-macos/dylib_used.rs | 0 {src/test => tests}/run-make-fulldeps/used/Makefile | 0 {src/test => tests}/run-make-fulldeps/used/used.rs | 0 .../run-make-fulldeps/version/Makefile | 0 .../run-make-fulldeps/volatile-intrinsics/Makefile | 0 .../run-make-fulldeps/volatile-intrinsics/main.rs | 0 .../weird-output-filenames/Makefile | 0 .../run-make-fulldeps/weird-output-filenames/foo.rs | 0 .../windows-binary-no-external-deps/Makefile | 0 .../windows-binary-no-external-deps/hello.rs | 0 .../run-make-fulldeps/windows-spawn/Makefile | 0 .../run-make-fulldeps/windows-spawn/hello.rs | 0 .../run-make-fulldeps/windows-spawn/spawn.rs | 0 .../run-make-fulldeps/windows-subsystem/Makefile | 0 .../run-make-fulldeps/windows-subsystem/console.rs | 0 .../run-make-fulldeps/windows-subsystem/windows.rs | 0 {src/test => tests}/run-make/const_fn_mir/Makefile | 0 {src/test => tests}/run-make/const_fn_mir/dump.mir | 0 {src/test => tests}/run-make/const_fn_mir/main.rs | 0 .../run-make/coverage-llvmir/Makefile | 0 .../run-make/coverage-llvmir/filecheck.testprog.txt | 0 .../run-make/coverage-llvmir/testprog.rs | 0 .../run-make/coverage-reports/Makefile | 0 .../expected_show_coverage.abort.txt | 0 .../expected_show_coverage.assert.txt | 0 .../expected_show_coverage.async.txt | 0 .../expected_show_coverage.async2.txt | 0 .../expected_show_coverage.closure.txt | 0 .../expected_show_coverage.closure_macro.txt | 0 .../expected_show_coverage.closure_macro_async.txt | 0 .../expected_show_coverage.conditions.txt | 0 .../expected_show_coverage.continue.txt | 0 .../expected_show_coverage.dead_code.txt | 0 .../expected_show_coverage.doctest.txt | 0 .../expected_show_coverage.drop_trait.txt | 0 .../expected_show_coverage.generator.txt | 0 .../expected_show_coverage.generics.txt | 0 .../coverage-reports/expected_show_coverage.if.txt | 0 .../expected_show_coverage.if_else.txt | 0 .../expected_show_coverage.inline-dead.txt | 0 .../expected_show_coverage.inline.txt | 0 .../expected_show_coverage.inner_items.txt | 0 .../expected_show_coverage.issue-83601.txt | 0 .../expected_show_coverage.issue-84561.txt | 0 .../expected_show_coverage.issue-85461.txt | 0 .../expected_show_coverage.issue-93054.txt | 0 .../expected_show_coverage.lazy_boolean.txt | 0 .../expected_show_coverage.loop_break_value.txt | 0 .../expected_show_coverage.loops_branches.txt | 0 .../expected_show_coverage.match_or_pattern.txt | 0 .../expected_show_coverage.nested_loops.txt | 0 .../expected_show_coverage.no_cov_crate.txt | 0 .../expected_show_coverage.overflow.txt | 0 .../expected_show_coverage.panic_unwind.txt | 0 .../expected_show_coverage.partial_eq.txt | 0 .../expected_show_coverage.simple_loop.txt | 0 .../expected_show_coverage.simple_match.txt | 0 .../expected_show_coverage.tight_inf_loop.txt | 0 .../expected_show_coverage.try_error_result.txt | 0 .../expected_show_coverage.unused.txt | 0 .../expected_show_coverage.unused_mod.txt | 0 .../expected_show_coverage.uses_crate.txt | 0 .../expected_show_coverage.uses_inline_crate.txt | 0 .../expected_show_coverage.while.txt | 0 .../expected_show_coverage.while_early_ret.txt | 0 .../expected_show_coverage.yield.txt | 0 .../run-make/coverage-reports/normalize_paths.py | 0 .../run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt | 0 {src/test => tests}/run-make/coverage/abort.rs | 0 {src/test => tests}/run-make/coverage/assert.rs | 0 {src/test => tests}/run-make/coverage/async.rs | 0 {src/test => tests}/run-make/coverage/async2.rs | 0 {src/test => tests}/run-make/coverage/closure.rs | 0 .../run-make/coverage/closure_macro.rs | 0 .../run-make/coverage/closure_macro_async.rs | 0 .../run-make/coverage/compiletest-ignore-dir | 0 {src/test => tests}/run-make/coverage/conditions.rs | 0 {src/test => tests}/run-make/coverage/continue.rs | 0 .../run-make/coverage/coverage_tools.mk | 0 {src/test => tests}/run-make/coverage/dead_code.rs | 0 {src/test => tests}/run-make/coverage/doctest.rs | 0 {src/test => tests}/run-make/coverage/drop_trait.rs | 0 {src/test => tests}/run-make/coverage/generator.rs | 0 {src/test => tests}/run-make/coverage/generics.rs | 0 {src/test => tests}/run-make/coverage/if.rs | 0 {src/test => tests}/run-make/coverage/if_else.rs | 0 .../test => tests}/run-make/coverage/inline-dead.rs | 0 {src/test => tests}/run-make/coverage/inline.rs | 0 .../test => tests}/run-make/coverage/inner_items.rs | 0 .../test => tests}/run-make/coverage/issue-83601.rs | 0 .../test => tests}/run-make/coverage/issue-84561.rs | 0 .../test => tests}/run-make/coverage/issue-85461.rs | 0 .../test => tests}/run-make/coverage/issue-93054.rs | 0 .../run-make/coverage/lazy_boolean.rs | 0 .../run-make/coverage/lib/doctest_crate.rs | 0 .../coverage/lib/inline_always_with_dead_code.rs | 0 .../run-make/coverage/lib/unused_mod_helper.rs | 0 .../run-make/coverage/lib/used_crate.rs | 0 .../run-make/coverage/lib/used_inline_crate.rs | 0 .../run-make/coverage/loop_break_value.rs | 0 .../run-make/coverage/loops_branches.rs | 0 .../run-make/coverage/match_or_pattern.rs | 0 .../run-make/coverage/nested_loops.rs | 0 .../run-make/coverage/no_cov_crate.rs | 0 {src/test => tests}/run-make/coverage/overflow.rs | 0 .../run-make/coverage/panic_unwind.rs | 0 {src/test => tests}/run-make/coverage/partial_eq.rs | 0 .../test => tests}/run-make/coverage/simple_loop.rs | 0 .../run-make/coverage/simple_match.rs | 0 .../run-make/coverage/tight_inf_loop.rs | 0 .../run-make/coverage/try_error_result.rs | 0 {src/test => tests}/run-make/coverage/unused.rs | 0 {src/test => tests}/run-make/coverage/unused_mod.rs | 0 {src/test => tests}/run-make/coverage/uses_crate.rs | 0 .../run-make/coverage/uses_inline_crate.rs | 0 {src/test => tests}/run-make/coverage/while.rs | 0 .../run-make/coverage/while_early_ret.rs | 0 {src/test => tests}/run-make/coverage/yield.rs | 0 {src/test => tests}/run-make/dep-graph/Makefile | 0 {src/test => tests}/run-make/dep-graph/foo.rs | 0 .../run-make/dump-mono-stats/Makefile | 0 {src/test => tests}/run-make/dump-mono-stats/foo.rs | 0 .../run-make/emit-named-files/Makefile | 0 .../test => tests}/run-make/emit-named-files/foo.rs | 0 .../run-make/emit-path-unhashed/Makefile | 0 .../run-make/emit-path-unhashed/foo.rs | 0 .../run-make/emit-shared-files/Makefile | 0 {src/test => tests}/run-make/emit-shared-files/x.rs | 0 .../test => tests}/run-make/emit-shared-files/y.css | 0 .../test => tests}/run-make/emit-shared-files/z.css | 0 {src/test => tests}/run-make/env-dep-info/Makefile | 0 .../run-make/env-dep-info/macro_def.rs | 0 .../run-make/env-dep-info/macro_use.rs | 0 {src/test => tests}/run-make/env-dep-info/main.rs | 0 .../run-make/export-executable-symbols/Makefile | 0 .../run-make/export-executable-symbols/main.rs | 0 .../run-make/fmt-write-bloat/Makefile | 0 .../test => tests}/run-make/fmt-write-bloat/main.rs | 0 {src/test => tests}/run-make/git_clone_sha1.sh | 0 .../run-make/incr-foreign-head-span/Makefile | 0 .../run-make/incr-foreign-head-span/first_crate.rs | 0 .../run-make/incr-foreign-head-span/second_crate.rs | 0 .../run-make/incr-prev-body-beyond-eof/Makefile | 0 .../run-make/incr-prev-body-beyond-eof/a.rs | 0 .../run-make/incr-prev-body-beyond-eof/b.rs | 0 .../run-make/incremental-session-fail/Makefile | 0 .../run-make/incremental-session-fail/foo.rs | 0 {src/test => tests}/run-make/invalid-so/Makefile | 0 {src/test => tests}/run-make/invalid-so/bar.rs | 0 .../run-make/issue-10971-temps-dir/Makefile | 0 {src/test => tests}/run-make/issue-36710/Makefile | 0 {src/test => tests}/run-make/issue-36710/foo.cpp | 0 {src/test => tests}/run-make/issue-36710/foo.rs | 0 {src/test => tests}/run-make/issue-47384/Makefile | 0 {src/test => tests}/run-make/issue-47384/lib.rs | 0 {src/test => tests}/run-make/issue-47384/linker.ld | 0 {src/test => tests}/run-make/issue-47384/main.rs | 0 {src/test => tests}/run-make/issue-71519/Makefile | 0 {src/test => tests}/run-make/issue-71519/main.rs | 0 .../issue-83112-incr-test-moved-file/Makefile | 0 .../issue-83112-incr-test-moved-file/main.rs | 0 .../run-make/issue-85019-moved-src-dir/Makefile | 0 .../run-make/issue-85019-moved-src-dir/main.rs | 0 .../run-make/issue-85019-moved-src-dir/my_lib.rs | 0 .../run-make/issue-85401-static-mir/Makefile | 0 .../run-make/issue-85401-static-mir/bar.rs | 0 .../run-make/issue-85401-static-mir/baz.rs | 0 .../run-make/issue-85401-static-mir/foo.rs | 0 {src/test => tests}/run-make/issue-85441/Makefile | 0 {src/test => tests}/run-make/issue-85441/empty.rs | 0 .../run-make/issue-88756-default-output/Makefile | 0 .../run-make/issue-88756-default-output/README.md | 0 .../output-default.stdout | 0 .../run-make/issue-88756-default-output/x.rs | 0 {src/test => tests}/run-make/issue-96498/Makefile | 0 {src/test => tests}/run-make/issue-96498/foo.rs | 0 .../run-make/libtest-thread-limit/Makefile | 0 .../run-make/libtest-thread-limit/test.rs | 0 {src/test => tests}/run-make/llvm-outputs/Makefile | 0 .../run-make/macos-deployment-target/Makefile | 0 .../with_deployment_target.rs | 0 .../run-make/macos-fat-archive/Makefile | 0 .../run-make/macos-fat-archive/lib.rs | 0 .../run-make/macos-fat-archive/native-library.c | 0 .../run-make/native-link-modifier-bundle/Makefile | 0 .../run-make/native-link-modifier-bundle/bundled.rs | 0 .../native-link-modifier-bundle/cdylib-bundled.rs | 0 .../cdylib-non-bundled.rs | 0 .../native-link-modifier-bundle/native-staticlib.c | 0 .../native-link-modifier-bundle/non-bundled.rs | 0 .../native-link-modifier-verbatim-linker/Makefile | 0 .../local_native_dep.rs | 0 .../native-link-modifier-verbatim-linker/main.rs | 0 .../native-link-modifier-verbatim-rustc/Makefile | 0 .../native-link-modifier-verbatim-rustc/rust_dep.rs | 0 .../upstream_native_dep.rs | 0 .../native-link-modifier-whole-archive/Makefile | 0 .../c_static_lib_with_constructor.cpp | 0 .../directly_linked.rs | 0 .../directly_linked_test_minus_whole_archive.rs | 0 .../directly_linked_test_plus_whole_archive.rs | 0 .../indirectly_linked.rs | 0 .../indirectly_linked_via_attr.rs | 0 .../native_lib_in_src.rs | 0 .../rlib_with_cmdline_native_lib.rs | 0 .../run-make/pass-linker-flags-from-dep/Makefile | 0 .../run-make/pass-linker-flags-from-dep/main.rs | 0 .../pass-linker-flags-from-dep/native_dep_1.rs | 0 .../pass-linker-flags-from-dep/native_dep_2.rs | 0 .../run-make/pass-linker-flags-from-dep/rust_dep.rs | 0 .../run-make/pass-linker-flags/Makefile | 0 .../test => tests}/run-make/pass-linker-flags/rs.rs | 0 .../raw-dylib-alt-calling-convention/Makefile | 0 .../raw-dylib-alt-calling-convention/driver.rs | 0 .../raw-dylib-alt-calling-convention/extern.c | 0 .../raw-dylib-alt-calling-convention/lib.rs | 0 .../output.msvc.txt | 0 .../raw-dylib-alt-calling-convention/output.txt | 0 {src/test => tests}/run-make/raw-dylib-c/Makefile | 0 {src/test => tests}/run-make/raw-dylib-c/driver.rs | 0 {src/test => tests}/run-make/raw-dylib-c/extern_1.c | 0 {src/test => tests}/run-make/raw-dylib-c/extern_2.c | 0 {src/test => tests}/run-make/raw-dylib-c/lib.rs | 0 {src/test => tests}/run-make/raw-dylib-c/output.txt | 0 .../run-make/raw-dylib-import-name-type/Makefile | 0 .../run-make/raw-dylib-import-name-type/driver.rs | 0 .../run-make/raw-dylib-import-name-type/extern.c | 0 .../raw-dylib-import-name-type/extern.gnu.def | 0 .../raw-dylib-import-name-type/extern.msvc.def | 0 .../run-make/raw-dylib-import-name-type/output.txt | 0 .../run-make/raw-dylib-inline-cross-dylib/Makefile | 0 .../run-make/raw-dylib-inline-cross-dylib/driver.rs | 0 .../raw-dylib-inline-cross-dylib/extern_1.c | 0 .../raw-dylib-inline-cross-dylib/extern_2.c | 0 .../run-make/raw-dylib-inline-cross-dylib/lib.rs | 0 .../raw-dylib-inline-cross-dylib/lib_wrapper.rs | 0 .../raw-dylib-inline-cross-dylib/output.txt | 0 .../run-make/raw-dylib-link-ordinal/Makefile | 0 .../run-make/raw-dylib-link-ordinal/driver.rs | 0 .../run-make/raw-dylib-link-ordinal/exporter.c | 0 .../run-make/raw-dylib-link-ordinal/exporter.def | 0 .../run-make/raw-dylib-link-ordinal/lib.rs | 0 .../run-make/raw-dylib-link-ordinal/output.txt | 0 .../run-make/raw-dylib-stdcall-ordinal/Makefile | 0 .../run-make/raw-dylib-stdcall-ordinal/driver.rs | 0 .../raw-dylib-stdcall-ordinal/expected_output.txt | 0 .../raw-dylib-stdcall-ordinal/exporter-gnu.def | 0 .../raw-dylib-stdcall-ordinal/exporter-msvc.def | 0 .../run-make/raw-dylib-stdcall-ordinal/exporter.c | 0 .../run-make/raw-dylib-stdcall-ordinal/lib.rs | 0 .../run-make/remap-path-prefix-dwarf/Makefile | 0 .../run-make/remap-path-prefix-dwarf/src/quux.rs | 0 {src/test => tests}/run-make/repr128-dwarf/Makefile | 0 {src/test => tests}/run-make/repr128-dwarf/lib.rs | 0 .../rlib-format-packed-bundled-libs-2/Makefile | 0 .../rlib-format-packed-bundled-libs-2/main.rs | 0 .../rlib-format-packed-bundled-libs-2/native_dep.rs | 0 .../rlib-format-packed-bundled-libs-2/rust_dep.rs | 0 .../rlib-format-packed-bundled-libs/Makefile | 0 .../rlib-format-packed-bundled-libs/main.rs | 0 .../rlib-format-packed-bundled-libs/native_dep_1.c | 0 .../rlib-format-packed-bundled-libs/native_dep_2.c | 0 .../rlib-format-packed-bundled-libs/native_dep_3.c | 0 .../rust_dep_local.rs | 0 .../rlib-format-packed-bundled-libs/rust_dep_up.rs | 0 .../run-make/rustc-macro-dep-files/Makefile | 0 .../run-make/rustc-macro-dep-files/bar.rs | 0 .../run-make/rustc-macro-dep-files/foo.rs | 0 .../rustdoc-scrape-examples-invalid-expr/Makefile | 0 .../examples/ex.rs | 0 .../rustdoc-scrape-examples-invalid-expr/src/lib.rs | 0 .../rustdoc-scrape-examples-multiple/Makefile | 0 .../rustdoc-scrape-examples-multiple/examples/ex.rs | 0 .../examples/ex2.rs | 0 .../rustdoc-scrape-examples-multiple/scrape.mk | 0 .../rustdoc-scrape-examples-multiple/src/lib.rs | 0 .../rustdoc-scrape-examples-ordering/Makefile | 0 .../examples/ex1.rs | 0 .../examples/ex2.rs | 0 .../rustdoc-scrape-examples-ordering/src/lib.rs | 0 .../run-make/rustdoc-scrape-examples-remap/Makefile | 0 .../rustdoc-scrape-examples-remap/examples/ex.rs | 0 .../run-make/rustdoc-scrape-examples-remap/src/a.rs | 0 .../rustdoc-scrape-examples-remap/src/lib.rs | 0 .../run-make/rustdoc-scrape-examples-test/Makefile | 0 .../rustdoc-scrape-examples-test/examples/ex.rs | 0 .../rustdoc-scrape-examples-test/src/lib.rs | 0 .../rustdoc-scrape-examples-whitespace/Makefile | 0 .../examples/ex.rs | 0 .../rustdoc-scrape-examples-whitespace/src/lib.rs | 0 .../run-make/rustdoc-verify-output-files/Makefile | 0 .../run-make/rustdoc-verify-output-files/src/lib.rs | 0 .../run-make/rustdoc-with-out-dir-option/Makefile | 0 .../run-make/rustdoc-with-out-dir-option/src/lib.rs | 0 .../run-make/rustdoc-with-output-option/Makefile | 0 .../run-make/rustdoc-with-output-option/src/lib.rs | 0 .../rustdoc-with-short-out-dir-option/Makefile | 0 .../rustdoc-with-short-out-dir-option/src/lib.rs | 0 {src/test => tests}/run-make/static-pie/Makefile | 0 .../run-make/static-pie/check_clang_version.sh | 0 .../run-make/static-pie/check_gcc_version.sh | 0 .../test => tests}/run-make/static-pie/test-aslr.rs | 0 {src/test => tests}/run-make/test-benches/Makefile | 0 .../run-make/test-benches/smokebench.rs | 0 .../run-make/thumb-none-cortex-m/Makefile | 0 .../run-make/thumb-none-qemu/Makefile | 0 .../run-make/thumb-none-qemu/example/.cargo/config | 0 .../run-make/thumb-none-qemu/example/Cargo.lock | 0 .../run-make/thumb-none-qemu/example/Cargo.toml | 0 .../run-make/thumb-none-qemu/example/memory.x | 0 .../run-make/thumb-none-qemu/example/src/main.rs | 0 .../run-make/thumb-none-qemu/script.sh | 0 .../run-make/track-path-dep-info/Makefile | 0 .../run-make/track-path-dep-info/emojis.txt | 0 .../run-make/track-path-dep-info/macro_def.rs | 0 .../run-make/track-path-dep-info/macro_use.rs | 0 .../run-make/track-pgo-dep-info/Makefile | 0 .../run-make/track-pgo-dep-info/main.rs | 0 {src/test => tests}/run-make/translation/Makefile | 0 {src/test => tests}/run-make/translation/broken.ftl | 0 .../test => tests}/run-make/translation/missing.ftl | 0 {src/test => tests}/run-make/translation/test.rs | 0 .../test => tests}/run-make/translation/working.ftl | 0 .../run-make/unstable-flag-required/Makefile | 0 .../run-make/unstable-flag-required/README.md | 0 .../output-format-json.stderr | 0 .../run-make/unstable-flag-required/x.rs | 0 .../run-make/valid-print-requests/Makefile | 0 .../valid-print-requests.stderr | 0 {src/test => tests}/run-make/wasm-abi/Makefile | 0 {src/test => tests}/run-make/wasm-abi/foo.js | 0 {src/test => tests}/run-make/wasm-abi/foo.rs | 0 .../run-make/wasm-custom-section/Makefile | 0 .../run-make/wasm-custom-section/bar.rs | 0 .../run-make/wasm-custom-section/foo.js | 0 .../run-make/wasm-custom-section/foo.rs | 0 .../run-make/wasm-custom-sections-opt/Makefile | 0 .../run-make/wasm-custom-sections-opt/foo.js | 0 .../run-make/wasm-custom-sections-opt/foo.rs | 0 .../run-make/wasm-export-all-symbols/Makefile | 0 .../run-make/wasm-export-all-symbols/bar.rs | 0 .../run-make/wasm-export-all-symbols/foo.rs | 0 .../run-make/wasm-export-all-symbols/main.rs | 0 .../run-make/wasm-export-all-symbols/verify.js | 0 .../run-make/wasm-import-module/Makefile | 0 .../run-make/wasm-import-module/bar.rs | 0 .../run-make/wasm-import-module/foo.js | 0 .../run-make/wasm-import-module/foo.rs | 0 .../run-make/wasm-panic-small/Makefile | 0 .../test => tests}/run-make/wasm-panic-small/foo.rs | 0 .../run-make/wasm-spurious-import/Makefile | 0 .../run-make/wasm-spurious-import/main.rs | 0 .../run-make/wasm-spurious-import/verify.js | 0 .../run-make/wasm-stringify-ints-small/Makefile | 0 .../run-make/wasm-stringify-ints-small/foo.rs | 0 .../run-make/wasm-symbols-different-module/Makefile | 0 .../run-make/wasm-symbols-different-module/bar.rs | 0 .../run-make/wasm-symbols-different-module/baz.rs | 0 .../run-make/wasm-symbols-different-module/foo.rs | 0 .../run-make/wasm-symbols-different-module/log.rs | 0 .../wasm-symbols-different-module/verify-imports.js | 0 .../run-make/wasm-symbols-not-exported/Makefile | 0 .../run-make/wasm-symbols-not-exported/bar.rs | 0 .../run-make/wasm-symbols-not-exported/foo.rs | 0 .../verify-exported-symbols.js | 0 .../run-make/wasm-symbols-not-imported/Makefile | 0 .../run-make/wasm-symbols-not-imported/foo.rs | 0 .../wasm-symbols-not-imported/verify-no-imports.js | 0 .../x86_64-fortanix-unknown-sgx-lvi/Makefile | 0 .../cc_plus_one_asm.checks | 0 .../cc_plus_one_c.checks | 0 .../cc_plus_one_c_asm.checks | 0 .../cc_plus_one_cxx.checks | 0 .../cc_plus_one_cxx_asm.checks | 0 .../cmake_plus_one_asm.checks | 0 .../cmake_plus_one_c.checks | 0 .../cmake_plus_one_c_asm.checks | 0 .../cmake_plus_one_c_global_asm.checks | 0 .../cmake_plus_one_cxx.checks | 0 .../cmake_plus_one_cxx_asm.checks | 0 .../cmake_plus_one_cxx_global_asm.checks | 0 .../enclave/Cargo.toml | 0 .../enclave/build.rs | 0 .../x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c | 0 .../enclave/foo_asm.s | 0 .../enclave/foo_cxx.cpp | 0 .../enclave/libcmake_foo/CMakeLists.txt | 0 .../enclave/libcmake_foo/src/foo.c | 0 .../enclave/libcmake_foo/src/foo_asm.s | 0 .../enclave/libcmake_foo/src/foo_cxx.cpp | 0 .../enclave/src/main.rs | 0 .../x86_64-fortanix-unknown-sgx-lvi/jumpto.checks | 0 .../x86_64-fortanix-unknown-sgx-lvi/print.checks | 0 .../rust_plus_one_global_asm.checks | 0 .../x86_64-fortanix-unknown-sgx-lvi/script.sh | 0 .../unw_getcontext.checks | 0 .../run-pass-valgrind/cast-enum-with-dtor.rs | 0 .../run-pass-valgrind/cleanup-auto-borrow-obj.rs | 0 .../run-pass-valgrind/cleanup-stdin.rs | 0 .../run-pass-valgrind/coerce-match-calls.rs | 0 .../run-pass-valgrind/coerce-match.rs | 0 .../run-pass-valgrind/down-with-thread-dtors.rs | 0 {src/test => tests}/run-pass-valgrind/dst-dtor-1.rs | 0 {src/test => tests}/run-pass-valgrind/dst-dtor-2.rs | 0 {src/test => tests}/run-pass-valgrind/dst-dtor-3.rs | 0 {src/test => tests}/run-pass-valgrind/dst-dtor-4.rs | 0 .../run-pass-valgrind/exit-flushes.rs | 0 .../test => tests}/run-pass-valgrind/issue-44800.rs | 0 .../run-pass-valgrind/osx-frameworks.rs | 0 .../by-value-trait-objects-rust-call.rs | 0 .../by-value-trait-objects-rust-call2.rs | 0 .../unsized-locals/by-value-trait-objects.rs | 0 .../long-live-the-unsized-temporary.rs | 0 {src/test => tests}/rustdoc-gui/README.md | 0 .../rustdoc-gui/anchor-navigable.goml | 0 {src/test => tests}/rustdoc-gui/anchors.goml | 0 .../auto-hide-trait-implementations.goml | 0 {src/test => tests}/rustdoc-gui/basic-code.goml | 0 .../rustdoc-gui/check-code-blocks-margin.goml | 0 .../rustdoc-gui/check-stab-in-docblock.goml | 0 .../rustdoc-gui/check_info_sign_position.goml | 0 .../rustdoc-gui/code-blocks-overflow.goml | 0 {src/test => tests}/rustdoc-gui/code-color.goml | 0 .../rustdoc-gui/code-sidebar-toggle.goml | 0 {src/test => tests}/rustdoc-gui/code-tags.goml | 0 {src/test => tests}/rustdoc-gui/codeblock-sub.goml | 0 .../rustdoc-gui/codeblock-tooltip.goml | 0 {src/test => tests}/rustdoc-gui/cursor.goml | 0 .../rustdoc-gui/default-settings.goml | 0 .../rustdoc-gui/docblock-big-code-mobile.goml | 0 .../docblock-code-block-line-number.goml | 0 .../rustdoc-gui/docblock-details.goml | 0 .../rustdoc-gui/docblock-table-overflow.goml | 0 {src/test => tests}/rustdoc-gui/docblock-table.goml | 0 .../rustdoc-gui/duplicate-macro-reexport.goml | 0 {src/test => tests}/rustdoc-gui/enum-variants.goml | 0 {src/test => tests}/rustdoc-gui/escape-key.goml | 0 {src/test => tests}/rustdoc-gui/font-weight.goml | 0 .../rustdoc-gui/hash-item-expansion.goml | 0 {src/test => tests}/rustdoc-gui/headers-color.goml | 0 {src/test => tests}/rustdoc-gui/headings.goml | 0 {src/test => tests}/rustdoc-gui/help-page.goml | 0 .../rustdoc-gui/highlight-colors.goml | 0 .../rustdoc-gui/huge-collection-of-constants.goml | 0 {src/test => tests}/rustdoc-gui/huge-logo.goml | 0 .../rustdoc-gui/impl-default-expansion.goml | 0 {src/test => tests}/rustdoc-gui/impl-doc.goml | 0 {src/test => tests}/rustdoc-gui/implementors.goml | 0 .../rustdoc-gui/item-decl-colors.goml | 0 .../rustdoc-gui/item-info-alignment.goml | 0 .../rustdoc-gui/item-info-overflow.goml | 0 {src/test => tests}/rustdoc-gui/item-info.goml | 0 .../rustdoc-gui/item-summary-table.goml | 0 .../rustdoc-gui/javascript-disabled.goml | 0 .../rustdoc-gui/jump-to-def-background.goml | 0 .../rustdoc-gui/label-next-to-symbol.goml | 0 {src/test => tests}/rustdoc-gui/links-color.goml | 0 .../test => tests}/rustdoc-gui/list_code_block.goml | 0 {src/test => tests}/rustdoc-gui/method-margins.goml | 0 {src/test => tests}/rustdoc-gui/mobile.goml | 0 .../rustdoc-gui/module-items-font.goml | 0 {src/test => tests}/rustdoc-gui/no-docblock.goml | 0 {src/test => tests}/rustdoc-gui/notable-trait.goml | 0 .../rustdoc-gui/overflow-tooltip-information.goml | 0 {src/test => tests}/rustdoc-gui/pocket-menu.goml | 0 {src/test => tests}/rustdoc-gui/run-on-hover.goml | 0 {src/test => tests}/rustdoc-gui/rust-logo.goml | 0 .../rustdoc-gui/scrape-examples-button-focus.goml | 0 .../rustdoc-gui/scrape-examples-color.goml | 0 .../rustdoc-gui/scrape-examples-fonts.goml | 0 .../rustdoc-gui/scrape-examples-layout.goml | 0 .../rustdoc-gui/scrape-examples-toggle.goml | 0 {src/test => tests}/rustdoc-gui/search-filter.goml | 0 .../rustdoc-gui/search-form-elements.goml | 0 .../rustdoc-gui/search-input-mobile.goml | 0 .../test => tests}/rustdoc-gui/search-keyboard.goml | 0 .../rustdoc-gui/search-no-result.goml | 0 .../test => tests}/rustdoc-gui/search-reexport.goml | 0 .../rustdoc-gui/search-result-color.goml | 0 .../rustdoc-gui/search-result-description.goml | 0 .../rustdoc-gui/search-result-display.goml | 0 .../rustdoc-gui/search-result-go-to-first.goml | 0 .../rustdoc-gui/search-result-keyword.goml | 0 .../rustdoc-gui/search-tab-change-title-fn-sig.goml | 0 {src/test => tests}/rustdoc-gui/search-tab.goml | 0 {src/test => tests}/rustdoc-gui/settings.goml | 0 {src/test => tests}/rustdoc-gui/shortcuts.goml | 0 .../rustdoc-gui/sidebar-links-color.goml | 0 .../rustdoc-gui/sidebar-macro-reexport.goml | 0 .../rustdoc-gui/sidebar-mobile-scroll.goml | 0 {src/test => tests}/rustdoc-gui/sidebar-mobile.goml | 0 .../rustdoc-gui/sidebar-source-code-display.goml | 0 .../rustdoc-gui/sidebar-source-code.goml | 0 {src/test => tests}/rustdoc-gui/sidebar.goml | 0 .../rustdoc-gui/source-anchor-scroll.goml | 0 .../rustdoc-gui/source-code-page.goml | 0 {src/test => tests}/rustdoc-gui/src-font-size.goml | 0 .../rustdoc-gui/src/huge_logo/Cargo.lock | 0 .../rustdoc-gui/src/huge_logo/Cargo.toml | 0 .../rustdoc-gui/src/huge_logo/src/lib.rs | 0 {src/test => tests}/rustdoc-gui/src/lib2/Cargo.lock | 0 {src/test => tests}/rustdoc-gui/src/lib2/Cargo.toml | 0 .../rustdoc-gui/src/lib2/another_folder/mod.rs | 0 .../src/lib2/another_folder/sub_mod/mod.rs | 0 .../rustdoc-gui/src/lib2/another_mod/mod.rs | 0 .../rustdoc-gui/src/lib2/http/Cargo.toml | 0 .../test => tests}/rustdoc-gui/src/lib2/http/lib.rs | 0 .../rustdoc-gui/src/lib2/implementors/Cargo.lock | 0 .../rustdoc-gui/src/lib2/implementors/Cargo.toml | 0 .../rustdoc-gui/src/lib2/implementors/lib.rs | 0 {src/test => tests}/rustdoc-gui/src/lib2/lib.rs | 0 .../rustdoc-gui/src/link_to_definition/Cargo.lock | 0 .../rustdoc-gui/src/link_to_definition/Cargo.toml | 0 .../rustdoc-gui/src/link_to_definition/lib.rs | 0 .../rustdoc-gui/src/scrape_examples/Cargo.lock | 0 .../rustdoc-gui/src/scrape_examples/Cargo.toml | 0 .../src/scrape_examples/examples/check-many-1.rs | 0 .../src/scrape_examples/examples/check-many-2.rs | 0 .../src/scrape_examples/examples/check-many-3.rs | 0 .../src/scrape_examples/examples/check-many-4.rs | 0 .../src/scrape_examples/examples/check-many-5.rs | 0 .../src/scrape_examples/examples/check-many-6.rs | 0 .../src/scrape_examples/examples/check-many-7.rs | 0 .../src/scrape_examples/examples/check.rs | 0 .../rustdoc-gui/src/scrape_examples/src/lib.rs | 0 .../rustdoc-gui/src/settings/.cargo/config.toml | 0 .../rustdoc-gui/src/settings/Cargo.lock | 0 .../rustdoc-gui/src/settings/Cargo.toml | 0 {src/test => tests}/rustdoc-gui/src/settings/lib.rs | 0 .../rustdoc-gui/src/staged_api/Cargo.lock | 0 .../rustdoc-gui/src/staged_api/Cargo.toml | 0 .../rustdoc-gui/src/staged_api/lib.rs | 0 .../rustdoc-gui/src/test_docs/Cargo.lock | 0 .../rustdoc-gui/src/test_docs/Cargo.toml | 0 .../rustdoc-gui/src/test_docs/build.rs | 0 .../test => tests}/rustdoc-gui/src/test_docs/lib.rs | 0 .../rustdoc-gui/src/test_docs/macros.rs | 0 {src/test => tests}/rustdoc-gui/stab-badge.goml | 0 {src/test => tests}/rustdoc-gui/struct-fields.goml | 0 {src/test => tests}/rustdoc-gui/target.goml | 0 {src/test => tests}/rustdoc-gui/theme-change.goml | 0 .../rustdoc-gui/theme-in-history.goml | 0 .../rustdoc-gui/toggle-click-deadspace.goml | 0 .../rustdoc-gui/toggle-docs-mobile.goml | 0 {src/test => tests}/rustdoc-gui/toggle-docs.goml | 0 .../rustdoc-gui/toggle-implementors.goml | 0 .../rustdoc-gui/toggled-open-implementations.goml | 0 .../rustdoc-gui/trait-sidebar-item-order.goml | 0 .../rustdoc-gui/type-declation-overflow.goml | 0 {src/test => tests}/rustdoc-gui/unsafe-fn.goml | 0 .../rustdoc-gui/where-whitespace.goml | 0 {src/test => tests}/rustdoc-js-std/alias-1.js | 0 {src/test => tests}/rustdoc-js-std/alias-2.js | 0 {src/test => tests}/rustdoc-js-std/alias-3.js | 0 {src/test => tests}/rustdoc-js-std/alias-4.js | 0 {src/test => tests}/rustdoc-js-std/alias.js | 0 {src/test => tests}/rustdoc-js-std/asrawfd.js | 0 {src/test => tests}/rustdoc-js-std/basic.js | 0 {src/test => tests}/rustdoc-js-std/deduplication.js | 0 {src/test => tests}/rustdoc-js-std/enum-option.js | 0 {src/test => tests}/rustdoc-js-std/filter-crate.js | 0 {src/test => tests}/rustdoc-js-std/fn-forget.js | 0 {src/test => tests}/rustdoc-js-std/from_u.js | 0 {src/test => tests}/rustdoc-js-std/keyword.js | 0 {src/test => tests}/rustdoc-js-std/macro-check.js | 0 {src/test => tests}/rustdoc-js-std/macro-print.js | 0 {src/test => tests}/rustdoc-js-std/never.js | 0 {src/test => tests}/rustdoc-js-std/parser-errors.js | 0 {src/test => tests}/rustdoc-js-std/parser-filter.js | 0 .../rustdoc-js-std/parser-generics.js | 0 {src/test => tests}/rustdoc-js-std/parser-ident.js | 0 .../test => tests}/rustdoc-js-std/parser-literal.js | 0 {src/test => tests}/rustdoc-js-std/parser-paths.js | 0 {src/test => tests}/rustdoc-js-std/parser-quote.js | 0 .../rustdoc-js-std/parser-returned.js | 0 .../rustdoc-js-std/parser-separators.js | 0 .../rustdoc-js-std/parser-weird-queries.js | 0 {src/test => tests}/rustdoc-js-std/path-ordering.js | 0 {src/test => tests}/rustdoc-js-std/primitive.js | 0 {src/test => tests}/rustdoc-js-std/quoted.js | 0 .../rustdoc-js-std/return-specific-literal.js | 0 .../rustdoc-js-std/return-specific.js | 0 {src/test => tests}/rustdoc-js-std/should-fail.js | 0 .../test => tests}/rustdoc-js-std/string-from_ut.js | 0 {src/test => tests}/rustdoc-js-std/struct-vec.js | 0 {src/test => tests}/rustdoc-js-std/typed-query.js | 0 {src/test => tests}/rustdoc-js-std/vec-new.js | 0 {src/test => tests}/rustdoc-js/basic.js | 0 {src/test => tests}/rustdoc-js/basic.rs | 0 .../rustdoc-js/doc-alias-filter-out.js | 0 .../rustdoc-js/doc-alias-filter-out.rs | 0 {src/test => tests}/rustdoc-js/doc-alias-filter.js | 0 {src/test => tests}/rustdoc-js/doc-alias-filter.rs | 0 .../rustdoc-js/doc-alias-whitespace.js | 0 .../rustdoc-js/doc-alias-whitespace.rs | 0 {src/test => tests}/rustdoc-js/doc-alias.js | 0 {src/test => tests}/rustdoc-js/doc-alias.rs | 0 {src/test => tests}/rustdoc-js/exact-match.js | 0 {src/test => tests}/rustdoc-js/exact-match.rs | 0 {src/test => tests}/rustdoc-js/foreign-type-path.js | 0 {src/test => tests}/rustdoc-js/foreign-type-path.rs | 0 {src/test => tests}/rustdoc-js/generics-impl.js | 0 {src/test => tests}/rustdoc-js/generics-impl.rs | 0 .../rustdoc-js/generics-multi-trait.js | 0 .../rustdoc-js/generics-multi-trait.rs | 0 {src/test => tests}/rustdoc-js/generics-trait.js | 0 {src/test => tests}/rustdoc-js/generics-trait.rs | 0 {src/test => tests}/rustdoc-js/generics.js | 0 {src/test => tests}/rustdoc-js/generics.rs | 0 {src/test => tests}/rustdoc-js/impl-trait.js | 0 {src/test => tests}/rustdoc-js/impl-trait.rs | 0 {src/test => tests}/rustdoc-js/module-substring.js | 0 {src/test => tests}/rustdoc-js/module-substring.rs | 0 {src/test => tests}/rustdoc-js/path-ordering.js | 0 {src/test => tests}/rustdoc-js/path-ordering.rs | 0 {src/test => tests}/rustdoc-js/primitive.js | 0 {src/test => tests}/rustdoc-js/primitive.rs | 0 {src/test => tests}/rustdoc-js/prototype.js | 0 {src/test => tests}/rustdoc-js/prototype.rs | 0 {src/test => tests}/rustdoc-js/raw-pointer.js | 0 {src/test => tests}/rustdoc-js/raw-pointer.rs | 0 {src/test => tests}/rustdoc-js/reexport.js | 0 {src/test => tests}/rustdoc-js/reexport.rs | 0 .../test => tests}/rustdoc-js/search-short-types.js | 0 .../test => tests}/rustdoc-js/search-short-types.rs | 0 .../rustdoc-js/struct-like-variant.js | 0 .../rustdoc-js/struct-like-variant.rs | 0 {src/test => tests}/rustdoc-js/substring.js | 0 {src/test => tests}/rustdoc-js/substring.rs | 0 {src/test => tests}/rustdoc-js/summaries.js | 0 {src/test => tests}/rustdoc-js/summaries.rs | 0 {src/test => tests}/rustdoc-json/assoc_items.rs | 0 {src/test => tests}/rustdoc-json/assoc_type.rs | 0 {src/test => tests}/rustdoc-json/blanket_impls.rs | 0 .../rustdoc-json/doc_hidden_failure.rs | 0 .../rustdoc-json/enums/auxiliary/color.rs | 0 .../rustdoc-json/enums/discriminant/basic.rs | 0 .../rustdoc-json/enums/discriminant/expr.rs | 0 .../rustdoc-json/enums/discriminant/limits.rs | 0 .../enums/discriminant/num_underscore_and_suffix.rs | 0 .../discriminant/only_some_have_discriminant.rs | 0 .../rustdoc-json/enums/discriminant/struct.rs | 0 .../rustdoc-json/enums/discriminant/tuple.rs | 0 .../enums/doc_link_to_foreign_variant.rs | 0 .../rustdoc-json/enums/field_hidden.rs | 0 {src/test => tests}/rustdoc-json/enums/kind.rs | 0 .../rustdoc-json/enums/struct_field_hidden.rs | 0 .../rustdoc-json/enums/tuple_fields_hidden.rs | 0 {src/test => tests}/rustdoc-json/enums/use_glob.rs | 0 .../rustdoc-json/enums/use_variant.rs | 0 .../rustdoc-json/enums/use_variant_foreign.rs | 0 .../rustdoc-json/enums/variant_struct.rs | 0 .../rustdoc-json/enums/variant_tuple_struct.rs | 0 {src/test => tests}/rustdoc-json/fn_pointer/abi.rs | 0 .../rustdoc-json/fn_pointer/generics.rs | 0 .../rustdoc-json/fn_pointer/qualifiers.rs | 0 {src/test => tests}/rustdoc-json/fns/abi.rs | 0 .../test => tests}/rustdoc-json/fns/async_return.rs | 0 .../test => tests}/rustdoc-json/fns/generic_args.rs | 0 .../rustdoc-json/fns/generic_returns.rs | 0 {src/test => tests}/rustdoc-json/fns/generics.rs | 0 {src/test => tests}/rustdoc-json/fns/pattern_arg.rs | 0 {src/test => tests}/rustdoc-json/fns/qualifiers.rs | 0 .../rustdoc-json/fns/return_type_alias.rs | 0 .../rustdoc-json/generic-associated-types/gats.rs | 0 {src/test => tests}/rustdoc-json/generic_impl.rs | 0 {src/test => tests}/rustdoc-json/glob_import.rs | 0 {src/test => tests}/rustdoc-json/impls/auto.rs | 0 .../rustdoc-json/impls/auxiliary/foreign_struct.rs | 0 .../rustdoc-json/impls/auxiliary/foreign_trait.rs | 0 .../rustdoc-json/impls/blanket_with_local.rs | 0 .../rustdoc-json/impls/foreign_for_local.rs | 0 .../rustdoc-json/impls/import_from_private.rs | 0 .../rustdoc-json/impls/local_for_foreign.rs | 0 .../rustdoc-json/impls/local_for_local.rs | 0 .../rustdoc-json/impls/local_for_local_primitive.rs | 0 .../rustdoc-json/impls/local_for_primitive.rs | 0 .../auxiliary/enum_variant_in_trait_method.rs | 0 .../rustdoc-json/intra-doc-links/foreign_variant.rs | 0 .../rustdoc-json/intra-doc-links/non_page.rs | 0 .../rustdoc-json/intra-doc-links/user_written.rs | 0 {src/test => tests}/rustdoc-json/keyword.rs | 0 .../test => tests}/rustdoc-json/lifetime/longest.rs | 0 .../rustdoc-json/lifetime/outlives.rs | 0 {src/test => tests}/rustdoc-json/methods/abi.rs | 0 .../rustdoc-json/methods/qualifiers.rs | 0 {src/test => tests}/rustdoc-json/nested.rs | 0 {src/test => tests}/rustdoc-json/output_generics.rs | 0 .../rustdoc-json/primitives/local_primitive.rs | 0 .../rustdoc-json/primitives/primitive_impls.rs | 0 .../primitives/primitive_overloading.rs | 0 .../rustdoc-json/primitives/primitive_type.rs | 0 .../rustdoc-json/primitives/use_primitive.rs | 0 .../rustdoc-json/reexport/auxiliary/pub-struct.rs | 0 .../reexport/auxiliary/trait_with_docs.rs | 0 .../reexport/export_extern_crate_as_self.rs | 0 .../rustdoc-json/reexport/glob_collision.rs | 0 .../rustdoc-json/reexport/glob_empty_mod.rs | 0 .../rustdoc-json/reexport/glob_extern.rs | 0 .../rustdoc-json/reexport/glob_private.rs | 0 .../rustdoc-json/reexport/in_root_and_mod.rs | 0 .../rustdoc-json/reexport/in_root_and_mod_pub.rs | 0 {src/test => tests}/rustdoc-json/reexport/macro.rs | 0 .../rustdoc-json/reexport/mod_not_included.rs | 0 .../reexport/private_twice_one_inline.rs | 0 .../rustdoc-json/reexport/private_two_names.rs | 0 .../rustdoc-json/reexport/pub_use_doc_hidden.rs | 0 .../reexport/reexport_method_from_private_module.rs | 0 .../rustdoc-json/reexport/rename_private.rs | 0 .../rustdoc-json/reexport/rename_public.rs | 0 .../reexport/same_type_reexported_more_than_once.rs | 0 .../rustdoc-json/reexport/simple_private.rs | 0 .../rustdoc-json/reexport/simple_public.rs | 0 .../reexport/synthesize_trait_with_docs.rs | 0 {src/test => tests}/rustdoc-json/return_private.rs | 0 .../test => tests}/rustdoc-json/stripped_modules.rs | 0 .../rustdoc-json/structs/plain_all_pub.rs | 0 .../rustdoc-json/structs/plain_doc_hidden.rs | 0 .../rustdoc-json/structs/plain_empty.rs | 0 .../rustdoc-json/structs/plain_pub_priv.rs | 0 {src/test => tests}/rustdoc-json/structs/tuple.rs | 0 .../rustdoc-json/structs/tuple_empty.rs | 0 .../rustdoc-json/structs/tuple_pub_priv.rs | 0 {src/test => tests}/rustdoc-json/structs/unit.rs | 0 .../rustdoc-json/structs/with_generics.rs | 0 .../rustdoc-json/structs/with_primitives.rs | 0 {src/test => tests}/rustdoc-json/traits/has_body.rs | 0 .../rustdoc-json/traits/implementors.rs | 0 .../rustdoc-json/traits/supertrait.rs | 0 .../rustdoc-json/traits/trait_alias.rs | 0 .../rustdoc-json/traits/uses_extern_trait.rs | 0 {src/test => tests}/rustdoc-json/type/dyn.rs | 0 {src/test => tests}/rustdoc-json/type/extern.rs | 0 .../test => tests}/rustdoc-json/type/fn_lifetime.rs | 0 .../rustdoc-json/type/generic_default.rs | 0 {src/test => tests}/rustdoc-json/type/hrtb.rs | 0 {src/test => tests}/rustdoc-json/unions/impl.rs | 0 {src/test => tests}/rustdoc-json/unions/union.rs | 0 .../rustdoc-ui/ambiguous-inherent-assoc-ty.rs | 0 .../rustdoc-ui/assoc-item-not-in-scope.rs | 0 .../rustdoc-ui/assoc-item-not-in-scope.stderr | 0 .../test => tests}/rustdoc-ui/auxiliary/empty-fn.rs | 0 .../rustdoc-ui/auxiliary/extern_macros.rs | 0 .../rustdoc-ui/auxiliary/issue-61592.rs | 0 .../rustdoc-ui/auxiliary/module_macro_doc.rs | 0 .../test => tests}/rustdoc-ui/auxiliary/overflow.rs | 0 .../rustdoc-ui/auxiliary/panic-item.rs | 0 {src/test => tests}/rustdoc-ui/bare-urls.fixed | 0 {src/test => tests}/rustdoc-ui/bare-urls.rs | 0 {src/test => tests}/rustdoc-ui/bare-urls.stderr | 0 {src/test => tests}/rustdoc-ui/block-doc-comment.rs | 0 .../rustdoc-ui/block-doc-comment.stdout | 0 .../rustdoc-ui/bounded-hr-lifetime.rs | 0 .../rustdoc-ui/bounded-hr-lifetime.stderr | 0 {src/test => tests}/rustdoc-ui/c-help.rs | 0 {src/test => tests}/rustdoc-ui/c-help.stdout | 0 {src/test => tests}/rustdoc-ui/cfg-test.rs | 0 {src/test => tests}/rustdoc-ui/cfg-test.stdout | 0 {src/test => tests}/rustdoc-ui/check-attr-test.rs | 0 .../rustdoc-ui/check-attr-test.stderr | 0 {src/test => tests}/rustdoc-ui/check-attr.rs | 0 {src/test => tests}/rustdoc-ui/check-attr.stderr | 0 {src/test => tests}/rustdoc-ui/check-cfg-test.rs | 0 .../test => tests}/rustdoc-ui/check-cfg-test.stderr | 0 .../test => tests}/rustdoc-ui/check-cfg-test.stdout | 0 .../test => tests}/rustdoc-ui/check-cfg-unstable.rs | 0 .../rustdoc-ui/check-cfg-unstable.stderr | 0 {src/test => tests}/rustdoc-ui/check-cfg.rs | 0 {src/test => tests}/rustdoc-ui/check-cfg.stderr | 0 .../rustdoc-ui/check-doc-alias-attr-location.rs | 0 .../rustdoc-ui/check-doc-alias-attr-location.stderr | 0 .../rustdoc-ui/check-doc-alias-attr.rs | 0 .../rustdoc-ui/check-doc-alias-attr.stderr | 0 {src/test => tests}/rustdoc-ui/check-fail.rs | 0 {src/test => tests}/rustdoc-ui/check-fail.stderr | 0 {src/test => tests}/rustdoc-ui/check.rs | 0 {src/test => tests}/rustdoc-ui/check.stderr | 0 .../rustdoc-ui/commandline-argfile-badutf8.args | 0 .../rustdoc-ui/commandline-argfile-badutf8.rs | 0 .../rustdoc-ui/commandline-argfile-badutf8.stderr | 0 .../rustdoc-ui/commandline-argfile-missing.rs | 0 .../rustdoc-ui/commandline-argfile-missing.stderr | 0 .../rustdoc-ui/commandline-argfile.args | 0 .../rustdoc-ui/commandline-argfile.rs | 0 .../rustdoc-ui/const-evalutation-ice.rs | 0 .../rustdoc-ui/const-evalutation-ice.stderr | 0 .../rustdoc-ui/coverage/allow_missing_docs.rs | 0 .../rustdoc-ui/coverage/allow_missing_docs.stderr | 0 .../rustdoc-ui/coverage/allow_missing_docs.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/basic.rs | 0 .../test => tests}/rustdoc-ui/coverage/basic.stdout | 0 .../rustdoc-ui/coverage/doc-examples-json.rs | 0 .../rustdoc-ui/coverage/doc-examples-json.stdout | 0 .../rustdoc-ui/coverage/doc-examples.rs | 0 .../rustdoc-ui/coverage/doc-examples.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/empty.rs | 0 .../test => tests}/rustdoc-ui/coverage/empty.stdout | 0 .../rustdoc-ui/coverage/enum-tuple-documented.rs | 0 .../coverage/enum-tuple-documented.stdout | 0 .../rustdoc-ui/coverage/enum-tuple.rs | 0 .../rustdoc-ui/coverage/enum-tuple.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/enums.rs | 0 .../test => tests}/rustdoc-ui/coverage/enums.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/exotic.rs | 0 .../rustdoc-ui/coverage/exotic.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/html.rs | 0 {src/test => tests}/rustdoc-ui/coverage/html.stderr | 0 {src/test => tests}/rustdoc-ui/coverage/json.rs | 0 {src/test => tests}/rustdoc-ui/coverage/json.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/private.rs | 0 .../rustdoc-ui/coverage/private.stdout | 0 .../rustdoc-ui/coverage/statics-consts.rs | 0 .../rustdoc-ui/coverage/statics-consts.stdout | 0 {src/test => tests}/rustdoc-ui/coverage/traits.rs | 0 .../rustdoc-ui/coverage/traits.stdout | 0 .../deny-intra-link-resolution-failure.rs | 0 .../deny-intra-link-resolution-failure.stderr | 0 .../rustdoc-ui/deny-missing-docs-crate.rs | 0 .../rustdoc-ui/deny-missing-docs-crate.stderr | 0 .../rustdoc-ui/deny-missing-docs-macro.rs | 0 .../rustdoc-ui/deny-missing-docs-macro.stderr | 0 {src/test => tests}/rustdoc-ui/deprecated-attrs.rs | 0 .../rustdoc-ui/deprecated-attrs.stderr | 0 {src/test => tests}/rustdoc-ui/deref-generic.rs | 0 {src/test => tests}/rustdoc-ui/diagnostic-width.rs | 0 .../rustdoc-ui/diagnostic-width.stderr | 0 {src/test => tests}/rustdoc-ui/display-output.rs | 0 .../test => tests}/rustdoc-ui/display-output.stdout | 0 .../rustdoc-ui/doc-alias-assoc-const.rs | 0 .../rustdoc-ui/doc-alias-assoc-const.stderr | 0 .../rustdoc-ui/doc-alias-crate-level.rs | 0 .../rustdoc-ui/doc-alias-crate-level.stderr | 0 .../rustdoc-ui/doc-alias-same-name.rs | 0 .../rustdoc-ui/doc-alias-same-name.stderr | 0 {src/test => tests}/rustdoc-ui/doc-attr.rs | 0 {src/test => tests}/rustdoc-ui/doc-attr.stderr | 0 {src/test => tests}/rustdoc-ui/doc-cfg.rs | 0 {src/test => tests}/rustdoc-ui/doc-cfg.stderr | 0 .../rustdoc-ui/doc-comment-multi-line-attr.rs | 0 .../rustdoc-ui/doc-comment-multi-line-attr.stdout | 0 .../rustdoc-ui/doc-comment-multi-line-cfg-attr.rs | 0 .../doc-comment-multi-line-cfg-attr.stdout | 0 .../rustdoc-ui/doc-include-suggestion.rs | 0 .../rustdoc-ui/doc-include-suggestion.stderr | 0 {src/test => tests}/rustdoc-ui/doc-spotlight.fixed | 0 {src/test => tests}/rustdoc-ui/doc-spotlight.rs | 0 {src/test => tests}/rustdoc-ui/doc-spotlight.stderr | 0 .../test => tests}/rustdoc-ui/doc-test-attr-pass.rs | 0 {src/test => tests}/rustdoc-ui/doc-test-attr.rs | 0 {src/test => tests}/rustdoc-ui/doc-test-attr.stderr | 0 .../rustdoc-ui/doc-test-doctest-feature.rs | 0 .../rustdoc-ui/doc-test-doctest-feature.stdout | 0 .../rustdoc-ui/doc-test-rustdoc-feature.rs | 0 .../rustdoc-ui/doc-test-rustdoc-feature.stdout | 0 .../rustdoc-ui/doc-without-codeblock.rs | 0 .../rustdoc-ui/doc-without-codeblock.stderr | 0 {src/test => tests}/rustdoc-ui/doc_cfg_hide.rs | 0 {src/test => tests}/rustdoc-ui/doc_cfg_hide.stderr | 0 {src/test => tests}/rustdoc-ui/doctest-edition.rs | 0 .../rustdoc-ui/doctest-edition.stderr | 0 .../rustdoc-ui/doctest-multiline-crate-attribute.rs | 0 .../doctest-multiline-crate-attribute.stdout | 0 {src/test => tests}/rustdoc-ui/doctest-output.rs | 0 .../test => tests}/rustdoc-ui/doctest-output.stdout | 0 .../rustdoc-ui/error-in-impl-trait/README.md | 0 .../rustdoc-ui/error-in-impl-trait/async.rs | 0 .../rustdoc-ui/error-in-impl-trait/closure.rs | 0 .../error-in-impl-trait/const-generics.rs | 0 .../error-in-impl-trait/generic-argument.rs | 0 .../error-in-impl-trait/impl-keyword-closure.rs | 0 .../rustdoc-ui/error-in-impl-trait/impl-keyword.rs | 0 .../error-in-impl-trait/realistic-async.rs | 0 .../error-in-impl-trait/trait-alias-closure.rs | 0 .../rustdoc-ui/error-in-impl-trait/trait-alias.rs | 0 .../rustdoc-ui/expect-tool-lint-rfc-2383.rs | 0 .../rustdoc-ui/expect-tool-lint-rfc-2383.stderr | 0 .../rustdoc-ui/failed-doctest-compile-fail.rs | 0 .../rustdoc-ui/failed-doctest-compile-fail.stdout | 0 .../failed-doctest-extra-semicolon-on-item.rs | 0 .../failed-doctest-extra-semicolon-on-item.stdout | 0 .../rustdoc-ui/failed-doctest-missing-codes.rs | 0 .../rustdoc-ui/failed-doctest-missing-codes.stdout | 0 .../rustdoc-ui/failed-doctest-output-windows.rs | 0 .../rustdoc-ui/failed-doctest-output-windows.stdout | 0 .../rustdoc-ui/failed-doctest-output.rs | 0 .../rustdoc-ui/failed-doctest-output.stdout | 0 .../rustdoc-ui/failed-doctest-should-panic.rs | 0 .../rustdoc-ui/failed-doctest-should-panic.stdout | 0 .../rustdoc-ui/feature-gate-doc_cfg_hide.rs | 0 .../rustdoc-ui/feature-gate-doc_cfg_hide.stderr | 0 ...eature-gate-rustdoc_missing_doc_code_examples.rs | 0 ...re-gate-rustdoc_missing_doc_code_examples.stderr | 0 .../generate-link-to-definition-opt-unstable.rs | 0 .../generate-link-to-definition-opt-unstable.stderr | 0 .../rustdoc-ui/generate-link-to-definition-opt.rs | 0 .../generate-link-to-definition-opt.stderr | 0 .../rustdoc-ui/generate-link-to-definition-opt2.rs | 0 .../generate-link-to-definition-opt2.stderr | 0 {src/test => tests}/rustdoc-ui/ignore-block-help.rs | 0 .../rustdoc-ui/ignore-block-help.stderr | 0 {src/test => tests}/rustdoc-ui/impl-fn-nesting.rs | 0 .../rustdoc-ui/impl-fn-nesting.stderr | 0 .../infinite-recursive-type-impl-trait-return.rs | 0 ...infinite-recursive-type-impl-trait-return.stderr | 0 .../infinite-recursive-type-impl-trait.rs | 0 .../infinite-recursive-type-impl-trait.stderr | 0 .../rustdoc-ui/infinite-recursive-type.rs | 0 .../rustdoc-ui/infinite-recursive-type.stderr | 0 .../rustdoc-ui/intra-doc/.gitattributes | 0 .../rustdoc-ui/intra-doc/alias-ice.rs | 0 .../rustdoc-ui/intra-doc/alias-ice.stderr | 0 .../rustdoc-ui/intra-doc/ambiguity.rs | 0 .../rustdoc-ui/intra-doc/ambiguity.stderr | 0 {src/test => tests}/rustdoc-ui/intra-doc/anchors.rs | 0 .../rustdoc-ui/intra-doc/anchors.stderr | 0 .../rustdoc-ui/intra-doc/assoc-field.rs | 0 .../rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs | 0 .../intra-doc/auxiliary/assoc-field-dep.rs | 0 .../auxiliary/assoc-mod-inner-outer-dep.rs | 0 .../rustdoc-ui/intra-doc/auxiliary/dep1.rs | 0 .../rustdoc-ui/intra-doc/auxiliary/dep2.rs | 0 .../rustdoc-ui/intra-doc/auxiliary/dep3.rs | 0 .../rustdoc-ui/intra-doc/auxiliary/dep4.rs | 0 .../intra-doc/auxiliary/intra-doc-broken.rs | 0 .../auxiliary/pointer-reexports-allowed.rs | 0 .../intra-doc/auxiliary/through-proc-macro-aux.rs | 0 .../rustdoc-ui/intra-doc/broken-reexport.rs | 0 .../rustdoc-ui/intra-doc/crate-nonexistent.rs | 0 .../rustdoc-ui/intra-doc/crate-nonexistent.stderr | 0 .../rustdoc-ui/intra-doc/disambiguator-mismatch.rs | 0 .../intra-doc/disambiguator-mismatch.stderr | 0 .../rustdoc-ui/intra-doc/double-anchor.rs | 0 .../rustdoc-ui/intra-doc/double-anchor.stderr | 0 .../rustdoc-ui/intra-doc/email-address-localhost.rs | 0 {src/test => tests}/rustdoc-ui/intra-doc/errors.rs | 0 .../rustdoc-ui/intra-doc/errors.stderr | 0 .../rustdoc-ui/intra-doc/extern-crate-load.rs | 0 .../intra-doc/feature-gate-intra-doc-pointers.rs | 0 .../feature-gate-intra-doc-pointers.stderr | 0 .../rustdoc-ui/intra-doc/field-ice.rs | 0 .../rustdoc-ui/intra-doc/field-ice.stderr | 0 .../rustdoc-ui/intra-doc/global-path.rs | 0 .../rustdoc-ui/intra-doc/global-path.stderr | 0 .../intra-doc/html-as-generics-intra-doc.rs | 0 .../intra-doc/html-as-generics-intra-doc.stderr | 0 .../incompatible-primitive-disambiguator.rs | 0 .../incompatible-primitive-disambiguator.stderr | 0 .../rustdoc-ui/intra-doc/macro-rules-error.rs | 0 .../rustdoc-ui/intra-doc/macro-rules-error.stderr | 0 .../rustdoc-ui/intra-doc/macro-rules.rs | 0 .../rustdoc-ui/intra-doc/malformed-generics.rs | 0 .../rustdoc-ui/intra-doc/malformed-generics.stderr | 0 .../rustdoc-ui/intra-doc/non-path-primitives.rs | 0 .../rustdoc-ui/intra-doc/non-path-primitives.stderr | 0 .../intra-doc/pointer-reexports-allowed.rs | 0 .../rustdoc-ui/intra-doc/prim-conflict.rs | 0 .../rustdoc-ui/intra-doc/prim-conflict.stderr | 0 .../intra-doc/private-from-crate-level.rs | 0 .../intra-doc/private-from-crate-level.stderr | 0 .../rustdoc-ui/intra-doc/private.private.stderr | 0 .../rustdoc-ui/intra-doc/private.public.stderr | 0 {src/test => tests}/rustdoc-ui/intra-doc/private.rs | 0 .../rustdoc-ui/intra-doc/span-ice-55723.rs | 0 .../rustdoc-ui/intra-doc/span-ice-55723.stderr | 0 .../rustdoc-ui/intra-doc/through-proc-macro.rs | 0 .../rustdoc-ui/intra-doc/through-proc-macro.stderr | 0 .../rustdoc-ui/intra-doc/unknown-disambiguator.rs | 0 .../intra-doc/unknown-disambiguator.stderr | 0 .../intra-doc/unresolved-import-recovery.rs | 0 .../intra-doc/unresolved-import-recovery.stderr | 0 .../rustdoc-ui/intra-doc/unused-extern-crate.rs | 0 .../rustdoc-ui/intra-doc/unused-extern-crate.stderr | 0 .../rustdoc-ui/intra-doc/warning-crlf.rs | 0 .../rustdoc-ui/intra-doc/warning-crlf.stderr | 0 {src/test => tests}/rustdoc-ui/intra-doc/warning.rs | 0 .../rustdoc-ui/intra-doc/warning.stderr | 0 {src/test => tests}/rustdoc-ui/invalid-cfg.rs | 0 {src/test => tests}/rustdoc-ui/invalid-cfg.stderr | 0 {src/test => tests}/rustdoc-ui/invalid-doc-attr.rs | 0 .../rustdoc-ui/invalid-doc-attr.stderr | 0 .../rustdoc-ui/invalid-html-self-closing-tag.rs | 0 .../rustdoc-ui/invalid-html-self-closing-tag.stderr | 0 {src/test => tests}/rustdoc-ui/invalid-html-tags.rs | 0 .../rustdoc-ui/invalid-html-tags.stderr | 0 {src/test => tests}/rustdoc-ui/invalid-keyword.rs | 0 .../rustdoc-ui/invalid-keyword.stderr | 0 {src/test => tests}/rustdoc-ui/invalid-syntax.rs | 0 .../test => tests}/rustdoc-ui/invalid-syntax.stderr | 0 .../test => tests}/rustdoc-ui/invalid-theme-name.rs | 0 .../rustdoc-ui/invalid-theme-name.stderr | 0 {src/test => tests}/rustdoc-ui/issue-101076.rs | 0 {src/test => tests}/rustdoc-ui/issue-102986.rs | 0 {src/test => tests}/rustdoc-ui/issue-102986.stderr | 0 {src/test => tests}/rustdoc-ui/issue-103997.rs | 0 {src/test => tests}/rustdoc-ui/issue-103997.stderr | 0 {src/test => tests}/rustdoc-ui/issue-105334.rs | 0 {src/test => tests}/rustdoc-ui/issue-105334.stderr | 0 {src/test => tests}/rustdoc-ui/issue-105737.rs | 0 {src/test => tests}/rustdoc-ui/issue-105737.stderr | 0 {src/test => tests}/rustdoc-ui/issue-105742.rs | 0 {src/test => tests}/rustdoc-ui/issue-105742.stderr | 0 {src/test => tests}/rustdoc-ui/issue-106213.rs | 0 {src/test => tests}/rustdoc-ui/issue-106213.stderr | 0 {src/test => tests}/rustdoc-ui/issue-106226.rs | 0 {src/test => tests}/rustdoc-ui/issue-106226.stderr | 0 {src/test => tests}/rustdoc-ui/issue-58473-2.rs | 0 {src/test => tests}/rustdoc-ui/issue-58473.rs | 0 {src/test => tests}/rustdoc-ui/issue-61592-2.rs | 0 {src/test => tests}/rustdoc-ui/issue-61592-2.stderr | 0 {src/test => tests}/rustdoc-ui/issue-61592.rs | 0 {src/test => tests}/rustdoc-ui/issue-61592.stderr | 0 {src/test => tests}/rustdoc-ui/issue-61732.rs | 0 {src/test => tests}/rustdoc-ui/issue-61732.stderr | 0 .../rustdoc-ui/issue-74134.private.stderr | 0 .../rustdoc-ui/issue-74134.public.stderr | 0 {src/test => tests}/rustdoc-ui/issue-74134.rs | 0 {src/test => tests}/rustdoc-ui/issue-79465.rs | 0 {src/test => tests}/rustdoc-ui/issue-79465.stderr | 0 {src/test => tests}/rustdoc-ui/issue-79467.rs | 0 {src/test => tests}/rustdoc-ui/issue-79467.stderr | 0 {src/test => tests}/rustdoc-ui/issue-79494.rs | 0 {src/test => tests}/rustdoc-ui/issue-79494.stderr | 0 {src/test => tests}/rustdoc-ui/issue-80992.rs | 0 {src/test => tests}/rustdoc-ui/issue-80992.stdout | 0 .../rustdoc-ui/issue-81662-shortness.rs | 0 .../rustdoc-ui/issue-81662-shortness.stdout | 0 .../rustdoc-ui/issue-83883-describe-lints.rs | 0 .../rustdoc-ui/issue-83883-describe-lints.stdout | 0 {src/test => tests}/rustdoc-ui/issue-91134.rs | 0 {src/test => tests}/rustdoc-ui/issue-91134.stdout | 0 {src/test => tests}/rustdoc-ui/issue-91713.rs | 0 {src/test => tests}/rustdoc-ui/issue-91713.stderr | 0 {src/test => tests}/rustdoc-ui/issue-91713.stdout | 0 {src/test => tests}/rustdoc-ui/issue-96287.rs | 0 {src/test => tests}/rustdoc-ui/issue-96287.stderr | 0 {src/test => tests}/rustdoc-ui/issue-98690.rs | 0 {src/test => tests}/rustdoc-ui/issue-98690.stderr | 0 {src/test => tests}/rustdoc-ui/lint-group.rs | 0 {src/test => tests}/rustdoc-ui/lint-group.stderr | 0 .../rustdoc-ui/lint-missing-doc-code-example.rs | 0 .../rustdoc-ui/lint-missing-doc-code-example.stderr | 0 {src/test => tests}/rustdoc-ui/macro-docs.rs | 0 {src/test => tests}/rustdoc-ui/macro-docs.stderr | 0 {src/test => tests}/rustdoc-ui/macro-docs.stdout | 0 .../rustdoc-ui/no-crate-level-doc-lint.rs | 0 .../rustdoc-ui/no-crate-level-doc-lint.stderr | 0 {src/test => tests}/rustdoc-ui/no-run-flag-error.rs | 0 .../rustdoc-ui/no-run-flag-error.stderr | 0 {src/test => tests}/rustdoc-ui/no-run-flag.rs | 0 {src/test => tests}/rustdoc-ui/no-run-flag.stdout | 0 {src/test => tests}/rustdoc-ui/nocapture-fail.rs | 0 .../test => tests}/rustdoc-ui/nocapture-fail.stderr | 0 .../test => tests}/rustdoc-ui/nocapture-fail.stdout | 0 {src/test => tests}/rustdoc-ui/nocapture.rs | 0 {src/test => tests}/rustdoc-ui/nocapture.stderr | 0 {src/test => tests}/rustdoc-ui/nocapture.stdout | 0 {src/test => tests}/rustdoc-ui/normalize-cycle.rs | 0 .../test => tests}/rustdoc-ui/normalize-overflow.rs | 0 .../rustdoc-ui/output-format-html-stable.rs | 0 {src/test => tests}/rustdoc-ui/private-doc-test.rs | 0 .../rustdoc-ui/private-item-doc-test.rs | 0 .../rustdoc-ui/private-item-doc-test.stderr | 0 .../rustdoc-ui/private-public-item-doc-test.rs | 0 .../rustdoc-ui/private-public-item-doc-test.stderr | 0 {src/test => tests}/rustdoc-ui/pub-export-lint.rs | 0 .../rustdoc-ui/pub-export-lint.stderr | 0 .../rustdoc-ui/public-reexported-item-doc-test.rs | 0 {src/test => tests}/rustdoc-ui/range-pattern.rs | 0 .../rustdoc-ui/recursive-deref-ice.rs | 0 .../rustdoc-ui/reference-link-reports-error-once.rs | 0 .../reference-link-reports-error-once.stderr | 0 {src/test => tests}/rustdoc-ui/reference-links.rs | 0 .../rustdoc-ui/reference-links.stderr | 0 .../rustdoc-ui/renamed-lint-still-applies.rs | 0 .../rustdoc-ui/renamed-lint-still-applies.stderr | 0 .../rustdoc-ui/run-directory.correct.stdout | 0 .../rustdoc-ui/run-directory.incorrect.stdout | 0 {src/test => tests}/rustdoc-ui/run-directory.rs | 0 .../test => tests}/rustdoc-ui/rustc-check-passes.rs | 0 .../rustdoc-ui/rustc-check-passes.stderr | 0 .../scrape-examples-fail-if-type-error.rs | 0 .../scrape-examples-fail-if-type-error.stderr | 0 .../rustdoc-ui/scrape-examples-ice.rs | 0 .../rustdoc-ui/scrape-examples-wrong-options-1.rs | 0 .../scrape-examples-wrong-options-1.stderr | 0 .../rustdoc-ui/scrape-examples-wrong-options-2.rs | 0 .../scrape-examples-wrong-options-2.stderr | 0 ...arch-index-generics-recursion-bug-issue-59502.rs | 0 .../suggestions/html-as-generics-no-suggestions.rs | 0 .../html-as-generics-no-suggestions.stderr | 0 .../rustdoc-ui/suggestions/html-as-generics.fixed | 0 .../rustdoc-ui/suggestions/html-as-generics.rs | 0 .../rustdoc-ui/suggestions/html-as-generics.stderr | 0 .../test => tests}/rustdoc-ui/test-compile-fail1.rs | 0 .../rustdoc-ui/test-compile-fail1.stderr | 0 .../test => tests}/rustdoc-ui/test-compile-fail2.rs | 0 .../rustdoc-ui/test-compile-fail2.stderr | 0 .../test => tests}/rustdoc-ui/test-compile-fail3.rs | 0 .../rustdoc-ui/test-compile-fail3.stderr | 0 {src/test => tests}/rustdoc-ui/test-no_std.rs | 0 {src/test => tests}/rustdoc-ui/test-no_std.stdout | 0 {src/test => tests}/rustdoc-ui/test-type.rs | 0 {src/test => tests}/rustdoc-ui/test-type.stdout | 0 {src/test => tests}/rustdoc-ui/track-diagnostics.rs | 0 .../rustdoc-ui/track-diagnostics.stderr | 0 .../rustdoc-ui/tuple-variadic-check.rs | 0 .../rustdoc-ui/tuple-variadic-check.stderr | 0 .../rustdoc-ui/unable-fulfill-trait.rs | 0 .../rustdoc-ui/unable-fulfill-trait.stderr | 0 .../rustdoc-ui/unknown-renamed-lints.rs | 0 .../rustdoc-ui/unknown-renamed-lints.stderr | 0 .../rustdoc-ui/unparseable-doc-test.rs | 0 .../rustdoc-ui/unparseable-doc-test.stdout | 0 .../test => tests}/rustdoc-ui/unused-braces-lint.rs | 0 .../rustdoc-ui/unused-extern-crate.rs | 0 {src/test => tests}/rustdoc-ui/unused.rs | 0 .../use_both_out_dir_and_output_options.rs | 0 .../use_both_out_dir_and_output_options.stderr | 0 {src/test => tests}/rustdoc-ui/wasm-safe.rs | 0 {src/test => tests}/rustdoc-ui/z-help.rs | 0 {src/test => tests}/rustdoc-ui/z-help.stdout | 0 {src/test => tests}/rustdoc/all.rs | 0 .../rustdoc/anchors.no_const_anchor.html | 0 .../rustdoc/anchors.no_const_anchor2.html | 0 .../rustdoc/anchors.no_method_anchor.html | 0 .../rustdoc/anchors.no_trait_method_anchor.html | 0 .../rustdoc/anchors.no_tymethod_anchor.html | 0 .../rustdoc/anchors.no_type_anchor.html | 0 .../rustdoc/anchors.no_type_anchor2.html | 0 {src/test => tests}/rustdoc/anchors.rs | 0 {src/test => tests}/rustdoc/anonymous-lifetime.rs | 0 {src/test => tests}/rustdoc/anonymous-reexport.rs | 0 .../rustdoc/array-links.link_box_generic.html | 0 .../rustdoc/array-links.link_box_u32.html | 0 .../rustdoc/array-links.link_slice_generic.html | 0 .../rustdoc/array-links.link_slice_u32.html | 0 {src/test => tests}/rustdoc/array-links.rs | 0 {src/test => tests}/rustdoc/asm-foreign.rs | 0 {src/test => tests}/rustdoc/asm-foreign2.rs | 0 {src/test => tests}/rustdoc/assoc-consts-version.rs | 0 {src/test => tests}/rustdoc/assoc-consts.rs | 0 {src/test => tests}/rustdoc/assoc-item-cast.rs | 0 {src/test => tests}/rustdoc/assoc-types.rs | 0 {src/test => tests}/rustdoc/associated-consts.rs | 0 {src/test => tests}/rustdoc/async-fn.rs | 0 {src/test => tests}/rustdoc/async-move-doctest.rs | 0 {src/test => tests}/rustdoc/async-trait-sig.rs | 0 {src/test => tests}/rustdoc/async-trait.rs | 0 {src/test => tests}/rustdoc/attribute-rendering.rs | 0 {src/test => tests}/rustdoc/attributes.rs | 0 {src/test => tests}/rustdoc/auto-impl-for-trait.rs | 0 {src/test => tests}/rustdoc/auto-impl-primitive.rs | 0 {src/test => tests}/rustdoc/auto-trait-not-send.rs | 0 {src/test => tests}/rustdoc/auto-traits.rs | 0 {src/test => tests}/rustdoc/auto_aliases.rs | 0 .../rustdoc/auxiliary/all-item-types.rs | 0 .../rustdoc/auxiliary/async-trait-dep.rs | 0 .../test => tests}/rustdoc/auxiliary/auto-traits.rs | 0 .../cross-crate-hidden-assoc-trait-items.rs | 0 .../auxiliary/cross-crate-hidden-impl-parameter.rs | 0 .../rustdoc/auxiliary/elided-lifetime.rs | 0 {src/test => tests}/rustdoc/auxiliary/empty.rs | 0 .../rustdoc/auxiliary/enum-primitive.rs | 0 .../rustdoc/auxiliary/extern-impl-trait.rs | 0 .../rustdoc/auxiliary/extern-links.rs | 0 .../rustdoc/auxiliary/external-cross-doc.md | 0 .../rustdoc/auxiliary/external-cross.rs | 0 .../rustdoc/auxiliary/external-doc.md | 0 .../rustdoc/auxiliary/external-macro-src.rs | 0 {src/test => tests}/rustdoc/auxiliary/html_root.rs | 0 .../rustdoc/auxiliary/incoherent-impl-types.rs | 0 .../rustdoc/auxiliary/inline-default-methods.rs | 0 .../rustdoc/auxiliary/issue-100204-aux.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-13698.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-15318.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-17476.rs | 0 .../rustdoc/auxiliary/issue-19190-3.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-20646.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-20727.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-21092.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-21801.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-22025.rs | 0 .../rustdoc/auxiliary/issue-23207-1.rs | 0 .../rustdoc/auxiliary/issue-23207-2.rs | 0 .../rustdoc/auxiliary/issue-26606-macro.rs | 0 .../rustdoc/auxiliary/issue-27362-aux.rs | 0 .../rustdoc/auxiliary/issue-28927-1.rs | 0 .../rustdoc/auxiliary/issue-28927-2.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-29584.rs | 0 .../rustdoc/auxiliary/issue-30109-1.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-34274.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-36031.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-40936.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-46727.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-48414.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-53689.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-57180.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-61592.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-73061.rs | 0 .../test => tests}/rustdoc/auxiliary/issue-85454.rs | 0 .../rustdoc/auxiliary/issue-86620-1.rs | 0 .../issue-98697-reexport-with-anonymous-lifetime.rs | 0 .../rustdoc/auxiliary/issue-99221-aux.rs | 0 .../rustdoc/auxiliary/issue-99734-aux.rs | 0 .../rustdoc/auxiliary/macro_pub_in_module.rs | 0 {src/test => tests}/rustdoc/auxiliary/masked.rs | 0 .../rustdoc/auxiliary/mod-stackoverflow.rs | 0 .../rustdoc/auxiliary/no_html_root.rs | 0 .../rustdoc/auxiliary/normalize-assoc-item.rs | 0 .../rustdoc/auxiliary/primitive-doc.rs | 0 .../rustdoc/auxiliary/primitive-reexport.rs | 0 .../rustdoc/auxiliary/pub-extern-crate.rs | 0 .../rustdoc/auxiliary/pub-use-extern-macros.rs | 0 {src/test => tests}/rustdoc/auxiliary/real_gimli.rs | 0 {src/test => tests}/rustdoc/auxiliary/realcore.rs | 0 .../rustdoc/auxiliary/reexp-stripped.rs | 0 .../rustdoc/auxiliary/reexport-check.rs | 0 .../rustdoc/auxiliary/reexport-doc-aux.rs | 0 {src/test => tests}/rustdoc/auxiliary/reexports.rs | 0 .../rustdoc/auxiliary/rustdoc-default-impl.rs | 0 .../auxiliary/rustdoc-extern-default-method.rs | 0 .../rustdoc/auxiliary/rustdoc-extern-method.rs | 0 .../test => tests}/rustdoc/auxiliary/rustdoc-ffi.rs | 0 .../auxiliary/rustdoc-impl-parts-crosscrate.rs | 0 .../rustdoc/auxiliary/source-code-bar.rs | 0 .../test => tests}/rustdoc/auxiliary/source_code.rs | 0 .../rustdoc/auxiliary/src-links-external.rs | 0 .../rustdoc/auxiliary/trait-alias-mention.rs | 0 .../rustdoc/auxiliary/trait-visibility.rs | 0 .../test => tests}/rustdoc/auxiliary/unit-return.rs | 0 .../rustdoc/auxiliary/unstable-trait.rs | 0 .../rustdoc/auxiliary/variant-struct.rs | 0 {src/test => tests}/rustdoc/bad-codeblock-syntax.rs | 0 .../test => tests}/rustdoc/blanket-reexport-item.rs | 0 .../rustdoc/bounds-in-multiple-parts.rs | 0 {src/test => tests}/rustdoc/cap-lints.rs | 0 {src/test => tests}/rustdoc/cfg-doctest.rs | 0 {src/test => tests}/rustdoc/cfg_doc_reexport.rs | 0 .../rustdoc/check-source-code-urls-to-def-std.rs | 0 .../rustdoc/check-source-code-urls-to-def.rs | 0 {src/test => tests}/rustdoc/check-styled-link.rs | 0 {src/test => tests}/rustdoc/check.rs | 0 {src/test => tests}/rustdoc/codeblock-title.rs | 0 {src/test => tests}/rustdoc/comment-in-doctest.rs | 0 {src/test => tests}/rustdoc/const-display.rs | 0 {src/test => tests}/rustdoc/const-doc.rs | 0 {src/test => tests}/rustdoc/const-fn.rs | 0 .../rustdoc/const-generics/add-impl.rs | 0 .../const-generics/auxiliary/extern_crate.rs | 0 .../const-generics/const-generic-defaults.rs | 0 .../rustdoc/const-generics/const-generic-slice.rs | 0 .../rustdoc/const-generics/const-generics-docs.rs | 0 .../rustdoc/const-generics/const-impl.rs | 0 .../rustdoc/const-generics/generic_const_exprs.rs | 0 .../lazy_normalization_consts/const-equate-pred.rs | 0 .../rustdoc/const-generics/type-alias.rs | 0 {src/test => tests}/rustdoc/const-underscore.rs | 0 {src/test => tests}/rustdoc/const-value-display.rs | 0 {src/test => tests}/rustdoc/const.rs | 0 {src/test => tests}/rustdoc/constructor-imports.rs | 0 {src/test => tests}/rustdoc/crate-version-escape.rs | 0 {src/test => tests}/rustdoc/crate-version.rs | 0 .../rustdoc/cross-crate-hidden-assoc-trait-items.rs | 0 .../rustdoc/cross-crate-hidden-impl-parameter.rs | 0 {src/test => tests}/rustdoc/cross-crate-links.rs | 0 .../rustdoc/cross-crate-primitive-doc.rs | 0 .../decl-trailing-whitespace.declaration.html | 0 .../rustdoc/decl-trailing-whitespace.rs | 0 {src/test => tests}/rustdoc/decl_macro.rs | 0 {src/test => tests}/rustdoc/decl_macro_priv.rs | 0 {src/test => tests}/rustdoc/deep-structures.rs | 0 {src/test => tests}/rustdoc/default-impl.rs | 0 {src/test => tests}/rustdoc/default-theme.rs | 0 .../rustdoc/default-trait-method-link.rs | 0 {src/test => tests}/rustdoc/default-trait-method.rs | 0 .../rustdoc/deprecated-future-staged-api.rs | 0 {src/test => tests}/rustdoc/deprecated-future.rs | 0 {src/test => tests}/rustdoc/deprecated-impls.rs | 0 {src/test => tests}/rustdoc/deprecated.rs | 0 {src/test => tests}/rustdoc/deref-const-fn.rs | 0 {src/test => tests}/rustdoc/deref-mut-methods.rs | 0 .../rustdoc/deref-recursive-pathbuf.rs | 0 {src/test => tests}/rustdoc/deref-recursive.rs | 0 {src/test => tests}/rustdoc/deref-slice-core.rs | 0 {src/test => tests}/rustdoc/deref-to-primitive.rs | 0 {src/test => tests}/rustdoc/deref-typedef.rs | 0 {src/test => tests}/rustdoc/description.rs | 0 {src/test => tests}/rustdoc/description_default.rs | 0 {src/test => tests}/rustdoc/doc-assoc-item.rs | 0 {src/test => tests}/rustdoc/doc-auto-cfg.rs | 0 {src/test => tests}/rustdoc/doc-cfg-hide.rs | 0 .../test => tests}/rustdoc/doc-cfg-implicit-gate.rs | 0 {src/test => tests}/rustdoc/doc-cfg-implicit.rs | 0 .../rustdoc/doc-cfg-simplification.rs | 0 .../rustdoc/doc-cfg-target-feature.rs | 0 {src/test => tests}/rustdoc/doc-cfg-traits.rs | 0 {src/test => tests}/rustdoc/doc-cfg.rs | 0 .../doc-notable_trait-mut_t_is_not_an_iterator.rs | 0 .../rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs | 0 .../doc-notable_trait-slice.bare_fn_matches.html | 0 .../rustdoc/doc-notable_trait-slice.rs | 0 .../rustdoc/doc-notable_trait.bare-fn.html | 0 {src/test => tests}/rustdoc/doc-notable_trait.rs | 0 .../rustdoc/doc-notable_trait.some-struct-new.html | 0 .../rustdoc/doc-notable_trait.wrap-me.html | 0 .../doc-notable_trait_box_is_not_an_iterator.rs | 0 {src/test => tests}/rustdoc/doc-proc-macro.rs | 0 .../rustdoc/doc_auto_cfg_nested_impl.rs | 0 .../rustdoc/doctest-manual-crate-name.rs | 0 {src/test => tests}/rustdoc/double-quote-escape.rs | 0 {src/test => tests}/rustdoc/duplicate-cfg.rs | 0 {src/test => tests}/rustdoc/duplicate-flags.rs | 0 .../test => tests}/rustdoc/duplicate_impls/impls.rs | 0 .../rustdoc/duplicate_impls/issue-33054.rs | 0 {src/test => tests}/rustdoc/duplicated_impl.rs | 0 {src/test => tests}/rustdoc/early-unindent.rs | 0 {src/test => tests}/rustdoc/edition-doctest.rs | 0 {src/test => tests}/rustdoc/edition-flag.rs | 0 {src/test => tests}/rustdoc/elided-lifetime.rs | 0 {src/test => tests}/rustdoc/empty-doc-comment.rs | 0 .../rustdoc/empty-impl-block-private-with-doc.rs | 0 .../rustdoc/empty-impl-block-private.rs | 0 {src/test => tests}/rustdoc/empty-impl-block.rs | 0 {src/test => tests}/rustdoc/empty-impls.rs | 0 {src/test => tests}/rustdoc/empty-mod-private.rs | 0 {src/test => tests}/rustdoc/empty-mod-public.rs | 0 {src/test => tests}/rustdoc/empty-section.rs | 0 {src/test => tests}/rustdoc/ensure-src-link.rs | 0 {src/test => tests}/rustdoc/enum-headings.rs | 0 {src/test => tests}/rustdoc/escape-deref-methods.rs | 0 .../extern-default-method.no_href_on_anchor.html | 0 .../test => tests}/rustdoc/extern-default-method.rs | 0 .../rustdoc/extern-html-root-url-precedence.rs | 0 {src/test => tests}/rustdoc/extern-html-root-url.rs | 0 {src/test => tests}/rustdoc/extern-impl-trait.rs | 0 {src/test => tests}/rustdoc/extern-impl.rs | 0 {src/test => tests}/rustdoc/extern-links.rs | 0 {src/test => tests}/rustdoc/extern-method.rs | 0 {src/test => tests}/rustdoc/external-cross.rs | 0 {src/test => tests}/rustdoc/external-doc.rs | 0 {src/test => tests}/rustdoc/external-macro-src.rs | 0 .../rustdoc/feature-gate-doc_auto_cfg.rs | 0 {src/test => tests}/rustdoc/ffi.rs | 0 {src/test => tests}/rustdoc/fn-bound.rs | 0 {src/test => tests}/rustdoc/fn-pointer-arg-name.rs | 0 {src/test => tests}/rustdoc/fn-sidebar.rs | 0 {src/test => tests}/rustdoc/fn-type.rs | 0 {src/test => tests}/rustdoc/force-target-feature.rs | 0 {src/test => tests}/rustdoc/foreigntype-reexport.rs | 0 {src/test => tests}/rustdoc/foreigntype.rs | 0 .../rustdoc/generic-associated-types/gats.rs | 0 .../rustdoc/generic-associated-types/issue-94683.rs | 0 {src/test => tests}/rustdoc/generic-impl.rs | 0 {src/test => tests}/rustdoc/generic_const_exprs.rs | 0 {src/test => tests}/rustdoc/glob-shadowing-const.rs | 0 {src/test => tests}/rustdoc/glob-shadowing.rs | 0 {src/test => tests}/rustdoc/hidden-impls.rs | 0 {src/test => tests}/rustdoc/hidden-line.rs | 0 {src/test => tests}/rustdoc/hidden-methods.rs | 0 ...dden-trait-methods-with-document-hidden-items.rs | 0 {src/test => tests}/rustdoc/hidden-trait-methods.rs | 0 .../rustdoc/hidden-trait-struct-impls.rs | 0 .../hide-complex-unevaluated-const-arguments.rs | 0 .../rustdoc/hide-complex-unevaluated-consts.rs | 0 {src/test => tests}/rustdoc/hide-unstable-trait.rs | 0 .../rustdoc/higher-ranked-trait-bounds.rs | 0 {src/test => tests}/rustdoc/impl-box.rs | 0 {src/test => tests}/rustdoc/impl-disambiguation.rs | 0 {src/test => tests}/rustdoc/impl-everywhere.rs | 0 {src/test => tests}/rustdoc/impl-in-const-block.rs | 0 .../test => tests}/rustdoc/impl-parts-crosscrate.rs | 0 {src/test => tests}/rustdoc/impl-parts.rs | 0 {src/test => tests}/rustdoc/impl-trait-alias.rs | 0 .../rustdoc/implementor-stable-version.rs | 0 {src/test => tests}/rustdoc/impossible-default.rs | 0 {src/test => tests}/rustdoc/include_str_cut.rs | 0 {src/test => tests}/rustdoc/index-page.rs | 0 {src/test => tests}/rustdoc/infinite-redirection.rs | 0 .../rustdoc/inline-default-methods.rs | 0 .../test => tests}/rustdoc/inline_cross/add-docs.rs | 0 .../rustdoc/inline_cross/assoc-items.rs | 0 .../inline_cross/assoc_item_trait_bounds.out0.html | 0 .../inline_cross/assoc_item_trait_bounds.out2.html | 0 .../inline_cross/assoc_item_trait_bounds.out9.html | 0 .../rustdoc/inline_cross/assoc_item_trait_bounds.rs | 0 .../rustdoc/inline_cross/auxiliary/add-docs.rs | 0 .../rustdoc/inline_cross/auxiliary/assoc-items.rs | 0 .../auxiliary/assoc_item_trait_bounds.rs | 0 .../rustdoc/inline_cross/auxiliary/cross-glob.rs | 0 .../inline_cross/auxiliary/default-trait-method.rs | 0 .../rustdoc/inline_cross/auxiliary/dyn_trait.rs | 0 .../auxiliary/impl-inline-without-trait.rs | 0 .../inline_cross/auxiliary/impl_trait_aux.rs | 0 .../inline_cross/auxiliary/implementors_inline.rs | 0 .../rustdoc/inline_cross/auxiliary/issue-24183.rs | 0 .../rustdoc/inline_cross/auxiliary/issue-33113.rs | 0 .../rustdoc/inline_cross/auxiliary/macro-vis.rs | 0 .../rustdoc/inline_cross/auxiliary/macros.rs | 0 .../rustdoc/inline_cross/auxiliary/proc_macro.rs | 0 .../inline_cross/auxiliary/renamed-via-module.rs | 0 .../inline_cross/auxiliary/rustdoc-hidden-sig.rs | 0 .../inline_cross/auxiliary/rustdoc-hidden.rs | 0 .../auxiliary/rustdoc-nonreachable-impls.rs | 0 .../auxiliary/rustdoc-trait-object-impl.rs | 0 .../rustdoc/inline_cross/auxiliary/trait-vis.rs | 0 .../rustdoc/inline_cross/auxiliary/use_crate.rs | 0 .../rustdoc/inline_cross/auxiliary/use_crate_2.rs | 0 .../rustdoc/inline_cross/cross-glob.rs | 0 .../rustdoc/inline_cross/default-trait-method.rs | 0 .../rustdoc/inline_cross/dyn_trait.rs | 0 .../rustdoc/inline_cross/hidden-use.rs | 0 .../inline_cross/impl-inline-without-trait.rs | 0 .../rustdoc/inline_cross/impl_trait.rs | 0 .../rustdoc/inline_cross/implementors-js.rs | 0 .../rustdoc/inline_cross/inline_hidden.rs | 0 .../issue-24183.method_no_where_self_sized.html | 0 .../rustdoc/inline_cross/issue-24183.rs | 0 .../rustdoc/inline_cross/issue-28480.rs | 0 .../rustdoc/inline_cross/issue-31948-1.rs | 0 .../rustdoc/inline_cross/issue-31948-2.rs | 0 .../rustdoc/inline_cross/issue-31948.rs | 0 .../rustdoc/inline_cross/issue-32881.rs | 0 .../rustdoc/inline_cross/issue-33113.rs | 0 .../rustdoc/inline_cross/macro-vis.rs | 0 {src/test => tests}/rustdoc/inline_cross/macros.rs | 0 .../rustdoc/inline_cross/proc_macro.rs | 0 .../rustdoc/inline_cross/renamed-via-module.rs | 0 .../rustdoc/inline_cross/trait-vis.rs | 0 .../rustdoc/inline_cross/use_crate.rs | 0 .../glob-extern-document-private-items.rs | 0 .../rustdoc/inline_local/glob-extern.rs | 0 .../glob-private-document-private-items.rs | 0 .../rustdoc/inline_local/glob-private.rs | 0 .../rustdoc/inline_local/hidden-use.rs | 0 .../rustdoc/inline_local/issue-28537.rs | 0 .../rustdoc/inline_local/issue-32343.rs | 0 .../rustdoc/inline_local/macro_by_example.rs | 0 .../rustdoc/inline_local/please_inline.rs | 0 .../rustdoc/inline_local/trait-vis.rs | 0 {src/test => tests}/rustdoc/internal.rs | 0 .../rustdoc/intra-doc-crate/auxiliary/self.rs | 0 {src/test => tests}/rustdoc/intra-doc-crate/self.rs | 0 {src/test => tests}/rustdoc/intra-doc/anchors.rs | 0 .../rustdoc/intra-doc/assoc-reexport-super.rs | 0 .../rustdoc/intra-doc/associated-defaults.rs | 0 .../rustdoc/intra-doc/associated-items.rs | 0 .../rustdoc/intra-doc/auxiliary/empty.rs | 0 .../rustdoc/intra-doc/auxiliary/empty2.rs | 0 .../auxiliary/extern-builtin-type-impl-dep.rs | 0 .../intra-doc/auxiliary/extern-inherent-impl-dep.rs | 0 .../intra-doc/auxiliary/intra-link-extern-crate.rs | 0 .../intra-doc/auxiliary/intra-link-pub-use.rs | 0 .../intra-link-reexport-additional-docs.rs | 0 .../auxiliary/intra-links-external-traits.rs | 0 .../rustdoc/intra-doc/auxiliary/issue-103463-aux.rs | 0 .../rustdoc/intra-doc/auxiliary/issue-66159-1.rs | 0 .../rustdoc/intra-doc/auxiliary/my-core.rs | 0 .../rustdoc/intra-doc/auxiliary/proc-macro-macro.rs | 0 .../rustdoc/intra-doc/auxiliary/pub-struct.rs | 0 {src/test => tests}/rustdoc/intra-doc/basic.rs | 0 .../rustdoc/intra-doc/builtin-macros.rs | 0 .../rustdoc/intra-doc/crate-relative-assoc.rs | 0 .../rustdoc/intra-doc/crate-relative.rs | 0 .../rustdoc/intra-doc/cross-crate/additional_doc.rs | 0 .../cross-crate/auxiliary/additional_doc.rs | 0 .../intra-doc/cross-crate/auxiliary/hidden.rs | 0 .../cross-crate/auxiliary/intra-doc-basic.rs | 0 .../auxiliary/intra-link-cross-crate-crate.rs | 0 .../intra-doc/cross-crate/auxiliary/macro_inner.rs | 0 .../intra-doc/cross-crate/auxiliary/module.rs | 0 .../intra-doc/cross-crate/auxiliary/proc_macro.rs | 0 .../cross-crate/auxiliary/submodule-inner.rs | 0 .../cross-crate/auxiliary/submodule-outer.rs | 0 .../intra-doc/cross-crate/auxiliary/traits.rs | 0 .../rustdoc/intra-doc/cross-crate/basic.rs | 0 .../rustdoc/intra-doc/cross-crate/crate.rs | 0 .../rustdoc/intra-doc/cross-crate/hidden.rs | 0 .../rustdoc/intra-doc/cross-crate/macro.rs | 0 .../rustdoc/intra-doc/cross-crate/module.rs | 0 .../intra-doc/cross-crate/submodule-inner.rs | 0 .../intra-doc/cross-crate/submodule-outer.rs | 0 .../rustdoc/intra-doc/cross-crate/traits.rs | 0 .../rustdoc/intra-doc/disambiguators-removed.rs | 0 .../rustdoc/intra-doc/email-address.rs | 0 .../rustdoc/intra-doc/enum-struct-field.rs | 0 .../rustdoc/intra-doc/extern-builtin-type-impl.rs | 0 .../intra-doc/extern-crate-only-used-in-link.rs | 0 .../rustdoc/intra-doc/extern-crate.rs | 0 .../rustdoc/intra-doc/extern-inherent-impl.rs | 0 .../rustdoc/intra-doc/extern-reference-link.rs | 0 .../test => tests}/rustdoc/intra-doc/extern-type.rs | 0 .../rustdoc/intra-doc/external-traits.rs | 0 {src/test => tests}/rustdoc/intra-doc/field.rs | 0 .../rustdoc/intra-doc/generic-params.rs | 0 .../rustdoc/intra-doc/generic-trait-impl.rs | 0 {src/test => tests}/rustdoc/intra-doc/in-bodies.rs | 0 .../rustdoc/intra-doc/issue-103463.rs | 0 .../rustdoc/intra-doc/issue-104145.rs | 0 .../test => tests}/rustdoc/intra-doc/issue-66159.rs | 0 .../test => tests}/rustdoc/intra-doc/issue-82209.rs | 0 .../rustdoc/intra-doc/libstd-re-export.rs | 0 .../rustdoc/intra-doc/macros-disambiguators.rs | 0 .../rustdoc/intra-doc/mod-ambiguity.rs | 0 .../rustdoc/intra-doc/mod-relative.rs | 0 .../rustdoc/intra-doc/no-doc-primitive.rs | 0 .../rustdoc/intra-doc/non-path-primitives.rs | 0 {src/test => tests}/rustdoc/intra-doc/prim-assoc.rs | 0 .../rustdoc/intra-doc/prim-associated-traits.rs | 0 .../rustdoc/intra-doc/prim-methods-external-core.rs | 0 .../rustdoc/intra-doc/prim-methods-local.rs | 0 .../rustdoc/intra-doc/prim-methods.rs | 0 .../rustdoc/intra-doc/prim-precedence.rs | 0 {src/test => tests}/rustdoc/intra-doc/prim-self.rs | 0 .../rustdoc/intra-doc/primitive-disambiguators.rs | 0 .../rustdoc/intra-doc/primitive-non-default-impl.rs | 0 .../rustdoc/intra-doc/private-failures-ignored.rs | 0 {src/test => tests}/rustdoc/intra-doc/private.rs | 0 {src/test => tests}/rustdoc/intra-doc/proc-macro.rs | 0 {src/test => tests}/rustdoc/intra-doc/pub-use.rs | 0 .../rustdoc/intra-doc/raw-ident-self.rs | 0 .../rustdoc/intra-doc/reexport-additional-docs.rs | 0 {src/test => tests}/rustdoc/intra-doc/self-cache.rs | 0 {src/test => tests}/rustdoc/intra-doc/self.rs | 0 {src/test => tests}/rustdoc/intra-doc/trait-impl.rs | 0 {src/test => tests}/rustdoc/intra-doc/trait-item.rs | 0 {src/test => tests}/rustdoc/intra-doc/true-false.rs | 0 {src/test => tests}/rustdoc/intra-doc/type-alias.rs | 0 {src/test => tests}/rustdoc/invalid.crate.name.rs | 0 .../issue-100204-inline-impl-through-glob-import.rs | 0 {src/test => tests}/rustdoc/issue-100241.rs | 0 {src/test => tests}/rustdoc/issue-100620.rs | 0 .../rustdoc/issue-100679-sidebar-links-deref.rs | 0 .../test => tests}/rustdoc/issue-101743-bold-tag.rs | 0 {src/test => tests}/rustdoc/issue-102154.rs | 0 {src/test => tests}/rustdoc/issue-105952.rs | 0 {src/test => tests}/rustdoc/issue-12834.rs | 0 {src/test => tests}/rustdoc/issue-13698.rs | 0 {src/test => tests}/rustdoc/issue-15169.rs | 0 {src/test => tests}/rustdoc/issue-15318-2.rs | 0 {src/test => tests}/rustdoc/issue-15318-3.rs | 0 {src/test => tests}/rustdoc/issue-15318.rs | 0 {src/test => tests}/rustdoc/issue-15347.rs | 0 {src/test => tests}/rustdoc/issue-16019.rs | 0 {src/test => tests}/rustdoc/issue-16265-1.rs | 0 {src/test => tests}/rustdoc/issue-16265-2.rs | 0 {src/test => tests}/rustdoc/issue-17476.rs | 0 {src/test => tests}/rustdoc/issue-18199.rs | 0 {src/test => tests}/rustdoc/issue-19181.rs | 0 {src/test => tests}/rustdoc/issue-19190-2.rs | 0 {src/test => tests}/rustdoc/issue-19190-3.rs | 0 {src/test => tests}/rustdoc/issue-19190.rs | 0 {src/test => tests}/rustdoc/issue-20175.rs | 0 {src/test => tests}/rustdoc/issue-20646.rs | 0 {src/test => tests}/rustdoc/issue-20727-2.rs | 0 {src/test => tests}/rustdoc/issue-20727-3.rs | 0 {src/test => tests}/rustdoc/issue-20727-4.rs | 0 {src/test => tests}/rustdoc/issue-20727.rs | 0 {src/test => tests}/rustdoc/issue-21092.rs | 0 {src/test => tests}/rustdoc/issue-21474.rs | 0 {src/test => tests}/rustdoc/issue-21801.rs | 0 {src/test => tests}/rustdoc/issue-22025.rs | 0 {src/test => tests}/rustdoc/issue-22038.rs | 0 {src/test => tests}/rustdoc/issue-23106.rs | 0 {src/test => tests}/rustdoc/issue-23207.rs | 0 {src/test => tests}/rustdoc/issue-23511.rs | 0 {src/test => tests}/rustdoc/issue-23744.rs | 0 {src/test => tests}/rustdoc/issue-23812.rs | 0 {src/test => tests}/rustdoc/issue-25001.rs | 0 {src/test => tests}/rustdoc/issue-25944.rs | 0 {src/test => tests}/rustdoc/issue-26606.rs | 0 {src/test => tests}/rustdoc/issue-26995.rs | 0 {src/test => tests}/rustdoc/issue-27104.rs | 0 {src/test => tests}/rustdoc/issue-27362.rs | 0 {src/test => tests}/rustdoc/issue-27759.rs | 0 {src/test => tests}/rustdoc/issue-27862.rs | 0 {src/test => tests}/rustdoc/issue-28478.rs | 0 {src/test => tests}/rustdoc/issue-28927.rs | 0 {src/test => tests}/rustdoc/issue-29449.rs | 0 {src/test => tests}/rustdoc/issue-29503.rs | 0 {src/test => tests}/rustdoc/issue-29584.rs | 0 {src/test => tests}/rustdoc/issue-30109.rs | 0 {src/test => tests}/rustdoc/issue-30252.rs | 0 {src/test => tests}/rustdoc/issue-30366.rs | 0 {src/test => tests}/rustdoc/issue-31808.rs | 0 {src/test => tests}/rustdoc/issue-31899.rs | 0 {src/test => tests}/rustdoc/issue-32374.rs | 0 {src/test => tests}/rustdoc/issue-32395.rs | 0 {src/test => tests}/rustdoc/issue-32556.rs | 0 {src/test => tests}/rustdoc/issue-32890.rs | 0 {src/test => tests}/rustdoc/issue-33069.rs | 0 {src/test => tests}/rustdoc/issue-33178-1.rs | 0 {src/test => tests}/rustdoc/issue-33178.rs | 0 {src/test => tests}/rustdoc/issue-33302.rs | 0 {src/test => tests}/rustdoc/issue-33592.rs | 0 {src/test => tests}/rustdoc/issue-34025.rs | 0 {src/test => tests}/rustdoc/issue-34274.rs | 0 {src/test => tests}/rustdoc/issue-34423.rs | 0 {src/test => tests}/rustdoc/issue-34473.rs | 0 {src/test => tests}/rustdoc/issue-34928.rs | 0 {src/test => tests}/rustdoc/issue-35169-2.rs | 0 {src/test => tests}/rustdoc/issue-35169.rs | 0 {src/test => tests}/rustdoc/issue-35488.rs | 0 {src/test => tests}/rustdoc/issue-36031.rs | 0 {src/test => tests}/rustdoc/issue-38129.rs | 0 {src/test => tests}/rustdoc/issue-38219.rs | 0 {src/test => tests}/rustdoc/issue-40936.rs | 0 .../rustdoc/issue-41783.codeblock.html | 0 {src/test => tests}/rustdoc/issue-41783.rs | 0 {src/test => tests}/rustdoc/issue-42760.rs | 0 {src/test => tests}/rustdoc/issue-43153.rs | 0 {src/test => tests}/rustdoc/issue-43701.rs | 0 {src/test => tests}/rustdoc/issue-43869.rs | 0 {src/test => tests}/rustdoc/issue-43893.rs | 0 {src/test => tests}/rustdoc/issue-45584.rs | 0 {src/test => tests}/rustdoc/issue-46271.rs | 0 {src/test => tests}/rustdoc/issue-46377.rs | 0 {src/test => tests}/rustdoc/issue-46380-2.rs | 0 {src/test => tests}/rustdoc/issue-46727.rs | 0 {src/test => tests}/rustdoc/issue-46766.rs | 0 {src/test => tests}/rustdoc/issue-46767.rs | 0 {src/test => tests}/rustdoc/issue-46976.rs | 0 {src/test => tests}/rustdoc/issue-47038.rs | 0 .../rustdoc/issue-47197-blank-line-in-doc-block.rs | 0 {src/test => tests}/rustdoc/issue-47639.rs | 0 {src/test => tests}/rustdoc/issue-48377.rs | 0 {src/test => tests}/rustdoc/issue-48414.rs | 0 {src/test => tests}/rustdoc/issue-50159.rs | 0 {src/test => tests}/rustdoc/issue-51236.rs | 0 {src/test => tests}/rustdoc/issue-52873.rs | 0 {src/test => tests}/rustdoc/issue-53689.rs | 0 {src/test => tests}/rustdoc/issue-53812.rs | 0 .../rustdoc/issue-54478-demo-allocator.rs | 0 {src/test => tests}/rustdoc/issue-54705.rs | 0 {src/test => tests}/rustdoc/issue-55001.rs | 0 {src/test => tests}/rustdoc/issue-55321.rs | 0 {src/test => tests}/rustdoc/issue-55364.rs | 0 {src/test => tests}/rustdoc/issue-56701.rs | 0 {src/test => tests}/rustdoc/issue-56822.rs | 0 {src/test => tests}/rustdoc/issue-57180.rs | 0 {src/test => tests}/rustdoc/issue-60482.rs | 0 {src/test => tests}/rustdoc/issue-60726.rs | 0 {src/test => tests}/rustdoc/issue-61592.rs | 0 {src/test => tests}/rustdoc/issue-67851-both.rs | 0 {src/test => tests}/rustdoc/issue-67851-hidden.rs | 0 {src/test => tests}/rustdoc/issue-67851-neither.rs | 0 {src/test => tests}/rustdoc/issue-67851-private.rs | 0 {src/test => tests}/rustdoc/issue-72340.rs | 0 .../issue-73061-cross-crate-opaque-assoc-type.rs | 0 {src/test => tests}/rustdoc/issue-74083.rs | 0 {src/test => tests}/rustdoc/issue-75588.rs | 0 {src/test => tests}/rustdoc/issue-76501.rs | 0 {src/test => tests}/rustdoc/issue-78673.rs | 0 {src/test => tests}/rustdoc/issue-78701.rs | 0 {src/test => tests}/rustdoc/issue-79201.rs | 0 .../rustdoc/issue-80233-normalize-auto-trait.rs | 0 .../rustdoc/issue-82465-asref-for-and-of-local.rs | 0 ...ultiple-mods-w-same-name-doc-inline-last-item.rs | 0 ...ue-83375-multiple-mods-w-same-name-doc-inline.rs | 0 {src/test => tests}/rustdoc/issue-85454.rs | 0 {src/test => tests}/rustdoc/issue-86620.rs | 0 {src/test => tests}/rustdoc/issue-88600.rs | 0 .../rustdoc/issue-89309-heading-levels.rs | 0 {src/test => tests}/rustdoc/issue-89852.rs | 0 {src/test => tests}/rustdoc/issue-95633.rs | 0 {src/test => tests}/rustdoc/issue-95873.rs | 0 {src/test => tests}/rustdoc/issue-96381.rs | 0 {src/test => tests}/rustdoc/issue-98697.rs | 0 ...21-multiple-macro-rules-w-same-name-submodule.rs | 0 .../issue-99221-multiple-macro-rules-w-same-name.rs | 0 .../issue-99221-multiple-structs-w-same-name.rs | 0 .../issue-99734-multiple-foreigns-w-same-name.rs | 0 .../issue-99734-multiple-mods-w-same-name.rs | 0 {src/test => tests}/rustdoc/keyword.rs | 0 {src/test => tests}/rustdoc/legacy-const-generic.rs | 0 {src/test => tests}/rustdoc/lifetime-name.rs | 0 {src/test => tests}/rustdoc/line-breaks.rs | 0 {src/test => tests}/rustdoc/link-assoc-const.rs | 0 {src/test => tests}/rustdoc/link-title-escape.rs | 0 {src/test => tests}/rustdoc/local-reexport-doc.rs | 0 {src/test => tests}/rustdoc/logo-class-default.rs | 0 {src/test => tests}/rustdoc/logo-class.rs | 0 .../rustdoc/macro-document-private-duplicate.rs | 0 .../rustdoc/macro-document-private.rs | 0 .../macro-generated-macro.macro_linebreak_pre.html | 0 .../macro-generated-macro.macro_morestuff_pre.html | 0 .../test => tests}/rustdoc/macro-generated-macro.rs | 0 .../rustdoc/macro-higher-kinded-function.rs | 0 {src/test => tests}/rustdoc/macro-in-async-block.rs | 0 {src/test => tests}/rustdoc/macro-in-closure.rs | 0 {src/test => tests}/rustdoc/macro-indirect-use.rs | 0 .../rustdoc/macro-private-not-documented.rs | 0 {src/test => tests}/rustdoc/macro_pub_in_module.rs | 0 {src/test => tests}/rustdoc/macro_rules-matchers.rs | 0 {src/test => tests}/rustdoc/macros.rs | 0 {src/test => tests}/rustdoc/manual_impl.rs | 0 {src/test => tests}/rustdoc/markdown-summaries.rs | 0 {src/test => tests}/rustdoc/masked.rs | 0 {src/test => tests}/rustdoc/method-list.rs | 0 .../mixing-doc-comments-and-attrs.S1_top-doc.html | 0 .../mixing-doc-comments-and-attrs.S2_top-doc.html | 0 .../mixing-doc-comments-and-attrs.S3_top-doc.html | 0 .../rustdoc/mixing-doc-comments-and-attrs.rs | 0 {src/test => tests}/rustdoc/mod-stackoverflow.rs | 0 {src/test => tests}/rustdoc/module-impls.rs | 0 .../rustdoc/multiple-import-levels.rs | 0 .../test => tests}/rustdoc/must_implement_one_of.rs | 0 {src/test => tests}/rustdoc/mut-params.rs | 0 {src/test => tests}/rustdoc/namespaces.rs | 0 .../test => tests}/rustdoc/negative-impl-sidebar.rs | 0 {src/test => tests}/rustdoc/negative-impl.rs | 0 {src/test => tests}/rustdoc/nested-modules.rs | 0 {src/test => tests}/rustdoc/no-compiler-reexport.rs | 0 {src/test => tests}/rustdoc/no-crate-filter.rs | 0 .../rustdoc/no-run-still-checks-lints.rs | 0 .../rustdoc/no-stack-overflow-25295.rs | 0 {src/test => tests}/rustdoc/no-unit-struct-field.rs | 0 {src/test => tests}/rustdoc/no_std-primitive.rs | 0 {src/test => tests}/rustdoc/normalize-assoc-item.rs | 0 .../rustdoc/not-wf-ambiguous-normalization.rs | 0 {src/test => tests}/rustdoc/nul-error.rs | 0 {src/test => tests}/rustdoc/playground-arg.rs | 0 {src/test => tests}/rustdoc/playground-empty.rs | 0 {src/test => tests}/rustdoc/playground-none.rs | 0 .../rustdoc/playground-syntax-error.rs | 0 {src/test => tests}/rustdoc/playground.rs | 0 {src/test => tests}/rustdoc/primitive-link.rs | 0 {src/test => tests}/rustdoc/primitive-reexport.rs | 0 {src/test => tests}/rustdoc/primitive-reference.rs | 0 .../rustdoc/primitive-slice-auto-trait.rs | 0 .../rustdoc/primitive-tuple-auto-trait.rs | 0 .../rustdoc/primitive-tuple-variadic.rs | 0 .../rustdoc/primitive-unit-auto-trait.rs | 0 {src/test => tests}/rustdoc/primitive.rs | 0 {src/test => tests}/rustdoc/primitive/no_std.rs | 0 .../rustdoc/primitive/primitive-generic-impl.rs | 0 {src/test => tests}/rustdoc/private-type-alias.rs | 0 {src/test => tests}/rustdoc/proc-macro.rs | 0 {src/test => tests}/rustdoc/process-termination.rs | 0 {src/test => tests}/rustdoc/pub-extern-crate.rs | 0 {src/test => tests}/rustdoc/pub-method.rs | 0 .../test => tests}/rustdoc/pub-use-extern-macros.rs | 0 {src/test => tests}/rustdoc/range-arg-pattern.rs | 0 .../rustdoc/raw-ident-eliminate-r-hashtag.rs | 0 {src/test => tests}/rustdoc/read-more-unneeded.rs | 0 {src/test => tests}/rustdoc/recursion1.rs | 0 {src/test => tests}/rustdoc/recursion2.rs | 0 {src/test => tests}/rustdoc/recursion3.rs | 0 .../rustdoc/recursive-deref-sidebar.rs | 0 {src/test => tests}/rustdoc/recursive-deref.rs | 0 {src/test => tests}/rustdoc/redirect-const.rs | 0 {src/test => tests}/rustdoc/redirect-map-empty.rs | 0 {src/test => tests}/rustdoc/redirect-map.rs | 0 {src/test => tests}/rustdoc/redirect-rename.rs | 0 {src/test => tests}/rustdoc/redirect.rs | 0 {src/test => tests}/rustdoc/reexport-check.rs | 0 .../rustdoc/reexport-dep-foreign-fn.rs | 0 {src/test => tests}/rustdoc/reexport-doc.rs | 0 ...ort-stability-tags-deprecated-and-portability.rs | 0 ...xport-stability-tags-unstable-and-portability.rs | 0 {src/test => tests}/rustdoc/reexports-priv.rs | 0 {src/test => tests}/rustdoc/reexports.rs | 0 {src/test => tests}/rustdoc/remove-duplicates.rs | 0 .../rustdoc/remove-url-from-headings.rs | 0 {src/test => tests}/rustdoc/return-impl-trait.rs | 0 .../rustdoc/rfc-2632-const-trait-impl.rs | 0 .../rustdoc/rustc-incoherent-impls.rs | 0 {src/test => tests}/rustdoc/rustc-macro-crate.rs | 0 {src/test => tests}/rustdoc/safe-intrinsic.rs | 0 .../rustdoc/same-crate-hidden-impl-parameter.rs | 0 {src/test => tests}/rustdoc/sanitizer-option.rs | 0 .../rustdoc/search-index-summaries.rs | 0 {src/test => tests}/rustdoc/search-index.rs | 0 .../rustdoc/short-docblock-codeblock.rs | 0 {src/test => tests}/rustdoc/short-docblock.rs | 0 {src/test => tests}/rustdoc/short-line.md | 0 {src/test => tests}/rustdoc/show-const-contents.rs | 0 {src/test => tests}/rustdoc/sidebar-all-page.rs | 0 {src/test => tests}/rustdoc/sidebar-items.rs | 0 .../rustdoc/sidebar-link-generation.rs | 0 .../rustdoc/sidebar-links-to-foreign-impl.rs | 0 {src/test => tests}/rustdoc/sized_trait.rs | 0 .../rustdoc/slice-links.link_box_generic.html | 0 .../rustdoc/slice-links.link_box_u32.html | 0 .../rustdoc/slice-links.link_slice_generic.html | 0 .../rustdoc/slice-links.link_slice_u32.html | 0 {src/test => tests}/rustdoc/slice-links.rs | 0 {src/test => tests}/rustdoc/smart-punct.rs | 0 {src/test => tests}/rustdoc/smoke.rs | 0 .../rustdoc/sort-modules-by-appearance.rs | 0 {src/test => tests}/rustdoc/source-file.rs | 0 .../rustdoc/source-version-separator.rs | 0 .../rustdoc/spotlight-from-dependency.odd.html | 0 .../rustdoc/spotlight-from-dependency.rs | 0 {src/test => tests}/rustdoc/src-links-auto-impls.rs | 0 {src/test => tests}/rustdoc/src-links-external.rs | 0 {src/test => tests}/rustdoc/src-links.rs | 0 .../rustdoc/src-links/compiletest-ignore-dir | 0 {src/test => tests}/rustdoc/src-links/fizz.rs | 0 {src/test => tests}/rustdoc/src-links/mod.rs | 0 {src/test => tests}/rustdoc/stability.rs | 0 {src/test => tests}/rustdoc/static-root-path.rs | 0 {src/test => tests}/rustdoc/static.rs | 0 .../strip-block-doc-comments-stars.docblock.html | 0 .../rustdoc/strip-block-doc-comments-stars.rs | 0 .../rustdoc/strip-enum-variant.no-not-shown.html | 0 {src/test => tests}/rustdoc/strip-enum-variant.rs | 0 {src/test => tests}/rustdoc/struct-arg-pattern.rs | 0 {src/test => tests}/rustdoc/struct-field.rs | 0 .../rustdoc/struct-implementations-title.rs | 0 {src/test => tests}/rustdoc/structfields.rs | 0 {src/test => tests}/rustdoc/synthetic_auto/basic.rs | 0 .../rustdoc/synthetic_auto/complex.rs | 0 .../rustdoc/synthetic_auto/crate-local.rs | 0 .../issue-72213-projection-lifetime.rs | 0 .../rustdoc/synthetic_auto/lifetimes.rs | 0 .../test => tests}/rustdoc/synthetic_auto/manual.rs | 0 .../rustdoc/synthetic_auto/negative.rs | 0 .../test => tests}/rustdoc/synthetic_auto/nested.rs | 0 .../rustdoc/synthetic_auto/no-redundancy.rs | 0 .../rustdoc/synthetic_auto/overflow.rs | 0 .../rustdoc/synthetic_auto/project.rs | 0 .../rustdoc/synthetic_auto/self-referential.rs | 0 .../rustdoc/synthetic_auto/static-region.rs | 0 {src/test => tests}/rustdoc/tab_title.rs | 0 {src/test => tests}/rustdoc/table-in-docblock.rs | 0 {src/test => tests}/rustdoc/task-lists.rs | 0 {src/test => tests}/rustdoc/test-lists.rs | 0 {src/test => tests}/rustdoc/test-parens.rs | 0 {src/test => tests}/rustdoc/test-strikethrough.rs | 0 .../test => tests}/rustdoc/test_option_check/bar.rs | 0 .../rustdoc/test_option_check/test.rs | 0 {src/test => tests}/rustdoc/thread-local-src.rs | 0 {src/test => tests}/rustdoc/titles.rs | 0 {src/test => tests}/rustdoc/toggle-item-contents.rs | 0 {src/test => tests}/rustdoc/toggle-method.rs | 0 {src/test => tests}/rustdoc/toggle-trait-fn.rs | 0 {src/test => tests}/rustdoc/trait-alias-mention.rs | 0 .../rustdoc/trait-impl-items-links-and-anchors.rs | 0 {src/test => tests}/rustdoc/trait-impl.rs | 0 {src/test => tests}/rustdoc/trait-self-link.rs | 0 {src/test => tests}/rustdoc/trait-src-link.rs | 0 {src/test => tests}/rustdoc/trait-visibility.rs | 0 {src/test => tests}/rustdoc/trait_alias.rs | 0 .../rustdoc/traits-in-bodies-private.rs | 0 {src/test => tests}/rustdoc/traits-in-bodies.rs | 0 .../rustdoc/tuple-struct-fields-doc.rs | 0 {src/test => tests}/rustdoc/tuples.link1_i32.html | 0 {src/test => tests}/rustdoc/tuples.link1_t.html | 0 {src/test => tests}/rustdoc/tuples.link2_i32.html | 0 {src/test => tests}/rustdoc/tuples.link2_t.html | 0 {src/test => tests}/rustdoc/tuples.link2_tu.html | 0 {src/test => tests}/rustdoc/tuples.link_unit.html | 0 {src/test => tests}/rustdoc/tuples.rs | 0 .../rustdoc/type-layout-flag-required.rs | 0 {src/test => tests}/rustdoc/type-layout.rs | 0 {src/test => tests}/rustdoc/typedef.rs | 0 {src/test => tests}/rustdoc/unindent.md | 0 {src/test => tests}/rustdoc/unindent.rs | 0 {src/test => tests}/rustdoc/union.rs | 0 {src/test => tests}/rustdoc/unit-return.rs | 0 {src/test => tests}/rustdoc/universal-impl-trait.rs | 0 .../rustdoc/unneeded-trait-implementations-title.rs | 0 {src/test => tests}/rustdoc/use-attr.rs | 0 .../rustdoc/useless_lifetime_bound.rs | 0 {src/test => tests}/rustdoc/variadic.rs | 0 .../rustdoc/version-separator-without-source.rs | 0 {src/test => tests}/rustdoc/viewpath-rename.rs | 0 {src/test => tests}/rustdoc/viewpath-self.rs | 0 {src/test => tests}/rustdoc/visibility.rs | 0 {src/test => tests}/rustdoc/where-clause-order.rs | 0 {src/test => tests}/rustdoc/where-sized.rs | 0 .../rustdoc/where.SWhere_Simd_item-decl.html | 0 .../rustdoc/where.SWhere_TraitWhere_item-decl.html | 0 {src/test => tests}/rustdoc/where.rs | 0 .../rustdoc/whitespace-after-where-clause.enum.html | 0 .../whitespace-after-where-clause.enum2.html | 0 .../rustdoc/whitespace-after-where-clause.rs | 0 .../whitespace-after-where-clause.struct.html | 0 .../whitespace-after-where-clause.struct2.html | 0 .../whitespace-after-where-clause.trait.html | 0 .../whitespace-after-where-clause.trait2.html | 0 .../whitespace-after-where-clause.union.html | 0 .../whitespace-after-where-clause.union2.html | 0 {src/test => tests}/rustdoc/without-redirect.rs | 0 {src/test => tests}/rustdoc/wrapping.rs | 0 .../ui-fulldeps/auxiliary/empty-plugin.rs | 0 .../ui-fulldeps/auxiliary/issue-13560-1.rs | 0 .../ui-fulldeps/auxiliary/issue-13560-2.rs | 0 .../ui-fulldeps/auxiliary/issue-13560-3.rs | 0 .../ui-fulldeps/auxiliary/issue-16822.rs | 0 .../ui-fulldeps/auxiliary/issue-18502.rs | 0 .../ui-fulldeps/auxiliary/issue-24106.rs | 0 .../ui-fulldeps/auxiliary/issue-40001-plugin.rs | 0 .../ui-fulldeps/auxiliary/lint-for-crate-rpass.rs | 0 .../ui-fulldeps/auxiliary/lint-for-crate.rs | 0 .../ui-fulldeps/auxiliary/lint-group-plugin-test.rs | 0 .../ui-fulldeps/auxiliary/lint-plugin-test.rs | 0 .../ui-fulldeps/auxiliary/lint-tool-test.rs | 0 .../auxiliary/lto-syntax-extension-lib.rs | 0 .../auxiliary/lto-syntax-extension-plugin.rs | 0 .../ui-fulldeps/auxiliary/multiple-plugins-1.rs | 0 .../ui-fulldeps/auxiliary/multiple-plugins-2.rs | 0 .../auxiliary/outlive-expansion-phase.rs | 0 .../ui-fulldeps/auxiliary/rlib-crate-test.rs | 0 .../auxiliary/syntax-extension-with-dll-deps-1.rs | 0 {src/test => tests}/ui-fulldeps/compiler-calls.rs | 0 .../ui-fulldeps/create-dir-all-bare.rs | 0 .../ui-fulldeps/deriving-encodable-decodable-box.rs | 0 .../deriving-encodable-decodable-cell-refcell.rs | 0 {src/test => tests}/ui-fulldeps/deriving-global.rs | 0 {src/test => tests}/ui-fulldeps/deriving-hygiene.rs | 0 .../ui-fulldeps/dropck-tarena-cycle-checked.rs | 0 .../ui-fulldeps/dropck-tarena-cycle-checked.stderr | 0 .../ui-fulldeps/dropck-tarena-unsound-drop.rs | 0 .../ui-fulldeps/dropck-tarena-unsound-drop.stderr | 0 .../ui-fulldeps/dropck_tarena_sound_drop.rs | 0 .../ui-fulldeps/empty-struct-braces-derive.rs | 0 .../test => tests}/ui-fulldeps/extern-mod-syntax.rs | 0 .../ui-fulldeps/feature-gate-plugin.rs | 0 .../ui-fulldeps/feature-gate-plugin.stderr | 0 .../ui-fulldeps/fluent-messages/duplicate-a-b.ftl | 0 .../ui-fulldeps/fluent-messages/duplicate-a.ftl | 0 .../fluent-messages/label-with-hyphens.ftl | 0 .../fluent-messages/missing-crate-name.ftl | 0 .../ui-fulldeps/fluent-messages/missing-message.ftl | 0 .../fluent-messages/slug-with-hyphens.ftl | 0 .../ui-fulldeps/fluent-messages/test.rs | 0 .../ui-fulldeps/fluent-messages/test.stderr | 0 .../ui-fulldeps/fluent-messages/valid.ftl | 0 {src/test => tests}/ui-fulldeps/gated-plugin.rs | 0 {src/test => tests}/ui-fulldeps/gated-plugin.stderr | 0 .../ui-fulldeps/hash-stable-is-unstable.rs | 0 .../ui-fulldeps/hash-stable-is-unstable.stderr | 0 .../ui-fulldeps/internal-lints/bad_opt_access.rs | 0 .../internal-lints/bad_opt_access.stderr | 0 .../internal-lints/default_hash_types.rs | 0 .../internal-lints/default_hash_types.stderr | 0 .../ui-fulldeps/internal-lints/diagnostics.rs | 0 .../ui-fulldeps/internal-lints/diagnostics.stderr | 0 .../internal-lints/diagnostics_incorrect.rs | 0 .../internal-lints/diagnostics_incorrect.stderr | 0 .../internal-lints/existing_doc_keyword.rs | 0 .../internal-lints/existing_doc_keyword.stderr | 0 .../internal-lints/lint_pass_impl_without_macro.rs | 0 .../lint_pass_impl_without_macro.stderr | 0 .../internal-lints/qualified_ty_ty_ctxt.rs | 0 .../internal-lints/qualified_ty_ty_ctxt.stderr | 0 .../ui-fulldeps/internal-lints/query_stability.rs | 0 .../internal-lints/query_stability.stderr | 0 .../internal-lints/query_stability_incorrect.rs | 0 .../internal-lints/query_stability_incorrect.stderr | 0 .../internal-lints/rustc_pass_by_value.rs | 0 .../internal-lints/rustc_pass_by_value.stderr | 0 .../internal-lints/rustc_pass_by_value_self.rs | 0 .../internal-lints/rustc_pass_by_value_self.stderr | 0 .../ui-fulldeps/internal-lints/ty_tykind_usage.rs | 0 .../internal-lints/ty_tykind_usage.stderr | 0 {src/test => tests}/ui-fulldeps/issue-11881.rs | 0 {src/test => tests}/ui-fulldeps/issue-13560.rs | 0 {src/test => tests}/ui-fulldeps/issue-14021.rs | 0 {src/test => tests}/ui-fulldeps/issue-15149.rs | 0 {src/test => tests}/ui-fulldeps/issue-15778-fail.rs | 0 .../ui-fulldeps/issue-15778-fail.stderr | 0 {src/test => tests}/ui-fulldeps/issue-15924.rs | 0 {src/test => tests}/ui-fulldeps/issue-16822.rs | 0 {src/test => tests}/ui-fulldeps/issue-18502.rs | 0 {src/test => tests}/ui-fulldeps/issue-24106.rs | 0 {src/test => tests}/ui-fulldeps/issue-2804.rs | 0 {src/test => tests}/ui-fulldeps/issue-40001.rs | 0 {src/test => tests}/ui-fulldeps/issue-40001.stderr | 0 .../ui-fulldeps/issue-81357-unsound-file-methods.rs | 0 .../ui-fulldeps/lint-group-denied-lint-allowed.rs | 0 .../lint-group-forbid-always-trumps-cli.rs | 0 .../lint-group-forbid-always-trumps-cli.stderr | 0 .../ui-fulldeps/lint-group-plugin-deny-cmdline.rs | 0 .../lint-group-plugin-deny-cmdline.stderr | 0 .../test => tests}/ui-fulldeps/lint-group-plugin.rs | 0 .../ui-fulldeps/lint-group-plugin.stderr | 0 {src/test => tests}/ui-fulldeps/lint-pass-macros.rs | 0 .../ui-fulldeps/lint-plugin-cmdline-allow.rs | 0 .../ui-fulldeps/lint-plugin-cmdline-allow.stderr | 0 .../ui-fulldeps/lint-plugin-cmdline-load.rs | 0 .../ui-fulldeps/lint-plugin-cmdline-load.stderr | 0 .../ui-fulldeps/lint-plugin-deny-attr.rs | 0 .../ui-fulldeps/lint-plugin-deny-attr.stderr | 0 .../ui-fulldeps/lint-plugin-deny-cmdline.rs | 0 .../ui-fulldeps/lint-plugin-deny-cmdline.stderr | 0 .../ui-fulldeps/lint-plugin-forbid-attrs.rs | 0 .../ui-fulldeps/lint-plugin-forbid-attrs.stderr | 0 .../ui-fulldeps/lint-plugin-forbid-cmdline.rs | 0 .../ui-fulldeps/lint-plugin-forbid-cmdline.stderr | 0 {src/test => tests}/ui-fulldeps/lint-plugin.rs | 0 {src/test => tests}/ui-fulldeps/lint-plugin.stderr | 0 .../ui-fulldeps/lint-tool-cmdline-allow.rs | 0 .../ui-fulldeps/lint-tool-cmdline-allow.stderr | 0 {src/test => tests}/ui-fulldeps/lint-tool-test.rs | 0 .../ui-fulldeps/lint-tool-test.stderr | 0 .../ui-fulldeps/lto-syntax-extension.rs | 0 .../ui-fulldeps/lto-syntax-extension.stderr | 0 {src/test => tests}/ui-fulldeps/macro-crate-rlib.rs | 0 .../ui-fulldeps/macro-crate-rlib.stderr | 0 .../ui-fulldeps/missing-rustc-driver-error.rs | 0 .../ui-fulldeps/missing-rustc-driver-error.stderr | 0 .../ui-fulldeps/mod_dir_path_canonicalized.rs | 0 .../mod_dir_simple/compiletest-ignore-dir | 0 .../ui-fulldeps/mod_dir_simple/test.rs | 0 {src/test => tests}/ui-fulldeps/multiple-plugins.rs | 0 .../ui-fulldeps/multiple-plugins.stderr | 0 {src/test => tests}/ui-fulldeps/myriad-closures.rs | 0 .../ui-fulldeps/outlive-expansion-phase.rs | 0 .../ui-fulldeps/outlive-expansion-phase.stderr | 0 .../ui-fulldeps/pathless-extern-unstable.rs | 0 .../ui-fulldeps/pathless-extern-unstable.stderr | 0 {src/test => tests}/ui-fulldeps/plugin-args.rs | 0 {src/test => tests}/ui-fulldeps/plugin-args.stderr | 0 .../ui-fulldeps/plugin-as-extern-crate.rs | 0 .../ui-fulldeps/pprust-expr-roundtrip.rs | 0 {src/test => tests}/ui-fulldeps/regions-mock-tcx.rs | 0 {src/test => tests}/ui-fulldeps/rename-directory.rs | 0 .../ui-fulldeps/rustc_encodable_hygiene.rs | 0 .../session-diagnostic/diagnostic-derive.rs | 0 .../session-diagnostic/diagnostic-derive.stderr | 0 .../session-diagnostic/enforce_slug_naming.rs | 0 .../session-diagnostic/enforce_slug_naming.stderr | 0 .../session-diagnostic/subdiagnostic-derive.rs | 0 .../session-diagnostic/subdiagnostic-derive.stderr | 0 {src/test => tests}/ui-fulldeps/stdio-from.rs | 0 {src/test => tests}/ui-fulldeps/switch-stdout.rs | 0 {src/test => tests}/ui/.gitattributes | 0 .../test => tests}/ui/abi/abi-sysv64-arg-passing.rs | 0 .../ui/abi/abi-sysv64-register-usage.rs | 0 {src/test => tests}/ui/abi/abi-typo-unstable.rs | 0 {src/test => tests}/ui/abi/abi-typo-unstable.stderr | 0 {src/test => tests}/ui/abi/anon-extern-mod.rs | 0 {src/test => tests}/ui/abi/c-stack-as-value.rs | 0 .../ui/abi/c-stack-returning-int64.rs | 0 {src/test => tests}/ui/abi/cabi-int-widening.rs | 0 .../cross-crate/anon-extern-mod-cross-crate-2.rs | 0 .../auxiliary/anon-extern-mod-cross-crate-1.rs | 0 .../ui/abi/cross-crate/duplicated-external-mods.rs | 0 .../extern/auxiliary/extern-crosscrate-source.rs | 0 .../ui/abi/extern/extern-call-deep.rs | 0 .../ui/abi/extern/extern-call-deep2.rs | 0 .../ui/abi/extern/extern-call-direct.rs | 0 .../ui/abi/extern/extern-call-indirect.rs | 0 .../ui/abi/extern/extern-call-scrub.rs | 0 .../ui/abi/extern/extern-crosscrate.rs | 0 .../ui/abi/extern/extern-pass-TwoU16s.rs | 0 .../ui/abi/extern/extern-pass-TwoU32s.rs | 0 .../ui/abi/extern/extern-pass-TwoU64s.rs | 0 .../ui/abi/extern/extern-pass-TwoU8s.rs | 0 .../ui/abi/extern/extern-pass-char.rs | 0 .../ui/abi/extern/extern-pass-double.rs | 0 .../ui/abi/extern/extern-pass-empty.rs | 0 .../test => tests}/ui/abi/extern/extern-pass-u32.rs | 0 .../test => tests}/ui/abi/extern/extern-pass-u64.rs | 0 .../ui/abi/extern/extern-return-TwoU16s.rs | 0 .../ui/abi/extern/extern-return-TwoU32s.rs | 0 .../ui/abi/extern/extern-return-TwoU64s.rs | 0 .../ui/abi/extern/extern-return-TwoU8s.rs | 0 .../ui/abi/foreign/auxiliary/foreign_lib.rs | 0 .../ui/abi/foreign/foreign-call-no-runtime.rs | 0 {src/test => tests}/ui/abi/foreign/foreign-dupe.rs | 0 .../ui/abi/foreign/foreign-fn-with-byval.rs | 0 .../test => tests}/ui/abi/foreign/foreign-no-abi.rs | 0 .../ui/abi/foreign/invoke-external-foreign.rs | 0 .../abi/homogenous-floats-target-feature-mixup.rs | 0 {src/test => tests}/ui/abi/issue-28676.rs | 0 .../ui/abi/issues/issue-22565-rust-call.rs | 0 .../ui/abi/issues/issue-22565-rust-call.stderr | 0 .../abi/issues/issue-62350-sysv-neg-reg-counts.rs | 0 .../issue-97463-broken-abi-leaked-uninit-data.rs | 0 {src/test => tests}/ui/abi/lib-defaults.rs | 0 .../ui/abi/mir/mir_codegen_calls_variadic.rs | 0 .../ui/abi/nullable-pointer-ffi-compat.rs | 0 .../ui/abi/numbers-arithmetic/i128-ffi.rs | 0 {src/test => tests}/ui/abi/rustcall-generic.rs | 0 .../ui/abi/segfault-no-out-of-stack.rs | 0 {src/test => tests}/ui/abi/stack-probes-lto.rs | 0 {src/test => tests}/ui/abi/stack-probes.rs | 0 {src/test => tests}/ui/abi/stack-protector.rs | 0 .../ui/abi/statics/static-mut-foreign.rs | 0 .../ui/abi/struct-enums/struct-return.rs | 0 {src/test => tests}/ui/abi/union/union-c-interop.rs | 0 .../ui/abi/unsupported.aarch64.stderr | 0 {src/test => tests}/ui/abi/unsupported.arm.stderr | 0 {src/test => tests}/ui/abi/unsupported.i686.stderr | 0 {src/test => tests}/ui/abi/unsupported.rs | 0 {src/test => tests}/ui/abi/unsupported.x64.stderr | 0 {src/test => tests}/ui/abi/variadic-ffi.rs | 0 {src/test => tests}/ui/abi/x86stdcall.rs | 0 {src/test => tests}/ui/abi/x86stdcall2.rs | 0 {src/test => tests}/ui/alias-uninit-value.rs | 0 .../alloc-error-handler-bad-signature-1.rs | 0 .../alloc-error-handler-bad-signature-1.stderr | 0 .../alloc-error-handler-bad-signature-2.rs | 0 .../alloc-error-handler-bad-signature-2.stderr | 0 .../alloc-error-handler-bad-signature-3.rs | 0 .../alloc-error-handler-bad-signature-3.stderr | 0 .../ui/alloc-error/default-alloc-error-hook.rs | 0 {src/test => tests}/ui/allocator/allocator-args.rs | 0 .../ui/allocator/allocator-args.stderr | 0 .../ui/allocator/auxiliary/custom-as-global.rs | 0 .../test => tests}/ui/allocator/auxiliary/custom.rs | 0 .../test => tests}/ui/allocator/auxiliary/helper.rs | 0 .../ui/allocator/auxiliary/system-allocator.rs | 0 .../ui/allocator/auxiliary/system-allocator2.rs | 0 {src/test => tests}/ui/allocator/custom-in-block.rs | 0 .../ui/allocator/custom-in-submodule.rs | 0 {src/test => tests}/ui/allocator/custom.rs | 0 .../ui/allocator/function-allocator.rs | 0 .../ui/allocator/function-allocator.stderr | 0 {src/test => tests}/ui/allocator/hygiene.rs | 0 .../allocator/no_std-alloc-error-handler-custom.rs | 0 .../allocator/no_std-alloc-error-handler-default.rs | 0 .../test => tests}/ui/allocator/not-an-allocator.rs | 0 .../ui/allocator/not-an-allocator.stderr | 0 {src/test => tests}/ui/allocator/object-safe.rs | 0 {src/test => tests}/ui/allocator/two-allocators.rs | 0 .../ui/allocator/two-allocators.stderr | 0 {src/test => tests}/ui/allocator/two-allocators2.rs | 0 .../ui/allocator/two-allocators2.stderr | 0 {src/test => tests}/ui/allocator/two-allocators3.rs | 0 .../ui/allocator/two-allocators3.stderr | 0 {src/test => tests}/ui/allocator/xcrate-use.rs | 0 {src/test => tests}/ui/allocator/xcrate-use2.rs | 0 .../ui/annotate-snippet/auxiliary/multispan.rs | 0 .../ui/annotate-snippet/missing-type.rs | 0 .../ui/annotate-snippet/missing-type.stderr | 0 .../test => tests}/ui/annotate-snippet/multispan.rs | 0 .../ui/annotate-snippet/multispan.stderr | 0 .../ui/anon-params/anon-params-denied-2018.rs | 0 .../ui/anon-params/anon-params-denied-2018.stderr | 0 .../ui/anon-params/anon-params-deprecated.fixed | 0 .../ui/anon-params/anon-params-deprecated.rs | 0 .../ui/anon-params/anon-params-deprecated.stderr | 0 .../ui/anon-params/anon-params-edition-hygiene.rs | 0 .../auxiliary/anon-params-edition-hygiene.rs | 0 .../ui/anonymous-higher-ranked-lifetime.rs | 0 .../ui/anonymous-higher-ranked-lifetime.stderr | 0 .../test => tests}/ui/argument-suggestions/basic.rs | 0 .../ui/argument-suggestions/basic.stderr | 0 .../ui/argument-suggestions/complex.rs | 0 .../ui/argument-suggestions/complex.stderr | 0 .../argument-suggestions/display-is-suggestable.rs | 0 .../display-is-suggestable.stderr | 0 .../ui/argument-suggestions/exotic-calls.rs | 0 .../ui/argument-suggestions/exotic-calls.stderr | 0 .../ui/argument-suggestions/extern-fn-arg-names.rs | 0 .../argument-suggestions/extern-fn-arg-names.stderr | 0 .../ui/argument-suggestions/extra_arguments.rs | 0 .../ui/argument-suggestions/extra_arguments.stderr | 0 .../formal-and-expected-differ.rs | 0 .../formal-and-expected-differ.stderr | 0 .../ui/argument-suggestions/invalid_arguments.rs | 0 .../argument-suggestions/invalid_arguments.stderr | 0 .../ui/argument-suggestions/issue-100154.rs | 0 .../ui/argument-suggestions/issue-100154.stderr | 0 .../ui/argument-suggestions/issue-100478.rs | 0 .../ui/argument-suggestions/issue-100478.stderr | 0 .../ui/argument-suggestions/issue-101097.rs | 0 .../ui/argument-suggestions/issue-101097.stderr | 0 .../ui/argument-suggestions/issue-96638.rs | 0 .../ui/argument-suggestions/issue-96638.stderr | 0 .../ui/argument-suggestions/issue-97197.rs | 0 .../ui/argument-suggestions/issue-97197.stderr | 0 .../ui/argument-suggestions/issue-97484.rs | 0 .../ui/argument-suggestions/issue-97484.stderr | 0 .../ui/argument-suggestions/issue-98894.rs | 0 .../ui/argument-suggestions/issue-98894.stderr | 0 .../ui/argument-suggestions/issue-98897.rs | 0 .../ui/argument-suggestions/issue-98897.stderr | 0 .../ui/argument-suggestions/issue-99482.rs | 0 .../ui/argument-suggestions/issue-99482.stderr | 0 .../ui/argument-suggestions/missing_arguments.rs | 0 .../argument-suggestions/missing_arguments.stderr | 0 .../ui/argument-suggestions/mixed_cases.rs | 0 .../ui/argument-suggestions/mixed_cases.stderr | 0 .../ui/argument-suggestions/permuted_arguments.rs | 0 .../argument-suggestions/permuted_arguments.stderr | 0 .../ui/argument-suggestions/swapped_arguments.rs | 0 .../argument-suggestions/swapped_arguments.stderr | 0 .../ui/argument-suggestions/too-long.rs | 0 .../ui/argument-suggestions/too-long.stderr | 0 .../ui/argument-suggestions/two-mismatch-notes.rs | 0 .../argument-suggestions/two-mismatch-notes.stderr | 0 .../ui/array-slice-vec/array-break-length.rs | 0 .../ui/array-slice-vec/array-break-length.stderr | 0 .../ui/array-slice-vec/array-not-vector.rs | 0 .../ui/array-slice-vec/array-not-vector.stderr | 0 .../ui/array-slice-vec/array_const_index-0.rs | 0 .../ui/array-slice-vec/array_const_index-0.stderr | 0 .../ui/array-slice-vec/array_const_index-1.rs | 0 .../ui/array-slice-vec/array_const_index-1.stderr | 0 .../ui/array-slice-vec/array_const_index-2.rs | 0 .../ui/array-slice-vec/bounds-check-no-overflow.rs | 0 .../ui/array-slice-vec/box-of-array-of-drop-1.rs | 0 .../ui/array-slice-vec/box-of-array-of-drop-2.rs | 0 .../ui/array-slice-vec/byte-literals.rs | 0 .../ui/array-slice-vec/cast-in-array-size.rs | 0 .../ui/array-slice-vec/check-static-mut-slices.rs | 0 .../ui/array-slice-vec/check-static-slice.rs | 0 .../ui/array-slice-vec/copy-out-of-array-1.rs | 0 .../ui/array-slice-vec/destructure-array-1.rs | 0 .../ui/array-slice-vec/dst-raw-slice.rs | 0 .../ui/array-slice-vec/empty-mutable-vec.rs | 0 .../test => tests}/ui/array-slice-vec/estr-slice.rs | 0 .../test => tests}/ui/array-slice-vec/evec-slice.rs | 0 .../ui/array-slice-vec/fixed_length_copy.rs | 0 .../ui/array-slice-vec/huge-largest-array.rs | 0 .../ui/array-slice-vec/infer_array_len.rs | 0 .../ui/array-slice-vec/infer_array_len.stderr | 0 .../ui/array-slice-vec/issue-15730.rs | 0 .../ui/array-slice-vec/issue-18425.rs | 0 .../issue-69103-extra-binding-subslice.rs | 0 .../issue-69103-extra-binding-subslice.stderr | 0 .../ui/array-slice-vec/ivec-pass-by-value.rs | 0 .../ui/array-slice-vec/match_arr_unknown_len.rs | 0 .../ui/array-slice-vec/match_arr_unknown_len.stderr | 0 .../ui/array-slice-vec/mut-vstore-expr.rs | 0 .../mutability-inherits-through-fixed-length-vec.rs | 0 .../ui/array-slice-vec/mutable-alias-vec.rs | 0 .../ui/array-slice-vec/nested-vec-1.rs | 0 .../ui/array-slice-vec/nested-vec-2.rs | 0 .../ui/array-slice-vec/nested-vec-3.rs | 0 .../array-slice-vec/new-style-fixed-length-vec.rs | 0 .../ui/array-slice-vec/rcvr-borrowed-to-slice.rs | 0 .../ui/array-slice-vec/repeat_empty_ok.rs | 0 .../ui/array-slice-vec/repeat_empty_ok.stderr | 0 .../ui/array-slice-vec/repeated-vector-syntax.rs | 0 .../ui/array-slice-vec/show-boxed-slice.rs | 0 {src/test => tests}/ui/array-slice-vec/slice-2.rs | 0 .../ui/array-slice-vec/slice-2.stderr | 0 .../ui/array-slice-vec/slice-mut-2.rs | 0 .../ui/array-slice-vec/slice-mut-2.stderr | 0 {src/test => tests}/ui/array-slice-vec/slice-mut.rs | 0 .../ui/array-slice-vec/slice-mut.stderr | 0 .../array-slice-vec/slice-of-zero-size-elements.rs | 0 .../ui/array-slice-vec/slice-panic-1.rs | 0 .../ui/array-slice-vec/slice-panic-2.rs | 0 .../ui/array-slice-vec/slice-pat-type-mismatches.rs | 0 .../slice-pat-type-mismatches.stderr | 0 .../ui/array-slice-vec/slice-to-vec-comparison.rs | 0 .../array-slice-vec/slice-to-vec-comparison.stderr | 0 {src/test => tests}/ui/array-slice-vec/slice.rs | 0 .../ui/array-slice-vec/slice_binary_search.rs | 0 .../ui/array-slice-vec/slice_is_sorted_by_borrow.rs | 0 .../subslice-only-once-semantic-restriction.rs | 0 .../subslice-only-once-semantic-restriction.stderr | 0 .../subslice-patterns-const-eval-match.rs | 0 .../array-slice-vec/subslice-patterns-const-eval.rs | 0 .../ui/array-slice-vec/suggest-array-length.fixed | 0 .../ui/array-slice-vec/suggest-array-length.rs | 0 .../ui/array-slice-vec/suggest-array-length.stderr | 0 .../ui/array-slice-vec/variance-vec-covariant.rs | 0 {src/test => tests}/ui/array-slice-vec/vec-dst.rs | 0 .../ui/array-slice-vec/vec-fixed-length.rs | 0 .../ui/array-slice-vec/vec-late-init.rs | 0 .../ui/array-slice-vec/vec-macro-no-std.rs | 0 .../ui/array-slice-vec/vec-macro-rvalue-scope.rs | 0 .../ui/array-slice-vec/vec-macro-with-brackets.rs | 0 .../ui/array-slice-vec/vec-macro-with-comma-only.rs | 0 .../vec-macro-with-comma-only.stderr | 0 .../vec-macro-with-trailing-comma.rs | 0 .../ui/array-slice-vec/vec-matching-autoslice.rs | 0 .../ui/array-slice-vec/vec-matching-fixed.rs | 0 .../ui/array-slice-vec/vec-matching-fold.rs | 0 .../vec-matching-legal-tail-element-borrow.rs | 0 .../ui/array-slice-vec/vec-matching.rs | 0 .../ui/array-slice-vec/vec-mut-iter-borrow.rs | 0 .../ui/array-slice-vec/vec-mut-iter-borrow.stderr | 0 .../ui/array-slice-vec/vec-overrun.rs | 0 .../ui/array-slice-vec/vec-repeat-with-cast.rs | 0 .../ui/array-slice-vec/vec-res-add.rs | 0 .../ui/array-slice-vec/vec-res-add.stderr | 0 .../ui/array-slice-vec/vec-tail-matching.rs | 0 .../ui/array-slice-vec/vector-cast-weirdness.rs | 0 .../ui/array-slice-vec/vector-cast-weirdness.stderr | 0 .../ui/array-slice-vec/vector-no-ann-2.rs | 0 .../ui/array-slice-vec/vector-no-ann.rs | 0 .../ui/array-slice-vec/vector-no-ann.stderr | 0 {src/test => tests}/ui/artificial-block.rs | 0 {src/test => tests}/ui/as-precedence.rs | 0 {src/test => tests}/ui/asm/aarch64/bad-options.rs | 0 .../ui/asm/aarch64/bad-options.stderr | 0 {src/test => tests}/ui/asm/aarch64/bad-reg.rs | 0 {src/test => tests}/ui/asm/aarch64/bad-reg.stderr | 0 {src/test => tests}/ui/asm/aarch64/const.rs | 0 .../ui/asm/aarch64/duplicate-options.fixed | 0 .../ui/asm/aarch64/duplicate-options.rs | 0 .../ui/asm/aarch64/duplicate-options.stderr | 0 .../ui/asm/aarch64/interpolated-idents.rs | 0 .../ui/asm/aarch64/interpolated-idents.stderr | 0 {src/test => tests}/ui/asm/aarch64/llvm-58384.rs | 0 {src/test => tests}/ui/asm/aarch64/may_unwind.rs | 0 {src/test => tests}/ui/asm/aarch64/parse-error.rs | 0 .../ui/asm/aarch64/parse-error.stderr | 0 {src/test => tests}/ui/asm/aarch64/srcloc.rs | 0 {src/test => tests}/ui/asm/aarch64/srcloc.stderr | 0 {src/test => tests}/ui/asm/aarch64/sym.rs | 0 .../test => tests}/ui/asm/aarch64/type-check-2-2.rs | 0 .../ui/asm/aarch64/type-check-2-2.stderr | 0 {src/test => tests}/ui/asm/aarch64/type-check-2.rs | 0 .../ui/asm/aarch64/type-check-2.stderr | 0 {src/test => tests}/ui/asm/aarch64/type-check-3.rs | 0 .../ui/asm/aarch64/type-check-3.stderr | 0 {src/test => tests}/ui/asm/aarch64/type-check-4.rs | 0 .../ui/asm/aarch64/type-check-4.stderr | 0 .../ui/asm/bad-arch.mirunsafeck.stderr | 0 {src/test => tests}/ui/asm/bad-arch.rs | 0 .../ui/asm/bad-arch.thirunsafeck.stderr | 0 .../ui/asm/bad-template.aarch64_mirunsafeck.stderr | 0 .../ui/asm/bad-template.aarch64_thirunsafeck.stderr | 0 {src/test => tests}/ui/asm/bad-template.rs | 0 .../ui/asm/bad-template.x86_64_mirunsafeck.stderr | 0 .../ui/asm/bad-template.x86_64_thirunsafeck.stderr | 0 {src/test => tests}/ui/asm/generic-const.rs | 0 {src/test => tests}/ui/asm/inline-syntax.arm.stderr | 0 {src/test => tests}/ui/asm/inline-syntax.rs | 0 .../ui/asm/inline-syntax.x86_64.stderr | 0 {src/test => tests}/ui/asm/issue-72570.rs | 0 {src/test => tests}/ui/asm/issue-72570.stderr | 0 {src/test => tests}/ui/asm/issue-85247.rs | 0 {src/test => tests}/ui/asm/issue-85247.rwpi.stderr | 0 {src/test => tests}/ui/asm/issue-87802.rs | 0 {src/test => tests}/ui/asm/issue-87802.stderr | 0 {src/test => tests}/ui/asm/issue-89305.rs | 0 {src/test => tests}/ui/asm/issue-89305.stderr | 0 {src/test => tests}/ui/asm/issue-92378.rs | 0 {src/test => tests}/ui/asm/issue-97490.rs | 0 {src/test => tests}/ui/asm/issue-99071.rs | 0 {src/test => tests}/ui/asm/issue-99071.stderr | 0 {src/test => tests}/ui/asm/issue-99122-2.rs | 0 {src/test => tests}/ui/asm/issue-99122.rs | 0 {src/test => tests}/ui/asm/issue-99122.stderr | 0 {src/test => tests}/ui/asm/may_unwind.rs | 0 {src/test => tests}/ui/asm/naked-functions-ffi.rs | 0 .../ui/asm/naked-functions-ffi.stderr | 0 .../ui/asm/naked-functions-unused.aarch64.stderr | 0 .../test => tests}/ui/asm/naked-functions-unused.rs | 0 .../ui/asm/naked-functions-unused.x86_64.stderr | 0 {src/test => tests}/ui/asm/naked-functions.rs | 0 {src/test => tests}/ui/asm/naked-functions.stderr | 0 {src/test => tests}/ui/asm/naked-invalid-attr.rs | 0 .../test => tests}/ui/asm/naked-invalid-attr.stderr | 0 {src/test => tests}/ui/asm/named-asm-labels.rs | 0 {src/test => tests}/ui/asm/named-asm-labels.s | 0 {src/test => tests}/ui/asm/named-asm-labels.stderr | 0 {src/test => tests}/ui/asm/noreturn.rs | 0 {src/test => tests}/ui/asm/reg-conflict.rs | 0 {src/test => tests}/ui/asm/reg-conflict.stderr | 0 {src/test => tests}/ui/asm/type-check-1.rs | 0 {src/test => tests}/ui/asm/type-check-1.stderr | 0 {src/test => tests}/ui/asm/type-check-4.rs | 0 {src/test => tests}/ui/asm/type-check-4.stderr | 0 {src/test => tests}/ui/asm/unpretty-expanded.rs | 0 {src/test => tests}/ui/asm/unpretty-expanded.stdout | 0 .../test => tests}/ui/asm/x86_64/bad-clobber-abi.rs | 0 .../ui/asm/x86_64/bad-clobber-abi.stderr | 0 {src/test => tests}/ui/asm/x86_64/bad-options.rs | 0 .../test => tests}/ui/asm/x86_64/bad-options.stderr | 0 {src/test => tests}/ui/asm/x86_64/bad-reg.rs | 0 {src/test => tests}/ui/asm/x86_64/bad-reg.stderr | 0 {src/test => tests}/ui/asm/x86_64/const.rs | 0 .../ui/asm/x86_64/duplicate-options.fixed | 0 .../ui/asm/x86_64/duplicate-options.rs | 0 .../ui/asm/x86_64/duplicate-options.stderr | 0 .../ui/asm/x86_64/interpolated-idents.rs | 0 .../ui/asm/x86_64/interpolated-idents.stderr | 0 {src/test => tests}/ui/asm/x86_64/issue-82869.rs | 0 .../test => tests}/ui/asm/x86_64/issue-82869.stderr | 0 {src/test => tests}/ui/asm/x86_64/issue-89875.rs | 0 {src/test => tests}/ui/asm/x86_64/issue-96797.rs | 0 {src/test => tests}/ui/asm/x86_64/may_unwind.rs | 0 .../ui/asm/x86_64/multiple-clobber-abi.rs | 0 {src/test => tests}/ui/asm/x86_64/parse-error.rs | 0 .../test => tests}/ui/asm/x86_64/parse-error.stderr | 0 {src/test => tests}/ui/asm/x86_64/srcloc.rs | 0 {src/test => tests}/ui/asm/x86_64/srcloc.stderr | 0 {src/test => tests}/ui/asm/x86_64/sym.rs | 0 .../ui/asm/x86_64/target-feature-attr.rs | 0 .../ui/asm/x86_64/target-feature-attr.stderr | 0 {src/test => tests}/ui/asm/x86_64/type-check-2.rs | 0 .../ui/asm/x86_64/type-check-2.stderr | 0 {src/test => tests}/ui/asm/x86_64/type-check-3.rs | 0 .../ui/asm/x86_64/type-check-3.stderr | 0 {src/test => tests}/ui/asm/x86_64/type-check-4.rs | 0 .../ui/asm/x86_64/type-check-4.stderr | 0 {src/test => tests}/ui/asm/x86_64/type-check-5.rs | 0 .../ui/asm/x86_64/type-check-5.stderr | 0 {src/test => tests}/ui/assign-assign.rs | 0 {src/test => tests}/ui/assign-imm-local-twice.rs | 0 .../test => tests}/ui/assign-imm-local-twice.stderr | 0 {src/test => tests}/ui/assoc-lang-items.rs | 0 {src/test => tests}/ui/assoc-lang-items.stderr | 0 {src/test => tests}/ui/assoc-oddities-3.rs | 0 .../ui/associated-consts/assoc-const-eq-missing.rs | 0 .../associated-consts/assoc-const-eq-missing.stderr | 0 .../ui/associated-consts/assoc-const-ty-mismatch.rs | 0 .../assoc-const-ty-mismatch.stderr | 0 .../ui/associated-consts/assoc-const.rs | 0 .../associated-const-ambiguity-report.rs | 0 .../associated-const-ambiguity-report.stderr | 0 .../associated-consts/associated-const-array-len.rs | 0 .../associated-const-array-len.stderr | 0 .../associated-const-const-eval.rs | 0 .../associated-const-cross-crate-const-eval.rs | 0 .../associated-const-cross-crate-defaults.rs | 0 .../associated-const-cross-crate.rs | 0 .../associated-consts/associated-const-dead-code.rs | 0 .../associated-const-dead-code.stderr | 0 .../associated-const-generic-obligations.rs | 0 .../associated-const-generic-obligations.stderr | 0 .../associated-const-impl-wrong-lifetime.rs | 0 .../associated-const-impl-wrong-lifetime.stderr | 0 .../associated-const-impl-wrong-type.rs | 0 .../associated-const-impl-wrong-type.stderr | 0 .../associated-const-in-global-const.rs | 0 .../associated-consts/associated-const-in-trait.rs | 0 .../associated-const-in-trait.stderr | 0 .../associated-const-inherent-impl.rs | 0 .../associated-const-marks-live-code.rs | 0 .../associated-const-match-patterns.rs | 0 .../associated-consts/associated-const-no-item.rs | 0 .../associated-const-no-item.stderr | 0 .../associated-const-outer-ty-refs.rs | 0 .../associated-const-overwrite-default.rs | 0 .../associated-const-private-impl.rs | 0 .../associated-const-private-impl.stderr | 0 .../associated-const-public-impl.rs | 0 .../associated-const-range-match-patterns.rs | 0 .../associated-const-resolution-order.rs | 0 .../associated-consts/associated-const-self-type.rs | 0 .../associated-const-trait-bound.rs | 0 .../associated-const-type-parameter-arms.rs | 0 .../associated-const-type-parameter-arms.stderr | 0 .../associated-const-type-parameter-arrays-2.rs | 0 .../associated-const-type-parameter-arrays-2.stderr | 0 .../associated-const-type-parameter-arrays.rs | 0 .../associated-const-type-parameter-arrays.stderr | 0 .../associated-const-type-parameters.rs | 0 .../associated-const-ufcs-infer-trait.rs | 0 .../associated-const-use-default.rs | 0 .../associated-const-use-impl-of-same-trait.rs | 0 .../ui/associated-consts/associated-const.rs | 0 .../auxiliary/associated-const-cc-lib.rs | 0 .../ui/associated-consts/auxiliary/empty-struct.rs | 0 .../ui/associated-consts/defaults-cyclic-fail.rs | 0 .../associated-consts/defaults-cyclic-fail.stderr | 0 .../ui/associated-consts/defaults-cyclic-pass.rs | 0 .../associated-consts/defaults-not-assumed-fail.rs | 0 .../defaults-not-assumed-fail.stderr | 0 .../associated-consts/defaults-not-assumed-pass.rs | 0 .../ui/associated-consts/issue-102335-const.rs | 0 .../ui/associated-consts/issue-102335-const.stderr | 0 .../ui/associated-consts/issue-105330.rs | 0 .../ui/associated-consts/issue-105330.stderr | 0 ...issue-24949-assoc-const-static-recursion-impl.rs | 0 ...e-24949-assoc-const-static-recursion-impl.stderr | 0 ...49-assoc-const-static-recursion-trait-default.rs | 0 ...ssoc-const-static-recursion-trait-default.stderr | 0 ...ssue-24949-assoc-const-static-recursion-trait.rs | 0 ...-24949-assoc-const-static-recursion-trait.stderr | 0 .../ui/associated-consts/issue-47814.rs | 0 .../ui/associated-consts/issue-47814.stderr | 0 .../ui/associated-consts/issue-58022.rs | 0 .../ui/associated-consts/issue-58022.stderr | 0 .../ui/associated-consts/issue-63496.rs | 0 .../ui/associated-consts/issue-63496.stderr | 0 ...ue-69020-assoc-const-arith-overflow.noopt.stderr | 0 ...ssue-69020-assoc-const-arith-overflow.opt.stderr | 0 ...t-arith-overflow.opt_with_overflow_checks.stderr | 0 .../issue-69020-assoc-const-arith-overflow.rs | 0 .../ui/associated-consts/issue-88599-ref-self.rs | 0 .../ui/associated-consts/issue-93775.rs | 0 .../ui/associated-consts/issue-93835.rs | 0 .../ui/associated-consts/issue-93835.stderr | 0 .../ui/associated-consts/mismatched_impl_ty_1.rs | 0 .../ui/associated-consts/mismatched_impl_ty_2.rs | 0 .../ui/associated-consts/mismatched_impl_ty_3.rs | 0 .../ui/associated-consts/shadowed-const.rs | 0 .../ui/associated-consts/shadowed-const.stderr | 0 .../assoc-inherent-no-body.rs | 0 .../assoc-inherent-no-body.stderr | 0 .../assoc-inherent-private.rs | 0 .../assoc-inherent-private.stderr | 0 .../assoc-inherent-unstable.rs | 0 .../assoc-inherent-unstable.stderr | 0 .../associated-inherent-types/assoc-inherent-use.rs | 0 .../auxiliary/assoc-inherent-unstable.rs | 0 .../ui/associated-inherent-types/issue-104260.rs | 0 .../normalize-projection-0.rs | 0 .../normalize-projection-1.rs | 0 .../ui/associated-inherent-types/struct-generics.rs | 0 .../ui/associated-inherent-types/style.rs | 0 .../ui/associated-inherent-types/style.stderr | 0 .../associated-item-duplicate-bounds.rs | 0 .../associated-item-duplicate-bounds.stderr | 0 .../associated-item-duplicate-names-2.rs | 0 .../associated-item-duplicate-names-2.stderr | 0 .../associated-item-duplicate-names-3.rs | 0 .../associated-item-duplicate-names-3.stderr | 0 .../associated-item-duplicate-names.rs | 0 .../associated-item-duplicate-names.stderr | 0 .../ui/associated-item/associated-item-enum.rs | 0 .../ui/associated-item/associated-item-enum.stderr | 0 .../associated-item/associated-item-two-bounds.rs | 0 .../ui/associated-item/impl-duplicate-methods.rs | 0 .../associated-item/impl-duplicate-methods.stderr | 0 .../ui/associated-item/issue-105449.rs | 0 .../ui/associated-item/issue-48027.rs | 0 .../ui/associated-item/issue-48027.stderr | 0 .../ui/associated-item/issue-87638.fixed | 0 .../ui/associated-item/issue-87638.rs | 0 .../ui/associated-item/issue-87638.stderr | 0 {src/test => tests}/ui/associated-path-shl.rs | 0 {src/test => tests}/ui/associated-path-shl.stderr | 0 .../ambiguous-associated-type.rs | 0 .../ambiguous-associated-type2.rs | 0 .../ambiguous-associated-type2.stderr | 0 .../assoc-type-bound-through-where-clause.rs | 0 .../assoc-type-eq-with-dyn-atb-fail.rs | 0 .../assoc-type-eq-with-dyn-atb-fail.stderr | 0 .../associated-item-through-where-clause.rs | 0 .../ui/associated-type-bounds/auxiliary/fn-aux.rs | 0 .../associated-type-bounds/auxiliary/fn-dyn-aux.rs | 0 .../bad-bounds-on-assoc-in-trait.rs | 0 .../bad-bounds-on-assoc-in-trait.stderr | 0 .../ui/associated-type-bounds/binder-on-bound.rs | 0 .../associated-type-bounds/binder-on-bound.stderr | 0 .../bounds-on-assoc-in-trait.rs | 0 .../bounds-on-assoc-in-trait.stderr | 0 .../const-projection-err.gce.stderr | 0 .../associated-type-bounds/const-projection-err.rs | 0 .../const-projection-err.stock.stderr | 0 .../ui/associated-type-bounds/duplicate.rs | 0 .../ui/associated-type-bounds/duplicate.stderr | 0 .../associated-type-bounds/dyn-impl-trait-type.rs | 0 .../ui/associated-type-bounds/dyn-rpit-and-let.rs | 0 .../ui/associated-type-bounds/elision.rs | 0 .../ui/associated-type-bounds/elision.stderr | 0 .../entails-sized-object-safety.rs | 0 .../ui/associated-type-bounds/enum-bounds.rs | 0 .../ui/associated-type-bounds/fn-apit.rs | 0 .../ui/associated-type-bounds/fn-aux.rs | 0 .../ui/associated-type-bounds/fn-dyn-apit.rs | 0 .../ui/associated-type-bounds/fn-inline.rs | 0 .../ui/associated-type-bounds/fn-where.rs | 0 .../ui/associated-type-bounds/fn-wrap-apit.rs | 0 .../handle-predicates-that-can-define-assoc-type.rs | 0 .../ui/associated-type-bounds/hrtb.rs | 0 .../implied-region-constraints.rs | 0 .../implied-region-constraints.stderr | 0 .../ui/associated-type-bounds/inside-adt.rs | 0 .../ui/associated-type-bounds/inside-adt.stderr | 0 .../ui/associated-type-bounds/issue-102335-ty.rs | 0 .../associated-type-bounds/issue-102335-ty.stderr | 0 .../ui/associated-type-bounds/issue-61752.rs | 0 .../ui/associated-type-bounds/issue-70292.rs | 0 .../ui/associated-type-bounds/issue-71443-1.rs | 0 .../ui/associated-type-bounds/issue-71443-1.stderr | 0 .../ui/associated-type-bounds/issue-71443-2.rs | 0 .../ui/associated-type-bounds/issue-73818.rs | 0 .../ui/associated-type-bounds/issue-79949.rs | 0 .../ui/associated-type-bounds/issue-81193.rs | 0 .../ui/associated-type-bounds/issue-83017.rs | 0 .../ui/associated-type-bounds/issue-99828.rs | 0 .../ui/associated-type-bounds/issue-99828.stderr | 0 .../missing-trait-bound-for-assoc-fails.rs | 0 .../missing-trait-bound-for-assoc-fails.stderr | 0 .../order-dependent-bounds-issue-54121.rs | 0 .../ui/associated-type-bounds/rpit.rs | 0 .../ui/associated-type-bounds/struct-bounds.rs | 0 .../supertrait-referencing-self.rs | 0 .../supertrait-referencing.rs | 0 .../supertrait-where-referencing-self.rs | 0 .../trait-alias-impl-trait.rs | 0 .../ui/associated-type-bounds/trait-params.rs | 0 .../traits-assoc-anonymized.rs | 0 .../traits-assoc-type-macros.rs | 0 .../ui/associated-type-bounds/type-alias.rs | 0 .../ui/associated-type-bounds/type-alias.stderr | 0 .../ui/associated-type-bounds/union-bounds.rs | 0 .../associate-type-bound-normalization.rs | 0 .../associated-types/associated-item-long-paths.rs | 0 .../associated-type-destructuring-assignment.rs | 0 .../ui/associated-types/associated-type-macro.rs | 0 .../associated-types/associated-type-macro.stderr | 0 ...ojection-ambig-between-bound-and-where-clause.rs | 0 ...tion-ambig-between-bound-and-where-clause.stderr | 0 ...ted-type-projection-from-multiple-supertraits.rs | 0 ...type-projection-from-multiple-supertraits.stderr | 0 .../associated-type-projection-from-supertrait.rs | 0 ...ssociated-type-projection-from-supertrait.stderr | 0 .../associated-type-struct-construction.rs | 0 .../associated-type-tuple-struct-construction.rs | 0 ...associated-type-tuple-struct-construction.stderr | 0 ...sociated-types-ICE-when-projecting-out-of-err.rs | 0 ...ated-types-ICE-when-projecting-out-of-err.stderr | 0 .../ui/associated-types/associated-types-basic.rs | 0 .../associated-types-binding-in-trait.rs | 0 .../associated-types-binding-in-where-clause.rs | 0 ...d-types-binding-to-type-defined-in-supertrait.rs | 0 ...pes-binding-to-type-defined-in-supertrait.stderr | 0 .../associated-types-bound-ambiguity.rs | 0 .../associated-types-bound-failure.fixed | 0 .../associated-types-bound-failure.rs | 0 .../associated-types-bound-failure.stderr | 0 .../ui/associated-types/associated-types-bound.rs | 0 .../ui/associated-types/associated-types-cc.rs | 0 .../associated-types-coherence-failure.rs | 0 .../associated-types-coherence-failure.stderr | 0 .../associated-types-conditional-dispatch.rs | 0 .../associated-types-constant-type.rs | 0 .../associated-types-doubleendediterator-object.rs | 0 ...ssociated-types-duplicate-binding-in-env-hrtb.rs | 0 .../associated-types-duplicate-binding-in-env.rs | 0 .../associated-types-enum-field-named.rs | 0 .../associated-types-enum-field-numbered.rs | 0 .../ui/associated-types/associated-types-eq-1.rs | 0 .../associated-types/associated-types-eq-1.stderr | 0 .../ui/associated-types/associated-types-eq-2.rs | 0 .../associated-types/associated-types-eq-2.stderr | 0 .../ui/associated-types/associated-types-eq-3.rs | 0 .../associated-types/associated-types-eq-3.stderr | 0 .../associated-types-eq-expr-path.rs | 0 .../associated-types-eq-expr-path.stderr | 0 .../ui/associated-types/associated-types-eq-hr.rs | 0 .../associated-types/associated-types-eq-hr.stderr | 0 .../ui/associated-types/associated-types-eq-obj.rs | 0 .../associated-types-for-unimpl-trait.fixed | 0 .../associated-types-for-unimpl-trait.rs | 0 .../associated-types-for-unimpl-trait.stderr | 0 .../associated-types-from-supertrait.rs | 0 .../associated-types-impl-redirect.rs | 0 .../associated-types-in-ambiguous-context.rs | 0 .../associated-types-in-ambiguous-context.stderr | 0 .../associated-types-in-bound-type-arg.rs | 0 .../associated-types-in-default-method.rs | 0 .../ui/associated-types/associated-types-in-fn.rs | 0 .../associated-types-in-impl-generics.rs | 0 .../associated-types-in-inherent-method.rs | 0 .../associated-types-incomplete-object.rs | 0 .../associated-types-incomplete-object.stderr | 0 ...ssociated-types-invalid-trait-ref-issue-18865.rs | 0 ...iated-types-invalid-trait-ref-issue-18865.stderr | 0 .../associated-types-issue-17359.rs | 0 .../associated-types-issue-17359.stderr | 0 .../associated-types-issue-20220.rs | 0 .../associated-types-issue-20346.rs | 0 .../associated-types-issue-20346.stderr | 0 .../associated-types-issue-20371.rs | 0 .../associated-types-issue-21212.rs | 0 .../associated-types-iterator-binding.rs | 0 .../ui/associated-types/associated-types-method.rs | 0 .../associated-types-multiple-types-one-trait.rs | 0 ...associated-types-multiple-types-one-trait.stderr | 0 .../associated-types-nested-projections.rs | 0 .../associated-types-no-suitable-bound.rs | 0 .../associated-types-no-suitable-bound.stderr | 0 .../associated-types-no-suitable-supertrait-2.rs | 0 ...associated-types-no-suitable-supertrait-2.stderr | 0 .../associated-types-no-suitable-supertrait.rs | 0 .../associated-types-no-suitable-supertrait.stderr | 0 .../associated-types-normalize-in-bounds-binding.rs | 0 .../associated-types-normalize-in-bounds-ufcs.rs | 0 .../associated-types-normalize-in-bounds.rs | 0 .../associated-types-normalize-unifield-struct.rs | 0 .../associated-types/associated-types-outlives.rs | 0 .../associated-types-outlives.stderr | 0 .../associated-types-overridden-binding-2.rs | 0 .../associated-types-overridden-binding-2.stderr | 0 .../associated-types-overridden-binding.rs | 0 .../associated-types-overridden-binding.stderr | 0 .../associated-types-overridden-default.rs | 0 .../ui/associated-types/associated-types-path-1.rs | 0 .../associated-types/associated-types-path-1.stderr | 0 .../ui/associated-types/associated-types-path-2.rs | 0 .../associated-types/associated-types-path-2.stderr | 0 ...associated-types-project-from-hrtb-in-fn-body.rs | 0 ...ciated-types-project-from-hrtb-in-fn-body.stderr | 0 .../associated-types-project-from-hrtb-in-fn.fixed | 0 .../associated-types-project-from-hrtb-in-fn.rs | 0 .../associated-types-project-from-hrtb-in-fn.stderr | 0 .../associated-types-project-from-hrtb-in-struct.rs | 0 ...ociated-types-project-from-hrtb-in-struct.stderr | 0 ...ed-types-project-from-hrtb-in-trait-method.fixed | 0 ...iated-types-project-from-hrtb-in-trait-method.rs | 0 ...d-types-project-from-hrtb-in-trait-method.stderr | 0 ...es-project-from-type-param-via-bound-in-where.rs | 0 .../associated-types-projection-bound-ambiguity.rs | 0 ...ociated-types-projection-bound-in-supertraits.rs | 0 ...ated-types-projection-from-known-type-in-impl.rs | 0 .../associated-types-projection-in-object-type.rs | 0 .../associated-types-projection-in-supertrait.rs | 0 .../associated-types-projection-in-where-clause.rs | 0 ...-unrelated-trait-in-method-without-default.fixed | 0 ...-to-unrelated-trait-in-method-without-default.rs | 0 ...unrelated-trait-in-method-without-default.stderr | 0 ...ssociated-types-projection-to-unrelated-trait.rs | 0 ...ualified-path-with-trait-with-type-parameters.rs | 0 .../associated-types-ref-from-struct.rs | 0 .../associated-types-ref-in-struct-literal.rs | 0 .../associated-types-region-erasure-issue-20582.rs | 0 .../associated-types-resolve-lifetime.rs | 0 .../ui/associated-types/associated-types-return.rs | 0 .../ui/associated-types/associated-types-simple.rs | 0 .../ui/associated-types/associated-types-stream.rs | 0 .../associated-types-struct-field-named.rs | 0 .../associated-types-struct-field-numbered.rs | 0 .../associated-types-subtyping-1.rs | 0 .../associated-types-subtyping-1.stderr | 0 .../associated-types/associated-types-sugar-path.rs | 0 .../associated-types-unconstrained.rs | 0 .../associated-types-unconstrained.stderr | 0 .../associated-types/associated-types-unsized.fixed | 0 .../ui/associated-types/associated-types-unsized.rs | 0 .../associated-types-unsized.stderr | 0 .../associated-types-where-clause-impl-ambiguity.rs | 0 .../auxiliary/associated-types-cc-lib.rs | 0 .../bound-lifetime-constrained.clause.stderr | 0 .../bound-lifetime-constrained.func.stderr | 0 .../bound-lifetime-constrained.object.stderr | 0 .../associated-types/bound-lifetime-constrained.rs | 0 .../bound-lifetime-in-binding-only.angle.stderr | 0 .../bound-lifetime-in-binding-only.elision.stderr | 0 .../bound-lifetime-in-binding-only.ok.stderr | 0 .../bound-lifetime-in-binding-only.paren.stderr | 0 .../bound-lifetime-in-binding-only.rs | 0 .../bound-lifetime-in-return-only.elision.stderr | 0 .../bound-lifetime-in-return-only.local.stderr | 0 .../bound-lifetime-in-return-only.ok.stderr | 0 .../bound-lifetime-in-return-only.rs | 0 .../bound-lifetime-in-return-only.sig.stderr | 0 .../bound-lifetime-in-return-only.structure.stderr | 0 .../ui/associated-types/cache/chrono-scan.rs | 0 .../ui/associated-types/cache/elision.rs | 0 .../project-fn-ret-contravariant.krisskross.stderr | 0 .../cache/project-fn-ret-contravariant.rs | 0 .../project-fn-ret-contravariant.transmute.stderr | 0 .../project-fn-ret-invariant.krisskross.stderr | 0 .../cache/project-fn-ret-invariant.oneuse.stderr | 0 .../cache/project-fn-ret-invariant.rs | 0 .../cache/project-fn-ret-invariant.transmute.stderr | 0 .../ui/associated-types/default-associated-types.rs | 0 .../ui/associated-types/defaults-cyclic-fail-1.rs | 0 .../associated-types/defaults-cyclic-fail-1.stderr | 0 .../ui/associated-types/defaults-cyclic-fail-2.rs | 0 .../associated-types/defaults-cyclic-fail-2.stderr | 0 .../ui/associated-types/defaults-cyclic-pass-1.rs | 0 .../ui/associated-types/defaults-cyclic-pass-2.rs | 0 .../defaults-in-other-trait-items-pass.rs | 0 .../defaults-in-other-trait-items.rs | 0 .../defaults-in-other-trait-items.stderr | 0 .../ui/associated-types/defaults-mixed.rs | 0 .../ui/associated-types/defaults-mixed.stderr | 0 .../ui/associated-types/defaults-specialization.rs | 0 .../associated-types/defaults-specialization.stderr | 0 .../ui/associated-types/defaults-suitability.rs | 0 .../ui/associated-types/defaults-suitability.stderr | 0 .../ui/associated-types/defaults-unsound-62211-1.rs | 0 .../defaults-unsound-62211-1.stderr | 0 .../ui/associated-types/defaults-unsound-62211-2.rs | 0 .../defaults-unsound-62211-2.stderr | 0 .../ui/associated-types/defaults-wf.rs | 0 .../ui/associated-types/defaults-wf.stderr | 0 .../higher-ranked-projection.bad.stderr | 0 .../ui/associated-types/higher-ranked-projection.rs | 0 .../associated-types/hr-associated-type-bound-1.rs | 0 .../hr-associated-type-bound-1.stderr | 0 .../associated-types/hr-associated-type-bound-2.rs | 0 .../hr-associated-type-bound-2.stderr | 0 .../hr-associated-type-bound-object.rs | 0 .../hr-associated-type-bound-object.stderr | 0 .../hr-associated-type-bound-param-1.rs | 0 .../hr-associated-type-bound-param-1.stderr | 0 .../hr-associated-type-bound-param-2.rs | 0 .../hr-associated-type-bound-param-2.stderr | 0 .../hr-associated-type-bound-param-3.rs | 0 .../hr-associated-type-bound-param-3.stderr | 0 .../hr-associated-type-bound-param-4.rs | 0 .../hr-associated-type-bound-param-4.stderr | 0 .../hr-associated-type-bound-param-5.rs | 0 .../hr-associated-type-bound-param-5.stderr | 0 .../hr-associated-type-bound-param-6.rs | 0 .../hr-associated-type-bound-param-6.stderr | 0 .../hr-associated-type-projection-1.rs | 0 .../hr-associated-type-projection-1.stderr | 0 .../impl-trait-return-missing-constraint.rs | 0 .../impl-trait-return-missing-constraint.stderr | 0 .../ui/associated-types/impl-wf-cycle-1.rs | 0 .../ui/associated-types/impl-wf-cycle-1.stderr | 0 .../ui/associated-types/impl-wf-cycle-2.rs | 0 .../ui/associated-types/impl-wf-cycle-2.stderr | 0 .../ui/associated-types/issue-18655.rs | 0 .../ui/associated-types/issue-19081.rs | 0 .../ui/associated-types/issue-19883.rs | 0 .../ui/associated-types/issue-19883.stderr | 0 .../ui/associated-types/issue-20005.rs | 0 .../ui/associated-types/issue-20005.stderr | 0 .../ui/associated-types/issue-20825-2.rs | 0 .../ui/associated-types/issue-20825.rs | 0 .../ui/associated-types/issue-20825.stderr | 0 .../ui/associated-types/issue-21363.rs | 0 .../ui/associated-types/issue-21726.rs | 0 .../ui/associated-types/issue-22037.rs | 0 .../ui/associated-types/issue-22037.stderr | 0 .../ui/associated-types/issue-22066.rs | 0 .../ui/associated-types/issue-22560.rs | 0 .../ui/associated-types/issue-22560.stderr | 0 .../ui/associated-types/issue-22828.rs | 0 .../ui/associated-types/issue-23208.rs | 0 .../ui/associated-types/issue-23595-1.rs | 0 .../ui/associated-types/issue-23595-1.stderr | 0 .../ui/associated-types/issue-23595-2.rs | 0 .../ui/associated-types/issue-23595-2.stderr | 0 .../ui/associated-types/issue-24159.rs | 0 .../ui/associated-types/issue-24204.rs | 0 .../ui/associated-types/issue-24338.rs | 0 .../ui/associated-types/issue-25339.rs | 0 .../ui/associated-types/issue-25700-1.rs | 0 .../ui/associated-types/issue-25700-2.rs | 0 .../ui/associated-types/issue-25700.rs | 0 .../ui/associated-types/issue-25700.stderr | 0 .../ui/associated-types/issue-26681.rs | 0 .../ui/associated-types/issue-26681.stderr | 0 .../issue-27675-unchecked-bounds.rs | 0 .../issue-27675-unchecked-bounds.stderr | 0 .../ui/associated-types/issue-28871.rs | 0 .../ui/associated-types/issue-31597.rs | 0 .../ui/associated-types/issue-32350.rs | 0 .../ui/associated-types/issue-36499.rs | 0 .../ui/associated-types/issue-36499.stderr | 0 .../ui/associated-types/issue-37808.rs | 0 .../ui/associated-types/issue-37883.rs | 0 .../ui/associated-types/issue-38917.rs | 0 .../ui/associated-types/issue-39532.rs | 0 .../ui/associated-types/issue-40093.rs | 0 .../ui/associated-types/issue-41868.rs | 0 .../ui/associated-types/issue-43475.rs | 0 .../associated-types/issue-43784-associated-type.rs | 0 .../issue-43784-associated-type.stderr | 0 .../ui/associated-types/issue-43924.rs | 0 .../ui/associated-types/issue-43924.stderr | 0 .../ui/associated-types/issue-44153.rs | 0 .../ui/associated-types/issue-44153.stderr | 0 .../ui/associated-types/issue-47139-1.rs | 0 .../ui/associated-types/issue-47139-2.rs | 0 .../ui/associated-types/issue-47385.rs | 0 .../ui/associated-types/issue-47814.rs | 0 .../ui/associated-types/issue-47814.stderr | 0 .../ui/associated-types/issue-48010.rs | 0 .../ui/associated-types/issue-48551.rs | 0 .../ui/associated-types/issue-50301.rs | 0 .../ui/associated-types/issue-54108.rs | 0 .../ui/associated-types/issue-54108.stderr | 0 .../ui/associated-types/issue-54182-1.rs | 0 .../ui/associated-types/issue-54182-2.rs | 0 .../ui/associated-types/issue-54467.rs | 0 .../ui/associated-types/issue-55846.rs | 0 .../ui/associated-types/issue-59324.rs | 0 .../ui/associated-types/issue-59324.stderr | 0 .../ui/associated-types/issue-62200.rs | 0 .../ui/associated-types/issue-62200.stderr | 0 .../ui/associated-types/issue-63591.rs | 0 .../ui/associated-types/issue-63593.rs | 0 .../ui/associated-types/issue-63593.stderr | 0 .../ui/associated-types/issue-64848.rs | 0 .../ui/associated-types/issue-64855-2.rs | 0 .../ui/associated-types/issue-64855.rs | 0 .../ui/associated-types/issue-64855.stderr | 0 .../ui/associated-types/issue-65774-1.rs | 0 .../ui/associated-types/issue-65774-1.stderr | 0 .../ui/associated-types/issue-65774-2.rs | 0 .../ui/associated-types/issue-65774-2.stderr | 0 .../ui/associated-types/issue-65934.rs | 0 .../ui/associated-types/issue-67684.rs | 0 .../ui/associated-types/issue-69398.rs | 0 .../ui/associated-types/issue-71113.rs | 0 .../ui/associated-types/issue-72806.rs | 0 .../ui/associated-types/issue-72806.stderr | 0 .../ui/associated-types/issue-76179.rs | 0 .../ui/associated-types/issue-82079.rs | 0 .../ui/associated-types/issue-85103.rs | 0 .../ui/associated-types/issue-85103.stderr | 0 .../ui/associated-types/issue-87261.rs | 0 .../ui/associated-types/issue-87261.stderr | 0 .../ui/associated-types/issue-88856.rs | 0 .../ui/associated-types/issue-91069.rs | 0 .../ui/associated-types/issue-91231.rs | 0 .../ui/associated-types/issue-91234.rs | 0 .../ui/associated-types/missing-associated-types.rs | 0 .../missing-associated-types.stderr | 0 .../ui/associated-types/normalization-debruijn-1.rs | 0 .../ui/associated-types/normalization-debruijn-2.rs | 0 .../ui/associated-types/normalization-debruijn-3.rs | 0 .../associated-types/normalization-generality-2.rs | 0 .../ui/associated-types/normalization-generality.rs | 0 .../associated-types/normalization-probe-cycle.rs | 0 .../normalize-cycle-in-eval-no-region.rs | 0 .../ui/associated-types/normalize-cycle-in-eval.rs | 0 .../ui/associated-types/object-method-numbering.rs | 0 .../ui/associated-types/object-normalization.rs | 0 .../associated-types/param-env-normalize-cycle.rs | 0 .../point-at-type-on-obligation-failure-2.rs | 0 .../point-at-type-on-obligation-failure-2.stderr | 0 .../point-at-type-on-obligation-failure.rs | 0 .../point-at-type-on-obligation-failure.stderr | 0 .../associated-types/project-defer-unification.rs | 0 .../project-recursion-limit-non-fatal.rs | 0 .../ui/associated-types/substs-ppaux.normal.stderr | 0 .../ui/associated-types/substs-ppaux.rs | 0 .../ui/associated-types/substs-ppaux.verbose.stderr | 0 .../trait-with-supertraits-needing-sized-self.rs | 0 ...trait-with-supertraits-needing-sized-self.stderr | 0 .../ui/associated-types/wf-cycle-2.rs | 0 {src/test => tests}/ui/associated-types/wf-cycle.rs | 0 .../ui/async-await/argument-patterns.rs | 0 .../ui/async-await/async-assoc-fn-anon-lifetimes.rs | 0 .../async-await-let-else.drop-tracking.stderr | 0 .../async-await-let-else.no-drop-tracking.stderr | 0 .../ui/async-await/async-await-let-else.rs | 0 {src/test => tests}/ui/async-await/async-await.rs | 0 .../async-block-control-flow-static-semantics.rs | 0 ...async-block-control-flow-static-semantics.stderr | 0 .../async-borrowck-escaping-block-error.fixed | 0 .../async-borrowck-escaping-block-error.rs | 0 .../async-borrowck-escaping-block-error.stderr | 0 .../async-borrowck-escaping-closure-error.rs | 0 .../async-borrowck-escaping-closure-error.stderr | 0 .../ui/async-await/async-closure-matches-expr.rs | 0 {src/test => tests}/ui/async-await/async-closure.rs | 0 .../ui/async-await/async-error-span.rs | 0 .../ui/async-await/async-error-span.stderr | 0 .../async-fn-elided-impl-lifetime-parameter.rs | 0 .../ui/async-await/async-fn-nonsend.rs | 0 .../ui/async-await/async-fn-nonsend.stderr | 0 .../ui/async-await/async-fn-path-elision.rs | 0 .../ui/async-await/async-fn-path-elision.stderr | 0 .../ui/async-await/async-fn-send-uses-nonsend.rs | 0 .../ui/async-await/async-fn-size-moved-locals.rs | 0 .../ui/async-await/async-fn-size-uninit-locals.rs | 0 {src/test => tests}/ui/async-await/async-fn-size.rs | 0 .../ui/async-await/async-is-unwindsafe.rs | 0 .../ui/async-await/async-is-unwindsafe.stderr | 0 .../ui/async-await/async-matches-expr.rs | 0 .../test => tests}/ui/async-await/async-trait-fn.rs | 0 .../ui/async-await/async-trait-fn.stderr | 0 .../async-unsafe-fn-call-in-safe.mir.stderr | 0 .../ui/async-await/async-unsafe-fn-call-in-safe.rs | 0 .../async-unsafe-fn-call-in-safe.thir.stderr | 0 .../ui/async-await/async-with-closure.rs | 0 .../ui/async-await/auxiliary/arc_wake.rs | 0 .../ui/async-await/auxiliary/issue-72470-lib.rs | 0 .../ui/async-await/await-into-future.rs | 0 .../2015-edition-error-various-positions.rs | 0 .../2015-edition-error-various-positions.stderr | 0 .../await-keyword/2015-edition-warning.fixed | 0 .../await-keyword/2015-edition-warning.rs | 0 .../await-keyword/2015-edition-warning.stderr | 0 .../2018-edition-error-in-non-macro-position.rs | 0 .../2018-edition-error-in-non-macro-position.stderr | 0 .../async-await/await-keyword/2018-edition-error.rs | 0 .../await-keyword/2018-edition-error.stderr | 0 .../await-keyword/incorrect-syntax-suggestions.rs | 0 .../incorrect-syntax-suggestions.stderr | 0 .../await-keyword/post_expansion_error.rs | 0 .../await-keyword/post_expansion_error.stderr | 0 {src/test => tests}/ui/async-await/await-unsize.rs | 0 .../ui/async-await/bound-normalization.rs | 0 .../conditional-and-guaranteed-initialization.rs | 0 .../ui/async-await/default-struct-update.rs | 0 .../ui/async-await/dont-print-desugared-async.rs | 0 .../async-await/dont-print-desugared-async.stderr | 0 .../dont-suggest-await-on-method-return-mismatch.rs | 0 ...t-suggest-await-on-method-return-mismatch.stderr | 0 .../ui/async-await/dont-suggest-missing-await.rs | 0 .../async-await/dont-suggest-missing-await.stderr | 0 .../ui/async-await/drop-and-assign.rs | 0 .../ui/async-await/drop-order/auxiliary/arc_wake.rs | 0 ...-order-for-async-fn-parameters-by-ref-binding.rs | 0 .../drop-order-for-async-fn-parameters.rs | 0 .../drop-order-for-locals-when-cancelled.rs | 0 .../drop-order-for-temporary-in-tail-return-expr.rs | 0 .../drop-order/drop-order-locals-are-hidden.rs | 0 .../drop-order/drop-order-locals-are-hidden.stderr | 0 .../drop-order/drop-order-when-cancelled.rs | 0 .../ui/async-await/drop-track-bad-field-in-fru.rs | 0 .../async-await/drop-track-bad-field-in-fru.stderr | 0 .../async-await/drop-track-field-assign-nonsend.rs | 0 .../drop-track-field-assign-nonsend.stderr | 0 .../ui/async-await/drop-track-field-assign.rs | 0 .../drop-tracking-unresolved-typeck-results.rs | 0 .../drop-tracking-unresolved-typeck-results.stderr | 0 .../ui/async-await/edition-deny-async-fns-2015.rs | 0 .../async-await/edition-deny-async-fns-2015.stderr | 0 .../ui/async-await/expansion-in-attrs.rs | 0 .../ui/async-await/feature-async-closure.rs | 0 .../ui/async-await/feature-async-closure.stderr | 0 .../async-await/feature-gate-async_fn_in_trait.rs | 0 .../feature-gate-async_fn_in_trait.stderr | 0 .../ui/async-await/feature-self-return-type.rs | 0 .../ui/async-await/feature-self-return-type.stderr | 0 {src/test => tests}/ui/async-await/futures-api.rs | 0 .../test => tests}/ui/async-await/generator-desc.rs | 0 .../ui/async-await/generator-desc.stderr | 0 .../ui/async-await/generator-not-future.rs | 0 .../ui/async-await/generator-not-future.stderr | 0 .../ui/async-await/generics-and-bounds.rs | 0 .../async-await/in-trait/async-associated-types.rs | 0 .../async-await/in-trait/async-associated-types2.rs | 0 .../async-example-desugared-boxed-in-trait.rs | 0 .../async-example-desugared-boxed-in-trait.stderr | 0 .../in-trait/async-example-desugared-boxed.rs | 0 .../in-trait/async-example-desugared-boxed.stderr | 0 .../in-trait/async-example-desugared-extra.rs | 0 .../in-trait/async-example-desugared-in-trait.rs | 0 .../in-trait/async-example-desugared-manual.rs | 0 .../in-trait/async-example-desugared-manual.stderr | 0 .../async-await/in-trait/async-example-desugared.rs | 0 .../ui/async-await/in-trait/async-example.rs | 0 .../in-trait/async-generics-and-bounds.rs | 0 .../in-trait/async-generics-and-bounds.stderr | 0 .../ui/async-await/in-trait/async-generics.rs | 0 .../ui/async-await/in-trait/async-generics.stderr | 0 .../in-trait/async-lifetimes-and-bounds.rs | 0 .../ui/async-await/in-trait/async-lifetimes.rs | 0 .../async-await/in-trait/async-recursive-generic.rs | 0 .../in-trait/async-recursive-generic.stderr | 0 .../ui/async-await/in-trait/async-recursive.rs | 0 .../ui/async-await/in-trait/async-recursive.stderr | 0 .../ui/async-await/in-trait/bad-signatures.rs | 0 .../ui/async-await/in-trait/bad-signatures.stderr | 0 .../ui/async-await/in-trait/early-bound-1.rs | 0 .../ui/async-await/in-trait/early-bound-2.rs | 0 .../ui/async-await/in-trait/fn-not-async-err.rs | 0 .../ui/async-await/in-trait/fn-not-async-err.stderr | 0 .../ui/async-await/in-trait/fn-not-async-err2.rs | 0 .../async-await/in-trait/fn-not-async-err2.stderr | 0 .../ui/async-await/in-trait/implied-bounds.rs | 0 .../ui/async-await/in-trait/issue-102138.rs | 0 .../ui/async-await/in-trait/issue-102219.rs | 0 .../ui/async-await/in-trait/issue-102310.rs | 0 .../ui/async-await/in-trait/issue-104678.rs | 0 .../ui/async-await/in-trait/lifetime-mismatch.rs | 0 .../async-await/in-trait/lifetime-mismatch.stderr | 0 .../ui/async-await/in-trait/nested-rpit.rs | 0 .../ui/async-await/in-trait/object-safety.rs | 0 .../ui/async-await/in-trait/object-safety.stderr | 0 .../async-await/in-trait/return-type-suggestion.rs | 0 .../in-trait/return-type-suggestion.stderr | 0 .../incorrect-move-async-order-issue-79694.fixed | 0 .../incorrect-move-async-order-issue-79694.rs | 0 .../incorrect-move-async-order-issue-79694.stderr | 0 .../async-await/interior-with-const-generic-expr.rs | 0 {src/test => tests}/ui/async-await/issue-101715.rs | 0 .../ui/async-await/issue-101715.stderr | 0 {src/test => tests}/ui/async-await/issue-105501.rs | 0 .../issue-54239-private-type-triggers-lint.rs | 0 {src/test => tests}/ui/async-await/issue-60709.rs | 0 {src/test => tests}/ui/async-await/issue-61076.rs | 0 .../ui/async-await/issue-61076.stderr | 0 {src/test => tests}/ui/async-await/issue-61452.rs | 0 .../ui/async-await/issue-61452.stderr | 0 {src/test => tests}/ui/async-await/issue-61793.rs | 0 .../ui/async-await/issue-61949-self-return-type.rs | 0 .../async-await/issue-61949-self-return-type.stderr | 0 {src/test => tests}/ui/async-await/issue-62658.rs | 0 .../issue-63832-await-short-temporary-lifetime-1.rs | 0 .../issue-63832-await-short-temporary-lifetime.rs | 0 .../ui/async-await/issue-64130-1-sync.rs | 0 .../ui/async-await/issue-64130-1-sync.stderr | 0 .../ui/async-await/issue-64130-2-send.rs | 0 .../ui/async-await/issue-64130-2-send.stderr | 0 .../ui/async-await/issue-64130-3-other.rs | 0 .../ui/async-await/issue-64130-3-other.stderr | 0 .../issue-64130-4-async-move.drop-tracking.stderr | 0 ...issue-64130-4-async-move.no_drop_tracking.stderr | 0 .../ui/async-await/issue-64130-4-async-move.rs | 0 .../issue-64130-non-send-future-diags.rs | 0 .../issue-64130-non-send-future-diags.stderr | 0 {src/test => tests}/ui/async-await/issue-64391.rs | 0 {src/test => tests}/ui/async-await/issue-66312.rs | 0 .../ui/async-await/issue-66312.stderr | 0 .../ui/async-await/issue-66387-if-without-else.rs | 0 .../async-await/issue-66387-if-without-else.stderr | 0 .../ui/async-await/issue-67252-unnamed-future.rs | 0 .../async-await/issue-67252-unnamed-future.stderr | 0 {src/test => tests}/ui/async-await/issue-67651.rs | 0 .../ui/async-await/issue-67651.stderr | 0 .../ui/async-await/issue-67765-async-diagnostic.rs | 0 .../async-await/issue-67765-async-diagnostic.stderr | 0 .../ui/async-await/issue-68112.drop_tracking.stderr | 0 .../async-await/issue-68112.no_drop_tracking.stderr | 0 {src/test => tests}/ui/async-await/issue-68112.rs | 0 .../ui/async-await/issue-68523-start.rs | 0 .../ui/async-await/issue-68523-start.stderr | 0 {src/test => tests}/ui/async-await/issue-68523.rs | 0 .../ui/async-await/issue-68523.stderr | 0 .../ui/async-await/issue-69446-fnmut-capture.rs | 0 .../ui/async-await/issue-69446-fnmut-capture.stderr | 0 {src/test => tests}/ui/async-await/issue-70594.rs | 0 .../ui/async-await/issue-70594.stderr | 0 {src/test => tests}/ui/async-await/issue-70818.rs | 0 .../ui/async-await/issue-70818.stderr | 0 .../issue-70935-complex-spans.drop_tracking.stderr | 0 ...ssue-70935-complex-spans.no_drop_tracking.stderr | 0 .../ui/async-await/issue-70935-complex-spans.rs | 0 {src/test => tests}/ui/async-await/issue-71137.rs | 0 .../ui/async-await/issue-71137.stderr | 0 {src/test => tests}/ui/async-await/issue-72442.rs | 0 .../ui/async-await/issue-72442.stderr | 0 .../ui/async-await/issue-72470-llvm-dominate.rs | 0 .../ui/async-await/issue-72590-type-error-sized.rs | 0 .../async-await/issue-72590-type-error-sized.stderr | 0 {src/test => tests}/ui/async-await/issue-73050.rs | 0 {src/test => tests}/ui/async-await/issue-73137.rs | 0 {src/test => tests}/ui/async-await/issue-73541-1.rs | 0 .../ui/async-await/issue-73541-1.stderr | 0 {src/test => tests}/ui/async-await/issue-73541-2.rs | 0 .../ui/async-await/issue-73541-2.stderr | 0 {src/test => tests}/ui/async-await/issue-73541-3.rs | 0 .../ui/async-await/issue-73541-3.stderr | 0 {src/test => tests}/ui/async-await/issue-73541.rs | 0 .../ui/async-await/issue-73541.stderr | 0 .../issue-73741-type-err-drop-tracking.rs | 0 .../issue-73741-type-err-drop-tracking.stderr | 0 .../ui/async-await/issue-73741-type-err.rs | 0 .../ui/async-await/issue-73741-type-err.stderr | 0 {src/test => tests}/ui/async-await/issue-74047.rs | 0 .../ui/async-await/issue-74047.stderr | 0 .../issue-74072-lifetime-name-annotations.rs | 0 .../issue-74072-lifetime-name-annotations.stderr | 0 .../async-await/issue-74497-lifetime-in-opaque.rs | 0 .../issue-74497-lifetime-in-opaque.stderr | 0 .../issue-75785-confusing-named-region.rs | 0 .../issue-75785-confusing-named-region.stderr | 0 {src/test => tests}/ui/async-await/issue-76547.rs | 0 .../ui/async-await/issue-76547.stderr | 0 {src/test => tests}/ui/async-await/issue-77993-2.rs | 0 .../ui/async-await/issue-77993-2.stderr | 0 {src/test => tests}/ui/async-await/issue-84841.rs | 0 .../ui/async-await/issue-84841.stderr | 0 {src/test => tests}/ui/async-await/issue-86507.rs | 0 .../ui/async-await/issue-86507.stderr | 0 {src/test => tests}/ui/async-await/issue-93197.rs | 0 {src/test => tests}/ui/async-await/issue-93648.rs | 0 {src/test => tests}/ui/async-await/issue-98634.rs | 0 .../ui/async-await/issue-98634.stderr | 0 .../ui/async-await/issues/auxiliary/issue-60674.rs | 0 .../ui/async-await/issues/auxiliary/issue_67893.rs | 0 .../ui/async-await/issues/issue-102206.rs | 0 .../ui/async-await/issues/issue-102206.stderr | 0 .../ui/async-await/issues/issue-51719.rs | 0 .../ui/async-await/issues/issue-51719.stderr | 0 .../ui/async-await/issues/issue-51751.rs | 0 .../ui/async-await/issues/issue-51751.stderr | 0 .../ui/async-await/issues/issue-53249.rs | 0 .../async-await/issues/issue-54752-async-block.rs | 0 .../issues/issue-54752-async-block.stderr | 0 .../ui/async-await/issues/issue-54974.rs | 0 .../ui/async-await/issues/issue-55324.rs | 0 .../ui/async-await/issues/issue-55809.rs | 0 .../ui/async-await/issues/issue-58885.rs | 0 .../ui/async-await/issues/issue-59001.rs | 0 .../ui/async-await/issues/issue-59972.rs | 0 .../ui/async-await/issues/issue-60518.rs | 0 .../issues/issue-60655-latebound-regions.rs | 0 .../ui/async-await/issues/issue-60674.rs | 0 .../ui/async-await/issues/issue-60674.stdout | 0 .../ui/async-await/issues/issue-61187.rs | 0 .../ui/async-await/issues/issue-61187.stderr | 0 .../ui/async-await/issues/issue-61986.rs | 0 .../ui/async-await/issues/issue-62009-1.rs | 0 .../ui/async-await/issues/issue-62009-1.stderr | 0 .../ui/async-await/issues/issue-62009-2.rs | 0 .../ui/async-await/issues/issue-62009-2.stderr | 0 .../ui/async-await/issues/issue-62097.rs | 0 .../ui/async-await/issues/issue-62097.stderr | 0 .../ui/async-await/issues/issue-62517-1.rs | 0 .../ui/async-await/issues/issue-62517-2.rs | 0 .../ui/async-await/issues/issue-63388-1.rs | 0 .../ui/async-await/issues/issue-63388-1.stderr | 0 .../ui/async-await/issues/issue-63388-2.rs | 0 .../ui/async-await/issues/issue-63388-2.stderr | 0 .../ui/async-await/issues/issue-63388-3.rs | 0 .../ui/async-await/issues/issue-63388-4.rs | 0 .../ui/async-await/issues/issue-64391-2.rs | 0 .../ui/async-await/issues/issue-64433.rs | 0 .../ui/async-await/issues/issue-64477-2.rs | 0 .../ui/async-await/issues/issue-64477.rs | 0 .../ui/async-await/issues/issue-64964.rs | 0 .../ui/async-await/issues/issue-65159.rs | 0 .../ui/async-await/issues/issue-65159.stderr | 0 .../issue-65419-async-fn-resume-after-completion.rs | 0 .../issue-65419-async-fn-resume-after-panic.rs | 0 ...issue-65419-generator-resume-after-completion.rs | 0 ...e-65436-raw-ptr-not-send.no_drop_tracking.stderr | 0 .../issues/issue-65436-raw-ptr-not-send.rs | 0 .../async-await/issues/issue-66695-static-refs.rs | 0 .../issues/issue-66958-non-copy-infered-type-arg.rs | 0 .../issue-66958-non-copy-infered-type-arg.stderr | 0 .../issues/issue-67611-static-mut-refs.rs | 0 .../ui/async-await/issues/issue-67893.rs | 0 .../ui/async-await/issues/issue-67893.stderr | 0 .../ui/async-await/issues/issue-69307-nested.rs | 0 .../ui/async-await/issues/issue-69307.rs | 0 .../ui/async-await/issues/issue-72312.rs | 0 .../ui/async-await/issues/issue-72312.stderr | 0 .../ui/async-await/issues/issue-78600.rs | 0 .../ui/async-await/issues/issue-78600.stderr | 0 .../ui/async-await/issues/issue-78654.full.stderr | 0 .../ui/async-await/issues/issue-78654.min.stderr | 0 .../ui/async-await/issues/issue-78654.rs | 0 .../async-await/issues/issue-78938-async-block.rs | 0 .../issues/issue-78938-async-block.stderr | 0 .../ui/async-await/issues/issue-95307.rs | 0 .../ui/async-await/issues/issue-95307.stderr | 0 .../async-await/issues/non-async-enclosing-span.rs | 0 .../issues/non-async-enclosing-span.stderr | 0 .../ui/async-await/large_moves.attribute.stderr | 0 .../ui/async-await/large_moves.option.stderr | 0 {src/test => tests}/ui/async-await/large_moves.rs | 0 .../move-part-await-return-rest-struct.rs | 0 .../move-part-await-return-rest-tuple.rs | 0 .../ui/async-await/multiple-lifetimes/elided.rs | 0 .../ui/async-await/multiple-lifetimes/fn-ptr.rs | 0 .../ui/async-await/multiple-lifetimes/hrtb.rs | 0 .../ui/async-await/multiple-lifetimes/named.rs | 0 .../multiple-lifetimes/partial-relation.rs | 0 .../multiple-lifetimes/ret-impl-trait-fg.rs | 0 .../multiple-lifetimes/ret-impl-trait-one.rs | 0 .../multiple-lifetimes/ret-impl-trait-one.stderr | 0 .../ui/async-await/multiple-lifetimes/ret-ref.rs | 0 .../async-await/multiple-lifetimes/ret-ref.stderr | 0 .../ui/async-await/multiple-lifetimes/variance.rs | 0 .../mutually-recursive-async-impl-trait-type.rs | 0 .../mutually-recursive-async-impl-trait-type.stderr | 0 .../test => tests}/ui/async-await/nested-in-impl.rs | 0 .../test => tests}/ui/async-await/no-async-const.rs | 0 .../ui/async-await/no-async-const.stderr | 0 .../test => tests}/ui/async-await/no-const-async.rs | 0 .../ui/async-await/no-const-async.stderr | 0 .../ui/async-await/no-move-across-await-struct.rs | 0 .../async-await/no-move-across-await-struct.stderr | 0 .../ui/async-await/no-move-across-await-tuple.rs | 0 .../async-await/no-move-across-await-tuple.stderr | 0 .../async-await/no-non-guaranteed-initialization.rs | 0 .../no-non-guaranteed-initialization.stderr | 0 .../async-await/no-params-non-move-async-closure.rs | 0 .../no-params-non-move-async-closure.stderr | 0 {src/test => tests}/ui/async-await/no-std.rs | 0 .../ui/async-await/no-unsafe-async.rs | 0 .../ui/async-await/no-unsafe-async.stderr | 0 .../ui/async-await/non-trivial-drop.rs | 0 ...partial-drop-partial-reinit.drop_tracking.stderr | 0 ...tial-drop-partial-reinit.no_drop_tracking.stderr | 0 .../ui/async-await/partial-drop-partial-reinit.rs | 0 .../partial-initialization-across-await.rs | 0 .../partial-initialization-across-await.stderr | 0 .../ui/async-await/pin-needed-to-poll-2.rs | 0 .../ui/async-await/pin-needed-to-poll-2.stderr | 0 .../ui/async-await/pin-needed-to-poll.rs | 0 .../ui/async-await/pin-needed-to-poll.stderr | 0 .../ui/async-await/proper-span-for-type-error.fixed | 0 .../ui/async-await/proper-span-for-type-error.rs | 0 .../async-await/proper-span-for-type-error.stderr | 0 .../async-await/recursive-async-impl-trait-type.rs | 0 .../recursive-async-impl-trait-type.stderr | 0 .../async-await/repeat_count_const_in_async_fn.rs | 0 .../ui/async-await/return-ty-raw-ptr-coercion.rs | 0 .../ui/async-await/return-ty-unsize-coercion.rs | 0 .../async-await/suggest-missing-await-closure.fixed | 0 .../ui/async-await/suggest-missing-await-closure.rs | 0 .../suggest-missing-await-closure.stderr | 0 .../ui/async-await/suggest-missing-await.rs | 0 .../ui/async-await/suggest-missing-await.stderr | 0 .../suggest-switching-edition-on-await-cargo.rs | 0 .../suggest-switching-edition-on-await-cargo.stderr | 0 .../suggest-switching-edition-on-await.rs | 0 .../suggest-switching-edition-on-await.stderr | 0 .../ui/async-await/track-caller/async-block.rs | 0 .../ui/async-await/track-caller/async-block.stderr | 0 .../async-await/track-caller/async-closure-gate.rs | 0 .../track-caller/async-closure-gate.stderr | 0 .../ui/async-await/track-caller/issue-105134.rs | 0 .../track-caller/panic-track-caller.nofeat.stderr | 0 .../async-await/track-caller/panic-track-caller.rs | 0 .../ui/async-await/try-on-option-in-async.rs | 0 .../ui/async-await/try-on-option-in-async.stderr | 0 .../ui/async-await/type-parameter-send.rs | 0 .../ui/async-await/unnecessary-await.rs | 0 .../ui/async-await/unnecessary-await.stderr | 0 .../ui/async-await/unreachable-lint-1.rs | 0 .../ui/async-await/unreachable-lint-1.stderr | 0 .../ui/async-await/unreachable-lint.rs | 0 .../ui/async-await/unresolved_type_param.rs | 0 .../ui/async-await/unresolved_type_param.stderr | 0 .../ui/async-await/unused-lifetime.rs | 0 .../ui/async-await/unused-lifetime.stderr | 0 .../ui/atomic-from-mut-not-available.rs | 0 .../ui/atomic-from-mut-not-available.stderr | 0 .../test => tests}/ui/attempted-access-non-fatal.rs | 0 .../ui/attempted-access-non-fatal.stderr | 0 {src/test => tests}/ui/attr-bad-crate-attr.rc | 0 {src/test => tests}/ui/attr-shebang.rs | 0 {src/test => tests}/ui/attr-start.rs | 0 {src/test => tests}/ui/attr-usage-inline.rs | 0 {src/test => tests}/ui/attr-usage-inline.stderr | 0 .../ui/attributes/attr-before-view-item.rs | 0 .../ui/attributes/attr-before-view-item2.rs | 0 .../ui/attributes/attr-eq-token-tree.rs | 0 .../ui/attributes/attr-eq-token-tree.stderr | 0 {src/test => tests}/ui/attributes/attr-mix-new.rs | 0 .../test => tests}/ui/attributes/attrs-on-params.rs | 0 .../ui/attributes/attrs-on-params.stderr | 0 .../attrs-with-no-formal-in-generics-1.rs | 0 .../attrs-with-no-formal-in-generics-1.stderr | 0 .../attrs-with-no-formal-in-generics-2.rs | 0 .../attrs-with-no-formal-in-generics-2.stderr | 0 .../attrs-with-no-formal-in-generics-3.rs | 0 .../attrs-with-no-formal-in-generics-3.stderr | 0 .../ui/attributes/auxiliary/key-value-expansion.rs | 0 .../ui/attributes/class-attributes-1.rs | 0 .../ui/attributes/class-attributes-2.rs | 0 .../ui/attributes/collapse-debuginfo-invalid.rs | 0 .../ui/attributes/collapse-debuginfo-invalid.stderr | 0 .../ui/attributes/const-stability-on-macro.rs | 0 .../ui/attributes/const-stability-on-macro.stderr | 0 {src/test => tests}/ui/attributes/doc-attr.rs | 0 {src/test => tests}/ui/attributes/doc-attr.stderr | 0 .../ui/attributes/duplicated-attributes.rs | 0 .../ui/attributes/duplicated-attributes.stderr | 0 .../ui/attributes/extented-attribute-macro-error.rs | 0 .../extented-attribute-macro-error.stderr | 0 .../attributes/field-attributes-vis-unresolved.rs | 0 .../field-attributes-vis-unresolved.stderr | 0 .../ui/attributes/invalid-doc-attr.rs | 0 .../ui/attributes/invalid-doc-attr.stderr | 0 {src/test => tests}/ui/attributes/issue-100631.rs | 0 .../ui/attributes/issue-100631.stderr | 0 .../issue-105594-invalid-attr-validation.rs | 0 .../issue-105594-invalid-attr-validation.stderr | 0 {src/test => tests}/ui/attributes/issue-40962.rs | 0 {src/test => tests}/ui/attributes/issue-90873.rs | 0 .../test => tests}/ui/attributes/issue-90873.stderr | 0 .../test => tests}/ui/attributes/item-attributes.rs | 0 .../ui/attributes/key-value-expansion-on-mac.rs | 0 .../ui/attributes/key-value-expansion-on-mac.stderr | 0 .../ui/attributes/key-value-expansion.rs | 0 .../ui/attributes/key-value-expansion.stderr | 0 .../ui/attributes/key-value-non-ascii.rs | 0 .../ui/attributes/key-value-non-ascii.stderr | 0 {src/test => tests}/ui/attributes/main-removed-1.rs | 0 .../ui/attributes/main-removed-1.stderr | 0 .../ui/attributes/main-removed-2/auxiliary/tokyo.rs | 0 .../ui/attributes/main-removed-2/main.rs | 0 .../ui/attributes/method-attributes.rs | 0 .../ui/attributes/multiple-invalid.rs | 0 .../ui/attributes/multiple-invalid.stderr | 0 .../ui/attributes/nonterminal-expansion.rs | 0 .../ui/attributes/nonterminal-expansion.stderr | 0 {src/test => tests}/ui/attributes/obsolete-attr.rs | 0 .../ui/attributes/obsolete-attr.stderr | 0 .../ui/attributes/suffixed-literal-meta.rs | 0 .../ui/attributes/suffixed-literal-meta.stderr | 0 .../test => tests}/ui/attributes/tool_attributes.rs | 0 .../unix_sigpipe/auxiliary/sigpipe-utils.rs | 0 .../attributes/unix_sigpipe/unix_sigpipe-crate.rs | 0 .../unix_sigpipe/unix_sigpipe-crate.stderr | 0 .../unix_sigpipe/unix_sigpipe-duplicates.rs | 0 .../unix_sigpipe/unix_sigpipe-duplicates.stderr | 0 .../attributes/unix_sigpipe/unix_sigpipe-error.rs | 0 .../attributes/unix_sigpipe/unix_sigpipe-inherit.rs | 0 .../ui/attributes/unix_sigpipe/unix_sigpipe-list.rs | 0 .../unix_sigpipe/unix_sigpipe-list.stderr | 0 .../unix_sigpipe/unix_sigpipe-non-main-fn.rs | 0 .../unix_sigpipe/unix_sigpipe-non-main-fn.stderr | 0 .../unix_sigpipe/unix_sigpipe-non-root-main.rs | 0 .../unix_sigpipe/unix_sigpipe-non-root-main.stderr | 0 .../unix_sigpipe/unix_sigpipe-not-used.rs | 0 .../unix_sigpipe/unix_sigpipe-only-feature.rs | 0 .../unix_sigpipe/unix_sigpipe-rustc_main.rs | 0 .../attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs | 0 .../attributes/unix_sigpipe/unix_sigpipe-start.rs | 0 .../unix_sigpipe/unix_sigpipe-start.stderr | 0 .../attributes/unix_sigpipe/unix_sigpipe-struct.rs | 0 .../unix_sigpipe/unix_sigpipe-struct.stderr | 0 .../attributes/unix_sigpipe/unix_sigpipe-wrong.rs | 0 .../unix_sigpipe/unix_sigpipe-wrong.stderr | 0 .../ui/attributes/unix_sigpipe/unix_sigpipe.rs | 0 .../ui/attributes/unix_sigpipe/unix_sigpipe.stderr | 0 {src/test => tests}/ui/attributes/unknown-attr.rs | 0 .../ui/attributes/unknown-attr.stderr | 0 .../ui/attributes/unnamed-field-attributes-dup.rs | 0 .../ui/attributes/unnamed-field-attributes-vis.rs | 0 .../ui/attributes/unnamed-field-attributes.rs | 0 .../ui/attributes/unrestricted-attribute-tokens.rs | 0 .../ui/attributes/unused-item-in-attr.rs | 0 .../ui/attributes/unused-item-in-attr.stderr | 0 {src/test => tests}/ui/attributes/used_with_arg.rs | 0 .../ui/attributes/used_with_arg.stderr | 0 .../ui/attributes/used_with_arg_no_mangle.rs | 0 .../ui/attributes/used_with_multi_args.rs | 0 .../ui/attributes/used_with_multi_args.stderr | 0 .../ui/attributes/variant-attributes.rs | 0 {src/test => tests}/ui/attributes/z-crate-attr.rs | 0 {src/test => tests}/ui/attrs-resolution-errors.rs | 0 .../ui/attrs-resolution-errors.stderr | 0 {src/test => tests}/ui/attrs-resolution.rs | 0 .../ui/augmented-assignments-feature-gate-cross.rs | 0 .../ui/augmented-assignments-rpass.rs | 0 {src/test => tests}/ui/augmented-assignments.rs | 0 {src/test => tests}/ui/augmented-assignments.stderr | 0 {src/test => tests}/ui/auto-instantiate.rs | 0 {src/test => tests}/ui/auto-ref-slice-plus-ref.rs | 0 .../ui/auto-ref-slice-plus-ref.stderr | 0 .../ui/auto-traits/auto-is-contextual.rs | 0 .../auto-traits/auto-trait-projection-recursion.rs | 0 .../ui/auto-traits/auto-trait-validation.fixed | 0 .../ui/auto-traits/auto-trait-validation.rs | 0 .../ui/auto-traits/auto-trait-validation.stderr | 0 {src/test => tests}/ui/auto-traits/auto-traits.rs | 0 .../ui/auto-traits/bad-generics-on-dyn.rs | 0 .../ui/auto-traits/bad-generics-on-dyn.stderr | 0 {src/test => tests}/ui/auto-traits/issue-23080-2.rs | 0 .../ui/auto-traits/issue-23080-2.stderr | 0 {src/test => tests}/ui/auto-traits/issue-23080.rs | 0 .../ui/auto-traits/issue-23080.stderr | 0 {src/test => tests}/ui/auto-traits/issue-84075.rs | 0 .../ui/auto-traits/issue-84075.stderr | 0 .../ui/auto-traits/suspicious-impls-lint.rs | 0 .../ui/auto-traits/suspicious-impls-lint.stderr | 0 .../typeck-auto-trait-no-supertraits-2.rs | 0 .../typeck-auto-trait-no-supertraits-2.stderr | 0 .../auto-traits/typeck-auto-trait-no-supertraits.rs | 0 .../typeck-auto-trait-no-supertraits.stderr | 0 ...typeck-default-trait-impl-constituent-types-2.rs | 0 ...ck-default-trait-impl-constituent-types-2.stderr | 0 .../typeck-default-trait-impl-constituent-types.rs | 0 ...peck-default-trait-impl-constituent-types.stderr | 0 .../typeck-default-trait-impl-negation.rs | 0 .../typeck-default-trait-impl-negation.stderr | 0 .../typeck-default-trait-impl-precedence.rs | 0 .../typeck-default-trait-impl-precedence.stderr | 0 {src/test => tests}/ui/autoderef-full-lval.rs | 0 {src/test => tests}/ui/autoderef-full-lval.stderr | 0 .../autoref-autoderef/auto-ref-bounded-ty-param.rs | 0 .../ui/autoref-autoderef/auto-ref-sliceable.rs | 0 .../test => tests}/ui/autoref-autoderef/auto-ref.rs | 0 .../autoderef-and-borrow-method-receiver.rs | 0 .../autoref-autoderef/autoderef-method-on-trait.rs | 0 .../autoref-autoderef/autoderef-method-priority.rs | 0 .../autoderef-method-twice-but-not-thrice.rs | 0 .../ui/autoref-autoderef/autoderef-method-twice.rs | 0 .../ui/autoref-autoderef/autoderef-method.rs | 0 .../ui/autoref-autoderef/autoderef-privacy.rs | 0 .../autoref-intermediate-types-issue-3585.rs | 0 .../ui/autoref-autoderef/deref-into-array.rs | 0 .../ui/autoref-autoderef/issue-38940.rs | 0 .../ui/autoref-autoderef/issue-38940.stderr | 0 .../ui/auxiliary/augmented_assignments.rs | 0 .../check_static_recursion_foreign_helper.rs | 0 .../ui/auxiliary/crate-method-reexport-grrrrrrr2.rs | 0 .../auxiliary/default-ty-param-cross-crate-crate.rs | 0 .../ui/auxiliary/edition-kw-macro-2015.rs | 0 .../ui/auxiliary/edition-kw-macro-2018.rs | 0 {src/test => tests}/ui/auxiliary/fancy-panic.rs | 0 {src/test => tests}/ui/auxiliary/hello_macro.rs | 0 .../ui/auxiliary/impl_privacy_xc_1.rs | 0 {src/test => tests}/ui/auxiliary/inner_static.rs | 0 {src/test => tests}/ui/auxiliary/issue-76387.rs | 0 .../ui/auxiliary/kinds_in_metadata.rs | 0 .../ui/auxiliary/msvc-data-only-lib.rs | 0 {src/test => tests}/ui/auxiliary/noexporttypelib.rs | 0 .../ui/auxiliary/orphan-check-diagnostics.rs | 0 .../ui/auxiliary/pub-and-stability.rs | 0 .../ui/auxiliary/removing-extern-crate.rs | 0 .../ui/auxiliary/rustc-rust-log-aux.rs | 0 {src/test => tests}/ui/auxiliary/svh-a-base.rs | 0 {src/test => tests}/ui/auxiliary/svh-b.rs | 0 .../ui/auxiliary/typeid-intrinsic-aux1.rs | 0 .../ui/auxiliary/typeid-intrinsic-aux2.rs | 0 .../ui/auxiliary/using-target-feature-unstable.rs | 0 .../ui/auxiliary/xc-private-method-lib.rs | 0 .../ui/backtrace-apple-no-dsymutil.rs | 0 {src/test => tests}/ui/backtrace.rs | 0 {src/test => tests}/ui/bare-fn-implements-fn-mut.rs | 0 {src/test => tests}/ui/bare-static-string.rs | 0 {src/test => tests}/ui/bench/issue-32062.rs | 0 {src/test => tests}/ui/big-literals.rs | 0 {src/test => tests}/ui/bind-by-move.rs | 0 {src/test => tests}/ui/binding/ambiguity-item.rs | 0 .../test => tests}/ui/binding/ambiguity-item.stderr | 0 .../ui/binding/bind-field-short-with-modifiers.rs | 0 .../ui/binding/borrowed-ptr-pattern-2.rs | 0 .../ui/binding/borrowed-ptr-pattern-3.rs | 0 .../ui/binding/borrowed-ptr-pattern-infallible.rs | 0 .../ui/binding/borrowed-ptr-pattern-option.rs | 0 .../ui/binding/borrowed-ptr-pattern.rs | 0 {src/test => tests}/ui/binding/const-param.rs | 0 {src/test => tests}/ui/binding/const-param.stderr | 0 .../ui/binding/empty-types-in-patterns.rs | 0 .../ui/binding/exhaustive-bool-match-sanity.rs | 0 .../ui/binding/expr-match-generic-unique1.rs | 0 .../ui/binding/expr-match-generic-unique2.rs | 0 .../test => tests}/ui/binding/expr-match-generic.rs | 0 .../ui/binding/expr-match-panic-all.rs | 0 {src/test => tests}/ui/binding/expr-match-panic.rs | 0 {src/test => tests}/ui/binding/expr-match-unique.rs | 0 {src/test => tests}/ui/binding/expr-match.rs | 0 {src/test => tests}/ui/binding/fat-arrow-match.rs | 0 .../binding/fn-arg-incomplete-pattern-drop-order.rs | 0 .../ui/binding/fn-pattern-expected-type-2.rs | 0 .../ui/binding/fn-pattern-expected-type.rs | 0 .../ui/binding/func-arg-incomplete-pattern.rs | 0 .../ui/binding/func-arg-ref-pattern.rs | 0 .../ui/binding/func-arg-wild-pattern.rs | 0 {src/test => tests}/ui/binding/if-let.rs | 0 .../ui/binding/inconsistent-lifetime-mismatch.rs | 0 .../ui/binding/inferred-suffix-in-pattern-range.rs | 0 .../ui/binding/irrefutable-slice-patterns.rs | 0 .../ui/binding/issue-53114-borrow-checks.rs | 0 .../ui/binding/issue-53114-borrow-checks.stderr | 0 .../ui/binding/issue-53114-safety-checks.rs | 0 .../ui/binding/issue-53114-safety-checks.stderr | 0 {src/test => tests}/ui/binding/let-assignability.rs | 0 {src/test => tests}/ui/binding/let-destruct-ref.rs | 0 {src/test => tests}/ui/binding/let-var-hygiene.rs | 0 {src/test => tests}/ui/binding/match-arm-statics.rs | 0 .../ui/binding/match-beginning-vert.rs | 0 .../test => tests}/ui/binding/match-borrowed_str.rs | 0 {src/test => tests}/ui/binding/match-bot-2.rs | 0 {src/test => tests}/ui/binding/match-bot.rs | 0 .../ui/binding/match-byte-array-patterns.rs | 0 .../ui/binding/match-enum-struct-0.rs | 0 .../ui/binding/match-enum-struct-1.rs | 0 .../ui/binding/match-implicit-copy-unique.rs | 0 {src/test => tests}/ui/binding/match-in-macro.rs | 0 {src/test => tests}/ui/binding/match-join.rs | 0 .../test => tests}/ui/binding/match-larger-const.rs | 0 .../ui/binding/match-naked-record-expr.rs | 0 .../test => tests}/ui/binding/match-naked-record.rs | 0 {src/test => tests}/ui/binding/match-path.rs | 0 .../ui/binding/match-pattern-bindings.rs | 0 {src/test => tests}/ui/binding/match-pattern-lit.rs | 0 .../ui/binding/match-pattern-no-type-params.rs | 0 .../ui/binding/match-pattern-simple.rs | 0 {src/test => tests}/ui/binding/match-phi.rs | 0 .../test => tests}/ui/binding/match-pipe-binding.rs | 0 {src/test => tests}/ui/binding/match-range-infer.rs | 0 .../test => tests}/ui/binding/match-range-static.rs | 0 {src/test => tests}/ui/binding/match-range.rs | 0 {src/test => tests}/ui/binding/match-reassign.rs | 0 .../ui/binding/match-ref-binding-in-guard-3256.rs | 0 .../ui/binding/match-ref-binding-mut-option.rs | 0 .../ui/binding/match-ref-binding-mut.rs | 0 {src/test => tests}/ui/binding/match-ref-binding.rs | 0 {src/test => tests}/ui/binding/match-ref-unsized.rs | 0 {src/test => tests}/ui/binding/match-str.rs | 0 {src/test => tests}/ui/binding/match-struct-0.rs | 0 {src/test => tests}/ui/binding/match-tag.rs | 0 {src/test => tests}/ui/binding/match-unique-bind.rs | 0 {src/test => tests}/ui/binding/match-unsized.rs | 0 .../ui/binding/match-value-binding-in-guard-3291.rs | 0 {src/test => tests}/ui/binding/match-var-hygiene.rs | 0 .../ui/binding/match-vec-alternatives.rs | 0 {src/test => tests}/ui/binding/match-vec-rvalue.rs | 0 .../test => tests}/ui/binding/match-with-ret-arm.rs | 0 {src/test => tests}/ui/binding/multi-let.rs | 0 .../ui/binding/mut-in-ident-patterns.rs | 0 {src/test => tests}/ui/binding/nested-matchs.rs | 0 {src/test => tests}/ui/binding/nested-pattern.rs | 0 {src/test => tests}/ui/binding/nil-pattern.rs | 0 .../test => tests}/ui/binding/nullary-or-pattern.rs | 0 .../ui/binding/optional_comma_in_match_arm.rs | 0 {src/test => tests}/ui/binding/or-pattern.rs | 0 .../ui/binding/order-drop-with-match.rs | 0 {src/test => tests}/ui/binding/pat-ranges.rs | 0 {src/test => tests}/ui/binding/pat-tuple-1.rs | 0 {src/test => tests}/ui/binding/pat-tuple-2.rs | 0 {src/test => tests}/ui/binding/pat-tuple-3.rs | 0 {src/test => tests}/ui/binding/pat-tuple-4.rs | 0 {src/test => tests}/ui/binding/pat-tuple-5.rs | 0 {src/test => tests}/ui/binding/pat-tuple-6.rs | 0 {src/test => tests}/ui/binding/pat-tuple-7.rs | 0 .../ui/binding/pattern-bound-var-in-for-each.rs | 0 .../test => tests}/ui/binding/pattern-in-closure.rs | 0 .../binding/range-inclusive-pattern-precedence.rs | 0 {src/test => tests}/ui/binding/shadow.rs | 0 .../ui/binding/simple-generic-match.rs | 0 {src/test => tests}/ui/binding/use-uninit-match.rs | 0 {src/test => tests}/ui/binding/use-uninit-match2.rs | 0 .../ui/binding/zero_sized_subslice_match.rs | 0 .../ui/binop/binary-minus-without-space.rs | 0 .../ui/binop/binary-op-on-double-ref.fixed | 0 .../ui/binop/binary-op-on-double-ref.rs | 0 .../ui/binop/binary-op-on-double-ref.stderr | 0 .../ui/binop/binary-op-on-fn-ptr-eq.rs | 0 {src/test => tests}/ui/binop/binop-bitxor-str.rs | 0 .../test => tests}/ui/binop/binop-bitxor-str.stderr | 0 {src/test => tests}/ui/binop/binop-consume-args.rs | 0 .../ui/binop/binop-consume-args.stderr | 0 {src/test => tests}/ui/binop/binop-fail-3.rs | 0 {src/test => tests}/ui/binop/binop-logic-float.rs | 0 .../ui/binop/binop-logic-float.stderr | 0 {src/test => tests}/ui/binop/binop-logic-int.rs | 0 {src/test => tests}/ui/binop/binop-logic-int.stderr | 0 .../test => tests}/ui/binop/binop-move-semantics.rs | 0 .../ui/binop/binop-move-semantics.stderr | 0 {src/test => tests}/ui/binop/binop-mul-bool.rs | 0 {src/test => tests}/ui/binop/binop-mul-bool.stderr | 0 {src/test => tests}/ui/binop/binop-mul-i32-f32.rs | 0 .../ui/binop/binop-mul-i32-f32.stderr | 0 {src/test => tests}/ui/binop/binop-panic.rs | 0 {src/test => tests}/ui/binop/binop-typeck.rs | 0 {src/test => tests}/ui/binop/binop-typeck.stderr | 0 {src/test => tests}/ui/binop/binops-issue-22743.rs | 0 {src/test => tests}/ui/binop/binops.rs | 0 {src/test => tests}/ui/binop/issue-25916.rs | 0 {src/test => tests}/ui/binop/issue-28837.rs | 0 {src/test => tests}/ui/binop/issue-28837.stderr | 0 {src/test => tests}/ui/binop/issue-3820.rs | 0 {src/test => tests}/ui/binop/issue-3820.stderr | 0 {src/test => tests}/ui/binop/issue-77910-1.rs | 0 {src/test => tests}/ui/binop/issue-77910-1.stderr | 0 {src/test => tests}/ui/binop/issue-77910-2.rs | 0 {src/test => tests}/ui/binop/issue-77910-2.stderr | 0 {src/test => tests}/ui/binop/issue-93927.rs | 0 {src/test => tests}/ui/binop/issue-93927.stderr | 0 .../ui/binop/operator-multidispatch.rs | 0 .../test => tests}/ui/binop/operator-overloading.rs | 0 {src/test => tests}/ui/binop/placement-syntax.rs | 0 .../test => tests}/ui/binop/placement-syntax.stderr | 0 .../ui/binop/shift-various-bad-types.rs | 0 .../ui/binop/shift-various-bad-types.stderr | 0 {src/test => tests}/ui/binop/structured-compare.rs | 0 {src/test => tests}/ui/bitwise.rs | 0 .../ui/blind/blind-item-block-item-shadow.rs | 0 .../ui/blind/blind-item-block-item-shadow.stderr | 0 .../ui/blind/blind-item-block-middle.rs | 0 .../ui/blind/blind-item-block-middle.stderr | 0 .../ui/blind/blind-item-item-shadow.rs | 0 .../ui/blind/blind-item-item-shadow.stderr | 0 .../block-result/block-must-not-have-result-do.rs | 0 .../block-must-not-have-result-do.stderr | 0 .../block-result/block-must-not-have-result-res.rs | 0 .../block-must-not-have-result-res.stderr | 0 .../block-must-not-have-result-while.rs | 0 .../block-must-not-have-result-while.stderr | 0 .../block-result/consider-removing-last-semi.fixed | 0 .../ui/block-result/consider-removing-last-semi.rs | 0 .../block-result/consider-removing-last-semi.stderr | 0 {src/test => tests}/ui/block-result/issue-11714.rs | 0 .../ui/block-result/issue-11714.stderr | 0 {src/test => tests}/ui/block-result/issue-13428.rs | 0 .../ui/block-result/issue-13428.stderr | 0 {src/test => tests}/ui/block-result/issue-13624.rs | 0 .../ui/block-result/issue-13624.stderr | 0 {src/test => tests}/ui/block-result/issue-20862.rs | 0 .../ui/block-result/issue-20862.stderr | 0 {src/test => tests}/ui/block-result/issue-22645.rs | 0 .../ui/block-result/issue-22645.stderr | 0 {src/test => tests}/ui/block-result/issue-3563.rs | 0 .../ui/block-result/issue-3563.stderr | 0 {src/test => tests}/ui/block-result/issue-5500.rs | 0 .../ui/block-result/issue-5500.stderr | 0 .../ui/block-result/unexpected-return-on-unit.rs | 0 .../block-result/unexpected-return-on-unit.stderr | 0 {src/test => tests}/ui/bogus-tag.rs | 0 {src/test => tests}/ui/bogus-tag.stderr | 0 .../ui/borrow-by-val-method-receiver.rs | 0 .../ui/borrowck/access-mode-in-closures.rs | 0 .../ui/borrowck/access-mode-in-closures.stderr | 0 .../ui/borrowck/anonymous-region-in-apit.rs | 0 .../ui/borrowck/anonymous-region-in-apit.stderr | 0 .../test => tests}/ui/borrowck/assign-never-type.rs | 0 .../ui/borrowck/assign_mutable_fields.rs | 0 .../ui/borrowck/assign_mutable_fields.stderr | 0 .../ui/borrowck/async-reference-generality.rs | 0 .../ui/borrowck/async-reference-generality.stderr | 0 ...er-at-or-patterns-slice-patterns-box-patterns.rs | 0 ...t-or-patterns-slice-patterns-box-patterns.stderr | 0 .../borrow-immutable-upvar-mutation-impl-trait.rs | 0 ...orrow-immutable-upvar-mutation-impl-trait.stderr | 0 .../ui/borrowck/borrow-immutable-upvar-mutation.rs | 0 .../borrowck/borrow-immutable-upvar-mutation.stderr | 0 .../ui/borrowck/borrow-raw-address-of-borrowed.rs | 0 .../borrowck/borrow-raw-address-of-borrowed.stderr | 0 .../borrow-raw-address-of-deref-mutability-ok.rs | 0 .../borrow-raw-address-of-deref-mutability.rs | 0 .../borrow-raw-address-of-deref-mutability.stderr | 0 .../borrowck/borrow-raw-address-of-mutability-ok.rs | 0 .../ui/borrowck/borrow-raw-address-of-mutability.rs | 0 .../borrow-raw-address-of-mutability.stderr | 0 .../ui/borrowck/borrow-tuple-fields.rs | 0 .../ui/borrowck/borrow-tuple-fields.stderr | 0 .../ui/borrowck/borrowck-access-permissions.rs | 0 .../ui/borrowck/borrowck-access-permissions.stderr | 0 .../test => tests}/ui/borrowck/borrowck-and-init.rs | 0 .../ui/borrowck/borrowck-and-init.stderr | 0 .../ui/borrowck/borrowck-anon-fields-struct.rs | 0 .../ui/borrowck/borrowck-anon-fields-struct.stderr | 0 .../ui/borrowck/borrowck-anon-fields-tuple.rs | 0 .../ui/borrowck/borrowck-anon-fields-tuple.stderr | 0 .../ui/borrowck/borrowck-anon-fields-variant.rs | 0 .../ui/borrowck/borrowck-anon-fields-variant.stderr | 0 .../test => tests}/ui/borrowck/borrowck-argument.rs | 0 .../ui/borrowck/borrowck-argument.stderr | 0 .../ui/borrowck/borrowck-assign-comp-idx.rs | 0 .../ui/borrowck/borrowck-assign-comp-idx.stderr | 0 .../ui/borrowck/borrowck-assign-comp.rs | 0 .../ui/borrowck/borrowck-assign-comp.stderr | 0 .../borrowck-assign-to-andmut-in-aliasable-loc.rs | 0 ...orrowck-assign-to-andmut-in-aliasable-loc.stderr | 0 .../borrowck-assign-to-andmut-in-borrowed-loc.rs | 0 ...borrowck-assign-to-andmut-in-borrowed-loc.stderr | 0 .../ui/borrowck/borrowck-assign-to-constants.rs | 0 .../ui/borrowck/borrowck-assign-to-constants.stderr | 0 .../ui/borrowck/borrowck-assign-to-subfield.rs | 0 .../borrowck/borrowck-assignment-to-static-mut.rs | 0 .../borrowck/borrowck-auto-mut-ref-to-immut-var.rs | 0 .../borrowck-auto-mut-ref-to-immut-var.stderr | 0 .../ui/borrowck/borrowck-autoref-3261.rs | 0 .../ui/borrowck/borrowck-autoref-3261.stderr | 0 .../ui/borrowck/borrowck-bad-nested-calls-free.rs | 0 .../borrowck/borrowck-bad-nested-calls-free.stderr | 0 .../ui/borrowck/borrowck-bad-nested-calls-move.rs | 0 .../borrowck/borrowck-bad-nested-calls-move.stderr | 0 .../ui/borrowck/borrowck-binding-mutbl.rs | 0 .../ui/borrowck/borrowck-block-unint.rs | 0 .../ui/borrowck/borrowck-block-unint.stderr | 0 .../ui/borrowck/borrowck-borrow-from-expr-block.rs | 0 .../ui/borrowck/borrowck-borrow-from-owned-ptr.rs | 0 .../borrowck/borrowck-borrow-from-owned-ptr.stderr | 0 .../borrowck/borrowck-borrow-from-stack-variable.rs | 0 .../borrowck-borrow-from-stack-variable.stderr | 0 .../ui/borrowck/borrowck-borrow-from-temporary.rs | 0 .../borrowck/borrowck-borrow-from-temporary.stderr | 0 .../borrowck-borrow-immut-deref-of-box-as-mut.rs | 0 ...borrowck-borrow-immut-deref-of-box-as-mut.stderr | 0 ...borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs | 0 ...owck-borrow-mut-base-ptr-in-aliasable-loc.stderr | 0 .../ui/borrowck/borrowck-borrow-mut-object-twice.rs | 0 .../borrowck-borrow-mut-object-twice.stderr | 0 .../borrowck-borrow-of-mut-base-ptr-safe.rs | 0 .../borrowck-borrow-overloaded-auto-deref.rs | 0 .../borrowck-borrow-overloaded-auto-deref.stderr | 0 .../ui/borrowck/borrowck-borrow-overloaded-deref.rs | 0 .../borrowck-borrow-overloaded-deref.stderr | 0 .../ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs | 0 .../borrowck/borrowck-borrowed-uniq-rvalue-2.stderr | 0 .../ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed | 0 .../ui/borrowck/borrowck-borrowed-uniq-rvalue.rs | 0 .../borrowck/borrowck-borrowed-uniq-rvalue.stderr | 0 .../ui/borrowck/borrowck-box-sensitivity.rs | 0 .../ui/borrowck/borrowck-break-uninit-2.rs | 0 .../ui/borrowck/borrowck-break-uninit-2.stderr | 0 .../ui/borrowck/borrowck-break-uninit.rs | 0 .../ui/borrowck/borrowck-break-uninit.stderr | 0 .../ui/borrowck/borrowck-closures-mut-and-imm.rs | 0 .../borrowck/borrowck-closures-mut-and-imm.stderr | 0 .../ui/borrowck/borrowck-closures-mut-of-imm.rs | 0 .../ui/borrowck/borrowck-closures-mut-of-imm.stderr | 0 .../ui/borrowck/borrowck-closures-mut-of-mut.rs | 0 .../ui/borrowck/borrowck-closures-mut-of-mut.stderr | 0 .../borrowck/borrowck-closures-slice-patterns-ok.rs | 0 .../ui/borrowck/borrowck-closures-slice-patterns.rs | 0 .../borrowck-closures-slice-patterns.stderr | 0 .../ui/borrowck/borrowck-closures-two-imm.rs | 0 .../ui/borrowck/borrowck-closures-two-mut-fail.rs | 0 .../borrowck/borrowck-closures-two-mut-fail.stderr | 0 .../ui/borrowck/borrowck-closures-two-mut.rs | 0 .../ui/borrowck/borrowck-closures-two-mut.stderr | 0 .../ui/borrowck/borrowck-closures-unique-imm.rs | 0 .../ui/borrowck/borrowck-closures-unique-imm.stderr | 0 .../ui/borrowck/borrowck-closures-unique.rs | 0 .../ui/borrowck/borrowck-closures-unique.stderr | 0 .../ui/borrowck/borrowck-closures-use-after-free.rs | 0 .../borrowck-closures-use-after-free.stderr | 0 .../ui/borrowck/borrowck-consume-unsize-vec.rs | 0 .../ui/borrowck/borrowck-consume-unsize-vec.stderr | 0 .../ui/borrowck/borrowck-consume-upcast-box.rs | 0 .../ui/borrowck/borrowck-consume-upcast-box.stderr | 0 .../ui/borrowck/borrowck-describe-lvalue.rs | 0 .../ui/borrowck/borrowck-describe-lvalue.stderr | 0 .../ui/borrowck/borrowck-drop-from-guard.rs | 0 .../ui/borrowck/borrowck-drop-from-guard.stderr | 0 .../borrowck/borrowck-escaping-closure-error-1.rs | 0 .../borrowck-escaping-closure-error-1.stderr | 0 .../borrowck/borrowck-escaping-closure-error-2.rs | 0 .../borrowck-escaping-closure-error-2.stderr | 0 .../ui/borrowck/borrowck-field-sensitivity-rpass.rs | 0 .../ui/borrowck/borrowck-field-sensitivity.rs | 0 .../ui/borrowck/borrowck-field-sensitivity.stderr | 0 .../ui/borrowck/borrowck-fixed-length-vecs.rs | 0 .../ui/borrowck/borrowck-fn-in-const-a.rs | 0 .../ui/borrowck/borrowck-fn-in-const-a.stderr | 0 .../ui/borrowck/borrowck-fn-in-const-c.rs | 0 .../ui/borrowck/borrowck-fn-in-const-c.stderr | 0 .../borrowck-for-loop-correct-cmt-for-pattern.rs | 0 ...borrowck-for-loop-correct-cmt-for-pattern.stderr | 0 .../ui/borrowck/borrowck-for-loop-head-linkage.rs | 0 .../borrowck/borrowck-for-loop-head-linkage.stderr | 0 .../borrowck-for-loop-uninitialized-binding.rs | 0 .../borrowck-for-loop-uninitialized-binding.stderr | 0 .../ui/borrowck/borrowck-freeze-frozen-mut.rs | 0 .../ui/borrowck/borrowck-if-no-else.rs | 0 .../ui/borrowck/borrowck-if-no-else.stderr | 0 .../ui/borrowck/borrowck-if-with-else.rs | 0 .../ui/borrowck/borrowck-if-with-else.stderr | 0 ...orrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs | 0 ...wck-imm-ref-to-mut-rec-field-issue-3162-c.stderr | 0 .../ui/borrowck/borrowck-in-static.rs | 0 .../ui/borrowck/borrowck-in-static.stderr | 0 .../ui/borrowck/borrowck-init-in-called-fn-expr.rs | 0 .../borrowck/borrowck-init-in-called-fn-expr.stderr | 0 .../ui/borrowck/borrowck-init-in-fn-expr.rs | 0 .../ui/borrowck/borrowck-init-in-fn-expr.stderr | 0 .../ui/borrowck/borrowck-init-in-fru.rs | 0 .../ui/borrowck/borrowck-init-in-fru.stderr | 0 .../ui/borrowck/borrowck-init-op-equal.rs | 0 .../ui/borrowck/borrowck-init-op-equal.stderr | 0 .../ui/borrowck/borrowck-init-plus-equal.rs | 0 .../ui/borrowck/borrowck-init-plus-equal.stderr | 0 .../ui/borrowck/borrowck-insert-during-each.rs | 0 .../ui/borrowck/borrowck-insert-during-each.stderr | 0 .../ui/borrowck/borrowck-issue-14498.rs | 0 .../ui/borrowck/borrowck-issue-14498.stderr | 0 .../ui/borrowck/borrowck-issue-2657-1.rs | 0 .../ui/borrowck/borrowck-issue-2657-1.stderr | 0 .../ui/borrowck/borrowck-issue-2657-2.fixed | 0 .../ui/borrowck/borrowck-issue-2657-2.rs | 0 .../ui/borrowck/borrowck-issue-2657-2.stderr | 0 .../ui/borrowck/borrowck-issue-48962.rs | 0 .../ui/borrowck/borrowck-issue-48962.stderr | 0 .../ui/borrowck/borrowck-lend-args.rs | 0 .../ui/borrowck/borrowck-lend-flow-if.rs | 0 .../ui/borrowck/borrowck-lend-flow-if.stderr | 0 .../ui/borrowck/borrowck-lend-flow-loop.rs | 0 .../ui/borrowck/borrowck-lend-flow-loop.stderr | 0 .../ui/borrowck/borrowck-lend-flow-match.rs | 0 .../ui/borrowck/borrowck-lend-flow-match.stderr | 0 .../ui/borrowck/borrowck-lend-flow.rs | 0 .../ui/borrowck/borrowck-lend-flow.stderr | 0 .../ui/borrowck/borrowck-loan-blocks-move-cc.rs | 0 .../ui/borrowck/borrowck-loan-blocks-move-cc.stderr | 0 .../ui/borrowck/borrowck-loan-blocks-move.rs | 0 .../ui/borrowck/borrowck-loan-blocks-move.stderr | 0 .../ui/borrowck/borrowck-loan-blocks-mut-uniq.rs | 0 .../borrowck/borrowck-loan-blocks-mut-uniq.stderr | 0 .../ui/borrowck/borrowck-loan-in-overloaded-op.rs | 0 .../borrowck/borrowck-loan-in-overloaded-op.stderr | 0 .../borrowck-loan-of-static-data-issue-27616.rs | 0 .../borrowck-loan-of-static-data-issue-27616.stderr | 0 .../ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs | 0 .../borrowck-loan-rcvr-overloaded-op.stderr | 0 .../ui/borrowck/borrowck-loan-rcvr.rs | 0 .../ui/borrowck/borrowck-loan-rcvr.stderr | 0 .../ui/borrowck/borrowck-loan-vec-content.rs | 0 .../ui/borrowck/borrowck-loan-vec-content.stderr | 0 .../borrowck/borrowck-local-borrow-outlives-fn.rs | 0 .../borrowck-local-borrow-outlives-fn.stderr | 0 .../borrowck-local-borrow-with-panic-outlives-fn.rs | 0 ...rowck-local-borrow-with-panic-outlives-fn.stderr | 0 .../ui/borrowck/borrowck-local-borrow.rs | 0 .../borrowck-macro-interaction-issue-6304.rs | 0 .../ui/borrowck/borrowck-match-already-borrowed.rs | 0 .../borrowck/borrowck-match-already-borrowed.stderr | 0 .../borrowck-match-binding-is-assignment.rs | 0 .../borrowck-match-binding-is-assignment.stderr | 0 .../ui/borrowck/borrowck-move-by-capture-ok.rs | 0 .../ui/borrowck/borrowck-move-by-capture.rs | 0 .../ui/borrowck/borrowck-move-by-capture.stderr | 0 .../ui/borrowck/borrowck-move-error-with-note.fixed | 0 .../ui/borrowck/borrowck-move-error-with-note.rs | 0 .../borrowck/borrowck-move-error-with-note.stderr | 0 .../borrowck-move-from-subpath-of-borrowed-path.rs | 0 ...rrowck-move-from-subpath-of-borrowed-path.stderr | 0 .../ui/borrowck/borrowck-move-from-unsafe-ptr.rs | 0 .../borrowck/borrowck-move-from-unsafe-ptr.stderr | 0 .../ui/borrowck/borrowck-move-in-irrefut-pat.rs | 0 .../ui/borrowck/borrowck-move-in-irrefut-pat.stderr | 0 .../borrowck-move-moved-value-into-closure.rs | 0 .../borrowck-move-moved-value-into-closure.stderr | 0 .../ui/borrowck/borrowck-move-mut-base-ptr.rs | 0 .../ui/borrowck/borrowck-move-mut-base-ptr.stderr | 0 .../borrowck/borrowck-move-out-from-array-match.rs | 0 .../borrowck-move-out-from-array-match.stderr | 0 ...borrowck-move-out-from-array-no-overlap-match.rs | 0 ...owck-move-out-from-array-no-overlap-match.stderr | 0 .../borrowck-move-out-from-array-no-overlap.rs | 0 .../borrowck-move-out-from-array-use-match.rs | 0 .../borrowck-move-out-from-array-use-match.stderr | 0 ...owck-move-out-from-array-use-no-overlap-match.rs | 0 ...-move-out-from-array-use-no-overlap-match.stderr | 0 .../borrowck-move-out-from-array-use-no-overlap.rs | 0 .../ui/borrowck/borrowck-move-out-from-array-use.rs | 0 .../borrowck-move-out-from-array-use.stderr | 0 .../ui/borrowck/borrowck-move-out-from-array.rs | 0 .../ui/borrowck/borrowck-move-out-from-array.stderr | 0 .../borrowck-move-out-of-overloaded-auto-deref.rs | 0 ...orrowck-move-out-of-overloaded-auto-deref.stderr | 0 .../borrowck-move-out-of-overloaded-deref.rs | 0 .../borrowck-move-out-of-overloaded-deref.stderr | 0 .../ui/borrowck/borrowck-move-out-of-static-item.rs | 0 .../borrowck-move-out-of-static-item.stderr | 0 .../borrowck-move-out-of-struct-with-dtor.fixed | 0 .../borrowck-move-out-of-struct-with-dtor.rs | 0 .../borrowck-move-out-of-struct-with-dtor.stderr | 0 ...orrowck-move-out-of-tuple-struct-with-dtor.fixed | 0 .../borrowck-move-out-of-tuple-struct-with-dtor.rs | 0 ...rrowck-move-out-of-tuple-struct-with-dtor.stderr | 0 .../ui/borrowck/borrowck-move-out-of-vec-tail.rs | 0 .../borrowck/borrowck-move-out-of-vec-tail.stderr | 0 .../ui/borrowck/borrowck-move-subcomponent.rs | 0 .../ui/borrowck/borrowck-move-subcomponent.stderr | 0 .../borrowck-multiple-borrows-interior-boxes.rs | 0 .../ui/borrowck/borrowck-multiple-captures.rs | 0 .../ui/borrowck/borrowck-multiple-captures.stderr | 0 .../ui/borrowck/borrowck-mut-addr-of-imm-var.rs | 0 .../ui/borrowck/borrowck-mut-addr-of-imm-var.stderr | 0 .../borrowck/borrowck-mut-borrow-linear-errors.rs | 0 .../borrowck-mut-borrow-linear-errors.stderr | 0 .../borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs | 0 .../borrowck-mut-borrow-of-mut-base-ptr.stderr | 0 .../ui/borrowck/borrowck-mut-slice-of-imm-vec.rs | 0 .../borrowck/borrowck-mut-slice-of-imm-vec.stderr | 0 .../test => tests}/ui/borrowck/borrowck-mut-uniq.rs | 0 .../ui/borrowck/borrowck-mut-vec-as-imm-slice.rs | 0 .../ui/borrowck/borrowck-mutate-in-guard.rs | 0 .../ui/borrowck/borrowck-mutate-in-guard.stderr | 0 .../borrowck/borrowck-no-cycle-in-exchange-heap.rs | 0 .../borrowck-no-cycle-in-exchange-heap.stderr | 0 .../ui/borrowck/borrowck-object-lifetime.rs | 0 .../ui/borrowck/borrowck-object-lifetime.stderr | 0 {src/test => tests}/ui/borrowck/borrowck-or-init.rs | 0 .../ui/borrowck/borrowck-or-init.stderr | 0 .../ui/borrowck/borrowck-overloaded-call.rs | 0 .../ui/borrowck/borrowck-overloaded-call.stderr | 0 ...orrowck-overloaded-index-and-overloaded-deref.rs | 0 ...wck-overloaded-index-and-overloaded-deref.stderr | 0 .../borrowck/borrowck-overloaded-index-autoderef.rs | 0 .../borrowck-overloaded-index-autoderef.stderr | 0 .../borrowck-overloaded-index-move-from-vec.rs | 0 .../borrowck-overloaded-index-move-from-vec.stderr | 0 .../borrowck-overloaded-index-move-index.rs | 0 .../borrowck-overloaded-index-move-index.stderr | 0 .../borrowck/borrowck-overloaded-index-ref-index.rs | 0 .../borrowck-overloaded-index-ref-index.stderr | 0 .../ui/borrowck/borrowck-partial-reinit-1.rs | 0 .../ui/borrowck/borrowck-partial-reinit-1.stderr | 0 .../ui/borrowck/borrowck-partial-reinit-2.rs | 0 .../ui/borrowck/borrowck-partial-reinit-2.stderr | 0 .../ui/borrowck/borrowck-partial-reinit-3.rs | 0 .../ui/borrowck/borrowck-partial-reinit-3.stderr | 0 .../ui/borrowck/borrowck-partial-reinit-4.rs | 0 .../ui/borrowck/borrowck-partial-reinit-4.stderr | 0 .../test => tests}/ui/borrowck/borrowck-pat-enum.rs | 0 .../ui/borrowck/borrowck-pat-reassign-binding.rs | 0 .../borrowck/borrowck-pat-reassign-binding.stderr | 0 .../ui/borrowck/borrowck-pat-reassign-no-binding.rs | 0 .../ui/borrowck/borrowck-reborrow-from-mut.rs | 0 .../ui/borrowck/borrowck-reborrow-from-mut.stderr | 0 .../borrowck-reborrow-from-shorter-lived-andmut.rs | 0 ...rrowck-reborrow-from-shorter-lived-andmut.stderr | 0 .../ui/borrowck/borrowck-ref-mut-of-imm.rs | 0 .../ui/borrowck/borrowck-ref-mut-of-imm.stderr | 0 {src/test => tests}/ui/borrowck/borrowck-reinit.rs | 0 .../ui/borrowck/borrowck-reinit.stderr | 0 .../borrowck-report-with-custom-diagnostic.rs | 0 .../borrowck-report-with-custom-diagnostic.stderr | 0 .../borrowck-return-variable-on-stack-via-clone.rs | 0 ...rrowck-return-variable-on-stack-via-clone.stderr | 0 {src/test => tests}/ui/borrowck/borrowck-return.rs | 0 .../ui/borrowck/borrowck-return.stderr | 0 .../ui/borrowck/borrowck-rvalues-mutable.rs | 0 .../borrowck/borrowck-scope-of-deref-issue-4666.rs | 0 ...k-slice-pattern-element-loan-array-no-overlap.rs | 0 .../borrowck-slice-pattern-element-loan-array.rs | 0 ...borrowck-slice-pattern-element-loan-array.stderr | 0 .../borrowck-slice-pattern-element-loan-rpass.rs | 0 ...k-slice-pattern-element-loan-slice-no-overlap.rs | 0 .../borrowck-slice-pattern-element-loan-slice.rs | 0 ...borrowck-slice-pattern-element-loan-slice.stderr | 0 .../ui/borrowck/borrowck-static-item-in-fn.rs | 0 .../ui/borrowck/borrowck-storage-dead.rs | 0 .../ui/borrowck/borrowck-storage-dead.stderr | 0 .../ui/borrowck/borrowck-struct-update-with-dtor.rs | 0 .../borrowck-struct-update-with-dtor.stderr | 0 .../ui/borrowck/borrowck-swap-mut-base-ptr.rs | 0 .../ui/borrowck/borrowck-swap-mut-base-ptr.stderr | 0 ...rrowck-thread-local-static-borrow-outlives-fn.rs | 0 ...ck-thread-local-static-borrow-outlives-fn.stderr | 0 .../ui/borrowck/borrowck-trait-lifetime.rs | 0 .../ui/borrowck/borrowck-unary-move.rs | 0 .../ui/borrowck/borrowck-unary-move.stderr | 0 .../ui/borrowck/borrowck-unboxed-closures.rs | 0 .../ui/borrowck/borrowck-unboxed-closures.stderr | 0 .../ui/borrowck/borrowck-uninit-after-item.rs | 0 .../ui/borrowck/borrowck-uninit-after-item.stderr | 0 .../ui/borrowck/borrowck-uninit-field-access.rs | 0 .../ui/borrowck/borrowck-uninit-field-access.stderr | 0 .../ui/borrowck/borrowck-uninit-in-assignop.rs | 0 .../ui/borrowck/borrowck-uninit-in-assignop.stderr | 0 .../ui/borrowck/borrowck-uninit-ref-chain.rs | 0 .../ui/borrowck/borrowck-uninit-ref-chain.stderr | 0 {src/test => tests}/ui/borrowck/borrowck-uninit.rs | 0 .../ui/borrowck/borrowck-uninit.stderr | 0 .../ui/borrowck/borrowck-union-borrow-nested.rs | 0 .../ui/borrowck/borrowck-union-borrow-nested.stderr | 0 .../ui/borrowck/borrowck-union-borrow.rs | 0 .../ui/borrowck/borrowck-union-borrow.stderr | 0 .../ui/borrowck/borrowck-union-move-assign.rs | 0 .../ui/borrowck/borrowck-union-move-assign.stderr | 0 .../ui/borrowck/borrowck-union-move.rs | 0 .../ui/borrowck/borrowck-union-move.stderr | 0 .../ui/borrowck/borrowck-union-uninitialized.rs | 0 .../ui/borrowck/borrowck-union-uninitialized.stderr | 0 .../ui/borrowck/borrowck-uniq-via-lend.rs | 0 .../ui/borrowck/borrowck-uniq-via-lend.stderr | 0 .../ui/borrowck/borrowck-uniq-via-ref.rs | 0 .../ui/borrowck/borrowck-univariant-enum.rs | 0 .../borrowck-unsafe-static-mutable-borrows.rs | 0 .../ui/borrowck/borrowck-unused-mut-locals.rs | 0 .../ui/borrowck/borrowck-use-in-index-lvalue.rs | 0 .../ui/borrowck/borrowck-use-in-index-lvalue.stderr | 0 .../ui/borrowck/borrowck-use-mut-borrow-rpass.rs | 0 .../ui/borrowck/borrowck-use-mut-borrow.rs | 0 .../ui/borrowck/borrowck-use-mut-borrow.stderr | 0 .../borrowck-use-uninitialized-in-cast-trait.rs | 0 .../borrowck-use-uninitialized-in-cast-trait.stderr | 0 .../borrowck/borrowck-use-uninitialized-in-cast.rs | 0 .../borrowck-use-uninitialized-in-cast.stderr | 0 .../borrowck/borrowck-vec-pattern-element-loan.rs | 0 .../borrowck-vec-pattern-element-loan.stderr | 0 .../borrowck/borrowck-vec-pattern-loan-from-mut.rs | 0 .../borrowck-vec-pattern-loan-from-mut.stderr | 0 .../ui/borrowck/borrowck-vec-pattern-move-tail.rs | 0 .../borrowck/borrowck-vec-pattern-move-tail.stderr | 0 .../ui/borrowck/borrowck-vec-pattern-nesting.rs | 0 .../ui/borrowck/borrowck-vec-pattern-nesting.stderr | 0 .../borrowck-vec-pattern-tail-element-loan.rs | 0 .../borrowck-vec-pattern-tail-element-loan.stderr | 0 .../ui/borrowck/borrowck-while-break.rs | 0 .../ui/borrowck/borrowck-while-break.stderr | 0 .../ui/borrowck/borrowck-while-cond.rs | 0 .../ui/borrowck/borrowck-while-cond.stderr | 0 {src/test => tests}/ui/borrowck/borrowck-while.rs | 0 .../ui/borrowck/borrowck-while.stderr | 0 .../ui/borrowck/copy-suggestion-region-vid.rs | 0 .../ui/borrowck/copy-suggestion-region-vid.stderr | 0 .../ui/borrowck/disallow-possibly-uninitialized.rs | 0 .../borrowck/disallow-possibly-uninitialized.stderr | 0 ...g-move-when-closure-is-already-marked-as-move.rs | 0 ...ve-when-closure-is-already-marked-as-move.stderr | 0 .../ui/borrowck/fsu-moves-and-copies.rs | 0 .../ui/borrowck/immut-function-arguments.rs | 0 .../ui/borrowck/immut-function-arguments.stderr | 0 {src/test => tests}/ui/borrowck/immutable-arg.rs | 0 .../test => tests}/ui/borrowck/immutable-arg.stderr | 0 .../ui/borrowck/index-mut-help-with-impl.rs | 0 .../ui/borrowck/index-mut-help-with-impl.stderr | 0 {src/test => tests}/ui/borrowck/index-mut-help.rs | 0 .../ui/borrowck/index-mut-help.stderr | 0 {src/test => tests}/ui/borrowck/issue-101119.rs | 0 {src/test => tests}/ui/borrowck/issue-101119.stderr | 0 {src/test => tests}/ui/borrowck/issue-102209.rs | 0 {src/test => tests}/ui/borrowck/issue-102209.stderr | 0 {src/test => tests}/ui/borrowck/issue-103095.rs | 0 {src/test => tests}/ui/borrowck/issue-103250.rs | 0 {src/test => tests}/ui/borrowck/issue-103250.stderr | 0 {src/test => tests}/ui/borrowck/issue-103624.rs | 0 {src/test => tests}/ui/borrowck/issue-103624.stderr | 0 .../ui/borrowck/issue-104639-lifetime-order.rs | 0 {src/test => tests}/ui/borrowck/issue-10876.rs | 0 {src/test => tests}/ui/borrowck/issue-11493.fixed | 0 {src/test => tests}/ui/borrowck/issue-11493.rs | 0 {src/test => tests}/ui/borrowck/issue-11493.stderr | 0 {src/test => tests}/ui/borrowck/issue-17263.rs | 0 {src/test => tests}/ui/borrowck/issue-17545.rs | 0 {src/test => tests}/ui/borrowck/issue-17545.stderr | 0 .../ui/borrowck/issue-17718-static-move.rs | 0 .../ui/borrowck/issue-17718-static-move.stderr | 0 {src/test => tests}/ui/borrowck/issue-20801.rs | 0 {src/test => tests}/ui/borrowck/issue-20801.stderr | 0 .../issue-23338-params-outlive-temps-of-body.rs | 0 .../ui/borrowck/issue-24267-flow-exit.rs | 0 .../ui/borrowck/issue-24267-flow-exit.stderr | 0 {src/test => tests}/ui/borrowck/issue-25793.rs | 0 {src/test => tests}/ui/borrowck/issue-25793.stderr | 0 {src/test => tests}/ui/borrowck/issue-28934.rs | 0 {src/test => tests}/ui/borrowck/issue-29166.rs | 0 .../ui/borrowck/issue-31287-drop-in-guard.rs | 0 .../ui/borrowck/issue-31287-drop-in-guard.stderr | 0 {src/test => tests}/ui/borrowck/issue-33819.rs | 0 {src/test => tests}/ui/borrowck/issue-33819.stderr | 0 {src/test => tests}/ui/borrowck/issue-36082.fixed | 0 {src/test => tests}/ui/borrowck/issue-36082.rs | 0 {src/test => tests}/ui/borrowck/issue-36082.stderr | 0 {src/test => tests}/ui/borrowck/issue-41962.rs | 0 {src/test => tests}/ui/borrowck/issue-41962.stderr | 0 {src/test => tests}/ui/borrowck/issue-42344.rs | 0 {src/test => tests}/ui/borrowck/issue-42344.stderr | 0 {src/test => tests}/ui/borrowck/issue-45199.rs | 0 {src/test => tests}/ui/borrowck/issue-45199.stderr | 0 {src/test => tests}/ui/borrowck/issue-45983.rs | 0 {src/test => tests}/ui/borrowck/issue-45983.stderr | 0 {src/test => tests}/ui/borrowck/issue-46095.rs | 0 {src/test => tests}/ui/borrowck/issue-46471.rs | 0 {src/test => tests}/ui/borrowck/issue-46471.stderr | 0 .../ui/borrowck/issue-47215-ice-from-drop-elab.rs | 0 .../borrowck/issue-47215-ice-from-drop-elab.stderr | 0 {src/test => tests}/ui/borrowck/issue-51117.rs | 0 {src/test => tests}/ui/borrowck/issue-51117.stderr | 0 {src/test => tests}/ui/borrowck/issue-51301.rs | 0 {src/test => tests}/ui/borrowck/issue-51301.stderr | 0 .../borrowck/issue-51348-multi-ref-mut-in-guard.rs | 0 {src/test => tests}/ui/borrowck/issue-51415.fixed | 0 {src/test => tests}/ui/borrowck/issue-51415.rs | 0 {src/test => tests}/ui/borrowck/issue-51415.stderr | 0 {src/test => tests}/ui/borrowck/issue-52713-bug.rs | 0 .../ui/borrowck/issue-52713-bug.stderr | 0 ...ue-52967-edition-2018-needs-two-phase-borrows.rs | 0 ...-53432-nested-closure-outlives-borrowed-value.rs | 0 ...32-nested-closure-outlives-borrowed-value.stderr | 0 .../issue-54499-field-mutation-marks-mut-as-used.rs | 0 ...ue-54499-field-mutation-marks-mut-as-used.stderr | 0 ...ue-54499-field-mutation-of-moved-out-with-mut.rs | 0 ...4499-field-mutation-of-moved-out-with-mut.stderr | 0 .../issue-54499-field-mutation-of-moved-out.rs | 0 .../issue-54499-field-mutation-of-moved-out.stderr | 0 .../issue-54499-field-mutation-of-never-init.rs | 0 .../issue-54499-field-mutation-of-never-init.stderr | 0 ...issue-54597-reject-move-out-of-borrow-via-pat.rs | 0 ...e-54597-reject-move-out-of-borrow-via-pat.stderr | 0 .../issue-55492-borrowck-migrate-scans-parents.rs | 0 ...ssue-55492-borrowck-migrate-scans-parents.stderr | 0 ...-55552-ascribe-wildcard-to-structured-pattern.rs | 0 .../borrowck/issue-58776-borrowck-scans-children.rs | 0 .../issue-58776-borrowck-scans-children.stderr | 0 .../ui/borrowck/issue-62007-assign-box.rs | 0 .../ui/borrowck/issue-62007-assign-field.rs | 0 .../ui/borrowck/issue-62107-match-arm-scopes.rs | 0 .../ui/borrowck/issue-62107-match-arm-scopes.stderr | 0 {src/test => tests}/ui/borrowck/issue-64453.rs | 0 {src/test => tests}/ui/borrowck/issue-64453.stderr | 0 .../borrowck/issue-69789-iterator-mut-suggestion.rs | 0 .../issue-69789-iterator-mut-suggestion.stderr | 0 {src/test => tests}/ui/borrowck/issue-71546.rs | 0 {src/test => tests}/ui/borrowck/issue-7573.rs | 0 {src/test => tests}/ui/borrowck/issue-7573.stderr | 0 {src/test => tests}/ui/borrowck/issue-80772.rs | 0 {src/test => tests}/ui/borrowck/issue-81365-1.rs | 0 .../test => tests}/ui/borrowck/issue-81365-1.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-10.rs | 0 .../ui/borrowck/issue-81365-10.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-11.rs | 0 .../ui/borrowck/issue-81365-11.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-2.rs | 0 .../test => tests}/ui/borrowck/issue-81365-2.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-3.rs | 0 .../test => tests}/ui/borrowck/issue-81365-3.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-4.rs | 0 .../test => tests}/ui/borrowck/issue-81365-4.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-5.rs | 0 .../test => tests}/ui/borrowck/issue-81365-5.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-6.rs | 0 .../test => tests}/ui/borrowck/issue-81365-6.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-7.rs | 0 .../test => tests}/ui/borrowck/issue-81365-7.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-8.rs | 0 .../test => tests}/ui/borrowck/issue-81365-8.stderr | 0 {src/test => tests}/ui/borrowck/issue-81365-9.rs | 0 .../test => tests}/ui/borrowck/issue-81365-9.stderr | 0 {src/test => tests}/ui/borrowck/issue-81899.rs | 0 {src/test => tests}/ui/borrowck/issue-81899.stderr | 0 {src/test => tests}/ui/borrowck/issue-82032.rs | 0 {src/test => tests}/ui/borrowck/issue-82032.stderr | 0 .../issue-82126-mismatched-subst-and-hir.rs | 0 .../issue-82126-mismatched-subst-and-hir.stderr | 0 {src/test => tests}/ui/borrowck/issue-82462.rs | 0 {src/test => tests}/ui/borrowck/issue-82462.stderr | 0 .../borrowck/issue-83309-ice-immut-in-for-loop.rs | 0 .../issue-83309-ice-immut-in-for-loop.stderr | 0 {src/test => tests}/ui/borrowck/issue-83760.rs | 0 {src/test => tests}/ui/borrowck/issue-83760.stderr | 0 {src/test => tests}/ui/borrowck/issue-85581.rs | 0 {src/test => tests}/ui/borrowck/issue-85581.stderr | 0 {src/test => tests}/ui/borrowck/issue-85765.rs | 0 {src/test => tests}/ui/borrowck/issue-85765.stderr | 0 .../ui/borrowck/issue-87456-point-to-closure.rs | 0 .../ui/borrowck/issue-87456-point-to-closure.stderr | 0 .../ui/borrowck/issue-88434-minimal-example.rs | 0 .../ui/borrowck/issue-88434-minimal-example.stderr | 0 .../issue-88434-removal-index-should-be-less.rs | 0 .../issue-88434-removal-index-should-be-less.stderr | 0 {src/test => tests}/ui/borrowck/issue-91206.rs | 0 {src/test => tests}/ui/borrowck/issue-91206.stderr | 0 {src/test => tests}/ui/borrowck/issue-92015.rs | 0 {src/test => tests}/ui/borrowck/issue-92015.stderr | 0 {src/test => tests}/ui/borrowck/issue-93078.rs | 0 {src/test => tests}/ui/borrowck/issue-93078.stderr | 0 {src/test => tests}/ui/borrowck/issue-93093.rs | 0 {src/test => tests}/ui/borrowck/issue-93093.stderr | 0 .../issue-95079-missing-move-in-nested-closure.rs | 0 ...ssue-95079-missing-move-in-nested-closure.stderr | 0 .../borrowck/kindck-implicit-close-over-mut-var.rs | 0 {src/test => tests}/ui/borrowck/lazy-init.rs | 0 .../ui/borrowck/many-mutable-borrows.rs | 0 .../ui/borrowck/many-mutable-borrows.stderr | 0 .../ui/borrowck/move-error-in-promoted-2.rs | 0 .../ui/borrowck/move-error-in-promoted-2.stderr | 0 .../ui/borrowck/move-error-in-promoted.rs | 0 .../ui/borrowck/move-error-in-promoted.stderr | 0 .../ui/borrowck/move-error-snippets-ext.rs | 0 .../ui/borrowck/move-error-snippets.rs | 0 .../ui/borrowck/move-error-snippets.stderr | 0 .../borrowck/move-from-union-field-issue-66500.rs | 0 .../move-from-union-field-issue-66500.stderr | 0 .../ui/borrowck/move-in-pattern-mut-in-loop.rs | 0 .../ui/borrowck/move-in-pattern-mut-in-loop.stderr | 0 .../ui/borrowck/move-in-pattern-mut.rs | 0 .../ui/borrowck/move-in-pattern-mut.stderr | 0 .../ui/borrowck/move-in-pattern.fixed | 0 {src/test => tests}/ui/borrowck/move-in-pattern.rs | 0 .../ui/borrowck/move-in-pattern.stderr | 0 .../move-in-static-initializer-issue-38520.rs | 0 .../move-in-static-initializer-issue-38520.stderr | 0 .../ui/borrowck/mut-borrow-in-loop-2.fixed | 0 .../ui/borrowck/mut-borrow-in-loop-2.rs | 0 .../ui/borrowck/mut-borrow-in-loop-2.stderr | 0 .../ui/borrowck/mut-borrow-in-loop.rs | 0 .../ui/borrowck/mut-borrow-in-loop.stderr | 0 .../ui/borrowck/mut-borrow-of-mut-ref.rs | 0 .../ui/borrowck/mut-borrow-of-mut-ref.stderr | 0 .../ui/borrowck/mut-borrow-outside-loop.rs | 0 .../ui/borrowck/mut-borrow-outside-loop.stderr | 0 .../test => tests}/ui/borrowck/mutability-errors.rs | 0 .../ui/borrowck/mutability-errors.stderr | 0 {src/test => tests}/ui/borrowck/or-patterns.rs | 0 {src/test => tests}/ui/borrowck/or-patterns.stderr | 0 .../borrowck/promote-ref-mut-in-let-issue-46557.rs | 0 .../promote-ref-mut-in-let-issue-46557.stderr | 0 .../ui/borrowck/reassignment_immutable_fields.rs | 0 .../borrowck/reassignment_immutable_fields.stderr | 0 .../reassignment_immutable_fields_overlapping.rs | 0 ...reassignment_immutable_fields_overlapping.stderr | 0 .../borrowck/reassignment_immutable_fields_twice.rs | 0 .../reassignment_immutable_fields_twice.stderr | 0 .../ui/borrowck/reborrow-sugg-move-then-borrow.rs | 0 .../borrowck/reborrow-sugg-move-then-borrow.stderr | 0 .../borrowck/regions-bound-missing-bound-in-impl.rs | 0 .../regions-bound-missing-bound-in-impl.stderr | 0 .../ui/borrowck/regions-escape-bound-fn-2.rs | 0 .../ui/borrowck/regions-escape-bound-fn-2.stderr | 0 .../ui/borrowck/regions-escape-bound-fn.rs | 0 .../ui/borrowck/regions-escape-bound-fn.stderr | 0 .../ui/borrowck/regions-escape-unboxed-closure.rs | 0 .../borrowck/regions-escape-unboxed-closure.stderr | 0 .../return-local-binding-from-desugaring.rs | 0 .../return-local-binding-from-desugaring.stderr | 0 .../slice-index-bounds-check-invalidation.rs | 0 .../slice-index-bounds-check-invalidation.stderr | 0 .../ui/borrowck/suggest-as-ref-on-mut-closure.rs | 0 .../borrowck/suggest-as-ref-on-mut-closure.stderr | 0 .../ui/borrowck/suggest-assign-rvalue.rs | 0 .../ui/borrowck/suggest-assign-rvalue.stderr | 0 .../ui/borrowck/suggest-local-var-double-mut.rs | 0 .../ui/borrowck/suggest-local-var-double-mut.stderr | 0 .../ui/borrowck/suggest-local-var-for-vector.rs | 0 .../ui/borrowck/suggest-local-var-for-vector.stderr | 0 .../ui/borrowck/suggest-local-var-imm-and-mut.rs | 0 .../borrowck/suggest-local-var-imm-and-mut.stderr | 0 .../suggest-storing-local-var-for-vector.rs | 0 .../suggest-storing-local-var-for-vector.stderr | 0 .../ui/borrowck/two-phase-across-loop.rs | 0 .../ui/borrowck/two-phase-across-loop.stderr | 0 ...ctivation-sharing-interference.nll_target.stderr | 0 .../two-phase-activation-sharing-interference.rs | 0 ...llow-access-during-reservation.nll_target.stderr | 0 .../two-phase-allow-access-during-reservation.rs | 0 .../ui/borrowck/two-phase-baseline.rs | 0 .../test => tests}/ui/borrowck/two-phase-bin-ops.rs | 0 .../two-phase-cannot-nest-mut-self-calls.rs | 0 .../two-phase-cannot-nest-mut-self-calls.stderr | 0 ...wo-phase-control-flow-split-before-activation.rs | 0 .../ui/borrowck/two-phase-method-receivers.rs | 0 .../ui/borrowck/two-phase-multi-mut.rs | 0 .../ui/borrowck/two-phase-multi-mut.stderr | 0 .../ui/borrowck/two-phase-multiple-activations.rs | 0 .../borrowck/two-phase-nonrecv-autoref.base.stderr | 0 .../ui/borrowck/two-phase-nonrecv-autoref.rs | 0 .../two-phase-reservation-sharing-interference-2.rs | 0 ...-phase-reservation-sharing-interference-2.stderr | 0 ...servation-sharing-interference.nll_target.stderr | 0 .../two-phase-reservation-sharing-interference.rs | 0 {src/test => tests}/ui/borrowck/two-phase-sneaky.rs | 0 .../ui/borrowck/two-phase-sneaky.stderr | 0 .../ui/borrowck/two-phase-surprise-no-conflict.rs | 0 .../borrowck/two-phase-surprise-no-conflict.stderr | 0 ...sures-move-upvar-from-non-once-ref-closure.fixed | 0 ...closures-move-upvar-from-non-once-ref-closure.rs | 0 ...ures-move-upvar-from-non-once-ref-closure.stderr | 0 {src/test => tests}/ui/bounds-lifetime.rs | 0 {src/test => tests}/ui/bounds-lifetime.stderr | 0 {src/test => tests}/ui/box/alloc-unstable-fail.rs | 0 .../ui/box/alloc-unstable-fail.stderr | 0 {src/test => tests}/ui/box/alloc-unstable.rs | 0 {src/test => tests}/ui/box/into-boxed-slice-fail.rs | 0 .../ui/box/into-boxed-slice-fail.stderr | 0 {src/test => tests}/ui/box/into-boxed-slice.rs | 0 {src/test => tests}/ui/box/issue-82446.rs | 0 {src/test => tests}/ui/box/issue-82446.stderr | 0 {src/test => tests}/ui/box/issue-95036.rs | 0 {src/test => tests}/ui/box/large-allocator-ice.rs | 0 {src/test => tests}/ui/box/leak-alloc.rs | 0 {src/test => tests}/ui/box/leak-alloc.stderr | 0 {src/test => tests}/ui/box/new-box-syntax.rs | 0 {src/test => tests}/ui/box/new-box.rs | 0 {src/test => tests}/ui/box/new.rs | 0 {src/test => tests}/ui/box/thin_align.rs | 0 {src/test => tests}/ui/box/thin_drop.rs | 0 {src/test => tests}/ui/box/thin_new.rs | 0 {src/test => tests}/ui/box/thin_zst.rs | 0 {src/test => tests}/ui/break-diverging-value.rs | 0 {src/test => tests}/ui/break-diverging-value.stderr | 0 .../ui/btreemap/btreemap-index-mut.rs | 0 .../ui/btreemap/btreemap-index-mut.stderr | 0 {src/test => tests}/ui/btreemap/btreemap_dropck.rs | 0 .../ui/btreemap/btreemap_dropck.stderr | 0 .../ui/btreemap/btreemap_into_iterator_lifetime.rs | 0 {src/test => tests}/ui/builtin-clone-unwind.rs | 0 .../auxiliary/trait_superkinds_in_metadata.rs | 0 .../builtin-superkinds-capabilities-transitive.rs | 0 .../builtin-superkinds-capabilities-xc.rs | 0 .../builtin-superkinds-capabilities.rs | 0 .../builtin-superkinds-double-superkind.rs | 0 .../builtin-superkinds-double-superkind.stderr | 0 .../builtin-superkinds-in-metadata.rs | 0 .../builtin-superkinds-in-metadata.stderr | 0 .../builtin-superkinds-in-metadata2.rs | 0 .../builtin-superkinds-phantom-typaram.rs | 0 .../builtin-superkinds-self-type.rs | 0 .../builtin-superkinds-self-type.stderr | 0 .../builtin-superkinds/builtin-superkinds-simple.rs | 0 .../builtin-superkinds-simple.stderr | 0 .../builtin-superkinds-simple2.rs | 0 .../builtin-superkinds-typaram-not-send.rs | 0 .../builtin-superkinds-typaram-not-send.stderr | 0 .../builtin-superkinds-typaram.rs | 0 {src/test => tests}/ui/by-move-pattern-binding.rs | 0 .../ui/by-move-pattern-binding.stderr | 0 .../feature-gate-extended_varargs_abi_support.rs | 0 ...feature-gate-extended_varargs_abi_support.stderr | 0 {src/test => tests}/ui/c-variadic/issue-32201.rs | 0 .../test => tests}/ui/c-variadic/issue-32201.stderr | 0 {src/test => tests}/ui/c-variadic/issue-86053-1.rs | 0 .../ui/c-variadic/issue-86053-1.stderr | 0 {src/test => tests}/ui/c-variadic/issue-86053-2.rs | 0 .../ui/c-variadic/issue-86053-2.stderr | 0 {src/test => tests}/ui/c-variadic/variadic-ffi-1.rs | 0 .../ui/c-variadic/variadic-ffi-1.stderr | 0 {src/test => tests}/ui/c-variadic/variadic-ffi-2.rs | 0 .../ui/c-variadic/variadic-ffi-2.stderr | 0 {src/test => tests}/ui/c-variadic/variadic-ffi-4.rs | 0 .../ui/c-variadic/variadic-ffi-4.stderr | 0 {src/test => tests}/ui/c-variadic/variadic-ffi-6.rs | 0 .../ui/c-variadic/variadic-ffi-6.stderr | 0 .../ui/c-variadic/variadic-ffi-no-fixed-args.rs | 0 .../ui/c-variadic/variadic-ffi-no-fixed-args.stderr | 0 .../ui/c-variadic/variadic-unreachable-arg-error.rs | 0 {src/test => tests}/ui/can-copy-pod.rs | 0 .../ui/cancel-clean-via-immediate-rvalue-ref.rs | 0 .../ui/cannot-mutate-captured-non-mut-var.rs | 0 .../ui/cannot-mutate-captured-non-mut-var.stderr | 0 {src/test => tests}/ui/capture1.rs | 0 {src/test => tests}/ui/capture1.stderr | 0 {src/test => tests}/ui/cast/cast-as-bool.rs | 0 {src/test => tests}/ui/cast/cast-as-bool.stderr | 0 {src/test => tests}/ui/cast/cast-char.rs | 0 {src/test => tests}/ui/cast/cast-char.stderr | 0 {src/test => tests}/ui/cast/cast-does-fallback.rs | 0 .../ui/cast/cast-errors-issue-43825.rs | 0 .../ui/cast/cast-errors-issue-43825.stderr | 0 {src/test => tests}/ui/cast/cast-from-nil.rs | 0 {src/test => tests}/ui/cast/cast-from-nil.stderr | 0 {src/test => tests}/ui/cast/cast-int-to-char.rs | 0 {src/test => tests}/ui/cast/cast-int-to-char.stderr | 0 {src/test => tests}/ui/cast/cast-macro-lhs.rs | 0 {src/test => tests}/ui/cast/cast-macro-lhs.stderr | 0 .../ui/cast/cast-pointee-projection.rs | 0 {src/test => tests}/ui/cast/cast-region-to-uint.rs | 0 {src/test => tests}/ui/cast/cast-rfc0401-2.rs | 0 {src/test => tests}/ui/cast/cast-rfc0401-2.stderr | 0 .../ui/cast/cast-rfc0401-vtable-kinds.rs | 0 {src/test => tests}/ui/cast/cast-rfc0401.rs | 0 {src/test => tests}/ui/cast/cast-to-bare-fn.rs | 0 {src/test => tests}/ui/cast/cast-to-bare-fn.stderr | 0 {src/test => tests}/ui/cast/cast-to-infer-ty.rs | 0 {src/test => tests}/ui/cast/cast-to-nil.rs | 0 {src/test => tests}/ui/cast/cast-to-nil.stderr | 0 .../cast/cast-to-unsized-trait-object-suggestion.rs | 0 .../cast-to-unsized-trait-object-suggestion.stderr | 0 {src/test => tests}/ui/cast/cast.rs | 0 {src/test => tests}/ui/cast/casts-differing-anon.rs | 0 .../ui/cast/casts-differing-anon.stderr | 0 {src/test => tests}/ui/cast/casts-issue-46365.rs | 0 .../test => tests}/ui/cast/casts-issue-46365.stderr | 0 {src/test => tests}/ui/cast/codegen-object-shim.rs | 0 {src/test => tests}/ui/cast/fat-ptr-cast-rpass.rs | 0 {src/test => tests}/ui/cast/fat-ptr-cast.rs | 0 {src/test => tests}/ui/cast/fat-ptr-cast.stderr | 0 {src/test => tests}/ui/cast/issue-10991.rs | 0 {src/test => tests}/ui/cast/issue-10991.stderr | 0 {src/test => tests}/ui/cast/issue-17444.rs | 0 {src/test => tests}/ui/cast/issue-17444.stderr | 0 {src/test => tests}/ui/cast/issue-84213.fixed | 0 {src/test => tests}/ui/cast/issue-84213.rs | 0 {src/test => tests}/ui/cast/issue-84213.stderr | 0 {src/test => tests}/ui/cast/issue-85586.rs | 0 {src/test => tests}/ui/cast/issue-85586.stderr | 0 {src/test => tests}/ui/cast/issue-88621.rs | 0 {src/test => tests}/ui/cast/issue-88621.stderr | 0 {src/test => tests}/ui/cast/issue-89497.fixed | 0 {src/test => tests}/ui/cast/issue-89497.rs | 0 {src/test => tests}/ui/cast/issue-89497.stderr | 0 {src/test => tests}/ui/cast/supported-cast.rs | 0 {src/test => tests}/ui/cast/unsupported-cast.rs | 0 {src/test => tests}/ui/cast/unsupported-cast.stderr | 0 {src/test => tests}/ui/catch-unwind-bang.rs | 0 {src/test => tests}/ui/cenum_impl_drop_cast.rs | 0 {src/test => tests}/ui/cenum_impl_drop_cast.stderr | 0 .../assume-incomplete-release/assume-incomplete.rs | 0 .../auxiliary/ver-cfg-rel.rs | 0 .../ui/cfg/auxiliary/cfg_inner_static.rs | 0 {src/test => tests}/ui/cfg/cfg-attr-cfg.rs | 0 {src/test => tests}/ui/cfg/cfg-attr-crate.rs | 0 {src/test => tests}/ui/cfg/cfg-family.rs | 0 {src/test => tests}/ui/cfg/cfg-in-crate-1.rs | 0 {src/test => tests}/ui/cfg/cfg-macros-foo.rs | 0 {src/test => tests}/ui/cfg/cfg-macros-notfoo.rs | 0 {src/test => tests}/ui/cfg/cfg-match-arm.rs | 0 .../test => tests}/ui/cfg/cfg-method-receiver-ok.rs | 0 {src/test => tests}/ui/cfg/cfg-method-receiver.rs | 0 .../ui/cfg/cfg-method-receiver.stderr | 0 {src/test => tests}/ui/cfg/cfg-panic-abort.rs | 0 {src/test => tests}/ui/cfg/cfg-panic.rs | 0 {src/test => tests}/ui/cfg/cfg-path-error.rs | 0 {src/test => tests}/ui/cfg/cfg-path-error.stderr | 0 {src/test => tests}/ui/cfg/cfg-target-abi.rs | 0 .../ui/cfg/cfg-target-compact-errors.rs | 0 .../ui/cfg/cfg-target-compact-errors.stderr | 0 {src/test => tests}/ui/cfg/cfg-target-compact.rs | 0 {src/test => tests}/ui/cfg/cfg-target-family.rs | 0 {src/test => tests}/ui/cfg/cfg-target-vendor.rs | 0 {src/test => tests}/ui/cfg/cfg_attr.rs | 0 {src/test => tests}/ui/cfg/cfg_inner_static.rs | 0 {src/test => tests}/ui/cfg/cfg_stmt_expr.rs | 0 {src/test => tests}/ui/cfg/cfgs-on-items.rs | 0 .../ui/cfg/conditional-compile-arch.rs | 0 {src/test => tests}/ui/cfg/conditional-compile.rs | 0 {src/test => tests}/ui/cfg/crt-static-off-works.rs | 0 {src/test => tests}/ui/cfg/crt-static-on-works.rs | 0 {src/test => tests}/ui/cfg/expanded-cfg.rs | 0 ...future-compat-crate-attributes-using-cfg_attr.rs | 0 ...re-compat-crate-attributes-using-cfg_attr.stderr | 0 {src/test => tests}/ui/cfguard-run.rs | 0 {src/test => tests}/ui/chalkify/arithmetic.rs | 0 {src/test => tests}/ui/chalkify/assert.rs | 0 {src/test => tests}/ui/chalkify/basic.rs | 0 {src/test => tests}/ui/chalkify/bugs/async.rs | 0 {src/test => tests}/ui/chalkify/bugs/async.stderr | 0 .../ui/chalkify/builtin-copy-clone.rs | 0 .../ui/chalkify/chalk_initial_program.rs | 0 .../ui/chalkify/chalk_initial_program.stderr | 0 {src/test => tests}/ui/chalkify/closure.rs | 0 {src/test => tests}/ui/chalkify/closure.stderr | 0 {src/test => tests}/ui/chalkify/generic_impls.rs | 0 .../test => tests}/ui/chalkify/generic_impls.stderr | 0 {src/test => tests}/ui/chalkify/impl_wf.rs | 0 {src/test => tests}/ui/chalkify/impl_wf.stderr | 0 {src/test => tests}/ui/chalkify/impl_wf_2.rs | 0 {src/test => tests}/ui/chalkify/impl_wf_2.stderr | 0 {src/test => tests}/ui/chalkify/inherent_impl.rs | 0 .../test => tests}/ui/chalkify/inherent_impl_min.rs | 0 {src/test => tests}/ui/chalkify/lower_env1.rs | 0 {src/test => tests}/ui/chalkify/lower_env2.rs | 0 {src/test => tests}/ui/chalkify/lower_env3.rs | 0 {src/test => tests}/ui/chalkify/lower_impl.rs | 0 {src/test => tests}/ui/chalkify/lower_struct.rs | 0 {src/test => tests}/ui/chalkify/lower_trait.rs | 0 .../ui/chalkify/lower_trait_higher_rank.rs | 0 .../ui/chalkify/lower_trait_where_clause.rs | 0 {src/test => tests}/ui/chalkify/println.rs | 0 {src/test => tests}/ui/chalkify/projection.rs | 0 .../ui/chalkify/recursive_where_clause_on_type.rs | 0 .../chalkify/recursive_where_clause_on_type.stderr | 0 {src/test => tests}/ui/chalkify/super_trait.rs | 0 {src/test => tests}/ui/chalkify/trait-objects.rs | 0 .../ui/chalkify/trait_implied_bound.rs | 0 .../ui/chalkify/type_implied_bound.rs | 0 {src/test => tests}/ui/chalkify/type_inference.rs | 0 .../ui/chalkify/type_inference.stderr | 0 {src/test => tests}/ui/chalkify/type_wf.rs | 0 {src/test => tests}/ui/chalkify/type_wf.stderr | 0 {src/test => tests}/ui/char.rs | 0 .../ui/check-cfg/allow-at-crate-level.rs | 0 {src/test => tests}/ui/check-cfg/allow-macro-cfg.rs | 0 .../test => tests}/ui/check-cfg/allow-same-level.rs | 0 .../ui/check-cfg/allow-same-level.stderr | 0 {src/test => tests}/ui/check-cfg/allow-top-level.rs | 0 .../ui/check-cfg/allow-upper-level.rs | 0 {src/test => tests}/ui/check-cfg/compact-names.rs | 0 .../ui/check-cfg/compact-names.stderr | 0 {src/test => tests}/ui/check-cfg/compact-values.rs | 0 .../ui/check-cfg/compact-values.stderr | 0 {src/test => tests}/ui/check-cfg/empty-names.rs | 0 {src/test => tests}/ui/check-cfg/empty-names.stderr | 0 {src/test => tests}/ui/check-cfg/empty-values.rs | 0 .../test => tests}/ui/check-cfg/empty-values.stderr | 0 .../invalid-arguments.anything_else.stderr | 0 .../invalid-arguments.names_simple_ident.stderr | 0 .../ui/check-cfg/invalid-arguments.rs | 0 .../invalid-arguments.values_simple_ident.stderr | 0 .../invalid-arguments.values_string_literals.stderr | 0 .../test => tests}/ui/check-cfg/invalid-cfg-name.rs | 0 .../ui/check-cfg/invalid-cfg-name.stderr | 0 .../ui/check-cfg/invalid-cfg-value.rs | 0 .../ui/check-cfg/invalid-cfg-value.stderr | 0 {src/test => tests}/ui/check-cfg/mix.rs | 0 {src/test => tests}/ui/check-cfg/mix.stderr | 0 {src/test => tests}/ui/check-cfg/no-values.rs | 0 {src/test => tests}/ui/check-cfg/no-values.stderr | 0 {src/test => tests}/ui/check-cfg/stmt-no-ice.rs | 0 {src/test => tests}/ui/check-cfg/stmt-no-ice.stderr | 0 .../test => tests}/ui/check-cfg/well-known-names.rs | 0 .../ui/check-cfg/well-known-names.stderr | 0 .../ui/check-cfg/well-known-values.rs | 0 .../ui/check-cfg/well-known-values.stderr | 0 .../ui/check-static-immutable-mut-slices.rs | 0 .../ui/check-static-immutable-mut-slices.stderr | 0 .../ui/check-static-recursion-foreign.rs | 0 .../ui/check-static-values-constraints.rs | 0 .../ui/check-static-values-constraints.stderr | 0 {src/test => tests}/ui/class-cast-to-trait.rs | 0 {src/test => tests}/ui/class-cast-to-trait.stderr | 0 {src/test => tests}/ui/class-method-missing.rs | 0 {src/test => tests}/ui/class-method-missing.stderr | 0 {src/test => tests}/ui/cleanup-rvalue-for-scope.rs | 0 {src/test => tests}/ui/cleanup-rvalue-scopes-cf.rs | 0 .../ui/cleanup-rvalue-scopes-cf.stderr | 0 {src/test => tests}/ui/cleanup-rvalue-scopes.rs | 0 .../cleanup-rvalue-temp-during-incomplete-alloc.rs | 0 {src/test => tests}/ui/cleanup-shortcircuit.rs | 0 .../ui/close-over-big-then-small-data.rs | 0 .../expect-fn-supply-fn-multiple.rs | 0 .../ui/closure-expected-type/expect-fn-supply-fn.rs | 0 .../expect-fn-supply-fn.stderr | 0 .../expect-infer-var-appearing-twice.rs | 0 .../expect-infer-var-appearing-twice.stderr | 0 .../expect-infer-var-supply-ty-with-bound-region.rs | 0 .../expect-infer-var-supply-ty-with-free-region.rs | 0 ...ct-two-infer-vars-supply-ty-with-bound-region.rs | 0 ...wo-infer-vars-supply-ty-with-bound-region.stderr | 0 .../ui/closure-expected-type/issue-24421.rs | 0 .../ui/closure_context/issue-26046-fn-mut.rs | 0 .../ui/closure_context/issue-26046-fn-mut.stderr | 0 .../ui/closure_context/issue-26046-fn-once.rs | 0 .../ui/closure_context/issue-26046-fn-once.stderr | 0 .../ui/closure_context/issue-42065.rs | 0 .../ui/closure_context/issue-42065.stderr | 0 .../arrays-completely-captured.rs | 0 .../arrays-completely-captured.stderr | 0 .../ui/closures/2229_closure_analysis/by_value.rs | 0 .../closures/2229_closure_analysis/by_value.stderr | 0 .../2229_closure_analysis/capture-analysis-1.rs | 0 .../2229_closure_analysis/capture-analysis-1.stderr | 0 .../2229_closure_analysis/capture-analysis-2.rs | 0 .../2229_closure_analysis/capture-analysis-2.stderr | 0 .../2229_closure_analysis/capture-analysis-3.rs | 0 .../2229_closure_analysis/capture-analysis-3.stderr | 0 .../2229_closure_analysis/capture-analysis-4.rs | 0 .../2229_closure_analysis/capture-analysis-4.stderr | 0 .../capture-disjoint-field-struct.rs | 0 .../capture-disjoint-field-struct.stderr | 0 .../capture-disjoint-field-tuple.rs | 0 .../capture-disjoint-field-tuple.stderr | 0 .../2229_closure_analysis/capture-enum-field.rs | 0 .../closures/2229_closure_analysis/capture-enums.rs | 0 .../2229_closure_analysis/capture-enums.stderr | 0 .../2229_closure_analysis/deep-multilevel-struct.rs | 0 .../deep-multilevel-struct.stderr | 0 .../2229_closure_analysis/deep-multilevel-tuple.rs | 0 .../deep-multilevel-tuple.stderr | 0 .../2229_closure_analysis/destructure_patterns.rs | 0 .../destructure_patterns.stderr | 0 .../2229_closure_analysis/diagnostics/arrays.rs | 0 .../2229_closure_analysis/diagnostics/arrays.stderr | 0 .../diagnostics/borrowck/borrowck-1.rs | 0 .../diagnostics/borrowck/borrowck-1.stderr | 0 .../diagnostics/borrowck/borrowck-2.rs | 0 .../diagnostics/borrowck/borrowck-2.stderr | 0 .../diagnostics/borrowck/borrowck-3.rs | 0 .../diagnostics/borrowck/borrowck-3.stderr | 0 .../diagnostics/borrowck/borrowck-4.rs | 0 .../diagnostics/borrowck/borrowck-4.stderr | 0 .../borrowck/borrowck-closures-mut-and-imm.rs | 0 .../borrowck/borrowck-closures-mut-and-imm.stderr | 0 .../2229_closure_analysis/diagnostics/box.rs | 0 .../2229_closure_analysis/diagnostics/box.stderr | 0 .../diagnostics/cant-mutate-imm-borrow.rs | 0 .../diagnostics/cant-mutate-imm-borrow.stderr | 0 .../diagnostics/cant-mutate-imm.rs | 0 .../diagnostics/cant-mutate-imm.stderr | 0 .../diagnostics/closure-origin-array-diagnostics.rs | 0 .../closure-origin-array-diagnostics.stderr | 0 .../closure-origin-multi-variant-diagnostics.rs | 0 .../closure-origin-multi-variant-diagnostics.stderr | 0 .../closure-origin-single-variant-diagnostics.rs | 0 ...closure-origin-single-variant-diagnostics.stderr | 0 .../closure-origin-struct-diagnostics.rs | 0 .../closure-origin-struct-diagnostics.stderr | 0 .../closure-origin-tuple-diagnostics-1.rs | 0 .../closure-origin-tuple-diagnostics-1.stderr | 0 .../diagnostics/closure-origin-tuple-diagnostics.rs | 0 .../closure-origin-tuple-diagnostics.stderr | 0 .../2229_closure_analysis/diagnostics/liveness.rs | 0 .../diagnostics/liveness.stderr | 0 .../diagnostics/liveness_unintentional_copy.rs | 0 .../diagnostics/liveness_unintentional_copy.stderr | 0 .../diagnostics/multilevel-path.rs | 0 .../diagnostics/multilevel-path.stderr | 0 .../2229_closure_analysis/diagnostics/mut_ref.rs | 0 .../diagnostics/mut_ref.stderr | 0 .../diagnostics/repr_packed.rs | 0 .../diagnostics/repr_packed.stderr | 0 .../diagnostics/simple-struct-min-capture.rs | 0 .../diagnostics/simple-struct-min-capture.stderr | 0 .../2229_closure_analysis/diagnostics/union.rs | 0 .../2229_closure_analysis/diagnostics/union.stderr | 0 .../feature-gate-capture_disjoint_fields.rs | 0 .../feature-gate-capture_disjoint_fields.stderr | 0 .../filter-on-struct-member.rs | 0 .../filter-on-struct-member.stderr | 0 .../closures/2229_closure_analysis/issue-87378.rs | 0 .../2229_closure_analysis/issue-87378.stderr | 0 .../closures/2229_closure_analysis/issue-87987.rs | 0 .../2229_closure_analysis/issue-87987.stderr | 0 .../closures/2229_closure_analysis/issue-88118-2.rs | 0 .../2229_closure_analysis/issue-88118-2.stderr | 0 .../closures/2229_closure_analysis/issue-88476.rs | 0 .../2229_closure_analysis/issue-88476.stderr | 0 .../closures/2229_closure_analysis/issue-89606.rs | 0 .../2229_closure_analysis/issue-90465.fixed | 0 .../closures/2229_closure_analysis/issue-90465.rs | 0 .../2229_closure_analysis/issue-90465.stderr | 0 .../issue-92724-needsdrop-query-cycle.rs | 0 .../closures/2229_closure_analysis/issue_88118.rs | 0 .../match/auxiliary/match_non_exhaustive_lib.rs | 0 .../2229_closure_analysis/match/issue-87097.rs | 0 .../2229_closure_analysis/match/issue-87097.stderr | 0 .../2229_closure_analysis/match/issue-87426.rs | 0 .../2229_closure_analysis/match/issue-87988.rs | 0 .../2229_closure_analysis/match/issue-88331.rs | 0 .../2229_closure_analysis/match/issue-88331.stderr | 0 .../match/match-edge-cases_1.rs | 0 .../match/match-edge-cases_2.rs | 0 .../match/match-edge-cases_2.stderr | 0 .../match/non-exhaustive-match.rs | 0 .../match/non-exhaustive-match.stderr | 0 .../match/pattern-matching-should-fail.rs | 0 .../match/pattern-matching-should-fail.stderr | 0 .../match/patterns-capture-analysis.rs | 0 .../match/patterns-capture-analysis.stderr | 0 .../migrations/auto_traits.fixed | 0 .../2229_closure_analysis/migrations/auto_traits.rs | 0 .../migrations/auto_traits.stderr | 0 .../migrations/closure-body-macro-fragment.fixed | 0 .../migrations/closure-body-macro-fragment.rs | 0 .../migrations/closure-body-macro-fragment.stderr | 0 .../migrations/insignificant_drop.fixed | 0 .../migrations/insignificant_drop.rs | 0 .../insignificant_drop_attr_migrations.fixed | 0 .../insignificant_drop_attr_migrations.rs | 0 .../insignificant_drop_attr_migrations.stderr | 0 .../insignificant_drop_attr_no_migrations.rs | 0 .../2229_closure_analysis/migrations/issue-78720.rs | 0 .../migrations/issue-78720.stderr | 0 .../2229_closure_analysis/migrations/issue-86753.rs | 0 .../migrations/issue-90024-adt-correct-subst.rs | 0 .../2229_closure_analysis/migrations/macro.fixed | 0 .../2229_closure_analysis/migrations/macro.rs | 0 .../2229_closure_analysis/migrations/macro.stderr | 0 .../migrations/migrations_rustfix.fixed | 0 .../migrations/migrations_rustfix.rs | 0 .../migrations/migrations_rustfix.stderr | 0 .../migrations/mir_calls_to_shims.fixed | 0 .../migrations/mir_calls_to_shims.rs | 0 .../migrations/mir_calls_to_shims.stderr | 0 .../migrations/multi_diagnostics.fixed | 0 .../migrations/multi_diagnostics.rs | 0 .../migrations/multi_diagnostics.stderr | 0 .../migrations/no_migrations.rs | 0 .../2229_closure_analysis/migrations/old_name.rs | 0 .../migrations/old_name.stderr | 0 .../2229_closure_analysis/migrations/precise.fixed | 0 .../2229_closure_analysis/migrations/precise.rs | 0 .../2229_closure_analysis/migrations/precise.stderr | 0 .../migrations/precise_no_migrations.rs | 0 .../migrations/significant_drop.fixed | 0 .../migrations/significant_drop.rs | 0 .../migrations/significant_drop.stderr | 0 .../migrations/unpin_no_migration.rs | 0 .../closures/2229_closure_analysis/move_closure.rs | 0 .../2229_closure_analysis/move_closure.stderr | 0 .../2229_closure_analysis/multilevel-path-1.rs | 0 .../2229_closure_analysis/multilevel-path-1.stderr | 0 .../2229_closure_analysis/multilevel-path-2.rs | 0 .../2229_closure_analysis/multilevel-path-2.stderr | 0 .../2229_closure_analysis/nested-closure.rs | 0 .../2229_closure_analysis/nested-closure.stderr | 0 .../2229_closure_analysis/optimization/edge_case.rs | 0 .../optimization/edge_case.stderr | 0 .../optimization/edge_case_run_pass.rs | 0 .../2229_closure_analysis/path-with-array-access.rs | 0 .../path-with-array-access.stderr | 0 .../preserve_field_drop_order.rs | 0 .../preserve_field_drop_order.stderr | 0 .../preserve_field_drop_order2.rs | 0 ...rve_field_drop_order2.twenty_eighteen.run.stdout | 0 ...ve_field_drop_order2.twenty_twentyone.run.stdout | 0 .../closures/2229_closure_analysis/repr_packed.rs | 0 .../2229_closure_analysis/repr_packed.stderr | 0 .../closures/2229_closure_analysis/run_pass/box.rs | 0 .../2229_closure_analysis/run_pass/by_value.rs | 0 .../run_pass/capture-disjoint-field-struct.rs | 0 .../run_pass/capture-disjoint-field-tuple-mut.rs | 0 .../run_pass/capture-disjoint-field-tuple.rs | 0 .../run_pass/capture_with_wildcard_match.rs | 0 .../destructure-pattern-closure-within-closure.rs | 0 ...estructure-pattern-closure-within-closure.stderr | 0 .../run_pass/destructure_patterns.rs | 0 .../run_pass/destructure_patterns.stderr | 0 .../run_pass/disjoint-capture-in-same-closure.rs | 0 .../run_pass/drop_then_use_fake_reads.rs | 0 .../2229_closure_analysis/run_pass/edition.rs | 0 .../run_pass/filter-on-struct-member.rs | 0 .../2229_closure_analysis/run_pass/fru_syntax.rs | 0 .../2229_closure_analysis/run_pass/issue-87378.rs | 0 .../2229_closure_analysis/run_pass/issue-88372.rs | 0 .../2229_closure_analysis/run_pass/issue-88431.rs | 0 .../2229_closure_analysis/run_pass/issue-88476.rs | 0 .../run_pass/lit-pattern-matching-with-methods.rs | 0 .../2229_closure_analysis/run_pass/move_closure.rs | 0 .../run_pass/multilevel-path-1.rs | 0 .../run_pass/multilevel-path-2.rs | 0 .../run_pass/multilevel-path-3.rs | 0 .../2229_closure_analysis/run_pass/mut_ref.rs | 0 .../run_pass/mut_ref_struct_mem.rs | 0 .../run_pass/nested-closure.rs | 0 .../struct-pattern-matching-with-methods.rs | 0 .../tuple-struct-pattern-matching-with-methods.rs | 0 .../2229_closure_analysis/run_pass/unsafe_ptr.rs | 0 .../use_of_mutable_borrow_and_fake_reads.rs | 0 .../simple-struct-min-capture.rs | 0 .../simple-struct-min-capture.stderr | 0 .../ui/closures/2229_closure_analysis/unsafe_ptr.rs | 0 .../2229_closure_analysis/unsafe_ptr.stderr | 0 .../closures/2229_closure_analysis/wild_patterns.rs | 0 .../2229_closure_analysis/wild_patterns.stderr | 0 .../ui/closures/add_semicolon_non_block_closure.rs | 0 .../closures/add_semicolon_non_block_closure.stderr | 0 .../ui/closures/binder/async-closure-with-binder.rs | 0 .../binder/async-closure-with-binder.stderr | 0 .../ui/closures/binder/disallow-const.rs | 0 .../ui/closures/binder/disallow-const.stderr | 0 .../ui/closures/binder/disallow-ty.rs | 0 .../ui/closures/binder/disallow-ty.stderr | 0 .../ui/closures/binder/implicit-return.rs | 0 .../ui/closures/binder/implicit-return.stderr | 0 .../ui/closures/binder/implicit-stuff.rs | 0 .../ui/closures/binder/implicit-stuff.stderr | 0 .../ui/closures/binder/late-bound-in-body.rs | 0 .../ui/closures/binder/nested-closures-regions.rs | 0 .../closures/binder/nested-closures-regions.stderr | 0 .../ui/closures/binder/nested-closures.rs | 0 ...ggestion-for-introducing-lifetime-into-binder.rs | 0 ...tion-for-introducing-lifetime-into-binder.stderr | 0 .../ui/closures/closure-array-break-length.rs | 0 .../ui/closures/closure-array-break-length.stderr | 0 ...osure-bounds-cant-promote-superkind-in-struct.rs | 0 ...e-bounds-cant-promote-superkind-in-struct.stderr | 0 .../closure-bounds-static-cant-capture-borrowed.rs | 0 ...osure-bounds-static-cant-capture-borrowed.stderr | 0 .../ui/closures/closure-bounds-subtype.rs | 0 .../ui/closures/closure-bounds-subtype.stderr | 0 .../expect-region-supply-region-2.polonius.stderr | 0 .../expect-region-supply-region-2.rs | 0 .../expect-region-supply-region-2.stderr | 0 .../expect-region-supply-region.rs | 0 .../expect-region-supply-region.stderr | 0 {src/test => tests}/ui/closures/closure-expected.rs | 0 .../ui/closures/closure-expected.stderr | 0 .../closures/closure-immutable-outer-variable.fixed | 0 .../ui/closures/closure-immutable-outer-variable.rs | 0 .../closure-immutable-outer-variable.rs.fixed | 0 .../closure-immutable-outer-variable.stderr | 0 .../test => tests}/ui/closures/closure-move-sync.rs | 0 .../ui/closures/closure-move-sync.stderr | 0 {src/test => tests}/ui/closures/closure-no-fn-1.rs | 0 .../ui/closures/closure-no-fn-1.stderr | 0 {src/test => tests}/ui/closures/closure-no-fn-2.rs | 0 .../ui/closures/closure-no-fn-2.stderr | 0 {src/test => tests}/ui/closures/closure-no-fn-3.rs | 0 .../ui/closures/closure-no-fn-3.stderr | 0 {src/test => tests}/ui/closures/closure-no-fn-4.rs | 0 .../ui/closures/closure-no-fn-4.stderr | 0 {src/test => tests}/ui/closures/closure-no-fn-5.rs | 0 .../ui/closures/closure-no-fn-5.stderr | 0 .../closure-referencing-itself-issue-25954.rs | 0 .../closure-referencing-itself-issue-25954.stderr | 0 .../ui/closures/closure-reform-bad.rs | 0 .../ui/closures/closure-reform-bad.stderr | 0 .../ui/closures/closure-return-type-mismatch.rs | 0 .../ui/closures/closure-return-type-mismatch.stderr | 0 .../closures/closure-return-type-must-be-sized.rs | 0 .../closure-return-type-must-be-sized.stderr | 0 .../ui/closures/closure-wrong-kind.rs | 0 .../ui/closures/closure-wrong-kind.stderr | 0 .../ui/closures/closure_cap_coerce_many_fail.rs | 0 .../ui/closures/closure_cap_coerce_many_fail.stderr | 0 .../closure_no_cap_coerce_many_check_pass.rs | 0 .../closures/closure_no_cap_coerce_many_run_pass.rs | 0 .../closure_no_cap_coerce_many_unsafe_0.mir.stderr | 0 .../closures/closure_no_cap_coerce_many_unsafe_0.rs | 0 .../closure_no_cap_coerce_many_unsafe_0.thir.stderr | 0 .../closures/closure_no_cap_coerce_many_unsafe_1.rs | 0 .../test => tests}/ui/closures/closure_promotion.rs | 0 ...oerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr | 0 .../coerce-unsafe-closure-to-unsafe-fn-ptr.rs | 0 ...erce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr | 0 .../ui/closures/coerce-unsafe-to-closure.rs | 0 .../ui/closures/coerce-unsafe-to-closure.stderr | 0 .../ui/closures/deeply-nested_closures.rs | 0 .../test => tests}/ui/closures/diverging-closure.rs | 0 {src/test => tests}/ui/closures/issue-101696.rs | 0 .../closures/issue-102089-multiple-opaque-cast.rs | 0 {src/test => tests}/ui/closures/issue-10398.rs | 0 {src/test => tests}/ui/closures/issue-10398.stderr | 0 .../issue-23012-supertrait-signature-inference.rs | 0 {src/test => tests}/ui/closures/issue-41366.rs | 0 {src/test => tests}/ui/closures/issue-42463.rs | 0 {src/test => tests}/ui/closures/issue-46742.rs | 0 {src/test => tests}/ui/closures/issue-48109.rs | 0 {src/test => tests}/ui/closures/issue-52437.rs | 0 {src/test => tests}/ui/closures/issue-52437.stderr | 0 {src/test => tests}/ui/closures/issue-67123.rs | 0 {src/test => tests}/ui/closures/issue-67123.stderr | 0 {src/test => tests}/ui/closures/issue-6801.rs | 0 {src/test => tests}/ui/closures/issue-6801.stderr | 0 {src/test => tests}/ui/closures/issue-68025.rs | 0 .../issue-72408-nested-closures-exponential.rs | 0 {src/test => tests}/ui/closures/issue-78720.rs | 0 {src/test => tests}/ui/closures/issue-78720.stderr | 0 .../issue-80313-mutable-borrow-in-closure.rs | 0 .../issue-80313-mutable-borrow-in-closure.stderr | 0 .../issue-80313-mutable-borrow-in-move-closure.rs | 0 ...ssue-80313-mutable-borrow-in-move-closure.stderr | 0 .../ui/closures/issue-80313-mutation-in-closure.rs | 0 .../closures/issue-80313-mutation-in-closure.stderr | 0 .../issue-80313-mutation-in-move-closure.rs | 0 .../issue-80313-mutation-in-move-closure.stderr | 0 .../ui/closures/issue-81700-mut-borrow.rs | 0 .../ui/closures/issue-81700-mut-borrow.stderr | 0 .../ui/closures/issue-82438-mut-without-upvar.rs | 0 .../closures/issue-82438-mut-without-upvar.stderr | 0 .../ui/closures/issue-84044-drop-non-mut.rs | 0 .../ui/closures/issue-84044-drop-non-mut.stderr | 0 {src/test => tests}/ui/closures/issue-84128.rs | 0 {src/test => tests}/ui/closures/issue-84128.stderr | 0 {src/test => tests}/ui/closures/issue-87461.rs | 0 {src/test => tests}/ui/closures/issue-87461.stderr | 0 {src/test => tests}/ui/closures/issue-87814-1.rs | 0 {src/test => tests}/ui/closures/issue-87814-2.rs | 0 {src/test => tests}/ui/closures/issue-90871.rs | 0 {src/test => tests}/ui/closures/issue-90871.stderr | 0 {src/test => tests}/ui/closures/issue-97607.rs | 0 {src/test => tests}/ui/closures/issue-99565.rs | 0 {src/test => tests}/ui/closures/issue-99565.stderr | 0 {src/test => tests}/ui/closures/local-type-mix.rs | 0 .../ui/closures/local-type-mix.stderr | 0 .../ui/closures/multiple-fn-bounds.rs | 0 .../ui/closures/multiple-fn-bounds.stderr | 0 .../ui/closures/old-closure-arg-call-as.rs | 0 {src/test => tests}/ui/closures/old-closure-arg.rs | 0 .../ui/closures/old-closure-explicit-types.rs | 0 .../ui/closures/old-closure-expr-precedence.rs | 0 .../ui/closures/old-closure-expr-precedence.stderr | 0 .../old-closure-expression-remove-semicolon.fixed | 0 .../old-closure-expression-remove-semicolon.rs | 0 .../old-closure-expression-remove-semicolon.stderr | 0 .../ui/closures/old-closure-fn-coerce.rs | 0 .../ui/closures/old-closure-iter-1.rs | 0 .../ui/closures/old-closure-iter-2.rs | 0 .../ui/closures/once-move-out-on-heap.rs | 0 .../ui/closures/print/closure-print-generic-1.rs | 0 .../closures/print/closure-print-generic-1.stderr | 0 .../ui/closures/print/closure-print-generic-2.rs | 0 .../closures/print/closure-print-generic-2.stderr | 0 .../closure-print-generic-trim-off-verbose-2.rs | 0 .../closure-print-generic-trim-off-verbose-2.stderr | 0 .../print/closure-print-generic-verbose-1.rs | 0 .../print/closure-print-generic-verbose-1.stderr | 0 .../print/closure-print-generic-verbose-2.rs | 0 .../print/closure-print-generic-verbose-2.stderr | 0 .../ui/closures/print/closure-print-verbose.rs | 0 .../ui/closures/print/closure-print-verbose.stderr | 0 .../ui/closures/semistatement-in-lambda.rs | 0 .../ui/closures/supertrait-hint-cycle-2.rs | 0 .../ui/closures/supertrait-hint-cycle-3.rs | 0 .../ui/closures/supertrait-hint-cycle.rs | 0 .../closures/supertrait-hint-references-assoc-ty.rs | 0 .../ui/closures/thir-unsafeck-issue-85871.rs | 0 .../cmse-nonsecure/cmse-nonsecure-call/gate_test.rs | 0 .../cmse-nonsecure-call/gate_test.stderr | 0 .../cmse-nonsecure-call/params-on-registers.rs | 0 .../cmse-nonsecure-call/params-on-stack.rs | 0 .../cmse-nonsecure-call/params-on-stack.stderr | 0 .../cmse-nonsecure-call/wrong-abi-location-1.rs | 0 .../cmse-nonsecure-call/wrong-abi-location-1.stderr | 0 .../cmse-nonsecure-call/wrong-abi-location-2.rs | 0 .../cmse-nonsecure-call/wrong-abi-location-2.stderr | 0 .../cmse-nonsecure-entry/gate_test.rs | 0 .../cmse-nonsecure-entry/gate_test.stderr | 0 .../cmse-nonsecure-entry/issue-83475.rs | 0 .../cmse-nonsecure-entry/issue-83475.stderr | 0 .../cmse-nonsecure-entry/params-on-registers.rs | 0 .../cmse-nonsecure-entry/params-on-stack.rs | 0 .../cmse-nonsecure-entry/params-on-stack.stderr | 0 .../cmse-nonsecure-entry/trustzone-only.rs | 0 .../cmse-nonsecure-entry/trustzone-only.stderr | 0 .../cmse-nonsecure-entry/wrong-abi.rs | 0 .../cmse-nonsecure-entry/wrong-abi.stderr | 0 .../ui/codegen/auxiliary/issue-97708-aux.rs | 0 .../ui/codegen/auxiliary/llvm_pr32379.rs | 0 {src/test => tests}/ui/codegen/init-large-type.rs | 0 .../ui/codegen/issue-101585-128bit-repeat.rs | 0 {src/test => tests}/ui/codegen/issue-16602-1.rs | 0 {src/test => tests}/ui/codegen/issue-16602-2.rs | 0 {src/test => tests}/ui/codegen/issue-16602-3.rs | 0 {src/test => tests}/ui/codegen/issue-28950.rs | 0 {src/test => tests}/ui/codegen/issue-55976.rs | 0 {src/test => tests}/ui/codegen/issue-63787.rs | 0 {src/test => tests}/ui/codegen/issue-64401.rs | 0 .../ui/codegen/issue-82859-slice-miscompile.rs | 0 .../issue-88043-bb-does-not-have-terminator.rs | 0 {src/test => tests}/ui/codegen/issue-97708.rs | 0 {src/test => tests}/ui/codegen/issue-99551.rs | 0 {src/test => tests}/ui/codegen/llvm-pr32379.rs | 0 .../ui/codemap_tests/bad-format-args.rs | 0 .../ui/codemap_tests/bad-format-args.stderr | 0 .../coherence-overlapping-inherent-impl-trait.rs | 0 ...coherence-overlapping-inherent-impl-trait.stderr | 0 {src/test => tests}/ui/codemap_tests/empty_span.rs | 0 .../ui/codemap_tests/empty_span.stderr | 0 .../ui/codemap_tests/huge_multispan_highlight.rs | 0 .../codemap_tests/huge_multispan_highlight.stderr | 0 {src/test => tests}/ui/codemap_tests/issue-11715.rs | 0 .../ui/codemap_tests/issue-11715.stderr | 0 {src/test => tests}/ui/codemap_tests/issue-28308.rs | 0 .../ui/codemap_tests/issue-28308.stderr | 0 {src/test => tests}/ui/codemap_tests/one_line.rs | 0 .../test => tests}/ui/codemap_tests/one_line.stderr | 0 .../ui/codemap_tests/overlapping_inherent_impls.rs | 0 .../codemap_tests/overlapping_inherent_impls.stderr | 0 {src/test => tests}/ui/codemap_tests/tab.rs | 0 {src/test => tests}/ui/codemap_tests/tab.stderr | 0 {src/test => tests}/ui/codemap_tests/tab_2.rs | 0 {src/test => tests}/ui/codemap_tests/tab_2.stderr | 0 {src/test => tests}/ui/codemap_tests/tab_3.rs | 0 {src/test => tests}/ui/codemap_tests/tab_3.stderr | 0 {src/test => tests}/ui/codemap_tests/two_files.rs | 0 .../ui/codemap_tests/two_files.stderr | 0 .../ui/codemap_tests/two_files_data.rs | 0 .../ui/codemap_tests/unicode.expanded.stdout | 0 .../ui/codemap_tests/unicode.normal.stderr | 0 {src/test => tests}/ui/codemap_tests/unicode.rs | 0 {src/test => tests}/ui/codemap_tests/unicode_2.rs | 0 .../ui/codemap_tests/unicode_2.stderr | 0 {src/test => tests}/ui/codemap_tests/unicode_3.rs | 0 .../ui/codemap_tests/unicode_3.stderr | 0 .../ui/coercion/auxiliary/issue-39823.rs | 0 .../ui/coercion/coerce-block-tail-26978.rs | 0 .../ui/coercion/coerce-block-tail-26978.stderr | 0 .../ui/coercion/coerce-block-tail-57749.rs | 0 .../ui/coercion/coerce-block-tail-57749.stderr | 0 .../ui/coercion/coerce-block-tail-83783.rs | 0 .../ui/coercion/coerce-block-tail-83783.stderr | 0 .../ui/coercion/coerce-block-tail-83850.rs | 0 .../ui/coercion/coerce-block-tail-83850.stderr | 0 .../test => tests}/ui/coercion/coerce-block-tail.rs | 0 .../ui/coercion/coerce-block-tail.stderr | 0 .../ui/coercion/coerce-expect-unsized-ascribed.rs | 0 .../coercion/coerce-expect-unsized-ascribed.stderr | 0 .../ui/coercion/coerce-expect-unsized.rs | 0 ...-issue-49593-box-never-windows.nofallback.stderr | 0 .../coerce-issue-49593-box-never-windows.rs | 0 .../coerce-issue-49593-box-never.nofallback.stderr | 0 .../ui/coercion/coerce-issue-49593-box-never.rs | 0 {src/test => tests}/ui/coercion/coerce-mut.rs | 0 {src/test => tests}/ui/coercion/coerce-mut.stderr | 0 .../ui/coercion/coerce-overloaded-autoderef-fail.rs | 0 .../coerce-overloaded-autoderef-fail.stderr | 0 .../ui/coercion/coerce-overloaded-autoderef.rs | 0 .../ui/coercion/coerce-reborrow-imm-ptr-arg.rs | 0 .../ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs | 0 .../ui/coercion/coerce-reborrow-imm-vec-arg.rs | 0 .../ui/coercion/coerce-reborrow-imm-vec-rcvr.rs | 0 .../ui/coercion/coerce-reborrow-multi-arg-fail.rs | 0 .../coercion/coerce-reborrow-multi-arg-fail.stderr | 0 .../ui/coercion/coerce-reborrow-multi-arg.rs | 0 .../ui/coercion/coerce-reborrow-mut-ptr-arg.rs | 0 .../ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs | 0 .../ui/coercion/coerce-reborrow-mut-vec-arg.rs | 0 .../ui/coercion/coerce-reborrow-mut-vec-rcvr.rs | 0 .../ui/coercion/coerce-to-bang-cast.rs | 0 .../ui/coercion/coerce-to-bang-cast.stderr | 0 {src/test => tests}/ui/coercion/coerce-to-bang.rs | 0 .../ui/coercion/coerce-to-bang.stderr | 0 .../ui/coercion/coerce-unify-return.rs | 0 {src/test => tests}/ui/coercion/coerce-unify.rs | 0 .../ui/coercion/coerce-unsize-subtype.rs | 0 .../coercion-missing-tail-expected-type.fixed | 0 .../coercion/coercion-missing-tail-expected-type.rs | 0 .../coercion-missing-tail-expected-type.stderr | 0 {src/test => tests}/ui/coercion/coercion-slice.rs | 0 .../ui/coercion/coercion-slice.stderr | 0 {src/test => tests}/ui/coercion/issue-101066.rs | 0 {src/test => tests}/ui/coercion/issue-14589.rs | 0 {src/test => tests}/ui/coercion/issue-36007.rs | 0 {src/test => tests}/ui/coercion/issue-37655.rs | 0 {src/test => tests}/ui/coercion/issue-39823.rs | 0 {src/test => tests}/ui/coercion/issue-53475.rs | 0 {src/test => tests}/ui/coercion/issue-53475.stderr | 0 {src/test => tests}/ui/coercion/issue-73886.rs | 0 {src/test => tests}/ui/coercion/issue-73886.stderr | 0 {src/test => tests}/ui/coercion/issue-88097.rs | 0 {src/test => tests}/ui/coercion/retslot-cast.rs | 0 {src/test => tests}/ui/coercion/retslot-cast.stderr | 0 {src/test => tests}/ui/coercion/unsafe-coercion.rs | 0 .../coherence/auxiliary/coherence_copy_like_lib.rs | 0 .../auxiliary/coherence_fundamental_trait_lib.rs | 0 .../auxiliary/coherence_inherent_cc_lib.rs | 0 .../ui/coherence/auxiliary/coherence_lib.rs | 0 .../ui/coherence/auxiliary/coherence_orphan_lib.rs | 0 .../ui/coherence/auxiliary/error_lib.rs | 0 .../ui/coherence/auxiliary/go_trait.rs | 0 .../ui/coherence/auxiliary/option_future.rs | 0 .../auxiliary/re_rebalance_coherence_lib-rpass.rs | 0 .../auxiliary/re_rebalance_coherence_lib.rs | 0 .../coherence/auxiliary/trait-with-const-param.rs | 0 .../ui/coherence/auxiliary/trait_impl_conflict.rs | 0 .../ui/coherence/coherence-all-remote.rs | 0 .../ui/coherence/coherence-all-remote.stderr | 0 .../ui/coherence/coherence-bigint-int.rs | 0 .../ui/coherence/coherence-bigint-param.rs | 0 .../ui/coherence/coherence-bigint-param.stderr | 0 .../ui/coherence/coherence-bigint-vecint.rs | 0 ...ce-blanket-conflicts-with-blanket-implemented.rs | 0 ...lanket-conflicts-with-blanket-implemented.stderr | 0 ...-blanket-conflicts-with-blanket-unimplemented.rs | 0 ...nket-conflicts-with-blanket-unimplemented.stderr | 0 ...e-blanket-conflicts-with-specific-cross-crate.rs | 0 ...anket-conflicts-with-specific-cross-crate.stderr | 0 ...blanket-conflicts-with-specific-multidispatch.rs | 0 ...ket-conflicts-with-specific-multidispatch.stderr | 0 ...herence-blanket-conflicts-with-specific-trait.rs | 0 ...nce-blanket-conflicts-with-specific-trait.stderr | 0 .../coherence-blanket-conflicts-with-specific.rs | 0 ...coherence-blanket-conflicts-with-specific.stderr | 0 .../ui/coherence/coherence-blanket.rs | 0 .../coherence-conflicting-negative-trait-impl.rs | 0 ...coherence-conflicting-negative-trait-impl.stderr | 0 .../coherence/coherence-covered-type-parameter.rs | 0 .../ui/coherence/coherence-cow.re_a.stderr | 0 .../ui/coherence/coherence-cow.re_b.stderr | 0 .../ui/coherence/coherence-cow.re_c.stderr | 0 {src/test => tests}/ui/coherence/coherence-cow.rs | 0 .../ui/coherence/coherence-cross-crate-conflict.rs | 0 .../coherence/coherence-cross-crate-conflict.stderr | 0 .../ui/coherence/coherence-default-trait-impl.rs | 0 .../coherence/coherence-default-trait-impl.stderr | 0 .../ui/coherence/coherence-error-suppression.rs | 0 .../ui/coherence/coherence-error-suppression.stderr | 0 .../coherence-fn-covariant-bound-vs-static.rs | 0 .../coherence-fn-covariant-bound-vs-static.stderr | 0 .../ui/coherence/coherence-fn-implied-bounds.rs | 0 .../ui/coherence/coherence-fn-implied-bounds.stderr | 0 .../ui/coherence/coherence-fn-inputs.rs | 0 .../ui/coherence/coherence-fn-inputs.stderr | 0 .../ui/coherence/coherence-free-vs-bound-region.rs | 0 .../coherence/coherence-free-vs-bound-region.stderr | 0 .../coherence-fundamental-trait-objects.rs | 0 .../coherence-fundamental-trait-objects.stderr | 0 .../ui/coherence/coherence-impl-in-fn.rs | 0 ...oherence-impl-trait-for-marker-trait-negative.rs | 0 ...ence-impl-trait-for-marker-trait-negative.stderr | 0 ...oherence-impl-trait-for-marker-trait-positive.rs | 0 ...ence-impl-trait-for-marker-trait-positive.stderr | 0 .../coherence-impl-trait-for-trait-object-safe.rs | 0 ...oherence-impl-trait-for-trait-object-safe.stderr | 0 .../ui/coherence/coherence-impl-trait-for-trait.rs | 0 .../coherence/coherence-impl-trait-for-trait.stderr | 0 .../ui/coherence/coherence-impls-copy.rs | 0 .../ui/coherence/coherence-impls-copy.stderr | 0 .../ui/coherence/coherence-impls-send.rs | 0 .../ui/coherence/coherence-impls-send.stderr | 0 .../ui/coherence/coherence-impls-sized.rs | 0 .../ui/coherence/coherence-impls-sized.stderr | 0 .../coherence-inherited-assoc-ty-cycle-err.rs | 0 .../coherence-inherited-assoc-ty-cycle-err.stderr | 0 .../coherence-inherited-subtyping.old.stderr | 0 .../coherence-inherited-subtyping.re.stderr | 0 .../ui/coherence/coherence-inherited-subtyping.rs | 0 .../ui/coherence/coherence-iterator-vec-any-elem.rs | 0 .../ui/coherence/coherence-iterator-vec.rs | 0 .../ui/coherence/coherence-lone-type-parameter.rs | 0 .../coherence/coherence-lone-type-parameter.stderr | 0 .../ui/coherence/coherence-multidispatch-tuple.rs | 0 .../coherence/coherence-negative-impls-copy-bad.rs | 0 .../coherence-negative-impls-copy-bad.stderr | 0 .../ui/coherence/coherence-negative-impls-copy.rs | 0 .../coherence-negative-impls-safe-rpass.rs | 0 .../ui/coherence/coherence-negative-impls-safe.rs | 0 .../coherence/coherence-negative-impls-safe.stderr | 0 .../coherence-negative-inherent-where-bounds.rs | 0 .../ui/coherence/coherence-negative-inherent.rs | 0 .../coherence-negative-outlives-lifetimes.rs | 0 ...herence-negative-outlives-lifetimes.stock.stderr | 0 .../coherence-no-direct-lifetime-dispatch.rs | 0 .../coherence-no-direct-lifetime-dispatch.stderr | 0 .../test => tests}/ui/coherence/coherence-orphan.rs | 0 .../ui/coherence/coherence-orphan.stderr | 0 .../coherence/coherence-overlap-all-t-and-tuple.rs | 0 .../coherence-overlap-all-t-and-tuple.stderr | 0 .../coherence/coherence-overlap-double-negative.rs | 0 .../coherence-overlap-downstream-inherent.rs | 0 .../coherence-overlap-downstream-inherent.stderr | 0 .../ui/coherence/coherence-overlap-downstream.rs | 0 .../coherence/coherence-overlap-downstream.stderr | 0 .../coherence-overlap-issue-23516-inherent.rs | 0 .../coherence-overlap-issue-23516-inherent.stderr | 0 .../ui/coherence/coherence-overlap-issue-23516.rs | 0 .../coherence/coherence-overlap-issue-23516.stderr | 0 .../ui/coherence/coherence-overlap-messages.rs | 0 .../ui/coherence/coherence-overlap-messages.stderr | 0 .../coherence-overlap-negate-alias-strict.rs | 0 ...coherence-overlap-negate-not-use-feature-gate.rs | 0 ...rence-overlap-negate-not-use-feature-gate.stderr | 0 .../ui/coherence/coherence-overlap-negate-strict.rs | 0 .../coherence-overlap-negate-use-feature-gate.rs | 0 .../coherence/coherence-overlap-negative-trait.rs | 0 .../coherence/coherence-overlap-negative-trait2.rs | 0 .../coherence/coherence-overlap-super-negative.rs | 0 .../ui/coherence/coherence-overlap-trait-alias.rs | 0 .../coherence/coherence-overlap-trait-alias.stderr | 0 .../coherence-overlap-upstream-inherent.rs | 0 .../coherence-overlap-upstream-inherent.stderr | 0 .../ui/coherence/coherence-overlap-upstream.rs | 0 .../ui/coherence/coherence-overlap-upstream.stderr | 0 .../ui/coherence/coherence-overlap-with-regions.rs | 0 .../ui/coherence/coherence-overlapping-pairs.rs | 0 .../ui/coherence/coherence-overlapping-pairs.stderr | 0 .../coherence/coherence-pair-covered-uncovered-1.rs | 0 .../coherence-pair-covered-uncovered-1.stderr | 0 .../coherence/coherence-pair-covered-uncovered.rs | 0 .../coherence-pair-covered-uncovered.stderr | 0 .../coherence-projection-conflict-orphan.rs | 0 .../coherence-projection-conflict-orphan.stderr | 0 .../coherence-projection-conflict-ty-param.rs | 0 .../coherence-projection-conflict-ty-param.stderr | 0 .../ui/coherence/coherence-projection-conflict.rs | 0 .../coherence/coherence-projection-conflict.stderr | 0 .../ui/coherence/coherence-projection-ok-orphan.rs | 0 .../ui/coherence/coherence-projection-ok.rs | 0 .../ui/coherence/coherence-rfc447-constrained.rs | 0 .../ui/coherence/coherence-subtyping.rs | 0 .../ui/coherence/coherence-subtyping.stderr | 0 .../ui/coherence/coherence-tuple-conflict.rs | 0 .../ui/coherence/coherence-tuple-conflict.stderr | 0 .../coherence/coherence-unsafe-trait-object-impl.rs | 0 .../coherence-unsafe-trait-object-impl.stderr | 0 .../ui/coherence/coherence-vec-local-2.rs | 0 .../ui/coherence/coherence-vec-local-2.stderr | 0 .../ui/coherence/coherence-vec-local.rs | 0 .../ui/coherence/coherence-vec-local.stderr | 0 .../ui/coherence/coherence-wasm-bindgen.rs | 0 .../ui/coherence/coherence-wasm-bindgen.stderr | 0 .../ui/coherence/coherence-where-clause.rs | 0 .../ui/coherence/coherence-with-closure.rs | 0 .../ui/coherence/coherence-with-closure.stderr | 0 .../ui/coherence/coherence-with-generator.rs | 0 .../ui/coherence/coherence-with-generator.stderr | 0 .../ui/coherence/coherence_copy_like.rs | 0 .../coherence_copy_like_err_fundamental_struct.rs | 0 ...oherence_copy_like_err_fundamental_struct_ref.rs | 0 ...erence_copy_like_err_fundamental_struct_tuple.rs | 0 ...ce_copy_like_err_fundamental_struct_tuple.stderr | 0 .../ui/coherence/coherence_copy_like_err_struct.rs | 0 .../coherence/coherence_copy_like_err_struct.stderr | 0 .../ui/coherence/coherence_copy_like_err_tuple.rs | 0 .../coherence/coherence_copy_like_err_tuple.stderr | 0 .../ui/coherence/coherence_inherent.rs | 0 .../ui/coherence/coherence_inherent.stderr | 0 .../ui/coherence/coherence_inherent_cc.rs | 0 .../ui/coherence/coherence_inherent_cc.stderr | 0 {src/test => tests}/ui/coherence/coherence_local.rs | 0 .../ui/coherence/coherence_local_err_struct.rs | 0 .../ui/coherence/coherence_local_err_struct.stderr | 0 .../ui/coherence/coherence_local_err_tuple.rs | 0 .../ui/coherence/coherence_local_err_tuple.stderr | 0 .../ui/coherence/coherence_local_ref.rs | 0 .../ui/coherence/conflicting-impl-with-err.rs | 0 .../ui/coherence/conflicting-impl-with-err.stderr | 0 .../ui/coherence/const-generics-orphan-check-ok.rs | 0 .../ui/coherence/deep-bad-copy-reason.rs | 0 .../ui/coherence/deep-bad-copy-reason.stderr | 0 .../ui/coherence/impl-foreign-for-foreign.rs | 0 .../ui/coherence/impl-foreign-for-foreign.stderr | 0 .../coherence/impl-foreign-for-foreign[foreign].rs | 0 .../impl-foreign-for-foreign[foreign].stderr | 0 .../ui/coherence/impl-foreign-for-foreign[local].rs | 0 .../impl-foreign-for-fundamental[foreign].rs | 0 .../impl-foreign-for-fundamental[foreign].stderr | 0 .../impl-foreign-for-fundamental[local].rs | 0 .../ui/coherence/impl-foreign-for-local.rs | 0 .../impl-foreign-for-locally-defined-fundamental.rs | 0 ...eign-for-locally-defined-fundamental[foreign].rs | 0 .../coherence/impl-foreign[foreign]-for-foreign.rs | 0 .../impl-foreign[foreign]-for-foreign.stderr | 0 .../ui/coherence/impl-foreign[foreign]-for-local.rs | 0 ...mpl-foreign[fundemental[foreign]]-for-foreign.rs | 0 ...foreign[fundemental[foreign]]-for-foreign.stderr | 0 .../impl-foreign[fundemental[local]]-for-foreign.rs | 0 .../ui/coherence/impl[t]-foreign-for-foreign[t].rs | 0 .../coherence/impl[t]-foreign-for-foreign[t].stderr | 0 .../coherence/impl[t]-foreign-for-fundamental[t].rs | 0 .../impl[t]-foreign-for-fundamental[t].stderr | 0 ...impl[t]-foreign[foreign[t]_local]-for-foreign.rs | 0 .../impl[t]-foreign[foreign]-for-fundamental[t].rs | 0 ...pl[t]-foreign[foreign]-for-fundamental[t].stderr | 0 .../ui/coherence/impl[t]-foreign[foreign]-for-t.rs | 0 .../coherence/impl[t]-foreign[foreign]-for-t.stderr | 0 .../impl[t]-foreign[fundamental[t]]-for-foreign.rs | 0 ...pl[t]-foreign[fundamental[t]]-for-foreign.stderr | 0 ...t]-foreign[fundamental[t]]-for-fundamental[t].rs | 0 ...oreign[fundamental[t]]-for-fundamental[t].stderr | 0 .../impl[t]-foreign[fundamental[t]]-for-local.rs | 0 .../impl[t]-foreign[fundamental[t]]-for-t.rs | 0 .../impl[t]-foreign[fundamental[t]]-for-t.stderr | 0 ...[t]-foreign[fundamental[t]_local]-for-foreign.rs | 0 ...foreign[fundamental[t]_local]-for-foreign.stderr | 0 ...t]-foreign[fundemental[local]]-for-foreign[t].rs | 0 .../coherence/impl[t]-foreign[local]-for-foreign.rs | 0 .../impl[t]-foreign[local]-for-foreign[t].rs | 0 ...t]-foreign[local]-for-fundamental[foreign[t]].rs | 0 .../impl[t]-foreign[local]-for-fundamental[t].rs | 0 ...impl[t]-foreign[local]-for-fundamental[t].stderr | 0 .../coherence/impl[t]-foreign[local]-for-local.rs | 0 .../ui/coherence/impl[t]-foreign[local]-for-t.rs | 0 .../coherence/impl[t]-foreign[local]-for-t.stderr | 0 ...[t]-foreign[local_fundamental[t]]-for-foreign.rs | 0 .../ui/coherence/impl[t]-foreign[t]-for-foreign.rs | 0 .../coherence/impl[t]-foreign[t]-for-foreign.stderr | 0 .../coherence/impl[t]-foreign[t]-for-fundamental.rs | 0 .../impl[t]-foreign[t]-for-fundamental.stderr | 0 .../ui/coherence/impl[t]-foreign[t]-for-local.rs | 0 .../ui/coherence/impl[t]-foreign[t]-for-t.rs | 0 .../ui/coherence/impl[t]-foreign[t]-for-t.stderr | 0 .../coherence/inter-crate-ambiguity-causes-notes.rs | 0 .../inter-crate-ambiguity-causes-notes.stderr | 0 {src/test => tests}/ui/coherence/issue-85026.rs | 0 {src/test => tests}/ui/coherence/issue-85026.stderr | 0 {src/test => tests}/ui/coherence/issue-99663-2.rs | 0 {src/test => tests}/ui/coherence/issue-99663.rs | 0 ...nce-coherence-default-generic-associated-type.rs | 0 .../ui/coherence/re-rebalance-coherence.rs | 0 .../strict-coherence-needs-negative-coherence.rs | 0 ...strict-coherence-needs-negative-coherence.stderr | 0 {src/test => tests}/ui/command-line-diagnostics.rs | 0 .../ui/command-line-diagnostics.stderr | 0 {src/test => tests}/ui/command/command-argv0.rs | 0 .../ui/command/command-create-pidfd.rs | 0 .../ui/command/command-current-dir.rs | 0 {src/test => tests}/ui/command/command-exec.rs | 0 {src/test => tests}/ui/command/command-pre-exec.rs | 0 {src/test => tests}/ui/command/command-setgroups.rs | 0 {src/test => tests}/ui/command/command-uid-gid.rs | 0 {src/test => tests}/ui/command/issue-10626.rs | 0 .../ui/commandline-argfile-badutf8.args | 0 .../ui/commandline-argfile-badutf8.rs | 0 .../ui/commandline-argfile-badutf8.stderr | 0 .../ui/commandline-argfile-missing.rs | 0 .../ui/commandline-argfile-missing.stderr | 0 {src/test => tests}/ui/commandline-argfile.args | 0 {src/test => tests}/ui/commandline-argfile.rs | 0 .../ui/compare-method/bad-self-type.rs | 0 .../ui/compare-method/bad-self-type.stderr | 0 .../test => tests}/ui/compare-method/issue-90444.rs | 0 .../ui/compare-method/issue-90444.stderr | 0 .../ui/compare-method/proj-outlives-region.rs | 0 .../ui/compare-method/proj-outlives-region.stderr | 0 .../ui/compare-method/region-extra-2.rs | 0 .../ui/compare-method/region-extra-2.stderr | 0 .../ui/compare-method/region-extra.rs | 0 .../ui/compare-method/region-extra.stderr | 0 .../ui/compare-method/region-unrelated.rs | 0 .../ui/compare-method/region-unrelated.stderr | 0 .../ui/compare-method/reordered-type-param.rs | 0 .../ui/compare-method/reordered-type-param.stderr | 0 .../compare-method/trait-bound-on-type-parameter.rs | 0 .../trait-bound-on-type-parameter.stderr | 0 .../ui/compare-method/traits-misc-mismatch-1.rs | 0 .../ui/compare-method/traits-misc-mismatch-1.stderr | 0 .../ui/compare-method/traits-misc-mismatch-2.rs | 0 .../ui/compare-method/traits-misc-mismatch-2.stderr | 0 {src/test => tests}/ui/compile_error_macro.rs | 0 {src/test => tests}/ui/compile_error_macro.stderr | 0 .../ui/compiletest-self-test/compile-flags-last.rs | 0 .../compiletest-self-test/compile-flags-last.stderr | 0 .../ui/compiletest-self-test/ui-testing-optout.rs | 0 .../compiletest-self-test/ui-testing-optout.stderr | 0 {src/test => tests}/ui/complex.rs | 0 .../auxiliary/namespaced_enums.rs | 0 .../ui/conditional-compilation/cfg-arg-invalid-1.rs | 0 .../cfg-arg-invalid-1.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-2.rs | 0 .../cfg-arg-invalid-2.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-3.rs | 0 .../cfg-arg-invalid-3.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-4.rs | 0 .../cfg-arg-invalid-4.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-5.rs | 0 .../cfg-arg-invalid-5.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-6.rs | 0 .../cfg-arg-invalid-6.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-7.rs | 0 .../cfg-arg-invalid-7.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-8.rs | 0 .../cfg-arg-invalid-8.stderr | 0 .../ui/conditional-compilation/cfg-arg-invalid-9.rs | 0 .../cfg-arg-invalid-9.stderr | 0 .../ui/conditional-compilation/cfg-attr-cfg-2.rs | 0 .../conditional-compilation/cfg-attr-cfg-2.stderr | 0 .../ui/conditional-compilation/cfg-attr-crate-2.rs | 0 .../conditional-compilation/cfg-attr-crate-2.stderr | 0 .../cfg-attr-empty-is-unused.rs | 0 .../cfg-attr-empty-is-unused.stderr | 0 .../cfg-attr-invalid-predicate.rs | 0 .../cfg-attr-invalid-predicate.stderr | 0 .../conditional-compilation/cfg-attr-multi-false.rs | 0 .../cfg-attr-multi-invalid-1.rs | 0 .../cfg-attr-multi-invalid-1.stderr | 0 .../cfg-attr-multi-invalid-2.rs | 0 .../cfg-attr-multi-invalid-2.stderr | 0 .../conditional-compilation/cfg-attr-multi-true.rs | 0 .../cfg-attr-multi-true.stderr | 0 .../ui/conditional-compilation/cfg-attr-parse.rs | 0 .../conditional-compilation/cfg-attr-parse.stderr | 0 .../cfg-attr-syntax-validation.rs | 0 .../cfg-attr-syntax-validation.stderr | 0 .../cfg-attr-unknown-attribute-macro-expansion.rs | 0 ...fg-attr-unknown-attribute-macro-expansion.stderr | 0 .../ui/conditional-compilation/cfg-empty-codemap.rs | 0 .../cfg-empty-codemap.stderr | 0 .../conditional-compilation/cfg-generic-params.rs | 0 .../cfg-generic-params.stderr | 0 .../ui/conditional-compilation/cfg-in-crate-1.rs | 0 .../conditional-compilation/cfg-in-crate-1.stderr | 0 .../ui/conditional-compilation/cfg-non-opt-expr.rs | 0 .../conditional-compilation/cfg-non-opt-expr.stderr | 0 .../conditional-compilation/cfg_accessible-bugs.rs | 0 .../cfg_accessible-bugs.stderr | 0 .../cfg_accessible-input-validation.rs | 0 .../cfg_accessible-input-validation.stderr | 0 .../cfg_accessible-not_sure.edition2015.stderr | 0 .../cfg_accessible-not_sure.edition2021.stderr | 0 .../cfg_accessible-not_sure.rs | 0 .../cfg_accessible-private.rs | 0 .../conditional-compilation/cfg_accessible-stuck.rs | 0 .../cfg_accessible-stuck.stderr | 0 .../cfg_accessible-unstable.rs | 0 .../cfg_accessible-unstable.stderr | 0 .../ui/conditional-compilation/cfg_accessible.rs | 0 .../conditional-compilation/cfg_accessible.stderr | 0 .../ui/conditional-compilation/cfg_attr_path.rs | 0 .../inner-cfg-non-inline-mod.rs | 0 .../ui/conditional-compilation/issue-34028.rs | 0 .../ui/conditional-compilation/module_with_cfg.rs | 0 .../ui/conditional-compilation/test-cfg.rs | 0 .../ui/conditional-compilation/test-cfg.stderr | 0 {src/test => tests}/ui/conflicting-repr-hints.rs | 0 .../test => tests}/ui/conflicting-repr-hints.stderr | 0 .../ui/confuse-field-and-method/issue-18343.rs | 0 .../ui/confuse-field-and-method/issue-18343.stderr | 0 .../ui/confuse-field-and-method/issue-2392.rs | 0 .../ui/confuse-field-and-method/issue-2392.stderr | 0 .../ui/confuse-field-and-method/issue-32128.rs | 0 .../ui/confuse-field-and-method/issue-32128.stderr | 0 .../ui/confuse-field-and-method/issue-33784.rs | 0 .../ui/confuse-field-and-method/issue-33784.stderr | 0 .../ui/confuse-field-and-method/private-field.rs | 0 .../confuse-field-and-method/private-field.stderr | 0 {src/test => tests}/ui/conservative_impl_trait.rs | 0 .../ui/conservative_impl_trait.stderr | 0 .../ui/const-generics/apit-with-const-param.rs | 0 .../ui/const-generics/arg-in-pat-1.rs | 0 .../ui/const-generics/arg-in-pat-2.rs | 0 .../ui/const-generics/arg-in-pat-3.rs | 0 .../ui/const-generics/argument_order.rs | 0 .../ui/const-generics/argument_order.stderr | 0 .../array-impls/alloc-traits-impls-length-32.rs | 0 .../array-impls/alloc-traits-impls-length-33.rs | 0 .../array-impls/alloc-types-impls-length-33.rs | 0 .../array-impls/core-traits-impls-length-32.rs | 0 .../array-impls/core-traits-impls-length-33.rs | 0 .../array-impls/into-iter-impls-length-32.rs | 0 .../array-impls/into-iter-impls-length-33.rs | 0 .../ui/const-generics/array-wrapper-struct-ctor.rs | 0 .../ui/const-generics/assoc_const_eq_diagnostic.rs | 0 .../const-generics/assoc_const_eq_diagnostic.stderr | 0 .../ui/const-generics/associated-type-bound-fail.rs | 0 .../associated-type-bound-fail.stderr | 0 .../ui/const-generics/associated-type-bound.rs | 0 .../const-generics/auxiliary/const_generic_lib.rs | 0 .../ui/const-generics/auxiliary/crayte.rs | 0 .../const-generics/auxiliary/generics_of_parent.rs | 0 .../auxiliary/generics_of_parent_impl_trait.rs | 0 .../auxiliary/legacy-const-generics.rs | 0 .../backcompat/trait-resolution-breakage.rs | 0 .../const-generics/backcompat/unevaluated-consts.rs | 0 .../ui/const-generics/bad-const-generic-exprs.rs | 0 .../const-generics/bad-const-generic-exprs.stderr | 0 .../ui/const-generics/broken-mir-1.rs | 0 .../ui/const-generics/broken-mir-2.rs | 0 .../cannot-infer-type-for-const-param.rs | 0 .../ui/const-generics/coerce_unsized_array.rs | 0 .../ui/const-generics/concrete-const-as-fn-arg.rs | 0 .../ui/const-generics/concrete-const-impl-method.rs | 0 .../const-generics/condition-in-trait-const-arg.rs | 0 .../const-arg-in-const-arg.full.stderr | 0 .../const-arg-in-const-arg.min.stderr | 0 .../ui/const-generics/const-arg-in-const-arg.rs | 0 .../ui/const-generics/const-arg-in-fn.rs | 0 .../const-generics/const-arg-type-arg-misordered.rs | 0 .../const-arg-type-arg-misordered.stderr | 0 .../const-argument-cross-crate-mismatch.rs | 0 .../const-argument-cross-crate-mismatch.stderr | 0 .../ui/const-generics/const-argument-cross-crate.rs | 0 .../const-argument-if-length.full.stderr | 0 .../const-argument-if-length.min.stderr | 0 .../ui/const-generics/const-argument-if-length.rs | 0 .../const-argument-non-static-lifetime.min.stderr | 0 .../const-argument-non-static-lifetime.rs | 0 .../ui/const-generics/const-fn-with-const-param.rs | 0 .../const-generic-default-wont-borrowck.rs | 0 .../const-generic-default-wont-borrowck.stderr | 0 .../ui/const-generics/const-generic-function.rs | 0 .../ui/const-generics/const-generic-function.stderr | 0 .../ui/const-generics/const-generic-type_name.rs | 0 .../const-param-after-const-literal-arg.rs | 0 .../const-param-before-other-params.rs | 0 .../const-param-before-other-params.stderr | 0 .../const-param-elided-lifetime.full.stderr | 0 .../const-param-elided-lifetime.min.stderr | 0 .../const-generics/const-param-elided-lifetime.rs | 0 .../ui/const-generics/const-param-in-async.rs | 0 ...st-param-type-depends-on-const-param.full.stderr | 0 ...nst-param-type-depends-on-const-param.min.stderr | 0 .../const-param-type-depends-on-const-param.rs | 0 ...onst-param-type-depends-on-type-param-ungated.rs | 0 ...-param-type-depends-on-type-param-ungated.stderr | 0 ...nst-param-type-depends-on-type-param.full.stderr | 0 ...onst-param-type-depends-on-type-param.min.stderr | 0 .../const-param-type-depends-on-type-param.rs | 0 .../const-parameter-uppercase-lint.rs | 0 .../const-parameter-uppercase-lint.stderr | 0 .../ui/const-generics/const_trait_fn-issue-88433.rs | 0 {src/test => tests}/ui/const-generics/core-types.rs | 0 .../ui/const-generics/cross_crate_complex.rs | 0 .../defaults/auxiliary/const_defaulty.rs | 0 .../auxiliary/trait_object_lt_defaults_lib.rs | 0 .../complex-generic-default-expr.min.stderr | 0 .../defaults/complex-generic-default-expr.rs | 0 .../const-generics/defaults/complex-unord-param.rs | 0 .../ui/const-generics/defaults/const-default.rs | 0 .../defaults/const-param-as-default-value.rs | 0 .../defaults/const-param-in-ty-defaults.rs | 0 .../const-generics/defaults/default-annotation.rs | 0 .../default-const-param-cannot-reference-self.rs | 0 ...default-const-param-cannot-reference-self.stderr | 0 .../ui/const-generics/defaults/default-on-impl.rs | 0 .../const-generics/defaults/default-on-impl.stderr | 0 .../defaults/default-param-wf-concrete.rs | 0 .../defaults/default-param-wf-concrete.stderr | 0 .../ui/const-generics/defaults/doesnt_infer.rs | 0 .../ui/const-generics/defaults/doesnt_infer.stderr | 0 .../ui/const-generics/defaults/external.rs | 0 .../ui/const-generics/defaults/forward-declared.rs | 0 .../const-generics/defaults/forward-declared.stderr | 0 .../defaults/generic-expr-default-concrete.rs | 0 .../defaults/generic-expr-default-concrete.stderr | 0 .../generic-expr-default-mismatched-types.rs | 0 .../generic-expr-default-mismatched-types.stderr | 0 .../const-generics/defaults/generic-expr-default.rs | 0 .../defaults/generic-expr-default.stderr | 0 .../const-generics/defaults/intermixed-lifetime.rs | 0 .../defaults/intermixed-lifetime.stderr | 0 .../ui/const-generics/defaults/mismatch.rs | 0 .../ui/const-generics/defaults/mismatch.stderr | 0 .../defaults/mismatched_ty_const_in_trait_impl.rs | 0 .../mismatched_ty_const_in_trait_impl.stderr | 0 .../param-order-err-pretty-prints-default.rs | 0 .../param-order-err-pretty-prints-default.stderr | 0 .../const-generics/defaults/pretty-printing-ast.rs | 0 .../defaults/pretty-printing-ast.stdout | 0 .../const-generics/defaults/repr-c-issue-82792.rs | 0 .../ui/const-generics/defaults/rp_impl_trait.rs | 0 .../const-generics/defaults/rp_impl_trait_fail.rs | 0 .../defaults/rp_impl_trait_fail.stderr | 0 .../ui/const-generics/defaults/self-referential.rs | 0 .../const-generics/defaults/self-referential.stderr | 0 .../ui/const-generics/defaults/simple-defaults.rs | 0 .../defaults/trait_object_lt_defaults.rs | 0 .../ui/const-generics/defaults/trait_objects.rs | 0 .../const-generics/defaults/trait_objects_fail.rs | 0 .../defaults/trait_objects_fail.stderr | 0 .../defaults/type-default-const-param-name.rs | 0 .../ui/const-generics/defaults/wfness.rs | 0 .../ui/const-generics/defaults/wfness.stderr | 0 .../ui/const-generics/defaults/wrong-order.rs | 0 .../ui/const-generics/defaults/wrong-order.stderr | 0 .../ui/const-generics/deref-into-array-generic.rs | 0 .../different_generic_args.full.stderr | 0 .../different_generic_args.min.stderr | 0 .../ui/const-generics/different_generic_args.rs | 0 .../const-generics/different_generic_args_array.rs | 0 .../different_generic_args_array.stderr | 0 .../dont-evaluate-array-len-on-err-1.rs | 0 .../dont-evaluate-array-len-on-err-1.stderr | 0 .../ui/const-generics/dyn-supertraits.rs | 0 .../ui/const-generics/early/closing-args-token.rs | 0 .../const-generics/early/closing-args-token.stderr | 0 .../early/const-expression-parameter.rs | 0 .../early/const-expression-parameter.stderr | 0 .../early/const-param-from-outer-fn.rs | 0 .../early/const-param-from-outer-fn.stderr | 0 .../ui/const-generics/early/const-param-hygiene.rs | 0 .../const-generics/early/const-param-shadowing.rs | 0 .../early/const-param-shadowing.stderr | 0 .../const-generics/early/invalid-const-arguments.rs | 0 .../early/invalid-const-arguments.stderr | 0 .../ui/const-generics/early/macro_rules-braces.rs | 0 .../const-generics/early/macro_rules-braces.stderr | 0 .../ui/const-generics/ensure_is_evaluatable.rs | 0 .../ui/const-generics/ensure_is_evaluatable.stderr | 0 .../ui/const-generics/enum-variants.rs | 0 .../ui/const-generics/exhaustive-value.rs | 0 .../ui/const-generics/exhaustive-value.stderr | 0 .../expose-default-substs-param-env.rs | 0 .../float-generic.adt_const_params.stderr | 0 .../ui/const-generics/float-generic.rs | 0 .../ui/const-generics/float-generic.simple.stderr | 0 .../const-generics/fn-const-param-call.full.stderr | 0 .../const-generics/fn-const-param-call.min.stderr | 0 .../ui/const-generics/fn-const-param-call.rs | 0 .../const-generics/fn-const-param-infer.full.stderr | 0 .../const-generics/fn-const-param-infer.min.stderr | 0 .../ui/const-generics/fn-const-param-infer.rs | 0 .../ui/const-generics/fn_with_two_const_inputs.rs | 0 .../const-generics/fn_with_two_const_inputs.stderr | 0 .../const-generics/fn_with_two_same_const_inputs.rs | 0 .../forbid-non-structural_match-types.rs | 0 .../forbid-non-structural_match-types.stderr | 0 .../const-generics/foreign-item-const-parameter.rs | 0 .../foreign-item-const-parameter.stderr | 0 .../ui/const-generics/generic-param-mismatch.rs | 0 .../ui/const-generics/generic-param-mismatch.stderr | 0 .../generic_arg_infer/array-repeat-expr.rs | 0 .../generic_arg_infer/dont-use-defaults.rs | 0 .../generic_arg_infer/in-signature.rs | 0 .../generic_arg_infer/in-signature.stderr | 0 .../generic_arg_infer/infer-arg-test.rs | 0 .../generic_arg_infer/infer-arg-test.stderr | 0 .../generic_arg_infer/infer_arg_and_const_arg.rs | 0 .../const-generics/generic_arg_infer/issue-91614.rs | 0 .../generic_arg_infer/issue-91614.stderr | 0 .../generic_const_exprs/abstract-const-as-cast-1.rs | 0 .../generic_const_exprs/abstract-const-as-cast-2.rs | 0 .../abstract-const-as-cast-2.stderr | 0 .../generic_const_exprs/abstract-const-as-cast-3.rs | 0 .../abstract-const-as-cast-3.stderr | 0 .../generic_const_exprs/abstract-const-as-cast-4.rs | 0 .../abstract-consts-as-cast-5.rs | 0 .../abstract-consts-as-cast-5.stderr | 0 .../array-size-in-generic-struct-param.full.stderr | 0 .../array-size-in-generic-struct-param.min.stderr | 0 .../array-size-in-generic-struct-param.rs | 0 .../const_equate_assoc_consts.rs | 0 .../doesnt_unify_evaluatable.rs | 0 .../doesnt_unify_evaluatable.stderr | 0 .../dropck_unifies_assoc_consts.rs | 0 .../assoc_const_unification/unifies_evaluatable.rs | 0 .../generic_const_exprs/associated-const.rs | 0 .../generic_const_exprs/associated-consts.rs | 0 .../auxiliary/const_evaluatable_lib.rs | 0 .../auxiliary/issue-94287-aux.rs | 0 .../const-generics/generic_const_exprs/closures.rs | 0 .../generic_const_exprs/closures.stderr | 0 .../const_eval_resolve_canonical.rs | 0 .../const_kind_expr/wf_obligation.rs | 0 .../const_kind_expr/wf_obligation.stderr | 0 .../generic_const_exprs/cross_crate.rs | 0 .../generic_const_exprs/cross_crate_predicate.rs | 0 .../cross_crate_predicate.stderr | 0 .../generic_const_exprs/dependence_lint.full.stderr | 0 .../generic_const_exprs/dependence_lint.gce.stderr | 0 .../generic_const_exprs/dependence_lint.rs | 0 .../generic_const_exprs/different-fn.rs | 0 .../generic_const_exprs/different-fn.stderr | 0 .../const-generics/generic_const_exprs/division.rs | 0 .../dont-eagerly-error-in-is-const-evaluatable.rs | 0 .../const-generics/generic_const_exprs/drop_impl.rs | 0 .../generic_const_exprs/elaborate-trait-pred.rs | 0 .../generic_const_exprs/eval-privacy.rs | 0 .../generic_const_exprs/eval-privacy.stderr | 0 .../generic_const_exprs/eval-try-unify.rs | 0 .../generic_const_exprs/eval-try-unify.stderr | 0 .../generic_const_exprs/evaluated-to-ambig.rs | 0 .../feature-gate-generic_const_exprs.rs | 0 .../feature-gate-generic_const_exprs.stderr | 0 .../const-generics/generic_const_exprs/fn_call.rs | 0 .../generic_const_exprs/from-sig-fail.rs | 0 .../generic_const_exprs/from-sig-fail.stderr | 0 .../const-generics/generic_const_exprs/from-sig.rs | 0 .../generic_const_exprs/function-call.rs | 0 .../generic_const_exprs/function-call.stderr | 0 .../generic_const_exprs/impl-bounds.rs | 0 .../generic_const_exprs/infer-too-generic.rs | 0 .../generic_const_exprs/issue-100217.rs | 0 .../generic_const_exprs/issue-100360.rs | 0 .../generic_const_exprs/issue-102074.rs | 0 .../generic_const_exprs/issue-102768.rs | 0 .../generic_const_exprs/issue-102768.stderr | 0 .../generic_const_exprs/issue-105257.rs | 0 .../generic_const_exprs/issue-105257.stderr | 0 .../generic_const_exprs/issue-105608.rs | 0 .../generic_const_exprs/issue-105608.stderr | 0 .../generic_const_exprs/issue-62504.full.stderr | 0 .../generic_const_exprs/issue-62504.min.stderr | 0 .../generic_const_exprs/issue-62504.rs | 0 .../generic_const_exprs/issue-69654.rs | 0 .../generic_const_exprs/issue-69654.stderr | 0 .../generic_const_exprs/issue-72787.min.stderr | 0 .../generic_const_exprs/issue-72787.rs | 0 .../issue-72819-generic-in-const-eval.full.stderr | 0 .../issue-72819-generic-in-const-eval.min.stderr | 0 .../issue-72819-generic-in-const-eval.rs | 0 .../generic_const_exprs/issue-73298.rs | 0 .../generic_const_exprs/issue-73899.rs | 0 .../generic_const_exprs/issue-74634.rs | 0 .../generic_const_exprs/issue-74713.rs | 0 .../generic_const_exprs/issue-74713.stderr | 0 .../generic_const_exprs/issue-76595.rs | 0 .../generic_const_exprs/issue-76595.stderr | 0 ...ssue-79518-default_trait_method_normalization.rs | 0 ...-79518-default_trait_method_normalization.stderr | 0 .../issue-80561-incorrect-param-env.rs | 0 .../generic_const_exprs/issue-80742.rs | 0 .../generic_const_exprs/issue-80742.stderr | 0 .../generic_const_exprs/issue-82268.rs | 0 .../generic_const_exprs/issue-83765.rs | 0 .../generic_const_exprs/issue-83765.stderr | 0 .../generic_const_exprs/issue-83972.rs | 0 .../generic_const_exprs/issue-84408.rs | 0 .../generic_const_exprs/issue-84669.rs | 0 .../generic_const_exprs/issue-85848.rs | 0 .../generic_const_exprs/issue-85848.stderr | 0 .../generic_const_exprs/issue-86710.rs | 0 .../generic_const_exprs/issue-89851.rs | 0 .../generic_const_exprs/issue-90847.rs | 0 .../generic_const_exprs/issue-94287.rs | 0 .../generic_const_exprs/issue-94287.stderr | 0 .../generic_const_exprs/issue-94293.rs | 0 .../generic_const_exprs/issue-97047-ice-1.rs | 0 .../generic_const_exprs/issue-97047-ice-1.stderr | 0 .../generic_const_exprs/issue-97047-ice-2.rs | 0 .../generic_const_exprs/issue-97047-ice-2.stderr | 0 .../generic_const_exprs/issue-99647.rs | 0 .../generic_const_exprs/issue-99705.rs | 0 .../const-generics/generic_const_exprs/less_than.rs | 0 .../generic_const_exprs/let-bindings.rs | 0 .../generic_const_exprs/let-bindings.stderr | 0 .../generic_const_exprs/needs_where_clause.rs | 0 .../generic_const_exprs/needs_where_clause.stderr | 0 .../generic_const_exprs/nested-abstract-consts-1.rs | 0 .../generic_const_exprs/nested-abstract-consts-2.rs | 0 .../nested_uneval_unification-1.rs | 0 .../nested_uneval_unification-2.rs | 0 .../generic_const_exprs/no_dependence.rs | 0 .../generic_const_exprs/no_where_clause.rs | 0 .../generic_const_exprs/no_where_clause.stderr | 0 .../normed_to_param_is_evaluatable.rs | 0 .../generic_const_exprs/object-safety-err-ret.rs | 0 .../object-safety-err-ret.stderr | 0 .../object-safety-err-where-bounds.rs | 0 .../object-safety-err-where-bounds.stderr | 0 .../object-safety-ok-infer-err.rs | 0 .../object-safety-ok-infer-err.stderr | 0 .../generic_const_exprs/object-safety-ok.rs | 0 .../generic_const_exprs/obligation-cause.rs | 0 .../generic_const_exprs/obligation-cause.stderr | 0 .../generic_const_exprs/simple_fail.rs | 0 .../generic_const_exprs/simple_fail.stderr | 0 .../subexprs_are_const_evalutable.rs | 0 .../generic_const_exprs/ty-alias-substitution.rs | 0 .../generic_const_exprs/unify-op-with-fn-call.rs | 0 .../unify-op-with-fn-call.stderr | 0 .../ui/const-generics/generic_const_exprs/unop.rs | 0 .../unused-complex-default-expr.rs | 0 .../generic_const_exprs/unused_expr.rs | 0 .../generic_const_exprs/unused_expr.stderr | 0 {src/test => tests}/ui/const-generics/ice-68875.rs | 0 .../ui/const-generics/ice-68875.stderr | 0 .../ice-const-generic-function-return-ty.rs | 0 .../ice-const-generic-function-return-ty.stderr | 0 .../ui/const-generics/impl-const-generic-struct.rs | 0 .../incorrect-number-of-const-args.rs | 0 .../incorrect-number-of-const-args.stderr | 0 .../const-generics/infer/cannot-infer-const-args.rs | 0 .../infer/cannot-infer-const-args.stderr | 0 .../ui/const-generics/infer/issue-77092.rs | 0 .../ui/const-generics/infer/issue-77092.stderr | 0 .../ui/const-generics/infer/method-chain.rs | 0 .../ui/const-generics/infer/method-chain.stderr | 0 .../ui/const-generics/infer/one-param-uninferred.rs | 0 .../infer/one-param-uninferred.stderr | 0 .../ui/const-generics/infer/uninferred-consts.rs | 0 .../const-generics/infer/uninferred-consts.stderr | 0 .../ui/const-generics/infer_arg_from_pat.rs | 0 .../ui/const-generics/infer_arr_len_from_pat.rs | 0 .../ui/const-generics/inhabited-assoc-ty-ice-1.rs | 0 .../ui/const-generics/inhabited-assoc-ty-ice-2.rs | 0 .../integer-literal-generic-arg-in-where-clause.rs | 0 ...ntrinsics-type_name-as-const-argument.min.stderr | 0 .../intrinsics-type_name-as-const-argument.rs | 0 .../invalid-const-arg-for-type-param.rs | 0 .../invalid-const-arg-for-type-param.stderr | 0 .../ui/const-generics/invalid-constant-in-args.rs | 0 .../const-generics/invalid-constant-in-args.stderr | 0 .../ui/const-generics/invalid-enum.rs | 0 .../ui/const-generics/invalid-enum.stderr | 0 {src/test => tests}/ui/const-generics/invariant.rs | 0 .../ui/const-generics/invariant.stderr | 0 .../ui/const-generics/issue-102124.rs | 0 .../ui/const-generics/issue-105689.rs | 0 .../test => tests}/ui/const-generics/issue-46511.rs | 0 .../ui/const-generics/issue-46511.stderr | 0 .../test => tests}/ui/const-generics/issue-66451.rs | 0 .../ui/const-generics/issue-66451.stderr | 0 .../test => tests}/ui/const-generics/issue-70408.rs | 0 .../test => tests}/ui/const-generics/issue-80471.rs | 0 .../ui/const-generics/issue-80471.stderr | 0 .../test => tests}/ui/const-generics/issue-93647.rs | 0 .../ui/const-generics/issue-93647.stderr | 0 .../test => tests}/ui/const-generics/issue-97007.rs | 0 .../issues/auxiliary/const_generic_issues_lib.rs | 0 .../const-generics/issues/auxiliary/impl-const.rs | 0 .../ui/const-generics/issues/issue-100313.rs | 0 .../ui/const-generics/issues/issue-100313.stderr | 0 .../ui/const-generics/issues/issue-105037.rs | 0 .../const-generics/issues/issue-56445-1.full.stderr | 0 .../const-generics/issues/issue-56445-1.min.stderr | 0 .../ui/const-generics/issues/issue-56445-1.rs | 0 .../ui/const-generics/issues/issue-56445-2.rs | 0 .../ui/const-generics/issues/issue-56445-2.stderr | 0 .../ui/const-generics/issues/issue-56445-3.rs | 0 .../ui/const-generics/issues/issue-56445-3.stderr | 0 .../issues/issue-60818-struct-constructors.rs | 0 .../ui/const-generics/issues/issue-61336-1.rs | 0 .../ui/const-generics/issues/issue-61336-2.rs | 0 .../ui/const-generics/issues/issue-61336-2.stderr | 0 .../ui/const-generics/issues/issue-61336.rs | 0 .../ui/const-generics/issues/issue-61336.stderr | 0 .../ui/const-generics/issues/issue-61422.rs | 0 .../ui/const-generics/issues/issue-61432.rs | 0 .../issue-62187-encountered-polymorphic-const.rs | 0 .../const-generics/issues/issue-62878.full.stderr | 0 .../ui/const-generics/issues/issue-62878.min.stderr | 0 .../ui/const-generics/issues/issue-62878.rs | 0 .../issues/issue-63322-forbid-dyn.full.stderr | 0 .../issues/issue-63322-forbid-dyn.min.stderr | 0 .../const-generics/issues/issue-63322-forbid-dyn.rs | 0 .../ui/const-generics/issues/issue-64519.rs | 0 .../issue-66596-impl-trait-for-str-const-arg.rs | 0 .../ui/const-generics/issues/issue-66906.rs | 0 .../ui/const-generics/issues/issue-67185-1.rs | 0 .../ui/const-generics/issues/issue-67185-2.rs | 0 .../ui/const-generics/issues/issue-67185-2.stderr | 0 .../const-generics/issues/issue-67375.full.stderr | 0 .../ui/const-generics/issues/issue-67375.min.stderr | 0 .../ui/const-generics/issues/issue-67375.rs | 0 .../const-generics/issues/issue-67739.full.stderr | 0 .../ui/const-generics/issues/issue-67739.min.stderr | 0 .../ui/const-generics/issues/issue-67739.rs | 0 .../const-generics/issues/issue-67945-1.full.stderr | 0 .../const-generics/issues/issue-67945-1.min.stderr | 0 .../ui/const-generics/issues/issue-67945-1.rs | 0 .../const-generics/issues/issue-67945-2.full.stderr | 0 .../const-generics/issues/issue-67945-2.min.stderr | 0 .../ui/const-generics/issues/issue-67945-2.rs | 0 .../const-generics/issues/issue-67945-3.full.stderr | 0 .../const-generics/issues/issue-67945-3.min.stderr | 0 .../ui/const-generics/issues/issue-67945-3.rs | 0 .../const-generics/issues/issue-67945-4.full.stderr | 0 .../const-generics/issues/issue-67945-4.min.stderr | 0 .../ui/const-generics/issues/issue-67945-4.rs | 0 .../issues/issue-68104-print-stack-overflow.rs | 0 .../const-generics/issues/issue-68366.full.stderr | 0 .../ui/const-generics/issues/issue-68366.min.stderr | 0 .../ui/const-generics/issues/issue-68366.rs | 0 .../ui/const-generics/issues/issue-68596.rs | 0 .../issues/issue-68615-adt.min.stderr | 0 .../ui/const-generics/issues/issue-68615-adt.rs | 0 .../issues/issue-68615-array.min.stderr | 0 .../ui/const-generics/issues/issue-68615-array.rs | 0 .../const-generics/issues/issue-69654-run-pass.rs | 0 .../ui/const-generics/issues/issue-70125-1.rs | 0 .../ui/const-generics/issues/issue-70125-2.rs | 0 .../ui/const-generics/issues/issue-70167.rs | 0 .../issues/issue-70180-1-stalled_on.rs | 0 .../issues/issue-70180-2-stalled_on.rs | 0 .../ui/const-generics/issues/issue-70225.rs | 0 .../const-generics/issues/issue-70273-assoc-fn.rs | 0 .../const-generics/issues/issue-71169.full.stderr | 0 .../ui/const-generics/issues/issue-71169.min.stderr | 0 .../ui/const-generics/issues/issue-71169.rs | 0 .../ui/const-generics/issues/issue-71202.rs | 0 .../ui/const-generics/issues/issue-71202.stderr | 0 .../const-generics/issues/issue-71381.full.stderr | 0 .../ui/const-generics/issues/issue-71381.min.stderr | 0 .../ui/const-generics/issues/issue-71381.rs | 0 .../const-generics/issues/issue-71382.full.stderr | 0 .../ui/const-generics/issues/issue-71382.min.stderr | 0 .../ui/const-generics/issues/issue-71382.rs | 0 .../ui/const-generics/issues/issue-71547.rs | 0 .../const-generics/issues/issue-71611.full.stderr | 0 .../ui/const-generics/issues/issue-71611.min.stderr | 0 .../ui/const-generics/issues/issue-71611.rs | 0 .../ui/const-generics/issues/issue-71986.rs | 0 .../const-generics/issues/issue-72352.full.stderr | 0 .../ui/const-generics/issues/issue-72352.min.stderr | 0 .../ui/const-generics/issues/issue-72352.rs | 0 .../ui/const-generics/issues/issue-72845.rs | 0 .../ui/const-generics/issues/issue-72845.stderr | 0 .../ui/const-generics/issues/issue-73120.rs | 0 .../ui/const-generics/issues/issue-73260.rs | 0 .../ui/const-generics/issues/issue-73260.stderr | 0 .../ui/const-generics/issues/issue-73491.min.stderr | 0 .../ui/const-generics/issues/issue-73491.rs | 0 ...27-static-reference-array-const-param.min.stderr | 0 ...ssue-73727-static-reference-array-const-param.rs | 0 .../ui/const-generics/issues/issue-74101.min.stderr | 0 .../ui/const-generics/issues/issue-74101.rs | 0 .../ui/const-generics/issues/issue-74255.min.stderr | 0 .../ui/const-generics/issues/issue-74255.rs | 0 .../ui/const-generics/issues/issue-74906.rs | 0 .../ui/const-generics/issues/issue-74950.min.stderr | 0 .../ui/const-generics/issues/issue-74950.rs | 0 .../ui/const-generics/issues/issue-75047.min.stderr | 0 .../ui/const-generics/issues/issue-75047.rs | 0 .../ui/const-generics/issues/issue-75299.rs | 0 .../issues/issue-76701-ty-param-in-const.rs | 0 .../issues/issue-76701-ty-param-in-const.stderr | 0 .../ui/const-generics/issues/issue-77357.rs | 0 .../ui/const-generics/issues/issue-77357.stderr | 0 .../ui/const-generics/issues/issue-79674.rs | 0 .../ui/const-generics/issues/issue-79674.stderr | 0 .../ui/const-generics/issues/issue-80062.rs | 0 .../ui/const-generics/issues/issue-80062.stderr | 0 .../ui/const-generics/issues/issue-80375.rs | 0 .../ui/const-generics/issues/issue-80375.stderr | 0 .../ui/const-generics/issues/issue-82956.rs | 0 .../ui/const-generics/issues/issue-82956.stderr | 0 .../ui/const-generics/issues/issue-83249.rs | 0 .../ui/const-generics/issues/issue-83249.stderr | 0 .../ui/const-generics/issues/issue-83288.rs | 0 .../ui/const-generics/issues/issue-83466.rs | 0 .../ui/const-generics/issues/issue-83466.stderr | 0 .../ui/const-generics/issues/issue-83765.rs | 0 .../ui/const-generics/issues/issue-83765.stderr | 0 .../ui/const-generics/issues/issue-83993.rs | 0 .../ui/const-generics/issues/issue-84659.rs | 0 .../ui/const-generics/issues/issue-84659.stderr | 0 .../ui/const-generics/issues/issue-85031-2.rs | 0 .../ui/const-generics/issues/issue-85031-2.stderr | 0 .../ui/const-generics/issues/issue-86033.rs | 0 .../ui/const-generics/issues/issue-86530.rs | 0 .../ui/const-generics/issues/issue-86530.stderr | 0 .../ui/const-generics/issues/issue-86535-2.rs | 0 .../ui/const-generics/issues/issue-86535.rs | 0 .../ui/const-generics/issues/issue-86820.rs | 0 .../ui/const-generics/issues/issue-86820.stderr | 0 .../ui/const-generics/issues/issue-87076.rs | 0 .../ui/const-generics/issues/issue-87470.rs | 0 .../ui/const-generics/issues/issue-87493.rs | 0 .../ui/const-generics/issues/issue-87493.stderr | 0 .../ui/const-generics/issues/issue-87964.rs | 0 .../ui/const-generics/issues/issue-88119.rs | 0 .../ui/const-generics/issues/issue-88468.rs | 0 .../ui/const-generics/issues/issue-88997.rs | 0 .../ui/const-generics/issues/issue-88997.stderr | 0 .../ui/const-generics/issues/issue-89146.rs | 0 .../ui/const-generics/issues/issue-89304.rs | 0 .../ui/const-generics/issues/issue-89320.rs | 0 .../ui/const-generics/issues/issue-89334.rs | 0 .../ui/const-generics/issues/issue-90318.rs | 0 .../ui/const-generics/issues/issue-90318.stderr | 0 .../ui/const-generics/issues/issue-90364.rs | 0 .../ui/const-generics/issues/issue-90364.stderr | 0 .../ui/const-generics/issues/issue-90455.rs | 0 .../ui/const-generics/issues/issue-90455.stderr | 0 .../ui/const-generics/issues/issue-92186.rs | 0 .../ui/const-generics/issues/issue-96654.rs | 0 .../ui/const-generics/issues/issue-97278.rs | 0 .../ui/const-generics/issues/issue-97278.stderr | 0 .../ui/const-generics/issues/issue-97634.rs | 0 .../ui/const-generics/issues/issue-98629.rs | 0 .../ui/const-generics/issues/issue-98629.stderr | 0 .../ui/const-generics/issues/issue-99641.rs | 0 .../ui/const-generics/issues/issue-99641.stderr | 0 .../ui/const-generics/late-bound-vars/in_closure.rs | 0 .../ui/const-generics/late-bound-vars/simple.rs | 0 .../ui/const-generics/legacy-const-generics-bad.rs | 0 .../const-generics/legacy-const-generics-bad.stderr | 0 .../ui/const-generics/legacy-const-generics.rs | 0 .../min_const_generics/assoc_const.rs | 0 .../min_const_generics/complex-expression.rs | 0 .../min_const_generics/complex-expression.stderr | 0 .../min_const_generics/complex-types.rs | 0 .../min_const_generics/complex-types.stderr | 0 .../const-evaluatable-unchecked.rs | 0 .../const-evaluatable-unchecked.stderr | 0 ...sion-suggest-missing-braces-without-turbofish.rs | 0 ...-suggest-missing-braces-without-turbofish.stderr | 0 .../const-expression-suggest-missing-braces.rs | 0 .../const-expression-suggest-missing-braces.stderr | 0 .../min_const_generics/const_default_first.rs | 0 .../min_const_generics/const_default_first.stderr | 0 .../min_const_generics/const_fn_in_generics.rs | 0 .../min_const_generics/default_function_param.rs | 0 .../default_function_param.stderr | 0 .../min_const_generics/default_trait_param.rs | 0 .../forbid-non-static-lifetimes.rs | 0 .../forbid-non-static-lifetimes.stderr | 0 .../min_const_generics/forbid-self-no-normalize.rs | 0 .../forbid-self-no-normalize.stderr | 0 .../min_const_generics/inferred_const.rs | 0 .../invalid-patterns.32bit.stderr | 0 .../invalid-patterns.64bit.stderr | 0 .../min_const_generics/invalid-patterns.rs | 0 .../const-generics/min_const_generics/macro-fail.rs | 0 .../min_const_generics/macro-fail.stderr | 0 .../ui/const-generics/min_const_generics/macro.rs | 0 .../min_const_generics/self-ty-in-const-1.rs | 0 .../min_const_generics/self-ty-in-const-1.stderr | 0 .../min_const_generics/self-ty-in-const-2.rs | 0 .../min_const_generics/self-ty-in-const-2.stderr | 0 .../min_const_generics/type_and_const_defaults.rs | 0 .../ui/const-generics/nested-type.full.stderr | 0 .../ui/const-generics/nested-type.min.stderr | 0 .../test => tests}/ui/const-generics/nested-type.rs | 0 .../ui/const-generics/occurs-check/bind-param.rs | 0 .../const-generics/occurs-check/unify-fixpoint.rs | 0 .../occurs-check/unify-fixpoint.stderr | 0 .../const-generics/occurs-check/unify-n-nplusone.rs | 0 .../occurs-check/unify-n-nplusone.stderr | 0 .../const-generics/occurs-check/unused-substs-1.rs | 0 .../occurs-check/unused-substs-1.stderr | 0 .../const-generics/occurs-check/unused-substs-2.rs | 0 .../occurs-check/unused-substs-2.stderr | 0 .../const-generics/occurs-check/unused-substs-3.rs | 0 .../occurs-check/unused-substs-3.stderr | 0 .../const-generics/occurs-check/unused-substs-4.rs | 0 .../occurs-check/unused-substs-4.stderr | 0 .../const-generics/occurs-check/unused-substs-5.rs | 0 .../occurs-check/unused-substs-5.stderr | 0 .../outer-lifetime-in-const-generic-default.rs | 0 .../outer-lifetime-in-const-generic-default.stderr | 0 .../ui/const-generics/overlapping_impls.rs | 0 .../params-in-ct-in-ty-param-lazy-norm.full.stderr | 0 .../params-in-ct-in-ty-param-lazy-norm.min.stderr | 0 .../params-in-ct-in-ty-param-lazy-norm.rs | 0 .../const-generics/parent_generics_of_encoding.rs | 0 .../parent_generics_of_encoding_impl_trait.rs | 0 .../parent_generics_of_encoding_impl_trait.stderr | 0 .../parser-error-recovery/issue-89013-no-assoc.rs | 0 .../issue-89013-no-assoc.stderr | 0 .../parser-error-recovery/issue-89013-no-kw.rs | 0 .../parser-error-recovery/issue-89013-no-kw.stderr | 0 .../parser-error-recovery/issue-89013-type.rs | 0 .../parser-error-recovery/issue-89013-type.stderr | 0 .../parser-error-recovery/issue-89013.rs | 0 .../parser-error-recovery/issue-89013.stderr | 0 .../ui/const-generics/projection-as-arg-const.rs | 0 .../const-generics/projection-as-arg-const.stderr | 0 {src/test => tests}/ui/const-generics/promotion.rs | 0 .../raw-ptr-const-param-deref.full.stderr | 0 .../raw-ptr-const-param-deref.min.stderr | 0 .../ui/const-generics/raw-ptr-const-param-deref.rs | 0 .../const-generics/raw-ptr-const-param.full.stderr | 0 .../const-generics/raw-ptr-const-param.min.stderr | 0 .../ui/const-generics/raw-ptr-const-param.rs | 0 .../slice-const-param-mismatch.full.stderr | 0 .../slice-const-param-mismatch.min.stderr | 0 .../ui/const-generics/slice-const-param-mismatch.rs | 0 .../ui/const-generics/slice-const-param.rs | 0 .../ui/const-generics/sneaky-array-repeat-expr.rs | 0 .../const-generics/sneaky-array-repeat-expr.stderr | 0 .../std/const-generics-range.min.stderr | 0 .../ui/const-generics/std/const-generics-range.rs | 0 .../struct-with-invalid-const-param.rs | 0 .../struct-with-invalid-const-param.stderr | 0 .../ui/const-generics/suggest_const_for_array.rs | 0 .../const-generics/suggest_const_for_array.stderr | 0 .../ui/const-generics/trait-const-args.rs | 0 ...ransmute-const-param-static-reference.min.stderr | 0 .../transmute-const-param-static-reference.rs | 0 .../transparent-maybeunit-array-wrapper.rs | 0 .../ui/const-generics/try_unify_ignore_lifetimes.rs | 0 .../ui/const-generics/two_matching_preds.rs | 0 .../ui/const-generics/type-after-const-ok.rs | 0 .../type-dependent/auxiliary/type_dependent_lib.rs | 0 .../type-dependent/const-arg-in-const-arg.rs | 0 .../ui/const-generics/type-dependent/issue-61936.rs | 0 .../ui/const-generics/type-dependent/issue-63695.rs | 0 .../const-generics/type-dependent/issue-67144-1.rs | 0 .../const-generics/type-dependent/issue-67144-2.rs | 0 .../ui/const-generics/type-dependent/issue-69816.rs | 0 .../ui/const-generics/type-dependent/issue-70217.rs | 0 .../ui/const-generics/type-dependent/issue-70507.rs | 0 .../ui/const-generics/type-dependent/issue-70586.rs | 0 .../type-dependent/issue-71348.min.stderr | 0 .../ui/const-generics/type-dependent/issue-71348.rs | 0 .../ui/const-generics/type-dependent/issue-71382.rs | 0 .../type-dependent/issue-71382.stderr | 0 .../ui/const-generics/type-dependent/issue-71805.rs | 0 .../ui/const-generics/type-dependent/issue-73730.rs | 0 .../ui/const-generics/type-dependent/non-local.rs | 0 .../ui/const-generics/type-dependent/qpath.rs | 0 .../ui/const-generics/type-dependent/simple.rs | 0 .../type-dependent/type-mismatch.full.stderr | 0 .../type-dependent/type-mismatch.min.stderr | 0 .../const-generics/type-dependent/type-mismatch.rs | 0 .../ui/const-generics/type_mismatch.rs | 0 .../ui/const-generics/type_mismatch.stderr | 0 .../ui/const-generics/type_not_in_scope.rs | 0 .../ui/const-generics/type_not_in_scope.stderr | 0 .../ui/const-generics/type_of_anon_const.rs | 0 .../types-mismatch-const-args.full.stderr | 0 .../types-mismatch-const-args.min.stderr | 0 .../ui/const-generics/types-mismatch-const-args.rs | 0 .../ui/const-generics/unify_with_nested_expr.rs | 0 .../ui/const-generics/unify_with_nested_expr.stderr | 0 .../uninferred-consts-during-codegen-1.rs | 0 .../uninferred-consts-during-codegen-2.rs | 0 .../test => tests}/ui/const-generics/unknown_adt.rs | 0 .../ui/const-generics/unknown_adt.stderr | 0 .../ui/const-generics/unused-const-param.rs | 0 .../const-generics/unused-type-param-suggestion.rs | 0 .../unused-type-param-suggestion.stderr | 0 .../ui/const-generics/unused_braces.fixed | 0 .../ui/const-generics/unused_braces.full.fixed | 0 .../ui/const-generics/unused_braces.min.fixed | 0 .../ui/const-generics/unused_braces.rs | 0 .../ui/const-generics/unused_braces.stderr | 0 .../ui/const-generics/where-clauses.rs | 0 {src/test => tests}/ui/const-ptr/allowed_slices.rs | 0 .../test => tests}/ui/const-ptr/forbidden_slices.rs | 0 .../ui/const-ptr/forbidden_slices.stderr | 0 .../ui/const-ptr/out_of_bounds_read.rs | 0 .../ui/const-ptr/out_of_bounds_read.stderr | 0 .../ui/const_prop/ice-assert-fail-div-by-zero.rs | 0 .../const_prop/ice-assert-fail-div-by-zero.stderr | 0 {src/test => tests}/ui/const_prop/inline_spans.rs | 0 .../ui/const_prop/inline_spans_lint_attribute.rs | 0 {src/test => tests}/ui/const_prop/issue-102553.rs | 0 {src/test => tests}/ui/constructor-lifetime-args.rs | 0 .../ui/constructor-lifetime-args.stderr | 0 .../ui/consts/array-literal-index-oob.rs | 0 .../ui/consts/array-literal-index-oob.stderr | 0 .../test => tests}/ui/consts/array-to-slice-cast.rs | 0 .../ui/consts/assert-type-intrinsics.rs | 0 .../ui/consts/assert-type-intrinsics.stderr | 0 {src/test => tests}/ui/consts/assoc-const.rs | 0 .../ui/consts/assoc_const_generic_impl.rs | 0 .../ui/consts/assoc_const_generic_impl.stderr | 0 .../ui/consts/associated_const_generic.rs | 0 {src/test => tests}/ui/consts/async-block.rs | 0 .../ui/consts/async-block.with_feature.stderr | 0 .../ui/consts/async-block.without_feature.stderr | 0 .../ui/consts/auxiliary/cci_const_block.rs | 0 .../ui/consts/auxiliary/const_fn_lib.rs | 0 .../ui/consts/auxiliary/external_macro.rs | 0 .../ui/consts/auxiliary/issue-17718-aux.rs | 0 .../ui/consts/auxiliary/issue-63226.rs | 0 .../ui/consts/auxiliary/promotable_const_fn_lib.rs | 0 {src/test => tests}/ui/consts/bswap-const.rs | 0 .../ui/consts/cast-discriminant-zst-enum.rs | 0 .../ui/consts/chained-constants-stackoverflow.rs | 0 .../ui/consts/check_const-feature-gated.rs | 0 .../consts/closure-structural-match-issue-90013.rs | 0 .../ui/consts/const-address-of-interior-mut.rs | 0 .../ui/consts/const-address-of-interior-mut.stderr | 0 .../ui/consts/const-address-of-mut.rs | 0 .../ui/consts/const-address-of-mut.stderr | 0 {src/test => tests}/ui/consts/const-address-of.rs | 0 .../ui/consts/const-adt-align-mismatch.rs | 0 .../ui/consts/const-array-oob-arith.rs | 0 .../ui/consts/const-array-oob-arith.stderr | 0 {src/test => tests}/ui/consts/const-array-oob.rs | 0 .../test => tests}/ui/consts/const-array-oob.stderr | 0 {src/test => tests}/ui/consts/const-as-fn.rs | 0 {src/test => tests}/ui/consts/const-as-fn.stderr | 0 {src/test => tests}/ui/consts/const-autoderef.rs | 0 {src/test => tests}/ui/consts/const-big-enum.rs | 0 {src/test => tests}/ui/consts/const-binops.rs | 0 .../ui/consts/const-bitshift-rhs-inference.rs | 0 .../ui/consts/const-block-const-bound.rs | 0 .../ui/consts/const-block-const-bound.stderr | 0 .../ui/consts/const-block-cross-crate-fn.rs | 0 .../ui/consts/const-block-item-macro-codegen.rs | 0 {src/test => tests}/ui/consts/const-block-item.rs | 0 .../ui/consts/const-block-non-item-statement-3.rs | 0 .../consts/const-block-non-item-statement-rpass.rs | 0 .../ui/consts/const-block-non-item-statement.rs | 0 {src/test => tests}/ui/consts/const-block.rs | 0 .../ui/consts/const-blocks/const-repeat.rs | 0 .../ui/consts/const-blocks/fn-call-in-const.rs | 0 .../ui/consts/const-blocks/fn-call-in-non-const.rs | 0 .../consts/const-blocks/fn-call-in-non-const.stderr | 0 .../ui/consts/const-blocks/migrate-fail.rs | 0 .../ui/consts/const-blocks/migrate-fail.stderr | 0 .../ui/consts/const-blocks/migrate-pass.rs | 0 .../ui/consts/const-blocks/nll-fail.rs | 0 .../ui/consts/const-blocks/nll-fail.stderr | 0 .../ui/consts/const-blocks/nll-pass.rs | 0 .../ui/consts/const-blocks/run-pass.rs | 0 .../ui/consts/const-blocks/trait-error.rs | 0 .../ui/consts/const-blocks/trait-error.stderr | 0 {src/test => tests}/ui/consts/const-bound.rs | 0 .../test => tests}/ui/consts/const-byte-str-cast.rs | 0 {src/test => tests}/ui/consts/const-call.rs | 0 {src/test => tests}/ui/consts/const-call.stderr | 0 .../ui/consts/const-cast-different-types.rs | 0 .../ui/consts/const-cast-different-types.stderr | 0 {src/test => tests}/ui/consts/const-cast-ptr-int.rs | 0 .../ui/consts/const-cast-wrong-type.rs | 0 .../ui/consts/const-cast-wrong-type.stderr | 0 {src/test => tests}/ui/consts/const-cast.rs | 0 {src/test => tests}/ui/consts/const-const.rs | 0 {src/test => tests}/ui/consts/const-contents.rs | 0 {src/test => tests}/ui/consts/const-deref-ptr.rs | 0 .../test => tests}/ui/consts/const-deref-ptr.stderr | 0 {src/test => tests}/ui/consts/const-deref.rs | 0 {src/test => tests}/ui/consts/const-endianess.rs | 0 .../ui/consts/const-enum-byref-self.rs | 0 {src/test => tests}/ui/consts/const-enum-byref.rs | 0 {src/test => tests}/ui/consts/const-enum-cast.rs | 0 {src/test => tests}/ui/consts/const-enum-ptr.rs | 0 {src/test => tests}/ui/consts/const-enum-struct.rs | 0 {src/test => tests}/ui/consts/const-enum-struct2.rs | 0 .../ui/consts/const-enum-structlike.rs | 0 {src/test => tests}/ui/consts/const-enum-tuple.rs | 0 {src/test => tests}/ui/consts/const-enum-tuple2.rs | 0 .../ui/consts/const-enum-tuplestruct.rs | 0 .../ui/consts/const-enum-tuplestruct2.rs | 0 .../ui/consts/const-enum-vec-index.rs | 0 {src/test => tests}/ui/consts/const-enum-vec-ptr.rs | 0 {src/test => tests}/ui/consts/const-enum-vector.rs | 0 {src/test => tests}/ui/consts/const-err-early.rs | 0 .../test => tests}/ui/consts/const-err-early.stderr | 0 {src/test => tests}/ui/consts/const-err-late.rs | 0 {src/test => tests}/ui/consts/const-err-late.stderr | 0 {src/test => tests}/ui/consts/const-err-multi.rs | 0 .../test => tests}/ui/consts/const-err-multi.stderr | 0 {src/test => tests}/ui/consts/const-err-rpass.rs | 0 .../ui/consts/const-err2.noopt.stderr | 0 {src/test => tests}/ui/consts/const-err2.opt.stderr | 0 .../const-err2.opt_with_overflow_checks.stderr | 0 {src/test => tests}/ui/consts/const-err2.rs | 0 .../ui/consts/const-err4.32bit.stderr | 0 .../ui/consts/const-err4.64bit.stderr | 0 {src/test => tests}/ui/consts/const-err4.rs | 0 .../assign-to-static-within-other-static.rs | 0 .../assign-to-static-within-other-static.stderr | 0 .../auxiliary/post_monomorphization_error.rs | 0 .../ui/consts/const-eval/auxiliary/stability.rs | 0 .../const-eval/conditional_array_execution.rs | 0 .../const-eval/conditional_array_execution.stderr | 0 .../const-eval/const-eval-intrinsic-promotion.rs | 0 .../const-eval-intrinsic-promotion.stderr | 0 .../ui/consts/const-eval/const-eval-overflow-2.rs | 0 .../consts/const-eval/const-eval-overflow-2.stderr | 0 .../ui/consts/const-eval/const-eval-overflow-3.rs | 0 .../consts/const-eval/const-eval-overflow-3.stderr | 0 .../ui/consts/const-eval/const-eval-overflow-3b.rs | 0 .../consts/const-eval/const-eval-overflow-3b.stderr | 0 .../ui/consts/const-eval/const-eval-overflow-4.rs | 0 .../consts/const-eval/const-eval-overflow-4.stderr | 0 .../ui/consts/const-eval/const-eval-overflow-4b.rs | 0 .../consts/const-eval/const-eval-overflow-4b.stderr | 0 .../ui/consts/const-eval/const-eval-overflow2.rs | 0 .../consts/const-eval/const-eval-overflow2.stderr | 0 .../ui/consts/const-eval/const-eval-overflow2b.rs | 0 .../consts/const-eval/const-eval-overflow2b.stderr | 0 .../ui/consts/const-eval/const-eval-overflow2c.rs | 0 .../consts/const-eval/const-eval-overflow2c.stderr | 0 .../ui/consts/const-eval/const-eval-query-stack.rs | 0 .../consts/const-eval/const-eval-query-stack.stderr | 0 .../ui/consts/const-eval/const-eval-span.rs | 0 .../ui/consts/const-eval/const-eval-span.stderr | 0 ...nst-pointer-values-in-various-types.64bit.stderr | 0 .../const-pointer-values-in-various-types.rs | 0 .../ui/consts/const-eval/const_fn_ptr.rs | 0 .../ui/consts/const-eval/const_fn_ptr.stderr | 0 .../ui/consts/const-eval/const_fn_ptr_fail.rs | 0 .../ui/consts/const-eval/const_fn_ptr_fail.stderr | 0 .../ui/consts/const-eval/const_fn_ptr_fail2.rs | 0 .../ui/consts/const-eval/const_fn_ptr_fail2.stderr | 0 .../ui/consts/const-eval/const_let.rs | 0 .../ui/consts/const-eval/const_let.stderr | 0 .../ui/consts/const-eval/const_panic.rs | 0 .../ui/consts/const-eval/const_panic.stderr | 0 .../ui/consts/const-eval/const_panic_2021.rs | 0 .../ui/consts/const-eval/const_panic_2021.stderr | 0 .../ui/consts/const-eval/const_panic_libcore_bin.rs | 0 .../const-eval/const_panic_libcore_bin.stderr | 0 .../const-eval/const_panic_stability.e2018.stderr | 0 .../const-eval/const_panic_stability.e2021.stderr | 0 .../ui/consts/const-eval/const_panic_stability.rs | 0 .../consts/const-eval/const_panic_track_caller.rs | 0 .../const-eval/const_panic_track_caller.stderr | 0 .../ui/consts/const-eval/const_prop_errors.rs | 0 .../ui/consts/const-eval/const_raw_ptr_ops.rs | 0 .../ui/consts/const-eval/const_raw_ptr_ops.stderr | 0 .../ui/consts/const-eval/const_raw_ptr_ops2.rs | 0 .../ui/consts/const-eval/const_raw_ptr_ops2.stderr | 0 .../ui/consts/const-eval/const_signed_pat.rs | 0 .../test => tests}/ui/consts/const-eval/dangling.rs | 0 .../ui/consts/const-eval/dangling.stderr | 0 .../const-eval/dont_promote_unstable_const_fn.rs | 0 .../dont_promote_unstable_const_fn.stderr | 0 .../dont_promote_unstable_const_fn_cross_crate.rs | 0 ...ont_promote_unstable_const_fn_cross_crate.stderr | 0 .../ui/consts/const-eval/double_check.rs | 0 .../ui/consts/const-eval/double_check2.rs | 0 .../ui/consts/const-eval/duration_conversion.rs | 0 .../ui/consts/const-eval/enum_discr.rs | 0 .../ui/consts/const-eval/erroneous-const.rs | 0 .../ui/consts/const-eval/erroneous-const.stderr | 0 .../ui/consts/const-eval/erroneous-const2.rs | 0 .../ui/consts/const-eval/erroneous-const2.stderr | 0 .../ui/consts/const-eval/extern_fat_pointer.rs | 0 {src/test => tests}/ui/consts/const-eval/format.rs | 0 .../ui/consts/const-eval/format.stderr | 0 .../ui/consts/const-eval/generic-slice.rs | 0 .../ui/consts/const-eval/generic-slice.stderr | 0 .../const-eval/heap/alloc_intrinsic_errors.rs | 0 .../const-eval/heap/alloc_intrinsic_errors.stderr | 0 .../const-eval/heap/alloc_intrinsic_nontransient.rs | 0 .../heap/alloc_intrinsic_nontransient_fail.rs | 0 .../heap/alloc_intrinsic_nontransient_fail.stderr | 0 .../const-eval/heap/alloc_intrinsic_transient.rs | 0 .../heap/alloc_intrinsic_uninit.32bit.stderr | 0 .../heap/alloc_intrinsic_uninit.64bit.stderr | 0 .../const-eval/heap/alloc_intrinsic_uninit.rs | 0 .../const-eval/heap/alloc_intrinsic_untyped.rs | 0 .../const-eval/heap/alloc_intrinsic_untyped.stderr | 0 .../const-eval/heap/alloc_intrinsic_zero_sized.rs | 0 .../ui/consts/const-eval/heap/dealloc_intrinsic.rs | 0 .../const-eval/heap/dealloc_intrinsic_dangling.rs | 0 .../heap/dealloc_intrinsic_dangling.stderr | 0 .../const-eval/heap/dealloc_intrinsic_duplicate.rs | 0 .../heap/dealloc_intrinsic_duplicate.stderr | 0 .../heap/dealloc_intrinsic_incorrect_layout.rs | 0 .../heap/dealloc_intrinsic_incorrect_layout.stderr | 0 .../const-eval/heap/dealloc_intrinsic_zero_sized.rs | 0 .../ui/consts/const-eval/ice-generic-assoc-const.rs | 0 .../ui/consts/const-eval/ice-packed.rs | 0 .../const-eval/index-out-of-bounds-never-type.rs | 0 .../index-out-of-bounds-never-type.stderr | 0 .../ui/consts/const-eval/index_out_of_bounds.rs | 0 .../ui/consts/const-eval/index_out_of_bounds.stderr | 0 .../const-eval/index_out_of_bounds_propagated.rs | 0 .../index_out_of_bounds_propagated.stderr | 0 .../ui/consts/const-eval/infinite_loop.rs | 0 .../ui/consts/const-eval/infinite_loop.stderr | 0 .../ui/consts/const-eval/issue-100878.rs | 0 .../ui/consts/const-eval/issue-104390.rs | 0 .../ui/consts/const-eval/issue-104390.stderr | 0 .../ui/consts/const-eval/issue-43197.rs | 0 .../ui/consts/const-eval/issue-43197.stderr | 0 .../ui/consts/const-eval/issue-44578.rs | 0 .../ui/consts/const-eval/issue-44578.stderr | 0 .../ui/consts/const-eval/issue-47971.rs | 0 .../ui/consts/const-eval/issue-49296.rs | 0 .../ui/consts/const-eval/issue-49296.stderr | 0 .../ui/consts/const-eval/issue-50706.rs | 0 .../ui/consts/const-eval/issue-50814-2.rs | 0 .../ui/consts/const-eval/issue-50814-2.stderr | 0 .../ui/consts/const-eval/issue-50814.rs | 0 .../ui/consts/const-eval/issue-50814.stderr | 0 .../ui/consts/const-eval/issue-51300.rs | 0 .../ui/consts/const-eval/issue-52475.rs | 0 .../ui/consts/const-eval/issue-52475.stderr | 0 .../ui/consts/const-eval/issue-53157.rs | 0 .../ui/consts/const-eval/issue-53401.rs | 0 .../ui/consts/const-eval/issue-55541.rs | 0 .../ui/consts/const-eval/issue-64908.rs | 0 .../ui/consts/const-eval/issue-64970.rs | 0 .../ui/consts/const-eval/issue-65394.rs | 0 .../ui/consts/const-eval/issue-65394.stderr | 0 .../ui/consts/const-eval/issue-70723.rs | 0 .../ui/consts/const-eval/issue-70723.stderr | 0 .../consts/const-eval/issue-70804-fn-subtyping.rs | 0 .../const-eval/issue-84957-const-str-as-bytes.rs | 0 .../ui/consts/const-eval/issue-85155.rs | 0 .../ui/consts/const-eval/issue-85155.stderr | 0 .../ui/consts/const-eval/issue-85907.rs | 0 .../ui/consts/const-eval/issue-85907.stderr | 0 .../consts/const-eval/issue-91827-extern-types.rs | 0 .../test => tests}/ui/consts/const-eval/livedrop.rs | 0 .../ui/consts/const-eval/livedrop.stderr | 0 .../ui/consts/const-eval/match-test-ptr-null.rs | 0 .../ui/consts/const-eval/match-test-ptr-null.stderr | 0 .../consts/const-eval/mod-static-with-const-fn.rs | 0 .../const-eval/mod-static-with-const-fn.stderr | 0 .../no_lint_for_statically_known_error.rs | 0 {src/test => tests}/ui/consts/const-eval/nrvo.rs | 0 .../ui/consts/const-eval/panic-assoc-never-type.rs | 0 .../consts/const-eval/panic-assoc-never-type.stderr | 0 .../ui/consts/const-eval/panic-never-type.rs | 0 .../ui/consts/const-eval/panic-never-type.stderr | 0 .../ui/consts/const-eval/partial_ptr_overwrite.rs | 0 .../consts/const-eval/partial_ptr_overwrite.stderr | 0 .../ui/consts/const-eval/promote-static.rs | 0 .../const-eval/promote_mutable_zst_mir_borrowck.rs | 0 .../ui/consts/const-eval/promoted_const_fn_fail.rs | 0 .../consts/const-eval/promoted_const_fn_fail.stderr | 0 .../promoted_const_fn_fail_deny_const_err.rs | 0 .../promoted_const_fn_fail_deny_const_err.stderr | 0 .../consts/const-eval/promoted_errors.noopt.stderr | 0 .../ui/consts/const-eval/promoted_errors.opt.stderr | 0 .../promoted_errors.opt_with_overflow_checks.stderr | 0 .../ui/consts/const-eval/promoted_errors.rs | 0 .../ui/consts/const-eval/promoted_raw_ptr_ops.rs | 0 .../consts/const-eval/promoted_raw_ptr_ops.stderr | 0 .../ui/consts/const-eval/raw-bytes.32bit.stderr | 0 .../ui/consts/const-eval/raw-bytes.64bit.stderr | 0 .../ui/consts/const-eval/raw-bytes.rs | 0 .../consts/const-eval/ref_to_int_match.32bit.stderr | 0 .../consts/const-eval/ref_to_int_match.64bit.stderr | 0 .../ui/consts/const-eval/ref_to_int_match.rs | 0 .../ui/consts/const-eval/shift_overflow.rs | 0 .../ui/consts/const-eval/shift_overflow.stderr | 0 .../ui/consts/const-eval/simd/insert_extract.rs | 0 .../ui/consts/const-eval/simple_with_undef.rs | 0 .../ui/consts/const-eval/size-of-t.rs | 0 .../ui/consts/const-eval/size-of-t.stderr | 0 {src/test => tests}/ui/consts/const-eval/strlen.rs | 0 .../consts/const-eval/transmute-const-promotion.rs | 0 .../const-eval/transmute-const-promotion.stderr | 0 .../consts/const-eval/transmute-const.32bit.stderr | 0 .../consts/const-eval/transmute-const.64bit.stderr | 0 .../ui/consts/const-eval/transmute-const.rs | 0 .../ui/consts/const-eval/ub-enum-overwrite.rs | 0 .../ui/consts/const-eval/ub-enum-overwrite.stderr | 0 .../ui/consts/const-eval/ub-enum.32bit.stderr | 0 .../ui/consts/const-eval/ub-enum.64bit.stderr | 0 {src/test => tests}/ui/consts/const-eval/ub-enum.rs | 0 .../const-eval/ub-incorrect-vtable.32bit.stderr | 0 .../const-eval/ub-incorrect-vtable.64bit.stderr | 0 .../ui/consts/const-eval/ub-incorrect-vtable.rs | 0 .../ui/consts/const-eval/ub-int-array.32bit.stderr | 0 .../ui/consts/const-eval/ub-int-array.64bit.stderr | 0 .../ui/consts/const-eval/ub-int-array.rs | 0 .../consts/const-eval/ub-nonnull.chalk.64bit.stderr | 0 .../ui/consts/const-eval/ub-nonnull.rs | 0 .../ui/consts/const-eval/ub-nonnull.stderr | 0 .../ui/consts/const-eval/ub-ref-ptr.rs | 0 .../ui/consts/const-eval/ub-ref-ptr.stderr | 0 .../ui/consts/const-eval/ub-uninhabit.rs | 0 .../ui/consts/const-eval/ub-uninhabit.stderr | 0 .../ui/consts/const-eval/ub-upvars.32bit.stderr | 0 .../ui/consts/const-eval/ub-upvars.64bit.stderr | 0 .../ui/consts/const-eval/ub-upvars.rs | 0 .../const-eval/ub-wide-ptr.chalk.64bit.stderr | 0 .../ui/consts/const-eval/ub-wide-ptr.rs | 0 .../ui/consts/const-eval/ub-wide-ptr.stderr | 0 .../ui/consts/const-eval/union-const-eval-field.rs | 0 .../consts/const-eval/union-const-eval-field.stderr | 0 .../ui/consts/const-eval/union-ice.rs | 0 .../ui/consts/const-eval/union-ice.stderr | 0 .../ui/consts/const-eval/union-ub.32bit.stderr | 0 .../ui/consts/const-eval/union-ub.64bit.stderr | 0 .../test => tests}/ui/consts/const-eval/union-ub.rs | 0 .../ui/consts/const-eval/union_promotion.rs | 0 .../ui/consts/const-eval/union_promotion.stderr | 0 .../ui/consts/const-eval/unused-broken-const.rs | 0 .../ui/consts/const-eval/unused-broken-const.stderr | 0 .../ui/consts/const-eval/unwind-abort.rs | 0 .../ui/consts/const-eval/unwind-abort.stderr | 0 .../ui/consts/const-eval/valid-const.rs | 0 .../validate_uninhabited_zsts.32bit.stderr | 0 .../validate_uninhabited_zsts.64bit.stderr | 0 .../consts/const-eval/validate_uninhabited_zsts.rs | 0 .../const-eval/write-to-uninhabited-enum-variant.rs | 0 .../ui/consts/const-eval/zst_operand_eval.rs | 0 .../ui/consts/const-expr-addr-operator.rs | 0 .../ui/consts/const-expr-in-fixed-length-vec.rs | 0 .../ui/consts/const-expr-in-vec-repeat.rs | 0 .../const-extern-fn-call-extern-fn.rs | 0 .../const-extern-fn-call-extern-fn.stderr | 0 .../const-extern-fn/const-extern-fn-min-const-fn.rs | 0 .../const-extern-fn-min-const-fn.stderr | 0 .../const-extern-fn-requires-unsafe.mir.stderr | 0 .../const-extern-fn-requires-unsafe.rs | 0 .../const-extern-fn-requires-unsafe.thir.stderr | 0 .../ui/consts/const-extern-fn/const-extern-fn.rs | 0 .../const-extern-fn/feature-gate-const_extern_fn.rs | 0 .../feature-gate-const_extern_fn.stderr | 0 ...062-const-extern-fns-dont-need-fn-specifier-2.rs | 0 ...const-extern-fns-dont-need-fn-specifier-2.stderr | 0 ...68062-const-extern-fns-dont-need-fn-specifier.rs | 0 ...2-const-extern-fns-dont-need-fn-specifier.stderr | 0 .../ui/consts/const-extern-function.rs | 0 .../ui/consts/const-external-macro-const-err.rs | 0 .../ui/consts/const-external-macro-const-err.stderr | 0 .../ui/consts/const-fields-and-indexing.rs | 0 .../ui/consts/const-float-bits-conv.rs | 0 .../ui/consts/const-float-bits-reject-conv.rs | 0 .../ui/consts/const-float-bits-reject-conv.stderr | 0 .../ui/consts/const-float-classify.rs | 0 .../test => tests}/ui/consts/const-fn-const-eval.rs | 0 .../ui/consts/const-fn-destructuring-arg.rs | 0 {src/test => tests}/ui/consts/const-fn-error.rs | 0 {src/test => tests}/ui/consts/const-fn-error.stderr | 0 {src/test => tests}/ui/consts/const-fn-in-vec.rs | 0 .../test => tests}/ui/consts/const-fn-in-vec.stderr | 0 {src/test => tests}/ui/consts/const-fn-method.rs | 0 {src/test => tests}/ui/consts/const-fn-mismatch.rs | 0 .../ui/consts/const-fn-mismatch.stderr | 0 {src/test => tests}/ui/consts/const-fn-nested.rs | 0 .../ui/consts/const-fn-not-in-trait.rs | 0 .../ui/consts/const-fn-not-in-trait.stderr | 0 .../ui/consts/const-fn-not-safe-for-const.rs | 0 .../ui/consts/const-fn-not-safe-for-const.stderr | 0 {src/test => tests}/ui/consts/const-fn-ptr.rs | 0 {src/test => tests}/ui/consts/const-fn-ptr.stderr | 0 .../ui/consts/const-fn-stability-calls-3.rs | 0 .../ui/consts/const-fn-stability-calls.rs | 0 .../ui/consts/const-fn-type-name-any.rs | 0 {src/test => tests}/ui/consts/const-fn-type-name.rs | 0 {src/test => tests}/ui/consts/const-fn-val.rs | 0 {src/test => tests}/ui/consts/const-fn-zst-args.rs | 0 {src/test => tests}/ui/consts/const-fn.rs | 0 .../ui/consts/const-for-feature-gate.rs | 0 .../ui/consts/const-for-feature-gate.stderr | 0 {src/test => tests}/ui/consts/const-for.rs | 0 {src/test => tests}/ui/consts/const-for.stderr | 0 .../ui/consts/const-index-feature-gate.rs | 0 .../ui/consts/const-int-arithmetic-overflow.rs | 0 .../ui/consts/const-int-arithmetic.rs | 0 .../ui/consts/const-int-conversion-rpass.rs | 0 .../ui/consts/const-int-conversion.rs | 0 .../ui/consts/const-int-conversion.stderr | 0 .../ui/consts/const-int-overflowing-rpass.rs | 0 .../ui/consts/const-int-overflowing.rs | 0 .../ui/consts/const-int-overflowing.stderr | 0 .../test => tests}/ui/consts/const-int-pow-rpass.rs | 0 .../ui/consts/const-int-rotate-rpass.rs | 0 {src/test => tests}/ui/consts/const-int-rotate.rs | 0 .../ui/consts/const-int-rotate.stderr | 0 .../ui/consts/const-int-saturating-arith.rs | 0 .../ui/consts/const-int-sign-rpass.rs | 0 {src/test => tests}/ui/consts/const-int-sign.rs | 0 {src/test => tests}/ui/consts/const-int-sign.stderr | 0 .../test => tests}/ui/consts/const-int-unchecked.rs | 0 .../ui/consts/const-int-unchecked.stderr | 0 .../ui/consts/const-int-wrapping-rpass.rs | 0 {src/test => tests}/ui/consts/const-int-wrapping.rs | 0 .../ui/consts/const-int-wrapping.stderr | 0 .../ui/consts/const-integer-bool-ops.rs | 0 .../ui/consts/const-integer-bool-ops.stderr | 0 .../test => tests}/ui/consts/const-labeled-break.rs | 0 .../ui/consts/const-len-underflow-separate-spans.rs | 0 .../const-len-underflow-separate-spans.stderr | 0 .../ui/consts/const-len-underflow-subspans.rs | 0 .../ui/consts/const-len-underflow-subspans.stderr | 0 .../ui/consts/const-match-check.eval1.stderr | 0 .../ui/consts/const-match-check.eval2.stderr | 0 .../ui/consts/const-match-check.matchck.stderr | 0 {src/test => tests}/ui/consts/const-match-check.rs | 0 .../ui/consts/const-match-pattern-arm.rs | 0 {src/test => tests}/ui/consts/const-meth-pattern.rs | 0 {src/test => tests}/ui/consts/const-multi-ref.rs | 0 .../test => tests}/ui/consts/const-multi-ref.stderr | 0 .../consts/const-mut-refs/const_mut_address_of.rs | 0 .../ui/consts/const-mut-refs/const_mut_refs.rs | 0 .../const-mut-refs/feature-gate-const_mut_refs.rs | 0 .../feature-gate-const_mut_refs.stderr | 0 .../consts/const-mut-refs/issue-76510.32bit.stderr | 0 .../consts/const-mut-refs/issue-76510.64bit.stderr | 0 .../ui/consts/const-mut-refs/issue-76510.rs | 0 .../ui/consts/const-mut-refs/mut_ref_in_final.rs | 0 .../consts/const-mut-refs/mut_ref_in_final.stderr | 0 .../mut_ref_in_final_dynamic_check.rs | 0 .../mut_ref_in_final_dynamic_check.stderr | 0 .../ui/consts/const-needs_drop-monomorphic.rs | 0 .../ui/consts/const-needs_drop-monomorphic.stderr | 0 {src/test => tests}/ui/consts/const-needs_drop.rs | 0 {src/test => tests}/ui/consts/const-negation.rs | 0 {src/test => tests}/ui/consts/const-negative.rs | 0 {src/test => tests}/ui/consts/const-nullary-enum.rs | 0 .../ui/consts/const-nullary-univariant-enum.rs | 0 .../ui/consts/const-pattern-irrefutable.rs | 0 .../ui/consts/const-pattern-irrefutable.stderr | 0 .../ui/consts/const-pattern-not-const-evaluable.rs | 0 .../ui/consts/const-pattern-variant.rs | 0 .../ui/consts/const-points-to-static.32bit.stderr | 0 .../ui/consts/const-points-to-static.64bit.stderr | 0 .../ui/consts/const-points-to-static.rs | 0 {src/test => tests}/ui/consts/const-prop-ice.rs | 0 {src/test => tests}/ui/consts/const-prop-ice.stderr | 0 {src/test => tests}/ui/consts/const-prop-ice2.rs | 0 .../test => tests}/ui/consts/const-prop-ice2.stderr | 0 {src/test => tests}/ui/consts/const-prop-ice3.rs | 0 .../ui/consts/const-prop-overflowing-casts.rs | 0 .../ui/consts/const-prop-read-static-in-const.rs | 0 .../consts/const-prop-read-static-in-const.stderr | 0 .../ui/consts/const-ptr-nonnull-rpass.rs | 0 {src/test => tests}/ui/consts/const-ptr-nonnull.rs | 0 .../ui/consts/const-ptr-nonnull.stderr | 0 .../ui/consts/const-ptr-unique-rpass.rs | 0 {src/test => tests}/ui/consts/const-ptr-unique.rs | 0 .../ui/consts/const-ptr-unique.stderr | 0 {src/test => tests}/ui/consts/const-rec-and-tup.rs | 0 .../ui/consts/const-region-ptrs-noncopy.rs | 0 {src/test => tests}/ui/consts/const-region-ptrs.rs | 0 .../ui/consts/const-repeated-values.rs | 0 .../ui/consts/const-size_of-align_of.rs | 0 .../test => tests}/ui/consts/const-size_of-cycle.rs | 0 .../ui/consts/const-size_of-cycle.stderr | 0 .../const-size_of_val-align_of_val-extern-type.rs | 0 ...onst-size_of_val-align_of_val-extern-type.stderr | 0 .../ui/consts/const-size_of_val-align_of_val.rs | 0 {src/test => tests}/ui/consts/const-slice-oob.rs | 0 .../test => tests}/ui/consts/const-slice-oob.stderr | 0 .../ui/consts/const-struct-offsets.rs | 0 {src/test => tests}/ui/consts/const-struct.rs | 0 .../ui/consts/const-suggest-feature.rs | 0 .../ui/consts/const-suggest-feature.stderr | 0 .../ui/consts/const-trait-to-trait.rs | 0 .../ui/consts/const-try-feature-gate.rs | 0 .../ui/consts/const-try-feature-gate.stderr | 0 {src/test => tests}/ui/consts/const-try.rs | 0 .../ui/consts/const-tup-index-span.rs | 0 .../ui/consts/const-tup-index-span.stderr | 0 {src/test => tests}/ui/consts/const-tuple-struct.rs | 0 .../test => tests}/ui/consts/const-type-mismatch.rs | 0 .../ui/consts/const-type-mismatch.stderr | 0 .../ui/consts/const-typeid-of-rpass.rs | 0 {src/test => tests}/ui/consts/const-unit-struct.rs | 0 {src/test => tests}/ui/consts/const-unsafe-fn.rs | 0 {src/test => tests}/ui/consts/const-unsized.rs | 0 {src/test => tests}/ui/consts/const-unsized.stderr | 0 {src/test => tests}/ui/consts/const-unwrap.rs | 0 {src/test => tests}/ui/consts/const-unwrap.stderr | 0 .../ui/consts/const-validation-fail-55455.rs | 0 .../test => tests}/ui/consts/const-variant-count.rs | 0 {src/test => tests}/ui/consts/const-vec-of-fns.rs | 0 {src/test => tests}/ui/consts/const-vec-syntax.rs | 0 .../ui/consts/const-vecs-and-slices.rs | 0 {src/test => tests}/ui/consts/const.rs | 0 .../const_constructor/const-construct-call.rs | 0 .../const_constructor/const_constructor_qpath.rs | 0 {src/test => tests}/ui/consts/const_discriminant.rs | 0 .../const_fn_floating_point_arithmetic.gated.stderr | 0 .../ui/consts/const_fn_floating_point_arithmetic.rs | 0 .../const_fn_floating_point_arithmetic.stock.stderr | 0 .../ui/consts/const_fn_return_nested_fn_ptr.rs | 0 {src/test => tests}/ui/consts/const_fn_unsize.rs | 0 {src/test => tests}/ui/consts/const_forget.rs | 0 .../ui/consts/const_in_pattern/accept_structural.rs | 0 .../ui/consts/const_in_pattern/auxiliary/consts.rs | 0 .../ui/consts/const_in_pattern/cross-crate-fail.rs | 0 .../consts/const_in_pattern/cross-crate-fail.stderr | 0 .../ui/consts/const_in_pattern/cross-crate-pass.rs | 0 .../const_in_pattern/custom-eq-branch-pass.rs | 0 .../const_in_pattern/custom-eq-branch-warn.rs | 0 .../const_in_pattern/custom-eq-branch-warn.stderr | 0 .../ui/consts/const_in_pattern/incomplete-slice.rs | 0 .../consts/const_in_pattern/incomplete-slice.stderr | 0 .../ui/consts/const_in_pattern/issue-44333.rs | 0 .../ui/consts/const_in_pattern/issue-44333.stderr | 0 .../ui/consts/const_in_pattern/issue-53708.rs | 0 .../ui/consts/const_in_pattern/issue-62614.rs | 0 .../ui/consts/const_in_pattern/issue-65466.rs | 0 .../ui/consts/const_in_pattern/issue-73431.rs | 0 .../ui/consts/const_in_pattern/issue-73431.stderr | 0 .../ui/consts/const_in_pattern/issue-78057.rs | 0 .../ui/consts/const_in_pattern/issue-78057.stderr | 0 .../ui/consts/const_in_pattern/no-eq-branch-fail.rs | 0 .../const_in_pattern/no-eq-branch-fail.stderr | 0 .../const_in_pattern/reject_non_partial_eq.rs | 0 .../const_in_pattern/reject_non_partial_eq.stderr | 0 .../const_in_pattern/reject_non_structural.rs | 0 .../const_in_pattern/reject_non_structural.stderr | 0 .../ui/consts/const_in_pattern/warn_corner_cases.rs | 0 .../const_in_pattern/warn_corner_cases.stderr | 0 {src/test => tests}/ui/consts/const_let_assign.rs | 0 {src/test => tests}/ui/consts/const_let_assign2.rs | 0 {src/test => tests}/ui/consts/const_let_assign3.rs | 0 .../ui/consts/const_let_assign3.stderr | 0 {src/test => tests}/ui/consts/const_let_eq.rs | 0 {src/test => tests}/ui/consts/const_let_eq_float.rs | 0 .../ui/consts/const_let_irrefutable.rs | 0 {src/test => tests}/ui/consts/const_let_promote.rs | 0 .../test => tests}/ui/consts/const_let_refutable.rs | 0 .../ui/consts/const_let_refutable.stderr | 0 .../const_limit/const_eval_limit_not_reached.rs | 0 .../consts/const_limit/const_eval_limit_overflow.rs | 0 .../const_limit/const_eval_limit_overflow.stderr | 0 .../consts/const_limit/const_eval_limit_reached.rs | 0 .../const_limit/const_eval_limit_reached.stderr | 0 .../const_limit/feature-gate-const_eval_limit.rs | 0 .../feature-gate-const_eval_limit.stderr | 0 .../ui/consts/const_prop_slice_pat_ice.rs | 0 .../test => tests}/ui/consts/const_short_circuit.rs | 0 .../ui/consts/const_unsafe_unreachable.rs | 0 .../ui/consts/const_unsafe_unreachable_ub.rs | 0 .../ui/consts/const_unsafe_unreachable_ub.stderr | 0 .../consts/constifconst-call-in-const-position.rs | 0 .../constifconst-call-in-const-position.stderr | 0 {src/test => tests}/ui/consts/consts-in-patterns.rs | 0 .../test => tests}/ui/consts/control-flow/assert.rs | 0 .../ui/consts/control-flow/assert.stderr | 0 .../test => tests}/ui/consts/control-flow/basics.rs | 0 .../ui/consts/control-flow/drop-fail.precise.stderr | 0 .../ui/consts/control-flow/drop-fail.rs | 0 .../ui/consts/control-flow/drop-fail.stock.stderr | 0 .../ui/consts/control-flow/drop-pass.rs | 0 .../ui/consts/control-flow/drop-precise.rs | 0 .../control-flow/exhaustive-c-like-enum-match.rs | 0 .../control-flow/feature-gate-const-if-match.rs | 0 .../ui/consts/control-flow/interior-mutability.rs | 0 .../consts/control-flow/interior-mutability.stderr | 0 .../ui/consts/control-flow/issue-46843.rs | 0 .../ui/consts/control-flow/issue-46843.stderr | 0 .../ui/consts/control-flow/issue-50577.rs | 0 .../ui/consts/control-flow/issue-50577.stderr | 0 {src/test => tests}/ui/consts/control-flow/loop.rs | 0 .../ui/consts/control-flow/loop.stderr | 0 .../ui/consts/control-flow/short-circuit-let.rs | 0 .../ui/consts/control-flow/short-circuit.rs | 0 .../consts/control-flow/single_variant_match_ice.rs | 0 {src/test => tests}/ui/consts/control-flow/try.rs | 0 .../ui/consts/control-flow/try.stderr | 0 {src/test => tests}/ui/consts/copy-intrinsic.rs | 0 {src/test => tests}/ui/consts/copy-intrinsic.stderr | 0 .../ui/consts/dangling-alloc-id-ice.rs | 0 .../ui/consts/dangling-alloc-id-ice.stderr | 0 {src/test => tests}/ui/consts/dangling_raw_ptr.rs | 0 .../ui/consts/dangling_raw_ptr.stderr | 0 {src/test => tests}/ui/consts/deref_in_pattern.rs | 0 {src/test => tests}/ui/consts/drop_box.rs | 0 {src/test => tests}/ui/consts/drop_box.stderr | 0 {src/test => tests}/ui/consts/drop_none.rs | 0 {src/test => tests}/ui/consts/drop_zst.rs | 0 {src/test => tests}/ui/consts/drop_zst.stderr | 0 .../test => tests}/ui/consts/enum-discr-type-err.rs | 0 .../ui/consts/enum-discr-type-err.stderr | 0 {src/test => tests}/ui/consts/eval-enum.rs | 0 {src/test => tests}/ui/consts/eval-enum.stderr | 0 .../ui/consts/extra-const-ub/detect-extra-ub.rs | 0 .../extra-const-ub/detect-extra-ub.with_flag.stderr | 0 .../ui/consts/extra-const-ub/issue-100771.rs | 0 .../ui/consts/extra-const-ub/issue-101034.rs | 0 {src/test => tests}/ui/consts/fn_trait_refs.rs | 0 {src/test => tests}/ui/consts/huge-values.rs | 0 {src/test => tests}/ui/consts/ice-48279.rs | 0 .../ui/consts/ice-zst-static-access.rs | 0 {src/test => tests}/ui/consts/inline_asm.rs | 0 {src/test => tests}/ui/consts/inline_asm.stderr | 0 .../ui/consts/int_ptr_for_zst_slices.rs | 0 .../ui/consts/intrinsic_without_const_stab.rs | 0 .../ui/consts/intrinsic_without_const_stab.stderr | 0 .../ui/consts/intrinsic_without_const_stab_fail.rs | 0 .../consts/intrinsic_without_const_stab_fail.stderr | 0 .../ui/consts/invalid-const-in-body.rs | 0 .../ui/consts/invalid-const-in-body.stderr | 0 .../ui/consts/invalid-inline-const-in-match-arm.rs | 0 .../consts/invalid-inline-const-in-match-arm.stderr | 0 .../ui/consts/invalid-union.32bit.stderr | 0 .../ui/consts/invalid-union.64bit.stderr | 0 {src/test => tests}/ui/consts/invalid-union.rs | 0 {src/test => tests}/ui/consts/invalid_promotion.rs | 0 {src/test => tests}/ui/consts/issue-102117.rs | 0 {src/test => tests}/ui/consts/issue-102117.stderr | 0 {src/test => tests}/ui/consts/issue-103790.rs | 0 {src/test => tests}/ui/consts/issue-103790.stderr | 0 {src/test => tests}/ui/consts/issue-104155.rs | 0 {src/test => tests}/ui/consts/issue-104396.rs | 0 {src/test => tests}/ui/consts/issue-104396.stderr | 0 {src/test => tests}/ui/consts/issue-104609.rs | 0 {src/test => tests}/ui/consts/issue-104609.stderr | 0 {src/test => tests}/ui/consts/issue-104768.rs | 0 {src/test => tests}/ui/consts/issue-104768.stderr | 0 {src/test => tests}/ui/consts/issue-13837.rs | 0 {src/test => tests}/ui/consts/issue-13902.rs | 0 {src/test => tests}/ui/consts/issue-17074.rs | 0 {src/test => tests}/ui/consts/issue-17458.rs | 0 {src/test => tests}/ui/consts/issue-17458.stderr | 0 .../ui/consts/issue-17718-borrow-interior.rs | 0 .../ui/consts/issue-17718-const-bad-values.rs | 0 .../ui/consts/issue-17718-const-bad-values.stderr | 0 .../ui/consts/issue-17718-const-borrow.rs | 0 .../ui/consts/issue-17718-const-borrow.stderr | 0 .../ui/consts/issue-17718-constants-not-static.rs | 0 .../consts/issue-17718-constants-not-static.stderr | 0 .../ui/consts/issue-17718-references.rs | 0 .../ui/consts/issue-17718-references.stderr | 0 {src/test => tests}/ui/consts/issue-17718.rs | 0 {src/test => tests}/ui/consts/issue-17756.rs | 0 {src/test => tests}/ui/consts/issue-18294.rs | 0 {src/test => tests}/ui/consts/issue-18294.stderr | 0 {src/test => tests}/ui/consts/issue-19244.rs | 0 {src/test => tests}/ui/consts/issue-21562.rs | 0 {src/test => tests}/ui/consts/issue-21721.rs | 0 {src/test => tests}/ui/consts/issue-23833.rs | 0 .../ui/consts/issue-23968-const-not-overflow.rs | 0 {src/test => tests}/ui/consts/issue-25826.rs | 0 {src/test => tests}/ui/consts/issue-25826.stderr | 0 {src/test => tests}/ui/consts/issue-27890.rs | 0 {src/test => tests}/ui/consts/issue-28113.rs | 0 {src/test => tests}/ui/consts/issue-28113.stderr | 0 {src/test => tests}/ui/consts/issue-29914-2.rs | 0 {src/test => tests}/ui/consts/issue-29914-3.rs | 0 {src/test => tests}/ui/consts/issue-29914.rs | 0 {src/test => tests}/ui/consts/issue-29927-1.rs | 0 {src/test => tests}/ui/consts/issue-29927.rs | 0 {src/test => tests}/ui/consts/issue-32829-2.rs | 0 {src/test => tests}/ui/consts/issue-32829-2.stderr | 0 {src/test => tests}/ui/consts/issue-32829.rs | 0 {src/test => tests}/ui/consts/issue-32829.stderr | 0 {src/test => tests}/ui/consts/issue-33537.rs | 0 {src/test => tests}/ui/consts/issue-34784.rs | 0 {src/test => tests}/ui/consts/issue-3521.fixed | 0 {src/test => tests}/ui/consts/issue-3521.rs | 0 {src/test => tests}/ui/consts/issue-3521.stderr | 0 {src/test => tests}/ui/consts/issue-36163.rs | 0 {src/test => tests}/ui/consts/issue-36163.stderr | 0 {src/test => tests}/ui/consts/issue-37222.rs | 0 {src/test => tests}/ui/consts/issue-37550-1.rs | 0 {src/test => tests}/ui/consts/issue-37550.rs | 0 {src/test => tests}/ui/consts/issue-37991.rs | 0 .../ui/consts/issue-39161-bogus-error.rs | 0 {src/test => tests}/ui/consts/issue-39974.rs | 0 {src/test => tests}/ui/consts/issue-39974.stderr | 0 {src/test => tests}/ui/consts/issue-43105.rs | 0 {src/test => tests}/ui/consts/issue-43105.stderr | 0 {src/test => tests}/ui/consts/issue-44415.rs | 0 {src/test => tests}/ui/consts/issue-44415.stderr | 0 {src/test => tests}/ui/consts/issue-46553.rs | 0 {src/test => tests}/ui/consts/issue-47789.rs | 0 {src/test => tests}/ui/consts/issue-50439.rs | 0 {src/test => tests}/ui/consts/issue-50439.stderr | 0 .../consts/issue-52023-array-size-pointer-cast.rs | 0 .../issue-52023-array-size-pointer-cast.stderr | 0 {src/test => tests}/ui/consts/issue-52060.rs | 0 {src/test => tests}/ui/consts/issue-52060.stderr | 0 {src/test => tests}/ui/consts/issue-54224.rs | 0 {src/test => tests}/ui/consts/issue-54224.stderr | 0 {src/test => tests}/ui/consts/issue-54348.rs | 0 {src/test => tests}/ui/consts/issue-54348.stderr | 0 {src/test => tests}/ui/consts/issue-54387.rs | 0 {src/test => tests}/ui/consts/issue-54954.rs | 0 {src/test => tests}/ui/consts/issue-54954.stderr | 0 {src/test => tests}/ui/consts/issue-56164.rs | 0 {src/test => tests}/ui/consts/issue-56164.stderr | 0 .../ui/consts/issue-58435-ice-with-assoc-const.rs | 0 {src/test => tests}/ui/consts/issue-62045.rs | 0 {src/test => tests}/ui/consts/issue-63226.rs | 0 .../ui/consts/issue-63952.32bit.stderr | 0 .../ui/consts/issue-63952.64bit.stderr | 0 {src/test => tests}/ui/consts/issue-63952.rs | 0 {src/test => tests}/ui/consts/issue-64059.rs | 0 {src/test => tests}/ui/consts/issue-64506.rs | 0 {src/test => tests}/ui/consts/issue-64662.rs | 0 {src/test => tests}/ui/consts/issue-64662.stderr | 0 {src/test => tests}/ui/consts/issue-65348.rs | 0 {src/test => tests}/ui/consts/issue-66342.rs | 0 {src/test => tests}/ui/consts/issue-66345.rs | 0 {src/test => tests}/ui/consts/issue-66397.rs | 0 .../ui/consts/issue-66693-panic-in-array-len.rs | 0 .../ui/consts/issue-66693-panic-in-array-len.stderr | 0 {src/test => tests}/ui/consts/issue-66693.rs | 0 {src/test => tests}/ui/consts/issue-66693.stderr | 0 {src/test => tests}/ui/consts/issue-66787.rs | 0 {src/test => tests}/ui/consts/issue-67529.rs | 0 {src/test => tests}/ui/consts/issue-67640.rs | 0 {src/test => tests}/ui/consts/issue-67641.rs | 0 .../ui/consts/issue-67696-const-prop-ice.rs | 0 {src/test => tests}/ui/consts/issue-67862.rs | 0 .../ui/consts/issue-68264-overflow.rs | 0 .../ui/consts/issue-68542-closure-in-array-len.rs | 0 .../consts/issue-68542-closure-in-array-len.stderr | 0 {src/test => tests}/ui/consts/issue-68684.rs | 0 .../issue-69191-ice-on-uninhabited-enum-field.rs | 0 .../consts/issue-69310-array-size-lit-wrong-ty.rs | 0 .../issue-69310-array-size-lit-wrong-ty.stderr | 0 {src/test => tests}/ui/consts/issue-69312.rs | 0 {src/test => tests}/ui/consts/issue-69488.rs | 0 {src/test => tests}/ui/consts/issue-69532.rs | 0 {src/test => tests}/ui/consts/issue-6991.rs | 0 .../ui/consts/issue-70773-mir-typeck-lt-norm.rs | 0 .../ui/consts/issue-70942-trait-vs-impl-mismatch.rs | 0 .../issue-70942-trait-vs-impl-mismatch.stderr | 0 .../ui/consts/issue-73976-monomorphic.rs | 0 .../ui/consts/issue-73976-polymorphic.rs | 0 .../ui/consts/issue-73976-polymorphic.stderr | 0 {src/test => tests}/ui/consts/issue-76064.rs | 0 {src/test => tests}/ui/consts/issue-76064.stderr | 0 .../ui/consts/issue-77062-large-zst-array.rs | 0 {src/test => tests}/ui/consts/issue-78655.rs | 0 {src/test => tests}/ui/consts/issue-78655.stderr | 0 .../ui/consts/issue-79137-monomorphic.rs | 0 .../ui/consts/issue-79137-toogeneric.rs | 0 .../ui/consts/issue-79137-toogeneric.stderr | 0 .../ui/consts/issue-79152-const-array-index.rs | 0 .../ui/consts/issue-79690.64bit.stderr | 0 {src/test => tests}/ui/consts/issue-79690.rs | 0 {src/test => tests}/ui/consts/issue-83182.rs | 0 {src/test => tests}/ui/consts/issue-83182.stderr | 0 {src/test => tests}/ui/consts/issue-87046.rs | 0 {src/test => tests}/ui/consts/issue-87046.stderr | 0 {src/test => tests}/ui/consts/issue-88071.rs | 0 {src/test => tests}/ui/consts/issue-88649.rs | 0 {src/test => tests}/ui/consts/issue-89088.rs | 0 {src/test => tests}/ui/consts/issue-90762.rs | 0 {src/test => tests}/ui/consts/issue-90870.fixed | 0 {src/test => tests}/ui/consts/issue-90870.rs | 0 {src/test => tests}/ui/consts/issue-90870.stderr | 0 {src/test => tests}/ui/consts/issue-90878-2.rs | 0 {src/test => tests}/ui/consts/issue-90878-2.stderr | 0 {src/test => tests}/ui/consts/issue-90878-3.rs | 0 {src/test => tests}/ui/consts/issue-90878-3.stderr | 0 {src/test => tests}/ui/consts/issue-90878.rs | 0 {src/test => tests}/ui/consts/issue-90878.stderr | 0 {src/test => tests}/ui/consts/issue-91434.rs | 0 {src/test => tests}/ui/consts/issue-91434.stderr | 0 {src/test => tests}/ui/consts/issue-91560.fixed | 0 {src/test => tests}/ui/consts/issue-91560.rs | 0 {src/test => tests}/ui/consts/issue-91560.stderr | 0 {src/test => tests}/ui/consts/issue-94371.rs | 0 {src/test => tests}/ui/consts/issue-94675.rs | 0 {src/test => tests}/ui/consts/issue-94675.stderr | 0 {src/test => tests}/ui/consts/issue-96169.rs | 0 {src/test => tests}/ui/consts/issue-broken-mir.rs | 0 {src/test => tests}/ui/consts/issue-miri-1910.rs | 0 .../test => tests}/ui/consts/issue-miri-1910.stderr | 0 {src/test => tests}/ui/consts/large_const_alloc.rs | 0 .../ui/consts/large_const_alloc.stderr | 0 {src/test => tests}/ui/consts/locals-in-const-fn.rs | 0 .../ui/consts/match-const-fn-structs.rs | 0 {src/test => tests}/ui/consts/match_ice.rs | 0 {src/test => tests}/ui/consts/match_ice.stderr | 0 .../ui/consts/min_const_fn/address_of.rs | 0 .../ui/consts/min_const_fn/address_of.stderr | 0 .../ui/consts/min_const_fn/address_of_const.rs | 0 .../min_const_fn/allow_const_fn_ptr_run_pass.rs | 0 .../allow_raw_ptr_dereference_const_fn.rs | 0 .../ui/consts/min_const_fn/bad_const_fn_body_ice.rs | 0 .../min_const_fn/bad_const_fn_body_ice.stderr | 0 .../ui/consts/min_const_fn/cast_fn.rs | 0 .../ui/consts/min_const_fn/cmp_fn_pointers.rs | 0 .../ui/consts/min_const_fn/cmp_fn_pointers.stderr | 0 .../ui/consts/min_const_fn/min_const_fn.rs | 0 .../ui/consts/min_const_fn/min_const_fn.stderr | 0 .../ui/consts/min_const_fn/min_const_fn_dyn.rs | 0 .../ui/consts/min_const_fn/min_const_fn_libstd.rs | 0 .../min_const_fn/min_const_fn_libstd_stability.rs | 0 .../min_const_fn_libstd_stability.stderr | 0 .../consts/min_const_fn/min_const_fn_unsafe_bad.rs | 0 .../min_const_fn/min_const_fn_unsafe_bad.stderr | 0 .../consts/min_const_fn/min_const_fn_unsafe_ok.rs | 0 .../min_const_unsafe_fn_libstd_stability.rs | 0 .../min_const_unsafe_fn_libstd_stability.stderr | 0 .../min_const_unsafe_fn_libstd_stability2.rs | 0 .../min_const_unsafe_fn_libstd_stability2.stderr | 0 .../ui/consts/min_const_fn/mutable_borrow.rs | 0 .../ui/consts/min_const_fn/mutable_borrow.stderr | 0 .../ui/consts/min_const_fn/promotion.rs | 0 .../ui/consts/min_const_fn/promotion.stderr | 0 {src/test => tests}/ui/consts/mir_check_nonconst.rs | 0 .../ui/consts/mir_check_nonconst.stderr | 0 .../ui/consts/miri_unleashed/abi-mismatch.rs | 0 .../ui/consts/miri_unleashed/abi-mismatch.stderr | 0 .../ui/consts/miri_unleashed/assoc_const.rs | 0 .../ui/consts/miri_unleashed/assoc_const.stderr | 0 .../ui/consts/miri_unleashed/assoc_const_2.rs | 0 .../ui/consts/miri_unleashed/assoc_const_2.stderr | 0 .../miri_unleashed/auxiliary/static_cross_crate.rs | 0 {src/test => tests}/ui/consts/miri_unleashed/box.rs | 0 .../ui/consts/miri_unleashed/box.stderr | 0 .../const_refers_to_static.32bit.stderr | 0 .../const_refers_to_static.64bit.stderr | 0 .../consts/miri_unleashed/const_refers_to_static.rs | 0 .../const_refers_to_static_cross_crate.32bit.stderr | 0 .../const_refers_to_static_cross_crate.64bit.stderr | 0 .../const_refers_to_static_cross_crate.rs | 0 .../test => tests}/ui/consts/miri_unleashed/drop.rs | 0 .../ui/consts/miri_unleashed/drop.stderr | 0 .../feature-gate-unleash_the_miri_inside_of_you.rs | 0 ...ature-gate-unleash_the_miri_inside_of_you.stderr | 0 .../ui/consts/miri_unleashed/inline_asm.rs | 0 .../ui/consts/miri_unleashed/inline_asm.stderr | 0 .../ui/consts/miri_unleashed/mutable_references.rs | 0 .../consts/miri_unleashed/mutable_references.stderr | 0 .../mutable_references_err.32bit.stderr | 0 .../mutable_references_err.64bit.stderr | 0 .../consts/miri_unleashed/mutable_references_err.rs | 0 .../ui/consts/miri_unleashed/mutating_global.rs | 0 .../ui/consts/miri_unleashed/mutating_global.stderr | 0 .../ui/consts/miri_unleashed/non_const_fn.rs | 0 .../ui/consts/miri_unleashed/non_const_fn.stderr | 0 .../ui/consts/miri_unleashed/ptr_arith.rs | 0 .../ui/consts/miri_unleashed/ptr_arith.stderr | 0 .../ui/consts/miri_unleashed/raw_mutable_const.rs | 0 .../consts/miri_unleashed/raw_mutable_const.stderr | 0 .../ui/consts/miri_unleashed/slice_eq.rs | 0 {src/test => tests}/ui/consts/miri_unleashed/tls.rs | 0 .../ui/consts/miri_unleashed/tls.stderr | 0 .../ui/consts/missing_span_in_backtrace.rs | 0 .../ui/consts/missing_span_in_backtrace.stderr | 0 {src/test => tests}/ui/consts/mozjs-error.rs | 0 .../ui/consts/nested_erroneous_ctfe.rs | 0 .../ui/consts/nested_erroneous_ctfe.stderr | 0 .../ui/consts/non-const-value-in-const.rs | 0 .../ui/consts/non-const-value-in-const.stderr | 0 {src/test => tests}/ui/consts/non-scalar-cast.rs | 0 {src/test => tests}/ui/consts/offset.rs | 0 {src/test => tests}/ui/consts/offset_from.rs | 0 {src/test => tests}/ui/consts/offset_from_ub.rs | 0 {src/test => tests}/ui/consts/offset_from_ub.stderr | 0 {src/test => tests}/ui/consts/offset_ub.rs | 0 {src/test => tests}/ui/consts/offset_ub.stderr | 0 {src/test => tests}/ui/consts/packed_pattern.rs | 0 {src/test => tests}/ui/consts/packed_pattern.stderr | 0 {src/test => tests}/ui/consts/packed_pattern2.rs | 0 .../test => tests}/ui/consts/packed_pattern2.stderr | 0 {src/test => tests}/ui/consts/partial_qualif.rs | 0 {src/test => tests}/ui/consts/partial_qualif.stderr | 0 .../ui/consts/precise-drop-with-coverage.rs | 0 .../ui/consts/precise-drop-with-promoted.rs | 0 {src/test => tests}/ui/consts/promote-not.rs | 0 {src/test => tests}/ui/consts/promote-not.stderr | 0 .../ui/consts/promote_borrowed_field.rs | 0 {src/test => tests}/ui/consts/promote_const_let.rs | 0 .../ui/consts/promote_const_let.stderr | 0 .../ui/consts/promote_evaluation_unused_result.rs | 0 {src/test => tests}/ui/consts/promote_fn_calls.rs | 0 .../ui/consts/promote_fn_calls_std.rs | 0 .../test => tests}/ui/consts/promoted-const-drop.rs | 0 .../ui/consts/promoted-const-drop.stderr | 0 {src/test => tests}/ui/consts/promoted-storage.rs | 0 .../ui/consts/promoted-validation-55454.rs | 0 .../test => tests}/ui/consts/promoted_const_call.rs | 0 .../ui/consts/promoted_const_call.stderr | 0 .../ui/consts/promoted_const_call2.rs | 0 .../ui/consts/promoted_const_call2.stderr | 0 .../ui/consts/promoted_const_call3.rs | 0 .../ui/consts/promoted_const_call3.stderr | 0 .../ui/consts/promoted_const_call4.rs | 0 .../ui/consts/promoted_const_call5.rs | 0 .../ui/consts/promoted_const_call5.stderr | 0 .../test => tests}/ui/consts/promoted_regression.rs | 0 .../ui/consts/promotion-mutable-ref.rs | 0 {src/test => tests}/ui/consts/promotion.rs | 0 {src/test => tests}/ui/consts/ptr_comparisons.rs | 0 .../test => tests}/ui/consts/ptr_comparisons.stderr | 0 {src/test => tests}/ui/consts/ptr_is_null.rs | 0 .../ui/consts/qualif-indirect-mutation-fail.rs | 0 .../ui/consts/qualif-indirect-mutation-fail.stderr | 0 .../ui/consts/qualif-indirect-mutation-pass.rs | 0 {src/test => tests}/ui/consts/qualif-union.rs | 0 {src/test => tests}/ui/consts/qualif-union.stderr | 0 {src/test => tests}/ui/consts/qualif_overwrite.rs | 0 .../ui/consts/qualif_overwrite.stderr | 0 {src/test => tests}/ui/consts/qualif_overwrite_2.rs | 0 .../ui/consts/qualif_overwrite_2.stderr | 0 {src/test => tests}/ui/consts/raw-ptr-const.rs | 0 {src/test => tests}/ui/consts/raw-ptr-const.stderr | 0 .../ui/consts/raw_pointer_promoted.rs | 0 .../ui/consts/recursive-zst-static.default.stderr | 0 .../ui/consts/recursive-zst-static.rs | 0 .../ui/consts/recursive-zst-static.unleash.stderr | 0 {src/test => tests}/ui/consts/recursive.rs | 0 {src/test => tests}/ui/consts/recursive.stderr | 0 {src/test => tests}/ui/consts/references.rs | 0 .../ui/consts/refs_check_const_eq-issue-88384.rs | 0 .../consts/refs_check_const_eq-issue-88384.stderr | 0 .../consts/refs_check_const_value_eq-issue-88876.rs | 0 {src/test => tests}/ui/consts/repeat_match.rs | 0 {src/test => tests}/ui/consts/return-in-const-fn.rs | 0 .../consts/rustc-const-stability-require-const.rs | 0 .../rustc-const-stability-require-const.stderr | 0 .../ui/consts/rustc-impl-const-stability.rs | 0 .../ui/consts/rvalue-static-promotion.rs | 0 {src/test => tests}/ui/consts/self_normalization.rs | 0 .../test => tests}/ui/consts/self_normalization2.rs | 0 {src/test => tests}/ui/consts/signed_enum_discr.rs | 0 .../consts/stable-precise-live-drops-in-libcore.rs | 0 .../stable-precise-live-drops-in-libcore.stderr | 0 {src/test => tests}/ui/consts/static-cycle-error.rs | 0 .../ui/consts/static-raw-pointer-interning.rs | 0 .../ui/consts/static-raw-pointer-interning2.rs | 0 .../ui/consts/static_mut_containing_mut_ref.rs | 0 .../static_mut_containing_mut_ref2.mut_refs.stderr | 0 .../ui/consts/static_mut_containing_mut_ref2.rs | 0 .../static_mut_containing_mut_ref2.stock.stderr | 0 .../ui/consts/static_mut_containing_mut_ref3.rs | 0 .../ui/consts/static_mut_containing_mut_ref3.stderr | 0 .../test => tests}/ui/consts/std/alloc.32bit.stderr | 0 .../test => tests}/ui/consts/std/alloc.64bit.stderr | 0 {src/test => tests}/ui/consts/std/alloc.rs | 0 {src/test => tests}/ui/consts/std/cell.rs | 0 {src/test => tests}/ui/consts/std/cell.stderr | 0 {src/test => tests}/ui/consts/std/iter.rs | 0 {src/test => tests}/ui/consts/std/slice.rs | 0 .../ui/consts/too_generic_eval_ice.rs | 0 .../ui/consts/too_generic_eval_ice.stderr | 0 .../ui/consts/trait_specialization.rs | 0 .../ui/consts/trait_specialization.stderr | 0 {src/test => tests}/ui/consts/transmute-const.rs | 0 .../consts/transmute-size-mismatch-before-typeck.rs | 0 .../transmute-size-mismatch-before-typeck.stderr | 0 {src/test => tests}/ui/consts/try-operator.rs | 0 .../ui/consts/tuple-struct-constructors.rs | 0 .../ui/consts/underscore_const_names.rs | 0 .../ui/consts/uninhabited-const-issue-61744.rs | 0 .../ui/consts/uninhabited-const-issue-61744.stderr | 0 {src/test => tests}/ui/consts/union_constant.rs | 0 .../ui/consts/unnormalized-param-env.rs | 0 .../ui/consts/unstable-const-fn-in-libcore.rs | 0 .../ui/consts/unstable-const-fn-in-libcore.stderr | 0 .../unstable-precise-live-drops-in-libcore.rs | 0 {src/test => tests}/ui/consts/unwind-abort.rs | 0 .../ui/consts/validate_never_arrays.rs | 0 .../ui/consts/validate_never_arrays.stderr | 0 .../ui/consts/write-to-static-mut-in-static.rs | 0 .../ui/consts/write-to-static-mut-in-static.stderr | 0 .../ui/consts/write_to_mut_ref_dest.rs | 0 .../ui/consts/write_to_mut_ref_dest.stock.stderr | 0 .../ui/consts/write_to_static_via_mut_ref.rs | 0 .../ui/consts/write_to_static_via_mut_ref.stderr | 0 {src/test => tests}/ui/consts/zst_no_llvm_alloc.rs | 0 {src/test => tests}/ui/copy-a-resource.rs | 0 {src/test => tests}/ui/copy-a-resource.stderr | 0 {src/test => tests}/ui/crate-leading-sep.rs | 0 .../ui/crate-loading/auxiliary/crateresolve1-1.rs | 0 .../ui/crate-loading/auxiliary/crateresolve1-2.rs | 0 .../ui/crate-loading/auxiliary/crateresolve1-3.rs | 0 .../ui/crate-loading/auxiliary/crateresolve2-1.rs | 0 .../ui/crate-loading/auxiliary/crateresolve2-2.rs | 0 .../ui/crate-loading/auxiliary/crateresolve2-3.rs | 0 .../ui/crate-loading/auxiliary/libfoo.rlib | 0 .../ui/crate-loading/auxiliary/proc-macro.rs | 0 .../ui/crate-loading/crateresolve1.rs | 0 .../ui/crate-loading/crateresolve1.stderr | 0 .../ui/crate-loading/crateresolve2.rs | 0 .../ui/crate-loading/crateresolve2.stderr | 0 .../ui/crate-loading/cross-compiled-proc-macro.rs | 0 .../test => tests}/ui/crate-loading/invalid-rlib.rs | 0 .../ui/crate-loading/invalid-rlib.stderr | 0 {src/test => tests}/ui/crate-loading/missing-std.rs | 0 .../ui/crate-loading/missing-std.stderr | 0 .../ui/crate-method-reexport-grrrrrrr.rs | 0 {src/test => tests}/ui/crate-name-attr-used.rs | 0 {src/test => tests}/ui/crate-name-mismatch.rs | 0 {src/test => tests}/ui/crate-name-mismatch.stderr | 0 .../ui/cross-crate/auxiliary/cci_borrow_lib.rs | 0 .../ui/cross-crate/auxiliary/cci_capture_clause.rs | 0 .../ui/cross-crate/auxiliary/cci_const.rs | 0 .../ui/cross-crate/auxiliary/cci_impl_lib.rs | 0 .../ui/cross-crate/auxiliary/cci_iter_lib.rs | 0 .../ui/cross-crate/auxiliary/cci_nested_lib.rs | 0 .../ui/cross-crate/auxiliary/cci_no_inline_lib.rs | 0 .../auxiliary/moves_based_on_type_lib.rs | 0 .../ui/cross-crate/auxiliary/pub_static_array.rs | 0 .../auxiliary/reexported_static_methods.rs | 0 .../ui/cross-crate/auxiliary/static_init_aux.rs | 0 .../auxiliary/xcrate-trait-lifetime-param.rs | 0 .../auxiliary/xcrate_address_insignificant.rs | 0 .../auxiliary/xcrate_associated_type_defaults.rs | 0 .../auxiliary/xcrate_generic_fn_nested_return.rs | 0 .../auxiliary/xcrate_static_addresses.rs | 0 {src/test => tests}/ui/cross-crate/cci_borrow.rs | 0 .../ui/cross-crate/cci_capture_clause.rs | 0 {src/test => tests}/ui/cross-crate/cci_impl_exe.rs | 0 {src/test => tests}/ui/cross-crate/cci_iter_exe.rs | 0 .../test => tests}/ui/cross-crate/cci_nested_exe.rs | 0 .../ui/cross-crate/cci_no_inline_exe.rs | 0 .../ui/cross-crate/const-cross-crate-const.rs | 0 .../ui/cross-crate/const-cross-crate-extern.rs | 0 .../ui/cross-crate/cross-crate-const-pat.rs | 0 .../cross-crate/issue-64872/auxiliary/a_def_obj.rs | 0 .../issue-64872/auxiliary/b_reexport_obj.rs | 0 .../auxiliary/c_another_vtable_for_obj.rs | 0 .../auxiliary/d_chain_of_rlibs_and_dylibs.rs | 0 .../ui/cross-crate/issue-64872/issue-64872.rs | 0 .../cross-crate/moves-based-on-type-cross-crate.rs | 0 .../reexported-static-methods-cross-crate.rs | 0 .../ui/cross-crate/static-array-across-crate.rs | 0 {src/test => tests}/ui/cross-crate/static-init.rs | 0 .../ui/cross-crate/xcrate-address-insignificant.rs | 0 .../cross-crate/xcrate-associated-type-defaults.rs | 0 .../ui/cross-crate/xcrate-static-addresses.rs | 0 .../ui/cross-crate/xcrate-trait-lifetime-param.rs | 0 .../cross-crate/xcrate_generic_fn_nested_return.rs | 0 {src/test => tests}/ui/cross/cross-borrow-trait.rs | 0 .../ui/cross/cross-borrow-trait.stderr | 0 .../auxiliary/extern_macro_crate.rs | 0 .../ui/cross/cross-crate-macro-backtrace/main.rs | 0 .../cross/cross-crate-macro-backtrace/main.stderr | 0 .../ui/cross/cross-file-errors/main.rs | 0 .../ui/cross/cross-file-errors/main.stderr | 0 .../ui/cross/cross-file-errors/underscore.rs | 0 {src/test => tests}/ui/cross/cross-fn-cache-hole.rs | 0 .../ui/cross/cross-fn-cache-hole.stderr | 0 .../ui/custom-attribute-multisegment.rs | 0 .../ui/custom-attribute-multisegment.stderr | 0 .../ui/custom-test-frameworks-simple.rs | 0 {src/test => tests}/ui/custom_attribute.rs | 0 {src/test => tests}/ui/custom_attribute.stderr | 0 .../auxiliary/dynamic_runner.rs | 0 .../auxiliary/example_runner.rs | 0 .../ui/custom_test_frameworks/dynamic.rs | 0 .../ui/custom_test_frameworks/full.rs | 0 .../ui/custom_test_frameworks/mismatch.rs | 0 .../ui/custom_test_frameworks/mismatch.stderr | 0 .../cycle-trait/cycle-trait-default-type-trait.rs | 0 .../cycle-trait-default-type-trait.stderr | 0 .../ui/cycle-trait/cycle-trait-supertrait-direct.rs | 0 .../cycle-trait-supertrait-direct.stderr | 0 .../cycle-trait/cycle-trait-supertrait-indirect.rs | 0 .../cycle-trait-supertrait-indirect.stderr | 0 .../debuginfo/debuginfo-box-with-large-allocator.rs | 0 .../debuginfo-emit-llvm-ir-and-split-debuginfo.rs | 0 .../debuginfo-type-name-layout-ice-94961-1.rs | 0 .../debuginfo-type-name-layout-ice-94961-1.stderr | 0 .../debuginfo-type-name-layout-ice-94961-2.rs | 0 .../debuginfo-type-name-layout-ice-94961-2.stderr | 0 ...ebuginfo_with_uninhabitable_field_and_unsized.rs | 0 .../ui/debuginfo/issue-105386-debuginfo-ub.rs | 0 .../ui/debuginfo/late-bound-projection.rs | 0 .../ui/deduplicate-diagnostics.deduplicate.stderr | 0 .../ui/deduplicate-diagnostics.duplicate.stderr | 0 {src/test => tests}/ui/deduplicate-diagnostics.rs | 0 {src/test => tests}/ui/deep.rs | 0 {src/test => tests}/ui/default-method-parsing.rs | 0 {src/test => tests}/ui/default-method-simple.rs | 0 {src/test => tests}/ui/defaults-well-formedness.rs | 0 .../auxiliary/field-method-macro.rs | 0 .../auxiliary/nested-fn-macro.rs | 0 .../auxiliary/private-use-macro.rs | 0 .../ui/definition-reachable/field-method.rs | 0 .../ui/definition-reachable/nested-fn.rs | 0 .../ui/definition-reachable/private-non-types.rs | 0 .../ui/definition-reachable/private-types.rs | 0 .../ui/definition-reachable/private-use.rs | 0 .../ui/dep-graph/dep-graph-assoc-type-codegen.rs | 0 .../dep-graph/dep-graph-assoc-type-codegen.stderr | 0 .../ui/dep-graph/dep-graph-caller-callee.rs | 0 .../ui/dep-graph/dep-graph-caller-callee.stderr | 0 .../ui/dep-graph/dep-graph-check-attr.rs | 0 .../ui/dep-graph/dep-graph-check-attr.stderr | 0 .../ui/dep-graph/dep-graph-struct-signature.rs | 0 .../ui/dep-graph/dep-graph-struct-signature.stderr | 0 .../dep-graph-trait-impl-two-traits-same-method.rs | 0 ...p-graph-trait-impl-two-traits-same-method.stderr | 0 .../ui/dep-graph/dep-graph-trait-impl-two-traits.rs | 0 .../dep-graph-trait-impl-two-traits.stderr | 0 .../ui/dep-graph/dep-graph-trait-impl.rs | 0 .../ui/dep-graph/dep-graph-trait-impl.stderr | 0 .../ui/dep-graph/dep-graph-type-alias.rs | 0 .../ui/dep-graph/dep-graph-type-alias.stderr | 0 .../ui/dep-graph/dep-graph-variance-alias.rs | 0 .../ui/dep-graph/dep-graph-variance-alias.stderr | 0 .../ui/deprecation-in-force-unstable.rs | 0 .../ui/deprecation/atomic_initializers.fixed | 0 .../ui/deprecation/atomic_initializers.rs | 0 .../ui/deprecation/atomic_initializers.stderr | 0 .../ui/deprecation/auxiliary/deprecation-lint.rs | 0 .../ui/deprecation/deprecated-macro_escape-inner.rs | 0 .../deprecated-macro_escape-inner.stderr | 0 .../ui/deprecation/deprecated-macro_escape.rs | 0 .../ui/deprecation/deprecated-macro_escape.stderr | 0 .../ui/deprecation/deprecated_no_stack_check.rs | 0 .../ui/deprecation/deprecated_no_stack_check.stderr | 0 .../ui/deprecation/deprecation-in-future.rs | 0 .../ui/deprecation/deprecation-in-future.stderr | 0 .../ui/deprecation/deprecation-lint-2.rs | 0 .../ui/deprecation/deprecation-lint-2.stderr | 0 .../ui/deprecation/deprecation-lint-3.rs | 0 .../ui/deprecation/deprecation-lint-3.stderr | 0 .../ui/deprecation/deprecation-lint-nested.rs | 0 .../ui/deprecation/deprecation-lint-nested.stderr | 0 .../ui/deprecation/deprecation-lint.rs | 0 .../ui/deprecation/deprecation-lint.stderr | 0 .../ui/deprecation/deprecation-sanity.rs | 0 .../ui/deprecation/deprecation-sanity.stderr | 0 .../ui/deprecation/derive_on_deprecated.rs | 0 .../deprecation/derive_on_deprecated_forbidden.rs | 0 .../feature-gate-deprecated_suggestion.rs | 0 .../feature-gate-deprecated_suggestion.stderr | 0 .../ui/deprecation/invalid-literal.rs | 0 .../ui/deprecation/invalid-literal.stderr | 0 .../issue-66340-deprecated-attr-non-meta-grammar.rs | 0 ...ue-66340-deprecated-attr-non-meta-grammar.stderr | 0 ...issue-84637-deprecated-associated-function.fixed | 0 .../issue-84637-deprecated-associated-function.rs | 0 ...ssue-84637-deprecated-associated-function.stderr | 0 .../ui/deprecation/staged-deprecation-in-future.rs | 0 .../deprecation/staged-deprecation-in-future.stderr | 0 {src/test => tests}/ui/deprecation/suggestion.fixed | 0 {src/test => tests}/ui/deprecation/suggestion.rs | 0 .../test => tests}/ui/deprecation/suggestion.stderr | 0 .../ui/deprecation/try-macro-suggestion.rs | 0 .../ui/deprecation/try-macro-suggestion.stderr | 0 {src/test => tests}/ui/deref-non-pointer.rs | 0 {src/test => tests}/ui/deref-non-pointer.stderr | 0 {src/test => tests}/ui/deref-patterns/basic.rs | 0 .../ui/deref-patterns/basic.run.stdout | 0 .../ui/deref-patterns/default-infer.rs | 0 {src/test => tests}/ui/deref-patterns/gate.rs | 0 {src/test => tests}/ui/deref-patterns/gate.stderr | 0 {src/test => tests}/ui/deref-patterns/refs.rs | 0 {src/test => tests}/ui/deref-rc.rs | 0 {src/test => tests}/ui/deref.rs | 0 .../ui/derive-uninhabited-enum-38885.rs | 0 .../ui/derive-uninhabited-enum-38885.stderr | 0 .../test => tests}/ui/derived-errors/issue-30580.rs | 0 .../ui/derived-errors/issue-30580.stderr | 0 .../ui/derived-errors/issue-31997-1.rs | 0 .../ui/derived-errors/issue-31997-1.stderr | 0 .../test => tests}/ui/derived-errors/issue-31997.rs | 0 .../ui/derived-errors/issue-31997.stderr | 0 .../ui/derives/auxiliary/derive-marker-tricky.rs | 0 .../clone-debug-dead-code-in-the-same-struct.rs | 0 .../clone-debug-dead-code-in-the-same-struct.stderr | 0 .../ui/derives/clone-debug-dead-code.rs | 0 .../ui/derives/clone-debug-dead-code.stderr | 0 .../ui/derives/derive-Debug-use-ufcs-struct.rs | 0 .../ui/derives/derive-Debug-use-ufcs-tuple.rs | 0 .../ui/derives/derive-assoc-type-not-impl.rs | 0 .../ui/derives/derive-assoc-type-not-impl.stderr | 0 {src/test => tests}/ui/derives/derive-deadlock.rs | 0 .../ui/derives/derive-deadlock.stderr | 0 {src/test => tests}/ui/derives/derive-hygiene.rs | 0 .../ui/derives/derive-macro-const-default.rs | 0 .../ui/derives/derive-marker-tricky.rs | 0 .../ui/derives/derive-multiple-with-packed.rs | 0 .../ui/derives/derive-on-trait-item-or-impl-item.rs | 0 .../derive-on-trait-item-or-impl-item.stderr | 0 .../test => tests}/ui/derives/derive-partial-ord.rs | 0 {src/test => tests}/ui/derives/derive-renamed.rs | 0 .../derives-span-Clone-enum-struct-variant.rs | 0 .../derives-span-Clone-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-Clone-enum.rs | 0 .../ui/derives/derives-span-Clone-enum.stderr | 0 .../ui/derives/derives-span-Clone-struct.rs | 0 .../ui/derives/derives-span-Clone-struct.stderr | 0 .../ui/derives/derives-span-Clone-tuple-struct.rs | 0 .../derives/derives-span-Clone-tuple-struct.stderr | 0 .../derives-span-Debug-enum-struct-variant.rs | 0 .../derives-span-Debug-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-Debug-enum.rs | 0 .../ui/derives/derives-span-Debug-enum.stderr | 0 .../ui/derives/derives-span-Debug-struct.rs | 0 .../ui/derives/derives-span-Debug-struct.stderr | 0 .../ui/derives/derives-span-Debug-tuple-struct.rs | 0 .../derives/derives-span-Debug-tuple-struct.stderr | 0 .../ui/derives/derives-span-Default-struct.rs | 0 .../ui/derives/derives-span-Default-struct.stderr | 0 .../ui/derives/derives-span-Default-tuple-struct.rs | 0 .../derives-span-Default-tuple-struct.stderr | 0 .../derives/derives-span-Eq-enum-struct-variant.rs | 0 .../derives-span-Eq-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-Eq-enum.rs | 0 .../ui/derives/derives-span-Eq-enum.stderr | 0 .../ui/derives/derives-span-Eq-struct.rs | 0 .../ui/derives/derives-span-Eq-struct.stderr | 0 .../ui/derives/derives-span-Eq-tuple-struct.rs | 0 .../ui/derives/derives-span-Eq-tuple-struct.stderr | 0 .../derives-span-Hash-enum-struct-variant.rs | 0 .../derives-span-Hash-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-Hash-enum.rs | 0 .../ui/derives/derives-span-Hash-enum.stderr | 0 .../ui/derives/derives-span-Hash-struct.rs | 0 .../ui/derives/derives-span-Hash-struct.stderr | 0 .../ui/derives/derives-span-Hash-tuple-struct.rs | 0 .../derives/derives-span-Hash-tuple-struct.stderr | 0 .../derives/derives-span-Ord-enum-struct-variant.rs | 0 .../derives-span-Ord-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-Ord-enum.rs | 0 .../ui/derives/derives-span-Ord-enum.stderr | 0 .../ui/derives/derives-span-Ord-struct.rs | 0 .../ui/derives/derives-span-Ord-struct.stderr | 0 .../ui/derives/derives-span-Ord-tuple-struct.rs | 0 .../ui/derives/derives-span-Ord-tuple-struct.stderr | 0 .../derives-span-PartialEq-enum-struct-variant.rs | 0 ...erives-span-PartialEq-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-PartialEq-enum.rs | 0 .../ui/derives/derives-span-PartialEq-enum.stderr | 0 .../ui/derives/derives-span-PartialEq-struct.rs | 0 .../ui/derives/derives-span-PartialEq-struct.stderr | 0 .../derives/derives-span-PartialEq-tuple-struct.rs | 0 .../derives-span-PartialEq-tuple-struct.stderr | 0 .../derives-span-PartialOrd-enum-struct-variant.rs | 0 ...rives-span-PartialOrd-enum-struct-variant.stderr | 0 .../ui/derives/derives-span-PartialOrd-enum.rs | 0 .../ui/derives/derives-span-PartialOrd-enum.stderr | 0 .../ui/derives/derives-span-PartialOrd-struct.rs | 0 .../derives/derives-span-PartialOrd-struct.stderr | 0 .../derives/derives-span-PartialOrd-tuple-struct.rs | 0 .../derives-span-PartialOrd-tuple-struct.stderr | 0 {src/test => tests}/ui/derives/deriving-bounds.rs | 0 .../ui/derives/deriving-bounds.stderr | 0 .../test => tests}/ui/derives/deriving-copyclone.rs | 0 .../ui/derives/deriving-copyclone.stderr | 0 .../ui/derives/deriving-meta-empty-trait-list.rs | 0 .../ui/derives/deriving-meta-unknown-trait.rs | 0 .../ui/derives/deriving-meta-unknown-trait.stderr | 0 .../derives/deriving-no-inner-impl-error-message.rs | 0 .../deriving-no-inner-impl-error-message.stderr | 0 {src/test => tests}/ui/derives/deriving-non-type.rs | 0 .../ui/derives/deriving-non-type.stderr | 0 .../test => tests}/ui/derives/deriving-primitive.rs | 0 .../ui/derives/deriving-primitive.stderr | 0 .../ui/derives/deriving-with-repr-packed.rs | 0 .../ui/derives/deriving-with-repr-packed.stderr | 0 {src/test => tests}/ui/derives/issue-36617.rs | 0 {src/test => tests}/ui/derives/issue-36617.stderr | 0 {src/test => tests}/ui/derives/issue-43023.rs | 0 {src/test => tests}/ui/derives/issue-43023.stderr | 0 {src/test => tests}/ui/derives/issue-91492.rs | 0 {src/test => tests}/ui/derives/issue-91492.stderr | 0 {src/test => tests}/ui/derives/issue-91550.rs | 0 {src/test => tests}/ui/derives/issue-91550.stderr | 0 {src/test => tests}/ui/derives/issue-97343.rs | 0 {src/test => tests}/ui/derives/issue-97343.stderr | 0 .../ui/deriving/auxiliary/derive-no-std.rs | 0 {src/test => tests}/ui/deriving/derive-no-std.rs | 0 .../ui/deriving/derive-partialord-correctness.rs | 0 .../ui/deriving/deriving-all-codegen.rs | 0 .../ui/deriving/deriving-all-codegen.stdout | 0 .../ui/deriving/deriving-associated-types.rs | 0 {src/test => tests}/ui/deriving/deriving-bounds.rs | 0 .../ui/deriving/deriving-clone-array.rs | 0 .../ui/deriving/deriving-clone-enum.rs | 0 .../ui/deriving/deriving-clone-generic-enum.rs | 0 .../ui/deriving/deriving-clone-generic-struct.rs | 0 .../deriving/deriving-clone-generic-tuple-struct.rs | 0 .../ui/deriving/deriving-clone-struct.rs | 0 .../ui/deriving/deriving-clone-tuple-struct.rs | 0 .../ui/deriving/deriving-cmp-generic-enum.rs | 0 .../ui/deriving/deriving-cmp-generic-struct-enum.rs | 0 .../ui/deriving/deriving-cmp-generic-struct.rs | 0 .../deriving/deriving-cmp-generic-tuple-struct.rs | 0 .../ui/deriving/deriving-cmp-shortcircuit.rs | 0 .../ui/deriving/deriving-copyclone.rs | 0 .../ui/deriving/deriving-default-box.rs | 0 .../ui/deriving/deriving-default-enum.rs | 0 .../ui/deriving/deriving-enum-single-variant.rs | 0 .../ui/deriving/deriving-eq-ord-boxed-slice.rs | 0 {src/test => tests}/ui/deriving/deriving-hash.rs | 0 {src/test => tests}/ui/deriving/deriving-in-fn.rs | 0 .../test => tests}/ui/deriving/deriving-in-macro.rs | 0 .../ui/deriving/deriving-meta-multiple.rs | 0 {src/test => tests}/ui/deriving/deriving-meta.rs | 0 .../deriving-self-lifetime-totalord-totaleq.rs | 0 {src/test => tests}/ui/deriving/deriving-show-2.rs | 0 {src/test => tests}/ui/deriving/deriving-show.rs | 0 .../ui/deriving/deriving-via-extension-c-enum.rs | 0 .../ui/deriving/deriving-via-extension-enum.rs | 0 .../ui/deriving/deriving-via-extension-hash-enum.rs | 0 .../deriving/deriving-via-extension-hash-struct.rs | 0 .../deriving/deriving-via-extension-struct-empty.rs | 0 ...riving-via-extension-struct-like-enum-variant.rs | 0 .../deriving/deriving-via-extension-struct-tuple.rs | 0 .../ui/deriving/deriving-via-extension-struct.rs | 0 .../deriving/deriving-via-extension-type-params.rs | 0 .../ui/deriving/deriving-with-helper.rs | 0 .../ui/deriving/deriving-with-repr-packed.rs | 0 {src/test => tests}/ui/deriving/issue-103157.rs | 0 {src/test => tests}/ui/deriving/issue-103157.stderr | 0 {src/test => tests}/ui/deriving/issue-105101.rs | 0 {src/test => tests}/ui/deriving/issue-105101.stderr | 0 {src/test => tests}/ui/deriving/issue-19358.rs | 0 {src/test => tests}/ui/deriving/issue-3935.rs | 0 {src/test => tests}/ui/deriving/issue-58319.rs | 0 {src/test => tests}/ui/deriving/issue-6341.rs | 0 .../ui/deriving/issue-89188-gat-hrtb.rs | 0 .../ui/dest-prop/skeptic-miscompile.rs | 0 {src/test => tests}/ui/destructure-trait-ref.rs | 0 {src/test => tests}/ui/destructure-trait-ref.stderr | 0 .../ui/destructuring-assignment/bad-expr-lhs.rs | 0 .../ui/destructuring-assignment/bad-expr-lhs.stderr | 0 .../default-match-bindings-forbidden.rs | 0 .../default-match-bindings-forbidden.stderr | 0 .../ui/destructuring-assignment/drop-order.rs | 0 .../destructuring-assignment/nested_destructure.rs | 0 .../ui/destructuring-assignment/note-unsupported.rs | 0 .../note-unsupported.stderr | 0 .../destructuring-assignment/slice_destructure.rs | 0 .../slice_destructure_fail.rs | 0 .../slice_destructure_fail.stderr | 0 .../struct-or-enum-variant-path.rs | 0 .../destructuring-assignment/struct_destructure.rs | 0 .../struct_destructure_fail.rs | 0 .../struct_destructure_fail.stderr | 0 .../destructuring-assignment/tuple_destructure.rs | 0 .../tuple_destructure_fail.rs | 0 .../tuple_destructure_fail.stderr | 0 .../tuple_struct_destructure.rs | 0 .../tuple_struct_destructure_fail.rs | 0 .../tuple_struct_destructure_fail.stderr | 0 .../warn-unused-duplication.rs | 0 .../warn-unused-duplication.stderr | 0 .../ui/diagnostic-width/flag-human.rs | 0 .../ui/diagnostic-width/flag-human.stderr | 0 .../test => tests}/ui/diagnostic-width/flag-json.rs | 0 .../ui/diagnostic-width/flag-json.stderr | 0 .../ui/diagnostic-width/long-E0308.rs | 0 .../ui/diagnostic-width/long-E0308.stderr | 0 .../non-1-width-unicode-multiline-label.rs | 0 .../non-1-width-unicode-multiline-label.stderr | 0 .../diagnostic-width/non-whitespace-trimming-2.rs | 0 .../non-whitespace-trimming-2.stderr | 0 .../non-whitespace-trimming-unicode.rs | 0 .../non-whitespace-trimming-unicode.stderr | 0 .../ui/diagnostic-width/non-whitespace-trimming.rs | 0 .../diagnostic-width/non-whitespace-trimming.stderr | 0 .../ui/diagnostic-width/tabs-trimming.rs | 0 .../ui/diagnostic-width/tabs-trimming.stderr | 0 .../ui/diagnostic-width/whitespace-trimming-2.rs | 0 .../diagnostic-width/whitespace-trimming-2.stderr | 0 .../ui/diagnostic-width/whitespace-trimming.rs | 0 .../ui/diagnostic-width/whitespace-trimming.stderr | 0 {src/test => tests}/ui/did_you_mean/E0178.rs | 0 {src/test => tests}/ui/did_you_mean/E0178.stderr | 0 .../ui/did_you_mean/bad-assoc-expr.rs | 0 .../ui/did_you_mean/bad-assoc-expr.stderr | 0 .../test => tests}/ui/did_you_mean/bad-assoc-pat.rs | 0 .../ui/did_you_mean/bad-assoc-pat.stderr | 0 {src/test => tests}/ui/did_you_mean/bad-assoc-ty.rs | 0 .../ui/did_you_mean/bad-assoc-ty.stderr | 0 .../brackets-to-braces-single-element.rs | 0 .../brackets-to-braces-single-element.stderr | 0 .../ui/did_you_mean/compatible-variants-in-pat.rs | 0 .../did_you_mean/compatible-variants-in-pat.stderr | 0 .../ui/did_you_mean/compatible-variants.rs | 0 .../ui/did_you_mean/compatible-variants.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-103909.rs | 0 .../ui/did_you_mean/issue-103909.stderr | 0 .../issue-21659-show-relevant-trait-impls-1.rs | 0 .../issue-21659-show-relevant-trait-impls-1.stderr | 0 .../issue-21659-show-relevant-trait-impls-2.rs | 0 .../issue-21659-show-relevant-trait-impls-2.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-31424.rs | 0 .../ui/did_you_mean/issue-31424.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-34126.rs | 0 .../ui/did_you_mean/issue-34126.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-34337.rs | 0 .../ui/did_you_mean/issue-34337.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-35937.rs | 0 .../ui/did_you_mean/issue-35937.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-36798.rs | 0 .../ui/did_you_mean/issue-36798.stderr | 0 .../ui/did_you_mean/issue-36798_unknown_field.rs | 0 .../did_you_mean/issue-36798_unknown_field.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-37139.rs | 0 .../ui/did_you_mean/issue-37139.stderr | 0 .../issue-38054-do-not-show-unresolved-names.rs | 0 .../issue-38054-do-not-show-unresolved-names.stderr | 0 .../test => tests}/ui/did_you_mean/issue-38147-1.rs | 0 .../ui/did_you_mean/issue-38147-1.stderr | 0 .../test => tests}/ui/did_you_mean/issue-38147-2.rs | 0 .../ui/did_you_mean/issue-38147-2.stderr | 0 .../test => tests}/ui/did_you_mean/issue-38147-3.rs | 0 .../ui/did_you_mean/issue-38147-3.stderr | 0 .../test => tests}/ui/did_you_mean/issue-38147-4.rs | 0 .../ui/did_you_mean/issue-38147-4.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-39544.rs | 0 .../ui/did_you_mean/issue-39544.stderr | 0 .../did_you_mean/issue-39802-show-5-trait-impls.rs | 0 .../issue-39802-show-5-trait-impls.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-40006.rs | 0 .../ui/did_you_mean/issue-40006.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-40396.rs | 0 .../ui/did_you_mean/issue-40396.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-40823.rs | 0 .../ui/did_you_mean/issue-40823.stderr | 0 ...issue-41679-tilde-bitwise-negation-attempt.fixed | 0 .../issue-41679-tilde-bitwise-negation-attempt.rs | 0 ...ssue-41679-tilde-bitwise-negation-attempt.stderr | 0 .../issue-42599_available_fields_note.rs | 0 .../issue-42599_available_fields_note.stderr | 0 {src/test => tests}/ui/did_you_mean/issue-42764.rs | 0 .../ui/did_you_mean/issue-42764.stderr | 0 .../issue-43871-enum-instead-of-variant.rs | 0 .../issue-43871-enum-instead-of-variant.stderr | 0 .../issue-46718-struct-pattern-dotdotdot.rs | 0 .../issue-46718-struct-pattern-dotdotdot.stderr | 0 ...ssue-46836-identifier-not-instead-of-negation.rs | 0 ...-46836-identifier-not-instead-of-negation.stderr | 0 .../issue-48492-tuple-destructure-missing-parens.rs | 0 ...ue-48492-tuple-destructure-missing-parens.stderr | 0 ...9746-unicode-confusable-in-float-literal-expt.rs | 0 ...-unicode-confusable-in-float-literal-expt.stderr | 0 ...ue-53280-expected-float-found-integer-literal.rs | 0 ...3280-expected-float-found-integer-literal.stderr | 0 .../issue-54109-and_instead_of_ampersands.rs | 0 .../issue-54109-and_instead_of_ampersands.stderr | 0 .../did_you_mean/issue-54109-without-witness.fixed | 0 .../ui/did_you_mean/issue-54109-without-witness.rs | 0 .../did_you_mean/issue-54109-without-witness.stderr | 0 .../issue-56028-there-is-an-enum-variant.rs | 0 .../issue-56028-there-is-an-enum-variant.stderr | 0 .../issue-87830-try-brackets-for-arrays.rs | 0 .../issue-87830-try-brackets-for-arrays.stderr | 0 .../did_you_mean/issue-93210-ignore-doc-hidden.rs | 0 .../issue-93210-ignore-doc-hidden.stderr | 0 .../ui/did_you_mean/pub-macro-rules.rs | 0 .../ui/did_you_mean/pub-macro-rules.stderr | 0 .../ui/did_you_mean/recursion_limit.rs | 0 .../ui/did_you_mean/recursion_limit.stderr | 0 .../ui/did_you_mean/recursion_limit_deref.rs | 0 .../ui/did_you_mean/recursion_limit_deref.stderr | 0 .../ui/did_you_mean/recursion_limit_macro.rs | 0 .../ui/did_you_mean/recursion_limit_macro.stderr | 0 .../replace-impl-infer-ty-from-trait.fixed | 0 .../replace-impl-infer-ty-from-trait.rs | 0 .../replace-impl-infer-ty-from-trait.stderr | 0 ...it-object-reference-without-parens-suggestion.rs | 0 ...bject-reference-without-parens-suggestion.stderr | 0 .../ui/did_you_mean/use_instead_of_import.fixed | 0 .../ui/did_you_mean/use_instead_of_import.rs | 0 .../ui/did_you_mean/use_instead_of_import.stderr | 0 .../directory_ownership/foo/compiletest-ignore-dir | 0 .../foo/mod_file_not_owning/aux2.rs | 0 .../foo/mod_file_not_owning_aux2.rs | 0 .../ui/directory_ownership/macro-expanded-mod.rs | 0 .../directory_ownership/macro-expanded-mod.stderr | 0 .../macro_expanded_mod_helper/foo/bar.rs | 0 .../macro_expanded_mod_helper/foo/mod.rs | 0 .../directory_ownership/mod_file_not_owning_aux1.rs | 0 .../mod_file_not_owning_aux1/compiletest-ignore-dir | 0 .../mod_file_not_owning_aux2.rs | 0 .../directory_ownership/mod_file_not_owning_aux2.rs | 0 .../directory_ownership/mod_file_not_owning_aux3.rs | 0 .../non-inline-mod-restriction.rs | 0 .../non-inline-mod-restriction.stderr | 0 ...owed-deconstructing-destructing-struct-let.fixed | 0 ...allowed-deconstructing-destructing-struct-let.rs | 0 ...wed-deconstructing-destructing-struct-let.stderr | 0 ...ed-deconstructing-destructing-struct-match.fixed | 0 ...lowed-deconstructing-destructing-struct-match.rs | 0 ...d-deconstructing-destructing-struct-match.stderr | 0 .../ui/disambiguate-identical-names.rs | 0 .../ui/disambiguate-identical-names.stderr | 0 {src/test => tests}/ui/discrim/discrim-ill-typed.rs | 0 .../ui/discrim/discrim-ill-typed.stderr | 0 .../test => tests}/ui/discrim/discrim-overflow-2.rs | 0 .../ui/discrim/discrim-overflow-2.stderr | 0 {src/test => tests}/ui/discrim/discrim-overflow.rs | 0 .../ui/discrim/discrim-overflow.stderr | 0 .../ui/diverging-fallback-method-chain.rs | 0 {src/test => tests}/ui/diverging-fallback-option.rs | 0 {src/test => tests}/ui/diverging-fn-tail-35849.rs | 0 .../ui/diverging-fn-tail-35849.stderr | 0 {src/test => tests}/ui/does-nothing.rs | 0 {src/test => tests}/ui/does-nothing.stderr | 0 .../ui/dollar-crate/dollar-crate-is-keyword-2.rs | 0 .../dollar-crate/dollar-crate-is-keyword-2.stderr | 0 .../ui/dollar-crate/dollar-crate-is-keyword.rs | 0 .../ui/dollar-crate/dollar-crate-is-keyword.stderr | 0 .../ui/dont-suggest-private-trait-method.rs | 0 .../ui/dont-suggest-private-trait-method.stderr | 0 {src/test => tests}/ui/double-ref.rs | 0 {src/test => tests}/ui/double-type-import.rs | 0 {src/test => tests}/ui/double-type-import.stderr | 0 .../ui/drop-bounds/drop-bounds-impl-drop.rs | 0 {src/test => tests}/ui/drop-bounds/drop-bounds.rs | 0 .../ui/drop-bounds/drop-bounds.stderr | 0 .../drop/auxiliary/dropck_eyepatch_extern_crate.rs | 0 .../test => tests}/ui/drop/auxiliary/inline_dtor.rs | 0 .../test => tests}/ui/drop/auxiliary/issue-10028.rs | 0 .../ui/drop/drop-foreign-fundamental.rs | 0 .../ui/drop/drop-foreign-fundamental.stderr | 0 {src/test => tests}/ui/drop/drop-if-let-binding.rs | 0 .../ui/drop/drop-on-empty-block-exit.rs | 0 {src/test => tests}/ui/drop/drop-on-ret.rs | 0 .../test => tests}/ui/drop/drop-struct-as-object.rs | 0 {src/test => tests}/ui/drop/drop-trait-enum.rs | 0 {src/test => tests}/ui/drop/drop-trait-generic.rs | 0 {src/test => tests}/ui/drop/drop-trait.rs | 0 .../test => tests}/ui/drop/drop-uninhabited-enum.rs | 0 .../ui/drop/drop-with-type-ascription-1.rs | 0 .../ui/drop/drop-with-type-ascription-2.rs | 0 {src/test => tests}/ui/drop/drop_order.rs | 0 .../ui/drop/dropck-eyepatch-extern-crate.rs | 0 .../ui/drop/dropck-eyepatch-reorder.rs | 0 {src/test => tests}/ui/drop/dropck-eyepatch.rs | 0 {src/test => tests}/ui/drop/dropck_legal_cycles.rs | 0 {src/test => tests}/ui/drop/dynamic-drop-async.rs | 0 {src/test => tests}/ui/drop/dynamic-drop.rs | 0 {src/test => tests}/ui/drop/issue-100276.rs | 0 {src/test => tests}/ui/drop/issue-10028.rs | 0 {src/test => tests}/ui/drop/issue-103107.rs | 0 .../ui/drop/issue-17718-const-destructors.rs | 0 {src/test => tests}/ui/drop/issue-21486.rs | 0 .../ui/drop/issue-23338-ensure-param-drop-order.rs | 0 {src/test => tests}/ui/drop/issue-2734.rs | 0 {src/test => tests}/ui/drop/issue-30018-nopanic.rs | 0 {src/test => tests}/ui/drop/issue-35546.rs | 0 {src/test => tests}/ui/drop/issue-48962.rs | 0 .../ui/drop/issue-90752-raw-ptr-shenanigans.rs | 0 {src/test => tests}/ui/drop/issue-90752.rs | 0 {src/test => tests}/ui/drop/no-drop-flag-size.rs | 0 {src/test => tests}/ui/drop/nondrop-cycle.rs | 0 {src/test => tests}/ui/drop/repeat-drop-2.rs | 0 {src/test => tests}/ui/drop/repeat-drop-2.stderr | 0 {src/test => tests}/ui/drop/repeat-drop.rs | 0 .../ui/drop/terminate-in-initializer.rs | 0 {src/test => tests}/ui/drop/use_inline_dtor.rs | 0 .../auxiliary/dropck_eyepatch_extern_crate.rs | 0 .../ui/dropck/cleanup-arm-conditional.rs | 0 {src/test => tests}/ui/dropck/drop-on-non-struct.rs | 0 .../ui/dropck/drop-on-non-struct.stderr | 0 .../ui/dropck/drop-with-active-borrows-1.rs | 0 .../ui/dropck/drop-with-active-borrows-1.stderr | 0 .../ui/dropck/drop-with-active-borrows-2.rs | 0 .../ui/dropck/drop-with-active-borrows-2.stderr | 0 .../ui/dropck/dropck-eyepatch-extern-crate.rs | 0 .../ui/dropck/dropck-eyepatch-extern-crate.stderr | 0 .../dropck/dropck-eyepatch-implies-unsafe-impl.rs | 0 .../dropck-eyepatch-implies-unsafe-impl.stderr | 0 .../ui/dropck/dropck-eyepatch-reorder.rs | 0 .../ui/dropck/dropck-eyepatch-reorder.stderr | 0 {src/test => tests}/ui/dropck/dropck-eyepatch.rs | 0 .../test => tests}/ui/dropck/dropck-eyepatch.stderr | 0 {src/test => tests}/ui/dropck/dropck-union.rs | 0 {src/test => tests}/ui/dropck/dropck-union.stderr | 0 {src/test => tests}/ui/dropck/dropck_fn_type.rs | 0 .../ui/dropck/dropck_no_diverge_on_nonregular_1.rs | 0 .../dropck/dropck_no_diverge_on_nonregular_1.stderr | 0 .../ui/dropck/dropck_no_diverge_on_nonregular_2.rs | 0 .../dropck/dropck_no_diverge_on_nonregular_2.stderr | 0 .../ui/dropck/dropck_no_diverge_on_nonregular_3.rs | 0 .../dropck/dropck_no_diverge_on_nonregular_3.stderr | 0 .../ui/dropck/dropck_trait_cycle_checked.rs | 0 .../ui/dropck/dropck_trait_cycle_checked.stderr | 0 {src/test => tests}/ui/dropck/dropck_traits.rs | 0 .../ui/dropck/issue-24805-dropck-itemless.rs | 0 .../dropck/issue-28498-ugeh-with-lifetime-param.rs | 0 .../ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs | 0 .../ui/dropck/issue-28498-ugeh-with-trait-bound.rs | 0 {src/test => tests}/ui/dropck/issue-29844.rs | 0 {src/test => tests}/ui/dropck/issue-34053.rs | 0 {src/test => tests}/ui/dropck/issue-38868.rs | 0 {src/test => tests}/ui/dropck/issue-38868.stderr | 0 {src/test => tests}/ui/dropck/issue-54943-1.rs | 0 {src/test => tests}/ui/dropck/issue-54943-2.rs | 0 .../ui/dropck/reject-specialized-drops-8142.rs | 0 .../ui/dropck/reject-specialized-drops-8142.stderr | 0 .../ui/dropck/relate_lt_in_type_outlives_bound.rs | 0 .../dropck/relate_lt_in_type_outlives_bound.stderr | 0 {src/test => tests}/ui/dst/dst-bad-assign-2.rs | 0 {src/test => tests}/ui/dst/dst-bad-assign-2.stderr | 0 {src/test => tests}/ui/dst/dst-bad-assign-3.rs | 0 {src/test => tests}/ui/dst/dst-bad-assign-3.stderr | 0 {src/test => tests}/ui/dst/dst-bad-assign.rs | 0 {src/test => tests}/ui/dst/dst-bad-assign.stderr | 0 {src/test => tests}/ui/dst/dst-bad-coerce1.rs | 0 {src/test => tests}/ui/dst/dst-bad-coerce1.stderr | 0 {src/test => tests}/ui/dst/dst-bad-coerce2.rs | 0 {src/test => tests}/ui/dst/dst-bad-coerce2.stderr | 0 {src/test => tests}/ui/dst/dst-bad-coerce3.rs | 0 {src/test => tests}/ui/dst/dst-bad-coerce3.stderr | 0 {src/test => tests}/ui/dst/dst-bad-coerce4.rs | 0 {src/test => tests}/ui/dst/dst-bad-coerce4.stderr | 0 {src/test => tests}/ui/dst/dst-bad-coercions.rs | 0 {src/test => tests}/ui/dst/dst-bad-coercions.stderr | 0 {src/test => tests}/ui/dst/dst-bad-deep-2.rs | 0 {src/test => tests}/ui/dst/dst-bad-deep-2.stderr | 0 {src/test => tests}/ui/dst/dst-bad-deep.rs | 0 {src/test => tests}/ui/dst/dst-bad-deep.stderr | 0 {src/test => tests}/ui/dst/dst-index.rs | 0 {src/test => tests}/ui/dst/dst-index.stderr | 0 .../ui/dst/dst-object-from-unsized-type.rs | 0 .../ui/dst/dst-object-from-unsized-type.stderr | 0 {src/test => tests}/ui/dst/dst-rvalue.rs | 0 {src/test => tests}/ui/dst/dst-rvalue.stderr | 0 {src/test => tests}/ui/dst/dst-sized-trait-param.rs | 0 .../ui/dst/dst-sized-trait-param.stderr | 0 {src/test => tests}/ui/dupe-first-attr.rc | 0 {src/test => tests}/ui/duplicate/dupe-symbols-1.rs | 0 .../ui/duplicate/dupe-symbols-1.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-2.rs | 0 .../ui/duplicate/dupe-symbols-2.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-3.rs | 0 .../ui/duplicate/dupe-symbols-3.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-4.rs | 0 .../ui/duplicate/dupe-symbols-4.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-5.rs | 0 .../ui/duplicate/dupe-symbols-5.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-6.rs | 0 .../ui/duplicate/dupe-symbols-6.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-7.rs | 0 .../ui/duplicate/dupe-symbols-7.stderr | 0 {src/test => tests}/ui/duplicate/dupe-symbols-8.rs | 0 .../ui/duplicate/dupe-symbols-8.stderr | 0 .../ui/duplicate/duplicate-check-macro-exports.rs | 0 .../duplicate/duplicate-check-macro-exports.stderr | 0 .../ui/duplicate/duplicate-parameter.rs | 0 .../ui/duplicate/duplicate-parameter.stderr | 0 .../ui/duplicate/duplicate-type-parameter.rs | 0 .../ui/duplicate/duplicate-type-parameter.stderr | 0 {src/test => tests}/ui/duplicate_entry_error.rs | 0 {src/test => tests}/ui/duplicate_entry_error.stderr | 0 {src/test => tests}/ui/dyn-drop/dyn-drop.rs | 0 {src/test => tests}/ui/dyn-drop/dyn-drop.stderr | 0 .../dyn-2015-edition-keyword-ident-lint.fixed | 0 .../dyn-2015-edition-keyword-ident-lint.rs | 0 .../dyn-2015-edition-keyword-ident-lint.stderr | 0 .../dyn-2015-idents-in-decl-macros-unlinted.rs | 0 .../dyn-2015-idents-in-macros-unlinted.rs | 0 .../dyn-2015-no-warnings-without-lints.rs | 0 .../ui/dyn-keyword/dyn-2018-edition-lint.rs | 0 .../ui/dyn-keyword/dyn-2018-edition-lint.stderr | 0 .../ui/dyn-keyword/dyn-2021-edition-error.rs | 0 .../ui/dyn-keyword/dyn-2021-edition-error.stderr | 0 .../ui/dyn-keyword/dyn-angle-brackets.fixed | 0 .../ui/dyn-keyword/dyn-angle-brackets.rs | 0 .../ui/dyn-keyword/dyn-angle-brackets.stderr | 0 .../issue-56327-dyn-trait-in-macro-is-okay.rs | 0 {src/test => tests}/ui/dyn-star/align.normal.stderr | 0 .../ui/dyn-star/align.over_aligned.stderr | 0 {src/test => tests}/ui/dyn-star/align.rs | 0 .../ui/dyn-star/auxiliary/dyn-star-foreign.rs | 0 {src/test => tests}/ui/dyn-star/box.rs | 0 .../dyn-star/check-size-at-cast-polymorphic-bad.rs | 0 .../check-size-at-cast-polymorphic-bad.stderr | 0 .../ui/dyn-star/check-size-at-cast-polymorphic.rs | 0 .../ui/dyn-star/check-size-at-cast.rs | 0 .../ui/dyn-star/check-size-at-cast.stderr | 0 {src/test => tests}/ui/dyn-star/const.rs | 0 .../ui/dyn-star/dispatch-on-pin-mut.rs | 0 .../ui/dyn-star/dispatch-on-pin-mut.run.stdout | 0 .../ui/dyn-star/dispatch-on-pin-mut.stderr | 0 .../ui/dyn-star/dont-unsize-coerce-dyn-star.rs | 0 .../dyn-star/dont-unsize-coerce-dyn-star.run.stdout | 0 .../ui/dyn-star/dont-unsize-coerce-dyn-star.stderr | 0 {src/test => tests}/ui/dyn-star/drop.rs | 0 {src/test => tests}/ui/dyn-star/drop.run.stdout | 0 {src/test => tests}/ui/dyn-star/dyn-async-trait.rs | 0 {src/test => tests}/ui/dyn-star/dyn-to-rigid.rs | 0 {src/test => tests}/ui/dyn-star/dyn-to-rigid.stderr | 0 {src/test => tests}/ui/dyn-star/error.rs | 0 {src/test => tests}/ui/dyn-star/error.stderr | 0 .../ui/dyn-star/feature-gate-dyn_star.rs | 0 .../ui/dyn-star/feature-gate-dyn_star.stderr | 0 {src/test => tests}/ui/dyn-star/issue-102430.rs | 0 {src/test => tests}/ui/dyn-star/make-dyn-star.rs | 0 {src/test => tests}/ui/dyn-star/method.rs | 0 .../ui/dyn-star/no-explicit-dyn-star-cast.rs | 0 .../ui/dyn-star/no-explicit-dyn-star-cast.stderr | 0 .../ui/dyn-star/no-explicit-dyn-star.rs | 0 .../ui/dyn-star/no-explicit-dyn-star.stderr | 0 .../ui/dyn-star/no-implicit-dyn-star.rs | 0 .../ui/dyn-star/no-implicit-dyn-star.stderr | 0 .../ui/dyn-star/no-unsize-coerce-dyn-trait.rs | 0 .../ui/dyn-star/no-unsize-coerce-dyn-trait.stderr | 0 {src/test => tests}/ui/dyn-star/return.rs | 0 {src/test => tests}/ui/dyn-star/return.stderr | 0 {src/test => tests}/ui/dyn-star/syntax.rs | 0 .../ui/dyn-star/unsize-into-ref-dyn-star.rs | 0 .../ui/dyn-star/unsize-into-ref-dyn-star.stderr | 0 {src/test => tests}/ui/dyn-star/upcast.rs | 0 {src/test => tests}/ui/dyn-star/upcast.stderr | 0 .../ui/dynamically-sized-types/dst-coerce-custom.rs | 0 .../ui/dynamically-sized-types/dst-coerce-rc.rs | 0 .../ui/dynamically-sized-types/dst-coercions.rs | 0 .../ui/dynamically-sized-types/dst-deref-mut.rs | 0 .../ui/dynamically-sized-types/dst-deref.rs | 0 .../ui/dynamically-sized-types/dst-field-align.rs | 0 .../ui/dynamically-sized-types/dst-index.rs | 0 .../dynamically-sized-types/dst-irrefutable-bind.rs | 0 .../ui/dynamically-sized-types/dst-raw.rs | 0 .../ui/dynamically-sized-types/dst-struct-sole.rs | 0 .../ui/dynamically-sized-types/dst-struct.rs | 0 .../ui/dynamically-sized-types/dst-trait-tuple.rs | 0 .../ui/dynamically-sized-types/dst-trait.rs | 0 .../dynamically-sized-types/dst-tuple-no-reorder.rs | 0 .../ui/dynamically-sized-types/dst-tuple-sole.rs | 0 .../dst-tuple-zst-offsets.rs | 0 .../ui/dynamically-sized-types/dst-tuple.rs | 0 {src/test => tests}/ui/early-ret-binop-add.rs | 0 {src/test => tests}/ui/editions/async-block-2015.rs | 0 .../ui/editions/async-block-2015.stderr | 0 .../ui/editions/auxiliary/absolute.rs | 0 .../auxiliary/edition-extern-crate-allowed.rs | 0 .../ui/editions/auxiliary/edition-imports-2015.rs | 0 .../ui/editions/auxiliary/edition-imports-2018.rs | 0 .../ui/editions/auxiliary/edition-kw-macro-2015.rs | 0 .../ui/editions/auxiliary/edition-kw-macro-2018.rs | 0 .../ui/editions/dyn-trait-sugg-2021.rs | 0 .../ui/editions/dyn-trait-sugg-2021.stderr | 0 .../ui/editions/edition-extern-crate-allowed.rs | 0 .../ui/editions/edition-extern-crate-allowed.stderr | 0 .../ui/editions/edition-feature-ok.rs | 0 .../ui/editions/edition-feature-redundant.rs | 0 .../ui/editions/edition-feature-redundant.stderr | 0 .../ui/editions/edition-imports-2015.rs | 0 .../ui/editions/edition-imports-2015.stderr | 0 .../ui/editions/edition-imports-2018.rs | 0 .../ui/editions/edition-imports-2018.stderr | 0 .../edition-imports-virtual-2015-ambiguity.rs | 0 .../editions/edition-imports-virtual-2015-gated.rs | 0 .../edition-imports-virtual-2015-gated.stderr | 0 .../edition-keywords-2015-2015-expansion.rs | 0 .../editions/edition-keywords-2015-2015-parsing.rs | 0 .../edition-keywords-2015-2015-parsing.stderr | 0 .../ui/editions/edition-keywords-2015-2015.rs | 0 .../edition-keywords-2015-2018-expansion.rs | 0 .../edition-keywords-2015-2018-expansion.stderr | 0 .../editions/edition-keywords-2015-2018-parsing.rs | 0 .../edition-keywords-2015-2018-parsing.stderr | 0 .../ui/editions/edition-keywords-2015-2018.rs | 0 .../edition-keywords-2018-2015-expansion.rs | 0 .../editions/edition-keywords-2018-2015-parsing.rs | 0 .../edition-keywords-2018-2015-parsing.stderr | 0 .../ui/editions/edition-keywords-2018-2015.rs | 0 .../edition-keywords-2018-2018-expansion.rs | 0 .../edition-keywords-2018-2018-expansion.stderr | 0 .../editions/edition-keywords-2018-2018-parsing.rs | 0 .../edition-keywords-2018-2018-parsing.stderr | 0 .../ui/editions/edition-keywords-2018-2018.rs | 0 .../ui/editions/edition-raw-pointer-method-2015.rs | 0 .../editions/edition-raw-pointer-method-2015.stderr | 0 .../ui/editions/edition-raw-pointer-method-2018.rs | 0 .../editions/edition-raw-pointer-method-2018.stderr | 0 .../ui/editions/epoch-gate-feature.rs | 0 .../ui/elide-errors-on-mismatched-tuple.rs | 0 .../ui/elide-errors-on-mismatched-tuple.stderr | 0 {src/test => tests}/ui/elided-test.rs | 0 {src/test => tests}/ui/elided-test.stderr | 0 {src/test => tests}/ui/else-if.rs | 0 {src/test => tests}/ui/empty-allocation-non-null.rs | 0 .../ui/empty-allocation-rvalue-non-null.rs | 0 {src/test => tests}/ui/empty-type-parameter-list.rs | 0 .../ui/empty/auxiliary/empty-struct.rs | 0 .../test => tests}/ui/empty/auxiliary/two_macros.rs | 0 {src/test => tests}/ui/empty/empty-attributes.rs | 0 .../test => tests}/ui/empty/empty-attributes.stderr | 0 {src/test => tests}/ui/empty/empty-comment.rs | 0 {src/test => tests}/ui/empty/empty-comment.stderr | 0 {src/test => tests}/ui/empty/empty-linkname.rs | 0 {src/test => tests}/ui/empty/empty-linkname.stderr | 0 {src/test => tests}/ui/empty/empty-macro-use.rs | 0 {src/test => tests}/ui/empty/empty-macro-use.stderr | 0 {src/test => tests}/ui/empty/empty-never-array.rs | 0 .../ui/empty/empty-never-array.stderr | 0 .../ui/empty/empty-struct-braces-expr.rs | 0 .../ui/empty/empty-struct-braces-expr.stderr | 0 .../ui/empty/empty-struct-braces-pat-1.rs | 0 .../ui/empty/empty-struct-braces-pat-1.stderr | 0 .../ui/empty/empty-struct-braces-pat-2.rs | 0 .../ui/empty/empty-struct-braces-pat-2.stderr | 0 .../ui/empty/empty-struct-braces-pat-3.rs | 0 .../ui/empty/empty-struct-braces-pat-3.stderr | 0 .../ui/empty/empty-struct-tuple-pat.rs | 0 .../ui/empty/empty-struct-tuple-pat.stderr | 0 .../ui/empty/empty-struct-unit-expr.rs | 0 .../ui/empty/empty-struct-unit-expr.stderr | 0 .../ui/empty/empty-struct-unit-pat.rs | 0 .../ui/empty/empty-struct-unit-pat.stderr | 0 {src/test => tests}/ui/empty/issue-37026.rs | 0 {src/test => tests}/ui/empty/issue-37026.stderr | 0 {src/test => tests}/ui/empty/no-link.rs | 0 {src/test => tests}/ui/empty_global_asm.rs | 0 .../ui/entry-point/auxiliary/main_functions.rs | 0 .../ui/entry-point/imported_main_conflict.rs | 0 .../ui/entry-point/imported_main_conflict.stderr | 0 .../imported_main_const_fn_item_type_forbidden.rs | 0 ...mported_main_const_fn_item_type_forbidden.stderr | 0 .../ui/entry-point/imported_main_const_forbidden.rs | 0 .../imported_main_const_forbidden.stderr | 0 .../entry-point/imported_main_from_extern_crate.rs | 0 .../ui/entry-point/imported_main_from_inner_mod.rs | 0 ...imported_main_unused_not_trigger_feature_gate.rs | 0 .../actually_not_an_enum-discriminant.rs | 0 .../arbitrary_enum_discriminant-no-repr.rs | 0 .../arbitrary_enum_discriminant-no-repr.stderr | 0 .../arbitrary_enum_discriminant.rs | 0 .../ui/enum-discriminant/discriminant_size.rs | 0 .../ui/enum-discriminant/discriminant_size.stderr | 0 .../enum-discriminant/discriminant_value-wrapper.rs | 0 .../ui/enum-discriminant/discriminant_value.rs | 0 .../forbidden-discriminant-kind-impl.rs | 0 .../forbidden-discriminant-kind-impl.stderr | 0 .../ui/enum-discriminant/get_discr.rs | 0 .../ui/enum-discriminant/issue-104519.rs | 0 .../ui/enum-discriminant/issue-43398.rs | 0 .../ui/enum-discriminant/issue-43398.stderr | 0 .../ui/enum-discriminant/issue-46519.rs | 0 .../ui/enum-discriminant/issue-51582.rs | 0 .../issue-70453-generics-in-discr-ice-2.rs | 0 .../issue-70453-generics-in-discr-ice-2.stderr | 0 .../issue-70453-generics-in-discr-ice.rs | 0 .../issue-70453-generics-in-discr-ice.stderr | 0 .../issue-70453-polymorphic-ctfe.rs | 0 .../issue-70453-polymorphic-ctfe.stderr | 0 .../ui/enum-discriminant/issue-70509-partial_eq.rs | 0 .../enum-discriminant/issue-70509-partial_eq.stderr | 0 .../ui/enum-discriminant/issue-72554.rs | 0 .../ui/enum-discriminant/issue-72554.stderr | 0 .../ui/enum-discriminant/issue-90038.rs | 0 .../ui/enum-discriminant/niche-prefer-zero.rs | 0 {src/test => tests}/ui/enum-discriminant/niche.rs | 0 {src/test => tests}/ui/enum-discriminant/repr128.rs | 0 .../ui/enum-discriminant/repr128.stderr | 0 .../ui/enum/enum-and-module-in-same-scope.rs | 0 .../ui/enum/enum-and-module-in-same-scope.stderr | 0 .../ui/enum/enum-discrim-autosizing.rs | 0 .../ui/enum/enum-discrim-autosizing.stderr | 0 .../ui/enum/enum-discrim-too-small.rs | 0 .../ui/enum/enum-discrim-too-small.stderr | 0 .../ui/enum/enum-discrim-too-small2.rs | 0 .../ui/enum/enum-discrim-too-small2.stderr | 0 {src/test => tests}/ui/enum/enum-in-scope.rs | 0 {src/test => tests}/ui/enum/enum-in-scope.stderr | 0 {src/test => tests}/ui/enum/enum-size-variance.rs | 0 .../ui/enum/enum-size-variance.stderr | 0 {src/test => tests}/ui/enum/enum-to-float-cast-2.rs | 0 .../ui/enum/enum-to-float-cast-2.stderr | 0 {src/test => tests}/ui/enum/enum-to-float-cast.rs | 0 .../ui/enum/enum-to-float-cast.stderr | 0 {src/test => tests}/ui/enum/enum-variant-type-2.rs | 0 .../ui/enum/enum-variant-type-2.stderr | 0 {src/test => tests}/ui/enum/issue-42747.rs | 0 {src/test => tests}/ui/enum/issue-67945-1.rs | 0 {src/test => tests}/ui/enum/issue-67945-1.stderr | 0 {src/test => tests}/ui/enum/issue-67945-2.rs | 0 {src/test => tests}/ui/enum/issue-67945-2.stderr | 0 {src/test => tests}/ui/enum/nested-enum.rs | 0 {src/test => tests}/ui/enum/nested-enum.stderr | 0 .../ui/enum/suggest-default-attribute.rs | 0 .../ui/enum/suggest-default-attribute.stderr | 0 {src/test => tests}/ui/enum/union-in-enum.rs | 0 {src/test => tests}/ui/env-args-reverse-iterator.rs | 0 {src/test => tests}/ui/env-funky-keys.rs | 0 {src/test => tests}/ui/env-null-vars.rs | 0 {src/test => tests}/ui/env-vars.rs | 0 {src/test => tests}/ui/error-codes/E0001.rs | 0 {src/test => tests}/ui/error-codes/E0001.stderr | 0 {src/test => tests}/ui/error-codes/E0004-2.rs | 0 {src/test => tests}/ui/error-codes/E0004-2.stderr | 0 {src/test => tests}/ui/error-codes/E0004.rs | 0 {src/test => tests}/ui/error-codes/E0004.stderr | 0 {src/test => tests}/ui/error-codes/E0005.rs | 0 {src/test => tests}/ui/error-codes/E0005.stderr | 0 {src/test => tests}/ui/error-codes/E0010-teach.rs | 0 .../ui/error-codes/E0010-teach.stderr | 0 {src/test => tests}/ui/error-codes/E0010.rs | 0 {src/test => tests}/ui/error-codes/E0010.stderr | 0 {src/test => tests}/ui/error-codes/E0013.rs | 0 {src/test => tests}/ui/error-codes/E0013.stderr | 0 {src/test => tests}/ui/error-codes/E0015.rs | 0 {src/test => tests}/ui/error-codes/E0015.stderr | 0 {src/test => tests}/ui/error-codes/E0017.rs | 0 {src/test => tests}/ui/error-codes/E0017.stderr | 0 {src/test => tests}/ui/error-codes/E0023.rs | 0 {src/test => tests}/ui/error-codes/E0023.stderr | 0 {src/test => tests}/ui/error-codes/E0025.rs | 0 {src/test => tests}/ui/error-codes/E0025.stderr | 0 {src/test => tests}/ui/error-codes/E0026-teach.rs | 0 .../ui/error-codes/E0026-teach.stderr | 0 {src/test => tests}/ui/error-codes/E0026.rs | 0 {src/test => tests}/ui/error-codes/E0026.stderr | 0 {src/test => tests}/ui/error-codes/E0027.rs | 0 {src/test => tests}/ui/error-codes/E0027.stderr | 0 {src/test => tests}/ui/error-codes/E0029-teach.rs | 0 .../ui/error-codes/E0029-teach.stderr | 0 {src/test => tests}/ui/error-codes/E0029.rs | 0 {src/test => tests}/ui/error-codes/E0029.stderr | 0 {src/test => tests}/ui/error-codes/E0030-teach.rs | 0 .../ui/error-codes/E0030-teach.stderr | 0 {src/test => tests}/ui/error-codes/E0030.rs | 0 {src/test => tests}/ui/error-codes/E0030.stderr | 0 {src/test => tests}/ui/error-codes/E0033-teach.rs | 0 .../ui/error-codes/E0033-teach.stderr | 0 {src/test => tests}/ui/error-codes/E0033.rs | 0 {src/test => tests}/ui/error-codes/E0033.stderr | 0 {src/test => tests}/ui/error-codes/E0034.rs | 0 {src/test => tests}/ui/error-codes/E0034.stderr | 0 {src/test => tests}/ui/error-codes/E0038.rs | 0 {src/test => tests}/ui/error-codes/E0038.stderr | 0 {src/test => tests}/ui/error-codes/E0040.fixed | 0 {src/test => tests}/ui/error-codes/E0040.rs | 0 {src/test => tests}/ui/error-codes/E0040.stderr | 0 {src/test => tests}/ui/error-codes/E0044.rs | 0 {src/test => tests}/ui/error-codes/E0044.stderr | 0 {src/test => tests}/ui/error-codes/E0045.rs | 0 {src/test => tests}/ui/error-codes/E0045.stderr | 0 {src/test => tests}/ui/error-codes/E0049.rs | 0 {src/test => tests}/ui/error-codes/E0049.stderr | 0 {src/test => tests}/ui/error-codes/E0050.rs | 0 {src/test => tests}/ui/error-codes/E0050.stderr | 0 {src/test => tests}/ui/error-codes/E0054.rs | 0 {src/test => tests}/ui/error-codes/E0054.stderr | 0 {src/test => tests}/ui/error-codes/E0055.rs | 0 {src/test => tests}/ui/error-codes/E0055.stderr | 0 {src/test => tests}/ui/error-codes/E0057.rs | 0 {src/test => tests}/ui/error-codes/E0057.stderr | 0 {src/test => tests}/ui/error-codes/E0059.rs | 0 {src/test => tests}/ui/error-codes/E0059.stderr | 0 {src/test => tests}/ui/error-codes/E0060.rs | 0 {src/test => tests}/ui/error-codes/E0060.stderr | 0 {src/test => tests}/ui/error-codes/E0061.rs | 0 {src/test => tests}/ui/error-codes/E0061.stderr | 0 {src/test => tests}/ui/error-codes/E0062.rs | 0 {src/test => tests}/ui/error-codes/E0062.stderr | 0 {src/test => tests}/ui/error-codes/E0063.rs | 0 {src/test => tests}/ui/error-codes/E0063.stderr | 0 {src/test => tests}/ui/error-codes/E0067.rs | 0 {src/test => tests}/ui/error-codes/E0067.stderr | 0 {src/test => tests}/ui/error-codes/E0069.rs | 0 {src/test => tests}/ui/error-codes/E0069.stderr | 0 {src/test => tests}/ui/error-codes/E0070.rs | 0 {src/test => tests}/ui/error-codes/E0070.stderr | 0 {src/test => tests}/ui/error-codes/E0071.rs | 0 {src/test => tests}/ui/error-codes/E0071.stderr | 0 {src/test => tests}/ui/error-codes/E0075.rs | 0 {src/test => tests}/ui/error-codes/E0075.stderr | 0 {src/test => tests}/ui/error-codes/E0076.rs | 0 {src/test => tests}/ui/error-codes/E0076.stderr | 0 {src/test => tests}/ui/error-codes/E0077.rs | 0 {src/test => tests}/ui/error-codes/E0077.stderr | 0 {src/test => tests}/ui/error-codes/E0080.rs | 0 {src/test => tests}/ui/error-codes/E0080.stderr | 0 {src/test => tests}/ui/error-codes/E0081.rs | 0 {src/test => tests}/ui/error-codes/E0081.stderr | 0 {src/test => tests}/ui/error-codes/E0084.rs | 0 {src/test => tests}/ui/error-codes/E0084.stderr | 0 {src/test => tests}/ui/error-codes/E0091.rs | 0 {src/test => tests}/ui/error-codes/E0091.stderr | 0 {src/test => tests}/ui/error-codes/E0092.rs | 0 {src/test => tests}/ui/error-codes/E0092.stderr | 0 {src/test => tests}/ui/error-codes/E0093.rs | 0 {src/test => tests}/ui/error-codes/E0093.stderr | 0 {src/test => tests}/ui/error-codes/E0094.rs | 0 {src/test => tests}/ui/error-codes/E0094.stderr | 0 {src/test => tests}/ui/error-codes/E0106.rs | 0 {src/test => tests}/ui/error-codes/E0106.stderr | 0 {src/test => tests}/ui/error-codes/E0107.rs | 0 {src/test => tests}/ui/error-codes/E0107.stderr | 0 {src/test => tests}/ui/error-codes/E0109.rs | 0 {src/test => tests}/ui/error-codes/E0109.stderr | 0 {src/test => tests}/ui/error-codes/E0110.rs | 0 {src/test => tests}/ui/error-codes/E0110.stderr | 0 {src/test => tests}/ui/error-codes/E0116.rs | 0 {src/test => tests}/ui/error-codes/E0116.stderr | 0 {src/test => tests}/ui/error-codes/E0117.rs | 0 {src/test => tests}/ui/error-codes/E0117.stderr | 0 {src/test => tests}/ui/error-codes/E0118.rs | 0 {src/test => tests}/ui/error-codes/E0118.stderr | 0 {src/test => tests}/ui/error-codes/E0119.rs | 0 {src/test => tests}/ui/error-codes/E0119.stderr | 0 {src/test => tests}/ui/error-codes/E0120.rs | 0 {src/test => tests}/ui/error-codes/E0120.stderr | 0 {src/test => tests}/ui/error-codes/E0121.rs | 0 {src/test => tests}/ui/error-codes/E0121.stderr | 0 {src/test => tests}/ui/error-codes/E0124.rs | 0 {src/test => tests}/ui/error-codes/E0124.stderr | 0 {src/test => tests}/ui/error-codes/E0128.rs | 0 {src/test => tests}/ui/error-codes/E0128.stderr | 0 {src/test => tests}/ui/error-codes/E0130.rs | 0 {src/test => tests}/ui/error-codes/E0130.stderr | 0 {src/test => tests}/ui/error-codes/E0131.rs | 0 {src/test => tests}/ui/error-codes/E0131.stderr | 0 {src/test => tests}/ui/error-codes/E0132.rs | 0 {src/test => tests}/ui/error-codes/E0132.stderr | 0 {src/test => tests}/ui/error-codes/E0133.mir.stderr | 0 {src/test => tests}/ui/error-codes/E0133.rs | 0 .../test => tests}/ui/error-codes/E0133.thir.stderr | 0 {src/test => tests}/ui/error-codes/E0138.rs | 0 {src/test => tests}/ui/error-codes/E0138.stderr | 0 {src/test => tests}/ui/error-codes/E0152.rs | 0 {src/test => tests}/ui/error-codes/E0152.stderr | 0 .../test => tests}/ui/error-codes/E0161.base.stderr | 0 {src/test => tests}/ui/error-codes/E0161.rs | 0 {src/test => tests}/ui/error-codes/E0164.rs | 0 {src/test => tests}/ui/error-codes/E0164.stderr | 0 {src/test => tests}/ui/error-codes/E0184.rs | 0 {src/test => tests}/ui/error-codes/E0184.stderr | 0 {src/test => tests}/ui/error-codes/E0185.rs | 0 {src/test => tests}/ui/error-codes/E0185.stderr | 0 {src/test => tests}/ui/error-codes/E0186.rs | 0 {src/test => tests}/ui/error-codes/E0186.stderr | 0 {src/test => tests}/ui/error-codes/E0191.rs | 0 {src/test => tests}/ui/error-codes/E0191.stderr | 0 {src/test => tests}/ui/error-codes/E0194.rs | 0 {src/test => tests}/ui/error-codes/E0194.stderr | 0 {src/test => tests}/ui/error-codes/E0195.rs | 0 {src/test => tests}/ui/error-codes/E0195.stderr | 0 {src/test => tests}/ui/error-codes/E0197.rs | 0 {src/test => tests}/ui/error-codes/E0197.stderr | 0 {src/test => tests}/ui/error-codes/E0198.rs | 0 {src/test => tests}/ui/error-codes/E0198.stderr | 0 {src/test => tests}/ui/error-codes/E0199.rs | 0 {src/test => tests}/ui/error-codes/E0199.stderr | 0 {src/test => tests}/ui/error-codes/E0200.rs | 0 {src/test => tests}/ui/error-codes/E0200.stderr | 0 {src/test => tests}/ui/error-codes/E0201.rs | 0 {src/test => tests}/ui/error-codes/E0201.stderr | 0 {src/test => tests}/ui/error-codes/E0206.rs | 0 {src/test => tests}/ui/error-codes/E0206.stderr | 0 {src/test => tests}/ui/error-codes/E0207.rs | 0 {src/test => tests}/ui/error-codes/E0207.stderr | 0 {src/test => tests}/ui/error-codes/E0214.rs | 0 {src/test => tests}/ui/error-codes/E0214.stderr | 0 {src/test => tests}/ui/error-codes/E0220.rs | 0 {src/test => tests}/ui/error-codes/E0220.stderr | 0 {src/test => tests}/ui/error-codes/E0221.rs | 0 {src/test => tests}/ui/error-codes/E0221.stderr | 0 {src/test => tests}/ui/error-codes/E0223.rs | 0 {src/test => tests}/ui/error-codes/E0223.stderr | 0 {src/test => tests}/ui/error-codes/E0225.rs | 0 {src/test => tests}/ui/error-codes/E0225.stderr | 0 {src/test => tests}/ui/error-codes/E0227.rs | 0 {src/test => tests}/ui/error-codes/E0227.stderr | 0 {src/test => tests}/ui/error-codes/E0229.rs | 0 {src/test => tests}/ui/error-codes/E0229.stderr | 0 {src/test => tests}/ui/error-codes/E0252.rs | 0 {src/test => tests}/ui/error-codes/E0252.stderr | 0 {src/test => tests}/ui/error-codes/E0253.rs | 0 {src/test => tests}/ui/error-codes/E0253.stderr | 0 {src/test => tests}/ui/error-codes/E0254.rs | 0 {src/test => tests}/ui/error-codes/E0254.stderr | 0 {src/test => tests}/ui/error-codes/E0255.rs | 0 {src/test => tests}/ui/error-codes/E0255.stderr | 0 {src/test => tests}/ui/error-codes/E0259.rs | 0 {src/test => tests}/ui/error-codes/E0259.stderr | 0 {src/test => tests}/ui/error-codes/E0260.rs | 0 {src/test => tests}/ui/error-codes/E0260.stderr | 0 {src/test => tests}/ui/error-codes/E0261.rs | 0 {src/test => tests}/ui/error-codes/E0261.stderr | 0 {src/test => tests}/ui/error-codes/E0262.rs | 0 {src/test => tests}/ui/error-codes/E0262.stderr | 0 {src/test => tests}/ui/error-codes/E0263.rs | 0 {src/test => tests}/ui/error-codes/E0263.stderr | 0 {src/test => tests}/ui/error-codes/E0264.rs | 0 {src/test => tests}/ui/error-codes/E0264.stderr | 0 {src/test => tests}/ui/error-codes/E0267.rs | 0 {src/test => tests}/ui/error-codes/E0267.stderr | 0 {src/test => tests}/ui/error-codes/E0268.rs | 0 {src/test => tests}/ui/error-codes/E0268.stderr | 0 {src/test => tests}/ui/error-codes/E0271.rs | 0 {src/test => tests}/ui/error-codes/E0271.stderr | 0 {src/test => tests}/ui/error-codes/E0275.rs | 0 {src/test => tests}/ui/error-codes/E0275.stderr | 0 {src/test => tests}/ui/error-codes/E0276.rs | 0 {src/test => tests}/ui/error-codes/E0276.stderr | 0 {src/test => tests}/ui/error-codes/E0277-2.rs | 0 {src/test => tests}/ui/error-codes/E0277-2.stderr | 0 {src/test => tests}/ui/error-codes/E0277-3.rs | 0 {src/test => tests}/ui/error-codes/E0277-3.stderr | 0 {src/test => tests}/ui/error-codes/E0277.rs | 0 {src/test => tests}/ui/error-codes/E0277.stderr | 0 {src/test => tests}/ui/error-codes/E0282.rs | 0 {src/test => tests}/ui/error-codes/E0282.stderr | 0 {src/test => tests}/ui/error-codes/E0283.rs | 0 {src/test => tests}/ui/error-codes/E0283.stderr | 0 {src/test => tests}/ui/error-codes/E0297.rs | 0 {src/test => tests}/ui/error-codes/E0297.stderr | 0 {src/test => tests}/ui/error-codes/E0308-2.rs | 0 {src/test => tests}/ui/error-codes/E0308-2.stderr | 0 {src/test => tests}/ui/error-codes/E0308-4.rs | 0 {src/test => tests}/ui/error-codes/E0308-4.stderr | 0 {src/test => tests}/ui/error-codes/E0308.rs | 0 {src/test => tests}/ui/error-codes/E0308.stderr | 0 {src/test => tests}/ui/error-codes/E0311.rs | 0 {src/test => tests}/ui/error-codes/E0311.stderr | 0 {src/test => tests}/ui/error-codes/E0328.rs | 0 {src/test => tests}/ui/error-codes/E0328.stderr | 0 {src/test => tests}/ui/error-codes/E0365.rs | 0 {src/test => tests}/ui/error-codes/E0365.stderr | 0 {src/test => tests}/ui/error-codes/E0370.rs | 0 {src/test => tests}/ui/error-codes/E0370.stderr | 0 {src/test => tests}/ui/error-codes/E0374.rs | 0 {src/test => tests}/ui/error-codes/E0374.stderr | 0 {src/test => tests}/ui/error-codes/E0375.rs | 0 {src/test => tests}/ui/error-codes/E0375.stderr | 0 {src/test => tests}/ui/error-codes/E0376.rs | 0 {src/test => tests}/ui/error-codes/E0376.stderr | 0 {src/test => tests}/ui/error-codes/E0377.rs | 0 {src/test => tests}/ui/error-codes/E0377.stderr | 0 {src/test => tests}/ui/error-codes/E0388.rs | 0 {src/test => tests}/ui/error-codes/E0388.stderr | 0 {src/test => tests}/ui/error-codes/E0389.rs | 0 {src/test => tests}/ui/error-codes/E0389.stderr | 0 {src/test => tests}/ui/error-codes/E0390.rs | 0 {src/test => tests}/ui/error-codes/E0390.stderr | 0 {src/test => tests}/ui/error-codes/E0392.rs | 0 {src/test => tests}/ui/error-codes/E0392.stderr | 0 {src/test => tests}/ui/error-codes/E0393.rs | 0 {src/test => tests}/ui/error-codes/E0393.stderr | 0 {src/test => tests}/ui/error-codes/E0396-fixed.rs | 0 .../ui/error-codes/E0396-fixed.stderr | 0 {src/test => tests}/ui/error-codes/E0396.rs | 0 {src/test => tests}/ui/error-codes/E0396.stderr | 0 {src/test => tests}/ui/error-codes/E0401.rs | 0 {src/test => tests}/ui/error-codes/E0401.stderr | 0 {src/test => tests}/ui/error-codes/E0403.rs | 0 {src/test => tests}/ui/error-codes/E0403.stderr | 0 {src/test => tests}/ui/error-codes/E0404.rs | 0 {src/test => tests}/ui/error-codes/E0404.stderr | 0 {src/test => tests}/ui/error-codes/E0405.rs | 0 {src/test => tests}/ui/error-codes/E0405.stderr | 0 {src/test => tests}/ui/error-codes/E0407.rs | 0 {src/test => tests}/ui/error-codes/E0407.stderr | 0 {src/test => tests}/ui/error-codes/E0408.rs | 0 {src/test => tests}/ui/error-codes/E0408.stderr | 0 {src/test => tests}/ui/error-codes/E0411.rs | 0 {src/test => tests}/ui/error-codes/E0411.stderr | 0 {src/test => tests}/ui/error-codes/E0412.rs | 0 {src/test => tests}/ui/error-codes/E0412.stderr | 0 {src/test => tests}/ui/error-codes/E0415.rs | 0 {src/test => tests}/ui/error-codes/E0415.stderr | 0 {src/test => tests}/ui/error-codes/E0416.rs | 0 {src/test => tests}/ui/error-codes/E0416.stderr | 0 {src/test => tests}/ui/error-codes/E0423.rs | 0 {src/test => tests}/ui/error-codes/E0423.stderr | 0 {src/test => tests}/ui/error-codes/E0424.rs | 0 {src/test => tests}/ui/error-codes/E0424.stderr | 0 {src/test => tests}/ui/error-codes/E0425.rs | 0 {src/test => tests}/ui/error-codes/E0425.stderr | 0 {src/test => tests}/ui/error-codes/E0426.rs | 0 {src/test => tests}/ui/error-codes/E0426.stderr | 0 {src/test => tests}/ui/error-codes/E0428.rs | 0 {src/test => tests}/ui/error-codes/E0428.stderr | 0 {src/test => tests}/ui/error-codes/E0429.rs | 0 {src/test => tests}/ui/error-codes/E0429.stderr | 0 {src/test => tests}/ui/error-codes/E0430.rs | 0 {src/test => tests}/ui/error-codes/E0430.stderr | 0 {src/test => tests}/ui/error-codes/E0431.rs | 0 {src/test => tests}/ui/error-codes/E0431.stderr | 0 {src/test => tests}/ui/error-codes/E0432.rs | 0 {src/test => tests}/ui/error-codes/E0432.stderr | 0 {src/test => tests}/ui/error-codes/E0433.rs | 0 {src/test => tests}/ui/error-codes/E0433.stderr | 0 {src/test => tests}/ui/error-codes/E0434.rs | 0 {src/test => tests}/ui/error-codes/E0434.stderr | 0 {src/test => tests}/ui/error-codes/E0435.fixed | 0 {src/test => tests}/ui/error-codes/E0435.rs | 0 {src/test => tests}/ui/error-codes/E0435.stderr | 0 {src/test => tests}/ui/error-codes/E0437.rs | 0 {src/test => tests}/ui/error-codes/E0437.stderr | 0 {src/test => tests}/ui/error-codes/E0438.rs | 0 {src/test => tests}/ui/error-codes/E0438.stderr | 0 {src/test => tests}/ui/error-codes/E0445.rs | 0 {src/test => tests}/ui/error-codes/E0445.stderr | 0 {src/test => tests}/ui/error-codes/E0446.rs | 0 {src/test => tests}/ui/error-codes/E0446.stderr | 0 {src/test => tests}/ui/error-codes/E0449.rs | 0 {src/test => tests}/ui/error-codes/E0449.stderr | 0 {src/test => tests}/ui/error-codes/E0451.rs | 0 {src/test => tests}/ui/error-codes/E0451.stderr | 0 {src/test => tests}/ui/error-codes/E0452.rs | 0 {src/test => tests}/ui/error-codes/E0452.stderr | 0 {src/test => tests}/ui/error-codes/E0453.rs | 0 {src/test => tests}/ui/error-codes/E0453.stderr | 0 {src/test => tests}/ui/error-codes/E0454.rs | 0 {src/test => tests}/ui/error-codes/E0454.stderr | 0 {src/test => tests}/ui/error-codes/E0458.rs | 0 {src/test => tests}/ui/error-codes/E0458.stderr | 0 {src/test => tests}/ui/error-codes/E0459.rs | 0 {src/test => tests}/ui/error-codes/E0459.stderr | 0 {src/test => tests}/ui/error-codes/E0462.rs | 0 {src/test => tests}/ui/error-codes/E0462.stderr | 0 {src/test => tests}/ui/error-codes/E0463.rs | 0 {src/test => tests}/ui/error-codes/E0463.stderr | 0 {src/test => tests}/ui/error-codes/E0464.rs | 0 {src/test => tests}/ui/error-codes/E0464.stderr | 0 {src/test => tests}/ui/error-codes/E0478.rs | 0 {src/test => tests}/ui/error-codes/E0478.stderr | 0 {src/test => tests}/ui/error-codes/E0492.rs | 0 {src/test => tests}/ui/error-codes/E0492.stderr | 0 {src/test => tests}/ui/error-codes/E0496.rs | 0 {src/test => tests}/ui/error-codes/E0496.stderr | 0 {src/test => tests}/ui/error-codes/E0499.rs | 0 {src/test => tests}/ui/error-codes/E0499.stderr | 0 {src/test => tests}/ui/error-codes/E0501.rs | 0 {src/test => tests}/ui/error-codes/E0501.stderr | 0 {src/test => tests}/ui/error-codes/E0502.rs | 0 {src/test => tests}/ui/error-codes/E0502.stderr | 0 {src/test => tests}/ui/error-codes/E0503.rs | 0 {src/test => tests}/ui/error-codes/E0503.stderr | 0 {src/test => tests}/ui/error-codes/E0504.rs | 0 {src/test => tests}/ui/error-codes/E0504.stderr | 0 {src/test => tests}/ui/error-codes/E0505.rs | 0 {src/test => tests}/ui/error-codes/E0505.stderr | 0 {src/test => tests}/ui/error-codes/E0506.rs | 0 {src/test => tests}/ui/error-codes/E0506.stderr | 0 {src/test => tests}/ui/error-codes/E0507.rs | 0 {src/test => tests}/ui/error-codes/E0507.stderr | 0 {src/test => tests}/ui/error-codes/E0508-fail.rs | 0 .../test => tests}/ui/error-codes/E0508-fail.stderr | 0 {src/test => tests}/ui/error-codes/E0508.rs | 0 {src/test => tests}/ui/error-codes/E0508.stderr | 0 {src/test => tests}/ui/error-codes/E0509.rs | 0 {src/test => tests}/ui/error-codes/E0509.stderr | 0 {src/test => tests}/ui/error-codes/E0511.rs | 0 {src/test => tests}/ui/error-codes/E0511.stderr | 0 {src/test => tests}/ui/error-codes/E0512.rs | 0 {src/test => tests}/ui/error-codes/E0512.stderr | 0 {src/test => tests}/ui/error-codes/E0516.rs | 0 {src/test => tests}/ui/error-codes/E0516.stderr | 0 {src/test => tests}/ui/error-codes/E0517.rs | 0 {src/test => tests}/ui/error-codes/E0517.stderr | 0 {src/test => tests}/ui/error-codes/E0518.rs | 0 {src/test => tests}/ui/error-codes/E0518.stderr | 0 {src/test => tests}/ui/error-codes/E0519.rs | 0 {src/test => tests}/ui/error-codes/E0519.stderr | 0 {src/test => tests}/ui/error-codes/E0520.rs | 0 {src/test => tests}/ui/error-codes/E0520.stderr | 0 {src/test => tests}/ui/error-codes/E0522.rs | 0 {src/test => tests}/ui/error-codes/E0522.stderr | 0 {src/test => tests}/ui/error-codes/E0527.rs | 0 {src/test => tests}/ui/error-codes/E0527.stderr | 0 {src/test => tests}/ui/error-codes/E0528.rs | 0 {src/test => tests}/ui/error-codes/E0528.stderr | 0 {src/test => tests}/ui/error-codes/E0529.rs | 0 {src/test => tests}/ui/error-codes/E0529.stderr | 0 {src/test => tests}/ui/error-codes/E0530.rs | 0 {src/test => tests}/ui/error-codes/E0530.stderr | 0 {src/test => tests}/ui/error-codes/E0532.rs | 0 {src/test => tests}/ui/error-codes/E0532.stderr | 0 {src/test => tests}/ui/error-codes/E0534.rs | 0 {src/test => tests}/ui/error-codes/E0534.stderr | 0 {src/test => tests}/ui/error-codes/E0559.rs | 0 {src/test => tests}/ui/error-codes/E0559.stderr | 0 {src/test => tests}/ui/error-codes/E0560.rs | 0 {src/test => tests}/ui/error-codes/E0560.stderr | 0 {src/test => tests}/ui/error-codes/E0565-1.rs | 0 {src/test => tests}/ui/error-codes/E0565-1.stderr | 0 {src/test => tests}/ui/error-codes/E0565-2.rs | 0 {src/test => tests}/ui/error-codes/E0565-2.stderr | 0 {src/test => tests}/ui/error-codes/E0565.rs | 0 {src/test => tests}/ui/error-codes/E0565.stderr | 0 {src/test => tests}/ui/error-codes/E0572.rs | 0 {src/test => tests}/ui/error-codes/E0572.stderr | 0 {src/test => tests}/ui/error-codes/E0582.rs | 0 {src/test => tests}/ui/error-codes/E0582.stderr | 0 {src/test => tests}/ui/error-codes/E0583.rs | 0 {src/test => tests}/ui/error-codes/E0583.stderr | 0 {src/test => tests}/ui/error-codes/E0585.rs | 0 {src/test => tests}/ui/error-codes/E0585.stderr | 0 {src/test => tests}/ui/error-codes/E0586.rs | 0 {src/test => tests}/ui/error-codes/E0586.stderr | 0 {src/test => tests}/ui/error-codes/E0594.rs | 0 {src/test => tests}/ui/error-codes/E0594.stderr | 0 {src/test => tests}/ui/error-codes/E0596.rs | 0 {src/test => tests}/ui/error-codes/E0596.stderr | 0 {src/test => tests}/ui/error-codes/E0597.rs | 0 {src/test => tests}/ui/error-codes/E0597.stderr | 0 {src/test => tests}/ui/error-codes/E0599.rs | 0 {src/test => tests}/ui/error-codes/E0599.stderr | 0 {src/test => tests}/ui/error-codes/E0600.rs | 0 {src/test => tests}/ui/error-codes/E0600.stderr | 0 {src/test => tests}/ui/error-codes/E0601.rs | 0 {src/test => tests}/ui/error-codes/E0601.stderr | 0 {src/test => tests}/ui/error-codes/E0602.rs | 0 {src/test => tests}/ui/error-codes/E0602.stderr | 0 {src/test => tests}/ui/error-codes/E0603.rs | 0 {src/test => tests}/ui/error-codes/E0603.stderr | 0 {src/test => tests}/ui/error-codes/E0604.rs | 0 {src/test => tests}/ui/error-codes/E0604.stderr | 0 {src/test => tests}/ui/error-codes/E0605.rs | 0 {src/test => tests}/ui/error-codes/E0605.stderr | 0 {src/test => tests}/ui/error-codes/E0606.rs | 0 {src/test => tests}/ui/error-codes/E0606.stderr | 0 {src/test => tests}/ui/error-codes/E0607.rs | 0 {src/test => tests}/ui/error-codes/E0607.stderr | 0 {src/test => tests}/ui/error-codes/E0608.rs | 0 {src/test => tests}/ui/error-codes/E0608.stderr | 0 {src/test => tests}/ui/error-codes/E0609.rs | 0 {src/test => tests}/ui/error-codes/E0609.stderr | 0 {src/test => tests}/ui/error-codes/E0610.rs | 0 {src/test => tests}/ui/error-codes/E0610.stderr | 0 {src/test => tests}/ui/error-codes/E0614.rs | 0 {src/test => tests}/ui/error-codes/E0614.stderr | 0 {src/test => tests}/ui/error-codes/E0615.rs | 0 {src/test => tests}/ui/error-codes/E0615.stderr | 0 {src/test => tests}/ui/error-codes/E0616.rs | 0 {src/test => tests}/ui/error-codes/E0616.stderr | 0 {src/test => tests}/ui/error-codes/E0617.rs | 0 {src/test => tests}/ui/error-codes/E0617.stderr | 0 {src/test => tests}/ui/error-codes/E0618.rs | 0 {src/test => tests}/ui/error-codes/E0618.stderr | 0 {src/test => tests}/ui/error-codes/E0620.rs | 0 {src/test => tests}/ui/error-codes/E0620.stderr | 0 .../E0621-does-not-trigger-for-closures.rs | 0 .../E0621-does-not-trigger-for-closures.stderr | 0 {src/test => tests}/ui/error-codes/E0622.rs | 0 {src/test => tests}/ui/error-codes/E0622.stderr | 0 {src/test => tests}/ui/error-codes/E0624.rs | 0 {src/test => tests}/ui/error-codes/E0624.stderr | 0 {src/test => tests}/ui/error-codes/E0637.rs | 0 {src/test => tests}/ui/error-codes/E0637.stderr | 0 {src/test => tests}/ui/error-codes/E0642.fixed | 0 {src/test => tests}/ui/error-codes/E0642.rs | 0 {src/test => tests}/ui/error-codes/E0642.stderr | 0 {src/test => tests}/ui/error-codes/E0646.rs | 0 {src/test => tests}/ui/error-codes/E0646.stderr | 0 {src/test => tests}/ui/error-codes/E0647.rs | 0 {src/test => tests}/ui/error-codes/E0647.stderr | 0 {src/test => tests}/ui/error-codes/E0648.rs | 0 {src/test => tests}/ui/error-codes/E0648.stderr | 0 {src/test => tests}/ui/error-codes/E0657.rs | 0 {src/test => tests}/ui/error-codes/E0657.stderr | 0 {src/test => tests}/ui/error-codes/E0658.rs | 0 {src/test => tests}/ui/error-codes/E0658.stderr | 0 {src/test => tests}/ui/error-codes/E0659.rs | 0 {src/test => tests}/ui/error-codes/E0659.stderr | 0 {src/test => tests}/ui/error-codes/E0705.rs | 0 {src/test => tests}/ui/error-codes/E0705.stderr | 0 {src/test => tests}/ui/error-codes/E0711.rs | 0 {src/test => tests}/ui/error-codes/E0711.stderr | 0 {src/test => tests}/ui/error-codes/E0718.rs | 0 {src/test => tests}/ui/error-codes/E0718.stderr | 0 {src/test => tests}/ui/error-codes/E0719.rs | 0 {src/test => tests}/ui/error-codes/E0719.stderr | 0 {src/test => tests}/ui/error-codes/E0730.rs | 0 {src/test => tests}/ui/error-codes/E0730.stderr | 0 {src/test => tests}/ui/error-codes/E0746.fixed | 0 {src/test => tests}/ui/error-codes/E0746.rs | 0 {src/test => tests}/ui/error-codes/E0746.stderr | 0 {src/test => tests}/ui/error-codes/E0767.rs | 0 {src/test => tests}/ui/error-codes/E0767.stderr | 0 {src/test => tests}/ui/error-codes/E0771.rs | 0 {src/test => tests}/ui/error-codes/E0771.stderr | 0 {src/test => tests}/ui/error-codes/E0777.rs | 0 {src/test => tests}/ui/error-codes/E0777.stderr | 0 {src/test => tests}/ui/error-codes/E0778.rs | 0 {src/test => tests}/ui/error-codes/E0778.stderr | 0 {src/test => tests}/ui/error-codes/E0779.rs | 0 {src/test => tests}/ui/error-codes/E0779.stderr | 0 {src/test => tests}/ui/error-codes/E0790.rs | 0 {src/test => tests}/ui/error-codes/E0790.stderr | 0 .../ui/error-codes/auxiliary/crateresolve1-1.rs | 0 .../ui/error-codes/auxiliary/crateresolve1-2.rs | 0 .../ui/error-codes/auxiliary/crateresolve1-3.rs | 0 .../ui/error-codes/auxiliary/found-staticlib.rs | 0 .../e0119/auxiliary/complex_impl_support.rs | 0 .../ui/error-codes/e0119/auxiliary/issue-23563-a.rs | 0 .../ui/error-codes/e0119/complex-impl.rs | 0 .../ui/error-codes/e0119/complex-impl.stderr | 0 .../ui/error-codes/e0119/conflict-with-std.rs | 0 .../ui/error-codes/e0119/conflict-with-std.stderr | 0 .../ui/error-codes/e0119/issue-23563.rs | 0 .../ui/error-codes/e0119/issue-23563.stderr | 0 .../ui/error-codes/e0119/issue-27403.rs | 0 .../ui/error-codes/e0119/issue-27403.stderr | 0 .../ui/error-codes/e0119/issue-28981.rs | 0 .../ui/error-codes/e0119/issue-28981.stderr | 0 .../ui/error-codes/e0119/so-37347311.rs | 0 .../ui/error-codes/e0119/so-37347311.stderr | 0 {src/test => tests}/ui/error-codes/ex-E0611.rs | 0 {src/test => tests}/ui/error-codes/ex-E0611.stderr | 0 {src/test => tests}/ui/error-codes/ex-E0612.rs | 0 {src/test => tests}/ui/error-codes/ex-E0612.stderr | 0 {src/test => tests}/ui/error-festival.rs | 0 {src/test => tests}/ui/error-festival.stderr | 0 .../ui/error-should-say-copy-not-pod.rs | 0 .../ui/error-should-say-copy-not-pod.stderr | 0 .../ui/errors/issue-104621-extern-bad-file.rs | 0 .../ui/errors/issue-104621-extern-bad-file.stderr | 0 .../ui/errors/issue-104621-extern-not-file.rs | 0 .../ui/errors/issue-104621-extern-not-file.stderr | 0 .../issue-89280-emitter-overflow-splice-lines.rs | 0 ...issue-89280-emitter-overflow-splice-lines.stderr | 0 .../ui/errors/issue-99572-impl-trait-on-pointer.rs | 0 .../errors/issue-99572-impl-trait-on-pointer.stderr | 0 {src/test => tests}/ui/exclusive-drop-and-copy.rs | 0 .../ui/exclusive-drop-and-copy.stderr | 0 {src/test => tests}/ui/exec-env.rs | 0 {src/test => tests}/ui/explain.rs | 0 {src/test => tests}/ui/explain.stdout | 0 {src/test => tests}/ui/explicit-i-suffix.rs | 0 .../ui/explicit/explicit-call-to-dtor.fixed | 0 .../ui/explicit/explicit-call-to-dtor.rs | 0 .../ui/explicit/explicit-call-to-dtor.stderr | 0 .../explicit/explicit-call-to-supertrait-dtor.fixed | 0 .../ui/explicit/explicit-call-to-supertrait-dtor.rs | 0 .../explicit-call-to-supertrait-dtor.stderr | 0 .../ui/explicit/explicit-self-lifetime-mismatch.rs | 0 .../explicit/explicit-self-lifetime-mismatch.stderr | 0 {src/test => tests}/ui/explore-issue-38412.rs | 0 {src/test => tests}/ui/explore-issue-38412.stderr | 0 {src/test => tests}/ui/expr-block-fn.rs | 0 .../test => tests}/ui/expr-block-generic-unique1.rs | 0 .../test => tests}/ui/expr-block-generic-unique2.rs | 0 {src/test => tests}/ui/expr-block-generic.rs | 0 {src/test => tests}/ui/expr-block.rs | 0 {src/test => tests}/ui/expr-copy.rs | 0 {src/test => tests}/ui/expr-if-generic.rs | 0 {src/test => tests}/ui/expr-if-panic-all.rs | 0 {src/test => tests}/ui/expr-if-unique.rs | 0 {src/test => tests}/ui/expr-scope.rs | 0 .../ui/expr/compound-assignment/eval-order.rs | 0 {src/test => tests}/ui/expr/if-bot.rs | 0 {src/test => tests}/ui/expr/if/attrs/bad-cfg.rs | 0 {src/test => tests}/ui/expr/if/attrs/bad-cfg.stderr | 0 .../ui/expr/if/attrs/builtin-if-attr.rs | 0 .../ui/expr/if/attrs/cfg-false-if-attr.rs | 0 {src/test => tests}/ui/expr/if/attrs/else-attrs.rs | 0 .../ui/expr/if/attrs/else-attrs.stderr | 0 .../ui/expr/if/attrs/gate-whole-expr.rs | 0 .../ui/expr/if/attrs/let-chains-attr.rs | 0 .../ui/expr/if/attrs/stmt-expr-gated.rs | 0 .../ui/expr/if/attrs/stmt-expr-gated.stderr | 0 .../ui/expr/if/bad-if-let-suggestion.rs | 0 .../ui/expr/if/bad-if-let-suggestion.stderr | 0 {src/test => tests}/ui/expr/if/expr-if-panic-fn.rs | 0 .../test => tests}/ui/expr/if/expr-if-panic-pass.rs | 0 {src/test => tests}/ui/expr/if/expr-if-panic.rs | 0 {src/test => tests}/ui/expr/if/expr-if.rs | 0 {src/test => tests}/ui/expr/if/if-branch-types.rs | 0 .../ui/expr/if/if-branch-types.stderr | 0 {src/test => tests}/ui/expr/if/if-check-panic.rs | 0 {src/test => tests}/ui/expr/if/if-check.rs | 0 {src/test => tests}/ui/expr/if/if-cond-bot.rs | 0 .../ui/expr/if/if-else-type-mismatch.rs | 0 .../ui/expr/if/if-else-type-mismatch.stderr | 0 {src/test => tests}/ui/expr/if/if-let-arm-types.rs | 0 .../ui/expr/if/if-let-arm-types.stderr | 0 {src/test => tests}/ui/expr/if/if-let.rs | 0 {src/test => tests}/ui/expr/if/if-let.stderr | 0 {src/test => tests}/ui/expr/if/if-loop.rs | 0 .../ui/expr/if/if-no-match-bindings.rs | 0 .../ui/expr/if/if-no-match-bindings.stderr | 0 {src/test => tests}/ui/expr/if/if-ret.rs | 0 {src/test => tests}/ui/expr/if/if-ret.stderr | 0 {src/test => tests}/ui/expr/if/if-typeck.rs | 0 {src/test => tests}/ui/expr/if/if-typeck.stderr | 0 {src/test => tests}/ui/expr/if/if-without-block.rs | 0 .../ui/expr/if/if-without-block.stderr | 0 .../ui/expr/if/if-without-else-as-fn-expr.rs | 0 .../ui/expr/if/if-without-else-as-fn-expr.stderr | 0 .../ui/expr/if/if-without-else-result.rs | 0 .../ui/expr/if/if-without-else-result.stderr | 0 {src/test => tests}/ui/expr/if/issue-4201.rs | 0 {src/test => tests}/ui/expr/if/issue-4201.stderr | 0 .../missing_braces_around_block.fixed | 0 .../missing_braces_around_block.rs | 0 .../missing_braces_around_block.stderr | 0 .../ui/expr/malformed_closure/ruby_style_closure.rs | 0 .../malformed_closure/ruby_style_closure.stderr | 0 {src/test => tests}/ui/ext-expand-inner-exprs.rs | 0 {src/test => tests}/ui/ext-nonexistent.rs | 0 {src/test => tests}/ui/ext-nonexistent.stderr | 0 .../ui/extenv/extenv-arg-2-not-string-literal.rs | 0 .../extenv/extenv-arg-2-not-string-literal.stderr | 0 {src/test => tests}/ui/extenv/extenv-no-args.rs | 0 {src/test => tests}/ui/extenv/extenv-no-args.stderr | 0 .../ui/extenv/extenv-not-defined-custom.rs | 0 .../ui/extenv/extenv-not-defined-custom.stderr | 0 .../ui/extenv/extenv-not-defined-default.rs | 0 .../ui/extenv/extenv-not-defined-default.stderr | 0 .../ui/extenv/extenv-not-string-literal.rs | 0 .../ui/extenv/extenv-not-string-literal.stderr | 0 .../ui/extenv/extenv-too-many-args.rs | 0 .../ui/extenv/extenv-too-many-args.stderr | 0 {src/test => tests}/ui/extenv/issue-55897.rs | 0 {src/test => tests}/ui/extenv/issue-55897.stderr | 0 .../ui/extern-flag/auxiliary/somedep.rs | 0 .../ui/extern-flag/empty-extern-arg.rs | 0 .../ui/extern-flag/empty-extern-arg.stderr | 0 {src/test => tests}/ui/extern-flag/multiple-opts.rs | 0 .../ui/extern-flag/multiple-opts.stderr | 0 {src/test => tests}/ui/extern-flag/no-nounused.rs | 0 .../ui/extern-flag/no-nounused.stderr | 0 .../ui/extern-flag/noprelude-and-prelude.rs | 0 .../ui/extern-flag/noprelude-resolves.rs | 0 {src/test => tests}/ui/extern-flag/noprelude.rs | 0 {src/test => tests}/ui/extern-flag/noprelude.stderr | 0 {src/test => tests}/ui/extern-flag/nounused.rs | 0 .../ui/extern-flag/public-and-private.rs | 0 .../ui/extern-flag/public-and-private.stderr | 0 .../ui/extern/auxiliary/extern-take-value.rs | 0 .../extern/auxiliary/extern-types-inherent-impl.rs | 0 .../extern/auxiliary/extern_calling_convention.rs | 0 .../ui/extern/auxiliary/extern_mod_ordering_lib.rs | 0 {src/test => tests}/ui/extern/auxiliary/fat_drop.rs | 0 .../ui/extern/auxiliary/invalid-utf8.txt | 0 .../ui/extern/auxiliary/issue-80074-macro.rs | 0 {src/test => tests}/ui/extern/auxiliary/m1.rs | 0 {src/test => tests}/ui/extern/auxiliary/m2.rs | 0 .../ui/extern/auxiliary/no-mangle-associated-fn.rs | 0 .../extern/auxiliary/reexport-should-still-link.rs | 0 {src/test => tests}/ui/extern/extern-1.rs | 0 .../ui/extern/extern-calling-convention-test.rs | 0 .../ui/extern/extern-compare-with-return-type.rs | 0 {src/test => tests}/ui/extern/extern-const.fixed | 0 {src/test => tests}/ui/extern/extern-const.rs | 0 {src/test => tests}/ui/extern/extern-const.stderr | 0 .../ui/extern/extern-crate-multiple-missing.rs | 0 .../ui/extern/extern-crate-multiple-missing.stderr | 0 .../test => tests}/ui/extern/extern-crate-rename.rs | 0 .../ui/extern/extern-crate-rename.stderr | 0 .../ui/extern/extern-crate-visibility.rs | 0 .../ui/extern/extern-crate-visibility.stderr | 0 .../ui/extern/extern-ffi-fn-with-body.rs | 0 .../ui/extern/extern-ffi-fn-with-body.stderr | 0 .../ui/extern/extern-foreign-crate.rs | 0 {src/test => tests}/ui/extern/extern-macro.rs | 0 {src/test => tests}/ui/extern/extern-macro.stderr | 0 {src/test => tests}/ui/extern/extern-main-fn.rs | 0 {src/test => tests}/ui/extern/extern-main-fn.stderr | 0 .../ui/extern/extern-main-issue-86110.rs | 0 .../ui/extern/extern-main-issue-86110.stderr | 0 {src/test => tests}/ui/extern/extern-methods.rs | 0 {src/test => tests}/ui/extern/extern-mod-abi.rs | 0 .../ui/extern/extern-mod-ordering-exe.rs | 0 {src/test => tests}/ui/extern/extern-no-mangle.rs | 0 .../ui/extern/extern-no-mangle.stderr | 0 .../test => tests}/ui/extern/extern-prelude-core.rs | 0 .../ui/extern/extern-prelude-no-speculative.rs | 0 {src/test => tests}/ui/extern/extern-prelude-std.rs | 0 {src/test => tests}/ui/extern/extern-pub.rs | 0 {src/test => tests}/ui/extern/extern-rust.rs | 0 .../ui/extern/extern-static-size-overflow.rs | 0 .../ui/extern/extern-static-size-overflow.stderr | 0 {src/test => tests}/ui/extern/extern-take-value.rs | 0 {src/test => tests}/ui/extern/extern-thiscall.rs | 0 .../ui/extern/extern-type-diag-not-similar.rs | 0 .../ui/extern/extern-type-diag-not-similar.stderr | 0 .../ui/extern/extern-types-distinct-types.rs | 0 .../ui/extern/extern-types-distinct-types.stderr | 0 .../ui/extern/extern-types-inherent-impl.rs | 0 .../ui/extern/extern-types-manual-sync-send.rs | 0 .../ui/extern/extern-types-not-sync-send.rs | 0 .../ui/extern/extern-types-not-sync-send.stderr | 0 .../ui/extern/extern-types-pointer-cast.rs | 0 .../ui/extern/extern-types-size_of_val.rs | 0 .../ui/extern/extern-types-thin-pointer.rs | 0 .../ui/extern/extern-types-trait-impl.rs | 0 .../ui/extern/extern-types-unsized.rs | 0 .../ui/extern/extern-types-unsized.stderr | 0 {src/test => tests}/ui/extern/extern-vectorcall.rs | 0 .../ui/extern/extern-with-type-bounds.rs | 0 .../ui/extern/extern-with-type-bounds.stderr | 0 .../ui/extern/extern-wrong-value-type.rs | 0 .../ui/extern/extern-wrong-value-type.stderr | 0 {src/test => tests}/ui/extern/extern_fat_drop.rs | 0 {src/test => tests}/ui/extern/issue-10025.rs | 0 {src/test => tests}/ui/extern/issue-10763.rs | 0 {src/test => tests}/ui/extern/issue-10764-rpass.rs | 0 {src/test => tests}/ui/extern/issue-13655.rs | 0 .../test => tests}/ui/extern/issue-28324.mir.stderr | 0 {src/test => tests}/ui/extern/issue-28324.rs | 0 .../ui/extern/issue-28324.thir.stderr | 0 .../ui/extern/issue-36122-accessing-externed-dst.rs | 0 .../issue-36122-accessing-externed-dst.stderr | 0 ...4655-allow-unwind-when-calling-panic-directly.rs | 0 .../issue-64655-extern-rust-must-allow-unwind.rs | 0 {src/test => tests}/ui/extern/issue-80074.rs | 0 {src/test => tests}/ui/extern/issue-95829.rs | 0 {src/test => tests}/ui/extern/issue-95829.stderr | 0 .../ui/extern/no-mangle-associated-fn.rs | 0 {src/test => tests}/ui/extern/not-in-block.rs | 0 {src/test => tests}/ui/extern/not-in-block.stderr | 0 {src/test => tests}/ui/extoption_env-no-args.rs | 0 {src/test => tests}/ui/extoption_env-no-args.stderr | 0 {src/test => tests}/ui/extoption_env-not-defined.rs | 0 .../ui/extoption_env-not-string-literal.rs | 0 .../ui/extoption_env-not-string-literal.stderr | 0 .../ui/extoption_env-too-many-args.rs | 0 .../ui/extoption_env-too-many-args.stderr | 0 {src/test => tests}/ui/fact.rs | 0 {src/test => tests}/ui/fail-simple.rs | 0 {src/test => tests}/ui/fail-simple.stderr | 0 .../ui/feature-gates/allow-features-empty.rs | 0 .../ui/feature-gates/allow-features-empty.stderr | 0 .../ui/feature-gates/allow-features.rs | 0 .../ui/feature-gates/allow-features.stderr | 0 .../auxiliary/cfg-target-thread-local.rs | 0 .../auxiliary/debugger-visualizer.natvis | 0 .../ui/feature-gates/auxiliary/pub_dep.rs | 0 .../auxiliary/re_rebalance_coherence_lib.rs | 0 {src/test => tests}/ui/feature-gates/bench.rs | 0 {src/test => tests}/ui/feature-gates/bench.stderr | 0 .../ui/feature-gates/duplicate-features.rs | 0 .../ui/feature-gates/duplicate-features.stderr | 0 .../feature-gates/feature-gate-abi-avr-interrupt.rs | 0 .../feature-gate-abi-avr-interrupt.stderr | 0 .../ui/feature-gates/feature-gate-abi-efiapi.rs | 0 .../ui/feature-gates/feature-gate-abi-efiapi.stderr | 0 .../feature-gate-abi-msp430-interrupt.rs | 0 .../feature-gate-abi-msp430-interrupt.stderr | 0 .../feature-gates/feature-gate-abi-x86-interrupt.rs | 0 .../feature-gate-abi-x86-interrupt.stderr | 0 .../ui/feature-gates/feature-gate-abi.rs | 0 .../ui/feature-gates/feature-gate-abi.stderr | 0 .../feature-gates/feature-gate-abi_amdgpu_kernel.rs | 0 .../feature-gate-abi_amdgpu_kernel.stderr | 0 .../ui/feature-gates/feature-gate-abi_ptx.rs | 0 .../ui/feature-gates/feature-gate-abi_ptx.stderr | 0 .../ui/feature-gates/feature-gate-abi_unadjusted.rs | 0 .../feature-gate-abi_unadjusted.stderr | 0 .../feature-gates/feature-gate-adt_const_params.rs | 0 .../feature-gate-adt_const_params.stderr | 0 .../feature-gate-alloc-error-handler.rs | 0 .../feature-gate-alloc-error-handler.stderr | 0 .../feature-gate-allocator_internals.rs | 0 .../feature-gate-allocator_internals.stderr | 0 ...ature-gate-allow-internal-unsafe-nested-macro.rs | 0 ...e-gate-allow-internal-unsafe-nested-macro.stderr | 0 ...ure-gate-allow-internal-unstable-nested-macro.rs | 0 ...gate-allow-internal-unstable-nested-macro.stderr | 0 .../feature-gate-allow-internal-unstable-struct.rs | 0 ...ature-gate-allow-internal-unstable-struct.stderr | 0 .../feature-gate-allow-internal-unstable.rs | 0 .../feature-gate-allow-internal-unstable.stderr | 0 .../feature-gate-arbitrary-self-types.rs | 0 .../feature-gate-arbitrary-self-types.stderr | 0 ...feature-gate-arbitrary_self_types-raw-pointer.rs | 0 ...ure-gate-arbitrary_self_types-raw-pointer.stderr | 0 .../ui/feature-gates/feature-gate-asm_const.rs | 0 .../ui/feature-gates/feature-gate-asm_const.stderr | 0 .../feature-gate-asm_experimental_arch.rs | 0 .../feature-gate-asm_experimental_arch.stderr | 0 .../ui/feature-gates/feature-gate-asm_unwind.rs | 0 .../ui/feature-gates/feature-gate-asm_unwind.stderr | 0 .../feature-gate-assoc-type-defaults.rs | 0 .../feature-gate-assoc-type-defaults.stderr | 0 .../feature-gate-associated_const_equality.rs | 0 .../feature-gate-associated_const_equality.stderr | 0 .../feature-gate-associated_type_bounds.rs | 0 .../feature-gate-associated_type_bounds.stderr | 0 .../ui/feature-gates/feature-gate-auto-traits.rs | 0 .../feature-gates/feature-gate-auto-traits.stderr | 0 .../ui/feature-gates/feature-gate-box-expr.rs | 0 .../ui/feature-gates/feature-gate-box-expr.stderr | 0 .../ui/feature-gates/feature-gate-box_patterns.rs | 0 .../feature-gates/feature-gate-box_patterns.stderr | 0 .../ui/feature-gates/feature-gate-box_syntax.rs | 0 .../ui/feature-gates/feature-gate-box_syntax.stderr | 0 .../ui/feature-gates/feature-gate-c_variadic.rs | 0 .../ui/feature-gates/feature-gate-c_variadic.stderr | 0 .../ui/feature-gates/feature-gate-cfg-target-abi.rs | 0 .../feature-gate-cfg-target-abi.stderr | 0 .../feature-gate-cfg-target-compact.rs | 0 .../feature-gate-cfg-target-compact.stderr | 0 ...re-gate-cfg-target-has-atomic-equal-alignment.rs | 0 ...ate-cfg-target-has-atomic-equal-alignment.stderr | 0 .../feature-gate-cfg-target-has-atomic.rs | 0 .../feature-gate-cfg-target-has-atomic.stderr | 0 .../feature-gate-cfg-target-thread-local.rs | 0 .../feature-gate-cfg-target-thread-local.stderr | 0 .../ui/feature-gates/feature-gate-cfg-version.rs | 0 .../feature-gates/feature-gate-cfg-version.stderr | 0 .../ui/feature-gates/feature-gate-cfg_sanitize.rs | 0 .../feature-gates/feature-gate-cfg_sanitize.stderr | 0 .../ui/feature-gates/feature-gate-check-cfg.rs | 0 .../ui/feature-gates/feature-gate-check-cfg.stderr | 0 .../feature-gate-closure_lifetime_binder.rs | 0 .../feature-gate-closure_lifetime_binder.stderr | 0 .../feature-gate-closure_track_caller.rs | 0 .../feature-gate-closure_track_caller.stderr | 0 .../feature-gate-collapse_debuginfo.rs | 0 .../feature-gate-collapse_debuginfo.stderr | 0 .../feature-gates/feature-gate-compiler-builtins.rs | 0 .../feature-gate-compiler-builtins.stderr | 0 .../ui/feature-gates/feature-gate-concat_bytes.rs | 0 .../feature-gates/feature-gate-concat_bytes.stderr | 0 .../ui/feature-gates/feature-gate-concat_idents.rs | 0 .../feature-gates/feature-gate-concat_idents.stderr | 0 .../ui/feature-gates/feature-gate-concat_idents2.rs | 0 .../feature-gate-concat_idents2.stderr | 0 .../ui/feature-gates/feature-gate-concat_idents3.rs | 0 .../feature-gate-concat_idents3.stderr | 0 .../ui/feature-gates/feature-gate-const-indexing.rs | 0 .../feature-gate-const_refs_to_cell.rs | 0 .../feature-gates/feature-gate-custom_attribute.rs | 0 .../feature-gate-custom_attribute.stderr | 0 .../feature-gates/feature-gate-custom_attribute2.rs | 0 .../feature-gate-custom_attribute2.stderr | 0 .../ui/feature-gates/feature-gate-custom_mir.rs | 0 .../ui/feature-gates/feature-gate-custom_mir.stderr | 0 .../feature-gate-custom_test_frameworks.rs | 0 .../feature-gate-custom_test_frameworks.stderr | 0 .../feature-gate-debugger-visualizer.rs | 0 .../feature-gate-debugger-visualizer.stderr | 0 .../ui/feature-gates/feature-gate-decl_macro.rs | 0 .../ui/feature-gates/feature-gate-decl_macro.stderr | 0 .../feature-gate-default_type_parameter_fallback.rs | 0 ...ture-gate-default_type_parameter_fallback.stderr | 0 .../feature-gates/feature-gate-deprecated_safe.rs | 0 .../feature-gate-deprecated_safe.stderr | 0 .../ui/feature-gates/feature-gate-doc_cfg.rs | 0 .../ui/feature-gates/feature-gate-doc_cfg.stderr | 0 .../ui/feature-gates/feature-gate-doc_masked.rs | 0 .../ui/feature-gates/feature-gate-doc_masked.stderr | 0 .../feature-gates/feature-gate-doc_notable_trait.rs | 0 .../feature-gate-doc_notable_trait.stderr | 0 .../feature-gate-exclusive-range-pattern.rs | 0 .../feature-gate-exclusive-range-pattern.stderr | 0 .../feature-gate-exhaustive-patterns.rs | 0 .../feature-gate-exhaustive-patterns.stderr | 0 .../feature-gate-extern_absolute_paths.rs | 0 .../feature-gate-extern_absolute_paths.stderr | 0 .../ui/feature-gates/feature-gate-extern_prelude.rs | 0 .../feature-gate-extern_prelude.stderr | 0 .../ui/feature-gates/feature-gate-extern_types.rs | 0 .../feature-gates/feature-gate-extern_types.stderr | 0 .../ui/feature-gates/feature-gate-feature-gate.rs | 0 .../feature-gates/feature-gate-feature-gate.stderr | 0 .../ui/feature-gates/feature-gate-ffi_const.rs | 0 .../ui/feature-gates/feature-gate-ffi_const.stderr | 0 .../ui/feature-gates/feature-gate-ffi_pure.rs | 0 .../ui/feature-gates/feature-gate-ffi_pure.stderr | 0 .../feature-gates/feature-gate-ffi_returns_twice.rs | 0 .../feature-gate-ffi_returns_twice.stderr | 0 .../ui/feature-gates/feature-gate-fn_align.rs | 0 .../ui/feature-gates/feature-gate-fn_align.stderr | 0 .../ui/feature-gates/feature-gate-format_args_nl.rs | 0 .../feature-gate-format_args_nl.stderr | 0 .../ui/feature-gates/feature-gate-fundamental.rs | 0 .../feature-gates/feature-gate-fundamental.stderr | 0 .../ui/feature-gates/feature-gate-generators.rs | 0 .../ui/feature-gates/feature-gate-generators.stderr | 0 .../feature-gate-generic_arg_infer.normal.stderr | 0 .../feature-gates/feature-gate-generic_arg_infer.rs | 0 ...eature-gate-generic_associated_types_extended.rs | 0 ...re-gate-generic_associated_types_extended.stderr | 0 .../feature-gate-impl_trait_in_fn_trait_return.rs | 0 ...eature-gate-impl_trait_in_fn_trait_return.stderr | 0 .../ui/feature-gates/feature-gate-imported_main.rs | 0 .../feature-gates/feature-gate-imported_main.stderr | 0 .../feature-gate-inherent_associated_types.rs | 0 .../feature-gate-inherent_associated_types.stderr | 0 .../ui/feature-gates/feature-gate-inline_const.rs | 0 .../feature-gates/feature-gate-inline_const.stderr | 0 .../feature-gates/feature-gate-inline_const_pat.rs | 0 .../feature-gate-inline_const_pat.stderr | 0 .../ui/feature-gates/feature-gate-intrinsics.rs | 0 .../ui/feature-gates/feature-gate-intrinsics.stderr | 0 .../ui/feature-gates/feature-gate-is_sorted.rs | 0 .../ui/feature-gates/feature-gate-is_sorted.stderr | 0 .../ui/feature-gates/feature-gate-lang-items.rs | 0 .../ui/feature-gates/feature-gate-lang-items.stderr | 0 .../feature-gates/feature-gate-large-assignments.rs | 0 .../feature-gate-large-assignments.stderr | 0 .../ui/feature-gates/feature-gate-link_cfg.rs | 0 .../ui/feature-gates/feature-gate-link_cfg.stderr | 0 .../feature-gate-link_llvm_intrinsics.rs | 0 .../feature-gate-link_llvm_intrinsics.stderr | 0 .../ui/feature-gates/feature-gate-linkage.rs | 0 .../ui/feature-gates/feature-gate-linkage.stderr | 0 .../ui/feature-gates/feature-gate-lint-reasons.rs | 0 .../feature-gates/feature-gate-lint-reasons.stderr | 0 .../ui/feature-gates/feature-gate-log_syntax.rs | 0 .../ui/feature-gates/feature-gate-log_syntax.stderr | 0 .../ui/feature-gates/feature-gate-log_syntax.stdout | 0 .../ui/feature-gates/feature-gate-log_syntax2.rs | 0 .../feature-gates/feature-gate-log_syntax2.stderr | 0 .../feature-gates/feature-gate-log_syntax2.stdout | 0 .../feature-gates/feature-gate-marker_trait_attr.rs | 0 .../feature-gate-marker_trait_attr.stderr | 0 .../ui/feature-gates/feature-gate-may-dangle.rs | 0 .../ui/feature-gates/feature-gate-may-dangle.stderr | 0 .../ui/feature-gates/feature-gate-min_const_fn.rs | 0 .../feature-gates/feature-gate-min_const_fn.stderr | 0 .../feature-gate-more-qualified-paths.rs | 0 .../feature-gate-more-qualified-paths.stderr | 0 .../feature-gates/feature-gate-naked_functions.rs | 0 .../feature-gate-naked_functions.stderr | 0 .../feature-gate-native_link_modifiers_as_needed.rs | 0 ...ture-gate-native_link_modifiers_as_needed.stderr | 0 .../feature-gates/feature-gate-needs-allocator.rs | 0 .../feature-gate-needs-allocator.stderr | 0 .../feature-gates/feature-gate-negate-unsigned.rs | 0 .../feature-gate-negate-unsigned.stderr | 0 .../ui/feature-gates/feature-gate-never_type.rs | 0 .../ui/feature-gates/feature-gate-never_type.stderr | 0 .../ui/feature-gates/feature-gate-no_core.rs | 0 .../ui/feature-gates/feature-gate-no_core.stderr | 0 .../ui/feature-gates/feature-gate-no_coverage.rs | 0 .../feature-gates/feature-gate-no_coverage.stderr | 0 .../ui/feature-gates/feature-gate-no_sanitize.rs | 0 .../feature-gates/feature-gate-no_sanitize.stderr | 0 ...ure-gate-non_exhaustive_omitted_patterns_lint.rs | 0 ...gate-non_exhaustive_omitted_patterns_lint.stderr | 0 .../feature-gate-object_safe_for_dispatch.rs | 0 .../feature-gate-object_safe_for_dispatch.stderr | 0 .../feature-gate-omit-gdb-pretty-printer-section.rs | 0 ...ture-gate-omit-gdb-pretty-printer-section.stderr | 0 .../feature-gate-optimize_attribute.rs | 0 .../feature-gate-optimize_attribute.stderr | 0 .../feature-gate-overlapping_marker_traits.rs | 0 .../feature-gate-overlapping_marker_traits.stderr | 0 .../feature-gate-precise_pointer_size_matching.rs | 0 ...eature-gate-precise_pointer_size_matching.stderr | 0 .../ui/feature-gates/feature-gate-prelude_import.rs | 0 .../feature-gate-prelude_import.stderr | 0 .../feature-gates/feature-gate-profiler-runtime.rs | 0 .../feature-gate-profiler-runtime.stderr | 0 .../feature-gate-public_private_dependencies.rs | 0 .../ui/feature-gates/feature-gate-raw-dylib-2.rs | 0 .../feature-gates/feature-gate-raw-dylib-2.stderr | 0 .../feature-gate-raw-dylib-import-name-type.rs | 0 .../feature-gate-raw-dylib-import-name-type.stderr | 0 .../ui/feature-gates/feature-gate-raw-dylib.rs | 0 .../ui/feature-gates/feature-gate-raw-dylib.stderr | 0 .../ui/feature-gates/feature-gate-register_tool.rs | 0 .../feature-gates/feature-gate-register_tool.stderr | 0 .../ui/feature-gates/feature-gate-repr-simd.rs | 0 .../ui/feature-gates/feature-gate-repr-simd.stderr | 0 .../ui/feature-gates/feature-gate-repr128.rs | 0 .../ui/feature-gates/feature-gate-repr128.stderr | 0 ...ture-gate-return_position_impl_trait_in_trait.rs | 0 ...-gate-return_position_impl_trait_in_trait.stderr | 0 .../ui/feature-gates/feature-gate-rust_cold_cc.rs | 0 .../feature-gates/feature-gate-rust_cold_cc.stderr | 0 .../feature-gate-rustc-allow-const-fn-unstable.rs | 0 ...eature-gate-rustc-allow-const-fn-unstable.stderr | 0 .../ui/feature-gates/feature-gate-rustc-attrs-1.rs | 0 .../feature-gates/feature-gate-rustc-attrs-1.stderr | 0 .../ui/feature-gates/feature-gate-rustc-attrs.rs | 0 .../feature-gates/feature-gate-rustc-attrs.stderr | 0 .../feature-gate-rustc_const_unstable.rs | 0 .../feature-gate-rustc_const_unstable.stderr | 0 .../feature-gates/feature-gate-rustdoc_internals.rs | 0 .../feature-gate-rustdoc_internals.stderr | 0 .../ui/feature-gates/feature-gate-simd-ffi.rs | 0 .../ui/feature-gates/feature-gate-simd-ffi.stderr | 0 .../ui/feature-gates/feature-gate-simd.rs | 0 .../ui/feature-gates/feature-gate-simd.stderr | 0 .../ui/feature-gates/feature-gate-staged_api.rs | 0 .../ui/feature-gates/feature-gate-staged_api.stderr | 0 .../ui/feature-gates/feature-gate-start.rs | 0 .../ui/feature-gates/feature-gate-start.stderr | 0 .../feature-gate-stmt_expr_attributes.rs | 0 .../feature-gate-stmt_expr_attributes.stderr | 0 .../feature-gates/feature-gate-strict_provenance.rs | 0 .../feature-gate-strict_provenance.stderr | 0 .../feature-gate-test_unstable_lint.rs | 0 .../feature-gate-test_unstable_lint.stderr | 0 .../ui/feature-gates/feature-gate-thread_local.rs | 0 .../feature-gates/feature-gate-thread_local.stderr | 0 .../ui/feature-gates/feature-gate-trace_macros.rs | 0 .../feature-gates/feature-gate-trace_macros.stderr | 0 .../ui/feature-gates/feature-gate-trait-alias.rs | 0 .../feature-gates/feature-gate-trait-alias.stderr | 0 .../feature-gates/feature-gate-trait_upcasting.rs | 0 .../feature-gate-trait_upcasting.stderr | 0 .../feature-gate-transparent_unions.rs | 0 .../feature-gate-transparent_unions.stderr | 0 .../feature-gate-trivial_bounds-lint.rs | 0 .../ui/feature-gates/feature-gate-trivial_bounds.rs | 0 .../feature-gate-trivial_bounds.stderr | 0 .../ui/feature-gates/feature-gate-try_blocks.rs | 0 .../ui/feature-gates/feature-gate-try_blocks.stderr | 0 .../feature-gate-type_alias_impl_trait.rs | 0 .../feature-gates/feature-gate-type_ascription.rs | 0 .../feature-gate-type_ascription.stderr | 0 .../feature-gate-unboxed-closures-manual-impls.rs | 0 ...eature-gate-unboxed-closures-manual-impls.stderr | 0 .../feature-gate-unboxed-closures-method-calls.rs | 0 ...eature-gate-unboxed-closures-method-calls.stderr | 0 .../feature-gate-unboxed-closures-ufcs-calls.rs | 0 .../feature-gate-unboxed-closures-ufcs-calls.stderr | 0 .../feature-gates/feature-gate-unboxed-closures.rs | 0 .../feature-gate-unboxed-closures.stderr | 0 .../ui/feature-gates/feature-gate-unix_sigpipe.rs | 0 .../feature-gates/feature-gate-unix_sigpipe.stderr | 0 .../feature-gate-unsafe_pin_internals.rs | 0 .../feature-gate-unsafe_pin_internals.stderr | 0 .../feature-gates/feature-gate-unsized_fn_params.rs | 0 .../feature-gate-unsized_fn_params.stderr | 0 .../ui/feature-gates/feature-gate-unsized_locals.rs | 0 .../feature-gate-unsized_locals.stderr | 0 .../feature-gate-unsized_tuple_coercion.rs | 0 .../feature-gate-unsized_tuple_coercion.stderr | 0 .../ui/feature-gates/feature-gate-used_with_arg.rs | 0 .../feature-gates/feature-gate-used_with_arg.stderr | 0 .../ui/feature-gates/feature-gate-vectorcall.rs | 0 .../ui/feature-gates/feature-gate-vectorcall.stderr | 0 .../ui/feature-gates/feature-gate-wasm_abi.rs | 0 .../ui/feature-gates/feature-gate-wasm_abi.stderr | 0 .../feature-gate-with_negative_coherence.rs | 0 .../feature-gate-with_negative_coherence.stderr | 0 .../feature-gates/feature-gate-yeet_expr-in-cfg.rs | 0 .../feature-gate-yeet_expr-in-cfg.stderr | 0 .../ui/feature-gates/feature-gate-yeet_expr.rs | 0 .../ui/feature-gates/feature-gate-yeet_expr.stderr | 0 .../feature-gated-feature-in-macro-arg.rs | 0 .../feature-gated-feature-in-macro-arg.stderr | 0 .../ui/feature-gates/gated-bad-feature.rs | 0 .../ui/feature-gates/gated-bad-feature.stderr | 0 .../ui/feature-gates/issue-43106-gating-of-bench.rs | 0 .../issue-43106-gating-of-bench.stderr | 0 .../issue-43106-gating-of-builtin-attrs-error.rs | 0 ...issue-43106-gating-of-builtin-attrs-error.stderr | 0 .../issue-43106-gating-of-builtin-attrs.rs | 0 .../issue-43106-gating-of-builtin-attrs.stderr | 0 .../issue-43106-gating-of-deprecated.rs | 0 .../feature-gates/issue-43106-gating-of-derive-2.rs | 0 .../issue-43106-gating-of-derive-2.stderr | 0 .../feature-gates/issue-43106-gating-of-derive.rs | 0 .../issue-43106-gating-of-derive.stderr | 0 .../issue-43106-gating-of-macro_escape.rs | 0 .../issue-43106-gating-of-macro_escape.stderr | 0 .../issue-43106-gating-of-macro_use.rs | 0 .../issue-43106-gating-of-macro_use.stderr | 0 .../issue-43106-gating-of-proc_macro_derive.rs | 0 .../issue-43106-gating-of-proc_macro_derive.stderr | 0 .../feature-gates/issue-43106-gating-of-stable.rs | 0 .../issue-43106-gating-of-stable.stderr | 0 .../ui/feature-gates/issue-43106-gating-of-test.rs | 0 .../feature-gates/issue-43106-gating-of-test.stderr | 0 .../feature-gates/issue-43106-gating-of-unstable.rs | 0 .../issue-43106-gating-of-unstable.stderr | 0 .../ui/feature-gates/issue-49983-see-issue-0.rs | 0 .../ui/feature-gates/issue-49983-see-issue-0.stderr | 0 .../ui/feature-gates/rustc-private.rs | 0 .../ui/feature-gates/rustc-private.stderr | 0 .../feature-gates/soft-syntax-gates-with-errors.rs | 0 .../soft-syntax-gates-with-errors.stderr | 0 .../soft-syntax-gates-without-errors.rs | 0 .../soft-syntax-gates-without-errors.stderr | 0 .../stability-attribute-consistency.rs | 0 .../stability-attribute-consistency.stderr | 0 .../ui/feature-gates/stable-features.rs | 0 .../ui/feature-gates/stable-features.stderr | 0 .../ui/feature-gates/trace_macros-gate.rs | 0 .../ui/feature-gates/trace_macros-gate.stderr | 0 .../ui/feature-gates/unknown-feature.rs | 0 .../ui/feature-gates/unknown-feature.stderr | 0 .../unstable-attribute-allow-issue-0.rs | 0 .../unstable-attribute-allow-issue-0.stderr | 0 {src/test => tests}/ui/ffi_const.rs | 0 {src/test => tests}/ui/ffi_const.stderr | 0 {src/test => tests}/ui/ffi_const2.rs | 0 {src/test => tests}/ui/ffi_const2.stderr | 0 {src/test => tests}/ui/ffi_pure.rs | 0 {src/test => tests}/ui/ffi_pure.stderr | 0 {src/test => tests}/ui/ffi_returns_twice.rs | 0 {src/test => tests}/ui/ffi_returns_twice.stderr | 0 {src/test => tests}/ui/filter-block-view-items.rs | 0 .../ui/fmt/auxiliary/format-string-proc-macro.rs | 0 .../ui/fmt/format-args-capture-issue-102057.rs | 0 .../ui/fmt/format-args-capture-issue-102057.stderr | 0 .../ui/fmt/format-args-capture-issue-93378.rs | 0 .../ui/fmt/format-args-capture-issue-93378.stderr | 0 .../ui/fmt/format-args-capture-issue-94010.rs | 0 .../ui/fmt/format-args-capture-issue-94010.stderr | 0 .../ui/fmt/format-args-capture-macro-hygiene.rs | 0 .../ui/fmt/format-args-capture-macro-hygiene.stderr | 0 .../ui/fmt/format-args-capture-missing-variables.rs | 0 .../format-args-capture-missing-variables.stderr | 0 {src/test => tests}/ui/fmt/format-args-capture.rs | 0 .../test => tests}/ui/fmt/format-expanded-string.rs | 0 .../ui/fmt/format-expanded-string.stderr | 0 .../ui/fmt/format-raw-string-error.rs | 0 .../ui/fmt/format-raw-string-error.stderr | 0 {src/test => tests}/ui/fmt/format-string-error-2.rs | 0 .../ui/fmt/format-string-error-2.stderr | 0 {src/test => tests}/ui/fmt/format-string-error.rs | 0 .../ui/fmt/format-string-error.stderr | 0 .../ui/fmt/format-with-yield-point.rs | 0 {src/test => tests}/ui/fmt/ifmt-bad-arg.rs | 0 {src/test => tests}/ui/fmt/ifmt-bad-arg.stderr | 0 {src/test => tests}/ui/fmt/ifmt-bad-format-args.rs | 0 .../ui/fmt/ifmt-bad-format-args.stderr | 0 {src/test => tests}/ui/fmt/ifmt-unimpl.rs | 0 {src/test => tests}/ui/fmt/ifmt-unimpl.stderr | 0 {src/test => tests}/ui/fmt/ifmt-unknown-trait.rs | 0 .../test => tests}/ui/fmt/ifmt-unknown-trait.stderr | 0 {src/test => tests}/ui/fmt/incorrect-separator.rs | 0 .../ui/fmt/incorrect-separator.stderr | 0 {src/test => tests}/ui/fmt/issue-103826.rs | 0 {src/test => tests}/ui/fmt/issue-103826.stderr | 0 {src/test => tests}/ui/fmt/issue-104142.rs | 0 {src/test => tests}/ui/fmt/issue-104142.stderr | 0 {src/test => tests}/ui/fmt/issue-86085.rs | 0 {src/test => tests}/ui/fmt/issue-86085.stderr | 0 {src/test => tests}/ui/fmt/issue-89173.rs | 0 {src/test => tests}/ui/fmt/issue-89173.stderr | 0 {src/test => tests}/ui/fmt/issue-91556.rs | 0 {src/test => tests}/ui/fmt/issue-91556.stderr | 0 .../ui/fmt/respanned-literal-issue-106191.rs | 0 .../ui/fmt/respanned-literal-issue-106191.stderr | 0 {src/test => tests}/ui/fmt/send-sync.rs | 0 {src/test => tests}/ui/fmt/send-sync.stderr | 0 .../ui/fmt/struct-field-as-captured-argument.fixed | 0 .../ui/fmt/struct-field-as-captured-argument.rs | 0 .../ui/fmt/struct-field-as-captured-argument.stderr | 0 {src/test => tests}/ui/fmt/unicode-escape-spans.rs | 0 .../ui/fmt/unicode-escape-spans.stderr | 0 {src/test => tests}/ui/fn-in-pat.rs | 0 {src/test => tests}/ui/fn-in-pat.stderr | 0 {src/test => tests}/ui/fn/bad-main.rs | 0 {src/test => tests}/ui/fn/bad-main.stderr | 0 {src/test => tests}/ui/fn/dyn-fn-alignment.rs | 0 {src/test => tests}/ui/fn/expr-fn-panic.rs | 0 {src/test => tests}/ui/fn/expr-fn.rs | 0 {src/test => tests}/ui/fn/fn-bad-block-type.rs | 0 {src/test => tests}/ui/fn/fn-bad-block-type.stderr | 0 .../ui/fn/fn-closure-mutable-capture.rs | 0 .../ui/fn/fn-closure-mutable-capture.stderr | 0 {src/test => tests}/ui/fn/fn-compare-mismatch.rs | 0 .../test => tests}/ui/fn/fn-compare-mismatch.stderr | 0 {src/test => tests}/ui/fn/fn-item-type.rs | 0 {src/test => tests}/ui/fn/fn-item-type.stderr | 0 .../ui/fn/fn-recover-return-sign.fixed | 0 {src/test => tests}/ui/fn/fn-recover-return-sign.rs | 0 .../ui/fn/fn-recover-return-sign.stderr | 0 .../test => tests}/ui/fn/fn-recover-return-sign2.rs | 0 .../ui/fn/fn-recover-return-sign2.stderr | 0 {src/test => tests}/ui/fn/fn-trait-formatting.rs | 0 .../test => tests}/ui/fn/fn-trait-formatting.stderr | 0 {src/test => tests}/ui/fn/fun-call-variants.rs | 0 .../fn/implied-bounds-unnorm-associated-type-2.rs | 0 .../implied-bounds-unnorm-associated-type-2.stderr | 0 .../fn/implied-bounds-unnorm-associated-type-3.rs | 0 .../fn/implied-bounds-unnorm-associated-type-4.rs | 0 .../implied-bounds-unnorm-associated-type-4.stderr | 0 .../fn/implied-bounds-unnorm-associated-type-5.rs | 0 .../implied-bounds-unnorm-associated-type-5.stderr | 0 .../ui/fn/implied-bounds-unnorm-associated-type.rs | 0 .../fn/implied-bounds-unnorm-associated-type.stderr | 0 {src/test => tests}/ui/fn/issue-3044.rs | 0 {src/test => tests}/ui/fn/issue-3044.stderr | 0 {src/test => tests}/ui/fn/issue-3904.rs | 0 {src/test => tests}/ui/fn/issue-80179.rs | 0 {src/test => tests}/ui/fn/issue-80179.stderr | 0 {src/test => tests}/ui/fn/keyword-order.rs | 0 {src/test => tests}/ui/fn/keyword-order.stderr | 0 .../ui/fn/nested-function-names-issue-8587.rs | 0 .../fn/signature-error-reporting-under-verbose.rs | 0 .../signature-error-reporting-under-verbose.stderr | 0 {src/test => tests}/ui/fn/suggest-return-closure.rs | 0 .../ui/fn/suggest-return-closure.stderr | 0 {src/test => tests}/ui/fn/suggest-return-future.rs | 0 .../ui/fn/suggest-return-future.stderr | 0 {src/test => tests}/ui/for-loop-while/auto-loop.rs | 0 .../ui/for-loop-while/break-outside-loop.rs | 0 .../ui/for-loop-while/break-outside-loop.stderr | 0 .../test => tests}/ui/for-loop-while/break-value.rs | 0 .../ui/for-loop-while/break-while-condition.rs | 0 .../ui/for-loop-while/break-while-condition.stderr | 0 {src/test => tests}/ui/for-loop-while/break.rs | 0 .../cleanup-rvalue-during-if-and-while.rs | 0 .../ui/for-loop-while/for-destruct.rs | 0 .../ui/for-loop-while/for-loop-goofiness.rs | 0 .../ui/for-loop-while/for-loop-has-unit-body.rs | 0 .../ui/for-loop-while/for-loop-into-iterator.rs | 0 .../for-loop-lifetime-of-unbound-values.rs | 0 .../ui/for-loop-while/for-loop-macro.rs | 0 .../ui/for-loop-while/for-loop-mut-ref-element.rs | 0 .../ui/for-loop-while/for-loop-no-std.rs | 0 .../ui/for-loop-while/for-loop-panic.rs | 0 ...-loop-unconstrained-element-type-i32-fallback.rs | 0 .../foreach-external-iterators-break.rs | 0 ...each-external-iterators-hashmap-break-restart.rs | 0 .../foreach-external-iterators-hashmap.rs | 0 .../foreach-external-iterators-loop.rs | 0 .../foreach-external-iterators-nested.rs | 0 .../ui/for-loop-while/foreach-external-iterators.rs | 0 .../ui/for-loop-while/foreach-nested.rs | 0 .../ui/for-loop-while/foreach-put-structured.rs | 0 .../ui/for-loop-while/foreach-simple-outer-slot.rs | 0 {src/test => tests}/ui/for-loop-while/issue-2216.rs | 0 .../test => tests}/ui/for-loop-while/issue-51345.rs | 0 .../test => tests}/ui/for-loop-while/issue-69841.rs | 0 .../ui/for-loop-while/label_break_value.rs | 0 .../ui/for-loop-while/label_break_value_invalid.rs | 0 .../for-loop-while/label_break_value_invalid.stderr | 0 .../ui/for-loop-while/labeled-break.rs | 0 .../ui/for-loop-while/linear-for-loop.rs | 0 .../liveness-assign-imm-local-after-loop.rs | 0 .../ui/for-loop-while/liveness-loop-break.rs | 0 .../ui/for-loop-while/liveness-move-in-loop.rs | 0 {src/test => tests}/ui/for-loop-while/long-while.rs | 0 .../ui/for-loop-while/loop-break-cont-1.rs | 0 .../ui/for-loop-while/loop-break-cont.rs | 0 .../ui/for-loop-while/loop-break-value.rs | 0 .../ui/for-loop-while/loop-diverges.rs | 0 .../ui/for-loop-while/loop-label-shadowing.rs | 0 .../ui/for-loop-while/loop-labeled-break-value.rs | 0 .../loop-no-reinit-needed-post-bot.rs | 0 {src/test => tests}/ui/for-loop-while/loop-scope.rs | 0 {src/test => tests}/ui/for-loop-while/while-cont.rs | 0 .../ui/for-loop-while/while-flow-graph.rs | 0 .../test => tests}/ui/for-loop-while/while-label.rs | 0 .../test => tests}/ui/for-loop-while/while-let-2.rs | 0 .../ui/for-loop-while/while-let-2.stderr | 0 {src/test => tests}/ui/for-loop-while/while-let.rs | 0 .../ui/for-loop-while/while-loop-constraints-2.rs | 0 .../ui/for-loop-while/while-prelude-drop.rs | 0 .../ui/for-loop-while/while-with-break.rs | 0 {src/test => tests}/ui/for-loop-while/while.rs | 0 {src/test => tests}/ui/for/for-c-in-str.rs | 0 {src/test => tests}/ui/for/for-c-in-str.stderr | 0 {src/test => tests}/ui/for/for-expn.rs | 0 {src/test => tests}/ui/for/for-expn.stderr | 0 {src/test => tests}/ui/for/for-loop-bogosity.rs | 0 {src/test => tests}/ui/for/for-loop-bogosity.stderr | 0 .../for/for-loop-refutable-pattern-error-message.rs | 0 .../for-loop-refutable-pattern-error-message.stderr | 0 {src/test => tests}/ui/for/for-loop-type-error.rs | 0 .../ui/for/for-loop-type-error.stderr | 0 .../ui/for/for-loop-unconstrained-element-type.rs | 0 .../for/for-loop-unconstrained-element-type.stderr | 0 .../ui/foreign-fn-return-lifetime.fixed | 0 .../test => tests}/ui/foreign-fn-return-lifetime.rs | 0 .../ui/foreign-fn-return-lifetime.stderr | 0 .../ui/foreign-unsafe-fn-called.mir.stderr | 0 {src/test => tests}/ui/foreign-unsafe-fn-called.rs | 0 .../ui/foreign-unsafe-fn-called.thir.stderr | 0 {src/test => tests}/ui/foreign/auxiliary/fn-abi.rs | 0 .../ui/foreign/foreign-fn-linkname.rs | 0 {src/test => tests}/ui/foreign/foreign-int-types.rs | 0 .../foreign/foreign-mod-src/compiletest-ignore-dir | 0 .../ui/foreign/foreign-mod-src/inner.rs | 0 .../ui/foreign/foreign-mod-unused-const.rs | 0 {src/test => tests}/ui/foreign/foreign-pub-super.rs | 0 .../ui/foreign/foreign-src/compiletest-ignore-dir | 0 .../ui/foreign/foreign-src/foreign.rs | 0 .../ui/foreign/foreign-truncated-arguments.rs | 0 {src/test => tests}/ui/foreign/foreign2.rs | 0 .../issue-74120-lowering-of-ffi-block-bodies.rs | 0 .../issue-74120-lowering-of-ffi-block-bodies.stderr | 0 .../ui/foreign/issue-91370-foreign-fn-block-impl.rs | 0 .../issue-91370-foreign-fn-block-impl.stderr | 0 .../ui/foreign/issue-99276-same-type-lifetimes.rs | 0 .../ui/foreign/nil-decl-in-foreign.rs | 0 {src/test => tests}/ui/format-no-std.rs | 0 .../fully-qualified-type-name1.rs | 0 .../fully-qualified-type-name1.stderr | 0 .../fully-qualified-type-name2.rs | 0 .../fully-qualified-type-name2.stderr | 0 .../fully-qualified-type-name4.rs | 0 .../fully-qualified-type-name4.stderr | 0 {src/test => tests}/ui/fun-indirect-call.rs | 0 .../function-pointer-comparison-issue-54685.rs | 0 .../ui/function-pointer/issue-102289.rs | 0 .../ui/function-pointer/sized-ret-with-binder.rs | 0 .../ui/function-pointer/unsized-ret.rs | 0 .../ui/function-pointer/unsized-ret.stderr | 0 .../functional-struct-update-noncopyable.rs | 0 .../functional-struct-update-noncopyable.stderr | 0 .../functional-struct-update-respects-privacy.rs | 0 ...functional-struct-update-respects-privacy.stderr | 0 .../ui/functions-closures/auxiliary/fn-abi.rs | 0 .../call-closure-from-overloaded-op.rs | 0 .../capture-clauses-boxed-closures.rs | 0 .../capture-clauses-unboxed-closures.rs | 0 .../ui/functions-closures/clone-closure.rs | 0 .../closure-bounds-can-capture-chan.rs | 0 .../closure-expected-type/README.md | 0 .../expect-infer-supply-two-infers.rs | 0 .../closure-expected-type/issue-38714.rs | 0 .../supply-just-return-type.rs | 0 .../closure-expected-type/supply-nothing.rs | 0 .../ui/functions-closures/closure-immediate.rs | 0 .../ui/functions-closures/closure-inference.rs | 0 .../ui/functions-closures/closure-inference2.rs | 0 .../ui/functions-closures/closure-reform.rs | 0 .../functions-closures/closure-returning-closure.rs | 0 .../ui/functions-closures/closure-to-fn-coercion.rs | 0 .../closure_to_fn_coercion-expected-types.rs | 0 .../ui/functions-closures/copy-closure.rs | 0 {src/test => tests}/ui/functions-closures/fn-abi.rs | 0 .../ui/functions-closures/fn-bare-assign.rs | 0 .../functions-closures/fn-bare-coerce-to-block.rs | 0 .../ui/functions-closures/fn-bare-item.rs | 0 .../ui/functions-closures/fn-bare-size.rs | 0 .../ui/functions-closures/fn-bare-spawn.rs | 0 .../ui/functions-closures/fn-coerce-field.rs | 0 .../fn-help-with-err-generic-is-not-function.rs | 0 .../fn-help-with-err-generic-is-not-function.stderr | 0 .../ui/functions-closures/fn-help-with-err.rs | 0 .../ui/functions-closures/fn-help-with-err.stderr | 0 .../ui/functions-closures/fn-item-type-cast.rs | 0 .../ui/functions-closures/fn-item-type-coerce.rs | 0 .../functions-closures/fn-item-type-zero-sized.rs | 0 .../test => tests}/ui/functions-closures/fn-lval.rs | 0 .../ui/functions-closures/fn-type-infer.rs | 0 .../implied-bounds-closure-arg-outlives.rs | 0 .../nullable-pointer-opt-closures.rs | 0 .../functions-closures/parallel-codegen-closures.rs | 0 .../ui/functions-closures/return-from-closure.rs | 0 .../ui/future-incompatible-lint-group.rs | 0 .../ui/future-incompatible-lint-group.stderr | 0 {src/test => tests}/ui/generator/addassign-yield.rs | 0 .../ui/generator/async-generator-issue-67158.rs | 0 .../ui/generator/async-generator-issue-67158.stderr | 0 .../ui/generator/auto-trait-regions.rs | 0 .../ui/generator/auto-trait-regions.stderr | 0 .../auxiliary/metadata-sufficient-for-layout.rs | 0 .../ui/generator/auxiliary/xcrate-reachable.rs | 0 .../test => tests}/ui/generator/auxiliary/xcrate.rs | 0 .../ui/generator/borrow-in-tail-expr.rs | 0 {src/test => tests}/ui/generator/borrowing.rs | 0 {src/test => tests}/ui/generator/borrowing.stderr | 0 .../test => tests}/ui/generator/clone-impl-async.rs | 0 .../ui/generator/clone-impl-async.stderr | 0 .../ui/generator/clone-impl-static.rs | 0 .../ui/generator/clone-impl-static.stderr | 0 {src/test => tests}/ui/generator/clone-impl.rs | 0 {src/test => tests}/ui/generator/clone-impl.stderr | 0 .../test => tests}/ui/generator/conditional-drop.rs | 0 {src/test => tests}/ui/generator/control-flow.rs | 0 .../ui/generator/derived-drop-parent-expr.rs | 0 {src/test => tests}/ui/generator/discriminant.rs | 0 .../test => tests}/ui/generator/drop-and-replace.rs | 0 .../ui/generator/drop-control-flow.rs | 0 {src/test => tests}/ui/generator/drop-env.rs | 0 .../ui/generator/drop-track-addassign-yield.rs | 0 .../ui/generator/drop-tracking-parent-expression.rs | 0 .../drop-tracking-parent-expression.stderr | 0 .../drop-tracking-yielding-in-match-guards.rs | 0 .../test => tests}/ui/generator/drop-yield-twice.rs | 0 .../ui/generator/drop-yield-twice.stderr | 0 {src/test => tests}/ui/generator/dropck-resume.rs | 0 .../ui/generator/dropck-resume.stderr | 0 {src/test => tests}/ui/generator/dropck.rs | 0 {src/test => tests}/ui/generator/dropck.stderr | 0 .../generator-region-requirements.migrate.stderr | 0 .../ui/generator/generator-region-requirements.rs | 0 .../generator/generator-region-requirements.stderr | 0 .../ui/generator/generator-resume-after-panic.rs | 0 .../ui/generator/generator-with-nll.rs | 0 .../ui/generator/generator-with-nll.stderr | 0 .../generator-yielding-or-returning-itself.rs | 0 .../generator-yielding-or-returning-itself.stderr | 0 {src/test => tests}/ui/generator/issue-102645.rs | 0 .../test => tests}/ui/generator/issue-102645.stderr | 0 {src/test => tests}/ui/generator/issue-44197.rs | 0 .../issue-45729-unsafe-in-generator.mir.stderr | 0 .../ui/generator/issue-45729-unsafe-in-generator.rs | 0 .../issue-45729-unsafe-in-generator.thir.stderr | 0 {src/test => tests}/ui/generator/issue-48048.rs | 0 {src/test => tests}/ui/generator/issue-48048.stderr | 0 {src/test => tests}/ui/generator/issue-52304.rs | 0 {src/test => tests}/ui/generator/issue-52398.rs | 0 {src/test => tests}/ui/generator/issue-52398.stderr | 0 {src/test => tests}/ui/generator/issue-53548-1.rs | 0 {src/test => tests}/ui/generator/issue-53548.rs | 0 {src/test => tests}/ui/generator/issue-57017.rs | 0 {src/test => tests}/ui/generator/issue-57084.rs | 0 {src/test => tests}/ui/generator/issue-57084.stderr | 0 {src/test => tests}/ui/generator/issue-57478.rs | 0 {src/test => tests}/ui/generator/issue-58888.rs | 0 .../ui/generator/issue-61442-stmt-expr-with-drop.rs | 0 .../ui/generator/issue-62506-two_awaits.rs | 0 .../ui/generator/issue-64620-yield-array-element.rs | 0 .../issue-64620-yield-array-element.stderr | 0 {src/test => tests}/ui/generator/issue-68112.rs | 0 {src/test => tests}/ui/generator/issue-68112.stderr | 0 {src/test => tests}/ui/generator/issue-69017.rs | 0 {src/test => tests}/ui/generator/issue-69039.rs | 0 {src/test => tests}/ui/generator/issue-87142.rs | 0 {src/test => tests}/ui/generator/issue-88653.rs | 0 {src/test => tests}/ui/generator/issue-88653.stderr | 0 {src/test => tests}/ui/generator/issue-91477.rs | 0 {src/test => tests}/ui/generator/issue-91477.stderr | 0 {src/test => tests}/ui/generator/issue-93161.rs | 0 {src/test => tests}/ui/generator/iterator-count.rs | 0 {src/test => tests}/ui/generator/layout-error.rs | 0 .../test => tests}/ui/generator/layout-error.stderr | 0 .../ui/generator/live-upvar-across-yield.rs | 0 {src/test => tests}/ui/generator/match-bindings.rs | 0 .../ui/generator/match-bindings.stderr | 0 .../ui/generator/metadata-sufficient-for-layout.rs | 0 .../generator/metadata-sufficient-for-layout.stderr | 0 .../ui/generator/nested_generators.rs | 0 .../ui/generator/niche-in-generator.rs | 0 .../ui/generator/non-static-is-unpin.rs | 0 {src/test => tests}/ui/generator/not-send-sync.rs | 0 .../ui/generator/not-send-sync.stderr | 0 {src/test => tests}/ui/generator/overlap-locals.rs | 0 .../ui/generator/panic-drops-resume.rs | 0 {src/test => tests}/ui/generator/panic-drops.rs | 0 {src/test => tests}/ui/generator/panic-safe.rs | 0 {src/test => tests}/ui/generator/partial-drop.rs | 0 .../test => tests}/ui/generator/partial-drop.stderr | 0 .../partial-initialization-across-yield.rs | 0 .../partial-initialization-across-yield.stderr | 0 {src/test => tests}/ui/generator/pattern-borrow.rs | 0 .../ui/generator/pattern-borrow.stderr | 0 .../ui/generator/pin-box-generator.rs | 0 .../ui/generator/print/generator-print-verbose-1.rs | 0 .../print/generator-print-verbose-1.stderr | 0 .../ui/generator/print/generator-print-verbose-2.rs | 0 .../print/generator-print-verbose-2.stderr | 0 .../ui/generator/print/generator-print-verbose-3.rs | 0 .../print/generator-print-verbose-3.stderr | 0 .../ui/generator/reborrow-mut-upvar.rs | 0 .../ui/generator/reborrow-mut-upvar.stderr | 0 .../ui/generator/ref-escapes-but-not-over-yield.rs | 0 .../generator/ref-escapes-but-not-over-yield.stderr | 0 .../ui/generator/ref-upvar-not-send.rs | 0 .../ui/generator/ref-upvar-not-send.stderr | 0 .../ui/generator/reinit-in-match-guard.rs | 0 .../ui/generator/resume-after-return.rs | 0 .../ui/generator/resume-arg-late-bound.rs | 0 .../ui/generator/resume-arg-late-bound.stderr | 0 {src/test => tests}/ui/generator/resume-arg-size.rs | 0 .../ui/generator/resume-live-across-yield.rs | 0 .../ui/generator/retain-resume-ref.rs | 0 .../ui/generator/retain-resume-ref.stderr | 0 .../ui/generator/size-moved-locals.rs | 0 {src/test => tests}/ui/generator/sized-yield.rs | 0 {src/test => tests}/ui/generator/sized-yield.stderr | 0 .../ui/generator/smoke-resume-args.rs | 0 {src/test => tests}/ui/generator/smoke.rs | 0 .../ui/generator/static-generators.rs | 0 .../generator/static-mut-reference-across-yield.rs | 0 .../test => tests}/ui/generator/static-not-unpin.rs | 0 .../ui/generator/static-not-unpin.stderr | 0 .../ui/generator/static-reference-across-yield.rs | 0 .../ui/generator/too-live-local-in-immovable-gen.rs | 0 .../too-live-local-in-immovable-gen.stderr | 0 .../ui/generator/too-many-parameters.rs | 0 .../ui/generator/too-many-parameters.stderr | 0 .../ui/generator/type-mismatch-error.rs | 0 .../ui/generator/type-mismatch-error.stderr | 0 .../generator/type-mismatch-signature-deduction.rs | 0 .../type-mismatch-signature-deduction.stderr | 0 .../ui/generator/unresolved-ct-var-drop-tracking.rs | 0 .../unresolved-ct-var-drop-tracking.stderr | 0 .../ui/generator/unresolved-ct-var.rs | 0 .../ui/generator/unresolved-ct-var.stderr | 0 .../test => tests}/ui/generator/xcrate-reachable.rs | 0 {src/test => tests}/ui/generator/xcrate.rs | 0 .../ui/generator/yield-in-args-rev.rs | 0 .../ui/generator/yield-in-args-rev.stderr | 0 {src/test => tests}/ui/generator/yield-in-args.rs | 0 .../ui/generator/yield-in-args.stderr | 0 {src/test => tests}/ui/generator/yield-in-box.rs | 0 .../test => tests}/ui/generator/yield-in-box.stderr | 0 {src/test => tests}/ui/generator/yield-in-const.rs | 0 .../ui/generator/yield-in-const.stderr | 0 .../ui/generator/yield-in-function.rs | 0 .../ui/generator/yield-in-function.stderr | 0 .../ui/generator/yield-in-initializer.rs | 0 .../ui/generator/yield-in-initializer.stderr | 0 {src/test => tests}/ui/generator/yield-in-static.rs | 0 .../ui/generator/yield-in-static.stderr | 0 .../yield-outside-generator-issue-78653.rs | 0 .../yield-outside-generator-issue-78653.stderr | 0 {src/test => tests}/ui/generator/yield-subtype.rs | 0 .../ui/generator/yield-subtype.stderr | 0 .../ui/generator/yield-while-iterating.rs | 0 .../ui/generator/yield-while-iterating.stderr | 0 .../ui/generator/yield-while-local-borrowed.rs | 0 .../ui/generator/yield-while-local-borrowed.stderr | 0 .../ui/generator/yield-while-ref-reborrowed.rs | 0 .../ui/generator/yield-while-ref-reborrowed.stderr | 0 .../ui/generator/yielding-in-match-guards.rs | 0 .../anonymize-bound-vars.rs | 0 .../generic-associated-types/auxiliary/foo_defn.rs | 0 .../generic-associated-types/bugs/hrtb-implied-1.rs | 0 .../bugs/hrtb-implied-1.stderr | 0 .../generic-associated-types/bugs/hrtb-implied-2.rs | 0 .../bugs/hrtb-implied-2.stderr | 0 .../generic-associated-types/bugs/hrtb-implied-3.rs | 0 .../bugs/hrtb-implied-3.stderr | 0 .../generic-associated-types/bugs/issue-100013.rs | 0 .../bugs/issue-100013.stderr | 0 .../ui/generic-associated-types/bugs/issue-80626.rs | 0 .../ui/generic-associated-types/bugs/issue-87735.rs | 0 .../bugs/issue-87735.stderr | 0 .../ui/generic-associated-types/bugs/issue-87755.rs | 0 .../bugs/issue-87755.stderr | 0 .../ui/generic-associated-types/bugs/issue-87803.rs | 0 .../bugs/issue-87803.stderr | 0 .../ui/generic-associated-types/bugs/issue-88382.rs | 0 .../bugs/issue-88382.stderr | 0 .../ui/generic-associated-types/bugs/issue-88460.rs | 0 .../bugs/issue-88460.stderr | 0 .../ui/generic-associated-types/bugs/issue-88526.rs | 0 .../bugs/issue-88526.stderr | 0 .../ui/generic-associated-types/bugs/issue-91762.rs | 0 .../bugs/issue-91762.stderr | 0 .../collections-project-default.rs | 0 .../collections-project-default.stderr | 0 .../ui/generic-associated-types/collections.rs | 0 .../collectivity-regression.rs | 0 .../collectivity-regression.stderr | 0 .../const-generics-gat-in-trait-return-type-1.rs | 0 .../const-generics-gat-in-trait-return-type-2.rs | 0 .../const-generics-gat-in-trait-return-type-3.rs | 0 .../const_params_have_right_type.rs | 0 .../const_params_have_right_type.stderr | 0 .../constraint-assoc-type-suggestion.rs | 0 .../constraint-assoc-type-suggestion.stderr | 0 .../construct_with_other_type.rs | 0 .../generic-associated-types/cross-crate-bounds.rs | 0 .../cross-crate-bounds.stderr | 0 .../elided-in-expr-position.rs | 0 .../elided-in-expr-position.stderr | 0 .../ui/generic-associated-types/empty_generics.rs | 0 .../generic-associated-types/empty_generics.stderr | 0 .../ui/generic-associated-types/equality-bound.rs | 0 .../generic-associated-types/equality-bound.stderr | 0 .../extended/lending_iterator.base.stderr | 0 .../extended/lending_iterator.rs | 0 .../extended/lending_iterator_2.base.stderr | 0 .../extended/lending_iterator_2.rs | 0 .../gat-in-trait-path-undeclared-lifetime.rs | 0 .../gat-in-trait-path-undeclared-lifetime.stderr | 0 .../gat-in-trait-path.base.stderr | 0 .../generic-associated-types/gat-in-trait-path.rs | 0 .../gat-trait-path-generic-type-arg.rs | 0 .../gat-trait-path-generic-type-arg.stderr | 0 .../gat-trait-path-missing-lifetime.rs | 0 .../gat-trait-path-missing-lifetime.stderr | 0 .../gat-trait-path-parenthesised-args.rs | 0 .../gat-trait-path-parenthesised-args.stderr | 0 .../generic-associated-type-bounds.rs | 0 .../generic-associated-types-where.rs | 0 .../generic-associated-types-where.stderr | 0 .../generic_associated_type_undeclared_lifetimes.rs | 0 ...eric_associated_type_undeclared_lifetimes.stderr | 0 .../ui/generic-associated-types/impl_bounds.rs | 0 .../ui/generic-associated-types/impl_bounds.stderr | 0 .../ui/generic-associated-types/impl_bounds_ok.rs | 0 .../ui/generic-associated-types/issue-101020.rs | 0 .../ui/generic-associated-types/issue-101020.stderr | 0 .../ui/generic-associated-types/issue-102114.rs | 0 .../ui/generic-associated-types/issue-102114.stderr | 0 .../ui/generic-associated-types/issue-102333.rs | 0 .../ui/generic-associated-types/issue-102335-gat.rs | 0 .../issue-102335-gat.stderr | 0 .../issue-47206-where-clause.rs | 0 .../issue-47206-where-clause.stderr | 0 .../issue-58694-parameter-out-of-range.rs | 0 .../issue-62326-parameter-out-of-range.rs | 0 .../ui/generic-associated-types/issue-67424.rs | 0 .../issue-67510-pass.base.stderr | 0 .../ui/generic-associated-types/issue-67510-pass.rs | 0 .../ui/generic-associated-types/issue-67510.rs | 0 .../ui/generic-associated-types/issue-67510.stderr | 0 .../issue-68641-check-gat-bounds.rs | 0 .../issue-68641-check-gat-bounds.stderr | 0 .../issue-68642-broken-llvm-ir.rs | 0 .../issue-68642-broken-llvm-ir.stderr | 0 .../issue-68643-broken-mir.rs | 0 .../issue-68643-broken-mir.stderr | 0 .../issue-68644-codegen-selection.rs | 0 .../issue-68644-codegen-selection.stderr | 0 .../issue-68645-codegen-fulfillment.rs | 0 .../issue-68645-codegen-fulfillment.stderr | 0 .../ui/generic-associated-types/issue-68648-1.rs | 0 .../ui/generic-associated-types/issue-68648-2.rs | 0 .../generic-associated-types/issue-68648-2.stderr | 0 .../ui/generic-associated-types/issue-68649-pass.rs | 0 .../ui/generic-associated-types/issue-68653.rs | 0 .../issue-68656-unsized-values.rs | 0 .../issue-68656-unsized-values.stderr | 0 .../ui/generic-associated-types/issue-70303.rs | 0 .../ui/generic-associated-types/issue-70304.rs | 0 .../ui/generic-associated-types/issue-70304.stderr | 0 .../ui/generic-associated-types/issue-71176.rs | 0 .../ui/generic-associated-types/issue-71176.stderr | 0 .../ui/generic-associated-types/issue-74684-1.rs | 0 .../generic-associated-types/issue-74684-1.stderr | 0 .../ui/generic-associated-types/issue-74684-2.rs | 0 .../generic-associated-types/issue-74684-2.stderr | 0 .../ui/generic-associated-types/issue-74816.rs | 0 .../ui/generic-associated-types/issue-74816.stderr | 0 .../ui/generic-associated-types/issue-74824.rs | 0 .../ui/generic-associated-types/issue-74824.stderr | 0 .../ui/generic-associated-types/issue-76407.rs | 0 .../issue-76535.base.stderr | 0 .../issue-76535.extended.stderr | 0 .../ui/generic-associated-types/issue-76535.rs | 0 .../ui/generic-associated-types/issue-76826.rs | 0 .../issue-78113-lifetime-mismatch-dyn-trait-box.rs | 0 ...sue-78113-lifetime-mismatch-dyn-trait-box.stderr | 0 .../issue-78671.base.stderr | 0 .../issue-78671.extended.stderr | 0 .../ui/generic-associated-types/issue-78671.rs | 0 .../issue-79422.base.stderr | 0 .../issue-79422.extended.stderr | 0 .../ui/generic-associated-types/issue-79422.rs | 0 .../ui/generic-associated-types/issue-79636-1.rs | 0 .../generic-associated-types/issue-79636-1.stderr | 0 .../ui/generic-associated-types/issue-79636-2.rs | 0 .../generic-associated-types/issue-79636-2.stderr | 0 .../generic-associated-types/issue-80433-reduced.rs | 0 .../ui/generic-associated-types/issue-80433.rs | 0 .../ui/generic-associated-types/issue-80433.stderr | 0 .../ui/generic-associated-types/issue-81487.rs | 0 .../issue-81712-cyclic-traits.rs | 0 .../issue-81712-cyclic-traits.stderr | 0 .../ui/generic-associated-types/issue-81862.rs | 0 .../ui/generic-associated-types/issue-81862.stderr | 0 .../ui/generic-associated-types/issue-84931.rs | 0 .../ui/generic-associated-types/issue-84931.stderr | 0 .../ui/generic-associated-types/issue-85921.rs | 0 .../ui/generic-associated-types/issue-86218-2.rs | 0 .../ui/generic-associated-types/issue-86218.rs | 0 .../ui/generic-associated-types/issue-86483.rs | 0 .../ui/generic-associated-types/issue-86787.rs | 0 .../ui/generic-associated-types/issue-86787.stderr | 0 .../ui/generic-associated-types/issue-87258_a.rs | 0 .../generic-associated-types/issue-87258_a.stderr | 0 .../ui/generic-associated-types/issue-87258_b.rs | 0 .../generic-associated-types/issue-87258_b.stderr | 0 .../ui/generic-associated-types/issue-87429-2.rs | 0 .../issue-87429-associated-type-default.rs | 0 .../issue-87429-associated-type-default.stderr | 0 .../issue-87429-specialization.rs | 0 .../issue-87429-specialization.stderr | 0 .../ui/generic-associated-types/issue-87429.rs | 0 .../ui/generic-associated-types/issue-87748.rs | 0 .../ui/generic-associated-types/issue-87750.rs | 0 .../ui/generic-associated-types/issue-88287.rs | 0 .../ui/generic-associated-types/issue-88287.stderr | 0 .../ui/generic-associated-types/issue-88360.rs | 0 .../ui/generic-associated-types/issue-88360.stderr | 0 .../ui/generic-associated-types/issue-88405.rs | 0 .../ui/generic-associated-types/issue-88459.rs | 0 .../ui/generic-associated-types/issue-88595.rs | 0 .../ui/generic-associated-types/issue-88595.stderr | 0 .../ui/generic-associated-types/issue-89008.rs | 0 .../ui/generic-associated-types/issue-89352.rs | 0 .../ui/generic-associated-types/issue-90014.rs | 0 .../ui/generic-associated-types/issue-90014.stderr | 0 .../ui/generic-associated-types/issue-90729.rs | 0 .../issue-91139.migrate.stderr | 0 .../ui/generic-associated-types/issue-91139.rs | 0 .../ui/generic-associated-types/issue-91139.stderr | 0 .../ui/generic-associated-types/issue-91883.rs | 0 .../ui/generic-associated-types/issue-91883.stderr | 0 .../ui/generic-associated-types/issue-92033.rs | 0 .../ui/generic-associated-types/issue-92033.stderr | 0 .../issue-92096.migrate.stderr | 0 .../ui/generic-associated-types/issue-92096.rs | 0 .../ui/generic-associated-types/issue-92096.stderr | 0 .../ui/generic-associated-types/issue-92280.rs | 0 .../ui/generic-associated-types/issue-92954.rs | 0 .../ui/generic-associated-types/issue-93141.rs | 0 .../ui/generic-associated-types/issue-93262.rs | 0 .../ui/generic-associated-types/issue-93340.rs | 0 .../ui/generic-associated-types/issue-93341.rs | 0 .../ui/generic-associated-types/issue-93342.rs | 0 .../ui/generic-associated-types/issue-93874.rs | 0 .../ui/generic-associated-types/issue-95305.rs | 0 .../ui/generic-associated-types/issue-95305.stderr | 0 .../ui/generic-associated-types/iterable.rs | 0 .../method-unsatified-assoc-type-predicate.rs | 0 .../method-unsatified-assoc-type-predicate.stderr | 0 .../mismatched-where-clause-regions.rs | 0 .../mismatched-where-clause-regions.stderr | 0 .../generic-associated-types/missing-bounds.fixed | 0 .../ui/generic-associated-types/missing-bounds.rs | 0 .../generic-associated-types/missing-bounds.stderr | 0 .../missing-where-clause-on-trait.rs | 0 .../missing-where-clause-on-trait.stderr | 0 .../missing_lifetime_args.rs | 0 .../missing_lifetime_args.stderr | 0 .../missing_lifetime_const.rs | 0 .../missing_lifetime_const.stderr | 0 .../ui/generic-associated-types/own-bound-span.rs | 0 .../generic-associated-types/own-bound-span.stderr | 0 .../parameter_number_and_kind.rs | 0 .../parameter_number_and_kind.stderr | 0 .../parameter_number_and_kind_impl.rs | 0 .../parameter_number_and_kind_impl.stderr | 0 .../generic-associated-types/parse/in-trait-impl.rs | 0 .../ui/generic-associated-types/parse/in-trait.rs | 0 .../parse/trait-path-expected-token.rs | 0 .../parse/trait-path-expected-token.stderr | 0 .../parse/trait-path-expressions.rs | 0 .../parse/trait-path-expressions.stderr | 0 .../parse/trait-path-missing-gen_arg.rs | 0 .../parse/trait-path-missing-gen_arg.stderr | 0 .../parse/trait-path-segments.rs | 0 .../parse/trait-path-segments.stderr | 0 .../parse/trait-path-type-error-once-implemented.rs | 0 .../trait-path-type-error-once-implemented.stderr | 0 .../parse/trait-path-types.rs | 0 .../parse/trait-path-types.stderr | 0 .../ui/generic-associated-types/pointer_family.rs | 0 .../projection-bound-cycle-generic.rs | 0 .../projection-bound-cycle-generic.stderr | 0 .../projection-bound-cycle.rs | 0 .../projection-bound-cycle.stderr | 0 .../projection-type-lifetime-mismatch.rs | 0 .../projection-type-lifetime-mismatch.stderr | 0 .../generic-associated-types/self-outlives-lint.rs | 0 .../self-outlives-lint.stderr | 0 .../ui/generic-associated-types/shadowing.rs | 0 .../ui/generic-associated-types/shadowing.stderr | 0 .../generic-associated-types/streaming_iterator.rs | 0 .../trait-objects.base.stderr | 0 .../trait-objects.extended.stderr | 0 .../ui/generic-associated-types/trait-objects.rs | 0 .../generic-associated-types/type-param-defaults.rs | 0 .../type-param-defaults.stderr | 0 .../unsatified-item-lifetime-bound.rs | 0 .../unsatified-item-lifetime-bound.stderr | 0 .../unsatisfied-outlives-bound.rs | 0 .../unsatisfied-outlives-bound.stderr | 0 .../variance_constraints.rs | 0 {src/test => tests}/ui/generics/autobind.rs | 0 .../ui/generics/auxiliary/default_type_params_xc.rs | 0 .../ui/generics/bad-mid-path-type-params.rs | 0 .../ui/generics/bad-mid-path-type-params.stderr | 0 .../ui/generics/generic-alias-unique.rs | 0 .../ui/generics/generic-arg-mismatch-recover.rs | 0 .../ui/generics/generic-arg-mismatch-recover.stderr | 0 .../generic-default-type-params-cross-crate.rs | 0 .../ui/generics/generic-default-type-params.rs | 0 .../ui/generics/generic-derived-type.rs | 0 .../ui/generics/generic-exterior-unique.rs | 0 .../ui/generics/generic-extern-lifetime.rs | 0 .../ui/generics/generic-extern-lifetime.stderr | 0 .../ui/generics/generic-extern-mangle.rs | 0 {src/test => tests}/ui/generics/generic-extern.rs | 0 .../ui/generics/generic-extern.stderr | 0 {src/test => tests}/ui/generics/generic-fn-infer.rs | 0 {src/test => tests}/ui/generics/generic-fn-twice.rs | 0 .../test => tests}/ui/generics/generic-fn-unique.rs | 0 {src/test => tests}/ui/generics/generic-fn.rs | 0 .../ui/generics/generic-function-item-where-type.rs | 0 .../generic-function-item-where-type.stderr | 0 .../generic-impl-less-params-with-defaults.rs | 0 .../generic-impl-less-params-with-defaults.stderr | 0 .../generic-impl-more-params-with-defaults.rs | 0 .../generic-impl-more-params-with-defaults.stderr | 0 .../test => tests}/ui/generics/generic-ivec-leak.rs | 0 .../ui/generics/generic-lifetime-trait-impl.rs | 0 .../ui/generics/generic-lifetime-trait-impl.stderr | 0 .../ui/generics/generic-newtype-struct.rs | 0 .../ui/generics/generic-no-mangle.fixed | 0 .../test => tests}/ui/generics/generic-no-mangle.rs | 0 .../ui/generics/generic-no-mangle.stderr | 0 .../ui/generics/generic-non-trailing-defaults.rs | 0 .../generics/generic-non-trailing-defaults.stderr | 0 {src/test => tests}/ui/generics/generic-object.rs | 0 .../ui/generics/generic-param-attrs.rs | 0 .../ui/generics/generic-recursive-tag.rs | 0 .../ui/generics/generic-static-methods.rs | 0 .../ui/generics/generic-tag-corruption.rs | 0 .../test => tests}/ui/generics/generic-tag-local.rs | 0 .../test => tests}/ui/generics/generic-tag-match.rs | 0 .../ui/generics/generic-tag-values.rs | 0 {src/test => tests}/ui/generics/generic-tag.rs | 0 .../test => tests}/ui/generics/generic-temporary.rs | 0 {src/test => tests}/ui/generics/generic-tup.rs | 0 .../generic-type-less-params-with-defaults.rs | 0 .../generic-type-less-params-with-defaults.stderr | 0 .../generic-type-more-params-with-defaults.rs | 0 .../generic-type-more-params-with-defaults.stderr | 0 .../generics/generic-type-params-forward-mention.rs | 0 .../generic-type-params-forward-mention.stderr | 0 .../ui/generics/generic-type-params-name-repr.rs | 0 .../generics/generic-type-params-name-repr.stderr | 0 .../ui/generics/generic-type-synonym.rs | 0 {src/test => tests}/ui/generics/generic-type.rs | 0 {src/test => tests}/ui/generics/generic-unique.rs | 0 {src/test => tests}/ui/generics/issue-1112.rs | 0 {src/test => tests}/ui/generics/issue-2936.rs | 0 {src/test => tests}/ui/generics/issue-32498.rs | 0 {src/test => tests}/ui/generics/issue-333.rs | 0 {src/test => tests}/ui/generics/issue-59508-1.rs | 0 .../test => tests}/ui/generics/issue-59508-1.stderr | 0 {src/test => tests}/ui/generics/issue-59508.fixed | 0 {src/test => tests}/ui/generics/issue-59508.rs | 0 {src/test => tests}/ui/generics/issue-59508.stderr | 0 ...efault-type-param-can-reference-self-in-trait.rs | 0 ...lt-type-param-can-reference-self-in-trait.stderr | 0 ...1631-default-type-param-cannot-reference-self.rs | 0 ...-default-type-param-cannot-reference-self.stderr | 0 ...65285-incorrect-explicit-lifetime-name-needed.rs | 0 ...5-incorrect-explicit-lifetime-name-needed.stderr | 0 .../issue-80512-param-reordering-with-defaults.rs | 0 ...ssue-80512-param-reordering-with-defaults.stderr | 0 .../ui/generics/issue-94432-garbage-ice.rs | 0 {src/test => tests}/ui/generics/issue-94923.rs | 0 .../ui/generics/issue-95208-ignore-qself.fixed | 0 .../ui/generics/issue-95208-ignore-qself.rs | 0 .../ui/generics/issue-95208-ignore-qself.stderr | 0 {src/test => tests}/ui/generics/issue-95208.fixed | 0 {src/test => tests}/ui/generics/issue-95208.rs | 0 {src/test => tests}/ui/generics/issue-95208.stderr | 0 {src/test => tests}/ui/generics/issue-98432.rs | 0 {src/test => tests}/ui/generics/issue-98432.stderr | 0 .../ui/generics/lifetime-before-type-params.rs | 0 .../ui/generics/lifetime-before-type-params.stderr | 0 .../ui/generics/mid-path-type-params.rs | 0 .../ui/generics/param-in-ct-in-ty-param-default.rs | 0 .../generics/param-in-ct-in-ty-param-default.stderr | 0 .../post_monomorphization_error_backtrace.rs | 0 .../post_monomorphization_error_backtrace.stderr | 0 .../single-colon-path-not-const-generics.rs | 0 .../single-colon-path-not-const-generics.stderr | 0 .../ui/generics/type-params-in-for-each.rs | 0 .../ui/generics/wrong-number-of-args.rs | 0 .../ui/generics/wrong-number-of-args.stderr | 0 {src/test => tests}/ui/global-scope.rs | 0 .../exclusive_range_pattern_syntax_collision.rs | 0 .../exclusive_range_pattern_syntax_collision.stderr | 0 .../exclusive_range_pattern_syntax_collision2.rs | 0 ...exclusive_range_pattern_syntax_collision2.stderr | 0 .../exclusive_range_pattern_syntax_collision3.rs | 0 ...exclusive_range_pattern_syntax_collision3.stderr | 0 ...ature-gate-half-open-range-patterns-in-slices.rs | 0 ...e-gate-half-open-range-patterns-in-slices.stderr | 0 .../half-open-range-pats-bad-types.rs | 0 .../half-open-range-pats-bad-types.stderr | 0 .../half-open-range-pats-exhaustive-fail.rs | 0 .../half-open-range-pats-exhaustive-fail.stderr | 0 .../half-open-range-pats-exhaustive-pass.rs | 0 ...pen-range-pats-inclusive-dotdotdot-bad-syntax.rs | 0 ...range-pats-inclusive-dotdotdot-bad-syntax.stderr | 0 .../half-open-range-pats-inclusive-no-end.rs | 0 .../half-open-range-pats-inclusive-no-end.stderr | 0 .../half-open-range-pats-ref-ambiguous-interp.rs | 0 ...half-open-range-pats-ref-ambiguous-interp.stderr | 0 .../half-open-range-pats-semantics.rs | 0 .../half-open-range-pats-syntactic-pass.rs | 0 .../half-open-range-pats-thir-lower-empty.rs | 0 .../half-open-range-pats-thir-lower-empty.stderr | 0 .../ui/half-open-range-patterns/pat-tuple-4.rs | 0 .../ui/half-open-range-patterns/pat-tuple-5.rs | 0 .../ui/half-open-range-patterns/pat-tuple-5.stderr | 0 .../range_pat_interactions0.rs | 0 .../range_pat_interactions1.rs | 0 .../range_pat_interactions1.stderr | 0 .../range_pat_interactions2.rs | 0 .../range_pat_interactions2.stderr | 0 .../range_pat_interactions3.rs | 0 .../range_pat_interactions3.stderr | 0 .../slice_pattern_syntax_problem0.rs | 0 .../slice_pattern_syntax_problem0.stderr | 0 .../slice_pattern_syntax_problem1.rs | 0 .../slice_pattern_syntax_problem1.stderr | 0 .../slice_pattern_syntax_problem2.rs | 0 .../ui/hashmap/hashmap-capacity-overflow.rs | 0 {src/test => tests}/ui/hashmap/hashmap-index-mut.rs | 0 .../ui/hashmap/hashmap-index-mut.stderr | 0 .../ui/hashmap/hashmap-iter-value-lifetime.rs | 0 .../ui/hashmap/hashmap-iter-value-lifetime.stderr | 0 {src/test => tests}/ui/hashmap/hashmap-lifetimes.rs | 0 .../ui/hashmap/hashmap-lifetimes.stderr | 0 {src/test => tests}/ui/hashmap/hashmap-memory.rs | 0 {src/test => tests}/ui/hello.rs | 0 {src/test => tests}/ui/hello_world/main.rs | 0 {src/test => tests}/ui/higher-lifetime-bounds.rs | 0 .../test => tests}/ui/higher-lifetime-bounds.stderr | 0 .../ui/higher-rank-trait-bounds/complex.rs | 0 .../higher-rank-trait-bounds/due-to-where-clause.rs | 0 .../due-to-where-clause.stderr | 0 .../hang-on-deeply-nested-dyn.rs | 0 .../hang-on-deeply-nested-dyn.stderr | 0 .../hrtb-binder-levels-in-object-types.rs | 0 .../hrtb-cache-issue-54302.rs | 0 .../hrtb-cache-issue-54302.stderr | 0 .../hrtb-conflate-regions.rs | 0 .../hrtb-conflate-regions.stderr | 0 .../hrtb-debruijn-in-receiver.rs | 0 .../hrtb-debruijn-in-receiver.stderr | 0 .../hrtb-debruijn-object-types-in-closures.rs | 0 .../hrtb-exists-forall-fn.rs | 0 .../hrtb-exists-forall-fn.stderr | 0 .../hrtb-exists-forall-trait-contravariant.rs | 0 .../hrtb-exists-forall-trait-contravariant.stderr | 0 .../hrtb-exists-forall-trait-covariant.rs | 0 .../hrtb-exists-forall-trait-invariant.rs | 0 .../hrtb-exists-forall-trait-invariant.stderr | 0 .../hrtb-fn-like-trait-object.rs | 0 .../higher-rank-trait-bounds/hrtb-fn-like-trait.rs | 0 .../hrtb-higher-ranker-supertraits-transitive.rs | 0 ...hrtb-higher-ranker-supertraits-transitive.stderr | 0 .../hrtb-higher-ranker-supertraits.rs | 0 .../hrtb-higher-ranker-supertraits.stderr | 0 .../hrtb-identity-fn-borrows.rs | 0 .../hrtb-identity-fn-borrows.stderr | 0 .../hrtb-just-for-static.rs | 0 .../hrtb-just-for-static.stderr | 0 .../hrtb-malformed-lifetime-generics.rs | 0 .../hrtb-malformed-lifetime-generics.stderr | 0 .../ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs | 0 .../ui/higher-rank-trait-bounds/hrtb-parse.rs | 0 .../hrtb-perfect-forwarding.polonius.stderr | 0 .../hrtb-perfect-forwarding.rs | 0 .../hrtb-perfect-forwarding.stderr | 0 .../hrtb-precedence-of-plus-where-clause.rs | 0 .../hrtb-precedence-of-plus.rs | 0 .../hrtb-resolve-lifetime.rs | 0 .../hrtb-trait-object-paren-notation.rs | 0 .../hrtb-trait-object-passed-to-closure.rs | 0 .../higher-rank-trait-bounds/hrtb-type-outlives.rs | 0 .../hrtb-unboxed-closure-trait.rs | 0 .../ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs | 0 .../higher-rank-trait-bounds/hrtb-wrong-kind.stderr | 0 .../ui/higher-rank-trait-bounds/issue-100689.rs | 0 .../ui/higher-rank-trait-bounds/issue-102899.rs | 0 .../ui/higher-rank-trait-bounds/issue-30786.rs | 0 .../ui/higher-rank-trait-bounds/issue-30786.stderr | 0 .../issue-36139-normalize-closure-sig.rs | 0 .../ui/higher-rank-trait-bounds/issue-43623.rs | 0 .../ui/higher-rank-trait-bounds/issue-46989.rs | 0 .../ui/higher-rank-trait-bounds/issue-46989.stderr | 0 .../ui/higher-rank-trait-bounds/issue-57639.rs | 0 .../ui/higher-rank-trait-bounds/issue-58451.rs | 0 .../ui/higher-rank-trait-bounds/issue-58451.stderr | 0 .../ui/higher-rank-trait-bounds/issue-59311.rs | 0 .../ui/higher-rank-trait-bounds/issue-59311.stderr | 0 .../ui/higher-rank-trait-bounds/issue-60283.rs | 0 .../issue-62203-hrtb-ice.rs | 0 .../issue-62203-hrtb-ice.stderr | 0 .../ui/higher-rank-trait-bounds/issue-88446.rs | 0 .../issue-88586-hr-self-outlives-in-trait-def.rs | 0 .../ui/higher-rank-trait-bounds/issue-90177.rs | 0 .../ui/higher-rank-trait-bounds/issue-95034.rs | 0 .../ui/higher-rank-trait-bounds/issue-95230.rs | 0 .../normalize-under-binder/issue-44005.rs | 0 .../normalize-under-binder/issue-56556.rs | 0 .../normalize-under-binder/issue-62529-1.rs | 0 .../normalize-under-binder/issue-62529-2.rs | 0 .../normalize-under-binder/issue-62529-3.rs | 0 .../normalize-under-binder/issue-62529-3.stderr | 0 .../normalize-under-binder/issue-62529-4.rs | 0 .../normalize-under-binder/issue-62529-5.rs | 0 .../normalize-under-binder/issue-62529-6.rs | 0 .../normalize-under-binder/issue-70120.rs | 0 .../issue-71955.migrate.stderr | 0 .../normalize-under-binder/issue-71955.rs | 0 .../normalize-under-binder/issue-71955.stderr | 0 .../normalize-under-binder/issue-74261.rs | 0 .../normalize-under-binder/issue-76956.rs | 0 .../normalize-under-binder/issue-80706.rs | 0 .../normalize-under-binder/issue-80956.rs | 0 .../normalize-under-binder/issue-81809.rs | 0 .../normalize-under-binder/issue-85455.rs | 0 .../normalize-under-binder/issue-85455.stderr | 0 .../normalize-under-binder/issue-89118.rs | 0 .../normalize-under-binder/issue-89118.stderr | 0 .../normalize-under-binder/issue-89436.rs | 0 .../normalize-under-binder/issue-90612.rs | 0 .../normalize-under-binder/issue-90638.rs | 0 .../normalize-under-binder/issue-90875.rs | 0 .../normalize-under-binder/issue-90950.rs | 0 .../normalize-under-binder/issue-90950.stderr | 0 .../norm-before-method-resolution.rs | 0 .../norm-before-method-resolution.stderr | 0 ...-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr | 0 .../hr-subtype/hr-subtype.bound_a_vs_free_x.stderr | 0 .../hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr | 0 .../hr-subtype.free_inv_x_vs_free_inv_y.stderr | 0 .../hr-subtype/hr-subtype.free_x_vs_free_y.stderr | 0 {src/test => tests}/ui/hr-subtype/hr-subtype.rs | 0 .../ui/hr-subtype/placeholder-pattern-fail.rs | 0 .../ui/hr-subtype/placeholder-pattern-fail.stderr | 0 .../ui/hr-subtype/placeholder-pattern.rs | 0 {src/test => tests}/ui/hr-subtype/return-static.rs | 0 {src/test => tests}/ui/hygiene/arguments.rs | 0 {src/test => tests}/ui/hygiene/arguments.stderr | 0 {src/test => tests}/ui/hygiene/assoc_item_ctxt.rs | 0 .../ui/hygiene/assoc_item_ctxt.stderr | 0 {src/test => tests}/ui/hygiene/assoc_ty_bindings.rs | 0 .../ui/hygiene/auxiliary/codegen-attrs.rs | 0 .../ui/hygiene/auxiliary/def-site-async-await.rs | 0 {src/test => tests}/ui/hygiene/auxiliary/fields.rs | 0 .../ui/hygiene/auxiliary/intercrate.rs | 0 .../ui/hygiene/auxiliary/legacy_interaction.rs | 0 .../ui/hygiene/auxiliary/local_inner_macros.rs | 0 {src/test => tests}/ui/hygiene/auxiliary/methods.rs | 0 .../test => tests}/ui/hygiene/auxiliary/my_crate.rs | 0 .../ui/hygiene/auxiliary/needs_hygiene.rs | 0 .../ui/hygiene/auxiliary/nested-dollar-crate.rs | 0 .../ui/hygiene/auxiliary/not-libstd.rs | 0 .../ui/hygiene/auxiliary/opaque-hygiene.rs | 0 .../ui/hygiene/auxiliary/pub_hygiene.rs | 0 .../ui/hygiene/auxiliary/stdlib-prelude.rs | 0 .../ui/hygiene/auxiliary/transparent-basic.rs | 0 .../ui/hygiene/auxiliary/unhygienic_example.rs | 0 .../ui/hygiene/auxiliary/use_by_macro.rs | 0 .../test => tests}/ui/hygiene/auxiliary/variants.rs | 0 {src/test => tests}/ui/hygiene/auxiliary/xcrate.rs | 0 .../ui/hygiene/cross-crate-codegen-attrs.rs | 0 .../ui/hygiene/cross-crate-define-and-use.rs | 0 .../test => tests}/ui/hygiene/cross-crate-fields.rs | 0 .../ui/hygiene/cross-crate-glob-hygiene.rs | 0 .../ui/hygiene/cross-crate-glob-hygiene.stderr | 0 .../ui/hygiene/cross-crate-methods.rs | 0 .../ui/hygiene/cross-crate-name-collision.rs | 0 .../ui/hygiene/cross-crate-name-hiding-2.rs | 0 .../ui/hygiene/cross-crate-name-hiding-2.stderr | 0 .../ui/hygiene/cross-crate-name-hiding.rs | 0 .../ui/hygiene/cross-crate-name-hiding.stderr | 0 .../ui/hygiene/cross-crate-redefine.rs | 0 .../ui/hygiene/cross-crate-redefine.stderr | 0 .../ui/hygiene/cross-crate-variants.rs | 0 .../ui/hygiene/dollar-crate-modern.rs | 0 .../ui/hygiene/duplicate_lifetimes.rs | 0 .../ui/hygiene/duplicate_lifetimes.stderr | 0 .../ui/hygiene/eager-from-opaque-2.rs | 0 {src/test => tests}/ui/hygiene/eager-from-opaque.rs | 0 .../ui/hygiene/expansion-info-reset.rs | 0 .../ui/hygiene/expansion-info-reset.stderr | 0 .../ui/hygiene/extern-prelude-from-opaque-fail.rs | 0 .../hygiene/extern-prelude-from-opaque-fail.stderr | 0 {src/test => tests}/ui/hygiene/fields-definition.rs | 0 .../ui/hygiene/fields-definition.stderr | 0 {src/test => tests}/ui/hygiene/fields-move.rs | 0 {src/test => tests}/ui/hygiene/fields-move.stderr | 0 .../ui/hygiene/fields-numeric-borrowck.rs | 0 .../ui/hygiene/fields-numeric-borrowck.stderr | 0 {src/test => tests}/ui/hygiene/fields.rs | 0 {src/test => tests}/ui/hygiene/fields.stderr | 0 {src/test => tests}/ui/hygiene/for-loop.rs | 0 {src/test => tests}/ui/hygiene/for-loop.stderr | 0 {src/test => tests}/ui/hygiene/format-args.rs | 0 {src/test => tests}/ui/hygiene/generate-mod.rs | 0 {src/test => tests}/ui/hygiene/generate-mod.stderr | 0 {src/test => tests}/ui/hygiene/generic_params.rs | 0 {src/test => tests}/ui/hygiene/globs.rs | 0 {src/test => tests}/ui/hygiene/globs.stderr | 0 {src/test => tests}/ui/hygiene/hir-res-hygiene.rs | 0 {src/test => tests}/ui/hygiene/hygiene-dodging-1.rs | 0 {src/test => tests}/ui/hygiene/hygiene.rs | 0 {src/test => tests}/ui/hygiene/hygienic-label-1.rs | 0 .../ui/hygiene/hygienic-label-1.stderr | 0 {src/test => tests}/ui/hygiene/hygienic-label-2.rs | 0 .../ui/hygiene/hygienic-label-2.stderr | 0 {src/test => tests}/ui/hygiene/hygienic-label-3.rs | 0 .../ui/hygiene/hygienic-label-3.stderr | 0 {src/test => tests}/ui/hygiene/hygienic-label-4.rs | 0 .../ui/hygiene/hygienic-label-4.stderr | 0 .../ui/hygiene/hygienic-labels-in-let.rs | 0 {src/test => tests}/ui/hygiene/hygienic-labels.rs | 0 {src/test => tests}/ui/hygiene/impl_items-2.rs | 0 {src/test => tests}/ui/hygiene/impl_items-2.stderr | 0 {src/test => tests}/ui/hygiene/impl_items.rs | 0 {src/test => tests}/ui/hygiene/impl_items.stderr | 0 {src/test => tests}/ui/hygiene/intercrate.rs | 0 {src/test => tests}/ui/hygiene/intercrate.stderr | 0 {src/test => tests}/ui/hygiene/issue-15221.rs | 0 {src/test => tests}/ui/hygiene/issue-32922.rs | 0 {src/test => tests}/ui/hygiene/issue-40847.rs | 0 {src/test => tests}/ui/hygiene/issue-44128.rs | 0 {src/test => tests}/ui/hygiene/issue-47311.rs | 0 {src/test => tests}/ui/hygiene/issue-47312.rs | 0 .../ui/hygiene/issue-61574-const-parameters.rs | 0 .../ui/hygiene/issue-77523-def-site-async-await.rs | 0 {src/test => tests}/ui/hygiene/items.rs | 0 .../test => tests}/ui/hygiene/lambda-var-hygiene.rs | 0 .../test => tests}/ui/hygiene/legacy_interaction.rs | 0 {src/test => tests}/ui/hygiene/lexical.rs | 0 .../test => tests}/ui/hygiene/local_inner_macros.rs | 0 .../ui/hygiene/macro-metavars-legacy.rs | 0 .../ui/hygiene/macro-metavars-transparent.rs | 0 {src/test => tests}/ui/hygiene/missing-self-diag.rs | 0 .../ui/hygiene/missing-self-diag.stderr | 0 .../ui/hygiene/nested-dollar-crate.rs | 0 .../ui/hygiene/nested_macro_privacy.rs | 0 .../ui/hygiene/nested_macro_privacy.stderr | 0 .../ui/hygiene/no_implicit_prelude-2018.rs | 0 .../ui/hygiene/no_implicit_prelude-2018.stderr | 0 .../ui/hygiene/no_implicit_prelude-2021.rs | 0 .../ui/hygiene/no_implicit_prelude.rs | 0 .../ui/hygiene/no_implicit_prelude.stderr | 0 {src/test => tests}/ui/hygiene/panic-location.rs | 0 .../ui/hygiene/panic-location.run.stderr | 0 {src/test => tests}/ui/hygiene/pattern-macro.rs | 0 {src/test => tests}/ui/hygiene/pattern-macro.stderr | 0 .../ui/hygiene/prelude-import-hygiene.rs | 0 {src/test => tests}/ui/hygiene/privacy-early.rs | 0 {src/test => tests}/ui/hygiene/privacy-early.stderr | 0 {src/test => tests}/ui/hygiene/privacy.rs | 0 {src/test => tests}/ui/hygiene/privacy.stderr | 0 .../ui/hygiene/rustc-macro-transparency.rs | 0 .../ui/hygiene/rustc-macro-transparency.stderr | 0 {src/test => tests}/ui/hygiene/specialization.rs | 0 .../ui/hygiene/stdlib-prelude-from-opaque-early.rs | 0 .../ui/hygiene/stdlib-prelude-from-opaque-late.rs | 0 .../ui/hygiene/thread-local-not-in-prelude.rs | 0 {src/test => tests}/ui/hygiene/trait_items-2.rs | 0 {src/test => tests}/ui/hygiene/trait_items.rs | 0 {src/test => tests}/ui/hygiene/trait_items.stderr | 0 {src/test => tests}/ui/hygiene/traits-in-scope.rs | 0 {src/test => tests}/ui/hygiene/transparent-basic.rs | 0 {src/test => tests}/ui/hygiene/unpretty-debug.rs | 0 .../test => tests}/ui/hygiene/unpretty-debug.stdout | 0 .../ui/hygiene/wrap_unhygienic_example.rs | 0 {src/test => tests}/ui/hygiene/xcrate.rs | 0 .../mutability-mismatch-arg.fixed | 0 .../illegal-sized-bound/mutability-mismatch-arg.rs | 0 .../mutability-mismatch-arg.stderr | 0 .../ui/illegal-sized-bound/mutability-mismatch.rs | 0 .../illegal-sized-bound/mutability-mismatch.stderr | 0 .../ui/illegal-sized-bound/regular.rs | 0 .../ui/illegal-sized-bound/regular.stderr | 0 {src/test => tests}/ui/illegal-ufcs-drop.fixed | 0 {src/test => tests}/ui/illegal-ufcs-drop.rs | 0 {src/test => tests}/ui/illegal-ufcs-drop.stderr | 0 .../ui/impl-header-lifetime-elision/assoc-type.rs | 0 .../impl-header-lifetime-elision/assoc-type.stderr | 0 .../constant-used-as-arraylen.rs | 0 .../ui/impl-header-lifetime-elision/dyn-trait.rs | 0 .../impl-header-lifetime-elision/dyn-trait.stderr | 0 .../explicit-and-elided-same-header.rs | 0 .../impl-header-lifetime-elision/inherent-impl.rs | 0 .../ui/impl-header-lifetime-elision/path-elided.rs | 0 .../impl-header-lifetime-elision/path-elided.stderr | 0 .../impl-header-lifetime-elision/path-underscore.rs | 0 .../impl-header-lifetime-elision/ref-underscore.rs | 0 .../ui/impl-header-lifetime-elision/trait-elided.rs | 0 .../trait-elided.stderr | 0 .../trait-underscore.rs | 0 .../test => tests}/ui/impl-inherent-non-conflict.rs | 0 {src/test => tests}/ui/impl-not-adjacent-to-type.rs | 0 {src/test => tests}/ui/impl-privacy-xc-1.rs | 0 .../associated-impl-trait-type-generic-trait.rs | 0 .../associated-impl-trait-type-trivial.rs | 0 .../ui/impl-trait/associated-impl-trait-type.rs | 0 .../ui/impl-trait/async_scope_creep.rs | 0 .../ui/impl-trait/auto-trait-leak-rpass.rs | 0 .../test => tests}/ui/impl-trait/auto-trait-leak.rs | 0 .../ui/impl-trait/auto-trait-leak.stderr | 0 .../ui/impl-trait/auto-trait-leak2.rs | 0 .../ui/impl-trait/auto-trait-leak2.stderr | 0 {src/test => tests}/ui/impl-trait/auto-trait.rs | 0 {src/test => tests}/ui/impl-trait/auto-trait.stderr | 0 {src/test => tests}/ui/impl-trait/autoderef.rs | 0 .../ui/impl-trait/auxiliary/extra-item.rs | 0 .../auxiliary/no_method_suggested_traits.rs | 0 .../ui/impl-trait/auxiliary/xcrate.rs | 0 .../ui/impl-trait/bound-normalization-fail.rs | 0 .../ui/impl-trait/bound-normalization-fail.stderr | 0 .../ui/impl-trait/bound-normalization-pass.rs | 0 .../ui/impl-trait/bounds_regression.rs | 0 .../impl-trait/can-return-unconstrained-closure.rs | 0 .../ui/impl-trait/closure-calling-parent-fn.rs | 0 .../ui/impl-trait/closure-in-impl-trait-arg.rs | 0 .../ui/impl-trait/closure-in-impl-trait.rs | 0 .../ui/impl-trait/cross-return-site-inference.rs | 0 .../impl-trait/cross-return-site-inference.stderr | 0 .../impl-trait/deduce-signature-from-supertrait.rs | 0 .../ui/impl-trait/deprecated_annotation.rs | 0 .../diagnostics/fully-qualified-path-impl-trait.rs | 0 .../fully-qualified-path-impl-trait.stderr | 0 {src/test => tests}/ui/impl-trait/divergence.rs | 0 .../ui/impl-trait/does-not-live-long-enough.rs | 0 .../ui/impl-trait/does-not-live-long-enough.stderr | 0 .../impl-trait/dyn-trait-elided-two-inputs-assoc.rs | 0 .../impl-trait/dyn-trait-elided-two-inputs-param.rs | 0 .../dyn-trait-elided-two-inputs-ref-assoc.rs | 0 .../dyn-trait-elided-two-inputs-ref-param.rs | 0 .../dyn-trait-return-should-be-impl-trait.rs | 0 .../dyn-trait-return-should-be-impl-trait.stderr | 0 .../ui/impl-trait/equal-hidden-lifetimes.rs | 0 .../ui/impl-trait/equal-hidden-lifetimes.stderr | 0 {src/test => tests}/ui/impl-trait/equality-rpass.rs | 0 .../ui/impl-trait/equality-rpass.stderr | 0 {src/test => tests}/ui/impl-trait/equality.rs | 0 {src/test => tests}/ui/impl-trait/equality.stderr | 0 {src/test => tests}/ui/impl-trait/equality2.rs | 0 {src/test => tests}/ui/impl-trait/equality2.stderr | 0 .../ui/impl-trait/example-calendar.rs | 0 {src/test => tests}/ui/impl-trait/example-st.rs | 0 .../const-args.rs | 0 .../explicit-generic-args-for-impl.rs | 0 .../explicit-generic-args-for-impl.stderr | 0 .../explicit-generic-args.rs | 0 .../issue-87718.rs | 0 .../not-enough-args.rs | 0 .../not-enough-args.stderr | 0 {src/test => tests}/ui/impl-trait/extra-item.rs | 0 {src/test => tests}/ui/impl-trait/extra-item.stderr | 0 {src/test => tests}/ui/impl-trait/fallback.rs | 0 .../ui/impl-trait/fallback_inference.rs | 0 .../ui/impl-trait/fallback_inference.stderr | 0 .../ui/impl-trait/feature-self-return-type.rs | 0 .../ui/impl-trait/feature-self-return-type.stderr | 0 ...ith-implicit-hrtb-without-dyn.edition2015.stderr | 0 ...ith-implicit-hrtb-without-dyn.edition2021.stderr | 0 .../generic-with-implicit-hrtb-without-dyn.rs | 0 .../ui/impl-trait/hidden-lifetimes.rs | 0 .../ui/impl-trait/hidden-lifetimes.stderr | 0 .../ui/impl-trait/hidden-type-is-opaque-2.rs | 0 .../ui/impl-trait/hidden-type-is-opaque-2.stderr | 0 .../ui/impl-trait/hidden-type-is-opaque.rs | 0 .../ui/impl-trait/impl-fn-hrtb-bounds-2.rs | 0 .../ui/impl-trait/impl-fn-hrtb-bounds-2.stderr | 0 .../ui/impl-trait/impl-fn-hrtb-bounds.rs | 0 .../ui/impl-trait/impl-fn-hrtb-bounds.stderr | 0 .../ui/impl-trait/impl-fn-parsing-ambiguities.rs | 0 .../impl-trait/impl-fn-parsing-ambiguities.stderr | 0 .../ui/impl-trait/impl-fn-predefined-lifetimes.rs | 0 .../impl-trait/impl-fn-predefined-lifetimes.stderr | 0 .../ui/impl-trait/impl-generic-mismatch-ab.rs | 0 .../ui/impl-trait/impl-generic-mismatch-ab.stderr | 0 .../ui/impl-trait/impl-generic-mismatch.rs | 0 .../ui/impl-trait/impl-generic-mismatch.stderr | 0 .../ui/impl-trait/impl-trait-in-macro.rs | 0 .../ui/impl-trait/impl-trait-in-macro.stderr | 0 .../ui/impl-trait/impl-trait-plus-priority.rs | 0 .../ui/impl-trait/impl-trait-plus-priority.stderr | 0 .../ui/impl-trait/impl_fn_associativity.rs | 0 .../ui/impl-trait/impl_trait_projections.rs | 0 .../ui/impl-trait/impl_trait_projections.stderr | 0 .../ui/impl-trait/in-trait/auxiliary/rpitit.rs | 0 .../in-trait/box-coerce-span-in-default.rs | 0 .../in-trait/box-coerce-span-in-default.stderr | 0 .../ui/impl-trait/in-trait/deep-match-works.rs | 0 .../ui/impl-trait/in-trait/deep-match.rs | 0 .../ui/impl-trait/in-trait/deep-match.stderr | 0 .../impl-trait/in-trait/default-body-type-err-2.rs | 0 .../in-trait/default-body-type-err-2.stderr | 0 .../ui/impl-trait/in-trait/default-body-type-err.rs | 0 .../in-trait/default-body-type-err.stderr | 0 .../impl-trait/in-trait/default-body-with-rpit.rs | 0 .../ui/impl-trait/in-trait/default-body.rs | 0 .../ui/impl-trait/in-trait/doesnt-satisfy.rs | 0 .../ui/impl-trait/in-trait/doesnt-satisfy.stderr | 0 {src/test => tests}/ui/impl-trait/in-trait/early.rs | 0 .../test => tests}/ui/impl-trait/in-trait/encode.rs | 0 .../ui/impl-trait/in-trait/foreign.rs | 0 .../ui/impl-trait/in-trait/generics-mismatch.rs | 0 .../ui/impl-trait/in-trait/generics-mismatch.stderr | 0 .../ui/impl-trait/in-trait/issue-102140.rs | 0 .../ui/impl-trait/in-trait/issue-102140.stderr | 0 .../ui/impl-trait/in-trait/issue-102301.rs | 0 .../ui/impl-trait/in-trait/issue-102571.rs | 0 .../ui/impl-trait/in-trait/issue-102571.stderr | 0 .../impl-trait/in-trait/method-signature-matches.rs | 0 .../in-trait/method-signature-matches.stderr | 0 .../ui/impl-trait/in-trait/nested-rpitit.rs | 0 .../ui/impl-trait/in-trait/object-safety.rs | 0 .../ui/impl-trait/in-trait/object-safety.stderr | 0 .../impl-trait/in-trait/opaque-in-impl-is-opaque.rs | 0 .../in-trait/opaque-in-impl-is-opaque.stderr | 0 .../ui/impl-trait/in-trait/opaque-in-impl.rs | 0 .../test => tests}/ui/impl-trait/in-trait/reveal.rs | 0 .../ui/impl-trait/in-trait/signature-mismatch.rs | 0 .../impl-trait/in-trait/signature-mismatch.stderr | 0 .../ui/impl-trait/in-trait/specialization-broken.rs | 0 .../in-trait/specialization-broken.stderr | 0 .../in-trait/specialization-substs-remap.rs | 0 .../ui/impl-trait/in-trait/success.rs | 0 .../in-trait/trait-more-generics-than-impl.rs | 0 .../in-trait/trait-more-generics-than-impl.stderr | 0 .../ui/impl-trait/in-trait/wf-bounds.rs | 0 .../ui/impl-trait/in-trait/wf-bounds.stderr | 0 .../ui/impl-trait/in-trait/where-clause.rs | 0 {src/test => tests}/ui/impl-trait/issue-100075-2.rs | 0 .../ui/impl-trait/issue-100075-2.stderr | 0 {src/test => tests}/ui/impl-trait/issue-100075.rs | 0 .../ui/impl-trait/issue-100075.stderr | 0 {src/test => tests}/ui/impl-trait/issue-100187.rs | 0 {src/test => tests}/ui/impl-trait/issue-102605.rs | 0 .../ui/impl-trait/issue-102605.stderr | 0 {src/test => tests}/ui/impl-trait/issue-103181-1.rs | 0 .../ui/impl-trait/issue-103181-1.stderr | 0 {src/test => tests}/ui/impl-trait/issue-103181-2.rs | 0 .../ui/impl-trait/issue-103181-2.stderr | 0 {src/test => tests}/ui/impl-trait/issue-103599.rs | 0 .../ui/impl-trait/issue-103599.stderr | 0 {src/test => tests}/ui/impl-trait/issue-35668.rs | 0 .../test => tests}/ui/impl-trait/issue-35668.stderr | 0 {src/test => tests}/ui/impl-trait/issue-46959.rs | 0 {src/test => tests}/ui/impl-trait/issue-49556.rs | 0 {src/test => tests}/ui/impl-trait/issue-49579.rs | 0 {src/test => tests}/ui/impl-trait/issue-49685.rs | 0 {src/test => tests}/ui/impl-trait/issue-51185.rs | 0 {src/test => tests}/ui/impl-trait/issue-54966.rs | 0 .../test => tests}/ui/impl-trait/issue-54966.stderr | 0 {src/test => tests}/ui/impl-trait/issue-55872-1.rs | 0 .../ui/impl-trait/issue-55872-1.stderr | 0 {src/test => tests}/ui/impl-trait/issue-55872-2.rs | 0 .../ui/impl-trait/issue-55872-2.stderr | 0 {src/test => tests}/ui/impl-trait/issue-55872-3.rs | 0 .../ui/impl-trait/issue-55872-3.stderr | 0 {src/test => tests}/ui/impl-trait/issue-55872.rs | 0 .../test => tests}/ui/impl-trait/issue-55872.stderr | 0 {src/test => tests}/ui/impl-trait/issue-56445.rs | 0 {src/test => tests}/ui/impl-trait/issue-68532.rs | 0 {src/test => tests}/ui/impl-trait/issue-72911.rs | 0 .../test => tests}/ui/impl-trait/issue-72911.stderr | 0 {src/test => tests}/ui/impl-trait/issue-86465.rs | 0 .../test => tests}/ui/impl-trait/issue-86465.stderr | 0 {src/test => tests}/ui/impl-trait/issue-87450.rs | 0 .../test => tests}/ui/impl-trait/issue-87450.stderr | 0 {src/test => tests}/ui/impl-trait/issue-99073-2.rs | 0 .../ui/impl-trait/issue-99073-2.stderr | 0 {src/test => tests}/ui/impl-trait/issue-99073.rs | 0 .../test => tests}/ui/impl-trait/issue-99073.stderr | 0 {src/test => tests}/ui/impl-trait/issue-99642-2.rs | 0 {src/test => tests}/ui/impl-trait/issue-99642.rs | 0 {src/test => tests}/ui/impl-trait/issue-99914.rs | 0 .../test => tests}/ui/impl-trait/issue-99914.stderr | 0 .../issues/infinite-impl-trait-issue-38064.rs | 0 .../issues/infinite-impl-trait-issue-38064.stderr | 0 .../ui/impl-trait/issues/issue-104815.rs | 0 .../issue-21659-show-relevant-trait-impls-3.rs | 0 .../issue-21659-show-relevant-trait-impls-3.stderr | 0 .../ui/impl-trait/issues/issue-42479.rs | 0 .../ui/impl-trait/issues/issue-49376.rs | 0 .../ui/impl-trait/issues/issue-52128.rs | 0 .../ui/impl-trait/issues/issue-53457.rs | 0 .../ui/impl-trait/issues/issue-54600.rs | 0 .../ui/impl-trait/issues/issue-54600.stderr | 0 .../ui/impl-trait/issues/issue-54840.rs | 0 .../ui/impl-trait/issues/issue-54840.stderr | 0 .../ui/impl-trait/issues/issue-54895.rs | 0 .../ui/impl-trait/issues/issue-54895.stderr | 0 .../issues/issue-55608-captures-empty-region.rs | 0 .../issues/issue-57464-unexpected-regions.rs | 0 ...-57979-deeply-nested-impl-trait-in-assoc-proj.rs | 0 ...79-deeply-nested-impl-trait-in-assoc-proj.stderr | 0 .../issues/issue-57979-impl-trait-in-path.rs | 0 .../issues/issue-57979-impl-trait-in-path.stderr | 0 .../issue-57979-nested-impl-trait-in-assoc-proj.rs | 0 ...sue-57979-nested-impl-trait-in-assoc-proj.stderr | 0 .../ui/impl-trait/issues/issue-58504.rs | 0 .../ui/impl-trait/issues/issue-58504.stderr | 0 .../ui/impl-trait/issues/issue-58956.rs | 0 .../ui/impl-trait/issues/issue-58956.stderr | 0 .../ui/impl-trait/issues/issue-62742.rs | 0 .../ui/impl-trait/issues/issue-62742.stderr | 0 .../ui/impl-trait/issues/issue-65581.rs | 0 .../ui/impl-trait/issues/issue-67830.rs | 0 .../ui/impl-trait/issues/issue-67830.stderr | 0 .../ui/impl-trait/issues/issue-70877.rs | 0 .../ui/impl-trait/issues/issue-70877.stderr | 0 .../ui/impl-trait/issues/issue-70971.rs | 0 .../ui/impl-trait/issues/issue-70971.stderr | 0 .../ui/impl-trait/issues/issue-74282.rs | 0 .../ui/impl-trait/issues/issue-74282.stderr | 0 .../ui/impl-trait/issues/issue-77987.rs | 0 .../ui/impl-trait/issues/issue-78722.rs | 0 .../ui/impl-trait/issues/issue-78722.stderr | 0 .../ui/impl-trait/issues/issue-79099.rs | 0 .../ui/impl-trait/issues/issue-79099.stderr | 0 .../ui/impl-trait/issues/issue-82139.rs | 0 .../ui/impl-trait/issues/issue-82139.stderr | 0 .../ui/impl-trait/issues/issue-83919.rs | 0 .../ui/impl-trait/issues/issue-83919.stderr | 0 .../issue-83929-impl-trait-in-generic-default.rs | 0 ...issue-83929-impl-trait-in-generic-default.stderr | 0 .../ui/impl-trait/issues/issue-84073.rs | 0 .../ui/impl-trait/issues/issue-84073.stderr | 0 .../ui/impl-trait/issues/issue-84919.rs | 0 .../ui/impl-trait/issues/issue-84919.stderr | 0 .../ui/impl-trait/issues/issue-86201.rs | 0 .../ui/impl-trait/issues/issue-86642.rs | 0 .../ui/impl-trait/issues/issue-86642.stderr | 0 .../ui/impl-trait/issues/issue-86719.rs | 0 .../ui/impl-trait/issues/issue-86719.stderr | 0 .../ui/impl-trait/issues/issue-86800.rs | 0 .../ui/impl-trait/issues/issue-86800.stderr | 0 .../ui/impl-trait/issues/issue-87295.rs | 0 .../ui/impl-trait/issues/issue-87295.stderr | 0 .../ui/impl-trait/issues/issue-87340.rs | 0 .../ui/impl-trait/issues/issue-87340.stderr | 0 .../ui/impl-trait/issues/issue-88236-2.rs | 0 .../ui/impl-trait/issues/issue-88236-2.stderr | 0 .../ui/impl-trait/issues/issue-88236.rs | 0 .../ui/impl-trait/issues/issue-88236.stderr | 0 .../ui/impl-trait/issues/issue-89312.rs | 0 .../ui/impl-trait/issues/issue-92305.rs | 0 .../ui/impl-trait/issues/issue-92305.stderr | 0 .../ui/impl-trait/issues/issue-93788.rs | 0 .../issues/issue-99348-impl-compatibility.rs | 0 .../issues/issue-99348-impl-compatibility.stderr | 0 {src/test => tests}/ui/impl-trait/lifetimes.rs | 0 {src/test => tests}/ui/impl-trait/lifetimes2.rs | 0 .../impl-trait/method-suggestion-no-duplication.rs | 0 .../method-suggestion-no-duplication.stderr | 0 .../ui/impl-trait/multiple-lifetimes.rs | 0 .../multiple-lifetimes/error-handling-2.rs | 0 .../multiple-lifetimes/error-handling-2.stderr | 0 .../error-handling.polonius.stderr | 0 .../impl-trait/multiple-lifetimes/error-handling.rs | 0 .../multiple-lifetimes/error-handling.stderr | 0 .../impl-trait/multiple-lifetimes/inverse-bounds.rs | 0 .../ordinary-bounds-pick-original-elided.rs | 0 ...ry-bounds-pick-original-type-alias-impl-trait.rs | 0 .../ordinary-bounds-pick-original.rs | 0 .../ordinary-bounds-pick-other.rs | 0 .../multiple-lifetimes/ordinary-bounds-unrelated.rs | 0 .../ordinary-bounds-unrelated.stderr | 0 .../multiple-lifetimes/ordinary-bounds-unsuited.rs | 0 .../ordinary-bounds-unsuited.stderr | 0 .../must_outlive_least_region_or_bound.rs | 0 .../must_outlive_least_region_or_bound.stderr | 0 .../ui/impl-trait/needs_least_region_or_bound.rs | 0 .../ui/impl-trait/negative-reasoning.rs | 0 .../ui/impl-trait/negative-reasoning.stderr | 0 .../ui/impl-trait/nested-return-type.rs | 0 .../ui/impl-trait/nested-return-type2-tait.rs | 0 .../ui/impl-trait/nested-return-type2-tait.stderr | 0 .../ui/impl-trait/nested-return-type2-tait2.rs | 0 .../ui/impl-trait/nested-return-type2-tait2.stderr | 0 .../ui/impl-trait/nested-return-type2-tait3.rs | 0 .../ui/impl-trait/nested-return-type2-tait3.stderr | 0 .../ui/impl-trait/nested-return-type2.rs | 0 .../ui/impl-trait/nested-return-type2.stderr | 0 .../ui/impl-trait/nested-return-type3-tait.rs | 0 .../ui/impl-trait/nested-return-type3-tait.stderr | 0 .../ui/impl-trait/nested-return-type3-tait2.rs | 0 .../ui/impl-trait/nested-return-type3-tait2.stderr | 0 .../ui/impl-trait/nested-return-type3-tait3.rs | 0 .../ui/impl-trait/nested-return-type3-tait3.stderr | 0 .../ui/impl-trait/nested-return-type3.rs | 0 .../ui/impl-trait/nested-return-type3.stderr | 0 .../ui/impl-trait/nested-return-type4.rs | 0 .../ui/impl-trait/nested-return-type4.stderr | 0 .../ui/impl-trait/nested-rpit-hrtb.rs | 0 .../ui/impl-trait/nested-rpit-hrtb.stderr | 0 .../nested-rpit-with-anonymous-lifetimes.rs | 0 .../ui/impl-trait/nested_impl_trait.rs | 0 .../ui/impl-trait/nested_impl_trait.stderr | 0 {src/test => tests}/ui/impl-trait/nesting.rs | 0 .../ui/impl-trait/no-method-suggested-traits.rs | 0 .../ui/impl-trait/no-method-suggested-traits.stderr | 0 {src/test => tests}/ui/impl-trait/no-trait.rs | 0 {src/test => tests}/ui/impl-trait/no-trait.stderr | 0 .../ui/impl-trait/normalize-tait-in-const.rs | 0 .../ui/impl-trait/normalize-tait-in-const.stderr | 0 ...ect-unsafe-trait-in-return-position-dyn-trait.rs | 0 ...unsafe-trait-in-return-position-dyn-trait.stderr | 0 ...ct-unsafe-trait-in-return-position-impl-trait.rs | 0 ...nsafe-trait-in-return-position-impl-trait.stderr | 0 .../point-to-type-err-cause-on-impl-trait-return.rs | 0 ...nt-to-type-err-cause-on-impl-trait-return.stderr | 0 .../test => tests}/ui/impl-trait/printing-binder.rs | 0 .../ui/impl-trait/printing-binder.stderr | 0 {src/test => tests}/ui/impl-trait/private_unused.rs | 0 .../projection-mismatch-in-impl-where-clause.rs | 0 .../projection-mismatch-in-impl-where-clause.stderr | 0 {src/test => tests}/ui/impl-trait/projection.rs | 0 {src/test => tests}/ui/impl-trait/question_mark.rs | 0 .../impl-trait/recursive-impl-trait-type-direct.rs | 0 .../recursive-impl-trait-type-indirect.rs | 0 .../recursive-impl-trait-type-indirect.stderr | 0 ...cursive-impl-trait-type-through-non-recursive.rs | 0 ...ive-impl-trait-type-through-non-recursive.stderr | 0 ...ype-alias-impl-trait-declaration-too-subtle-2.rs | 0 ...alias-impl-trait-declaration-too-subtle-2.stderr | 0 ...-type-alias-impl-trait-declaration-too-subtle.rs | 0 ...e-alias-impl-trait-declaration-too-subtle.stderr | 0 .../recursive-type-alias-impl-trait-declaration.rs | 0 ...region-escape-via-bound-contravariant-closure.rs | 0 .../region-escape-via-bound-contravariant.rs | 0 .../ui/impl-trait/region-escape-via-bound.rs | 0 .../ui/impl-trait/region-escape-via-bound.stderr | 0 .../return-position-impl-trait-minimal.rs | 0 .../ui/impl-trait/rpit-assoc-pair-with-lifetime.rs | 0 {src/test => tests}/ui/impl-trait/rpit-not-sized.rs | 0 .../ui/impl-trait/rpit-not-sized.stderr | 0 .../ui/impl-trait/static-return-lifetime-infered.rs | 0 .../static-return-lifetime-infered.stderr | 0 .../ui/impl-trait/suggest-calling-rpit-closure.rs | 0 .../impl-trait/suggest-calling-rpit-closure.stderr | 0 .../ui/impl-trait/trait_resolution.rs | 0 {src/test => tests}/ui/impl-trait/trait_type.rs | 0 {src/test => tests}/ui/impl-trait/trait_type.stderr | 0 .../ui/impl-trait/two_tait_defining_each_other.rs | 0 .../impl-trait/two_tait_defining_each_other.stderr | 0 .../ui/impl-trait/two_tait_defining_each_other2.rs | 0 .../impl-trait/two_tait_defining_each_other2.stderr | 0 .../ui/impl-trait/two_tait_defining_each_other3.rs | 0 .../impl-trait/two_tait_defining_each_other3.stderr | 0 .../ui/impl-trait/type-alias-generic-param.rs | 0 .../impl-trait/type-alias-impl-trait-in-fn-body.rs | 0 .../type-arg-mismatch-due-to-impl-trait.rs | 0 .../type-arg-mismatch-due-to-impl-trait.stderr | 0 .../ui/impl-trait/type_parameters_captured.rs | 0 .../ui/impl-trait/type_parameters_captured.stderr | 0 .../ui/impl-trait/unactionable_diagnostic.fixed | 0 .../ui/impl-trait/unactionable_diagnostic.rs | 0 .../ui/impl-trait/unactionable_diagnostic.stderr | 0 .../ui/impl-trait/universal-mismatched-type.rs | 0 .../ui/impl-trait/universal-mismatched-type.stderr | 0 .../ui/impl-trait/universal-two-impl-traits.rs | 0 .../ui/impl-trait/universal-two-impl-traits.stderr | 0 .../ui/impl-trait/universal_hrtb_anon.rs | 0 .../ui/impl-trait/universal_hrtb_named.rs | 0 .../ui/impl-trait/universal_in_adt_in_parameters.rs | 0 .../universal_in_impl_trait_in_parameters.rs | 0 .../universal_in_trait_defn_parameters.rs | 0 .../ui/impl-trait/universal_multiple_bounds.rs | 0 .../ui/impl-trait/universal_wrong_bounds.rs | 0 .../ui/impl-trait/universal_wrong_bounds.stderr | 0 .../ui/impl-trait/universal_wrong_hrtb.rs | 0 .../ui/impl-trait/universal_wrong_hrtb.stderr | 0 .../ui/impl-trait/unsafety-checking-cycle.rs | 0 {src/test => tests}/ui/impl-trait/wf-eval-order.rs | 0 .../test => tests}/ui/impl-trait/where-allowed-2.rs | 0 .../ui/impl-trait/where-allowed-2.stderr | 0 {src/test => tests}/ui/impl-trait/where-allowed.rs | 0 .../ui/impl-trait/where-allowed.stderr | 0 {src/test => tests}/ui/impl-trait/xcrate.rs | 0 {src/test => tests}/ui/impl-trait/xcrate_simple.rs | 0 .../ui/impl-unused-rps-in-assoc-type.rs | 0 .../ui/impl-unused-rps-in-assoc-type.stderr | 0 {src/test => tests}/ui/impl-unused-tps-inherent.rs | 0 .../ui/impl-unused-tps-inherent.stderr | 0 {src/test => tests}/ui/impl-unused-tps.rs | 0 {src/test => tests}/ui/impl-unused-tps.stderr | 0 {src/test => tests}/ui/implicit-method-bind.rs | 0 {src/test => tests}/ui/implicit-method-bind.stderr | 0 .../assoc-ty-wf-used-to-get-assoc-ty.rs | 0 .../assoc-ty-wf-used-to-get-assoc-ty.stderr | 0 .../hrlt-implied-trait-bounds-guard.rs | 0 .../hrlt-implied-trait-bounds-guard.stderr | 0 .../hrlt-implied-trait-bounds-roundtrip.rs | 0 .../impl-header-unnormalized-types.rs | 0 .../impl-header-unnormalized-types.stderr | 0 ...mpl-implied-bounds-compatibility-unnormalized.rs | 0 ...implied-bounds-compatibility-unnormalized.stderr | 0 .../impl-implied-bounds-compatibility.rs | 0 .../impl-implied-bounds-compatibility.stderr | 0 .../ui/implied-bounds/issue-100690.rs | 0 .../ui/implied-bounds/issue-100690.stderr | 0 .../ui/implied-bounds/issue-101951.rs | 0 .../imports/absolute-paths-in-nested-use-groups.rs | 0 .../absolute-paths-in-nested-use-groups.stderr | 0 .../test => tests}/ui/imports/auxiliary/gensymed.rs | 0 .../ui/imports/auxiliary/glob-conflict.rs | 0 .../ui/imports/auxiliary/import_crate_var.rs | 0 .../ui/imports/auxiliary/issue-36881-aux.rs | 0 .../ui/imports/auxiliary/issue-52891.rs | 0 .../ui/imports/auxiliary/issue-55811.rs | 0 .../ui/imports/auxiliary/issue-56125.rs | 0 .../ui/imports/auxiliary/issue-59764.rs | 0 .../auxiliary/overlapping_pub_trait_source.rs | 0 .../ui/imports/auxiliary/two_macros.rs | 0 .../imports/auxiliary/unnamed_pub_trait_source.rs | 0 .../ui/imports/bad-import-in-nested.rs | 0 .../ui/imports/bad-import-in-nested.stderr | 0 .../ui/imports/bad-import-with-rename.rs | 0 .../ui/imports/bad-import-with-rename.stderr | 0 {src/test => tests}/ui/imports/double-import.rs | 0 {src/test => tests}/ui/imports/double-import.stderr | 0 {src/test => tests}/ui/imports/duplicate.rs | 0 {src/test => tests}/ui/imports/duplicate.stderr | 0 .../ui/imports/export-glob-imports-target.rs | 0 {src/test => tests}/ui/imports/export-multi.rs | 0 .../extern-crate-self/extern-crate-self-fail.rs | 0 .../extern-crate-self/extern-crate-self-fail.stderr | 0 .../extern-crate-self-macro-alias.rs | 0 .../extern-crate-self-macro-item.rs | 0 .../extern-crate-self-macro-self.rs | 0 .../extern-crate-self/extern-crate-self-pass.rs | 0 {src/test => tests}/ui/imports/extern-crate-used.rs | 0 .../ui/imports/extern-crate-used.stderr | 0 ...extern-prelude-extern-crate-absolute-expanded.rs | 0 .../ui/imports/extern-prelude-extern-crate-cfg.rs | 0 .../ui/imports/extern-prelude-extern-crate-fail.rs | 0 .../imports/extern-prelude-extern-crate-fail.stderr | 0 .../ui/imports/extern-prelude-extern-crate-pass.rs | 0 ...ern-prelude-extern-crate-restricted-shadowing.rs | 0 ...prelude-extern-crate-restricted-shadowing.stderr | 0 .../extern-prelude-extern-crate-shadowing.rs | 0 {src/test => tests}/ui/imports/gensymed.rs | 0 .../ui/imports/glob-conflict-cross-crate.rs | 0 .../ui/imports/glob-conflict-cross-crate.stderr | 0 {src/test => tests}/ui/imports/glob-cycles.rs | 0 {src/test => tests}/ui/imports/glob-resolve1.rs | 0 {src/test => tests}/ui/imports/glob-resolve1.stderr | 0 {src/test => tests}/ui/imports/glob-shadowing.rs | 0 .../test => tests}/ui/imports/glob-shadowing.stderr | 0 {src/test => tests}/ui/imports/glob-use-std.rs | 0 {src/test => tests}/ui/imports/import-crate-var.rs | 0 .../ui/imports/import-crate-var.stderr | 0 .../auxiliary/crate_with_invalid_spans.rs | 0 .../auxiliary/crate_with_invalid_spans_macros.rs | 0 .../imports/import-crate-with-invalid-spans/main.rs | 0 .../ui/imports/import-from-missing.rs | 0 .../ui/imports/import-from-missing.stderr | 0 {src/test => tests}/ui/imports/import-from.rs | 0 .../ui/imports/import-glob-0-rpass.rs | 0 {src/test => tests}/ui/imports/import-glob-0.rs | 0 {src/test => tests}/ui/imports/import-glob-0.stderr | 0 {src/test => tests}/ui/imports/import-glob-1.rs | 0 .../ui/imports/import-glob-circular.rs | 0 .../ui/imports/import-glob-circular.stderr | 0 {src/test => tests}/ui/imports/import-glob-crate.rs | 0 {src/test => tests}/ui/imports/import-in-block.rs | 0 {src/test => tests}/ui/imports/import-loop-2.rs | 0 {src/test => tests}/ui/imports/import-loop-2.stderr | 0 {src/test => tests}/ui/imports/import-loop.rs | 0 {src/test => tests}/ui/imports/import-loop.stderr | 0 .../ui/imports/import-prefix-macro-1.rs | 0 .../ui/imports/import-prefix-macro-1.stderr | 0 .../ui/imports/import-prefix-macro-2.rs | 0 .../ui/imports/import-prefix-macro-2.stderr | 0 .../ui/imports/import-prefix-macro.rs | 0 {src/test => tests}/ui/imports/import-rename.rs | 0 {src/test => tests}/ui/imports/import-rpass.rs | 0 .../ui/imports/import-trailing-comma.rs | 0 .../ui/imports/import-trait-method.rs | 0 .../ui/imports/import-trait-method.stderr | 0 {src/test => tests}/ui/imports/import.rs | 0 {src/test => tests}/ui/imports/import.stderr | 0 {src/test => tests}/ui/imports/import2-rpass.rs | 0 {src/test => tests}/ui/imports/import2.rs | 0 {src/test => tests}/ui/imports/import2.stderr | 0 {src/test => tests}/ui/imports/import3-rpass.rs | 0 {src/test => tests}/ui/imports/import3.rs | 0 {src/test => tests}/ui/imports/import3.stderr | 0 {src/test => tests}/ui/imports/import4-rpass.rs | 0 {src/test => tests}/ui/imports/import4.rs | 0 {src/test => tests}/ui/imports/import4.stderr | 0 {src/test => tests}/ui/imports/import5.rs | 0 {src/test => tests}/ui/imports/import6.rs | 0 {src/test => tests}/ui/imports/import7.rs | 0 {src/test => tests}/ui/imports/import8.rs | 0 {src/test => tests}/ui/imports/imports.rs | 0 .../ui/imports/inaccessible_type_aliases.rs | 0 .../ui/imports/inaccessible_type_aliases.stderr | 0 {src/test => tests}/ui/imports/issue-13404.rs | 0 {src/test => tests}/ui/imports/issue-13404.stderr | 0 {src/test => tests}/ui/imports/issue-1697.rs | 0 {src/test => tests}/ui/imports/issue-1697.stderr | 0 {src/test => tests}/ui/imports/issue-18083.rs | 0 {src/test => tests}/ui/imports/issue-19498.rs | 0 {src/test => tests}/ui/imports/issue-19498.stderr | 0 {src/test => tests}/ui/imports/issue-24081.rs | 0 {src/test => tests}/ui/imports/issue-24081.stderr | 0 {src/test => tests}/ui/imports/issue-24883.rs | 0 {src/test => tests}/ui/imports/issue-25396.rs | 0 {src/test => tests}/ui/imports/issue-25396.stderr | 0 .../ui/imports/issue-26873-multifile/A/B.rs | 0 .../ui/imports/issue-26873-multifile/A/C.rs | 0 .../ui/imports/issue-26873-multifile/A/mod.rs | 0 .../issue-26873-multifile/compiletest-ignore-dir | 0 .../issue-26873-multifile/issue-26873-multifile.rs | 0 .../issue-26873-multifile/issue-26873-onefile.rs | 0 .../ui/imports/issue-26873-multifile/mod.rs | 0 {src/test => tests}/ui/imports/issue-26886.rs | 0 {src/test => tests}/ui/imports/issue-26886.stderr | 0 {src/test => tests}/ui/imports/issue-26930.rs | 0 {src/test => tests}/ui/imports/issue-28134.rs | 0 {src/test => tests}/ui/imports/issue-28134.stderr | 0 {src/test => tests}/ui/imports/issue-28388-1.rs | 0 {src/test => tests}/ui/imports/issue-28388-1.stderr | 0 {src/test => tests}/ui/imports/issue-28388-2.rs | 0 {src/test => tests}/ui/imports/issue-28388-2.stderr | 0 {src/test => tests}/ui/imports/issue-2937.rs | 0 {src/test => tests}/ui/imports/issue-2937.stderr | 0 {src/test => tests}/ui/imports/issue-30560.rs | 0 {src/test => tests}/ui/imports/issue-30560.stderr | 0 {src/test => tests}/ui/imports/issue-31212.rs | 0 {src/test => tests}/ui/imports/issue-31212.stderr | 0 {src/test => tests}/ui/imports/issue-32119.rs | 0 {src/test => tests}/ui/imports/issue-32222.rs | 0 .../imports/issue-32354-suggest-import-rename.fixed | 0 .../ui/imports/issue-32354-suggest-import-rename.rs | 0 .../issue-32354-suggest-import-rename.stderr | 0 {src/test => tests}/ui/imports/issue-32833.rs | 0 {src/test => tests}/ui/imports/issue-32833.stderr | 0 {src/test => tests}/ui/imports/issue-33464.rs | 0 {src/test => tests}/ui/imports/issue-33464.stderr | 0 {src/test => tests}/ui/imports/issue-36881.rs | 0 {src/test => tests}/ui/imports/issue-36881.stderr | 0 {src/test => tests}/ui/imports/issue-37887.rs | 0 {src/test => tests}/ui/imports/issue-37887.stderr | 0 {src/test => tests}/ui/imports/issue-38293.rs | 0 {src/test => tests}/ui/imports/issue-38293.stderr | 0 {src/test => tests}/ui/imports/issue-4366-2.rs | 0 {src/test => tests}/ui/imports/issue-4366-2.stderr | 0 {src/test => tests}/ui/imports/issue-4366.rs | 0 {src/test => tests}/ui/imports/issue-4366.stderr | 0 ...-extern-crate-rename-suggestion-formatting.fixed | 0 ...bad-extern-crate-rename-suggestion-formatting.rs | 0 ...extern-crate-rename-suggestion-formatting.stderr | 0 .../imports/issue-45829/auxiliary/issue-45829-a.rs | 0 .../imports/issue-45829/auxiliary/issue-45829-b.rs | 0 .../ui/imports/issue-45829/import-self.rs | 0 .../ui/imports/issue-45829/import-self.stderr | 0 .../ui/imports/issue-45829/import-twice.rs | 0 .../ui/imports/issue-45829/import-twice.stderr | 0 .../ui/imports/issue-45829/issue-45829.rs | 0 .../ui/imports/issue-45829/issue-45829.stderr | 0 .../ui/imports/issue-45829/rename-extern-vs-use.rs | 0 .../imports/issue-45829/rename-extern-vs-use.stderr | 0 .../imports/issue-45829/rename-extern-with-tab.rs | 0 .../issue-45829/rename-extern-with-tab.stderr | 0 .../ui/imports/issue-45829/rename-extern.rs | 0 .../ui/imports/issue-45829/rename-extern.stderr | 0 .../ui/imports/issue-45829/rename-use-vs-extern.rs | 0 .../imports/issue-45829/rename-use-vs-extern.stderr | 0 .../ui/imports/issue-45829/rename-use-with-tabs.rs | 0 .../imports/issue-45829/rename-use-with-tabs.stderr | 0 .../ui/imports/issue-45829/rename-with-path.rs | 0 .../ui/imports/issue-45829/rename-with-path.stderr | 0 .../test => tests}/ui/imports/issue-45829/rename.rs | 0 .../ui/imports/issue-45829/rename.stderr | 0 {src/test => tests}/ui/imports/issue-47623.rs | 0 {src/test => tests}/ui/imports/issue-47623.stderr | 0 {src/test => tests}/ui/imports/issue-4865-1.rs | 0 {src/test => tests}/ui/imports/issue-4865-2.rs | 0 {src/test => tests}/ui/imports/issue-4865-3.rs | 0 {src/test => tests}/ui/imports/issue-52891.fixed | 0 {src/test => tests}/ui/imports/issue-52891.rs | 0 {src/test => tests}/ui/imports/issue-52891.stderr | 0 {src/test => tests}/ui/imports/issue-53140.rs | 0 {src/test => tests}/ui/imports/issue-53269.rs | 0 {src/test => tests}/ui/imports/issue-53269.stderr | 0 {src/test => tests}/ui/imports/issue-53512.rs | 0 {src/test => tests}/ui/imports/issue-53512.stderr | 0 {src/test => tests}/ui/imports/issue-53565.rs | 0 {src/test => tests}/ui/imports/issue-53565.stderr | 0 {src/test => tests}/ui/imports/issue-55457.rs | 0 {src/test => tests}/ui/imports/issue-55457.stderr | 0 {src/test => tests}/ui/imports/issue-55811.rs | 0 {src/test => tests}/ui/imports/issue-55884-1.rs | 0 {src/test => tests}/ui/imports/issue-55884-1.stderr | 0 {src/test => tests}/ui/imports/issue-55884-2.rs | 0 {src/test => tests}/ui/imports/issue-55884-2.stderr | 0 {src/test => tests}/ui/imports/issue-56125.rs | 0 {src/test => tests}/ui/imports/issue-56125.stderr | 0 {src/test => tests}/ui/imports/issue-56263.rs | 0 {src/test => tests}/ui/imports/issue-57015.rs | 0 {src/test => tests}/ui/imports/issue-57015.stderr | 0 {src/test => tests}/ui/imports/issue-57539.rs | 0 {src/test => tests}/ui/imports/issue-57539.stderr | 0 {src/test => tests}/ui/imports/issue-59764.rs | 0 {src/test => tests}/ui/imports/issue-59764.stderr | 0 {src/test => tests}/ui/imports/issue-62767.rs | 0 {src/test => tests}/ui/imports/issue-68103.rs | 0 {src/test => tests}/ui/imports/issue-8208.rs | 0 {src/test => tests}/ui/imports/issue-8208.stderr | 0 {src/test => tests}/ui/imports/issue-8640.rs | 0 {src/test => tests}/ui/imports/issue-8640.stderr | 0 .../ui/imports/local-modularized-tricky-fail-1.rs | 0 .../imports/local-modularized-tricky-fail-1.stderr | 0 .../ui/imports/local-modularized-tricky-fail-2.rs | 0 .../imports/local-modularized-tricky-fail-2.stderr | 0 .../ui/imports/local-modularized-tricky-pass-1.rs | 0 .../ui/imports/local-modularized-tricky-pass-2.rs | 0 {src/test => tests}/ui/imports/local-modularized.rs | 0 {src/test => tests}/ui/imports/macro-paths.rs | 0 {src/test => tests}/ui/imports/macro-paths.stderr | 0 {src/test => tests}/ui/imports/macros.rs | 0 {src/test => tests}/ui/imports/macros.stderr | 0 {src/test => tests}/ui/imports/no-std-inject.rs | 0 {src/test => tests}/ui/imports/no-std-inject.stderr | 0 .../ui/imports/overlapping_pub_trait.rs | 0 .../ui/imports/overlapping_pub_trait.stderr | 0 {src/test => tests}/ui/imports/reexport-star.rs | 0 {src/test => tests}/ui/imports/reexports.rs | 0 {src/test => tests}/ui/imports/reexports.stderr | 0 .../ui/imports/resolve_self_super_hint.rs | 0 .../ui/imports/resolve_self_super_hint.stderr | 0 .../ui/imports/rfc-1560-warning-cycle.rs | 0 .../ui/imports/rfc-1560-warning-cycle.stderr | 0 .../ui/imports/shadow_builtin_macros.rs | 0 .../ui/imports/shadow_builtin_macros.stderr | 0 {src/test => tests}/ui/imports/tool-mod-child.rs | 0 .../test => tests}/ui/imports/tool-mod-child.stderr | 0 {src/test => tests}/ui/imports/unnamed_pub_trait.rs | 0 .../ui/imports/unnamed_pub_trait.stderr | 0 .../ui/imports/unresolved-imports-used.rs | 0 .../ui/imports/unresolved-imports-used.stderr | 0 .../ui/imports/unused-import-issue-87973.fixed | 0 .../ui/imports/unused-import-issue-87973.rs | 0 .../ui/imports/unused-import-issue-87973.stderr | 0 .../ui/imports/unused-imports-in-test-mode.rs | 0 .../ui/imports/unused-imports-in-test-mode.stderr | 0 .../ui/imports/unused-imports-in-test-module.rs | 0 .../ui/imports/unused-imports-in-test-module.stderr | 0 {src/test => tests}/ui/imports/unused-macro-use.rs | 0 .../ui/imports/unused-macro-use.stderr | 0 {src/test => tests}/ui/imports/unused.rs | 0 {src/test => tests}/ui/imports/unused.stderr | 0 {src/test => tests}/ui/imports/use-mod.rs | 0 {src/test => tests}/ui/impossible_range.fixed | 0 {src/test => tests}/ui/impossible_range.rs | 0 {src/test => tests}/ui/impossible_range.stderr | 0 {src/test => tests}/ui/inc-range-pat.rs | 0 .../auxiliary/same-file-in-two-crates-aux.rs | 0 {src/test => tests}/ui/include-macros/data.bin | 0 {src/test => tests}/ui/include-macros/file.txt | 0 .../ui/include-macros/mismatched-types.rs | 0 .../ui/include-macros/mismatched-types.stderr | 0 .../ui/include-macros/normalization.rs | 0 .../ui/include-macros/same-file-in-two-crates.rs | 0 .../auxiliary/extern-crate.rs | 0 .../needs-has-incoherent-impls.rs | 0 .../needs-has-incoherent-impls.stderr | 0 .../incoherent-inherent-impls/no-attr-empty-impl.rs | 0 .../no-attr-empty-impl.stderr | 0 {src/test => tests}/ui/index-bot.rs | 0 {src/test => tests}/ui/index-bot.stderr | 0 {src/test => tests}/ui/index-help.rs | 0 {src/test => tests}/ui/index-help.stderr | 0 {src/test => tests}/ui/index_message.rs | 0 {src/test => tests}/ui/index_message.stderr | 0 {src/test => tests}/ui/indexing-requires-a-uint.rs | 0 .../ui/indexing-requires-a-uint.stderr | 0 {src/test => tests}/ui/infer-fn-tail-expr.rs | 0 .../ui/inference/ambiguous_type_parameter.rs | 0 .../ui/inference/ambiguous_type_parameter.stderr | 0 .../auxiliary/inference_unstable_iterator.rs | 0 .../auxiliary/inference_unstable_itertools.rs | 0 .../ui/inference/cannot-infer-async.rs | 0 .../ui/inference/cannot-infer-async.stderr | 0 .../ui/inference/cannot-infer-closure-circular.rs | 0 .../inference/cannot-infer-closure-circular.stderr | 0 .../ui/inference/cannot-infer-closure.rs | 0 .../ui/inference/cannot-infer-closure.stderr | 0 .../ui/inference/cannot-infer-partial-try-return.rs | 0 .../cannot-infer-partial-try-return.stderr | 0 .../ui/inference/char-as-str-multi.rs | 0 .../ui/inference/char-as-str-multi.stderr | 0 .../ui/inference/char-as-str-single.fixed | 0 .../ui/inference/char-as-str-single.rs | 0 .../ui/inference/char-as-str-single.stderr | 0 .../test => tests}/ui/inference/deref-suggestion.rs | 0 .../ui/inference/deref-suggestion.stderr | 0 .../ui/inference/erase-type-params-in-label.rs | 0 .../ui/inference/erase-type-params-in-label.stderr | 0 .../infer-binary-operand-behind-reference.rs | 0 .../inference-variable-behind-raw-pointer.rs | 0 .../inference-variable-behind-raw-pointer.stderr | 0 .../ui/inference/inference_unstable.rs | 0 .../ui/inference/inference_unstable.stderr | 0 .../ui/inference/inference_unstable_featured.rs | 0 .../ui/inference/inference_unstable_featured.stderr | 0 .../ui/inference/inference_unstable_forced.rs | 0 .../ui/inference/inference_unstable_forced.stderr | 0 {src/test => tests}/ui/inference/issue-103587.rs | 0 .../test => tests}/ui/inference/issue-103587.stderr | 0 {src/test => tests}/ui/inference/issue-104649.rs | 0 .../test => tests}/ui/inference/issue-104649.stderr | 0 {src/test => tests}/ui/inference/issue-28935.rs | 0 {src/test => tests}/ui/inference/issue-36053.rs | 0 {src/test => tests}/ui/inference/issue-70703.rs | 0 {src/test => tests}/ui/inference/issue-71309.rs | 0 {src/test => tests}/ui/inference/issue-71309.stderr | 0 {src/test => tests}/ui/inference/issue-71732.rs | 0 {src/test => tests}/ui/inference/issue-71732.stderr | 0 {src/test => tests}/ui/inference/issue-72616.rs | 0 {src/test => tests}/ui/inference/issue-72616.stderr | 0 {src/test => tests}/ui/inference/issue-72690.rs | 0 {src/test => tests}/ui/inference/issue-72690.stderr | 0 {src/test => tests}/ui/inference/issue-80816.rs | 0 {src/test => tests}/ui/inference/issue-80816.stderr | 0 {src/test => tests}/ui/inference/issue-81522.rs | 0 {src/test => tests}/ui/inference/issue-83606.rs | 0 {src/test => tests}/ui/inference/issue-83606.stderr | 0 {src/test => tests}/ui/inference/issue-86162-1.rs | 0 .../ui/inference/issue-86162-1.stderr | 0 {src/test => tests}/ui/inference/issue-86162-2.rs | 0 .../ui/inference/issue-86162-2.stderr | 0 .../ui/inference/lub-glb-with-unbound-infer-var.rs | 0 .../ui/inference/need_type_info/channel.rs | 0 .../ui/inference/need_type_info/channel.stderr | 0 .../ui/inference/need_type_info/concrete-impl.rs | 0 .../inference/need_type_info/concrete-impl.stderr | 0 ...o-not-suggest-generic-arguments-for-turbofish.rs | 0 ...t-suggest-generic-arguments-for-turbofish.stderr | 0 .../expr-struct-type-relative-enum.rs | 0 .../expr-struct-type-relative-enum.stderr | 0 .../need_type_info/expr-struct-type-relative-gat.rs | 0 .../expr-struct-type-relative-gat.stderr | 0 .../need_type_info/expr-struct-type-relative.rs | 0 .../need_type_info/expr-struct-type-relative.stderr | 0 .../ui/inference/need_type_info/issue-103053.rs | 0 .../ui/inference/need_type_info/issue-103053.stderr | 0 .../ui/inference/need_type_info/self-ty-in-path.rs | 0 .../inference/need_type_info/self-ty-in-path.stderr | 0 .../inference/need_type_info/type-alias-indirect.rs | 0 .../need_type_info/type-alias-indirect.stderr | 0 .../ui/inference/need_type_info/type-alias.rs | 0 .../ui/inference/need_type_info/type-alias.stderr | 0 .../ui/inference/newlambdas-ret-infer.rs | 0 .../ui/inference/newlambdas-ret-infer2.rs | 0 .../ui/inference/question-mark-type-infer.rs | 0 .../ui/inference/question-mark-type-infer.stderr | 0 .../test => tests}/ui/inference/range-type-infer.rs | 0 {src/test => tests}/ui/inference/simple-infer.rs | 0 {src/test => tests}/ui/inference/str-as-char.fixed | 0 {src/test => tests}/ui/inference/str-as-char.rs | 0 {src/test => tests}/ui/inference/str-as-char.stderr | 0 .../ui/inference/tutorial-suffix-inference-test.rs | 0 .../inference/tutorial-suffix-inference-test.stderr | 0 .../ui/inference/type-infer-generalize-ty-var.rs | 0 .../ui/infinite/infinite-autoderef.rs | 0 .../ui/infinite/infinite-autoderef.stderr | 0 .../infinite/infinite-instantiation.polonius.stderr | 0 .../ui/infinite/infinite-instantiation.rs | 0 .../ui/infinite/infinite-instantiation.stderr | 0 .../ui/infinite/infinite-macro-expansion.rs | 0 .../ui/infinite/infinite-macro-expansion.stderr | 0 .../ui/infinite/infinite-recursion-const-fn.rs | 0 .../ui/infinite/infinite-recursion-const-fn.stderr | 0 {src/test => tests}/ui/infinite/infinite-struct.rs | 0 .../ui/infinite/infinite-struct.stderr | 0 .../ui/infinite/infinite-tag-type-recursion.rs | 0 .../ui/infinite/infinite-tag-type-recursion.stderr | 0 .../ui/infinite/infinite-trait-alias-recursion.rs | 0 .../infinite/infinite-trait-alias-recursion.stderr | 0 .../infinite-type-alias-mutual-recursion.rs | 0 .../infinite-type-alias-mutual-recursion.stderr | 0 .../ui/infinite/infinite-vec-type-recursion.rs | 0 .../ui/infinite/infinite-vec-type-recursion.stderr | 0 .../ui/infinite/issue-41731-infinite-macro-print.rs | 0 .../issue-41731-infinite-macro-print.stderr | 0 .../infinite/issue-41731-infinite-macro-println.rs | 0 .../issue-41731-infinite-macro-println.stderr | 0 .../auxiliary/repeat.rs | 0 .../ui/inherent-impls-overlap-check/no-overlap.rs | 0 .../ui/inherent-impls-overlap-check/overlap.rs | 0 .../ui/inherent-impls-overlap-check/overlap.stderr | 0 {src/test => tests}/ui/inherit-env.rs | 0 .../ui/inline-const/const-expr-array-init.rs | 0 .../ui/inline-const/const-expr-basic.rs | 0 .../ui/inline-const/const-expr-generic-err.rs | 0 .../ui/inline-const/const-expr-generic-err.stderr | 0 .../ui/inline-const/const-expr-generic-err2.rs | 0 .../ui/inline-const/const-expr-generic-err2.stderr | 0 .../ui/inline-const/const-expr-generic.rs | 0 .../ui/inline-const/const-expr-inference.rs | 0 .../ui/inline-const/const-expr-lifetime-err.rs | 0 .../ui/inline-const/const-expr-lifetime-err.stderr | 0 .../ui/inline-const/const-expr-lifetime.rs | 0 .../ui/inline-const/const-expr-macro.rs | 0 .../ui/inline-const/const-expr-reference.rs | 0 .../ui/inline-const/const-match-pat-generic.rs | 0 .../ui/inline-const/const-match-pat-generic.stderr | 0 .../ui/inline-const/const-match-pat-inference.rs | 0 .../ui/inline-const/const-match-pat-lifetime-err.rs | 0 .../ui/inline-const/const-match-pat-lifetime.rs | 0 .../ui/inline-const/const-match-pat-range.rs | 0 .../ui/inline-const/const-match-pat.rs | 0 .../ui/inline-const/expr-unsafe-err.mir.stderr | 0 .../ui/inline-const/expr-unsafe-err.rs | 0 .../ui/inline-const/expr-unsafe-err.thir.stderr | 0 .../ui/inline-const/expr-unsafe.mir.stderr | 0 {src/test => tests}/ui/inline-const/expr-unsafe.rs | 0 .../ui/inline-const/expr-unsafe.thir.stderr | 0 .../ui/inline-const/expr-with-block-err.rs | 0 .../ui/inline-const/expr-with-block-err.stderr | 0 .../ui/inline-const/expr-with-block.rs | 0 .../ui/inline-const/macro-with-const.rs | 0 .../ui/inline-const/pat-unsafe-err.rs | 0 {src/test => tests}/ui/inline-const/pat-unsafe.rs | 0 .../test => tests}/ui/inline-disallow-on-variant.rs | 0 .../ui/inline-disallow-on-variant.stderr | 0 {src/test => tests}/ui/inlined-main.rs | 0 {src/test => tests}/ui/inner-attrs-on-impl.rs | 0 {src/test => tests}/ui/inner-module.rs | 0 .../ui/inner-static-type-parameter.rs | 0 .../ui/inner-static-type-parameter.stderr | 0 {src/test => tests}/ui/inner-static.rs | 0 {src/test => tests}/ui/integral-indexing.rs | 0 {src/test => tests}/ui/integral-indexing.stderr | 0 .../ui/integral-variable-unification-error.rs | 0 .../ui/integral-variable-unification-error.stderr | 0 .../ui/interior-mutability/interior-mutability.rs | 0 .../interior-mutability/interior-mutability.stderr | 0 .../ui/internal/auxiliary/internal_unstable.rs | 0 .../ui/internal/internal-unstable-const.rs | 0 .../ui/internal/internal-unstable-const.stderr | 0 .../ui/internal/internal-unstable-noallow.rs | 0 .../ui/internal/internal-unstable-noallow.stderr | 0 .../ui/internal/internal-unstable-thread-local.rs | 0 .../internal/internal-unstable-thread-local.stderr | 0 .../test => tests}/ui/internal/internal-unstable.rs | 0 .../ui/internal/internal-unstable.stderr | 0 {src/test => tests}/ui/intrinsics-always-extern.rs | 0 .../ui/intrinsics-always-extern.stderr | 0 .../ui/intrinsics/auxiliary/cci_intrinsic.rs | 0 .../ui/intrinsics/bad-intrinsic-monomorphization.rs | 0 .../bad-intrinsic-monomorphization.stderr | 0 .../intrinsics/const-eval-select-backtrace-std.rs | 0 .../const-eval-select-backtrace-std.run.stderr | 0 .../ui/intrinsics/const-eval-select-backtrace.rs | 0 .../const-eval-select-backtrace.run.stderr | 0 .../ui/intrinsics/const-eval-select-bad.rs | 0 .../ui/intrinsics/const-eval-select-bad.stderr | 0 .../ui/intrinsics/const-eval-select-stability.rs | 0 .../intrinsics/const-eval-select-stability.stderr | 0 .../ui/intrinsics/const-eval-select-x86_64.rs | 0 .../ui/intrinsics/const-eval-select.rs | 0 .../ui/intrinsics/intrinsic-alignment.rs | 0 .../ui/intrinsics/intrinsic-assume.rs | 0 .../ui/intrinsics/intrinsic-atomics-cc.rs | 0 .../ui/intrinsics/intrinsic-atomics.rs | 0 .../ui/intrinsics/intrinsic-nearby.rs | 0 .../ui/intrinsics/intrinsic-raw_eq-const-padding.rs | 0 .../intrinsic-raw_eq-const-padding.stderr | 0 .../ui/intrinsics/intrinsic-raw_eq-const.rs | 0 .../ui/intrinsics/intrinsic-unreachable.rs | 0 .../ui/intrinsics/intrinsic-volatile.rs | 0 .../ui/intrinsics/intrinsics-integer.rs | 0 .../test => tests}/ui/intrinsics/intrinsics-math.rs | 0 .../ui/intrinsics/issue-28575.mir.stderr | 0 {src/test => tests}/ui/intrinsics/issue-28575.rs | 0 .../ui/intrinsics/issue-28575.thir.stderr | 0 .../ui/intrinsics/issue-84297-reifying-copy.rs | 0 .../ui/intrinsics/non-integer-atomic.rs | 0 .../ui/intrinsics/non-integer-atomic.stderr | 0 .../ui/intrinsics/panic-uninitialized-zeroed.rs | 0 .../ui/intrinsics/safe-intrinsic-mismatch.rs | 0 .../ui/intrinsics/safe-intrinsic-mismatch.stderr | 0 .../ui/intrinsics/unchecked_math_unsafe.mir.stderr | 0 .../ui/intrinsics/unchecked_math_unsafe.rs | 0 .../ui/intrinsics/unchecked_math_unsafe.thir.stderr | 0 .../ui/intrinsics/unchecked_math_unstable.rs | 0 .../ui/intrinsics/unchecked_math_unstable.stderr | 0 ...ranch-protection-missing-pac-ret.BADFLAGS.stderr | 0 ...anch-protection-missing-pac-ret.BADTARGET.stderr | 0 .../branch-protection-missing-pac-ret.rs | 0 .../codegen-option-without-group.rs | 0 .../codegen-option-without-group.stderr | 0 .../debug-option-without-group.rs | 0 .../debug-option-without-group.stderr | 0 .../invalid-module-declaration/auxiliary/foo/bar.rs | 0 .../invalid-module-declaration/auxiliary/foo/mod.rs | 0 .../invalid-module-declaration.rs | 0 .../invalid-module-declaration.stderr | 0 .../ui/invalid-self-argument/bare-fn-start.rs | 0 .../ui/invalid-self-argument/bare-fn-start.stderr | 0 .../ui/invalid-self-argument/bare-fn.rs | 0 .../ui/invalid-self-argument/bare-fn.stderr | 0 .../ui/invalid-self-argument/trait-fn.rs | 0 .../ui/invalid-self-argument/trait-fn.stderr | 0 .../ui/invalid/invalid-crate-type-macro.rs | 0 .../ui/invalid/invalid-crate-type-macro.stderr | 0 .../test => tests}/ui/invalid/invalid-crate-type.rs | 0 .../ui/invalid/invalid-crate-type.stderr | 0 .../invalid/invalid-debugger-visualizer-option.rs | 0 .../invalid-debugger-visualizer-option.stderr | 0 .../invalid/invalid-debugger-visualizer-target.rs | 0 .../invalid-debugger-visualizer-target.stderr | 0 {src/test => tests}/ui/invalid/invalid-inline.rs | 0 .../test => tests}/ui/invalid/invalid-inline.stderr | 0 .../ui/invalid/invalid-llvm-passes.rs | 0 .../ui/invalid/invalid-llvm-passes.stderr | 0 .../ui/invalid/invalid-macro-matcher.rs | 0 .../ui/invalid/invalid-macro-matcher.stderr | 0 .../ui/invalid/invalid-no-sanitize.rs | 0 .../ui/invalid/invalid-no-sanitize.stderr | 0 .../ui/invalid/invalid-path-in-const.rs | 0 .../ui/invalid/invalid-path-in-const.stderr | 0 .../ui/invalid/invalid-plugin-attr.rs | 0 .../ui/invalid/invalid-plugin-attr.stderr | 0 ...invalid-rustc_legacy_const_generics-arguments.rs | 0 ...lid-rustc_legacy_const_generics-arguments.stderr | 0 .../invalid_rustc_layout_scalar_valid_range.rs | 0 .../invalid_rustc_layout_scalar_valid_range.stderr | 0 {src/test => tests}/ui/invalid_crate_type_syntax.rs | 0 .../ui/invalid_crate_type_syntax.stderr | 0 .../ui/invalid_dispatch_from_dyn_impls.rs | 0 .../ui/invalid_dispatch_from_dyn_impls.stderr | 0 .../ui/issue-76387-llvm-miscompile.rs | 0 {src/test => tests}/ui/issue-94866.rs | 0 {src/test => tests}/ui/issue-94866.stderr | 0 {src/test => tests}/ui/issues-71798.rs | 0 {src/test => tests}/ui/issues-71798.stderr | 0 {src/test => tests}/ui/issues/.gitattributes | 0 {src/test => tests}/ui/issues/auxiliary/cgu_test.rs | 0 .../ui/issues/auxiliary/cgu_test_a.rs | 0 .../ui/issues/auxiliary/cgu_test_b.rs | 0 {src/test => tests}/ui/issues/auxiliary/i8.rs | 0 {src/test => tests}/ui/issues/auxiliary/iss.rs | 0 .../ui/issues/auxiliary/issue-11224.rs | 0 .../ui/issues/auxiliary/issue-11508.rs | 0 .../ui/issues/auxiliary/issue-11529.rs | 0 .../ui/issues/auxiliary/issue-11680.rs | 0 .../ui/issues/auxiliary/issue-12133-dylib.rs | 0 .../ui/issues/auxiliary/issue-12133-dylib2.rs | 0 .../ui/issues/auxiliary/issue-12133-rlib.rs | 0 .../ui/issues/auxiliary/issue-12612-1.rs | 0 .../ui/issues/auxiliary/issue-12612-2.rs | 0 .../ui/issues/auxiliary/issue-12660-aux.rs | 0 .../ui/issues/auxiliary/issue-13507.rs | 0 .../ui/issues/auxiliary/issue-13620-1.rs | 0 .../ui/issues/auxiliary/issue-13620-2.rs | 0 .../ui/issues/auxiliary/issue-13872-1.rs | 0 .../ui/issues/auxiliary/issue-13872-2.rs | 0 .../ui/issues/auxiliary/issue-13872-3.rs | 0 .../ui/issues/auxiliary/issue-14344-1.rs | 0 .../ui/issues/auxiliary/issue-14344-2.rs | 0 .../ui/issues/auxiliary/issue-14421.rs | 0 .../ui/issues/auxiliary/issue-14422.rs | 0 .../ui/issues/auxiliary/issue-15562.rs | 0 .../ui/issues/auxiliary/issue-16643.rs | 0 .../ui/issues/auxiliary/issue-16725.rs | 0 .../ui/issues/auxiliary/issue-17662.rs | 0 .../ui/issues/auxiliary/issue-18501.rs | 0 .../ui/issues/auxiliary/issue-18514.rs | 0 .../ui/issues/auxiliary/issue-18711.rs | 0 .../ui/issues/auxiliary/issue-18913-1.rs | 0 .../ui/issues/auxiliary/issue-18913-2.rs | 0 .../ui/issues/auxiliary/issue-1920.rs | 0 .../ui/issues/auxiliary/issue-19293.rs | 0 .../ui/issues/auxiliary/issue-19340-1.rs | 0 .../ui/issues/auxiliary/issue-20389.rs | 0 .../ui/issues/auxiliary/issue-21202.rs | 0 .../ui/issues/auxiliary/issue-2170-lib.rs | 0 .../ui/issues/auxiliary/issue-2316-a.rs | 0 .../ui/issues/auxiliary/issue-2316-b.rs | 0 .../ui/issues/auxiliary/issue-2380.rs | 0 .../ui/issues/auxiliary/issue-2414-a.rs | 0 .../ui/issues/auxiliary/issue-2414-b.rs | 0 .../ui/issues/auxiliary/issue-2472-b.rs | 0 .../ui/issues/auxiliary/issue-25185-1.rs | 0 .../ui/issues/auxiliary/issue-25185-2.rs | 0 .../ui/issues/auxiliary/issue-2526.rs | 0 .../ui/issues/auxiliary/issue-25467.rs | 0 .../ui/issues/auxiliary/issue-2631-a.rs | 0 .../ui/issues/auxiliary/issue-2723-a.rs | 0 .../ui/issues/auxiliary/issue-29181.rs | 0 .../ui/issues/auxiliary/issue-29265.rs | 0 .../ui/issues/auxiliary/issue-29485.rs | 0 .../ui/issues/auxiliary/issue-3012-1.rs | 0 .../ui/issues/auxiliary/issue-30123-aux.rs | 0 .../ui/issues/auxiliary/issue-3136-a.rc | 0 .../ui/issues/auxiliary/issue-3136-a.rs | 0 .../ui/issues/auxiliary/issue-31702-1.rs | 0 .../ui/issues/auxiliary/issue-31702-2.rs | 0 .../ui/issues/auxiliary/issue-34796-aux.rs | 0 .../ui/issues/auxiliary/issue-36954.rs | 0 .../ui/issues/auxiliary/issue-38190.rs | 0 .../ui/issues/auxiliary/issue-38226-aux.rs | 0 .../ui/issues/auxiliary/issue-3979-traits.rs | 0 .../ui/issues/auxiliary/issue-41053.rs | 0 .../ui/issues/auxiliary/issue-41394.rs | 0 .../ui/issues/auxiliary/issue-41549.rs | 0 .../ui/issues/auxiliary/issue-42007-s.rs | 0 .../ui/issues/auxiliary/issue-4208-cc.rs | 0 .../ui/issues/auxiliary/issue-4545.rs | 0 .../ui/issues/auxiliary/issue-48984-aux.rs | 0 .../ui/issues/auxiliary/issue-49544.rs | 0 .../ui/issues/auxiliary/issue-51798.rs | 0 .../ui/issues/auxiliary/issue-52489.rs | 0 .../ui/issues/auxiliary/issue-5518.rs | 0 .../ui/issues/auxiliary/issue-5521.rs | 0 .../ui/issues/auxiliary/issue-56943.rs | 0 .../ui/issues/auxiliary/issue-57271-lib.rs | 0 .../ui/issues/auxiliary/issue-5844-aux.rs | 0 .../ui/issues/auxiliary/issue-7178.rs | 0 .../ui/issues/auxiliary/issue-73112.rs | 0 .../ui/issues/auxiliary/issue-7899.rs | 0 .../ui/issues/auxiliary/issue-8044.rs | 0 .../ui/issues/auxiliary/issue-8259.rs | 0 .../ui/issues/auxiliary/issue-8401.rs | 0 .../ui/issues/auxiliary/issue-9123.rs | 0 .../ui/issues/auxiliary/issue-9155.rs | 0 .../ui/issues/auxiliary/issue-9188.rs | 0 .../ui/issues/auxiliary/issue-9906.rs | 0 .../ui/issues/auxiliary/issue-9968.rs | 0 .../ui/issues/auxiliary/private-trait-xc.rs | 0 .../ui/issues/auxiliary/reexported-trait.rs | 0 {src/test => tests}/ui/issues/issue-100605.rs | 0 {src/test => tests}/ui/issues/issue-100605.stderr | 0 {src/test => tests}/ui/issues/issue-10228.rs | 0 {src/test => tests}/ui/issues/issue-10291.rs | 0 {src/test => tests}/ui/issues/issue-10291.stderr | 0 {src/test => tests}/ui/issues/issue-102964.rs | 0 {src/test => tests}/ui/issues/issue-102964.stderr | 0 {src/test => tests}/ui/issues/issue-10396.rs | 0 {src/test => tests}/ui/issues/issue-10412.rs | 0 {src/test => tests}/ui/issues/issue-10412.stderr | 0 {src/test => tests}/ui/issues/issue-10436.rs | 0 {src/test => tests}/ui/issues/issue-10456.rs | 0 {src/test => tests}/ui/issues/issue-10465.rs | 0 {src/test => tests}/ui/issues/issue-10465.stderr | 0 {src/test => tests}/ui/issues/issue-10545.rs | 0 {src/test => tests}/ui/issues/issue-10545.stderr | 0 {src/test => tests}/ui/issues/issue-10638.rs | 0 {src/test => tests}/ui/issues/issue-10656.rs | 0 {src/test => tests}/ui/issues/issue-10656.stderr | 0 {src/test => tests}/ui/issues/issue-10682.rs | 0 {src/test => tests}/ui/issues/issue-10683.rs | 0 {src/test => tests}/ui/issues/issue-10718.rs | 0 {src/test => tests}/ui/issues/issue-10734.rs | 0 {src/test => tests}/ui/issues/issue-10764.rs | 0 {src/test => tests}/ui/issues/issue-10764.stderr | 0 {src/test => tests}/ui/issues/issue-10767.rs | 0 {src/test => tests}/ui/issues/issue-10802.rs | 0 {src/test => tests}/ui/issues/issue-10806.rs | 0 {src/test => tests}/ui/issues/issue-10853.rs | 0 {src/test => tests}/ui/issues/issue-10877.rs | 0 {src/test => tests}/ui/issues/issue-10877.stderr | 0 {src/test => tests}/ui/issues/issue-10902.rs | 0 {src/test => tests}/ui/issues/issue-11004.rs | 0 {src/test => tests}/ui/issues/issue-11004.stderr | 0 {src/test => tests}/ui/issues/issue-11047.rs | 0 {src/test => tests}/ui/issues/issue-11085.rs | 0 {src/test => tests}/ui/issues/issue-11192.rs | 0 {src/test => tests}/ui/issues/issue-11192.stderr | 0 {src/test => tests}/ui/issues/issue-11205.rs | 0 {src/test => tests}/ui/issues/issue-11224.rs | 0 {src/test => tests}/ui/issues/issue-11267.rs | 0 {src/test => tests}/ui/issues/issue-11374.rs | 0 {src/test => tests}/ui/issues/issue-11374.stderr | 0 {src/test => tests}/ui/issues/issue-11382.rs | 0 {src/test => tests}/ui/issues/issue-11384.rs | 0 {src/test => tests}/ui/issues/issue-11508.rs | 0 {src/test => tests}/ui/issues/issue-11515.rs | 0 {src/test => tests}/ui/issues/issue-11515.stderr | 0 {src/test => tests}/ui/issues/issue-11529.rs | 0 {src/test => tests}/ui/issues/issue-11552.rs | 0 {src/test => tests}/ui/issues/issue-11592.rs | 0 {src/test => tests}/ui/issues/issue-11593.rs | 0 {src/test => tests}/ui/issues/issue-11593.stderr | 0 {src/test => tests}/ui/issues/issue-11677.rs | 0 {src/test => tests}/ui/issues/issue-11680.rs | 0 {src/test => tests}/ui/issues/issue-11680.stderr | 0 {src/test => tests}/ui/issues/issue-11681.rs | 0 {src/test => tests}/ui/issues/issue-11681.stderr | 0 {src/test => tests}/ui/issues/issue-11692-1.rs | 0 {src/test => tests}/ui/issues/issue-11692-1.stderr | 0 {src/test => tests}/ui/issues/issue-11692-2.rs | 0 {src/test => tests}/ui/issues/issue-11692-2.stderr | 0 {src/test => tests}/ui/issues/issue-11709.rs | 0 {src/test => tests}/ui/issues/issue-11740.rs | 0 {src/test => tests}/ui/issues/issue-11771.rs | 0 {src/test => tests}/ui/issues/issue-11771.stderr | 0 {src/test => tests}/ui/issues/issue-11820.rs | 0 {src/test => tests}/ui/issues/issue-11844.rs | 0 {src/test => tests}/ui/issues/issue-11844.stderr | 0 {src/test => tests}/ui/issues/issue-11869.rs | 0 {src/test => tests}/ui/issues/issue-11873.rs | 0 {src/test => tests}/ui/issues/issue-11873.stderr | 0 {src/test => tests}/ui/issues/issue-11958.rs | 0 {src/test => tests}/ui/issues/issue-11958.stderr | 0 {src/test => tests}/ui/issues/issue-12028.rs | 0 {src/test => tests}/ui/issues/issue-12028.stderr | 0 {src/test => tests}/ui/issues/issue-12033.rs | 0 {src/test => tests}/ui/issues/issue-12041.rs | 0 {src/test => tests}/ui/issues/issue-12041.stderr | 0 {src/test => tests}/ui/issues/issue-12127.rs | 0 {src/test => tests}/ui/issues/issue-12127.stderr | 0 {src/test => tests}/ui/issues/issue-12133-1.rs | 0 {src/test => tests}/ui/issues/issue-12133-2.rs | 0 {src/test => tests}/ui/issues/issue-12133-3.rs | 0 {src/test => tests}/ui/issues/issue-12187-1.rs | 0 {src/test => tests}/ui/issues/issue-12187-1.stderr | 0 {src/test => tests}/ui/issues/issue-12187-2.rs | 0 {src/test => tests}/ui/issues/issue-12187-2.stderr | 0 {src/test => tests}/ui/issues/issue-12285.rs | 0 {src/test => tests}/ui/issues/issue-1251.rs | 0 {src/test => tests}/ui/issues/issue-12511.rs | 0 {src/test => tests}/ui/issues/issue-12511.stderr | 0 {src/test => tests}/ui/issues/issue-12567.rs | 0 {src/test => tests}/ui/issues/issue-12567.stderr | 0 {src/test => tests}/ui/issues/issue-1257.rs | 0 {src/test => tests}/ui/issues/issue-12612.rs | 0 {src/test => tests}/ui/issues/issue-12660.rs | 0 {src/test => tests}/ui/issues/issue-12677.rs | 0 {src/test => tests}/ui/issues/issue-12699.rs | 0 {src/test => tests}/ui/issues/issue-12729.rs | 0 {src/test => tests}/ui/issues/issue-12744.rs | 0 {src/test => tests}/ui/issues/issue-12860.rs | 0 {src/test => tests}/ui/issues/issue-12863.rs | 0 {src/test => tests}/ui/issues/issue-12863.stderr | 0 {src/test => tests}/ui/issues/issue-12909.rs | 0 {src/test => tests}/ui/issues/issue-12920.rs | 0 {src/test => tests}/ui/issues/issue-12997-1.rs | 0 {src/test => tests}/ui/issues/issue-12997-1.stderr | 0 {src/test => tests}/ui/issues/issue-12997-2.rs | 0 {src/test => tests}/ui/issues/issue-12997-2.stderr | 0 {src/test => tests}/ui/issues/issue-13027.rs | 0 {src/test => tests}/ui/issues/issue-13033.rs | 0 {src/test => tests}/ui/issues/issue-13033.stderr | 0 {src/test => tests}/ui/issues/issue-13058.rs | 0 {src/test => tests}/ui/issues/issue-13058.stderr | 0 {src/test => tests}/ui/issues/issue-13105.rs | 0 {src/test => tests}/ui/issues/issue-13167.rs | 0 {src/test => tests}/ui/issues/issue-13202.rs | 0 {src/test => tests}/ui/issues/issue-13204.rs | 0 {src/test => tests}/ui/issues/issue-13214.rs | 0 .../ui/issues/issue-13259-windows-tcb-trash.rs | 0 {src/test => tests}/ui/issues/issue-13264.rs | 0 {src/test => tests}/ui/issues/issue-13323.rs | 0 {src/test => tests}/ui/issues/issue-13359.rs | 0 {src/test => tests}/ui/issues/issue-13359.stderr | 0 {src/test => tests}/ui/issues/issue-13405.rs | 0 {src/test => tests}/ui/issues/issue-13407.rs | 0 {src/test => tests}/ui/issues/issue-13407.stderr | 0 {src/test => tests}/ui/issues/issue-13434.rs | 0 {src/test => tests}/ui/issues/issue-13446.rs | 0 {src/test => tests}/ui/issues/issue-13446.stderr | 0 {src/test => tests}/ui/issues/issue-13466.rs | 0 {src/test => tests}/ui/issues/issue-13466.stderr | 0 {src/test => tests}/ui/issues/issue-13482-2.rs | 0 {src/test => tests}/ui/issues/issue-13482-2.stderr | 0 {src/test => tests}/ui/issues/issue-13482.rs | 0 {src/test => tests}/ui/issues/issue-13482.stderr | 0 {src/test => tests}/ui/issues/issue-13497-2.rs | 0 {src/test => tests}/ui/issues/issue-13497-2.stderr | 0 {src/test => tests}/ui/issues/issue-13497.rs | 0 {src/test => tests}/ui/issues/issue-13497.stderr | 0 {src/test => tests}/ui/issues/issue-13507-2.rs | 0 {src/test => tests}/ui/issues/issue-1362.rs | 0 {src/test => tests}/ui/issues/issue-1362.stderr | 0 {src/test => tests}/ui/issues/issue-13620.rs | 0 {src/test => tests}/ui/issues/issue-13665.rs | 0 {src/test => tests}/ui/issues/issue-13703.rs | 0 {src/test => tests}/ui/issues/issue-13763.rs | 0 {src/test => tests}/ui/issues/issue-13775.rs | 0 {src/test => tests}/ui/issues/issue-13808.rs | 0 {src/test => tests}/ui/issues/issue-13847.rs | 0 {src/test => tests}/ui/issues/issue-13847.stderr | 0 {src/test => tests}/ui/issues/issue-13867.rs | 0 {src/test => tests}/ui/issues/issue-13872.rs | 0 {src/test => tests}/ui/issues/issue-14082.rs | 0 {src/test => tests}/ui/issues/issue-14091-2.rs | 0 {src/test => tests}/ui/issues/issue-14091-2.stderr | 0 {src/test => tests}/ui/issues/issue-14091.rs | 0 {src/test => tests}/ui/issues/issue-14091.stderr | 0 {src/test => tests}/ui/issues/issue-14092.rs | 0 {src/test => tests}/ui/issues/issue-14092.stderr | 0 {src/test => tests}/ui/issues/issue-14229.rs | 0 {src/test => tests}/ui/issues/issue-14254.rs | 0 {src/test => tests}/ui/issues/issue-14285.rs | 0 {src/test => tests}/ui/issues/issue-14285.stderr | 0 {src/test => tests}/ui/issues/issue-14308.rs | 0 {src/test => tests}/ui/issues/issue-14330.rs | 0 {src/test => tests}/ui/issues/issue-14344.rs | 0 {src/test => tests}/ui/issues/issue-14366.rs | 0 {src/test => tests}/ui/issues/issue-14366.stderr | 0 {src/test => tests}/ui/issues/issue-14382.rs | 0 {src/test => tests}/ui/issues/issue-14393.rs | 0 {src/test => tests}/ui/issues/issue-14399.rs | 0 {src/test => tests}/ui/issues/issue-14421.rs | 0 {src/test => tests}/ui/issues/issue-14422.rs | 0 {src/test => tests}/ui/issues/issue-1448-2.rs | 0 {src/test => tests}/ui/issues/issue-1448-2.stderr | 0 {src/test => tests}/ui/issues/issue-1451.rs | 0 {src/test => tests}/ui/issues/issue-14541.rs | 0 {src/test => tests}/ui/issues/issue-14541.stderr | 0 {src/test => tests}/ui/issues/issue-1460.rs | 0 {src/test => tests}/ui/issues/issue-1460.stderr | 0 {src/test => tests}/ui/issues/issue-14721.rs | 0 {src/test => tests}/ui/issues/issue-14721.stderr | 0 {src/test => tests}/ui/issues/issue-1476.rs | 0 {src/test => tests}/ui/issues/issue-1476.stderr | 0 {src/test => tests}/ui/issues/issue-14821.rs | 0 {src/test => tests}/ui/issues/issue-14845.rs | 0 {src/test => tests}/ui/issues/issue-14845.stderr | 0 {src/test => tests}/ui/issues/issue-14853.rs | 0 {src/test => tests}/ui/issues/issue-14853.stderr | 0 {src/test => tests}/ui/issues/issue-14865.rs | 0 {src/test => tests}/ui/issues/issue-14875.rs | 0 {src/test => tests}/ui/issues/issue-14901.rs | 0 {src/test => tests}/ui/issues/issue-14915.rs | 0 {src/test => tests}/ui/issues/issue-14915.stderr | 0 {src/test => tests}/ui/issues/issue-14919.rs | 0 {src/test => tests}/ui/issues/issue-14959.rs | 0 {src/test => tests}/ui/issues/issue-15034.rs | 0 {src/test => tests}/ui/issues/issue-15034.stderr | 0 {src/test => tests}/ui/issues/issue-15043.rs | 0 {src/test => tests}/ui/issues/issue-15063.rs | 0 {src/test => tests}/ui/issues/issue-15094.rs | 0 {src/test => tests}/ui/issues/issue-15094.stderr | 0 {src/test => tests}/ui/issues/issue-15104.rs | 0 {src/test => tests}/ui/issues/issue-15129-rpass.rs | 0 {src/test => tests}/ui/issues/issue-15155.rs | 0 {src/test => tests}/ui/issues/issue-15167.rs | 0 {src/test => tests}/ui/issues/issue-15167.stderr | 0 {src/test => tests}/ui/issues/issue-15189.rs | 0 {src/test => tests}/ui/issues/issue-15207.rs | 0 {src/test => tests}/ui/issues/issue-15207.stderr | 0 {src/test => tests}/ui/issues/issue-15260.rs | 0 {src/test => tests}/ui/issues/issue-15260.stderr | 0 {src/test => tests}/ui/issues/issue-15381.rs | 0 {src/test => tests}/ui/issues/issue-15381.stderr | 0 {src/test => tests}/ui/issues/issue-15444.rs | 0 {src/test => tests}/ui/issues/issue-15523-big.rs | 0 {src/test => tests}/ui/issues/issue-15523.rs | 0 {src/test => tests}/ui/issues/issue-15562.rs | 0 {src/test => tests}/ui/issues/issue-15571.rs | 0 {src/test => tests}/ui/issues/issue-15673.rs | 0 {src/test => tests}/ui/issues/issue-15689-1.rs | 0 {src/test => tests}/ui/issues/issue-15689-2.rs | 0 {src/test => tests}/ui/issues/issue-15734.rs | 0 {src/test => tests}/ui/issues/issue-15735.rs | 0 {src/test => tests}/ui/issues/issue-15756.rs | 0 {src/test => tests}/ui/issues/issue-15756.stderr | 0 {src/test => tests}/ui/issues/issue-15763.rs | 0 {src/test => tests}/ui/issues/issue-15774.rs | 0 {src/test => tests}/ui/issues/issue-15783.rs | 0 {src/test => tests}/ui/issues/issue-15783.stderr | 0 {src/test => tests}/ui/issues/issue-15793.rs | 0 {src/test => tests}/ui/issues/issue-15858.rs | 0 {src/test => tests}/ui/issues/issue-15896.rs | 0 {src/test => tests}/ui/issues/issue-15896.stderr | 0 {src/test => tests}/ui/issues/issue-15965.rs | 0 {src/test => tests}/ui/issues/issue-15965.stderr | 0 {src/test => tests}/ui/issues/issue-16048.rs | 0 {src/test => tests}/ui/issues/issue-16048.stderr | 0 {src/test => tests}/ui/issues/issue-16149.rs | 0 {src/test => tests}/ui/issues/issue-16149.stderr | 0 {src/test => tests}/ui/issues/issue-16151.rs | 0 {src/test => tests}/ui/issues/issue-16250.rs | 0 {src/test => tests}/ui/issues/issue-16250.stderr | 0 {src/test => tests}/ui/issues/issue-16256.rs | 0 {src/test => tests}/ui/issues/issue-16256.stderr | 0 {src/test => tests}/ui/issues/issue-16278.rs | 0 {src/test => tests}/ui/issues/issue-16338.rs | 0 {src/test => tests}/ui/issues/issue-16338.stderr | 0 {src/test => tests}/ui/issues/issue-16401.rs | 0 {src/test => tests}/ui/issues/issue-16401.stderr | 0 {src/test => tests}/ui/issues/issue-16441.rs | 0 {src/test => tests}/ui/issues/issue-16452.rs | 0 {src/test => tests}/ui/issues/issue-16492.rs | 0 {src/test => tests}/ui/issues/issue-16530.rs | 0 .../test => tests}/ui/issues/issue-16538.mir.stderr | 0 {src/test => tests}/ui/issues/issue-16538.rs | 0 .../ui/issues/issue-16538.thir.stderr | 0 {src/test => tests}/ui/issues/issue-16560.rs | 0 {src/test => tests}/ui/issues/issue-16562.rs | 0 {src/test => tests}/ui/issues/issue-16562.stderr | 0 {src/test => tests}/ui/issues/issue-16596.rs | 0 {src/test => tests}/ui/issues/issue-1660.rs | 0 {src/test => tests}/ui/issues/issue-16643.rs | 0 {src/test => tests}/ui/issues/issue-16648.rs | 0 {src/test => tests}/ui/issues/issue-16668.rs | 0 {src/test => tests}/ui/issues/issue-16671.rs | 0 {src/test => tests}/ui/issues/issue-16683.rs | 0 {src/test => tests}/ui/issues/issue-16683.stderr | 0 {src/test => tests}/ui/issues/issue-16725.rs | 0 {src/test => tests}/ui/issues/issue-16725.stderr | 0 {src/test => tests}/ui/issues/issue-16739.rs | 0 {src/test => tests}/ui/issues/issue-16745.rs | 0 {src/test => tests}/ui/issues/issue-16774.rs | 0 {src/test => tests}/ui/issues/issue-16783.rs | 0 {src/test => tests}/ui/issues/issue-16819.rs | 0 {src/test => tests}/ui/issues/issue-16922-rpass.rs | 0 {src/test => tests}/ui/issues/issue-16922.rs | 0 {src/test => tests}/ui/issues/issue-16922.stderr | 0 {src/test => tests}/ui/issues/issue-16939.rs | 0 {src/test => tests}/ui/issues/issue-16939.stderr | 0 {src/test => tests}/ui/issues/issue-1696.rs | 0 {src/test => tests}/ui/issues/issue-16966.rs | 0 {src/test => tests}/ui/issues/issue-16966.stderr | 0 {src/test => tests}/ui/issues/issue-16994.rs | 0 {src/test => tests}/ui/issues/issue-17001.rs | 0 {src/test => tests}/ui/issues/issue-17001.stderr | 0 {src/test => tests}/ui/issues/issue-17033.rs | 0 {src/test => tests}/ui/issues/issue-17033.stderr | 0 {src/test => tests}/ui/issues/issue-17068.rs | 0 {src/test => tests}/ui/issues/issue-17121.rs | 0 {src/test => tests}/ui/issues/issue-17216.rs | 0 {src/test => tests}/ui/issues/issue-17252.rs | 0 {src/test => tests}/ui/issues/issue-17252.stderr | 0 {src/test => tests}/ui/issues/issue-17302.rs | 0 {src/test => tests}/ui/issues/issue-17322.rs | 0 {src/test => tests}/ui/issues/issue-17336.rs | 0 {src/test => tests}/ui/issues/issue-17337.rs | 0 {src/test => tests}/ui/issues/issue-17337.stderr | 0 {src/test => tests}/ui/issues/issue-17351.rs | 0 {src/test => tests}/ui/issues/issue-17361.rs | 0 {src/test => tests}/ui/issues/issue-17373.rs | 0 {src/test => tests}/ui/issues/issue-17373.stderr | 0 {src/test => tests}/ui/issues/issue-17385.rs | 0 {src/test => tests}/ui/issues/issue-17385.stderr | 0 {src/test => tests}/ui/issues/issue-17405.rs | 0 {src/test => tests}/ui/issues/issue-17405.stderr | 0 {src/test => tests}/ui/issues/issue-17431-1.rs | 0 {src/test => tests}/ui/issues/issue-17431-1.stderr | 0 {src/test => tests}/ui/issues/issue-17431-2.rs | 0 {src/test => tests}/ui/issues/issue-17431-2.stderr | 0 {src/test => tests}/ui/issues/issue-17431-3.rs | 0 {src/test => tests}/ui/issues/issue-17431-3.stderr | 0 {src/test => tests}/ui/issues/issue-17431-4.rs | 0 {src/test => tests}/ui/issues/issue-17431-4.stderr | 0 {src/test => tests}/ui/issues/issue-17431-5.rs | 0 {src/test => tests}/ui/issues/issue-17431-5.stderr | 0 {src/test => tests}/ui/issues/issue-17431-6.rs | 0 {src/test => tests}/ui/issues/issue-17431-6.stderr | 0 {src/test => tests}/ui/issues/issue-17431-7.rs | 0 {src/test => tests}/ui/issues/issue-17431-7.stderr | 0 {src/test => tests}/ui/issues/issue-17441.rs | 0 {src/test => tests}/ui/issues/issue-17441.stderr | 0 {src/test => tests}/ui/issues/issue-17450.rs | 0 {src/test => tests}/ui/issues/issue-17503.rs | 0 {src/test => tests}/ui/issues/issue-17546.rs | 0 {src/test => tests}/ui/issues/issue-17546.stderr | 0 {src/test => tests}/ui/issues/issue-17551.rs | 0 {src/test => tests}/ui/issues/issue-17551.stderr | 0 {src/test => tests}/ui/issues/issue-17651.rs | 0 {src/test => tests}/ui/issues/issue-17651.stderr | 0 {src/test => tests}/ui/issues/issue-17662.rs | 0 {src/test => tests}/ui/issues/issue-17732.rs | 0 {src/test => tests}/ui/issues/issue-17734.rs | 0 {src/test => tests}/ui/issues/issue-17740.rs | 0 {src/test => tests}/ui/issues/issue-17740.stderr | 0 {src/test => tests}/ui/issues/issue-17746.rs | 0 {src/test => tests}/ui/issues/issue-17758.rs | 0 {src/test => tests}/ui/issues/issue-17758.stderr | 0 {src/test => tests}/ui/issues/issue-17771.rs | 0 {src/test => tests}/ui/issues/issue-17800.rs | 0 {src/test => tests}/ui/issues/issue-17800.stderr | 0 {src/test => tests}/ui/issues/issue-17816.rs | 0 {src/test => tests}/ui/issues/issue-17877.rs | 0 {src/test => tests}/ui/issues/issue-17897.rs | 0 {src/test => tests}/ui/issues/issue-17904-2.rs | 0 {src/test => tests}/ui/issues/issue-17904-2.stderr | 0 {src/test => tests}/ui/issues/issue-17904.rs | 0 {src/test => tests}/ui/issues/issue-17905-2.rs | 0 {src/test => tests}/ui/issues/issue-17905-2.stderr | 0 {src/test => tests}/ui/issues/issue-17905.rs | 0 {src/test => tests}/ui/issues/issue-17933.rs | 0 {src/test => tests}/ui/issues/issue-17933.stderr | 0 {src/test => tests}/ui/issues/issue-17954.rs | 0 {src/test => tests}/ui/issues/issue-17954.stderr | 0 {src/test => tests}/ui/issues/issue-17959.rs | 0 {src/test => tests}/ui/issues/issue-17959.stderr | 0 {src/test => tests}/ui/issues/issue-17994.rs | 0 {src/test => tests}/ui/issues/issue-17994.stderr | 0 {src/test => tests}/ui/issues/issue-17999.rs | 0 {src/test => tests}/ui/issues/issue-17999.stderr | 0 {src/test => tests}/ui/issues/issue-18058.rs | 0 {src/test => tests}/ui/issues/issue-18058.stderr | 0 {src/test => tests}/ui/issues/issue-18088.rs | 0 {src/test => tests}/ui/issues/issue-18107.rs | 0 {src/test => tests}/ui/issues/issue-18107.stderr | 0 {src/test => tests}/ui/issues/issue-18110.rs | 0 {src/test => tests}/ui/issues/issue-18119.rs | 0 {src/test => tests}/ui/issues/issue-18119.stderr | 0 {src/test => tests}/ui/issues/issue-18159.rs | 0 {src/test => tests}/ui/issues/issue-18159.stderr | 0 {src/test => tests}/ui/issues/issue-18173.rs | 0 {src/test => tests}/ui/issues/issue-18183.rs | 0 {src/test => tests}/ui/issues/issue-18183.stderr | 0 {src/test => tests}/ui/issues/issue-18188.rs | 0 {src/test => tests}/ui/issues/issue-1821.rs | 0 {src/test => tests}/ui/issues/issue-18232.rs | 0 {src/test => tests}/ui/issues/issue-18352.rs | 0 {src/test => tests}/ui/issues/issue-18353.rs | 0 {src/test => tests}/ui/issues/issue-18389.rs | 0 {src/test => tests}/ui/issues/issue-18389.stderr | 0 {src/test => tests}/ui/issues/issue-18423.rs | 0 {src/test => tests}/ui/issues/issue-18423.stderr | 0 {src/test => tests}/ui/issues/issue-18446-2.rs | 0 {src/test => tests}/ui/issues/issue-18446.rs | 0 {src/test => tests}/ui/issues/issue-18446.stderr | 0 {src/test => tests}/ui/issues/issue-18464.rs | 0 {src/test => tests}/ui/issues/issue-18501.rs | 0 {src/test => tests}/ui/issues/issue-18514.rs | 0 {src/test => tests}/ui/issues/issue-18532.rs | 0 {src/test => tests}/ui/issues/issue-18532.stderr | 0 {src/test => tests}/ui/issues/issue-18539.rs | 0 {src/test => tests}/ui/issues/issue-18566.rs | 0 {src/test => tests}/ui/issues/issue-18566.stderr | 0 {src/test => tests}/ui/issues/issue-18576.rs | 0 {src/test => tests}/ui/issues/issue-18611.rs | 0 {src/test => tests}/ui/issues/issue-18611.stderr | 0 {src/test => tests}/ui/issues/issue-18685.rs | 0 {src/test => tests}/ui/issues/issue-1871.rs | 0 {src/test => tests}/ui/issues/issue-1871.stderr | 0 {src/test => tests}/ui/issues/issue-18711.rs | 0 {src/test => tests}/ui/issues/issue-18738.rs | 0 {src/test => tests}/ui/issues/issue-18767.rs | 0 {src/test => tests}/ui/issues/issue-18783.rs | 0 {src/test => tests}/ui/issues/issue-18783.stderr | 0 .../ui/issues/issue-18804/auxiliary/lib.rs | 0 {src/test => tests}/ui/issues/issue-18804/main.rs | 0 {src/test => tests}/ui/issues/issue-18809.rs | 0 {src/test => tests}/ui/issues/issue-18819.rs | 0 {src/test => tests}/ui/issues/issue-18819.stderr | 0 {src/test => tests}/ui/issues/issue-18845.rs | 0 {src/test => tests}/ui/issues/issue-18859.rs | 0 {src/test => tests}/ui/issues/issue-18906.rs | 0 {src/test => tests}/ui/issues/issue-18913.rs | 0 {src/test => tests}/ui/issues/issue-18919.rs | 0 {src/test => tests}/ui/issues/issue-18919.stderr | 0 {src/test => tests}/ui/issues/issue-18952.rs | 0 {src/test => tests}/ui/issues/issue-18959.rs | 0 {src/test => tests}/ui/issues/issue-18959.stderr | 0 {src/test => tests}/ui/issues/issue-18988.rs | 0 {src/test => tests}/ui/issues/issue-1900.rs | 0 {src/test => tests}/ui/issues/issue-1900.stderr | 0 {src/test => tests}/ui/issues/issue-19001.rs | 0 {src/test => tests}/ui/issues/issue-19037.rs | 0 {src/test => tests}/ui/issues/issue-19086.rs | 0 {src/test => tests}/ui/issues/issue-19086.stderr | 0 {src/test => tests}/ui/issues/issue-19097.rs | 0 {src/test => tests}/ui/issues/issue-19098.rs | 0 {src/test => tests}/ui/issues/issue-19100.fixed | 0 {src/test => tests}/ui/issues/issue-19100.rs | 0 {src/test => tests}/ui/issues/issue-19100.stderr | 0 {src/test => tests}/ui/issues/issue-19102.rs | 0 {src/test => tests}/ui/issues/issue-19127.rs | 0 {src/test => tests}/ui/issues/issue-19129-1.rs | 0 {src/test => tests}/ui/issues/issue-19129-2.rs | 0 {src/test => tests}/ui/issues/issue-19135.rs | 0 {src/test => tests}/ui/issues/issue-1920-1.rs | 0 {src/test => tests}/ui/issues/issue-1920-1.stderr | 0 {src/test => tests}/ui/issues/issue-1920-2.rs | 0 {src/test => tests}/ui/issues/issue-1920-2.stderr | 0 {src/test => tests}/ui/issues/issue-1920-3.rs | 0 {src/test => tests}/ui/issues/issue-1920-3.stderr | 0 {src/test => tests}/ui/issues/issue-19244-1.rs | 0 {src/test => tests}/ui/issues/issue-19244-1.stderr | 0 {src/test => tests}/ui/issues/issue-19244-2.rs | 0 {src/test => tests}/ui/issues/issue-19244-2.stderr | 0 {src/test => tests}/ui/issues/issue-19293.rs | 0 {src/test => tests}/ui/issues/issue-19340-1.rs | 0 {src/test => tests}/ui/issues/issue-19340-2.rs | 0 {src/test => tests}/ui/issues/issue-19367.rs | 0 {src/test => tests}/ui/issues/issue-19380.rs | 0 {src/test => tests}/ui/issues/issue-19380.stderr | 0 {src/test => tests}/ui/issues/issue-19398.rs | 0 {src/test => tests}/ui/issues/issue-19404.rs | 0 {src/test => tests}/ui/issues/issue-19479.rs | 0 {src/test => tests}/ui/issues/issue-19482.rs | 0 {src/test => tests}/ui/issues/issue-19482.stderr | 0 {src/test => tests}/ui/issues/issue-19499.rs | 0 {src/test => tests}/ui/issues/issue-19521.rs | 0 {src/test => tests}/ui/issues/issue-19521.stderr | 0 {src/test => tests}/ui/issues/issue-19601.rs | 0 {src/test => tests}/ui/issues/issue-1962.fixed | 0 {src/test => tests}/ui/issues/issue-1962.rs | 0 {src/test => tests}/ui/issues/issue-1962.stderr | 0 {src/test => tests}/ui/issues/issue-19631.rs | 0 {src/test => tests}/ui/issues/issue-19632.rs | 0 {src/test => tests}/ui/issues/issue-19692.rs | 0 {src/test => tests}/ui/issues/issue-19692.stderr | 0 {src/test => tests}/ui/issues/issue-19707.rs | 0 {src/test => tests}/ui/issues/issue-19707.stderr | 0 {src/test => tests}/ui/issues/issue-19734.rs | 0 {src/test => tests}/ui/issues/issue-19734.stderr | 0 {src/test => tests}/ui/issues/issue-1974.rs | 0 .../ui/issues/issue-19811-escape-unicode.rs | 0 {src/test => tests}/ui/issues/issue-19850.rs | 0 {src/test => tests}/ui/issues/issue-19922.rs | 0 {src/test => tests}/ui/issues/issue-19922.stderr | 0 {src/test => tests}/ui/issues/issue-19982.rs | 0 {src/test => tests}/ui/issues/issue-19991.rs | 0 {src/test => tests}/ui/issues/issue-19991.stderr | 0 {src/test => tests}/ui/issues/issue-20009.rs | 0 .../ui/issues/issue-20055-box-trait.rs | 0 .../ui/issues/issue-20055-box-unsized-array.rs | 0 {src/test => tests}/ui/issues/issue-20162.rs | 0 {src/test => tests}/ui/issues/issue-20162.stderr | 0 {src/test => tests}/ui/issues/issue-20174.rs | 0 {src/test => tests}/ui/issues/issue-20186.rs | 0 {src/test => tests}/ui/issues/issue-20225.rs | 0 {src/test => tests}/ui/issues/issue-20225.stderr | 0 {src/test => tests}/ui/issues/issue-20261.rs | 0 {src/test => tests}/ui/issues/issue-20261.stderr | 0 {src/test => tests}/ui/issues/issue-20313-rpass.rs | 0 {src/test => tests}/ui/issues/issue-20313.rs | 0 {src/test => tests}/ui/issues/issue-20313.stderr | 0 {src/test => tests}/ui/issues/issue-20389.rs | 0 {src/test => tests}/ui/issues/issue-20396.rs | 0 {src/test => tests}/ui/issues/issue-20413.rs | 0 {src/test => tests}/ui/issues/issue-20413.stderr | 0 {src/test => tests}/ui/issues/issue-20414.rs | 0 {src/test => tests}/ui/issues/issue-20427.rs | 0 {src/test => tests}/ui/issues/issue-20433.rs | 0 {src/test => tests}/ui/issues/issue-20433.stderr | 0 {src/test => tests}/ui/issues/issue-20454.rs | 0 {src/test => tests}/ui/issues/issue-20544.rs | 0 {src/test => tests}/ui/issues/issue-20575.rs | 0 {src/test => tests}/ui/issues/issue-20605.rs | 0 {src/test => tests}/ui/issues/issue-20605.stderr | 0 {src/test => tests}/ui/issues/issue-20616.rs | 0 .../test => tests}/ui/issues/issue-2063-resource.rs | 0 {src/test => tests}/ui/issues/issue-2063.rs | 0 {src/test => tests}/ui/issues/issue-20644.rs | 0 {src/test => tests}/ui/issues/issue-20676.rs | 0 {src/test => tests}/ui/issues/issue-20714.rs | 0 {src/test => tests}/ui/issues/issue-20714.stderr | 0 {src/test => tests}/ui/issues/issue-2074.rs | 0 {src/test => tests}/ui/issues/issue-20763-1.rs | 0 {src/test => tests}/ui/issues/issue-20763-2.rs | 0 {src/test => tests}/ui/issues/issue-20772.rs | 0 {src/test => tests}/ui/issues/issue-20772.stderr | 0 {src/test => tests}/ui/issues/issue-20797.rs | 0 {src/test => tests}/ui/issues/issue-20803.rs | 0 .../ui/issues/issue-20831-debruijn.rs | 0 .../ui/issues/issue-20831-debruijn.stderr | 0 {src/test => tests}/ui/issues/issue-20847.rs | 0 {src/test => tests}/ui/issues/issue-20939.rs | 0 {src/test => tests}/ui/issues/issue-20939.stderr | 0 {src/test => tests}/ui/issues/issue-20953.rs | 0 {src/test => tests}/ui/issues/issue-20971.rs | 0 {src/test => tests}/ui/issues/issue-21033.rs | 0 {src/test => tests}/ui/issues/issue-21140.rs | 0 {src/test => tests}/ui/issues/issue-21160.rs | 0 {src/test => tests}/ui/issues/issue-21160.stderr | 0 {src/test => tests}/ui/issues/issue-21174-2.rs | 0 {src/test => tests}/ui/issues/issue-21174.rs | 0 {src/test => tests}/ui/issues/issue-21174.stderr | 0 {src/test => tests}/ui/issues/issue-21177.rs | 0 {src/test => tests}/ui/issues/issue-21177.stderr | 0 {src/test => tests}/ui/issues/issue-21202.rs | 0 {src/test => tests}/ui/issues/issue-21202.stderr | 0 {src/test => tests}/ui/issues/issue-21245.rs | 0 {src/test => tests}/ui/issues/issue-21291.rs | 0 {src/test => tests}/ui/issues/issue-21306.rs | 0 {src/test => tests}/ui/issues/issue-21332.rs | 0 {src/test => tests}/ui/issues/issue-21332.stderr | 0 {src/test => tests}/ui/issues/issue-21361.rs | 0 {src/test => tests}/ui/issues/issue-21384.rs | 0 {src/test => tests}/ui/issues/issue-21400.rs | 0 {src/test => tests}/ui/issues/issue-21402.rs | 0 {src/test => tests}/ui/issues/issue-21449.rs | 0 {src/test => tests}/ui/issues/issue-21449.stderr | 0 {src/test => tests}/ui/issues/issue-2150.rs | 0 {src/test => tests}/ui/issues/issue-2150.stderr | 0 {src/test => tests}/ui/issues/issue-2151.rs | 0 {src/test => tests}/ui/issues/issue-2151.stderr | 0 {src/test => tests}/ui/issues/issue-21546.rs | 0 {src/test => tests}/ui/issues/issue-21546.stderr | 0 {src/test => tests}/ui/issues/issue-21554.rs | 0 {src/test => tests}/ui/issues/issue-21554.stderr | 0 {src/test => tests}/ui/issues/issue-21596.rs | 0 {src/test => tests}/ui/issues/issue-21596.stderr | 0 {src/test => tests}/ui/issues/issue-21600.rs | 0 {src/test => tests}/ui/issues/issue-21600.stderr | 0 {src/test => tests}/ui/issues/issue-21622.rs | 0 {src/test => tests}/ui/issues/issue-21634.rs | 0 {src/test => tests}/ui/issues/issue-21655.rs | 0 {src/test => tests}/ui/issues/issue-2170-exe.rs | 0 {src/test => tests}/ui/issues/issue-21701.rs | 0 {src/test => tests}/ui/issues/issue-21701.stderr | 0 {src/test => tests}/ui/issues/issue-21763.rs | 0 {src/test => tests}/ui/issues/issue-21763.stderr | 0 {src/test => tests}/ui/issues/issue-21837.rs | 0 {src/test => tests}/ui/issues/issue-21837.stderr | 0 {src/test => tests}/ui/issues/issue-21891.rs | 0 {src/test => tests}/ui/issues/issue-2190-1.rs | 0 {src/test => tests}/ui/issues/issue-21909.rs | 0 {src/test => tests}/ui/issues/issue-21922.rs | 0 {src/test => tests}/ui/issues/issue-21946.rs | 0 {src/test => tests}/ui/issues/issue-21946.stderr | 0 {src/test => tests}/ui/issues/issue-21950.rs | 0 {src/test => tests}/ui/issues/issue-21950.stderr | 0 {src/test => tests}/ui/issues/issue-21974.rs | 0 {src/test => tests}/ui/issues/issue-21974.stderr | 0 {src/test => tests}/ui/issues/issue-22008.rs | 0 {src/test => tests}/ui/issues/issue-22034.rs | 0 {src/test => tests}/ui/issues/issue-22034.stderr | 0 {src/test => tests}/ui/issues/issue-22036.rs | 0 {src/test => tests}/ui/issues/issue-2214.rs | 0 {src/test => tests}/ui/issues/issue-22258.rs | 0 {src/test => tests}/ui/issues/issue-22289.rs | 0 {src/test => tests}/ui/issues/issue-22289.stderr | 0 {src/test => tests}/ui/issues/issue-22312.rs | 0 {src/test => tests}/ui/issues/issue-22312.stderr | 0 {src/test => tests}/ui/issues/issue-22346.rs | 0 {src/test => tests}/ui/issues/issue-22356.rs | 0 {src/test => tests}/ui/issues/issue-22370.rs | 0 {src/test => tests}/ui/issues/issue-22370.stderr | 0 {src/test => tests}/ui/issues/issue-22384.rs | 0 {src/test => tests}/ui/issues/issue-22384.stderr | 0 {src/test => tests}/ui/issues/issue-22403.rs | 0 {src/test => tests}/ui/issues/issue-22426.rs | 0 {src/test => tests}/ui/issues/issue-22434.rs | 0 {src/test => tests}/ui/issues/issue-22434.stderr | 0 {src/test => tests}/ui/issues/issue-22468.rs | 0 {src/test => tests}/ui/issues/issue-22468.stderr | 0 {src/test => tests}/ui/issues/issue-22471.rs | 0 .../ui/issues/issue-22536-copy-mustnt-zero.rs | 0 {src/test => tests}/ui/issues/issue-22577.rs | 0 {src/test => tests}/ui/issues/issue-22599.rs | 0 {src/test => tests}/ui/issues/issue-22599.stderr | 0 {src/test => tests}/ui/issues/issue-22603.rs | 0 {src/test => tests}/ui/issues/issue-22629.rs | 0 .../ui/issues/issue-22638.polonius.stderr | 0 {src/test => tests}/ui/issues/issue-22638.rs | 0 {src/test => tests}/ui/issues/issue-22638.stderr | 0 {src/test => tests}/ui/issues/issue-22644.rs | 0 {src/test => tests}/ui/issues/issue-22644.stderr | 0 {src/test => tests}/ui/issues/issue-22673.rs | 0 {src/test => tests}/ui/issues/issue-22684.rs | 0 {src/test => tests}/ui/issues/issue-22684.stderr | 0 {src/test => tests}/ui/issues/issue-22706.rs | 0 {src/test => tests}/ui/issues/issue-22706.stderr | 0 {src/test => tests}/ui/issues/issue-22777.rs | 0 {src/test => tests}/ui/issues/issue-22781.rs | 0 {src/test => tests}/ui/issues/issue-22789.rs | 0 {src/test => tests}/ui/issues/issue-2281-part1.rs | 0 .../ui/issues/issue-2281-part1.stderr | 0 {src/test => tests}/ui/issues/issue-22814.rs | 0 {src/test => tests}/ui/issues/issue-2284.rs | 0 {src/test => tests}/ui/issues/issue-22864-1.rs | 0 {src/test => tests}/ui/issues/issue-22864-2.rs | 0 {src/test => tests}/ui/issues/issue-22872.rs | 0 {src/test => tests}/ui/issues/issue-22872.stderr | 0 {src/test => tests}/ui/issues/issue-22874.rs | 0 {src/test => tests}/ui/issues/issue-22874.stderr | 0 {src/test => tests}/ui/issues/issue-2288.rs | 0 {src/test => tests}/ui/issues/issue-22886.rs | 0 {src/test => tests}/ui/issues/issue-22886.stderr | 0 {src/test => tests}/ui/issues/issue-22894.rs | 0 {src/test => tests}/ui/issues/issue-22933-1.rs | 0 {src/test => tests}/ui/issues/issue-22933-2.rs | 0 {src/test => tests}/ui/issues/issue-22933-2.stderr | 0 {src/test => tests}/ui/issues/issue-22992-2.rs | 0 {src/test => tests}/ui/issues/issue-22992.rs | 0 {src/test => tests}/ui/issues/issue-23024.rs | 0 {src/test => tests}/ui/issues/issue-23024.stderr | 0 {src/test => tests}/ui/issues/issue-23036.rs | 0 {src/test => tests}/ui/issues/issue-23041.rs | 0 {src/test => tests}/ui/issues/issue-23041.stderr | 0 {src/test => tests}/ui/issues/issue-23046.rs | 0 {src/test => tests}/ui/issues/issue-23046.stderr | 0 {src/test => tests}/ui/issues/issue-23073.rs | 0 {src/test => tests}/ui/issues/issue-23073.stderr | 0 {src/test => tests}/ui/issues/issue-2311-2.rs | 0 {src/test => tests}/ui/issues/issue-2311.rs | 0 {src/test => tests}/ui/issues/issue-2312.rs | 0 {src/test => tests}/ui/issues/issue-23122-1.rs | 0 {src/test => tests}/ui/issues/issue-23122-1.stderr | 0 {src/test => tests}/ui/issues/issue-23122-2.rs | 0 {src/test => tests}/ui/issues/issue-23122-2.stderr | 0 {src/test => tests}/ui/issues/issue-2316-c.rs | 0 {src/test => tests}/ui/issues/issue-23173.rs | 0 {src/test => tests}/ui/issues/issue-23173.stderr | 0 {src/test => tests}/ui/issues/issue-23189.rs | 0 {src/test => tests}/ui/issues/issue-23189.stderr | 0 {src/test => tests}/ui/issues/issue-23217.rs | 0 {src/test => tests}/ui/issues/issue-23217.stderr | 0 {src/test => tests}/ui/issues/issue-23253.rs | 0 {src/test => tests}/ui/issues/issue-23253.stderr | 0 {src/test => tests}/ui/issues/issue-23261.rs | 0 {src/test => tests}/ui/issues/issue-23281.rs | 0 {src/test => tests}/ui/issues/issue-23281.stderr | 0 {src/test => tests}/ui/issues/issue-23302-1.rs | 0 {src/test => tests}/ui/issues/issue-23302-1.stderr | 0 {src/test => tests}/ui/issues/issue-23302-2.rs | 0 {src/test => tests}/ui/issues/issue-23302-2.stderr | 0 {src/test => tests}/ui/issues/issue-23302-3.rs | 0 {src/test => tests}/ui/issues/issue-23302-3.stderr | 0 {src/test => tests}/ui/issues/issue-23304-1.rs | 0 {src/test => tests}/ui/issues/issue-23304-2.rs | 0 {src/test => tests}/ui/issues/issue-23311.rs | 0 {src/test => tests}/ui/issues/issue-23336.rs | 0 {src/test => tests}/ui/issues/issue-23354-2.rs | 0 {src/test => tests}/ui/issues/issue-23354.rs | 0 {src/test => tests}/ui/issues/issue-23406.rs | 0 {src/test => tests}/ui/issues/issue-23433.rs | 0 {src/test => tests}/ui/issues/issue-23442.rs | 0 {src/test => tests}/ui/issues/issue-23477.rs | 0 {src/test => tests}/ui/issues/issue-23485.rs | 0 {src/test => tests}/ui/issues/issue-23491.rs | 0 {src/test => tests}/ui/issues/issue-23543.rs | 0 {src/test => tests}/ui/issues/issue-23543.stderr | 0 {src/test => tests}/ui/issues/issue-23544.rs | 0 {src/test => tests}/ui/issues/issue-23544.stderr | 0 {src/test => tests}/ui/issues/issue-23550.rs | 0 {src/test => tests}/ui/issues/issue-23589.rs | 0 {src/test => tests}/ui/issues/issue-23589.stderr | 0 .../ui/issues/issue-23611-enum-swap-in-drop.rs | 0 {src/test => tests}/ui/issues/issue-23649-1.rs | 0 {src/test => tests}/ui/issues/issue-23649-2.rs | 0 {src/test => tests}/ui/issues/issue-23649-3.rs | 0 {src/test => tests}/ui/issues/issue-23699.rs | 0 {src/test => tests}/ui/issues/issue-23781.rs | 0 {src/test => tests}/ui/issues/issue-2380-b.rs | 0 {src/test => tests}/ui/issues/issue-23808.rs | 0 {src/test => tests}/ui/issues/issue-2383.rs | 0 {src/test => tests}/ui/issues/issue-23891.rs | 0 {src/test => tests}/ui/issues/issue-23898.rs | 0 {src/test => tests}/ui/issues/issue-23958.rs | 0 {src/test => tests}/ui/issues/issue-23966.rs | 0 {src/test => tests}/ui/issues/issue-23966.stderr | 0 {src/test => tests}/ui/issues/issue-23992.rs | 0 {src/test => tests}/ui/issues/issue-24013.rs | 0 {src/test => tests}/ui/issues/issue-24013.stderr | 0 {src/test => tests}/ui/issues/issue-24036.rs | 0 {src/test => tests}/ui/issues/issue-24036.stderr | 0 {src/test => tests}/ui/issues/issue-24086.rs | 0 {src/test => tests}/ui/issues/issue-2414-c.rs | 0 {src/test => tests}/ui/issues/issue-24161.rs | 0 {src/test => tests}/ui/issues/issue-24227.rs | 0 {src/test => tests}/ui/issues/issue-2428.rs | 0 {src/test => tests}/ui/issues/issue-24308.rs | 0 {src/test => tests}/ui/issues/issue-24322.rs | 0 {src/test => tests}/ui/issues/issue-24322.stderr | 0 {src/test => tests}/ui/issues/issue-24352.rs | 0 {src/test => tests}/ui/issues/issue-24352.stderr | 0 {src/test => tests}/ui/issues/issue-24353.rs | 0 {src/test => tests}/ui/issues/issue-24357.rs | 0 {src/test => tests}/ui/issues/issue-24357.stderr | 0 {src/test => tests}/ui/issues/issue-24363.rs | 0 {src/test => tests}/ui/issues/issue-24363.stderr | 0 {src/test => tests}/ui/issues/issue-24365.rs | 0 {src/test => tests}/ui/issues/issue-24365.stderr | 0 {src/test => tests}/ui/issues/issue-24389.rs | 0 {src/test => tests}/ui/issues/issue-24424.rs | 0 {src/test => tests}/ui/issues/issue-24424.stderr | 0 {src/test => tests}/ui/issues/issue-24434.rs | 0 {src/test => tests}/ui/issues/issue-24446.rs | 0 {src/test => tests}/ui/issues/issue-24446.stderr | 0 {src/test => tests}/ui/issues/issue-2445-b.rs | 0 {src/test => tests}/ui/issues/issue-2445.rs | 0 {src/test => tests}/ui/issues/issue-24533.rs | 0 {src/test => tests}/ui/issues/issue-24589.rs | 0 {src/test => tests}/ui/issues/issue-2463.rs | 0 {src/test => tests}/ui/issues/issue-24682.rs | 0 {src/test => tests}/ui/issues/issue-24682.stderr | 0 .../auxiliary/issue-24687-lib.rs | 0 .../auxiliary/issue-24687-mbcs-in-comments.rs | 0 .../ui/issues/issue-24687-embed-debuginfo/main.rs | 0 .../ui/issues/issue-2470-bounds-check-overflow.rs | 0 {src/test => tests}/ui/issues/issue-2472.rs | 0 {src/test => tests}/ui/issues/issue-24779.rs | 0 {src/test => tests}/ui/issues/issue-24819.rs | 0 {src/test => tests}/ui/issues/issue-24819.stderr | 0 {src/test => tests}/ui/issues/issue-2487-a.rs | 0 .../ui/issues/issue-24945-repeat-dash-opts.rs | 0 {src/test => tests}/ui/issues/issue-24947.rs | 0 {src/test => tests}/ui/issues/issue-24954.rs | 0 {src/test => tests}/ui/issues/issue-2502.rs | 0 {src/test => tests}/ui/issues/issue-25076.rs | 0 {src/test => tests}/ui/issues/issue-25076.stderr | 0 {src/test => tests}/ui/issues/issue-25089.rs | 0 {src/test => tests}/ui/issues/issue-25145.rs | 0 {src/test => tests}/ui/issues/issue-25180.rs | 0 {src/test => tests}/ui/issues/issue-25185.rs | 0 {src/test => tests}/ui/issues/issue-2526-a.rs | 0 {src/test => tests}/ui/issues/issue-25279.rs | 0 {src/test => tests}/ui/issues/issue-25343.rs | 0 {src/test => tests}/ui/issues/issue-25368.rs | 0 {src/test => tests}/ui/issues/issue-25368.stderr | 0 {src/test => tests}/ui/issues/issue-25386.rs | 0 {src/test => tests}/ui/issues/issue-25386.stderr | 0 {src/test => tests}/ui/issues/issue-25394.rs | 0 {src/test => tests}/ui/issues/issue-25439.rs | 0 {src/test => tests}/ui/issues/issue-25439.stderr | 0 {src/test => tests}/ui/issues/issue-25467.rs | 0 {src/test => tests}/ui/issues/issue-25497.rs | 0 {src/test => tests}/ui/issues/issue-2550.rs | 0 {src/test => tests}/ui/issues/issue-25515.rs | 0 .../ui/issues/issue-25549-multiple-drop.rs | 0 {src/test => tests}/ui/issues/issue-25579.rs | 0 {src/test => tests}/ui/issues/issue-25679.rs | 0 {src/test => tests}/ui/issues/issue-25693.rs | 0 .../ui/issues/issue-25746-bool-transmute.rs | 0 {src/test => tests}/ui/issues/issue-25757.rs | 0 {src/test => tests}/ui/issues/issue-25810.rs | 0 {src/test => tests}/ui/issues/issue-2590.rs | 0 {src/test => tests}/ui/issues/issue-2590.stderr | 0 {src/test => tests}/ui/issues/issue-25901.rs | 0 {src/test => tests}/ui/issues/issue-25901.stderr | 0 {src/test => tests}/ui/issues/issue-26056.rs | 0 {src/test => tests}/ui/issues/issue-26056.stderr | 0 {src/test => tests}/ui/issues/issue-26093.rs | 0 {src/test => tests}/ui/issues/issue-26093.stderr | 0 {src/test => tests}/ui/issues/issue-26094.rs | 0 {src/test => tests}/ui/issues/issue-26094.stderr | 0 {src/test => tests}/ui/issues/issue-26095.rs | 0 {src/test => tests}/ui/issues/issue-2611-3.rs | 0 {src/test => tests}/ui/issues/issue-26127.rs | 0 {src/test => tests}/ui/issues/issue-26186.rs | 0 {src/test => tests}/ui/issues/issue-26205.rs | 0 {src/test => tests}/ui/issues/issue-26217.rs | 0 {src/test => tests}/ui/issues/issue-26217.stderr | 0 {src/test => tests}/ui/issues/issue-26237.rs | 0 {src/test => tests}/ui/issues/issue-26237.stderr | 0 {src/test => tests}/ui/issues/issue-26262.rs | 0 {src/test => tests}/ui/issues/issue-26262.stderr | 0 {src/test => tests}/ui/issues/issue-2631-b.rs | 0 {src/test => tests}/ui/issues/issue-2642.rs | 0 {src/test => tests}/ui/issues/issue-26468.rs | 0 {src/test => tests}/ui/issues/issue-26472.rs | 0 {src/test => tests}/ui/issues/issue-26472.stderr | 0 {src/test => tests}/ui/issues/issue-26484.rs | 0 {src/test => tests}/ui/issues/issue-26614.rs | 0 {src/test => tests}/ui/issues/issue-26619.rs | 0 {src/test => tests}/ui/issues/issue-26619.stderr | 0 {src/test => tests}/ui/issues/issue-26641.rs | 0 {src/test => tests}/ui/issues/issue-26646.rs | 0 {src/test => tests}/ui/issues/issue-26655.rs | 0 {src/test => tests}/ui/issues/issue-26709.rs | 0 {src/test => tests}/ui/issues/issue-26802.rs | 0 {src/test => tests}/ui/issues/issue-26805.rs | 0 {src/test => tests}/ui/issues/issue-26812.rs | 0 {src/test => tests}/ui/issues/issue-26812.stderr | 0 {src/test => tests}/ui/issues/issue-26905-rpass.rs | 0 {src/test => tests}/ui/issues/issue-26905.rs | 0 {src/test => tests}/ui/issues/issue-26905.stderr | 0 {src/test => tests}/ui/issues/issue-26948.rs | 0 {src/test => tests}/ui/issues/issue-26948.stderr | 0 {src/test => tests}/ui/issues/issue-26997.rs | 0 {src/test => tests}/ui/issues/issue-27008.rs | 0 {src/test => tests}/ui/issues/issue-27008.stderr | 0 {src/test => tests}/ui/issues/issue-27033.rs | 0 {src/test => tests}/ui/issues/issue-27033.stderr | 0 {src/test => tests}/ui/issues/issue-27042.rs | 0 {src/test => tests}/ui/issues/issue-27042.stderr | 0 .../ui/issues/issue-27054-primitive-binary-ops.rs | 0 {src/test => tests}/ui/issues/issue-27078.rs | 0 {src/test => tests}/ui/issues/issue-27078.stderr | 0 {src/test => tests}/ui/issues/issue-2708.rs | 0 {src/test => tests}/ui/issues/issue-27105.rs | 0 {src/test => tests}/ui/issues/issue-2723-b.rs | 0 {src/test => tests}/ui/issues/issue-27240.rs | 0 {src/test => tests}/ui/issues/issue-27268.rs | 0 {src/test => tests}/ui/issues/issue-27281.rs | 0 {src/test => tests}/ui/issues/issue-27340.rs | 0 {src/test => tests}/ui/issues/issue-27340.stderr | 0 {src/test => tests}/ui/issues/issue-2735-2.rs | 0 {src/test => tests}/ui/issues/issue-2735-3.rs | 0 {src/test => tests}/ui/issues/issue-2735.rs | 0 .../ui/issues/issue-27401-dropflag-reinit.rs | 0 {src/test => tests}/ui/issues/issue-27433.fixed | 0 {src/test => tests}/ui/issues/issue-27433.rs | 0 {src/test => tests}/ui/issues/issue-27433.stderr | 0 {src/test => tests}/ui/issues/issue-2748-a.rs | 0 {src/test => tests}/ui/issues/issue-27583.rs | 0 {src/test => tests}/ui/issues/issue-27592.rs | 0 {src/test => tests}/ui/issues/issue-27592.stderr | 0 {src/test => tests}/ui/issues/issue-2761.rs | 0 {src/test => tests}/ui/issues/issue-27639.rs | 0 {src/test => tests}/ui/issues/issue-27697.rs | 0 {src/test => tests}/ui/issues/issue-27815.rs | 0 {src/test => tests}/ui/issues/issue-27815.stderr | 0 {src/test => tests}/ui/issues/issue-27842.rs | 0 {src/test => tests}/ui/issues/issue-27842.stderr | 0 {src/test => tests}/ui/issues/issue-27859.rs | 0 {src/test => tests}/ui/issues/issue-27889.rs | 0 {src/test => tests}/ui/issues/issue-27901.rs | 0 {src/test => tests}/ui/issues/issue-27942.rs | 0 {src/test => tests}/ui/issues/issue-27942.stderr | 0 {src/test => tests}/ui/issues/issue-27949.rs | 0 {src/test => tests}/ui/issues/issue-27997.rs | 0 {src/test => tests}/ui/issues/issue-2804-2.rs | 0 {src/test => tests}/ui/issues/issue-28105.rs | 0 {src/test => tests}/ui/issues/issue-28105.stderr | 0 {src/test => tests}/ui/issues/issue-28109.rs | 0 {src/test => tests}/ui/issues/issue-28109.stderr | 0 {src/test => tests}/ui/issues/issue-28181.rs | 0 {src/test => tests}/ui/issues/issue-2823.rs | 0 {src/test => tests}/ui/issues/issue-2823.stderr | 0 {src/test => tests}/ui/issues/issue-28279.rs | 0 {src/test => tests}/ui/issues/issue-28344.rs | 0 {src/test => tests}/ui/issues/issue-28344.stderr | 0 {src/test => tests}/ui/issues/issue-28433.rs | 0 {src/test => tests}/ui/issues/issue-28433.stderr | 0 {src/test => tests}/ui/issues/issue-28472.rs | 0 {src/test => tests}/ui/issues/issue-28472.stderr | 0 {src/test => tests}/ui/issues/issue-2848.rs | 0 {src/test => tests}/ui/issues/issue-2848.stderr | 0 {src/test => tests}/ui/issues/issue-2849.rs | 0 {src/test => tests}/ui/issues/issue-2849.stderr | 0 .../ui/issues/issue-28498-must-work-ex1.rs | 0 .../ui/issues/issue-28498-must-work-ex2.rs | 0 .../ui/issues/issue-28498-ugeh-ex1.rs | 0 {src/test => tests}/ui/issues/issue-28550.rs | 0 {src/test => tests}/ui/issues/issue-28561.rs | 0 {src/test => tests}/ui/issues/issue-28568.rs | 0 {src/test => tests}/ui/issues/issue-28568.stderr | 0 {src/test => tests}/ui/issues/issue-28586.rs | 0 {src/test => tests}/ui/issues/issue-28586.stderr | 0 {src/test => tests}/ui/issues/issue-28600.rs | 0 {src/test => tests}/ui/issues/issue-28625.rs | 0 {src/test => tests}/ui/issues/issue-28625.stderr | 0 .../test => tests}/ui/issues/issue-28776.mir.stderr | 0 {src/test => tests}/ui/issues/issue-28776.rs | 0 .../ui/issues/issue-28776.thir.stderr | 0 {src/test => tests}/ui/issues/issue-28777.rs | 0 {src/test => tests}/ui/issues/issue-28822.rs | 0 {src/test => tests}/ui/issues/issue-28828.rs | 0 {src/test => tests}/ui/issues/issue-28839.rs | 0 {src/test => tests}/ui/issues/issue-28936.rs | 0 {src/test => tests}/ui/issues/issue-2895.rs | 0 {src/test => tests}/ui/issues/issue-28971.rs | 0 {src/test => tests}/ui/issues/issue-28971.stderr | 0 {src/test => tests}/ui/issues/issue-28983.rs | 0 {src/test => tests}/ui/issues/issue-28992-empty.rs | 0 .../ui/issues/issue-28992-empty.stderr | 0 {src/test => tests}/ui/issues/issue-28999.rs | 0 {src/test => tests}/ui/issues/issue-29030.rs | 0 {src/test => tests}/ui/issues/issue-29037.rs | 0 {src/test => tests}/ui/issues/issue-2904.rs | 0 {src/test => tests}/ui/issues/issue-29048.rs | 0 {src/test => tests}/ui/issues/issue-29053.rs | 0 {src/test => tests}/ui/issues/issue-29071-2.rs | 0 {src/test => tests}/ui/issues/issue-29071.rs | 0 {src/test => tests}/ui/issues/issue-29092.rs | 0 {src/test => tests}/ui/issues/issue-29147-rpass.rs | 0 {src/test => tests}/ui/issues/issue-29147.rs | 0 {src/test => tests}/ui/issues/issue-29147.stderr | 0 {src/test => tests}/ui/issues/issue-29181.rs | 0 {src/test => tests}/ui/issues/issue-29181.stderr | 0 {src/test => tests}/ui/issues/issue-29265.rs | 0 {src/test => tests}/ui/issues/issue-29276.rs | 0 {src/test => tests}/ui/issues/issue-2935.rs | 0 {src/test => tests}/ui/issues/issue-29466.rs | 0 {src/test => tests}/ui/issues/issue-29485.rs | 0 {src/test => tests}/ui/issues/issue-2951.rs | 0 {src/test => tests}/ui/issues/issue-2951.stderr | 0 {src/test => tests}/ui/issues/issue-29516.rs | 0 {src/test => tests}/ui/issues/issue-29522.rs | 0 {src/test => tests}/ui/issues/issue-29540.rs | 0 {src/test => tests}/ui/issues/issue-29663.rs | 0 {src/test => tests}/ui/issues/issue-29668.rs | 0 {src/test => tests}/ui/issues/issue-29710.rs | 0 {src/test => tests}/ui/issues/issue-29723.rs | 0 {src/test => tests}/ui/issues/issue-29723.stderr | 0 {src/test => tests}/ui/issues/issue-29740.rs | 0 {src/test => tests}/ui/issues/issue-29743.rs | 0 {src/test => tests}/ui/issues/issue-29746.rs | 0 {src/test => tests}/ui/issues/issue-29798.rs | 0 {src/test => tests}/ui/issues/issue-29821.rs | 0 {src/test => tests}/ui/issues/issue-29857.rs | 0 {src/test => tests}/ui/issues/issue-29861.rs | 0 {src/test => tests}/ui/issues/issue-29861.stderr | 0 {src/test => tests}/ui/issues/issue-2989.rs | 0 {src/test => tests}/ui/issues/issue-29948.rs | 0 {src/test => tests}/ui/issues/issue-2995.rs | 0 {src/test => tests}/ui/issues/issue-2995.stderr | 0 {src/test => tests}/ui/issues/issue-30007.rs | 0 {src/test => tests}/ui/issues/issue-30007.stderr | 0 {src/test => tests}/ui/issues/issue-30018-panic.rs | 0 {src/test => tests}/ui/issues/issue-3008-1.rs | 0 {src/test => tests}/ui/issues/issue-3008-1.stderr | 0 {src/test => tests}/ui/issues/issue-3008-2.rs | 0 {src/test => tests}/ui/issues/issue-3008-2.stderr | 0 {src/test => tests}/ui/issues/issue-3008-3.rs | 0 {src/test => tests}/ui/issues/issue-3008-3.stderr | 0 {src/test => tests}/ui/issues/issue-30081.rs | 0 {src/test => tests}/ui/issues/issue-3012-2.rs | 0 {src/test => tests}/ui/issues/issue-30123.rs | 0 {src/test => tests}/ui/issues/issue-30123.stderr | 0 {src/test => tests}/ui/issues/issue-3021-b.rs | 0 {src/test => tests}/ui/issues/issue-3021-b.stderr | 0 {src/test => tests}/ui/issues/issue-3021-d.rs | 0 {src/test => tests}/ui/issues/issue-3021-d.stderr | 0 {src/test => tests}/ui/issues/issue-30236.rs | 0 {src/test => tests}/ui/issues/issue-30236.stderr | 0 {src/test => tests}/ui/issues/issue-30255.rs | 0 {src/test => tests}/ui/issues/issue-30255.stderr | 0 {src/test => tests}/ui/issues/issue-3026.rs | 0 {src/test => tests}/ui/issues/issue-3029.rs | 0 {src/test => tests}/ui/issues/issue-3037.rs | 0 {src/test => tests}/ui/issues/issue-30371.rs | 0 {src/test => tests}/ui/issues/issue-3038.rs | 0 {src/test => tests}/ui/issues/issue-3038.stderr | 0 {src/test => tests}/ui/issues/issue-30380.rs | 0 {src/test => tests}/ui/issues/issue-30438-a.rs | 0 {src/test => tests}/ui/issues/issue-30438-a.stderr | 0 {src/test => tests}/ui/issues/issue-30438-b.rs | 0 {src/test => tests}/ui/issues/issue-30438-b.stderr | 0 {src/test => tests}/ui/issues/issue-30438-c.rs | 0 {src/test => tests}/ui/issues/issue-30438-c.stderr | 0 {src/test => tests}/ui/issues/issue-30490.rs | 0 {src/test => tests}/ui/issues/issue-3052.rs | 0 {src/test => tests}/ui/issues/issue-30530.rs | 0 {src/test => tests}/ui/issues/issue-30589.rs | 0 {src/test => tests}/ui/issues/issue-30589.stderr | 0 {src/test => tests}/ui/issues/issue-30615.rs | 0 {src/test => tests}/ui/issues/issue-30756.rs | 0 {src/test => tests}/ui/issues/issue-30891.rs | 0 {src/test => tests}/ui/issues/issue-3091.rs | 0 {src/test => tests}/ui/issues/issue-3099-a.rs | 0 {src/test => tests}/ui/issues/issue-3099-a.stderr | 0 {src/test => tests}/ui/issues/issue-3099-b.rs | 0 {src/test => tests}/ui/issues/issue-3099-b.stderr | 0 {src/test => tests}/ui/issues/issue-3099.rs | 0 {src/test => tests}/ui/issues/issue-3099.stderr | 0 {src/test => tests}/ui/issues/issue-31011.rs | 0 {src/test => tests}/ui/issues/issue-31011.stderr | 0 {src/test => tests}/ui/issues/issue-3109.rs | 0 {src/test => tests}/ui/issues/issue-3121.rs | 0 {src/test => tests}/ui/issues/issue-31260.rs | 0 .../ui/issues/issue-31267-additional.rs | 0 {src/test => tests}/ui/issues/issue-31267.rs | 0 {src/test => tests}/ui/issues/issue-31299.rs | 0 {src/test => tests}/ui/issues/issue-3136-b.rs | 0 {src/test => tests}/ui/issues/issue-3149.rs | 0 {src/test => tests}/ui/issues/issue-31511.rs | 0 {src/test => tests}/ui/issues/issue-31511.stderr | 0 {src/test => tests}/ui/issues/issue-3154.rs | 0 {src/test => tests}/ui/issues/issue-3154.stderr | 0 {src/test => tests}/ui/issues/issue-31702.rs | 0 {src/test => tests}/ui/issues/issue-31769.rs | 0 {src/test => tests}/ui/issues/issue-31769.stderr | 0 {src/test => tests}/ui/issues/issue-31776.rs | 0 {src/test => tests}/ui/issues/issue-31910.rs | 0 {src/test => tests}/ui/issues/issue-31910.stderr | 0 {src/test => tests}/ui/issues/issue-32004.rs | 0 {src/test => tests}/ui/issues/issue-32004.stderr | 0 {src/test => tests}/ui/issues/issue-32008.rs | 0 {src/test => tests}/ui/issues/issue-32086.rs | 0 {src/test => tests}/ui/issues/issue-32086.stderr | 0 {src/test => tests}/ui/issues/issue-32122-1.fixed | 0 {src/test => tests}/ui/issues/issue-32122-1.rs | 0 {src/test => tests}/ui/issues/issue-32122-1.stderr | 0 {src/test => tests}/ui/issues/issue-32122-2.fixed | 0 {src/test => tests}/ui/issues/issue-32122-2.rs | 0 {src/test => tests}/ui/issues/issue-32122-2.stderr | 0 {src/test => tests}/ui/issues/issue-3214.rs | 0 {src/test => tests}/ui/issues/issue-3214.stderr | 0 {src/test => tests}/ui/issues/issue-3220.rs | 0 {src/test => tests}/ui/issues/issue-32292.rs | 0 {src/test => tests}/ui/issues/issue-32323.rs | 0 {src/test => tests}/ui/issues/issue-32323.stderr | 0 {src/test => tests}/ui/issues/issue-32324.rs | 0 {src/test => tests}/ui/issues/issue-32326.rs | 0 {src/test => tests}/ui/issues/issue-32326.stderr | 0 {src/test => tests}/ui/issues/issue-32377.rs | 0 {src/test => tests}/ui/issues/issue-32377.stderr | 0 {src/test => tests}/ui/issues/issue-32389.rs | 0 {src/test => tests}/ui/issues/issue-32518.rs | 0 {src/test => tests}/ui/issues/issue-32655.rs | 0 {src/test => tests}/ui/issues/issue-32655.stderr | 0 {src/test => tests}/ui/issues/issue-32709.rs | 0 {src/test => tests}/ui/issues/issue-32709.stderr | 0 {src/test => tests}/ui/issues/issue-32782.rs | 0 {src/test => tests}/ui/issues/issue-32782.stderr | 0 {src/test => tests}/ui/issues/issue-32797.rs | 0 {src/test => tests}/ui/issues/issue-32805.rs | 0 {src/test => tests}/ui/issues/issue-3290.rs | 0 {src/test => tests}/ui/issues/issue-32950.rs | 0 {src/test => tests}/ui/issues/issue-32950.stderr | 0 {src/test => tests}/ui/issues/issue-32995-2.rs | 0 {src/test => tests}/ui/issues/issue-32995-2.stderr | 0 {src/test => tests}/ui/issues/issue-32995.rs | 0 {src/test => tests}/ui/issues/issue-32995.stderr | 0 {src/test => tests}/ui/issues/issue-33096.rs | 0 {src/test => tests}/ui/issues/issue-33187.rs | 0 {src/test => tests}/ui/issues/issue-33202.rs | 0 {src/test => tests}/ui/issues/issue-33241.rs | 0 {src/test => tests}/ui/issues/issue-33287.rs | 0 {src/test => tests}/ui/issues/issue-33293.rs | 0 {src/test => tests}/ui/issues/issue-33293.stderr | 0 {src/test => tests}/ui/issues/issue-33387.rs | 0 {src/test => tests}/ui/issues/issue-3344.rs | 0 {src/test => tests}/ui/issues/issue-3344.stderr | 0 {src/test => tests}/ui/issues/issue-33461.rs | 0 {src/test => tests}/ui/issues/issue-33504.rs | 0 {src/test => tests}/ui/issues/issue-33504.stderr | 0 {src/test => tests}/ui/issues/issue-33525.rs | 0 {src/test => tests}/ui/issues/issue-33525.stderr | 0 {src/test => tests}/ui/issues/issue-33571.rs | 0 {src/test => tests}/ui/issues/issue-33571.stderr | 0 {src/test => tests}/ui/issues/issue-33687.rs | 0 {src/test => tests}/ui/issues/issue-33770.rs | 0 {src/test => tests}/ui/issues/issue-3389.rs | 0 {src/test => tests}/ui/issues/issue-33903.rs | 0 {src/test => tests}/ui/issues/issue-33941.rs | 0 {src/test => tests}/ui/issues/issue-33941.stderr | 0 {src/test => tests}/ui/issues/issue-33992.rs | 0 {src/test => tests}/ui/issues/issue-34047.rs | 0 {src/test => tests}/ui/issues/issue-34047.stderr | 0 {src/test => tests}/ui/issues/issue-34074.rs | 0 {src/test => tests}/ui/issues/issue-34209.rs | 0 {src/test => tests}/ui/issues/issue-34209.stderr | 0 {src/test => tests}/ui/issues/issue-34229.rs | 0 {src/test => tests}/ui/issues/issue-34229.stderr | 0 {src/test => tests}/ui/issues/issue-3424.rs | 0 {src/test => tests}/ui/issues/issue-3429.rs | 0 {src/test => tests}/ui/issues/issue-34334.rs | 0 {src/test => tests}/ui/issues/issue-34334.stderr | 0 {src/test => tests}/ui/issues/issue-34349.rs | 0 {src/test => tests}/ui/issues/issue-34349.stderr | 0 {src/test => tests}/ui/issues/issue-34373.rs | 0 {src/test => tests}/ui/issues/issue-34373.stderr | 0 {src/test => tests}/ui/issues/issue-34418.rs | 0 {src/test => tests}/ui/issues/issue-34427.rs | 0 {src/test => tests}/ui/issues/issue-3447.rs | 0 {src/test => tests}/ui/issues/issue-34503.rs | 0 {src/test => tests}/ui/issues/issue-34569.rs | 0 {src/test => tests}/ui/issues/issue-34571.rs | 0 {src/test => tests}/ui/issues/issue-34721.fixed | 0 {src/test => tests}/ui/issues/issue-34721.rs | 0 {src/test => tests}/ui/issues/issue-34721.stderr | 0 {src/test => tests}/ui/issues/issue-34751.rs | 0 {src/test => tests}/ui/issues/issue-3477.rs | 0 {src/test => tests}/ui/issues/issue-3477.stderr | 0 {src/test => tests}/ui/issues/issue-34780.rs | 0 {src/test => tests}/ui/issues/issue-34796.rs | 0 {src/test => tests}/ui/issues/issue-34839.rs | 0 {src/test => tests}/ui/issues/issue-34932.rs | 0 {src/test => tests}/ui/issues/issue-3500.rs | 0 {src/test => tests}/ui/issues/issue-35139.rs | 0 {src/test => tests}/ui/issues/issue-35139.stderr | 0 {src/test => tests}/ui/issues/issue-3521-2.fixed | 0 {src/test => tests}/ui/issues/issue-3521-2.rs | 0 {src/test => tests}/ui/issues/issue-3521-2.stderr | 0 {src/test => tests}/ui/issues/issue-35241.rs | 0 {src/test => tests}/ui/issues/issue-35241.stderr | 0 {src/test => tests}/ui/issues/issue-35423.rs | 0 {src/test => tests}/ui/issues/issue-3556.rs | 0 {src/test => tests}/ui/issues/issue-35570.rs | 0 {src/test => tests}/ui/issues/issue-35570.stderr | 0 {src/test => tests}/ui/issues/issue-3559.rs | 0 {src/test => tests}/ui/issues/issue-35600.rs | 0 {src/test => tests}/ui/issues/issue-3563-3.rs | 0 {src/test => tests}/ui/issues/issue-3574.rs | 0 {src/test => tests}/ui/issues/issue-35815.rs | 0 {src/test => tests}/ui/issues/issue-35976.rs | 0 .../ui/issues/issue-35976.unimported.stderr | 0 {src/test => tests}/ui/issues/issue-35988.rs | 0 {src/test => tests}/ui/issues/issue-35988.stderr | 0 {src/test => tests}/ui/issues/issue-36023.rs | 0 .../ui/issues/issue-36036-associated-type-layout.rs | 0 {src/test => tests}/ui/issues/issue-36075.rs | 0 {src/test => tests}/ui/issues/issue-3609.rs | 0 {src/test => tests}/ui/issues/issue-36116.rs | 0 {src/test => tests}/ui/issues/issue-36260.rs | 0 .../ui/issues/issue-36278-prefix-nesting.rs | 0 {src/test => tests}/ui/issues/issue-36299.rs | 0 {src/test => tests}/ui/issues/issue-36299.stderr | 0 {src/test => tests}/ui/issues/issue-36379.rs | 0 {src/test => tests}/ui/issues/issue-36400.rs | 0 {src/test => tests}/ui/issues/issue-36400.stderr | 0 {src/test => tests}/ui/issues/issue-36401.rs | 0 {src/test => tests}/ui/issues/issue-36474.rs | 0 {src/test => tests}/ui/issues/issue-3656.rs | 0 {src/test => tests}/ui/issues/issue-3668-2.fixed | 0 {src/test => tests}/ui/issues/issue-3668-2.rs | 0 {src/test => tests}/ui/issues/issue-3668-2.stderr | 0 {src/test => tests}/ui/issues/issue-3668.rs | 0 {src/test => tests}/ui/issues/issue-3668.stderr | 0 .../ui/issues/issue-36744-bitcast-args-if-needed.rs | 0 .../ui/issues/issue-36744-without-calls.rs | 0 .../ui/issues/issue-36786-resolve-call.rs | 0 {src/test => tests}/ui/issues/issue-36792.rs | 0 {src/test => tests}/ui/issues/issue-3680.rs | 0 {src/test => tests}/ui/issues/issue-3680.stderr | 0 {src/test => tests}/ui/issues/issue-36816.rs | 0 {src/test => tests}/ui/issues/issue-36836.rs | 0 {src/test => tests}/ui/issues/issue-36836.stderr | 0 {src/test => tests}/ui/issues/issue-36839.rs | 0 {src/test => tests}/ui/issues/issue-36856.rs | 0 {src/test => tests}/ui/issues/issue-36936.rs | 0 {src/test => tests}/ui/issues/issue-36954.rs | 0 {src/test => tests}/ui/issues/issue-3702-2.rs | 0 {src/test => tests}/ui/issues/issue-3702-2.stderr | 0 {src/test => tests}/ui/issues/issue-3702.rs | 0 {src/test => tests}/ui/issues/issue-37051.rs | 0 {src/test => tests}/ui/issues/issue-3707.rs | 0 {src/test => tests}/ui/issues/issue-3707.stderr | 0 {src/test => tests}/ui/issues/issue-37109.rs | 0 {src/test => tests}/ui/issues/issue-37131.rs | 0 {src/test => tests}/ui/issues/issue-37131.stderr | 0 .../ui/issues/issue-37291/auxiliary/lib.rs | 0 {src/test => tests}/ui/issues/issue-37291/main.rs | 0 .../issue-37311.polonius.stderr | 0 .../issue-37311-type-length-limit/issue-37311.rs | 0 .../issue-37311.stderr | 0 {src/test => tests}/ui/issues/issue-3743.rs | 0 {src/test => tests}/ui/issues/issue-37510.rs | 0 {src/test => tests}/ui/issues/issue-3753.rs | 0 {src/test => tests}/ui/issues/issue-37534.rs | 0 {src/test => tests}/ui/issues/issue-37534.stderr | 0 {src/test => tests}/ui/issues/issue-37576.rs | 0 {src/test => tests}/ui/issues/issue-37576.stderr | 0 {src/test => tests}/ui/issues/issue-37598.rs | 0 {src/test => tests}/ui/issues/issue-3763.rs | 0 {src/test => tests}/ui/issues/issue-3763.stderr | 0 {src/test => tests}/ui/issues/issue-37665.rs | 0 {src/test => tests}/ui/issues/issue-37665.stderr | 0 {src/test => tests}/ui/issues/issue-37686.rs | 0 {src/test => tests}/ui/issues/issue-37725.rs | 0 {src/test => tests}/ui/issues/issue-37733.rs | 0 {src/test => tests}/ui/issues/issue-3779.rs | 0 {src/test => tests}/ui/issues/issue-3779.stderr | 0 {src/test => tests}/ui/issues/issue-37884.rs | 0 {src/test => tests}/ui/issues/issue-37884.stderr | 0 {src/test => tests}/ui/issues/issue-3794.rs | 0 {src/test => tests}/ui/issues/issue-38160.rs | 0 {src/test => tests}/ui/issues/issue-38190.rs | 0 {src/test => tests}/ui/issues/issue-38226.rs | 0 {src/test => tests}/ui/issues/issue-38381.rs | 0 {src/test => tests}/ui/issues/issue-38412.rs | 0 {src/test => tests}/ui/issues/issue-38412.stderr | 0 {src/test => tests}/ui/issues/issue-38437.rs | 0 {src/test => tests}/ui/issues/issue-38458.rs | 0 {src/test => tests}/ui/issues/issue-38458.stderr | 0 {src/test => tests}/ui/issues/issue-3847.rs | 0 {src/test => tests}/ui/issues/issue-38556.rs | 0 {src/test => tests}/ui/issues/issue-38727.rs | 0 {src/test => tests}/ui/issues/issue-3874.rs | 0 {src/test => tests}/ui/issues/issue-38763.rs | 0 {src/test => tests}/ui/issues/issue-3878.rs | 0 {src/test => tests}/ui/issues/issue-38821.rs | 0 {src/test => tests}/ui/issues/issue-38821.stderr | 0 {src/test => tests}/ui/issues/issue-38857.rs | 0 {src/test => tests}/ui/issues/issue-38857.stderr | 0 .../issues/issue-38875/auxiliary/issue-38875-b.rs | 0 .../ui/issues/issue-38875/issue-38875.rs | 0 {src/test => tests}/ui/issues/issue-3888-2.rs | 0 {src/test => tests}/ui/issues/issue-38919.rs | 0 {src/test => tests}/ui/issues/issue-38919.stderr | 0 {src/test => tests}/ui/issues/issue-38942.rs | 0 {src/test => tests}/ui/issues/issue-3895.rs | 0 {src/test => tests}/ui/issues/issue-38954.rs | 0 {src/test => tests}/ui/issues/issue-38954.stderr | 0 {src/test => tests}/ui/issues/issue-38987.rs | 0 {src/test => tests}/ui/issues/issue-39089.rs | 0 {src/test => tests}/ui/issues/issue-39175.rs | 0 {src/test => tests}/ui/issues/issue-39175.stderr | 0 {src/test => tests}/ui/issues/issue-39211.rs | 0 {src/test => tests}/ui/issues/issue-39211.stderr | 0 {src/test => tests}/ui/issues/issue-39292.rs | 0 {src/test => tests}/ui/issues/issue-39367.rs | 0 {src/test => tests}/ui/issues/issue-39467.rs | 0 {src/test => tests}/ui/issues/issue-39548.rs | 0 {src/test => tests}/ui/issues/issue-39687.rs | 0 {src/test => tests}/ui/issues/issue-39687.stderr | 0 {src/test => tests}/ui/issues/issue-39709.rs | 0 {src/test => tests}/ui/issues/issue-3979-2.rs | 0 .../test => tests}/ui/issues/issue-3979-generics.rs | 0 {src/test => tests}/ui/issues/issue-3979-xcrate.rs | 0 {src/test => tests}/ui/issues/issue-3979.rs | 0 {src/test => tests}/ui/issues/issue-39808.rs | 0 {src/test => tests}/ui/issues/issue-39827.rs | 0 {src/test => tests}/ui/issues/issue-39848.rs | 0 {src/test => tests}/ui/issues/issue-39848.stderr | 0 {src/test => tests}/ui/issues/issue-3991.rs | 0 {src/test => tests}/ui/issues/issue-3993.rs | 0 {src/test => tests}/ui/issues/issue-3993.stderr | 0 {src/test => tests}/ui/issues/issue-39970.rs | 0 {src/test => tests}/ui/issues/issue-39970.stderr | 0 {src/test => tests}/ui/issues/issue-39984.rs | 0 {src/test => tests}/ui/issues/issue-40000.rs | 0 {src/test => tests}/ui/issues/issue-40000.stderr | 0 {src/test => tests}/ui/issues/issue-40003.rs | 0 {src/test => tests}/ui/issues/issue-40085.rs | 0 {src/test => tests}/ui/issues/issue-40136.rs | 0 {src/test => tests}/ui/issues/issue-40235.rs | 0 {src/test => tests}/ui/issues/issue-4025.rs | 0 {src/test => tests}/ui/issues/issue-40288-2.rs | 0 {src/test => tests}/ui/issues/issue-40288-2.stderr | 0 {src/test => tests}/ui/issues/issue-40288.rs | 0 {src/test => tests}/ui/issues/issue-40288.stderr | 0 {src/test => tests}/ui/issues/issue-40350.rs | 0 .../issues/issue-40402-ref-hints/issue-40402-1.rs | 0 .../issue-40402-ref-hints/issue-40402-1.stderr | 0 .../issues/issue-40402-ref-hints/issue-40402-2.rs | 0 .../issue-40402-ref-hints/issue-40402-2.stderr | 0 {src/test => tests}/ui/issues/issue-40408.rs | 0 .../ui/issues/issue-40510-1.migrate.stderr | 0 {src/test => tests}/ui/issues/issue-40510-1.rs | 0 {src/test => tests}/ui/issues/issue-40510-1.stderr | 0 {src/test => tests}/ui/issues/issue-40510-2.rs | 0 .../ui/issues/issue-40510-3.migrate.stderr | 0 {src/test => tests}/ui/issues/issue-40510-3.rs | 0 {src/test => tests}/ui/issues/issue-40510-3.stderr | 0 {src/test => tests}/ui/issues/issue-40510-4.rs | 0 {src/test => tests}/ui/issues/issue-40610.rs | 0 {src/test => tests}/ui/issues/issue-40610.stderr | 0 {src/test => tests}/ui/issues/issue-40749.rs | 0 {src/test => tests}/ui/issues/issue-40749.stderr | 0 {src/test => tests}/ui/issues/issue-40782.fixed | 0 {src/test => tests}/ui/issues/issue-40782.rs | 0 {src/test => tests}/ui/issues/issue-40782.stderr | 0 {src/test => tests}/ui/issues/issue-40827.rs | 0 {src/test => tests}/ui/issues/issue-40827.stderr | 0 {src/test => tests}/ui/issues/issue-40845.rs | 0 {src/test => tests}/ui/issues/issue-40845.stderr | 0 {src/test => tests}/ui/issues/issue-40861.rs | 0 {src/test => tests}/ui/issues/issue-40861.stderr | 0 {src/test => tests}/ui/issues/issue-40883.rs | 0 {src/test => tests}/ui/issues/issue-40951.rs | 0 {src/test => tests}/ui/issues/issue-41053.rs | 0 {src/test => tests}/ui/issues/issue-41139.rs | 0 {src/test => tests}/ui/issues/issue-41139.stderr | 0 {src/test => tests}/ui/issues/issue-41213.rs | 0 .../test => tests}/ui/issues/issue-41229-ref-str.rs | 0 .../ui/issues/issue-41229-ref-str.stderr | 0 {src/test => tests}/ui/issues/issue-41272.rs | 0 {src/test => tests}/ui/issues/issue-41298.rs | 0 {src/test => tests}/ui/issues/issue-41394-rpass.rs | 0 {src/test => tests}/ui/issues/issue-41394.rs | 0 {src/test => tests}/ui/issues/issue-41394.stderr | 0 {src/test => tests}/ui/issues/issue-41479.rs | 0 {src/test => tests}/ui/issues/issue-41498.rs | 0 {src/test => tests}/ui/issues/issue-41549.rs | 0 {src/test => tests}/ui/issues/issue-41549.stderr | 0 {src/test => tests}/ui/issues/issue-41604.rs | 0 {src/test => tests}/ui/issues/issue-41628.rs | 0 .../issues/issue-41652/auxiliary/issue-41652-b.rs | 0 .../ui/issues/issue-41652/issue-41652.rs | 0 .../ui/issues/issue-41652/issue-41652.stderr | 0 {src/test => tests}/ui/issues/issue-41677.rs | 0 {src/test => tests}/ui/issues/issue-41696.rs | 0 {src/test => tests}/ui/issues/issue-41726.rs | 0 {src/test => tests}/ui/issues/issue-41726.stderr | 0 {src/test => tests}/ui/issues/issue-41742.rs | 0 {src/test => tests}/ui/issues/issue-41742.stderr | 0 {src/test => tests}/ui/issues/issue-41744.rs | 0 .../ui/issues/issue-41849-variance-req.rs | 0 {src/test => tests}/ui/issues/issue-41880.rs | 0 {src/test => tests}/ui/issues/issue-41880.stderr | 0 {src/test => tests}/ui/issues/issue-41888.rs | 0 .../issue-41936-variance-coerce-unsized-cycle.rs | 0 {src/test => tests}/ui/issues/issue-41974.rs | 0 {src/test => tests}/ui/issues/issue-41974.stderr | 0 {src/test => tests}/ui/issues/issue-41998.rs | 0 {src/test => tests}/ui/issues/issue-42007.rs | 0 {src/test => tests}/ui/issues/issue-4208.rs | 0 {src/test => tests}/ui/issues/issue-42106.rs | 0 {src/test => tests}/ui/issues/issue-42106.stderr | 0 {src/test => tests}/ui/issues/issue-42148.rs | 0 {src/test => tests}/ui/issues/issue-42210.rs | 0 {src/test => tests}/ui/issues/issue-4228.rs | 0 {src/test => tests}/ui/issues/issue-42312.rs | 0 {src/test => tests}/ui/issues/issue-42312.stderr | 0 {src/test => tests}/ui/issues/issue-42453.rs | 0 {src/test => tests}/ui/issues/issue-42467.rs | 0 {src/test => tests}/ui/issues/issue-4252.rs | 0 {src/test => tests}/ui/issues/issue-42552.rs | 0 {src/test => tests}/ui/issues/issue-4265.rs | 0 {src/test => tests}/ui/issues/issue-4265.stderr | 0 {src/test => tests}/ui/issues/issue-42755.rs | 0 {src/test => tests}/ui/issues/issue-42755.stderr | 0 {src/test => tests}/ui/issues/issue-42796.rs | 0 {src/test => tests}/ui/issues/issue-42796.stderr | 0 {src/test => tests}/ui/issues/issue-42880.rs | 0 {src/test => tests}/ui/issues/issue-42880.stderr | 0 {src/test => tests}/ui/issues/issue-42956.rs | 0 {src/test => tests}/ui/issues/issue-43057.rs | 0 {src/test => tests}/ui/issues/issue-43162.rs | 0 {src/test => tests}/ui/issues/issue-43162.stderr | 0 {src/test => tests}/ui/issues/issue-43205.rs | 0 {src/test => tests}/ui/issues/issue-43250.rs | 0 {src/test => tests}/ui/issues/issue-43250.stderr | 0 {src/test => tests}/ui/issues/issue-43291.rs | 0 {src/test => tests}/ui/issues/issue-4333.rs | 0 {src/test => tests}/ui/issues/issue-4335.rs | 0 {src/test => tests}/ui/issues/issue-4335.stderr | 0 {src/test => tests}/ui/issues/issue-43355.rs | 0 {src/test => tests}/ui/issues/issue-43355.stderr | 0 {src/test => tests}/ui/issues/issue-43357.rs | 0 .../ui/issues/issue-43420-no-over-suggest.rs | 0 .../ui/issues/issue-43420-no-over-suggest.stderr | 0 {src/test => tests}/ui/issues/issue-43424.rs | 0 {src/test => tests}/ui/issues/issue-43424.stderr | 0 {src/test => tests}/ui/issues/issue-43431.rs | 0 {src/test => tests}/ui/issues/issue-43431.stderr | 0 {src/test => tests}/ui/issues/issue-43483.rs | 0 {src/test => tests}/ui/issues/issue-43692.rs | 0 {src/test => tests}/ui/issues/issue-43806.rs | 0 {src/test => tests}/ui/issues/issue-43853.rs | 0 {src/test => tests}/ui/issues/issue-4387.rs | 0 {src/test => tests}/ui/issues/issue-43910.rs | 0 {src/test => tests}/ui/issues/issue-43923.rs | 0 {src/test => tests}/ui/issues/issue-43925.rs | 0 {src/test => tests}/ui/issues/issue-43925.stderr | 0 {src/test => tests}/ui/issues/issue-43926.rs | 0 {src/test => tests}/ui/issues/issue-43926.stderr | 0 {src/test => tests}/ui/issues/issue-43988.rs | 0 {src/test => tests}/ui/issues/issue-43988.stderr | 0 {src/test => tests}/ui/issues/issue-44023.rs | 0 {src/test => tests}/ui/issues/issue-44023.stderr | 0 {src/test => tests}/ui/issues/issue-44056.rs | 0 {src/test => tests}/ui/issues/issue-44078.rs | 0 {src/test => tests}/ui/issues/issue-44078.stderr | 0 .../ui/issues/issue-44216-add-instant.rs | 0 .../ui/issues/issue-44216-add-system-time.rs | 0 .../ui/issues/issue-44216-sub-instant.rs | 0 .../ui/issues/issue-44216-sub-system-time.rs | 0 {src/test => tests}/ui/issues/issue-44239.fixed | 0 {src/test => tests}/ui/issues/issue-44239.rs | 0 {src/test => tests}/ui/issues/issue-44239.stderr | 0 {src/test => tests}/ui/issues/issue-44247.rs | 0 {src/test => tests}/ui/issues/issue-44255.rs | 0 {src/test => tests}/ui/issues/issue-44405.rs | 0 {src/test => tests}/ui/issues/issue-44405.stderr | 0 {src/test => tests}/ui/issues/issue-4464.rs | 0 {src/test => tests}/ui/issues/issue-44730.rs | 0 {src/test => tests}/ui/issues/issue-44851.rs | 0 {src/test => tests}/ui/issues/issue-4517.rs | 0 {src/test => tests}/ui/issues/issue-4517.stderr | 0 {src/test => tests}/ui/issues/issue-4541.rs | 0 {src/test => tests}/ui/issues/issue-4542.rs | 0 {src/test => tests}/ui/issues/issue-45425.rs | 0 {src/test => tests}/ui/issues/issue-4545.rs | 0 {src/test => tests}/ui/issues/issue-45510.rs | 0 {src/test => tests}/ui/issues/issue-45562.fixed | 0 {src/test => tests}/ui/issues/issue-45562.rs | 0 {src/test => tests}/ui/issues/issue-45562.stderr | 0 {src/test => tests}/ui/issues/issue-45697-1.rs | 0 {src/test => tests}/ui/issues/issue-45697-1.stderr | 0 {src/test => tests}/ui/issues/issue-45697.rs | 0 {src/test => tests}/ui/issues/issue-45697.stderr | 0 {src/test => tests}/ui/issues/issue-45730.rs | 0 {src/test => tests}/ui/issues/issue-45730.stderr | 0 {src/test => tests}/ui/issues/issue-45731.rs | 0 {src/test => tests}/ui/issues/issue-45801.rs | 0 {src/test => tests}/ui/issues/issue-45801.stderr | 0 {src/test => tests}/ui/issues/issue-45965.rs | 0 {src/test => tests}/ui/issues/issue-45965.stderr | 0 {src/test => tests}/ui/issues/issue-46069.rs | 0 {src/test => tests}/ui/issues/issue-46101.rs | 0 {src/test => tests}/ui/issues/issue-46101.stderr | 0 {src/test => tests}/ui/issues/issue-46302.rs | 0 {src/test => tests}/ui/issues/issue-46302.stderr | 0 {src/test => tests}/ui/issues/issue-46311.rs | 0 {src/test => tests}/ui/issues/issue-46311.stderr | 0 {src/test => tests}/ui/issues/issue-46332.rs | 0 {src/test => tests}/ui/issues/issue-46332.stderr | 0 {src/test => tests}/ui/issues/issue-46438.rs | 0 {src/test => tests}/ui/issues/issue-46438.stderr | 0 {src/test => tests}/ui/issues/issue-46471-1.rs | 0 {src/test => tests}/ui/issues/issue-46471-1.stderr | 0 {src/test => tests}/ui/issues/issue-46472.rs | 0 {src/test => tests}/ui/issues/issue-46472.stderr | 0 {src/test => tests}/ui/issues/issue-46604.rs | 0 {src/test => tests}/ui/issues/issue-46604.stderr | 0 ...e-46756-consider-borrowing-cast-or-binexpr.fixed | 0 ...ssue-46756-consider-borrowing-cast-or-binexpr.rs | 0 ...-46756-consider-borrowing-cast-or-binexpr.stderr | 0 {src/test => tests}/ui/issues/issue-46771.rs | 0 {src/test => tests}/ui/issues/issue-46771.stderr | 0 {src/test => tests}/ui/issues/issue-46855.rs | 0 {src/test => tests}/ui/issues/issue-46964.rs | 0 {src/test => tests}/ui/issues/issue-46983.rs | 0 {src/test => tests}/ui/issues/issue-46983.stderr | 0 .../issue-47073-zero-padded-tuple-struct-indices.rs | 0 ...ue-47073-zero-padded-tuple-struct-indices.stderr | 0 {src/test => tests}/ui/issues/issue-47094.rs | 0 {src/test => tests}/ui/issues/issue-47094.stderr | 0 {src/test => tests}/ui/issues/issue-47184.rs | 0 {src/test => tests}/ui/issues/issue-47184.stderr | 0 {src/test => tests}/ui/issues/issue-47309.rs | 0 {src/test => tests}/ui/issues/issue-4734.rs | 0 {src/test => tests}/ui/issues/issue-4735.rs | 0 {src/test => tests}/ui/issues/issue-4736.rs | 0 {src/test => tests}/ui/issues/issue-4736.stderr | 0 {src/test => tests}/ui/issues/issue-47364.rs | 0 {src/test => tests}/ui/issues/issue-47377.rs | 0 {src/test => tests}/ui/issues/issue-47377.stderr | 0 {src/test => tests}/ui/issues/issue-47380.rs | 0 {src/test => tests}/ui/issues/issue-47380.stderr | 0 {src/test => tests}/ui/issues/issue-47486.rs | 0 {src/test => tests}/ui/issues/issue-47486.stderr | 0 {src/test => tests}/ui/issues/issue-4759-1.rs | 0 {src/test => tests}/ui/issues/issue-4759.rs | 0 {src/test => tests}/ui/issues/issue-47638.rs | 0 {src/test => tests}/ui/issues/issue-47646.rs | 0 {src/test => tests}/ui/issues/issue-47646.stderr | 0 {src/test => tests}/ui/issues/issue-47673.rs | 0 {src/test => tests}/ui/issues/issue-47703-1.rs | 0 {src/test => tests}/ui/issues/issue-47703-tuple.rs | 0 {src/test => tests}/ui/issues/issue-47703.rs | 0 {src/test => tests}/ui/issues/issue-47715.rs | 0 {src/test => tests}/ui/issues/issue-47715.stderr | 0 {src/test => tests}/ui/issues/issue-47722.rs | 0 {src/test => tests}/ui/issues/issue-47725.rs | 0 {src/test => tests}/ui/issues/issue-47725.stderr | 0 {src/test => tests}/ui/issues/issue-48006.rs | 0 .../test => tests}/ui/issues/issue-48131.mir.stderr | 0 {src/test => tests}/ui/issues/issue-48131.rs | 0 .../ui/issues/issue-48131.thir.stderr | 0 {src/test => tests}/ui/issues/issue-48132.rs | 0 {src/test => tests}/ui/issues/issue-48159.rs | 0 {src/test => tests}/ui/issues/issue-48179.rs | 0 {src/test => tests}/ui/issues/issue-48276.rs | 0 {src/test => tests}/ui/issues/issue-48276.stderr | 0 {src/test => tests}/ui/issues/issue-4830.rs | 0 {src/test => tests}/ui/issues/issue-48364.rs | 0 {src/test => tests}/ui/issues/issue-48364.stderr | 0 {src/test => tests}/ui/issues/issue-48728.rs | 0 {src/test => tests}/ui/issues/issue-48728.stderr | 0 {src/test => tests}/ui/issues/issue-4875.rs | 0 {src/test => tests}/ui/issues/issue-48838.rs | 0 {src/test => tests}/ui/issues/issue-48838.stderr | 0 {src/test => tests}/ui/issues/issue-48984.rs | 0 {src/test => tests}/ui/issues/issue-49298.rs | 0 {src/test => tests}/ui/issues/issue-4935.rs | 0 {src/test => tests}/ui/issues/issue-4935.stderr | 0 {src/test => tests}/ui/issues/issue-49544.rs | 0 ...non-shorthand-field-patterns-in-pattern-macro.rs | 0 {src/test => tests}/ui/issues/issue-49632.rs | 0 {src/test => tests}/ui/issues/issue-4968.rs | 0 {src/test => tests}/ui/issues/issue-4968.stderr | 0 {src/test => tests}/ui/issues/issue-4972.rs | 0 {src/test => tests}/ui/issues/issue-4972.stderr | 0 {src/test => tests}/ui/issues/issue-49824.rs | 0 {src/test => tests}/ui/issues/issue-49824.stderr | 0 .../issues/issue-49851/compiler-builtins-error.rs | 0 .../issue-49851/compiler-builtins-error.stderr | 0 {src/test => tests}/ui/issues/issue-49854.rs | 0 {src/test => tests}/ui/issues/issue-49919.rs | 0 {src/test => tests}/ui/issues/issue-49919.stderr | 0 {src/test => tests}/ui/issues/issue-49934-errors.rs | 0 .../ui/issues/issue-49934-errors.stderr | 0 {src/test => tests}/ui/issues/issue-49934.rs | 0 {src/test => tests}/ui/issues/issue-49934.stderr | 0 {src/test => tests}/ui/issues/issue-49955.rs | 0 {src/test => tests}/ui/issues/issue-49973.rs | 0 .../issue-5008-borrowed-traitobject-method-call.rs | 0 {src/test => tests}/ui/issues/issue-50187.rs | 0 .../option-as_deref.rs | 0 .../option-as_deref.stderr | 0 .../option-as_deref_mut.rs | 0 .../option-as_deref_mut.stderr | 0 .../result-as_deref.rs | 0 .../result-as_deref.stderr | 0 .../result-as_deref_mut.rs | 0 .../result-as_deref_mut.stderr | 0 {src/test => tests}/ui/issues/issue-50403.rs | 0 {src/test => tests}/ui/issues/issue-50403.stderr | 0 {src/test => tests}/ui/issues/issue-50411.rs | 0 {src/test => tests}/ui/issues/issue-50415.rs | 0 {src/test => tests}/ui/issues/issue-50442.rs | 0 {src/test => tests}/ui/issues/issue-50471.rs | 0 {src/test => tests}/ui/issues/issue-50518.rs | 0 {src/test => tests}/ui/issues/issue-50571.fixed | 0 {src/test => tests}/ui/issues/issue-50571.rs | 0 {src/test => tests}/ui/issues/issue-50571.stderr | 0 {src/test => tests}/ui/issues/issue-50576.rs | 0 {src/test => tests}/ui/issues/issue-50576.stderr | 0 {src/test => tests}/ui/issues/issue-50581.rs | 0 {src/test => tests}/ui/issues/issue-50581.stderr | 0 {src/test => tests}/ui/issues/issue-50582.rs | 0 {src/test => tests}/ui/issues/issue-50582.stderr | 0 {src/test => tests}/ui/issues/issue-50585.rs | 0 {src/test => tests}/ui/issues/issue-50585.stderr | 0 {src/test => tests}/ui/issues/issue-50600.rs | 0 {src/test => tests}/ui/issues/issue-50600.stderr | 0 {src/test => tests}/ui/issues/issue-50618.rs | 0 {src/test => tests}/ui/issues/issue-50618.stderr | 0 {src/test => tests}/ui/issues/issue-5062.rs | 0 {src/test => tests}/ui/issues/issue-5062.stderr | 0 {src/test => tests}/ui/issues/issue-5067.rs | 0 {src/test => tests}/ui/issues/issue-5067.stderr | 0 {src/test => tests}/ui/issues/issue-50688.rs | 0 {src/test => tests}/ui/issues/issue-50688.stderr | 0 {src/test => tests}/ui/issues/issue-50689.rs | 0 {src/test => tests}/ui/issues/issue-50714-1.rs | 0 {src/test => tests}/ui/issues/issue-50714-1.stderr | 0 {src/test => tests}/ui/issues/issue-50714.rs | 0 {src/test => tests}/ui/issues/issue-50714.stderr | 0 {src/test => tests}/ui/issues/issue-50761.rs | 0 {src/test => tests}/ui/issues/issue-50781.rs | 0 {src/test => tests}/ui/issues/issue-50781.stderr | 0 {src/test => tests}/ui/issues/issue-50802.rs | 0 {src/test => tests}/ui/issues/issue-50802.stderr | 0 {src/test => tests}/ui/issues/issue-50811.rs | 0 {src/test => tests}/ui/issues/issue-50825-1.rs | 0 {src/test => tests}/ui/issues/issue-50825.rs | 0 .../issue-50865-private-impl-trait/auxiliary/lib.rs | 0 .../issues/issue-50865-private-impl-trait/main.rs | 0 {src/test => tests}/ui/issues/issue-5100.rs | 0 {src/test => tests}/ui/issues/issue-5100.stderr | 0 {src/test => tests}/ui/issues/issue-51022.rs | 0 {src/test => tests}/ui/issues/issue-51022.stderr | 0 {src/test => tests}/ui/issues/issue-51044.rs | 0 {src/test => tests}/ui/issues/issue-51102.rs | 0 {src/test => tests}/ui/issues/issue-51102.stderr | 0 {src/test => tests}/ui/issues/issue-51116.rs | 0 {src/test => tests}/ui/issues/issue-51116.stderr | 0 {src/test => tests}/ui/issues/issue-51154.rs | 0 {src/test => tests}/ui/issues/issue-51154.stderr | 0 {src/test => tests}/ui/issues/issue-51515.rs | 0 {src/test => tests}/ui/issues/issue-51515.stderr | 0 {src/test => tests}/ui/issues/issue-5153.rs | 0 {src/test => tests}/ui/issues/issue-5153.stderr | 0 .../issue-51632-try-desugar-incompatible-types.rs | 0 ...ssue-51632-try-desugar-incompatible-types.stderr | 0 {src/test => tests}/ui/issues/issue-51655.rs | 0 {src/test => tests}/ui/issues/issue-51714.rs | 0 {src/test => tests}/ui/issues/issue-51714.stderr | 0 {src/test => tests}/ui/issues/issue-51798.rs | 0 {src/test => tests}/ui/issues/issue-51874.rs | 0 {src/test => tests}/ui/issues/issue-51874.stderr | 0 {src/test => tests}/ui/issues/issue-51907.rs | 0 {src/test => tests}/ui/issues/issue-5192.rs | 0 {src/test => tests}/ui/issues/issue-51947.rs | 0 {src/test => tests}/ui/issues/issue-52049.rs | 0 {src/test => tests}/ui/issues/issue-52049.stderr | 0 .../ui/issues/issue-52126-assign-op-invariance.rs | 0 .../issues/issue-52126-assign-op-invariance.stderr | 0 .../ui/issues/issue-52140/auxiliary/some_crate.rs | 0 {src/test => tests}/ui/issues/issue-52140/main.rs | 0 .../ui/issues/issue-52141/auxiliary/some_crate.rs | 0 {src/test => tests}/ui/issues/issue-52141/main.rs | 0 {src/test => tests}/ui/issues/issue-52262.rs | 0 {src/test => tests}/ui/issues/issue-52262.stderr | 0 {src/test => tests}/ui/issues/issue-5239-1.rs | 0 {src/test => tests}/ui/issues/issue-5239-1.stderr | 0 {src/test => tests}/ui/issues/issue-5239-2.rs | 0 {src/test => tests}/ui/issues/issue-52489.rs | 0 {src/test => tests}/ui/issues/issue-52489.stderr | 0 {src/test => tests}/ui/issues/issue-52533.rs | 0 {src/test => tests}/ui/issues/issue-52533.stderr | 0 .../ui/issues/issue-52705/auxiliary/png2.rs | 0 {src/test => tests}/ui/issues/issue-52705/main.rs | 0 {src/test => tests}/ui/issues/issue-52717.rs | 0 {src/test => tests}/ui/issues/issue-52717.stderr | 0 {src/test => tests}/ui/issues/issue-5280.rs | 0 {src/test => tests}/ui/issues/issue-5315.rs | 0 .../issues/issue-5321-immediates-with-bare-self.rs | 0 {src/test => tests}/ui/issues/issue-53251.rs | 0 {src/test => tests}/ui/issues/issue-53251.stderr | 0 {src/test => tests}/ui/issues/issue-53275.rs | 0 {src/test => tests}/ui/issues/issue-53300.rs | 0 {src/test => tests}/ui/issues/issue-53300.stderr | 0 {src/test => tests}/ui/issues/issue-53333.rs | 0 {src/test => tests}/ui/issues/issue-53348.rs | 0 {src/test => tests}/ui/issues/issue-53348.stderr | 0 {src/test => tests}/ui/issues/issue-53419.rs | 0 {src/test => tests}/ui/issues/issue-53498.rs | 0 {src/test => tests}/ui/issues/issue-53498.stderr | 0 {src/test => tests}/ui/issues/issue-53568.rs | 0 {src/test => tests}/ui/issues/issue-5358-1.rs | 0 {src/test => tests}/ui/issues/issue-5358-1.stderr | 0 {src/test => tests}/ui/issues/issue-53712.rs | 0 {src/test => tests}/ui/issues/issue-53712.stderr | 0 {src/test => tests}/ui/issues/issue-53728.rs | 0 {src/test => tests}/ui/issues/issue-53843.rs | 0 {src/test => tests}/ui/issues/issue-54044.rs | 0 {src/test => tests}/ui/issues/issue-54044.stderr | 0 {src/test => tests}/ui/issues/issue-54062.rs | 0 {src/test => tests}/ui/issues/issue-54062.stderr | 0 {src/test => tests}/ui/issues/issue-54094.rs | 0 {src/test => tests}/ui/issues/issue-54302-cases.rs | 0 .../ui/issues/issue-54302-cases.stderr | 0 {src/test => tests}/ui/issues/issue-54302.rs | 0 {src/test => tests}/ui/issues/issue-54302.stderr | 0 {src/test => tests}/ui/issues/issue-5439.rs | 0 {src/test => tests}/ui/issues/issue-5439.stderr | 0 {src/test => tests}/ui/issues/issue-54410.rs | 0 {src/test => tests}/ui/issues/issue-54410.stderr | 0 .../issue-54462-mutable-noalias-correctness.rs | 0 .../ui/issues/issue-54477-reduced-2.rs | 0 {src/test => tests}/ui/issues/issue-54582.rs | 0 {src/test => tests}/ui/issues/issue-54696.rs | 0 {src/test => tests}/ui/issues/issue-5518.rs | 0 {src/test => tests}/ui/issues/issue-5521.rs | 0 {src/test => tests}/ui/issues/issue-55376.rs | 0 {src/test => tests}/ui/issues/issue-55380.rs | 0 {src/test => tests}/ui/issues/issue-55380.stderr | 0 {src/test => tests}/ui/issues/issue-5550.rs | 0 {src/test => tests}/ui/issues/issue-5554.rs | 0 {src/test => tests}/ui/issues/issue-55587.rs | 0 {src/test => tests}/ui/issues/issue-55587.stderr | 0 {src/test => tests}/ui/issues/issue-5572.rs | 0 {src/test => tests}/ui/issues/issue-55731.rs | 0 {src/test => tests}/ui/issues/issue-55731.stderr | 0 {src/test => tests}/ui/issues/issue-56128.rs | 0 {src/test => tests}/ui/issues/issue-56175.rs | 0 {src/test => tests}/ui/issues/issue-56175.stderr | 0 {src/test => tests}/ui/issues/issue-56199.rs | 0 {src/test => tests}/ui/issues/issue-56199.stderr | 0 {src/test => tests}/ui/issues/issue-56229.rs | 0 {src/test => tests}/ui/issues/issue-56237.rs | 0 {src/test => tests}/ui/issues/issue-5666.rs | 0 {src/test => tests}/ui/issues/issue-56806.rs | 0 {src/test => tests}/ui/issues/issue-56806.stderr | 0 {src/test => tests}/ui/issues/issue-56835.rs | 0 {src/test => tests}/ui/issues/issue-56835.stderr | 0 {src/test => tests}/ui/issues/issue-56870.rs | 0 {src/test => tests}/ui/issues/issue-5688.rs | 0 {src/test => tests}/ui/issues/issue-56943.rs | 0 {src/test => tests}/ui/issues/issue-56943.stderr | 0 {src/test => tests}/ui/issues/issue-5708.rs | 0 {src/test => tests}/ui/issues/issue-57156.rs | 0 {src/test => tests}/ui/issues/issue-57162.rs | 0 {src/test => tests}/ui/issues/issue-5718.rs | 0 {src/test => tests}/ui/issues/issue-57198-pass.rs | 0 {src/test => tests}/ui/issues/issue-57271.rs | 0 {src/test => tests}/ui/issues/issue-57271.stderr | 0 {src/test => tests}/ui/issues/issue-57362-1.rs | 0 {src/test => tests}/ui/issues/issue-57362-1.stderr | 0 {src/test => tests}/ui/issues/issue-57362-2.rs | 0 {src/test => tests}/ui/issues/issue-57362-2.stderr | 0 .../ui/issues/issue-57399-self-return-impl-trait.rs | 0 {src/test => tests}/ui/issues/issue-5741.rs | 0 {src/test => tests}/ui/issues/issue-5754.rs | 0 {src/test => tests}/ui/issues/issue-57741-1.rs | 0 {src/test => tests}/ui/issues/issue-57741-1.stderr | 0 {src/test => tests}/ui/issues/issue-57741.fixed | 0 {src/test => tests}/ui/issues/issue-57741.rs | 0 {src/test => tests}/ui/issues/issue-57741.stderr | 0 {src/test => tests}/ui/issues/issue-57781.rs | 0 {src/test => tests}/ui/issues/issue-57924.rs | 0 {src/test => tests}/ui/issues/issue-57924.stderr | 0 {src/test => tests}/ui/issues/issue-58212.rs | 0 {src/test => tests}/ui/issues/issue-58344.rs | 0 .../issue-58375-monomorphize-default-impls.rs | 0 {src/test => tests}/ui/issues/issue-5844.mir.stderr | 0 {src/test => tests}/ui/issues/issue-5844.rs | 0 .../test => tests}/ui/issues/issue-5844.thir.stderr | 0 {src/test => tests}/ui/issues/issue-58463.rs | 0 {src/test => tests}/ui/issues/issue-58712.rs | 0 {src/test => tests}/ui/issues/issue-58712.stderr | 0 {src/test => tests}/ui/issues/issue-58734.rs | 0 {src/test => tests}/ui/issues/issue-58734.stderr | 0 {src/test => tests}/ui/issues/issue-5883.rs | 0 {src/test => tests}/ui/issues/issue-5883.stderr | 0 {src/test => tests}/ui/issues/issue-5884.rs | 0 {src/test => tests}/ui/issues/issue-58857.rs | 0 {src/test => tests}/ui/issues/issue-58857.stderr | 0 {src/test => tests}/ui/issues/issue-5900.rs | 0 {src/test => tests}/ui/issues/issue-59020.rs | 0 {src/test => tests}/ui/issues/issue-5917.rs | 0 {src/test => tests}/ui/issues/issue-59326.rs | 0 {src/test => tests}/ui/issues/issue-59488.rs | 0 {src/test => tests}/ui/issues/issue-59488.stderr | 0 {src/test => tests}/ui/issues/issue-59494.rs | 0 {src/test => tests}/ui/issues/issue-59494.stderr | 0 {src/test => tests}/ui/issues/issue-5950.rs | 0 {src/test => tests}/ui/issues/issue-59756.fixed | 0 {src/test => tests}/ui/issues/issue-59756.rs | 0 {src/test => tests}/ui/issues/issue-59756.stderr | 0 {src/test => tests}/ui/issues/issue-5988.rs | 0 {src/test => tests}/ui/issues/issue-5997-enum.rs | 0 .../test => tests}/ui/issues/issue-5997-enum.stderr | 0 {src/test => tests}/ui/issues/issue-5997-struct.rs | 0 .../ui/issues/issue-5997-struct.stderr | 0 {src/test => tests}/ui/issues/issue-5997.rs | 0 {src/test => tests}/ui/issues/issue-60218.rs | 0 {src/test => tests}/ui/issues/issue-60218.stderr | 0 {src/test => tests}/ui/issues/issue-60622.rs | 0 {src/test => tests}/ui/issues/issue-60622.stderr | 0 {src/test => tests}/ui/issues/issue-60989.rs | 0 {src/test => tests}/ui/issues/issue-60989.stderr | 0 {src/test => tests}/ui/issues/issue-61106.rs | 0 {src/test => tests}/ui/issues/issue-61106.stderr | 0 {src/test => tests}/ui/issues/issue-61108.rs | 0 {src/test => tests}/ui/issues/issue-61108.stderr | 0 {src/test => tests}/ui/issues/issue-6117.rs | 0 {src/test => tests}/ui/issues/issue-6130.rs | 0 {src/test => tests}/ui/issues/issue-61475.rs | 0 {src/test => tests}/ui/issues/issue-6153.rs | 0 {src/test => tests}/ui/issues/issue-61623.rs | 0 {src/test => tests}/ui/issues/issue-61623.stderr | 0 {src/test => tests}/ui/issues/issue-61696.rs | 0 {src/test => tests}/ui/issues/issue-61894.rs | 0 {src/test => tests}/ui/issues/issue-62375.rs | 0 {src/test => tests}/ui/issues/issue-62375.stderr | 0 {src/test => tests}/ui/issues/issue-62480.rs | 0 {src/test => tests}/ui/issues/issue-62480.stderr | 0 {src/test => tests}/ui/issues/issue-6318.rs | 0 {src/test => tests}/ui/issues/issue-6344-let.rs | 0 {src/test => tests}/ui/issues/issue-6344-match.rs | 0 {src/test => tests}/ui/issues/issue-63983.rs | 0 {src/test => tests}/ui/issues/issue-63983.stderr | 0 {src/test => tests}/ui/issues/issue-64430.rs | 0 {src/test => tests}/ui/issues/issue-64430.stderr | 0 {src/test => tests}/ui/issues/issue-64559.rs | 0 {src/test => tests}/ui/issues/issue-64559.stderr | 0 {src/test => tests}/ui/issues/issue-6458-1.rs | 0 {src/test => tests}/ui/issues/issue-6458-2.rs | 0 {src/test => tests}/ui/issues/issue-6458-2.stderr | 0 {src/test => tests}/ui/issues/issue-6458-3.rs | 0 {src/test => tests}/ui/issues/issue-6458-3.stderr | 0 {src/test => tests}/ui/issues/issue-6458-4.rs | 0 {src/test => tests}/ui/issues/issue-6458-4.stderr | 0 {src/test => tests}/ui/issues/issue-6458.rs | 0 {src/test => tests}/ui/issues/issue-6458.stderr | 0 {src/test => tests}/ui/issues/issue-64593.rs | 0 .../ui/issues/issue-64792-bad-unicode-ctor.rs | 0 .../ui/issues/issue-64792-bad-unicode-ctor.stderr | 0 {src/test => tests}/ui/issues/issue-65131.rs | 0 {src/test => tests}/ui/issues/issue-65131.stderr | 0 {src/test => tests}/ui/issues/issue-65230.rs | 0 {src/test => tests}/ui/issues/issue-65230.stderr | 0 {src/test => tests}/ui/issues/issue-65462.rs | 0 {src/test => tests}/ui/issues/issue-6557.rs | 0 .../ui/issues/issue-65634-raw-ident-suggestion.rs | 0 .../issues/issue-65634-raw-ident-suggestion.stderr | 0 {src/test => tests}/ui/issues/issue-6596-2.rs | 0 {src/test => tests}/ui/issues/issue-6596-2.stderr | 0 {src/test => tests}/ui/issues/issue-66308.rs | 0 {src/test => tests}/ui/issues/issue-66353.rs | 0 {src/test => tests}/ui/issues/issue-66353.stderr | 0 {src/test => tests}/ui/issues/issue-6642.rs | 0 {src/test => tests}/ui/issues/issue-6642.stderr | 0 .../ui/issues/issue-66667-function-cmp-cycle.rs | 0 .../ui/issues/issue-66667-function-cmp-cycle.stderr | 0 .../ui/issues/issue-66702-break-outside-loop-val.rs | 0 .../issue-66702-break-outside-loop-val.stderr | 0 {src/test => tests}/ui/issues/issue-66706.rs | 0 {src/test => tests}/ui/issues/issue-66706.stderr | 0 {src/test => tests}/ui/issues/issue-66768.rs | 0 .../issue-66923-show-error-for-correct-call.rs | 0 .../issue-66923-show-error-for-correct-call.stderr | 0 .../ui/issues/issue-67039-unsound-pin-partialeq.rs | 0 .../issues/issue-67039-unsound-pin-partialeq.stderr | 0 {src/test => tests}/ui/issues/issue-6738.rs | 0 {src/test => tests}/ui/issues/issue-6738.stderr | 0 {src/test => tests}/ui/issues/issue-67535.rs | 0 {src/test => tests}/ui/issues/issue-67535.stderr | 0 .../ui/issues/issue-67552.polonius.stderr | 0 {src/test => tests}/ui/issues/issue-67552.rs | 0 {src/test => tests}/ui/issues/issue-67552.stderr | 0 .../ui/issues/issue-68010-large-zst-consts.rs | 0 .../ui/issues/issue-68696-catch-during-unwind.rs | 0 {src/test => tests}/ui/issues/issue-6892.rs | 0 {src/test => tests}/ui/issues/issue-68951.rs | 0 {src/test => tests}/ui/issues/issue-6898.rs | 0 {src/test => tests}/ui/issues/issue-69130.rs | 0 {src/test => tests}/ui/issues/issue-69130.stderr | 0 {src/test => tests}/ui/issues/issue-6919.rs | 0 .../ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs | 0 .../issue-69225-layout-repeated-checked-add.rs | 0 {src/test => tests}/ui/issues/issue-69306.rs | 0 {src/test => tests}/ui/issues/issue-69306.stderr | 0 {src/test => tests}/ui/issues/issue-6936.rs | 0 {src/test => tests}/ui/issues/issue-6936.stderr | 0 .../ui/issues/issue-69396-const-no-type-in-macro.rs | 0 .../issue-69396-const-no-type-in-macro.stderr | 0 {src/test => tests}/ui/issues/issue-69455.rs | 0 {src/test => tests}/ui/issues/issue-69455.stderr | 0 .../issue-69602-type-err-during-codegen-ice.rs | 0 .../issue-69602-type-err-during-codegen-ice.stderr | 0 {src/test => tests}/ui/issues/issue-69683.rs | 0 {src/test => tests}/ui/issues/issue-69683.stderr | 0 {src/test => tests}/ui/issues/issue-70093.rs | 0 {src/test => tests}/ui/issues/issue-7012.rs | 0 {src/test => tests}/ui/issues/issue-70381.rs | 0 {src/test => tests}/ui/issues/issue-70381.stderr | 0 {src/test => tests}/ui/issues/issue-7044.rs | 0 {src/test => tests}/ui/issues/issue-7044.stderr | 0 {src/test => tests}/ui/issues/issue-7061.rs | 0 {src/test => tests}/ui/issues/issue-7061.stderr | 0 {src/test => tests}/ui/issues/issue-70673.rs | 0 .../issue-70724-add_type_neq_err_label-unwrap.rs | 0 ...issue-70724-add_type_neq_err_label-unwrap.stderr | 0 {src/test => tests}/ui/issues/issue-70746.rs | 0 {src/test => tests}/ui/issues/issue-7092.rs | 0 {src/test => tests}/ui/issues/issue-7092.stderr | 0 {src/test => tests}/ui/issues/issue-71406.rs | 0 {src/test => tests}/ui/issues/issue-71406.stderr | 0 {src/test => tests}/ui/issues/issue-71584.rs | 0 {src/test => tests}/ui/issues/issue-71584.stderr | 0 {src/test => tests}/ui/issues/issue-71676-1.fixed | 0 {src/test => tests}/ui/issues/issue-71676-1.rs | 0 {src/test => tests}/ui/issues/issue-71676-1.stderr | 0 {src/test => tests}/ui/issues/issue-71676-2.rs | 0 {src/test => tests}/ui/issues/issue-71676-2.stderr | 0 {src/test => tests}/ui/issues/issue-7178.rs | 0 {src/test => tests}/ui/issues/issue-72002.rs | 0 {src/test => tests}/ui/issues/issue-72076.rs | 0 {src/test => tests}/ui/issues/issue-72076.stderr | 0 {src/test => tests}/ui/issues/issue-72278.rs | 0 {src/test => tests}/ui/issues/issue-72278.stderr | 0 {src/test => tests}/ui/issues/issue-7246.rs | 0 {src/test => tests}/ui/issues/issue-7246.stderr | 0 {src/test => tests}/ui/issues/issue-7268.rs | 0 .../ui/issues/issue-72839-error-overflow.rs | 0 .../ui/issues/issue-72839-error-overflow.stderr | 0 .../ui/issues/issue-72933-match-stack-overflow.rs | 0 {src/test => tests}/ui/issues/issue-73112.rs | 0 {src/test => tests}/ui/issues/issue-73112.stderr | 0 {src/test => tests}/ui/issues/issue-73229.rs | 0 {src/test => tests}/ui/issues/issue-7344.rs | 0 {src/test => tests}/ui/issues/issue-7364.rs | 0 {src/test => tests}/ui/issues/issue-7364.stderr | 0 {src/test => tests}/ui/issues/issue-74082.rs | 0 {src/test => tests}/ui/issues/issue-74082.stderr | 0 .../ui/issues/issue-74236/auxiliary/dep.rs | 0 {src/test => tests}/ui/issues/issue-74236/main.rs | 0 .../ui/issues/issue-74236/main.stderr | 0 .../ui/issues/issue-74564-if-expr-stack-overflow.rs | 0 .../ui/issues/issue-7519-match-unit-in-arg.rs | 0 {src/test => tests}/ui/issues/issue-75283.rs | 0 {src/test => tests}/ui/issues/issue-75283.stderr | 0 {src/test => tests}/ui/issues/issue-75307.rs | 0 {src/test => tests}/ui/issues/issue-75307.stderr | 0 {src/test => tests}/ui/issues/issue-7563.rs | 0 {src/test => tests}/ui/issues/issue-75704.rs | 0 {src/test => tests}/ui/issues/issue-7575.rs | 0 {src/test => tests}/ui/issues/issue-75777.rs | 0 {src/test => tests}/ui/issues/issue-75777.stderr | 0 {src/test => tests}/ui/issues/issue-76042.rs | 0 {src/test => tests}/ui/issues/issue-7607-1.rs | 0 {src/test => tests}/ui/issues/issue-7607-1.stderr | 0 {src/test => tests}/ui/issues/issue-7607-2.rs | 0 {src/test => tests}/ui/issues/issue-76077-1.fixed | 0 {src/test => tests}/ui/issues/issue-76077-1.rs | 0 {src/test => tests}/ui/issues/issue-76077-1.stderr | 0 {src/test => tests}/ui/issues/issue-76077.rs | 0 {src/test => tests}/ui/issues/issue-76077.stderr | 0 {src/test => tests}/ui/issues/issue-76191.rs | 0 {src/test => tests}/ui/issues/issue-76191.stderr | 0 {src/test => tests}/ui/issues/issue-7660.rs | 0 {src/test => tests}/ui/issues/issue-7663.rs | 0 ...issue-7673-cast-generically-implemented-trait.rs | 0 .../ui/issues/issue-77218/issue-77218-2.fixed | 0 .../ui/issues/issue-77218/issue-77218-2.rs | 0 .../ui/issues/issue-77218/issue-77218-2.stderr | 0 .../ui/issues/issue-77218/issue-77218.fixed | 0 .../ui/issues/issue-77218/issue-77218.rs | 0 .../ui/issues/issue-77218/issue-77218.stderr | 0 {src/test => tests}/ui/issues/issue-7784.rs | 0 {src/test => tests}/ui/issues/issue-77919.rs | 0 {src/test => tests}/ui/issues/issue-77919.stderr | 0 {src/test => tests}/ui/issues/issue-78115.rs | 0 {src/test => tests}/ui/issues/issue-7813.rs | 0 {src/test => tests}/ui/issues/issue-7813.stderr | 0 {src/test => tests}/ui/issues/issue-78192.rs | 0 {src/test => tests}/ui/issues/issue-78622.rs | 0 {src/test => tests}/ui/issues/issue-78622.stderr | 0 {src/test => tests}/ui/issues/issue-7867.rs | 0 {src/test => tests}/ui/issues/issue-7867.stderr | 0 {src/test => tests}/ui/issues/issue-78957.rs | 0 {src/test => tests}/ui/issues/issue-78957.stderr | 0 {src/test => tests}/ui/issues/issue-7899.rs | 0 {src/test => tests}/ui/issues/issue-7911.rs | 0 {src/test => tests}/ui/issues/issue-7950.rs | 0 {src/test => tests}/ui/issues/issue-7950.stderr | 0 {src/test => tests}/ui/issues/issue-7970a.rs | 0 {src/test => tests}/ui/issues/issue-7970a.stderr | 0 {src/test => tests}/ui/issues/issue-8044.rs | 0 {src/test => tests}/ui/issues/issue-80607.rs | 0 {src/test => tests}/ui/issues/issue-80607.stderr | 0 {src/test => tests}/ui/issues/issue-81584.fixed | 0 {src/test => tests}/ui/issues/issue-81584.rs | 0 {src/test => tests}/ui/issues/issue-81584.stderr | 0 ...171-default-method-self-inherit-builtin-trait.rs | 0 {src/test => tests}/ui/issues/issue-81918.rs | 0 {src/test => tests}/ui/issues/issue-8248.rs | 0 {src/test => tests}/ui/issues/issue-8249.rs | 0 {src/test => tests}/ui/issues/issue-8259.rs | 0 .../ui/issues/issue-82833-slice-miscompile.rs | 0 {src/test => tests}/ui/issues/issue-83048.rs | 0 {src/test => tests}/ui/issues/issue-83048.stderr | 0 {src/test => tests}/ui/issues/issue-83190.rs | 0 {src/test => tests}/ui/issues/issue-8391.rs | 0 {src/test => tests}/ui/issues/issue-83924.fixed | 0 {src/test => tests}/ui/issues/issue-83924.rs | 0 {src/test => tests}/ui/issues/issue-83924.stderr | 0 {src/test => tests}/ui/issues/issue-8398.rs | 0 {src/test => tests}/ui/issues/issue-8401.rs | 0 {src/test => tests}/ui/issues/issue-8498.rs | 0 {src/test => tests}/ui/issues/issue-8506.rs | 0 {src/test => tests}/ui/issues/issue-8521.rs | 0 {src/test => tests}/ui/issues/issue-85461.rs | 0 {src/test => tests}/ui/issues/issue-8578.rs | 0 {src/test => tests}/ui/issues/issue-86756.rs | 0 {src/test => tests}/ui/issues/issue-86756.stderr | 0 {src/test => tests}/ui/issues/issue-868.rs | 0 {src/test => tests}/ui/issues/issue-87199.rs | 0 {src/test => tests}/ui/issues/issue-87199.stderr | 0 .../ui/issues/issue-8727.polonius.stderr | 0 {src/test => tests}/ui/issues/issue-8727.rs | 0 {src/test => tests}/ui/issues/issue-8727.stderr | 0 {src/test => tests}/ui/issues/issue-87490.rs | 0 {src/test => tests}/ui/issues/issue-87490.stderr | 0 {src/test => tests}/ui/issues/issue-8761.rs | 0 {src/test => tests}/ui/issues/issue-8761.stderr | 0 {src/test => tests}/ui/issues/issue-8767.rs | 0 {src/test => tests}/ui/issues/issue-8767.stderr | 0 {src/test => tests}/ui/issues/issue-87707.rs | 0 .../test => tests}/ui/issues/issue-87707.run.stderr | 0 {src/test => tests}/ui/issues/issue-8783.rs | 0 {src/test => tests}/ui/issues/issue-88150.rs | 0 {src/test => tests}/ui/issues/issue-8860.rs | 0 {src/test => tests}/ui/issues/issue-8898.rs | 0 {src/test => tests}/ui/issues/issue-9047.rs | 0 {src/test => tests}/ui/issues/issue-9110.rs | 0 {src/test => tests}/ui/issues/issue-9123.rs | 0 {src/test => tests}/ui/issues/issue-9129.rs | 0 {src/test => tests}/ui/issues/issue-91489.rs | 0 {src/test => tests}/ui/issues/issue-9155.rs | 0 {src/test => tests}/ui/issues/issue-9188.rs | 0 {src/test => tests}/ui/issues/issue-9243.rs | 0 {src/test => tests}/ui/issues/issue-9249.rs | 0 {src/test => tests}/ui/issues/issue-9259.rs | 0 {src/test => tests}/ui/issues/issue-9382.rs | 0 {src/test => tests}/ui/issues/issue-9446.rs | 0 {src/test => tests}/ui/issues/issue-948.rs | 0 {src/test => tests}/ui/issues/issue-9575.rs | 0 {src/test => tests}/ui/issues/issue-9575.stderr | 0 {src/test => tests}/ui/issues/issue-9719.rs | 0 {src/test => tests}/ui/issues/issue-9725.rs | 0 {src/test => tests}/ui/issues/issue-9725.stderr | 0 {src/test => tests}/ui/issues/issue-9737.rs | 0 {src/test => tests}/ui/issues/issue-979.rs | 0 {src/test => tests}/ui/issues/issue-9814.rs | 0 {src/test => tests}/ui/issues/issue-9814.stderr | 0 {src/test => tests}/ui/issues/issue-98299.rs | 0 {src/test => tests}/ui/issues/issue-98299.stderr | 0 {src/test => tests}/ui/issues/issue-9837.rs | 0 {src/test => tests}/ui/issues/issue-9906.rs | 0 {src/test => tests}/ui/issues/issue-9918.rs | 0 {src/test => tests}/ui/issues/issue-9942.rs | 0 {src/test => tests}/ui/issues/issue-9951.rs | 0 {src/test => tests}/ui/issues/issue-9968.rs | 0 {src/test => tests}/ui/issues/issue-99838.rs | 0 {src/test => tests}/ui/issues/issue-pr29383.rs | 0 {src/test => tests}/ui/issues/issue-pr29383.stderr | 0 {src/test => tests}/ui/item-name-overload.rs | 0 {src/test => tests}/ui/iterators/array-of-ranges.rs | 0 {src/test => tests}/ui/iterators/array.rs | 0 {src/test => tests}/ui/iterators/bound.rs | 0 {src/test => tests}/ui/iterators/bound.stderr | 0 .../ui/iterators/collect-into-array.rs | 0 .../ui/iterators/collect-into-array.stderr | 0 .../ui/iterators/collect-into-slice.rs | 0 .../ui/iterators/collect-into-slice.stderr | 0 {src/test => tests}/ui/iterators/integral.rs | 0 {src/test => tests}/ui/iterators/integral.stderr | 0 .../ui/iterators/into-iter-on-arrays-2018.rs | 0 .../ui/iterators/into-iter-on-arrays-2018.stderr | 0 .../ui/iterators/into-iter-on-arrays-2021.rs | 0 .../ui/iterators/into-iter-on-arrays-lint.fixed | 0 .../ui/iterators/into-iter-on-arrays-lint.rs | 0 .../ui/iterators/into-iter-on-arrays-lint.stderr | 0 .../iterators/into-iterator-type-inference-shift.rs | 0 .../ui/iterators/invalid-iterator-chain.rs | 0 .../ui/iterators/invalid-iterator-chain.stderr | 0 {src/test => tests}/ui/iterators/issue-28098.rs | 0 {src/test => tests}/ui/iterators/issue-28098.stderr | 0 .../ui/iterators/issue-58952-filter-type-length.rs | 0 .../ui/iterators/iter-cloned-type-inference.rs | 0 .../ui/iterators/iter-count-overflow-debug.rs | 0 .../ui/iterators/iter-count-overflow-ndebug.rs | 0 .../ui/iterators/iter-map-fold-type-length.rs | 0 .../ui/iterators/iter-position-overflow-debug.rs | 0 .../ui/iterators/iter-position-overflow-ndebug.rs | 0 {src/test => tests}/ui/iterators/iter-range.rs | 0 .../ui/iterators/iter-step-overflow-debug.rs | 0 .../ui/iterators/iter-step-overflow-ndebug.rs | 0 .../ui/iterators/iter-sum-overflow-debug.rs | 0 .../ui/iterators/iter-sum-overflow-ndebug.rs | 0 .../iterators/iter-sum-overflow-overflow-checks.rs | 0 {src/test => tests}/ui/iterators/ranges.rs | 0 {src/test => tests}/ui/iterators/ranges.stderr | 0 {src/test => tests}/ui/iterators/rsplit-clone.rs | 0 .../ui/iterators/skip-count-overflow.rs | 0 {src/test => tests}/ui/iterators/string.rs | 0 {src/test => tests}/ui/iterators/string.stderr | 0 .../ui/iterators/vec-on-unimplemented.rs | 0 .../ui/iterators/vec-on-unimplemented.stderr | 0 {src/test => tests}/ui/json/json-and-color.rs | 0 {src/test => tests}/ui/json/json-and-color.stderr | 0 .../test => tests}/ui/json/json-and-error-format.rs | 0 .../ui/json/json-and-error-format.stderr | 0 .../ui/json/json-bom-plus-crlf-multifile-aux.rs | 0 .../ui/json/json-bom-plus-crlf-multifile.rs | 0 .../ui/json/json-bom-plus-crlf-multifile.stderr | 0 {src/test => tests}/ui/json/json-bom-plus-crlf.rs | 0 .../ui/json/json-bom-plus-crlf.stderr | 0 {src/test => tests}/ui/json/json-invalid.rs | 0 {src/test => tests}/ui/json/json-invalid.stderr | 0 .../ui/json/json-multiple.polonius.stderr | 0 {src/test => tests}/ui/json/json-multiple.rs | 0 {src/test => tests}/ui/json/json-multiple.stderr | 0 .../ui/json/json-options.polonius.stderr | 0 {src/test => tests}/ui/json/json-options.rs | 0 {src/test => tests}/ui/json/json-options.stderr | 0 {src/test => tests}/ui/json/json-short.rs | 0 {src/test => tests}/ui/json/json-short.stderr | 0 .../extern/keyword-extern-as-identifier-expr.rs | 0 .../extern/keyword-extern-as-identifier-expr.stderr | 0 .../extern/keyword-extern-as-identifier-pat.rs | 0 .../extern/keyword-extern-as-identifier-pat.stderr | 0 .../extern/keyword-extern-as-identifier-type.rs | 0 .../extern/keyword-extern-as-identifier-type.stderr | 0 .../extern/keyword-extern-as-identifier-use.rs | 0 .../extern/keyword-extern-as-identifier-use.stderr | 0 .../ui/keyword/keyword-false-as-identifier.rs | 0 .../ui/keyword/keyword-false-as-identifier.stderr | 0 .../ui/keyword/keyword-self-as-identifier.rs | 0 .../ui/keyword/keyword-self-as-identifier.stderr | 0 .../ui/keyword/keyword-self-as-type-param.rs | 0 .../ui/keyword/keyword-self-as-type-param.stderr | 0 .../ui/keyword/keyword-super-as-identifier.rs | 0 .../ui/keyword/keyword-super-as-identifier.stderr | 0 {src/test => tests}/ui/keyword/keyword-super.rs | 0 {src/test => tests}/ui/keyword/keyword-super.stderr | 0 .../ui/keyword/keyword-true-as-identifier.rs | 0 .../ui/keyword/keyword-true-as-identifier.stderr | 0 {src/test => tests}/ui/kindck/kindck-copy.rs | 0 {src/test => tests}/ui/kindck/kindck-copy.stderr | 0 .../ui/kindck/kindck-impl-type-params-2.rs | 0 .../ui/kindck/kindck-impl-type-params-2.stderr | 0 .../ui/kindck/kindck-impl-type-params.rs | 0 .../ui/kindck/kindck-impl-type-params.stderr | 0 .../kindck/kindck-inherited-copy-bound.curr.stderr | 0 ...rited-copy-bound.object_safe_for_dispatch.stderr | 0 .../ui/kindck/kindck-inherited-copy-bound.rs | 0 .../ui/kindck/kindck-nonsendable-1.rs | 0 .../ui/kindck/kindck-nonsendable-1.stderr | 0 {src/test => tests}/ui/kindck/kindck-send-object.rs | 0 .../ui/kindck/kindck-send-object.stderr | 0 .../test => tests}/ui/kindck/kindck-send-object1.rs | 0 .../ui/kindck/kindck-send-object1.stderr | 0 .../test => tests}/ui/kindck/kindck-send-object2.rs | 0 .../ui/kindck/kindck-send-object2.stderr | 0 {src/test => tests}/ui/kindck/kindck-send-owned.rs | 0 .../ui/kindck/kindck-send-owned.stderr | 0 {src/test => tests}/ui/kindck/kindck-send-unsafe.rs | 0 .../kindck/kindck-send-unsafe.rs~rust-lang_master | 0 .../ui/kindck/kindck-send-unsafe.stderr | 0 {src/test => tests}/ui/kinds-in-metadata.rs | 0 {src/test => tests}/ui/kinds-of-primitive-impl.rs | 0 .../ui/kinds-of-primitive-impl.stderr | 0 .../ui/label/label-beginning-with-underscore.rs | 0 {src/test => tests}/ui/label/label-static.rs | 0 {src/test => tests}/ui/label/label-static.stderr | 0 {src/test => tests}/ui/label/label-underscore.rs | 0 .../test => tests}/ui/label/label-underscore.stderr | 0 .../ui/label/label_break_value_continue.rs | 0 .../ui/label/label_break_value_continue.stderr | 0 .../ui/label/label_break_value_desugared_break.rs | 0 .../ui/label/label_break_value_illegal_uses.fixed | 0 .../ui/label/label_break_value_illegal_uses.rs | 0 .../ui/label/label_break_value_illegal_uses.stderr | 0 .../ui/label/label_break_value_unlabeled_break.rs | 0 .../label/label_break_value_unlabeled_break.stderr | 0 {src/test => tests}/ui/label/label_misspelled.rs | 0 .../test => tests}/ui/label/label_misspelled.stderr | 0 {src/test => tests}/ui/label/label_misspelled_2.rs | 0 .../ui/label/label_misspelled_2.stderr | 0 {src/test => tests}/ui/lambda-infer-unresolved.rs | 0 .../ui/lang-items/fn-fn_mut-call-ill-formed.rs | 0 .../ui/lang-items/fn-fn_mut-call-ill-formed.stderr | 0 {src/test => tests}/ui/lang-items/issue-19660.rs | 0 .../test => tests}/ui/lang-items/issue-19660.stderr | 0 {src/test => tests}/ui/lang-items/issue-31076.rs | 0 .../test => tests}/ui/lang-items/issue-31076.stderr | 0 {src/test => tests}/ui/lang-items/issue-83471.rs | 0 .../test => tests}/ui/lang-items/issue-83471.stderr | 0 {src/test => tests}/ui/lang-items/issue-86238.rs | 0 .../test => tests}/ui/lang-items/issue-86238.stderr | 0 {src/test => tests}/ui/lang-items/issue-87573.rs | 0 .../test => tests}/ui/lang-items/issue-87573.stderr | 0 .../ui/lang-items/lang-item-generic-requirements.rs | 0 .../lang-item-generic-requirements.stderr | 0 .../ui/lang-items/lang-item-missing-generator.rs | 0 .../lang-items/lang-item-missing-generator.stderr | 0 .../ui/lang-items/lang-item-missing.rs | 0 .../ui/lang-items/lang-item-missing.stderr | 0 .../ui/lang-items/missing-clone-for-suggestion.rs | 0 .../lang-items/missing-clone-for-suggestion.stderr | 0 .../ui/lang-items/no_owned_box_lang_item.rs | 0 .../ui/lang-items/no_owned_box_lang_item.stderr | 0 .../ui/lang-items/required-lang-item.rs | 0 .../ui/lang-items/required-lang-item.stderr | 0 {src/test => tests}/ui/last-use-in-block.rs | 0 {src/test => tests}/ui/last-use-in-cap-clause.rs | 0 {src/test => tests}/ui/last-use-is-capture.rs | 0 .../auxiliary/upstream_alias.rs | 0 .../ui/late-bound-lifetimes/cross_crate_alias.rs | 0 .../downgraded_to_early_through_alias.rs | 0 .../ui/late-bound-lifetimes/issue-36381.rs | 0 .../ui/late-bound-lifetimes/issue-47511.rs | 0 .../late_bound_through_alias.rs | 0 .../ui/late-bound-lifetimes/mismatched_arg_count.rs | 0 .../mismatched_arg_count.stderr | 0 {src/test => tests}/ui/layout/big-type-no-err.rs | 0 {src/test => tests}/ui/layout/debug.rs | 0 {src/test => tests}/ui/layout/debug.stderr | 0 {src/test => tests}/ui/layout/hexagon-enum.rs | 0 {src/test => tests}/ui/layout/hexagon-enum.stderr | 0 .../layout/homogeneous-aggr-zero-sized-c-struct.rs | 0 .../homogeneous-aggr-zero-sized-c-struct.stderr | 0 .../layout/homogeneous-aggr-zero-sized-repr-rust.rs | 0 .../homogeneous-aggr-zero-sized-repr-rust.stderr | 0 .../issue-60431-unsized-tail-behind-projection.rs | 0 {src/test => tests}/ui/layout/issue-84108.rs | 0 {src/test => tests}/ui/layout/issue-84108.stderr | 0 ...ssue-96158-scalarpair-payload-might-be-uninit.rs | 0 ...-96158-scalarpair-payload-might-be-uninit.stderr | 0 .../ui/layout/issue-96185-overaligned-enum.rs | 0 .../ui/layout/issue-96185-overaligned-enum.stderr | 0 .../ui/layout/thin-meta-implies-thin-ptr.rs | 0 {src/test => tests}/ui/layout/thumb-enum.rs | 0 {src/test => tests}/ui/layout/thumb-enum.stderr | 0 .../ui/layout/unsafe-cell-hides-niche.rs | 0 {src/test => tests}/ui/layout/valid_range_oob.rs | 0 .../test => tests}/ui/layout/valid_range_oob.stderr | 0 .../ui/layout/zero-sized-array-enum-niche.rs | 0 .../ui/layout/zero-sized-array-enum-niche.stderr | 0 .../ui/layout/zero-sized-array-union.rs | 0 .../ui/layout/zero-sized-array-union.stderr | 0 {src/test => tests}/ui/lazy-and-or.rs | 0 .../ui/lazy-type-alias-impl-trait/branches.rs | 0 .../ui/lazy-type-alias-impl-trait/branches.stderr | 0 .../ui/lazy-type-alias-impl-trait/branches2.rs | 0 .../ui/lazy-type-alias-impl-trait/branches3.rs | 0 .../ui/lazy-type-alias-impl-trait/branches3.stderr | 0 .../ui/lazy-type-alias-impl-trait/freeze_cycle.rs | 0 .../infer_cross_function.rs | 0 .../lifetime_inference.rs | 0 .../ui/lazy-type-alias-impl-trait/nested.rs | 0 .../lazy-type-alias-impl-trait/opaque_vs_opaque.rs | 0 .../ui/lazy-type-alias-impl-trait/recursion.rs | 0 .../ui/lazy-type-alias-impl-trait/recursion2.rs | 0 .../ui/lazy-type-alias-impl-trait/recursion3.rs | 0 .../ui/lazy-type-alias-impl-trait/recursion3.stderr | 0 .../ui/lazy-type-alias-impl-trait/recursion4.rs | 0 .../ui/lazy-type-alias-impl-trait/recursion4.stderr | 0 .../unsized_sized_opaque.rs | 0 {src/test => tests}/ui/let-else/const-fn.rs | 0 {src/test => tests}/ui/let-else/issue-100103.rs | 0 {src/test => tests}/ui/let-else/issue-102317.rs | 0 {src/test => tests}/ui/let-else/issue-94176.rs | 0 {src/test => tests}/ui/let-else/issue-94176.stderr | 0 {src/test => tests}/ui/let-else/issue-99975.rs | 0 .../ui/let-else/let-else-allow-in-expr.rs | 0 .../ui/let-else/let-else-allow-in-expr.stderr | 0 .../ui/let-else/let-else-allow-unused.rs | 0 .../ui/let-else/let-else-allow-unused.stderr | 0 .../let-else-binding-explicit-mut-annotated.rs | 0 .../let-else-binding-explicit-mut-annotated.stderr | 0 .../let-else-binding-explicit-mut-borrow.rs | 0 .../let-else-binding-explicit-mut-borrow.stderr | 0 .../let-else/let-else-binding-explicit-mut-pass.rs | 0 .../ui/let-else/let-else-binding-explicit-mut.rs | 0 .../let-else/let-else-binding-explicit-mut.stderr | 0 .../ui/let-else/let-else-binding-immutable.rs | 0 .../ui/let-else/let-else-binding-immutable.stderr | 0 .../test => tests}/ui/let-else/let-else-bindings.rs | 0 .../ui/let-else/let-else-bool-binop-init.fixed | 0 .../ui/let-else/let-else-bool-binop-init.rs | 0 .../ui/let-else/let-else-bool-binop-init.stderr | 0 .../ui/let-else/let-else-brace-before-else.fixed | 0 .../ui/let-else/let-else-brace-before-else.rs | 0 .../ui/let-else/let-else-brace-before-else.stderr | 0 {src/test => tests}/ui/let-else/let-else-check.rs | 0 .../ui/let-else/let-else-check.stderr | 0 .../let-else/let-else-deref-coercion-annotated.rs | 0 .../ui/let-else/let-else-deref-coercion.rs | 0 .../ui/let-else/let-else-deref-coercion.stderr | 0 .../ui/let-else/let-else-destructuring.rs | 0 .../ui/let-else/let-else-destructuring.stderr | 0 .../ui/let-else/let-else-drop-order.rs | 0 .../ui/let-else/let-else-drop-order.run.stdout | 0 {src/test => tests}/ui/let-else/let-else-if.rs | 0 {src/test => tests}/ui/let-else/let-else-if.stderr | 0 .../ui/let-else/let-else-irrefutable.rs | 0 .../ui/let-else/let-else-irrefutable.stderr | 0 .../ui/let-else/let-else-missing-semicolon.rs | 0 .../ui/let-else/let-else-missing-semicolon.stderr | 0 .../ui/let-else/let-else-no-double-error.rs | 0 .../ui/let-else/let-else-no-double-error.stderr | 0 .../test => tests}/ui/let-else/let-else-non-copy.rs | 0 .../ui/let-else/let-else-non-diverging.rs | 0 .../ui/let-else/let-else-non-diverging.stderr | 0 .../ui/let-else/let-else-ref-bindings-pass.rs | 0 .../ui/let-else/let-else-ref-bindings.rs | 0 .../ui/let-else/let-else-ref-bindings.stderr | 0 .../test => tests}/ui/let-else/let-else-run-pass.rs | 0 {src/test => tests}/ui/let-else/let-else-scope.rs | 0 .../ui/let-else/let-else-scope.stderr | 0 .../ui/let-else/let-else-slicing-error.rs | 0 .../ui/let-else/let-else-slicing-error.stderr | 0 .../ui/let-else/let-else-source-expr-nomove-pass.rs | 0 .../ui/let-else/let-else-temp-borrowck.rs | 0 .../ui/let-else/let-else-temporary-lifetime.rs | 0 .../ui/let-else/let-else-then-diverge.rs | 0 .../ui/let-else/let-else-then-diverge.stderr | 0 {src/test => tests}/ui/let-else/let-else.rs | 0 {src/test => tests}/ui/lexer/error-stage.rs | 0 {src/test => tests}/ui/lexer/error-stage.stderr | 0 .../ui/lexer/lex-bad-binary-literal.rs | 0 .../ui/lexer/lex-bad-binary-literal.stderr | 0 .../ui/lexer/lex-bad-char-literals-1.rs | 0 .../ui/lexer/lex-bad-char-literals-1.stderr | 0 .../ui/lexer/lex-bad-char-literals-2.rs | 0 .../ui/lexer/lex-bad-char-literals-2.stderr | 0 .../ui/lexer/lex-bad-char-literals-3.rs | 0 .../ui/lexer/lex-bad-char-literals-3.stderr | 0 .../ui/lexer/lex-bad-char-literals-4.rs | 0 .../ui/lexer/lex-bad-char-literals-4.stderr | 0 .../ui/lexer/lex-bad-char-literals-5.rs | 0 .../ui/lexer/lex-bad-char-literals-5.stderr | 0 .../ui/lexer/lex-bad-char-literals-6.rs | 0 .../ui/lexer/lex-bad-char-literals-6.stderr | 0 .../ui/lexer/lex-bad-char-literals-7.rs | 0 .../ui/lexer/lex-bad-char-literals-7.stderr | 0 .../ui/lexer/lex-bad-numeric-literals.rs | 0 .../ui/lexer/lex-bad-numeric-literals.stderr | 0 .../ui/lexer/lex-bad-octal-literal.rs | 0 .../ui/lexer/lex-bad-octal-literal.stderr | 0 {src/test => tests}/ui/lexer/lex-bad-token.rs | 0 {src/test => tests}/ui/lexer/lex-bad-token.stderr | 0 .../ui/lexer/lex-bare-cr-nondoc-comment.rs | 0 .../lexer/lex-bare-cr-string-literal-doc-comment.rs | 0 .../lex-bare-cr-string-literal-doc-comment.stderr | 0 .../ui/lexer/lex-emoji-identifiers.rs | 0 .../ui/lexer/lex-emoji-identifiers.stderr | 0 {src/test => tests}/ui/lexer/lex-stray-backslash.rs | 0 .../ui/lexer/lex-stray-backslash.stderr | 0 ...-crlf-line-endings-string-literal-doc-comment.rs | 0 {src/test => tests}/ui/lexical-scopes.rs | 0 {src/test => tests}/ui/lexical-scopes.stderr | 0 {src/test => tests}/ui/lexical-scoping.rs | 0 .../ui/lifetimes/auxiliary/issue-91763-aux.rs | 0 .../lifetime_bound_will_change_warning_lib.rs | 0 .../ui/lifetimes/bare-trait-object-borrowck.rs | 0 .../ui/lifetimes/bare-trait-object.rs | 0 .../ui/lifetimes/borrowck-let-suggestion.rs | 0 .../ui/lifetimes/borrowck-let-suggestion.stderr | 0 .../ui/lifetimes/conflicting-bounds.rs | 0 .../ui/lifetimes/conflicting-bounds.stderr | 0 .../ui/lifetimes/copy_modulo_regions.rs | 0 .../ui/lifetimes/copy_modulo_regions.stderr | 0 .../ui/lifetimes/elided-lifetime-in-param-pat.rs | 0 .../lifetimes/elided-lifetime-in-path-in-impl-Fn.rs | 0 .../ui/lifetimes/elided-lifetime-in-path-in-pat.rs | 0 ...-lifetime-in-path-in-type-relative-expression.rs | 0 .../ui/lifetimes/fullwidth-ampersand.rs | 0 .../ui/lifetimes/fullwidth-ampersand.stderr | 0 {src/test => tests}/ui/lifetimes/issue-105227.fixed | 0 {src/test => tests}/ui/lifetimes/issue-105227.rs | 0 .../test => tests}/ui/lifetimes/issue-105227.stderr | 0 {src/test => tests}/ui/lifetimes/issue-17728.rs | 0 {src/test => tests}/ui/lifetimes/issue-17728.stderr | 0 {src/test => tests}/ui/lifetimes/issue-26638.rs | 0 {src/test => tests}/ui/lifetimes/issue-26638.stderr | 0 {src/test => tests}/ui/lifetimes/issue-34979.rs | 0 {src/test => tests}/ui/lifetimes/issue-34979.stderr | 0 {src/test => tests}/ui/lifetimes/issue-54378.rs | 0 {src/test => tests}/ui/lifetimes/issue-55796.rs | 0 {src/test => tests}/ui/lifetimes/issue-55796.stderr | 0 .../ui/lifetimes/issue-64173-unused-lifetimes.rs | 0 .../lifetimes/issue-64173-unused-lifetimes.stderr | 0 {src/test => tests}/ui/lifetimes/issue-67498.rs | 0 .../ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs | 0 .../ui/lifetimes/issue-76168-hr-outlives-2.rs | 0 .../ui/lifetimes/issue-76168-hr-outlives.rs | 0 {src/test => tests}/ui/lifetimes/issue-77175.rs | 0 {src/test => tests}/ui/lifetimes/issue-79187-2.rs | 0 .../ui/lifetimes/issue-79187-2.stderr | 0 {src/test => tests}/ui/lifetimes/issue-79187.rs | 0 {src/test => tests}/ui/lifetimes/issue-79187.stderr | 0 .../lifetimes/issue-83737-binders-across-types.rs | 0 .../ui/lifetimes/issue-83737-erasing-bound-vars.rs | 0 ...83753-invalid-associated-type-supertrait-hrtb.rs | 0 ...3-invalid-associated-type-supertrait-hrtb.stderr | 0 .../lifetimes/issue-83907-invalid-fn-like-path.rs | 0 .../issue-83907-invalid-fn-like-path.stderr | 0 {src/test => tests}/ui/lifetimes/issue-84398.rs | 0 {src/test => tests}/ui/lifetimes/issue-84604.rs | 0 .../ui/lifetimes/issue-90170-elision-mismatch.fixed | 0 .../ui/lifetimes/issue-90170-elision-mismatch.rs | 0 .../lifetimes/issue-90170-elision-mismatch.stderr | 0 .../issue-90600-expected-return-static-indirect.rs | 0 ...sue-90600-expected-return-static-indirect.stderr | 0 {src/test => tests}/ui/lifetimes/issue-91763.rs | 0 {src/test => tests}/ui/lifetimes/issue-91763.stderr | 0 {src/test => tests}/ui/lifetimes/issue-95023.rs | 0 {src/test => tests}/ui/lifetimes/issue-95023.stderr | 0 {src/test => tests}/ui/lifetimes/issue-97193.rs | 0 {src/test => tests}/ui/lifetimes/issue-97193.stderr | 0 {src/test => tests}/ui/lifetimes/issue-97194.rs | 0 {src/test => tests}/ui/lifetimes/issue-97194.stderr | 0 .../lifetimes/lifetime-bound-will-change-warning.rs | 0 .../lifetime-bound-will-change-warning.stderr | 0 .../lifetimes/lifetime-doesnt-live-long-enough.rs | 0 .../lifetime-doesnt-live-long-enough.stderr | 0 ...lision-return-type-requires-explicit-lifetime.rs | 0 ...on-return-type-requires-explicit-lifetime.stderr | 0 .../lifetimes/lifetime-elision-return-type-trait.rs | 0 .../lifetime-elision-return-type-trait.stderr | 0 .../42701_one_named_and_one_anonymous.rs | 0 .../42701_one_named_and_one_anonymous.stderr | 0 ...eturn-one-existing-name-early-bound-in-struct.rs | 0 ...n-one-existing-name-early-bound-in-struct.stderr | 0 .../ex1-return-one-existing-name-if-else-2.rs | 0 .../ex1-return-one-existing-name-if-else-2.stderr | 0 .../ex1-return-one-existing-name-if-else-3.rs | 0 .../ex1-return-one-existing-name-if-else-3.stderr | 0 ...return-one-existing-name-if-else-using-impl-2.rs | 0 ...rn-one-existing-name-if-else-using-impl-2.stderr | 0 ...return-one-existing-name-if-else-using-impl-3.rs | 0 ...rn-one-existing-name-if-else-using-impl-3.stderr | 0 ...1-return-one-existing-name-if-else-using-impl.rs | 0 ...turn-one-existing-name-if-else-using-impl.stderr | 0 .../ex1-return-one-existing-name-if-else.rs | 0 .../ex1-return-one-existing-name-if-else.stderr | 0 ...-return-one-existing-name-return-type-is-anon.rs | 0 ...urn-one-existing-name-return-type-is-anon.stderr | 0 .../ex1-return-one-existing-name-self-is-anon.rs | 0 ...ex1-return-one-existing-name-self-is-anon.stderr | 0 .../lifetime-errors/ex1b-return-no-names-if-else.rs | 0 .../ex1b-return-no-names-if-else.stderr | 0 .../ex2a-push-one-existing-name-2.rs | 0 .../ex2a-push-one-existing-name-2.stderr | 0 .../ex2a-push-one-existing-name-early-bound.rs | 0 .../ex2a-push-one-existing-name-early-bound.stderr | 0 .../lifetime-errors/ex2a-push-one-existing-name.rs | 0 .../ex2a-push-one-existing-name.stderr | 0 .../lifetime-errors/ex2b-push-no-existing-names.rs | 0 .../ex2b-push-no-existing-names.stderr | 0 .../lifetime-errors/ex2c-push-inference-variable.rs | 0 .../ex2c-push-inference-variable.stderr | 0 .../ex2d-push-inference-variable-2.rs | 0 .../ex2d-push-inference-variable-2.stderr | 0 .../ex2e-push-inference-variable-3.rs | 0 .../ex2e-push-inference-variable-3.stderr | 0 .../lifetime-errors/ex3-both-anon-regions-2.rs | 0 .../lifetime-errors/ex3-both-anon-regions-2.stderr | 0 .../lifetime-errors/ex3-both-anon-regions-3.rs | 0 .../lifetime-errors/ex3-both-anon-regions-3.stderr | 0 .../ex3-both-anon-regions-both-are-structs-2.rs | 0 .../ex3-both-anon-regions-both-are-structs-2.stderr | 0 .../ex3-both-anon-regions-both-are-structs-3.rs | 0 .../ex3-both-anon-regions-both-are-structs-3.stderr | 0 ...n-regions-both-are-structs-earlybound-regions.rs | 0 ...gions-both-are-structs-earlybound-regions.stderr | 0 ...on-regions-both-are-structs-latebound-regions.rs | 0 ...egions-both-are-structs-latebound-regions.stderr | 0 .../ex3-both-anon-regions-both-are-structs.rs | 0 .../ex3-both-anon-regions-both-are-structs.stderr | 0 .../ex3-both-anon-regions-latebound-regions.rs | 0 .../ex3-both-anon-regions-latebound-regions.stderr | 0 .../ex3-both-anon-regions-one-is-struct-2.rs | 0 .../ex3-both-anon-regions-one-is-struct-2.stderr | 0 .../ex3-both-anon-regions-one-is-struct-3.rs | 0 .../ex3-both-anon-regions-one-is-struct-3.stderr | 0 .../ex3-both-anon-regions-one-is-struct-4.rs | 0 .../ex3-both-anon-regions-one-is-struct-4.stderr | 0 .../ex3-both-anon-regions-one-is-struct.rs | 0 .../ex3-both-anon-regions-one-is-struct.stderr | 0 .../ex3-both-anon-regions-return-type-is-anon.rs | 0 ...ex3-both-anon-regions-return-type-is-anon.stderr | 0 .../ex3-both-anon-regions-self-is-anon.rs | 0 .../ex3-both-anon-regions-self-is-anon.stderr | 0 .../ex3-both-anon-regions-using-fn-items.rs | 0 .../ex3-both-anon-regions-using-fn-items.stderr | 0 .../ex3-both-anon-regions-using-impl-items.rs | 0 .../ex3-both-anon-regions-using-impl-items.stderr | 0 .../ex3-both-anon-regions-using-trait-objects.rs | 0 ...ex3-both-anon-regions-using-trait-objects.stderr | 0 .../lifetime-errors/ex3-both-anon-regions.rs | 0 .../lifetime-errors/ex3-both-anon-regions.stderr | 0 .../ui/lifetimes/lifetime-errors/issue_74400.rs | 0 .../ui/lifetimes/lifetime-errors/issue_74400.stderr | 0 .../liveness-assign-imm-local-notes.rs | 0 .../liveness-assign-imm-local-notes.stderr | 0 .../lifetime-mismatch-between-trait-and-impl.rs | 0 .../lifetime-mismatch-between-trait-and-impl.stderr | 0 .../ui/lifetimes/lifetime-no-keyword.rs | 0 .../ui/lifetimes/lifetime-no-keyword.stderr | 0 .../ui/lifetimes/missing-lifetime-in-alias.rs | 0 .../ui/lifetimes/missing-lifetime-in-alias.stderr | 0 .../ui/lifetimes/nested-binder-print.rs | 0 .../ui/lifetimes/nested-binder-print.stderr | 0 {src/test => tests}/ui/lifetimes/nested.rs | 0 .../ui/lifetimes/re-empty-in-error.rs | 0 .../ui/lifetimes/re-empty-in-error.stderr | 0 {src/test => tests}/ui/lifetimes/shadow.rs | 0 {src/test => tests}/ui/lifetimes/shadow.stderr | 0 ...ggest-introducing-and-adding-missing-lifetime.rs | 0 ...t-introducing-and-adding-missing-lifetime.stderr | 0 ...ared-lifetime-used-in-debug-macro-issue-70152.rs | 0 ...-lifetime-used-in-debug-macro-issue-70152.stderr | 0 ...d-closure-doesnt-life-long-enough-issue-67634.rs | 0 ...osure-doesnt-life-long-enough-issue-67634.stderr | 0 .../ui/lifetimes/unusual-rib-combinations.rs | 0 .../ui/lifetimes/unusual-rib-combinations.stderr | 0 .../ui/limits/huge-array-simple-32.rs | 0 .../ui/limits/huge-array-simple-32.stderr | 0 .../ui/limits/huge-array-simple-64.rs | 0 .../ui/limits/huge-array-simple-64.stderr | 0 {src/test => tests}/ui/limits/huge-array.rs | 0 {src/test => tests}/ui/limits/huge-array.stderr | 0 {src/test => tests}/ui/limits/huge-enum.rs | 0 {src/test => tests}/ui/limits/huge-enum.stderr | 0 {src/test => tests}/ui/limits/huge-struct.rs | 0 {src/test => tests}/ui/limits/huge-struct.stderr | 0 {src/test => tests}/ui/limits/issue-15919-32.rs | 0 {src/test => tests}/ui/limits/issue-15919-32.stderr | 0 {src/test => tests}/ui/limits/issue-15919-64.rs | 0 {src/test => tests}/ui/limits/issue-15919-64.stderr | 0 {src/test => tests}/ui/limits/issue-17913.rs | 0 {src/test => tests}/ui/limits/issue-17913.stderr | 0 {src/test => tests}/ui/limits/issue-55878.rs | 0 {src/test => tests}/ui/limits/issue-55878.stderr | 0 {src/test => tests}/ui/limits/issue-56762.rs | 0 {src/test => tests}/ui/limits/issue-56762.stderr | 0 .../limits/issue-69485-var-size-diffs-too-large.rs | 0 .../issue-69485-var-size-diffs-too-large.stderr | 0 {src/test => tests}/ui/limits/issue-75158-64.rs | 0 {src/test => tests}/ui/limits/issue-75158-64.stderr | 0 {src/test => tests}/ui/link-section.rs | 0 .../auxiliary/def_colliding_external.rs | 0 .../ui/linkage-attr/auxiliary/def_external.rs | 0 .../auxiliary/link-cfg-works-transitive-dylib.rs | 0 .../auxiliary/link-cfg-works-transitive-rlib.rs | 0 .../ui/linkage-attr/auxiliary/linkage1.rs | 0 {src/test => tests}/ui/linkage-attr/issue-10755.rs | 0 .../ui/linkage-attr/link-attr-validation-early.rs | 0 .../linkage-attr/link-attr-validation-early.stderr | 0 .../ui/linkage-attr/link-attr-validation-late.rs | 0 .../linkage-attr/link-attr-validation-late.stderr | 0 .../ui/linkage-attr/link-cfg-works.rs | 0 ...inkage-detect-extern-generated-name-collision.rs | 0 ...ge-detect-extern-generated-name-collision.stderr | 0 ...linkage-detect-local-generated-name-collision.rs | 0 ...age-detect-local-generated-name-collision.stderr | 0 .../ui/linkage-attr/linkage-import.rs | 0 {src/test => tests}/ui/linkage-attr/linkage1.rs | 0 {src/test => tests}/ui/linkage-attr/linkage2.rs | 0 {src/test => tests}/ui/linkage-attr/linkage2.stderr | 0 {src/test => tests}/ui/linkage-attr/linkage3.rs | 0 {src/test => tests}/ui/linkage-attr/linkage3.stderr | 0 {src/test => tests}/ui/linkage-attr/linkage4.rs | 0 {src/test => tests}/ui/linkage-attr/linkage4.stderr | 0 .../ui/lint-unknown-lints-at-crate-level.rs | 0 {src/test => tests}/ui/lint/auxiliary/add-impl.rs | 0 .../ui/lint/auxiliary/external_extern_fn.rs | 0 .../ui/lint/auxiliary/inherited_stability.rs | 0 .../ui/lint/auxiliary/lint_output_format.rs | 0 .../ui/lint/auxiliary/lint_stability.rs | 0 .../ui/lint/auxiliary/lint_stability_fields.rs | 0 .../ui/lint/auxiliary/lints-in-foreign-macros.rs | 0 .../ui/lint/auxiliary/stability-cfg2.rs | 0 .../ui/lint/auxiliary/stability_cfg1.rs | 0 .../ui/lint/auxiliary/stability_cfg2.rs | 0 .../ui/lint/auxiliary/trivial-cast-ice.rs | 0 .../unaligned_references_external_crate.rs | 0 {src/test => tests}/ui/lint/bad-lint-cap.rs | 0 {src/test => tests}/ui/lint/bad-lint-cap.stderr | 0 {src/test => tests}/ui/lint/bad-lint-cap2.rs | 0 {src/test => tests}/ui/lint/bad-lint-cap2.stderr | 0 {src/test => tests}/ui/lint/bad-lint-cap3.rs | 0 {src/test => tests}/ui/lint/bad-lint-cap3.stderr | 0 .../ui/lint/bare-trait-objects-path.rs | 0 .../ui/lint/bare-trait-objects-path.stderr | 0 .../ui/lint/clashing-extern-fn-recursion.rs | 0 .../ui/lint/clashing-extern-fn-wasm.rs | 0 {src/test => tests}/ui/lint/clashing-extern-fn.rs | 0 .../ui/lint/clashing-extern-fn.stderr | 0 .../ui/lint/cli-lint-override.forbid_warn.stderr | 0 .../lint/cli-lint-override.force_warn_deny.stderr | 0 {src/test => tests}/ui/lint/cli-lint-override.rs | 0 .../ui/lint/cli-lint-override.warn_deny.stderr | 0 .../ui/lint/cli-unknown-force-warn.rs | 0 .../ui/lint/cli-unknown-force-warn.stderr | 0 .../ui/lint/command-line-lint-group-allow.rs | 0 .../ui/lint/command-line-lint-group-deny.rs | 0 .../ui/lint/command-line-lint-group-deny.stderr | 0 .../ui/lint/command-line-lint-group-forbid.rs | 0 .../ui/lint/command-line-lint-group-forbid.stderr | 0 .../ui/lint/command-line-lint-group-warn.rs | 0 .../ui/lint/command-line-lint-group-warn.stderr | 0 .../ui/lint/command-line-register-lint-tool.rs | 0 .../lint/command-line-register-unknown-lint-tool.rs | 0 .../command-line-register-unknown-lint-tool.stderr | 0 .../test => tests}/ui/lint/crate_level_only_lint.rs | 0 .../ui/lint/crate_level_only_lint.stderr | 0 .../ui/lint/dead-code/alias-in-pat.rs | 0 .../ui/lint/dead-code/anon-const-in-pat.rs | 0 .../ui/lint/dead-code/associated-type.rs | 0 {src/test => tests}/ui/lint/dead-code/basic.rs | 0 {src/test => tests}/ui/lint/dead-code/basic.stderr | 0 .../ui/lint/dead-code/closure-bang.rs | 0 .../ui/lint/dead-code/const-and-self.rs | 0 .../ui/lint/dead-code/const-and-self.stderr | 0 .../ui/lint/dead-code/empty-unused-enum.rs | 0 .../ui/lint/dead-code/empty-unused-enum.stderr | 0 .../ui/lint/dead-code/empty-unused-public-enum.rs | 0 .../ui/lint/dead-code/enum-variants.rs | 0 {src/test => tests}/ui/lint/dead-code/impl-trait.rs | 0 .../ui/lint/dead-code/impl-trait.stderr | 0 .../ui/lint/dead-code/issue-68408-false-positive.rs | 0 .../ui/lint/dead-code/issue-85071-2.rs | 0 .../ui/lint/dead-code/issue-85071-2.stderr | 0 .../test => tests}/ui/lint/dead-code/issue-85071.rs | 0 .../ui/lint/dead-code/issue-85071.stderr | 0 .../test => tests}/ui/lint/dead-code/issue-85255.rs | 0 .../ui/lint/dead-code/issue-85255.stderr | 0 .../ui/lint/dead-code/leading-underscore.rs | 0 .../ui/lint/dead-code/lint-dead-code-1.rs | 0 .../ui/lint/dead-code/lint-dead-code-1.stderr | 0 .../ui/lint/dead-code/lint-dead-code-2.rs | 0 .../ui/lint/dead-code/lint-dead-code-2.stderr | 0 .../ui/lint/dead-code/lint-dead-code-3.rs | 0 .../ui/lint/dead-code/lint-dead-code-3.stderr | 0 .../ui/lint/dead-code/lint-dead-code-4.rs | 0 .../ui/lint/dead-code/lint-dead-code-4.stderr | 0 .../ui/lint/dead-code/lint-dead-code-5.rs | 0 .../ui/lint/dead-code/lint-dead-code-5.stderr | 0 .../ui/lint/dead-code/lint-dead-code-6.rs | 0 .../ui/lint/dead-code/lint-dead-code-6.stderr | 0 .../multiple-dead-codes-in-the-same-struct.rs | 0 .../multiple-dead-codes-in-the-same-struct.stderr | 0 .../ui/lint/dead-code/newline-span.rs | 0 .../ui/lint/dead-code/newline-span.stderr | 0 .../test => tests}/ui/lint/dead-code/self-assign.rs | 0 .../ui/lint/dead-code/self-assign.stderr | 0 {src/test => tests}/ui/lint/dead-code/trait-impl.rs | 0 .../ui/lint/dead-code/tuple-struct-field.rs | 0 .../ui/lint/dead-code/tuple-struct-field.stderr | 0 {src/test => tests}/ui/lint/dead-code/type-alias.rs | 0 .../ui/lint/dead-code/type-alias.stderr | 0 .../ui/lint/dead-code/type-in-foreign.rs | 0 .../test => tests}/ui/lint/dead-code/unused-enum.rs | 0 .../ui/lint/dead-code/unused-enum.stderr | 0 .../ui/lint/dead-code/unused-struct-variant.rs | 0 .../ui/lint/dead-code/unused-struct-variant.stderr | 0 .../ui/lint/dead-code/unused-variant-pub.rs | 0 .../ui/lint/dead-code/unused-variant.rs | 0 .../ui/lint/dead-code/unused-variant.stderr | 0 .../ui/lint/dead-code/with-core-crate.rs | 0 .../ui/lint/dead-code/with-core-crate.stderr | 0 {src/test => tests}/ui/lint/dead-code/with-impl.rs | 0 .../ui/lint/deny-overflowing-literals.rs | 0 .../ui/lint/deny-overflowing-literals.stderr | 0 .../test => tests}/ui/lint/empty-lint-attributes.rs | 0 .../ui/lint/enable-unstable-lib-feature.rs | 0 .../ui/lint/enable-unstable-lib-feature.stderr | 0 .../ui/lint/expansion-time-include.rs | 0 {src/test => tests}/ui/lint/expansion-time.rs | 0 {src/test => tests}/ui/lint/expansion-time.stderr | 0 .../test => tests}/ui/lint/expr_attr_paren_order.rs | 0 .../ui/lint/expr_attr_paren_order.stderr | 0 {src/test => tests}/ui/lint/fn_must_use.rs | 0 {src/test => tests}/ui/lint/fn_must_use.stderr | 0 .../ui/lint/for_loop_over_fallibles.rs | 0 .../ui/lint/for_loop_over_fallibles.stderr | 0 {src/test => tests}/ui/lint/forbid-error-capped.rs | 0 {src/test => tests}/ui/lint/forbid-group-group-1.rs | 0 .../ui/lint/forbid-group-group-1.stderr | 0 {src/test => tests}/ui/lint/forbid-group-group-2.rs | 0 .../ui/lint/forbid-group-group-2.stderr | 0 {src/test => tests}/ui/lint/forbid-group-member.rs | 0 .../ui/lint/forbid-group-member.stderr | 0 {src/test => tests}/ui/lint/forbid-member-group.rs | 0 .../ui/lint/forbid-member-group.stderr | 0 .../ui/lint/force-warn/allow-warnings.rs | 0 .../ui/lint/force-warn/allow-warnings.stderr | 0 .../ui/lint/force-warn/allowed-by-default-lint.rs | 0 .../lint/force-warn/allowed-by-default-lint.stderr | 0 .../force-warn/allowed-cli-deny-by-default-lint.rs | 0 .../allowed-cli-deny-by-default-lint.stderr | 0 .../lint/force-warn/allowed-deny-by-default-lint.rs | 0 .../force-warn/allowed-deny-by-default-lint.stderr | 0 .../allowed-group-warn-by-default-lint.rs | 0 .../allowed-group-warn-by-default-lint.stderr | 0 .../lint/force-warn/allowed-warn-by-default-lint.rs | 0 .../force-warn/allowed-warn-by-default-lint.stderr | 0 .../ui/lint/force-warn/cap-lints-allow.rs | 0 .../ui/lint/force-warn/cap-lints-allow.stderr | 0 .../cap-lints-warn-allowed-warn-by-default-lint.rs | 0 ...p-lints-warn-allowed-warn-by-default-lint.stderr | 0 .../ui/lint/force-warn/deny-by-default-lint.rs | 0 .../ui/lint/force-warn/deny-by-default-lint.stderr | 0 .../ui/lint/force-warn/lint-group-allow-warnings.rs | 0 .../force-warn/lint-group-allow-warnings.stderr | 0 .../lint-group-allowed-cli-warn-by-default-lint.rs | 0 ...nt-group-allowed-cli-warn-by-default-lint.stderr | 0 .../force-warn/lint-group-allowed-lint-group.rs | 0 .../force-warn/lint-group-allowed-lint-group.stderr | 0 .../lint-group-allowed-warn-by-default-lint.rs | 0 .../lint-group-allowed-warn-by-default-lint.stderr | 0 .../force-warn/warn-by-default-lint-two-modules.rs | 0 .../warn-by-default-lint-two-modules.stderr | 0 .../ui/lint/force-warn/warnings-lint-group.rs | 0 .../ui/lint/force-warn/warnings-lint-group.stderr | 0 .../ui/lint/function-item-references.rs | 0 .../ui/lint/function-item-references.stderr | 0 {src/test => tests}/ui/lint/future-incompat-test.rs | 0 .../ui/lint/future-incompat-test.stderr | 0 .../ui/lint/inclusive-range-pattern-syntax.fixed | 0 .../ui/lint/inclusive-range-pattern-syntax.rs | 0 .../ui/lint/inclusive-range-pattern-syntax.stderr | 0 {src/test => tests}/ui/lint/inert-attr-macro.rs | 0 {src/test => tests}/ui/lint/inert-attr-macro.stderr | 0 .../ui/lint/inline-trait-and-foreign-items.rs | 0 .../ui/lint/inline-trait-and-foreign-items.stderr | 0 {src/test => tests}/ui/lint/invalid_value.rs | 0 {src/test => tests}/ui/lint/invalid_value.stderr | 0 {src/test => tests}/ui/lint/issue-101284.rs | 0 {src/test => tests}/ui/lint/issue-102705.rs | 0 {src/test => tests}/ui/lint/issue-103317.fixed | 0 {src/test => tests}/ui/lint/issue-103317.rs | 0 {src/test => tests}/ui/lint/issue-103317.stderr | 0 .../ui/lint/issue-103435-extra-parentheses.fixed | 0 .../ui/lint/issue-103435-extra-parentheses.rs | 0 .../ui/lint/issue-103435-extra-parentheses.stderr | 0 {src/test => tests}/ui/lint/issue-104392.rs | 0 {src/test => tests}/ui/lint/issue-104392.stderr | 0 {src/test => tests}/ui/lint/issue-104897.rs | 0 {src/test => tests}/ui/lint/issue-104897.stderr | 0 {src/test => tests}/ui/lint/issue-14309.rs | 0 {src/test => tests}/ui/lint/issue-14309.stderr | 0 {src/test => tests}/ui/lint/issue-14837.rs | 0 .../ui/lint/issue-17718-const-naming.rs | 0 .../ui/lint/issue-17718-const-naming.stderr | 0 {src/test => tests}/ui/lint/issue-1866.rs | 0 {src/test => tests}/ui/lint/issue-1866.stderr | 0 {src/test => tests}/ui/lint/issue-20343.rs | 0 {src/test => tests}/ui/lint/issue-30302.rs | 0 {src/test => tests}/ui/lint/issue-30302.stderr | 0 .../ui/lint/issue-31924-non-snake-ffi.rs | 0 {src/test => tests}/ui/lint/issue-34798.rs | 0 {src/test => tests}/ui/lint/issue-35075.rs | 0 {src/test => tests}/ui/lint/issue-35075.stderr | 0 ...sue-47775-nested-macro-unnecessary-parens-arg.rs | 0 .../lint/issue-54099-camel-case-underscore-types.rs | 0 {src/test => tests}/ui/lint/issue-57410-1.rs | 0 {src/test => tests}/ui/lint/issue-57410.rs | 0 {src/test => tests}/ui/lint/issue-63364.rs | 0 {src/test => tests}/ui/lint/issue-63364.stderr | 0 ...ue-66362-no-snake-case-warning-for-field-puns.rs | 0 ...6362-no-snake-case-warning-for-field-puns.stderr | 0 ...ssue-70819-dont-override-forbid-in-same-scope.rs | 0 ...-70819-dont-override-forbid-in-same-scope.stderr | 0 {src/test => tests}/ui/lint/issue-79546-fuel-ice.rs | 0 {src/test => tests}/ui/lint/issue-79744.rs | 0 {src/test => tests}/ui/lint/issue-79744.stderr | 0 {src/test => tests}/ui/lint/issue-80988.rs | 0 {src/test => tests}/ui/lint/issue-80988.stderr | 0 {src/test => tests}/ui/lint/issue-81218.rs | 0 {src/test => tests}/ui/lint/issue-83477.rs | 0 {src/test => tests}/ui/lint/issue-83477.stderr | 0 .../ui/lint/issue-86600-lint-twice.rs | 0 .../ui/lint/issue-86600-lint-twice.stderr | 0 .../ui/lint/issue-87274-paren-parent.rs | 0 .../ui/lint/issue-87274-paren-parent.stderr | 0 {src/test => tests}/ui/lint/issue-89469.rs | 0 ...llow-text-direction-codepoint-in-comment-lint.rs | 0 {src/test => tests}/ui/lint/issue-97094.rs | 0 {src/test => tests}/ui/lint/issue-97094.stderr | 0 {src/test => tests}/ui/lint/issue-99387.rs | 0 .../ui/lint/known-tool-in-submodule/root.rs | 0 .../ui/lint/known-tool-in-submodule/submodule.rs | 0 .../ui/lint/let_underscore/let_underscore_drop.rs | 0 .../lint/let_underscore/let_underscore_drop.stderr | 0 .../ui/lint/let_underscore/let_underscore_lock.rs | 0 .../lint/let_underscore/let_underscore_lock.stderr | 0 .../ui/lint/lint-attr-everywhere-early.rs | 0 .../ui/lint/lint-attr-everywhere-early.stderr | 0 .../ui/lint/lint-attr-everywhere-late.rs | 0 .../ui/lint/lint-attr-everywhere-late.stderr | 0 .../ui/lint/lint-attr-non-item-node.rs | 0 .../ui/lint/lint-attr-non-item-node.stderr | 0 {src/test => tests}/ui/lint/lint-cap.rs | 0 {src/test => tests}/ui/lint/lint-change-warnings.rs | 0 .../ui/lint/lint-change-warnings.stderr | 0 .../ui/lint/lint-const-item-mutation.rs | 0 .../ui/lint/lint-const-item-mutation.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-66202.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-73249-1.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-73249-2.rs | 0 .../ui/lint/lint-ctypes-73249-2.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-73249-3.rs | 0 .../ui/lint/lint-ctypes-73249-3.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-73249-4.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-73249-5.rs | 0 .../ui/lint/lint-ctypes-73249-5.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-73249.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-73251-1.rs | 0 .../ui/lint/lint-ctypes-73251-1.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-73251-2.rs | 0 .../ui/lint/lint-ctypes-73251-2.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-73251.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-73747.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-enum.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-enum.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes-fn.rs | 0 {src/test => tests}/ui/lint/lint-ctypes-fn.stderr | 0 {src/test => tests}/ui/lint/lint-ctypes.rs | 0 {src/test => tests}/ui/lint/lint-ctypes.stderr | 0 {src/test => tests}/ui/lint/lint-deref-nullptr.rs | 0 .../ui/lint/lint-deref-nullptr.stderr | 0 .../lint-directives-on-use-items-issue-10534.rs | 0 .../lint-directives-on-use-items-issue-10534.stderr | 0 .../ui/lint/lint-enum-intrinsics-non-enums.rs | 0 .../ui/lint/lint-enum-intrinsics-non-enums.stderr | 0 .../ui/lint/lint-exceeding-bitshifts.noopt.stderr | 0 .../ui/lint/lint-exceeding-bitshifts.opt.stderr | 0 ...eeding-bitshifts.opt_with_overflow_checks.stderr | 0 .../ui/lint/lint-exceeding-bitshifts.rs | 0 .../ui/lint/lint-expr-stmt-attrs-for-early-lints.rs | 0 {src/test => tests}/ui/lint/lint-forbid-attr.rs | 0 {src/test => tests}/ui/lint/lint-forbid-attr.stderr | 0 {src/test => tests}/ui/lint/lint-forbid-cmdline.rs | 0 .../ui/lint/lint-forbid-cmdline.stderr | 0 .../ui/lint/lint-forbid-internal-unsafe.rs | 0 .../ui/lint/lint-forbid-internal-unsafe.stderr | 0 .../ui/lint/lint-group-nonstandard-style.rs | 0 .../ui/lint/lint-group-nonstandard-style.stderr | 0 {src/test => tests}/ui/lint/lint-impl-fn.rs | 0 {src/test => tests}/ui/lint/lint-impl-fn.stderr | 0 .../ui/lint/lint-incoherent-auto-trait-objects.rs | 0 .../lint/lint-incoherent-auto-trait-objects.stderr | 0 .../ui/lint/lint-invalid-atomic-ordering-bool.rs | 0 .../lint/lint-invalid-atomic-ordering-bool.stderr | 0 .../lint-invalid-atomic-ordering-exchange-weak.rs | 0 ...int-invalid-atomic-ordering-exchange-weak.stderr | 0 .../lint/lint-invalid-atomic-ordering-exchange.rs | 0 .../lint-invalid-atomic-ordering-exchange.stderr | 0 .../lint-invalid-atomic-ordering-false-positive.rs | 0 .../ui/lint/lint-invalid-atomic-ordering-fence.rs | 0 .../lint/lint-invalid-atomic-ordering-fence.stderr | 0 .../lint-invalid-atomic-ordering-fetch-update.rs | 0 ...lint-invalid-atomic-ordering-fetch-update.stderr | 0 .../ui/lint/lint-invalid-atomic-ordering-int.rs | 0 .../ui/lint/lint-invalid-atomic-ordering-int.stderr | 0 .../ui/lint/lint-invalid-atomic-ordering-ptr.rs | 0 .../ui/lint/lint-invalid-atomic-ordering-ptr.stderr | 0 .../ui/lint/lint-invalid-atomic-ordering-uint.rs | 0 .../lint/lint-invalid-atomic-ordering-uint.stderr | 0 .../ui/lint/lint-level-macro-def-mod.rs | 0 {src/test => tests}/ui/lint/lint-level-macro-def.rs | 0 .../lint-lowercase-static-const-pattern-rename.rs | 0 .../ui/lint/lint-lowercase-static-const-pattern.rs | 0 .../lint/lint-lowercase-static-const-pattern.stderr | 0 {src/test => tests}/ui/lint/lint-malformed.rs | 0 {src/test => tests}/ui/lint/lint-malformed.stderr | 0 {src/test => tests}/ui/lint/lint-match-arms.rs | 0 {src/test => tests}/ui/lint/lint-match-arms.stderr | 0 {src/test => tests}/ui/lint/lint-misplaced-attr.rs | 0 .../ui/lint/lint-misplaced-attr.stderr | 0 .../lint/lint-missing-copy-implementations-allow.rs | 0 .../ui/lint/lint-missing-copy-implementations.rs | 0 .../lint/lint-missing-copy-implementations.stderr | 0 {src/test => tests}/ui/lint/lint-missing-doc.rs | 0 {src/test => tests}/ui/lint/lint-missing-doc.stderr | 0 .../ui/lint/lint-non-camel-case-types.rs | 0 .../ui/lint/lint-non-camel-case-types.stderr | 0 .../ui/lint/lint-non-camel-case-variant.rs | 0 ...lint-non-camel-case-with-trailing-underscores.rs | 0 .../ui/lint/lint-non-snake-case-crate-2.rs | 0 .../ui/lint/lint-non-snake-case-crate-2.stderr | 0 .../ui/lint/lint-non-snake-case-crate.rs | 0 .../ui/lint/lint-non-snake-case-crate.stderr | 0 .../ui/lint/lint-non-snake-case-functions.rs | 0 .../ui/lint/lint-non-snake-case-functions.stderr | 0 ...on-snake-case-identifiers-suggestion-reserved.rs | 0 ...nake-case-identifiers-suggestion-reserved.stderr | 0 .../ui/lint/lint-non-snake-case-lifetimes.rs | 0 .../ui/lint/lint-non-snake-case-lifetimes.stderr | 0 .../ui/lint/lint-non-snake-case-modules.rs | 0 .../ui/lint/lint-non-snake-case-modules.stderr | 0 .../lint-non-snake-case-no-lowercase-equivalent.rs | 0 .../ui/lint/lint-non-uppercase-associated-const.rs | 0 .../lint/lint-non-uppercase-associated-const.stderr | 0 .../ui/lint/lint-non-uppercase-statics.rs | 0 .../ui/lint/lint-non-uppercase-statics.stderr | 0 .../ui/lint/lint-nonstandard-style-unicode-1.rs | 0 .../ui/lint/lint-nonstandard-style-unicode-1.stderr | 0 .../ui/lint/lint-nonstandard-style-unicode-2.rs | 0 .../ui/lint/lint-nonstandard-style-unicode-2.stderr | 0 .../ui/lint/lint-nonstandard-style-unicode-3.rs | 0 .../ui/lint/lint-nonstandard-style-unicode-3.stderr | 0 {src/test => tests}/ui/lint/lint-output-format-2.rs | 0 .../ui/lint/lint-output-format-2.stderr | 0 {src/test => tests}/ui/lint/lint-output-format.rs | 0 .../ui/lint/lint-output-format.stderr | 0 .../ui/lint/lint-owned-heap-memory.rs | 0 .../ui/lint/lint-owned-heap-memory.stderr | 0 .../ui/lint/lint-pre-expansion-extern-module.rs | 0 .../ui/lint/lint-pre-expansion-extern-module.stderr | 0 .../ui/lint/lint-pub-unreachable-for-nested-glob.rs | 0 {src/test => tests}/ui/lint/lint-qualification.rs | 0 .../ui/lint/lint-qualification.stderr | 0 .../ui/lint/lint-range-endpoint-overflow.rs | 0 .../ui/lint/lint-range-endpoint-overflow.stderr | 0 {src/test => tests}/ui/lint/lint-removed-allow.rs | 0 .../ui/lint/lint-removed-allow.stderr | 0 {src/test => tests}/ui/lint/lint-removed-cmdline.rs | 0 .../ui/lint/lint-removed-cmdline.stderr | 0 {src/test => tests}/ui/lint/lint-removed.rs | 0 {src/test => tests}/ui/lint/lint-removed.stderr | 0 {src/test => tests}/ui/lint/lint-renamed-allow.rs | 0 .../ui/lint/lint-renamed-allow.stderr | 0 {src/test => tests}/ui/lint/lint-renamed-cmdline.rs | 0 .../ui/lint/lint-renamed-cmdline.stderr | 0 {src/test => tests}/ui/lint/lint-renamed.rs | 0 {src/test => tests}/ui/lint/lint-renamed.stderr | 0 .../ui/lint/lint-shorthand-field.fixed | 0 {src/test => tests}/ui/lint/lint-shorthand-field.rs | 0 .../ui/lint/lint-shorthand-field.stderr | 0 {src/test => tests}/ui/lint/lint-stability-2.rs | 0 {src/test => tests}/ui/lint/lint-stability-2.stderr | 0 .../ui/lint/lint-stability-deprecated.rs | 0 .../ui/lint/lint-stability-deprecated.stderr | 0 .../ui/lint/lint-stability-fields-deprecated.rs | 0 .../ui/lint/lint-stability-fields-deprecated.stderr | 0 .../test => tests}/ui/lint/lint-stability-fields.rs | 0 .../ui/lint/lint-stability-fields.stderr | 0 {src/test => tests}/ui/lint/lint-stability.rs | 0 {src/test => tests}/ui/lint/lint-stability.stderr | 0 {src/test => tests}/ui/lint/lint-stability2.rs | 0 {src/test => tests}/ui/lint/lint-stability2.stderr | 0 {src/test => tests}/ui/lint/lint-stability3.rs | 0 {src/test => tests}/ui/lint/lint-stability3.stderr | 0 .../ui/lint/lint-strict-provenance-fuzzy-casts.rs | 0 .../lint/lint-strict-provenance-fuzzy-casts.stderr | 0 .../ui/lint/lint-strict-provenance-lossy-casts.rs | 0 .../lint/lint-strict-provenance-lossy-casts.stderr | 0 .../ui/lint/lint-temporary-cstring-as-param.rs | 0 .../ui/lint/lint-temporary-cstring-as-param.stderr | 0 .../ui/lint/lint-temporary-cstring-as-ptr.rs | 0 .../ui/lint/lint-temporary-cstring-as-ptr.stderr | 0 {src/test => tests}/ui/lint/lint-type-limits.rs | 0 {src/test => tests}/ui/lint/lint-type-limits.stderr | 0 {src/test => tests}/ui/lint/lint-type-limits2.rs | 0 .../test => tests}/ui/lint/lint-type-limits2.stderr | 0 {src/test => tests}/ui/lint/lint-type-limits3.rs | 0 .../test => tests}/ui/lint/lint-type-limits3.stderr | 0 {src/test => tests}/ui/lint/lint-type-overflow.rs | 0 .../ui/lint/lint-type-overflow.stderr | 0 {src/test => tests}/ui/lint/lint-type-overflow2.rs | 0 .../ui/lint/lint-type-overflow2.stderr | 0 .../ui/lint/lint-unconditional-recursion.rs | 0 .../ui/lint/lint-unconditional-recursion.stderr | 0 .../ui/lint/lint-unexported-no-mangle.rs | 0 .../ui/lint/lint-unexported-no-mangle.stderr | 0 .../ui/lint/lint-unknown-feature-default.rs | 0 {src/test => tests}/ui/lint/lint-unknown-feature.rs | 0 .../ui/lint/lint-unknown-lint-cmdline.rs | 0 .../ui/lint/lint-unknown-lint-cmdline.stderr | 0 {src/test => tests}/ui/lint/lint-unknown-lint.rs | 0 .../test => tests}/ui/lint/lint-unknown-lint.stderr | 0 .../ui/lint/lint-unnecessary-import-braces.rs | 0 .../ui/lint/lint-unnecessary-import-braces.stderr | 0 .../ui/lint/lint-unnecessary-parens.fixed | 0 .../ui/lint/lint-unnecessary-parens.rs | 0 .../ui/lint/lint-unnecessary-parens.stderr | 0 {src/test => tests}/ui/lint/lint-unsafe-code.rs | 0 {src/test => tests}/ui/lint/lint-unsafe-code.stderr | 0 .../ui/lint/lint-uppercase-variables.rs | 0 .../ui/lint/lint-uppercase-variables.stderr | 0 .../ui/lint/lint_pre_expansion_extern_module_aux.rs | 0 .../ui/lint/lints-in-foreign-macros.rs | 0 .../ui/lint/lints-in-foreign-macros.stderr | 0 .../ui/lint/missing-doc-private-macro.rs | 0 .../ui/lint/missing-doc-private-macro.stderr | 0 .../ui/lint/must_not_suspend/boxed.rs | 0 .../ui/lint/must_not_suspend/boxed.stderr | 0 .../ui/lint/must_not_suspend/dedup.rs | 0 .../ui/lint/must_not_suspend/dedup.stderr | 0 .../feature-gate-must_not_suspend.rs | 0 .../feature-gate-must_not_suspend.stderr | 0 .../ui/lint/must_not_suspend/gated.rs | 0 .../ui/lint/must_not_suspend/gated.stderr | 0 .../ui/lint/must_not_suspend/generic.rs | 0 .../ui/lint/must_not_suspend/handled.rs | 0 .../ui/lint/must_not_suspend/issue-89562.rs | 0 .../ui/lint/must_not_suspend/mutex.rs | 0 .../ui/lint/must_not_suspend/mutex.stderr | 0 .../ui/lint/must_not_suspend/other_items.rs | 0 .../ui/lint/must_not_suspend/other_items.stderr | 0 .../ui/lint/must_not_suspend/ref-drop-tracking.rs | 0 .../lint/must_not_suspend/ref-drop-tracking.stderr | 0 .../lint/must_not_suspend/ref.drop_tracking.stderr | 0 .../must_not_suspend/ref.no_drop_tracking.stderr | 0 {src/test => tests}/ui/lint/must_not_suspend/ref.rs | 0 .../ui/lint/must_not_suspend/return.rs | 0 .../ui/lint/must_not_suspend/return.stderr | 0 .../ui/lint/must_not_suspend/trait.rs | 0 .../ui/lint/must_not_suspend/trait.stderr | 0 .../ui/lint/must_not_suspend/tuple-mismatch.rs | 0 .../ui/lint/must_not_suspend/tuple-mismatch.stderr | 0 .../test => tests}/ui/lint/must_not_suspend/unit.rs | 0 .../ui/lint/must_not_suspend/unit.stderr | 0 .../test => tests}/ui/lint/must_not_suspend/warn.rs | 0 .../ui/lint/must_not_suspend/warn.stderr | 0 {src/test => tests}/ui/lint/no-coverage.rs | 0 {src/test => tests}/ui/lint/no-coverage.stderr | 0 {src/test => tests}/ui/lint/noop-method-call.rs | 0 {src/test => tests}/ui/lint/noop-method-call.stderr | 0 {src/test => tests}/ui/lint/not_found.rs | 0 {src/test => tests}/ui/lint/not_found.stderr | 0 .../ui/lint/opaque-ty-ffi-normalization-cycle.rs | 0 .../lint/opaque-ty-ffi-normalization-cycle.stderr | 0 {src/test => tests}/ui/lint/opaque-ty-ffi-unsafe.rs | 0 .../ui/lint/opaque-ty-ffi-unsafe.stderr | 0 {src/test => tests}/ui/lint/outer-forbid.rs | 0 {src/test => tests}/ui/lint/outer-forbid.stderr | 0 {src/test => tests}/ui/lint/reasons-erroneous.rs | 0 .../test => tests}/ui/lint/reasons-erroneous.stderr | 0 {src/test => tests}/ui/lint/reasons-forbidden.rs | 0 .../test => tests}/ui/lint/reasons-forbidden.stderr | 0 {src/test => tests}/ui/lint/reasons.rs | 0 {src/test => tests}/ui/lint/reasons.stderr | 0 {src/test => tests}/ui/lint/recommend-literal.rs | 0 .../test => tests}/ui/lint/recommend-literal.stderr | 0 .../auxiliary/redundant-semi-proc-macro-def.rs | 0 .../ui/lint/redundant-semicolon/item-stmt-semi.rs | 0 .../lint/redundant-semicolon/item-stmt-semi.stderr | 0 .../redundant-semi-proc-macro.rs | 0 .../redundant-semi-proc-macro.stderr | 0 {src/test => tests}/ui/lint/register-tool-lint.rs | 0 .../ui/lint/register-tool-lint.stderr | 0 .../ui/lint/renamed-lints-still-apply.rs | 0 .../ui/lint/renamed-lints-still-apply.stderr | 0 .../avoid_delayed_good_path_ice.rs | 0 .../catch_multiple_lint_triggers.rs | 0 .../lint/rfc-2383-lint-reason/crate_level_expect.rs | 0 .../rfc-2383-lint-reason/crate_level_expect.stderr | 0 .../rfc-2383-lint-reason/expect_inside_macro.rs | 0 .../rfc-2383-lint-reason/expect_lint_from_macro.rs | 0 .../expect_lint_from_macro.stderr | 0 .../expect_missing_feature_gate.rs | 0 .../expect_missing_feature_gate.stderr | 0 .../rfc-2383-lint-reason/expect_multiple_lints.rs | 0 .../expect_multiple_lints.stderr | 0 .../expect_nested_lint_levels.rs | 0 .../expect_nested_lint_levels.stderr | 0 .../rfc-2383-lint-reason/expect_on_fn_params.rs | 0 .../rfc-2383-lint-reason/expect_on_fn_params.stderr | 0 .../expect_tool_lint_rfc_2383.rs | 0 .../expect_tool_lint_rfc_2383.stderr | 0 .../expect_unfulfilled_expectation.rs | 0 .../expect_unfulfilled_expectation.stderr | 0 .../lint/rfc-2383-lint-reason/expect_with_forbid.rs | 0 .../rfc-2383-lint-reason/expect_with_forbid.stderr | 0 .../lint/rfc-2383-lint-reason/expect_with_reason.rs | 0 .../rfc-2383-lint-reason/expect_with_reason.stderr | 0 .../force_warn_expected_lints_fulfilled.rs | 0 .../force_warn_expected_lints_fulfilled.stderr | 0 .../force_warn_expected_lints_unfulfilled.rs | 0 .../force_warn_expected_lints_unfulfilled.stderr | 0 .../fulfilled_expectation_early_lints.rs | 0 .../fulfilled_expectation_late_lints.rs | 0 .../lint-attribute-only-with-reason.rs | 0 .../lint-attribute-only-with-reason.stderr | 0 .../rfc-2383-lint-reason/multiple_expect_attrs.rs | 0 .../multiple_expect_attrs.stderr | 0 .../no_ice_for_partial_compiler_runs.rs | 0 .../no_ice_for_partial_compiler_runs.stdout | 0 .../lint-confusable-idents.rs | 0 .../lint-confusable-idents.stderr | 0 .../lint-mixed-script-confusables-2.rs | 0 .../lint-mixed-script-confusables.rs | 0 .../lint-mixed-script-confusables.stderr | 0 .../lint-non-ascii-idents.rs | 0 .../lint-non-ascii-idents.stderr | 0 .../lint-uncommon-codepoints.rs | 0 .../lint-uncommon-codepoints.stderr | 0 {src/test => tests}/ui/lint/rustdoc-group.rs | 0 {src/test => tests}/ui/lint/rustdoc-group.stderr | 0 {src/test => tests}/ui/lint/rustdoc-renamed.rs | 0 {src/test => tests}/ui/lint/rustdoc-renamed.stderr | 0 .../auxiliary/foreign-crate.rs | 0 .../foreign-crate.rs | 0 .../semicolon-in-expressions-from-macros.rs | 0 .../semicolon-in-expressions-from-macros.stderr | 0 .../warn-semicolon-in-expressions-from-macros.rs | 0 ...warn-semicolon-in-expressions-from-macros.stderr | 0 .../ui/lint/special-upper-lower-cases.rs | 0 .../ui/lint/special-upper-lower-cases.stderr | 0 {src/test => tests}/ui/lint/suggestions.fixed | 0 {src/test => tests}/ui/lint/suggestions.rs | 0 {src/test => tests}/ui/lint/suggestions.stderr | 0 .../test-allow-dead-extern-static-no-warning.rs | 0 {src/test => tests}/ui/lint/test-inner-fn.rs | 0 {src/test => tests}/ui/lint/test-inner-fn.stderr | 0 {src/test => tests}/ui/lint/trivial-cast-ice.rs | 0 .../lint/trivial-casts-featuring-type-ascription.rs | 0 .../trivial-casts-featuring-type-ascription.stderr | 0 {src/test => tests}/ui/lint/trivial-casts.rs | 0 {src/test => tests}/ui/lint/trivial-casts.stderr | 0 {src/test => tests}/ui/lint/trivial_casts.rs | 0 {src/test => tests}/ui/lint/trivial_casts.stderr | 0 {src/test => tests}/ui/lint/type-overflow.rs | 0 {src/test => tests}/ui/lint/type-overflow.stderr | 0 {src/test => tests}/ui/lint/unaligned_references.rs | 0 .../ui/lint/unaligned_references.stderr | 0 .../ui/lint/unaligned_references_external_macro.rs | 0 .../lint/unaligned_references_external_macro.stderr | 0 .../ui/lint/unnecessary-extern-crate.rs | 0 .../ui/lint/unnecessary-extern-crate.stderr | 0 {src/test => tests}/ui/lint/unreachable-async-fn.rs | 0 {src/test => tests}/ui/lint/unreachable_pub.rs | 0 {src/test => tests}/ui/lint/unreachable_pub.stderr | 0 .../unsafe_code/auxiliary/forge_unsafe_block.rs | 0 .../ui/lint/unsafe_code/forge_unsafe_block.rs | 0 {src/test => tests}/ui/lint/unused-borrows.rs | 0 {src/test => tests}/ui/lint/unused-borrows.stderr | 0 .../unused-braces-while-let-with-mutable-value.rs | 0 .../unused-qualification-in-derive-expansion.rs | 0 .../unused/auxiliary/lint_unused_extern_crate.rs | 0 .../unused/auxiliary/lint_unused_extern_crate2.rs | 0 .../unused/auxiliary/lint_unused_extern_crate3.rs | 0 .../unused/auxiliary/lint_unused_extern_crate4.rs | 0 .../unused/auxiliary/lint_unused_extern_crate5.rs | 0 {src/test => tests}/ui/lint/unused/issue-104397.rs | 0 {src/test => tests}/ui/lint/unused/issue-30730.rs | 0 .../ui/lint/unused/issue-30730.stderr | 0 {src/test => tests}/ui/lint/unused/issue-46576.rs | 0 .../ui/lint/unused/issue-46576.stderr | 0 ...issue-47390-unused-variable-in-struct-pattern.rs | 0 ...e-47390-unused-variable-in-struct-pattern.stderr | 0 .../lint/unused/issue-54180-unused-ref-field.fixed | 0 .../ui/lint/unused/issue-54180-unused-ref-field.rs | 0 .../lint/unused/issue-54180-unused-ref-field.stderr | 0 .../unused/issue-54538-unused-parens-lint.fixed | 0 .../lint/unused/issue-54538-unused-parens-lint.rs | 0 .../unused/issue-54538-unused-parens-lint.stderr | 0 {src/test => tests}/ui/lint/unused/issue-59896.rs | 0 .../ui/lint/unused/issue-59896.stderr | 0 .../issue-67691-unused-field-in-or-pattern.rs | 0 .../issue-67691-unused-field-in-or-pattern.stderr | 0 {src/test => tests}/ui/lint/unused/issue-70041.rs | 0 .../ui/lint/unused/issue-70041.stderr | 0 .../lint/unused/issue-71290-unused-paren-binop.rs | 0 .../unused/issue-74883-unused-paren-baren-yield.rs | 0 .../issue-74883-unused-paren-baren-yield.stderr | 0 .../lint/unused/issue-81314-unused-span-ident.fixed | 0 .../ui/lint/unused/issue-81314-unused-span-ident.rs | 0 .../unused/issue-81314-unused-span-ident.stderr | 0 {src/test => tests}/ui/lint/unused/issue-85913.rs | 0 .../ui/lint/unused/issue-85913.stderr | 0 .../ui/lint/unused/issue-88519-unused-paren.rs | 0 .../lint/unused/issue-90807-unused-paren-error.rs | 0 .../unused/issue-90807-unused-paren-error.stderr | 0 .../ui/lint/unused/issue-90807-unused-paren.rs | 0 {src/test => tests}/ui/lint/unused/issue-92751.rs | 0 .../ui/lint/unused/issue-92751.stderr | 0 .../ui/lint/unused/lint-unused-extern-crate.rs | 0 .../ui/lint/unused/lint-unused-extern-crate.stderr | 0 .../ui/lint/unused/lint-unused-imports.rs | 0 .../ui/lint/unused/lint-unused-imports.stderr | 0 .../ui/lint/unused/lint-unused-mut-self.fixed | 0 .../ui/lint/unused/lint-unused-mut-self.rs | 0 .../ui/lint/unused/lint-unused-mut-self.stderr | 0 .../ui/lint/unused/lint-unused-mut-variables.rs | 0 .../ui/lint/unused/lint-unused-mut-variables.stderr | 0 .../ui/lint/unused/lint-unused-variables.rs | 0 .../ui/lint/unused/lint-unused-variables.stderr | 0 .../ui/lint/unused/must-use-box-from-raw.rs | 0 .../ui/lint/unused/must-use-box-from-raw.stderr | 0 {src/test => tests}/ui/lint/unused/must-use-ops.rs | 0 .../ui/lint/unused/must-use-ops.stderr | 0 .../test => tests}/ui/lint/unused/must_use-array.rs | 0 .../ui/lint/unused/must_use-array.stderr | 0 .../ui/lint/unused/must_use-in-stdlib-traits.rs | 0 .../ui/lint/unused/must_use-in-stdlib-traits.stderr | 0 .../test => tests}/ui/lint/unused/must_use-trait.rs | 0 .../ui/lint/unused/must_use-trait.stderr | 0 .../test => tests}/ui/lint/unused/must_use-tuple.rs | 0 .../ui/lint/unused/must_use-tuple.stderr | 0 {src/test => tests}/ui/lint/unused/must_use-unit.rs | 0 .../ui/lint/unused/must_use-unit.stderr | 0 .../ui/lint/unused/no-unused-parens-return-block.rs | 0 {src/test => tests}/ui/lint/unused/unused-async.rs | 0 .../ui/lint/unused/unused-async.stderr | 0 .../ui/lint/unused/unused-attr-duplicate.rs | 0 .../ui/lint/unused/unused-attr-duplicate.stderr | 0 .../ui/lint/unused/unused-attr-macro-rules.rs | 0 .../ui/lint/unused/unused-attr-macro-rules.stderr | 0 .../test => tests}/ui/lint/unused/unused-closure.rs | 0 .../ui/lint/unused/unused-closure.stderr | 0 .../lint/unused/unused-doc-comments-edge-cases.rs | 0 .../unused/unused-doc-comments-edge-cases.stderr | 0 .../lint/unused/unused-doc-comments-for-macros.rs | 0 .../unused/unused-doc-comments-for-macros.stderr | 0 .../lint/unused/unused-macro-rules-compile-error.rs | 0 .../unused/unused-macro-rules-compile-error.stderr | 0 .../ui/lint/unused/unused-macro-rules-decl.rs | 0 .../ui/lint/unused/unused-macro-rules-decl.stderr | 0 .../unused/unused-macro-rules-malformed-rule.rs | 0 .../unused/unused-macro-rules-malformed-rule.stderr | 0 .../ui/lint/unused/unused-macro-rules.rs | 0 .../ui/lint/unused/unused-macro-rules.stderr | 0 .../lint/unused/unused-macro-with-bad-frag-spec.rs | 0 .../unused/unused-macro-with-bad-frag-spec.stderr | 0 .../unused/unused-macro-with-follow-violation.rs | 0 .../unused-macro-with-follow-violation.stderr | 0 .../ui/lint/unused/unused-macros-decl.rs | 0 .../ui/lint/unused/unused-macros-decl.stderr | 0 .../ui/lint/unused/unused-macros-malformed-rule.rs | 0 .../lint/unused/unused-macros-malformed-rule.stderr | 0 {src/test => tests}/ui/lint/unused/unused-macros.rs | 0 .../ui/lint/unused/unused-macros.stderr | 0 .../unused/unused-mut-warning-captured-var.fixed | 0 .../lint/unused/unused-mut-warning-captured-var.rs | 0 .../unused/unused-mut-warning-captured-var.stderr | 0 {src/test => tests}/ui/lint/unused/unused-result.rs | 0 .../ui/lint/unused/unused-result.stderr | 0 .../ui/lint/unused/unused-supertrait.rs | 0 .../ui/lint/unused/unused-supertrait.stderr | 0 .../ui/lint/unused/unused_attributes-must_use.rs | 0 .../lint/unused/unused_attributes-must_use.stderr | 0 .../ui/lint/unused/useless-comment.rs | 0 .../ui/lint/unused/useless-comment.stderr | 0 {src/test => tests}/ui/lint/unused_braces.fixed | 0 {src/test => tests}/ui/lint/unused_braces.rs | 0 {src/test => tests}/ui/lint/unused_braces.stderr | 0 .../ui/lint/unused_braces_borrow.fixed | 0 {src/test => tests}/ui/lint/unused_braces_borrow.rs | 0 .../ui/lint/unused_braces_borrow.stderr | 0 {src/test => tests}/ui/lint/unused_braces_macro.rs | 0 .../ui/lint/unused_import_warning_issue_45268.rs | 0 .../lint/unused_import_warning_issue_45268.stderr | 0 {src/test => tests}/ui/lint/unused_labels.rs | 0 {src/test => tests}/ui/lint/unused_labels.stderr | 0 .../ui/lint/unused_parens_json_suggestion.fixed | 0 .../ui/lint/unused_parens_json_suggestion.rs | 0 .../ui/lint/unused_parens_json_suggestion.stderr | 0 .../ui/lint/unused_parens_multibyte_recovery.rs | 0 .../ui/lint/unused_parens_multibyte_recovery.stderr | 0 .../lint/unused_parens_remove_json_suggestion.fixed | 0 .../ui/lint/unused_parens_remove_json_suggestion.rs | 0 .../unused_parens_remove_json_suggestion.stderr | 0 .../ui/lint/unused_variables-issue-82488.fixed | 0 .../ui/lint/unused_variables-issue-82488.rs | 0 .../ui/lint/unused_variables-issue-82488.stderr | 0 {src/test => tests}/ui/lint/use-redundant.rs | 0 {src/test => tests}/ui/lint/use-redundant.stderr | 0 {src/test => tests}/ui/lint/use_suggestion_json.rs | 0 .../ui/lint/use_suggestion_json.stderr | 0 {src/test => tests}/ui/lint/warn-ctypes-inhibit.rs | 0 {src/test => tests}/ui/lint/warn-path-statement.rs | 0 .../ui/lint/warn-path-statement.stderr | 0 .../ui/lint/warn-unused-inline-on-fn-prototypes.rs | 0 .../lint/warn-unused-inline-on-fn-prototypes.stderr | 0 {src/test => tests}/ui/list.rs | 0 {src/test => tests}/ui/liveness/liveness-asm.rs | 0 {src/test => tests}/ui/liveness/liveness-asm.stderr | 0 .../liveness/liveness-assign-imm-local-after-ret.rs | 0 .../liveness-assign-imm-local-in-loop.rs | 0 .../liveness-assign-imm-local-in-loop.stderr | 0 .../liveness-assign-imm-local-in-op-eq.rs | 0 .../liveness-assign-imm-local-in-op-eq.stderr | 0 .../liveness-assign-imm-local-with-drop.rs | 0 .../liveness-assign-imm-local-with-drop.stderr | 0 .../liveness-assign-imm-local-with-init.rs | 0 .../liveness-assign-imm-local-with-init.stderr | 0 .../ui/liveness/liveness-closure-require-ret.rs | 0 .../ui/liveness/liveness-closure-require-ret.stderr | 0 {src/test => tests}/ui/liveness/liveness-consts.rs | 0 .../ui/liveness/liveness-consts.stderr | 0 {src/test => tests}/ui/liveness/liveness-dead.rs | 0 .../test => tests}/ui/liveness/liveness-dead.stderr | 0 {src/test => tests}/ui/liveness/liveness-derive.rs | 0 .../ui/liveness/liveness-derive.stderr | 0 .../ui/liveness/liveness-forgot-ret.rs | 0 .../ui/liveness/liveness-forgot-ret.stderr | 0 .../ui/liveness/liveness-issue-2163.rs | 0 .../ui/liveness/liveness-issue-2163.stderr | 0 .../ui/liveness/liveness-missing-ret2.rs | 0 .../ui/liveness/liveness-missing-ret2.stderr | 0 .../ui/liveness/liveness-move-call-arg.rs | 0 .../ui/liveness/liveness-move-call-arg.stderr | 0 .../ui/liveness/liveness-move-in-loop.rs | 0 .../ui/liveness/liveness-move-in-loop.stderr | 0 .../ui/liveness/liveness-move-in-while.rs | 0 .../ui/liveness/liveness-move-in-while.stderr | 0 .../ui/liveness/liveness-return-last-stmt-semi.rs | 0 .../liveness/liveness-return-last-stmt-semi.stderr | 0 {src/test => tests}/ui/liveness/liveness-unused.rs | 0 .../ui/liveness/liveness-unused.stderr | 0 {src/test => tests}/ui/liveness/liveness-upvars.rs | 0 .../ui/liveness/liveness-upvars.stderr | 0 .../ui/liveness/liveness-use-after-move.rs | 0 .../ui/liveness/liveness-use-after-move.stderr | 0 .../ui/liveness/liveness-use-after-send.rs | 0 .../ui/liveness/liveness-use-after-send.stderr | 0 {src/test => tests}/ui/log-err-phi.rs | 0 .../ui/log-knows-the-names-of-variants.rs | 0 {src/test => tests}/ui/log-poly.rs | 0 {src/test => tests}/ui/logging-only-prints-once.rs | 0 {src/test => tests}/ui/loops/for-each-loop-panic.rs | 0 {src/test => tests}/ui/loops/issue-82916.rs | 0 {src/test => tests}/ui/loops/issue-82916.stderr | 0 {src/test => tests}/ui/loops/loop-break-unsize.rs | 0 .../ui/loops/loop-break-value-no-repeat.rs | 0 .../ui/loops/loop-break-value-no-repeat.stderr | 0 {src/test => tests}/ui/loops/loop-break-value.rs | 0 .../test => tests}/ui/loops/loop-break-value.stderr | 0 .../ui/loops/loop-labeled-break-value.rs | 0 .../ui/loops/loop-labeled-break-value.stderr | 0 .../ui/loops/loop-no-implicit-break.rs | 0 .../ui/loops/loop-no-implicit-break.stderr | 0 .../test => tests}/ui/loops/loop-proper-liveness.rs | 0 .../ui/loops/loop-proper-liveness.stderr | 0 .../ui/loops/loop-properly-diverging-2.rs | 0 .../ui/loops/loop-properly-diverging-2.stderr | 0 {src/test => tests}/ui/loud_ui.rs | 0 {src/test => tests}/ui/lowering/issue-96847.rs | 0 {src/test => tests}/ui/lto/all-crates.rs | 0 .../ui/lto/auxiliary/debuginfo-lto-aux.rs | 0 {src/test => tests}/ui/lto/auxiliary/dylib.rs | 0 .../ui/lto/auxiliary/lto-duplicate-symbols1.rs | 0 .../ui/lto/auxiliary/lto-duplicate-symbols2.rs | 0 .../lto/auxiliary/lto-rustc-loads-linker-plugin.rs | 0 .../ui/lto/auxiliary/msvc-imp-present.rs | 0 .../ui/lto/auxiliary/thin-lto-inlines-aux.rs | 0 .../ui/lto/auxiliary/thinlto-dylib.rs | 0 {src/test => tests}/ui/lto/debuginfo-lto.rs | 0 {src/test => tests}/ui/lto/dylib-works.rs | 0 {src/test => tests}/ui/lto/fat-lto.rs | 0 {src/test => tests}/ui/lto/issue-100772.rs | 0 {src/test => tests}/ui/lto/issue-105637.rs | 0 {src/test => tests}/ui/lto/issue-105637.run.stderr | 0 {src/test => tests}/ui/lto/issue-11154.rs | 0 {src/test => tests}/ui/lto/issue-11154.stderr | 0 .../ui/lto/lto-and-no-bitcode-in-rlib.rs | 0 .../ui/lto/lto-and-no-bitcode-in-rlib.stderr | 0 {src/test => tests}/ui/lto/lto-duplicate-symbols.rs | 0 .../ui/lto/lto-duplicate-symbols.stderr | 0 .../test => tests}/ui/lto/lto-many-codegen-units.rs | 0 {src/test => tests}/ui/lto/lto-opt-level-s.rs | 0 {src/test => tests}/ui/lto/lto-opt-level-z.rs | 0 .../ui/lto/lto-rustc-loads-linker-plugin.rs | 0 .../ui/lto/lto-still-runs-thread-dtors.rs | 0 .../ui/lto/lto-thin-rustc-loads-linker-plugin.rs | 0 {src/test => tests}/ui/lto/msvc-imp-present.rs | 0 .../ui/lto/thin-lto-global-allocator.rs | 0 {src/test => tests}/ui/lto/thin-lto-inlines.rs | 0 {src/test => tests}/ui/lto/thin-lto-inlines2.rs | 0 {src/test => tests}/ui/lto/weak-works.rs | 0 .../ui/lub-glb/empty-binder-future-compat.rs | 0 {src/test => tests}/ui/lub-glb/empty-binders-err.rs | 0 .../ui/lub-glb/empty-binders-err.stderr | 0 {src/test => tests}/ui/lub-glb/empty-binders.rs | 0 {src/test => tests}/ui/lub-glb/old-lub-glb-hr-eq.rs | 0 .../lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr | 0 .../lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr | 0 .../ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr | 0 .../ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr | 0 .../ui/lub-glb/old-lub-glb-hr-noteq1.rs | 0 .../ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr | 0 .../ui/lub-glb/old-lub-glb-hr-noteq2.rs | 0 .../test => tests}/ui/lub-glb/old-lub-glb-object.rs | 0 .../ui/lub-glb/old-lub-glb-object.stderr | 0 {src/test => tests}/ui/macro-quote-test.rs | 0 .../ui/macro_backtrace/auxiliary/ping.rs | 0 .../macro_backtrace/main.-Zmacro-backtrace.stderr | 0 .../ui/macro_backtrace/main.default.stderr | 0 {src/test => tests}/ui/macro_backtrace/main.rs | 0 .../ui/macros/ambiguity-legacy-vs-modern.rs | 0 .../ui/macros/ambiguity-legacy-vs-modern.stderr | 0 {src/test => tests}/ui/macros/assert-as-macro.rs | 0 .../test => tests}/ui/macros/assert-eq-macro-msg.rs | 0 .../ui/macros/assert-eq-macro-panic.rs | 0 .../ui/macros/assert-eq-macro-success.rs | 0 .../ui/macros/assert-eq-macro-unsized.rs | 0 {src/test => tests}/ui/macros/assert-format-lazy.rs | 0 .../ui/macros/assert-macro-explicit.rs | 0 {src/test => tests}/ui/macros/assert-macro-fmt.rs | 0 {src/test => tests}/ui/macros/assert-macro-owned.rs | 0 .../test => tests}/ui/macros/assert-macro-static.rs | 0 .../ui/macros/assert-matches-macro-msg.rs | 0 .../test => tests}/ui/macros/assert-ne-macro-msg.rs | 0 .../ui/macros/assert-ne-macro-panic.rs | 0 .../ui/macros/assert-ne-macro-success.rs | 0 .../ui/macros/assert-ne-macro-unsized.rs | 0 .../ui/macros/assert-trailing-junk.rs | 0 .../assert-trailing-junk.with-generic-asset.stderr | 0 ...ssert-trailing-junk.without-generic-asset.stderr | 0 {src/test => tests}/ui/macros/assert.rs | 0 .../ui/macros/assert.with-generic-asset.stderr | 0 .../ui/macros/assert.without-generic-asset.stderr | 0 {src/test => tests}/ui/macros/attr-empty-expr.rs | 0 .../test => tests}/ui/macros/attr-empty-expr.stderr | 0 {src/test => tests}/ui/macros/attr-from-macro.rs | 0 .../ui/macros/auxiliary/attr-from-macro.rs | 0 .../ui/macros/auxiliary/define-macro.rs | 0 .../ui/macros/auxiliary/deprecated-macros.rs | 0 .../auxiliary/dollar-crate-nested-encoding.rs | 0 .../ui/macros/auxiliary/foreign-crate-macro-pat.rs | 0 .../ui/macros/auxiliary/issue-100199.rs | 0 .../ui/macros/auxiliary/issue-19163.rs | 0 .../ui/macros/auxiliary/issue-40469.rs | 0 .../ui/macros/auxiliary/issue-75982.rs | 0 .../ui/macros/auxiliary/macro-comma-support.rs | 0 .../ui/macros/auxiliary/macro-def-site-super.rs | 0 .../ui/macros/auxiliary/macro-in-other-crate.rs | 0 .../ui/macros/auxiliary/macro-include-items-expr.rs | 0 .../ui/macros/auxiliary/macro-include-items-item.rs | 0 .../ui/macros/auxiliary/macro_crate_def_only.rs | 0 .../ui/macros/auxiliary/macro_crate_nonterminal.rs | 0 .../macros/auxiliary/macro_export_inner_module.rs | 0 .../ui/macros/auxiliary/macro_with_super_1.rs | 0 .../ui/macros/auxiliary/or-pattern.rs | 0 .../ui/macros/auxiliary/proc_macro_def.rs | 0 .../ui/macros/auxiliary/proc_macro_sequence.rs | 0 .../ui/macros/auxiliary/two_macros-rpass.rs | 0 .../ui/macros/auxiliary/two_macros.rs | 0 .../ui/macros/auxiliary/unstable-macros.rs | 0 .../ui/macros/auxiliary/use-macro-self.rs | 0 {src/test => tests}/ui/macros/bad-concat.rs | 0 {src/test => tests}/ui/macros/bad-concat.stderr | 0 {src/test => tests}/ui/macros/bad_hello.rs | 0 {src/test => tests}/ui/macros/bad_hello.stderr | 0 {src/test => tests}/ui/macros/bang-after-name.fixed | 0 {src/test => tests}/ui/macros/bang-after-name.rs | 0 .../test => tests}/ui/macros/bang-after-name.stderr | 0 {src/test => tests}/ui/macros/best-failure.rs | 0 {src/test => tests}/ui/macros/best-failure.stderr | 0 .../ui/macros/builtin-prelude-no-accidents.rs | 0 .../ui/macros/builtin-prelude-no-accidents.stderr | 0 .../ui/macros/builtin-std-paths-fail.rs | 0 .../ui/macros/builtin-std-paths-fail.stderr | 0 {src/test => tests}/ui/macros/builtin-std-paths.rs | 0 {src/test => tests}/ui/macros/cfg.rs | 0 {src/test => tests}/ui/macros/cfg.stderr | 0 .../ui/macros/colorful-write-macros.rs | 0 {src/test => tests}/ui/macros/concat-bytes-error.rs | 0 .../ui/macros/concat-bytes-error.stderr | 0 {src/test => tests}/ui/macros/concat-bytes.rs | 0 {src/test => tests}/ui/macros/concat-rpass.rs | 0 {src/test => tests}/ui/macros/concat.rs | 0 {src/test => tests}/ui/macros/concat.stderr | 0 .../ui/macros/conditional-debug-macro-on.rs | 0 .../ui/macros/cross-crate-pat-span.rs | 0 .../ui/macros/derive-in-eager-expansion-hang.rs | 0 .../ui/macros/derive-in-eager-expansion-hang.stderr | 0 {src/test => tests}/ui/macros/die-macro-2.rs | 0 {src/test => tests}/ui/macros/die-macro-expr.rs | 0 {src/test => tests}/ui/macros/die-macro-pure.rs | 0 {src/test => tests}/ui/macros/die-macro.rs | 0 {src/test => tests}/ui/macros/doc-comment.rs | 0 .../ui/macros/dollar-crate-nested-encoding.rs | 0 {src/test => tests}/ui/macros/duplicate-builtin.rs | 0 .../ui/macros/duplicate-builtin.stderr | 0 {src/test => tests}/ui/macros/edition-macro-pats.rs | 0 .../test => tests}/ui/macros/empty-trailing-stmt.rs | 0 .../ui/macros/empty-trailing-stmt.stderr | 0 .../ui/macros/format-args-temporaries-async.rs | 0 .../ui/macros/format-args-temporaries-in-write.rs | 0 .../macros/format-args-temporaries-in-write.stderr | 0 .../ui/macros/format-args-temporaries.rs | 0 {src/test => tests}/ui/macros/format-foreign.rs | 0 {src/test => tests}/ui/macros/format-foreign.stderr | 0 .../test => tests}/ui/macros/format-parse-errors.rs | 0 .../ui/macros/format-parse-errors.stderr | 0 .../ui/macros/format-unused-lables.rs | 0 .../ui/macros/format-unused-lables.stderr | 0 {src/test => tests}/ui/macros/global-asm.rs | 0 {src/test => tests}/ui/macros/global-asm.stderr | 0 {src/test => tests}/ui/macros/html-literals.rs | 0 .../ui/macros/include-single-expr-helper-1.rs | 0 .../ui/macros/include-single-expr-helper.rs | 0 .../test => tests}/ui/macros/include-single-expr.rs | 0 .../ui/macros/include-single-expr.stderr | 0 {src/test => tests}/ui/macros/issue-100199.rs | 0 {src/test => tests}/ui/macros/issue-100199.stderr | 0 {src/test => tests}/ui/macros/issue-102878.rs | 0 {src/test => tests}/ui/macros/issue-102878.stderr | 0 {src/test => tests}/ui/macros/issue-103529.rs | 0 {src/test => tests}/ui/macros/issue-103529.stderr | 0 .../issue-104769-concat_bytes-invalid-literal.rs | 0 ...issue-104769-concat_bytes-invalid-literal.stderr | 0 {src/test => tests}/ui/macros/issue-105011.rs | 0 {src/test => tests}/ui/macros/issue-105011.stderr | 0 {src/test => tests}/ui/macros/issue-10536.rs | 0 {src/test => tests}/ui/macros/issue-10536.stderr | 0 {src/test => tests}/ui/macros/issue-16098.rs | 0 {src/test => tests}/ui/macros/issue-16098.stderr | 0 {src/test => tests}/ui/macros/issue-19163.rs | 0 {src/test => tests}/ui/macros/issue-19163.stderr | 0 {src/test => tests}/ui/macros/issue-21356.rs | 0 {src/test => tests}/ui/macros/issue-21356.stderr | 0 {src/test => tests}/ui/macros/issue-22463.rs | 0 {src/test => tests}/ui/macros/issue-25274.rs | 0 {src/test => tests}/ui/macros/issue-25385.rs | 0 {src/test => tests}/ui/macros/issue-25385.stderr | 0 {src/test => tests}/ui/macros/issue-26322.rs | 0 {src/test => tests}/ui/macros/issue-29084.rs | 0 {src/test => tests}/ui/macros/issue-29084.stderr | 0 {src/test => tests}/ui/macros/issue-30143.rs | 0 {src/test => tests}/ui/macros/issue-30143.stderr | 0 {src/test => tests}/ui/macros/issue-33185.rs | 0 {src/test => tests}/ui/macros/issue-34171.rs | 0 .../issue-34421-mac-expr-bad-stmt-good-add-semi.rs | 0 ...sue-34421-mac-expr-bad-stmt-good-add-semi.stderr | 0 {src/test => tests}/ui/macros/issue-35450.rs | 0 {src/test => tests}/ui/macros/issue-35450.stderr | 0 {src/test => tests}/ui/macros/issue-37175.rs | 0 {src/test => tests}/ui/macros/issue-38715.rs | 0 {src/test => tests}/ui/macros/issue-38715.stderr | 0 {src/test => tests}/ui/macros/issue-39388.rs | 0 {src/test => tests}/ui/macros/issue-39388.stderr | 0 {src/test => tests}/ui/macros/issue-39404.rs | 0 {src/test => tests}/ui/macros/issue-39404.stderr | 0 {src/test => tests}/ui/macros/issue-40469.rs | 0 {src/test => tests}/ui/macros/issue-40770.rs | 0 {src/test => tests}/ui/macros/issue-41776.rs | 0 {src/test => tests}/ui/macros/issue-41776.stderr | 0 {src/test => tests}/ui/macros/issue-41803.rs | 0 {src/test => tests}/ui/macros/issue-42954.fixed | 0 {src/test => tests}/ui/macros/issue-42954.rs | 0 {src/test => tests}/ui/macros/issue-42954.stderr | 0 {src/test => tests}/ui/macros/issue-44127.rs | 0 {src/test => tests}/ui/macros/issue-5060.rs | 0 {src/test => tests}/ui/macros/issue-51848.rs | 0 {src/test => tests}/ui/macros/issue-51848.stderr | 0 {src/test => tests}/ui/macros/issue-52169.rs | 0 {src/test => tests}/ui/macros/issue-54441.rs | 0 {src/test => tests}/ui/macros/issue-54441.stderr | 0 {src/test => tests}/ui/macros/issue-57597.rs | 0 {src/test => tests}/ui/macros/issue-57597.stderr | 0 {src/test => tests}/ui/macros/issue-58490.rs | 0 {src/test => tests}/ui/macros/issue-58490.stderr | 0 {src/test => tests}/ui/macros/issue-61033-1.rs | 0 {src/test => tests}/ui/macros/issue-61033-1.stderr | 0 {src/test => tests}/ui/macros/issue-61033-2.rs | 0 {src/test => tests}/ui/macros/issue-61033-2.stderr | 0 .../ui/macros/issue-61053-different-kleene.rs | 0 .../ui/macros/issue-61053-different-kleene.stderr | 0 .../ui/macros/issue-61053-duplicate-binder.rs | 0 .../ui/macros/issue-61053-duplicate-binder.stderr | 0 .../ui/macros/issue-61053-missing-repetition.rs | 0 .../ui/macros/issue-61053-missing-repetition.stderr | 0 .../test => tests}/ui/macros/issue-61053-unbound.rs | 0 .../ui/macros/issue-61053-unbound.stderr | 0 {src/test => tests}/ui/macros/issue-63102.rs | 0 {src/test => tests}/ui/macros/issue-6596-1.rs | 0 {src/test => tests}/ui/macros/issue-6596-1.stderr | 0 {src/test => tests}/ui/macros/issue-68058.rs | 0 {src/test => tests}/ui/macros/issue-68060.rs | 0 {src/test => tests}/ui/macros/issue-68060.stderr | 0 .../test => tests}/ui/macros/issue-69838-dir/bar.rs | 0 .../ui/macros/issue-69838-dir/included.rs | 0 .../issue-69838-mods-relative-to-included-path.rs | 0 {src/test => tests}/ui/macros/issue-70446.rs | 0 .../macros/issue-75982-foreign-macro-weird-mod.rs | 0 {src/test => tests}/ui/macros/issue-77475.rs | 0 .../macros/issue-78325-inconsistent-resolution.rs | 0 .../issue-78325-inconsistent-resolution.stderr | 0 {src/test => tests}/ui/macros/issue-78333.rs | 0 .../issue-78892-substitution-in-statement-attr.rs | 0 {src/test => tests}/ui/macros/issue-81006.rs | 0 {src/test => tests}/ui/macros/issue-81006.stderr | 0 {src/test => tests}/ui/macros/issue-83340.rs | 0 {src/test => tests}/ui/macros/issue-83340.stderr | 0 {src/test => tests}/ui/macros/issue-83344.rs | 0 {src/test => tests}/ui/macros/issue-83344.stderr | 0 .../ui/macros/issue-84195-lint-anon-const.rs | 0 .../ui/macros/issue-84195-lint-anon-const.stderr | 0 .../ui/macros/issue-84429-matches-edition.rs | 0 .../issue-84632-eager-expansion-recursion-limit.rs | 0 ...sue-84632-eager-expansion-recursion-limit.stderr | 0 .../macros/issue-86082-option-env-invalid-char.rs | 0 {src/test => tests}/ui/macros/issue-86865.rs | 0 {src/test => tests}/ui/macros/issue-86865.stderr | 0 {src/test => tests}/ui/macros/issue-8709.rs | 0 {src/test => tests}/ui/macros/issue-87877.rs | 0 {src/test => tests}/ui/macros/issue-88206.rs | 0 {src/test => tests}/ui/macros/issue-88206.stderr | 0 {src/test => tests}/ui/macros/issue-88228.rs | 0 {src/test => tests}/ui/macros/issue-88228.stderr | 0 {src/test => tests}/ui/macros/issue-8851.rs | 0 {src/test => tests}/ui/macros/issue-92267.rs | 0 {src/test => tests}/ui/macros/issue-92267.stderr | 0 {src/test => tests}/ui/macros/issue-95267.rs | 0 {src/test => tests}/ui/macros/issue-95533.rs | 0 {src/test => tests}/ui/macros/issue-98466-allow.rs | 0 {src/test => tests}/ui/macros/issue-98466.fixed | 0 {src/test => tests}/ui/macros/issue-98466.rs | 0 {src/test => tests}/ui/macros/issue-98466.stderr | 0 {src/test => tests}/ui/macros/issue-99261.rs | 0 {src/test => tests}/ui/macros/issue-99265.fixed | 0 {src/test => tests}/ui/macros/issue-99265.rs | 0 {src/test => tests}/ui/macros/issue-99265.stderr | 0 {src/test => tests}/ui/macros/issue-99907.fixed | 0 {src/test => tests}/ui/macros/issue-99907.rs | 0 {src/test => tests}/ui/macros/issue-99907.stderr | 0 .../ui/macros/lint-trailing-macro-call.rs | 0 .../ui/macros/lint-trailing-macro-call.stderr | 0 .../local-ambiguity-multiple-parsing-options.rs | 0 .../local-ambiguity-multiple-parsing-options.stderr | 0 .../log_syntax-trace_macros-macro-locations.rs | 0 .../log_syntax-trace_macros-macro-locations.stdout | 0 {src/test => tests}/ui/macros/macro-2.rs | 0 {src/test => tests}/ui/macros/macro-as-fn-body.rs | 0 .../ui/macros/macro-at-most-once-rep-2015-rpass.rs | 0 .../ui/macros/macro-at-most-once-rep-2015.rs | 0 .../ui/macros/macro-at-most-once-rep-2015.stderr | 0 .../ui/macros/macro-at-most-once-rep-2018-rpass.rs | 0 .../ui/macros/macro-at-most-once-rep-2018.rs | 0 .../ui/macros/macro-at-most-once-rep-2018.stderr | 0 .../ui/macros/macro-attribute-expansion.rs | 0 {src/test => tests}/ui/macros/macro-attribute.rs | 0 .../test => tests}/ui/macros/macro-attribute.stderr | 0 {src/test => tests}/ui/macros/macro-attributes.rs | 0 .../ui/macros/macro-backtrace-invalid-internals.rs | 0 .../macros/macro-backtrace-invalid-internals.stderr | 0 .../ui/macros/macro-backtrace-nested.rs | 0 .../ui/macros/macro-backtrace-nested.stderr | 0 .../ui/macros/macro-backtrace-println.rs | 0 .../ui/macros/macro-backtrace-println.stderr | 0 .../ui/macros/macro-block-nonterminal.rs | 0 .../ui/macros/macro-comma-behavior-rpass.rs | 0 .../ui/macros/macro-comma-behavior.core.stderr | 0 .../ui/macros/macro-comma-behavior.rs | 0 .../ui/macros/macro-comma-behavior.std.stderr | 0 .../ui/macros/macro-comma-support-rpass.rs | 0 .../test => tests}/ui/macros/macro-comma-support.rs | 0 .../ui/macros/macro-comma-support.stderr | 0 {src/test => tests}/ui/macros/macro-context.rs | 0 {src/test => tests}/ui/macros/macro-context.stderr | 0 .../ui/macros/macro-crate-def-only.rs | 0 .../ui/macros/macro-crate-nonterminal-non-root.rs | 0 .../macros/macro-crate-nonterminal-non-root.stderr | 0 .../ui/macros/macro-crate-nonterminal-renamed.rs | 0 .../ui/macros/macro-crate-nonterminal.rs | 0 {src/test => tests}/ui/macros/macro-crate-use.rs | 0 .../ui/macros/macro-deep_expansion.rs | 0 .../ui/macros/macro-def-site-super.rs | 0 .../ui/macros/macro-delimiter-significance.rs | 0 {src/test => tests}/ui/macros/macro-deprecation.rs | 0 .../ui/macros/macro-deprecation.stderr | 0 {src/test => tests}/ui/macros/macro-doc-comments.rs | 0 {src/test => tests}/ui/macros/macro-doc-escapes.rs | 0 .../ui/macros/macro-doc-raw-str-hashes.rs | 0 {src/test => tests}/ui/macros/macro-error.rs | 0 {src/test => tests}/ui/macros/macro-error.stderr | 0 .../ui/macros/macro-expanded-include/file.txt | 0 .../ui/macros/macro-expanded-include/foo/mod.rs | 0 .../ui/macros/macro-expanded-include/test.rs | 0 .../ui/macros/macro-expansion-tests.rs | 0 .../ui/macros/macro-expansion-tests.stderr | 0 .../ui/macros/macro-export-inner-module.rs | 0 {src/test => tests}/ui/macros/macro-first-set.rs | 0 {src/test => tests}/ui/macros/macro-follow-rpass.rs | 0 {src/test => tests}/ui/macros/macro-follow.rs | 0 {src/test => tests}/ui/macros/macro-follow.stderr | 0 .../ui/macros/macro-followed-by-seq-bad.rs | 0 .../ui/macros/macro-followed-by-seq-bad.stderr | 0 .../ui/macros/macro-followed-by-seq.rs | 0 .../ui/macros/macro-in-expression-context-2.rs | 0 .../ui/macros/macro-in-expression-context-2.stderr | 0 .../ui/macros/macro-in-expression-context.fixed | 0 .../ui/macros/macro-in-expression-context.rs | 0 .../ui/macros/macro-in-expression-context.stderr | 0 {src/test => tests}/ui/macros/macro-in-fn.rs | 0 .../test => tests}/ui/macros/macro-include-items.rs | 0 .../ui/macros/macro-inner-attributes.rs | 0 .../ui/macros/macro-inner-attributes.stderr | 0 .../ui/macros/macro-input-future-proofing.rs | 0 .../ui/macros/macro-input-future-proofing.stderr | 0 .../test => tests}/ui/macros/macro-interpolation.rs | 0 .../ui/macros/macro-invalid-fragment-spec.rs | 0 .../ui/macros/macro-invalid-fragment-spec.stderr | 0 ...cro-invocation-in-count-expr-fixed-array-type.rs | 0 .../ui/macros/macro-lifetime-used-with-bound.rs | 0 .../ui/macros/macro-lifetime-used-with-labels.rs | 0 .../ui/macros/macro-lifetime-used-with-static.rs | 0 {src/test => tests}/ui/macros/macro-lifetime.rs | 0 {src/test => tests}/ui/macros/macro-literal.rs | 0 .../ui/macros/macro-local-data-key-priv.rs | 0 .../ui/macros/macro-local-data-key-priv.stderr | 0 .../ui/macros/macro-match-nonterminal.rs | 0 .../ui/macros/macro-match-nonterminal.stderr | 0 .../ui/macros/macro-meta-items-modern.rs | 0 {src/test => tests}/ui/macros/macro-meta-items.rs | 0 .../ui/macros/macro-method-issue-4621.rs | 0 .../ui/macros/macro-missing-delimiters.rs | 0 .../ui/macros/macro-missing-delimiters.stderr | 0 .../macros/macro-missing-fragment-deduplication.rs | 0 .../macro-missing-fragment-deduplication.stderr | 0 .../ui/macros/macro-missing-fragment.rs | 0 .../ui/macros/macro-missing-fragment.stderr | 0 .../ui/macros/macro-multiple-items.rs | 0 .../ui/macros/macro-multiple-matcher-bindings.rs | 0 .../macros/macro-multiple-matcher-bindings.stderr | 0 {src/test => tests}/ui/macros/macro-name-typo.rs | 0 .../test => tests}/ui/macros/macro-name-typo.stderr | 0 .../test => tests}/ui/macros/macro-named-default.rs | 0 .../macros/macro-nested_definition_issue-31946.rs | 0 {src/test => tests}/ui/macros/macro-nested_expr.rs | 0 .../ui/macros/macro-nested_stmt_macros.rs | 0 {src/test => tests}/ui/macros/macro-non-lifetime.rs | 0 .../ui/macros/macro-non-lifetime.stderr | 0 {src/test => tests}/ui/macros/macro-nt-list.rs | 0 .../ui/macros/macro-of-higher-order.rs | 0 .../ui/macros/macro-or-patterns-back-compat.fixed | 0 .../ui/macros/macro-or-patterns-back-compat.rs | 0 .../ui/macros/macro-or-patterns-back-compat.stderr | 0 .../ui/macros/macro-outer-attributes.rs | 0 .../ui/macros/macro-outer-attributes.stderr | 0 .../ui/macros/macro-parameter-span.rs | 0 .../ui/macros/macro-parameter-span.stderr | 0 .../ui/macros/macro-pat-follow-2018.rs | 0 {src/test => tests}/ui/macros/macro-pat-follow.rs | 0 {src/test => tests}/ui/macros/macro-pat-neg-lit.rs | 0 .../macro-pat-pattern-followed-by-or-in-2021.rs | 0 .../macro-pat-pattern-followed-by-or-in-2021.stderr | 0 .../ui/macros/macro-pat-pattern-followed-by-or.rs | 0 {src/test => tests}/ui/macros/macro-pat.rs | 0 .../macros/macro-pat2021-pattern-followed-by-or.rs | 0 .../macro-pat2021-pattern-followed-by-or.stderr | 0 .../ui/macros/macro-path-prelude-fail-1.rs | 0 .../ui/macros/macro-path-prelude-fail-1.stderr | 0 .../ui/macros/macro-path-prelude-fail-2.rs | 0 .../ui/macros/macro-path-prelude-fail-2.stderr | 0 .../ui/macros/macro-path-prelude-fail-3.rs | 0 .../ui/macros/macro-path-prelude-fail-3.stderr | 0 .../ui/macros/macro-path-prelude-fail-4.rs | 0 .../ui/macros/macro-path-prelude-fail-4.stderr | 0 .../ui/macros/macro-path-prelude-pass.rs | 0 .../ui/macros/macro-path-prelude-shadowing.rs | 0 .../ui/macros/macro-path-prelude-shadowing.stderr | 0 {src/test => tests}/ui/macros/macro-path.rs | 0 {src/test => tests}/ui/macros/macro-pub-matcher.rs | 0 .../ui/macros/macro-reexport-removed.rs | 0 .../ui/macros/macro-reexport-removed.stderr | 0 .../ui/macros/macro-seq-followed-by-seq.rs | 0 .../ui/macros/macro-shadowing-relaxed.rs | 0 {src/test => tests}/ui/macros/macro-shadowing.rs | 0 .../test => tests}/ui/macros/macro-shadowing.stderr | 0 .../ui/macros/macro-stability-rpass.rs | 0 {src/test => tests}/ui/macros/macro-stability.rs | 0 .../test => tests}/ui/macros/macro-stability.stderr | 0 .../test => tests}/ui/macros/macro-stmt-matchers.rs | 0 {src/test => tests}/ui/macros/macro-stmt.rs | 0 .../ui/macros/macro-stmt_macro_in_expr_macro.rs | 0 .../ui/macros/macro-tt-followed-by-seq.rs | 0 {src/test => tests}/ui/macros/macro-tt-matchers.rs | 0 .../ui/macros/macro-use-all-and-none.rs | 0 .../ui/macros/macro-use-all-and-none.stderr | 0 {src/test => tests}/ui/macros/macro-use-all.rs | 0 .../ui/macros/macro-use-bad-args-1.rs | 0 .../ui/macros/macro-use-bad-args-1.stderr | 0 .../ui/macros/macro-use-bad-args-2.rs | 0 .../ui/macros/macro-use-bad-args-2.stderr | 0 {src/test => tests}/ui/macros/macro-use-both.rs | 0 {src/test => tests}/ui/macros/macro-use-one.rs | 0 {src/test => tests}/ui/macros/macro-use-scope.rs | 0 {src/test => tests}/ui/macros/macro-use-undef.rs | 0 .../test => tests}/ui/macros/macro-use-undef.stderr | 0 .../ui/macros/macro-use-wrong-name.rs | 0 .../ui/macros/macro-use-wrong-name.stderr | 0 {src/test => tests}/ui/macros/macro-with-attrs1.rs | 0 {src/test => tests}/ui/macros/macro-with-attrs2.rs | 0 .../ui/macros/macro-with-braces-in-expr-position.rs | 0 .../ui/macros/macro_path_as_generic_bound.rs | 0 .../ui/macros/macro_path_as_generic_bound.stderr | 0 .../ui/macros/macro_rules-unmatchable-literals.rs | 0 .../macros/macro_rules-unmatchable-literals.stderr | 0 {src/test => tests}/ui/macros/macro_undefined.rs | 0 .../test => tests}/ui/macros/macro_undefined.stderr | 0 {src/test => tests}/ui/macros/macro_with_super_2.rs | 0 {src/test => tests}/ui/macros/macros-in-extern.rs | 0 .../ui/macros/macros-nonfatal-errors.rs | 0 .../ui/macros/macros-nonfatal-errors.stderr | 0 .../test => tests}/ui/macros/malformed_macro_lhs.rs | 0 .../ui/macros/malformed_macro_lhs.stderr | 0 .../ui/macros/meta-item-absolute-path.rs | 0 .../ui/macros/meta-item-absolute-path.stderr | 0 .../ui/macros/meta-variable-depth-outside-repeat.rs | 0 .../meta-variable-depth-outside-repeat.stderr | 0 .../ui/macros/meta-variable-misuse.rs | 0 .../ui/macros/missing-bang-in-decl.fixed | 0 .../ui/macros/missing-bang-in-decl.rs | 0 .../ui/macros/missing-bang-in-decl.stderr | 0 {src/test => tests}/ui/macros/missing-comma.rs | 0 {src/test => tests}/ui/macros/missing-comma.stderr | 0 .../ui/macros/must-use-in-macro-55516.rs | 0 .../ui/macros/must-use-in-macro-55516.stderr | 0 {src/test => tests}/ui/macros/no-std-macros.rs | 0 .../ui/macros/none-delim-lookahead.rs | 0 .../ui/macros/nonterminal-matching.rs | 0 .../ui/macros/nonterminal-matching.stderr | 0 {src/test => tests}/ui/macros/not-utf8.bin | Bin {src/test => tests}/ui/macros/not-utf8.rs | 0 {src/test => tests}/ui/macros/not-utf8.stderr | 0 .../ui/macros/out-of-order-shadowing.rs | 0 .../ui/macros/out-of-order-shadowing.stderr | 0 .../ui/macros/parse-complex-macro-invoc-op.rs | 0 .../ui/macros/paths-in-macro-invocations.rs | 0 {src/test => tests}/ui/macros/proc_macro.rs | 0 .../ui/macros/pub-item-inside-macro.rs | 0 .../ui/macros/pub-method-inside-macro.rs | 0 {src/test => tests}/ui/macros/recovery-allowed.rs | 0 .../ui/macros/recovery-allowed.stderr | 0 {src/test => tests}/ui/macros/recovery-forbidden.rs | 0 .../ui/macros/restricted-shadowing-legacy.rs | 0 .../ui/macros/restricted-shadowing-legacy.stderr | 0 .../ui/macros/restricted-shadowing-modern.rs | 0 .../ui/macros/restricted-shadowing-modern.stderr | 0 .../all-expr-kinds.rs | 0 .../all-not-available-cases.rs | 0 ...ustom-errors-does-not-create-unnecessary-code.rs | 0 ...out-captures-does-not-create-unnecessary-code.rs | 0 .../auxiliary/common.rs | 0 .../feature-gate-generic_assert.rs | 0 .../non-consuming-methods-have-optimized-codegen.rs | 0 ...-consuming-methods-have-optimized-codegen.stdout | 0 .../count-and-length-are-distinct.rs | 0 .../dollar-dollar-has-correct-behavior.rs | 0 .../feature-gate-macro_metavar_expr.rs | 0 .../macros/rfc-3086-metavar-expr/macro-expansion.rs | 0 .../out-of-bounds-arguments.rs | 0 .../out-of-bounds-arguments.stderr | 0 .../rfc-3086-metavar-expr/required-feature.rs | 0 .../rfc-3086-metavar-expr/required-feature.stderr | 0 .../macros/rfc-3086-metavar-expr/syntax-errors.rs | 0 .../rfc-3086-metavar-expr/syntax-errors.stderr | 0 {src/test => tests}/ui/macros/same-sequence-span.rs | 0 .../ui/macros/same-sequence-span.stderr | 0 .../test => tests}/ui/macros/semi-after-macro-ty.rs | 0 .../ui/macros/span-covering-argument-1.rs | 0 .../ui/macros/span-covering-argument-1.stderr | 0 .../ui/macros/stmt_expr_attr_macro_parse.rs | 0 {src/test => tests}/ui/macros/stringify.rs | 0 .../ui/macros/syntax-error-recovery.rs | 0 .../ui/macros/syntax-error-recovery.stderr | 0 .../ui/macros/syntax-extension-cfg.rs | 0 .../includeme.fragment | 0 .../ui/macros/syntax-extension-source-utils.rs | 0 {src/test => tests}/ui/macros/trace-macro.rs | 0 {src/test => tests}/ui/macros/trace-macro.stderr | 0 .../test => tests}/ui/macros/trace_faulty_macros.rs | 0 .../ui/macros/trace_faulty_macros.stderr | 0 .../test => tests}/ui/macros/trace_macros-format.rs | 0 .../ui/macros/trace_macros-format.stderr | 0 {src/test => tests}/ui/macros/try-macro.rs | 0 {src/test => tests}/ui/macros/two-macro-use.rs | 0 {src/test => tests}/ui/macros/type-macros-hlist.rs | 0 {src/test => tests}/ui/macros/type-macros-simple.rs | 0 .../macros/typeck-macro-interaction-issue-8852.rs | 0 .../ui/macros/unimplemented-macro-panic.rs | 0 {src/test => tests}/ui/macros/unknown-builtin.rs | 0 .../test => tests}/ui/macros/unknown-builtin.stderr | 0 .../ui/macros/unreachable-arg.edition_2021.stderr | 0 {src/test => tests}/ui/macros/unreachable-arg.rs | 0 .../test => tests}/ui/macros/unreachable-fmt-msg.rs | 0 .../ui/macros/unreachable-format-arg.rs | 0 .../unreachable-format-args.edition_2015.stderr | 0 .../ui/macros/unreachable-format-args.rs | 0 .../ui/macros/unreachable-macro-panic.rs | 0 .../ui/macros/unreachable-static-msg.rs | 0 {src/test => tests}/ui/macros/unreachable.rs | 0 {src/test => tests}/ui/macros/use-macro-self.rs | 0 .../ui/macros/vec-macro-in-pattern.rs | 0 .../ui/macros/vec-macro-in-pattern.stderr | 0 {src/test => tests}/ui/main-wrong-location.rs | 0 {src/test => tests}/ui/main-wrong-location.stderr | 0 {src/test => tests}/ui/main-wrong-type.rs | 0 {src/test => tests}/ui/main-wrong-type.stderr | 0 .../malformed/issue-69341-malformed-derive-inert.rs | 0 .../issue-69341-malformed-derive-inert.stderr | 0 .../ui/malformed/malformed-derive-entry.rs | 0 .../ui/malformed/malformed-derive-entry.stderr | 0 .../ui/malformed/malformed-interpolated.rs | 0 .../ui/malformed/malformed-interpolated.stderr | 0 .../ui/malformed/malformed-meta-delim.rs | 0 .../ui/malformed/malformed-meta-delim.stderr | 0 .../ui/malformed/malformed-plugin-1.rs | 0 .../ui/malformed/malformed-plugin-1.stderr | 0 .../ui/malformed/malformed-plugin-2.rs | 0 .../ui/malformed/malformed-plugin-2.stderr | 0 .../ui/malformed/malformed-plugin-3.rs | 0 .../ui/malformed/malformed-plugin-3.stderr | 0 .../ui/malformed/malformed-regressions.rs | 0 .../ui/malformed/malformed-regressions.stderr | 0 .../ui/malformed/malformed-special-attrs.rs | 0 .../ui/malformed/malformed-special-attrs.stderr | 0 .../ui/manual/manual-link-bad-form.rs | 0 .../ui/manual/manual-link-bad-form.stderr | 0 .../ui/manual/manual-link-bad-kind.rs | 0 .../ui/manual/manual-link-bad-kind.stderr | 0 .../ui/manual/manual-link-bad-search-path.rs | 0 .../ui/manual/manual-link-bad-search-path.stderr | 0 .../ui/manual/manual-link-framework.rs | 0 .../ui/manual/manual-link-framework.stderr | 0 .../ui/manual/manual-link-unsupported-kind.rs | 0 .../ui/manual/manual-link-unsupported-kind.stderr | 0 .../marker_trait_attr/issue-61651-type-mismatch.rs | 0 .../marker-attribute-on-non-trait.rs | 0 .../marker-attribute-on-non-trait.stderr | 0 .../marker-attribute-with-values.rs | 0 .../marker-attribute-with-values.stderr | 0 .../marker-trait-with-associated-items.rs | 0 .../marker-trait-with-associated-items.stderr | 0 .../overlap-doesnt-conflict-with-specialization.rs | 0 ...erlap-doesnt-conflict-with-specialization.stderr | 0 .../overlap-marker-trait-with-static-lifetime.rs | 0 ...overlap-marker-trait-with-underscore-lifetime.rs | 0 ...lap-marker-trait-with-underscore-lifetime.stderr | 0 .../ui/marker_trait_attr/overlap-marker-trait.rs | 0 .../marker_trait_attr/overlap-marker-trait.stderr | 0 ...overlap-permitted-for-annotated-marker-traits.rs | 0 .../overlapping-impl-1-modulo-regions.rs | 0 .../override-item-on-marker-trait.rs | 0 .../override-item-on-marker-trait.stderr | 0 .../ui/marker_trait_attr/region-overlap.rs | 0 .../ui/marker_trait_attr/region-overlap.stderr | 0 .../ui/marker_trait_attr/unsound-overlap.rs | 0 .../ui/marker_trait_attr/unsound-overlap.stderr | 0 .../ui/match/auxiliary/match_non_exhaustive_lib.rs | 0 .../ui/match/const_non_normal_zst_ref_pattern.rs | 0 {src/test => tests}/ui/match/expr-match-panic-fn.rs | 0 {src/test => tests}/ui/match/expr-match-panic.rs | 0 .../ui/match/expr_before_ident_pat.rs | 0 .../ui/match/expr_before_ident_pat.stderr | 0 {src/test => tests}/ui/match/guards.rs | 0 {src/test => tests}/ui/match/issue-11319.rs | 0 {src/test => tests}/ui/match/issue-11319.stderr | 0 {src/test => tests}/ui/match/issue-11940.rs | 0 {src/test => tests}/ui/match/issue-12552.rs | 0 {src/test => tests}/ui/match/issue-12552.stderr | 0 {src/test => tests}/ui/match/issue-18060.rs | 0 {src/test => tests}/ui/match/issue-26251.rs | 0 {src/test => tests}/ui/match/issue-26996.rs | 0 {src/test => tests}/ui/match/issue-27021.rs | 0 {src/test => tests}/ui/match/issue-33498.rs | 0 {src/test => tests}/ui/match/issue-41255.rs | 0 {src/test => tests}/ui/match/issue-41255.stderr | 0 {src/test => tests}/ui/match/issue-42679.rs | 0 .../ui/match/issue-46920-byte-array-patterns.rs | 0 {src/test => tests}/ui/match/issue-5530.rs | 0 {src/test => tests}/ui/match/issue-56685.rs | 0 {src/test => tests}/ui/match/issue-56685.stderr | 0 .../ui/match/issue-70972-dyn-trait.rs | 0 .../ui/match/issue-70972-dyn-trait.stderr | 0 {src/test => tests}/ui/match/issue-72680.rs | 0 {src/test => tests}/ui/match/issue-72896.rs | 0 .../test => tests}/ui/match/issue-74050-end-span.rs | 0 .../ui/match/issue-74050-end-span.stderr | 0 {src/test => tests}/ui/match/issue-82392.rs | 0 {src/test => tests}/ui/match/issue-82392.stdout | 0 {src/test => tests}/ui/match/issue-82866.rs | 0 {src/test => tests}/ui/match/issue-82866.stderr | 0 {src/test => tests}/ui/match/issue-84434.rs | 0 {src/test => tests}/ui/match/issue-91058.rs | 0 {src/test => tests}/ui/match/issue-91058.stderr | 0 {src/test => tests}/ui/match/issue-92100.rs | 0 {src/test => tests}/ui/match/issue-92100.stderr | 0 .../ui/match/match-arm-resolving-to-never.rs | 0 .../ui/match/match-arm-resolving-to-never.stderr | 0 {src/test => tests}/ui/match/match-bot-panic.rs | 0 {src/test => tests}/ui/match/match-disc-bot.rs | 0 {src/test => tests}/ui/match/match-fn-call.rs | 0 {src/test => tests}/ui/match/match-fn-call.stderr | 0 {src/test => tests}/ui/match/match-ill-type2.rs | 0 {src/test => tests}/ui/match/match-ill-type2.stderr | 0 .../ui/match/match-incompat-type-semi.rs | 0 .../ui/match/match-incompat-type-semi.stderr | 0 {src/test => tests}/ui/match/match-join.rs | 0 {src/test => tests}/ui/match/match-join.stderr | 0 .../ui/match/match-no-arms-unreachable-after.rs | 0 .../ui/match/match-no-arms-unreachable-after.stderr | 0 .../ui/match/match-on-negative-integer-ranges.rs | 0 .../ui/match/match-pattern-field-mismatch-2.rs | 0 .../ui/match/match-pattern-field-mismatch-2.stderr | 0 .../ui/match/match-pattern-field-mismatch.rs | 0 .../ui/match/match-pattern-field-mismatch.stderr | 0 {src/test => tests}/ui/match/match-range-fail-2.rs | 0 .../ui/match/match-range-fail-2.stderr | 0 {src/test => tests}/ui/match/match-range-fail.rs | 0 .../test => tests}/ui/match/match-range-fail.stderr | 0 .../ui/match/match-ref-mut-invariance.rs | 0 .../ui/match/match-ref-mut-invariance.stderr | 0 .../ui/match/match-ref-mut-let-invariance.rs | 0 .../ui/match/match-ref-mut-let-invariance.stderr | 0 .../ui/match/match-ref-mut-stability.rs | 0 {src/test => tests}/ui/match/match-struct.rs | 0 {src/test => tests}/ui/match/match-struct.stderr | 0 {src/test => tests}/ui/match/match-tag-nullary.rs | 0 .../ui/match/match-tag-nullary.stderr | 0 {src/test => tests}/ui/match/match-tag-unary.rs | 0 {src/test => tests}/ui/match/match-tag-unary.stderr | 0 .../ui/match/match-type-err-first-arm.rs | 0 .../ui/match/match-type-err-first-arm.stderr | 0 .../ui/match/match-unresolved-one-arm.rs | 0 .../ui/match/match-unresolved-one-arm.stderr | 0 .../test => tests}/ui/match/match-vec-mismatch-2.rs | 0 .../ui/match/match-vec-mismatch-2.stderr | 0 {src/test => tests}/ui/match/match-wildcards.rs | 0 .../test => tests}/ui/match/match_non_exhaustive.rs | 0 .../ui/match/match_non_exhaustive.stderr | 0 .../ui/match/pattern-deref-miscompile.rs | 0 {src/test => tests}/ui/match/single-line.rs | 0 {src/test => tests}/ui/match/single-line.stderr | 0 {src/test => tests}/ui/max-min-classes.rs | 0 .../ui/maximal_mir_to_hir_coverage.rs | 0 {src/test => tests}/ui/maybe-bounds.rs | 0 {src/test => tests}/ui/maybe-bounds.stderr | 0 {src/test => tests}/ui/meta/auxiliary/env.rs | 0 .../ui/meta/expected-error-correct-rev.a.stderr | 0 .../ui/meta/expected-error-correct-rev.rs | 0 .../ui/meta/meta-expected-error-wrong-rev.a.stderr | 0 .../ui/meta/meta-expected-error-wrong-rev.rs | 0 {src/test => tests}/ui/meta/revision-bad.rs | 0 {src/test => tests}/ui/meta/revision-ok.rs | 0 {src/test => tests}/ui/meta/rustc-env.rs | 0 {src/test => tests}/ui/methods/assign-to-method.rs | 0 .../ui/methods/assign-to-method.stderr | 0 .../ui/methods/auxiliary/ambig_impl_2_lib.rs | 0 .../ui/methods/auxiliary/macro-in-other-crate.rs | 0 .../ui/methods/auxiliary/method_self_arg1.rs | 0 .../ui/methods/auxiliary/method_self_arg2.rs | 0 .../field-method-suggestion-using-return-ty.rs | 0 .../field-method-suggestion-using-return-ty.stderr | 0 .../ui/methods/issues/issue-105732.rs | 0 .../ui/methods/issues/issue-105732.stderr | 0 .../test => tests}/ui/methods/issues/issue-61525.rs | 0 .../ui/methods/issues/issue-61525.stderr | 0 .../test => tests}/ui/methods/issues/issue-84495.rs | 0 .../ui/methods/issues/issue-84495.stderr | 0 .../test => tests}/ui/methods/issues/issue-90315.rs | 0 .../ui/methods/issues/issue-90315.stderr | 0 .../test => tests}/ui/methods/issues/issue-94581.rs | 0 .../ui/methods/issues/issue-94581.stderr | 0 .../method-ambig-one-trait-unknown-int-type.rs | 0 .../method-ambig-one-trait-unknown-int-type.stderr | 0 .../methods/method-ambig-two-traits-cross-crate.rs | 0 .../method-ambig-two-traits-cross-crate.stderr | 0 .../methods/method-ambig-two-traits-from-bounds.rs | 0 .../method-ambig-two-traits-from-bounds.stderr | 0 .../methods/method-ambig-two-traits-from-impls.rs | 0 .../method-ambig-two-traits-from-impls.stderr | 0 .../methods/method-ambig-two-traits-from-impls2.rs | 0 .../method-ambig-two-traits-from-impls2.stderr | 0 .../method-ambig-two-traits-with-default-method.rs | 0 ...thod-ambig-two-traits-with-default-method.stderr | 0 .../method-argument-inference-associated-type.rs | 0 .../ui/methods/method-call-err-msg.rs | 0 .../ui/methods/method-call-err-msg.stderr | 0 .../ui/methods/method-call-lifetime-args-fail.rs | 0 .../methods/method-call-lifetime-args-fail.stderr | 0 .../methods/method-call-lifetime-args-lint-fail.rs | 0 .../method-call-lifetime-args-lint-fail.stderr | 0 .../ui/methods/method-call-lifetime-args-lint.rs | 0 .../methods/method-call-lifetime-args-lint.stderr | 0 .../method-call-lifetime-args-subst-index.rs | 0 .../methods/method-call-lifetime-args-unresolved.rs | 0 .../method-call-lifetime-args-unresolved.stderr | 0 .../ui/methods/method-call-lifetime-args.rs | 0 .../ui/methods/method-call-lifetime-args.stderr | 0 .../ui/methods/method-call-type-binding.rs | 0 .../ui/methods/method-call-type-binding.stderr | 0 ...ref-to-same-trait-object-with-separate-params.rs | 0 ...to-same-trait-object-with-separate-params.stderr | 0 .../methods/method-early-bound-lifetimes-on-self.rs | 0 .../ui/methods/method-lookup-order.rs | 0 .../ui/methods/method-macro-backtrace.rs | 0 .../ui/methods/method-macro-backtrace.stderr | 0 .../ui/methods/method-missing-call.rs | 0 .../ui/methods/method-missing-call.stderr | 0 .../method-mut-self-modifies-mut-slice-lvalue.rs | 0 .../methods/method-normalize-bounds-issue-20604.rs | 0 .../methods/method-not-found-generic-arg-elision.rs | 0 .../method-not-found-generic-arg-elision.stderr | 0 .../ui/methods/method-on-ambiguous-numeric-type.rs | 0 .../methods/method-on-ambiguous-numeric-type.stderr | 0 .../ui/methods/method-path-in-pattern.rs | 0 .../ui/methods/method-path-in-pattern.stderr | 0 .../methods/method-probe-no-guessing-dyn-trait.rs | 0 {src/test => tests}/ui/methods/method-projection.rs | 0 .../ui/methods/method-recursive-blanket-impl.rs | 0 .../ui/methods/method-resolvable-path-in-pattern.rs | 0 .../method-resolvable-path-in-pattern.stderr | 0 {src/test => tests}/ui/methods/method-self-arg-1.rs | 0 .../ui/methods/method-self-arg-1.stderr | 0 {src/test => tests}/ui/methods/method-self-arg-2.rs | 0 .../ui/methods/method-self-arg-2.stderr | 0 .../ui/methods/method-self-arg-aux1.rs | 0 .../ui/methods/method-self-arg-aux2.rs | 0 .../ui/methods/method-self-arg-trait.rs | 0 {src/test => tests}/ui/methods/method-self-arg.rs | 0 .../ui/methods/method-trait-object-with-hrtb.rs | 0 .../methods/method-two-trait-defer-resolution-1.rs | 0 .../methods/method-two-trait-defer-resolution-2.rs | 0 ...hod-two-traits-distinguished-via-where-clause.rs | 0 .../ui/methods/method-where-clause.rs | 0 {src/test => tests}/ui/minus-string.rs | 0 {src/test => tests}/ui/minus-string.stderr | 0 {src/test => tests}/ui/mir-dataflow/README.md | 0 {src/test => tests}/ui/mir-dataflow/def-inits-1.rs | 0 .../ui/mir-dataflow/def-inits-1.stderr | 0 {src/test => tests}/ui/mir-dataflow/inits-1.rs | 0 {src/test => tests}/ui/mir-dataflow/inits-1.stderr | 0 .../test => tests}/ui/mir-dataflow/liveness-enum.rs | 0 .../ui/mir-dataflow/liveness-enum.stderr | 0 .../ui/mir-dataflow/liveness-projection.rs | 0 .../ui/mir-dataflow/liveness-projection.stderr | 0 {src/test => tests}/ui/mir-dataflow/liveness-ptr.rs | 0 .../ui/mir-dataflow/liveness-ptr.stderr | 0 {src/test => tests}/ui/mir-dataflow/uninits-1.rs | 0 .../test => tests}/ui/mir-dataflow/uninits-1.stderr | 0 {src/test => tests}/ui/mir-dataflow/uninits-2.rs | 0 .../test => tests}/ui/mir-dataflow/uninits-2.stderr | 0 {src/test => tests}/ui/mir-unpretty.rs | 0 {src/test => tests}/ui/mir-unpretty.stderr | 0 .../ui/mir/auxiliary/issue_76375_aux.rs | 0 .../ui/mir/auxiliary/mir_external_refs.rs | 0 .../ui/mir/drop-elaboration-after-borrowck-error.rs | 0 .../drop-elaboration-after-borrowck-error.stderr | 0 .../ui/mir/important-higher-ranked-regions.rs | 0 {src/test => tests}/ui/mir/issue-101844.rs | 0 {src/test => tests}/ui/mir/issue-102389.rs | 0 {src/test => tests}/ui/mir/issue-102389.stderr | 0 {src/test => tests}/ui/mir/issue-105809.rs | 0 {src/test => tests}/ui/mir/issue-106062.rs | 0 {src/test => tests}/ui/mir/issue-106062.stderr | 0 {src/test => tests}/ui/mir/issue-29227.rs | 0 {src/test => tests}/ui/mir/issue-46845.rs | 0 {src/test => tests}/ui/mir/issue-60390.rs | 0 {src/test => tests}/ui/mir/issue-66851.rs | 0 {src/test => tests}/ui/mir/issue-66930.rs | 0 .../ui/mir/issue-67639-normalization-ice.rs | 0 .../ui/mir/issue-67710-inline-projection.rs | 0 {src/test => tests}/ui/mir/issue-67947.rs | 0 {src/test => tests}/ui/mir/issue-67947.stderr | 0 {src/test => tests}/ui/mir/issue-68841.rs | 0 .../ui/mir/issue-71793-inline-args-storage.rs | 0 {src/test => tests}/ui/mir/issue-73914.rs | 0 {src/test => tests}/ui/mir/issue-74739.rs | 0 {src/test => tests}/ui/mir/issue-75053.rs | 0 {src/test => tests}/ui/mir/issue-75053.stderr | 0 .../ui/mir/issue-75419-validation-impl-trait.rs | 0 {src/test => tests}/ui/mir/issue-76248.rs | 0 {src/test => tests}/ui/mir/issue-76375.rs | 0 .../ui/mir/issue-76740-copy-propagation.rs | 0 .../ui/mir/issue-76803-branches-not-same.rs | 0 {src/test => tests}/ui/mir/issue-77002.rs | 0 .../ui/mir/issue-77359-simplify-arm-identity.rs | 0 {src/test => tests}/ui/mir/issue-77911.rs | 0 {src/test => tests}/ui/mir/issue-78496.rs | 0 {src/test => tests}/ui/mir/issue-80949.rs | 0 .../mir/issue-83499-input-output-iteration-ice.rs | 0 .../issue-83499-input-output-iteration-ice.stderr | 0 {src/test => tests}/ui/mir/issue-89485.rs | 0 {src/test => tests}/ui/mir/issue-91745.rs | 0 {src/test => tests}/ui/mir/issue-92893.rs | 0 {src/test => tests}/ui/mir/issue-92893.stderr | 0 {src/test => tests}/ui/mir/issue-99852.rs | 0 {src/test => tests}/ui/mir/issue-99866.rs | 0 {src/test => tests}/ui/mir/issue66339.rs | 0 .../mir-inlining/array-clone-with-generic-size.rs | 0 .../ice-issue-100550-unnormalized-projection.rs | 0 .../ui/mir/mir-inlining/ice-issue-45493.rs | 0 .../ui/mir/mir-inlining/ice-issue-45885.rs | 0 .../ui/mir/mir-inlining/ice-issue-68347.rs | 0 .../ui/mir/mir-inlining/ice-issue-77306-1.rs | 0 .../ui/mir/mir-inlining/ice-issue-77306-2.rs | 0 .../ui/mir/mir-inlining/ice-issue-77564.rs | 0 .../mir/mir-inlining/no-trait-method-issue-40473.rs | 0 .../mir/mir-inlining/var-debuginfo-issue-67586.rs | 0 .../ui/mir/mir-typeck-normalize-fn-sig.rs | 0 {src/test => tests}/ui/mir/mir_adt_construction.rs | 0 .../ui/mir/mir_ascription_coercion.rs | 0 {src/test => tests}/ui/mir/mir_assign_eval_order.rs | 0 .../ui/mir/mir_augmented_assignments.rs | 0 {src/test => tests}/ui/mir/mir_autoderef.rs | 0 {src/test => tests}/ui/mir/mir_boxing.rs | 0 .../ui/mir/mir_build_match_comparisons.rs | 0 .../ui/mir/mir_call_with_associated_type.rs | 0 {src/test => tests}/ui/mir/mir_calls_to_shims.rs | 0 {src/test => tests}/ui/mir/mir_cast_fn_ret.rs | 0 {src/test => tests}/ui/mir/mir_codegen_array.rs | 0 {src/test => tests}/ui/mir/mir_codegen_array_2.rs | 0 .../ui/mir/mir_codegen_call_converging.rs | 0 {src/test => tests}/ui/mir/mir_codegen_calls.rs | 0 .../ui/mir/mir_codegen_calls_converging_drops.rs | 0 .../ui/mir/mir_codegen_calls_converging_drops_2.rs | 0 .../ui/mir/mir_codegen_calls_diverging.rs | 0 .../ui/mir/mir_codegen_calls_diverging_drops.rs | 0 .../ui/mir/mir_codegen_critical_edge.rs | 0 {src/test => tests}/ui/mir/mir_codegen_spike1.rs | 0 {src/test => tests}/ui/mir/mir_codegen_switch.rs | 0 {src/test => tests}/ui/mir/mir_codegen_switchint.rs | 0 {src/test => tests}/ui/mir/mir_coercion_casts.rs | 0 {src/test => tests}/ui/mir/mir_coercions.rs | 0 .../ui/mir/mir_const_prop_identity.rs | 0 .../ui/mir/mir_const_prop_tuple_field_reorder.rs | 0 {src/test => tests}/ui/mir/mir_constval_adts.rs | 0 .../ui/mir/mir_detects_invalid_ops.rs | 0 .../ui/mir/mir_detects_invalid_ops.stderr | 0 {src/test => tests}/ui/mir/mir_drop_order.rs | 0 {src/test => tests}/ui/mir/mir_drop_panics.rs | 0 {src/test => tests}/ui/mir/mir_dynamic_drops_1.rs | 0 {src/test => tests}/ui/mir/mir_dynamic_drops_2.rs | 0 {src/test => tests}/ui/mir/mir_dynamic_drops_3.rs | 0 .../test => tests}/ui/mir/mir_early_return_scope.rs | 0 {src/test => tests}/ui/mir/mir_fat_ptr.rs | 0 {src/test => tests}/ui/mir/mir_fat_ptr_drop.rs | 0 {src/test => tests}/ui/mir/mir_heavy_promoted.rs | 0 {src/test => tests}/ui/mir/mir_indexing_oob_1.rs | 0 {src/test => tests}/ui/mir/mir_indexing_oob_2.rs | 0 {src/test => tests}/ui/mir/mir_indexing_oob_3.rs | 0 .../ui/mir/mir_let_chains_drop_order.rs | 0 {src/test => tests}/ui/mir/mir_match_arm_guard.rs | 0 {src/test => tests}/ui/mir/mir_match_test.rs | 0 {src/test => tests}/ui/mir/mir_misc_casts.rs | 0 {src/test => tests}/ui/mir/mir_overflow_off.rs | 0 {src/test => tests}/ui/mir/mir_raw_fat_ptr.rs | 0 {src/test => tests}/ui/mir/mir_refs_correct.rs | 0 {src/test => tests}/ui/mir/mir_small_agg_arg.rs | 0 {src/test => tests}/ui/mir/mir_static_subtype.rs | 0 .../ui/mir/mir_struct_with_assoc_ty.rs | 0 {src/test => tests}/ui/mir/mir_temp_promotions.rs | 0 {src/test => tests}/ui/mir/mir_void_return.rs | 0 {src/test => tests}/ui/mir/mir_void_return_2.rs | 0 .../ui/mir/remove-zsts-query-cycle.rs | 0 {src/test => tests}/ui/mir/simplify-branch-same.rs | 0 .../ui/mir/ssa-analysis-regression-50041.rs | 0 {src/test => tests}/ui/mir/thir-constparam-temp.rs | 0 .../ui/mir/thir-constparam-temp.stderr | 0 .../issue-95978-validator-lifetime-comparison.rs | 0 .../ui/mir/validate/needs-reveal-all.rs | 0 {src/test => tests}/ui/mismatched_types/E0053.rs | 0 .../test => tests}/ui/mismatched_types/E0053.stderr | 0 {src/test => tests}/ui/mismatched_types/E0409.rs | 0 .../test => tests}/ui/mismatched_types/E0409.stderr | 0 {src/test => tests}/ui/mismatched_types/E0631.rs | 0 .../test => tests}/ui/mismatched_types/E0631.stderr | 0 {src/test => tests}/ui/mismatched_types/abridged.rs | 0 .../ui/mismatched_types/abridged.stderr | 0 .../assignment-operator-unimplemented.rs | 0 .../assignment-operator-unimplemented.stderr | 0 {src/test => tests}/ui/mismatched_types/binops.rs | 0 .../ui/mismatched_types/binops.stderr | 0 .../ui/mismatched_types/cast-rfc0401.rs | 0 .../ui/mismatched_types/cast-rfc0401.stderr | 0 ...losure-arg-count-expected-type-issue-47244.fixed | 0 .../closure-arg-count-expected-type-issue-47244.rs | 0 ...osure-arg-count-expected-type-issue-47244.stderr | 0 .../ui/mismatched_types/closure-arg-count.rs | 0 .../ui/mismatched_types/closure-arg-count.stderr | 0 .../mismatched_types/closure-arg-type-mismatch.rs | 0 .../closure-arg-type-mismatch.stderr | 0 .../ui/mismatched_types/closure-mismatch.rs | 0 .../ui/mismatched_types/closure-mismatch.stderr | 0 .../ui/mismatched_types/const-fn-in-trait.rs | 0 .../ui/mismatched_types/const-fn-in-trait.stderr | 0 ...est-boxed-trait-objects-instead-of-impl-trait.rs | 0 ...boxed-trait-objects-instead-of-impl-trait.stderr | 0 .../mismatched_types/dont-point-return-on-E0308.rs | 0 .../dont-point-return-on-E0308.stderr | 0 .../float-literal-inference-restrictions.rs | 0 .../float-literal-inference-restrictions.stderr | 0 .../ui/mismatched_types/fn-variance-1.rs | 0 .../ui/mismatched_types/fn-variance-1.stderr | 0 .../ui/mismatched_types/for-loop-has-unit-body.rs | 0 .../mismatched_types/for-loop-has-unit-body.stderr | 0 .../ui/mismatched_types/issue-106182.fixed | 0 .../ui/mismatched_types/issue-106182.rs | 0 .../ui/mismatched_types/issue-106182.stderr | 0 .../ui/mismatched_types/issue-19109.rs | 0 .../ui/mismatched_types/issue-19109.stderr | 0 .../ui/mismatched_types/issue-26480.rs | 0 .../ui/mismatched_types/issue-26480.stderr | 0 .../ui/mismatched_types/issue-35030.rs | 0 .../ui/mismatched_types/issue-35030.stderr | 0 .../ui/mismatched_types/issue-36053-2.rs | 0 .../ui/mismatched_types/issue-36053-2.stderr | 0 .../ui/mismatched_types/issue-38371-unfixable.rs | 0 .../mismatched_types/issue-38371-unfixable.stderr | 0 .../ui/mismatched_types/issue-38371.fixed | 0 .../ui/mismatched_types/issue-38371.rs | 0 .../ui/mismatched_types/issue-38371.stderr | 0 .../ui/mismatched_types/issue-47706-trait.rs | 0 .../ui/mismatched_types/issue-47706-trait.stderr | 0 .../ui/mismatched_types/issue-47706.rs | 0 .../ui/mismatched_types/issue-47706.stderr | 0 .../issue-74918-missing-lifetime.rs | 0 .../issue-74918-missing-lifetime.stderr | 0 .../mismatched_types/issue-75361-mismatched-impl.rs | 0 .../issue-75361-mismatched-impl.stderr | 0 .../ui/mismatched_types/issue-84976.rs | 0 .../ui/mismatched_types/issue-84976.stderr | 0 {src/test => tests}/ui/mismatched_types/main.rs | 0 {src/test => tests}/ui/mismatched_types/main.stderr | 0 .../method-help-unsatisfied-bound.rs | 0 .../method-help-unsatisfied-bound.stderr | 0 .../mismatched_types/non_zero_assigned_something.rs | 0 .../non_zero_assigned_something.stderr | 0 .../ui/mismatched_types/normalize-fn-sig.rs | 0 .../ui/mismatched_types/normalize-fn-sig.stderr | 0 .../ui/mismatched_types/numeric-literal-cast.rs | 0 .../ui/mismatched_types/numeric-literal-cast.stderr | 0 .../ui/mismatched_types/overloaded-calls-bad.rs | 0 .../ui/mismatched_types/overloaded-calls-bad.stderr | 0 .../ui/mismatched_types/recovered-block.rs | 0 .../ui/mismatched_types/recovered-block.stderr | 0 .../ui/mismatched_types/ref-pat-suggestions.fixed | 0 .../ui/mismatched_types/ref-pat-suggestions.rs | 0 .../ui/mismatched_types/ref-pat-suggestions.stderr | 0 .../ui/mismatched_types/show_module.rs | 0 .../ui/mismatched_types/show_module.stderr | 0 .../ui/mismatched_types/similar_paths.rs | 0 .../ui/mismatched_types/similar_paths.stderr | 0 .../ui/mismatched_types/similar_paths_primitive.rs | 0 .../mismatched_types/similar_paths_primitive.stderr | 0 ...adding-or-removing-ref-for-binding-pattern.fixed | 0 ...st-adding-or-removing-ref-for-binding-pattern.rs | 0 ...dding-or-removing-ref-for-binding-pattern.stderr | 0 ...-boxed-trait-objects-instead-of-impl-trait.fixed | 0 ...est-boxed-trait-objects-instead-of-impl-trait.rs | 0 ...boxed-trait-objects-instead-of-impl-trait.stderr | 0 .../suggest-removing-tuple-struct-field.fixed | 0 .../suggest-removing-tuple-struct-field.rs | 0 .../suggest-removing-tuple-struct-field.stderr | 0 .../ui/mismatched_types/trait-bounds-cant-coerce.rs | 0 .../trait-bounds-cant-coerce.stderr | 0 .../trait-impl-fn-incompatibility.rs | 0 .../trait-impl-fn-incompatibility.stderr | 0 .../unboxed-closures-vtable-mismatch.rs | 0 .../unboxed-closures-vtable-mismatch.stderr | 0 .../ui/mismatched_types/wrap-suggestion-privacy.rs | 0 .../mismatched_types/wrap-suggestion-privacy.stderr | 0 .../missing-trait-bounds/auxiliary/issue-69725.rs | 0 .../ui/missing-trait-bounds/issue-35677.fixed | 0 .../ui/missing-trait-bounds/issue-35677.rs | 0 .../ui/missing-trait-bounds/issue-35677.stderr | 0 .../ui/missing-trait-bounds/issue-69725.fixed | 0 .../ui/missing-trait-bounds/issue-69725.rs | 0 .../ui/missing-trait-bounds/issue-69725.stderr | 0 .../missing-trait-bound-for-op.fixed | 0 .../missing-trait-bound-for-op.rs | 0 .../missing-trait-bound-for-op.stderr | 0 .../missing-trait-bounds-for-method-call.rs | 0 .../missing-trait-bounds-for-method-call.stderr | 0 .../ui/missing/auxiliary/two_macros.rs | 0 {src/test => tests}/ui/missing/missing-allocator.rs | 0 .../ui/missing/missing-allocator.stderr | 0 .../test => tests}/ui/missing/missing-block-hint.rs | 0 .../ui/missing/missing-block-hint.stderr | 0 .../ui/missing/missing-comma-in-match.fixed | 0 .../ui/missing/missing-comma-in-match.rs | 0 .../ui/missing/missing-comma-in-match.stderr | 0 .../ui/missing/missing-derivable-attr.rs | 0 .../ui/missing/missing-derivable-attr.stderr | 0 .../ui/missing/missing-fields-in-struct-pattern.rs | 0 .../missing/missing-fields-in-struct-pattern.stderr | 0 .../ui/missing/missing-items/auxiliary/m1.rs | 0 {src/test => tests}/ui/missing/missing-items/m2.rs | 0 .../ui/missing/missing-items/m2.stderr | 0 .../missing/missing-items/missing-type-parameter.rs | 0 .../missing-items/missing-type-parameter.stderr | 0 .../missing-items/missing-type-parameter2.rs | 0 .../missing-items/missing-type-parameter2.stderr | 0 {src/test => tests}/ui/missing/missing-macro-use.rs | 0 .../ui/missing/missing-macro-use.stderr | 0 {src/test => tests}/ui/missing/missing-main.rs | 0 {src/test => tests}/ui/missing/missing-main.stderr | 0 {src/test => tests}/ui/missing/missing-return.rs | 0 .../test => tests}/ui/missing/missing-return.stderr | 0 {src/test => tests}/ui/missing/missing-stability.rs | 0 .../ui/missing/missing-stability.stderr | 0 {src/test => tests}/ui/missing_debug_impls.rs | 0 {src/test => tests}/ui/missing_debug_impls.stderr | 0 {src/test => tests}/ui/missing_non_modrs_mod/foo.rs | 0 .../ui/missing_non_modrs_mod/foo_inline.rs | 0 .../missing_non_modrs_mod/missing_non_modrs_mod.rs | 0 .../missing_non_modrs_mod.stderr | 0 .../missing_non_modrs_mod_inline.rs | 0 .../missing_non_modrs_mod_inline.stderr | 0 .../ui/mod-subitem-as-enum-variant.rs | 0 .../ui/mod-subitem-as-enum-variant.stderr | 0 .../test => tests}/ui/module-macro_use-arguments.rs | 0 .../ui/module-macro_use-arguments.stderr | 0 .../ui/modules/auxiliary/dummy_lib.rs | 0 .../ui/modules/auxiliary/two_macros_2.rs | 0 {src/test => tests}/ui/modules/issue-56411-aux.rs | 0 {src/test => tests}/ui/modules/issue-56411.rs | 0 {src/test => tests}/ui/modules/issue-56411.stderr | 0 {src/test => tests}/ui/modules/mod-inside-fn.rs | 0 {src/test => tests}/ui/modules/mod-view-items.rs | 0 {src/test => tests}/ui/modules/mod_dir_implicit.rs | 0 .../mod_dir_implicit_aux/compiletest-ignore-dir | 0 .../ui/modules/mod_dir_implicit_aux/mod.rs | 0 {src/test => tests}/ui/modules/mod_dir_path.rs | 0 {src/test => tests}/ui/modules/mod_dir_path2.rs | 0 {src/test => tests}/ui/modules/mod_dir_path3.rs | 0 .../test => tests}/ui/modules/mod_dir_path_multi.rs | 0 {src/test => tests}/ui/modules/mod_dir_recursive.rs | 0 {src/test => tests}/ui/modules/mod_dir_simple.rs | 0 .../modules/mod_dir_simple/compiletest-ignore-dir | 0 .../ui/modules/mod_dir_simple/load_another_mod.rs | 0 .../ui/modules/mod_dir_simple/test.rs | 0 {src/test => tests}/ui/modules/mod_file.rs | 0 {src/test => tests}/ui/modules/mod_file_aux.rs | 0 .../ui/modules/mod_file_with_path_attr.rs | 0 .../compiletest-ignore-dir | 0 .../float-template/inst_f32.rs | 0 .../float-template/inst_f64.rs | 0 .../float-template/inst_float.rs | 0 {src/test => tests}/ui/modules/path-invalid-form.rs | 0 .../ui/modules/path-invalid-form.stderr | 0 {src/test => tests}/ui/modules/path-macro.rs | 0 {src/test => tests}/ui/modules/path-macro.stderr | 0 {src/test => tests}/ui/modules/path-no-file-name.rs | 0 .../ui/modules/path-no-file-name.stderr | 0 .../ui/modules/special_module_name.rs | 0 .../ui/modules/special_module_name.stderr | 0 .../ui/modules/special_module_name_ignore.rs | 0 .../ui/modules_and_files_visibility/mod_file_aux.rs | 0 .../mod_file_correct_spans.rs | 0 .../mod_file_correct_spans.stderr | 0 .../mod_file_disambig.rs | 0 .../mod_file_disambig.stderr | 0 .../mod_file_disambig_aux.rs | 0 .../mod_file_disambig_aux/mod.rs | 0 .../test => tests}/ui/monomorphize-abi-alignment.rs | 0 .../ui/moves/borrow-closures-instead-of-move.rs | 0 .../ui/moves/borrow-closures-instead-of-move.stderr | 0 .../ui/moves/issue-46099-move-in-macro.rs | 0 .../ui/moves/issue-46099-move-in-macro.stderr | 0 .../ui/moves/issue-72649-uninit-in-loop.rs | 0 .../ui/moves/issue-72649-uninit-in-loop.stderr | 0 .../ui/moves/issue-75904-move-closure-loop.rs | 0 .../ui/moves/issue-75904-move-closure-loop.stderr | 0 .../ui/moves/issue-99470-move-out-of-some.rs | 0 .../ui/moves/issue-99470-move-out-of-some.stderr | 0 {src/test => tests}/ui/moves/move-1-unique.rs | 0 {src/test => tests}/ui/moves/move-2-unique.rs | 0 {src/test => tests}/ui/moves/move-2.rs | 0 {src/test => tests}/ui/moves/move-3-unique.rs | 0 {src/test => tests}/ui/moves/move-4-unique.rs | 0 {src/test => tests}/ui/moves/move-4.rs | 0 {src/test => tests}/ui/moves/move-arg-2-unique.rs | 0 {src/test => tests}/ui/moves/move-arg-2.rs | 0 {src/test => tests}/ui/moves/move-arg.rs | 0 {src/test => tests}/ui/moves/move-deref-coercion.rs | 0 .../ui/moves/move-deref-coercion.stderr | 0 .../ui/moves/move-fn-self-receiver.rs | 0 .../ui/moves/move-fn-self-receiver.stderr | 0 .../ui/moves/move-guard-same-consts.rs | 0 .../ui/moves/move-guard-same-consts.stderr | 0 {src/test => tests}/ui/moves/move-in-guard-1.rs | 0 {src/test => tests}/ui/moves/move-in-guard-1.stderr | 0 {src/test => tests}/ui/moves/move-in-guard-2.rs | 0 {src/test => tests}/ui/moves/move-in-guard-2.stderr | 0 .../ui/moves/move-into-dead-array-1.rs | 0 .../ui/moves/move-into-dead-array-1.stderr | 0 .../ui/moves/move-into-dead-array-2.rs | 0 .../ui/moves/move-into-dead-array-2.stderr | 0 {src/test => tests}/ui/moves/move-nullary-fn.rs | 0 {src/test => tests}/ui/moves/move-of-addr-of-mut.rs | 0 .../ui/moves/move-of-addr-of-mut.stderr | 0 {src/test => tests}/ui/moves/move-out-of-array-1.rs | 0 .../ui/moves/move-out-of-array-1.stderr | 0 .../ui/moves/move-out-of-array-ref.rs | 0 .../ui/moves/move-out-of-array-ref.stderr | 0 {src/test => tests}/ui/moves/move-out-of-field.rs | 0 {src/test => tests}/ui/moves/move-out-of-slice-1.rs | 0 .../ui/moves/move-out-of-slice-1.stderr | 0 {src/test => tests}/ui/moves/move-out-of-slice-2.rs | 0 .../ui/moves/move-out-of-slice-2.stderr | 0 .../ui/moves/move-out-of-tuple-field.rs | 0 .../ui/moves/move-out-of-tuple-field.stderr | 0 {src/test => tests}/ui/moves/move-scalar.rs | 0 .../ui/moves/moves-based-on-type-access-to-field.rs | 0 .../moves-based-on-type-access-to-field.stderr | 0 .../ui/moves/moves-based-on-type-block-bad.rs | 0 .../ui/moves/moves-based-on-type-block-bad.stderr | 0 .../moves/moves-based-on-type-capture-clause-bad.rs | 0 .../moves-based-on-type-capture-clause-bad.stderr | 0 .../ui/moves/moves-based-on-type-capture-clause.rs | 0 .../moves-based-on-type-cyclic-types-issue-4821.rs | 0 ...ves-based-on-type-cyclic-types-issue-4821.stderr | 0 ...oves-based-on-type-distribute-copy-over-paren.rs | 0 ...-based-on-type-distribute-copy-over-paren.stderr | 0 .../ui/moves/moves-based-on-type-exprs.rs | 0 .../ui/moves/moves-based-on-type-exprs.stderr | 0 .../ui/moves/moves-based-on-type-match-bindings.rs | 0 .../moves/moves-based-on-type-match-bindings.stderr | 0 ...ed-on-type-move-out-of-closure-env-issue-1965.rs | 0 ...n-type-move-out-of-closure-env-issue-1965.stderr | 0 ...oves-based-on-type-no-recursive-stack-closure.rs | 0 ...-based-on-type-no-recursive-stack-closure.stderr | 0 .../ui/moves/moves-based-on-type-tuple.rs | 0 .../ui/moves/moves-based-on-type-tuple.stderr | 0 .../ui/moves/moves-sru-moved-field.rs | 0 .../ui/moves/moves-sru-moved-field.stderr | 0 {src/test => tests}/ui/moves/pin-mut-reborrow.fixed | 0 {src/test => tests}/ui/moves/pin-mut-reborrow.rs | 0 .../test => tests}/ui/moves/pin-mut-reborrow.stderr | 0 {src/test => tests}/ui/moves/suggest-clone.fixed | 0 {src/test => tests}/ui/moves/suggest-clone.rs | 0 {src/test => tests}/ui/moves/suggest-clone.stderr | 0 .../moves/use_of_moved_value_clone_suggestions.rs | 0 .../use_of_moved_value_clone_suggestions.stderr | 0 .../moves/use_of_moved_value_copy_suggestions.fixed | 0 .../ui/moves/use_of_moved_value_copy_suggestions.rs | 0 .../use_of_moved_value_copy_suggestions.stderr | 0 {src/test => tests}/ui/msvc-data-only.rs | 0 {src/test => tests}/ui/multibyte.rs | 0 {src/test => tests}/ui/multiline-comment.rs | 0 {src/test => tests}/ui/mut-function-arguments.rs | 0 {src/test => tests}/ui/mut/mut-cant-alias.rs | 0 {src/test => tests}/ui/mut/mut-cant-alias.stderr | 0 {src/test => tests}/ui/mut/mut-cross-borrowing.rs | 0 .../ui/mut/mut-cross-borrowing.stderr | 0 .../ui/mut/mut-pattern-internal-mutability.rs | 0 .../ui/mut/mut-pattern-internal-mutability.stderr | 0 .../test => tests}/ui/mut/mut-pattern-mismatched.rs | 0 .../ui/mut/mut-pattern-mismatched.stderr | 0 {src/test => tests}/ui/mut/mut-ref.rs | 0 {src/test => tests}/ui/mut/mut-ref.stderr | 0 {src/test => tests}/ui/mut/mut-suggestion.rs | 0 {src/test => tests}/ui/mut/mut-suggestion.stderr | 0 .../test => tests}/ui/mut/mutable-class-fields-2.rs | 0 .../ui/mut/mutable-class-fields-2.stderr | 0 {src/test => tests}/ui/mut/mutable-class-fields.rs | 0 .../ui/mut/mutable-class-fields.stderr | 0 {src/test => tests}/ui/mut/mutable-enum-indirect.rs | 0 .../ui/mut/mutable-enum-indirect.stderr | 0 .../ui/mut/no-mut-lint-for-desugared-mut.rs | 0 {src/test => tests}/ui/mutexguard-sync.rs | 0 {src/test => tests}/ui/mutexguard-sync.stderr | 0 {src/test => tests}/ui/mutual-recursion-group.rs | 0 .../ui/namespace/auxiliary/namespace-mix.rs | 0 .../ui/namespace/auxiliary/namespaced_enums.rs | 0 {src/test => tests}/ui/namespace/namespace-mix.rs | 0 .../ui/namespace/namespace-mix.stderr | 0 .../namespaced-enum-glob-import-no-impls-xcrate.rs | 0 ...mespaced-enum-glob-import-no-impls-xcrate.stderr | 0 .../namespaced-enum-glob-import-no-impls.rs | 0 .../namespaced-enum-glob-import-no-impls.stderr | 0 .../ui/native-library-link-flags/empty-kind-1.rs | 0 .../native-library-link-flags/empty-kind-1.stderr | 0 .../ui/native-library-link-flags/empty-kind-2.rs | 0 .../native-library-link-flags/empty-kind-2.stderr | 0 .../ui/native-library-link-flags/link-arg-error.rs | 0 .../native-library-link-flags/link-arg-error.stderr | 0 .../native-library-link-flags/link-arg-from-rs.rs | 0 .../link-arg-from-rs.stderr | 0 .../mix-bundle-and-whole-archive-link-attr.rs | 0 .../mix-bundle-and-whole-archive-link-attr.stderr | 0 .../mix-bundle-and-whole-archive.rs | 0 .../mix-bundle-and-whole-archive.stderr | 0 .../modifiers-override-2.rs | 0 .../modifiers-override-2.stderr | 0 .../modifiers-override-3.rs | 0 .../modifiers-override-3.stderr | 0 .../native-library-link-flags/modifiers-override.rs | 0 .../modifiers-override.stderr | 0 .../suggest-libname-only-1.rs | 0 .../suggest-libname-only-1.stderr | 0 .../suggest-libname-only-2.rs | 0 .../suggest-libname-only-2.stderr | 0 {src/test => tests}/ui/nested-block-comment.rs | 0 {src/test => tests}/ui/nested-cfg-attrs.rs | 0 {src/test => tests}/ui/nested-cfg-attrs.stderr | 0 {src/test => tests}/ui/nested-class.rs | 0 {src/test => tests}/ui/nested-ty-params.rs | 0 {src/test => tests}/ui/nested-ty-params.stderr | 0 {src/test => tests}/ui/never_type/adjust_never.rs | 0 {src/test => tests}/ui/never_type/auto-traits.rs | 0 .../ui/never_type/call-fn-never-arg-wrong-type.rs | 0 .../never_type/call-fn-never-arg-wrong-type.stderr | 0 .../ui/never_type/call-fn-never-arg.rs | 0 {src/test => tests}/ui/never_type/cast-never.rs | 0 .../never_type/defaulted-never-note.fallback.stderr | 0 .../ui/never_type/defaulted-never-note.rs | 0 .../ui/never_type/dispatch_from_dyn_zst.rs | 0 .../never_type/diverging-fallback-control-flow.rs | 0 .../diverging-fallback-no-leak.fallback.stderr | 0 .../ui/never_type/diverging-fallback-no-leak.rs | 0 .../diverging-fallback-unconstrained-return.rs | 0 .../ui/never_type/diverging-tuple-parts-39485.rs | 0 .../never_type/diverging-tuple-parts-39485.stderr | 0 .../ui/never_type/exhaustive_patterns.rs | 0 .../ui/never_type/exhaustive_patterns.stderr | 0 {src/test => tests}/ui/never_type/expr-empty-ret.rs | 0 .../ui/never_type/fallback-closure-ret.rs | 0 .../fallback-closure-wrap.fallback.stderr | 0 .../ui/never_type/fallback-closure-wrap.rs | 0 .../never_type/feature-gate-never_type_fallback.rs | 0 .../feature-gate-never_type_fallback.stderr | 0 {src/test => tests}/ui/never_type/impl-for-never.rs | 0 .../ui/never_type/impl_trait_fallback.rs | 0 .../ui/never_type/impl_trait_fallback2.rs | 0 .../ui/never_type/impl_trait_fallback2.stderr | 0 .../ui/never_type/impl_trait_fallback3.rs | 0 .../ui/never_type/impl_trait_fallback3.stderr | 0 .../ui/never_type/impl_trait_fallback4.rs | 0 .../ui/never_type/impl_trait_fallback4.stderr | 0 {src/test => tests}/ui/never_type/issue-10176.rs | 0 .../test => tests}/ui/never_type/issue-10176.stderr | 0 {src/test => tests}/ui/never_type/issue-13352.rs | 0 .../test => tests}/ui/never_type/issue-13352.stderr | 0 {src/test => tests}/ui/never_type/issue-2149.rs | 0 {src/test => tests}/ui/never_type/issue-2149.stderr | 0 {src/test => tests}/ui/never_type/issue-44402.rs | 0 {src/test => tests}/ui/never_type/issue-51506.rs | 0 .../test => tests}/ui/never_type/issue-51506.stderr | 0 {src/test => tests}/ui/never_type/issue-52443.rs | 0 .../test => tests}/ui/never_type/issue-52443.stderr | 0 {src/test => tests}/ui/never_type/issue-5500-1.rs | 0 {src/test => tests}/ui/never_type/issue-96335.rs | 0 .../test => tests}/ui/never_type/issue-96335.stderr | 0 .../ui/never_type/never-assign-dead-code.rs | 0 .../ui/never_type/never-assign-dead-code.stderr | 0 .../ui/never_type/never-assign-wrong-type.rs | 0 .../ui/never_type/never-assign-wrong-type.stderr | 0 .../ui/never_type/never-associated-type.rs | 0 .../ui/never_type/never-from-impl-is-reserved.rs | 0 .../never_type/never-from-impl-is-reserved.stderr | 0 {src/test => tests}/ui/never_type/never-result.rs | 0 {src/test => tests}/ui/never_type/never-type-arg.rs | 0 .../ui/never_type/never-type-rvalues.rs | 0 ...ver-value-fallback-issue-66757.nofallback.stderr | 0 .../never_type/never-value-fallback-issue-66757.rs | 0 .../test => tests}/ui/never_type/never_coercions.rs | 0 .../ui/never_type/never_transmute_never.rs | 0 .../ui/never_type/return-never-coerce.rs | 0 {src/test => tests}/ui/never_type/try_from.rs | 0 {src/test => tests}/ui/new-impl-syntax.rs | 0 {src/test => tests}/ui/new-import-syntax.rs | 0 {src/test => tests}/ui/new-style-constants.rs | 0 {src/test => tests}/ui/new-unicode-escapes.rs | 0 {src/test => tests}/ui/new-unsafe-pointers.rs | 0 {src/test => tests}/ui/newlambdas.rs | 0 {src/test => tests}/ui/newtype-polymorphic.rs | 0 {src/test => tests}/ui/newtype.rs | 0 .../ui/nll/assign-while-to-immutable.rs | 0 .../test => tests}/ui/nll/borrow-use-issue-46875.rs | 0 ...ck-thread-local-static-mut-borrow-outlives-fn.rs | 0 {src/test => tests}/ui/nll/borrowed-local-error.rs | 0 .../ui/nll/borrowed-local-error.stderr | 0 .../ui/nll/borrowed-match-issue-45045.rs | 0 .../ui/nll/borrowed-match-issue-45045.stderr | 0 .../ui/nll/borrowed-referent-issue-38899.rs | 0 .../ui/nll/borrowed-referent-issue-38899.stderr | 0 .../ui/nll/borrowed-temporary-error.rs | 0 .../ui/nll/borrowed-temporary-error.stderr | 0 .../ui/nll/borrowed-universal-error-2.rs | 0 .../ui/nll/borrowed-universal-error-2.stderr | 0 .../ui/nll/borrowed-universal-error.rs | 0 .../ui/nll/borrowed-universal-error.stderr | 0 .../ui/nll/cannot-move-block-spans.rs | 0 .../ui/nll/cannot-move-block-spans.stderr | 0 {src/test => tests}/ui/nll/capture-mut-ref.fixed | 0 {src/test => tests}/ui/nll/capture-mut-ref.rs | 0 {src/test => tests}/ui/nll/capture-mut-ref.stderr | 0 {src/test => tests}/ui/nll/capture-ref-in-struct.rs | 0 .../ui/nll/capture-ref-in-struct.stderr | 0 {src/test => tests}/ui/nll/closure-access-spans.rs | 0 .../ui/nll/closure-access-spans.stderr | 0 {src/test => tests}/ui/nll/closure-borrow-spans.rs | 0 .../ui/nll/closure-borrow-spans.stderr | 0 {src/test => tests}/ui/nll/closure-captures.rs | 0 {src/test => tests}/ui/nll/closure-captures.stderr | 0 ...osure-malformed-projection-input-issue-102800.rs | 0 ...e-malformed-projection-input-issue-102800.stderr | 0 {src/test => tests}/ui/nll/closure-move-spans.rs | 0 .../test => tests}/ui/nll/closure-move-spans.stderr | 0 .../closure-requirements/escape-argument-callee.rs | 0 .../escape-argument-callee.stderr | 0 .../ui/nll/closure-requirements/escape-argument.rs | 0 .../nll/closure-requirements/escape-argument.stderr | 0 .../nll/closure-requirements/escape-upvar-nested.rs | 0 .../closure-requirements/escape-upvar-nested.stderr | 0 .../ui/nll/closure-requirements/escape-upvar-ref.rs | 0 .../closure-requirements/escape-upvar-ref.stderr | 0 .../issue-58127-mutliple-requirements.rs | 0 .../propagate-approximated-fail-no-postdom.rs | 0 .../propagate-approximated-fail-no-postdom.stderr | 0 .../propagate-approximated-ref.rs | 0 .../propagate-approximated-ref.stderr | 0 ...ated-shorter-to-static-comparing-against-free.rs | 0 ...-shorter-to-static-comparing-against-free.stderr | 0 ...agate-approximated-shorter-to-static-no-bound.rs | 0 ...e-approximated-shorter-to-static-no-bound.stderr | 0 ...te-approximated-shorter-to-static-wrong-bound.rs | 0 ...pproximated-shorter-to-static-wrong-bound.stderr | 0 .../propagate-approximated-val.rs | 0 .../propagate-approximated-val.stderr | 0 .../propagate-despite-same-free-region.rs | 0 .../propagate-despite-same-free-region.stderr | 0 ...ropagate-fail-to-approximate-longer-no-bounds.rs | 0 ...gate-fail-to-approximate-longer-no-bounds.stderr | 0 ...agate-fail-to-approximate-longer-wrong-bounds.rs | 0 ...e-fail-to-approximate-longer-wrong-bounds.stderr | 0 .../propagate-from-trait-match.rs | 0 .../propagate-from-trait-match.stderr | 0 .../propagate-multiple-requirements.rs | 0 .../propagate-multiple-requirements.stderr | 0 .../region-lbr-anon-does-not-outlive-static.rs | 0 .../region-lbr-anon-does-not-outlive-static.stderr | 0 .../region-lbr-named-does-not-outlive-static.rs | 0 .../region-lbr-named-does-not-outlive-static.stderr | 0 .../region-lbr1-does-not-outlive-ebr2.rs | 0 .../region-lbr1-does-not-outlive-ebr2.stderr | 0 ...-lbr1-does-outlive-lbr2-because-implied-bound.rs | 0 .../return-wrong-bound-region.rs | 0 .../return-wrong-bound-region.stderr | 0 {src/test => tests}/ui/nll/closure-use-spans.rs | 0 {src/test => tests}/ui/nll/closure-use-spans.stderr | 0 {src/test => tests}/ui/nll/closures-in-loops.rs | 0 {src/test => tests}/ui/nll/closures-in-loops.stderr | 0 .../ui/nll/constant-thread-locals-issue-47053.rs | 0 .../nll/constant-thread-locals-issue-47053.stderr | 0 {src/test => tests}/ui/nll/constant.rs | 0 .../ui/nll/continue-after-missing-main.rs | 0 .../ui/nll/continue-after-missing-main.stderr | 0 .../ui/nll/decl-macro-illegal-copy.rs | 0 .../ui/nll/decl-macro-illegal-copy.stderr | 0 .../do-not-ignore-lifetime-bounds-in-copy-proj.rs | 0 ...o-not-ignore-lifetime-bounds-in-copy-proj.stderr | 0 .../ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs | 0 .../do-not-ignore-lifetime-bounds-in-copy.stderr | 0 {src/test => tests}/ui/nll/dont-print-desugared.rs | 0 .../ui/nll/dont-print-desugared.stderr | 0 {src/test => tests}/ui/nll/drop-may-dangle.rs | 0 {src/test => tests}/ui/nll/drop-no-may-dangle.rs | 0 .../test => tests}/ui/nll/drop-no-may-dangle.stderr | 0 .../test => tests}/ui/nll/empty-type-predicate-2.rs | 0 {src/test => tests}/ui/nll/empty-type-predicate.rs | 0 {src/test => tests}/ui/nll/enum-drop-access.rs | 0 {src/test => tests}/ui/nll/enum-drop-access.stderr | 0 {src/test => tests}/ui/nll/extra-unused-mut.rs | 0 .../ui/nll/generator-distinct-lifetime.rs | 0 .../ui/nll/generator-upvar-mutability.rs | 0 .../ui/nll/generator-upvar-mutability.stderr | 0 .../ui/nll/get_default.polonius.stderr | 0 {src/test => tests}/ui/nll/get_default.rs | 0 {src/test => tests}/ui/nll/get_default.stderr | 0 {src/test => tests}/ui/nll/guarantor-issue-46974.rs | 0 .../ui/nll/guarantor-issue-46974.stderr | 0 {src/test => tests}/ui/nll/issue-16223.rs | 0 {src/test => tests}/ui/nll/issue-21114-ebfull.rs | 0 {src/test => tests}/ui/nll/issue-21114-kixunil.rs | 0 .../issue-21232-partial-init-and-erroneous-use.rs | 0 ...ssue-21232-partial-init-and-erroneous-use.stderr | 0 .../ui/nll/issue-21232-partial-init-and-use.rs | 0 .../ui/nll/issue-21232-partial-init-and-use.stderr | 0 .../ui/nll/issue-22323-temp-destruction.rs | 0 ...sue-24535-allow-mutable-borrow-in-match-guard.rs | 0 .../nll/issue-27282-move-match-input-into-guard.rs | 0 .../issue-27282-move-match-input-into-guard.stderr | 0 .../ui/nll/issue-27282-move-ref-mut-into-guard.rs | 0 .../nll/issue-27282-move-ref-mut-into-guard.stderr | 0 .../issue-27282-mutate-before-diverging-arm-1.rs | 0 ...issue-27282-mutate-before-diverging-arm-1.stderr | 0 .../issue-27282-mutate-before-diverging-arm-2.rs | 0 ...issue-27282-mutate-before-diverging-arm-2.stderr | 0 .../issue-27282-mutate-before-diverging-arm-3.rs | 0 ...issue-27282-mutate-before-diverging-arm-3.stderr | 0 .../ui/nll/issue-27282-mutation-in-guard.rs | 0 .../ui/nll/issue-27282-mutation-in-guard.stderr | 0 .../ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs | 0 .../issue-27282-reborrow-ref-mut-in-guard.stderr | 0 {src/test => tests}/ui/nll/issue-27868.rs | 0 {src/test => tests}/ui/nll/issue-27868.stderr | 0 {src/test => tests}/ui/nll/issue-30104.rs | 0 {src/test => tests}/ui/nll/issue-31567.rs | 0 {src/test => tests}/ui/nll/issue-31567.stderr | 0 .../issue-32382-index-assoc-type-with-lifetime.rs | 0 .../nll/issue-42574-diagnostic-in-nested-closure.rs | 0 .../issue-42574-diagnostic-in-nested-closure.stderr | 0 {src/test => tests}/ui/nll/issue-43058.rs | 0 {src/test => tests}/ui/nll/issue-45157.rs | 0 {src/test => tests}/ui/nll/issue-45157.stderr | 0 .../nll/issue-45696-long-live-borrows-in-boxes.rs | 0 .../ui/nll/issue-45696-no-variant-box-recur.rs | 0 .../ui/nll/issue-45696-scribble-on-boxed-borrow.rs | 0 .../nll/issue-45696-scribble-on-boxed-borrow.stderr | 0 {src/test => tests}/ui/nll/issue-46023.rs | 0 {src/test => tests}/ui/nll/issue-46023.stderr | 0 {src/test => tests}/ui/nll/issue-46036.rs | 0 {src/test => tests}/ui/nll/issue-46036.stderr | 0 {src/test => tests}/ui/nll/issue-46589.rs | 0 {src/test => tests}/ui/nll/issue-46589.stderr | 0 {src/test => tests}/ui/nll/issue-47022.rs | 0 .../ui/nll/issue-47153-generic-const.rs | 0 {src/test => tests}/ui/nll/issue-47388.rs | 0 {src/test => tests}/ui/nll/issue-47388.stderr | 0 {src/test => tests}/ui/nll/issue-47470.rs | 0 {src/test => tests}/ui/nll/issue-47470.stderr | 0 {src/test => tests}/ui/nll/issue-47589.rs | 0 {src/test => tests}/ui/nll/issue-48070.rs | 0 {src/test => tests}/ui/nll/issue-48238.rs | 0 {src/test => tests}/ui/nll/issue-48238.stderr | 0 {src/test => tests}/ui/nll/issue-48623-closure.rs | 0 {src/test => tests}/ui/nll/issue-48623-generator.rs | 0 .../ui/nll/issue-48623-generator.stderr | 0 {src/test => tests}/ui/nll/issue-48697.rs | 0 {src/test => tests}/ui/nll/issue-48697.stderr | 0 {src/test => tests}/ui/nll/issue-48803.rs | 0 {src/test => tests}/ui/nll/issue-48803.stderr | 0 {src/test => tests}/ui/nll/issue-50343.rs | 0 .../ui/nll/issue-50461-used-mut-from-moves.rs | 0 {src/test => tests}/ui/nll/issue-50716-1.rs | 0 {src/test => tests}/ui/nll/issue-50716.rs | 0 {src/test => tests}/ui/nll/issue-50716.stderr | 0 {src/test => tests}/ui/nll/issue-51191.rs | 0 {src/test => tests}/ui/nll/issue-51191.stderr | 0 {src/test => tests}/ui/nll/issue-51244.rs | 0 {src/test => tests}/ui/nll/issue-51244.stderr | 0 {src/test => tests}/ui/nll/issue-51268.rs | 0 {src/test => tests}/ui/nll/issue-51268.stderr | 0 {src/test => tests}/ui/nll/issue-51345-2.rs | 0 {src/test => tests}/ui/nll/issue-51351.rs | 0 {src/test => tests}/ui/nll/issue-51512.rs | 0 {src/test => tests}/ui/nll/issue-51512.stderr | 0 {src/test => tests}/ui/nll/issue-51770.rs | 0 {src/test => tests}/ui/nll/issue-52057.rs | 0 ...ue-52059-report-when-borrow-and-drop-conflict.rs | 0 ...2059-report-when-borrow-and-drop-conflict.stderr | 0 {src/test => tests}/ui/nll/issue-52078.rs | 0 {src/test => tests}/ui/nll/issue-52086.rs | 0 {src/test => tests}/ui/nll/issue-52086.stderr | 0 {src/test => tests}/ui/nll/issue-52113.rs | 0 {src/test => tests}/ui/nll/issue-52113.stderr | 0 {src/test => tests}/ui/nll/issue-52213.rs | 0 {src/test => tests}/ui/nll/issue-52213.stderr | 0 {src/test => tests}/ui/nll/issue-52533-1.rs | 0 {src/test => tests}/ui/nll/issue-52533-1.stderr | 0 {src/test => tests}/ui/nll/issue-52534-1.rs | 0 {src/test => tests}/ui/nll/issue-52534-1.stderr | 0 {src/test => tests}/ui/nll/issue-52534-2.rs | 0 {src/test => tests}/ui/nll/issue-52534-2.stderr | 0 {src/test => tests}/ui/nll/issue-52534.rs | 0 {src/test => tests}/ui/nll/issue-52534.stderr | 0 .../nll/issue-52663-span-decl-captured-variable.rs | 0 .../issue-52663-span-decl-captured-variable.stderr | 0 .../ui/nll/issue-52663-trait-object.rs | 0 .../ui/nll/issue-52663-trait-object.stderr | 0 {src/test => tests}/ui/nll/issue-52669.rs | 0 {src/test => tests}/ui/nll/issue-52669.stderr | 0 {src/test => tests}/ui/nll/issue-52742.rs | 0 {src/test => tests}/ui/nll/issue-52742.stderr | 0 {src/test => tests}/ui/nll/issue-52992.rs | 0 {src/test => tests}/ui/nll/issue-53040.rs | 0 {src/test => tests}/ui/nll/issue-53040.stderr | 0 {src/test => tests}/ui/nll/issue-53119.rs | 0 .../ui/nll/issue-53123-raw-pointer-cast.rs | 0 {src/test => tests}/ui/nll/issue-53570.rs | 0 {src/test => tests}/ui/nll/issue-53773.rs | 0 {src/test => tests}/ui/nll/issue-53773.stderr | 0 {src/test => tests}/ui/nll/issue-53807.rs | 0 {src/test => tests}/ui/nll/issue-53807.stderr | 0 {src/test => tests}/ui/nll/issue-54189.rs | 0 {src/test => tests}/ui/nll/issue-54189.stderr | 0 .../ui/nll/issue-54382-use-span-of-tail-of-block.rs | 0 .../issue-54382-use-span-of-tail-of-block.stderr | 0 {src/test => tests}/ui/nll/issue-54556-niconii.rs | 0 .../ui/nll/issue-54556-niconii.stderr | 0 .../ui/nll/issue-54556-stephaneyfx.rs | 0 .../ui/nll/issue-54556-stephaneyfx.stderr | 0 .../ui/nll/issue-54556-temps-in-tail-diagnostic.rs | 0 .../nll/issue-54556-temps-in-tail-diagnostic.stderr | 0 .../ui/nll/issue-54556-used-vs-unused-tails.rs | 0 .../ui/nll/issue-54556-used-vs-unused-tails.stderr | 0 .../test => tests}/ui/nll/issue-54556-wrap-it-up.rs | 0 .../ui/nll/issue-54556-wrap-it-up.stderr | 0 .../ui/nll/issue-54779-anon-static-lifetime.rs | 0 .../ui/nll/issue-54779-anon-static-lifetime.stderr | 0 {src/test => tests}/ui/nll/issue-54943-3.rs | 0 {src/test => tests}/ui/nll/issue-54943.rs | 0 {src/test => tests}/ui/nll/issue-54943.stderr | 0 {src/test => tests}/ui/nll/issue-55288.rs | 0 {src/test => tests}/ui/nll/issue-55344.rs | 0 {src/test => tests}/ui/nll/issue-55394.rs | 0 {src/test => tests}/ui/nll/issue-55394.stderr | 0 {src/test => tests}/ui/nll/issue-55401.rs | 0 {src/test => tests}/ui/nll/issue-55401.stderr | 0 {src/test => tests}/ui/nll/issue-55511.rs | 0 {src/test => tests}/ui/nll/issue-55511.stderr | 0 {src/test => tests}/ui/nll/issue-55651.rs | 0 {src/test => tests}/ui/nll/issue-55825-const-fn.rs | 0 {src/test => tests}/ui/nll/issue-55850.rs | 0 {src/test => tests}/ui/nll/issue-55850.stderr | 0 {src/test => tests}/ui/nll/issue-57100.rs | 0 {src/test => tests}/ui/nll/issue-57100.stderr | 0 .../ui/nll/issue-57265-return-type-wf-check.rs | 0 .../ui/nll/issue-57265-return-type-wf-check.stderr | 0 {src/test => tests}/ui/nll/issue-57280-1-flipped.rs | 0 .../ui/nll/issue-57280-1-flipped.stderr | 0 {src/test => tests}/ui/nll/issue-57280-1.rs | 0 {src/test => tests}/ui/nll/issue-57280.rs | 0 .../ui/nll/issue-57642-higher-ranked-subtype.rs | 0 .../ui/nll/issue-57642-higher-ranked-subtype.stderr | 0 {src/test => tests}/ui/nll/issue-57843.rs | 0 {src/test => tests}/ui/nll/issue-57843.stderr | 0 {src/test => tests}/ui/nll/issue-57960.rs | 0 {src/test => tests}/ui/nll/issue-57989.rs | 0 {src/test => tests}/ui/nll/issue-57989.stderr | 0 {src/test => tests}/ui/nll/issue-58053.rs | 0 {src/test => tests}/ui/nll/issue-58053.stderr | 0 {src/test => tests}/ui/nll/issue-58299.rs | 0 {src/test => tests}/ui/nll/issue-58299.stderr | 0 {src/test => tests}/ui/nll/issue-61311-normalize.rs | 0 {src/test => tests}/ui/nll/issue-61320-normalize.rs | 0 {src/test => tests}/ui/nll/issue-61424.fixed | 0 {src/test => tests}/ui/nll/issue-61424.rs | 0 {src/test => tests}/ui/nll/issue-61424.stderr | 0 .../ui/nll/issue-62007-assign-const-index.rs | 0 .../ui/nll/issue-62007-assign-const-index.stderr | 0 .../ui/nll/issue-62007-assign-differing-fields.rs | 0 .../nll/issue-62007-assign-differing-fields.stderr | 0 {src/test => tests}/ui/nll/issue-63154-normalize.rs | 0 .../ui/nll/issue-67007-escaping-data.rs | 0 .../ui/nll/issue-67007-escaping-data.stderr | 0 {src/test => tests}/ui/nll/issue-68550.rs | 0 {src/test => tests}/ui/nll/issue-68550.stderr | 0 .../ui/nll/issue-69114-static-mut-ty.rs | 0 .../ui/nll/issue-69114-static-mut-ty.stderr | 0 {src/test => tests}/ui/nll/issue-69114-static-ty.rs | 0 .../ui/nll/issue-69114-static-ty.stderr | 0 .../ui/nll/issue-73159-rpit-static.rs | 0 .../ui/nll/issue-73159-rpit-static.stderr | 0 {src/test => tests}/ui/nll/issue-78561.rs | 0 {src/test => tests}/ui/nll/issue-95272.rs | 0 {src/test => tests}/ui/nll/issue-95272.stderr | 0 {src/test => tests}/ui/nll/issue-97997.rs | 0 {src/test => tests}/ui/nll/issue-97997.stderr | 0 {src/test => tests}/ui/nll/issue-98170.rs | 0 {src/test => tests}/ui/nll/issue-98170.stderr | 0 .../issue-98589-closures-relate-named-regions.rs | 0 ...issue-98589-closures-relate-named-regions.stderr | 0 {src/test => tests}/ui/nll/issue-98693.rs | 0 {src/test => tests}/ui/nll/issue-98693.stderr | 0 {src/test => tests}/ui/nll/lint-no-err.rs | 0 .../ui/nll/loan_ends_mid_block_pair.rs | 0 .../ui/nll/loan_ends_mid_block_pair.stderr | 0 .../ui/nll/loan_ends_mid_block_vec.rs | 0 .../ui/nll/loan_ends_mid_block_vec.stderr | 0 .../ui/nll/local-outlives-static-via-hrtb.rs | 0 .../ui/nll/local-outlives-static-via-hrtb.stderr | 0 {src/test => tests}/ui/nll/lub-if.rs | 0 {src/test => tests}/ui/nll/lub-if.stderr | 0 {src/test => tests}/ui/nll/lub-match.rs | 0 {src/test => tests}/ui/nll/lub-match.stderr | 0 {src/test => tests}/ui/nll/match-cfg-fake-edges.rs | 0 .../ui/nll/match-cfg-fake-edges.stderr | 0 {src/test => tests}/ui/nll/match-cfg-fake-edges2.rs | 0 .../ui/nll/match-cfg-fake-edges2.stderr | 0 .../ui/nll/match-guards-always-borrow.rs | 0 .../ui/nll/match-guards-always-borrow.stderr | 0 .../ui/nll/match-guards-partially-borrow.rs | 0 .../ui/nll/match-guards-partially-borrow.stderr | 0 {src/test => tests}/ui/nll/match-on-borrowed.rs | 0 {src/test => tests}/ui/nll/match-on-borrowed.stderr | 0 ...maybe-initialized-drop-implicit-fragment-drop.rs | 0 ...e-initialized-drop-implicit-fragment-drop.stderr | 0 .../ui/nll/maybe-initialized-drop-uninitialized.rs | 0 .../ui/nll/maybe-initialized-drop-with-fragment.rs | 0 .../nll/maybe-initialized-drop-with-fragment.stderr | 0 ...initialized-drop-with-uninitialized-fragments.rs | 0 ...ialized-drop-with-uninitialized-fragments.stderr | 0 .../test => tests}/ui/nll/maybe-initialized-drop.rs | 0 .../ui/nll/maybe-initialized-drop.stderr | 0 .../test => tests}/ui/nll/mir_check_cast_closure.rs | 0 .../ui/nll/mir_check_cast_closure.stderr | 0 {src/test => tests}/ui/nll/mir_check_cast_reify.rs | 0 .../ui/nll/mir_check_cast_reify.stderr | 0 .../ui/nll/mir_check_cast_unsafe_fn.rs | 0 .../ui/nll/mir_check_cast_unsafe_fn.stderr | 0 {src/test => tests}/ui/nll/mir_check_cast_unsize.rs | 0 .../ui/nll/mir_check_cast_unsize.stderr | 0 {src/test => tests}/ui/nll/move-errors.rs | 0 {src/test => tests}/ui/nll/move-errors.stderr | 0 .../ui/nll/move-subpaths-moves-root.rs | 0 .../ui/nll/move-subpaths-moves-root.stderr | 0 {src/test => tests}/ui/nll/mutating_references.rs | 0 .../ui/nll/normalization-bounds-error.rs | 0 .../ui/nll/normalization-bounds-error.stderr | 0 {src/test => tests}/ui/nll/normalization-bounds.rs | 0 .../ui/nll/outlives-suggestion-more.rs | 0 .../ui/nll/outlives-suggestion-more.stderr | 0 .../nll/outlives-suggestion-simple.polonius.stderr | 0 .../ui/nll/outlives-suggestion-simple.rs | 0 .../ui/nll/outlives-suggestion-simple.stderr | 0 .../ui/nll/polonius/assignment-kills-loans.rs | 0 .../nll/polonius/assignment-to-differing-field.rs | 0 .../polonius/assignment-to-differing-field.stderr | 0 .../ui/nll/polonius/call-kills-loans.rs | 0 {src/test => tests}/ui/nll/polonius/issue-46589.rs | 0 .../ui/nll/polonius/polonius-smoke-test.rs | 0 .../ui/nll/polonius/polonius-smoke-test.stderr | 0 .../ui/nll/polonius/storagedead-kills-loans.rs | 0 .../ui/nll/polonius/subset-relations.rs | 0 .../ui/nll/polonius/subset-relations.stderr | 0 .../ui/nll/process_or_insert_default.rs | 0 {src/test => tests}/ui/nll/projection-return.rs | 0 .../nll/promotable-mutable-zst-doesnt-conflict.rs | 0 {src/test => tests}/ui/nll/promoted-bounds.rs | 0 {src/test => tests}/ui/nll/promoted-bounds.stderr | 0 {src/test => tests}/ui/nll/promoted-closure-pair.rs | 0 .../ui/nll/promoted-closure-pair.stderr | 0 {src/test => tests}/ui/nll/promoted-liveness.rs | 0 {src/test => tests}/ui/nll/rc-loop.rs | 0 {src/test => tests}/ui/nll/ref-suggestion.rs | 0 {src/test => tests}/ui/nll/ref-suggestion.stderr | 0 .../nll/reference-carried-through-struct-field.rs | 0 .../reference-carried-through-struct-field.stderr | 0 .../ui/nll/region-ends-after-if-condition.rs | 0 .../ui/nll/region-ends-after-if-condition.stderr | 0 {src/test => tests}/ui/nll/relate_tys/fn-subtype.rs | 0 .../ui/nll/relate_tys/fn-subtype.stderr | 0 .../ui/nll/relate_tys/hr-fn-aaa-as-aba.rs | 0 .../ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr | 0 .../ui/nll/relate_tys/hr-fn-aau-eq-abu.rs | 0 .../ui/nll/relate_tys/hr-fn-aba-as-aaa.rs | 0 .../relate_tys/impl-fn-ignore-binder-via-bottom.rs | 0 .../impl-fn-ignore-binder-via-bottom.stderr | 0 .../test => tests}/ui/nll/relate_tys/issue-48071.rs | 0 .../test => tests}/ui/nll/relate_tys/opaque-hrtb.rs | 0 .../ui/nll/relate_tys/opaque-hrtb.stderr | 0 {src/test => tests}/ui/nll/relate_tys/trait-hrtb.rs | 0 .../ui/nll/relate_tys/trait-hrtb.stderr | 0 .../ui/nll/relate_tys/universe-violation.rs | 0 .../ui/nll/relate_tys/universe-violation.stderr | 0 .../ui/nll/relate_tys/var-appears-twice.rs | 0 .../ui/nll/relate_tys/var-appears-twice.stderr | 0 .../ui/nll/return-ref-mut-issue-46557.rs | 0 .../ui/nll/return-ref-mut-issue-46557.stderr | 0 {src/test => tests}/ui/nll/return_from_loop.rs | 0 {src/test => tests}/ui/nll/return_from_loop.stderr | 0 {src/test => tests}/ui/nll/self-assign-ref-mut.rs | 0 {src/test => tests}/ui/nll/snocat-regression.rs | 0 {src/test => tests}/ui/nll/snocat-regression.stderr | 0 .../ui/nll/trait-associated-constant.rs | 0 .../ui/nll/trait-associated-constant.stderr | 0 .../ui/nll/ty-outlives/impl-trait-captures.rs | 0 .../ui/nll/ty-outlives/impl-trait-captures.stderr | 0 .../ui/nll/ty-outlives/impl-trait-outlives.rs | 0 .../ui/nll/ty-outlives/impl-trait-outlives.stderr | 0 .../ui/nll/ty-outlives/issue-53789-1.rs | 0 .../ui/nll/ty-outlives/issue-53789-2.rs | 0 .../ui/nll/ty-outlives/issue-55756.rs | 0 .../ui/nll/ty-outlives/projection-body.rs | 0 .../ui/nll/ty-outlives/projection-implied-bounds.rs | 0 .../ty-outlives/projection-implied-bounds.stderr | 0 .../ty-outlives/projection-no-regions-closure.rs | 0 .../projection-no-regions-closure.stderr | 0 .../ui/nll/ty-outlives/projection-no-regions-fn.rs | 0 .../nll/ty-outlives/projection-no-regions-fn.stderr | 0 .../ty-outlives/projection-one-region-closure.rs | 0 .../projection-one-region-closure.stderr | 0 .../projection-one-region-trait-bound-closure.rs | 0 ...projection-one-region-trait-bound-closure.stderr | 0 ...jection-one-region-trait-bound-static-closure.rs | 0 ...ion-one-region-trait-bound-static-closure.stderr | 0 .../projection-two-region-trait-bound-closure.rs | 0 ...projection-two-region-trait-bound-closure.stderr | 0 .../projection-where-clause-env-wrong-bound.rs | 0 .../projection-where-clause-env-wrong-bound.stderr | 0 .../projection-where-clause-env-wrong-lifetime.rs | 0 ...rojection-where-clause-env-wrong-lifetime.stderr | 0 .../nll/ty-outlives/projection-where-clause-env.rs | 0 .../nll/ty-outlives/projection-where-clause-none.rs | 0 .../ty-outlives/projection-where-clause-none.stderr | 0 .../ty-outlives/projection-where-clause-trait.rs | 0 .../ty-param-closure-approximate-lower-bound.rs | 0 .../ty-param-closure-approximate-lower-bound.stderr | 0 .../ty-param-closure-outlives-from-return-type.rs | 0 ...y-param-closure-outlives-from-return-type.stderr | 0 .../ty-param-closure-outlives-from-where-clause.rs | 0 ...-param-closure-outlives-from-where-clause.stderr | 0 .../ui/nll/ty-outlives/ty-param-fn-body.rs | 0 .../ui/nll/ty-outlives/ty-param-fn-body.stderr | 0 .../ui/nll/ty-outlives/ty-param-fn.rs | 0 .../ui/nll/ty-outlives/ty-param-fn.stderr | 0 .../ui/nll/ty-outlives/ty-param-implied-bounds.rs | 0 .../ui/nll/ty-outlives/wf-unreachable.rs | 0 .../ui/nll/ty-outlives/wf-unreachable.stderr | 0 .../ui/nll/type-alias-free-regions.rs | 0 .../ui/nll/type-alias-free-regions.stderr | 0 .../ui/nll/type-check-pointer-coercions.rs | 0 .../ui/nll/type-check-pointer-coercions.stderr | 0 .../ui/nll/type-check-pointer-comparisons.rs | 0 .../ui/nll/type-check-pointer-comparisons.stderr | 0 {src/test => tests}/ui/nll/type-test-universe.rs | 0 .../test => tests}/ui/nll/type-test-universe.stderr | 0 .../ui/nll/unused-mut-issue-50343.fixed | 0 .../test => tests}/ui/nll/unused-mut-issue-50343.rs | 0 .../ui/nll/unused-mut-issue-50343.stderr | 0 .../ui/nll/user-annotations/adt-brace-enums.rs | 0 .../ui/nll/user-annotations/adt-brace-enums.stderr | 0 .../ui/nll/user-annotations/adt-brace-structs.rs | 0 .../nll/user-annotations/adt-brace-structs.stderr | 0 .../ui/nll/user-annotations/adt-nullary-enums.rs | 0 .../nll/user-annotations/adt-nullary-enums.stderr | 0 .../ui/nll/user-annotations/adt-tuple-enums.rs | 0 .../ui/nll/user-annotations/adt-tuple-enums.stderr | 0 .../nll/user-annotations/adt-tuple-struct-calls.rs | 0 .../user-annotations/adt-tuple-struct-calls.stderr | 0 .../ui/nll/user-annotations/adt-tuple-struct.rs | 0 .../ui/nll/user-annotations/adt-tuple-struct.stderr | 0 .../ui/nll/user-annotations/ascribed-type-wf.rs | 0 .../ui/nll/user-annotations/ascribed-type-wf.stderr | 0 .../ui/nll/user-annotations/cast_static_lifetime.rs | 0 .../user-annotations/cast_static_lifetime.stderr | 0 .../ui/nll/user-annotations/closure-sig.rs | 0 .../user-annotations/closure-substs.polonius.stderr | 0 .../ui/nll/user-annotations/closure-substs.rs | 0 .../ui/nll/user-annotations/closure-substs.stderr | 0 .../user-annotations/constant-in-expr-inherent-1.rs | 0 .../constant-in-expr-inherent-1.stderr | 0 .../user-annotations/constant-in-expr-inherent-2.rs | 0 .../constant-in-expr-inherent-2.stderr | 0 .../user-annotations/constant-in-expr-normalize.rs | 0 .../constant-in-expr-normalize.stderr | 0 .../constant-in-expr-trait-item-1.rs | 0 .../constant-in-expr-trait-item-1.stderr | 0 .../constant-in-expr-trait-item-2.rs | 0 .../constant-in-expr-trait-item-2.stderr | 0 .../constant-in-expr-trait-item-3.rs | 0 .../constant-in-expr-trait-item-3.stderr | 0 .../ui/nll/user-annotations/downcast-infer.rs | 0 .../nll/user-annotations/dump-adt-brace-struct.rs | 0 .../user-annotations/dump-adt-brace-struct.stderr | 0 .../ui/nll/user-annotations/dump-fn-method.rs | 0 .../ui/nll/user-annotations/dump-fn-method.stderr | 0 {src/test => tests}/ui/nll/user-annotations/fns.rs | 0 .../ui/nll/user-annotations/fns.stderr | 0 .../inherent-associated-constants.rs | 0 .../inherent-associated-constants.stderr | 0 .../ui/nll/user-annotations/issue-54124.rs | 0 .../ui/nll/user-annotations/issue-54124.stderr | 0 .../user-annotations/issue-54570-bootstrapping.rs | 0 .../ui/nll/user-annotations/issue-55219.rs | 0 .../ui/nll/user-annotations/issue-55241.rs | 0 .../issue-55748-pat-types-constrain-bindings.rs | 0 .../issue-55748-pat-types-constrain-bindings.stderr | 0 .../issue-57731-ascibed-coupled-types.rs | 0 .../issue-57731-ascibed-coupled-types.stderr | 0 .../ui/nll/user-annotations/method-call.rs | 0 .../ui/nll/user-annotations/method-call.stderr | 0 .../ui/nll/user-annotations/method-ufcs-1.rs | 0 .../ui/nll/user-annotations/method-ufcs-1.stderr | 0 .../ui/nll/user-annotations/method-ufcs-2.rs | 0 .../ui/nll/user-annotations/method-ufcs-2.stderr | 0 .../ui/nll/user-annotations/method-ufcs-3.rs | 0 .../ui/nll/user-annotations/method-ufcs-3.stderr | 0 .../nll/user-annotations/method-ufcs-inherent-1.rs | 0 .../user-annotations/method-ufcs-inherent-1.stderr | 0 .../nll/user-annotations/method-ufcs-inherent-2.rs | 0 .../user-annotations/method-ufcs-inherent-2.stderr | 0 .../nll/user-annotations/method-ufcs-inherent-3.rs | 0 .../user-annotations/method-ufcs-inherent-3.stderr | 0 .../nll/user-annotations/method-ufcs-inherent-4.rs | 0 .../user-annotations/method-ufcs-inherent-4.stderr | 0 .../ui/nll/user-annotations/normalization-2.rs | 0 .../ui/nll/user-annotations/normalization-2.stderr | 0 .../nll/user-annotations/normalization-default.rs | 0 .../user-annotations/normalization-default.stderr | 0 .../ui/nll/user-annotations/normalization-infer.rs | 0 .../nll/user-annotations/normalization-infer.stderr | 0 .../ui/nll/user-annotations/normalization-self.rs | 0 .../nll/user-annotations/normalization-self.stderr | 0 .../ui/nll/user-annotations/normalization.rs | 0 .../ui/nll/user-annotations/normalization.stderr | 0 .../ui/nll/user-annotations/normalize-self-ty.rs | 0 .../pattern_substs_on_brace_enum_variant.rs | 0 .../pattern_substs_on_brace_enum_variant.stderr | 0 .../pattern_substs_on_brace_struct.rs | 0 .../pattern_substs_on_brace_struct.stderr | 0 .../pattern_substs_on_tuple_enum_variant.rs | 0 .../pattern_substs_on_tuple_enum_variant.stderr | 0 .../pattern_substs_on_tuple_struct.rs | 0 .../pattern_substs_on_tuple_struct.stderr | 0 .../ui/nll/user-annotations/patterns.rs | 0 .../ui/nll/user-annotations/patterns.stderr | 0 .../ui/nll/user-annotations/promoted-annotation.rs | 0 .../nll/user-annotations/promoted-annotation.stderr | 0 .../user-annotations/type-annotation-with-hrtb.rs | 0 .../type_ascription_static_lifetime.rs | 0 .../type_ascription_static_lifetime.stderr | 0 .../ui/nll/user-annotations/wf-self-type.rs | 0 .../ui/nll/user-annotations/wf-self-type.stderr | 0 .../ui/nll/vimwiki-core-regression.rs | 0 .../ui/nll/where_clauses_in_functions.rs | 0 .../ui/nll/where_clauses_in_functions.stderr | 0 .../ui/nll/where_clauses_in_structs.rs | 0 .../ui/nll/where_clauses_in_structs.stderr | 0 {src/test => tests}/ui/no-capture-arc.rs | 0 {src/test => tests}/ui/no-capture-arc.stderr | 0 {src/test => tests}/ui/no-core-1.rs | 0 {src/test => tests}/ui/no-core-2.rs | 0 {src/test => tests}/ui/no-link-unknown-crate.rs | 0 {src/test => tests}/ui/no-link-unknown-crate.stderr | 0 {src/test => tests}/ui/no-patterns-in-args-2.rs | 0 {src/test => tests}/ui/no-patterns-in-args-2.stderr | 0 {src/test => tests}/ui/no-patterns-in-args-macro.rs | 0 .../ui/no-patterns-in-args-macro.stderr | 0 {src/test => tests}/ui/no-patterns-in-args.rs | 0 {src/test => tests}/ui/no-patterns-in-args.stderr | 0 {src/test => tests}/ui/no-reuse-move-arc.rs | 0 {src/test => tests}/ui/no-reuse-move-arc.stderr | 0 {src/test => tests}/ui/no-send-res-ports.rs | 0 {src/test => tests}/ui/no-send-res-ports.stderr | 0 .../ui/no-warn-on-field-replace-issue-34101.rs | 0 {src/test => tests}/ui/no_crate_type.rs | 0 {src/test => tests}/ui/no_crate_type.stderr | 0 {src/test => tests}/ui/no_send-enum.rs | 0 {src/test => tests}/ui/no_send-enum.stderr | 0 {src/test => tests}/ui/no_send-rc.rs | 0 {src/test => tests}/ui/no_send-rc.stderr | 0 {src/test => tests}/ui/no_share-enum.rs | 0 {src/test => tests}/ui/no_share-enum.stderr | 0 {src/test => tests}/ui/no_share-struct.rs | 0 {src/test => tests}/ui/no_share-struct.stderr | 0 {src/test => tests}/ui/noexporttypeexe.rs | 0 {src/test => tests}/ui/noexporttypeexe.stderr | 0 .../ui/non-constant-expr-for-arr-len.rs | 0 .../ui/non-constant-expr-for-arr-len.stderr | 0 {src/test => tests}/ui/non-copyable-void.rs | 0 {src/test => tests}/ui/non-copyable-void.stderr | 0 {src/test => tests}/ui/non-fmt-panic.fixed | 0 {src/test => tests}/ui/non-fmt-panic.rs | 0 {src/test => tests}/ui/non-fmt-panic.stderr | 0 .../ui/non-ice-error-on-worker-io-fail.rs | 0 .../ui/non-ice-error-on-worker-io-fail.stderr | 0 {src/test => tests}/ui/non_modrs_mods/foors_mod.rs | 0 .../non_modrs_mods/foors_mod/compiletest-ignore-dir | 0 .../ui/non_modrs_mods/foors_mod/inline/somename.rs | 0 .../ui/non_modrs_mods/foors_mod/inner_foors_mod.rs | 0 .../foors_mod/inner_foors_mod/innest.rs | 0 .../foors_mod/inner_modrs_mod/innest.rs | 0 .../non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs | 0 .../non_modrs_mods/modrs_mod/compiletest-ignore-dir | 0 .../ui/non_modrs_mods/modrs_mod/inline/somename.rs | 0 .../ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs | 0 .../modrs_mod/inner_foors_mod/innest.rs | 0 .../modrs_mod/inner_modrs_mod/innest.rs | 0 .../non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs | 0 .../ui/non_modrs_mods/modrs_mod/mod.rs | 0 .../ui/non_modrs_mods/non_modrs_mods.rs | 0 .../some_crazy_attr_mod_dir/arbitrary_name.rs | 0 .../some_crazy_attr_mod_dir/compiletest-ignore-dir | 0 .../inner_modrs_mod/innest.rs | 0 .../some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs | 0 .../non_modrs_mods_and_inline_mods.rs | 0 .../ui/non_modrs_mods_and_inline_mods/x.rs | 0 .../ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs | 0 {src/test => tests}/ui/noncopyable-class.rs | 0 {src/test => tests}/ui/noncopyable-class.stderr | 0 {src/test => tests}/ui/nonscalar-cast.fixed | 0 {src/test => tests}/ui/nonscalar-cast.rs | 0 {src/test => tests}/ui/nonscalar-cast.stderr | 0 {src/test => tests}/ui/not-clone-closure.rs | 0 {src/test => tests}/ui/not-clone-closure.stderr | 0 {src/test => tests}/ui/not-copy-closure.rs | 0 {src/test => tests}/ui/not-copy-closure.stderr | 0 {src/test => tests}/ui/not-enough-arguments.rs | 0 {src/test => tests}/ui/not-enough-arguments.stderr | 0 .../test => tests}/ui/not-panic/not-panic-safe-2.rs | 0 .../ui/not-panic/not-panic-safe-2.stderr | 0 .../test => tests}/ui/not-panic/not-panic-safe-3.rs | 0 .../ui/not-panic/not-panic-safe-3.stderr | 0 .../test => tests}/ui/not-panic/not-panic-safe-4.rs | 0 .../ui/not-panic/not-panic-safe-4.stderr | 0 .../test => tests}/ui/not-panic/not-panic-safe-5.rs | 0 .../ui/not-panic/not-panic-safe-5.stderr | 0 .../test => tests}/ui/not-panic/not-panic-safe-6.rs | 0 .../ui/not-panic/not-panic-safe-6.stderr | 0 {src/test => tests}/ui/not-panic/not-panic-safe.rs | 0 .../ui/not-panic/not-panic-safe.stderr | 0 {src/test => tests}/ui/nul-characters.rs | 0 .../ui/nullable-pointer-iotareduction.rs | 0 {src/test => tests}/ui/nullable-pointer-size.rs | 0 .../ui/numbers-arithmetic/arith-unsigned.rs | 0 .../test => tests}/ui/numbers-arithmetic/div-mod.rs | 0 .../ui/numbers-arithmetic/divide-by-zero.rs | 0 .../float-int-invalid-const-cast.rs | 0 .../numbers-arithmetic/float-literal-inference.rs | 0 .../ui/numbers-arithmetic/float-nan.rs | 0 .../ui/numbers-arithmetic/float-signature.rs | 0 {src/test => tests}/ui/numbers-arithmetic/float.rs | 0 {src/test => tests}/ui/numbers-arithmetic/float2.rs | 0 .../ui/numbers-arithmetic/float_math.rs | 0 .../ui/numbers-arithmetic/floatlits.rs | 0 {src/test => tests}/ui/numbers-arithmetic/i128.rs | 0 .../test => tests}/ui/numbers-arithmetic/i32-sub.rs | 0 .../test => tests}/ui/numbers-arithmetic/i8-incr.rs | 0 .../ui/numbers-arithmetic/int-abs-overflow.rs | 0 {src/test => tests}/ui/numbers-arithmetic/int.rs | 0 .../ui/numbers-arithmetic/integer-literal-radix.rs | 0 .../integer-literal-suffix-inference-2.rs | 0 .../integer-literal-suffix-inference-3.rs | 0 .../integer-literal-suffix-inference.rs | 0 .../issue-8460-const.noopt.stderr | 0 .../numbers-arithmetic/issue-8460-const.opt.stderr | 0 ...issue-8460-const.opt_with_overflow_checks.stderr | 0 .../ui/numbers-arithmetic/issue-8460-const.rs | 0 .../ui/numbers-arithmetic/issue-8460.rs | 0 .../ui/numbers-arithmetic/mod-zero.rs | 0 .../next-power-of-two-overflow-debug.rs | 0 .../next-power-of-two-overflow-ndebug.rs | 0 .../numbers-arithmetic/not-suggest-float-literal.rs | 0 .../not-suggest-float-literal.stderr | 0 .../ui/numbers-arithmetic/num-wrapping.rs | 0 .../numbers-arithmetic/numeric-method-autoexport.rs | 0 .../ui/numbers-arithmetic/overflowing-add.rs | 0 .../ui/numbers-arithmetic/overflowing-lsh-1.rs | 0 .../ui/numbers-arithmetic/overflowing-lsh-1.stderr | 0 .../ui/numbers-arithmetic/overflowing-lsh-2.rs | 0 .../ui/numbers-arithmetic/overflowing-lsh-2.stderr | 0 .../ui/numbers-arithmetic/overflowing-lsh-3.rs | 0 .../ui/numbers-arithmetic/overflowing-lsh-3.stderr | 0 .../ui/numbers-arithmetic/overflowing-lsh-4.rs | 0 .../ui/numbers-arithmetic/overflowing-lsh-4.stderr | 0 .../ui/numbers-arithmetic/overflowing-mul.rs | 0 .../ui/numbers-arithmetic/overflowing-neg.rs | 0 .../ui/numbers-arithmetic/overflowing-pow-signed.rs | 0 .../numbers-arithmetic/overflowing-pow-unsigned.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-1.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-1.stderr | 0 .../ui/numbers-arithmetic/overflowing-rsh-2.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-2.stderr | 0 .../ui/numbers-arithmetic/overflowing-rsh-3.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-3.stderr | 0 .../ui/numbers-arithmetic/overflowing-rsh-4.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-4.stderr | 0 .../ui/numbers-arithmetic/overflowing-rsh-5.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-5.stderr | 0 .../ui/numbers-arithmetic/overflowing-rsh-6.rs | 0 .../ui/numbers-arithmetic/overflowing-rsh-6.stderr | 0 .../ui/numbers-arithmetic/overflowing-sub.rs | 0 .../ui/numbers-arithmetic/promoted_overflow.rs | 0 .../ui/numbers-arithmetic/promoted_overflow_opt.rs | 0 .../saturating-float-casts-impl.rs | 0 .../saturating-float-casts-wasm.rs | 0 .../ui/numbers-arithmetic/saturating-float-casts.rs | 0 .../ui/numbers-arithmetic/shift-near-oflo.rs | 0 .../ui/numbers-arithmetic/shift-various-types.rs | 0 {src/test => tests}/ui/numbers-arithmetic/shift.rs | 0 .../numbers-arithmetic/signed-shift-const-eval.rs | 0 .../numbers-arithmetic/suggest-float-literal.fixed | 0 .../ui/numbers-arithmetic/suggest-float-literal.rs | 0 .../numbers-arithmetic/suggest-float-literal.stderr | 0 .../ui/numbers-arithmetic/u128-as-f32.rs | 0 {src/test => tests}/ui/numbers-arithmetic/u128.rs | 0 .../ui/numbers-arithmetic/u32-decr.rs | 0 .../ui/numbers-arithmetic/u8-incr-decr.rs | 0 .../test => tests}/ui/numbers-arithmetic/u8-incr.rs | 0 {src/test => tests}/ui/numbers-arithmetic/uint.rs | 0 .../unary-minus-suffix-inference.rs | 0 {src/test => tests}/ui/numeric/const-scope.rs | 0 {src/test => tests}/ui/numeric/const-scope.stderr | 0 .../ui/numeric/integer-literal-suffix-inference.rs | 0 .../numeric/integer-literal-suffix-inference.stderr | 0 {src/test => tests}/ui/numeric/len.rs | 0 {src/test => tests}/ui/numeric/len.stderr | 0 {src/test => tests}/ui/numeric/numeric-cast-2.rs | 0 .../test => tests}/ui/numeric/numeric-cast-2.stderr | 0 .../ui/numeric/numeric-cast-binop.fixed | 0 .../test => tests}/ui/numeric/numeric-cast-binop.rs | 0 .../ui/numeric/numeric-cast-binop.stderr | 0 .../ui/numeric/numeric-cast-no-fix.rs | 0 .../ui/numeric/numeric-cast-no-fix.stderr | 0 .../ui/numeric/numeric-cast-without-suggestion.rs | 0 .../numeric/numeric-cast-without-suggestion.stderr | 0 {src/test => tests}/ui/numeric/numeric-cast.fixed | 0 {src/test => tests}/ui/numeric/numeric-cast.rs | 0 {src/test => tests}/ui/numeric/numeric-cast.stderr | 0 {src/test => tests}/ui/numeric/numeric-fields.rs | 0 .../test => tests}/ui/numeric/numeric-fields.stderr | 0 .../numeric/numeric-suffix/numeric-suffix-i32.fixed | 0 .../ui/numeric/numeric-suffix/numeric-suffix-i32.rs | 0 .../numeric-suffix/numeric-suffix-i32.stderr | 0 .../numeric/numeric-suffix/numeric-suffix-i64.fixed | 0 .../ui/numeric/numeric-suffix/numeric-suffix-i64.rs | 0 .../numeric-suffix/numeric-suffix-i64.stderr | 0 .../numeric-suffix/numeric-suffix-isize.fixed | 0 .../numeric/numeric-suffix/numeric-suffix-isize.rs | 0 .../numeric-suffix/numeric-suffix-isize.stderr | 0 .../numeric/numeric-suffix/numeric-suffix-u32.fixed | 0 .../ui/numeric/numeric-suffix/numeric-suffix-u32.rs | 0 .../numeric-suffix/numeric-suffix-u32.stderr | 0 .../numeric/numeric-suffix/numeric-suffix-u64.fixed | 0 .../ui/numeric/numeric-suffix/numeric-suffix-u64.rs | 0 .../numeric-suffix/numeric-suffix-u64.stderr | 0 .../numeric-suffix/numeric-suffix-usize.fixed | 0 .../numeric/numeric-suffix/numeric-suffix-usize.rs | 0 .../numeric-suffix/numeric-suffix-usize.stderr | 0 .../ui/numeric/numeric-suffix/numeric-suffix.fixed | 0 .../ui/numeric/numeric-suffix/numeric-suffix.rs | 0 .../ui/numeric/numeric-suffix/numeric-suffix.stderr | 0 .../numeric/uppercase-base-prefix-invalid-no-fix.rs | 0 .../uppercase-base-prefix-invalid-no-fix.stderr | 0 .../ui/numeric/uppercase-base-prefix.fixed | 0 .../ui/numeric/uppercase-base-prefix.rs | 0 .../ui/numeric/uppercase-base-prefix.stderr | 0 .../object-lifetime-default-ambiguous.rs | 0 .../object-lifetime-default-ambiguous.stderr | 0 .../object-lifetime-default-default-to-static.rs | 0 ...bject-lifetime-default-dyn-binding-nonstatic1.rs | 0 ...t-lifetime-default-dyn-binding-nonstatic1.stderr | 0 ...bject-lifetime-default-dyn-binding-nonstatic2.rs | 0 ...t-lifetime-default-dyn-binding-nonstatic2.stderr | 0 ...bject-lifetime-default-dyn-binding-nonstatic3.rs | 0 ...t-lifetime-default-dyn-binding-nonstatic3.stderr | 0 .../object-lifetime-default-dyn-binding-static.rs | 0 .../object-lifetime-default-elision.rs | 0 .../object-lifetime-default-elision.stderr | 0 .../object-lifetime-default-from-box-error.rs | 0 .../object-lifetime-default-from-box-error.stderr | 0 .../object-lifetime-default-from-ref-struct.rs | 0 .../object-lifetime-default-from-rptr-box-error.rs | 0 ...ject-lifetime-default-from-rptr-box-error.stderr | 0 .../object-lifetime-default-from-rptr-box.rs | 0 .../object-lifetime-default-from-rptr-mut.rs | 0 ...bject-lifetime-default-from-rptr-struct-error.rs | 0 ...t-lifetime-default-from-rptr-struct-error.stderr | 0 .../object-lifetime-default-from-rptr-struct.rs | 0 .../object-lifetime-default-from-rptr.rs | 0 .../object-lifetime-default-inferred.rs | 0 .../object-lifetime-default-mybox.rs | 0 .../object-lifetime-default-mybox.stderr | 0 .../ui/object-lifetime/object-lifetime-default.rs | 0 .../object-lifetime/object-lifetime-default.stderr | 0 {src/test => tests}/ui/object-pointer-types.rs | 0 {src/test => tests}/ui/object-pointer-types.stderr | 0 .../test => tests}/ui/object-safety/issue-102762.rs | 0 .../ui/object-safety/issue-102762.stderr | 0 .../test => tests}/ui/object-safety/issue-102933.rs | 0 .../test => tests}/ui/object-safety/issue-106247.rs | 0 {src/test => tests}/ui/object-safety/issue-19538.rs | 0 .../ui/object-safety/issue-19538.stderr | 0 .../object-safety-associated-consts.curr.stderr | 0 ...ssociated-consts.object_safe_for_dispatch.stderr | 0 .../object-safety-associated-consts.rs | 0 .../ui/object-safety/object-safety-bounds.rs | 0 .../ui/object-safety/object-safety-bounds.stderr | 0 .../object-safety-by-value-self-use.rs | 0 .../object-safety-by-value-self-use.stderr | 0 .../ui/object-safety/object-safety-by-value-self.rs | 0 .../object-safety-generics.curr.stderr | 0 ...-safety-generics.object_safe_for_dispatch.stderr | 0 .../ui/object-safety/object-safety-generics.rs | 0 .../ui/object-safety/object-safety-issue-22040.rs | 0 .../object-safety/object-safety-issue-22040.stderr | 0 .../object-safety-mentions-Self.curr.stderr | 0 ...ty-mentions-Self.object_safe_for_dispatch.stderr | 0 .../ui/object-safety/object-safety-mentions-Self.rs | 0 .../object-safety-no-static.curr.stderr | 0 ...safety-no-static.object_safe_for_dispatch.stderr | 0 .../ui/object-safety/object-safety-no-static.rs | 0 .../ui/object-safety/object-safety-phantom-fn.rs | 0 .../object-safety/object-safety-sized-2.curr.stderr | 0 ...t-safety-sized-2.object_safe_for_dispatch.stderr | 0 .../ui/object-safety/object-safety-sized-2.rs | 0 .../object-safety/object-safety-sized.curr.stderr | 0 ...ect-safety-sized.object_safe_for_dispatch.stderr | 0 .../ui/object-safety/object-safety-sized.rs | 0 .../object-safety-supertrait-mentions-GAT.rs | 0 .../object-safety-supertrait-mentions-GAT.stderr | 0 .../object-safety-supertrait-mentions-Self.rs | 0 .../object-safety-supertrait-mentions-Self.stderr | 0 .../ui/objects-coerce-freeze-borrored.rs | 0 {src/test => tests}/ui/obsolete-in-place/bad.rs | 0 {src/test => tests}/ui/obsolete-in-place/bad.stderr | 0 {src/test => tests}/ui/occurs-check-2.rs | 0 {src/test => tests}/ui/occurs-check-2.stderr | 0 {src/test => tests}/ui/occurs-check-3.rs | 0 {src/test => tests}/ui/occurs-check-3.stderr | 0 {src/test => tests}/ui/occurs-check.rs | 0 {src/test => tests}/ui/occurs-check.stderr | 0 .../ui/on-unimplemented/auxiliary/no_debug.rs | 0 .../ui/on-unimplemented/bad-annotation.rs | 0 .../ui/on-unimplemented/bad-annotation.stderr | 0 .../on-unimplemented/expected-comma-found-token.rs | 0 .../expected-comma-found-token.stderr | 0 .../feature-gate-on-unimplemented.rs | 0 .../feature-gate-on-unimplemented.stderr | 0 .../ui/on-unimplemented/impl-substs.rs | 0 .../ui/on-unimplemented/impl-substs.stderr | 0 .../ui/on-unimplemented/issue-104140.rs | 0 .../ui/on-unimplemented/issue-104140.stderr | 0 .../ui/on-unimplemented/multiple-impls.rs | 0 .../ui/on-unimplemented/multiple-impls.stderr | 0 {src/test => tests}/ui/on-unimplemented/no-debug.rs | 0 .../ui/on-unimplemented/no-debug.stderr | 0 {src/test => tests}/ui/on-unimplemented/on-impl.rs | 0 .../ui/on-unimplemented/on-impl.stderr | 0 {src/test => tests}/ui/on-unimplemented/on-trait.rs | 0 .../ui/on-unimplemented/on-trait.stderr | 0 .../ui/on-unimplemented/parent-label.rs | 0 .../ui/on-unimplemented/parent-label.stderr | 0 .../ui/on-unimplemented/slice-index.rs | 0 .../ui/on-unimplemented/slice-index.stderr | 0 {src/test => tests}/ui/on-unimplemented/sum.rs | 0 {src/test => tests}/ui/on-unimplemented/sum.stderr | 0 .../ui/once-cant-call-twice-on-heap.rs | 0 .../ui/once-cant-call-twice-on-heap.stderr | 0 {src/test => tests}/ui/oom_unwind.rs | 0 {src/test => tests}/ui/op-assign-builtins-by-ref.rs | 0 {src/test => tests}/ui/opeq.rs | 0 .../ui/operator-recovery/less-than-greater-than.rs | 0 .../operator-recovery/less-than-greater-than.stderr | 0 .../ui/operator-recovery/spaceship.rs | 0 .../ui/operator-recovery/spaceship.stderr | 0 {src/test => tests}/ui/opt-in-copy.rs | 0 {src/test => tests}/ui/opt-in-copy.stderr | 0 {src/test => tests}/ui/optimization-fuel-0.rs | 0 {src/test => tests}/ui/optimization-fuel-0.stderr | 0 {src/test => tests}/ui/optimization-fuel-1.rs | 0 {src/test => tests}/ui/optimization-fuel-1.stderr | 0 {src/test => tests}/ui/optimization-remark.rs | 0 .../ui/or-patterns/already-bound-name.rs | 0 .../ui/or-patterns/already-bound-name.stderr | 0 {src/test => tests}/ui/or-patterns/basic-switch.rs | 0 .../ui/or-patterns/basic-switchint.rs | 0 .../ui/or-patterns/bindings-runpass-1.rs | 0 .../ui/or-patterns/bindings-runpass-2.rs | 0 {src/test => tests}/ui/or-patterns/box-patterns.rs | 0 .../ui/or-patterns/consistent-bindings.rs | 0 {src/test => tests}/ui/or-patterns/const-fn.rs | 0 .../ui/or-patterns/exhaustiveness-non-exhaustive.rs | 0 .../exhaustiveness-non-exhaustive.stderr | 0 .../ui/or-patterns/exhaustiveness-pass.rs | 0 .../exhaustiveness-unreachable-pattern.rs | 0 .../exhaustiveness-unreachable-pattern.stderr | 0 .../ui/or-patterns/fn-param-wrap-parens.fixed | 0 .../ui/or-patterns/fn-param-wrap-parens.rs | 0 .../ui/or-patterns/fn-param-wrap-parens.stderr | 0 {src/test => tests}/ui/or-patterns/for-loop.rs | 0 .../ui/or-patterns/if-let-while-let.rs | 0 .../ui/or-patterns/inconsistent-modes.rs | 0 .../ui/or-patterns/inconsistent-modes.stderr | 0 .../ui/or-patterns/inner-or-pat.or3.stderr | 0 .../ui/or-patterns/inner-or-pat.or4.stderr | 0 {src/test => tests}/ui/or-patterns/inner-or-pat.rs | 0 .../issue-64879-trailing-before-guard.rs | 0 .../issue-64879-trailing-before-guard.stderr | 0 .../ui/or-patterns/issue-67514-irrefutable-param.rs | 0 .../issue-68785-irrefutable-param-with-at.rs | 0 ...uld-have-been-expanded-earlier-non-exhaustive.rs | 0 ...have-been-expanded-earlier-non-exhaustive.stderr | 0 ...issue-69875-should-have-been-expanded-earlier.rs | 0 .../issue-70413-no-unreachable-pat-and-guard.rs | 0 {src/test => tests}/ui/or-patterns/let-pattern.rs | 0 {src/test => tests}/ui/or-patterns/macro-pat.rs | 0 .../ui/or-patterns/mismatched-bindings-async-fn.rs | 0 .../or-patterns/mismatched-bindings-async-fn.stderr | 0 .../ui/or-patterns/missing-bindings.rs | 0 .../ui/or-patterns/missing-bindings.stderr | 0 {src/test => tests}/ui/or-patterns/mix-with-wild.rs | 0 .../ui/or-patterns/multiple-pattern-typo.rs | 0 .../ui/or-patterns/multiple-pattern-typo.stderr | 0 .../ui/or-patterns/nested-undelimited-precedence.rs | 0 .../nested-undelimited-precedence.stderr | 0 .../or-patterns-binding-type-mismatch.rs | 0 .../or-patterns-binding-type-mismatch.stderr | 0 .../or-patterns-default-binding-modes.rs | 0 .../or-patterns/or-patterns-syntactic-fail-2018.rs | 0 .../or-patterns-syntactic-fail-2018.stderr | 0 .../ui/or-patterns/or-patterns-syntactic-fail.rs | 0 .../or-patterns/or-patterns-syntactic-fail.stderr | 0 .../or-patterns/or-patterns-syntactic-pass-2021.rs | 0 .../ui/or-patterns/or-patterns-syntactic-pass.rs | 0 .../or-patterns/or-patterns-syntactic-pass.stderr | 0 .../ui/or-patterns/remove-leading-vert.fixed | 0 .../ui/or-patterns/remove-leading-vert.rs | 0 .../ui/or-patterns/remove-leading-vert.stderr | 0 .../ui/or-patterns/search-via-bindings.rs | 0 .../test => tests}/ui/or-patterns/slice-patterns.rs | 0 {src/test => tests}/ui/or-patterns/struct-like.rs | 0 .../ui/or-patterns/while-parsing-this-or-pattern.rs | 0 .../while-parsing-this-or-pattern.stderr | 0 .../ui/order-dependent-cast-inference.rs | 0 .../ui/order-dependent-cast-inference.stderr | 0 {src/test => tests}/ui/orphan-check-diagnostics.rs | 0 .../ui/orphan-check-diagnostics.stderr | 0 {src/test => tests}/ui/osx-frameworks.rs | 0 {src/test => tests}/ui/osx-frameworks.stderr | 0 {src/test => tests}/ui/out-pointer-aliasing.rs | 0 {src/test => tests}/ui/output-slot-variants.rs | 0 {src/test => tests}/ui/output-type-mismatch.rs | 0 {src/test => tests}/ui/output-type-mismatch.stderr | 0 {src/test => tests}/ui/over-constrained-vregs.rs | 0 .../overloaded/auxiliary/overloaded_autoderef_xc.rs | 0 .../test => tests}/ui/overloaded/fixup-deref-mut.rs | 0 {src/test => tests}/ui/overloaded/issue-14958.rs | 0 .../ui/overloaded/overloaded-autoderef-count.rs | 0 .../ui/overloaded/overloaded-autoderef-indexing.rs | 0 .../ui/overloaded/overloaded-autoderef-order.rs | 0 .../ui/overloaded/overloaded-autoderef-vtable.rs | 0 .../ui/overloaded/overloaded-autoderef-xcrate.rs | 0 .../ui/overloaded/overloaded-autoderef.rs | 0 .../ui/overloaded/overloaded-calls-nontuple.rs | 0 .../ui/overloaded/overloaded-calls-nontuple.stderr | 0 .../overloaded/overloaded-calls-object-one-arg.rs | 0 .../overloaded/overloaded-calls-object-two-args.rs | 0 .../overloaded/overloaded-calls-object-zero-args.rs | 0 .../ui/overloaded/overloaded-calls-param-vtables.rs | 0 .../ui/overloaded/overloaded-calls-simple.rs | 0 .../ui/overloaded/overloaded-calls-zero-args.rs | 0 .../ui/overloaded/overloaded-deref-count.rs | 0 .../ui/overloaded/overloaded-deref.rs | 0 .../ui/overloaded/overloaded-index-assoc-list.rs | 0 .../ui/overloaded/overloaded-index-autoderef.rs | 0 .../ui/overloaded/overloaded-index-in-field.rs | 0 .../ui/overloaded/overloaded-index.rs | 0 .../overloaded/overloaded_deref_with_ref_pattern.rs | 0 .../overloaded_deref_with_ref_pattern_issue15609.rs | 0 .../packed-struct-generic-transmute.rs | 0 .../packed-struct-generic-transmute.stderr | 0 .../ui/packed-struct/packed-struct-transmute.rs | 0 .../ui/packed-struct/packed-struct-transmute.stderr | 0 {src/test => tests}/ui/packed/auxiliary/packed.rs | 0 {src/test => tests}/ui/packed/issue-27060-2.rs | 0 {src/test => tests}/ui/packed/issue-27060-2.stderr | 0 {src/test => tests}/ui/packed/issue-27060-rpass.rs | 0 .../ui/packed/issue-27060-rpass.stderr | 0 {src/test => tests}/ui/packed/issue-27060.rs | 0 {src/test => tests}/ui/packed/issue-27060.stderr | 0 {src/test => tests}/ui/packed/issue-46152.rs | 0 .../ui/packed/packed-struct-address-of-element.rs | 0 .../ui/packed/packed-struct-borrow-element-64bit.rs | 0 .../packed-struct-borrow-element-64bit.stderr | 0 .../ui/packed/packed-struct-borrow-element.rs | 0 .../ui/packed/packed-struct-borrow-element.stderr | 0 .../ui/packed/packed-struct-drop-aligned.rs | 0 .../ui/packed/packed-struct-generic-layout.rs | 0 .../ui/packed/packed-struct-generic-size.rs | 0 .../ui/packed/packed-struct-layout.rs | 0 .../test => tests}/ui/packed/packed-struct-match.rs | 0 .../ui/packed/packed-struct-optimized-enum.rs | 0 .../ui/packed/packed-struct-size-xc.rs | 0 {src/test => tests}/ui/packed/packed-struct-size.rs | 0 {src/test => tests}/ui/packed/packed-struct-vec.rs | 0 .../ui/packed/packed-tuple-struct-layout.rs | 0 .../ui/packed/packed-tuple-struct-size.rs | 0 .../packed-with-inference-vars-issue-61402.rs | 0 .../ui/panic-handler/auxiliary/some-panic-impl.rs | 0 .../ui/panic-handler/auxiliary/weak-lang-items.rs | 0 .../panic-handler/panic-handler-bad-signature-1.rs | 0 .../panic-handler-bad-signature-1.stderr | 0 .../panic-handler/panic-handler-bad-signature-2.rs | 0 .../panic-handler-bad-signature-2.stderr | 0 .../panic-handler/panic-handler-bad-signature-3.rs | 0 .../panic-handler-bad-signature-3.stderr | 0 .../panic-handler/panic-handler-bad-signature-4.rs | 0 .../panic-handler-bad-signature-4.stderr | 0 .../ui/panic-handler/panic-handler-duplicate.rs | 0 .../ui/panic-handler/panic-handler-duplicate.stderr | 0 .../ui/panic-handler/panic-handler-missing.rs | 0 .../panic-handler-requires-panic-info.rs | 0 .../panic-handler-requires-panic-info.stderr | 0 .../ui/panic-handler/panic-handler-std.rs | 0 .../ui/panic-handler/panic-handler-std.stderr | 0 .../ui/panic-handler/panic-handler-twice.rs | 0 .../panic-handler/panic-handler-wrong-location.rs | 0 .../panic-handler-wrong-location.stderr | 0 .../ui/panic-handler/weak-lang-item-2.rs | 0 .../ui/panic-handler/weak-lang-item.rs | 0 .../ui/panic-handler/weak-lang-item.stderr | 0 .../ui/panic-runtime/abort-link-to-unwind-dylib.rs | 0 .../panic-runtime/abort-link-to-unwind-dylib.stderr | 0 .../panic-runtime/abort-link-to-unwinding-crates.rs | 0 {src/test => tests}/ui/panic-runtime/abort.rs | 0 .../ui/panic-runtime/auxiliary/depends.rs | 0 .../auxiliary/exit-success-if-unwind.rs | 0 .../ui/panic-runtime/auxiliary/needs-abort.rs | 0 .../panic-runtime/auxiliary/needs-panic-runtime.rs | 0 .../ui/panic-runtime/auxiliary/needs-unwind.rs | 0 .../panic-runtime/auxiliary/panic-runtime-abort.rs | 0 .../auxiliary/panic-runtime-lang-items.rs | 0 .../panic-runtime/auxiliary/panic-runtime-unwind.rs | 0 .../auxiliary/panic-runtime-unwind2.rs | 0 .../auxiliary/wants-panic-runtime-abort.rs | 0 .../auxiliary/wants-panic-runtime-unwind.rs | 0 .../ui/panic-runtime/bad-panic-flag1.rs | 0 .../ui/panic-runtime/bad-panic-flag1.stderr | 0 .../ui/panic-runtime/bad-panic-flag2.rs | 0 .../ui/panic-runtime/bad-panic-flag2.stderr | 0 .../ui/panic-runtime/incompatible-type.rs | 0 .../ui/panic-runtime/link-to-abort.rs | 0 .../ui/panic-runtime/link-to-unwind.rs | 0 {src/test => tests}/ui/panic-runtime/lto-abort.rs | 0 {src/test => tests}/ui/panic-runtime/lto-unwind.rs | 0 .../ui/panic-runtime/need-abort-got-unwind.rs | 0 .../ui/panic-runtime/need-abort-got-unwind.stderr | 0 .../ui/panic-runtime/need-unwind-got-abort.rs | 0 .../ui/panic-runtime/need-unwind-got-abort.stderr | 0 {src/test => tests}/ui/panic-runtime/needs-gate.rs | 0 .../ui/panic-runtime/needs-gate.stderr | 0 .../runtime-depend-on-needs-runtime.rs | 0 .../ui/panic-runtime/transitive-link-a-bunch.rs | 0 .../ui/panic-runtime/transitive-link-a-bunch.stderr | 0 .../ui/panic-runtime/two-panic-runtimes.rs | 0 .../ui/panic-runtime/unwind-interleaved.rs | 0 {src/test => tests}/ui/panic-runtime/unwind-rec.rs | 0 {src/test => tests}/ui/panic-runtime/unwind-rec2.rs | 0 .../panic-runtime/unwind-tables-target-required.rs | 0 .../ui/panic-runtime/unwind-unique.rs | 0 .../ui/panic-runtime/want-abort-got-unwind.rs | 0 .../ui/panic-runtime/want-abort-got-unwind2.rs | 0 .../ui/panic-runtime/want-unwind-got-abort.rs | 0 .../ui/panic-runtime/want-unwind-got-abort.stderr | 0 .../ui/panic-runtime/want-unwind-got-abort2.rs | 0 .../ui/panic-runtime/want-unwind-got-abort2.stderr | 0 {src/test => tests}/ui/panic-while-printing.rs | 0 .../ui/panic_implementation-closures.rs | 0 {src/test => tests}/ui/panics/abort-on-panic.rs | 0 {src/test => tests}/ui/panics/args-panic.rs | 0 .../ui/panics/default-backtrace-ice.rs | 0 .../ui/panics/default-backtrace-ice.stderr | 0 {src/test => tests}/ui/panics/doublepanic.rs | 0 {src/test => tests}/ui/panics/explicit-panic-msg.rs | 0 {src/test => tests}/ui/panics/explicit-panic.rs | 0 {src/test => tests}/ui/panics/fmt-panic.rs | 0 .../issue-47429-short-backtraces.legacy.run.stderr | 0 .../ui/panics/issue-47429-short-backtraces.rs | 0 .../issue-47429-short-backtraces.v0.run.stderr | 0 .../ui/panics/location-detail-panic-no-column.rs | 0 .../location-detail-panic-no-column.run.stderr | 0 .../ui/panics/location-detail-panic-no-file.rs | 0 .../panics/location-detail-panic-no-file.run.stderr | 0 .../ui/panics/location-detail-panic-no-line.rs | 0 .../panics/location-detail-panic-no-line.run.stderr | 0 .../location-detail-panic-no-location-info.rs | 0 ...ocation-detail-panic-no-location-info.run.stderr | 0 .../ui/panics/location-detail-unwrap-no-file.rs | 0 .../location-detail-unwrap-no-file.run.stderr | 0 {src/test => tests}/ui/panics/main-panic.rs | 0 {src/test => tests}/ui/panics/panic-2021.rs | 0 {src/test => tests}/ui/panics/panic-2021.stderr | 0 {src/test => tests}/ui/panics/panic-arg.rs | 0 .../ui/panics/panic-handler-chain-update-hook.rs | 0 .../test => tests}/ui/panics/panic-handler-chain.rs | 0 .../ui/panics/panic-handler-flail-wildly.rs | 0 .../ui/panics/panic-handler-set-twice.rs | 0 .../ui/panics/panic-in-dtor-drops-fields.rs | 0 .../ui/panics/panic-macro-any-wrapped.rs | 0 {src/test => tests}/ui/panics/panic-macro-any.rs | 0 .../ui/panics/panic-macro-explicit.rs | 0 {src/test => tests}/ui/panics/panic-macro-fmt.rs | 0 {src/test => tests}/ui/panics/panic-macro-owned.rs | 0 {src/test => tests}/ui/panics/panic-macro-static.rs | 0 {src/test => tests}/ui/panics/panic-main.rs | 0 {src/test => tests}/ui/panics/panic-parens.rs | 0 .../ui/panics/panic-recover-propagate.rs | 0 {src/test => tests}/ui/panics/panic-set-handler.rs | 0 .../ui/panics/panic-set-unset-handler.rs | 0 .../panics/panic-short-backtrace-windows-x86_64.rs | 0 .../panic-short-backtrace-windows-x86_64.run.stderr | 0 .../ui/panics/panic-take-handler-nop.rs | 0 .../ui/panics/panic-task-name-none.rs | 0 .../ui/panics/panic-task-name-owned.rs | 0 {src/test => tests}/ui/panics/panic.rs | 0 {src/test => tests}/ui/panics/result-get-panic.rs | 0 .../ui/panics/runtime-switch.legacy.run.stderr | 0 {src/test => tests}/ui/panics/runtime-switch.rs | 0 .../ui/panics/runtime-switch.v0.run.stderr | 0 {src/test => tests}/ui/panics/test-panic.rs | 0 .../ui/panics/test-should-fail-bad-message.rs | 0 .../ui/panics/test-should-panic-bad-message.rs | 0 .../ui/panics/test-should-panic-no-message.rs | 0 {src/test => tests}/ui/panics/unique-panic.rs | 0 {src/test => tests}/ui/panics/while-body-panics.rs | 0 {src/test => tests}/ui/panics/while-panic.rs | 0 {src/test => tests}/ui/paren-span.rs | 0 {src/test => tests}/ui/paren-span.stderr | 0 .../ui/parser/ascii-only-character-escape.rs | 0 .../ui/parser/ascii-only-character-escape.stderr | 0 .../parser/assoc-const-underscore-semantic-fail.rs | 0 .../assoc-const-underscore-semantic-fail.stderr | 0 .../parser/assoc-const-underscore-syntactic-pass.rs | 0 {src/test => tests}/ui/parser/assoc-oddities-1.rs | 0 .../ui/parser/assoc-oddities-1.stderr | 0 {src/test => tests}/ui/parser/assoc-oddities-2.rs | 0 .../ui/parser/assoc-oddities-2.stderr | 0 .../ui/parser/assoc-static-semantic-fail.rs | 0 .../ui/parser/assoc-static-semantic-fail.stderr | 0 .../ui/parser/assoc-static-syntactic-fail.rs | 0 .../ui/parser/assoc-static-syntactic-fail.stderr | 0 .../ui/parser/assoc-type-in-type-arg.rs | 0 .../ui/parser/assoc-type-in-type-arg.stderr | 0 .../associated-types-project-from-hrtb-explicit.rs | 0 ...sociated-types-project-from-hrtb-explicit.stderr | 0 {src/test => tests}/ui/parser/attr-bad-meta-2.rs | 0 .../test => tests}/ui/parser/attr-bad-meta-2.stderr | 0 {src/test => tests}/ui/parser/attr-bad-meta-3.rs | 0 .../test => tests}/ui/parser/attr-bad-meta-3.stderr | 0 {src/test => tests}/ui/parser/attr-bad-meta.rs | 0 {src/test => tests}/ui/parser/attr-bad-meta.stderr | 0 {src/test => tests}/ui/parser/attr-before-eof.rs | 0 .../test => tests}/ui/parser/attr-before-eof.stderr | 0 .../test => tests}/ui/parser/attr-dangling-in-fn.rs | 0 .../ui/parser/attr-dangling-in-fn.stderr | 0 .../ui/parser/attr-dangling-in-mod.rs | 0 .../ui/parser/attr-dangling-in-mod.stderr | 0 .../ui/parser/attr-stmt-expr-attr-bad.rs | 0 .../ui/parser/attr-stmt-expr-attr-bad.stderr | 0 .../ui/parser/attr-with-a-semicolon.rs | 0 .../ui/parser/attr-with-a-semicolon.stderr | 0 {src/test => tests}/ui/parser/attr.rs | 0 {src/test => tests}/ui/parser/attr.stderr | 0 .../attribute-with-no-generics-in-parameter-list.rs | 0 ...ribute-with-no-generics-in-parameter-list.stderr | 0 .../ui/parser/attrs-after-extern-mod.rs | 0 .../ui/parser/attrs-after-extern-mod.stderr | 0 {src/test => tests}/ui/parser/bad-char-literals.rs | 0 .../ui/parser/bad-char-literals.stderr | 0 {src/test => tests}/ui/parser/bad-crate-name.rs | 0 {src/test => tests}/ui/parser/bad-crate-name.stderr | 0 .../ui/parser/bad-escape-suggest-raw-string.rs | 0 .../ui/parser/bad-escape-suggest-raw-string.stderr | 0 .../ui/parser/bad-fn-ptr-qualifier.fixed | 0 .../ui/parser/bad-fn-ptr-qualifier.rs | 0 .../ui/parser/bad-fn-ptr-qualifier.stderr | 0 {src/test => tests}/ui/parser/bad-if-statements.rs | 0 .../ui/parser/bad-if-statements.stderr | 0 .../ui/parser/bad-interpolated-block.rs | 0 .../ui/parser/bad-interpolated-block.stderr | 0 {src/test => tests}/ui/parser/bad-let-as-field.rs | 0 .../ui/parser/bad-let-as-field.stderr | 0 {src/test => tests}/ui/parser/bad-lit-suffixes.rs | 0 .../ui/parser/bad-lit-suffixes.stderr | 0 {src/test => tests}/ui/parser/bad-match.rs | 0 {src/test => tests}/ui/parser/bad-match.stderr | 0 {src/test => tests}/ui/parser/bad-name.rs | 0 {src/test => tests}/ui/parser/bad-name.stderr | 0 {src/test => tests}/ui/parser/bad-pointer-type.rs | 0 .../ui/parser/bad-pointer-type.stderr | 0 .../ui/parser/bad-struct-following-where.rs | 0 .../ui/parser/bad-struct-following-where.stderr | 0 .../ui/parser/bad-value-ident-false.rs | 0 .../ui/parser/bad-value-ident-false.stderr | 0 .../ui/parser/bad-value-ident-true.rs | 0 .../ui/parser/bad-value-ident-true.stderr | 0 {src/test => tests}/ui/parser/bare-struct-body.rs | 0 .../ui/parser/bare-struct-body.stderr | 0 .../ui/parser/bastion-of-the-turbofish.rs | 0 {src/test => tests}/ui/parser/better-expected.rs | 0 .../test => tests}/ui/parser/better-expected.stderr | 0 .../ui/parser/bind-struct-early-modifiers.rs | 0 .../ui/parser/bind-struct-early-modifiers.stderr | 0 .../ui/parser/block-no-opening-brace.rs | 0 .../ui/parser/block-no-opening-brace.stderr | 0 .../ui/parser/bound-single-question-mark.rs | 0 .../ui/parser/bound-single-question-mark.stderr | 0 {src/test => tests}/ui/parser/bounds-lifetime-1.rs | 0 .../ui/parser/bounds-lifetime-1.stderr | 0 {src/test => tests}/ui/parser/bounds-lifetime-2.rs | 0 .../ui/parser/bounds-lifetime-2.stderr | 0 .../ui/parser/bounds-lifetime-where-1.rs | 0 .../ui/parser/bounds-lifetime-where-1.stderr | 0 .../ui/parser/bounds-lifetime-where.rs | 0 .../ui/parser/bounds-lifetime-where.stderr | 0 {src/test => tests}/ui/parser/bounds-lifetime.rs | 0 .../test => tests}/ui/parser/bounds-lifetime.stderr | 0 {src/test => tests}/ui/parser/bounds-obj-parens.rs | 0 {src/test => tests}/ui/parser/bounds-type-where.rs | 0 .../ui/parser/bounds-type-where.stderr | 0 {src/test => tests}/ui/parser/bounds-type.rs | 0 {src/test => tests}/ui/parser/bounds-type.stderr | 0 {src/test => tests}/ui/parser/byte-literals.rs | 0 {src/test => tests}/ui/parser/byte-literals.stderr | 0 .../ui/parser/byte-string-literals.rs | 0 .../ui/parser/byte-string-literals.stderr | 0 .../ui/parser/can-begin-expr-check.rs | 0 .../ui/parser/can-begin-expr-check.stderr | 0 .../ui/parser/chained-comparison-suggestion.rs | 0 .../ui/parser/chained-comparison-suggestion.stderr | 0 .../ui/parser/char/whitespace-character-literal.rs | 0 .../parser/char/whitespace-character-literal.stderr | 0 .../ui/parser/circular_modules_hello.rs | 0 .../ui/parser/circular_modules_main.rs | 0 .../ui/parser/circular_modules_main.stderr | 0 .../ui/parser/class-implements-bad-trait.rs | 0 .../ui/parser/class-implements-bad-trait.stderr | 0 .../ui/parser/closure-return-syntax.rs | 0 .../ui/parser/closure-return-syntax.stderr | 0 .../ui/parser/column-offset-1-based.rs | 0 .../ui/parser/column-offset-1-based.stderr | 0 .../const-param-decl-on-type-instead-of-impl.rs | 0 .../const-param-decl-on-type-instead-of-impl.stderr | 0 ...onstraints-before-generic-args-syntactic-pass.rs | 0 ...raints-before-generic-args-syntactic-pass.stderr | 0 .../ui/parser/default-on-wrong-item-kind.rs | 0 .../ui/parser/default-on-wrong-item-kind.stderr | 0 .../ui/parser/default-unmatched-assoc.rs | 0 .../ui/parser/default-unmatched-assoc.stderr | 0 .../ui/parser/default-unmatched-extern.rs | 0 .../ui/parser/default-unmatched-extern.stderr | 0 {src/test => tests}/ui/parser/default-unmatched.rs | 0 .../ui/parser/default-unmatched.stderr | 0 {src/test => tests}/ui/parser/default.rs | 0 {src/test => tests}/ui/parser/default.stderr | 0 .../test => tests}/ui/parser/diff-markers/enum-2.rs | 0 .../ui/parser/diff-markers/enum-2.stderr | 0 {src/test => tests}/ui/parser/diff-markers/enum.rs | 0 .../ui/parser/diff-markers/enum.stderr | 0 .../test => tests}/ui/parser/diff-markers/fn-arg.rs | 0 .../ui/parser/diff-markers/fn-arg.stderr | 0 .../ui/parser/diff-markers/item-with-attr.rs | 0 .../ui/parser/diff-markers/item-with-attr.stderr | 0 {src/test => tests}/ui/parser/diff-markers/item.rs | 0 .../ui/parser/diff-markers/item.stderr | 0 .../ui/parser/diff-markers/statement.rs | 0 .../ui/parser/diff-markers/statement.stderr | 0 .../ui/parser/diff-markers/struct-expr.rs | 0 .../ui/parser/diff-markers/struct-expr.stderr | 0 .../test => tests}/ui/parser/diff-markers/struct.rs | 0 .../ui/parser/diff-markers/struct.stderr | 0 .../ui/parser/diff-markers/trait-item.rs | 0 .../ui/parser/diff-markers/trait-item.stderr | 0 .../ui/parser/diff-markers/tuple-struct.rs | 0 .../ui/parser/diff-markers/tuple-struct.stderr | 0 .../ui/parser/diff-markers/use-statement.rs | 0 .../ui/parser/diff-markers/use-statement.stderr | 0 .../ui/parser/do-catch-suggests-try.rs | 0 .../ui/parser/do-catch-suggests-try.stderr | 0 .../parser/do-not-suggest-semicolon-before-array.rs | 0 .../do-not-suggest-semicolon-before-array.stderr | 0 ...ween-macro-without-exclamation-mark-and-array.rs | 0 ...-macro-without-exclamation-mark-and-array.stderr | 0 .../ui/parser/doc-after-struct-field.rs | 0 .../ui/parser/doc-after-struct-field.stderr | 0 {src/test => tests}/ui/parser/doc-before-attr.rs | 0 .../test => tests}/ui/parser/doc-before-attr.stderr | 0 {src/test => tests}/ui/parser/doc-before-eof.rs | 0 {src/test => tests}/ui/parser/doc-before-eof.stderr | 0 .../ui/parser/doc-before-extern-rbrace.rs | 0 .../ui/parser/doc-before-extern-rbrace.stderr | 0 .../ui/parser/doc-before-fn-rbrace.rs | 0 .../ui/parser/doc-before-fn-rbrace.stderr | 0 .../ui/parser/doc-before-identifier.rs | 0 .../ui/parser/doc-before-identifier.stderr | 0 .../ui/parser/doc-before-mod-rbrace.rs | 0 .../ui/parser/doc-before-mod-rbrace.stderr | 0 {src/test => tests}/ui/parser/doc-before-rbrace.rs | 0 .../ui/parser/doc-before-rbrace.stderr | 0 {src/test => tests}/ui/parser/doc-before-semi.rs | 0 .../test => tests}/ui/parser/doc-before-semi.stderr | 0 .../ui/parser/doc-before-struct-rbrace-1.rs | 0 .../ui/parser/doc-before-struct-rbrace-1.stderr | 0 .../ui/parser/doc-before-struct-rbrace-2.rs | 0 .../ui/parser/doc-before-struct-rbrace-2.stderr | 0 .../ui/parser/doc-comment-in-if-statement.rs | 0 .../ui/parser/doc-comment-in-if-statement.stderr | 0 .../test => tests}/ui/parser/doc-comment-in-stmt.rs | 0 .../ui/parser/doc-comment-in-stmt.stderr | 0 .../ui/parser/doc-inside-trait-item.rs | 0 .../ui/parser/doc-inside-trait-item.stderr | 0 {src/test => tests}/ui/parser/dotdotdot-expr.rs | 0 {src/test => tests}/ui/parser/dotdotdot-expr.stderr | 0 {src/test => tests}/ui/parser/double-pointer.rs | 0 {src/test => tests}/ui/parser/double-pointer.stderr | 0 .../ui/parser/duplicate-visibility.rs | 0 .../ui/parser/duplicate-visibility.stderr | 0 .../ui/parser/duplicate-where-clauses.rs | 0 .../ui/parser/duplicate-where-clauses.stderr | 0 .../ui/parser/dyn-trait-compatibility.rs | 0 .../ui/parser/dyn-trait-compatibility.stderr | 0 {src/test => tests}/ui/parser/else-no-if.rs | 0 {src/test => tests}/ui/parser/else-no-if.stderr | 0 {src/test => tests}/ui/parser/emoji-identifiers.rs | 0 .../ui/parser/emoji-identifiers.stderr | 0 .../ui/parser/empty-impl-semicolon.rs | 0 .../ui/parser/empty-impl-semicolon.stderr | 0 {src/test => tests}/ui/parser/expr-as-stmt-2.rs | 0 {src/test => tests}/ui/parser/expr-as-stmt-2.stderr | 0 {src/test => tests}/ui/parser/expr-as-stmt.fixed | 0 {src/test => tests}/ui/parser/expr-as-stmt.rs | 0 {src/test => tests}/ui/parser/expr-as-stmt.stderr | 0 .../ui/parser/extern-abi-from-mac-literal-frag.rs | 0 .../ui/parser/extern-abi-raw-strings.rs | 0 .../ui/parser/extern-abi-string-escaping.rs | 0 .../ui/parser/extern-abi-syntactic.rs | 0 {src/test => tests}/ui/parser/extern-crate-async.rs | 0 .../ui/parser/extern-crate-unexpected-token.rs | 0 .../ui/parser/extern-crate-unexpected-token.stderr | 0 .../ui/parser/extern-expected-fn-or-brace.rs | 0 .../ui/parser/extern-expected-fn-or-brace.stderr | 0 .../ui/parser/extern-foreign-crate.rs | 0 .../ui/parser/extern-foreign-crate.stderr | 0 {src/test => tests}/ui/parser/extern-no-fn.rs | 0 {src/test => tests}/ui/parser/extern-no-fn.stderr | 0 .../ui/parser/float-field-interpolated.rs | 0 .../ui/parser/float-field-interpolated.stderr | 0 {src/test => tests}/ui/parser/float-field.rs | 0 {src/test => tests}/ui/parser/float-field.stderr | 0 {src/test => tests}/ui/parser/float-literals.rs | 0 {src/test => tests}/ui/parser/fn-arg-doc-comment.rs | 0 .../ui/parser/fn-arg-doc-comment.stderr | 0 .../ui/parser/fn-body-eq-expr-semi.rs | 0 .../ui/parser/fn-body-eq-expr-semi.stderr | 0 .../ui/parser/fn-body-optional-semantic-fail.rs | 0 .../ui/parser/fn-body-optional-semantic-fail.stderr | 0 .../ui/parser/fn-body-optional-syntactic-pass.rs | 0 .../ui/parser/fn-colon-return-type.rs | 0 .../ui/parser/fn-colon-return-type.stderr | 0 .../ui/parser/fn-defined-using-def.rs | 0 .../ui/parser/fn-defined-using-def.stderr | 0 .../ui/parser/fn-defined-using-fun.rs | 0 .../ui/parser/fn-defined-using-fun.stderr | 0 .../ui/parser/fn-defined-using-func.rs | 0 .../ui/parser/fn-defined-using-func.stderr | 0 .../ui/parser/fn-defined-using-function.rs | 0 .../ui/parser/fn-defined-using-function.stderr | 0 .../ui/parser/fn-field-parse-error-ice.rs | 0 .../ui/parser/fn-field-parse-error-ice.stderr | 0 .../ui/parser/fn-header-semantic-fail.rs | 0 .../ui/parser/fn-header-semantic-fail.stderr | 0 .../ui/parser/fn-header-syntactic-pass.rs | 0 .../ui/parser/fn-returns-fn-pointer.rs | 0 .../ui/parser/foreign-const-semantic-fail.rs | 0 .../ui/parser/foreign-const-semantic-fail.stderr | 0 .../ui/parser/foreign-const-syntactic-fail.rs | 0 .../ui/parser/foreign-const-syntactic-fail.stderr | 0 .../ui/parser/foreign-static-semantic-fail.rs | 0 .../ui/parser/foreign-static-semantic-fail.stderr | 0 .../ui/parser/foreign-static-syntactic-pass.rs | 0 .../ui/parser/foreign-ty-semantic-fail.rs | 0 .../ui/parser/foreign-ty-semantic-fail.stderr | 0 .../ui/parser/foreign-ty-syntactic-pass.rs | 0 .../ui/parser/if-block-unreachable-expr.rs | 0 {src/test => tests}/ui/parser/if-in-in.fixed | 0 {src/test => tests}/ui/parser/if-in-in.rs | 0 {src/test => tests}/ui/parser/if-in-in.stderr | 0 .../ui/parser/impl-item-const-pass.rs | 0 .../ui/parser/impl-item-const-semantic-fail.rs | 0 .../ui/parser/impl-item-const-semantic-fail.stderr | 0 .../ui/parser/impl-item-fn-no-body-pass.rs | 0 .../ui/parser/impl-item-fn-no-body-semantic-fail.rs | 0 .../impl-item-fn-no-body-semantic-fail.stderr | 0 .../ui/parser/impl-item-type-no-body-pass.rs | 0 .../parser/impl-item-type-no-body-semantic-fail.rs | 0 .../impl-item-type-no-body-semantic-fail.stderr | 0 {src/test => tests}/ui/parser/impl-parsing.rs | 0 {src/test => tests}/ui/parser/impl-parsing.stderr | 0 {src/test => tests}/ui/parser/impl-qpath.rs | 0 {src/test => tests}/ui/parser/import-from-path.rs | 0 .../ui/parser/import-from-path.stderr | 0 {src/test => tests}/ui/parser/import-from-rename.rs | 0 .../ui/parser/import-from-rename.stderr | 0 {src/test => tests}/ui/parser/import-glob-path.rs | 0 .../ui/parser/import-glob-path.stderr | 0 {src/test => tests}/ui/parser/import-glob-rename.rs | 0 .../ui/parser/import-glob-rename.stderr | 0 .../ui/parser/increment-autofix-2.fixed | 0 .../test => tests}/ui/parser/increment-autofix-2.rs | 0 .../ui/parser/increment-autofix-2.stderr | 0 .../ui/parser/increment-autofix.fixed | 0 {src/test => tests}/ui/parser/increment-autofix.rs | 0 .../ui/parser/increment-autofix.stderr | 0 .../ui/parser/inner-attr-after-doc-comment.rs | 0 .../ui/parser/inner-attr-after-doc-comment.stderr | 0 .../ui/parser/inner-attr-in-trait-def.rs | 0 {src/test => tests}/ui/parser/inner-attr.rs | 0 {src/test => tests}/ui/parser/inner-attr.stderr | 0 .../ui/parser/int-literal-too-large-span.rs | 0 .../ui/parser/int-literal-too-large-span.stderr | 0 .../ui/parser/intersection-patterns-1.fixed | 0 .../ui/parser/intersection-patterns-1.rs | 0 .../ui/parser/intersection-patterns-1.stderr | 0 .../ui/parser/intersection-patterns-2.rs | 0 .../ui/parser/intersection-patterns-2.stderr | 0 .../test => tests}/ui/parser/inverted-parameters.rs | 0 .../ui/parser/inverted-parameters.stderr | 0 .../ui/parser/issue-100197-mut-let.fixed | 0 .../ui/parser/issue-100197-mut-let.rs | 0 .../ui/parser/issue-100197-mut-let.stderr | 0 .../ui/parser/issue-101477-enum.fixed | 0 {src/test => tests}/ui/parser/issue-101477-enum.rs | 0 .../ui/parser/issue-101477-enum.stderr | 0 .../test => tests}/ui/parser/issue-101477-let.fixed | 0 {src/test => tests}/ui/parser/issue-101477-let.rs | 0 .../ui/parser/issue-101477-let.stderr | 0 {src/test => tests}/ui/parser/issue-102806.rs | 0 {src/test => tests}/ui/parser/issue-102806.stderr | 0 {src/test => tests}/ui/parser/issue-103143.rs | 0 {src/test => tests}/ui/parser/issue-103143.stderr | 0 {src/test => tests}/ui/parser/issue-103381.fixed | 0 {src/test => tests}/ui/parser/issue-103381.rs | 0 {src/test => tests}/ui/parser/issue-103381.stderr | 0 {src/test => tests}/ui/parser/issue-103425.rs | 0 {src/test => tests}/ui/parser/issue-103425.stderr | 0 {src/test => tests}/ui/parser/issue-103451.rs | 0 {src/test => tests}/ui/parser/issue-103451.stderr | 0 .../ui/parser/issue-103748-ICE-wrong-braces.rs | 0 .../ui/parser/issue-103748-ICE-wrong-braces.stderr | 0 {src/test => tests}/ui/parser/issue-103869.rs | 0 {src/test => tests}/ui/parser/issue-103869.stderr | 0 {src/test => tests}/ui/parser/issue-104620.rs | 0 {src/test => tests}/ui/parser/issue-104620.stderr | 0 .../ui/parser/issue-104867-inc-dec-2.rs | 0 .../ui/parser/issue-104867-inc-dec-2.stderr | 0 .../ui/parser/issue-104867-inc-dec.rs | 0 .../ui/parser/issue-104867-inc-dec.stderr | 0 {src/test => tests}/ui/parser/issue-105366.fixed | 0 {src/test => tests}/ui/parser/issue-105366.rs | 0 {src/test => tests}/ui/parser/issue-105366.stderr | 0 {src/test => tests}/ui/parser/issue-105634.rs | 0 .../ui/parser/issue-17718-parse-const.rs | 0 {src/test => tests}/ui/parser/issue-39616.rs | 0 {src/test => tests}/ui/parser/issue-39616.stderr | 0 {src/test => tests}/ui/parser/issue-49257.rs | 0 {src/test => tests}/ui/parser/issue-49257.stderr | 0 {src/test => tests}/ui/parser/issue-61858.rs | 0 {src/test => tests}/ui/parser/issue-61858.stderr | 0 .../ui/parser/issue-68091-unicode-ident-after-if.rs | 0 .../issue-68091-unicode-ident-after-if.stderr | 0 ...sue-68092-unicode-ident-after-incomplete-expr.rs | 0 ...68092-unicode-ident-after-incomplete-expr.stderr | 0 {src/test => tests}/ui/parser/issue-81804.rs | 0 {src/test => tests}/ui/parser/issue-81804.stderr | 0 {src/test => tests}/ui/parser/issue-81827.rs | 0 {src/test => tests}/ui/parser/issue-81827.stderr | 0 .../ui/parser/issue-87694-duplicated-pub.rs | 0 .../ui/parser/issue-87694-duplicated-pub.stderr | 0 .../ui/parser/issue-87694-misplaced-pub.rs | 0 .../ui/parser/issue-87694-misplaced-pub.stderr | 0 {src/test => tests}/ui/parser/issue-90728.rs | 0 {src/test => tests}/ui/parser/issue-90728.stderr | 0 {src/test => tests}/ui/parser/issue-91421.rs | 0 {src/test => tests}/ui/parser/issue-91421.stderr | 0 ...issue-99625-enum-struct-mutually-exclusive.fixed | 0 .../issue-99625-enum-struct-mutually-exclusive.rs | 0 ...ssue-99625-enum-struct-mutually-exclusive.stderr | 0 .../issue-99910-const-let-mutually-exclusive.fixed | 0 .../issue-99910-const-let-mutually-exclusive.rs | 0 .../issue-99910-const-let-mutually-exclusive.stderr | 0 .../ui/parser/issues/auxiliary/issue-21146-inc.rs | 0 ...sue-89971-outer-attr-following-inner-attr-ice.rs | 0 .../ui/parser/issues/auxiliary/issue-94340-inc.rs | 0 .../test => tests}/ui/parser/issues/issue-101540.rs | 0 .../ui/parser/issues/issue-101540.stderr | 0 .../issues/issue-102182-impl-trait-recover.rs | 0 .../issues/issue-102182-impl-trait-recover.stderr | 0 .../ui/parser/issues/issue-10392-2.fixed | 0 .../ui/parser/issues/issue-10392-2.rs | 0 .../ui/parser/issues/issue-10392-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-10392.rs | 0 .../ui/parser/issues/issue-10392.stderr | 0 .../test => tests}/ui/parser/issues/issue-104088.rs | 0 .../ui/parser/issues/issue-104088.stderr | 0 .../ui/parser/issues/issue-10636-1.rs | 0 .../ui/parser/issues/issue-10636-1.stderr | 0 .../ui/parser/issues/issue-10636-2.rs | 0 .../ui/parser/issues/issue-10636-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-13483.rs | 0 .../ui/parser/issues/issue-13483.stderr | 0 .../ui/parser/issues/issue-14303-fncall.full.stderr | 0 .../issues/issue-14303-fncall.generic_arg.stderr | 0 .../ui/parser/issues/issue-14303-fncall.rs | 0 {src/test => tests}/ui/parser/issues/issue-14303.rs | 0 .../ui/parser/issues/issue-14303.stderr | 0 {src/test => tests}/ui/parser/issues/issue-15914.rs | 0 .../ui/parser/issues/issue-15914.stderr | 0 {src/test => tests}/ui/parser/issues/issue-15980.rs | 0 .../ui/parser/issues/issue-15980.stderr | 0 {src/test => tests}/ui/parser/issues/issue-1655.rs | 0 .../ui/parser/issues/issue-1655.stderr | 0 .../ui/parser/issues/issue-17718-const-mut.rs | 0 .../ui/parser/issues/issue-17718-const-mut.stderr | 0 .../ui/parser/issues/issue-17904-2.rs | 0 .../ui/parser/issues/issue-17904-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-17904.rs | 0 .../ui/parser/issues/issue-17904.stderr | 0 .../test => tests}/ui/parser/issues/issue-1802-1.rs | 0 .../ui/parser/issues/issue-1802-1.stderr | 0 .../test => tests}/ui/parser/issues/issue-1802-2.rs | 0 .../ui/parser/issues/issue-1802-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-19096.rs | 0 .../ui/parser/issues/issue-19096.stderr | 0 {src/test => tests}/ui/parser/issues/issue-19398.rs | 0 .../ui/parser/issues/issue-19398.stderr | 0 .../ui/parser/issues/issue-20616-1.rs | 0 .../ui/parser/issues/issue-20616-1.stderr | 0 .../ui/parser/issues/issue-20616-2.rs | 0 .../ui/parser/issues/issue-20616-2.stderr | 0 .../ui/parser/issues/issue-20616-3.rs | 0 .../ui/parser/issues/issue-20616-3.stderr | 0 .../ui/parser/issues/issue-20616-4.rs | 0 .../ui/parser/issues/issue-20616-4.stderr | 0 .../ui/parser/issues/issue-20616-5.rs | 0 .../ui/parser/issues/issue-20616-5.stderr | 0 .../ui/parser/issues/issue-20616-6.rs | 0 .../ui/parser/issues/issue-20616-6.stderr | 0 .../ui/parser/issues/issue-20616-7.rs | 0 .../ui/parser/issues/issue-20616-7.stderr | 0 .../ui/parser/issues/issue-20616-8.rs | 0 .../ui/parser/issues/issue-20616-8.stderr | 0 .../ui/parser/issues/issue-20616-9.rs | 0 .../ui/parser/issues/issue-20616-9.stderr | 0 .../ui/parser/issues/issue-20711-2.rs | 0 .../ui/parser/issues/issue-20711-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-20711.rs | 0 .../ui/parser/issues/issue-20711.stderr | 0 {src/test => tests}/ui/parser/issues/issue-21146.rs | 0 .../ui/parser/issues/issue-21146.stderr | 0 {src/test => tests}/ui/parser/issues/issue-21153.rs | 0 .../ui/parser/issues/issue-21153.stderr | 0 {src/test => tests}/ui/parser/issues/issue-21475.rs | 0 {src/test => tests}/ui/parser/issues/issue-22647.rs | 0 .../ui/parser/issues/issue-22647.stderr | 0 {src/test => tests}/ui/parser/issues/issue-22712.rs | 0 .../ui/parser/issues/issue-22712.stderr | 0 .../test => tests}/ui/parser/issues/issue-2354-1.rs | 0 .../ui/parser/issues/issue-2354-1.stderr | 0 {src/test => tests}/ui/parser/issues/issue-2354.rs | 0 .../ui/parser/issues/issue-2354.stderr | 0 .../ui/parser/issues/issue-23620-invalid-escapes.rs | 0 .../issues/issue-23620-invalid-escapes.stderr | 0 {src/test => tests}/ui/parser/issues/issue-24197.rs | 0 .../ui/parser/issues/issue-24197.stderr | 0 {src/test => tests}/ui/parser/issues/issue-24375.rs | 0 .../ui/parser/issues/issue-24375.stderr | 0 {src/test => tests}/ui/parser/issues/issue-24780.rs | 0 .../ui/parser/issues/issue-24780.stderr | 0 {src/test => tests}/ui/parser/issues/issue-27255.rs | 0 .../ui/parser/issues/issue-27255.stderr | 0 .../ui/parser/issues/issue-30318.fixed | 0 {src/test => tests}/ui/parser/issues/issue-30318.rs | 0 .../ui/parser/issues/issue-30318.stderr | 0 .../ui/parser/issues/issue-3036.fixed | 0 {src/test => tests}/ui/parser/issues/issue-3036.rs | 0 .../ui/parser/issues/issue-3036.stderr | 0 {src/test => tests}/ui/parser/issues/issue-31804.rs | 0 .../ui/parser/issues/issue-31804.stderr | 0 {src/test => tests}/ui/parser/issues/issue-32214.rs | 0 .../ui/parser/issues/issue-32214.stderr | 0 {src/test => tests}/ui/parser/issues/issue-32446.rs | 0 .../ui/parser/issues/issue-32446.stderr | 0 {src/test => tests}/ui/parser/issues/issue-32501.rs | 0 .../ui/parser/issues/issue-32501.stderr | 0 {src/test => tests}/ui/parser/issues/issue-32505.rs | 0 .../ui/parser/issues/issue-32505.stderr | 0 {src/test => tests}/ui/parser/issues/issue-33262.rs | 0 .../ui/parser/issues/issue-33262.stderr | 0 {src/test => tests}/ui/parser/issues/issue-33413.rs | 0 .../ui/parser/issues/issue-33413.stderr | 0 .../ui/parser/issues/issue-33418.fixed | 0 {src/test => tests}/ui/parser/issues/issue-33418.rs | 0 .../ui/parser/issues/issue-33418.stderr | 0 {src/test => tests}/ui/parser/issues/issue-33455.rs | 0 .../ui/parser/issues/issue-33455.stderr | 0 .../ui/parser/issues/issue-34222-1.rs | 0 .../ui/parser/issues/issue-34222-1.stderr | 0 .../ui/parser/issues/issue-34255-1.rs | 0 .../ui/parser/issues/issue-34255-1.stderr | 0 .../parser/issues/issue-35813-postfix-after-cast.rs | 0 .../issues/issue-35813-postfix-after-cast.stderr | 0 {src/test => tests}/ui/parser/issues/issue-41155.rs | 0 .../ui/parser/issues/issue-41155.stderr | 0 {src/test => tests}/ui/parser/issues/issue-43196.rs | 0 .../ui/parser/issues/issue-43196.stderr | 0 {src/test => tests}/ui/parser/issues/issue-43692.rs | 0 .../ui/parser/issues/issue-43692.stderr | 0 {src/test => tests}/ui/parser/issues/issue-44021.rs | 0 .../ui/parser/issues/issue-44021.stderr | 0 {src/test => tests}/ui/parser/issues/issue-44406.rs | 0 .../ui/parser/issues/issue-44406.stderr | 0 {src/test => tests}/ui/parser/issues/issue-45296.rs | 0 .../ui/parser/issues/issue-45296.stderr | 0 .../ui/parser/issues/issue-46186.fixed | 0 {src/test => tests}/ui/parser/issues/issue-46186.rs | 0 .../ui/parser/issues/issue-46186.stderr | 0 ...os-cannot-interpolate-impl-items-bad-variants.rs | 0 ...annot-interpolate-impl-items-bad-variants.stderr | 0 ...ue-48137-macros-cannot-interpolate-impl-items.rs | 0 .../ui/parser/issues/issue-48508-aux.rs | 0 {src/test => tests}/ui/parser/issues/issue-48508.rs | 0 .../ui/parser/issues/issue-48636.fixed | 0 {src/test => tests}/ui/parser/issues/issue-48636.rs | 0 .../ui/parser/issues/issue-48636.stderr | 0 {src/test => tests}/ui/parser/issues/issue-49040.rs | 0 .../ui/parser/issues/issue-49040.stderr | 0 {src/test => tests}/ui/parser/issues/issue-51602.rs | 0 .../ui/parser/issues/issue-51602.stderr | 0 {src/test => tests}/ui/parser/issues/issue-52496.rs | 0 .../ui/parser/issues/issue-52496.stderr | 0 .../ui/parser/issues/issue-54521-1.rs | 0 .../ui/parser/issues/issue-54521-2.fixed | 0 .../ui/parser/issues/issue-54521-2.rs | 0 .../ui/parser/issues/issue-54521-2.stderr | 0 .../ui/parser/issues/issue-54521-3.fixed | 0 .../ui/parser/issues/issue-54521-3.rs | 0 .../ui/parser/issues/issue-54521-3.stderr | 0 .../test => tests}/ui/parser/issues/issue-5544-a.rs | 0 .../ui/parser/issues/issue-5544-a.stderr | 0 .../test => tests}/ui/parser/issues/issue-5544-b.rs | 0 .../ui/parser/issues/issue-5544-b.stderr | 0 {src/test => tests}/ui/parser/issues/issue-56031.rs | 0 .../ui/parser/issues/issue-56031.stderr | 0 {src/test => tests}/ui/parser/issues/issue-57198.rs | 0 .../ui/parser/issues/issue-57198.stderr | 0 .../ui/parser/issues/issue-57684.fixed | 0 {src/test => tests}/ui/parser/issues/issue-57684.rs | 0 .../ui/parser/issues/issue-57684.stderr | 0 .../ui/parser/issues/issue-57819.fixed | 0 {src/test => tests}/ui/parser/issues/issue-57819.rs | 0 .../ui/parser/issues/issue-57819.stderr | 0 {src/test => tests}/ui/parser/issues/issue-5806.rs | 0 .../ui/parser/issues/issue-5806.stderr | 0 .../issue-58094-missing-right-square-bracket.rs | 0 .../issue-58094-missing-right-square-bracket.stderr | 0 .../ui/parser/issues/issue-58856-1.rs | 0 .../ui/parser/issues/issue-58856-1.stderr | 0 .../ui/parser/issues/issue-58856-2.rs | 0 .../ui/parser/issues/issue-58856-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-59418.rs | 0 .../ui/parser/issues/issue-59418.stderr | 0 {src/test => tests}/ui/parser/issues/issue-60075.rs | 0 .../ui/parser/issues/issue-60075.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62524.rs | 0 .../ui/parser/issues/issue-62524.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62546.rs | 0 .../ui/parser/issues/issue-62546.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62554.rs | 0 .../ui/parser/issues/issue-62554.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62660.rs | 0 .../ui/parser/issues/issue-62660.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62881.rs | 0 .../ui/parser/issues/issue-62881.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62894.rs | 0 .../ui/parser/issues/issue-62894.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62895.rs | 0 .../ui/parser/issues/issue-62895.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62913.rs | 0 .../ui/parser/issues/issue-62913.stderr | 0 {src/test => tests}/ui/parser/issues/issue-62973.rs | 0 .../ui/parser/issues/issue-62973.stderr | 0 .../issues/issue-63115-range-pat-interpolated.rs | 0 {src/test => tests}/ui/parser/issues/issue-63116.rs | 0 .../ui/parser/issues/issue-63116.stderr | 0 {src/test => tests}/ui/parser/issues/issue-63135.rs | 0 .../ui/parser/issues/issue-63135.stderr | 0 {src/test => tests}/ui/parser/issues/issue-64732.rs | 0 .../ui/parser/issues/issue-64732.stderr | 0 .../issues/issue-65041-empty-vis-matcher-in-enum.rs | 0 .../issue-65041-empty-vis-matcher-in-trait.rs | 0 .../issues/issue-65122-mac-invoc-in-mut-patterns.rs | 0 .../issue-65122-mac-invoc-in-mut-patterns.stderr | 0 .../issues/issue-65257-invalid-var-decl-recovery.rs | 0 .../issue-65257-invalid-var-decl-recovery.stderr | 0 .../issue-65846-rollback-gating-failing-matcher.rs | 0 {src/test => tests}/ui/parser/issues/issue-6610.rs | 0 .../ui/parser/issues/issue-6610.stderr | 0 .../issues/issue-66357-unexpected-unreachable.rs | 0 .../issue-66357-unexpected-unreachable.stderr | 0 {src/test => tests}/ui/parser/issues/issue-66473.rs | Bin .../ui/parser/issues/issue-66473.stderr | Bin ...146-negative-outlives-bound-syntactic-fail.fixed | 0 ...-67146-negative-outlives-bound-syntactic-fail.rs | 0 ...46-negative-outlives-bound-syntactic-fail.stderr | 0 ...sue-67377-invalid-syntax-in-enum-discriminant.rs | 0 ...67377-invalid-syntax-in-enum-discriminant.stderr | 0 ...issue-68000-unicode-ident-after-missing-comma.rs | 0 ...e-68000-unicode-ident-after-missing-comma.stderr | 0 {src/test => tests}/ui/parser/issues/issue-68629.rs | Bin .../ui/parser/issues/issue-68629.stderr | Bin {src/test => tests}/ui/parser/issues/issue-68730.rs | Bin .../ui/parser/issues/issue-68730.stderr | Bin .../issues/issue-68788-in-trait-item-propagation.rs | 0 .../ui/parser/issues/issue-68890-2.rs | 0 .../ui/parser/issues/issue-68890-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-68890.rs | 0 .../ui/parser/issues/issue-68890.stderr | 0 .../issue-70050-ntliteral-accepts-negated-lit.rs | 0 .../issue-70388-recover-dotdotdot-rest-pat.rs | 0 .../issue-70388-recover-dotdotdot-rest-pat.stderr | 0 .../parser/issues/issue-70388-without-witness.fixed | 0 .../ui/parser/issues/issue-70388-without-witness.rs | 0 .../issues/issue-70388-without-witness.stderr | 0 ...issue-70549-resolve-after-recovered-self-ctor.rs | 0 ...e-70549-resolve-after-recovered-self-ctor.stderr | 0 .../issue-70552-ascription-in-parens-after-call.rs | 0 ...sue-70552-ascription-in-parens-after-call.stderr | 0 .../parser/issues/issue-70583-block-is-empty-1.rs | 0 .../issues/issue-70583-block-is-empty-1.stderr | 0 .../parser/issues/issue-70583-block-is-empty-2.rs | 0 .../issues/issue-70583-block-is-empty-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-7222.rs | 0 {src/test => tests}/ui/parser/issues/issue-72253.rs | 0 .../ui/parser/issues/issue-72253.stderr | 0 {src/test => tests}/ui/parser/issues/issue-72373.rs | 0 .../ui/parser/issues/issue-72373.stderr | 0 .../parser/issues/issue-73568-lifetime-after-mut.rs | 0 .../issues/issue-73568-lifetime-after-mut.stderr | 0 {src/test => tests}/ui/parser/issues/issue-75599.rs | 0 .../ui/parser/issues/issue-76437-async.rs | 0 .../ui/parser/issues/issue-76437-async.stderr | 0 .../parser/issues/issue-76437-const-async-unsafe.rs | 0 .../issues/issue-76437-const-async-unsafe.stderr | 0 .../ui/parser/issues/issue-76437-const-async.rs | 0 .../ui/parser/issues/issue-76437-const-async.stderr | 0 .../ui/parser/issues/issue-76437-const.rs | 0 .../ui/parser/issues/issue-76437-const.stderr | 0 .../parser/issues/issue-76437-pub-crate-unsafe.rs | 0 .../issues/issue-76437-pub-crate-unsafe.stderr | 0 .../ui/parser/issues/issue-76437-unsafe.rs | 0 .../ui/parser/issues/issue-76437-unsafe.stderr | 0 .../ui/parser/issues/issue-76597.fixed | 0 {src/test => tests}/ui/parser/issues/issue-76597.rs | 0 .../ui/parser/issues/issue-76597.stderr | 0 {src/test => tests}/ui/parser/issues/issue-7970b.rs | 0 .../ui/parser/issues/issue-7970b.stderr | 0 {src/test => tests}/ui/parser/issues/issue-81806.rs | 0 .../ui/parser/issues/issue-81806.stderr | 0 {src/test => tests}/ui/parser/issues/issue-83639.rs | 0 .../ui/parser/issues/issue-83639.stderr | 0 {src/test => tests}/ui/parser/issues/issue-84104.rs | 0 .../ui/parser/issues/issue-84104.stderr | 0 {src/test => tests}/ui/parser/issues/issue-84117.rs | 0 .../ui/parser/issues/issue-84117.stderr | 0 .../ui/parser/issues/issue-84148-1.rs | 0 .../ui/parser/issues/issue-84148-1.stderr | 0 .../ui/parser/issues/issue-84148-2.rs | 0 .../ui/parser/issues/issue-84148-2.stderr | 0 {src/test => tests}/ui/parser/issues/issue-8537.rs | 0 .../ui/parser/issues/issue-8537.stderr | 0 {src/test => tests}/ui/parser/issues/issue-86895.rs | 0 .../ui/parser/issues/issue-86895.stderr | 0 .../ui/parser/issues/issue-87086-colon-path-sep.rs | 0 .../parser/issues/issue-87086-colon-path-sep.stderr | 0 .../issues/issue-87197-missing-semicolon.fixed | 0 .../parser/issues/issue-87197-missing-semicolon.rs | 0 .../issues/issue-87197-missing-semicolon.stderr | 0 .../issue-87217-keyword-order/const-async-const.rs | 0 .../const-async-const.stderr | 0 .../issue-87217-keyword-order/several-kw-jump.rs | 0 .../several-kw-jump.stderr | 0 .../issues/issue-87217-keyword-order/wrong-async.rs | 0 .../issue-87217-keyword-order/wrong-async.stderr | 0 .../issues/issue-87217-keyword-order/wrong-const.rs | 0 .../issue-87217-keyword-order/wrong-const.stderr | 0 .../issue-87217-keyword-order/wrong-unsafe.rs | 0 .../issue-87217-keyword-order/wrong-unsafe.stderr | 0 {src/test => tests}/ui/parser/issues/issue-87635.rs | 0 .../ui/parser/issues/issue-87635.stderr | 0 .../ui/parser/issues/issue-87812-path.rs | 0 .../ui/parser/issues/issue-87812-path.stderr | 0 {src/test => tests}/ui/parser/issues/issue-87812.rs | 0 .../ui/parser/issues/issue-87812.stderr | 0 .../ui/parser/issues/issue-88276-unary-plus.fixed | 0 .../ui/parser/issues/issue-88276-unary-plus.rs | 0 .../ui/parser/issues/issue-88276-unary-plus.stderr | 0 .../ui/parser/issues/issue-88583-union-as-ident.rs | 0 {src/test => tests}/ui/parser/issues/issue-88770.rs | 0 .../ui/parser/issues/issue-88770.stderr | 0 {src/test => tests}/ui/parser/issues/issue-88818.rs | 0 .../ui/parser/issues/issue-88818.stderr | 0 {src/test => tests}/ui/parser/issues/issue-89388.rs | 0 .../ui/parser/issues/issue-89388.stderr | 0 .../ui/parser/issues/issue-89396.fixed | 0 {src/test => tests}/ui/parser/issues/issue-89396.rs | 0 .../ui/parser/issues/issue-89396.stderr | 0 {src/test => tests}/ui/parser/issues/issue-89574.rs | 0 .../ui/parser/issues/issue-89574.stderr | 0 ...sue-89971-outer-attr-following-inner-attr-ice.rs | 0 ...89971-outer-attr-following-inner-attr-ice.stderr | 0 {src/test => tests}/ui/parser/issues/issue-90993.rs | 0 .../ui/parser/issues/issue-90993.stderr | 0 {src/test => tests}/ui/parser/issues/issue-91461.rs | 0 .../ui/parser/issues/issue-91461.stderr | 0 {src/test => tests}/ui/parser/issues/issue-93282.rs | 0 .../ui/parser/issues/issue-93282.stderr | 0 {src/test => tests}/ui/parser/issues/issue-93867.rs | 0 .../ui/parser/issues/issue-93867.stderr | 0 {src/test => tests}/ui/parser/issues/issue-94340.rs | 0 .../ui/parser/issues/issue-94340.stderr | 0 .../parser/item-free-const-no-body-semantic-fail.rs | 0 .../item-free-const-no-body-semantic-fail.stderr | 0 .../item-free-const-no-body-syntactic-pass.rs | 0 .../item-free-static-no-body-semantic-fail.rs | 0 .../item-free-static-no-body-semantic-fail.stderr | 0 .../item-free-static-no-body-syntactic-pass.rs | 0 .../parser/item-free-type-bounds-semantic-fail.rs | 0 .../item-free-type-bounds-semantic-fail.stderr | 0 .../parser/item-free-type-bounds-syntactic-pass.rs | 0 .../ui/parser/item-kw-case-mismatch.fixed | 0 .../ui/parser/item-kw-case-mismatch.rs | 0 .../ui/parser/item-kw-case-mismatch.stderr | 0 {src/test => tests}/ui/parser/item-needs-block.rs | 0 .../ui/parser/item-needs-block.stderr | 0 {src/test => tests}/ui/parser/keyword-abstract.rs | 0 .../ui/parser/keyword-abstract.stderr | 0 .../ui/parser/keyword-as-as-identifier.rs | 0 .../ui/parser/keyword-as-as-identifier.stderr | 0 .../ui/parser/keyword-box-as-identifier.rs | 0 .../ui/parser/keyword-box-as-identifier.stderr | 0 .../ui/parser/keyword-break-as-identifier.rs | 0 .../ui/parser/keyword-break-as-identifier.stderr | 0 .../ui/parser/keyword-const-as-identifier.rs | 0 .../ui/parser/keyword-const-as-identifier.stderr | 0 .../ui/parser/keyword-continue-as-identifier.rs | 0 .../ui/parser/keyword-continue-as-identifier.stderr | 0 .../ui/parser/keyword-else-as-identifier.rs | 0 .../ui/parser/keyword-else-as-identifier.stderr | 0 .../ui/parser/keyword-enum-as-identifier.rs | 0 .../ui/parser/keyword-enum-as-identifier.stderr | 0 {src/test => tests}/ui/parser/keyword-final.rs | 0 {src/test => tests}/ui/parser/keyword-final.stderr | 0 .../ui/parser/keyword-fn-as-identifier.rs | 0 .../ui/parser/keyword-fn-as-identifier.stderr | 0 .../ui/parser/keyword-for-as-identifier.rs | 0 .../ui/parser/keyword-for-as-identifier.stderr | 0 .../ui/parser/keyword-if-as-identifier.rs | 0 .../ui/parser/keyword-if-as-identifier.stderr | 0 .../ui/parser/keyword-impl-as-identifier.rs | 0 .../ui/parser/keyword-impl-as-identifier.stderr | 0 .../ui/parser/keyword-in-as-identifier.rs | 0 .../ui/parser/keyword-in-as-identifier.stderr | 0 .../ui/parser/keyword-let-as-identifier.rs | 0 .../ui/parser/keyword-let-as-identifier.stderr | 0 .../ui/parser/keyword-loop-as-identifier.rs | 0 .../ui/parser/keyword-loop-as-identifier.stderr | 0 .../ui/parser/keyword-match-as-identifier.rs | 0 .../ui/parser/keyword-match-as-identifier.stderr | 0 .../ui/parser/keyword-mod-as-identifier.rs | 0 .../ui/parser/keyword-mod-as-identifier.stderr | 0 .../ui/parser/keyword-move-as-identifier.rs | 0 .../ui/parser/keyword-move-as-identifier.stderr | 0 .../ui/parser/keyword-mut-as-identifier.rs | 0 .../ui/parser/keyword-mut-as-identifier.stderr | 0 {src/test => tests}/ui/parser/keyword-override.rs | 0 .../ui/parser/keyword-override.stderr | 0 .../ui/parser/keyword-pub-as-identifier.rs | 0 .../ui/parser/keyword-pub-as-identifier.stderr | 0 .../ui/parser/keyword-ref-as-identifier.rs | 0 .../ui/parser/keyword-ref-as-identifier.stderr | 0 .../ui/parser/keyword-return-as-identifier.rs | 0 .../ui/parser/keyword-return-as-identifier.stderr | 0 .../ui/parser/keyword-static-as-identifier.rs | 0 .../ui/parser/keyword-static-as-identifier.stderr | 0 .../ui/parser/keyword-struct-as-identifier.rs | 0 .../ui/parser/keyword-struct-as-identifier.stderr | 0 .../ui/parser/keyword-trait-as-identifier.rs | 0 .../ui/parser/keyword-trait-as-identifier.stderr | 0 .../parser/keyword-try-as-identifier-edition2018.rs | 0 .../keyword-try-as-identifier-edition2018.stderr | 0 .../ui/parser/keyword-type-as-identifier.rs | 0 .../ui/parser/keyword-type-as-identifier.stderr | 0 {src/test => tests}/ui/parser/keyword-typeof.rs | 0 {src/test => tests}/ui/parser/keyword-typeof.stderr | 0 .../ui/parser/keyword-unsafe-as-identifier.rs | 0 .../ui/parser/keyword-unsafe-as-identifier.stderr | 0 .../ui/parser/keyword-use-as-identifier.rs | 0 .../ui/parser/keyword-use-as-identifier.stderr | 0 .../ui/parser/keyword-where-as-identifier.rs | 0 .../ui/parser/keyword-where-as-identifier.stderr | 0 .../ui/parser/keyword-while-as-identifier.rs | 0 .../ui/parser/keyword-while-as-identifier.stderr | 0 {src/test => tests}/ui/parser/keyword.rs | 0 {src/test => tests}/ui/parser/keyword.stderr | 0 .../ui/parser/keywords-followed-by-double-colon.rs | 0 .../parser/keywords-followed-by-double-colon.stderr | 0 {src/test => tests}/ui/parser/kw-in-trait-bounds.rs | 0 .../ui/parser/kw-in-trait-bounds.stderr | 0 .../ui/parser/label-after-block-like.rs | 0 .../ui/parser/label-after-block-like.stderr | 0 .../ui/parser/label-is-actually-char.rs | 0 .../ui/parser/label-is-actually-char.stderr | 0 .../ui/parser/labeled-no-colon-expr.rs | 0 .../ui/parser/labeled-no-colon-expr.stderr | 0 {src/test => tests}/ui/parser/let-binop.fixed | 0 {src/test => tests}/ui/parser/let-binop.rs | 0 {src/test => tests}/ui/parser/let-binop.stderr | 0 .../ui/parser/lifetime-in-pattern-recover.rs | 0 .../ui/parser/lifetime-in-pattern-recover.stderr | 0 .../test => tests}/ui/parser/lifetime-in-pattern.rs | 0 .../ui/parser/lifetime-in-pattern.stderr | 0 .../ui/parser/lifetime-semicolon.fixed | 0 {src/test => tests}/ui/parser/lifetime-semicolon.rs | 0 .../ui/parser/lifetime-semicolon.stderr | 0 .../ui/parser/lifetime_starts_expressions.rs | 0 .../ui/parser/lifetime_starts_expressions.stderr | 0 .../ui/parser/macro-bad-delimiter-ident.rs | 0 .../ui/parser/macro-bad-delimiter-ident.stderr | 0 .../ui/parser/macro-braces-dot-question.rs | 0 {src/test => tests}/ui/parser/macro-keyword.rs | 0 {src/test => tests}/ui/parser/macro-keyword.stderr | 0 .../ui/parser/macro-mismatched-delim-brace-paren.rs | 0 .../macro-mismatched-delim-brace-paren.stderr | 0 .../ui/parser/macro-mismatched-delim-paren-brace.rs | 0 .../macro-mismatched-delim-paren-brace.stderr | 0 .../ui/parser/macro/bad-macro-argument.rs | 0 .../ui/parser/macro/bad-macro-argument.stderr | 0 {src/test => tests}/ui/parser/macro/issue-33569.rs | 0 .../ui/parser/macro/issue-33569.stderr | 0 {src/test => tests}/ui/parser/macro/issue-37113.rs | 0 .../ui/parser/macro/issue-37113.stderr | 0 {src/test => tests}/ui/parser/macro/issue-37234.rs | 0 .../ui/parser/macro/issue-37234.stderr | 0 .../literals-are-validated-before-expansion.rs | 0 .../literals-are-validated-before-expansion.stderr | 0 .../ui/parser/macro/macro-doc-comments-1.rs | 0 .../ui/parser/macro/macro-doc-comments-1.stderr | 0 .../ui/parser/macro/macro-doc-comments-2.rs | 0 .../ui/parser/macro/macro-doc-comments-2.stderr | 0 .../ui/parser/macro/macro-incomplete-parse.rs | 0 .../ui/parser/macro/macro-incomplete-parse.stderr | 0 {src/test => tests}/ui/parser/macro/macro-repeat.rs | 0 .../ui/parser/macro/macro-repeat.stderr | 0 .../ui/parser/macro/pub-item-macro.rs | 0 .../ui/parser/macro/pub-item-macro.stderr | 0 .../ui/parser/macro/trait-non-item-macros.rs | 0 .../ui/parser/macro/trait-non-item-macros.stderr | 0 .../ui/parser/macro/trait-object-macro-matcher.rs | 0 .../parser/macro/trait-object-macro-matcher.stderr | 0 .../ui/parser/macros-no-semicolon-items.rs | 0 .../ui/parser/macros-no-semicolon-items.stderr | 0 .../test => tests}/ui/parser/macros-no-semicolon.rs | 0 .../ui/parser/macros-no-semicolon.stderr | 0 .../ui/parser/match-arm-without-braces.rs | 0 .../ui/parser/match-arm-without-braces.stderr | 0 .../ui/parser/match-arrows-block-then-binop.rs | 0 .../ui/parser/match-arrows-block-then-binop.stderr | 0 .../ui/parser/match-refactor-to-expr.fixed | 0 .../ui/parser/match-refactor-to-expr.rs | 0 .../ui/parser/match-refactor-to-expr.stderr | 0 .../ui/parser/mbe_missing_right_paren.rs | 0 .../ui/parser/mbe_missing_right_paren.stderr | 0 .../missing-close-brace-in-impl-trait.rs | 0 .../missing-close-brace-in-impl-trait.stderr | 0 .../missing-close-brace-in-struct.rs | 0 .../missing-close-brace-in-struct.stderr | 0 .../missing-close-brace-in-trait.rs | 0 .../missing-close-brace-in-trait.stderr | 0 .../ui/parser/mismatched-delim-brace-empty-block.rs | 0 .../mismatched-delim-brace-empty-block.stderr | 0 .../missing-closing-angle-bracket-eq-constraint.rs | 0 ...ssing-closing-angle-bracket-eq-constraint.stderr | 0 ...missing-closing-angle-bracket-struct-field-ty.rs | 0 ...ing-closing-angle-bracket-struct-field-ty.stderr | 0 {src/test => tests}/ui/parser/missing-semicolon.rs | 0 .../ui/parser/missing-semicolon.stderr | 0 .../test => tests}/ui/parser/missing_right_paren.rs | 0 .../ui/parser/missing_right_paren.stderr | 0 .../ui/parser/misspelled-macro-rules.fixed | 0 .../ui/parser/misspelled-macro-rules.rs | 0 .../ui/parser/misspelled-macro-rules.stderr | 0 {src/test => tests}/ui/parser/mod_file_not_exist.rs | 0 .../ui/parser/mod_file_not_exist.stderr | 0 .../ui/parser/mod_file_not_exist_windows.rs | 0 .../ui/parser/mod_file_not_exist_windows.stderr | 0 .../ui/parser/mod_file_with_path_attr.rs | 0 .../ui/parser/mod_file_with_path_attr.stderr | 0 .../multibyte-char-use-seperator-issue-80134.rs | 0 .../multibyte-char-use-seperator-issue-80134.stderr | 0 .../ui/parser/multiline-comment-line-tracking.rs | 0 .../parser/multiline-comment-line-tracking.stderr | 0 {src/test => tests}/ui/parser/multitrait.rs | 0 {src/test => tests}/ui/parser/multitrait.stderr | 0 {src/test => tests}/ui/parser/mut-patterns.rs | 0 {src/test => tests}/ui/parser/mut-patterns.stderr | 0 .../ui/parser/nested-bad-turbofish.rs | 0 .../ui/parser/nested-bad-turbofish.stderr | 0 .../parser/nested-missing-closing-angle-bracket.rs | 0 .../nested-missing-closing-angle-bracket.stderr | 0 .../ui/parser/new-unicode-escapes-1.rs | 0 .../ui/parser/new-unicode-escapes-1.stderr | 0 .../ui/parser/new-unicode-escapes-2.rs | 0 .../ui/parser/new-unicode-escapes-2.stderr | 0 .../ui/parser/new-unicode-escapes-3.rs | 0 .../ui/parser/new-unicode-escapes-3.stderr | 0 .../ui/parser/new-unicode-escapes-4.rs | 0 .../ui/parser/new-unicode-escapes-4.stderr | 0 .../ui/parser/no-binary-float-literal.rs | 0 .../ui/parser/no-binary-float-literal.stderr | 0 .../ui/parser/no-const-fn-in-extern-block.rs | 0 .../ui/parser/no-const-fn-in-extern-block.stderr | 0 .../ui/parser/no-hex-float-literal.rs | 0 .../ui/parser/no-hex-float-literal.stderr | 0 {src/test => tests}/ui/parser/no-unsafe-self.rs | 0 {src/test => tests}/ui/parser/no-unsafe-self.stderr | 0 {src/test => tests}/ui/parser/not-a-pred.rs | 0 {src/test => tests}/ui/parser/not-a-pred.stderr | 0 .../ui/parser/nt-parsing-has-recovery.rs | 0 .../ui/parser/nt-parsing-has-recovery.stderr | 0 {src/test => tests}/ui/parser/numeric-lifetime.rs | 0 .../ui/parser/numeric-lifetime.stderr | 0 .../ui/parser/obsolete-syntax-impl-for-dotdot.rs | 0 .../parser/obsolete-syntax-impl-for-dotdot.stderr | 0 .../ui/parser/old-suffixes-are-really-forbidden.rs | 0 .../parser/old-suffixes-are-really-forbidden.stderr | 0 .../ui/parser/omitted-arg-in-item-fn.rs | 0 .../ui/parser/omitted-arg-in-item-fn.stderr | 0 .../ui/parser/operator-associativity.rs | 0 .../ui/parser/paamayim-nekudotayim.rs | 0 .../ui/parser/paamayim-nekudotayim.stderr | 0 .../test => tests}/ui/parser/parse-assoc-type-lt.rs | 0 .../test => tests}/ui/parser/parse-error-correct.rs | 0 .../ui/parser/parse-error-correct.stderr | 0 {src/test => tests}/ui/parser/parse-panic.rs | 0 {src/test => tests}/ui/parser/parser-recovery-1.rs | 0 .../ui/parser/parser-recovery-1.stderr | 0 {src/test => tests}/ui/parser/parser-recovery-2.rs | 0 .../ui/parser/parser-recovery-2.stderr | 0 .../ui/parser/parser-unicode-whitespace.rs | 0 {src/test => tests}/ui/parser/pat-lt-bracket-1.rs | 0 .../ui/parser/pat-lt-bracket-1.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-2.rs | 0 .../ui/parser/pat-lt-bracket-2.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-3.rs | 0 .../ui/parser/pat-lt-bracket-3.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-4.rs | 0 .../ui/parser/pat-lt-bracket-4.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-5.rs | 0 .../ui/parser/pat-lt-bracket-5.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-6.rs | 0 .../ui/parser/pat-lt-bracket-6.stderr | 0 {src/test => tests}/ui/parser/pat-lt-bracket-7.rs | 0 .../ui/parser/pat-lt-bracket-7.stderr | 0 {src/test => tests}/ui/parser/pat-ranges-1.rs | 0 {src/test => tests}/ui/parser/pat-ranges-1.stderr | 0 {src/test => tests}/ui/parser/pat-ranges-2.rs | 0 {src/test => tests}/ui/parser/pat-ranges-2.stderr | 0 {src/test => tests}/ui/parser/pat-ranges-3.rs | 0 {src/test => tests}/ui/parser/pat-ranges-3.stderr | 0 {src/test => tests}/ui/parser/pat-ranges-4.rs | 0 {src/test => tests}/ui/parser/pat-ranges-4.stderr | 0 {src/test => tests}/ui/parser/pat-ref-enum.rs | 0 {src/test => tests}/ui/parser/pat-ref-enum.stderr | 0 {src/test => tests}/ui/parser/pat-tuple-1.rs | 0 {src/test => tests}/ui/parser/pat-tuple-1.stderr | 0 {src/test => tests}/ui/parser/pat-tuple-2.rs | 0 {src/test => tests}/ui/parser/pat-tuple-3.rs | 0 {src/test => tests}/ui/parser/pat-tuple-3.stderr | 0 {src/test => tests}/ui/parser/pub-method-macro.rs | 0 .../ui/parser/pub-method-macro.stderr | 0 .../ui/parser/public-instead-of-pub-1.fixed | 0 .../ui/parser/public-instead-of-pub-1.rs | 0 .../ui/parser/public-instead-of-pub-1.stderr | 0 .../ui/parser/public-instead-of-pub-2.rs | 0 .../ui/parser/public-instead-of-pub-2.stderr | 0 .../ui/parser/public-instead-of-pub-3.fixed | 0 .../ui/parser/public-instead-of-pub-3.rs | 0 .../ui/parser/public-instead-of-pub-3.stderr | 0 .../ui/parser/public-instead-of-pub.fixed | 0 .../ui/parser/public-instead-of-pub.rs | 0 .../ui/parser/public-instead-of-pub.stderr | 0 .../ui/parser/qualified-path-in-turbofish.fixed | 0 .../ui/parser/qualified-path-in-turbofish.rs | 0 .../ui/parser/qualified-path-in-turbofish.stderr | 0 {src/test => tests}/ui/parser/range-3.rs | 0 {src/test => tests}/ui/parser/range-3.stderr | 0 {src/test => tests}/ui/parser/range-4.rs | 0 {src/test => tests}/ui/parser/range-4.stderr | 0 .../ui/parser/range-inclusive-extra-equals.rs | 0 .../ui/parser/range-inclusive-extra-equals.stderr | 0 {src/test => tests}/ui/parser/range_inclusive.fixed | 0 {src/test => tests}/ui/parser/range_inclusive.rs | 0 .../test => tests}/ui/parser/range_inclusive.stderr | 0 .../ui/parser/range_inclusive_dotdotdot.rs | 0 .../ui/parser/range_inclusive_dotdotdot.stderr | 0 {src/test => tests}/ui/parser/ranges-precedence.rs | 0 ...ue-70677-panic-on-unterminated-raw-str-at-eof.rs | 0 ...0677-panic-on-unterminated-raw-str-at-eof.stderr | 0 .../ui/parser/raw/raw-byte-string-eof.rs | 0 .../ui/parser/raw/raw-byte-string-eof.stderr | 0 .../ui/parser/raw/raw-byte-string-literals.rs | 0 .../ui/parser/raw/raw-byte-string-literals.stderr | 0 .../ui/parser/raw/raw-literal-keywords.rs | 0 .../ui/parser/raw/raw-literal-keywords.stderr | 0 .../ui/parser/raw/raw-literal-self.rs | 0 .../ui/parser/raw/raw-literal-self.stderr | 0 .../ui/parser/raw/raw-literal-underscore.rs | 0 .../ui/parser/raw/raw-literal-underscore.stderr | 0 {src/test => tests}/ui/parser/raw/raw-str-delim.rs | 0 .../ui/parser/raw/raw-str-delim.stderr | 0 .../ui/parser/raw/raw-str-in-macro-call.rs | 0 .../ui/parser/raw/raw-str-unbalanced.rs | 0 .../ui/parser/raw/raw-str-unbalanced.stderr | 0 .../ui/parser/raw/raw-str-unterminated.rs | 0 .../ui/parser/raw/raw-str-unterminated.stderr | 0 {src/test => tests}/ui/parser/raw/raw-string-2.rs | 0 .../ui/parser/raw/raw-string-2.stderr | 0 {src/test => tests}/ui/parser/raw/raw-string.rs | 0 {src/test => tests}/ui/parser/raw/raw-string.stderr | 0 .../ui/parser/recover-assoc-const-constraint.rs | 0 .../ui/parser/recover-assoc-const-constraint.stderr | 0 .../ui/parser/recover-assoc-eq-missing-term.rs | 0 .../ui/parser/recover-assoc-eq-missing-term.stderr | 0 .../ui/parser/recover-assoc-lifetime-constraint.rs | 0 .../parser/recover-assoc-lifetime-constraint.stderr | 0 .../ui/parser/recover-const-async-fn-ptr.rs | 0 .../ui/parser/recover-const-async-fn-ptr.stderr | 0 {src/test => tests}/ui/parser/recover-enum.rs | 0 {src/test => tests}/ui/parser/recover-enum.stderr | 0 {src/test => tests}/ui/parser/recover-enum2.rs | 0 {src/test => tests}/ui/parser/recover-enum2.stderr | 0 ...d-extra-angle-brackets-in-struct-with-a-field.rs | 0 ...tra-angle-brackets-in-struct-with-a-field.stderr | 0 .../ui/parser/recover-field-extra-angle-brackets.rs | 0 .../recover-field-extra-angle-brackets.stderr | 0 {src/test => tests}/ui/parser/recover-field-semi.rs | 0 .../ui/parser/recover-field-semi.stderr | 0 .../ui/parser/recover-fn-ptr-with-generics.rs | 0 .../ui/parser/recover-fn-ptr-with-generics.stderr | 0 .../ui/parser/recover-fn-trait-from-fn-kw.rs | 0 .../ui/parser/recover-fn-trait-from-fn-kw.stderr | 0 .../parser/recover-for-loop-parens-around-head.rs | 0 .../recover-for-loop-parens-around-head.stderr | 0 .../ui/parser/recover-from-bad-variant.rs | 0 .../ui/parser/recover-from-bad-variant.stderr | 0 .../ui/parser/recover-from-homoglyph.rs | 0 .../ui/parser/recover-from-homoglyph.stderr | 0 .../ui/parser/recover-labeled-non-block-expr.fixed | 0 .../ui/parser/recover-labeled-non-block-expr.rs | 0 .../ui/parser/recover-labeled-non-block-expr.stderr | 0 .../parser/recover-missing-semi-before-item.fixed | 0 .../ui/parser/recover-missing-semi-before-item.rs | 0 .../parser/recover-missing-semi-before-item.stderr | 0 .../ui/parser/recover-missing-semi.rs | 0 .../ui/parser/recover-missing-semi.stderr | 0 .../ui/parser/recover-quantified-closure.rs | 0 .../ui/parser/recover-quantified-closure.stderr | 0 {src/test => tests}/ui/parser/recover-range-pats.rs | 0 .../ui/parser/recover-range-pats.stderr | 0 .../test => tests}/ui/parser/recover-ref-dyn-mut.rs | 0 .../ui/parser/recover-ref-dyn-mut.stderr | 0 {src/test => tests}/ui/parser/recover-struct.rs | 0 {src/test => tests}/ui/parser/recover-struct.stderr | 0 {src/test => tests}/ui/parser/recover-tuple-pat.rs | 0 .../ui/parser/recover-tuple-pat.stderr | 0 {src/test => tests}/ui/parser/recover-tuple.rs | 0 {src/test => tests}/ui/parser/recover-tuple.stderr | 0 .../ui/parser/recovered-struct-variant.rs | 0 .../ui/parser/recovered-struct-variant.stderr | 0 .../ui/parser/regions-out-of-scope-slice.rs | 0 .../ui/parser/regions-out-of-scope-slice.stderr | 0 .../ui/parser/removed-syntax-closure-lifetime.rs | 0 .../parser/removed-syntax-closure-lifetime.stderr | 0 .../ui/parser/removed-syntax-enum-newtype.rs | 0 .../ui/parser/removed-syntax-enum-newtype.stderr | 0 .../ui/parser/removed-syntax-field-let-2.rs | 0 .../ui/parser/removed-syntax-field-let-2.stderr | 0 .../ui/parser/removed-syntax-field-let.rs | 0 .../ui/parser/removed-syntax-field-let.stderr | 0 .../ui/parser/removed-syntax-field-semicolon.rs | 0 .../ui/parser/removed-syntax-field-semicolon.stderr | 0 .../ui/parser/removed-syntax-fixed-vec.rs | 0 .../ui/parser/removed-syntax-fixed-vec.stderr | 0 .../ui/parser/removed-syntax-fn-sigil.rs | 0 .../ui/parser/removed-syntax-fn-sigil.stderr | 0 .../test => tests}/ui/parser/removed-syntax-mode.rs | 0 .../ui/parser/removed-syntax-mode.stderr | 0 .../ui/parser/removed-syntax-mut-vec-expr.rs | 0 .../ui/parser/removed-syntax-mut-vec-expr.stderr | 0 .../ui/parser/removed-syntax-mut-vec-ty.rs | 0 .../ui/parser/removed-syntax-mut-vec-ty.stderr | 0 .../ui/parser/removed-syntax-ptr-lifetime.rs | 0 .../ui/parser/removed-syntax-ptr-lifetime.stderr | 0 .../ui/parser/removed-syntax-record.rs | 0 .../ui/parser/removed-syntax-record.stderr | 0 .../ui/parser/removed-syntax-static-fn.rs | 0 .../ui/parser/removed-syntax-static-fn.stderr | 0 .../ui/parser/removed-syntax-uniq-mut-expr.rs | 0 .../ui/parser/removed-syntax-uniq-mut-expr.stderr | 0 .../ui/parser/removed-syntax-uniq-mut-ty.rs | 0 .../ui/parser/removed-syntax-uniq-mut-ty.stderr | 0 .../ui/parser/removed-syntax-with-1.rs | 0 .../ui/parser/removed-syntax-with-1.stderr | 0 .../ui/parser/removed-syntax-with-2.rs | 0 .../ui/parser/removed-syntax-with-2.stderr | 0 .../parser/require-parens-for-chained-comparison.rs | 0 .../require-parens-for-chained-comparison.stderr | 0 .../ui/parser/self-in-function-arg.rs | 0 .../ui/parser/self-in-function-arg.stderr | 0 .../ui/parser/self-param-semantic-fail.rs | 0 .../ui/parser/self-param-semantic-fail.stderr | 0 .../ui/parser/self-param-syntactic-pass.rs | 0 .../ui/parser/semi-after-closure-in-macro.rs | 0 .../several-carriage-returns-in-doc-comment.rs | 0 .../several-carriage-returns-in-doc-comment.stderr | 0 .../ui/parser/shebang/issue-71471-ignore-tidy.rs | 0 .../parser/shebang/issue-71471-ignore-tidy.stderr | 0 .../ui/parser/shebang/multiline-attrib.rs | 0 .../ui/parser/shebang/regular-attrib.rs | 0 .../ui/parser/shebang/shebang-and-attrib.rs | 0 .../ui/parser/shebang/shebang-comment.rs | 0 .../ui/parser/shebang/shebang-doc-comment.rs | 0 .../ui/parser/shebang/shebang-doc-comment.stderr | 0 .../ui/parser/shebang/shebang-empty.rs | 0 .../ui/parser/shebang/shebang-must-start-file.rs | 0 .../parser/shebang/shebang-must-start-file.stderr | 0 .../ui/parser/shebang/shebang-space.rs | 0 .../ui/parser/shebang/sneaky-attrib.rs | 0 .../ui/parser/shebang/valid-shebang.rs | 0 {src/test => tests}/ui/parser/similar-tokens.rs | 0 {src/test => tests}/ui/parser/similar-tokens.stderr | 0 {src/test => tests}/ui/parser/slowparse-bstring.rs | 0 {src/test => tests}/ui/parser/slowparse-string.rs | 0 .../ui/parser/stmt_expr_attrs_placement.rs | 0 .../ui/parser/stmt_expr_attrs_placement.stderr | 0 .../ui/parser/stripped-nested-outline-mod-pass.rs | 0 ...default-values-and-missing-field-separator.fixed | 0 ...ct-default-values-and-missing-field-separator.rs | 0 ...efault-values-and-missing-field-separator.stderr | 0 .../ui/parser/struct-field-numeric-shorthand.rs | 0 .../ui/parser/struct-field-numeric-shorthand.stderr | 0 .../ui/parser/struct-filed-with-attr.fixed | 0 .../ui/parser/struct-filed-with-attr.rs | 0 .../ui/parser/struct-filed-with-attr.stderr | 0 .../ui/parser/struct-literal-in-for.rs | 0 .../ui/parser/struct-literal-in-for.stderr | 0 .../ui/parser/struct-literal-in-if.rs | 0 .../ui/parser/struct-literal-in-if.stderr | 0 .../parser/struct-literal-in-match-discriminant.rs | 0 .../struct-literal-in-match-discriminant.stderr | 0 .../ui/parser/struct-literal-in-match-guard.rs | 0 .../ui/parser/struct-literal-in-while.rs | 0 .../ui/parser/struct-literal-in-while.stderr | 0 .../parser/struct-literal-restrictions-in-lamda.rs | 0 .../struct-literal-restrictions-in-lamda.stderr | 0 .../ui/parser/struct-literal-variant-in-if.rs | 0 .../ui/parser/struct-literal-variant-in-if.stderr | 0 .../ui/parser/suggest-assoc-const.fixed | 0 .../test => tests}/ui/parser/suggest-assoc-const.rs | 0 .../ui/parser/suggest-assoc-const.stderr | 0 .../ui/parser/suggest-const-for-global-var.rs | 0 .../ui/parser/suggest-const-for-global-var.stderr | 0 ...-removing-semicolon-after-impl-trait-items.fixed | 0 ...est-removing-semicolon-after-impl-trait-items.rs | 0 ...removing-semicolon-after-impl-trait-items.stderr | 0 .../ui/parser/suggest-semi-in-array.rs | 0 .../ui/parser/suggest-semi-in-array.stderr | 0 .../ui/parser/suggest-semicolon-before-array.fixed | 0 .../ui/parser/suggest-semicolon-before-array.rs | 0 .../ui/parser/suggest-semicolon-before-array.stderr | 0 .../ui/parser/trailing-carriage-return-in-string.rs | 0 .../trailing-carriage-return-in-string.stderr | 0 .../ui/parser/trailing-plus-in-bounds.rs | 0 .../ui/parser/trailing-question-in-macro-type.rs | 0 .../parser/trailing-question-in-macro-type.stderr | 0 .../ui/parser/trailing-question-in-type.fixed | 0 .../ui/parser/trailing-question-in-type.rs | 0 .../ui/parser/trailing-question-in-type.stderr | 0 .../ui/parser/trait-bounds-not-on-impl.rs | 0 .../ui/parser/trait-bounds-not-on-impl.stderr | 0 .../trait-item-with-defaultness-fail-semantic.rs | 0 ...trait-item-with-defaultness-fail-semantic.stderr | 0 .../ui/parser/trait-item-with-defaultness-pass.rs | 0 .../ui/parser/trait-object-bad-parens.rs | 0 .../ui/parser/trait-object-bad-parens.stderr | 0 .../ui/parser/trait-object-delimiters.rs | 0 .../ui/parser/trait-object-delimiters.stderr | 0 .../ui/parser/trait-object-lifetime-parens.rs | 0 .../ui/parser/trait-object-lifetime-parens.stderr | 0 .../ui/parser/trait-object-polytrait-priority.rs | 0 .../parser/trait-object-polytrait-priority.stderr | 0 .../ui/parser/trait-object-trait-parens.rs | 0 .../ui/parser/trait-object-trait-parens.stderr | 0 .../ui/parser/trait-plusequal-splitting.rs | 0 .../ui/parser/trait-pub-assoc-const.rs | 0 .../ui/parser/trait-pub-assoc-const.stderr | 0 {src/test => tests}/ui/parser/trait-pub-assoc-ty.rs | 0 .../ui/parser/trait-pub-assoc-ty.stderr | 0 {src/test => tests}/ui/parser/trait-pub-method.rs | 0 .../ui/parser/trait-pub-method.stderr | 0 .../ui/parser/type-alias-where-fixable.fixed | 0 .../ui/parser/type-alias-where-fixable.rs | 0 .../ui/parser/type-alias-where-fixable.stderr | 0 {src/test => tests}/ui/parser/type-alias-where.rs | 0 .../ui/parser/type-alias-where.stderr | 0 .../ui/parser/type-parameters-in-field-exprs.rs | 0 .../ui/parser/type-parameters-in-field-exprs.stderr | 0 .../ui/parser/unbalanced-doublequote.rs | 0 .../ui/parser/unbalanced-doublequote.stderr | 0 {src/test => tests}/ui/parser/unclosed-braces.rs | 0 .../test => tests}/ui/parser/unclosed-braces.stderr | 0 .../ui/parser/unclosed-delimiter-in-dep.rs | 0 .../ui/parser/unclosed-delimiter-in-dep.stderr | 0 {src/test => tests}/ui/parser/unclosed_delim_mod.rs | 0 .../ui/parser/unclosed_delim_mod.stderr | 0 .../ui/parser/underscore-suffix-for-float.rs | 0 .../ui/parser/underscore-suffix-for-float.stderr | 0 .../ui/parser/underscore-suffix-for-string.rs | 0 .../ui/parser/underscore-suffix-for-string.stderr | 0 .../ui/parser/underscore_item_not_const.rs | 0 .../ui/parser/underscore_item_not_const.stderr | 0 .../ui/parser/unicode-character-literal.fixed | 0 .../ui/parser/unicode-character-literal.rs | 0 .../ui/parser/unicode-character-literal.stderr | 0 {src/test => tests}/ui/parser/unicode-chars.rs | 0 {src/test => tests}/ui/parser/unicode-chars.stderr | 0 .../ui/parser/unicode-control-codepoints.rs | 0 .../ui/parser/unicode-control-codepoints.stderr | 0 .../test => tests}/ui/parser/unicode-quote-chars.rs | 0 .../ui/parser/unicode-quote-chars.stderr | 0 .../ui/parser/unmatched-delimiter-at-end-of-file.rs | 0 .../unmatched-delimiter-at-end-of-file.stderr | 0 {src/test => tests}/ui/parser/unmatched-langle-1.rs | 0 .../ui/parser/unmatched-langle-1.stderr | 0 {src/test => tests}/ui/parser/unmatched-langle-2.rs | 0 .../ui/parser/unmatched-langle-2.stderr | 0 {src/test => tests}/ui/parser/unnecessary-let.rs | 0 .../test => tests}/ui/parser/unnecessary-let.stderr | 0 .../ui/parser/unsafe-foreign-mod-2.rs | 0 .../ui/parser/unsafe-foreign-mod-2.stderr | 0 {src/test => tests}/ui/parser/unsafe-foreign-mod.rs | 0 .../ui/parser/unsafe-foreign-mod.stderr | 0 {src/test => tests}/ui/parser/unsafe-mod.rs | 0 {src/test => tests}/ui/parser/unsafe-mod.stderr | 0 {src/test => tests}/ui/parser/unsized.rs | 0 {src/test => tests}/ui/parser/unsized.stderr | 0 {src/test => tests}/ui/parser/unsized2.rs | 0 {src/test => tests}/ui/parser/unsized2.stderr | 0 .../ui/parser/use-as-where-use-ends-with-mod-sep.rs | 0 .../use-as-where-use-ends-with-mod-sep.stderr | 0 .../ui/parser/use-colon-as-mod-sep.rs | 0 .../ui/parser/use-colon-as-mod-sep.stderr | 0 .../ui/parser/use-ends-with-mod-sep.rs | 0 .../ui/parser/use-ends-with-mod-sep.stderr | 0 {src/test => tests}/ui/parser/use-unclosed-brace.rs | 0 .../ui/parser/use-unclosed-brace.stderr | 0 .../ui/parser/utf16-be-without-bom.rs | Bin .../ui/parser/utf16-be-without-bom.stderr | Bin .../ui/parser/utf16-le-without-bom.rs | Bin .../ui/parser/utf16-le-without-bom.stderr | Bin {src/test => tests}/ui/parser/utf8_idents-rpass.rs | 0 .../ui/parser/variadic-ffi-nested-syntactic-fail.rs | 0 .../variadic-ffi-nested-syntactic-fail.stderr | 0 .../ui/parser/variadic-ffi-semantic-restrictions.rs | 0 .../variadic-ffi-semantic-restrictions.stderr | 0 .../ui/parser/variadic-ffi-syntactic-pass.rs | 0 {src/test => tests}/ui/parser/virtual-structs.rs | 0 .../test => tests}/ui/parser/virtual-structs.stderr | 0 .../parser/where-clauses-no-bounds-or-predicates.rs | 0 .../where-clauses-no-bounds-or-predicates.stderr | 0 {src/test => tests}/ui/parser/where_with_bound.rs | 0 .../ui/parser/where_with_bound.stderr | 0 .../ui/parser/while-if-let-without-body.rs | 0 .../ui/parser/while-if-let-without-body.stderr | 0 .../ui/parser/wrong-escape-of-curly-braces.rs | 0 .../ui/parser/wrong-escape-of-curly-braces.stderr | 0 {src/test => tests}/ui/partialeq_help.rs | 0 {src/test => tests}/ui/partialeq_help.stderr | 0 {src/test => tests}/ui/path-lookahead.fixed | 0 {src/test => tests}/ui/path-lookahead.rs | 0 {src/test => tests}/ui/path-lookahead.stderr | 0 {src/test => tests}/ui/path.rs | 0 {src/test => tests}/ui/paths-containing-nul.rs | 0 .../declarations-for-tuple-field-count-errors.rs | 0 .../ui/pattern/bindings-after-at/bind-by-copy.rs | 0 ...e-neither-can-live-while-the-other-survives-1.rs | 0 ...ither-can-live-while-the-other-survives-1.stderr | 0 .../bind-by-move-no-subbindings-fun-param.rs | 0 .../bind-by-move-no-subbindings-fun-param.stderr | 0 .../bindings-after-at/borrowck-move-and-move.rs | 0 .../bindings-after-at/borrowck-move-and-move.stderr | 0 .../borrowck-pat-at-and-box-pass.rs | 0 .../bindings-after-at/borrowck-pat-at-and-box.rs | 0 .../borrowck-pat-at-and-box.stderr | 0 .../borrowck-pat-by-copy-bindings-in-at.rs | 0 ...orrowck-pat-by-move-and-ref-inverse-promotion.rs | 0 ...wck-pat-by-move-and-ref-inverse-promotion.stderr | 0 .../borrowck-pat-by-move-and-ref-inverse.rs | 0 .../borrowck-pat-by-move-and-ref-inverse.stderr | 0 .../borrowck-pat-by-move-and-ref.rs | 0 .../borrowck-pat-by-move-and-ref.stderr | 0 .../borrowck-pat-ref-both-sides.rs | 0 .../borrowck-pat-ref-mut-and-ref.rs | 0 .../borrowck-pat-ref-mut-and-ref.stderr | 0 .../bindings-after-at/borrowck-pat-ref-mut-twice.rs | 0 .../borrowck-pat-ref-mut-twice.stderr | 0 .../ui/pattern/bindings-after-at/box-patterns.rs | 0 .../bindings-after-at/copy-and-move-mixed.rs | 0 .../bindings-after-at/copy-and-move-mixed.stderr | 0 .../default-binding-modes-both-sides-independent.rs | 0 ...ault-binding-modes-both-sides-independent.stderr | 0 .../bindings-after-at/nested-binding-mode-lint.rs | 0 .../bindings-after-at/nested-binding-modes-mut.rs | 0 .../nested-binding-modes-mut.stderr | 0 .../bindings-after-at/nested-binding-modes-ref.rs | 0 .../nested-binding-modes-ref.stderr | 0 .../ui/pattern/bindings-after-at/nested-patterns.rs | 0 .../nested-type-ascription-syntactically-invalid.rs | 0 ...ted-type-ascription-syntactically-invalid.stderr | 0 .../bindings-after-at/or-patterns-box-patterns.rs | 0 .../bindings-after-at/or-patterns-slice-patterns.rs | 0 .../ui/pattern/bindings-after-at/or-patterns.rs | 0 .../bindings-after-at/pat-at-same-name-both.rs | 0 .../bindings-after-at/pat-at-same-name-both.stderr | 0 .../ui/pattern/bindings-after-at/slice-patterns.rs | 0 .../wild-before-at-syntactically-rejected.rs | 0 .../wild-before-at-syntactically-rejected.stderr | 0 {src/test => tests}/ui/pattern/for-loop-bad-item.rs | 0 .../ui/pattern/for-loop-bad-item.stderr | 0 .../ui/pattern/ignore-all-the-things.rs | 0 .../ui/pattern/integer-range-binding.rs | 0 {src/test => tests}/ui/pattern/issue-10392.rs | 0 {src/test => tests}/ui/pattern/issue-11577.rs | 0 {src/test => tests}/ui/pattern/issue-12582.rs | 0 {src/test => tests}/ui/pattern/issue-14221.rs | 0 {src/test => tests}/ui/pattern/issue-14221.stderr | 0 {src/test => tests}/ui/pattern/issue-15080.rs | 0 .../ui/pattern/issue-17718-patterns.rs | 0 .../ui/pattern/issue-17718-patterns.stderr | 0 {src/test => tests}/ui/pattern/issue-22546.rs | 0 {src/test => tests}/ui/pattern/issue-27320.rs | 0 {src/test => tests}/ui/pattern/issue-52240.rs | 0 {src/test => tests}/ui/pattern/issue-52240.stderr | 0 {src/test => tests}/ui/pattern/issue-6449.rs | 0 .../issue-66270-pat-struct-parser-recovery.rs | 0 .../issue-66270-pat-struct-parser-recovery.stderr | 0 ...issue-67037-pat-tup-scrut-ty-diff-less-fields.rs | 0 ...e-67037-pat-tup-scrut-ty-diff-less-fields.stderr | 0 ...issue-67776-match-same-name-enum-variant-refs.rs | 0 ...e-67776-match-same-name-enum-variant-refs.stderr | 0 .../pattern/issue-68393-let-pat-assoc-constant.rs | 0 .../issue-68393-let-pat-assoc-constant.stderr | 0 {src/test => tests}/ui/pattern/issue-72565.rs | 0 {src/test => tests}/ui/pattern/issue-72565.stderr | 0 {src/test => tests}/ui/pattern/issue-72574-1.rs | 0 {src/test => tests}/ui/pattern/issue-72574-1.stderr | 0 {src/test => tests}/ui/pattern/issue-72574-2.rs | 0 {src/test => tests}/ui/pattern/issue-72574-2.stderr | 0 {src/test => tests}/ui/pattern/issue-74539.rs | 0 {src/test => tests}/ui/pattern/issue-74539.stderr | 0 {src/test => tests}/ui/pattern/issue-74702.rs | 0 {src/test => tests}/ui/pattern/issue-74702.stderr | 0 {src/test => tests}/ui/pattern/issue-74954.rs | 0 .../issue-80186-mut-binding-help-suggestion.rs | 0 .../issue-80186-mut-binding-help-suggestion.stderr | 0 {src/test => tests}/ui/pattern/issue-8351-1.rs | 0 {src/test => tests}/ui/pattern/issue-8351-2.rs | 0 .../issue-88074-pat-range-type-inference-err.rs | 0 .../issue-88074-pat-range-type-inference-err.stderr | 0 .../pattern/issue-88074-pat-range-type-inference.rs | 0 .../ui/pattern/issue-92074-macro-ice.rs | 0 .../ui/pattern/issue-92074-macro-ice.stderr | 0 {src/test => tests}/ui/pattern/issue-95878.rs | 0 {src/test => tests}/ui/pattern/issue-95878.stderr | 0 .../borrowck-move-ref-pattern-pass.rs | 0 .../move-ref-patterns/borrowck-move-ref-pattern.rs | 0 .../borrowck-move-ref-pattern.stderr | 0 .../by-move-sub-pat-unreachable.rs | 0 .../ui/pattern/move-ref-patterns/issue-53840.rs | 0 .../move-ref-patterns-closure-captures-inside.rs | 0 ...move-ref-patterns-closure-captures-inside.stderr | 0 .../move-ref-patterns-closure-captures-pass.rs | 0 .../move-ref-patterns-closure-captures.rs | 0 .../move-ref-patterns-closure-captures.stderr | 0 ...ref-patterns-default-binding-modes-fixable.fixed | 0 ...ve-ref-patterns-default-binding-modes-fixable.rs | 0 ...ef-patterns-default-binding-modes-fixable.stderr | 0 .../move-ref-patterns-default-binding-modes.rs | 0 .../move-ref-patterns-default-binding-modes.stderr | 0 .../move-ref-patterns-dynamic-semantics.rs | 0 .../ui/pattern/non-constant-in-const-path.rs | 0 .../ui/pattern/non-constant-in-const-path.stderr | 0 .../ui/pattern/non-structural-match-types.rs | 0 .../ui/pattern/non-structural-match-types.stderr | 0 .../ui/pattern/pat-shadow-in-nested-binding.rs | 0 .../ui/pattern/pat-shadow-in-nested-binding.stderr | 0 .../ui/pattern/pat-struct-field-expr-has-type.rs | 0 .../pattern/pat-struct-field-expr-has-type.stderr | 0 .../test => tests}/ui/pattern/pat-tuple-bad-type.rs | 0 .../ui/pattern/pat-tuple-bad-type.stderr | 0 .../ui/pattern/pat-tuple-field-count-cross.rs | 0 .../ui/pattern/pat-tuple-field-count-cross.stderr | 0 .../ui/pattern/pat-tuple-overfield.rs | 0 .../ui/pattern/pat-tuple-overfield.stderr | 0 .../ui/pattern/pat-tuple-underfield.rs | 0 .../ui/pattern/pat-tuple-underfield.stderr | 0 .../ui/pattern/pat-type-err-formal-param.rs | 0 .../ui/pattern/pat-type-err-formal-param.stderr | 0 .../ui/pattern/pat-type-err-let-stmt.rs | 0 .../ui/pattern/pat-type-err-let-stmt.stderr | 0 .../ui/pattern/patkind-litrange-no-expr.rs | 0 .../ui/pattern/patkind-litrange-no-expr.stderr | 0 .../ui/pattern/pattern-binding-disambiguation.rs | 0 .../pattern/pattern-binding-disambiguation.stderr | 0 .../ui/pattern/pattern-error-continue.rs | 0 .../ui/pattern/pattern-error-continue.stderr | 0 .../ui/pattern/pattern-ident-path-generics.rs | 0 .../ui/pattern/pattern-ident-path-generics.stderr | 0 {src/test => tests}/ui/pattern/pattern-tyvar-2.rs | 0 .../ui/pattern/pattern-tyvar-2.stderr | 0 {src/test => tests}/ui/pattern/pattern-tyvar.rs | 0 {src/test => tests}/ui/pattern/pattern-tyvar.stderr | 0 .../ui/pattern/rest-pat-semantic-disallowed.rs | 0 .../ui/pattern/rest-pat-semantic-disallowed.stderr | 0 .../test => tests}/ui/pattern/rest-pat-syntactic.rs | 0 .../ui/pattern/rest-pat-syntactic.stderr | 0 {src/test => tests}/ui/pattern/size-and-align.rs | 0 ...opriate-missing-pattern-excluding-comments.fixed | 0 ...ppropriate-missing-pattern-excluding-comments.rs | 0 ...priate-missing-pattern-excluding-comments.stderr | 0 .../usefulness/always-inhabited-union-ref.rs | 0 .../usefulness/always-inhabited-union-ref.stderr | 0 .../ui/pattern/usefulness/auxiliary/empty.rs | 0 .../ui/pattern/usefulness/auxiliary/hidden.rs | 0 .../ui/pattern/usefulness/auxiliary/unstable.rs | 0 .../usefulness/const-partial_eq-fallback-ice.rs | 0 .../usefulness/const-partial_eq-fallback-ice.stderr | 0 .../ui/pattern/usefulness/const-pat-ice.rs | 0 .../ui/pattern/usefulness/const-private-fields.rs | 0 .../ui/pattern/usefulness/consts-opaque.rs | 0 .../ui/pattern/usefulness/consts-opaque.stderr | 0 .../usefulness/deny-irrefutable-let-patterns.rs | 0 .../usefulness/deny-irrefutable-let-patterns.stderr | 0 .../ui/pattern/usefulness/doc-hidden-fields.rs | 0 .../ui/pattern/usefulness/doc-hidden-fields.stderr | 0 .../pattern/usefulness/doc-hidden-non-exhaustive.rs | 0 .../usefulness/doc-hidden-non-exhaustive.stderr | 0 .../empty-match.exhaustive_patterns.stderr | 0 .../ui/pattern/usefulness/empty-match.normal.stderr | 0 .../ui/pattern/usefulness/empty-match.rs | 0 {src/test => tests}/ui/pattern/usefulness/floats.rs | 0 .../ui/pattern/usefulness/floats.stderr | 0 {src/test => tests}/ui/pattern/usefulness/guards.rs | 0 .../ui/pattern/usefulness/guards.stderr | 0 .../usefulness/integer-ranges/exhaustiveness.rs | 0 .../usefulness/integer-ranges/exhaustiveness.stderr | 0 .../integer-ranges/overlapping_range_endpoints.rs | 0 .../overlapping_range_endpoints.stderr | 0 .../integer-ranges/pointer-sized-int.allow.stderr | 0 .../integer-ranges/pointer-sized-int.deny.stderr | 0 .../usefulness/integer-ranges/pointer-sized-int.rs | 0 .../precise_pointer_matching-message.rs | 0 .../precise_pointer_matching-message.stderr | 0 .../usefulness/integer-ranges/reachability.rs | 0 .../usefulness/integer-ranges/reachability.stderr | 0 .../pattern/usefulness/irrefutable-let-patterns.rs | 0 .../ui/pattern/usefulness/irrefutable-unit.rs | 0 .../ui/pattern/usefulness/issue-12116.rs | 0 .../ui/pattern/usefulness/issue-12116.stderr | 0 .../ui/pattern/usefulness/issue-12369.rs | 0 .../ui/pattern/usefulness/issue-12369.stderr | 0 .../ui/pattern/usefulness/issue-13727.rs | 0 .../ui/pattern/usefulness/issue-13727.stderr | 0 .../ui/pattern/usefulness/issue-15129.rs | 0 .../ui/pattern/usefulness/issue-15129.stderr | 0 .../ui/pattern/usefulness/issue-2111.rs | 0 .../ui/pattern/usefulness/issue-2111.stderr | 0 .../ui/pattern/usefulness/issue-30240-b.rs | 0 .../ui/pattern/usefulness/issue-30240-b.stderr | 0 .../ui/pattern/usefulness/issue-30240-rpass.rs | 0 .../ui/pattern/usefulness/issue-30240.rs | 0 .../ui/pattern/usefulness/issue-30240.stderr | 0 .../ui/pattern/usefulness/issue-3096-1.rs | 0 .../ui/pattern/usefulness/issue-3096-1.stderr | 0 .../ui/pattern/usefulness/issue-3096-2.rs | 0 .../ui/pattern/usefulness/issue-3096-2.stderr | 0 .../ui/pattern/usefulness/issue-31221.rs | 0 .../ui/pattern/usefulness/issue-31221.stderr | 0 .../ui/pattern/usefulness/issue-31561.rs | 0 .../ui/pattern/usefulness/issue-31561.stderr | 0 .../ui/pattern/usefulness/issue-35609.rs | 0 .../ui/pattern/usefulness/issue-35609.stderr | 0 .../ui/pattern/usefulness/issue-3601.rs | 0 .../ui/pattern/usefulness/issue-3601.stderr | 0 .../ui/pattern/usefulness/issue-39362.rs | 0 .../ui/pattern/usefulness/issue-39362.stderr | 0 .../ui/pattern/usefulness/issue-40221.rs | 0 .../ui/pattern/usefulness/issue-40221.stderr | 0 .../ui/pattern/usefulness/issue-4321.rs | 0 .../ui/pattern/usefulness/issue-4321.stderr | 0 .../ui/pattern/usefulness/issue-50900.rs | 0 .../ui/pattern/usefulness/issue-50900.stderr | 0 .../issue-53820-slice-pattern-large-array.rs | 0 .../ui/pattern/usefulness/issue-56379.rs | 0 .../ui/pattern/usefulness/issue-56379.stderr | 0 .../ui/pattern/usefulness/issue-57472.rs | 0 .../ui/pattern/usefulness/issue-57472.stderr | 0 ...sue-65413-constants-and-slices-exhaustiveness.rs | 0 .../ui/pattern/usefulness/issue-66501.rs | 0 .../issue-71930-type-of-match-scrutinee.rs | 0 .../ui/pattern/usefulness/issue-72377.rs | 0 .../ui/pattern/usefulness/issue-72377.stderr | 0 .../issue-72476-and-89393-associated-type.rs | 0 .../issue-78123-non-exhaustive-reference.rs | 0 .../issue-78123-non-exhaustive-reference.stderr | 0 .../usefulness/issue-78549-ref-pat-and-str.rs | 0 .../usefulness/issue-80501-or-pat-and-macro.rs | 0 .../usefulness/issue-82772-match-box-as-struct.rs | 0 .../issue-82772-match-box-as-struct.stderr | 0 .../ui/pattern/usefulness/issue-88747.rs | 0 .../ui/pattern/usefulness/match-arm-statics-2.rs | 0 .../pattern/usefulness/match-arm-statics-2.stderr | 0 .../ui/pattern/usefulness/match-arm-statics.rs | 0 .../ui/pattern/usefulness/match-arm-statics.stderr | 0 .../usefulness/match-byte-array-patterns-2.rs | 0 .../usefulness/match-byte-array-patterns-2.stderr | 0 .../pattern/usefulness/match-byte-array-patterns.rs | 0 .../usefulness/match-byte-array-patterns.stderr | 0 .../ui/pattern/usefulness/match-non-exhaustive.rs | 0 .../pattern/usefulness/match-non-exhaustive.stderr | 0 .../ui/pattern/usefulness/match-privately-empty.rs | 0 .../pattern/usefulness/match-privately-empty.stderr | 0 .../ui/pattern/usefulness/match-ref-ice.rs | 0 .../ui/pattern/usefulness/match-ref-ice.stderr | 0 .../ui/pattern/usefulness/match-slice-patterns.rs | 0 .../pattern/usefulness/match-slice-patterns.stderr | 0 .../ui/pattern/usefulness/match-vec-fixed.rs | 0 .../ui/pattern/usefulness/match-vec-fixed.stderr | 0 .../ui/pattern/usefulness/match-vec-unreachable.rs | 0 .../pattern/usefulness/match-vec-unreachable.stderr | 0 .../pattern/usefulness/nested-exhaustive-match.rs | 0 .../usefulness/non-exhaustive-defined-here.rs | 0 .../usefulness/non-exhaustive-defined-here.stderr | 0 .../usefulness/non-exhaustive-match-nested.rs | 0 .../usefulness/non-exhaustive-match-nested.stderr | 0 .../ui/pattern/usefulness/non-exhaustive-match.rs | 0 .../pattern/usefulness/non-exhaustive-match.stderr | 0 .../usefulness/non-exhaustive-pattern-witness.rs | 0 .../non-exhaustive-pattern-witness.stderr | 0 .../pattern/usefulness/refutable-pattern-errors.rs | 0 .../usefulness/refutable-pattern-errors.stderr | 0 .../usefulness/refutable-pattern-in-fn-arg.rs | 0 .../usefulness/refutable-pattern-in-fn-arg.stderr | 0 .../ui/pattern/usefulness/slice-pattern-const-2.rs | 0 .../pattern/usefulness/slice-pattern-const-2.stderr | 0 .../ui/pattern/usefulness/slice-pattern-const-3.rs | 0 .../pattern/usefulness/slice-pattern-const-3.stderr | 0 .../ui/pattern/usefulness/slice-pattern-const.rs | 0 .../pattern/usefulness/slice-pattern-const.stderr | 0 .../usefulness/slice-patterns-exhaustiveness.rs | 0 .../usefulness/slice-patterns-exhaustiveness.stderr | 0 .../usefulness/slice-patterns-irrefutable.rs | 0 .../usefulness/slice-patterns-reachability.rs | 0 .../usefulness/slice-patterns-reachability.stderr | 0 .../ui/pattern/usefulness/stable-gated-fields.rs | 0 .../pattern/usefulness/stable-gated-fields.stderr | 0 .../ui/pattern/usefulness/stable-gated-patterns.rs | 0 .../pattern/usefulness/stable-gated-patterns.stderr | 0 .../usefulness/struct-like-enum-nonexhaustive.rs | 0 .../struct-like-enum-nonexhaustive.stderr | 0 .../usefulness/struct-pattern-match-useless.rs | 0 .../usefulness/struct-pattern-match-useless.stderr | 0 .../ui/pattern/usefulness/top-level-alternation.rs | 0 .../pattern/usefulness/top-level-alternation.stderr | 0 .../usefulness/tuple-struct-nonexhaustive.rs | 0 .../usefulness/tuple-struct-nonexhaustive.stderr | 0 .../type_polymorphic_byte_str_literals.rs | 0 .../type_polymorphic_byte_str_literals.stderr | 0 .../ui/pattern/usefulness/uninhabited.rs | 0 .../ui/pattern/usefulness/unstable-gated-fields.rs | 0 .../pattern/usefulness/unstable-gated-fields.stderr | 0 .../pattern/usefulness/unstable-gated-patterns.rs | 0 .../usefulness/unstable-gated-patterns.stderr | 0 {src/test => tests}/ui/phantom-auto-trait.rs | 0 {src/test => tests}/ui/phantom-auto-trait.stderr | 0 .../ui/pin-macro/cant_access_internals.rs | 0 .../ui/pin-macro/cant_access_internals.stderr | 0 .../lifetime_errors_on_promotion_misusage.rs | 0 .../lifetime_errors_on_promotion_misusage.stderr | 0 ...oint-to-type-err-cause-on-impl-trait-return-2.rs | 0 ...-to-type-err-cause-on-impl-trait-return-2.stderr | 0 .../ui/polymorphization/closure_in_upvar/fn.rs | 0 .../ui/polymorphization/closure_in_upvar/fnmut.rs | 0 .../ui/polymorphization/closure_in_upvar/fnonce.rs | 0 .../ui/polymorphization/closure_in_upvar/other.rs | 0 .../polymorphization/const_parameters/closures.rs | 0 .../const_parameters/closures.stderr | 0 .../polymorphization/const_parameters/functions.rs | 0 .../const_parameters/functions.stderr | 0 .../ui/polymorphization/drop_shims/simple.rs | 0 .../ui/polymorphization/drop_shims/transitive.rs | 0 .../ui/polymorphization/generators.rs | 0 .../ui/polymorphization/generators.stderr | 0 .../ui/polymorphization/issue-74614.rs | 0 .../ui/polymorphization/issue-74636.rs | 0 .../test => tests}/ui/polymorphization/lifetimes.rs | 0 .../ui/polymorphization/lifetimes.stderr | 0 .../ui/polymorphization/normalized_sig_types.rs | 0 .../ui/polymorphization/predicates.rs | 0 .../ui/polymorphization/predicates.stderr | 0 .../ui/polymorphization/promoted-function-1.rs | 0 .../ui/polymorphization/promoted-function-1.stderr | 0 .../ui/polymorphization/promoted-function-2.rs | 0 .../ui/polymorphization/promoted-function-2.stderr | 0 .../ui/polymorphization/promoted-function-3.rs | 0 .../ui/polymorphization/promoted-function.rs | 0 .../ui/polymorphization/symbol-ambiguity.rs | 0 .../ui/polymorphization/too-many-generic-params.rs | 0 .../ui/polymorphization/type_parameters/closures.rs | 0 .../type_parameters/closures.stderr | 0 .../polymorphization/type_parameters/functions.rs | 0 .../type_parameters/functions.stderr | 0 .../ui/polymorphization/unsized_cast.rs | 0 .../ui/polymorphization/unsized_cast.stderr | 0 {src/test => tests}/ui/pptypedef.rs | 0 {src/test => tests}/ui/pptypedef.stderr | 0 {src/test => tests}/ui/primitive-binop-lhs-mut.rs | 0 {src/test => tests}/ui/print-fuel/print-fuel.rs | 0 {src/test => tests}/ui/print-fuel/print-fuel.stderr | 0 .../test => tests}/ui/print-stdout-eprint-stderr.rs | 0 .../test => tests}/ui/print_type_sizes/anonymous.rs | 0 {src/test => tests}/ui/print_type_sizes/async.rs | 0 .../test => tests}/ui/print_type_sizes/async.stdout | 0 .../test => tests}/ui/print_type_sizes/generator.rs | 0 .../ui/print_type_sizes/generator.stdout | 0 .../print_type_sizes/generator_discr_placement.rs | 0 .../generator_discr_placement.stdout | 0 {src/test => tests}/ui/print_type_sizes/generics.rs | 0 .../ui/print_type_sizes/generics.stdout | 0 .../ui/print_type_sizes/multiple_types.rs | 0 .../ui/print_type_sizes/multiple_types.stdout | 0 .../ui/print_type_sizes/niche-filling.rs | 0 .../ui/print_type_sizes/niche-filling.stdout | 0 .../ui/print_type_sizes/no_duplicates.rs | 0 .../ui/print_type_sizes/no_duplicates.stdout | 0 {src/test => tests}/ui/print_type_sizes/packed.rs | 0 .../ui/print_type_sizes/packed.stdout | 0 {src/test => tests}/ui/print_type_sizes/padding.rs | 0 .../ui/print_type_sizes/padding.stdout | 0 .../ui/print_type_sizes/repr-align.rs | 0 .../ui/print_type_sizes/repr-align.stdout | 0 .../ui/print_type_sizes/repr_int_c.rs | 0 .../ui/print_type_sizes/repr_int_c.stdout | 0 .../ui/print_type_sizes/uninhabited.rs | 0 .../ui/print_type_sizes/uninhabited.stdout | 0 {src/test => tests}/ui/print_type_sizes/variants.rs | 0 .../ui/print_type_sizes/variants.stdout | 0 .../ui/print_type_sizes/zero-sized-fields.rs | 0 .../ui/print_type_sizes/zero-sized-fields.stdout | 0 .../ui/privacy/associated-item-privacy-inherent.rs | 0 .../privacy/associated-item-privacy-inherent.stderr | 0 .../ui/privacy/associated-item-privacy-trait.rs | 0 .../ui/privacy/associated-item-privacy-trait.stderr | 0 .../privacy/associated-item-privacy-type-binding.rs | 0 .../associated-item-privacy-type-binding.stderr | 0 .../ui/privacy/auxiliary/cci_class.rs | 0 .../ui/privacy/auxiliary/cci_class_5.rs | 0 .../test => tests}/ui/privacy/auxiliary/ctor_aux.rs | 0 .../ui/privacy/auxiliary/impl_privacy_xc_2.rs | 0 .../privacy/auxiliary/issue-17718-const-privacy.rs | 0 .../ui/privacy/auxiliary/issue-57264-1.rs | 0 .../ui/privacy/auxiliary/issue-57264-2.rs | 0 .../ui/privacy/auxiliary/issue-75907.rs | 0 .../ui/privacy/auxiliary/issue-92755.rs | 0 .../ui/privacy/auxiliary/priv-impl-prim-ty.rs | 0 .../ui/privacy/auxiliary/privacy_reexport.rs | 0 .../ui/privacy/auxiliary/privacy_tuple_struct.rs | 0 .../ui/privacy/auxiliary/private-inferred-type.rs | 0 .../ui/privacy/auxiliary/pub_use_mods_xcrate.rs | 0 .../ui/privacy/auxiliary/pub_use_xcrate1.rs | 0 .../ui/privacy/auxiliary/pub_use_xcrate2.rs | 0 .../privacy/auxiliary/reachable-unnameable-items.rs | 0 .../ui/privacy/crate-private-reexport.rs | 0 .../ui/privacy/crate-private-reexport.stderr | 0 {src/test => tests}/ui/privacy/ctor.rs | 0 {src/test => tests}/ui/privacy/decl-macro.rs | 0 {src/test => tests}/ui/privacy/decl-macro.stderr | 0 .../ui/privacy/effective_visibilities.rs | 0 .../ui/privacy/effective_visibilities.stderr | 0 .../ui/privacy/effective_visibilities_glob.rs | 0 .../ui/privacy/effective_visibilities_glob.stderr | 0 .../ui/privacy/effective_visibilities_invariants.rs | 0 .../effective_visibilities_invariants.stderr | 0 .../test => tests}/ui/privacy/export-tag-variant.rs | 0 .../ui/privacy/export-tag-variant.stderr | 0 {src/test => tests}/ui/privacy/impl-privacy-xc-2.rs | 0 {src/test => tests}/ui/privacy/issue-13641.rs | 0 {src/test => tests}/ui/privacy/issue-13641.stderr | 0 .../ui/privacy/issue-17718-const-privacy.rs | 0 .../ui/privacy/issue-17718-const-privacy.stderr | 0 {src/test => tests}/ui/privacy/issue-29161.rs | 0 {src/test => tests}/ui/privacy/issue-29161.stderr | 0 {src/test => tests}/ui/privacy/issue-30079.rs | 0 {src/test => tests}/ui/privacy/issue-30079.stderr | 0 .../issue-46209-private-enum-variant-reexport.rs | 0 ...issue-46209-private-enum-variant-reexport.stderr | 0 {src/test => tests}/ui/privacy/issue-57264-1.rs | 0 {src/test => tests}/ui/privacy/issue-57264-2.rs | 0 .../privacy/issue-75062-fieldless-tuple-struct.rs | 0 .../issue-75062-fieldless-tuple-struct.stderr | 0 {src/test => tests}/ui/privacy/issue-75906.rs | 0 {src/test => tests}/ui/privacy/issue-75906.stderr | 0 {src/test => tests}/ui/privacy/issue-75907.rs | 0 {src/test => tests}/ui/privacy/issue-75907.stderr | 0 {src/test => tests}/ui/privacy/issue-75907_b.rs | 0 {src/test => tests}/ui/privacy/issue-75907_b.stderr | 0 {src/test => tests}/ui/privacy/issue-79593.rs | 0 {src/test => tests}/ui/privacy/issue-79593.stderr | 0 {src/test => tests}/ui/privacy/issue-92755.rs | 0 .../ui/privacy/legacy-ctor-visibility.rs | 0 .../ui/privacy/legacy-ctor-visibility.stderr | 0 .../ui/privacy/macro-private-reexport.rs | 0 .../ui/privacy/macro-private-reexport.stderr | 0 {src/test => tests}/ui/privacy/priv-impl-prim-ty.rs | 0 .../ui/privacy/priv-in-bad-locations.rs | 0 .../ui/privacy/priv-in-bad-locations.stderr | 0 {src/test => tests}/ui/privacy/privacy-in-paths.rs | 0 .../ui/privacy/privacy-in-paths.stderr | 0 {src/test => tests}/ui/privacy/privacy-ns.rs | 0 {src/test => tests}/ui/privacy/privacy-ns1.rs | 0 {src/test => tests}/ui/privacy/privacy-ns1.stderr | 0 {src/test => tests}/ui/privacy/privacy-ns2.rs | 0 {src/test => tests}/ui/privacy/privacy-ns2.stderr | 0 {src/test => tests}/ui/privacy/privacy-reexport.rs | 0 {src/test => tests}/ui/privacy/privacy-sanity.rs | 0 .../test => tests}/ui/privacy/privacy-sanity.stderr | 0 {src/test => tests}/ui/privacy/privacy-ufcs.rs | 0 {src/test => tests}/ui/privacy/privacy-ufcs.stderr | 0 {src/test => tests}/ui/privacy/privacy1-rpass.rs | 0 {src/test => tests}/ui/privacy/privacy1.rs | 0 {src/test => tests}/ui/privacy/privacy1.stderr | 0 {src/test => tests}/ui/privacy/privacy2.rs | 0 {src/test => tests}/ui/privacy/privacy2.stderr | 0 {src/test => tests}/ui/privacy/privacy3.rs | 0 {src/test => tests}/ui/privacy/privacy3.stderr | 0 {src/test => tests}/ui/privacy/privacy4.rs | 0 {src/test => tests}/ui/privacy/privacy4.stderr | 0 {src/test => tests}/ui/privacy/privacy5.rs | 0 {src/test => tests}/ui/privacy/privacy5.stderr | 0 .../ui/privacy/private-class-field.rs | 0 .../ui/privacy/private-field-ty-err.rs | 0 .../ui/privacy/private-field-ty-err.stderr | 0 .../ui/privacy/private-impl-method.rs | 0 .../ui/privacy/private-impl-method.stderr | 0 .../ui/privacy/private-in-public-assoc-ty.rs | 0 .../ui/privacy/private-in-public-assoc-ty.stderr | 0 .../ui/privacy/private-in-public-expr-pat.rs | 0 .../ui/privacy/private-in-public-ill-formed.rs | 0 .../ui/privacy/private-in-public-ill-formed.stderr | 0 .../ui/privacy/private-in-public-lint.rs | 0 .../ui/privacy/private-in-public-lint.stderr | 0 .../ui/privacy/private-in-public-non-principal-2.rs | 0 .../private-in-public-non-principal-2.stderr | 0 .../ui/privacy/private-in-public-non-principal.rs | 0 .../privacy/private-in-public-non-principal.stderr | 0 .../private-in-public-type-alias-impl-trait.rs | 0 .../ui/privacy/private-in-public-warn.rs | 0 .../ui/privacy/private-in-public-warn.stderr | 0 {src/test => tests}/ui/privacy/private-in-public.rs | 0 .../ui/privacy/private-in-public.stderr | 0 .../ui/privacy/private-inferred-type-1.rs | 0 .../ui/privacy/private-inferred-type-1.stderr | 0 .../ui/privacy/private-inferred-type-2.rs | 0 .../ui/privacy/private-inferred-type-2.stderr | 0 .../ui/privacy/private-inferred-type-3.rs | 0 .../ui/privacy/private-inferred-type-3.stderr | 0 .../ui/privacy/private-inferred-type.rs | 0 .../ui/privacy/private-inferred-type.stderr | 0 .../ui/privacy/private-item-simple.rs | 0 .../ui/privacy/private-item-simple.stderr | 0 .../ui/privacy/private-method-cross-crate.rs | 0 .../ui/privacy/private-method-cross-crate.stderr | 0 .../ui/privacy/private-method-inherited.rs | 0 .../ui/privacy/private-method-inherited.stderr | 0 .../ui/privacy/private-method-rpass.rs | 0 {src/test => tests}/ui/privacy/private-method.rs | 0 .../test => tests}/ui/privacy/private-method.stderr | 0 .../ui/privacy/private-struct-field-cross-crate.rs | 0 .../privacy/private-struct-field-cross-crate.stderr | 0 .../ui/privacy/private-struct-field-ctor.rs | 0 .../ui/privacy/private-struct-field-ctor.stderr | 0 .../ui/privacy/private-struct-field-pattern.rs | 0 .../ui/privacy/private-struct-field-pattern.stderr | 0 .../ui/privacy/private-struct-field.rs | 0 .../ui/privacy/private-struct-field.stderr | 0 .../ui/privacy/private-type-in-interface.rs | 0 .../ui/privacy/private-type-in-interface.stderr | 0 .../ui/privacy/private-variant-reexport.rs | 0 .../ui/privacy/private-variant-reexport.stderr | 0 .../test => tests}/ui/privacy/pub-extern-privacy.rs | 0 .../ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs | 0 .../ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs | 0 .../ui/privacy/pub-priv-dep/pub-priv1.rs | 0 .../ui/privacy/pub-priv-dep/pub-priv1.stderr | 0 .../ui/privacy/pub-priv-dep/std-pub.rs | 0 {src/test => tests}/ui/privacy/pub-use-xcrate.rs | 0 .../ui/privacy/pub_use_mods_xcrate_exe.rs | 0 .../ui/privacy/reachable-unnameable-items.rs | 0 .../privacy/restricted/auxiliary/pub_restricted.rs | 0 .../ui/privacy/restricted/lookup-ignores-private.rs | 0 .../ui/privacy/restricted/private-in-public.rs | 0 .../ui/privacy/restricted/private-in-public.stderr | 0 .../ui/privacy/restricted/relative-2018.rs | 0 .../ui/privacy/restricted/relative-2018.stderr | 0 .../ui/privacy/restricted/struct-literal-field.rs | 0 .../privacy/restricted/struct-literal-field.stderr | 0 {src/test => tests}/ui/privacy/restricted/test.rs | 0 .../ui/privacy/restricted/test.stderr | 0 .../ui/privacy/union-field-privacy-1.rs | 0 .../ui/privacy/union-field-privacy-1.stderr | 0 .../ui/privacy/union-field-privacy-2.rs | 0 .../ui/privacy/union-field-privacy-2.stderr | 0 {src/test => tests}/ui/privacy/useless-pub.rs | 0 {src/test => tests}/ui/privacy/useless-pub.stderr | 0 {src/test => tests}/ui/privacy/where-priv-type.rs | 0 .../ui/privacy/where-priv-type.stderr | 0 .../ui/privacy/where-pub-type-impls-priv-trait.rs | 0 .../privacy/where-pub-type-impls-priv-trait.stderr | 0 {src/test => tests}/ui/proc-macro/add-impl.rs | 0 .../ui/proc-macro/allowed-attr-stmt-expr.rs | 0 .../ui/proc-macro/allowed-attr-stmt-expr.stdout | 0 .../ui/proc-macro/ambiguous-builtin-attrs-test.rs | 0 .../proc-macro/ambiguous-builtin-attrs-test.stderr | 0 .../ui/proc-macro/ambiguous-builtin-attrs.rs | 0 .../ui/proc-macro/ambiguous-builtin-attrs.stderr | 0 .../ui/proc-macro/amputate-span.fixed | 0 {src/test => tests}/ui/proc-macro/amputate-span.rs | 0 .../ui/proc-macro/amputate-span.stderr | 0 {src/test => tests}/ui/proc-macro/append-impl.rs | 0 {src/test => tests}/ui/proc-macro/attr-args.rs | 0 {src/test => tests}/ui/proc-macro/attr-cfg.rs | 0 .../test => tests}/ui/proc-macro/attr-complex-fn.rs | 0 .../ui/proc-macro/attr-complex-fn.stdout | 0 .../ui/proc-macro/attr-invalid-exprs.rs | 0 .../ui/proc-macro/attr-invalid-exprs.stderr | 0 {src/test => tests}/ui/proc-macro/attr-on-trait.rs | 0 .../ui/proc-macro/attr-stmt-expr-rpass.rs | 0 {src/test => tests}/ui/proc-macro/attr-stmt-expr.rs | 0 .../ui/proc-macro/attr-stmt-expr.stderr | 0 .../ui/proc-macro/attr-stmt-expr.stdout | 0 .../ui/proc-macro/attribute-after-derive.rs | 0 .../ui/proc-macro/attribute-after-derive.stdout | 0 .../ui/proc-macro/attribute-spans-preserved.rs | 0 .../ui/proc-macro/attribute-spans-preserved.stderr | 0 .../ui/proc-macro/attribute-spans-preserved.stdout | 0 .../ui/proc-macro/attribute-with-error.rs | 0 .../ui/proc-macro/attribute-with-error.stderr | 0 {src/test => tests}/ui/proc-macro/attribute.rs | 0 {src/test => tests}/ui/proc-macro/attribute.stderr | 0 .../ui/proc-macro/attributes-included.rs | 0 .../ui/proc-macro/attributes-included.stderr | 0 .../ui/proc-macro/attributes-on-definitions.rs | 0 .../ui/proc-macro/attributes-on-definitions.stderr | 0 .../ui/proc-macro/attributes-on-modules-fail.rs | 0 .../ui/proc-macro/attributes-on-modules-fail.stderr | 0 .../ui/proc-macro/attributes-on-modules.rs | 0 .../ui/proc-macro/auxiliary/add-impl.rs | 0 .../ui/proc-macro/auxiliary/amputate-span.rs | 0 .../ui/proc-macro/auxiliary/api/cmp.rs | 0 .../ui/proc-macro/auxiliary/api/mod.rs | 0 .../ui/proc-macro/auxiliary/api/parse.rs | 0 .../ui/proc-macro/auxiliary/append-impl.rs | 0 .../ui/proc-macro/auxiliary/assert-span-pos.rs | 0 .../ui/proc-macro/auxiliary/attr-args.rs | 0 .../ui/proc-macro/auxiliary/attr-cfg.rs | 0 .../ui/proc-macro/auxiliary/attr-on-trait.rs | 0 .../ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs | 0 .../ui/proc-macro/auxiliary/attr-stmt-expr.rs | 0 .../auxiliary/attribute-spans-preserved.rs | 0 .../ui/proc-macro/auxiliary/attributes-included.rs | 0 .../auxiliary/attributes-on-definitions.rs | 0 .../ui/proc-macro/auxiliary/bang-macro.rs | 0 .../ui/proc-macro/auxiliary/bang_proc_macro2.rs | 0 .../ui/proc-macro/auxiliary/builtin-attrs.rs | 0 .../ui/proc-macro/auxiliary/call-deprecated.rs | 0 .../ui/proc-macro/auxiliary/call-site.rs | 0 .../ui/proc-macro/auxiliary/cond_plugin.rs | 0 .../ui/proc-macro/auxiliary/count_compound_ops.rs | 0 .../auxiliary/custom-attr-only-one-derive.rs | 0 .../ui/proc-macro/auxiliary/custom-quote.rs | 0 .../ui/proc-macro/auxiliary/derive-a.rs | 0 .../ui/proc-macro/auxiliary/derive-atob.rs | 0 .../ui/proc-macro/auxiliary/derive-attr-cfg.rs | 0 .../ui/proc-macro/auxiliary/derive-b-rpass.rs | 0 .../ui/proc-macro/auxiliary/derive-b.rs | 0 .../ui/proc-macro/auxiliary/derive-bad.rs | 0 .../ui/proc-macro/auxiliary/derive-clona.rs | 0 .../ui/proc-macro/auxiliary/derive-ctod.rs | 0 .../ui/proc-macro/auxiliary/derive-foo.rs | 0 .../auxiliary/derive-helper-shadowed-2.rs | 0 .../auxiliary/derive-helper-shadowing-2.rs | 0 .../proc-macro/auxiliary/derive-helper-shadowing.rs | 0 .../ui/proc-macro/auxiliary/derive-nothing.rs | 0 .../ui/proc-macro/auxiliary/derive-same-struct.rs | 0 .../ui/proc-macro/auxiliary/derive-two-attrs.rs | 0 .../ui/proc-macro/auxiliary/derive-union.rs | 0 .../ui/proc-macro/auxiliary/derive-unstable-2.rs | 0 .../ui/proc-macro/auxiliary/derive-unstable.rs | 0 .../proc-macro/auxiliary/dollar-crate-external.rs | 0 .../ui/proc-macro/auxiliary/double.rs | 0 .../ui/proc-macro/auxiliary/duplicate.rs | 0 .../ui/proc-macro/auxiliary/edition-imports-2015.rs | 0 .../ui/proc-macro/auxiliary/empty-crate.rs | 0 .../ui/proc-macro/auxiliary/expand-expr.rs | 0 .../ui/proc-macro/auxiliary/expand-with-a-macro.rs | 0 .../ui/proc-macro/auxiliary/external-crate-var.rs | 0 .../ui/proc-macro/auxiliary/first-second.rs | 0 .../ui/proc-macro/auxiliary/gen-lifetime-token.rs | 0 .../proc-macro/auxiliary/gen-macro-rules-hygiene.rs | 0 .../ui/proc-macro/auxiliary/gen-macro-rules.rs | 0 .../proc-macro/auxiliary/generate-dollar-ident.rs | 0 .../ui/proc-macro/auxiliary/generate-mod.rs | 0 .../ui/proc-macro/auxiliary/hygiene_example.rs | 0 .../proc-macro/auxiliary/hygiene_example_codegen.rs | 0 .../ui/proc-macro/auxiliary/included-file.txt | 0 .../ui/proc-macro/auxiliary/invalid-punct-ident.rs | 0 .../ui/proc-macro/auxiliary/is-available.rs | 0 .../ui/proc-macro/auxiliary/issue-104884.rs | 0 .../ui/proc-macro/auxiliary/issue-38586.rs | 0 .../ui/proc-macro/auxiliary/issue-39889.rs | 0 .../ui/proc-macro/auxiliary/issue-42708.rs | 0 .../ui/proc-macro/auxiliary/issue-50061.rs | 0 .../ui/proc-macro/auxiliary/issue-50493.rs | 0 .../ui/proc-macro/auxiliary/issue-59191.rs | 0 .../ui/proc-macro/auxiliary/issue-66286.rs | 0 .../ui/proc-macro/auxiliary/issue-75801.rs | 0 .../ui/proc-macro/auxiliary/issue-79242.rs | 0 .../ui/proc-macro/auxiliary/issue-79825.rs | 0 .../ui/proc-macro/auxiliary/issue-83510.rs | 0 .../ui/proc-macro/auxiliary/issue-91800-macro.rs | 0 .../ui/proc-macro/auxiliary/lifetimes-rpass.rs | 0 .../ui/proc-macro/auxiliary/lifetimes.rs | 0 .../ui/proc-macro/auxiliary/macro-only-syntax.rs | 0 .../ui/proc-macro/auxiliary/make-macro.rs | 0 .../ui/proc-macro/auxiliary/meta-delim.rs | 0 .../ui/proc-macro/auxiliary/meta-macro.rs | 0 .../ui/proc-macro/auxiliary/mixed-site-span.rs | 0 .../ui/proc-macro/auxiliary/modify-ast.rs | 0 .../ui/proc-macro/auxiliary/multiple-derives.rs | 0 .../ui/proc-macro/auxiliary/multispan.rs | 0 .../ui/proc-macro/auxiliary/negative-token.rs | 0 .../ui/proc-macro/auxiliary/nested-macro-rules.rs | 0 .../auxiliary/nonterminal-recollect-attr.rs | 0 .../ui/proc-macro/auxiliary/not-joint.rs | 0 .../ui/proc-macro/auxiliary/parent-source-spans.rs | 0 .../ui/proc-macro/auxiliary/proc-macro-panic.rs | 0 .../ui/proc-macro/auxiliary/raw-ident.rs | 0 .../ui/proc-macro/auxiliary/re-export.rs | 0 .../ui/proc-macro/auxiliary/recollect.rs | 0 .../ui/proc-macro/auxiliary/resolved-located-at.rs | 0 .../ui/proc-macro/auxiliary/span-api-tests.rs | 0 .../ui/proc-macro/auxiliary/span-from-proc-macro.rs | 0 .../ui/proc-macro/auxiliary/span-test-macros.rs | 0 .../ui/proc-macro/auxiliary/subspan.rs | 0 .../ui/proc-macro/auxiliary/test-macros.rs | 0 .../ui/proc-macro/auxiliary/three-equals.rs | 0 .../ui/proc-macro/auxiliary/weird-hygiene.rs | 0 {src/test => tests}/ui/proc-macro/bang-macro.rs | 0 .../ui/proc-macro/break-token-spans.rs | 0 .../ui/proc-macro/break-token-spans.stderr | 0 .../test => tests}/ui/proc-macro/call-deprecated.rs | 0 .../ui/proc-macro/call-deprecated.stderr | 0 {src/test => tests}/ui/proc-macro/call-site.rs | 0 .../ui/proc-macro/capture-macro-rules-invoke.rs | 0 .../ui/proc-macro/capture-macro-rules-invoke.stdout | 0 .../ui/proc-macro/capture-unglued-token.rs | 0 .../ui/proc-macro/capture-unglued-token.stdout | 0 {src/test => tests}/ui/proc-macro/cfg-eval-fail.rs | 0 .../ui/proc-macro/cfg-eval-fail.stderr | 0 {src/test => tests}/ui/proc-macro/cfg-eval-inner.rs | 0 .../ui/proc-macro/cfg-eval-inner.stdout | 0 {src/test => tests}/ui/proc-macro/cfg-eval.rs | 0 {src/test => tests}/ui/proc-macro/cfg-eval.stdout | 0 .../ui/proc-macro/count_compound_ops.rs | 0 .../ui/proc-macro/crate-attrs-multiple.rs | 0 {src/test => tests}/ui/proc-macro/crate-var.rs | 0 {src/test => tests}/ui/proc-macro/crt-static.rs | 0 .../ui/proc-macro/custom-attr-only-one-derive.rs | 0 .../proc-macro/debug/auxiliary/macro-dump-debug.rs | 0 .../ui/proc-macro/debug/dump-debug-span-debug.rs | 0 .../proc-macro/debug/dump-debug-span-debug.stderr | 0 .../ui/proc-macro/debug/dump-debug.rs | 0 .../ui/proc-macro/debug/dump-debug.stderr | 0 {src/test => tests}/ui/proc-macro/define-two.rs | 0 {src/test => tests}/ui/proc-macro/define-two.stderr | 0 .../test => tests}/ui/proc-macro/derive-attr-cfg.rs | 0 {src/test => tests}/ui/proc-macro/derive-b.rs | 0 {src/test => tests}/ui/proc-macro/derive-bad.rs | 0 {src/test => tests}/ui/proc-macro/derive-bad.stderr | 0 .../ui/proc-macro/derive-expand-order.rs | 0 .../ui/proc-macro/derive-expand-order.stdout | 0 .../ui/proc-macro/derive-helper-configured.rs | 0 .../ui/proc-macro/derive-helper-legacy-limits.rs | 0 .../proc-macro/derive-helper-legacy-limits.stderr | 0 .../ui/proc-macro/derive-helper-legacy-spurious.rs | 0 .../proc-macro/derive-helper-legacy-spurious.stderr | 0 .../ui/proc-macro/derive-helper-shadowed.rs | 0 .../ui/proc-macro/derive-helper-shadowing-2.rs | 0 .../ui/proc-macro/derive-helper-shadowing.rs | 0 .../ui/proc-macro/derive-helper-shadowing.stderr | 0 .../ui/proc-macro/derive-helper-vs-legacy.rs | 0 {src/test => tests}/ui/proc-macro/derive-in-mod.rs | 0 .../ui/proc-macro/derive-multiple-with-packed.rs | 0 .../ui/proc-macro/derive-same-struct.rs | 0 .../ui/proc-macro/derive-same-struct.stdout | 0 .../ui/proc-macro/derive-still-gated.rs | 0 .../ui/proc-macro/derive-still-gated.stderr | 0 {src/test => tests}/ui/proc-macro/derive-test.rs | 0 .../ui/proc-macro/derive-two-attrs.rs | 0 {src/test => tests}/ui/proc-macro/derive-union.rs | 0 .../ui/proc-macro/disappearing-resolution.rs | 0 .../ui/proc-macro/disappearing-resolution.stderr | 0 .../ui/proc-macro/doc-comment-preserved.rs | 0 .../ui/proc-macro/doc-comment-preserved.stdout | 0 .../ui/proc-macro/dollar-crate-issue-101211.rs | 0 .../ui/proc-macro/dollar-crate-issue-57089.rs | 0 .../ui/proc-macro/dollar-crate-issue-57089.stdout | 0 .../ui/proc-macro/dollar-crate-issue-62325.rs | 0 .../ui/proc-macro/dollar-crate-issue-62325.stdout | 0 {src/test => tests}/ui/proc-macro/dollar-crate.rs | 0 .../ui/proc-macro/dollar-crate.stdout | 0 .../ui/proc-macro/edition-imports-2018.rs | 0 {src/test => tests}/ui/proc-macro/empty-crate.rs | 0 .../ui/proc-macro/empty-where-clause.rs | 0 .../ui/proc-macro/empty-where-clause.stderr | 0 {src/test => tests}/ui/proc-macro/expand-expr.rs | 0 .../test => tests}/ui/proc-macro/expand-expr.stderr | 0 .../ui/proc-macro/expand-to-derive.rs | 0 .../ui/proc-macro/expand-to-derive.stdout | 0 .../ui/proc-macro/expand-to-unstable.rs | 0 .../ui/proc-macro/expand-to-unstable.stderr | 0 .../ui/proc-macro/expand-with-a-macro.rs | 0 {src/test => tests}/ui/proc-macro/export-macro.rs | 0 .../ui/proc-macro/export-macro.stderr | 0 {src/test => tests}/ui/proc-macro/exports.rs | 0 {src/test => tests}/ui/proc-macro/exports.stderr | 0 .../ui/proc-macro/expr-stmt-nonterminal-tokens.rs | 0 .../proc-macro/expr-stmt-nonterminal-tokens.stdout | 0 .../extern-prelude-extern-crate-proc-macro.rs | 0 .../ui/proc-macro/gen-lifetime-token.rs | 0 .../ui/proc-macro/gen-macro-rules-hygiene.rs | 0 .../ui/proc-macro/gen-macro-rules-hygiene.stderr | 0 .../test => tests}/ui/proc-macro/gen-macro-rules.rs | 0 .../ui/proc-macro/generate-dollar-ident.rs | 0 {src/test => tests}/ui/proc-macro/generate-mod.rs | 0 .../ui/proc-macro/generate-mod.stderr | 0 .../helper-attr-blocked-by-import-ambig.rs | 0 .../helper-attr-blocked-by-import-ambig.stderr | 0 .../ui/proc-macro/helper-attr-blocked-by-import.rs | 0 .../test => tests}/ui/proc-macro/hygiene_example.rs | 0 .../ui/proc-macro/illegal-proc-macro-derive-use.rs | 0 .../proc-macro/illegal-proc-macro-derive-use.stderr | 0 {src/test => tests}/ui/proc-macro/import.rs | 0 {src/test => tests}/ui/proc-macro/import.stderr | 0 .../ui/proc-macro/inert-attribute-order.rs | 0 .../ui/proc-macro/inert-attribute-order.stdout | 0 .../ui/proc-macro/inner-attr-non-inline-mod.rs | 0 .../ui/proc-macro/inner-attr-non-inline-mod.stderr | 0 .../ui/proc-macro/inner-attr-non-inline-mod.stdout | 0 {src/test => tests}/ui/proc-macro/inner-attrs.rs | 0 .../test => tests}/ui/proc-macro/inner-attrs.stderr | 0 .../test => tests}/ui/proc-macro/inner-attrs.stdout | 0 .../ui/proc-macro/input-interpolated.rs | 0 .../ui/proc-macro/input-interpolated.stdout | 0 .../ui/proc-macro/invalid-attributes.rs | 0 .../ui/proc-macro/invalid-attributes.stderr | 0 .../ui/proc-macro/invalid-punct-ident-1.rs | 0 .../ui/proc-macro/invalid-punct-ident-1.stderr | 0 .../ui/proc-macro/invalid-punct-ident-2.rs | 0 .../ui/proc-macro/invalid-punct-ident-2.stderr | 0 .../ui/proc-macro/invalid-punct-ident-3.rs | 0 .../ui/proc-macro/invalid-punct-ident-3.stderr | 0 .../ui/proc-macro/invalid-punct-ident-4.rs | 0 .../ui/proc-macro/invalid-punct-ident-4.stderr | 0 {src/test => tests}/ui/proc-macro/is-available.rs | 0 .../proc-macro/issue-104884-trait-impl-sugg-err.rs | 0 .../issue-104884-trait-impl-sugg-err.stderr | 0 {src/test => tests}/ui/proc-macro/issue-36935.rs | 0 .../test => tests}/ui/proc-macro/issue-36935.stderr | 0 {src/test => tests}/ui/proc-macro/issue-37788.rs | 0 .../test => tests}/ui/proc-macro/issue-37788.stderr | 0 {src/test => tests}/ui/proc-macro/issue-38586.rs | 0 .../test => tests}/ui/proc-macro/issue-38586.stderr | 0 {src/test => tests}/ui/proc-macro/issue-39889.rs | 0 {src/test => tests}/ui/proc-macro/issue-42708.rs | 0 {src/test => tests}/ui/proc-macro/issue-50061.rs | 0 {src/test => tests}/ui/proc-macro/issue-50493.rs | 0 .../test => tests}/ui/proc-macro/issue-50493.stderr | 0 {src/test => tests}/ui/proc-macro/issue-53481.rs | 0 .../proc-macro/issue-59191-replace-root-with-fn.rs | 0 .../issue-59191-replace-root-with-fn.stderr | 0 {src/test => tests}/ui/proc-macro/issue-66286.rs | 0 .../test => tests}/ui/proc-macro/issue-66286.stderr | 0 .../proc-macro/issue-73933-procedural-masquerade.rs | 0 .../issue-73933-procedural-masquerade.stdout | 0 .../ui/proc-macro/issue-75734-pp-paren.rs | 0 .../ui/proc-macro/issue-75734-pp-paren.stdout | 0 {src/test => tests}/ui/proc-macro/issue-75801.rs | 0 .../test => tests}/ui/proc-macro/issue-75801.stderr | 0 .../ui/proc-macro/issue-75930-derive-cfg.rs | 0 .../ui/proc-macro/issue-75930-derive-cfg.stderr | 0 .../ui/proc-macro/issue-75930-derive-cfg.stdout | 0 .../ui/proc-macro/issue-76182-leading-vert-pat.rs | 0 .../proc-macro/issue-76182-leading-vert-pat.stdout | 0 .../issue-76270-panic-in-libproc-macro.rs | 0 .../issue-76270-panic-in-libproc-macro.stderr | 0 .../proc-macro/issue-78675-captured-inner-attrs.rs | 0 .../issue-78675-captured-inner-attrs.stdout | 0 {src/test => tests}/ui/proc-macro/issue-79148.rs | 0 .../test => tests}/ui/proc-macro/issue-79148.stderr | 0 .../proc-macro/issue-79242-slow-retokenize-check.rs | 0 {src/test => tests}/ui/proc-macro/issue-79825.rs | 0 .../ui/proc-macro/issue-80760-empty-stmt.rs | 0 .../ui/proc-macro/issue-80760-empty-stmt.stdout | 0 .../ui/proc-macro/issue-81007-item-attrs.rs | 0 .../ui/proc-macro/issue-81007-item-attrs.stdout | 0 .../ui/proc-macro/issue-81543-item-parse-err.rs | 0 .../ui/proc-macro/issue-81543-item-parse-err.stderr | 0 {src/test => tests}/ui/proc-macro/issue-81555.rs | 0 .../issue-83469-global-alloc-invalid-stmt.rs | 0 .../issue-83469-global-alloc-invalid-stmt.stderr | 0 {src/test => tests}/ui/proc-macro/issue-83510.rs | 0 .../test => tests}/ui/proc-macro/issue-83510.stderr | 0 .../ui/proc-macro/issue-86781-bad-inner-doc.fixed | 0 .../ui/proc-macro/issue-86781-bad-inner-doc.rs | 0 .../ui/proc-macro/issue-86781-bad-inner-doc.stderr | 0 {src/test => tests}/ui/proc-macro/issue-91800.rs | 0 .../test => tests}/ui/proc-macro/issue-91800.stderr | 0 {src/test => tests}/ui/proc-macro/item-error.rs | 0 {src/test => tests}/ui/proc-macro/item-error.stderr | 0 .../ui/proc-macro/keep-expr-tokens.rs | 0 .../ui/proc-macro/keep-expr-tokens.stderr | 0 .../ui/proc-macro/keep-expr-tokens.stdout | 0 .../test => tests}/ui/proc-macro/lifetimes-rpass.rs | 0 {src/test => tests}/ui/proc-macro/lifetimes.rs | 0 {src/test => tests}/ui/proc-macro/lifetimes.stderr | 0 .../ui/proc-macro/lints_in_proc_macros.rs | 0 .../ui/proc-macro/lints_in_proc_macros.stderr | 0 .../ui/proc-macro/load-panic-backtrace.rs | 0 .../ui/proc-macro/load-panic-backtrace.stderr | 0 {src/test => tests}/ui/proc-macro/load-panic.rs | 0 {src/test => tests}/ui/proc-macro/load-panic.stderr | 0 {src/test => tests}/ui/proc-macro/load-two.rs | 0 {src/test => tests}/ui/proc-macro/macro-brackets.rs | 0 .../ui/proc-macro/macro-brackets.stderr | 0 .../ui/proc-macro/macro-crate-multi-decorator.rs | 0 .../ui/proc-macro/macro-namespace-reserved-2.rs | 0 .../ui/proc-macro/macro-namespace-reserved-2.stderr | 0 .../ui/proc-macro/macro-namespace-reserved.rs | 0 .../ui/proc-macro/macro-namespace-reserved.stderr | 0 .../ui/proc-macro/macro-quote-cond.rs | 0 .../ui/proc-macro/macro-rules-derive-cfg.rs | 0 .../ui/proc-macro/macro-rules-derive-cfg.stdout | 0 .../ui/proc-macro/macro-rules-derive.rs | 0 .../ui/proc-macro/macro-rules-derive.stderr | 0 {src/test => tests}/ui/proc-macro/macro-use-attr.rs | 0 {src/test => tests}/ui/proc-macro/macro-use-bang.rs | 0 .../ui/proc-macro/macros-in-extern-derive.rs | 0 .../ui/proc-macro/macros-in-extern-derive.stderr | 0 .../ui/proc-macro/macros-in-extern.rs | 0 {src/test => tests}/ui/proc-macro/macros-in-type.rs | 0 {src/test => tests}/ui/proc-macro/meta-delim.rs | 0 .../ui/proc-macro/meta-macro-hygiene.rs | 0 .../ui/proc-macro/meta-macro-hygiene.stdout | 0 {src/test => tests}/ui/proc-macro/meta-macro.rs | 0 {src/test => tests}/ui/proc-macro/meta-macro.stdout | 0 .../test => tests}/ui/proc-macro/mixed-site-span.rs | 0 .../ui/proc-macro/mixed-site-span.stderr | 0 {src/test => tests}/ui/proc-macro/modify-ast.rs | 0 {src/test => tests}/ui/proc-macro/module.rs | 0 .../ui/proc-macro/module_with_attrs.rs | 0 {src/test => tests}/ui/proc-macro/multispan.rs | 0 {src/test => tests}/ui/proc-macro/multispan.stderr | 0 {src/test => tests}/ui/proc-macro/negative-token.rs | 0 .../ui/proc-macro/nested-derive-cfg.rs | 0 .../ui/proc-macro/nested-derive-cfg.stdout | 0 .../ui/proc-macro/nested-item-spans.rs | 0 .../ui/proc-macro/nested-item-spans.stderr | 0 .../ui/proc-macro/nested-macro-rules.rs | 0 .../ui/proc-macro/nested-macro-rules.stdout | 0 .../ui/proc-macro/nested-nonterminal-tokens.rs | 0 .../ui/proc-macro/nested-nonterminal-tokens.stdout | 0 .../ui/proc-macro/no-macro-use-attr.rs | 0 .../ui/proc-macro/no-macro-use-attr.stderr | 0 .../test => tests}/ui/proc-macro/no-missing-docs.rs | 0 {src/test => tests}/ui/proc-macro/nodelim-groups.rs | 0 .../ui/proc-macro/nodelim-groups.stdout | 0 {src/test => tests}/ui/proc-macro/non-root.rs | 0 {src/test => tests}/ui/proc-macro/non-root.stderr | 0 .../ui/proc-macro/nonterminal-expansion.rs | 0 .../ui/proc-macro/nonterminal-expansion.stdout | 0 .../ui/proc-macro/nonterminal-recollect-attr.rs | 0 .../ui/proc-macro/nonterminal-recollect-attr.stdout | 0 .../ui/proc-macro/nonterminal-token-hygiene.rs | 0 .../ui/proc-macro/nonterminal-token-hygiene.stdout | 0 {src/test => tests}/ui/proc-macro/not-joint.rs | 0 .../test => tests}/ui/proc-macro/out-of-line-mod.rs | 0 {src/test => tests}/ui/proc-macro/outer/inner.rs | 0 .../ui/proc-macro/parent-source-spans.rs | 0 .../ui/proc-macro/parent-source-spans.stderr | 0 .../ui/proc-macro/pretty-print-hack-hide.rs | 0 .../ui/proc-macro/pretty-print-hack-hide.stdout | 0 .../ui/proc-macro/pretty-print-hack-show.rs | 0 .../ui/proc-macro/pretty-print-hack-show.stderr | 0 .../ui/proc-macro/pretty-print-hack-show.stdout | 0 .../allsorts-rental-0.5.6/src/lib.rs | 0 .../pretty-print-hack/rental-0.5.5/src/lib.rs | 0 .../pretty-print-hack/rental-0.5.6/src/lib.rs | 0 .../ui/proc-macro/pretty-print-tts.rs | 0 .../ui/proc-macro/pretty-print-tts.stdout | 0 .../ui/proc-macro/proc-macro-attributes.rs | 0 .../ui/proc-macro/proc-macro-attributes.stderr | 0 .../ui/proc-macro/proc-macro-deprecated-attr.rs | 0 .../ui/proc-macro/proc-macro-gates.rs | 0 .../ui/proc-macro/proc-macro-gates.stderr | 0 .../ui/proc-macro/proc-macro-gates2.rs | 0 .../ui/proc-macro/proc-macro-gates2.stderr | 0 .../ui/proc-macro/pub-at-crate-root.rs | 0 .../ui/proc-macro/pub-at-crate-root.stderr | 0 {src/test => tests}/ui/proc-macro/quote-debug.rs | 0 .../test => tests}/ui/proc-macro/quote-debug.stdout | 0 {src/test => tests}/ui/proc-macro/raw-ident.rs | 0 {src/test => tests}/ui/proc-macro/raw-ident.stderr | 0 .../ui/proc-macro/reserved-macro-names.rs | 0 .../ui/proc-macro/reserved-macro-names.stderr | 0 {src/test => tests}/ui/proc-macro/resolve-error.rs | 0 .../ui/proc-macro/resolve-error.stderr | 0 .../ui/proc-macro/resolved-located-at.rs | 0 .../ui/proc-macro/resolved-located-at.stderr | 0 {src/test => tests}/ui/proc-macro/shadow.rs | 0 {src/test => tests}/ui/proc-macro/shadow.stderr | 0 {src/test => tests}/ui/proc-macro/signature.rs | 0 {src/test => tests}/ui/proc-macro/signature.stderr | 0 {src/test => tests}/ui/proc-macro/smoke.rs | 0 .../ui/proc-macro/span-absolute-posititions.rs | 0 .../ui/proc-macro/span-absolute-posititions.stderr | 0 {src/test => tests}/ui/proc-macro/span-api-tests.rs | 0 .../ui/proc-macro/span-from-proc-macro.rs | 0 .../ui/proc-macro/span-from-proc-macro.stderr | 0 .../ui/proc-macro/span-preservation.rs | 0 .../ui/proc-macro/span-preservation.stderr | 0 .../ui/proc-macro/struct-field-macro.rs | 0 {src/test => tests}/ui/proc-macro/subspan.rs | 0 {src/test => tests}/ui/proc-macro/subspan.stderr | 0 {src/test => tests}/ui/proc-macro/test.rs | 0 {src/test => tests}/ui/proc-macro/three-equals.rs | 0 .../ui/proc-macro/three-equals.stderr | 0 {src/test => tests}/ui/proc-macro/trailing-plus.rs | 0 .../ui/proc-macro/trailing-plus.stdout | 0 .../ui/proc-macro/trait-fn-args-2015.rs | 0 .../ui/proc-macro/two-crate-types-1.rs | 0 .../ui/proc-macro/two-crate-types-1.stderr | 0 .../ui/proc-macro/two-crate-types-2.rs | 0 .../ui/proc-macro/two-crate-types-2.stderr | 0 .../ui/proc-macro/unsafe-foreign-mod.rs | 0 {src/test => tests}/ui/proc-macro/unsafe-mod.rs | 0 .../test => tests}/ui/proc-macro/visibility-path.rs | 0 .../ui/proc-macro/visibility-path.stderr | 0 {src/test => tests}/ui/proc-macro/weird-braces.rs | 0 .../ui/proc-macro/weird-braces.stdout | 0 {src/test => tests}/ui/proc-macro/weird-hygiene.rs | 0 .../ui/proc-macro/weird-hygiene.stderr | 0 .../process-termination-blocking-io.rs | 0 .../process-termination-simple.rs | 0 {src/test => tests}/ui/process/core-run-destroy.rs | 0 {src/test => tests}/ui/process/fds-are-cloexec.rs | 0 {src/test => tests}/ui/process/issue-13304.rs | 0 {src/test => tests}/ui/process/issue-14456.rs | 0 {src/test => tests}/ui/process/issue-14940.rs | 0 {src/test => tests}/ui/process/issue-16272.rs | 0 {src/test => tests}/ui/process/issue-20091.rs | 0 {src/test => tests}/ui/process/multi-panic.rs | 0 {src/test => tests}/ui/process/no-stdio.rs | 0 {src/test => tests}/ui/process/nofile-limit.rs | 0 {src/test => tests}/ui/process/process-envs.rs | 0 {src/test => tests}/ui/process/process-exit.rs | 0 .../ui/process/process-panic-after-fork.rs | 0 .../ui/process/process-remove-from-env.rs | 0 {src/test => tests}/ui/process/process-sigpipe.rs | 0 .../ui/process/process-spawn-nonexistent.rs | 0 .../ui/process/process-spawn-with-unicode-params.rs | 0 .../ui/process/process-status-inherits-stdin.rs | 0 .../test => tests}/ui/process/signal-exit-status.rs | 0 .../ui/process/sigpipe-should-be-ignored.rs | 0 {src/test => tests}/ui/process/tls-exit-status.rs | 0 {src/test => tests}/ui/process/try-wait.rs | 0 {src/test => tests}/ui/project-cache-issue-31849.rs | 0 {src/test => tests}/ui/ptr-coercion-rpass.rs | 0 {src/test => tests}/ui/ptr-coercion.rs | 0 {src/test => tests}/ui/ptr-coercion.stderr | 0 {src/test => tests}/ui/ptr_ops/issue-80309-safe.rs | 0 {src/test => tests}/ui/ptr_ops/issue-80309.rs | 0 ...sue-33174-restricted-type-in-public-interface.rs | 0 ...33174-restricted-type-in-public-interface.stderr | 0 {src/test => tests}/ui/pub/pub-ident-fn-2.fixed | 0 {src/test => tests}/ui/pub/pub-ident-fn-2.rs | 0 {src/test => tests}/ui/pub/pub-ident-fn-2.stderr | 0 {src/test => tests}/ui/pub/pub-ident-fn-3.rs | 0 {src/test => tests}/ui/pub/pub-ident-fn-3.stderr | 0 .../ui/pub/pub-ident-fn-or-struct-2.rs | 0 .../ui/pub/pub-ident-fn-or-struct-2.stderr | 0 .../test => tests}/ui/pub/pub-ident-fn-or-struct.rs | 0 .../ui/pub/pub-ident-fn-or-struct.stderr | 0 .../ui/pub/pub-ident-fn-with-lifetime-2.rs | 0 .../ui/pub/pub-ident-fn-with-lifetime-2.stderr | 0 .../ui/pub/pub-ident-fn-with-lifetime.fixed | 0 .../ui/pub/pub-ident-fn-with-lifetime.rs | 0 .../ui/pub/pub-ident-fn-with-lifetime.stderr | 0 {src/test => tests}/ui/pub/pub-ident-fn.fixed | 0 {src/test => tests}/ui/pub/pub-ident-fn.rs | 0 {src/test => tests}/ui/pub/pub-ident-fn.stderr | 0 .../ui/pub/pub-ident-struct-with-lifetime.rs | 0 .../ui/pub/pub-ident-struct-with-lifetime.stderr | 0 {src/test => tests}/ui/pub/pub-ident-struct.fixed | 0 {src/test => tests}/ui/pub/pub-ident-struct.rs | 0 {src/test => tests}/ui/pub/pub-ident-struct.stderr | 0 .../ui/pub/pub-ident-with-lifetime-incomplete.rs | 0 .../pub/pub-ident-with-lifetime-incomplete.stderr | 0 .../ui/pub/pub-reexport-priv-extern-crate.rs | 0 .../ui/pub/pub-reexport-priv-extern-crate.stderr | 0 .../ui/pub/pub-restricted-error-fn.rs | 0 .../ui/pub/pub-restricted-error-fn.stderr | 0 {src/test => tests}/ui/pub/pub-restricted-error.rs | 0 .../ui/pub/pub-restricted-error.stderr | 0 .../ui/pub/pub-restricted-non-path.rs | 0 .../ui/pub/pub-restricted-non-path.stderr | 0 {src/test => tests}/ui/pub/pub-restricted.rs | 0 {src/test => tests}/ui/pub/pub-restricted.stderr | 0 .../ui/qualified/qualified-path-params-2.rs | 0 .../ui/qualified/qualified-path-params-2.stderr | 0 .../ui/qualified/qualified-path-params.rs | 0 .../ui/qualified/qualified-path-params.stderr | 0 .../ui/query-system/fn-sig-cycle-arity.rs | 0 .../ui/query-system/fn-sig-cycle-arity.stderr | 0 {src/test => tests}/ui/query-system/issue-83479.rs | 0 .../ui/query-system/issue-83479.stderr | 0 {src/test => tests}/ui/query-system/query_depth.rs | 0 .../ui/query-system/query_depth.stderr | 0 {src/test => tests}/ui/query-visibility.rs | 0 .../ui/range/exclusive-range-patterns-2021.rs | 0 .../ui/range/exclusive-range-patterns-2021.stderr | 0 .../ui/range/issue-54505-no-literals.fixed | 0 .../ui/range/issue-54505-no-literals.rs | 0 .../ui/range/issue-54505-no-literals.stderr | 0 {src/test => tests}/ui/range/issue-54505-no-std.rs | 0 .../ui/range/issue-54505-no-std.stderr | 0 {src/test => tests}/ui/range/issue-54505.fixed | 0 {src/test => tests}/ui/range/issue-54505.rs | 0 {src/test => tests}/ui/range/issue-54505.stderr | 0 .../ui/range/issue-73553-misinterp-range-literal.rs | 0 .../issue-73553-misinterp-range-literal.stderr | 0 {src/test => tests}/ui/range/range-1.rs | 0 {src/test => tests}/ui/range/range-1.stderr | 0 .../range/range-inclusive-pattern-precedence.fixed | 0 .../ui/range/range-inclusive-pattern-precedence.rs | 0 .../range/range-inclusive-pattern-precedence.stderr | 0 .../ui/range/range-inclusive-pattern-precedence2.rs | 0 .../range-inclusive-pattern-precedence2.stderr | 0 {src/test => tests}/ui/range/range_traits-1.rs | 0 {src/test => tests}/ui/range/range_traits-1.stderr | 0 {src/test => tests}/ui/range/range_traits-2.rs | 0 {src/test => tests}/ui/range/range_traits-2.stderr | 0 {src/test => tests}/ui/range/range_traits-3.rs | 0 {src/test => tests}/ui/range/range_traits-3.stderr | 0 {src/test => tests}/ui/range/range_traits-4.rs | 0 {src/test => tests}/ui/range/range_traits-5.rs | 0 {src/test => tests}/ui/range/range_traits-6.rs | 0 {src/test => tests}/ui/range/range_traits-6.stderr | 0 {src/test => tests}/ui/range/range_traits-7.rs | 0 {src/test => tests}/ui/range_inclusive.rs | 0 .../ui/raw-ref-op/feature-raw-ref-op.rs | 0 .../ui/raw-ref-op/feature-raw-ref-op.stderr | 0 {src/test => tests}/ui/raw-ref-op/raw-ref-op.rs | 0 .../ui/raw-ref-op/raw-ref-temp-deref.rs | 0 {src/test => tests}/ui/raw-ref-op/raw-ref-temp.rs | 0 .../ui/raw-ref-op/raw-ref-temp.stderr | 0 .../ui/raw-ref-op/unusual_locations.rs | 0 {src/test => tests}/ui/raw-str.rs | Bin .../ui/reachable-unnameable-type-alias.rs | 0 {src/test => tests}/ui/reachable/README.md | 0 .../ui/reachable/auxiliary/issue-11225-1.rs | 0 .../ui/reachable/auxiliary/issue-11225-2.rs | 0 .../ui/reachable/auxiliary/issue-11225-3.rs | 0 .../ui/reachable/auxiliary/unreachable_variant.rs | 0 {src/test => tests}/ui/reachable/expr_add.rs | 0 {src/test => tests}/ui/reachable/expr_add.stderr | 0 {src/test => tests}/ui/reachable/expr_again.rs | 0 {src/test => tests}/ui/reachable/expr_again.stderr | 0 {src/test => tests}/ui/reachable/expr_andand.rs | 0 {src/test => tests}/ui/reachable/expr_array.rs | 0 {src/test => tests}/ui/reachable/expr_array.stderr | 0 {src/test => tests}/ui/reachable/expr_assign.rs | 0 {src/test => tests}/ui/reachable/expr_assign.stderr | 0 {src/test => tests}/ui/reachable/expr_block.rs | 0 {src/test => tests}/ui/reachable/expr_block.stderr | 0 {src/test => tests}/ui/reachable/expr_box.rs | 0 {src/test => tests}/ui/reachable/expr_box.stderr | 0 {src/test => tests}/ui/reachable/expr_call.rs | 0 {src/test => tests}/ui/reachable/expr_call.stderr | 0 {src/test => tests}/ui/reachable/expr_cast.rs | 0 {src/test => tests}/ui/reachable/expr_cast.stderr | 0 {src/test => tests}/ui/reachable/expr_if.rs | 0 {src/test => tests}/ui/reachable/expr_if.stderr | 0 {src/test => tests}/ui/reachable/expr_loop.rs | 0 {src/test => tests}/ui/reachable/expr_loop.stderr | 0 {src/test => tests}/ui/reachable/expr_match.rs | 0 {src/test => tests}/ui/reachable/expr_match.stderr | 0 {src/test => tests}/ui/reachable/expr_method.rs | 0 {src/test => tests}/ui/reachable/expr_method.stderr | 0 {src/test => tests}/ui/reachable/expr_oror.rs | 0 {src/test => tests}/ui/reachable/expr_repeat.rs | 0 {src/test => tests}/ui/reachable/expr_repeat.stderr | 0 {src/test => tests}/ui/reachable/expr_return.rs | 0 {src/test => tests}/ui/reachable/expr_return.stderr | 0 .../ui/reachable/expr_return_in_macro.rs | 0 .../ui/reachable/expr_return_in_macro.stderr | 0 {src/test => tests}/ui/reachable/expr_struct.rs | 0 {src/test => tests}/ui/reachable/expr_struct.stderr | 0 {src/test => tests}/ui/reachable/expr_tup.rs | 0 {src/test => tests}/ui/reachable/expr_tup.stderr | 0 {src/test => tests}/ui/reachable/expr_type.rs | 0 {src/test => tests}/ui/reachable/expr_type.stderr | 0 {src/test => tests}/ui/reachable/expr_unary.rs | 0 {src/test => tests}/ui/reachable/expr_unary.stderr | 0 {src/test => tests}/ui/reachable/expr_while.rs | 0 {src/test => tests}/ui/reachable/expr_while.stderr | 0 {src/test => tests}/ui/reachable/issue-11225-1.rs | 0 {src/test => tests}/ui/reachable/issue-11225-2.rs | 0 {src/test => tests}/ui/reachable/issue-11225-3.rs | 0 {src/test => tests}/ui/reachable/unreachable-arm.rs | 0 .../ui/reachable/unreachable-arm.stderr | 0 .../ui/reachable/unreachable-code-ret.rs | 0 .../ui/reachable/unreachable-code-ret.stderr | 0 .../test => tests}/ui/reachable/unreachable-code.rs | 0 .../ui/reachable/unreachable-code.stderr | 0 .../ui/reachable/unreachable-in-call.rs | 0 .../ui/reachable/unreachable-in-call.stderr | 0 .../ui/reachable/unreachable-loop-patterns.rs | 0 .../ui/reachable/unreachable-loop-patterns.stderr | 0 .../ui/reachable/unreachable-try-pattern.rs | 0 .../ui/reachable/unreachable-try-pattern.stderr | 0 .../ui/reachable/unreachable-variant.rs | 0 .../ui/reachable/unreachable-variant.stderr | 0 .../ui/reachable/unwarned-match-on-never.rs | 0 .../ui/reachable/unwarned-match-on-never.stderr | 0 {src/test => tests}/ui/realloc-16687.rs | 0 {src/test => tests}/ui/reassign-ref-mut.rs | 0 {src/test => tests}/ui/reassign-ref-mut.stderr | 0 .../ui/recursion/auxiliary/recursive_reexports.rs | 0 {src/test => tests}/ui/recursion/instantiable.rs | 0 .../issue-26548-recursion-via-normalize.rs | 0 .../issue-26548-recursion-via-normalize.stderr | 0 ...591-non-regular-dropck-recursion.polonius.stderr | 0 .../issue-38591-non-regular-dropck-recursion.rs | 0 .../issue-38591-non-regular-dropck-recursion.stderr | 0 {src/test => tests}/ui/recursion/issue-83150.rs | 0 {src/test => tests}/ui/recursion/issue-83150.stderr | 0 {src/test => tests}/ui/recursion/issue-86784.rs | 0 {src/test => tests}/ui/recursion/issue-95134.rs | 0 .../ui/recursion/recursion.polonius.stderr | 0 {src/test => tests}/ui/recursion/recursion.rs | 0 {src/test => tests}/ui/recursion/recursion.stderr | 0 {src/test => tests}/ui/recursion/recursive-enum.rs | 0 .../ui/recursion/recursive-enum.stderr | 0 .../ui/recursion/recursive-reexports.rs | 0 .../ui/recursion/recursive-reexports.stderr | 0 .../ui/recursion/recursive-requirements.rs | 0 .../ui/recursion/recursive-requirements.stderr | 0 .../ui/recursion/recursive-static-definition.rs | 0 .../ui/recursion/recursive-static-definition.stderr | 0 .../recursive-types-are-not-uninhabited.rs | 0 .../recursive-types-are-not-uninhabited.stderr | 0 {src/test => tests}/ui/recursion_limit/empty.rs | 0 {src/test => tests}/ui/recursion_limit/empty.stderr | 0 .../ui/recursion_limit/invalid_digit.rs | 0 .../ui/recursion_limit/invalid_digit.stderr | 0 .../ui/recursion_limit/invalid_digit_type.rs | 0 .../ui/recursion_limit/invalid_digit_type.stderr | 0 .../ui/recursion_limit/invalid_macro.rs | 0 .../ui/recursion_limit/invalid_macro.stderr | 0 {src/test => tests}/ui/recursion_limit/no-value.rs | 0 .../ui/recursion_limit/no-value.stderr | 0 {src/test => tests}/ui/recursion_limit/overflow.rs | 0 .../ui/recursion_limit/overflow.stderr | 0 .../ui/recursion_limit/zero-overflow.rs | 0 .../ui/recursion_limit/zero-overflow.stderr | 0 {src/test => tests}/ui/recursion_limit/zero.rs | 0 {src/test => tests}/ui/recursion_limit/zero.stderr | 0 .../test => tests}/ui/reexport-test-harness-main.rs | 0 .../ui/regions/auxiliary/rbmtp_cross_crate_lib.rs | 0 .../ui/regions/closure-in-projection-issue-97405.rs | 0 .../closure-in-projection-issue-97405.stderr | 0 .../do-not-suggest-adding-bound-to-opaque-type.rs | 0 ...o-not-suggest-adding-bound-to-opaque-type.stderr | 0 .../ui/regions/forall-wf-ref-reflexive.rs | 0 .../ui/regions/forall-wf-ref-reflexive.stderr | 0 .../ui/regions/forall-wf-reflexive.rs | 0 .../ui/regions/init-res-into-things.rs | 0 {src/test => tests}/ui/regions/issue-101280.rs | 0 {src/test => tests}/ui/regions/issue-101280.stderr | 0 {src/test => tests}/ui/regions/issue-102374.rs | 0 {src/test => tests}/ui/regions/issue-102374.stderr | 0 {src/test => tests}/ui/regions/issue-102392.rs | 0 {src/test => tests}/ui/regions/issue-102392.stderr | 0 {src/test => tests}/ui/regions/issue-11612.rs | 0 {src/test => tests}/ui/regions/issue-12470.rs | 0 {src/test => tests}/ui/regions/issue-12470.stderr | 0 {src/test => tests}/ui/regions/issue-21520.rs | 0 {src/test => tests}/ui/regions/issue-24085.rs | 0 {src/test => tests}/ui/regions/issue-26448-1.rs | 0 {src/test => tests}/ui/regions/issue-26448-2.rs | 0 {src/test => tests}/ui/regions/issue-26448-3.rs | 0 {src/test => tests}/ui/regions/issue-2718.rs | 0 {src/test => tests}/ui/regions/issue-28848.rs | 0 {src/test => tests}/ui/regions/issue-28848.stderr | 0 {src/test => tests}/ui/regions/issue-5243.rs | 0 ...ssue-56537-closure-uses-region-from-container.rs | 0 {src/test => tests}/ui/regions/issue-6157.rs | 0 .../ui/regions/issue-72051-member-region-hang.rs | 0 .../ui/regions/issue-78262.base.stderr | 0 .../ui/regions/issue-78262.polonius.stderr | 0 {src/test => tests}/ui/regions/issue-78262.rs | 0 .../ui/regions/outlives-with-missing.rs | 0 .../ui/regions/outlives-with-missing.stderr | 0 .../ui/regions/owned-implies-static.rs | 0 .../ui/regions/rcvr-borrowed-to-region.rs | 0 .../regions/region-borrow-params-issue-29793-big.rs | 0 .../region-borrow-params-issue-29793-big.stderr | 0 .../region-borrow-params-issue-29793-small.rs | 0 .../region-borrow-params-issue-29793-small.stderr | 0 .../region-bound-extra-bound-in-inherent-impl.rs | 0 .../region-bound-on-closure-outlives-call.rs | 0 .../region-bound-on-closure-outlives-call.stderr | 0 .../region-bound-same-bounds-in-trait-and-impl.rs | 0 .../region-bounds-on-objects-and-type-parameters.rs | 0 ...ion-bounds-on-objects-and-type-parameters.stderr | 0 .../region-invariant-static-error-reporting.rs | 0 .../region-invariant-static-error-reporting.stderr | 0 .../region-lifetime-bounds-on-fns-where-clause.rs | 0 ...egion-lifetime-bounds-on-fns-where-clause.stderr | 0 ...-multiple-lifetime-bounds-on-fns-where-clause.rs | 0 ...tiple-lifetime-bounds-on-fns-where-clause.stderr | 0 .../ui/regions/region-object-lifetime-1.rs | 0 .../ui/regions/region-object-lifetime-2.rs | 0 .../ui/regions/region-object-lifetime-2.stderr | 0 .../ui/regions/region-object-lifetime-3.rs | 0 .../ui/regions/region-object-lifetime-4.rs | 0 .../ui/regions/region-object-lifetime-4.stderr | 0 .../ui/regions/region-object-lifetime-5.rs | 0 .../ui/regions/region-object-lifetime-5.stderr | 0 .../regions/region-object-lifetime-in-coercion.rs | 0 .../region-object-lifetime-in-coercion.stderr | 0 .../ui/regions/regions-addr-of-arg.rs | 0 .../ui/regions/regions-addr-of-arg.stderr | 0 .../regions-addr-of-interior-of-unique-box.rs | 0 .../ui/regions/regions-addr-of-ret.rs | 0 .../ui/regions/regions-addr-of-self.rs | 0 .../ui/regions/regions-addr-of-self.stderr | 0 .../ui/regions/regions-addr-of-upvar-self.rs | 0 .../ui/regions/regions-addr-of-upvar-self.stderr | 0 .../ui/regions/regions-adjusted-lvalue-op.rs | 0 .../ui/regions/regions-adjusted-lvalue-op.stderr | 0 ...s-assoc-type-in-supertrait-outlives-container.rs | 0 ...soc-type-in-supertrait-outlives-container.stderr | 0 ...ions-assoc-type-region-bound-in-trait-not-met.rs | 0 ...-assoc-type-region-bound-in-trait-not-met.stderr | 0 .../ui/regions/regions-assoc-type-region-bound.rs | 0 ...ions-assoc-type-static-bound-in-trait-not-met.rs | 0 ...-assoc-type-static-bound-in-trait-not-met.stderr | 0 .../ui/regions/regions-assoc-type-static-bound.rs | 0 {src/test => tests}/ui/regions/regions-borrow-at.rs | 0 .../ui/regions/regions-borrow-evec-fixed.rs | 0 .../ui/regions/regions-borrow-evec-uniq.rs | 0 .../ui/regions/regions-borrow-uniq.rs | 0 {src/test => tests}/ui/regions/regions-bot.rs | 0 .../regions/regions-bound-lists-feature-gate-2.rs | 0 .../ui/regions/regions-bound-lists-feature-gate.rs | 0 .../regions-bounded-by-trait-requiring-static.rs | 0 ...regions-bounded-by-trait-requiring-static.stderr | 0 ...ns-bounded-method-type-parameters-cross-crate.rs | 0 ...ounded-method-type-parameters-cross-crate.stderr | 0 ...ns-bounded-method-type-parameters-trait-bound.rs | 0 ...ounded-method-type-parameters-trait-bound.stderr | 0 .../regions-bounded-method-type-parameters.rs | 0 .../regions-bounded-method-type-parameters.stderr | 0 {src/test => tests}/ui/regions/regions-bounds.rs | 0 .../test => tests}/ui/regions/regions-bounds.stderr | 0 .../regions-close-associated-type-into-object.rs | 0 ...regions-close-associated-type-into-object.stderr | 0 .../regions/regions-close-object-into-object-1.rs | 0 .../regions-close-object-into-object-1.stderr | 0 .../regions/regions-close-object-into-object-2.rs | 0 .../regions-close-object-into-object-2.stderr | 0 .../regions/regions-close-object-into-object-3.rs | 0 .../regions-close-object-into-object-3.stderr | 0 .../regions/regions-close-object-into-object-4.rs | 0 .../regions-close-object-into-object-4.stderr | 0 .../regions/regions-close-object-into-object-5.rs | 0 .../regions-close-object-into-object-5.stderr | 0 .../regions/regions-close-over-type-parameter-1.rs | 0 .../regions-close-over-type-parameter-1.stderr | 0 .../regions-close-over-type-parameter-multiple.rs | 0 ...egions-close-over-type-parameter-multiple.stderr | 0 ...egions-close-over-type-parameter-successfully.rs | 0 .../ui/regions/regions-close-param-into-object.rs | 0 .../regions/regions-close-param-into-object.stderr | 0 .../ui/regions/regions-copy-closure.rs | 0 .../ui/regions/regions-creating-enums.rs | 0 .../ui/regions/regions-creating-enums.stderr | 0 .../ui/regions/regions-creating-enums2.rs | 0 .../ui/regions/regions-creating-enums3.rs | 0 .../ui/regions/regions-creating-enums3.stderr | 0 .../ui/regions/regions-creating-enums4.rs | 0 .../ui/regions/regions-creating-enums4.stderr | 0 .../ui/regions/regions-creating-enums5.rs | 0 .../ui/regions/regions-debruijn-of-object.rs | 0 .../ui/regions/regions-dependent-addr-of.rs | 0 .../ui/regions/regions-dependent-autofn.rs | 0 .../ui/regions/regions-dependent-autoslice.rs | 0 .../ui/regions/regions-dependent-let-ref.rs | 0 .../ui/regions/regions-early-bound-error-method.rs | 0 .../regions/regions-early-bound-error-method.stderr | 0 .../ui/regions/regions-early-bound-error.rs | 0 .../ui/regions/regions-early-bound-error.stderr | 0 .../regions-early-bound-lifetime-in-assoc-fn.rs | 0 .../ui/regions/regions-early-bound-trait-param.rs | 0 .../regions-early-bound-used-in-bound-method.rs | 0 .../ui/regions/regions-early-bound-used-in-bound.rs | 0 .../regions-early-bound-used-in-type-param.rs | 0 .../ui/regions/regions-escape-into-other-fn.rs | 0 .../ui/regions/regions-escape-method.rs | 0 .../ui/regions/regions-escape-method.stderr | 0 .../ui/regions/regions-escape-via-trait-or-not.rs | 0 .../regions/regions-escape-via-trait-or-not.stderr | 0 {src/test => tests}/ui/regions/regions-expl-self.rs | 0 .../ui/regions/regions-fn-subtyping-2.rs | 0 .../regions-fn-subtyping-return-static-fail.rs | 0 .../regions-fn-subtyping-return-static-fail.stderr | 0 .../regions/regions-fn-subtyping-return-static.rs | 0 .../ui/regions/regions-fn-subtyping.rs | 0 .../regions-free-region-ordering-callee-4.rs | 0 .../regions-free-region-ordering-callee-4.stderr | 0 .../regions/regions-free-region-ordering-callee.rs | 0 .../regions-free-region-ordering-callee.stderr | 0 .../regions/regions-free-region-ordering-caller.rs | 0 .../regions-free-region-ordering-caller.stderr | 0 .../regions/regions-free-region-ordering-caller1.rs | 0 .../regions-free-region-ordering-caller1.stderr | 0 .../regions-free-region-ordering-incorrect.rs | 0 .../regions-free-region-ordering-incorrect.stderr | 0 ...e-region-outlives-static-outlives-free-region.rs | 0 ...gion-outlives-static-outlives-free-region.stderr | 0 .../ui/regions/regions-glb-free-free.rs | 0 .../ui/regions/regions-glb-free-free.stderr | 0 .../regions-implied-bounds-projection-gap-1.rs | 0 .../regions-implied-bounds-projection-gap-1.stderr | 0 .../regions-implied-bounds-projection-gap-2.rs | 0 .../regions-implied-bounds-projection-gap-3.rs | 0 .../regions-implied-bounds-projection-gap-4.rs | 0 .../regions-implied-bounds-projection-gap-hr-1.rs | 0 ...egions-implied-bounds-projection-gap-hr-1.stderr | 0 .../ui/regions/regions-in-enums-anon.rs | 0 .../ui/regions/regions-in-enums-anon.stderr | 0 {src/test => tests}/ui/regions/regions-in-enums.rs | 0 .../ui/regions/regions-in-enums.stderr | 0 .../ui/regions/regions-in-structs-anon.rs | 0 .../ui/regions/regions-in-structs-anon.stderr | 0 .../test => tests}/ui/regions/regions-in-structs.rs | 0 .../ui/regions/regions-in-structs.stderr | 0 .../ui/regions/regions-infer-at-fn-not-param.rs | 0 .../ui/regions/regions-infer-at-fn-not-param.stderr | 0 .../regions/regions-infer-borrow-scope-addr-of.rs | 0 .../regions/regions-infer-borrow-scope-too-big.rs | 0 .../regions-infer-borrow-scope-too-big.stderr | 0 .../ui/regions/regions-infer-borrow-scope-view.rs | 0 .../regions-infer-borrow-scope-within-loop-ok.rs | 0 .../ui/regions/regions-infer-borrow-scope.rs | 0 .../regions/regions-infer-bound-from-trait-self.rs | 0 .../regions-infer-bound-from-trait-self.stderr | 0 .../ui/regions/regions-infer-bound-from-trait.rs | 0 .../regions/regions-infer-bound-from-trait.stderr | 0 .../ui/regions/regions-infer-call-2.rs | 0 .../ui/regions/regions-infer-call-3.rs | 0 .../ui/regions/regions-infer-call-3.stderr | 0 .../test => tests}/ui/regions/regions-infer-call.rs | 0 .../regions-infer-contravariance-due-to-decl.rs | 0 .../regions-infer-contravariance-due-to-decl.stderr | 0 .../regions-infer-contravariance-due-to-ret.rs | 0 .../regions/regions-infer-covariance-due-to-decl.rs | 0 .../regions-infer-covariance-due-to-decl.stderr | 0 .../regions/regions-infer-invariance-due-to-decl.rs | 0 .../regions-infer-invariance-due-to-decl.stderr | 0 .../regions-infer-invariance-due-to-mutability-3.rs | 0 ...ions-infer-invariance-due-to-mutability-3.stderr | 0 .../regions-infer-invariance-due-to-mutability-4.rs | 0 ...ions-infer-invariance-due-to-mutability-4.stderr | 0 .../ui/regions/regions-infer-not-param.rs | 0 .../ui/regions/regions-infer-not-param.stderr | 0 .../ui/regions/regions-infer-paramd-indirect.rs | 0 .../ui/regions/regions-infer-paramd-indirect.stderr | 0 .../ui/regions/regions-infer-proc-static-upvar.rs | 0 .../regions/regions-infer-proc-static-upvar.stderr | 0 .../regions-infer-reborrow-ref-mut-recurse.rs | 0 .../regions-infer-region-in-fn-but-not-type.rs | 0 .../ui/regions/regions-infer-static-from-proc.rs | 0 .../ui/regions/regions-issue-21422.rs | 0 .../ui/regions/regions-issue-22246.rs | 0 .../ui/regions/regions-lifetime-bounds-on-fns.rs | 0 .../regions/regions-lifetime-bounds-on-fns.stderr | 0 .../regions/regions-lifetime-nonfree-late-bound.rs | 0 .../regions-lifetime-of-struct-or-enum-variant.rs | 0 ...egions-lifetime-of-struct-or-enum-variant.stderr | 0 ...egions-lifetime-static-items-enclosing-scopes.rs | 0 .../ui/regions/regions-link-fn-args.rs | 0 .../ui/regions/regions-lub-ref-ref-rc.rs | 0 .../ui/regions/regions-mock-codegen.rs | 0 .../ui/regions/regions-name-duplicated.rs | 0 .../ui/regions/regions-name-duplicated.stderr | 0 .../ui/regions/regions-name-static.rs | 0 .../ui/regions/regions-name-static.stderr | 0 .../ui/regions/regions-name-undeclared.rs | 0 .../ui/regions/regions-name-undeclared.stderr | 0 .../ui/regions/regions-nested-fns-2.rs | 0 .../ui/regions/regions-nested-fns-2.stderr | 0 .../test => tests}/ui/regions/regions-nested-fns.rs | 0 .../ui/regions/regions-nested-fns.stderr | 0 .../regions/regions-no-bound-in-argument-cleanup.rs | 0 .../regions/regions-no-variance-from-fn-generics.rs | 0 .../regions-normalize-in-where-clause-list.rs | 0 .../regions-normalize-in-where-clause-list.stderr | 0 .../ui/regions/regions-nullary-variant.rs | 0 ...regions-outlives-nominal-type-enum-region-rev.rs | 0 .../regions-outlives-nominal-type-enum-region.rs | 0 .../regions-outlives-nominal-type-enum-type-rev.rs | 0 .../regions-outlives-nominal-type-enum-type.rs | 0 ...gions-outlives-nominal-type-struct-region-rev.rs | 0 .../regions-outlives-nominal-type-struct-region.rs | 0 ...regions-outlives-nominal-type-struct-type-rev.rs | 0 .../regions-outlives-nominal-type-struct-type.rs | 0 .../regions-outlives-projection-container-hrtb.rs | 0 ...egions-outlives-projection-container-hrtb.stderr | 0 .../regions-outlives-projection-container-wc.rs | 0 .../regions-outlives-projection-container-wc.stderr | 0 .../regions-outlives-projection-container.rs | 0 .../regions-outlives-projection-container.stderr | 0 .../regions/regions-outlives-projection-hrtype.rs | 0 .../regions-outlives-projection-trait-def.rs | 0 .../ui/regions/regions-outlives-scalar.rs | 0 {src/test => tests}/ui/regions/regions-params.rs | 0 .../regions/regions-pattern-typing-issue-19552.rs | 0 .../regions-pattern-typing-issue-19552.stderr | 0 .../regions/regions-pattern-typing-issue-19997.rs | 0 .../regions-pattern-typing-issue-19997.stderr | 0 .../ui/regions/regions-proc-bound-capture.rs | 0 .../ui/regions/regions-proc-bound-capture.stderr | 0 .../regions/regions-reassign-let-bound-pointer.rs | 0 .../regions/regions-reassign-match-bound-pointer.rs | 0 ...regions-reborrow-from-shorter-mut-ref-mut-ref.rs | 0 ...ons-reborrow-from-shorter-mut-ref-mut-ref.stderr | 0 .../regions-reborrow-from-shorter-mut-ref.rs | 0 .../regions-reborrow-from-shorter-mut-ref.stderr | 0 .../ui/regions/regions-ref-in-fn-arg.rs | 0 .../ui/regions/regions-ref-in-fn-arg.stderr | 0 {src/test => tests}/ui/regions/regions-refcell.rs | 0 ...nd-regions-on-closures-to-inference-variables.rs | 0 .../ui/regions/regions-ret-borrowed-1.rs | 0 .../ui/regions/regions-ret-borrowed-1.stderr | 0 .../ui/regions/regions-ret-borrowed.rs | 0 .../ui/regions/regions-ret-borrowed.stderr | 0 {src/test => tests}/ui/regions/regions-ret.rs | 0 {src/test => tests}/ui/regions/regions-ret.stderr | 0 .../ui/regions/regions-return-interior-of-option.rs | 0 .../regions-return-ref-to-upvar-issue-17403.rs | 0 .../regions-return-ref-to-upvar-issue-17403.stderr | 0 .../regions/regions-return-stack-allocated-vec.rs | 0 .../regions-return-stack-allocated-vec.stderr | 0 .../ui/regions/regions-scope-chain-example.rs | 0 .../test => tests}/ui/regions/regions-self-impls.rs | 0 .../ui/regions/regions-self-in-enums.rs | 0 {src/test => tests}/ui/regions/regions-simple.rs | 0 .../ui/regions/regions-static-bound-rpass.rs | 0 .../ui/regions/regions-static-bound-rpass.stderr | 0 .../ui/regions/regions-static-bound.rs | 0 .../ui/regions/regions-static-bound.stderr | 0 .../ui/regions/regions-static-closure.rs | 0 .../ui/regions/regions-steal-closure.rs | 0 .../ui/regions/regions-steal-closure.stderr | 0 {src/test => tests}/ui/regions/regions-trait-1.rs | 0 .../ui/regions/regions-trait-object-1.rs | 0 .../ui/regions/regions-trait-object-subtyping.rs | 0 .../regions/regions-trait-object-subtyping.stderr | 0 .../ui/regions/regions-trait-variance.rs | 0 .../ui/regions/regions-trait-variance.stderr | 0 .../test => tests}/ui/regions/regions-undeclared.rs | 0 .../ui/regions/regions-undeclared.stderr | 0 .../ui/regions/regions-var-type-out-of-scope.rs | 0 .../ui/regions/regions-var-type-out-of-scope.stderr | 0 ...ions-variance-contravariant-use-contravariant.rs | 0 ...ontravariant-use-covariant-in-second-position.rs | 0 ...avariant-use-covariant-in-second-position.stderr | 0 .../regions-variance-contravariant-use-covariant.rs | 0 ...ions-variance-contravariant-use-covariant.stderr | 0 .../regions-variance-covariant-use-contravariant.rs | 0 ...ions-variance-covariant-use-contravariant.stderr | 0 .../regions-variance-covariant-use-covariant.rs | 0 .../regions-variance-invariant-use-contravariant.rs | 0 ...ions-variance-invariant-use-contravariant.stderr | 0 .../regions-variance-invariant-use-covariant.rs | 0 .../regions-variance-invariant-use-covariant.stderr | 0 .../ui/regions/regions-wf-trait-object.rs | 0 .../ui/regions/regions-wf-trait-object.stderr | 0 .../type-param-outlives-reempty-issue-74429-2.rs | 0 .../type-param-outlives-reempty-issue-74429.rs | 0 .../ui/regions/wf-bound-region-in-object-type.rs | 0 {src/test => tests}/ui/reify-intrinsic.rs | 0 {src/test => tests}/ui/reify-intrinsic.stderr | 0 {src/test => tests}/ui/remap-path-prefix.rs | 0 {src/test => tests}/ui/remap-path-prefix.stderr | 0 {src/test => tests}/ui/removing-extern-crate.fixed | 0 {src/test => tests}/ui/removing-extern-crate.rs | 0 {src/test => tests}/ui/removing-extern-crate.stderr | 0 {src/test => tests}/ui/repeat-expr/infer.rs | 0 .../ui/repeat-expr/repeat-expr-in-static.rs | 0 .../ui/repeat-expr/repeat-to-run-dtor-twice.rs | 0 .../ui/repeat-expr/repeat-to-run-dtor-twice.stderr | 0 {src/test => tests}/ui/repeat-expr/repeat_count.rs | 0 .../ui/repeat-expr/repeat_count.stderr | 0 .../ui/repr/align-with-extern-c-fn.rs | 0 {src/test => tests}/ui/repr/aligned_enum_cast.rs | 0 {src/test => tests}/ui/repr/attr-usage-repr.rs | 0 {src/test => tests}/ui/repr/attr-usage-repr.stderr | 0 .../auxiliary/repr-transparent-non-exhaustive.rs | 0 .../ui/repr/invalid_repr_list_help.rs | 0 .../ui/repr/invalid_repr_list_help.stderr | 0 .../test => tests}/ui/repr/issue-83505-repr-simd.rs | 0 .../ui/repr/issue-83505-repr-simd.stderr | 0 {src/test => tests}/ui/repr/issue-83921-ice.rs | 0 {src/test => tests}/ui/repr/issue-83921-ice.stderr | 0 {src/test => tests}/ui/repr/repr-align-assign.fixed | 0 {src/test => tests}/ui/repr/repr-align-assign.rs | 0 .../test => tests}/ui/repr/repr-align-assign.stderr | 0 {src/test => tests}/ui/repr/repr-align.rs | 0 {src/test => tests}/ui/repr/repr-align.stderr | 0 .../ui/repr/repr-disallow-on-variant.rs | 0 .../ui/repr/repr-disallow-on-variant.stderr | 0 .../ui/repr/repr-packed-contains-align.rs | 0 .../ui/repr/repr-packed-contains-align.stderr | 0 .../ui/repr/repr-transparent-issue-87496.rs | 0 .../ui/repr/repr-transparent-issue-87496.stderr | 0 .../ui/repr/repr-transparent-non-exhaustive.rs | 0 .../ui/repr/repr-transparent-non-exhaustive.stderr | 0 .../ui/repr/repr-transparent-other-items.rs | 0 .../ui/repr/repr-transparent-other-items.stderr | 0 .../ui/repr/repr-transparent-other-reprs.rs | 0 .../ui/repr/repr-transparent-other-reprs.stderr | 0 {src/test => tests}/ui/repr/repr-transparent.rs | 0 {src/test => tests}/ui/repr/repr-transparent.stderr | 0 {src/test => tests}/ui/repr/repr.rs | 0 {src/test => tests}/ui/repr/repr.stderr | 0 {src/test => tests}/ui/repr/repr_c_int_align.rs | 0 .../ui/repr/transparent-enum-too-many-variants.rs | 0 .../repr/transparent-enum-too-many-variants.stderr | 0 .../ui/reserved/reserved-attr-on-macro.rs | 0 .../ui/reserved/reserved-attr-on-macro.stderr | 0 {src/test => tests}/ui/reserved/reserved-become.rs | 0 .../ui/reserved/reserved-become.stderr | 0 .../ui/resolve/associated-fn-called-as-fn.rs | 0 .../ui/resolve/associated-fn-called-as-fn.stderr | 0 .../blind-item-mixed-crate-use-item-foo.rs | 0 .../blind-item-mixed-crate-use-item-foo2.rs | 0 .../ui/resolve/auxiliary/extern-prelude-vec.rs | 0 .../ui/resolve/auxiliary/extern-prelude.rs | 0 .../ui/resolve/auxiliary/issue-19452-aux.rs | 0 .../ui/resolve/auxiliary/issue-21221-3.rs | 0 .../ui/resolve/auxiliary/issue-21221-4.rs | 0 .../ui/resolve/auxiliary/issue-30535.rs | 0 .../ui/resolve/auxiliary/issue-3907.rs | 0 .../ui/resolve/auxiliary/issue-80079.rs | 0 .../ui/resolve/auxiliary/namespaced_enums.rs | 0 .../ui/resolve/auxiliary/privacy-struct-ctor.rs | 0 {src/test => tests}/ui/resolve/bad-env-capture.rs | 0 .../ui/resolve/bad-env-capture.stderr | 0 {src/test => tests}/ui/resolve/bad-env-capture2.rs | 0 .../ui/resolve/bad-env-capture2.stderr | 0 {src/test => tests}/ui/resolve/bad-env-capture3.rs | 0 .../ui/resolve/bad-env-capture3.stderr | 0 {src/test => tests}/ui/resolve/bad-expr-path.rs | 0 {src/test => tests}/ui/resolve/bad-expr-path.stderr | 0 {src/test => tests}/ui/resolve/bad-expr-path2.rs | 0 .../test => tests}/ui/resolve/bad-expr-path2.stderr | 0 {src/test => tests}/ui/resolve/bad-module.rs | 0 {src/test => tests}/ui/resolve/bad-module.stderr | 0 .../ui/resolve/bad-type-env-capture.rs | 0 .../ui/resolve/bad-type-env-capture.stderr | 0 .../ui/resolve/blind-item-local-shadow.rs | 0 .../ui/resolve/blind-item-mixed-crate-use-item.rs | 0 .../ui/resolve/blind-item-mixed-use-item.rs | 0 .../ui/resolve/block-with-trait-parent.rs | 0 .../ui/resolve/crate-called-as-function.rs | 0 .../ui/resolve/crate-called-as-function.stderr | 0 {src/test => tests}/ui/resolve/crate-in-paths.rs | 0 .../test => tests}/ui/resolve/crate-in-paths.stderr | 0 .../ui/resolve/editions-crate-root-2015.rs | 0 .../ui/resolve/editions-crate-root-2015.stderr | 0 .../ui/resolve/editions-crate-root-2018.rs | 0 .../ui/resolve/editions-crate-root-2018.stderr | 0 .../ui/resolve/enums-are-namespaced-xc.rs | 0 .../ui/resolve/enums-are-namespaced-xc.stderr | 0 .../ui/resolve/enums-pats-not-idents.rs | 0 .../ui/resolve/enums-pats-not-idents.stderr | 0 .../ui/resolve/export-fully-qualified.rs | 0 .../ui/resolve/export-fully-qualified.stderr | 0 .../ui/resolve/extern-prelude-fail.rs | 0 .../ui/resolve/extern-prelude-fail.stderr | 0 {src/test => tests}/ui/resolve/extern-prelude.rs | 0 {src/test => tests}/ui/resolve/filter-intrinsics.rs | 0 .../ui/resolve/filter-intrinsics.stderr | 0 .../ui/resolve/impl-items-vis-unresolved.rs | 0 .../ui/resolve/impl-items-vis-unresolved.stderr | 0 {src/test => tests}/ui/resolve/issue-100365.rs | 0 {src/test => tests}/ui/resolve/issue-100365.stderr | 0 {src/test => tests}/ui/resolve/issue-101749-2.rs | 0 .../test => tests}/ui/resolve/issue-101749-2.stderr | 0 {src/test => tests}/ui/resolve/issue-101749.fixed | 0 {src/test => tests}/ui/resolve/issue-101749.rs | 0 {src/test => tests}/ui/resolve/issue-101749.stderr | 0 {src/test => tests}/ui/resolve/issue-10200.rs | 0 {src/test => tests}/ui/resolve/issue-10200.stderr | 0 {src/test => tests}/ui/resolve/issue-102946.rs | 0 {src/test => tests}/ui/resolve/issue-102946.stderr | 0 {src/test => tests}/ui/resolve/issue-103202.rs | 0 {src/test => tests}/ui/resolve/issue-103202.stderr | 0 {src/test => tests}/ui/resolve/issue-103474.rs | 0 {src/test => tests}/ui/resolve/issue-103474.stderr | 0 .../ui/resolve/issue-104700-inner_scope.rs | 0 .../ui/resolve/issue-104700-inner_scope.stderr | 0 {src/test => tests}/ui/resolve/issue-105069.rs | 0 {src/test => tests}/ui/resolve/issue-105069.stderr | 0 {src/test => tests}/ui/resolve/issue-12796.rs | 0 {src/test => tests}/ui/resolve/issue-12796.stderr | 0 {src/test => tests}/ui/resolve/issue-14254.rs | 0 {src/test => tests}/ui/resolve/issue-14254.stderr | 0 {src/test => tests}/ui/resolve/issue-16058.rs | 0 {src/test => tests}/ui/resolve/issue-16058.stderr | 0 {src/test => tests}/ui/resolve/issue-17518.rs | 0 {src/test => tests}/ui/resolve/issue-17518.stderr | 0 {src/test => tests}/ui/resolve/issue-18252.rs | 0 {src/test => tests}/ui/resolve/issue-18252.stderr | 0 {src/test => tests}/ui/resolve/issue-19452.rs | 0 {src/test => tests}/ui/resolve/issue-19452.stderr | 0 {src/test => tests}/ui/resolve/issue-21221-1.rs | 0 {src/test => tests}/ui/resolve/issue-21221-1.stderr | 0 {src/test => tests}/ui/resolve/issue-21221-2.rs | 0 {src/test => tests}/ui/resolve/issue-21221-2.stderr | 0 {src/test => tests}/ui/resolve/issue-21221-3.rs | 0 {src/test => tests}/ui/resolve/issue-21221-3.stderr | 0 {src/test => tests}/ui/resolve/issue-21221-4.rs | 0 {src/test => tests}/ui/resolve/issue-21221-4.stderr | 0 {src/test => tests}/ui/resolve/issue-22692.rs | 0 {src/test => tests}/ui/resolve/issue-22692.stderr | 0 {src/test => tests}/ui/resolve/issue-2330.rs | 0 {src/test => tests}/ui/resolve/issue-2330.stderr | 0 {src/test => tests}/ui/resolve/issue-23305.rs | 0 {src/test => tests}/ui/resolve/issue-23305.stderr | 0 {src/test => tests}/ui/resolve/issue-2356.rs | 0 {src/test => tests}/ui/resolve/issue-2356.stderr | 0 {src/test => tests}/ui/resolve/issue-23716.rs | 0 {src/test => tests}/ui/resolve/issue-23716.stderr | 0 {src/test => tests}/ui/resolve/issue-24968.rs | 0 {src/test => tests}/ui/resolve/issue-24968.stderr | 0 {src/test => tests}/ui/resolve/issue-26545.rs | 0 {src/test => tests}/ui/resolve/issue-26545.stderr | 0 {src/test => tests}/ui/resolve/issue-3021-c.rs | 0 {src/test => tests}/ui/resolve/issue-3021-c.stderr | 0 {src/test => tests}/ui/resolve/issue-3021.rs | 0 {src/test => tests}/ui/resolve/issue-3021.stderr | 0 {src/test => tests}/ui/resolve/issue-30535.rs | 0 {src/test => tests}/ui/resolve/issue-30535.stderr | 0 {src/test => tests}/ui/resolve/issue-31845.rs | 0 {src/test => tests}/ui/resolve/issue-31845.stderr | 0 {src/test => tests}/ui/resolve/issue-33876.rs | 0 {src/test => tests}/ui/resolve/issue-33876.stderr | 0 {src/test => tests}/ui/resolve/issue-35675.rs | 0 {src/test => tests}/ui/resolve/issue-35675.stderr | 0 {src/test => tests}/ui/resolve/issue-3907-2.rs | 0 {src/test => tests}/ui/resolve/issue-3907-2.stderr | 0 {src/test => tests}/ui/resolve/issue-3907.rs | 0 {src/test => tests}/ui/resolve/issue-3907.stderr | 0 {src/test => tests}/ui/resolve/issue-39226.rs | 0 {src/test => tests}/ui/resolve/issue-39226.stderr | 0 {src/test => tests}/ui/resolve/issue-39559-2.rs | 0 {src/test => tests}/ui/resolve/issue-39559-2.stderr | 0 {src/test => tests}/ui/resolve/issue-39559.rs | 0 {src/test => tests}/ui/resolve/issue-39559.stderr | 0 {src/test => tests}/ui/resolve/issue-42944.rs | 0 {src/test => tests}/ui/resolve/issue-42944.stderr | 0 {src/test => tests}/ui/resolve/issue-49074.rs | 0 {src/test => tests}/ui/resolve/issue-49074.stderr | 0 {src/test => tests}/ui/resolve/issue-5035-2.rs | 0 {src/test => tests}/ui/resolve/issue-5035-2.stderr | 0 {src/test => tests}/ui/resolve/issue-5035.rs | 0 {src/test => tests}/ui/resolve/issue-5035.stderr | 0 {src/test => tests}/ui/resolve/issue-50599.rs | 0 {src/test => tests}/ui/resolve/issue-50599.stderr | 0 {src/test => tests}/ui/resolve/issue-5099.rs | 0 {src/test => tests}/ui/resolve/issue-5099.stderr | 0 {src/test => tests}/ui/resolve/issue-54379.rs | 0 {src/test => tests}/ui/resolve/issue-54379.stderr | 0 {src/test => tests}/ui/resolve/issue-55673.rs | 0 {src/test => tests}/ui/resolve/issue-55673.stderr | 0 {src/test => tests}/ui/resolve/issue-57523.rs | 0 {src/test => tests}/ui/resolve/issue-5927.rs | 0 {src/test => tests}/ui/resolve/issue-5927.stderr | 0 {src/test => tests}/ui/resolve/issue-60057.rs | 0 {src/test => tests}/ui/resolve/issue-60057.stderr | 0 .../issue-65025-extern-static-parent-generics.rs | 0 ...issue-65025-extern-static-parent-generics.stderr | 0 .../issue-65035-static-with-parent-generics.rs | 0 .../issue-65035-static-with-parent-generics.stderr | 0 {src/test => tests}/ui/resolve/issue-6702.rs | 0 {src/test => tests}/ui/resolve/issue-6702.stderr | 0 .../issue-69401-trait-fn-no-body-ty-local.rs | 0 .../issue-69401-trait-fn-no-body-ty-local.stderr | 0 .../issue-70736-async-fn-no-body-def-collector.rs | 0 ...ssue-70736-async-fn-no-body-def-collector.stderr | 0 {src/test => tests}/ui/resolve/issue-73427.rs | 0 {src/test => tests}/ui/resolve/issue-73427.stderr | 0 {src/test => tests}/ui/resolve/issue-80079.rs | 0 {src/test => tests}/ui/resolve/issue-80079.stderr | 0 {src/test => tests}/ui/resolve/issue-81508.rs | 0 {src/test => tests}/ui/resolve/issue-81508.stderr | 0 {src/test => tests}/ui/resolve/issue-82156.rs | 0 {src/test => tests}/ui/resolve/issue-82156.stderr | 0 {src/test => tests}/ui/resolve/issue-82865.rs | 0 {src/test => tests}/ui/resolve/issue-82865.stderr | 0 {src/test => tests}/ui/resolve/issue-85348.rs | 0 {src/test => tests}/ui/resolve/issue-85348.stderr | 0 {src/test => tests}/ui/resolve/issue-85671.rs | 0 {src/test => tests}/ui/resolve/issue-88472.rs | 0 {src/test => tests}/ui/resolve/issue-88472.stderr | 0 {src/test => tests}/ui/resolve/issue-90113.rs | 0 {src/test => tests}/ui/resolve/issue-90113.stderr | 0 {src/test => tests}/ui/resolve/levenshtein.rs | 0 {src/test => tests}/ui/resolve/levenshtein.stderr | 0 .../ui/resolve/macro-determinacy-non-module.rs | 0 .../ui/resolve/missing-in-namespace.rs | 0 .../ui/resolve/missing-in-namespace.stderr | 0 .../test => tests}/ui/resolve/name-clash-nullary.rs | 0 .../ui/resolve/name-clash-nullary.stderr | 0 .../ui/resolve/name-collision-in-trait-fn-sig.rs | 0 .../ui/resolve/no-implicit-prelude-nested.rs | 0 .../ui/resolve/no-implicit-prelude-nested.stderr | 0 .../ui/resolve/no-implicit-prelude.rs | 0 .../ui/resolve/no-implicit-prelude.stderr | 0 {src/test => tests}/ui/resolve/no-std-1.rs | 0 {src/test => tests}/ui/resolve/no-std-2.rs | 0 {src/test => tests}/ui/resolve/no-std-3.rs | 0 .../test => tests}/ui/resolve/pathless-extern-ok.rs | 0 ...oint-at-type-parameter-shadowing-another-type.rs | 0 ...-at-type-parameter-shadowing-another-type.stderr | 0 {src/test => tests}/ui/resolve/privacy-enum-ctor.rs | 0 .../ui/resolve/privacy-enum-ctor.stderr | 0 .../ui/resolve/privacy-struct-ctor.rs | 0 .../ui/resolve/privacy-struct-ctor.stderr | 0 {src/test => tests}/ui/resolve/raw-ident-in-path.rs | 0 .../ui/resolve/raw-ident-in-path.stderr | 0 .../ui/resolve/resolve-assoc-suggestions.rs | 0 .../ui/resolve/resolve-assoc-suggestions.stderr | 0 .../ui/resolve/resolve-bad-import-prefix.rs | 0 .../ui/resolve/resolve-bad-import-prefix.stderr | 0 .../ui/resolve/resolve-bad-visibility.rs | 0 .../ui/resolve/resolve-bad-visibility.stderr | 0 ...resolve-conflict-extern-crate-vs-extern-crate.rs | 0 ...lve-conflict-extern-crate-vs-extern-crate.stderr | 0 .../resolve-conflict-import-vs-extern-crate.rs | 0 .../resolve-conflict-import-vs-extern-crate.stderr | 0 .../resolve/resolve-conflict-import-vs-import.fixed | 0 .../ui/resolve/resolve-conflict-import-vs-import.rs | 0 .../resolve-conflict-import-vs-import.stderr | 0 .../resolve-conflict-item-vs-extern-crate.rs | 0 .../resolve-conflict-item-vs-extern-crate.stderr | 0 .../ui/resolve/resolve-conflict-item-vs-import.rs | 0 .../resolve/resolve-conflict-item-vs-import.stderr | 0 .../ui/resolve/resolve-conflict-type-vs-import.rs | 0 .../resolve/resolve-conflict-type-vs-import.stderr | 0 .../ui/resolve/resolve-hint-macro.fixed | 0 .../test => tests}/ui/resolve/resolve-hint-macro.rs | 0 .../ui/resolve/resolve-hint-macro.stderr | 0 .../ui/resolve/resolve-inconsistent-binding-mode.rs | 0 .../resolve-inconsistent-binding-mode.stderr | 0 .../ui/resolve/resolve-inconsistent-names.rs | 0 .../ui/resolve/resolve-inconsistent-names.stderr | 0 .../test => tests}/ui/resolve/resolve-issue-2428.rs | 0 {src/test => tests}/ui/resolve/resolve-label.rs | 0 {src/test => tests}/ui/resolve/resolve-label.stderr | 0 .../ui/resolve/resolve-primitive-fallback.rs | 0 .../ui/resolve/resolve-primitive-fallback.stderr | 0 .../ui/resolve/resolve-pseudo-shadowing.rs | 0 .../ui/resolve/resolve-self-in-impl-2.rs | 0 .../ui/resolve/resolve-self-in-impl-2.stderr | 0 .../ui/resolve/resolve-self-in-impl.rs | 0 .../ui/resolve/resolve-self-in-impl.stderr | 0 .../ui/resolve/resolve-speculative-adjustment.rs | 0 .../resolve/resolve-speculative-adjustment.stderr | 0 .../resolve/resolve-type-param-in-item-in-trait.rs | 0 .../resolve-type-param-in-item-in-trait.stderr | 0 .../ui/resolve/resolve-unknown-trait.rs | 0 .../ui/resolve/resolve-unknown-trait.stderr | 0 .../ui/resolve/resolve-variant-assoc-item.rs | 0 .../ui/resolve/resolve-variant-assoc-item.stderr | 0 .../test => tests}/ui/resolve/shadow-const-param.rs | 0 .../ui/resolve/shadow-const-param.stderr | 0 .../ui/resolve/suggest-path-for-tuple-struct.rs | 0 .../ui/resolve/suggest-path-for-tuple-struct.stderr | 0 .../resolve/suggest-path-instead-of-mod-dot-item.rs | 0 .../suggest-path-instead-of-mod-dot-item.stderr | 0 .../ui/resolve/token-error-correct-2.rs | 0 .../ui/resolve/token-error-correct-2.stderr | 0 .../ui/resolve/token-error-correct-3.rs | 0 .../ui/resolve/token-error-correct-3.stderr | 0 .../ui/resolve/token-error-correct-4.fixed | 0 .../ui/resolve/token-error-correct-4.rs | 0 .../ui/resolve/token-error-correct-4.stderr | 0 .../ui/resolve/token-error-correct.rs | 0 .../ui/resolve/token-error-correct.stderr | 0 .../test => tests}/ui/resolve/tuple-struct-alias.rs | 0 .../ui/resolve/tuple-struct-alias.stderr | 0 ...or-variable-with-name-similar-to-struct-field.rs | 0 ...ariable-with-name-similar-to-struct-field.stderr | 0 .../ui/resolve/typo-suggestion-mistyped-in-path.rs | 0 .../resolve/typo-suggestion-mistyped-in-path.stderr | 0 .../ui/resolve/typo-suggestion-named-underscore.rs | 0 .../resolve/typo-suggestion-named-underscore.stderr | 0 .../unboxed-closure-sugar-nonexistent-trait.rs | 0 .../unboxed-closure-sugar-nonexistent-trait.stderr | 0 .../ui/resolve/unresolved_static_type_field.rs | 0 .../ui/resolve/unresolved_static_type_field.stderr | 0 .../ui/resolve/use-self-in-inner-fn.rs | 0 .../ui/resolve/use-self-in-inner-fn.stderr | 0 {src/test => tests}/ui/resolve/use_suggestion.rs | 0 .../test => tests}/ui/resolve/use_suggestion.stderr | 0 .../ui/resolve/use_suggestion_placement.fixed | 0 .../ui/resolve/use_suggestion_placement.rs | 0 .../ui/resolve/use_suggestion_placement.stderr | 0 .../ui/resolve/visibility-indeterminate.rs | 0 .../ui/resolve/visibility-indeterminate.stderr | 0 .../ui/resource-assign-is-not-copy.rs | 0 {src/test => tests}/ui/resource-destruct.rs | 0 {src/test => tests}/ui/ret-bang.rs | 0 {src/test => tests}/ui/ret-non-nil.rs | 0 {src/test => tests}/ui/ret-non-nil.stderr | 0 {src/test => tests}/ui/return-disjoint-regions.rs | 0 .../ui/return-disjoint-regions.stderr | 0 {src/test => tests}/ui/return-nil.rs | 0 {src/test => tests}/ui/return/issue-64620.rs | 0 {src/test => tests}/ui/return/issue-64620.stderr | 0 .../return/issue-82612-return-mutable-reference.rs | 0 .../issue-82612-return-mutable-reference.stderr | 0 .../ui/return/issue-86188-return-not-in-fn-body.rs | 0 .../return/issue-86188-return-not-in-fn-body.stderr | 0 .../ui/return/return-from-diverging.rs | 0 .../ui/return/return-from-diverging.stderr | 0 .../ui/return/return-impl-trait-bad.rs | 0 .../ui/return/return-impl-trait-bad.stderr | 0 .../ui/return/return-impl-trait.fixed | 0 {src/test => tests}/ui/return/return-impl-trait.rs | 0 .../ui/return/return-impl-trait.stderr | 0 .../ui/return/return-match-array-const.rs | 0 .../ui/return/return-match-array-const.stderr | 0 {src/test => tests}/ui/return/return-type.rs | 0 {src/test => tests}/ui/return/return-type.stderr | 0 .../ui/return/return-unit-from-diverging.rs | 0 .../ui/return/return-unit-from-diverging.stderr | 0 .../ui/return/tail-expr-as-potential-return.rs | 0 .../ui/return/tail-expr-as-potential-return.stderr | 0 .../bind-by-move-no-guards.rs | 0 .../former-E0008-now-pass.rs | 0 .../rfc-basic-examples.rs | 0 .../rfc-reject-double-move-across-arms.rs | 0 .../rfc-reject-double-move-across-arms.stderr | 0 .../rfc-reject-double-move-in-first-arm.rs | 0 .../rfc-reject-double-move-in-first-arm.stderr | 0 .../allow-hide-behind-direct-unsafe-ptr-embedded.rs | 0 .../allow-hide-behind-direct-unsafe-ptr-param.rs | 0 ...llow-hide-behind-indirect-unsafe-ptr-embedded.rs | 0 .../allow-hide-behind-indirect-unsafe-ptr-param.rs | 0 .../allow-use-behind-cousin-variant.rs | 0 .../cant-hide-behind-direct-struct-embedded.rs | 0 .../cant-hide-behind-direct-struct-embedded.stderr | 0 .../cant-hide-behind-direct-struct-param.rs | 0 .../cant-hide-behind-direct-struct-param.stderr | 0 .../cant-hide-behind-doubly-indirect-embedded.rs | 0 ...cant-hide-behind-doubly-indirect-embedded.stderr | 0 .../cant-hide-behind-doubly-indirect-param.rs | 0 .../cant-hide-behind-doubly-indirect-param.stderr | 0 .../cant-hide-behind-indirect-struct-embedded.rs | 0 ...cant-hide-behind-indirect-struct-embedded.stderr | 0 .../cant-hide-behind-indirect-struct-param.rs | 0 .../cant-hide-behind-indirect-struct-param.stderr | 0 .../feature-gate.no_gate.stderr | 0 .../feature-gate.rs | 0 .../feature-gate.with_gate.stderr | 0 .../fn-ptr-is-structurally-matchable.rs | 0 .../issue-61188-match-slice-forbidden-without-eq.rs | 0 ...ue-61188-match-slice-forbidden-without-eq.stderr | 0 ...ssue-62307-match-ref-ref-forbidden-without-eq.rs | 0 ...-62307-match-ref-ref-forbidden-without-eq.stderr | 0 .../issue-63479-match-fnptr.rs | 0 .../issue-63479-match-fnptr.stderr | 0 .../issue-6804.rs | 0 .../issue-6804.stderr | 0 ...ch-empty-array-allowed-without-eq-issue-62336.rs | 0 .../match-forbidden-without-eq.rs | 0 .../match-forbidden-without-eq.stderr | 0 .../match-nonempty-array-forbidden-without-eq.rs | 0 ...match-nonempty-array-forbidden-without-eq.stderr | 0 .../match-requires-both-partialeq-and-eq.rs | 0 .../match-requires-both-partialeq-and-eq.stderr | 0 .../phantom-data-is-structurally-matchable.rs | 0 .../ui/rfc-1717-dllimport/missing-link-attr.rs | 0 .../ui/rfc-1717-dllimport/missing-link-attr.stderr | 0 .../ui/rfc-1717-dllimport/multiple-renames.rs | 0 .../ui/rfc-1717-dllimport/multiple-renames.stderr | 0 .../ui/rfc-1717-dllimport/rename-modifiers.rs | 0 .../ui/rfc-1717-dllimport/rename-modifiers.stderr | 0 .../ui/rfc-1717-dllimport/rename-to-empty.rs | 0 .../ui/rfc-1717-dllimport/rename-to-empty.stderr | 0 .../ui/rfc-1937-termination-trait/issue-103052-1.rs | 0 .../issue-103052-1.stderr | 0 .../ui/rfc-1937-termination-trait/issue-103052-2.rs | 0 .../issue-103052-2.stderr | 0 .../termination-trait-for-box-dyn-error.rs | 0 .../termination-trait-for-never.rs | 0 .../termination-trait-for-result-box-error_err.rs | 0 .../termination-trait-for-str.rs | 0 .../termination-trait-impl-trait.rs | 0 .../termination-trait-impl-trait.stderr | 0 .../termination-trait-in-test-should-panic.rs | 0 .../termination-trait-in-test-should-panic.stderr | 0 .../termination-trait-in-test.rs | 0 .../termination-trait-main-i32.rs | 0 .../termination-trait-main-i32.stderr | 0 .../termination-trait-main-wrong-type.rs | 0 .../termination-trait-main-wrong-type.stderr | 0 .../termination-trait-not-satisfied.rs | 0 .../termination-trait-not-satisfied.stderr | 0 .../termination-trait-test-wrong-type.rs | 0 .../termination-trait-test-wrong-type.stderr | 0 .../borrowck-issue-49631.rs | 0 .../borrowck-issue-49631.stderr | 0 .../ui/rfc-2005-default-binding-mode/const.rs | 0 .../ui/rfc-2005-default-binding-mode/const.stderr | 0 .../ui/rfc-2005-default-binding-mode/enum.rs | 0 .../ui/rfc-2005-default-binding-mode/enum.stderr | 0 .../rfc-2005-default-binding-mode/explicit-mut.rs | 0 .../explicit-mut.stderr | 0 .../ui/rfc-2005-default-binding-mode/for.rs | 0 .../ui/rfc-2005-default-binding-mode/for.stderr | 0 .../rfc-2005-default-binding-mode/issue-44912-or.rs | 0 .../issue-44912-or.stderr | 0 .../ui/rfc-2005-default-binding-mode/lit.rs | 0 .../ui/rfc-2005-default-binding-mode/lit.stderr | 0 .../no-double-error.rs | 0 .../no-double-error.stderr | 0 .../ui/rfc-2005-default-binding-mode/slice.rs | 0 .../ui/rfc-2005-default-binding-mode/slice.stderr | 0 .../ui/rfc-2008-non-exhaustive/auxiliary/enums.rs | 0 .../auxiliary/monovariants.rs | 0 .../ui/rfc-2008-non-exhaustive/auxiliary/structs.rs | 0 .../rfc-2008-non-exhaustive/auxiliary/unstable.rs | 0 .../rfc-2008-non-exhaustive/auxiliary/variants.rs | 0 .../rfc-2008-non-exhaustive/borrowck-exhaustive.rs | 0 .../borrowck-non-exhaustive.rs | 0 .../borrowck-non-exhaustive.stderr | 0 .../ui/rfc-2008-non-exhaustive/enum-as-cast.rs | 0 .../ui/rfc-2008-non-exhaustive/enum-as-cast.stderr | 0 .../ui/rfc-2008-non-exhaustive/enum.rs | 0 .../ui/rfc-2008-non-exhaustive/enum.stderr | 0 .../ui/rfc-2008-non-exhaustive/enum_same_crate.rs | 0 .../enum_same_crate_empty_match.rs | 0 .../enum_same_crate_empty_match.stderr | 0 .../improper_ctypes/auxiliary/types.rs | 0 .../improper_ctypes/extern_crate_improper.rs | 0 .../improper_ctypes/extern_crate_improper.stderr | 0 .../improper_ctypes/same_crate_proper.rs | 0 .../ui/rfc-2008-non-exhaustive/invalid-attribute.rs | 0 .../invalid-attribute.stderr | 0 .../ui/rfc-2008-non-exhaustive/omitted-patterns.rs | 0 .../rfc-2008-non-exhaustive/omitted-patterns.stderr | 0 .../stable-omitted-patterns.rs | 0 .../stable-omitted-patterns.stderr | 0 .../ui/rfc-2008-non-exhaustive/struct.rs | 0 .../ui/rfc-2008-non-exhaustive/struct.stderr | 0 .../rfc-2008-non-exhaustive/structs_same_crate.rs | 0 .../uninhabited/auxiliary/uninhabited.rs | 0 .../uninhabited/coercions.rs | 0 .../uninhabited/coercions.stderr | 0 .../uninhabited/coercions_same_crate.rs | 0 .../uninhabited/coercions_same_crate.stderr | 0 .../uninhabited/indirect_match.rs | 0 .../uninhabited/indirect_match.stderr | 0 .../uninhabited/indirect_match_same_crate.rs | 0 .../uninhabited/indirect_match_same_crate.stderr | 0 .../indirect_match_with_exhaustive_patterns.rs | 0 .../indirect_match_with_exhaustive_patterns.stderr | 0 ...ect_match_with_exhaustive_patterns_same_crate.rs | 0 .../uninhabited/issue-65157-repeated-match-arm.rs | 0 .../issue-65157-repeated-match-arm.stderr | 0 .../ui/rfc-2008-non-exhaustive/uninhabited/match.rs | 0 .../uninhabited/match.stderr | 0 .../uninhabited/match_same_crate.rs | 0 .../uninhabited/match_same_crate.stderr | 0 .../uninhabited/match_with_exhaustive_patterns.rs | 0 .../match_with_exhaustive_patterns.stderr | 0 .../match_with_exhaustive_patterns_same_crate.rs | 0 .../rfc-2008-non-exhaustive/uninhabited/patterns.rs | 0 .../uninhabited/patterns_same_crate.rs | 0 .../uninhabited/patterns_same_crate.stderr | 0 .../ui/rfc-2008-non-exhaustive/variant.rs | 0 .../ui/rfc-2008-non-exhaustive/variant.stderr | 0 .../variants_fictive_visibility.rs | 0 .../rfc-2008-non-exhaustive/variants_same_crate.rs | 0 .../downcast-unsafe-trait-objects.rs | 0 .../manual-self-impl-for-unsafe-obj.rs | 0 .../static-dispatch-unsafe-object.rs | 0 .../ui/rfc-2091-track-caller/call-chain.rs | 0 .../caller-location-fnptr-rt-ctfe-equiv.rs | 0 .../caller-location-fnptr-rt-ctfe-equiv.stderr | 0 .../caller-location-intrinsic.rs | 0 .../rfc-2091-track-caller/const-caller-location.rs | 0 .../diverging-caller-location.rs | 0 .../ui/rfc-2091-track-caller/error-odd-syntax.rs | 0 .../rfc-2091-track-caller/error-odd-syntax.stderr | 0 .../rfc-2091-track-caller/error-with-invalid-abi.rs | 0 .../error-with-invalid-abi.stderr | 0 .../ui/rfc-2091-track-caller/error-with-main.rs | 0 .../ui/rfc-2091-track-caller/error-with-main.stderr | 0 .../ui/rfc-2091-track-caller/error-with-naked.rs | 0 .../rfc-2091-track-caller/error-with-naked.stderr | 0 .../ui/rfc-2091-track-caller/error-with-start.rs | 0 .../rfc-2091-track-caller/error-with-start.stderr | 0 .../ui/rfc-2091-track-caller/intrinsic-wrapper.rs | 0 .../ui/rfc-2091-track-caller/macro-declaration.rs | 0 .../ui/rfc-2091-track-caller/only-for-fns.rs | 0 .../ui/rfc-2091-track-caller/only-for-fns.stderr | 0 .../test => tests}/ui/rfc-2091-track-caller/pass.rs | 0 .../ui/rfc-2091-track-caller/std-panic-locations.rs | 0 .../rfc-2091-track-caller/track-caller-attribute.rs | 0 .../ui/rfc-2091-track-caller/track-caller-ffi.rs | 0 .../ui/rfc-2091-track-caller/tracked-closure.rs | 0 .../tracked-fn-ptr-with-arg.rs | 0 .../ui/rfc-2091-track-caller/tracked-fn-ptr.rs | 0 .../ui/rfc-2091-track-caller/tracked-trait-impls.rs | 0 .../ui/rfc-2091-track-caller/tracked-trait-obj.rs | 0 .../ui/rfc-2093-infer-outlives/cross-crate.rs | 0 .../ui/rfc-2093-infer-outlives/cross-crate.stderr | 0 .../ui/rfc-2093-infer-outlives/dont-infer-static.rs | 0 .../dont-infer-static.stderr | 0 .../ui/rfc-2093-infer-outlives/enum.rs | 0 .../ui/rfc-2093-infer-outlives/enum.stderr | 0 .../ui/rfc-2093-infer-outlives/explicit-dyn.rs | 0 .../ui/rfc-2093-infer-outlives/explicit-dyn.stderr | 0 .../ui/rfc-2093-infer-outlives/explicit-enum.rs | 0 .../ui/rfc-2093-infer-outlives/explicit-enum.stderr | 0 .../rfc-2093-infer-outlives/explicit-projection.rs | 0 .../explicit-projection.stderr | 0 .../ui/rfc-2093-infer-outlives/explicit-struct.rs | 0 .../rfc-2093-infer-outlives/explicit-struct.stderr | 0 .../ui/rfc-2093-infer-outlives/explicit-union.rs | 0 .../rfc-2093-infer-outlives/explicit-union.stderr | 0 .../ui/rfc-2093-infer-outlives/issue-54467.rs | 0 .../ui/rfc-2093-infer-outlives/nested-enum.rs | 0 .../ui/rfc-2093-infer-outlives/nested-enum.stderr | 0 .../ui/rfc-2093-infer-outlives/nested-regions.rs | 0 .../rfc-2093-infer-outlives/nested-regions.stderr | 0 .../ui/rfc-2093-infer-outlives/nested-structs.rs | 0 .../rfc-2093-infer-outlives/nested-structs.stderr | 0 .../ui/rfc-2093-infer-outlives/nested-union.rs | 0 .../ui/rfc-2093-infer-outlives/nested-union.stderr | 0 .../ui/rfc-2093-infer-outlives/privacy.rs | 0 .../ui/rfc-2093-infer-outlives/projection.rs | 0 .../ui/rfc-2093-infer-outlives/projection.stderr | 0 .../ui/rfc-2093-infer-outlives/reference.rs | 0 .../ui/rfc-2093-infer-outlives/reference.stderr | 0 .../rfc-2093-infer-outlives/regions-enum-not-wf.rs | 0 .../regions-enum-not-wf.stderr | 0 .../regions-outlives-nominal-type-region-rev.rs | 0 .../regions-outlives-nominal-type-region-rev.stderr | 0 .../regions-outlives-nominal-type-region.rs | 0 .../regions-outlives-nominal-type-region.stderr | 0 .../regions-outlives-nominal-type-type-rev.rs | 0 .../regions-outlives-nominal-type-type-rev.stderr | 0 .../regions-outlives-nominal-type-type.rs | 0 .../regions-outlives-nominal-type-type.stderr | 0 .../regions-struct-not-wf.rs | 0 .../regions-struct-not-wf.stderr | 0 .../ui/rfc-2093-infer-outlives/self-dyn.rs | 0 .../ui/rfc-2093-infer-outlives/self-dyn.stderr | 0 .../ui/rfc-2093-infer-outlives/self-structs.rs | 0 .../ui/rfc-2093-infer-outlives/self-structs.stderr | 0 .../rfc-2126-crate-paths/crate-path-non-absolute.rs | 0 .../crate-path-non-absolute.stderr | 0 .../keyword-crate-as-identifier.rs | 0 .../keyword-crate-as-identifier.stderr | 0 .../auxiliary/xcrate.rs | 0 .../non-existent-1.rs | 0 .../non-existent-1.stderr | 0 .../non-existent-2.rs | 0 .../non-existent-2.stderr | 0 .../non-existent-3.rs | 0 .../non-existent-3.stderr | 0 .../rfc-2126-extern-absolute-paths/not-allowed.rs | 0 .../not-allowed.stderr | 0 .../single-segment.rs | 0 .../single-segment.stderr | 0 .../ui/rfc-2294-if-let-guard/bindings.rs | 0 .../ui/rfc-2294-if-let-guard/bindings.stderr | 0 .../ui/rfc-2294-if-let-guard/feature-gate.rs | 0 .../ui/rfc-2294-if-let-guard/feature-gate.stderr | 0 .../ui/rfc-2294-if-let-guard/run-pass.rs | 0 .../ui/rfc-2294-if-let-guard/typeck.rs | 0 .../ui/rfc-2294-if-let-guard/typeck.stderr | 0 .../ui/rfc-2294-if-let-guard/warns.rs | 0 .../ui/rfc-2294-if-let-guard/warns.stderr | 0 .../ui/rfc-2306/convert-id-const-with-gate.rs | 0 .../dbg-macro-expected-behavior.rs | 0 .../dbg-macro-expected-behavior.run.stderr | 0 .../rfc-2361-dbg-macro/dbg-macro-move-semantics.rs | 0 .../dbg-macro-move-semantics.stderr | 0 .../rfc-2361-dbg-macro/dbg-macro-requires-debug.rs | 0 .../dbg-macro-requires-debug.stderr | 0 .../feature-gate-do_not_recommend.rs | 0 .../feature-gate-do_not_recommend.stderr | 0 .../rfc-2397-do-not-recommend/unstable-feature.rs | 0 .../unstable-feature.stderr | 0 .../mod_file_nonascii_with_path_allowed-aux.rs | 0 .../ui/rfc-2457/crate_name_nonascii_forbidden-1.rs | 0 .../rfc-2457/crate_name_nonascii_forbidden-1.stderr | 0 .../ui/rfc-2457/crate_name_nonascii_forbidden-2.rs | 0 .../rfc-2457/crate_name_nonascii_forbidden-2.stderr | 0 .../ui/rfc-2457/extern_block_nonascii_forbidden.rs | 0 .../rfc-2457/extern_block_nonascii_forbidden.stderr | 0 .../test => tests}/ui/rfc-2457/idents-normalized.rs | 0 .../ui/rfc-2457/mod_file_nonascii_forbidden.rs | 0 .../ui/rfc-2457/mod_file_nonascii_forbidden.stderr | 0 .../rfc-2457/mod_file_nonascii_with_path_allowed.rs | 0 .../ui/rfc-2457/mod_inline_nonascii_allowed.rs | 0 .../ui/rfc-2457/no_mangle_nonascii_forbidden.rs | 0 .../ui/rfc-2457/no_mangle_nonascii_forbidden.stderr | 0 .../ast-lowering-does-not-wrap-let-chains.rs | 0 .../ui/rfc-2497-if-let-chains/ast-pretty-check.rs | 0 .../rfc-2497-if-let-chains/ast-pretty-check.stdout | 0 .../ui/rfc-2497-if-let-chains/chains-without-let.rs | 0 .../chains-without-let.stderr | 0 .../rfc-2497-if-let-chains/disallowed-positions.rs | 0 .../disallowed-positions.stderr | 0 ...at-let-else-does-not-interact-with-let-chains.rs | 0 ...et-else-does-not-interact-with-let-chains.stderr | 0 .../ui/rfc-2497-if-let-chains/feature-gate.rs | 0 .../ui/rfc-2497-if-let-chains/feature-gate.stderr | 0 .../invalid-let-in-a-valid-let-context.rs | 0 .../invalid-let-in-a-valid-let-context.stderr | 0 .../irrefutable-lets.disallowed.stderr | 0 .../ui/rfc-2497-if-let-chains/irrefutable-lets.rs | 0 .../ui/rfc-2497-if-let-chains/issue-88498.rs | 0 .../ui/rfc-2497-if-let-chains/issue-90722.rs | 0 .../ui/rfc-2497-if-let-chains/issue-92145.rs | 0 .../ui/rfc-2497-if-let-chains/issue-93150.rs | 0 .../ui/rfc-2497-if-let-chains/issue-93150.stderr | 0 .../ui/rfc-2497-if-let-chains/issue-99938.rs | 0 .../rfc-2497-if-let-chains/no-double-assigments.rs | 0 .../rfc-2497-if-let-chains/protect-precedences.rs | 0 .../protect-precedences.stderr | 0 .../ui/rfc-2497-if-let-chains/then-else-blocks.rs | 0 .../ui/rfc-2565-param-attrs/attr-without-param.rs | 0 .../rfc-2565-param-attrs/attr-without-param.stderr | 0 .../ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs | 0 .../rfc-2565-param-attrs/auxiliary/param-attrs.rs | 0 .../issue-64682-dropping-first-attrs-in-impl-fns.rs | 0 .../ui/rfc-2565-param-attrs/param-attrs-2018.rs | 0 .../ui/rfc-2565-param-attrs/param-attrs-2018.stderr | 0 .../ui/rfc-2565-param-attrs/param-attrs-allowed.rs | 0 .../param-attrs-builtin-attrs.rs | 0 .../param-attrs-builtin-attrs.stderr | 0 .../ui/rfc-2565-param-attrs/param-attrs-cfg.rs | 0 .../ui/rfc-2565-param-attrs/param-attrs-cfg.stderr | 0 .../ui/rfc-2565-param-attrs/param-attrs-pretty.rs | 0 .../proc-macro-cannot-be-used.rs | 0 .../proc-macro-cannot-be-used.stderr | 0 .../import-name-type-invalid-format.rs | 0 .../import-name-type-invalid-format.stderr | 0 .../rfc-2627-raw-dylib/import-name-type-multiple.rs | 0 .../import-name-type-multiple.stderr | 0 .../import-name-type-unknown-value.rs | 0 .../import-name-type-unknown-value.stderr | 0 .../import-name-type-unsupported-link-kind.rs | 0 .../import-name-type-unsupported-link-kind.stderr | 0 .../rfc-2627-raw-dylib/import-name-type-x86-only.rs | 0 .../import-name-type-x86-only.stderr | 0 .../ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs | 0 .../rfc-2627-raw-dylib/link-ordinal-and-name.stderr | 0 .../link-ordinal-invalid-format.rs | 0 .../link-ordinal-invalid-format.stderr | 0 .../link-ordinal-missing-argument.rs | 0 .../link-ordinal-missing-argument.stderr | 0 .../ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs | 0 .../rfc-2627-raw-dylib/link-ordinal-multiple.stderr | 0 .../link-ordinal-not-foreign-fn.rs | 0 .../link-ordinal-not-foreign-fn.stderr | 0 .../ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs | 0 .../link-ordinal-too-large.stderr | 0 .../link-ordinal-too-many-arguments.rs | 0 .../link-ordinal-too-many-arguments.stderr | 0 .../link-ordinal-unsupported-link-kind.rs | 0 .../link-ordinal-unsupported-link-kind.stderr | 0 .../ui/rfc-2627-raw-dylib/multiple-declarations.rs | 0 .../rfc-2627-raw-dylib/multiple-declarations.stderr | 0 .../ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs | 0 .../raw-dylib-windows-only.stderr | 0 .../ui/rfc-2627-raw-dylib/unsupported-abi.rs | 0 .../ui/rfc-2627-raw-dylib/unsupported-abi.stderr | 0 .../assoc-type-const-bound-usage.rs | 0 .../ui/rfc-2632-const-trait-impl/assoc-type.rs | 0 .../ui/rfc-2632-const-trait-impl/assoc-type.stderr | 0 .../ui/rfc-2632-const-trait-impl/attr-misuse.rs | 0 .../ui/rfc-2632-const-trait-impl/attr-misuse.stderr | 0 .../auxiliary/cross-crate.rs | 0 .../auxiliary/staged-api.rs | 0 .../call-const-trait-method-fail.rs | 0 .../call-const-trait-method-fail.stderr | 0 .../call-const-trait-method-pass.rs | 0 .../call-generic-in-impl.rs | 0 .../call-generic-method-chain.rs | 0 .../call-generic-method-dup-bound.rs | 0 .../call-generic-method-fail.rs | 0 .../call-generic-method-fail.stderr | 0 .../call-generic-method-nonconst-bound.rs | 0 .../call-generic-method-nonconst.rs | 0 .../call-generic-method-nonconst.stderr | 0 .../call-generic-method-pass.rs | 0 .../const-and-non-const-impl.rs | 0 .../const-and-non-const-impl.stderr | 0 .../const-check-fns-in-const-impl.rs | 0 .../const-check-fns-in-const-impl.stderr | 0 .../const-closure-trait-method-fail.rs | 0 .../const-closure-trait-method-fail.stderr | 0 .../const-closure-trait-method.rs | 0 .../ui/rfc-2632-const-trait-impl/const-closures.rs | 0 .../const-default-method-bodies.rs | 0 .../const-default-method-bodies.stderr | 0 .../rfc-2632-const-trait-impl/const-drop-bound.rs | 0 .../const-drop-fail.precise.stderr | 0 .../ui/rfc-2632-const-trait-impl/const-drop-fail.rs | 0 .../const-drop-fail.stock.stderr | 0 .../ui/rfc-2632-const-trait-impl/const-drop.rs | 0 .../const-impl-norecover.rs | 0 .../const-impl-norecover.stderr | 0 .../const-impl-recovery.rs | 0 .../const-impl-recovery.stderr | 0 .../const-impl-requires-const-trait.rs | 0 .../const-impl-requires-const-trait.stderr | 0 .../rfc-2632-const-trait-impl/const-impl-trait.rs | 0 .../const_derives/derive-const-gate.rs | 0 .../const_derives/derive-const-gate.stderr | 0 .../const_derives/derive-const-non-const-type.rs | 0 .../derive-const-non-const-type.stderr | 0 .../const_derives/derive-const-use.rs | 0 .../cross-crate-default-method-body-is-const.rs | 0 .../cross-crate.gatednc.stderr | 0 .../ui/rfc-2632-const-trait-impl/cross-crate.rs | 0 .../cross-crate.stock.stderr | 0 .../cross-crate.stocknc.stderr | 0 .../default-method-body-is-const-body-checking.rs | 0 ...efault-method-body-is-const-body-checking.stderr | 0 .../default-method-body-is-const-same-trait-ck.rs | 0 ...efault-method-body-is-const-same-trait-ck.stderr | 0 .../default-method-body-is-const-with-staged-api.rs | 0 .../feature-gate.gated.stderr | 0 .../ui/rfc-2632-const-trait-impl/feature-gate.rs | 0 .../feature-gate.stock.stderr | 0 .../ui/rfc-2632-const-trait-impl/generic-bound.rs | 0 .../ui/rfc-2632-const-trait-impl/hir-const-check.rs | 0 .../hir-const-check.stderr | 0 .../impl-tilde-const-trait.rs | 0 .../impl-tilde-const-trait.stderr | 0 .../impl-with-default-fn-fail.rs | 0 .../impl-with-default-fn-fail.stderr | 0 .../impl-with-default-fn-pass.rs | 0 .../inherent-impl-const-bounds.rs | 0 .../ui/rfc-2632-const-trait-impl/inherent-impl.rs | 0 .../rfc-2632-const-trait-impl/inherent-impl.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-100222.rs | 0 .../ui/rfc-2632-const-trait-impl/issue-102156.rs | 0 .../rfc-2632-const-trait-impl/issue-102156.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-102985.rs | 0 .../rfc-2632-const-trait-impl/issue-102985.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-103677.rs | 0 .../ui/rfc-2632-const-trait-impl/issue-79450.rs | 0 .../ui/rfc-2632-const-trait-impl/issue-79450.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-88155.rs | 0 .../ui/rfc-2632-const-trait-impl/issue-88155.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-90052.rs | 0 .../ui/rfc-2632-const-trait-impl/issue-90052.stderr | 0 .../ui/rfc-2632-const-trait-impl/issue-92111.rs | 0 .../issue-92230-wf-super-trait-env.rs | 0 .../ui/rfc-2632-const-trait-impl/nested-closure.rs | 0 .../non-const-op-in-closure-in-const.rs | 0 ...nst-default-bound-non-const-specialized-bound.rs | 0 ...default-bound-non-const-specialized-bound.stderr | 0 .../const-default-const-specialized.rs | 0 ...const-default-impl-non-const-specialized-impl.rs | 0 ...t-default-impl-non-const-specialized-impl.stderr | 0 .../specialization/default-keyword.rs | 0 .../issue-95186-specialize-on-tilde-const.rs | 0 ...ue-95187-same-trait-bound-different-constness.rs | 0 .../non-const-default-const-specialized.rs | 0 .../specializing-constness-2.rs | 0 .../specializing-constness-2.stderr | 0 .../specializing-constness.rs | 0 .../specializing-constness.stderr | 0 .../staged-api-user-crate.rs | 0 .../staged-api-user-crate.stderr | 0 .../ui/rfc-2632-const-trait-impl/staged-api.rs | 0 .../staged-api.stable.stderr | 0 .../staged-api.unstable.stderr | 0 .../static-const-trait-bound.rs | 0 .../ui/rfc-2632-const-trait-impl/std-impl-gate.rs | 0 .../std-impl-gate.stock.stderr | 0 .../super-traits-fail-2.nn.stderr | 0 .../super-traits-fail-2.ny.stderr | 0 .../super-traits-fail-2.rs | 0 .../super-traits-fail-2.yn.stderr | 0 .../super-traits-fail-2.yy.stderr | 0 .../super-traits-fail-3.nn.stderr | 0 .../super-traits-fail-3.ny.stderr | 0 .../super-traits-fail-3.rs | 0 .../super-traits-fail-3.yn.stderr | 0 .../rfc-2632-const-trait-impl/super-traits-fail.rs | 0 .../super-traits-fail.stderr | 0 .../ui/rfc-2632-const-trait-impl/super-traits.rs | 0 .../ui/rfc-2632-const-trait-impl/syntax.rs | 0 .../tilde-const-and-const-params.rs | 0 .../tilde-const-and-const-params.stderr | 0 .../tilde-const-invalid-places.rs | 0 .../tilde-const-invalid-places.stderr | 0 .../rfc-2632-const-trait-impl/tilde-const-syntax.rs | 0 .../ui/rfc-2632-const-trait-impl/tilde-twice.rs | 0 .../ui/rfc-2632-const-trait-impl/tilde-twice.stderr | 0 .../tilde_const_on_impl_bound.rs | 0 .../trait-default-body-stability.rs | 0 .../trait-where-clause-const.rs | 0 .../trait-where-clause-const.stderr | 0 .../trait-where-clause-run.rs | 0 .../trait-where-clause-self-referential.rs | 0 .../rfc-2632-const-trait-impl/trait-where-clause.rs | 0 .../trait-where-clause.stderr | 0 .../ui/rfc-2632-const-trait-impl/without-tilde.rs | 0 .../rfc-2632-const-trait-impl/without-tilde.stderr | 0 {src/test => tests}/ui/rfcs/rfc-1014-2.rs | 0 {src/test => tests}/ui/rfcs/rfc-1014.rs | 0 .../ui/rfcs/rfc-1789-as-cell/from-mut.rs | 0 .../termination-trait-for-box-dyn-error.rs | 0 .../termination-trait-for-empty.rs | 0 .../termination-trait-for-exitcode.rs | 0 .../termination-trait-for-impl-termination.rs | 0 .../termination-trait-for-result-box-error_ok.rs | 0 .../termination-trait-for-result.rs | 0 .../termination-trait-for-str.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/box.rs | 0 .../rfcs/rfc-2005-default-binding-mode/constref.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/enum.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/for.rs | 0 .../rfcs/rfc-2005-default-binding-mode/general.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/lit.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/range.rs | 0 .../rfc-2005-default-binding-mode/ref-region.rs | 0 .../rfc-2005-default-binding-mode/reset-mode.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/slice.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/struct.rs | 0 .../rfc-2005-default-binding-mode/tuple-struct.rs | 0 .../ui/rfcs/rfc-2005-default-binding-mode/tuple.rs | 0 .../ui/rfcs/rfc-2151-raw-identifiers/attr.rs | 0 .../ui/rfcs/rfc-2151-raw-identifiers/basic.rs | 0 .../ui/rfcs/rfc-2151-raw-identifiers/items.rs | 0 .../ui/rfcs/rfc-2151-raw-identifiers/macros.rs | 0 .../ui/rfcs/rfc-2175-or-if-while-let/basic.rs | 0 .../ui/rfcs/rfc-2302-self-struct-ctor.rs | 0 .../rfcs/rfc-2396-target_feature-11/check-pass.rs | 0 .../closures-inherit-target_feature.rs | 0 .../feature-gate-target_feature_11.rs | 0 .../feature-gate-target_feature_11.stderr | 0 .../rfc-2396-target_feature-11/fn-ptr.mir.stderr | 0 .../ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs | 0 .../rfc-2396-target_feature-11/fn-ptr.thir.stderr | 0 .../ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs | 0 .../rfc-2396-target_feature-11/fn-traits.stderr | 0 .../rfcs/rfc-2396-target_feature-11/issue-99876.rs | 0 .../safe-calls.mir.stderr | 0 .../rfcs/rfc-2396-target_feature-11/safe-calls.rs | 0 .../safe-calls.thir.stderr | 0 .../rfcs/rfc-2396-target_feature-11/trait-impl.rs | 0 .../rfc-2396-target_feature-11/trait-impl.stderr | 0 ...c-2421-unreserve-pure-offsetof-sizeof-alignof.rs | 0 .../coerce-in-base-expr.rs | 0 .../feature-gate.rs | 0 .../feature-gate.stderr | 0 .../issue-92010-trait-bound-not-satisfied.rs | 0 .../issue-92010-trait-bound-not-satisfied.stderr | 0 .../issue-96878.rs | 0 .../lifetime-update.rs | 0 .../lifetime-update.stderr | 0 .../type-generic-update.rs | 0 .../type-generic-update.stderr | 0 .../rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs | 0 .../ui/rfcs/rfc1445/eq-allows-match.rs | 0 {src/test => tests}/ui/rfcs/rfc1623-2.rs | 0 {src/test => tests}/ui/rfcs/rfc1623-2.stderr | 0 {src/test => tests}/ui/rfcs/rfc1623-3.rs | 0 {src/test => tests}/ui/rfcs/rfc1623-3.stderr | 0 {src/test => tests}/ui/rfcs/rfc1623.rs | 0 .../ui/rfcs/rfc1717/library-override.rs | 0 {src/test => tests}/ui/rfcs/rfc1857-drop-order.rs | 0 .../test => tests}/ui/rmeta/auxiliary/rmeta-meta.rs | 0 .../ui/rmeta/auxiliary/rmeta-rlib-rpass.rs | 0 .../test => tests}/ui/rmeta/auxiliary/rmeta-rlib.rs | 0 .../ui/rmeta/auxiliary/rmeta-rmeta.rs | 0 .../emit-artifact-notifications.polonius.stderr | 0 .../ui/rmeta/emit-artifact-notifications.rs | 0 .../ui/rmeta/emit-artifact-notifications.stderr | 0 {src/test => tests}/ui/rmeta/emit-metadata-obj.rs | 0 {src/test => tests}/ui/rmeta/rmeta-lib-pass.rs | 0 {src/test => tests}/ui/rmeta/rmeta-pass.rs | 0 {src/test => tests}/ui/rmeta/rmeta-priv-warn.rs | 0 {src/test => tests}/ui/rmeta/rmeta-rpass.rs | 0 {src/test => tests}/ui/rmeta/rmeta.rs | 0 {src/test => tests}/ui/rmeta/rmeta.stderr | 0 {src/test => tests}/ui/rmeta/rmeta_lib.rs | 0 {src/test => tests}/ui/rmeta/rmeta_lib.stderr | 0 {src/test => tests}/ui/rmeta/rmeta_meta_main.rs | 0 {src/test => tests}/ui/rmeta/rmeta_meta_main.stderr | 0 {src/test => tests}/ui/runtime/atomic-print.rs | 0 .../ui/runtime/backtrace-debuginfo-aux.rs | 0 .../ui/runtime/backtrace-debuginfo.rs | 0 .../ui/runtime/native-print-no-runtime.rs | 0 {src/test => tests}/ui/runtime/out-of-stack.rs | 0 .../ui/runtime/rt-explody-panic-payloads.rs | 0 .../ui/runtime/running-with-no-runtime.rs | 0 .../ui/runtime/signal-alternate-stack-cleanup.rs | 0 .../ui/runtime/stdout-during-shutdown.rs | 0 .../ui/runtime/stdout-during-shutdown.run.stdout | 0 .../ui/rust-2018/async-ident-allowed.rs | 0 .../ui/rust-2018/async-ident-allowed.stderr | 0 {src/test => tests}/ui/rust-2018/async-ident.fixed | 0 {src/test => tests}/ui/rust-2018/async-ident.rs | 0 {src/test => tests}/ui/rust-2018/async-ident.stderr | 0 {src/test => tests}/ui/rust-2018/auxiliary/baz.rs | 0 .../auxiliary/edition-lint-infer-outlives-macro.rs | 0 .../ui/rust-2018/auxiliary/edition-lint-paths.rs | 0 .../rust-2018/auxiliary/macro-use-warned-against.rs | 0 .../auxiliary/macro-use-warned-against2.rs | 0 .../ui/rust-2018/auxiliary/remove-extern-crate.rs | 0 .../auxiliary/suggestions-not-always-applicable.rs | 0 .../rust-2018/auxiliary/trait-import-suggestions.rs | 0 {src/test => tests}/ui/rust-2018/dyn-keyword.fixed | 0 {src/test => tests}/ui/rust-2018/dyn-keyword.rs | 0 {src/test => tests}/ui/rust-2018/dyn-keyword.stderr | 0 .../ui/rust-2018/dyn-trait-compatibility.rs | 0 .../ui/rust-2018/dyn-trait-compatibility.stderr | 0 .../edition-lint-fully-qualified-paths.fixed | 0 .../rust-2018/edition-lint-fully-qualified-paths.rs | 0 .../edition-lint-fully-qualified-paths.stderr | 0 .../edition-lint-infer-outlives-macro.fixed | 0 .../rust-2018/edition-lint-infer-outlives-macro.rs | 0 .../edition-lint-infer-outlives-macro.stderr | 0 .../edition-lint-infer-outlives-multispan.rs | 0 .../edition-lint-infer-outlives-multispan.stderr | 0 .../ui/rust-2018/edition-lint-infer-outlives.fixed | 0 .../ui/rust-2018/edition-lint-infer-outlives.rs | 0 .../ui/rust-2018/edition-lint-infer-outlives.stderr | 0 .../rust-2018/edition-lint-nested-empty-paths.fixed | 0 .../ui/rust-2018/edition-lint-nested-empty-paths.rs | 0 .../edition-lint-nested-empty-paths.stderr | 0 .../ui/rust-2018/edition-lint-nested-paths.fixed | 0 .../ui/rust-2018/edition-lint-nested-paths.rs | 0 .../ui/rust-2018/edition-lint-nested-paths.stderr | 0 .../ui/rust-2018/edition-lint-paths-2018.rs | 0 .../ui/rust-2018/edition-lint-paths.fixed | 0 .../ui/rust-2018/edition-lint-paths.rs | 0 .../ui/rust-2018/edition-lint-paths.stderr | 0 .../rust-2018/edition-lint-uninferable-outlives.rs | 0 .../rust-2018/extern-crate-idiomatic-in-2018.fixed | 0 .../ui/rust-2018/extern-crate-idiomatic-in-2018.rs | 0 .../rust-2018/extern-crate-idiomatic-in-2018.stderr | 0 .../ui/rust-2018/extern-crate-idiomatic.fixed | 0 .../ui/rust-2018/extern-crate-idiomatic.rs | 0 .../extern-crate-referenced-by-self-path.fixed | 0 .../extern-crate-referenced-by-self-path.rs | 0 .../ui/rust-2018/extern-crate-rename.fixed | 0 .../ui/rust-2018/extern-crate-rename.rs | 0 .../ui/rust-2018/extern-crate-rename.stderr | 0 .../ui/rust-2018/extern-crate-submod.fixed | 0 .../ui/rust-2018/extern-crate-submod.rs | 0 .../ui/rust-2018/extern-crate-submod.stderr | 0 .../ui/rust-2018/future-proofing-locals.rs | 0 .../ui/rust-2018/future-proofing-locals.stderr | 0 {src/test => tests}/ui/rust-2018/issue-51008-1.rs | 0 {src/test => tests}/ui/rust-2018/issue-51008.rs | 0 .../ui/rust-2018/issue-52202-use-suggestions.rs | 0 .../ui/rust-2018/issue-52202-use-suggestions.stderr | 0 {src/test => tests}/ui/rust-2018/issue-54006.rs | 0 {src/test => tests}/ui/rust-2018/issue-54006.stderr | 0 .../issue-54400-unused-extern-crate-attr-span.fixed | 0 .../issue-54400-unused-extern-crate-attr-span.rs | 0 ...issue-54400-unused-extern-crate-attr-span.stderr | 0 .../ui/rust-2018/local-path-suggestions-2015.rs | 0 .../ui/rust-2018/local-path-suggestions-2015.stderr | 0 .../ui/rust-2018/local-path-suggestions-2018.rs | 0 .../ui/rust-2018/local-path-suggestions-2018.stderr | 0 .../ui/rust-2018/macro-use-warned-against.rs | 0 .../ui/rust-2018/macro-use-warned-against.stderr | 0 .../ui/rust-2018/proc-macro-crate-in-paths.rs | 0 .../ui/rust-2018/remove-extern-crate.fixed | 0 .../ui/rust-2018/remove-extern-crate.rs | 0 .../ui/rust-2018/remove-extern-crate.stderr | 0 .../suggestions-not-always-applicable.fixed | 0 .../rust-2018/suggestions-not-always-applicable.rs | 0 .../ui/rust-2018/trait-import-suggestions.rs | 0 .../ui/rust-2018/trait-import-suggestions.stderr | 0 {src/test => tests}/ui/rust-2018/try-ident.fixed | 0 {src/test => tests}/ui/rust-2018/try-ident.rs | 0 {src/test => tests}/ui/rust-2018/try-ident.stderr | 0 {src/test => tests}/ui/rust-2018/try-macro.fixed | 0 {src/test => tests}/ui/rust-2018/try-macro.rs | 0 {src/test => tests}/ui/rust-2018/try-macro.stderr | 0 .../uniform-paths/ambiguity-macros-nested.rs | 0 .../uniform-paths/ambiguity-macros-nested.stderr | 0 .../ui/rust-2018/uniform-paths/ambiguity-macros.rs | 0 .../rust-2018/uniform-paths/ambiguity-macros.stderr | 0 .../ui/rust-2018/uniform-paths/ambiguity-nested.rs | 0 .../rust-2018/uniform-paths/ambiguity-nested.stderr | 0 .../ui/rust-2018/uniform-paths/ambiguity.rs | 0 .../ui/rust-2018/uniform-paths/ambiguity.stderr | 0 .../uniform-paths/auxiliary/cross-crate.rs | 0 .../auxiliary/issue-55779-extern-trait.rs | 0 .../uniform-paths/auxiliary/issue-56596-2.rs | 0 .../uniform-paths/auxiliary/issue-56596.rs | 0 .../uniform-paths/auxiliary/issue-87932-a.rs | 0 .../uniform-paths/block-scoped-shadow-nested.rs | 0 .../uniform-paths/block-scoped-shadow-nested.stderr | 0 .../rust-2018/uniform-paths/block-scoped-shadow.rs | 0 .../uniform-paths/block-scoped-shadow.stderr | 0 .../ui/rust-2018/uniform-paths/cross-crate.rs | 0 .../ui/rust-2018/uniform-paths/cross-crate.stderr | 0 .../ui/rust-2018/uniform-paths/deadlock.rs | 0 .../ui/rust-2018/uniform-paths/deadlock.stderr | 0 .../ui/rust-2018/uniform-paths/fn-local-enum.rs | 0 .../ui/rust-2018/uniform-paths/from-decl-macro.rs | 0 .../ui/rust-2018/uniform-paths/issue-54253.rs | 0 .../ui/rust-2018/uniform-paths/issue-54253.stderr | 0 .../ui/rust-2018/uniform-paths/issue-55779.rs | 0 .../ui/rust-2018/uniform-paths/issue-56596-2.rs | 0 .../ui/rust-2018/uniform-paths/issue-56596.rs | 0 .../ui/rust-2018/uniform-paths/issue-56596.stderr | 0 .../ui/rust-2018/uniform-paths/issue-87932.rs | 0 .../ui/rust-2018/uniform-paths/issue-87932.stderr | 0 .../ui/rust-2018/uniform-paths/macro-rules.rs | 0 .../ui/rust-2018/uniform-paths/macro-rules.stderr | 0 .../ui/rust-2018/uniform-paths/prelude-fail-2.rs | 0 .../rust-2018/uniform-paths/prelude-fail-2.stderr | 0 .../ui/rust-2018/uniform-paths/prelude-fail.rs | 0 .../ui/rust-2018/uniform-paths/prelude-fail.stderr | 0 .../ui/rust-2018/uniform-paths/prelude.rs | 0 .../ui/rust-2018/uniform-paths/redundant.rs | 0 .../ui/rust-2018/unresolved-asterisk-imports.rs | 0 .../ui/rust-2018/unresolved-asterisk-imports.stderr | 0 .../ui/rust-2021/array-into-iter-ambiguous.fixed | 0 .../ui/rust-2021/array-into-iter-ambiguous.rs | 0 .../ui/rust-2021/array-into-iter-ambiguous.stderr | 0 .../auxiliary/reserved-prefixes-macro-2018.rs | 0 .../auxiliary/reserved-prefixes-macro-2021.rs | 0 .../future-prelude-collision-generic-trait.fixed | 0 .../future-prelude-collision-generic-trait.rs | 0 .../future-prelude-collision-generic-trait.stderr | 0 .../future-prelude-collision-generic.fixed | 0 .../rust-2021/future-prelude-collision-generic.rs | 0 .../future-prelude-collision-generic.stderr | 0 .../future-prelude-collision-imported.fixed | 0 .../rust-2021/future-prelude-collision-imported.rs | 0 .../future-prelude-collision-imported.stderr | 0 .../rust-2021/future-prelude-collision-macros.fixed | 0 .../ui/rust-2021/future-prelude-collision-macros.rs | 0 .../future-prelude-collision-macros.stderr | 0 .../ui/rust-2021/future-prelude-collision-shadow.rs | 0 .../future-prelude-collision-shadow.stderr | 0 .../future-prelude-collision-turbofish.fixed | 0 .../rust-2021/future-prelude-collision-turbofish.rs | 0 .../future-prelude-collision-turbofish.stderr | 0 .../rust-2021/future-prelude-collision-unneeded.rs | 0 .../ui/rust-2021/future-prelude-collision.fixed | 0 .../ui/rust-2021/future-prelude-collision.rs | 0 .../ui/rust-2021/future-prelude-collision.stderr | 0 .../ui/rust-2021/generic-type-collision.fixed | 0 .../ui/rust-2021/generic-type-collision.rs | 0 .../ui/rust-2021/generic-type-collision.stderr | 0 .../ui/rust-2021/inherent-dyn-collision.fixed | 0 .../ui/rust-2021/inherent-dyn-collision.rs | 0 .../ui/rust-2021/inherent-dyn-collision.stderr | 0 .../ui/rust-2021/inherent-method-collision.rs | 0 {src/test => tests}/ui/rust-2021/panic.rs | 0 {src/test => tests}/ui/rust-2021/panic.stderr | 0 {src/test => tests}/ui/rust-2021/prelude2021.rs | 0 .../ui/rust-2021/reserved-prefixes-migration.fixed | 0 .../ui/rust-2021/reserved-prefixes-migration.rs | 0 .../ui/rust-2021/reserved-prefixes-migration.stderr | 0 .../ui/rust-2021/reserved-prefixes-via-macro-2.rs | 0 .../rust-2021/reserved-prefixes-via-macro-2.stderr | 0 .../ui/rust-2021/reserved-prefixes-via-macro.rs | 0 .../ui/rust-2021/reserved-prefixes.rs | 0 .../ui/rust-2021/reserved-prefixes.stderr | 0 {src/test => tests}/ui/rustc-error.rs | 0 {src/test => tests}/ui/rustc-error.stderr | 0 {src/test => tests}/ui/rustc-rust-log.rs | 0 {src/test => tests}/ui/rustdoc/README.md | 0 {src/test => tests}/ui/rustdoc/cfg-rustdoc.rs | 0 {src/test => tests}/ui/rustdoc/cfg-rustdoc.stderr | 0 .../ui/rustdoc/check-doc-alias-attr-location.rs | 0 .../ui/rustdoc/check-doc-alias-attr-location.stderr | 0 .../ui/rustdoc/check-doc-alias-attr.rs | 0 .../ui/rustdoc/check-doc-alias-attr.stderr | 0 .../ui/rustdoc/deny-invalid-doc-attrs.rs | 0 .../ui/rustdoc/deny-invalid-doc-attrs.stderr | 0 .../ui/rustdoc/doc-alias-crate-level.rs | 0 .../ui/rustdoc/doc-alias-crate-level.stderr | 0 .../ui/rustdoc/doc-alias-same-name.rs | 0 .../ui/rustdoc/doc-alias-same-name.stderr | 0 .../ui/rustdoc/doc-inline-extern-crate.rs | 0 .../ui/rustdoc/doc-inline-extern-crate.stderr | 0 .../test => tests}/ui/rustdoc/doc-test-attr-pass.rs | 0 {src/test => tests}/ui/rustdoc/doc-test-attr.rs | 0 {src/test => tests}/ui/rustdoc/doc-test-attr.stderr | 0 {src/test => tests}/ui/rustdoc/doc_keyword.rs | 0 {src/test => tests}/ui/rustdoc/doc_keyword.stderr | 0 .../ui/rustdoc/duplicate_doc_alias.rs | 0 .../ui/rustdoc/duplicate_doc_alias.stderr | 0 .../ui/rustdoc/feature-gate-doc_primitive.rs | 0 .../ui/rustdoc/feature-gate-doc_primitive.stderr | 0 .../ui/rustdoc/hidden-doc-associated-item.rs | 0 .../rustdoc/renamed-features-rustdoc_internals.rs | 0 .../renamed-features-rustdoc_internals.stderr | 0 .../ui/rustdoc/unterminated-doc-comment.rs | 0 .../ui/rustdoc/unterminated-doc-comment.stderr | 0 {src/test => tests}/ui/sanitize/address.rs | 0 {src/test => tests}/ui/sanitize/badfree.rs | 0 {src/test => tests}/ui/sanitize/cfg.rs | 0 {src/test => tests}/ui/sanitize/crt-static.rs | 0 {src/test => tests}/ui/sanitize/crt-static.stderr | 0 {src/test => tests}/ui/sanitize/hwaddress.rs | 0 {src/test => tests}/ui/sanitize/incompatible.rs | 0 {src/test => tests}/ui/sanitize/incompatible.stderr | 0 {src/test => tests}/ui/sanitize/inline-always.rs | 0 .../test => tests}/ui/sanitize/inline-always.stderr | 0 .../ui/sanitize/issue-72154-lifetime-markers.rs | 0 {src/test => tests}/ui/sanitize/leak.rs | 0 {src/test => tests}/ui/sanitize/memory-eager.rs | 0 {src/test => tests}/ui/sanitize/memory-passing.rs | 0 {src/test => tests}/ui/sanitize/memory.rs | 0 .../ui/sanitize/new-llvm-pass-manager-thin-lto.rs | 0 {src/test => tests}/ui/sanitize/thread.rs | 0 .../ui/sanitize/unsupported-target.rs | 0 .../ui/sanitize/unsupported-target.stderr | 0 {src/test => tests}/ui/sanitize/use-after-scope.rs | 0 .../emit-notifications.polonius.stderr | 0 .../ui/save-analysis/emit-notifications.rs | 0 .../ui/save-analysis/emit-notifications.stderr | 0 {src/test => tests}/ui/save-analysis/issue-26459.rs | 0 .../ui/save-analysis/issue-26459.stderr | 0 {src/test => tests}/ui/save-analysis/issue-37323.rs | 0 .../ui/save-analysis/issue-59134-0.rs | 0 .../ui/save-analysis/issue-59134-0.stderr | 0 .../ui/save-analysis/issue-59134-1.rs | 0 .../ui/save-analysis/issue-59134-1.stderr | 0 {src/test => tests}/ui/save-analysis/issue-63663.rs | 0 {src/test => tests}/ui/save-analysis/issue-64659.rs | 0 {src/test => tests}/ui/save-analysis/issue-65411.rs | 0 {src/test => tests}/ui/save-analysis/issue-65590.rs | 0 {src/test => tests}/ui/save-analysis/issue-68621.rs | 0 .../ui/save-analysis/issue-68621.stderr | 0 {src/test => tests}/ui/save-analysis/issue-72267.rs | 0 .../ui/save-analysis/issue-72267.stderr | 0 {src/test => tests}/ui/save-analysis/issue-73020.rs | 0 .../ui/save-analysis/issue-73020.stderr | 0 {src/test => tests}/ui/save-analysis/issue-73022.rs | 0 {src/test => tests}/ui/save-analysis/issue-89066.rs | 0 .../ui/save-analysis/issue-89066.stderr | 0 ...arbitrary-self-types-not-object-safe.curr.stderr | 0 ...-not-object-safe.object_safe_for_dispatch.stderr | 0 .../ui/self/arbitrary-self-types-not-object-safe.rs | 0 .../ui/self/arbitrary_self_types_nested.rs | 0 .../self/arbitrary_self_types_pin_lifetime-async.rs | 0 .../ui/self/arbitrary_self_types_pin_lifetime.rs | 0 ...rary_self_types_pin_lifetime_impl_trait-async.rs | 0 ..._self_types_pin_lifetime_impl_trait-async.stderr | 0 .../arbitrary_self_types_pin_lifetime_impl_trait.rs | 0 ...itrary_self_types_pin_lifetime_impl_trait.stderr | 0 ...itrary_self_types_pin_lifetime_mismatch-async.rs | 0 ...ry_self_types_pin_lifetime_mismatch-async.stderr | 0 .../arbitrary_self_types_pin_lifetime_mismatch.rs | 0 ...rbitrary_self_types_pin_lifetime_mismatch.stderr | 0 .../arbitrary_self_types_pointers_and_wrappers.rs | 0 .../self/arbitrary_self_types_raw_pointer_struct.rs | 0 .../self/arbitrary_self_types_raw_pointer_trait.rs | 0 .../ui/self/arbitrary_self_types_silly.rs | 0 .../ui/self/arbitrary_self_types_stdlib_pointers.rs | 0 .../ui/self/arbitrary_self_types_struct.rs | 0 .../ui/self/arbitrary_self_types_trait.rs | 0 .../ui/self/arbitrary_self_types_unsized_struct.rs | 0 .../ui/self/auxiliary/explicit_self_xcrate.rs | 0 .../ui/self/builtin-superkinds-self-type.rs | 0 .../ui/self/by-value-self-in-mut-slot.rs | 0 {src/test => tests}/ui/self/class-missing-self.rs | 0 .../ui/self/class-missing-self.stderr | 0 {src/test => tests}/ui/self/elision/README.md | 0 {src/test => tests}/ui/self/elision/alias-async.rs | 0 {src/test => tests}/ui/self/elision/alias.rs | 0 {src/test => tests}/ui/self/elision/assoc-async.rs | 0 {src/test => tests}/ui/self/elision/assoc.rs | 0 .../ui/self/elision/lt-alias-async.rs | 0 {src/test => tests}/ui/self/elision/lt-alias.rs | 0 .../ui/self/elision/lt-assoc-async.rs | 0 {src/test => tests}/ui/self/elision/lt-assoc.rs | 0 .../ui/self/elision/lt-ref-self-async.rs | 0 .../ui/self/elision/lt-ref-self-async.stderr | 0 {src/test => tests}/ui/self/elision/lt-ref-self.rs | 0 .../ui/self/elision/lt-ref-self.stderr | 0 .../test => tests}/ui/self/elision/lt-self-async.rs | 0 {src/test => tests}/ui/self/elision/lt-self.rs | 0 .../ui/self/elision/lt-struct-async.rs | 0 {src/test => tests}/ui/self/elision/lt-struct.rs | 0 .../ui/self/elision/multiple-ref-self-async.rs | 0 .../ui/self/elision/multiple-ref-self.rs | 0 .../ui/self/elision/ref-alias-async.rs | 0 {src/test => tests}/ui/self/elision/ref-alias.rs | 0 .../ui/self/elision/ref-assoc-async.rs | 0 {src/test => tests}/ui/self/elision/ref-assoc.rs | 0 .../ui/self/elision/ref-mut-alias-async.rs | 0 .../test => tests}/ui/self/elision/ref-mut-alias.rs | 0 .../ui/self/elision/ref-mut-self-async.rs | 0 .../ui/self/elision/ref-mut-self-async.stderr | 0 {src/test => tests}/ui/self/elision/ref-mut-self.rs | 0 .../ui/self/elision/ref-mut-self.stderr | 0 .../ui/self/elision/ref-mut-struct-async.rs | 0 .../ui/self/elision/ref-mut-struct-async.stderr | 0 .../ui/self/elision/ref-mut-struct.rs | 0 .../ui/self/elision/ref-mut-struct.stderr | 0 .../ui/self/elision/ref-self-async.rs | 0 .../ui/self/elision/ref-self-async.stderr | 0 {src/test => tests}/ui/self/elision/ref-self.rs | 0 {src/test => tests}/ui/self/elision/ref-self.stderr | 0 .../ui/self/elision/ref-struct-async.rs | 0 .../ui/self/elision/ref-struct-async.stderr | 0 {src/test => tests}/ui/self/elision/ref-struct.rs | 0 .../ui/self/elision/ref-struct.stderr | 0 {src/test => tests}/ui/self/elision/self-async.rs | 0 {src/test => tests}/ui/self/elision/self.rs | 0 {src/test => tests}/ui/self/elision/struct-async.rs | 0 {src/test => tests}/ui/self/elision/struct.rs | 0 .../ui/self/explicit-self-closures.rs | 0 .../test => tests}/ui/self/explicit-self-generic.rs | 0 .../ui/self/explicit-self-objects-uniq.rs | 0 {src/test => tests}/ui/self/explicit-self.rs | 0 .../ui/self/explicit_self_xcrate_exe.rs | 0 {src/test => tests}/ui/self/issue-61882-2.rs | 0 {src/test => tests}/ui/self/issue-61882-2.stderr | 0 {src/test => tests}/ui/self/issue-61882.rs | 0 {src/test => tests}/ui/self/issue-61882.stderr | 0 {src/test => tests}/ui/self/move-self.rs | 0 .../self/object-safety-sized-self-by-value-self.rs | 0 .../self/object-safety-sized-self-generic-method.rs | 0 .../ui/self/object-safety-sized-self-return-Self.rs | 0 .../ui/self/objects-owned-object-owned-method.rs | 0 .../ui/self/point-at-arbitrary-self-type-method.rs | 0 .../self/point-at-arbitrary-self-type-method.stderr | 0 .../point-at-arbitrary-self-type-trait-method.rs | 0 ...point-at-arbitrary-self-type-trait-method.stderr | 0 {src/test => tests}/ui/self/self-impl-2.rs | 0 {src/test => tests}/ui/self/self-impl.rs | 0 {src/test => tests}/ui/self/self-impl.stderr | 0 .../ui/self/self-in-mut-slot-default-method.rs | 0 .../ui/self/self-in-mut-slot-immediate-value.rs | 0 {src/test => tests}/ui/self/self-in-typedefs.rs | 0 {src/test => tests}/ui/self/self-infer.rs | 0 {src/test => tests}/ui/self/self-infer.stderr | 0 {src/test => tests}/ui/self/self-re-assign.rs | 0 .../test => tests}/ui/self/self-shadowing-import.rs | 0 {src/test => tests}/ui/self/self-type-param.rs | 0 .../ui/self/self-vs-path-ambiguity.rs | 0 .../ui/self/self-vs-path-ambiguity.stderr | 0 {src/test => tests}/ui/self/self_lifetime-async.rs | 0 {src/test => tests}/ui/self/self_lifetime.rs | 0 {src/test => tests}/ui/self/self_type_keyword-2.rs | 0 .../ui/self/self_type_keyword-2.stderr | 0 {src/test => tests}/ui/self/self_type_keyword.rs | 0 .../test => tests}/ui/self/self_type_keyword.stderr | 0 {src/test => tests}/ui/self/string-self-append.rs | 0 {src/test => tests}/ui/self/suggest-self-2.rs | 0 {src/test => tests}/ui/self/suggest-self-2.stderr | 0 {src/test => tests}/ui/self/suggest-self.rs | 0 {src/test => tests}/ui/self/suggest-self.stderr | 0 {src/test => tests}/ui/self/ufcs-explicit-self.rs | 0 .../test => tests}/ui/self/uniq-self-in-mut-slot.rs | 0 {src/test => tests}/ui/self/where-for-self.rs | 0 .../ui/sepcomp/auxiliary/sepcomp-extern-lib.rs | 0 .../ui/sepcomp/auxiliary/sepcomp_cci_lib.rs | 0 .../ui/sepcomp/auxiliary/sepcomp_lib.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-cci.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-extern.rs | 0 .../ui/sepcomp/sepcomp-fns-backwards.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-fns.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-lib-lto.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-lib.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-statics.rs | 0 {src/test => tests}/ui/sepcomp/sepcomp-unwind.rs | 0 {src/test => tests}/ui/seq-args.rs | 0 {src/test => tests}/ui/seq-args.stderr | 0 {src/test => tests}/ui/shadow-bool.rs | 0 {src/test => tests}/ui/shadowed-use-visibility.rs | 0 .../test => tests}/ui/shadowed/shadowed-lifetime.rs | 0 .../ui/shadowed/shadowed-lifetime.stderr | 0 .../ui/shadowed/shadowed-trait-methods.rs | 0 .../ui/shadowed/shadowed-trait-methods.stderr | 0 .../ui/shadowed/shadowed-type-parameter.rs | 0 .../ui/shadowed/shadowed-type-parameter.stderr | 0 .../ui/shadowed/shadowed-use-visibility.rs | 0 .../ui/shadowed/shadowed-use-visibility.stderr | 0 .../ui/shadowed/shadowing-in-the-same-pattern.rs | 0 .../shadowed/shadowing-in-the-same-pattern.stderr | 0 {src/test => tests}/ui/short-error-format.rs | 0 {src/test => tests}/ui/short-error-format.stderr | 0 {src/test => tests}/ui/simd/array-trait.rs | 0 {src/test => tests}/ui/simd/array-trait.stderr | 0 {src/test => tests}/ui/simd/array-type.rs | 0 {src/test => tests}/ui/simd/generics.rs | 0 .../ui/simd/intrinsic/float-math-pass.rs | 0 .../ui/simd/intrinsic/float-minmax-pass.rs | 0 .../ui/simd/intrinsic/generic-arithmetic-2.rs | 0 .../ui/simd/intrinsic/generic-arithmetic-2.stderr | 0 .../ui/simd/intrinsic/generic-arithmetic-pass.rs | 0 .../intrinsic/generic-arithmetic-saturating-2.rs | 0 .../generic-arithmetic-saturating-2.stderr | 0 .../intrinsic/generic-arithmetic-saturating-pass.rs | 0 {src/test => tests}/ui/simd/intrinsic/generic-as.rs | 0 .../ui/simd/intrinsic/generic-bitmask-pass.rs | 0 .../ui/simd/intrinsic/generic-bitmask.rs | 0 .../ui/simd/intrinsic/generic-bitmask.stderr | 0 .../ui/simd/intrinsic/generic-cast-pass.rs | 0 .../ui/simd/intrinsic/generic-cast-pointer-width.rs | 0 .../ui/simd/intrinsic/generic-cast.rs | 0 .../ui/simd/intrinsic/generic-cast.stderr | 0 .../ui/simd/intrinsic/generic-comparison-pass.rs | 0 .../ui/simd/intrinsic/generic-comparison.rs | 0 .../ui/simd/intrinsic/generic-comparison.stderr | 0 .../ui/simd/intrinsic/generic-elements-pass.rs | 0 .../ui/simd/intrinsic/generic-elements.rs | 0 .../ui/simd/intrinsic/generic-elements.stderr | 0 .../ui/simd/intrinsic/generic-gather-pass.rs | 0 .../ui/simd/intrinsic/generic-reduction-pass.rs | 0 .../ui/simd/intrinsic/generic-reduction.rs | 0 .../ui/simd/intrinsic/generic-reduction.stderr | 0 .../ui/simd/intrinsic/generic-select-pass.rs | 0 .../ui/simd/intrinsic/generic-select.rs | 0 .../ui/simd/intrinsic/generic-select.stderr | 0 .../ui/simd/intrinsic/generic-shuffle.rs | 0 .../ui/simd/intrinsic/generic-shuffle.stderr | 0 .../ui/simd/intrinsic/inlining-issue67557-ice.rs | 0 .../ui/simd/intrinsic/inlining-issue67557.rs | 0 .../test => tests}/ui/simd/intrinsic/issue-85855.rs | 0 .../ui/simd/intrinsic/issue-85855.stderr | 0 {src/test => tests}/ui/simd/intrinsic/ptr-cast.rs | 0 {src/test => tests}/ui/simd/issue-17170.rs | 0 {src/test => tests}/ui/simd/issue-32947.rs | 0 {src/test => tests}/ui/simd/issue-39720.rs | 0 .../test => tests}/ui/simd/issue-85915-simd-ptrs.rs | 0 {src/test => tests}/ui/simd/issue-89193.rs | 0 .../ui/simd/libm_no_std_cant_float.rs | 0 .../ui/simd/libm_no_std_cant_float.stderr | 0 {src/test => tests}/ui/simd/libm_std_can_float.rs | 0 .../ui/simd/monomorphize-shuffle-index.rs | 0 .../ui/simd/portable-intrinsics-arent-exposed.rs | 0 .../simd/portable-intrinsics-arent-exposed.stderr | 0 .../ui/simd/shuffle-not-out-of-bounds.rs | 0 .../ui/simd/shuffle-not-out-of-bounds.stderr | 0 {src/test => tests}/ui/simd/shuffle.rs | 0 {src/test => tests}/ui/simd/simd-bitmask.rs | 0 {src/test => tests}/ui/simd/size-align.rs | 0 {src/test => tests}/ui/simd/target-feature-mixup.rs | 0 .../ui/simd/type-generic-monomorphisation-empty.rs | 0 .../simd/type-generic-monomorphisation-empty.stderr | 0 ...e-generic-monomorphisation-extern-nonnull-ptr.rs | 0 .../type-generic-monomorphisation-non-primitive.rs | 0 ...pe-generic-monomorphisation-non-primitive.stderr | 0 .../simd/type-generic-monomorphisation-oversized.rs | 0 .../type-generic-monomorphisation-oversized.stderr | 0 .../type-generic-monomorphisation-power-of-two.rs | 0 .../simd/type-generic-monomorphisation-wide-ptr.rs | 0 .../type-generic-monomorphisation-wide-ptr.stderr | 0 .../ui/simd/type-generic-monomorphisation.rs | 0 .../ui/simd/type-generic-monomorphisation.stderr | 0 {src/test => tests}/ui/simd/type-len.rs | 0 {src/test => tests}/ui/simd/type-len.stderr | 0 {src/test => tests}/ui/simd/type-wide-ptr.rs | 0 {src/test => tests}/ui/simd/type-wide-ptr.stderr | 0 {src/test => tests}/ui/simd/wasm-simd-indirect.rs | 0 {src/test => tests}/ui/simple_global_asm.rs | 0 .../ui/single-use-lifetime/derive-eq.rs | 0 .../ui/single-use-lifetime/fn-types.rs | 0 .../ui/single-use-lifetime/fn-types.stderr | 0 .../single-use-lifetime/one-use-in-fn-argument.rs | 0 .../one-use-in-fn-argument.stderr | 0 .../ui/single-use-lifetime/one-use-in-fn-return.rs | 0 .../one-use-in-inherent-impl-header.rs | 0 .../one-use-in-inherent-impl-header.stderr | 0 .../one-use-in-inherent-method-argument.rs | 0 .../one-use-in-inherent-method-argument.stderr | 0 .../one-use-in-inherent-method-return.rs | 0 .../one-use-in-inherent-method-return.stderr | 0 .../ui/single-use-lifetime/one-use-in-struct.rs | 0 .../one-use-in-trait-method-argument.rs | 0 .../one-use-in-trait-method-argument.stderr | 0 .../two-uses-in-fn-argument-and-return.rs | 0 .../single-use-lifetime/two-uses-in-fn-arguments.rs | 0 .../two-uses-in-inherent-impl-header.rs | 0 ...o-uses-in-inherent-method-argument-and-return.rs | 0 ...es-in-inherent-method-argument-and-return.stderr | 0 .../single-use-lifetime/two-uses-in-trait-impl.rs | 0 .../ui/single-use-lifetime/zero-uses-in-fn.fixed | 0 .../ui/single-use-lifetime/zero-uses-in-fn.rs | 0 .../ui/single-use-lifetime/zero-uses-in-fn.stderr | 0 .../ui/single-use-lifetime/zero-uses-in-impl.rs | 0 .../ui/single-use-lifetime/zero-uses-in-impl.stderr | 0 {src/test => tests}/ui/sized-borrowed-pointer.rs | 0 {src/test => tests}/ui/sized-cycle-note.rs | 0 {src/test => tests}/ui/sized-cycle-note.stderr | 0 {src/test => tests}/ui/sized-owned-pointer.rs | 0 {src/test => tests}/ui/sized/coinductive-1-gat.rs | 0 {src/test => tests}/ui/sized/coinductive-1.rs | 0 {src/test => tests}/ui/sized/coinductive-2.rs | 0 {src/test => tests}/ui/sized/recursive-type-1.rs | 0 {src/test => tests}/ui/sized/recursive-type-2.rs | 0 .../test => tests}/ui/sized/recursive-type-2.stderr | 0 .../ui/slightly-nice-generic-literal-messages.rs | 0 .../slightly-nice-generic-literal-messages.stderr | 0 {src/test => tests}/ui/span/E0046.rs | 0 {src/test => tests}/ui/span/E0046.stderr | 0 {src/test => tests}/ui/span/E0072.rs | 0 {src/test => tests}/ui/span/E0072.stderr | 0 {src/test => tests}/ui/span/E0204.rs | 0 {src/test => tests}/ui/span/E0204.stderr | 0 {src/test => tests}/ui/span/E0493.rs | 0 {src/test => tests}/ui/span/E0493.stderr | 0 {src/test => tests}/ui/span/E0535.rs | 0 {src/test => tests}/ui/span/E0535.stderr | 0 {src/test => tests}/ui/span/E0536.rs | 0 {src/test => tests}/ui/span/E0536.stderr | 0 {src/test => tests}/ui/span/E0537.rs | 0 {src/test => tests}/ui/span/E0537.stderr | 0 .../ui/span/auxiliary/transitive_dep_three.rs | 0 .../ui/span/auxiliary/transitive_dep_two.rs | 0 .../borrowck-borrow-overloaded-auto-deref-mut.rs | 0 ...borrowck-borrow-overloaded-auto-deref-mut.stderr | 0 .../ui/span/borrowck-borrow-overloaded-deref-mut.rs | 0 .../borrowck-borrow-overloaded-deref-mut.stderr | 0 .../ui/span/borrowck-call-is-borrow-issue-12224.rs | 0 .../span/borrowck-call-is-borrow-issue-12224.stderr | 0 .../span/borrowck-call-method-from-mut-aliasable.rs | 0 .../borrowck-call-method-from-mut-aliasable.stderr | 0 .../ui/span/borrowck-fn-in-const-b.rs | 0 .../ui/span/borrowck-fn-in-const-b.stderr | 0 .../ui/span/borrowck-let-suggestion-suffixes.rs | 0 .../ui/span/borrowck-let-suggestion-suffixes.stderr | 0 .../ui/span/borrowck-object-mutability.rs | 0 .../ui/span/borrowck-object-mutability.stderr | 0 .../ui/span/borrowck-ref-into-rvalue.fixed | 0 .../ui/span/borrowck-ref-into-rvalue.rs | 0 .../ui/span/borrowck-ref-into-rvalue.stderr | 0 {src/test => tests}/ui/span/coerce-suggestions.rs | 0 .../ui/span/coerce-suggestions.stderr | 0 .../ui/span/destructor-restrictions.rs | 0 .../ui/span/destructor-restrictions.stderr | 0 ...rust-2021-incompatible-closure-captures-93117.rs | 0 ...-2021-incompatible-closure-captures-93117.stderr | 0 ...rust-2021-incompatible-closure-captures-96258.rs | 0 ...-2021-incompatible-closure-captures-96258.stderr | 0 {src/test => tests}/ui/span/dropck-object-cycle.rs | 0 .../ui/span/dropck-object-cycle.stderr | 0 .../ui/span/dropck_arr_cycle_checked.rs | 0 .../ui/span/dropck_arr_cycle_checked.stderr | 0 .../ui/span/dropck_direct_cycle_with_drop.rs | 0 .../ui/span/dropck_direct_cycle_with_drop.stderr | 0 {src/test => tests}/ui/span/dropck_misc_variants.rs | 0 .../ui/span/dropck_misc_variants.stderr | 0 .../ui/span/dropck_vec_cycle_checked.rs | 0 .../ui/span/dropck_vec_cycle_checked.stderr | 0 .../ui/span/gated-features-attr-spans.rs | 0 .../ui/span/gated-features-attr-spans.stderr | 0 .../ui/span/impl-wrong-item-for-trait.rs | 0 .../ui/span/impl-wrong-item-for-trait.stderr | 0 {src/test => tests}/ui/span/import-ty-params.rs | 0 {src/test => tests}/ui/span/import-ty-params.stderr | 0 {src/test => tests}/ui/span/issue-11925.rs | 0 {src/test => tests}/ui/span/issue-11925.stderr | 0 {src/test => tests}/ui/span/issue-15480.fixed | 0 {src/test => tests}/ui/span/issue-15480.rs | 0 {src/test => tests}/ui/span/issue-15480.stderr | 0 .../issue-23338-locals-die-before-temps-of-body.rs | 0 ...sue-23338-locals-die-before-temps-of-body.stderr | 0 {src/test => tests}/ui/span/issue-23729.rs | 0 {src/test => tests}/ui/span/issue-23729.stderr | 0 {src/test => tests}/ui/span/issue-23827.rs | 0 {src/test => tests}/ui/span/issue-23827.stderr | 0 {src/test => tests}/ui/span/issue-24356.rs | 0 {src/test => tests}/ui/span/issue-24356.stderr | 0 {src/test => tests}/ui/span/issue-24690.rs | 0 {src/test => tests}/ui/span/issue-24690.stderr | 0 ...issue-24805-dropck-child-has-items-via-parent.rs | 0 ...e-24805-dropck-child-has-items-via-parent.stderr | 0 .../ui/span/issue-24805-dropck-trait-has-items.rs | 0 .../span/issue-24805-dropck-trait-has-items.stderr | 0 .../ui/span/issue-24895-copy-clone-dropck.rs | 0 .../ui/span/issue-24895-copy-clone-dropck.stderr | 0 {src/test => tests}/ui/span/issue-25199.rs | 0 {src/test => tests}/ui/span/issue-25199.stderr | 0 {src/test => tests}/ui/span/issue-26656.rs | 0 {src/test => tests}/ui/span/issue-26656.stderr | 0 {src/test => tests}/ui/span/issue-27522.rs | 0 {src/test => tests}/ui/span/issue-27522.stderr | 0 {src/test => tests}/ui/span/issue-29106.rs | 0 {src/test => tests}/ui/span/issue-29106.stderr | 0 {src/test => tests}/ui/span/issue-29595.rs | 0 {src/test => tests}/ui/span/issue-29595.stderr | 0 {src/test => tests}/ui/span/issue-33884.rs | 0 {src/test => tests}/ui/span/issue-33884.stderr | 0 {src/test => tests}/ui/span/issue-34264.rs | 0 {src/test => tests}/ui/span/issue-34264.stderr | 0 {src/test => tests}/ui/span/issue-35987.rs | 0 {src/test => tests}/ui/span/issue-35987.stderr | 0 {src/test => tests}/ui/span/issue-36537.rs | 0 {src/test => tests}/ui/span/issue-36537.stderr | 0 {src/test => tests}/ui/span/issue-37767.rs | 0 {src/test => tests}/ui/span/issue-37767.stderr | 0 {src/test => tests}/ui/span/issue-39018.rs | 0 {src/test => tests}/ui/span/issue-39018.stderr | 0 {src/test => tests}/ui/span/issue-39698.rs | 0 {src/test => tests}/ui/span/issue-39698.stderr | 0 {src/test => tests}/ui/span/issue-40157.rs | 0 {src/test => tests}/ui/span/issue-40157.stderr | 0 .../issue-42234-unknown-receiver-type.full.stderr | 0 ...e-42234-unknown-receiver-type.generic_arg.stderr | 0 .../ui/span/issue-42234-unknown-receiver-type.rs | 0 .../ui/span/issue-43927-non-ADT-derive.rs | 0 .../ui/span/issue-43927-non-ADT-derive.stderr | 0 {src/test => tests}/ui/span/issue-71363.rs | 0 {src/test => tests}/ui/span/issue-71363.stderr | 0 {src/test => tests}/ui/span/issue-81800.rs | 0 {src/test => tests}/ui/span/issue-81800.stderr | 0 .../test => tests}/ui/span/issue28498-reject-ex1.rs | 0 .../ui/span/issue28498-reject-ex1.stderr | 0 .../ui/span/issue28498-reject-lifetime-param.rs | 0 .../ui/span/issue28498-reject-lifetime-param.stderr | 0 .../ui/span/issue28498-reject-passed-to-fn.rs | 0 .../ui/span/issue28498-reject-passed-to-fn.stderr | 0 .../ui/span/issue28498-reject-trait-bound.rs | 0 .../ui/span/issue28498-reject-trait-bound.stderr | 0 .../ui/span/lint-unused-unsafe-thir.rs | 0 .../ui/span/lint-unused-unsafe-thir.stderr | 0 .../ui/span/lint-unused-unsafe.mir.stderr | 0 {src/test => tests}/ui/span/lint-unused-unsafe.rs | 0 .../ui/span/macro-span-replacement.rs | 0 .../ui/span/macro-span-replacement.stderr | 0 {src/test => tests}/ui/span/macro-ty-params.rs | 0 {src/test => tests}/ui/span/macro-ty-params.stderr | 0 .../ui/span/method-and-field-eager-resolution.rs | 0 .../span/method-and-field-eager-resolution.stderr | 0 .../test => tests}/ui/span/missing-unit-argument.rs | 0 .../ui/span/missing-unit-argument.stderr | 0 {src/test => tests}/ui/span/move-closure.rs | 0 {src/test => tests}/ui/span/move-closure.stderr | 0 {src/test => tests}/ui/span/multiline-span-E0072.rs | 0 .../ui/span/multiline-span-E0072.stderr | 0 .../test => tests}/ui/span/multiline-span-simple.rs | 0 .../ui/span/multiline-span-simple.stderr | 0 .../test => tests}/ui/span/multispan-import-lint.rs | 0 .../ui/span/multispan-import-lint.stderr | 0 {src/test => tests}/ui/span/mut-arg-hint.rs | 0 {src/test => tests}/ui/span/mut-arg-hint.stderr | 0 .../ui/span/mut-ptr-cant-outlive-ref.rs | 0 .../ui/span/mut-ptr-cant-outlive-ref.stderr | 0 .../ui/span/non-existing-module-import.rs | 0 .../ui/span/non-existing-module-import.stderr | 0 {src/test => tests}/ui/span/pub-struct-field.rs | 0 {src/test => tests}/ui/span/pub-struct-field.stderr | 0 {src/test => tests}/ui/span/range-2.rs | 0 {src/test => tests}/ui/span/range-2.stderr | 0 {src/test => tests}/ui/span/recursive-type-field.rs | 0 .../ui/span/recursive-type-field.stderr | 0 .../ui/span/regionck-unboxed-closure-lifetimes.rs | 0 .../span/regionck-unboxed-closure-lifetimes.stderr | 0 .../span/regions-close-over-borrowed-ref-in-obj.rs | 0 .../regions-close-over-borrowed-ref-in-obj.stderr | 0 .../ui/span/regions-close-over-type-parameter-2.rs | 0 .../span/regions-close-over-type-parameter-2.stderr | 0 .../ui/span/regions-escape-loop-via-variable.rs | 0 .../ui/span/regions-escape-loop-via-variable.stderr | 0 .../ui/span/regions-escape-loop-via-vec.rs | 0 .../ui/span/regions-escape-loop-via-vec.stderr | 0 .../span/regions-infer-borrow-scope-within-loop.rs | 0 .../regions-infer-borrow-scope-within-loop.stderr | 0 .../ui/span/send-is-not-static-ensures-scoping.rs | 0 .../span/send-is-not-static-ensures-scoping.stderr | 0 .../ui/span/send-is-not-static-std-sync-2.rs | 0 .../ui/span/send-is-not-static-std-sync-2.stderr | 0 .../ui/span/send-is-not-static-std-sync.rs | 0 .../ui/span/send-is-not-static-std-sync.stderr | 0 {src/test => tests}/ui/span/slice-borrow.rs | 0 {src/test => tests}/ui/span/slice-borrow.stderr | 0 {src/test => tests}/ui/span/suggestion-non-ascii.rs | 0 .../ui/span/suggestion-non-ascii.stderr | 0 {src/test => tests}/ui/span/transitive-dep-span.rs | 0 .../ui/span/transitive-dep-span.stderr | 0 .../ui/span/type-annotations-needed-expr.rs | 0 .../ui/span/type-annotations-needed-expr.stderr | 0 {src/test => tests}/ui/span/type-binding.rs | 0 {src/test => tests}/ui/span/type-binding.stderr | 0 {src/test => tests}/ui/span/typo-suggestion.rs | 0 {src/test => tests}/ui/span/typo-suggestion.stderr | 0 .../ui/span/unused-warning-point-at-identifier.rs | 0 .../span/unused-warning-point-at-identifier.stderr | 0 .../ui/span/vec-must-not-hide-type-from-dropck.rs | 0 .../span/vec-must-not-hide-type-from-dropck.stderr | 0 .../ui/span/vec_refs_data_with_early_death.rs | 0 .../ui/span/vec_refs_data_with_early_death.stderr | 0 {src/test => tests}/ui/span/visibility-ty-params.rs | 0 .../ui/span/visibility-ty-params.stderr | 0 .../ui/span/wf-method-late-bound-regions.rs | 0 .../ui/span/wf-method-late-bound-regions.stderr | 0 .../ui/specialization/README-rpass.md | 0 {src/test => tests}/ui/specialization/README.md | 0 .../ui/specialization/assoc-ty-graph-cycle.rs | 0 .../ui/specialization/assoc-ty-graph-cycle.stderr | 0 .../auxiliary/cross_crates_defaults.rs | 0 .../ui/specialization/auxiliary/go_trait.rs | 0 .../auxiliary/specialization_cross_crate.rs | 0 .../ui/specialization/const_trait_impl.rs | 0 .../ui/specialization/cross-crate-defaults.rs | 0 .../ui/specialization/cross-crate-defaults.stderr | 0 .../default-associated-type-bound-1.rs | 0 .../default-associated-type-bound-1.stderr | 0 .../default-associated-type-bound-2.rs | 0 .../default-associated-type-bound-2.stderr | 0 .../default-generic-associated-type-bound.rs | 0 .../default-generic-associated-type-bound.stderr | 0 .../defaultimpl/allowed-cross-crate.rs | 0 .../defaultimpl/allowed-cross-crate.stderr | 0 .../defaultimpl/auxiliary/go_trait.rs | 0 .../ui/specialization/defaultimpl/out-of-order.rs | 0 .../specialization/defaultimpl/out-of-order.stderr | 0 .../defaultimpl/overlap-projection.rs | 0 .../defaultimpl/overlap-projection.stderr | 0 .../ui/specialization/defaultimpl/projection.rs | 0 .../ui/specialization/defaultimpl/projection.stderr | 0 .../specialization-feature-gate-default.rs | 0 .../specialization-feature-gate-default.stderr | 0 .../defaultimpl/specialization-no-default.rs | 0 .../defaultimpl/specialization-no-default.stderr | 0 ...ecialization-trait-item-not-implemented-rpass.rs | 0 ...lization-trait-item-not-implemented-rpass.stderr | 0 .../specialization-trait-item-not-implemented.rs | 0 ...specialization-trait-item-not-implemented.stderr | 0 .../specialization-trait-not-implemented.rs | 0 .../specialization-trait-not-implemented.stderr | 0 .../defaultimpl/specialization-wfcheck.rs | 0 .../defaultimpl/specialization-wfcheck.stderr | 0 .../ui/specialization/defaultimpl/validation.rs | 0 .../ui/specialization/defaultimpl/validation.stderr | 0 .../test => tests}/ui/specialization/issue-33017.rs | 0 .../ui/specialization/issue-33017.stderr | 0 .../test => tests}/ui/specialization/issue-35376.rs | 0 .../ui/specialization/issue-35376.stderr | 0 .../test => tests}/ui/specialization/issue-36804.rs | 0 .../ui/specialization/issue-36804.stderr | 0 .../ui/specialization/issue-38091-2.rs | 0 .../ui/specialization/issue-38091-2.stderr | 0 .../test => tests}/ui/specialization/issue-38091.rs | 0 .../ui/specialization/issue-38091.stderr | 0 .../test => tests}/ui/specialization/issue-39448.rs | 0 .../ui/specialization/issue-39448.stderr | 0 .../test => tests}/ui/specialization/issue-39618.rs | 0 .../ui/specialization/issue-39618.stderr | 0 .../ui/specialization/issue-43037.current.stderr | 0 .../ui/specialization/issue-43037.negative.stderr | 0 .../test => tests}/ui/specialization/issue-43037.rs | 0 .../test => tests}/ui/specialization/issue-44861.rs | 0 .../ui/specialization/issue-44861.stderr | 0 .../ui/specialization/issue-45814.current.stderr | 0 .../ui/specialization/issue-45814.negative.stderr | 0 .../test => tests}/ui/specialization/issue-45814.rs | 0 .../ui/specialization/issue-50452-fail.rs | 0 .../ui/specialization/issue-50452-fail.stderr | 0 .../test => tests}/ui/specialization/issue-50452.rs | 0 .../ui/specialization/issue-50452.stderr | 0 .../test => tests}/ui/specialization/issue-51892.rs | 0 .../ui/specialization/issue-51892.stderr | 0 .../test => tests}/ui/specialization/issue-52050.rs | 0 .../ui/specialization/issue-52050.stderr | 0 .../test => tests}/ui/specialization/issue-59435.rs | 0 .../ui/specialization/issue-59435.stderr | 0 .../ui/specialization/issue-63716-parse-async.rs | 0 .../specialization/issue-63716-parse-async.stderr | 0 .../issue-68830-spurious-diagnostics.rs | 0 .../issue-68830-spurious-diagnostics.stderr | 0 .../test => tests}/ui/specialization/issue-70442.rs | 0 .../ui/specialization/issue-70442.stderr | 0 .../auxiliary/specialization-trait.rs | 0 .../min_specialization/dyn-trait-assoc-types.rs | 0 .../min_specialization/dyn-trait-assoc-types.stderr | 0 .../min_specialization/impl-on-nonexisting.rs | 0 .../min_specialization/impl-on-nonexisting.stderr | 0 .../min_specialization/impl_specialization_trait.rs | 0 .../impl_specialization_trait.stderr | 0 .../implcit-well-formed-bounds.rs | 0 .../min_specialization/issue-79224.rs | 0 .../min_specialization/issue-79224.stderr | 0 .../min_specialization/repeated_projection_type.rs | 0 .../repeated_projection_type.stderr | 0 .../min_specialization/repeating_lifetimes.rs | 0 .../min_specialization/repeating_lifetimes.stderr | 0 .../min_specialization/repeating_param.rs | 0 .../min_specialization/repeating_param.stderr | 0 .../specialization/min_specialization/spec-iter.rs | 0 .../min_specialization/spec-marker-supertraits.rs | 0 .../spec-marker-supertraits.stderr | 0 .../min_specialization/spec-reference.rs | 0 .../min_specialization/specialization_marker.rs | 0 .../min_specialization/specialization_marker.stderr | 0 .../specialization_super_trait.rs | 0 .../specialization_super_trait.stderr | 0 .../min_specialization/specialization_trait.rs | 0 .../min_specialization/specialization_trait.stderr | 0 .../min_specialization/specialize_on_marker.rs | 0 .../min_specialization/specialize_on_spec_trait.rs | 0 .../min_specialization/specialize_on_static.rs | 0 .../min_specialization/specialize_on_static.stderr | 0 .../min_specialization/specialize_on_trait.rs | 0 .../min_specialization/specialize_on_trait.stderr | 0 .../ui/specialization/non-defaulted-item-fail.rs | 0 .../specialization/non-defaulted-item-fail.stderr | 0 .../soundness/partial_eq_range_inclusive.rs | 0 .../specialization/soundness/partial_ord_slice.rs | 0 .../specialization-allowed-cross-crate.rs | 0 .../specialization-allowed-cross-crate.stderr | 0 .../ui/specialization/specialization-assoc-fns.rs | 0 .../specialization/specialization-assoc-fns.stderr | 0 .../ui/specialization/specialization-basics.rs | 0 .../ui/specialization/specialization-basics.stderr | 0 .../specialization-cross-crate-no-gate.rs | 0 .../ui/specialization/specialization-cross-crate.rs | 0 .../specialization-cross-crate.stderr | 0 .../specialization-default-methods.rs | 0 .../specialization-default-methods.stderr | 0 .../specialization-default-projection.rs | 0 .../specialization-default-projection.stderr | 0 .../specialization/specialization-default-types.rs | 0 .../specialization-default-types.stderr | 0 .../specialization-feature-gate-default.rs | 0 .../specialization-feature-gate-default.stderr | 0 .../specialization-feature-gate-overlap.rs | 0 .../specialization-feature-gate-overlap.stderr | 0 .../ui/specialization/specialization-no-default.rs | 0 .../specialization/specialization-no-default.stderr | 0 .../specialization/specialization-on-projection.rs | 0 .../specialization-on-projection.stderr | 0 .../specialization/specialization-out-of-order.rs | 0 .../specialization-out-of-order.stderr | 0 .../specialization-overlap-hygiene.rs | 0 .../specialization-overlap-hygiene.stderr | 0 .../specialization-overlap-negative.rs | 0 .../specialization-overlap-negative.stderr | 0 .../specialization-overlap-projection.rs | 0 .../specialization-overlap-projection.stderr | 0 .../ui/specialization/specialization-overlap.rs | 0 .../ui/specialization/specialization-overlap.stderr | 0 .../ui/specialization/specialization-polarity.rs | 0 .../specialization/specialization-polarity.stderr | 0 .../specialization-projection-alias.rs | 0 .../specialization-projection-alias.stderr | 0 .../ui/specialization/specialization-projection.rs | 0 .../specialization/specialization-projection.stderr | 0 .../ui/specialization/specialization-supertraits.rs | 0 .../specialization-supertraits.stderr | 0 ...lization-translate-projections-with-lifetimes.rs | 0 ...tion-translate-projections-with-lifetimes.stderr | 0 ...cialization-translate-projections-with-params.rs | 0 ...ization-translate-projections-with-params.stderr | 0 .../specialization-translate-projections.rs | 0 .../specialization-translate-projections.stderr | 0 .../ui/specialization/transmute-specialization.rs | 0 .../specialization/transmute-specialization.stderr | 0 {src/test => tests}/ui/sse2.rs | 0 .../accidental-stable-in-unstable.rs | 0 .../accidental-stable-in-unstable.stderr | 0 .../stability-attribute/allow-unstable-reexport.rs | 0 .../allow-unstable-reexport.stderr | 0 .../stability-attribute/allowed-through-unstable.rs | 0 .../allowed-through-unstable.stderr | 0 .../auxiliary/allowed-through-unstable-core.rs | 0 .../stability-attribute/auxiliary/ctor-stability.rs | 0 .../stability-attribute/auxiliary/default_body.rs | 0 .../auxiliary/lint-stability-reexport.rs | 0 .../stability-attribute/auxiliary/lint-stability.rs | 0 .../auxiliary/stability-attribute-implies.rs | 0 .../auxiliary/stability_attribute_issue.rs | 0 .../auxiliary/stable-in-unstable-core.rs | 0 .../auxiliary/stable-in-unstable-std.rs | 0 .../auxiliary/unstable_generic_param.rs | 0 .../ui/stability-attribute/ctor-stability.rs | 0 .../default-body-stability-err.rs | 0 .../default-body-stability-err.stderr | 0 .../default-body-stability-ok-enables.rs | 0 .../default-body-stability-ok-impls.rs | 0 .../generics-default-stability-trait.rs | 0 .../generics-default-stability-trait.stderr | 0 .../generics-default-stability-where.rs | 0 .../generics-default-stability-where.stderr | 0 .../generics-default-stability.rs | 0 .../generics-default-stability.stderr | 0 .../ui/stability-attribute/issue-28075.rs | 0 .../ui/stability-attribute/issue-28075.stderr | 0 .../ui/stability-attribute/issue-28388-3.rs | 0 .../ui/stability-attribute/issue-28388-3.stderr | 0 .../issue-99286-stable-intrinsics.rs | 0 .../stability-attribute/missing-const-stability.rs | 0 .../missing-const-stability.stderr | 0 .../missing-stability-attr-at-top-level.rs | 0 .../missing-stability-attr-at-top-level.stderr | 0 .../stability-attribute-implies-missing.rs | 0 .../stability-attribute-implies-missing.stderr | 0 .../stability-attribute-implies-no-feature.rs | 0 .../stability-attribute-implies-no-feature.stderr | 0 .../stability-attribute-implies-using-stable.rs | 0 .../stability-attribute-implies-using-stable.stderr | 0 .../stability-attribute-implies-using-unstable.rs | 0 ...tability-attribute-implies-using-unstable.stderr | 0 .../stability-attribute-issue-43027.rs | 0 .../stability-attribute-issue.rs | 0 .../stability-attribute-issue.stderr | 0 ...stability-attribute-non-staged-force-unstable.rs | 0 ...ility-attribute-non-staged-force-unstable.stderr | 0 .../stability-attribute-non-staged.rs | 0 .../stability-attribute-non-staged.stderr | 0 .../stability-attribute-sanity-2.rs | 0 .../stability-attribute-sanity-2.stderr | 0 .../stability-attribute-sanity-3.rs | 0 .../stability-attribute-sanity-3.stderr | 0 .../stability-attribute-sanity-4.rs | 0 .../stability-attribute-sanity-4.stderr | 0 .../stability-attribute-sanity.rs | 0 .../stability-attribute-sanity.stderr | 0 .../stability-attribute-trait-impl.rs | 0 .../stability-attribute-trait-impl.stderr | 0 .../stability-in-private-module.rs | 0 .../stability-in-private-module.stderr | 0 .../ui/stability-attribute/stable-in-unstable.rs | 0 .../stability-attribute/stable-in-unstable.stderr | 0 .../suggest-vec-allocator-api.rs | 0 .../suggest-vec-allocator-api.stderr | 0 {src/test => tests}/ui/stable-addr-of.rs | 0 .../warn-stack-protector-unsupported.all.stderr | 0 .../warn-stack-protector-unsupported.basic.stderr | 0 .../warn-stack-protector-unsupported.rs | 0 .../warn-stack-protector-unsupported.strong.stderr | 0 .../ui/static/auxiliary/extern-statics.rs | 0 .../ui/static/auxiliary/issue_24843.rs | 0 .../ui/static/auxiliary/nested_item.rs | 0 .../ui/static/auxiliary/static-priv-by-default.rs | 0 .../ui/static/auxiliary/static_priv_by_default.rs | 0 {src/test => tests}/ui/static/bad-const-type.rs | 0 {src/test => tests}/ui/static/bad-const-type.stderr | 0 {src/test => tests}/ui/static/issue-18118-2.rs | 0 {src/test => tests}/ui/static/issue-18118-2.stderr | 0 {src/test => tests}/ui/static/issue-18118.rs | 0 {src/test => tests}/ui/static/issue-18118.stderr | 0 {src/test => tests}/ui/static/issue-24843.rs | 0 {src/test => tests}/ui/static/issue-34194.rs | 0 {src/test => tests}/ui/static/issue-5216.rs | 0 {src/test => tests}/ui/static/issue-5216.stderr | 0 {src/test => tests}/ui/static/nested_item_main.rs | 0 .../ui/static/refer-to-other-statics-by-value.rs | 0 .../ui/static/safe-extern-statics-mut.mir.stderr | 0 .../ui/static/safe-extern-statics-mut.rs | 0 .../ui/static/safe-extern-statics-mut.thir.stderr | 0 .../ui/static/safe-extern-statics.mir.stderr | 0 .../test => tests}/ui/static/safe-extern-statics.rs | 0 .../ui/static/safe-extern-statics.thir.stderr | 0 {src/test => tests}/ui/static/static-closures.rs | 0 .../test => tests}/ui/static/static-closures.stderr | 0 {src/test => tests}/ui/static/static-drop-scope.rs | 0 .../ui/static/static-drop-scope.stderr | 0 {src/test => tests}/ui/static/static-extern-type.rs | 0 .../ui/static/static-items-cant-move.rs | 0 .../ui/static/static-items-cant-move.stderr | 0 .../ui/static/static-lifetime-bound.rs | 0 .../ui/static/static-lifetime-bound.stderr | 0 {src/test => tests}/ui/static/static-lifetime.rs | 0 .../test => tests}/ui/static/static-lifetime.stderr | 0 .../ui/static/static-method-privacy.rs | 0 .../ui/static/static-method-privacy.stderr | 0 .../ui/static/static-mut-bad-types.rs | 0 .../ui/static/static-mut-bad-types.stderr | 0 .../static-mut-foreign-requires-unsafe.mir.stderr | 0 .../ui/static/static-mut-foreign-requires-unsafe.rs | 0 .../static-mut-foreign-requires-unsafe.thir.stderr | 0 .../ui/static/static-mut-not-constant.rs | 0 .../ui/static/static-mut-not-constant.stderr | 0 {src/test => tests}/ui/static/static-mut-not-pat.rs | 0 .../ui/static/static-mut-not-pat.stderr | 0 .../ui/static/static-mut-requires-unsafe.mir.stderr | 0 .../ui/static/static-mut-requires-unsafe.rs | 0 .../static/static-mut-requires-unsafe.thir.stderr | 0 .../ui/static/static-priv-by-default2.rs | 0 .../ui/static/static-priv-by-default2.stderr | 0 .../ui/static/static-reference-to-fn-1.rs | 0 .../ui/static/static-reference-to-fn-1.stderr | 0 .../ui/static/static-reference-to-fn-2.rs | 0 .../ui/static/static-reference-to-fn-2.stderr | 0 .../test => tests}/ui/static/static-region-bound.rs | 0 .../ui/static/static-region-bound.stderr | 0 .../ui/static/static-vec-repeat-not-constant.rs | 0 .../ui/static/static-vec-repeat-not-constant.stderr | 0 .../ui/static/static_sized_requirement.rs | 0 .../ui/static/thread-local-in-ctfe.rs | 0 .../ui/static/thread-local-in-ctfe.stderr | 0 .../auxiliary/static-function-pointer-aux.rs | 0 .../ui/statics/auxiliary/static-methods-crate.rs | 0 .../ui/statics/auxiliary/static_fn_inline_xc_aux.rs | 0 .../ui/statics/auxiliary/static_fn_trait_xc_aux.rs | 0 .../ui/statics/auxiliary/static_mut_xc.rs | 0 .../ui/statics/issue-14227.mir.stderr | 0 {src/test => tests}/ui/statics/issue-14227.rs | 0 .../ui/statics/issue-14227.thir.stderr | 0 {src/test => tests}/ui/statics/issue-15261.rs | 0 {src/test => tests}/ui/statics/issue-17233.rs | 0 .../ui/statics/issue-17718-static-sync.rs | 0 .../ui/statics/issue-17718-static-sync.stderr | 0 .../statics/issue-17718-static-unsafe-interior.rs | 0 {src/test => tests}/ui/statics/issue-44373-2.rs | 0 {src/test => tests}/ui/statics/issue-44373.rs | 0 {src/test => tests}/ui/statics/issue-44373.stderr | 0 {src/test => tests}/ui/statics/issue-91050-1.rs | 0 {src/test => tests}/ui/statics/issue-91050-2.rs | 0 .../ui/statics/static-fn-inline-xc.rs | 0 .../test => tests}/ui/statics/static-fn-trait-xc.rs | 0 .../ui/statics/static-function-pointer-xc.rs | 0 .../ui/statics/static-function-pointer.rs | 0 {src/test => tests}/ui/statics/static-impl.rs | 0 .../static-method-in-trait-with-tps-intracrate.rs | 0 .../ui/statics/static-method-xcrate.rs | 0 .../ui/statics/static-methods-in-traits.rs | 0 .../ui/statics/static-methods-in-traits2.rs | 0 {src/test => tests}/ui/statics/static-mut-xc.rs | 0 {src/test => tests}/ui/statics/static-promotion.rs | 0 {src/test => tests}/ui/statics/static-recursive.rs | 0 .../test => tests}/ui/statics/uninhabited-static.rs | 0 .../ui/statics/uninhabited-static.stderr | 0 {src/test => tests}/ui/stats/hir-stats.rs | 0 {src/test => tests}/ui/stats/hir-stats.stderr | 0 {src/test => tests}/ui/std-backtrace.rs | 0 {src/test => tests}/ui/std-uncopyable-atomics.rs | 0 .../test => tests}/ui/std-uncopyable-atomics.stderr | 0 {src/test => tests}/ui/stdio-is-blocking.rs | 0 .../ui/stdlib-unit-tests/builtin-clone.rs | 0 .../ui/stdlib-unit-tests/eq-multidispatch.rs | 0 .../ui/stdlib-unit-tests/issue-21058.rs | 0 {src/test => tests}/ui/stdlib-unit-tests/istr.rs | 0 .../log-knows-the-names-of-variants-in-std.rs | 0 .../ui/stdlib-unit-tests/matches2021.rs | 0 .../minmax-stability-issue-23687.rs | 0 .../test => tests}/ui/stdlib-unit-tests/not-sync.rs | 0 .../ui/stdlib-unit-tests/not-sync.stderr | 0 .../ui/stdlib-unit-tests/raw-fat-ptr.rs | 0 .../ui/stdlib-unit-tests/seq-compare.rs | 0 .../ui/stdlib-unit-tests/volatile-fat-ptr.rs | 0 .../test => tests}/ui/stmt_expr_attrs_no_feature.rs | 0 .../ui/stmt_expr_attrs_no_feature.stderr | 0 {src/test => tests}/ui/str/str-array-assignment.rs | 0 .../ui/str/str-array-assignment.stderr | 0 {src/test => tests}/ui/str/str-as-char.fixed | 0 {src/test => tests}/ui/str/str-as-char.rs | 0 {src/test => tests}/ui/str/str-as-char.stderr | 0 .../ui/str/str-concat-on-double-ref.rs | 0 .../ui/str/str-concat-on-double-ref.stderr | 0 {src/test => tests}/ui/str/str-escape.rs | 0 {src/test => tests}/ui/str/str-escape.stderr | 0 {src/test => tests}/ui/str/str-idx.rs | 0 {src/test => tests}/ui/str/str-idx.stderr | 0 {src/test => tests}/ui/str/str-lit-type-mismatch.rs | 0 .../ui/str/str-lit-type-mismatch.stderr | 0 {src/test => tests}/ui/str/str-mut-idx.rs | 0 {src/test => tests}/ui/str/str-mut-idx.stderr | 0 {src/test => tests}/ui/str/str-overrun.rs | 0 {src/test => tests}/ui/string-box-error.rs | 0 {src/test => tests}/ui/struct-ctor-mangling.rs | 0 {src/test => tests}/ui/structs-enums/align-enum.rs | 0 .../test => tests}/ui/structs-enums/align-struct.rs | 0 .../ui/structs-enums/auxiliary/cci_class.rs | 0 .../ui/structs-enums/auxiliary/cci_class_2.rs | 0 .../ui/structs-enums/auxiliary/cci_class_3.rs | 0 .../ui/structs-enums/auxiliary/cci_class_4.rs | 0 .../ui/structs-enums/auxiliary/cci_class_6.rs | 0 .../ui/structs-enums/auxiliary/cci_class_cast.rs | 0 .../ui/structs-enums/auxiliary/cci_class_trait.rs | 0 .../ui/structs-enums/auxiliary/empty-struct.rs | 0 .../auxiliary/namespaced_enum_emulate_flat.rs | 0 .../ui/structs-enums/auxiliary/namespaced_enums.rs | 0 .../ui/structs-enums/auxiliary/newtype_struct_xc.rs | 0 .../auxiliary/struct_destructuring_cross_crate.rs | 0 .../auxiliary/struct_variant_xc_aux.rs | 0 .../auxiliary/xcrate_struct_aliases.rs | 0 .../ui/structs-enums/borrow-tuple-fields.rs | 0 .../class-cast-to-trait-cross-crate-2.rs | 0 .../class-cast-to-trait-multiple-types.rs | 0 .../ui/structs-enums/class-cast-to-trait.rs | 0 {src/test => tests}/ui/structs-enums/class-dtor.rs | 0 .../ui/structs-enums/class-exports.rs | 0 .../class-impl-very-parameterized-trait.rs | 0 .../class-implement-trait-cross-crate.rs | 0 .../ui/structs-enums/class-implement-traits.rs | 0 .../ui/structs-enums/class-method-cross-crate.rs | 0 .../ui/structs-enums/class-methods-cross-crate.rs | 0 .../ui/structs-enums/class-methods.rs | 0 .../structs-enums/class-poly-methods-cross-crate.rs | 0 .../ui/structs-enums/class-poly-methods.rs | 0 .../ui/structs-enums/class-separate-impl.rs | 0 .../ui/structs-enums/class-str-field.rs | 0 .../ui/structs-enums/class-typarams.rs | 0 .../ui/structs-enums/classes-cross-crate.rs | 0 .../ui/structs-enums/classes-self-referential.rs | 0 .../ui/structs-enums/classes-simple-cross-crate.rs | 0 .../ui/structs-enums/classes-simple-method.rs | 0 .../ui/structs-enums/classes-simple.rs | 0 {src/test => tests}/ui/structs-enums/classes.rs | 0 .../ui/structs-enums/codegen-tag-static-padding.rs | 0 .../ui/structs-enums/compare-generic-enums.rs | 0 .../structs-enums/cross-crate-newtype-struct-pat.rs | 0 .../ui/structs-enums/discrim-explicit-23030.rs | 0 .../ui/structs-enums/empty-struct-braces.rs | 0 {src/test => tests}/ui/structs-enums/empty-tag.rs | 0 .../ui/structs-enums/enum-alignment.rs | 0 .../ui/structs-enums/enum-clike-ffi-as-int.rs | 0 {src/test => tests}/ui/structs-enums/enum-discr.rs | 0 .../ui/structs-enums/enum-discrim-autosizing.rs | 0 .../ui/structs-enums/enum-discrim-manual-sizing.rs | 0 .../ui/structs-enums/enum-discrim-range-overflow.rs | 0 .../ui/structs-enums/enum-discrim-width-stuff.rs | 0 .../ui/structs-enums/enum-disr-val-pretty.rs | 0 .../ui/structs-enums/enum-export-inheritance.rs | 0 .../ui/structs-enums/enum-layout-optimization.rs | 0 .../structs-enums/enum-non-c-like-repr-c-and-int.rs | 0 .../ui/structs-enums/enum-non-c-like-repr-c.rs | 0 .../ui/structs-enums/enum-non-c-like-repr-int.rs | 0 .../ui/structs-enums/enum-null-pointer-opt.rs | 0 .../enum-nullable-const-null-with-fields.rs | 0 .../enum-nullable-simplifycfg-misopt.rs | 0 .../ui/structs-enums/enum-univariant-repr.rs | 0 .../ui/structs-enums/enum-variants.rs | 0 .../ui/structs-enums/enum-vec-initializer.rs | 0 .../ui/structs-enums/export-abstract-tag.rs | 0 .../ui/structs-enums/export-tag-variant.rs | 0 .../ui/structs-enums/expr-if-struct.rs | 0 .../ui/structs-enums/expr-match-struct.rs | 0 .../ui/structs-enums/field-destruction-order.rs | 0 .../ui/structs-enums/foreign-struct.rs | 0 .../ui/structs-enums/functional-struct-upd.rs | 0 {src/test => tests}/ui/structs-enums/issue-1701.rs | 0 .../test => tests}/ui/structs-enums/issue-2718-a.rs | 0 .../ui/structs-enums/issue-2718-a.stderr | 0 {src/test => tests}/ui/structs-enums/issue-38002.rs | 0 {src/test => tests}/ui/structs-enums/issue-50731.rs | 0 {src/test => tests}/ui/structs-enums/ivec-tag.rs | 0 .../module-qualified-struct-destructure.rs | 0 .../ui/structs-enums/multiple-reprs.rs | 0 .../namespaced-enum-emulate-flat-xc.rs | 0 .../structs-enums/namespaced-enum-emulate-flat.rs | 0 .../namespaced-enum-glob-import-xcrate.rs | 0 .../ui/structs-enums/namespaced-enum-glob-import.rs | 0 .../ui/structs-enums/namespaced-enums-xcrate.rs | 0 .../ui/structs-enums/namespaced-enums.rs | 0 .../ui/structs-enums/nested-enum-same-names.rs | 0 .../ui/structs-enums/newtype-struct-drop-run.rs | 0 .../ui/structs-enums/newtype-struct-with-dtor.rs | 0 .../ui/structs-enums/newtype-struct-xc-2.rs | 0 .../ui/structs-enums/newtype-struct-xc.rs | 0 .../test => tests}/ui/structs-enums/nonzero-enum.rs | 0 .../ui/structs-enums/numeric-fields.rs | 0 .../ui/structs-enums/rec-align-u32.rs | 0 .../ui/structs-enums/rec-align-u64.rs | 0 {src/test => tests}/ui/structs-enums/rec-auto.rs | 0 {src/test => tests}/ui/structs-enums/rec-extend.rs | 0 {src/test => tests}/ui/structs-enums/rec-tup.rs | 0 {src/test => tests}/ui/structs-enums/rec.rs | 0 {src/test => tests}/ui/structs-enums/record-pat.rs | 0 .../ui/structs-enums/resource-in-struct.rs | 0 .../ui/structs-enums/simple-generic-tag.rs | 0 .../ui/structs-enums/simple-match-generic-tag.rs | 0 .../ui/structs-enums/small-enum-range-edge.rs | 0 .../ui/structs-enums/small-enums-with-fields.rs | 0 .../ui/structs-enums/struct-aliases-xcrate.rs | 0 .../ui/structs-enums/struct-aliases.rs | 0 .../struct-destructuring-cross-crate.rs | 0 .../struct-enum-ignoring-field-with-underscore.rs | 0 ...truct-enum-ignoring-field-with-underscore.stderr | 0 .../ui/structs-enums/struct-field-shorthand.rs | 0 .../structs-enums/struct-like-variant-construct.rs | 0 .../ui/structs-enums/struct-like-variant-match.rs | 0 .../struct-lit-functional-no-fields.rs | 0 .../ui/structs-enums/struct-literal-dtor.rs | 0 .../ui/structs-enums/struct-new-as-field-name.rs | 0 .../ui/structs-enums/struct-order-of-eval-1.rs | 0 .../ui/structs-enums/struct-order-of-eval-2.rs | 0 .../ui/structs-enums/struct-order-of-eval-3.rs | 0 .../ui/structs-enums/struct-order-of-eval-4.rs | 0 .../ui/structs-enums/struct-partial-move-1.rs | 0 .../ui/structs-enums/struct-partial-move-2.rs | 0 .../ui/structs-enums/struct-path-associated-type.rs | 0 .../ui/structs-enums/struct-path-self.rs | 0 .../ui/structs-enums/struct-pattern-matching.rs | 0 .../ui/structs-enums/struct-rec/issue-74224.rs | 0 .../ui/structs-enums/struct-rec/issue-74224.stderr | 0 .../ui/structs-enums/struct-rec/issue-84611.rs | 0 .../ui/structs-enums/struct-rec/issue-84611.stderr | 0 .../struct-rec/mutual-struct-recursion.rs | 0 .../struct-rec/mutual-struct-recursion.stderr | 0 .../struct-variant-field-visibility.rs | 0 .../ui/structs-enums/struct_variant_xc.rs | 0 .../ui/structs-enums/struct_variant_xc_match.rs | 0 .../ui/structs-enums/tag-align-dyn-u64.rs | 0 .../ui/structs-enums/tag-align-dyn-variants.rs | 0 .../ui/structs-enums/tag-align-shape.rs | 0 .../ui/structs-enums/tag-align-u64.rs | 0 .../ui/structs-enums/tag-disr-val-shape.rs | 0 {src/test => tests}/ui/structs-enums/tag-exports.rs | 0 .../test => tests}/ui/structs-enums/tag-in-block.rs | 0 .../structs-enums/tag-variant-disr-type-mismatch.rs | 0 .../ui/structs-enums/tag-variant-disr-val.rs | 0 {src/test => tests}/ui/structs-enums/tag.rs | 0 .../ui/structs-enums/tuple-struct-construct.rs | 0 .../tuple-struct-constructor-pointer.rs | 0 .../ui/structs-enums/tuple-struct-destructuring.rs | 0 .../ui/structs-enums/tuple-struct-matching.rs | 0 .../ui/structs-enums/tuple-struct-trivial.rs | 0 {src/test => tests}/ui/structs-enums/type-sizes.rs | 0 .../ui/structs-enums/uninstantiable-struct.rs | 0 .../ui/structs-enums/unit-like-struct-drop-run.rs | 0 .../ui/structs-enums/unit-like-struct.rs | 0 .../ui/structs-enums/variant-structs-trivial.rs | 0 .../ui/structs/auxiliary/struct_field_privacy.rs | 0 .../ui/structs/auxiliary/struct_variant_privacy.rs | 0 .../structs/incomplete-fn-in-struct-definition.rs | 0 .../incomplete-fn-in-struct-definition.stderr | 0 {src/test => tests}/ui/structs/issue-80853.rs | 0 {src/test => tests}/ui/structs/issue-80853.stderr | 0 {src/test => tests}/ui/structs/large-records.rs | 0 .../ui/structs/multi-line-fru-suggestion.rs | 0 .../ui/structs/multi-line-fru-suggestion.stderr | 0 {src/test => tests}/ui/structs/rhs-type.rs | 0 .../ui/structs/struct-base-wrong-type.rs | 0 .../ui/structs/struct-base-wrong-type.stderr | 0 .../ui/structs/struct-duplicate-comma.fixed | 0 .../ui/structs/struct-duplicate-comma.rs | 0 .../ui/structs/struct-duplicate-comma.stderr | 0 {src/test => tests}/ui/structs/struct-field-cfg.rs | 0 .../ui/structs/struct-field-cfg.stderr | 0 .../ui/structs/struct-field-init-syntax.rs | 0 .../ui/structs/struct-field-init-syntax.stderr | 0 .../ui/structs/struct-field-privacy.rs | 0 .../ui/structs/struct-field-privacy.stderr | 0 .../ui/structs/struct-fields-decl-dupe.rs | 0 .../ui/structs/struct-fields-decl-dupe.stderr | 0 .../test => tests}/ui/structs/struct-fields-dupe.rs | 0 .../ui/structs/struct-fields-dupe.stderr | 0 .../ui/structs/struct-fields-hints-no-dupe.rs | 0 .../ui/structs/struct-fields-hints-no-dupe.stderr | 0 .../ui/structs/struct-fields-hints.rs | 0 .../ui/structs/struct-fields-hints.stderr | 0 .../ui/structs/struct-fields-missing.rs | 0 .../ui/structs/struct-fields-missing.stderr | 0 .../structs/struct-fields-shorthand-unresolved.rs | 0 .../struct-fields-shorthand-unresolved.stderr | 0 .../ui/structs/struct-fields-shorthand.rs | 0 .../ui/structs/struct-fields-shorthand.stderr | 0 .../ui/structs/struct-fields-too-many.rs | 0 .../ui/structs/struct-fields-too-many.stderr | 0 .../test => tests}/ui/structs/struct-fields-typo.rs | 0 .../ui/structs/struct-fields-typo.stderr | 0 .../ui/structs/struct-fn-in-definition.rs | 0 .../ui/structs/struct-fn-in-definition.stderr | 0 .../ui/structs/struct-missing-comma.fixed | 0 .../ui/structs/struct-missing-comma.rs | 0 .../ui/structs/struct-missing-comma.stderr | 0 .../ui/structs/struct-pat-derived-error.rs | 0 .../ui/structs/struct-pat-derived-error.stderr | 0 .../ui/structs/struct-path-alias-bounds.rs | 0 .../ui/structs/struct-path-alias-bounds.stderr | 0 .../ui/structs/struct-path-associated-type.rs | 0 .../ui/structs/struct-path-associated-type.stderr | 0 .../ui/structs/struct-path-self-type-mismatch.rs | 0 .../structs/struct-path-self-type-mismatch.stderr | 0 {src/test => tests}/ui/structs/struct-path-self.rs | 0 .../ui/structs/struct-path-self.stderr | 0 .../ui/structs/struct-record-suggestion.fixed | 0 .../ui/structs/struct-record-suggestion.rs | 0 .../ui/structs/struct-record-suggestion.stderr | 0 .../ui/structs/struct-tuple-field-names.rs | 0 .../ui/structs/struct-tuple-field-names.stderr | 0 .../ui/structs/struct-variant-privacy-xc.rs | 0 .../ui/structs/struct-variant-privacy-xc.stderr | 0 .../ui/structs/struct-variant-privacy.rs | 0 .../ui/structs/struct-variant-privacy.stderr | 0 .../structs/structure-constructor-type-mismatch.rs | 0 .../structure-constructor-type-mismatch.stderr | 0 .../ui/structs/suggest-private-fields.rs | 0 .../ui/structs/suggest-private-fields.stderr | 0 ...est-replacing-field-when-specifying-same-type.rs | 0 ...replacing-field-when-specifying-same-type.stderr | 0 .../ui/structs/unresolved-struct-with-fru.rs | 0 .../ui/structs/unresolved-struct-with-fru.stderr | 0 {src/test => tests}/ui/suggestions/abi-typo.fixed | 0 {src/test => tests}/ui/suggestions/abi-typo.rs | 0 {src/test => tests}/ui/suggestions/abi-typo.stderr | 0 .../adt-param-with-implicit-sized-bound.rs | 0 .../adt-param-with-implicit-sized-bound.stderr | 0 .../ui/suggestions/args-instead-of-tuple-errors.rs | 0 .../suggestions/args-instead-of-tuple-errors.stderr | 0 .../ui/suggestions/args-instead-of-tuple.fixed | 0 .../ui/suggestions/args-instead-of-tuple.rs | 0 .../ui/suggestions/args-instead-of-tuple.stderr | 0 {src/test => tests}/ui/suggestions/as-ref-2.rs | 0 {src/test => tests}/ui/suggestions/as-ref-2.stderr | 0 {src/test => tests}/ui/suggestions/as-ref.rs | 0 {src/test => tests}/ui/suggestions/as-ref.stderr | 0 .../ui/suggestions/assoc-const-as-field.rs | 0 .../ui/suggestions/assoc-const-as-field.stderr | 0 .../ui/suggestions/assoc-const-as-fn.rs | 0 .../ui/suggestions/assoc-const-as-fn.stderr | 0 .../ui/suggestions/assoc-ct-for-assoc-method.rs | 0 .../ui/suggestions/assoc-ct-for-assoc-method.stderr | 0 .../ui/suggestions/assoc-type-in-method-return.rs | 0 .../suggestions/assoc-type-in-method-return.stderr | 0 .../ui/suggestions/assoc_fn_without_self.rs | 0 .../ui/suggestions/assoc_fn_without_self.stderr | 0 ...assed-as-arg-where-it-should-have-been-called.rs | 0 ...d-as-arg-where-it-should-have-been-called.stderr | 0 .../ui/suggestions/attribute-typos.rs | 0 .../ui/suggestions/attribute-typos.stderr | 0 {src/test => tests}/ui/suggestions/auxiliary/foo.rs | 0 .../ui/suggestions/auxiliary/issue-61963-1.rs | 0 .../ui/suggestions/auxiliary/issue-61963.rs | 0 .../ui/suggestions/auxiliary/issue-81839.rs | 0 .../test => tests}/ui/suggestions/auxiliary/meow.rs | 0 .../ui/suggestions/auxiliary/not-object-safe.rs | 0 .../suggestions/auxiliary/proc-macro-type-error.rs | 0 .../ui/suggestions/bad-hex-float-lit.rs | 0 .../ui/suggestions/bad-hex-float-lit.stderr | 0 .../ui/suggestions/bool_typo_err_suggest.rs | 0 .../ui/suggestions/bool_typo_err_suggest.stderr | 0 .../ui/suggestions/borrow-for-loop-head.rs | 0 .../ui/suggestions/borrow-for-loop-head.stderr | 0 .../ui/suggestions/bound-suggestions.fixed | 0 .../ui/suggestions/bound-suggestions.rs | 0 .../ui/suggestions/bound-suggestions.stderr | 0 .../ui/suggestions/box-future-wrong-output.rs | 0 .../ui/suggestions/box-future-wrong-output.stderr | 0 .../ui/suggestions/boxed-variant-field.rs | 0 .../ui/suggestions/boxed-variant-field.stderr | 0 {src/test => tests}/ui/suggestions/call-boxed.rs | 0 .../test => tests}/ui/suggestions/call-boxed.stderr | 0 .../ui/suggestions/call-on-missing.rs | 0 .../ui/suggestions/call-on-missing.stderr | 0 .../ui/suggestions/call-on-unimplemented-ctor.rs | 0 .../suggestions/call-on-unimplemented-ctor.stderr | 0 .../ui/suggestions/call-on-unimplemented-fn-ptr.rs | 0 .../suggestions/call-on-unimplemented-fn-ptr.stderr | 0 .../chain-method-call-mutation-in-place.rs | 0 .../chain-method-call-mutation-in-place.stderr | 0 ...clone-on-unconstrained-borrowed-type-param.fixed | 0 .../clone-on-unconstrained-borrowed-type-param.rs | 0 ...lone-on-unconstrained-borrowed-type-param.stderr | 0 .../ui/suggestions/const-in-struct-pat.rs | 0 .../ui/suggestions/const-in-struct-pat.stderr | 0 {src/test => tests}/ui/suggestions/const-no-type.rs | 0 .../ui/suggestions/const-no-type.stderr | 0 .../const-pat-non-exaustive-let-new-var.rs | 0 .../const-pat-non-exaustive-let-new-var.stderr | 0 .../ui/suggestions/constrain-suggest-ice.rs | 0 .../ui/suggestions/constrain-suggest-ice.stderr | 0 .../ui/suggestions/constrain-trait.fixed | 0 .../ui/suggestions/constrain-trait.rs | 0 .../ui/suggestions/constrain-trait.stderr | 0 .../ui/suggestions/copied-and-cloned.fixed | 0 .../ui/suggestions/copied-and-cloned.rs | 0 .../ui/suggestions/copied-and-cloned.stderr | 0 .../core-std-import-order-issue-83564.rs | 0 .../core-std-import-order-issue-83564.stderr | 0 {src/test => tests}/ui/suggestions/count2len.rs | 0 {src/test => tests}/ui/suggestions/count2len.stderr | 0 .../ui/suggestions/crate-or-module-typo.rs | 0 .../ui/suggestions/crate-or-module-typo.stderr | 0 .../ui/suggestions/deref-path-method.rs | 0 .../ui/suggestions/deref-path-method.stderr | 0 .../ui/suggestions/derive-clone-for-eq.fixed | 0 .../ui/suggestions/derive-clone-for-eq.rs | 0 .../ui/suggestions/derive-clone-for-eq.stderr | 0 .../ui/suggestions/derive-macro-missing-bounds.rs | 0 .../suggestions/derive-macro-missing-bounds.stderr | 0 .../ui/suggestions/derive-trait-for-method-call.rs | 0 .../suggestions/derive-trait-for-method-call.stderr | 0 ...ot-attempt-to-add-suggestions-with-no-changes.rs | 0 ...ttempt-to-add-suggestions-with-no-changes.stderr | 0 .../dont-suggest-deref-inside-macro-issue-58298.rs | 0 ...nt-suggest-deref-inside-macro-issue-58298.stderr | 0 .../auxiliary/hidden-child.rs | 0 .../auxiliary/hidden-parent.rs | 0 .../hidden-child.rs | 0 .../hidden-child.stderr | 0 .../hidden-parent.rs | 0 .../hidden-parent.stderr | 0 .../suggestions/dont-suggest-pin-array-dot-set.rs | 0 .../dont-suggest-pin-array-dot-set.stderr | 0 .../dont-suggest-ref/duplicate-suggestions.rs | 0 .../dont-suggest-ref/duplicate-suggestions.stderr | 0 .../dont-suggest-ref/move-into-closure.rs | 0 .../dont-suggest-ref/move-into-closure.stderr | 0 .../ui/suggestions/dont-suggest-ref/simple.rs | 0 .../ui/suggestions/dont-suggest-ref/simple.stderr | 0 .../suggestions/dont-suggest-try_into-in-macros.rs | 0 .../dont-suggest-try_into-in-macros.stderr | 0 .../ui/suggestions/dont-suggest-ufcs-for-const.rs | 0 .../suggestions/dont-suggest-ufcs-for-const.stderr | 0 .../ui/suggestions/dont-try-removing-the-field.rs | 0 .../suggestions/dont-try-removing-the-field.stderr | 0 .../ui/suggestions/dont-wrap-ambiguous-receivers.rs | 0 .../dont-wrap-ambiguous-receivers.stderr | 0 .../ui/suggestions/enum-method-probe.fixed | 0 .../ui/suggestions/enum-method-probe.rs | 0 .../ui/suggestions/enum-method-probe.stderr | 0 .../ui/suggestions/enum-variant-arg-mismatch.rs | 0 .../ui/suggestions/enum-variant-arg-mismatch.stderr | 0 .../expected-boxed-future-isnt-pinned.rs | 0 .../expected-boxed-future-isnt-pinned.stderr | 0 .../suggestions/field-access-considering-privacy.rs | 0 .../field-access-considering-privacy.stderr | 0 .../ui/suggestions/field-access.fixed | 0 {src/test => tests}/ui/suggestions/field-access.rs | 0 .../ui/suggestions/field-access.stderr | 0 .../ui/suggestions/field-has-method.rs | 0 .../ui/suggestions/field-has-method.stderr | 0 ...assed-as-arg-where-it-should-have-been-called.rs | 0 ...d-as-arg-where-it-should-have-been-called.stderr | 0 .../ui/suggestions/fn-missing-lifetime-in-item.rs | 0 .../suggestions/fn-missing-lifetime-in-item.stderr | 0 .../fn-needing-specified-return-type-param.rs | 0 .../fn-needing-specified-return-type-param.stderr | 0 .../fn-or-tuple-struct-with-underscore-args.rs | 0 .../fn-or-tuple-struct-with-underscore-args.stderr | 0 .../suggestions/fn-or-tuple-struct-without-args.rs | 0 .../fn-or-tuple-struct-without-args.stderr | 0 .../ui/suggestions/fn-to-method-deeply-nested.rs | 0 .../suggestions/fn-to-method-deeply-nested.stderr | 0 {src/test => tests}/ui/suggestions/fn-to-method.rs | 0 .../ui/suggestions/fn-to-method.stderr | 0 .../ui/suggestions/fn-trait-notation.fixed | 0 .../ui/suggestions/fn-trait-notation.rs | 0 .../ui/suggestions/fn-trait-notation.stderr | 0 .../ui/suggestions/for-i-in-vec.fixed | 0 {src/test => tests}/ui/suggestions/for-i-in-vec.rs | 0 .../ui/suggestions/for-i-in-vec.stderr | 0 {src/test => tests}/ui/suggestions/format-borrow.rs | 0 .../ui/suggestions/format-borrow.stderr | 0 {src/test => tests}/ui/suggestions/if-let-typo.rs | 0 .../ui/suggestions/if-let-typo.stderr | 0 .../ui/suggestions/if-then-neeing-semi.rs | 0 .../ui/suggestions/if-then-neeing-semi.stderr | 0 .../suggestions/ignore-nested-field-binding.fixed | 0 .../ui/suggestions/ignore-nested-field-binding.rs | 0 .../suggestions/ignore-nested-field-binding.stderr | 0 .../imm-ref-trait-object-literal-bound-regions.rs | 0 ...mm-ref-trait-object-literal-bound-regions.stderr | 0 .../ui/suggestions/imm-ref-trait-object-literal.rs | 0 .../suggestions/imm-ref-trait-object-literal.stderr | 0 .../ui/suggestions/imm-ref-trait-object.rs | 0 .../ui/suggestions/imm-ref-trait-object.stderr | 0 ...mplicit-static-bound-needing-more-suggestions.rs | 0 ...cit-static-bound-needing-more-suggestions.stderr | 0 .../impl-on-dyn-trait-with-implicit-static-bound.rs | 0 ...l-on-dyn-trait-with-implicit-static-bound.stderr | 0 .../impl-trait-missing-lifetime-gated.rs | 0 .../impl-trait-missing-lifetime-gated.stderr | 0 .../ui/suggestions/impl-trait-missing-lifetime.rs | 0 .../suggestions/impl-trait-missing-lifetime.stderr | 0 .../impl-trait-return-trailing-semicolon.rs | 0 .../impl-trait-return-trailing-semicolon.stderr | 0 .../suggestions/impl-trait-with-missing-bounds.rs | 0 .../impl-trait-with-missing-bounds.stderr | 0 ...mpl-trait-with-missing-trait-bounds-in-arg.fixed | 0 .../impl-trait-with-missing-trait-bounds-in-arg.rs | 0 ...pl-trait-with-missing-trait-bounds-in-arg.stderr | 0 .../ui/suggestions/import-trait-for-method-call.rs | 0 .../suggestions/import-trait-for-method-call.stderr | 0 {src/test => tests}/ui/suggestions/inner_type.fixed | 0 {src/test => tests}/ui/suggestions/inner_type.rs | 0 .../test => tests}/ui/suggestions/inner_type.stderr | 0 {src/test => tests}/ui/suggestions/inner_type2.rs | 0 .../ui/suggestions/inner_type2.stderr | 0 {src/test => tests}/ui/suggestions/into-convert.rs | 0 .../ui/suggestions/into-convert.stderr | 0 {src/test => tests}/ui/suggestions/into-str.rs | 0 {src/test => tests}/ui/suggestions/into-str.stderr | 0 .../test => tests}/ui/suggestions/invalid-bin-op.rs | 0 .../ui/suggestions/invalid-bin-op.stderr | 0 .../ui/suggestions/issue-101065.fixed | 0 {src/test => tests}/ui/suggestions/issue-101065.rs | 0 .../ui/suggestions/issue-101065.stderr | 0 {src/test => tests}/ui/suggestions/issue-101421.rs | 0 .../ui/suggestions/issue-101421.stderr | 0 {src/test => tests}/ui/suggestions/issue-101465.rs | 0 .../ui/suggestions/issue-101465.stderr | 0 {src/test => tests}/ui/suggestions/issue-101623.rs | 0 .../ui/suggestions/issue-101623.stderr | 0 {src/test => tests}/ui/suggestions/issue-101984.rs | 0 .../ui/suggestions/issue-101984.stderr | 0 {src/test => tests}/ui/suggestions/issue-102354.rs | 0 .../ui/suggestions/issue-102354.stderr | 0 {src/test => tests}/ui/suggestions/issue-102892.rs | 0 .../ui/suggestions/issue-102892.stderr | 0 {src/test => tests}/ui/suggestions/issue-103112.rs | 0 .../ui/suggestions/issue-103112.stderr | 0 .../ui/suggestions/issue-104086-suggest-let.rs | 0 .../ui/suggestions/issue-104086-suggest-let.stderr | 0 {src/test => tests}/ui/suggestions/issue-104287.rs | 0 .../ui/suggestions/issue-104287.stderr | 0 {src/test => tests}/ui/suggestions/issue-104327.rs | 0 .../ui/suggestions/issue-104327.stderr | 0 {src/test => tests}/ui/suggestions/issue-104328.rs | 0 .../ui/suggestions/issue-104328.stderr | 0 {src/test => tests}/ui/suggestions/issue-105226.rs | 0 .../ui/suggestions/issue-105226.stderr | 0 {src/test => tests}/ui/suggestions/issue-105494.rs | 0 .../ui/suggestions/issue-105494.stderr | 0 {src/test => tests}/ui/suggestions/issue-105645.rs | 0 .../ui/suggestions/issue-105645.stderr | 0 .../suggestions/issue-106443-sugg-clone-for-arg.rs | 0 .../issue-106443-sugg-clone-for-arg.stderr | 0 .../issue-106443-sugg-clone-for-bound.rs | 0 .../issue-106443-sugg-clone-for-bound.stderr | 0 {src/test => tests}/ui/suggestions/issue-21673.rs | 0 .../ui/suggestions/issue-21673.stderr | 0 ...1055-missing-semicolon-between-call-and-tuple.rs | 0 ...-missing-semicolon-between-call-and-tuple.stderr | 0 .../test => tests}/ui/suggestions/issue-52820.fixed | 0 {src/test => tests}/ui/suggestions/issue-52820.rs | 0 .../ui/suggestions/issue-52820.stderr | 0 .../test => tests}/ui/suggestions/issue-53692.fixed | 0 {src/test => tests}/ui/suggestions/issue-53692.rs | 0 .../ui/suggestions/issue-53692.stderr | 0 {src/test => tests}/ui/suggestions/issue-57672.rs | 0 .../test => tests}/ui/suggestions/issue-59819.fixed | 0 {src/test => tests}/ui/suggestions/issue-59819.rs | 0 .../ui/suggestions/issue-59819.stderr | 0 .../test => tests}/ui/suggestions/issue-61226.fixed | 0 {src/test => tests}/ui/suggestions/issue-61226.rs | 0 .../ui/suggestions/issue-61226.stderr | 0 {src/test => tests}/ui/suggestions/issue-61963.rs | 0 .../ui/suggestions/issue-61963.stderr | 0 {src/test => tests}/ui/suggestions/issue-62843.rs | 0 .../ui/suggestions/issue-62843.stderr | 0 .../ui/suggestions/issue-64252-self-type.rs | 0 .../ui/suggestions/issue-64252-self-type.stderr | 0 .../suggestions/issue-66968-suggest-sorted-words.rs | 0 .../issue-66968-suggest-sorted-words.stderr | 0 {src/test => tests}/ui/suggestions/issue-68049-1.rs | 0 .../ui/suggestions/issue-68049-1.stderr | 0 {src/test => tests}/ui/suggestions/issue-68049-2.rs | 0 .../ui/suggestions/issue-68049-2.stderr | 0 .../ui/suggestions/issue-71394-no-from-impl.rs | 0 .../ui/suggestions/issue-71394-no-from-impl.stderr | 0 {src/test => tests}/ui/suggestions/issue-72766.rs | 0 .../ui/suggestions/issue-72766.stderr | 0 ...43-impl-trait-with-missing-bounds-on-async-fn.rs | 0 ...mpl-trait-with-missing-bounds-on-async-fn.stderr | 0 {src/test => tests}/ui/suggestions/issue-81098.rs | 0 .../ui/suggestions/issue-81098.stderr | 0 {src/test => tests}/ui/suggestions/issue-81839.rs | 0 .../ui/suggestions/issue-81839.stderr | 0 .../test => tests}/ui/suggestions/issue-82361.fixed | 0 {src/test => tests}/ui/suggestions/issue-82361.rs | 0 .../ui/suggestions/issue-82361.stderr | 0 {src/test => tests}/ui/suggestions/issue-82566-1.rs | 0 .../ui/suggestions/issue-82566-1.stderr | 0 {src/test => tests}/ui/suggestions/issue-82566-2.rs | 0 .../ui/suggestions/issue-82566-2.stderr | 0 .../test => tests}/ui/suggestions/issue-83892.fixed | 0 {src/test => tests}/ui/suggestions/issue-83892.rs | 0 .../ui/suggestions/issue-83892.stderr | 0 .../test => tests}/ui/suggestions/issue-83943.fixed | 0 {src/test => tests}/ui/suggestions/issue-83943.rs | 0 .../ui/suggestions/issue-83943.stderr | 0 {src/test => tests}/ui/suggestions/issue-84592.rs | 0 .../ui/suggestions/issue-84592.stderr | 0 {src/test => tests}/ui/suggestions/issue-84700.rs | 0 .../ui/suggestions/issue-84700.stderr | 0 {src/test => tests}/ui/suggestions/issue-84973-2.rs | 0 .../ui/suggestions/issue-84973-2.stderr | 0 .../ui/suggestions/issue-84973-blacklist.rs | 0 .../ui/suggestions/issue-84973-blacklist.stderr | 0 .../ui/suggestions/issue-84973-negative.rs | 0 .../ui/suggestions/issue-84973-negative.stderr | 0 {src/test => tests}/ui/suggestions/issue-84973.rs | 0 .../ui/suggestions/issue-84973.stderr | 0 {src/test => tests}/ui/suggestions/issue-85347.rs | 0 .../ui/suggestions/issue-85347.stderr | 0 ...o-suggest-unsized-indirection-in-where-clause.rs | 0 ...ggest-unsized-indirection-in-where-clause.stderr | 0 ...-check-where-clause-before-suggesting-unsized.rs | 0 ...ck-where-clause-before-suggesting-unsized.stderr | 0 .../ui/suggestions/issue-86100-tuple-paren-comma.rs | 0 .../issue-86100-tuple-paren-comma.stderr | 0 {src/test => tests}/ui/suggestions/issue-86667.rs | 0 .../ui/suggestions/issue-86667.stderr | 0 {src/test => tests}/ui/suggestions/issue-88730.rs | 0 .../ui/suggestions/issue-88730.stderr | 0 {src/test => tests}/ui/suggestions/issue-89064.rs | 0 .../ui/suggestions/issue-89064.stderr | 0 {src/test => tests}/ui/suggestions/issue-89333.rs | 0 .../ui/suggestions/issue-89333.stderr | 0 .../issue-90213-expected-boxfuture-self-ice.rs | 0 .../issue-90213-expected-boxfuture-self-ice.stderr | 0 {src/test => tests}/ui/suggestions/issue-90974.rs | 0 .../ui/suggestions/issue-90974.stderr | 0 {src/test => tests}/ui/suggestions/issue-96223.rs | 0 .../ui/suggestions/issue-96223.stderr | 0 {src/test => tests}/ui/suggestions/issue-96555.rs | 0 .../ui/suggestions/issue-96555.stderr | 0 .../test => tests}/ui/suggestions/issue-97677.fixed | 0 {src/test => tests}/ui/suggestions/issue-97677.rs | 0 .../ui/suggestions/issue-97677.stderr | 0 .../test => tests}/ui/suggestions/issue-97704.fixed | 0 {src/test => tests}/ui/suggestions/issue-97704.rs | 0 .../ui/suggestions/issue-97704.stderr | 0 {src/test => tests}/ui/suggestions/issue-97760.rs | 0 .../ui/suggestions/issue-97760.stderr | 0 {src/test => tests}/ui/suggestions/issue-98500.rs | 0 .../ui/suggestions/issue-98500.stderr | 0 {src/test => tests}/ui/suggestions/issue-99080.rs | 0 .../ui/suggestions/issue-99080.stderr | 0 {src/test => tests}/ui/suggestions/issue-99240-2.rs | 0 .../ui/suggestions/issue-99240-2.stderr | 0 {src/test => tests}/ui/suggestions/issue-99240.rs | 0 .../ui/suggestions/issue-99240.stderr | 0 .../js-style-comparison-op-separate-eq-token.rs | 0 .../js-style-comparison-op-separate-eq-token.stderr | 0 .../ui/suggestions/js-style-comparison-op.fixed | 0 .../ui/suggestions/js-style-comparison-op.rs | 0 .../ui/suggestions/js-style-comparison-op.stderr | 0 .../ui/suggestions/let-binding-init-expr-as-ty.rs | 0 .../suggestions/let-binding-init-expr-as-ty.stderr | 0 .../lifetimes/missing-lifetimes-in-signature-2.rs | 0 .../missing-lifetimes-in-signature-2.stderr | 0 ...issing-lifetimes-in-signature-before-const.fixed | 0 .../missing-lifetimes-in-signature-before-const.rs | 0 ...ssing-lifetimes-in-signature-before-const.stderr | 0 .../lifetimes/missing-lifetimes-in-signature.rs | 0 .../lifetimes/missing-lifetimes-in-signature.stderr | 0 .../lifetimes/trait-object-nested-in-impl-trait.rs | 0 .../trait-object-nested-in-impl-trait.stderr | 0 .../ui/suggestions/many-type-ascription.rs | 0 .../ui/suggestions/many-type-ascription.stderr | 0 .../ui/suggestions/match-ergonomics.rs | 0 .../ui/suggestions/match-ergonomics.stderr | 0 .../ui/suggestions/match-needing-semi.rs | 0 .../ui/suggestions/match-needing-semi.stderr | 0 .../ui/suggestions/match-prev-arm-needing-semi.rs | 0 .../suggestions/match-prev-arm-needing-semi.stderr | 0 ...h-different-arm-types-as-stmt-instead-of-expr.rs | 0 ...fferent-arm-types-as-stmt-instead-of-expr.stderr | 0 .../method-access-to-range-literal-typo.fixed | 0 .../method-access-to-range-literal-typo.rs | 0 .../method-access-to-range-literal-typo.stderr | 0 .../ui/suggestions/method-missing-parentheses.rs | 0 .../suggestions/method-missing-parentheses.stderr | 0 .../ui/suggestions/mismatched-types-numeric-from.rs | 0 .../mismatched-types-numeric-from.stderr | 0 .../missing-assoc-fn-applicable-suggestions.fixed | 0 .../missing-assoc-fn-applicable-suggestions.rs | 0 .../missing-assoc-fn-applicable-suggestions.stderr | 0 .../ui/suggestions/missing-assoc-fn.rs | 0 .../ui/suggestions/missing-assoc-fn.stderr | 0 .../missing-assoc-type-bound-restriction.rs | 0 .../missing-bound-in-derive-copy-impl-2.fixed | 0 .../missing-bound-in-derive-copy-impl-2.rs | 0 .../missing-bound-in-derive-copy-impl-2.stderr | 0 .../missing-bound-in-derive-copy-impl-3.fixed | 0 .../missing-bound-in-derive-copy-impl-3.rs | 0 .../missing-bound-in-derive-copy-impl-3.stderr | 0 .../missing-bound-in-derive-copy-impl.rs | 0 .../missing-bound-in-derive-copy-impl.stderr | 0 .../missing-bound-in-manual-copy-impl-2.fixed | 0 .../missing-bound-in-manual-copy-impl-2.rs | 0 .../missing-bound-in-manual-copy-impl-2.stderr | 0 .../missing-bound-in-manual-copy-impl.fixed | 0 .../missing-bound-in-manual-copy-impl.rs | 0 .../missing-bound-in-manual-copy-impl.stderr | 0 .../missing-lifetime-in-assoc-const-type.rs | 0 .../missing-lifetime-in-assoc-const-type.stderr | 0 .../ui/suggestions/missing-lifetime-specifier.rs | 0 .../suggestions/missing-lifetime-specifier.stderr | 0 .../ui/suggestions/missing-lt-for-hrtb.rs | 0 .../ui/suggestions/missing-lt-for-hrtb.stderr | 0 .../ui/suggestions/missing-trait-item.fixed | 0 .../ui/suggestions/missing-trait-item.rs | 0 .../ui/suggestions/missing-trait-item.stderr | 0 .../missing-type-param-used-in-param.fixed | 0 .../suggestions/missing-type-param-used-in-param.rs | 0 .../missing-type-param-used-in-param.stderr | 0 .../move-generic-to-trait-in-method-with-params.rs | 0 ...ve-generic-to-trait-in-method-with-params.stderr | 0 .../ui/suggestions/multibyte-escapes.rs | 0 .../ui/suggestions/multibyte-escapes.stderr | 0 .../ui/suggestions/mut-borrow-needed-by-trait.rs | 0 .../suggestions/mut-borrow-needed-by-trait.stderr | 0 .../ui/suggestions/mut-ref-reassignment.rs | 0 .../ui/suggestions/mut-ref-reassignment.stderr | 0 .../ui/suggestions/negative-literal-index.fixed | 0 .../ui/suggestions/negative-literal-index.rs | 0 .../ui/suggestions/negative-literal-index.stderr | 0 .../ui/suggestions/nested-non-tuple-tuple-struct.rs | 0 .../nested-non-tuple-tuple-struct.stderr | 0 .../ui/suggestions/no-extern-crate-in-type.rs | 0 .../ui/suggestions/no-extern-crate-in-type.stderr | 0 ...ent-field-present-in-subfield-recursion-limit.rs | 0 ...field-present-in-subfield-recursion-limit.stderr | 0 .../non-existent-field-present-in-subfield.fixed | 0 .../non-existent-field-present-in-subfield.rs | 0 .../non-existent-field-present-in-subfield.stderr | 0 .../object-unsafe-trait-references-self.rs | 0 .../object-unsafe-trait-references-self.stderr | 0 .../object-unsafe-trait-should-use-self.rs | 0 .../object-unsafe-trait-should-use-self.stderr | 0 ...object-unsafe-trait-should-use-where-sized.fixed | 0 .../object-unsafe-trait-should-use-where-sized.rs | 0 ...bject-unsafe-trait-should-use-where-sized.stderr | 0 .../ui/suggestions/opaque-type-error.rs | 0 .../ui/suggestions/opaque-type-error.stderr | 0 .../option-content-move-from-tuple-match.rs | 0 .../option-content-move-from-tuple-match.stderr | 0 .../ui/suggestions/option-content-move.rs | 0 .../ui/suggestions/option-content-move.stderr | 0 .../ui/suggestions/option-content-move2.rs | 0 .../ui/suggestions/option-content-move2.stderr | 0 .../test => tests}/ui/suggestions/option-to-bool.rs | 0 .../ui/suggestions/option-to-bool.stderr | 0 .../suggestions/parenthesized-deref-suggestion.rs | 0 .../parenthesized-deref-suggestion.stderr | 0 {src/test => tests}/ui/suggestions/path-by-value.rs | 0 .../ui/suggestions/path-by-value.stderr | 0 {src/test => tests}/ui/suggestions/path-display.rs | 0 .../ui/suggestions/path-display.stderr | 0 .../ui/suggestions/pattern-slice-vec.fixed | 0 .../ui/suggestions/pattern-slice-vec.rs | 0 .../ui/suggestions/pattern-slice-vec.stderr | 0 .../pattern-struct-with-slice-vec-field.rs | 0 .../pattern-struct-with-slice-vec-field.stderr | 0 {src/test => tests}/ui/suggestions/private-field.rs | 0 .../ui/suggestions/private-field.stderr | 0 .../ui/suggestions/raw-byte-string-prefix.rs | 0 .../ui/suggestions/raw-byte-string-prefix.stderr | 0 .../ui/suggestions/raw-name-use-suggestion.rs | 0 .../ui/suggestions/raw-name-use-suggestion.stderr | 0 .../recover-from-semicolon-trailing-item.rs | 0 .../recover-from-semicolon-trailing-item.stderr | 0 .../ui/suggestions/recover-invalid-float.fixed | 0 .../ui/suggestions/recover-invalid-float.rs | 0 .../ui/suggestions/recover-invalid-float.stderr | 0 ...er-missing-turbofish-surrounding-angle-braket.rs | 0 ...issing-turbofish-surrounding-angle-braket.stderr | 0 .../ui/suggestions/ref-pattern-binding.fixed | 0 .../ui/suggestions/ref-pattern-binding.rs | 0 .../ui/suggestions/ref-pattern-binding.stderr | 0 ...oval-of-multiline-trait-bound-in-where-clause.rs | 0 ...-of-multiline-trait-bound-in-where-clause.stderr | 0 {src/test => tests}/ui/suggestions/remove-as_str.rs | 0 .../ui/suggestions/remove-as_str.stderr | 0 .../ui/suggestions/restrict-type-argument.rs | 0 .../ui/suggestions/restrict-type-argument.stderr | 0 .../ui/suggestions/restrict-type-not-param.rs | 0 .../ui/suggestions/restrict-type-not-param.stderr | 0 .../ui/suggestions/return-bindings-multi.rs | 0 .../ui/suggestions/return-bindings-multi.stderr | 0 .../ui/suggestions/return-bindings.rs | 0 .../ui/suggestions/return-bindings.stderr | 0 .../ui/suggestions/return-closures.rs | 0 .../ui/suggestions/return-closures.stderr | 0 .../test => tests}/ui/suggestions/return-cycle-2.rs | 0 .../ui/suggestions/return-cycle-2.stderr | 0 {src/test => tests}/ui/suggestions/return-cycle.rs | 0 .../ui/suggestions/return-cycle.stderr | 0 .../ui/suggestions/return-elided-lifetime.rs | 0 .../ui/suggestions/return-elided-lifetime.stderr | 0 .../ui/suggestions/return-without-lifetime.rs | 0 .../ui/suggestions/return-without-lifetime.stderr | 0 .../ui/suggestions/shadowed-lplace-method-2.rs | 0 .../ui/suggestions/shadowed-lplace-method-2.stderr | 0 .../ui/suggestions/shadowed-lplace-method.fixed | 0 .../ui/suggestions/shadowed-lplace-method.rs | 0 .../ui/suggestions/shadowed-lplace-method.stderr | 0 .../ui/suggestions/slice-issue-87994.rs | 0 .../ui/suggestions/slice-issue-87994.stderr | 0 .../struct-field-type-including-single-colon.rs | 0 .../struct-field-type-including-single-colon.stderr | 0 .../ui/suggestions/struct-initializer-comma.fixed | 0 .../ui/suggestions/struct-initializer-comma.rs | 0 .../ui/suggestions/struct-initializer-comma.stderr | 0 .../ui/suggestions/sugg-else-for-closure.fixed | 0 .../ui/suggestions/sugg-else-for-closure.rs | 0 .../ui/suggestions/sugg-else-for-closure.stderr | 0 .../sugg_with_positional_args_and_debug_fmt.rs | 0 .../sugg_with_positional_args_and_debug_fmt.stderr | 0 .../ui/suggestions/suggest-add-self.rs | 0 .../ui/suggestions/suggest-add-self.stderr | 0 ...ggest-adding-reference-to-trait-assoc-item.fixed | 0 .../suggest-adding-reference-to-trait-assoc-item.rs | 0 ...gest-adding-reference-to-trait-assoc-item.stderr | 0 .../suggestions/suggest-assoc-fn-call-deref.fixed | 0 .../ui/suggestions/suggest-assoc-fn-call-deref.rs | 0 .../suggestions/suggest-assoc-fn-call-deref.stderr | 0 ...gest-assoc-fn-call-with-turbofish-placeholder.rs | 0 ...-assoc-fn-call-with-turbofish-placeholder.stderr | 0 ...st-assoc-fn-call-with-turbofish-through-deref.rs | 0 ...ssoc-fn-call-with-turbofish-through-deref.stderr | 0 .../suggest-assoc-fn-call-with-turbofish.fixed | 0 .../suggest-assoc-fn-call-with-turbofish.rs | 0 .../suggest-assoc-fn-call-with-turbofish.stderr | 0 .../suggestions/suggest-blanket-impl-local-trait.rs | 0 .../suggest-blanket-impl-local-trait.stderr | 0 .../ui/suggestions/suggest-borrow-to-dyn-object.rs | 0 .../suggestions/suggest-borrow-to-dyn-object.stderr | 0 .../test => tests}/ui/suggestions/suggest-box.fixed | 0 {src/test => tests}/ui/suggestions/suggest-box.rs | 0 .../ui/suggestions/suggest-box.stderr | 0 .../ui/suggestions/suggest-change-mut.rs | 0 .../ui/suggestions/suggest-change-mut.stderr | 0 .../ui/suggestions/suggest-closure-return-type-1.rs | 0 .../suggest-closure-return-type-1.stderr | 0 .../ui/suggestions/suggest-closure-return-type-2.rs | 0 .../suggest-closure-return-type-2.stderr | 0 .../ui/suggestions/suggest-closure-return-type-3.rs | 0 .../suggest-closure-return-type-3.stderr | 0 .../suggestions/suggest-dereferencing-index.fixed | 0 .../ui/suggestions/suggest-dereferencing-index.rs | 0 .../suggestions/suggest-dereferencing-index.stderr | 0 .../suggest-full-enum-variant-for-local-module.rs | 0 ...uggest-full-enum-variant-for-local-module.stderr | 0 .../suggest-imm-mut-trait-implementations.rs | 0 .../suggest-imm-mut-trait-implementations.stderr | 0 .../suggestions/suggest-impl-trait-lifetime.fixed | 0 .../ui/suggestions/suggest-impl-trait-lifetime.rs | 0 .../suggestions/suggest-impl-trait-lifetime.stderr | 0 .../test => tests}/ui/suggestions/suggest-labels.rs | 0 .../ui/suggestions/suggest-labels.stderr | 0 .../ui/suggestions/suggest-let-for-assignment.fixed | 0 .../ui/suggestions/suggest-let-for-assignment.rs | 0 .../suggestions/suggest-let-for-assignment.stderr | 0 .../ui/suggestions/suggest-methods.rs | 0 .../ui/suggestions/suggest-methods.stderr | 0 .../ui/suggestions/suggest-move-lifetimes.rs | 0 .../ui/suggestions/suggest-move-lifetimes.stderr | 0 .../ui/suggestions/suggest-move-types.rs | 0 .../ui/suggestions/suggest-move-types.stderr | 0 .../suggest-mut-method-for-loop-hashmap.fixed | 0 .../suggest-mut-method-for-loop-hashmap.rs | 0 .../suggest-mut-method-for-loop-hashmap.stderr | 0 .../ui/suggestions/suggest-mut-method-for-loop.rs | 0 .../suggestions/suggest-mut-method-for-loop.stderr | 0 .../ui/suggestions/suggest-on-bare-closure-call.rs | 0 .../suggestions/suggest-on-bare-closure-call.stderr | 0 .../ui/suggestions/suggest-ref-macro.rs | 0 .../ui/suggestions/suggest-ref-macro.stderr | 0 .../ui/suggestions/suggest-ref-mut.rs | 0 .../ui/suggestions/suggest-ref-mut.stderr | 0 .../ui/suggestions/suggest-remove-refs-1.fixed | 0 .../ui/suggestions/suggest-remove-refs-1.rs | 0 .../ui/suggestions/suggest-remove-refs-1.stderr | 0 .../ui/suggestions/suggest-remove-refs-2.fixed | 0 .../ui/suggestions/suggest-remove-refs-2.rs | 0 .../ui/suggestions/suggest-remove-refs-2.stderr | 0 .../ui/suggestions/suggest-remove-refs-3.fixed | 0 .../ui/suggestions/suggest-remove-refs-3.rs | 0 .../ui/suggestions/suggest-remove-refs-3.stderr | 0 .../suggest-semicolon-for-fn-in-extern-block.fixed | 0 .../suggest-semicolon-for-fn-in-extern-block.rs | 0 .../suggest-semicolon-for-fn-in-extern-block.stderr | 0 .../ui/suggestions/suggest-split-at-mut.rs | 0 .../ui/suggestions/suggest-split-at-mut.stderr | 0 .../suggestions/suggest-std-when-using-type.fixed | 0 .../ui/suggestions/suggest-std-when-using-type.rs | 0 .../suggestions/suggest-std-when-using-type.stderr | 0 ...ggest-swapping-self-ty-and-trait-edition-2021.rs | 0 ...t-swapping-self-ty-and-trait-edition-2021.stderr | 0 .../suggest-swapping-self-ty-and-trait.rs | 0 .../suggest-swapping-self-ty-and-trait.stderr | 0 .../ui/suggestions/suggest-trait-items.rs | 0 .../ui/suggestions/suggest-trait-items.stderr | 0 .../suggestions/suggest-tryinto-edition-change.rs | 0 .../suggest-tryinto-edition-change.stderr | 0 .../ui/suggestions/suggest-using-chars.rs | 0 .../ui/suggestions/suggest-using-chars.stderr | 0 .../ui/suggestions/suggest-variants.rs | 0 .../ui/suggestions/suggest-variants.stderr | 0 .../ui/suggestions/suggest_print_over_printf.rs | 0 .../ui/suggestions/suggest_print_over_printf.stderr | 0 .../ui/suggestions/too-many-field-suggestions.rs | 0 .../suggestions/too-many-field-suggestions.stderr | 0 ...issing-associated-type-restriction-fixable.fixed | 0 ...h-missing-associated-type-restriction-fixable.rs | 0 ...ssing-associated-type-restriction-fixable.stderr | 0 ...rait-with-missing-associated-type-restriction.rs | 0 ...-with-missing-associated-type-restriction.stderr | 0 .../try-operator-dont-suggest-semicolon.rs | 0 .../try-operator-dont-suggest-semicolon.stderr | 0 .../ui/suggestions/try-removing-the-field.rs | 0 .../ui/suggestions/try-removing-the-field.stderr | 0 .../suggestions/type-ascription-and-other-error.rs | 0 .../type-ascription-and-other-error.stderr | 0 .../suggestions/type-ascription-instead-of-let.rs | 0 .../type-ascription-instead-of-let.stderr | 0 .../type-ascription-instead-of-method.fixed | 0 .../type-ascription-instead-of-method.rs | 0 .../type-ascription-instead-of-method.stderr | 0 .../type-ascription-instead-of-path-2.fixed | 0 .../type-ascription-instead-of-path-2.rs | 0 .../type-ascription-instead-of-path-2.stderr | 0 .../type-ascription-instead-of-path-in-type.rs | 0 .../type-ascription-instead-of-path-in-type.stderr | 0 .../suggestions/type-ascription-instead-of-path.rs | 0 .../type-ascription-instead-of-path.stderr | 0 .../type-ascription-instead-of-variant.fixed | 0 .../type-ascription-instead-of-variant.rs | 0 .../type-ascription-instead-of-variant.stderr | 0 .../type-mismatch-struct-field-shorthand-2.rs | 0 .../type-mismatch-struct-field-shorthand-2.stderr | 0 .../type-mismatch-struct-field-shorthand.fixed | 0 .../type-mismatch-struct-field-shorthand.rs | 0 .../type-mismatch-struct-field-shorthand.stderr | 0 .../ui/suggestions/type-not-found-in-adt-field.rs | 0 .../suggestions/type-not-found-in-adt-field.stderr | 0 .../ui/suggestions/undeclared-module-alloc.rs | 0 .../ui/suggestions/undeclared-module-alloc.stderr | 0 .../ui/suggestions/unnamable-types.rs | 0 .../ui/suggestions/unnamable-types.stderr | 0 .../unnecessary_dot_for_floating_point_literal.rs | 0 ...nnecessary_dot_for_floating_point_literal.stderr | 0 .../ui/suggestions/unsized-function-parameter.fixed | 0 .../ui/suggestions/unsized-function-parameter.rs | 0 .../suggestions/unsized-function-parameter.stderr | 0 .../ui/suggestions/unused-closure-argument.rs | 0 .../ui/suggestions/unused-closure-argument.stderr | 0 .../ui/suggestions/use-placement-resolve.fixed | 0 .../ui/suggestions/use-placement-resolve.rs | 0 .../ui/suggestions/use-placement-resolve.stderr | 0 .../ui/suggestions/use-placement-typeck.fixed | 0 .../ui/suggestions/use-placement-typeck.rs | 0 .../ui/suggestions/use-placement-typeck.stderr | 0 .../use-type-argument-instead-of-assoc-type.rs | 0 .../use-type-argument-instead-of-assoc-type.stderr | 0 .../test => tests}/ui/suggestions/while-let-typo.rs | 0 .../ui/suggestions/while-let-typo.stderr | 0 {src/test => tests}/ui/super-at-top-level.rs | 0 {src/test => tests}/ui/super-at-top-level.stderr | 0 {src/test => tests}/ui/super-fast-paren-parsing.rs | 0 {src/test => tests}/ui/super.rs | 0 {src/test => tests}/ui/suppressed-error.rs | 0 {src/test => tests}/ui/suppressed-error.stderr | 0 {src/test => tests}/ui/svh-add-nothing.rs | 0 .../ui/svh/auxiliary/changing-crates-a1.rs | 0 .../ui/svh/auxiliary/changing-crates-a2.rs | 0 .../ui/svh/auxiliary/changing-crates-b.rs | 0 {src/test => tests}/ui/svh/auxiliary/svh-a-base.rs | 0 .../ui/svh/auxiliary/svh-a-change-lit.rs | 0 .../svh/auxiliary/svh-a-change-significant-cfg.rs | 0 .../ui/svh/auxiliary/svh-a-change-trait-bound.rs | 0 .../ui/svh/auxiliary/svh-a-change-type-arg.rs | 0 .../ui/svh/auxiliary/svh-a-change-type-ret.rs | 0 .../ui/svh/auxiliary/svh-a-change-type-static.rs | 0 {src/test => tests}/ui/svh/auxiliary/svh-b.rs | 0 .../test => tests}/ui/svh/auxiliary/svh-uta-base.rs | 0 .../ui/svh/auxiliary/svh-uta-change-use-trait.rs | 0 {src/test => tests}/ui/svh/auxiliary/svh-utb.rs | 0 {src/test => tests}/ui/svh/changing-crates.rs | 0 {src/test => tests}/ui/svh/changing-crates.stderr | 0 {src/test => tests}/ui/svh/svh-change-lit.rs | 0 {src/test => tests}/ui/svh/svh-change-lit.stderr | 0 .../ui/svh/svh-change-significant-cfg.rs | 0 .../ui/svh/svh-change-significant-cfg.stderr | 0 .../test => tests}/ui/svh/svh-change-trait-bound.rs | 0 .../ui/svh/svh-change-trait-bound.stderr | 0 {src/test => tests}/ui/svh/svh-change-type-arg.rs | 0 .../ui/svh/svh-change-type-arg.stderr | 0 {src/test => tests}/ui/svh/svh-change-type-ret.rs | 0 .../ui/svh/svh-change-type-ret.stderr | 0 .../test => tests}/ui/svh/svh-change-type-static.rs | 0 .../ui/svh/svh-change-type-static.stderr | 0 {src/test => tests}/ui/svh/svh-use-trait.rs | 0 {src/test => tests}/ui/svh/svh-use-trait.stderr | 0 {src/test => tests}/ui/swap-1.rs | 0 {src/test => tests}/ui/swap-overlapping.rs | 0 {src/test => tests}/ui/switched-expectations.rs | 0 {src/test => tests}/ui/switched-expectations.stderr | 0 .../ui/symbol-names/basic.legacy.stderr | 0 {src/test => tests}/ui/symbol-names/basic.rs | 0 {src/test => tests}/ui/symbol-names/basic.v0.stderr | 0 .../const-generics-demangling.legacy.stderr | 0 .../ui/symbol-names/const-generics-demangling.rs | 0 .../const-generics-demangling.v0.stderr | 0 .../symbol-names/const-generics-str-demangling.rs | 0 .../const-generics-str-demangling.stderr | 0 .../const-generics-structural-demangling.rs | 0 .../const-generics-structural-demangling.stderr | 0 .../ui/symbol-names/const-generics.rs | 0 .../test => tests}/ui/symbol-names/foreign-types.rs | 0 .../ui/symbol-names/foreign-types.stderr | 0 .../ui/symbol-names/impl1.legacy.stderr | 0 {src/test => tests}/ui/symbol-names/impl1.rs | 0 {src/test => tests}/ui/symbol-names/impl1.v0.stderr | 0 {src/test => tests}/ui/symbol-names/impl2.rs | 0 {src/test => tests}/ui/symbol-names/impl2.stderr | 0 {src/test => tests}/ui/symbol-names/issue-53912.rs | 0 .../ui/symbol-names/issue-60925.legacy.stderr | 0 {src/test => tests}/ui/symbol-names/issue-60925.rs | 0 .../ui/symbol-names/issue-60925.v0.stderr | 0 .../ui/symbol-names/issue-75326.legacy.stderr | 0 {src/test => tests}/ui/symbol-names/issue-75326.rs | 0 .../ui/symbol-names/issue-75326.v0.stderr | 0 {src/test => tests}/ui/symbol-names/issue-76365.rs | 0 .../test => tests}/ui/symbol-names/trait-objects.rs | 0 .../ui/symbol-names/trait-objects.v0.stderr | 0 .../ui/symbol-names/types.legacy.stderr | 0 {src/test => tests}/ui/symbol-names/types.rs | 0 .../ui/symbol-names/types.verbose-legacy.stderr | 0 {src/test => tests}/ui/symbol-names/verbose.rs | 0 {src/test => tests}/ui/symbol-names/x86-stdcall.rs | 0 {src/test => tests}/ui/syntax-extension-minor.rs | 0 .../ui/tag-that-dare-not-speak-its-name.rs | 0 .../ui/tag-that-dare-not-speak-its-name.stderr | 0 {src/test => tests}/ui/tag-type-args.rs | 0 {src/test => tests}/ui/tag-type-args.stderr | 0 .../ui/tag-variant-cast-non-nullary.fixed | 0 .../ui/tag-variant-cast-non-nullary.rs | 0 .../ui/tag-variant-cast-non-nullary.stderr | 0 {src/test => tests}/ui/tail-call-arg-leak.rs | 0 {src/test => tests}/ui/tail-cps.rs | 0 {src/test => tests}/ui/tail-typeck.rs | 0 {src/test => tests}/ui/tail-typeck.stderr | 0 .../ui/target-feature/aarch64-neon-works.rs | 0 .../ui/target-feature/feature-hierarchy.rs | 0 {src/test => tests}/ui/target-feature/gate.rs | 0 {src/test => tests}/ui/target-feature/gate.stderr | 0 .../ui/target-feature/invalid-attribute.rs | 0 .../ui/target-feature/invalid-attribute.stderr | 0 .../ui/target-feature/missing-plusminus-2.rs | 0 .../ui/target-feature/missing-plusminus-2.stderr | 0 .../ui/target-feature/missing-plusminus.rs | 0 .../ui/target-feature/missing-plusminus.stderr | 0 .../ui/target-feature/no-llvm-leaks.rs | 0 .../rust-specific-name-no-warnings.rs | 0 .../ui/target-feature/similar-feature-suggestion.rs | 0 .../similar-feature-suggestion.stderr | 0 .../ui/target-feature/tied-features-cli.one.stderr | 0 .../ui/target-feature/tied-features-cli.rs | 0 .../target-feature/tied-features-cli.three.stderr | 0 .../ui/target-feature/tied-features-cli.two.stderr | 0 .../ui/target-feature/tied-features.rs | 0 .../ui/target-feature/tied-features.stderr | 0 {src/test => tests}/ui/target-feature/wasm-safe.rs | 0 {src/test => tests}/ui/terr-in-field.rs | 0 {src/test => tests}/ui/terr-in-field.stderr | 0 {src/test => tests}/ui/terr-sorts.rs | 0 {src/test => tests}/ui/terr-sorts.stderr | 0 .../ui/test-attrs/auxiliary/test_macro.rs | 0 .../test => tests}/ui/test-attrs/decl-macro-test.rs | 0 .../ui/test-attrs/inaccessible-test-modules.rs | 0 .../ui/test-attrs/inaccessible-test-modules.stderr | 0 .../ui/test-attrs/issue-16597-empty.rs | 0 {src/test => tests}/ui/test-attrs/issue-16597.rs | 0 {src/test => tests}/ui/test-attrs/issue-20823.rs | 0 {src/test => tests}/ui/test-attrs/issue-36768.rs | 0 {src/test => tests}/ui/test-attrs/issue-52557.rs | 0 .../test-attrs/issue-53675-a-test-called-panic.rs | 0 .../ui/test-attrs/run-unexported-tests.rs | 0 .../test-attr-non-associated-functions.rs | 0 .../test-attr-non-associated-functions.stderr | 0 .../ui/test-attrs/test-cant-be-shadowed.rs | 0 .../ui/test-attrs/test-filter-multiple.rs | 0 .../ui/test-attrs/test-filter-multiple.run.stdout | 0 ...gnature-verification-for-explicit-return-type.rs | 0 .../ui/test-attrs/test-main-not-dead-attr.rs | 0 .../ui/test-attrs/test-main-not-dead.rs | 0 {src/test => tests}/ui/test-attrs/test-on-not-fn.rs | 0 .../ui/test-attrs/test-on-not-fn.stderr | 0 .../ui/test-attrs/test-panic-abort-disabled.rs | 0 .../ui/test-attrs/test-panic-abort-disabled.stderr | 0 .../ui/test-attrs/test-panic-abort-nocapture.rs | 0 .../test-panic-abort-nocapture.run.stderr | 0 .../test-panic-abort-nocapture.run.stdout | 0 .../ui/test-attrs/test-panic-abort.rs | 0 .../ui/test-attrs/test-panic-abort.run.stdout | 0 .../ui/test-attrs/test-panic-while-printing.rs | 0 .../ui/test-attrs/test-passed-wasm.rs | 0 .../ui/test-attrs/test-passed-wasm.run.stdout | 0 {src/test => tests}/ui/test-attrs/test-passed.rs | 0 .../ui/test-attrs/test-passed.run.stdout | 0 .../ui/test-attrs/test-runner-hides-buried-main.rs | 0 .../ui/test-attrs/test-runner-hides-main.rs | 0 .../ui/test-attrs/test-runner-hides-start.rs | 0 .../ui/test-attrs/test-should-fail-good-message.rs | 0 .../ui/test-attrs/test-should-panic-attr.rs | 0 .../ui/test-attrs/test-should-panic-attr.stderr | 0 .../ui/test-attrs/test-thread-capture.rs | 0 .../ui/test-attrs/test-thread-capture.run.stdout | 0 .../ui/test-attrs/test-thread-nocapture.rs | 0 .../ui/test-attrs/test-thread-nocapture.run.stderr | 0 .../ui/test-attrs/test-thread-nocapture.run.stdout | 0 {src/test => tests}/ui/test-attrs/test-type.rs | 0 .../ui/test-attrs/test-type.run.stdout | 0 .../ui/test-attrs/test-vs-cfg-test.rs | 0 .../ui/test-attrs/test-warns-dead-code.rs | 0 .../ui/test-attrs/test-warns-dead-code.stderr | 0 {src/test => tests}/ui/thir-tree.rs | 0 {src/test => tests}/ui/thir-tree.stdout | 0 {src/test => tests}/ui/thread-local-mutation.rs | 0 {src/test => tests}/ui/thread-local-mutation.stderr | 0 {src/test => tests}/ui/thread-local-static.rs | 0 {src/test => tests}/ui/thread-local-static.stderr | 0 .../ui/thread-local/name-collision.rs | 0 {src/test => tests}/ui/thread-local/non-static.rs | 0 .../ui/thread-local/non-static.stderr | 0 .../ui/thread-local/thread-local-issue-37508.rs | 0 {src/test => tests}/ui/thread-local/tls.rs | 0 .../auxiliary/thread-local-extern-static.rs | 0 .../ui/threads-sendsync/child-outlives-parent.rs | 0 .../ui/threads-sendsync/clone-with-exterior.rs | 0 {src/test => tests}/ui/threads-sendsync/comm.rs | 0 .../ui/threads-sendsync/eprint-on-tls-drop.rs | 0 .../ui/threads-sendsync/issue-24313.rs | 0 .../ui/threads-sendsync/issue-29488.rs | 0 .../ui/threads-sendsync/issue-43733-2.rs | 0 .../ui/threads-sendsync/issue-43733.mir.stderr | 0 .../ui/threads-sendsync/issue-43733.rs | 0 .../ui/threads-sendsync/issue-43733.thir.stderr | 0 .../ui/threads-sendsync/issue-4446.rs | 0 .../ui/threads-sendsync/issue-4448.rs | 0 .../ui/threads-sendsync/issue-8827.rs | 0 .../ui/threads-sendsync/issue-9396.rs | 0 .../ui/threads-sendsync/mpsc_stress.rs | 0 .../threads-sendsync/send-is-not-static-par-for.rs | 0 .../ui/threads-sendsync/send-resource.rs | 0 .../ui/threads-sendsync/send-type-inference.rs | 0 .../ui/threads-sendsync/send_str_hashmap.rs | 0 .../ui/threads-sendsync/send_str_treemap.rs | 0 .../ui/threads-sendsync/sendable-class.rs | 0 .../ui/threads-sendsync/sendfn-is-a-block.rs | 0 .../ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs | 0 {src/test => tests}/ui/threads-sendsync/spawn-fn.rs | 0 .../ui/threads-sendsync/spawn-types.rs | 0 {src/test => tests}/ui/threads-sendsync/spawn.rs | 0 {src/test => tests}/ui/threads-sendsync/spawn2.rs | 0 .../ui/threads-sendsync/spawning-with-debug.rs | 0 .../threads-sendsync/std-sync-right-kind-impls.rs | 0 .../ui/threads-sendsync/sync-send-atomics.rs | 0 .../ui/threads-sendsync/sync-send-in-std.rs | 0 .../sync-send-iterators-in-libcollections.rs | 0 .../sync-send-iterators-in-libcore.rs | 0 .../ui/threads-sendsync/task-comm-0.rs | 0 .../ui/threads-sendsync/task-comm-1.rs | 0 .../ui/threads-sendsync/task-comm-10.rs | 0 .../ui/threads-sendsync/task-comm-11.rs | 0 .../ui/threads-sendsync/task-comm-12.rs | 0 .../ui/threads-sendsync/task-comm-13.rs | 0 .../ui/threads-sendsync/task-comm-14.rs | 0 .../ui/threads-sendsync/task-comm-15.rs | 0 .../ui/threads-sendsync/task-comm-16.rs | 0 .../ui/threads-sendsync/task-comm-17.rs | 0 .../ui/threads-sendsync/task-comm-3.rs | 0 .../ui/threads-sendsync/task-comm-4.rs | 0 .../ui/threads-sendsync/task-comm-5.rs | 0 .../ui/threads-sendsync/task-comm-6.rs | 0 .../ui/threads-sendsync/task-comm-7.rs | 0 .../ui/threads-sendsync/task-comm-9.rs | 0 .../ui/threads-sendsync/task-comm-chan-nil.rs | 0 .../ui/threads-sendsync/task-life-0.rs | 0 .../ui/threads-sendsync/task-spawn-barefn.rs | 0 .../ui/threads-sendsync/task-spawn-move-and-copy.rs | 0 .../ui/threads-sendsync/task-stderr.rs | 0 .../ui/threads-sendsync/tcp-stress.rs | 0 .../ui/threads-sendsync/test-tasks-invalid-value.rs | 0 .../threads-sendsync/thread-local-extern-static.rs | 0 .../ui/threads-sendsync/thread-local-syntax.rs | 0 {src/test => tests}/ui/threads-sendsync/threads.rs | 0 .../tls-dtors-are-run-in-a-static-binary.rs | 0 .../ui/threads-sendsync/tls-init-on-init.rs | 0 .../ui/threads-sendsync/tls-try-with.rs | 0 .../ui/threads-sendsync/trivial-message.rs | 0 .../ui/threads-sendsync/unwind-resource.rs | 0 {src/test => tests}/ui/threads-sendsync/yield.rs | 0 {src/test => tests}/ui/threads-sendsync/yield1.rs | 0 {src/test => tests}/ui/threads-sendsync/yield2.rs | 0 .../ui/tool-attributes/diagnostic_item.rs | 0 .../ui/tool-attributes/diagnostic_item.stderr | 0 .../ui/tool-attributes/diagnostic_item2.rs | 0 .../ui/tool-attributes/diagnostic_item3.rs | 0 .../tool-attributes/tool-attributes-misplaced-1.rs | 0 .../tool-attributes-misplaced-1.stderr | 0 .../tool-attributes/tool-attributes-misplaced-2.rs | 0 .../tool-attributes-misplaced-2.stderr | 0 .../ui/tool-attributes/tool-attributes-shadowing.rs | 0 .../tool-attributes-shadowing.stderr | 0 {src/test => tests}/ui/tool_lints-fail.rs | 0 {src/test => tests}/ui/tool_lints-fail.stderr | 0 {src/test => tests}/ui/tool_lints-rpass.rs | 0 {src/test => tests}/ui/tool_lints.rs | 0 {src/test => tests}/ui/tool_lints.stderr | 0 {src/test => tests}/ui/tool_lints_2018_preview.rs | 0 {src/test => tests}/ui/track-diagnostics/track.rs | 0 .../ui/track-diagnostics/track.stderr | 0 {src/test => tests}/ui/track-diagnostics/track2.rs | 0 .../ui/track-diagnostics/track2.stderr | 0 {src/test => tests}/ui/track-diagnostics/track3.rs | 0 .../ui/track-diagnostics/track3.stderr | 0 {src/test => tests}/ui/track-diagnostics/track4.rs | 0 .../ui/track-diagnostics/track4.stderr | 0 {src/test => tests}/ui/track-diagnostics/track5.rs | 0 .../ui/track-diagnostics/track5.stderr | 0 {src/test => tests}/ui/track-diagnostics/track6.rs | 0 .../ui/track-diagnostics/track6.stderr | 0 {src/test => tests}/ui/trailing-comma.rs | 0 .../impl-bound-with-references-error.rs | 0 .../impl-bound-with-references-error.stderr | 0 .../impl-derived-implicit-sized-bound-2.rs | 0 .../impl-derived-implicit-sized-bound-2.stderr | 0 .../impl-derived-implicit-sized-bound.rs | 0 .../impl-derived-implicit-sized-bound.stderr | 0 ...mpl-missing-where-clause-lifetimes-from-trait.rs | 0 ...missing-where-clause-lifetimes-from-trait.stderr | 0 {src/test => tests}/ui/trait-bounds/issue-75961.rs | 0 {src/test => tests}/ui/trait-bounds/issue-93008.rs | 0 {src/test => tests}/ui/trait-bounds/issue-94680.rs | 0 {src/test => tests}/ui/trait-bounds/issue-94999.rs | 0 {src/test => tests}/ui/trait-bounds/issue-95640.rs | 0 .../ui/trait-bounds/mismatch-fn-trait.rs | 0 .../ui/trait-bounds/mismatch-fn-trait.stderr | 0 .../shadowed-path-in-trait-bound-suggestion.fixed | 0 .../shadowed-path-in-trait-bound-suggestion.rs | 0 .../shadowed-path-in-trait-bound-suggestion.stderr | 0 .../test => tests}/ui/trait-bounds/unsized-bound.rs | 0 .../ui/trait-bounds/unsized-bound.stderr | 0 .../ui/trait-impl-bound-suggestions.fixed | 0 .../ui/trait-impl-bound-suggestions.rs | 0 .../ui/trait-impl-bound-suggestions.stderr | 0 .../ui/trait-method-number-parameters.rs | 0 .../ui/trait-method-number-parameters.stderr | 0 {src/test => tests}/ui/traits/alias/ambiguous.rs | 0 .../test => tests}/ui/traits/alias/ambiguous.stderr | 0 .../ui/traits/alias/auxiliary/greeter.rs | 0 .../ui/traits/alias/auxiliary/send_sync.rs | 0 {src/test => tests}/ui/traits/alias/basic.rs | 0 {src/test => tests}/ui/traits/alias/bounds.rs | 0 {src/test => tests}/ui/traits/alias/cross-crate.rs | 0 .../ui/traits/alias/cross-crate.stderr | 0 .../ui/traits/alias/generic-default-in-dyn.rs | 0 .../ui/traits/alias/generic-default-in-dyn.stderr | 0 {src/test => tests}/ui/traits/alias/impl.rs | 0 {src/test => tests}/ui/traits/alias/impl.stderr | 0 .../ui/traits/alias/import-cross-crate.rs | 0 {src/test => tests}/ui/traits/alias/import.rs | 0 .../alias/issue-60021-assoc-method-resolve.rs | 0 .../traits/alias/issue-72415-assoc-const-resolve.rs | 0 {src/test => tests}/ui/traits/alias/issue-75983.rs | 0 {src/test => tests}/ui/traits/alias/issue-83613.rs | 0 .../ui/traits/alias/issue-83613.stderr | 0 {src/test => tests}/ui/traits/alias/maybe-bound.rs | 0 .../test => tests}/ui/traits/alias/no-duplicates.rs | 0 .../ui/traits/alias/no-duplicates.stderr | 0 .../ui/traits/alias/no-extra-traits.rs | 0 .../ui/traits/alias/no-extra-traits.stderr | 0 {src/test => tests}/ui/traits/alias/object-fail.rs | 0 .../ui/traits/alias/object-fail.stderr | 0 {src/test => tests}/ui/traits/alias/object-wf.rs | 0 {src/test => tests}/ui/traits/alias/object.rs | 0 .../ui/traits/alias/only-maybe-bound.rs | 0 .../ui/traits/alias/only-maybe-bound.stderr | 0 .../ui/traits/alias/self-in-const-generics.rs | 0 .../ui/traits/alias/self-in-const-generics.stderr | 0 .../ui/traits/alias/self-in-generics.rs | 0 .../ui/traits/alias/self-in-generics.stderr | 0 {src/test => tests}/ui/traits/alias/style_lint.rs | 0 .../ui/traits/alias/style_lint.stderr | 0 .../alias/suggest-trait-alias-instead-of-type.fixed | 0 .../alias/suggest-trait-alias-instead-of-type.rs | 0 .../suggest-trait-alias-instead-of-type.stderr | 0 {src/test => tests}/ui/traits/alias/syntax-fail.rs | 0 .../ui/traits/alias/syntax-fail.stderr | 0 {src/test => tests}/ui/traits/alias/syntax.rs | 0 {src/test => tests}/ui/traits/alias/wf.rs | 0 {src/test => tests}/ui/traits/alias/wf.stderr | 0 .../ui/traits/alignment-gep-tup-like-1.rs | 0 {src/test => tests}/ui/traits/anon-static-method.rs | 0 .../ui/traits/anon_trait_static_method_exe.rs | 0 .../ui/traits/as-struct-constructor.rs | 0 .../ui/traits/as-struct-constructor.stderr | 0 .../test => tests}/ui/traits/assignability-trait.rs | 0 .../ui/traits/assoc-type-in-superbad.rs | 0 .../ui/traits/assoc-type-in-superbad.stderr | 0 .../ui/traits/assoc-type-in-supertrait.rs | 0 .../assoc_type_bound_with_struct.rs | 0 .../assoc_type_bound_with_struct.stderr | 0 .../check-trait-object-bounds-1.rs | 0 .../check-trait-object-bounds-1.stderr | 0 .../check-trait-object-bounds-2-ok.rs | 0 .../check-trait-object-bounds-2.rs | 0 .../check-trait-object-bounds-2.stderr | 0 .../check-trait-object-bounds-3.rs | 0 .../check-trait-object-bounds-3.stderr | 0 .../check-trait-object-bounds-4.rs | 0 .../check-trait-object-bounds-4.stderr | 0 .../check-trait-object-bounds-5.rs | 0 .../check-trait-object-bounds-5.stderr | 0 .../check-trait-object-bounds-6.rs | 0 .../check-trait-object-bounds-6.stderr | 0 .../ui/traits/associated_type_bound/issue-51446.rs | 0 .../ui/traits/astconv-cycle-between-and-type.rs | 0 .../ui/traits/augmented-assignments-trait.rs | 0 .../auxiliary/anon_trait_static_method_lib.rs | 0 {src/test => tests}/ui/traits/auxiliary/go_trait.rs | 0 .../auxiliary/issue_89119_intercrate_caching.rs | 0 .../ui/traits/auxiliary/trait_safety_lib.rs | 0 .../test => tests}/ui/traits/auxiliary/traitimpl.rs | 0 .../ui/traits/bad-method-typaram-kind.rs | 0 .../ui/traits/bad-method-typaram-kind.stderr | 0 {src/test => tests}/ui/traits/bad-sized.rs | 0 {src/test => tests}/ui/traits/bad-sized.stderr | 0 .../traits/bound/assoc-fn-bound-root-obligation.rs | 0 .../bound/assoc-fn-bound-root-obligation.stderr | 0 .../ui/traits/bound/auxiliary/crate_a1.rs | 0 .../ui/traits/bound/auxiliary/crate_a2.rs | 0 .../bound/auxiliary/on_structs_and_enums_xc.rs | 0 {src/test => tests}/ui/traits/bound/basic.rs | 0 .../test => tests}/ui/traits/bound/generic_trait.rs | 0 .../ui/traits/bound/impl-comparison-duplicates.rs | 0 {src/test => tests}/ui/traits/bound/in-arc.rs | 0 {src/test => tests}/ui/traits/bound/multiple.rs | 0 .../ui/traits/bound/not-on-bare-trait.rs | 0 .../ui/traits/bound/not-on-bare-trait.stderr | 0 .../test => tests}/ui/traits/bound/not-on-struct.rs | 0 .../ui/traits/bound/not-on-struct.stderr | 0 .../ui/traits/bound/on-structs-and-enums-in-fns.rs | 0 .../traits/bound/on-structs-and-enums-in-fns.stderr | 0 .../traits/bound/on-structs-and-enums-in-impls.rs | 0 .../bound/on-structs-and-enums-in-impls.stderr | 0 .../ui/traits/bound/on-structs-and-enums-locals.rs | 0 .../traits/bound/on-structs-and-enums-locals.stderr | 0 .../ui/traits/bound/on-structs-and-enums-rpass.rs | 0 .../ui/traits/bound/on-structs-and-enums-static.rs | 0 .../traits/bound/on-structs-and-enums-static.stderr | 0 .../ui/traits/bound/on-structs-and-enums-xc.rs | 0 .../ui/traits/bound/on-structs-and-enums-xc.stderr | 0 .../ui/traits/bound/on-structs-and-enums-xc1.rs | 0 .../ui/traits/bound/on-structs-and-enums-xc1.stderr | 0 .../ui/traits/bound/on-structs-and-enums.rs | 0 .../ui/traits/bound/on-structs-and-enums.stderr | 0 {src/test => tests}/ui/traits/bound/recursion.rs | 0 .../ui/traits/bound/same-crate-name.rs | 0 .../ui/traits/bound/same-crate-name.stderr | 0 {src/test => tests}/ui/traits/bound/sugar.rs | 0 {src/test => tests}/ui/traits/bound/sugar.stderr | 0 {src/test => tests}/ui/traits/bug-7183-generics.rs | 0 {src/test => tests}/ui/traits/bug-7295.rs | 0 {src/test => tests}/ui/traits/cache-issue-18209.rs | 0 .../ui/traits/cache-reached-depth-ice.rs | 0 .../ui/traits/cache-reached-depth-ice.stderr | 0 .../ui/traits/coercion-generic-bad.rs | 0 .../ui/traits/coercion-generic-bad.stderr | 0 .../ui/traits/coercion-generic-regions.rs | 0 .../ui/traits/coercion-generic-regions.stderr | 0 {src/test => tests}/ui/traits/coercion-generic.rs | 0 {src/test => tests}/ui/traits/coercion.rs | 0 .../test => tests}/ui/traits/composition-trivial.rs | 0 .../ui/traits/conditional-dispatch.rs | 0 .../ui/traits/conditional-model-fn.rs | 0 .../ui/traits/conservative_impl_trait.rs | 0 {src/test => tests}/ui/traits/copy-guessing.rs | 0 .../ui/traits/copy-impl-cannot-normalize.rs | 0 .../ui/traits/copy-impl-cannot-normalize.stderr | 0 .../ui/traits/cycle-cache-err-60010.rs | 0 .../ui/traits/cycle-cache-err-60010.stderr | 0 .../test => tests}/ui/traits/cycle-generic-bound.rs | 0 {src/test => tests}/ui/traits/cycle-type-trait.rs | 0 .../ui/traits/default-method/auxiliary/xc.rs | 0 .../ui/traits/default-method/auxiliary/xc_2.rs | 0 .../ui/traits/default-method/bound-subst.rs | 0 .../ui/traits/default-method/bound-subst2.rs | 0 .../ui/traits/default-method/bound-subst3.rs | 0 .../ui/traits/default-method/bound-subst4.rs | 0 .../ui/traits/default-method/bound.rs | 0 .../ui/traits/default-method/macro.rs | 0 {src/test => tests}/ui/traits/default-method/mut.rs | 0 .../default-method/rustc_must_implement_one_of.rs | 0 .../rustc_must_implement_one_of.stderr | 0 .../rustc_must_implement_one_of_duplicates.rs | 0 .../rustc_must_implement_one_of_duplicates.stderr | 0 .../rustc_must_implement_one_of_gated.rs | 0 .../rustc_must_implement_one_of_gated.stderr | 0 .../rustc_must_implement_one_of_misuse.rs | 0 .../rustc_must_implement_one_of_misuse.stderr | 0 .../test => tests}/ui/traits/default-method/self.rs | 0 .../ui/traits/default-method/supervtable.rs | 0 .../ui/traits/default-method/trivial.rs | 0 .../test => tests}/ui/traits/default-method/xc-2.rs | 0 {src/test => tests}/ui/traits/default-method/xc.rs | 0 ...type-params-by-name-in-suggestion-issue-96292.rs | 0 ...-params-by-name-in-suggestion-issue-96292.stderr | 0 {src/test => tests}/ui/traits/duplicate-methods.rs | 0 .../ui/traits/duplicate-methods.stderr | 0 {src/test => tests}/ui/traits/dyn-trait.rs | 0 .../ui/traits/early-vtbl-resolution.rs | 0 .../ui/traits/elaborate-type-region.rs | 0 .../false-ambiguity-where-clause-builtin-bound.rs | 0 {src/test => tests}/ui/traits/fmt-pointer-trait.rs | 0 {src/test => tests}/ui/traits/generic.rs | 0 {src/test => tests}/ui/traits/impl-1.rs | 0 {src/test => tests}/ui/traits/impl-1.stderr | 0 {src/test => tests}/ui/traits/impl-2.rs | 0 .../ui/traits/impl-bounds-checking.rs | 0 .../ui/traits/impl-bounds-checking.stderr | 0 .../ui/traits/impl-can-not-have-untraitful-items.rs | 0 .../impl-can-not-have-untraitful-items.stderr | 0 .../ui/traits/impl-different-num-params.rs | 0 .../ui/traits/impl-different-num-params.stderr | 0 .../ui/traits/impl-evaluation-order.rs | 0 {src/test => tests}/ui/traits/impl-for-module.rs | 0 .../test => tests}/ui/traits/impl-for-module.stderr | 0 .../test => tests}/ui/traits/impl-implicit-trait.rs | 0 .../ui/traits/impl-inherent-prefer-over-trait.rs | 0 .../ui/traits/impl-method-mismatch.rs | 0 .../ui/traits/impl-method-mismatch.stderr | 0 .../ui/traits/impl-object-overlap-issue-23853.rs | 0 ...l-of-supertrait-has-wrong-lifetime-parameters.rs | 0 ...-supertrait-has-wrong-lifetime-parameters.stderr | 0 {src/test => tests}/ui/traits/impl.rs | 0 .../traits/impl_trait_as_trait_return_position.rs | 0 .../ui/traits/inductive-overflow/lifetime.rs | 0 .../ui/traits/inductive-overflow/lifetime.stderr | 0 .../ui/traits/inductive-overflow/simultaneous.rs | 0 .../traits/inductive-overflow/simultaneous.stderr | 0 .../inductive-overflow/supertrait-auto-trait.rs | 0 .../inductive-overflow/supertrait-auto-trait.stderr | 0 .../ui/traits/inductive-overflow/supertrait.rs | 0 .../ui/traits/inductive-overflow/supertrait.stderr | 0 .../ui/traits/inductive-overflow/two-traits.rs | 0 .../ui/traits/inductive-overflow/two-traits.stderr | 0 .../ui/traits/infer-from-object-issue-26952.rs | 0 .../ui/traits/inherent-method-order.rs | 0 .../ui/traits/inheritance/auto-xc-2.rs | 0 .../test => tests}/ui/traits/inheritance/auto-xc.rs | 0 {src/test => tests}/ui/traits/inheritance/auto.rs | 0 .../ui/traits/inheritance/auxiliary/auto_xc.rs | 0 .../ui/traits/inheritance/auxiliary/auto_xc_2.rs | 0 .../traits/inheritance/auxiliary/overloading_xc.rs | 0 .../ui/traits/inheritance/auxiliary/xc_call.rs | 0 {src/test => tests}/ui/traits/inheritance/basic.rs | 0 .../ui/traits/inheritance/call-bound-inherited.rs | 0 .../ui/traits/inheritance/call-bound-inherited2.rs | 0 .../inheritance/cast-without-call-to-supertrait.rs | 0 {src/test => tests}/ui/traits/inheritance/cast.rs | 0 .../ui/traits/inheritance/cross-trait-call-xc.rs | 0 .../ui/traits/inheritance/cross-trait-call.rs | 0 .../test => tests}/ui/traits/inheritance/diamond.rs | 0 .../ui/traits/inheritance/multiple-inheritors.rs | 0 .../ui/traits/inheritance/multiple-params.rs | 0 {src/test => tests}/ui/traits/inheritance/num.rs | 0 {src/test => tests}/ui/traits/inheritance/num0.rs | 0 {src/test => tests}/ui/traits/inheritance/num1.rs | 0 {src/test => tests}/ui/traits/inheritance/num2.rs | 0 {src/test => tests}/ui/traits/inheritance/num3.rs | 0 {src/test => tests}/ui/traits/inheritance/num5.rs | 0 .../ui/traits/inheritance/overloading-simple.rs | 0 .../ui/traits/inheritance/overloading-xc-exe.rs | 0 .../ui/traits/inheritance/overloading.rs | 0 .../traits/inheritance/repeated-supertrait-ambig.rs | 0 .../inheritance/repeated-supertrait-ambig.stderr | 0 .../ui/traits/inheritance/repeated-supertrait.rs | 0 .../ui/traits/inheritance/self-in-supertype.rs | 0 {src/test => tests}/ui/traits/inheritance/self.rs | 0 {src/test => tests}/ui/traits/inheritance/simple.rs | 0 {src/test => tests}/ui/traits/inheritance/static.rs | 0 .../test => tests}/ui/traits/inheritance/static2.rs | 0 {src/test => tests}/ui/traits/inheritance/subst.rs | 0 {src/test => tests}/ui/traits/inheritance/subst2.rs | 0 .../ui/traits/inheritance/visibility.rs | 0 .../ui/traits/invalid_operator_trait.rs | 0 .../ui/traits/invalid_operator_trait.stderr | 0 {src/test => tests}/ui/traits/issue-102989.rs | 0 {src/test => tests}/ui/traits/issue-102989.stderr | 0 {src/test => tests}/ui/traits/issue-104322.rs | 0 {src/test => tests}/ui/traits/issue-18400.rs | 0 {src/test => tests}/ui/traits/issue-18400.stderr | 0 {src/test => tests}/ui/traits/issue-18412.rs | 0 {src/test => tests}/ui/traits/issue-20692.rs | 0 {src/test => tests}/ui/traits/issue-20692.stderr | 0 {src/test => tests}/ui/traits/issue-22019.rs | 0 {src/test => tests}/ui/traits/issue-22110.rs | 0 {src/test => tests}/ui/traits/issue-22655.rs | 0 .../ui/traits/issue-23003-overflow.rs | 0 {src/test => tests}/ui/traits/issue-23003.rs | 0 {src/test => tests}/ui/traits/issue-23825.rs | 0 {src/test => tests}/ui/traits/issue-24010.rs | 0 {src/test => tests}/ui/traits/issue-26339.rs | 0 {src/test => tests}/ui/traits/issue-28576.rs | 0 {src/test => tests}/ui/traits/issue-28576.stderr | 0 {src/test => tests}/ui/traits/issue-32963.rs | 0 {src/test => tests}/ui/traits/issue-32963.stderr | 0 .../ui/traits/issue-33140-hack-boundaries.rs | 0 .../ui/traits/issue-33140-hack-boundaries.stderr | 0 {src/test => tests}/ui/traits/issue-33140.rs | 0 {src/test => tests}/ui/traits/issue-33140.stderr | 0 {src/test => tests}/ui/traits/issue-35869.rs | 0 {src/test => tests}/ui/traits/issue-35869.stderr | 0 {src/test => tests}/ui/traits/issue-3683.rs | 0 {src/test => tests}/ui/traits/issue-38033.rs | 0 {src/test => tests}/ui/traits/issue-38404.rs | 0 {src/test => tests}/ui/traits/issue-38404.stderr | 0 {src/test => tests}/ui/traits/issue-38604.rs | 0 {src/test => tests}/ui/traits/issue-38604.stderr | 0 {src/test => tests}/ui/traits/issue-3973.rs | 0 {src/test => tests}/ui/traits/issue-3973.stderr | 0 {src/test => tests}/ui/traits/issue-4107.rs | 0 {src/test => tests}/ui/traits/issue-43132.rs | 0 .../ui/traits/issue-43784-supertrait.rs | 0 .../ui/traits/issue-43784-supertrait.stderr | 0 {src/test => tests}/ui/traits/issue-50480.rs | 0 {src/test => tests}/ui/traits/issue-50480.stderr | 0 {src/test => tests}/ui/traits/issue-52893.rs | 0 {src/test => tests}/ui/traits/issue-52893.stderr | 0 {src/test => tests}/ui/traits/issue-56202.rs | 0 {src/test => tests}/ui/traits/issue-56488.rs | 0 {src/test => tests}/ui/traits/issue-59029-1.rs | 0 {src/test => tests}/ui/traits/issue-59029-1.stderr | 0 {src/test => tests}/ui/traits/issue-59029-2.rs | 0 {src/test => tests}/ui/traits/issue-6128.rs | 0 {src/test => tests}/ui/traits/issue-6334.rs | 0 .../issue-65284-suggest-generic-trait-bound.rs | 0 .../issue-65284-suggest-generic-trait-bound.stderr | 0 {src/test => tests}/ui/traits/issue-65673.rs | 0 {src/test => tests}/ui/traits/issue-65673.stderr | 0 {src/test => tests}/ui/traits/issue-68295.rs | 0 {src/test => tests}/ui/traits/issue-68295.stderr | 0 {src/test => tests}/ui/traits/issue-7013.rs | 0 {src/test => tests}/ui/traits/issue-7013.stderr | 0 {src/test => tests}/ui/traits/issue-70944.rs | 0 {src/test => tests}/ui/traits/issue-71036.rs | 0 {src/test => tests}/ui/traits/issue-71036.stderr | 0 {src/test => tests}/ui/traits/issue-71136.rs | 0 {src/test => tests}/ui/traits/issue-71136.stderr | 0 {src/test => tests}/ui/traits/issue-72410.rs | 0 {src/test => tests}/ui/traits/issue-72410.stderr | 0 {src/test => tests}/ui/traits/issue-72455.rs | 0 {src/test => tests}/ui/traits/issue-75627.rs | 0 {src/test => tests}/ui/traits/issue-75627.stderr | 0 {src/test => tests}/ui/traits/issue-77982.rs | 0 {src/test => tests}/ui/traits/issue-77982.stderr | 0 {src/test => tests}/ui/traits/issue-78372.rs | 0 {src/test => tests}/ui/traits/issue-78372.stderr | 0 {src/test => tests}/ui/traits/issue-78632.rs | 0 {src/test => tests}/ui/traits/issue-79458.rs | 0 {src/test => tests}/ui/traits/issue-79458.stderr | 0 {src/test => tests}/ui/traits/issue-8153.rs | 0 {src/test => tests}/ui/traits/issue-8153.stderr | 0 {src/test => tests}/ui/traits/issue-82830.rs | 0 .../traits/issue-83538-tainted-cache-after-cycle.rs | 0 .../issue-83538-tainted-cache-after-cycle.stderr | 0 .../ui/traits/issue-84399-bad-fresh-caching.rs | 0 .../ui/traits/issue-85360-eval-obligation-ice.rs | 0 .../traits/issue-85360-eval-obligation-ice.stderr | 0 {src/test => tests}/ui/traits/issue-85735.rs | 0 {src/test => tests}/ui/traits/issue-85735.stderr | 0 {src/test => tests}/ui/traits/issue-87558.rs | 0 {src/test => tests}/ui/traits/issue-87558.stderr | 0 {src/test => tests}/ui/traits/issue-89119.rs | 0 {src/test => tests}/ui/traits/issue-90195-2.rs | 0 {src/test => tests}/ui/traits/issue-90195.rs | 0 .../ui/traits/issue-90662-projection-caching.rs | 0 {src/test => tests}/ui/traits/issue-91594.rs | 0 {src/test => tests}/ui/traits/issue-91594.stderr | 0 .../ui/traits/issue-91949-hangs-on-recursion.rs | 0 .../ui/traits/issue-91949-hangs-on-recursion.stderr | 0 {src/test => tests}/ui/traits/issue-92292.rs | 0 .../ui/traits/issue-9394-inherited-calls.rs | 0 {src/test => tests}/ui/traits/issue-95311.rs | 0 {src/test => tests}/ui/traits/issue-95898.rs | 0 {src/test => tests}/ui/traits/issue-95898.stderr | 0 {src/test => tests}/ui/traits/issue-96664.rs | 0 {src/test => tests}/ui/traits/issue-96665.rs | 0 {src/test => tests}/ui/traits/issue-97576.rs | 0 {src/test => tests}/ui/traits/issue-97576.stderr | 0 .../ui/traits/issue-97695-double-trivial-bound.rs | 0 {src/test => tests}/ui/traits/issue-99875.rs | 0 {src/test => tests}/ui/traits/issue-99875.stderr | 0 {src/test => tests}/ui/traits/item-inside-macro.rs | 0 {src/test => tests}/ui/traits/item-privacy.rs | 0 {src/test => tests}/ui/traits/item-privacy.stderr | 0 .../ui/traits/kindck-owned-contains-1.rs | 0 {src/test => tests}/ui/traits/map-types.rs | 0 {src/test => tests}/ui/traits/map-types.stderr | 0 {src/test => tests}/ui/traits/matching-lifetimes.rs | 0 .../ui/traits/matching-lifetimes.stderr | 0 {src/test => tests}/ui/traits/method-private.rs | 0 {src/test => tests}/ui/traits/method-private.stderr | 0 {src/test => tests}/ui/traits/monad.rs | 0 .../monomorphized-callees-with-ty-params-3314.rs | 0 {src/test => tests}/ui/traits/multidispatch-bad.rs | 0 .../ui/traits/multidispatch-bad.stderr | 0 ...multidispatch-conditional-impl-not-considered.rs | 0 .../ui/traits/multidispatch-convert-ambig-dest.rs | 0 .../traits/multidispatch-convert-ambig-dest.stderr | 0 .../ui/traits/multidispatch-infer-convert-target.rs | 0 {src/test => tests}/ui/traits/multidispatch1.rs | 0 {src/test => tests}/ui/traits/multidispatch2.rs | 0 .../ui/traits/mutual-recursion-issue-75860.rs | 0 .../ui/traits/mutual-recursion-issue-75860.stderr | 0 .../negative-impls/auxiliary/foreign_trait.rs | 0 .../ui/traits/negative-impls/eager-mono.rs | 0 .../explicitly-unimplemented-error-message.rs | 0 .../explicitly-unimplemented-error-message.stderr | 0 .../negative-impls/feature-gate-negative_impls.rs | 0 .../feature-gate-negative_impls.stderr | 0 .../negative-impls/negated-auto-traits-error.rs | 0 .../negative-impls/negated-auto-traits-error.stderr | 0 .../negative-impls/negated-auto-traits-rpass.rs | 0 .../traits/negative-impls/negative-default-impls.rs | 0 .../negative-impls/negative-default-impls.stderr | 0 .../traits/negative-impls/negative-impls-basic.rs | 0 .../negative-impls/negative-specializes-negative.rs | 0 .../negative-specializes-negative.stderr | 0 .../negative-specializes-positive-item.rs | 0 .../negative-specializes-positive-item.stderr | 0 .../negative-impls/negative-specializes-positive.rs | 0 .../negative-specializes-positive.stderr | 0 .../ui/traits/negative-impls/no-items.rs | 0 .../ui/traits/negative-impls/no-items.stderr | 0 .../negative-impls/pin-unsound-issue-66544-clone.rs | 0 .../pin-unsound-issue-66544-clone.stderr | 0 .../pin-unsound-issue-66544-derefmut.rs | 0 .../pin-unsound-issue-66544-derefmut.stderr | 0 .../negative-impls/positive-specializes-negative.rs | 0 .../positive-specializes-negative.stderr | 0 .../rely-on-negative-impl-in-coherence.rs | 0 .../ui/traits/no-fallback-multiple-impls.rs | 0 .../ui/traits/no-fallback-multiple-impls.stderr | 0 {src/test => tests}/ui/traits/no_send-struct.rs | 0 {src/test => tests}/ui/traits/no_send-struct.stderr | 0 .../ui/traits/normalize-supertrait.rs | 0 ...not-suggest-non-existing-fully-qualified-path.rs | 0 ...suggest-non-existing-fully-qualified-path.stderr | 0 .../ui/traits/object-does-not-impl-trait.rs | 0 .../ui/traits/object-does-not-impl-trait.stderr | 0 .../ui/traits/object-one-type-two-traits.rs | 0 .../ui/traits/object/auto-dedup-in-impl.rs | 0 .../ui/traits/object/auto-dedup-in-impl.stderr | 0 {src/test => tests}/ui/traits/object/auto-dedup.rs | 0 .../ui/traits/object/bounds-cycle-1.rs | 0 .../ui/traits/object/bounds-cycle-2.rs | 0 .../ui/traits/object/bounds-cycle-3.rs | 0 .../ui/traits/object/bounds-cycle-4.rs | 0 .../traits/object/enforce-supertrait-projection.rs | 0 .../object/enforce-supertrait-projection.stderr | 0 {src/test => tests}/ui/traits/object/exclusion.rs | 0 {src/test => tests}/ui/traits/object/generics.rs | 0 .../traits/object/issue-33140-traitobject-crate.rs | 0 .../object/issue-33140-traitobject-crate.stderr | 0 .../ui/traits/object/issue-44454-1.rs | 0 .../ui/traits/object/issue-44454-1.stderr | 0 .../ui/traits/object/issue-44454-2.rs | 0 .../ui/traits/object/issue-44454-2.stderr | 0 .../ui/traits/object/issue-44454-3.rs | 0 .../ui/traits/object/issue-44454-3.stderr | 0 .../ui/traits/object/lifetime-first.rs | 0 .../ui/traits/object/macro-matcher.rs | 0 .../ui/traits/object/macro-matcher.stderr | 0 {src/test => tests}/ui/traits/object/safety.rs | 0 {src/test => tests}/ui/traits/object/safety.stderr | 0 .../ui/traits/object/supertrait-lifetime-bound.rs | 0 .../traits/object/supertrait-lifetime-bound.stderr | 0 .../ui/traits/object/vs-lifetime-2.rs | 0 .../ui/traits/object/vs-lifetime-2.stderr | 0 {src/test => tests}/ui/traits/object/vs-lifetime.rs | 0 .../ui/traits/object/vs-lifetime.stderr | 0 .../ui/traits/object/with-lifetime-bound.rs | 0 .../object/with-self-in-projection-output-bad.rs | 0 .../with-self-in-projection-output-bad.stderr | 0 .../object/with-self-in-projection-output-good.rs | 0 ...self-in-projection-output-repeated-supertrait.rs | 0 ...jects-owned-object-borrowed-method-headerless.rs | 0 .../ui/traits/operator-overloading-issue-52025.rs | 0 .../overlap-not-permitted-for-builtin-trait.rs | 0 .../overlap-not-permitted-for-builtin-trait.stderr | 0 .../traits/overlap-permitted-for-marker-traits.rs | 0 .../ui/traits/param-without-lifetime-constraint.rs | 0 .../traits/param-without-lifetime-constraint.stderr | 0 .../ui/traits/parameterized-with-bounds.rs | 0 {src/test => tests}/ui/traits/pointee-deduction.rs | 0 .../ui/traits/pointee-tail-is-generic-errors.rs | 0 .../ui/traits/pointee-tail-is-generic-errors.stderr | 0 .../ui/traits/pointee-tail-is-generic.rs | 0 .../ui/traits/principal-less-objects.rs | 0 {src/test => tests}/ui/traits/privacy.rs | 0 .../ui/traits/project-modulo-regions.rs | 0 .../project-modulo-regions.with_clause.stderr | 0 .../project-modulo-regions.without_clause.stderr | 0 .../ui/traits/region-pointer-simple.rs | 0 .../traits/reservation-impl/coherence-conflict.rs | 0 .../reservation-impl/coherence-conflict.stderr | 0 .../ui/traits/reservation-impl/no-use.rs | 0 .../ui/traits/reservation-impl/no-use.stderr | 0 .../ui/traits/reservation-impl/non-lattice-ok.rs | 0 .../test => tests}/ui/traits/reservation-impl/ok.rs | 0 .../ui/traits/resolution-in-overloaded-op.rs | 0 .../ui/traits/resolution-in-overloaded-op.stderr | 0 .../ui/traits/safety-fn-body.mir.stderr | 0 {src/test => tests}/ui/traits/safety-fn-body.rs | 0 .../ui/traits/safety-fn-body.thir.stderr | 0 .../ui/traits/safety-inherent-impl.rs | 0 .../ui/traits/safety-inherent-impl.stderr | 0 {src/test => tests}/ui/traits/safety-ok-cc.rs | 0 {src/test => tests}/ui/traits/safety-ok.rs | 0 .../ui/traits/safety-trait-impl-cc.rs | 0 .../ui/traits/safety-trait-impl-cc.stderr | 0 {src/test => tests}/ui/traits/safety-trait-impl.rs | 0 .../ui/traits/safety-trait-impl.stderr | 0 .../ui/traits/self-without-lifetime-constraint.rs | 0 .../traits/self-without-lifetime-constraint.stderr | 0 .../solver-cycles/inductive-canonical-cycle.rs | 0 .../ui/traits/static-method-generic-inference.rs | 0 .../traits/static-method-generic-inference.stderr | 0 .../ui/traits/static-method-overwriting.rs | 0 .../ui/traits/static-outlives-a-where-clause.rs | 0 .../test => tests}/ui/traits/staticness-mismatch.rs | 0 .../ui/traits/staticness-mismatch.stderr | 0 .../ui/traits/suggest-deferences/issue-39029.fixed | 0 .../ui/traits/suggest-deferences/issue-39029.rs | 0 .../ui/traits/suggest-deferences/issue-39029.stderr | 0 .../ui/traits/suggest-deferences/issue-62530.fixed | 0 .../ui/traits/suggest-deferences/issue-62530.rs | 0 .../ui/traits/suggest-deferences/issue-62530.stderr | 0 .../ui/traits/suggest-deferences/multiple-0.fixed | 0 .../ui/traits/suggest-deferences/multiple-0.rs | 0 .../ui/traits/suggest-deferences/multiple-0.stderr | 0 .../ui/traits/suggest-deferences/multiple-1.rs | 0 .../ui/traits/suggest-deferences/multiple-1.stderr | 0 .../traits/suggest-deferences/root-obligation.fixed | 0 .../ui/traits/suggest-deferences/root-obligation.rs | 0 .../suggest-deferences/root-obligation.stderr | 0 .../suggest-dereferencing-receiver-argument.fixed | 0 .../suggest-dereferencing-receiver-argument.rs | 0 .../suggest-dereferencing-receiver-argument.stderr | 0 .../ui/traits/suggest-fully-qualified-closure.rs | 0 .../traits/suggest-fully-qualified-closure.stderr | 0 .../suggest-fully-qualified-path-with-adjustment.rs | 0 ...gest-fully-qualified-path-with-adjustment.stderr | 0 ...ggest-fully-qualified-path-without-adjustment.rs | 0 ...t-fully-qualified-path-without-adjustment.stderr | 0 .../ui/traits/suggest-where-clause.rs | 0 .../ui/traits/suggest-where-clause.stderr | 0 .../ui/traits/superdefault-generics.rs | 0 {src/test => tests}/ui/traits/syntax-polarity.rs | 0 .../ui/traits/syntax-trait-polarity.rs | 0 .../ui/traits/syntax-trait-polarity.stderr | 0 {src/test => tests}/ui/traits/test-2.rs | 0 {src/test => tests}/ui/traits/test-2.stderr | 0 {src/test => tests}/ui/traits/test.rs | 0 {src/test => tests}/ui/traits/test.stderr | 0 {src/test => tests}/ui/traits/to-str.rs | 0 .../ui/traits/trait-or-new-type-instead.rs | 0 .../ui/traits/trait-or-new-type-instead.stderr | 0 .../ui/traits/trait-upcasting/basic.rs | 0 .../correct-supertrait-substitution.rs | 0 .../trait-upcasting/cyclic-trait-resolution.rs | 0 .../trait-upcasting/cyclic-trait-resolution.stderr | 0 .../ui/traits/trait-upcasting/diamond.rs | 0 .../ui/traits/trait-upcasting/invalid-upcast.rs | 0 .../ui/traits/trait-upcasting/invalid-upcast.stderr | 0 .../trait-upcasting/issue-11515-upcast-fn_mut-fn.rs | 0 .../ui/traits/trait-upcasting/lifetime.rs | 0 .../ui/traits/trait-upcasting/migrate-lint-deny.rs | 0 .../traits/trait-upcasting/migrate-lint-deny.stderr | 0 .../multiple-occurrence-ambiguousity.rs | 0 .../multiple-occurrence-ambiguousity.stderr | 0 .../ui/traits/trait-upcasting/replace-vptr.rs | 0 .../ui/traits/trait-upcasting/struct.rs | 0 .../ui/traits/trait-upcasting/subtrait-method.rs | 0 .../traits/trait-upcasting/subtrait-method.stderr | 0 .../traits/trait-upcasting/type-checking-test-1.rs | 0 .../trait-upcasting/type-checking-test-1.stderr | 0 .../traits/trait-upcasting/type-checking-test-2.rs | 0 .../trait-upcasting/type-checking-test-2.stderr | 0 .../type-checking-test-3.polonius.stderr | 0 .../traits/trait-upcasting/type-checking-test-3.rs | 0 .../trait-upcasting/type-checking-test-3.stderr | 0 .../type-checking-test-4.polonius.stderr | 0 .../traits/trait-upcasting/type-checking-test-4.rs | 0 .../trait-upcasting/type-checking-test-4.stderr | 0 .../ui/traits/typeclasses-eq-example-static.rs | 0 .../ui/traits/typeclasses-eq-example.rs | 0 {src/test => tests}/ui/traits/ufcs-object.rs | 0 .../ui/traits/unspecified-self-in-trait-ref.rs | 0 .../ui/traits/unspecified-self-in-trait-ref.stderr | 0 {src/test => tests}/ui/traits/use-before-def.rs | 0 .../ui/traits/vtable-res-trait-param.rs | 0 .../ui/traits/vtable-res-trait-param.stderr | 0 {src/test => tests}/ui/traits/vtable/issue-91807.rs | 0 {src/test => tests}/ui/traits/vtable/issue-97381.rs | 0 .../ui/traits/vtable/issue-97381.stderr | 0 .../ui/traits/vtable/vtable-diamond.rs | 0 .../ui/traits/vtable/vtable-diamond.stderr | 0 .../ui/traits/vtable/vtable-multi-level.rs | 0 .../ui/traits/vtable/vtable-multi-level.stderr | 0 .../ui/traits/vtable/vtable-multiple.rs | 0 .../ui/traits/vtable/vtable-multiple.stderr | 0 .../ui/traits/vtable/vtable-non-object-safe.rs | 0 .../ui/traits/vtable/vtable-non-object-safe.stderr | 0 .../ui/traits/vtable/vtable-vacant.rs | 0 .../ui/traits/vtable/vtable-vacant.stderr | 0 .../ui/traits/wf-object/maybe-bound.rs | 0 .../ui/traits/wf-object/maybe-bound.stderr | 0 .../ui/traits/wf-object/no-duplicates.rs | 0 .../ui/traits/wf-object/no-duplicates.stderr | 0 .../ui/traits/wf-object/only-maybe-bound.rs | 0 .../ui/traits/wf-object/only-maybe-bound.stderr | 0 .../ui/traits/wf-object/reverse-order.rs | 0 .../ui/traits/where-clause-vs-impl.rs | 0 .../test => tests}/ui/traits/with-bounds-default.rs | 0 {src/test => tests}/ui/traits/with-dst.rs | 0 .../abstraction/abstracted_assume.rs | 0 .../transmutability/abstraction/const_generic_fn.rs | 0 .../arrays/issue-103783-array-length.rs | 0 .../arrays/issue-103783-array-length.stderr | 0 .../arrays/should_have_correct_length.rs | 0 .../arrays/should_inherit_alignment.rs | 0 .../arrays/should_require_well_defined_layout.rs | 0 .../should_require_well_defined_layout.stderr | 0 .../primitive_reprs_should_have_correct_length.rs | 0 ...rimitive_reprs_should_have_correct_length.stderr | 0 .../repr/should_require_well_defined_layout.rs | 0 .../repr/should_require_well_defined_layout.stderr | 0 .../transmutability/enums/should_order_correctly.rs | 0 .../ui/transmutability/enums/should_pad_variants.rs | 0 .../enums/should_pad_variants.stderr | 0 .../enums/should_respect_endianness.rs | 0 .../enums/should_respect_endianness.stderr | 0 .../ui/transmutability/issue-101739-1.rs | 0 .../ui/transmutability/issue-101739-1.stderr | 0 .../ui/transmutability/issue-101739-2.rs | 0 .../ui/transmutability/issue-101739-2.stderr | 0 .../feature-missing.rs | 0 .../feature-missing.stderr | 0 .../malformed-program-gracefulness/unknown_dst.rs | 0 .../unknown_dst.stderr | 0 .../malformed-program-gracefulness/unknown_src.rs | 0 .../unknown_src.stderr | 0 .../unknown_src_field.rs | 0 .../unknown_src_field.stderr | 0 .../wrong-type-assume.rs | 0 .../wrong-type-assume.stderr | 0 .../ui/transmutability/primitives/bool.rs | 0 .../ui/transmutability/primitives/bool.stderr | 0 .../ui/transmutability/primitives/numbers.rs | 0 .../ui/transmutability/primitives/numbers.stderr | 0 .../ui/transmutability/primitives/unit.rs | 0 .../ui/transmutability/primitives/unit.stderr | 0 .../test => tests}/ui/transmutability/references.rs | 0 .../ui/transmutability/references.stderr | 0 .../structs/repr/should_handle_align.rs | 0 .../structs/repr/should_handle_packed.rs | 0 .../repr/should_require_well_defined_layout.rs | 0 .../repr/should_require_well_defined_layout.stderr | 0 .../structs/should_order_fields_correctly.rs | 0 .../ui/transmutability/unions/boolish.rs | 0 .../unions/repr/should_handle_align.rs | 0 .../unions/repr/should_handle_packed.rs | 0 .../repr/should_require_well_defined_layout.rs | 0 .../repr/should_require_well_defined_layout.stderr | 0 .../transmutability/unions/should_pad_variants.rs | 0 .../unions/should_pad_variants.stderr | 0 ...ld_permit_intersecting_if_validity_is_assumed.rs | 0 .../unions/should_reject_contraction.rs | 0 .../unions/should_reject_contraction.stderr | 0 .../unions/should_reject_disjoint.rs | 0 .../unions/should_reject_disjoint.stderr | 0 .../unions/should_reject_intersecting.rs | 0 .../unions/should_reject_intersecting.stderr | 0 .../should_accept_if_dst_has_private_field.rs | 0 .../should_accept_if_dst_has_private_variant.rs | 0 ...ld_accept_if_dst_has_tricky_unreachable_field.rs | 0 .../should_accept_if_dst_has_unreachable_field.rs | 0 ...hould_accept_if_dst_has_unreachable_field.stderr | 0 .../should_accept_if_dst_has_unreachable_ty.rs | 0 .../should_accept_if_dst_has_unreachable_ty.stderr | 0 .../should_accept_if_src_has_private_field.rs | 0 .../should_accept_if_src_has_private_variant.rs | 0 .../should_accept_if_src_has_unreachable_field.rs | 0 ...hould_accept_if_src_has_unreachable_field.stderr | 0 .../should_accept_if_src_has_unreachable_ty.rs | 0 .../should_accept_if_src_has_unreachable_ty.stderr | 0 .../should_reject_if_dst_has_private_field.rs | 0 .../should_reject_if_dst_has_private_field.stderr | 0 .../should_reject_if_dst_has_private_variant.rs | 0 .../should_reject_if_dst_has_private_variant.stderr | 0 ...ld_reject_if_dst_has_tricky_unreachable_field.rs | 0 .../should_reject_if_dst_has_unreachable_field.rs | 0 ...hould_reject_if_dst_has_unreachable_field.stderr | 0 .../should_reject_if_dst_has_unreachable_ty.rs | 0 .../should_reject_if_dst_has_unreachable_ty.stderr | 0 .../ui/transmute-equal-assoc-types.rs | 0 .../ui/transmute-non-immediate-to-immediate.rs | 0 {src/test => tests}/ui/transmute/lifetimes.rs | 0 {src/test => tests}/ui/transmute/main.rs | 0 {src/test => tests}/ui/transmute/main.stderr | 0 .../ui/transmute/transmute-different-sizes.rs | 0 .../ui/transmute/transmute-different-sizes.stderr | 0 .../ui/transmute/transmute-fat-pointers.rs | 0 .../ui/transmute/transmute-fat-pointers.stderr | 0 .../transmute/transmute-from-fn-item-types-error.rs | 0 .../transmute-from-fn-item-types-error.stderr | 0 {src/test => tests}/ui/transmute/transmute-impl.rs | 0 .../ui/transmute/transmute-impl.stderr | 0 .../ui/transmute/transmute-imut-to-mut.rs | 0 .../ui/transmute/transmute-imut-to-mut.stderr | 0 .../ui/transmute/transmute-padding-ice.rs | 0 .../ui/transmute/transmute-padding-ice.stderr | 0 .../ui/transmute/transmute-type-parameters.rs | 0 .../ui/transmute/transmute-type-parameters.stderr | 0 .../ui/treat-err-as-bug/delay_span_bug.rs | 0 .../ui/treat-err-as-bug/delay_span_bug.stderr | 0 {src/test => tests}/ui/treat-err-as-bug/err.rs | 0 {src/test => tests}/ui/treat-err-as-bug/err.stderr | 0 .../issue-73021-impossible-inline.inline.stderr | 0 .../issue-73021-impossible-inline.no-opt.stderr | 0 .../trivial-bounds/issue-73021-impossible-inline.rs | 0 ...vial-bounds-inconsistent-associated-functions.rs | 0 .../trivial-bounds-inconsistent-copy-reborrow.rs | 0 ...trivial-bounds-inconsistent-copy-reborrow.stderr | 0 .../trivial-bounds-inconsistent-copy.rs | 0 .../trivial-bounds-inconsistent-copy.stderr | 0 .../trivial-bounds-inconsistent-projection-error.rs | 0 ...vial-bounds-inconsistent-projection-error.stderr | 0 .../trivial-bounds-inconsistent-projection.rs | 0 .../trivial-bounds-inconsistent-projection.stderr | 0 .../trivial-bounds-inconsistent-sized.rs | 0 .../trivial-bounds-inconsistent-sized.stderr | 0 .../trivial-bounds-inconsistent-well-formed.rs | 0 .../trivial-bounds-inconsistent-well-formed.stderr | 0 .../trivial-bounds/trivial-bounds-inconsistent.rs | 0 .../trivial-bounds-inconsistent.stderr | 0 .../ui/trivial-bounds/trivial-bounds-leak-copy.rs | 0 .../trivial-bounds/trivial-bounds-leak-copy.stderr | 0 .../ui/trivial-bounds/trivial-bounds-leak.rs | 0 .../ui/trivial-bounds/trivial-bounds-leak.stderr | 0 .../ui/trivial-bounds/trivial-bounds-lint.rs | 0 .../ui/trivial-bounds/trivial-bounds-lint.stderr | 0 .../ui/trivial-bounds/trivial-bounds-object.rs | 0 {src/test => tests}/ui/trivial_casts-rpass.rs | 0 {src/test => tests}/ui/try-block/issue-45124.rs | 0 .../ui/try-block/try-block-bad-lifetime.rs | 0 .../ui/try-block/try-block-bad-lifetime.stderr | 0 .../ui/try-block/try-block-bad-type.rs | 0 .../ui/try-block/try-block-bad-type.stderr | 0 {src/test => tests}/ui/try-block/try-block-catch.rs | 0 .../ui/try-block/try-block-catch.stderr | 0 .../ui/try-block/try-block-in-edition2015.rs | 0 .../ui/try-block/try-block-in-edition2015.stderr | 0 .../ui/try-block/try-block-in-match.rs | 0 .../ui/try-block/try-block-in-return.rs | 0 .../ui/try-block/try-block-in-while.rs | 0 .../ui/try-block/try-block-in-while.stderr | 0 .../ui/try-block/try-block-maybe-bad-lifetime.rs | 0 .../try-block/try-block-maybe-bad-lifetime.stderr | 0 .../ui/try-block/try-block-opt-init.rs | 0 .../ui/try-block/try-block-opt-init.stderr | 0 .../ui/try-block/try-block-type-error.rs | 0 .../ui/try-block/try-block-type-error.stderr | 0 .../ui/try-block/try-block-unreachable-code-lint.rs | 0 .../try-block-unreachable-code-lint.stderr | 0 .../ui/try-block/try-block-unused-delims.fixed | 0 .../ui/try-block/try-block-unused-delims.rs | 0 .../ui/try-block/try-block-unused-delims.stderr | 0 {src/test => tests}/ui/try-block/try-block.rs | 0 .../ui/try-block/try-is-identifier-edition2015.rs | 0 .../ui/try-from-int-error-partial-eq.rs | 0 {src/test => tests}/ui/try-operator-hygiene.rs | 0 {src/test => tests}/ui/try-operator.rs | 0 .../ui/try-trait/bad-interconversion.rs | 0 .../ui/try-trait/bad-interconversion.stderr | 0 .../test => tests}/ui/try-trait/option-to-result.rs | 0 .../ui/try-trait/option-to-result.stderr | 0 {src/test => tests}/ui/try-trait/try-as-monad.rs | 0 .../ui/try-trait/try-on-option-diagnostics.rs | 0 .../ui/try-trait/try-on-option-diagnostics.stderr | 0 {src/test => tests}/ui/try-trait/try-on-option.rs | 0 .../ui/try-trait/try-on-option.stderr | 0 .../ui/try-trait/try-operator-custom.rs | 0 .../ui/try-trait/try-operator-on-main.rs | 0 .../ui/try-trait/try-operator-on-main.stderr | 0 {src/test => tests}/ui/try-trait/try-poll.rs | 0 {src/test => tests}/ui/try-trait/yeet-for-option.rs | 0 {src/test => tests}/ui/try-trait/yeet-for-result.rs | 0 {src/test => tests}/ui/tuple-index.rs | 0 .../ui/tuple/add-tuple-within-arguments.rs | 0 .../ui/tuple/add-tuple-within-arguments.stderr | 0 {src/test => tests}/ui/tuple/array-diagnostics.rs | 0 .../ui/tuple/array-diagnostics.stderr | 0 {src/test => tests}/ui/tuple/builtin-fail.rs | 0 {src/test => tests}/ui/tuple/builtin-fail.stderr | 0 {src/test => tests}/ui/tuple/builtin.rs | 0 {src/test => tests}/ui/tuple/index-float.rs | 0 {src/test => tests}/ui/tuple/index-invalid.rs | 0 {src/test => tests}/ui/tuple/index-invalid.stderr | 0 {src/test => tests}/ui/tuple/indexing-in-macro.rs | 0 {src/test => tests}/ui/tuple/nested-index.rs | 0 {src/test => tests}/ui/tuple/one-tuple.rs | 0 {src/test => tests}/ui/tuple/tup.rs | 0 .../test => tests}/ui/tuple/tuple-arity-mismatch.rs | 0 .../ui/tuple/tuple-arity-mismatch.stderr | 0 .../ui/tuple/tuple-index-fat-types.rs | 0 .../ui/tuple/tuple-index-not-tuple.rs | 0 .../ui/tuple/tuple-index-not-tuple.stderr | 0 .../ui/tuple/tuple-index-out-of-bounds.rs | 0 .../ui/tuple/tuple-index-out-of-bounds.stderr | 0 .../ui/tuple/tuple-struct-fields/test.rs | 0 .../ui/tuple/tuple-struct-fields/test.stderr | 0 .../ui/tuple/tuple-struct-fields/test2.rs | 0 .../ui/tuple/tuple-struct-fields/test2.stderr | 0 .../ui/tuple/tuple-struct-fields/test3.rs | 0 .../ui/tuple/tuple-struct-fields/test3.stderr | 0 .../test => tests}/ui/tuple/wrong_argument_ice-2.rs | 0 .../ui/tuple/wrong_argument_ice-2.stderr | 0 .../test => tests}/ui/tuple/wrong_argument_ice-3.rs | 0 .../ui/tuple/wrong_argument_ice-3.stderr | 0 .../test => tests}/ui/tuple/wrong_argument_ice-4.rs | 0 .../ui/tuple/wrong_argument_ice-4.stderr | 0 {src/test => tests}/ui/tuple/wrong_argument_ice.rs | 0 .../ui/tuple/wrong_argument_ice.stderr | 0 {src/test => tests}/ui/tydesc-name.rs | 0 .../enum-variant-generic-args-pass.rs | 0 .../enum-variant-generic-args.rs | 0 .../enum-variant-generic-args.stderr | 0 ...m-variant-priority-higher-than-other-inherent.rs | 0 ...riant-priority-higher-than-other-inherent.stderr | 0 ...iant-priority-lint-ambiguous_associated_items.rs | 0 ...-priority-lint-ambiguous_associated_items.stderr | 0 ...correct-variant-form-through-Self-issue-58006.rs | 0 ...ect-variant-form-through-Self-issue-58006.stderr | 0 .../incorrect-variant-form-through-alias-caught.rs | 0 ...correct-variant-form-through-alias-caught.stderr | 0 .../ui/type-alias-enum-variants/issue-57866.rs | 0 .../issue-61801-path-pattern-can-infer.rs | 0 ...issue-63151-dead-code-lint-fields-in-patterns.rs | 0 .../no-type-application-on-aliased-enum-variant.rs | 0 ...-type-application-on-aliased-enum-variant.stderr | 0 ...e-to-enum-variant-in-type-namespace-and-error.rs | 0 ...-enum-variant-in-type-namespace-and-error.stderr | 0 .../self-in-enum-definition.rs | 0 .../self-in-enum-definition.stderr | 0 .../type-alias-enum-variants-pass.rs | 0 .../ui/type-alias-impl-trait/argument-types.rs | 0 .../type-alias-impl-trait/assoc-projection-ice.rs | 0 .../ui/type-alias-impl-trait/assoc-type-const.rs | 0 .../assoc-type-lifetime-unconstrained.rs | 0 .../assoc-type-lifetime-unconstrained.stderr | 0 .../ui/type-alias-impl-trait/assoc-type-lifetime.rs | 0 .../associated-type-alias-impl-trait.rs | 0 .../associated-type-impl-trait-lifetime.rs | 0 .../ui/type-alias-impl-trait/auto-trait-leakage.rs | 0 .../ui/type-alias-impl-trait/auto-trait-leakage2.rs | 0 .../auto-trait-leakage2.stderr | 0 .../ui/type-alias-impl-trait/auto-trait-leakage3.rs | 0 .../auto-trait-leakage3.stderr | 0 .../auxiliary/coherence_cross_crate_trait_decl.rs | 0 .../auxiliary/collect_hidden_types.rs | 0 .../auxiliary/cross_crate_ice.rs | 0 .../auxiliary/cross_crate_ice2.rs | 0 .../auxiliary/foreign-crate.rs | 0 .../ui/type-alias-impl-trait/bound_reduction.rs | 0 .../ui/type-alias-impl-trait/bound_reduction2.rs | 0 .../type-alias-impl-trait/bound_reduction2.stderr | 0 .../type-alias-impl-trait/bounds-are-checked-2.rs | 0 .../bounds-are-checked-2.stderr | 0 .../ui/type-alias-impl-trait/bounds-are-checked.rs | 0 .../type-alias-impl-trait/bounds-are-checked.stderr | 0 .../ui/type-alias-impl-trait/closure_args.rs | 0 .../ui/type-alias-impl-trait/closure_args2.rs | 0 .../type-alias-impl-trait/closure_parent_substs.rs | 0 .../ui/type-alias-impl-trait/closure_wf_outlives.rs | 0 .../closure_wf_outlives.stderr | 0 .../type-alias-impl-trait/closures_in_branches.rs | 0 .../closures_in_branches.stderr | 0 .../ui/type-alias-impl-trait/coherence.rs | 0 .../ui/type-alias-impl-trait/coherence.stderr | 0 .../type-alias-impl-trait/coherence_cross_crate.rs | 0 .../coherence_cross_crate.stderr | 0 .../coherence_generalization.rs | 0 .../type-alias-impl-trait/collect_hidden_types.rs | 0 .../ui/type-alias-impl-trait/constrain_inputs.rs | 0 .../type-alias-impl-trait/constrain_inputs.stderr | 0 .../constrain_inputs_unsound.rs | 0 .../constrain_inputs_unsound.stderr | 0 .../ui/type-alias-impl-trait/cross_crate_ice.rs | 0 .../ui/type-alias-impl-trait/cross_crate_ice2.rs | 0 .../ui/type-alias-impl-trait/cross_inference.rs | 0 .../cross_inference_pattern_bug.rs | 0 .../cross_inference_pattern_bug_no_type.rs | 0 .../type-alias-impl-trait/cross_inference_rpit.rs | 0 .../declared_but_never_defined.rs | 0 .../declared_but_never_defined.stderr | 0 .../declared_but_not_defined_in_scope.rs | 0 .../declared_but_not_defined_in_scope.stderr | 0 .../type-alias-impl-trait/defining-use-submodule.rs | 0 .../ui/type-alias-impl-trait/destructuring.rs | 0 .../different_defining_uses.rs | 0 .../different_defining_uses.stderr | 0 .../different_defining_uses_never_type.rs | 0 .../different_defining_uses_never_type.stderr | 0 .../different_defining_uses_never_type2.rs | 0 .../different_defining_uses_never_type3.rs | 0 .../different_defining_uses_never_type3.stderr | 0 .../different_lifetimes_defining_uses.rs | 0 .../different_lifetimes_defining_uses.stderr | 0 .../ui/type-alias-impl-trait/fallback.rs | 0 .../ui/type-alias-impl-trait/fallback.stderr | 0 .../ui/type-alias-impl-trait/field-types.rs | 0 .../ui/type-alias-impl-trait/future.rs | 0 .../ui/type-alias-impl-trait/future.stderr | 0 .../generic_different_defining_uses.rs | 0 .../generic_different_defining_uses.stderr | 0 .../generic_duplicate_lifetime_param.rs | 0 .../generic_duplicate_lifetime_param.stderr | 0 .../generic_duplicate_param_use.rs | 0 .../generic_duplicate_param_use.stderr | 0 .../generic_duplicate_param_use10.rs | 0 .../generic_duplicate_param_use2.rs | 0 .../generic_duplicate_param_use2.stderr | 0 .../generic_duplicate_param_use3.rs | 0 .../generic_duplicate_param_use3.stderr | 0 .../generic_duplicate_param_use4.rs | 0 .../generic_duplicate_param_use4.stderr | 0 .../generic_duplicate_param_use5.rs | 0 .../generic_duplicate_param_use5.stderr | 0 .../generic_duplicate_param_use6.rs | 0 .../generic_duplicate_param_use6.stderr | 0 .../generic_duplicate_param_use7.rs | 0 .../generic_duplicate_param_use8.rs | 0 .../generic_duplicate_param_use8.stderr | 0 .../generic_duplicate_param_use9.rs | 0 .../generic_duplicate_param_use9.stderr | 0 .../type-alias-impl-trait/generic_lifetime_param.rs | 0 .../generic_nondefining_use.rs | 0 .../generic_nondefining_use.stderr | 0 .../ui/type-alias-impl-trait/generic_not_used.rs | 0 .../type-alias-impl-trait/generic_not_used.stderr | 0 .../generic_type_does_not_live_long_enough.rs | 0 .../generic_type_does_not_live_long_enough.stderr | 0 .../generic_underconstrained.rs | 0 .../generic_underconstrained.stderr | 0 .../generic_underconstrained2.rs | 0 .../generic_underconstrained2.stderr | 0 .../impl-with-unconstrained-param.rs | 0 .../impl-with-unconstrained-param.stderr | 0 .../impl_trait_for_generic_tait.rs | 0 .../impl_trait_for_same_tait.rs | 0 .../impl_trait_for_same_tait.stderr | 0 .../ui/type-alias-impl-trait/impl_trait_for_tait.rs | 0 .../impl_trait_for_tait_bound.rs | 0 .../impl_trait_for_tait_bound.stderr | 0 .../impl_trait_for_tait_bound2.rs | 0 .../impl_trait_for_tait_bound2.stderr | 0 .../ui/type-alias-impl-trait/implied_bounds.rs | 0 .../ui/type-alias-impl-trait/implied_bounds.stderr | 0 .../ui/type-alias-impl-trait/implied_bounds2.rs | 0 .../ui/type-alias-impl-trait/implied_bounds3.rs | 0 .../type-alias-impl-trait/implied_bounds_closure.rs | 0 .../implied_bounds_closure.stderr | 0 .../implied_bounds_from_types.rs | 0 .../implied_bounds_from_types.stderr | 0 .../implied_lifetime_wf_check.rs | 0 .../implied_lifetime_wf_check3.rs | 0 .../implied_lifetime_wf_check3.stderr | 0 .../implied_lifetime_wf_check4_static.rs | 0 .../implied_lifetime_wf_check4_static.stderr | 0 .../imply_bounds_from_bounds.rs | 0 .../imply_bounds_from_bounds_param.rs | 0 .../imply_bounds_from_bounds_param.stderr | 0 .../incoherent-assoc-imp-trait.rs | 0 .../incoherent-assoc-imp-trait.stderr | 0 .../type-alias-impl-trait/incomplete-inference.rs | 0 .../incomplete-inference.stderr | 0 .../ui/type-alias-impl-trait/inference-cycle.rs | 0 .../ui/type-alias-impl-trait/inference-cycle.stderr | 0 .../ui/type-alias-impl-trait/issue-101750.rs | 0 .../issue-52843-closure-constrain.rs | 0 .../issue-52843-closure-constrain.stderr | 0 .../ui/type-alias-impl-trait/issue-52843.rs | 0 .../ui/type-alias-impl-trait/issue-52843.stderr | 0 .../ui/type-alias-impl-trait/issue-53092-2.rs | 0 .../ui/type-alias-impl-trait/issue-53092-2.stderr | 0 .../ui/type-alias-impl-trait/issue-53092.rs | 0 .../ui/type-alias-impl-trait/issue-53092.stderr | 0 .../ui/type-alias-impl-trait/issue-53096.rs | 0 .../ui/type-alias-impl-trait/issue-53096.stderr | 0 .../issue-53398-cyclic-types.rs | 0 .../issue-53398-cyclic-types.stderr | 0 .../ui/type-alias-impl-trait/issue-53598.rs | 0 .../ui/type-alias-impl-trait/issue-53598.stderr | 0 .../issue-53678-generator-and-const-fn.rs | 0 .../issue-53678-generator-and-const-fn.stderr | 0 .../issue-55099-lifetime-inference.rs | 0 .../issue-57188-associate-impl-capture.rs | 0 .../issue-57611-trait-alias.rs | 0 .../ui/type-alias-impl-trait/issue-57700.rs | 0 .../ui/type-alias-impl-trait/issue-57700.stderr | 0 .../issue-57807-associated-type.rs | 0 .../ui/type-alias-impl-trait/issue-57961.rs | 0 .../ui/type-alias-impl-trait/issue-57961.stderr | 0 .../issue-58662-generator-with-lifetime.rs | 0 .../type-alias-impl-trait/issue-58662-simplified.rs | 0 .../ui/type-alias-impl-trait/issue-58887.rs | 0 .../ui/type-alias-impl-trait/issue-58951-2.rs | 0 .../ui/type-alias-impl-trait/issue-58951.rs | 0 .../ui/type-alias-impl-trait/issue-60371.rs | 0 .../ui/type-alias-impl-trait/issue-60371.stderr | 0 .../ui/type-alias-impl-trait/issue-60407.rs | 0 .../ui/type-alias-impl-trait/issue-60407.stderr | 0 .../ui/type-alias-impl-trait/issue-60564-working.rs | 0 .../ui/type-alias-impl-trait/issue-60564.rs | 0 .../ui/type-alias-impl-trait/issue-60564.stderr | 0 .../ui/type-alias-impl-trait/issue-60662.rs | 0 .../ui/type-alias-impl-trait/issue-60662.stdout | 0 .../issue-62000-associate-impl-trait-lifetimes.rs | 0 .../issue-63263-closure-return.rs | 0 .../ui/type-alias-impl-trait/issue-63279.rs | 0 .../ui/type-alias-impl-trait/issue-63279.stderr | 0 .../ui/type-alias-impl-trait/issue-63355.rs | 0 .../issue-63677-type-alias-coherence.rs | 0 .../ui/type-alias-impl-trait/issue-65384.rs | 0 .../ui/type-alias-impl-trait/issue-65384.stderr | 0 .../issue-65679-inst-opaque-ty-from-val-twice.rs | 0 .../ui/type-alias-impl-trait/issue-65918.rs | 0 .../issue-66580-closure-coherence.rs | 0 .../issue-67844-nested-opaque.rs | 0 .../issue-68368-non-defining-use-2.rs | 0 .../issue-68368-non-defining-use-2.stderr | 0 .../issue-68368-non-defining-use.rs | 0 .../issue-68368-non-defining-use.stderr | 0 .../issue-69136-inner-lifetime-resolve-error.rs | 0 .../issue-69136-inner-lifetime-resolve-error.stderr | 0 .../issue-69136-inner-lifetime-resolve-ok.rs | 0 .../ui/type-alias-impl-trait/issue-69323.rs | 0 .../ui/type-alias-impl-trait/issue-70121.rs | 0 .../ui/type-alias-impl-trait/issue-72793.rs | 0 .../ui/type-alias-impl-trait/issue-74244.rs | 0 .../ui/type-alias-impl-trait/issue-74244.stderr | 0 .../ui/type-alias-impl-trait/issue-74280.rs | 0 .../ui/type-alias-impl-trait/issue-74280.stderr | 0 .../ui/type-alias-impl-trait/issue-74761-2.rs | 0 .../ui/type-alias-impl-trait/issue-74761-2.stderr | 0 .../ui/type-alias-impl-trait/issue-74761.rs | 0 .../ui/type-alias-impl-trait/issue-74761.stderr | 0 .../issue-76202-trait-impl-for-tait.rs | 0 .../ui/type-alias-impl-trait/issue-77179.rs | 0 .../ui/type-alias-impl-trait/issue-77179.stderr | 0 .../ui/type-alias-impl-trait/issue-78450.rs | 0 .../issue-84660-trait-impl-for-tait.rs | 0 .../issue-84660-unsoundness.rs | 0 .../issue-84660-unsoundness.stderr | 0 .../issue-87455-static-lifetime-ice.rs | 0 .../ui/type-alias-impl-trait/issue-89686.rs | 0 .../ui/type-alias-impl-trait/issue-89686.stderr | 0 .../ui/type-alias-impl-trait/issue-89952.rs | 0 .../ui/type-alias-impl-trait/issue-90400-1.rs | 0 .../ui/type-alias-impl-trait/issue-90400-1.stderr | 0 .../ui/type-alias-impl-trait/issue-90400-2.rs | 0 .../ui/type-alias-impl-trait/issue-90400-2.stderr | 0 .../ui/type-alias-impl-trait/issue-93411.rs | 0 .../ui/type-alias-impl-trait/issue-94429.rs | 0 .../ui/type-alias-impl-trait/issue-94429.stderr | 0 .../issue-96572-unconstrained-mismatch.rs | 0 .../issue-96572-unconstrained-mismatch.stderr | 0 .../issue-96572-unconstrained.rs | 0 .../ui/type-alias-impl-trait/issue-98604.rs | 0 .../ui/type-alias-impl-trait/issue-98604.stderr | 0 .../ui/type-alias-impl-trait/issue-98608.rs | 0 .../ui/type-alias-impl-trait/issue-98608.stderr | 0 .../type-alias-impl-trait/missing_lifetime_bound.rs | 0 .../missing_lifetime_bound.stderr | 0 .../multiple-def-uses-in-one-fn-infer.rs | 0 .../multiple-def-uses-in-one-fn-infer.stderr | 0 .../multiple-def-uses-in-one-fn-lifetimes.rs | 0 .../multiple-def-uses-in-one-fn-lifetimes.stderr | 0 .../multiple-def-uses-in-one-fn-pass.rs | 0 .../multiple-def-uses-in-one-fn.rs | 0 .../multiple-def-uses-in-one-fn.stderr | 0 .../multiple-def-uses-in-one-fn2.rs | 0 .../multiple-def-uses-in-one-fn2.stderr | 0 .../multiple-def-uses-in-one-fn3.rs | 0 .../multiple-def-uses-in-one-fn3.stderr | 0 .../type-alias-impl-trait/multiple_definitions.rs | 0 .../type-alias-impl-trait/nested-tait-inference.rs | 0 .../nested-tait-inference.stderr | 0 .../type-alias-impl-trait/nested-tait-inference2.rs | 0 .../nested-tait-inference2.stderr | 0 .../type-alias-impl-trait/nested-tait-inference3.rs | 0 .../nested-tait-inference3.stderr | 0 .../ui/type-alias-impl-trait/nested.rs | 0 .../ui/type-alias-impl-trait/nested.stderr | 0 .../nested_type_alias_impl_trait.rs | 0 .../nested_type_alias_impl_trait.stderr | 0 .../never_reveal_concrete_type.rs | 0 .../no_inferrable_concrete_type.rs | 0 .../no_inferrable_concrete_type.stderr | 0 .../no_revealing_outside_defining_module.rs | 0 .../no_revealing_outside_defining_module.stderr | 0 .../ui/type-alias-impl-trait/not_a_defining_use.rs | 0 .../type-alias-impl-trait/not_a_defining_use.stderr | 0 .../ui/type-alias-impl-trait/not_well_formed.rs | 0 .../ui/type-alias-impl-trait/not_well_formed.stderr | 0 .../ui/type-alias-impl-trait/reveal_local.rs | 0 .../ui/type-alias-impl-trait/reveal_local.stderr | 0 .../ui/type-alias-impl-trait/self-referential-2.rs | 0 .../type-alias-impl-trait/self-referential-2.stderr | 0 .../ui/type-alias-impl-trait/self-referential-3.rs | 0 .../ui/type-alias-impl-trait/self-referential-4.rs | 0 .../type-alias-impl-trait/self-referential-4.stderr | 0 .../ui/type-alias-impl-trait/self-referential.rs | 0 .../type-alias-impl-trait/self-referential.stderr | 0 .../ui/type-alias-impl-trait/self_implication.rs | 0 .../ui/type-alias-impl-trait/static-const-types.rs | 0 .../structural-match-no-leak.rs | 0 .../structural-match-no-leak.stderr | 0 .../ui/type-alias-impl-trait/structural-match.rs | 0 .../type-alias-impl-trait/structural-match.stderr | 0 .../type-alias-impl-trait-assoc-dyn.rs | 0 .../type-alias-impl-trait-assoc-impl-trait.rs | 0 .../type-alias-impl-trait-const.rs | 0 .../type-alias-impl-trait-fn-type.rs | 0 .../type-alias-impl-trait-fn-type.stderr | 0 .../type-alias-impl-trait-fns.rs | 0 .../type-alias-impl-trait-sized.rs | 0 .../type-alias-impl-trait-struct.rs | 0 .../type-alias-impl-trait-tuple.rs | 0 .../type-alias-impl-trait-unconstrained-lifetime.rs | 0 ...e-alias-impl-trait-unconstrained-lifetime.stderr | 0 .../type-alias-impl-trait-with-cycle-error.rs | 0 .../type-alias-impl-trait-with-cycle-error.stderr | 0 .../type-alias-impl-trait-with-cycle-error2.rs | 0 .../type-alias-impl-trait-with-cycle-error2.stderr | 0 .../type-alias-impl-trait-with-no-traits.rs | 0 .../type-alias-impl-trait-with-no-traits.stderr | 0 .../type-alias-impl-trait/type-alias-impl-trait.rs | 0 .../type-alias-impl-trait/type-alias-impl-trait2.rs | 0 .../type-alias-nested-impl-trait.rs | 0 .../ui/type-alias-impl-trait/type_of_a_let.rs | 0 .../ui/type-alias-impl-trait/type_of_a_let.stderr | 0 .../type-alias-impl-trait/unbounded_opaque_type.rs | 0 .../underconstrained_generic.rs | 0 .../underconstrained_generic.stderr | 0 .../underconstrained_lifetime.rs | 0 .../underconstrained_lifetime.stderr | 0 .../type-alias-impl-trait/unused_generic_param.rs | 0 .../ui/type-alias-impl-trait/weird-return-types.rs | 0 .../ui/type-alias-impl-trait/wf-check-fn-def.rs | 0 .../ui/type-alias-impl-trait/wf-check-fn-def.stderr | 0 .../ui/type-alias-impl-trait/wf-check-fn-ptrs.rs | 0 .../ui/type-alias-impl-trait/wf_check_closures.rs | 0 .../type-alias-impl-trait/wf_check_closures.stderr | 0 {src/test => tests}/ui/type-alias/issue-14933.rs | 0 {src/test => tests}/ui/type-alias/issue-37515.rs | 0 .../test => tests}/ui/type-alias/issue-37515.stderr | 0 .../ui/type-alias/issue-62263-self-in-atb.rs | 0 .../ui/type-alias/issue-62263-self-in-atb.stderr | 0 .../ui/type-alias/issue-62305-self-assoc-ty.rs | 0 .../ui/type-alias/issue-62305-self-assoc-ty.stderr | 0 .../ui/type-alias/issue-62364-self-ty-arg.rs | 0 .../ui/type-alias/issue-62364-self-ty-arg.stderr | 0 {src/test => tests}/ui/type-id-higher-rank-2.rs | 0 .../test => tests}/ui/type-inference/issue-30225.rs | 0 .../ui/type-inference/issue-30225.stderr | 0 .../type-inference/or_else-multiple-type-params.rs | 0 .../or_else-multiple-type-params.stderr | 0 .../test => tests}/ui/type-inference/sort_by_key.rs | 0 .../ui/type-inference/sort_by_key.stderr | 0 .../ui/type-inference/unbounded-associated-type.rs | 0 .../type-inference/unbounded-associated-type.stderr | 0 .../unbounded-type-param-in-fn-with-assoc-type.rs | 0 ...nbounded-type-param-in-fn-with-assoc-type.stderr | 0 .../ui/type-inference/unbounded-type-param-in-fn.rs | 0 .../unbounded-type-param-in-fn.stderr | 0 {src/test => tests}/ui/type-namespace.rs | 0 {src/test => tests}/ui/type-param-constraints.rs | 0 {src/test => tests}/ui/type-param.rs | 0 {src/test => tests}/ui/type-ptr.rs | 0 {src/test => tests}/ui/type-use-i1-versus-i8.rs | 0 .../ui/type/ascription/issue-34255-1.rs | 0 .../ui/type/ascription/issue-34255-1.stderr | 0 .../ui/type/ascription/issue-47666.fixed | 0 .../ui/type/ascription/issue-47666.rs | 0 .../ui/type/ascription/issue-47666.stderr | 0 .../ui/type/ascription/issue-54516.fixed | 0 .../ui/type/ascription/issue-54516.rs | 0 .../ui/type/ascription/issue-54516.stderr | 0 .../ui/type/ascription/issue-60933.fixed | 0 .../ui/type/ascription/issue-60933.rs | 0 .../ui/type/ascription/issue-60933.stderr | 0 {src/test => tests}/ui/type/auxiliary/crate_a1.rs | 0 {src/test => tests}/ui/type/auxiliary/crate_a2.rs | 0 ...inding-assigned-block-without-tail-expression.rs | 0 ...ng-assigned-block-without-tail-expression.stderr | 0 .../ui/type/closure-with-wrong-borrows.rs | 0 .../ui/type/closure-with-wrong-borrows.stderr | 0 {src/test => tests}/ui/type/issue-100584.rs | 0 {src/test => tests}/ui/type/issue-100584.stderr | 0 {src/test => tests}/ui/type/issue-101866.rs | 0 {src/test => tests}/ui/type/issue-101866.stderr | 0 {src/test => tests}/ui/type/issue-102598.rs | 0 {src/test => tests}/ui/type/issue-102598.stderr | 0 {src/test => tests}/ui/type/issue-103271.rs | 0 {src/test => tests}/ui/type/issue-103271.stderr | 0 {src/test => tests}/ui/type/issue-58355.rs | 0 {src/test => tests}/ui/type/issue-58355.stderr | 0 ...issue-67690-type-alias-bound-diagnostic-crash.rs | 0 ...e-67690-type-alias-bound-diagnostic-crash.stderr | 0 {src/test => tests}/ui/type/issue-91268.rs | 0 {src/test => tests}/ui/type/issue-91268.stderr | 0 .../ui/type/issue-94187-verbose-type-name.rs | 0 .../ui/type/missing-let-in-binding.fixed | 0 .../ui/type/missing-let-in-binding.rs | 0 .../ui/type/missing-let-in-binding.stderr | 0 {src/test => tests}/ui/type/type-alias-bounds.rs | 0 .../test => tests}/ui/type/type-alias-bounds.stderr | 0 .../ui/type/type-annotation-needed.rs | 0 .../ui/type/type-annotation-needed.stderr | 0 .../test => tests}/ui/type/type-arg-out-of-scope.rs | 0 .../ui/type/type-arg-out-of-scope.stderr | 0 .../type/type-ascription-instead-of-initializer.rs | 0 .../type-ascription-instead-of-initializer.stderr | 0 .../type-ascription-instead-of-statement-end.rs | 0 .../type-ascription-instead-of-statement-end.stderr | 0 .../ui/type/type-ascription-precedence.rs | 0 .../ui/type/type-ascription-precedence.stderr | 0 .../ui/type/type-ascription-soundness.rs | 0 .../ui/type/type-ascription-soundness.stderr | 0 .../ui/type/type-ascription-with-fn-call.fixed | 0 .../ui/type/type-ascription-with-fn-call.rs | 0 .../ui/type/type-ascription-with-fn-call.stderr | 0 {src/test => tests}/ui/type/type-ascription.rs | 0 {src/test => tests}/ui/type/type-check-defaults.rs | 0 .../ui/type/type-check-defaults.stderr | 0 .../ui/type/type-check/assignment-expected-bool.rs | 0 .../type/type-check/assignment-expected-bool.stderr | 0 .../ui/type/type-check/assignment-in-if.rs | 0 .../ui/type/type-check/assignment-in-if.stderr | 0 .../type/type-check/cannot_infer_local_or_array.rs | 0 .../type-check/cannot_infer_local_or_array.stderr | 0 .../ui/type/type-check/cannot_infer_local_or_vec.rs | 0 .../type-check/cannot_infer_local_or_vec.stderr | 0 .../cannot_infer_local_or_vec_in_tuples.rs | 0 .../cannot_infer_local_or_vec_in_tuples.stderr | 0 .../ui/type/type-check/issue-22897.rs | 0 .../ui/type/type-check/issue-22897.stderr | 0 .../ui/type/type-check/issue-40294.rs | 0 .../ui/type/type-check/issue-40294.stderr | 0 .../ui/type/type-check/issue-41314.rs | 0 .../ui/type/type-check/issue-41314.stderr | 0 ...assignment-match-prior-arm-bool-expected-unit.rs | 0 ...gnment-match-prior-arm-bool-expected-unit.stderr | 0 ...88577-check-fn-with-more-than-65535-arguments.rs | 0 ...7-check-fn-with-more-than-65535-arguments.stderr | 0 .../ui/type/type-check/missing_trait_impl.rs | 0 .../ui/type/type-check/missing_trait_impl.stderr | 0 .../ui/type/type-check/point-at-inference-2.rs | 0 .../ui/type/type-check/point-at-inference-2.stderr | 0 .../ui/type/type-check/point-at-inference-3.fixed | 0 .../ui/type/type-check/point-at-inference-3.rs | 0 .../ui/type/type-check/point-at-inference-3.stderr | 0 .../ui/type/type-check/point-at-inference.fixed | 0 .../ui/type/type-check/point-at-inference.rs | 0 .../ui/type/type-check/point-at-inference.stderr | 0 .../ui/type/type-check/unknown_type_for_closure.rs | 0 .../type/type-check/unknown_type_for_closure.stderr | 0 .../ui/type/type-dependent-def-issue-49241.rs | 0 .../ui/type/type-dependent-def-issue-49241.stderr | 0 .../test => tests}/ui/type/type-error-break-tail.rs | 0 .../ui/type/type-error-break-tail.stderr | 0 .../ui/type/type-mismatch-multiple.rs | 0 .../ui/type/type-mismatch-multiple.stderr | 0 .../ui/type/type-mismatch-same-crate-name.rs | 0 .../ui/type/type-mismatch-same-crate-name.stderr | 0 {src/test => tests}/ui/type/type-mismatch.rs | 0 {src/test => tests}/ui/type/type-mismatch.stderr | 0 ...ype-parameter-defaults-referencing-Self-ppaux.rs | 0 ...parameter-defaults-referencing-Self-ppaux.stderr | 0 .../type-parameter-defaults-referencing-Self.rs | 0 .../type-parameter-defaults-referencing-Self.stderr | 0 {src/test => tests}/ui/type/type-parameter-names.rs | 0 .../ui/type/type-parameter-names.stderr | 0 .../ui/type/type-params-in-different-spaces-1.rs | 0 .../type/type-params-in-different-spaces-1.stderr | 0 .../ui/type/type-params-in-different-spaces-2.rs | 0 .../type/type-params-in-different-spaces-2.stderr | 0 .../ui/type/type-params-in-different-spaces-3.rs | 0 .../type/type-params-in-different-spaces-3.stderr | 0 .../ui/type/type-path-err-node-types.rs | 0 .../ui/type/type-path-err-node-types.stderr | 0 .../ui/type/type-recursive-box-shadowed.rs | 0 .../ui/type/type-recursive-box-shadowed.stderr | 0 {src/test => tests}/ui/type/type-recursive.rs | 0 {src/test => tests}/ui/type/type-recursive.stderr | 0 {src/test => tests}/ui/type/type-shadow.rs | 0 {src/test => tests}/ui/type/type-shadow.stderr | 0 {src/test => tests}/ui/type/type-unsatisfiable.rs | 0 .../ui/type/type-unsatisfiable.usage.stderr | 0 .../ui/type_length_limit.polonius.stderr | 0 {src/test => tests}/ui/type_length_limit.rs | 0 {src/test => tests}/ui/type_length_limit.stderr | 0 .../ui/typeck/assign-non-lval-derefmut.fixed | 0 .../ui/typeck/assign-non-lval-derefmut.rs | 0 .../ui/typeck/assign-non-lval-derefmut.stderr | 0 .../ui/typeck/assign-non-lval-mut-ref.fixed | 0 .../ui/typeck/assign-non-lval-mut-ref.rs | 0 .../ui/typeck/assign-non-lval-mut-ref.stderr | 0 .../ui/typeck/assign-non-lval-needs-deref.rs | 0 .../ui/typeck/assign-non-lval-needs-deref.stderr | 0 .../ui/typeck/autoderef-with-param-env-error.rs | 0 .../ui/typeck/autoderef-with-param-env-error.stderr | 0 .../ui/typeck/auxiliary/issue-36708.rs | 0 .../ui/typeck/auxiliary/issue-81943-lib.rs | 0 .../ui/typeck/auxiliary/tdticc_coherence_lib.rs | 0 .../ui/typeck/auxiliary/xcrate-issue-43189-a.rs | 0 .../ui/typeck/auxiliary/xcrate-issue-43189-b.rs | 0 .../auxiliary/xcrate-issue-46112-rexport-core.rs | 0 .../ui/typeck/auxiliary/xcrate-issue-61711-b.rs | 0 {src/test => tests}/ui/typeck/call-block.rs | 0 {src/test => tests}/ui/typeck/call-block.stderr | 0 .../ui/typeck/check-args-on-fn-err-2.rs | 0 .../ui/typeck/check-args-on-fn-err-2.stderr | 0 .../ui/typeck/check-args-on-fn-err.rs | 0 .../ui/typeck/check-args-on-fn-err.stderr | 0 {src/test => tests}/ui/typeck/conversion-methods.rs | 0 .../ui/typeck/conversion-methods.stderr | 0 {src/test => tests}/ui/typeck/deref-multi.rs | 0 {src/test => tests}/ui/typeck/deref-multi.stderr | 0 ...-adding-missing-zero-to-floating-point-number.rs | 0 ...ing-missing-zero-to-floating-point-number.stderr | 0 ...gest-placeholder-to-const-static-without-type.rs | 0 ...-placeholder-to-const-static-without-type.stderr | 0 .../ui/typeck/explain_clone_autoref.rs | 0 .../ui/typeck/explain_clone_autoref.stderr | 0 {src/test => tests}/ui/typeck/issue-100164.fixed | 0 {src/test => tests}/ui/typeck/issue-100164.rs | 0 {src/test => tests}/ui/typeck/issue-100164.stderr | 0 {src/test => tests}/ui/typeck/issue-100246.rs | 0 {src/test => tests}/ui/typeck/issue-100246.stderr | 0 {src/test => tests}/ui/typeck/issue-100285.rs | 0 {src/test => tests}/ui/typeck/issue-100285.stderr | 0 {src/test => tests}/ui/typeck/issue-103899.rs | 0 {src/test => tests}/ui/typeck/issue-10401.rs | 0 {src/test => tests}/ui/typeck/issue-10401.stderr | 0 {src/test => tests}/ui/typeck/issue-104510-ice.rs | 0 .../ui/typeck/issue-104510-ice.stderr | 0 {src/test => tests}/ui/typeck/issue-104513-ice.rs | 0 .../ui/typeck/issue-104513-ice.stderr | 0 {src/test => tests}/ui/typeck/issue-104582.rs | 0 {src/test => tests}/ui/typeck/issue-104582.stderr | 0 {src/test => tests}/ui/typeck/issue-105946.rs | 0 {src/test => tests}/ui/typeck/issue-105946.stderr | 0 {src/test => tests}/ui/typeck/issue-10969.rs | 0 {src/test => tests}/ui/typeck/issue-10969.stderr | 0 {src/test => tests}/ui/typeck/issue-13853-2.rs | 0 {src/test => tests}/ui/typeck/issue-13853-2.stderr | 0 {src/test => tests}/ui/typeck/issue-13853-5.rs | 0 {src/test => tests}/ui/typeck/issue-13853-5.stderr | 0 {src/test => tests}/ui/typeck/issue-13853.rs | 0 {src/test => tests}/ui/typeck/issue-13853.stderr | 0 {src/test => tests}/ui/typeck/issue-18937-1.rs | 0 {src/test => tests}/ui/typeck/issue-18937.rs | 0 {src/test => tests}/ui/typeck/issue-18937.stderr | 0 {src/test => tests}/ui/typeck/issue-22375.rs | 0 {src/test => tests}/ui/typeck/issue-29124.rs | 0 {src/test => tests}/ui/typeck/issue-29124.stderr | 0 {src/test => tests}/ui/typeck/issue-31173.rs | 0 {src/test => tests}/ui/typeck/issue-31173.stderr | 0 {src/test => tests}/ui/typeck/issue-33575.rs | 0 {src/test => tests}/ui/typeck/issue-33575.stderr | 0 {src/test => tests}/ui/typeck/issue-36708.rs | 0 {src/test => tests}/ui/typeck/issue-36708.stderr | 0 {src/test => tests}/ui/typeck/issue-43189.rs | 0 {src/test => tests}/ui/typeck/issue-43189.stderr | 0 {src/test => tests}/ui/typeck/issue-46112.rs | 0 {src/test => tests}/ui/typeck/issue-46112.stderr | 0 .../ui/typeck/issue-50687-ice-on-borrow.rs | 0 .../ui/typeck/issue-50687-ice-on-borrow.stderr | 0 .../issue-52082-type-param-shadows-existing-type.rs | 0 ...ue-52082-type-param-shadows-existing-type.stderr | 0 ...ue-55810-must-typeck-match-pats-before-guards.rs | 0 {src/test => tests}/ui/typeck/issue-57404.rs | 0 {src/test => tests}/ui/typeck/issue-57404.stderr | 0 .../issue-57673-ice-on-deref-of-boxed-trait.rs | 0 .../issue-57673-ice-on-deref-of-boxed-trait.stderr | 0 .../issue-61711-once-caused-rustc-inf-loop.rs | 0 {src/test => tests}/ui/typeck/issue-65611.rs | 0 {src/test => tests}/ui/typeck/issue-65611.stderr | 0 {src/test => tests}/ui/typeck/issue-67971.rs | 0 {src/test => tests}/ui/typeck/issue-67971.stderr | 0 .../typeck/issue-68590-reborrow-through-derefmut.rs | 0 ...69378-ice-on-invalid-type-node-after-recovery.rs | 0 ...8-ice-on-invalid-type-node-after-recovery.stderr | 0 .../issue-72225-call-fnmut-through-derefmut.rs | 0 .../issue-73592-borrow_mut-through-deref.fixed | 0 .../typeck/issue-73592-borrow_mut-through-deref.rs | 0 .../issue-73592-borrow_mut-through-deref.stderr | 0 {src/test => tests}/ui/typeck/issue-74086.rs | 0 {src/test => tests}/ui/typeck/issue-74086.stderr | 0 {src/test => tests}/ui/typeck/issue-74933.rs | 0 {src/test => tests}/ui/typeck/issue-75883.rs | 0 {src/test => tests}/ui/typeck/issue-75883.stderr | 0 {src/test => tests}/ui/typeck/issue-75889.rs | 0 {src/test => tests}/ui/typeck/issue-75889.stderr | 0 {src/test => tests}/ui/typeck/issue-79040.rs | 0 {src/test => tests}/ui/typeck/issue-79040.stderr | 0 .../ui/typeck/issue-80207-unsized-return.rs | 0 {src/test => tests}/ui/typeck/issue-80779.rs | 0 {src/test => tests}/ui/typeck/issue-80779.stderr | 0 {src/test => tests}/ui/typeck/issue-81293.rs | 0 {src/test => tests}/ui/typeck/issue-81293.stderr | 0 {src/test => tests}/ui/typeck/issue-81885.rs | 0 {src/test => tests}/ui/typeck/issue-81885.stderr | 0 {src/test => tests}/ui/typeck/issue-81943.rs | 0 {src/test => tests}/ui/typeck/issue-81943.stderr | 0 {src/test => tests}/ui/typeck/issue-82772.rs | 0 {src/test => tests}/ui/typeck/issue-82772.stderr | 0 .../issue-83621-placeholder-static-in-extern.rs | 0 .../issue-83621-placeholder-static-in-extern.stderr | 0 {src/test => tests}/ui/typeck/issue-83693.rs | 0 {src/test => tests}/ui/typeck/issue-83693.stderr | 0 {src/test => tests}/ui/typeck/issue-84160.rs | 0 {src/test => tests}/ui/typeck/issue-84160.stderr | 0 {src/test => tests}/ui/typeck/issue-84768.rs | 0 {src/test => tests}/ui/typeck/issue-84768.stderr | 0 {src/test => tests}/ui/typeck/issue-84831.rs | 0 {src/test => tests}/ui/typeck/issue-84831.stderr | 0 .../typeck/issue-86721-return-expr-ice.rev1.stderr | 0 .../typeck/issue-86721-return-expr-ice.rev2.stderr | 0 .../ui/typeck/issue-86721-return-expr-ice.rs | 0 .../ui/typeck/issue-87181/empty-tuple-method.rs | 0 .../ui/typeck/issue-87181/empty-tuple-method.stderr | 0 .../ui/typeck/issue-87181/enum-variant.rs | 0 .../ui/typeck/issue-87181/enum-variant.stderr | 0 .../ui/typeck/issue-87181/tuple-field.rs | 0 .../ui/typeck/issue-87181/tuple-field.stderr | 0 .../ui/typeck/issue-87181/tuple-method.rs | 0 .../ui/typeck/issue-87181/tuple-method.stderr | 0 .../typeck/issue-87771-ice-assign-assign-to-bool.rs | 0 .../issue-87771-ice-assign-assign-to-bool.stderr | 0 ...ssue-87872-missing-inaccessible-field-literal.rs | 0 ...-87872-missing-inaccessible-field-literal.stderr | 0 ...ssue-87872-missing-inaccessible-field-pattern.rs | 0 ...-87872-missing-inaccessible-field-pattern.stderr | 0 .../ui/typeck/issue-87935-unsized-box-expr.rs | 0 .../ui/typeck/issue-87935-unsized-box-expr.stderr | 0 {src/test => tests}/ui/typeck/issue-88609.rs | 0 {src/test => tests}/ui/typeck/issue-88643.rs | 0 {src/test => tests}/ui/typeck/issue-88643.stderr | 0 .../ui/typeck/issue-88803-call-expr-method.fixed | 0 .../ui/typeck/issue-88803-call-expr-method.rs | 0 .../ui/typeck/issue-88803-call-expr-method.stderr | 0 {src/test => tests}/ui/typeck/issue-88844.rs | 0 {src/test => tests}/ui/typeck/issue-88844.stderr | 0 .../ui/typeck/issue-89044-wrapped-expr-method.fixed | 0 .../ui/typeck/issue-89044-wrapped-expr-method.rs | 0 .../typeck/issue-89044-wrapped-expr-method.stderr | 0 {src/test => tests}/ui/typeck/issue-89275.rs | 0 {src/test => tests}/ui/typeck/issue-89275.stderr | 0 {src/test => tests}/ui/typeck/issue-89806.rs | 0 {src/test => tests}/ui/typeck/issue-89806.stderr | 0 {src/test => tests}/ui/typeck/issue-89856.rs | 0 {src/test => tests}/ui/typeck/issue-89856.stderr | 0 {src/test => tests}/ui/typeck/issue-89935.rs | 0 {src/test => tests}/ui/typeck/issue-90101.rs | 0 {src/test => tests}/ui/typeck/issue-90101.stderr | 0 {src/test => tests}/ui/typeck/issue-90164.rs | 0 {src/test => tests}/ui/typeck/issue-90164.stderr | 0 {src/test => tests}/ui/typeck/issue-90319.rs | 0 {src/test => tests}/ui/typeck/issue-90319.stderr | 0 .../issue-90483-inaccessible-field-adjustment.rs | 0 ...issue-90483-inaccessible-field-adjustment.stderr | 0 .../issue-90804-incorrect-reference-suggestion.rs | 0 ...ssue-90804-incorrect-reference-suggestion.stderr | 0 .../ui/typeck/issue-91210-ptr-method.fixed | 0 .../ui/typeck/issue-91210-ptr-method.rs | 0 .../ui/typeck/issue-91210-ptr-method.stderr | 0 {src/test => tests}/ui/typeck/issue-91267.rs | 0 {src/test => tests}/ui/typeck/issue-91267.stderr | 0 {src/test => tests}/ui/typeck/issue-91328.fixed | 0 {src/test => tests}/ui/typeck/issue-91328.rs | 0 {src/test => tests}/ui/typeck/issue-91328.stderr | 0 {src/test => tests}/ui/typeck/issue-91334.rs | 0 {src/test => tests}/ui/typeck/issue-91334.stderr | 0 .../ui/typeck/issue-91450-inner-ty-error.rs | 0 .../ui/typeck/issue-91450-inner-ty-error.stderr | 0 {src/test => tests}/ui/typeck/issue-91633.rs | 0 {src/test => tests}/ui/typeck/issue-92481.rs | 0 {src/test => tests}/ui/typeck/issue-92481.stderr | 0 {src/test => tests}/ui/typeck/issue-93486.rs | 0 {src/test => tests}/ui/typeck/issue-93486.stderr | 0 {src/test => tests}/ui/typeck/issue-96530.rs | 0 {src/test => tests}/ui/typeck/issue-96530.stderr | 0 {src/test => tests}/ui/typeck/issue-96738.rs | 0 {src/test => tests}/ui/typeck/issue-96738.stderr | 0 {src/test => tests}/ui/typeck/issue-98260.rs | 0 {src/test => tests}/ui/typeck/issue-98260.stderr | 0 {src/test => tests}/ui/typeck/issue-98982.rs | 0 {src/test => tests}/ui/typeck/issue-98982.stderr | 0 .../missing-private-fields-in-struct-literal.rs | 0 .../missing-private-fields-in-struct-literal.stderr | 0 .../ui/typeck/no-type-for-node-ice.rs | 0 .../ui/typeck/no-type-for-node-ice.stderr | 0 .../ui/typeck/nonexistent-field-not-ambiguous.rs | 0 .../typeck/nonexistent-field-not-ambiguous.stderr | 0 .../typeck/path-to-method-sugg-unresolved-expr.rs | 0 .../path-to-method-sugg-unresolved-expr.stderr | 0 .../ui/typeck/point-at-type-param-in-path-expr.rs | 0 .../typeck/point-at-type-param-in-path-expr.stderr | 0 .../ui/typeck/point-at-type-parameter-definition.rs | 0 .../point-at-type-parameter-definition.stderr | 0 {src/test => tests}/ui/typeck/prim-with-args.fixed | 0 {src/test => tests}/ui/typeck/prim-with-args.rs | 0 {src/test => tests}/ui/typeck/prim-with-args.stderr | 0 .../ui/typeck/project-cache-issue-37154.rs | 0 .../ui/typeck/quiet-type-err-let-binding.rs | 0 .../ui/typeck/quiet-type-err-let-binding.stderr | 0 .../ui/typeck/remove-extra-argument.fixed | 0 .../ui/typeck/remove-extra-argument.rs | 0 .../ui/typeck/remove-extra-argument.stderr | 0 .../ui/typeck/return_type_containing_closure.rs | 0 .../ui/typeck/return_type_containing_closure.stderr | 0 .../test => tests}/ui/typeck/slow-lhs-suggestion.rs | 0 .../ui/typeck/slow-lhs-suggestion.stderr | 0 .../ui/typeck/struct-enum-wrong-args.rs | 0 .../ui/typeck/struct-enum-wrong-args.stderr | 0 ...ding-missing-zero-to-floating-point-number.fixed | 0 ...-adding-missing-zero-to-floating-point-number.rs | 0 ...ing-missing-zero-to-floating-point-number.stderr | 0 .../ui/typeck/type-placeholder-fn-in-const.rs | 0 .../ui/typeck/type-placeholder-fn-in-const.stderr | 0 .../typeck/typeck-builtin-bound-type-parameters.rs | 0 .../typeck-builtin-bound-type-parameters.stderr | 0 .../ui/typeck/typeck-cast-pointer-to-float.rs | 0 .../ui/typeck/typeck-cast-pointer-to-float.stderr | 0 .../ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs | 0 .../typeck-default-trait-impl-assoc-type.fixed | 0 .../typeck/typeck-default-trait-impl-assoc-type.rs | 0 .../typeck-default-trait-impl-assoc-type.stderr | 0 ...peck-default-trait-impl-cross-crate-coherence.rs | 0 ...-default-trait-impl-cross-crate-coherence.stderr | 0 .../typeck-default-trait-impl-negation-send.rs | 0 .../typeck-default-trait-impl-negation-send.stderr | 0 .../typeck-default-trait-impl-negation-sync.rs | 0 .../typeck-default-trait-impl-negation-sync.stderr | 0 .../typeck/typeck-default-trait-impl-send-param.rs | 0 .../typeck-default-trait-impl-send-param.stderr | 0 .../ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs | 0 .../ui/typeck/typeck-unsafe-always-share.rs | 0 .../ui/typeck/typeck-unsafe-always-share.stderr | 0 .../ui/typeck/typeck_type_placeholder_1.rs | 0 .../ui/typeck/typeck_type_placeholder_item.rs | 0 .../ui/typeck/typeck_type_placeholder_item.stderr | 0 .../ui/typeck/typeck_type_placeholder_item_help.rs | 0 .../typeck/typeck_type_placeholder_item_help.stderr | 0 .../ui/typeck/typeck_type_placeholder_lifetime_1.rs | 0 .../typeck_type_placeholder_lifetime_1.stderr | 0 .../ui/typeck/typeck_type_placeholder_lifetime_2.rs | 0 .../typeck_type_placeholder_lifetime_2.stderr | 0 .../ui/typeck/typeck_type_placeholder_mismatch.rs | 0 .../typeck/typeck_type_placeholder_mismatch.stderr | 0 {src/test => tests}/ui/typeck/ufcs-type-params.rs | 0 {src/test => tests}/ui/typeck/unify-return-ty.rs | 0 .../ui/typeck/while-loop-block-cond.rs | 0 .../ui/typeck/while-loop-block-cond.stderr | 0 {src/test => tests}/ui/typeid-intrinsic.rs | 0 {src/test => tests}/ui/typeof/issue-100183.rs | 0 {src/test => tests}/ui/typeof/issue-100183.stderr | 0 {src/test => tests}/ui/typeof/issue-29184.rs | 0 {src/test => tests}/ui/typeof/issue-29184.stderr | 0 {src/test => tests}/ui/typeof/issue-42060.rs | 0 {src/test => tests}/ui/typeof/issue-42060.stderr | 0 {src/test => tests}/ui/typeof/type_mismatch.rs | 0 {src/test => tests}/ui/typeof/type_mismatch.stderr | 0 {src/test => tests}/ui/typestate-multi-decl.rs | 0 {src/test => tests}/ui/ufcs-polymorphic-paths.rs | 0 .../ui/ufcs/ufcs-explicit-self-bad.rs | 0 .../ui/ufcs/ufcs-explicit-self-bad.stderr | 0 .../ui/ufcs/ufcs-partially-resolved.rs | 0 .../ui/ufcs/ufcs-partially-resolved.stderr | 0 .../ui/ufcs/ufcs-qpath-missing-params.rs | 0 .../ui/ufcs/ufcs-qpath-missing-params.stderr | 0 .../ui/ufcs/ufcs-qpath-self-mismatch.rs | 0 .../ui/ufcs/ufcs-qpath-self-mismatch.stderr | 0 .../auxiliary/unboxed-closures-cross-crate.rs | 0 .../ui/unboxed-closures/issue-18652.rs | 0 .../ui/unboxed-closures/issue-18661.rs | 0 .../ui/unboxed-closures/issue-30906.rs | 0 .../ui/unboxed-closures/issue-30906.stderr | 0 .../ui/unboxed-closures/issue-53448.rs | 0 .../ui/unboxed-closures/non-tupled-arg-mismatch.rs | 0 .../unboxed-closures/non-tupled-arg-mismatch.stderr | 0 .../ui/unboxed-closures/non-tupled-call.rs | 0 .../ui/unboxed-closures/non-tupled-call.stderr | 0 .../ui/unboxed-closures/type-id-higher-rank.rs | 0 .../unboxed-closure-feature-gate.rs | 0 .../unboxed-closure-feature-gate.stderr | 0 .../unboxed-closure-illegal-move.rs | 0 .../unboxed-closure-illegal-move.stderr | 0 .../unboxed-closure-immutable-capture.rs | 0 .../unboxed-closure-immutable-capture.stderr | 0 .../unboxed-closure-no-cyclic-sig.rs | 0 .../unboxed-closure-no-cyclic-sig.stderr | 0 .../ui/unboxed-closures/unboxed-closure-region.rs | 0 .../unboxed-closures/unboxed-closure-region.stderr | 0 .../unboxed-closure-sugar-default.rs | 0 .../unboxed-closure-sugar-default.stderr | 0 .../unboxed-closures/unboxed-closure-sugar-equiv.rs | 0 .../unboxed-closure-sugar-equiv.stderr | 0 .../unboxed-closure-sugar-lifetime-elision.rs | 0 .../unboxed-closure-sugar-lifetime-elision.stderr | 0 .../unboxed-closure-sugar-not-used-on-fn.rs | 0 .../unboxed-closure-sugar-not-used-on-fn.stderr | 0 .../unboxed-closure-sugar-region.rs | 0 .../unboxed-closure-sugar-region.stderr | 0 .../unboxed-closure-sugar-used-on-struct-1.rs | 0 .../unboxed-closure-sugar-used-on-struct-1.stderr | 0 .../unboxed-closure-sugar-used-on-struct-3.rs | 0 .../unboxed-closure-sugar-used-on-struct-3.stderr | 0 .../unboxed-closure-sugar-used-on-struct.rs | 0 .../unboxed-closure-sugar-used-on-struct.stderr | 0 ...e-sugar-wrong-number-number-type-parameters-1.rs | 0 ...gar-wrong-number-number-type-parameters-1.stderr | 0 ...e-sugar-wrong-number-number-type-parameters-3.rs | 0 ...gar-wrong-number-number-type-parameters-3.stderr | 0 ...ure-sugar-wrong-number-number-type-parameters.rs | 0 ...sugar-wrong-number-number-type-parameters.stderr | 0 .../unboxed-closure-sugar-wrong-trait.rs | 0 .../unboxed-closure-sugar-wrong-trait.stderr | 0 .../unboxed-closures/unboxed-closures-all-traits.rs | 0 .../unboxed-closures-blanket-fn-mut.rs | 0 .../unboxed-closures/unboxed-closures-blanket-fn.rs | 0 .../unboxed-closures-borrow-conflict.rs | 0 .../unboxed-closures-borrow-conflict.stderr | 0 .../ui/unboxed-closures/unboxed-closures-boxed.rs | 0 .../ui/unboxed-closures/unboxed-closures-by-ref.rs | 0 .../unboxed-closures-call-fn-autoderef.rs | 0 .../unboxed-closures-call-sugar-autoderef.rs | 0 .../unboxed-closures-call-sugar-object-autoderef.rs | 0 .../unboxed-closures-call-sugar-object.rs | 0 .../unboxed-closures-counter-not-moved.rs | 0 .../unboxed-closures-counter-not-moved.stderr | 0 .../unboxed-closures-cross-crate.rs | 0 .../unboxed-closures-direct-sugary-call.rs | 0 .../ui/unboxed-closures/unboxed-closures-drop.rs | 0 .../unboxed-closures-extern-fn-hr.rs | 0 .../unboxed-closures/unboxed-closures-extern-fn.rs | 0 .../unboxed-closures-failed-recursive-fn-1.rs | 0 .../unboxed-closures-failed-recursive-fn-1.stderr | 0 .../unboxed-closures-failed-recursive-fn-2.rs | 0 .../unboxed-closures-failed-recursive-fn-2.stderr | 0 .../unboxed-closures-fn-as-fnmut-and-fnonce.rs | 0 .../unboxed-closures-fnmut-as-fn.rs | 0 .../unboxed-closures-fnmut-as-fn.stderr | 0 .../unboxed-closures-fnmut-as-fnonce.rs | 0 .../ui/unboxed-closures/unboxed-closures-generic.rs | 0 ...-closures-infer-arg-types-from-expected-bound.rs | 0 ...res-infer-arg-types-from-expected-object-type.rs | 0 ...er-arg-types-w-bound-regs-from-expected-bound.rs | 0 ...ures-infer-argument-types-two-region-pointers.rs | 0 ...-infer-argument-types-two-region-pointers.stderr | 0 .../unboxed-closures-infer-explicit-call-early.rs | 0 ...d-closures-infer-fn-once-move-from-projection.rs | 0 ...osures-infer-fn-once-move-from-projection.stderr | 0 ...xed-closures-infer-fnmut-calling-fnmut-no-mut.rs | 0 ...closures-infer-fnmut-calling-fnmut-no-mut.stderr | 0 .../unboxed-closures-infer-fnmut-calling-fnmut.rs | 0 .../unboxed-closures-infer-fnmut-missing-mut.rs | 0 .../unboxed-closures-infer-fnmut-missing-mut.stderr | 0 ...unboxed-closures-infer-fnmut-move-missing-mut.rs | 0 ...xed-closures-infer-fnmut-move-missing-mut.stderr | 0 .../unboxed-closures-infer-fnmut-move.rs | 0 .../unboxed-closures-infer-fnmut.rs | 0 .../unboxed-closures-infer-fnonce-call-twice.rs | 0 .../unboxed-closures-infer-fnonce-call-twice.stderr | 0 ...unboxed-closures-infer-fnonce-move-call-twice.rs | 0 ...xed-closures-infer-fnonce-move-call-twice.stderr | 0 .../unboxed-closures-infer-fnonce-move.rs | 0 .../unboxed-closures-infer-fnonce.rs | 0 .../unboxed-closures/unboxed-closures-infer-kind.rs | 0 .../unboxed-closures-infer-recursive-fn.rs | 0 .../unboxed-closures-infer-upvar.rs | 0 .../unboxed-closures-manual-impl.rs | 0 .../unboxed-closures-monomorphization.rs | 0 ...xed-closures-move-from-projection-issue-30046.rs | 0 .../unboxed-closures-move-mutable.rs | 0 .../unboxed-closures-move-mutable.stderr | 0 ...d-closures-move-some-upvars-in-by-ref-closure.rs | 0 .../unboxed-closures-mutate-upvar.rs | 0 .../unboxed-closures-mutate-upvar.stderr | 0 ...nboxed-closures-mutated-upvar-from-fn-closure.rs | 0 ...ed-closures-mutated-upvar-from-fn-closure.stderr | 0 .../ui/unboxed-closures/unboxed-closures-prelude.rs | 0 .../unboxed-closures-recursive-fn-using-fn-mut.rs | 0 ...nboxed-closures-recursive-fn-using-fn-mut.stderr | 0 .../ui/unboxed-closures/unboxed-closures-simple.rs | 0 .../unboxed-closures-single-word-env.rs | 0 .../unboxed-closures-static-call-fn-once.rs | 0 .../unboxed-closures-static-call-wrong-trait.rs | 0 .../unboxed-closures-static-call-wrong-trait.stderr | 0 .../unboxed-closures-sugar-object.rs | 0 .../unboxed-closures-type-mismatch.rs | 0 .../unboxed-closures-type-mismatch.stderr | 0 .../unboxed-closures-unique-type-id.rs | 0 .../unboxed-closures-unsafe-extern-fn.rs | 0 .../unboxed-closures-unsafe-extern-fn.stderr | 0 .../unboxed-closures/unboxed-closures-wrong-abi.rs | 0 .../unboxed-closures-wrong-abi.stderr | 0 .../unboxed-closures-wrong-arg-type-extern-fn.rs | 0 ...unboxed-closures-wrong-arg-type-extern-fn.stderr | 0 .../unboxed-closures/unboxed-closures-zero-args.rs | 0 {src/test => tests}/ui/unconstrained-none.rs | 0 {src/test => tests}/ui/unconstrained-none.stderr | 0 {src/test => tests}/ui/unconstrained-ref.rs | 0 {src/test => tests}/ui/unconstrained-ref.stderr | 0 {src/test => tests}/ui/underscore-ident-matcher.rs | 0 .../ui/underscore-ident-matcher.stderr | 0 .../ui/underscore-imports/auxiliary/duplicate.rs | 0 .../auxiliary/underscore-imports.rs | 0 {src/test => tests}/ui/underscore-imports/basic.rs | 0 .../ui/underscore-imports/basic.stderr | 0 {src/test => tests}/ui/underscore-imports/cycle.rs | 0 .../ui/underscore-imports/duplicate.rs | 0 .../ui/underscore-imports/hygiene-2.rs | 0 .../test => tests}/ui/underscore-imports/hygiene.rs | 0 .../ui/underscore-imports/intercrate.rs | 0 .../ui/underscore-imports/macro-expanded.rs | 0 {src/test => tests}/ui/underscore-imports/shadow.rs | 0 .../ui/underscore-imports/shadow.stderr | 0 .../ui/underscore-imports/unused-2018.rs | 0 .../ui/underscore-imports/unused-2018.stderr | 0 .../dyn-trait-underscore-in-struct.rs | 0 .../dyn-trait-underscore-in-struct.stderr | 0 .../ui/underscore-lifetime/dyn-trait-underscore.rs | 0 .../underscore-lifetime/dyn-trait-underscore.stderr | 0 .../ui/underscore-lifetime/in-binder.rs | 0 .../ui/underscore-lifetime/in-binder.stderr | 0 .../ui/underscore-lifetime/in-fn-return-illegal.rs | 0 .../underscore-lifetime/in-fn-return-illegal.stderr | 0 .../ui/underscore-lifetime/in-struct.rs | 0 .../ui/underscore-lifetime/in-struct.stderr | 0 .../underscore-lifetime-binders.rs | 0 .../underscore-lifetime-binders.stderr | 0 .../underscore-lifetime-elison-mismatch.rs | 0 .../underscore-lifetime-elison-mismatch.stderr | 0 .../underscore-outlives-bounds.rs | 0 .../underscore-outlives-bounds.stderr | 0 .../where-clause-inherent-impl-ampersand.rs | 0 ...e-clause-inherent-impl-ampersand.rust2015.stderr | 0 ...e-clause-inherent-impl-ampersand.rust2018.stderr | 0 .../where-clause-inherent-impl-underscore.rs | 0 ...-clause-inherent-impl-underscore.rust2015.stderr | 0 ...-clause-inherent-impl-underscore.rust2018.stderr | 0 .../where-clause-trait-impl-region.rs | 0 .../where-clause-trait-impl-region.rust2015.stderr | 0 .../where-clause-trait-impl-region.rust2018.stderr | 0 .../where-clause-trait-impl-underscore.rs | 0 ...ere-clause-trait-impl-underscore.rust2015.stderr | 0 ...ere-clause-trait-impl-underscore.rust2018.stderr | 0 .../ui/underscore-lifetime/where-clauses.rs | 0 .../ui/underscore-lifetime/where-clauses.stderr | 0 {src/test => tests}/ui/underscore-lifetimes.rs | 0 .../ui/underscore-method-after-integer.rs | 0 .../ui/unevaluated_fixed_size_array_len.rs | 0 .../ui/unevaluated_fixed_size_array_len.stderr | 0 .../ui/uniform-paths/auxiliary/issue-53691.rs | 0 .../test => tests}/ui/uniform-paths/basic-nested.rs | 0 {src/test => tests}/ui/uniform-paths/basic.rs | 0 {src/test => tests}/ui/uniform-paths/issue-53691.rs | 0 .../ui/uniform-paths/macros-nested.rs | 0 {src/test => tests}/ui/uniform-paths/macros.rs | 0 {src/test => tests}/ui/uniform-paths/same-crate.rs | 0 .../exhaustive-wo-nevertype-issue-51221.rs | 0 .../uninhabited/privately-uninhabited-dead-code.rs | 0 .../uninhabited/privately-uninhabited-mir-call.rs | 0 .../privately-uninhabited-mir-call.stderr | 0 .../ui/uninhabited/uninhabited-enum-cast.rs | 0 .../ui/uninhabited/uninhabited-irrefutable.rs | 0 .../ui/uninhabited/uninhabited-irrefutable.stderr | 0 .../uninhabited-matches-feature-gated.rs | 0 .../uninhabited-matches-feature-gated.stderr | 0 .../ui/uninhabited/uninhabited-patterns.rs | 0 .../ui/uninhabited/uninhabited-patterns.stderr | 0 {src/test => tests}/ui/uninit-empty-types.rs | 0 {src/test => tests}/ui/union/auxiliary/union.rs | 0 {src/test => tests}/ui/union/field_checks.rs | 0 {src/test => tests}/ui/union/field_checks.stderr | 0 {src/test => tests}/ui/union/issue-41073.rs | 0 {src/test => tests}/ui/union/issue-41073.stderr | 0 {src/test => tests}/ui/union/issue-81199.rs | 0 {src/test => tests}/ui/union/issue-81199.stderr | 0 {src/test => tests}/ui/union/issue-99375.rs | 0 {src/test => tests}/ui/union/union-align.rs | 0 {src/test => tests}/ui/union/union-backcomp.rs | 0 {src/test => tests}/ui/union/union-basic.rs | 0 ...on-borrow-move-parent-sibling.mirunsafeck.stderr | 0 .../ui/union/union-borrow-move-parent-sibling.rs | 0 ...n-borrow-move-parent-sibling.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-const-codegen.rs | 0 .../ui/union/union-const-eval-field.rs | 0 {src/test => tests}/ui/union/union-const-eval.rs | 0 {src/test => tests}/ui/union/union-const-pat.rs | 0 {src/test => tests}/ui/union/union-const-pat.stderr | 0 {src/test => tests}/ui/union/union-copy.rs | 0 {src/test => tests}/ui/union/union-copy.stderr | 0 .../ui/union/union-deref.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-deref.rs | 0 .../ui/union/union-deref.thirunsafeck.stderr | 0 .../ui/union/union-derive-clone.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-derive-clone.rs | 0 .../ui/union/union-derive-clone.thirunsafeck.stderr | 0 .../ui/union/union-derive-eq.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-derive-eq.rs | 0 .../ui/union/union-derive-eq.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-derive-rpass.rs | 0 {src/test => tests}/ui/union/union-derive.rs | 0 {src/test => tests}/ui/union/union-derive.stderr | 0 {src/test => tests}/ui/union/union-drop-assign.rs | 0 {src/test => tests}/ui/union/union-drop.rs | 0 {src/test => tests}/ui/union/union-empty.rs | 0 {src/test => tests}/ui/union/union-empty.stderr | 0 .../ui/union/union-fields-1.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-fields-1.rs | 0 .../ui/union/union-fields-1.thirunsafeck.stderr | 0 .../ui/union/union-fields-2.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-fields-2.rs | 0 .../ui/union/union-fields-2.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-generic-rpass.rs | 0 .../ui/union/union-generic.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-generic.rs | 0 .../ui/union/union-generic.thirunsafeck.stderr | 0 .../ui/union/union-inherent-method.rs | 0 .../union/union-lint-dead-code.mirunsafeck.stderr | 0 .../test => tests}/ui/union/union-lint-dead-code.rs | 0 .../union/union-lint-dead-code.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-macro.rs | 0 .../ui/union/union-manuallydrop-rpass.rs | 0 .../ui/union/union-move.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-move.rs | 0 .../ui/union/union-move.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-nodrop.rs | 0 .../ui/union/union-nonrepresentable.rs | 0 .../ui/union/union-nonrepresentable.stderr | 0 {src/test => tests}/ui/union/union-nonzero.rs | 0 {src/test => tests}/ui/union/union-overwrite.rs | 0 {src/test => tests}/ui/union/union-packed.rs | 0 .../ui/union/union-pat-refutability.rs | 0 {src/test => tests}/ui/union/union-repr-c.rs | 0 {src/test => tests}/ui/union/union-repr-c.stderr | 0 {src/test => tests}/ui/union/union-sized-field.rs | 0 .../ui/union/union-sized-field.stderr | 0 .../ui/union/union-suggest-field.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-suggest-field.rs | 0 .../union/union-suggest-field.thirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-trait-impl.rs | 0 {src/test => tests}/ui/union/union-transmute.rs | 0 .../test => tests}/ui/union/union-unsafe.mir.stderr | 0 {src/test => tests}/ui/union/union-unsafe.rs | 0 .../ui/union/union-unsafe.thir.stderr | 0 .../ui/union/union-unsized.mirunsafeck.stderr | 0 {src/test => tests}/ui/union/union-unsized.rs | 0 .../ui/union/union-unsized.thirunsafeck.stderr | 0 .../union/union-with-drop-fields.mirunsafeck.stderr | 0 .../ui/union/union-with-drop-fields.rs | 0 .../union-with-drop-fields.thirunsafeck.stderr | 0 {src/test => tests}/ui/unique-object-noncopyable.rs | 0 .../ui/unique-object-noncopyable.stderr | 0 {src/test => tests}/ui/unique-pinned-nocopy.rs | 0 {src/test => tests}/ui/unique-pinned-nocopy.stderr | 0 {src/test => tests}/ui/unique/unique-assign-copy.rs | 0 {src/test => tests}/ui/unique/unique-assign-drop.rs | 0 .../ui/unique/unique-assign-generic.rs | 0 {src/test => tests}/ui/unique/unique-assign.rs | 0 .../ui/unique/unique-autoderef-field.rs | 0 .../ui/unique/unique-autoderef-index.rs | 0 {src/test => tests}/ui/unique/unique-cmp.rs | 0 .../ui/unique/unique-containing-tag.rs | 0 {src/test => tests}/ui/unique/unique-create.rs | 0 .../ui/unique/unique-decl-init-copy.rs | 0 {src/test => tests}/ui/unique/unique-decl-init.rs | 0 {src/test => tests}/ui/unique/unique-decl-move.rs | 0 {src/test => tests}/ui/unique/unique-decl.rs | 0 {src/test => tests}/ui/unique/unique-deref.rs | 0 {src/test => tests}/ui/unique/unique-destructure.rs | 0 .../test => tests}/ui/unique/unique-drop-complex.rs | 0 {src/test => tests}/ui/unique/unique-ffi-symbols.rs | 0 {src/test => tests}/ui/unique/unique-fn-arg-move.rs | 0 {src/test => tests}/ui/unique/unique-fn-arg-mut.rs | 0 {src/test => tests}/ui/unique/unique-fn-arg.rs | 0 {src/test => tests}/ui/unique/unique-fn-ret.rs | 0 .../ui/unique/unique-generic-assign.rs | 0 {src/test => tests}/ui/unique/unique-in-tag.rs | 0 {src/test => tests}/ui/unique/unique-in-vec-copy.rs | 0 {src/test => tests}/ui/unique/unique-in-vec.rs | 0 {src/test => tests}/ui/unique/unique-init.rs | 0 {src/test => tests}/ui/unique/unique-kinds.rs | 0 {src/test => tests}/ui/unique/unique-log.rs | 0 .../ui/unique/unique-match-discrim.rs | 0 {src/test => tests}/ui/unique/unique-move-drop.rs | 0 {src/test => tests}/ui/unique/unique-move-temp.rs | 0 {src/test => tests}/ui/unique/unique-move.rs | 0 {src/test => tests}/ui/unique/unique-mutable.rs | 0 {src/test => tests}/ui/unique/unique-object-move.rs | 0 {src/test => tests}/ui/unique/unique-pat-2.rs | 0 {src/test => tests}/ui/unique/unique-pat-3.rs | 0 {src/test => tests}/ui/unique/unique-pat.rs | 0 {src/test => tests}/ui/unique/unique-rec.rs | 0 {src/test => tests}/ui/unique/unique-send-2.rs | 0 {src/test => tests}/ui/unique/unique-send.rs | 0 {src/test => tests}/ui/unique/unique-swap.rs | 0 {src/test => tests}/ui/unit.rs | 0 {src/test => tests}/ui/unknown-language-item.rs | 0 {src/test => tests}/ui/unknown-language-item.stderr | 0 {src/test => tests}/ui/unknown-lint-tool-name.rs | 0 .../test => tests}/ui/unknown-lint-tool-name.stderr | 0 {src/test => tests}/ui/unknown-llvm-arg.rs | 0 {src/test => tests}/ui/unknown-llvm-arg.stderr | 0 {src/test => tests}/ui/unknown-tool-name.rs | 0 {src/test => tests}/ui/unknown-tool-name.stderr | 0 .../allow-unknown-unstable-lint-command-line.rs | 0 .../allow-unknown-unstable-lint-inline.rs | 0 .../deny-unstable-lint-command-line.rs | 0 .../deny-unstable-lint-command-line.stderr | 0 .../deny-unstable-lint-inline.rs | 0 .../deny-unstable-lint-inline.stderr | 0 .../warn-unknown-unstable-lint-command-line.rs | 0 .../warn-unknown-unstable-lint-command-line.stderr | 0 .../warn-unknown-unstable-lint-inline.rs | 0 .../warn-unknown-unstable-lint-inline.stderr | 0 {src/test => tests}/ui/unnamed_argument_mode.rs | 0 {src/test => tests}/ui/unop-move-semantics.rs | 0 {src/test => tests}/ui/unop-move-semantics.stderr | 0 {src/test => tests}/ui/unop-neg-bool.rs | 0 {src/test => tests}/ui/unop-neg-bool.stderr | 0 {src/test => tests}/ui/unpretty-expr-fn-arg.rs | 0 {src/test => tests}/ui/unpretty-expr-fn-arg.stdout | 0 {src/test => tests}/ui/unpretty/avoid-crash.rs | 0 {src/test => tests}/ui/unpretty/avoid-crash.stderr | 0 {src/test => tests}/ui/unpretty/bad-literal.rs | 0 {src/test => tests}/ui/unpretty/bad-literal.stderr | 0 {src/test => tests}/ui/unpretty/bad-literal.stdout | 0 {src/test => tests}/ui/unpretty/pretty-let-else.rs | 0 .../ui/unpretty/pretty-let-else.stdout | 0 {src/test => tests}/ui/unreachable-code-1.rs | 0 {src/test => tests}/ui/unreachable-code.rs | 0 .../ui/unresolved/unresolved-asterisk-imports.rs | 0 .../unresolved/unresolved-asterisk-imports.stderr | 0 .../ui/unresolved/unresolved-candidates.rs | 0 .../ui/unresolved/unresolved-candidates.stderr | 0 .../unresolved/unresolved-extern-mod-suggestion.rs | 0 .../unresolved-extern-mod-suggestion.stderr | 0 .../ui/unresolved/unresolved-import-recovery.rs | 0 .../ui/unresolved/unresolved-import-recovery.stderr | 0 .../ui/unresolved/unresolved-import.rs | 0 .../ui/unresolved/unresolved-import.stderr | 0 .../ui/unsafe-fn-called-from-unsafe-blk.rs | 0 .../ui/unsafe-fn-called-from-unsafe-fn.rs | 0 .../ui/unsafe-pointer-assignability.rs | 0 .../ui/unsafe/access_union_field.mir.stderr | 0 {src/test => tests}/ui/unsafe/access_union_field.rs | 0 .../ui/unsafe/access_union_field.thir.stderr | 0 .../ui/unsafe/auxiliary/issue-106126.rs | 0 {src/test => tests}/ui/unsafe/inline_asm.mir.stderr | 0 {src/test => tests}/ui/unsafe/inline_asm.rs | 0 .../test => tests}/ui/unsafe/inline_asm.thir.stderr | 0 .../ui/unsafe/issue-106126-good-path-bug.rs | 0 {src/test => tests}/ui/unsafe/issue-3080.mir.stderr | 0 {src/test => tests}/ui/unsafe/issue-3080.rs | 0 .../test => tests}/ui/unsafe/issue-3080.thir.stderr | 0 .../issue-45087-unreachable-unsafe.mir.stderr | 0 .../ui/unsafe/issue-45087-unreachable-unsafe.rs | 0 .../issue-45087-unreachable-unsafe.thir.stderr | 0 ...e-45107-unnecessary-unsafe-in-closure.mir.stderr | 0 .../issue-45107-unnecessary-unsafe-in-closure.rs | 0 ...-45107-unnecessary-unsafe-in-closure.thir.stderr | 0 .../test => tests}/ui/unsafe/issue-47412.mir.stderr | 0 {src/test => tests}/ui/unsafe/issue-47412.rs | 0 .../ui/unsafe/issue-47412.thir.stderr | 0 ...5-unsafe-op-in-let-under-unsafe-under-closure.rs | 0 .../ui/unsafe/issue-87414-query-cycle.rs | 0 .../test => tests}/ui/unsafe/ranged_ints.mir.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints.rs | 0 .../ui/unsafe/ranged_ints.thir.stderr | 0 .../ui/unsafe/ranged_ints2.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints2.rs | 0 .../ui/unsafe/ranged_ints2.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints2_const.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints2_const.rs | 0 .../unsafe/ranged_ints2_const.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints3.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints3.rs | 0 .../ui/unsafe/ranged_ints3.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints3_const.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints3_const.rs | 0 .../unsafe/ranged_ints3_const.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints3_match.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints3_match.rs | 0 .../unsafe/ranged_ints3_match.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints4.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints4.rs | 0 .../ui/unsafe/ranged_ints4.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints4_const.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints4_const.rs | 0 .../unsafe/ranged_ints4_const.thirunsafeck.stderr | 0 .../ui/unsafe/ranged_ints_const.mir.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints_const.rs | 0 .../ui/unsafe/ranged_ints_const.thir.stderr | 0 {src/test => tests}/ui/unsafe/ranged_ints_macro.rs | 0 .../rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr | 0 .../ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs | 0 .../rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr | 0 .../ui/unsafe/union-assignop.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/union-assignop.rs | 0 .../ui/unsafe/union-assignop.thirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/union-modification.rs | 0 {src/test => tests}/ui/unsafe/union.mir.stderr | 0 {src/test => tests}/ui/unsafe/union.rs | 0 {src/test => tests}/ui/unsafe/union.thir.stderr | 0 .../ui/unsafe/union_access_through_block.rs | 0 .../ui/unsafe/union_destructure.mir.stderr | 0 {src/test => tests}/ui/unsafe/union_destructure.rs | 0 {src/test => tests}/ui/unsafe/union_wild_or_wild.rs | 0 ...safe-around-compiler-generated-unsafe.mir.stderr | 0 .../unsafe-around-compiler-generated-unsafe.rs | 0 ...afe-around-compiler-generated-unsafe.thir.stderr | 0 .../ui/unsafe/unsafe-assign.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/unsafe-assign.rs | 0 .../ui/unsafe/unsafe-assign.thirunsafeck.stderr | 0 .../ui/unsafe/unsafe-block-without-braces.rs | 0 .../ui/unsafe/unsafe-block-without-braces.stderr | 0 .../ui/unsafe/unsafe-borrow.mirunsafeck.stderr | 0 {src/test => tests}/ui/unsafe/unsafe-borrow.rs | 0 .../ui/unsafe/unsafe-borrow.thirunsafeck.stderr | 0 .../ui/unsafe/unsafe-const-fn.mir.stderr | 0 {src/test => tests}/ui/unsafe/unsafe-const-fn.rs | 0 .../ui/unsafe/unsafe-const-fn.thir.stderr | 0 .../ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr | 0 .../ui/unsafe/unsafe-fn-assign-deref-ptr.rs | 0 .../unsafe/unsafe-fn-assign-deref-ptr.thir.stderr | 0 .../test => tests}/ui/unsafe/unsafe-fn-autoderef.rs | 0 .../ui/unsafe/unsafe-fn-autoderef.stderr | 0 .../ui/unsafe/unsafe-fn-called-from-safe.mir.stderr | 0 .../ui/unsafe/unsafe-fn-called-from-safe.rs | 0 .../unsafe/unsafe-fn-called-from-safe.thir.stderr | 0 .../ui/unsafe/unsafe-fn-deref-ptr.mir.stderr | 0 .../test => tests}/ui/unsafe/unsafe-fn-deref-ptr.rs | 0 .../ui/unsafe/unsafe-fn-deref-ptr.thir.stderr | 0 .../ui/unsafe/unsafe-fn-used-as-value.mir.stderr | 0 .../ui/unsafe/unsafe-fn-used-as-value.rs | 0 .../ui/unsafe/unsafe-fn-used-as-value.thir.stderr | 0 .../ui/unsafe/unsafe-not-inherited.rs | 0 .../ui/unsafe/unsafe-not-inherited.stderr | 0 {src/test => tests}/ui/unsafe/unsafe-subtyping.rs | 0 .../ui/unsafe/unsafe-subtyping.stderr | 0 {src/test => tests}/ui/unsafe/unsafe-trait-impl.rs | 0 .../ui/unsafe/unsafe-trait-impl.stderr | 0 .../ui/unsafe/unsafe-unstable-const-fn.mir.stderr | 0 .../ui/unsafe/unsafe-unstable-const-fn.rs | 0 .../ui/unsafe/unsafe-unstable-const-fn.thir.stderr | 0 {src/test => tests}/ui/unsigned-literal-negation.rs | 0 .../ui/unsigned-literal-negation.stderr | 0 {src/test => tests}/ui/unsized-locals/autoderef.rs | 0 .../ui/unsized-locals/auxiliary/ufuncs.rs | 0 .../ui/unsized-locals/borrow-after-move.rs | 0 .../ui/unsized-locals/borrow-after-move.stderr | 0 {src/test => tests}/ui/unsized-locals/box-fnonce.rs | 0 .../by-value-trait-object-safety-rpass.rs | 0 .../by-value-trait-object-safety-withdefault.rs | 0 .../unsized-locals/by-value-trait-object-safety.rs | 0 .../by-value-trait-object-safety.stderr | 0 .../test => tests}/ui/unsized-locals/double-move.rs | 0 .../ui/unsized-locals/double-move.stderr | 0 .../unsized-locals/issue-30276-feature-flagged.rs | 0 .../issue-30276-feature-flagged.stderr | 0 .../test => tests}/ui/unsized-locals/issue-30276.rs | 0 .../ui/unsized-locals/issue-30276.stderr | 0 .../ui/unsized-locals/issue-50940-with-feature.rs | 0 .../unsized-locals/issue-50940-with-feature.stderr | 0 .../test => tests}/ui/unsized-locals/issue-50940.rs | 0 .../ui/unsized-locals/issue-50940.stderr | 0 .../ui/unsized-locals/reference-unsized-locals.rs | 0 .../ui/unsized-locals/simple-unsized-locals.rs | 0 .../ui/unsized-locals/suggest-borrow.rs | 0 .../ui/unsized-locals/suggest-borrow.stderr | 0 .../ui/unsized-locals/unsized-exprs-rpass.rs | 0 .../ui/unsized-locals/unsized-exprs.rs | 0 .../ui/unsized-locals/unsized-exprs.stderr | 0 .../ui/unsized-locals/unsized-exprs2.rs | 0 .../ui/unsized-locals/unsized-exprs2.stderr | 0 .../ui/unsized-locals/unsized-exprs3.rs | 0 .../ui/unsized-locals/unsized-exprs3.stderr | 0 .../ui/unsized-locals/unsized-index.rs | 0 .../unsized-locals-using-unsized-fn-params.rs | 0 .../unsized-locals-using-unsized-fn-params.stderr | 0 .../ui/unsized-locals/unsized-parameters.rs | 0 .../ui/unsized/box-instead-of-dyn-fn.rs | 0 .../ui/unsized/box-instead-of-dyn-fn.stderr | 0 {src/test => tests}/ui/unsized/issue-30355.rs | 0 {src/test => tests}/ui/unsized/issue-30355.stderr | 0 {src/test => tests}/ui/unsized/issue-40231-1.rs | 0 {src/test => tests}/ui/unsized/issue-40231-2.rs | 0 {src/test => tests}/ui/unsized/issue-71659.rs | 0 {src/test => tests}/ui/unsized/issue-71659.stderr | 0 {src/test => tests}/ui/unsized/issue-75707.rs | 0 {src/test => tests}/ui/unsized/issue-75707.stderr | 0 .../ui/unsized/issue-75899-but-gats.rs | 0 {src/test => tests}/ui/unsized/issue-75899.rs | 0 {src/test => tests}/ui/unsized/issue-91801.rs | 0 {src/test => tests}/ui/unsized/issue-91801.stderr | 0 {src/test => tests}/ui/unsized/issue-91803.rs | 0 {src/test => tests}/ui/unsized/issue-91803.stderr | 0 {src/test => tests}/ui/unsized/issue-97732.rs | 0 .../ui/unsized/maybe-bounds-where-cpass.rs | 0 .../test => tests}/ui/unsized/maybe-bounds-where.rs | 0 .../ui/unsized/maybe-bounds-where.stderr | 0 .../unsized/param-mentioned-by-different-field.rs | 0 .../param-mentioned-by-different-field.stderr | 0 .../ui/unsized/return-unsized-from-trait-method.rs | 0 .../unsized/return-unsized-from-trait-method.stderr | 0 {src/test => tests}/ui/unsized/unchanged-param.rs | 0 .../ui/unsized/unsized-bare-typaram.rs | 0 .../ui/unsized/unsized-bare-typaram.stderr | 0 {src/test => tests}/ui/unsized/unsized-enum.rs | 0 {src/test => tests}/ui/unsized/unsized-enum.stderr | 0 {src/test => tests}/ui/unsized/unsized-enum2.rs | 0 {src/test => tests}/ui/unsized/unsized-enum2.stderr | 0 {src/test => tests}/ui/unsized/unsized-fn-arg.fixed | 0 {src/test => tests}/ui/unsized/unsized-fn-arg.rs | 0 .../test => tests}/ui/unsized/unsized-fn-arg.stderr | 0 {src/test => tests}/ui/unsized/unsized-fn-param.rs | 0 .../ui/unsized/unsized-fn-param.stderr | 0 .../ui/unsized/unsized-inherent-impl-self-type.rs | 0 .../unsized/unsized-inherent-impl-self-type.stderr | 0 {src/test => tests}/ui/unsized/unsized-struct.rs | 0 .../test => tests}/ui/unsized/unsized-struct.stderr | 0 .../ui/unsized/unsized-trait-impl-self-type.rs | 0 .../ui/unsized/unsized-trait-impl-self-type.stderr | 0 .../ui/unsized/unsized-trait-impl-trait-arg.rs | 0 .../ui/unsized/unsized-trait-impl-trait-arg.stderr | 0 .../ui/unsized/unsized-tuple-impls.rs | 0 {src/test => tests}/ui/unsized/unsized.rs | 0 {src/test => tests}/ui/unsized/unsized2.rs | 0 {src/test => tests}/ui/unsized/unsized3-rpass.rs | 0 {src/test => tests}/ui/unsized/unsized3.rs | 0 {src/test => tests}/ui/unsized/unsized3.stderr | 0 {src/test => tests}/ui/unsized/unsized5.rs | 0 {src/test => tests}/ui/unsized/unsized5.stderr | 0 {src/test => tests}/ui/unsized/unsized6.rs | 0 {src/test => tests}/ui/unsized/unsized6.stderr | 0 {src/test => tests}/ui/unsized/unsized7.rs | 0 {src/test => tests}/ui/unsized/unsized7.stderr | 0 {src/test => tests}/ui/unterminated-comment.rs | 0 {src/test => tests}/ui/unterminated-comment.stderr | 0 .../ui/unterminated-nested-comment.rs | 0 .../ui/unterminated-nested-comment.stderr | 0 .../ui/unused-crate-deps/auxiliary/bar.rs | 0 .../ui/unused-crate-deps/auxiliary/foo.rs | 0 .../ui/unused-crate-deps/deny-attr.rs | 0 .../ui/unused-crate-deps/deny-attr.stderr | 0 .../unused-crate-deps/deny-cmdline-json-silent.rs | 0 .../deny-cmdline-json-silent.stderr | 0 .../ui/unused-crate-deps/deny-cmdline-json.rs | 0 .../ui/unused-crate-deps/deny-cmdline-json.stderr | 0 .../ui/unused-crate-deps/deny-cmdline.rs | 0 .../ui/unused-crate-deps/deny-cmdline.stderr | 0 .../ui/unused-crate-deps/ignore-pathless-extern.rs | 0 {src/test => tests}/ui/unused-crate-deps/libfib.rs | 0 .../ui/unused-crate-deps/libfib.stderr | 0 .../ui/unused-crate-deps/lint-group.rs | 0 .../test => tests}/ui/unused-crate-deps/suppress.rs | 0 .../ui/unused-crate-deps/test-use-ok.rs | 0 {src/test => tests}/ui/unused-crate-deps/test.mk | 0 .../ui/unused-crate-deps/unused-aliases.rs | 0 .../ui/unused-crate-deps/unused-aliases.stderr | 0 .../ui/unused-crate-deps/use_extern_crate_2015.rs | 0 .../ui/unused-crate-deps/warn-attr.rs | 0 .../ui/unused-crate-deps/warn-attr.stderr | 0 .../ui/unused-crate-deps/warn-cmdline-json.rs | 0 .../ui/unused-crate-deps/warn-cmdline-json.stderr | 0 .../ui/unused-crate-deps/warn-cmdline-static.rs | 0 .../ui/unused-crate-deps/warn-cmdline-static.stderr | 0 .../ui/unused-crate-deps/warn-cmdline.rs | 0 .../ui/unused-crate-deps/warn-cmdline.stderr | 0 {src/test => tests}/ui/unused-move-capture.rs | 0 {src/test => tests}/ui/unused-move.rs | 0 .../ui/unwind-abis/feature-gate-c-unwind-enabled.rs | 0 .../ui/unwind-abis/feature-gate-c-unwind.rs | 0 .../ui/unwind-abis/feature-gate-c-unwind.stderr | 0 .../ui/unwind-abis/feature-gate-stdcall-unwind.rs | 0 .../unwind-abis/feature-gate-stdcall-unwind.stderr | 0 .../ui/unwind-abis/feature-gate-system-unwind.rs | 0 .../unwind-abis/feature-gate-system-unwind.stderr | 0 .../ui/unwind-abis/feature-gate-thiscall-unwind.rs | 0 .../unwind-abis/feature-gate-thiscall-unwind.stderr | 0 .../ui/unwind-abis/ffi-unwind-calls-lint.rs | 0 .../ui/unwind-abis/ffi-unwind-calls-lint.stderr | 0 {src/test => tests}/ui/unwind-no-uwtable.rs | 0 {src/test => tests}/ui/unwind-unique.rs | 0 {src/test => tests}/ui/use-import-export.rs | 0 {src/test => tests}/ui/use-keyword-2.rs | 0 .../ui/use-module-level-int-consts.rs | 0 {src/test => tests}/ui/use-nested-groups.rs | 0 {src/test => tests}/ui/use.rs | 0 .../use/auxiliary/extern-use-primitive-type-lib.rs | 0 .../ui/use/auxiliary/use-from-trait-xc.rs | 0 {src/test => tests}/ui/use/issue-18986.rs | 0 {src/test => tests}/ui/use/issue-18986.stderr | 0 .../ui/use/issue-60976-extern-use-primitive-type.rs | 0 .../ui/use/use-after-move-based-on-type.rs | 0 .../ui/use/use-after-move-based-on-type.stderr | 0 .../use/use-after-move-implicity-coerced-object.rs | 0 .../use-after-move-implicity-coerced-object.stderr | 0 .../ui/use/use-after-move-self-based-on-type.rs | 0 .../ui/use/use-after-move-self-based-on-type.stderr | 0 {src/test => tests}/ui/use/use-after-move-self.rs | 0 .../ui/use/use-after-move-self.stderr | 0 {src/test => tests}/ui/use/use-associated-const.rs | 0 .../ui/use/use-associated-const.stderr | 0 {src/test => tests}/ui/use/use-crate-self.rs | 0 {src/test => tests}/ui/use/use-crate-self.stderr | 0 {src/test => tests}/ui/use/use-from-trait-xc.rs | 0 {src/test => tests}/ui/use/use-from-trait-xc.stderr | 0 {src/test => tests}/ui/use/use-from-trait.rs | 0 {src/test => tests}/ui/use/use-from-trait.stderr | 0 {src/test => tests}/ui/use/use-keyword.rs | 0 {src/test => tests}/ui/use/use-keyword.stderr | 0 {src/test => tests}/ui/use/use-meta-mismatch.rs | 0 {src/test => tests}/ui/use/use-meta-mismatch.stderr | 0 {src/test => tests}/ui/use/use-mod.rs | 0 {src/test => tests}/ui/use/use-mod.stderr | 0 {src/test => tests}/ui/use/use-mod/use-mod-2.rs | 0 {src/test => tests}/ui/use/use-mod/use-mod-2.stderr | 0 {src/test => tests}/ui/use/use-mod/use-mod-3.rs | 0 {src/test => tests}/ui/use/use-mod/use-mod-3.stderr | 0 {src/test => tests}/ui/use/use-mod/use-mod-4.rs | 0 {src/test => tests}/ui/use/use-mod/use-mod-4.stderr | 0 {src/test => tests}/ui/use/use-mod/use-mod-5.rs | 0 {src/test => tests}/ui/use/use-mod/use-mod-5.stderr | 0 {src/test => tests}/ui/use/use-mod/use-mod-6.rs | 0 {src/test => tests}/ui/use/use-mod/use-mod-6.stderr | 0 .../ui/use/use-nested-groups-error.rs | 0 .../ui/use/use-nested-groups-error.stderr | 0 .../ui/use/use-nested-groups-unused-imports.rs | 0 .../ui/use/use-nested-groups-unused-imports.stderr | 0 {src/test => tests}/ui/use/use-paths-as-items.rs | 0 .../test => tests}/ui/use/use-paths-as-items.stderr | 0 {src/test => tests}/ui/use/use-self-type.rs | 0 {src/test => tests}/ui/use/use-self-type.stderr | 0 {src/test => tests}/ui/use/use-super-global-path.rs | 0 .../ui/use/use-super-global-path.stderr | 0 {src/test => tests}/ui/used.rs | 0 {src/test => tests}/ui/used.stderr | 0 {src/test => tests}/ui/user-defined-macro-rules.rs | 0 .../ui/using-target-feature-unstable.rs | 0 .../ui/usize-generic-argument-parent.rs | 0 .../ui/usize-generic-argument-parent.stderr | 0 {src/test => tests}/ui/utf8-bom.rs | 0 {src/test => tests}/ui/utf8_idents.rs | 0 .../ui/variance-intersection-of-ref-and-opt-ref.rs | 0 .../ui/variance-iterators-in-libcore.rs | 0 .../ui/variance/variance-associated-consts.rs | 0 .../ui/variance/variance-associated-consts.stderr | 0 .../ui/variance/variance-associated-types.rs | 0 .../ui/variance/variance-associated-types.stderr | 0 .../ui/variance/variance-associated-types2.rs | 0 .../ui/variance/variance-associated-types2.stderr | 0 .../ui/variance/variance-btree-invariant-types.rs | 0 .../variance/variance-btree-invariant-types.stderr | 0 .../ui/variance/variance-cell-is-invariant.rs | 0 .../ui/variance/variance-cell-is-invariant.stderr | 0 .../variance/variance-contravariant-arg-object.rs | 0 .../variance-contravariant-arg-object.stderr | 0 .../variance-contravariant-arg-trait-match.rs | 0 .../variance-contravariant-arg-trait-match.stderr | 0 .../variance-contravariant-self-trait-match.rs | 0 .../variance-contravariant-self-trait-match.stderr | 0 .../ui/variance/variance-covariant-arg-object.rs | 0 .../variance/variance-covariant-arg-object.stderr | 0 .../variance/variance-covariant-arg-trait-match.rs | 0 .../variance-covariant-arg-trait-match.stderr | 0 .../variance/variance-covariant-self-trait-match.rs | 0 .../variance-covariant-self-trait-match.stderr | 0 .../ui/variance/variance-invariant-arg-object.rs | 0 .../variance/variance-invariant-arg-object.stderr | 0 .../variance/variance-invariant-arg-trait-match.rs | 0 .../variance-invariant-arg-trait-match.stderr | 0 .../variance/variance-invariant-self-trait-match.rs | 0 .../variance-invariant-self-trait-match.stderr | 0 .../ui/variance/variance-issue-20533.rs | 0 .../ui/variance/variance-issue-20533.stderr | 0 .../ui/variance/variance-object-types.rs | 0 .../ui/variance/variance-object-types.stderr | 0 .../ui/variance/variance-regions-direct.rs | 0 .../ui/variance/variance-regions-direct.stderr | 0 .../ui/variance/variance-regions-indirect.rs | 0 .../ui/variance/variance-regions-indirect.stderr | 0 .../ui/variance/variance-regions-unused-direct.rs | 0 .../variance/variance-regions-unused-direct.stderr | 0 .../ui/variance/variance-regions-unused-indirect.rs | 0 .../variance-regions-unused-indirect.stderr | 0 .../ui/variance/variance-trait-bounds.rs | 0 .../ui/variance/variance-trait-bounds.stderr | 0 .../ui/variance/variance-trait-matching.rs | 0 .../ui/variance/variance-trait-matching.stderr | 0 .../ui/variance/variance-trait-object-bound.rs | 0 .../ui/variance/variance-trait-object-bound.stderr | 0 .../ui/variance/variance-types-bounds.rs | 0 .../ui/variance/variance-types-bounds.stderr | 0 {src/test => tests}/ui/variance/variance-types.rs | 0 .../ui/variance/variance-types.stderr | 0 .../ui/variance/variance-unused-region-param.rs | 0 .../ui/variance/variance-unused-region-param.stderr | 0 .../ui/variance/variance-unused-type-param.rs | 0 .../ui/variance/variance-unused-type-param.stderr | 0 .../variance/variance-use-contravariant-struct-1.rs | 0 .../variance-use-contravariant-struct-1.stderr | 0 .../variance/variance-use-contravariant-struct-2.rs | 0 .../ui/variance/variance-use-covariant-struct-1.rs | 0 .../variance/variance-use-covariant-struct-1.stderr | 0 .../ui/variance/variance-use-covariant-struct-2.rs | 0 .../ui/variance/variance-use-invariant-struct-1.rs | 0 .../variance/variance-use-invariant-struct-1.stderr | 0 .../ui/variants/auxiliary/variant-namespacing.rs | 0 .../ui/variants/variant-namespacing.rs | 0 .../ui/variants/variant-namespacing.stderr | 0 .../ui/variants/variant-size-differences.rs | 0 .../ui/variants/variant-size-differences.stderr | 0 .../ui/variants/variant-used-as-type.rs | 0 .../ui/variants/variant-used-as-type.stderr | 0 .../ui/wait-forked-but-failed-child.rs | 0 {src/test => tests}/ui/walk-struct-literal-with.rs | 0 .../ui/walk-struct-literal-with.stderr | 0 .../ui/wasm-custom-section-relocations.rs | 0 .../ui/wasm-custom-section-relocations.stderr | 0 {src/test => tests}/ui/wasm/simd-to-array-80108.rs | 0 .../test => tests}/ui/wasm/wasm-hang-issue-76281.rs | 0 {src/test => tests}/ui/wasm/wasm-import-module.rs | 0 .../ui/wasm/wasm-import-module.stderr | 0 .../ui/weak-new-uninhabited-issue-48493.rs | 0 {src/test => tests}/ui/weird-exit-code.rs | 0 {src/test => tests}/ui/weird-exprs.rs | 0 {src/test => tests}/ui/wf/hir-wf-canonicalized.rs | 0 .../ui/wf/hir-wf-canonicalized.stderr | 0 .../ui/wf/hir-wf-check-erase-regions.rs | 0 .../ui/wf/hir-wf-check-erase-regions.stderr | 0 {src/test => tests}/ui/wf/issue-103573.rs | 0 {src/test => tests}/ui/wf/issue-103573.stderr | 0 {src/test => tests}/ui/wf/issue-48638.rs | 0 {src/test => tests}/ui/wf/issue-87495.rs | 0 {src/test => tests}/ui/wf/issue-87495.stderr | 0 {src/test => tests}/ui/wf/issue-95665.rs | 0 {src/test => tests}/ui/wf/issue-95665.stderr | 0 {src/test => tests}/ui/wf/issue-96810.rs | 0 {src/test => tests}/ui/wf/issue-96810.stderr | 0 {src/test => tests}/ui/wf/wf-array-elem-sized.rs | 0 .../test => tests}/ui/wf/wf-array-elem-sized.stderr | 0 {src/test => tests}/ui/wf/wf-complex-assoc-type.rs | 0 .../ui/wf/wf-complex-assoc-type.stderr | 0 {src/test => tests}/ui/wf/wf-const-type.rs | 0 {src/test => tests}/ui/wf/wf-const-type.stderr | 0 .../ui/wf/wf-convert-unsafe-trait-obj-box.rs | 0 .../ui/wf/wf-convert-unsafe-trait-obj-box.stderr | 0 .../ui/wf/wf-convert-unsafe-trait-obj.rs | 0 .../ui/wf/wf-convert-unsafe-trait-obj.stderr | 0 {src/test => tests}/ui/wf/wf-enum-bound.rs | 0 {src/test => tests}/ui/wf/wf-enum-bound.stderr | 0 .../ui/wf/wf-enum-fields-struct-variant.rs | 0 .../ui/wf/wf-enum-fields-struct-variant.stderr | 0 {src/test => tests}/ui/wf/wf-enum-fields.rs | 0 {src/test => tests}/ui/wf/wf-enum-fields.stderr | 0 {src/test => tests}/ui/wf/wf-fn-where-clause.rs | 0 {src/test => tests}/ui/wf/wf-fn-where-clause.stderr | 0 {src/test => tests}/ui/wf/wf-foreign-fn-decl-ret.rs | 0 .../ui/wf/wf-foreign-fn-decl-ret.stderr | 0 .../ui/wf/wf-impl-associated-type-region.rs | 0 .../ui/wf/wf-impl-associated-type-region.stderr | 0 .../ui/wf/wf-impl-associated-type-trait.rs | 0 .../ui/wf/wf-impl-associated-type-trait.stderr | 0 {src/test => tests}/ui/wf/wf-impl-self-type.rs | 0 {src/test => tests}/ui/wf/wf-impl-self-type.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-arg.rs | 0 {src/test => tests}/ui/wf/wf-in-fn-arg.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-ret.rs | 0 {src/test => tests}/ui/wf/wf-in-fn-ret.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-type-arg.rs | 0 {src/test => tests}/ui/wf/wf-in-fn-type-arg.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-type-ret.rs | 0 {src/test => tests}/ui/wf/wf-in-fn-type-ret.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-type-static.rs | 0 .../ui/wf/wf-in-fn-type-static.stderr | 0 {src/test => tests}/ui/wf/wf-in-fn-where-clause.rs | 0 .../ui/wf/wf-in-fn-where-clause.stderr | 0 .../ui/wf/wf-in-foreign-fn-decls-issue-80468.rs | 0 .../ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr | 0 {src/test => tests}/ui/wf/wf-in-obj-type-static.rs | 0 .../ui/wf/wf-in-obj-type-static.stderr | 0 {src/test => tests}/ui/wf/wf-in-obj-type-trait.rs | 0 .../ui/wf/wf-in-obj-type-trait.stderr | 0 .../ui/wf/wf-inherent-impl-method-where-clause.rs | 0 .../wf/wf-inherent-impl-method-where-clause.stderr | 0 .../ui/wf/wf-inherent-impl-where-clause.rs | 0 .../ui/wf/wf-inherent-impl-where-clause.stderr | 0 .../ui/wf/wf-misc-methods-issue-28609.rs | 0 .../ui/wf/wf-misc-methods-issue-28609.stderr | 0 {src/test => tests}/ui/wf/wf-object-safe.rs | 0 {src/test => tests}/ui/wf/wf-object-safe.stderr | 0 .../ui/wf/wf-outlives-ty-in-fn-or-trait.rs | 0 .../ui/wf/wf-outlives-ty-in-fn-or-trait.stderr | 0 .../wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs | 0 ...wf-packed-on-proj-of-type-as-unimpl-trait.stderr | 0 {src/test => tests}/ui/wf/wf-static-method.rs | 0 {src/test => tests}/ui/wf/wf-static-method.stderr | 0 {src/test => tests}/ui/wf/wf-static-type.rs | 0 {src/test => tests}/ui/wf/wf-static-type.stderr | 0 {src/test => tests}/ui/wf/wf-struct-bound.rs | 0 {src/test => tests}/ui/wf/wf-struct-bound.stderr | 0 {src/test => tests}/ui/wf/wf-struct-field.rs | 0 {src/test => tests}/ui/wf/wf-struct-field.stderr | 0 .../ui/wf/wf-trait-associated-type-bound.rs | 0 .../ui/wf/wf-trait-associated-type-bound.stderr | 0 .../ui/wf/wf-trait-associated-type-region.rs | 0 .../ui/wf/wf-trait-associated-type-region.stderr | 0 .../ui/wf/wf-trait-associated-type-trait.rs | 0 .../ui/wf/wf-trait-associated-type-trait.stderr | 0 {src/test => tests}/ui/wf/wf-trait-bound.rs | 0 {src/test => tests}/ui/wf/wf-trait-bound.stderr | 0 .../test => tests}/ui/wf/wf-trait-default-fn-arg.rs | 0 .../ui/wf/wf-trait-default-fn-arg.stderr | 0 .../test => tests}/ui/wf/wf-trait-default-fn-ret.rs | 0 .../ui/wf/wf-trait-default-fn-ret.stderr | 0 .../ui/wf/wf-trait-default-fn-where-clause.rs | 0 .../ui/wf/wf-trait-default-fn-where-clause.stderr | 0 {src/test => tests}/ui/wf/wf-trait-fn-arg.rs | 0 {src/test => tests}/ui/wf/wf-trait-fn-arg.stderr | 0 {src/test => tests}/ui/wf/wf-trait-fn-ret.rs | 0 {src/test => tests}/ui/wf/wf-trait-fn-ret.stderr | 0 .../ui/wf/wf-trait-fn-where-clause.rs | 0 .../ui/wf/wf-trait-fn-where-clause.stderr | 0 {src/test => tests}/ui/wf/wf-trait-superbound.rs | 0 .../test => tests}/ui/wf/wf-trait-superbound.stderr | 0 .../ui/wf/wf-unsafe-trait-obj-match.rs | 0 .../ui/wf/wf-unsafe-trait-obj-match.stderr | 0 .../ui/where-clauses/auxiliary/where_clauses_xc.rs | 0 .../higher-ranked-fn-type.quiet.stderr | 0 .../ui/where-clauses/higher-ranked-fn-type.rs | 0 .../higher-ranked-fn-type.verbose.stderr | 0 .../where-clause-bounds-inconsistency.rs | 0 ...lause-constraints-are-local-for-inherent-impl.rs | 0 ...e-constraints-are-local-for-inherent-impl.stderr | 0 ...e-clause-constraints-are-local-for-trait-impl.rs | 0 ...ause-constraints-are-local-for-trait-impl.stderr | 0 .../where-clause-early-bound-lifetimes.rs | 0 .../where-clause-method-substituion-rpass.rs | 0 .../where-clause-method-substituion.rs | 0 .../where-clause-method-substituion.stderr | 0 .../where-clauses/where-clause-region-outlives.rs | 0 .../ui/where-clauses/where-clauses-cross-crate.rs | 0 .../ui/where-clauses/where-clauses-lifetimes.rs | 0 .../where-clauses-method-unsatisfied.rs | 0 .../where-clauses-method-unsatisfied.stderr | 0 .../ui/where-clauses/where-clauses-method.rs | 0 .../where-clauses/where-clauses-unboxed-closures.rs | 0 .../ui/where-clauses/where-clauses-unsatisfied.rs | 0 .../where-clauses/where-clauses-unsatisfied.stderr | 0 .../ui/where-clauses/where-clauses.rs | 0 .../ui/where-clauses/where-equality-constraints.rs | 0 .../where-clauses/where-equality-constraints.stderr | 0 .../ui/where-clauses/where-for-self-2.rs | 0 .../ui/where-clauses/where-for-self-2.stderr | 0 .../ui/where-clauses/where-for-self.rs | 0 .../ui/where-clauses/where-for-self.stderr | 0 .../ui/where-clauses/where-lifetime-resolution.rs | 0 .../where-clauses/where-lifetime-resolution.stderr | 0 {src/test => tests}/ui/while-type-error.rs | 0 {src/test => tests}/ui/while-type-error.stderr | 0 {src/test => tests}/ui/windows-subsystem-invalid.rs | 0 .../ui/windows-subsystem-invalid.stderr | 0 {src/test => tests}/ui/write-fmt-errors.rs | 0 {src/test => tests}/ui/writing-to-immutable-vec.rs | 0 .../ui/writing-to-immutable-vec.stderr | 0 {src/test => tests}/ui/wrong-hashset-issue-42918.rs | 0 .../test => tests}/ui/wrong-mul-method-signature.rs | 0 .../ui/wrong-mul-method-signature.stderr | 0 {src/test => tests}/ui/wrong-ret-type.rs | 0 {src/test => tests}/ui/wrong-ret-type.stderr | 0 {src/test => tests}/ui/xc-private-method.rs | 0 {src/test => tests}/ui/xc-private-method.stderr | 0 {src/test => tests}/ui/xc-private-method2.rs | 0 {src/test => tests}/ui/xc-private-method2.stderr | 0 .../ui/xcrate/auxiliary/static_priv_by_default.rs | 0 .../ui/xcrate/auxiliary/xcrate_unit_struct.rs | 0 .../ui/xcrate/xcrate-private-by-default.rs | 0 .../ui/xcrate/xcrate-private-by-default.stderr | 0 .../ui/xcrate/xcrate-unit-struct-2.rs | 0 {src/test => tests}/ui/xcrate/xcrate-unit-struct.rs | 0 .../ui/xcrate/xcrate-unit-struct.stderr | 0 .../ui/zero-sized/zero-size-type-destructors.rs | 0 .../ui/zero-sized/zero-sized-binary-heap-push.rs | 0 .../ui/zero-sized/zero-sized-btreemap-insert.rs | 0 .../ui/zero-sized/zero-sized-linkedlist-push.rs | 0 .../ui/zero-sized/zero-sized-tuple-struct.rs | 0 27592 files changed, 0 insertions(+), 0 deletions(-) rename {src/test => tests}/COMPILER_TESTS.md (100%) rename {src/test => tests}/assembly/aarch64-naked-fn-no-bti-prolog.rs (100%) rename {src/test => tests}/assembly/aarch64-pointer-auth.rs (100%) rename {src/test => tests}/assembly/align_offset.rs (100%) rename {src/test => tests}/assembly/asm/aarch64-el2vmsa.rs (100%) rename {src/test => tests}/assembly/asm/aarch64-modifiers.rs (100%) rename {src/test => tests}/assembly/asm/aarch64-outline-atomics.rs (100%) rename {src/test => tests}/assembly/asm/aarch64-types.rs (100%) rename {src/test => tests}/assembly/asm/arm-modifiers.rs (100%) rename {src/test => tests}/assembly/asm/arm-types.rs (100%) rename {src/test => tests}/assembly/asm/avr-modifiers.rs (100%) rename {src/test => tests}/assembly/asm/avr-types.rs (100%) rename {src/test => tests}/assembly/asm/bpf-types.rs (100%) rename {src/test => tests}/assembly/asm/global_asm.rs (100%) rename {src/test => tests}/assembly/asm/hexagon-types.rs (100%) rename {src/test => tests}/assembly/asm/mips-types.rs (100%) rename {src/test => tests}/assembly/asm/msp430-types.rs (100%) rename {src/test => tests}/assembly/asm/nvptx-types.rs (100%) rename {src/test => tests}/assembly/asm/powerpc-types.rs (100%) rename {src/test => tests}/assembly/asm/riscv-types.rs (100%) rename {src/test => tests}/assembly/asm/s390x-types.rs (100%) rename {src/test => tests}/assembly/asm/wasm-types.rs (100%) rename {src/test => tests}/assembly/asm/x86-modifiers.rs (100%) rename {src/test => tests}/assembly/asm/x86-types.rs (100%) rename {src/test => tests}/assembly/auxiliary/breakpoint-panic-handler.rs (100%) rename {src/test => tests}/assembly/auxiliary/non-inline-dependency.rs (100%) rename {src/test => tests}/assembly/dwarf5.rs (100%) rename {src/test => tests}/assembly/is_aligned.rs (100%) rename {src/test => tests}/assembly/niche-prefer-zero.rs (100%) rename {src/test => tests}/assembly/nvptx-arch-default.rs (100%) rename {src/test => tests}/assembly/nvptx-arch-emit-asm.rs (100%) rename {src/test => tests}/assembly/nvptx-arch-link-arg.rs (100%) rename {src/test => tests}/assembly/nvptx-arch-target-cpu.rs (100%) rename {src/test => tests}/assembly/nvptx-atomics.rs (100%) rename {src/test => tests}/assembly/nvptx-internalizing.rs (100%) rename {src/test => tests}/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs (100%) rename {src/test => tests}/assembly/nvptx-linking-binary.rs (100%) rename {src/test => tests}/assembly/nvptx-linking-cdylib.rs (100%) rename {src/test => tests}/assembly/nvptx-safe-naming.rs (100%) rename {src/test => tests}/assembly/panic-no-unwind-no-uwtable.rs (100%) rename {src/test => tests}/assembly/panic-unwind-no-uwtable.rs (100%) rename {src/test => tests}/assembly/pic-relocation-model.rs (100%) rename {src/test => tests}/assembly/pie-relocation-model.rs (100%) rename {src/test => tests}/assembly/sparc-struct-abi.rs (100%) rename {src/test => tests}/assembly/stack-protector/stack-protector-heuristics-effect.rs (100%) rename {src/test => tests}/assembly/stack-protector/stack-protector-target-support.rs (100%) rename {src/test => tests}/assembly/static-relocation-model.rs (100%) rename {src/test => tests}/assembly/strict_provenance.rs (100%) rename {src/test => tests}/assembly/target-feature-multiple.rs (100%) rename {src/test => tests}/assembly/x86-stack-probes.rs (100%) rename {src/test => tests}/assembly/x86_64-floating-point-clamp.rs (100%) rename {src/test => tests}/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs (100%) rename {src/test => tests}/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs (100%) rename {src/test => tests}/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs (100%) rename {src/test => tests}/assembly/x86_64-naked-fn-no-cet-prolog.rs (100%) rename {src/test => tests}/assembly/x86_64-no-jump-tables.rs (100%) rename {src/test => tests}/assembly/x86_64-sse_crc.rs (100%) rename {src/test => tests}/auxiliary/rust_test_helpers.c (100%) rename {src/test => tests}/codegen-units/item-collection/asm-sym.rs (100%) rename {src/test => tests}/codegen-units/item-collection/auxiliary/cgu_export_trait_method.rs (100%) rename {src/test => tests}/codegen-units/item-collection/auxiliary/cgu_extern_closures.rs (100%) rename {src/test => tests}/codegen-units/item-collection/auxiliary/cgu_generic_function.rs (100%) rename {src/test => tests}/codegen-units/item-collection/cross-crate-closures.rs (100%) rename {src/test => tests}/codegen-units/item-collection/cross-crate-generic-functions.rs (100%) rename {src/test => tests}/codegen-units/item-collection/cross-crate-trait-method.rs (100%) rename {src/test => tests}/codegen-units/item-collection/drop_in_place_intrinsic.rs (100%) rename {src/test => tests}/codegen-units/item-collection/function-as-argument.rs (100%) rename {src/test => tests}/codegen-units/item-collection/generic-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/item-collection/generic-functions.rs (100%) rename {src/test => tests}/codegen-units/item-collection/generic-impl.rs (100%) rename {src/test => tests}/codegen-units/item-collection/impl-in-non-instantiated-generic.rs (100%) rename {src/test => tests}/codegen-units/item-collection/implicit-panic-call.rs (100%) rename {src/test => tests}/codegen-units/item-collection/instantiation-through-vtable.rs (100%) rename {src/test => tests}/codegen-units/item-collection/items-within-generic-items.rs (100%) rename {src/test => tests}/codegen-units/item-collection/non-generic-closures.rs (100%) rename {src/test => tests}/codegen-units/item-collection/non-generic-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/item-collection/non-generic-functions.rs (100%) rename {src/test => tests}/codegen-units/item-collection/overloaded-operators.rs (100%) rename {src/test => tests}/codegen-units/item-collection/static-init.rs (100%) rename {src/test => tests}/codegen-units/item-collection/statics-and-consts.rs (100%) rename {src/test => tests}/codegen-units/item-collection/trait-implementations.rs (100%) rename {src/test => tests}/codegen-units/item-collection/trait-method-as-argument.rs (100%) rename {src/test => tests}/codegen-units/item-collection/trait-method-default-impl.rs (100%) rename {src/test => tests}/codegen-units/item-collection/transitive-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/item-collection/tuple-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/item-collection/unreferenced-const-fn.rs (100%) rename {src/test => tests}/codegen-units/item-collection/unreferenced-inline-function.rs (100%) rename {src/test => tests}/codegen-units/item-collection/unsizing.rs (100%) rename {src/test => tests}/codegen-units/item-collection/unused-traits-and-generics.rs (100%) rename {src/test => tests}/codegen-units/partitioning/auxiliary/cgu_explicit_inlining.rs (100%) rename {src/test => tests}/codegen-units/partitioning/auxiliary/cgu_extern_drop_glue.rs (100%) rename {src/test => tests}/codegen-units/partitioning/auxiliary/cgu_generic_function.rs (100%) rename {src/test => tests}/codegen-units/partitioning/auxiliary/shared_generics_aux.rs (100%) rename {src/test => tests}/codegen-units/partitioning/extern-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/partitioning/extern-generic.rs (100%) rename {src/test => tests}/codegen-units/partitioning/incremental-merging.rs (100%) rename {src/test => tests}/codegen-units/partitioning/inlining-from-extern-crate.rs (100%) rename {src/test => tests}/codegen-units/partitioning/local-drop-glue.rs (100%) rename {src/test => tests}/codegen-units/partitioning/local-generic.rs (100%) rename {src/test => tests}/codegen-units/partitioning/local-inlining-but-not-all.rs (100%) rename {src/test => tests}/codegen-units/partitioning/local-inlining.rs (100%) rename {src/test => tests}/codegen-units/partitioning/local-transitive-inlining.rs (100%) rename {src/test => tests}/codegen-units/partitioning/methods-are-with-self-type.rs (100%) rename {src/test => tests}/codegen-units/partitioning/regular-modules.rs (100%) rename {src/test => tests}/codegen-units/partitioning/shared-generics.rs (100%) rename {src/test => tests}/codegen-units/partitioning/statics.rs (100%) rename {src/test => tests}/codegen-units/partitioning/vtable-through-const.rs (100%) rename {src/test => tests}/codegen-units/polymorphization/unused_type_parameters.rs (100%) rename {src/test => tests}/codegen/README.md (100%) rename {src/test => tests}/codegen/abi-efiapi.rs (100%) rename {src/test => tests}/codegen/abi-main-signature-16bit-c-int.rs (100%) rename {src/test => tests}/codegen/abi-main-signature-32bit-c-int.rs (100%) rename {src/test => tests}/codegen/abi-repr-ext.rs (100%) rename {src/test => tests}/codegen/abi-sysv64.rs (100%) rename {src/test => tests}/codegen/abi-x86-interrupt.rs (100%) rename {src/test => tests}/codegen/abi-x86_64_sysv.rs (100%) rename {src/test => tests}/codegen/adjustments.rs (100%) rename {src/test => tests}/codegen/align-enum.rs (100%) rename {src/test => tests}/codegen/align-fn.rs (100%) rename {src/test => tests}/codegen/align-struct.rs (100%) rename {src/test => tests}/codegen/alloc-optimisation.rs (100%) rename {src/test => tests}/codegen/array-clone.rs (100%) rename {src/test => tests}/codegen/array-equality.rs (100%) rename {src/test => tests}/codegen/asm-clobber_abi.rs (100%) rename {src/test => tests}/codegen/asm-clobbers.rs (100%) rename {src/test => tests}/codegen/asm-may_unwind.rs (100%) rename {src/test => tests}/codegen/asm-multiple-options.rs (100%) rename {src/test => tests}/codegen/asm-options.rs (100%) rename {src/test => tests}/codegen/asm-powerpc-clobbers.rs (100%) rename {src/test => tests}/codegen/asm-sanitize-llvm.rs (100%) rename {src/test => tests}/codegen/asm-target-clobbers.rs (100%) rename {src/test => tests}/codegen/async-fn-debug-awaitee-field.rs (100%) rename {src/test => tests}/codegen/async-fn-debug-msvc.rs (100%) rename {src/test => tests}/codegen/async-fn-debug.rs (100%) rename {src/test => tests}/codegen/atomic-operations.rs (100%) rename {src/test => tests}/codegen/autovectorize-f32x4.rs (100%) rename {src/test => tests}/codegen/auxiliary/extern_decl.rs (100%) rename {src/test => tests}/codegen/auxiliary/nounwind.rs (100%) rename {src/test => tests}/codegen/auxiliary/static_dllimport_aux.rs (100%) rename {src/test => tests}/codegen/auxiliary/thread_local_aux.rs (100%) rename {src/test => tests}/codegen/avr/avr-func-addrspace.rs (100%) rename {src/test => tests}/codegen/binary-search-index-no-bound-check.rs (100%) rename {src/test => tests}/codegen/bool-cmp.rs (100%) rename {src/test => tests}/codegen/box-maybe-uninit-llvm14.rs (100%) rename {src/test => tests}/codegen/box-maybe-uninit.rs (100%) rename {src/test => tests}/codegen/bpf-alu32.rs (100%) rename {src/test => tests}/codegen/branch-protection.rs (100%) rename {src/test => tests}/codegen/c-variadic-copy.rs (100%) rename {src/test => tests}/codegen/c-variadic-opt.rs (100%) rename {src/test => tests}/codegen/c-variadic.rs (100%) rename {src/test => tests}/codegen/call-llvm-intrinsics.rs (100%) rename {src/test => tests}/codegen/call-metadata.rs (100%) rename {src/test => tests}/codegen/catch-unwind.rs (100%) rename {src/test => tests}/codegen/cdylib-external-inline-fns.rs (100%) rename {src/test => tests}/codegen/cf-protection.rs (100%) rename {src/test => tests}/codegen/cfguard-checks.rs (100%) rename {src/test => tests}/codegen/cfguard-disabled.rs (100%) rename {src/test => tests}/codegen/cfguard-nochecks.rs (100%) rename {src/test => tests}/codegen/cfguard-non-msvc.rs (100%) rename {src/test => tests}/codegen/codemodels.rs (100%) rename {src/test => tests}/codegen/coercions.rs (100%) rename {src/test => tests}/codegen/cold-call-declare-and-call.rs (100%) rename {src/test => tests}/codegen/comparison-operators-newtype.rs (100%) rename {src/test => tests}/codegen/consts.rs (100%) rename {src/test => tests}/codegen/dealloc-no-unwind.rs (100%) rename {src/test => tests}/codegen/debug-alignment.rs (100%) rename {src/test => tests}/codegen/debug-column-msvc.rs (100%) rename {src/test => tests}/codegen/debug-column.rs (100%) rename {src/test => tests}/codegen/debug-compile-unit-path.rs (100%) rename {src/test => tests}/codegen/debug-linkage-name.rs (100%) rename {src/test => tests}/codegen/debug-vtable.rs (100%) rename {src/test => tests}/codegen/debuginfo-generic-closure-env-names.rs (100%) rename {src/test => tests}/codegen/deduced-param-attrs.rs (100%) rename {src/test => tests}/codegen/default-requires-uwtable.rs (100%) rename {src/test => tests}/codegen/dllimports/auxiliary/dummy.rs (100%) rename {src/test => tests}/codegen/dllimports/auxiliary/wrapper.rs (100%) rename {src/test => tests}/codegen/dllimports/main.rs (100%) rename {src/test => tests}/codegen/drop.rs (100%) rename {src/test => tests}/codegen/dst-vtable-align-nonzero.rs (100%) rename {src/test => tests}/codegen/dst-vtable-size-range.rs (100%) rename {src/test => tests}/codegen/enum-bounds-check-derived-idx.rs (100%) rename {src/test => tests}/codegen/enum-bounds-check-issue-13926.rs (100%) rename {src/test => tests}/codegen/enum-bounds-check-issue-82871.rs (100%) rename {src/test => tests}/codegen/enum-bounds-check.rs (100%) rename {src/test => tests}/codegen/enum-debug-clike.rs (100%) rename {src/test => tests}/codegen/enum-debug-niche-2.rs (100%) rename {src/test => tests}/codegen/enum-debug-niche.rs (100%) rename {src/test => tests}/codegen/enum-debug-tagged.rs (100%) rename {src/test => tests}/codegen/enum-discriminant-value.rs (100%) rename {src/test => tests}/codegen/enum-match.rs (100%) rename {src/test => tests}/codegen/export-no-mangle.rs (100%) rename {src/test => tests}/codegen/external-no-mangle-fns.rs (100%) rename {src/test => tests}/codegen/external-no-mangle-statics.rs (100%) rename {src/test => tests}/codegen/fastcall-inreg.rs (100%) rename {src/test => tests}/codegen/fatptr.rs (100%) rename {src/test => tests}/codegen/fewer-names.rs (100%) rename {src/test => tests}/codegen/ffi-const.rs (100%) rename {src/test => tests}/codegen/ffi-out-of-bounds-loads.rs (100%) rename {src/test => tests}/codegen/ffi-pure.rs (100%) rename {src/test => tests}/codegen/ffi-returns-twice.rs (100%) rename {src/test => tests}/codegen/float_math.rs (100%) rename {src/test => tests}/codegen/fn-impl-trait-self.rs (100%) rename {src/test => tests}/codegen/foo.s (100%) rename {src/test => tests}/codegen/force-frame-pointers.rs (100%) rename {src/test => tests}/codegen/force-no-unwind-tables.rs (100%) rename {src/test => tests}/codegen/force-unwind-tables.rs (100%) rename {src/test => tests}/codegen/frame-pointer.rs (100%) rename {src/test => tests}/codegen/function-arguments-noopt.rs (100%) rename {src/test => tests}/codegen/function-arguments.rs (100%) rename {src/test => tests}/codegen/gdb_debug_script_load.rs (100%) rename {src/test => tests}/codegen/generator-debug-msvc.rs (100%) rename {src/test => tests}/codegen/generator-debug.rs (100%) rename {src/test => tests}/codegen/generic-debug.rs (100%) rename {src/test => tests}/codegen/global_asm.rs (100%) rename {src/test => tests}/codegen/global_asm_include.rs (100%) rename {src/test => tests}/codegen/global_asm_x2.rs (100%) rename {src/test => tests}/codegen/i686-macosx-deployment-target.rs (100%) rename {src/test => tests}/codegen/i686-no-macosx-deployment-target.rs (100%) rename {src/test => tests}/codegen/inline-always-works-always.rs (100%) rename {src/test => tests}/codegen/inline-debuginfo.rs (100%) rename {src/test => tests}/codegen/inline-hint.rs (100%) rename {src/test => tests}/codegen/instrument-coverage.rs (100%) rename {src/test => tests}/codegen/instrument-mcount.rs (100%) rename {src/test => tests}/codegen/integer-cmp.rs (100%) rename {src/test => tests}/codegen/integer-overflow.rs (100%) rename {src/test => tests}/codegen/internalize-closures.rs (100%) rename {src/test => tests}/codegen/intrinsic-no-unnamed-attr.rs (100%) rename {src/test => tests}/codegen/intrinsics/const_eval_select.rs (100%) rename {src/test => tests}/codegen/intrinsics/exact_div.rs (100%) rename {src/test => tests}/codegen/intrinsics/likely.rs (100%) rename {src/test => tests}/codegen/intrinsics/mask.rs (100%) rename {src/test => tests}/codegen/intrinsics/nearby.rs (100%) rename {src/test => tests}/codegen/intrinsics/nontemporal.rs (100%) rename {src/test => tests}/codegen/intrinsics/offset_from.rs (100%) rename {src/test => tests}/codegen/intrinsics/prefetch.rs (100%) rename {src/test => tests}/codegen/intrinsics/unchecked_math.rs (100%) rename {src/test => tests}/codegen/intrinsics/volatile.rs (100%) rename {src/test => tests}/codegen/intrinsics/volatile_order.rs (100%) rename {src/test => tests}/codegen/issue-103285-ptr-addr-overflow-check.rs (100%) rename {src/test => tests}/codegen/issue-103840.rs (100%) rename {src/test => tests}/codegen/issue-105386-ub-in-debuginfo.rs (100%) rename {src/test => tests}/codegen/issue-13018.rs (100%) rename {src/test => tests}/codegen/issue-15953.rs (100%) rename {src/test => tests}/codegen/issue-27130.rs (100%) rename {src/test => tests}/codegen/issue-32031.rs (100%) rename {src/test => tests}/codegen/issue-32364.rs (100%) rename {src/test => tests}/codegen/issue-34634.rs (100%) rename {src/test => tests}/codegen/issue-34947-pow-i32.rs (100%) rename {src/test => tests}/codegen/issue-37945.rs (100%) rename {src/test => tests}/codegen/issue-44056-macos-tls-align.rs (100%) rename {src/test => tests}/codegen/issue-45222.rs (100%) rename {src/test => tests}/codegen/issue-45466.rs (100%) rename {src/test => tests}/codegen/issue-45964-bounds-check-slice-pos.rs (100%) rename {src/test => tests}/codegen/issue-47278.rs (100%) rename {src/test => tests}/codegen/issue-47442.rs (100%) rename {src/test => tests}/codegen/issue-56267-2.rs (100%) rename {src/test => tests}/codegen/issue-56267.rs (100%) rename {src/test => tests}/codegen/issue-56927.rs (100%) rename {src/test => tests}/codegen/issue-58881.rs (100%) rename {src/test => tests}/codegen/issue-59352.rs (100%) rename {src/test => tests}/codegen/issue-69101-bounds-check.rs (100%) rename {src/test => tests}/codegen/issue-73031.rs (100%) rename {src/test => tests}/codegen/issue-73338-effecient-cmp.rs (100%) rename {src/test => tests}/codegen/issue-73396-bounds-check-after-position.rs (100%) rename {src/test => tests}/codegen/issue-73827-bounds-check-index-in-subexpr.rs (100%) rename {src/test => tests}/codegen/issue-75525-bounds-checks.rs (100%) rename {src/test => tests}/codegen/issue-75546.rs (100%) rename {src/test => tests}/codegen/issue-75659.rs (100%) rename {src/test => tests}/codegen/issue-77812.rs (100%) rename {src/test => tests}/codegen/issue-81408-dllimport-thinlto-windows.rs (100%) rename {src/test => tests}/codegen/issue-84268.rs (100%) rename {src/test => tests}/codegen/issue-85872-multiple-reverse.rs (100%) rename {src/test => tests}/codegen/issue-86106.rs (100%) rename {src/test => tests}/codegen/issue-96274.rs (100%) rename {src/test => tests}/codegen/issue-96497-slice-size-nowrap.rs (100%) rename {src/test => tests}/codegen/issue-98156-const-arg-temp-lifetime.rs (100%) rename {src/test => tests}/codegen/issue-98294-get-mut-copy-from-slice-opt.rs (100%) rename {src/test => tests}/codegen/iter-repeat-n-trivial-drop.rs (100%) rename {src/test => tests}/codegen/layout-size-checks.rs (100%) rename {src/test => tests}/codegen/lifetime_start_end.rs (100%) rename {src/test => tests}/codegen/link-dead-code.rs (100%) rename {src/test => tests}/codegen/link_section.rs (100%) rename {src/test => tests}/codegen/loads.rs (100%) rename {src/test => tests}/codegen/local-generics-in-exe-internalized.rs (100%) rename {src/test => tests}/codegen/lto-removes-invokes.rs (100%) rename {src/test => tests}/codegen/mainsubprogram.rs (100%) rename {src/test => tests}/codegen/mainsubprogramstart.rs (100%) rename {src/test => tests}/codegen/match-optimized.rs (100%) rename {src/test => tests}/codegen/match-optimizes-away.rs (100%) rename {src/test => tests}/codegen/match-unoptimized.rs (100%) rename {src/test => tests}/codegen/mem-replace-direct-memcpy.rs (100%) rename {src/test => tests}/codegen/merge-functions.rs (100%) rename {src/test => tests}/codegen/mir-inlined-line-numbers.rs (100%) rename {src/test => tests}/codegen/mir_zst_stores.rs (100%) rename {src/test => tests}/codegen/naked-functions.rs (100%) rename {src/test => tests}/codegen/naked-nocoverage.rs (100%) rename {src/test => tests}/codegen/naked-noinline.rs (100%) rename {src/test => tests}/codegen/no-assumes-on-casts.rs (100%) rename {src/test => tests}/codegen/no-dllimport-w-cross-lang-lto.rs (100%) rename {src/test => tests}/codegen/no-jump-tables.rs (100%) rename {src/test => tests}/codegen/no-plt.rs (100%) rename {src/test => tests}/codegen/noalias-box-off.rs (100%) rename {src/test => tests}/codegen/noalias-box.rs (100%) rename {src/test => tests}/codegen/noalias-flag.rs (100%) rename {src/test => tests}/codegen/noalias-refcell.rs (100%) rename {src/test => tests}/codegen/noalias-rwlockreadguard.rs (100%) rename {src/test => tests}/codegen/noalias-unpin.rs (100%) rename {src/test => tests}/codegen/non-terminate/infinite-loop-1.rs (100%) rename {src/test => tests}/codegen/non-terminate/infinite-loop-2.rs (100%) rename {src/test => tests}/codegen/non-terminate/infinite-recursion.rs (100%) rename {src/test => tests}/codegen/non-terminate/nonempty-infinite-loop.rs (100%) rename {src/test => tests}/codegen/noreturn-uninhabited.rs (100%) rename {src/test => tests}/codegen/noreturnflag.rs (100%) rename {src/test => tests}/codegen/nounwind.rs (100%) rename {src/test => tests}/codegen/nrvo.rs (100%) rename {src/test => tests}/codegen/optimize-attr-1.rs (100%) rename {src/test => tests}/codegen/option-nonzero-eq.rs (100%) rename {src/test => tests}/codegen/packed.rs (100%) rename {src/test => tests}/codegen/panic-abort-windows.rs (100%) rename {src/test => tests}/codegen/panic-in-drop-abort.rs (100%) rename {src/test => tests}/codegen/panic-unwind-default-uwtable.rs (100%) rename {src/test => tests}/codegen/personality_lifetimes.rs (100%) rename {src/test => tests}/codegen/pgo-counter-bias.rs (100%) rename {src/test => tests}/codegen/pgo-instrumentation.rs (100%) rename {src/test => tests}/codegen/pic-relocation-model.rs (100%) rename {src/test => tests}/codegen/pie-relocation-model.rs (100%) rename {src/test => tests}/codegen/refs.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/aux_mod.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/issue-73167-remap-std.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/main.rs (100%) rename {src/test => tests}/codegen/remap_path_prefix/xcrate-generic.rs (100%) rename {src/test => tests}/codegen/repeat-trusted-len.rs (100%) rename {src/test => tests}/codegen/repr-transparent-aggregates-1.rs (100%) rename {src/test => tests}/codegen/repr-transparent-aggregates-2.rs (100%) rename {src/test => tests}/codegen/repr-transparent-aggregates-3.rs (100%) rename {src/test => tests}/codegen/repr-transparent-sysv64.rs (100%) rename {src/test => tests}/codegen/repr-transparent.rs (100%) rename {src/test => tests}/codegen/riscv-abi/call-llvm-intrinsics.rs (100%) rename {src/test => tests}/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs (100%) rename {src/test => tests}/codegen/riscv-abi/riscv64-lp64d-abi.rs (100%) rename {src/test => tests}/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs (100%) rename {src/test => tests}/codegen/sanitizer-cfi-add-canonical-jump-tables-flag.rs (100%) rename {src/test => tests}/codegen/sanitizer-cfi-emit-type-checks.rs (100%) rename {src/test => tests}/codegen/sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs (100%) rename {src/test => tests}/codegen/sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs (100%) rename {src/test => tests}/codegen/sanitizer-kcfi-add-kcfi-flag.rs (100%) rename {src/test => tests}/codegen/sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs (100%) rename {src/test => tests}/codegen/sanitizer-memory-track-orgins.rs (100%) rename {src/test => tests}/codegen/sanitizer-no-sanitize-inlining.rs (100%) rename {src/test => tests}/codegen/sanitizer-no-sanitize.rs (100%) rename {src/test => tests}/codegen/sanitizer-recover.rs (100%) rename {src/test => tests}/codegen/sanitizer_memtag_attr_check.rs (100%) rename {src/test => tests}/codegen/sanitizer_scs_attr_check.rs (100%) rename {src/test => tests}/codegen/scalar-pair-bool.rs (100%) rename {src/test => tests}/codegen/set-discriminant-invalid.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-log.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-extract-insert.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs (100%) rename {src/test => tests}/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs (100%) rename {src/test => tests}/codegen/simd-wide-sum.rs (100%) rename {src/test => tests}/codegen/simd_arith_offset.rs (100%) rename {src/test => tests}/codegen/slice-as_chunks.rs (100%) rename {src/test => tests}/codegen/slice-init.rs (100%) rename {src/test => tests}/codegen/slice-iter-len-eq-zero.rs (100%) rename {src/test => tests}/codegen/slice-position-bounds-check.rs (100%) rename {src/test => tests}/codegen/slice-ref-equality.rs (100%) rename {src/test => tests}/codegen/slice-reverse.rs (100%) rename {src/test => tests}/codegen/slice-windows-no-bounds-check.rs (100%) rename {src/test => tests}/codegen/slice_as_from_ptr_range.rs (100%) rename {src/test => tests}/codegen/some-abis-do-extend-params-to-32-bits.rs (100%) rename {src/test => tests}/codegen/some-global-nonnull.rs (100%) rename {src/test => tests}/codegen/sparc-struct-abi.rs (100%) rename {src/test => tests}/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs (100%) rename {src/test => tests}/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs (100%) rename {src/test => tests}/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs (100%) rename {src/test => tests}/codegen/sse42-implies-crc32.rs (100%) rename {src/test => tests}/codegen/stack-probes-call.rs (100%) rename {src/test => tests}/codegen/stack-probes-inline.rs (100%) rename {src/test => tests}/codegen/stack-protector.rs (100%) rename {src/test => tests}/codegen/static-relocation-model-msvc.rs (100%) rename {src/test => tests}/codegen/staticlib-external-inline-fns.rs (100%) rename {src/test => tests}/codegen/stores.rs (100%) rename {src/test => tests}/codegen/swap-large-types.rs (100%) rename {src/test => tests}/codegen/swap-simd-types.rs (100%) rename {src/test => tests}/codegen/swap-small-types.rs (100%) rename {src/test => tests}/codegen/target-cpu-on-functions.rs (100%) rename {src/test => tests}/codegen/target-feature-overrides.rs (100%) rename {src/test => tests}/codegen/thread-local.rs (100%) rename {src/test => tests}/codegen/to_vec.rs (100%) rename {src/test => tests}/codegen/transmute-scalar.rs (100%) rename {src/test => tests}/codegen/try_identity.rs (100%) rename {src/test => tests}/codegen/try_question_mark_nop.rs (100%) rename {src/test => tests}/codegen/tune-cpu-on-functions.rs (100%) rename {src/test => tests}/codegen/tuple-layout-opt.rs (100%) rename {src/test => tests}/codegen/unchecked-float-casts.rs (100%) rename {src/test => tests}/codegen/unchecked_shifts.rs (100%) rename {src/test => tests}/codegen/uninit-consts.rs (100%) rename {src/test => tests}/codegen/union-abi.rs (100%) rename {src/test => tests}/codegen/unpadded-simd.rs (100%) rename {src/test => tests}/codegen/unwind-abis/aapcs-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/c-unwind-abi-panic-abort.rs (100%) rename {src/test => tests}/codegen/unwind-abis/c-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/cdecl-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/fastcall-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs (100%) rename {src/test => tests}/codegen/unwind-abis/nounwind-on-stable-panic-unwind.rs (100%) rename {src/test => tests}/codegen/unwind-abis/nounwind.rs (100%) rename {src/test => tests}/codegen/unwind-abis/stdcall-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/system-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/sysv64-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/thiscall-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/vectorcall-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-abis/win64-unwind-abi.rs (100%) rename {src/test => tests}/codegen/unwind-and-panic-abort.rs (100%) rename {src/test => tests}/codegen/unwind-extern-exports.rs (100%) rename {src/test => tests}/codegen/unwind-extern-imports.rs (100%) rename {src/test => tests}/codegen/used_with_arg.rs (100%) rename {src/test => tests}/codegen/var-names.rs (100%) rename {src/test => tests}/codegen/vec-calloc-llvm14.rs (100%) rename {src/test => tests}/codegen/vec-calloc.rs (100%) rename {src/test => tests}/codegen/vec-in-place.rs (100%) rename {src/test => tests}/codegen/vec-iter-collect-len.rs (100%) rename {src/test => tests}/codegen/vec-optimizes-away.rs (100%) rename {src/test => tests}/codegen/vec-shrink-panik.rs (100%) rename {src/test => tests}/codegen/vecdeque_no_panic.rs (100%) rename {src/test => tests}/codegen/virtual-function-elimination-32bit.rs (100%) rename {src/test => tests}/codegen/virtual-function-elimination.rs (100%) rename {src/test => tests}/codegen/wasm_casts_trapping.rs (100%) rename {src/test => tests}/codegen/x86_64-macosx-deployment-target.rs (100%) rename {src/test => tests}/codegen/x86_64-no-macosx-deployment-target.rs (100%) rename {src/test => tests}/codegen/zip.rs (100%) rename {src/test => tests}/codegen/zst-offset.rs (100%) rename {src/test => tests}/debuginfo/associated-types.rs (100%) rename {src/test => tests}/debuginfo/auxiliary/cross_crate_debuginfo_type_uniquing.rs (100%) rename {src/test => tests}/debuginfo/auxiliary/cross_crate_spans.rs (100%) rename {src/test => tests}/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis (100%) rename {src/test => tests}/debuginfo/auxiliary/dependency-with-embedded-visualizers.py (100%) rename {src/test => tests}/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs (100%) rename {src/test => tests}/debuginfo/auxiliary/issue-13213-aux.rs (100%) rename {src/test => tests}/debuginfo/auxiliary/macro-stepping.rs (100%) rename {src/test => tests}/debuginfo/basic-types-globals-metadata.rs (100%) rename {src/test => tests}/debuginfo/basic-types-globals.rs (100%) rename {src/test => tests}/debuginfo/basic-types-metadata.rs (100%) rename {src/test => tests}/debuginfo/basic-types-mut-globals.rs (100%) rename {src/test => tests}/debuginfo/basic-types.rs (100%) rename {src/test => tests}/debuginfo/borrowed-basic.rs (100%) rename {src/test => tests}/debuginfo/borrowed-c-style-enum.rs (100%) rename {src/test => tests}/debuginfo/borrowed-enum.rs (100%) rename {src/test => tests}/debuginfo/borrowed-struct.rs (100%) rename {src/test => tests}/debuginfo/borrowed-tuple.rs (100%) rename {src/test => tests}/debuginfo/borrowed-unique-basic.rs (100%) rename {src/test => tests}/debuginfo/box.rs (100%) rename {src/test => tests}/debuginfo/boxed-struct.rs (100%) rename {src/test => tests}/debuginfo/by-value-non-immediate-argument.rs (100%) rename {src/test => tests}/debuginfo/by-value-self-argument-in-trait-impl.rs (100%) rename {src/test => tests}/debuginfo/c-style-enum-in-composite.rs (100%) rename {src/test => tests}/debuginfo/c-style-enum.rs (100%) rename {src/test => tests}/debuginfo/captured-fields-1.rs (100%) rename {src/test => tests}/debuginfo/captured-fields-2.rs (100%) rename {src/test => tests}/debuginfo/closure-in-generic-function.rs (100%) rename {src/test => tests}/debuginfo/collapse-debuginfo-no-attr-flag.rs (100%) rename {src/test => tests}/debuginfo/collapse-debuginfo-no-attr.rs (100%) rename {src/test => tests}/debuginfo/collapse-debuginfo-with-attr-flag.rs (100%) rename {src/test => tests}/debuginfo/collapse-debuginfo-with-attr.rs (100%) rename {src/test => tests}/debuginfo/constant-debug-locs.rs (100%) rename {src/test => tests}/debuginfo/constant-in-match-pattern.rs (100%) rename {src/test => tests}/debuginfo/cross-crate-spans.rs (100%) rename {src/test => tests}/debuginfo/cross-crate-type-uniquing.rs (100%) rename {src/test => tests}/debuginfo/destructured-fn-argument.rs (100%) rename {src/test => tests}/debuginfo/destructured-for-loop-variable.rs (100%) rename {src/test => tests}/debuginfo/destructured-local.rs (100%) rename {src/test => tests}/debuginfo/drop-locations.rs (100%) rename {src/test => tests}/debuginfo/duration-type.rs (100%) rename {src/test => tests}/debuginfo/embedded-visualizer-point.natvis (100%) rename {src/test => tests}/debuginfo/embedded-visualizer-point.py (100%) rename {src/test => tests}/debuginfo/embedded-visualizer.natvis (100%) rename {src/test => tests}/debuginfo/embedded-visualizer.py (100%) rename {src/test => tests}/debuginfo/embedded-visualizer.rs (100%) rename {src/test => tests}/debuginfo/empty-string.rs (100%) rename {src/test => tests}/debuginfo/enum-thinlto.rs (100%) rename {src/test => tests}/debuginfo/evec-in-struct.rs (100%) rename {src/test => tests}/debuginfo/extern-c-fn.rs (100%) rename {src/test => tests}/debuginfo/fixed-sized-array.rs (100%) rename {src/test => tests}/debuginfo/function-arg-initialization.rs (100%) rename {src/test => tests}/debuginfo/function-arguments.rs (100%) rename {src/test => tests}/debuginfo/function-call.rs (100%) rename {src/test => tests}/debuginfo/function-names.rs (100%) rename {src/test => tests}/debuginfo/function-prologue-stepping-regular.rs (100%) rename {src/test => tests}/debuginfo/gdb-char.rs (100%) rename {src/test => tests}/debuginfo/gdb-pretty-struct-and-enums.rs (100%) rename {src/test => tests}/debuginfo/generator-locals.rs (100%) rename {src/test => tests}/debuginfo/generator-objects.rs (100%) rename {src/test => tests}/debuginfo/generic-enum-with-different-disr-sizes.rs (100%) rename {src/test => tests}/debuginfo/generic-function.rs (100%) rename {src/test => tests}/debuginfo/generic-functions-nested.rs (100%) rename {src/test => tests}/debuginfo/generic-method-on-generic-struct.rs (100%) rename {src/test => tests}/debuginfo/generic-static-method-on-struct-and-enum.rs (100%) rename {src/test => tests}/debuginfo/generic-struct-style-enum.rs (100%) rename {src/test => tests}/debuginfo/generic-struct.rs (100%) rename {src/test => tests}/debuginfo/generic-tuple-style-enum.rs (100%) rename {src/test => tests}/debuginfo/include_string.rs (100%) rename {src/test => tests}/debuginfo/issue-12886.rs (100%) rename {src/test => tests}/debuginfo/issue-13213.rs (100%) rename {src/test => tests}/debuginfo/issue-14411.rs (100%) rename {src/test => tests}/debuginfo/issue-22656.rs (100%) rename {src/test => tests}/debuginfo/issue-57822.rs (100%) rename {src/test => tests}/debuginfo/issue-7712.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-for-loop.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-if-let.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-if.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-match.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-parameterless-closure.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-stack-closure.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-unconditional-loop.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-unique-closure.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-in-while.rs (100%) rename {src/test => tests}/debuginfo/lexical-scope-with-macro.rs (100%) rename {src/test => tests}/debuginfo/lexical-scopes-in-block-expression.rs (100%) rename {src/test => tests}/debuginfo/limited-debuginfo.rs (100%) rename {src/test => tests}/debuginfo/macro-stepping.inc (100%) rename {src/test => tests}/debuginfo/macro-stepping.rs (100%) rename {src/test => tests}/debuginfo/marker-types.rs (100%) rename {src/test => tests}/debuginfo/method-on-enum.rs (100%) rename {src/test => tests}/debuginfo/method-on-generic-struct.rs (100%) rename {src/test => tests}/debuginfo/method-on-struct.rs (100%) rename {src/test => tests}/debuginfo/method-on-trait.rs (100%) rename {src/test => tests}/debuginfo/method-on-tuple-struct.rs (100%) rename {src/test => tests}/debuginfo/msvc-pretty-enums.rs (100%) rename {src/test => tests}/debuginfo/msvc-scalarpair-params.rs (100%) rename {src/test => tests}/debuginfo/multi-byte-chars.rs (100%) rename {src/test => tests}/debuginfo/multi-cgu.rs (100%) rename {src/test => tests}/debuginfo/multiple-functions-equal-var-names.rs (100%) rename {src/test => tests}/debuginfo/multiple-functions.rs (100%) rename {src/test => tests}/debuginfo/mutable-locs.rs (100%) rename {src/test => tests}/debuginfo/mutex.rs (100%) rename {src/test => tests}/debuginfo/name-shadowing-and-scope-nesting.rs (100%) rename {src/test => tests}/debuginfo/no_mangle-info.rs (100%) rename {src/test => tests}/debuginfo/numeric-types.rs (100%) rename {src/test => tests}/debuginfo/option-like-enum.rs (100%) rename {src/test => tests}/debuginfo/packed-struct-with-destructor.rs (100%) rename {src/test => tests}/debuginfo/packed-struct.rs (100%) rename {src/test => tests}/debuginfo/pretty-huge-vec.rs (100%) rename {src/test => tests}/debuginfo/pretty-slices.rs (100%) rename {src/test => tests}/debuginfo/pretty-std-collections-hash.rs (100%) rename {src/test => tests}/debuginfo/pretty-std-collections.rs (100%) rename {src/test => tests}/debuginfo/pretty-std.rs (100%) rename {src/test => tests}/debuginfo/pretty-uninitialized-vec.rs (100%) rename {src/test => tests}/debuginfo/range-types.rs (100%) rename {src/test => tests}/debuginfo/rc_arc.rs (100%) rename {src/test => tests}/debuginfo/recursive-enum.rs (100%) rename {src/test => tests}/debuginfo/recursive-struct.rs (100%) rename {src/test => tests}/debuginfo/result-types.rs (100%) rename {src/test => tests}/debuginfo/rwlock-read.rs (100%) rename {src/test => tests}/debuginfo/rwlock-write.rs (100%) rename {src/test => tests}/debuginfo/self-in-default-method.rs (100%) rename {src/test => tests}/debuginfo/self-in-generic-default-method.rs (100%) rename {src/test => tests}/debuginfo/shadowed-argument.rs (100%) rename {src/test => tests}/debuginfo/shadowed-variable.rs (100%) rename {src/test => tests}/debuginfo/should-fail.rs (100%) rename {src/test => tests}/debuginfo/simd.rs (100%) rename {src/test => tests}/debuginfo/simple-lexical-scope.rs (100%) rename {src/test => tests}/debuginfo/simple-struct.rs (100%) rename {src/test => tests}/debuginfo/simple-tuple.rs (100%) rename {src/test => tests}/debuginfo/static-method-on-struct-and-enum.rs (100%) rename {src/test => tests}/debuginfo/step-into-match.rs (100%) rename {src/test => tests}/debuginfo/struct-in-enum.rs (100%) rename {src/test => tests}/debuginfo/struct-in-struct.rs (100%) rename {src/test => tests}/debuginfo/struct-namespace.rs (100%) rename {src/test => tests}/debuginfo/struct-style-enum.rs (100%) rename {src/test => tests}/debuginfo/struct-with-destructor.rs (100%) rename {src/test => tests}/debuginfo/text-to-include-1.txt (100%) rename {src/test => tests}/debuginfo/text-to-include-2.txt (100%) rename {src/test => tests}/debuginfo/text-to-include-3.txt (100%) rename {src/test => tests}/debuginfo/thread-names.rs (100%) rename {src/test => tests}/debuginfo/thread.rs (100%) rename {src/test => tests}/debuginfo/trait-pointers.rs (100%) rename {src/test => tests}/debuginfo/tuple-in-struct.rs (100%) rename {src/test => tests}/debuginfo/tuple-in-tuple.rs (100%) rename {src/test => tests}/debuginfo/tuple-struct.rs (100%) rename {src/test => tests}/debuginfo/tuple-style-enum.rs (100%) rename {src/test => tests}/debuginfo/type-names.cdb.js (100%) rename {src/test => tests}/debuginfo/type-names.rs (100%) rename {src/test => tests}/debuginfo/union-smoke.rs (100%) rename {src/test => tests}/debuginfo/unique-enum.rs (100%) rename {src/test => tests}/debuginfo/unit-type.rs (100%) rename {src/test => tests}/debuginfo/unreachable-locals.rs (100%) rename {src/test => tests}/debuginfo/unsized.rs (100%) rename {src/test => tests}/debuginfo/var-captured-in-nested-closure.rs (100%) rename {src/test => tests}/debuginfo/var-captured-in-sendable-closure.rs (100%) rename {src/test => tests}/debuginfo/var-captured-in-stack-closure.rs (100%) rename {src/test => tests}/debuginfo/vec-slices.rs (100%) rename {src/test => tests}/debuginfo/vec.rs (100%) rename {src/test => tests}/incremental/add_private_fn_at_krate_root_cc/auxiliary/point.rs (100%) rename {src/test => tests}/incremental/add_private_fn_at_krate_root_cc/struct_point.rs (100%) rename {src/test => tests}/incremental/async-lifetimes.rs (100%) rename {src/test => tests}/incremental/auxiliary/incremental_proc_macro_aux.rs (100%) rename {src/test => tests}/incremental/auxiliary/issue-49482-macro-def.rs (100%) rename {src/test => tests}/incremental/auxiliary/issue-49482-reexport.rs (100%) rename {src/test => tests}/incremental/auxiliary/issue-54059.rs (100%) rename {src/test => tests}/incremental/auxiliary/issue-79661.rs (100%) rename {src/test => tests}/incremental/auxiliary/issue-79890.rs (100%) rename {src/test => tests}/incremental/auxiliary/rustc-rust-log-aux.rs (100%) rename {src/test => tests}/incremental/cache_file_headers.rs (100%) rename {src/test => tests}/incremental/callee_caller_cross_crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/callee_caller_cross_crate/b.rs (100%) rename {src/test => tests}/incremental/change_add_field/struct_point.rs (100%) rename {src/test => tests}/incremental/change_crate_dep_kind.rs (100%) rename {src/test => tests}/incremental/change_crate_order/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/change_crate_order/auxiliary/b.rs (100%) rename {src/test => tests}/incremental/change_crate_order/main.rs (100%) rename {src/test => tests}/incremental/change_implementation_cross_crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/change_implementation_cross_crate/main.rs (100%) rename {src/test => tests}/incremental/change_name_of_static_in_fn.rs (100%) rename {src/test => tests}/incremental/change_private_fn/struct_point.rs (100%) rename {src/test => tests}/incremental/change_private_fn_cc/auxiliary/point.rs (100%) rename {src/test => tests}/incremental/change_private_fn_cc/struct_point.rs (100%) rename {src/test => tests}/incremental/change_private_impl_method/struct_point.rs (100%) rename {src/test => tests}/incremental/change_private_impl_method_cc/auxiliary/point.rs (100%) rename {src/test => tests}/incremental/change_private_impl_method_cc/struct_point.rs (100%) rename {src/test => tests}/incremental/change_pub_inherent_method_body/struct_point.rs (100%) rename {src/test => tests}/incremental/change_pub_inherent_method_sig/struct_point.rs (100%) rename {src/test => tests}/incremental/change_symbol_export_status.rs (100%) rename {src/test => tests}/incremental/commandline-args.rs (100%) rename {src/test => tests}/incremental/const-generics/hash-tyvid-regression-1.rs (100%) rename {src/test => tests}/incremental/const-generics/hash-tyvid-regression-2.rs (100%) rename {src/test => tests}/incremental/const-generics/hash-tyvid-regression-3.rs (100%) rename {src/test => tests}/incremental/const-generics/hash-tyvid-regression-4.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-61338.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-61516.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-62536.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-64087.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-65623.rs (100%) rename {src/test => tests}/incremental/const-generics/issue-68477.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-1.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-2.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-3.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-82034.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-1.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-3.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-86953.rs (100%) rename {src/test => tests}/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-88022.rs (100%) rename {src/test => tests}/incremental/crate_hash_reorder.rs (100%) rename {src/test => tests}/incremental/cyclic-trait-hierarchy.rs (100%) rename {src/test => tests}/incremental/delayed_span_bug.rs (100%) rename {src/test => tests}/incremental/dirty_clean.rs (100%) rename {src/test => tests}/incremental/extern_static/issue-49153.rs (100%) rename {src/test => tests}/incremental/feature_gate.rs (100%) rename {src/test => tests}/incremental/foreign.rs (100%) rename {src/test => tests}/incremental/hash-module-order.rs (100%) rename {src/test => tests}/incremental/hashes/call_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/closure_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/consts.rs (100%) rename {src/test => tests}/incremental/hashes/enum_constructors.rs (100%) rename {src/test => tests}/incremental/hashes/enum_defs.rs (100%) rename {src/test => tests}/incremental/hashes/exported_vs_not.rs (100%) rename {src/test => tests}/incremental/hashes/extern_mods.rs (100%) rename {src/test => tests}/incremental/hashes/for_loops.rs (100%) rename {src/test => tests}/incremental/hashes/function_interfaces.rs (100%) rename {src/test => tests}/incremental/hashes/if_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/indexing_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/inherent_impls.rs (100%) rename {src/test => tests}/incremental/hashes/inline_asm.rs (100%) rename {src/test => tests}/incremental/hashes/let_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/loop_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/match_expressions.rs (100%) rename {src/test => tests}/incremental/hashes/panic_exprs.rs (100%) rename {src/test => tests}/incremental/hashes/statics.rs (100%) rename {src/test => tests}/incremental/hashes/struct_constructors.rs (100%) rename {src/test => tests}/incremental/hashes/struct_defs.rs (100%) rename {src/test => tests}/incremental/hashes/trait_defs.rs (100%) rename {src/test => tests}/incremental/hashes/trait_impls.rs (100%) rename {src/test => tests}/incremental/hashes/type_defs.rs (100%) rename {src/test => tests}/incremental/hashes/unary_and_binary_exprs.rs (100%) rename {src/test => tests}/incremental/hashes/while_let_loops.rs (100%) rename {src/test => tests}/incremental/hashes/while_loops.rs (100%) rename {src/test => tests}/incremental/hello_world.rs (100%) rename {src/test => tests}/incremental/hygiene/auxiliary/cached_hygiene.rs (100%) rename {src/test => tests}/incremental/hygiene/load_cached_hygiene.rs (100%) rename {src/test => tests}/incremental/ich_method_call_trait_scope.rs (100%) rename {src/test => tests}/incremental/ich_nested_items.rs (100%) rename {src/test => tests}/incremental/ich_resolve_results.rs (100%) rename {src/test => tests}/incremental/incremental_proc_macro.rs (100%) rename {src/test => tests}/incremental/inlined_hir_34991/main.rs (100%) rename {src/test => tests}/incremental/issue-100521-change-struct-name-assocty.rs (100%) rename {src/test => tests}/incremental/issue-101518.rs (100%) rename {src/test => tests}/incremental/issue-35593.rs (100%) rename {src/test => tests}/incremental/issue-38222.rs (100%) rename {src/test => tests}/incremental/issue-39569.rs (100%) rename {src/test => tests}/incremental/issue-39828/auxiliary/generic.rs (100%) rename {src/test => tests}/incremental/issue-39828/issue-39828.rs (100%) rename {src/test => tests}/incremental/issue-42602.rs (100%) rename {src/test => tests}/incremental/issue-49043.rs (100%) rename {src/test => tests}/incremental/issue-49482.rs (100%) rename {src/test => tests}/incremental/issue-49595/auxiliary/lit_a.rs (100%) rename {src/test => tests}/incremental/issue-49595/auxiliary/lit_b.rs (100%) rename {src/test => tests}/incremental/issue-49595/issue-49595.rs (100%) rename {src/test => tests}/incremental/issue-51409.rs (100%) rename {src/test => tests}/incremental/issue-54059.rs (100%) rename {src/test => tests}/incremental/issue-54242.rs (100%) rename {src/test => tests}/incremental/issue-59523-on-implemented-is-not-unused.rs (100%) rename {src/test => tests}/incremental/issue-59524-layout-scalar-valid-range-is-not-unused.rs (100%) rename {src/test => tests}/incremental/issue-60629.rs (100%) rename {src/test => tests}/incremental/issue-61323.rs (100%) rename {src/test => tests}/incremental/issue-61530.rs (100%) rename {src/test => tests}/incremental/issue-62649-path-collisions-happen.rs (100%) rename {src/test => tests}/incremental/issue-69596.rs (100%) rename {src/test => tests}/incremental/issue-72386.rs (100%) rename {src/test => tests}/incremental/issue-79661-missing-def-path-hash.rs (100%) rename {src/test => tests}/incremental/issue-79890-imported-crates-changed.rs (100%) rename {src/test => tests}/incremental/issue-80336-invalid-span.rs (100%) rename {src/test => tests}/incremental/issue-80691-bad-eval-cache.rs (100%) rename {src/test => tests}/incremental/issue-82920-predicate-order-miscompile.rs (100%) rename {src/test => tests}/incremental/issue-84252-global-alloc.rs (100%) rename {src/test => tests}/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs (100%) rename {src/test => tests}/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs (100%) rename {src/test => tests}/incremental/issue-85197-invalid-span/auxiliary/respan.rs (100%) rename {src/test => tests}/incremental/issue-85197-invalid-span/invalid_span_main.rs (100%) rename {src/test => tests}/incremental/issue-85360-eval-obligation-ice.rs (100%) rename {src/test => tests}/incremental/issue-86753.rs (100%) rename {src/test => tests}/incremental/issue-92163-missing-sourcefile/auxiliary/first_crate.rs (100%) rename {src/test => tests}/incremental/issue-92163-missing-sourcefile/auxiliary/second_crate.rs (100%) rename {src/test => tests}/incremental/issue-92163-missing-sourcefile/issue_92163_main.rs (100%) rename {src/test => tests}/incremental/issue-92987-provisional-dep-node.rs (100%) rename {src/test => tests}/incremental/issue-96319-coinductive-cycle.rs (100%) rename {src/test => tests}/incremental/krate-inherent.rs (100%) rename {src/test => tests}/incremental/krate-inlined.rs (100%) rename {src/test => tests}/incremental/krate_reassign_34991/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/krate_reassign_34991/main.rs (100%) rename {src/test => tests}/incremental/link_order/auxiliary/my_lib.rs (100%) rename {src/test => tests}/incremental/link_order/main.rs (100%) rename {src/test => tests}/incremental/lto-in-linker.rs (100%) rename {src/test => tests}/incremental/lto.rs (100%) rename {src/test => tests}/incremental/macro_export.rs (100%) rename {src/test => tests}/incremental/mir-opt.rs (100%) rename {src/test => tests}/incremental/no_mangle.rs (100%) rename {src/test => tests}/incremental/remapped_paths_cc/auxiliary/extern_crate.rs (100%) rename {src/test => tests}/incremental/remapped_paths_cc/main.rs (100%) rename {src/test => tests}/incremental/remove-private-item-cross-crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/remove-private-item-cross-crate/main.rs (100%) rename {src/test => tests}/incremental/remove_crate/auxiliary/extern_crate.rs (100%) rename {src/test => tests}/incremental/remove_crate/main.rs (100%) rename {src/test => tests}/incremental/remove_source_file/auxiliary/mod.rs (100%) rename {src/test => tests}/incremental/remove_source_file/main.rs (100%) rename {src/test => tests}/incremental/reorder_vtable.rs (100%) rename {src/test => tests}/incremental/rlib-lto.rs (100%) rename {src/test => tests}/incremental/rlib_cross_crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/rlib_cross_crate/b.rs (100%) rename {src/test => tests}/incremental/rustc-rust-log.rs (100%) rename {src/test => tests}/incremental/source_loc_macros.rs (100%) rename {src/test => tests}/incremental/span_hash_stable/auxiliary/mod.rs (100%) rename {src/test => tests}/incremental/span_hash_stable/auxiliary/sub1.rs (100%) rename {src/test => tests}/incremental/span_hash_stable/auxiliary/sub2.rs (100%) rename {src/test => tests}/incremental/span_hash_stable/main.rs (100%) rename {src/test => tests}/incremental/spans_in_type_debuginfo.rs (100%) rename {src/test => tests}/incremental/spans_significant_w_debuginfo.rs (100%) rename {src/test => tests}/incremental/spans_significant_w_panic.rs (100%) rename {src/test => tests}/incremental/spike-neg1.rs (100%) rename {src/test => tests}/incremental/spike-neg2.rs (100%) rename {src/test => tests}/incremental/spike.rs (100%) rename {src/test => tests}/incremental/split_debuginfo_cached.rs (100%) rename {src/test => tests}/incremental/split_debuginfo_mode.rs (100%) rename {src/test => tests}/incremental/static_cycle/b.rs (100%) rename {src/test => tests}/incremental/static_refering_to_other_static/issue-49081.rs (100%) rename {src/test => tests}/incremental/static_refering_to_other_static2/issue.rs (100%) rename {src/test => tests}/incremental/static_refering_to_other_static3/issue.rs (100%) rename {src/test => tests}/incremental/static_stable_hash/issue-49301.rs (100%) rename {src/test => tests}/incremental/string_constant.rs (100%) rename {src/test => tests}/incremental/struct_add_field.rs (100%) rename {src/test => tests}/incremental/struct_change_field_name.rs (100%) rename {src/test => tests}/incremental/struct_change_field_type.rs (100%) rename {src/test => tests}/incremental/struct_change_field_type_cross_crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/struct_change_field_type_cross_crate/b.rs (100%) rename {src/test => tests}/incremental/struct_change_nothing.rs (100%) rename {src/test => tests}/incremental/struct_remove_field.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_invalidated_via_import.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_invalidated_when_export_added.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_invalidated_when_export_removed.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_invalidated_when_import_added.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_invalidated_when_import_removed.rs (100%) rename {src/test => tests}/incremental/thinlto/cgu_keeps_identical_fn.rs (100%) rename {src/test => tests}/incremental/thinlto/independent_cgus_dont_affect_each_other.rs (100%) rename {src/test => tests}/incremental/type_alias_cross_crate/auxiliary/a.rs (100%) rename {src/test => tests}/incremental/type_alias_cross_crate/b.rs (100%) rename {src/test => tests}/incremental/unchecked_dirty_clean.rs (100%) rename {src/test => tests}/incremental/warnings-reemitted.rs (100%) rename {src/test => tests}/mir-opt/76803_regression.encode.SimplifyBranchSame.diff (100%) rename {src/test => tests}/mir-opt/76803_regression.rs (100%) rename {src/test => tests}/mir-opt/README.md (100%) rename {src/test => tests}/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/address_of.rs (100%) rename {src/test => tests}/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/array_index_is_temporary.rs (100%) rename {src/test => tests}/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir (100%) rename {src/test => tests}/mir-opt/asm_unwind_panic_abort.rs (100%) rename {src/test => tests}/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/basic_assignment.rs (100%) rename {src/test => tests}/mir-opt/bool_compare.opt1.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/bool_compare.opt2.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/bool_compare.opt3.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/bool_compare.opt4.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/bool_compare.rs (100%) rename {src/test => tests}/mir-opt/box_expr.main.ElaborateDrops.before.mir (100%) rename {src/test => tests}/mir-opt/box_expr.rs (100%) rename {src/test => tests}/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/arbitrary_let.rs (100%) rename {src/test => tests}/mir-opt/building/custom/consts.consts.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/consts.rs (100%) rename {src/test => tests}/mir-opt/building/custom/consts.statics.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/enums.rs (100%) rename {src/test => tests}/mir-opt/building/custom/enums.set_discr.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/enums.set_discr_repr.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/enums.switch_bool.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/enums.switch_option.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/enums.switch_option_repr.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.rs (100%) rename {src/test => tests}/mir-opt/building/custom/projections.set.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.simple_index.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.tuples.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.unions.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.unwrap.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/projections.unwrap_deref.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/references.immut_ref.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/references.mut_ref.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/references.raw_pointer.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/references.rs (100%) rename {src/test => tests}/mir-opt/building/custom/simple_assign.rs (100%) rename {src/test => tests}/mir-opt/building/custom/simple_assign.simple.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.direct_call.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.drop_first.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.drop_second.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.indirect_call.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/custom/terminators.rs (100%) rename {src/test => tests}/mir-opt/building/enum_cast.bar.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/enum_cast.boo.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/enum_cast.droppy.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/enum_cast.foo.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/enum_cast.rs (100%) rename {src/test => tests}/mir-opt/building/issue_101867.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/issue_101867.rs (100%) rename {src/test => tests}/mir-opt/building/issue_49232.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/issue_49232.rs (100%) rename {src/test => tests}/mir-opt/building/match_false_edges.full_tested_match.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/match_false_edges.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/match_false_edges.rs (100%) rename {src/test => tests}/mir-opt/building/receiver_ptr_mutability.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/receiver_ptr_mutability.rs (100%) rename {src/test => tests}/mir-opt/building/simple_match.match_bool.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/simple_match.rs (100%) rename {src/test => tests}/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/storage_live_dead_in_statics.rs (100%) rename {src/test => tests}/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir (100%) rename {src/test => tests}/mir-opt/building/uniform_array_move_out.rs (100%) rename {src/test => tests}/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/byte_slice.rs (100%) rename {src/test => tests}/mir-opt/combine_array_len.norm2.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/combine_array_len.rs (100%) rename {src/test => tests}/mir-opt/combine_clone_of_primitives.rs (100%) rename {src/test => tests}/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/const_allocation.main.ConstProp.after.32bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation.main.ConstProp.after.64bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation.rs (100%) rename {src/test => tests}/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation2.rs (100%) rename {src/test => tests}/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir (100%) rename {src/test => tests}/mir-opt/const_allocation3.rs (100%) rename {src/test => tests}/mir-opt/const_debuginfo.main.ConstDebugInfo.diff (100%) rename {src/test => tests}/mir-opt/const_debuginfo.rs (100%) rename {src/test => tests}/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff (100%) rename {src/test => tests}/mir-opt/const_goto.rs (100%) rename {src/test => tests}/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff (100%) rename {src/test => tests}/mir-opt/const_goto_const_eval_fail.rs (100%) rename {src/test => tests}/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff (100%) rename {src/test => tests}/mir-opt/const_goto_storage.rs (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.BOP.built.after.mir (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff (100%) rename {src/test => tests}/mir-opt/const_promotion_extern_static.rs (100%) rename {src/test => tests}/mir-opt/const_prop/aggregate.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/aggregate.main.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/const_prop/aggregate.rs (100%) rename {src/test => tests}/mir-opt/const_prop/array_index.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/array_index.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/array_index.rs (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_div_by_zero.rs (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_mod_by_zero.rs (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.rs (100%) rename {src/test => tests}/mir-opt/const_prop/boolean_identities.rs (100%) rename {src/test => tests}/mir-opt/const_prop/boolean_identities.test.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/boxes.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/boxes.rs (100%) rename {src/test => tests}/mir-opt/const_prop/cast.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/cast.rs (100%) rename {src/test => tests}/mir-opt/const_prop/checked_add.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/checked_add.rs (100%) rename {src/test => tests}/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/const_prop_fails_gracefully.rs (100%) rename {src/test => tests}/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir (100%) rename {src/test => tests}/mir-opt/const_prop/control_flow_simplification.rs (100%) rename {src/test => tests}/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/discriminant.rs (100%) rename {src/test => tests}/mir-opt/const_prop/indirect.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/indirect.rs (100%) rename {src/test => tests}/mir-opt/const_prop/invalid_constant.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/invalid_constant.rs (100%) rename {src/test => tests}/mir-opt/const_prop/issue_66971.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/issue_66971.rs (100%) rename {src/test => tests}/mir-opt/const_prop/issue_67019.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/issue_67019.rs (100%) rename {src/test => tests}/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/large_array_index.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mult_by_zero.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_aggregate_partial_read.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_no_prop.rs (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/mutable_variable_unprop_assign.rs (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.32bit.mir (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.64bit.mir (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.mir (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.mir (100%) rename {src/test => tests}/mir-opt/const_prop/optimizes_into_variable.rs (100%) rename {src/test => tests}/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/read_immutable_static.rs (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref.main.PromoteTemps.diff (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref.rs (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref_project.main.PromoteTemps.diff (100%) rename {src/test => tests}/mir-opt/const_prop/ref_deref_project.rs (100%) rename {src/test => tests}/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/reify_fn_ptr.rs (100%) rename {src/test => tests}/mir-opt/const_prop/repeat.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/repeat.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/repeat.rs (100%) rename {src/test => tests}/mir-opt/const_prop/return_place.add.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/return_place.add.PreCodegen.before.mir (100%) rename {src/test => tests}/mir-opt/const_prop/return_place.rs (100%) rename {src/test => tests}/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/scalar_literal_propagation.rs (100%) rename {src/test => tests}/mir-opt/const_prop/slice_len.main.ConstProp.32bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/slice_len.main.ConstProp.64bit.diff (100%) rename {src/test => tests}/mir-opt/const_prop/slice_len.rs (100%) rename {src/test => tests}/mir-opt/const_prop/switch_int.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.diff (100%) rename {src/test => tests}/mir-opt/const_prop/switch_int.rs (100%) rename {src/test => tests}/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop/tuple_literal_propagation.rs (100%) rename {src/test => tests}/mir-opt/const_prop_miscompile.bar.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop_miscompile.foo.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/const_prop_miscompile.rs (100%) rename {src/test => tests}/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot (100%) rename {src/test => tests}/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot (100%) rename {src/test => tests}/mir-opt/coverage_graphviz.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/cast.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/checked.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/enum.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/enum.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/if.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/inherit_overflow.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/issue_81605.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/ref_without_sb.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/repr_transparent.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/self_assign.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/self_assign_add.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/sibling_ptr.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/struct.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/terminator.rs (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff (100%) rename {src/test => tests}/mir-opt/dataflow-const-prop/tuple.rs (100%) rename {src/test => tests}/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.diff (100%) rename {src/test => tests}/mir-opt/dead-store-elimination/cycle.rs (100%) rename {src/test => tests}/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff (100%) rename {src/test => tests}/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff (100%) rename {src/test => tests}/mir-opt/dead-store-elimination/provenance_soundness.rs (100%) rename {src/test => tests}/mir-opt/deaggregator_test.bar.Deaggregator.diff (100%) rename {src/test => tests}/mir-opt/deaggregator_test.rs (100%) rename {src/test => tests}/mir-opt/deaggregator_test_enum.bar.Deaggregator.diff (100%) rename {src/test => tests}/mir-opt/deaggregator_test_enum.rs (100%) rename {src/test => tests}/mir-opt/deaggregator_test_enum_2.rs (100%) rename {src/test => tests}/mir-opt/deaggregator_test_enum_2.test1.Deaggregator.diff (100%) rename {src/test => tests}/mir-opt/deaggregator_test_multiple.rs (100%) rename {src/test => tests}/mir-opt/deaggregator_test_multiple.test.Deaggregator.diff (100%) rename {src/test => tests}/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff (100%) rename {src/test => tests}/mir-opt/deduplicate_blocks.rs (100%) rename {src/test => tests}/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/deref-patterns/string.rs (100%) rename {src/test => tests}/mir-opt/derefer_complex_case.main.Derefer.diff (100%) rename {src/test => tests}/mir-opt/derefer_complex_case.rs (100%) rename {src/test => tests}/mir-opt/derefer_inline_test.main.Derefer.diff (100%) rename {src/test => tests}/mir-opt/derefer_inline_test.rs (100%) rename {src/test => tests}/mir-opt/derefer_terminator_test.main.Derefer.diff (100%) rename {src/test => tests}/mir-opt/derefer_terminator_test.rs (100%) rename {src/test => tests}/mir-opt/derefer_test.main.Derefer.diff (100%) rename {src/test => tests}/mir-opt/derefer_test.rs (100%) rename {src/test => tests}/mir-opt/derefer_test_multiple.main.Derefer.diff (100%) rename {src/test => tests}/mir-opt/derefer_test_multiple.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/branch.foo.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/branch.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/copy_propagation_arg.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/cycle.main.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/cycle.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.mir (100%) rename {src/test => tests}/mir-opt/dest-prop/dead_stores_79191.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.mir (100%) rename {src/test => tests}/mir-opt/dest-prop/dead_stores_better.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/simple.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/union.main.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/union.rs (100%) rename {src/test => tests}/mir-opt/dest-prop/unreachable.f.DestinationPropagation.diff (100%) rename {src/test => tests}/mir-opt/dest-prop/unreachable.rs (100%) rename {src/test => tests}/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/div_overflow.rs (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch.rs (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_3_element_tuple.rs (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_68867.rs (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_noopt.rs (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff (100%) rename {src/test => tests}/mir-opt/early_otherwise_branch_soundness.rs (100%) rename {src/test => tests}/mir-opt/equal_true.opt.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/equal_true.rs (100%) rename {src/test => tests}/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/exponential_or.rs (100%) rename {src/test => tests}/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir (100%) rename {src/test => tests}/mir-opt/fn_ptr_shim.rs (100%) rename {src/test => tests}/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/funky_arms.rs (100%) rename {src/test => tests}/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir (100%) rename {src/test => tests}/mir-opt/generator_drop_cleanup.rs (100%) rename {src/test => tests}/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir (100%) rename {src/test => tests}/mir-opt/generator_storage_dead_unwind.rs (100%) rename {src/test => tests}/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir (100%) rename {src/test => tests}/mir-opt/generator_tiny.rs (100%) rename {src/test => tests}/mir-opt/graphviz.main.built.after.dot (100%) rename {src/test => tests}/mir-opt/graphviz.rs (100%) rename {src/test => tests}/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/if_condition_int.rs (100%) rename {src/test => tests}/mir-opt/inline/asm_unwind.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/asm_unwind.rs (100%) rename {src/test => tests}/mir-opt/inline/caller_with_trivial_bound.foo.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/caller_with_trivial_bound.rs (100%) rename {src/test => tests}/mir-opt/inline/cycle.f.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/cycle.g.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/cycle.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/cycle.rs (100%) rename {src/test => tests}/mir-opt/inline/dyn_trait.get_query.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/dyn_trait.mk_cycle.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/dyn_trait.rs (100%) rename {src/test => tests}/mir-opt/inline/dyn_trait.try_execute_query.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/exponential_runtime.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/exponential_runtime.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_any_operand.bar.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_any_operand.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_async.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_closure.foo.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_closure.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_closure_borrows_arg.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_closure_captures.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_compatibility.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_cycle.one.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_cycle.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_cycle.two.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_cycle_generic.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_cycle_generic.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_diverging.f.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_diverging.g.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_diverging.h.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_diverging.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_generator.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_generator.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_instruction_set.default.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_instruction_set.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_instruction_set.t32.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_into_box_place.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_into_box_place.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_options.main.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_options.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_retag.bar.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_retag.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_shims.clone.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_shims.drop.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_shims.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_specialization.main.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/inline_specialization.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_trait_method.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_trait_method.test.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/inline_trait_method_2.rs (100%) rename {src/test => tests}/mir-opt/inline/inline_trait_method_2.test2.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_58867_inline_as_ref_as_mut.rs (100%) rename {src/test => tests}/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir (100%) rename {src/test => tests}/mir-opt/inline/issue_76997_inline_scopes_parenting.rs (100%) rename {src/test => tests}/mir-opt/inline/issue_78442.bar.Inline.diff (100%) rename {src/test => tests}/mir-opt/inline/issue_78442.bar.RevealAll.diff (100%) rename {src/test => tests}/mir-opt/inline/issue_78442.rs (100%) rename {src/test => tests}/mir-opt/inline/polymorphic_recursion.rs (100%) rename {src/test => tests}/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff (100%) rename {src/test => tests}/mir-opt/instrument_coverage.main.InstrumentCoverage.diff (100%) rename {src/test => tests}/mir-opt/instrument_coverage.rs (100%) rename {src/test => tests}/mir-opt/issue_101973.inner.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/issue_101973.rs (100%) rename {src/test => tests}/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/issue_38669.rs (100%) rename {src/test => tests}/mir-opt/issue_41110.main.ElaborateDrops.after.mir (100%) rename {src/test => tests}/mir-opt/issue_41110.rs (100%) rename {src/test => tests}/mir-opt/issue_41110.test.ElaborateDrops.after.mir (100%) rename {src/test => tests}/mir-opt/issue_41697.rs (100%) rename {src/test => tests}/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir (100%) rename {src/test => tests}/mir-opt/issue_41888.main.ElaborateDrops.after.mir (100%) rename {src/test => tests}/mir-opt/issue_41888.rs (100%) rename {src/test => tests}/mir-opt/issue_62289.rs (100%) rename {src/test => tests}/mir-opt/issue_62289.test.ElaborateDrops.before.mir (100%) rename {src/test => tests}/mir-opt/issue_72181.bar.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_72181.foo.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_72181.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_72181.rs (100%) rename {src/test => tests}/mir-opt/issue_72181_1.f.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_72181_1.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_72181_1.rs (100%) rename {src/test => tests}/mir-opt/issue_73223.main.SimplifyArmIdentity.diff (100%) rename {src/test => tests}/mir-opt/issue_73223.rs (100%) rename {src/test => tests}/mir-opt/issue_76432.rs (100%) rename {src/test => tests}/mir-opt/issue_76432.test.SimplifyComparisonIntegral.diff (100%) rename {src/test => tests}/mir-opt/issue_78192.f.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/issue_78192.rs (100%) rename {src/test => tests}/mir-opt/issue_91633.bar.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_91633.foo.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_91633.fun.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_91633.hey.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_91633.rs (100%) rename {src/test => tests}/mir-opt/issue_99325.main.built.after.mir (100%) rename {src/test => tests}/mir-opt/issue_99325.rs (100%) rename {src/test => tests}/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/issues/issue_59352.rs (100%) rename {src/test => tests}/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/issues/issue_75439.rs (100%) rename {src/test => tests}/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir (100%) rename {src/test => tests}/mir-opt/loop_test.rs (100%) rename {src/test => tests}/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.diff (100%) rename {src/test => tests}/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.diff (100%) rename {src/test => tests}/mir-opt/lower_array_len.array_len.NormalizeArrayLen.diff (100%) rename {src/test => tests}/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.diff (100%) rename {src/test => tests}/mir-opt/lower_array_len.rs (100%) rename {src/test => tests}/mir-opt/lower_array_len_e2e.array_bound.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_array_len_e2e.array_len.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_array_len_e2e.rs (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.assume.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.forget.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.rs (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.diff (100%) rename {src/test => tests}/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_intrinsics_e2e.f_unit.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/lower_intrinsics_e2e.rs (100%) rename {src/test => tests}/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.diff (100%) rename {src/test => tests}/mir-opt/lower_slice_len.rs (100%) rename {src/test => tests}/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff (100%) rename {src/test => tests}/mir-opt/match_arm_scopes.rs (100%) rename {src/test => tests}/mir-opt/match_test.main.SimplifyCfg-initial.after.mir (100%) rename {src/test => tests}/mir-opt/match_test.rs (100%) rename {src/test => tests}/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/matches_reduce_branches.rs (100%) rename {src/test => tests}/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff (100%) rename {src/test => tests}/mir-opt/matches_u8.rs (100%) rename {src/test => tests}/mir-opt/multiple_return_terminators.rs (100%) rename {src/test => tests}/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff (100%) rename {src/test => tests}/mir-opt/nll/named_lifetimes_basic.rs (100%) rename {src/test => tests}/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir (100%) rename {src/test => tests}/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir (100%) rename {src/test => tests}/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir (100%) rename {src/test => tests}/mir-opt/nll/region_subtyping_basic.rs (100%) rename {src/test => tests}/mir-opt/no_drop_for_inactive_variant.rs (100%) rename {src/test => tests}/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.mir (100%) rename {src/test => tests}/mir-opt/no_spurious_drop_after_call.rs (100%) rename {src/test => tests}/mir-opt/not_equal_false.opt.InstCombine.diff (100%) rename {src/test => tests}/mir-opt/not_equal_false.rs (100%) rename {src/test => tests}/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff (100%) rename {src/test => tests}/mir-opt/nrvo_simple.rs (100%) rename {src/test => tests}/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/packed_struct_drop_aligned.rs (100%) rename {src/test => tests}/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.diff (100%) rename {src/test => tests}/mir-opt/remove_fake_borrows.rs (100%) rename {src/test => tests}/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/remove_never_const.rs (100%) rename {src/test => tests}/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.diff (100%) rename {src/test => tests}/mir-opt/remove_storage_markers.rs (100%) rename {src/test => tests}/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff (100%) rename {src/test => tests}/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff (100%) rename {src/test => tests}/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.diff (100%) rename {src/test => tests}/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff (100%) rename {src/test => tests}/mir-opt/remove_unneeded_drops.rs (100%) rename {src/test => tests}/mir-opt/remove_zsts.get_union.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/remove_zsts.get_union.RemoveZsts.diff (100%) rename {src/test => tests}/mir-opt/remove_zsts.rs (100%) rename {src/test => tests}/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir (100%) rename {src/test => tests}/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/retag.rs (100%) rename {src/test => tests}/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir (100%) rename {src/test => tests}/mir-opt/return_an_array.rs (100%) rename {src/test => tests}/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff (100%) rename {src/test => tests}/mir-opt/separate_const_switch.rs (100%) rename {src/test => tests}/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff (100%) rename {src/test => tests}/mir-opt/simple_option_map_e2e.ezmap.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/simple_option_map_e2e.rs (100%) rename {src/test => tests}/mir-opt/simplify_arm.id_try.SimplifyArmIdentity.diff (100%) rename {src/test => tests}/mir-opt/simplify_arm.id_try.SimplifyBranchSame.diff (100%) rename {src/test => tests}/mir-opt/simplify_arm.rs (100%) rename {src/test => tests}/mir-opt/simplify_arm_identity.rs (100%) rename {src/test => tests}/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff (100%) rename {src/test => tests}/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff (100%) rename {src/test => tests}/mir-opt/simplify_cfg.rs (100%) rename {src/test => tests}/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_if.rs (100%) rename {src/test => tests}/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.rs (100%) rename {src/test => tests}/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals_fixedpoint.rs (100%) rename {src/test => tests}/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals_removes_unused_consts.rs (100%) rename {src/test => tests}/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff (100%) rename {src/test => tests}/mir-opt/simplify_locals_removes_unused_discriminant_reads.rs (100%) rename {src/test => tests}/mir-opt/simplify_match.main.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/simplify_match.rs (100%) rename {src/test => tests}/mir-opt/simplify_try_if_let.rs (100%) rename {src/test => tests}/mir-opt/simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff (100%) rename {src/test => tests}/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir (100%) rename {src/test => tests}/mir-opt/slice_drop_shim.rs (100%) rename {src/test => tests}/mir-opt/spanview_block.main.built.after.html (100%) rename {src/test => tests}/mir-opt/spanview_block.rs (100%) rename {src/test => tests}/mir-opt/spanview_statement.main.built.after.html (100%) rename {src/test => tests}/mir-opt/spanview_statement.rs (100%) rename {src/test => tests}/mir-opt/spanview_terminator.main.built.after.html (100%) rename {src/test => tests}/mir-opt/spanview_terminator.rs (100%) rename {src/test => tests}/mir-opt/sroa.dropping.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/sroa.enums.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/sroa.escaping.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/sroa.flat.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/sroa.rs (100%) rename {src/test => tests}/mir-opt/sroa.structs.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/sroa.unions.ScalarReplacementOfAggregates.diff (100%) rename {src/test => tests}/mir-opt/storage_ranges.main.nll.0.mir (100%) rename {src/test => tests}/mir-opt/storage_ranges.rs (100%) rename {src/test => tests}/mir-opt/tls_access.main.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/tls_access.rs (100%) rename {src/test => tests}/mir-opt/try_identity_e2e.new.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/try_identity_e2e.old.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/try_identity_e2e.rs (100%) rename {src/test => tests}/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir (100%) rename {src/test => tests}/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir (100%) rename {src/test => tests}/mir-opt/uninhabited_enum.rs (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching.rs (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff (100%) rename {src/test => tests}/mir-opt/uninhabited_enum_branching2.rs (100%) rename {src/test => tests}/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff (100%) rename {src/test => tests}/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff (100%) rename {src/test => tests}/mir-opt/uninhabited_fallthrough_elimination.rs (100%) rename {src/test => tests}/mir-opt/unreachable.main.UnreachablePropagation.diff (100%) rename {src/test => tests}/mir-opt/unreachable.rs (100%) rename {src/test => tests}/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff (100%) rename {src/test => tests}/mir-opt/unreachable_diverging.rs (100%) rename {src/test => tests}/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir (100%) rename {src/test => tests}/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir (100%) rename {src/test => tests}/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir (100%) rename {src/test => tests}/mir-opt/unusual_item_types.rs (100%) rename {src/test => tests}/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir (100%) rename {src/test => tests}/mir-opt/while_let_loops.change_loop_body.ConstProp.diff (100%) rename {src/test => tests}/mir-opt/while_let_loops.change_loop_body.PreCodegen.after.mir (100%) rename {src/test => tests}/mir-opt/while_let_loops.rs (100%) rename {src/test => tests}/mir-opt/while_storage.rs (100%) rename {src/test => tests}/mir-opt/while_storage.while_loop.PreCodegen.after.mir (100%) rename {src/test => tests}/pretty/asm.pp (100%) rename {src/test => tests}/pretty/asm.rs (100%) rename {src/test => tests}/pretty/ast-stmt-expr-attr.rs (100%) rename {src/test => tests}/pretty/async.rs (100%) rename {src/test => tests}/pretty/attr-derive.rs (100%) rename {src/test => tests}/pretty/attr-fn-inner.rs (100%) rename {src/test => tests}/pretty/attr-literals.rs (100%) rename {src/test => tests}/pretty/attr-tokens-raw-ident.rs (100%) rename {src/test => tests}/pretty/auto-trait.rs (100%) rename {src/test => tests}/pretty/auxiliary/derive-foo.rs (100%) rename {src/test => tests}/pretty/blank-lines.rs (100%) rename {src/test => tests}/pretty/block-comment-multiple-asterisks.rs (100%) rename {src/test => tests}/pretty/block-comment-trailing-whitespace.rs (100%) rename {src/test => tests}/pretty/block-comment-trailing-whitespace2.rs (100%) rename {src/test => tests}/pretty/block-comment-wchar.pp (100%) rename {src/test => tests}/pretty/block-comment-wchar.rs (100%) rename {src/test => tests}/pretty/block-disambig.rs (100%) rename {src/test => tests}/pretty/cast-lt.pp (100%) rename {src/test => tests}/pretty/cast-lt.rs (100%) rename {src/test => tests}/pretty/closure-reform-pretty.rs (100%) rename {src/test => tests}/pretty/delimited-token-groups.rs (100%) rename {src/test => tests}/pretty/disamb-stmt-expr.rs (100%) rename {src/test => tests}/pretty/do1.rs (100%) rename {src/test => tests}/pretty/doc-comments.rs (100%) rename {src/test => tests}/pretty/dollar-crate.pp (100%) rename {src/test => tests}/pretty/dollar-crate.rs (100%) rename {src/test => tests}/pretty/empty-impl.rs (100%) rename {src/test => tests}/pretty/empty-lines.rs (100%) rename {src/test => tests}/pretty/enum-variant-vis.rs (100%) rename {src/test => tests}/pretty/example1.rs (100%) rename {src/test => tests}/pretty/example2.pp (100%) rename {src/test => tests}/pretty/example2.rs (100%) rename {src/test => tests}/pretty/expanded-and-path-remap-80832.pp (100%) rename {src/test => tests}/pretty/expanded-and-path-remap-80832.rs (100%) rename {src/test => tests}/pretty/fn-return.rs (100%) rename {src/test => tests}/pretty/fn-types.rs (100%) rename {src/test => tests}/pretty/fn-variadic.rs (100%) rename {src/test => tests}/pretty/for-comment.rs (100%) rename {src/test => tests}/pretty/gat-bounds.rs (100%) rename {src/test => tests}/pretty/hir-pretty-loop.pp (100%) rename {src/test => tests}/pretty/hir-pretty-loop.rs (100%) rename {src/test => tests}/pretty/if-attr.rs (100%) rename {src/test => tests}/pretty/import-renames.rs (100%) rename {src/test => tests}/pretty/issue-12590-a.rs (100%) rename {src/test => tests}/pretty/issue-12590-b.rs (100%) rename {src/test => tests}/pretty/issue-12590-c.pp (100%) rename {src/test => tests}/pretty/issue-12590-c.rs (100%) rename {src/test => tests}/pretty/issue-19077.rs (100%) rename {src/test => tests}/pretty/issue-25031.rs (100%) rename {src/test => tests}/pretty/issue-30731.rs (100%) rename {src/test => tests}/pretty/issue-31073.pp (100%) rename {src/test => tests}/pretty/issue-31073.rs (100%) rename {src/test => tests}/pretty/issue-4264.pp (100%) rename {src/test => tests}/pretty/issue-4264.rs (100%) rename {src/test => tests}/pretty/issue-68710-field-attr-proc-mac-lost.rs (100%) rename {src/test => tests}/pretty/issue-73626.rs (100%) rename {src/test => tests}/pretty/issue-74745.rs (100%) rename {src/test => tests}/pretty/issue-85089.pp (100%) rename {src/test => tests}/pretty/issue-85089.rs (100%) rename {src/test => tests}/pretty/let.rs (100%) rename {src/test => tests}/pretty/lifetime.rs (100%) rename {src/test => tests}/pretty/macro.rs (100%) rename {src/test => tests}/pretty/macro_rules.rs (100%) rename {src/test => tests}/pretty/match-block-expr.rs (100%) rename {src/test => tests}/pretty/match-naked-expr-medium.rs (100%) rename {src/test => tests}/pretty/match-naked-expr.rs (100%) rename {src/test => tests}/pretty/nested-item-vis-defaultness.rs (100%) rename {src/test => tests}/pretty/path-type-bounds.rs (100%) rename {src/test => tests}/pretty/qpath-associated-type-bound.rs (100%) rename {src/test => tests}/pretty/raw-address-of.rs (100%) rename {src/test => tests}/pretty/raw-str-nonexpr.rs (100%) rename {src/test => tests}/pretty/stmt_expr_attributes.rs (100%) rename {src/test => tests}/pretty/struct-pattern.rs (100%) rename {src/test => tests}/pretty/struct-tuple.rs (100%) rename {src/test => tests}/pretty/tag-blank-lines.rs (100%) rename {src/test => tests}/pretty/tests-are-sorted.pp (100%) rename {src/test => tests}/pretty/tests-are-sorted.rs (100%) rename {src/test => tests}/pretty/top-level-doc-comments.rs (100%) rename {src/test => tests}/pretty/trait-inner-attr.rs (100%) rename {src/test => tests}/pretty/trait-polarity.rs (100%) rename {src/test => tests}/pretty/trait-safety.rs (100%) rename {src/test => tests}/pretty/unary-op-disambig.rs (100%) rename {src/test => tests}/pretty/use-tree.rs (100%) rename {src/test => tests}/pretty/vec-comments.pp (100%) rename {src/test => tests}/pretty/vec-comments.rs (100%) rename {src/test => tests}/pretty/where-clauses.rs (100%) rename {src/test => tests}/pretty/yeet-expr.rs (100%) rename {src/test => tests}/run-make-fulldeps/a-b-a-linker-guard/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/a-b-a-linker-guard/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/a-b-a-linker-guard/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/alloc-no-oom-handling/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/alloc-no-rc/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/alloc-no-sync/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/allow-non-lint-warnings-cmdline/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/allow-non-lint-warnings-cmdline/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/allow-warnings-cmdline-stability/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/allow-warnings-cmdline-stability/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/allow-warnings-cmdline-stability/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/archive-duplicate-names/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/archive-duplicate-names/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/archive-duplicate-names/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/archive-duplicate-names/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/archive-duplicate-names/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/arguments-non-c-like-enum/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/arguments-non-c-like-enum/nonclike.rs (100%) rename {src/test => tests}/run-make-fulldeps/arguments-non-c-like-enum/test.c (100%) rename {src/test => tests}/run-make-fulldeps/atomic-lock-free/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/atomic-lock-free/atomic_lock_free.rs (100%) rename {src/test => tests}/run-make-fulldeps/bare-outfile/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/bare-outfile/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-dylib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-dylib/cfoo.c (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-dylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-rlib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-rlib/cfoo.c (100%) rename {src/test => tests}/run-make-fulldeps/c-dynamic-rlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-dylib/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-dylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-staticlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-staticlib/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-staticlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-va-list-fn/checkrust.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-link-to-rust-va-list-fn/test.c (100%) rename {src/test => tests}/run-make-fulldeps/c-static-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-static-dylib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-static-dylib/cfoo.c (100%) rename {src/test => tests}/run-make-fulldeps/c-static-dylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-static-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-static-rlib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-static-rlib/cfoo.c (100%) rename {src/test => tests}/run-make-fulldeps/c-static-rlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-panic/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-panic/add.c (100%) rename {src/test => tests}/run-make-fulldeps/c-unwind-abi-catch-panic/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/cat-and-grep-sanity-check/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-dylib-linkage/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-dylib-linkage/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-dylib-linkage/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-dylib-linkage/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-fewer-symbols/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cdylib-fewer-symbols/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/cdylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cdylib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/cdylib/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/cdylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/codegen-options-parsing/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/codegen-options-parsing/dummy.rs (100%) rename {src/test => tests}/run-make-fulldeps/compile-stdin/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths-2/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths-2/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths-2/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths-2/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/d.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/e.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/e2.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/f.rs (100%) rename {src/test => tests}/run-make-fulldeps/compiler-lookup-paths/native.c (100%) rename {src/test => tests}/run-make-fulldeps/compiler-rt-works-on-mingw/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/compiler-rt-works-on-mingw/foo.cpp (100%) rename {src/test => tests}/run-make-fulldeps/compiler-rt-works-on-mingw/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/core-no-fp-fmt-parse/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/crate-data-smoke/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/crate-data-smoke/crate.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-data-smoke/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-data-smoke/rlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-hash-rustc-version/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/crate-hash-rustc-version/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-hash-rustc-version/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-name-priority/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/crate-name-priority/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/crate-name-priority/foo1.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-clang/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-clang/clib.c (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-clang/cmain.c (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-clang/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-clang/rustlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-upstream-rlibs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-upstream-rlibs/staticlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto-upstream-rlibs/upstream.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/cross-lang-lto/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/debug-assertions/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/debug-assertions/debug.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-doesnt-run-much/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-doesnt-run-much/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-spaces/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-spaces/Makefile.foo (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-spaces/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-spaces/foo foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info-spaces/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/Makefile.foo (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/dep-info/lib2.rs (100%) rename {src/test => tests}/run-make-fulldeps/doctests-keep-binaries/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/doctests-keep-binaries/t.rs (100%) rename {src/test => tests}/run-make-fulldeps/duplicate-output-flavors/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/duplicate-output-flavors/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/dylib-chain/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/dylib-chain/m1.rs (100%) rename {src/test => tests}/run-make-fulldeps/dylib-chain/m2.rs (100%) rename {src/test => tests}/run-make-fulldeps/dylib-chain/m3.rs (100%) rename {src/test => tests}/run-make-fulldeps/dylib-chain/m4.rs (100%) rename {src/test => tests}/run-make-fulldeps/emit-stack-sizes/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/emit-stack-sizes/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/emit/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/emit/test-24876.rs (100%) rename {src/test => tests}/run-make-fulldeps/emit/test-26235.rs (100%) rename {src/test => tests}/run-make-fulldeps/error-found-staticlib-instead-crate/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/error-found-staticlib-instead-crate/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/error-found-staticlib-instead-crate/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/error-writing-dependencies/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/error-writing-dependencies/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/exit-code/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/exit-code/compile-error.rs (100%) rename {src/test => tests}/run-make-fulldeps/exit-code/lint-failure.rs (100%) rename {src/test => tests}/run-make-fulldeps/exit-code/success.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-diff-internal-name/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-diff-internal-name/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-diff-internal-name/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-disambiguates/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-disambiguates/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-disambiguates/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-disambiguates/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-disambiguates/d.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/bar-alt.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/gated_unstable.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-fun/rustc.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-pathless/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-pathless/bar-dynamic.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-pathless/bar-static.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-pathless/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-rename-transitive/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-rename-transitive/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-rename-transitive/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-flag-rename-transitive/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-generic/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-generic/test.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-generic/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-generic/testcrate.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-mangle/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-mangle/test.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-mangle/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-reachable/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-reachable/dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-struct-passing-abi/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-struct-passing-abi/test.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-struct-passing-abi/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-extern-types/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-extern-types/ctest.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-extern-types/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-packed-struct/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-packed-struct/test.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-packed-struct/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-union/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-union/ctest.c (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-union/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-fn-with-union/testcrate.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies/foo1.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies/foo2.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies2/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies2/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies2/foo1.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-multiple-copies2/foo2.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-overrides-distribution/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extern-overrides-distribution/libc.rs (100%) rename {src/test => tests}/run-make-fulldeps/extern-overrides-distribution/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/extra-filename-with-temp-outputs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/extra-filename-with-temp-outputs/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/foreign-double-unwind/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/foreign-double-unwind/foo.cpp (100%) rename {src/test => tests}/run-make-fulldeps/foreign-double-unwind/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/foreign-exceptions/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/foreign-exceptions/foo.cpp (100%) rename {src/test => tests}/run-make-fulldeps/foreign-exceptions/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/foreign-rust-exceptions/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/foreign-rust-exceptions/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/foreign-rust-exceptions/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/fpic/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/fpic/hello.rs (100%) rename {src/test => tests}/run-make-fulldeps/glibc-staticlib-args/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/glibc-staticlib-args/library.rs (100%) rename {src/test => tests}/run-make-fulldeps/glibc-staticlib-args/program.c (100%) rename {src/test => tests}/run-make-fulldeps/hir-tree/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/hir-tree/input.rs (100%) rename {src/test => tests}/run-make-fulldeps/hotplug_codegen_backend/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/hotplug_codegen_backend/some_crate.rs (100%) rename {src/test => tests}/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs (100%) rename {src/test => tests}/run-make-fulldeps/include_bytes_deps/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/include_bytes_deps/input.bin (100%) rename {src/test => tests}/run-make-fulldeps/include_bytes_deps/input.md (100%) rename {src/test => tests}/run-make-fulldeps/include_bytes_deps/input.txt (100%) rename {src/test => tests}/run-make-fulldeps/include_bytes_deps/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/incr-add-rust-src-component/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/incr-add-rust-src-component/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/inline-always-many-cgu/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/inline-always-many-cgu/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/interdependent-c-libraries/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/intrinsic-unreachable/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/intrinsic-unreachable/exit-ret.rs (100%) rename {src/test => tests}/run-make-fulldeps/intrinsic-unreachable/exit-unreachable.rs (100%) rename {src/test => tests}/run-make-fulldeps/invalid-library/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/invalid-library/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/invalid-staticlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-11908/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-11908/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-11908/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-14500/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-14500/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-14500/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-14500/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-14698/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-14698/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-15460/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-15460/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-15460/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-15460/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-18943/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-18943/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-19371/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-19371/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-20626/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-20626/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-22131/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-22131/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-24445/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-24445/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-24445/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-25581/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-25581/test.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-25581/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-26006/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-26006/in/libc/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-26006/in/time/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-26092/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-26092/blank.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-28595/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-28595/a.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-28595/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-28595/b.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-28595/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-28766/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-28766/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-28766/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-30063/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-30063/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-33329/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-33329/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-35164/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-35164/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-35164/submodule/mod.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37839/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-37839/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37839/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37839/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37893/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-37893/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37893/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-37893/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-38237/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-38237/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-38237/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-38237/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-40535/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-40535/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-40535/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-40535/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-46239/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-46239/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-47551/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-47551/eh_frame-terminator.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-51671/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-51671/app.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-53964/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-53964/app.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-53964/panic.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-64153/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-64153/downstream.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-64153/upstream.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-69368/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-69368/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-69368/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-69368/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-7349/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-7349/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-83045/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-83045/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-83045/b.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-83045/c.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-84395-lto-embed-bitcode/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-84395-lto-embed-bitcode/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue-97463-abi-param-passing/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue-97463-abi-param-passing/bad.c (100%) rename {src/test => tests}/run-make-fulldeps/issue-97463-abi-param-passing/param_passing.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue64319/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issue64319/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/issue64319/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/issues-41478-43796/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/issues-41478-43796/a.rs (100%) rename {src/test => tests}/run-make-fulldeps/libs-through-symlinks/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/libs-through-symlinks/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/libs-through-symlinks/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/libtest-json/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/libtest-json/f.rs (100%) rename {src/test => tests}/run-make-fulldeps/libtest-json/output-default.json (100%) rename {src/test => tests}/run-make-fulldeps/libtest-json/output-stdout-success.json (100%) rename {src/test => tests}/run-make-fulldeps/libtest-json/validate_json.py (100%) rename {src/test => tests}/run-make-fulldeps/link-arg/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/link-arg/empty.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-args-order/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/link-args-order/empty.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/dep-with-staticlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/dep.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/no-deps.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/return1.c (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/return2.c (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/return3.c (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/with-deps.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-cfg/with-staticlib-deps.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-dedup/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/link-dedup/depa.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-dedup/depb.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-dedup/depc.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-dedup/empty.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-path-order/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/link-path-order/correct.c (100%) rename {src/test => tests}/run-make-fulldeps/link-path-order/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/link-path-order/wrong.c (100%) rename {src/test => tests}/run-make-fulldeps/linkage-attr-on-static/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/linkage-attr-on-static/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/linkage-attr-on-static/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/long-linker-command-lines-cmd-exe/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.bat (100%) rename {src/test => tests}/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/long-linker-command-lines/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/long-linker-command-lines/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/longjmp-across-rust/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/longjmp-across-rust/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/longjmp-across-rust/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/ls-metadata/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/ls-metadata/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-dylib-dep/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-dylib-dep/a_dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-dylib-dep/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-empty/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-empty/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/lib1.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/lib2.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-no-link-whole-rlib/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-readonly-lib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-readonly-lib/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-readonly-lib/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke-c/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke-c/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke-c/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/lto-smoke/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/manual-crate-name/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/manual-crate-name/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/manual-link/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/manual-link/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/manual-link/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/manual-link/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/manual-link/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/crateA1.rs (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/crateA2.rs (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/crateA3.rs (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/crateB.rs (100%) rename {src/test => tests}/run-make-fulldeps/many-crates-but-no-match/crateC.rs (100%) rename {src/test => tests}/run-make-fulldeps/metadata-flag-frobs-symbols/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/metadata-flag-frobs-symbols/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/metadata-flag-frobs-symbols/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/min-global-align/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/min-global-align/min_global_align.rs (100%) rename {src/test => tests}/run-make-fulldeps/mingw-export-call-convention/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/mingw-export-call-convention/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/mismatching-target-triples/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/mismatching-target-triples/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/mismatching-target-triples/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/missing-crate-dependency/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/missing-crate-dependency/crateA.rs (100%) rename {src/test => tests}/run-make-fulldeps/missing-crate-dependency/crateB.rs (100%) rename {src/test => tests}/run-make-fulldeps/missing-crate-dependency/crateC.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-deps/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/mixing-deps/both.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-deps/dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-deps/prog.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/bar1.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/bar2.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/baz2.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-formats/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-libs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/mixing-libs/dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-libs/prog.rs (100%) rename {src/test => tests}/run-make-fulldeps/mixing-libs/rlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/msvc-opt-minsize/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/msvc-opt-minsize/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/multiple-emits/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/multiple-emits/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/no-builtins-lto/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/no-builtins-lto/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/no-builtins-lto/no_builtins.rs (100%) rename {src/test => tests}/run-make-fulldeps/no-duplicate-libs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/no-duplicate-libs/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/no-duplicate-libs/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/no-duplicate-libs/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/no-intermediate-extras/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/no-intermediate-extras/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/obey-crate-type-flag/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/obey-crate-type-flag/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/obtain-borrowck/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/obtain-borrowck/driver.rs (100%) rename {src/test => tests}/run-make-fulldeps/obtain-borrowck/output.stdout (100%) rename {src/test => tests}/run-make-fulldeps/obtain-borrowck/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/output-filename-conflicts-with-directory/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/output-filename-conflicts-with-directory/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/output-filename-overwrites-input/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/output-filename-overwrites-input/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/output-filename-overwrites-input/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/output-type-permutations/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/output-type-permutations/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/output-with-hyphens/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/output-with-hyphens/foo-bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/override-aliased-flags/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/override-aliased-flags/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/panic-impl-transitive/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/panic-impl-transitive/panic-impl-consumer.rs (100%) rename {src/test => tests}/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs (100%) rename {src/test => tests}/run-make-fulldeps/pass-non-c-like-enum-to-c/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pass-non-c-like-enum-to-c/nonclike.rs (100%) rename {src/test => tests}/run-make-fulldeps/pass-non-c-like-enum-to-c/test.c (100%) rename {src/test => tests}/run-make-fulldeps/pgo-branch-weights/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-branch-weights/filecheck-patterns.txt (100%) rename {src/test => tests}/run-make-fulldeps/pgo-branch-weights/interesting.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-branch-weights/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-branch-weights/opaque.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen-lto/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen-lto/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen-no-imp-symbols/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-gen/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-indirect-call-promotion/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-indirect-call-promotion/filecheck-patterns.txt (100%) rename {src/test => tests}/run-make-fulldeps/pgo-indirect-call-promotion/interesting.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-indirect-call-promotion/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-indirect-call-promotion/opaque.rs (100%) rename {src/test => tests}/run-make-fulldeps/pgo-use/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pgo-use/filecheck-patterns.txt (100%) rename {src/test => tests}/run-make-fulldeps/pgo-use/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/pointer-auth-link-with-c/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pointer-auth-link-with-c/test.c (100%) rename {src/test => tests}/run-make-fulldeps/pointer-auth-link-with-c/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/prefer-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/prefer-dylib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/prefer-dylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/prefer-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/prefer-rlib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/prefer-rlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/pretty-expanded/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pretty-expanded/input.rs (100%) rename {src/test => tests}/run-make-fulldeps/pretty-print-to-file/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/pretty-print-to-file/input.pp (100%) rename {src/test => tests}/run-make-fulldeps/pretty-print-to-file/input.rs (100%) rename {src/test => tests}/run-make-fulldeps/print-calling-conventions/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/print-cfg/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/print-target-list/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/profile/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/profile/test.rs (100%) rename {src/test => tests}/run-make-fulldeps/prune-link-args/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/prune-link-args/empty.rs (100%) rename {src/test => tests}/run-make-fulldeps/redundant-libs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/redundant-libs/bar.c (100%) rename {src/test => tests}/run-make-fulldeps/redundant-libs/baz.c (100%) rename {src/test => tests}/run-make-fulldeps/redundant-libs/foo.c (100%) rename {src/test => tests}/run-make-fulldeps/redundant-libs/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/relocation-model/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/relocation-model/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/relro-levels/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/relro-levels/hello.rs (100%) rename {src/test => tests}/run-make-fulldeps/remap-path-prefix/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/remap-path-prefix/auxiliary/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build-2/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build-2/linker.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build-2/reproducible-build-aux.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build-2/reproducible-build.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build/linker.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build/reproducible-build-aux.rs (100%) rename {src/test => tests}/run-make-fulldeps/reproducible-build/reproducible-build.rs (100%) rename {src/test => tests}/run-make-fulldeps/resolve-rename/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/resolve-rename/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/resolve-rename/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/resolve-rename/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum-from-c/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum-from-c/nonclike.rs (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum-from-c/test.c (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum/nonclike.rs (100%) rename {src/test => tests}/run-make-fulldeps/return-non-c-like-enum/test.c (100%) rename {src/test => tests}/run-make-fulldeps/rlib-chain/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rlib-chain/m1.rs (100%) rename {src/test => tests}/run-make-fulldeps/rlib-chain/m2.rs (100%) rename {src/test => tests}/run-make-fulldeps/rlib-chain/m3.rs (100%) rename {src/test => tests}/run-make-fulldeps/rlib-chain/m4.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-determinism/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-determinism/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-determinism/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-error-lines/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-error-lines/input.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-io-error/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-io-error/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-map-file/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-map-file/expected.json (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-map-file/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-map-file/validate_json.py (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-output-path/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-output-path/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-scrape-examples-macros/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-scrape-examples-macros/examples/ex.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-scrape-examples-macros/src/proc.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-target-spec-json-path/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-target-spec-json-path/dummy_core.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-target-spec-json-path/my_crate.rs (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-target-spec-json-path/target.json (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-themes/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/rustdoc-themes/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-cdylib-link/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-cdylib-link/library.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-cdylib-link/program.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-dylib-link/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-dylib-link/library.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-dylib-link/program.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-staticlib-link/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-staticlib-link/library.rs (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-staticlib-link/program.c (100%) rename {src/test => tests}/run-make-fulldeps/sanitizer-staticlib-link/program.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/SameDir.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/SameDir3.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/SubDir/mod.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-fail/krate2.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-rfc2126/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-rfc2126/extern_absolute_paths.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-rfc2126/krate2.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis-rfc2126/validate_json.py (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/SameDir.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/SameDir3.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/SubDir/mod.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/extra-docs.md (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/save-analysis/krate2.rs (100%) rename {src/test => tests}/run-make-fulldeps/separate-link-fail/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/separate-link/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-cci-copies/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-cci-copies/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-inlining/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-inlining/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-separate/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sepcomp-separate/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/instance_provider_a.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/instance_provider_b.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/instance_user_a_rlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/instance_user_b_rlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/instance_user_dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/share-generics-dylib/linked_leaf.rs (100%) rename {src/test => tests}/run-make-fulldeps/simd-ffi/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/simd-ffi/simd.rs (100%) rename {src/test => tests}/run-make-fulldeps/simple-dylib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/simple-dylib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/simple-dylib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/simple-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/simple-rlib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/simple-rlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/split-debuginfo/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/split-debuginfo/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/split-debuginfo/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/split-debuginfo/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/split-debuginfo/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/stable-symbol-names/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/stable-symbol-names/stable-symbol-names1.rs (100%) rename {src/test => tests}/run-make-fulldeps/stable-symbol-names/stable-symbol-names2.rs (100%) rename {src/test => tests}/run-make-fulldeps/static-dylib-by-default/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/static-dylib-by-default/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/static-dylib-by-default/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/static-dylib-by-default/main.c (100%) rename {src/test => tests}/run-make-fulldeps/static-extern-type/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/static-extern-type/define-foo.c (100%) rename {src/test => tests}/run-make-fulldeps/static-extern-type/use-foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/static-unwinding/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/static-unwinding/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/static-unwinding/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/staticlib-blank-lib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/staticlib-blank-lib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/std-core-cycle/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/std-core-cycle/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/std-core-cycle/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/stdin-non-utf8/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/stdin-non-utf8/non-utf8 (100%) rename {src/test => tests}/run-make-fulldeps/suspicious-library/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/suspicious-library/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/suspicious-library/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/a_cdylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/a_proc_macro.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/a_rust_dylib.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/an_executable.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbol-visibility/an_rlib.rs (100%) rename {src/test => tests}/run-make-fulldeps/symbols-include-type-name/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/symbols-include-type-name/lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-extern/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-extern/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-extern/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-extern/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-libraries/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-libraries/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-libraries/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-rlib/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-rlib/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/symlinked-rlib/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/sysroot-crates-are-unstable/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/sysroot-crates-are-unstable/test.py (100%) rename {src/test => tests}/run-make-fulldeps/target-cpu-native/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/target-cpu-native/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/definitely-not-builtin-target.json (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/mismatching-data-layout.json (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/my-awesome-platform.json (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/my-incomplete-platform.json (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/my-invalid-platform.json (100%) rename {src/test => tests}/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json (100%) rename {src/test => tests}/run-make-fulldeps/target-without-atomic-cas/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/test-harness/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/test-harness/test-ignore-cfg.rs (100%) rename {src/test => tests}/run-make-fulldeps/tools.mk (100%) rename {src/test => tests}/run-make-fulldeps/type-mismatch-same-crate-name/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/type-mismatch-same-crate-name/crateA.rs (100%) rename {src/test => tests}/run-make-fulldeps/type-mismatch-same-crate-name/crateB.rs (100%) rename {src/test => tests}/run-make-fulldeps/type-mismatch-same-crate-name/crateC.rs (100%) rename {src/test => tests}/run-make-fulldeps/use-extern-for-plugins/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/use-extern-for-plugins/bar.rs (100%) rename {src/test => tests}/run-make-fulldeps/use-extern-for-plugins/baz.rs (100%) rename {src/test => tests}/run-make-fulldeps/use-extern-for-plugins/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/use-suggestions-rust-2018/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/use-suggestions-rust-2018/ep-nested-lib.rs (100%) rename {src/test => tests}/run-make-fulldeps/use-suggestions-rust-2018/use-suggestions.rs (100%) rename {src/test => tests}/run-make-fulldeps/used-cdylib-macos/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/used-cdylib-macos/dylib_used.rs (100%) rename {src/test => tests}/run-make-fulldeps/used/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/used/used.rs (100%) rename {src/test => tests}/run-make-fulldeps/version/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/volatile-intrinsics/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/volatile-intrinsics/main.rs (100%) rename {src/test => tests}/run-make-fulldeps/weird-output-filenames/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/weird-output-filenames/foo.rs (100%) rename {src/test => tests}/run-make-fulldeps/windows-binary-no-external-deps/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/windows-binary-no-external-deps/hello.rs (100%) rename {src/test => tests}/run-make-fulldeps/windows-spawn/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/windows-spawn/hello.rs (100%) rename {src/test => tests}/run-make-fulldeps/windows-spawn/spawn.rs (100%) rename {src/test => tests}/run-make-fulldeps/windows-subsystem/Makefile (100%) rename {src/test => tests}/run-make-fulldeps/windows-subsystem/console.rs (100%) rename {src/test => tests}/run-make-fulldeps/windows-subsystem/windows.rs (100%) rename {src/test => tests}/run-make/const_fn_mir/Makefile (100%) rename {src/test => tests}/run-make/const_fn_mir/dump.mir (100%) rename {src/test => tests}/run-make/const_fn_mir/main.rs (100%) rename {src/test => tests}/run-make/coverage-llvmir/Makefile (100%) rename {src/test => tests}/run-make/coverage-llvmir/filecheck.testprog.txt (100%) rename {src/test => tests}/run-make/coverage-llvmir/testprog.rs (100%) rename {src/test => tests}/run-make/coverage-reports/Makefile (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.abort.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.assert.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.async.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.async2.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.closure.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.closure_macro.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.closure_macro_async.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.conditions.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.continue.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.dead_code.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.doctest.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.drop_trait.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.generator.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.generics.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.if.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.if_else.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.inline-dead.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.inline.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.inner_items.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.issue-83601.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.issue-84561.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.issue-85461.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.issue-93054.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.lazy_boolean.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.loop_break_value.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.loops_branches.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.match_or_pattern.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.nested_loops.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.no_cov_crate.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.overflow.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.panic_unwind.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.partial_eq.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.simple_loop.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.simple_match.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.tight_inf_loop.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.try_error_result.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.unused.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.unused_mod.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.uses_crate.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.uses_inline_crate.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.while.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.while_early_ret.txt (100%) rename {src/test => tests}/run-make/coverage-reports/expected_show_coverage.yield.txt (100%) rename {src/test => tests}/run-make/coverage-reports/normalize_paths.py (100%) rename {src/test => tests}/run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt (100%) rename {src/test => tests}/run-make/coverage/abort.rs (100%) rename {src/test => tests}/run-make/coverage/assert.rs (100%) rename {src/test => tests}/run-make/coverage/async.rs (100%) rename {src/test => tests}/run-make/coverage/async2.rs (100%) rename {src/test => tests}/run-make/coverage/closure.rs (100%) rename {src/test => tests}/run-make/coverage/closure_macro.rs (100%) rename {src/test => tests}/run-make/coverage/closure_macro_async.rs (100%) rename {src/test => tests}/run-make/coverage/compiletest-ignore-dir (100%) rename {src/test => tests}/run-make/coverage/conditions.rs (100%) rename {src/test => tests}/run-make/coverage/continue.rs (100%) rename {src/test => tests}/run-make/coverage/coverage_tools.mk (100%) rename {src/test => tests}/run-make/coverage/dead_code.rs (100%) rename {src/test => tests}/run-make/coverage/doctest.rs (100%) rename {src/test => tests}/run-make/coverage/drop_trait.rs (100%) rename {src/test => tests}/run-make/coverage/generator.rs (100%) rename {src/test => tests}/run-make/coverage/generics.rs (100%) rename {src/test => tests}/run-make/coverage/if.rs (100%) rename {src/test => tests}/run-make/coverage/if_else.rs (100%) rename {src/test => tests}/run-make/coverage/inline-dead.rs (100%) rename {src/test => tests}/run-make/coverage/inline.rs (100%) rename {src/test => tests}/run-make/coverage/inner_items.rs (100%) rename {src/test => tests}/run-make/coverage/issue-83601.rs (100%) rename {src/test => tests}/run-make/coverage/issue-84561.rs (100%) rename {src/test => tests}/run-make/coverage/issue-85461.rs (100%) rename {src/test => tests}/run-make/coverage/issue-93054.rs (100%) rename {src/test => tests}/run-make/coverage/lazy_boolean.rs (100%) rename {src/test => tests}/run-make/coverage/lib/doctest_crate.rs (100%) rename {src/test => tests}/run-make/coverage/lib/inline_always_with_dead_code.rs (100%) rename {src/test => tests}/run-make/coverage/lib/unused_mod_helper.rs (100%) rename {src/test => tests}/run-make/coverage/lib/used_crate.rs (100%) rename {src/test => tests}/run-make/coverage/lib/used_inline_crate.rs (100%) rename {src/test => tests}/run-make/coverage/loop_break_value.rs (100%) rename {src/test => tests}/run-make/coverage/loops_branches.rs (100%) rename {src/test => tests}/run-make/coverage/match_or_pattern.rs (100%) rename {src/test => tests}/run-make/coverage/nested_loops.rs (100%) rename {src/test => tests}/run-make/coverage/no_cov_crate.rs (100%) rename {src/test => tests}/run-make/coverage/overflow.rs (100%) rename {src/test => tests}/run-make/coverage/panic_unwind.rs (100%) rename {src/test => tests}/run-make/coverage/partial_eq.rs (100%) rename {src/test => tests}/run-make/coverage/simple_loop.rs (100%) rename {src/test => tests}/run-make/coverage/simple_match.rs (100%) rename {src/test => tests}/run-make/coverage/tight_inf_loop.rs (100%) rename {src/test => tests}/run-make/coverage/try_error_result.rs (100%) rename {src/test => tests}/run-make/coverage/unused.rs (100%) rename {src/test => tests}/run-make/coverage/unused_mod.rs (100%) rename {src/test => tests}/run-make/coverage/uses_crate.rs (100%) rename {src/test => tests}/run-make/coverage/uses_inline_crate.rs (100%) rename {src/test => tests}/run-make/coverage/while.rs (100%) rename {src/test => tests}/run-make/coverage/while_early_ret.rs (100%) rename {src/test => tests}/run-make/coverage/yield.rs (100%) rename {src/test => tests}/run-make/dep-graph/Makefile (100%) rename {src/test => tests}/run-make/dep-graph/foo.rs (100%) rename {src/test => tests}/run-make/dump-mono-stats/Makefile (100%) rename {src/test => tests}/run-make/dump-mono-stats/foo.rs (100%) rename {src/test => tests}/run-make/emit-named-files/Makefile (100%) rename {src/test => tests}/run-make/emit-named-files/foo.rs (100%) rename {src/test => tests}/run-make/emit-path-unhashed/Makefile (100%) rename {src/test => tests}/run-make/emit-path-unhashed/foo.rs (100%) rename {src/test => tests}/run-make/emit-shared-files/Makefile (100%) rename {src/test => tests}/run-make/emit-shared-files/x.rs (100%) rename {src/test => tests}/run-make/emit-shared-files/y.css (100%) rename {src/test => tests}/run-make/emit-shared-files/z.css (100%) rename {src/test => tests}/run-make/env-dep-info/Makefile (100%) rename {src/test => tests}/run-make/env-dep-info/macro_def.rs (100%) rename {src/test => tests}/run-make/env-dep-info/macro_use.rs (100%) rename {src/test => tests}/run-make/env-dep-info/main.rs (100%) rename {src/test => tests}/run-make/export-executable-symbols/Makefile (100%) rename {src/test => tests}/run-make/export-executable-symbols/main.rs (100%) rename {src/test => tests}/run-make/fmt-write-bloat/Makefile (100%) rename {src/test => tests}/run-make/fmt-write-bloat/main.rs (100%) rename {src/test => tests}/run-make/git_clone_sha1.sh (100%) rename {src/test => tests}/run-make/incr-foreign-head-span/Makefile (100%) rename {src/test => tests}/run-make/incr-foreign-head-span/first_crate.rs (100%) rename {src/test => tests}/run-make/incr-foreign-head-span/second_crate.rs (100%) rename {src/test => tests}/run-make/incr-prev-body-beyond-eof/Makefile (100%) rename {src/test => tests}/run-make/incr-prev-body-beyond-eof/a.rs (100%) rename {src/test => tests}/run-make/incr-prev-body-beyond-eof/b.rs (100%) rename {src/test => tests}/run-make/incremental-session-fail/Makefile (100%) rename {src/test => tests}/run-make/incremental-session-fail/foo.rs (100%) rename {src/test => tests}/run-make/invalid-so/Makefile (100%) rename {src/test => tests}/run-make/invalid-so/bar.rs (100%) rename {src/test => tests}/run-make/issue-10971-temps-dir/Makefile (100%) rename {src/test => tests}/run-make/issue-36710/Makefile (100%) rename {src/test => tests}/run-make/issue-36710/foo.cpp (100%) rename {src/test => tests}/run-make/issue-36710/foo.rs (100%) rename {src/test => tests}/run-make/issue-47384/Makefile (100%) rename {src/test => tests}/run-make/issue-47384/lib.rs (100%) rename {src/test => tests}/run-make/issue-47384/linker.ld (100%) rename {src/test => tests}/run-make/issue-47384/main.rs (100%) rename {src/test => tests}/run-make/issue-71519/Makefile (100%) rename {src/test => tests}/run-make/issue-71519/main.rs (100%) rename {src/test => tests}/run-make/issue-83112-incr-test-moved-file/Makefile (100%) rename {src/test => tests}/run-make/issue-83112-incr-test-moved-file/main.rs (100%) rename {src/test => tests}/run-make/issue-85019-moved-src-dir/Makefile (100%) rename {src/test => tests}/run-make/issue-85019-moved-src-dir/main.rs (100%) rename {src/test => tests}/run-make/issue-85019-moved-src-dir/my_lib.rs (100%) rename {src/test => tests}/run-make/issue-85401-static-mir/Makefile (100%) rename {src/test => tests}/run-make/issue-85401-static-mir/bar.rs (100%) rename {src/test => tests}/run-make/issue-85401-static-mir/baz.rs (100%) rename {src/test => tests}/run-make/issue-85401-static-mir/foo.rs (100%) rename {src/test => tests}/run-make/issue-85441/Makefile (100%) rename {src/test => tests}/run-make/issue-85441/empty.rs (100%) rename {src/test => tests}/run-make/issue-88756-default-output/Makefile (100%) rename {src/test => tests}/run-make/issue-88756-default-output/README.md (100%) rename {src/test => tests}/run-make/issue-88756-default-output/output-default.stdout (100%) rename {src/test => tests}/run-make/issue-88756-default-output/x.rs (100%) rename {src/test => tests}/run-make/issue-96498/Makefile (100%) rename {src/test => tests}/run-make/issue-96498/foo.rs (100%) rename {src/test => tests}/run-make/libtest-thread-limit/Makefile (100%) rename {src/test => tests}/run-make/libtest-thread-limit/test.rs (100%) rename {src/test => tests}/run-make/llvm-outputs/Makefile (100%) rename {src/test => tests}/run-make/macos-deployment-target/Makefile (100%) rename {src/test => tests}/run-make/macos-deployment-target/with_deployment_target.rs (100%) rename {src/test => tests}/run-make/macos-fat-archive/Makefile (100%) rename {src/test => tests}/run-make/macos-fat-archive/lib.rs (100%) rename {src/test => tests}/run-make/macos-fat-archive/native-library.c (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/Makefile (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/bundled.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/cdylib-bundled.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/cdylib-non-bundled.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/native-staticlib.c (100%) rename {src/test => tests}/run-make/native-link-modifier-bundle/non-bundled.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-linker/Makefile (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-linker/local_native_dep.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-linker/main.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-rustc/Makefile (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-rustc/rust_dep.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-verbatim-rustc/upstream_native_dep.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/Makefile (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/c_static_lib_with_constructor.cpp (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/directly_linked.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/directly_linked_test_minus_whole_archive.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/directly_linked_test_plus_whole_archive.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/indirectly_linked.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/indirectly_linked_via_attr.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/native_lib_in_src.rs (100%) rename {src/test => tests}/run-make/native-link-modifier-whole-archive/rlib_with_cmdline_native_lib.rs (100%) rename {src/test => tests}/run-make/pass-linker-flags-from-dep/Makefile (100%) rename {src/test => tests}/run-make/pass-linker-flags-from-dep/main.rs (100%) rename {src/test => tests}/run-make/pass-linker-flags-from-dep/native_dep_1.rs (100%) rename {src/test => tests}/run-make/pass-linker-flags-from-dep/native_dep_2.rs (100%) rename {src/test => tests}/run-make/pass-linker-flags-from-dep/rust_dep.rs (100%) rename {src/test => tests}/run-make/pass-linker-flags/Makefile (100%) rename {src/test => tests}/run-make/pass-linker-flags/rs.rs (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/extern.c (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/lib.rs (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/output.msvc.txt (100%) rename {src/test => tests}/run-make/raw-dylib-alt-calling-convention/output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-c/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-c/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-c/extern_1.c (100%) rename {src/test => tests}/run-make/raw-dylib-c/extern_2.c (100%) rename {src/test => tests}/run-make/raw-dylib-c/lib.rs (100%) rename {src/test => tests}/run-make/raw-dylib-c/output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/extern.c (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/extern.gnu.def (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/extern.msvc.def (100%) rename {src/test => tests}/run-make/raw-dylib-import-name-type/output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/extern_1.c (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/extern_2.c (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/lib.rs (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/lib_wrapper.rs (100%) rename {src/test => tests}/run-make/raw-dylib-inline-cross-dylib/output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/exporter.c (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/exporter.def (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/lib.rs (100%) rename {src/test => tests}/run-make/raw-dylib-link-ordinal/output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/Makefile (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/driver.rs (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/expected_output.txt (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/exporter-gnu.def (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/exporter-msvc.def (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/exporter.c (100%) rename {src/test => tests}/run-make/raw-dylib-stdcall-ordinal/lib.rs (100%) rename {src/test => tests}/run-make/remap-path-prefix-dwarf/Makefile (100%) rename {src/test => tests}/run-make/remap-path-prefix-dwarf/src/quux.rs (100%) rename {src/test => tests}/run-make/repr128-dwarf/Makefile (100%) rename {src/test => tests}/run-make/repr128-dwarf/lib.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs-2/Makefile (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs-2/main.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs-2/native_dep.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs-2/rust_dep.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/Makefile (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/main.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/native_dep_1.c (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/native_dep_2.c (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/native_dep_3.c (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/rust_dep_local.rs (100%) rename {src/test => tests}/run-make/rlib-format-packed-bundled-libs/rust_dep_up.rs (100%) rename {src/test => tests}/run-make/rustc-macro-dep-files/Makefile (100%) rename {src/test => tests}/run-make/rustc-macro-dep-files/bar.rs (100%) rename {src/test => tests}/run-make/rustc-macro-dep-files/foo.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-invalid-expr/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-invalid-expr/examples/ex.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-invalid-expr/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-multiple/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-multiple/examples/ex.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-multiple/examples/ex2.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-multiple/scrape.mk (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-multiple/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-ordering/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-ordering/examples/ex1.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-ordering/examples/ex2.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-ordering/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-remap/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-remap/examples/ex.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-remap/src/a.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-remap/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-test/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-test/examples/ex.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-test/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-whitespace/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs (100%) rename {src/test => tests}/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-verify-output-files/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-verify-output-files/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-with-out-dir-option/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-with-out-dir-option/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-with-output-option/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-with-output-option/src/lib.rs (100%) rename {src/test => tests}/run-make/rustdoc-with-short-out-dir-option/Makefile (100%) rename {src/test => tests}/run-make/rustdoc-with-short-out-dir-option/src/lib.rs (100%) rename {src/test => tests}/run-make/static-pie/Makefile (100%) rename {src/test => tests}/run-make/static-pie/check_clang_version.sh (100%) rename {src/test => tests}/run-make/static-pie/check_gcc_version.sh (100%) rename {src/test => tests}/run-make/static-pie/test-aslr.rs (100%) rename {src/test => tests}/run-make/test-benches/Makefile (100%) rename {src/test => tests}/run-make/test-benches/smokebench.rs (100%) rename {src/test => tests}/run-make/thumb-none-cortex-m/Makefile (100%) rename {src/test => tests}/run-make/thumb-none-qemu/Makefile (100%) rename {src/test => tests}/run-make/thumb-none-qemu/example/.cargo/config (100%) rename {src/test => tests}/run-make/thumb-none-qemu/example/Cargo.lock (100%) rename {src/test => tests}/run-make/thumb-none-qemu/example/Cargo.toml (100%) rename {src/test => tests}/run-make/thumb-none-qemu/example/memory.x (100%) rename {src/test => tests}/run-make/thumb-none-qemu/example/src/main.rs (100%) rename {src/test => tests}/run-make/thumb-none-qemu/script.sh (100%) rename {src/test => tests}/run-make/track-path-dep-info/Makefile (100%) rename {src/test => tests}/run-make/track-path-dep-info/emojis.txt (100%) rename {src/test => tests}/run-make/track-path-dep-info/macro_def.rs (100%) rename {src/test => tests}/run-make/track-path-dep-info/macro_use.rs (100%) rename {src/test => tests}/run-make/track-pgo-dep-info/Makefile (100%) rename {src/test => tests}/run-make/track-pgo-dep-info/main.rs (100%) rename {src/test => tests}/run-make/translation/Makefile (100%) rename {src/test => tests}/run-make/translation/broken.ftl (100%) rename {src/test => tests}/run-make/translation/missing.ftl (100%) rename {src/test => tests}/run-make/translation/test.rs (100%) rename {src/test => tests}/run-make/translation/working.ftl (100%) rename {src/test => tests}/run-make/unstable-flag-required/Makefile (100%) rename {src/test => tests}/run-make/unstable-flag-required/README.md (100%) rename {src/test => tests}/run-make/unstable-flag-required/output-format-json.stderr (100%) rename {src/test => tests}/run-make/unstable-flag-required/x.rs (100%) rename {src/test => tests}/run-make/valid-print-requests/Makefile (100%) rename {src/test => tests}/run-make/valid-print-requests/valid-print-requests.stderr (100%) rename {src/test => tests}/run-make/wasm-abi/Makefile (100%) rename {src/test => tests}/run-make/wasm-abi/foo.js (100%) rename {src/test => tests}/run-make/wasm-abi/foo.rs (100%) rename {src/test => tests}/run-make/wasm-custom-section/Makefile (100%) rename {src/test => tests}/run-make/wasm-custom-section/bar.rs (100%) rename {src/test => tests}/run-make/wasm-custom-section/foo.js (100%) rename {src/test => tests}/run-make/wasm-custom-section/foo.rs (100%) rename {src/test => tests}/run-make/wasm-custom-sections-opt/Makefile (100%) rename {src/test => tests}/run-make/wasm-custom-sections-opt/foo.js (100%) rename {src/test => tests}/run-make/wasm-custom-sections-opt/foo.rs (100%) rename {src/test => tests}/run-make/wasm-export-all-symbols/Makefile (100%) rename {src/test => tests}/run-make/wasm-export-all-symbols/bar.rs (100%) rename {src/test => tests}/run-make/wasm-export-all-symbols/foo.rs (100%) rename {src/test => tests}/run-make/wasm-export-all-symbols/main.rs (100%) rename {src/test => tests}/run-make/wasm-export-all-symbols/verify.js (100%) rename {src/test => tests}/run-make/wasm-import-module/Makefile (100%) rename {src/test => tests}/run-make/wasm-import-module/bar.rs (100%) rename {src/test => tests}/run-make/wasm-import-module/foo.js (100%) rename {src/test => tests}/run-make/wasm-import-module/foo.rs (100%) rename {src/test => tests}/run-make/wasm-panic-small/Makefile (100%) rename {src/test => tests}/run-make/wasm-panic-small/foo.rs (100%) rename {src/test => tests}/run-make/wasm-spurious-import/Makefile (100%) rename {src/test => tests}/run-make/wasm-spurious-import/main.rs (100%) rename {src/test => tests}/run-make/wasm-spurious-import/verify.js (100%) rename {src/test => tests}/run-make/wasm-stringify-ints-small/Makefile (100%) rename {src/test => tests}/run-make/wasm-stringify-ints-small/foo.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/Makefile (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/bar.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/baz.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/foo.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/log.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-different-module/verify-imports.js (100%) rename {src/test => tests}/run-make/wasm-symbols-not-exported/Makefile (100%) rename {src/test => tests}/run-make/wasm-symbols-not-exported/bar.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-not-exported/foo.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-not-exported/verify-exported-symbols.js (100%) rename {src/test => tests}/run-make/wasm-symbols-not-imported/Makefile (100%) rename {src/test => tests}/run-make/wasm-symbols-not-imported/foo.rs (100%) rename {src/test => tests}/run-make/wasm-symbols-not-imported/verify-no-imports.js (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_global_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_global_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/Cargo.toml (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_asm.s (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_cxx.cpp (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/CMakeLists.txt (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo.c (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_asm.s (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_cxx.cpp (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/src/main.rs (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/jumpto.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/print.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/rust_plus_one_global_asm.checks (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/script.sh (100%) rename {src/test => tests}/run-make/x86_64-fortanix-unknown-sgx-lvi/unw_getcontext.checks (100%) rename {src/test => tests}/run-pass-valgrind/cast-enum-with-dtor.rs (100%) rename {src/test => tests}/run-pass-valgrind/cleanup-auto-borrow-obj.rs (100%) rename {src/test => tests}/run-pass-valgrind/cleanup-stdin.rs (100%) rename {src/test => tests}/run-pass-valgrind/coerce-match-calls.rs (100%) rename {src/test => tests}/run-pass-valgrind/coerce-match.rs (100%) rename {src/test => tests}/run-pass-valgrind/down-with-thread-dtors.rs (100%) rename {src/test => tests}/run-pass-valgrind/dst-dtor-1.rs (100%) rename {src/test => tests}/run-pass-valgrind/dst-dtor-2.rs (100%) rename {src/test => tests}/run-pass-valgrind/dst-dtor-3.rs (100%) rename {src/test => tests}/run-pass-valgrind/dst-dtor-4.rs (100%) rename {src/test => tests}/run-pass-valgrind/exit-flushes.rs (100%) rename {src/test => tests}/run-pass-valgrind/issue-44800.rs (100%) rename {src/test => tests}/run-pass-valgrind/osx-frameworks.rs (100%) rename {src/test => tests}/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call.rs (100%) rename {src/test => tests}/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call2.rs (100%) rename {src/test => tests}/run-pass-valgrind/unsized-locals/by-value-trait-objects.rs (100%) rename {src/test => tests}/run-pass-valgrind/unsized-locals/long-live-the-unsized-temporary.rs (100%) rename {src/test => tests}/rustdoc-gui/README.md (100%) rename {src/test => tests}/rustdoc-gui/anchor-navigable.goml (100%) rename {src/test => tests}/rustdoc-gui/anchors.goml (100%) rename {src/test => tests}/rustdoc-gui/auto-hide-trait-implementations.goml (100%) rename {src/test => tests}/rustdoc-gui/basic-code.goml (100%) rename {src/test => tests}/rustdoc-gui/check-code-blocks-margin.goml (100%) rename {src/test => tests}/rustdoc-gui/check-stab-in-docblock.goml (100%) rename {src/test => tests}/rustdoc-gui/check_info_sign_position.goml (100%) rename {src/test => tests}/rustdoc-gui/code-blocks-overflow.goml (100%) rename {src/test => tests}/rustdoc-gui/code-color.goml (100%) rename {src/test => tests}/rustdoc-gui/code-sidebar-toggle.goml (100%) rename {src/test => tests}/rustdoc-gui/code-tags.goml (100%) rename {src/test => tests}/rustdoc-gui/codeblock-sub.goml (100%) rename {src/test => tests}/rustdoc-gui/codeblock-tooltip.goml (100%) rename {src/test => tests}/rustdoc-gui/cursor.goml (100%) rename {src/test => tests}/rustdoc-gui/default-settings.goml (100%) rename {src/test => tests}/rustdoc-gui/docblock-big-code-mobile.goml (100%) rename {src/test => tests}/rustdoc-gui/docblock-code-block-line-number.goml (100%) rename {src/test => tests}/rustdoc-gui/docblock-details.goml (100%) rename {src/test => tests}/rustdoc-gui/docblock-table-overflow.goml (100%) rename {src/test => tests}/rustdoc-gui/docblock-table.goml (100%) rename {src/test => tests}/rustdoc-gui/duplicate-macro-reexport.goml (100%) rename {src/test => tests}/rustdoc-gui/enum-variants.goml (100%) rename {src/test => tests}/rustdoc-gui/escape-key.goml (100%) rename {src/test => tests}/rustdoc-gui/font-weight.goml (100%) rename {src/test => tests}/rustdoc-gui/hash-item-expansion.goml (100%) rename {src/test => tests}/rustdoc-gui/headers-color.goml (100%) rename {src/test => tests}/rustdoc-gui/headings.goml (100%) rename {src/test => tests}/rustdoc-gui/help-page.goml (100%) rename {src/test => tests}/rustdoc-gui/highlight-colors.goml (100%) rename {src/test => tests}/rustdoc-gui/huge-collection-of-constants.goml (100%) rename {src/test => tests}/rustdoc-gui/huge-logo.goml (100%) rename {src/test => tests}/rustdoc-gui/impl-default-expansion.goml (100%) rename {src/test => tests}/rustdoc-gui/impl-doc.goml (100%) rename {src/test => tests}/rustdoc-gui/implementors.goml (100%) rename {src/test => tests}/rustdoc-gui/item-decl-colors.goml (100%) rename {src/test => tests}/rustdoc-gui/item-info-alignment.goml (100%) rename {src/test => tests}/rustdoc-gui/item-info-overflow.goml (100%) rename {src/test => tests}/rustdoc-gui/item-info.goml (100%) rename {src/test => tests}/rustdoc-gui/item-summary-table.goml (100%) rename {src/test => tests}/rustdoc-gui/javascript-disabled.goml (100%) rename {src/test => tests}/rustdoc-gui/jump-to-def-background.goml (100%) rename {src/test => tests}/rustdoc-gui/label-next-to-symbol.goml (100%) rename {src/test => tests}/rustdoc-gui/links-color.goml (100%) rename {src/test => tests}/rustdoc-gui/list_code_block.goml (100%) rename {src/test => tests}/rustdoc-gui/method-margins.goml (100%) rename {src/test => tests}/rustdoc-gui/mobile.goml (100%) rename {src/test => tests}/rustdoc-gui/module-items-font.goml (100%) rename {src/test => tests}/rustdoc-gui/no-docblock.goml (100%) rename {src/test => tests}/rustdoc-gui/notable-trait.goml (100%) rename {src/test => tests}/rustdoc-gui/overflow-tooltip-information.goml (100%) rename {src/test => tests}/rustdoc-gui/pocket-menu.goml (100%) rename {src/test => tests}/rustdoc-gui/run-on-hover.goml (100%) rename {src/test => tests}/rustdoc-gui/rust-logo.goml (100%) rename {src/test => tests}/rustdoc-gui/scrape-examples-button-focus.goml (100%) rename {src/test => tests}/rustdoc-gui/scrape-examples-color.goml (100%) rename {src/test => tests}/rustdoc-gui/scrape-examples-fonts.goml (100%) rename {src/test => tests}/rustdoc-gui/scrape-examples-layout.goml (100%) rename {src/test => tests}/rustdoc-gui/scrape-examples-toggle.goml (100%) rename {src/test => tests}/rustdoc-gui/search-filter.goml (100%) rename {src/test => tests}/rustdoc-gui/search-form-elements.goml (100%) rename {src/test => tests}/rustdoc-gui/search-input-mobile.goml (100%) rename {src/test => tests}/rustdoc-gui/search-keyboard.goml (100%) rename {src/test => tests}/rustdoc-gui/search-no-result.goml (100%) rename {src/test => tests}/rustdoc-gui/search-reexport.goml (100%) rename {src/test => tests}/rustdoc-gui/search-result-color.goml (100%) rename {src/test => tests}/rustdoc-gui/search-result-description.goml (100%) rename {src/test => tests}/rustdoc-gui/search-result-display.goml (100%) rename {src/test => tests}/rustdoc-gui/search-result-go-to-first.goml (100%) rename {src/test => tests}/rustdoc-gui/search-result-keyword.goml (100%) rename {src/test => tests}/rustdoc-gui/search-tab-change-title-fn-sig.goml (100%) rename {src/test => tests}/rustdoc-gui/search-tab.goml (100%) rename {src/test => tests}/rustdoc-gui/settings.goml (100%) rename {src/test => tests}/rustdoc-gui/shortcuts.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-links-color.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-macro-reexport.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-mobile-scroll.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-mobile.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-source-code-display.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar-source-code.goml (100%) rename {src/test => tests}/rustdoc-gui/sidebar.goml (100%) rename {src/test => tests}/rustdoc-gui/source-anchor-scroll.goml (100%) rename {src/test => tests}/rustdoc-gui/source-code-page.goml (100%) rename {src/test => tests}/rustdoc-gui/src-font-size.goml (100%) rename {src/test => tests}/rustdoc-gui/src/huge_logo/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/huge_logo/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/huge_logo/src/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/another_folder/mod.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/another_folder/sub_mod/mod.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/another_mod/mod.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/http/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/http/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/implementors/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/implementors/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/implementors/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/lib2/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/link_to_definition/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/link_to_definition/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/link_to_definition/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-1.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-2.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-3.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-4.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-5.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-6.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check-many-7.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/examples/check.rs (100%) rename {src/test => tests}/rustdoc-gui/src/scrape_examples/src/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/settings/.cargo/config.toml (100%) rename {src/test => tests}/rustdoc-gui/src/settings/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/settings/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/settings/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/staged_api/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/staged_api/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/staged_api/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/test_docs/Cargo.lock (100%) rename {src/test => tests}/rustdoc-gui/src/test_docs/Cargo.toml (100%) rename {src/test => tests}/rustdoc-gui/src/test_docs/build.rs (100%) rename {src/test => tests}/rustdoc-gui/src/test_docs/lib.rs (100%) rename {src/test => tests}/rustdoc-gui/src/test_docs/macros.rs (100%) rename {src/test => tests}/rustdoc-gui/stab-badge.goml (100%) rename {src/test => tests}/rustdoc-gui/struct-fields.goml (100%) rename {src/test => tests}/rustdoc-gui/target.goml (100%) rename {src/test => tests}/rustdoc-gui/theme-change.goml (100%) rename {src/test => tests}/rustdoc-gui/theme-in-history.goml (100%) rename {src/test => tests}/rustdoc-gui/toggle-click-deadspace.goml (100%) rename {src/test => tests}/rustdoc-gui/toggle-docs-mobile.goml (100%) rename {src/test => tests}/rustdoc-gui/toggle-docs.goml (100%) rename {src/test => tests}/rustdoc-gui/toggle-implementors.goml (100%) rename {src/test => tests}/rustdoc-gui/toggled-open-implementations.goml (100%) rename {src/test => tests}/rustdoc-gui/trait-sidebar-item-order.goml (100%) rename {src/test => tests}/rustdoc-gui/type-declation-overflow.goml (100%) rename {src/test => tests}/rustdoc-gui/unsafe-fn.goml (100%) rename {src/test => tests}/rustdoc-gui/where-whitespace.goml (100%) rename {src/test => tests}/rustdoc-js-std/alias-1.js (100%) rename {src/test => tests}/rustdoc-js-std/alias-2.js (100%) rename {src/test => tests}/rustdoc-js-std/alias-3.js (100%) rename {src/test => tests}/rustdoc-js-std/alias-4.js (100%) rename {src/test => tests}/rustdoc-js-std/alias.js (100%) rename {src/test => tests}/rustdoc-js-std/asrawfd.js (100%) rename {src/test => tests}/rustdoc-js-std/basic.js (100%) rename {src/test => tests}/rustdoc-js-std/deduplication.js (100%) rename {src/test => tests}/rustdoc-js-std/enum-option.js (100%) rename {src/test => tests}/rustdoc-js-std/filter-crate.js (100%) rename {src/test => tests}/rustdoc-js-std/fn-forget.js (100%) rename {src/test => tests}/rustdoc-js-std/from_u.js (100%) rename {src/test => tests}/rustdoc-js-std/keyword.js (100%) rename {src/test => tests}/rustdoc-js-std/macro-check.js (100%) rename {src/test => tests}/rustdoc-js-std/macro-print.js (100%) rename {src/test => tests}/rustdoc-js-std/never.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-errors.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-filter.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-generics.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-ident.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-literal.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-paths.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-quote.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-returned.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-separators.js (100%) rename {src/test => tests}/rustdoc-js-std/parser-weird-queries.js (100%) rename {src/test => tests}/rustdoc-js-std/path-ordering.js (100%) rename {src/test => tests}/rustdoc-js-std/primitive.js (100%) rename {src/test => tests}/rustdoc-js-std/quoted.js (100%) rename {src/test => tests}/rustdoc-js-std/return-specific-literal.js (100%) rename {src/test => tests}/rustdoc-js-std/return-specific.js (100%) rename {src/test => tests}/rustdoc-js-std/should-fail.js (100%) rename {src/test => tests}/rustdoc-js-std/string-from_ut.js (100%) rename {src/test => tests}/rustdoc-js-std/struct-vec.js (100%) rename {src/test => tests}/rustdoc-js-std/typed-query.js (100%) rename {src/test => tests}/rustdoc-js-std/vec-new.js (100%) rename {src/test => tests}/rustdoc-js/basic.js (100%) rename {src/test => tests}/rustdoc-js/basic.rs (100%) rename {src/test => tests}/rustdoc-js/doc-alias-filter-out.js (100%) rename {src/test => tests}/rustdoc-js/doc-alias-filter-out.rs (100%) rename {src/test => tests}/rustdoc-js/doc-alias-filter.js (100%) rename {src/test => tests}/rustdoc-js/doc-alias-filter.rs (100%) rename {src/test => tests}/rustdoc-js/doc-alias-whitespace.js (100%) rename {src/test => tests}/rustdoc-js/doc-alias-whitespace.rs (100%) rename {src/test => tests}/rustdoc-js/doc-alias.js (100%) rename {src/test => tests}/rustdoc-js/doc-alias.rs (100%) rename {src/test => tests}/rustdoc-js/exact-match.js (100%) rename {src/test => tests}/rustdoc-js/exact-match.rs (100%) rename {src/test => tests}/rustdoc-js/foreign-type-path.js (100%) rename {src/test => tests}/rustdoc-js/foreign-type-path.rs (100%) rename {src/test => tests}/rustdoc-js/generics-impl.js (100%) rename {src/test => tests}/rustdoc-js/generics-impl.rs (100%) rename {src/test => tests}/rustdoc-js/generics-multi-trait.js (100%) rename {src/test => tests}/rustdoc-js/generics-multi-trait.rs (100%) rename {src/test => tests}/rustdoc-js/generics-trait.js (100%) rename {src/test => tests}/rustdoc-js/generics-trait.rs (100%) rename {src/test => tests}/rustdoc-js/generics.js (100%) rename {src/test => tests}/rustdoc-js/generics.rs (100%) rename {src/test => tests}/rustdoc-js/impl-trait.js (100%) rename {src/test => tests}/rustdoc-js/impl-trait.rs (100%) rename {src/test => tests}/rustdoc-js/module-substring.js (100%) rename {src/test => tests}/rustdoc-js/module-substring.rs (100%) rename {src/test => tests}/rustdoc-js/path-ordering.js (100%) rename {src/test => tests}/rustdoc-js/path-ordering.rs (100%) rename {src/test => tests}/rustdoc-js/primitive.js (100%) rename {src/test => tests}/rustdoc-js/primitive.rs (100%) rename {src/test => tests}/rustdoc-js/prototype.js (100%) rename {src/test => tests}/rustdoc-js/prototype.rs (100%) rename {src/test => tests}/rustdoc-js/raw-pointer.js (100%) rename {src/test => tests}/rustdoc-js/raw-pointer.rs (100%) rename {src/test => tests}/rustdoc-js/reexport.js (100%) rename {src/test => tests}/rustdoc-js/reexport.rs (100%) rename {src/test => tests}/rustdoc-js/search-short-types.js (100%) rename {src/test => tests}/rustdoc-js/search-short-types.rs (100%) rename {src/test => tests}/rustdoc-js/struct-like-variant.js (100%) rename {src/test => tests}/rustdoc-js/struct-like-variant.rs (100%) rename {src/test => tests}/rustdoc-js/substring.js (100%) rename {src/test => tests}/rustdoc-js/substring.rs (100%) rename {src/test => tests}/rustdoc-js/summaries.js (100%) rename {src/test => tests}/rustdoc-js/summaries.rs (100%) rename {src/test => tests}/rustdoc-json/assoc_items.rs (100%) rename {src/test => tests}/rustdoc-json/assoc_type.rs (100%) rename {src/test => tests}/rustdoc-json/blanket_impls.rs (100%) rename {src/test => tests}/rustdoc-json/doc_hidden_failure.rs (100%) rename {src/test => tests}/rustdoc-json/enums/auxiliary/color.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/basic.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/expr.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/limits.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/struct.rs (100%) rename {src/test => tests}/rustdoc-json/enums/discriminant/tuple.rs (100%) rename {src/test => tests}/rustdoc-json/enums/doc_link_to_foreign_variant.rs (100%) rename {src/test => tests}/rustdoc-json/enums/field_hidden.rs (100%) rename {src/test => tests}/rustdoc-json/enums/kind.rs (100%) rename {src/test => tests}/rustdoc-json/enums/struct_field_hidden.rs (100%) rename {src/test => tests}/rustdoc-json/enums/tuple_fields_hidden.rs (100%) rename {src/test => tests}/rustdoc-json/enums/use_glob.rs (100%) rename {src/test => tests}/rustdoc-json/enums/use_variant.rs (100%) rename {src/test => tests}/rustdoc-json/enums/use_variant_foreign.rs (100%) rename {src/test => tests}/rustdoc-json/enums/variant_struct.rs (100%) rename {src/test => tests}/rustdoc-json/enums/variant_tuple_struct.rs (100%) rename {src/test => tests}/rustdoc-json/fn_pointer/abi.rs (100%) rename {src/test => tests}/rustdoc-json/fn_pointer/generics.rs (100%) rename {src/test => tests}/rustdoc-json/fn_pointer/qualifiers.rs (100%) rename {src/test => tests}/rustdoc-json/fns/abi.rs (100%) rename {src/test => tests}/rustdoc-json/fns/async_return.rs (100%) rename {src/test => tests}/rustdoc-json/fns/generic_args.rs (100%) rename {src/test => tests}/rustdoc-json/fns/generic_returns.rs (100%) rename {src/test => tests}/rustdoc-json/fns/generics.rs (100%) rename {src/test => tests}/rustdoc-json/fns/pattern_arg.rs (100%) rename {src/test => tests}/rustdoc-json/fns/qualifiers.rs (100%) rename {src/test => tests}/rustdoc-json/fns/return_type_alias.rs (100%) rename {src/test => tests}/rustdoc-json/generic-associated-types/gats.rs (100%) rename {src/test => tests}/rustdoc-json/generic_impl.rs (100%) rename {src/test => tests}/rustdoc-json/glob_import.rs (100%) rename {src/test => tests}/rustdoc-json/impls/auto.rs (100%) rename {src/test => tests}/rustdoc-json/impls/auxiliary/foreign_struct.rs (100%) rename {src/test => tests}/rustdoc-json/impls/auxiliary/foreign_trait.rs (100%) rename {src/test => tests}/rustdoc-json/impls/blanket_with_local.rs (100%) rename {src/test => tests}/rustdoc-json/impls/foreign_for_local.rs (100%) rename {src/test => tests}/rustdoc-json/impls/import_from_private.rs (100%) rename {src/test => tests}/rustdoc-json/impls/local_for_foreign.rs (100%) rename {src/test => tests}/rustdoc-json/impls/local_for_local.rs (100%) rename {src/test => tests}/rustdoc-json/impls/local_for_local_primitive.rs (100%) rename {src/test => tests}/rustdoc-json/impls/local_for_primitive.rs (100%) rename {src/test => tests}/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs (100%) rename {src/test => tests}/rustdoc-json/intra-doc-links/foreign_variant.rs (100%) rename {src/test => tests}/rustdoc-json/intra-doc-links/non_page.rs (100%) rename {src/test => tests}/rustdoc-json/intra-doc-links/user_written.rs (100%) rename {src/test => tests}/rustdoc-json/keyword.rs (100%) rename {src/test => tests}/rustdoc-json/lifetime/longest.rs (100%) rename {src/test => tests}/rustdoc-json/lifetime/outlives.rs (100%) rename {src/test => tests}/rustdoc-json/methods/abi.rs (100%) rename {src/test => tests}/rustdoc-json/methods/qualifiers.rs (100%) rename {src/test => tests}/rustdoc-json/nested.rs (100%) rename {src/test => tests}/rustdoc-json/output_generics.rs (100%) rename {src/test => tests}/rustdoc-json/primitives/local_primitive.rs (100%) rename {src/test => tests}/rustdoc-json/primitives/primitive_impls.rs (100%) rename {src/test => tests}/rustdoc-json/primitives/primitive_overloading.rs (100%) rename {src/test => tests}/rustdoc-json/primitives/primitive_type.rs (100%) rename {src/test => tests}/rustdoc-json/primitives/use_primitive.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/auxiliary/pub-struct.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/auxiliary/trait_with_docs.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/export_extern_crate_as_self.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/glob_collision.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/glob_empty_mod.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/glob_extern.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/glob_private.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/in_root_and_mod.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/in_root_and_mod_pub.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/macro.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/mod_not_included.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/private_twice_one_inline.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/private_two_names.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/pub_use_doc_hidden.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/reexport_method_from_private_module.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/rename_private.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/rename_public.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/same_type_reexported_more_than_once.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/simple_private.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/simple_public.rs (100%) rename {src/test => tests}/rustdoc-json/reexport/synthesize_trait_with_docs.rs (100%) rename {src/test => tests}/rustdoc-json/return_private.rs (100%) rename {src/test => tests}/rustdoc-json/stripped_modules.rs (100%) rename {src/test => tests}/rustdoc-json/structs/plain_all_pub.rs (100%) rename {src/test => tests}/rustdoc-json/structs/plain_doc_hidden.rs (100%) rename {src/test => tests}/rustdoc-json/structs/plain_empty.rs (100%) rename {src/test => tests}/rustdoc-json/structs/plain_pub_priv.rs (100%) rename {src/test => tests}/rustdoc-json/structs/tuple.rs (100%) rename {src/test => tests}/rustdoc-json/structs/tuple_empty.rs (100%) rename {src/test => tests}/rustdoc-json/structs/tuple_pub_priv.rs (100%) rename {src/test => tests}/rustdoc-json/structs/unit.rs (100%) rename {src/test => tests}/rustdoc-json/structs/with_generics.rs (100%) rename {src/test => tests}/rustdoc-json/structs/with_primitives.rs (100%) rename {src/test => tests}/rustdoc-json/traits/has_body.rs (100%) rename {src/test => tests}/rustdoc-json/traits/implementors.rs (100%) rename {src/test => tests}/rustdoc-json/traits/supertrait.rs (100%) rename {src/test => tests}/rustdoc-json/traits/trait_alias.rs (100%) rename {src/test => tests}/rustdoc-json/traits/uses_extern_trait.rs (100%) rename {src/test => tests}/rustdoc-json/type/dyn.rs (100%) rename {src/test => tests}/rustdoc-json/type/extern.rs (100%) rename {src/test => tests}/rustdoc-json/type/fn_lifetime.rs (100%) rename {src/test => tests}/rustdoc-json/type/generic_default.rs (100%) rename {src/test => tests}/rustdoc-json/type/hrtb.rs (100%) rename {src/test => tests}/rustdoc-json/unions/impl.rs (100%) rename {src/test => tests}/rustdoc-json/unions/union.rs (100%) rename {src/test => tests}/rustdoc-ui/ambiguous-inherent-assoc-ty.rs (100%) rename {src/test => tests}/rustdoc-ui/assoc-item-not-in-scope.rs (100%) rename {src/test => tests}/rustdoc-ui/assoc-item-not-in-scope.stderr (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/empty-fn.rs (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/extern_macros.rs (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/issue-61592.rs (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/module_macro_doc.rs (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/overflow.rs (100%) rename {src/test => tests}/rustdoc-ui/auxiliary/panic-item.rs (100%) rename {src/test => tests}/rustdoc-ui/bare-urls.fixed (100%) rename {src/test => tests}/rustdoc-ui/bare-urls.rs (100%) rename {src/test => tests}/rustdoc-ui/bare-urls.stderr (100%) rename {src/test => tests}/rustdoc-ui/block-doc-comment.rs (100%) rename {src/test => tests}/rustdoc-ui/block-doc-comment.stdout (100%) rename {src/test => tests}/rustdoc-ui/bounded-hr-lifetime.rs (100%) rename {src/test => tests}/rustdoc-ui/bounded-hr-lifetime.stderr (100%) rename {src/test => tests}/rustdoc-ui/c-help.rs (100%) rename {src/test => tests}/rustdoc-ui/c-help.stdout (100%) rename {src/test => tests}/rustdoc-ui/cfg-test.rs (100%) rename {src/test => tests}/rustdoc-ui/cfg-test.stdout (100%) rename {src/test => tests}/rustdoc-ui/check-attr-test.rs (100%) rename {src/test => tests}/rustdoc-ui/check-attr-test.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/check-attr.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-cfg-test.rs (100%) rename {src/test => tests}/rustdoc-ui/check-cfg-test.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-cfg-test.stdout (100%) rename {src/test => tests}/rustdoc-ui/check-cfg-unstable.rs (100%) rename {src/test => tests}/rustdoc-ui/check-cfg-unstable.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-cfg.rs (100%) rename {src/test => tests}/rustdoc-ui/check-cfg.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-doc-alias-attr-location.rs (100%) rename {src/test => tests}/rustdoc-ui/check-doc-alias-attr-location.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-doc-alias-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/check-doc-alias-attr.stderr (100%) rename {src/test => tests}/rustdoc-ui/check-fail.rs (100%) rename {src/test => tests}/rustdoc-ui/check-fail.stderr (100%) rename {src/test => tests}/rustdoc-ui/check.rs (100%) rename {src/test => tests}/rustdoc-ui/check.stderr (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile-badutf8.args (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile-badutf8.rs (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile-badutf8.stderr (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile-missing.rs (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile-missing.stderr (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile.args (100%) rename {src/test => tests}/rustdoc-ui/commandline-argfile.rs (100%) rename {src/test => tests}/rustdoc-ui/const-evalutation-ice.rs (100%) rename {src/test => tests}/rustdoc-ui/const-evalutation-ice.stderr (100%) rename {src/test => tests}/rustdoc-ui/coverage/allow_missing_docs.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/allow_missing_docs.stderr (100%) rename {src/test => tests}/rustdoc-ui/coverage/allow_missing_docs.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/basic.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/basic.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/doc-examples-json.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/doc-examples-json.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/doc-examples.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/doc-examples.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/empty.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/empty.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/enum-tuple-documented.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/enum-tuple-documented.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/enum-tuple.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/enum-tuple.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/enums.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/enums.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/exotic.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/exotic.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/html.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/html.stderr (100%) rename {src/test => tests}/rustdoc-ui/coverage/json.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/json.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/private.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/private.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/statics-consts.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/statics-consts.stdout (100%) rename {src/test => tests}/rustdoc-ui/coverage/traits.rs (100%) rename {src/test => tests}/rustdoc-ui/coverage/traits.stdout (100%) rename {src/test => tests}/rustdoc-ui/deny-intra-link-resolution-failure.rs (100%) rename {src/test => tests}/rustdoc-ui/deny-intra-link-resolution-failure.stderr (100%) rename {src/test => tests}/rustdoc-ui/deny-missing-docs-crate.rs (100%) rename {src/test => tests}/rustdoc-ui/deny-missing-docs-crate.stderr (100%) rename {src/test => tests}/rustdoc-ui/deny-missing-docs-macro.rs (100%) rename {src/test => tests}/rustdoc-ui/deny-missing-docs-macro.stderr (100%) rename {src/test => tests}/rustdoc-ui/deprecated-attrs.rs (100%) rename {src/test => tests}/rustdoc-ui/deprecated-attrs.stderr (100%) rename {src/test => tests}/rustdoc-ui/deref-generic.rs (100%) rename {src/test => tests}/rustdoc-ui/diagnostic-width.rs (100%) rename {src/test => tests}/rustdoc-ui/diagnostic-width.stderr (100%) rename {src/test => tests}/rustdoc-ui/display-output.rs (100%) rename {src/test => tests}/rustdoc-ui/display-output.stdout (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-assoc-const.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-assoc-const.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-crate-level.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-crate-level.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-same-name.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-alias-same-name.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-attr.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-cfg.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-cfg.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-comment-multi-line-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-comment-multi-line-attr.stdout (100%) rename {src/test => tests}/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-comment-multi-line-cfg-attr.stdout (100%) rename {src/test => tests}/rustdoc-ui/doc-include-suggestion.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-include-suggestion.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-spotlight.fixed (100%) rename {src/test => tests}/rustdoc-ui/doc-spotlight.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-spotlight.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-test-attr-pass.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-test-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-test-attr.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc-test-doctest-feature.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-test-doctest-feature.stdout (100%) rename {src/test => tests}/rustdoc-ui/doc-test-rustdoc-feature.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-test-rustdoc-feature.stdout (100%) rename {src/test => tests}/rustdoc-ui/doc-without-codeblock.rs (100%) rename {src/test => tests}/rustdoc-ui/doc-without-codeblock.stderr (100%) rename {src/test => tests}/rustdoc-ui/doc_cfg_hide.rs (100%) rename {src/test => tests}/rustdoc-ui/doc_cfg_hide.stderr (100%) rename {src/test => tests}/rustdoc-ui/doctest-edition.rs (100%) rename {src/test => tests}/rustdoc-ui/doctest-edition.stderr (100%) rename {src/test => tests}/rustdoc-ui/doctest-multiline-crate-attribute.rs (100%) rename {src/test => tests}/rustdoc-ui/doctest-multiline-crate-attribute.stdout (100%) rename {src/test => tests}/rustdoc-ui/doctest-output.rs (100%) rename {src/test => tests}/rustdoc-ui/doctest-output.stdout (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/README.md (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/async.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/closure.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/const-generics.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/generic-argument.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/impl-keyword.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/realistic-async.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs (100%) rename {src/test => tests}/rustdoc-ui/error-in-impl-trait/trait-alias.rs (100%) rename {src/test => tests}/rustdoc-ui/expect-tool-lint-rfc-2383.rs (100%) rename {src/test => tests}/rustdoc-ui/expect-tool-lint-rfc-2383.stderr (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-compile-fail.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-compile-fail.stdout (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-extra-semicolon-on-item.stdout (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-missing-codes.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-missing-codes.stdout (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-output-windows.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-output-windows.stdout (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-output.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-output.stdout (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-should-panic.rs (100%) rename {src/test => tests}/rustdoc-ui/failed-doctest-should-panic.stdout (100%) rename {src/test => tests}/rustdoc-ui/feature-gate-doc_cfg_hide.rs (100%) rename {src/test => tests}/rustdoc-ui/feature-gate-doc_cfg_hide.stderr (100%) rename {src/test => tests}/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.rs (100%) rename {src/test => tests}/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.stderr (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt-unstable.rs (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt-unstable.stderr (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt.rs (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt.stderr (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt2.rs (100%) rename {src/test => tests}/rustdoc-ui/generate-link-to-definition-opt2.stderr (100%) rename {src/test => tests}/rustdoc-ui/ignore-block-help.rs (100%) rename {src/test => tests}/rustdoc-ui/ignore-block-help.stderr (100%) rename {src/test => tests}/rustdoc-ui/impl-fn-nesting.rs (100%) rename {src/test => tests}/rustdoc-ui/impl-fn-nesting.stderr (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type-impl-trait-return.rs (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type-impl-trait.rs (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type-impl-trait.stderr (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type.rs (100%) rename {src/test => tests}/rustdoc-ui/infinite-recursive-type.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/.gitattributes (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/alias-ice.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/alias-ice.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/ambiguity.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/ambiguity.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/anchors.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/anchors.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/assoc-field.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/assoc-field-dep.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/assoc-mod-inner-outer-dep.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/dep1.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/dep2.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/dep3.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/dep4.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/intra-doc-broken.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/pointer-reexports-allowed.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/auxiliary/through-proc-macro-aux.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/broken-reexport.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/crate-nonexistent.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/crate-nonexistent.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/disambiguator-mismatch.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/double-anchor.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/double-anchor.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/email-address-localhost.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/errors.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/errors.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/extern-crate-load.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/field-ice.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/field-ice.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/global-path.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/global-path.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/html-as-generics-intra-doc.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/html-as-generics-intra-doc.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/macro-rules-error.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/macro-rules-error.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/macro-rules.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/malformed-generics.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/malformed-generics.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/non-path-primitives.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/non-path-primitives.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/pointer-reexports-allowed.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/prim-conflict.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/prim-conflict.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/private-from-crate-level.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/private-from-crate-level.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/private.private.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/private.public.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/private.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/span-ice-55723.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/span-ice-55723.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/through-proc-macro.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/through-proc-macro.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unknown-disambiguator.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unknown-disambiguator.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unresolved-import-recovery.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unresolved-import-recovery.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unused-extern-crate.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/unused-extern-crate.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/warning-crlf.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/warning-crlf.stderr (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/warning.rs (100%) rename {src/test => tests}/rustdoc-ui/intra-doc/warning.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-cfg.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-cfg.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-doc-attr.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-doc-attr.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-html-self-closing-tag.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-html-self-closing-tag.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-html-tags.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-html-tags.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-keyword.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-keyword.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-syntax.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-syntax.stderr (100%) rename {src/test => tests}/rustdoc-ui/invalid-theme-name.rs (100%) rename {src/test => tests}/rustdoc-ui/invalid-theme-name.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-101076.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-102986.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-102986.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-103997.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-103997.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-105334.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-105334.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-105737.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-105737.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-105742.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-105742.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-106213.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-106213.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-106226.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-106226.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-58473-2.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-58473.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-61592-2.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-61592-2.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-61592.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-61592.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-61732.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-61732.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-74134.private.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-74134.public.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-74134.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-79465.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-79465.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-79467.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-79467.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-79494.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-79494.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-80992.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-80992.stdout (100%) rename {src/test => tests}/rustdoc-ui/issue-81662-shortness.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-81662-shortness.stdout (100%) rename {src/test => tests}/rustdoc-ui/issue-83883-describe-lints.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-83883-describe-lints.stdout (100%) rename {src/test => tests}/rustdoc-ui/issue-91134.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-91134.stdout (100%) rename {src/test => tests}/rustdoc-ui/issue-91713.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-91713.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-91713.stdout (100%) rename {src/test => tests}/rustdoc-ui/issue-96287.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-96287.stderr (100%) rename {src/test => tests}/rustdoc-ui/issue-98690.rs (100%) rename {src/test => tests}/rustdoc-ui/issue-98690.stderr (100%) rename {src/test => tests}/rustdoc-ui/lint-group.rs (100%) rename {src/test => tests}/rustdoc-ui/lint-group.stderr (100%) rename {src/test => tests}/rustdoc-ui/lint-missing-doc-code-example.rs (100%) rename {src/test => tests}/rustdoc-ui/lint-missing-doc-code-example.stderr (100%) rename {src/test => tests}/rustdoc-ui/macro-docs.rs (100%) rename {src/test => tests}/rustdoc-ui/macro-docs.stderr (100%) rename {src/test => tests}/rustdoc-ui/macro-docs.stdout (100%) rename {src/test => tests}/rustdoc-ui/no-crate-level-doc-lint.rs (100%) rename {src/test => tests}/rustdoc-ui/no-crate-level-doc-lint.stderr (100%) rename {src/test => tests}/rustdoc-ui/no-run-flag-error.rs (100%) rename {src/test => tests}/rustdoc-ui/no-run-flag-error.stderr (100%) rename {src/test => tests}/rustdoc-ui/no-run-flag.rs (100%) rename {src/test => tests}/rustdoc-ui/no-run-flag.stdout (100%) rename {src/test => tests}/rustdoc-ui/nocapture-fail.rs (100%) rename {src/test => tests}/rustdoc-ui/nocapture-fail.stderr (100%) rename {src/test => tests}/rustdoc-ui/nocapture-fail.stdout (100%) rename {src/test => tests}/rustdoc-ui/nocapture.rs (100%) rename {src/test => tests}/rustdoc-ui/nocapture.stderr (100%) rename {src/test => tests}/rustdoc-ui/nocapture.stdout (100%) rename {src/test => tests}/rustdoc-ui/normalize-cycle.rs (100%) rename {src/test => tests}/rustdoc-ui/normalize-overflow.rs (100%) rename {src/test => tests}/rustdoc-ui/output-format-html-stable.rs (100%) rename {src/test => tests}/rustdoc-ui/private-doc-test.rs (100%) rename {src/test => tests}/rustdoc-ui/private-item-doc-test.rs (100%) rename {src/test => tests}/rustdoc-ui/private-item-doc-test.stderr (100%) rename {src/test => tests}/rustdoc-ui/private-public-item-doc-test.rs (100%) rename {src/test => tests}/rustdoc-ui/private-public-item-doc-test.stderr (100%) rename {src/test => tests}/rustdoc-ui/pub-export-lint.rs (100%) rename {src/test => tests}/rustdoc-ui/pub-export-lint.stderr (100%) rename {src/test => tests}/rustdoc-ui/public-reexported-item-doc-test.rs (100%) rename {src/test => tests}/rustdoc-ui/range-pattern.rs (100%) rename {src/test => tests}/rustdoc-ui/recursive-deref-ice.rs (100%) rename {src/test => tests}/rustdoc-ui/reference-link-reports-error-once.rs (100%) rename {src/test => tests}/rustdoc-ui/reference-link-reports-error-once.stderr (100%) rename {src/test => tests}/rustdoc-ui/reference-links.rs (100%) rename {src/test => tests}/rustdoc-ui/reference-links.stderr (100%) rename {src/test => tests}/rustdoc-ui/renamed-lint-still-applies.rs (100%) rename {src/test => tests}/rustdoc-ui/renamed-lint-still-applies.stderr (100%) rename {src/test => tests}/rustdoc-ui/run-directory.correct.stdout (100%) rename {src/test => tests}/rustdoc-ui/run-directory.incorrect.stdout (100%) rename {src/test => tests}/rustdoc-ui/run-directory.rs (100%) rename {src/test => tests}/rustdoc-ui/rustc-check-passes.rs (100%) rename {src/test => tests}/rustdoc-ui/rustc-check-passes.stderr (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-fail-if-type-error.rs (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-fail-if-type-error.stderr (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-ice.rs (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-wrong-options-1.rs (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-wrong-options-1.stderr (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-wrong-options-2.rs (100%) rename {src/test => tests}/rustdoc-ui/scrape-examples-wrong-options-2.stderr (100%) rename {src/test => tests}/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs (100%) rename {src/test => tests}/rustdoc-ui/suggestions/html-as-generics-no-suggestions.rs (100%) rename {src/test => tests}/rustdoc-ui/suggestions/html-as-generics-no-suggestions.stderr (100%) rename {src/test => tests}/rustdoc-ui/suggestions/html-as-generics.fixed (100%) rename {src/test => tests}/rustdoc-ui/suggestions/html-as-generics.rs (100%) rename {src/test => tests}/rustdoc-ui/suggestions/html-as-generics.stderr (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail1.rs (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail1.stderr (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail2.rs (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail2.stderr (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail3.rs (100%) rename {src/test => tests}/rustdoc-ui/test-compile-fail3.stderr (100%) rename {src/test => tests}/rustdoc-ui/test-no_std.rs (100%) rename {src/test => tests}/rustdoc-ui/test-no_std.stdout (100%) rename {src/test => tests}/rustdoc-ui/test-type.rs (100%) rename {src/test => tests}/rustdoc-ui/test-type.stdout (100%) rename {src/test => tests}/rustdoc-ui/track-diagnostics.rs (100%) rename {src/test => tests}/rustdoc-ui/track-diagnostics.stderr (100%) rename {src/test => tests}/rustdoc-ui/tuple-variadic-check.rs (100%) rename {src/test => tests}/rustdoc-ui/tuple-variadic-check.stderr (100%) rename {src/test => tests}/rustdoc-ui/unable-fulfill-trait.rs (100%) rename {src/test => tests}/rustdoc-ui/unable-fulfill-trait.stderr (100%) rename {src/test => tests}/rustdoc-ui/unknown-renamed-lints.rs (100%) rename {src/test => tests}/rustdoc-ui/unknown-renamed-lints.stderr (100%) rename {src/test => tests}/rustdoc-ui/unparseable-doc-test.rs (100%) rename {src/test => tests}/rustdoc-ui/unparseable-doc-test.stdout (100%) rename {src/test => tests}/rustdoc-ui/unused-braces-lint.rs (100%) rename {src/test => tests}/rustdoc-ui/unused-extern-crate.rs (100%) rename {src/test => tests}/rustdoc-ui/unused.rs (100%) rename {src/test => tests}/rustdoc-ui/use_both_out_dir_and_output_options.rs (100%) rename {src/test => tests}/rustdoc-ui/use_both_out_dir_and_output_options.stderr (100%) rename {src/test => tests}/rustdoc-ui/wasm-safe.rs (100%) rename {src/test => tests}/rustdoc-ui/z-help.rs (100%) rename {src/test => tests}/rustdoc-ui/z-help.stdout (100%) rename {src/test => tests}/rustdoc/all.rs (100%) rename {src/test => tests}/rustdoc/anchors.no_const_anchor.html (100%) rename {src/test => tests}/rustdoc/anchors.no_const_anchor2.html (100%) rename {src/test => tests}/rustdoc/anchors.no_method_anchor.html (100%) rename {src/test => tests}/rustdoc/anchors.no_trait_method_anchor.html (100%) rename {src/test => tests}/rustdoc/anchors.no_tymethod_anchor.html (100%) rename {src/test => tests}/rustdoc/anchors.no_type_anchor.html (100%) rename {src/test => tests}/rustdoc/anchors.no_type_anchor2.html (100%) rename {src/test => tests}/rustdoc/anchors.rs (100%) rename {src/test => tests}/rustdoc/anonymous-lifetime.rs (100%) rename {src/test => tests}/rustdoc/anonymous-reexport.rs (100%) rename {src/test => tests}/rustdoc/array-links.link_box_generic.html (100%) rename {src/test => tests}/rustdoc/array-links.link_box_u32.html (100%) rename {src/test => tests}/rustdoc/array-links.link_slice_generic.html (100%) rename {src/test => tests}/rustdoc/array-links.link_slice_u32.html (100%) rename {src/test => tests}/rustdoc/array-links.rs (100%) rename {src/test => tests}/rustdoc/asm-foreign.rs (100%) rename {src/test => tests}/rustdoc/asm-foreign2.rs (100%) rename {src/test => tests}/rustdoc/assoc-consts-version.rs (100%) rename {src/test => tests}/rustdoc/assoc-consts.rs (100%) rename {src/test => tests}/rustdoc/assoc-item-cast.rs (100%) rename {src/test => tests}/rustdoc/assoc-types.rs (100%) rename {src/test => tests}/rustdoc/associated-consts.rs (100%) rename {src/test => tests}/rustdoc/async-fn.rs (100%) rename {src/test => tests}/rustdoc/async-move-doctest.rs (100%) rename {src/test => tests}/rustdoc/async-trait-sig.rs (100%) rename {src/test => tests}/rustdoc/async-trait.rs (100%) rename {src/test => tests}/rustdoc/attribute-rendering.rs (100%) rename {src/test => tests}/rustdoc/attributes.rs (100%) rename {src/test => tests}/rustdoc/auto-impl-for-trait.rs (100%) rename {src/test => tests}/rustdoc/auto-impl-primitive.rs (100%) rename {src/test => tests}/rustdoc/auto-trait-not-send.rs (100%) rename {src/test => tests}/rustdoc/auto-traits.rs (100%) rename {src/test => tests}/rustdoc/auto_aliases.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/all-item-types.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/async-trait-dep.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/auto-traits.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/cross-crate-hidden-assoc-trait-items.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/cross-crate-hidden-impl-parameter.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/elided-lifetime.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/empty.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/enum-primitive.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/extern-impl-trait.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/extern-links.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/external-cross-doc.md (100%) rename {src/test => tests}/rustdoc/auxiliary/external-cross.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/external-doc.md (100%) rename {src/test => tests}/rustdoc/auxiliary/external-macro-src.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/html_root.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/incoherent-impl-types.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/inline-default-methods.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-100204-aux.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-13698.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-15318.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-17476.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-19190-3.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-20646.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-20727.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-21092.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-21801.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-22025.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-23207-1.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-23207-2.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-26606-macro.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-27362-aux.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-28927-1.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-28927-2.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-29584.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-30109-1.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-34274.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-36031.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-40936.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-46727.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-48414.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-53689.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-57180.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-61592.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-73061.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-85454.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-86620-1.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-98697-reexport-with-anonymous-lifetime.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-99221-aux.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/issue-99734-aux.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/macro_pub_in_module.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/masked.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/mod-stackoverflow.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/no_html_root.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/normalize-assoc-item.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/primitive-doc.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/primitive-reexport.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/pub-extern-crate.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/pub-use-extern-macros.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/real_gimli.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/realcore.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/reexp-stripped.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/reexport-check.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/reexport-doc-aux.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/reexports.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/rustdoc-default-impl.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/rustdoc-extern-default-method.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/rustdoc-extern-method.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/rustdoc-ffi.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/rustdoc-impl-parts-crosscrate.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/source-code-bar.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/source_code.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/src-links-external.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/trait-alias-mention.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/trait-visibility.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/unit-return.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/unstable-trait.rs (100%) rename {src/test => tests}/rustdoc/auxiliary/variant-struct.rs (100%) rename {src/test => tests}/rustdoc/bad-codeblock-syntax.rs (100%) rename {src/test => tests}/rustdoc/blanket-reexport-item.rs (100%) rename {src/test => tests}/rustdoc/bounds-in-multiple-parts.rs (100%) rename {src/test => tests}/rustdoc/cap-lints.rs (100%) rename {src/test => tests}/rustdoc/cfg-doctest.rs (100%) rename {src/test => tests}/rustdoc/cfg_doc_reexport.rs (100%) rename {src/test => tests}/rustdoc/check-source-code-urls-to-def-std.rs (100%) rename {src/test => tests}/rustdoc/check-source-code-urls-to-def.rs (100%) rename {src/test => tests}/rustdoc/check-styled-link.rs (100%) rename {src/test => tests}/rustdoc/check.rs (100%) rename {src/test => tests}/rustdoc/codeblock-title.rs (100%) rename {src/test => tests}/rustdoc/comment-in-doctest.rs (100%) rename {src/test => tests}/rustdoc/const-display.rs (100%) rename {src/test => tests}/rustdoc/const-doc.rs (100%) rename {src/test => tests}/rustdoc/const-fn.rs (100%) rename {src/test => tests}/rustdoc/const-generics/add-impl.rs (100%) rename {src/test => tests}/rustdoc/const-generics/auxiliary/extern_crate.rs (100%) rename {src/test => tests}/rustdoc/const-generics/const-generic-defaults.rs (100%) rename {src/test => tests}/rustdoc/const-generics/const-generic-slice.rs (100%) rename {src/test => tests}/rustdoc/const-generics/const-generics-docs.rs (100%) rename {src/test => tests}/rustdoc/const-generics/const-impl.rs (100%) rename {src/test => tests}/rustdoc/const-generics/generic_const_exprs.rs (100%) rename {src/test => tests}/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs (100%) rename {src/test => tests}/rustdoc/const-generics/type-alias.rs (100%) rename {src/test => tests}/rustdoc/const-underscore.rs (100%) rename {src/test => tests}/rustdoc/const-value-display.rs (100%) rename {src/test => tests}/rustdoc/const.rs (100%) rename {src/test => tests}/rustdoc/constructor-imports.rs (100%) rename {src/test => tests}/rustdoc/crate-version-escape.rs (100%) rename {src/test => tests}/rustdoc/crate-version.rs (100%) rename {src/test => tests}/rustdoc/cross-crate-hidden-assoc-trait-items.rs (100%) rename {src/test => tests}/rustdoc/cross-crate-hidden-impl-parameter.rs (100%) rename {src/test => tests}/rustdoc/cross-crate-links.rs (100%) rename {src/test => tests}/rustdoc/cross-crate-primitive-doc.rs (100%) rename {src/test => tests}/rustdoc/decl-trailing-whitespace.declaration.html (100%) rename {src/test => tests}/rustdoc/decl-trailing-whitespace.rs (100%) rename {src/test => tests}/rustdoc/decl_macro.rs (100%) rename {src/test => tests}/rustdoc/decl_macro_priv.rs (100%) rename {src/test => tests}/rustdoc/deep-structures.rs (100%) rename {src/test => tests}/rustdoc/default-impl.rs (100%) rename {src/test => tests}/rustdoc/default-theme.rs (100%) rename {src/test => tests}/rustdoc/default-trait-method-link.rs (100%) rename {src/test => tests}/rustdoc/default-trait-method.rs (100%) rename {src/test => tests}/rustdoc/deprecated-future-staged-api.rs (100%) rename {src/test => tests}/rustdoc/deprecated-future.rs (100%) rename {src/test => tests}/rustdoc/deprecated-impls.rs (100%) rename {src/test => tests}/rustdoc/deprecated.rs (100%) rename {src/test => tests}/rustdoc/deref-const-fn.rs (100%) rename {src/test => tests}/rustdoc/deref-mut-methods.rs (100%) rename {src/test => tests}/rustdoc/deref-recursive-pathbuf.rs (100%) rename {src/test => tests}/rustdoc/deref-recursive.rs (100%) rename {src/test => tests}/rustdoc/deref-slice-core.rs (100%) rename {src/test => tests}/rustdoc/deref-to-primitive.rs (100%) rename {src/test => tests}/rustdoc/deref-typedef.rs (100%) rename {src/test => tests}/rustdoc/description.rs (100%) rename {src/test => tests}/rustdoc/description_default.rs (100%) rename {src/test => tests}/rustdoc/doc-assoc-item.rs (100%) rename {src/test => tests}/rustdoc/doc-auto-cfg.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-hide.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-implicit-gate.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-implicit.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-simplification.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-target-feature.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg-traits.rs (100%) rename {src/test => tests}/rustdoc/doc-cfg.rs (100%) rename {src/test => tests}/rustdoc/doc-notable_trait-mut_t_is_not_an_iterator.rs (100%) rename {src/test => tests}/rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs (100%) rename {src/test => tests}/rustdoc/doc-notable_trait-slice.bare_fn_matches.html (100%) rename {src/test => tests}/rustdoc/doc-notable_trait-slice.rs (100%) rename {src/test => tests}/rustdoc/doc-notable_trait.bare-fn.html (100%) rename {src/test => tests}/rustdoc/doc-notable_trait.rs (100%) rename {src/test => tests}/rustdoc/doc-notable_trait.some-struct-new.html (100%) rename {src/test => tests}/rustdoc/doc-notable_trait.wrap-me.html (100%) rename {src/test => tests}/rustdoc/doc-notable_trait_box_is_not_an_iterator.rs (100%) rename {src/test => tests}/rustdoc/doc-proc-macro.rs (100%) rename {src/test => tests}/rustdoc/doc_auto_cfg_nested_impl.rs (100%) rename {src/test => tests}/rustdoc/doctest-manual-crate-name.rs (100%) rename {src/test => tests}/rustdoc/double-quote-escape.rs (100%) rename {src/test => tests}/rustdoc/duplicate-cfg.rs (100%) rename {src/test => tests}/rustdoc/duplicate-flags.rs (100%) rename {src/test => tests}/rustdoc/duplicate_impls/impls.rs (100%) rename {src/test => tests}/rustdoc/duplicate_impls/issue-33054.rs (100%) rename {src/test => tests}/rustdoc/duplicated_impl.rs (100%) rename {src/test => tests}/rustdoc/early-unindent.rs (100%) rename {src/test => tests}/rustdoc/edition-doctest.rs (100%) rename {src/test => tests}/rustdoc/edition-flag.rs (100%) rename {src/test => tests}/rustdoc/elided-lifetime.rs (100%) rename {src/test => tests}/rustdoc/empty-doc-comment.rs (100%) rename {src/test => tests}/rustdoc/empty-impl-block-private-with-doc.rs (100%) rename {src/test => tests}/rustdoc/empty-impl-block-private.rs (100%) rename {src/test => tests}/rustdoc/empty-impl-block.rs (100%) rename {src/test => tests}/rustdoc/empty-impls.rs (100%) rename {src/test => tests}/rustdoc/empty-mod-private.rs (100%) rename {src/test => tests}/rustdoc/empty-mod-public.rs (100%) rename {src/test => tests}/rustdoc/empty-section.rs (100%) rename {src/test => tests}/rustdoc/ensure-src-link.rs (100%) rename {src/test => tests}/rustdoc/enum-headings.rs (100%) rename {src/test => tests}/rustdoc/escape-deref-methods.rs (100%) rename {src/test => tests}/rustdoc/extern-default-method.no_href_on_anchor.html (100%) rename {src/test => tests}/rustdoc/extern-default-method.rs (100%) rename {src/test => tests}/rustdoc/extern-html-root-url-precedence.rs (100%) rename {src/test => tests}/rustdoc/extern-html-root-url.rs (100%) rename {src/test => tests}/rustdoc/extern-impl-trait.rs (100%) rename {src/test => tests}/rustdoc/extern-impl.rs (100%) rename {src/test => tests}/rustdoc/extern-links.rs (100%) rename {src/test => tests}/rustdoc/extern-method.rs (100%) rename {src/test => tests}/rustdoc/external-cross.rs (100%) rename {src/test => tests}/rustdoc/external-doc.rs (100%) rename {src/test => tests}/rustdoc/external-macro-src.rs (100%) rename {src/test => tests}/rustdoc/feature-gate-doc_auto_cfg.rs (100%) rename {src/test => tests}/rustdoc/ffi.rs (100%) rename {src/test => tests}/rustdoc/fn-bound.rs (100%) rename {src/test => tests}/rustdoc/fn-pointer-arg-name.rs (100%) rename {src/test => tests}/rustdoc/fn-sidebar.rs (100%) rename {src/test => tests}/rustdoc/fn-type.rs (100%) rename {src/test => tests}/rustdoc/force-target-feature.rs (100%) rename {src/test => tests}/rustdoc/foreigntype-reexport.rs (100%) rename {src/test => tests}/rustdoc/foreigntype.rs (100%) rename {src/test => tests}/rustdoc/generic-associated-types/gats.rs (100%) rename {src/test => tests}/rustdoc/generic-associated-types/issue-94683.rs (100%) rename {src/test => tests}/rustdoc/generic-impl.rs (100%) rename {src/test => tests}/rustdoc/generic_const_exprs.rs (100%) rename {src/test => tests}/rustdoc/glob-shadowing-const.rs (100%) rename {src/test => tests}/rustdoc/glob-shadowing.rs (100%) rename {src/test => tests}/rustdoc/hidden-impls.rs (100%) rename {src/test => tests}/rustdoc/hidden-line.rs (100%) rename {src/test => tests}/rustdoc/hidden-methods.rs (100%) rename {src/test => tests}/rustdoc/hidden-trait-methods-with-document-hidden-items.rs (100%) rename {src/test => tests}/rustdoc/hidden-trait-methods.rs (100%) rename {src/test => tests}/rustdoc/hidden-trait-struct-impls.rs (100%) rename {src/test => tests}/rustdoc/hide-complex-unevaluated-const-arguments.rs (100%) rename {src/test => tests}/rustdoc/hide-complex-unevaluated-consts.rs (100%) rename {src/test => tests}/rustdoc/hide-unstable-trait.rs (100%) rename {src/test => tests}/rustdoc/higher-ranked-trait-bounds.rs (100%) rename {src/test => tests}/rustdoc/impl-box.rs (100%) rename {src/test => tests}/rustdoc/impl-disambiguation.rs (100%) rename {src/test => tests}/rustdoc/impl-everywhere.rs (100%) rename {src/test => tests}/rustdoc/impl-in-const-block.rs (100%) rename {src/test => tests}/rustdoc/impl-parts-crosscrate.rs (100%) rename {src/test => tests}/rustdoc/impl-parts.rs (100%) rename {src/test => tests}/rustdoc/impl-trait-alias.rs (100%) rename {src/test => tests}/rustdoc/implementor-stable-version.rs (100%) rename {src/test => tests}/rustdoc/impossible-default.rs (100%) rename {src/test => tests}/rustdoc/include_str_cut.rs (100%) rename {src/test => tests}/rustdoc/index-page.rs (100%) rename {src/test => tests}/rustdoc/infinite-redirection.rs (100%) rename {src/test => tests}/rustdoc/inline-default-methods.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/add-docs.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/assoc-items.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/assoc_item_trait_bounds.out0.html (100%) rename {src/test => tests}/rustdoc/inline_cross/assoc_item_trait_bounds.out2.html (100%) rename {src/test => tests}/rustdoc/inline_cross/assoc_item_trait_bounds.out9.html (100%) rename {src/test => tests}/rustdoc/inline_cross/assoc_item_trait_bounds.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/add-docs.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/assoc-items.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/assoc_item_trait_bounds.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/cross-glob.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/default-trait-method.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/dyn_trait.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/impl-inline-without-trait.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/impl_trait_aux.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/implementors_inline.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/issue-24183.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/issue-33113.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/macro-vis.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/macros.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/proc_macro.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/renamed-via-module.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/rustdoc-hidden-sig.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/rustdoc-hidden.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/rustdoc-nonreachable-impls.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/trait-vis.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/use_crate.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/auxiliary/use_crate_2.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/cross-glob.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/default-trait-method.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/dyn_trait.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/hidden-use.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/impl-inline-without-trait.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/impl_trait.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/implementors-js.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/inline_hidden.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-24183.method_no_where_self_sized.html (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-24183.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-28480.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-31948-1.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-31948-2.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-31948.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-32881.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/issue-33113.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/macro-vis.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/macros.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/proc_macro.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/renamed-via-module.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/trait-vis.rs (100%) rename {src/test => tests}/rustdoc/inline_cross/use_crate.rs (100%) rename {src/test => tests}/rustdoc/inline_local/glob-extern-document-private-items.rs (100%) rename {src/test => tests}/rustdoc/inline_local/glob-extern.rs (100%) rename {src/test => tests}/rustdoc/inline_local/glob-private-document-private-items.rs (100%) rename {src/test => tests}/rustdoc/inline_local/glob-private.rs (100%) rename {src/test => tests}/rustdoc/inline_local/hidden-use.rs (100%) rename {src/test => tests}/rustdoc/inline_local/issue-28537.rs (100%) rename {src/test => tests}/rustdoc/inline_local/issue-32343.rs (100%) rename {src/test => tests}/rustdoc/inline_local/macro_by_example.rs (100%) rename {src/test => tests}/rustdoc/inline_local/please_inline.rs (100%) rename {src/test => tests}/rustdoc/inline_local/trait-vis.rs (100%) rename {src/test => tests}/rustdoc/internal.rs (100%) rename {src/test => tests}/rustdoc/intra-doc-crate/auxiliary/self.rs (100%) rename {src/test => tests}/rustdoc/intra-doc-crate/self.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/anchors.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/assoc-reexport-super.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/associated-defaults.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/associated-items.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/empty.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/empty2.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/extern-builtin-type-impl-dep.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/extern-inherent-impl-dep.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/issue-103463-aux.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/issue-66159-1.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/my-core.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/auxiliary/pub-struct.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/basic.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/builtin-macros.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/crate-relative-assoc.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/crate-relative.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/additional_doc.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/module.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/basic.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/crate.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/hidden.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/macro.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/module.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/submodule-inner.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/submodule-outer.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/cross-crate/traits.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/disambiguators-removed.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/email-address.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/enum-struct-field.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-builtin-type-impl.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-crate-only-used-in-link.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-crate.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-inherent-impl.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-reference-link.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/extern-type.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/external-traits.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/field.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/generic-params.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/generic-trait-impl.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/in-bodies.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/issue-103463.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/issue-104145.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/issue-66159.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/issue-82209.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/libstd-re-export.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/macros-disambiguators.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/mod-ambiguity.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/mod-relative.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/no-doc-primitive.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/non-path-primitives.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-assoc.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-associated-traits.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-methods-external-core.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-methods-local.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-methods.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-precedence.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/prim-self.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/primitive-disambiguators.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/primitive-non-default-impl.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/private-failures-ignored.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/private.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/proc-macro.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/pub-use.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/raw-ident-self.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/reexport-additional-docs.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/self-cache.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/self.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/trait-impl.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/trait-item.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/true-false.rs (100%) rename {src/test => tests}/rustdoc/intra-doc/type-alias.rs (100%) rename {src/test => tests}/rustdoc/invalid.crate.name.rs (100%) rename {src/test => tests}/rustdoc/issue-100204-inline-impl-through-glob-import.rs (100%) rename {src/test => tests}/rustdoc/issue-100241.rs (100%) rename {src/test => tests}/rustdoc/issue-100620.rs (100%) rename {src/test => tests}/rustdoc/issue-100679-sidebar-links-deref.rs (100%) rename {src/test => tests}/rustdoc/issue-101743-bold-tag.rs (100%) rename {src/test => tests}/rustdoc/issue-102154.rs (100%) rename {src/test => tests}/rustdoc/issue-105952.rs (100%) rename {src/test => tests}/rustdoc/issue-12834.rs (100%) rename {src/test => tests}/rustdoc/issue-13698.rs (100%) rename {src/test => tests}/rustdoc/issue-15169.rs (100%) rename {src/test => tests}/rustdoc/issue-15318-2.rs (100%) rename {src/test => tests}/rustdoc/issue-15318-3.rs (100%) rename {src/test => tests}/rustdoc/issue-15318.rs (100%) rename {src/test => tests}/rustdoc/issue-15347.rs (100%) rename {src/test => tests}/rustdoc/issue-16019.rs (100%) rename {src/test => tests}/rustdoc/issue-16265-1.rs (100%) rename {src/test => tests}/rustdoc/issue-16265-2.rs (100%) rename {src/test => tests}/rustdoc/issue-17476.rs (100%) rename {src/test => tests}/rustdoc/issue-18199.rs (100%) rename {src/test => tests}/rustdoc/issue-19181.rs (100%) rename {src/test => tests}/rustdoc/issue-19190-2.rs (100%) rename {src/test => tests}/rustdoc/issue-19190-3.rs (100%) rename {src/test => tests}/rustdoc/issue-19190.rs (100%) rename {src/test => tests}/rustdoc/issue-20175.rs (100%) rename {src/test => tests}/rustdoc/issue-20646.rs (100%) rename {src/test => tests}/rustdoc/issue-20727-2.rs (100%) rename {src/test => tests}/rustdoc/issue-20727-3.rs (100%) rename {src/test => tests}/rustdoc/issue-20727-4.rs (100%) rename {src/test => tests}/rustdoc/issue-20727.rs (100%) rename {src/test => tests}/rustdoc/issue-21092.rs (100%) rename {src/test => tests}/rustdoc/issue-21474.rs (100%) rename {src/test => tests}/rustdoc/issue-21801.rs (100%) rename {src/test => tests}/rustdoc/issue-22025.rs (100%) rename {src/test => tests}/rustdoc/issue-22038.rs (100%) rename {src/test => tests}/rustdoc/issue-23106.rs (100%) rename {src/test => tests}/rustdoc/issue-23207.rs (100%) rename {src/test => tests}/rustdoc/issue-23511.rs (100%) rename {src/test => tests}/rustdoc/issue-23744.rs (100%) rename {src/test => tests}/rustdoc/issue-23812.rs (100%) rename {src/test => tests}/rustdoc/issue-25001.rs (100%) rename {src/test => tests}/rustdoc/issue-25944.rs (100%) rename {src/test => tests}/rustdoc/issue-26606.rs (100%) rename {src/test => tests}/rustdoc/issue-26995.rs (100%) rename {src/test => tests}/rustdoc/issue-27104.rs (100%) rename {src/test => tests}/rustdoc/issue-27362.rs (100%) rename {src/test => tests}/rustdoc/issue-27759.rs (100%) rename {src/test => tests}/rustdoc/issue-27862.rs (100%) rename {src/test => tests}/rustdoc/issue-28478.rs (100%) rename {src/test => tests}/rustdoc/issue-28927.rs (100%) rename {src/test => tests}/rustdoc/issue-29449.rs (100%) rename {src/test => tests}/rustdoc/issue-29503.rs (100%) rename {src/test => tests}/rustdoc/issue-29584.rs (100%) rename {src/test => tests}/rustdoc/issue-30109.rs (100%) rename {src/test => tests}/rustdoc/issue-30252.rs (100%) rename {src/test => tests}/rustdoc/issue-30366.rs (100%) rename {src/test => tests}/rustdoc/issue-31808.rs (100%) rename {src/test => tests}/rustdoc/issue-31899.rs (100%) rename {src/test => tests}/rustdoc/issue-32374.rs (100%) rename {src/test => tests}/rustdoc/issue-32395.rs (100%) rename {src/test => tests}/rustdoc/issue-32556.rs (100%) rename {src/test => tests}/rustdoc/issue-32890.rs (100%) rename {src/test => tests}/rustdoc/issue-33069.rs (100%) rename {src/test => tests}/rustdoc/issue-33178-1.rs (100%) rename {src/test => tests}/rustdoc/issue-33178.rs (100%) rename {src/test => tests}/rustdoc/issue-33302.rs (100%) rename {src/test => tests}/rustdoc/issue-33592.rs (100%) rename {src/test => tests}/rustdoc/issue-34025.rs (100%) rename {src/test => tests}/rustdoc/issue-34274.rs (100%) rename {src/test => tests}/rustdoc/issue-34423.rs (100%) rename {src/test => tests}/rustdoc/issue-34473.rs (100%) rename {src/test => tests}/rustdoc/issue-34928.rs (100%) rename {src/test => tests}/rustdoc/issue-35169-2.rs (100%) rename {src/test => tests}/rustdoc/issue-35169.rs (100%) rename {src/test => tests}/rustdoc/issue-35488.rs (100%) rename {src/test => tests}/rustdoc/issue-36031.rs (100%) rename {src/test => tests}/rustdoc/issue-38129.rs (100%) rename {src/test => tests}/rustdoc/issue-38219.rs (100%) rename {src/test => tests}/rustdoc/issue-40936.rs (100%) rename {src/test => tests}/rustdoc/issue-41783.codeblock.html (100%) rename {src/test => tests}/rustdoc/issue-41783.rs (100%) rename {src/test => tests}/rustdoc/issue-42760.rs (100%) rename {src/test => tests}/rustdoc/issue-43153.rs (100%) rename {src/test => tests}/rustdoc/issue-43701.rs (100%) rename {src/test => tests}/rustdoc/issue-43869.rs (100%) rename {src/test => tests}/rustdoc/issue-43893.rs (100%) rename {src/test => tests}/rustdoc/issue-45584.rs (100%) rename {src/test => tests}/rustdoc/issue-46271.rs (100%) rename {src/test => tests}/rustdoc/issue-46377.rs (100%) rename {src/test => tests}/rustdoc/issue-46380-2.rs (100%) rename {src/test => tests}/rustdoc/issue-46727.rs (100%) rename {src/test => tests}/rustdoc/issue-46766.rs (100%) rename {src/test => tests}/rustdoc/issue-46767.rs (100%) rename {src/test => tests}/rustdoc/issue-46976.rs (100%) rename {src/test => tests}/rustdoc/issue-47038.rs (100%) rename {src/test => tests}/rustdoc/issue-47197-blank-line-in-doc-block.rs (100%) rename {src/test => tests}/rustdoc/issue-47639.rs (100%) rename {src/test => tests}/rustdoc/issue-48377.rs (100%) rename {src/test => tests}/rustdoc/issue-48414.rs (100%) rename {src/test => tests}/rustdoc/issue-50159.rs (100%) rename {src/test => tests}/rustdoc/issue-51236.rs (100%) rename {src/test => tests}/rustdoc/issue-52873.rs (100%) rename {src/test => tests}/rustdoc/issue-53689.rs (100%) rename {src/test => tests}/rustdoc/issue-53812.rs (100%) rename {src/test => tests}/rustdoc/issue-54478-demo-allocator.rs (100%) rename {src/test => tests}/rustdoc/issue-54705.rs (100%) rename {src/test => tests}/rustdoc/issue-55001.rs (100%) rename {src/test => tests}/rustdoc/issue-55321.rs (100%) rename {src/test => tests}/rustdoc/issue-55364.rs (100%) rename {src/test => tests}/rustdoc/issue-56701.rs (100%) rename {src/test => tests}/rustdoc/issue-56822.rs (100%) rename {src/test => tests}/rustdoc/issue-57180.rs (100%) rename {src/test => tests}/rustdoc/issue-60482.rs (100%) rename {src/test => tests}/rustdoc/issue-60726.rs (100%) rename {src/test => tests}/rustdoc/issue-61592.rs (100%) rename {src/test => tests}/rustdoc/issue-67851-both.rs (100%) rename {src/test => tests}/rustdoc/issue-67851-hidden.rs (100%) rename {src/test => tests}/rustdoc/issue-67851-neither.rs (100%) rename {src/test => tests}/rustdoc/issue-67851-private.rs (100%) rename {src/test => tests}/rustdoc/issue-72340.rs (100%) rename {src/test => tests}/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs (100%) rename {src/test => tests}/rustdoc/issue-74083.rs (100%) rename {src/test => tests}/rustdoc/issue-75588.rs (100%) rename {src/test => tests}/rustdoc/issue-76501.rs (100%) rename {src/test => tests}/rustdoc/issue-78673.rs (100%) rename {src/test => tests}/rustdoc/issue-78701.rs (100%) rename {src/test => tests}/rustdoc/issue-79201.rs (100%) rename {src/test => tests}/rustdoc/issue-80233-normalize-auto-trait.rs (100%) rename {src/test => tests}/rustdoc/issue-82465-asref-for-and-of-local.rs (100%) rename {src/test => tests}/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs (100%) rename {src/test => tests}/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline.rs (100%) rename {src/test => tests}/rustdoc/issue-85454.rs (100%) rename {src/test => tests}/rustdoc/issue-86620.rs (100%) rename {src/test => tests}/rustdoc/issue-88600.rs (100%) rename {src/test => tests}/rustdoc/issue-89309-heading-levels.rs (100%) rename {src/test => tests}/rustdoc/issue-89852.rs (100%) rename {src/test => tests}/rustdoc/issue-95633.rs (100%) rename {src/test => tests}/rustdoc/issue-95873.rs (100%) rename {src/test => tests}/rustdoc/issue-96381.rs (100%) rename {src/test => tests}/rustdoc/issue-98697.rs (100%) rename {src/test => tests}/rustdoc/issue-99221-multiple-macro-rules-w-same-name-submodule.rs (100%) rename {src/test => tests}/rustdoc/issue-99221-multiple-macro-rules-w-same-name.rs (100%) rename {src/test => tests}/rustdoc/issue-99221-multiple-structs-w-same-name.rs (100%) rename {src/test => tests}/rustdoc/issue-99734-multiple-foreigns-w-same-name.rs (100%) rename {src/test => tests}/rustdoc/issue-99734-multiple-mods-w-same-name.rs (100%) rename {src/test => tests}/rustdoc/keyword.rs (100%) rename {src/test => tests}/rustdoc/legacy-const-generic.rs (100%) rename {src/test => tests}/rustdoc/lifetime-name.rs (100%) rename {src/test => tests}/rustdoc/line-breaks.rs (100%) rename {src/test => tests}/rustdoc/link-assoc-const.rs (100%) rename {src/test => tests}/rustdoc/link-title-escape.rs (100%) rename {src/test => tests}/rustdoc/local-reexport-doc.rs (100%) rename {src/test => tests}/rustdoc/logo-class-default.rs (100%) rename {src/test => tests}/rustdoc/logo-class.rs (100%) rename {src/test => tests}/rustdoc/macro-document-private-duplicate.rs (100%) rename {src/test => tests}/rustdoc/macro-document-private.rs (100%) rename {src/test => tests}/rustdoc/macro-generated-macro.macro_linebreak_pre.html (100%) rename {src/test => tests}/rustdoc/macro-generated-macro.macro_morestuff_pre.html (100%) rename {src/test => tests}/rustdoc/macro-generated-macro.rs (100%) rename {src/test => tests}/rustdoc/macro-higher-kinded-function.rs (100%) rename {src/test => tests}/rustdoc/macro-in-async-block.rs (100%) rename {src/test => tests}/rustdoc/macro-in-closure.rs (100%) rename {src/test => tests}/rustdoc/macro-indirect-use.rs (100%) rename {src/test => tests}/rustdoc/macro-private-not-documented.rs (100%) rename {src/test => tests}/rustdoc/macro_pub_in_module.rs (100%) rename {src/test => tests}/rustdoc/macro_rules-matchers.rs (100%) rename {src/test => tests}/rustdoc/macros.rs (100%) rename {src/test => tests}/rustdoc/manual_impl.rs (100%) rename {src/test => tests}/rustdoc/markdown-summaries.rs (100%) rename {src/test => tests}/rustdoc/masked.rs (100%) rename {src/test => tests}/rustdoc/method-list.rs (100%) rename {src/test => tests}/rustdoc/mixing-doc-comments-and-attrs.S1_top-doc.html (100%) rename {src/test => tests}/rustdoc/mixing-doc-comments-and-attrs.S2_top-doc.html (100%) rename {src/test => tests}/rustdoc/mixing-doc-comments-and-attrs.S3_top-doc.html (100%) rename {src/test => tests}/rustdoc/mixing-doc-comments-and-attrs.rs (100%) rename {src/test => tests}/rustdoc/mod-stackoverflow.rs (100%) rename {src/test => tests}/rustdoc/module-impls.rs (100%) rename {src/test => tests}/rustdoc/multiple-import-levels.rs (100%) rename {src/test => tests}/rustdoc/must_implement_one_of.rs (100%) rename {src/test => tests}/rustdoc/mut-params.rs (100%) rename {src/test => tests}/rustdoc/namespaces.rs (100%) rename {src/test => tests}/rustdoc/negative-impl-sidebar.rs (100%) rename {src/test => tests}/rustdoc/negative-impl.rs (100%) rename {src/test => tests}/rustdoc/nested-modules.rs (100%) rename {src/test => tests}/rustdoc/no-compiler-reexport.rs (100%) rename {src/test => tests}/rustdoc/no-crate-filter.rs (100%) rename {src/test => tests}/rustdoc/no-run-still-checks-lints.rs (100%) rename {src/test => tests}/rustdoc/no-stack-overflow-25295.rs (100%) rename {src/test => tests}/rustdoc/no-unit-struct-field.rs (100%) rename {src/test => tests}/rustdoc/no_std-primitive.rs (100%) rename {src/test => tests}/rustdoc/normalize-assoc-item.rs (100%) rename {src/test => tests}/rustdoc/not-wf-ambiguous-normalization.rs (100%) rename {src/test => tests}/rustdoc/nul-error.rs (100%) rename {src/test => tests}/rustdoc/playground-arg.rs (100%) rename {src/test => tests}/rustdoc/playground-empty.rs (100%) rename {src/test => tests}/rustdoc/playground-none.rs (100%) rename {src/test => tests}/rustdoc/playground-syntax-error.rs (100%) rename {src/test => tests}/rustdoc/playground.rs (100%) rename {src/test => tests}/rustdoc/primitive-link.rs (100%) rename {src/test => tests}/rustdoc/primitive-reexport.rs (100%) rename {src/test => tests}/rustdoc/primitive-reference.rs (100%) rename {src/test => tests}/rustdoc/primitive-slice-auto-trait.rs (100%) rename {src/test => tests}/rustdoc/primitive-tuple-auto-trait.rs (100%) rename {src/test => tests}/rustdoc/primitive-tuple-variadic.rs (100%) rename {src/test => tests}/rustdoc/primitive-unit-auto-trait.rs (100%) rename {src/test => tests}/rustdoc/primitive.rs (100%) rename {src/test => tests}/rustdoc/primitive/no_std.rs (100%) rename {src/test => tests}/rustdoc/primitive/primitive-generic-impl.rs (100%) rename {src/test => tests}/rustdoc/private-type-alias.rs (100%) rename {src/test => tests}/rustdoc/proc-macro.rs (100%) rename {src/test => tests}/rustdoc/process-termination.rs (100%) rename {src/test => tests}/rustdoc/pub-extern-crate.rs (100%) rename {src/test => tests}/rustdoc/pub-method.rs (100%) rename {src/test => tests}/rustdoc/pub-use-extern-macros.rs (100%) rename {src/test => tests}/rustdoc/range-arg-pattern.rs (100%) rename {src/test => tests}/rustdoc/raw-ident-eliminate-r-hashtag.rs (100%) rename {src/test => tests}/rustdoc/read-more-unneeded.rs (100%) rename {src/test => tests}/rustdoc/recursion1.rs (100%) rename {src/test => tests}/rustdoc/recursion2.rs (100%) rename {src/test => tests}/rustdoc/recursion3.rs (100%) rename {src/test => tests}/rustdoc/recursive-deref-sidebar.rs (100%) rename {src/test => tests}/rustdoc/recursive-deref.rs (100%) rename {src/test => tests}/rustdoc/redirect-const.rs (100%) rename {src/test => tests}/rustdoc/redirect-map-empty.rs (100%) rename {src/test => tests}/rustdoc/redirect-map.rs (100%) rename {src/test => tests}/rustdoc/redirect-rename.rs (100%) rename {src/test => tests}/rustdoc/redirect.rs (100%) rename {src/test => tests}/rustdoc/reexport-check.rs (100%) rename {src/test => tests}/rustdoc/reexport-dep-foreign-fn.rs (100%) rename {src/test => tests}/rustdoc/reexport-doc.rs (100%) rename {src/test => tests}/rustdoc/reexport-stability-tags-deprecated-and-portability.rs (100%) rename {src/test => tests}/rustdoc/reexport-stability-tags-unstable-and-portability.rs (100%) rename {src/test => tests}/rustdoc/reexports-priv.rs (100%) rename {src/test => tests}/rustdoc/reexports.rs (100%) rename {src/test => tests}/rustdoc/remove-duplicates.rs (100%) rename {src/test => tests}/rustdoc/remove-url-from-headings.rs (100%) rename {src/test => tests}/rustdoc/return-impl-trait.rs (100%) rename {src/test => tests}/rustdoc/rfc-2632-const-trait-impl.rs (100%) rename {src/test => tests}/rustdoc/rustc-incoherent-impls.rs (100%) rename {src/test => tests}/rustdoc/rustc-macro-crate.rs (100%) rename {src/test => tests}/rustdoc/safe-intrinsic.rs (100%) rename {src/test => tests}/rustdoc/same-crate-hidden-impl-parameter.rs (100%) rename {src/test => tests}/rustdoc/sanitizer-option.rs (100%) rename {src/test => tests}/rustdoc/search-index-summaries.rs (100%) rename {src/test => tests}/rustdoc/search-index.rs (100%) rename {src/test => tests}/rustdoc/short-docblock-codeblock.rs (100%) rename {src/test => tests}/rustdoc/short-docblock.rs (100%) rename {src/test => tests}/rustdoc/short-line.md (100%) rename {src/test => tests}/rustdoc/show-const-contents.rs (100%) rename {src/test => tests}/rustdoc/sidebar-all-page.rs (100%) rename {src/test => tests}/rustdoc/sidebar-items.rs (100%) rename {src/test => tests}/rustdoc/sidebar-link-generation.rs (100%) rename {src/test => tests}/rustdoc/sidebar-links-to-foreign-impl.rs (100%) rename {src/test => tests}/rustdoc/sized_trait.rs (100%) rename {src/test => tests}/rustdoc/slice-links.link_box_generic.html (100%) rename {src/test => tests}/rustdoc/slice-links.link_box_u32.html (100%) rename {src/test => tests}/rustdoc/slice-links.link_slice_generic.html (100%) rename {src/test => tests}/rustdoc/slice-links.link_slice_u32.html (100%) rename {src/test => tests}/rustdoc/slice-links.rs (100%) rename {src/test => tests}/rustdoc/smart-punct.rs (100%) rename {src/test => tests}/rustdoc/smoke.rs (100%) rename {src/test => tests}/rustdoc/sort-modules-by-appearance.rs (100%) rename {src/test => tests}/rustdoc/source-file.rs (100%) rename {src/test => tests}/rustdoc/source-version-separator.rs (100%) rename {src/test => tests}/rustdoc/spotlight-from-dependency.odd.html (100%) rename {src/test => tests}/rustdoc/spotlight-from-dependency.rs (100%) rename {src/test => tests}/rustdoc/src-links-auto-impls.rs (100%) rename {src/test => tests}/rustdoc/src-links-external.rs (100%) rename {src/test => tests}/rustdoc/src-links.rs (100%) rename {src/test => tests}/rustdoc/src-links/compiletest-ignore-dir (100%) rename {src/test => tests}/rustdoc/src-links/fizz.rs (100%) rename {src/test => tests}/rustdoc/src-links/mod.rs (100%) rename {src/test => tests}/rustdoc/stability.rs (100%) rename {src/test => tests}/rustdoc/static-root-path.rs (100%) rename {src/test => tests}/rustdoc/static.rs (100%) rename {src/test => tests}/rustdoc/strip-block-doc-comments-stars.docblock.html (100%) rename {src/test => tests}/rustdoc/strip-block-doc-comments-stars.rs (100%) rename {src/test => tests}/rustdoc/strip-enum-variant.no-not-shown.html (100%) rename {src/test => tests}/rustdoc/strip-enum-variant.rs (100%) rename {src/test => tests}/rustdoc/struct-arg-pattern.rs (100%) rename {src/test => tests}/rustdoc/struct-field.rs (100%) rename {src/test => tests}/rustdoc/struct-implementations-title.rs (100%) rename {src/test => tests}/rustdoc/structfields.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/basic.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/complex.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/crate-local.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/issue-72213-projection-lifetime.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/lifetimes.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/manual.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/negative.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/nested.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/no-redundancy.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/overflow.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/project.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/self-referential.rs (100%) rename {src/test => tests}/rustdoc/synthetic_auto/static-region.rs (100%) rename {src/test => tests}/rustdoc/tab_title.rs (100%) rename {src/test => tests}/rustdoc/table-in-docblock.rs (100%) rename {src/test => tests}/rustdoc/task-lists.rs (100%) rename {src/test => tests}/rustdoc/test-lists.rs (100%) rename {src/test => tests}/rustdoc/test-parens.rs (100%) rename {src/test => tests}/rustdoc/test-strikethrough.rs (100%) rename {src/test => tests}/rustdoc/test_option_check/bar.rs (100%) rename {src/test => tests}/rustdoc/test_option_check/test.rs (100%) rename {src/test => tests}/rustdoc/thread-local-src.rs (100%) rename {src/test => tests}/rustdoc/titles.rs (100%) rename {src/test => tests}/rustdoc/toggle-item-contents.rs (100%) rename {src/test => tests}/rustdoc/toggle-method.rs (100%) rename {src/test => tests}/rustdoc/toggle-trait-fn.rs (100%) rename {src/test => tests}/rustdoc/trait-alias-mention.rs (100%) rename {src/test => tests}/rustdoc/trait-impl-items-links-and-anchors.rs (100%) rename {src/test => tests}/rustdoc/trait-impl.rs (100%) rename {src/test => tests}/rustdoc/trait-self-link.rs (100%) rename {src/test => tests}/rustdoc/trait-src-link.rs (100%) rename {src/test => tests}/rustdoc/trait-visibility.rs (100%) rename {src/test => tests}/rustdoc/trait_alias.rs (100%) rename {src/test => tests}/rustdoc/traits-in-bodies-private.rs (100%) rename {src/test => tests}/rustdoc/traits-in-bodies.rs (100%) rename {src/test => tests}/rustdoc/tuple-struct-fields-doc.rs (100%) rename {src/test => tests}/rustdoc/tuples.link1_i32.html (100%) rename {src/test => tests}/rustdoc/tuples.link1_t.html (100%) rename {src/test => tests}/rustdoc/tuples.link2_i32.html (100%) rename {src/test => tests}/rustdoc/tuples.link2_t.html (100%) rename {src/test => tests}/rustdoc/tuples.link2_tu.html (100%) rename {src/test => tests}/rustdoc/tuples.link_unit.html (100%) rename {src/test => tests}/rustdoc/tuples.rs (100%) rename {src/test => tests}/rustdoc/type-layout-flag-required.rs (100%) rename {src/test => tests}/rustdoc/type-layout.rs (100%) rename {src/test => tests}/rustdoc/typedef.rs (100%) rename {src/test => tests}/rustdoc/unindent.md (100%) rename {src/test => tests}/rustdoc/unindent.rs (100%) rename {src/test => tests}/rustdoc/union.rs (100%) rename {src/test => tests}/rustdoc/unit-return.rs (100%) rename {src/test => tests}/rustdoc/universal-impl-trait.rs (100%) rename {src/test => tests}/rustdoc/unneeded-trait-implementations-title.rs (100%) rename {src/test => tests}/rustdoc/use-attr.rs (100%) rename {src/test => tests}/rustdoc/useless_lifetime_bound.rs (100%) rename {src/test => tests}/rustdoc/variadic.rs (100%) rename {src/test => tests}/rustdoc/version-separator-without-source.rs (100%) rename {src/test => tests}/rustdoc/viewpath-rename.rs (100%) rename {src/test => tests}/rustdoc/viewpath-self.rs (100%) rename {src/test => tests}/rustdoc/visibility.rs (100%) rename {src/test => tests}/rustdoc/where-clause-order.rs (100%) rename {src/test => tests}/rustdoc/where-sized.rs (100%) rename {src/test => tests}/rustdoc/where.SWhere_Simd_item-decl.html (100%) rename {src/test => tests}/rustdoc/where.SWhere_TraitWhere_item-decl.html (100%) rename {src/test => tests}/rustdoc/where.rs (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.enum.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.enum2.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.rs (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.struct.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.struct2.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.trait.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.trait2.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.union.html (100%) rename {src/test => tests}/rustdoc/whitespace-after-where-clause.union2.html (100%) rename {src/test => tests}/rustdoc/without-redirect.rs (100%) rename {src/test => tests}/rustdoc/wrapping.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/empty-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-13560-1.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-13560-2.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-13560-3.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-16822.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-18502.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-24106.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/issue-40001-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lint-for-crate-rpass.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lint-for-crate.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lint-group-plugin-test.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lint-plugin-test.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lint-tool-test.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/multiple-plugins-1.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/multiple-plugins-2.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/outlive-expansion-phase.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/rlib-crate-test.rs (100%) rename {src/test => tests}/ui-fulldeps/auxiliary/syntax-extension-with-dll-deps-1.rs (100%) rename {src/test => tests}/ui-fulldeps/compiler-calls.rs (100%) rename {src/test => tests}/ui-fulldeps/create-dir-all-bare.rs (100%) rename {src/test => tests}/ui-fulldeps/deriving-encodable-decodable-box.rs (100%) rename {src/test => tests}/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs (100%) rename {src/test => tests}/ui-fulldeps/deriving-global.rs (100%) rename {src/test => tests}/ui-fulldeps/deriving-hygiene.rs (100%) rename {src/test => tests}/ui-fulldeps/dropck-tarena-cycle-checked.rs (100%) rename {src/test => tests}/ui-fulldeps/dropck-tarena-cycle-checked.stderr (100%) rename {src/test => tests}/ui-fulldeps/dropck-tarena-unsound-drop.rs (100%) rename {src/test => tests}/ui-fulldeps/dropck-tarena-unsound-drop.stderr (100%) rename {src/test => tests}/ui-fulldeps/dropck_tarena_sound_drop.rs (100%) rename {src/test => tests}/ui-fulldeps/empty-struct-braces-derive.rs (100%) rename {src/test => tests}/ui-fulldeps/extern-mod-syntax.rs (100%) rename {src/test => tests}/ui-fulldeps/feature-gate-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/feature-gate-plugin.stderr (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/duplicate-a-b.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/duplicate-a.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/label-with-hyphens.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/missing-crate-name.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/missing-message.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/slug-with-hyphens.ftl (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/test.rs (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/test.stderr (100%) rename {src/test => tests}/ui-fulldeps/fluent-messages/valid.ftl (100%) rename {src/test => tests}/ui-fulldeps/gated-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/gated-plugin.stderr (100%) rename {src/test => tests}/ui-fulldeps/hash-stable-is-unstable.rs (100%) rename {src/test => tests}/ui-fulldeps/hash-stable-is-unstable.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/bad_opt_access.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/bad_opt_access.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/default_hash_types.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/default_hash_types.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/diagnostics.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/diagnostics.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/diagnostics_incorrect.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/diagnostics_incorrect.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/existing_doc_keyword.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/existing_doc_keyword.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/query_stability.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/query_stability.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/query_stability_incorrect.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/query_stability_incorrect.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/rustc_pass_by_value.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/rustc_pass_by_value.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/rustc_pass_by_value_self.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/rustc_pass_by_value_self.stderr (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/ty_tykind_usage.rs (100%) rename {src/test => tests}/ui-fulldeps/internal-lints/ty_tykind_usage.stderr (100%) rename {src/test => tests}/ui-fulldeps/issue-11881.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-13560.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-14021.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-15149.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-15778-fail.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-15778-fail.stderr (100%) rename {src/test => tests}/ui-fulldeps/issue-15924.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-16822.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-18502.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-24106.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-2804.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-40001.rs (100%) rename {src/test => tests}/ui-fulldeps/issue-40001.stderr (100%) rename {src/test => tests}/ui-fulldeps/issue-81357-unsound-file-methods.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-group-denied-lint-allowed.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-group-plugin-deny-cmdline.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-group-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-group-plugin.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-pass-macros.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-cmdline-allow.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-cmdline-allow.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-cmdline-load.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-cmdline-load.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-deny-attr.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-deny-attr.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-deny-cmdline.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-deny-cmdline.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-forbid-attrs.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-forbid-attrs.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-forbid-cmdline.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin-forbid-cmdline.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-plugin.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-tool-cmdline-allow.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-tool-cmdline-allow.stderr (100%) rename {src/test => tests}/ui-fulldeps/lint-tool-test.rs (100%) rename {src/test => tests}/ui-fulldeps/lint-tool-test.stderr (100%) rename {src/test => tests}/ui-fulldeps/lto-syntax-extension.rs (100%) rename {src/test => tests}/ui-fulldeps/lto-syntax-extension.stderr (100%) rename {src/test => tests}/ui-fulldeps/macro-crate-rlib.rs (100%) rename {src/test => tests}/ui-fulldeps/macro-crate-rlib.stderr (100%) rename {src/test => tests}/ui-fulldeps/missing-rustc-driver-error.rs (100%) rename {src/test => tests}/ui-fulldeps/missing-rustc-driver-error.stderr (100%) rename {src/test => tests}/ui-fulldeps/mod_dir_path_canonicalized.rs (100%) rename {src/test => tests}/ui-fulldeps/mod_dir_simple/compiletest-ignore-dir (100%) rename {src/test => tests}/ui-fulldeps/mod_dir_simple/test.rs (100%) rename {src/test => tests}/ui-fulldeps/multiple-plugins.rs (100%) rename {src/test => tests}/ui-fulldeps/multiple-plugins.stderr (100%) rename {src/test => tests}/ui-fulldeps/myriad-closures.rs (100%) rename {src/test => tests}/ui-fulldeps/outlive-expansion-phase.rs (100%) rename {src/test => tests}/ui-fulldeps/outlive-expansion-phase.stderr (100%) rename {src/test => tests}/ui-fulldeps/pathless-extern-unstable.rs (100%) rename {src/test => tests}/ui-fulldeps/pathless-extern-unstable.stderr (100%) rename {src/test => tests}/ui-fulldeps/plugin-args.rs (100%) rename {src/test => tests}/ui-fulldeps/plugin-args.stderr (100%) rename {src/test => tests}/ui-fulldeps/plugin-as-extern-crate.rs (100%) rename {src/test => tests}/ui-fulldeps/pprust-expr-roundtrip.rs (100%) rename {src/test => tests}/ui-fulldeps/regions-mock-tcx.rs (100%) rename {src/test => tests}/ui-fulldeps/rename-directory.rs (100%) rename {src/test => tests}/ui-fulldeps/rustc_encodable_hygiene.rs (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/diagnostic-derive.rs (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/enforce_slug_naming.stderr (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs (100%) rename {src/test => tests}/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr (100%) rename {src/test => tests}/ui-fulldeps/stdio-from.rs (100%) rename {src/test => tests}/ui-fulldeps/switch-stdout.rs (100%) rename {src/test => tests}/ui/.gitattributes (100%) rename {src/test => tests}/ui/abi/abi-sysv64-arg-passing.rs (100%) rename {src/test => tests}/ui/abi/abi-sysv64-register-usage.rs (100%) rename {src/test => tests}/ui/abi/abi-typo-unstable.rs (100%) rename {src/test => tests}/ui/abi/abi-typo-unstable.stderr (100%) rename {src/test => tests}/ui/abi/anon-extern-mod.rs (100%) rename {src/test => tests}/ui/abi/c-stack-as-value.rs (100%) rename {src/test => tests}/ui/abi/c-stack-returning-int64.rs (100%) rename {src/test => tests}/ui/abi/cabi-int-widening.rs (100%) rename {src/test => tests}/ui/abi/cross-crate/anon-extern-mod-cross-crate-2.rs (100%) rename {src/test => tests}/ui/abi/cross-crate/auxiliary/anon-extern-mod-cross-crate-1.rs (100%) rename {src/test => tests}/ui/abi/cross-crate/duplicated-external-mods.rs (100%) rename {src/test => tests}/ui/abi/extern/auxiliary/extern-crosscrate-source.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-call-deep.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-call-deep2.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-call-direct.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-call-indirect.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-call-scrub.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-crosscrate.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-TwoU16s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-TwoU32s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-TwoU64s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-TwoU8s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-char.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-double.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-empty.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-u32.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-pass-u64.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-return-TwoU16s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-return-TwoU32s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-return-TwoU64s.rs (100%) rename {src/test => tests}/ui/abi/extern/extern-return-TwoU8s.rs (100%) rename {src/test => tests}/ui/abi/foreign/auxiliary/foreign_lib.rs (100%) rename {src/test => tests}/ui/abi/foreign/foreign-call-no-runtime.rs (100%) rename {src/test => tests}/ui/abi/foreign/foreign-dupe.rs (100%) rename {src/test => tests}/ui/abi/foreign/foreign-fn-with-byval.rs (100%) rename {src/test => tests}/ui/abi/foreign/foreign-no-abi.rs (100%) rename {src/test => tests}/ui/abi/foreign/invoke-external-foreign.rs (100%) rename {src/test => tests}/ui/abi/homogenous-floats-target-feature-mixup.rs (100%) rename {src/test => tests}/ui/abi/issue-28676.rs (100%) rename {src/test => tests}/ui/abi/issues/issue-22565-rust-call.rs (100%) rename {src/test => tests}/ui/abi/issues/issue-22565-rust-call.stderr (100%) rename {src/test => tests}/ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs (100%) rename {src/test => tests}/ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs (100%) rename {src/test => tests}/ui/abi/lib-defaults.rs (100%) rename {src/test => tests}/ui/abi/mir/mir_codegen_calls_variadic.rs (100%) rename {src/test => tests}/ui/abi/nullable-pointer-ffi-compat.rs (100%) rename {src/test => tests}/ui/abi/numbers-arithmetic/i128-ffi.rs (100%) rename {src/test => tests}/ui/abi/rustcall-generic.rs (100%) rename {src/test => tests}/ui/abi/segfault-no-out-of-stack.rs (100%) rename {src/test => tests}/ui/abi/stack-probes-lto.rs (100%) rename {src/test => tests}/ui/abi/stack-probes.rs (100%) rename {src/test => tests}/ui/abi/stack-protector.rs (100%) rename {src/test => tests}/ui/abi/statics/static-mut-foreign.rs (100%) rename {src/test => tests}/ui/abi/struct-enums/struct-return.rs (100%) rename {src/test => tests}/ui/abi/union/union-c-interop.rs (100%) rename {src/test => tests}/ui/abi/unsupported.aarch64.stderr (100%) rename {src/test => tests}/ui/abi/unsupported.arm.stderr (100%) rename {src/test => tests}/ui/abi/unsupported.i686.stderr (100%) rename {src/test => tests}/ui/abi/unsupported.rs (100%) rename {src/test => tests}/ui/abi/unsupported.x64.stderr (100%) rename {src/test => tests}/ui/abi/variadic-ffi.rs (100%) rename {src/test => tests}/ui/abi/x86stdcall.rs (100%) rename {src/test => tests}/ui/abi/x86stdcall2.rs (100%) rename {src/test => tests}/ui/alias-uninit-value.rs (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-1.rs (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-1.stderr (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-2.rs (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-2.stderr (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-3.rs (100%) rename {src/test => tests}/ui/alloc-error/alloc-error-handler-bad-signature-3.stderr (100%) rename {src/test => tests}/ui/alloc-error/default-alloc-error-hook.rs (100%) rename {src/test => tests}/ui/allocator/allocator-args.rs (100%) rename {src/test => tests}/ui/allocator/allocator-args.stderr (100%) rename {src/test => tests}/ui/allocator/auxiliary/custom-as-global.rs (100%) rename {src/test => tests}/ui/allocator/auxiliary/custom.rs (100%) rename {src/test => tests}/ui/allocator/auxiliary/helper.rs (100%) rename {src/test => tests}/ui/allocator/auxiliary/system-allocator.rs (100%) rename {src/test => tests}/ui/allocator/auxiliary/system-allocator2.rs (100%) rename {src/test => tests}/ui/allocator/custom-in-block.rs (100%) rename {src/test => tests}/ui/allocator/custom-in-submodule.rs (100%) rename {src/test => tests}/ui/allocator/custom.rs (100%) rename {src/test => tests}/ui/allocator/function-allocator.rs (100%) rename {src/test => tests}/ui/allocator/function-allocator.stderr (100%) rename {src/test => tests}/ui/allocator/hygiene.rs (100%) rename {src/test => tests}/ui/allocator/no_std-alloc-error-handler-custom.rs (100%) rename {src/test => tests}/ui/allocator/no_std-alloc-error-handler-default.rs (100%) rename {src/test => tests}/ui/allocator/not-an-allocator.rs (100%) rename {src/test => tests}/ui/allocator/not-an-allocator.stderr (100%) rename {src/test => tests}/ui/allocator/object-safe.rs (100%) rename {src/test => tests}/ui/allocator/two-allocators.rs (100%) rename {src/test => tests}/ui/allocator/two-allocators.stderr (100%) rename {src/test => tests}/ui/allocator/two-allocators2.rs (100%) rename {src/test => tests}/ui/allocator/two-allocators2.stderr (100%) rename {src/test => tests}/ui/allocator/two-allocators3.rs (100%) rename {src/test => tests}/ui/allocator/two-allocators3.stderr (100%) rename {src/test => tests}/ui/allocator/xcrate-use.rs (100%) rename {src/test => tests}/ui/allocator/xcrate-use2.rs (100%) rename {src/test => tests}/ui/annotate-snippet/auxiliary/multispan.rs (100%) rename {src/test => tests}/ui/annotate-snippet/missing-type.rs (100%) rename {src/test => tests}/ui/annotate-snippet/missing-type.stderr (100%) rename {src/test => tests}/ui/annotate-snippet/multispan.rs (100%) rename {src/test => tests}/ui/annotate-snippet/multispan.stderr (100%) rename {src/test => tests}/ui/anon-params/anon-params-denied-2018.rs (100%) rename {src/test => tests}/ui/anon-params/anon-params-denied-2018.stderr (100%) rename {src/test => tests}/ui/anon-params/anon-params-deprecated.fixed (100%) rename {src/test => tests}/ui/anon-params/anon-params-deprecated.rs (100%) rename {src/test => tests}/ui/anon-params/anon-params-deprecated.stderr (100%) rename {src/test => tests}/ui/anon-params/anon-params-edition-hygiene.rs (100%) rename {src/test => tests}/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs (100%) rename {src/test => tests}/ui/anonymous-higher-ranked-lifetime.rs (100%) rename {src/test => tests}/ui/anonymous-higher-ranked-lifetime.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/basic.rs (100%) rename {src/test => tests}/ui/argument-suggestions/basic.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/complex.rs (100%) rename {src/test => tests}/ui/argument-suggestions/complex.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/display-is-suggestable.rs (100%) rename {src/test => tests}/ui/argument-suggestions/display-is-suggestable.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/exotic-calls.rs (100%) rename {src/test => tests}/ui/argument-suggestions/exotic-calls.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/extern-fn-arg-names.rs (100%) rename {src/test => tests}/ui/argument-suggestions/extern-fn-arg-names.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/extra_arguments.rs (100%) rename {src/test => tests}/ui/argument-suggestions/extra_arguments.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/formal-and-expected-differ.rs (100%) rename {src/test => tests}/ui/argument-suggestions/formal-and-expected-differ.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/invalid_arguments.rs (100%) rename {src/test => tests}/ui/argument-suggestions/invalid_arguments.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-100154.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-100154.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-100478.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-100478.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-101097.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-101097.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-96638.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-96638.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-97197.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-97197.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-97484.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-97484.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-98894.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-98894.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-98897.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-98897.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/issue-99482.rs (100%) rename {src/test => tests}/ui/argument-suggestions/issue-99482.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/missing_arguments.rs (100%) rename {src/test => tests}/ui/argument-suggestions/missing_arguments.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/mixed_cases.rs (100%) rename {src/test => tests}/ui/argument-suggestions/mixed_cases.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/permuted_arguments.rs (100%) rename {src/test => tests}/ui/argument-suggestions/permuted_arguments.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/swapped_arguments.rs (100%) rename {src/test => tests}/ui/argument-suggestions/swapped_arguments.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/too-long.rs (100%) rename {src/test => tests}/ui/argument-suggestions/too-long.stderr (100%) rename {src/test => tests}/ui/argument-suggestions/two-mismatch-notes.rs (100%) rename {src/test => tests}/ui/argument-suggestions/two-mismatch-notes.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/array-break-length.rs (100%) rename {src/test => tests}/ui/array-slice-vec/array-break-length.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/array-not-vector.rs (100%) rename {src/test => tests}/ui/array-slice-vec/array-not-vector.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/array_const_index-0.rs (100%) rename {src/test => tests}/ui/array-slice-vec/array_const_index-0.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/array_const_index-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/array_const_index-1.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/array_const_index-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/bounds-check-no-overflow.rs (100%) rename {src/test => tests}/ui/array-slice-vec/box-of-array-of-drop-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/box-of-array-of-drop-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/byte-literals.rs (100%) rename {src/test => tests}/ui/array-slice-vec/cast-in-array-size.rs (100%) rename {src/test => tests}/ui/array-slice-vec/check-static-mut-slices.rs (100%) rename {src/test => tests}/ui/array-slice-vec/check-static-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/copy-out-of-array-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/destructure-array-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/dst-raw-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/empty-mutable-vec.rs (100%) rename {src/test => tests}/ui/array-slice-vec/estr-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/evec-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/fixed_length_copy.rs (100%) rename {src/test => tests}/ui/array-slice-vec/huge-largest-array.rs (100%) rename {src/test => tests}/ui/array-slice-vec/infer_array_len.rs (100%) rename {src/test => tests}/ui/array-slice-vec/infer_array_len.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/issue-15730.rs (100%) rename {src/test => tests}/ui/array-slice-vec/issue-18425.rs (100%) rename {src/test => tests}/ui/array-slice-vec/issue-69103-extra-binding-subslice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/issue-69103-extra-binding-subslice.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/ivec-pass-by-value.rs (100%) rename {src/test => tests}/ui/array-slice-vec/match_arr_unknown_len.rs (100%) rename {src/test => tests}/ui/array-slice-vec/match_arr_unknown_len.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/mut-vstore-expr.rs (100%) rename {src/test => tests}/ui/array-slice-vec/mutability-inherits-through-fixed-length-vec.rs (100%) rename {src/test => tests}/ui/array-slice-vec/mutable-alias-vec.rs (100%) rename {src/test => tests}/ui/array-slice-vec/nested-vec-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/nested-vec-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/nested-vec-3.rs (100%) rename {src/test => tests}/ui/array-slice-vec/new-style-fixed-length-vec.rs (100%) rename {src/test => tests}/ui/array-slice-vec/rcvr-borrowed-to-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/repeat_empty_ok.rs (100%) rename {src/test => tests}/ui/array-slice-vec/repeat_empty_ok.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/repeated-vector-syntax.rs (100%) rename {src/test => tests}/ui/array-slice-vec/show-boxed-slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-2.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/slice-mut-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-mut-2.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/slice-mut.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-mut.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/slice-of-zero-size-elements.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-panic-1.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-panic-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-pat-type-mismatches.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-pat-type-mismatches.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/slice-to-vec-comparison.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice-to-vec-comparison.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/slice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice_binary_search.rs (100%) rename {src/test => tests}/ui/array-slice-vec/slice_is_sorted_by_borrow.rs (100%) rename {src/test => tests}/ui/array-slice-vec/subslice-only-once-semantic-restriction.rs (100%) rename {src/test => tests}/ui/array-slice-vec/subslice-only-once-semantic-restriction.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/subslice-patterns-const-eval-match.rs (100%) rename {src/test => tests}/ui/array-slice-vec/subslice-patterns-const-eval.rs (100%) rename {src/test => tests}/ui/array-slice-vec/suggest-array-length.fixed (100%) rename {src/test => tests}/ui/array-slice-vec/suggest-array-length.rs (100%) rename {src/test => tests}/ui/array-slice-vec/suggest-array-length.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/variance-vec-covariant.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-dst.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-fixed-length.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-late-init.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-no-std.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-rvalue-scope.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-with-brackets.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-with-comma-only.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-with-comma-only.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/vec-macro-with-trailing-comma.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-matching-autoslice.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-matching-fixed.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-matching-fold.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-matching-legal-tail-element-borrow.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-matching.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-mut-iter-borrow.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-mut-iter-borrow.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/vec-overrun.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-repeat-with-cast.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-res-add.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vec-res-add.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/vec-tail-matching.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vector-cast-weirdness.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vector-cast-weirdness.stderr (100%) rename {src/test => tests}/ui/array-slice-vec/vector-no-ann-2.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vector-no-ann.rs (100%) rename {src/test => tests}/ui/array-slice-vec/vector-no-ann.stderr (100%) rename {src/test => tests}/ui/artificial-block.rs (100%) rename {src/test => tests}/ui/as-precedence.rs (100%) rename {src/test => tests}/ui/asm/aarch64/bad-options.rs (100%) rename {src/test => tests}/ui/asm/aarch64/bad-options.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/bad-reg.rs (100%) rename {src/test => tests}/ui/asm/aarch64/bad-reg.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/const.rs (100%) rename {src/test => tests}/ui/asm/aarch64/duplicate-options.fixed (100%) rename {src/test => tests}/ui/asm/aarch64/duplicate-options.rs (100%) rename {src/test => tests}/ui/asm/aarch64/duplicate-options.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/interpolated-idents.rs (100%) rename {src/test => tests}/ui/asm/aarch64/interpolated-idents.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/llvm-58384.rs (100%) rename {src/test => tests}/ui/asm/aarch64/may_unwind.rs (100%) rename {src/test => tests}/ui/asm/aarch64/parse-error.rs (100%) rename {src/test => tests}/ui/asm/aarch64/parse-error.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/srcloc.rs (100%) rename {src/test => tests}/ui/asm/aarch64/srcloc.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/sym.rs (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-2-2.rs (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-2-2.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-2.rs (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-2.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-3.rs (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-3.stderr (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-4.rs (100%) rename {src/test => tests}/ui/asm/aarch64/type-check-4.stderr (100%) rename {src/test => tests}/ui/asm/bad-arch.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/bad-arch.rs (100%) rename {src/test => tests}/ui/asm/bad-arch.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/bad-template.aarch64_mirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/bad-template.aarch64_thirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/bad-template.rs (100%) rename {src/test => tests}/ui/asm/bad-template.x86_64_mirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/bad-template.x86_64_thirunsafeck.stderr (100%) rename {src/test => tests}/ui/asm/generic-const.rs (100%) rename {src/test => tests}/ui/asm/inline-syntax.arm.stderr (100%) rename {src/test => tests}/ui/asm/inline-syntax.rs (100%) rename {src/test => tests}/ui/asm/inline-syntax.x86_64.stderr (100%) rename {src/test => tests}/ui/asm/issue-72570.rs (100%) rename {src/test => tests}/ui/asm/issue-72570.stderr (100%) rename {src/test => tests}/ui/asm/issue-85247.rs (100%) rename {src/test => tests}/ui/asm/issue-85247.rwpi.stderr (100%) rename {src/test => tests}/ui/asm/issue-87802.rs (100%) rename {src/test => tests}/ui/asm/issue-87802.stderr (100%) rename {src/test => tests}/ui/asm/issue-89305.rs (100%) rename {src/test => tests}/ui/asm/issue-89305.stderr (100%) rename {src/test => tests}/ui/asm/issue-92378.rs (100%) rename {src/test => tests}/ui/asm/issue-97490.rs (100%) rename {src/test => tests}/ui/asm/issue-99071.rs (100%) rename {src/test => tests}/ui/asm/issue-99071.stderr (100%) rename {src/test => tests}/ui/asm/issue-99122-2.rs (100%) rename {src/test => tests}/ui/asm/issue-99122.rs (100%) rename {src/test => tests}/ui/asm/issue-99122.stderr (100%) rename {src/test => tests}/ui/asm/may_unwind.rs (100%) rename {src/test => tests}/ui/asm/naked-functions-ffi.rs (100%) rename {src/test => tests}/ui/asm/naked-functions-ffi.stderr (100%) rename {src/test => tests}/ui/asm/naked-functions-unused.aarch64.stderr (100%) rename {src/test => tests}/ui/asm/naked-functions-unused.rs (100%) rename {src/test => tests}/ui/asm/naked-functions-unused.x86_64.stderr (100%) rename {src/test => tests}/ui/asm/naked-functions.rs (100%) rename {src/test => tests}/ui/asm/naked-functions.stderr (100%) rename {src/test => tests}/ui/asm/naked-invalid-attr.rs (100%) rename {src/test => tests}/ui/asm/naked-invalid-attr.stderr (100%) rename {src/test => tests}/ui/asm/named-asm-labels.rs (100%) rename {src/test => tests}/ui/asm/named-asm-labels.s (100%) rename {src/test => tests}/ui/asm/named-asm-labels.stderr (100%) rename {src/test => tests}/ui/asm/noreturn.rs (100%) rename {src/test => tests}/ui/asm/reg-conflict.rs (100%) rename {src/test => tests}/ui/asm/reg-conflict.stderr (100%) rename {src/test => tests}/ui/asm/type-check-1.rs (100%) rename {src/test => tests}/ui/asm/type-check-1.stderr (100%) rename {src/test => tests}/ui/asm/type-check-4.rs (100%) rename {src/test => tests}/ui/asm/type-check-4.stderr (100%) rename {src/test => tests}/ui/asm/unpretty-expanded.rs (100%) rename {src/test => tests}/ui/asm/unpretty-expanded.stdout (100%) rename {src/test => tests}/ui/asm/x86_64/bad-clobber-abi.rs (100%) rename {src/test => tests}/ui/asm/x86_64/bad-clobber-abi.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/bad-options.rs (100%) rename {src/test => tests}/ui/asm/x86_64/bad-options.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/bad-reg.rs (100%) rename {src/test => tests}/ui/asm/x86_64/bad-reg.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/const.rs (100%) rename {src/test => tests}/ui/asm/x86_64/duplicate-options.fixed (100%) rename {src/test => tests}/ui/asm/x86_64/duplicate-options.rs (100%) rename {src/test => tests}/ui/asm/x86_64/duplicate-options.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/interpolated-idents.rs (100%) rename {src/test => tests}/ui/asm/x86_64/interpolated-idents.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/issue-82869.rs (100%) rename {src/test => tests}/ui/asm/x86_64/issue-82869.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/issue-89875.rs (100%) rename {src/test => tests}/ui/asm/x86_64/issue-96797.rs (100%) rename {src/test => tests}/ui/asm/x86_64/may_unwind.rs (100%) rename {src/test => tests}/ui/asm/x86_64/multiple-clobber-abi.rs (100%) rename {src/test => tests}/ui/asm/x86_64/parse-error.rs (100%) rename {src/test => tests}/ui/asm/x86_64/parse-error.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/srcloc.rs (100%) rename {src/test => tests}/ui/asm/x86_64/srcloc.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/sym.rs (100%) rename {src/test => tests}/ui/asm/x86_64/target-feature-attr.rs (100%) rename {src/test => tests}/ui/asm/x86_64/target-feature-attr.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-2.rs (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-2.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-3.rs (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-3.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-4.rs (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-4.stderr (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-5.rs (100%) rename {src/test => tests}/ui/asm/x86_64/type-check-5.stderr (100%) rename {src/test => tests}/ui/assign-assign.rs (100%) rename {src/test => tests}/ui/assign-imm-local-twice.rs (100%) rename {src/test => tests}/ui/assign-imm-local-twice.stderr (100%) rename {src/test => tests}/ui/assoc-lang-items.rs (100%) rename {src/test => tests}/ui/assoc-lang-items.stderr (100%) rename {src/test => tests}/ui/assoc-oddities-3.rs (100%) rename {src/test => tests}/ui/associated-consts/assoc-const-eq-missing.rs (100%) rename {src/test => tests}/ui/associated-consts/assoc-const-eq-missing.stderr (100%) rename {src/test => tests}/ui/associated-consts/assoc-const-ty-mismatch.rs (100%) rename {src/test => tests}/ui/associated-consts/assoc-const-ty-mismatch.stderr (100%) rename {src/test => tests}/ui/associated-consts/assoc-const.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-ambiguity-report.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-ambiguity-report.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-array-len.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-array-len.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-const-eval.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-cross-crate-const-eval.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-cross-crate-defaults.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-cross-crate.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-dead-code.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-dead-code.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-generic-obligations.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-generic-obligations.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-impl-wrong-lifetime.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-impl-wrong-lifetime.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-impl-wrong-type.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-impl-wrong-type.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-in-global-const.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-in-trait.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-in-trait.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-inherent-impl.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-marks-live-code.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-match-patterns.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-no-item.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-no-item.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-outer-ty-refs.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-overwrite-default.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-private-impl.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-private-impl.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-public-impl.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-range-match-patterns.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-resolution-order.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-self-type.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-trait-bound.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arms.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arms.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arrays-2.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arrays-2.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arrays.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameter-arrays.stderr (100%) rename {src/test => tests}/ui/associated-consts/associated-const-type-parameters.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-ufcs-infer-trait.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-use-default.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const-use-impl-of-same-trait.rs (100%) rename {src/test => tests}/ui/associated-consts/associated-const.rs (100%) rename {src/test => tests}/ui/associated-consts/auxiliary/associated-const-cc-lib.rs (100%) rename {src/test => tests}/ui/associated-consts/auxiliary/empty-struct.rs (100%) rename {src/test => tests}/ui/associated-consts/defaults-cyclic-fail.rs (100%) rename {src/test => tests}/ui/associated-consts/defaults-cyclic-fail.stderr (100%) rename {src/test => tests}/ui/associated-consts/defaults-cyclic-pass.rs (100%) rename {src/test => tests}/ui/associated-consts/defaults-not-assumed-fail.rs (100%) rename {src/test => tests}/ui/associated-consts/defaults-not-assumed-fail.stderr (100%) rename {src/test => tests}/ui/associated-consts/defaults-not-assumed-pass.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-102335-const.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-102335-const.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-105330.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-105330.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-47814.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-47814.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-58022.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-58022.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-63496.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-63496.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-69020-assoc-const-arith-overflow.noopt.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr (100%) rename {src/test => tests}/ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-88599-ref-self.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-93775.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-93835.rs (100%) rename {src/test => tests}/ui/associated-consts/issue-93835.stderr (100%) rename {src/test => tests}/ui/associated-consts/mismatched_impl_ty_1.rs (100%) rename {src/test => tests}/ui/associated-consts/mismatched_impl_ty_2.rs (100%) rename {src/test => tests}/ui/associated-consts/mismatched_impl_ty_3.rs (100%) rename {src/test => tests}/ui/associated-consts/shadowed-const.rs (100%) rename {src/test => tests}/ui/associated-consts/shadowed-const.stderr (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-no-body.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-no-body.stderr (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-private.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-private.stderr (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-unstable.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-unstable.stderr (100%) rename {src/test => tests}/ui/associated-inherent-types/assoc-inherent-use.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/auxiliary/assoc-inherent-unstable.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/issue-104260.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/normalize-projection-0.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/normalize-projection-1.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/struct-generics.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/style.rs (100%) rename {src/test => tests}/ui/associated-inherent-types/style.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-bounds.rs (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-bounds.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names-2.rs (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names-2.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names-3.rs (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names-3.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names.rs (100%) rename {src/test => tests}/ui/associated-item/associated-item-duplicate-names.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-enum.rs (100%) rename {src/test => tests}/ui/associated-item/associated-item-enum.stderr (100%) rename {src/test => tests}/ui/associated-item/associated-item-two-bounds.rs (100%) rename {src/test => tests}/ui/associated-item/impl-duplicate-methods.rs (100%) rename {src/test => tests}/ui/associated-item/impl-duplicate-methods.stderr (100%) rename {src/test => tests}/ui/associated-item/issue-105449.rs (100%) rename {src/test => tests}/ui/associated-item/issue-48027.rs (100%) rename {src/test => tests}/ui/associated-item/issue-48027.stderr (100%) rename {src/test => tests}/ui/associated-item/issue-87638.fixed (100%) rename {src/test => tests}/ui/associated-item/issue-87638.rs (100%) rename {src/test => tests}/ui/associated-item/issue-87638.stderr (100%) rename {src/test => tests}/ui/associated-path-shl.rs (100%) rename {src/test => tests}/ui/associated-path-shl.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/ambiguous-associated-type.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/ambiguous-associated-type2.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/ambiguous-associated-type2.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/assoc-type-bound-through-where-clause.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/associated-item-through-where-clause.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/auxiliary/fn-aux.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/auxiliary/fn-dyn-aux.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/binder-on-bound.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/binder-on-bound.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/bounds-on-assoc-in-trait.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/const-projection-err.gce.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/const-projection-err.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/const-projection-err.stock.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/duplicate.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/duplicate.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/dyn-impl-trait-type.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/dyn-rpit-and-let.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/elision.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/elision.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/entails-sized-object-safety.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/enum-bounds.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-apit.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-aux.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-dyn-apit.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-inline.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-where.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/fn-wrap-apit.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/handle-predicates-that-can-define-assoc-type.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/hrtb.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/implied-region-constraints.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/implied-region-constraints.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/inside-adt.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/inside-adt.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-102335-ty.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-102335-ty.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-61752.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-70292.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-71443-1.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-71443-1.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-71443-2.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-73818.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-79949.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-81193.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-83017.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-99828.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/issue-99828.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/order-dependent-bounds-issue-54121.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/rpit.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/struct-bounds.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/supertrait-referencing-self.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/supertrait-referencing.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/supertrait-where-referencing-self.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/trait-alias-impl-trait.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/trait-params.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/traits-assoc-anonymized.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/traits-assoc-type-macros.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/type-alias.rs (100%) rename {src/test => tests}/ui/associated-type-bounds/type-alias.stderr (100%) rename {src/test => tests}/ui/associated-type-bounds/union-bounds.rs (100%) rename {src/test => tests}/ui/associated-types/associate-type-bound-normalization.rs (100%) rename {src/test => tests}/ui/associated-types/associated-item-long-paths.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-destructuring-assignment.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-macro.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-macro.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-from-supertrait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-projection-from-supertrait.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-type-struct-construction.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-tuple-struct-construction.rs (100%) rename {src/test => tests}/ui/associated-types/associated-type-tuple-struct-construction.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-basic.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-binding-in-trait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-binding-in-where-clause.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-bound-ambiguity.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-bound-failure.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-bound-failure.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-bound-failure.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-bound.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-cc.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-coherence-failure.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-coherence-failure.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-conditional-dispatch.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-constant-type.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-doubleendediterator-object.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-duplicate-binding-in-env-hrtb.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-duplicate-binding-in-env.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-enum-field-named.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-enum-field-numbered.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-1.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-1.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-2.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-2.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-3.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-3.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-expr-path.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-expr-path.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-hr.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-hr.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-eq-obj.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-for-unimpl-trait.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-for-unimpl-trait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-for-unimpl-trait.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-from-supertrait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-impl-redirect.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-ambiguous-context.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-ambiguous-context.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-bound-type-arg.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-default-method.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-fn.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-impl-generics.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-in-inherent-method.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-incomplete-object.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-incomplete-object.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-17359.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-17359.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-20220.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-20346.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-20346.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-20371.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-issue-21212.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-iterator-binding.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-method.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-multiple-types-one-trait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-multiple-types-one-trait.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-nested-projections.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-bound.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-bound.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-supertrait-2.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-supertrait-2.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-supertrait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-no-suitable-supertrait.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-normalize-in-bounds-binding.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-normalize-in-bounds-ufcs.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-normalize-in-bounds.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-normalize-unifield-struct.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-outlives.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-outlives.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-overridden-binding-2.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-overridden-binding-2.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-overridden-binding.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-overridden-binding.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-overridden-default.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-path-1.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-path-1.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-path-2.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-path-2.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-fn.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-fn.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-struct.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-struct.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-project-from-type-param-via-bound-in-where.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-bound-ambiguity.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-bound-in-supertraits.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-from-known-type-in-impl.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-in-object-type.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-in-supertrait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-in-where-clause.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-projection-to-unrelated-trait.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-qualified-path-with-trait-with-type-parameters.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-ref-from-struct.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-ref-in-struct-literal.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-region-erasure-issue-20582.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-resolve-lifetime.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-return.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-simple.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-stream.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-struct-field-named.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-struct-field-numbered.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-subtyping-1.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-subtyping-1.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-sugar-path.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-unconstrained.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-unconstrained.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-unsized.fixed (100%) rename {src/test => tests}/ui/associated-types/associated-types-unsized.rs (100%) rename {src/test => tests}/ui/associated-types/associated-types-unsized.stderr (100%) rename {src/test => tests}/ui/associated-types/associated-types-where-clause-impl-ambiguity.rs (100%) rename {src/test => tests}/ui/associated-types/auxiliary/associated-types-cc-lib.rs (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-constrained.clause.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-constrained.func.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-constrained.object.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-constrained.rs (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-binding-only.angle.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-binding-only.elision.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-binding-only.ok.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-binding-only.paren.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-binding-only.rs (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.elision.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.local.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.ok.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.rs (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.sig.stderr (100%) rename {src/test => tests}/ui/associated-types/bound-lifetime-in-return-only.structure.stderr (100%) rename {src/test => tests}/ui/associated-types/cache/chrono-scan.rs (100%) rename {src/test => tests}/ui/associated-types/cache/elision.rs (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.stderr (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-contravariant.rs (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-contravariant.transmute.stderr (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-invariant.krisskross.stderr (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-invariant.oneuse.stderr (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-invariant.rs (100%) rename {src/test => tests}/ui/associated-types/cache/project-fn-ret-invariant.transmute.stderr (100%) rename {src/test => tests}/ui/associated-types/default-associated-types.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-fail-1.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-fail-1.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-fail-2.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-fail-2.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-pass-1.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-cyclic-pass-2.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-in-other-trait-items-pass.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-in-other-trait-items.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-in-other-trait-items.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-mixed.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-mixed.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-specialization.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-specialization.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-suitability.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-suitability.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-unsound-62211-1.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-unsound-62211-1.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-unsound-62211-2.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-unsound-62211-2.stderr (100%) rename {src/test => tests}/ui/associated-types/defaults-wf.rs (100%) rename {src/test => tests}/ui/associated-types/defaults-wf.stderr (100%) rename {src/test => tests}/ui/associated-types/higher-ranked-projection.bad.stderr (100%) rename {src/test => tests}/ui/associated-types/higher-ranked-projection.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-1.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-1.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-2.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-2.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-object.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-object.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-1.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-1.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-2.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-2.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-3.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-3.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-4.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-4.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-5.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-5.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-6.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-bound-param-6.stderr (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-projection-1.rs (100%) rename {src/test => tests}/ui/associated-types/hr-associated-type-projection-1.stderr (100%) rename {src/test => tests}/ui/associated-types/impl-trait-return-missing-constraint.rs (100%) rename {src/test => tests}/ui/associated-types/impl-trait-return-missing-constraint.stderr (100%) rename {src/test => tests}/ui/associated-types/impl-wf-cycle-1.rs (100%) rename {src/test => tests}/ui/associated-types/impl-wf-cycle-1.stderr (100%) rename {src/test => tests}/ui/associated-types/impl-wf-cycle-2.rs (100%) rename {src/test => tests}/ui/associated-types/impl-wf-cycle-2.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-18655.rs (100%) rename {src/test => tests}/ui/associated-types/issue-19081.rs (100%) rename {src/test => tests}/ui/associated-types/issue-19883.rs (100%) rename {src/test => tests}/ui/associated-types/issue-19883.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-20005.rs (100%) rename {src/test => tests}/ui/associated-types/issue-20005.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-20825-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-20825.rs (100%) rename {src/test => tests}/ui/associated-types/issue-20825.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-21363.rs (100%) rename {src/test => tests}/ui/associated-types/issue-21726.rs (100%) rename {src/test => tests}/ui/associated-types/issue-22037.rs (100%) rename {src/test => tests}/ui/associated-types/issue-22037.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-22066.rs (100%) rename {src/test => tests}/ui/associated-types/issue-22560.rs (100%) rename {src/test => tests}/ui/associated-types/issue-22560.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-22828.rs (100%) rename {src/test => tests}/ui/associated-types/issue-23208.rs (100%) rename {src/test => tests}/ui/associated-types/issue-23595-1.rs (100%) rename {src/test => tests}/ui/associated-types/issue-23595-1.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-23595-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-23595-2.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-24159.rs (100%) rename {src/test => tests}/ui/associated-types/issue-24204.rs (100%) rename {src/test => tests}/ui/associated-types/issue-24338.rs (100%) rename {src/test => tests}/ui/associated-types/issue-25339.rs (100%) rename {src/test => tests}/ui/associated-types/issue-25700-1.rs (100%) rename {src/test => tests}/ui/associated-types/issue-25700-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-25700.rs (100%) rename {src/test => tests}/ui/associated-types/issue-25700.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-26681.rs (100%) rename {src/test => tests}/ui/associated-types/issue-26681.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-27675-unchecked-bounds.rs (100%) rename {src/test => tests}/ui/associated-types/issue-27675-unchecked-bounds.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-28871.rs (100%) rename {src/test => tests}/ui/associated-types/issue-31597.rs (100%) rename {src/test => tests}/ui/associated-types/issue-32350.rs (100%) rename {src/test => tests}/ui/associated-types/issue-36499.rs (100%) rename {src/test => tests}/ui/associated-types/issue-36499.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-37808.rs (100%) rename {src/test => tests}/ui/associated-types/issue-37883.rs (100%) rename {src/test => tests}/ui/associated-types/issue-38917.rs (100%) rename {src/test => tests}/ui/associated-types/issue-39532.rs (100%) rename {src/test => tests}/ui/associated-types/issue-40093.rs (100%) rename {src/test => tests}/ui/associated-types/issue-41868.rs (100%) rename {src/test => tests}/ui/associated-types/issue-43475.rs (100%) rename {src/test => tests}/ui/associated-types/issue-43784-associated-type.rs (100%) rename {src/test => tests}/ui/associated-types/issue-43784-associated-type.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-43924.rs (100%) rename {src/test => tests}/ui/associated-types/issue-43924.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-44153.rs (100%) rename {src/test => tests}/ui/associated-types/issue-44153.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-47139-1.rs (100%) rename {src/test => tests}/ui/associated-types/issue-47139-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-47385.rs (100%) rename {src/test => tests}/ui/associated-types/issue-47814.rs (100%) rename {src/test => tests}/ui/associated-types/issue-47814.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-48010.rs (100%) rename {src/test => tests}/ui/associated-types/issue-48551.rs (100%) rename {src/test => tests}/ui/associated-types/issue-50301.rs (100%) rename {src/test => tests}/ui/associated-types/issue-54108.rs (100%) rename {src/test => tests}/ui/associated-types/issue-54108.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-54182-1.rs (100%) rename {src/test => tests}/ui/associated-types/issue-54182-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-54467.rs (100%) rename {src/test => tests}/ui/associated-types/issue-55846.rs (100%) rename {src/test => tests}/ui/associated-types/issue-59324.rs (100%) rename {src/test => tests}/ui/associated-types/issue-59324.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-62200.rs (100%) rename {src/test => tests}/ui/associated-types/issue-62200.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-63591.rs (100%) rename {src/test => tests}/ui/associated-types/issue-63593.rs (100%) rename {src/test => tests}/ui/associated-types/issue-63593.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-64848.rs (100%) rename {src/test => tests}/ui/associated-types/issue-64855-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-64855.rs (100%) rename {src/test => tests}/ui/associated-types/issue-64855.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-65774-1.rs (100%) rename {src/test => tests}/ui/associated-types/issue-65774-1.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-65774-2.rs (100%) rename {src/test => tests}/ui/associated-types/issue-65774-2.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-65934.rs (100%) rename {src/test => tests}/ui/associated-types/issue-67684.rs (100%) rename {src/test => tests}/ui/associated-types/issue-69398.rs (100%) rename {src/test => tests}/ui/associated-types/issue-71113.rs (100%) rename {src/test => tests}/ui/associated-types/issue-72806.rs (100%) rename {src/test => tests}/ui/associated-types/issue-72806.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-76179.rs (100%) rename {src/test => tests}/ui/associated-types/issue-82079.rs (100%) rename {src/test => tests}/ui/associated-types/issue-85103.rs (100%) rename {src/test => tests}/ui/associated-types/issue-85103.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-87261.rs (100%) rename {src/test => tests}/ui/associated-types/issue-87261.stderr (100%) rename {src/test => tests}/ui/associated-types/issue-88856.rs (100%) rename {src/test => tests}/ui/associated-types/issue-91069.rs (100%) rename {src/test => tests}/ui/associated-types/issue-91231.rs (100%) rename {src/test => tests}/ui/associated-types/issue-91234.rs (100%) rename {src/test => tests}/ui/associated-types/missing-associated-types.rs (100%) rename {src/test => tests}/ui/associated-types/missing-associated-types.stderr (100%) rename {src/test => tests}/ui/associated-types/normalization-debruijn-1.rs (100%) rename {src/test => tests}/ui/associated-types/normalization-debruijn-2.rs (100%) rename {src/test => tests}/ui/associated-types/normalization-debruijn-3.rs (100%) rename {src/test => tests}/ui/associated-types/normalization-generality-2.rs (100%) rename {src/test => tests}/ui/associated-types/normalization-generality.rs (100%) rename {src/test => tests}/ui/associated-types/normalization-probe-cycle.rs (100%) rename {src/test => tests}/ui/associated-types/normalize-cycle-in-eval-no-region.rs (100%) rename {src/test => tests}/ui/associated-types/normalize-cycle-in-eval.rs (100%) rename {src/test => tests}/ui/associated-types/object-method-numbering.rs (100%) rename {src/test => tests}/ui/associated-types/object-normalization.rs (100%) rename {src/test => tests}/ui/associated-types/param-env-normalize-cycle.rs (100%) rename {src/test => tests}/ui/associated-types/point-at-type-on-obligation-failure-2.rs (100%) rename {src/test => tests}/ui/associated-types/point-at-type-on-obligation-failure-2.stderr (100%) rename {src/test => tests}/ui/associated-types/point-at-type-on-obligation-failure.rs (100%) rename {src/test => tests}/ui/associated-types/point-at-type-on-obligation-failure.stderr (100%) rename {src/test => tests}/ui/associated-types/project-defer-unification.rs (100%) rename {src/test => tests}/ui/associated-types/project-recursion-limit-non-fatal.rs (100%) rename {src/test => tests}/ui/associated-types/substs-ppaux.normal.stderr (100%) rename {src/test => tests}/ui/associated-types/substs-ppaux.rs (100%) rename {src/test => tests}/ui/associated-types/substs-ppaux.verbose.stderr (100%) rename {src/test => tests}/ui/associated-types/trait-with-supertraits-needing-sized-self.rs (100%) rename {src/test => tests}/ui/associated-types/trait-with-supertraits-needing-sized-self.stderr (100%) rename {src/test => tests}/ui/associated-types/wf-cycle-2.rs (100%) rename {src/test => tests}/ui/associated-types/wf-cycle.rs (100%) rename {src/test => tests}/ui/async-await/argument-patterns.rs (100%) rename {src/test => tests}/ui/async-await/async-assoc-fn-anon-lifetimes.rs (100%) rename {src/test => tests}/ui/async-await/async-await-let-else.drop-tracking.stderr (100%) rename {src/test => tests}/ui/async-await/async-await-let-else.no-drop-tracking.stderr (100%) rename {src/test => tests}/ui/async-await/async-await-let-else.rs (100%) rename {src/test => tests}/ui/async-await/async-await.rs (100%) rename {src/test => tests}/ui/async-await/async-block-control-flow-static-semantics.rs (100%) rename {src/test => tests}/ui/async-await/async-block-control-flow-static-semantics.stderr (100%) rename {src/test => tests}/ui/async-await/async-borrowck-escaping-block-error.fixed (100%) rename {src/test => tests}/ui/async-await/async-borrowck-escaping-block-error.rs (100%) rename {src/test => tests}/ui/async-await/async-borrowck-escaping-block-error.stderr (100%) rename {src/test => tests}/ui/async-await/async-borrowck-escaping-closure-error.rs (100%) rename {src/test => tests}/ui/async-await/async-borrowck-escaping-closure-error.stderr (100%) rename {src/test => tests}/ui/async-await/async-closure-matches-expr.rs (100%) rename {src/test => tests}/ui/async-await/async-closure.rs (100%) rename {src/test => tests}/ui/async-await/async-error-span.rs (100%) rename {src/test => tests}/ui/async-await/async-error-span.stderr (100%) rename {src/test => tests}/ui/async-await/async-fn-elided-impl-lifetime-parameter.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-nonsend.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-nonsend.stderr (100%) rename {src/test => tests}/ui/async-await/async-fn-path-elision.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-path-elision.stderr (100%) rename {src/test => tests}/ui/async-await/async-fn-send-uses-nonsend.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-size-moved-locals.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-size-uninit-locals.rs (100%) rename {src/test => tests}/ui/async-await/async-fn-size.rs (100%) rename {src/test => tests}/ui/async-await/async-is-unwindsafe.rs (100%) rename {src/test => tests}/ui/async-await/async-is-unwindsafe.stderr (100%) rename {src/test => tests}/ui/async-await/async-matches-expr.rs (100%) rename {src/test => tests}/ui/async-await/async-trait-fn.rs (100%) rename {src/test => tests}/ui/async-await/async-trait-fn.stderr (100%) rename {src/test => tests}/ui/async-await/async-unsafe-fn-call-in-safe.mir.stderr (100%) rename {src/test => tests}/ui/async-await/async-unsafe-fn-call-in-safe.rs (100%) rename {src/test => tests}/ui/async-await/async-unsafe-fn-call-in-safe.thir.stderr (100%) rename {src/test => tests}/ui/async-await/async-with-closure.rs (100%) rename {src/test => tests}/ui/async-await/auxiliary/arc_wake.rs (100%) rename {src/test => tests}/ui/async-await/auxiliary/issue-72470-lib.rs (100%) rename {src/test => tests}/ui/async-await/await-into-future.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/2015-edition-error-various-positions.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/2015-edition-error-various-positions.stderr (100%) rename {src/test => tests}/ui/async-await/await-keyword/2015-edition-warning.fixed (100%) rename {src/test => tests}/ui/async-await/await-keyword/2015-edition-warning.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/2015-edition-warning.stderr (100%) rename {src/test => tests}/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr (100%) rename {src/test => tests}/ui/async-await/await-keyword/2018-edition-error.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/2018-edition-error.stderr (100%) rename {src/test => tests}/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr (100%) rename {src/test => tests}/ui/async-await/await-keyword/post_expansion_error.rs (100%) rename {src/test => tests}/ui/async-await/await-keyword/post_expansion_error.stderr (100%) rename {src/test => tests}/ui/async-await/await-unsize.rs (100%) rename {src/test => tests}/ui/async-await/bound-normalization.rs (100%) rename {src/test => tests}/ui/async-await/conditional-and-guaranteed-initialization.rs (100%) rename {src/test => tests}/ui/async-await/default-struct-update.rs (100%) rename {src/test => tests}/ui/async-await/dont-print-desugared-async.rs (100%) rename {src/test => tests}/ui/async-await/dont-print-desugared-async.stderr (100%) rename {src/test => tests}/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs (100%) rename {src/test => tests}/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr (100%) rename {src/test => tests}/ui/async-await/dont-suggest-missing-await.rs (100%) rename {src/test => tests}/ui/async-await/dont-suggest-missing-await.stderr (100%) rename {src/test => tests}/ui/async-await/drop-and-assign.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/auxiliary/arc_wake.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-for-async-fn-parameters-by-ref-binding.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-for-async-fn-parameters.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-for-locals-when-cancelled.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-for-temporary-in-tail-return-expr.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-locals-are-hidden.rs (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-locals-are-hidden.stderr (100%) rename {src/test => tests}/ui/async-await/drop-order/drop-order-when-cancelled.rs (100%) rename {src/test => tests}/ui/async-await/drop-track-bad-field-in-fru.rs (100%) rename {src/test => tests}/ui/async-await/drop-track-bad-field-in-fru.stderr (100%) rename {src/test => tests}/ui/async-await/drop-track-field-assign-nonsend.rs (100%) rename {src/test => tests}/ui/async-await/drop-track-field-assign-nonsend.stderr (100%) rename {src/test => tests}/ui/async-await/drop-track-field-assign.rs (100%) rename {src/test => tests}/ui/async-await/drop-tracking-unresolved-typeck-results.rs (100%) rename {src/test => tests}/ui/async-await/drop-tracking-unresolved-typeck-results.stderr (100%) rename {src/test => tests}/ui/async-await/edition-deny-async-fns-2015.rs (100%) rename {src/test => tests}/ui/async-await/edition-deny-async-fns-2015.stderr (100%) rename {src/test => tests}/ui/async-await/expansion-in-attrs.rs (100%) rename {src/test => tests}/ui/async-await/feature-async-closure.rs (100%) rename {src/test => tests}/ui/async-await/feature-async-closure.stderr (100%) rename {src/test => tests}/ui/async-await/feature-gate-async_fn_in_trait.rs (100%) rename {src/test => tests}/ui/async-await/feature-gate-async_fn_in_trait.stderr (100%) rename {src/test => tests}/ui/async-await/feature-self-return-type.rs (100%) rename {src/test => tests}/ui/async-await/feature-self-return-type.stderr (100%) rename {src/test => tests}/ui/async-await/futures-api.rs (100%) rename {src/test => tests}/ui/async-await/generator-desc.rs (100%) rename {src/test => tests}/ui/async-await/generator-desc.stderr (100%) rename {src/test => tests}/ui/async-await/generator-not-future.rs (100%) rename {src/test => tests}/ui/async-await/generator-not-future.stderr (100%) rename {src/test => tests}/ui/async-await/generics-and-bounds.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-associated-types.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-associated-types2.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-boxed.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-boxed.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-extra.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-in-trait.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-manual.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared-manual.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example-desugared.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-example.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-generics-and-bounds.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-generics-and-bounds.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-generics.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-generics.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-lifetimes-and-bounds.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-lifetimes.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-recursive-generic.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-recursive-generic.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/async-recursive.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/async-recursive.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/bad-signatures.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/bad-signatures.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/early-bound-1.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/early-bound-2.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/fn-not-async-err.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/fn-not-async-err.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/fn-not-async-err2.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/fn-not-async-err2.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/implied-bounds.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/issue-102138.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/issue-102219.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/issue-102310.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/issue-104678.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/lifetime-mismatch.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/lifetime-mismatch.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/nested-rpit.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/object-safety.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/object-safety.stderr (100%) rename {src/test => tests}/ui/async-await/in-trait/return-type-suggestion.rs (100%) rename {src/test => tests}/ui/async-await/in-trait/return-type-suggestion.stderr (100%) rename {src/test => tests}/ui/async-await/incorrect-move-async-order-issue-79694.fixed (100%) rename {src/test => tests}/ui/async-await/incorrect-move-async-order-issue-79694.rs (100%) rename {src/test => tests}/ui/async-await/incorrect-move-async-order-issue-79694.stderr (100%) rename {src/test => tests}/ui/async-await/interior-with-const-generic-expr.rs (100%) rename {src/test => tests}/ui/async-await/issue-101715.rs (100%) rename {src/test => tests}/ui/async-await/issue-101715.stderr (100%) rename {src/test => tests}/ui/async-await/issue-105501.rs (100%) rename {src/test => tests}/ui/async-await/issue-54239-private-type-triggers-lint.rs (100%) rename {src/test => tests}/ui/async-await/issue-60709.rs (100%) rename {src/test => tests}/ui/async-await/issue-61076.rs (100%) rename {src/test => tests}/ui/async-await/issue-61076.stderr (100%) rename {src/test => tests}/ui/async-await/issue-61452.rs (100%) rename {src/test => tests}/ui/async-await/issue-61452.stderr (100%) rename {src/test => tests}/ui/async-await/issue-61793.rs (100%) rename {src/test => tests}/ui/async-await/issue-61949-self-return-type.rs (100%) rename {src/test => tests}/ui/async-await/issue-61949-self-return-type.stderr (100%) rename {src/test => tests}/ui/async-await/issue-62658.rs (100%) rename {src/test => tests}/ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs (100%) rename {src/test => tests}/ui/async-await/issue-63832-await-short-temporary-lifetime.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-1-sync.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-1-sync.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64130-2-send.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-2-send.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64130-3-other.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-3-other.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64130-4-async-move.drop-tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64130-4-async-move.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64130-4-async-move.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-non-send-future-diags.rs (100%) rename {src/test => tests}/ui/async-await/issue-64130-non-send-future-diags.stderr (100%) rename {src/test => tests}/ui/async-await/issue-64391.rs (100%) rename {src/test => tests}/ui/async-await/issue-66312.rs (100%) rename {src/test => tests}/ui/async-await/issue-66312.stderr (100%) rename {src/test => tests}/ui/async-await/issue-66387-if-without-else.rs (100%) rename {src/test => tests}/ui/async-await/issue-66387-if-without-else.stderr (100%) rename {src/test => tests}/ui/async-await/issue-67252-unnamed-future.rs (100%) rename {src/test => tests}/ui/async-await/issue-67252-unnamed-future.stderr (100%) rename {src/test => tests}/ui/async-await/issue-67651.rs (100%) rename {src/test => tests}/ui/async-await/issue-67651.stderr (100%) rename {src/test => tests}/ui/async-await/issue-67765-async-diagnostic.rs (100%) rename {src/test => tests}/ui/async-await/issue-67765-async-diagnostic.stderr (100%) rename {src/test => tests}/ui/async-await/issue-68112.drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-68112.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-68112.rs (100%) rename {src/test => tests}/ui/async-await/issue-68523-start.rs (100%) rename {src/test => tests}/ui/async-await/issue-68523-start.stderr (100%) rename {src/test => tests}/ui/async-await/issue-68523.rs (100%) rename {src/test => tests}/ui/async-await/issue-68523.stderr (100%) rename {src/test => tests}/ui/async-await/issue-69446-fnmut-capture.rs (100%) rename {src/test => tests}/ui/async-await/issue-69446-fnmut-capture.stderr (100%) rename {src/test => tests}/ui/async-await/issue-70594.rs (100%) rename {src/test => tests}/ui/async-await/issue-70594.stderr (100%) rename {src/test => tests}/ui/async-await/issue-70818.rs (100%) rename {src/test => tests}/ui/async-await/issue-70818.stderr (100%) rename {src/test => tests}/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-70935-complex-spans.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-70935-complex-spans.rs (100%) rename {src/test => tests}/ui/async-await/issue-71137.rs (100%) rename {src/test => tests}/ui/async-await/issue-71137.stderr (100%) rename {src/test => tests}/ui/async-await/issue-72442.rs (100%) rename {src/test => tests}/ui/async-await/issue-72442.stderr (100%) rename {src/test => tests}/ui/async-await/issue-72470-llvm-dominate.rs (100%) rename {src/test => tests}/ui/async-await/issue-72590-type-error-sized.rs (100%) rename {src/test => tests}/ui/async-await/issue-72590-type-error-sized.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73050.rs (100%) rename {src/test => tests}/ui/async-await/issue-73137.rs (100%) rename {src/test => tests}/ui/async-await/issue-73541-1.rs (100%) rename {src/test => tests}/ui/async-await/issue-73541-1.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73541-2.rs (100%) rename {src/test => tests}/ui/async-await/issue-73541-2.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73541-3.rs (100%) rename {src/test => tests}/ui/async-await/issue-73541-3.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73541.rs (100%) rename {src/test => tests}/ui/async-await/issue-73541.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73741-type-err-drop-tracking.rs (100%) rename {src/test => tests}/ui/async-await/issue-73741-type-err-drop-tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issue-73741-type-err.rs (100%) rename {src/test => tests}/ui/async-await/issue-73741-type-err.stderr (100%) rename {src/test => tests}/ui/async-await/issue-74047.rs (100%) rename {src/test => tests}/ui/async-await/issue-74047.stderr (100%) rename {src/test => tests}/ui/async-await/issue-74072-lifetime-name-annotations.rs (100%) rename {src/test => tests}/ui/async-await/issue-74072-lifetime-name-annotations.stderr (100%) rename {src/test => tests}/ui/async-await/issue-74497-lifetime-in-opaque.rs (100%) rename {src/test => tests}/ui/async-await/issue-74497-lifetime-in-opaque.stderr (100%) rename {src/test => tests}/ui/async-await/issue-75785-confusing-named-region.rs (100%) rename {src/test => tests}/ui/async-await/issue-75785-confusing-named-region.stderr (100%) rename {src/test => tests}/ui/async-await/issue-76547.rs (100%) rename {src/test => tests}/ui/async-await/issue-76547.stderr (100%) rename {src/test => tests}/ui/async-await/issue-77993-2.rs (100%) rename {src/test => tests}/ui/async-await/issue-77993-2.stderr (100%) rename {src/test => tests}/ui/async-await/issue-84841.rs (100%) rename {src/test => tests}/ui/async-await/issue-84841.stderr (100%) rename {src/test => tests}/ui/async-await/issue-86507.rs (100%) rename {src/test => tests}/ui/async-await/issue-86507.stderr (100%) rename {src/test => tests}/ui/async-await/issue-93197.rs (100%) rename {src/test => tests}/ui/async-await/issue-93648.rs (100%) rename {src/test => tests}/ui/async-await/issue-98634.rs (100%) rename {src/test => tests}/ui/async-await/issue-98634.stderr (100%) rename {src/test => tests}/ui/async-await/issues/auxiliary/issue-60674.rs (100%) rename {src/test => tests}/ui/async-await/issues/auxiliary/issue_67893.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-102206.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-102206.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-51719.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-51719.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-51751.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-51751.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-53249.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-54752-async-block.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-54752-async-block.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-54974.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-55324.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-55809.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-58885.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-59001.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-59972.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-60518.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-60655-latebound-regions.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-60674.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-60674.stdout (100%) rename {src/test => tests}/ui/async-await/issues/issue-61187.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-61187.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-61986.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-62009-1.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-62009-1.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-62009-2.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-62009-2.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-62097.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-62097.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-62517-1.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-62517-2.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-1.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-1.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-2.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-2.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-3.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-63388-4.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-64391-2.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-64433.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-64477-2.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-64477.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-64964.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-65159.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-65159.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-65419/issue-65419-generator-resume-after-completion.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-66695-static-refs.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-67611-static-mut-refs.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-67893.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-67893.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-69307-nested.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-69307.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-72312.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-72312.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-78600.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-78600.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-78654.full.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-78654.min.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-78654.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-78938-async-block.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-78938-async-block.stderr (100%) rename {src/test => tests}/ui/async-await/issues/issue-95307.rs (100%) rename {src/test => tests}/ui/async-await/issues/issue-95307.stderr (100%) rename {src/test => tests}/ui/async-await/issues/non-async-enclosing-span.rs (100%) rename {src/test => tests}/ui/async-await/issues/non-async-enclosing-span.stderr (100%) rename {src/test => tests}/ui/async-await/large_moves.attribute.stderr (100%) rename {src/test => tests}/ui/async-await/large_moves.option.stderr (100%) rename {src/test => tests}/ui/async-await/large_moves.rs (100%) rename {src/test => tests}/ui/async-await/move-part-await-return-rest-struct.rs (100%) rename {src/test => tests}/ui/async-await/move-part-await-return-rest-tuple.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/elided.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/fn-ptr.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/hrtb.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/named.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/partial-relation.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/ret-impl-trait-fg.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/ret-impl-trait-one.stderr (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/ret-ref.rs (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/ret-ref.stderr (100%) rename {src/test => tests}/ui/async-await/multiple-lifetimes/variance.rs (100%) rename {src/test => tests}/ui/async-await/mutually-recursive-async-impl-trait-type.rs (100%) rename {src/test => tests}/ui/async-await/mutually-recursive-async-impl-trait-type.stderr (100%) rename {src/test => tests}/ui/async-await/nested-in-impl.rs (100%) rename {src/test => tests}/ui/async-await/no-async-const.rs (100%) rename {src/test => tests}/ui/async-await/no-async-const.stderr (100%) rename {src/test => tests}/ui/async-await/no-const-async.rs (100%) rename {src/test => tests}/ui/async-await/no-const-async.stderr (100%) rename {src/test => tests}/ui/async-await/no-move-across-await-struct.rs (100%) rename {src/test => tests}/ui/async-await/no-move-across-await-struct.stderr (100%) rename {src/test => tests}/ui/async-await/no-move-across-await-tuple.rs (100%) rename {src/test => tests}/ui/async-await/no-move-across-await-tuple.stderr (100%) rename {src/test => tests}/ui/async-await/no-non-guaranteed-initialization.rs (100%) rename {src/test => tests}/ui/async-await/no-non-guaranteed-initialization.stderr (100%) rename {src/test => tests}/ui/async-await/no-params-non-move-async-closure.rs (100%) rename {src/test => tests}/ui/async-await/no-params-non-move-async-closure.stderr (100%) rename {src/test => tests}/ui/async-await/no-std.rs (100%) rename {src/test => tests}/ui/async-await/no-unsafe-async.rs (100%) rename {src/test => tests}/ui/async-await/no-unsafe-async.stderr (100%) rename {src/test => tests}/ui/async-await/non-trivial-drop.rs (100%) rename {src/test => tests}/ui/async-await/partial-drop-partial-reinit.drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/partial-drop-partial-reinit.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/async-await/partial-drop-partial-reinit.rs (100%) rename {src/test => tests}/ui/async-await/partial-initialization-across-await.rs (100%) rename {src/test => tests}/ui/async-await/partial-initialization-across-await.stderr (100%) rename {src/test => tests}/ui/async-await/pin-needed-to-poll-2.rs (100%) rename {src/test => tests}/ui/async-await/pin-needed-to-poll-2.stderr (100%) rename {src/test => tests}/ui/async-await/pin-needed-to-poll.rs (100%) rename {src/test => tests}/ui/async-await/pin-needed-to-poll.stderr (100%) rename {src/test => tests}/ui/async-await/proper-span-for-type-error.fixed (100%) rename {src/test => tests}/ui/async-await/proper-span-for-type-error.rs (100%) rename {src/test => tests}/ui/async-await/proper-span-for-type-error.stderr (100%) rename {src/test => tests}/ui/async-await/recursive-async-impl-trait-type.rs (100%) rename {src/test => tests}/ui/async-await/recursive-async-impl-trait-type.stderr (100%) rename {src/test => tests}/ui/async-await/repeat_count_const_in_async_fn.rs (100%) rename {src/test => tests}/ui/async-await/return-ty-raw-ptr-coercion.rs (100%) rename {src/test => tests}/ui/async-await/return-ty-unsize-coercion.rs (100%) rename {src/test => tests}/ui/async-await/suggest-missing-await-closure.fixed (100%) rename {src/test => tests}/ui/async-await/suggest-missing-await-closure.rs (100%) rename {src/test => tests}/ui/async-await/suggest-missing-await-closure.stderr (100%) rename {src/test => tests}/ui/async-await/suggest-missing-await.rs (100%) rename {src/test => tests}/ui/async-await/suggest-missing-await.stderr (100%) rename {src/test => tests}/ui/async-await/suggest-switching-edition-on-await-cargo.rs (100%) rename {src/test => tests}/ui/async-await/suggest-switching-edition-on-await-cargo.stderr (100%) rename {src/test => tests}/ui/async-await/suggest-switching-edition-on-await.rs (100%) rename {src/test => tests}/ui/async-await/suggest-switching-edition-on-await.stderr (100%) rename {src/test => tests}/ui/async-await/track-caller/async-block.rs (100%) rename {src/test => tests}/ui/async-await/track-caller/async-block.stderr (100%) rename {src/test => tests}/ui/async-await/track-caller/async-closure-gate.rs (100%) rename {src/test => tests}/ui/async-await/track-caller/async-closure-gate.stderr (100%) rename {src/test => tests}/ui/async-await/track-caller/issue-105134.rs (100%) rename {src/test => tests}/ui/async-await/track-caller/panic-track-caller.nofeat.stderr (100%) rename {src/test => tests}/ui/async-await/track-caller/panic-track-caller.rs (100%) rename {src/test => tests}/ui/async-await/try-on-option-in-async.rs (100%) rename {src/test => tests}/ui/async-await/try-on-option-in-async.stderr (100%) rename {src/test => tests}/ui/async-await/type-parameter-send.rs (100%) rename {src/test => tests}/ui/async-await/unnecessary-await.rs (100%) rename {src/test => tests}/ui/async-await/unnecessary-await.stderr (100%) rename {src/test => tests}/ui/async-await/unreachable-lint-1.rs (100%) rename {src/test => tests}/ui/async-await/unreachable-lint-1.stderr (100%) rename {src/test => tests}/ui/async-await/unreachable-lint.rs (100%) rename {src/test => tests}/ui/async-await/unresolved_type_param.rs (100%) rename {src/test => tests}/ui/async-await/unresolved_type_param.stderr (100%) rename {src/test => tests}/ui/async-await/unused-lifetime.rs (100%) rename {src/test => tests}/ui/async-await/unused-lifetime.stderr (100%) rename {src/test => tests}/ui/atomic-from-mut-not-available.rs (100%) rename {src/test => tests}/ui/atomic-from-mut-not-available.stderr (100%) rename {src/test => tests}/ui/attempted-access-non-fatal.rs (100%) rename {src/test => tests}/ui/attempted-access-non-fatal.stderr (100%) rename {src/test => tests}/ui/attr-bad-crate-attr.rc (100%) rename {src/test => tests}/ui/attr-shebang.rs (100%) rename {src/test => tests}/ui/attr-start.rs (100%) rename {src/test => tests}/ui/attr-usage-inline.rs (100%) rename {src/test => tests}/ui/attr-usage-inline.stderr (100%) rename {src/test => tests}/ui/attributes/attr-before-view-item.rs (100%) rename {src/test => tests}/ui/attributes/attr-before-view-item2.rs (100%) rename {src/test => tests}/ui/attributes/attr-eq-token-tree.rs (100%) rename {src/test => tests}/ui/attributes/attr-eq-token-tree.stderr (100%) rename {src/test => tests}/ui/attributes/attr-mix-new.rs (100%) rename {src/test => tests}/ui/attributes/attrs-on-params.rs (100%) rename {src/test => tests}/ui/attributes/attrs-on-params.stderr (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-1.rs (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-1.stderr (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-2.rs (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-2.stderr (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-3.rs (100%) rename {src/test => tests}/ui/attributes/attrs-with-no-formal-in-generics-3.stderr (100%) rename {src/test => tests}/ui/attributes/auxiliary/key-value-expansion.rs (100%) rename {src/test => tests}/ui/attributes/class-attributes-1.rs (100%) rename {src/test => tests}/ui/attributes/class-attributes-2.rs (100%) rename {src/test => tests}/ui/attributes/collapse-debuginfo-invalid.rs (100%) rename {src/test => tests}/ui/attributes/collapse-debuginfo-invalid.stderr (100%) rename {src/test => tests}/ui/attributes/const-stability-on-macro.rs (100%) rename {src/test => tests}/ui/attributes/const-stability-on-macro.stderr (100%) rename {src/test => tests}/ui/attributes/doc-attr.rs (100%) rename {src/test => tests}/ui/attributes/doc-attr.stderr (100%) rename {src/test => tests}/ui/attributes/duplicated-attributes.rs (100%) rename {src/test => tests}/ui/attributes/duplicated-attributes.stderr (100%) rename {src/test => tests}/ui/attributes/extented-attribute-macro-error.rs (100%) rename {src/test => tests}/ui/attributes/extented-attribute-macro-error.stderr (100%) rename {src/test => tests}/ui/attributes/field-attributes-vis-unresolved.rs (100%) rename {src/test => tests}/ui/attributes/field-attributes-vis-unresolved.stderr (100%) rename {src/test => tests}/ui/attributes/invalid-doc-attr.rs (100%) rename {src/test => tests}/ui/attributes/invalid-doc-attr.stderr (100%) rename {src/test => tests}/ui/attributes/issue-100631.rs (100%) rename {src/test => tests}/ui/attributes/issue-100631.stderr (100%) rename {src/test => tests}/ui/attributes/issue-105594-invalid-attr-validation.rs (100%) rename {src/test => tests}/ui/attributes/issue-105594-invalid-attr-validation.stderr (100%) rename {src/test => tests}/ui/attributes/issue-40962.rs (100%) rename {src/test => tests}/ui/attributes/issue-90873.rs (100%) rename {src/test => tests}/ui/attributes/issue-90873.stderr (100%) rename {src/test => tests}/ui/attributes/item-attributes.rs (100%) rename {src/test => tests}/ui/attributes/key-value-expansion-on-mac.rs (100%) rename {src/test => tests}/ui/attributes/key-value-expansion-on-mac.stderr (100%) rename {src/test => tests}/ui/attributes/key-value-expansion.rs (100%) rename {src/test => tests}/ui/attributes/key-value-expansion.stderr (100%) rename {src/test => tests}/ui/attributes/key-value-non-ascii.rs (100%) rename {src/test => tests}/ui/attributes/key-value-non-ascii.stderr (100%) rename {src/test => tests}/ui/attributes/main-removed-1.rs (100%) rename {src/test => tests}/ui/attributes/main-removed-1.stderr (100%) rename {src/test => tests}/ui/attributes/main-removed-2/auxiliary/tokyo.rs (100%) rename {src/test => tests}/ui/attributes/main-removed-2/main.rs (100%) rename {src/test => tests}/ui/attributes/method-attributes.rs (100%) rename {src/test => tests}/ui/attributes/multiple-invalid.rs (100%) rename {src/test => tests}/ui/attributes/multiple-invalid.stderr (100%) rename {src/test => tests}/ui/attributes/nonterminal-expansion.rs (100%) rename {src/test => tests}/ui/attributes/nonterminal-expansion.stderr (100%) rename {src/test => tests}/ui/attributes/obsolete-attr.rs (100%) rename {src/test => tests}/ui/attributes/obsolete-attr.stderr (100%) rename {src/test => tests}/ui/attributes/suffixed-literal-meta.rs (100%) rename {src/test => tests}/ui/attributes/suffixed-literal-meta.stderr (100%) rename {src/test => tests}/ui/attributes/tool_attributes.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/auxiliary/sigpipe-utils.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-crate.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-crate.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-error.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-list.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-list.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-not-used.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-only-feature.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-rustc_main.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-start.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-start.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-struct.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-struct.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.stderr (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe.rs (100%) rename {src/test => tests}/ui/attributes/unix_sigpipe/unix_sigpipe.stderr (100%) rename {src/test => tests}/ui/attributes/unknown-attr.rs (100%) rename {src/test => tests}/ui/attributes/unknown-attr.stderr (100%) rename {src/test => tests}/ui/attributes/unnamed-field-attributes-dup.rs (100%) rename {src/test => tests}/ui/attributes/unnamed-field-attributes-vis.rs (100%) rename {src/test => tests}/ui/attributes/unnamed-field-attributes.rs (100%) rename {src/test => tests}/ui/attributes/unrestricted-attribute-tokens.rs (100%) rename {src/test => tests}/ui/attributes/unused-item-in-attr.rs (100%) rename {src/test => tests}/ui/attributes/unused-item-in-attr.stderr (100%) rename {src/test => tests}/ui/attributes/used_with_arg.rs (100%) rename {src/test => tests}/ui/attributes/used_with_arg.stderr (100%) rename {src/test => tests}/ui/attributes/used_with_arg_no_mangle.rs (100%) rename {src/test => tests}/ui/attributes/used_with_multi_args.rs (100%) rename {src/test => tests}/ui/attributes/used_with_multi_args.stderr (100%) rename {src/test => tests}/ui/attributes/variant-attributes.rs (100%) rename {src/test => tests}/ui/attributes/z-crate-attr.rs (100%) rename {src/test => tests}/ui/attrs-resolution-errors.rs (100%) rename {src/test => tests}/ui/attrs-resolution-errors.stderr (100%) rename {src/test => tests}/ui/attrs-resolution.rs (100%) rename {src/test => tests}/ui/augmented-assignments-feature-gate-cross.rs (100%) rename {src/test => tests}/ui/augmented-assignments-rpass.rs (100%) rename {src/test => tests}/ui/augmented-assignments.rs (100%) rename {src/test => tests}/ui/augmented-assignments.stderr (100%) rename {src/test => tests}/ui/auto-instantiate.rs (100%) rename {src/test => tests}/ui/auto-ref-slice-plus-ref.rs (100%) rename {src/test => tests}/ui/auto-ref-slice-plus-ref.stderr (100%) rename {src/test => tests}/ui/auto-traits/auto-is-contextual.rs (100%) rename {src/test => tests}/ui/auto-traits/auto-trait-projection-recursion.rs (100%) rename {src/test => tests}/ui/auto-traits/auto-trait-validation.fixed (100%) rename {src/test => tests}/ui/auto-traits/auto-trait-validation.rs (100%) rename {src/test => tests}/ui/auto-traits/auto-trait-validation.stderr (100%) rename {src/test => tests}/ui/auto-traits/auto-traits.rs (100%) rename {src/test => tests}/ui/auto-traits/bad-generics-on-dyn.rs (100%) rename {src/test => tests}/ui/auto-traits/bad-generics-on-dyn.stderr (100%) rename {src/test => tests}/ui/auto-traits/issue-23080-2.rs (100%) rename {src/test => tests}/ui/auto-traits/issue-23080-2.stderr (100%) rename {src/test => tests}/ui/auto-traits/issue-23080.rs (100%) rename {src/test => tests}/ui/auto-traits/issue-23080.stderr (100%) rename {src/test => tests}/ui/auto-traits/issue-84075.rs (100%) rename {src/test => tests}/ui/auto-traits/issue-84075.stderr (100%) rename {src/test => tests}/ui/auto-traits/suspicious-impls-lint.rs (100%) rename {src/test => tests}/ui/auto-traits/suspicious-impls-lint.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-auto-trait-no-supertraits.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-negation.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-negation.stderr (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-precedence.rs (100%) rename {src/test => tests}/ui/auto-traits/typeck-default-trait-impl-precedence.stderr (100%) rename {src/test => tests}/ui/autoderef-full-lval.rs (100%) rename {src/test => tests}/ui/autoderef-full-lval.stderr (100%) rename {src/test => tests}/ui/autoref-autoderef/auto-ref-bounded-ty-param.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/auto-ref-sliceable.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/auto-ref.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-and-borrow-method-receiver.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-method-on-trait.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-method-priority.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-method-twice.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-method.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoderef-privacy.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/autoref-intermediate-types-issue-3585.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/deref-into-array.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/issue-38940.rs (100%) rename {src/test => tests}/ui/autoref-autoderef/issue-38940.stderr (100%) rename {src/test => tests}/ui/auxiliary/augmented_assignments.rs (100%) rename {src/test => tests}/ui/auxiliary/check_static_recursion_foreign_helper.rs (100%) rename {src/test => tests}/ui/auxiliary/crate-method-reexport-grrrrrrr2.rs (100%) rename {src/test => tests}/ui/auxiliary/default-ty-param-cross-crate-crate.rs (100%) rename {src/test => tests}/ui/auxiliary/edition-kw-macro-2015.rs (100%) rename {src/test => tests}/ui/auxiliary/edition-kw-macro-2018.rs (100%) rename {src/test => tests}/ui/auxiliary/fancy-panic.rs (100%) rename {src/test => tests}/ui/auxiliary/hello_macro.rs (100%) rename {src/test => tests}/ui/auxiliary/impl_privacy_xc_1.rs (100%) rename {src/test => tests}/ui/auxiliary/inner_static.rs (100%) rename {src/test => tests}/ui/auxiliary/issue-76387.rs (100%) rename {src/test => tests}/ui/auxiliary/kinds_in_metadata.rs (100%) rename {src/test => tests}/ui/auxiliary/msvc-data-only-lib.rs (100%) rename {src/test => tests}/ui/auxiliary/noexporttypelib.rs (100%) rename {src/test => tests}/ui/auxiliary/orphan-check-diagnostics.rs (100%) rename {src/test => tests}/ui/auxiliary/pub-and-stability.rs (100%) rename {src/test => tests}/ui/auxiliary/removing-extern-crate.rs (100%) rename {src/test => tests}/ui/auxiliary/rustc-rust-log-aux.rs (100%) rename {src/test => tests}/ui/auxiliary/svh-a-base.rs (100%) rename {src/test => tests}/ui/auxiliary/svh-b.rs (100%) rename {src/test => tests}/ui/auxiliary/typeid-intrinsic-aux1.rs (100%) rename {src/test => tests}/ui/auxiliary/typeid-intrinsic-aux2.rs (100%) rename {src/test => tests}/ui/auxiliary/using-target-feature-unstable.rs (100%) rename {src/test => tests}/ui/auxiliary/xc-private-method-lib.rs (100%) rename {src/test => tests}/ui/backtrace-apple-no-dsymutil.rs (100%) rename {src/test => tests}/ui/backtrace.rs (100%) rename {src/test => tests}/ui/bare-fn-implements-fn-mut.rs (100%) rename {src/test => tests}/ui/bare-static-string.rs (100%) rename {src/test => tests}/ui/bench/issue-32062.rs (100%) rename {src/test => tests}/ui/big-literals.rs (100%) rename {src/test => tests}/ui/bind-by-move.rs (100%) rename {src/test => tests}/ui/binding/ambiguity-item.rs (100%) rename {src/test => tests}/ui/binding/ambiguity-item.stderr (100%) rename {src/test => tests}/ui/binding/bind-field-short-with-modifiers.rs (100%) rename {src/test => tests}/ui/binding/borrowed-ptr-pattern-2.rs (100%) rename {src/test => tests}/ui/binding/borrowed-ptr-pattern-3.rs (100%) rename {src/test => tests}/ui/binding/borrowed-ptr-pattern-infallible.rs (100%) rename {src/test => tests}/ui/binding/borrowed-ptr-pattern-option.rs (100%) rename {src/test => tests}/ui/binding/borrowed-ptr-pattern.rs (100%) rename {src/test => tests}/ui/binding/const-param.rs (100%) rename {src/test => tests}/ui/binding/const-param.stderr (100%) rename {src/test => tests}/ui/binding/empty-types-in-patterns.rs (100%) rename {src/test => tests}/ui/binding/exhaustive-bool-match-sanity.rs (100%) rename {src/test => tests}/ui/binding/expr-match-generic-unique1.rs (100%) rename {src/test => tests}/ui/binding/expr-match-generic-unique2.rs (100%) rename {src/test => tests}/ui/binding/expr-match-generic.rs (100%) rename {src/test => tests}/ui/binding/expr-match-panic-all.rs (100%) rename {src/test => tests}/ui/binding/expr-match-panic.rs (100%) rename {src/test => tests}/ui/binding/expr-match-unique.rs (100%) rename {src/test => tests}/ui/binding/expr-match.rs (100%) rename {src/test => tests}/ui/binding/fat-arrow-match.rs (100%) rename {src/test => tests}/ui/binding/fn-arg-incomplete-pattern-drop-order.rs (100%) rename {src/test => tests}/ui/binding/fn-pattern-expected-type-2.rs (100%) rename {src/test => tests}/ui/binding/fn-pattern-expected-type.rs (100%) rename {src/test => tests}/ui/binding/func-arg-incomplete-pattern.rs (100%) rename {src/test => tests}/ui/binding/func-arg-ref-pattern.rs (100%) rename {src/test => tests}/ui/binding/func-arg-wild-pattern.rs (100%) rename {src/test => tests}/ui/binding/if-let.rs (100%) rename {src/test => tests}/ui/binding/inconsistent-lifetime-mismatch.rs (100%) rename {src/test => tests}/ui/binding/inferred-suffix-in-pattern-range.rs (100%) rename {src/test => tests}/ui/binding/irrefutable-slice-patterns.rs (100%) rename {src/test => tests}/ui/binding/issue-53114-borrow-checks.rs (100%) rename {src/test => tests}/ui/binding/issue-53114-borrow-checks.stderr (100%) rename {src/test => tests}/ui/binding/issue-53114-safety-checks.rs (100%) rename {src/test => tests}/ui/binding/issue-53114-safety-checks.stderr (100%) rename {src/test => tests}/ui/binding/let-assignability.rs (100%) rename {src/test => tests}/ui/binding/let-destruct-ref.rs (100%) rename {src/test => tests}/ui/binding/let-var-hygiene.rs (100%) rename {src/test => tests}/ui/binding/match-arm-statics.rs (100%) rename {src/test => tests}/ui/binding/match-beginning-vert.rs (100%) rename {src/test => tests}/ui/binding/match-borrowed_str.rs (100%) rename {src/test => tests}/ui/binding/match-bot-2.rs (100%) rename {src/test => tests}/ui/binding/match-bot.rs (100%) rename {src/test => tests}/ui/binding/match-byte-array-patterns.rs (100%) rename {src/test => tests}/ui/binding/match-enum-struct-0.rs (100%) rename {src/test => tests}/ui/binding/match-enum-struct-1.rs (100%) rename {src/test => tests}/ui/binding/match-implicit-copy-unique.rs (100%) rename {src/test => tests}/ui/binding/match-in-macro.rs (100%) rename {src/test => tests}/ui/binding/match-join.rs (100%) rename {src/test => tests}/ui/binding/match-larger-const.rs (100%) rename {src/test => tests}/ui/binding/match-naked-record-expr.rs (100%) rename {src/test => tests}/ui/binding/match-naked-record.rs (100%) rename {src/test => tests}/ui/binding/match-path.rs (100%) rename {src/test => tests}/ui/binding/match-pattern-bindings.rs (100%) rename {src/test => tests}/ui/binding/match-pattern-lit.rs (100%) rename {src/test => tests}/ui/binding/match-pattern-no-type-params.rs (100%) rename {src/test => tests}/ui/binding/match-pattern-simple.rs (100%) rename {src/test => tests}/ui/binding/match-phi.rs (100%) rename {src/test => tests}/ui/binding/match-pipe-binding.rs (100%) rename {src/test => tests}/ui/binding/match-range-infer.rs (100%) rename {src/test => tests}/ui/binding/match-range-static.rs (100%) rename {src/test => tests}/ui/binding/match-range.rs (100%) rename {src/test => tests}/ui/binding/match-reassign.rs (100%) rename {src/test => tests}/ui/binding/match-ref-binding-in-guard-3256.rs (100%) rename {src/test => tests}/ui/binding/match-ref-binding-mut-option.rs (100%) rename {src/test => tests}/ui/binding/match-ref-binding-mut.rs (100%) rename {src/test => tests}/ui/binding/match-ref-binding.rs (100%) rename {src/test => tests}/ui/binding/match-ref-unsized.rs (100%) rename {src/test => tests}/ui/binding/match-str.rs (100%) rename {src/test => tests}/ui/binding/match-struct-0.rs (100%) rename {src/test => tests}/ui/binding/match-tag.rs (100%) rename {src/test => tests}/ui/binding/match-unique-bind.rs (100%) rename {src/test => tests}/ui/binding/match-unsized.rs (100%) rename {src/test => tests}/ui/binding/match-value-binding-in-guard-3291.rs (100%) rename {src/test => tests}/ui/binding/match-var-hygiene.rs (100%) rename {src/test => tests}/ui/binding/match-vec-alternatives.rs (100%) rename {src/test => tests}/ui/binding/match-vec-rvalue.rs (100%) rename {src/test => tests}/ui/binding/match-with-ret-arm.rs (100%) rename {src/test => tests}/ui/binding/multi-let.rs (100%) rename {src/test => tests}/ui/binding/mut-in-ident-patterns.rs (100%) rename {src/test => tests}/ui/binding/nested-matchs.rs (100%) rename {src/test => tests}/ui/binding/nested-pattern.rs (100%) rename {src/test => tests}/ui/binding/nil-pattern.rs (100%) rename {src/test => tests}/ui/binding/nullary-or-pattern.rs (100%) rename {src/test => tests}/ui/binding/optional_comma_in_match_arm.rs (100%) rename {src/test => tests}/ui/binding/or-pattern.rs (100%) rename {src/test => tests}/ui/binding/order-drop-with-match.rs (100%) rename {src/test => tests}/ui/binding/pat-ranges.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-1.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-2.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-3.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-4.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-5.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-6.rs (100%) rename {src/test => tests}/ui/binding/pat-tuple-7.rs (100%) rename {src/test => tests}/ui/binding/pattern-bound-var-in-for-each.rs (100%) rename {src/test => tests}/ui/binding/pattern-in-closure.rs (100%) rename {src/test => tests}/ui/binding/range-inclusive-pattern-precedence.rs (100%) rename {src/test => tests}/ui/binding/shadow.rs (100%) rename {src/test => tests}/ui/binding/simple-generic-match.rs (100%) rename {src/test => tests}/ui/binding/use-uninit-match.rs (100%) rename {src/test => tests}/ui/binding/use-uninit-match2.rs (100%) rename {src/test => tests}/ui/binding/zero_sized_subslice_match.rs (100%) rename {src/test => tests}/ui/binop/binary-minus-without-space.rs (100%) rename {src/test => tests}/ui/binop/binary-op-on-double-ref.fixed (100%) rename {src/test => tests}/ui/binop/binary-op-on-double-ref.rs (100%) rename {src/test => tests}/ui/binop/binary-op-on-double-ref.stderr (100%) rename {src/test => tests}/ui/binop/binary-op-on-fn-ptr-eq.rs (100%) rename {src/test => tests}/ui/binop/binop-bitxor-str.rs (100%) rename {src/test => tests}/ui/binop/binop-bitxor-str.stderr (100%) rename {src/test => tests}/ui/binop/binop-consume-args.rs (100%) rename {src/test => tests}/ui/binop/binop-consume-args.stderr (100%) rename {src/test => tests}/ui/binop/binop-fail-3.rs (100%) rename {src/test => tests}/ui/binop/binop-logic-float.rs (100%) rename {src/test => tests}/ui/binop/binop-logic-float.stderr (100%) rename {src/test => tests}/ui/binop/binop-logic-int.rs (100%) rename {src/test => tests}/ui/binop/binop-logic-int.stderr (100%) rename {src/test => tests}/ui/binop/binop-move-semantics.rs (100%) rename {src/test => tests}/ui/binop/binop-move-semantics.stderr (100%) rename {src/test => tests}/ui/binop/binop-mul-bool.rs (100%) rename {src/test => tests}/ui/binop/binop-mul-bool.stderr (100%) rename {src/test => tests}/ui/binop/binop-mul-i32-f32.rs (100%) rename {src/test => tests}/ui/binop/binop-mul-i32-f32.stderr (100%) rename {src/test => tests}/ui/binop/binop-panic.rs (100%) rename {src/test => tests}/ui/binop/binop-typeck.rs (100%) rename {src/test => tests}/ui/binop/binop-typeck.stderr (100%) rename {src/test => tests}/ui/binop/binops-issue-22743.rs (100%) rename {src/test => tests}/ui/binop/binops.rs (100%) rename {src/test => tests}/ui/binop/issue-25916.rs (100%) rename {src/test => tests}/ui/binop/issue-28837.rs (100%) rename {src/test => tests}/ui/binop/issue-28837.stderr (100%) rename {src/test => tests}/ui/binop/issue-3820.rs (100%) rename {src/test => tests}/ui/binop/issue-3820.stderr (100%) rename {src/test => tests}/ui/binop/issue-77910-1.rs (100%) rename {src/test => tests}/ui/binop/issue-77910-1.stderr (100%) rename {src/test => tests}/ui/binop/issue-77910-2.rs (100%) rename {src/test => tests}/ui/binop/issue-77910-2.stderr (100%) rename {src/test => tests}/ui/binop/issue-93927.rs (100%) rename {src/test => tests}/ui/binop/issue-93927.stderr (100%) rename {src/test => tests}/ui/binop/operator-multidispatch.rs (100%) rename {src/test => tests}/ui/binop/operator-overloading.rs (100%) rename {src/test => tests}/ui/binop/placement-syntax.rs (100%) rename {src/test => tests}/ui/binop/placement-syntax.stderr (100%) rename {src/test => tests}/ui/binop/shift-various-bad-types.rs (100%) rename {src/test => tests}/ui/binop/shift-various-bad-types.stderr (100%) rename {src/test => tests}/ui/binop/structured-compare.rs (100%) rename {src/test => tests}/ui/bitwise.rs (100%) rename {src/test => tests}/ui/blind/blind-item-block-item-shadow.rs (100%) rename {src/test => tests}/ui/blind/blind-item-block-item-shadow.stderr (100%) rename {src/test => tests}/ui/blind/blind-item-block-middle.rs (100%) rename {src/test => tests}/ui/blind/blind-item-block-middle.stderr (100%) rename {src/test => tests}/ui/blind/blind-item-item-shadow.rs (100%) rename {src/test => tests}/ui/blind/blind-item-item-shadow.stderr (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-do.rs (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-do.stderr (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-res.rs (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-res.stderr (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-while.rs (100%) rename {src/test => tests}/ui/block-result/block-must-not-have-result-while.stderr (100%) rename {src/test => tests}/ui/block-result/consider-removing-last-semi.fixed (100%) rename {src/test => tests}/ui/block-result/consider-removing-last-semi.rs (100%) rename {src/test => tests}/ui/block-result/consider-removing-last-semi.stderr (100%) rename {src/test => tests}/ui/block-result/issue-11714.rs (100%) rename {src/test => tests}/ui/block-result/issue-11714.stderr (100%) rename {src/test => tests}/ui/block-result/issue-13428.rs (100%) rename {src/test => tests}/ui/block-result/issue-13428.stderr (100%) rename {src/test => tests}/ui/block-result/issue-13624.rs (100%) rename {src/test => tests}/ui/block-result/issue-13624.stderr (100%) rename {src/test => tests}/ui/block-result/issue-20862.rs (100%) rename {src/test => tests}/ui/block-result/issue-20862.stderr (100%) rename {src/test => tests}/ui/block-result/issue-22645.rs (100%) rename {src/test => tests}/ui/block-result/issue-22645.stderr (100%) rename {src/test => tests}/ui/block-result/issue-3563.rs (100%) rename {src/test => tests}/ui/block-result/issue-3563.stderr (100%) rename {src/test => tests}/ui/block-result/issue-5500.rs (100%) rename {src/test => tests}/ui/block-result/issue-5500.stderr (100%) rename {src/test => tests}/ui/block-result/unexpected-return-on-unit.rs (100%) rename {src/test => tests}/ui/block-result/unexpected-return-on-unit.stderr (100%) rename {src/test => tests}/ui/bogus-tag.rs (100%) rename {src/test => tests}/ui/bogus-tag.stderr (100%) rename {src/test => tests}/ui/borrow-by-val-method-receiver.rs (100%) rename {src/test => tests}/ui/borrowck/access-mode-in-closures.rs (100%) rename {src/test => tests}/ui/borrowck/access-mode-in-closures.stderr (100%) rename {src/test => tests}/ui/borrowck/anonymous-region-in-apit.rs (100%) rename {src/test => tests}/ui/borrowck/anonymous-region-in-apit.stderr (100%) rename {src/test => tests}/ui/borrowck/assign-never-type.rs (100%) rename {src/test => tests}/ui/borrowck/assign_mutable_fields.rs (100%) rename {src/test => tests}/ui/borrowck/assign_mutable_fields.stderr (100%) rename {src/test => tests}/ui/borrowck/async-reference-generality.rs (100%) rename {src/test => tests}/ui/borrowck/async-reference-generality.stderr (100%) rename {src/test => tests}/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs (100%) rename {src/test => tests}/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-immutable-upvar-mutation.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-immutable-upvar-mutation.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-borrowed.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-borrowed.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-deref-mutability-ok.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-deref-mutability.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-deref-mutability.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-mutability-ok.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-mutability.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-raw-address-of-mutability.stderr (100%) rename {src/test => tests}/ui/borrowck/borrow-tuple-fields.rs (100%) rename {src/test => tests}/ui/borrowck/borrow-tuple-fields.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-access-permissions.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-access-permissions.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-and-init.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-and-init.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-struct.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-struct.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-tuple.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-tuple.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-variant.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-anon-fields-variant.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-argument.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-argument.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-comp-idx.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-comp-idx.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-comp.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-comp.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-constants.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-constants.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-assign-to-subfield.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-assignment-to-static-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-autoref-3261.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-autoref-3261.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-bad-nested-calls-free.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-bad-nested-calls-free.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-bad-nested-calls-move.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-bad-nested-calls-move.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-binding-mutbl.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-block-unint.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-block-unint.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-expr-block.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-owned-ptr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-owned-ptr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-stack-variable.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-stack-variable.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-temporary.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-from-temporary.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-mut-object-twice.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-mut-object-twice.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-of-mut-base-ptr-safe.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-overloaded-auto-deref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-overloaded-auto-deref.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-overloaded-deref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrow-overloaded-deref.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrowed-uniq-rvalue.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-borrowed-uniq-rvalue.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-box-sensitivity.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-break-uninit-2.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-break-uninit-2.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-break-uninit.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-break-uninit.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-and-imm.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-and-imm.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-of-imm.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-of-imm.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-of-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-mut-of-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-slice-patterns-ok.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-slice-patterns.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-slice-patterns.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-two-imm.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-two-mut-fail.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-two-mut-fail.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-two-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-two-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-unique-imm.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-unique-imm.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-unique.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-unique.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-use-after-free.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-closures-use-after-free.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-consume-unsize-vec.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-consume-unsize-vec.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-consume-upcast-box.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-consume-upcast-box.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-describe-lvalue.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-describe-lvalue.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-drop-from-guard.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-drop-from-guard.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-escaping-closure-error-1.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-escaping-closure-error-1.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-escaping-closure-error-2.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-escaping-closure-error-2.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-field-sensitivity-rpass.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-field-sensitivity.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-field-sensitivity.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-fixed-length-vecs.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-fn-in-const-a.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-fn-in-const-a.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-fn-in-const-c.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-fn-in-const-c.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-head-linkage.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-head-linkage.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-freeze-frozen-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-if-no-else.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-if-no-else.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-if-with-else.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-if-with-else.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-in-static.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-in-static.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-called-fn-expr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-called-fn-expr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-fn-expr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-fn-expr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-fru.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-in-fru.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-op-equal.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-op-equal.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-plus-equal.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-init-plus-equal.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-insert-during-each.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-insert-during-each.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-14498.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-14498.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-2657-1.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-2657-1.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-2657-2.fixed (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-2657-2.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-2657-2.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-48962.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-issue-48962.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-args.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-if.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-if.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-loop.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-match.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow-match.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-lend-flow.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-move-cc.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-move-cc.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-move.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-move.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-mut-uniq.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-blocks-mut-uniq.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-in-overloaded-op.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-in-overloaded-op.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-of-static-data-issue-27616.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-of-static-data-issue-27616.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-rcvr-overloaded-op.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-rcvr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-rcvr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-vec-content.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-loan-vec-content.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-local-borrow-outlives-fn.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-local-borrow-outlives-fn.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-local-borrow.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-macro-interaction-issue-6304.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-match-already-borrowed.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-match-already-borrowed.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-match-binding-is-assignment.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-match-binding-is-assignment.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-by-capture-ok.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-by-capture.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-by-capture.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-error-with-note.fixed (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-error-with-note.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-error-with-note.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-from-unsafe-ptr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-from-unsafe-ptr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-in-irrefut-pat.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-in-irrefut-pat.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-moved-value-into-closure.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-moved-value-into-closure.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-mut-base-ptr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-mut-base-ptr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-match.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-match.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-no-overlap.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use-match.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use-match.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use-no-overlap.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array-use.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-from-array.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-overloaded-deref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-overloaded-deref.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-static-item.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-static-item.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-struct-with-dtor.fixed (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-struct-with-dtor.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-struct-with-dtor.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.fixed (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-vec-tail.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-out-of-vec-tail.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-subcomponent.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-move-subcomponent.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-multiple-borrows-interior-boxes.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-multiple-captures.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-multiple-captures.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-addr-of-imm-var.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-addr-of-imm-var.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-borrow-linear-errors.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-borrow-linear-errors.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-slice-of-imm-vec.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-slice-of-imm-vec.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-uniq.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mut-vec-as-imm-slice.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mutate-in-guard.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-mutate-in-guard.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-no-cycle-in-exchange-heap.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-no-cycle-in-exchange-heap.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-object-lifetime.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-object-lifetime.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-or-init.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-or-init.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-call.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-call.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-autoderef.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-autoderef.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-move-from-vec.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-move-from-vec.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-move-index.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-move-index.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-ref-index.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-overloaded-index-ref-index.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-1.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-1.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-2.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-2.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-3.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-3.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-4.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-partial-reinit-4.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-pat-enum.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-pat-reassign-binding.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-pat-reassign-binding.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-pat-reassign-no-binding.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-reborrow-from-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-reborrow-from-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-ref-mut-of-imm.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-ref-mut-of-imm.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-reinit.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-reinit.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-report-with-custom-diagnostic.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-report-with-custom-diagnostic.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-return-variable-on-stack-via-clone.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-return-variable-on-stack-via-clone.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-return.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-return.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-rvalues-mutable.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-scope-of-deref-issue-4666.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-array-no-overlap.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-array.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-array.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-rpass.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-slice-no-overlap.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-slice.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-slice-pattern-element-loan-slice.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-static-item-in-fn.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-storage-dead.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-storage-dead.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-struct-update-with-dtor.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-struct-update-with-dtor.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-swap-mut-base-ptr.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-swap-mut-base-ptr.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-trait-lifetime.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-unary-move.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-unary-move.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-unboxed-closures.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-unboxed-closures.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-after-item.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-after-item.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-field-access.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-field-access.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-in-assignop.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-in-assignop.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-ref-chain.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit-ref-chain.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uninit.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-borrow-nested.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-borrow-nested.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-borrow.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-borrow.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-move-assign.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-move-assign.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-move.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-move.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-uninitialized.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-union-uninitialized.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uniq-via-lend.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-uniq-via-lend.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-uniq-via-ref.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-univariant-enum.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-unused-mut-locals.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-in-index-lvalue.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-in-index-lvalue.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-mut-borrow-rpass.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-mut-borrow.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-mut-borrow.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-uninitialized-in-cast.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-use-uninitialized-in-cast.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-element-loan.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-element-loan.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-loan-from-mut.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-loan-from-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-move-tail.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-move-tail.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-nesting.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-nesting.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-tail-element-loan.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-vec-pattern-tail-element-loan.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-while-break.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-while-break.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-while-cond.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-while-cond.stderr (100%) rename {src/test => tests}/ui/borrowck/borrowck-while.rs (100%) rename {src/test => tests}/ui/borrowck/borrowck-while.stderr (100%) rename {src/test => tests}/ui/borrowck/copy-suggestion-region-vid.rs (100%) rename {src/test => tests}/ui/borrowck/copy-suggestion-region-vid.stderr (100%) rename {src/test => tests}/ui/borrowck/disallow-possibly-uninitialized.rs (100%) rename {src/test => tests}/ui/borrowck/disallow-possibly-uninitialized.stderr (100%) rename {src/test => tests}/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.rs (100%) rename {src/test => tests}/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.stderr (100%) rename {src/test => tests}/ui/borrowck/fsu-moves-and-copies.rs (100%) rename {src/test => tests}/ui/borrowck/immut-function-arguments.rs (100%) rename {src/test => tests}/ui/borrowck/immut-function-arguments.stderr (100%) rename {src/test => tests}/ui/borrowck/immutable-arg.rs (100%) rename {src/test => tests}/ui/borrowck/immutable-arg.stderr (100%) rename {src/test => tests}/ui/borrowck/index-mut-help-with-impl.rs (100%) rename {src/test => tests}/ui/borrowck/index-mut-help-with-impl.stderr (100%) rename {src/test => tests}/ui/borrowck/index-mut-help.rs (100%) rename {src/test => tests}/ui/borrowck/index-mut-help.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-101119.rs (100%) rename {src/test => tests}/ui/borrowck/issue-101119.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-102209.rs (100%) rename {src/test => tests}/ui/borrowck/issue-102209.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-103095.rs (100%) rename {src/test => tests}/ui/borrowck/issue-103250.rs (100%) rename {src/test => tests}/ui/borrowck/issue-103250.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-103624.rs (100%) rename {src/test => tests}/ui/borrowck/issue-103624.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-104639-lifetime-order.rs (100%) rename {src/test => tests}/ui/borrowck/issue-10876.rs (100%) rename {src/test => tests}/ui/borrowck/issue-11493.fixed (100%) rename {src/test => tests}/ui/borrowck/issue-11493.rs (100%) rename {src/test => tests}/ui/borrowck/issue-11493.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-17263.rs (100%) rename {src/test => tests}/ui/borrowck/issue-17545.rs (100%) rename {src/test => tests}/ui/borrowck/issue-17545.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-17718-static-move.rs (100%) rename {src/test => tests}/ui/borrowck/issue-17718-static-move.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-20801.rs (100%) rename {src/test => tests}/ui/borrowck/issue-20801.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-23338-params-outlive-temps-of-body.rs (100%) rename {src/test => tests}/ui/borrowck/issue-24267-flow-exit.rs (100%) rename {src/test => tests}/ui/borrowck/issue-24267-flow-exit.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-25793.rs (100%) rename {src/test => tests}/ui/borrowck/issue-25793.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-28934.rs (100%) rename {src/test => tests}/ui/borrowck/issue-29166.rs (100%) rename {src/test => tests}/ui/borrowck/issue-31287-drop-in-guard.rs (100%) rename {src/test => tests}/ui/borrowck/issue-31287-drop-in-guard.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-33819.rs (100%) rename {src/test => tests}/ui/borrowck/issue-33819.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-36082.fixed (100%) rename {src/test => tests}/ui/borrowck/issue-36082.rs (100%) rename {src/test => tests}/ui/borrowck/issue-36082.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-41962.rs (100%) rename {src/test => tests}/ui/borrowck/issue-41962.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-42344.rs (100%) rename {src/test => tests}/ui/borrowck/issue-42344.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-45199.rs (100%) rename {src/test => tests}/ui/borrowck/issue-45199.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-45983.rs (100%) rename {src/test => tests}/ui/borrowck/issue-45983.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-46095.rs (100%) rename {src/test => tests}/ui/borrowck/issue-46471.rs (100%) rename {src/test => tests}/ui/borrowck/issue-46471.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-47215-ice-from-drop-elab.rs (100%) rename {src/test => tests}/ui/borrowck/issue-47215-ice-from-drop-elab.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-51117.rs (100%) rename {src/test => tests}/ui/borrowck/issue-51117.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-51301.rs (100%) rename {src/test => tests}/ui/borrowck/issue-51301.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs (100%) rename {src/test => tests}/ui/borrowck/issue-51415.fixed (100%) rename {src/test => tests}/ui/borrowck/issue-51415.rs (100%) rename {src/test => tests}/ui/borrowck/issue-51415.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-52713-bug.rs (100%) rename {src/test => tests}/ui/borrowck/issue-52713-bug.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs (100%) rename {src/test => tests}/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs (100%) rename {src/test => tests}/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-moved-out.rs (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-moved-out.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-never-init.rs (100%) rename {src/test => tests}/ui/borrowck/issue-54499-field-mutation-of-never-init.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs (100%) rename {src/test => tests}/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs (100%) rename {src/test => tests}/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs (100%) rename {src/test => tests}/ui/borrowck/issue-58776-borrowck-scans-children.rs (100%) rename {src/test => tests}/ui/borrowck/issue-58776-borrowck-scans-children.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-62007-assign-box.rs (100%) rename {src/test => tests}/ui/borrowck/issue-62007-assign-field.rs (100%) rename {src/test => tests}/ui/borrowck/issue-62107-match-arm-scopes.rs (100%) rename {src/test => tests}/ui/borrowck/issue-62107-match-arm-scopes.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-64453.rs (100%) rename {src/test => tests}/ui/borrowck/issue-64453.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-69789-iterator-mut-suggestion.rs (100%) rename {src/test => tests}/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-71546.rs (100%) rename {src/test => tests}/ui/borrowck/issue-7573.rs (100%) rename {src/test => tests}/ui/borrowck/issue-7573.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-80772.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-1.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-1.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-10.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-10.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-11.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-11.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-2.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-2.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-3.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-3.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-4.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-4.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-5.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-5.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-6.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-6.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-7.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-7.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-8.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-8.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81365-9.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81365-9.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-81899.rs (100%) rename {src/test => tests}/ui/borrowck/issue-81899.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-82032.rs (100%) rename {src/test => tests}/ui/borrowck/issue-82032.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-82126-mismatched-subst-and-hir.rs (100%) rename {src/test => tests}/ui/borrowck/issue-82126-mismatched-subst-and-hir.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-82462.rs (100%) rename {src/test => tests}/ui/borrowck/issue-82462.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs (100%) rename {src/test => tests}/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-83760.rs (100%) rename {src/test => tests}/ui/borrowck/issue-83760.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-85581.rs (100%) rename {src/test => tests}/ui/borrowck/issue-85581.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-85765.rs (100%) rename {src/test => tests}/ui/borrowck/issue-85765.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-87456-point-to-closure.rs (100%) rename {src/test => tests}/ui/borrowck/issue-87456-point-to-closure.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-88434-minimal-example.rs (100%) rename {src/test => tests}/ui/borrowck/issue-88434-minimal-example.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-88434-removal-index-should-be-less.rs (100%) rename {src/test => tests}/ui/borrowck/issue-88434-removal-index-should-be-less.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-91206.rs (100%) rename {src/test => tests}/ui/borrowck/issue-91206.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-92015.rs (100%) rename {src/test => tests}/ui/borrowck/issue-92015.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-93078.rs (100%) rename {src/test => tests}/ui/borrowck/issue-93078.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-93093.rs (100%) rename {src/test => tests}/ui/borrowck/issue-93093.stderr (100%) rename {src/test => tests}/ui/borrowck/issue-95079-missing-move-in-nested-closure.rs (100%) rename {src/test => tests}/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr (100%) rename {src/test => tests}/ui/borrowck/kindck-implicit-close-over-mut-var.rs (100%) rename {src/test => tests}/ui/borrowck/lazy-init.rs (100%) rename {src/test => tests}/ui/borrowck/many-mutable-borrows.rs (100%) rename {src/test => tests}/ui/borrowck/many-mutable-borrows.stderr (100%) rename {src/test => tests}/ui/borrowck/move-error-in-promoted-2.rs (100%) rename {src/test => tests}/ui/borrowck/move-error-in-promoted-2.stderr (100%) rename {src/test => tests}/ui/borrowck/move-error-in-promoted.rs (100%) rename {src/test => tests}/ui/borrowck/move-error-in-promoted.stderr (100%) rename {src/test => tests}/ui/borrowck/move-error-snippets-ext.rs (100%) rename {src/test => tests}/ui/borrowck/move-error-snippets.rs (100%) rename {src/test => tests}/ui/borrowck/move-error-snippets.stderr (100%) rename {src/test => tests}/ui/borrowck/move-from-union-field-issue-66500.rs (100%) rename {src/test => tests}/ui/borrowck/move-from-union-field-issue-66500.stderr (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern-mut-in-loop.rs (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern-mut-in-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern-mut.rs (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern.fixed (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern.rs (100%) rename {src/test => tests}/ui/borrowck/move-in-pattern.stderr (100%) rename {src/test => tests}/ui/borrowck/move-in-static-initializer-issue-38520.rs (100%) rename {src/test => tests}/ui/borrowck/move-in-static-initializer-issue-38520.stderr (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-in-loop-2.fixed (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-in-loop-2.rs (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-in-loop-2.stderr (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-in-loop.rs (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-in-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-of-mut-ref.rs (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-of-mut-ref.stderr (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-outside-loop.rs (100%) rename {src/test => tests}/ui/borrowck/mut-borrow-outside-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/mutability-errors.rs (100%) rename {src/test => tests}/ui/borrowck/mutability-errors.stderr (100%) rename {src/test => tests}/ui/borrowck/or-patterns.rs (100%) rename {src/test => tests}/ui/borrowck/or-patterns.stderr (100%) rename {src/test => tests}/ui/borrowck/promote-ref-mut-in-let-issue-46557.rs (100%) rename {src/test => tests}/ui/borrowck/promote-ref-mut-in-let-issue-46557.stderr (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields.rs (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields.stderr (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields_overlapping.rs (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields_overlapping.stderr (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields_twice.rs (100%) rename {src/test => tests}/ui/borrowck/reassignment_immutable_fields_twice.stderr (100%) rename {src/test => tests}/ui/borrowck/reborrow-sugg-move-then-borrow.rs (100%) rename {src/test => tests}/ui/borrowck/reborrow-sugg-move-then-borrow.stderr (100%) rename {src/test => tests}/ui/borrowck/regions-bound-missing-bound-in-impl.rs (100%) rename {src/test => tests}/ui/borrowck/regions-bound-missing-bound-in-impl.stderr (100%) rename {src/test => tests}/ui/borrowck/regions-escape-bound-fn-2.rs (100%) rename {src/test => tests}/ui/borrowck/regions-escape-bound-fn-2.stderr (100%) rename {src/test => tests}/ui/borrowck/regions-escape-bound-fn.rs (100%) rename {src/test => tests}/ui/borrowck/regions-escape-bound-fn.stderr (100%) rename {src/test => tests}/ui/borrowck/regions-escape-unboxed-closure.rs (100%) rename {src/test => tests}/ui/borrowck/regions-escape-unboxed-closure.stderr (100%) rename {src/test => tests}/ui/borrowck/return-local-binding-from-desugaring.rs (100%) rename {src/test => tests}/ui/borrowck/return-local-binding-from-desugaring.stderr (100%) rename {src/test => tests}/ui/borrowck/slice-index-bounds-check-invalidation.rs (100%) rename {src/test => tests}/ui/borrowck/slice-index-bounds-check-invalidation.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-as-ref-on-mut-closure.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-as-ref-on-mut-closure.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-assign-rvalue.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-assign-rvalue.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-double-mut.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-double-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-for-vector.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-for-vector.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-imm-and-mut.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-local-var-imm-and-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/suggest-storing-local-var-for-vector.rs (100%) rename {src/test => tests}/ui/borrowck/suggest-storing-local-var-for-vector.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-across-loop.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-across-loop.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-activation-sharing-interference.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-allow-access-during-reservation.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-baseline.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-bin-ops.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-control-flow-split-before-activation.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-method-receivers.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-multi-mut.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-multi-mut.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-multiple-activations.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-nonrecv-autoref.base.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-nonrecv-autoref.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-reservation-sharing-interference-2.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-reservation-sharing-interference-2.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-reservation-sharing-interference.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-sneaky.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-sneaky.stderr (100%) rename {src/test => tests}/ui/borrowck/two-phase-surprise-no-conflict.rs (100%) rename {src/test => tests}/ui/borrowck/two-phase-surprise-no-conflict.stderr (100%) rename {src/test => tests}/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.fixed (100%) rename {src/test => tests}/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.rs (100%) rename {src/test => tests}/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.stderr (100%) rename {src/test => tests}/ui/bounds-lifetime.rs (100%) rename {src/test => tests}/ui/bounds-lifetime.stderr (100%) rename {src/test => tests}/ui/box/alloc-unstable-fail.rs (100%) rename {src/test => tests}/ui/box/alloc-unstable-fail.stderr (100%) rename {src/test => tests}/ui/box/alloc-unstable.rs (100%) rename {src/test => tests}/ui/box/into-boxed-slice-fail.rs (100%) rename {src/test => tests}/ui/box/into-boxed-slice-fail.stderr (100%) rename {src/test => tests}/ui/box/into-boxed-slice.rs (100%) rename {src/test => tests}/ui/box/issue-82446.rs (100%) rename {src/test => tests}/ui/box/issue-82446.stderr (100%) rename {src/test => tests}/ui/box/issue-95036.rs (100%) rename {src/test => tests}/ui/box/large-allocator-ice.rs (100%) rename {src/test => tests}/ui/box/leak-alloc.rs (100%) rename {src/test => tests}/ui/box/leak-alloc.stderr (100%) rename {src/test => tests}/ui/box/new-box-syntax.rs (100%) rename {src/test => tests}/ui/box/new-box.rs (100%) rename {src/test => tests}/ui/box/new.rs (100%) rename {src/test => tests}/ui/box/thin_align.rs (100%) rename {src/test => tests}/ui/box/thin_drop.rs (100%) rename {src/test => tests}/ui/box/thin_new.rs (100%) rename {src/test => tests}/ui/box/thin_zst.rs (100%) rename {src/test => tests}/ui/break-diverging-value.rs (100%) rename {src/test => tests}/ui/break-diverging-value.stderr (100%) rename {src/test => tests}/ui/btreemap/btreemap-index-mut.rs (100%) rename {src/test => tests}/ui/btreemap/btreemap-index-mut.stderr (100%) rename {src/test => tests}/ui/btreemap/btreemap_dropck.rs (100%) rename {src/test => tests}/ui/btreemap/btreemap_dropck.stderr (100%) rename {src/test => tests}/ui/btreemap/btreemap_into_iterator_lifetime.rs (100%) rename {src/test => tests}/ui/builtin-clone-unwind.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/auxiliary/trait_superkinds_in_metadata.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-capabilities-transitive.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-capabilities-xc.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-capabilities.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-double-superkind.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-double-superkind.stderr (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-in-metadata.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-in-metadata.stderr (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-in-metadata2.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-phantom-typaram.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-self-type.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-self-type.stderr (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-simple.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-simple.stderr (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-simple2.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.rs (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.stderr (100%) rename {src/test => tests}/ui/builtin-superkinds/builtin-superkinds-typaram.rs (100%) rename {src/test => tests}/ui/by-move-pattern-binding.rs (100%) rename {src/test => tests}/ui/by-move-pattern-binding.stderr (100%) rename {src/test => tests}/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs (100%) rename {src/test => tests}/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr (100%) rename {src/test => tests}/ui/c-variadic/issue-32201.rs (100%) rename {src/test => tests}/ui/c-variadic/issue-32201.stderr (100%) rename {src/test => tests}/ui/c-variadic/issue-86053-1.rs (100%) rename {src/test => tests}/ui/c-variadic/issue-86053-1.stderr (100%) rename {src/test => tests}/ui/c-variadic/issue-86053-2.rs (100%) rename {src/test => tests}/ui/c-variadic/issue-86053-2.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-1.rs (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-1.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-2.rs (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-2.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-4.rs (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-4.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-6.rs (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-6.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-no-fixed-args.rs (100%) rename {src/test => tests}/ui/c-variadic/variadic-ffi-no-fixed-args.stderr (100%) rename {src/test => tests}/ui/c-variadic/variadic-unreachable-arg-error.rs (100%) rename {src/test => tests}/ui/can-copy-pod.rs (100%) rename {src/test => tests}/ui/cancel-clean-via-immediate-rvalue-ref.rs (100%) rename {src/test => tests}/ui/cannot-mutate-captured-non-mut-var.rs (100%) rename {src/test => tests}/ui/cannot-mutate-captured-non-mut-var.stderr (100%) rename {src/test => tests}/ui/capture1.rs (100%) rename {src/test => tests}/ui/capture1.stderr (100%) rename {src/test => tests}/ui/cast/cast-as-bool.rs (100%) rename {src/test => tests}/ui/cast/cast-as-bool.stderr (100%) rename {src/test => tests}/ui/cast/cast-char.rs (100%) rename {src/test => tests}/ui/cast/cast-char.stderr (100%) rename {src/test => tests}/ui/cast/cast-does-fallback.rs (100%) rename {src/test => tests}/ui/cast/cast-errors-issue-43825.rs (100%) rename {src/test => tests}/ui/cast/cast-errors-issue-43825.stderr (100%) rename {src/test => tests}/ui/cast/cast-from-nil.rs (100%) rename {src/test => tests}/ui/cast/cast-from-nil.stderr (100%) rename {src/test => tests}/ui/cast/cast-int-to-char.rs (100%) rename {src/test => tests}/ui/cast/cast-int-to-char.stderr (100%) rename {src/test => tests}/ui/cast/cast-macro-lhs.rs (100%) rename {src/test => tests}/ui/cast/cast-macro-lhs.stderr (100%) rename {src/test => tests}/ui/cast/cast-pointee-projection.rs (100%) rename {src/test => tests}/ui/cast/cast-region-to-uint.rs (100%) rename {src/test => tests}/ui/cast/cast-rfc0401-2.rs (100%) rename {src/test => tests}/ui/cast/cast-rfc0401-2.stderr (100%) rename {src/test => tests}/ui/cast/cast-rfc0401-vtable-kinds.rs (100%) rename {src/test => tests}/ui/cast/cast-rfc0401.rs (100%) rename {src/test => tests}/ui/cast/cast-to-bare-fn.rs (100%) rename {src/test => tests}/ui/cast/cast-to-bare-fn.stderr (100%) rename {src/test => tests}/ui/cast/cast-to-infer-ty.rs (100%) rename {src/test => tests}/ui/cast/cast-to-nil.rs (100%) rename {src/test => tests}/ui/cast/cast-to-nil.stderr (100%) rename {src/test => tests}/ui/cast/cast-to-unsized-trait-object-suggestion.rs (100%) rename {src/test => tests}/ui/cast/cast-to-unsized-trait-object-suggestion.stderr (100%) rename {src/test => tests}/ui/cast/cast.rs (100%) rename {src/test => tests}/ui/cast/casts-differing-anon.rs (100%) rename {src/test => tests}/ui/cast/casts-differing-anon.stderr (100%) rename {src/test => tests}/ui/cast/casts-issue-46365.rs (100%) rename {src/test => tests}/ui/cast/casts-issue-46365.stderr (100%) rename {src/test => tests}/ui/cast/codegen-object-shim.rs (100%) rename {src/test => tests}/ui/cast/fat-ptr-cast-rpass.rs (100%) rename {src/test => tests}/ui/cast/fat-ptr-cast.rs (100%) rename {src/test => tests}/ui/cast/fat-ptr-cast.stderr (100%) rename {src/test => tests}/ui/cast/issue-10991.rs (100%) rename {src/test => tests}/ui/cast/issue-10991.stderr (100%) rename {src/test => tests}/ui/cast/issue-17444.rs (100%) rename {src/test => tests}/ui/cast/issue-17444.stderr (100%) rename {src/test => tests}/ui/cast/issue-84213.fixed (100%) rename {src/test => tests}/ui/cast/issue-84213.rs (100%) rename {src/test => tests}/ui/cast/issue-84213.stderr (100%) rename {src/test => tests}/ui/cast/issue-85586.rs (100%) rename {src/test => tests}/ui/cast/issue-85586.stderr (100%) rename {src/test => tests}/ui/cast/issue-88621.rs (100%) rename {src/test => tests}/ui/cast/issue-88621.stderr (100%) rename {src/test => tests}/ui/cast/issue-89497.fixed (100%) rename {src/test => tests}/ui/cast/issue-89497.rs (100%) rename {src/test => tests}/ui/cast/issue-89497.stderr (100%) rename {src/test => tests}/ui/cast/supported-cast.rs (100%) rename {src/test => tests}/ui/cast/unsupported-cast.rs (100%) rename {src/test => tests}/ui/cast/unsupported-cast.stderr (100%) rename {src/test => tests}/ui/catch-unwind-bang.rs (100%) rename {src/test => tests}/ui/cenum_impl_drop_cast.rs (100%) rename {src/test => tests}/ui/cenum_impl_drop_cast.stderr (100%) rename {src/test => tests}/ui/cfg/assume-incomplete-release/assume-incomplete.rs (100%) rename {src/test => tests}/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs (100%) rename {src/test => tests}/ui/cfg/auxiliary/cfg_inner_static.rs (100%) rename {src/test => tests}/ui/cfg/cfg-attr-cfg.rs (100%) rename {src/test => tests}/ui/cfg/cfg-attr-crate.rs (100%) rename {src/test => tests}/ui/cfg/cfg-family.rs (100%) rename {src/test => tests}/ui/cfg/cfg-in-crate-1.rs (100%) rename {src/test => tests}/ui/cfg/cfg-macros-foo.rs (100%) rename {src/test => tests}/ui/cfg/cfg-macros-notfoo.rs (100%) rename {src/test => tests}/ui/cfg/cfg-match-arm.rs (100%) rename {src/test => tests}/ui/cfg/cfg-method-receiver-ok.rs (100%) rename {src/test => tests}/ui/cfg/cfg-method-receiver.rs (100%) rename {src/test => tests}/ui/cfg/cfg-method-receiver.stderr (100%) rename {src/test => tests}/ui/cfg/cfg-panic-abort.rs (100%) rename {src/test => tests}/ui/cfg/cfg-panic.rs (100%) rename {src/test => tests}/ui/cfg/cfg-path-error.rs (100%) rename {src/test => tests}/ui/cfg/cfg-path-error.stderr (100%) rename {src/test => tests}/ui/cfg/cfg-target-abi.rs (100%) rename {src/test => tests}/ui/cfg/cfg-target-compact-errors.rs (100%) rename {src/test => tests}/ui/cfg/cfg-target-compact-errors.stderr (100%) rename {src/test => tests}/ui/cfg/cfg-target-compact.rs (100%) rename {src/test => tests}/ui/cfg/cfg-target-family.rs (100%) rename {src/test => tests}/ui/cfg/cfg-target-vendor.rs (100%) rename {src/test => tests}/ui/cfg/cfg_attr.rs (100%) rename {src/test => tests}/ui/cfg/cfg_inner_static.rs (100%) rename {src/test => tests}/ui/cfg/cfg_stmt_expr.rs (100%) rename {src/test => tests}/ui/cfg/cfgs-on-items.rs (100%) rename {src/test => tests}/ui/cfg/conditional-compile-arch.rs (100%) rename {src/test => tests}/ui/cfg/conditional-compile.rs (100%) rename {src/test => tests}/ui/cfg/crt-static-off-works.rs (100%) rename {src/test => tests}/ui/cfg/crt-static-on-works.rs (100%) rename {src/test => tests}/ui/cfg/expanded-cfg.rs (100%) rename {src/test => tests}/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs (100%) rename {src/test => tests}/ui/cfg/future-compat-crate-attributes-using-cfg_attr.stderr (100%) rename {src/test => tests}/ui/cfguard-run.rs (100%) rename {src/test => tests}/ui/chalkify/arithmetic.rs (100%) rename {src/test => tests}/ui/chalkify/assert.rs (100%) rename {src/test => tests}/ui/chalkify/basic.rs (100%) rename {src/test => tests}/ui/chalkify/bugs/async.rs (100%) rename {src/test => tests}/ui/chalkify/bugs/async.stderr (100%) rename {src/test => tests}/ui/chalkify/builtin-copy-clone.rs (100%) rename {src/test => tests}/ui/chalkify/chalk_initial_program.rs (100%) rename {src/test => tests}/ui/chalkify/chalk_initial_program.stderr (100%) rename {src/test => tests}/ui/chalkify/closure.rs (100%) rename {src/test => tests}/ui/chalkify/closure.stderr (100%) rename {src/test => tests}/ui/chalkify/generic_impls.rs (100%) rename {src/test => tests}/ui/chalkify/generic_impls.stderr (100%) rename {src/test => tests}/ui/chalkify/impl_wf.rs (100%) rename {src/test => tests}/ui/chalkify/impl_wf.stderr (100%) rename {src/test => tests}/ui/chalkify/impl_wf_2.rs (100%) rename {src/test => tests}/ui/chalkify/impl_wf_2.stderr (100%) rename {src/test => tests}/ui/chalkify/inherent_impl.rs (100%) rename {src/test => tests}/ui/chalkify/inherent_impl_min.rs (100%) rename {src/test => tests}/ui/chalkify/lower_env1.rs (100%) rename {src/test => tests}/ui/chalkify/lower_env2.rs (100%) rename {src/test => tests}/ui/chalkify/lower_env3.rs (100%) rename {src/test => tests}/ui/chalkify/lower_impl.rs (100%) rename {src/test => tests}/ui/chalkify/lower_struct.rs (100%) rename {src/test => tests}/ui/chalkify/lower_trait.rs (100%) rename {src/test => tests}/ui/chalkify/lower_trait_higher_rank.rs (100%) rename {src/test => tests}/ui/chalkify/lower_trait_where_clause.rs (100%) rename {src/test => tests}/ui/chalkify/println.rs (100%) rename {src/test => tests}/ui/chalkify/projection.rs (100%) rename {src/test => tests}/ui/chalkify/recursive_where_clause_on_type.rs (100%) rename {src/test => tests}/ui/chalkify/recursive_where_clause_on_type.stderr (100%) rename {src/test => tests}/ui/chalkify/super_trait.rs (100%) rename {src/test => tests}/ui/chalkify/trait-objects.rs (100%) rename {src/test => tests}/ui/chalkify/trait_implied_bound.rs (100%) rename {src/test => tests}/ui/chalkify/type_implied_bound.rs (100%) rename {src/test => tests}/ui/chalkify/type_inference.rs (100%) rename {src/test => tests}/ui/chalkify/type_inference.stderr (100%) rename {src/test => tests}/ui/chalkify/type_wf.rs (100%) rename {src/test => tests}/ui/chalkify/type_wf.stderr (100%) rename {src/test => tests}/ui/char.rs (100%) rename {src/test => tests}/ui/check-cfg/allow-at-crate-level.rs (100%) rename {src/test => tests}/ui/check-cfg/allow-macro-cfg.rs (100%) rename {src/test => tests}/ui/check-cfg/allow-same-level.rs (100%) rename {src/test => tests}/ui/check-cfg/allow-same-level.stderr (100%) rename {src/test => tests}/ui/check-cfg/allow-top-level.rs (100%) rename {src/test => tests}/ui/check-cfg/allow-upper-level.rs (100%) rename {src/test => tests}/ui/check-cfg/compact-names.rs (100%) rename {src/test => tests}/ui/check-cfg/compact-names.stderr (100%) rename {src/test => tests}/ui/check-cfg/compact-values.rs (100%) rename {src/test => tests}/ui/check-cfg/compact-values.stderr (100%) rename {src/test => tests}/ui/check-cfg/empty-names.rs (100%) rename {src/test => tests}/ui/check-cfg/empty-names.stderr (100%) rename {src/test => tests}/ui/check-cfg/empty-values.rs (100%) rename {src/test => tests}/ui/check-cfg/empty-values.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-arguments.anything_else.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-arguments.names_simple_ident.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-arguments.rs (100%) rename {src/test => tests}/ui/check-cfg/invalid-arguments.values_simple_ident.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-arguments.values_string_literals.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-cfg-name.rs (100%) rename {src/test => tests}/ui/check-cfg/invalid-cfg-name.stderr (100%) rename {src/test => tests}/ui/check-cfg/invalid-cfg-value.rs (100%) rename {src/test => tests}/ui/check-cfg/invalid-cfg-value.stderr (100%) rename {src/test => tests}/ui/check-cfg/mix.rs (100%) rename {src/test => tests}/ui/check-cfg/mix.stderr (100%) rename {src/test => tests}/ui/check-cfg/no-values.rs (100%) rename {src/test => tests}/ui/check-cfg/no-values.stderr (100%) rename {src/test => tests}/ui/check-cfg/stmt-no-ice.rs (100%) rename {src/test => tests}/ui/check-cfg/stmt-no-ice.stderr (100%) rename {src/test => tests}/ui/check-cfg/well-known-names.rs (100%) rename {src/test => tests}/ui/check-cfg/well-known-names.stderr (100%) rename {src/test => tests}/ui/check-cfg/well-known-values.rs (100%) rename {src/test => tests}/ui/check-cfg/well-known-values.stderr (100%) rename {src/test => tests}/ui/check-static-immutable-mut-slices.rs (100%) rename {src/test => tests}/ui/check-static-immutable-mut-slices.stderr (100%) rename {src/test => tests}/ui/check-static-recursion-foreign.rs (100%) rename {src/test => tests}/ui/check-static-values-constraints.rs (100%) rename {src/test => tests}/ui/check-static-values-constraints.stderr (100%) rename {src/test => tests}/ui/class-cast-to-trait.rs (100%) rename {src/test => tests}/ui/class-cast-to-trait.stderr (100%) rename {src/test => tests}/ui/class-method-missing.rs (100%) rename {src/test => tests}/ui/class-method-missing.stderr (100%) rename {src/test => tests}/ui/cleanup-rvalue-for-scope.rs (100%) rename {src/test => tests}/ui/cleanup-rvalue-scopes-cf.rs (100%) rename {src/test => tests}/ui/cleanup-rvalue-scopes-cf.stderr (100%) rename {src/test => tests}/ui/cleanup-rvalue-scopes.rs (100%) rename {src/test => tests}/ui/cleanup-rvalue-temp-during-incomplete-alloc.rs (100%) rename {src/test => tests}/ui/cleanup-shortcircuit.rs (100%) rename {src/test => tests}/ui/close-over-big-then-small-data.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-fn-supply-fn.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-fn-supply-fn.stderr (100%) rename {src/test => tests}/ui/closure-expected-type/expect-infer-var-appearing-twice.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-infer-var-appearing-twice.stderr (100%) rename {src/test => tests}/ui/closure-expected-type/expect-infer-var-supply-ty-with-bound-region.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-infer-var-supply-ty-with-free-region.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.rs (100%) rename {src/test => tests}/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr (100%) rename {src/test => tests}/ui/closure-expected-type/issue-24421.rs (100%) rename {src/test => tests}/ui/closure_context/issue-26046-fn-mut.rs (100%) rename {src/test => tests}/ui/closure_context/issue-26046-fn-mut.stderr (100%) rename {src/test => tests}/ui/closure_context/issue-26046-fn-once.rs (100%) rename {src/test => tests}/ui/closure_context/issue-26046-fn-once.stderr (100%) rename {src/test => tests}/ui/closure_context/issue-42065.rs (100%) rename {src/test => tests}/ui/closure_context/issue-42065.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/arrays-completely-captured.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/arrays-completely-captured.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/by_value.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/by_value.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-1.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-2.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-3.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-3.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-4.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-analysis-4.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-enum-field.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-enums.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/capture-enums.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/deep-multilevel-struct.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/deep-multilevel-struct.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/deep-multilevel-tuple.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/deep-multilevel-tuple.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/destructure_patterns.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/destructure_patterns.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/arrays.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/arrays.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/box.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/box.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/liveness.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/liveness.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/mut_ref.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/mut_ref.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/repr_packed.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/repr_packed.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/union.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/diagnostics/union.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/filter-on-struct-member.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/filter-on-struct-member.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-87378.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-87378.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-87987.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-87987.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-88118-2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-88118-2.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-88476.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-88476.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-89606.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-90465.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-90465.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-90465.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/issue_88118.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/auxiliary/match_non_exhaustive_lib.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-87097.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-87097.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-87426.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-87988.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-88331.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/issue-88331.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/match-edge-cases_1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/match-edge-cases_2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/match-edge-cases_2.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/non-exhaustive-match.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/non-exhaustive-match.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/auto_traits.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/auto_traits.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/auto_traits.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_no_migrations.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/issue-78720.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/issue-78720.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/issue-86753.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/macro.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/macro.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/macro.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/no_migrations.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/old_name.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/old_name.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/precise.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/precise.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/precise.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/precise_no_migrations.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/significant_drop.fixed (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/significant_drop.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/significant_drop.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/migrations/unpin_no_migration.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/move_closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/move_closure.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/multilevel-path-1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/multilevel-path-1.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/multilevel-path-2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/multilevel-path-2.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/nested-closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/nested-closure.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/optimization/edge_case.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/optimization/edge_case.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/optimization/edge_case_run_pass.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/path-with-array-access.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/path-with-array-access.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/preserve_field_drop_order.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/preserve_field_drop_order2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_eighteen.run.stdout (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_twentyone.run.stdout (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/repr_packed.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/repr_packed.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/box.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/by_value.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/capture_with_wildcard_match.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/disjoint-capture-in-same-closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/drop_then_use_fake_reads.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/edition.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/fru_syntax.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/issue-87378.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/issue-88372.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/issue-88431.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/issue-88476.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/lit-pattern-matching-with-methods.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/move_closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/multilevel-path-3.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/mut_ref.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/mut_ref_struct_mem.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/nested-closure.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/struct-pattern-matching-with-methods.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/tuple-struct-pattern-matching-with-methods.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/unsafe_ptr.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/run_pass/use_of_mutable_borrow_and_fake_reads.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/simple-struct-min-capture.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/unsafe_ptr.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/unsafe_ptr.stderr (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/wild_patterns.rs (100%) rename {src/test => tests}/ui/closures/2229_closure_analysis/wild_patterns.stderr (100%) rename {src/test => tests}/ui/closures/add_semicolon_non_block_closure.rs (100%) rename {src/test => tests}/ui/closures/add_semicolon_non_block_closure.stderr (100%) rename {src/test => tests}/ui/closures/binder/async-closure-with-binder.rs (100%) rename {src/test => tests}/ui/closures/binder/async-closure-with-binder.stderr (100%) rename {src/test => tests}/ui/closures/binder/disallow-const.rs (100%) rename {src/test => tests}/ui/closures/binder/disallow-const.stderr (100%) rename {src/test => tests}/ui/closures/binder/disallow-ty.rs (100%) rename {src/test => tests}/ui/closures/binder/disallow-ty.stderr (100%) rename {src/test => tests}/ui/closures/binder/implicit-return.rs (100%) rename {src/test => tests}/ui/closures/binder/implicit-return.stderr (100%) rename {src/test => tests}/ui/closures/binder/implicit-stuff.rs (100%) rename {src/test => tests}/ui/closures/binder/implicit-stuff.stderr (100%) rename {src/test => tests}/ui/closures/binder/late-bound-in-body.rs (100%) rename {src/test => tests}/ui/closures/binder/nested-closures-regions.rs (100%) rename {src/test => tests}/ui/closures/binder/nested-closures-regions.stderr (100%) rename {src/test => tests}/ui/closures/binder/nested-closures.rs (100%) rename {src/test => tests}/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.rs (100%) rename {src/test => tests}/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.stderr (100%) rename {src/test => tests}/ui/closures/closure-array-break-length.rs (100%) rename {src/test => tests}/ui/closures/closure-array-break-length.stderr (100%) rename {src/test => tests}/ui/closures/closure-bounds-cant-promote-superkind-in-struct.rs (100%) rename {src/test => tests}/ui/closures/closure-bounds-cant-promote-superkind-in-struct.stderr (100%) rename {src/test => tests}/ui/closures/closure-bounds-static-cant-capture-borrowed.rs (100%) rename {src/test => tests}/ui/closures/closure-bounds-static-cant-capture-borrowed.stderr (100%) rename {src/test => tests}/ui/closures/closure-bounds-subtype.rs (100%) rename {src/test => tests}/ui/closures/closure-bounds-subtype.stderr (100%) rename {src/test => tests}/ui/closures/closure-expected-type/expect-region-supply-region-2.polonius.stderr (100%) rename {src/test => tests}/ui/closures/closure-expected-type/expect-region-supply-region-2.rs (100%) rename {src/test => tests}/ui/closures/closure-expected-type/expect-region-supply-region-2.stderr (100%) rename {src/test => tests}/ui/closures/closure-expected-type/expect-region-supply-region.rs (100%) rename {src/test => tests}/ui/closures/closure-expected-type/expect-region-supply-region.stderr (100%) rename {src/test => tests}/ui/closures/closure-expected.rs (100%) rename {src/test => tests}/ui/closures/closure-expected.stderr (100%) rename {src/test => tests}/ui/closures/closure-immutable-outer-variable.fixed (100%) rename {src/test => tests}/ui/closures/closure-immutable-outer-variable.rs (100%) rename {src/test => tests}/ui/closures/closure-immutable-outer-variable.rs.fixed (100%) rename {src/test => tests}/ui/closures/closure-immutable-outer-variable.stderr (100%) rename {src/test => tests}/ui/closures/closure-move-sync.rs (100%) rename {src/test => tests}/ui/closures/closure-move-sync.stderr (100%) rename {src/test => tests}/ui/closures/closure-no-fn-1.rs (100%) rename {src/test => tests}/ui/closures/closure-no-fn-1.stderr (100%) rename {src/test => tests}/ui/closures/closure-no-fn-2.rs (100%) rename {src/test => tests}/ui/closures/closure-no-fn-2.stderr (100%) rename {src/test => tests}/ui/closures/closure-no-fn-3.rs (100%) rename {src/test => tests}/ui/closures/closure-no-fn-3.stderr (100%) rename {src/test => tests}/ui/closures/closure-no-fn-4.rs (100%) rename {src/test => tests}/ui/closures/closure-no-fn-4.stderr (100%) rename {src/test => tests}/ui/closures/closure-no-fn-5.rs (100%) rename {src/test => tests}/ui/closures/closure-no-fn-5.stderr (100%) rename {src/test => tests}/ui/closures/closure-referencing-itself-issue-25954.rs (100%) rename {src/test => tests}/ui/closures/closure-referencing-itself-issue-25954.stderr (100%) rename {src/test => tests}/ui/closures/closure-reform-bad.rs (100%) rename {src/test => tests}/ui/closures/closure-reform-bad.stderr (100%) rename {src/test => tests}/ui/closures/closure-return-type-mismatch.rs (100%) rename {src/test => tests}/ui/closures/closure-return-type-mismatch.stderr (100%) rename {src/test => tests}/ui/closures/closure-return-type-must-be-sized.rs (100%) rename {src/test => tests}/ui/closures/closure-return-type-must-be-sized.stderr (100%) rename {src/test => tests}/ui/closures/closure-wrong-kind.rs (100%) rename {src/test => tests}/ui/closures/closure-wrong-kind.stderr (100%) rename {src/test => tests}/ui/closures/closure_cap_coerce_many_fail.rs (100%) rename {src/test => tests}/ui/closures/closure_cap_coerce_many_fail.stderr (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_check_pass.rs (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_run_pass.rs (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_unsafe_0.mir.stderr (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_unsafe_0.rs (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_unsafe_0.thir.stderr (100%) rename {src/test => tests}/ui/closures/closure_no_cap_coerce_many_unsafe_1.rs (100%) rename {src/test => tests}/ui/closures/closure_promotion.rs (100%) rename {src/test => tests}/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr (100%) rename {src/test => tests}/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.rs (100%) rename {src/test => tests}/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr (100%) rename {src/test => tests}/ui/closures/coerce-unsafe-to-closure.rs (100%) rename {src/test => tests}/ui/closures/coerce-unsafe-to-closure.stderr (100%) rename {src/test => tests}/ui/closures/deeply-nested_closures.rs (100%) rename {src/test => tests}/ui/closures/diverging-closure.rs (100%) rename {src/test => tests}/ui/closures/issue-101696.rs (100%) rename {src/test => tests}/ui/closures/issue-102089-multiple-opaque-cast.rs (100%) rename {src/test => tests}/ui/closures/issue-10398.rs (100%) rename {src/test => tests}/ui/closures/issue-10398.stderr (100%) rename {src/test => tests}/ui/closures/issue-23012-supertrait-signature-inference.rs (100%) rename {src/test => tests}/ui/closures/issue-41366.rs (100%) rename {src/test => tests}/ui/closures/issue-42463.rs (100%) rename {src/test => tests}/ui/closures/issue-46742.rs (100%) rename {src/test => tests}/ui/closures/issue-48109.rs (100%) rename {src/test => tests}/ui/closures/issue-52437.rs (100%) rename {src/test => tests}/ui/closures/issue-52437.stderr (100%) rename {src/test => tests}/ui/closures/issue-67123.rs (100%) rename {src/test => tests}/ui/closures/issue-67123.stderr (100%) rename {src/test => tests}/ui/closures/issue-6801.rs (100%) rename {src/test => tests}/ui/closures/issue-6801.stderr (100%) rename {src/test => tests}/ui/closures/issue-68025.rs (100%) rename {src/test => tests}/ui/closures/issue-72408-nested-closures-exponential.rs (100%) rename {src/test => tests}/ui/closures/issue-78720.rs (100%) rename {src/test => tests}/ui/closures/issue-78720.stderr (100%) rename {src/test => tests}/ui/closures/issue-80313-mutable-borrow-in-closure.rs (100%) rename {src/test => tests}/ui/closures/issue-80313-mutable-borrow-in-closure.stderr (100%) rename {src/test => tests}/ui/closures/issue-80313-mutable-borrow-in-move-closure.rs (100%) rename {src/test => tests}/ui/closures/issue-80313-mutable-borrow-in-move-closure.stderr (100%) rename {src/test => tests}/ui/closures/issue-80313-mutation-in-closure.rs (100%) rename {src/test => tests}/ui/closures/issue-80313-mutation-in-closure.stderr (100%) rename {src/test => tests}/ui/closures/issue-80313-mutation-in-move-closure.rs (100%) rename {src/test => tests}/ui/closures/issue-80313-mutation-in-move-closure.stderr (100%) rename {src/test => tests}/ui/closures/issue-81700-mut-borrow.rs (100%) rename {src/test => tests}/ui/closures/issue-81700-mut-borrow.stderr (100%) rename {src/test => tests}/ui/closures/issue-82438-mut-without-upvar.rs (100%) rename {src/test => tests}/ui/closures/issue-82438-mut-without-upvar.stderr (100%) rename {src/test => tests}/ui/closures/issue-84044-drop-non-mut.rs (100%) rename {src/test => tests}/ui/closures/issue-84044-drop-non-mut.stderr (100%) rename {src/test => tests}/ui/closures/issue-84128.rs (100%) rename {src/test => tests}/ui/closures/issue-84128.stderr (100%) rename {src/test => tests}/ui/closures/issue-87461.rs (100%) rename {src/test => tests}/ui/closures/issue-87461.stderr (100%) rename {src/test => tests}/ui/closures/issue-87814-1.rs (100%) rename {src/test => tests}/ui/closures/issue-87814-2.rs (100%) rename {src/test => tests}/ui/closures/issue-90871.rs (100%) rename {src/test => tests}/ui/closures/issue-90871.stderr (100%) rename {src/test => tests}/ui/closures/issue-97607.rs (100%) rename {src/test => tests}/ui/closures/issue-99565.rs (100%) rename {src/test => tests}/ui/closures/issue-99565.stderr (100%) rename {src/test => tests}/ui/closures/local-type-mix.rs (100%) rename {src/test => tests}/ui/closures/local-type-mix.stderr (100%) rename {src/test => tests}/ui/closures/multiple-fn-bounds.rs (100%) rename {src/test => tests}/ui/closures/multiple-fn-bounds.stderr (100%) rename {src/test => tests}/ui/closures/old-closure-arg-call-as.rs (100%) rename {src/test => tests}/ui/closures/old-closure-arg.rs (100%) rename {src/test => tests}/ui/closures/old-closure-explicit-types.rs (100%) rename {src/test => tests}/ui/closures/old-closure-expr-precedence.rs (100%) rename {src/test => tests}/ui/closures/old-closure-expr-precedence.stderr (100%) rename {src/test => tests}/ui/closures/old-closure-expression-remove-semicolon.fixed (100%) rename {src/test => tests}/ui/closures/old-closure-expression-remove-semicolon.rs (100%) rename {src/test => tests}/ui/closures/old-closure-expression-remove-semicolon.stderr (100%) rename {src/test => tests}/ui/closures/old-closure-fn-coerce.rs (100%) rename {src/test => tests}/ui/closures/old-closure-iter-1.rs (100%) rename {src/test => tests}/ui/closures/old-closure-iter-2.rs (100%) rename {src/test => tests}/ui/closures/once-move-out-on-heap.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-1.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-1.stderr (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-2.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-2.stderr (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-trim-off-verbose-2.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-trim-off-verbose-2.stderr (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-verbose-1.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-verbose-1.stderr (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-verbose-2.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-generic-verbose-2.stderr (100%) rename {src/test => tests}/ui/closures/print/closure-print-verbose.rs (100%) rename {src/test => tests}/ui/closures/print/closure-print-verbose.stderr (100%) rename {src/test => tests}/ui/closures/semistatement-in-lambda.rs (100%) rename {src/test => tests}/ui/closures/supertrait-hint-cycle-2.rs (100%) rename {src/test => tests}/ui/closures/supertrait-hint-cycle-3.rs (100%) rename {src/test => tests}/ui/closures/supertrait-hint-cycle.rs (100%) rename {src/test => tests}/ui/closures/supertrait-hint-references-assoc-ty.rs (100%) rename {src/test => tests}/ui/closures/thir-unsafeck-issue-85871.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-registers.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-registers.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.stderr (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.rs (100%) rename {src/test => tests}/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.stderr (100%) rename {src/test => tests}/ui/codegen/auxiliary/issue-97708-aux.rs (100%) rename {src/test => tests}/ui/codegen/auxiliary/llvm_pr32379.rs (100%) rename {src/test => tests}/ui/codegen/init-large-type.rs (100%) rename {src/test => tests}/ui/codegen/issue-101585-128bit-repeat.rs (100%) rename {src/test => tests}/ui/codegen/issue-16602-1.rs (100%) rename {src/test => tests}/ui/codegen/issue-16602-2.rs (100%) rename {src/test => tests}/ui/codegen/issue-16602-3.rs (100%) rename {src/test => tests}/ui/codegen/issue-28950.rs (100%) rename {src/test => tests}/ui/codegen/issue-55976.rs (100%) rename {src/test => tests}/ui/codegen/issue-63787.rs (100%) rename {src/test => tests}/ui/codegen/issue-64401.rs (100%) rename {src/test => tests}/ui/codegen/issue-82859-slice-miscompile.rs (100%) rename {src/test => tests}/ui/codegen/issue-88043-bb-does-not-have-terminator.rs (100%) rename {src/test => tests}/ui/codegen/issue-97708.rs (100%) rename {src/test => tests}/ui/codegen/issue-99551.rs (100%) rename {src/test => tests}/ui/codegen/llvm-pr32379.rs (100%) rename {src/test => tests}/ui/codemap_tests/bad-format-args.rs (100%) rename {src/test => tests}/ui/codemap_tests/bad-format-args.stderr (100%) rename {src/test => tests}/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.rs (100%) rename {src/test => tests}/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.stderr (100%) rename {src/test => tests}/ui/codemap_tests/empty_span.rs (100%) rename {src/test => tests}/ui/codemap_tests/empty_span.stderr (100%) rename {src/test => tests}/ui/codemap_tests/huge_multispan_highlight.rs (100%) rename {src/test => tests}/ui/codemap_tests/huge_multispan_highlight.stderr (100%) rename {src/test => tests}/ui/codemap_tests/issue-11715.rs (100%) rename {src/test => tests}/ui/codemap_tests/issue-11715.stderr (100%) rename {src/test => tests}/ui/codemap_tests/issue-28308.rs (100%) rename {src/test => tests}/ui/codemap_tests/issue-28308.stderr (100%) rename {src/test => tests}/ui/codemap_tests/one_line.rs (100%) rename {src/test => tests}/ui/codemap_tests/one_line.stderr (100%) rename {src/test => tests}/ui/codemap_tests/overlapping_inherent_impls.rs (100%) rename {src/test => tests}/ui/codemap_tests/overlapping_inherent_impls.stderr (100%) rename {src/test => tests}/ui/codemap_tests/tab.rs (100%) rename {src/test => tests}/ui/codemap_tests/tab.stderr (100%) rename {src/test => tests}/ui/codemap_tests/tab_2.rs (100%) rename {src/test => tests}/ui/codemap_tests/tab_2.stderr (100%) rename {src/test => tests}/ui/codemap_tests/tab_3.rs (100%) rename {src/test => tests}/ui/codemap_tests/tab_3.stderr (100%) rename {src/test => tests}/ui/codemap_tests/two_files.rs (100%) rename {src/test => tests}/ui/codemap_tests/two_files.stderr (100%) rename {src/test => tests}/ui/codemap_tests/two_files_data.rs (100%) rename {src/test => tests}/ui/codemap_tests/unicode.expanded.stdout (100%) rename {src/test => tests}/ui/codemap_tests/unicode.normal.stderr (100%) rename {src/test => tests}/ui/codemap_tests/unicode.rs (100%) rename {src/test => tests}/ui/codemap_tests/unicode_2.rs (100%) rename {src/test => tests}/ui/codemap_tests/unicode_2.stderr (100%) rename {src/test => tests}/ui/codemap_tests/unicode_3.rs (100%) rename {src/test => tests}/ui/codemap_tests/unicode_3.stderr (100%) rename {src/test => tests}/ui/coercion/auxiliary/issue-39823.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-26978.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-26978.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-57749.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-57749.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-83783.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-83783.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-83850.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail-83850.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail.rs (100%) rename {src/test => tests}/ui/coercion/coerce-block-tail.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-expect-unsized-ascribed.rs (100%) rename {src/test => tests}/ui/coercion/coerce-expect-unsized-ascribed.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-expect-unsized.rs (100%) rename {src/test => tests}/ui/coercion/coerce-issue-49593-box-never-windows.nofallback.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-issue-49593-box-never-windows.rs (100%) rename {src/test => tests}/ui/coercion/coerce-issue-49593-box-never.nofallback.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-issue-49593-box-never.rs (100%) rename {src/test => tests}/ui/coercion/coerce-mut.rs (100%) rename {src/test => tests}/ui/coercion/coerce-mut.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-overloaded-autoderef-fail.rs (100%) rename {src/test => tests}/ui/coercion/coerce-overloaded-autoderef-fail.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-overloaded-autoderef.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-imm-ptr-arg.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-imm-vec-arg.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-multi-arg-fail.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-multi-arg-fail.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-multi-arg.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-mut-ptr-arg.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-mut-vec-arg.rs (100%) rename {src/test => tests}/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs (100%) rename {src/test => tests}/ui/coercion/coerce-to-bang-cast.rs (100%) rename {src/test => tests}/ui/coercion/coerce-to-bang-cast.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-to-bang.rs (100%) rename {src/test => tests}/ui/coercion/coerce-to-bang.stderr (100%) rename {src/test => tests}/ui/coercion/coerce-unify-return.rs (100%) rename {src/test => tests}/ui/coercion/coerce-unify.rs (100%) rename {src/test => tests}/ui/coercion/coerce-unsize-subtype.rs (100%) rename {src/test => tests}/ui/coercion/coercion-missing-tail-expected-type.fixed (100%) rename {src/test => tests}/ui/coercion/coercion-missing-tail-expected-type.rs (100%) rename {src/test => tests}/ui/coercion/coercion-missing-tail-expected-type.stderr (100%) rename {src/test => tests}/ui/coercion/coercion-slice.rs (100%) rename {src/test => tests}/ui/coercion/coercion-slice.stderr (100%) rename {src/test => tests}/ui/coercion/issue-101066.rs (100%) rename {src/test => tests}/ui/coercion/issue-14589.rs (100%) rename {src/test => tests}/ui/coercion/issue-36007.rs (100%) rename {src/test => tests}/ui/coercion/issue-37655.rs (100%) rename {src/test => tests}/ui/coercion/issue-39823.rs (100%) rename {src/test => tests}/ui/coercion/issue-53475.rs (100%) rename {src/test => tests}/ui/coercion/issue-53475.stderr (100%) rename {src/test => tests}/ui/coercion/issue-73886.rs (100%) rename {src/test => tests}/ui/coercion/issue-73886.stderr (100%) rename {src/test => tests}/ui/coercion/issue-88097.rs (100%) rename {src/test => tests}/ui/coercion/retslot-cast.rs (100%) rename {src/test => tests}/ui/coercion/retslot-cast.stderr (100%) rename {src/test => tests}/ui/coercion/unsafe-coercion.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/coherence_copy_like_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/coherence_fundamental_trait_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/coherence_inherent_cc_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/coherence_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/coherence_orphan_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/error_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/go_trait.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/option_future.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/re_rebalance_coherence_lib-rpass.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/re_rebalance_coherence_lib.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/trait-with-const-param.rs (100%) rename {src/test => tests}/ui/coherence/auxiliary/trait_impl_conflict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-all-remote.rs (100%) rename {src/test => tests}/ui/coherence/coherence-all-remote.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-bigint-int.rs (100%) rename {src/test => tests}/ui/coherence/coherence-bigint-param.rs (100%) rename {src/test => tests}/ui/coherence/coherence-bigint-param.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-bigint-vecint.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-trait.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific-trait.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific.rs (100%) rename {src/test => tests}/ui/coherence/coherence-blanket-conflicts-with-specific.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-blanket.rs (100%) rename {src/test => tests}/ui/coherence/coherence-conflicting-negative-trait-impl.rs (100%) rename {src/test => tests}/ui/coherence/coherence-conflicting-negative-trait-impl.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-covered-type-parameter.rs (100%) rename {src/test => tests}/ui/coherence/coherence-cow.re_a.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-cow.re_b.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-cow.re_c.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-cow.rs (100%) rename {src/test => tests}/ui/coherence/coherence-cross-crate-conflict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-cross-crate-conflict.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-default-trait-impl.rs (100%) rename {src/test => tests}/ui/coherence/coherence-default-trait-impl.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-error-suppression.rs (100%) rename {src/test => tests}/ui/coherence/coherence-error-suppression.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-fn-covariant-bound-vs-static.rs (100%) rename {src/test => tests}/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-fn-implied-bounds.rs (100%) rename {src/test => tests}/ui/coherence/coherence-fn-implied-bounds.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-fn-inputs.rs (100%) rename {src/test => tests}/ui/coherence/coherence-fn-inputs.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-free-vs-bound-region.rs (100%) rename {src/test => tests}/ui/coherence/coherence-free-vs-bound-region.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-fundamental-trait-objects.rs (100%) rename {src/test => tests}/ui/coherence/coherence-fundamental-trait-objects.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impl-in-fn.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-marker-trait-negative.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-marker-trait-positive.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-trait-object-safe.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-trait-object-safe.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-trait.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impl-trait-for-trait.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impls-copy.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impls-copy.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impls-send.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impls-send.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-impls-sized.rs (100%) rename {src/test => tests}/ui/coherence/coherence-impls-sized.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-inherited-assoc-ty-cycle-err.rs (100%) rename {src/test => tests}/ui/coherence/coherence-inherited-assoc-ty-cycle-err.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-inherited-subtyping.old.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-inherited-subtyping.re.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-inherited-subtyping.rs (100%) rename {src/test => tests}/ui/coherence/coherence-iterator-vec-any-elem.rs (100%) rename {src/test => tests}/ui/coherence/coherence-iterator-vec.rs (100%) rename {src/test => tests}/ui/coherence/coherence-lone-type-parameter.rs (100%) rename {src/test => tests}/ui/coherence/coherence-lone-type-parameter.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-multidispatch-tuple.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-copy-bad.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-copy-bad.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-copy.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-safe-rpass.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-safe.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-impls-safe.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-negative-inherent-where-bounds.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-inherent.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-outlives-lifetimes.rs (100%) rename {src/test => tests}/ui/coherence/coherence-negative-outlives-lifetimes.stock.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-no-direct-lifetime-dispatch.rs (100%) rename {src/test => tests}/ui/coherence/coherence-no-direct-lifetime-dispatch.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-orphan.rs (100%) rename {src/test => tests}/ui/coherence/coherence-orphan.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-all-t-and-tuple.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-all-t-and-tuple.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-double-negative.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-downstream-inherent.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-downstream-inherent.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-downstream.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-downstream.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-issue-23516-inherent.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-issue-23516-inherent.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-issue-23516.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-issue-23516.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-messages.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-messages.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negate-alias-strict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negate-not-use-feature-gate.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negate-not-use-feature-gate.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negate-strict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negate-use-feature-gate.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negative-trait.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-negative-trait2.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-super-negative.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-trait-alias.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-trait-alias.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-upstream-inherent.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-upstream-inherent.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-upstream.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-upstream.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-overlap-with-regions.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlapping-pairs.rs (100%) rename {src/test => tests}/ui/coherence/coherence-overlapping-pairs.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-pair-covered-uncovered-1.rs (100%) rename {src/test => tests}/ui/coherence/coherence-pair-covered-uncovered-1.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-pair-covered-uncovered.rs (100%) rename {src/test => tests}/ui/coherence/coherence-pair-covered-uncovered.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict-orphan.rs (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict-orphan.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict-ty-param.rs (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict-ty-param.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-projection-conflict.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-projection-ok-orphan.rs (100%) rename {src/test => tests}/ui/coherence/coherence-projection-ok.rs (100%) rename {src/test => tests}/ui/coherence/coherence-rfc447-constrained.rs (100%) rename {src/test => tests}/ui/coherence/coherence-subtyping.rs (100%) rename {src/test => tests}/ui/coherence/coherence-subtyping.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-tuple-conflict.rs (100%) rename {src/test => tests}/ui/coherence/coherence-tuple-conflict.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-unsafe-trait-object-impl.rs (100%) rename {src/test => tests}/ui/coherence/coherence-unsafe-trait-object-impl.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-vec-local-2.rs (100%) rename {src/test => tests}/ui/coherence/coherence-vec-local-2.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-vec-local.rs (100%) rename {src/test => tests}/ui/coherence/coherence-vec-local.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-wasm-bindgen.rs (100%) rename {src/test => tests}/ui/coherence/coherence-wasm-bindgen.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-where-clause.rs (100%) rename {src/test => tests}/ui/coherence/coherence-with-closure.rs (100%) rename {src/test => tests}/ui/coherence/coherence-with-closure.stderr (100%) rename {src/test => tests}/ui/coherence/coherence-with-generator.rs (100%) rename {src/test => tests}/ui/coherence/coherence-with-generator.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_fundamental_struct.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_fundamental_struct_ref.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_struct.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_struct.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_tuple.rs (100%) rename {src/test => tests}/ui/coherence/coherence_copy_like_err_tuple.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_inherent.rs (100%) rename {src/test => tests}/ui/coherence/coherence_inherent.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_inherent_cc.rs (100%) rename {src/test => tests}/ui/coherence/coherence_inherent_cc.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_local.rs (100%) rename {src/test => tests}/ui/coherence/coherence_local_err_struct.rs (100%) rename {src/test => tests}/ui/coherence/coherence_local_err_struct.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_local_err_tuple.rs (100%) rename {src/test => tests}/ui/coherence/coherence_local_err_tuple.stderr (100%) rename {src/test => tests}/ui/coherence/coherence_local_ref.rs (100%) rename {src/test => tests}/ui/coherence/conflicting-impl-with-err.rs (100%) rename {src/test => tests}/ui/coherence/conflicting-impl-with-err.stderr (100%) rename {src/test => tests}/ui/coherence/const-generics-orphan-check-ok.rs (100%) rename {src/test => tests}/ui/coherence/deep-bad-copy-reason.rs (100%) rename {src/test => tests}/ui/coherence/deep-bad-copy-reason.stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-foreign[foreign].rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-foreign[foreign].stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-foreign[local].rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-fundamental[foreign].rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-fundamental[foreign].stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-fundamental[local].rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-local.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-locally-defined-fundamental.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign-for-locally-defined-fundamental[foreign].rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign[foreign]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign[foreign]-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign[foreign]-for-local.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl-foreign[fundemental[local]]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign-for-foreign[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign-for-foreign[t].stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign-for-fundamental[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign-for-fundamental[t].stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[foreign[t]_local]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[foreign]-for-t.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[foreign]-for-t.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-local.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[fundemental[local]]-for-foreign[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-foreign[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-fundamental[foreign[t]].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-local.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-t.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local]-for-t.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[local_fundamental[t]]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-foreign.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-foreign.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-fundamental.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-fundamental.stderr (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-local.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-t.rs (100%) rename {src/test => tests}/ui/coherence/impl[t]-foreign[t]-for-t.stderr (100%) rename {src/test => tests}/ui/coherence/inter-crate-ambiguity-causes-notes.rs (100%) rename {src/test => tests}/ui/coherence/inter-crate-ambiguity-causes-notes.stderr (100%) rename {src/test => tests}/ui/coherence/issue-85026.rs (100%) rename {src/test => tests}/ui/coherence/issue-85026.stderr (100%) rename {src/test => tests}/ui/coherence/issue-99663-2.rs (100%) rename {src/test => tests}/ui/coherence/issue-99663.rs (100%) rename {src/test => tests}/ui/coherence/re-rebalance-coherence-default-generic-associated-type.rs (100%) rename {src/test => tests}/ui/coherence/re-rebalance-coherence.rs (100%) rename {src/test => tests}/ui/coherence/strict-coherence-needs-negative-coherence.rs (100%) rename {src/test => tests}/ui/coherence/strict-coherence-needs-negative-coherence.stderr (100%) rename {src/test => tests}/ui/command-line-diagnostics.rs (100%) rename {src/test => tests}/ui/command-line-diagnostics.stderr (100%) rename {src/test => tests}/ui/command/command-argv0.rs (100%) rename {src/test => tests}/ui/command/command-create-pidfd.rs (100%) rename {src/test => tests}/ui/command/command-current-dir.rs (100%) rename {src/test => tests}/ui/command/command-exec.rs (100%) rename {src/test => tests}/ui/command/command-pre-exec.rs (100%) rename {src/test => tests}/ui/command/command-setgroups.rs (100%) rename {src/test => tests}/ui/command/command-uid-gid.rs (100%) rename {src/test => tests}/ui/command/issue-10626.rs (100%) rename {src/test => tests}/ui/commandline-argfile-badutf8.args (100%) rename {src/test => tests}/ui/commandline-argfile-badutf8.rs (100%) rename {src/test => tests}/ui/commandline-argfile-badutf8.stderr (100%) rename {src/test => tests}/ui/commandline-argfile-missing.rs (100%) rename {src/test => tests}/ui/commandline-argfile-missing.stderr (100%) rename {src/test => tests}/ui/commandline-argfile.args (100%) rename {src/test => tests}/ui/commandline-argfile.rs (100%) rename {src/test => tests}/ui/compare-method/bad-self-type.rs (100%) rename {src/test => tests}/ui/compare-method/bad-self-type.stderr (100%) rename {src/test => tests}/ui/compare-method/issue-90444.rs (100%) rename {src/test => tests}/ui/compare-method/issue-90444.stderr (100%) rename {src/test => tests}/ui/compare-method/proj-outlives-region.rs (100%) rename {src/test => tests}/ui/compare-method/proj-outlives-region.stderr (100%) rename {src/test => tests}/ui/compare-method/region-extra-2.rs (100%) rename {src/test => tests}/ui/compare-method/region-extra-2.stderr (100%) rename {src/test => tests}/ui/compare-method/region-extra.rs (100%) rename {src/test => tests}/ui/compare-method/region-extra.stderr (100%) rename {src/test => tests}/ui/compare-method/region-unrelated.rs (100%) rename {src/test => tests}/ui/compare-method/region-unrelated.stderr (100%) rename {src/test => tests}/ui/compare-method/reordered-type-param.rs (100%) rename {src/test => tests}/ui/compare-method/reordered-type-param.stderr (100%) rename {src/test => tests}/ui/compare-method/trait-bound-on-type-parameter.rs (100%) rename {src/test => tests}/ui/compare-method/trait-bound-on-type-parameter.stderr (100%) rename {src/test => tests}/ui/compare-method/traits-misc-mismatch-1.rs (100%) rename {src/test => tests}/ui/compare-method/traits-misc-mismatch-1.stderr (100%) rename {src/test => tests}/ui/compare-method/traits-misc-mismatch-2.rs (100%) rename {src/test => tests}/ui/compare-method/traits-misc-mismatch-2.stderr (100%) rename {src/test => tests}/ui/compile_error_macro.rs (100%) rename {src/test => tests}/ui/compile_error_macro.stderr (100%) rename {src/test => tests}/ui/compiletest-self-test/compile-flags-last.rs (100%) rename {src/test => tests}/ui/compiletest-self-test/compile-flags-last.stderr (100%) rename {src/test => tests}/ui/compiletest-self-test/ui-testing-optout.rs (100%) rename {src/test => tests}/ui/compiletest-self-test/ui-testing-optout.stderr (100%) rename {src/test => tests}/ui/complex.rs (100%) rename {src/test => tests}/ui/conditional-compilation/auxiliary/namespaced_enums.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-1.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-1.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-2.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-2.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-3.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-3.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-4.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-4.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-5.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-5.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-6.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-6.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-7.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-7.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-8.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-8.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-9.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-arg-invalid-9.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-cfg-2.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-cfg-2.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-crate-2.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-crate-2.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-empty-is-unused.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-empty-is-unused.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-invalid-predicate.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-invalid-predicate.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-false.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-invalid-1.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-invalid-2.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-true.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-multi-true.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-parse.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-parse.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-syntax-validation.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-syntax-validation.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-empty-codemap.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-empty-codemap.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-generic-params.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-generic-params.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-in-crate-1.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-in-crate-1.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-non-opt-expr.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg-non-opt-expr.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-bugs.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-bugs.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-input-validation.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-input-validation.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-not_sure.edition2015.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-not_sure.edition2021.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-not_sure.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-private.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-stuck.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-stuck.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-unstable.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible-unstable.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible.rs (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_accessible.stderr (100%) rename {src/test => tests}/ui/conditional-compilation/cfg_attr_path.rs (100%) rename {src/test => tests}/ui/conditional-compilation/inner-cfg-non-inline-mod.rs (100%) rename {src/test => tests}/ui/conditional-compilation/issue-34028.rs (100%) rename {src/test => tests}/ui/conditional-compilation/module_with_cfg.rs (100%) rename {src/test => tests}/ui/conditional-compilation/test-cfg.rs (100%) rename {src/test => tests}/ui/conditional-compilation/test-cfg.stderr (100%) rename {src/test => tests}/ui/conflicting-repr-hints.rs (100%) rename {src/test => tests}/ui/conflicting-repr-hints.stderr (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-18343.rs (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-18343.stderr (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-2392.rs (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-2392.stderr (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-32128.rs (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-32128.stderr (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-33784.rs (100%) rename {src/test => tests}/ui/confuse-field-and-method/issue-33784.stderr (100%) rename {src/test => tests}/ui/confuse-field-and-method/private-field.rs (100%) rename {src/test => tests}/ui/confuse-field-and-method/private-field.stderr (100%) rename {src/test => tests}/ui/conservative_impl_trait.rs (100%) rename {src/test => tests}/ui/conservative_impl_trait.stderr (100%) rename {src/test => tests}/ui/const-generics/apit-with-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/arg-in-pat-1.rs (100%) rename {src/test => tests}/ui/const-generics/arg-in-pat-2.rs (100%) rename {src/test => tests}/ui/const-generics/arg-in-pat-3.rs (100%) rename {src/test => tests}/ui/const-generics/argument_order.rs (100%) rename {src/test => tests}/ui/const-generics/argument_order.stderr (100%) rename {src/test => tests}/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/alloc-types-impls-length-33.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/core-traits-impls-length-32.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/core-traits-impls-length-33.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/into-iter-impls-length-32.rs (100%) rename {src/test => tests}/ui/const-generics/array-impls/into-iter-impls-length-33.rs (100%) rename {src/test => tests}/ui/const-generics/array-wrapper-struct-ctor.rs (100%) rename {src/test => tests}/ui/const-generics/assoc_const_eq_diagnostic.rs (100%) rename {src/test => tests}/ui/const-generics/assoc_const_eq_diagnostic.stderr (100%) rename {src/test => tests}/ui/const-generics/associated-type-bound-fail.rs (100%) rename {src/test => tests}/ui/const-generics/associated-type-bound-fail.stderr (100%) rename {src/test => tests}/ui/const-generics/associated-type-bound.rs (100%) rename {src/test => tests}/ui/const-generics/auxiliary/const_generic_lib.rs (100%) rename {src/test => tests}/ui/const-generics/auxiliary/crayte.rs (100%) rename {src/test => tests}/ui/const-generics/auxiliary/generics_of_parent.rs (100%) rename {src/test => tests}/ui/const-generics/auxiliary/generics_of_parent_impl_trait.rs (100%) rename {src/test => tests}/ui/const-generics/auxiliary/legacy-const-generics.rs (100%) rename {src/test => tests}/ui/const-generics/backcompat/trait-resolution-breakage.rs (100%) rename {src/test => tests}/ui/const-generics/backcompat/unevaluated-consts.rs (100%) rename {src/test => tests}/ui/const-generics/bad-const-generic-exprs.rs (100%) rename {src/test => tests}/ui/const-generics/bad-const-generic-exprs.stderr (100%) rename {src/test => tests}/ui/const-generics/broken-mir-1.rs (100%) rename {src/test => tests}/ui/const-generics/broken-mir-2.rs (100%) rename {src/test => tests}/ui/const-generics/cannot-infer-type-for-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/coerce_unsized_array.rs (100%) rename {src/test => tests}/ui/const-generics/concrete-const-as-fn-arg.rs (100%) rename {src/test => tests}/ui/const-generics/concrete-const-impl-method.rs (100%) rename {src/test => tests}/ui/const-generics/condition-in-trait-const-arg.rs (100%) rename {src/test => tests}/ui/const-generics/const-arg-in-const-arg.full.stderr (100%) rename {src/test => tests}/ui/const-generics/const-arg-in-const-arg.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-arg-in-const-arg.rs (100%) rename {src/test => tests}/ui/const-generics/const-arg-in-fn.rs (100%) rename {src/test => tests}/ui/const-generics/const-arg-type-arg-misordered.rs (100%) rename {src/test => tests}/ui/const-generics/const-arg-type-arg-misordered.stderr (100%) rename {src/test => tests}/ui/const-generics/const-argument-cross-crate-mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/const-argument-cross-crate-mismatch.stderr (100%) rename {src/test => tests}/ui/const-generics/const-argument-cross-crate.rs (100%) rename {src/test => tests}/ui/const-generics/const-argument-if-length.full.stderr (100%) rename {src/test => tests}/ui/const-generics/const-argument-if-length.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-argument-if-length.rs (100%) rename {src/test => tests}/ui/const-generics/const-argument-non-static-lifetime.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-argument-non-static-lifetime.rs (100%) rename {src/test => tests}/ui/const-generics/const-fn-with-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/const-generic-default-wont-borrowck.rs (100%) rename {src/test => tests}/ui/const-generics/const-generic-default-wont-borrowck.stderr (100%) rename {src/test => tests}/ui/const-generics/const-generic-function.rs (100%) rename {src/test => tests}/ui/const-generics/const-generic-function.stderr (100%) rename {src/test => tests}/ui/const-generics/const-generic-type_name.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-after-const-literal-arg.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-before-other-params.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-before-other-params.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-elided-lifetime.full.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-elided-lifetime.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-elided-lifetime.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-in-async.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-const-param.full.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-const-param.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-type-param-ungated.rs (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-type-param-ungated.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-type-param.full.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-type-param.min.stderr (100%) rename {src/test => tests}/ui/const-generics/const-param-type-depends-on-type-param.rs (100%) rename {src/test => tests}/ui/const-generics/const-parameter-uppercase-lint.rs (100%) rename {src/test => tests}/ui/const-generics/const-parameter-uppercase-lint.stderr (100%) rename {src/test => tests}/ui/const-generics/const_trait_fn-issue-88433.rs (100%) rename {src/test => tests}/ui/const-generics/core-types.rs (100%) rename {src/test => tests}/ui/const-generics/cross_crate_complex.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/auxiliary/const_defaulty.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/auxiliary/trait_object_lt_defaults_lib.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/complex-generic-default-expr.min.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/complex-generic-default-expr.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/complex-unord-param.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/const-default.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/const-param-as-default-value.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/const-param-in-ty-defaults.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/default-annotation.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/default-const-param-cannot-reference-self.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/default-const-param-cannot-reference-self.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/default-on-impl.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/default-on-impl.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/default-param-wf-concrete.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/default-param-wf-concrete.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/doesnt_infer.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/doesnt_infer.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/external.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/forward-declared.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/forward-declared.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default-concrete.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default-concrete.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default-mismatched-types.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default-mismatched-types.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/generic-expr-default.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/intermixed-lifetime.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/intermixed-lifetime.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/mismatch.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/pretty-printing-ast.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/pretty-printing-ast.stdout (100%) rename {src/test => tests}/ui/const-generics/defaults/repr-c-issue-82792.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/rp_impl_trait.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/rp_impl_trait_fail.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/rp_impl_trait_fail.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/self-referential.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/self-referential.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/simple-defaults.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/trait_object_lt_defaults.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/trait_objects.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/trait_objects_fail.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/trait_objects_fail.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/type-default-const-param-name.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/wfness.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/wfness.stderr (100%) rename {src/test => tests}/ui/const-generics/defaults/wrong-order.rs (100%) rename {src/test => tests}/ui/const-generics/defaults/wrong-order.stderr (100%) rename {src/test => tests}/ui/const-generics/deref-into-array-generic.rs (100%) rename {src/test => tests}/ui/const-generics/different_generic_args.full.stderr (100%) rename {src/test => tests}/ui/const-generics/different_generic_args.min.stderr (100%) rename {src/test => tests}/ui/const-generics/different_generic_args.rs (100%) rename {src/test => tests}/ui/const-generics/different_generic_args_array.rs (100%) rename {src/test => tests}/ui/const-generics/different_generic_args_array.stderr (100%) rename {src/test => tests}/ui/const-generics/dont-evaluate-array-len-on-err-1.rs (100%) rename {src/test => tests}/ui/const-generics/dont-evaluate-array-len-on-err-1.stderr (100%) rename {src/test => tests}/ui/const-generics/dyn-supertraits.rs (100%) rename {src/test => tests}/ui/const-generics/early/closing-args-token.rs (100%) rename {src/test => tests}/ui/const-generics/early/closing-args-token.stderr (100%) rename {src/test => tests}/ui/const-generics/early/const-expression-parameter.rs (100%) rename {src/test => tests}/ui/const-generics/early/const-expression-parameter.stderr (100%) rename {src/test => tests}/ui/const-generics/early/const-param-from-outer-fn.rs (100%) rename {src/test => tests}/ui/const-generics/early/const-param-from-outer-fn.stderr (100%) rename {src/test => tests}/ui/const-generics/early/const-param-hygiene.rs (100%) rename {src/test => tests}/ui/const-generics/early/const-param-shadowing.rs (100%) rename {src/test => tests}/ui/const-generics/early/const-param-shadowing.stderr (100%) rename {src/test => tests}/ui/const-generics/early/invalid-const-arguments.rs (100%) rename {src/test => tests}/ui/const-generics/early/invalid-const-arguments.stderr (100%) rename {src/test => tests}/ui/const-generics/early/macro_rules-braces.rs (100%) rename {src/test => tests}/ui/const-generics/early/macro_rules-braces.stderr (100%) rename {src/test => tests}/ui/const-generics/ensure_is_evaluatable.rs (100%) rename {src/test => tests}/ui/const-generics/ensure_is_evaluatable.stderr (100%) rename {src/test => tests}/ui/const-generics/enum-variants.rs (100%) rename {src/test => tests}/ui/const-generics/exhaustive-value.rs (100%) rename {src/test => tests}/ui/const-generics/exhaustive-value.stderr (100%) rename {src/test => tests}/ui/const-generics/expose-default-substs-param-env.rs (100%) rename {src/test => tests}/ui/const-generics/float-generic.adt_const_params.stderr (100%) rename {src/test => tests}/ui/const-generics/float-generic.rs (100%) rename {src/test => tests}/ui/const-generics/float-generic.simple.stderr (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-call.full.stderr (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-call.min.stderr (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-call.rs (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-infer.full.stderr (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-infer.min.stderr (100%) rename {src/test => tests}/ui/const-generics/fn-const-param-infer.rs (100%) rename {src/test => tests}/ui/const-generics/fn_with_two_const_inputs.rs (100%) rename {src/test => tests}/ui/const-generics/fn_with_two_const_inputs.stderr (100%) rename {src/test => tests}/ui/const-generics/fn_with_two_same_const_inputs.rs (100%) rename {src/test => tests}/ui/const-generics/forbid-non-structural_match-types.rs (100%) rename {src/test => tests}/ui/const-generics/forbid-non-structural_match-types.stderr (100%) rename {src/test => tests}/ui/const-generics/foreign-item-const-parameter.rs (100%) rename {src/test => tests}/ui/const-generics/foreign-item-const-parameter.stderr (100%) rename {src/test => tests}/ui/const-generics/generic-param-mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/generic-param-mismatch.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/array-repeat-expr.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/dont-use-defaults.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/in-signature.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/in-signature.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/infer-arg-test.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/infer-arg-test.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/infer_arg_and_const_arg.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/issue-91614.rs (100%) rename {src/test => tests}/ui/const-generics/generic_arg_infer/issue-91614.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-1.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.full.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.min.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/assoc_const_unification/const_equate_assoc_consts.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/assoc_const_unification/dropck_unifies_assoc_consts.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/assoc_const_unification/unifies_evaluatable.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/associated-const.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/associated-consts.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/auxiliary/const_evaluatable_lib.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/closures.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/closures.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/cross_crate.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/cross_crate_predicate.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/cross_crate_predicate.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/dependence_lint.full.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/dependence_lint.gce.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/dependence_lint.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/different-fn.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/different-fn.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/division.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/dont-eagerly-error-in-is-const-evaluatable.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/drop_impl.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/elaborate-trait-pred.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/eval-privacy.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/eval-privacy.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/eval-try-unify.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/eval-try-unify.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/evaluated-to-ambig.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/fn_call.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/from-sig-fail.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/from-sig-fail.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/from-sig.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/function-call.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/function-call.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/impl-bounds.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/infer-too-generic.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-100217.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-100360.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-102074.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-102768.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-102768.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-105257.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-105257.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-105608.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-105608.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-62504.full.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-62504.min.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-62504.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-69654.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-69654.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-72787.min.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-72787.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.full.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.min.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-73298.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-73899.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-74634.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-74713.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-74713.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-76595.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-76595.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-80742.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-80742.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-82268.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-83765.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-83765.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-83972.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-84408.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-84669.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-85848.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-85848.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-86710.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-89851.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-90847.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-94287.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-94287.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-94293.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-97047-ice-1.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-97047-ice-2.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-99647.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/issue-99705.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/less_than.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/let-bindings.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/let-bindings.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/needs_where_clause.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/needs_where_clause.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/nested-abstract-consts-1.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/nested-abstract-consts-2.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/nested_uneval_unification-1.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/nested_uneval_unification-2.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/no_dependence.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/no_where_clause.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/no_where_clause.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/normed_to_param_is_evaluatable.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-err-ret.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-err-ret.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/object-safety-ok.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/obligation-cause.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/obligation-cause.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/simple_fail.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/simple_fail.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/subexprs_are_const_evalutable.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/ty-alias-substitution.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unop.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unused-complex-default-expr.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unused_expr.rs (100%) rename {src/test => tests}/ui/const-generics/generic_const_exprs/unused_expr.stderr (100%) rename {src/test => tests}/ui/const-generics/ice-68875.rs (100%) rename {src/test => tests}/ui/const-generics/ice-68875.stderr (100%) rename {src/test => tests}/ui/const-generics/ice-const-generic-function-return-ty.rs (100%) rename {src/test => tests}/ui/const-generics/ice-const-generic-function-return-ty.stderr (100%) rename {src/test => tests}/ui/const-generics/impl-const-generic-struct.rs (100%) rename {src/test => tests}/ui/const-generics/incorrect-number-of-const-args.rs (100%) rename {src/test => tests}/ui/const-generics/incorrect-number-of-const-args.stderr (100%) rename {src/test => tests}/ui/const-generics/infer/cannot-infer-const-args.rs (100%) rename {src/test => tests}/ui/const-generics/infer/cannot-infer-const-args.stderr (100%) rename {src/test => tests}/ui/const-generics/infer/issue-77092.rs (100%) rename {src/test => tests}/ui/const-generics/infer/issue-77092.stderr (100%) rename {src/test => tests}/ui/const-generics/infer/method-chain.rs (100%) rename {src/test => tests}/ui/const-generics/infer/method-chain.stderr (100%) rename {src/test => tests}/ui/const-generics/infer/one-param-uninferred.rs (100%) rename {src/test => tests}/ui/const-generics/infer/one-param-uninferred.stderr (100%) rename {src/test => tests}/ui/const-generics/infer/uninferred-consts.rs (100%) rename {src/test => tests}/ui/const-generics/infer/uninferred-consts.stderr (100%) rename {src/test => tests}/ui/const-generics/infer_arg_from_pat.rs (100%) rename {src/test => tests}/ui/const-generics/infer_arr_len_from_pat.rs (100%) rename {src/test => tests}/ui/const-generics/inhabited-assoc-ty-ice-1.rs (100%) rename {src/test => tests}/ui/const-generics/inhabited-assoc-ty-ice-2.rs (100%) rename {src/test => tests}/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs (100%) rename {src/test => tests}/ui/const-generics/intrinsics-type_name-as-const-argument.min.stderr (100%) rename {src/test => tests}/ui/const-generics/intrinsics-type_name-as-const-argument.rs (100%) rename {src/test => tests}/ui/const-generics/invalid-const-arg-for-type-param.rs (100%) rename {src/test => tests}/ui/const-generics/invalid-const-arg-for-type-param.stderr (100%) rename {src/test => tests}/ui/const-generics/invalid-constant-in-args.rs (100%) rename {src/test => tests}/ui/const-generics/invalid-constant-in-args.stderr (100%) rename {src/test => tests}/ui/const-generics/invalid-enum.rs (100%) rename {src/test => tests}/ui/const-generics/invalid-enum.stderr (100%) rename {src/test => tests}/ui/const-generics/invariant.rs (100%) rename {src/test => tests}/ui/const-generics/invariant.stderr (100%) rename {src/test => tests}/ui/const-generics/issue-102124.rs (100%) rename {src/test => tests}/ui/const-generics/issue-105689.rs (100%) rename {src/test => tests}/ui/const-generics/issue-46511.rs (100%) rename {src/test => tests}/ui/const-generics/issue-46511.stderr (100%) rename {src/test => tests}/ui/const-generics/issue-66451.rs (100%) rename {src/test => tests}/ui/const-generics/issue-66451.stderr (100%) rename {src/test => tests}/ui/const-generics/issue-70408.rs (100%) rename {src/test => tests}/ui/const-generics/issue-80471.rs (100%) rename {src/test => tests}/ui/const-generics/issue-80471.stderr (100%) rename {src/test => tests}/ui/const-generics/issue-93647.rs (100%) rename {src/test => tests}/ui/const-generics/issue-93647.stderr (100%) rename {src/test => tests}/ui/const-generics/issue-97007.rs (100%) rename {src/test => tests}/ui/const-generics/issues/auxiliary/const_generic_issues_lib.rs (100%) rename {src/test => tests}/ui/const-generics/issues/auxiliary/impl-const.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-100313.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-100313.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-105037.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-1.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-1.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-1.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-2.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-3.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-56445-3.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-60818-struct-constructors.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61336-1.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61336-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61336-2.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61336.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61336.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61422.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-61432.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-62878.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-62878.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-62878.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-63322-forbid-dyn.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-63322-forbid-dyn.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-63322-forbid-dyn.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-64519.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-66906.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67185-1.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67185-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67185-2.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67375.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67375.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67375.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67739.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67739.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67739.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-1.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-1.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-1.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-2.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-2.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-3.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-3.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-3.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-4.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-4.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-67945-4.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68104-print-stack-overflow.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68366.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68366.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68366.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68596.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68615-adt.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68615-adt.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68615-array.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-68615-array.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-69654-run-pass.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70125-1.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70125-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70167.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70180-1-stalled_on.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70180-2-stalled_on.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70225.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-70273-assoc-fn.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71169.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71169.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71169.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71202.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71202.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71381.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71381.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71381.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71382.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71382.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71382.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71547.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71611.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71611.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71611.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-71986.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-72352.full.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-72352.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-72352.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-72845.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-72845.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73120.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73260.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73260.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73491.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73491.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73727-static-reference-array-const-param.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74101.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74101.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74255.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74255.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74906.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74950.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-74950.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-75047.min.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-75047.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-75299.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-76701-ty-param-in-const.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-76701-ty-param-in-const.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-77357.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-77357.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-79674.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-79674.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-80062.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-80062.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-80375.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-80375.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-82956.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-82956.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83249.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83249.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83288.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83466.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83466.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83765.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83765.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-83993.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-84659.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-84659.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-85031-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-85031-2.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86033.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86530.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86530.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86535-2.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86535.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86820.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-86820.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-87076.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-87470.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-87493.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-87493.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-87964.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-88119.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-88468.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-88997.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-88997.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-89146.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-89304.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-89320.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-89334.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90318.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90318.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90364.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90364.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90455.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-90455.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-92186.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-96654.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-97278.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-97278.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-97634.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-98629.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-98629.stderr (100%) rename {src/test => tests}/ui/const-generics/issues/issue-99641.rs (100%) rename {src/test => tests}/ui/const-generics/issues/issue-99641.stderr (100%) rename {src/test => tests}/ui/const-generics/late-bound-vars/in_closure.rs (100%) rename {src/test => tests}/ui/const-generics/late-bound-vars/simple.rs (100%) rename {src/test => tests}/ui/const-generics/legacy-const-generics-bad.rs (100%) rename {src/test => tests}/ui/const-generics/legacy-const-generics-bad.stderr (100%) rename {src/test => tests}/ui/const-generics/legacy-const-generics.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/assoc_const.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/complex-expression.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/complex-expression.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/complex-types.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/complex-types.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-evaluatable-unchecked.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-evaluatable-unchecked.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const_default_first.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const_default_first.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/const_fn_in_generics.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/default_function_param.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/default_function_param.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/default_trait_param.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/forbid-self-no-normalize.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/forbid-self-no-normalize.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/inferred_const.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/invalid-patterns.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/macro-fail.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/macro-fail.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/macro.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/self-ty-in-const-1.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/self-ty-in-const-1.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/self-ty-in-const-2.rs (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/self-ty-in-const-2.stderr (100%) rename {src/test => tests}/ui/const-generics/min_const_generics/type_and_const_defaults.rs (100%) rename {src/test => tests}/ui/const-generics/nested-type.full.stderr (100%) rename {src/test => tests}/ui/const-generics/nested-type.min.stderr (100%) rename {src/test => tests}/ui/const-generics/nested-type.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/bind-param.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unify-fixpoint.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unify-fixpoint.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unify-n-nplusone.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unify-n-nplusone.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-1.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-1.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-2.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-2.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-3.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-3.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-4.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-4.stderr (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-5.rs (100%) rename {src/test => tests}/ui/const-generics/occurs-check/unused-substs-5.stderr (100%) rename {src/test => tests}/ui/const-generics/outer-lifetime-in-const-generic-default.rs (100%) rename {src/test => tests}/ui/const-generics/outer-lifetime-in-const-generic-default.stderr (100%) rename {src/test => tests}/ui/const-generics/overlapping_impls.rs (100%) rename {src/test => tests}/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.full.stderr (100%) rename {src/test => tests}/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.min.stderr (100%) rename {src/test => tests}/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.rs (100%) rename {src/test => tests}/ui/const-generics/parent_generics_of_encoding.rs (100%) rename {src/test => tests}/ui/const-generics/parent_generics_of_encoding_impl_trait.rs (100%) rename {src/test => tests}/ui/const-generics/parent_generics_of_encoding_impl_trait.stderr (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-type.rs (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013-type.stderr (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013.rs (100%) rename {src/test => tests}/ui/const-generics/parser-error-recovery/issue-89013.stderr (100%) rename {src/test => tests}/ui/const-generics/projection-as-arg-const.rs (100%) rename {src/test => tests}/ui/const-generics/projection-as-arg-const.stderr (100%) rename {src/test => tests}/ui/const-generics/promotion.rs (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param-deref.full.stderr (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param-deref.min.stderr (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param-deref.rs (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param.full.stderr (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param.min.stderr (100%) rename {src/test => tests}/ui/const-generics/raw-ptr-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/slice-const-param-mismatch.full.stderr (100%) rename {src/test => tests}/ui/const-generics/slice-const-param-mismatch.min.stderr (100%) rename {src/test => tests}/ui/const-generics/slice-const-param-mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/slice-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/sneaky-array-repeat-expr.rs (100%) rename {src/test => tests}/ui/const-generics/sneaky-array-repeat-expr.stderr (100%) rename {src/test => tests}/ui/const-generics/std/const-generics-range.min.stderr (100%) rename {src/test => tests}/ui/const-generics/std/const-generics-range.rs (100%) rename {src/test => tests}/ui/const-generics/struct-with-invalid-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/struct-with-invalid-const-param.stderr (100%) rename {src/test => tests}/ui/const-generics/suggest_const_for_array.rs (100%) rename {src/test => tests}/ui/const-generics/suggest_const_for_array.stderr (100%) rename {src/test => tests}/ui/const-generics/trait-const-args.rs (100%) rename {src/test => tests}/ui/const-generics/transmute-const-param-static-reference.min.stderr (100%) rename {src/test => tests}/ui/const-generics/transmute-const-param-static-reference.rs (100%) rename {src/test => tests}/ui/const-generics/transparent-maybeunit-array-wrapper.rs (100%) rename {src/test => tests}/ui/const-generics/try_unify_ignore_lifetimes.rs (100%) rename {src/test => tests}/ui/const-generics/two_matching_preds.rs (100%) rename {src/test => tests}/ui/const-generics/type-after-const-ok.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/const-arg-in-const-arg.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-61936.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-63695.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-67144-1.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-67144-2.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-69816.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-70217.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-70507.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-70586.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-71348.min.stderr (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-71348.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-71382.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-71382.stderr (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-71805.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/issue-73730.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/non-local.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/qpath.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/simple.rs (100%) rename {src/test => tests}/ui/const-generics/type-dependent/type-mismatch.full.stderr (100%) rename {src/test => tests}/ui/const-generics/type-dependent/type-mismatch.min.stderr (100%) rename {src/test => tests}/ui/const-generics/type-dependent/type-mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/type_mismatch.rs (100%) rename {src/test => tests}/ui/const-generics/type_mismatch.stderr (100%) rename {src/test => tests}/ui/const-generics/type_not_in_scope.rs (100%) rename {src/test => tests}/ui/const-generics/type_not_in_scope.stderr (100%) rename {src/test => tests}/ui/const-generics/type_of_anon_const.rs (100%) rename {src/test => tests}/ui/const-generics/types-mismatch-const-args.full.stderr (100%) rename {src/test => tests}/ui/const-generics/types-mismatch-const-args.min.stderr (100%) rename {src/test => tests}/ui/const-generics/types-mismatch-const-args.rs (100%) rename {src/test => tests}/ui/const-generics/unify_with_nested_expr.rs (100%) rename {src/test => tests}/ui/const-generics/unify_with_nested_expr.stderr (100%) rename {src/test => tests}/ui/const-generics/uninferred-consts-during-codegen-1.rs (100%) rename {src/test => tests}/ui/const-generics/uninferred-consts-during-codegen-2.rs (100%) rename {src/test => tests}/ui/const-generics/unknown_adt.rs (100%) rename {src/test => tests}/ui/const-generics/unknown_adt.stderr (100%) rename {src/test => tests}/ui/const-generics/unused-const-param.rs (100%) rename {src/test => tests}/ui/const-generics/unused-type-param-suggestion.rs (100%) rename {src/test => tests}/ui/const-generics/unused-type-param-suggestion.stderr (100%) rename {src/test => tests}/ui/const-generics/unused_braces.fixed (100%) rename {src/test => tests}/ui/const-generics/unused_braces.full.fixed (100%) rename {src/test => tests}/ui/const-generics/unused_braces.min.fixed (100%) rename {src/test => tests}/ui/const-generics/unused_braces.rs (100%) rename {src/test => tests}/ui/const-generics/unused_braces.stderr (100%) rename {src/test => tests}/ui/const-generics/where-clauses.rs (100%) rename {src/test => tests}/ui/const-ptr/allowed_slices.rs (100%) rename {src/test => tests}/ui/const-ptr/forbidden_slices.rs (100%) rename {src/test => tests}/ui/const-ptr/forbidden_slices.stderr (100%) rename {src/test => tests}/ui/const-ptr/out_of_bounds_read.rs (100%) rename {src/test => tests}/ui/const-ptr/out_of_bounds_read.stderr (100%) rename {src/test => tests}/ui/const_prop/ice-assert-fail-div-by-zero.rs (100%) rename {src/test => tests}/ui/const_prop/ice-assert-fail-div-by-zero.stderr (100%) rename {src/test => tests}/ui/const_prop/inline_spans.rs (100%) rename {src/test => tests}/ui/const_prop/inline_spans_lint_attribute.rs (100%) rename {src/test => tests}/ui/const_prop/issue-102553.rs (100%) rename {src/test => tests}/ui/constructor-lifetime-args.rs (100%) rename {src/test => tests}/ui/constructor-lifetime-args.stderr (100%) rename {src/test => tests}/ui/consts/array-literal-index-oob.rs (100%) rename {src/test => tests}/ui/consts/array-literal-index-oob.stderr (100%) rename {src/test => tests}/ui/consts/array-to-slice-cast.rs (100%) rename {src/test => tests}/ui/consts/assert-type-intrinsics.rs (100%) rename {src/test => tests}/ui/consts/assert-type-intrinsics.stderr (100%) rename {src/test => tests}/ui/consts/assoc-const.rs (100%) rename {src/test => tests}/ui/consts/assoc_const_generic_impl.rs (100%) rename {src/test => tests}/ui/consts/assoc_const_generic_impl.stderr (100%) rename {src/test => tests}/ui/consts/associated_const_generic.rs (100%) rename {src/test => tests}/ui/consts/async-block.rs (100%) rename {src/test => tests}/ui/consts/async-block.with_feature.stderr (100%) rename {src/test => tests}/ui/consts/async-block.without_feature.stderr (100%) rename {src/test => tests}/ui/consts/auxiliary/cci_const_block.rs (100%) rename {src/test => tests}/ui/consts/auxiliary/const_fn_lib.rs (100%) rename {src/test => tests}/ui/consts/auxiliary/external_macro.rs (100%) rename {src/test => tests}/ui/consts/auxiliary/issue-17718-aux.rs (100%) rename {src/test => tests}/ui/consts/auxiliary/issue-63226.rs (100%) rename {src/test => tests}/ui/consts/auxiliary/promotable_const_fn_lib.rs (100%) rename {src/test => tests}/ui/consts/bswap-const.rs (100%) rename {src/test => tests}/ui/consts/cast-discriminant-zst-enum.rs (100%) rename {src/test => tests}/ui/consts/chained-constants-stackoverflow.rs (100%) rename {src/test => tests}/ui/consts/check_const-feature-gated.rs (100%) rename {src/test => tests}/ui/consts/closure-structural-match-issue-90013.rs (100%) rename {src/test => tests}/ui/consts/const-address-of-interior-mut.rs (100%) rename {src/test => tests}/ui/consts/const-address-of-interior-mut.stderr (100%) rename {src/test => tests}/ui/consts/const-address-of-mut.rs (100%) rename {src/test => tests}/ui/consts/const-address-of-mut.stderr (100%) rename {src/test => tests}/ui/consts/const-address-of.rs (100%) rename {src/test => tests}/ui/consts/const-adt-align-mismatch.rs (100%) rename {src/test => tests}/ui/consts/const-array-oob-arith.rs (100%) rename {src/test => tests}/ui/consts/const-array-oob-arith.stderr (100%) rename {src/test => tests}/ui/consts/const-array-oob.rs (100%) rename {src/test => tests}/ui/consts/const-array-oob.stderr (100%) rename {src/test => tests}/ui/consts/const-as-fn.rs (100%) rename {src/test => tests}/ui/consts/const-as-fn.stderr (100%) rename {src/test => tests}/ui/consts/const-autoderef.rs (100%) rename {src/test => tests}/ui/consts/const-big-enum.rs (100%) rename {src/test => tests}/ui/consts/const-binops.rs (100%) rename {src/test => tests}/ui/consts/const-bitshift-rhs-inference.rs (100%) rename {src/test => tests}/ui/consts/const-block-const-bound.rs (100%) rename {src/test => tests}/ui/consts/const-block-const-bound.stderr (100%) rename {src/test => tests}/ui/consts/const-block-cross-crate-fn.rs (100%) rename {src/test => tests}/ui/consts/const-block-item-macro-codegen.rs (100%) rename {src/test => tests}/ui/consts/const-block-item.rs (100%) rename {src/test => tests}/ui/consts/const-block-non-item-statement-3.rs (100%) rename {src/test => tests}/ui/consts/const-block-non-item-statement-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-block-non-item-statement.rs (100%) rename {src/test => tests}/ui/consts/const-block.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/const-repeat.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/fn-call-in-const.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/fn-call-in-non-const.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/fn-call-in-non-const.stderr (100%) rename {src/test => tests}/ui/consts/const-blocks/migrate-fail.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/migrate-fail.stderr (100%) rename {src/test => tests}/ui/consts/const-blocks/migrate-pass.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/nll-fail.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/nll-fail.stderr (100%) rename {src/test => tests}/ui/consts/const-blocks/nll-pass.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/run-pass.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/trait-error.rs (100%) rename {src/test => tests}/ui/consts/const-blocks/trait-error.stderr (100%) rename {src/test => tests}/ui/consts/const-bound.rs (100%) rename {src/test => tests}/ui/consts/const-byte-str-cast.rs (100%) rename {src/test => tests}/ui/consts/const-call.rs (100%) rename {src/test => tests}/ui/consts/const-call.stderr (100%) rename {src/test => tests}/ui/consts/const-cast-different-types.rs (100%) rename {src/test => tests}/ui/consts/const-cast-different-types.stderr (100%) rename {src/test => tests}/ui/consts/const-cast-ptr-int.rs (100%) rename {src/test => tests}/ui/consts/const-cast-wrong-type.rs (100%) rename {src/test => tests}/ui/consts/const-cast-wrong-type.stderr (100%) rename {src/test => tests}/ui/consts/const-cast.rs (100%) rename {src/test => tests}/ui/consts/const-const.rs (100%) rename {src/test => tests}/ui/consts/const-contents.rs (100%) rename {src/test => tests}/ui/consts/const-deref-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-deref-ptr.stderr (100%) rename {src/test => tests}/ui/consts/const-deref.rs (100%) rename {src/test => tests}/ui/consts/const-endianess.rs (100%) rename {src/test => tests}/ui/consts/const-enum-byref-self.rs (100%) rename {src/test => tests}/ui/consts/const-enum-byref.rs (100%) rename {src/test => tests}/ui/consts/const-enum-cast.rs (100%) rename {src/test => tests}/ui/consts/const-enum-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-enum-struct.rs (100%) rename {src/test => tests}/ui/consts/const-enum-struct2.rs (100%) rename {src/test => tests}/ui/consts/const-enum-structlike.rs (100%) rename {src/test => tests}/ui/consts/const-enum-tuple.rs (100%) rename {src/test => tests}/ui/consts/const-enum-tuple2.rs (100%) rename {src/test => tests}/ui/consts/const-enum-tuplestruct.rs (100%) rename {src/test => tests}/ui/consts/const-enum-tuplestruct2.rs (100%) rename {src/test => tests}/ui/consts/const-enum-vec-index.rs (100%) rename {src/test => tests}/ui/consts/const-enum-vec-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-enum-vector.rs (100%) rename {src/test => tests}/ui/consts/const-err-early.rs (100%) rename {src/test => tests}/ui/consts/const-err-early.stderr (100%) rename {src/test => tests}/ui/consts/const-err-late.rs (100%) rename {src/test => tests}/ui/consts/const-err-late.stderr (100%) rename {src/test => tests}/ui/consts/const-err-multi.rs (100%) rename {src/test => tests}/ui/consts/const-err-multi.stderr (100%) rename {src/test => tests}/ui/consts/const-err-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-err2.noopt.stderr (100%) rename {src/test => tests}/ui/consts/const-err2.opt.stderr (100%) rename {src/test => tests}/ui/consts/const-err2.opt_with_overflow_checks.stderr (100%) rename {src/test => tests}/ui/consts/const-err2.rs (100%) rename {src/test => tests}/ui/consts/const-err4.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-err4.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-err4.rs (100%) rename {src/test => tests}/ui/consts/const-eval/assign-to-static-within-other-static.rs (100%) rename {src/test => tests}/ui/consts/const-eval/assign-to-static-within-other-static.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/auxiliary/post_monomorphization_error.rs (100%) rename {src/test => tests}/ui/consts/const-eval/auxiliary/stability.rs (100%) rename {src/test => tests}/ui/consts/const-eval/conditional_array_execution.rs (100%) rename {src/test => tests}/ui/consts/const-eval/conditional_array_execution.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-intrinsic-promotion.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-intrinsic-promotion.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-3.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-3.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-3b.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-3b.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-4.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-4.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-4b.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow-4b.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2b.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2b.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2c.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-overflow2c.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-query-stack.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-query-stack.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-span.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const-eval-span.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-pointer-values-in-various-types.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const-pointer-values-in-various-types.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr_fail.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr_fail.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr_fail2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_fn_ptr_fail2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_let.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_let.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_2021.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_2021.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_libcore_bin.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_libcore_bin.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_stability.e2018.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_stability.e2021.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_stability.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_track_caller.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_panic_track_caller.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_prop_errors.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_raw_ptr_ops.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_raw_ptr_ops.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_raw_ptr_ops2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/const_raw_ptr_ops2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/const_signed_pat.rs (100%) rename {src/test => tests}/ui/consts/const-eval/dangling.rs (100%) rename {src/test => tests}/ui/consts/const-eval/dangling.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/dont_promote_unstable_const_fn.rs (100%) rename {src/test => tests}/ui/consts/const-eval/dont_promote_unstable_const_fn.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.rs (100%) rename {src/test => tests}/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/double_check.rs (100%) rename {src/test => tests}/ui/consts/const-eval/double_check2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/duration_conversion.rs (100%) rename {src/test => tests}/ui/consts/const-eval/enum_discr.rs (100%) rename {src/test => tests}/ui/consts/const-eval/erroneous-const.rs (100%) rename {src/test => tests}/ui/consts/const-eval/erroneous-const.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/erroneous-const2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/erroneous-const2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/extern_fat_pointer.rs (100%) rename {src/test => tests}/ui/consts/const-eval/format.rs (100%) rename {src/test => tests}/ui/consts/const-eval/format.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/generic-slice.rs (100%) rename {src/test => tests}/ui/consts/const-eval/generic-slice.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_errors.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_errors.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_transient.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_uninit.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_uninit.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_uninit.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_untyped.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_untyped.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/alloc_intrinsic_zero_sized.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.rs (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/heap/dealloc_intrinsic_zero_sized.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ice-generic-assoc-const.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ice-packed.rs (100%) rename {src/test => tests}/ui/consts/const-eval/index-out-of-bounds-never-type.rs (100%) rename {src/test => tests}/ui/consts/const-eval/index-out-of-bounds-never-type.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/index_out_of_bounds.rs (100%) rename {src/test => tests}/ui/consts/const-eval/index_out_of_bounds.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/index_out_of_bounds_propagated.rs (100%) rename {src/test => tests}/ui/consts/const-eval/index_out_of_bounds_propagated.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/infinite_loop.rs (100%) rename {src/test => tests}/ui/consts/const-eval/infinite_loop.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-100878.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-104390.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-104390.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-43197.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-43197.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-44578.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-44578.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-47971.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-49296.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-49296.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-50706.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-50814-2.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-50814-2.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-50814.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-50814.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-51300.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-52475.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-52475.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-53157.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-53401.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-55541.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-64908.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-64970.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-65394.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-65394.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-70723.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-70723.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-70804-fn-subtyping.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-84957-const-str-as-bytes.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-85155.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-85155.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-85907.rs (100%) rename {src/test => tests}/ui/consts/const-eval/issue-85907.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/issue-91827-extern-types.rs (100%) rename {src/test => tests}/ui/consts/const-eval/livedrop.rs (100%) rename {src/test => tests}/ui/consts/const-eval/livedrop.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/match-test-ptr-null.rs (100%) rename {src/test => tests}/ui/consts/const-eval/match-test-ptr-null.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/mod-static-with-const-fn.rs (100%) rename {src/test => tests}/ui/consts/const-eval/mod-static-with-const-fn.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/no_lint_for_statically_known_error.rs (100%) rename {src/test => tests}/ui/consts/const-eval/nrvo.rs (100%) rename {src/test => tests}/ui/consts/const-eval/panic-assoc-never-type.rs (100%) rename {src/test => tests}/ui/consts/const-eval/panic-assoc-never-type.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/panic-never-type.rs (100%) rename {src/test => tests}/ui/consts/const-eval/panic-never-type.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/partial_ptr_overwrite.rs (100%) rename {src/test => tests}/ui/consts/const-eval/partial_ptr_overwrite.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promote-static.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promote_mutable_zst_mir_borrowck.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_const_fn_fail.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_const_fn_fail.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_errors.noopt.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_errors.opt.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_errors.opt_with_overflow_checks.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_errors.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_raw_ptr_ops.rs (100%) rename {src/test => tests}/ui/consts/const-eval/promoted_raw_ptr_ops.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/raw-bytes.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/raw-bytes.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/raw-bytes.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ref_to_int_match.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ref_to_int_match.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ref_to_int_match.rs (100%) rename {src/test => tests}/ui/consts/const-eval/shift_overflow.rs (100%) rename {src/test => tests}/ui/consts/const-eval/shift_overflow.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/simd/insert_extract.rs (100%) rename {src/test => tests}/ui/consts/const-eval/simple_with_undef.rs (100%) rename {src/test => tests}/ui/consts/const-eval/size-of-t.rs (100%) rename {src/test => tests}/ui/consts/const-eval/size-of-t.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/strlen.rs (100%) rename {src/test => tests}/ui/consts/const-eval/transmute-const-promotion.rs (100%) rename {src/test => tests}/ui/consts/const-eval/transmute-const-promotion.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/transmute-const.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/transmute-const.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/transmute-const.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-enum-overwrite.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-enum-overwrite.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-enum.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-enum.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-enum.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-incorrect-vtable.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-incorrect-vtable.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-incorrect-vtable.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-int-array.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-int-array.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-int-array.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-nonnull.chalk.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-nonnull.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-nonnull.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-ref-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-ref-ptr.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-uninhabit.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-uninhabit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-upvars.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-upvars.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-upvars.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-wide-ptr.chalk.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/ub-wide-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-eval/ub-wide-ptr.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/union-const-eval-field.rs (100%) rename {src/test => tests}/ui/consts/const-eval/union-const-eval-field.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/union-ice.rs (100%) rename {src/test => tests}/ui/consts/const-eval/union-ice.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/union-ub.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/union-ub.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/union-ub.rs (100%) rename {src/test => tests}/ui/consts/const-eval/union_promotion.rs (100%) rename {src/test => tests}/ui/consts/const-eval/union_promotion.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/unused-broken-const.rs (100%) rename {src/test => tests}/ui/consts/const-eval/unused-broken-const.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/unwind-abort.rs (100%) rename {src/test => tests}/ui/consts/const-eval/unwind-abort.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/valid-const.rs (100%) rename {src/test => tests}/ui/consts/const-eval/validate_uninhabited_zsts.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/validate_uninhabited_zsts.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-eval/validate_uninhabited_zsts.rs (100%) rename {src/test => tests}/ui/consts/const-eval/write-to-uninhabited-enum-variant.rs (100%) rename {src/test => tests}/ui/consts/const-eval/zst_operand_eval.rs (100%) rename {src/test => tests}/ui/consts/const-expr-addr-operator.rs (100%) rename {src/test => tests}/ui/consts/const-expr-in-fixed-length-vec.rs (100%) rename {src/test => tests}/ui/consts/const-expr-in-vec-repeat.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/const-extern-fn.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/feature-gate-const_extern_fn.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/feature-gate-const_extern_fn.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs (100%) rename {src/test => tests}/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.stderr (100%) rename {src/test => tests}/ui/consts/const-extern-function.rs (100%) rename {src/test => tests}/ui/consts/const-external-macro-const-err.rs (100%) rename {src/test => tests}/ui/consts/const-external-macro-const-err.stderr (100%) rename {src/test => tests}/ui/consts/const-fields-and-indexing.rs (100%) rename {src/test => tests}/ui/consts/const-float-bits-conv.rs (100%) rename {src/test => tests}/ui/consts/const-float-bits-reject-conv.rs (100%) rename {src/test => tests}/ui/consts/const-float-bits-reject-conv.stderr (100%) rename {src/test => tests}/ui/consts/const-float-classify.rs (100%) rename {src/test => tests}/ui/consts/const-fn-const-eval.rs (100%) rename {src/test => tests}/ui/consts/const-fn-destructuring-arg.rs (100%) rename {src/test => tests}/ui/consts/const-fn-error.rs (100%) rename {src/test => tests}/ui/consts/const-fn-error.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-in-vec.rs (100%) rename {src/test => tests}/ui/consts/const-fn-in-vec.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-method.rs (100%) rename {src/test => tests}/ui/consts/const-fn-mismatch.rs (100%) rename {src/test => tests}/ui/consts/const-fn-mismatch.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-nested.rs (100%) rename {src/test => tests}/ui/consts/const-fn-not-in-trait.rs (100%) rename {src/test => tests}/ui/consts/const-fn-not-in-trait.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-not-safe-for-const.rs (100%) rename {src/test => tests}/ui/consts/const-fn-not-safe-for-const.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-ptr.rs (100%) rename {src/test => tests}/ui/consts/const-fn-ptr.stderr (100%) rename {src/test => tests}/ui/consts/const-fn-stability-calls-3.rs (100%) rename {src/test => tests}/ui/consts/const-fn-stability-calls.rs (100%) rename {src/test => tests}/ui/consts/const-fn-type-name-any.rs (100%) rename {src/test => tests}/ui/consts/const-fn-type-name.rs (100%) rename {src/test => tests}/ui/consts/const-fn-val.rs (100%) rename {src/test => tests}/ui/consts/const-fn-zst-args.rs (100%) rename {src/test => tests}/ui/consts/const-fn.rs (100%) rename {src/test => tests}/ui/consts/const-for-feature-gate.rs (100%) rename {src/test => tests}/ui/consts/const-for-feature-gate.stderr (100%) rename {src/test => tests}/ui/consts/const-for.rs (100%) rename {src/test => tests}/ui/consts/const-for.stderr (100%) rename {src/test => tests}/ui/consts/const-index-feature-gate.rs (100%) rename {src/test => tests}/ui/consts/const-int-arithmetic-overflow.rs (100%) rename {src/test => tests}/ui/consts/const-int-arithmetic.rs (100%) rename {src/test => tests}/ui/consts/const-int-conversion-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-conversion.rs (100%) rename {src/test => tests}/ui/consts/const-int-conversion.stderr (100%) rename {src/test => tests}/ui/consts/const-int-overflowing-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-overflowing.rs (100%) rename {src/test => tests}/ui/consts/const-int-overflowing.stderr (100%) rename {src/test => tests}/ui/consts/const-int-pow-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-rotate-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-rotate.rs (100%) rename {src/test => tests}/ui/consts/const-int-rotate.stderr (100%) rename {src/test => tests}/ui/consts/const-int-saturating-arith.rs (100%) rename {src/test => tests}/ui/consts/const-int-sign-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-sign.rs (100%) rename {src/test => tests}/ui/consts/const-int-sign.stderr (100%) rename {src/test => tests}/ui/consts/const-int-unchecked.rs (100%) rename {src/test => tests}/ui/consts/const-int-unchecked.stderr (100%) rename {src/test => tests}/ui/consts/const-int-wrapping-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-int-wrapping.rs (100%) rename {src/test => tests}/ui/consts/const-int-wrapping.stderr (100%) rename {src/test => tests}/ui/consts/const-integer-bool-ops.rs (100%) rename {src/test => tests}/ui/consts/const-integer-bool-ops.stderr (100%) rename {src/test => tests}/ui/consts/const-labeled-break.rs (100%) rename {src/test => tests}/ui/consts/const-len-underflow-separate-spans.rs (100%) rename {src/test => tests}/ui/consts/const-len-underflow-separate-spans.stderr (100%) rename {src/test => tests}/ui/consts/const-len-underflow-subspans.rs (100%) rename {src/test => tests}/ui/consts/const-len-underflow-subspans.stderr (100%) rename {src/test => tests}/ui/consts/const-match-check.eval1.stderr (100%) rename {src/test => tests}/ui/consts/const-match-check.eval2.stderr (100%) rename {src/test => tests}/ui/consts/const-match-check.matchck.stderr (100%) rename {src/test => tests}/ui/consts/const-match-check.rs (100%) rename {src/test => tests}/ui/consts/const-match-pattern-arm.rs (100%) rename {src/test => tests}/ui/consts/const-meth-pattern.rs (100%) rename {src/test => tests}/ui/consts/const-multi-ref.rs (100%) rename {src/test => tests}/ui/consts/const-multi-ref.stderr (100%) rename {src/test => tests}/ui/consts/const-mut-refs/const_mut_address_of.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/const_mut_refs.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/feature-gate-const_mut_refs.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/feature-gate-const_mut_refs.stderr (100%) rename {src/test => tests}/ui/consts/const-mut-refs/issue-76510.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-mut-refs/issue-76510.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-mut-refs/issue-76510.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/mut_ref_in_final.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/mut_ref_in_final.stderr (100%) rename {src/test => tests}/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs (100%) rename {src/test => tests}/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr (100%) rename {src/test => tests}/ui/consts/const-needs_drop-monomorphic.rs (100%) rename {src/test => tests}/ui/consts/const-needs_drop-monomorphic.stderr (100%) rename {src/test => tests}/ui/consts/const-needs_drop.rs (100%) rename {src/test => tests}/ui/consts/const-negation.rs (100%) rename {src/test => tests}/ui/consts/const-negative.rs (100%) rename {src/test => tests}/ui/consts/const-nullary-enum.rs (100%) rename {src/test => tests}/ui/consts/const-nullary-univariant-enum.rs (100%) rename {src/test => tests}/ui/consts/const-pattern-irrefutable.rs (100%) rename {src/test => tests}/ui/consts/const-pattern-irrefutable.stderr (100%) rename {src/test => tests}/ui/consts/const-pattern-not-const-evaluable.rs (100%) rename {src/test => tests}/ui/consts/const-pattern-variant.rs (100%) rename {src/test => tests}/ui/consts/const-points-to-static.32bit.stderr (100%) rename {src/test => tests}/ui/consts/const-points-to-static.64bit.stderr (100%) rename {src/test => tests}/ui/consts/const-points-to-static.rs (100%) rename {src/test => tests}/ui/consts/const-prop-ice.rs (100%) rename {src/test => tests}/ui/consts/const-prop-ice.stderr (100%) rename {src/test => tests}/ui/consts/const-prop-ice2.rs (100%) rename {src/test => tests}/ui/consts/const-prop-ice2.stderr (100%) rename {src/test => tests}/ui/consts/const-prop-ice3.rs (100%) rename {src/test => tests}/ui/consts/const-prop-overflowing-casts.rs (100%) rename {src/test => tests}/ui/consts/const-prop-read-static-in-const.rs (100%) rename {src/test => tests}/ui/consts/const-prop-read-static-in-const.stderr (100%) rename {src/test => tests}/ui/consts/const-ptr-nonnull-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-ptr-nonnull.rs (100%) rename {src/test => tests}/ui/consts/const-ptr-nonnull.stderr (100%) rename {src/test => tests}/ui/consts/const-ptr-unique-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-ptr-unique.rs (100%) rename {src/test => tests}/ui/consts/const-ptr-unique.stderr (100%) rename {src/test => tests}/ui/consts/const-rec-and-tup.rs (100%) rename {src/test => tests}/ui/consts/const-region-ptrs-noncopy.rs (100%) rename {src/test => tests}/ui/consts/const-region-ptrs.rs (100%) rename {src/test => tests}/ui/consts/const-repeated-values.rs (100%) rename {src/test => tests}/ui/consts/const-size_of-align_of.rs (100%) rename {src/test => tests}/ui/consts/const-size_of-cycle.rs (100%) rename {src/test => tests}/ui/consts/const-size_of-cycle.stderr (100%) rename {src/test => tests}/ui/consts/const-size_of_val-align_of_val-extern-type.rs (100%) rename {src/test => tests}/ui/consts/const-size_of_val-align_of_val-extern-type.stderr (100%) rename {src/test => tests}/ui/consts/const-size_of_val-align_of_val.rs (100%) rename {src/test => tests}/ui/consts/const-slice-oob.rs (100%) rename {src/test => tests}/ui/consts/const-slice-oob.stderr (100%) rename {src/test => tests}/ui/consts/const-struct-offsets.rs (100%) rename {src/test => tests}/ui/consts/const-struct.rs (100%) rename {src/test => tests}/ui/consts/const-suggest-feature.rs (100%) rename {src/test => tests}/ui/consts/const-suggest-feature.stderr (100%) rename {src/test => tests}/ui/consts/const-trait-to-trait.rs (100%) rename {src/test => tests}/ui/consts/const-try-feature-gate.rs (100%) rename {src/test => tests}/ui/consts/const-try-feature-gate.stderr (100%) rename {src/test => tests}/ui/consts/const-try.rs (100%) rename {src/test => tests}/ui/consts/const-tup-index-span.rs (100%) rename {src/test => tests}/ui/consts/const-tup-index-span.stderr (100%) rename {src/test => tests}/ui/consts/const-tuple-struct.rs (100%) rename {src/test => tests}/ui/consts/const-type-mismatch.rs (100%) rename {src/test => tests}/ui/consts/const-type-mismatch.stderr (100%) rename {src/test => tests}/ui/consts/const-typeid-of-rpass.rs (100%) rename {src/test => tests}/ui/consts/const-unit-struct.rs (100%) rename {src/test => tests}/ui/consts/const-unsafe-fn.rs (100%) rename {src/test => tests}/ui/consts/const-unsized.rs (100%) rename {src/test => tests}/ui/consts/const-unsized.stderr (100%) rename {src/test => tests}/ui/consts/const-unwrap.rs (100%) rename {src/test => tests}/ui/consts/const-unwrap.stderr (100%) rename {src/test => tests}/ui/consts/const-validation-fail-55455.rs (100%) rename {src/test => tests}/ui/consts/const-variant-count.rs (100%) rename {src/test => tests}/ui/consts/const-vec-of-fns.rs (100%) rename {src/test => tests}/ui/consts/const-vec-syntax.rs (100%) rename {src/test => tests}/ui/consts/const-vecs-and-slices.rs (100%) rename {src/test => tests}/ui/consts/const.rs (100%) rename {src/test => tests}/ui/consts/const_constructor/const-construct-call.rs (100%) rename {src/test => tests}/ui/consts/const_constructor/const_constructor_qpath.rs (100%) rename {src/test => tests}/ui/consts/const_discriminant.rs (100%) rename {src/test => tests}/ui/consts/const_fn_floating_point_arithmetic.gated.stderr (100%) rename {src/test => tests}/ui/consts/const_fn_floating_point_arithmetic.rs (100%) rename {src/test => tests}/ui/consts/const_fn_floating_point_arithmetic.stock.stderr (100%) rename {src/test => tests}/ui/consts/const_fn_return_nested_fn_ptr.rs (100%) rename {src/test => tests}/ui/consts/const_fn_unsize.rs (100%) rename {src/test => tests}/ui/consts/const_forget.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/accept_structural.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/auxiliary/consts.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/cross-crate-fail.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/cross-crate-fail.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/cross-crate-pass.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/custom-eq-branch-pass.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/custom-eq-branch-warn.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/custom-eq-branch-warn.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/incomplete-slice.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/incomplete-slice.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-44333.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-44333.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-53708.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-62614.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-65466.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-73431.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-73431.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-78057.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/issue-78057.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/no-eq-branch-fail.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/no-eq-branch-fail.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/reject_non_partial_eq.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/reject_non_partial_eq.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/reject_non_structural.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/reject_non_structural.stderr (100%) rename {src/test => tests}/ui/consts/const_in_pattern/warn_corner_cases.rs (100%) rename {src/test => tests}/ui/consts/const_in_pattern/warn_corner_cases.stderr (100%) rename {src/test => tests}/ui/consts/const_let_assign.rs (100%) rename {src/test => tests}/ui/consts/const_let_assign2.rs (100%) rename {src/test => tests}/ui/consts/const_let_assign3.rs (100%) rename {src/test => tests}/ui/consts/const_let_assign3.stderr (100%) rename {src/test => tests}/ui/consts/const_let_eq.rs (100%) rename {src/test => tests}/ui/consts/const_let_eq_float.rs (100%) rename {src/test => tests}/ui/consts/const_let_irrefutable.rs (100%) rename {src/test => tests}/ui/consts/const_let_promote.rs (100%) rename {src/test => tests}/ui/consts/const_let_refutable.rs (100%) rename {src/test => tests}/ui/consts/const_let_refutable.stderr (100%) rename {src/test => tests}/ui/consts/const_limit/const_eval_limit_not_reached.rs (100%) rename {src/test => tests}/ui/consts/const_limit/const_eval_limit_overflow.rs (100%) rename {src/test => tests}/ui/consts/const_limit/const_eval_limit_overflow.stderr (100%) rename {src/test => tests}/ui/consts/const_limit/const_eval_limit_reached.rs (100%) rename {src/test => tests}/ui/consts/const_limit/const_eval_limit_reached.stderr (100%) rename {src/test => tests}/ui/consts/const_limit/feature-gate-const_eval_limit.rs (100%) rename {src/test => tests}/ui/consts/const_limit/feature-gate-const_eval_limit.stderr (100%) rename {src/test => tests}/ui/consts/const_prop_slice_pat_ice.rs (100%) rename {src/test => tests}/ui/consts/const_short_circuit.rs (100%) rename {src/test => tests}/ui/consts/const_unsafe_unreachable.rs (100%) rename {src/test => tests}/ui/consts/const_unsafe_unreachable_ub.rs (100%) rename {src/test => tests}/ui/consts/const_unsafe_unreachable_ub.stderr (100%) rename {src/test => tests}/ui/consts/constifconst-call-in-const-position.rs (100%) rename {src/test => tests}/ui/consts/constifconst-call-in-const-position.stderr (100%) rename {src/test => tests}/ui/consts/consts-in-patterns.rs (100%) rename {src/test => tests}/ui/consts/control-flow/assert.rs (100%) rename {src/test => tests}/ui/consts/control-flow/assert.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/basics.rs (100%) rename {src/test => tests}/ui/consts/control-flow/drop-fail.precise.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/drop-fail.rs (100%) rename {src/test => tests}/ui/consts/control-flow/drop-fail.stock.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/drop-pass.rs (100%) rename {src/test => tests}/ui/consts/control-flow/drop-precise.rs (100%) rename {src/test => tests}/ui/consts/control-flow/exhaustive-c-like-enum-match.rs (100%) rename {src/test => tests}/ui/consts/control-flow/feature-gate-const-if-match.rs (100%) rename {src/test => tests}/ui/consts/control-flow/interior-mutability.rs (100%) rename {src/test => tests}/ui/consts/control-flow/interior-mutability.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/issue-46843.rs (100%) rename {src/test => tests}/ui/consts/control-flow/issue-46843.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/issue-50577.rs (100%) rename {src/test => tests}/ui/consts/control-flow/issue-50577.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/loop.rs (100%) rename {src/test => tests}/ui/consts/control-flow/loop.stderr (100%) rename {src/test => tests}/ui/consts/control-flow/short-circuit-let.rs (100%) rename {src/test => tests}/ui/consts/control-flow/short-circuit.rs (100%) rename {src/test => tests}/ui/consts/control-flow/single_variant_match_ice.rs (100%) rename {src/test => tests}/ui/consts/control-flow/try.rs (100%) rename {src/test => tests}/ui/consts/control-flow/try.stderr (100%) rename {src/test => tests}/ui/consts/copy-intrinsic.rs (100%) rename {src/test => tests}/ui/consts/copy-intrinsic.stderr (100%) rename {src/test => tests}/ui/consts/dangling-alloc-id-ice.rs (100%) rename {src/test => tests}/ui/consts/dangling-alloc-id-ice.stderr (100%) rename {src/test => tests}/ui/consts/dangling_raw_ptr.rs (100%) rename {src/test => tests}/ui/consts/dangling_raw_ptr.stderr (100%) rename {src/test => tests}/ui/consts/deref_in_pattern.rs (100%) rename {src/test => tests}/ui/consts/drop_box.rs (100%) rename {src/test => tests}/ui/consts/drop_box.stderr (100%) rename {src/test => tests}/ui/consts/drop_none.rs (100%) rename {src/test => tests}/ui/consts/drop_zst.rs (100%) rename {src/test => tests}/ui/consts/drop_zst.stderr (100%) rename {src/test => tests}/ui/consts/enum-discr-type-err.rs (100%) rename {src/test => tests}/ui/consts/enum-discr-type-err.stderr (100%) rename {src/test => tests}/ui/consts/eval-enum.rs (100%) rename {src/test => tests}/ui/consts/eval-enum.stderr (100%) rename {src/test => tests}/ui/consts/extra-const-ub/detect-extra-ub.rs (100%) rename {src/test => tests}/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr (100%) rename {src/test => tests}/ui/consts/extra-const-ub/issue-100771.rs (100%) rename {src/test => tests}/ui/consts/extra-const-ub/issue-101034.rs (100%) rename {src/test => tests}/ui/consts/fn_trait_refs.rs (100%) rename {src/test => tests}/ui/consts/huge-values.rs (100%) rename {src/test => tests}/ui/consts/ice-48279.rs (100%) rename {src/test => tests}/ui/consts/ice-zst-static-access.rs (100%) rename {src/test => tests}/ui/consts/inline_asm.rs (100%) rename {src/test => tests}/ui/consts/inline_asm.stderr (100%) rename {src/test => tests}/ui/consts/int_ptr_for_zst_slices.rs (100%) rename {src/test => tests}/ui/consts/intrinsic_without_const_stab.rs (100%) rename {src/test => tests}/ui/consts/intrinsic_without_const_stab.stderr (100%) rename {src/test => tests}/ui/consts/intrinsic_without_const_stab_fail.rs (100%) rename {src/test => tests}/ui/consts/intrinsic_without_const_stab_fail.stderr (100%) rename {src/test => tests}/ui/consts/invalid-const-in-body.rs (100%) rename {src/test => tests}/ui/consts/invalid-const-in-body.stderr (100%) rename {src/test => tests}/ui/consts/invalid-inline-const-in-match-arm.rs (100%) rename {src/test => tests}/ui/consts/invalid-inline-const-in-match-arm.stderr (100%) rename {src/test => tests}/ui/consts/invalid-union.32bit.stderr (100%) rename {src/test => tests}/ui/consts/invalid-union.64bit.stderr (100%) rename {src/test => tests}/ui/consts/invalid-union.rs (100%) rename {src/test => tests}/ui/consts/invalid_promotion.rs (100%) rename {src/test => tests}/ui/consts/issue-102117.rs (100%) rename {src/test => tests}/ui/consts/issue-102117.stderr (100%) rename {src/test => tests}/ui/consts/issue-103790.rs (100%) rename {src/test => tests}/ui/consts/issue-103790.stderr (100%) rename {src/test => tests}/ui/consts/issue-104155.rs (100%) rename {src/test => tests}/ui/consts/issue-104396.rs (100%) rename {src/test => tests}/ui/consts/issue-104396.stderr (100%) rename {src/test => tests}/ui/consts/issue-104609.rs (100%) rename {src/test => tests}/ui/consts/issue-104609.stderr (100%) rename {src/test => tests}/ui/consts/issue-104768.rs (100%) rename {src/test => tests}/ui/consts/issue-104768.stderr (100%) rename {src/test => tests}/ui/consts/issue-13837.rs (100%) rename {src/test => tests}/ui/consts/issue-13902.rs (100%) rename {src/test => tests}/ui/consts/issue-17074.rs (100%) rename {src/test => tests}/ui/consts/issue-17458.rs (100%) rename {src/test => tests}/ui/consts/issue-17458.stderr (100%) rename {src/test => tests}/ui/consts/issue-17718-borrow-interior.rs (100%) rename {src/test => tests}/ui/consts/issue-17718-const-bad-values.rs (100%) rename {src/test => tests}/ui/consts/issue-17718-const-bad-values.stderr (100%) rename {src/test => tests}/ui/consts/issue-17718-const-borrow.rs (100%) rename {src/test => tests}/ui/consts/issue-17718-const-borrow.stderr (100%) rename {src/test => tests}/ui/consts/issue-17718-constants-not-static.rs (100%) rename {src/test => tests}/ui/consts/issue-17718-constants-not-static.stderr (100%) rename {src/test => tests}/ui/consts/issue-17718-references.rs (100%) rename {src/test => tests}/ui/consts/issue-17718-references.stderr (100%) rename {src/test => tests}/ui/consts/issue-17718.rs (100%) rename {src/test => tests}/ui/consts/issue-17756.rs (100%) rename {src/test => tests}/ui/consts/issue-18294.rs (100%) rename {src/test => tests}/ui/consts/issue-18294.stderr (100%) rename {src/test => tests}/ui/consts/issue-19244.rs (100%) rename {src/test => tests}/ui/consts/issue-21562.rs (100%) rename {src/test => tests}/ui/consts/issue-21721.rs (100%) rename {src/test => tests}/ui/consts/issue-23833.rs (100%) rename {src/test => tests}/ui/consts/issue-23968-const-not-overflow.rs (100%) rename {src/test => tests}/ui/consts/issue-25826.rs (100%) rename {src/test => tests}/ui/consts/issue-25826.stderr (100%) rename {src/test => tests}/ui/consts/issue-27890.rs (100%) rename {src/test => tests}/ui/consts/issue-28113.rs (100%) rename {src/test => tests}/ui/consts/issue-28113.stderr (100%) rename {src/test => tests}/ui/consts/issue-29914-2.rs (100%) rename {src/test => tests}/ui/consts/issue-29914-3.rs (100%) rename {src/test => tests}/ui/consts/issue-29914.rs (100%) rename {src/test => tests}/ui/consts/issue-29927-1.rs (100%) rename {src/test => tests}/ui/consts/issue-29927.rs (100%) rename {src/test => tests}/ui/consts/issue-32829-2.rs (100%) rename {src/test => tests}/ui/consts/issue-32829-2.stderr (100%) rename {src/test => tests}/ui/consts/issue-32829.rs (100%) rename {src/test => tests}/ui/consts/issue-32829.stderr (100%) rename {src/test => tests}/ui/consts/issue-33537.rs (100%) rename {src/test => tests}/ui/consts/issue-34784.rs (100%) rename {src/test => tests}/ui/consts/issue-3521.fixed (100%) rename {src/test => tests}/ui/consts/issue-3521.rs (100%) rename {src/test => tests}/ui/consts/issue-3521.stderr (100%) rename {src/test => tests}/ui/consts/issue-36163.rs (100%) rename {src/test => tests}/ui/consts/issue-36163.stderr (100%) rename {src/test => tests}/ui/consts/issue-37222.rs (100%) rename {src/test => tests}/ui/consts/issue-37550-1.rs (100%) rename {src/test => tests}/ui/consts/issue-37550.rs (100%) rename {src/test => tests}/ui/consts/issue-37991.rs (100%) rename {src/test => tests}/ui/consts/issue-39161-bogus-error.rs (100%) rename {src/test => tests}/ui/consts/issue-39974.rs (100%) rename {src/test => tests}/ui/consts/issue-39974.stderr (100%) rename {src/test => tests}/ui/consts/issue-43105.rs (100%) rename {src/test => tests}/ui/consts/issue-43105.stderr (100%) rename {src/test => tests}/ui/consts/issue-44415.rs (100%) rename {src/test => tests}/ui/consts/issue-44415.stderr (100%) rename {src/test => tests}/ui/consts/issue-46553.rs (100%) rename {src/test => tests}/ui/consts/issue-47789.rs (100%) rename {src/test => tests}/ui/consts/issue-50439.rs (100%) rename {src/test => tests}/ui/consts/issue-50439.stderr (100%) rename {src/test => tests}/ui/consts/issue-52023-array-size-pointer-cast.rs (100%) rename {src/test => tests}/ui/consts/issue-52023-array-size-pointer-cast.stderr (100%) rename {src/test => tests}/ui/consts/issue-52060.rs (100%) rename {src/test => tests}/ui/consts/issue-52060.stderr (100%) rename {src/test => tests}/ui/consts/issue-54224.rs (100%) rename {src/test => tests}/ui/consts/issue-54224.stderr (100%) rename {src/test => tests}/ui/consts/issue-54348.rs (100%) rename {src/test => tests}/ui/consts/issue-54348.stderr (100%) rename {src/test => tests}/ui/consts/issue-54387.rs (100%) rename {src/test => tests}/ui/consts/issue-54954.rs (100%) rename {src/test => tests}/ui/consts/issue-54954.stderr (100%) rename {src/test => tests}/ui/consts/issue-56164.rs (100%) rename {src/test => tests}/ui/consts/issue-56164.stderr (100%) rename {src/test => tests}/ui/consts/issue-58435-ice-with-assoc-const.rs (100%) rename {src/test => tests}/ui/consts/issue-62045.rs (100%) rename {src/test => tests}/ui/consts/issue-63226.rs (100%) rename {src/test => tests}/ui/consts/issue-63952.32bit.stderr (100%) rename {src/test => tests}/ui/consts/issue-63952.64bit.stderr (100%) rename {src/test => tests}/ui/consts/issue-63952.rs (100%) rename {src/test => tests}/ui/consts/issue-64059.rs (100%) rename {src/test => tests}/ui/consts/issue-64506.rs (100%) rename {src/test => tests}/ui/consts/issue-64662.rs (100%) rename {src/test => tests}/ui/consts/issue-64662.stderr (100%) rename {src/test => tests}/ui/consts/issue-65348.rs (100%) rename {src/test => tests}/ui/consts/issue-66342.rs (100%) rename {src/test => tests}/ui/consts/issue-66345.rs (100%) rename {src/test => tests}/ui/consts/issue-66397.rs (100%) rename {src/test => tests}/ui/consts/issue-66693-panic-in-array-len.rs (100%) rename {src/test => tests}/ui/consts/issue-66693-panic-in-array-len.stderr (100%) rename {src/test => tests}/ui/consts/issue-66693.rs (100%) rename {src/test => tests}/ui/consts/issue-66693.stderr (100%) rename {src/test => tests}/ui/consts/issue-66787.rs (100%) rename {src/test => tests}/ui/consts/issue-67529.rs (100%) rename {src/test => tests}/ui/consts/issue-67640.rs (100%) rename {src/test => tests}/ui/consts/issue-67641.rs (100%) rename {src/test => tests}/ui/consts/issue-67696-const-prop-ice.rs (100%) rename {src/test => tests}/ui/consts/issue-67862.rs (100%) rename {src/test => tests}/ui/consts/issue-68264-overflow.rs (100%) rename {src/test => tests}/ui/consts/issue-68542-closure-in-array-len.rs (100%) rename {src/test => tests}/ui/consts/issue-68542-closure-in-array-len.stderr (100%) rename {src/test => tests}/ui/consts/issue-68684.rs (100%) rename {src/test => tests}/ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs (100%) rename {src/test => tests}/ui/consts/issue-69310-array-size-lit-wrong-ty.rs (100%) rename {src/test => tests}/ui/consts/issue-69310-array-size-lit-wrong-ty.stderr (100%) rename {src/test => tests}/ui/consts/issue-69312.rs (100%) rename {src/test => tests}/ui/consts/issue-69488.rs (100%) rename {src/test => tests}/ui/consts/issue-69532.rs (100%) rename {src/test => tests}/ui/consts/issue-6991.rs (100%) rename {src/test => tests}/ui/consts/issue-70773-mir-typeck-lt-norm.rs (100%) rename {src/test => tests}/ui/consts/issue-70942-trait-vs-impl-mismatch.rs (100%) rename {src/test => tests}/ui/consts/issue-70942-trait-vs-impl-mismatch.stderr (100%) rename {src/test => tests}/ui/consts/issue-73976-monomorphic.rs (100%) rename {src/test => tests}/ui/consts/issue-73976-polymorphic.rs (100%) rename {src/test => tests}/ui/consts/issue-73976-polymorphic.stderr (100%) rename {src/test => tests}/ui/consts/issue-76064.rs (100%) rename {src/test => tests}/ui/consts/issue-76064.stderr (100%) rename {src/test => tests}/ui/consts/issue-77062-large-zst-array.rs (100%) rename {src/test => tests}/ui/consts/issue-78655.rs (100%) rename {src/test => tests}/ui/consts/issue-78655.stderr (100%) rename {src/test => tests}/ui/consts/issue-79137-monomorphic.rs (100%) rename {src/test => tests}/ui/consts/issue-79137-toogeneric.rs (100%) rename {src/test => tests}/ui/consts/issue-79137-toogeneric.stderr (100%) rename {src/test => tests}/ui/consts/issue-79152-const-array-index.rs (100%) rename {src/test => tests}/ui/consts/issue-79690.64bit.stderr (100%) rename {src/test => tests}/ui/consts/issue-79690.rs (100%) rename {src/test => tests}/ui/consts/issue-83182.rs (100%) rename {src/test => tests}/ui/consts/issue-83182.stderr (100%) rename {src/test => tests}/ui/consts/issue-87046.rs (100%) rename {src/test => tests}/ui/consts/issue-87046.stderr (100%) rename {src/test => tests}/ui/consts/issue-88071.rs (100%) rename {src/test => tests}/ui/consts/issue-88649.rs (100%) rename {src/test => tests}/ui/consts/issue-89088.rs (100%) rename {src/test => tests}/ui/consts/issue-90762.rs (100%) rename {src/test => tests}/ui/consts/issue-90870.fixed (100%) rename {src/test => tests}/ui/consts/issue-90870.rs (100%) rename {src/test => tests}/ui/consts/issue-90870.stderr (100%) rename {src/test => tests}/ui/consts/issue-90878-2.rs (100%) rename {src/test => tests}/ui/consts/issue-90878-2.stderr (100%) rename {src/test => tests}/ui/consts/issue-90878-3.rs (100%) rename {src/test => tests}/ui/consts/issue-90878-3.stderr (100%) rename {src/test => tests}/ui/consts/issue-90878.rs (100%) rename {src/test => tests}/ui/consts/issue-90878.stderr (100%) rename {src/test => tests}/ui/consts/issue-91434.rs (100%) rename {src/test => tests}/ui/consts/issue-91434.stderr (100%) rename {src/test => tests}/ui/consts/issue-91560.fixed (100%) rename {src/test => tests}/ui/consts/issue-91560.rs (100%) rename {src/test => tests}/ui/consts/issue-91560.stderr (100%) rename {src/test => tests}/ui/consts/issue-94371.rs (100%) rename {src/test => tests}/ui/consts/issue-94675.rs (100%) rename {src/test => tests}/ui/consts/issue-94675.stderr (100%) rename {src/test => tests}/ui/consts/issue-96169.rs (100%) rename {src/test => tests}/ui/consts/issue-broken-mir.rs (100%) rename {src/test => tests}/ui/consts/issue-miri-1910.rs (100%) rename {src/test => tests}/ui/consts/issue-miri-1910.stderr (100%) rename {src/test => tests}/ui/consts/large_const_alloc.rs (100%) rename {src/test => tests}/ui/consts/large_const_alloc.stderr (100%) rename {src/test => tests}/ui/consts/locals-in-const-fn.rs (100%) rename {src/test => tests}/ui/consts/match-const-fn-structs.rs (100%) rename {src/test => tests}/ui/consts/match_ice.rs (100%) rename {src/test => tests}/ui/consts/match_ice.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/address_of.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/address_of.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/address_of_const.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/allow_const_fn_ptr_run_pass.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/allow_raw_ptr_dereference_const_fn.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/bad_const_fn_body_ice.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/bad_const_fn_body_ice.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/cast_fn.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/cmp_fn_pointers.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/cmp_fn_pointers.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_dyn.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_libstd.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_libstd_stability.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_fn_unsafe_ok.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/mutable_borrow.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/mutable_borrow.stderr (100%) rename {src/test => tests}/ui/consts/min_const_fn/promotion.rs (100%) rename {src/test => tests}/ui/consts/min_const_fn/promotion.stderr (100%) rename {src/test => tests}/ui/consts/mir_check_nonconst.rs (100%) rename {src/test => tests}/ui/consts/mir_check_nonconst.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/abi-mismatch.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/abi-mismatch.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/assoc_const.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/assoc_const.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/assoc_const_2.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/assoc_const_2.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/auxiliary/static_cross_crate.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/box.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/box.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static.32bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static.64bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.32bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.64bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/drop.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/drop.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/inline_asm.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/inline_asm.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutable_references.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutable_references.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutable_references_err.32bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutable_references_err.64bit.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutable_references_err.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutating_global.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/mutating_global.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/non_const_fn.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/non_const_fn.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/ptr_arith.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/ptr_arith.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/raw_mutable_const.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/raw_mutable_const.stderr (100%) rename {src/test => tests}/ui/consts/miri_unleashed/slice_eq.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/tls.rs (100%) rename {src/test => tests}/ui/consts/miri_unleashed/tls.stderr (100%) rename {src/test => tests}/ui/consts/missing_span_in_backtrace.rs (100%) rename {src/test => tests}/ui/consts/missing_span_in_backtrace.stderr (100%) rename {src/test => tests}/ui/consts/mozjs-error.rs (100%) rename {src/test => tests}/ui/consts/nested_erroneous_ctfe.rs (100%) rename {src/test => tests}/ui/consts/nested_erroneous_ctfe.stderr (100%) rename {src/test => tests}/ui/consts/non-const-value-in-const.rs (100%) rename {src/test => tests}/ui/consts/non-const-value-in-const.stderr (100%) rename {src/test => tests}/ui/consts/non-scalar-cast.rs (100%) rename {src/test => tests}/ui/consts/offset.rs (100%) rename {src/test => tests}/ui/consts/offset_from.rs (100%) rename {src/test => tests}/ui/consts/offset_from_ub.rs (100%) rename {src/test => tests}/ui/consts/offset_from_ub.stderr (100%) rename {src/test => tests}/ui/consts/offset_ub.rs (100%) rename {src/test => tests}/ui/consts/offset_ub.stderr (100%) rename {src/test => tests}/ui/consts/packed_pattern.rs (100%) rename {src/test => tests}/ui/consts/packed_pattern.stderr (100%) rename {src/test => tests}/ui/consts/packed_pattern2.rs (100%) rename {src/test => tests}/ui/consts/packed_pattern2.stderr (100%) rename {src/test => tests}/ui/consts/partial_qualif.rs (100%) rename {src/test => tests}/ui/consts/partial_qualif.stderr (100%) rename {src/test => tests}/ui/consts/precise-drop-with-coverage.rs (100%) rename {src/test => tests}/ui/consts/precise-drop-with-promoted.rs (100%) rename {src/test => tests}/ui/consts/promote-not.rs (100%) rename {src/test => tests}/ui/consts/promote-not.stderr (100%) rename {src/test => tests}/ui/consts/promote_borrowed_field.rs (100%) rename {src/test => tests}/ui/consts/promote_const_let.rs (100%) rename {src/test => tests}/ui/consts/promote_const_let.stderr (100%) rename {src/test => tests}/ui/consts/promote_evaluation_unused_result.rs (100%) rename {src/test => tests}/ui/consts/promote_fn_calls.rs (100%) rename {src/test => tests}/ui/consts/promote_fn_calls_std.rs (100%) rename {src/test => tests}/ui/consts/promoted-const-drop.rs (100%) rename {src/test => tests}/ui/consts/promoted-const-drop.stderr (100%) rename {src/test => tests}/ui/consts/promoted-storage.rs (100%) rename {src/test => tests}/ui/consts/promoted-validation-55454.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call.stderr (100%) rename {src/test => tests}/ui/consts/promoted_const_call2.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call2.stderr (100%) rename {src/test => tests}/ui/consts/promoted_const_call3.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call3.stderr (100%) rename {src/test => tests}/ui/consts/promoted_const_call4.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call5.rs (100%) rename {src/test => tests}/ui/consts/promoted_const_call5.stderr (100%) rename {src/test => tests}/ui/consts/promoted_regression.rs (100%) rename {src/test => tests}/ui/consts/promotion-mutable-ref.rs (100%) rename {src/test => tests}/ui/consts/promotion.rs (100%) rename {src/test => tests}/ui/consts/ptr_comparisons.rs (100%) rename {src/test => tests}/ui/consts/ptr_comparisons.stderr (100%) rename {src/test => tests}/ui/consts/ptr_is_null.rs (100%) rename {src/test => tests}/ui/consts/qualif-indirect-mutation-fail.rs (100%) rename {src/test => tests}/ui/consts/qualif-indirect-mutation-fail.stderr (100%) rename {src/test => tests}/ui/consts/qualif-indirect-mutation-pass.rs (100%) rename {src/test => tests}/ui/consts/qualif-union.rs (100%) rename {src/test => tests}/ui/consts/qualif-union.stderr (100%) rename {src/test => tests}/ui/consts/qualif_overwrite.rs (100%) rename {src/test => tests}/ui/consts/qualif_overwrite.stderr (100%) rename {src/test => tests}/ui/consts/qualif_overwrite_2.rs (100%) rename {src/test => tests}/ui/consts/qualif_overwrite_2.stderr (100%) rename {src/test => tests}/ui/consts/raw-ptr-const.rs (100%) rename {src/test => tests}/ui/consts/raw-ptr-const.stderr (100%) rename {src/test => tests}/ui/consts/raw_pointer_promoted.rs (100%) rename {src/test => tests}/ui/consts/recursive-zst-static.default.stderr (100%) rename {src/test => tests}/ui/consts/recursive-zst-static.rs (100%) rename {src/test => tests}/ui/consts/recursive-zst-static.unleash.stderr (100%) rename {src/test => tests}/ui/consts/recursive.rs (100%) rename {src/test => tests}/ui/consts/recursive.stderr (100%) rename {src/test => tests}/ui/consts/references.rs (100%) rename {src/test => tests}/ui/consts/refs_check_const_eq-issue-88384.rs (100%) rename {src/test => tests}/ui/consts/refs_check_const_eq-issue-88384.stderr (100%) rename {src/test => tests}/ui/consts/refs_check_const_value_eq-issue-88876.rs (100%) rename {src/test => tests}/ui/consts/repeat_match.rs (100%) rename {src/test => tests}/ui/consts/return-in-const-fn.rs (100%) rename {src/test => tests}/ui/consts/rustc-const-stability-require-const.rs (100%) rename {src/test => tests}/ui/consts/rustc-const-stability-require-const.stderr (100%) rename {src/test => tests}/ui/consts/rustc-impl-const-stability.rs (100%) rename {src/test => tests}/ui/consts/rvalue-static-promotion.rs (100%) rename {src/test => tests}/ui/consts/self_normalization.rs (100%) rename {src/test => tests}/ui/consts/self_normalization2.rs (100%) rename {src/test => tests}/ui/consts/signed_enum_discr.rs (100%) rename {src/test => tests}/ui/consts/stable-precise-live-drops-in-libcore.rs (100%) rename {src/test => tests}/ui/consts/stable-precise-live-drops-in-libcore.stderr (100%) rename {src/test => tests}/ui/consts/static-cycle-error.rs (100%) rename {src/test => tests}/ui/consts/static-raw-pointer-interning.rs (100%) rename {src/test => tests}/ui/consts/static-raw-pointer-interning2.rs (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref.rs (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref2.mut_refs.stderr (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref2.rs (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref2.stock.stderr (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref3.rs (100%) rename {src/test => tests}/ui/consts/static_mut_containing_mut_ref3.stderr (100%) rename {src/test => tests}/ui/consts/std/alloc.32bit.stderr (100%) rename {src/test => tests}/ui/consts/std/alloc.64bit.stderr (100%) rename {src/test => tests}/ui/consts/std/alloc.rs (100%) rename {src/test => tests}/ui/consts/std/cell.rs (100%) rename {src/test => tests}/ui/consts/std/cell.stderr (100%) rename {src/test => tests}/ui/consts/std/iter.rs (100%) rename {src/test => tests}/ui/consts/std/slice.rs (100%) rename {src/test => tests}/ui/consts/too_generic_eval_ice.rs (100%) rename {src/test => tests}/ui/consts/too_generic_eval_ice.stderr (100%) rename {src/test => tests}/ui/consts/trait_specialization.rs (100%) rename {src/test => tests}/ui/consts/trait_specialization.stderr (100%) rename {src/test => tests}/ui/consts/transmute-const.rs (100%) rename {src/test => tests}/ui/consts/transmute-size-mismatch-before-typeck.rs (100%) rename {src/test => tests}/ui/consts/transmute-size-mismatch-before-typeck.stderr (100%) rename {src/test => tests}/ui/consts/try-operator.rs (100%) rename {src/test => tests}/ui/consts/tuple-struct-constructors.rs (100%) rename {src/test => tests}/ui/consts/underscore_const_names.rs (100%) rename {src/test => tests}/ui/consts/uninhabited-const-issue-61744.rs (100%) rename {src/test => tests}/ui/consts/uninhabited-const-issue-61744.stderr (100%) rename {src/test => tests}/ui/consts/union_constant.rs (100%) rename {src/test => tests}/ui/consts/unnormalized-param-env.rs (100%) rename {src/test => tests}/ui/consts/unstable-const-fn-in-libcore.rs (100%) rename {src/test => tests}/ui/consts/unstable-const-fn-in-libcore.stderr (100%) rename {src/test => tests}/ui/consts/unstable-precise-live-drops-in-libcore.rs (100%) rename {src/test => tests}/ui/consts/unwind-abort.rs (100%) rename {src/test => tests}/ui/consts/validate_never_arrays.rs (100%) rename {src/test => tests}/ui/consts/validate_never_arrays.stderr (100%) rename {src/test => tests}/ui/consts/write-to-static-mut-in-static.rs (100%) rename {src/test => tests}/ui/consts/write-to-static-mut-in-static.stderr (100%) rename {src/test => tests}/ui/consts/write_to_mut_ref_dest.rs (100%) rename {src/test => tests}/ui/consts/write_to_mut_ref_dest.stock.stderr (100%) rename {src/test => tests}/ui/consts/write_to_static_via_mut_ref.rs (100%) rename {src/test => tests}/ui/consts/write_to_static_via_mut_ref.stderr (100%) rename {src/test => tests}/ui/consts/zst_no_llvm_alloc.rs (100%) rename {src/test => tests}/ui/copy-a-resource.rs (100%) rename {src/test => tests}/ui/copy-a-resource.stderr (100%) rename {src/test => tests}/ui/crate-leading-sep.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve1-1.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve1-2.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve1-3.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve2-1.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve2-2.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/crateresolve2-3.rs (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/libfoo.rlib (100%) rename {src/test => tests}/ui/crate-loading/auxiliary/proc-macro.rs (100%) rename {src/test => tests}/ui/crate-loading/crateresolve1.rs (100%) rename {src/test => tests}/ui/crate-loading/crateresolve1.stderr (100%) rename {src/test => tests}/ui/crate-loading/crateresolve2.rs (100%) rename {src/test => tests}/ui/crate-loading/crateresolve2.stderr (100%) rename {src/test => tests}/ui/crate-loading/cross-compiled-proc-macro.rs (100%) rename {src/test => tests}/ui/crate-loading/invalid-rlib.rs (100%) rename {src/test => tests}/ui/crate-loading/invalid-rlib.stderr (100%) rename {src/test => tests}/ui/crate-loading/missing-std.rs (100%) rename {src/test => tests}/ui/crate-loading/missing-std.stderr (100%) rename {src/test => tests}/ui/crate-method-reexport-grrrrrrr.rs (100%) rename {src/test => tests}/ui/crate-name-attr-used.rs (100%) rename {src/test => tests}/ui/crate-name-mismatch.rs (100%) rename {src/test => tests}/ui/crate-name-mismatch.stderr (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_borrow_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_capture_clause.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_const.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_impl_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_iter_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_nested_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/cci_no_inline_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/moves_based_on_type_lib.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/pub_static_array.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/reexported_static_methods.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/static_init_aux.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/xcrate-trait-lifetime-param.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/xcrate_address_insignificant.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/xcrate_associated_type_defaults.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/xcrate_generic_fn_nested_return.rs (100%) rename {src/test => tests}/ui/cross-crate/auxiliary/xcrate_static_addresses.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_borrow.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_capture_clause.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_impl_exe.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_iter_exe.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_nested_exe.rs (100%) rename {src/test => tests}/ui/cross-crate/cci_no_inline_exe.rs (100%) rename {src/test => tests}/ui/cross-crate/const-cross-crate-const.rs (100%) rename {src/test => tests}/ui/cross-crate/const-cross-crate-extern.rs (100%) rename {src/test => tests}/ui/cross-crate/cross-crate-const-pat.rs (100%) rename {src/test => tests}/ui/cross-crate/issue-64872/auxiliary/a_def_obj.rs (100%) rename {src/test => tests}/ui/cross-crate/issue-64872/auxiliary/b_reexport_obj.rs (100%) rename {src/test => tests}/ui/cross-crate/issue-64872/auxiliary/c_another_vtable_for_obj.rs (100%) rename {src/test => tests}/ui/cross-crate/issue-64872/auxiliary/d_chain_of_rlibs_and_dylibs.rs (100%) rename {src/test => tests}/ui/cross-crate/issue-64872/issue-64872.rs (100%) rename {src/test => tests}/ui/cross-crate/moves-based-on-type-cross-crate.rs (100%) rename {src/test => tests}/ui/cross-crate/reexported-static-methods-cross-crate.rs (100%) rename {src/test => tests}/ui/cross-crate/static-array-across-crate.rs (100%) rename {src/test => tests}/ui/cross-crate/static-init.rs (100%) rename {src/test => tests}/ui/cross-crate/xcrate-address-insignificant.rs (100%) rename {src/test => tests}/ui/cross-crate/xcrate-associated-type-defaults.rs (100%) rename {src/test => tests}/ui/cross-crate/xcrate-static-addresses.rs (100%) rename {src/test => tests}/ui/cross-crate/xcrate-trait-lifetime-param.rs (100%) rename {src/test => tests}/ui/cross-crate/xcrate_generic_fn_nested_return.rs (100%) rename {src/test => tests}/ui/cross/cross-borrow-trait.rs (100%) rename {src/test => tests}/ui/cross/cross-borrow-trait.stderr (100%) rename {src/test => tests}/ui/cross/cross-crate-macro-backtrace/auxiliary/extern_macro_crate.rs (100%) rename {src/test => tests}/ui/cross/cross-crate-macro-backtrace/main.rs (100%) rename {src/test => tests}/ui/cross/cross-crate-macro-backtrace/main.stderr (100%) rename {src/test => tests}/ui/cross/cross-file-errors/main.rs (100%) rename {src/test => tests}/ui/cross/cross-file-errors/main.stderr (100%) rename {src/test => tests}/ui/cross/cross-file-errors/underscore.rs (100%) rename {src/test => tests}/ui/cross/cross-fn-cache-hole.rs (100%) rename {src/test => tests}/ui/cross/cross-fn-cache-hole.stderr (100%) rename {src/test => tests}/ui/custom-attribute-multisegment.rs (100%) rename {src/test => tests}/ui/custom-attribute-multisegment.stderr (100%) rename {src/test => tests}/ui/custom-test-frameworks-simple.rs (100%) rename {src/test => tests}/ui/custom_attribute.rs (100%) rename {src/test => tests}/ui/custom_attribute.stderr (100%) rename {src/test => tests}/ui/custom_test_frameworks/auxiliary/dynamic_runner.rs (100%) rename {src/test => tests}/ui/custom_test_frameworks/auxiliary/example_runner.rs (100%) rename {src/test => tests}/ui/custom_test_frameworks/dynamic.rs (100%) rename {src/test => tests}/ui/custom_test_frameworks/full.rs (100%) rename {src/test => tests}/ui/custom_test_frameworks/mismatch.rs (100%) rename {src/test => tests}/ui/custom_test_frameworks/mismatch.stderr (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-default-type-trait.rs (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-default-type-trait.stderr (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-supertrait-direct.rs (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-supertrait-direct.stderr (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-supertrait-indirect.rs (100%) rename {src/test => tests}/ui/cycle-trait/cycle-trait-supertrait-indirect.stderr (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-box-with-large-allocator.rs (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.rs (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.stderr (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.rs (100%) rename {src/test => tests}/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.stderr (100%) rename {src/test => tests}/ui/debuginfo/debuginfo_with_uninhabitable_field_and_unsized.rs (100%) rename {src/test => tests}/ui/debuginfo/issue-105386-debuginfo-ub.rs (100%) rename {src/test => tests}/ui/debuginfo/late-bound-projection.rs (100%) rename {src/test => tests}/ui/deduplicate-diagnostics.deduplicate.stderr (100%) rename {src/test => tests}/ui/deduplicate-diagnostics.duplicate.stderr (100%) rename {src/test => tests}/ui/deduplicate-diagnostics.rs (100%) rename {src/test => tests}/ui/deep.rs (100%) rename {src/test => tests}/ui/default-method-parsing.rs (100%) rename {src/test => tests}/ui/default-method-simple.rs (100%) rename {src/test => tests}/ui/defaults-well-formedness.rs (100%) rename {src/test => tests}/ui/definition-reachable/auxiliary/field-method-macro.rs (100%) rename {src/test => tests}/ui/definition-reachable/auxiliary/nested-fn-macro.rs (100%) rename {src/test => tests}/ui/definition-reachable/auxiliary/private-use-macro.rs (100%) rename {src/test => tests}/ui/definition-reachable/field-method.rs (100%) rename {src/test => tests}/ui/definition-reachable/nested-fn.rs (100%) rename {src/test => tests}/ui/definition-reachable/private-non-types.rs (100%) rename {src/test => tests}/ui/definition-reachable/private-types.rs (100%) rename {src/test => tests}/ui/definition-reachable/private-use.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-assoc-type-codegen.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-assoc-type-codegen.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-caller-callee.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-caller-callee.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-check-attr.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-check-attr.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-struct-signature.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-struct-signature.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl-two-traits.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl-two-traits.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-trait-impl.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-type-alias.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-type-alias.stderr (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-variance-alias.rs (100%) rename {src/test => tests}/ui/dep-graph/dep-graph-variance-alias.stderr (100%) rename {src/test => tests}/ui/deprecation-in-force-unstable.rs (100%) rename {src/test => tests}/ui/deprecation/atomic_initializers.fixed (100%) rename {src/test => tests}/ui/deprecation/atomic_initializers.rs (100%) rename {src/test => tests}/ui/deprecation/atomic_initializers.stderr (100%) rename {src/test => tests}/ui/deprecation/auxiliary/deprecation-lint.rs (100%) rename {src/test => tests}/ui/deprecation/deprecated-macro_escape-inner.rs (100%) rename {src/test => tests}/ui/deprecation/deprecated-macro_escape-inner.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecated-macro_escape.rs (100%) rename {src/test => tests}/ui/deprecation/deprecated-macro_escape.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecated_no_stack_check.rs (100%) rename {src/test => tests}/ui/deprecation/deprecated_no_stack_check.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-in-future.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-in-future.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-2.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-2.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-3.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-3.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-nested.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint-nested.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-lint.stderr (100%) rename {src/test => tests}/ui/deprecation/deprecation-sanity.rs (100%) rename {src/test => tests}/ui/deprecation/deprecation-sanity.stderr (100%) rename {src/test => tests}/ui/deprecation/derive_on_deprecated.rs (100%) rename {src/test => tests}/ui/deprecation/derive_on_deprecated_forbidden.rs (100%) rename {src/test => tests}/ui/deprecation/feature-gate-deprecated_suggestion.rs (100%) rename {src/test => tests}/ui/deprecation/feature-gate-deprecated_suggestion.stderr (100%) rename {src/test => tests}/ui/deprecation/invalid-literal.rs (100%) rename {src/test => tests}/ui/deprecation/invalid-literal.stderr (100%) rename {src/test => tests}/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs (100%) rename {src/test => tests}/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.stderr (100%) rename {src/test => tests}/ui/deprecation/issue-84637-deprecated-associated-function.fixed (100%) rename {src/test => tests}/ui/deprecation/issue-84637-deprecated-associated-function.rs (100%) rename {src/test => tests}/ui/deprecation/issue-84637-deprecated-associated-function.stderr (100%) rename {src/test => tests}/ui/deprecation/staged-deprecation-in-future.rs (100%) rename {src/test => tests}/ui/deprecation/staged-deprecation-in-future.stderr (100%) rename {src/test => tests}/ui/deprecation/suggestion.fixed (100%) rename {src/test => tests}/ui/deprecation/suggestion.rs (100%) rename {src/test => tests}/ui/deprecation/suggestion.stderr (100%) rename {src/test => tests}/ui/deprecation/try-macro-suggestion.rs (100%) rename {src/test => tests}/ui/deprecation/try-macro-suggestion.stderr (100%) rename {src/test => tests}/ui/deref-non-pointer.rs (100%) rename {src/test => tests}/ui/deref-non-pointer.stderr (100%) rename {src/test => tests}/ui/deref-patterns/basic.rs (100%) rename {src/test => tests}/ui/deref-patterns/basic.run.stdout (100%) rename {src/test => tests}/ui/deref-patterns/default-infer.rs (100%) rename {src/test => tests}/ui/deref-patterns/gate.rs (100%) rename {src/test => tests}/ui/deref-patterns/gate.stderr (100%) rename {src/test => tests}/ui/deref-patterns/refs.rs (100%) rename {src/test => tests}/ui/deref-rc.rs (100%) rename {src/test => tests}/ui/deref.rs (100%) rename {src/test => tests}/ui/derive-uninhabited-enum-38885.rs (100%) rename {src/test => tests}/ui/derive-uninhabited-enum-38885.stderr (100%) rename {src/test => tests}/ui/derived-errors/issue-30580.rs (100%) rename {src/test => tests}/ui/derived-errors/issue-30580.stderr (100%) rename {src/test => tests}/ui/derived-errors/issue-31997-1.rs (100%) rename {src/test => tests}/ui/derived-errors/issue-31997-1.stderr (100%) rename {src/test => tests}/ui/derived-errors/issue-31997.rs (100%) rename {src/test => tests}/ui/derived-errors/issue-31997.stderr (100%) rename {src/test => tests}/ui/derives/auxiliary/derive-marker-tricky.rs (100%) rename {src/test => tests}/ui/derives/clone-debug-dead-code-in-the-same-struct.rs (100%) rename {src/test => tests}/ui/derives/clone-debug-dead-code-in-the-same-struct.stderr (100%) rename {src/test => tests}/ui/derives/clone-debug-dead-code.rs (100%) rename {src/test => tests}/ui/derives/clone-debug-dead-code.stderr (100%) rename {src/test => tests}/ui/derives/derive-Debug-use-ufcs-struct.rs (100%) rename {src/test => tests}/ui/derives/derive-Debug-use-ufcs-tuple.rs (100%) rename {src/test => tests}/ui/derives/derive-assoc-type-not-impl.rs (100%) rename {src/test => tests}/ui/derives/derive-assoc-type-not-impl.stderr (100%) rename {src/test => tests}/ui/derives/derive-deadlock.rs (100%) rename {src/test => tests}/ui/derives/derive-deadlock.stderr (100%) rename {src/test => tests}/ui/derives/derive-hygiene.rs (100%) rename {src/test => tests}/ui/derives/derive-macro-const-default.rs (100%) rename {src/test => tests}/ui/derives/derive-marker-tricky.rs (100%) rename {src/test => tests}/ui/derives/derive-multiple-with-packed.rs (100%) rename {src/test => tests}/ui/derives/derive-on-trait-item-or-impl-item.rs (100%) rename {src/test => tests}/ui/derives/derive-on-trait-item-or-impl-item.stderr (100%) rename {src/test => tests}/ui/derives/derive-partial-ord.rs (100%) rename {src/test => tests}/ui/derives/derive-renamed.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Clone-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Debug-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Default-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Default-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Default-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Default-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Eq-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Hash-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-Ord-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialEq-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-enum-struct-variant.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-enum-struct-variant.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-enum.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-enum.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-struct.stderr (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-tuple-struct.rs (100%) rename {src/test => tests}/ui/derives/derives-span-PartialOrd-tuple-struct.stderr (100%) rename {src/test => tests}/ui/derives/deriving-bounds.rs (100%) rename {src/test => tests}/ui/derives/deriving-bounds.stderr (100%) rename {src/test => tests}/ui/derives/deriving-copyclone.rs (100%) rename {src/test => tests}/ui/derives/deriving-copyclone.stderr (100%) rename {src/test => tests}/ui/derives/deriving-meta-empty-trait-list.rs (100%) rename {src/test => tests}/ui/derives/deriving-meta-unknown-trait.rs (100%) rename {src/test => tests}/ui/derives/deriving-meta-unknown-trait.stderr (100%) rename {src/test => tests}/ui/derives/deriving-no-inner-impl-error-message.rs (100%) rename {src/test => tests}/ui/derives/deriving-no-inner-impl-error-message.stderr (100%) rename {src/test => tests}/ui/derives/deriving-non-type.rs (100%) rename {src/test => tests}/ui/derives/deriving-non-type.stderr (100%) rename {src/test => tests}/ui/derives/deriving-primitive.rs (100%) rename {src/test => tests}/ui/derives/deriving-primitive.stderr (100%) rename {src/test => tests}/ui/derives/deriving-with-repr-packed.rs (100%) rename {src/test => tests}/ui/derives/deriving-with-repr-packed.stderr (100%) rename {src/test => tests}/ui/derives/issue-36617.rs (100%) rename {src/test => tests}/ui/derives/issue-36617.stderr (100%) rename {src/test => tests}/ui/derives/issue-43023.rs (100%) rename {src/test => tests}/ui/derives/issue-43023.stderr (100%) rename {src/test => tests}/ui/derives/issue-91492.rs (100%) rename {src/test => tests}/ui/derives/issue-91492.stderr (100%) rename {src/test => tests}/ui/derives/issue-91550.rs (100%) rename {src/test => tests}/ui/derives/issue-91550.stderr (100%) rename {src/test => tests}/ui/derives/issue-97343.rs (100%) rename {src/test => tests}/ui/derives/issue-97343.stderr (100%) rename {src/test => tests}/ui/deriving/auxiliary/derive-no-std.rs (100%) rename {src/test => tests}/ui/deriving/derive-no-std.rs (100%) rename {src/test => tests}/ui/deriving/derive-partialord-correctness.rs (100%) rename {src/test => tests}/ui/deriving/deriving-all-codegen.rs (100%) rename {src/test => tests}/ui/deriving/deriving-all-codegen.stdout (100%) rename {src/test => tests}/ui/deriving/deriving-associated-types.rs (100%) rename {src/test => tests}/ui/deriving/deriving-bounds.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-array.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-generic-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-generic-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-generic-tuple-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-clone-tuple-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-cmp-generic-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-cmp-generic-struct-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-cmp-generic-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-cmp-generic-tuple-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-cmp-shortcircuit.rs (100%) rename {src/test => tests}/ui/deriving/deriving-copyclone.rs (100%) rename {src/test => tests}/ui/deriving/deriving-default-box.rs (100%) rename {src/test => tests}/ui/deriving/deriving-default-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-enum-single-variant.rs (100%) rename {src/test => tests}/ui/deriving/deriving-eq-ord-boxed-slice.rs (100%) rename {src/test => tests}/ui/deriving/deriving-hash.rs (100%) rename {src/test => tests}/ui/deriving/deriving-in-fn.rs (100%) rename {src/test => tests}/ui/deriving/deriving-in-macro.rs (100%) rename {src/test => tests}/ui/deriving/deriving-meta-multiple.rs (100%) rename {src/test => tests}/ui/deriving/deriving-meta.rs (100%) rename {src/test => tests}/ui/deriving/deriving-self-lifetime-totalord-totaleq.rs (100%) rename {src/test => tests}/ui/deriving/deriving-show-2.rs (100%) rename {src/test => tests}/ui/deriving/deriving-show.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-c-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-hash-enum.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-hash-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-struct-empty.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-struct-like-enum-variant.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-struct-tuple.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-struct.rs (100%) rename {src/test => tests}/ui/deriving/deriving-via-extension-type-params.rs (100%) rename {src/test => tests}/ui/deriving/deriving-with-helper.rs (100%) rename {src/test => tests}/ui/deriving/deriving-with-repr-packed.rs (100%) rename {src/test => tests}/ui/deriving/issue-103157.rs (100%) rename {src/test => tests}/ui/deriving/issue-103157.stderr (100%) rename {src/test => tests}/ui/deriving/issue-105101.rs (100%) rename {src/test => tests}/ui/deriving/issue-105101.stderr (100%) rename {src/test => tests}/ui/deriving/issue-19358.rs (100%) rename {src/test => tests}/ui/deriving/issue-3935.rs (100%) rename {src/test => tests}/ui/deriving/issue-58319.rs (100%) rename {src/test => tests}/ui/deriving/issue-6341.rs (100%) rename {src/test => tests}/ui/deriving/issue-89188-gat-hrtb.rs (100%) rename {src/test => tests}/ui/dest-prop/skeptic-miscompile.rs (100%) rename {src/test => tests}/ui/destructure-trait-ref.rs (100%) rename {src/test => tests}/ui/destructure-trait-ref.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/bad-expr-lhs.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/bad-expr-lhs.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/default-match-bindings-forbidden.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/default-match-bindings-forbidden.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/drop-order.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/nested_destructure.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/note-unsupported.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/note-unsupported.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/slice_destructure.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/slice_destructure_fail.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/slice_destructure_fail.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/struct-or-enum-variant-path.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/struct_destructure.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/struct_destructure_fail.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/struct_destructure_fail.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_destructure.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_destructure_fail.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_destructure_fail.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_struct_destructure.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_struct_destructure_fail.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr (100%) rename {src/test => tests}/ui/destructuring-assignment/warn-unused-duplication.rs (100%) rename {src/test => tests}/ui/destructuring-assignment/warn-unused-duplication.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/flag-human.rs (100%) rename {src/test => tests}/ui/diagnostic-width/flag-human.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/flag-json.rs (100%) rename {src/test => tests}/ui/diagnostic-width/flag-json.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/long-E0308.rs (100%) rename {src/test => tests}/ui/diagnostic-width/long-E0308.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs (100%) rename {src/test => tests}/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming-2.rs (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming-2.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming-unicode.rs (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming.rs (100%) rename {src/test => tests}/ui/diagnostic-width/non-whitespace-trimming.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/tabs-trimming.rs (100%) rename {src/test => tests}/ui/diagnostic-width/tabs-trimming.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/whitespace-trimming-2.rs (100%) rename {src/test => tests}/ui/diagnostic-width/whitespace-trimming-2.stderr (100%) rename {src/test => tests}/ui/diagnostic-width/whitespace-trimming.rs (100%) rename {src/test => tests}/ui/diagnostic-width/whitespace-trimming.stderr (100%) rename {src/test => tests}/ui/did_you_mean/E0178.rs (100%) rename {src/test => tests}/ui/did_you_mean/E0178.stderr (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-expr.rs (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-expr.stderr (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-pat.rs (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-pat.stderr (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-ty.rs (100%) rename {src/test => tests}/ui/did_you_mean/bad-assoc-ty.stderr (100%) rename {src/test => tests}/ui/did_you_mean/brackets-to-braces-single-element.rs (100%) rename {src/test => tests}/ui/did_you_mean/brackets-to-braces-single-element.stderr (100%) rename {src/test => tests}/ui/did_you_mean/compatible-variants-in-pat.rs (100%) rename {src/test => tests}/ui/did_you_mean/compatible-variants-in-pat.stderr (100%) rename {src/test => tests}/ui/did_you_mean/compatible-variants.rs (100%) rename {src/test => tests}/ui/did_you_mean/compatible-variants.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-103909.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-103909.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-31424.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-31424.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-34126.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-34126.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-34337.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-34337.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-35937.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-35937.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-36798.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-36798.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-36798_unknown_field.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-36798_unknown_field.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-37139.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-37139.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-1.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-1.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-2.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-2.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-3.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-3.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-4.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-38147-4.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-39544.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-39544.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-39802-show-5-trait-impls.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-40006.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-40006.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-40396.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-40396.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-40823.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-40823.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.fixed (100%) rename {src/test => tests}/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-42599_available_fields_note.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-42599_available_fields_note.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-42764.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-42764.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-43871-enum-instead-of-variant.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-54109-without-witness.fixed (100%) rename {src/test => tests}/ui/did_you_mean/issue-54109-without-witness.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-54109-without-witness.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr (100%) rename {src/test => tests}/ui/did_you_mean/issue-93210-ignore-doc-hidden.rs (100%) rename {src/test => tests}/ui/did_you_mean/issue-93210-ignore-doc-hidden.stderr (100%) rename {src/test => tests}/ui/did_you_mean/pub-macro-rules.rs (100%) rename {src/test => tests}/ui/did_you_mean/pub-macro-rules.stderr (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit.rs (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit.stderr (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit_deref.rs (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit_deref.stderr (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit_macro.rs (100%) rename {src/test => tests}/ui/did_you_mean/recursion_limit_macro.stderr (100%) rename {src/test => tests}/ui/did_you_mean/replace-impl-infer-ty-from-trait.fixed (100%) rename {src/test => tests}/ui/did_you_mean/replace-impl-infer-ty-from-trait.rs (100%) rename {src/test => tests}/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr (100%) rename {src/test => tests}/ui/did_you_mean/trait-object-reference-without-parens-suggestion.rs (100%) rename {src/test => tests}/ui/did_you_mean/trait-object-reference-without-parens-suggestion.stderr (100%) rename {src/test => tests}/ui/did_you_mean/use_instead_of_import.fixed (100%) rename {src/test => tests}/ui/did_you_mean/use_instead_of_import.rs (100%) rename {src/test => tests}/ui/did_you_mean/use_instead_of_import.stderr (100%) rename {src/test => tests}/ui/directory_ownership/foo/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/directory_ownership/foo/mod_file_not_owning/aux2.rs (100%) rename {src/test => tests}/ui/directory_ownership/foo/mod_file_not_owning_aux2.rs (100%) rename {src/test => tests}/ui/directory_ownership/macro-expanded-mod.rs (100%) rename {src/test => tests}/ui/directory_ownership/macro-expanded-mod.stderr (100%) rename {src/test => tests}/ui/directory_ownership/macro_expanded_mod_helper/foo/bar.rs (100%) rename {src/test => tests}/ui/directory_ownership/macro_expanded_mod_helper/foo/mod.rs (100%) rename {src/test => tests}/ui/directory_ownership/mod_file_not_owning_aux1.rs (100%) rename {src/test => tests}/ui/directory_ownership/mod_file_not_owning_aux1/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/directory_ownership/mod_file_not_owning_aux1/mod_file_not_owning_aux2.rs (100%) rename {src/test => tests}/ui/directory_ownership/mod_file_not_owning_aux2.rs (100%) rename {src/test => tests}/ui/directory_ownership/mod_file_not_owning_aux3.rs (100%) rename {src/test => tests}/ui/directory_ownership/non-inline-mod-restriction.rs (100%) rename {src/test => tests}/ui/directory_ownership/non-inline-mod-restriction.stderr (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.fixed (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.rs (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.stderr (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.fixed (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.rs (100%) rename {src/test => tests}/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.stderr (100%) rename {src/test => tests}/ui/disambiguate-identical-names.rs (100%) rename {src/test => tests}/ui/disambiguate-identical-names.stderr (100%) rename {src/test => tests}/ui/discrim/discrim-ill-typed.rs (100%) rename {src/test => tests}/ui/discrim/discrim-ill-typed.stderr (100%) rename {src/test => tests}/ui/discrim/discrim-overflow-2.rs (100%) rename {src/test => tests}/ui/discrim/discrim-overflow-2.stderr (100%) rename {src/test => tests}/ui/discrim/discrim-overflow.rs (100%) rename {src/test => tests}/ui/discrim/discrim-overflow.stderr (100%) rename {src/test => tests}/ui/diverging-fallback-method-chain.rs (100%) rename {src/test => tests}/ui/diverging-fallback-option.rs (100%) rename {src/test => tests}/ui/diverging-fn-tail-35849.rs (100%) rename {src/test => tests}/ui/diverging-fn-tail-35849.stderr (100%) rename {src/test => tests}/ui/does-nothing.rs (100%) rename {src/test => tests}/ui/does-nothing.stderr (100%) rename {src/test => tests}/ui/dollar-crate/dollar-crate-is-keyword-2.rs (100%) rename {src/test => tests}/ui/dollar-crate/dollar-crate-is-keyword-2.stderr (100%) rename {src/test => tests}/ui/dollar-crate/dollar-crate-is-keyword.rs (100%) rename {src/test => tests}/ui/dollar-crate/dollar-crate-is-keyword.stderr (100%) rename {src/test => tests}/ui/dont-suggest-private-trait-method.rs (100%) rename {src/test => tests}/ui/dont-suggest-private-trait-method.stderr (100%) rename {src/test => tests}/ui/double-ref.rs (100%) rename {src/test => tests}/ui/double-type-import.rs (100%) rename {src/test => tests}/ui/double-type-import.stderr (100%) rename {src/test => tests}/ui/drop-bounds/drop-bounds-impl-drop.rs (100%) rename {src/test => tests}/ui/drop-bounds/drop-bounds.rs (100%) rename {src/test => tests}/ui/drop-bounds/drop-bounds.stderr (100%) rename {src/test => tests}/ui/drop/auxiliary/dropck_eyepatch_extern_crate.rs (100%) rename {src/test => tests}/ui/drop/auxiliary/inline_dtor.rs (100%) rename {src/test => tests}/ui/drop/auxiliary/issue-10028.rs (100%) rename {src/test => tests}/ui/drop/drop-foreign-fundamental.rs (100%) rename {src/test => tests}/ui/drop/drop-foreign-fundamental.stderr (100%) rename {src/test => tests}/ui/drop/drop-if-let-binding.rs (100%) rename {src/test => tests}/ui/drop/drop-on-empty-block-exit.rs (100%) rename {src/test => tests}/ui/drop/drop-on-ret.rs (100%) rename {src/test => tests}/ui/drop/drop-struct-as-object.rs (100%) rename {src/test => tests}/ui/drop/drop-trait-enum.rs (100%) rename {src/test => tests}/ui/drop/drop-trait-generic.rs (100%) rename {src/test => tests}/ui/drop/drop-trait.rs (100%) rename {src/test => tests}/ui/drop/drop-uninhabited-enum.rs (100%) rename {src/test => tests}/ui/drop/drop-with-type-ascription-1.rs (100%) rename {src/test => tests}/ui/drop/drop-with-type-ascription-2.rs (100%) rename {src/test => tests}/ui/drop/drop_order.rs (100%) rename {src/test => tests}/ui/drop/dropck-eyepatch-extern-crate.rs (100%) rename {src/test => tests}/ui/drop/dropck-eyepatch-reorder.rs (100%) rename {src/test => tests}/ui/drop/dropck-eyepatch.rs (100%) rename {src/test => tests}/ui/drop/dropck_legal_cycles.rs (100%) rename {src/test => tests}/ui/drop/dynamic-drop-async.rs (100%) rename {src/test => tests}/ui/drop/dynamic-drop.rs (100%) rename {src/test => tests}/ui/drop/issue-100276.rs (100%) rename {src/test => tests}/ui/drop/issue-10028.rs (100%) rename {src/test => tests}/ui/drop/issue-103107.rs (100%) rename {src/test => tests}/ui/drop/issue-17718-const-destructors.rs (100%) rename {src/test => tests}/ui/drop/issue-21486.rs (100%) rename {src/test => tests}/ui/drop/issue-23338-ensure-param-drop-order.rs (100%) rename {src/test => tests}/ui/drop/issue-2734.rs (100%) rename {src/test => tests}/ui/drop/issue-30018-nopanic.rs (100%) rename {src/test => tests}/ui/drop/issue-35546.rs (100%) rename {src/test => tests}/ui/drop/issue-48962.rs (100%) rename {src/test => tests}/ui/drop/issue-90752-raw-ptr-shenanigans.rs (100%) rename {src/test => tests}/ui/drop/issue-90752.rs (100%) rename {src/test => tests}/ui/drop/no-drop-flag-size.rs (100%) rename {src/test => tests}/ui/drop/nondrop-cycle.rs (100%) rename {src/test => tests}/ui/drop/repeat-drop-2.rs (100%) rename {src/test => tests}/ui/drop/repeat-drop-2.stderr (100%) rename {src/test => tests}/ui/drop/repeat-drop.rs (100%) rename {src/test => tests}/ui/drop/terminate-in-initializer.rs (100%) rename {src/test => tests}/ui/drop/use_inline_dtor.rs (100%) rename {src/test => tests}/ui/dropck/auxiliary/dropck_eyepatch_extern_crate.rs (100%) rename {src/test => tests}/ui/dropck/cleanup-arm-conditional.rs (100%) rename {src/test => tests}/ui/dropck/drop-on-non-struct.rs (100%) rename {src/test => tests}/ui/dropck/drop-on-non-struct.stderr (100%) rename {src/test => tests}/ui/dropck/drop-with-active-borrows-1.rs (100%) rename {src/test => tests}/ui/dropck/drop-with-active-borrows-1.stderr (100%) rename {src/test => tests}/ui/dropck/drop-with-active-borrows-2.rs (100%) rename {src/test => tests}/ui/dropck/drop-with-active-borrows-2.stderr (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-extern-crate.rs (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-extern-crate.stderr (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-implies-unsafe-impl.rs (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-implies-unsafe-impl.stderr (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-reorder.rs (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch-reorder.stderr (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch.rs (100%) rename {src/test => tests}/ui/dropck/dropck-eyepatch.stderr (100%) rename {src/test => tests}/ui/dropck/dropck-union.rs (100%) rename {src/test => tests}/ui/dropck/dropck-union.stderr (100%) rename {src/test => tests}/ui/dropck/dropck_fn_type.rs (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_1.rs (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_1.stderr (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_2.rs (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_2.stderr (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_3.rs (100%) rename {src/test => tests}/ui/dropck/dropck_no_diverge_on_nonregular_3.stderr (100%) rename {src/test => tests}/ui/dropck/dropck_trait_cycle_checked.rs (100%) rename {src/test => tests}/ui/dropck/dropck_trait_cycle_checked.stderr (100%) rename {src/test => tests}/ui/dropck/dropck_traits.rs (100%) rename {src/test => tests}/ui/dropck/issue-24805-dropck-itemless.rs (100%) rename {src/test => tests}/ui/dropck/issue-28498-ugeh-with-lifetime-param.rs (100%) rename {src/test => tests}/ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs (100%) rename {src/test => tests}/ui/dropck/issue-28498-ugeh-with-trait-bound.rs (100%) rename {src/test => tests}/ui/dropck/issue-29844.rs (100%) rename {src/test => tests}/ui/dropck/issue-34053.rs (100%) rename {src/test => tests}/ui/dropck/issue-38868.rs (100%) rename {src/test => tests}/ui/dropck/issue-38868.stderr (100%) rename {src/test => tests}/ui/dropck/issue-54943-1.rs (100%) rename {src/test => tests}/ui/dropck/issue-54943-2.rs (100%) rename {src/test => tests}/ui/dropck/reject-specialized-drops-8142.rs (100%) rename {src/test => tests}/ui/dropck/reject-specialized-drops-8142.stderr (100%) rename {src/test => tests}/ui/dropck/relate_lt_in_type_outlives_bound.rs (100%) rename {src/test => tests}/ui/dropck/relate_lt_in_type_outlives_bound.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-assign-2.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-assign-2.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-assign-3.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-assign-3.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-assign.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-assign.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce1.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce1.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce2.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce2.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce3.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce3.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce4.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-coerce4.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-coercions.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-coercions.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-deep-2.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-deep-2.stderr (100%) rename {src/test => tests}/ui/dst/dst-bad-deep.rs (100%) rename {src/test => tests}/ui/dst/dst-bad-deep.stderr (100%) rename {src/test => tests}/ui/dst/dst-index.rs (100%) rename {src/test => tests}/ui/dst/dst-index.stderr (100%) rename {src/test => tests}/ui/dst/dst-object-from-unsized-type.rs (100%) rename {src/test => tests}/ui/dst/dst-object-from-unsized-type.stderr (100%) rename {src/test => tests}/ui/dst/dst-rvalue.rs (100%) rename {src/test => tests}/ui/dst/dst-rvalue.stderr (100%) rename {src/test => tests}/ui/dst/dst-sized-trait-param.rs (100%) rename {src/test => tests}/ui/dst/dst-sized-trait-param.stderr (100%) rename {src/test => tests}/ui/dupe-first-attr.rc (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-1.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-1.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-2.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-2.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-3.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-3.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-4.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-4.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-5.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-5.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-6.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-6.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-7.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-7.stderr (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-8.rs (100%) rename {src/test => tests}/ui/duplicate/dupe-symbols-8.stderr (100%) rename {src/test => tests}/ui/duplicate/duplicate-check-macro-exports.rs (100%) rename {src/test => tests}/ui/duplicate/duplicate-check-macro-exports.stderr (100%) rename {src/test => tests}/ui/duplicate/duplicate-parameter.rs (100%) rename {src/test => tests}/ui/duplicate/duplicate-parameter.stderr (100%) rename {src/test => tests}/ui/duplicate/duplicate-type-parameter.rs (100%) rename {src/test => tests}/ui/duplicate/duplicate-type-parameter.stderr (100%) rename {src/test => tests}/ui/duplicate_entry_error.rs (100%) rename {src/test => tests}/ui/duplicate_entry_error.stderr (100%) rename {src/test => tests}/ui/dyn-drop/dyn-drop.rs (100%) rename {src/test => tests}/ui/dyn-drop/dyn-drop.stderr (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.fixed (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.stderr (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-idents-in-decl-macros-unlinted.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-idents-in-macros-unlinted.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2018-edition-lint.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2018-edition-lint.stderr (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2021-edition-error.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-2021-edition-error.stderr (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-angle-brackets.fixed (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-angle-brackets.rs (100%) rename {src/test => tests}/ui/dyn-keyword/dyn-angle-brackets.stderr (100%) rename {src/test => tests}/ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs (100%) rename {src/test => tests}/ui/dyn-star/align.normal.stderr (100%) rename {src/test => tests}/ui/dyn-star/align.over_aligned.stderr (100%) rename {src/test => tests}/ui/dyn-star/align.rs (100%) rename {src/test => tests}/ui/dyn-star/auxiliary/dyn-star-foreign.rs (100%) rename {src/test => tests}/ui/dyn-star/box.rs (100%) rename {src/test => tests}/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs (100%) rename {src/test => tests}/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr (100%) rename {src/test => tests}/ui/dyn-star/check-size-at-cast-polymorphic.rs (100%) rename {src/test => tests}/ui/dyn-star/check-size-at-cast.rs (100%) rename {src/test => tests}/ui/dyn-star/check-size-at-cast.stderr (100%) rename {src/test => tests}/ui/dyn-star/const.rs (100%) rename {src/test => tests}/ui/dyn-star/dispatch-on-pin-mut.rs (100%) rename {src/test => tests}/ui/dyn-star/dispatch-on-pin-mut.run.stdout (100%) rename {src/test => tests}/ui/dyn-star/dispatch-on-pin-mut.stderr (100%) rename {src/test => tests}/ui/dyn-star/dont-unsize-coerce-dyn-star.rs (100%) rename {src/test => tests}/ui/dyn-star/dont-unsize-coerce-dyn-star.run.stdout (100%) rename {src/test => tests}/ui/dyn-star/dont-unsize-coerce-dyn-star.stderr (100%) rename {src/test => tests}/ui/dyn-star/drop.rs (100%) rename {src/test => tests}/ui/dyn-star/drop.run.stdout (100%) rename {src/test => tests}/ui/dyn-star/dyn-async-trait.rs (100%) rename {src/test => tests}/ui/dyn-star/dyn-to-rigid.rs (100%) rename {src/test => tests}/ui/dyn-star/dyn-to-rigid.stderr (100%) rename {src/test => tests}/ui/dyn-star/error.rs (100%) rename {src/test => tests}/ui/dyn-star/error.stderr (100%) rename {src/test => tests}/ui/dyn-star/feature-gate-dyn_star.rs (100%) rename {src/test => tests}/ui/dyn-star/feature-gate-dyn_star.stderr (100%) rename {src/test => tests}/ui/dyn-star/issue-102430.rs (100%) rename {src/test => tests}/ui/dyn-star/make-dyn-star.rs (100%) rename {src/test => tests}/ui/dyn-star/method.rs (100%) rename {src/test => tests}/ui/dyn-star/no-explicit-dyn-star-cast.rs (100%) rename {src/test => tests}/ui/dyn-star/no-explicit-dyn-star-cast.stderr (100%) rename {src/test => tests}/ui/dyn-star/no-explicit-dyn-star.rs (100%) rename {src/test => tests}/ui/dyn-star/no-explicit-dyn-star.stderr (100%) rename {src/test => tests}/ui/dyn-star/no-implicit-dyn-star.rs (100%) rename {src/test => tests}/ui/dyn-star/no-implicit-dyn-star.stderr (100%) rename {src/test => tests}/ui/dyn-star/no-unsize-coerce-dyn-trait.rs (100%) rename {src/test => tests}/ui/dyn-star/no-unsize-coerce-dyn-trait.stderr (100%) rename {src/test => tests}/ui/dyn-star/return.rs (100%) rename {src/test => tests}/ui/dyn-star/return.stderr (100%) rename {src/test => tests}/ui/dyn-star/syntax.rs (100%) rename {src/test => tests}/ui/dyn-star/unsize-into-ref-dyn-star.rs (100%) rename {src/test => tests}/ui/dyn-star/unsize-into-ref-dyn-star.stderr (100%) rename {src/test => tests}/ui/dyn-star/upcast.rs (100%) rename {src/test => tests}/ui/dyn-star/upcast.stderr (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-coerce-custom.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-coerce-rc.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-coercions.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-deref-mut.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-deref.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-field-align.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-index.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-irrefutable-bind.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-raw.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-struct-sole.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-struct.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-trait-tuple.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-trait.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-tuple-no-reorder.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-tuple-sole.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs (100%) rename {src/test => tests}/ui/dynamically-sized-types/dst-tuple.rs (100%) rename {src/test => tests}/ui/early-ret-binop-add.rs (100%) rename {src/test => tests}/ui/editions/async-block-2015.rs (100%) rename {src/test => tests}/ui/editions/async-block-2015.stderr (100%) rename {src/test => tests}/ui/editions/auxiliary/absolute.rs (100%) rename {src/test => tests}/ui/editions/auxiliary/edition-extern-crate-allowed.rs (100%) rename {src/test => tests}/ui/editions/auxiliary/edition-imports-2015.rs (100%) rename {src/test => tests}/ui/editions/auxiliary/edition-imports-2018.rs (100%) rename {src/test => tests}/ui/editions/auxiliary/edition-kw-macro-2015.rs (100%) rename {src/test => tests}/ui/editions/auxiliary/edition-kw-macro-2018.rs (100%) rename {src/test => tests}/ui/editions/dyn-trait-sugg-2021.rs (100%) rename {src/test => tests}/ui/editions/dyn-trait-sugg-2021.stderr (100%) rename {src/test => tests}/ui/editions/edition-extern-crate-allowed.rs (100%) rename {src/test => tests}/ui/editions/edition-extern-crate-allowed.stderr (100%) rename {src/test => tests}/ui/editions/edition-feature-ok.rs (100%) rename {src/test => tests}/ui/editions/edition-feature-redundant.rs (100%) rename {src/test => tests}/ui/editions/edition-feature-redundant.stderr (100%) rename {src/test => tests}/ui/editions/edition-imports-2015.rs (100%) rename {src/test => tests}/ui/editions/edition-imports-2015.stderr (100%) rename {src/test => tests}/ui/editions/edition-imports-2018.rs (100%) rename {src/test => tests}/ui/editions/edition-imports-2018.stderr (100%) rename {src/test => tests}/ui/editions/edition-imports-virtual-2015-ambiguity.rs (100%) rename {src/test => tests}/ui/editions/edition-imports-virtual-2015-gated.rs (100%) rename {src/test => tests}/ui/editions/edition-imports-virtual-2015-gated.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2015-expansion.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2015-parsing.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2015-parsing.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2015.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2018-expansion.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2018-expansion.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2018-parsing.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2018-parsing.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2015-2018.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2015-expansion.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2015-parsing.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2015-parsing.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2015.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2018-expansion.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2018-expansion.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2018-parsing.rs (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2018-parsing.stderr (100%) rename {src/test => tests}/ui/editions/edition-keywords-2018-2018.rs (100%) rename {src/test => tests}/ui/editions/edition-raw-pointer-method-2015.rs (100%) rename {src/test => tests}/ui/editions/edition-raw-pointer-method-2015.stderr (100%) rename {src/test => tests}/ui/editions/edition-raw-pointer-method-2018.rs (100%) rename {src/test => tests}/ui/editions/edition-raw-pointer-method-2018.stderr (100%) rename {src/test => tests}/ui/editions/epoch-gate-feature.rs (100%) rename {src/test => tests}/ui/elide-errors-on-mismatched-tuple.rs (100%) rename {src/test => tests}/ui/elide-errors-on-mismatched-tuple.stderr (100%) rename {src/test => tests}/ui/elided-test.rs (100%) rename {src/test => tests}/ui/elided-test.stderr (100%) rename {src/test => tests}/ui/else-if.rs (100%) rename {src/test => tests}/ui/empty-allocation-non-null.rs (100%) rename {src/test => tests}/ui/empty-allocation-rvalue-non-null.rs (100%) rename {src/test => tests}/ui/empty-type-parameter-list.rs (100%) rename {src/test => tests}/ui/empty/auxiliary/empty-struct.rs (100%) rename {src/test => tests}/ui/empty/auxiliary/two_macros.rs (100%) rename {src/test => tests}/ui/empty/empty-attributes.rs (100%) rename {src/test => tests}/ui/empty/empty-attributes.stderr (100%) rename {src/test => tests}/ui/empty/empty-comment.rs (100%) rename {src/test => tests}/ui/empty/empty-comment.stderr (100%) rename {src/test => tests}/ui/empty/empty-linkname.rs (100%) rename {src/test => tests}/ui/empty/empty-linkname.stderr (100%) rename {src/test => tests}/ui/empty/empty-macro-use.rs (100%) rename {src/test => tests}/ui/empty/empty-macro-use.stderr (100%) rename {src/test => tests}/ui/empty/empty-never-array.rs (100%) rename {src/test => tests}/ui/empty/empty-never-array.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-expr.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-expr.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-1.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-1.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-2.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-2.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-3.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-braces-pat-3.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-tuple-pat.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-tuple-pat.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-unit-expr.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-unit-expr.stderr (100%) rename {src/test => tests}/ui/empty/empty-struct-unit-pat.rs (100%) rename {src/test => tests}/ui/empty/empty-struct-unit-pat.stderr (100%) rename {src/test => tests}/ui/empty/issue-37026.rs (100%) rename {src/test => tests}/ui/empty/issue-37026.stderr (100%) rename {src/test => tests}/ui/empty/no-link.rs (100%) rename {src/test => tests}/ui/empty_global_asm.rs (100%) rename {src/test => tests}/ui/entry-point/auxiliary/main_functions.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_conflict.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_conflict.stderr (100%) rename {src/test => tests}/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr (100%) rename {src/test => tests}/ui/entry-point/imported_main_const_forbidden.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_const_forbidden.stderr (100%) rename {src/test => tests}/ui/entry-point/imported_main_from_extern_crate.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_from_inner_mod.rs (100%) rename {src/test => tests}/ui/entry-point/imported_main_unused_not_trigger_feature_gate.rs (100%) rename {src/test => tests}/ui/enum-discriminant/actually_not_an_enum-discriminant.rs (100%) rename {src/test => tests}/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs (100%) rename {src/test => tests}/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/arbitrary_enum_discriminant.rs (100%) rename {src/test => tests}/ui/enum-discriminant/discriminant_size.rs (100%) rename {src/test => tests}/ui/enum-discriminant/discriminant_size.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/discriminant_value-wrapper.rs (100%) rename {src/test => tests}/ui/enum-discriminant/discriminant_value.rs (100%) rename {src/test => tests}/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs (100%) rename {src/test => tests}/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/get_discr.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-104519.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-43398.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-43398.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-46519.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-51582.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70509-partial_eq.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-70509-partial_eq.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-72554.rs (100%) rename {src/test => tests}/ui/enum-discriminant/issue-72554.stderr (100%) rename {src/test => tests}/ui/enum-discriminant/issue-90038.rs (100%) rename {src/test => tests}/ui/enum-discriminant/niche-prefer-zero.rs (100%) rename {src/test => tests}/ui/enum-discriminant/niche.rs (100%) rename {src/test => tests}/ui/enum-discriminant/repr128.rs (100%) rename {src/test => tests}/ui/enum-discriminant/repr128.stderr (100%) rename {src/test => tests}/ui/enum/enum-and-module-in-same-scope.rs (100%) rename {src/test => tests}/ui/enum/enum-and-module-in-same-scope.stderr (100%) rename {src/test => tests}/ui/enum/enum-discrim-autosizing.rs (100%) rename {src/test => tests}/ui/enum/enum-discrim-autosizing.stderr (100%) rename {src/test => tests}/ui/enum/enum-discrim-too-small.rs (100%) rename {src/test => tests}/ui/enum/enum-discrim-too-small.stderr (100%) rename {src/test => tests}/ui/enum/enum-discrim-too-small2.rs (100%) rename {src/test => tests}/ui/enum/enum-discrim-too-small2.stderr (100%) rename {src/test => tests}/ui/enum/enum-in-scope.rs (100%) rename {src/test => tests}/ui/enum/enum-in-scope.stderr (100%) rename {src/test => tests}/ui/enum/enum-size-variance.rs (100%) rename {src/test => tests}/ui/enum/enum-size-variance.stderr (100%) rename {src/test => tests}/ui/enum/enum-to-float-cast-2.rs (100%) rename {src/test => tests}/ui/enum/enum-to-float-cast-2.stderr (100%) rename {src/test => tests}/ui/enum/enum-to-float-cast.rs (100%) rename {src/test => tests}/ui/enum/enum-to-float-cast.stderr (100%) rename {src/test => tests}/ui/enum/enum-variant-type-2.rs (100%) rename {src/test => tests}/ui/enum/enum-variant-type-2.stderr (100%) rename {src/test => tests}/ui/enum/issue-42747.rs (100%) rename {src/test => tests}/ui/enum/issue-67945-1.rs (100%) rename {src/test => tests}/ui/enum/issue-67945-1.stderr (100%) rename {src/test => tests}/ui/enum/issue-67945-2.rs (100%) rename {src/test => tests}/ui/enum/issue-67945-2.stderr (100%) rename {src/test => tests}/ui/enum/nested-enum.rs (100%) rename {src/test => tests}/ui/enum/nested-enum.stderr (100%) rename {src/test => tests}/ui/enum/suggest-default-attribute.rs (100%) rename {src/test => tests}/ui/enum/suggest-default-attribute.stderr (100%) rename {src/test => tests}/ui/enum/union-in-enum.rs (100%) rename {src/test => tests}/ui/env-args-reverse-iterator.rs (100%) rename {src/test => tests}/ui/env-funky-keys.rs (100%) rename {src/test => tests}/ui/env-null-vars.rs (100%) rename {src/test => tests}/ui/env-vars.rs (100%) rename {src/test => tests}/ui/error-codes/E0001.rs (100%) rename {src/test => tests}/ui/error-codes/E0001.stderr (100%) rename {src/test => tests}/ui/error-codes/E0004-2.rs (100%) rename {src/test => tests}/ui/error-codes/E0004-2.stderr (100%) rename {src/test => tests}/ui/error-codes/E0004.rs (100%) rename {src/test => tests}/ui/error-codes/E0004.stderr (100%) rename {src/test => tests}/ui/error-codes/E0005.rs (100%) rename {src/test => tests}/ui/error-codes/E0005.stderr (100%) rename {src/test => tests}/ui/error-codes/E0010-teach.rs (100%) rename {src/test => tests}/ui/error-codes/E0010-teach.stderr (100%) rename {src/test => tests}/ui/error-codes/E0010.rs (100%) rename {src/test => tests}/ui/error-codes/E0010.stderr (100%) rename {src/test => tests}/ui/error-codes/E0013.rs (100%) rename {src/test => tests}/ui/error-codes/E0013.stderr (100%) rename {src/test => tests}/ui/error-codes/E0015.rs (100%) rename {src/test => tests}/ui/error-codes/E0015.stderr (100%) rename {src/test => tests}/ui/error-codes/E0017.rs (100%) rename {src/test => tests}/ui/error-codes/E0017.stderr (100%) rename {src/test => tests}/ui/error-codes/E0023.rs (100%) rename {src/test => tests}/ui/error-codes/E0023.stderr (100%) rename {src/test => tests}/ui/error-codes/E0025.rs (100%) rename {src/test => tests}/ui/error-codes/E0025.stderr (100%) rename {src/test => tests}/ui/error-codes/E0026-teach.rs (100%) rename {src/test => tests}/ui/error-codes/E0026-teach.stderr (100%) rename {src/test => tests}/ui/error-codes/E0026.rs (100%) rename {src/test => tests}/ui/error-codes/E0026.stderr (100%) rename {src/test => tests}/ui/error-codes/E0027.rs (100%) rename {src/test => tests}/ui/error-codes/E0027.stderr (100%) rename {src/test => tests}/ui/error-codes/E0029-teach.rs (100%) rename {src/test => tests}/ui/error-codes/E0029-teach.stderr (100%) rename {src/test => tests}/ui/error-codes/E0029.rs (100%) rename {src/test => tests}/ui/error-codes/E0029.stderr (100%) rename {src/test => tests}/ui/error-codes/E0030-teach.rs (100%) rename {src/test => tests}/ui/error-codes/E0030-teach.stderr (100%) rename {src/test => tests}/ui/error-codes/E0030.rs (100%) rename {src/test => tests}/ui/error-codes/E0030.stderr (100%) rename {src/test => tests}/ui/error-codes/E0033-teach.rs (100%) rename {src/test => tests}/ui/error-codes/E0033-teach.stderr (100%) rename {src/test => tests}/ui/error-codes/E0033.rs (100%) rename {src/test => tests}/ui/error-codes/E0033.stderr (100%) rename {src/test => tests}/ui/error-codes/E0034.rs (100%) rename {src/test => tests}/ui/error-codes/E0034.stderr (100%) rename {src/test => tests}/ui/error-codes/E0038.rs (100%) rename {src/test => tests}/ui/error-codes/E0038.stderr (100%) rename {src/test => tests}/ui/error-codes/E0040.fixed (100%) rename {src/test => tests}/ui/error-codes/E0040.rs (100%) rename {src/test => tests}/ui/error-codes/E0040.stderr (100%) rename {src/test => tests}/ui/error-codes/E0044.rs (100%) rename {src/test => tests}/ui/error-codes/E0044.stderr (100%) rename {src/test => tests}/ui/error-codes/E0045.rs (100%) rename {src/test => tests}/ui/error-codes/E0045.stderr (100%) rename {src/test => tests}/ui/error-codes/E0049.rs (100%) rename {src/test => tests}/ui/error-codes/E0049.stderr (100%) rename {src/test => tests}/ui/error-codes/E0050.rs (100%) rename {src/test => tests}/ui/error-codes/E0050.stderr (100%) rename {src/test => tests}/ui/error-codes/E0054.rs (100%) rename {src/test => tests}/ui/error-codes/E0054.stderr (100%) rename {src/test => tests}/ui/error-codes/E0055.rs (100%) rename {src/test => tests}/ui/error-codes/E0055.stderr (100%) rename {src/test => tests}/ui/error-codes/E0057.rs (100%) rename {src/test => tests}/ui/error-codes/E0057.stderr (100%) rename {src/test => tests}/ui/error-codes/E0059.rs (100%) rename {src/test => tests}/ui/error-codes/E0059.stderr (100%) rename {src/test => tests}/ui/error-codes/E0060.rs (100%) rename {src/test => tests}/ui/error-codes/E0060.stderr (100%) rename {src/test => tests}/ui/error-codes/E0061.rs (100%) rename {src/test => tests}/ui/error-codes/E0061.stderr (100%) rename {src/test => tests}/ui/error-codes/E0062.rs (100%) rename {src/test => tests}/ui/error-codes/E0062.stderr (100%) rename {src/test => tests}/ui/error-codes/E0063.rs (100%) rename {src/test => tests}/ui/error-codes/E0063.stderr (100%) rename {src/test => tests}/ui/error-codes/E0067.rs (100%) rename {src/test => tests}/ui/error-codes/E0067.stderr (100%) rename {src/test => tests}/ui/error-codes/E0069.rs (100%) rename {src/test => tests}/ui/error-codes/E0069.stderr (100%) rename {src/test => tests}/ui/error-codes/E0070.rs (100%) rename {src/test => tests}/ui/error-codes/E0070.stderr (100%) rename {src/test => tests}/ui/error-codes/E0071.rs (100%) rename {src/test => tests}/ui/error-codes/E0071.stderr (100%) rename {src/test => tests}/ui/error-codes/E0075.rs (100%) rename {src/test => tests}/ui/error-codes/E0075.stderr (100%) rename {src/test => tests}/ui/error-codes/E0076.rs (100%) rename {src/test => tests}/ui/error-codes/E0076.stderr (100%) rename {src/test => tests}/ui/error-codes/E0077.rs (100%) rename {src/test => tests}/ui/error-codes/E0077.stderr (100%) rename {src/test => tests}/ui/error-codes/E0080.rs (100%) rename {src/test => tests}/ui/error-codes/E0080.stderr (100%) rename {src/test => tests}/ui/error-codes/E0081.rs (100%) rename {src/test => tests}/ui/error-codes/E0081.stderr (100%) rename {src/test => tests}/ui/error-codes/E0084.rs (100%) rename {src/test => tests}/ui/error-codes/E0084.stderr (100%) rename {src/test => tests}/ui/error-codes/E0091.rs (100%) rename {src/test => tests}/ui/error-codes/E0091.stderr (100%) rename {src/test => tests}/ui/error-codes/E0092.rs (100%) rename {src/test => tests}/ui/error-codes/E0092.stderr (100%) rename {src/test => tests}/ui/error-codes/E0093.rs (100%) rename {src/test => tests}/ui/error-codes/E0093.stderr (100%) rename {src/test => tests}/ui/error-codes/E0094.rs (100%) rename {src/test => tests}/ui/error-codes/E0094.stderr (100%) rename {src/test => tests}/ui/error-codes/E0106.rs (100%) rename {src/test => tests}/ui/error-codes/E0106.stderr (100%) rename {src/test => tests}/ui/error-codes/E0107.rs (100%) rename {src/test => tests}/ui/error-codes/E0107.stderr (100%) rename {src/test => tests}/ui/error-codes/E0109.rs (100%) rename {src/test => tests}/ui/error-codes/E0109.stderr (100%) rename {src/test => tests}/ui/error-codes/E0110.rs (100%) rename {src/test => tests}/ui/error-codes/E0110.stderr (100%) rename {src/test => tests}/ui/error-codes/E0116.rs (100%) rename {src/test => tests}/ui/error-codes/E0116.stderr (100%) rename {src/test => tests}/ui/error-codes/E0117.rs (100%) rename {src/test => tests}/ui/error-codes/E0117.stderr (100%) rename {src/test => tests}/ui/error-codes/E0118.rs (100%) rename {src/test => tests}/ui/error-codes/E0118.stderr (100%) rename {src/test => tests}/ui/error-codes/E0119.rs (100%) rename {src/test => tests}/ui/error-codes/E0119.stderr (100%) rename {src/test => tests}/ui/error-codes/E0120.rs (100%) rename {src/test => tests}/ui/error-codes/E0120.stderr (100%) rename {src/test => tests}/ui/error-codes/E0121.rs (100%) rename {src/test => tests}/ui/error-codes/E0121.stderr (100%) rename {src/test => tests}/ui/error-codes/E0124.rs (100%) rename {src/test => tests}/ui/error-codes/E0124.stderr (100%) rename {src/test => tests}/ui/error-codes/E0128.rs (100%) rename {src/test => tests}/ui/error-codes/E0128.stderr (100%) rename {src/test => tests}/ui/error-codes/E0130.rs (100%) rename {src/test => tests}/ui/error-codes/E0130.stderr (100%) rename {src/test => tests}/ui/error-codes/E0131.rs (100%) rename {src/test => tests}/ui/error-codes/E0131.stderr (100%) rename {src/test => tests}/ui/error-codes/E0132.rs (100%) rename {src/test => tests}/ui/error-codes/E0132.stderr (100%) rename {src/test => tests}/ui/error-codes/E0133.mir.stderr (100%) rename {src/test => tests}/ui/error-codes/E0133.rs (100%) rename {src/test => tests}/ui/error-codes/E0133.thir.stderr (100%) rename {src/test => tests}/ui/error-codes/E0138.rs (100%) rename {src/test => tests}/ui/error-codes/E0138.stderr (100%) rename {src/test => tests}/ui/error-codes/E0152.rs (100%) rename {src/test => tests}/ui/error-codes/E0152.stderr (100%) rename {src/test => tests}/ui/error-codes/E0161.base.stderr (100%) rename {src/test => tests}/ui/error-codes/E0161.rs (100%) rename {src/test => tests}/ui/error-codes/E0164.rs (100%) rename {src/test => tests}/ui/error-codes/E0164.stderr (100%) rename {src/test => tests}/ui/error-codes/E0184.rs (100%) rename {src/test => tests}/ui/error-codes/E0184.stderr (100%) rename {src/test => tests}/ui/error-codes/E0185.rs (100%) rename {src/test => tests}/ui/error-codes/E0185.stderr (100%) rename {src/test => tests}/ui/error-codes/E0186.rs (100%) rename {src/test => tests}/ui/error-codes/E0186.stderr (100%) rename {src/test => tests}/ui/error-codes/E0191.rs (100%) rename {src/test => tests}/ui/error-codes/E0191.stderr (100%) rename {src/test => tests}/ui/error-codes/E0194.rs (100%) rename {src/test => tests}/ui/error-codes/E0194.stderr (100%) rename {src/test => tests}/ui/error-codes/E0195.rs (100%) rename {src/test => tests}/ui/error-codes/E0195.stderr (100%) rename {src/test => tests}/ui/error-codes/E0197.rs (100%) rename {src/test => tests}/ui/error-codes/E0197.stderr (100%) rename {src/test => tests}/ui/error-codes/E0198.rs (100%) rename {src/test => tests}/ui/error-codes/E0198.stderr (100%) rename {src/test => tests}/ui/error-codes/E0199.rs (100%) rename {src/test => tests}/ui/error-codes/E0199.stderr (100%) rename {src/test => tests}/ui/error-codes/E0200.rs (100%) rename {src/test => tests}/ui/error-codes/E0200.stderr (100%) rename {src/test => tests}/ui/error-codes/E0201.rs (100%) rename {src/test => tests}/ui/error-codes/E0201.stderr (100%) rename {src/test => tests}/ui/error-codes/E0206.rs (100%) rename {src/test => tests}/ui/error-codes/E0206.stderr (100%) rename {src/test => tests}/ui/error-codes/E0207.rs (100%) rename {src/test => tests}/ui/error-codes/E0207.stderr (100%) rename {src/test => tests}/ui/error-codes/E0214.rs (100%) rename {src/test => tests}/ui/error-codes/E0214.stderr (100%) rename {src/test => tests}/ui/error-codes/E0220.rs (100%) rename {src/test => tests}/ui/error-codes/E0220.stderr (100%) rename {src/test => tests}/ui/error-codes/E0221.rs (100%) rename {src/test => tests}/ui/error-codes/E0221.stderr (100%) rename {src/test => tests}/ui/error-codes/E0223.rs (100%) rename {src/test => tests}/ui/error-codes/E0223.stderr (100%) rename {src/test => tests}/ui/error-codes/E0225.rs (100%) rename {src/test => tests}/ui/error-codes/E0225.stderr (100%) rename {src/test => tests}/ui/error-codes/E0227.rs (100%) rename {src/test => tests}/ui/error-codes/E0227.stderr (100%) rename {src/test => tests}/ui/error-codes/E0229.rs (100%) rename {src/test => tests}/ui/error-codes/E0229.stderr (100%) rename {src/test => tests}/ui/error-codes/E0252.rs (100%) rename {src/test => tests}/ui/error-codes/E0252.stderr (100%) rename {src/test => tests}/ui/error-codes/E0253.rs (100%) rename {src/test => tests}/ui/error-codes/E0253.stderr (100%) rename {src/test => tests}/ui/error-codes/E0254.rs (100%) rename {src/test => tests}/ui/error-codes/E0254.stderr (100%) rename {src/test => tests}/ui/error-codes/E0255.rs (100%) rename {src/test => tests}/ui/error-codes/E0255.stderr (100%) rename {src/test => tests}/ui/error-codes/E0259.rs (100%) rename {src/test => tests}/ui/error-codes/E0259.stderr (100%) rename {src/test => tests}/ui/error-codes/E0260.rs (100%) rename {src/test => tests}/ui/error-codes/E0260.stderr (100%) rename {src/test => tests}/ui/error-codes/E0261.rs (100%) rename {src/test => tests}/ui/error-codes/E0261.stderr (100%) rename {src/test => tests}/ui/error-codes/E0262.rs (100%) rename {src/test => tests}/ui/error-codes/E0262.stderr (100%) rename {src/test => tests}/ui/error-codes/E0263.rs (100%) rename {src/test => tests}/ui/error-codes/E0263.stderr (100%) rename {src/test => tests}/ui/error-codes/E0264.rs (100%) rename {src/test => tests}/ui/error-codes/E0264.stderr (100%) rename {src/test => tests}/ui/error-codes/E0267.rs (100%) rename {src/test => tests}/ui/error-codes/E0267.stderr (100%) rename {src/test => tests}/ui/error-codes/E0268.rs (100%) rename {src/test => tests}/ui/error-codes/E0268.stderr (100%) rename {src/test => tests}/ui/error-codes/E0271.rs (100%) rename {src/test => tests}/ui/error-codes/E0271.stderr (100%) rename {src/test => tests}/ui/error-codes/E0275.rs (100%) rename {src/test => tests}/ui/error-codes/E0275.stderr (100%) rename {src/test => tests}/ui/error-codes/E0276.rs (100%) rename {src/test => tests}/ui/error-codes/E0276.stderr (100%) rename {src/test => tests}/ui/error-codes/E0277-2.rs (100%) rename {src/test => tests}/ui/error-codes/E0277-2.stderr (100%) rename {src/test => tests}/ui/error-codes/E0277-3.rs (100%) rename {src/test => tests}/ui/error-codes/E0277-3.stderr (100%) rename {src/test => tests}/ui/error-codes/E0277.rs (100%) rename {src/test => tests}/ui/error-codes/E0277.stderr (100%) rename {src/test => tests}/ui/error-codes/E0282.rs (100%) rename {src/test => tests}/ui/error-codes/E0282.stderr (100%) rename {src/test => tests}/ui/error-codes/E0283.rs (100%) rename {src/test => tests}/ui/error-codes/E0283.stderr (100%) rename {src/test => tests}/ui/error-codes/E0297.rs (100%) rename {src/test => tests}/ui/error-codes/E0297.stderr (100%) rename {src/test => tests}/ui/error-codes/E0308-2.rs (100%) rename {src/test => tests}/ui/error-codes/E0308-2.stderr (100%) rename {src/test => tests}/ui/error-codes/E0308-4.rs (100%) rename {src/test => tests}/ui/error-codes/E0308-4.stderr (100%) rename {src/test => tests}/ui/error-codes/E0308.rs (100%) rename {src/test => tests}/ui/error-codes/E0308.stderr (100%) rename {src/test => tests}/ui/error-codes/E0311.rs (100%) rename {src/test => tests}/ui/error-codes/E0311.stderr (100%) rename {src/test => tests}/ui/error-codes/E0328.rs (100%) rename {src/test => tests}/ui/error-codes/E0328.stderr (100%) rename {src/test => tests}/ui/error-codes/E0365.rs (100%) rename {src/test => tests}/ui/error-codes/E0365.stderr (100%) rename {src/test => tests}/ui/error-codes/E0370.rs (100%) rename {src/test => tests}/ui/error-codes/E0370.stderr (100%) rename {src/test => tests}/ui/error-codes/E0374.rs (100%) rename {src/test => tests}/ui/error-codes/E0374.stderr (100%) rename {src/test => tests}/ui/error-codes/E0375.rs (100%) rename {src/test => tests}/ui/error-codes/E0375.stderr (100%) rename {src/test => tests}/ui/error-codes/E0376.rs (100%) rename {src/test => tests}/ui/error-codes/E0376.stderr (100%) rename {src/test => tests}/ui/error-codes/E0377.rs (100%) rename {src/test => tests}/ui/error-codes/E0377.stderr (100%) rename {src/test => tests}/ui/error-codes/E0388.rs (100%) rename {src/test => tests}/ui/error-codes/E0388.stderr (100%) rename {src/test => tests}/ui/error-codes/E0389.rs (100%) rename {src/test => tests}/ui/error-codes/E0389.stderr (100%) rename {src/test => tests}/ui/error-codes/E0390.rs (100%) rename {src/test => tests}/ui/error-codes/E0390.stderr (100%) rename {src/test => tests}/ui/error-codes/E0392.rs (100%) rename {src/test => tests}/ui/error-codes/E0392.stderr (100%) rename {src/test => tests}/ui/error-codes/E0393.rs (100%) rename {src/test => tests}/ui/error-codes/E0393.stderr (100%) rename {src/test => tests}/ui/error-codes/E0396-fixed.rs (100%) rename {src/test => tests}/ui/error-codes/E0396-fixed.stderr (100%) rename {src/test => tests}/ui/error-codes/E0396.rs (100%) rename {src/test => tests}/ui/error-codes/E0396.stderr (100%) rename {src/test => tests}/ui/error-codes/E0401.rs (100%) rename {src/test => tests}/ui/error-codes/E0401.stderr (100%) rename {src/test => tests}/ui/error-codes/E0403.rs (100%) rename {src/test => tests}/ui/error-codes/E0403.stderr (100%) rename {src/test => tests}/ui/error-codes/E0404.rs (100%) rename {src/test => tests}/ui/error-codes/E0404.stderr (100%) rename {src/test => tests}/ui/error-codes/E0405.rs (100%) rename {src/test => tests}/ui/error-codes/E0405.stderr (100%) rename {src/test => tests}/ui/error-codes/E0407.rs (100%) rename {src/test => tests}/ui/error-codes/E0407.stderr (100%) rename {src/test => tests}/ui/error-codes/E0408.rs (100%) rename {src/test => tests}/ui/error-codes/E0408.stderr (100%) rename {src/test => tests}/ui/error-codes/E0411.rs (100%) rename {src/test => tests}/ui/error-codes/E0411.stderr (100%) rename {src/test => tests}/ui/error-codes/E0412.rs (100%) rename {src/test => tests}/ui/error-codes/E0412.stderr (100%) rename {src/test => tests}/ui/error-codes/E0415.rs (100%) rename {src/test => tests}/ui/error-codes/E0415.stderr (100%) rename {src/test => tests}/ui/error-codes/E0416.rs (100%) rename {src/test => tests}/ui/error-codes/E0416.stderr (100%) rename {src/test => tests}/ui/error-codes/E0423.rs (100%) rename {src/test => tests}/ui/error-codes/E0423.stderr (100%) rename {src/test => tests}/ui/error-codes/E0424.rs (100%) rename {src/test => tests}/ui/error-codes/E0424.stderr (100%) rename {src/test => tests}/ui/error-codes/E0425.rs (100%) rename {src/test => tests}/ui/error-codes/E0425.stderr (100%) rename {src/test => tests}/ui/error-codes/E0426.rs (100%) rename {src/test => tests}/ui/error-codes/E0426.stderr (100%) rename {src/test => tests}/ui/error-codes/E0428.rs (100%) rename {src/test => tests}/ui/error-codes/E0428.stderr (100%) rename {src/test => tests}/ui/error-codes/E0429.rs (100%) rename {src/test => tests}/ui/error-codes/E0429.stderr (100%) rename {src/test => tests}/ui/error-codes/E0430.rs (100%) rename {src/test => tests}/ui/error-codes/E0430.stderr (100%) rename {src/test => tests}/ui/error-codes/E0431.rs (100%) rename {src/test => tests}/ui/error-codes/E0431.stderr (100%) rename {src/test => tests}/ui/error-codes/E0432.rs (100%) rename {src/test => tests}/ui/error-codes/E0432.stderr (100%) rename {src/test => tests}/ui/error-codes/E0433.rs (100%) rename {src/test => tests}/ui/error-codes/E0433.stderr (100%) rename {src/test => tests}/ui/error-codes/E0434.rs (100%) rename {src/test => tests}/ui/error-codes/E0434.stderr (100%) rename {src/test => tests}/ui/error-codes/E0435.fixed (100%) rename {src/test => tests}/ui/error-codes/E0435.rs (100%) rename {src/test => tests}/ui/error-codes/E0435.stderr (100%) rename {src/test => tests}/ui/error-codes/E0437.rs (100%) rename {src/test => tests}/ui/error-codes/E0437.stderr (100%) rename {src/test => tests}/ui/error-codes/E0438.rs (100%) rename {src/test => tests}/ui/error-codes/E0438.stderr (100%) rename {src/test => tests}/ui/error-codes/E0445.rs (100%) rename {src/test => tests}/ui/error-codes/E0445.stderr (100%) rename {src/test => tests}/ui/error-codes/E0446.rs (100%) rename {src/test => tests}/ui/error-codes/E0446.stderr (100%) rename {src/test => tests}/ui/error-codes/E0449.rs (100%) rename {src/test => tests}/ui/error-codes/E0449.stderr (100%) rename {src/test => tests}/ui/error-codes/E0451.rs (100%) rename {src/test => tests}/ui/error-codes/E0451.stderr (100%) rename {src/test => tests}/ui/error-codes/E0452.rs (100%) rename {src/test => tests}/ui/error-codes/E0452.stderr (100%) rename {src/test => tests}/ui/error-codes/E0453.rs (100%) rename {src/test => tests}/ui/error-codes/E0453.stderr (100%) rename {src/test => tests}/ui/error-codes/E0454.rs (100%) rename {src/test => tests}/ui/error-codes/E0454.stderr (100%) rename {src/test => tests}/ui/error-codes/E0458.rs (100%) rename {src/test => tests}/ui/error-codes/E0458.stderr (100%) rename {src/test => tests}/ui/error-codes/E0459.rs (100%) rename {src/test => tests}/ui/error-codes/E0459.stderr (100%) rename {src/test => tests}/ui/error-codes/E0462.rs (100%) rename {src/test => tests}/ui/error-codes/E0462.stderr (100%) rename {src/test => tests}/ui/error-codes/E0463.rs (100%) rename {src/test => tests}/ui/error-codes/E0463.stderr (100%) rename {src/test => tests}/ui/error-codes/E0464.rs (100%) rename {src/test => tests}/ui/error-codes/E0464.stderr (100%) rename {src/test => tests}/ui/error-codes/E0478.rs (100%) rename {src/test => tests}/ui/error-codes/E0478.stderr (100%) rename {src/test => tests}/ui/error-codes/E0492.rs (100%) rename {src/test => tests}/ui/error-codes/E0492.stderr (100%) rename {src/test => tests}/ui/error-codes/E0496.rs (100%) rename {src/test => tests}/ui/error-codes/E0496.stderr (100%) rename {src/test => tests}/ui/error-codes/E0499.rs (100%) rename {src/test => tests}/ui/error-codes/E0499.stderr (100%) rename {src/test => tests}/ui/error-codes/E0501.rs (100%) rename {src/test => tests}/ui/error-codes/E0501.stderr (100%) rename {src/test => tests}/ui/error-codes/E0502.rs (100%) rename {src/test => tests}/ui/error-codes/E0502.stderr (100%) rename {src/test => tests}/ui/error-codes/E0503.rs (100%) rename {src/test => tests}/ui/error-codes/E0503.stderr (100%) rename {src/test => tests}/ui/error-codes/E0504.rs (100%) rename {src/test => tests}/ui/error-codes/E0504.stderr (100%) rename {src/test => tests}/ui/error-codes/E0505.rs (100%) rename {src/test => tests}/ui/error-codes/E0505.stderr (100%) rename {src/test => tests}/ui/error-codes/E0506.rs (100%) rename {src/test => tests}/ui/error-codes/E0506.stderr (100%) rename {src/test => tests}/ui/error-codes/E0507.rs (100%) rename {src/test => tests}/ui/error-codes/E0507.stderr (100%) rename {src/test => tests}/ui/error-codes/E0508-fail.rs (100%) rename {src/test => tests}/ui/error-codes/E0508-fail.stderr (100%) rename {src/test => tests}/ui/error-codes/E0508.rs (100%) rename {src/test => tests}/ui/error-codes/E0508.stderr (100%) rename {src/test => tests}/ui/error-codes/E0509.rs (100%) rename {src/test => tests}/ui/error-codes/E0509.stderr (100%) rename {src/test => tests}/ui/error-codes/E0511.rs (100%) rename {src/test => tests}/ui/error-codes/E0511.stderr (100%) rename {src/test => tests}/ui/error-codes/E0512.rs (100%) rename {src/test => tests}/ui/error-codes/E0512.stderr (100%) rename {src/test => tests}/ui/error-codes/E0516.rs (100%) rename {src/test => tests}/ui/error-codes/E0516.stderr (100%) rename {src/test => tests}/ui/error-codes/E0517.rs (100%) rename {src/test => tests}/ui/error-codes/E0517.stderr (100%) rename {src/test => tests}/ui/error-codes/E0518.rs (100%) rename {src/test => tests}/ui/error-codes/E0518.stderr (100%) rename {src/test => tests}/ui/error-codes/E0519.rs (100%) rename {src/test => tests}/ui/error-codes/E0519.stderr (100%) rename {src/test => tests}/ui/error-codes/E0520.rs (100%) rename {src/test => tests}/ui/error-codes/E0520.stderr (100%) rename {src/test => tests}/ui/error-codes/E0522.rs (100%) rename {src/test => tests}/ui/error-codes/E0522.stderr (100%) rename {src/test => tests}/ui/error-codes/E0527.rs (100%) rename {src/test => tests}/ui/error-codes/E0527.stderr (100%) rename {src/test => tests}/ui/error-codes/E0528.rs (100%) rename {src/test => tests}/ui/error-codes/E0528.stderr (100%) rename {src/test => tests}/ui/error-codes/E0529.rs (100%) rename {src/test => tests}/ui/error-codes/E0529.stderr (100%) rename {src/test => tests}/ui/error-codes/E0530.rs (100%) rename {src/test => tests}/ui/error-codes/E0530.stderr (100%) rename {src/test => tests}/ui/error-codes/E0532.rs (100%) rename {src/test => tests}/ui/error-codes/E0532.stderr (100%) rename {src/test => tests}/ui/error-codes/E0534.rs (100%) rename {src/test => tests}/ui/error-codes/E0534.stderr (100%) rename {src/test => tests}/ui/error-codes/E0559.rs (100%) rename {src/test => tests}/ui/error-codes/E0559.stderr (100%) rename {src/test => tests}/ui/error-codes/E0560.rs (100%) rename {src/test => tests}/ui/error-codes/E0560.stderr (100%) rename {src/test => tests}/ui/error-codes/E0565-1.rs (100%) rename {src/test => tests}/ui/error-codes/E0565-1.stderr (100%) rename {src/test => tests}/ui/error-codes/E0565-2.rs (100%) rename {src/test => tests}/ui/error-codes/E0565-2.stderr (100%) rename {src/test => tests}/ui/error-codes/E0565.rs (100%) rename {src/test => tests}/ui/error-codes/E0565.stderr (100%) rename {src/test => tests}/ui/error-codes/E0572.rs (100%) rename {src/test => tests}/ui/error-codes/E0572.stderr (100%) rename {src/test => tests}/ui/error-codes/E0582.rs (100%) rename {src/test => tests}/ui/error-codes/E0582.stderr (100%) rename {src/test => tests}/ui/error-codes/E0583.rs (100%) rename {src/test => tests}/ui/error-codes/E0583.stderr (100%) rename {src/test => tests}/ui/error-codes/E0585.rs (100%) rename {src/test => tests}/ui/error-codes/E0585.stderr (100%) rename {src/test => tests}/ui/error-codes/E0586.rs (100%) rename {src/test => tests}/ui/error-codes/E0586.stderr (100%) rename {src/test => tests}/ui/error-codes/E0594.rs (100%) rename {src/test => tests}/ui/error-codes/E0594.stderr (100%) rename {src/test => tests}/ui/error-codes/E0596.rs (100%) rename {src/test => tests}/ui/error-codes/E0596.stderr (100%) rename {src/test => tests}/ui/error-codes/E0597.rs (100%) rename {src/test => tests}/ui/error-codes/E0597.stderr (100%) rename {src/test => tests}/ui/error-codes/E0599.rs (100%) rename {src/test => tests}/ui/error-codes/E0599.stderr (100%) rename {src/test => tests}/ui/error-codes/E0600.rs (100%) rename {src/test => tests}/ui/error-codes/E0600.stderr (100%) rename {src/test => tests}/ui/error-codes/E0601.rs (100%) rename {src/test => tests}/ui/error-codes/E0601.stderr (100%) rename {src/test => tests}/ui/error-codes/E0602.rs (100%) rename {src/test => tests}/ui/error-codes/E0602.stderr (100%) rename {src/test => tests}/ui/error-codes/E0603.rs (100%) rename {src/test => tests}/ui/error-codes/E0603.stderr (100%) rename {src/test => tests}/ui/error-codes/E0604.rs (100%) rename {src/test => tests}/ui/error-codes/E0604.stderr (100%) rename {src/test => tests}/ui/error-codes/E0605.rs (100%) rename {src/test => tests}/ui/error-codes/E0605.stderr (100%) rename {src/test => tests}/ui/error-codes/E0606.rs (100%) rename {src/test => tests}/ui/error-codes/E0606.stderr (100%) rename {src/test => tests}/ui/error-codes/E0607.rs (100%) rename {src/test => tests}/ui/error-codes/E0607.stderr (100%) rename {src/test => tests}/ui/error-codes/E0608.rs (100%) rename {src/test => tests}/ui/error-codes/E0608.stderr (100%) rename {src/test => tests}/ui/error-codes/E0609.rs (100%) rename {src/test => tests}/ui/error-codes/E0609.stderr (100%) rename {src/test => tests}/ui/error-codes/E0610.rs (100%) rename {src/test => tests}/ui/error-codes/E0610.stderr (100%) rename {src/test => tests}/ui/error-codes/E0614.rs (100%) rename {src/test => tests}/ui/error-codes/E0614.stderr (100%) rename {src/test => tests}/ui/error-codes/E0615.rs (100%) rename {src/test => tests}/ui/error-codes/E0615.stderr (100%) rename {src/test => tests}/ui/error-codes/E0616.rs (100%) rename {src/test => tests}/ui/error-codes/E0616.stderr (100%) rename {src/test => tests}/ui/error-codes/E0617.rs (100%) rename {src/test => tests}/ui/error-codes/E0617.stderr (100%) rename {src/test => tests}/ui/error-codes/E0618.rs (100%) rename {src/test => tests}/ui/error-codes/E0618.stderr (100%) rename {src/test => tests}/ui/error-codes/E0620.rs (100%) rename {src/test => tests}/ui/error-codes/E0620.stderr (100%) rename {src/test => tests}/ui/error-codes/E0621-does-not-trigger-for-closures.rs (100%) rename {src/test => tests}/ui/error-codes/E0621-does-not-trigger-for-closures.stderr (100%) rename {src/test => tests}/ui/error-codes/E0622.rs (100%) rename {src/test => tests}/ui/error-codes/E0622.stderr (100%) rename {src/test => tests}/ui/error-codes/E0624.rs (100%) rename {src/test => tests}/ui/error-codes/E0624.stderr (100%) rename {src/test => tests}/ui/error-codes/E0637.rs (100%) rename {src/test => tests}/ui/error-codes/E0637.stderr (100%) rename {src/test => tests}/ui/error-codes/E0642.fixed (100%) rename {src/test => tests}/ui/error-codes/E0642.rs (100%) rename {src/test => tests}/ui/error-codes/E0642.stderr (100%) rename {src/test => tests}/ui/error-codes/E0646.rs (100%) rename {src/test => tests}/ui/error-codes/E0646.stderr (100%) rename {src/test => tests}/ui/error-codes/E0647.rs (100%) rename {src/test => tests}/ui/error-codes/E0647.stderr (100%) rename {src/test => tests}/ui/error-codes/E0648.rs (100%) rename {src/test => tests}/ui/error-codes/E0648.stderr (100%) rename {src/test => tests}/ui/error-codes/E0657.rs (100%) rename {src/test => tests}/ui/error-codes/E0657.stderr (100%) rename {src/test => tests}/ui/error-codes/E0658.rs (100%) rename {src/test => tests}/ui/error-codes/E0658.stderr (100%) rename {src/test => tests}/ui/error-codes/E0659.rs (100%) rename {src/test => tests}/ui/error-codes/E0659.stderr (100%) rename {src/test => tests}/ui/error-codes/E0705.rs (100%) rename {src/test => tests}/ui/error-codes/E0705.stderr (100%) rename {src/test => tests}/ui/error-codes/E0711.rs (100%) rename {src/test => tests}/ui/error-codes/E0711.stderr (100%) rename {src/test => tests}/ui/error-codes/E0718.rs (100%) rename {src/test => tests}/ui/error-codes/E0718.stderr (100%) rename {src/test => tests}/ui/error-codes/E0719.rs (100%) rename {src/test => tests}/ui/error-codes/E0719.stderr (100%) rename {src/test => tests}/ui/error-codes/E0730.rs (100%) rename {src/test => tests}/ui/error-codes/E0730.stderr (100%) rename {src/test => tests}/ui/error-codes/E0746.fixed (100%) rename {src/test => tests}/ui/error-codes/E0746.rs (100%) rename {src/test => tests}/ui/error-codes/E0746.stderr (100%) rename {src/test => tests}/ui/error-codes/E0767.rs (100%) rename {src/test => tests}/ui/error-codes/E0767.stderr (100%) rename {src/test => tests}/ui/error-codes/E0771.rs (100%) rename {src/test => tests}/ui/error-codes/E0771.stderr (100%) rename {src/test => tests}/ui/error-codes/E0777.rs (100%) rename {src/test => tests}/ui/error-codes/E0777.stderr (100%) rename {src/test => tests}/ui/error-codes/E0778.rs (100%) rename {src/test => tests}/ui/error-codes/E0778.stderr (100%) rename {src/test => tests}/ui/error-codes/E0779.rs (100%) rename {src/test => tests}/ui/error-codes/E0779.stderr (100%) rename {src/test => tests}/ui/error-codes/E0790.rs (100%) rename {src/test => tests}/ui/error-codes/E0790.stderr (100%) rename {src/test => tests}/ui/error-codes/auxiliary/crateresolve1-1.rs (100%) rename {src/test => tests}/ui/error-codes/auxiliary/crateresolve1-2.rs (100%) rename {src/test => tests}/ui/error-codes/auxiliary/crateresolve1-3.rs (100%) rename {src/test => tests}/ui/error-codes/auxiliary/found-staticlib.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/auxiliary/complex_impl_support.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/auxiliary/issue-23563-a.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/complex-impl.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/complex-impl.stderr (100%) rename {src/test => tests}/ui/error-codes/e0119/conflict-with-std.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/conflict-with-std.stderr (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-23563.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-23563.stderr (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-27403.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-27403.stderr (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-28981.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/issue-28981.stderr (100%) rename {src/test => tests}/ui/error-codes/e0119/so-37347311.rs (100%) rename {src/test => tests}/ui/error-codes/e0119/so-37347311.stderr (100%) rename {src/test => tests}/ui/error-codes/ex-E0611.rs (100%) rename {src/test => tests}/ui/error-codes/ex-E0611.stderr (100%) rename {src/test => tests}/ui/error-codes/ex-E0612.rs (100%) rename {src/test => tests}/ui/error-codes/ex-E0612.stderr (100%) rename {src/test => tests}/ui/error-festival.rs (100%) rename {src/test => tests}/ui/error-festival.stderr (100%) rename {src/test => tests}/ui/error-should-say-copy-not-pod.rs (100%) rename {src/test => tests}/ui/error-should-say-copy-not-pod.stderr (100%) rename {src/test => tests}/ui/errors/issue-104621-extern-bad-file.rs (100%) rename {src/test => tests}/ui/errors/issue-104621-extern-bad-file.stderr (100%) rename {src/test => tests}/ui/errors/issue-104621-extern-not-file.rs (100%) rename {src/test => tests}/ui/errors/issue-104621-extern-not-file.stderr (100%) rename {src/test => tests}/ui/errors/issue-89280-emitter-overflow-splice-lines.rs (100%) rename {src/test => tests}/ui/errors/issue-89280-emitter-overflow-splice-lines.stderr (100%) rename {src/test => tests}/ui/errors/issue-99572-impl-trait-on-pointer.rs (100%) rename {src/test => tests}/ui/errors/issue-99572-impl-trait-on-pointer.stderr (100%) rename {src/test => tests}/ui/exclusive-drop-and-copy.rs (100%) rename {src/test => tests}/ui/exclusive-drop-and-copy.stderr (100%) rename {src/test => tests}/ui/exec-env.rs (100%) rename {src/test => tests}/ui/explain.rs (100%) rename {src/test => tests}/ui/explain.stdout (100%) rename {src/test => tests}/ui/explicit-i-suffix.rs (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-dtor.fixed (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-dtor.rs (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-dtor.stderr (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-supertrait-dtor.fixed (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-supertrait-dtor.rs (100%) rename {src/test => tests}/ui/explicit/explicit-call-to-supertrait-dtor.stderr (100%) rename {src/test => tests}/ui/explicit/explicit-self-lifetime-mismatch.rs (100%) rename {src/test => tests}/ui/explicit/explicit-self-lifetime-mismatch.stderr (100%) rename {src/test => tests}/ui/explore-issue-38412.rs (100%) rename {src/test => tests}/ui/explore-issue-38412.stderr (100%) rename {src/test => tests}/ui/expr-block-fn.rs (100%) rename {src/test => tests}/ui/expr-block-generic-unique1.rs (100%) rename {src/test => tests}/ui/expr-block-generic-unique2.rs (100%) rename {src/test => tests}/ui/expr-block-generic.rs (100%) rename {src/test => tests}/ui/expr-block.rs (100%) rename {src/test => tests}/ui/expr-copy.rs (100%) rename {src/test => tests}/ui/expr-if-generic.rs (100%) rename {src/test => tests}/ui/expr-if-panic-all.rs (100%) rename {src/test => tests}/ui/expr-if-unique.rs (100%) rename {src/test => tests}/ui/expr-scope.rs (100%) rename {src/test => tests}/ui/expr/compound-assignment/eval-order.rs (100%) rename {src/test => tests}/ui/expr/if-bot.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/bad-cfg.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/bad-cfg.stderr (100%) rename {src/test => tests}/ui/expr/if/attrs/builtin-if-attr.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/cfg-false-if-attr.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/else-attrs.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/else-attrs.stderr (100%) rename {src/test => tests}/ui/expr/if/attrs/gate-whole-expr.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/let-chains-attr.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/stmt-expr-gated.rs (100%) rename {src/test => tests}/ui/expr/if/attrs/stmt-expr-gated.stderr (100%) rename {src/test => tests}/ui/expr/if/bad-if-let-suggestion.rs (100%) rename {src/test => tests}/ui/expr/if/bad-if-let-suggestion.stderr (100%) rename {src/test => tests}/ui/expr/if/expr-if-panic-fn.rs (100%) rename {src/test => tests}/ui/expr/if/expr-if-panic-pass.rs (100%) rename {src/test => tests}/ui/expr/if/expr-if-panic.rs (100%) rename {src/test => tests}/ui/expr/if/expr-if.rs (100%) rename {src/test => tests}/ui/expr/if/if-branch-types.rs (100%) rename {src/test => tests}/ui/expr/if/if-branch-types.stderr (100%) rename {src/test => tests}/ui/expr/if/if-check-panic.rs (100%) rename {src/test => tests}/ui/expr/if/if-check.rs (100%) rename {src/test => tests}/ui/expr/if/if-cond-bot.rs (100%) rename {src/test => tests}/ui/expr/if/if-else-type-mismatch.rs (100%) rename {src/test => tests}/ui/expr/if/if-else-type-mismatch.stderr (100%) rename {src/test => tests}/ui/expr/if/if-let-arm-types.rs (100%) rename {src/test => tests}/ui/expr/if/if-let-arm-types.stderr (100%) rename {src/test => tests}/ui/expr/if/if-let.rs (100%) rename {src/test => tests}/ui/expr/if/if-let.stderr (100%) rename {src/test => tests}/ui/expr/if/if-loop.rs (100%) rename {src/test => tests}/ui/expr/if/if-no-match-bindings.rs (100%) rename {src/test => tests}/ui/expr/if/if-no-match-bindings.stderr (100%) rename {src/test => tests}/ui/expr/if/if-ret.rs (100%) rename {src/test => tests}/ui/expr/if/if-ret.stderr (100%) rename {src/test => tests}/ui/expr/if/if-typeck.rs (100%) rename {src/test => tests}/ui/expr/if/if-typeck.stderr (100%) rename {src/test => tests}/ui/expr/if/if-without-block.rs (100%) rename {src/test => tests}/ui/expr/if/if-without-block.stderr (100%) rename {src/test => tests}/ui/expr/if/if-without-else-as-fn-expr.rs (100%) rename {src/test => tests}/ui/expr/if/if-without-else-as-fn-expr.stderr (100%) rename {src/test => tests}/ui/expr/if/if-without-else-result.rs (100%) rename {src/test => tests}/ui/expr/if/if-without-else-result.stderr (100%) rename {src/test => tests}/ui/expr/if/issue-4201.rs (100%) rename {src/test => tests}/ui/expr/if/issue-4201.stderr (100%) rename {src/test => tests}/ui/expr/malformed_closure/missing_braces_around_block.fixed (100%) rename {src/test => tests}/ui/expr/malformed_closure/missing_braces_around_block.rs (100%) rename {src/test => tests}/ui/expr/malformed_closure/missing_braces_around_block.stderr (100%) rename {src/test => tests}/ui/expr/malformed_closure/ruby_style_closure.rs (100%) rename {src/test => tests}/ui/expr/malformed_closure/ruby_style_closure.stderr (100%) rename {src/test => tests}/ui/ext-expand-inner-exprs.rs (100%) rename {src/test => tests}/ui/ext-nonexistent.rs (100%) rename {src/test => tests}/ui/ext-nonexistent.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-arg-2-not-string-literal.rs (100%) rename {src/test => tests}/ui/extenv/extenv-arg-2-not-string-literal.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-no-args.rs (100%) rename {src/test => tests}/ui/extenv/extenv-no-args.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-not-defined-custom.rs (100%) rename {src/test => tests}/ui/extenv/extenv-not-defined-custom.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-not-defined-default.rs (100%) rename {src/test => tests}/ui/extenv/extenv-not-defined-default.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-not-string-literal.rs (100%) rename {src/test => tests}/ui/extenv/extenv-not-string-literal.stderr (100%) rename {src/test => tests}/ui/extenv/extenv-too-many-args.rs (100%) rename {src/test => tests}/ui/extenv/extenv-too-many-args.stderr (100%) rename {src/test => tests}/ui/extenv/issue-55897.rs (100%) rename {src/test => tests}/ui/extenv/issue-55897.stderr (100%) rename {src/test => tests}/ui/extern-flag/auxiliary/somedep.rs (100%) rename {src/test => tests}/ui/extern-flag/empty-extern-arg.rs (100%) rename {src/test => tests}/ui/extern-flag/empty-extern-arg.stderr (100%) rename {src/test => tests}/ui/extern-flag/multiple-opts.rs (100%) rename {src/test => tests}/ui/extern-flag/multiple-opts.stderr (100%) rename {src/test => tests}/ui/extern-flag/no-nounused.rs (100%) rename {src/test => tests}/ui/extern-flag/no-nounused.stderr (100%) rename {src/test => tests}/ui/extern-flag/noprelude-and-prelude.rs (100%) rename {src/test => tests}/ui/extern-flag/noprelude-resolves.rs (100%) rename {src/test => tests}/ui/extern-flag/noprelude.rs (100%) rename {src/test => tests}/ui/extern-flag/noprelude.stderr (100%) rename {src/test => tests}/ui/extern-flag/nounused.rs (100%) rename {src/test => tests}/ui/extern-flag/public-and-private.rs (100%) rename {src/test => tests}/ui/extern-flag/public-and-private.stderr (100%) rename {src/test => tests}/ui/extern/auxiliary/extern-take-value.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/extern-types-inherent-impl.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/extern_calling_convention.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/extern_mod_ordering_lib.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/fat_drop.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/invalid-utf8.txt (100%) rename {src/test => tests}/ui/extern/auxiliary/issue-80074-macro.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/m1.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/m2.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/no-mangle-associated-fn.rs (100%) rename {src/test => tests}/ui/extern/auxiliary/reexport-should-still-link.rs (100%) rename {src/test => tests}/ui/extern/extern-1.rs (100%) rename {src/test => tests}/ui/extern/extern-calling-convention-test.rs (100%) rename {src/test => tests}/ui/extern/extern-compare-with-return-type.rs (100%) rename {src/test => tests}/ui/extern/extern-const.fixed (100%) rename {src/test => tests}/ui/extern/extern-const.rs (100%) rename {src/test => tests}/ui/extern/extern-const.stderr (100%) rename {src/test => tests}/ui/extern/extern-crate-multiple-missing.rs (100%) rename {src/test => tests}/ui/extern/extern-crate-multiple-missing.stderr (100%) rename {src/test => tests}/ui/extern/extern-crate-rename.rs (100%) rename {src/test => tests}/ui/extern/extern-crate-rename.stderr (100%) rename {src/test => tests}/ui/extern/extern-crate-visibility.rs (100%) rename {src/test => tests}/ui/extern/extern-crate-visibility.stderr (100%) rename {src/test => tests}/ui/extern/extern-ffi-fn-with-body.rs (100%) rename {src/test => tests}/ui/extern/extern-ffi-fn-with-body.stderr (100%) rename {src/test => tests}/ui/extern/extern-foreign-crate.rs (100%) rename {src/test => tests}/ui/extern/extern-macro.rs (100%) rename {src/test => tests}/ui/extern/extern-macro.stderr (100%) rename {src/test => tests}/ui/extern/extern-main-fn.rs (100%) rename {src/test => tests}/ui/extern/extern-main-fn.stderr (100%) rename {src/test => tests}/ui/extern/extern-main-issue-86110.rs (100%) rename {src/test => tests}/ui/extern/extern-main-issue-86110.stderr (100%) rename {src/test => tests}/ui/extern/extern-methods.rs (100%) rename {src/test => tests}/ui/extern/extern-mod-abi.rs (100%) rename {src/test => tests}/ui/extern/extern-mod-ordering-exe.rs (100%) rename {src/test => tests}/ui/extern/extern-no-mangle.rs (100%) rename {src/test => tests}/ui/extern/extern-no-mangle.stderr (100%) rename {src/test => tests}/ui/extern/extern-prelude-core.rs (100%) rename {src/test => tests}/ui/extern/extern-prelude-no-speculative.rs (100%) rename {src/test => tests}/ui/extern/extern-prelude-std.rs (100%) rename {src/test => tests}/ui/extern/extern-pub.rs (100%) rename {src/test => tests}/ui/extern/extern-rust.rs (100%) rename {src/test => tests}/ui/extern/extern-static-size-overflow.rs (100%) rename {src/test => tests}/ui/extern/extern-static-size-overflow.stderr (100%) rename {src/test => tests}/ui/extern/extern-take-value.rs (100%) rename {src/test => tests}/ui/extern/extern-thiscall.rs (100%) rename {src/test => tests}/ui/extern/extern-type-diag-not-similar.rs (100%) rename {src/test => tests}/ui/extern/extern-type-diag-not-similar.stderr (100%) rename {src/test => tests}/ui/extern/extern-types-distinct-types.rs (100%) rename {src/test => tests}/ui/extern/extern-types-distinct-types.stderr (100%) rename {src/test => tests}/ui/extern/extern-types-inherent-impl.rs (100%) rename {src/test => tests}/ui/extern/extern-types-manual-sync-send.rs (100%) rename {src/test => tests}/ui/extern/extern-types-not-sync-send.rs (100%) rename {src/test => tests}/ui/extern/extern-types-not-sync-send.stderr (100%) rename {src/test => tests}/ui/extern/extern-types-pointer-cast.rs (100%) rename {src/test => tests}/ui/extern/extern-types-size_of_val.rs (100%) rename {src/test => tests}/ui/extern/extern-types-thin-pointer.rs (100%) rename {src/test => tests}/ui/extern/extern-types-trait-impl.rs (100%) rename {src/test => tests}/ui/extern/extern-types-unsized.rs (100%) rename {src/test => tests}/ui/extern/extern-types-unsized.stderr (100%) rename {src/test => tests}/ui/extern/extern-vectorcall.rs (100%) rename {src/test => tests}/ui/extern/extern-with-type-bounds.rs (100%) rename {src/test => tests}/ui/extern/extern-with-type-bounds.stderr (100%) rename {src/test => tests}/ui/extern/extern-wrong-value-type.rs (100%) rename {src/test => tests}/ui/extern/extern-wrong-value-type.stderr (100%) rename {src/test => tests}/ui/extern/extern_fat_drop.rs (100%) rename {src/test => tests}/ui/extern/issue-10025.rs (100%) rename {src/test => tests}/ui/extern/issue-10763.rs (100%) rename {src/test => tests}/ui/extern/issue-10764-rpass.rs (100%) rename {src/test => tests}/ui/extern/issue-13655.rs (100%) rename {src/test => tests}/ui/extern/issue-28324.mir.stderr (100%) rename {src/test => tests}/ui/extern/issue-28324.rs (100%) rename {src/test => tests}/ui/extern/issue-28324.thir.stderr (100%) rename {src/test => tests}/ui/extern/issue-36122-accessing-externed-dst.rs (100%) rename {src/test => tests}/ui/extern/issue-36122-accessing-externed-dst.stderr (100%) rename {src/test => tests}/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs (100%) rename {src/test => tests}/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs (100%) rename {src/test => tests}/ui/extern/issue-80074.rs (100%) rename {src/test => tests}/ui/extern/issue-95829.rs (100%) rename {src/test => tests}/ui/extern/issue-95829.stderr (100%) rename {src/test => tests}/ui/extern/no-mangle-associated-fn.rs (100%) rename {src/test => tests}/ui/extern/not-in-block.rs (100%) rename {src/test => tests}/ui/extern/not-in-block.stderr (100%) rename {src/test => tests}/ui/extoption_env-no-args.rs (100%) rename {src/test => tests}/ui/extoption_env-no-args.stderr (100%) rename {src/test => tests}/ui/extoption_env-not-defined.rs (100%) rename {src/test => tests}/ui/extoption_env-not-string-literal.rs (100%) rename {src/test => tests}/ui/extoption_env-not-string-literal.stderr (100%) rename {src/test => tests}/ui/extoption_env-too-many-args.rs (100%) rename {src/test => tests}/ui/extoption_env-too-many-args.stderr (100%) rename {src/test => tests}/ui/fact.rs (100%) rename {src/test => tests}/ui/fail-simple.rs (100%) rename {src/test => tests}/ui/fail-simple.stderr (100%) rename {src/test => tests}/ui/feature-gates/allow-features-empty.rs (100%) rename {src/test => tests}/ui/feature-gates/allow-features-empty.stderr (100%) rename {src/test => tests}/ui/feature-gates/allow-features.rs (100%) rename {src/test => tests}/ui/feature-gates/allow-features.stderr (100%) rename {src/test => tests}/ui/feature-gates/auxiliary/cfg-target-thread-local.rs (100%) rename {src/test => tests}/ui/feature-gates/auxiliary/debugger-visualizer.natvis (100%) rename {src/test => tests}/ui/feature-gates/auxiliary/pub_dep.rs (100%) rename {src/test => tests}/ui/feature-gates/auxiliary/re_rebalance_coherence_lib.rs (100%) rename {src/test => tests}/ui/feature-gates/bench.rs (100%) rename {src/test => tests}/ui/feature-gates/bench.stderr (100%) rename {src/test => tests}/ui/feature-gates/duplicate-features.rs (100%) rename {src/test => tests}/ui/feature-gates/duplicate-features.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-avr-interrupt.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-efiapi.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-efiapi.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-x86-interrupt.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_amdgpu_kernel.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_amdgpu_kernel.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_ptx.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_ptx.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_unadjusted.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-abi_unadjusted.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-adt_const_params.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-adt_const_params.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-alloc-error-handler.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-alloc-error-handler.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allocator_internals.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allocator_internals.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable-struct.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable-struct.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-allow-internal-unstable.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-arbitrary-self-types.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-arbitrary-self-types.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_const.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_const.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_experimental_arch.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_experimental_arch.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_unwind.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-asm_unwind.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-assoc-type-defaults.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-assoc-type-defaults.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-associated_const_equality.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-associated_const_equality.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-associated_type_bounds.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-associated_type_bounds.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-auto-traits.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-auto-traits.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box-expr.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box-expr.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box_patterns.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box_patterns.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box_syntax.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-box_syntax.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-c_variadic.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-c_variadic.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-abi.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-abi.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-compact.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-compact.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-has-atomic.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-thread-local.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-target-thread-local.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-version.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg-version.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg_sanitize.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-cfg_sanitize.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-check-cfg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-check-cfg.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-closure_lifetime_binder.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-closure_lifetime_binder.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-closure_track_caller.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-closure_track_caller.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-collapse_debuginfo.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-collapse_debuginfo.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-compiler-builtins.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-compiler-builtins.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_bytes.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_bytes.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents2.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents2.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents3.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-concat_idents3.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-const-indexing.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-const_refs_to_cell.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_attribute.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_attribute.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_attribute2.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_attribute2.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_mir.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_mir.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_test_frameworks.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-custom_test_frameworks.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-debugger-visualizer.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-debugger-visualizer.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-decl_macro.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-decl_macro.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-default_type_parameter_fallback.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-default_type_parameter_fallback.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-deprecated_safe.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-deprecated_safe.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_cfg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_cfg.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_masked.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_masked.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_notable_trait.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-doc_notable_trait.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-exclusive-range-pattern.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-exclusive-range-pattern.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-exhaustive-patterns.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-exhaustive-patterns.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_absolute_paths.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_absolute_paths.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_prelude.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_prelude.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_types.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-extern_types.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-feature-gate.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-feature-gate.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_const.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_const.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_pure.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_pure.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_returns_twice.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-ffi_returns_twice.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-fn_align.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-fn_align.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-format_args_nl.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-format_args_nl.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-fundamental.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-fundamental.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generators.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generators.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generic_arg_infer.normal.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generic_arg_infer.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generic_associated_types_extended.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-generic_associated_types_extended.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-imported_main.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-imported_main.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inherent_associated_types.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inherent_associated_types.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inline_const.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inline_const.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inline_const_pat.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-inline_const_pat.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-intrinsics.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-intrinsics.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-is_sorted.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-is_sorted.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-lang-items.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-lang-items.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-large-assignments.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-large-assignments.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-link_cfg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-link_cfg.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-link_llvm_intrinsics.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-link_llvm_intrinsics.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-linkage.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-linkage.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-lint-reasons.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-lint-reasons.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax.stdout (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax2.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax2.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-log_syntax2.stdout (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-marker_trait_attr.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-marker_trait_attr.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-may-dangle.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-may-dangle.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-min_const_fn.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-min_const_fn.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-more-qualified-paths.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-more-qualified-paths.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-naked_functions.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-naked_functions.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-needs-allocator.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-needs-allocator.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-negate-unsigned.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-negate-unsigned.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-never_type.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-never_type.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_core.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_core.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_coverage.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_coverage.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_sanitize.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-no_sanitize.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-object_safe_for_dispatch.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-optimize_attribute.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-optimize_attribute.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-overlapping_marker_traits.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-overlapping_marker_traits.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-precise_pointer_size_matching.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-prelude_import.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-prelude_import.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-profiler-runtime.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-profiler-runtime.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-public_private_dependencies.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib-2.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib-2.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-raw-dylib.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-register_tool.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-register_tool.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-repr-simd.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-repr-simd.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-repr128.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-repr128.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rust_cold_cc.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rust_cold_cc.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-attrs-1.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-attrs-1.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-attrs.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc-attrs.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc_const_unstable.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustc_const_unstable.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustdoc_internals.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-rustdoc_internals.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-simd-ffi.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-simd-ffi.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-simd.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-simd.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-staged_api.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-staged_api.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-start.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-start.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-stmt_expr_attributes.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-strict_provenance.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-strict_provenance.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-test_unstable_lint.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-test_unstable_lint.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-thread_local.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-thread_local.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trace_macros.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trace_macros.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trait-alias.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trait-alias.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trait_upcasting.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trait_upcasting.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-transparent_unions.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-transparent_unions.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trivial_bounds-lint.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trivial_bounds.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-trivial_bounds.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-try_blocks.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-try_blocks.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-type_alias_impl_trait.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-type_ascription.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-type_ascription.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-method-calls.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-method-calls.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unboxed-closures.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unix_sigpipe.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unix_sigpipe.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsafe_pin_internals.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsafe_pin_internals.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_fn_params.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_fn_params.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_locals.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_locals.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_tuple_coercion.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-unsized_tuple_coercion.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-used_with_arg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-used_with_arg.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-vectorcall.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-vectorcall.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-wasm_abi.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-wasm_abi.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-with_negative_coherence.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-with_negative_coherence.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-yeet_expr-in-cfg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-yeet_expr-in-cfg.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-yeet_expr.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gate-yeet_expr.stderr (100%) rename {src/test => tests}/ui/feature-gates/feature-gated-feature-in-macro-arg.rs (100%) rename {src/test => tests}/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr (100%) rename {src/test => tests}/ui/feature-gates/gated-bad-feature.rs (100%) rename {src/test => tests}/ui/feature-gates/gated-bad-feature.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-bench.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-bench.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-deprecated.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-derive-2.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-derive-2.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-derive.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-derive.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-macro_escape.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-macro_escape.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-macro_use.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-macro_use.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-stable.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-stable.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-test.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-test.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-unstable.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-43106-gating-of-unstable.stderr (100%) rename {src/test => tests}/ui/feature-gates/issue-49983-see-issue-0.rs (100%) rename {src/test => tests}/ui/feature-gates/issue-49983-see-issue-0.stderr (100%) rename {src/test => tests}/ui/feature-gates/rustc-private.rs (100%) rename {src/test => tests}/ui/feature-gates/rustc-private.stderr (100%) rename {src/test => tests}/ui/feature-gates/soft-syntax-gates-with-errors.rs (100%) rename {src/test => tests}/ui/feature-gates/soft-syntax-gates-with-errors.stderr (100%) rename {src/test => tests}/ui/feature-gates/soft-syntax-gates-without-errors.rs (100%) rename {src/test => tests}/ui/feature-gates/soft-syntax-gates-without-errors.stderr (100%) rename {src/test => tests}/ui/feature-gates/stability-attribute-consistency.rs (100%) rename {src/test => tests}/ui/feature-gates/stability-attribute-consistency.stderr (100%) rename {src/test => tests}/ui/feature-gates/stable-features.rs (100%) rename {src/test => tests}/ui/feature-gates/stable-features.stderr (100%) rename {src/test => tests}/ui/feature-gates/trace_macros-gate.rs (100%) rename {src/test => tests}/ui/feature-gates/trace_macros-gate.stderr (100%) rename {src/test => tests}/ui/feature-gates/unknown-feature.rs (100%) rename {src/test => tests}/ui/feature-gates/unknown-feature.stderr (100%) rename {src/test => tests}/ui/feature-gates/unstable-attribute-allow-issue-0.rs (100%) rename {src/test => tests}/ui/feature-gates/unstable-attribute-allow-issue-0.stderr (100%) rename {src/test => tests}/ui/ffi_const.rs (100%) rename {src/test => tests}/ui/ffi_const.stderr (100%) rename {src/test => tests}/ui/ffi_const2.rs (100%) rename {src/test => tests}/ui/ffi_const2.stderr (100%) rename {src/test => tests}/ui/ffi_pure.rs (100%) rename {src/test => tests}/ui/ffi_pure.stderr (100%) rename {src/test => tests}/ui/ffi_returns_twice.rs (100%) rename {src/test => tests}/ui/ffi_returns_twice.stderr (100%) rename {src/test => tests}/ui/filter-block-view-items.rs (100%) rename {src/test => tests}/ui/fmt/auxiliary/format-string-proc-macro.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-102057.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-102057.stderr (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-93378.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-93378.stderr (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-94010.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-issue-94010.stderr (100%) rename {src/test => tests}/ui/fmt/format-args-capture-macro-hygiene.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-macro-hygiene.stderr (100%) rename {src/test => tests}/ui/fmt/format-args-capture-missing-variables.rs (100%) rename {src/test => tests}/ui/fmt/format-args-capture-missing-variables.stderr (100%) rename {src/test => tests}/ui/fmt/format-args-capture.rs (100%) rename {src/test => tests}/ui/fmt/format-expanded-string.rs (100%) rename {src/test => tests}/ui/fmt/format-expanded-string.stderr (100%) rename {src/test => tests}/ui/fmt/format-raw-string-error.rs (100%) rename {src/test => tests}/ui/fmt/format-raw-string-error.stderr (100%) rename {src/test => tests}/ui/fmt/format-string-error-2.rs (100%) rename {src/test => tests}/ui/fmt/format-string-error-2.stderr (100%) rename {src/test => tests}/ui/fmt/format-string-error.rs (100%) rename {src/test => tests}/ui/fmt/format-string-error.stderr (100%) rename {src/test => tests}/ui/fmt/format-with-yield-point.rs (100%) rename {src/test => tests}/ui/fmt/ifmt-bad-arg.rs (100%) rename {src/test => tests}/ui/fmt/ifmt-bad-arg.stderr (100%) rename {src/test => tests}/ui/fmt/ifmt-bad-format-args.rs (100%) rename {src/test => tests}/ui/fmt/ifmt-bad-format-args.stderr (100%) rename {src/test => tests}/ui/fmt/ifmt-unimpl.rs (100%) rename {src/test => tests}/ui/fmt/ifmt-unimpl.stderr (100%) rename {src/test => tests}/ui/fmt/ifmt-unknown-trait.rs (100%) rename {src/test => tests}/ui/fmt/ifmt-unknown-trait.stderr (100%) rename {src/test => tests}/ui/fmt/incorrect-separator.rs (100%) rename {src/test => tests}/ui/fmt/incorrect-separator.stderr (100%) rename {src/test => tests}/ui/fmt/issue-103826.rs (100%) rename {src/test => tests}/ui/fmt/issue-103826.stderr (100%) rename {src/test => tests}/ui/fmt/issue-104142.rs (100%) rename {src/test => tests}/ui/fmt/issue-104142.stderr (100%) rename {src/test => tests}/ui/fmt/issue-86085.rs (100%) rename {src/test => tests}/ui/fmt/issue-86085.stderr (100%) rename {src/test => tests}/ui/fmt/issue-89173.rs (100%) rename {src/test => tests}/ui/fmt/issue-89173.stderr (100%) rename {src/test => tests}/ui/fmt/issue-91556.rs (100%) rename {src/test => tests}/ui/fmt/issue-91556.stderr (100%) rename {src/test => tests}/ui/fmt/respanned-literal-issue-106191.rs (100%) rename {src/test => tests}/ui/fmt/respanned-literal-issue-106191.stderr (100%) rename {src/test => tests}/ui/fmt/send-sync.rs (100%) rename {src/test => tests}/ui/fmt/send-sync.stderr (100%) rename {src/test => tests}/ui/fmt/struct-field-as-captured-argument.fixed (100%) rename {src/test => tests}/ui/fmt/struct-field-as-captured-argument.rs (100%) rename {src/test => tests}/ui/fmt/struct-field-as-captured-argument.stderr (100%) rename {src/test => tests}/ui/fmt/unicode-escape-spans.rs (100%) rename {src/test => tests}/ui/fmt/unicode-escape-spans.stderr (100%) rename {src/test => tests}/ui/fn-in-pat.rs (100%) rename {src/test => tests}/ui/fn-in-pat.stderr (100%) rename {src/test => tests}/ui/fn/bad-main.rs (100%) rename {src/test => tests}/ui/fn/bad-main.stderr (100%) rename {src/test => tests}/ui/fn/dyn-fn-alignment.rs (100%) rename {src/test => tests}/ui/fn/expr-fn-panic.rs (100%) rename {src/test => tests}/ui/fn/expr-fn.rs (100%) rename {src/test => tests}/ui/fn/fn-bad-block-type.rs (100%) rename {src/test => tests}/ui/fn/fn-bad-block-type.stderr (100%) rename {src/test => tests}/ui/fn/fn-closure-mutable-capture.rs (100%) rename {src/test => tests}/ui/fn/fn-closure-mutable-capture.stderr (100%) rename {src/test => tests}/ui/fn/fn-compare-mismatch.rs (100%) rename {src/test => tests}/ui/fn/fn-compare-mismatch.stderr (100%) rename {src/test => tests}/ui/fn/fn-item-type.rs (100%) rename {src/test => tests}/ui/fn/fn-item-type.stderr (100%) rename {src/test => tests}/ui/fn/fn-recover-return-sign.fixed (100%) rename {src/test => tests}/ui/fn/fn-recover-return-sign.rs (100%) rename {src/test => tests}/ui/fn/fn-recover-return-sign.stderr (100%) rename {src/test => tests}/ui/fn/fn-recover-return-sign2.rs (100%) rename {src/test => tests}/ui/fn/fn-recover-return-sign2.stderr (100%) rename {src/test => tests}/ui/fn/fn-trait-formatting.rs (100%) rename {src/test => tests}/ui/fn/fn-trait-formatting.stderr (100%) rename {src/test => tests}/ui/fn/fun-call-variants.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-2.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-2.stderr (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-3.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-4.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-4.stderr (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-5.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type-5.stderr (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type.rs (100%) rename {src/test => tests}/ui/fn/implied-bounds-unnorm-associated-type.stderr (100%) rename {src/test => tests}/ui/fn/issue-3044.rs (100%) rename {src/test => tests}/ui/fn/issue-3044.stderr (100%) rename {src/test => tests}/ui/fn/issue-3904.rs (100%) rename {src/test => tests}/ui/fn/issue-80179.rs (100%) rename {src/test => tests}/ui/fn/issue-80179.stderr (100%) rename {src/test => tests}/ui/fn/keyword-order.rs (100%) rename {src/test => tests}/ui/fn/keyword-order.stderr (100%) rename {src/test => tests}/ui/fn/nested-function-names-issue-8587.rs (100%) rename {src/test => tests}/ui/fn/signature-error-reporting-under-verbose.rs (100%) rename {src/test => tests}/ui/fn/signature-error-reporting-under-verbose.stderr (100%) rename {src/test => tests}/ui/fn/suggest-return-closure.rs (100%) rename {src/test => tests}/ui/fn/suggest-return-closure.stderr (100%) rename {src/test => tests}/ui/fn/suggest-return-future.rs (100%) rename {src/test => tests}/ui/fn/suggest-return-future.stderr (100%) rename {src/test => tests}/ui/for-loop-while/auto-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/break-outside-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/break-outside-loop.stderr (100%) rename {src/test => tests}/ui/for-loop-while/break-value.rs (100%) rename {src/test => tests}/ui/for-loop-while/break-while-condition.rs (100%) rename {src/test => tests}/ui/for-loop-while/break-while-condition.stderr (100%) rename {src/test => tests}/ui/for-loop-while/break.rs (100%) rename {src/test => tests}/ui/for-loop-while/cleanup-rvalue-during-if-and-while.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-destruct.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-goofiness.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-has-unit-body.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-into-iterator.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-lifetime-of-unbound-values.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-macro.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-mut-ref-element.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-no-std.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-panic.rs (100%) rename {src/test => tests}/ui/for-loop-while/for-loop-unconstrained-element-type-i32-fallback.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators-break.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators-hashmap-break-restart.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators-hashmap.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators-nested.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-external-iterators.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-nested.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-put-structured.rs (100%) rename {src/test => tests}/ui/for-loop-while/foreach-simple-outer-slot.rs (100%) rename {src/test => tests}/ui/for-loop-while/issue-2216.rs (100%) rename {src/test => tests}/ui/for-loop-while/issue-51345.rs (100%) rename {src/test => tests}/ui/for-loop-while/issue-69841.rs (100%) rename {src/test => tests}/ui/for-loop-while/label_break_value.rs (100%) rename {src/test => tests}/ui/for-loop-while/label_break_value_invalid.rs (100%) rename {src/test => tests}/ui/for-loop-while/label_break_value_invalid.stderr (100%) rename {src/test => tests}/ui/for-loop-while/labeled-break.rs (100%) rename {src/test => tests}/ui/for-loop-while/linear-for-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/liveness-assign-imm-local-after-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/liveness-loop-break.rs (100%) rename {src/test => tests}/ui/for-loop-while/liveness-move-in-loop.rs (100%) rename {src/test => tests}/ui/for-loop-while/long-while.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-break-cont-1.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-break-cont.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-break-value.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-diverges.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-label-shadowing.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-labeled-break-value.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-no-reinit-needed-post-bot.rs (100%) rename {src/test => tests}/ui/for-loop-while/loop-scope.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-cont.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-flow-graph.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-label.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-let-2.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-let-2.stderr (100%) rename {src/test => tests}/ui/for-loop-while/while-let.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-loop-constraints-2.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-prelude-drop.rs (100%) rename {src/test => tests}/ui/for-loop-while/while-with-break.rs (100%) rename {src/test => tests}/ui/for-loop-while/while.rs (100%) rename {src/test => tests}/ui/for/for-c-in-str.rs (100%) rename {src/test => tests}/ui/for/for-c-in-str.stderr (100%) rename {src/test => tests}/ui/for/for-expn.rs (100%) rename {src/test => tests}/ui/for/for-expn.stderr (100%) rename {src/test => tests}/ui/for/for-loop-bogosity.rs (100%) rename {src/test => tests}/ui/for/for-loop-bogosity.stderr (100%) rename {src/test => tests}/ui/for/for-loop-refutable-pattern-error-message.rs (100%) rename {src/test => tests}/ui/for/for-loop-refutable-pattern-error-message.stderr (100%) rename {src/test => tests}/ui/for/for-loop-type-error.rs (100%) rename {src/test => tests}/ui/for/for-loop-type-error.stderr (100%) rename {src/test => tests}/ui/for/for-loop-unconstrained-element-type.rs (100%) rename {src/test => tests}/ui/for/for-loop-unconstrained-element-type.stderr (100%) rename {src/test => tests}/ui/foreign-fn-return-lifetime.fixed (100%) rename {src/test => tests}/ui/foreign-fn-return-lifetime.rs (100%) rename {src/test => tests}/ui/foreign-fn-return-lifetime.stderr (100%) rename {src/test => tests}/ui/foreign-unsafe-fn-called.mir.stderr (100%) rename {src/test => tests}/ui/foreign-unsafe-fn-called.rs (100%) rename {src/test => tests}/ui/foreign-unsafe-fn-called.thir.stderr (100%) rename {src/test => tests}/ui/foreign/auxiliary/fn-abi.rs (100%) rename {src/test => tests}/ui/foreign/foreign-fn-linkname.rs (100%) rename {src/test => tests}/ui/foreign/foreign-int-types.rs (100%) rename {src/test => tests}/ui/foreign/foreign-mod-src/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/foreign/foreign-mod-src/inner.rs (100%) rename {src/test => tests}/ui/foreign/foreign-mod-unused-const.rs (100%) rename {src/test => tests}/ui/foreign/foreign-pub-super.rs (100%) rename {src/test => tests}/ui/foreign/foreign-src/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/foreign/foreign-src/foreign.rs (100%) rename {src/test => tests}/ui/foreign/foreign-truncated-arguments.rs (100%) rename {src/test => tests}/ui/foreign/foreign2.rs (100%) rename {src/test => tests}/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs (100%) rename {src/test => tests}/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.stderr (100%) rename {src/test => tests}/ui/foreign/issue-91370-foreign-fn-block-impl.rs (100%) rename {src/test => tests}/ui/foreign/issue-91370-foreign-fn-block-impl.stderr (100%) rename {src/test => tests}/ui/foreign/issue-99276-same-type-lifetimes.rs (100%) rename {src/test => tests}/ui/foreign/nil-decl-in-foreign.rs (100%) rename {src/test => tests}/ui/format-no-std.rs (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name1.rs (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name1.stderr (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name2.rs (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name2.stderr (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name4.rs (100%) rename {src/test => tests}/ui/fully-qualified-type/fully-qualified-type-name4.stderr (100%) rename {src/test => tests}/ui/fun-indirect-call.rs (100%) rename {src/test => tests}/ui/function-pointer/function-pointer-comparison-issue-54685.rs (100%) rename {src/test => tests}/ui/function-pointer/issue-102289.rs (100%) rename {src/test => tests}/ui/function-pointer/sized-ret-with-binder.rs (100%) rename {src/test => tests}/ui/function-pointer/unsized-ret.rs (100%) rename {src/test => tests}/ui/function-pointer/unsized-ret.stderr (100%) rename {src/test => tests}/ui/functional-struct-update/functional-struct-update-noncopyable.rs (100%) rename {src/test => tests}/ui/functional-struct-update/functional-struct-update-noncopyable.stderr (100%) rename {src/test => tests}/ui/functional-struct-update/functional-struct-update-respects-privacy.rs (100%) rename {src/test => tests}/ui/functional-struct-update/functional-struct-update-respects-privacy.stderr (100%) rename {src/test => tests}/ui/functions-closures/auxiliary/fn-abi.rs (100%) rename {src/test => tests}/ui/functions-closures/call-closure-from-overloaded-op.rs (100%) rename {src/test => tests}/ui/functions-closures/capture-clauses-boxed-closures.rs (100%) rename {src/test => tests}/ui/functions-closures/capture-clauses-unboxed-closures.rs (100%) rename {src/test => tests}/ui/functions-closures/clone-closure.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-bounds-can-capture-chan.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-expected-type/README.md (100%) rename {src/test => tests}/ui/functions-closures/closure-expected-type/expect-infer-supply-two-infers.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-expected-type/issue-38714.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-expected-type/supply-just-return-type.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-expected-type/supply-nothing.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-immediate.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-inference.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-inference2.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-reform.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-returning-closure.rs (100%) rename {src/test => tests}/ui/functions-closures/closure-to-fn-coercion.rs (100%) rename {src/test => tests}/ui/functions-closures/closure_to_fn_coercion-expected-types.rs (100%) rename {src/test => tests}/ui/functions-closures/copy-closure.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-abi.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-bare-assign.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-bare-coerce-to-block.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-bare-item.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-bare-size.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-bare-spawn.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-coerce-field.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-help-with-err-generic-is-not-function.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-help-with-err-generic-is-not-function.stderr (100%) rename {src/test => tests}/ui/functions-closures/fn-help-with-err.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-help-with-err.stderr (100%) rename {src/test => tests}/ui/functions-closures/fn-item-type-cast.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-item-type-coerce.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-item-type-zero-sized.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-lval.rs (100%) rename {src/test => tests}/ui/functions-closures/fn-type-infer.rs (100%) rename {src/test => tests}/ui/functions-closures/implied-bounds-closure-arg-outlives.rs (100%) rename {src/test => tests}/ui/functions-closures/nullable-pointer-opt-closures.rs (100%) rename {src/test => tests}/ui/functions-closures/parallel-codegen-closures.rs (100%) rename {src/test => tests}/ui/functions-closures/return-from-closure.rs (100%) rename {src/test => tests}/ui/future-incompatible-lint-group.rs (100%) rename {src/test => tests}/ui/future-incompatible-lint-group.stderr (100%) rename {src/test => tests}/ui/generator/addassign-yield.rs (100%) rename {src/test => tests}/ui/generator/async-generator-issue-67158.rs (100%) rename {src/test => tests}/ui/generator/async-generator-issue-67158.stderr (100%) rename {src/test => tests}/ui/generator/auto-trait-regions.rs (100%) rename {src/test => tests}/ui/generator/auto-trait-regions.stderr (100%) rename {src/test => tests}/ui/generator/auxiliary/metadata-sufficient-for-layout.rs (100%) rename {src/test => tests}/ui/generator/auxiliary/xcrate-reachable.rs (100%) rename {src/test => tests}/ui/generator/auxiliary/xcrate.rs (100%) rename {src/test => tests}/ui/generator/borrow-in-tail-expr.rs (100%) rename {src/test => tests}/ui/generator/borrowing.rs (100%) rename {src/test => tests}/ui/generator/borrowing.stderr (100%) rename {src/test => tests}/ui/generator/clone-impl-async.rs (100%) rename {src/test => tests}/ui/generator/clone-impl-async.stderr (100%) rename {src/test => tests}/ui/generator/clone-impl-static.rs (100%) rename {src/test => tests}/ui/generator/clone-impl-static.stderr (100%) rename {src/test => tests}/ui/generator/clone-impl.rs (100%) rename {src/test => tests}/ui/generator/clone-impl.stderr (100%) rename {src/test => tests}/ui/generator/conditional-drop.rs (100%) rename {src/test => tests}/ui/generator/control-flow.rs (100%) rename {src/test => tests}/ui/generator/derived-drop-parent-expr.rs (100%) rename {src/test => tests}/ui/generator/discriminant.rs (100%) rename {src/test => tests}/ui/generator/drop-and-replace.rs (100%) rename {src/test => tests}/ui/generator/drop-control-flow.rs (100%) rename {src/test => tests}/ui/generator/drop-env.rs (100%) rename {src/test => tests}/ui/generator/drop-track-addassign-yield.rs (100%) rename {src/test => tests}/ui/generator/drop-tracking-parent-expression.rs (100%) rename {src/test => tests}/ui/generator/drop-tracking-parent-expression.stderr (100%) rename {src/test => tests}/ui/generator/drop-tracking-yielding-in-match-guards.rs (100%) rename {src/test => tests}/ui/generator/drop-yield-twice.rs (100%) rename {src/test => tests}/ui/generator/drop-yield-twice.stderr (100%) rename {src/test => tests}/ui/generator/dropck-resume.rs (100%) rename {src/test => tests}/ui/generator/dropck-resume.stderr (100%) rename {src/test => tests}/ui/generator/dropck.rs (100%) rename {src/test => tests}/ui/generator/dropck.stderr (100%) rename {src/test => tests}/ui/generator/generator-region-requirements.migrate.stderr (100%) rename {src/test => tests}/ui/generator/generator-region-requirements.rs (100%) rename {src/test => tests}/ui/generator/generator-region-requirements.stderr (100%) rename {src/test => tests}/ui/generator/generator-resume-after-panic.rs (100%) rename {src/test => tests}/ui/generator/generator-with-nll.rs (100%) rename {src/test => tests}/ui/generator/generator-with-nll.stderr (100%) rename {src/test => tests}/ui/generator/generator-yielding-or-returning-itself.rs (100%) rename {src/test => tests}/ui/generator/generator-yielding-or-returning-itself.stderr (100%) rename {src/test => tests}/ui/generator/issue-102645.rs (100%) rename {src/test => tests}/ui/generator/issue-102645.stderr (100%) rename {src/test => tests}/ui/generator/issue-44197.rs (100%) rename {src/test => tests}/ui/generator/issue-45729-unsafe-in-generator.mir.stderr (100%) rename {src/test => tests}/ui/generator/issue-45729-unsafe-in-generator.rs (100%) rename {src/test => tests}/ui/generator/issue-45729-unsafe-in-generator.thir.stderr (100%) rename {src/test => tests}/ui/generator/issue-48048.rs (100%) rename {src/test => tests}/ui/generator/issue-48048.stderr (100%) rename {src/test => tests}/ui/generator/issue-52304.rs (100%) rename {src/test => tests}/ui/generator/issue-52398.rs (100%) rename {src/test => tests}/ui/generator/issue-52398.stderr (100%) rename {src/test => tests}/ui/generator/issue-53548-1.rs (100%) rename {src/test => tests}/ui/generator/issue-53548.rs (100%) rename {src/test => tests}/ui/generator/issue-57017.rs (100%) rename {src/test => tests}/ui/generator/issue-57084.rs (100%) rename {src/test => tests}/ui/generator/issue-57084.stderr (100%) rename {src/test => tests}/ui/generator/issue-57478.rs (100%) rename {src/test => tests}/ui/generator/issue-58888.rs (100%) rename {src/test => tests}/ui/generator/issue-61442-stmt-expr-with-drop.rs (100%) rename {src/test => tests}/ui/generator/issue-62506-two_awaits.rs (100%) rename {src/test => tests}/ui/generator/issue-64620-yield-array-element.rs (100%) rename {src/test => tests}/ui/generator/issue-64620-yield-array-element.stderr (100%) rename {src/test => tests}/ui/generator/issue-68112.rs (100%) rename {src/test => tests}/ui/generator/issue-68112.stderr (100%) rename {src/test => tests}/ui/generator/issue-69017.rs (100%) rename {src/test => tests}/ui/generator/issue-69039.rs (100%) rename {src/test => tests}/ui/generator/issue-87142.rs (100%) rename {src/test => tests}/ui/generator/issue-88653.rs (100%) rename {src/test => tests}/ui/generator/issue-88653.stderr (100%) rename {src/test => tests}/ui/generator/issue-91477.rs (100%) rename {src/test => tests}/ui/generator/issue-91477.stderr (100%) rename {src/test => tests}/ui/generator/issue-93161.rs (100%) rename {src/test => tests}/ui/generator/iterator-count.rs (100%) rename {src/test => tests}/ui/generator/layout-error.rs (100%) rename {src/test => tests}/ui/generator/layout-error.stderr (100%) rename {src/test => tests}/ui/generator/live-upvar-across-yield.rs (100%) rename {src/test => tests}/ui/generator/match-bindings.rs (100%) rename {src/test => tests}/ui/generator/match-bindings.stderr (100%) rename {src/test => tests}/ui/generator/metadata-sufficient-for-layout.rs (100%) rename {src/test => tests}/ui/generator/metadata-sufficient-for-layout.stderr (100%) rename {src/test => tests}/ui/generator/nested_generators.rs (100%) rename {src/test => tests}/ui/generator/niche-in-generator.rs (100%) rename {src/test => tests}/ui/generator/non-static-is-unpin.rs (100%) rename {src/test => tests}/ui/generator/not-send-sync.rs (100%) rename {src/test => tests}/ui/generator/not-send-sync.stderr (100%) rename {src/test => tests}/ui/generator/overlap-locals.rs (100%) rename {src/test => tests}/ui/generator/panic-drops-resume.rs (100%) rename {src/test => tests}/ui/generator/panic-drops.rs (100%) rename {src/test => tests}/ui/generator/panic-safe.rs (100%) rename {src/test => tests}/ui/generator/partial-drop.rs (100%) rename {src/test => tests}/ui/generator/partial-drop.stderr (100%) rename {src/test => tests}/ui/generator/partial-initialization-across-yield.rs (100%) rename {src/test => tests}/ui/generator/partial-initialization-across-yield.stderr (100%) rename {src/test => tests}/ui/generator/pattern-borrow.rs (100%) rename {src/test => tests}/ui/generator/pattern-borrow.stderr (100%) rename {src/test => tests}/ui/generator/pin-box-generator.rs (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-1.rs (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-1.stderr (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-2.rs (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-2.stderr (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-3.rs (100%) rename {src/test => tests}/ui/generator/print/generator-print-verbose-3.stderr (100%) rename {src/test => tests}/ui/generator/reborrow-mut-upvar.rs (100%) rename {src/test => tests}/ui/generator/reborrow-mut-upvar.stderr (100%) rename {src/test => tests}/ui/generator/ref-escapes-but-not-over-yield.rs (100%) rename {src/test => tests}/ui/generator/ref-escapes-but-not-over-yield.stderr (100%) rename {src/test => tests}/ui/generator/ref-upvar-not-send.rs (100%) rename {src/test => tests}/ui/generator/ref-upvar-not-send.stderr (100%) rename {src/test => tests}/ui/generator/reinit-in-match-guard.rs (100%) rename {src/test => tests}/ui/generator/resume-after-return.rs (100%) rename {src/test => tests}/ui/generator/resume-arg-late-bound.rs (100%) rename {src/test => tests}/ui/generator/resume-arg-late-bound.stderr (100%) rename {src/test => tests}/ui/generator/resume-arg-size.rs (100%) rename {src/test => tests}/ui/generator/resume-live-across-yield.rs (100%) rename {src/test => tests}/ui/generator/retain-resume-ref.rs (100%) rename {src/test => tests}/ui/generator/retain-resume-ref.stderr (100%) rename {src/test => tests}/ui/generator/size-moved-locals.rs (100%) rename {src/test => tests}/ui/generator/sized-yield.rs (100%) rename {src/test => tests}/ui/generator/sized-yield.stderr (100%) rename {src/test => tests}/ui/generator/smoke-resume-args.rs (100%) rename {src/test => tests}/ui/generator/smoke.rs (100%) rename {src/test => tests}/ui/generator/static-generators.rs (100%) rename {src/test => tests}/ui/generator/static-mut-reference-across-yield.rs (100%) rename {src/test => tests}/ui/generator/static-not-unpin.rs (100%) rename {src/test => tests}/ui/generator/static-not-unpin.stderr (100%) rename {src/test => tests}/ui/generator/static-reference-across-yield.rs (100%) rename {src/test => tests}/ui/generator/too-live-local-in-immovable-gen.rs (100%) rename {src/test => tests}/ui/generator/too-live-local-in-immovable-gen.stderr (100%) rename {src/test => tests}/ui/generator/too-many-parameters.rs (100%) rename {src/test => tests}/ui/generator/too-many-parameters.stderr (100%) rename {src/test => tests}/ui/generator/type-mismatch-error.rs (100%) rename {src/test => tests}/ui/generator/type-mismatch-error.stderr (100%) rename {src/test => tests}/ui/generator/type-mismatch-signature-deduction.rs (100%) rename {src/test => tests}/ui/generator/type-mismatch-signature-deduction.stderr (100%) rename {src/test => tests}/ui/generator/unresolved-ct-var-drop-tracking.rs (100%) rename {src/test => tests}/ui/generator/unresolved-ct-var-drop-tracking.stderr (100%) rename {src/test => tests}/ui/generator/unresolved-ct-var.rs (100%) rename {src/test => tests}/ui/generator/unresolved-ct-var.stderr (100%) rename {src/test => tests}/ui/generator/xcrate-reachable.rs (100%) rename {src/test => tests}/ui/generator/xcrate.rs (100%) rename {src/test => tests}/ui/generator/yield-in-args-rev.rs (100%) rename {src/test => tests}/ui/generator/yield-in-args-rev.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-args.rs (100%) rename {src/test => tests}/ui/generator/yield-in-args.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-box.rs (100%) rename {src/test => tests}/ui/generator/yield-in-box.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-const.rs (100%) rename {src/test => tests}/ui/generator/yield-in-const.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-function.rs (100%) rename {src/test => tests}/ui/generator/yield-in-function.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-initializer.rs (100%) rename {src/test => tests}/ui/generator/yield-in-initializer.stderr (100%) rename {src/test => tests}/ui/generator/yield-in-static.rs (100%) rename {src/test => tests}/ui/generator/yield-in-static.stderr (100%) rename {src/test => tests}/ui/generator/yield-outside-generator-issue-78653.rs (100%) rename {src/test => tests}/ui/generator/yield-outside-generator-issue-78653.stderr (100%) rename {src/test => tests}/ui/generator/yield-subtype.rs (100%) rename {src/test => tests}/ui/generator/yield-subtype.stderr (100%) rename {src/test => tests}/ui/generator/yield-while-iterating.rs (100%) rename {src/test => tests}/ui/generator/yield-while-iterating.stderr (100%) rename {src/test => tests}/ui/generator/yield-while-local-borrowed.rs (100%) rename {src/test => tests}/ui/generator/yield-while-local-borrowed.stderr (100%) rename {src/test => tests}/ui/generator/yield-while-ref-reborrowed.rs (100%) rename {src/test => tests}/ui/generator/yield-while-ref-reborrowed.stderr (100%) rename {src/test => tests}/ui/generator/yielding-in-match-guards.rs (100%) rename {src/test => tests}/ui/generic-associated-types/anonymize-bound-vars.rs (100%) rename {src/test => tests}/ui/generic-associated-types/auxiliary/foo_defn.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-1.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-1.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-2.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-3.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/hrtb-implied-3.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-100013.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-100013.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-80626.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87735.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87735.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87755.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87755.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87803.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-87803.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88382.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88382.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88460.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88460.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88526.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-88526.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-91762.rs (100%) rename {src/test => tests}/ui/generic-associated-types/bugs/issue-91762.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/collections-project-default.rs (100%) rename {src/test => tests}/ui/generic-associated-types/collections-project-default.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/collections.rs (100%) rename {src/test => tests}/ui/generic-associated-types/collectivity-regression.rs (100%) rename {src/test => tests}/ui/generic-associated-types/collectivity-regression.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/const-generics-gat-in-trait-return-type-1.rs (100%) rename {src/test => tests}/ui/generic-associated-types/const-generics-gat-in-trait-return-type-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/const-generics-gat-in-trait-return-type-3.rs (100%) rename {src/test => tests}/ui/generic-associated-types/const_params_have_right_type.rs (100%) rename {src/test => tests}/ui/generic-associated-types/const_params_have_right_type.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/constraint-assoc-type-suggestion.rs (100%) rename {src/test => tests}/ui/generic-associated-types/constraint-assoc-type-suggestion.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/construct_with_other_type.rs (100%) rename {src/test => tests}/ui/generic-associated-types/cross-crate-bounds.rs (100%) rename {src/test => tests}/ui/generic-associated-types/cross-crate-bounds.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/elided-in-expr-position.rs (100%) rename {src/test => tests}/ui/generic-associated-types/elided-in-expr-position.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/empty_generics.rs (100%) rename {src/test => tests}/ui/generic-associated-types/empty_generics.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/equality-bound.rs (100%) rename {src/test => tests}/ui/generic-associated-types/equality-bound.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/extended/lending_iterator.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/extended/lending_iterator.rs (100%) rename {src/test => tests}/ui/generic-associated-types/extended/lending_iterator_2.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/extended/lending_iterator_2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/gat-in-trait-path.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/gat-in-trait-path.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-generic-type-arg.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-generic-type-arg.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-missing-lifetime.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-missing-lifetime.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-parenthesised-args.rs (100%) rename {src/test => tests}/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/generic-associated-type-bounds.rs (100%) rename {src/test => tests}/ui/generic-associated-types/generic-associated-types-where.rs (100%) rename {src/test => tests}/ui/generic-associated-types/generic-associated-types-where.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.rs (100%) rename {src/test => tests}/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/impl_bounds.rs (100%) rename {src/test => tests}/ui/generic-associated-types/impl_bounds.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/impl_bounds_ok.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-101020.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-101020.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-102114.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-102114.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-102333.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-102335-gat.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-102335-gat.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-47206-where-clause.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-47206-where-clause.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-58694-parameter-out-of-range.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-62326-parameter-out-of-range.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-67424.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-67510-pass.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-67510-pass.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-67510.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-67510.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68641-check-gat-bounds.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68641-check-gat-bounds.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68642-broken-llvm-ir.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68642-broken-llvm-ir.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68643-broken-mir.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68643-broken-mir.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68644-codegen-selection.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68644-codegen-selection.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68645-codegen-fulfillment.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68645-codegen-fulfillment.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68648-1.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68648-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68648-2.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68649-pass.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68653.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68656-unsized-values.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-68656-unsized-values.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-70303.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-70304.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-70304.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-71176.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-71176.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74684-1.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74684-1.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74684-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74684-2.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74816.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74816.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74824.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-74824.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-76407.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-76535.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-76535.extended.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-76535.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-76826.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-78671.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-78671.extended.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-78671.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79422.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79422.extended.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79422.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79636-1.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79636-1.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79636-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-79636-2.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-80433-reduced.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-80433.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-80433.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-81487.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-81712-cyclic-traits.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-81712-cyclic-traits.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-81862.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-81862.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-84931.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-84931.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-85921.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-86218-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-86218.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-86483.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-86787.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-86787.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87258_a.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87258_a.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87258_b.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87258_b.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429-2.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429-associated-type-default.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429-associated-type-default.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429-specialization.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429-specialization.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87429.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87748.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-87750.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88287.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88287.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88360.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88360.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88405.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88459.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88595.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-88595.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-89008.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-89352.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-90014.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-90014.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-90729.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-91139.migrate.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-91139.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-91139.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-91883.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-91883.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92033.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92033.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92096.migrate.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92096.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92096.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92280.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-92954.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93141.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93262.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93340.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93341.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93342.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-93874.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-95305.rs (100%) rename {src/test => tests}/ui/generic-associated-types/issue-95305.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/iterable.rs (100%) rename {src/test => tests}/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs (100%) rename {src/test => tests}/ui/generic-associated-types/method-unsatified-assoc-type-predicate.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/mismatched-where-clause-regions.rs (100%) rename {src/test => tests}/ui/generic-associated-types/mismatched-where-clause-regions.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/missing-bounds.fixed (100%) rename {src/test => tests}/ui/generic-associated-types/missing-bounds.rs (100%) rename {src/test => tests}/ui/generic-associated-types/missing-bounds.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/missing-where-clause-on-trait.rs (100%) rename {src/test => tests}/ui/generic-associated-types/missing-where-clause-on-trait.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/missing_lifetime_args.rs (100%) rename {src/test => tests}/ui/generic-associated-types/missing_lifetime_args.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/missing_lifetime_const.rs (100%) rename {src/test => tests}/ui/generic-associated-types/missing_lifetime_const.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/own-bound-span.rs (100%) rename {src/test => tests}/ui/generic-associated-types/own-bound-span.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parameter_number_and_kind.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parameter_number_and_kind.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parameter_number_and_kind_impl.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parameter_number_and_kind_impl.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/in-trait-impl.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/in-trait.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-expected-token.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-expected-token.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-expressions.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-expressions.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-missing-gen_arg.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-missing-gen_arg.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-segments.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-segments.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-types.rs (100%) rename {src/test => tests}/ui/generic-associated-types/parse/trait-path-types.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/pointer_family.rs (100%) rename {src/test => tests}/ui/generic-associated-types/projection-bound-cycle-generic.rs (100%) rename {src/test => tests}/ui/generic-associated-types/projection-bound-cycle-generic.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/projection-bound-cycle.rs (100%) rename {src/test => tests}/ui/generic-associated-types/projection-bound-cycle.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/projection-type-lifetime-mismatch.rs (100%) rename {src/test => tests}/ui/generic-associated-types/projection-type-lifetime-mismatch.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/self-outlives-lint.rs (100%) rename {src/test => tests}/ui/generic-associated-types/self-outlives-lint.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/shadowing.rs (100%) rename {src/test => tests}/ui/generic-associated-types/shadowing.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/streaming_iterator.rs (100%) rename {src/test => tests}/ui/generic-associated-types/trait-objects.base.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/trait-objects.extended.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/trait-objects.rs (100%) rename {src/test => tests}/ui/generic-associated-types/type-param-defaults.rs (100%) rename {src/test => tests}/ui/generic-associated-types/type-param-defaults.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/unsatified-item-lifetime-bound.rs (100%) rename {src/test => tests}/ui/generic-associated-types/unsatified-item-lifetime-bound.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/unsatisfied-outlives-bound.rs (100%) rename {src/test => tests}/ui/generic-associated-types/unsatisfied-outlives-bound.stderr (100%) rename {src/test => tests}/ui/generic-associated-types/variance_constraints.rs (100%) rename {src/test => tests}/ui/generics/autobind.rs (100%) rename {src/test => tests}/ui/generics/auxiliary/default_type_params_xc.rs (100%) rename {src/test => tests}/ui/generics/bad-mid-path-type-params.rs (100%) rename {src/test => tests}/ui/generics/bad-mid-path-type-params.stderr (100%) rename {src/test => tests}/ui/generics/generic-alias-unique.rs (100%) rename {src/test => tests}/ui/generics/generic-arg-mismatch-recover.rs (100%) rename {src/test => tests}/ui/generics/generic-arg-mismatch-recover.stderr (100%) rename {src/test => tests}/ui/generics/generic-default-type-params-cross-crate.rs (100%) rename {src/test => tests}/ui/generics/generic-default-type-params.rs (100%) rename {src/test => tests}/ui/generics/generic-derived-type.rs (100%) rename {src/test => tests}/ui/generics/generic-exterior-unique.rs (100%) rename {src/test => tests}/ui/generics/generic-extern-lifetime.rs (100%) rename {src/test => tests}/ui/generics/generic-extern-lifetime.stderr (100%) rename {src/test => tests}/ui/generics/generic-extern-mangle.rs (100%) rename {src/test => tests}/ui/generics/generic-extern.rs (100%) rename {src/test => tests}/ui/generics/generic-extern.stderr (100%) rename {src/test => tests}/ui/generics/generic-fn-infer.rs (100%) rename {src/test => tests}/ui/generics/generic-fn-twice.rs (100%) rename {src/test => tests}/ui/generics/generic-fn-unique.rs (100%) rename {src/test => tests}/ui/generics/generic-fn.rs (100%) rename {src/test => tests}/ui/generics/generic-function-item-where-type.rs (100%) rename {src/test => tests}/ui/generics/generic-function-item-where-type.stderr (100%) rename {src/test => tests}/ui/generics/generic-impl-less-params-with-defaults.rs (100%) rename {src/test => tests}/ui/generics/generic-impl-less-params-with-defaults.stderr (100%) rename {src/test => tests}/ui/generics/generic-impl-more-params-with-defaults.rs (100%) rename {src/test => tests}/ui/generics/generic-impl-more-params-with-defaults.stderr (100%) rename {src/test => tests}/ui/generics/generic-ivec-leak.rs (100%) rename {src/test => tests}/ui/generics/generic-lifetime-trait-impl.rs (100%) rename {src/test => tests}/ui/generics/generic-lifetime-trait-impl.stderr (100%) rename {src/test => tests}/ui/generics/generic-newtype-struct.rs (100%) rename {src/test => tests}/ui/generics/generic-no-mangle.fixed (100%) rename {src/test => tests}/ui/generics/generic-no-mangle.rs (100%) rename {src/test => tests}/ui/generics/generic-no-mangle.stderr (100%) rename {src/test => tests}/ui/generics/generic-non-trailing-defaults.rs (100%) rename {src/test => tests}/ui/generics/generic-non-trailing-defaults.stderr (100%) rename {src/test => tests}/ui/generics/generic-object.rs (100%) rename {src/test => tests}/ui/generics/generic-param-attrs.rs (100%) rename {src/test => tests}/ui/generics/generic-recursive-tag.rs (100%) rename {src/test => tests}/ui/generics/generic-static-methods.rs (100%) rename {src/test => tests}/ui/generics/generic-tag-corruption.rs (100%) rename {src/test => tests}/ui/generics/generic-tag-local.rs (100%) rename {src/test => tests}/ui/generics/generic-tag-match.rs (100%) rename {src/test => tests}/ui/generics/generic-tag-values.rs (100%) rename {src/test => tests}/ui/generics/generic-tag.rs (100%) rename {src/test => tests}/ui/generics/generic-temporary.rs (100%) rename {src/test => tests}/ui/generics/generic-tup.rs (100%) rename {src/test => tests}/ui/generics/generic-type-less-params-with-defaults.rs (100%) rename {src/test => tests}/ui/generics/generic-type-less-params-with-defaults.stderr (100%) rename {src/test => tests}/ui/generics/generic-type-more-params-with-defaults.rs (100%) rename {src/test => tests}/ui/generics/generic-type-more-params-with-defaults.stderr (100%) rename {src/test => tests}/ui/generics/generic-type-params-forward-mention.rs (100%) rename {src/test => tests}/ui/generics/generic-type-params-forward-mention.stderr (100%) rename {src/test => tests}/ui/generics/generic-type-params-name-repr.rs (100%) rename {src/test => tests}/ui/generics/generic-type-params-name-repr.stderr (100%) rename {src/test => tests}/ui/generics/generic-type-synonym.rs (100%) rename {src/test => tests}/ui/generics/generic-type.rs (100%) rename {src/test => tests}/ui/generics/generic-unique.rs (100%) rename {src/test => tests}/ui/generics/issue-1112.rs (100%) rename {src/test => tests}/ui/generics/issue-2936.rs (100%) rename {src/test => tests}/ui/generics/issue-32498.rs (100%) rename {src/test => tests}/ui/generics/issue-333.rs (100%) rename {src/test => tests}/ui/generics/issue-59508-1.rs (100%) rename {src/test => tests}/ui/generics/issue-59508-1.stderr (100%) rename {src/test => tests}/ui/generics/issue-59508.fixed (100%) rename {src/test => tests}/ui/generics/issue-59508.rs (100%) rename {src/test => tests}/ui/generics/issue-59508.stderr (100%) rename {src/test => tests}/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs (100%) rename {src/test => tests}/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.stderr (100%) rename {src/test => tests}/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs (100%) rename {src/test => tests}/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr (100%) rename {src/test => tests}/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs (100%) rename {src/test => tests}/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr (100%) rename {src/test => tests}/ui/generics/issue-80512-param-reordering-with-defaults.rs (100%) rename {src/test => tests}/ui/generics/issue-80512-param-reordering-with-defaults.stderr (100%) rename {src/test => tests}/ui/generics/issue-94432-garbage-ice.rs (100%) rename {src/test => tests}/ui/generics/issue-94923.rs (100%) rename {src/test => tests}/ui/generics/issue-95208-ignore-qself.fixed (100%) rename {src/test => tests}/ui/generics/issue-95208-ignore-qself.rs (100%) rename {src/test => tests}/ui/generics/issue-95208-ignore-qself.stderr (100%) rename {src/test => tests}/ui/generics/issue-95208.fixed (100%) rename {src/test => tests}/ui/generics/issue-95208.rs (100%) rename {src/test => tests}/ui/generics/issue-95208.stderr (100%) rename {src/test => tests}/ui/generics/issue-98432.rs (100%) rename {src/test => tests}/ui/generics/issue-98432.stderr (100%) rename {src/test => tests}/ui/generics/lifetime-before-type-params.rs (100%) rename {src/test => tests}/ui/generics/lifetime-before-type-params.stderr (100%) rename {src/test => tests}/ui/generics/mid-path-type-params.rs (100%) rename {src/test => tests}/ui/generics/param-in-ct-in-ty-param-default.rs (100%) rename {src/test => tests}/ui/generics/param-in-ct-in-ty-param-default.stderr (100%) rename {src/test => tests}/ui/generics/post_monomorphization_error_backtrace.rs (100%) rename {src/test => tests}/ui/generics/post_monomorphization_error_backtrace.stderr (100%) rename {src/test => tests}/ui/generics/single-colon-path-not-const-generics.rs (100%) rename {src/test => tests}/ui/generics/single-colon-path-not-const-generics.stderr (100%) rename {src/test => tests}/ui/generics/type-params-in-for-each.rs (100%) rename {src/test => tests}/ui/generics/wrong-number-of-args.rs (100%) rename {src/test => tests}/ui/generics/wrong-number-of-args.stderr (100%) rename {src/test => tests}/ui/global-scope.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-bad-types.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-bad-types.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-exhaustive-pass.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-semantics.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-syntactic-pass.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/pat-tuple-4.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/pat-tuple-5.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/pat-tuple-5.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions0.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions1.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions1.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions2.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions2.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions3.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/range_pat_interactions3.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/slice_pattern_syntax_problem0.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/slice_pattern_syntax_problem0.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/slice_pattern_syntax_problem1.rs (100%) rename {src/test => tests}/ui/half-open-range-patterns/slice_pattern_syntax_problem1.stderr (100%) rename {src/test => tests}/ui/half-open-range-patterns/slice_pattern_syntax_problem2.rs (100%) rename {src/test => tests}/ui/hashmap/hashmap-capacity-overflow.rs (100%) rename {src/test => tests}/ui/hashmap/hashmap-index-mut.rs (100%) rename {src/test => tests}/ui/hashmap/hashmap-index-mut.stderr (100%) rename {src/test => tests}/ui/hashmap/hashmap-iter-value-lifetime.rs (100%) rename {src/test => tests}/ui/hashmap/hashmap-iter-value-lifetime.stderr (100%) rename {src/test => tests}/ui/hashmap/hashmap-lifetimes.rs (100%) rename {src/test => tests}/ui/hashmap/hashmap-lifetimes.stderr (100%) rename {src/test => tests}/ui/hashmap/hashmap-memory.rs (100%) rename {src/test => tests}/ui/hello.rs (100%) rename {src/test => tests}/ui/hello_world/main.rs (100%) rename {src/test => tests}/ui/higher-lifetime-bounds.rs (100%) rename {src/test => tests}/ui/higher-lifetime-bounds.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/complex.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/due-to-where-clause.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/due-to-where-clause.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-conflate-regions.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-conflate-regions.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-debruijn-object-types-in-closures.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-covariant.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-fn-like-trait-object.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-fn-like-trait.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-just-for-static.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-just-for-static.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-parse.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.polonius.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus-where-clause.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-resolve-lifetime.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-trait-object-paren-notation.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-trait-object-passed-to-closure.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-type-outlives.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-unboxed-closure-trait.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/hrtb-wrong-kind.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-100689.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-102899.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-30786.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-30786.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-36139-normalize-closure-sig.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-43623.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-46989.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-46989.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-57639.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-58451.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-58451.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-59311.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-59311.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-60283.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-88446.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-90177.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-95034.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/issue-95230.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-44005.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-56556.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-1.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-4.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-5.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-6.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-70120.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.migrate.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-74261.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-76956.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80706.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80956.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-81809.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89436.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90612.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90638.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90875.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.stderr (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.rs (100%) rename {src/test => tests}/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.bound_a_vs_free_x.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.free_x_vs_free_y.stderr (100%) rename {src/test => tests}/ui/hr-subtype/hr-subtype.rs (100%) rename {src/test => tests}/ui/hr-subtype/placeholder-pattern-fail.rs (100%) rename {src/test => tests}/ui/hr-subtype/placeholder-pattern-fail.stderr (100%) rename {src/test => tests}/ui/hr-subtype/placeholder-pattern.rs (100%) rename {src/test => tests}/ui/hr-subtype/return-static.rs (100%) rename {src/test => tests}/ui/hygiene/arguments.rs (100%) rename {src/test => tests}/ui/hygiene/arguments.stderr (100%) rename {src/test => tests}/ui/hygiene/assoc_item_ctxt.rs (100%) rename {src/test => tests}/ui/hygiene/assoc_item_ctxt.stderr (100%) rename {src/test => tests}/ui/hygiene/assoc_ty_bindings.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/codegen-attrs.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/def-site-async-await.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/fields.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/intercrate.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/legacy_interaction.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/local_inner_macros.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/methods.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/my_crate.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/needs_hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/nested-dollar-crate.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/not-libstd.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/opaque-hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/pub_hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/stdlib-prelude.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/transparent-basic.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/unhygienic_example.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/use_by_macro.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/variants.rs (100%) rename {src/test => tests}/ui/hygiene/auxiliary/xcrate.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-codegen-attrs.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-define-and-use.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-fields.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-glob-hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-glob-hygiene.stderr (100%) rename {src/test => tests}/ui/hygiene/cross-crate-methods.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-name-collision.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-name-hiding-2.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-name-hiding-2.stderr (100%) rename {src/test => tests}/ui/hygiene/cross-crate-name-hiding.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-name-hiding.stderr (100%) rename {src/test => tests}/ui/hygiene/cross-crate-redefine.rs (100%) rename {src/test => tests}/ui/hygiene/cross-crate-redefine.stderr (100%) rename {src/test => tests}/ui/hygiene/cross-crate-variants.rs (100%) rename {src/test => tests}/ui/hygiene/dollar-crate-modern.rs (100%) rename {src/test => tests}/ui/hygiene/duplicate_lifetimes.rs (100%) rename {src/test => tests}/ui/hygiene/duplicate_lifetimes.stderr (100%) rename {src/test => tests}/ui/hygiene/eager-from-opaque-2.rs (100%) rename {src/test => tests}/ui/hygiene/eager-from-opaque.rs (100%) rename {src/test => tests}/ui/hygiene/expansion-info-reset.rs (100%) rename {src/test => tests}/ui/hygiene/expansion-info-reset.stderr (100%) rename {src/test => tests}/ui/hygiene/extern-prelude-from-opaque-fail.rs (100%) rename {src/test => tests}/ui/hygiene/extern-prelude-from-opaque-fail.stderr (100%) rename {src/test => tests}/ui/hygiene/fields-definition.rs (100%) rename {src/test => tests}/ui/hygiene/fields-definition.stderr (100%) rename {src/test => tests}/ui/hygiene/fields-move.rs (100%) rename {src/test => tests}/ui/hygiene/fields-move.stderr (100%) rename {src/test => tests}/ui/hygiene/fields-numeric-borrowck.rs (100%) rename {src/test => tests}/ui/hygiene/fields-numeric-borrowck.stderr (100%) rename {src/test => tests}/ui/hygiene/fields.rs (100%) rename {src/test => tests}/ui/hygiene/fields.stderr (100%) rename {src/test => tests}/ui/hygiene/for-loop.rs (100%) rename {src/test => tests}/ui/hygiene/for-loop.stderr (100%) rename {src/test => tests}/ui/hygiene/format-args.rs (100%) rename {src/test => tests}/ui/hygiene/generate-mod.rs (100%) rename {src/test => tests}/ui/hygiene/generate-mod.stderr (100%) rename {src/test => tests}/ui/hygiene/generic_params.rs (100%) rename {src/test => tests}/ui/hygiene/globs.rs (100%) rename {src/test => tests}/ui/hygiene/globs.stderr (100%) rename {src/test => tests}/ui/hygiene/hir-res-hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/hygiene-dodging-1.rs (100%) rename {src/test => tests}/ui/hygiene/hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-1.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-1.stderr (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-2.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-2.stderr (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-3.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-3.stderr (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-4.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-label-4.stderr (100%) rename {src/test => tests}/ui/hygiene/hygienic-labels-in-let.rs (100%) rename {src/test => tests}/ui/hygiene/hygienic-labels.rs (100%) rename {src/test => tests}/ui/hygiene/impl_items-2.rs (100%) rename {src/test => tests}/ui/hygiene/impl_items-2.stderr (100%) rename {src/test => tests}/ui/hygiene/impl_items.rs (100%) rename {src/test => tests}/ui/hygiene/impl_items.stderr (100%) rename {src/test => tests}/ui/hygiene/intercrate.rs (100%) rename {src/test => tests}/ui/hygiene/intercrate.stderr (100%) rename {src/test => tests}/ui/hygiene/issue-15221.rs (100%) rename {src/test => tests}/ui/hygiene/issue-32922.rs (100%) rename {src/test => tests}/ui/hygiene/issue-40847.rs (100%) rename {src/test => tests}/ui/hygiene/issue-44128.rs (100%) rename {src/test => tests}/ui/hygiene/issue-47311.rs (100%) rename {src/test => tests}/ui/hygiene/issue-47312.rs (100%) rename {src/test => tests}/ui/hygiene/issue-61574-const-parameters.rs (100%) rename {src/test => tests}/ui/hygiene/issue-77523-def-site-async-await.rs (100%) rename {src/test => tests}/ui/hygiene/items.rs (100%) rename {src/test => tests}/ui/hygiene/lambda-var-hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/legacy_interaction.rs (100%) rename {src/test => tests}/ui/hygiene/lexical.rs (100%) rename {src/test => tests}/ui/hygiene/local_inner_macros.rs (100%) rename {src/test => tests}/ui/hygiene/macro-metavars-legacy.rs (100%) rename {src/test => tests}/ui/hygiene/macro-metavars-transparent.rs (100%) rename {src/test => tests}/ui/hygiene/missing-self-diag.rs (100%) rename {src/test => tests}/ui/hygiene/missing-self-diag.stderr (100%) rename {src/test => tests}/ui/hygiene/nested-dollar-crate.rs (100%) rename {src/test => tests}/ui/hygiene/nested_macro_privacy.rs (100%) rename {src/test => tests}/ui/hygiene/nested_macro_privacy.stderr (100%) rename {src/test => tests}/ui/hygiene/no_implicit_prelude-2018.rs (100%) rename {src/test => tests}/ui/hygiene/no_implicit_prelude-2018.stderr (100%) rename {src/test => tests}/ui/hygiene/no_implicit_prelude-2021.rs (100%) rename {src/test => tests}/ui/hygiene/no_implicit_prelude.rs (100%) rename {src/test => tests}/ui/hygiene/no_implicit_prelude.stderr (100%) rename {src/test => tests}/ui/hygiene/panic-location.rs (100%) rename {src/test => tests}/ui/hygiene/panic-location.run.stderr (100%) rename {src/test => tests}/ui/hygiene/pattern-macro.rs (100%) rename {src/test => tests}/ui/hygiene/pattern-macro.stderr (100%) rename {src/test => tests}/ui/hygiene/prelude-import-hygiene.rs (100%) rename {src/test => tests}/ui/hygiene/privacy-early.rs (100%) rename {src/test => tests}/ui/hygiene/privacy-early.stderr (100%) rename {src/test => tests}/ui/hygiene/privacy.rs (100%) rename {src/test => tests}/ui/hygiene/privacy.stderr (100%) rename {src/test => tests}/ui/hygiene/rustc-macro-transparency.rs (100%) rename {src/test => tests}/ui/hygiene/rustc-macro-transparency.stderr (100%) rename {src/test => tests}/ui/hygiene/specialization.rs (100%) rename {src/test => tests}/ui/hygiene/stdlib-prelude-from-opaque-early.rs (100%) rename {src/test => tests}/ui/hygiene/stdlib-prelude-from-opaque-late.rs (100%) rename {src/test => tests}/ui/hygiene/thread-local-not-in-prelude.rs (100%) rename {src/test => tests}/ui/hygiene/trait_items-2.rs (100%) rename {src/test => tests}/ui/hygiene/trait_items.rs (100%) rename {src/test => tests}/ui/hygiene/trait_items.stderr (100%) rename {src/test => tests}/ui/hygiene/traits-in-scope.rs (100%) rename {src/test => tests}/ui/hygiene/transparent-basic.rs (100%) rename {src/test => tests}/ui/hygiene/unpretty-debug.rs (100%) rename {src/test => tests}/ui/hygiene/unpretty-debug.stdout (100%) rename {src/test => tests}/ui/hygiene/wrap_unhygienic_example.rs (100%) rename {src/test => tests}/ui/hygiene/xcrate.rs (100%) rename {src/test => tests}/ui/illegal-sized-bound/mutability-mismatch-arg.fixed (100%) rename {src/test => tests}/ui/illegal-sized-bound/mutability-mismatch-arg.rs (100%) rename {src/test => tests}/ui/illegal-sized-bound/mutability-mismatch-arg.stderr (100%) rename {src/test => tests}/ui/illegal-sized-bound/mutability-mismatch.rs (100%) rename {src/test => tests}/ui/illegal-sized-bound/mutability-mismatch.stderr (100%) rename {src/test => tests}/ui/illegal-sized-bound/regular.rs (100%) rename {src/test => tests}/ui/illegal-sized-bound/regular.stderr (100%) rename {src/test => tests}/ui/illegal-ufcs-drop.fixed (100%) rename {src/test => tests}/ui/illegal-ufcs-drop.rs (100%) rename {src/test => tests}/ui/illegal-ufcs-drop.stderr (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/assoc-type.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/assoc-type.stderr (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/constant-used-as-arraylen.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/dyn-trait.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/dyn-trait.stderr (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/explicit-and-elided-same-header.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/inherent-impl.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/path-elided.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/path-elided.stderr (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/path-underscore.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/ref-underscore.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/trait-elided.rs (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/trait-elided.stderr (100%) rename {src/test => tests}/ui/impl-header-lifetime-elision/trait-underscore.rs (100%) rename {src/test => tests}/ui/impl-inherent-non-conflict.rs (100%) rename {src/test => tests}/ui/impl-not-adjacent-to-type.rs (100%) rename {src/test => tests}/ui/impl-privacy-xc-1.rs (100%) rename {src/test => tests}/ui/impl-trait/associated-impl-trait-type-generic-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/associated-impl-trait-type-trivial.rs (100%) rename {src/test => tests}/ui/impl-trait/associated-impl-trait-type.rs (100%) rename {src/test => tests}/ui/impl-trait/async_scope_creep.rs (100%) rename {src/test => tests}/ui/impl-trait/auto-trait-leak-rpass.rs (100%) rename {src/test => tests}/ui/impl-trait/auto-trait-leak.rs (100%) rename {src/test => tests}/ui/impl-trait/auto-trait-leak.stderr (100%) rename {src/test => tests}/ui/impl-trait/auto-trait-leak2.rs (100%) rename {src/test => tests}/ui/impl-trait/auto-trait-leak2.stderr (100%) rename {src/test => tests}/ui/impl-trait/auto-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/auto-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/autoderef.rs (100%) rename {src/test => tests}/ui/impl-trait/auxiliary/extra-item.rs (100%) rename {src/test => tests}/ui/impl-trait/auxiliary/no_method_suggested_traits.rs (100%) rename {src/test => tests}/ui/impl-trait/auxiliary/xcrate.rs (100%) rename {src/test => tests}/ui/impl-trait/bound-normalization-fail.rs (100%) rename {src/test => tests}/ui/impl-trait/bound-normalization-fail.stderr (100%) rename {src/test => tests}/ui/impl-trait/bound-normalization-pass.rs (100%) rename {src/test => tests}/ui/impl-trait/bounds_regression.rs (100%) rename {src/test => tests}/ui/impl-trait/can-return-unconstrained-closure.rs (100%) rename {src/test => tests}/ui/impl-trait/closure-calling-parent-fn.rs (100%) rename {src/test => tests}/ui/impl-trait/closure-in-impl-trait-arg.rs (100%) rename {src/test => tests}/ui/impl-trait/closure-in-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/cross-return-site-inference.rs (100%) rename {src/test => tests}/ui/impl-trait/cross-return-site-inference.stderr (100%) rename {src/test => tests}/ui/impl-trait/deduce-signature-from-supertrait.rs (100%) rename {src/test => tests}/ui/impl-trait/deprecated_annotation.rs (100%) rename {src/test => tests}/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/divergence.rs (100%) rename {src/test => tests}/ui/impl-trait/does-not-live-long-enough.rs (100%) rename {src/test => tests}/ui/impl-trait/does-not-live-long-enough.stderr (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-elided-two-inputs-assoc.rs (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-elided-two-inputs-param.rs (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-elided-two-inputs-ref-param.rs (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-return-should-be-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/equal-hidden-lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/equal-hidden-lifetimes.stderr (100%) rename {src/test => tests}/ui/impl-trait/equality-rpass.rs (100%) rename {src/test => tests}/ui/impl-trait/equality-rpass.stderr (100%) rename {src/test => tests}/ui/impl-trait/equality.rs (100%) rename {src/test => tests}/ui/impl-trait/equality.stderr (100%) rename {src/test => tests}/ui/impl-trait/equality2.rs (100%) rename {src/test => tests}/ui/impl-trait/equality2.stderr (100%) rename {src/test => tests}/ui/impl-trait/example-calendar.rs (100%) rename {src/test => tests}/ui/impl-trait/example-st.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/const-args.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.stderr (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.rs (100%) rename {src/test => tests}/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.stderr (100%) rename {src/test => tests}/ui/impl-trait/extra-item.rs (100%) rename {src/test => tests}/ui/impl-trait/extra-item.stderr (100%) rename {src/test => tests}/ui/impl-trait/fallback.rs (100%) rename {src/test => tests}/ui/impl-trait/fallback_inference.rs (100%) rename {src/test => tests}/ui/impl-trait/fallback_inference.stderr (100%) rename {src/test => tests}/ui/impl-trait/feature-self-return-type.rs (100%) rename {src/test => tests}/ui/impl-trait/feature-self-return-type.stderr (100%) rename {src/test => tests}/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2015.stderr (100%) rename {src/test => tests}/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2021.stderr (100%) rename {src/test => tests}/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.rs (100%) rename {src/test => tests}/ui/impl-trait/hidden-lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/hidden-lifetimes.stderr (100%) rename {src/test => tests}/ui/impl-trait/hidden-type-is-opaque-2.rs (100%) rename {src/test => tests}/ui/impl-trait/hidden-type-is-opaque-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/hidden-type-is-opaque.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-hrtb-bounds-2.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-hrtb-bounds-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-hrtb-bounds.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-hrtb-bounds.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-parsing-ambiguities.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-parsing-ambiguities.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-predefined-lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-fn-predefined-lifetimes.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-generic-mismatch-ab.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-generic-mismatch-ab.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-generic-mismatch.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-generic-mismatch.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-trait-in-macro.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-trait-in-macro.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl-trait-plus-priority.rs (100%) rename {src/test => tests}/ui/impl-trait/impl-trait-plus-priority.stderr (100%) rename {src/test => tests}/ui/impl-trait/impl_fn_associativity.rs (100%) rename {src/test => tests}/ui/impl-trait/impl_trait_projections.rs (100%) rename {src/test => tests}/ui/impl-trait/impl_trait_projections.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/auxiliary/rpitit.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/box-coerce-span-in-default.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/box-coerce-span-in-default.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/deep-match-works.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/deep-match.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/deep-match.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body-type-err-2.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body-type-err-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body-type-err.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body-type-err.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body-with-rpit.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/default-body.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/doesnt-satisfy.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/doesnt-satisfy.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/early.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/encode.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/foreign.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/generics-mismatch.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/generics-mismatch.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/issue-102140.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/issue-102140.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/issue-102301.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/issue-102571.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/issue-102571.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/method-signature-matches.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/method-signature-matches.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/nested-rpitit.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/object-safety.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/object-safety.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/opaque-in-impl.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/reveal.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/signature-mismatch.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/signature-mismatch.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/specialization-broken.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/specialization-broken.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/specialization-substs-remap.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/success.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/trait-more-generics-than-impl.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/trait-more-generics-than-impl.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/wf-bounds.rs (100%) rename {src/test => tests}/ui/impl-trait/in-trait/wf-bounds.stderr (100%) rename {src/test => tests}/ui/impl-trait/in-trait/where-clause.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-100075-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-100075-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-100075.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-100075.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-100187.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-102605.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-102605.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-103181-1.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-103181-1.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-103181-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-103181-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-103599.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-103599.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-35668.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-35668.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-46959.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-49556.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-49579.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-49685.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-51185.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-54966.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-54966.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-1.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-1.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-3.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-55872-3.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-55872.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-55872.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-56445.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-68532.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-72911.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-72911.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-86465.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-86465.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-87450.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-87450.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-99073-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-99073-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-99073.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-99073.stderr (100%) rename {src/test => tests}/ui/impl-trait/issue-99642-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-99642.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-99914.rs (100%) rename {src/test => tests}/ui/impl-trait/issue-99914.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/infinite-impl-trait-issue-38064.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-104815.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-42479.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-49376.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-52128.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-53457.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54600.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54600.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54840.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54840.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54895.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-54895.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-55608-captures-empty-region.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57464-unexpected-regions.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-impl-trait-in-path.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-58504.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-58504.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-58956.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-58956.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-62742.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-62742.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-65581.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-67830.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-67830.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-70877.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-70877.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-70971.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-70971.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-74282.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-74282.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-77987.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-78722.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-78722.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-79099.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-79099.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-82139.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-82139.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-83919.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-83919.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-84073.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-84073.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-84919.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-84919.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86201.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86642.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86642.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86719.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86719.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86800.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-86800.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-87295.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-87295.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-87340.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-87340.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-88236-2.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-88236-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-88236.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-88236.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-89312.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-92305.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-92305.stderr (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-93788.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-99348-impl-compatibility.rs (100%) rename {src/test => tests}/ui/impl-trait/issues/issue-99348-impl-compatibility.stderr (100%) rename {src/test => tests}/ui/impl-trait/lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/lifetimes2.rs (100%) rename {src/test => tests}/ui/impl-trait/method-suggestion-no-duplication.rs (100%) rename {src/test => tests}/ui/impl-trait/method-suggestion-no-duplication.stderr (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/error-handling-2.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/error-handling-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/error-handling.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/error-handling.stderr (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/inverse-bounds.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-elided.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-type-alias-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-other.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.stderr (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.rs (100%) rename {src/test => tests}/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.stderr (100%) rename {src/test => tests}/ui/impl-trait/must_outlive_least_region_or_bound.rs (100%) rename {src/test => tests}/ui/impl-trait/must_outlive_least_region_or_bound.stderr (100%) rename {src/test => tests}/ui/impl-trait/needs_least_region_or_bound.rs (100%) rename {src/test => tests}/ui/impl-trait/negative-reasoning.rs (100%) rename {src/test => tests}/ui/impl-trait/negative-reasoning.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait2.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait2.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait3.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2-tait3.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type2.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait2.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait2.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait3.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3-tait3.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type3.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type4.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-return-type4.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-rpit-hrtb.rs (100%) rename {src/test => tests}/ui/impl-trait/nested-rpit-hrtb.stderr (100%) rename {src/test => tests}/ui/impl-trait/nested-rpit-with-anonymous-lifetimes.rs (100%) rename {src/test => tests}/ui/impl-trait/nested_impl_trait.rs (100%) rename {src/test => tests}/ui/impl-trait/nested_impl_trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/nesting.rs (100%) rename {src/test => tests}/ui/impl-trait/no-method-suggested-traits.rs (100%) rename {src/test => tests}/ui/impl-trait/no-method-suggested-traits.stderr (100%) rename {src/test => tests}/ui/impl-trait/no-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/no-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/normalize-tait-in-const.rs (100%) rename {src/test => tests}/ui/impl-trait/normalize-tait-in-const.stderr (100%) rename {src/test => tests}/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.rs (100%) rename {src/test => tests}/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr (100%) rename {src/test => tests}/ui/impl-trait/printing-binder.rs (100%) rename {src/test => tests}/ui/impl-trait/printing-binder.stderr (100%) rename {src/test => tests}/ui/impl-trait/private_unused.rs (100%) rename {src/test => tests}/ui/impl-trait/projection-mismatch-in-impl-where-clause.rs (100%) rename {src/test => tests}/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr (100%) rename {src/test => tests}/ui/impl-trait/projection.rs (100%) rename {src/test => tests}/ui/impl-trait/question_mark.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-impl-trait-type-direct.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-impl-trait-type-indirect.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-impl-trait-type-indirect.stderr (100%) rename {src/test => tests}/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.stderr (100%) rename {src/test => tests}/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.rs (100%) rename {src/test => tests}/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr (100%) rename {src/test => tests}/ui/impl-trait/recursive-type-alias-impl-trait-declaration.rs (100%) rename {src/test => tests}/ui/impl-trait/region-escape-via-bound-contravariant-closure.rs (100%) rename {src/test => tests}/ui/impl-trait/region-escape-via-bound-contravariant.rs (100%) rename {src/test => tests}/ui/impl-trait/region-escape-via-bound.rs (100%) rename {src/test => tests}/ui/impl-trait/region-escape-via-bound.stderr (100%) rename {src/test => tests}/ui/impl-trait/return-position-impl-trait-minimal.rs (100%) rename {src/test => tests}/ui/impl-trait/rpit-assoc-pair-with-lifetime.rs (100%) rename {src/test => tests}/ui/impl-trait/rpit-not-sized.rs (100%) rename {src/test => tests}/ui/impl-trait/rpit-not-sized.stderr (100%) rename {src/test => tests}/ui/impl-trait/static-return-lifetime-infered.rs (100%) rename {src/test => tests}/ui/impl-trait/static-return-lifetime-infered.stderr (100%) rename {src/test => tests}/ui/impl-trait/suggest-calling-rpit-closure.rs (100%) rename {src/test => tests}/ui/impl-trait/suggest-calling-rpit-closure.stderr (100%) rename {src/test => tests}/ui/impl-trait/trait_resolution.rs (100%) rename {src/test => tests}/ui/impl-trait/trait_type.rs (100%) rename {src/test => tests}/ui/impl-trait/trait_type.stderr (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other.rs (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other.stderr (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other2.rs (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other2.stderr (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other3.rs (100%) rename {src/test => tests}/ui/impl-trait/two_tait_defining_each_other3.stderr (100%) rename {src/test => tests}/ui/impl-trait/type-alias-generic-param.rs (100%) rename {src/test => tests}/ui/impl-trait/type-alias-impl-trait-in-fn-body.rs (100%) rename {src/test => tests}/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.rs (100%) rename {src/test => tests}/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.stderr (100%) rename {src/test => tests}/ui/impl-trait/type_parameters_captured.rs (100%) rename {src/test => tests}/ui/impl-trait/type_parameters_captured.stderr (100%) rename {src/test => tests}/ui/impl-trait/unactionable_diagnostic.fixed (100%) rename {src/test => tests}/ui/impl-trait/unactionable_diagnostic.rs (100%) rename {src/test => tests}/ui/impl-trait/unactionable_diagnostic.stderr (100%) rename {src/test => tests}/ui/impl-trait/universal-mismatched-type.rs (100%) rename {src/test => tests}/ui/impl-trait/universal-mismatched-type.stderr (100%) rename {src/test => tests}/ui/impl-trait/universal-two-impl-traits.rs (100%) rename {src/test => tests}/ui/impl-trait/universal-two-impl-traits.stderr (100%) rename {src/test => tests}/ui/impl-trait/universal_hrtb_anon.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_hrtb_named.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_in_adt_in_parameters.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_in_impl_trait_in_parameters.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_in_trait_defn_parameters.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_multiple_bounds.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_wrong_bounds.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_wrong_bounds.stderr (100%) rename {src/test => tests}/ui/impl-trait/universal_wrong_hrtb.rs (100%) rename {src/test => tests}/ui/impl-trait/universal_wrong_hrtb.stderr (100%) rename {src/test => tests}/ui/impl-trait/unsafety-checking-cycle.rs (100%) rename {src/test => tests}/ui/impl-trait/wf-eval-order.rs (100%) rename {src/test => tests}/ui/impl-trait/where-allowed-2.rs (100%) rename {src/test => tests}/ui/impl-trait/where-allowed-2.stderr (100%) rename {src/test => tests}/ui/impl-trait/where-allowed.rs (100%) rename {src/test => tests}/ui/impl-trait/where-allowed.stderr (100%) rename {src/test => tests}/ui/impl-trait/xcrate.rs (100%) rename {src/test => tests}/ui/impl-trait/xcrate_simple.rs (100%) rename {src/test => tests}/ui/impl-unused-rps-in-assoc-type.rs (100%) rename {src/test => tests}/ui/impl-unused-rps-in-assoc-type.stderr (100%) rename {src/test => tests}/ui/impl-unused-tps-inherent.rs (100%) rename {src/test => tests}/ui/impl-unused-tps-inherent.stderr (100%) rename {src/test => tests}/ui/impl-unused-tps.rs (100%) rename {src/test => tests}/ui/impl-unused-tps.stderr (100%) rename {src/test => tests}/ui/implicit-method-bind.rs (100%) rename {src/test => tests}/ui/implicit-method-bind.stderr (100%) rename {src/test => tests}/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs (100%) rename {src/test => tests}/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.stderr (100%) rename {src/test => tests}/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs (100%) rename {src/test => tests}/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr (100%) rename {src/test => tests}/ui/implied-bounds/hrlt-implied-trait-bounds-roundtrip.rs (100%) rename {src/test => tests}/ui/implied-bounds/impl-header-unnormalized-types.rs (100%) rename {src/test => tests}/ui/implied-bounds/impl-header-unnormalized-types.stderr (100%) rename {src/test => tests}/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs (100%) rename {src/test => tests}/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr (100%) rename {src/test => tests}/ui/implied-bounds/impl-implied-bounds-compatibility.rs (100%) rename {src/test => tests}/ui/implied-bounds/impl-implied-bounds-compatibility.stderr (100%) rename {src/test => tests}/ui/implied-bounds/issue-100690.rs (100%) rename {src/test => tests}/ui/implied-bounds/issue-100690.stderr (100%) rename {src/test => tests}/ui/implied-bounds/issue-101951.rs (100%) rename {src/test => tests}/ui/imports/absolute-paths-in-nested-use-groups.rs (100%) rename {src/test => tests}/ui/imports/absolute-paths-in-nested-use-groups.stderr (100%) rename {src/test => tests}/ui/imports/auxiliary/gensymed.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/glob-conflict.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/import_crate_var.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/issue-36881-aux.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/issue-52891.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/issue-55811.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/issue-56125.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/issue-59764.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/overlapping_pub_trait_source.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/two_macros.rs (100%) rename {src/test => tests}/ui/imports/auxiliary/unnamed_pub_trait_source.rs (100%) rename {src/test => tests}/ui/imports/bad-import-in-nested.rs (100%) rename {src/test => tests}/ui/imports/bad-import-in-nested.stderr (100%) rename {src/test => tests}/ui/imports/bad-import-with-rename.rs (100%) rename {src/test => tests}/ui/imports/bad-import-with-rename.stderr (100%) rename {src/test => tests}/ui/imports/double-import.rs (100%) rename {src/test => tests}/ui/imports/double-import.stderr (100%) rename {src/test => tests}/ui/imports/duplicate.rs (100%) rename {src/test => tests}/ui/imports/duplicate.stderr (100%) rename {src/test => tests}/ui/imports/export-glob-imports-target.rs (100%) rename {src/test => tests}/ui/imports/export-multi.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-fail.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-fail.stderr (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-macro-alias.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-macro-item.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-macro-self.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-self/extern-crate-self-pass.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-used.rs (100%) rename {src/test => tests}/ui/imports/extern-crate-used.stderr (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-absolute-expanded.rs (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-cfg.rs (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-fail.rs (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-fail.stderr (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-pass.rs (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-restricted-shadowing.rs (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-restricted-shadowing.stderr (100%) rename {src/test => tests}/ui/imports/extern-prelude-extern-crate-shadowing.rs (100%) rename {src/test => tests}/ui/imports/gensymed.rs (100%) rename {src/test => tests}/ui/imports/glob-conflict-cross-crate.rs (100%) rename {src/test => tests}/ui/imports/glob-conflict-cross-crate.stderr (100%) rename {src/test => tests}/ui/imports/glob-cycles.rs (100%) rename {src/test => tests}/ui/imports/glob-resolve1.rs (100%) rename {src/test => tests}/ui/imports/glob-resolve1.stderr (100%) rename {src/test => tests}/ui/imports/glob-shadowing.rs (100%) rename {src/test => tests}/ui/imports/glob-shadowing.stderr (100%) rename {src/test => tests}/ui/imports/glob-use-std.rs (100%) rename {src/test => tests}/ui/imports/import-crate-var.rs (100%) rename {src/test => tests}/ui/imports/import-crate-var.stderr (100%) rename {src/test => tests}/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs (100%) rename {src/test => tests}/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans_macros.rs (100%) rename {src/test => tests}/ui/imports/import-crate-with-invalid-spans/main.rs (100%) rename {src/test => tests}/ui/imports/import-from-missing.rs (100%) rename {src/test => tests}/ui/imports/import-from-missing.stderr (100%) rename {src/test => tests}/ui/imports/import-from.rs (100%) rename {src/test => tests}/ui/imports/import-glob-0-rpass.rs (100%) rename {src/test => tests}/ui/imports/import-glob-0.rs (100%) rename {src/test => tests}/ui/imports/import-glob-0.stderr (100%) rename {src/test => tests}/ui/imports/import-glob-1.rs (100%) rename {src/test => tests}/ui/imports/import-glob-circular.rs (100%) rename {src/test => tests}/ui/imports/import-glob-circular.stderr (100%) rename {src/test => tests}/ui/imports/import-glob-crate.rs (100%) rename {src/test => tests}/ui/imports/import-in-block.rs (100%) rename {src/test => tests}/ui/imports/import-loop-2.rs (100%) rename {src/test => tests}/ui/imports/import-loop-2.stderr (100%) rename {src/test => tests}/ui/imports/import-loop.rs (100%) rename {src/test => tests}/ui/imports/import-loop.stderr (100%) rename {src/test => tests}/ui/imports/import-prefix-macro-1.rs (100%) rename {src/test => tests}/ui/imports/import-prefix-macro-1.stderr (100%) rename {src/test => tests}/ui/imports/import-prefix-macro-2.rs (100%) rename {src/test => tests}/ui/imports/import-prefix-macro-2.stderr (100%) rename {src/test => tests}/ui/imports/import-prefix-macro.rs (100%) rename {src/test => tests}/ui/imports/import-rename.rs (100%) rename {src/test => tests}/ui/imports/import-rpass.rs (100%) rename {src/test => tests}/ui/imports/import-trailing-comma.rs (100%) rename {src/test => tests}/ui/imports/import-trait-method.rs (100%) rename {src/test => tests}/ui/imports/import-trait-method.stderr (100%) rename {src/test => tests}/ui/imports/import.rs (100%) rename {src/test => tests}/ui/imports/import.stderr (100%) rename {src/test => tests}/ui/imports/import2-rpass.rs (100%) rename {src/test => tests}/ui/imports/import2.rs (100%) rename {src/test => tests}/ui/imports/import2.stderr (100%) rename {src/test => tests}/ui/imports/import3-rpass.rs (100%) rename {src/test => tests}/ui/imports/import3.rs (100%) rename {src/test => tests}/ui/imports/import3.stderr (100%) rename {src/test => tests}/ui/imports/import4-rpass.rs (100%) rename {src/test => tests}/ui/imports/import4.rs (100%) rename {src/test => tests}/ui/imports/import4.stderr (100%) rename {src/test => tests}/ui/imports/import5.rs (100%) rename {src/test => tests}/ui/imports/import6.rs (100%) rename {src/test => tests}/ui/imports/import7.rs (100%) rename {src/test => tests}/ui/imports/import8.rs (100%) rename {src/test => tests}/ui/imports/imports.rs (100%) rename {src/test => tests}/ui/imports/inaccessible_type_aliases.rs (100%) rename {src/test => tests}/ui/imports/inaccessible_type_aliases.stderr (100%) rename {src/test => tests}/ui/imports/issue-13404.rs (100%) rename {src/test => tests}/ui/imports/issue-13404.stderr (100%) rename {src/test => tests}/ui/imports/issue-1697.rs (100%) rename {src/test => tests}/ui/imports/issue-1697.stderr (100%) rename {src/test => tests}/ui/imports/issue-18083.rs (100%) rename {src/test => tests}/ui/imports/issue-19498.rs (100%) rename {src/test => tests}/ui/imports/issue-19498.stderr (100%) rename {src/test => tests}/ui/imports/issue-24081.rs (100%) rename {src/test => tests}/ui/imports/issue-24081.stderr (100%) rename {src/test => tests}/ui/imports/issue-24883.rs (100%) rename {src/test => tests}/ui/imports/issue-25396.rs (100%) rename {src/test => tests}/ui/imports/issue-25396.stderr (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/A/B.rs (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/A/C.rs (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/A/mod.rs (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/issue-26873-multifile.rs (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/issue-26873-onefile.rs (100%) rename {src/test => tests}/ui/imports/issue-26873-multifile/mod.rs (100%) rename {src/test => tests}/ui/imports/issue-26886.rs (100%) rename {src/test => tests}/ui/imports/issue-26886.stderr (100%) rename {src/test => tests}/ui/imports/issue-26930.rs (100%) rename {src/test => tests}/ui/imports/issue-28134.rs (100%) rename {src/test => tests}/ui/imports/issue-28134.stderr (100%) rename {src/test => tests}/ui/imports/issue-28388-1.rs (100%) rename {src/test => tests}/ui/imports/issue-28388-1.stderr (100%) rename {src/test => tests}/ui/imports/issue-28388-2.rs (100%) rename {src/test => tests}/ui/imports/issue-28388-2.stderr (100%) rename {src/test => tests}/ui/imports/issue-2937.rs (100%) rename {src/test => tests}/ui/imports/issue-2937.stderr (100%) rename {src/test => tests}/ui/imports/issue-30560.rs (100%) rename {src/test => tests}/ui/imports/issue-30560.stderr (100%) rename {src/test => tests}/ui/imports/issue-31212.rs (100%) rename {src/test => tests}/ui/imports/issue-31212.stderr (100%) rename {src/test => tests}/ui/imports/issue-32119.rs (100%) rename {src/test => tests}/ui/imports/issue-32222.rs (100%) rename {src/test => tests}/ui/imports/issue-32354-suggest-import-rename.fixed (100%) rename {src/test => tests}/ui/imports/issue-32354-suggest-import-rename.rs (100%) rename {src/test => tests}/ui/imports/issue-32354-suggest-import-rename.stderr (100%) rename {src/test => tests}/ui/imports/issue-32833.rs (100%) rename {src/test => tests}/ui/imports/issue-32833.stderr (100%) rename {src/test => tests}/ui/imports/issue-33464.rs (100%) rename {src/test => tests}/ui/imports/issue-33464.stderr (100%) rename {src/test => tests}/ui/imports/issue-36881.rs (100%) rename {src/test => tests}/ui/imports/issue-36881.stderr (100%) rename {src/test => tests}/ui/imports/issue-37887.rs (100%) rename {src/test => tests}/ui/imports/issue-37887.stderr (100%) rename {src/test => tests}/ui/imports/issue-38293.rs (100%) rename {src/test => tests}/ui/imports/issue-38293.stderr (100%) rename {src/test => tests}/ui/imports/issue-4366-2.rs (100%) rename {src/test => tests}/ui/imports/issue-4366-2.stderr (100%) rename {src/test => tests}/ui/imports/issue-4366.rs (100%) rename {src/test => tests}/ui/imports/issue-4366.stderr (100%) rename {src/test => tests}/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.fixed (100%) rename {src/test => tests}/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs (100%) rename {src/test => tests}/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/auxiliary/issue-45829-a.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/auxiliary/issue-45829-b.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/import-self.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/import-self.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/import-twice.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/import-twice.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/issue-45829.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/issue-45829.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern-vs-use.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern-vs-use.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern-with-tab.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern-with-tab.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-extern.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-use-vs-extern.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-use-vs-extern.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-use-with-tabs.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-use-with-tabs.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-with-path.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename-with-path.stderr (100%) rename {src/test => tests}/ui/imports/issue-45829/rename.rs (100%) rename {src/test => tests}/ui/imports/issue-45829/rename.stderr (100%) rename {src/test => tests}/ui/imports/issue-47623.rs (100%) rename {src/test => tests}/ui/imports/issue-47623.stderr (100%) rename {src/test => tests}/ui/imports/issue-4865-1.rs (100%) rename {src/test => tests}/ui/imports/issue-4865-2.rs (100%) rename {src/test => tests}/ui/imports/issue-4865-3.rs (100%) rename {src/test => tests}/ui/imports/issue-52891.fixed (100%) rename {src/test => tests}/ui/imports/issue-52891.rs (100%) rename {src/test => tests}/ui/imports/issue-52891.stderr (100%) rename {src/test => tests}/ui/imports/issue-53140.rs (100%) rename {src/test => tests}/ui/imports/issue-53269.rs (100%) rename {src/test => tests}/ui/imports/issue-53269.stderr (100%) rename {src/test => tests}/ui/imports/issue-53512.rs (100%) rename {src/test => tests}/ui/imports/issue-53512.stderr (100%) rename {src/test => tests}/ui/imports/issue-53565.rs (100%) rename {src/test => tests}/ui/imports/issue-53565.stderr (100%) rename {src/test => tests}/ui/imports/issue-55457.rs (100%) rename {src/test => tests}/ui/imports/issue-55457.stderr (100%) rename {src/test => tests}/ui/imports/issue-55811.rs (100%) rename {src/test => tests}/ui/imports/issue-55884-1.rs (100%) rename {src/test => tests}/ui/imports/issue-55884-1.stderr (100%) rename {src/test => tests}/ui/imports/issue-55884-2.rs (100%) rename {src/test => tests}/ui/imports/issue-55884-2.stderr (100%) rename {src/test => tests}/ui/imports/issue-56125.rs (100%) rename {src/test => tests}/ui/imports/issue-56125.stderr (100%) rename {src/test => tests}/ui/imports/issue-56263.rs (100%) rename {src/test => tests}/ui/imports/issue-57015.rs (100%) rename {src/test => tests}/ui/imports/issue-57015.stderr (100%) rename {src/test => tests}/ui/imports/issue-57539.rs (100%) rename {src/test => tests}/ui/imports/issue-57539.stderr (100%) rename {src/test => tests}/ui/imports/issue-59764.rs (100%) rename {src/test => tests}/ui/imports/issue-59764.stderr (100%) rename {src/test => tests}/ui/imports/issue-62767.rs (100%) rename {src/test => tests}/ui/imports/issue-68103.rs (100%) rename {src/test => tests}/ui/imports/issue-8208.rs (100%) rename {src/test => tests}/ui/imports/issue-8208.stderr (100%) rename {src/test => tests}/ui/imports/issue-8640.rs (100%) rename {src/test => tests}/ui/imports/issue-8640.stderr (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-fail-1.rs (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-fail-1.stderr (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-fail-2.rs (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-fail-2.stderr (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-pass-1.rs (100%) rename {src/test => tests}/ui/imports/local-modularized-tricky-pass-2.rs (100%) rename {src/test => tests}/ui/imports/local-modularized.rs (100%) rename {src/test => tests}/ui/imports/macro-paths.rs (100%) rename {src/test => tests}/ui/imports/macro-paths.stderr (100%) rename {src/test => tests}/ui/imports/macros.rs (100%) rename {src/test => tests}/ui/imports/macros.stderr (100%) rename {src/test => tests}/ui/imports/no-std-inject.rs (100%) rename {src/test => tests}/ui/imports/no-std-inject.stderr (100%) rename {src/test => tests}/ui/imports/overlapping_pub_trait.rs (100%) rename {src/test => tests}/ui/imports/overlapping_pub_trait.stderr (100%) rename {src/test => tests}/ui/imports/reexport-star.rs (100%) rename {src/test => tests}/ui/imports/reexports.rs (100%) rename {src/test => tests}/ui/imports/reexports.stderr (100%) rename {src/test => tests}/ui/imports/resolve_self_super_hint.rs (100%) rename {src/test => tests}/ui/imports/resolve_self_super_hint.stderr (100%) rename {src/test => tests}/ui/imports/rfc-1560-warning-cycle.rs (100%) rename {src/test => tests}/ui/imports/rfc-1560-warning-cycle.stderr (100%) rename {src/test => tests}/ui/imports/shadow_builtin_macros.rs (100%) rename {src/test => tests}/ui/imports/shadow_builtin_macros.stderr (100%) rename {src/test => tests}/ui/imports/tool-mod-child.rs (100%) rename {src/test => tests}/ui/imports/tool-mod-child.stderr (100%) rename {src/test => tests}/ui/imports/unnamed_pub_trait.rs (100%) rename {src/test => tests}/ui/imports/unnamed_pub_trait.stderr (100%) rename {src/test => tests}/ui/imports/unresolved-imports-used.rs (100%) rename {src/test => tests}/ui/imports/unresolved-imports-used.stderr (100%) rename {src/test => tests}/ui/imports/unused-import-issue-87973.fixed (100%) rename {src/test => tests}/ui/imports/unused-import-issue-87973.rs (100%) rename {src/test => tests}/ui/imports/unused-import-issue-87973.stderr (100%) rename {src/test => tests}/ui/imports/unused-imports-in-test-mode.rs (100%) rename {src/test => tests}/ui/imports/unused-imports-in-test-mode.stderr (100%) rename {src/test => tests}/ui/imports/unused-imports-in-test-module.rs (100%) rename {src/test => tests}/ui/imports/unused-imports-in-test-module.stderr (100%) rename {src/test => tests}/ui/imports/unused-macro-use.rs (100%) rename {src/test => tests}/ui/imports/unused-macro-use.stderr (100%) rename {src/test => tests}/ui/imports/unused.rs (100%) rename {src/test => tests}/ui/imports/unused.stderr (100%) rename {src/test => tests}/ui/imports/use-mod.rs (100%) rename {src/test => tests}/ui/impossible_range.fixed (100%) rename {src/test => tests}/ui/impossible_range.rs (100%) rename {src/test => tests}/ui/impossible_range.stderr (100%) rename {src/test => tests}/ui/inc-range-pat.rs (100%) rename {src/test => tests}/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs (100%) rename {src/test => tests}/ui/include-macros/data.bin (100%) rename {src/test => tests}/ui/include-macros/file.txt (100%) rename {src/test => tests}/ui/include-macros/mismatched-types.rs (100%) rename {src/test => tests}/ui/include-macros/mismatched-types.stderr (100%) rename {src/test => tests}/ui/include-macros/normalization.rs (100%) rename {src/test => tests}/ui/include-macros/same-file-in-two-crates.rs (100%) rename {src/test => tests}/ui/incoherent-inherent-impls/auxiliary/extern-crate.rs (100%) rename {src/test => tests}/ui/incoherent-inherent-impls/needs-has-incoherent-impls.rs (100%) rename {src/test => tests}/ui/incoherent-inherent-impls/needs-has-incoherent-impls.stderr (100%) rename {src/test => tests}/ui/incoherent-inherent-impls/no-attr-empty-impl.rs (100%) rename {src/test => tests}/ui/incoherent-inherent-impls/no-attr-empty-impl.stderr (100%) rename {src/test => tests}/ui/index-bot.rs (100%) rename {src/test => tests}/ui/index-bot.stderr (100%) rename {src/test => tests}/ui/index-help.rs (100%) rename {src/test => tests}/ui/index-help.stderr (100%) rename {src/test => tests}/ui/index_message.rs (100%) rename {src/test => tests}/ui/index_message.stderr (100%) rename {src/test => tests}/ui/indexing-requires-a-uint.rs (100%) rename {src/test => tests}/ui/indexing-requires-a-uint.stderr (100%) rename {src/test => tests}/ui/infer-fn-tail-expr.rs (100%) rename {src/test => tests}/ui/inference/ambiguous_type_parameter.rs (100%) rename {src/test => tests}/ui/inference/ambiguous_type_parameter.stderr (100%) rename {src/test => tests}/ui/inference/auxiliary/inference_unstable_iterator.rs (100%) rename {src/test => tests}/ui/inference/auxiliary/inference_unstable_itertools.rs (100%) rename {src/test => tests}/ui/inference/cannot-infer-async.rs (100%) rename {src/test => tests}/ui/inference/cannot-infer-async.stderr (100%) rename {src/test => tests}/ui/inference/cannot-infer-closure-circular.rs (100%) rename {src/test => tests}/ui/inference/cannot-infer-closure-circular.stderr (100%) rename {src/test => tests}/ui/inference/cannot-infer-closure.rs (100%) rename {src/test => tests}/ui/inference/cannot-infer-closure.stderr (100%) rename {src/test => tests}/ui/inference/cannot-infer-partial-try-return.rs (100%) rename {src/test => tests}/ui/inference/cannot-infer-partial-try-return.stderr (100%) rename {src/test => tests}/ui/inference/char-as-str-multi.rs (100%) rename {src/test => tests}/ui/inference/char-as-str-multi.stderr (100%) rename {src/test => tests}/ui/inference/char-as-str-single.fixed (100%) rename {src/test => tests}/ui/inference/char-as-str-single.rs (100%) rename {src/test => tests}/ui/inference/char-as-str-single.stderr (100%) rename {src/test => tests}/ui/inference/deref-suggestion.rs (100%) rename {src/test => tests}/ui/inference/deref-suggestion.stderr (100%) rename {src/test => tests}/ui/inference/erase-type-params-in-label.rs (100%) rename {src/test => tests}/ui/inference/erase-type-params-in-label.stderr (100%) rename {src/test => tests}/ui/inference/infer-binary-operand-behind-reference.rs (100%) rename {src/test => tests}/ui/inference/inference-variable-behind-raw-pointer.rs (100%) rename {src/test => tests}/ui/inference/inference-variable-behind-raw-pointer.stderr (100%) rename {src/test => tests}/ui/inference/inference_unstable.rs (100%) rename {src/test => tests}/ui/inference/inference_unstable.stderr (100%) rename {src/test => tests}/ui/inference/inference_unstable_featured.rs (100%) rename {src/test => tests}/ui/inference/inference_unstable_featured.stderr (100%) rename {src/test => tests}/ui/inference/inference_unstable_forced.rs (100%) rename {src/test => tests}/ui/inference/inference_unstable_forced.stderr (100%) rename {src/test => tests}/ui/inference/issue-103587.rs (100%) rename {src/test => tests}/ui/inference/issue-103587.stderr (100%) rename {src/test => tests}/ui/inference/issue-104649.rs (100%) rename {src/test => tests}/ui/inference/issue-104649.stderr (100%) rename {src/test => tests}/ui/inference/issue-28935.rs (100%) rename {src/test => tests}/ui/inference/issue-36053.rs (100%) rename {src/test => tests}/ui/inference/issue-70703.rs (100%) rename {src/test => tests}/ui/inference/issue-71309.rs (100%) rename {src/test => tests}/ui/inference/issue-71309.stderr (100%) rename {src/test => tests}/ui/inference/issue-71732.rs (100%) rename {src/test => tests}/ui/inference/issue-71732.stderr (100%) rename {src/test => tests}/ui/inference/issue-72616.rs (100%) rename {src/test => tests}/ui/inference/issue-72616.stderr (100%) rename {src/test => tests}/ui/inference/issue-72690.rs (100%) rename {src/test => tests}/ui/inference/issue-72690.stderr (100%) rename {src/test => tests}/ui/inference/issue-80816.rs (100%) rename {src/test => tests}/ui/inference/issue-80816.stderr (100%) rename {src/test => tests}/ui/inference/issue-81522.rs (100%) rename {src/test => tests}/ui/inference/issue-83606.rs (100%) rename {src/test => tests}/ui/inference/issue-83606.stderr (100%) rename {src/test => tests}/ui/inference/issue-86162-1.rs (100%) rename {src/test => tests}/ui/inference/issue-86162-1.stderr (100%) rename {src/test => tests}/ui/inference/issue-86162-2.rs (100%) rename {src/test => tests}/ui/inference/issue-86162-2.stderr (100%) rename {src/test => tests}/ui/inference/lub-glb-with-unbound-infer-var.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/channel.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/channel.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/concrete-impl.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/concrete-impl.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative-enum.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative-enum.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative-gat.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative-gat.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/expr-struct-type-relative.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/issue-103053.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/issue-103053.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/self-ty-in-path.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/self-ty-in-path.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/type-alias-indirect.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/type-alias-indirect.stderr (100%) rename {src/test => tests}/ui/inference/need_type_info/type-alias.rs (100%) rename {src/test => tests}/ui/inference/need_type_info/type-alias.stderr (100%) rename {src/test => tests}/ui/inference/newlambdas-ret-infer.rs (100%) rename {src/test => tests}/ui/inference/newlambdas-ret-infer2.rs (100%) rename {src/test => tests}/ui/inference/question-mark-type-infer.rs (100%) rename {src/test => tests}/ui/inference/question-mark-type-infer.stderr (100%) rename {src/test => tests}/ui/inference/range-type-infer.rs (100%) rename {src/test => tests}/ui/inference/simple-infer.rs (100%) rename {src/test => tests}/ui/inference/str-as-char.fixed (100%) rename {src/test => tests}/ui/inference/str-as-char.rs (100%) rename {src/test => tests}/ui/inference/str-as-char.stderr (100%) rename {src/test => tests}/ui/inference/tutorial-suffix-inference-test.rs (100%) rename {src/test => tests}/ui/inference/tutorial-suffix-inference-test.stderr (100%) rename {src/test => tests}/ui/inference/type-infer-generalize-ty-var.rs (100%) rename {src/test => tests}/ui/infinite/infinite-autoderef.rs (100%) rename {src/test => tests}/ui/infinite/infinite-autoderef.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-instantiation.polonius.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-instantiation.rs (100%) rename {src/test => tests}/ui/infinite/infinite-instantiation.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-macro-expansion.rs (100%) rename {src/test => tests}/ui/infinite/infinite-macro-expansion.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-recursion-const-fn.rs (100%) rename {src/test => tests}/ui/infinite/infinite-recursion-const-fn.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-struct.rs (100%) rename {src/test => tests}/ui/infinite/infinite-struct.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-tag-type-recursion.rs (100%) rename {src/test => tests}/ui/infinite/infinite-tag-type-recursion.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-trait-alias-recursion.rs (100%) rename {src/test => tests}/ui/infinite/infinite-trait-alias-recursion.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-type-alias-mutual-recursion.rs (100%) rename {src/test => tests}/ui/infinite/infinite-type-alias-mutual-recursion.stderr (100%) rename {src/test => tests}/ui/infinite/infinite-vec-type-recursion.rs (100%) rename {src/test => tests}/ui/infinite/infinite-vec-type-recursion.stderr (100%) rename {src/test => tests}/ui/infinite/issue-41731-infinite-macro-print.rs (100%) rename {src/test => tests}/ui/infinite/issue-41731-infinite-macro-print.stderr (100%) rename {src/test => tests}/ui/infinite/issue-41731-infinite-macro-println.rs (100%) rename {src/test => tests}/ui/infinite/issue-41731-infinite-macro-println.stderr (100%) rename {src/test => tests}/ui/inherent-impls-overlap-check/auxiliary/repeat.rs (100%) rename {src/test => tests}/ui/inherent-impls-overlap-check/no-overlap.rs (100%) rename {src/test => tests}/ui/inherent-impls-overlap-check/overlap.rs (100%) rename {src/test => tests}/ui/inherent-impls-overlap-check/overlap.stderr (100%) rename {src/test => tests}/ui/inherit-env.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-array-init.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-basic.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-generic-err.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-generic-err.stderr (100%) rename {src/test => tests}/ui/inline-const/const-expr-generic-err2.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-generic-err2.stderr (100%) rename {src/test => tests}/ui/inline-const/const-expr-generic.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-inference.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-lifetime-err.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-lifetime-err.stderr (100%) rename {src/test => tests}/ui/inline-const/const-expr-lifetime.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-macro.rs (100%) rename {src/test => tests}/ui/inline-const/const-expr-reference.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-generic.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-generic.stderr (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-inference.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-lifetime-err.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-lifetime.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat-range.rs (100%) rename {src/test => tests}/ui/inline-const/const-match-pat.rs (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe-err.mir.stderr (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe-err.rs (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe-err.thir.stderr (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe.rs (100%) rename {src/test => tests}/ui/inline-const/expr-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/inline-const/expr-with-block-err.rs (100%) rename {src/test => tests}/ui/inline-const/expr-with-block-err.stderr (100%) rename {src/test => tests}/ui/inline-const/expr-with-block.rs (100%) rename {src/test => tests}/ui/inline-const/macro-with-const.rs (100%) rename {src/test => tests}/ui/inline-const/pat-unsafe-err.rs (100%) rename {src/test => tests}/ui/inline-const/pat-unsafe.rs (100%) rename {src/test => tests}/ui/inline-disallow-on-variant.rs (100%) rename {src/test => tests}/ui/inline-disallow-on-variant.stderr (100%) rename {src/test => tests}/ui/inlined-main.rs (100%) rename {src/test => tests}/ui/inner-attrs-on-impl.rs (100%) rename {src/test => tests}/ui/inner-module.rs (100%) rename {src/test => tests}/ui/inner-static-type-parameter.rs (100%) rename {src/test => tests}/ui/inner-static-type-parameter.stderr (100%) rename {src/test => tests}/ui/inner-static.rs (100%) rename {src/test => tests}/ui/integral-indexing.rs (100%) rename {src/test => tests}/ui/integral-indexing.stderr (100%) rename {src/test => tests}/ui/integral-variable-unification-error.rs (100%) rename {src/test => tests}/ui/integral-variable-unification-error.stderr (100%) rename {src/test => tests}/ui/interior-mutability/interior-mutability.rs (100%) rename {src/test => tests}/ui/interior-mutability/interior-mutability.stderr (100%) rename {src/test => tests}/ui/internal/auxiliary/internal_unstable.rs (100%) rename {src/test => tests}/ui/internal/internal-unstable-const.rs (100%) rename {src/test => tests}/ui/internal/internal-unstable-const.stderr (100%) rename {src/test => tests}/ui/internal/internal-unstable-noallow.rs (100%) rename {src/test => tests}/ui/internal/internal-unstable-noallow.stderr (100%) rename {src/test => tests}/ui/internal/internal-unstable-thread-local.rs (100%) rename {src/test => tests}/ui/internal/internal-unstable-thread-local.stderr (100%) rename {src/test => tests}/ui/internal/internal-unstable.rs (100%) rename {src/test => tests}/ui/internal/internal-unstable.stderr (100%) rename {src/test => tests}/ui/intrinsics-always-extern.rs (100%) rename {src/test => tests}/ui/intrinsics-always-extern.stderr (100%) rename {src/test => tests}/ui/intrinsics/auxiliary/cci_intrinsic.rs (100%) rename {src/test => tests}/ui/intrinsics/bad-intrinsic-monomorphization.rs (100%) rename {src/test => tests}/ui/intrinsics/bad-intrinsic-monomorphization.stderr (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-backtrace-std.rs (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-backtrace-std.run.stderr (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-backtrace.rs (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-backtrace.run.stderr (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-bad.rs (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-bad.stderr (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-stability.rs (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-stability.stderr (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select-x86_64.rs (100%) rename {src/test => tests}/ui/intrinsics/const-eval-select.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-alignment.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-assume.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-atomics-cc.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-atomics.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-nearby.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-raw_eq-const-padding.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-raw_eq-const-padding.stderr (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-raw_eq-const.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-unreachable.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsic-volatile.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsics-integer.rs (100%) rename {src/test => tests}/ui/intrinsics/intrinsics-math.rs (100%) rename {src/test => tests}/ui/intrinsics/issue-28575.mir.stderr (100%) rename {src/test => tests}/ui/intrinsics/issue-28575.rs (100%) rename {src/test => tests}/ui/intrinsics/issue-28575.thir.stderr (100%) rename {src/test => tests}/ui/intrinsics/issue-84297-reifying-copy.rs (100%) rename {src/test => tests}/ui/intrinsics/non-integer-atomic.rs (100%) rename {src/test => tests}/ui/intrinsics/non-integer-atomic.stderr (100%) rename {src/test => tests}/ui/intrinsics/panic-uninitialized-zeroed.rs (100%) rename {src/test => tests}/ui/intrinsics/safe-intrinsic-mismatch.rs (100%) rename {src/test => tests}/ui/intrinsics/safe-intrinsic-mismatch.stderr (100%) rename {src/test => tests}/ui/intrinsics/unchecked_math_unsafe.mir.stderr (100%) rename {src/test => tests}/ui/intrinsics/unchecked_math_unsafe.rs (100%) rename {src/test => tests}/ui/intrinsics/unchecked_math_unsafe.thir.stderr (100%) rename {src/test => tests}/ui/intrinsics/unchecked_math_unstable.rs (100%) rename {src/test => tests}/ui/intrinsics/unchecked_math_unstable.stderr (100%) rename {src/test => tests}/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADFLAGS.stderr (100%) rename {src/test => tests}/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADTARGET.stderr (100%) rename {src/test => tests}/ui/invalid-compile-flags/branch-protection-missing-pac-ret.rs (100%) rename {src/test => tests}/ui/invalid-compile-flags/codegen-option-without-group.rs (100%) rename {src/test => tests}/ui/invalid-compile-flags/codegen-option-without-group.stderr (100%) rename {src/test => tests}/ui/invalid-compile-flags/debug-option-without-group.rs (100%) rename {src/test => tests}/ui/invalid-compile-flags/debug-option-without-group.stderr (100%) rename {src/test => tests}/ui/invalid-module-declaration/auxiliary/foo/bar.rs (100%) rename {src/test => tests}/ui/invalid-module-declaration/auxiliary/foo/mod.rs (100%) rename {src/test => tests}/ui/invalid-module-declaration/invalid-module-declaration.rs (100%) rename {src/test => tests}/ui/invalid-module-declaration/invalid-module-declaration.stderr (100%) rename {src/test => tests}/ui/invalid-self-argument/bare-fn-start.rs (100%) rename {src/test => tests}/ui/invalid-self-argument/bare-fn-start.stderr (100%) rename {src/test => tests}/ui/invalid-self-argument/bare-fn.rs (100%) rename {src/test => tests}/ui/invalid-self-argument/bare-fn.stderr (100%) rename {src/test => tests}/ui/invalid-self-argument/trait-fn.rs (100%) rename {src/test => tests}/ui/invalid-self-argument/trait-fn.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-crate-type-macro.rs (100%) rename {src/test => tests}/ui/invalid/invalid-crate-type-macro.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-crate-type.rs (100%) rename {src/test => tests}/ui/invalid/invalid-crate-type.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-debugger-visualizer-option.rs (100%) rename {src/test => tests}/ui/invalid/invalid-debugger-visualizer-option.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-debugger-visualizer-target.rs (100%) rename {src/test => tests}/ui/invalid/invalid-debugger-visualizer-target.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-inline.rs (100%) rename {src/test => tests}/ui/invalid/invalid-inline.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-llvm-passes.rs (100%) rename {src/test => tests}/ui/invalid/invalid-llvm-passes.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-macro-matcher.rs (100%) rename {src/test => tests}/ui/invalid/invalid-macro-matcher.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-no-sanitize.rs (100%) rename {src/test => tests}/ui/invalid/invalid-no-sanitize.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-path-in-const.rs (100%) rename {src/test => tests}/ui/invalid/invalid-path-in-const.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-plugin-attr.rs (100%) rename {src/test => tests}/ui/invalid/invalid-plugin-attr.stderr (100%) rename {src/test => tests}/ui/invalid/invalid-rustc_legacy_const_generics-arguments.rs (100%) rename {src/test => tests}/ui/invalid/invalid-rustc_legacy_const_generics-arguments.stderr (100%) rename {src/test => tests}/ui/invalid/invalid_rustc_layout_scalar_valid_range.rs (100%) rename {src/test => tests}/ui/invalid/invalid_rustc_layout_scalar_valid_range.stderr (100%) rename {src/test => tests}/ui/invalid_crate_type_syntax.rs (100%) rename {src/test => tests}/ui/invalid_crate_type_syntax.stderr (100%) rename {src/test => tests}/ui/invalid_dispatch_from_dyn_impls.rs (100%) rename {src/test => tests}/ui/invalid_dispatch_from_dyn_impls.stderr (100%) rename {src/test => tests}/ui/issue-76387-llvm-miscompile.rs (100%) rename {src/test => tests}/ui/issue-94866.rs (100%) rename {src/test => tests}/ui/issue-94866.stderr (100%) rename {src/test => tests}/ui/issues-71798.rs (100%) rename {src/test => tests}/ui/issues-71798.stderr (100%) rename {src/test => tests}/ui/issues/.gitattributes (100%) rename {src/test => tests}/ui/issues/auxiliary/cgu_test.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/cgu_test_a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/cgu_test_b.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/i8.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/iss.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-11224.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-11508.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-11529.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-11680.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12133-dylib.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12133-dylib2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12133-rlib.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12612-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12612-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-12660-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13507.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13620-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13620-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13872-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13872-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-13872-3.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-14344-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-14344-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-14421.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-14422.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-15562.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-16643.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-16725.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-17662.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-18501.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-18514.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-18711.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-18913-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-18913-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-1920.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-19293.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-19340-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-20389.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-21202.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2170-lib.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2316-a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2316-b.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2380.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2414-a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2414-b.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2472-b.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-25185-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-25185-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2526.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-25467.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2631-a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-2723-a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-29181.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-29265.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-29485.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-3012-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-30123-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-3136-a.rc (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-3136-a.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-31702-1.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-31702-2.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-34796-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-36954.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-38190.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-38226-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-3979-traits.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-41053.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-41394.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-41549.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-42007-s.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-4208-cc.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-4545.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-48984-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-49544.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-51798.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-52489.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-5518.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-5521.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-56943.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-57271-lib.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-5844-aux.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-7178.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-73112.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-7899.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-8044.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-8259.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-8401.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-9123.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-9155.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-9188.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-9906.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/issue-9968.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/private-trait-xc.rs (100%) rename {src/test => tests}/ui/issues/auxiliary/reexported-trait.rs (100%) rename {src/test => tests}/ui/issues/issue-100605.rs (100%) rename {src/test => tests}/ui/issues/issue-100605.stderr (100%) rename {src/test => tests}/ui/issues/issue-10228.rs (100%) rename {src/test => tests}/ui/issues/issue-10291.rs (100%) rename {src/test => tests}/ui/issues/issue-10291.stderr (100%) rename {src/test => tests}/ui/issues/issue-102964.rs (100%) rename {src/test => tests}/ui/issues/issue-102964.stderr (100%) rename {src/test => tests}/ui/issues/issue-10396.rs (100%) rename {src/test => tests}/ui/issues/issue-10412.rs (100%) rename {src/test => tests}/ui/issues/issue-10412.stderr (100%) rename {src/test => tests}/ui/issues/issue-10436.rs (100%) rename {src/test => tests}/ui/issues/issue-10456.rs (100%) rename {src/test => tests}/ui/issues/issue-10465.rs (100%) rename {src/test => tests}/ui/issues/issue-10465.stderr (100%) rename {src/test => tests}/ui/issues/issue-10545.rs (100%) rename {src/test => tests}/ui/issues/issue-10545.stderr (100%) rename {src/test => tests}/ui/issues/issue-10638.rs (100%) rename {src/test => tests}/ui/issues/issue-10656.rs (100%) rename {src/test => tests}/ui/issues/issue-10656.stderr (100%) rename {src/test => tests}/ui/issues/issue-10682.rs (100%) rename {src/test => tests}/ui/issues/issue-10683.rs (100%) rename {src/test => tests}/ui/issues/issue-10718.rs (100%) rename {src/test => tests}/ui/issues/issue-10734.rs (100%) rename {src/test => tests}/ui/issues/issue-10764.rs (100%) rename {src/test => tests}/ui/issues/issue-10764.stderr (100%) rename {src/test => tests}/ui/issues/issue-10767.rs (100%) rename {src/test => tests}/ui/issues/issue-10802.rs (100%) rename {src/test => tests}/ui/issues/issue-10806.rs (100%) rename {src/test => tests}/ui/issues/issue-10853.rs (100%) rename {src/test => tests}/ui/issues/issue-10877.rs (100%) rename {src/test => tests}/ui/issues/issue-10877.stderr (100%) rename {src/test => tests}/ui/issues/issue-10902.rs (100%) rename {src/test => tests}/ui/issues/issue-11004.rs (100%) rename {src/test => tests}/ui/issues/issue-11004.stderr (100%) rename {src/test => tests}/ui/issues/issue-11047.rs (100%) rename {src/test => tests}/ui/issues/issue-11085.rs (100%) rename {src/test => tests}/ui/issues/issue-11192.rs (100%) rename {src/test => tests}/ui/issues/issue-11192.stderr (100%) rename {src/test => tests}/ui/issues/issue-11205.rs (100%) rename {src/test => tests}/ui/issues/issue-11224.rs (100%) rename {src/test => tests}/ui/issues/issue-11267.rs (100%) rename {src/test => tests}/ui/issues/issue-11374.rs (100%) rename {src/test => tests}/ui/issues/issue-11374.stderr (100%) rename {src/test => tests}/ui/issues/issue-11382.rs (100%) rename {src/test => tests}/ui/issues/issue-11384.rs (100%) rename {src/test => tests}/ui/issues/issue-11508.rs (100%) rename {src/test => tests}/ui/issues/issue-11515.rs (100%) rename {src/test => tests}/ui/issues/issue-11515.stderr (100%) rename {src/test => tests}/ui/issues/issue-11529.rs (100%) rename {src/test => tests}/ui/issues/issue-11552.rs (100%) rename {src/test => tests}/ui/issues/issue-11592.rs (100%) rename {src/test => tests}/ui/issues/issue-11593.rs (100%) rename {src/test => tests}/ui/issues/issue-11593.stderr (100%) rename {src/test => tests}/ui/issues/issue-11677.rs (100%) rename {src/test => tests}/ui/issues/issue-11680.rs (100%) rename {src/test => tests}/ui/issues/issue-11680.stderr (100%) rename {src/test => tests}/ui/issues/issue-11681.rs (100%) rename {src/test => tests}/ui/issues/issue-11681.stderr (100%) rename {src/test => tests}/ui/issues/issue-11692-1.rs (100%) rename {src/test => tests}/ui/issues/issue-11692-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-11692-2.rs (100%) rename {src/test => tests}/ui/issues/issue-11692-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-11709.rs (100%) rename {src/test => tests}/ui/issues/issue-11740.rs (100%) rename {src/test => tests}/ui/issues/issue-11771.rs (100%) rename {src/test => tests}/ui/issues/issue-11771.stderr (100%) rename {src/test => tests}/ui/issues/issue-11820.rs (100%) rename {src/test => tests}/ui/issues/issue-11844.rs (100%) rename {src/test => tests}/ui/issues/issue-11844.stderr (100%) rename {src/test => tests}/ui/issues/issue-11869.rs (100%) rename {src/test => tests}/ui/issues/issue-11873.rs (100%) rename {src/test => tests}/ui/issues/issue-11873.stderr (100%) rename {src/test => tests}/ui/issues/issue-11958.rs (100%) rename {src/test => tests}/ui/issues/issue-11958.stderr (100%) rename {src/test => tests}/ui/issues/issue-12028.rs (100%) rename {src/test => tests}/ui/issues/issue-12028.stderr (100%) rename {src/test => tests}/ui/issues/issue-12033.rs (100%) rename {src/test => tests}/ui/issues/issue-12041.rs (100%) rename {src/test => tests}/ui/issues/issue-12041.stderr (100%) rename {src/test => tests}/ui/issues/issue-12127.rs (100%) rename {src/test => tests}/ui/issues/issue-12127.stderr (100%) rename {src/test => tests}/ui/issues/issue-12133-1.rs (100%) rename {src/test => tests}/ui/issues/issue-12133-2.rs (100%) rename {src/test => tests}/ui/issues/issue-12133-3.rs (100%) rename {src/test => tests}/ui/issues/issue-12187-1.rs (100%) rename {src/test => tests}/ui/issues/issue-12187-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-12187-2.rs (100%) rename {src/test => tests}/ui/issues/issue-12187-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-12285.rs (100%) rename {src/test => tests}/ui/issues/issue-1251.rs (100%) rename {src/test => tests}/ui/issues/issue-12511.rs (100%) rename {src/test => tests}/ui/issues/issue-12511.stderr (100%) rename {src/test => tests}/ui/issues/issue-12567.rs (100%) rename {src/test => tests}/ui/issues/issue-12567.stderr (100%) rename {src/test => tests}/ui/issues/issue-1257.rs (100%) rename {src/test => tests}/ui/issues/issue-12612.rs (100%) rename {src/test => tests}/ui/issues/issue-12660.rs (100%) rename {src/test => tests}/ui/issues/issue-12677.rs (100%) rename {src/test => tests}/ui/issues/issue-12699.rs (100%) rename {src/test => tests}/ui/issues/issue-12729.rs (100%) rename {src/test => tests}/ui/issues/issue-12744.rs (100%) rename {src/test => tests}/ui/issues/issue-12860.rs (100%) rename {src/test => tests}/ui/issues/issue-12863.rs (100%) rename {src/test => tests}/ui/issues/issue-12863.stderr (100%) rename {src/test => tests}/ui/issues/issue-12909.rs (100%) rename {src/test => tests}/ui/issues/issue-12920.rs (100%) rename {src/test => tests}/ui/issues/issue-12997-1.rs (100%) rename {src/test => tests}/ui/issues/issue-12997-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-12997-2.rs (100%) rename {src/test => tests}/ui/issues/issue-12997-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-13027.rs (100%) rename {src/test => tests}/ui/issues/issue-13033.rs (100%) rename {src/test => tests}/ui/issues/issue-13033.stderr (100%) rename {src/test => tests}/ui/issues/issue-13058.rs (100%) rename {src/test => tests}/ui/issues/issue-13058.stderr (100%) rename {src/test => tests}/ui/issues/issue-13105.rs (100%) rename {src/test => tests}/ui/issues/issue-13167.rs (100%) rename {src/test => tests}/ui/issues/issue-13202.rs (100%) rename {src/test => tests}/ui/issues/issue-13204.rs (100%) rename {src/test => tests}/ui/issues/issue-13214.rs (100%) rename {src/test => tests}/ui/issues/issue-13259-windows-tcb-trash.rs (100%) rename {src/test => tests}/ui/issues/issue-13264.rs (100%) rename {src/test => tests}/ui/issues/issue-13323.rs (100%) rename {src/test => tests}/ui/issues/issue-13359.rs (100%) rename {src/test => tests}/ui/issues/issue-13359.stderr (100%) rename {src/test => tests}/ui/issues/issue-13405.rs (100%) rename {src/test => tests}/ui/issues/issue-13407.rs (100%) rename {src/test => tests}/ui/issues/issue-13407.stderr (100%) rename {src/test => tests}/ui/issues/issue-13434.rs (100%) rename {src/test => tests}/ui/issues/issue-13446.rs (100%) rename {src/test => tests}/ui/issues/issue-13446.stderr (100%) rename {src/test => tests}/ui/issues/issue-13466.rs (100%) rename {src/test => tests}/ui/issues/issue-13466.stderr (100%) rename {src/test => tests}/ui/issues/issue-13482-2.rs (100%) rename {src/test => tests}/ui/issues/issue-13482-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-13482.rs (100%) rename {src/test => tests}/ui/issues/issue-13482.stderr (100%) rename {src/test => tests}/ui/issues/issue-13497-2.rs (100%) rename {src/test => tests}/ui/issues/issue-13497-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-13497.rs (100%) rename {src/test => tests}/ui/issues/issue-13497.stderr (100%) rename {src/test => tests}/ui/issues/issue-13507-2.rs (100%) rename {src/test => tests}/ui/issues/issue-1362.rs (100%) rename {src/test => tests}/ui/issues/issue-1362.stderr (100%) rename {src/test => tests}/ui/issues/issue-13620.rs (100%) rename {src/test => tests}/ui/issues/issue-13665.rs (100%) rename {src/test => tests}/ui/issues/issue-13703.rs (100%) rename {src/test => tests}/ui/issues/issue-13763.rs (100%) rename {src/test => tests}/ui/issues/issue-13775.rs (100%) rename {src/test => tests}/ui/issues/issue-13808.rs (100%) rename {src/test => tests}/ui/issues/issue-13847.rs (100%) rename {src/test => tests}/ui/issues/issue-13847.stderr (100%) rename {src/test => tests}/ui/issues/issue-13867.rs (100%) rename {src/test => tests}/ui/issues/issue-13872.rs (100%) rename {src/test => tests}/ui/issues/issue-14082.rs (100%) rename {src/test => tests}/ui/issues/issue-14091-2.rs (100%) rename {src/test => tests}/ui/issues/issue-14091-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-14091.rs (100%) rename {src/test => tests}/ui/issues/issue-14091.stderr (100%) rename {src/test => tests}/ui/issues/issue-14092.rs (100%) rename {src/test => tests}/ui/issues/issue-14092.stderr (100%) rename {src/test => tests}/ui/issues/issue-14229.rs (100%) rename {src/test => tests}/ui/issues/issue-14254.rs (100%) rename {src/test => tests}/ui/issues/issue-14285.rs (100%) rename {src/test => tests}/ui/issues/issue-14285.stderr (100%) rename {src/test => tests}/ui/issues/issue-14308.rs (100%) rename {src/test => tests}/ui/issues/issue-14330.rs (100%) rename {src/test => tests}/ui/issues/issue-14344.rs (100%) rename {src/test => tests}/ui/issues/issue-14366.rs (100%) rename {src/test => tests}/ui/issues/issue-14366.stderr (100%) rename {src/test => tests}/ui/issues/issue-14382.rs (100%) rename {src/test => tests}/ui/issues/issue-14393.rs (100%) rename {src/test => tests}/ui/issues/issue-14399.rs (100%) rename {src/test => tests}/ui/issues/issue-14421.rs (100%) rename {src/test => tests}/ui/issues/issue-14422.rs (100%) rename {src/test => tests}/ui/issues/issue-1448-2.rs (100%) rename {src/test => tests}/ui/issues/issue-1448-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-1451.rs (100%) rename {src/test => tests}/ui/issues/issue-14541.rs (100%) rename {src/test => tests}/ui/issues/issue-14541.stderr (100%) rename {src/test => tests}/ui/issues/issue-1460.rs (100%) rename {src/test => tests}/ui/issues/issue-1460.stderr (100%) rename {src/test => tests}/ui/issues/issue-14721.rs (100%) rename {src/test => tests}/ui/issues/issue-14721.stderr (100%) rename {src/test => tests}/ui/issues/issue-1476.rs (100%) rename {src/test => tests}/ui/issues/issue-1476.stderr (100%) rename {src/test => tests}/ui/issues/issue-14821.rs (100%) rename {src/test => tests}/ui/issues/issue-14845.rs (100%) rename {src/test => tests}/ui/issues/issue-14845.stderr (100%) rename {src/test => tests}/ui/issues/issue-14853.rs (100%) rename {src/test => tests}/ui/issues/issue-14853.stderr (100%) rename {src/test => tests}/ui/issues/issue-14865.rs (100%) rename {src/test => tests}/ui/issues/issue-14875.rs (100%) rename {src/test => tests}/ui/issues/issue-14901.rs (100%) rename {src/test => tests}/ui/issues/issue-14915.rs (100%) rename {src/test => tests}/ui/issues/issue-14915.stderr (100%) rename {src/test => tests}/ui/issues/issue-14919.rs (100%) rename {src/test => tests}/ui/issues/issue-14959.rs (100%) rename {src/test => tests}/ui/issues/issue-15034.rs (100%) rename {src/test => tests}/ui/issues/issue-15034.stderr (100%) rename {src/test => tests}/ui/issues/issue-15043.rs (100%) rename {src/test => tests}/ui/issues/issue-15063.rs (100%) rename {src/test => tests}/ui/issues/issue-15094.rs (100%) rename {src/test => tests}/ui/issues/issue-15094.stderr (100%) rename {src/test => tests}/ui/issues/issue-15104.rs (100%) rename {src/test => tests}/ui/issues/issue-15129-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-15155.rs (100%) rename {src/test => tests}/ui/issues/issue-15167.rs (100%) rename {src/test => tests}/ui/issues/issue-15167.stderr (100%) rename {src/test => tests}/ui/issues/issue-15189.rs (100%) rename {src/test => tests}/ui/issues/issue-15207.rs (100%) rename {src/test => tests}/ui/issues/issue-15207.stderr (100%) rename {src/test => tests}/ui/issues/issue-15260.rs (100%) rename {src/test => tests}/ui/issues/issue-15260.stderr (100%) rename {src/test => tests}/ui/issues/issue-15381.rs (100%) rename {src/test => tests}/ui/issues/issue-15381.stderr (100%) rename {src/test => tests}/ui/issues/issue-15444.rs (100%) rename {src/test => tests}/ui/issues/issue-15523-big.rs (100%) rename {src/test => tests}/ui/issues/issue-15523.rs (100%) rename {src/test => tests}/ui/issues/issue-15562.rs (100%) rename {src/test => tests}/ui/issues/issue-15571.rs (100%) rename {src/test => tests}/ui/issues/issue-15673.rs (100%) rename {src/test => tests}/ui/issues/issue-15689-1.rs (100%) rename {src/test => tests}/ui/issues/issue-15689-2.rs (100%) rename {src/test => tests}/ui/issues/issue-15734.rs (100%) rename {src/test => tests}/ui/issues/issue-15735.rs (100%) rename {src/test => tests}/ui/issues/issue-15756.rs (100%) rename {src/test => tests}/ui/issues/issue-15756.stderr (100%) rename {src/test => tests}/ui/issues/issue-15763.rs (100%) rename {src/test => tests}/ui/issues/issue-15774.rs (100%) rename {src/test => tests}/ui/issues/issue-15783.rs (100%) rename {src/test => tests}/ui/issues/issue-15783.stderr (100%) rename {src/test => tests}/ui/issues/issue-15793.rs (100%) rename {src/test => tests}/ui/issues/issue-15858.rs (100%) rename {src/test => tests}/ui/issues/issue-15896.rs (100%) rename {src/test => tests}/ui/issues/issue-15896.stderr (100%) rename {src/test => tests}/ui/issues/issue-15965.rs (100%) rename {src/test => tests}/ui/issues/issue-15965.stderr (100%) rename {src/test => tests}/ui/issues/issue-16048.rs (100%) rename {src/test => tests}/ui/issues/issue-16048.stderr (100%) rename {src/test => tests}/ui/issues/issue-16149.rs (100%) rename {src/test => tests}/ui/issues/issue-16149.stderr (100%) rename {src/test => tests}/ui/issues/issue-16151.rs (100%) rename {src/test => tests}/ui/issues/issue-16250.rs (100%) rename {src/test => tests}/ui/issues/issue-16250.stderr (100%) rename {src/test => tests}/ui/issues/issue-16256.rs (100%) rename {src/test => tests}/ui/issues/issue-16256.stderr (100%) rename {src/test => tests}/ui/issues/issue-16278.rs (100%) rename {src/test => tests}/ui/issues/issue-16338.rs (100%) rename {src/test => tests}/ui/issues/issue-16338.stderr (100%) rename {src/test => tests}/ui/issues/issue-16401.rs (100%) rename {src/test => tests}/ui/issues/issue-16401.stderr (100%) rename {src/test => tests}/ui/issues/issue-16441.rs (100%) rename {src/test => tests}/ui/issues/issue-16452.rs (100%) rename {src/test => tests}/ui/issues/issue-16492.rs (100%) rename {src/test => tests}/ui/issues/issue-16530.rs (100%) rename {src/test => tests}/ui/issues/issue-16538.mir.stderr (100%) rename {src/test => tests}/ui/issues/issue-16538.rs (100%) rename {src/test => tests}/ui/issues/issue-16538.thir.stderr (100%) rename {src/test => tests}/ui/issues/issue-16560.rs (100%) rename {src/test => tests}/ui/issues/issue-16562.rs (100%) rename {src/test => tests}/ui/issues/issue-16562.stderr (100%) rename {src/test => tests}/ui/issues/issue-16596.rs (100%) rename {src/test => tests}/ui/issues/issue-1660.rs (100%) rename {src/test => tests}/ui/issues/issue-16643.rs (100%) rename {src/test => tests}/ui/issues/issue-16648.rs (100%) rename {src/test => tests}/ui/issues/issue-16668.rs (100%) rename {src/test => tests}/ui/issues/issue-16671.rs (100%) rename {src/test => tests}/ui/issues/issue-16683.rs (100%) rename {src/test => tests}/ui/issues/issue-16683.stderr (100%) rename {src/test => tests}/ui/issues/issue-16725.rs (100%) rename {src/test => tests}/ui/issues/issue-16725.stderr (100%) rename {src/test => tests}/ui/issues/issue-16739.rs (100%) rename {src/test => tests}/ui/issues/issue-16745.rs (100%) rename {src/test => tests}/ui/issues/issue-16774.rs (100%) rename {src/test => tests}/ui/issues/issue-16783.rs (100%) rename {src/test => tests}/ui/issues/issue-16819.rs (100%) rename {src/test => tests}/ui/issues/issue-16922-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-16922.rs (100%) rename {src/test => tests}/ui/issues/issue-16922.stderr (100%) rename {src/test => tests}/ui/issues/issue-16939.rs (100%) rename {src/test => tests}/ui/issues/issue-16939.stderr (100%) rename {src/test => tests}/ui/issues/issue-1696.rs (100%) rename {src/test => tests}/ui/issues/issue-16966.rs (100%) rename {src/test => tests}/ui/issues/issue-16966.stderr (100%) rename {src/test => tests}/ui/issues/issue-16994.rs (100%) rename {src/test => tests}/ui/issues/issue-17001.rs (100%) rename {src/test => tests}/ui/issues/issue-17001.stderr (100%) rename {src/test => tests}/ui/issues/issue-17033.rs (100%) rename {src/test => tests}/ui/issues/issue-17033.stderr (100%) rename {src/test => tests}/ui/issues/issue-17068.rs (100%) rename {src/test => tests}/ui/issues/issue-17121.rs (100%) rename {src/test => tests}/ui/issues/issue-17216.rs (100%) rename {src/test => tests}/ui/issues/issue-17252.rs (100%) rename {src/test => tests}/ui/issues/issue-17252.stderr (100%) rename {src/test => tests}/ui/issues/issue-17302.rs (100%) rename {src/test => tests}/ui/issues/issue-17322.rs (100%) rename {src/test => tests}/ui/issues/issue-17336.rs (100%) rename {src/test => tests}/ui/issues/issue-17337.rs (100%) rename {src/test => tests}/ui/issues/issue-17337.stderr (100%) rename {src/test => tests}/ui/issues/issue-17351.rs (100%) rename {src/test => tests}/ui/issues/issue-17361.rs (100%) rename {src/test => tests}/ui/issues/issue-17373.rs (100%) rename {src/test => tests}/ui/issues/issue-17373.stderr (100%) rename {src/test => tests}/ui/issues/issue-17385.rs (100%) rename {src/test => tests}/ui/issues/issue-17385.stderr (100%) rename {src/test => tests}/ui/issues/issue-17405.rs (100%) rename {src/test => tests}/ui/issues/issue-17405.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-1.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-2.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-3.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-4.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-4.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-5.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-5.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-6.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-6.stderr (100%) rename {src/test => tests}/ui/issues/issue-17431-7.rs (100%) rename {src/test => tests}/ui/issues/issue-17431-7.stderr (100%) rename {src/test => tests}/ui/issues/issue-17441.rs (100%) rename {src/test => tests}/ui/issues/issue-17441.stderr (100%) rename {src/test => tests}/ui/issues/issue-17450.rs (100%) rename {src/test => tests}/ui/issues/issue-17503.rs (100%) rename {src/test => tests}/ui/issues/issue-17546.rs (100%) rename {src/test => tests}/ui/issues/issue-17546.stderr (100%) rename {src/test => tests}/ui/issues/issue-17551.rs (100%) rename {src/test => tests}/ui/issues/issue-17551.stderr (100%) rename {src/test => tests}/ui/issues/issue-17651.rs (100%) rename {src/test => tests}/ui/issues/issue-17651.stderr (100%) rename {src/test => tests}/ui/issues/issue-17662.rs (100%) rename {src/test => tests}/ui/issues/issue-17732.rs (100%) rename {src/test => tests}/ui/issues/issue-17734.rs (100%) rename {src/test => tests}/ui/issues/issue-17740.rs (100%) rename {src/test => tests}/ui/issues/issue-17740.stderr (100%) rename {src/test => tests}/ui/issues/issue-17746.rs (100%) rename {src/test => tests}/ui/issues/issue-17758.rs (100%) rename {src/test => tests}/ui/issues/issue-17758.stderr (100%) rename {src/test => tests}/ui/issues/issue-17771.rs (100%) rename {src/test => tests}/ui/issues/issue-17800.rs (100%) rename {src/test => tests}/ui/issues/issue-17800.stderr (100%) rename {src/test => tests}/ui/issues/issue-17816.rs (100%) rename {src/test => tests}/ui/issues/issue-17877.rs (100%) rename {src/test => tests}/ui/issues/issue-17897.rs (100%) rename {src/test => tests}/ui/issues/issue-17904-2.rs (100%) rename {src/test => tests}/ui/issues/issue-17904-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-17904.rs (100%) rename {src/test => tests}/ui/issues/issue-17905-2.rs (100%) rename {src/test => tests}/ui/issues/issue-17905-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-17905.rs (100%) rename {src/test => tests}/ui/issues/issue-17933.rs (100%) rename {src/test => tests}/ui/issues/issue-17933.stderr (100%) rename {src/test => tests}/ui/issues/issue-17954.rs (100%) rename {src/test => tests}/ui/issues/issue-17954.stderr (100%) rename {src/test => tests}/ui/issues/issue-17959.rs (100%) rename {src/test => tests}/ui/issues/issue-17959.stderr (100%) rename {src/test => tests}/ui/issues/issue-17994.rs (100%) rename {src/test => tests}/ui/issues/issue-17994.stderr (100%) rename {src/test => tests}/ui/issues/issue-17999.rs (100%) rename {src/test => tests}/ui/issues/issue-17999.stderr (100%) rename {src/test => tests}/ui/issues/issue-18058.rs (100%) rename {src/test => tests}/ui/issues/issue-18058.stderr (100%) rename {src/test => tests}/ui/issues/issue-18088.rs (100%) rename {src/test => tests}/ui/issues/issue-18107.rs (100%) rename {src/test => tests}/ui/issues/issue-18107.stderr (100%) rename {src/test => tests}/ui/issues/issue-18110.rs (100%) rename {src/test => tests}/ui/issues/issue-18119.rs (100%) rename {src/test => tests}/ui/issues/issue-18119.stderr (100%) rename {src/test => tests}/ui/issues/issue-18159.rs (100%) rename {src/test => tests}/ui/issues/issue-18159.stderr (100%) rename {src/test => tests}/ui/issues/issue-18173.rs (100%) rename {src/test => tests}/ui/issues/issue-18183.rs (100%) rename {src/test => tests}/ui/issues/issue-18183.stderr (100%) rename {src/test => tests}/ui/issues/issue-18188.rs (100%) rename {src/test => tests}/ui/issues/issue-1821.rs (100%) rename {src/test => tests}/ui/issues/issue-18232.rs (100%) rename {src/test => tests}/ui/issues/issue-18352.rs (100%) rename {src/test => tests}/ui/issues/issue-18353.rs (100%) rename {src/test => tests}/ui/issues/issue-18389.rs (100%) rename {src/test => tests}/ui/issues/issue-18389.stderr (100%) rename {src/test => tests}/ui/issues/issue-18423.rs (100%) rename {src/test => tests}/ui/issues/issue-18423.stderr (100%) rename {src/test => tests}/ui/issues/issue-18446-2.rs (100%) rename {src/test => tests}/ui/issues/issue-18446.rs (100%) rename {src/test => tests}/ui/issues/issue-18446.stderr (100%) rename {src/test => tests}/ui/issues/issue-18464.rs (100%) rename {src/test => tests}/ui/issues/issue-18501.rs (100%) rename {src/test => tests}/ui/issues/issue-18514.rs (100%) rename {src/test => tests}/ui/issues/issue-18532.rs (100%) rename {src/test => tests}/ui/issues/issue-18532.stderr (100%) rename {src/test => tests}/ui/issues/issue-18539.rs (100%) rename {src/test => tests}/ui/issues/issue-18566.rs (100%) rename {src/test => tests}/ui/issues/issue-18566.stderr (100%) rename {src/test => tests}/ui/issues/issue-18576.rs (100%) rename {src/test => tests}/ui/issues/issue-18611.rs (100%) rename {src/test => tests}/ui/issues/issue-18611.stderr (100%) rename {src/test => tests}/ui/issues/issue-18685.rs (100%) rename {src/test => tests}/ui/issues/issue-1871.rs (100%) rename {src/test => tests}/ui/issues/issue-1871.stderr (100%) rename {src/test => tests}/ui/issues/issue-18711.rs (100%) rename {src/test => tests}/ui/issues/issue-18738.rs (100%) rename {src/test => tests}/ui/issues/issue-18767.rs (100%) rename {src/test => tests}/ui/issues/issue-18783.rs (100%) rename {src/test => tests}/ui/issues/issue-18783.stderr (100%) rename {src/test => tests}/ui/issues/issue-18804/auxiliary/lib.rs (100%) rename {src/test => tests}/ui/issues/issue-18804/main.rs (100%) rename {src/test => tests}/ui/issues/issue-18809.rs (100%) rename {src/test => tests}/ui/issues/issue-18819.rs (100%) rename {src/test => tests}/ui/issues/issue-18819.stderr (100%) rename {src/test => tests}/ui/issues/issue-18845.rs (100%) rename {src/test => tests}/ui/issues/issue-18859.rs (100%) rename {src/test => tests}/ui/issues/issue-18906.rs (100%) rename {src/test => tests}/ui/issues/issue-18913.rs (100%) rename {src/test => tests}/ui/issues/issue-18919.rs (100%) rename {src/test => tests}/ui/issues/issue-18919.stderr (100%) rename {src/test => tests}/ui/issues/issue-18952.rs (100%) rename {src/test => tests}/ui/issues/issue-18959.rs (100%) rename {src/test => tests}/ui/issues/issue-18959.stderr (100%) rename {src/test => tests}/ui/issues/issue-18988.rs (100%) rename {src/test => tests}/ui/issues/issue-1900.rs (100%) rename {src/test => tests}/ui/issues/issue-1900.stderr (100%) rename {src/test => tests}/ui/issues/issue-19001.rs (100%) rename {src/test => tests}/ui/issues/issue-19037.rs (100%) rename {src/test => tests}/ui/issues/issue-19086.rs (100%) rename {src/test => tests}/ui/issues/issue-19086.stderr (100%) rename {src/test => tests}/ui/issues/issue-19097.rs (100%) rename {src/test => tests}/ui/issues/issue-19098.rs (100%) rename {src/test => tests}/ui/issues/issue-19100.fixed (100%) rename {src/test => tests}/ui/issues/issue-19100.rs (100%) rename {src/test => tests}/ui/issues/issue-19100.stderr (100%) rename {src/test => tests}/ui/issues/issue-19102.rs (100%) rename {src/test => tests}/ui/issues/issue-19127.rs (100%) rename {src/test => tests}/ui/issues/issue-19129-1.rs (100%) rename {src/test => tests}/ui/issues/issue-19129-2.rs (100%) rename {src/test => tests}/ui/issues/issue-19135.rs (100%) rename {src/test => tests}/ui/issues/issue-1920-1.rs (100%) rename {src/test => tests}/ui/issues/issue-1920-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-1920-2.rs (100%) rename {src/test => tests}/ui/issues/issue-1920-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-1920-3.rs (100%) rename {src/test => tests}/ui/issues/issue-1920-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-19244-1.rs (100%) rename {src/test => tests}/ui/issues/issue-19244-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-19244-2.rs (100%) rename {src/test => tests}/ui/issues/issue-19244-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-19293.rs (100%) rename {src/test => tests}/ui/issues/issue-19340-1.rs (100%) rename {src/test => tests}/ui/issues/issue-19340-2.rs (100%) rename {src/test => tests}/ui/issues/issue-19367.rs (100%) rename {src/test => tests}/ui/issues/issue-19380.rs (100%) rename {src/test => tests}/ui/issues/issue-19380.stderr (100%) rename {src/test => tests}/ui/issues/issue-19398.rs (100%) rename {src/test => tests}/ui/issues/issue-19404.rs (100%) rename {src/test => tests}/ui/issues/issue-19479.rs (100%) rename {src/test => tests}/ui/issues/issue-19482.rs (100%) rename {src/test => tests}/ui/issues/issue-19482.stderr (100%) rename {src/test => tests}/ui/issues/issue-19499.rs (100%) rename {src/test => tests}/ui/issues/issue-19521.rs (100%) rename {src/test => tests}/ui/issues/issue-19521.stderr (100%) rename {src/test => tests}/ui/issues/issue-19601.rs (100%) rename {src/test => tests}/ui/issues/issue-1962.fixed (100%) rename {src/test => tests}/ui/issues/issue-1962.rs (100%) rename {src/test => tests}/ui/issues/issue-1962.stderr (100%) rename {src/test => tests}/ui/issues/issue-19631.rs (100%) rename {src/test => tests}/ui/issues/issue-19632.rs (100%) rename {src/test => tests}/ui/issues/issue-19692.rs (100%) rename {src/test => tests}/ui/issues/issue-19692.stderr (100%) rename {src/test => tests}/ui/issues/issue-19707.rs (100%) rename {src/test => tests}/ui/issues/issue-19707.stderr (100%) rename {src/test => tests}/ui/issues/issue-19734.rs (100%) rename {src/test => tests}/ui/issues/issue-19734.stderr (100%) rename {src/test => tests}/ui/issues/issue-1974.rs (100%) rename {src/test => tests}/ui/issues/issue-19811-escape-unicode.rs (100%) rename {src/test => tests}/ui/issues/issue-19850.rs (100%) rename {src/test => tests}/ui/issues/issue-19922.rs (100%) rename {src/test => tests}/ui/issues/issue-19922.stderr (100%) rename {src/test => tests}/ui/issues/issue-19982.rs (100%) rename {src/test => tests}/ui/issues/issue-19991.rs (100%) rename {src/test => tests}/ui/issues/issue-19991.stderr (100%) rename {src/test => tests}/ui/issues/issue-20009.rs (100%) rename {src/test => tests}/ui/issues/issue-20055-box-trait.rs (100%) rename {src/test => tests}/ui/issues/issue-20055-box-unsized-array.rs (100%) rename {src/test => tests}/ui/issues/issue-20162.rs (100%) rename {src/test => tests}/ui/issues/issue-20162.stderr (100%) rename {src/test => tests}/ui/issues/issue-20174.rs (100%) rename {src/test => tests}/ui/issues/issue-20186.rs (100%) rename {src/test => tests}/ui/issues/issue-20225.rs (100%) rename {src/test => tests}/ui/issues/issue-20225.stderr (100%) rename {src/test => tests}/ui/issues/issue-20261.rs (100%) rename {src/test => tests}/ui/issues/issue-20261.stderr (100%) rename {src/test => tests}/ui/issues/issue-20313-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-20313.rs (100%) rename {src/test => tests}/ui/issues/issue-20313.stderr (100%) rename {src/test => tests}/ui/issues/issue-20389.rs (100%) rename {src/test => tests}/ui/issues/issue-20396.rs (100%) rename {src/test => tests}/ui/issues/issue-20413.rs (100%) rename {src/test => tests}/ui/issues/issue-20413.stderr (100%) rename {src/test => tests}/ui/issues/issue-20414.rs (100%) rename {src/test => tests}/ui/issues/issue-20427.rs (100%) rename {src/test => tests}/ui/issues/issue-20433.rs (100%) rename {src/test => tests}/ui/issues/issue-20433.stderr (100%) rename {src/test => tests}/ui/issues/issue-20454.rs (100%) rename {src/test => tests}/ui/issues/issue-20544.rs (100%) rename {src/test => tests}/ui/issues/issue-20575.rs (100%) rename {src/test => tests}/ui/issues/issue-20605.rs (100%) rename {src/test => tests}/ui/issues/issue-20605.stderr (100%) rename {src/test => tests}/ui/issues/issue-20616.rs (100%) rename {src/test => tests}/ui/issues/issue-2063-resource.rs (100%) rename {src/test => tests}/ui/issues/issue-2063.rs (100%) rename {src/test => tests}/ui/issues/issue-20644.rs (100%) rename {src/test => tests}/ui/issues/issue-20676.rs (100%) rename {src/test => tests}/ui/issues/issue-20714.rs (100%) rename {src/test => tests}/ui/issues/issue-20714.stderr (100%) rename {src/test => tests}/ui/issues/issue-2074.rs (100%) rename {src/test => tests}/ui/issues/issue-20763-1.rs (100%) rename {src/test => tests}/ui/issues/issue-20763-2.rs (100%) rename {src/test => tests}/ui/issues/issue-20772.rs (100%) rename {src/test => tests}/ui/issues/issue-20772.stderr (100%) rename {src/test => tests}/ui/issues/issue-20797.rs (100%) rename {src/test => tests}/ui/issues/issue-20803.rs (100%) rename {src/test => tests}/ui/issues/issue-20831-debruijn.rs (100%) rename {src/test => tests}/ui/issues/issue-20831-debruijn.stderr (100%) rename {src/test => tests}/ui/issues/issue-20847.rs (100%) rename {src/test => tests}/ui/issues/issue-20939.rs (100%) rename {src/test => tests}/ui/issues/issue-20939.stderr (100%) rename {src/test => tests}/ui/issues/issue-20953.rs (100%) rename {src/test => tests}/ui/issues/issue-20971.rs (100%) rename {src/test => tests}/ui/issues/issue-21033.rs (100%) rename {src/test => tests}/ui/issues/issue-21140.rs (100%) rename {src/test => tests}/ui/issues/issue-21160.rs (100%) rename {src/test => tests}/ui/issues/issue-21160.stderr (100%) rename {src/test => tests}/ui/issues/issue-21174-2.rs (100%) rename {src/test => tests}/ui/issues/issue-21174.rs (100%) rename {src/test => tests}/ui/issues/issue-21174.stderr (100%) rename {src/test => tests}/ui/issues/issue-21177.rs (100%) rename {src/test => tests}/ui/issues/issue-21177.stderr (100%) rename {src/test => tests}/ui/issues/issue-21202.rs (100%) rename {src/test => tests}/ui/issues/issue-21202.stderr (100%) rename {src/test => tests}/ui/issues/issue-21245.rs (100%) rename {src/test => tests}/ui/issues/issue-21291.rs (100%) rename {src/test => tests}/ui/issues/issue-21306.rs (100%) rename {src/test => tests}/ui/issues/issue-21332.rs (100%) rename {src/test => tests}/ui/issues/issue-21332.stderr (100%) rename {src/test => tests}/ui/issues/issue-21361.rs (100%) rename {src/test => tests}/ui/issues/issue-21384.rs (100%) rename {src/test => tests}/ui/issues/issue-21400.rs (100%) rename {src/test => tests}/ui/issues/issue-21402.rs (100%) rename {src/test => tests}/ui/issues/issue-21449.rs (100%) rename {src/test => tests}/ui/issues/issue-21449.stderr (100%) rename {src/test => tests}/ui/issues/issue-2150.rs (100%) rename {src/test => tests}/ui/issues/issue-2150.stderr (100%) rename {src/test => tests}/ui/issues/issue-2151.rs (100%) rename {src/test => tests}/ui/issues/issue-2151.stderr (100%) rename {src/test => tests}/ui/issues/issue-21546.rs (100%) rename {src/test => tests}/ui/issues/issue-21546.stderr (100%) rename {src/test => tests}/ui/issues/issue-21554.rs (100%) rename {src/test => tests}/ui/issues/issue-21554.stderr (100%) rename {src/test => tests}/ui/issues/issue-21596.rs (100%) rename {src/test => tests}/ui/issues/issue-21596.stderr (100%) rename {src/test => tests}/ui/issues/issue-21600.rs (100%) rename {src/test => tests}/ui/issues/issue-21600.stderr (100%) rename {src/test => tests}/ui/issues/issue-21622.rs (100%) rename {src/test => tests}/ui/issues/issue-21634.rs (100%) rename {src/test => tests}/ui/issues/issue-21655.rs (100%) rename {src/test => tests}/ui/issues/issue-2170-exe.rs (100%) rename {src/test => tests}/ui/issues/issue-21701.rs (100%) rename {src/test => tests}/ui/issues/issue-21701.stderr (100%) rename {src/test => tests}/ui/issues/issue-21763.rs (100%) rename {src/test => tests}/ui/issues/issue-21763.stderr (100%) rename {src/test => tests}/ui/issues/issue-21837.rs (100%) rename {src/test => tests}/ui/issues/issue-21837.stderr (100%) rename {src/test => tests}/ui/issues/issue-21891.rs (100%) rename {src/test => tests}/ui/issues/issue-2190-1.rs (100%) rename {src/test => tests}/ui/issues/issue-21909.rs (100%) rename {src/test => tests}/ui/issues/issue-21922.rs (100%) rename {src/test => tests}/ui/issues/issue-21946.rs (100%) rename {src/test => tests}/ui/issues/issue-21946.stderr (100%) rename {src/test => tests}/ui/issues/issue-21950.rs (100%) rename {src/test => tests}/ui/issues/issue-21950.stderr (100%) rename {src/test => tests}/ui/issues/issue-21974.rs (100%) rename {src/test => tests}/ui/issues/issue-21974.stderr (100%) rename {src/test => tests}/ui/issues/issue-22008.rs (100%) rename {src/test => tests}/ui/issues/issue-22034.rs (100%) rename {src/test => tests}/ui/issues/issue-22034.stderr (100%) rename {src/test => tests}/ui/issues/issue-22036.rs (100%) rename {src/test => tests}/ui/issues/issue-2214.rs (100%) rename {src/test => tests}/ui/issues/issue-22258.rs (100%) rename {src/test => tests}/ui/issues/issue-22289.rs (100%) rename {src/test => tests}/ui/issues/issue-22289.stderr (100%) rename {src/test => tests}/ui/issues/issue-22312.rs (100%) rename {src/test => tests}/ui/issues/issue-22312.stderr (100%) rename {src/test => tests}/ui/issues/issue-22346.rs (100%) rename {src/test => tests}/ui/issues/issue-22356.rs (100%) rename {src/test => tests}/ui/issues/issue-22370.rs (100%) rename {src/test => tests}/ui/issues/issue-22370.stderr (100%) rename {src/test => tests}/ui/issues/issue-22384.rs (100%) rename {src/test => tests}/ui/issues/issue-22384.stderr (100%) rename {src/test => tests}/ui/issues/issue-22403.rs (100%) rename {src/test => tests}/ui/issues/issue-22426.rs (100%) rename {src/test => tests}/ui/issues/issue-22434.rs (100%) rename {src/test => tests}/ui/issues/issue-22434.stderr (100%) rename {src/test => tests}/ui/issues/issue-22468.rs (100%) rename {src/test => tests}/ui/issues/issue-22468.stderr (100%) rename {src/test => tests}/ui/issues/issue-22471.rs (100%) rename {src/test => tests}/ui/issues/issue-22536-copy-mustnt-zero.rs (100%) rename {src/test => tests}/ui/issues/issue-22577.rs (100%) rename {src/test => tests}/ui/issues/issue-22599.rs (100%) rename {src/test => tests}/ui/issues/issue-22599.stderr (100%) rename {src/test => tests}/ui/issues/issue-22603.rs (100%) rename {src/test => tests}/ui/issues/issue-22629.rs (100%) rename {src/test => tests}/ui/issues/issue-22638.polonius.stderr (100%) rename {src/test => tests}/ui/issues/issue-22638.rs (100%) rename {src/test => tests}/ui/issues/issue-22638.stderr (100%) rename {src/test => tests}/ui/issues/issue-22644.rs (100%) rename {src/test => tests}/ui/issues/issue-22644.stderr (100%) rename {src/test => tests}/ui/issues/issue-22673.rs (100%) rename {src/test => tests}/ui/issues/issue-22684.rs (100%) rename {src/test => tests}/ui/issues/issue-22684.stderr (100%) rename {src/test => tests}/ui/issues/issue-22706.rs (100%) rename {src/test => tests}/ui/issues/issue-22706.stderr (100%) rename {src/test => tests}/ui/issues/issue-22777.rs (100%) rename {src/test => tests}/ui/issues/issue-22781.rs (100%) rename {src/test => tests}/ui/issues/issue-22789.rs (100%) rename {src/test => tests}/ui/issues/issue-2281-part1.rs (100%) rename {src/test => tests}/ui/issues/issue-2281-part1.stderr (100%) rename {src/test => tests}/ui/issues/issue-22814.rs (100%) rename {src/test => tests}/ui/issues/issue-2284.rs (100%) rename {src/test => tests}/ui/issues/issue-22864-1.rs (100%) rename {src/test => tests}/ui/issues/issue-22864-2.rs (100%) rename {src/test => tests}/ui/issues/issue-22872.rs (100%) rename {src/test => tests}/ui/issues/issue-22872.stderr (100%) rename {src/test => tests}/ui/issues/issue-22874.rs (100%) rename {src/test => tests}/ui/issues/issue-22874.stderr (100%) rename {src/test => tests}/ui/issues/issue-2288.rs (100%) rename {src/test => tests}/ui/issues/issue-22886.rs (100%) rename {src/test => tests}/ui/issues/issue-22886.stderr (100%) rename {src/test => tests}/ui/issues/issue-22894.rs (100%) rename {src/test => tests}/ui/issues/issue-22933-1.rs (100%) rename {src/test => tests}/ui/issues/issue-22933-2.rs (100%) rename {src/test => tests}/ui/issues/issue-22933-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-22992-2.rs (100%) rename {src/test => tests}/ui/issues/issue-22992.rs (100%) rename {src/test => tests}/ui/issues/issue-23024.rs (100%) rename {src/test => tests}/ui/issues/issue-23024.stderr (100%) rename {src/test => tests}/ui/issues/issue-23036.rs (100%) rename {src/test => tests}/ui/issues/issue-23041.rs (100%) rename {src/test => tests}/ui/issues/issue-23041.stderr (100%) rename {src/test => tests}/ui/issues/issue-23046.rs (100%) rename {src/test => tests}/ui/issues/issue-23046.stderr (100%) rename {src/test => tests}/ui/issues/issue-23073.rs (100%) rename {src/test => tests}/ui/issues/issue-23073.stderr (100%) rename {src/test => tests}/ui/issues/issue-2311-2.rs (100%) rename {src/test => tests}/ui/issues/issue-2311.rs (100%) rename {src/test => tests}/ui/issues/issue-2312.rs (100%) rename {src/test => tests}/ui/issues/issue-23122-1.rs (100%) rename {src/test => tests}/ui/issues/issue-23122-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-23122-2.rs (100%) rename {src/test => tests}/ui/issues/issue-23122-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-2316-c.rs (100%) rename {src/test => tests}/ui/issues/issue-23173.rs (100%) rename {src/test => tests}/ui/issues/issue-23173.stderr (100%) rename {src/test => tests}/ui/issues/issue-23189.rs (100%) rename {src/test => tests}/ui/issues/issue-23189.stderr (100%) rename {src/test => tests}/ui/issues/issue-23217.rs (100%) rename {src/test => tests}/ui/issues/issue-23217.stderr (100%) rename {src/test => tests}/ui/issues/issue-23253.rs (100%) rename {src/test => tests}/ui/issues/issue-23253.stderr (100%) rename {src/test => tests}/ui/issues/issue-23261.rs (100%) rename {src/test => tests}/ui/issues/issue-23281.rs (100%) rename {src/test => tests}/ui/issues/issue-23281.stderr (100%) rename {src/test => tests}/ui/issues/issue-23302-1.rs (100%) rename {src/test => tests}/ui/issues/issue-23302-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-23302-2.rs (100%) rename {src/test => tests}/ui/issues/issue-23302-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-23302-3.rs (100%) rename {src/test => tests}/ui/issues/issue-23302-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-23304-1.rs (100%) rename {src/test => tests}/ui/issues/issue-23304-2.rs (100%) rename {src/test => tests}/ui/issues/issue-23311.rs (100%) rename {src/test => tests}/ui/issues/issue-23336.rs (100%) rename {src/test => tests}/ui/issues/issue-23354-2.rs (100%) rename {src/test => tests}/ui/issues/issue-23354.rs (100%) rename {src/test => tests}/ui/issues/issue-23406.rs (100%) rename {src/test => tests}/ui/issues/issue-23433.rs (100%) rename {src/test => tests}/ui/issues/issue-23442.rs (100%) rename {src/test => tests}/ui/issues/issue-23477.rs (100%) rename {src/test => tests}/ui/issues/issue-23485.rs (100%) rename {src/test => tests}/ui/issues/issue-23491.rs (100%) rename {src/test => tests}/ui/issues/issue-23543.rs (100%) rename {src/test => tests}/ui/issues/issue-23543.stderr (100%) rename {src/test => tests}/ui/issues/issue-23544.rs (100%) rename {src/test => tests}/ui/issues/issue-23544.stderr (100%) rename {src/test => tests}/ui/issues/issue-23550.rs (100%) rename {src/test => tests}/ui/issues/issue-23589.rs (100%) rename {src/test => tests}/ui/issues/issue-23589.stderr (100%) rename {src/test => tests}/ui/issues/issue-23611-enum-swap-in-drop.rs (100%) rename {src/test => tests}/ui/issues/issue-23649-1.rs (100%) rename {src/test => tests}/ui/issues/issue-23649-2.rs (100%) rename {src/test => tests}/ui/issues/issue-23649-3.rs (100%) rename {src/test => tests}/ui/issues/issue-23699.rs (100%) rename {src/test => tests}/ui/issues/issue-23781.rs (100%) rename {src/test => tests}/ui/issues/issue-2380-b.rs (100%) rename {src/test => tests}/ui/issues/issue-23808.rs (100%) rename {src/test => tests}/ui/issues/issue-2383.rs (100%) rename {src/test => tests}/ui/issues/issue-23891.rs (100%) rename {src/test => tests}/ui/issues/issue-23898.rs (100%) rename {src/test => tests}/ui/issues/issue-23958.rs (100%) rename {src/test => tests}/ui/issues/issue-23966.rs (100%) rename {src/test => tests}/ui/issues/issue-23966.stderr (100%) rename {src/test => tests}/ui/issues/issue-23992.rs (100%) rename {src/test => tests}/ui/issues/issue-24013.rs (100%) rename {src/test => tests}/ui/issues/issue-24013.stderr (100%) rename {src/test => tests}/ui/issues/issue-24036.rs (100%) rename {src/test => tests}/ui/issues/issue-24036.stderr (100%) rename {src/test => tests}/ui/issues/issue-24086.rs (100%) rename {src/test => tests}/ui/issues/issue-2414-c.rs (100%) rename {src/test => tests}/ui/issues/issue-24161.rs (100%) rename {src/test => tests}/ui/issues/issue-24227.rs (100%) rename {src/test => tests}/ui/issues/issue-2428.rs (100%) rename {src/test => tests}/ui/issues/issue-24308.rs (100%) rename {src/test => tests}/ui/issues/issue-24322.rs (100%) rename {src/test => tests}/ui/issues/issue-24322.stderr (100%) rename {src/test => tests}/ui/issues/issue-24352.rs (100%) rename {src/test => tests}/ui/issues/issue-24352.stderr (100%) rename {src/test => tests}/ui/issues/issue-24353.rs (100%) rename {src/test => tests}/ui/issues/issue-24357.rs (100%) rename {src/test => tests}/ui/issues/issue-24357.stderr (100%) rename {src/test => tests}/ui/issues/issue-24363.rs (100%) rename {src/test => tests}/ui/issues/issue-24363.stderr (100%) rename {src/test => tests}/ui/issues/issue-24365.rs (100%) rename {src/test => tests}/ui/issues/issue-24365.stderr (100%) rename {src/test => tests}/ui/issues/issue-24389.rs (100%) rename {src/test => tests}/ui/issues/issue-24424.rs (100%) rename {src/test => tests}/ui/issues/issue-24424.stderr (100%) rename {src/test => tests}/ui/issues/issue-24434.rs (100%) rename {src/test => tests}/ui/issues/issue-24446.rs (100%) rename {src/test => tests}/ui/issues/issue-24446.stderr (100%) rename {src/test => tests}/ui/issues/issue-2445-b.rs (100%) rename {src/test => tests}/ui/issues/issue-2445.rs (100%) rename {src/test => tests}/ui/issues/issue-24533.rs (100%) rename {src/test => tests}/ui/issues/issue-24589.rs (100%) rename {src/test => tests}/ui/issues/issue-2463.rs (100%) rename {src/test => tests}/ui/issues/issue-24682.rs (100%) rename {src/test => tests}/ui/issues/issue-24682.stderr (100%) rename {src/test => tests}/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs (100%) rename {src/test => tests}/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs (100%) rename {src/test => tests}/ui/issues/issue-24687-embed-debuginfo/main.rs (100%) rename {src/test => tests}/ui/issues/issue-2470-bounds-check-overflow.rs (100%) rename {src/test => tests}/ui/issues/issue-2472.rs (100%) rename {src/test => tests}/ui/issues/issue-24779.rs (100%) rename {src/test => tests}/ui/issues/issue-24819.rs (100%) rename {src/test => tests}/ui/issues/issue-24819.stderr (100%) rename {src/test => tests}/ui/issues/issue-2487-a.rs (100%) rename {src/test => tests}/ui/issues/issue-24945-repeat-dash-opts.rs (100%) rename {src/test => tests}/ui/issues/issue-24947.rs (100%) rename {src/test => tests}/ui/issues/issue-24954.rs (100%) rename {src/test => tests}/ui/issues/issue-2502.rs (100%) rename {src/test => tests}/ui/issues/issue-25076.rs (100%) rename {src/test => tests}/ui/issues/issue-25076.stderr (100%) rename {src/test => tests}/ui/issues/issue-25089.rs (100%) rename {src/test => tests}/ui/issues/issue-25145.rs (100%) rename {src/test => tests}/ui/issues/issue-25180.rs (100%) rename {src/test => tests}/ui/issues/issue-25185.rs (100%) rename {src/test => tests}/ui/issues/issue-2526-a.rs (100%) rename {src/test => tests}/ui/issues/issue-25279.rs (100%) rename {src/test => tests}/ui/issues/issue-25343.rs (100%) rename {src/test => tests}/ui/issues/issue-25368.rs (100%) rename {src/test => tests}/ui/issues/issue-25368.stderr (100%) rename {src/test => tests}/ui/issues/issue-25386.rs (100%) rename {src/test => tests}/ui/issues/issue-25386.stderr (100%) rename {src/test => tests}/ui/issues/issue-25394.rs (100%) rename {src/test => tests}/ui/issues/issue-25439.rs (100%) rename {src/test => tests}/ui/issues/issue-25439.stderr (100%) rename {src/test => tests}/ui/issues/issue-25467.rs (100%) rename {src/test => tests}/ui/issues/issue-25497.rs (100%) rename {src/test => tests}/ui/issues/issue-2550.rs (100%) rename {src/test => tests}/ui/issues/issue-25515.rs (100%) rename {src/test => tests}/ui/issues/issue-25549-multiple-drop.rs (100%) rename {src/test => tests}/ui/issues/issue-25579.rs (100%) rename {src/test => tests}/ui/issues/issue-25679.rs (100%) rename {src/test => tests}/ui/issues/issue-25693.rs (100%) rename {src/test => tests}/ui/issues/issue-25746-bool-transmute.rs (100%) rename {src/test => tests}/ui/issues/issue-25757.rs (100%) rename {src/test => tests}/ui/issues/issue-25810.rs (100%) rename {src/test => tests}/ui/issues/issue-2590.rs (100%) rename {src/test => tests}/ui/issues/issue-2590.stderr (100%) rename {src/test => tests}/ui/issues/issue-25901.rs (100%) rename {src/test => tests}/ui/issues/issue-25901.stderr (100%) rename {src/test => tests}/ui/issues/issue-26056.rs (100%) rename {src/test => tests}/ui/issues/issue-26056.stderr (100%) rename {src/test => tests}/ui/issues/issue-26093.rs (100%) rename {src/test => tests}/ui/issues/issue-26093.stderr (100%) rename {src/test => tests}/ui/issues/issue-26094.rs (100%) rename {src/test => tests}/ui/issues/issue-26094.stderr (100%) rename {src/test => tests}/ui/issues/issue-26095.rs (100%) rename {src/test => tests}/ui/issues/issue-2611-3.rs (100%) rename {src/test => tests}/ui/issues/issue-26127.rs (100%) rename {src/test => tests}/ui/issues/issue-26186.rs (100%) rename {src/test => tests}/ui/issues/issue-26205.rs (100%) rename {src/test => tests}/ui/issues/issue-26217.rs (100%) rename {src/test => tests}/ui/issues/issue-26217.stderr (100%) rename {src/test => tests}/ui/issues/issue-26237.rs (100%) rename {src/test => tests}/ui/issues/issue-26237.stderr (100%) rename {src/test => tests}/ui/issues/issue-26262.rs (100%) rename {src/test => tests}/ui/issues/issue-26262.stderr (100%) rename {src/test => tests}/ui/issues/issue-2631-b.rs (100%) rename {src/test => tests}/ui/issues/issue-2642.rs (100%) rename {src/test => tests}/ui/issues/issue-26468.rs (100%) rename {src/test => tests}/ui/issues/issue-26472.rs (100%) rename {src/test => tests}/ui/issues/issue-26472.stderr (100%) rename {src/test => tests}/ui/issues/issue-26484.rs (100%) rename {src/test => tests}/ui/issues/issue-26614.rs (100%) rename {src/test => tests}/ui/issues/issue-26619.rs (100%) rename {src/test => tests}/ui/issues/issue-26619.stderr (100%) rename {src/test => tests}/ui/issues/issue-26641.rs (100%) rename {src/test => tests}/ui/issues/issue-26646.rs (100%) rename {src/test => tests}/ui/issues/issue-26655.rs (100%) rename {src/test => tests}/ui/issues/issue-26709.rs (100%) rename {src/test => tests}/ui/issues/issue-26802.rs (100%) rename {src/test => tests}/ui/issues/issue-26805.rs (100%) rename {src/test => tests}/ui/issues/issue-26812.rs (100%) rename {src/test => tests}/ui/issues/issue-26812.stderr (100%) rename {src/test => tests}/ui/issues/issue-26905-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-26905.rs (100%) rename {src/test => tests}/ui/issues/issue-26905.stderr (100%) rename {src/test => tests}/ui/issues/issue-26948.rs (100%) rename {src/test => tests}/ui/issues/issue-26948.stderr (100%) rename {src/test => tests}/ui/issues/issue-26997.rs (100%) rename {src/test => tests}/ui/issues/issue-27008.rs (100%) rename {src/test => tests}/ui/issues/issue-27008.stderr (100%) rename {src/test => tests}/ui/issues/issue-27033.rs (100%) rename {src/test => tests}/ui/issues/issue-27033.stderr (100%) rename {src/test => tests}/ui/issues/issue-27042.rs (100%) rename {src/test => tests}/ui/issues/issue-27042.stderr (100%) rename {src/test => tests}/ui/issues/issue-27054-primitive-binary-ops.rs (100%) rename {src/test => tests}/ui/issues/issue-27078.rs (100%) rename {src/test => tests}/ui/issues/issue-27078.stderr (100%) rename {src/test => tests}/ui/issues/issue-2708.rs (100%) rename {src/test => tests}/ui/issues/issue-27105.rs (100%) rename {src/test => tests}/ui/issues/issue-2723-b.rs (100%) rename {src/test => tests}/ui/issues/issue-27240.rs (100%) rename {src/test => tests}/ui/issues/issue-27268.rs (100%) rename {src/test => tests}/ui/issues/issue-27281.rs (100%) rename {src/test => tests}/ui/issues/issue-27340.rs (100%) rename {src/test => tests}/ui/issues/issue-27340.stderr (100%) rename {src/test => tests}/ui/issues/issue-2735-2.rs (100%) rename {src/test => tests}/ui/issues/issue-2735-3.rs (100%) rename {src/test => tests}/ui/issues/issue-2735.rs (100%) rename {src/test => tests}/ui/issues/issue-27401-dropflag-reinit.rs (100%) rename {src/test => tests}/ui/issues/issue-27433.fixed (100%) rename {src/test => tests}/ui/issues/issue-27433.rs (100%) rename {src/test => tests}/ui/issues/issue-27433.stderr (100%) rename {src/test => tests}/ui/issues/issue-2748-a.rs (100%) rename {src/test => tests}/ui/issues/issue-27583.rs (100%) rename {src/test => tests}/ui/issues/issue-27592.rs (100%) rename {src/test => tests}/ui/issues/issue-27592.stderr (100%) rename {src/test => tests}/ui/issues/issue-2761.rs (100%) rename {src/test => tests}/ui/issues/issue-27639.rs (100%) rename {src/test => tests}/ui/issues/issue-27697.rs (100%) rename {src/test => tests}/ui/issues/issue-27815.rs (100%) rename {src/test => tests}/ui/issues/issue-27815.stderr (100%) rename {src/test => tests}/ui/issues/issue-27842.rs (100%) rename {src/test => tests}/ui/issues/issue-27842.stderr (100%) rename {src/test => tests}/ui/issues/issue-27859.rs (100%) rename {src/test => tests}/ui/issues/issue-27889.rs (100%) rename {src/test => tests}/ui/issues/issue-27901.rs (100%) rename {src/test => tests}/ui/issues/issue-27942.rs (100%) rename {src/test => tests}/ui/issues/issue-27942.stderr (100%) rename {src/test => tests}/ui/issues/issue-27949.rs (100%) rename {src/test => tests}/ui/issues/issue-27997.rs (100%) rename {src/test => tests}/ui/issues/issue-2804-2.rs (100%) rename {src/test => tests}/ui/issues/issue-28105.rs (100%) rename {src/test => tests}/ui/issues/issue-28105.stderr (100%) rename {src/test => tests}/ui/issues/issue-28109.rs (100%) rename {src/test => tests}/ui/issues/issue-28109.stderr (100%) rename {src/test => tests}/ui/issues/issue-28181.rs (100%) rename {src/test => tests}/ui/issues/issue-2823.rs (100%) rename {src/test => tests}/ui/issues/issue-2823.stderr (100%) rename {src/test => tests}/ui/issues/issue-28279.rs (100%) rename {src/test => tests}/ui/issues/issue-28344.rs (100%) rename {src/test => tests}/ui/issues/issue-28344.stderr (100%) rename {src/test => tests}/ui/issues/issue-28433.rs (100%) rename {src/test => tests}/ui/issues/issue-28433.stderr (100%) rename {src/test => tests}/ui/issues/issue-28472.rs (100%) rename {src/test => tests}/ui/issues/issue-28472.stderr (100%) rename {src/test => tests}/ui/issues/issue-2848.rs (100%) rename {src/test => tests}/ui/issues/issue-2848.stderr (100%) rename {src/test => tests}/ui/issues/issue-2849.rs (100%) rename {src/test => tests}/ui/issues/issue-2849.stderr (100%) rename {src/test => tests}/ui/issues/issue-28498-must-work-ex1.rs (100%) rename {src/test => tests}/ui/issues/issue-28498-must-work-ex2.rs (100%) rename {src/test => tests}/ui/issues/issue-28498-ugeh-ex1.rs (100%) rename {src/test => tests}/ui/issues/issue-28550.rs (100%) rename {src/test => tests}/ui/issues/issue-28561.rs (100%) rename {src/test => tests}/ui/issues/issue-28568.rs (100%) rename {src/test => tests}/ui/issues/issue-28568.stderr (100%) rename {src/test => tests}/ui/issues/issue-28586.rs (100%) rename {src/test => tests}/ui/issues/issue-28586.stderr (100%) rename {src/test => tests}/ui/issues/issue-28600.rs (100%) rename {src/test => tests}/ui/issues/issue-28625.rs (100%) rename {src/test => tests}/ui/issues/issue-28625.stderr (100%) rename {src/test => tests}/ui/issues/issue-28776.mir.stderr (100%) rename {src/test => tests}/ui/issues/issue-28776.rs (100%) rename {src/test => tests}/ui/issues/issue-28776.thir.stderr (100%) rename {src/test => tests}/ui/issues/issue-28777.rs (100%) rename {src/test => tests}/ui/issues/issue-28822.rs (100%) rename {src/test => tests}/ui/issues/issue-28828.rs (100%) rename {src/test => tests}/ui/issues/issue-28839.rs (100%) rename {src/test => tests}/ui/issues/issue-28936.rs (100%) rename {src/test => tests}/ui/issues/issue-2895.rs (100%) rename {src/test => tests}/ui/issues/issue-28971.rs (100%) rename {src/test => tests}/ui/issues/issue-28971.stderr (100%) rename {src/test => tests}/ui/issues/issue-28983.rs (100%) rename {src/test => tests}/ui/issues/issue-28992-empty.rs (100%) rename {src/test => tests}/ui/issues/issue-28992-empty.stderr (100%) rename {src/test => tests}/ui/issues/issue-28999.rs (100%) rename {src/test => tests}/ui/issues/issue-29030.rs (100%) rename {src/test => tests}/ui/issues/issue-29037.rs (100%) rename {src/test => tests}/ui/issues/issue-2904.rs (100%) rename {src/test => tests}/ui/issues/issue-29048.rs (100%) rename {src/test => tests}/ui/issues/issue-29053.rs (100%) rename {src/test => tests}/ui/issues/issue-29071-2.rs (100%) rename {src/test => tests}/ui/issues/issue-29071.rs (100%) rename {src/test => tests}/ui/issues/issue-29092.rs (100%) rename {src/test => tests}/ui/issues/issue-29147-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-29147.rs (100%) rename {src/test => tests}/ui/issues/issue-29147.stderr (100%) rename {src/test => tests}/ui/issues/issue-29181.rs (100%) rename {src/test => tests}/ui/issues/issue-29181.stderr (100%) rename {src/test => tests}/ui/issues/issue-29265.rs (100%) rename {src/test => tests}/ui/issues/issue-29276.rs (100%) rename {src/test => tests}/ui/issues/issue-2935.rs (100%) rename {src/test => tests}/ui/issues/issue-29466.rs (100%) rename {src/test => tests}/ui/issues/issue-29485.rs (100%) rename {src/test => tests}/ui/issues/issue-2951.rs (100%) rename {src/test => tests}/ui/issues/issue-2951.stderr (100%) rename {src/test => tests}/ui/issues/issue-29516.rs (100%) rename {src/test => tests}/ui/issues/issue-29522.rs (100%) rename {src/test => tests}/ui/issues/issue-29540.rs (100%) rename {src/test => tests}/ui/issues/issue-29663.rs (100%) rename {src/test => tests}/ui/issues/issue-29668.rs (100%) rename {src/test => tests}/ui/issues/issue-29710.rs (100%) rename {src/test => tests}/ui/issues/issue-29723.rs (100%) rename {src/test => tests}/ui/issues/issue-29723.stderr (100%) rename {src/test => tests}/ui/issues/issue-29740.rs (100%) rename {src/test => tests}/ui/issues/issue-29743.rs (100%) rename {src/test => tests}/ui/issues/issue-29746.rs (100%) rename {src/test => tests}/ui/issues/issue-29798.rs (100%) rename {src/test => tests}/ui/issues/issue-29821.rs (100%) rename {src/test => tests}/ui/issues/issue-29857.rs (100%) rename {src/test => tests}/ui/issues/issue-29861.rs (100%) rename {src/test => tests}/ui/issues/issue-29861.stderr (100%) rename {src/test => tests}/ui/issues/issue-2989.rs (100%) rename {src/test => tests}/ui/issues/issue-29948.rs (100%) rename {src/test => tests}/ui/issues/issue-2995.rs (100%) rename {src/test => tests}/ui/issues/issue-2995.stderr (100%) rename {src/test => tests}/ui/issues/issue-30007.rs (100%) rename {src/test => tests}/ui/issues/issue-30007.stderr (100%) rename {src/test => tests}/ui/issues/issue-30018-panic.rs (100%) rename {src/test => tests}/ui/issues/issue-3008-1.rs (100%) rename {src/test => tests}/ui/issues/issue-3008-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-3008-2.rs (100%) rename {src/test => tests}/ui/issues/issue-3008-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-3008-3.rs (100%) rename {src/test => tests}/ui/issues/issue-3008-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-30081.rs (100%) rename {src/test => tests}/ui/issues/issue-3012-2.rs (100%) rename {src/test => tests}/ui/issues/issue-30123.rs (100%) rename {src/test => tests}/ui/issues/issue-30123.stderr (100%) rename {src/test => tests}/ui/issues/issue-3021-b.rs (100%) rename {src/test => tests}/ui/issues/issue-3021-b.stderr (100%) rename {src/test => tests}/ui/issues/issue-3021-d.rs (100%) rename {src/test => tests}/ui/issues/issue-3021-d.stderr (100%) rename {src/test => tests}/ui/issues/issue-30236.rs (100%) rename {src/test => tests}/ui/issues/issue-30236.stderr (100%) rename {src/test => tests}/ui/issues/issue-30255.rs (100%) rename {src/test => tests}/ui/issues/issue-30255.stderr (100%) rename {src/test => tests}/ui/issues/issue-3026.rs (100%) rename {src/test => tests}/ui/issues/issue-3029.rs (100%) rename {src/test => tests}/ui/issues/issue-3037.rs (100%) rename {src/test => tests}/ui/issues/issue-30371.rs (100%) rename {src/test => tests}/ui/issues/issue-3038.rs (100%) rename {src/test => tests}/ui/issues/issue-3038.stderr (100%) rename {src/test => tests}/ui/issues/issue-30380.rs (100%) rename {src/test => tests}/ui/issues/issue-30438-a.rs (100%) rename {src/test => tests}/ui/issues/issue-30438-a.stderr (100%) rename {src/test => tests}/ui/issues/issue-30438-b.rs (100%) rename {src/test => tests}/ui/issues/issue-30438-b.stderr (100%) rename {src/test => tests}/ui/issues/issue-30438-c.rs (100%) rename {src/test => tests}/ui/issues/issue-30438-c.stderr (100%) rename {src/test => tests}/ui/issues/issue-30490.rs (100%) rename {src/test => tests}/ui/issues/issue-3052.rs (100%) rename {src/test => tests}/ui/issues/issue-30530.rs (100%) rename {src/test => tests}/ui/issues/issue-30589.rs (100%) rename {src/test => tests}/ui/issues/issue-30589.stderr (100%) rename {src/test => tests}/ui/issues/issue-30615.rs (100%) rename {src/test => tests}/ui/issues/issue-30756.rs (100%) rename {src/test => tests}/ui/issues/issue-30891.rs (100%) rename {src/test => tests}/ui/issues/issue-3091.rs (100%) rename {src/test => tests}/ui/issues/issue-3099-a.rs (100%) rename {src/test => tests}/ui/issues/issue-3099-a.stderr (100%) rename {src/test => tests}/ui/issues/issue-3099-b.rs (100%) rename {src/test => tests}/ui/issues/issue-3099-b.stderr (100%) rename {src/test => tests}/ui/issues/issue-3099.rs (100%) rename {src/test => tests}/ui/issues/issue-3099.stderr (100%) rename {src/test => tests}/ui/issues/issue-31011.rs (100%) rename {src/test => tests}/ui/issues/issue-31011.stderr (100%) rename {src/test => tests}/ui/issues/issue-3109.rs (100%) rename {src/test => tests}/ui/issues/issue-3121.rs (100%) rename {src/test => tests}/ui/issues/issue-31260.rs (100%) rename {src/test => tests}/ui/issues/issue-31267-additional.rs (100%) rename {src/test => tests}/ui/issues/issue-31267.rs (100%) rename {src/test => tests}/ui/issues/issue-31299.rs (100%) rename {src/test => tests}/ui/issues/issue-3136-b.rs (100%) rename {src/test => tests}/ui/issues/issue-3149.rs (100%) rename {src/test => tests}/ui/issues/issue-31511.rs (100%) rename {src/test => tests}/ui/issues/issue-31511.stderr (100%) rename {src/test => tests}/ui/issues/issue-3154.rs (100%) rename {src/test => tests}/ui/issues/issue-3154.stderr (100%) rename {src/test => tests}/ui/issues/issue-31702.rs (100%) rename {src/test => tests}/ui/issues/issue-31769.rs (100%) rename {src/test => tests}/ui/issues/issue-31769.stderr (100%) rename {src/test => tests}/ui/issues/issue-31776.rs (100%) rename {src/test => tests}/ui/issues/issue-31910.rs (100%) rename {src/test => tests}/ui/issues/issue-31910.stderr (100%) rename {src/test => tests}/ui/issues/issue-32004.rs (100%) rename {src/test => tests}/ui/issues/issue-32004.stderr (100%) rename {src/test => tests}/ui/issues/issue-32008.rs (100%) rename {src/test => tests}/ui/issues/issue-32086.rs (100%) rename {src/test => tests}/ui/issues/issue-32086.stderr (100%) rename {src/test => tests}/ui/issues/issue-32122-1.fixed (100%) rename {src/test => tests}/ui/issues/issue-32122-1.rs (100%) rename {src/test => tests}/ui/issues/issue-32122-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-32122-2.fixed (100%) rename {src/test => tests}/ui/issues/issue-32122-2.rs (100%) rename {src/test => tests}/ui/issues/issue-32122-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-3214.rs (100%) rename {src/test => tests}/ui/issues/issue-3214.stderr (100%) rename {src/test => tests}/ui/issues/issue-3220.rs (100%) rename {src/test => tests}/ui/issues/issue-32292.rs (100%) rename {src/test => tests}/ui/issues/issue-32323.rs (100%) rename {src/test => tests}/ui/issues/issue-32323.stderr (100%) rename {src/test => tests}/ui/issues/issue-32324.rs (100%) rename {src/test => tests}/ui/issues/issue-32326.rs (100%) rename {src/test => tests}/ui/issues/issue-32326.stderr (100%) rename {src/test => tests}/ui/issues/issue-32377.rs (100%) rename {src/test => tests}/ui/issues/issue-32377.stderr (100%) rename {src/test => tests}/ui/issues/issue-32389.rs (100%) rename {src/test => tests}/ui/issues/issue-32518.rs (100%) rename {src/test => tests}/ui/issues/issue-32655.rs (100%) rename {src/test => tests}/ui/issues/issue-32655.stderr (100%) rename {src/test => tests}/ui/issues/issue-32709.rs (100%) rename {src/test => tests}/ui/issues/issue-32709.stderr (100%) rename {src/test => tests}/ui/issues/issue-32782.rs (100%) rename {src/test => tests}/ui/issues/issue-32782.stderr (100%) rename {src/test => tests}/ui/issues/issue-32797.rs (100%) rename {src/test => tests}/ui/issues/issue-32805.rs (100%) rename {src/test => tests}/ui/issues/issue-3290.rs (100%) rename {src/test => tests}/ui/issues/issue-32950.rs (100%) rename {src/test => tests}/ui/issues/issue-32950.stderr (100%) rename {src/test => tests}/ui/issues/issue-32995-2.rs (100%) rename {src/test => tests}/ui/issues/issue-32995-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-32995.rs (100%) rename {src/test => tests}/ui/issues/issue-32995.stderr (100%) rename {src/test => tests}/ui/issues/issue-33096.rs (100%) rename {src/test => tests}/ui/issues/issue-33187.rs (100%) rename {src/test => tests}/ui/issues/issue-33202.rs (100%) rename {src/test => tests}/ui/issues/issue-33241.rs (100%) rename {src/test => tests}/ui/issues/issue-33287.rs (100%) rename {src/test => tests}/ui/issues/issue-33293.rs (100%) rename {src/test => tests}/ui/issues/issue-33293.stderr (100%) rename {src/test => tests}/ui/issues/issue-33387.rs (100%) rename {src/test => tests}/ui/issues/issue-3344.rs (100%) rename {src/test => tests}/ui/issues/issue-3344.stderr (100%) rename {src/test => tests}/ui/issues/issue-33461.rs (100%) rename {src/test => tests}/ui/issues/issue-33504.rs (100%) rename {src/test => tests}/ui/issues/issue-33504.stderr (100%) rename {src/test => tests}/ui/issues/issue-33525.rs (100%) rename {src/test => tests}/ui/issues/issue-33525.stderr (100%) rename {src/test => tests}/ui/issues/issue-33571.rs (100%) rename {src/test => tests}/ui/issues/issue-33571.stderr (100%) rename {src/test => tests}/ui/issues/issue-33687.rs (100%) rename {src/test => tests}/ui/issues/issue-33770.rs (100%) rename {src/test => tests}/ui/issues/issue-3389.rs (100%) rename {src/test => tests}/ui/issues/issue-33903.rs (100%) rename {src/test => tests}/ui/issues/issue-33941.rs (100%) rename {src/test => tests}/ui/issues/issue-33941.stderr (100%) rename {src/test => tests}/ui/issues/issue-33992.rs (100%) rename {src/test => tests}/ui/issues/issue-34047.rs (100%) rename {src/test => tests}/ui/issues/issue-34047.stderr (100%) rename {src/test => tests}/ui/issues/issue-34074.rs (100%) rename {src/test => tests}/ui/issues/issue-34209.rs (100%) rename {src/test => tests}/ui/issues/issue-34209.stderr (100%) rename {src/test => tests}/ui/issues/issue-34229.rs (100%) rename {src/test => tests}/ui/issues/issue-34229.stderr (100%) rename {src/test => tests}/ui/issues/issue-3424.rs (100%) rename {src/test => tests}/ui/issues/issue-3429.rs (100%) rename {src/test => tests}/ui/issues/issue-34334.rs (100%) rename {src/test => tests}/ui/issues/issue-34334.stderr (100%) rename {src/test => tests}/ui/issues/issue-34349.rs (100%) rename {src/test => tests}/ui/issues/issue-34349.stderr (100%) rename {src/test => tests}/ui/issues/issue-34373.rs (100%) rename {src/test => tests}/ui/issues/issue-34373.stderr (100%) rename {src/test => tests}/ui/issues/issue-34418.rs (100%) rename {src/test => tests}/ui/issues/issue-34427.rs (100%) rename {src/test => tests}/ui/issues/issue-3447.rs (100%) rename {src/test => tests}/ui/issues/issue-34503.rs (100%) rename {src/test => tests}/ui/issues/issue-34569.rs (100%) rename {src/test => tests}/ui/issues/issue-34571.rs (100%) rename {src/test => tests}/ui/issues/issue-34721.fixed (100%) rename {src/test => tests}/ui/issues/issue-34721.rs (100%) rename {src/test => tests}/ui/issues/issue-34721.stderr (100%) rename {src/test => tests}/ui/issues/issue-34751.rs (100%) rename {src/test => tests}/ui/issues/issue-3477.rs (100%) rename {src/test => tests}/ui/issues/issue-3477.stderr (100%) rename {src/test => tests}/ui/issues/issue-34780.rs (100%) rename {src/test => tests}/ui/issues/issue-34796.rs (100%) rename {src/test => tests}/ui/issues/issue-34839.rs (100%) rename {src/test => tests}/ui/issues/issue-34932.rs (100%) rename {src/test => tests}/ui/issues/issue-3500.rs (100%) rename {src/test => tests}/ui/issues/issue-35139.rs (100%) rename {src/test => tests}/ui/issues/issue-35139.stderr (100%) rename {src/test => tests}/ui/issues/issue-3521-2.fixed (100%) rename {src/test => tests}/ui/issues/issue-3521-2.rs (100%) rename {src/test => tests}/ui/issues/issue-3521-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-35241.rs (100%) rename {src/test => tests}/ui/issues/issue-35241.stderr (100%) rename {src/test => tests}/ui/issues/issue-35423.rs (100%) rename {src/test => tests}/ui/issues/issue-3556.rs (100%) rename {src/test => tests}/ui/issues/issue-35570.rs (100%) rename {src/test => tests}/ui/issues/issue-35570.stderr (100%) rename {src/test => tests}/ui/issues/issue-3559.rs (100%) rename {src/test => tests}/ui/issues/issue-35600.rs (100%) rename {src/test => tests}/ui/issues/issue-3563-3.rs (100%) rename {src/test => tests}/ui/issues/issue-3574.rs (100%) rename {src/test => tests}/ui/issues/issue-35815.rs (100%) rename {src/test => tests}/ui/issues/issue-35976.rs (100%) rename {src/test => tests}/ui/issues/issue-35976.unimported.stderr (100%) rename {src/test => tests}/ui/issues/issue-35988.rs (100%) rename {src/test => tests}/ui/issues/issue-35988.stderr (100%) rename {src/test => tests}/ui/issues/issue-36023.rs (100%) rename {src/test => tests}/ui/issues/issue-36036-associated-type-layout.rs (100%) rename {src/test => tests}/ui/issues/issue-36075.rs (100%) rename {src/test => tests}/ui/issues/issue-3609.rs (100%) rename {src/test => tests}/ui/issues/issue-36116.rs (100%) rename {src/test => tests}/ui/issues/issue-36260.rs (100%) rename {src/test => tests}/ui/issues/issue-36278-prefix-nesting.rs (100%) rename {src/test => tests}/ui/issues/issue-36299.rs (100%) rename {src/test => tests}/ui/issues/issue-36299.stderr (100%) rename {src/test => tests}/ui/issues/issue-36379.rs (100%) rename {src/test => tests}/ui/issues/issue-36400.rs (100%) rename {src/test => tests}/ui/issues/issue-36400.stderr (100%) rename {src/test => tests}/ui/issues/issue-36401.rs (100%) rename {src/test => tests}/ui/issues/issue-36474.rs (100%) rename {src/test => tests}/ui/issues/issue-3656.rs (100%) rename {src/test => tests}/ui/issues/issue-3668-2.fixed (100%) rename {src/test => tests}/ui/issues/issue-3668-2.rs (100%) rename {src/test => tests}/ui/issues/issue-3668-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-3668.rs (100%) rename {src/test => tests}/ui/issues/issue-3668.stderr (100%) rename {src/test => tests}/ui/issues/issue-36744-bitcast-args-if-needed.rs (100%) rename {src/test => tests}/ui/issues/issue-36744-without-calls.rs (100%) rename {src/test => tests}/ui/issues/issue-36786-resolve-call.rs (100%) rename {src/test => tests}/ui/issues/issue-36792.rs (100%) rename {src/test => tests}/ui/issues/issue-3680.rs (100%) rename {src/test => tests}/ui/issues/issue-3680.stderr (100%) rename {src/test => tests}/ui/issues/issue-36816.rs (100%) rename {src/test => tests}/ui/issues/issue-36836.rs (100%) rename {src/test => tests}/ui/issues/issue-36836.stderr (100%) rename {src/test => tests}/ui/issues/issue-36839.rs (100%) rename {src/test => tests}/ui/issues/issue-36856.rs (100%) rename {src/test => tests}/ui/issues/issue-36936.rs (100%) rename {src/test => tests}/ui/issues/issue-36954.rs (100%) rename {src/test => tests}/ui/issues/issue-3702-2.rs (100%) rename {src/test => tests}/ui/issues/issue-3702-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-3702.rs (100%) rename {src/test => tests}/ui/issues/issue-37051.rs (100%) rename {src/test => tests}/ui/issues/issue-3707.rs (100%) rename {src/test => tests}/ui/issues/issue-3707.stderr (100%) rename {src/test => tests}/ui/issues/issue-37109.rs (100%) rename {src/test => tests}/ui/issues/issue-37131.rs (100%) rename {src/test => tests}/ui/issues/issue-37131.stderr (100%) rename {src/test => tests}/ui/issues/issue-37291/auxiliary/lib.rs (100%) rename {src/test => tests}/ui/issues/issue-37291/main.rs (100%) rename {src/test => tests}/ui/issues/issue-37311-type-length-limit/issue-37311.polonius.stderr (100%) rename {src/test => tests}/ui/issues/issue-37311-type-length-limit/issue-37311.rs (100%) rename {src/test => tests}/ui/issues/issue-37311-type-length-limit/issue-37311.stderr (100%) rename {src/test => tests}/ui/issues/issue-3743.rs (100%) rename {src/test => tests}/ui/issues/issue-37510.rs (100%) rename {src/test => tests}/ui/issues/issue-3753.rs (100%) rename {src/test => tests}/ui/issues/issue-37534.rs (100%) rename {src/test => tests}/ui/issues/issue-37534.stderr (100%) rename {src/test => tests}/ui/issues/issue-37576.rs (100%) rename {src/test => tests}/ui/issues/issue-37576.stderr (100%) rename {src/test => tests}/ui/issues/issue-37598.rs (100%) rename {src/test => tests}/ui/issues/issue-3763.rs (100%) rename {src/test => tests}/ui/issues/issue-3763.stderr (100%) rename {src/test => tests}/ui/issues/issue-37665.rs (100%) rename {src/test => tests}/ui/issues/issue-37665.stderr (100%) rename {src/test => tests}/ui/issues/issue-37686.rs (100%) rename {src/test => tests}/ui/issues/issue-37725.rs (100%) rename {src/test => tests}/ui/issues/issue-37733.rs (100%) rename {src/test => tests}/ui/issues/issue-3779.rs (100%) rename {src/test => tests}/ui/issues/issue-3779.stderr (100%) rename {src/test => tests}/ui/issues/issue-37884.rs (100%) rename {src/test => tests}/ui/issues/issue-37884.stderr (100%) rename {src/test => tests}/ui/issues/issue-3794.rs (100%) rename {src/test => tests}/ui/issues/issue-38160.rs (100%) rename {src/test => tests}/ui/issues/issue-38190.rs (100%) rename {src/test => tests}/ui/issues/issue-38226.rs (100%) rename {src/test => tests}/ui/issues/issue-38381.rs (100%) rename {src/test => tests}/ui/issues/issue-38412.rs (100%) rename {src/test => tests}/ui/issues/issue-38412.stderr (100%) rename {src/test => tests}/ui/issues/issue-38437.rs (100%) rename {src/test => tests}/ui/issues/issue-38458.rs (100%) rename {src/test => tests}/ui/issues/issue-38458.stderr (100%) rename {src/test => tests}/ui/issues/issue-3847.rs (100%) rename {src/test => tests}/ui/issues/issue-38556.rs (100%) rename {src/test => tests}/ui/issues/issue-38727.rs (100%) rename {src/test => tests}/ui/issues/issue-3874.rs (100%) rename {src/test => tests}/ui/issues/issue-38763.rs (100%) rename {src/test => tests}/ui/issues/issue-3878.rs (100%) rename {src/test => tests}/ui/issues/issue-38821.rs (100%) rename {src/test => tests}/ui/issues/issue-38821.stderr (100%) rename {src/test => tests}/ui/issues/issue-38857.rs (100%) rename {src/test => tests}/ui/issues/issue-38857.stderr (100%) rename {src/test => tests}/ui/issues/issue-38875/auxiliary/issue-38875-b.rs (100%) rename {src/test => tests}/ui/issues/issue-38875/issue-38875.rs (100%) rename {src/test => tests}/ui/issues/issue-3888-2.rs (100%) rename {src/test => tests}/ui/issues/issue-38919.rs (100%) rename {src/test => tests}/ui/issues/issue-38919.stderr (100%) rename {src/test => tests}/ui/issues/issue-38942.rs (100%) rename {src/test => tests}/ui/issues/issue-3895.rs (100%) rename {src/test => tests}/ui/issues/issue-38954.rs (100%) rename {src/test => tests}/ui/issues/issue-38954.stderr (100%) rename {src/test => tests}/ui/issues/issue-38987.rs (100%) rename {src/test => tests}/ui/issues/issue-39089.rs (100%) rename {src/test => tests}/ui/issues/issue-39175.rs (100%) rename {src/test => tests}/ui/issues/issue-39175.stderr (100%) rename {src/test => tests}/ui/issues/issue-39211.rs (100%) rename {src/test => tests}/ui/issues/issue-39211.stderr (100%) rename {src/test => tests}/ui/issues/issue-39292.rs (100%) rename {src/test => tests}/ui/issues/issue-39367.rs (100%) rename {src/test => tests}/ui/issues/issue-39467.rs (100%) rename {src/test => tests}/ui/issues/issue-39548.rs (100%) rename {src/test => tests}/ui/issues/issue-39687.rs (100%) rename {src/test => tests}/ui/issues/issue-39687.stderr (100%) rename {src/test => tests}/ui/issues/issue-39709.rs (100%) rename {src/test => tests}/ui/issues/issue-3979-2.rs (100%) rename {src/test => tests}/ui/issues/issue-3979-generics.rs (100%) rename {src/test => tests}/ui/issues/issue-3979-xcrate.rs (100%) rename {src/test => tests}/ui/issues/issue-3979.rs (100%) rename {src/test => tests}/ui/issues/issue-39808.rs (100%) rename {src/test => tests}/ui/issues/issue-39827.rs (100%) rename {src/test => tests}/ui/issues/issue-39848.rs (100%) rename {src/test => tests}/ui/issues/issue-39848.stderr (100%) rename {src/test => tests}/ui/issues/issue-3991.rs (100%) rename {src/test => tests}/ui/issues/issue-3993.rs (100%) rename {src/test => tests}/ui/issues/issue-3993.stderr (100%) rename {src/test => tests}/ui/issues/issue-39970.rs (100%) rename {src/test => tests}/ui/issues/issue-39970.stderr (100%) rename {src/test => tests}/ui/issues/issue-39984.rs (100%) rename {src/test => tests}/ui/issues/issue-40000.rs (100%) rename {src/test => tests}/ui/issues/issue-40000.stderr (100%) rename {src/test => tests}/ui/issues/issue-40003.rs (100%) rename {src/test => tests}/ui/issues/issue-40085.rs (100%) rename {src/test => tests}/ui/issues/issue-40136.rs (100%) rename {src/test => tests}/ui/issues/issue-40235.rs (100%) rename {src/test => tests}/ui/issues/issue-4025.rs (100%) rename {src/test => tests}/ui/issues/issue-40288-2.rs (100%) rename {src/test => tests}/ui/issues/issue-40288-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-40288.rs (100%) rename {src/test => tests}/ui/issues/issue-40288.stderr (100%) rename {src/test => tests}/ui/issues/issue-40350.rs (100%) rename {src/test => tests}/ui/issues/issue-40402-ref-hints/issue-40402-1.rs (100%) rename {src/test => tests}/ui/issues/issue-40402-ref-hints/issue-40402-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-40402-ref-hints/issue-40402-2.rs (100%) rename {src/test => tests}/ui/issues/issue-40402-ref-hints/issue-40402-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-40408.rs (100%) rename {src/test => tests}/ui/issues/issue-40510-1.migrate.stderr (100%) rename {src/test => tests}/ui/issues/issue-40510-1.rs (100%) rename {src/test => tests}/ui/issues/issue-40510-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-40510-2.rs (100%) rename {src/test => tests}/ui/issues/issue-40510-3.migrate.stderr (100%) rename {src/test => tests}/ui/issues/issue-40510-3.rs (100%) rename {src/test => tests}/ui/issues/issue-40510-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-40510-4.rs (100%) rename {src/test => tests}/ui/issues/issue-40610.rs (100%) rename {src/test => tests}/ui/issues/issue-40610.stderr (100%) rename {src/test => tests}/ui/issues/issue-40749.rs (100%) rename {src/test => tests}/ui/issues/issue-40749.stderr (100%) rename {src/test => tests}/ui/issues/issue-40782.fixed (100%) rename {src/test => tests}/ui/issues/issue-40782.rs (100%) rename {src/test => tests}/ui/issues/issue-40782.stderr (100%) rename {src/test => tests}/ui/issues/issue-40827.rs (100%) rename {src/test => tests}/ui/issues/issue-40827.stderr (100%) rename {src/test => tests}/ui/issues/issue-40845.rs (100%) rename {src/test => tests}/ui/issues/issue-40845.stderr (100%) rename {src/test => tests}/ui/issues/issue-40861.rs (100%) rename {src/test => tests}/ui/issues/issue-40861.stderr (100%) rename {src/test => tests}/ui/issues/issue-40883.rs (100%) rename {src/test => tests}/ui/issues/issue-40951.rs (100%) rename {src/test => tests}/ui/issues/issue-41053.rs (100%) rename {src/test => tests}/ui/issues/issue-41139.rs (100%) rename {src/test => tests}/ui/issues/issue-41139.stderr (100%) rename {src/test => tests}/ui/issues/issue-41213.rs (100%) rename {src/test => tests}/ui/issues/issue-41229-ref-str.rs (100%) rename {src/test => tests}/ui/issues/issue-41229-ref-str.stderr (100%) rename {src/test => tests}/ui/issues/issue-41272.rs (100%) rename {src/test => tests}/ui/issues/issue-41298.rs (100%) rename {src/test => tests}/ui/issues/issue-41394-rpass.rs (100%) rename {src/test => tests}/ui/issues/issue-41394.rs (100%) rename {src/test => tests}/ui/issues/issue-41394.stderr (100%) rename {src/test => tests}/ui/issues/issue-41479.rs (100%) rename {src/test => tests}/ui/issues/issue-41498.rs (100%) rename {src/test => tests}/ui/issues/issue-41549.rs (100%) rename {src/test => tests}/ui/issues/issue-41549.stderr (100%) rename {src/test => tests}/ui/issues/issue-41604.rs (100%) rename {src/test => tests}/ui/issues/issue-41628.rs (100%) rename {src/test => tests}/ui/issues/issue-41652/auxiliary/issue-41652-b.rs (100%) rename {src/test => tests}/ui/issues/issue-41652/issue-41652.rs (100%) rename {src/test => tests}/ui/issues/issue-41652/issue-41652.stderr (100%) rename {src/test => tests}/ui/issues/issue-41677.rs (100%) rename {src/test => tests}/ui/issues/issue-41696.rs (100%) rename {src/test => tests}/ui/issues/issue-41726.rs (100%) rename {src/test => tests}/ui/issues/issue-41726.stderr (100%) rename {src/test => tests}/ui/issues/issue-41742.rs (100%) rename {src/test => tests}/ui/issues/issue-41742.stderr (100%) rename {src/test => tests}/ui/issues/issue-41744.rs (100%) rename {src/test => tests}/ui/issues/issue-41849-variance-req.rs (100%) rename {src/test => tests}/ui/issues/issue-41880.rs (100%) rename {src/test => tests}/ui/issues/issue-41880.stderr (100%) rename {src/test => tests}/ui/issues/issue-41888.rs (100%) rename {src/test => tests}/ui/issues/issue-41936-variance-coerce-unsized-cycle.rs (100%) rename {src/test => tests}/ui/issues/issue-41974.rs (100%) rename {src/test => tests}/ui/issues/issue-41974.stderr (100%) rename {src/test => tests}/ui/issues/issue-41998.rs (100%) rename {src/test => tests}/ui/issues/issue-42007.rs (100%) rename {src/test => tests}/ui/issues/issue-4208.rs (100%) rename {src/test => tests}/ui/issues/issue-42106.rs (100%) rename {src/test => tests}/ui/issues/issue-42106.stderr (100%) rename {src/test => tests}/ui/issues/issue-42148.rs (100%) rename {src/test => tests}/ui/issues/issue-42210.rs (100%) rename {src/test => tests}/ui/issues/issue-4228.rs (100%) rename {src/test => tests}/ui/issues/issue-42312.rs (100%) rename {src/test => tests}/ui/issues/issue-42312.stderr (100%) rename {src/test => tests}/ui/issues/issue-42453.rs (100%) rename {src/test => tests}/ui/issues/issue-42467.rs (100%) rename {src/test => tests}/ui/issues/issue-4252.rs (100%) rename {src/test => tests}/ui/issues/issue-42552.rs (100%) rename {src/test => tests}/ui/issues/issue-4265.rs (100%) rename {src/test => tests}/ui/issues/issue-4265.stderr (100%) rename {src/test => tests}/ui/issues/issue-42755.rs (100%) rename {src/test => tests}/ui/issues/issue-42755.stderr (100%) rename {src/test => tests}/ui/issues/issue-42796.rs (100%) rename {src/test => tests}/ui/issues/issue-42796.stderr (100%) rename {src/test => tests}/ui/issues/issue-42880.rs (100%) rename {src/test => tests}/ui/issues/issue-42880.stderr (100%) rename {src/test => tests}/ui/issues/issue-42956.rs (100%) rename {src/test => tests}/ui/issues/issue-43057.rs (100%) rename {src/test => tests}/ui/issues/issue-43162.rs (100%) rename {src/test => tests}/ui/issues/issue-43162.stderr (100%) rename {src/test => tests}/ui/issues/issue-43205.rs (100%) rename {src/test => tests}/ui/issues/issue-43250.rs (100%) rename {src/test => tests}/ui/issues/issue-43250.stderr (100%) rename {src/test => tests}/ui/issues/issue-43291.rs (100%) rename {src/test => tests}/ui/issues/issue-4333.rs (100%) rename {src/test => tests}/ui/issues/issue-4335.rs (100%) rename {src/test => tests}/ui/issues/issue-4335.stderr (100%) rename {src/test => tests}/ui/issues/issue-43355.rs (100%) rename {src/test => tests}/ui/issues/issue-43355.stderr (100%) rename {src/test => tests}/ui/issues/issue-43357.rs (100%) rename {src/test => tests}/ui/issues/issue-43420-no-over-suggest.rs (100%) rename {src/test => tests}/ui/issues/issue-43420-no-over-suggest.stderr (100%) rename {src/test => tests}/ui/issues/issue-43424.rs (100%) rename {src/test => tests}/ui/issues/issue-43424.stderr (100%) rename {src/test => tests}/ui/issues/issue-43431.rs (100%) rename {src/test => tests}/ui/issues/issue-43431.stderr (100%) rename {src/test => tests}/ui/issues/issue-43483.rs (100%) rename {src/test => tests}/ui/issues/issue-43692.rs (100%) rename {src/test => tests}/ui/issues/issue-43806.rs (100%) rename {src/test => tests}/ui/issues/issue-43853.rs (100%) rename {src/test => tests}/ui/issues/issue-4387.rs (100%) rename {src/test => tests}/ui/issues/issue-43910.rs (100%) rename {src/test => tests}/ui/issues/issue-43923.rs (100%) rename {src/test => tests}/ui/issues/issue-43925.rs (100%) rename {src/test => tests}/ui/issues/issue-43925.stderr (100%) rename {src/test => tests}/ui/issues/issue-43926.rs (100%) rename {src/test => tests}/ui/issues/issue-43926.stderr (100%) rename {src/test => tests}/ui/issues/issue-43988.rs (100%) rename {src/test => tests}/ui/issues/issue-43988.stderr (100%) rename {src/test => tests}/ui/issues/issue-44023.rs (100%) rename {src/test => tests}/ui/issues/issue-44023.stderr (100%) rename {src/test => tests}/ui/issues/issue-44056.rs (100%) rename {src/test => tests}/ui/issues/issue-44078.rs (100%) rename {src/test => tests}/ui/issues/issue-44078.stderr (100%) rename {src/test => tests}/ui/issues/issue-44216-add-instant.rs (100%) rename {src/test => tests}/ui/issues/issue-44216-add-system-time.rs (100%) rename {src/test => tests}/ui/issues/issue-44216-sub-instant.rs (100%) rename {src/test => tests}/ui/issues/issue-44216-sub-system-time.rs (100%) rename {src/test => tests}/ui/issues/issue-44239.fixed (100%) rename {src/test => tests}/ui/issues/issue-44239.rs (100%) rename {src/test => tests}/ui/issues/issue-44239.stderr (100%) rename {src/test => tests}/ui/issues/issue-44247.rs (100%) rename {src/test => tests}/ui/issues/issue-44255.rs (100%) rename {src/test => tests}/ui/issues/issue-44405.rs (100%) rename {src/test => tests}/ui/issues/issue-44405.stderr (100%) rename {src/test => tests}/ui/issues/issue-4464.rs (100%) rename {src/test => tests}/ui/issues/issue-44730.rs (100%) rename {src/test => tests}/ui/issues/issue-44851.rs (100%) rename {src/test => tests}/ui/issues/issue-4517.rs (100%) rename {src/test => tests}/ui/issues/issue-4517.stderr (100%) rename {src/test => tests}/ui/issues/issue-4541.rs (100%) rename {src/test => tests}/ui/issues/issue-4542.rs (100%) rename {src/test => tests}/ui/issues/issue-45425.rs (100%) rename {src/test => tests}/ui/issues/issue-4545.rs (100%) rename {src/test => tests}/ui/issues/issue-45510.rs (100%) rename {src/test => tests}/ui/issues/issue-45562.fixed (100%) rename {src/test => tests}/ui/issues/issue-45562.rs (100%) rename {src/test => tests}/ui/issues/issue-45562.stderr (100%) rename {src/test => tests}/ui/issues/issue-45697-1.rs (100%) rename {src/test => tests}/ui/issues/issue-45697-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-45697.rs (100%) rename {src/test => tests}/ui/issues/issue-45697.stderr (100%) rename {src/test => tests}/ui/issues/issue-45730.rs (100%) rename {src/test => tests}/ui/issues/issue-45730.stderr (100%) rename {src/test => tests}/ui/issues/issue-45731.rs (100%) rename {src/test => tests}/ui/issues/issue-45801.rs (100%) rename {src/test => tests}/ui/issues/issue-45801.stderr (100%) rename {src/test => tests}/ui/issues/issue-45965.rs (100%) rename {src/test => tests}/ui/issues/issue-45965.stderr (100%) rename {src/test => tests}/ui/issues/issue-46069.rs (100%) rename {src/test => tests}/ui/issues/issue-46101.rs (100%) rename {src/test => tests}/ui/issues/issue-46101.stderr (100%) rename {src/test => tests}/ui/issues/issue-46302.rs (100%) rename {src/test => tests}/ui/issues/issue-46302.stderr (100%) rename {src/test => tests}/ui/issues/issue-46311.rs (100%) rename {src/test => tests}/ui/issues/issue-46311.stderr (100%) rename {src/test => tests}/ui/issues/issue-46332.rs (100%) rename {src/test => tests}/ui/issues/issue-46332.stderr (100%) rename {src/test => tests}/ui/issues/issue-46438.rs (100%) rename {src/test => tests}/ui/issues/issue-46438.stderr (100%) rename {src/test => tests}/ui/issues/issue-46471-1.rs (100%) rename {src/test => tests}/ui/issues/issue-46471-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-46472.rs (100%) rename {src/test => tests}/ui/issues/issue-46472.stderr (100%) rename {src/test => tests}/ui/issues/issue-46604.rs (100%) rename {src/test => tests}/ui/issues/issue-46604.stderr (100%) rename {src/test => tests}/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.fixed (100%) rename {src/test => tests}/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs (100%) rename {src/test => tests}/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.stderr (100%) rename {src/test => tests}/ui/issues/issue-46771.rs (100%) rename {src/test => tests}/ui/issues/issue-46771.stderr (100%) rename {src/test => tests}/ui/issues/issue-46855.rs (100%) rename {src/test => tests}/ui/issues/issue-46964.rs (100%) rename {src/test => tests}/ui/issues/issue-46983.rs (100%) rename {src/test => tests}/ui/issues/issue-46983.stderr (100%) rename {src/test => tests}/ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs (100%) rename {src/test => tests}/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr (100%) rename {src/test => tests}/ui/issues/issue-47094.rs (100%) rename {src/test => tests}/ui/issues/issue-47094.stderr (100%) rename {src/test => tests}/ui/issues/issue-47184.rs (100%) rename {src/test => tests}/ui/issues/issue-47184.stderr (100%) rename {src/test => tests}/ui/issues/issue-47309.rs (100%) rename {src/test => tests}/ui/issues/issue-4734.rs (100%) rename {src/test => tests}/ui/issues/issue-4735.rs (100%) rename {src/test => tests}/ui/issues/issue-4736.rs (100%) rename {src/test => tests}/ui/issues/issue-4736.stderr (100%) rename {src/test => tests}/ui/issues/issue-47364.rs (100%) rename {src/test => tests}/ui/issues/issue-47377.rs (100%) rename {src/test => tests}/ui/issues/issue-47377.stderr (100%) rename {src/test => tests}/ui/issues/issue-47380.rs (100%) rename {src/test => tests}/ui/issues/issue-47380.stderr (100%) rename {src/test => tests}/ui/issues/issue-47486.rs (100%) rename {src/test => tests}/ui/issues/issue-47486.stderr (100%) rename {src/test => tests}/ui/issues/issue-4759-1.rs (100%) rename {src/test => tests}/ui/issues/issue-4759.rs (100%) rename {src/test => tests}/ui/issues/issue-47638.rs (100%) rename {src/test => tests}/ui/issues/issue-47646.rs (100%) rename {src/test => tests}/ui/issues/issue-47646.stderr (100%) rename {src/test => tests}/ui/issues/issue-47673.rs (100%) rename {src/test => tests}/ui/issues/issue-47703-1.rs (100%) rename {src/test => tests}/ui/issues/issue-47703-tuple.rs (100%) rename {src/test => tests}/ui/issues/issue-47703.rs (100%) rename {src/test => tests}/ui/issues/issue-47715.rs (100%) rename {src/test => tests}/ui/issues/issue-47715.stderr (100%) rename {src/test => tests}/ui/issues/issue-47722.rs (100%) rename {src/test => tests}/ui/issues/issue-47725.rs (100%) rename {src/test => tests}/ui/issues/issue-47725.stderr (100%) rename {src/test => tests}/ui/issues/issue-48006.rs (100%) rename {src/test => tests}/ui/issues/issue-48131.mir.stderr (100%) rename {src/test => tests}/ui/issues/issue-48131.rs (100%) rename {src/test => tests}/ui/issues/issue-48131.thir.stderr (100%) rename {src/test => tests}/ui/issues/issue-48132.rs (100%) rename {src/test => tests}/ui/issues/issue-48159.rs (100%) rename {src/test => tests}/ui/issues/issue-48179.rs (100%) rename {src/test => tests}/ui/issues/issue-48276.rs (100%) rename {src/test => tests}/ui/issues/issue-48276.stderr (100%) rename {src/test => tests}/ui/issues/issue-4830.rs (100%) rename {src/test => tests}/ui/issues/issue-48364.rs (100%) rename {src/test => tests}/ui/issues/issue-48364.stderr (100%) rename {src/test => tests}/ui/issues/issue-48728.rs (100%) rename {src/test => tests}/ui/issues/issue-48728.stderr (100%) rename {src/test => tests}/ui/issues/issue-4875.rs (100%) rename {src/test => tests}/ui/issues/issue-48838.rs (100%) rename {src/test => tests}/ui/issues/issue-48838.stderr (100%) rename {src/test => tests}/ui/issues/issue-48984.rs (100%) rename {src/test => tests}/ui/issues/issue-49298.rs (100%) rename {src/test => tests}/ui/issues/issue-4935.rs (100%) rename {src/test => tests}/ui/issues/issue-4935.stderr (100%) rename {src/test => tests}/ui/issues/issue-49544.rs (100%) rename {src/test => tests}/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs (100%) rename {src/test => tests}/ui/issues/issue-49632.rs (100%) rename {src/test => tests}/ui/issues/issue-4968.rs (100%) rename {src/test => tests}/ui/issues/issue-4968.stderr (100%) rename {src/test => tests}/ui/issues/issue-4972.rs (100%) rename {src/test => tests}/ui/issues/issue-4972.stderr (100%) rename {src/test => tests}/ui/issues/issue-49824.rs (100%) rename {src/test => tests}/ui/issues/issue-49824.stderr (100%) rename {src/test => tests}/ui/issues/issue-49851/compiler-builtins-error.rs (100%) rename {src/test => tests}/ui/issues/issue-49851/compiler-builtins-error.stderr (100%) rename {src/test => tests}/ui/issues/issue-49854.rs (100%) rename {src/test => tests}/ui/issues/issue-49919.rs (100%) rename {src/test => tests}/ui/issues/issue-49919.stderr (100%) rename {src/test => tests}/ui/issues/issue-49934-errors.rs (100%) rename {src/test => tests}/ui/issues/issue-49934-errors.stderr (100%) rename {src/test => tests}/ui/issues/issue-49934.rs (100%) rename {src/test => tests}/ui/issues/issue-49934.stderr (100%) rename {src/test => tests}/ui/issues/issue-49955.rs (100%) rename {src/test => tests}/ui/issues/issue-49973.rs (100%) rename {src/test => tests}/ui/issues/issue-5008-borrowed-traitobject-method-call.rs (100%) rename {src/test => tests}/ui/issues/issue-50187.rs (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/option-as_deref.rs (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/option-as_deref.stderr (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.rs (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.stderr (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/result-as_deref.rs (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/result-as_deref.stderr (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.rs (100%) rename {src/test => tests}/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.stderr (100%) rename {src/test => tests}/ui/issues/issue-50403.rs (100%) rename {src/test => tests}/ui/issues/issue-50403.stderr (100%) rename {src/test => tests}/ui/issues/issue-50411.rs (100%) rename {src/test => tests}/ui/issues/issue-50415.rs (100%) rename {src/test => tests}/ui/issues/issue-50442.rs (100%) rename {src/test => tests}/ui/issues/issue-50471.rs (100%) rename {src/test => tests}/ui/issues/issue-50518.rs (100%) rename {src/test => tests}/ui/issues/issue-50571.fixed (100%) rename {src/test => tests}/ui/issues/issue-50571.rs (100%) rename {src/test => tests}/ui/issues/issue-50571.stderr (100%) rename {src/test => tests}/ui/issues/issue-50576.rs (100%) rename {src/test => tests}/ui/issues/issue-50576.stderr (100%) rename {src/test => tests}/ui/issues/issue-50581.rs (100%) rename {src/test => tests}/ui/issues/issue-50581.stderr (100%) rename {src/test => tests}/ui/issues/issue-50582.rs (100%) rename {src/test => tests}/ui/issues/issue-50582.stderr (100%) rename {src/test => tests}/ui/issues/issue-50585.rs (100%) rename {src/test => tests}/ui/issues/issue-50585.stderr (100%) rename {src/test => tests}/ui/issues/issue-50600.rs (100%) rename {src/test => tests}/ui/issues/issue-50600.stderr (100%) rename {src/test => tests}/ui/issues/issue-50618.rs (100%) rename {src/test => tests}/ui/issues/issue-50618.stderr (100%) rename {src/test => tests}/ui/issues/issue-5062.rs (100%) rename {src/test => tests}/ui/issues/issue-5062.stderr (100%) rename {src/test => tests}/ui/issues/issue-5067.rs (100%) rename {src/test => tests}/ui/issues/issue-5067.stderr (100%) rename {src/test => tests}/ui/issues/issue-50688.rs (100%) rename {src/test => tests}/ui/issues/issue-50688.stderr (100%) rename {src/test => tests}/ui/issues/issue-50689.rs (100%) rename {src/test => tests}/ui/issues/issue-50714-1.rs (100%) rename {src/test => tests}/ui/issues/issue-50714-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-50714.rs (100%) rename {src/test => tests}/ui/issues/issue-50714.stderr (100%) rename {src/test => tests}/ui/issues/issue-50761.rs (100%) rename {src/test => tests}/ui/issues/issue-50781.rs (100%) rename {src/test => tests}/ui/issues/issue-50781.stderr (100%) rename {src/test => tests}/ui/issues/issue-50802.rs (100%) rename {src/test => tests}/ui/issues/issue-50802.stderr (100%) rename {src/test => tests}/ui/issues/issue-50811.rs (100%) rename {src/test => tests}/ui/issues/issue-50825-1.rs (100%) rename {src/test => tests}/ui/issues/issue-50825.rs (100%) rename {src/test => tests}/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs (100%) rename {src/test => tests}/ui/issues/issue-50865-private-impl-trait/main.rs (100%) rename {src/test => tests}/ui/issues/issue-5100.rs (100%) rename {src/test => tests}/ui/issues/issue-5100.stderr (100%) rename {src/test => tests}/ui/issues/issue-51022.rs (100%) rename {src/test => tests}/ui/issues/issue-51022.stderr (100%) rename {src/test => tests}/ui/issues/issue-51044.rs (100%) rename {src/test => tests}/ui/issues/issue-51102.rs (100%) rename {src/test => tests}/ui/issues/issue-51102.stderr (100%) rename {src/test => tests}/ui/issues/issue-51116.rs (100%) rename {src/test => tests}/ui/issues/issue-51116.stderr (100%) rename {src/test => tests}/ui/issues/issue-51154.rs (100%) rename {src/test => tests}/ui/issues/issue-51154.stderr (100%) rename {src/test => tests}/ui/issues/issue-51515.rs (100%) rename {src/test => tests}/ui/issues/issue-51515.stderr (100%) rename {src/test => tests}/ui/issues/issue-5153.rs (100%) rename {src/test => tests}/ui/issues/issue-5153.stderr (100%) rename {src/test => tests}/ui/issues/issue-51632-try-desugar-incompatible-types.rs (100%) rename {src/test => tests}/ui/issues/issue-51632-try-desugar-incompatible-types.stderr (100%) rename {src/test => tests}/ui/issues/issue-51655.rs (100%) rename {src/test => tests}/ui/issues/issue-51714.rs (100%) rename {src/test => tests}/ui/issues/issue-51714.stderr (100%) rename {src/test => tests}/ui/issues/issue-51798.rs (100%) rename {src/test => tests}/ui/issues/issue-51874.rs (100%) rename {src/test => tests}/ui/issues/issue-51874.stderr (100%) rename {src/test => tests}/ui/issues/issue-51907.rs (100%) rename {src/test => tests}/ui/issues/issue-5192.rs (100%) rename {src/test => tests}/ui/issues/issue-51947.rs (100%) rename {src/test => tests}/ui/issues/issue-52049.rs (100%) rename {src/test => tests}/ui/issues/issue-52049.stderr (100%) rename {src/test => tests}/ui/issues/issue-52126-assign-op-invariance.rs (100%) rename {src/test => tests}/ui/issues/issue-52126-assign-op-invariance.stderr (100%) rename {src/test => tests}/ui/issues/issue-52140/auxiliary/some_crate.rs (100%) rename {src/test => tests}/ui/issues/issue-52140/main.rs (100%) rename {src/test => tests}/ui/issues/issue-52141/auxiliary/some_crate.rs (100%) rename {src/test => tests}/ui/issues/issue-52141/main.rs (100%) rename {src/test => tests}/ui/issues/issue-52262.rs (100%) rename {src/test => tests}/ui/issues/issue-52262.stderr (100%) rename {src/test => tests}/ui/issues/issue-5239-1.rs (100%) rename {src/test => tests}/ui/issues/issue-5239-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-5239-2.rs (100%) rename {src/test => tests}/ui/issues/issue-52489.rs (100%) rename {src/test => tests}/ui/issues/issue-52489.stderr (100%) rename {src/test => tests}/ui/issues/issue-52533.rs (100%) rename {src/test => tests}/ui/issues/issue-52533.stderr (100%) rename {src/test => tests}/ui/issues/issue-52705/auxiliary/png2.rs (100%) rename {src/test => tests}/ui/issues/issue-52705/main.rs (100%) rename {src/test => tests}/ui/issues/issue-52717.rs (100%) rename {src/test => tests}/ui/issues/issue-52717.stderr (100%) rename {src/test => tests}/ui/issues/issue-5280.rs (100%) rename {src/test => tests}/ui/issues/issue-5315.rs (100%) rename {src/test => tests}/ui/issues/issue-5321-immediates-with-bare-self.rs (100%) rename {src/test => tests}/ui/issues/issue-53251.rs (100%) rename {src/test => tests}/ui/issues/issue-53251.stderr (100%) rename {src/test => tests}/ui/issues/issue-53275.rs (100%) rename {src/test => tests}/ui/issues/issue-53300.rs (100%) rename {src/test => tests}/ui/issues/issue-53300.stderr (100%) rename {src/test => tests}/ui/issues/issue-53333.rs (100%) rename {src/test => tests}/ui/issues/issue-53348.rs (100%) rename {src/test => tests}/ui/issues/issue-53348.stderr (100%) rename {src/test => tests}/ui/issues/issue-53419.rs (100%) rename {src/test => tests}/ui/issues/issue-53498.rs (100%) rename {src/test => tests}/ui/issues/issue-53498.stderr (100%) rename {src/test => tests}/ui/issues/issue-53568.rs (100%) rename {src/test => tests}/ui/issues/issue-5358-1.rs (100%) rename {src/test => tests}/ui/issues/issue-5358-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-53712.rs (100%) rename {src/test => tests}/ui/issues/issue-53712.stderr (100%) rename {src/test => tests}/ui/issues/issue-53728.rs (100%) rename {src/test => tests}/ui/issues/issue-53843.rs (100%) rename {src/test => tests}/ui/issues/issue-54044.rs (100%) rename {src/test => tests}/ui/issues/issue-54044.stderr (100%) rename {src/test => tests}/ui/issues/issue-54062.rs (100%) rename {src/test => tests}/ui/issues/issue-54062.stderr (100%) rename {src/test => tests}/ui/issues/issue-54094.rs (100%) rename {src/test => tests}/ui/issues/issue-54302-cases.rs (100%) rename {src/test => tests}/ui/issues/issue-54302-cases.stderr (100%) rename {src/test => tests}/ui/issues/issue-54302.rs (100%) rename {src/test => tests}/ui/issues/issue-54302.stderr (100%) rename {src/test => tests}/ui/issues/issue-5439.rs (100%) rename {src/test => tests}/ui/issues/issue-5439.stderr (100%) rename {src/test => tests}/ui/issues/issue-54410.rs (100%) rename {src/test => tests}/ui/issues/issue-54410.stderr (100%) rename {src/test => tests}/ui/issues/issue-54462-mutable-noalias-correctness.rs (100%) rename {src/test => tests}/ui/issues/issue-54477-reduced-2.rs (100%) rename {src/test => tests}/ui/issues/issue-54582.rs (100%) rename {src/test => tests}/ui/issues/issue-54696.rs (100%) rename {src/test => tests}/ui/issues/issue-5518.rs (100%) rename {src/test => tests}/ui/issues/issue-5521.rs (100%) rename {src/test => tests}/ui/issues/issue-55376.rs (100%) rename {src/test => tests}/ui/issues/issue-55380.rs (100%) rename {src/test => tests}/ui/issues/issue-55380.stderr (100%) rename {src/test => tests}/ui/issues/issue-5550.rs (100%) rename {src/test => tests}/ui/issues/issue-5554.rs (100%) rename {src/test => tests}/ui/issues/issue-55587.rs (100%) rename {src/test => tests}/ui/issues/issue-55587.stderr (100%) rename {src/test => tests}/ui/issues/issue-5572.rs (100%) rename {src/test => tests}/ui/issues/issue-55731.rs (100%) rename {src/test => tests}/ui/issues/issue-55731.stderr (100%) rename {src/test => tests}/ui/issues/issue-56128.rs (100%) rename {src/test => tests}/ui/issues/issue-56175.rs (100%) rename {src/test => tests}/ui/issues/issue-56175.stderr (100%) rename {src/test => tests}/ui/issues/issue-56199.rs (100%) rename {src/test => tests}/ui/issues/issue-56199.stderr (100%) rename {src/test => tests}/ui/issues/issue-56229.rs (100%) rename {src/test => tests}/ui/issues/issue-56237.rs (100%) rename {src/test => tests}/ui/issues/issue-5666.rs (100%) rename {src/test => tests}/ui/issues/issue-56806.rs (100%) rename {src/test => tests}/ui/issues/issue-56806.stderr (100%) rename {src/test => tests}/ui/issues/issue-56835.rs (100%) rename {src/test => tests}/ui/issues/issue-56835.stderr (100%) rename {src/test => tests}/ui/issues/issue-56870.rs (100%) rename {src/test => tests}/ui/issues/issue-5688.rs (100%) rename {src/test => tests}/ui/issues/issue-56943.rs (100%) rename {src/test => tests}/ui/issues/issue-56943.stderr (100%) rename {src/test => tests}/ui/issues/issue-5708.rs (100%) rename {src/test => tests}/ui/issues/issue-57156.rs (100%) rename {src/test => tests}/ui/issues/issue-57162.rs (100%) rename {src/test => tests}/ui/issues/issue-5718.rs (100%) rename {src/test => tests}/ui/issues/issue-57198-pass.rs (100%) rename {src/test => tests}/ui/issues/issue-57271.rs (100%) rename {src/test => tests}/ui/issues/issue-57271.stderr (100%) rename {src/test => tests}/ui/issues/issue-57362-1.rs (100%) rename {src/test => tests}/ui/issues/issue-57362-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-57362-2.rs (100%) rename {src/test => tests}/ui/issues/issue-57362-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-57399-self-return-impl-trait.rs (100%) rename {src/test => tests}/ui/issues/issue-5741.rs (100%) rename {src/test => tests}/ui/issues/issue-5754.rs (100%) rename {src/test => tests}/ui/issues/issue-57741-1.rs (100%) rename {src/test => tests}/ui/issues/issue-57741-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-57741.fixed (100%) rename {src/test => tests}/ui/issues/issue-57741.rs (100%) rename {src/test => tests}/ui/issues/issue-57741.stderr (100%) rename {src/test => tests}/ui/issues/issue-57781.rs (100%) rename {src/test => tests}/ui/issues/issue-57924.rs (100%) rename {src/test => tests}/ui/issues/issue-57924.stderr (100%) rename {src/test => tests}/ui/issues/issue-58212.rs (100%) rename {src/test => tests}/ui/issues/issue-58344.rs (100%) rename {src/test => tests}/ui/issues/issue-58375-monomorphize-default-impls.rs (100%) rename {src/test => tests}/ui/issues/issue-5844.mir.stderr (100%) rename {src/test => tests}/ui/issues/issue-5844.rs (100%) rename {src/test => tests}/ui/issues/issue-5844.thir.stderr (100%) rename {src/test => tests}/ui/issues/issue-58463.rs (100%) rename {src/test => tests}/ui/issues/issue-58712.rs (100%) rename {src/test => tests}/ui/issues/issue-58712.stderr (100%) rename {src/test => tests}/ui/issues/issue-58734.rs (100%) rename {src/test => tests}/ui/issues/issue-58734.stderr (100%) rename {src/test => tests}/ui/issues/issue-5883.rs (100%) rename {src/test => tests}/ui/issues/issue-5883.stderr (100%) rename {src/test => tests}/ui/issues/issue-5884.rs (100%) rename {src/test => tests}/ui/issues/issue-58857.rs (100%) rename {src/test => tests}/ui/issues/issue-58857.stderr (100%) rename {src/test => tests}/ui/issues/issue-5900.rs (100%) rename {src/test => tests}/ui/issues/issue-59020.rs (100%) rename {src/test => tests}/ui/issues/issue-5917.rs (100%) rename {src/test => tests}/ui/issues/issue-59326.rs (100%) rename {src/test => tests}/ui/issues/issue-59488.rs (100%) rename {src/test => tests}/ui/issues/issue-59488.stderr (100%) rename {src/test => tests}/ui/issues/issue-59494.rs (100%) rename {src/test => tests}/ui/issues/issue-59494.stderr (100%) rename {src/test => tests}/ui/issues/issue-5950.rs (100%) rename {src/test => tests}/ui/issues/issue-59756.fixed (100%) rename {src/test => tests}/ui/issues/issue-59756.rs (100%) rename {src/test => tests}/ui/issues/issue-59756.stderr (100%) rename {src/test => tests}/ui/issues/issue-5988.rs (100%) rename {src/test => tests}/ui/issues/issue-5997-enum.rs (100%) rename {src/test => tests}/ui/issues/issue-5997-enum.stderr (100%) rename {src/test => tests}/ui/issues/issue-5997-struct.rs (100%) rename {src/test => tests}/ui/issues/issue-5997-struct.stderr (100%) rename {src/test => tests}/ui/issues/issue-5997.rs (100%) rename {src/test => tests}/ui/issues/issue-60218.rs (100%) rename {src/test => tests}/ui/issues/issue-60218.stderr (100%) rename {src/test => tests}/ui/issues/issue-60622.rs (100%) rename {src/test => tests}/ui/issues/issue-60622.stderr (100%) rename {src/test => tests}/ui/issues/issue-60989.rs (100%) rename {src/test => tests}/ui/issues/issue-60989.stderr (100%) rename {src/test => tests}/ui/issues/issue-61106.rs (100%) rename {src/test => tests}/ui/issues/issue-61106.stderr (100%) rename {src/test => tests}/ui/issues/issue-61108.rs (100%) rename {src/test => tests}/ui/issues/issue-61108.stderr (100%) rename {src/test => tests}/ui/issues/issue-6117.rs (100%) rename {src/test => tests}/ui/issues/issue-6130.rs (100%) rename {src/test => tests}/ui/issues/issue-61475.rs (100%) rename {src/test => tests}/ui/issues/issue-6153.rs (100%) rename {src/test => tests}/ui/issues/issue-61623.rs (100%) rename {src/test => tests}/ui/issues/issue-61623.stderr (100%) rename {src/test => tests}/ui/issues/issue-61696.rs (100%) rename {src/test => tests}/ui/issues/issue-61894.rs (100%) rename {src/test => tests}/ui/issues/issue-62375.rs (100%) rename {src/test => tests}/ui/issues/issue-62375.stderr (100%) rename {src/test => tests}/ui/issues/issue-62480.rs (100%) rename {src/test => tests}/ui/issues/issue-62480.stderr (100%) rename {src/test => tests}/ui/issues/issue-6318.rs (100%) rename {src/test => tests}/ui/issues/issue-6344-let.rs (100%) rename {src/test => tests}/ui/issues/issue-6344-match.rs (100%) rename {src/test => tests}/ui/issues/issue-63983.rs (100%) rename {src/test => tests}/ui/issues/issue-63983.stderr (100%) rename {src/test => tests}/ui/issues/issue-64430.rs (100%) rename {src/test => tests}/ui/issues/issue-64430.stderr (100%) rename {src/test => tests}/ui/issues/issue-64559.rs (100%) rename {src/test => tests}/ui/issues/issue-64559.stderr (100%) rename {src/test => tests}/ui/issues/issue-6458-1.rs (100%) rename {src/test => tests}/ui/issues/issue-6458-2.rs (100%) rename {src/test => tests}/ui/issues/issue-6458-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-6458-3.rs (100%) rename {src/test => tests}/ui/issues/issue-6458-3.stderr (100%) rename {src/test => tests}/ui/issues/issue-6458-4.rs (100%) rename {src/test => tests}/ui/issues/issue-6458-4.stderr (100%) rename {src/test => tests}/ui/issues/issue-6458.rs (100%) rename {src/test => tests}/ui/issues/issue-6458.stderr (100%) rename {src/test => tests}/ui/issues/issue-64593.rs (100%) rename {src/test => tests}/ui/issues/issue-64792-bad-unicode-ctor.rs (100%) rename {src/test => tests}/ui/issues/issue-64792-bad-unicode-ctor.stderr (100%) rename {src/test => tests}/ui/issues/issue-65131.rs (100%) rename {src/test => tests}/ui/issues/issue-65131.stderr (100%) rename {src/test => tests}/ui/issues/issue-65230.rs (100%) rename {src/test => tests}/ui/issues/issue-65230.stderr (100%) rename {src/test => tests}/ui/issues/issue-65462.rs (100%) rename {src/test => tests}/ui/issues/issue-6557.rs (100%) rename {src/test => tests}/ui/issues/issue-65634-raw-ident-suggestion.rs (100%) rename {src/test => tests}/ui/issues/issue-65634-raw-ident-suggestion.stderr (100%) rename {src/test => tests}/ui/issues/issue-6596-2.rs (100%) rename {src/test => tests}/ui/issues/issue-6596-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-66308.rs (100%) rename {src/test => tests}/ui/issues/issue-66353.rs (100%) rename {src/test => tests}/ui/issues/issue-66353.stderr (100%) rename {src/test => tests}/ui/issues/issue-6642.rs (100%) rename {src/test => tests}/ui/issues/issue-6642.stderr (100%) rename {src/test => tests}/ui/issues/issue-66667-function-cmp-cycle.rs (100%) rename {src/test => tests}/ui/issues/issue-66667-function-cmp-cycle.stderr (100%) rename {src/test => tests}/ui/issues/issue-66702-break-outside-loop-val.rs (100%) rename {src/test => tests}/ui/issues/issue-66702-break-outside-loop-val.stderr (100%) rename {src/test => tests}/ui/issues/issue-66706.rs (100%) rename {src/test => tests}/ui/issues/issue-66706.stderr (100%) rename {src/test => tests}/ui/issues/issue-66768.rs (100%) rename {src/test => tests}/ui/issues/issue-66923-show-error-for-correct-call.rs (100%) rename {src/test => tests}/ui/issues/issue-66923-show-error-for-correct-call.stderr (100%) rename {src/test => tests}/ui/issues/issue-67039-unsound-pin-partialeq.rs (100%) rename {src/test => tests}/ui/issues/issue-67039-unsound-pin-partialeq.stderr (100%) rename {src/test => tests}/ui/issues/issue-6738.rs (100%) rename {src/test => tests}/ui/issues/issue-6738.stderr (100%) rename {src/test => tests}/ui/issues/issue-67535.rs (100%) rename {src/test => tests}/ui/issues/issue-67535.stderr (100%) rename {src/test => tests}/ui/issues/issue-67552.polonius.stderr (100%) rename {src/test => tests}/ui/issues/issue-67552.rs (100%) rename {src/test => tests}/ui/issues/issue-67552.stderr (100%) rename {src/test => tests}/ui/issues/issue-68010-large-zst-consts.rs (100%) rename {src/test => tests}/ui/issues/issue-68696-catch-during-unwind.rs (100%) rename {src/test => tests}/ui/issues/issue-6892.rs (100%) rename {src/test => tests}/ui/issues/issue-68951.rs (100%) rename {src/test => tests}/ui/issues/issue-6898.rs (100%) rename {src/test => tests}/ui/issues/issue-69130.rs (100%) rename {src/test => tests}/ui/issues/issue-69130.stderr (100%) rename {src/test => tests}/ui/issues/issue-6919.rs (100%) rename {src/test => tests}/ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs (100%) rename {src/test => tests}/ui/issues/issue-69225-layout-repeated-checked-add.rs (100%) rename {src/test => tests}/ui/issues/issue-69306.rs (100%) rename {src/test => tests}/ui/issues/issue-69306.stderr (100%) rename {src/test => tests}/ui/issues/issue-6936.rs (100%) rename {src/test => tests}/ui/issues/issue-6936.stderr (100%) rename {src/test => tests}/ui/issues/issue-69396-const-no-type-in-macro.rs (100%) rename {src/test => tests}/ui/issues/issue-69396-const-no-type-in-macro.stderr (100%) rename {src/test => tests}/ui/issues/issue-69455.rs (100%) rename {src/test => tests}/ui/issues/issue-69455.stderr (100%) rename {src/test => tests}/ui/issues/issue-69602-type-err-during-codegen-ice.rs (100%) rename {src/test => tests}/ui/issues/issue-69602-type-err-during-codegen-ice.stderr (100%) rename {src/test => tests}/ui/issues/issue-69683.rs (100%) rename {src/test => tests}/ui/issues/issue-69683.stderr (100%) rename {src/test => tests}/ui/issues/issue-70093.rs (100%) rename {src/test => tests}/ui/issues/issue-7012.rs (100%) rename {src/test => tests}/ui/issues/issue-70381.rs (100%) rename {src/test => tests}/ui/issues/issue-70381.stderr (100%) rename {src/test => tests}/ui/issues/issue-7044.rs (100%) rename {src/test => tests}/ui/issues/issue-7044.stderr (100%) rename {src/test => tests}/ui/issues/issue-7061.rs (100%) rename {src/test => tests}/ui/issues/issue-7061.stderr (100%) rename {src/test => tests}/ui/issues/issue-70673.rs (100%) rename {src/test => tests}/ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs (100%) rename {src/test => tests}/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr (100%) rename {src/test => tests}/ui/issues/issue-70746.rs (100%) rename {src/test => tests}/ui/issues/issue-7092.rs (100%) rename {src/test => tests}/ui/issues/issue-7092.stderr (100%) rename {src/test => tests}/ui/issues/issue-71406.rs (100%) rename {src/test => tests}/ui/issues/issue-71406.stderr (100%) rename {src/test => tests}/ui/issues/issue-71584.rs (100%) rename {src/test => tests}/ui/issues/issue-71584.stderr (100%) rename {src/test => tests}/ui/issues/issue-71676-1.fixed (100%) rename {src/test => tests}/ui/issues/issue-71676-1.rs (100%) rename {src/test => tests}/ui/issues/issue-71676-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-71676-2.rs (100%) rename {src/test => tests}/ui/issues/issue-71676-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-7178.rs (100%) rename {src/test => tests}/ui/issues/issue-72002.rs (100%) rename {src/test => tests}/ui/issues/issue-72076.rs (100%) rename {src/test => tests}/ui/issues/issue-72076.stderr (100%) rename {src/test => tests}/ui/issues/issue-72278.rs (100%) rename {src/test => tests}/ui/issues/issue-72278.stderr (100%) rename {src/test => tests}/ui/issues/issue-7246.rs (100%) rename {src/test => tests}/ui/issues/issue-7246.stderr (100%) rename {src/test => tests}/ui/issues/issue-7268.rs (100%) rename {src/test => tests}/ui/issues/issue-72839-error-overflow.rs (100%) rename {src/test => tests}/ui/issues/issue-72839-error-overflow.stderr (100%) rename {src/test => tests}/ui/issues/issue-72933-match-stack-overflow.rs (100%) rename {src/test => tests}/ui/issues/issue-73112.rs (100%) rename {src/test => tests}/ui/issues/issue-73112.stderr (100%) rename {src/test => tests}/ui/issues/issue-73229.rs (100%) rename {src/test => tests}/ui/issues/issue-7344.rs (100%) rename {src/test => tests}/ui/issues/issue-7364.rs (100%) rename {src/test => tests}/ui/issues/issue-7364.stderr (100%) rename {src/test => tests}/ui/issues/issue-74082.rs (100%) rename {src/test => tests}/ui/issues/issue-74082.stderr (100%) rename {src/test => tests}/ui/issues/issue-74236/auxiliary/dep.rs (100%) rename {src/test => tests}/ui/issues/issue-74236/main.rs (100%) rename {src/test => tests}/ui/issues/issue-74236/main.stderr (100%) rename {src/test => tests}/ui/issues/issue-74564-if-expr-stack-overflow.rs (100%) rename {src/test => tests}/ui/issues/issue-7519-match-unit-in-arg.rs (100%) rename {src/test => tests}/ui/issues/issue-75283.rs (100%) rename {src/test => tests}/ui/issues/issue-75283.stderr (100%) rename {src/test => tests}/ui/issues/issue-75307.rs (100%) rename {src/test => tests}/ui/issues/issue-75307.stderr (100%) rename {src/test => tests}/ui/issues/issue-7563.rs (100%) rename {src/test => tests}/ui/issues/issue-75704.rs (100%) rename {src/test => tests}/ui/issues/issue-7575.rs (100%) rename {src/test => tests}/ui/issues/issue-75777.rs (100%) rename {src/test => tests}/ui/issues/issue-75777.stderr (100%) rename {src/test => tests}/ui/issues/issue-76042.rs (100%) rename {src/test => tests}/ui/issues/issue-7607-1.rs (100%) rename {src/test => tests}/ui/issues/issue-7607-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-7607-2.rs (100%) rename {src/test => tests}/ui/issues/issue-76077-1.fixed (100%) rename {src/test => tests}/ui/issues/issue-76077-1.rs (100%) rename {src/test => tests}/ui/issues/issue-76077-1.stderr (100%) rename {src/test => tests}/ui/issues/issue-76077.rs (100%) rename {src/test => tests}/ui/issues/issue-76077.stderr (100%) rename {src/test => tests}/ui/issues/issue-76191.rs (100%) rename {src/test => tests}/ui/issues/issue-76191.stderr (100%) rename {src/test => tests}/ui/issues/issue-7660.rs (100%) rename {src/test => tests}/ui/issues/issue-7663.rs (100%) rename {src/test => tests}/ui/issues/issue-7673-cast-generically-implemented-trait.rs (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218-2.fixed (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218-2.rs (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218-2.stderr (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218.fixed (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218.rs (100%) rename {src/test => tests}/ui/issues/issue-77218/issue-77218.stderr (100%) rename {src/test => tests}/ui/issues/issue-7784.rs (100%) rename {src/test => tests}/ui/issues/issue-77919.rs (100%) rename {src/test => tests}/ui/issues/issue-77919.stderr (100%) rename {src/test => tests}/ui/issues/issue-78115.rs (100%) rename {src/test => tests}/ui/issues/issue-7813.rs (100%) rename {src/test => tests}/ui/issues/issue-7813.stderr (100%) rename {src/test => tests}/ui/issues/issue-78192.rs (100%) rename {src/test => tests}/ui/issues/issue-78622.rs (100%) rename {src/test => tests}/ui/issues/issue-78622.stderr (100%) rename {src/test => tests}/ui/issues/issue-7867.rs (100%) rename {src/test => tests}/ui/issues/issue-7867.stderr (100%) rename {src/test => tests}/ui/issues/issue-78957.rs (100%) rename {src/test => tests}/ui/issues/issue-78957.stderr (100%) rename {src/test => tests}/ui/issues/issue-7899.rs (100%) rename {src/test => tests}/ui/issues/issue-7911.rs (100%) rename {src/test => tests}/ui/issues/issue-7950.rs (100%) rename {src/test => tests}/ui/issues/issue-7950.stderr (100%) rename {src/test => tests}/ui/issues/issue-7970a.rs (100%) rename {src/test => tests}/ui/issues/issue-7970a.stderr (100%) rename {src/test => tests}/ui/issues/issue-8044.rs (100%) rename {src/test => tests}/ui/issues/issue-80607.rs (100%) rename {src/test => tests}/ui/issues/issue-80607.stderr (100%) rename {src/test => tests}/ui/issues/issue-81584.fixed (100%) rename {src/test => tests}/ui/issues/issue-81584.rs (100%) rename {src/test => tests}/ui/issues/issue-81584.stderr (100%) rename {src/test => tests}/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs (100%) rename {src/test => tests}/ui/issues/issue-81918.rs (100%) rename {src/test => tests}/ui/issues/issue-8248.rs (100%) rename {src/test => tests}/ui/issues/issue-8249.rs (100%) rename {src/test => tests}/ui/issues/issue-8259.rs (100%) rename {src/test => tests}/ui/issues/issue-82833-slice-miscompile.rs (100%) rename {src/test => tests}/ui/issues/issue-83048.rs (100%) rename {src/test => tests}/ui/issues/issue-83048.stderr (100%) rename {src/test => tests}/ui/issues/issue-83190.rs (100%) rename {src/test => tests}/ui/issues/issue-8391.rs (100%) rename {src/test => tests}/ui/issues/issue-83924.fixed (100%) rename {src/test => tests}/ui/issues/issue-83924.rs (100%) rename {src/test => tests}/ui/issues/issue-83924.stderr (100%) rename {src/test => tests}/ui/issues/issue-8398.rs (100%) rename {src/test => tests}/ui/issues/issue-8401.rs (100%) rename {src/test => tests}/ui/issues/issue-8498.rs (100%) rename {src/test => tests}/ui/issues/issue-8506.rs (100%) rename {src/test => tests}/ui/issues/issue-8521.rs (100%) rename {src/test => tests}/ui/issues/issue-85461.rs (100%) rename {src/test => tests}/ui/issues/issue-8578.rs (100%) rename {src/test => tests}/ui/issues/issue-86756.rs (100%) rename {src/test => tests}/ui/issues/issue-86756.stderr (100%) rename {src/test => tests}/ui/issues/issue-868.rs (100%) rename {src/test => tests}/ui/issues/issue-87199.rs (100%) rename {src/test => tests}/ui/issues/issue-87199.stderr (100%) rename {src/test => tests}/ui/issues/issue-8727.polonius.stderr (100%) rename {src/test => tests}/ui/issues/issue-8727.rs (100%) rename {src/test => tests}/ui/issues/issue-8727.stderr (100%) rename {src/test => tests}/ui/issues/issue-87490.rs (100%) rename {src/test => tests}/ui/issues/issue-87490.stderr (100%) rename {src/test => tests}/ui/issues/issue-8761.rs (100%) rename {src/test => tests}/ui/issues/issue-8761.stderr (100%) rename {src/test => tests}/ui/issues/issue-8767.rs (100%) rename {src/test => tests}/ui/issues/issue-8767.stderr (100%) rename {src/test => tests}/ui/issues/issue-87707.rs (100%) rename {src/test => tests}/ui/issues/issue-87707.run.stderr (100%) rename {src/test => tests}/ui/issues/issue-8783.rs (100%) rename {src/test => tests}/ui/issues/issue-88150.rs (100%) rename {src/test => tests}/ui/issues/issue-8860.rs (100%) rename {src/test => tests}/ui/issues/issue-8898.rs (100%) rename {src/test => tests}/ui/issues/issue-9047.rs (100%) rename {src/test => tests}/ui/issues/issue-9110.rs (100%) rename {src/test => tests}/ui/issues/issue-9123.rs (100%) rename {src/test => tests}/ui/issues/issue-9129.rs (100%) rename {src/test => tests}/ui/issues/issue-91489.rs (100%) rename {src/test => tests}/ui/issues/issue-9155.rs (100%) rename {src/test => tests}/ui/issues/issue-9188.rs (100%) rename {src/test => tests}/ui/issues/issue-9243.rs (100%) rename {src/test => tests}/ui/issues/issue-9249.rs (100%) rename {src/test => tests}/ui/issues/issue-9259.rs (100%) rename {src/test => tests}/ui/issues/issue-9382.rs (100%) rename {src/test => tests}/ui/issues/issue-9446.rs (100%) rename {src/test => tests}/ui/issues/issue-948.rs (100%) rename {src/test => tests}/ui/issues/issue-9575.rs (100%) rename {src/test => tests}/ui/issues/issue-9575.stderr (100%) rename {src/test => tests}/ui/issues/issue-9719.rs (100%) rename {src/test => tests}/ui/issues/issue-9725.rs (100%) rename {src/test => tests}/ui/issues/issue-9725.stderr (100%) rename {src/test => tests}/ui/issues/issue-9737.rs (100%) rename {src/test => tests}/ui/issues/issue-979.rs (100%) rename {src/test => tests}/ui/issues/issue-9814.rs (100%) rename {src/test => tests}/ui/issues/issue-9814.stderr (100%) rename {src/test => tests}/ui/issues/issue-98299.rs (100%) rename {src/test => tests}/ui/issues/issue-98299.stderr (100%) rename {src/test => tests}/ui/issues/issue-9837.rs (100%) rename {src/test => tests}/ui/issues/issue-9906.rs (100%) rename {src/test => tests}/ui/issues/issue-9918.rs (100%) rename {src/test => tests}/ui/issues/issue-9942.rs (100%) rename {src/test => tests}/ui/issues/issue-9951.rs (100%) rename {src/test => tests}/ui/issues/issue-9968.rs (100%) rename {src/test => tests}/ui/issues/issue-99838.rs (100%) rename {src/test => tests}/ui/issues/issue-pr29383.rs (100%) rename {src/test => tests}/ui/issues/issue-pr29383.stderr (100%) rename {src/test => tests}/ui/item-name-overload.rs (100%) rename {src/test => tests}/ui/iterators/array-of-ranges.rs (100%) rename {src/test => tests}/ui/iterators/array.rs (100%) rename {src/test => tests}/ui/iterators/bound.rs (100%) rename {src/test => tests}/ui/iterators/bound.stderr (100%) rename {src/test => tests}/ui/iterators/collect-into-array.rs (100%) rename {src/test => tests}/ui/iterators/collect-into-array.stderr (100%) rename {src/test => tests}/ui/iterators/collect-into-slice.rs (100%) rename {src/test => tests}/ui/iterators/collect-into-slice.stderr (100%) rename {src/test => tests}/ui/iterators/integral.rs (100%) rename {src/test => tests}/ui/iterators/integral.stderr (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-2018.rs (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-2018.stderr (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-2021.rs (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-lint.fixed (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-lint.rs (100%) rename {src/test => tests}/ui/iterators/into-iter-on-arrays-lint.stderr (100%) rename {src/test => tests}/ui/iterators/into-iterator-type-inference-shift.rs (100%) rename {src/test => tests}/ui/iterators/invalid-iterator-chain.rs (100%) rename {src/test => tests}/ui/iterators/invalid-iterator-chain.stderr (100%) rename {src/test => tests}/ui/iterators/issue-28098.rs (100%) rename {src/test => tests}/ui/iterators/issue-28098.stderr (100%) rename {src/test => tests}/ui/iterators/issue-58952-filter-type-length.rs (100%) rename {src/test => tests}/ui/iterators/iter-cloned-type-inference.rs (100%) rename {src/test => tests}/ui/iterators/iter-count-overflow-debug.rs (100%) rename {src/test => tests}/ui/iterators/iter-count-overflow-ndebug.rs (100%) rename {src/test => tests}/ui/iterators/iter-map-fold-type-length.rs (100%) rename {src/test => tests}/ui/iterators/iter-position-overflow-debug.rs (100%) rename {src/test => tests}/ui/iterators/iter-position-overflow-ndebug.rs (100%) rename {src/test => tests}/ui/iterators/iter-range.rs (100%) rename {src/test => tests}/ui/iterators/iter-step-overflow-debug.rs (100%) rename {src/test => tests}/ui/iterators/iter-step-overflow-ndebug.rs (100%) rename {src/test => tests}/ui/iterators/iter-sum-overflow-debug.rs (100%) rename {src/test => tests}/ui/iterators/iter-sum-overflow-ndebug.rs (100%) rename {src/test => tests}/ui/iterators/iter-sum-overflow-overflow-checks.rs (100%) rename {src/test => tests}/ui/iterators/ranges.rs (100%) rename {src/test => tests}/ui/iterators/ranges.stderr (100%) rename {src/test => tests}/ui/iterators/rsplit-clone.rs (100%) rename {src/test => tests}/ui/iterators/skip-count-overflow.rs (100%) rename {src/test => tests}/ui/iterators/string.rs (100%) rename {src/test => tests}/ui/iterators/string.stderr (100%) rename {src/test => tests}/ui/iterators/vec-on-unimplemented.rs (100%) rename {src/test => tests}/ui/iterators/vec-on-unimplemented.stderr (100%) rename {src/test => tests}/ui/json/json-and-color.rs (100%) rename {src/test => tests}/ui/json/json-and-color.stderr (100%) rename {src/test => tests}/ui/json/json-and-error-format.rs (100%) rename {src/test => tests}/ui/json/json-and-error-format.stderr (100%) rename {src/test => tests}/ui/json/json-bom-plus-crlf-multifile-aux.rs (100%) rename {src/test => tests}/ui/json/json-bom-plus-crlf-multifile.rs (100%) rename {src/test => tests}/ui/json/json-bom-plus-crlf-multifile.stderr (100%) rename {src/test => tests}/ui/json/json-bom-plus-crlf.rs (100%) rename {src/test => tests}/ui/json/json-bom-plus-crlf.stderr (100%) rename {src/test => tests}/ui/json/json-invalid.rs (100%) rename {src/test => tests}/ui/json/json-invalid.stderr (100%) rename {src/test => tests}/ui/json/json-multiple.polonius.stderr (100%) rename {src/test => tests}/ui/json/json-multiple.rs (100%) rename {src/test => tests}/ui/json/json-multiple.stderr (100%) rename {src/test => tests}/ui/json/json-options.polonius.stderr (100%) rename {src/test => tests}/ui/json/json-options.rs (100%) rename {src/test => tests}/ui/json/json-options.stderr (100%) rename {src/test => tests}/ui/json/json-short.rs (100%) rename {src/test => tests}/ui/json/json-short.stderr (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-expr.rs (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-expr.stderr (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-pat.rs (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-type.rs (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-type.stderr (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-use.rs (100%) rename {src/test => tests}/ui/keyword/extern/keyword-extern-as-identifier-use.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-false-as-identifier.rs (100%) rename {src/test => tests}/ui/keyword/keyword-false-as-identifier.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-self-as-identifier.rs (100%) rename {src/test => tests}/ui/keyword/keyword-self-as-identifier.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-self-as-type-param.rs (100%) rename {src/test => tests}/ui/keyword/keyword-self-as-type-param.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-super-as-identifier.rs (100%) rename {src/test => tests}/ui/keyword/keyword-super-as-identifier.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-super.rs (100%) rename {src/test => tests}/ui/keyword/keyword-super.stderr (100%) rename {src/test => tests}/ui/keyword/keyword-true-as-identifier.rs (100%) rename {src/test => tests}/ui/keyword/keyword-true-as-identifier.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-copy.rs (100%) rename {src/test => tests}/ui/kindck/kindck-copy.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-impl-type-params-2.rs (100%) rename {src/test => tests}/ui/kindck/kindck-impl-type-params-2.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-impl-type-params.rs (100%) rename {src/test => tests}/ui/kindck/kindck-impl-type-params.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-inherited-copy-bound.curr.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-inherited-copy-bound.rs (100%) rename {src/test => tests}/ui/kindck/kindck-nonsendable-1.rs (100%) rename {src/test => tests}/ui/kindck/kindck-nonsendable-1.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-send-object.rs (100%) rename {src/test => tests}/ui/kindck/kindck-send-object.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-send-object1.rs (100%) rename {src/test => tests}/ui/kindck/kindck-send-object1.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-send-object2.rs (100%) rename {src/test => tests}/ui/kindck/kindck-send-object2.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-send-owned.rs (100%) rename {src/test => tests}/ui/kindck/kindck-send-owned.stderr (100%) rename {src/test => tests}/ui/kindck/kindck-send-unsafe.rs (100%) rename {src/test => tests}/ui/kindck/kindck-send-unsafe.rs~rust-lang_master (100%) rename {src/test => tests}/ui/kindck/kindck-send-unsafe.stderr (100%) rename {src/test => tests}/ui/kinds-in-metadata.rs (100%) rename {src/test => tests}/ui/kinds-of-primitive-impl.rs (100%) rename {src/test => tests}/ui/kinds-of-primitive-impl.stderr (100%) rename {src/test => tests}/ui/label/label-beginning-with-underscore.rs (100%) rename {src/test => tests}/ui/label/label-static.rs (100%) rename {src/test => tests}/ui/label/label-static.stderr (100%) rename {src/test => tests}/ui/label/label-underscore.rs (100%) rename {src/test => tests}/ui/label/label-underscore.stderr (100%) rename {src/test => tests}/ui/label/label_break_value_continue.rs (100%) rename {src/test => tests}/ui/label/label_break_value_continue.stderr (100%) rename {src/test => tests}/ui/label/label_break_value_desugared_break.rs (100%) rename {src/test => tests}/ui/label/label_break_value_illegal_uses.fixed (100%) rename {src/test => tests}/ui/label/label_break_value_illegal_uses.rs (100%) rename {src/test => tests}/ui/label/label_break_value_illegal_uses.stderr (100%) rename {src/test => tests}/ui/label/label_break_value_unlabeled_break.rs (100%) rename {src/test => tests}/ui/label/label_break_value_unlabeled_break.stderr (100%) rename {src/test => tests}/ui/label/label_misspelled.rs (100%) rename {src/test => tests}/ui/label/label_misspelled.stderr (100%) rename {src/test => tests}/ui/label/label_misspelled_2.rs (100%) rename {src/test => tests}/ui/label/label_misspelled_2.stderr (100%) rename {src/test => tests}/ui/lambda-infer-unresolved.rs (100%) rename {src/test => tests}/ui/lang-items/fn-fn_mut-call-ill-formed.rs (100%) rename {src/test => tests}/ui/lang-items/fn-fn_mut-call-ill-formed.stderr (100%) rename {src/test => tests}/ui/lang-items/issue-19660.rs (100%) rename {src/test => tests}/ui/lang-items/issue-19660.stderr (100%) rename {src/test => tests}/ui/lang-items/issue-31076.rs (100%) rename {src/test => tests}/ui/lang-items/issue-31076.stderr (100%) rename {src/test => tests}/ui/lang-items/issue-83471.rs (100%) rename {src/test => tests}/ui/lang-items/issue-83471.stderr (100%) rename {src/test => tests}/ui/lang-items/issue-86238.rs (100%) rename {src/test => tests}/ui/lang-items/issue-86238.stderr (100%) rename {src/test => tests}/ui/lang-items/issue-87573.rs (100%) rename {src/test => tests}/ui/lang-items/issue-87573.stderr (100%) rename {src/test => tests}/ui/lang-items/lang-item-generic-requirements.rs (100%) rename {src/test => tests}/ui/lang-items/lang-item-generic-requirements.stderr (100%) rename {src/test => tests}/ui/lang-items/lang-item-missing-generator.rs (100%) rename {src/test => tests}/ui/lang-items/lang-item-missing-generator.stderr (100%) rename {src/test => tests}/ui/lang-items/lang-item-missing.rs (100%) rename {src/test => tests}/ui/lang-items/lang-item-missing.stderr (100%) rename {src/test => tests}/ui/lang-items/missing-clone-for-suggestion.rs (100%) rename {src/test => tests}/ui/lang-items/missing-clone-for-suggestion.stderr (100%) rename {src/test => tests}/ui/lang-items/no_owned_box_lang_item.rs (100%) rename {src/test => tests}/ui/lang-items/no_owned_box_lang_item.stderr (100%) rename {src/test => tests}/ui/lang-items/required-lang-item.rs (100%) rename {src/test => tests}/ui/lang-items/required-lang-item.stderr (100%) rename {src/test => tests}/ui/last-use-in-block.rs (100%) rename {src/test => tests}/ui/last-use-in-cap-clause.rs (100%) rename {src/test => tests}/ui/last-use-is-capture.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/auxiliary/upstream_alias.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/cross_crate_alias.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/issue-36381.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/issue-47511.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/late_bound_through_alias.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/mismatched_arg_count.rs (100%) rename {src/test => tests}/ui/late-bound-lifetimes/mismatched_arg_count.stderr (100%) rename {src/test => tests}/ui/layout/big-type-no-err.rs (100%) rename {src/test => tests}/ui/layout/debug.rs (100%) rename {src/test => tests}/ui/layout/debug.stderr (100%) rename {src/test => tests}/ui/layout/hexagon-enum.rs (100%) rename {src/test => tests}/ui/layout/hexagon-enum.stderr (100%) rename {src/test => tests}/ui/layout/homogeneous-aggr-zero-sized-c-struct.rs (100%) rename {src/test => tests}/ui/layout/homogeneous-aggr-zero-sized-c-struct.stderr (100%) rename {src/test => tests}/ui/layout/homogeneous-aggr-zero-sized-repr-rust.rs (100%) rename {src/test => tests}/ui/layout/homogeneous-aggr-zero-sized-repr-rust.stderr (100%) rename {src/test => tests}/ui/layout/issue-60431-unsized-tail-behind-projection.rs (100%) rename {src/test => tests}/ui/layout/issue-84108.rs (100%) rename {src/test => tests}/ui/layout/issue-84108.stderr (100%) rename {src/test => tests}/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs (100%) rename {src/test => tests}/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr (100%) rename {src/test => tests}/ui/layout/issue-96185-overaligned-enum.rs (100%) rename {src/test => tests}/ui/layout/issue-96185-overaligned-enum.stderr (100%) rename {src/test => tests}/ui/layout/thin-meta-implies-thin-ptr.rs (100%) rename {src/test => tests}/ui/layout/thumb-enum.rs (100%) rename {src/test => tests}/ui/layout/thumb-enum.stderr (100%) rename {src/test => tests}/ui/layout/unsafe-cell-hides-niche.rs (100%) rename {src/test => tests}/ui/layout/valid_range_oob.rs (100%) rename {src/test => tests}/ui/layout/valid_range_oob.stderr (100%) rename {src/test => tests}/ui/layout/zero-sized-array-enum-niche.rs (100%) rename {src/test => tests}/ui/layout/zero-sized-array-enum-niche.stderr (100%) rename {src/test => tests}/ui/layout/zero-sized-array-union.rs (100%) rename {src/test => tests}/ui/layout/zero-sized-array-union.stderr (100%) rename {src/test => tests}/ui/lazy-and-or.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/branches.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/branches.stderr (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/branches2.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/branches3.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/branches3.stderr (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/freeze_cycle.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/infer_cross_function.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/lifetime_inference.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/nested.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/opaque_vs_opaque.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion2.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion3.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion3.stderr (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion4.rs (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/recursion4.stderr (100%) rename {src/test => tests}/ui/lazy-type-alias-impl-trait/unsized_sized_opaque.rs (100%) rename {src/test => tests}/ui/let-else/const-fn.rs (100%) rename {src/test => tests}/ui/let-else/issue-100103.rs (100%) rename {src/test => tests}/ui/let-else/issue-102317.rs (100%) rename {src/test => tests}/ui/let-else/issue-94176.rs (100%) rename {src/test => tests}/ui/let-else/issue-94176.stderr (100%) rename {src/test => tests}/ui/let-else/issue-99975.rs (100%) rename {src/test => tests}/ui/let-else/let-else-allow-in-expr.rs (100%) rename {src/test => tests}/ui/let-else/let-else-allow-in-expr.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-allow-unused.rs (100%) rename {src/test => tests}/ui/let-else/let-else-allow-unused.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut-annotated.rs (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut-annotated.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut-borrow.rs (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut-borrow.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut-pass.rs (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut.rs (100%) rename {src/test => tests}/ui/let-else/let-else-binding-explicit-mut.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-binding-immutable.rs (100%) rename {src/test => tests}/ui/let-else/let-else-binding-immutable.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-bindings.rs (100%) rename {src/test => tests}/ui/let-else/let-else-bool-binop-init.fixed (100%) rename {src/test => tests}/ui/let-else/let-else-bool-binop-init.rs (100%) rename {src/test => tests}/ui/let-else/let-else-bool-binop-init.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-brace-before-else.fixed (100%) rename {src/test => tests}/ui/let-else/let-else-brace-before-else.rs (100%) rename {src/test => tests}/ui/let-else/let-else-brace-before-else.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-check.rs (100%) rename {src/test => tests}/ui/let-else/let-else-check.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-deref-coercion-annotated.rs (100%) rename {src/test => tests}/ui/let-else/let-else-deref-coercion.rs (100%) rename {src/test => tests}/ui/let-else/let-else-deref-coercion.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-destructuring.rs (100%) rename {src/test => tests}/ui/let-else/let-else-destructuring.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-drop-order.rs (100%) rename {src/test => tests}/ui/let-else/let-else-drop-order.run.stdout (100%) rename {src/test => tests}/ui/let-else/let-else-if.rs (100%) rename {src/test => tests}/ui/let-else/let-else-if.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-irrefutable.rs (100%) rename {src/test => tests}/ui/let-else/let-else-irrefutable.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-missing-semicolon.rs (100%) rename {src/test => tests}/ui/let-else/let-else-missing-semicolon.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-no-double-error.rs (100%) rename {src/test => tests}/ui/let-else/let-else-no-double-error.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-non-copy.rs (100%) rename {src/test => tests}/ui/let-else/let-else-non-diverging.rs (100%) rename {src/test => tests}/ui/let-else/let-else-non-diverging.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-ref-bindings-pass.rs (100%) rename {src/test => tests}/ui/let-else/let-else-ref-bindings.rs (100%) rename {src/test => tests}/ui/let-else/let-else-ref-bindings.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-run-pass.rs (100%) rename {src/test => tests}/ui/let-else/let-else-scope.rs (100%) rename {src/test => tests}/ui/let-else/let-else-scope.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-slicing-error.rs (100%) rename {src/test => tests}/ui/let-else/let-else-slicing-error.stderr (100%) rename {src/test => tests}/ui/let-else/let-else-source-expr-nomove-pass.rs (100%) rename {src/test => tests}/ui/let-else/let-else-temp-borrowck.rs (100%) rename {src/test => tests}/ui/let-else/let-else-temporary-lifetime.rs (100%) rename {src/test => tests}/ui/let-else/let-else-then-diverge.rs (100%) rename {src/test => tests}/ui/let-else/let-else-then-diverge.stderr (100%) rename {src/test => tests}/ui/let-else/let-else.rs (100%) rename {src/test => tests}/ui/lexer/error-stage.rs (100%) rename {src/test => tests}/ui/lexer/error-stage.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-binary-literal.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-binary-literal.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-1.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-1.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-2.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-2.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-3.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-3.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-4.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-4.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-5.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-5.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-6.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-6.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-7.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-char-literals-7.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-numeric-literals.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-numeric-literals.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-octal-literal.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-octal-literal.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bad-token.rs (100%) rename {src/test => tests}/ui/lexer/lex-bad-token.stderr (100%) rename {src/test => tests}/ui/lexer/lex-bare-cr-nondoc-comment.rs (100%) rename {src/test => tests}/ui/lexer/lex-bare-cr-string-literal-doc-comment.rs (100%) rename {src/test => tests}/ui/lexer/lex-bare-cr-string-literal-doc-comment.stderr (100%) rename {src/test => tests}/ui/lexer/lex-emoji-identifiers.rs (100%) rename {src/test => tests}/ui/lexer/lex-emoji-identifiers.stderr (100%) rename {src/test => tests}/ui/lexer/lex-stray-backslash.rs (100%) rename {src/test => tests}/ui/lexer/lex-stray-backslash.stderr (100%) rename {src/test => tests}/ui/lexer/lexer-crlf-line-endings-string-literal-doc-comment.rs (100%) rename {src/test => tests}/ui/lexical-scopes.rs (100%) rename {src/test => tests}/ui/lexical-scopes.stderr (100%) rename {src/test => tests}/ui/lexical-scoping.rs (100%) rename {src/test => tests}/ui/lifetimes/auxiliary/issue-91763-aux.rs (100%) rename {src/test => tests}/ui/lifetimes/auxiliary/lifetime_bound_will_change_warning_lib.rs (100%) rename {src/test => tests}/ui/lifetimes/bare-trait-object-borrowck.rs (100%) rename {src/test => tests}/ui/lifetimes/bare-trait-object.rs (100%) rename {src/test => tests}/ui/lifetimes/borrowck-let-suggestion.rs (100%) rename {src/test => tests}/ui/lifetimes/borrowck-let-suggestion.stderr (100%) rename {src/test => tests}/ui/lifetimes/conflicting-bounds.rs (100%) rename {src/test => tests}/ui/lifetimes/conflicting-bounds.stderr (100%) rename {src/test => tests}/ui/lifetimes/copy_modulo_regions.rs (100%) rename {src/test => tests}/ui/lifetimes/copy_modulo_regions.stderr (100%) rename {src/test => tests}/ui/lifetimes/elided-lifetime-in-param-pat.rs (100%) rename {src/test => tests}/ui/lifetimes/elided-lifetime-in-path-in-impl-Fn.rs (100%) rename {src/test => tests}/ui/lifetimes/elided-lifetime-in-path-in-pat.rs (100%) rename {src/test => tests}/ui/lifetimes/elided-lifetime-in-path-in-type-relative-expression.rs (100%) rename {src/test => tests}/ui/lifetimes/fullwidth-ampersand.rs (100%) rename {src/test => tests}/ui/lifetimes/fullwidth-ampersand.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-105227.fixed (100%) rename {src/test => tests}/ui/lifetimes/issue-105227.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-105227.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-17728.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-17728.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-26638.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-26638.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-34979.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-34979.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-54378.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-55796.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-55796.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-64173-unused-lifetimes.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-64173-unused-lifetimes.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-67498.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-76168-hr-outlives-2.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-76168-hr-outlives.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-77175.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-79187-2.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-79187-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-79187.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-79187.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-83737-binders-across-types.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-83737-erasing-bound-vars.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-83907-invalid-fn-like-path.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-83907-invalid-fn-like-path.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-84398.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-84604.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-90170-elision-mismatch.fixed (100%) rename {src/test => tests}/ui/lifetimes/issue-90170-elision-mismatch.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-90170-elision-mismatch.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-90600-expected-return-static-indirect.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-90600-expected-return-static-indirect.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-91763.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-91763.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-95023.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-95023.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-97193.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-97193.stderr (100%) rename {src/test => tests}/ui/lifetimes/issue-97194.rs (100%) rename {src/test => tests}/ui/lifetimes/issue-97194.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-bound-will-change-warning.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-bound-will-change-warning.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-doesnt-live-long-enough.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-doesnt-live-long-enough.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-elision-return-type-trait.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-elision-return-type-trait.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/issue_74400.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/issue_74400.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr (100%) rename {src/test => tests}/ui/lifetimes/lifetime-no-keyword.rs (100%) rename {src/test => tests}/ui/lifetimes/lifetime-no-keyword.stderr (100%) rename {src/test => tests}/ui/lifetimes/missing-lifetime-in-alias.rs (100%) rename {src/test => tests}/ui/lifetimes/missing-lifetime-in-alias.stderr (100%) rename {src/test => tests}/ui/lifetimes/nested-binder-print.rs (100%) rename {src/test => tests}/ui/lifetimes/nested-binder-print.stderr (100%) rename {src/test => tests}/ui/lifetimes/nested.rs (100%) rename {src/test => tests}/ui/lifetimes/re-empty-in-error.rs (100%) rename {src/test => tests}/ui/lifetimes/re-empty-in-error.stderr (100%) rename {src/test => tests}/ui/lifetimes/shadow.rs (100%) rename {src/test => tests}/ui/lifetimes/shadow.stderr (100%) rename {src/test => tests}/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs (100%) rename {src/test => tests}/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr (100%) rename {src/test => tests}/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.rs (100%) rename {src/test => tests}/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.stderr (100%) rename {src/test => tests}/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.rs (100%) rename {src/test => tests}/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.stderr (100%) rename {src/test => tests}/ui/lifetimes/unusual-rib-combinations.rs (100%) rename {src/test => tests}/ui/lifetimes/unusual-rib-combinations.stderr (100%) rename {src/test => tests}/ui/limits/huge-array-simple-32.rs (100%) rename {src/test => tests}/ui/limits/huge-array-simple-32.stderr (100%) rename {src/test => tests}/ui/limits/huge-array-simple-64.rs (100%) rename {src/test => tests}/ui/limits/huge-array-simple-64.stderr (100%) rename {src/test => tests}/ui/limits/huge-array.rs (100%) rename {src/test => tests}/ui/limits/huge-array.stderr (100%) rename {src/test => tests}/ui/limits/huge-enum.rs (100%) rename {src/test => tests}/ui/limits/huge-enum.stderr (100%) rename {src/test => tests}/ui/limits/huge-struct.rs (100%) rename {src/test => tests}/ui/limits/huge-struct.stderr (100%) rename {src/test => tests}/ui/limits/issue-15919-32.rs (100%) rename {src/test => tests}/ui/limits/issue-15919-32.stderr (100%) rename {src/test => tests}/ui/limits/issue-15919-64.rs (100%) rename {src/test => tests}/ui/limits/issue-15919-64.stderr (100%) rename {src/test => tests}/ui/limits/issue-17913.rs (100%) rename {src/test => tests}/ui/limits/issue-17913.stderr (100%) rename {src/test => tests}/ui/limits/issue-55878.rs (100%) rename {src/test => tests}/ui/limits/issue-55878.stderr (100%) rename {src/test => tests}/ui/limits/issue-56762.rs (100%) rename {src/test => tests}/ui/limits/issue-56762.stderr (100%) rename {src/test => tests}/ui/limits/issue-69485-var-size-diffs-too-large.rs (100%) rename {src/test => tests}/ui/limits/issue-69485-var-size-diffs-too-large.stderr (100%) rename {src/test => tests}/ui/limits/issue-75158-64.rs (100%) rename {src/test => tests}/ui/limits/issue-75158-64.stderr (100%) rename {src/test => tests}/ui/link-section.rs (100%) rename {src/test => tests}/ui/linkage-attr/auxiliary/def_colliding_external.rs (100%) rename {src/test => tests}/ui/linkage-attr/auxiliary/def_external.rs (100%) rename {src/test => tests}/ui/linkage-attr/auxiliary/link-cfg-works-transitive-dylib.rs (100%) rename {src/test => tests}/ui/linkage-attr/auxiliary/link-cfg-works-transitive-rlib.rs (100%) rename {src/test => tests}/ui/linkage-attr/auxiliary/linkage1.rs (100%) rename {src/test => tests}/ui/linkage-attr/issue-10755.rs (100%) rename {src/test => tests}/ui/linkage-attr/link-attr-validation-early.rs (100%) rename {src/test => tests}/ui/linkage-attr/link-attr-validation-early.stderr (100%) rename {src/test => tests}/ui/linkage-attr/link-attr-validation-late.rs (100%) rename {src/test => tests}/ui/linkage-attr/link-attr-validation-late.stderr (100%) rename {src/test => tests}/ui/linkage-attr/link-cfg-works.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage-detect-extern-generated-name-collision.stderr (100%) rename {src/test => tests}/ui/linkage-attr/linkage-detect-local-generated-name-collision.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage-detect-local-generated-name-collision.stderr (100%) rename {src/test => tests}/ui/linkage-attr/linkage-import.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage1.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage2.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage2.stderr (100%) rename {src/test => tests}/ui/linkage-attr/linkage3.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage3.stderr (100%) rename {src/test => tests}/ui/linkage-attr/linkage4.rs (100%) rename {src/test => tests}/ui/linkage-attr/linkage4.stderr (100%) rename {src/test => tests}/ui/lint-unknown-lints-at-crate-level.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/add-impl.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/external_extern_fn.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/inherited_stability.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/lint_output_format.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/lint_stability.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/lint_stability_fields.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/lints-in-foreign-macros.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/stability-cfg2.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/stability_cfg1.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/stability_cfg2.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/trivial-cast-ice.rs (100%) rename {src/test => tests}/ui/lint/auxiliary/unaligned_references_external_crate.rs (100%) rename {src/test => tests}/ui/lint/bad-lint-cap.rs (100%) rename {src/test => tests}/ui/lint/bad-lint-cap.stderr (100%) rename {src/test => tests}/ui/lint/bad-lint-cap2.rs (100%) rename {src/test => tests}/ui/lint/bad-lint-cap2.stderr (100%) rename {src/test => tests}/ui/lint/bad-lint-cap3.rs (100%) rename {src/test => tests}/ui/lint/bad-lint-cap3.stderr (100%) rename {src/test => tests}/ui/lint/bare-trait-objects-path.rs (100%) rename {src/test => tests}/ui/lint/bare-trait-objects-path.stderr (100%) rename {src/test => tests}/ui/lint/clashing-extern-fn-recursion.rs (100%) rename {src/test => tests}/ui/lint/clashing-extern-fn-wasm.rs (100%) rename {src/test => tests}/ui/lint/clashing-extern-fn.rs (100%) rename {src/test => tests}/ui/lint/clashing-extern-fn.stderr (100%) rename {src/test => tests}/ui/lint/cli-lint-override.forbid_warn.stderr (100%) rename {src/test => tests}/ui/lint/cli-lint-override.force_warn_deny.stderr (100%) rename {src/test => tests}/ui/lint/cli-lint-override.rs (100%) rename {src/test => tests}/ui/lint/cli-lint-override.warn_deny.stderr (100%) rename {src/test => tests}/ui/lint/cli-unknown-force-warn.rs (100%) rename {src/test => tests}/ui/lint/cli-unknown-force-warn.stderr (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-allow.rs (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-deny.rs (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-deny.stderr (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-forbid.rs (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-forbid.stderr (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-warn.rs (100%) rename {src/test => tests}/ui/lint/command-line-lint-group-warn.stderr (100%) rename {src/test => tests}/ui/lint/command-line-register-lint-tool.rs (100%) rename {src/test => tests}/ui/lint/command-line-register-unknown-lint-tool.rs (100%) rename {src/test => tests}/ui/lint/command-line-register-unknown-lint-tool.stderr (100%) rename {src/test => tests}/ui/lint/crate_level_only_lint.rs (100%) rename {src/test => tests}/ui/lint/crate_level_only_lint.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/alias-in-pat.rs (100%) rename {src/test => tests}/ui/lint/dead-code/anon-const-in-pat.rs (100%) rename {src/test => tests}/ui/lint/dead-code/associated-type.rs (100%) rename {src/test => tests}/ui/lint/dead-code/basic.rs (100%) rename {src/test => tests}/ui/lint/dead-code/basic.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/closure-bang.rs (100%) rename {src/test => tests}/ui/lint/dead-code/const-and-self.rs (100%) rename {src/test => tests}/ui/lint/dead-code/const-and-self.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/empty-unused-enum.rs (100%) rename {src/test => tests}/ui/lint/dead-code/empty-unused-enum.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/empty-unused-public-enum.rs (100%) rename {src/test => tests}/ui/lint/dead-code/enum-variants.rs (100%) rename {src/test => tests}/ui/lint/dead-code/impl-trait.rs (100%) rename {src/test => tests}/ui/lint/dead-code/impl-trait.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/issue-68408-false-positive.rs (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85071-2.rs (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85071-2.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85071.rs (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85071.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85255.rs (100%) rename {src/test => tests}/ui/lint/dead-code/issue-85255.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/leading-underscore.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-1.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-1.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-2.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-2.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-3.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-3.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-4.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-4.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-5.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-5.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-6.rs (100%) rename {src/test => tests}/ui/lint/dead-code/lint-dead-code-6.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.rs (100%) rename {src/test => tests}/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/newline-span.rs (100%) rename {src/test => tests}/ui/lint/dead-code/newline-span.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/self-assign.rs (100%) rename {src/test => tests}/ui/lint/dead-code/self-assign.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/trait-impl.rs (100%) rename {src/test => tests}/ui/lint/dead-code/tuple-struct-field.rs (100%) rename {src/test => tests}/ui/lint/dead-code/tuple-struct-field.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/type-alias.rs (100%) rename {src/test => tests}/ui/lint/dead-code/type-alias.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/type-in-foreign.rs (100%) rename {src/test => tests}/ui/lint/dead-code/unused-enum.rs (100%) rename {src/test => tests}/ui/lint/dead-code/unused-enum.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/unused-struct-variant.rs (100%) rename {src/test => tests}/ui/lint/dead-code/unused-struct-variant.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/unused-variant-pub.rs (100%) rename {src/test => tests}/ui/lint/dead-code/unused-variant.rs (100%) rename {src/test => tests}/ui/lint/dead-code/unused-variant.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/with-core-crate.rs (100%) rename {src/test => tests}/ui/lint/dead-code/with-core-crate.stderr (100%) rename {src/test => tests}/ui/lint/dead-code/with-impl.rs (100%) rename {src/test => tests}/ui/lint/deny-overflowing-literals.rs (100%) rename {src/test => tests}/ui/lint/deny-overflowing-literals.stderr (100%) rename {src/test => tests}/ui/lint/empty-lint-attributes.rs (100%) rename {src/test => tests}/ui/lint/enable-unstable-lib-feature.rs (100%) rename {src/test => tests}/ui/lint/enable-unstable-lib-feature.stderr (100%) rename {src/test => tests}/ui/lint/expansion-time-include.rs (100%) rename {src/test => tests}/ui/lint/expansion-time.rs (100%) rename {src/test => tests}/ui/lint/expansion-time.stderr (100%) rename {src/test => tests}/ui/lint/expr_attr_paren_order.rs (100%) rename {src/test => tests}/ui/lint/expr_attr_paren_order.stderr (100%) rename {src/test => tests}/ui/lint/fn_must_use.rs (100%) rename {src/test => tests}/ui/lint/fn_must_use.stderr (100%) rename {src/test => tests}/ui/lint/for_loop_over_fallibles.rs (100%) rename {src/test => tests}/ui/lint/for_loop_over_fallibles.stderr (100%) rename {src/test => tests}/ui/lint/forbid-error-capped.rs (100%) rename {src/test => tests}/ui/lint/forbid-group-group-1.rs (100%) rename {src/test => tests}/ui/lint/forbid-group-group-1.stderr (100%) rename {src/test => tests}/ui/lint/forbid-group-group-2.rs (100%) rename {src/test => tests}/ui/lint/forbid-group-group-2.stderr (100%) rename {src/test => tests}/ui/lint/forbid-group-member.rs (100%) rename {src/test => tests}/ui/lint/forbid-group-member.stderr (100%) rename {src/test => tests}/ui/lint/forbid-member-group.rs (100%) rename {src/test => tests}/ui/lint/forbid-member-group.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allow-warnings.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allow-warnings.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-cli-deny-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-cli-deny-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-deny-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-deny-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-group-warn-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-group-warn-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-warn-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/allowed-warn-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/cap-lints-allow.rs (100%) rename {src/test => tests}/ui/lint/force-warn/cap-lints-allow.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/deny-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/deny-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allow-warnings.rs (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allow-warnings.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-lint-group.rs (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-lint-group.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.rs (100%) rename {src/test => tests}/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/warn-by-default-lint-two-modules.rs (100%) rename {src/test => tests}/ui/lint/force-warn/warn-by-default-lint-two-modules.stderr (100%) rename {src/test => tests}/ui/lint/force-warn/warnings-lint-group.rs (100%) rename {src/test => tests}/ui/lint/force-warn/warnings-lint-group.stderr (100%) rename {src/test => tests}/ui/lint/function-item-references.rs (100%) rename {src/test => tests}/ui/lint/function-item-references.stderr (100%) rename {src/test => tests}/ui/lint/future-incompat-test.rs (100%) rename {src/test => tests}/ui/lint/future-incompat-test.stderr (100%) rename {src/test => tests}/ui/lint/inclusive-range-pattern-syntax.fixed (100%) rename {src/test => tests}/ui/lint/inclusive-range-pattern-syntax.rs (100%) rename {src/test => tests}/ui/lint/inclusive-range-pattern-syntax.stderr (100%) rename {src/test => tests}/ui/lint/inert-attr-macro.rs (100%) rename {src/test => tests}/ui/lint/inert-attr-macro.stderr (100%) rename {src/test => tests}/ui/lint/inline-trait-and-foreign-items.rs (100%) rename {src/test => tests}/ui/lint/inline-trait-and-foreign-items.stderr (100%) rename {src/test => tests}/ui/lint/invalid_value.rs (100%) rename {src/test => tests}/ui/lint/invalid_value.stderr (100%) rename {src/test => tests}/ui/lint/issue-101284.rs (100%) rename {src/test => tests}/ui/lint/issue-102705.rs (100%) rename {src/test => tests}/ui/lint/issue-103317.fixed (100%) rename {src/test => tests}/ui/lint/issue-103317.rs (100%) rename {src/test => tests}/ui/lint/issue-103317.stderr (100%) rename {src/test => tests}/ui/lint/issue-103435-extra-parentheses.fixed (100%) rename {src/test => tests}/ui/lint/issue-103435-extra-parentheses.rs (100%) rename {src/test => tests}/ui/lint/issue-103435-extra-parentheses.stderr (100%) rename {src/test => tests}/ui/lint/issue-104392.rs (100%) rename {src/test => tests}/ui/lint/issue-104392.stderr (100%) rename {src/test => tests}/ui/lint/issue-104897.rs (100%) rename {src/test => tests}/ui/lint/issue-104897.stderr (100%) rename {src/test => tests}/ui/lint/issue-14309.rs (100%) rename {src/test => tests}/ui/lint/issue-14309.stderr (100%) rename {src/test => tests}/ui/lint/issue-14837.rs (100%) rename {src/test => tests}/ui/lint/issue-17718-const-naming.rs (100%) rename {src/test => tests}/ui/lint/issue-17718-const-naming.stderr (100%) rename {src/test => tests}/ui/lint/issue-1866.rs (100%) rename {src/test => tests}/ui/lint/issue-1866.stderr (100%) rename {src/test => tests}/ui/lint/issue-20343.rs (100%) rename {src/test => tests}/ui/lint/issue-30302.rs (100%) rename {src/test => tests}/ui/lint/issue-30302.stderr (100%) rename {src/test => tests}/ui/lint/issue-31924-non-snake-ffi.rs (100%) rename {src/test => tests}/ui/lint/issue-34798.rs (100%) rename {src/test => tests}/ui/lint/issue-35075.rs (100%) rename {src/test => tests}/ui/lint/issue-35075.stderr (100%) rename {src/test => tests}/ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs (100%) rename {src/test => tests}/ui/lint/issue-54099-camel-case-underscore-types.rs (100%) rename {src/test => tests}/ui/lint/issue-57410-1.rs (100%) rename {src/test => tests}/ui/lint/issue-57410.rs (100%) rename {src/test => tests}/ui/lint/issue-63364.rs (100%) rename {src/test => tests}/ui/lint/issue-63364.stderr (100%) rename {src/test => tests}/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs (100%) rename {src/test => tests}/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.stderr (100%) rename {src/test => tests}/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs (100%) rename {src/test => tests}/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr (100%) rename {src/test => tests}/ui/lint/issue-79546-fuel-ice.rs (100%) rename {src/test => tests}/ui/lint/issue-79744.rs (100%) rename {src/test => tests}/ui/lint/issue-79744.stderr (100%) rename {src/test => tests}/ui/lint/issue-80988.rs (100%) rename {src/test => tests}/ui/lint/issue-80988.stderr (100%) rename {src/test => tests}/ui/lint/issue-81218.rs (100%) rename {src/test => tests}/ui/lint/issue-83477.rs (100%) rename {src/test => tests}/ui/lint/issue-83477.stderr (100%) rename {src/test => tests}/ui/lint/issue-86600-lint-twice.rs (100%) rename {src/test => tests}/ui/lint/issue-86600-lint-twice.stderr (100%) rename {src/test => tests}/ui/lint/issue-87274-paren-parent.rs (100%) rename {src/test => tests}/ui/lint/issue-87274-paren-parent.stderr (100%) rename {src/test => tests}/ui/lint/issue-89469.rs (100%) rename {src/test => tests}/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs (100%) rename {src/test => tests}/ui/lint/issue-97094.rs (100%) rename {src/test => tests}/ui/lint/issue-97094.stderr (100%) rename {src/test => tests}/ui/lint/issue-99387.rs (100%) rename {src/test => tests}/ui/lint/known-tool-in-submodule/root.rs (100%) rename {src/test => tests}/ui/lint/known-tool-in-submodule/submodule.rs (100%) rename {src/test => tests}/ui/lint/let_underscore/let_underscore_drop.rs (100%) rename {src/test => tests}/ui/lint/let_underscore/let_underscore_drop.stderr (100%) rename {src/test => tests}/ui/lint/let_underscore/let_underscore_lock.rs (100%) rename {src/test => tests}/ui/lint/let_underscore/let_underscore_lock.stderr (100%) rename {src/test => tests}/ui/lint/lint-attr-everywhere-early.rs (100%) rename {src/test => tests}/ui/lint/lint-attr-everywhere-early.stderr (100%) rename {src/test => tests}/ui/lint/lint-attr-everywhere-late.rs (100%) rename {src/test => tests}/ui/lint/lint-attr-everywhere-late.stderr (100%) rename {src/test => tests}/ui/lint/lint-attr-non-item-node.rs (100%) rename {src/test => tests}/ui/lint/lint-attr-non-item-node.stderr (100%) rename {src/test => tests}/ui/lint/lint-cap.rs (100%) rename {src/test => tests}/ui/lint/lint-change-warnings.rs (100%) rename {src/test => tests}/ui/lint/lint-change-warnings.stderr (100%) rename {src/test => tests}/ui/lint/lint-const-item-mutation.rs (100%) rename {src/test => tests}/ui/lint/lint-const-item-mutation.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-66202.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-1.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-2.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-3.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-3.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-4.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-5.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249-5.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73249.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73251-1.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73251-1.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73251-2.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73251-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73251.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-73747.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-enum.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-enum.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes-fn.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes-fn.stderr (100%) rename {src/test => tests}/ui/lint/lint-ctypes.rs (100%) rename {src/test => tests}/ui/lint/lint-ctypes.stderr (100%) rename {src/test => tests}/ui/lint/lint-deref-nullptr.rs (100%) rename {src/test => tests}/ui/lint/lint-deref-nullptr.stderr (100%) rename {src/test => tests}/ui/lint/lint-directives-on-use-items-issue-10534.rs (100%) rename {src/test => tests}/ui/lint/lint-directives-on-use-items-issue-10534.stderr (100%) rename {src/test => tests}/ui/lint/lint-enum-intrinsics-non-enums.rs (100%) rename {src/test => tests}/ui/lint/lint-enum-intrinsics-non-enums.stderr (100%) rename {src/test => tests}/ui/lint/lint-exceeding-bitshifts.noopt.stderr (100%) rename {src/test => tests}/ui/lint/lint-exceeding-bitshifts.opt.stderr (100%) rename {src/test => tests}/ui/lint/lint-exceeding-bitshifts.opt_with_overflow_checks.stderr (100%) rename {src/test => tests}/ui/lint/lint-exceeding-bitshifts.rs (100%) rename {src/test => tests}/ui/lint/lint-expr-stmt-attrs-for-early-lints.rs (100%) rename {src/test => tests}/ui/lint/lint-forbid-attr.rs (100%) rename {src/test => tests}/ui/lint/lint-forbid-attr.stderr (100%) rename {src/test => tests}/ui/lint/lint-forbid-cmdline.rs (100%) rename {src/test => tests}/ui/lint/lint-forbid-cmdline.stderr (100%) rename {src/test => tests}/ui/lint/lint-forbid-internal-unsafe.rs (100%) rename {src/test => tests}/ui/lint/lint-forbid-internal-unsafe.stderr (100%) rename {src/test => tests}/ui/lint/lint-group-nonstandard-style.rs (100%) rename {src/test => tests}/ui/lint/lint-group-nonstandard-style.stderr (100%) rename {src/test => tests}/ui/lint/lint-impl-fn.rs (100%) rename {src/test => tests}/ui/lint/lint-impl-fn.stderr (100%) rename {src/test => tests}/ui/lint/lint-incoherent-auto-trait-objects.rs (100%) rename {src/test => tests}/ui/lint/lint-incoherent-auto-trait-objects.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-bool.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-bool.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-exchange-weak.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-exchange-weak.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-exchange.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-exchange.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-false-positive.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-fence.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-fence.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-fetch-update.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-int.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-int.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-ptr.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-ptr.stderr (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-uint.rs (100%) rename {src/test => tests}/ui/lint/lint-invalid-atomic-ordering-uint.stderr (100%) rename {src/test => tests}/ui/lint/lint-level-macro-def-mod.rs (100%) rename {src/test => tests}/ui/lint/lint-level-macro-def.rs (100%) rename {src/test => tests}/ui/lint/lint-lowercase-static-const-pattern-rename.rs (100%) rename {src/test => tests}/ui/lint/lint-lowercase-static-const-pattern.rs (100%) rename {src/test => tests}/ui/lint/lint-lowercase-static-const-pattern.stderr (100%) rename {src/test => tests}/ui/lint/lint-malformed.rs (100%) rename {src/test => tests}/ui/lint/lint-malformed.stderr (100%) rename {src/test => tests}/ui/lint/lint-match-arms.rs (100%) rename {src/test => tests}/ui/lint/lint-match-arms.stderr (100%) rename {src/test => tests}/ui/lint/lint-misplaced-attr.rs (100%) rename {src/test => tests}/ui/lint/lint-misplaced-attr.stderr (100%) rename {src/test => tests}/ui/lint/lint-missing-copy-implementations-allow.rs (100%) rename {src/test => tests}/ui/lint/lint-missing-copy-implementations.rs (100%) rename {src/test => tests}/ui/lint/lint-missing-copy-implementations.stderr (100%) rename {src/test => tests}/ui/lint/lint-missing-doc.rs (100%) rename {src/test => tests}/ui/lint/lint-missing-doc.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-camel-case-types.rs (100%) rename {src/test => tests}/ui/lint/lint-non-camel-case-types.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-camel-case-variant.rs (100%) rename {src/test => tests}/ui/lint/lint-non-camel-case-with-trailing-underscores.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-crate-2.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-crate-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-crate.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-crate.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-functions.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-functions.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-lifetimes.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-lifetimes.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-modules.rs (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-modules.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs (100%) rename {src/test => tests}/ui/lint/lint-non-uppercase-associated-const.rs (100%) rename {src/test => tests}/ui/lint/lint-non-uppercase-associated-const.stderr (100%) rename {src/test => tests}/ui/lint/lint-non-uppercase-statics.rs (100%) rename {src/test => tests}/ui/lint/lint-non-uppercase-statics.stderr (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-1.rs (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-1.stderr (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-2.rs (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-3.rs (100%) rename {src/test => tests}/ui/lint/lint-nonstandard-style-unicode-3.stderr (100%) rename {src/test => tests}/ui/lint/lint-output-format-2.rs (100%) rename {src/test => tests}/ui/lint/lint-output-format-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-output-format.rs (100%) rename {src/test => tests}/ui/lint/lint-output-format.stderr (100%) rename {src/test => tests}/ui/lint/lint-owned-heap-memory.rs (100%) rename {src/test => tests}/ui/lint/lint-owned-heap-memory.stderr (100%) rename {src/test => tests}/ui/lint/lint-pre-expansion-extern-module.rs (100%) rename {src/test => tests}/ui/lint/lint-pre-expansion-extern-module.stderr (100%) rename {src/test => tests}/ui/lint/lint-pub-unreachable-for-nested-glob.rs (100%) rename {src/test => tests}/ui/lint/lint-qualification.rs (100%) rename {src/test => tests}/ui/lint/lint-qualification.stderr (100%) rename {src/test => tests}/ui/lint/lint-range-endpoint-overflow.rs (100%) rename {src/test => tests}/ui/lint/lint-range-endpoint-overflow.stderr (100%) rename {src/test => tests}/ui/lint/lint-removed-allow.rs (100%) rename {src/test => tests}/ui/lint/lint-removed-allow.stderr (100%) rename {src/test => tests}/ui/lint/lint-removed-cmdline.rs (100%) rename {src/test => tests}/ui/lint/lint-removed-cmdline.stderr (100%) rename {src/test => tests}/ui/lint/lint-removed.rs (100%) rename {src/test => tests}/ui/lint/lint-removed.stderr (100%) rename {src/test => tests}/ui/lint/lint-renamed-allow.rs (100%) rename {src/test => tests}/ui/lint/lint-renamed-allow.stderr (100%) rename {src/test => tests}/ui/lint/lint-renamed-cmdline.rs (100%) rename {src/test => tests}/ui/lint/lint-renamed-cmdline.stderr (100%) rename {src/test => tests}/ui/lint/lint-renamed.rs (100%) rename {src/test => tests}/ui/lint/lint-renamed.stderr (100%) rename {src/test => tests}/ui/lint/lint-shorthand-field.fixed (100%) rename {src/test => tests}/ui/lint/lint-shorthand-field.rs (100%) rename {src/test => tests}/ui/lint/lint-shorthand-field.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability-2.rs (100%) rename {src/test => tests}/ui/lint/lint-stability-2.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability-deprecated.rs (100%) rename {src/test => tests}/ui/lint/lint-stability-deprecated.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability-fields-deprecated.rs (100%) rename {src/test => tests}/ui/lint/lint-stability-fields-deprecated.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability-fields.rs (100%) rename {src/test => tests}/ui/lint/lint-stability-fields.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability.rs (100%) rename {src/test => tests}/ui/lint/lint-stability.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability2.rs (100%) rename {src/test => tests}/ui/lint/lint-stability2.stderr (100%) rename {src/test => tests}/ui/lint/lint-stability3.rs (100%) rename {src/test => tests}/ui/lint/lint-stability3.stderr (100%) rename {src/test => tests}/ui/lint/lint-strict-provenance-fuzzy-casts.rs (100%) rename {src/test => tests}/ui/lint/lint-strict-provenance-fuzzy-casts.stderr (100%) rename {src/test => tests}/ui/lint/lint-strict-provenance-lossy-casts.rs (100%) rename {src/test => tests}/ui/lint/lint-strict-provenance-lossy-casts.stderr (100%) rename {src/test => tests}/ui/lint/lint-temporary-cstring-as-param.rs (100%) rename {src/test => tests}/ui/lint/lint-temporary-cstring-as-param.stderr (100%) rename {src/test => tests}/ui/lint/lint-temporary-cstring-as-ptr.rs (100%) rename {src/test => tests}/ui/lint/lint-temporary-cstring-as-ptr.stderr (100%) rename {src/test => tests}/ui/lint/lint-type-limits.rs (100%) rename {src/test => tests}/ui/lint/lint-type-limits.stderr (100%) rename {src/test => tests}/ui/lint/lint-type-limits2.rs (100%) rename {src/test => tests}/ui/lint/lint-type-limits2.stderr (100%) rename {src/test => tests}/ui/lint/lint-type-limits3.rs (100%) rename {src/test => tests}/ui/lint/lint-type-limits3.stderr (100%) rename {src/test => tests}/ui/lint/lint-type-overflow.rs (100%) rename {src/test => tests}/ui/lint/lint-type-overflow.stderr (100%) rename {src/test => tests}/ui/lint/lint-type-overflow2.rs (100%) rename {src/test => tests}/ui/lint/lint-type-overflow2.stderr (100%) rename {src/test => tests}/ui/lint/lint-unconditional-recursion.rs (100%) rename {src/test => tests}/ui/lint/lint-unconditional-recursion.stderr (100%) rename {src/test => tests}/ui/lint/lint-unexported-no-mangle.rs (100%) rename {src/test => tests}/ui/lint/lint-unexported-no-mangle.stderr (100%) rename {src/test => tests}/ui/lint/lint-unknown-feature-default.rs (100%) rename {src/test => tests}/ui/lint/lint-unknown-feature.rs (100%) rename {src/test => tests}/ui/lint/lint-unknown-lint-cmdline.rs (100%) rename {src/test => tests}/ui/lint/lint-unknown-lint-cmdline.stderr (100%) rename {src/test => tests}/ui/lint/lint-unknown-lint.rs (100%) rename {src/test => tests}/ui/lint/lint-unknown-lint.stderr (100%) rename {src/test => tests}/ui/lint/lint-unnecessary-import-braces.rs (100%) rename {src/test => tests}/ui/lint/lint-unnecessary-import-braces.stderr (100%) rename {src/test => tests}/ui/lint/lint-unnecessary-parens.fixed (100%) rename {src/test => tests}/ui/lint/lint-unnecessary-parens.rs (100%) rename {src/test => tests}/ui/lint/lint-unnecessary-parens.stderr (100%) rename {src/test => tests}/ui/lint/lint-unsafe-code.rs (100%) rename {src/test => tests}/ui/lint/lint-unsafe-code.stderr (100%) rename {src/test => tests}/ui/lint/lint-uppercase-variables.rs (100%) rename {src/test => tests}/ui/lint/lint-uppercase-variables.stderr (100%) rename {src/test => tests}/ui/lint/lint_pre_expansion_extern_module_aux.rs (100%) rename {src/test => tests}/ui/lint/lints-in-foreign-macros.rs (100%) rename {src/test => tests}/ui/lint/lints-in-foreign-macros.stderr (100%) rename {src/test => tests}/ui/lint/missing-doc-private-macro.rs (100%) rename {src/test => tests}/ui/lint/missing-doc-private-macro.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/boxed.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/boxed.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/dedup.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/dedup.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/feature-gate-must_not_suspend.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/gated.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/gated.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/generic.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/handled.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/issue-89562.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/mutex.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/mutex.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/other_items.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/other_items.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/ref-drop-tracking.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/ref-drop-tracking.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/ref.drop_tracking.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/ref.no_drop_tracking.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/ref.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/return.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/return.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/trait.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/trait.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/tuple-mismatch.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/tuple-mismatch.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/unit.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/unit.stderr (100%) rename {src/test => tests}/ui/lint/must_not_suspend/warn.rs (100%) rename {src/test => tests}/ui/lint/must_not_suspend/warn.stderr (100%) rename {src/test => tests}/ui/lint/no-coverage.rs (100%) rename {src/test => tests}/ui/lint/no-coverage.stderr (100%) rename {src/test => tests}/ui/lint/noop-method-call.rs (100%) rename {src/test => tests}/ui/lint/noop-method-call.stderr (100%) rename {src/test => tests}/ui/lint/not_found.rs (100%) rename {src/test => tests}/ui/lint/not_found.stderr (100%) rename {src/test => tests}/ui/lint/opaque-ty-ffi-normalization-cycle.rs (100%) rename {src/test => tests}/ui/lint/opaque-ty-ffi-normalization-cycle.stderr (100%) rename {src/test => tests}/ui/lint/opaque-ty-ffi-unsafe.rs (100%) rename {src/test => tests}/ui/lint/opaque-ty-ffi-unsafe.stderr (100%) rename {src/test => tests}/ui/lint/outer-forbid.rs (100%) rename {src/test => tests}/ui/lint/outer-forbid.stderr (100%) rename {src/test => tests}/ui/lint/reasons-erroneous.rs (100%) rename {src/test => tests}/ui/lint/reasons-erroneous.stderr (100%) rename {src/test => tests}/ui/lint/reasons-forbidden.rs (100%) rename {src/test => tests}/ui/lint/reasons-forbidden.stderr (100%) rename {src/test => tests}/ui/lint/reasons.rs (100%) rename {src/test => tests}/ui/lint/reasons.stderr (100%) rename {src/test => tests}/ui/lint/recommend-literal.rs (100%) rename {src/test => tests}/ui/lint/recommend-literal.stderr (100%) rename {src/test => tests}/ui/lint/redundant-semicolon/auxiliary/redundant-semi-proc-macro-def.rs (100%) rename {src/test => tests}/ui/lint/redundant-semicolon/item-stmt-semi.rs (100%) rename {src/test => tests}/ui/lint/redundant-semicolon/item-stmt-semi.stderr (100%) rename {src/test => tests}/ui/lint/redundant-semicolon/redundant-semi-proc-macro.rs (100%) rename {src/test => tests}/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr (100%) rename {src/test => tests}/ui/lint/register-tool-lint.rs (100%) rename {src/test => tests}/ui/lint/register-tool-lint.stderr (100%) rename {src/test => tests}/ui/lint/renamed-lints-still-apply.rs (100%) rename {src/test => tests}/ui/lint/renamed-lints-still-apply.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs (100%) rename {src/test => tests}/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs (100%) rename {src/test => tests}/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr (100%) rename {src/test => tests}/ui/lint/rustdoc-group.rs (100%) rename {src/test => tests}/ui/lint/rustdoc-group.stderr (100%) rename {src/test => tests}/ui/lint/rustdoc-renamed.rs (100%) rename {src/test => tests}/ui/lint/rustdoc-renamed.stderr (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/auxiliary/foreign-crate.rs (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/foreign-crate.rs (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.rs (100%) rename {src/test => tests}/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.stderr (100%) rename {src/test => tests}/ui/lint/special-upper-lower-cases.rs (100%) rename {src/test => tests}/ui/lint/special-upper-lower-cases.stderr (100%) rename {src/test => tests}/ui/lint/suggestions.fixed (100%) rename {src/test => tests}/ui/lint/suggestions.rs (100%) rename {src/test => tests}/ui/lint/suggestions.stderr (100%) rename {src/test => tests}/ui/lint/test-allow-dead-extern-static-no-warning.rs (100%) rename {src/test => tests}/ui/lint/test-inner-fn.rs (100%) rename {src/test => tests}/ui/lint/test-inner-fn.stderr (100%) rename {src/test => tests}/ui/lint/trivial-cast-ice.rs (100%) rename {src/test => tests}/ui/lint/trivial-casts-featuring-type-ascription.rs (100%) rename {src/test => tests}/ui/lint/trivial-casts-featuring-type-ascription.stderr (100%) rename {src/test => tests}/ui/lint/trivial-casts.rs (100%) rename {src/test => tests}/ui/lint/trivial-casts.stderr (100%) rename {src/test => tests}/ui/lint/trivial_casts.rs (100%) rename {src/test => tests}/ui/lint/trivial_casts.stderr (100%) rename {src/test => tests}/ui/lint/type-overflow.rs (100%) rename {src/test => tests}/ui/lint/type-overflow.stderr (100%) rename {src/test => tests}/ui/lint/unaligned_references.rs (100%) rename {src/test => tests}/ui/lint/unaligned_references.stderr (100%) rename {src/test => tests}/ui/lint/unaligned_references_external_macro.rs (100%) rename {src/test => tests}/ui/lint/unaligned_references_external_macro.stderr (100%) rename {src/test => tests}/ui/lint/unnecessary-extern-crate.rs (100%) rename {src/test => tests}/ui/lint/unnecessary-extern-crate.stderr (100%) rename {src/test => tests}/ui/lint/unreachable-async-fn.rs (100%) rename {src/test => tests}/ui/lint/unreachable_pub.rs (100%) rename {src/test => tests}/ui/lint/unreachable_pub.stderr (100%) rename {src/test => tests}/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs (100%) rename {src/test => tests}/ui/lint/unsafe_code/forge_unsafe_block.rs (100%) rename {src/test => tests}/ui/lint/unused-borrows.rs (100%) rename {src/test => tests}/ui/lint/unused-borrows.stderr (100%) rename {src/test => tests}/ui/lint/unused-braces-while-let-with-mutable-value.rs (100%) rename {src/test => tests}/ui/lint/unused-qualification-in-derive-expansion.rs (100%) rename {src/test => tests}/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs (100%) rename {src/test => tests}/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs (100%) rename {src/test => tests}/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs (100%) rename {src/test => tests}/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs (100%) rename {src/test => tests}/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-104397.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-30730.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-30730.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-46576.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-46576.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-54180-unused-ref-field.fixed (100%) rename {src/test => tests}/ui/lint/unused/issue-54180-unused-ref-field.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-54180-unused-ref-field.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-54538-unused-parens-lint.fixed (100%) rename {src/test => tests}/ui/lint/unused/issue-54538-unused-parens-lint.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-54538-unused-parens-lint.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-59896.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-59896.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-70041.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-70041.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-71290-unused-paren-binop.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-81314-unused-span-ident.fixed (100%) rename {src/test => tests}/ui/lint/unused/issue-81314-unused-span-ident.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-81314-unused-span-ident.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-85913.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-85913.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-88519-unused-paren.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-90807-unused-paren-error.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-90807-unused-paren-error.stderr (100%) rename {src/test => tests}/ui/lint/unused/issue-90807-unused-paren.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-92751.rs (100%) rename {src/test => tests}/ui/lint/unused/issue-92751.stderr (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-extern-crate.rs (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-extern-crate.stderr (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-imports.rs (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-imports.stderr (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-mut-self.fixed (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-mut-self.rs (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-mut-self.stderr (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-mut-variables.rs (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-mut-variables.stderr (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-variables.rs (100%) rename {src/test => tests}/ui/lint/unused/lint-unused-variables.stderr (100%) rename {src/test => tests}/ui/lint/unused/must-use-box-from-raw.rs (100%) rename {src/test => tests}/ui/lint/unused/must-use-box-from-raw.stderr (100%) rename {src/test => tests}/ui/lint/unused/must-use-ops.rs (100%) rename {src/test => tests}/ui/lint/unused/must-use-ops.stderr (100%) rename {src/test => tests}/ui/lint/unused/must_use-array.rs (100%) rename {src/test => tests}/ui/lint/unused/must_use-array.stderr (100%) rename {src/test => tests}/ui/lint/unused/must_use-in-stdlib-traits.rs (100%) rename {src/test => tests}/ui/lint/unused/must_use-in-stdlib-traits.stderr (100%) rename {src/test => tests}/ui/lint/unused/must_use-trait.rs (100%) rename {src/test => tests}/ui/lint/unused/must_use-trait.stderr (100%) rename {src/test => tests}/ui/lint/unused/must_use-tuple.rs (100%) rename {src/test => tests}/ui/lint/unused/must_use-tuple.stderr (100%) rename {src/test => tests}/ui/lint/unused/must_use-unit.rs (100%) rename {src/test => tests}/ui/lint/unused/must_use-unit.stderr (100%) rename {src/test => tests}/ui/lint/unused/no-unused-parens-return-block.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-async.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-async.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-attr-duplicate.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-attr-duplicate.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-attr-macro-rules.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-attr-macro-rules.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-closure.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-closure.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-doc-comments-edge-cases.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-doc-comments-edge-cases.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-doc-comments-for-macros.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-doc-comments-for-macros.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-compile-error.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-compile-error.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-decl.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-decl.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-malformed-rule.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules-malformed-rule.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-rules.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-with-bad-frag-spec.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-with-follow-violation.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macro-with-follow-violation.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macros-decl.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macros-decl.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macros-malformed-rule.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macros-malformed-rule.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-macros.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-macros.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-mut-warning-captured-var.fixed (100%) rename {src/test => tests}/ui/lint/unused/unused-mut-warning-captured-var.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-mut-warning-captured-var.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-result.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-result.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused-supertrait.rs (100%) rename {src/test => tests}/ui/lint/unused/unused-supertrait.stderr (100%) rename {src/test => tests}/ui/lint/unused/unused_attributes-must_use.rs (100%) rename {src/test => tests}/ui/lint/unused/unused_attributes-must_use.stderr (100%) rename {src/test => tests}/ui/lint/unused/useless-comment.rs (100%) rename {src/test => tests}/ui/lint/unused/useless-comment.stderr (100%) rename {src/test => tests}/ui/lint/unused_braces.fixed (100%) rename {src/test => tests}/ui/lint/unused_braces.rs (100%) rename {src/test => tests}/ui/lint/unused_braces.stderr (100%) rename {src/test => tests}/ui/lint/unused_braces_borrow.fixed (100%) rename {src/test => tests}/ui/lint/unused_braces_borrow.rs (100%) rename {src/test => tests}/ui/lint/unused_braces_borrow.stderr (100%) rename {src/test => tests}/ui/lint/unused_braces_macro.rs (100%) rename {src/test => tests}/ui/lint/unused_import_warning_issue_45268.rs (100%) rename {src/test => tests}/ui/lint/unused_import_warning_issue_45268.stderr (100%) rename {src/test => tests}/ui/lint/unused_labels.rs (100%) rename {src/test => tests}/ui/lint/unused_labels.stderr (100%) rename {src/test => tests}/ui/lint/unused_parens_json_suggestion.fixed (100%) rename {src/test => tests}/ui/lint/unused_parens_json_suggestion.rs (100%) rename {src/test => tests}/ui/lint/unused_parens_json_suggestion.stderr (100%) rename {src/test => tests}/ui/lint/unused_parens_multibyte_recovery.rs (100%) rename {src/test => tests}/ui/lint/unused_parens_multibyte_recovery.stderr (100%) rename {src/test => tests}/ui/lint/unused_parens_remove_json_suggestion.fixed (100%) rename {src/test => tests}/ui/lint/unused_parens_remove_json_suggestion.rs (100%) rename {src/test => tests}/ui/lint/unused_parens_remove_json_suggestion.stderr (100%) rename {src/test => tests}/ui/lint/unused_variables-issue-82488.fixed (100%) rename {src/test => tests}/ui/lint/unused_variables-issue-82488.rs (100%) rename {src/test => tests}/ui/lint/unused_variables-issue-82488.stderr (100%) rename {src/test => tests}/ui/lint/use-redundant.rs (100%) rename {src/test => tests}/ui/lint/use-redundant.stderr (100%) rename {src/test => tests}/ui/lint/use_suggestion_json.rs (100%) rename {src/test => tests}/ui/lint/use_suggestion_json.stderr (100%) rename {src/test => tests}/ui/lint/warn-ctypes-inhibit.rs (100%) rename {src/test => tests}/ui/lint/warn-path-statement.rs (100%) rename {src/test => tests}/ui/lint/warn-path-statement.stderr (100%) rename {src/test => tests}/ui/lint/warn-unused-inline-on-fn-prototypes.rs (100%) rename {src/test => tests}/ui/lint/warn-unused-inline-on-fn-prototypes.stderr (100%) rename {src/test => tests}/ui/list.rs (100%) rename {src/test => tests}/ui/liveness/liveness-asm.rs (100%) rename {src/test => tests}/ui/liveness/liveness-asm.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-assign-imm-local-after-ret.rs (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.rs (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.rs (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.rs (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.rs (100%) rename {src/test => tests}/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-closure-require-ret.rs (100%) rename {src/test => tests}/ui/liveness/liveness-closure-require-ret.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-consts.rs (100%) rename {src/test => tests}/ui/liveness/liveness-consts.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-dead.rs (100%) rename {src/test => tests}/ui/liveness/liveness-dead.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-derive.rs (100%) rename {src/test => tests}/ui/liveness/liveness-derive.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-forgot-ret.rs (100%) rename {src/test => tests}/ui/liveness/liveness-forgot-ret.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-issue-2163.rs (100%) rename {src/test => tests}/ui/liveness/liveness-issue-2163.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-missing-ret2.rs (100%) rename {src/test => tests}/ui/liveness/liveness-missing-ret2.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-move-call-arg.rs (100%) rename {src/test => tests}/ui/liveness/liveness-move-call-arg.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-move-in-loop.rs (100%) rename {src/test => tests}/ui/liveness/liveness-move-in-loop.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-move-in-while.rs (100%) rename {src/test => tests}/ui/liveness/liveness-move-in-while.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-return-last-stmt-semi.rs (100%) rename {src/test => tests}/ui/liveness/liveness-return-last-stmt-semi.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-unused.rs (100%) rename {src/test => tests}/ui/liveness/liveness-unused.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-upvars.rs (100%) rename {src/test => tests}/ui/liveness/liveness-upvars.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-use-after-move.rs (100%) rename {src/test => tests}/ui/liveness/liveness-use-after-move.stderr (100%) rename {src/test => tests}/ui/liveness/liveness-use-after-send.rs (100%) rename {src/test => tests}/ui/liveness/liveness-use-after-send.stderr (100%) rename {src/test => tests}/ui/log-err-phi.rs (100%) rename {src/test => tests}/ui/log-knows-the-names-of-variants.rs (100%) rename {src/test => tests}/ui/log-poly.rs (100%) rename {src/test => tests}/ui/logging-only-prints-once.rs (100%) rename {src/test => tests}/ui/loops/for-each-loop-panic.rs (100%) rename {src/test => tests}/ui/loops/issue-82916.rs (100%) rename {src/test => tests}/ui/loops/issue-82916.stderr (100%) rename {src/test => tests}/ui/loops/loop-break-unsize.rs (100%) rename {src/test => tests}/ui/loops/loop-break-value-no-repeat.rs (100%) rename {src/test => tests}/ui/loops/loop-break-value-no-repeat.stderr (100%) rename {src/test => tests}/ui/loops/loop-break-value.rs (100%) rename {src/test => tests}/ui/loops/loop-break-value.stderr (100%) rename {src/test => tests}/ui/loops/loop-labeled-break-value.rs (100%) rename {src/test => tests}/ui/loops/loop-labeled-break-value.stderr (100%) rename {src/test => tests}/ui/loops/loop-no-implicit-break.rs (100%) rename {src/test => tests}/ui/loops/loop-no-implicit-break.stderr (100%) rename {src/test => tests}/ui/loops/loop-proper-liveness.rs (100%) rename {src/test => tests}/ui/loops/loop-proper-liveness.stderr (100%) rename {src/test => tests}/ui/loops/loop-properly-diverging-2.rs (100%) rename {src/test => tests}/ui/loops/loop-properly-diverging-2.stderr (100%) rename {src/test => tests}/ui/loud_ui.rs (100%) rename {src/test => tests}/ui/lowering/issue-96847.rs (100%) rename {src/test => tests}/ui/lto/all-crates.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/debuginfo-lto-aux.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/dylib.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/lto-duplicate-symbols1.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/lto-duplicate-symbols2.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/lto-rustc-loads-linker-plugin.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/msvc-imp-present.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/thin-lto-inlines-aux.rs (100%) rename {src/test => tests}/ui/lto/auxiliary/thinlto-dylib.rs (100%) rename {src/test => tests}/ui/lto/debuginfo-lto.rs (100%) rename {src/test => tests}/ui/lto/dylib-works.rs (100%) rename {src/test => tests}/ui/lto/fat-lto.rs (100%) rename {src/test => tests}/ui/lto/issue-100772.rs (100%) rename {src/test => tests}/ui/lto/issue-105637.rs (100%) rename {src/test => tests}/ui/lto/issue-105637.run.stderr (100%) rename {src/test => tests}/ui/lto/issue-11154.rs (100%) rename {src/test => tests}/ui/lto/issue-11154.stderr (100%) rename {src/test => tests}/ui/lto/lto-and-no-bitcode-in-rlib.rs (100%) rename {src/test => tests}/ui/lto/lto-and-no-bitcode-in-rlib.stderr (100%) rename {src/test => tests}/ui/lto/lto-duplicate-symbols.rs (100%) rename {src/test => tests}/ui/lto/lto-duplicate-symbols.stderr (100%) rename {src/test => tests}/ui/lto/lto-many-codegen-units.rs (100%) rename {src/test => tests}/ui/lto/lto-opt-level-s.rs (100%) rename {src/test => tests}/ui/lto/lto-opt-level-z.rs (100%) rename {src/test => tests}/ui/lto/lto-rustc-loads-linker-plugin.rs (100%) rename {src/test => tests}/ui/lto/lto-still-runs-thread-dtors.rs (100%) rename {src/test => tests}/ui/lto/lto-thin-rustc-loads-linker-plugin.rs (100%) rename {src/test => tests}/ui/lto/msvc-imp-present.rs (100%) rename {src/test => tests}/ui/lto/thin-lto-global-allocator.rs (100%) rename {src/test => tests}/ui/lto/thin-lto-inlines.rs (100%) rename {src/test => tests}/ui/lto/thin-lto-inlines2.rs (100%) rename {src/test => tests}/ui/lto/weak-works.rs (100%) rename {src/test => tests}/ui/lub-glb/empty-binder-future-compat.rs (100%) rename {src/test => tests}/ui/lub-glb/empty-binders-err.rs (100%) rename {src/test => tests}/ui/lub-glb/empty-binders-err.stderr (100%) rename {src/test => tests}/ui/lub-glb/empty-binders.rs (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-eq.rs (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq1.rs (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-hr-noteq2.rs (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-object.rs (100%) rename {src/test => tests}/ui/lub-glb/old-lub-glb-object.stderr (100%) rename {src/test => tests}/ui/macro-quote-test.rs (100%) rename {src/test => tests}/ui/macro_backtrace/auxiliary/ping.rs (100%) rename {src/test => tests}/ui/macro_backtrace/main.-Zmacro-backtrace.stderr (100%) rename {src/test => tests}/ui/macro_backtrace/main.default.stderr (100%) rename {src/test => tests}/ui/macro_backtrace/main.rs (100%) rename {src/test => tests}/ui/macros/ambiguity-legacy-vs-modern.rs (100%) rename {src/test => tests}/ui/macros/ambiguity-legacy-vs-modern.stderr (100%) rename {src/test => tests}/ui/macros/assert-as-macro.rs (100%) rename {src/test => tests}/ui/macros/assert-eq-macro-msg.rs (100%) rename {src/test => tests}/ui/macros/assert-eq-macro-panic.rs (100%) rename {src/test => tests}/ui/macros/assert-eq-macro-success.rs (100%) rename {src/test => tests}/ui/macros/assert-eq-macro-unsized.rs (100%) rename {src/test => tests}/ui/macros/assert-format-lazy.rs (100%) rename {src/test => tests}/ui/macros/assert-macro-explicit.rs (100%) rename {src/test => tests}/ui/macros/assert-macro-fmt.rs (100%) rename {src/test => tests}/ui/macros/assert-macro-owned.rs (100%) rename {src/test => tests}/ui/macros/assert-macro-static.rs (100%) rename {src/test => tests}/ui/macros/assert-matches-macro-msg.rs (100%) rename {src/test => tests}/ui/macros/assert-ne-macro-msg.rs (100%) rename {src/test => tests}/ui/macros/assert-ne-macro-panic.rs (100%) rename {src/test => tests}/ui/macros/assert-ne-macro-success.rs (100%) rename {src/test => tests}/ui/macros/assert-ne-macro-unsized.rs (100%) rename {src/test => tests}/ui/macros/assert-trailing-junk.rs (100%) rename {src/test => tests}/ui/macros/assert-trailing-junk.with-generic-asset.stderr (100%) rename {src/test => tests}/ui/macros/assert-trailing-junk.without-generic-asset.stderr (100%) rename {src/test => tests}/ui/macros/assert.rs (100%) rename {src/test => tests}/ui/macros/assert.with-generic-asset.stderr (100%) rename {src/test => tests}/ui/macros/assert.without-generic-asset.stderr (100%) rename {src/test => tests}/ui/macros/attr-empty-expr.rs (100%) rename {src/test => tests}/ui/macros/attr-empty-expr.stderr (100%) rename {src/test => tests}/ui/macros/attr-from-macro.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/attr-from-macro.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/define-macro.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/deprecated-macros.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/dollar-crate-nested-encoding.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/foreign-crate-macro-pat.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/issue-100199.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/issue-19163.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/issue-40469.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/issue-75982.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro-comma-support.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro-def-site-super.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro-in-other-crate.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro-include-items-expr.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro-include-items-item.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro_crate_def_only.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro_crate_nonterminal.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro_export_inner_module.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/macro_with_super_1.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/or-pattern.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/proc_macro_def.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/proc_macro_sequence.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/two_macros-rpass.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/two_macros.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/unstable-macros.rs (100%) rename {src/test => tests}/ui/macros/auxiliary/use-macro-self.rs (100%) rename {src/test => tests}/ui/macros/bad-concat.rs (100%) rename {src/test => tests}/ui/macros/bad-concat.stderr (100%) rename {src/test => tests}/ui/macros/bad_hello.rs (100%) rename {src/test => tests}/ui/macros/bad_hello.stderr (100%) rename {src/test => tests}/ui/macros/bang-after-name.fixed (100%) rename {src/test => tests}/ui/macros/bang-after-name.rs (100%) rename {src/test => tests}/ui/macros/bang-after-name.stderr (100%) rename {src/test => tests}/ui/macros/best-failure.rs (100%) rename {src/test => tests}/ui/macros/best-failure.stderr (100%) rename {src/test => tests}/ui/macros/builtin-prelude-no-accidents.rs (100%) rename {src/test => tests}/ui/macros/builtin-prelude-no-accidents.stderr (100%) rename {src/test => tests}/ui/macros/builtin-std-paths-fail.rs (100%) rename {src/test => tests}/ui/macros/builtin-std-paths-fail.stderr (100%) rename {src/test => tests}/ui/macros/builtin-std-paths.rs (100%) rename {src/test => tests}/ui/macros/cfg.rs (100%) rename {src/test => tests}/ui/macros/cfg.stderr (100%) rename {src/test => tests}/ui/macros/colorful-write-macros.rs (100%) rename {src/test => tests}/ui/macros/concat-bytes-error.rs (100%) rename {src/test => tests}/ui/macros/concat-bytes-error.stderr (100%) rename {src/test => tests}/ui/macros/concat-bytes.rs (100%) rename {src/test => tests}/ui/macros/concat-rpass.rs (100%) rename {src/test => tests}/ui/macros/concat.rs (100%) rename {src/test => tests}/ui/macros/concat.stderr (100%) rename {src/test => tests}/ui/macros/conditional-debug-macro-on.rs (100%) rename {src/test => tests}/ui/macros/cross-crate-pat-span.rs (100%) rename {src/test => tests}/ui/macros/derive-in-eager-expansion-hang.rs (100%) rename {src/test => tests}/ui/macros/derive-in-eager-expansion-hang.stderr (100%) rename {src/test => tests}/ui/macros/die-macro-2.rs (100%) rename {src/test => tests}/ui/macros/die-macro-expr.rs (100%) rename {src/test => tests}/ui/macros/die-macro-pure.rs (100%) rename {src/test => tests}/ui/macros/die-macro.rs (100%) rename {src/test => tests}/ui/macros/doc-comment.rs (100%) rename {src/test => tests}/ui/macros/dollar-crate-nested-encoding.rs (100%) rename {src/test => tests}/ui/macros/duplicate-builtin.rs (100%) rename {src/test => tests}/ui/macros/duplicate-builtin.stderr (100%) rename {src/test => tests}/ui/macros/edition-macro-pats.rs (100%) rename {src/test => tests}/ui/macros/empty-trailing-stmt.rs (100%) rename {src/test => tests}/ui/macros/empty-trailing-stmt.stderr (100%) rename {src/test => tests}/ui/macros/format-args-temporaries-async.rs (100%) rename {src/test => tests}/ui/macros/format-args-temporaries-in-write.rs (100%) rename {src/test => tests}/ui/macros/format-args-temporaries-in-write.stderr (100%) rename {src/test => tests}/ui/macros/format-args-temporaries.rs (100%) rename {src/test => tests}/ui/macros/format-foreign.rs (100%) rename {src/test => tests}/ui/macros/format-foreign.stderr (100%) rename {src/test => tests}/ui/macros/format-parse-errors.rs (100%) rename {src/test => tests}/ui/macros/format-parse-errors.stderr (100%) rename {src/test => tests}/ui/macros/format-unused-lables.rs (100%) rename {src/test => tests}/ui/macros/format-unused-lables.stderr (100%) rename {src/test => tests}/ui/macros/global-asm.rs (100%) rename {src/test => tests}/ui/macros/global-asm.stderr (100%) rename {src/test => tests}/ui/macros/html-literals.rs (100%) rename {src/test => tests}/ui/macros/include-single-expr-helper-1.rs (100%) rename {src/test => tests}/ui/macros/include-single-expr-helper.rs (100%) rename {src/test => tests}/ui/macros/include-single-expr.rs (100%) rename {src/test => tests}/ui/macros/include-single-expr.stderr (100%) rename {src/test => tests}/ui/macros/issue-100199.rs (100%) rename {src/test => tests}/ui/macros/issue-100199.stderr (100%) rename {src/test => tests}/ui/macros/issue-102878.rs (100%) rename {src/test => tests}/ui/macros/issue-102878.stderr (100%) rename {src/test => tests}/ui/macros/issue-103529.rs (100%) rename {src/test => tests}/ui/macros/issue-103529.stderr (100%) rename {src/test => tests}/ui/macros/issue-104769-concat_bytes-invalid-literal.rs (100%) rename {src/test => tests}/ui/macros/issue-104769-concat_bytes-invalid-literal.stderr (100%) rename {src/test => tests}/ui/macros/issue-105011.rs (100%) rename {src/test => tests}/ui/macros/issue-105011.stderr (100%) rename {src/test => tests}/ui/macros/issue-10536.rs (100%) rename {src/test => tests}/ui/macros/issue-10536.stderr (100%) rename {src/test => tests}/ui/macros/issue-16098.rs (100%) rename {src/test => tests}/ui/macros/issue-16098.stderr (100%) rename {src/test => tests}/ui/macros/issue-19163.rs (100%) rename {src/test => tests}/ui/macros/issue-19163.stderr (100%) rename {src/test => tests}/ui/macros/issue-21356.rs (100%) rename {src/test => tests}/ui/macros/issue-21356.stderr (100%) rename {src/test => tests}/ui/macros/issue-22463.rs (100%) rename {src/test => tests}/ui/macros/issue-25274.rs (100%) rename {src/test => tests}/ui/macros/issue-25385.rs (100%) rename {src/test => tests}/ui/macros/issue-25385.stderr (100%) rename {src/test => tests}/ui/macros/issue-26322.rs (100%) rename {src/test => tests}/ui/macros/issue-29084.rs (100%) rename {src/test => tests}/ui/macros/issue-29084.stderr (100%) rename {src/test => tests}/ui/macros/issue-30143.rs (100%) rename {src/test => tests}/ui/macros/issue-30143.stderr (100%) rename {src/test => tests}/ui/macros/issue-33185.rs (100%) rename {src/test => tests}/ui/macros/issue-34171.rs (100%) rename {src/test => tests}/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs (100%) rename {src/test => tests}/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.stderr (100%) rename {src/test => tests}/ui/macros/issue-35450.rs (100%) rename {src/test => tests}/ui/macros/issue-35450.stderr (100%) rename {src/test => tests}/ui/macros/issue-37175.rs (100%) rename {src/test => tests}/ui/macros/issue-38715.rs (100%) rename {src/test => tests}/ui/macros/issue-38715.stderr (100%) rename {src/test => tests}/ui/macros/issue-39388.rs (100%) rename {src/test => tests}/ui/macros/issue-39388.stderr (100%) rename {src/test => tests}/ui/macros/issue-39404.rs (100%) rename {src/test => tests}/ui/macros/issue-39404.stderr (100%) rename {src/test => tests}/ui/macros/issue-40469.rs (100%) rename {src/test => tests}/ui/macros/issue-40770.rs (100%) rename {src/test => tests}/ui/macros/issue-41776.rs (100%) rename {src/test => tests}/ui/macros/issue-41776.stderr (100%) rename {src/test => tests}/ui/macros/issue-41803.rs (100%) rename {src/test => tests}/ui/macros/issue-42954.fixed (100%) rename {src/test => tests}/ui/macros/issue-42954.rs (100%) rename {src/test => tests}/ui/macros/issue-42954.stderr (100%) rename {src/test => tests}/ui/macros/issue-44127.rs (100%) rename {src/test => tests}/ui/macros/issue-5060.rs (100%) rename {src/test => tests}/ui/macros/issue-51848.rs (100%) rename {src/test => tests}/ui/macros/issue-51848.stderr (100%) rename {src/test => tests}/ui/macros/issue-52169.rs (100%) rename {src/test => tests}/ui/macros/issue-54441.rs (100%) rename {src/test => tests}/ui/macros/issue-54441.stderr (100%) rename {src/test => tests}/ui/macros/issue-57597.rs (100%) rename {src/test => tests}/ui/macros/issue-57597.stderr (100%) rename {src/test => tests}/ui/macros/issue-58490.rs (100%) rename {src/test => tests}/ui/macros/issue-58490.stderr (100%) rename {src/test => tests}/ui/macros/issue-61033-1.rs (100%) rename {src/test => tests}/ui/macros/issue-61033-1.stderr (100%) rename {src/test => tests}/ui/macros/issue-61033-2.rs (100%) rename {src/test => tests}/ui/macros/issue-61033-2.stderr (100%) rename {src/test => tests}/ui/macros/issue-61053-different-kleene.rs (100%) rename {src/test => tests}/ui/macros/issue-61053-different-kleene.stderr (100%) rename {src/test => tests}/ui/macros/issue-61053-duplicate-binder.rs (100%) rename {src/test => tests}/ui/macros/issue-61053-duplicate-binder.stderr (100%) rename {src/test => tests}/ui/macros/issue-61053-missing-repetition.rs (100%) rename {src/test => tests}/ui/macros/issue-61053-missing-repetition.stderr (100%) rename {src/test => tests}/ui/macros/issue-61053-unbound.rs (100%) rename {src/test => tests}/ui/macros/issue-61053-unbound.stderr (100%) rename {src/test => tests}/ui/macros/issue-63102.rs (100%) rename {src/test => tests}/ui/macros/issue-6596-1.rs (100%) rename {src/test => tests}/ui/macros/issue-6596-1.stderr (100%) rename {src/test => tests}/ui/macros/issue-68058.rs (100%) rename {src/test => tests}/ui/macros/issue-68060.rs (100%) rename {src/test => tests}/ui/macros/issue-68060.stderr (100%) rename {src/test => tests}/ui/macros/issue-69838-dir/bar.rs (100%) rename {src/test => tests}/ui/macros/issue-69838-dir/included.rs (100%) rename {src/test => tests}/ui/macros/issue-69838-mods-relative-to-included-path.rs (100%) rename {src/test => tests}/ui/macros/issue-70446.rs (100%) rename {src/test => tests}/ui/macros/issue-75982-foreign-macro-weird-mod.rs (100%) rename {src/test => tests}/ui/macros/issue-77475.rs (100%) rename {src/test => tests}/ui/macros/issue-78325-inconsistent-resolution.rs (100%) rename {src/test => tests}/ui/macros/issue-78325-inconsistent-resolution.stderr (100%) rename {src/test => tests}/ui/macros/issue-78333.rs (100%) rename {src/test => tests}/ui/macros/issue-78892-substitution-in-statement-attr.rs (100%) rename {src/test => tests}/ui/macros/issue-81006.rs (100%) rename {src/test => tests}/ui/macros/issue-81006.stderr (100%) rename {src/test => tests}/ui/macros/issue-83340.rs (100%) rename {src/test => tests}/ui/macros/issue-83340.stderr (100%) rename {src/test => tests}/ui/macros/issue-83344.rs (100%) rename {src/test => tests}/ui/macros/issue-83344.stderr (100%) rename {src/test => tests}/ui/macros/issue-84195-lint-anon-const.rs (100%) rename {src/test => tests}/ui/macros/issue-84195-lint-anon-const.stderr (100%) rename {src/test => tests}/ui/macros/issue-84429-matches-edition.rs (100%) rename {src/test => tests}/ui/macros/issue-84632-eager-expansion-recursion-limit.rs (100%) rename {src/test => tests}/ui/macros/issue-84632-eager-expansion-recursion-limit.stderr (100%) rename {src/test => tests}/ui/macros/issue-86082-option-env-invalid-char.rs (100%) rename {src/test => tests}/ui/macros/issue-86865.rs (100%) rename {src/test => tests}/ui/macros/issue-86865.stderr (100%) rename {src/test => tests}/ui/macros/issue-8709.rs (100%) rename {src/test => tests}/ui/macros/issue-87877.rs (100%) rename {src/test => tests}/ui/macros/issue-88206.rs (100%) rename {src/test => tests}/ui/macros/issue-88206.stderr (100%) rename {src/test => tests}/ui/macros/issue-88228.rs (100%) rename {src/test => tests}/ui/macros/issue-88228.stderr (100%) rename {src/test => tests}/ui/macros/issue-8851.rs (100%) rename {src/test => tests}/ui/macros/issue-92267.rs (100%) rename {src/test => tests}/ui/macros/issue-92267.stderr (100%) rename {src/test => tests}/ui/macros/issue-95267.rs (100%) rename {src/test => tests}/ui/macros/issue-95533.rs (100%) rename {src/test => tests}/ui/macros/issue-98466-allow.rs (100%) rename {src/test => tests}/ui/macros/issue-98466.fixed (100%) rename {src/test => tests}/ui/macros/issue-98466.rs (100%) rename {src/test => tests}/ui/macros/issue-98466.stderr (100%) rename {src/test => tests}/ui/macros/issue-99261.rs (100%) rename {src/test => tests}/ui/macros/issue-99265.fixed (100%) rename {src/test => tests}/ui/macros/issue-99265.rs (100%) rename {src/test => tests}/ui/macros/issue-99265.stderr (100%) rename {src/test => tests}/ui/macros/issue-99907.fixed (100%) rename {src/test => tests}/ui/macros/issue-99907.rs (100%) rename {src/test => tests}/ui/macros/issue-99907.stderr (100%) rename {src/test => tests}/ui/macros/lint-trailing-macro-call.rs (100%) rename {src/test => tests}/ui/macros/lint-trailing-macro-call.stderr (100%) rename {src/test => tests}/ui/macros/local-ambiguity-multiple-parsing-options.rs (100%) rename {src/test => tests}/ui/macros/local-ambiguity-multiple-parsing-options.stderr (100%) rename {src/test => tests}/ui/macros/log_syntax-trace_macros-macro-locations.rs (100%) rename {src/test => tests}/ui/macros/log_syntax-trace_macros-macro-locations.stdout (100%) rename {src/test => tests}/ui/macros/macro-2.rs (100%) rename {src/test => tests}/ui/macros/macro-as-fn-body.rs (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2015-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2015.rs (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2015.stderr (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2018-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2018.rs (100%) rename {src/test => tests}/ui/macros/macro-at-most-once-rep-2018.stderr (100%) rename {src/test => tests}/ui/macros/macro-attribute-expansion.rs (100%) rename {src/test => tests}/ui/macros/macro-attribute.rs (100%) rename {src/test => tests}/ui/macros/macro-attribute.stderr (100%) rename {src/test => tests}/ui/macros/macro-attributes.rs (100%) rename {src/test => tests}/ui/macros/macro-backtrace-invalid-internals.rs (100%) rename {src/test => tests}/ui/macros/macro-backtrace-invalid-internals.stderr (100%) rename {src/test => tests}/ui/macros/macro-backtrace-nested.rs (100%) rename {src/test => tests}/ui/macros/macro-backtrace-nested.stderr (100%) rename {src/test => tests}/ui/macros/macro-backtrace-println.rs (100%) rename {src/test => tests}/ui/macros/macro-backtrace-println.stderr (100%) rename {src/test => tests}/ui/macros/macro-block-nonterminal.rs (100%) rename {src/test => tests}/ui/macros/macro-comma-behavior-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-comma-behavior.core.stderr (100%) rename {src/test => tests}/ui/macros/macro-comma-behavior.rs (100%) rename {src/test => tests}/ui/macros/macro-comma-behavior.std.stderr (100%) rename {src/test => tests}/ui/macros/macro-comma-support-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-comma-support.rs (100%) rename {src/test => tests}/ui/macros/macro-comma-support.stderr (100%) rename {src/test => tests}/ui/macros/macro-context.rs (100%) rename {src/test => tests}/ui/macros/macro-context.stderr (100%) rename {src/test => tests}/ui/macros/macro-crate-def-only.rs (100%) rename {src/test => tests}/ui/macros/macro-crate-nonterminal-non-root.rs (100%) rename {src/test => tests}/ui/macros/macro-crate-nonterminal-non-root.stderr (100%) rename {src/test => tests}/ui/macros/macro-crate-nonterminal-renamed.rs (100%) rename {src/test => tests}/ui/macros/macro-crate-nonterminal.rs (100%) rename {src/test => tests}/ui/macros/macro-crate-use.rs (100%) rename {src/test => tests}/ui/macros/macro-deep_expansion.rs (100%) rename {src/test => tests}/ui/macros/macro-def-site-super.rs (100%) rename {src/test => tests}/ui/macros/macro-delimiter-significance.rs (100%) rename {src/test => tests}/ui/macros/macro-deprecation.rs (100%) rename {src/test => tests}/ui/macros/macro-deprecation.stderr (100%) rename {src/test => tests}/ui/macros/macro-doc-comments.rs (100%) rename {src/test => tests}/ui/macros/macro-doc-escapes.rs (100%) rename {src/test => tests}/ui/macros/macro-doc-raw-str-hashes.rs (100%) rename {src/test => tests}/ui/macros/macro-error.rs (100%) rename {src/test => tests}/ui/macros/macro-error.stderr (100%) rename {src/test => tests}/ui/macros/macro-expanded-include/file.txt (100%) rename {src/test => tests}/ui/macros/macro-expanded-include/foo/mod.rs (100%) rename {src/test => tests}/ui/macros/macro-expanded-include/test.rs (100%) rename {src/test => tests}/ui/macros/macro-expansion-tests.rs (100%) rename {src/test => tests}/ui/macros/macro-expansion-tests.stderr (100%) rename {src/test => tests}/ui/macros/macro-export-inner-module.rs (100%) rename {src/test => tests}/ui/macros/macro-first-set.rs (100%) rename {src/test => tests}/ui/macros/macro-follow-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-follow.rs (100%) rename {src/test => tests}/ui/macros/macro-follow.stderr (100%) rename {src/test => tests}/ui/macros/macro-followed-by-seq-bad.rs (100%) rename {src/test => tests}/ui/macros/macro-followed-by-seq-bad.stderr (100%) rename {src/test => tests}/ui/macros/macro-followed-by-seq.rs (100%) rename {src/test => tests}/ui/macros/macro-in-expression-context-2.rs (100%) rename {src/test => tests}/ui/macros/macro-in-expression-context-2.stderr (100%) rename {src/test => tests}/ui/macros/macro-in-expression-context.fixed (100%) rename {src/test => tests}/ui/macros/macro-in-expression-context.rs (100%) rename {src/test => tests}/ui/macros/macro-in-expression-context.stderr (100%) rename {src/test => tests}/ui/macros/macro-in-fn.rs (100%) rename {src/test => tests}/ui/macros/macro-include-items.rs (100%) rename {src/test => tests}/ui/macros/macro-inner-attributes.rs (100%) rename {src/test => tests}/ui/macros/macro-inner-attributes.stderr (100%) rename {src/test => tests}/ui/macros/macro-input-future-proofing.rs (100%) rename {src/test => tests}/ui/macros/macro-input-future-proofing.stderr (100%) rename {src/test => tests}/ui/macros/macro-interpolation.rs (100%) rename {src/test => tests}/ui/macros/macro-invalid-fragment-spec.rs (100%) rename {src/test => tests}/ui/macros/macro-invalid-fragment-spec.stderr (100%) rename {src/test => tests}/ui/macros/macro-invocation-in-count-expr-fixed-array-type.rs (100%) rename {src/test => tests}/ui/macros/macro-lifetime-used-with-bound.rs (100%) rename {src/test => tests}/ui/macros/macro-lifetime-used-with-labels.rs (100%) rename {src/test => tests}/ui/macros/macro-lifetime-used-with-static.rs (100%) rename {src/test => tests}/ui/macros/macro-lifetime.rs (100%) rename {src/test => tests}/ui/macros/macro-literal.rs (100%) rename {src/test => tests}/ui/macros/macro-local-data-key-priv.rs (100%) rename {src/test => tests}/ui/macros/macro-local-data-key-priv.stderr (100%) rename {src/test => tests}/ui/macros/macro-match-nonterminal.rs (100%) rename {src/test => tests}/ui/macros/macro-match-nonterminal.stderr (100%) rename {src/test => tests}/ui/macros/macro-meta-items-modern.rs (100%) rename {src/test => tests}/ui/macros/macro-meta-items.rs (100%) rename {src/test => tests}/ui/macros/macro-method-issue-4621.rs (100%) rename {src/test => tests}/ui/macros/macro-missing-delimiters.rs (100%) rename {src/test => tests}/ui/macros/macro-missing-delimiters.stderr (100%) rename {src/test => tests}/ui/macros/macro-missing-fragment-deduplication.rs (100%) rename {src/test => tests}/ui/macros/macro-missing-fragment-deduplication.stderr (100%) rename {src/test => tests}/ui/macros/macro-missing-fragment.rs (100%) rename {src/test => tests}/ui/macros/macro-missing-fragment.stderr (100%) rename {src/test => tests}/ui/macros/macro-multiple-items.rs (100%) rename {src/test => tests}/ui/macros/macro-multiple-matcher-bindings.rs (100%) rename {src/test => tests}/ui/macros/macro-multiple-matcher-bindings.stderr (100%) rename {src/test => tests}/ui/macros/macro-name-typo.rs (100%) rename {src/test => tests}/ui/macros/macro-name-typo.stderr (100%) rename {src/test => tests}/ui/macros/macro-named-default.rs (100%) rename {src/test => tests}/ui/macros/macro-nested_definition_issue-31946.rs (100%) rename {src/test => tests}/ui/macros/macro-nested_expr.rs (100%) rename {src/test => tests}/ui/macros/macro-nested_stmt_macros.rs (100%) rename {src/test => tests}/ui/macros/macro-non-lifetime.rs (100%) rename {src/test => tests}/ui/macros/macro-non-lifetime.stderr (100%) rename {src/test => tests}/ui/macros/macro-nt-list.rs (100%) rename {src/test => tests}/ui/macros/macro-of-higher-order.rs (100%) rename {src/test => tests}/ui/macros/macro-or-patterns-back-compat.fixed (100%) rename {src/test => tests}/ui/macros/macro-or-patterns-back-compat.rs (100%) rename {src/test => tests}/ui/macros/macro-or-patterns-back-compat.stderr (100%) rename {src/test => tests}/ui/macros/macro-outer-attributes.rs (100%) rename {src/test => tests}/ui/macros/macro-outer-attributes.stderr (100%) rename {src/test => tests}/ui/macros/macro-parameter-span.rs (100%) rename {src/test => tests}/ui/macros/macro-parameter-span.stderr (100%) rename {src/test => tests}/ui/macros/macro-pat-follow-2018.rs (100%) rename {src/test => tests}/ui/macros/macro-pat-follow.rs (100%) rename {src/test => tests}/ui/macros/macro-pat-neg-lit.rs (100%) rename {src/test => tests}/ui/macros/macro-pat-pattern-followed-by-or-in-2021.rs (100%) rename {src/test => tests}/ui/macros/macro-pat-pattern-followed-by-or-in-2021.stderr (100%) rename {src/test => tests}/ui/macros/macro-pat-pattern-followed-by-or.rs (100%) rename {src/test => tests}/ui/macros/macro-pat.rs (100%) rename {src/test => tests}/ui/macros/macro-pat2021-pattern-followed-by-or.rs (100%) rename {src/test => tests}/ui/macros/macro-pat2021-pattern-followed-by-or.stderr (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-1.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-1.stderr (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-2.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-2.stderr (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-3.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-3.stderr (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-4.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-fail-4.stderr (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-pass.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-shadowing.rs (100%) rename {src/test => tests}/ui/macros/macro-path-prelude-shadowing.stderr (100%) rename {src/test => tests}/ui/macros/macro-path.rs (100%) rename {src/test => tests}/ui/macros/macro-pub-matcher.rs (100%) rename {src/test => tests}/ui/macros/macro-reexport-removed.rs (100%) rename {src/test => tests}/ui/macros/macro-reexport-removed.stderr (100%) rename {src/test => tests}/ui/macros/macro-seq-followed-by-seq.rs (100%) rename {src/test => tests}/ui/macros/macro-shadowing-relaxed.rs (100%) rename {src/test => tests}/ui/macros/macro-shadowing.rs (100%) rename {src/test => tests}/ui/macros/macro-shadowing.stderr (100%) rename {src/test => tests}/ui/macros/macro-stability-rpass.rs (100%) rename {src/test => tests}/ui/macros/macro-stability.rs (100%) rename {src/test => tests}/ui/macros/macro-stability.stderr (100%) rename {src/test => tests}/ui/macros/macro-stmt-matchers.rs (100%) rename {src/test => tests}/ui/macros/macro-stmt.rs (100%) rename {src/test => tests}/ui/macros/macro-stmt_macro_in_expr_macro.rs (100%) rename {src/test => tests}/ui/macros/macro-tt-followed-by-seq.rs (100%) rename {src/test => tests}/ui/macros/macro-tt-matchers.rs (100%) rename {src/test => tests}/ui/macros/macro-use-all-and-none.rs (100%) rename {src/test => tests}/ui/macros/macro-use-all-and-none.stderr (100%) rename {src/test => tests}/ui/macros/macro-use-all.rs (100%) rename {src/test => tests}/ui/macros/macro-use-bad-args-1.rs (100%) rename {src/test => tests}/ui/macros/macro-use-bad-args-1.stderr (100%) rename {src/test => tests}/ui/macros/macro-use-bad-args-2.rs (100%) rename {src/test => tests}/ui/macros/macro-use-bad-args-2.stderr (100%) rename {src/test => tests}/ui/macros/macro-use-both.rs (100%) rename {src/test => tests}/ui/macros/macro-use-one.rs (100%) rename {src/test => tests}/ui/macros/macro-use-scope.rs (100%) rename {src/test => tests}/ui/macros/macro-use-undef.rs (100%) rename {src/test => tests}/ui/macros/macro-use-undef.stderr (100%) rename {src/test => tests}/ui/macros/macro-use-wrong-name.rs (100%) rename {src/test => tests}/ui/macros/macro-use-wrong-name.stderr (100%) rename {src/test => tests}/ui/macros/macro-with-attrs1.rs (100%) rename {src/test => tests}/ui/macros/macro-with-attrs2.rs (100%) rename {src/test => tests}/ui/macros/macro-with-braces-in-expr-position.rs (100%) rename {src/test => tests}/ui/macros/macro_path_as_generic_bound.rs (100%) rename {src/test => tests}/ui/macros/macro_path_as_generic_bound.stderr (100%) rename {src/test => tests}/ui/macros/macro_rules-unmatchable-literals.rs (100%) rename {src/test => tests}/ui/macros/macro_rules-unmatchable-literals.stderr (100%) rename {src/test => tests}/ui/macros/macro_undefined.rs (100%) rename {src/test => tests}/ui/macros/macro_undefined.stderr (100%) rename {src/test => tests}/ui/macros/macro_with_super_2.rs (100%) rename {src/test => tests}/ui/macros/macros-in-extern.rs (100%) rename {src/test => tests}/ui/macros/macros-nonfatal-errors.rs (100%) rename {src/test => tests}/ui/macros/macros-nonfatal-errors.stderr (100%) rename {src/test => tests}/ui/macros/malformed_macro_lhs.rs (100%) rename {src/test => tests}/ui/macros/malformed_macro_lhs.stderr (100%) rename {src/test => tests}/ui/macros/meta-item-absolute-path.rs (100%) rename {src/test => tests}/ui/macros/meta-item-absolute-path.stderr (100%) rename {src/test => tests}/ui/macros/meta-variable-depth-outside-repeat.rs (100%) rename {src/test => tests}/ui/macros/meta-variable-depth-outside-repeat.stderr (100%) rename {src/test => tests}/ui/macros/meta-variable-misuse.rs (100%) rename {src/test => tests}/ui/macros/missing-bang-in-decl.fixed (100%) rename {src/test => tests}/ui/macros/missing-bang-in-decl.rs (100%) rename {src/test => tests}/ui/macros/missing-bang-in-decl.stderr (100%) rename {src/test => tests}/ui/macros/missing-comma.rs (100%) rename {src/test => tests}/ui/macros/missing-comma.stderr (100%) rename {src/test => tests}/ui/macros/must-use-in-macro-55516.rs (100%) rename {src/test => tests}/ui/macros/must-use-in-macro-55516.stderr (100%) rename {src/test => tests}/ui/macros/no-std-macros.rs (100%) rename {src/test => tests}/ui/macros/none-delim-lookahead.rs (100%) rename {src/test => tests}/ui/macros/nonterminal-matching.rs (100%) rename {src/test => tests}/ui/macros/nonterminal-matching.stderr (100%) rename {src/test => tests}/ui/macros/not-utf8.bin (100%) rename {src/test => tests}/ui/macros/not-utf8.rs (100%) rename {src/test => tests}/ui/macros/not-utf8.stderr (100%) rename {src/test => tests}/ui/macros/out-of-order-shadowing.rs (100%) rename {src/test => tests}/ui/macros/out-of-order-shadowing.stderr (100%) rename {src/test => tests}/ui/macros/parse-complex-macro-invoc-op.rs (100%) rename {src/test => tests}/ui/macros/paths-in-macro-invocations.rs (100%) rename {src/test => tests}/ui/macros/proc_macro.rs (100%) rename {src/test => tests}/ui/macros/pub-item-inside-macro.rs (100%) rename {src/test => tests}/ui/macros/pub-method-inside-macro.rs (100%) rename {src/test => tests}/ui/macros/recovery-allowed.rs (100%) rename {src/test => tests}/ui/macros/recovery-allowed.stderr (100%) rename {src/test => tests}/ui/macros/recovery-forbidden.rs (100%) rename {src/test => tests}/ui/macros/restricted-shadowing-legacy.rs (100%) rename {src/test => tests}/ui/macros/restricted-shadowing-legacy.stderr (100%) rename {src/test => tests}/ui/macros/restricted-shadowing-modern.rs (100%) rename {src/test => tests}/ui/macros/restricted-shadowing-modern.stderr (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/all-not-available-cases.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/assert-with-custom-errors-does-not-create-unnecessary-code.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/assert-without-captures-does-not-create-unnecessary-code.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/auxiliary/common.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/feature-gate-generic_assert.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.rs (100%) rename {src/test => tests}/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.stdout (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/count-and-length-are-distinct.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/dollar-dollar-has-correct-behavior.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/feature-gate-macro_metavar_expr.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/macro-expansion.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.stderr (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/required-feature.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/required-feature.stderr (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/syntax-errors.rs (100%) rename {src/test => tests}/ui/macros/rfc-3086-metavar-expr/syntax-errors.stderr (100%) rename {src/test => tests}/ui/macros/same-sequence-span.rs (100%) rename {src/test => tests}/ui/macros/same-sequence-span.stderr (100%) rename {src/test => tests}/ui/macros/semi-after-macro-ty.rs (100%) rename {src/test => tests}/ui/macros/span-covering-argument-1.rs (100%) rename {src/test => tests}/ui/macros/span-covering-argument-1.stderr (100%) rename {src/test => tests}/ui/macros/stmt_expr_attr_macro_parse.rs (100%) rename {src/test => tests}/ui/macros/stringify.rs (100%) rename {src/test => tests}/ui/macros/syntax-error-recovery.rs (100%) rename {src/test => tests}/ui/macros/syntax-error-recovery.stderr (100%) rename {src/test => tests}/ui/macros/syntax-extension-cfg.rs (100%) rename {src/test => tests}/ui/macros/syntax-extension-source-utils-files/includeme.fragment (100%) rename {src/test => tests}/ui/macros/syntax-extension-source-utils.rs (100%) rename {src/test => tests}/ui/macros/trace-macro.rs (100%) rename {src/test => tests}/ui/macros/trace-macro.stderr (100%) rename {src/test => tests}/ui/macros/trace_faulty_macros.rs (100%) rename {src/test => tests}/ui/macros/trace_faulty_macros.stderr (100%) rename {src/test => tests}/ui/macros/trace_macros-format.rs (100%) rename {src/test => tests}/ui/macros/trace_macros-format.stderr (100%) rename {src/test => tests}/ui/macros/try-macro.rs (100%) rename {src/test => tests}/ui/macros/two-macro-use.rs (100%) rename {src/test => tests}/ui/macros/type-macros-hlist.rs (100%) rename {src/test => tests}/ui/macros/type-macros-simple.rs (100%) rename {src/test => tests}/ui/macros/typeck-macro-interaction-issue-8852.rs (100%) rename {src/test => tests}/ui/macros/unimplemented-macro-panic.rs (100%) rename {src/test => tests}/ui/macros/unknown-builtin.rs (100%) rename {src/test => tests}/ui/macros/unknown-builtin.stderr (100%) rename {src/test => tests}/ui/macros/unreachable-arg.edition_2021.stderr (100%) rename {src/test => tests}/ui/macros/unreachable-arg.rs (100%) rename {src/test => tests}/ui/macros/unreachable-fmt-msg.rs (100%) rename {src/test => tests}/ui/macros/unreachable-format-arg.rs (100%) rename {src/test => tests}/ui/macros/unreachable-format-args.edition_2015.stderr (100%) rename {src/test => tests}/ui/macros/unreachable-format-args.rs (100%) rename {src/test => tests}/ui/macros/unreachable-macro-panic.rs (100%) rename {src/test => tests}/ui/macros/unreachable-static-msg.rs (100%) rename {src/test => tests}/ui/macros/unreachable.rs (100%) rename {src/test => tests}/ui/macros/use-macro-self.rs (100%) rename {src/test => tests}/ui/macros/vec-macro-in-pattern.rs (100%) rename {src/test => tests}/ui/macros/vec-macro-in-pattern.stderr (100%) rename {src/test => tests}/ui/main-wrong-location.rs (100%) rename {src/test => tests}/ui/main-wrong-location.stderr (100%) rename {src/test => tests}/ui/main-wrong-type.rs (100%) rename {src/test => tests}/ui/main-wrong-type.stderr (100%) rename {src/test => tests}/ui/malformed/issue-69341-malformed-derive-inert.rs (100%) rename {src/test => tests}/ui/malformed/issue-69341-malformed-derive-inert.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-derive-entry.rs (100%) rename {src/test => tests}/ui/malformed/malformed-derive-entry.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-interpolated.rs (100%) rename {src/test => tests}/ui/malformed/malformed-interpolated.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-meta-delim.rs (100%) rename {src/test => tests}/ui/malformed/malformed-meta-delim.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-1.rs (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-1.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-2.rs (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-2.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-3.rs (100%) rename {src/test => tests}/ui/malformed/malformed-plugin-3.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-regressions.rs (100%) rename {src/test => tests}/ui/malformed/malformed-regressions.stderr (100%) rename {src/test => tests}/ui/malformed/malformed-special-attrs.rs (100%) rename {src/test => tests}/ui/malformed/malformed-special-attrs.stderr (100%) rename {src/test => tests}/ui/manual/manual-link-bad-form.rs (100%) rename {src/test => tests}/ui/manual/manual-link-bad-form.stderr (100%) rename {src/test => tests}/ui/manual/manual-link-bad-kind.rs (100%) rename {src/test => tests}/ui/manual/manual-link-bad-kind.stderr (100%) rename {src/test => tests}/ui/manual/manual-link-bad-search-path.rs (100%) rename {src/test => tests}/ui/manual/manual-link-bad-search-path.stderr (100%) rename {src/test => tests}/ui/manual/manual-link-framework.rs (100%) rename {src/test => tests}/ui/manual/manual-link-framework.stderr (100%) rename {src/test => tests}/ui/manual/manual-link-unsupported-kind.rs (100%) rename {src/test => tests}/ui/manual/manual-link-unsupported-kind.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/issue-61651-type-mismatch.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-attribute-on-non-trait.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-attribute-on-non-trait.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-attribute-with-values.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-attribute-with-values.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-trait-with-associated-items.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/marker-trait-with-associated-items.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-marker-trait-with-static-lifetime.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-marker-trait.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-marker-trait.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/overlap-permitted-for-annotated-marker-traits.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/overlapping-impl-1-modulo-regions.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/override-item-on-marker-trait.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/override-item-on-marker-trait.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/region-overlap.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/region-overlap.stderr (100%) rename {src/test => tests}/ui/marker_trait_attr/unsound-overlap.rs (100%) rename {src/test => tests}/ui/marker_trait_attr/unsound-overlap.stderr (100%) rename {src/test => tests}/ui/match/auxiliary/match_non_exhaustive_lib.rs (100%) rename {src/test => tests}/ui/match/const_non_normal_zst_ref_pattern.rs (100%) rename {src/test => tests}/ui/match/expr-match-panic-fn.rs (100%) rename {src/test => tests}/ui/match/expr-match-panic.rs (100%) rename {src/test => tests}/ui/match/expr_before_ident_pat.rs (100%) rename {src/test => tests}/ui/match/expr_before_ident_pat.stderr (100%) rename {src/test => tests}/ui/match/guards.rs (100%) rename {src/test => tests}/ui/match/issue-11319.rs (100%) rename {src/test => tests}/ui/match/issue-11319.stderr (100%) rename {src/test => tests}/ui/match/issue-11940.rs (100%) rename {src/test => tests}/ui/match/issue-12552.rs (100%) rename {src/test => tests}/ui/match/issue-12552.stderr (100%) rename {src/test => tests}/ui/match/issue-18060.rs (100%) rename {src/test => tests}/ui/match/issue-26251.rs (100%) rename {src/test => tests}/ui/match/issue-26996.rs (100%) rename {src/test => tests}/ui/match/issue-27021.rs (100%) rename {src/test => tests}/ui/match/issue-33498.rs (100%) rename {src/test => tests}/ui/match/issue-41255.rs (100%) rename {src/test => tests}/ui/match/issue-41255.stderr (100%) rename {src/test => tests}/ui/match/issue-42679.rs (100%) rename {src/test => tests}/ui/match/issue-46920-byte-array-patterns.rs (100%) rename {src/test => tests}/ui/match/issue-5530.rs (100%) rename {src/test => tests}/ui/match/issue-56685.rs (100%) rename {src/test => tests}/ui/match/issue-56685.stderr (100%) rename {src/test => tests}/ui/match/issue-70972-dyn-trait.rs (100%) rename {src/test => tests}/ui/match/issue-70972-dyn-trait.stderr (100%) rename {src/test => tests}/ui/match/issue-72680.rs (100%) rename {src/test => tests}/ui/match/issue-72896.rs (100%) rename {src/test => tests}/ui/match/issue-74050-end-span.rs (100%) rename {src/test => tests}/ui/match/issue-74050-end-span.stderr (100%) rename {src/test => tests}/ui/match/issue-82392.rs (100%) rename {src/test => tests}/ui/match/issue-82392.stdout (100%) rename {src/test => tests}/ui/match/issue-82866.rs (100%) rename {src/test => tests}/ui/match/issue-82866.stderr (100%) rename {src/test => tests}/ui/match/issue-84434.rs (100%) rename {src/test => tests}/ui/match/issue-91058.rs (100%) rename {src/test => tests}/ui/match/issue-91058.stderr (100%) rename {src/test => tests}/ui/match/issue-92100.rs (100%) rename {src/test => tests}/ui/match/issue-92100.stderr (100%) rename {src/test => tests}/ui/match/match-arm-resolving-to-never.rs (100%) rename {src/test => tests}/ui/match/match-arm-resolving-to-never.stderr (100%) rename {src/test => tests}/ui/match/match-bot-panic.rs (100%) rename {src/test => tests}/ui/match/match-disc-bot.rs (100%) rename {src/test => tests}/ui/match/match-fn-call.rs (100%) rename {src/test => tests}/ui/match/match-fn-call.stderr (100%) rename {src/test => tests}/ui/match/match-ill-type2.rs (100%) rename {src/test => tests}/ui/match/match-ill-type2.stderr (100%) rename {src/test => tests}/ui/match/match-incompat-type-semi.rs (100%) rename {src/test => tests}/ui/match/match-incompat-type-semi.stderr (100%) rename {src/test => tests}/ui/match/match-join.rs (100%) rename {src/test => tests}/ui/match/match-join.stderr (100%) rename {src/test => tests}/ui/match/match-no-arms-unreachable-after.rs (100%) rename {src/test => tests}/ui/match/match-no-arms-unreachable-after.stderr (100%) rename {src/test => tests}/ui/match/match-on-negative-integer-ranges.rs (100%) rename {src/test => tests}/ui/match/match-pattern-field-mismatch-2.rs (100%) rename {src/test => tests}/ui/match/match-pattern-field-mismatch-2.stderr (100%) rename {src/test => tests}/ui/match/match-pattern-field-mismatch.rs (100%) rename {src/test => tests}/ui/match/match-pattern-field-mismatch.stderr (100%) rename {src/test => tests}/ui/match/match-range-fail-2.rs (100%) rename {src/test => tests}/ui/match/match-range-fail-2.stderr (100%) rename {src/test => tests}/ui/match/match-range-fail.rs (100%) rename {src/test => tests}/ui/match/match-range-fail.stderr (100%) rename {src/test => tests}/ui/match/match-ref-mut-invariance.rs (100%) rename {src/test => tests}/ui/match/match-ref-mut-invariance.stderr (100%) rename {src/test => tests}/ui/match/match-ref-mut-let-invariance.rs (100%) rename {src/test => tests}/ui/match/match-ref-mut-let-invariance.stderr (100%) rename {src/test => tests}/ui/match/match-ref-mut-stability.rs (100%) rename {src/test => tests}/ui/match/match-struct.rs (100%) rename {src/test => tests}/ui/match/match-struct.stderr (100%) rename {src/test => tests}/ui/match/match-tag-nullary.rs (100%) rename {src/test => tests}/ui/match/match-tag-nullary.stderr (100%) rename {src/test => tests}/ui/match/match-tag-unary.rs (100%) rename {src/test => tests}/ui/match/match-tag-unary.stderr (100%) rename {src/test => tests}/ui/match/match-type-err-first-arm.rs (100%) rename {src/test => tests}/ui/match/match-type-err-first-arm.stderr (100%) rename {src/test => tests}/ui/match/match-unresolved-one-arm.rs (100%) rename {src/test => tests}/ui/match/match-unresolved-one-arm.stderr (100%) rename {src/test => tests}/ui/match/match-vec-mismatch-2.rs (100%) rename {src/test => tests}/ui/match/match-vec-mismatch-2.stderr (100%) rename {src/test => tests}/ui/match/match-wildcards.rs (100%) rename {src/test => tests}/ui/match/match_non_exhaustive.rs (100%) rename {src/test => tests}/ui/match/match_non_exhaustive.stderr (100%) rename {src/test => tests}/ui/match/pattern-deref-miscompile.rs (100%) rename {src/test => tests}/ui/match/single-line.rs (100%) rename {src/test => tests}/ui/match/single-line.stderr (100%) rename {src/test => tests}/ui/max-min-classes.rs (100%) rename {src/test => tests}/ui/maximal_mir_to_hir_coverage.rs (100%) rename {src/test => tests}/ui/maybe-bounds.rs (100%) rename {src/test => tests}/ui/maybe-bounds.stderr (100%) rename {src/test => tests}/ui/meta/auxiliary/env.rs (100%) rename {src/test => tests}/ui/meta/expected-error-correct-rev.a.stderr (100%) rename {src/test => tests}/ui/meta/expected-error-correct-rev.rs (100%) rename {src/test => tests}/ui/meta/meta-expected-error-wrong-rev.a.stderr (100%) rename {src/test => tests}/ui/meta/meta-expected-error-wrong-rev.rs (100%) rename {src/test => tests}/ui/meta/revision-bad.rs (100%) rename {src/test => tests}/ui/meta/revision-ok.rs (100%) rename {src/test => tests}/ui/meta/rustc-env.rs (100%) rename {src/test => tests}/ui/methods/assign-to-method.rs (100%) rename {src/test => tests}/ui/methods/assign-to-method.stderr (100%) rename {src/test => tests}/ui/methods/auxiliary/ambig_impl_2_lib.rs (100%) rename {src/test => tests}/ui/methods/auxiliary/macro-in-other-crate.rs (100%) rename {src/test => tests}/ui/methods/auxiliary/method_self_arg1.rs (100%) rename {src/test => tests}/ui/methods/auxiliary/method_self_arg2.rs (100%) rename {src/test => tests}/ui/methods/field-method-suggestion-using-return-ty.rs (100%) rename {src/test => tests}/ui/methods/field-method-suggestion-using-return-ty.stderr (100%) rename {src/test => tests}/ui/methods/issues/issue-105732.rs (100%) rename {src/test => tests}/ui/methods/issues/issue-105732.stderr (100%) rename {src/test => tests}/ui/methods/issues/issue-61525.rs (100%) rename {src/test => tests}/ui/methods/issues/issue-61525.stderr (100%) rename {src/test => tests}/ui/methods/issues/issue-84495.rs (100%) rename {src/test => tests}/ui/methods/issues/issue-84495.stderr (100%) rename {src/test => tests}/ui/methods/issues/issue-90315.rs (100%) rename {src/test => tests}/ui/methods/issues/issue-90315.stderr (100%) rename {src/test => tests}/ui/methods/issues/issue-94581.rs (100%) rename {src/test => tests}/ui/methods/issues/issue-94581.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-one-trait-unknown-int-type.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-one-trait-unknown-int-type.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-cross-crate.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-cross-crate.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-bounds.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-bounds.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-impls.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-impls.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-impls2.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-from-impls2.stderr (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-with-default-method.rs (100%) rename {src/test => tests}/ui/methods/method-ambig-two-traits-with-default-method.stderr (100%) rename {src/test => tests}/ui/methods/method-argument-inference-associated-type.rs (100%) rename {src/test => tests}/ui/methods/method-call-err-msg.rs (100%) rename {src/test => tests}/ui/methods/method-call-err-msg.stderr (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-fail.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-fail.stderr (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-lint-fail.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-lint-fail.stderr (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-lint.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-lint.stderr (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-subst-index.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-unresolved.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args-unresolved.stderr (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args.rs (100%) rename {src/test => tests}/ui/methods/method-call-lifetime-args.stderr (100%) rename {src/test => tests}/ui/methods/method-call-type-binding.rs (100%) rename {src/test => tests}/ui/methods/method-call-type-binding.stderr (100%) rename {src/test => tests}/ui/methods/method-deref-to-same-trait-object-with-separate-params.rs (100%) rename {src/test => tests}/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr (100%) rename {src/test => tests}/ui/methods/method-early-bound-lifetimes-on-self.rs (100%) rename {src/test => tests}/ui/methods/method-lookup-order.rs (100%) rename {src/test => tests}/ui/methods/method-macro-backtrace.rs (100%) rename {src/test => tests}/ui/methods/method-macro-backtrace.stderr (100%) rename {src/test => tests}/ui/methods/method-missing-call.rs (100%) rename {src/test => tests}/ui/methods/method-missing-call.stderr (100%) rename {src/test => tests}/ui/methods/method-mut-self-modifies-mut-slice-lvalue.rs (100%) rename {src/test => tests}/ui/methods/method-normalize-bounds-issue-20604.rs (100%) rename {src/test => tests}/ui/methods/method-not-found-generic-arg-elision.rs (100%) rename {src/test => tests}/ui/methods/method-not-found-generic-arg-elision.stderr (100%) rename {src/test => tests}/ui/methods/method-on-ambiguous-numeric-type.rs (100%) rename {src/test => tests}/ui/methods/method-on-ambiguous-numeric-type.stderr (100%) rename {src/test => tests}/ui/methods/method-path-in-pattern.rs (100%) rename {src/test => tests}/ui/methods/method-path-in-pattern.stderr (100%) rename {src/test => tests}/ui/methods/method-probe-no-guessing-dyn-trait.rs (100%) rename {src/test => tests}/ui/methods/method-projection.rs (100%) rename {src/test => tests}/ui/methods/method-recursive-blanket-impl.rs (100%) rename {src/test => tests}/ui/methods/method-resolvable-path-in-pattern.rs (100%) rename {src/test => tests}/ui/methods/method-resolvable-path-in-pattern.stderr (100%) rename {src/test => tests}/ui/methods/method-self-arg-1.rs (100%) rename {src/test => tests}/ui/methods/method-self-arg-1.stderr (100%) rename {src/test => tests}/ui/methods/method-self-arg-2.rs (100%) rename {src/test => tests}/ui/methods/method-self-arg-2.stderr (100%) rename {src/test => tests}/ui/methods/method-self-arg-aux1.rs (100%) rename {src/test => tests}/ui/methods/method-self-arg-aux2.rs (100%) rename {src/test => tests}/ui/methods/method-self-arg-trait.rs (100%) rename {src/test => tests}/ui/methods/method-self-arg.rs (100%) rename {src/test => tests}/ui/methods/method-trait-object-with-hrtb.rs (100%) rename {src/test => tests}/ui/methods/method-two-trait-defer-resolution-1.rs (100%) rename {src/test => tests}/ui/methods/method-two-trait-defer-resolution-2.rs (100%) rename {src/test => tests}/ui/methods/method-two-traits-distinguished-via-where-clause.rs (100%) rename {src/test => tests}/ui/methods/method-where-clause.rs (100%) rename {src/test => tests}/ui/minus-string.rs (100%) rename {src/test => tests}/ui/minus-string.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/README.md (100%) rename {src/test => tests}/ui/mir-dataflow/def-inits-1.rs (100%) rename {src/test => tests}/ui/mir-dataflow/def-inits-1.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/inits-1.rs (100%) rename {src/test => tests}/ui/mir-dataflow/inits-1.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-enum.rs (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-enum.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-projection.rs (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-projection.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-ptr.rs (100%) rename {src/test => tests}/ui/mir-dataflow/liveness-ptr.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/uninits-1.rs (100%) rename {src/test => tests}/ui/mir-dataflow/uninits-1.stderr (100%) rename {src/test => tests}/ui/mir-dataflow/uninits-2.rs (100%) rename {src/test => tests}/ui/mir-dataflow/uninits-2.stderr (100%) rename {src/test => tests}/ui/mir-unpretty.rs (100%) rename {src/test => tests}/ui/mir-unpretty.stderr (100%) rename {src/test => tests}/ui/mir/auxiliary/issue_76375_aux.rs (100%) rename {src/test => tests}/ui/mir/auxiliary/mir_external_refs.rs (100%) rename {src/test => tests}/ui/mir/drop-elaboration-after-borrowck-error.rs (100%) rename {src/test => tests}/ui/mir/drop-elaboration-after-borrowck-error.stderr (100%) rename {src/test => tests}/ui/mir/important-higher-ranked-regions.rs (100%) rename {src/test => tests}/ui/mir/issue-101844.rs (100%) rename {src/test => tests}/ui/mir/issue-102389.rs (100%) rename {src/test => tests}/ui/mir/issue-102389.stderr (100%) rename {src/test => tests}/ui/mir/issue-105809.rs (100%) rename {src/test => tests}/ui/mir/issue-106062.rs (100%) rename {src/test => tests}/ui/mir/issue-106062.stderr (100%) rename {src/test => tests}/ui/mir/issue-29227.rs (100%) rename {src/test => tests}/ui/mir/issue-46845.rs (100%) rename {src/test => tests}/ui/mir/issue-60390.rs (100%) rename {src/test => tests}/ui/mir/issue-66851.rs (100%) rename {src/test => tests}/ui/mir/issue-66930.rs (100%) rename {src/test => tests}/ui/mir/issue-67639-normalization-ice.rs (100%) rename {src/test => tests}/ui/mir/issue-67710-inline-projection.rs (100%) rename {src/test => tests}/ui/mir/issue-67947.rs (100%) rename {src/test => tests}/ui/mir/issue-67947.stderr (100%) rename {src/test => tests}/ui/mir/issue-68841.rs (100%) rename {src/test => tests}/ui/mir/issue-71793-inline-args-storage.rs (100%) rename {src/test => tests}/ui/mir/issue-73914.rs (100%) rename {src/test => tests}/ui/mir/issue-74739.rs (100%) rename {src/test => tests}/ui/mir/issue-75053.rs (100%) rename {src/test => tests}/ui/mir/issue-75053.stderr (100%) rename {src/test => tests}/ui/mir/issue-75419-validation-impl-trait.rs (100%) rename {src/test => tests}/ui/mir/issue-76248.rs (100%) rename {src/test => tests}/ui/mir/issue-76375.rs (100%) rename {src/test => tests}/ui/mir/issue-76740-copy-propagation.rs (100%) rename {src/test => tests}/ui/mir/issue-76803-branches-not-same.rs (100%) rename {src/test => tests}/ui/mir/issue-77002.rs (100%) rename {src/test => tests}/ui/mir/issue-77359-simplify-arm-identity.rs (100%) rename {src/test => tests}/ui/mir/issue-77911.rs (100%) rename {src/test => tests}/ui/mir/issue-78496.rs (100%) rename {src/test => tests}/ui/mir/issue-80949.rs (100%) rename {src/test => tests}/ui/mir/issue-83499-input-output-iteration-ice.rs (100%) rename {src/test => tests}/ui/mir/issue-83499-input-output-iteration-ice.stderr (100%) rename {src/test => tests}/ui/mir/issue-89485.rs (100%) rename {src/test => tests}/ui/mir/issue-91745.rs (100%) rename {src/test => tests}/ui/mir/issue-92893.rs (100%) rename {src/test => tests}/ui/mir/issue-92893.stderr (100%) rename {src/test => tests}/ui/mir/issue-99852.rs (100%) rename {src/test => tests}/ui/mir/issue-99866.rs (100%) rename {src/test => tests}/ui/mir/issue66339.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/array-clone-with-generic-size.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-100550-unnormalized-projection.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-45493.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-45885.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-68347.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-77306-1.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-77306-2.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/ice-issue-77564.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/no-trait-method-issue-40473.rs (100%) rename {src/test => tests}/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs (100%) rename {src/test => tests}/ui/mir/mir-typeck-normalize-fn-sig.rs (100%) rename {src/test => tests}/ui/mir/mir_adt_construction.rs (100%) rename {src/test => tests}/ui/mir/mir_ascription_coercion.rs (100%) rename {src/test => tests}/ui/mir/mir_assign_eval_order.rs (100%) rename {src/test => tests}/ui/mir/mir_augmented_assignments.rs (100%) rename {src/test => tests}/ui/mir/mir_autoderef.rs (100%) rename {src/test => tests}/ui/mir/mir_boxing.rs (100%) rename {src/test => tests}/ui/mir/mir_build_match_comparisons.rs (100%) rename {src/test => tests}/ui/mir/mir_call_with_associated_type.rs (100%) rename {src/test => tests}/ui/mir/mir_calls_to_shims.rs (100%) rename {src/test => tests}/ui/mir/mir_cast_fn_ret.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_array.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_array_2.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_call_converging.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_calls.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_calls_converging_drops.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_calls_converging_drops_2.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_calls_diverging.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_calls_diverging_drops.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_critical_edge.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_spike1.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_switch.rs (100%) rename {src/test => tests}/ui/mir/mir_codegen_switchint.rs (100%) rename {src/test => tests}/ui/mir/mir_coercion_casts.rs (100%) rename {src/test => tests}/ui/mir/mir_coercions.rs (100%) rename {src/test => tests}/ui/mir/mir_const_prop_identity.rs (100%) rename {src/test => tests}/ui/mir/mir_const_prop_tuple_field_reorder.rs (100%) rename {src/test => tests}/ui/mir/mir_constval_adts.rs (100%) rename {src/test => tests}/ui/mir/mir_detects_invalid_ops.rs (100%) rename {src/test => tests}/ui/mir/mir_detects_invalid_ops.stderr (100%) rename {src/test => tests}/ui/mir/mir_drop_order.rs (100%) rename {src/test => tests}/ui/mir/mir_drop_panics.rs (100%) rename {src/test => tests}/ui/mir/mir_dynamic_drops_1.rs (100%) rename {src/test => tests}/ui/mir/mir_dynamic_drops_2.rs (100%) rename {src/test => tests}/ui/mir/mir_dynamic_drops_3.rs (100%) rename {src/test => tests}/ui/mir/mir_early_return_scope.rs (100%) rename {src/test => tests}/ui/mir/mir_fat_ptr.rs (100%) rename {src/test => tests}/ui/mir/mir_fat_ptr_drop.rs (100%) rename {src/test => tests}/ui/mir/mir_heavy_promoted.rs (100%) rename {src/test => tests}/ui/mir/mir_indexing_oob_1.rs (100%) rename {src/test => tests}/ui/mir/mir_indexing_oob_2.rs (100%) rename {src/test => tests}/ui/mir/mir_indexing_oob_3.rs (100%) rename {src/test => tests}/ui/mir/mir_let_chains_drop_order.rs (100%) rename {src/test => tests}/ui/mir/mir_match_arm_guard.rs (100%) rename {src/test => tests}/ui/mir/mir_match_test.rs (100%) rename {src/test => tests}/ui/mir/mir_misc_casts.rs (100%) rename {src/test => tests}/ui/mir/mir_overflow_off.rs (100%) rename {src/test => tests}/ui/mir/mir_raw_fat_ptr.rs (100%) rename {src/test => tests}/ui/mir/mir_refs_correct.rs (100%) rename {src/test => tests}/ui/mir/mir_small_agg_arg.rs (100%) rename {src/test => tests}/ui/mir/mir_static_subtype.rs (100%) rename {src/test => tests}/ui/mir/mir_struct_with_assoc_ty.rs (100%) rename {src/test => tests}/ui/mir/mir_temp_promotions.rs (100%) rename {src/test => tests}/ui/mir/mir_void_return.rs (100%) rename {src/test => tests}/ui/mir/mir_void_return_2.rs (100%) rename {src/test => tests}/ui/mir/remove-zsts-query-cycle.rs (100%) rename {src/test => tests}/ui/mir/simplify-branch-same.rs (100%) rename {src/test => tests}/ui/mir/ssa-analysis-regression-50041.rs (100%) rename {src/test => tests}/ui/mir/thir-constparam-temp.rs (100%) rename {src/test => tests}/ui/mir/thir-constparam-temp.stderr (100%) rename {src/test => tests}/ui/mir/validate/issue-95978-validator-lifetime-comparison.rs (100%) rename {src/test => tests}/ui/mir/validate/needs-reveal-all.rs (100%) rename {src/test => tests}/ui/mismatched_types/E0053.rs (100%) rename {src/test => tests}/ui/mismatched_types/E0053.stderr (100%) rename {src/test => tests}/ui/mismatched_types/E0409.rs (100%) rename {src/test => tests}/ui/mismatched_types/E0409.stderr (100%) rename {src/test => tests}/ui/mismatched_types/E0631.rs (100%) rename {src/test => tests}/ui/mismatched_types/E0631.stderr (100%) rename {src/test => tests}/ui/mismatched_types/abridged.rs (100%) rename {src/test => tests}/ui/mismatched_types/abridged.stderr (100%) rename {src/test => tests}/ui/mismatched_types/assignment-operator-unimplemented.rs (100%) rename {src/test => tests}/ui/mismatched_types/assignment-operator-unimplemented.stderr (100%) rename {src/test => tests}/ui/mismatched_types/binops.rs (100%) rename {src/test => tests}/ui/mismatched_types/binops.stderr (100%) rename {src/test => tests}/ui/mismatched_types/cast-rfc0401.rs (100%) rename {src/test => tests}/ui/mismatched_types/cast-rfc0401.stderr (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.fixed (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.rs (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-count.rs (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-count.stderr (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-type-mismatch.rs (100%) rename {src/test => tests}/ui/mismatched_types/closure-arg-type-mismatch.stderr (100%) rename {src/test => tests}/ui/mismatched_types/closure-mismatch.rs (100%) rename {src/test => tests}/ui/mismatched_types/closure-mismatch.stderr (100%) rename {src/test => tests}/ui/mismatched_types/const-fn-in-trait.rs (100%) rename {src/test => tests}/ui/mismatched_types/const-fn-in-trait.stderr (100%) rename {src/test => tests}/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.rs (100%) rename {src/test => tests}/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.stderr (100%) rename {src/test => tests}/ui/mismatched_types/dont-point-return-on-E0308.rs (100%) rename {src/test => tests}/ui/mismatched_types/dont-point-return-on-E0308.stderr (100%) rename {src/test => tests}/ui/mismatched_types/float-literal-inference-restrictions.rs (100%) rename {src/test => tests}/ui/mismatched_types/float-literal-inference-restrictions.stderr (100%) rename {src/test => tests}/ui/mismatched_types/fn-variance-1.rs (100%) rename {src/test => tests}/ui/mismatched_types/fn-variance-1.stderr (100%) rename {src/test => tests}/ui/mismatched_types/for-loop-has-unit-body.rs (100%) rename {src/test => tests}/ui/mismatched_types/for-loop-has-unit-body.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-106182.fixed (100%) rename {src/test => tests}/ui/mismatched_types/issue-106182.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-106182.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-19109.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-19109.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-26480.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-26480.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-35030.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-35030.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-36053-2.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-36053-2.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-38371-unfixable.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-38371-unfixable.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-38371.fixed (100%) rename {src/test => tests}/ui/mismatched_types/issue-38371.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-38371.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-47706-trait.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-47706-trait.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-47706.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-47706.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-74918-missing-lifetime.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-74918-missing-lifetime.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-75361-mismatched-impl.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-75361-mismatched-impl.stderr (100%) rename {src/test => tests}/ui/mismatched_types/issue-84976.rs (100%) rename {src/test => tests}/ui/mismatched_types/issue-84976.stderr (100%) rename {src/test => tests}/ui/mismatched_types/main.rs (100%) rename {src/test => tests}/ui/mismatched_types/main.stderr (100%) rename {src/test => tests}/ui/mismatched_types/method-help-unsatisfied-bound.rs (100%) rename {src/test => tests}/ui/mismatched_types/method-help-unsatisfied-bound.stderr (100%) rename {src/test => tests}/ui/mismatched_types/non_zero_assigned_something.rs (100%) rename {src/test => tests}/ui/mismatched_types/non_zero_assigned_something.stderr (100%) rename {src/test => tests}/ui/mismatched_types/normalize-fn-sig.rs (100%) rename {src/test => tests}/ui/mismatched_types/normalize-fn-sig.stderr (100%) rename {src/test => tests}/ui/mismatched_types/numeric-literal-cast.rs (100%) rename {src/test => tests}/ui/mismatched_types/numeric-literal-cast.stderr (100%) rename {src/test => tests}/ui/mismatched_types/overloaded-calls-bad.rs (100%) rename {src/test => tests}/ui/mismatched_types/overloaded-calls-bad.stderr (100%) rename {src/test => tests}/ui/mismatched_types/recovered-block.rs (100%) rename {src/test => tests}/ui/mismatched_types/recovered-block.stderr (100%) rename {src/test => tests}/ui/mismatched_types/ref-pat-suggestions.fixed (100%) rename {src/test => tests}/ui/mismatched_types/ref-pat-suggestions.rs (100%) rename {src/test => tests}/ui/mismatched_types/ref-pat-suggestions.stderr (100%) rename {src/test => tests}/ui/mismatched_types/show_module.rs (100%) rename {src/test => tests}/ui/mismatched_types/show_module.stderr (100%) rename {src/test => tests}/ui/mismatched_types/similar_paths.rs (100%) rename {src/test => tests}/ui/mismatched_types/similar_paths.stderr (100%) rename {src/test => tests}/ui/mismatched_types/similar_paths_primitive.rs (100%) rename {src/test => tests}/ui/mismatched_types/similar_paths_primitive.stderr (100%) rename {src/test => tests}/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.fixed (100%) rename {src/test => tests}/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.rs (100%) rename {src/test => tests}/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.stderr (100%) rename {src/test => tests}/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.fixed (100%) rename {src/test => tests}/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.rs (100%) rename {src/test => tests}/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr (100%) rename {src/test => tests}/ui/mismatched_types/suggest-removing-tuple-struct-field.fixed (100%) rename {src/test => tests}/ui/mismatched_types/suggest-removing-tuple-struct-field.rs (100%) rename {src/test => tests}/ui/mismatched_types/suggest-removing-tuple-struct-field.stderr (100%) rename {src/test => tests}/ui/mismatched_types/trait-bounds-cant-coerce.rs (100%) rename {src/test => tests}/ui/mismatched_types/trait-bounds-cant-coerce.stderr (100%) rename {src/test => tests}/ui/mismatched_types/trait-impl-fn-incompatibility.rs (100%) rename {src/test => tests}/ui/mismatched_types/trait-impl-fn-incompatibility.stderr (100%) rename {src/test => tests}/ui/mismatched_types/unboxed-closures-vtable-mismatch.rs (100%) rename {src/test => tests}/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr (100%) rename {src/test => tests}/ui/mismatched_types/wrap-suggestion-privacy.rs (100%) rename {src/test => tests}/ui/mismatched_types/wrap-suggestion-privacy.stderr (100%) rename {src/test => tests}/ui/missing-trait-bounds/auxiliary/issue-69725.rs (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-35677.fixed (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-35677.rs (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-35677.stderr (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-69725.fixed (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-69725.rs (100%) rename {src/test => tests}/ui/missing-trait-bounds/issue-69725.stderr (100%) rename {src/test => tests}/ui/missing-trait-bounds/missing-trait-bound-for-op.fixed (100%) rename {src/test => tests}/ui/missing-trait-bounds/missing-trait-bound-for-op.rs (100%) rename {src/test => tests}/ui/missing-trait-bounds/missing-trait-bound-for-op.stderr (100%) rename {src/test => tests}/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.rs (100%) rename {src/test => tests}/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr (100%) rename {src/test => tests}/ui/missing/auxiliary/two_macros.rs (100%) rename {src/test => tests}/ui/missing/missing-allocator.rs (100%) rename {src/test => tests}/ui/missing/missing-allocator.stderr (100%) rename {src/test => tests}/ui/missing/missing-block-hint.rs (100%) rename {src/test => tests}/ui/missing/missing-block-hint.stderr (100%) rename {src/test => tests}/ui/missing/missing-comma-in-match.fixed (100%) rename {src/test => tests}/ui/missing/missing-comma-in-match.rs (100%) rename {src/test => tests}/ui/missing/missing-comma-in-match.stderr (100%) rename {src/test => tests}/ui/missing/missing-derivable-attr.rs (100%) rename {src/test => tests}/ui/missing/missing-derivable-attr.stderr (100%) rename {src/test => tests}/ui/missing/missing-fields-in-struct-pattern.rs (100%) rename {src/test => tests}/ui/missing/missing-fields-in-struct-pattern.stderr (100%) rename {src/test => tests}/ui/missing/missing-items/auxiliary/m1.rs (100%) rename {src/test => tests}/ui/missing/missing-items/m2.rs (100%) rename {src/test => tests}/ui/missing/missing-items/m2.stderr (100%) rename {src/test => tests}/ui/missing/missing-items/missing-type-parameter.rs (100%) rename {src/test => tests}/ui/missing/missing-items/missing-type-parameter.stderr (100%) rename {src/test => tests}/ui/missing/missing-items/missing-type-parameter2.rs (100%) rename {src/test => tests}/ui/missing/missing-items/missing-type-parameter2.stderr (100%) rename {src/test => tests}/ui/missing/missing-macro-use.rs (100%) rename {src/test => tests}/ui/missing/missing-macro-use.stderr (100%) rename {src/test => tests}/ui/missing/missing-main.rs (100%) rename {src/test => tests}/ui/missing/missing-main.stderr (100%) rename {src/test => tests}/ui/missing/missing-return.rs (100%) rename {src/test => tests}/ui/missing/missing-return.stderr (100%) rename {src/test => tests}/ui/missing/missing-stability.rs (100%) rename {src/test => tests}/ui/missing/missing-stability.stderr (100%) rename {src/test => tests}/ui/missing_debug_impls.rs (100%) rename {src/test => tests}/ui/missing_debug_impls.stderr (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/foo.rs (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/foo_inline.rs (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/missing_non_modrs_mod.stderr (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.rs (100%) rename {src/test => tests}/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.stderr (100%) rename {src/test => tests}/ui/mod-subitem-as-enum-variant.rs (100%) rename {src/test => tests}/ui/mod-subitem-as-enum-variant.stderr (100%) rename {src/test => tests}/ui/module-macro_use-arguments.rs (100%) rename {src/test => tests}/ui/module-macro_use-arguments.stderr (100%) rename {src/test => tests}/ui/modules/auxiliary/dummy_lib.rs (100%) rename {src/test => tests}/ui/modules/auxiliary/two_macros_2.rs (100%) rename {src/test => tests}/ui/modules/issue-56411-aux.rs (100%) rename {src/test => tests}/ui/modules/issue-56411.rs (100%) rename {src/test => tests}/ui/modules/issue-56411.stderr (100%) rename {src/test => tests}/ui/modules/mod-inside-fn.rs (100%) rename {src/test => tests}/ui/modules/mod-view-items.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_implicit.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_implicit_aux/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/modules/mod_dir_implicit_aux/mod.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_path.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_path2.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_path3.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_path_multi.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_recursive.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_simple.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_simple/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/modules/mod_dir_simple/load_another_mod.rs (100%) rename {src/test => tests}/ui/modules/mod_dir_simple/test.rs (100%) rename {src/test => tests}/ui/modules/mod_file.rs (100%) rename {src/test => tests}/ui/modules/mod_file_aux.rs (100%) rename {src/test => tests}/ui/modules/mod_file_with_path_attr.rs (100%) rename {src/test => tests}/ui/modules/module-polymorphism3-files/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/modules/module-polymorphism3-files/float-template/inst_f32.rs (100%) rename {src/test => tests}/ui/modules/module-polymorphism3-files/float-template/inst_f64.rs (100%) rename {src/test => tests}/ui/modules/module-polymorphism3-files/float-template/inst_float.rs (100%) rename {src/test => tests}/ui/modules/path-invalid-form.rs (100%) rename {src/test => tests}/ui/modules/path-invalid-form.stderr (100%) rename {src/test => tests}/ui/modules/path-macro.rs (100%) rename {src/test => tests}/ui/modules/path-macro.stderr (100%) rename {src/test => tests}/ui/modules/path-no-file-name.rs (100%) rename {src/test => tests}/ui/modules/path-no-file-name.stderr (100%) rename {src/test => tests}/ui/modules/special_module_name.rs (100%) rename {src/test => tests}/ui/modules/special_module_name.stderr (100%) rename {src/test => tests}/ui/modules/special_module_name_ignore.rs (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_aux.rs (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_correct_spans.rs (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_correct_spans.stderr (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_disambig.rs (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_disambig.stderr (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_disambig_aux.rs (100%) rename {src/test => tests}/ui/modules_and_files_visibility/mod_file_disambig_aux/mod.rs (100%) rename {src/test => tests}/ui/monomorphize-abi-alignment.rs (100%) rename {src/test => tests}/ui/moves/borrow-closures-instead-of-move.rs (100%) rename {src/test => tests}/ui/moves/borrow-closures-instead-of-move.stderr (100%) rename {src/test => tests}/ui/moves/issue-46099-move-in-macro.rs (100%) rename {src/test => tests}/ui/moves/issue-46099-move-in-macro.stderr (100%) rename {src/test => tests}/ui/moves/issue-72649-uninit-in-loop.rs (100%) rename {src/test => tests}/ui/moves/issue-72649-uninit-in-loop.stderr (100%) rename {src/test => tests}/ui/moves/issue-75904-move-closure-loop.rs (100%) rename {src/test => tests}/ui/moves/issue-75904-move-closure-loop.stderr (100%) rename {src/test => tests}/ui/moves/issue-99470-move-out-of-some.rs (100%) rename {src/test => tests}/ui/moves/issue-99470-move-out-of-some.stderr (100%) rename {src/test => tests}/ui/moves/move-1-unique.rs (100%) rename {src/test => tests}/ui/moves/move-2-unique.rs (100%) rename {src/test => tests}/ui/moves/move-2.rs (100%) rename {src/test => tests}/ui/moves/move-3-unique.rs (100%) rename {src/test => tests}/ui/moves/move-4-unique.rs (100%) rename {src/test => tests}/ui/moves/move-4.rs (100%) rename {src/test => tests}/ui/moves/move-arg-2-unique.rs (100%) rename {src/test => tests}/ui/moves/move-arg-2.rs (100%) rename {src/test => tests}/ui/moves/move-arg.rs (100%) rename {src/test => tests}/ui/moves/move-deref-coercion.rs (100%) rename {src/test => tests}/ui/moves/move-deref-coercion.stderr (100%) rename {src/test => tests}/ui/moves/move-fn-self-receiver.rs (100%) rename {src/test => tests}/ui/moves/move-fn-self-receiver.stderr (100%) rename {src/test => tests}/ui/moves/move-guard-same-consts.rs (100%) rename {src/test => tests}/ui/moves/move-guard-same-consts.stderr (100%) rename {src/test => tests}/ui/moves/move-in-guard-1.rs (100%) rename {src/test => tests}/ui/moves/move-in-guard-1.stderr (100%) rename {src/test => tests}/ui/moves/move-in-guard-2.rs (100%) rename {src/test => tests}/ui/moves/move-in-guard-2.stderr (100%) rename {src/test => tests}/ui/moves/move-into-dead-array-1.rs (100%) rename {src/test => tests}/ui/moves/move-into-dead-array-1.stderr (100%) rename {src/test => tests}/ui/moves/move-into-dead-array-2.rs (100%) rename {src/test => tests}/ui/moves/move-into-dead-array-2.stderr (100%) rename {src/test => tests}/ui/moves/move-nullary-fn.rs (100%) rename {src/test => tests}/ui/moves/move-of-addr-of-mut.rs (100%) rename {src/test => tests}/ui/moves/move-of-addr-of-mut.stderr (100%) rename {src/test => tests}/ui/moves/move-out-of-array-1.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-array-1.stderr (100%) rename {src/test => tests}/ui/moves/move-out-of-array-ref.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-array-ref.stderr (100%) rename {src/test => tests}/ui/moves/move-out-of-field.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-slice-1.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-slice-1.stderr (100%) rename {src/test => tests}/ui/moves/move-out-of-slice-2.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-slice-2.stderr (100%) rename {src/test => tests}/ui/moves/move-out-of-tuple-field.rs (100%) rename {src/test => tests}/ui/moves/move-out-of-tuple-field.stderr (100%) rename {src/test => tests}/ui/moves/move-scalar.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-access-to-field.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-access-to-field.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-block-bad.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-block-bad.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-capture-clause-bad.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-capture-clause-bad.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-capture-clause.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-cyclic-types-issue-4821.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-distribute-copy-over-paren.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-distribute-copy-over-paren.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-exprs.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-exprs.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-match-bindings.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-match-bindings.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-no-recursive-stack-closure.stderr (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-tuple.rs (100%) rename {src/test => tests}/ui/moves/moves-based-on-type-tuple.stderr (100%) rename {src/test => tests}/ui/moves/moves-sru-moved-field.rs (100%) rename {src/test => tests}/ui/moves/moves-sru-moved-field.stderr (100%) rename {src/test => tests}/ui/moves/pin-mut-reborrow.fixed (100%) rename {src/test => tests}/ui/moves/pin-mut-reborrow.rs (100%) rename {src/test => tests}/ui/moves/pin-mut-reborrow.stderr (100%) rename {src/test => tests}/ui/moves/suggest-clone.fixed (100%) rename {src/test => tests}/ui/moves/suggest-clone.rs (100%) rename {src/test => tests}/ui/moves/suggest-clone.stderr (100%) rename {src/test => tests}/ui/moves/use_of_moved_value_clone_suggestions.rs (100%) rename {src/test => tests}/ui/moves/use_of_moved_value_clone_suggestions.stderr (100%) rename {src/test => tests}/ui/moves/use_of_moved_value_copy_suggestions.fixed (100%) rename {src/test => tests}/ui/moves/use_of_moved_value_copy_suggestions.rs (100%) rename {src/test => tests}/ui/moves/use_of_moved_value_copy_suggestions.stderr (100%) rename {src/test => tests}/ui/msvc-data-only.rs (100%) rename {src/test => tests}/ui/multibyte.rs (100%) rename {src/test => tests}/ui/multiline-comment.rs (100%) rename {src/test => tests}/ui/mut-function-arguments.rs (100%) rename {src/test => tests}/ui/mut/mut-cant-alias.rs (100%) rename {src/test => tests}/ui/mut/mut-cant-alias.stderr (100%) rename {src/test => tests}/ui/mut/mut-cross-borrowing.rs (100%) rename {src/test => tests}/ui/mut/mut-cross-borrowing.stderr (100%) rename {src/test => tests}/ui/mut/mut-pattern-internal-mutability.rs (100%) rename {src/test => tests}/ui/mut/mut-pattern-internal-mutability.stderr (100%) rename {src/test => tests}/ui/mut/mut-pattern-mismatched.rs (100%) rename {src/test => tests}/ui/mut/mut-pattern-mismatched.stderr (100%) rename {src/test => tests}/ui/mut/mut-ref.rs (100%) rename {src/test => tests}/ui/mut/mut-ref.stderr (100%) rename {src/test => tests}/ui/mut/mut-suggestion.rs (100%) rename {src/test => tests}/ui/mut/mut-suggestion.stderr (100%) rename {src/test => tests}/ui/mut/mutable-class-fields-2.rs (100%) rename {src/test => tests}/ui/mut/mutable-class-fields-2.stderr (100%) rename {src/test => tests}/ui/mut/mutable-class-fields.rs (100%) rename {src/test => tests}/ui/mut/mutable-class-fields.stderr (100%) rename {src/test => tests}/ui/mut/mutable-enum-indirect.rs (100%) rename {src/test => tests}/ui/mut/mutable-enum-indirect.stderr (100%) rename {src/test => tests}/ui/mut/no-mut-lint-for-desugared-mut.rs (100%) rename {src/test => tests}/ui/mutexguard-sync.rs (100%) rename {src/test => tests}/ui/mutexguard-sync.stderr (100%) rename {src/test => tests}/ui/mutual-recursion-group.rs (100%) rename {src/test => tests}/ui/namespace/auxiliary/namespace-mix.rs (100%) rename {src/test => tests}/ui/namespace/auxiliary/namespaced_enums.rs (100%) rename {src/test => tests}/ui/namespace/namespace-mix.rs (100%) rename {src/test => tests}/ui/namespace/namespace-mix.stderr (100%) rename {src/test => tests}/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.rs (100%) rename {src/test => tests}/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.stderr (100%) rename {src/test => tests}/ui/namespace/namespaced-enum-glob-import-no-impls.rs (100%) rename {src/test => tests}/ui/namespace/namespaced-enum-glob-import-no-impls.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/empty-kind-1.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/empty-kind-1.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/empty-kind-2.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/empty-kind-2.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/link-arg-error.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/link-arg-error.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/link-arg-from-rs.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/link-arg-from-rs.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/mix-bundle-and-whole-archive.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/mix-bundle-and-whole-archive.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override-2.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override-2.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override-3.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override-3.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/modifiers-override.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/suggest-libname-only-1.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/suggest-libname-only-1.stderr (100%) rename {src/test => tests}/ui/native-library-link-flags/suggest-libname-only-2.rs (100%) rename {src/test => tests}/ui/native-library-link-flags/suggest-libname-only-2.stderr (100%) rename {src/test => tests}/ui/nested-block-comment.rs (100%) rename {src/test => tests}/ui/nested-cfg-attrs.rs (100%) rename {src/test => tests}/ui/nested-cfg-attrs.stderr (100%) rename {src/test => tests}/ui/nested-class.rs (100%) rename {src/test => tests}/ui/nested-ty-params.rs (100%) rename {src/test => tests}/ui/nested-ty-params.stderr (100%) rename {src/test => tests}/ui/never_type/adjust_never.rs (100%) rename {src/test => tests}/ui/never_type/auto-traits.rs (100%) rename {src/test => tests}/ui/never_type/call-fn-never-arg-wrong-type.rs (100%) rename {src/test => tests}/ui/never_type/call-fn-never-arg-wrong-type.stderr (100%) rename {src/test => tests}/ui/never_type/call-fn-never-arg.rs (100%) rename {src/test => tests}/ui/never_type/cast-never.rs (100%) rename {src/test => tests}/ui/never_type/defaulted-never-note.fallback.stderr (100%) rename {src/test => tests}/ui/never_type/defaulted-never-note.rs (100%) rename {src/test => tests}/ui/never_type/dispatch_from_dyn_zst.rs (100%) rename {src/test => tests}/ui/never_type/diverging-fallback-control-flow.rs (100%) rename {src/test => tests}/ui/never_type/diverging-fallback-no-leak.fallback.stderr (100%) rename {src/test => tests}/ui/never_type/diverging-fallback-no-leak.rs (100%) rename {src/test => tests}/ui/never_type/diverging-fallback-unconstrained-return.rs (100%) rename {src/test => tests}/ui/never_type/diverging-tuple-parts-39485.rs (100%) rename {src/test => tests}/ui/never_type/diverging-tuple-parts-39485.stderr (100%) rename {src/test => tests}/ui/never_type/exhaustive_patterns.rs (100%) rename {src/test => tests}/ui/never_type/exhaustive_patterns.stderr (100%) rename {src/test => tests}/ui/never_type/expr-empty-ret.rs (100%) rename {src/test => tests}/ui/never_type/fallback-closure-ret.rs (100%) rename {src/test => tests}/ui/never_type/fallback-closure-wrap.fallback.stderr (100%) rename {src/test => tests}/ui/never_type/fallback-closure-wrap.rs (100%) rename {src/test => tests}/ui/never_type/feature-gate-never_type_fallback.rs (100%) rename {src/test => tests}/ui/never_type/feature-gate-never_type_fallback.stderr (100%) rename {src/test => tests}/ui/never_type/impl-for-never.rs (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback.rs (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback2.rs (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback2.stderr (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback3.rs (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback3.stderr (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback4.rs (100%) rename {src/test => tests}/ui/never_type/impl_trait_fallback4.stderr (100%) rename {src/test => tests}/ui/never_type/issue-10176.rs (100%) rename {src/test => tests}/ui/never_type/issue-10176.stderr (100%) rename {src/test => tests}/ui/never_type/issue-13352.rs (100%) rename {src/test => tests}/ui/never_type/issue-13352.stderr (100%) rename {src/test => tests}/ui/never_type/issue-2149.rs (100%) rename {src/test => tests}/ui/never_type/issue-2149.stderr (100%) rename {src/test => tests}/ui/never_type/issue-44402.rs (100%) rename {src/test => tests}/ui/never_type/issue-51506.rs (100%) rename {src/test => tests}/ui/never_type/issue-51506.stderr (100%) rename {src/test => tests}/ui/never_type/issue-52443.rs (100%) rename {src/test => tests}/ui/never_type/issue-52443.stderr (100%) rename {src/test => tests}/ui/never_type/issue-5500-1.rs (100%) rename {src/test => tests}/ui/never_type/issue-96335.rs (100%) rename {src/test => tests}/ui/never_type/issue-96335.stderr (100%) rename {src/test => tests}/ui/never_type/never-assign-dead-code.rs (100%) rename {src/test => tests}/ui/never_type/never-assign-dead-code.stderr (100%) rename {src/test => tests}/ui/never_type/never-assign-wrong-type.rs (100%) rename {src/test => tests}/ui/never_type/never-assign-wrong-type.stderr (100%) rename {src/test => tests}/ui/never_type/never-associated-type.rs (100%) rename {src/test => tests}/ui/never_type/never-from-impl-is-reserved.rs (100%) rename {src/test => tests}/ui/never_type/never-from-impl-is-reserved.stderr (100%) rename {src/test => tests}/ui/never_type/never-result.rs (100%) rename {src/test => tests}/ui/never_type/never-type-arg.rs (100%) rename {src/test => tests}/ui/never_type/never-type-rvalues.rs (100%) rename {src/test => tests}/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr (100%) rename {src/test => tests}/ui/never_type/never-value-fallback-issue-66757.rs (100%) rename {src/test => tests}/ui/never_type/never_coercions.rs (100%) rename {src/test => tests}/ui/never_type/never_transmute_never.rs (100%) rename {src/test => tests}/ui/never_type/return-never-coerce.rs (100%) rename {src/test => tests}/ui/never_type/try_from.rs (100%) rename {src/test => tests}/ui/new-impl-syntax.rs (100%) rename {src/test => tests}/ui/new-import-syntax.rs (100%) rename {src/test => tests}/ui/new-style-constants.rs (100%) rename {src/test => tests}/ui/new-unicode-escapes.rs (100%) rename {src/test => tests}/ui/new-unsafe-pointers.rs (100%) rename {src/test => tests}/ui/newlambdas.rs (100%) rename {src/test => tests}/ui/newtype-polymorphic.rs (100%) rename {src/test => tests}/ui/newtype.rs (100%) rename {src/test => tests}/ui/nll/assign-while-to-immutable.rs (100%) rename {src/test => tests}/ui/nll/borrow-use-issue-46875.rs (100%) rename {src/test => tests}/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.rs (100%) rename {src/test => tests}/ui/nll/borrowed-local-error.rs (100%) rename {src/test => tests}/ui/nll/borrowed-local-error.stderr (100%) rename {src/test => tests}/ui/nll/borrowed-match-issue-45045.rs (100%) rename {src/test => tests}/ui/nll/borrowed-match-issue-45045.stderr (100%) rename {src/test => tests}/ui/nll/borrowed-referent-issue-38899.rs (100%) rename {src/test => tests}/ui/nll/borrowed-referent-issue-38899.stderr (100%) rename {src/test => tests}/ui/nll/borrowed-temporary-error.rs (100%) rename {src/test => tests}/ui/nll/borrowed-temporary-error.stderr (100%) rename {src/test => tests}/ui/nll/borrowed-universal-error-2.rs (100%) rename {src/test => tests}/ui/nll/borrowed-universal-error-2.stderr (100%) rename {src/test => tests}/ui/nll/borrowed-universal-error.rs (100%) rename {src/test => tests}/ui/nll/borrowed-universal-error.stderr (100%) rename {src/test => tests}/ui/nll/cannot-move-block-spans.rs (100%) rename {src/test => tests}/ui/nll/cannot-move-block-spans.stderr (100%) rename {src/test => tests}/ui/nll/capture-mut-ref.fixed (100%) rename {src/test => tests}/ui/nll/capture-mut-ref.rs (100%) rename {src/test => tests}/ui/nll/capture-mut-ref.stderr (100%) rename {src/test => tests}/ui/nll/capture-ref-in-struct.rs (100%) rename {src/test => tests}/ui/nll/capture-ref-in-struct.stderr (100%) rename {src/test => tests}/ui/nll/closure-access-spans.rs (100%) rename {src/test => tests}/ui/nll/closure-access-spans.stderr (100%) rename {src/test => tests}/ui/nll/closure-borrow-spans.rs (100%) rename {src/test => tests}/ui/nll/closure-borrow-spans.stderr (100%) rename {src/test => tests}/ui/nll/closure-captures.rs (100%) rename {src/test => tests}/ui/nll/closure-captures.stderr (100%) rename {src/test => tests}/ui/nll/closure-malformed-projection-input-issue-102800.rs (100%) rename {src/test => tests}/ui/nll/closure-malformed-projection-input-issue-102800.stderr (100%) rename {src/test => tests}/ui/nll/closure-move-spans.rs (100%) rename {src/test => tests}/ui/nll/closure-move-spans.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-argument-callee.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-argument-callee.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-argument.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-argument.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-upvar-nested.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-upvar-nested.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-upvar-ref.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/escape-upvar-ref.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-ref.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-ref.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-val.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-approximated-val.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-despite-same-free-region.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-from-trait-match.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-from-trait-match.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-multiple-requirements.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/propagate-multiple-requirements.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr (100%) rename {src/test => tests}/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/return-wrong-bound-region.rs (100%) rename {src/test => tests}/ui/nll/closure-requirements/return-wrong-bound-region.stderr (100%) rename {src/test => tests}/ui/nll/closure-use-spans.rs (100%) rename {src/test => tests}/ui/nll/closure-use-spans.stderr (100%) rename {src/test => tests}/ui/nll/closures-in-loops.rs (100%) rename {src/test => tests}/ui/nll/closures-in-loops.stderr (100%) rename {src/test => tests}/ui/nll/constant-thread-locals-issue-47053.rs (100%) rename {src/test => tests}/ui/nll/constant-thread-locals-issue-47053.stderr (100%) rename {src/test => tests}/ui/nll/constant.rs (100%) rename {src/test => tests}/ui/nll/continue-after-missing-main.rs (100%) rename {src/test => tests}/ui/nll/continue-after-missing-main.stderr (100%) rename {src/test => tests}/ui/nll/decl-macro-illegal-copy.rs (100%) rename {src/test => tests}/ui/nll/decl-macro-illegal-copy.stderr (100%) rename {src/test => tests}/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.rs (100%) rename {src/test => tests}/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.stderr (100%) rename {src/test => tests}/ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs (100%) rename {src/test => tests}/ui/nll/do-not-ignore-lifetime-bounds-in-copy.stderr (100%) rename {src/test => tests}/ui/nll/dont-print-desugared.rs (100%) rename {src/test => tests}/ui/nll/dont-print-desugared.stderr (100%) rename {src/test => tests}/ui/nll/drop-may-dangle.rs (100%) rename {src/test => tests}/ui/nll/drop-no-may-dangle.rs (100%) rename {src/test => tests}/ui/nll/drop-no-may-dangle.stderr (100%) rename {src/test => tests}/ui/nll/empty-type-predicate-2.rs (100%) rename {src/test => tests}/ui/nll/empty-type-predicate.rs (100%) rename {src/test => tests}/ui/nll/enum-drop-access.rs (100%) rename {src/test => tests}/ui/nll/enum-drop-access.stderr (100%) rename {src/test => tests}/ui/nll/extra-unused-mut.rs (100%) rename {src/test => tests}/ui/nll/generator-distinct-lifetime.rs (100%) rename {src/test => tests}/ui/nll/generator-upvar-mutability.rs (100%) rename {src/test => tests}/ui/nll/generator-upvar-mutability.stderr (100%) rename {src/test => tests}/ui/nll/get_default.polonius.stderr (100%) rename {src/test => tests}/ui/nll/get_default.rs (100%) rename {src/test => tests}/ui/nll/get_default.stderr (100%) rename {src/test => tests}/ui/nll/guarantor-issue-46974.rs (100%) rename {src/test => tests}/ui/nll/guarantor-issue-46974.stderr (100%) rename {src/test => tests}/ui/nll/issue-16223.rs (100%) rename {src/test => tests}/ui/nll/issue-21114-ebfull.rs (100%) rename {src/test => tests}/ui/nll/issue-21114-kixunil.rs (100%) rename {src/test => tests}/ui/nll/issue-21232-partial-init-and-erroneous-use.rs (100%) rename {src/test => tests}/ui/nll/issue-21232-partial-init-and-erroneous-use.stderr (100%) rename {src/test => tests}/ui/nll/issue-21232-partial-init-and-use.rs (100%) rename {src/test => tests}/ui/nll/issue-21232-partial-init-and-use.stderr (100%) rename {src/test => tests}/ui/nll/issue-22323-temp-destruction.rs (100%) rename {src/test => tests}/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-move-match-input-into-guard.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-move-match-input-into-guard.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-move-ref-mut-into-guard.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-move-ref-mut-into-guard.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-1.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-1.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-2.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-2.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-3.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-mutate-before-diverging-arm-3.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-mutation-in-guard.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-mutation-in-guard.stderr (100%) rename {src/test => tests}/ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs (100%) rename {src/test => tests}/ui/nll/issue-27282-reborrow-ref-mut-in-guard.stderr (100%) rename {src/test => tests}/ui/nll/issue-27868.rs (100%) rename {src/test => tests}/ui/nll/issue-27868.stderr (100%) rename {src/test => tests}/ui/nll/issue-30104.rs (100%) rename {src/test => tests}/ui/nll/issue-31567.rs (100%) rename {src/test => tests}/ui/nll/issue-31567.stderr (100%) rename {src/test => tests}/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs (100%) rename {src/test => tests}/ui/nll/issue-42574-diagnostic-in-nested-closure.rs (100%) rename {src/test => tests}/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr (100%) rename {src/test => tests}/ui/nll/issue-43058.rs (100%) rename {src/test => tests}/ui/nll/issue-45157.rs (100%) rename {src/test => tests}/ui/nll/issue-45157.stderr (100%) rename {src/test => tests}/ui/nll/issue-45696-long-live-borrows-in-boxes.rs (100%) rename {src/test => tests}/ui/nll/issue-45696-no-variant-box-recur.rs (100%) rename {src/test => tests}/ui/nll/issue-45696-scribble-on-boxed-borrow.rs (100%) rename {src/test => tests}/ui/nll/issue-45696-scribble-on-boxed-borrow.stderr (100%) rename {src/test => tests}/ui/nll/issue-46023.rs (100%) rename {src/test => tests}/ui/nll/issue-46023.stderr (100%) rename {src/test => tests}/ui/nll/issue-46036.rs (100%) rename {src/test => tests}/ui/nll/issue-46036.stderr (100%) rename {src/test => tests}/ui/nll/issue-46589.rs (100%) rename {src/test => tests}/ui/nll/issue-46589.stderr (100%) rename {src/test => tests}/ui/nll/issue-47022.rs (100%) rename {src/test => tests}/ui/nll/issue-47153-generic-const.rs (100%) rename {src/test => tests}/ui/nll/issue-47388.rs (100%) rename {src/test => tests}/ui/nll/issue-47388.stderr (100%) rename {src/test => tests}/ui/nll/issue-47470.rs (100%) rename {src/test => tests}/ui/nll/issue-47470.stderr (100%) rename {src/test => tests}/ui/nll/issue-47589.rs (100%) rename {src/test => tests}/ui/nll/issue-48070.rs (100%) rename {src/test => tests}/ui/nll/issue-48238.rs (100%) rename {src/test => tests}/ui/nll/issue-48238.stderr (100%) rename {src/test => tests}/ui/nll/issue-48623-closure.rs (100%) rename {src/test => tests}/ui/nll/issue-48623-generator.rs (100%) rename {src/test => tests}/ui/nll/issue-48623-generator.stderr (100%) rename {src/test => tests}/ui/nll/issue-48697.rs (100%) rename {src/test => tests}/ui/nll/issue-48697.stderr (100%) rename {src/test => tests}/ui/nll/issue-48803.rs (100%) rename {src/test => tests}/ui/nll/issue-48803.stderr (100%) rename {src/test => tests}/ui/nll/issue-50343.rs (100%) rename {src/test => tests}/ui/nll/issue-50461-used-mut-from-moves.rs (100%) rename {src/test => tests}/ui/nll/issue-50716-1.rs (100%) rename {src/test => tests}/ui/nll/issue-50716.rs (100%) rename {src/test => tests}/ui/nll/issue-50716.stderr (100%) rename {src/test => tests}/ui/nll/issue-51191.rs (100%) rename {src/test => tests}/ui/nll/issue-51191.stderr (100%) rename {src/test => tests}/ui/nll/issue-51244.rs (100%) rename {src/test => tests}/ui/nll/issue-51244.stderr (100%) rename {src/test => tests}/ui/nll/issue-51268.rs (100%) rename {src/test => tests}/ui/nll/issue-51268.stderr (100%) rename {src/test => tests}/ui/nll/issue-51345-2.rs (100%) rename {src/test => tests}/ui/nll/issue-51351.rs (100%) rename {src/test => tests}/ui/nll/issue-51512.rs (100%) rename {src/test => tests}/ui/nll/issue-51512.stderr (100%) rename {src/test => tests}/ui/nll/issue-51770.rs (100%) rename {src/test => tests}/ui/nll/issue-52057.rs (100%) rename {src/test => tests}/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs (100%) rename {src/test => tests}/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.stderr (100%) rename {src/test => tests}/ui/nll/issue-52078.rs (100%) rename {src/test => tests}/ui/nll/issue-52086.rs (100%) rename {src/test => tests}/ui/nll/issue-52086.stderr (100%) rename {src/test => tests}/ui/nll/issue-52113.rs (100%) rename {src/test => tests}/ui/nll/issue-52113.stderr (100%) rename {src/test => tests}/ui/nll/issue-52213.rs (100%) rename {src/test => tests}/ui/nll/issue-52213.stderr (100%) rename {src/test => tests}/ui/nll/issue-52533-1.rs (100%) rename {src/test => tests}/ui/nll/issue-52533-1.stderr (100%) rename {src/test => tests}/ui/nll/issue-52534-1.rs (100%) rename {src/test => tests}/ui/nll/issue-52534-1.stderr (100%) rename {src/test => tests}/ui/nll/issue-52534-2.rs (100%) rename {src/test => tests}/ui/nll/issue-52534-2.stderr (100%) rename {src/test => tests}/ui/nll/issue-52534.rs (100%) rename {src/test => tests}/ui/nll/issue-52534.stderr (100%) rename {src/test => tests}/ui/nll/issue-52663-span-decl-captured-variable.rs (100%) rename {src/test => tests}/ui/nll/issue-52663-span-decl-captured-variable.stderr (100%) rename {src/test => tests}/ui/nll/issue-52663-trait-object.rs (100%) rename {src/test => tests}/ui/nll/issue-52663-trait-object.stderr (100%) rename {src/test => tests}/ui/nll/issue-52669.rs (100%) rename {src/test => tests}/ui/nll/issue-52669.stderr (100%) rename {src/test => tests}/ui/nll/issue-52742.rs (100%) rename {src/test => tests}/ui/nll/issue-52742.stderr (100%) rename {src/test => tests}/ui/nll/issue-52992.rs (100%) rename {src/test => tests}/ui/nll/issue-53040.rs (100%) rename {src/test => tests}/ui/nll/issue-53040.stderr (100%) rename {src/test => tests}/ui/nll/issue-53119.rs (100%) rename {src/test => tests}/ui/nll/issue-53123-raw-pointer-cast.rs (100%) rename {src/test => tests}/ui/nll/issue-53570.rs (100%) rename {src/test => tests}/ui/nll/issue-53773.rs (100%) rename {src/test => tests}/ui/nll/issue-53773.stderr (100%) rename {src/test => tests}/ui/nll/issue-53807.rs (100%) rename {src/test => tests}/ui/nll/issue-53807.stderr (100%) rename {src/test => tests}/ui/nll/issue-54189.rs (100%) rename {src/test => tests}/ui/nll/issue-54189.stderr (100%) rename {src/test => tests}/ui/nll/issue-54382-use-span-of-tail-of-block.rs (100%) rename {src/test => tests}/ui/nll/issue-54382-use-span-of-tail-of-block.stderr (100%) rename {src/test => tests}/ui/nll/issue-54556-niconii.rs (100%) rename {src/test => tests}/ui/nll/issue-54556-niconii.stderr (100%) rename {src/test => tests}/ui/nll/issue-54556-stephaneyfx.rs (100%) rename {src/test => tests}/ui/nll/issue-54556-stephaneyfx.stderr (100%) rename {src/test => tests}/ui/nll/issue-54556-temps-in-tail-diagnostic.rs (100%) rename {src/test => tests}/ui/nll/issue-54556-temps-in-tail-diagnostic.stderr (100%) rename {src/test => tests}/ui/nll/issue-54556-used-vs-unused-tails.rs (100%) rename {src/test => tests}/ui/nll/issue-54556-used-vs-unused-tails.stderr (100%) rename {src/test => tests}/ui/nll/issue-54556-wrap-it-up.rs (100%) rename {src/test => tests}/ui/nll/issue-54556-wrap-it-up.stderr (100%) rename {src/test => tests}/ui/nll/issue-54779-anon-static-lifetime.rs (100%) rename {src/test => tests}/ui/nll/issue-54779-anon-static-lifetime.stderr (100%) rename {src/test => tests}/ui/nll/issue-54943-3.rs (100%) rename {src/test => tests}/ui/nll/issue-54943.rs (100%) rename {src/test => tests}/ui/nll/issue-54943.stderr (100%) rename {src/test => tests}/ui/nll/issue-55288.rs (100%) rename {src/test => tests}/ui/nll/issue-55344.rs (100%) rename {src/test => tests}/ui/nll/issue-55394.rs (100%) rename {src/test => tests}/ui/nll/issue-55394.stderr (100%) rename {src/test => tests}/ui/nll/issue-55401.rs (100%) rename {src/test => tests}/ui/nll/issue-55401.stderr (100%) rename {src/test => tests}/ui/nll/issue-55511.rs (100%) rename {src/test => tests}/ui/nll/issue-55511.stderr (100%) rename {src/test => tests}/ui/nll/issue-55651.rs (100%) rename {src/test => tests}/ui/nll/issue-55825-const-fn.rs (100%) rename {src/test => tests}/ui/nll/issue-55850.rs (100%) rename {src/test => tests}/ui/nll/issue-55850.stderr (100%) rename {src/test => tests}/ui/nll/issue-57100.rs (100%) rename {src/test => tests}/ui/nll/issue-57100.stderr (100%) rename {src/test => tests}/ui/nll/issue-57265-return-type-wf-check.rs (100%) rename {src/test => tests}/ui/nll/issue-57265-return-type-wf-check.stderr (100%) rename {src/test => tests}/ui/nll/issue-57280-1-flipped.rs (100%) rename {src/test => tests}/ui/nll/issue-57280-1-flipped.stderr (100%) rename {src/test => tests}/ui/nll/issue-57280-1.rs (100%) rename {src/test => tests}/ui/nll/issue-57280.rs (100%) rename {src/test => tests}/ui/nll/issue-57642-higher-ranked-subtype.rs (100%) rename {src/test => tests}/ui/nll/issue-57642-higher-ranked-subtype.stderr (100%) rename {src/test => tests}/ui/nll/issue-57843.rs (100%) rename {src/test => tests}/ui/nll/issue-57843.stderr (100%) rename {src/test => tests}/ui/nll/issue-57960.rs (100%) rename {src/test => tests}/ui/nll/issue-57989.rs (100%) rename {src/test => tests}/ui/nll/issue-57989.stderr (100%) rename {src/test => tests}/ui/nll/issue-58053.rs (100%) rename {src/test => tests}/ui/nll/issue-58053.stderr (100%) rename {src/test => tests}/ui/nll/issue-58299.rs (100%) rename {src/test => tests}/ui/nll/issue-58299.stderr (100%) rename {src/test => tests}/ui/nll/issue-61311-normalize.rs (100%) rename {src/test => tests}/ui/nll/issue-61320-normalize.rs (100%) rename {src/test => tests}/ui/nll/issue-61424.fixed (100%) rename {src/test => tests}/ui/nll/issue-61424.rs (100%) rename {src/test => tests}/ui/nll/issue-61424.stderr (100%) rename {src/test => tests}/ui/nll/issue-62007-assign-const-index.rs (100%) rename {src/test => tests}/ui/nll/issue-62007-assign-const-index.stderr (100%) rename {src/test => tests}/ui/nll/issue-62007-assign-differing-fields.rs (100%) rename {src/test => tests}/ui/nll/issue-62007-assign-differing-fields.stderr (100%) rename {src/test => tests}/ui/nll/issue-63154-normalize.rs (100%) rename {src/test => tests}/ui/nll/issue-67007-escaping-data.rs (100%) rename {src/test => tests}/ui/nll/issue-67007-escaping-data.stderr (100%) rename {src/test => tests}/ui/nll/issue-68550.rs (100%) rename {src/test => tests}/ui/nll/issue-68550.stderr (100%) rename {src/test => tests}/ui/nll/issue-69114-static-mut-ty.rs (100%) rename {src/test => tests}/ui/nll/issue-69114-static-mut-ty.stderr (100%) rename {src/test => tests}/ui/nll/issue-69114-static-ty.rs (100%) rename {src/test => tests}/ui/nll/issue-69114-static-ty.stderr (100%) rename {src/test => tests}/ui/nll/issue-73159-rpit-static.rs (100%) rename {src/test => tests}/ui/nll/issue-73159-rpit-static.stderr (100%) rename {src/test => tests}/ui/nll/issue-78561.rs (100%) rename {src/test => tests}/ui/nll/issue-95272.rs (100%) rename {src/test => tests}/ui/nll/issue-95272.stderr (100%) rename {src/test => tests}/ui/nll/issue-97997.rs (100%) rename {src/test => tests}/ui/nll/issue-97997.stderr (100%) rename {src/test => tests}/ui/nll/issue-98170.rs (100%) rename {src/test => tests}/ui/nll/issue-98170.stderr (100%) rename {src/test => tests}/ui/nll/issue-98589-closures-relate-named-regions.rs (100%) rename {src/test => tests}/ui/nll/issue-98589-closures-relate-named-regions.stderr (100%) rename {src/test => tests}/ui/nll/issue-98693.rs (100%) rename {src/test => tests}/ui/nll/issue-98693.stderr (100%) rename {src/test => tests}/ui/nll/lint-no-err.rs (100%) rename {src/test => tests}/ui/nll/loan_ends_mid_block_pair.rs (100%) rename {src/test => tests}/ui/nll/loan_ends_mid_block_pair.stderr (100%) rename {src/test => tests}/ui/nll/loan_ends_mid_block_vec.rs (100%) rename {src/test => tests}/ui/nll/loan_ends_mid_block_vec.stderr (100%) rename {src/test => tests}/ui/nll/local-outlives-static-via-hrtb.rs (100%) rename {src/test => tests}/ui/nll/local-outlives-static-via-hrtb.stderr (100%) rename {src/test => tests}/ui/nll/lub-if.rs (100%) rename {src/test => tests}/ui/nll/lub-if.stderr (100%) rename {src/test => tests}/ui/nll/lub-match.rs (100%) rename {src/test => tests}/ui/nll/lub-match.stderr (100%) rename {src/test => tests}/ui/nll/match-cfg-fake-edges.rs (100%) rename {src/test => tests}/ui/nll/match-cfg-fake-edges.stderr (100%) rename {src/test => tests}/ui/nll/match-cfg-fake-edges2.rs (100%) rename {src/test => tests}/ui/nll/match-cfg-fake-edges2.stderr (100%) rename {src/test => tests}/ui/nll/match-guards-always-borrow.rs (100%) rename {src/test => tests}/ui/nll/match-guards-always-borrow.stderr (100%) rename {src/test => tests}/ui/nll/match-guards-partially-borrow.rs (100%) rename {src/test => tests}/ui/nll/match-guards-partially-borrow.stderr (100%) rename {src/test => tests}/ui/nll/match-on-borrowed.rs (100%) rename {src/test => tests}/ui/nll/match-on-borrowed.stderr (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-implicit-fragment-drop.stderr (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-uninitialized.rs (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-with-fragment.rs (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-with-fragment.stderr (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.stderr (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop.rs (100%) rename {src/test => tests}/ui/nll/maybe-initialized-drop.stderr (100%) rename {src/test => tests}/ui/nll/mir_check_cast_closure.rs (100%) rename {src/test => tests}/ui/nll/mir_check_cast_closure.stderr (100%) rename {src/test => tests}/ui/nll/mir_check_cast_reify.rs (100%) rename {src/test => tests}/ui/nll/mir_check_cast_reify.stderr (100%) rename {src/test => tests}/ui/nll/mir_check_cast_unsafe_fn.rs (100%) rename {src/test => tests}/ui/nll/mir_check_cast_unsafe_fn.stderr (100%) rename {src/test => tests}/ui/nll/mir_check_cast_unsize.rs (100%) rename {src/test => tests}/ui/nll/mir_check_cast_unsize.stderr (100%) rename {src/test => tests}/ui/nll/move-errors.rs (100%) rename {src/test => tests}/ui/nll/move-errors.stderr (100%) rename {src/test => tests}/ui/nll/move-subpaths-moves-root.rs (100%) rename {src/test => tests}/ui/nll/move-subpaths-moves-root.stderr (100%) rename {src/test => tests}/ui/nll/mutating_references.rs (100%) rename {src/test => tests}/ui/nll/normalization-bounds-error.rs (100%) rename {src/test => tests}/ui/nll/normalization-bounds-error.stderr (100%) rename {src/test => tests}/ui/nll/normalization-bounds.rs (100%) rename {src/test => tests}/ui/nll/outlives-suggestion-more.rs (100%) rename {src/test => tests}/ui/nll/outlives-suggestion-more.stderr (100%) rename {src/test => tests}/ui/nll/outlives-suggestion-simple.polonius.stderr (100%) rename {src/test => tests}/ui/nll/outlives-suggestion-simple.rs (100%) rename {src/test => tests}/ui/nll/outlives-suggestion-simple.stderr (100%) rename {src/test => tests}/ui/nll/polonius/assignment-kills-loans.rs (100%) rename {src/test => tests}/ui/nll/polonius/assignment-to-differing-field.rs (100%) rename {src/test => tests}/ui/nll/polonius/assignment-to-differing-field.stderr (100%) rename {src/test => tests}/ui/nll/polonius/call-kills-loans.rs (100%) rename {src/test => tests}/ui/nll/polonius/issue-46589.rs (100%) rename {src/test => tests}/ui/nll/polonius/polonius-smoke-test.rs (100%) rename {src/test => tests}/ui/nll/polonius/polonius-smoke-test.stderr (100%) rename {src/test => tests}/ui/nll/polonius/storagedead-kills-loans.rs (100%) rename {src/test => tests}/ui/nll/polonius/subset-relations.rs (100%) rename {src/test => tests}/ui/nll/polonius/subset-relations.stderr (100%) rename {src/test => tests}/ui/nll/process_or_insert_default.rs (100%) rename {src/test => tests}/ui/nll/projection-return.rs (100%) rename {src/test => tests}/ui/nll/promotable-mutable-zst-doesnt-conflict.rs (100%) rename {src/test => tests}/ui/nll/promoted-bounds.rs (100%) rename {src/test => tests}/ui/nll/promoted-bounds.stderr (100%) rename {src/test => tests}/ui/nll/promoted-closure-pair.rs (100%) rename {src/test => tests}/ui/nll/promoted-closure-pair.stderr (100%) rename {src/test => tests}/ui/nll/promoted-liveness.rs (100%) rename {src/test => tests}/ui/nll/rc-loop.rs (100%) rename {src/test => tests}/ui/nll/ref-suggestion.rs (100%) rename {src/test => tests}/ui/nll/ref-suggestion.stderr (100%) rename {src/test => tests}/ui/nll/reference-carried-through-struct-field.rs (100%) rename {src/test => tests}/ui/nll/reference-carried-through-struct-field.stderr (100%) rename {src/test => tests}/ui/nll/region-ends-after-if-condition.rs (100%) rename {src/test => tests}/ui/nll/region-ends-after-if-condition.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/fn-subtype.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/fn-subtype.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/hr-fn-aaa-as-aba.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/hr-fn-aau-eq-abu.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/hr-fn-aba-as-aaa.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/issue-48071.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/opaque-hrtb.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/opaque-hrtb.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/trait-hrtb.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/trait-hrtb.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/universe-violation.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/universe-violation.stderr (100%) rename {src/test => tests}/ui/nll/relate_tys/var-appears-twice.rs (100%) rename {src/test => tests}/ui/nll/relate_tys/var-appears-twice.stderr (100%) rename {src/test => tests}/ui/nll/return-ref-mut-issue-46557.rs (100%) rename {src/test => tests}/ui/nll/return-ref-mut-issue-46557.stderr (100%) rename {src/test => tests}/ui/nll/return_from_loop.rs (100%) rename {src/test => tests}/ui/nll/return_from_loop.stderr (100%) rename {src/test => tests}/ui/nll/self-assign-ref-mut.rs (100%) rename {src/test => tests}/ui/nll/snocat-regression.rs (100%) rename {src/test => tests}/ui/nll/snocat-regression.stderr (100%) rename {src/test => tests}/ui/nll/trait-associated-constant.rs (100%) rename {src/test => tests}/ui/nll/trait-associated-constant.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/impl-trait-captures.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/impl-trait-captures.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/impl-trait-outlives.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/impl-trait-outlives.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/issue-53789-1.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/issue-53789-2.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/issue-55756.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-body.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-implied-bounds.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-implied-bounds.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-no-regions-closure.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-no-regions-closure.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-no-regions-fn.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-no-regions-fn.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-closure.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-closure.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-env.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-none.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-none.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/projection-where-clause-trait.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-fn-body.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-fn-body.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-fn.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-fn.stderr (100%) rename {src/test => tests}/ui/nll/ty-outlives/ty-param-implied-bounds.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/wf-unreachable.rs (100%) rename {src/test => tests}/ui/nll/ty-outlives/wf-unreachable.stderr (100%) rename {src/test => tests}/ui/nll/type-alias-free-regions.rs (100%) rename {src/test => tests}/ui/nll/type-alias-free-regions.stderr (100%) rename {src/test => tests}/ui/nll/type-check-pointer-coercions.rs (100%) rename {src/test => tests}/ui/nll/type-check-pointer-coercions.stderr (100%) rename {src/test => tests}/ui/nll/type-check-pointer-comparisons.rs (100%) rename {src/test => tests}/ui/nll/type-check-pointer-comparisons.stderr (100%) rename {src/test => tests}/ui/nll/type-test-universe.rs (100%) rename {src/test => tests}/ui/nll/type-test-universe.stderr (100%) rename {src/test => tests}/ui/nll/unused-mut-issue-50343.fixed (100%) rename {src/test => tests}/ui/nll/unused-mut-issue-50343.rs (100%) rename {src/test => tests}/ui/nll/unused-mut-issue-50343.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-brace-enums.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-brace-enums.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-brace-structs.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-brace-structs.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-nullary-enums.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-nullary-enums.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-enums.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-enums.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-struct-calls.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-struct-calls.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-struct.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/adt-tuple-struct.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/ascribed-type-wf.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/ascribed-type-wf.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/cast_static_lifetime.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/cast_static_lifetime.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/closure-sig.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/closure-substs.polonius.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/closure-substs.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/closure-substs.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-inherent-1.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-inherent-1.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-inherent-2.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-inherent-2.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-normalize.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-normalize.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-1.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-1.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-2.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-2.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-3.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/constant-in-expr-trait-item-3.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/downcast-infer.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/dump-adt-brace-struct.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/dump-adt-brace-struct.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/dump-fn-method.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/dump-fn-method.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/fns.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/fns.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/inherent-associated-constants.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/inherent-associated-constants.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-54124.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-54124.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-54570-bootstrapping.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-55219.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-55241.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-call.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-call.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-1.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-1.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-2.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-2.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-3.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-3.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-1.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-1.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-2.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-2.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-3.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-3.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-4.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/method-ufcs-inherent-4.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-2.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-2.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-default.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-default.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-infer.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-infer.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-self.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization-self.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/normalization.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/normalize-self-ty.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_brace_struct.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_brace_struct.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_tuple_struct.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/pattern_substs_on_tuple_struct.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/patterns.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/patterns.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/promoted-annotation.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/promoted-annotation.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/type-annotation-with-hrtb.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/type_ascription_static_lifetime.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/type_ascription_static_lifetime.stderr (100%) rename {src/test => tests}/ui/nll/user-annotations/wf-self-type.rs (100%) rename {src/test => tests}/ui/nll/user-annotations/wf-self-type.stderr (100%) rename {src/test => tests}/ui/nll/vimwiki-core-regression.rs (100%) rename {src/test => tests}/ui/nll/where_clauses_in_functions.rs (100%) rename {src/test => tests}/ui/nll/where_clauses_in_functions.stderr (100%) rename {src/test => tests}/ui/nll/where_clauses_in_structs.rs (100%) rename {src/test => tests}/ui/nll/where_clauses_in_structs.stderr (100%) rename {src/test => tests}/ui/no-capture-arc.rs (100%) rename {src/test => tests}/ui/no-capture-arc.stderr (100%) rename {src/test => tests}/ui/no-core-1.rs (100%) rename {src/test => tests}/ui/no-core-2.rs (100%) rename {src/test => tests}/ui/no-link-unknown-crate.rs (100%) rename {src/test => tests}/ui/no-link-unknown-crate.stderr (100%) rename {src/test => tests}/ui/no-patterns-in-args-2.rs (100%) rename {src/test => tests}/ui/no-patterns-in-args-2.stderr (100%) rename {src/test => tests}/ui/no-patterns-in-args-macro.rs (100%) rename {src/test => tests}/ui/no-patterns-in-args-macro.stderr (100%) rename {src/test => tests}/ui/no-patterns-in-args.rs (100%) rename {src/test => tests}/ui/no-patterns-in-args.stderr (100%) rename {src/test => tests}/ui/no-reuse-move-arc.rs (100%) rename {src/test => tests}/ui/no-reuse-move-arc.stderr (100%) rename {src/test => tests}/ui/no-send-res-ports.rs (100%) rename {src/test => tests}/ui/no-send-res-ports.stderr (100%) rename {src/test => tests}/ui/no-warn-on-field-replace-issue-34101.rs (100%) rename {src/test => tests}/ui/no_crate_type.rs (100%) rename {src/test => tests}/ui/no_crate_type.stderr (100%) rename {src/test => tests}/ui/no_send-enum.rs (100%) rename {src/test => tests}/ui/no_send-enum.stderr (100%) rename {src/test => tests}/ui/no_send-rc.rs (100%) rename {src/test => tests}/ui/no_send-rc.stderr (100%) rename {src/test => tests}/ui/no_share-enum.rs (100%) rename {src/test => tests}/ui/no_share-enum.stderr (100%) rename {src/test => tests}/ui/no_share-struct.rs (100%) rename {src/test => tests}/ui/no_share-struct.stderr (100%) rename {src/test => tests}/ui/noexporttypeexe.rs (100%) rename {src/test => tests}/ui/noexporttypeexe.stderr (100%) rename {src/test => tests}/ui/non-constant-expr-for-arr-len.rs (100%) rename {src/test => tests}/ui/non-constant-expr-for-arr-len.stderr (100%) rename {src/test => tests}/ui/non-copyable-void.rs (100%) rename {src/test => tests}/ui/non-copyable-void.stderr (100%) rename {src/test => tests}/ui/non-fmt-panic.fixed (100%) rename {src/test => tests}/ui/non-fmt-panic.rs (100%) rename {src/test => tests}/ui/non-fmt-panic.stderr (100%) rename {src/test => tests}/ui/non-ice-error-on-worker-io-fail.rs (100%) rename {src/test => tests}/ui/non-ice-error-on-worker-io-fail.stderr (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/inline/somename.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/inline/somename.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/modrs_mod/mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/non_modrs_mods.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/some_crazy_attr_mod_dir/arbitrary_name.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/some_crazy_attr_mod_dir/compiletest-ignore-dir (100%) rename {src/test => tests}/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/innest.rs (100%) rename {src/test => tests}/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs (100%) rename {src/test => tests}/ui/non_modrs_mods_and_inline_mods/non_modrs_mods_and_inline_mods.rs (100%) rename {src/test => tests}/ui/non_modrs_mods_and_inline_mods/x.rs (100%) rename {src/test => tests}/ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs (100%) rename {src/test => tests}/ui/noncopyable-class.rs (100%) rename {src/test => tests}/ui/noncopyable-class.stderr (100%) rename {src/test => tests}/ui/nonscalar-cast.fixed (100%) rename {src/test => tests}/ui/nonscalar-cast.rs (100%) rename {src/test => tests}/ui/nonscalar-cast.stderr (100%) rename {src/test => tests}/ui/not-clone-closure.rs (100%) rename {src/test => tests}/ui/not-clone-closure.stderr (100%) rename {src/test => tests}/ui/not-copy-closure.rs (100%) rename {src/test => tests}/ui/not-copy-closure.stderr (100%) rename {src/test => tests}/ui/not-enough-arguments.rs (100%) rename {src/test => tests}/ui/not-enough-arguments.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-2.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-2.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-3.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-3.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-4.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-4.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-5.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-5.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-6.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe-6.stderr (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe.rs (100%) rename {src/test => tests}/ui/not-panic/not-panic-safe.stderr (100%) rename {src/test => tests}/ui/nul-characters.rs (100%) rename {src/test => tests}/ui/nullable-pointer-iotareduction.rs (100%) rename {src/test => tests}/ui/nullable-pointer-size.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/arith-unsigned.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/div-mod.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/divide-by-zero.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float-int-invalid-const-cast.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float-literal-inference.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float-nan.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float-signature.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float2.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/float_math.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/floatlits.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/i128.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/i32-sub.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/i8-incr.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/int-abs-overflow.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/int.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/integer-literal-radix.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/integer-literal-suffix-inference-2.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/integer-literal-suffix-inference-3.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/integer-literal-suffix-inference.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/issue-8460-const.noopt.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/issue-8460-const.opt.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/issue-8460-const.opt_with_overflow_checks.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/issue-8460-const.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/issue-8460.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/mod-zero.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/next-power-of-two-overflow-ndebug.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/not-suggest-float-literal.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/not-suggest-float-literal.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/num-wrapping.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/numeric-method-autoexport.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-add.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-1.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-1.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-2.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-2.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-3.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-3.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-4.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-lsh-4.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-mul.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-neg.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-pow-signed.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-pow-unsigned.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-1.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-1.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-2.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-2.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-3.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-3.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-4.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-4.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-5.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-5.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-6.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-rsh-6.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/overflowing-sub.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/promoted_overflow.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/promoted_overflow_opt.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/saturating-float-casts-impl.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/saturating-float-casts-wasm.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/saturating-float-casts.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/shift-near-oflo.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/shift-various-types.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/shift.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/signed-shift-const-eval.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/suggest-float-literal.fixed (100%) rename {src/test => tests}/ui/numbers-arithmetic/suggest-float-literal.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/suggest-float-literal.stderr (100%) rename {src/test => tests}/ui/numbers-arithmetic/u128-as-f32.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/u128.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/u32-decr.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/u8-incr-decr.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/u8-incr.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/uint.rs (100%) rename {src/test => tests}/ui/numbers-arithmetic/unary-minus-suffix-inference.rs (100%) rename {src/test => tests}/ui/numeric/const-scope.rs (100%) rename {src/test => tests}/ui/numeric/const-scope.stderr (100%) rename {src/test => tests}/ui/numeric/integer-literal-suffix-inference.rs (100%) rename {src/test => tests}/ui/numeric/integer-literal-suffix-inference.stderr (100%) rename {src/test => tests}/ui/numeric/len.rs (100%) rename {src/test => tests}/ui/numeric/len.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-cast-2.rs (100%) rename {src/test => tests}/ui/numeric/numeric-cast-2.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-cast-binop.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-cast-binop.rs (100%) rename {src/test => tests}/ui/numeric/numeric-cast-binop.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-cast-no-fix.rs (100%) rename {src/test => tests}/ui/numeric/numeric-cast-no-fix.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-cast-without-suggestion.rs (100%) rename {src/test => tests}/ui/numeric/numeric-cast-without-suggestion.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-cast.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-cast.rs (100%) rename {src/test => tests}/ui/numeric/numeric-cast.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-fields.rs (100%) rename {src/test => tests}/ui/numeric/numeric-fields.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i32.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i32.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i64.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i64.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-isize.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-isize.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u32.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u32.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u64.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u64.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-usize.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-usize.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix.fixed (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix.rs (100%) rename {src/test => tests}/ui/numeric/numeric-suffix/numeric-suffix.stderr (100%) rename {src/test => tests}/ui/numeric/uppercase-base-prefix-invalid-no-fix.rs (100%) rename {src/test => tests}/ui/numeric/uppercase-base-prefix-invalid-no-fix.stderr (100%) rename {src/test => tests}/ui/numeric/uppercase-base-prefix.fixed (100%) rename {src/test => tests}/ui/numeric/uppercase-base-prefix.rs (100%) rename {src/test => tests}/ui/numeric/uppercase-base-prefix.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-ambiguous.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-ambiguous.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-default-to-static.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-elision.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-elision.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-box-error.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-box-error.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-ref-struct.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-box.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-mut.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr-struct.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-from-rptr.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-inferred.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-mybox.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default-mybox.stderr (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default.rs (100%) rename {src/test => tests}/ui/object-lifetime/object-lifetime-default.stderr (100%) rename {src/test => tests}/ui/object-pointer-types.rs (100%) rename {src/test => tests}/ui/object-pointer-types.stderr (100%) rename {src/test => tests}/ui/object-safety/issue-102762.rs (100%) rename {src/test => tests}/ui/object-safety/issue-102762.stderr (100%) rename {src/test => tests}/ui/object-safety/issue-102933.rs (100%) rename {src/test => tests}/ui/object-safety/issue-106247.rs (100%) rename {src/test => tests}/ui/object-safety/issue-19538.rs (100%) rename {src/test => tests}/ui/object-safety/issue-19538.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-associated-consts.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-associated-consts.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-associated-consts.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-bounds.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-bounds.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-by-value-self-use.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-by-value-self-use.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-by-value-self.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-generics.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-generics.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-generics.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-issue-22040.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-issue-22040.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-mentions-Self.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-mentions-Self.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-mentions-Self.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-no-static.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-no-static.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-no-static.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-phantom-fn.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized-2.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized-2.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized-2.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized.curr.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-sized.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-supertrait-mentions-GAT.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-supertrait-mentions-GAT.stderr (100%) rename {src/test => tests}/ui/object-safety/object-safety-supertrait-mentions-Self.rs (100%) rename {src/test => tests}/ui/object-safety/object-safety-supertrait-mentions-Self.stderr (100%) rename {src/test => tests}/ui/objects-coerce-freeze-borrored.rs (100%) rename {src/test => tests}/ui/obsolete-in-place/bad.rs (100%) rename {src/test => tests}/ui/obsolete-in-place/bad.stderr (100%) rename {src/test => tests}/ui/occurs-check-2.rs (100%) rename {src/test => tests}/ui/occurs-check-2.stderr (100%) rename {src/test => tests}/ui/occurs-check-3.rs (100%) rename {src/test => tests}/ui/occurs-check-3.stderr (100%) rename {src/test => tests}/ui/occurs-check.rs (100%) rename {src/test => tests}/ui/occurs-check.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/auxiliary/no_debug.rs (100%) rename {src/test => tests}/ui/on-unimplemented/bad-annotation.rs (100%) rename {src/test => tests}/ui/on-unimplemented/bad-annotation.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/expected-comma-found-token.rs (100%) rename {src/test => tests}/ui/on-unimplemented/expected-comma-found-token.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/feature-gate-on-unimplemented.rs (100%) rename {src/test => tests}/ui/on-unimplemented/feature-gate-on-unimplemented.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/impl-substs.rs (100%) rename {src/test => tests}/ui/on-unimplemented/impl-substs.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/issue-104140.rs (100%) rename {src/test => tests}/ui/on-unimplemented/issue-104140.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/multiple-impls.rs (100%) rename {src/test => tests}/ui/on-unimplemented/multiple-impls.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/no-debug.rs (100%) rename {src/test => tests}/ui/on-unimplemented/no-debug.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/on-impl.rs (100%) rename {src/test => tests}/ui/on-unimplemented/on-impl.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/on-trait.rs (100%) rename {src/test => tests}/ui/on-unimplemented/on-trait.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/parent-label.rs (100%) rename {src/test => tests}/ui/on-unimplemented/parent-label.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/slice-index.rs (100%) rename {src/test => tests}/ui/on-unimplemented/slice-index.stderr (100%) rename {src/test => tests}/ui/on-unimplemented/sum.rs (100%) rename {src/test => tests}/ui/on-unimplemented/sum.stderr (100%) rename {src/test => tests}/ui/once-cant-call-twice-on-heap.rs (100%) rename {src/test => tests}/ui/once-cant-call-twice-on-heap.stderr (100%) rename {src/test => tests}/ui/oom_unwind.rs (100%) rename {src/test => tests}/ui/op-assign-builtins-by-ref.rs (100%) rename {src/test => tests}/ui/opeq.rs (100%) rename {src/test => tests}/ui/operator-recovery/less-than-greater-than.rs (100%) rename {src/test => tests}/ui/operator-recovery/less-than-greater-than.stderr (100%) rename {src/test => tests}/ui/operator-recovery/spaceship.rs (100%) rename {src/test => tests}/ui/operator-recovery/spaceship.stderr (100%) rename {src/test => tests}/ui/opt-in-copy.rs (100%) rename {src/test => tests}/ui/opt-in-copy.stderr (100%) rename {src/test => tests}/ui/optimization-fuel-0.rs (100%) rename {src/test => tests}/ui/optimization-fuel-0.stderr (100%) rename {src/test => tests}/ui/optimization-fuel-1.rs (100%) rename {src/test => tests}/ui/optimization-fuel-1.stderr (100%) rename {src/test => tests}/ui/optimization-remark.rs (100%) rename {src/test => tests}/ui/or-patterns/already-bound-name.rs (100%) rename {src/test => tests}/ui/or-patterns/already-bound-name.stderr (100%) rename {src/test => tests}/ui/or-patterns/basic-switch.rs (100%) rename {src/test => tests}/ui/or-patterns/basic-switchint.rs (100%) rename {src/test => tests}/ui/or-patterns/bindings-runpass-1.rs (100%) rename {src/test => tests}/ui/or-patterns/bindings-runpass-2.rs (100%) rename {src/test => tests}/ui/or-patterns/box-patterns.rs (100%) rename {src/test => tests}/ui/or-patterns/consistent-bindings.rs (100%) rename {src/test => tests}/ui/or-patterns/const-fn.rs (100%) rename {src/test => tests}/ui/or-patterns/exhaustiveness-non-exhaustive.rs (100%) rename {src/test => tests}/ui/or-patterns/exhaustiveness-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/or-patterns/exhaustiveness-pass.rs (100%) rename {src/test => tests}/ui/or-patterns/exhaustiveness-unreachable-pattern.rs (100%) rename {src/test => tests}/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr (100%) rename {src/test => tests}/ui/or-patterns/fn-param-wrap-parens.fixed (100%) rename {src/test => tests}/ui/or-patterns/fn-param-wrap-parens.rs (100%) rename {src/test => tests}/ui/or-patterns/fn-param-wrap-parens.stderr (100%) rename {src/test => tests}/ui/or-patterns/for-loop.rs (100%) rename {src/test => tests}/ui/or-patterns/if-let-while-let.rs (100%) rename {src/test => tests}/ui/or-patterns/inconsistent-modes.rs (100%) rename {src/test => tests}/ui/or-patterns/inconsistent-modes.stderr (100%) rename {src/test => tests}/ui/or-patterns/inner-or-pat.or3.stderr (100%) rename {src/test => tests}/ui/or-patterns/inner-or-pat.or4.stderr (100%) rename {src/test => tests}/ui/or-patterns/inner-or-pat.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-64879-trailing-before-guard.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-64879-trailing-before-guard.stderr (100%) rename {src/test => tests}/ui/or-patterns/issue-67514-irrefutable-param.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-68785-irrefutable-param-with-at.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs (100%) rename {src/test => tests}/ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs (100%) rename {src/test => tests}/ui/or-patterns/let-pattern.rs (100%) rename {src/test => tests}/ui/or-patterns/macro-pat.rs (100%) rename {src/test => tests}/ui/or-patterns/mismatched-bindings-async-fn.rs (100%) rename {src/test => tests}/ui/or-patterns/mismatched-bindings-async-fn.stderr (100%) rename {src/test => tests}/ui/or-patterns/missing-bindings.rs (100%) rename {src/test => tests}/ui/or-patterns/missing-bindings.stderr (100%) rename {src/test => tests}/ui/or-patterns/mix-with-wild.rs (100%) rename {src/test => tests}/ui/or-patterns/multiple-pattern-typo.rs (100%) rename {src/test => tests}/ui/or-patterns/multiple-pattern-typo.stderr (100%) rename {src/test => tests}/ui/or-patterns/nested-undelimited-precedence.rs (100%) rename {src/test => tests}/ui/or-patterns/nested-undelimited-precedence.stderr (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-binding-type-mismatch.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-binding-type-mismatch.stderr (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-default-binding-modes.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-fail-2018.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-fail-2018.stderr (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-fail.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-fail.stderr (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-pass-2021.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-pass.rs (100%) rename {src/test => tests}/ui/or-patterns/or-patterns-syntactic-pass.stderr (100%) rename {src/test => tests}/ui/or-patterns/remove-leading-vert.fixed (100%) rename {src/test => tests}/ui/or-patterns/remove-leading-vert.rs (100%) rename {src/test => tests}/ui/or-patterns/remove-leading-vert.stderr (100%) rename {src/test => tests}/ui/or-patterns/search-via-bindings.rs (100%) rename {src/test => tests}/ui/or-patterns/slice-patterns.rs (100%) rename {src/test => tests}/ui/or-patterns/struct-like.rs (100%) rename {src/test => tests}/ui/or-patterns/while-parsing-this-or-pattern.rs (100%) rename {src/test => tests}/ui/or-patterns/while-parsing-this-or-pattern.stderr (100%) rename {src/test => tests}/ui/order-dependent-cast-inference.rs (100%) rename {src/test => tests}/ui/order-dependent-cast-inference.stderr (100%) rename {src/test => tests}/ui/orphan-check-diagnostics.rs (100%) rename {src/test => tests}/ui/orphan-check-diagnostics.stderr (100%) rename {src/test => tests}/ui/osx-frameworks.rs (100%) rename {src/test => tests}/ui/osx-frameworks.stderr (100%) rename {src/test => tests}/ui/out-pointer-aliasing.rs (100%) rename {src/test => tests}/ui/output-slot-variants.rs (100%) rename {src/test => tests}/ui/output-type-mismatch.rs (100%) rename {src/test => tests}/ui/output-type-mismatch.stderr (100%) rename {src/test => tests}/ui/over-constrained-vregs.rs (100%) rename {src/test => tests}/ui/overloaded/auxiliary/overloaded_autoderef_xc.rs (100%) rename {src/test => tests}/ui/overloaded/fixup-deref-mut.rs (100%) rename {src/test => tests}/ui/overloaded/issue-14958.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef-count.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef-indexing.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef-order.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef-vtable.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef-xcrate.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-autoderef.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-nontuple.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-nontuple.stderr (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-object-one-arg.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-object-two-args.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-object-zero-args.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-param-vtables.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-simple.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-calls-zero-args.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-deref-count.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-deref.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-index-assoc-list.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-index-autoderef.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-index-in-field.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded-index.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded_deref_with_ref_pattern.rs (100%) rename {src/test => tests}/ui/overloaded/overloaded_deref_with_ref_pattern_issue15609.rs (100%) rename {src/test => tests}/ui/packed-struct/packed-struct-generic-transmute.rs (100%) rename {src/test => tests}/ui/packed-struct/packed-struct-generic-transmute.stderr (100%) rename {src/test => tests}/ui/packed-struct/packed-struct-transmute.rs (100%) rename {src/test => tests}/ui/packed-struct/packed-struct-transmute.stderr (100%) rename {src/test => tests}/ui/packed/auxiliary/packed.rs (100%) rename {src/test => tests}/ui/packed/issue-27060-2.rs (100%) rename {src/test => tests}/ui/packed/issue-27060-2.stderr (100%) rename {src/test => tests}/ui/packed/issue-27060-rpass.rs (100%) rename {src/test => tests}/ui/packed/issue-27060-rpass.stderr (100%) rename {src/test => tests}/ui/packed/issue-27060.rs (100%) rename {src/test => tests}/ui/packed/issue-27060.stderr (100%) rename {src/test => tests}/ui/packed/issue-46152.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-address-of-element.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-borrow-element-64bit.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-borrow-element-64bit.stderr (100%) rename {src/test => tests}/ui/packed/packed-struct-borrow-element.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-borrow-element.stderr (100%) rename {src/test => tests}/ui/packed/packed-struct-drop-aligned.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-generic-layout.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-generic-size.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-layout.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-match.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-optimized-enum.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-size-xc.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-size.rs (100%) rename {src/test => tests}/ui/packed/packed-struct-vec.rs (100%) rename {src/test => tests}/ui/packed/packed-tuple-struct-layout.rs (100%) rename {src/test => tests}/ui/packed/packed-tuple-struct-size.rs (100%) rename {src/test => tests}/ui/packed/packed-with-inference-vars-issue-61402.rs (100%) rename {src/test => tests}/ui/panic-handler/auxiliary/some-panic-impl.rs (100%) rename {src/test => tests}/ui/panic-handler/auxiliary/weak-lang-items.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-1.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-1.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-2.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-2.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-3.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-3.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-4.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-bad-signature-4.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-duplicate.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-duplicate.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-missing.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-requires-panic-info.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-requires-panic-info.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-std.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-std.stderr (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-twice.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-wrong-location.rs (100%) rename {src/test => tests}/ui/panic-handler/panic-handler-wrong-location.stderr (100%) rename {src/test => tests}/ui/panic-handler/weak-lang-item-2.rs (100%) rename {src/test => tests}/ui/panic-handler/weak-lang-item.rs (100%) rename {src/test => tests}/ui/panic-handler/weak-lang-item.stderr (100%) rename {src/test => tests}/ui/panic-runtime/abort-link-to-unwind-dylib.rs (100%) rename {src/test => tests}/ui/panic-runtime/abort-link-to-unwind-dylib.stderr (100%) rename {src/test => tests}/ui/panic-runtime/abort-link-to-unwinding-crates.rs (100%) rename {src/test => tests}/ui/panic-runtime/abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/depends.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/exit-success-if-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/needs-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/needs-panic-runtime.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/needs-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/panic-runtime-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/panic-runtime-lang-items.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/panic-runtime-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/panic-runtime-unwind2.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/wants-panic-runtime-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/auxiliary/wants-panic-runtime-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/bad-panic-flag1.rs (100%) rename {src/test => tests}/ui/panic-runtime/bad-panic-flag1.stderr (100%) rename {src/test => tests}/ui/panic-runtime/bad-panic-flag2.rs (100%) rename {src/test => tests}/ui/panic-runtime/bad-panic-flag2.stderr (100%) rename {src/test => tests}/ui/panic-runtime/incompatible-type.rs (100%) rename {src/test => tests}/ui/panic-runtime/link-to-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/link-to-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/lto-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/lto-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/need-abort-got-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/need-abort-got-unwind.stderr (100%) rename {src/test => tests}/ui/panic-runtime/need-unwind-got-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/need-unwind-got-abort.stderr (100%) rename {src/test => tests}/ui/panic-runtime/needs-gate.rs (100%) rename {src/test => tests}/ui/panic-runtime/needs-gate.stderr (100%) rename {src/test => tests}/ui/panic-runtime/runtime-depend-on-needs-runtime.rs (100%) rename {src/test => tests}/ui/panic-runtime/transitive-link-a-bunch.rs (100%) rename {src/test => tests}/ui/panic-runtime/transitive-link-a-bunch.stderr (100%) rename {src/test => tests}/ui/panic-runtime/two-panic-runtimes.rs (100%) rename {src/test => tests}/ui/panic-runtime/unwind-interleaved.rs (100%) rename {src/test => tests}/ui/panic-runtime/unwind-rec.rs (100%) rename {src/test => tests}/ui/panic-runtime/unwind-rec2.rs (100%) rename {src/test => tests}/ui/panic-runtime/unwind-tables-target-required.rs (100%) rename {src/test => tests}/ui/panic-runtime/unwind-unique.rs (100%) rename {src/test => tests}/ui/panic-runtime/want-abort-got-unwind.rs (100%) rename {src/test => tests}/ui/panic-runtime/want-abort-got-unwind2.rs (100%) rename {src/test => tests}/ui/panic-runtime/want-unwind-got-abort.rs (100%) rename {src/test => tests}/ui/panic-runtime/want-unwind-got-abort.stderr (100%) rename {src/test => tests}/ui/panic-runtime/want-unwind-got-abort2.rs (100%) rename {src/test => tests}/ui/panic-runtime/want-unwind-got-abort2.stderr (100%) rename {src/test => tests}/ui/panic-while-printing.rs (100%) rename {src/test => tests}/ui/panic_implementation-closures.rs (100%) rename {src/test => tests}/ui/panics/abort-on-panic.rs (100%) rename {src/test => tests}/ui/panics/args-panic.rs (100%) rename {src/test => tests}/ui/panics/default-backtrace-ice.rs (100%) rename {src/test => tests}/ui/panics/default-backtrace-ice.stderr (100%) rename {src/test => tests}/ui/panics/doublepanic.rs (100%) rename {src/test => tests}/ui/panics/explicit-panic-msg.rs (100%) rename {src/test => tests}/ui/panics/explicit-panic.rs (100%) rename {src/test => tests}/ui/panics/fmt-panic.rs (100%) rename {src/test => tests}/ui/panics/issue-47429-short-backtraces.legacy.run.stderr (100%) rename {src/test => tests}/ui/panics/issue-47429-short-backtraces.rs (100%) rename {src/test => tests}/ui/panics/issue-47429-short-backtraces.v0.run.stderr (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-column.rs (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-column.run.stderr (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-file.rs (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-file.run.stderr (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-line.rs (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-line.run.stderr (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-location-info.rs (100%) rename {src/test => tests}/ui/panics/location-detail-panic-no-location-info.run.stderr (100%) rename {src/test => tests}/ui/panics/location-detail-unwrap-no-file.rs (100%) rename {src/test => tests}/ui/panics/location-detail-unwrap-no-file.run.stderr (100%) rename {src/test => tests}/ui/panics/main-panic.rs (100%) rename {src/test => tests}/ui/panics/panic-2021.rs (100%) rename {src/test => tests}/ui/panics/panic-2021.stderr (100%) rename {src/test => tests}/ui/panics/panic-arg.rs (100%) rename {src/test => tests}/ui/panics/panic-handler-chain-update-hook.rs (100%) rename {src/test => tests}/ui/panics/panic-handler-chain.rs (100%) rename {src/test => tests}/ui/panics/panic-handler-flail-wildly.rs (100%) rename {src/test => tests}/ui/panics/panic-handler-set-twice.rs (100%) rename {src/test => tests}/ui/panics/panic-in-dtor-drops-fields.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-any-wrapped.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-any.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-explicit.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-fmt.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-owned.rs (100%) rename {src/test => tests}/ui/panics/panic-macro-static.rs (100%) rename {src/test => tests}/ui/panics/panic-main.rs (100%) rename {src/test => tests}/ui/panics/panic-parens.rs (100%) rename {src/test => tests}/ui/panics/panic-recover-propagate.rs (100%) rename {src/test => tests}/ui/panics/panic-set-handler.rs (100%) rename {src/test => tests}/ui/panics/panic-set-unset-handler.rs (100%) rename {src/test => tests}/ui/panics/panic-short-backtrace-windows-x86_64.rs (100%) rename {src/test => tests}/ui/panics/panic-short-backtrace-windows-x86_64.run.stderr (100%) rename {src/test => tests}/ui/panics/panic-take-handler-nop.rs (100%) rename {src/test => tests}/ui/panics/panic-task-name-none.rs (100%) rename {src/test => tests}/ui/panics/panic-task-name-owned.rs (100%) rename {src/test => tests}/ui/panics/panic.rs (100%) rename {src/test => tests}/ui/panics/result-get-panic.rs (100%) rename {src/test => tests}/ui/panics/runtime-switch.legacy.run.stderr (100%) rename {src/test => tests}/ui/panics/runtime-switch.rs (100%) rename {src/test => tests}/ui/panics/runtime-switch.v0.run.stderr (100%) rename {src/test => tests}/ui/panics/test-panic.rs (100%) rename {src/test => tests}/ui/panics/test-should-fail-bad-message.rs (100%) rename {src/test => tests}/ui/panics/test-should-panic-bad-message.rs (100%) rename {src/test => tests}/ui/panics/test-should-panic-no-message.rs (100%) rename {src/test => tests}/ui/panics/unique-panic.rs (100%) rename {src/test => tests}/ui/panics/while-body-panics.rs (100%) rename {src/test => tests}/ui/panics/while-panic.rs (100%) rename {src/test => tests}/ui/paren-span.rs (100%) rename {src/test => tests}/ui/paren-span.stderr (100%) rename {src/test => tests}/ui/parser/ascii-only-character-escape.rs (100%) rename {src/test => tests}/ui/parser/ascii-only-character-escape.stderr (100%) rename {src/test => tests}/ui/parser/assoc-const-underscore-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/assoc-const-underscore-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/assoc-const-underscore-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/assoc-oddities-1.rs (100%) rename {src/test => tests}/ui/parser/assoc-oddities-1.stderr (100%) rename {src/test => tests}/ui/parser/assoc-oddities-2.rs (100%) rename {src/test => tests}/ui/parser/assoc-oddities-2.stderr (100%) rename {src/test => tests}/ui/parser/assoc-static-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/assoc-static-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/assoc-static-syntactic-fail.rs (100%) rename {src/test => tests}/ui/parser/assoc-static-syntactic-fail.stderr (100%) rename {src/test => tests}/ui/parser/assoc-type-in-type-arg.rs (100%) rename {src/test => tests}/ui/parser/assoc-type-in-type-arg.stderr (100%) rename {src/test => tests}/ui/parser/associated-types-project-from-hrtb-explicit.rs (100%) rename {src/test => tests}/ui/parser/associated-types-project-from-hrtb-explicit.stderr (100%) rename {src/test => tests}/ui/parser/attr-bad-meta-2.rs (100%) rename {src/test => tests}/ui/parser/attr-bad-meta-2.stderr (100%) rename {src/test => tests}/ui/parser/attr-bad-meta-3.rs (100%) rename {src/test => tests}/ui/parser/attr-bad-meta-3.stderr (100%) rename {src/test => tests}/ui/parser/attr-bad-meta.rs (100%) rename {src/test => tests}/ui/parser/attr-bad-meta.stderr (100%) rename {src/test => tests}/ui/parser/attr-before-eof.rs (100%) rename {src/test => tests}/ui/parser/attr-before-eof.stderr (100%) rename {src/test => tests}/ui/parser/attr-dangling-in-fn.rs (100%) rename {src/test => tests}/ui/parser/attr-dangling-in-fn.stderr (100%) rename {src/test => tests}/ui/parser/attr-dangling-in-mod.rs (100%) rename {src/test => tests}/ui/parser/attr-dangling-in-mod.stderr (100%) rename {src/test => tests}/ui/parser/attr-stmt-expr-attr-bad.rs (100%) rename {src/test => tests}/ui/parser/attr-stmt-expr-attr-bad.stderr (100%) rename {src/test => tests}/ui/parser/attr-with-a-semicolon.rs (100%) rename {src/test => tests}/ui/parser/attr-with-a-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/attr.rs (100%) rename {src/test => tests}/ui/parser/attr.stderr (100%) rename {src/test => tests}/ui/parser/attribute-with-no-generics-in-parameter-list.rs (100%) rename {src/test => tests}/ui/parser/attribute-with-no-generics-in-parameter-list.stderr (100%) rename {src/test => tests}/ui/parser/attrs-after-extern-mod.rs (100%) rename {src/test => tests}/ui/parser/attrs-after-extern-mod.stderr (100%) rename {src/test => tests}/ui/parser/bad-char-literals.rs (100%) rename {src/test => tests}/ui/parser/bad-char-literals.stderr (100%) rename {src/test => tests}/ui/parser/bad-crate-name.rs (100%) rename {src/test => tests}/ui/parser/bad-crate-name.stderr (100%) rename {src/test => tests}/ui/parser/bad-escape-suggest-raw-string.rs (100%) rename {src/test => tests}/ui/parser/bad-escape-suggest-raw-string.stderr (100%) rename {src/test => tests}/ui/parser/bad-fn-ptr-qualifier.fixed (100%) rename {src/test => tests}/ui/parser/bad-fn-ptr-qualifier.rs (100%) rename {src/test => tests}/ui/parser/bad-fn-ptr-qualifier.stderr (100%) rename {src/test => tests}/ui/parser/bad-if-statements.rs (100%) rename {src/test => tests}/ui/parser/bad-if-statements.stderr (100%) rename {src/test => tests}/ui/parser/bad-interpolated-block.rs (100%) rename {src/test => tests}/ui/parser/bad-interpolated-block.stderr (100%) rename {src/test => tests}/ui/parser/bad-let-as-field.rs (100%) rename {src/test => tests}/ui/parser/bad-let-as-field.stderr (100%) rename {src/test => tests}/ui/parser/bad-lit-suffixes.rs (100%) rename {src/test => tests}/ui/parser/bad-lit-suffixes.stderr (100%) rename {src/test => tests}/ui/parser/bad-match.rs (100%) rename {src/test => tests}/ui/parser/bad-match.stderr (100%) rename {src/test => tests}/ui/parser/bad-name.rs (100%) rename {src/test => tests}/ui/parser/bad-name.stderr (100%) rename {src/test => tests}/ui/parser/bad-pointer-type.rs (100%) rename {src/test => tests}/ui/parser/bad-pointer-type.stderr (100%) rename {src/test => tests}/ui/parser/bad-struct-following-where.rs (100%) rename {src/test => tests}/ui/parser/bad-struct-following-where.stderr (100%) rename {src/test => tests}/ui/parser/bad-value-ident-false.rs (100%) rename {src/test => tests}/ui/parser/bad-value-ident-false.stderr (100%) rename {src/test => tests}/ui/parser/bad-value-ident-true.rs (100%) rename {src/test => tests}/ui/parser/bad-value-ident-true.stderr (100%) rename {src/test => tests}/ui/parser/bare-struct-body.rs (100%) rename {src/test => tests}/ui/parser/bare-struct-body.stderr (100%) rename {src/test => tests}/ui/parser/bastion-of-the-turbofish.rs (100%) rename {src/test => tests}/ui/parser/better-expected.rs (100%) rename {src/test => tests}/ui/parser/better-expected.stderr (100%) rename {src/test => tests}/ui/parser/bind-struct-early-modifiers.rs (100%) rename {src/test => tests}/ui/parser/bind-struct-early-modifiers.stderr (100%) rename {src/test => tests}/ui/parser/block-no-opening-brace.rs (100%) rename {src/test => tests}/ui/parser/block-no-opening-brace.stderr (100%) rename {src/test => tests}/ui/parser/bound-single-question-mark.rs (100%) rename {src/test => tests}/ui/parser/bound-single-question-mark.stderr (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-1.rs (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-1.stderr (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-2.rs (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-2.stderr (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-where-1.rs (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-where-1.stderr (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-where.rs (100%) rename {src/test => tests}/ui/parser/bounds-lifetime-where.stderr (100%) rename {src/test => tests}/ui/parser/bounds-lifetime.rs (100%) rename {src/test => tests}/ui/parser/bounds-lifetime.stderr (100%) rename {src/test => tests}/ui/parser/bounds-obj-parens.rs (100%) rename {src/test => tests}/ui/parser/bounds-type-where.rs (100%) rename {src/test => tests}/ui/parser/bounds-type-where.stderr (100%) rename {src/test => tests}/ui/parser/bounds-type.rs (100%) rename {src/test => tests}/ui/parser/bounds-type.stderr (100%) rename {src/test => tests}/ui/parser/byte-literals.rs (100%) rename {src/test => tests}/ui/parser/byte-literals.stderr (100%) rename {src/test => tests}/ui/parser/byte-string-literals.rs (100%) rename {src/test => tests}/ui/parser/byte-string-literals.stderr (100%) rename {src/test => tests}/ui/parser/can-begin-expr-check.rs (100%) rename {src/test => tests}/ui/parser/can-begin-expr-check.stderr (100%) rename {src/test => tests}/ui/parser/chained-comparison-suggestion.rs (100%) rename {src/test => tests}/ui/parser/chained-comparison-suggestion.stderr (100%) rename {src/test => tests}/ui/parser/char/whitespace-character-literal.rs (100%) rename {src/test => tests}/ui/parser/char/whitespace-character-literal.stderr (100%) rename {src/test => tests}/ui/parser/circular_modules_hello.rs (100%) rename {src/test => tests}/ui/parser/circular_modules_main.rs (100%) rename {src/test => tests}/ui/parser/circular_modules_main.stderr (100%) rename {src/test => tests}/ui/parser/class-implements-bad-trait.rs (100%) rename {src/test => tests}/ui/parser/class-implements-bad-trait.stderr (100%) rename {src/test => tests}/ui/parser/closure-return-syntax.rs (100%) rename {src/test => tests}/ui/parser/closure-return-syntax.stderr (100%) rename {src/test => tests}/ui/parser/column-offset-1-based.rs (100%) rename {src/test => tests}/ui/parser/column-offset-1-based.stderr (100%) rename {src/test => tests}/ui/parser/const-param-decl-on-type-instead-of-impl.rs (100%) rename {src/test => tests}/ui/parser/const-param-decl-on-type-instead-of-impl.stderr (100%) rename {src/test => tests}/ui/parser/constraints-before-generic-args-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/constraints-before-generic-args-syntactic-pass.stderr (100%) rename {src/test => tests}/ui/parser/default-on-wrong-item-kind.rs (100%) rename {src/test => tests}/ui/parser/default-on-wrong-item-kind.stderr (100%) rename {src/test => tests}/ui/parser/default-unmatched-assoc.rs (100%) rename {src/test => tests}/ui/parser/default-unmatched-assoc.stderr (100%) rename {src/test => tests}/ui/parser/default-unmatched-extern.rs (100%) rename {src/test => tests}/ui/parser/default-unmatched-extern.stderr (100%) rename {src/test => tests}/ui/parser/default-unmatched.rs (100%) rename {src/test => tests}/ui/parser/default-unmatched.stderr (100%) rename {src/test => tests}/ui/parser/default.rs (100%) rename {src/test => tests}/ui/parser/default.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/enum-2.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/enum-2.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/enum.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/enum.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/fn-arg.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/fn-arg.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/item-with-attr.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/item-with-attr.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/item.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/item.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/statement.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/statement.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/struct-expr.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/struct-expr.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/struct.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/struct.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/trait-item.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/trait-item.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/tuple-struct.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/tuple-struct.stderr (100%) rename {src/test => tests}/ui/parser/diff-markers/use-statement.rs (100%) rename {src/test => tests}/ui/parser/diff-markers/use-statement.stderr (100%) rename {src/test => tests}/ui/parser/do-catch-suggests-try.rs (100%) rename {src/test => tests}/ui/parser/do-catch-suggests-try.stderr (100%) rename {src/test => tests}/ui/parser/do-not-suggest-semicolon-before-array.rs (100%) rename {src/test => tests}/ui/parser/do-not-suggest-semicolon-before-array.stderr (100%) rename {src/test => tests}/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs (100%) rename {src/test => tests}/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr (100%) rename {src/test => tests}/ui/parser/doc-after-struct-field.rs (100%) rename {src/test => tests}/ui/parser/doc-after-struct-field.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-attr.rs (100%) rename {src/test => tests}/ui/parser/doc-before-attr.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-eof.rs (100%) rename {src/test => tests}/ui/parser/doc-before-eof.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-extern-rbrace.rs (100%) rename {src/test => tests}/ui/parser/doc-before-extern-rbrace.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-fn-rbrace.rs (100%) rename {src/test => tests}/ui/parser/doc-before-fn-rbrace.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-identifier.rs (100%) rename {src/test => tests}/ui/parser/doc-before-identifier.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-mod-rbrace.rs (100%) rename {src/test => tests}/ui/parser/doc-before-mod-rbrace.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-rbrace.rs (100%) rename {src/test => tests}/ui/parser/doc-before-rbrace.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-semi.rs (100%) rename {src/test => tests}/ui/parser/doc-before-semi.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-struct-rbrace-1.rs (100%) rename {src/test => tests}/ui/parser/doc-before-struct-rbrace-1.stderr (100%) rename {src/test => tests}/ui/parser/doc-before-struct-rbrace-2.rs (100%) rename {src/test => tests}/ui/parser/doc-before-struct-rbrace-2.stderr (100%) rename {src/test => tests}/ui/parser/doc-comment-in-if-statement.rs (100%) rename {src/test => tests}/ui/parser/doc-comment-in-if-statement.stderr (100%) rename {src/test => tests}/ui/parser/doc-comment-in-stmt.rs (100%) rename {src/test => tests}/ui/parser/doc-comment-in-stmt.stderr (100%) rename {src/test => tests}/ui/parser/doc-inside-trait-item.rs (100%) rename {src/test => tests}/ui/parser/doc-inside-trait-item.stderr (100%) rename {src/test => tests}/ui/parser/dotdotdot-expr.rs (100%) rename {src/test => tests}/ui/parser/dotdotdot-expr.stderr (100%) rename {src/test => tests}/ui/parser/double-pointer.rs (100%) rename {src/test => tests}/ui/parser/double-pointer.stderr (100%) rename {src/test => tests}/ui/parser/duplicate-visibility.rs (100%) rename {src/test => tests}/ui/parser/duplicate-visibility.stderr (100%) rename {src/test => tests}/ui/parser/duplicate-where-clauses.rs (100%) rename {src/test => tests}/ui/parser/duplicate-where-clauses.stderr (100%) rename {src/test => tests}/ui/parser/dyn-trait-compatibility.rs (100%) rename {src/test => tests}/ui/parser/dyn-trait-compatibility.stderr (100%) rename {src/test => tests}/ui/parser/else-no-if.rs (100%) rename {src/test => tests}/ui/parser/else-no-if.stderr (100%) rename {src/test => tests}/ui/parser/emoji-identifiers.rs (100%) rename {src/test => tests}/ui/parser/emoji-identifiers.stderr (100%) rename {src/test => tests}/ui/parser/empty-impl-semicolon.rs (100%) rename {src/test => tests}/ui/parser/empty-impl-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/expr-as-stmt-2.rs (100%) rename {src/test => tests}/ui/parser/expr-as-stmt-2.stderr (100%) rename {src/test => tests}/ui/parser/expr-as-stmt.fixed (100%) rename {src/test => tests}/ui/parser/expr-as-stmt.rs (100%) rename {src/test => tests}/ui/parser/expr-as-stmt.stderr (100%) rename {src/test => tests}/ui/parser/extern-abi-from-mac-literal-frag.rs (100%) rename {src/test => tests}/ui/parser/extern-abi-raw-strings.rs (100%) rename {src/test => tests}/ui/parser/extern-abi-string-escaping.rs (100%) rename {src/test => tests}/ui/parser/extern-abi-syntactic.rs (100%) rename {src/test => tests}/ui/parser/extern-crate-async.rs (100%) rename {src/test => tests}/ui/parser/extern-crate-unexpected-token.rs (100%) rename {src/test => tests}/ui/parser/extern-crate-unexpected-token.stderr (100%) rename {src/test => tests}/ui/parser/extern-expected-fn-or-brace.rs (100%) rename {src/test => tests}/ui/parser/extern-expected-fn-or-brace.stderr (100%) rename {src/test => tests}/ui/parser/extern-foreign-crate.rs (100%) rename {src/test => tests}/ui/parser/extern-foreign-crate.stderr (100%) rename {src/test => tests}/ui/parser/extern-no-fn.rs (100%) rename {src/test => tests}/ui/parser/extern-no-fn.stderr (100%) rename {src/test => tests}/ui/parser/float-field-interpolated.rs (100%) rename {src/test => tests}/ui/parser/float-field-interpolated.stderr (100%) rename {src/test => tests}/ui/parser/float-field.rs (100%) rename {src/test => tests}/ui/parser/float-field.stderr (100%) rename {src/test => tests}/ui/parser/float-literals.rs (100%) rename {src/test => tests}/ui/parser/fn-arg-doc-comment.rs (100%) rename {src/test => tests}/ui/parser/fn-arg-doc-comment.stderr (100%) rename {src/test => tests}/ui/parser/fn-body-eq-expr-semi.rs (100%) rename {src/test => tests}/ui/parser/fn-body-eq-expr-semi.stderr (100%) rename {src/test => tests}/ui/parser/fn-body-optional-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/fn-body-optional-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/fn-body-optional-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/fn-colon-return-type.rs (100%) rename {src/test => tests}/ui/parser/fn-colon-return-type.stderr (100%) rename {src/test => tests}/ui/parser/fn-defined-using-def.rs (100%) rename {src/test => tests}/ui/parser/fn-defined-using-def.stderr (100%) rename {src/test => tests}/ui/parser/fn-defined-using-fun.rs (100%) rename {src/test => tests}/ui/parser/fn-defined-using-fun.stderr (100%) rename {src/test => tests}/ui/parser/fn-defined-using-func.rs (100%) rename {src/test => tests}/ui/parser/fn-defined-using-func.stderr (100%) rename {src/test => tests}/ui/parser/fn-defined-using-function.rs (100%) rename {src/test => tests}/ui/parser/fn-defined-using-function.stderr (100%) rename {src/test => tests}/ui/parser/fn-field-parse-error-ice.rs (100%) rename {src/test => tests}/ui/parser/fn-field-parse-error-ice.stderr (100%) rename {src/test => tests}/ui/parser/fn-header-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/fn-header-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/fn-header-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/fn-returns-fn-pointer.rs (100%) rename {src/test => tests}/ui/parser/foreign-const-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/foreign-const-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/foreign-const-syntactic-fail.rs (100%) rename {src/test => tests}/ui/parser/foreign-const-syntactic-fail.stderr (100%) rename {src/test => tests}/ui/parser/foreign-static-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/foreign-static-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/foreign-static-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/foreign-ty-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/foreign-ty-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/foreign-ty-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/if-block-unreachable-expr.rs (100%) rename {src/test => tests}/ui/parser/if-in-in.fixed (100%) rename {src/test => tests}/ui/parser/if-in-in.rs (100%) rename {src/test => tests}/ui/parser/if-in-in.stderr (100%) rename {src/test => tests}/ui/parser/impl-item-const-pass.rs (100%) rename {src/test => tests}/ui/parser/impl-item-const-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/impl-item-const-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/impl-item-fn-no-body-pass.rs (100%) rename {src/test => tests}/ui/parser/impl-item-fn-no-body-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/impl-item-fn-no-body-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/impl-item-type-no-body-pass.rs (100%) rename {src/test => tests}/ui/parser/impl-item-type-no-body-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/impl-item-type-no-body-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/impl-parsing.rs (100%) rename {src/test => tests}/ui/parser/impl-parsing.stderr (100%) rename {src/test => tests}/ui/parser/impl-qpath.rs (100%) rename {src/test => tests}/ui/parser/import-from-path.rs (100%) rename {src/test => tests}/ui/parser/import-from-path.stderr (100%) rename {src/test => tests}/ui/parser/import-from-rename.rs (100%) rename {src/test => tests}/ui/parser/import-from-rename.stderr (100%) rename {src/test => tests}/ui/parser/import-glob-path.rs (100%) rename {src/test => tests}/ui/parser/import-glob-path.stderr (100%) rename {src/test => tests}/ui/parser/import-glob-rename.rs (100%) rename {src/test => tests}/ui/parser/import-glob-rename.stderr (100%) rename {src/test => tests}/ui/parser/increment-autofix-2.fixed (100%) rename {src/test => tests}/ui/parser/increment-autofix-2.rs (100%) rename {src/test => tests}/ui/parser/increment-autofix-2.stderr (100%) rename {src/test => tests}/ui/parser/increment-autofix.fixed (100%) rename {src/test => tests}/ui/parser/increment-autofix.rs (100%) rename {src/test => tests}/ui/parser/increment-autofix.stderr (100%) rename {src/test => tests}/ui/parser/inner-attr-after-doc-comment.rs (100%) rename {src/test => tests}/ui/parser/inner-attr-after-doc-comment.stderr (100%) rename {src/test => tests}/ui/parser/inner-attr-in-trait-def.rs (100%) rename {src/test => tests}/ui/parser/inner-attr.rs (100%) rename {src/test => tests}/ui/parser/inner-attr.stderr (100%) rename {src/test => tests}/ui/parser/int-literal-too-large-span.rs (100%) rename {src/test => tests}/ui/parser/int-literal-too-large-span.stderr (100%) rename {src/test => tests}/ui/parser/intersection-patterns-1.fixed (100%) rename {src/test => tests}/ui/parser/intersection-patterns-1.rs (100%) rename {src/test => tests}/ui/parser/intersection-patterns-1.stderr (100%) rename {src/test => tests}/ui/parser/intersection-patterns-2.rs (100%) rename {src/test => tests}/ui/parser/intersection-patterns-2.stderr (100%) rename {src/test => tests}/ui/parser/inverted-parameters.rs (100%) rename {src/test => tests}/ui/parser/inverted-parameters.stderr (100%) rename {src/test => tests}/ui/parser/issue-100197-mut-let.fixed (100%) rename {src/test => tests}/ui/parser/issue-100197-mut-let.rs (100%) rename {src/test => tests}/ui/parser/issue-100197-mut-let.stderr (100%) rename {src/test => tests}/ui/parser/issue-101477-enum.fixed (100%) rename {src/test => tests}/ui/parser/issue-101477-enum.rs (100%) rename {src/test => tests}/ui/parser/issue-101477-enum.stderr (100%) rename {src/test => tests}/ui/parser/issue-101477-let.fixed (100%) rename {src/test => tests}/ui/parser/issue-101477-let.rs (100%) rename {src/test => tests}/ui/parser/issue-101477-let.stderr (100%) rename {src/test => tests}/ui/parser/issue-102806.rs (100%) rename {src/test => tests}/ui/parser/issue-102806.stderr (100%) rename {src/test => tests}/ui/parser/issue-103143.rs (100%) rename {src/test => tests}/ui/parser/issue-103143.stderr (100%) rename {src/test => tests}/ui/parser/issue-103381.fixed (100%) rename {src/test => tests}/ui/parser/issue-103381.rs (100%) rename {src/test => tests}/ui/parser/issue-103381.stderr (100%) rename {src/test => tests}/ui/parser/issue-103425.rs (100%) rename {src/test => tests}/ui/parser/issue-103425.stderr (100%) rename {src/test => tests}/ui/parser/issue-103451.rs (100%) rename {src/test => tests}/ui/parser/issue-103451.stderr (100%) rename {src/test => tests}/ui/parser/issue-103748-ICE-wrong-braces.rs (100%) rename {src/test => tests}/ui/parser/issue-103748-ICE-wrong-braces.stderr (100%) rename {src/test => tests}/ui/parser/issue-103869.rs (100%) rename {src/test => tests}/ui/parser/issue-103869.stderr (100%) rename {src/test => tests}/ui/parser/issue-104620.rs (100%) rename {src/test => tests}/ui/parser/issue-104620.stderr (100%) rename {src/test => tests}/ui/parser/issue-104867-inc-dec-2.rs (100%) rename {src/test => tests}/ui/parser/issue-104867-inc-dec-2.stderr (100%) rename {src/test => tests}/ui/parser/issue-104867-inc-dec.rs (100%) rename {src/test => tests}/ui/parser/issue-104867-inc-dec.stderr (100%) rename {src/test => tests}/ui/parser/issue-105366.fixed (100%) rename {src/test => tests}/ui/parser/issue-105366.rs (100%) rename {src/test => tests}/ui/parser/issue-105366.stderr (100%) rename {src/test => tests}/ui/parser/issue-105634.rs (100%) rename {src/test => tests}/ui/parser/issue-17718-parse-const.rs (100%) rename {src/test => tests}/ui/parser/issue-39616.rs (100%) rename {src/test => tests}/ui/parser/issue-39616.stderr (100%) rename {src/test => tests}/ui/parser/issue-49257.rs (100%) rename {src/test => tests}/ui/parser/issue-49257.stderr (100%) rename {src/test => tests}/ui/parser/issue-61858.rs (100%) rename {src/test => tests}/ui/parser/issue-61858.stderr (100%) rename {src/test => tests}/ui/parser/issue-68091-unicode-ident-after-if.rs (100%) rename {src/test => tests}/ui/parser/issue-68091-unicode-ident-after-if.stderr (100%) rename {src/test => tests}/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.rs (100%) rename {src/test => tests}/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.stderr (100%) rename {src/test => tests}/ui/parser/issue-81804.rs (100%) rename {src/test => tests}/ui/parser/issue-81804.stderr (100%) rename {src/test => tests}/ui/parser/issue-81827.rs (100%) rename {src/test => tests}/ui/parser/issue-81827.stderr (100%) rename {src/test => tests}/ui/parser/issue-87694-duplicated-pub.rs (100%) rename {src/test => tests}/ui/parser/issue-87694-duplicated-pub.stderr (100%) rename {src/test => tests}/ui/parser/issue-87694-misplaced-pub.rs (100%) rename {src/test => tests}/ui/parser/issue-87694-misplaced-pub.stderr (100%) rename {src/test => tests}/ui/parser/issue-90728.rs (100%) rename {src/test => tests}/ui/parser/issue-90728.stderr (100%) rename {src/test => tests}/ui/parser/issue-91421.rs (100%) rename {src/test => tests}/ui/parser/issue-91421.stderr (100%) rename {src/test => tests}/ui/parser/issue-99625-enum-struct-mutually-exclusive.fixed (100%) rename {src/test => tests}/ui/parser/issue-99625-enum-struct-mutually-exclusive.rs (100%) rename {src/test => tests}/ui/parser/issue-99625-enum-struct-mutually-exclusive.stderr (100%) rename {src/test => tests}/ui/parser/issue-99910-const-let-mutually-exclusive.fixed (100%) rename {src/test => tests}/ui/parser/issue-99910-const-let-mutually-exclusive.rs (100%) rename {src/test => tests}/ui/parser/issue-99910-const-let-mutually-exclusive.stderr (100%) rename {src/test => tests}/ui/parser/issues/auxiliary/issue-21146-inc.rs (100%) rename {src/test => tests}/ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs (100%) rename {src/test => tests}/ui/parser/issues/auxiliary/issue-94340-inc.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-101540.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-101540.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-102182-impl-trait-recover.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-102182-impl-trait-recover.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-10392-2.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-10392-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-10392-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-10392.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-10392.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-104088.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-104088.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-10636-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-10636-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-10636-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-10636-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-13483.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-13483.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-14303-fncall.full.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-14303-fncall.generic_arg.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-14303-fncall.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-14303.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-14303.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-15914.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-15914.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-15980.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-15980.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-1655.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-1655.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-17718-const-mut.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-17718-const-mut.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-17904-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-17904-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-17904.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-17904.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-1802-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-1802-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-1802-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-1802-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-19096.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-19096.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-19398.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-19398.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-3.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-3.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-4.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-4.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-5.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-5.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-6.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-6.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-7.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-7.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-8.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-8.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-9.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20616-9.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20711-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20711-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-20711.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-20711.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-21146.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-21146.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-21153.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-21153.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-21475.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-22647.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-22647.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-22712.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-22712.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-2354-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-2354-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-2354.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-2354.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-23620-invalid-escapes.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-23620-invalid-escapes.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-24197.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-24197.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-24375.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-24375.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-24780.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-24780.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-27255.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-27255.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-30318.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-30318.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-30318.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-3036.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-3036.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-3036.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-31804.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-31804.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-32214.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-32214.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-32446.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-32446.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-32501.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-32501.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-32505.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-32505.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-33262.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-33262.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-33413.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-33413.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-33418.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-33418.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-33418.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-33455.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-33455.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-34222-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-34222-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-34255-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-34255-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-35813-postfix-after-cast.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-35813-postfix-after-cast.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-41155.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-41155.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-43196.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-43196.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-43692.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-43692.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-44021.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-44021.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-44406.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-44406.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-45296.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-45296.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-46186.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-46186.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-46186.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-48508-aux.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-48508.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-48636.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-48636.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-48636.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-49040.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-49040.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-51602.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-51602.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-52496.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-52496.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-2.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-3.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-3.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-54521-3.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-5544-a.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-5544-a.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-5544-b.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-5544-b.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-56031.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-56031.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-57198.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-57198.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-57684.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-57684.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-57684.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-57819.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-57819.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-57819.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-5806.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-5806.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-58094-missing-right-square-bracket.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-58094-missing-right-square-bracket.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-58856-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-58856-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-58856-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-58856-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-59418.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-59418.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-60075.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-60075.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62524.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62524.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62546.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62546.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62554.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62554.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62660.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62660.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62881.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62881.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62894.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62894.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62895.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62895.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62913.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62913.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-62973.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-62973.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-63115-range-pat-interpolated.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-63116.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-63116.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-63135.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-63135.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-64732.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-64732.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-6610.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-6610.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-66357-unexpected-unreachable.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-66357-unexpected-unreachable.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-66473.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-66473.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-68629.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68629.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-68730.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68730.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-68788-in-trait-item-propagation.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68890-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68890-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-68890.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-68890.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70388-without-witness.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-70388-without-witness.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70388-without-witness.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70552-ascription-in-parens-after-call.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70583-block-is-empty-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70583-block-is-empty-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-70583-block-is-empty-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-70583-block-is-empty-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-7222.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-72253.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-72253.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-72373.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-72373.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-73568-lifetime-after-mut.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-73568-lifetime-after-mut.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-75599.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-async.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-async.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const-async-unsafe.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const-async-unsafe.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const-async.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const-async.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-const.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-pub-crate-unsafe.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-pub-crate-unsafe.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-unsafe.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76437-unsafe.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-76597.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-76597.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-76597.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-7970b.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-7970b.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-81806.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-81806.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-83639.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-83639.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-84104.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-84104.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-84117.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-84117.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-84148-1.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-84148-1.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-84148-2.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-84148-2.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-8537.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-8537.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-86895.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-86895.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87086-colon-path-sep.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87086-colon-path-sep.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87197-missing-semicolon.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-87197-missing-semicolon.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87197-missing-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/const-async-const.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/const-async-const.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-async.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-async.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-const.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-const.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87635.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87635.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87812-path.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87812-path.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-87812.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-87812.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-88276-unary-plus.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-88276-unary-plus.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-88276-unary-plus.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-88583-union-as-ident.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-88770.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-88770.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-88818.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-88818.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-89388.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-89388.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-89396.fixed (100%) rename {src/test => tests}/ui/parser/issues/issue-89396.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-89396.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-89574.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-89574.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-90993.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-90993.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-91461.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-91461.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-93282.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-93282.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-93867.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-93867.stderr (100%) rename {src/test => tests}/ui/parser/issues/issue-94340.rs (100%) rename {src/test => tests}/ui/parser/issues/issue-94340.stderr (100%) rename {src/test => tests}/ui/parser/item-free-const-no-body-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/item-free-const-no-body-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/item-free-const-no-body-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/item-free-static-no-body-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/item-free-static-no-body-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/item-free-static-no-body-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/item-free-type-bounds-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/item-free-type-bounds-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/item-free-type-bounds-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/item-kw-case-mismatch.fixed (100%) rename {src/test => tests}/ui/parser/item-kw-case-mismatch.rs (100%) rename {src/test => tests}/ui/parser/item-kw-case-mismatch.stderr (100%) rename {src/test => tests}/ui/parser/item-needs-block.rs (100%) rename {src/test => tests}/ui/parser/item-needs-block.stderr (100%) rename {src/test => tests}/ui/parser/keyword-abstract.rs (100%) rename {src/test => tests}/ui/parser/keyword-abstract.stderr (100%) rename {src/test => tests}/ui/parser/keyword-as-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-as-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-box-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-box-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-break-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-break-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-const-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-const-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-continue-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-continue-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-else-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-else-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-enum-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-enum-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-final.rs (100%) rename {src/test => tests}/ui/parser/keyword-final.stderr (100%) rename {src/test => tests}/ui/parser/keyword-fn-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-fn-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-for-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-for-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-if-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-if-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-impl-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-impl-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-in-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-in-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-let-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-let-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-loop-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-loop-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-match-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-match-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-mod-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-mod-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-move-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-move-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-mut-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-mut-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-override.rs (100%) rename {src/test => tests}/ui/parser/keyword-override.stderr (100%) rename {src/test => tests}/ui/parser/keyword-pub-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-pub-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-ref-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-ref-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-return-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-return-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-static-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-static-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-struct-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-struct-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-trait-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-trait-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-try-as-identifier-edition2018.rs (100%) rename {src/test => tests}/ui/parser/keyword-try-as-identifier-edition2018.stderr (100%) rename {src/test => tests}/ui/parser/keyword-type-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-type-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-typeof.rs (100%) rename {src/test => tests}/ui/parser/keyword-typeof.stderr (100%) rename {src/test => tests}/ui/parser/keyword-unsafe-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-unsafe-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-use-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-use-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-where-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-where-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword-while-as-identifier.rs (100%) rename {src/test => tests}/ui/parser/keyword-while-as-identifier.stderr (100%) rename {src/test => tests}/ui/parser/keyword.rs (100%) rename {src/test => tests}/ui/parser/keyword.stderr (100%) rename {src/test => tests}/ui/parser/keywords-followed-by-double-colon.rs (100%) rename {src/test => tests}/ui/parser/keywords-followed-by-double-colon.stderr (100%) rename {src/test => tests}/ui/parser/kw-in-trait-bounds.rs (100%) rename {src/test => tests}/ui/parser/kw-in-trait-bounds.stderr (100%) rename {src/test => tests}/ui/parser/label-after-block-like.rs (100%) rename {src/test => tests}/ui/parser/label-after-block-like.stderr (100%) rename {src/test => tests}/ui/parser/label-is-actually-char.rs (100%) rename {src/test => tests}/ui/parser/label-is-actually-char.stderr (100%) rename {src/test => tests}/ui/parser/labeled-no-colon-expr.rs (100%) rename {src/test => tests}/ui/parser/labeled-no-colon-expr.stderr (100%) rename {src/test => tests}/ui/parser/let-binop.fixed (100%) rename {src/test => tests}/ui/parser/let-binop.rs (100%) rename {src/test => tests}/ui/parser/let-binop.stderr (100%) rename {src/test => tests}/ui/parser/lifetime-in-pattern-recover.rs (100%) rename {src/test => tests}/ui/parser/lifetime-in-pattern-recover.stderr (100%) rename {src/test => tests}/ui/parser/lifetime-in-pattern.rs (100%) rename {src/test => tests}/ui/parser/lifetime-in-pattern.stderr (100%) rename {src/test => tests}/ui/parser/lifetime-semicolon.fixed (100%) rename {src/test => tests}/ui/parser/lifetime-semicolon.rs (100%) rename {src/test => tests}/ui/parser/lifetime-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/lifetime_starts_expressions.rs (100%) rename {src/test => tests}/ui/parser/lifetime_starts_expressions.stderr (100%) rename {src/test => tests}/ui/parser/macro-bad-delimiter-ident.rs (100%) rename {src/test => tests}/ui/parser/macro-bad-delimiter-ident.stderr (100%) rename {src/test => tests}/ui/parser/macro-braces-dot-question.rs (100%) rename {src/test => tests}/ui/parser/macro-keyword.rs (100%) rename {src/test => tests}/ui/parser/macro-keyword.stderr (100%) rename {src/test => tests}/ui/parser/macro-mismatched-delim-brace-paren.rs (100%) rename {src/test => tests}/ui/parser/macro-mismatched-delim-brace-paren.stderr (100%) rename {src/test => tests}/ui/parser/macro-mismatched-delim-paren-brace.rs (100%) rename {src/test => tests}/ui/parser/macro-mismatched-delim-paren-brace.stderr (100%) rename {src/test => tests}/ui/parser/macro/bad-macro-argument.rs (100%) rename {src/test => tests}/ui/parser/macro/bad-macro-argument.stderr (100%) rename {src/test => tests}/ui/parser/macro/issue-33569.rs (100%) rename {src/test => tests}/ui/parser/macro/issue-33569.stderr (100%) rename {src/test => tests}/ui/parser/macro/issue-37113.rs (100%) rename {src/test => tests}/ui/parser/macro/issue-37113.stderr (100%) rename {src/test => tests}/ui/parser/macro/issue-37234.rs (100%) rename {src/test => tests}/ui/parser/macro/issue-37234.stderr (100%) rename {src/test => tests}/ui/parser/macro/literals-are-validated-before-expansion.rs (100%) rename {src/test => tests}/ui/parser/macro/literals-are-validated-before-expansion.stderr (100%) rename {src/test => tests}/ui/parser/macro/macro-doc-comments-1.rs (100%) rename {src/test => tests}/ui/parser/macro/macro-doc-comments-1.stderr (100%) rename {src/test => tests}/ui/parser/macro/macro-doc-comments-2.rs (100%) rename {src/test => tests}/ui/parser/macro/macro-doc-comments-2.stderr (100%) rename {src/test => tests}/ui/parser/macro/macro-incomplete-parse.rs (100%) rename {src/test => tests}/ui/parser/macro/macro-incomplete-parse.stderr (100%) rename {src/test => tests}/ui/parser/macro/macro-repeat.rs (100%) rename {src/test => tests}/ui/parser/macro/macro-repeat.stderr (100%) rename {src/test => tests}/ui/parser/macro/pub-item-macro.rs (100%) rename {src/test => tests}/ui/parser/macro/pub-item-macro.stderr (100%) rename {src/test => tests}/ui/parser/macro/trait-non-item-macros.rs (100%) rename {src/test => tests}/ui/parser/macro/trait-non-item-macros.stderr (100%) rename {src/test => tests}/ui/parser/macro/trait-object-macro-matcher.rs (100%) rename {src/test => tests}/ui/parser/macro/trait-object-macro-matcher.stderr (100%) rename {src/test => tests}/ui/parser/macros-no-semicolon-items.rs (100%) rename {src/test => tests}/ui/parser/macros-no-semicolon-items.stderr (100%) rename {src/test => tests}/ui/parser/macros-no-semicolon.rs (100%) rename {src/test => tests}/ui/parser/macros-no-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/match-arm-without-braces.rs (100%) rename {src/test => tests}/ui/parser/match-arm-without-braces.stderr (100%) rename {src/test => tests}/ui/parser/match-arrows-block-then-binop.rs (100%) rename {src/test => tests}/ui/parser/match-arrows-block-then-binop.stderr (100%) rename {src/test => tests}/ui/parser/match-refactor-to-expr.fixed (100%) rename {src/test => tests}/ui/parser/match-refactor-to-expr.rs (100%) rename {src/test => tests}/ui/parser/match-refactor-to-expr.stderr (100%) rename {src/test => tests}/ui/parser/mbe_missing_right_paren.rs (100%) rename {src/test => tests}/ui/parser/mbe_missing_right_paren.stderr (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.rs (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.stderr (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-struct.rs (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-struct.stderr (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-trait.rs (100%) rename {src/test => tests}/ui/parser/mismatched-braces/missing-close-brace-in-trait.stderr (100%) rename {src/test => tests}/ui/parser/mismatched-delim-brace-empty-block.rs (100%) rename {src/test => tests}/ui/parser/mismatched-delim-brace-empty-block.stderr (100%) rename {src/test => tests}/ui/parser/missing-closing-angle-bracket-eq-constraint.rs (100%) rename {src/test => tests}/ui/parser/missing-closing-angle-bracket-eq-constraint.stderr (100%) rename {src/test => tests}/ui/parser/missing-closing-angle-bracket-struct-field-ty.rs (100%) rename {src/test => tests}/ui/parser/missing-closing-angle-bracket-struct-field-ty.stderr (100%) rename {src/test => tests}/ui/parser/missing-semicolon.rs (100%) rename {src/test => tests}/ui/parser/missing-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/missing_right_paren.rs (100%) rename {src/test => tests}/ui/parser/missing_right_paren.stderr (100%) rename {src/test => tests}/ui/parser/misspelled-macro-rules.fixed (100%) rename {src/test => tests}/ui/parser/misspelled-macro-rules.rs (100%) rename {src/test => tests}/ui/parser/misspelled-macro-rules.stderr (100%) rename {src/test => tests}/ui/parser/mod_file_not_exist.rs (100%) rename {src/test => tests}/ui/parser/mod_file_not_exist.stderr (100%) rename {src/test => tests}/ui/parser/mod_file_not_exist_windows.rs (100%) rename {src/test => tests}/ui/parser/mod_file_not_exist_windows.stderr (100%) rename {src/test => tests}/ui/parser/mod_file_with_path_attr.rs (100%) rename {src/test => tests}/ui/parser/mod_file_with_path_attr.stderr (100%) rename {src/test => tests}/ui/parser/multibyte-char-use-seperator-issue-80134.rs (100%) rename {src/test => tests}/ui/parser/multibyte-char-use-seperator-issue-80134.stderr (100%) rename {src/test => tests}/ui/parser/multiline-comment-line-tracking.rs (100%) rename {src/test => tests}/ui/parser/multiline-comment-line-tracking.stderr (100%) rename {src/test => tests}/ui/parser/multitrait.rs (100%) rename {src/test => tests}/ui/parser/multitrait.stderr (100%) rename {src/test => tests}/ui/parser/mut-patterns.rs (100%) rename {src/test => tests}/ui/parser/mut-patterns.stderr (100%) rename {src/test => tests}/ui/parser/nested-bad-turbofish.rs (100%) rename {src/test => tests}/ui/parser/nested-bad-turbofish.stderr (100%) rename {src/test => tests}/ui/parser/nested-missing-closing-angle-bracket.rs (100%) rename {src/test => tests}/ui/parser/nested-missing-closing-angle-bracket.stderr (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-1.rs (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-1.stderr (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-2.rs (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-2.stderr (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-3.rs (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-3.stderr (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-4.rs (100%) rename {src/test => tests}/ui/parser/new-unicode-escapes-4.stderr (100%) rename {src/test => tests}/ui/parser/no-binary-float-literal.rs (100%) rename {src/test => tests}/ui/parser/no-binary-float-literal.stderr (100%) rename {src/test => tests}/ui/parser/no-const-fn-in-extern-block.rs (100%) rename {src/test => tests}/ui/parser/no-const-fn-in-extern-block.stderr (100%) rename {src/test => tests}/ui/parser/no-hex-float-literal.rs (100%) rename {src/test => tests}/ui/parser/no-hex-float-literal.stderr (100%) rename {src/test => tests}/ui/parser/no-unsafe-self.rs (100%) rename {src/test => tests}/ui/parser/no-unsafe-self.stderr (100%) rename {src/test => tests}/ui/parser/not-a-pred.rs (100%) rename {src/test => tests}/ui/parser/not-a-pred.stderr (100%) rename {src/test => tests}/ui/parser/nt-parsing-has-recovery.rs (100%) rename {src/test => tests}/ui/parser/nt-parsing-has-recovery.stderr (100%) rename {src/test => tests}/ui/parser/numeric-lifetime.rs (100%) rename {src/test => tests}/ui/parser/numeric-lifetime.stderr (100%) rename {src/test => tests}/ui/parser/obsolete-syntax-impl-for-dotdot.rs (100%) rename {src/test => tests}/ui/parser/obsolete-syntax-impl-for-dotdot.stderr (100%) rename {src/test => tests}/ui/parser/old-suffixes-are-really-forbidden.rs (100%) rename {src/test => tests}/ui/parser/old-suffixes-are-really-forbidden.stderr (100%) rename {src/test => tests}/ui/parser/omitted-arg-in-item-fn.rs (100%) rename {src/test => tests}/ui/parser/omitted-arg-in-item-fn.stderr (100%) rename {src/test => tests}/ui/parser/operator-associativity.rs (100%) rename {src/test => tests}/ui/parser/paamayim-nekudotayim.rs (100%) rename {src/test => tests}/ui/parser/paamayim-nekudotayim.stderr (100%) rename {src/test => tests}/ui/parser/parse-assoc-type-lt.rs (100%) rename {src/test => tests}/ui/parser/parse-error-correct.rs (100%) rename {src/test => tests}/ui/parser/parse-error-correct.stderr (100%) rename {src/test => tests}/ui/parser/parse-panic.rs (100%) rename {src/test => tests}/ui/parser/parser-recovery-1.rs (100%) rename {src/test => tests}/ui/parser/parser-recovery-1.stderr (100%) rename {src/test => tests}/ui/parser/parser-recovery-2.rs (100%) rename {src/test => tests}/ui/parser/parser-recovery-2.stderr (100%) rename {src/test => tests}/ui/parser/parser-unicode-whitespace.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-1.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-1.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-2.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-2.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-3.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-3.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-4.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-4.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-5.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-5.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-6.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-6.stderr (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-7.rs (100%) rename {src/test => tests}/ui/parser/pat-lt-bracket-7.stderr (100%) rename {src/test => tests}/ui/parser/pat-ranges-1.rs (100%) rename {src/test => tests}/ui/parser/pat-ranges-1.stderr (100%) rename {src/test => tests}/ui/parser/pat-ranges-2.rs (100%) rename {src/test => tests}/ui/parser/pat-ranges-2.stderr (100%) rename {src/test => tests}/ui/parser/pat-ranges-3.rs (100%) rename {src/test => tests}/ui/parser/pat-ranges-3.stderr (100%) rename {src/test => tests}/ui/parser/pat-ranges-4.rs (100%) rename {src/test => tests}/ui/parser/pat-ranges-4.stderr (100%) rename {src/test => tests}/ui/parser/pat-ref-enum.rs (100%) rename {src/test => tests}/ui/parser/pat-ref-enum.stderr (100%) rename {src/test => tests}/ui/parser/pat-tuple-1.rs (100%) rename {src/test => tests}/ui/parser/pat-tuple-1.stderr (100%) rename {src/test => tests}/ui/parser/pat-tuple-2.rs (100%) rename {src/test => tests}/ui/parser/pat-tuple-3.rs (100%) rename {src/test => tests}/ui/parser/pat-tuple-3.stderr (100%) rename {src/test => tests}/ui/parser/pub-method-macro.rs (100%) rename {src/test => tests}/ui/parser/pub-method-macro.stderr (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-1.fixed (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-1.rs (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-1.stderr (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-2.rs (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-2.stderr (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-3.fixed (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-3.rs (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub-3.stderr (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub.fixed (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub.rs (100%) rename {src/test => tests}/ui/parser/public-instead-of-pub.stderr (100%) rename {src/test => tests}/ui/parser/qualified-path-in-turbofish.fixed (100%) rename {src/test => tests}/ui/parser/qualified-path-in-turbofish.rs (100%) rename {src/test => tests}/ui/parser/qualified-path-in-turbofish.stderr (100%) rename {src/test => tests}/ui/parser/range-3.rs (100%) rename {src/test => tests}/ui/parser/range-3.stderr (100%) rename {src/test => tests}/ui/parser/range-4.rs (100%) rename {src/test => tests}/ui/parser/range-4.stderr (100%) rename {src/test => tests}/ui/parser/range-inclusive-extra-equals.rs (100%) rename {src/test => tests}/ui/parser/range-inclusive-extra-equals.stderr (100%) rename {src/test => tests}/ui/parser/range_inclusive.fixed (100%) rename {src/test => tests}/ui/parser/range_inclusive.rs (100%) rename {src/test => tests}/ui/parser/range_inclusive.stderr (100%) rename {src/test => tests}/ui/parser/range_inclusive_dotdotdot.rs (100%) rename {src/test => tests}/ui/parser/range_inclusive_dotdotdot.stderr (100%) rename {src/test => tests}/ui/parser/ranges-precedence.rs (100%) rename {src/test => tests}/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs (100%) rename {src/test => tests}/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-byte-string-eof.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-byte-string-eof.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-byte-string-literals.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-byte-string-literals.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-keywords.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-keywords.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-self.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-self.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-underscore.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-literal-underscore.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-str-delim.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-str-delim.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-str-in-macro-call.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-str-unbalanced.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-str-unbalanced.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-str-unterminated.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-str-unterminated.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-string-2.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-string-2.stderr (100%) rename {src/test => tests}/ui/parser/raw/raw-string.rs (100%) rename {src/test => tests}/ui/parser/raw/raw-string.stderr (100%) rename {src/test => tests}/ui/parser/recover-assoc-const-constraint.rs (100%) rename {src/test => tests}/ui/parser/recover-assoc-const-constraint.stderr (100%) rename {src/test => tests}/ui/parser/recover-assoc-eq-missing-term.rs (100%) rename {src/test => tests}/ui/parser/recover-assoc-eq-missing-term.stderr (100%) rename {src/test => tests}/ui/parser/recover-assoc-lifetime-constraint.rs (100%) rename {src/test => tests}/ui/parser/recover-assoc-lifetime-constraint.stderr (100%) rename {src/test => tests}/ui/parser/recover-const-async-fn-ptr.rs (100%) rename {src/test => tests}/ui/parser/recover-const-async-fn-ptr.stderr (100%) rename {src/test => tests}/ui/parser/recover-enum.rs (100%) rename {src/test => tests}/ui/parser/recover-enum.stderr (100%) rename {src/test => tests}/ui/parser/recover-enum2.rs (100%) rename {src/test => tests}/ui/parser/recover-enum2.stderr (100%) rename {src/test => tests}/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs (100%) rename {src/test => tests}/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr (100%) rename {src/test => tests}/ui/parser/recover-field-extra-angle-brackets.rs (100%) rename {src/test => tests}/ui/parser/recover-field-extra-angle-brackets.stderr (100%) rename {src/test => tests}/ui/parser/recover-field-semi.rs (100%) rename {src/test => tests}/ui/parser/recover-field-semi.stderr (100%) rename {src/test => tests}/ui/parser/recover-fn-ptr-with-generics.rs (100%) rename {src/test => tests}/ui/parser/recover-fn-ptr-with-generics.stderr (100%) rename {src/test => tests}/ui/parser/recover-fn-trait-from-fn-kw.rs (100%) rename {src/test => tests}/ui/parser/recover-fn-trait-from-fn-kw.stderr (100%) rename {src/test => tests}/ui/parser/recover-for-loop-parens-around-head.rs (100%) rename {src/test => tests}/ui/parser/recover-for-loop-parens-around-head.stderr (100%) rename {src/test => tests}/ui/parser/recover-from-bad-variant.rs (100%) rename {src/test => tests}/ui/parser/recover-from-bad-variant.stderr (100%) rename {src/test => tests}/ui/parser/recover-from-homoglyph.rs (100%) rename {src/test => tests}/ui/parser/recover-from-homoglyph.stderr (100%) rename {src/test => tests}/ui/parser/recover-labeled-non-block-expr.fixed (100%) rename {src/test => tests}/ui/parser/recover-labeled-non-block-expr.rs (100%) rename {src/test => tests}/ui/parser/recover-labeled-non-block-expr.stderr (100%) rename {src/test => tests}/ui/parser/recover-missing-semi-before-item.fixed (100%) rename {src/test => tests}/ui/parser/recover-missing-semi-before-item.rs (100%) rename {src/test => tests}/ui/parser/recover-missing-semi-before-item.stderr (100%) rename {src/test => tests}/ui/parser/recover-missing-semi.rs (100%) rename {src/test => tests}/ui/parser/recover-missing-semi.stderr (100%) rename {src/test => tests}/ui/parser/recover-quantified-closure.rs (100%) rename {src/test => tests}/ui/parser/recover-quantified-closure.stderr (100%) rename {src/test => tests}/ui/parser/recover-range-pats.rs (100%) rename {src/test => tests}/ui/parser/recover-range-pats.stderr (100%) rename {src/test => tests}/ui/parser/recover-ref-dyn-mut.rs (100%) rename {src/test => tests}/ui/parser/recover-ref-dyn-mut.stderr (100%) rename {src/test => tests}/ui/parser/recover-struct.rs (100%) rename {src/test => tests}/ui/parser/recover-struct.stderr (100%) rename {src/test => tests}/ui/parser/recover-tuple-pat.rs (100%) rename {src/test => tests}/ui/parser/recover-tuple-pat.stderr (100%) rename {src/test => tests}/ui/parser/recover-tuple.rs (100%) rename {src/test => tests}/ui/parser/recover-tuple.stderr (100%) rename {src/test => tests}/ui/parser/recovered-struct-variant.rs (100%) rename {src/test => tests}/ui/parser/recovered-struct-variant.stderr (100%) rename {src/test => tests}/ui/parser/regions-out-of-scope-slice.rs (100%) rename {src/test => tests}/ui/parser/regions-out-of-scope-slice.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-closure-lifetime.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-closure-lifetime.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-enum-newtype.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-enum-newtype.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-let-2.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-let-2.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-let.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-let.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-semicolon.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-field-semicolon.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-fixed-vec.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-fixed-vec.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-fn-sigil.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-fn-sigil.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-mode.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-mode.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-mut-vec-expr.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-mut-vec-expr.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-mut-vec-ty.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-mut-vec-ty.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-ptr-lifetime.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-ptr-lifetime.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-record.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-record.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-static-fn.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-static-fn.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-uniq-mut-expr.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-uniq-mut-expr.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-uniq-mut-ty.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-uniq-mut-ty.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-with-1.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-with-1.stderr (100%) rename {src/test => tests}/ui/parser/removed-syntax-with-2.rs (100%) rename {src/test => tests}/ui/parser/removed-syntax-with-2.stderr (100%) rename {src/test => tests}/ui/parser/require-parens-for-chained-comparison.rs (100%) rename {src/test => tests}/ui/parser/require-parens-for-chained-comparison.stderr (100%) rename {src/test => tests}/ui/parser/self-in-function-arg.rs (100%) rename {src/test => tests}/ui/parser/self-in-function-arg.stderr (100%) rename {src/test => tests}/ui/parser/self-param-semantic-fail.rs (100%) rename {src/test => tests}/ui/parser/self-param-semantic-fail.stderr (100%) rename {src/test => tests}/ui/parser/self-param-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/semi-after-closure-in-macro.rs (100%) rename {src/test => tests}/ui/parser/several-carriage-returns-in-doc-comment.rs (100%) rename {src/test => tests}/ui/parser/several-carriage-returns-in-doc-comment.stderr (100%) rename {src/test => tests}/ui/parser/shebang/issue-71471-ignore-tidy.rs (100%) rename {src/test => tests}/ui/parser/shebang/issue-71471-ignore-tidy.stderr (100%) rename {src/test => tests}/ui/parser/shebang/multiline-attrib.rs (100%) rename {src/test => tests}/ui/parser/shebang/regular-attrib.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-and-attrib.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-comment.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-doc-comment.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-doc-comment.stderr (100%) rename {src/test => tests}/ui/parser/shebang/shebang-empty.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-must-start-file.rs (100%) rename {src/test => tests}/ui/parser/shebang/shebang-must-start-file.stderr (100%) rename {src/test => tests}/ui/parser/shebang/shebang-space.rs (100%) rename {src/test => tests}/ui/parser/shebang/sneaky-attrib.rs (100%) rename {src/test => tests}/ui/parser/shebang/valid-shebang.rs (100%) rename {src/test => tests}/ui/parser/similar-tokens.rs (100%) rename {src/test => tests}/ui/parser/similar-tokens.stderr (100%) rename {src/test => tests}/ui/parser/slowparse-bstring.rs (100%) rename {src/test => tests}/ui/parser/slowparse-string.rs (100%) rename {src/test => tests}/ui/parser/stmt_expr_attrs_placement.rs (100%) rename {src/test => tests}/ui/parser/stmt_expr_attrs_placement.stderr (100%) rename {src/test => tests}/ui/parser/stripped-nested-outline-mod-pass.rs (100%) rename {src/test => tests}/ui/parser/struct-default-values-and-missing-field-separator.fixed (100%) rename {src/test => tests}/ui/parser/struct-default-values-and-missing-field-separator.rs (100%) rename {src/test => tests}/ui/parser/struct-default-values-and-missing-field-separator.stderr (100%) rename {src/test => tests}/ui/parser/struct-field-numeric-shorthand.rs (100%) rename {src/test => tests}/ui/parser/struct-field-numeric-shorthand.stderr (100%) rename {src/test => tests}/ui/parser/struct-filed-with-attr.fixed (100%) rename {src/test => tests}/ui/parser/struct-filed-with-attr.rs (100%) rename {src/test => tests}/ui/parser/struct-filed-with-attr.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-in-for.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-in-for.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-in-if.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-in-if.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-in-match-discriminant.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-in-match-discriminant.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-in-match-guard.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-in-while.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-in-while.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-restrictions-in-lamda.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-restrictions-in-lamda.stderr (100%) rename {src/test => tests}/ui/parser/struct-literal-variant-in-if.rs (100%) rename {src/test => tests}/ui/parser/struct-literal-variant-in-if.stderr (100%) rename {src/test => tests}/ui/parser/suggest-assoc-const.fixed (100%) rename {src/test => tests}/ui/parser/suggest-assoc-const.rs (100%) rename {src/test => tests}/ui/parser/suggest-assoc-const.stderr (100%) rename {src/test => tests}/ui/parser/suggest-const-for-global-var.rs (100%) rename {src/test => tests}/ui/parser/suggest-const-for-global-var.stderr (100%) rename {src/test => tests}/ui/parser/suggest-removing-semicolon-after-impl-trait-items.fixed (100%) rename {src/test => tests}/ui/parser/suggest-removing-semicolon-after-impl-trait-items.rs (100%) rename {src/test => tests}/ui/parser/suggest-removing-semicolon-after-impl-trait-items.stderr (100%) rename {src/test => tests}/ui/parser/suggest-semi-in-array.rs (100%) rename {src/test => tests}/ui/parser/suggest-semi-in-array.stderr (100%) rename {src/test => tests}/ui/parser/suggest-semicolon-before-array.fixed (100%) rename {src/test => tests}/ui/parser/suggest-semicolon-before-array.rs (100%) rename {src/test => tests}/ui/parser/suggest-semicolon-before-array.stderr (100%) rename {src/test => tests}/ui/parser/trailing-carriage-return-in-string.rs (100%) rename {src/test => tests}/ui/parser/trailing-carriage-return-in-string.stderr (100%) rename {src/test => tests}/ui/parser/trailing-plus-in-bounds.rs (100%) rename {src/test => tests}/ui/parser/trailing-question-in-macro-type.rs (100%) rename {src/test => tests}/ui/parser/trailing-question-in-macro-type.stderr (100%) rename {src/test => tests}/ui/parser/trailing-question-in-type.fixed (100%) rename {src/test => tests}/ui/parser/trailing-question-in-type.rs (100%) rename {src/test => tests}/ui/parser/trailing-question-in-type.stderr (100%) rename {src/test => tests}/ui/parser/trait-bounds-not-on-impl.rs (100%) rename {src/test => tests}/ui/parser/trait-bounds-not-on-impl.stderr (100%) rename {src/test => tests}/ui/parser/trait-item-with-defaultness-fail-semantic.rs (100%) rename {src/test => tests}/ui/parser/trait-item-with-defaultness-fail-semantic.stderr (100%) rename {src/test => tests}/ui/parser/trait-item-with-defaultness-pass.rs (100%) rename {src/test => tests}/ui/parser/trait-object-bad-parens.rs (100%) rename {src/test => tests}/ui/parser/trait-object-bad-parens.stderr (100%) rename {src/test => tests}/ui/parser/trait-object-delimiters.rs (100%) rename {src/test => tests}/ui/parser/trait-object-delimiters.stderr (100%) rename {src/test => tests}/ui/parser/trait-object-lifetime-parens.rs (100%) rename {src/test => tests}/ui/parser/trait-object-lifetime-parens.stderr (100%) rename {src/test => tests}/ui/parser/trait-object-polytrait-priority.rs (100%) rename {src/test => tests}/ui/parser/trait-object-polytrait-priority.stderr (100%) rename {src/test => tests}/ui/parser/trait-object-trait-parens.rs (100%) rename {src/test => tests}/ui/parser/trait-object-trait-parens.stderr (100%) rename {src/test => tests}/ui/parser/trait-plusequal-splitting.rs (100%) rename {src/test => tests}/ui/parser/trait-pub-assoc-const.rs (100%) rename {src/test => tests}/ui/parser/trait-pub-assoc-const.stderr (100%) rename {src/test => tests}/ui/parser/trait-pub-assoc-ty.rs (100%) rename {src/test => tests}/ui/parser/trait-pub-assoc-ty.stderr (100%) rename {src/test => tests}/ui/parser/trait-pub-method.rs (100%) rename {src/test => tests}/ui/parser/trait-pub-method.stderr (100%) rename {src/test => tests}/ui/parser/type-alias-where-fixable.fixed (100%) rename {src/test => tests}/ui/parser/type-alias-where-fixable.rs (100%) rename {src/test => tests}/ui/parser/type-alias-where-fixable.stderr (100%) rename {src/test => tests}/ui/parser/type-alias-where.rs (100%) rename {src/test => tests}/ui/parser/type-alias-where.stderr (100%) rename {src/test => tests}/ui/parser/type-parameters-in-field-exprs.rs (100%) rename {src/test => tests}/ui/parser/type-parameters-in-field-exprs.stderr (100%) rename {src/test => tests}/ui/parser/unbalanced-doublequote.rs (100%) rename {src/test => tests}/ui/parser/unbalanced-doublequote.stderr (100%) rename {src/test => tests}/ui/parser/unclosed-braces.rs (100%) rename {src/test => tests}/ui/parser/unclosed-braces.stderr (100%) rename {src/test => tests}/ui/parser/unclosed-delimiter-in-dep.rs (100%) rename {src/test => tests}/ui/parser/unclosed-delimiter-in-dep.stderr (100%) rename {src/test => tests}/ui/parser/unclosed_delim_mod.rs (100%) rename {src/test => tests}/ui/parser/unclosed_delim_mod.stderr (100%) rename {src/test => tests}/ui/parser/underscore-suffix-for-float.rs (100%) rename {src/test => tests}/ui/parser/underscore-suffix-for-float.stderr (100%) rename {src/test => tests}/ui/parser/underscore-suffix-for-string.rs (100%) rename {src/test => tests}/ui/parser/underscore-suffix-for-string.stderr (100%) rename {src/test => tests}/ui/parser/underscore_item_not_const.rs (100%) rename {src/test => tests}/ui/parser/underscore_item_not_const.stderr (100%) rename {src/test => tests}/ui/parser/unicode-character-literal.fixed (100%) rename {src/test => tests}/ui/parser/unicode-character-literal.rs (100%) rename {src/test => tests}/ui/parser/unicode-character-literal.stderr (100%) rename {src/test => tests}/ui/parser/unicode-chars.rs (100%) rename {src/test => tests}/ui/parser/unicode-chars.stderr (100%) rename {src/test => tests}/ui/parser/unicode-control-codepoints.rs (100%) rename {src/test => tests}/ui/parser/unicode-control-codepoints.stderr (100%) rename {src/test => tests}/ui/parser/unicode-quote-chars.rs (100%) rename {src/test => tests}/ui/parser/unicode-quote-chars.stderr (100%) rename {src/test => tests}/ui/parser/unmatched-delimiter-at-end-of-file.rs (100%) rename {src/test => tests}/ui/parser/unmatched-delimiter-at-end-of-file.stderr (100%) rename {src/test => tests}/ui/parser/unmatched-langle-1.rs (100%) rename {src/test => tests}/ui/parser/unmatched-langle-1.stderr (100%) rename {src/test => tests}/ui/parser/unmatched-langle-2.rs (100%) rename {src/test => tests}/ui/parser/unmatched-langle-2.stderr (100%) rename {src/test => tests}/ui/parser/unnecessary-let.rs (100%) rename {src/test => tests}/ui/parser/unnecessary-let.stderr (100%) rename {src/test => tests}/ui/parser/unsafe-foreign-mod-2.rs (100%) rename {src/test => tests}/ui/parser/unsafe-foreign-mod-2.stderr (100%) rename {src/test => tests}/ui/parser/unsafe-foreign-mod.rs (100%) rename {src/test => tests}/ui/parser/unsafe-foreign-mod.stderr (100%) rename {src/test => tests}/ui/parser/unsafe-mod.rs (100%) rename {src/test => tests}/ui/parser/unsafe-mod.stderr (100%) rename {src/test => tests}/ui/parser/unsized.rs (100%) rename {src/test => tests}/ui/parser/unsized.stderr (100%) rename {src/test => tests}/ui/parser/unsized2.rs (100%) rename {src/test => tests}/ui/parser/unsized2.stderr (100%) rename {src/test => tests}/ui/parser/use-as-where-use-ends-with-mod-sep.rs (100%) rename {src/test => tests}/ui/parser/use-as-where-use-ends-with-mod-sep.stderr (100%) rename {src/test => tests}/ui/parser/use-colon-as-mod-sep.rs (100%) rename {src/test => tests}/ui/parser/use-colon-as-mod-sep.stderr (100%) rename {src/test => tests}/ui/parser/use-ends-with-mod-sep.rs (100%) rename {src/test => tests}/ui/parser/use-ends-with-mod-sep.stderr (100%) rename {src/test => tests}/ui/parser/use-unclosed-brace.rs (100%) rename {src/test => tests}/ui/parser/use-unclosed-brace.stderr (100%) rename {src/test => tests}/ui/parser/utf16-be-without-bom.rs (100%) rename {src/test => tests}/ui/parser/utf16-be-without-bom.stderr (100%) rename {src/test => tests}/ui/parser/utf16-le-without-bom.rs (100%) rename {src/test => tests}/ui/parser/utf16-le-without-bom.stderr (100%) rename {src/test => tests}/ui/parser/utf8_idents-rpass.rs (100%) rename {src/test => tests}/ui/parser/variadic-ffi-nested-syntactic-fail.rs (100%) rename {src/test => tests}/ui/parser/variadic-ffi-nested-syntactic-fail.stderr (100%) rename {src/test => tests}/ui/parser/variadic-ffi-semantic-restrictions.rs (100%) rename {src/test => tests}/ui/parser/variadic-ffi-semantic-restrictions.stderr (100%) rename {src/test => tests}/ui/parser/variadic-ffi-syntactic-pass.rs (100%) rename {src/test => tests}/ui/parser/virtual-structs.rs (100%) rename {src/test => tests}/ui/parser/virtual-structs.stderr (100%) rename {src/test => tests}/ui/parser/where-clauses-no-bounds-or-predicates.rs (100%) rename {src/test => tests}/ui/parser/where-clauses-no-bounds-or-predicates.stderr (100%) rename {src/test => tests}/ui/parser/where_with_bound.rs (100%) rename {src/test => tests}/ui/parser/where_with_bound.stderr (100%) rename {src/test => tests}/ui/parser/while-if-let-without-body.rs (100%) rename {src/test => tests}/ui/parser/while-if-let-without-body.stderr (100%) rename {src/test => tests}/ui/parser/wrong-escape-of-curly-braces.rs (100%) rename {src/test => tests}/ui/parser/wrong-escape-of-curly-braces.stderr (100%) rename {src/test => tests}/ui/partialeq_help.rs (100%) rename {src/test => tests}/ui/partialeq_help.stderr (100%) rename {src/test => tests}/ui/path-lookahead.fixed (100%) rename {src/test => tests}/ui/path-lookahead.rs (100%) rename {src/test => tests}/ui/path-lookahead.stderr (100%) rename {src/test => tests}/ui/path.rs (100%) rename {src/test => tests}/ui/paths-containing-nul.rs (100%) rename {src/test => tests}/ui/pattern/auxiliary/declarations-for-tuple-field-count-errors.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/bind-by-copy.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-move-and-move.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-move-and-move.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-at-and-box-pass.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-copy-bindings-in-at.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-ref-both-sides.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/box-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/copy-and-move-mixed.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/copy-and-move-mixed.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-binding-mode-lint.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-binding-modes-mut.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-binding-modes-mut.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-binding-modes-ref.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-binding-modes-ref.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/or-patterns-box-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/or-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/pat-at-same-name-both.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/pat-at-same-name-both.stderr (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/slice-patterns.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs (100%) rename {src/test => tests}/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr (100%) rename {src/test => tests}/ui/pattern/for-loop-bad-item.rs (100%) rename {src/test => tests}/ui/pattern/for-loop-bad-item.stderr (100%) rename {src/test => tests}/ui/pattern/ignore-all-the-things.rs (100%) rename {src/test => tests}/ui/pattern/integer-range-binding.rs (100%) rename {src/test => tests}/ui/pattern/issue-10392.rs (100%) rename {src/test => tests}/ui/pattern/issue-11577.rs (100%) rename {src/test => tests}/ui/pattern/issue-12582.rs (100%) rename {src/test => tests}/ui/pattern/issue-14221.rs (100%) rename {src/test => tests}/ui/pattern/issue-14221.stderr (100%) rename {src/test => tests}/ui/pattern/issue-15080.rs (100%) rename {src/test => tests}/ui/pattern/issue-17718-patterns.rs (100%) rename {src/test => tests}/ui/pattern/issue-17718-patterns.stderr (100%) rename {src/test => tests}/ui/pattern/issue-22546.rs (100%) rename {src/test => tests}/ui/pattern/issue-27320.rs (100%) rename {src/test => tests}/ui/pattern/issue-52240.rs (100%) rename {src/test => tests}/ui/pattern/issue-52240.stderr (100%) rename {src/test => tests}/ui/pattern/issue-6449.rs (100%) rename {src/test => tests}/ui/pattern/issue-66270-pat-struct-parser-recovery.rs (100%) rename {src/test => tests}/ui/pattern/issue-66270-pat-struct-parser-recovery.stderr (100%) rename {src/test => tests}/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs (100%) rename {src/test => tests}/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr (100%) rename {src/test => tests}/ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs (100%) rename {src/test => tests}/ui/pattern/issue-67776-match-same-name-enum-variant-refs.stderr (100%) rename {src/test => tests}/ui/pattern/issue-68393-let-pat-assoc-constant.rs (100%) rename {src/test => tests}/ui/pattern/issue-68393-let-pat-assoc-constant.stderr (100%) rename {src/test => tests}/ui/pattern/issue-72565.rs (100%) rename {src/test => tests}/ui/pattern/issue-72565.stderr (100%) rename {src/test => tests}/ui/pattern/issue-72574-1.rs (100%) rename {src/test => tests}/ui/pattern/issue-72574-1.stderr (100%) rename {src/test => tests}/ui/pattern/issue-72574-2.rs (100%) rename {src/test => tests}/ui/pattern/issue-72574-2.stderr (100%) rename {src/test => tests}/ui/pattern/issue-74539.rs (100%) rename {src/test => tests}/ui/pattern/issue-74539.stderr (100%) rename {src/test => tests}/ui/pattern/issue-74702.rs (100%) rename {src/test => tests}/ui/pattern/issue-74702.stderr (100%) rename {src/test => tests}/ui/pattern/issue-74954.rs (100%) rename {src/test => tests}/ui/pattern/issue-80186-mut-binding-help-suggestion.rs (100%) rename {src/test => tests}/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr (100%) rename {src/test => tests}/ui/pattern/issue-8351-1.rs (100%) rename {src/test => tests}/ui/pattern/issue-8351-2.rs (100%) rename {src/test => tests}/ui/pattern/issue-88074-pat-range-type-inference-err.rs (100%) rename {src/test => tests}/ui/pattern/issue-88074-pat-range-type-inference-err.stderr (100%) rename {src/test => tests}/ui/pattern/issue-88074-pat-range-type-inference.rs (100%) rename {src/test => tests}/ui/pattern/issue-92074-macro-ice.rs (100%) rename {src/test => tests}/ui/pattern/issue-92074-macro-ice.stderr (100%) rename {src/test => tests}/ui/pattern/issue-95878.rs (100%) rename {src/test => tests}/ui/pattern/issue-95878.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern-pass.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/by-move-sub-pat-unreachable.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/issue-53840.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-pass.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.fixed (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.rs (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.stderr (100%) rename {src/test => tests}/ui/pattern/move-ref-patterns/move-ref-patterns-dynamic-semantics.rs (100%) rename {src/test => tests}/ui/pattern/non-constant-in-const-path.rs (100%) rename {src/test => tests}/ui/pattern/non-constant-in-const-path.stderr (100%) rename {src/test => tests}/ui/pattern/non-structural-match-types.rs (100%) rename {src/test => tests}/ui/pattern/non-structural-match-types.stderr (100%) rename {src/test => tests}/ui/pattern/pat-shadow-in-nested-binding.rs (100%) rename {src/test => tests}/ui/pattern/pat-shadow-in-nested-binding.stderr (100%) rename {src/test => tests}/ui/pattern/pat-struct-field-expr-has-type.rs (100%) rename {src/test => tests}/ui/pattern/pat-struct-field-expr-has-type.stderr (100%) rename {src/test => tests}/ui/pattern/pat-tuple-bad-type.rs (100%) rename {src/test => tests}/ui/pattern/pat-tuple-bad-type.stderr (100%) rename {src/test => tests}/ui/pattern/pat-tuple-field-count-cross.rs (100%) rename {src/test => tests}/ui/pattern/pat-tuple-field-count-cross.stderr (100%) rename {src/test => tests}/ui/pattern/pat-tuple-overfield.rs (100%) rename {src/test => tests}/ui/pattern/pat-tuple-overfield.stderr (100%) rename {src/test => tests}/ui/pattern/pat-tuple-underfield.rs (100%) rename {src/test => tests}/ui/pattern/pat-tuple-underfield.stderr (100%) rename {src/test => tests}/ui/pattern/pat-type-err-formal-param.rs (100%) rename {src/test => tests}/ui/pattern/pat-type-err-formal-param.stderr (100%) rename {src/test => tests}/ui/pattern/pat-type-err-let-stmt.rs (100%) rename {src/test => tests}/ui/pattern/pat-type-err-let-stmt.stderr (100%) rename {src/test => tests}/ui/pattern/patkind-litrange-no-expr.rs (100%) rename {src/test => tests}/ui/pattern/patkind-litrange-no-expr.stderr (100%) rename {src/test => tests}/ui/pattern/pattern-binding-disambiguation.rs (100%) rename {src/test => tests}/ui/pattern/pattern-binding-disambiguation.stderr (100%) rename {src/test => tests}/ui/pattern/pattern-error-continue.rs (100%) rename {src/test => tests}/ui/pattern/pattern-error-continue.stderr (100%) rename {src/test => tests}/ui/pattern/pattern-ident-path-generics.rs (100%) rename {src/test => tests}/ui/pattern/pattern-ident-path-generics.stderr (100%) rename {src/test => tests}/ui/pattern/pattern-tyvar-2.rs (100%) rename {src/test => tests}/ui/pattern/pattern-tyvar-2.stderr (100%) rename {src/test => tests}/ui/pattern/pattern-tyvar.rs (100%) rename {src/test => tests}/ui/pattern/pattern-tyvar.stderr (100%) rename {src/test => tests}/ui/pattern/rest-pat-semantic-disallowed.rs (100%) rename {src/test => tests}/ui/pattern/rest-pat-semantic-disallowed.stderr (100%) rename {src/test => tests}/ui/pattern/rest-pat-syntactic.rs (100%) rename {src/test => tests}/ui/pattern/rest-pat-syntactic.stderr (100%) rename {src/test => tests}/ui/pattern/size-and-align.rs (100%) rename {src/test => tests}/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.fixed (100%) rename {src/test => tests}/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.rs (100%) rename {src/test => tests}/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/always-inhabited-union-ref.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/always-inhabited-union-ref.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/auxiliary/empty.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/auxiliary/hidden.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/auxiliary/unstable.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/const-partial_eq-fallback-ice.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/const-partial_eq-fallback-ice.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/const-pat-ice.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/const-private-fields.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/consts-opaque.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/consts-opaque.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/deny-irrefutable-let-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/deny-irrefutable-let-patterns.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/doc-hidden-fields.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/doc-hidden-fields.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/doc-hidden-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/empty-match.exhaustive_patterns.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/empty-match.normal.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/empty-match.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/floats.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/floats.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/guards.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/guards.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/exhaustiveness.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/exhaustiveness.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/pointer-sized-int.allow.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/pointer-sized-int.deny.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/pointer-sized-int.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/reachability.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/integer-ranges/reachability.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/irrefutable-let-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/irrefutable-unit.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-12116.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-12116.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-12369.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-12369.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-13727.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-13727.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-15129.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-15129.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-2111.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-2111.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-30240-b.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-30240-b.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-30240-rpass.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-30240.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-30240.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3096-1.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3096-1.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3096-2.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3096-2.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-31221.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-31221.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-31561.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-31561.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-35609.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-35609.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3601.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-3601.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-39362.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-39362.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-40221.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-40221.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-4321.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-4321.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-50900.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-50900.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-56379.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-56379.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-57472.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-57472.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-66501.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-72377.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-72377.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-82772-match-box-as-struct.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-82772-match-box-as-struct.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/issue-88747.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-arm-statics-2.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-arm-statics-2.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-arm-statics.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-arm-statics.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-byte-array-patterns-2.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-byte-array-patterns-2.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-byte-array-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-byte-array-patterns.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-non-exhaustive.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-privately-empty.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-privately-empty.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-ref-ice.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-ref-ice.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-slice-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-slice-patterns.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-vec-fixed.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-vec-fixed.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/match-vec-unreachable.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/match-vec-unreachable.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/nested-exhaustive-match.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-defined-here.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-defined-here.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-match-nested.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-match-nested.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-match.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-match.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-pattern-witness.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/non-exhaustive-pattern-witness.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/refutable-pattern-errors.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/refutable-pattern-errors.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const-2.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const-2.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const-3.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const-3.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-pattern-const.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-patterns-irrefutable.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-patterns-reachability.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/slice-patterns-reachability.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/stable-gated-fields.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/stable-gated-fields.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/stable-gated-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/stable-gated-patterns.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/struct-like-enum-nonexhaustive.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/struct-like-enum-nonexhaustive.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/struct-pattern-match-useless.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/struct-pattern-match-useless.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/top-level-alternation.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/top-level-alternation.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/tuple-struct-nonexhaustive.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/type_polymorphic_byte_str_literals.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/type_polymorphic_byte_str_literals.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/uninhabited.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/unstable-gated-fields.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/unstable-gated-fields.stderr (100%) rename {src/test => tests}/ui/pattern/usefulness/unstable-gated-patterns.rs (100%) rename {src/test => tests}/ui/pattern/usefulness/unstable-gated-patterns.stderr (100%) rename {src/test => tests}/ui/phantom-auto-trait.rs (100%) rename {src/test => tests}/ui/phantom-auto-trait.stderr (100%) rename {src/test => tests}/ui/pin-macro/cant_access_internals.rs (100%) rename {src/test => tests}/ui/pin-macro/cant_access_internals.stderr (100%) rename {src/test => tests}/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs (100%) rename {src/test => tests}/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr (100%) rename {src/test => tests}/ui/point-to-type-err-cause-on-impl-trait-return-2.rs (100%) rename {src/test => tests}/ui/point-to-type-err-cause-on-impl-trait-return-2.stderr (100%) rename {src/test => tests}/ui/polymorphization/closure_in_upvar/fn.rs (100%) rename {src/test => tests}/ui/polymorphization/closure_in_upvar/fnmut.rs (100%) rename {src/test => tests}/ui/polymorphization/closure_in_upvar/fnonce.rs (100%) rename {src/test => tests}/ui/polymorphization/closure_in_upvar/other.rs (100%) rename {src/test => tests}/ui/polymorphization/const_parameters/closures.rs (100%) rename {src/test => tests}/ui/polymorphization/const_parameters/closures.stderr (100%) rename {src/test => tests}/ui/polymorphization/const_parameters/functions.rs (100%) rename {src/test => tests}/ui/polymorphization/const_parameters/functions.stderr (100%) rename {src/test => tests}/ui/polymorphization/drop_shims/simple.rs (100%) rename {src/test => tests}/ui/polymorphization/drop_shims/transitive.rs (100%) rename {src/test => tests}/ui/polymorphization/generators.rs (100%) rename {src/test => tests}/ui/polymorphization/generators.stderr (100%) rename {src/test => tests}/ui/polymorphization/issue-74614.rs (100%) rename {src/test => tests}/ui/polymorphization/issue-74636.rs (100%) rename {src/test => tests}/ui/polymorphization/lifetimes.rs (100%) rename {src/test => tests}/ui/polymorphization/lifetimes.stderr (100%) rename {src/test => tests}/ui/polymorphization/normalized_sig_types.rs (100%) rename {src/test => tests}/ui/polymorphization/predicates.rs (100%) rename {src/test => tests}/ui/polymorphization/predicates.stderr (100%) rename {src/test => tests}/ui/polymorphization/promoted-function-1.rs (100%) rename {src/test => tests}/ui/polymorphization/promoted-function-1.stderr (100%) rename {src/test => tests}/ui/polymorphization/promoted-function-2.rs (100%) rename {src/test => tests}/ui/polymorphization/promoted-function-2.stderr (100%) rename {src/test => tests}/ui/polymorphization/promoted-function-3.rs (100%) rename {src/test => tests}/ui/polymorphization/promoted-function.rs (100%) rename {src/test => tests}/ui/polymorphization/symbol-ambiguity.rs (100%) rename {src/test => tests}/ui/polymorphization/too-many-generic-params.rs (100%) rename {src/test => tests}/ui/polymorphization/type_parameters/closures.rs (100%) rename {src/test => tests}/ui/polymorphization/type_parameters/closures.stderr (100%) rename {src/test => tests}/ui/polymorphization/type_parameters/functions.rs (100%) rename {src/test => tests}/ui/polymorphization/type_parameters/functions.stderr (100%) rename {src/test => tests}/ui/polymorphization/unsized_cast.rs (100%) rename {src/test => tests}/ui/polymorphization/unsized_cast.stderr (100%) rename {src/test => tests}/ui/pptypedef.rs (100%) rename {src/test => tests}/ui/pptypedef.stderr (100%) rename {src/test => tests}/ui/primitive-binop-lhs-mut.rs (100%) rename {src/test => tests}/ui/print-fuel/print-fuel.rs (100%) rename {src/test => tests}/ui/print-fuel/print-fuel.stderr (100%) rename {src/test => tests}/ui/print-stdout-eprint-stderr.rs (100%) rename {src/test => tests}/ui/print_type_sizes/anonymous.rs (100%) rename {src/test => tests}/ui/print_type_sizes/async.rs (100%) rename {src/test => tests}/ui/print_type_sizes/async.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/generator.rs (100%) rename {src/test => tests}/ui/print_type_sizes/generator.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/generator_discr_placement.rs (100%) rename {src/test => tests}/ui/print_type_sizes/generator_discr_placement.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/generics.rs (100%) rename {src/test => tests}/ui/print_type_sizes/generics.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/multiple_types.rs (100%) rename {src/test => tests}/ui/print_type_sizes/multiple_types.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/niche-filling.rs (100%) rename {src/test => tests}/ui/print_type_sizes/niche-filling.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/no_duplicates.rs (100%) rename {src/test => tests}/ui/print_type_sizes/no_duplicates.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/packed.rs (100%) rename {src/test => tests}/ui/print_type_sizes/packed.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/padding.rs (100%) rename {src/test => tests}/ui/print_type_sizes/padding.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/repr-align.rs (100%) rename {src/test => tests}/ui/print_type_sizes/repr-align.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/repr_int_c.rs (100%) rename {src/test => tests}/ui/print_type_sizes/repr_int_c.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/uninhabited.rs (100%) rename {src/test => tests}/ui/print_type_sizes/uninhabited.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/variants.rs (100%) rename {src/test => tests}/ui/print_type_sizes/variants.stdout (100%) rename {src/test => tests}/ui/print_type_sizes/zero-sized-fields.rs (100%) rename {src/test => tests}/ui/print_type_sizes/zero-sized-fields.stdout (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-inherent.rs (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-inherent.stderr (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-trait.rs (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-trait.stderr (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-type-binding.rs (100%) rename {src/test => tests}/ui/privacy/associated-item-privacy-type-binding.stderr (100%) rename {src/test => tests}/ui/privacy/auxiliary/cci_class.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/cci_class_5.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/ctor_aux.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/impl_privacy_xc_2.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/issue-17718-const-privacy.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/issue-57264-1.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/issue-57264-2.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/issue-75907.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/issue-92755.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/priv-impl-prim-ty.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/privacy_reexport.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/privacy_tuple_struct.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/private-inferred-type.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/pub_use_mods_xcrate.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/pub_use_xcrate1.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/pub_use_xcrate2.rs (100%) rename {src/test => tests}/ui/privacy/auxiliary/reachable-unnameable-items.rs (100%) rename {src/test => tests}/ui/privacy/crate-private-reexport.rs (100%) rename {src/test => tests}/ui/privacy/crate-private-reexport.stderr (100%) rename {src/test => tests}/ui/privacy/ctor.rs (100%) rename {src/test => tests}/ui/privacy/decl-macro.rs (100%) rename {src/test => tests}/ui/privacy/decl-macro.stderr (100%) rename {src/test => tests}/ui/privacy/effective_visibilities.rs (100%) rename {src/test => tests}/ui/privacy/effective_visibilities.stderr (100%) rename {src/test => tests}/ui/privacy/effective_visibilities_glob.rs (100%) rename {src/test => tests}/ui/privacy/effective_visibilities_glob.stderr (100%) rename {src/test => tests}/ui/privacy/effective_visibilities_invariants.rs (100%) rename {src/test => tests}/ui/privacy/effective_visibilities_invariants.stderr (100%) rename {src/test => tests}/ui/privacy/export-tag-variant.rs (100%) rename {src/test => tests}/ui/privacy/export-tag-variant.stderr (100%) rename {src/test => tests}/ui/privacy/impl-privacy-xc-2.rs (100%) rename {src/test => tests}/ui/privacy/issue-13641.rs (100%) rename {src/test => tests}/ui/privacy/issue-13641.stderr (100%) rename {src/test => tests}/ui/privacy/issue-17718-const-privacy.rs (100%) rename {src/test => tests}/ui/privacy/issue-17718-const-privacy.stderr (100%) rename {src/test => tests}/ui/privacy/issue-29161.rs (100%) rename {src/test => tests}/ui/privacy/issue-29161.stderr (100%) rename {src/test => tests}/ui/privacy/issue-30079.rs (100%) rename {src/test => tests}/ui/privacy/issue-30079.stderr (100%) rename {src/test => tests}/ui/privacy/issue-46209-private-enum-variant-reexport.rs (100%) rename {src/test => tests}/ui/privacy/issue-46209-private-enum-variant-reexport.stderr (100%) rename {src/test => tests}/ui/privacy/issue-57264-1.rs (100%) rename {src/test => tests}/ui/privacy/issue-57264-2.rs (100%) rename {src/test => tests}/ui/privacy/issue-75062-fieldless-tuple-struct.rs (100%) rename {src/test => tests}/ui/privacy/issue-75062-fieldless-tuple-struct.stderr (100%) rename {src/test => tests}/ui/privacy/issue-75906.rs (100%) rename {src/test => tests}/ui/privacy/issue-75906.stderr (100%) rename {src/test => tests}/ui/privacy/issue-75907.rs (100%) rename {src/test => tests}/ui/privacy/issue-75907.stderr (100%) rename {src/test => tests}/ui/privacy/issue-75907_b.rs (100%) rename {src/test => tests}/ui/privacy/issue-75907_b.stderr (100%) rename {src/test => tests}/ui/privacy/issue-79593.rs (100%) rename {src/test => tests}/ui/privacy/issue-79593.stderr (100%) rename {src/test => tests}/ui/privacy/issue-92755.rs (100%) rename {src/test => tests}/ui/privacy/legacy-ctor-visibility.rs (100%) rename {src/test => tests}/ui/privacy/legacy-ctor-visibility.stderr (100%) rename {src/test => tests}/ui/privacy/macro-private-reexport.rs (100%) rename {src/test => tests}/ui/privacy/macro-private-reexport.stderr (100%) rename {src/test => tests}/ui/privacy/priv-impl-prim-ty.rs (100%) rename {src/test => tests}/ui/privacy/priv-in-bad-locations.rs (100%) rename {src/test => tests}/ui/privacy/priv-in-bad-locations.stderr (100%) rename {src/test => tests}/ui/privacy/privacy-in-paths.rs (100%) rename {src/test => tests}/ui/privacy/privacy-in-paths.stderr (100%) rename {src/test => tests}/ui/privacy/privacy-ns.rs (100%) rename {src/test => tests}/ui/privacy/privacy-ns1.rs (100%) rename {src/test => tests}/ui/privacy/privacy-ns1.stderr (100%) rename {src/test => tests}/ui/privacy/privacy-ns2.rs (100%) rename {src/test => tests}/ui/privacy/privacy-ns2.stderr (100%) rename {src/test => tests}/ui/privacy/privacy-reexport.rs (100%) rename {src/test => tests}/ui/privacy/privacy-sanity.rs (100%) rename {src/test => tests}/ui/privacy/privacy-sanity.stderr (100%) rename {src/test => tests}/ui/privacy/privacy-ufcs.rs (100%) rename {src/test => tests}/ui/privacy/privacy-ufcs.stderr (100%) rename {src/test => tests}/ui/privacy/privacy1-rpass.rs (100%) rename {src/test => tests}/ui/privacy/privacy1.rs (100%) rename {src/test => tests}/ui/privacy/privacy1.stderr (100%) rename {src/test => tests}/ui/privacy/privacy2.rs (100%) rename {src/test => tests}/ui/privacy/privacy2.stderr (100%) rename {src/test => tests}/ui/privacy/privacy3.rs (100%) rename {src/test => tests}/ui/privacy/privacy3.stderr (100%) rename {src/test => tests}/ui/privacy/privacy4.rs (100%) rename {src/test => tests}/ui/privacy/privacy4.stderr (100%) rename {src/test => tests}/ui/privacy/privacy5.rs (100%) rename {src/test => tests}/ui/privacy/privacy5.stderr (100%) rename {src/test => tests}/ui/privacy/private-class-field.rs (100%) rename {src/test => tests}/ui/privacy/private-field-ty-err.rs (100%) rename {src/test => tests}/ui/privacy/private-field-ty-err.stderr (100%) rename {src/test => tests}/ui/privacy/private-impl-method.rs (100%) rename {src/test => tests}/ui/privacy/private-impl-method.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-assoc-ty.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-assoc-ty.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-expr-pat.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-ill-formed.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-ill-formed.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-lint.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-lint.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-non-principal-2.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-non-principal-2.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-non-principal.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-non-principal.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public-type-alias-impl-trait.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-warn.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public-warn.stderr (100%) rename {src/test => tests}/ui/privacy/private-in-public.rs (100%) rename {src/test => tests}/ui/privacy/private-in-public.stderr (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-1.rs (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-1.stderr (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-2.rs (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-2.stderr (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-3.rs (100%) rename {src/test => tests}/ui/privacy/private-inferred-type-3.stderr (100%) rename {src/test => tests}/ui/privacy/private-inferred-type.rs (100%) rename {src/test => tests}/ui/privacy/private-inferred-type.stderr (100%) rename {src/test => tests}/ui/privacy/private-item-simple.rs (100%) rename {src/test => tests}/ui/privacy/private-item-simple.stderr (100%) rename {src/test => tests}/ui/privacy/private-method-cross-crate.rs (100%) rename {src/test => tests}/ui/privacy/private-method-cross-crate.stderr (100%) rename {src/test => tests}/ui/privacy/private-method-inherited.rs (100%) rename {src/test => tests}/ui/privacy/private-method-inherited.stderr (100%) rename {src/test => tests}/ui/privacy/private-method-rpass.rs (100%) rename {src/test => tests}/ui/privacy/private-method.rs (100%) rename {src/test => tests}/ui/privacy/private-method.stderr (100%) rename {src/test => tests}/ui/privacy/private-struct-field-cross-crate.rs (100%) rename {src/test => tests}/ui/privacy/private-struct-field-cross-crate.stderr (100%) rename {src/test => tests}/ui/privacy/private-struct-field-ctor.rs (100%) rename {src/test => tests}/ui/privacy/private-struct-field-ctor.stderr (100%) rename {src/test => tests}/ui/privacy/private-struct-field-pattern.rs (100%) rename {src/test => tests}/ui/privacy/private-struct-field-pattern.stderr (100%) rename {src/test => tests}/ui/privacy/private-struct-field.rs (100%) rename {src/test => tests}/ui/privacy/private-struct-field.stderr (100%) rename {src/test => tests}/ui/privacy/private-type-in-interface.rs (100%) rename {src/test => tests}/ui/privacy/private-type-in-interface.stderr (100%) rename {src/test => tests}/ui/privacy/private-variant-reexport.rs (100%) rename {src/test => tests}/ui/privacy/private-variant-reexport.stderr (100%) rename {src/test => tests}/ui/privacy/pub-extern-privacy.rs (100%) rename {src/test => tests}/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs (100%) rename {src/test => tests}/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs (100%) rename {src/test => tests}/ui/privacy/pub-priv-dep/pub-priv1.rs (100%) rename {src/test => tests}/ui/privacy/pub-priv-dep/pub-priv1.stderr (100%) rename {src/test => tests}/ui/privacy/pub-priv-dep/std-pub.rs (100%) rename {src/test => tests}/ui/privacy/pub-use-xcrate.rs (100%) rename {src/test => tests}/ui/privacy/pub_use_mods_xcrate_exe.rs (100%) rename {src/test => tests}/ui/privacy/reachable-unnameable-items.rs (100%) rename {src/test => tests}/ui/privacy/restricted/auxiliary/pub_restricted.rs (100%) rename {src/test => tests}/ui/privacy/restricted/lookup-ignores-private.rs (100%) rename {src/test => tests}/ui/privacy/restricted/private-in-public.rs (100%) rename {src/test => tests}/ui/privacy/restricted/private-in-public.stderr (100%) rename {src/test => tests}/ui/privacy/restricted/relative-2018.rs (100%) rename {src/test => tests}/ui/privacy/restricted/relative-2018.stderr (100%) rename {src/test => tests}/ui/privacy/restricted/struct-literal-field.rs (100%) rename {src/test => tests}/ui/privacy/restricted/struct-literal-field.stderr (100%) rename {src/test => tests}/ui/privacy/restricted/test.rs (100%) rename {src/test => tests}/ui/privacy/restricted/test.stderr (100%) rename {src/test => tests}/ui/privacy/union-field-privacy-1.rs (100%) rename {src/test => tests}/ui/privacy/union-field-privacy-1.stderr (100%) rename {src/test => tests}/ui/privacy/union-field-privacy-2.rs (100%) rename {src/test => tests}/ui/privacy/union-field-privacy-2.stderr (100%) rename {src/test => tests}/ui/privacy/useless-pub.rs (100%) rename {src/test => tests}/ui/privacy/useless-pub.stderr (100%) rename {src/test => tests}/ui/privacy/where-priv-type.rs (100%) rename {src/test => tests}/ui/privacy/where-priv-type.stderr (100%) rename {src/test => tests}/ui/privacy/where-pub-type-impls-priv-trait.rs (100%) rename {src/test => tests}/ui/privacy/where-pub-type-impls-priv-trait.stderr (100%) rename {src/test => tests}/ui/proc-macro/add-impl.rs (100%) rename {src/test => tests}/ui/proc-macro/allowed-attr-stmt-expr.rs (100%) rename {src/test => tests}/ui/proc-macro/allowed-attr-stmt-expr.stdout (100%) rename {src/test => tests}/ui/proc-macro/ambiguous-builtin-attrs-test.rs (100%) rename {src/test => tests}/ui/proc-macro/ambiguous-builtin-attrs-test.stderr (100%) rename {src/test => tests}/ui/proc-macro/ambiguous-builtin-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/ambiguous-builtin-attrs.stderr (100%) rename {src/test => tests}/ui/proc-macro/amputate-span.fixed (100%) rename {src/test => tests}/ui/proc-macro/amputate-span.rs (100%) rename {src/test => tests}/ui/proc-macro/amputate-span.stderr (100%) rename {src/test => tests}/ui/proc-macro/append-impl.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-args.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-complex-fn.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-complex-fn.stdout (100%) rename {src/test => tests}/ui/proc-macro/attr-invalid-exprs.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-invalid-exprs.stderr (100%) rename {src/test => tests}/ui/proc-macro/attr-on-trait.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-stmt-expr-rpass.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-stmt-expr.rs (100%) rename {src/test => tests}/ui/proc-macro/attr-stmt-expr.stderr (100%) rename {src/test => tests}/ui/proc-macro/attr-stmt-expr.stdout (100%) rename {src/test => tests}/ui/proc-macro/attribute-after-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/attribute-after-derive.stdout (100%) rename {src/test => tests}/ui/proc-macro/attribute-spans-preserved.rs (100%) rename {src/test => tests}/ui/proc-macro/attribute-spans-preserved.stderr (100%) rename {src/test => tests}/ui/proc-macro/attribute-spans-preserved.stdout (100%) rename {src/test => tests}/ui/proc-macro/attribute-with-error.rs (100%) rename {src/test => tests}/ui/proc-macro/attribute-with-error.stderr (100%) rename {src/test => tests}/ui/proc-macro/attribute.rs (100%) rename {src/test => tests}/ui/proc-macro/attribute.stderr (100%) rename {src/test => tests}/ui/proc-macro/attributes-included.rs (100%) rename {src/test => tests}/ui/proc-macro/attributes-included.stderr (100%) rename {src/test => tests}/ui/proc-macro/attributes-on-definitions.rs (100%) rename {src/test => tests}/ui/proc-macro/attributes-on-definitions.stderr (100%) rename {src/test => tests}/ui/proc-macro/attributes-on-modules-fail.rs (100%) rename {src/test => tests}/ui/proc-macro/attributes-on-modules-fail.stderr (100%) rename {src/test => tests}/ui/proc-macro/attributes-on-modules.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/add-impl.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/amputate-span.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/api/cmp.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/api/mod.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/api/parse.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/append-impl.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/assert-span-pos.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attr-args.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attr-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attr-on-trait.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attr-stmt-expr.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attribute-spans-preserved.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attributes-included.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/attributes-on-definitions.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/bang-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/bang_proc_macro2.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/builtin-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/call-deprecated.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/call-site.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/cond_plugin.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/count_compound_ops.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/custom-attr-only-one-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/custom-quote.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-a.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-atob.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-attr-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-b-rpass.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-b.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-bad.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-clona.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-ctod.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-foo.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-helper-shadowed-2.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-helper-shadowing-2.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-helper-shadowing.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-nothing.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-same-struct.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-two-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-union.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-unstable-2.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/derive-unstable.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/dollar-crate-external.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/double.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/duplicate.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/edition-imports-2015.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/empty-crate.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/expand-expr.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/expand-with-a-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/external-crate-var.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/first-second.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/gen-lifetime-token.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/gen-macro-rules-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/gen-macro-rules.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/generate-dollar-ident.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/generate-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/hygiene_example.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/hygiene_example_codegen.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/included-file.txt (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/invalid-punct-ident.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/is-available.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-104884.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-38586.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-39889.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-42708.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-50061.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-50493.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-59191.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-66286.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-75801.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-79242.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-79825.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-83510.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/issue-91800-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/lifetimes-rpass.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/lifetimes.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/macro-only-syntax.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/make-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/meta-delim.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/meta-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/mixed-site-span.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/modify-ast.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/multiple-derives.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/multispan.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/negative-token.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/nested-macro-rules.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/nonterminal-recollect-attr.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/not-joint.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/parent-source-spans.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/proc-macro-panic.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/raw-ident.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/re-export.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/recollect.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/resolved-located-at.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/span-api-tests.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/span-from-proc-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/span-test-macros.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/subspan.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/test-macros.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/three-equals.rs (100%) rename {src/test => tests}/ui/proc-macro/auxiliary/weird-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/bang-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/break-token-spans.rs (100%) rename {src/test => tests}/ui/proc-macro/break-token-spans.stderr (100%) rename {src/test => tests}/ui/proc-macro/call-deprecated.rs (100%) rename {src/test => tests}/ui/proc-macro/call-deprecated.stderr (100%) rename {src/test => tests}/ui/proc-macro/call-site.rs (100%) rename {src/test => tests}/ui/proc-macro/capture-macro-rules-invoke.rs (100%) rename {src/test => tests}/ui/proc-macro/capture-macro-rules-invoke.stdout (100%) rename {src/test => tests}/ui/proc-macro/capture-unglued-token.rs (100%) rename {src/test => tests}/ui/proc-macro/capture-unglued-token.stdout (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval-fail.rs (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval-fail.stderr (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval-inner.rs (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval-inner.stdout (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval.rs (100%) rename {src/test => tests}/ui/proc-macro/cfg-eval.stdout (100%) rename {src/test => tests}/ui/proc-macro/count_compound_ops.rs (100%) rename {src/test => tests}/ui/proc-macro/crate-attrs-multiple.rs (100%) rename {src/test => tests}/ui/proc-macro/crate-var.rs (100%) rename {src/test => tests}/ui/proc-macro/crt-static.rs (100%) rename {src/test => tests}/ui/proc-macro/custom-attr-only-one-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/debug/auxiliary/macro-dump-debug.rs (100%) rename {src/test => tests}/ui/proc-macro/debug/dump-debug-span-debug.rs (100%) rename {src/test => tests}/ui/proc-macro/debug/dump-debug-span-debug.stderr (100%) rename {src/test => tests}/ui/proc-macro/debug/dump-debug.rs (100%) rename {src/test => tests}/ui/proc-macro/debug/dump-debug.stderr (100%) rename {src/test => tests}/ui/proc-macro/define-two.rs (100%) rename {src/test => tests}/ui/proc-macro/define-two.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-attr-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-b.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-bad.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-bad.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-expand-order.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-expand-order.stdout (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-configured.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-legacy-limits.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-legacy-limits.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-legacy-spurious.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-legacy-spurious.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-shadowed.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-shadowing-2.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-shadowing.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-shadowing.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-helper-vs-legacy.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-in-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-multiple-with-packed.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-same-struct.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-same-struct.stdout (100%) rename {src/test => tests}/ui/proc-macro/derive-still-gated.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-still-gated.stderr (100%) rename {src/test => tests}/ui/proc-macro/derive-test.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-two-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/derive-union.rs (100%) rename {src/test => tests}/ui/proc-macro/disappearing-resolution.rs (100%) rename {src/test => tests}/ui/proc-macro/disappearing-resolution.stderr (100%) rename {src/test => tests}/ui/proc-macro/doc-comment-preserved.rs (100%) rename {src/test => tests}/ui/proc-macro/doc-comment-preserved.stdout (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate-issue-101211.rs (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate-issue-57089.rs (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate-issue-57089.stdout (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate-issue-62325.rs (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate-issue-62325.stdout (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate.rs (100%) rename {src/test => tests}/ui/proc-macro/dollar-crate.stdout (100%) rename {src/test => tests}/ui/proc-macro/edition-imports-2018.rs (100%) rename {src/test => tests}/ui/proc-macro/empty-crate.rs (100%) rename {src/test => tests}/ui/proc-macro/empty-where-clause.rs (100%) rename {src/test => tests}/ui/proc-macro/empty-where-clause.stderr (100%) rename {src/test => tests}/ui/proc-macro/expand-expr.rs (100%) rename {src/test => tests}/ui/proc-macro/expand-expr.stderr (100%) rename {src/test => tests}/ui/proc-macro/expand-to-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/expand-to-derive.stdout (100%) rename {src/test => tests}/ui/proc-macro/expand-to-unstable.rs (100%) rename {src/test => tests}/ui/proc-macro/expand-to-unstable.stderr (100%) rename {src/test => tests}/ui/proc-macro/expand-with-a-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/export-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/export-macro.stderr (100%) rename {src/test => tests}/ui/proc-macro/exports.rs (100%) rename {src/test => tests}/ui/proc-macro/exports.stderr (100%) rename {src/test => tests}/ui/proc-macro/expr-stmt-nonterminal-tokens.rs (100%) rename {src/test => tests}/ui/proc-macro/expr-stmt-nonterminal-tokens.stdout (100%) rename {src/test => tests}/ui/proc-macro/extern-prelude-extern-crate-proc-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/gen-lifetime-token.rs (100%) rename {src/test => tests}/ui/proc-macro/gen-macro-rules-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/gen-macro-rules-hygiene.stderr (100%) rename {src/test => tests}/ui/proc-macro/gen-macro-rules.rs (100%) rename {src/test => tests}/ui/proc-macro/generate-dollar-ident.rs (100%) rename {src/test => tests}/ui/proc-macro/generate-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/generate-mod.stderr (100%) rename {src/test => tests}/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs (100%) rename {src/test => tests}/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr (100%) rename {src/test => tests}/ui/proc-macro/helper-attr-blocked-by-import.rs (100%) rename {src/test => tests}/ui/proc-macro/hygiene_example.rs (100%) rename {src/test => tests}/ui/proc-macro/illegal-proc-macro-derive-use.rs (100%) rename {src/test => tests}/ui/proc-macro/illegal-proc-macro-derive-use.stderr (100%) rename {src/test => tests}/ui/proc-macro/import.rs (100%) rename {src/test => tests}/ui/proc-macro/import.stderr (100%) rename {src/test => tests}/ui/proc-macro/inert-attribute-order.rs (100%) rename {src/test => tests}/ui/proc-macro/inert-attribute-order.stdout (100%) rename {src/test => tests}/ui/proc-macro/inner-attr-non-inline-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/inner-attr-non-inline-mod.stderr (100%) rename {src/test => tests}/ui/proc-macro/inner-attr-non-inline-mod.stdout (100%) rename {src/test => tests}/ui/proc-macro/inner-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/inner-attrs.stderr (100%) rename {src/test => tests}/ui/proc-macro/inner-attrs.stdout (100%) rename {src/test => tests}/ui/proc-macro/input-interpolated.rs (100%) rename {src/test => tests}/ui/proc-macro/input-interpolated.stdout (100%) rename {src/test => tests}/ui/proc-macro/invalid-attributes.rs (100%) rename {src/test => tests}/ui/proc-macro/invalid-attributes.stderr (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-1.rs (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-1.stderr (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-2.rs (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-2.stderr (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-3.rs (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-3.stderr (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-4.rs (100%) rename {src/test => tests}/ui/proc-macro/invalid-punct-ident-4.stderr (100%) rename {src/test => tests}/ui/proc-macro/is-available.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-36935.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-36935.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-37788.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-37788.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-38586.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-38586.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-39889.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-42708.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-50061.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-50493.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-50493.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-53481.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-59191-replace-root-with-fn.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-59191-replace-root-with-fn.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-66286.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-66286.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-73933-procedural-masquerade.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-73933-procedural-masquerade.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-75734-pp-paren.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-75734-pp-paren.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-75801.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-75801.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-75930-derive-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-75930-derive-cfg.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-75930-derive-cfg.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-76182-leading-vert-pat.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-76182-leading-vert-pat.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-76270-panic-in-libproc-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-76270-panic-in-libproc-macro.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-78675-captured-inner-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-78675-captured-inner-attrs.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-79148.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-79148.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-79242-slow-retokenize-check.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-79825.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-80760-empty-stmt.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-80760-empty-stmt.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-81007-item-attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-81007-item-attrs.stdout (100%) rename {src/test => tests}/ui/proc-macro/issue-81543-item-parse-err.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-81543-item-parse-err.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-81555.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-83510.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-83510.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-86781-bad-inner-doc.fixed (100%) rename {src/test => tests}/ui/proc-macro/issue-86781-bad-inner-doc.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-86781-bad-inner-doc.stderr (100%) rename {src/test => tests}/ui/proc-macro/issue-91800.rs (100%) rename {src/test => tests}/ui/proc-macro/issue-91800.stderr (100%) rename {src/test => tests}/ui/proc-macro/item-error.rs (100%) rename {src/test => tests}/ui/proc-macro/item-error.stderr (100%) rename {src/test => tests}/ui/proc-macro/keep-expr-tokens.rs (100%) rename {src/test => tests}/ui/proc-macro/keep-expr-tokens.stderr (100%) rename {src/test => tests}/ui/proc-macro/keep-expr-tokens.stdout (100%) rename {src/test => tests}/ui/proc-macro/lifetimes-rpass.rs (100%) rename {src/test => tests}/ui/proc-macro/lifetimes.rs (100%) rename {src/test => tests}/ui/proc-macro/lifetimes.stderr (100%) rename {src/test => tests}/ui/proc-macro/lints_in_proc_macros.rs (100%) rename {src/test => tests}/ui/proc-macro/lints_in_proc_macros.stderr (100%) rename {src/test => tests}/ui/proc-macro/load-panic-backtrace.rs (100%) rename {src/test => tests}/ui/proc-macro/load-panic-backtrace.stderr (100%) rename {src/test => tests}/ui/proc-macro/load-panic.rs (100%) rename {src/test => tests}/ui/proc-macro/load-panic.stderr (100%) rename {src/test => tests}/ui/proc-macro/load-two.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-brackets.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-brackets.stderr (100%) rename {src/test => tests}/ui/proc-macro/macro-crate-multi-decorator.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-namespace-reserved-2.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-namespace-reserved-2.stderr (100%) rename {src/test => tests}/ui/proc-macro/macro-namespace-reserved.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-namespace-reserved.stderr (100%) rename {src/test => tests}/ui/proc-macro/macro-quote-cond.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-rules-derive-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-rules-derive-cfg.stdout (100%) rename {src/test => tests}/ui/proc-macro/macro-rules-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-rules-derive.stderr (100%) rename {src/test => tests}/ui/proc-macro/macro-use-attr.rs (100%) rename {src/test => tests}/ui/proc-macro/macro-use-bang.rs (100%) rename {src/test => tests}/ui/proc-macro/macros-in-extern-derive.rs (100%) rename {src/test => tests}/ui/proc-macro/macros-in-extern-derive.stderr (100%) rename {src/test => tests}/ui/proc-macro/macros-in-extern.rs (100%) rename {src/test => tests}/ui/proc-macro/macros-in-type.rs (100%) rename {src/test => tests}/ui/proc-macro/meta-delim.rs (100%) rename {src/test => tests}/ui/proc-macro/meta-macro-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/meta-macro-hygiene.stdout (100%) rename {src/test => tests}/ui/proc-macro/meta-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/meta-macro.stdout (100%) rename {src/test => tests}/ui/proc-macro/mixed-site-span.rs (100%) rename {src/test => tests}/ui/proc-macro/mixed-site-span.stderr (100%) rename {src/test => tests}/ui/proc-macro/modify-ast.rs (100%) rename {src/test => tests}/ui/proc-macro/module.rs (100%) rename {src/test => tests}/ui/proc-macro/module_with_attrs.rs (100%) rename {src/test => tests}/ui/proc-macro/multispan.rs (100%) rename {src/test => tests}/ui/proc-macro/multispan.stderr (100%) rename {src/test => tests}/ui/proc-macro/negative-token.rs (100%) rename {src/test => tests}/ui/proc-macro/nested-derive-cfg.rs (100%) rename {src/test => tests}/ui/proc-macro/nested-derive-cfg.stdout (100%) rename {src/test => tests}/ui/proc-macro/nested-item-spans.rs (100%) rename {src/test => tests}/ui/proc-macro/nested-item-spans.stderr (100%) rename {src/test => tests}/ui/proc-macro/nested-macro-rules.rs (100%) rename {src/test => tests}/ui/proc-macro/nested-macro-rules.stdout (100%) rename {src/test => tests}/ui/proc-macro/nested-nonterminal-tokens.rs (100%) rename {src/test => tests}/ui/proc-macro/nested-nonterminal-tokens.stdout (100%) rename {src/test => tests}/ui/proc-macro/no-macro-use-attr.rs (100%) rename {src/test => tests}/ui/proc-macro/no-macro-use-attr.stderr (100%) rename {src/test => tests}/ui/proc-macro/no-missing-docs.rs (100%) rename {src/test => tests}/ui/proc-macro/nodelim-groups.rs (100%) rename {src/test => tests}/ui/proc-macro/nodelim-groups.stdout (100%) rename {src/test => tests}/ui/proc-macro/non-root.rs (100%) rename {src/test => tests}/ui/proc-macro/non-root.stderr (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-expansion.rs (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-expansion.stdout (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-recollect-attr.rs (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-recollect-attr.stdout (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-token-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/nonterminal-token-hygiene.stdout (100%) rename {src/test => tests}/ui/proc-macro/not-joint.rs (100%) rename {src/test => tests}/ui/proc-macro/out-of-line-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/outer/inner.rs (100%) rename {src/test => tests}/ui/proc-macro/parent-source-spans.rs (100%) rename {src/test => tests}/ui/proc-macro/parent-source-spans.stderr (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack-hide.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack-hide.stdout (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack-show.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack-show.stderr (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack-show.stdout (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack/allsorts-rental-0.5.6/src/lib.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack/rental-0.5.5/src/lib.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-hack/rental-0.5.6/src/lib.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-tts.rs (100%) rename {src/test => tests}/ui/proc-macro/pretty-print-tts.stdout (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-attributes.rs (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-attributes.stderr (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-deprecated-attr.rs (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-gates.rs (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-gates.stderr (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-gates2.rs (100%) rename {src/test => tests}/ui/proc-macro/proc-macro-gates2.stderr (100%) rename {src/test => tests}/ui/proc-macro/pub-at-crate-root.rs (100%) rename {src/test => tests}/ui/proc-macro/pub-at-crate-root.stderr (100%) rename {src/test => tests}/ui/proc-macro/quote-debug.rs (100%) rename {src/test => tests}/ui/proc-macro/quote-debug.stdout (100%) rename {src/test => tests}/ui/proc-macro/raw-ident.rs (100%) rename {src/test => tests}/ui/proc-macro/raw-ident.stderr (100%) rename {src/test => tests}/ui/proc-macro/reserved-macro-names.rs (100%) rename {src/test => tests}/ui/proc-macro/reserved-macro-names.stderr (100%) rename {src/test => tests}/ui/proc-macro/resolve-error.rs (100%) rename {src/test => tests}/ui/proc-macro/resolve-error.stderr (100%) rename {src/test => tests}/ui/proc-macro/resolved-located-at.rs (100%) rename {src/test => tests}/ui/proc-macro/resolved-located-at.stderr (100%) rename {src/test => tests}/ui/proc-macro/shadow.rs (100%) rename {src/test => tests}/ui/proc-macro/shadow.stderr (100%) rename {src/test => tests}/ui/proc-macro/signature.rs (100%) rename {src/test => tests}/ui/proc-macro/signature.stderr (100%) rename {src/test => tests}/ui/proc-macro/smoke.rs (100%) rename {src/test => tests}/ui/proc-macro/span-absolute-posititions.rs (100%) rename {src/test => tests}/ui/proc-macro/span-absolute-posititions.stderr (100%) rename {src/test => tests}/ui/proc-macro/span-api-tests.rs (100%) rename {src/test => tests}/ui/proc-macro/span-from-proc-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/span-from-proc-macro.stderr (100%) rename {src/test => tests}/ui/proc-macro/span-preservation.rs (100%) rename {src/test => tests}/ui/proc-macro/span-preservation.stderr (100%) rename {src/test => tests}/ui/proc-macro/struct-field-macro.rs (100%) rename {src/test => tests}/ui/proc-macro/subspan.rs (100%) rename {src/test => tests}/ui/proc-macro/subspan.stderr (100%) rename {src/test => tests}/ui/proc-macro/test.rs (100%) rename {src/test => tests}/ui/proc-macro/three-equals.rs (100%) rename {src/test => tests}/ui/proc-macro/three-equals.stderr (100%) rename {src/test => tests}/ui/proc-macro/trailing-plus.rs (100%) rename {src/test => tests}/ui/proc-macro/trailing-plus.stdout (100%) rename {src/test => tests}/ui/proc-macro/trait-fn-args-2015.rs (100%) rename {src/test => tests}/ui/proc-macro/two-crate-types-1.rs (100%) rename {src/test => tests}/ui/proc-macro/two-crate-types-1.stderr (100%) rename {src/test => tests}/ui/proc-macro/two-crate-types-2.rs (100%) rename {src/test => tests}/ui/proc-macro/two-crate-types-2.stderr (100%) rename {src/test => tests}/ui/proc-macro/unsafe-foreign-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/unsafe-mod.rs (100%) rename {src/test => tests}/ui/proc-macro/visibility-path.rs (100%) rename {src/test => tests}/ui/proc-macro/visibility-path.stderr (100%) rename {src/test => tests}/ui/proc-macro/weird-braces.rs (100%) rename {src/test => tests}/ui/proc-macro/weird-braces.stdout (100%) rename {src/test => tests}/ui/proc-macro/weird-hygiene.rs (100%) rename {src/test => tests}/ui/proc-macro/weird-hygiene.stderr (100%) rename {src/test => tests}/ui/process-termination/process-termination-blocking-io.rs (100%) rename {src/test => tests}/ui/process-termination/process-termination-simple.rs (100%) rename {src/test => tests}/ui/process/core-run-destroy.rs (100%) rename {src/test => tests}/ui/process/fds-are-cloexec.rs (100%) rename {src/test => tests}/ui/process/issue-13304.rs (100%) rename {src/test => tests}/ui/process/issue-14456.rs (100%) rename {src/test => tests}/ui/process/issue-14940.rs (100%) rename {src/test => tests}/ui/process/issue-16272.rs (100%) rename {src/test => tests}/ui/process/issue-20091.rs (100%) rename {src/test => tests}/ui/process/multi-panic.rs (100%) rename {src/test => tests}/ui/process/no-stdio.rs (100%) rename {src/test => tests}/ui/process/nofile-limit.rs (100%) rename {src/test => tests}/ui/process/process-envs.rs (100%) rename {src/test => tests}/ui/process/process-exit.rs (100%) rename {src/test => tests}/ui/process/process-panic-after-fork.rs (100%) rename {src/test => tests}/ui/process/process-remove-from-env.rs (100%) rename {src/test => tests}/ui/process/process-sigpipe.rs (100%) rename {src/test => tests}/ui/process/process-spawn-nonexistent.rs (100%) rename {src/test => tests}/ui/process/process-spawn-with-unicode-params.rs (100%) rename {src/test => tests}/ui/process/process-status-inherits-stdin.rs (100%) rename {src/test => tests}/ui/process/signal-exit-status.rs (100%) rename {src/test => tests}/ui/process/sigpipe-should-be-ignored.rs (100%) rename {src/test => tests}/ui/process/tls-exit-status.rs (100%) rename {src/test => tests}/ui/process/try-wait.rs (100%) rename {src/test => tests}/ui/project-cache-issue-31849.rs (100%) rename {src/test => tests}/ui/ptr-coercion-rpass.rs (100%) rename {src/test => tests}/ui/ptr-coercion.rs (100%) rename {src/test => tests}/ui/ptr-coercion.stderr (100%) rename {src/test => tests}/ui/ptr_ops/issue-80309-safe.rs (100%) rename {src/test => tests}/ui/ptr_ops/issue-80309.rs (100%) rename {src/test => tests}/ui/pub/issue-33174-restricted-type-in-public-interface.rs (100%) rename {src/test => tests}/ui/pub/issue-33174-restricted-type-in-public-interface.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-2.fixed (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-2.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-2.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-3.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-3.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-or-struct-2.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-or-struct-2.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-or-struct.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-or-struct.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-with-lifetime-2.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-with-lifetime-2.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-with-lifetime.fixed (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-with-lifetime.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn-with-lifetime.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-fn.fixed (100%) rename {src/test => tests}/ui/pub/pub-ident-fn.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-fn.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-struct-with-lifetime.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-struct-with-lifetime.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-struct.fixed (100%) rename {src/test => tests}/ui/pub/pub-ident-struct.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-struct.stderr (100%) rename {src/test => tests}/ui/pub/pub-ident-with-lifetime-incomplete.rs (100%) rename {src/test => tests}/ui/pub/pub-ident-with-lifetime-incomplete.stderr (100%) rename {src/test => tests}/ui/pub/pub-reexport-priv-extern-crate.rs (100%) rename {src/test => tests}/ui/pub/pub-reexport-priv-extern-crate.stderr (100%) rename {src/test => tests}/ui/pub/pub-restricted-error-fn.rs (100%) rename {src/test => tests}/ui/pub/pub-restricted-error-fn.stderr (100%) rename {src/test => tests}/ui/pub/pub-restricted-error.rs (100%) rename {src/test => tests}/ui/pub/pub-restricted-error.stderr (100%) rename {src/test => tests}/ui/pub/pub-restricted-non-path.rs (100%) rename {src/test => tests}/ui/pub/pub-restricted-non-path.stderr (100%) rename {src/test => tests}/ui/pub/pub-restricted.rs (100%) rename {src/test => tests}/ui/pub/pub-restricted.stderr (100%) rename {src/test => tests}/ui/qualified/qualified-path-params-2.rs (100%) rename {src/test => tests}/ui/qualified/qualified-path-params-2.stderr (100%) rename {src/test => tests}/ui/qualified/qualified-path-params.rs (100%) rename {src/test => tests}/ui/qualified/qualified-path-params.stderr (100%) rename {src/test => tests}/ui/query-system/fn-sig-cycle-arity.rs (100%) rename {src/test => tests}/ui/query-system/fn-sig-cycle-arity.stderr (100%) rename {src/test => tests}/ui/query-system/issue-83479.rs (100%) rename {src/test => tests}/ui/query-system/issue-83479.stderr (100%) rename {src/test => tests}/ui/query-system/query_depth.rs (100%) rename {src/test => tests}/ui/query-system/query_depth.stderr (100%) rename {src/test => tests}/ui/query-visibility.rs (100%) rename {src/test => tests}/ui/range/exclusive-range-patterns-2021.rs (100%) rename {src/test => tests}/ui/range/exclusive-range-patterns-2021.stderr (100%) rename {src/test => tests}/ui/range/issue-54505-no-literals.fixed (100%) rename {src/test => tests}/ui/range/issue-54505-no-literals.rs (100%) rename {src/test => tests}/ui/range/issue-54505-no-literals.stderr (100%) rename {src/test => tests}/ui/range/issue-54505-no-std.rs (100%) rename {src/test => tests}/ui/range/issue-54505-no-std.stderr (100%) rename {src/test => tests}/ui/range/issue-54505.fixed (100%) rename {src/test => tests}/ui/range/issue-54505.rs (100%) rename {src/test => tests}/ui/range/issue-54505.stderr (100%) rename {src/test => tests}/ui/range/issue-73553-misinterp-range-literal.rs (100%) rename {src/test => tests}/ui/range/issue-73553-misinterp-range-literal.stderr (100%) rename {src/test => tests}/ui/range/range-1.rs (100%) rename {src/test => tests}/ui/range/range-1.stderr (100%) rename {src/test => tests}/ui/range/range-inclusive-pattern-precedence.fixed (100%) rename {src/test => tests}/ui/range/range-inclusive-pattern-precedence.rs (100%) rename {src/test => tests}/ui/range/range-inclusive-pattern-precedence.stderr (100%) rename {src/test => tests}/ui/range/range-inclusive-pattern-precedence2.rs (100%) rename {src/test => tests}/ui/range/range-inclusive-pattern-precedence2.stderr (100%) rename {src/test => tests}/ui/range/range_traits-1.rs (100%) rename {src/test => tests}/ui/range/range_traits-1.stderr (100%) rename {src/test => tests}/ui/range/range_traits-2.rs (100%) rename {src/test => tests}/ui/range/range_traits-2.stderr (100%) rename {src/test => tests}/ui/range/range_traits-3.rs (100%) rename {src/test => tests}/ui/range/range_traits-3.stderr (100%) rename {src/test => tests}/ui/range/range_traits-4.rs (100%) rename {src/test => tests}/ui/range/range_traits-5.rs (100%) rename {src/test => tests}/ui/range/range_traits-6.rs (100%) rename {src/test => tests}/ui/range/range_traits-6.stderr (100%) rename {src/test => tests}/ui/range/range_traits-7.rs (100%) rename {src/test => tests}/ui/range_inclusive.rs (100%) rename {src/test => tests}/ui/raw-ref-op/feature-raw-ref-op.rs (100%) rename {src/test => tests}/ui/raw-ref-op/feature-raw-ref-op.stderr (100%) rename {src/test => tests}/ui/raw-ref-op/raw-ref-op.rs (100%) rename {src/test => tests}/ui/raw-ref-op/raw-ref-temp-deref.rs (100%) rename {src/test => tests}/ui/raw-ref-op/raw-ref-temp.rs (100%) rename {src/test => tests}/ui/raw-ref-op/raw-ref-temp.stderr (100%) rename {src/test => tests}/ui/raw-ref-op/unusual_locations.rs (100%) rename {src/test => tests}/ui/raw-str.rs (100%) rename {src/test => tests}/ui/reachable-unnameable-type-alias.rs (100%) rename {src/test => tests}/ui/reachable/README.md (100%) rename {src/test => tests}/ui/reachable/auxiliary/issue-11225-1.rs (100%) rename {src/test => tests}/ui/reachable/auxiliary/issue-11225-2.rs (100%) rename {src/test => tests}/ui/reachable/auxiliary/issue-11225-3.rs (100%) rename {src/test => tests}/ui/reachable/auxiliary/unreachable_variant.rs (100%) rename {src/test => tests}/ui/reachable/expr_add.rs (100%) rename {src/test => tests}/ui/reachable/expr_add.stderr (100%) rename {src/test => tests}/ui/reachable/expr_again.rs (100%) rename {src/test => tests}/ui/reachable/expr_again.stderr (100%) rename {src/test => tests}/ui/reachable/expr_andand.rs (100%) rename {src/test => tests}/ui/reachable/expr_array.rs (100%) rename {src/test => tests}/ui/reachable/expr_array.stderr (100%) rename {src/test => tests}/ui/reachable/expr_assign.rs (100%) rename {src/test => tests}/ui/reachable/expr_assign.stderr (100%) rename {src/test => tests}/ui/reachable/expr_block.rs (100%) rename {src/test => tests}/ui/reachable/expr_block.stderr (100%) rename {src/test => tests}/ui/reachable/expr_box.rs (100%) rename {src/test => tests}/ui/reachable/expr_box.stderr (100%) rename {src/test => tests}/ui/reachable/expr_call.rs (100%) rename {src/test => tests}/ui/reachable/expr_call.stderr (100%) rename {src/test => tests}/ui/reachable/expr_cast.rs (100%) rename {src/test => tests}/ui/reachable/expr_cast.stderr (100%) rename {src/test => tests}/ui/reachable/expr_if.rs (100%) rename {src/test => tests}/ui/reachable/expr_if.stderr (100%) rename {src/test => tests}/ui/reachable/expr_loop.rs (100%) rename {src/test => tests}/ui/reachable/expr_loop.stderr (100%) rename {src/test => tests}/ui/reachable/expr_match.rs (100%) rename {src/test => tests}/ui/reachable/expr_match.stderr (100%) rename {src/test => tests}/ui/reachable/expr_method.rs (100%) rename {src/test => tests}/ui/reachable/expr_method.stderr (100%) rename {src/test => tests}/ui/reachable/expr_oror.rs (100%) rename {src/test => tests}/ui/reachable/expr_repeat.rs (100%) rename {src/test => tests}/ui/reachable/expr_repeat.stderr (100%) rename {src/test => tests}/ui/reachable/expr_return.rs (100%) rename {src/test => tests}/ui/reachable/expr_return.stderr (100%) rename {src/test => tests}/ui/reachable/expr_return_in_macro.rs (100%) rename {src/test => tests}/ui/reachable/expr_return_in_macro.stderr (100%) rename {src/test => tests}/ui/reachable/expr_struct.rs (100%) rename {src/test => tests}/ui/reachable/expr_struct.stderr (100%) rename {src/test => tests}/ui/reachable/expr_tup.rs (100%) rename {src/test => tests}/ui/reachable/expr_tup.stderr (100%) rename {src/test => tests}/ui/reachable/expr_type.rs (100%) rename {src/test => tests}/ui/reachable/expr_type.stderr (100%) rename {src/test => tests}/ui/reachable/expr_unary.rs (100%) rename {src/test => tests}/ui/reachable/expr_unary.stderr (100%) rename {src/test => tests}/ui/reachable/expr_while.rs (100%) rename {src/test => tests}/ui/reachable/expr_while.stderr (100%) rename {src/test => tests}/ui/reachable/issue-11225-1.rs (100%) rename {src/test => tests}/ui/reachable/issue-11225-2.rs (100%) rename {src/test => tests}/ui/reachable/issue-11225-3.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-arm.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-arm.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-code-ret.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-code-ret.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-code.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-code.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-in-call.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-in-call.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-loop-patterns.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-loop-patterns.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-try-pattern.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-try-pattern.stderr (100%) rename {src/test => tests}/ui/reachable/unreachable-variant.rs (100%) rename {src/test => tests}/ui/reachable/unreachable-variant.stderr (100%) rename {src/test => tests}/ui/reachable/unwarned-match-on-never.rs (100%) rename {src/test => tests}/ui/reachable/unwarned-match-on-never.stderr (100%) rename {src/test => tests}/ui/realloc-16687.rs (100%) rename {src/test => tests}/ui/reassign-ref-mut.rs (100%) rename {src/test => tests}/ui/reassign-ref-mut.stderr (100%) rename {src/test => tests}/ui/recursion/auxiliary/recursive_reexports.rs (100%) rename {src/test => tests}/ui/recursion/instantiable.rs (100%) rename {src/test => tests}/ui/recursion/issue-26548-recursion-via-normalize.rs (100%) rename {src/test => tests}/ui/recursion/issue-26548-recursion-via-normalize.stderr (100%) rename {src/test => tests}/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr (100%) rename {src/test => tests}/ui/recursion/issue-38591-non-regular-dropck-recursion.rs (100%) rename {src/test => tests}/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr (100%) rename {src/test => tests}/ui/recursion/issue-83150.rs (100%) rename {src/test => tests}/ui/recursion/issue-83150.stderr (100%) rename {src/test => tests}/ui/recursion/issue-86784.rs (100%) rename {src/test => tests}/ui/recursion/issue-95134.rs (100%) rename {src/test => tests}/ui/recursion/recursion.polonius.stderr (100%) rename {src/test => tests}/ui/recursion/recursion.rs (100%) rename {src/test => tests}/ui/recursion/recursion.stderr (100%) rename {src/test => tests}/ui/recursion/recursive-enum.rs (100%) rename {src/test => tests}/ui/recursion/recursive-enum.stderr (100%) rename {src/test => tests}/ui/recursion/recursive-reexports.rs (100%) rename {src/test => tests}/ui/recursion/recursive-reexports.stderr (100%) rename {src/test => tests}/ui/recursion/recursive-requirements.rs (100%) rename {src/test => tests}/ui/recursion/recursive-requirements.stderr (100%) rename {src/test => tests}/ui/recursion/recursive-static-definition.rs (100%) rename {src/test => tests}/ui/recursion/recursive-static-definition.stderr (100%) rename {src/test => tests}/ui/recursion/recursive-types-are-not-uninhabited.rs (100%) rename {src/test => tests}/ui/recursion/recursive-types-are-not-uninhabited.stderr (100%) rename {src/test => tests}/ui/recursion_limit/empty.rs (100%) rename {src/test => tests}/ui/recursion_limit/empty.stderr (100%) rename {src/test => tests}/ui/recursion_limit/invalid_digit.rs (100%) rename {src/test => tests}/ui/recursion_limit/invalid_digit.stderr (100%) rename {src/test => tests}/ui/recursion_limit/invalid_digit_type.rs (100%) rename {src/test => tests}/ui/recursion_limit/invalid_digit_type.stderr (100%) rename {src/test => tests}/ui/recursion_limit/invalid_macro.rs (100%) rename {src/test => tests}/ui/recursion_limit/invalid_macro.stderr (100%) rename {src/test => tests}/ui/recursion_limit/no-value.rs (100%) rename {src/test => tests}/ui/recursion_limit/no-value.stderr (100%) rename {src/test => tests}/ui/recursion_limit/overflow.rs (100%) rename {src/test => tests}/ui/recursion_limit/overflow.stderr (100%) rename {src/test => tests}/ui/recursion_limit/zero-overflow.rs (100%) rename {src/test => tests}/ui/recursion_limit/zero-overflow.stderr (100%) rename {src/test => tests}/ui/recursion_limit/zero.rs (100%) rename {src/test => tests}/ui/recursion_limit/zero.stderr (100%) rename {src/test => tests}/ui/reexport-test-harness-main.rs (100%) rename {src/test => tests}/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs (100%) rename {src/test => tests}/ui/regions/closure-in-projection-issue-97405.rs (100%) rename {src/test => tests}/ui/regions/closure-in-projection-issue-97405.stderr (100%) rename {src/test => tests}/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs (100%) rename {src/test => tests}/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr (100%) rename {src/test => tests}/ui/regions/forall-wf-ref-reflexive.rs (100%) rename {src/test => tests}/ui/regions/forall-wf-ref-reflexive.stderr (100%) rename {src/test => tests}/ui/regions/forall-wf-reflexive.rs (100%) rename {src/test => tests}/ui/regions/init-res-into-things.rs (100%) rename {src/test => tests}/ui/regions/issue-101280.rs (100%) rename {src/test => tests}/ui/regions/issue-101280.stderr (100%) rename {src/test => tests}/ui/regions/issue-102374.rs (100%) rename {src/test => tests}/ui/regions/issue-102374.stderr (100%) rename {src/test => tests}/ui/regions/issue-102392.rs (100%) rename {src/test => tests}/ui/regions/issue-102392.stderr (100%) rename {src/test => tests}/ui/regions/issue-11612.rs (100%) rename {src/test => tests}/ui/regions/issue-12470.rs (100%) rename {src/test => tests}/ui/regions/issue-12470.stderr (100%) rename {src/test => tests}/ui/regions/issue-21520.rs (100%) rename {src/test => tests}/ui/regions/issue-24085.rs (100%) rename {src/test => tests}/ui/regions/issue-26448-1.rs (100%) rename {src/test => tests}/ui/regions/issue-26448-2.rs (100%) rename {src/test => tests}/ui/regions/issue-26448-3.rs (100%) rename {src/test => tests}/ui/regions/issue-2718.rs (100%) rename {src/test => tests}/ui/regions/issue-28848.rs (100%) rename {src/test => tests}/ui/regions/issue-28848.stderr (100%) rename {src/test => tests}/ui/regions/issue-5243.rs (100%) rename {src/test => tests}/ui/regions/issue-56537-closure-uses-region-from-container.rs (100%) rename {src/test => tests}/ui/regions/issue-6157.rs (100%) rename {src/test => tests}/ui/regions/issue-72051-member-region-hang.rs (100%) rename {src/test => tests}/ui/regions/issue-78262.base.stderr (100%) rename {src/test => tests}/ui/regions/issue-78262.polonius.stderr (100%) rename {src/test => tests}/ui/regions/issue-78262.rs (100%) rename {src/test => tests}/ui/regions/outlives-with-missing.rs (100%) rename {src/test => tests}/ui/regions/outlives-with-missing.stderr (100%) rename {src/test => tests}/ui/regions/owned-implies-static.rs (100%) rename {src/test => tests}/ui/regions/rcvr-borrowed-to-region.rs (100%) rename {src/test => tests}/ui/regions/region-borrow-params-issue-29793-big.rs (100%) rename {src/test => tests}/ui/regions/region-borrow-params-issue-29793-big.stderr (100%) rename {src/test => tests}/ui/regions/region-borrow-params-issue-29793-small.rs (100%) rename {src/test => tests}/ui/regions/region-borrow-params-issue-29793-small.stderr (100%) rename {src/test => tests}/ui/regions/region-bound-extra-bound-in-inherent-impl.rs (100%) rename {src/test => tests}/ui/regions/region-bound-on-closure-outlives-call.rs (100%) rename {src/test => tests}/ui/regions/region-bound-on-closure-outlives-call.stderr (100%) rename {src/test => tests}/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs (100%) rename {src/test => tests}/ui/regions/region-bounds-on-objects-and-type-parameters.rs (100%) rename {src/test => tests}/ui/regions/region-bounds-on-objects-and-type-parameters.stderr (100%) rename {src/test => tests}/ui/regions/region-invariant-static-error-reporting.rs (100%) rename {src/test => tests}/ui/regions/region-invariant-static-error-reporting.stderr (100%) rename {src/test => tests}/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs (100%) rename {src/test => tests}/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr (100%) rename {src/test => tests}/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs (100%) rename {src/test => tests}/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-1.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-2.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-2.stderr (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-3.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-4.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-4.stderr (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-5.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-5.stderr (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-in-coercion.rs (100%) rename {src/test => tests}/ui/regions/region-object-lifetime-in-coercion.stderr (100%) rename {src/test => tests}/ui/regions/regions-addr-of-arg.rs (100%) rename {src/test => tests}/ui/regions/regions-addr-of-arg.stderr (100%) rename {src/test => tests}/ui/regions/regions-addr-of-interior-of-unique-box.rs (100%) rename {src/test => tests}/ui/regions/regions-addr-of-ret.rs (100%) rename {src/test => tests}/ui/regions/regions-addr-of-self.rs (100%) rename {src/test => tests}/ui/regions/regions-addr-of-self.stderr (100%) rename {src/test => tests}/ui/regions/regions-addr-of-upvar-self.rs (100%) rename {src/test => tests}/ui/regions/regions-addr-of-upvar-self.stderr (100%) rename {src/test => tests}/ui/regions/regions-adjusted-lvalue-op.rs (100%) rename {src/test => tests}/ui/regions/regions-adjusted-lvalue-op.stderr (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-region-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr (100%) rename {src/test => tests}/ui/regions/regions-assoc-type-static-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-borrow-at.rs (100%) rename {src/test => tests}/ui/regions/regions-borrow-evec-fixed.rs (100%) rename {src/test => tests}/ui/regions/regions-borrow-evec-uniq.rs (100%) rename {src/test => tests}/ui/regions/regions-borrow-uniq.rs (100%) rename {src/test => tests}/ui/regions/regions-bot.rs (100%) rename {src/test => tests}/ui/regions/regions-bound-lists-feature-gate-2.rs (100%) rename {src/test => tests}/ui/regions/regions-bound-lists-feature-gate.rs (100%) rename {src/test => tests}/ui/regions/regions-bounded-by-trait-requiring-static.rs (100%) rename {src/test => tests}/ui/regions/regions-bounded-by-trait-requiring-static.stderr (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters.rs (100%) rename {src/test => tests}/ui/regions/regions-bounded-method-type-parameters.stderr (100%) rename {src/test => tests}/ui/regions/regions-bounds.rs (100%) rename {src/test => tests}/ui/regions/regions-bounds.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-associated-type-into-object.rs (100%) rename {src/test => tests}/ui/regions/regions-close-associated-type-into-object.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-1.rs (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-1.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-2.rs (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-2.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-3.rs (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-3.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-4.rs (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-4.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-5.rs (100%) rename {src/test => tests}/ui/regions/regions-close-object-into-object-5.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-over-type-parameter-1.rs (100%) rename {src/test => tests}/ui/regions/regions-close-over-type-parameter-1.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-over-type-parameter-multiple.rs (100%) rename {src/test => tests}/ui/regions/regions-close-over-type-parameter-multiple.stderr (100%) rename {src/test => tests}/ui/regions/regions-close-over-type-parameter-successfully.rs (100%) rename {src/test => tests}/ui/regions/regions-close-param-into-object.rs (100%) rename {src/test => tests}/ui/regions/regions-close-param-into-object.stderr (100%) rename {src/test => tests}/ui/regions/regions-copy-closure.rs (100%) rename {src/test => tests}/ui/regions/regions-creating-enums.rs (100%) rename {src/test => tests}/ui/regions/regions-creating-enums.stderr (100%) rename {src/test => tests}/ui/regions/regions-creating-enums2.rs (100%) rename {src/test => tests}/ui/regions/regions-creating-enums3.rs (100%) rename {src/test => tests}/ui/regions/regions-creating-enums3.stderr (100%) rename {src/test => tests}/ui/regions/regions-creating-enums4.rs (100%) rename {src/test => tests}/ui/regions/regions-creating-enums4.stderr (100%) rename {src/test => tests}/ui/regions/regions-creating-enums5.rs (100%) rename {src/test => tests}/ui/regions/regions-debruijn-of-object.rs (100%) rename {src/test => tests}/ui/regions/regions-dependent-addr-of.rs (100%) rename {src/test => tests}/ui/regions/regions-dependent-autofn.rs (100%) rename {src/test => tests}/ui/regions/regions-dependent-autoslice.rs (100%) rename {src/test => tests}/ui/regions/regions-dependent-let-ref.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-error-method.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-error-method.stderr (100%) rename {src/test => tests}/ui/regions/regions-early-bound-error.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-error.stderr (100%) rename {src/test => tests}/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-trait-param.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-used-in-bound-method.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-used-in-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-early-bound-used-in-type-param.rs (100%) rename {src/test => tests}/ui/regions/regions-escape-into-other-fn.rs (100%) rename {src/test => tests}/ui/regions/regions-escape-method.rs (100%) rename {src/test => tests}/ui/regions/regions-escape-method.stderr (100%) rename {src/test => tests}/ui/regions/regions-escape-via-trait-or-not.rs (100%) rename {src/test => tests}/ui/regions/regions-escape-via-trait-or-not.stderr (100%) rename {src/test => tests}/ui/regions/regions-expl-self.rs (100%) rename {src/test => tests}/ui/regions/regions-fn-subtyping-2.rs (100%) rename {src/test => tests}/ui/regions/regions-fn-subtyping-return-static-fail.rs (100%) rename {src/test => tests}/ui/regions/regions-fn-subtyping-return-static-fail.stderr (100%) rename {src/test => tests}/ui/regions/regions-fn-subtyping-return-static.rs (100%) rename {src/test => tests}/ui/regions/regions-fn-subtyping.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-callee-4.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-callee-4.stderr (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-callee.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-callee.stderr (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-caller.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-caller.stderr (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-caller1.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-caller1.stderr (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-incorrect.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-ordering-incorrect.stderr (100%) rename {src/test => tests}/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs (100%) rename {src/test => tests}/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr (100%) rename {src/test => tests}/ui/regions/regions-glb-free-free.rs (100%) rename {src/test => tests}/ui/regions/regions-glb-free-free.stderr (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-1.rs (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-1.stderr (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-2.rs (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-3.rs (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-4.rs (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs (100%) rename {src/test => tests}/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr (100%) rename {src/test => tests}/ui/regions/regions-in-enums-anon.rs (100%) rename {src/test => tests}/ui/regions/regions-in-enums-anon.stderr (100%) rename {src/test => tests}/ui/regions/regions-in-enums.rs (100%) rename {src/test => tests}/ui/regions/regions-in-enums.stderr (100%) rename {src/test => tests}/ui/regions/regions-in-structs-anon.rs (100%) rename {src/test => tests}/ui/regions/regions-in-structs-anon.stderr (100%) rename {src/test => tests}/ui/regions/regions-in-structs.rs (100%) rename {src/test => tests}/ui/regions/regions-in-structs.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-at-fn-not-param.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-at-fn-not-param.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope-addr-of.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope-too-big.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope-too-big.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope-view.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-borrow-scope.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-bound-from-trait-self.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-bound-from-trait-self.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-bound-from-trait.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-bound-from-trait.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-call-2.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-call-3.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-call-3.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-call.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-contravariance-due-to-decl.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-contravariance-due-to-decl.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-contravariance-due-to-ret.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-covariance-due-to-decl.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-covariance-due-to-decl.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-decl.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-decl.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-mutability-3.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-mutability-4.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-not-param.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-not-param.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-paramd-indirect.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-paramd-indirect.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-proc-static-upvar.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-proc-static-upvar.stderr (100%) rename {src/test => tests}/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-region-in-fn-but-not-type.rs (100%) rename {src/test => tests}/ui/regions/regions-infer-static-from-proc.rs (100%) rename {src/test => tests}/ui/regions/regions-issue-21422.rs (100%) rename {src/test => tests}/ui/regions/regions-issue-22246.rs (100%) rename {src/test => tests}/ui/regions/regions-lifetime-bounds-on-fns.rs (100%) rename {src/test => tests}/ui/regions/regions-lifetime-bounds-on-fns.stderr (100%) rename {src/test => tests}/ui/regions/regions-lifetime-nonfree-late-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs (100%) rename {src/test => tests}/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr (100%) rename {src/test => tests}/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs (100%) rename {src/test => tests}/ui/regions/regions-link-fn-args.rs (100%) rename {src/test => tests}/ui/regions/regions-lub-ref-ref-rc.rs (100%) rename {src/test => tests}/ui/regions/regions-mock-codegen.rs (100%) rename {src/test => tests}/ui/regions/regions-name-duplicated.rs (100%) rename {src/test => tests}/ui/regions/regions-name-duplicated.stderr (100%) rename {src/test => tests}/ui/regions/regions-name-static.rs (100%) rename {src/test => tests}/ui/regions/regions-name-static.stderr (100%) rename {src/test => tests}/ui/regions/regions-name-undeclared.rs (100%) rename {src/test => tests}/ui/regions/regions-name-undeclared.stderr (100%) rename {src/test => tests}/ui/regions/regions-nested-fns-2.rs (100%) rename {src/test => tests}/ui/regions/regions-nested-fns-2.stderr (100%) rename {src/test => tests}/ui/regions/regions-nested-fns.rs (100%) rename {src/test => tests}/ui/regions/regions-nested-fns.stderr (100%) rename {src/test => tests}/ui/regions/regions-no-bound-in-argument-cleanup.rs (100%) rename {src/test => tests}/ui/regions/regions-no-variance-from-fn-generics.rs (100%) rename {src/test => tests}/ui/regions/regions-normalize-in-where-clause-list.rs (100%) rename {src/test => tests}/ui/regions/regions-normalize-in-where-clause-list.stderr (100%) rename {src/test => tests}/ui/regions/regions-nullary-variant.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-enum-region.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-enum-type.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-struct-region.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-nominal-type-struct-type.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container-hrtb.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container-hrtb.stderr (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container-wc.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container-wc.stderr (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-container.stderr (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-hrtype.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-projection-trait-def.rs (100%) rename {src/test => tests}/ui/regions/regions-outlives-scalar.rs (100%) rename {src/test => tests}/ui/regions/regions-params.rs (100%) rename {src/test => tests}/ui/regions/regions-pattern-typing-issue-19552.rs (100%) rename {src/test => tests}/ui/regions/regions-pattern-typing-issue-19552.stderr (100%) rename {src/test => tests}/ui/regions/regions-pattern-typing-issue-19997.rs (100%) rename {src/test => tests}/ui/regions/regions-pattern-typing-issue-19997.stderr (100%) rename {src/test => tests}/ui/regions/regions-proc-bound-capture.rs (100%) rename {src/test => tests}/ui/regions/regions-proc-bound-capture.stderr (100%) rename {src/test => tests}/ui/regions/regions-reassign-let-bound-pointer.rs (100%) rename {src/test => tests}/ui/regions/regions-reassign-match-bound-pointer.rs (100%) rename {src/test => tests}/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs (100%) rename {src/test => tests}/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr (100%) rename {src/test => tests}/ui/regions/regions-reborrow-from-shorter-mut-ref.rs (100%) rename {src/test => tests}/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr (100%) rename {src/test => tests}/ui/regions/regions-ref-in-fn-arg.rs (100%) rename {src/test => tests}/ui/regions/regions-ref-in-fn-arg.stderr (100%) rename {src/test => tests}/ui/regions/regions-refcell.rs (100%) rename {src/test => tests}/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs (100%) rename {src/test => tests}/ui/regions/regions-ret-borrowed-1.rs (100%) rename {src/test => tests}/ui/regions/regions-ret-borrowed-1.stderr (100%) rename {src/test => tests}/ui/regions/regions-ret-borrowed.rs (100%) rename {src/test => tests}/ui/regions/regions-ret-borrowed.stderr (100%) rename {src/test => tests}/ui/regions/regions-ret.rs (100%) rename {src/test => tests}/ui/regions/regions-ret.stderr (100%) rename {src/test => tests}/ui/regions/regions-return-interior-of-option.rs (100%) rename {src/test => tests}/ui/regions/regions-return-ref-to-upvar-issue-17403.rs (100%) rename {src/test => tests}/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr (100%) rename {src/test => tests}/ui/regions/regions-return-stack-allocated-vec.rs (100%) rename {src/test => tests}/ui/regions/regions-return-stack-allocated-vec.stderr (100%) rename {src/test => tests}/ui/regions/regions-scope-chain-example.rs (100%) rename {src/test => tests}/ui/regions/regions-self-impls.rs (100%) rename {src/test => tests}/ui/regions/regions-self-in-enums.rs (100%) rename {src/test => tests}/ui/regions/regions-simple.rs (100%) rename {src/test => tests}/ui/regions/regions-static-bound-rpass.rs (100%) rename {src/test => tests}/ui/regions/regions-static-bound-rpass.stderr (100%) rename {src/test => tests}/ui/regions/regions-static-bound.rs (100%) rename {src/test => tests}/ui/regions/regions-static-bound.stderr (100%) rename {src/test => tests}/ui/regions/regions-static-closure.rs (100%) rename {src/test => tests}/ui/regions/regions-steal-closure.rs (100%) rename {src/test => tests}/ui/regions/regions-steal-closure.stderr (100%) rename {src/test => tests}/ui/regions/regions-trait-1.rs (100%) rename {src/test => tests}/ui/regions/regions-trait-object-1.rs (100%) rename {src/test => tests}/ui/regions/regions-trait-object-subtyping.rs (100%) rename {src/test => tests}/ui/regions/regions-trait-object-subtyping.stderr (100%) rename {src/test => tests}/ui/regions/regions-trait-variance.rs (100%) rename {src/test => tests}/ui/regions/regions-trait-variance.stderr (100%) rename {src/test => tests}/ui/regions/regions-undeclared.rs (100%) rename {src/test => tests}/ui/regions/regions-undeclared.stderr (100%) rename {src/test => tests}/ui/regions/regions-var-type-out-of-scope.rs (100%) rename {src/test => tests}/ui/regions/regions-var-type-out-of-scope.stderr (100%) rename {src/test => tests}/ui/regions/regions-variance-contravariant-use-contravariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr (100%) rename {src/test => tests}/ui/regions/regions-variance-contravariant-use-covariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-contravariant-use-covariant.stderr (100%) rename {src/test => tests}/ui/regions/regions-variance-covariant-use-contravariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-covariant-use-contravariant.stderr (100%) rename {src/test => tests}/ui/regions/regions-variance-covariant-use-covariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-invariant-use-contravariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-invariant-use-contravariant.stderr (100%) rename {src/test => tests}/ui/regions/regions-variance-invariant-use-covariant.rs (100%) rename {src/test => tests}/ui/regions/regions-variance-invariant-use-covariant.stderr (100%) rename {src/test => tests}/ui/regions/regions-wf-trait-object.rs (100%) rename {src/test => tests}/ui/regions/regions-wf-trait-object.stderr (100%) rename {src/test => tests}/ui/regions/type-param-outlives-reempty-issue-74429-2.rs (100%) rename {src/test => tests}/ui/regions/type-param-outlives-reempty-issue-74429.rs (100%) rename {src/test => tests}/ui/regions/wf-bound-region-in-object-type.rs (100%) rename {src/test => tests}/ui/reify-intrinsic.rs (100%) rename {src/test => tests}/ui/reify-intrinsic.stderr (100%) rename {src/test => tests}/ui/remap-path-prefix.rs (100%) rename {src/test => tests}/ui/remap-path-prefix.stderr (100%) rename {src/test => tests}/ui/removing-extern-crate.fixed (100%) rename {src/test => tests}/ui/removing-extern-crate.rs (100%) rename {src/test => tests}/ui/removing-extern-crate.stderr (100%) rename {src/test => tests}/ui/repeat-expr/infer.rs (100%) rename {src/test => tests}/ui/repeat-expr/repeat-expr-in-static.rs (100%) rename {src/test => tests}/ui/repeat-expr/repeat-to-run-dtor-twice.rs (100%) rename {src/test => tests}/ui/repeat-expr/repeat-to-run-dtor-twice.stderr (100%) rename {src/test => tests}/ui/repeat-expr/repeat_count.rs (100%) rename {src/test => tests}/ui/repeat-expr/repeat_count.stderr (100%) rename {src/test => tests}/ui/repr/align-with-extern-c-fn.rs (100%) rename {src/test => tests}/ui/repr/aligned_enum_cast.rs (100%) rename {src/test => tests}/ui/repr/attr-usage-repr.rs (100%) rename {src/test => tests}/ui/repr/attr-usage-repr.stderr (100%) rename {src/test => tests}/ui/repr/auxiliary/repr-transparent-non-exhaustive.rs (100%) rename {src/test => tests}/ui/repr/invalid_repr_list_help.rs (100%) rename {src/test => tests}/ui/repr/invalid_repr_list_help.stderr (100%) rename {src/test => tests}/ui/repr/issue-83505-repr-simd.rs (100%) rename {src/test => tests}/ui/repr/issue-83505-repr-simd.stderr (100%) rename {src/test => tests}/ui/repr/issue-83921-ice.rs (100%) rename {src/test => tests}/ui/repr/issue-83921-ice.stderr (100%) rename {src/test => tests}/ui/repr/repr-align-assign.fixed (100%) rename {src/test => tests}/ui/repr/repr-align-assign.rs (100%) rename {src/test => tests}/ui/repr/repr-align-assign.stderr (100%) rename {src/test => tests}/ui/repr/repr-align.rs (100%) rename {src/test => tests}/ui/repr/repr-align.stderr (100%) rename {src/test => tests}/ui/repr/repr-disallow-on-variant.rs (100%) rename {src/test => tests}/ui/repr/repr-disallow-on-variant.stderr (100%) rename {src/test => tests}/ui/repr/repr-packed-contains-align.rs (100%) rename {src/test => tests}/ui/repr/repr-packed-contains-align.stderr (100%) rename {src/test => tests}/ui/repr/repr-transparent-issue-87496.rs (100%) rename {src/test => tests}/ui/repr/repr-transparent-issue-87496.stderr (100%) rename {src/test => tests}/ui/repr/repr-transparent-non-exhaustive.rs (100%) rename {src/test => tests}/ui/repr/repr-transparent-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/repr/repr-transparent-other-items.rs (100%) rename {src/test => tests}/ui/repr/repr-transparent-other-items.stderr (100%) rename {src/test => tests}/ui/repr/repr-transparent-other-reprs.rs (100%) rename {src/test => tests}/ui/repr/repr-transparent-other-reprs.stderr (100%) rename {src/test => tests}/ui/repr/repr-transparent.rs (100%) rename {src/test => tests}/ui/repr/repr-transparent.stderr (100%) rename {src/test => tests}/ui/repr/repr.rs (100%) rename {src/test => tests}/ui/repr/repr.stderr (100%) rename {src/test => tests}/ui/repr/repr_c_int_align.rs (100%) rename {src/test => tests}/ui/repr/transparent-enum-too-many-variants.rs (100%) rename {src/test => tests}/ui/repr/transparent-enum-too-many-variants.stderr (100%) rename {src/test => tests}/ui/reserved/reserved-attr-on-macro.rs (100%) rename {src/test => tests}/ui/reserved/reserved-attr-on-macro.stderr (100%) rename {src/test => tests}/ui/reserved/reserved-become.rs (100%) rename {src/test => tests}/ui/reserved/reserved-become.stderr (100%) rename {src/test => tests}/ui/resolve/associated-fn-called-as-fn.rs (100%) rename {src/test => tests}/ui/resolve/associated-fn-called-as-fn.stderr (100%) rename {src/test => tests}/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo2.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/extern-prelude-vec.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/extern-prelude.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-19452-aux.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-21221-3.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-21221-4.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-30535.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-3907.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/issue-80079.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/namespaced_enums.rs (100%) rename {src/test => tests}/ui/resolve/auxiliary/privacy-struct-ctor.rs (100%) rename {src/test => tests}/ui/resolve/bad-env-capture.rs (100%) rename {src/test => tests}/ui/resolve/bad-env-capture.stderr (100%) rename {src/test => tests}/ui/resolve/bad-env-capture2.rs (100%) rename {src/test => tests}/ui/resolve/bad-env-capture2.stderr (100%) rename {src/test => tests}/ui/resolve/bad-env-capture3.rs (100%) rename {src/test => tests}/ui/resolve/bad-env-capture3.stderr (100%) rename {src/test => tests}/ui/resolve/bad-expr-path.rs (100%) rename {src/test => tests}/ui/resolve/bad-expr-path.stderr (100%) rename {src/test => tests}/ui/resolve/bad-expr-path2.rs (100%) rename {src/test => tests}/ui/resolve/bad-expr-path2.stderr (100%) rename {src/test => tests}/ui/resolve/bad-module.rs (100%) rename {src/test => tests}/ui/resolve/bad-module.stderr (100%) rename {src/test => tests}/ui/resolve/bad-type-env-capture.rs (100%) rename {src/test => tests}/ui/resolve/bad-type-env-capture.stderr (100%) rename {src/test => tests}/ui/resolve/blind-item-local-shadow.rs (100%) rename {src/test => tests}/ui/resolve/blind-item-mixed-crate-use-item.rs (100%) rename {src/test => tests}/ui/resolve/blind-item-mixed-use-item.rs (100%) rename {src/test => tests}/ui/resolve/block-with-trait-parent.rs (100%) rename {src/test => tests}/ui/resolve/crate-called-as-function.rs (100%) rename {src/test => tests}/ui/resolve/crate-called-as-function.stderr (100%) rename {src/test => tests}/ui/resolve/crate-in-paths.rs (100%) rename {src/test => tests}/ui/resolve/crate-in-paths.stderr (100%) rename {src/test => tests}/ui/resolve/editions-crate-root-2015.rs (100%) rename {src/test => tests}/ui/resolve/editions-crate-root-2015.stderr (100%) rename {src/test => tests}/ui/resolve/editions-crate-root-2018.rs (100%) rename {src/test => tests}/ui/resolve/editions-crate-root-2018.stderr (100%) rename {src/test => tests}/ui/resolve/enums-are-namespaced-xc.rs (100%) rename {src/test => tests}/ui/resolve/enums-are-namespaced-xc.stderr (100%) rename {src/test => tests}/ui/resolve/enums-pats-not-idents.rs (100%) rename {src/test => tests}/ui/resolve/enums-pats-not-idents.stderr (100%) rename {src/test => tests}/ui/resolve/export-fully-qualified.rs (100%) rename {src/test => tests}/ui/resolve/export-fully-qualified.stderr (100%) rename {src/test => tests}/ui/resolve/extern-prelude-fail.rs (100%) rename {src/test => tests}/ui/resolve/extern-prelude-fail.stderr (100%) rename {src/test => tests}/ui/resolve/extern-prelude.rs (100%) rename {src/test => tests}/ui/resolve/filter-intrinsics.rs (100%) rename {src/test => tests}/ui/resolve/filter-intrinsics.stderr (100%) rename {src/test => tests}/ui/resolve/impl-items-vis-unresolved.rs (100%) rename {src/test => tests}/ui/resolve/impl-items-vis-unresolved.stderr (100%) rename {src/test => tests}/ui/resolve/issue-100365.rs (100%) rename {src/test => tests}/ui/resolve/issue-100365.stderr (100%) rename {src/test => tests}/ui/resolve/issue-101749-2.rs (100%) rename {src/test => tests}/ui/resolve/issue-101749-2.stderr (100%) rename {src/test => tests}/ui/resolve/issue-101749.fixed (100%) rename {src/test => tests}/ui/resolve/issue-101749.rs (100%) rename {src/test => tests}/ui/resolve/issue-101749.stderr (100%) rename {src/test => tests}/ui/resolve/issue-10200.rs (100%) rename {src/test => tests}/ui/resolve/issue-10200.stderr (100%) rename {src/test => tests}/ui/resolve/issue-102946.rs (100%) rename {src/test => tests}/ui/resolve/issue-102946.stderr (100%) rename {src/test => tests}/ui/resolve/issue-103202.rs (100%) rename {src/test => tests}/ui/resolve/issue-103202.stderr (100%) rename {src/test => tests}/ui/resolve/issue-103474.rs (100%) rename {src/test => tests}/ui/resolve/issue-103474.stderr (100%) rename {src/test => tests}/ui/resolve/issue-104700-inner_scope.rs (100%) rename {src/test => tests}/ui/resolve/issue-104700-inner_scope.stderr (100%) rename {src/test => tests}/ui/resolve/issue-105069.rs (100%) rename {src/test => tests}/ui/resolve/issue-105069.stderr (100%) rename {src/test => tests}/ui/resolve/issue-12796.rs (100%) rename {src/test => tests}/ui/resolve/issue-12796.stderr (100%) rename {src/test => tests}/ui/resolve/issue-14254.rs (100%) rename {src/test => tests}/ui/resolve/issue-14254.stderr (100%) rename {src/test => tests}/ui/resolve/issue-16058.rs (100%) rename {src/test => tests}/ui/resolve/issue-16058.stderr (100%) rename {src/test => tests}/ui/resolve/issue-17518.rs (100%) rename {src/test => tests}/ui/resolve/issue-17518.stderr (100%) rename {src/test => tests}/ui/resolve/issue-18252.rs (100%) rename {src/test => tests}/ui/resolve/issue-18252.stderr (100%) rename {src/test => tests}/ui/resolve/issue-19452.rs (100%) rename {src/test => tests}/ui/resolve/issue-19452.stderr (100%) rename {src/test => tests}/ui/resolve/issue-21221-1.rs (100%) rename {src/test => tests}/ui/resolve/issue-21221-1.stderr (100%) rename {src/test => tests}/ui/resolve/issue-21221-2.rs (100%) rename {src/test => tests}/ui/resolve/issue-21221-2.stderr (100%) rename {src/test => tests}/ui/resolve/issue-21221-3.rs (100%) rename {src/test => tests}/ui/resolve/issue-21221-3.stderr (100%) rename {src/test => tests}/ui/resolve/issue-21221-4.rs (100%) rename {src/test => tests}/ui/resolve/issue-21221-4.stderr (100%) rename {src/test => tests}/ui/resolve/issue-22692.rs (100%) rename {src/test => tests}/ui/resolve/issue-22692.stderr (100%) rename {src/test => tests}/ui/resolve/issue-2330.rs (100%) rename {src/test => tests}/ui/resolve/issue-2330.stderr (100%) rename {src/test => tests}/ui/resolve/issue-23305.rs (100%) rename {src/test => tests}/ui/resolve/issue-23305.stderr (100%) rename {src/test => tests}/ui/resolve/issue-2356.rs (100%) rename {src/test => tests}/ui/resolve/issue-2356.stderr (100%) rename {src/test => tests}/ui/resolve/issue-23716.rs (100%) rename {src/test => tests}/ui/resolve/issue-23716.stderr (100%) rename {src/test => tests}/ui/resolve/issue-24968.rs (100%) rename {src/test => tests}/ui/resolve/issue-24968.stderr (100%) rename {src/test => tests}/ui/resolve/issue-26545.rs (100%) rename {src/test => tests}/ui/resolve/issue-26545.stderr (100%) rename {src/test => tests}/ui/resolve/issue-3021-c.rs (100%) rename {src/test => tests}/ui/resolve/issue-3021-c.stderr (100%) rename {src/test => tests}/ui/resolve/issue-3021.rs (100%) rename {src/test => tests}/ui/resolve/issue-3021.stderr (100%) rename {src/test => tests}/ui/resolve/issue-30535.rs (100%) rename {src/test => tests}/ui/resolve/issue-30535.stderr (100%) rename {src/test => tests}/ui/resolve/issue-31845.rs (100%) rename {src/test => tests}/ui/resolve/issue-31845.stderr (100%) rename {src/test => tests}/ui/resolve/issue-33876.rs (100%) rename {src/test => tests}/ui/resolve/issue-33876.stderr (100%) rename {src/test => tests}/ui/resolve/issue-35675.rs (100%) rename {src/test => tests}/ui/resolve/issue-35675.stderr (100%) rename {src/test => tests}/ui/resolve/issue-3907-2.rs (100%) rename {src/test => tests}/ui/resolve/issue-3907-2.stderr (100%) rename {src/test => tests}/ui/resolve/issue-3907.rs (100%) rename {src/test => tests}/ui/resolve/issue-3907.stderr (100%) rename {src/test => tests}/ui/resolve/issue-39226.rs (100%) rename {src/test => tests}/ui/resolve/issue-39226.stderr (100%) rename {src/test => tests}/ui/resolve/issue-39559-2.rs (100%) rename {src/test => tests}/ui/resolve/issue-39559-2.stderr (100%) rename {src/test => tests}/ui/resolve/issue-39559.rs (100%) rename {src/test => tests}/ui/resolve/issue-39559.stderr (100%) rename {src/test => tests}/ui/resolve/issue-42944.rs (100%) rename {src/test => tests}/ui/resolve/issue-42944.stderr (100%) rename {src/test => tests}/ui/resolve/issue-49074.rs (100%) rename {src/test => tests}/ui/resolve/issue-49074.stderr (100%) rename {src/test => tests}/ui/resolve/issue-5035-2.rs (100%) rename {src/test => tests}/ui/resolve/issue-5035-2.stderr (100%) rename {src/test => tests}/ui/resolve/issue-5035.rs (100%) rename {src/test => tests}/ui/resolve/issue-5035.stderr (100%) rename {src/test => tests}/ui/resolve/issue-50599.rs (100%) rename {src/test => tests}/ui/resolve/issue-50599.stderr (100%) rename {src/test => tests}/ui/resolve/issue-5099.rs (100%) rename {src/test => tests}/ui/resolve/issue-5099.stderr (100%) rename {src/test => tests}/ui/resolve/issue-54379.rs (100%) rename {src/test => tests}/ui/resolve/issue-54379.stderr (100%) rename {src/test => tests}/ui/resolve/issue-55673.rs (100%) rename {src/test => tests}/ui/resolve/issue-55673.stderr (100%) rename {src/test => tests}/ui/resolve/issue-57523.rs (100%) rename {src/test => tests}/ui/resolve/issue-5927.rs (100%) rename {src/test => tests}/ui/resolve/issue-5927.stderr (100%) rename {src/test => tests}/ui/resolve/issue-60057.rs (100%) rename {src/test => tests}/ui/resolve/issue-60057.stderr (100%) rename {src/test => tests}/ui/resolve/issue-65025-extern-static-parent-generics.rs (100%) rename {src/test => tests}/ui/resolve/issue-65025-extern-static-parent-generics.stderr (100%) rename {src/test => tests}/ui/resolve/issue-65035-static-with-parent-generics.rs (100%) rename {src/test => tests}/ui/resolve/issue-65035-static-with-parent-generics.stderr (100%) rename {src/test => tests}/ui/resolve/issue-6702.rs (100%) rename {src/test => tests}/ui/resolve/issue-6702.stderr (100%) rename {src/test => tests}/ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs (100%) rename {src/test => tests}/ui/resolve/issue-69401-trait-fn-no-body-ty-local.stderr (100%) rename {src/test => tests}/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs (100%) rename {src/test => tests}/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr (100%) rename {src/test => tests}/ui/resolve/issue-73427.rs (100%) rename {src/test => tests}/ui/resolve/issue-73427.stderr (100%) rename {src/test => tests}/ui/resolve/issue-80079.rs (100%) rename {src/test => tests}/ui/resolve/issue-80079.stderr (100%) rename {src/test => tests}/ui/resolve/issue-81508.rs (100%) rename {src/test => tests}/ui/resolve/issue-81508.stderr (100%) rename {src/test => tests}/ui/resolve/issue-82156.rs (100%) rename {src/test => tests}/ui/resolve/issue-82156.stderr (100%) rename {src/test => tests}/ui/resolve/issue-82865.rs (100%) rename {src/test => tests}/ui/resolve/issue-82865.stderr (100%) rename {src/test => tests}/ui/resolve/issue-85348.rs (100%) rename {src/test => tests}/ui/resolve/issue-85348.stderr (100%) rename {src/test => tests}/ui/resolve/issue-85671.rs (100%) rename {src/test => tests}/ui/resolve/issue-88472.rs (100%) rename {src/test => tests}/ui/resolve/issue-88472.stderr (100%) rename {src/test => tests}/ui/resolve/issue-90113.rs (100%) rename {src/test => tests}/ui/resolve/issue-90113.stderr (100%) rename {src/test => tests}/ui/resolve/levenshtein.rs (100%) rename {src/test => tests}/ui/resolve/levenshtein.stderr (100%) rename {src/test => tests}/ui/resolve/macro-determinacy-non-module.rs (100%) rename {src/test => tests}/ui/resolve/missing-in-namespace.rs (100%) rename {src/test => tests}/ui/resolve/missing-in-namespace.stderr (100%) rename {src/test => tests}/ui/resolve/name-clash-nullary.rs (100%) rename {src/test => tests}/ui/resolve/name-clash-nullary.stderr (100%) rename {src/test => tests}/ui/resolve/name-collision-in-trait-fn-sig.rs (100%) rename {src/test => tests}/ui/resolve/no-implicit-prelude-nested.rs (100%) rename {src/test => tests}/ui/resolve/no-implicit-prelude-nested.stderr (100%) rename {src/test => tests}/ui/resolve/no-implicit-prelude.rs (100%) rename {src/test => tests}/ui/resolve/no-implicit-prelude.stderr (100%) rename {src/test => tests}/ui/resolve/no-std-1.rs (100%) rename {src/test => tests}/ui/resolve/no-std-2.rs (100%) rename {src/test => tests}/ui/resolve/no-std-3.rs (100%) rename {src/test => tests}/ui/resolve/pathless-extern-ok.rs (100%) rename {src/test => tests}/ui/resolve/point-at-type-parameter-shadowing-another-type.rs (100%) rename {src/test => tests}/ui/resolve/point-at-type-parameter-shadowing-another-type.stderr (100%) rename {src/test => tests}/ui/resolve/privacy-enum-ctor.rs (100%) rename {src/test => tests}/ui/resolve/privacy-enum-ctor.stderr (100%) rename {src/test => tests}/ui/resolve/privacy-struct-ctor.rs (100%) rename {src/test => tests}/ui/resolve/privacy-struct-ctor.stderr (100%) rename {src/test => tests}/ui/resolve/raw-ident-in-path.rs (100%) rename {src/test => tests}/ui/resolve/raw-ident-in-path.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-assoc-suggestions.rs (100%) rename {src/test => tests}/ui/resolve/resolve-assoc-suggestions.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-bad-import-prefix.rs (100%) rename {src/test => tests}/ui/resolve/resolve-bad-import-prefix.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-bad-visibility.rs (100%) rename {src/test => tests}/ui/resolve/resolve-bad-visibility.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-import-vs-extern-crate.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-import-vs-import.fixed (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-import-vs-import.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-import-vs-import.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-item-vs-extern-crate.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-item-vs-extern-crate.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-item-vs-import.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-item-vs-import.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-type-vs-import.rs (100%) rename {src/test => tests}/ui/resolve/resolve-conflict-type-vs-import.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-hint-macro.fixed (100%) rename {src/test => tests}/ui/resolve/resolve-hint-macro.rs (100%) rename {src/test => tests}/ui/resolve/resolve-hint-macro.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-inconsistent-binding-mode.rs (100%) rename {src/test => tests}/ui/resolve/resolve-inconsistent-binding-mode.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-inconsistent-names.rs (100%) rename {src/test => tests}/ui/resolve/resolve-inconsistent-names.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-issue-2428.rs (100%) rename {src/test => tests}/ui/resolve/resolve-label.rs (100%) rename {src/test => tests}/ui/resolve/resolve-label.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-primitive-fallback.rs (100%) rename {src/test => tests}/ui/resolve/resolve-primitive-fallback.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-pseudo-shadowing.rs (100%) rename {src/test => tests}/ui/resolve/resolve-self-in-impl-2.rs (100%) rename {src/test => tests}/ui/resolve/resolve-self-in-impl-2.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-self-in-impl.rs (100%) rename {src/test => tests}/ui/resolve/resolve-self-in-impl.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-speculative-adjustment.rs (100%) rename {src/test => tests}/ui/resolve/resolve-speculative-adjustment.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-type-param-in-item-in-trait.rs (100%) rename {src/test => tests}/ui/resolve/resolve-type-param-in-item-in-trait.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-unknown-trait.rs (100%) rename {src/test => tests}/ui/resolve/resolve-unknown-trait.stderr (100%) rename {src/test => tests}/ui/resolve/resolve-variant-assoc-item.rs (100%) rename {src/test => tests}/ui/resolve/resolve-variant-assoc-item.stderr (100%) rename {src/test => tests}/ui/resolve/shadow-const-param.rs (100%) rename {src/test => tests}/ui/resolve/shadow-const-param.stderr (100%) rename {src/test => tests}/ui/resolve/suggest-path-for-tuple-struct.rs (100%) rename {src/test => tests}/ui/resolve/suggest-path-for-tuple-struct.stderr (100%) rename {src/test => tests}/ui/resolve/suggest-path-instead-of-mod-dot-item.rs (100%) rename {src/test => tests}/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr (100%) rename {src/test => tests}/ui/resolve/token-error-correct-2.rs (100%) rename {src/test => tests}/ui/resolve/token-error-correct-2.stderr (100%) rename {src/test => tests}/ui/resolve/token-error-correct-3.rs (100%) rename {src/test => tests}/ui/resolve/token-error-correct-3.stderr (100%) rename {src/test => tests}/ui/resolve/token-error-correct-4.fixed (100%) rename {src/test => tests}/ui/resolve/token-error-correct-4.rs (100%) rename {src/test => tests}/ui/resolve/token-error-correct-4.stderr (100%) rename {src/test => tests}/ui/resolve/token-error-correct.rs (100%) rename {src/test => tests}/ui/resolve/token-error-correct.stderr (100%) rename {src/test => tests}/ui/resolve/tuple-struct-alias.rs (100%) rename {src/test => tests}/ui/resolve/tuple-struct-alias.stderr (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-mistyped-in-path.rs (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-mistyped-in-path.stderr (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-named-underscore.rs (100%) rename {src/test => tests}/ui/resolve/typo-suggestion-named-underscore.stderr (100%) rename {src/test => tests}/ui/resolve/unboxed-closure-sugar-nonexistent-trait.rs (100%) rename {src/test => tests}/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr (100%) rename {src/test => tests}/ui/resolve/unresolved_static_type_field.rs (100%) rename {src/test => tests}/ui/resolve/unresolved_static_type_field.stderr (100%) rename {src/test => tests}/ui/resolve/use-self-in-inner-fn.rs (100%) rename {src/test => tests}/ui/resolve/use-self-in-inner-fn.stderr (100%) rename {src/test => tests}/ui/resolve/use_suggestion.rs (100%) rename {src/test => tests}/ui/resolve/use_suggestion.stderr (100%) rename {src/test => tests}/ui/resolve/use_suggestion_placement.fixed (100%) rename {src/test => tests}/ui/resolve/use_suggestion_placement.rs (100%) rename {src/test => tests}/ui/resolve/use_suggestion_placement.stderr (100%) rename {src/test => tests}/ui/resolve/visibility-indeterminate.rs (100%) rename {src/test => tests}/ui/resolve/visibility-indeterminate.stderr (100%) rename {src/test => tests}/ui/resource-assign-is-not-copy.rs (100%) rename {src/test => tests}/ui/resource-destruct.rs (100%) rename {src/test => tests}/ui/ret-bang.rs (100%) rename {src/test => tests}/ui/ret-non-nil.rs (100%) rename {src/test => tests}/ui/ret-non-nil.stderr (100%) rename {src/test => tests}/ui/return-disjoint-regions.rs (100%) rename {src/test => tests}/ui/return-disjoint-regions.stderr (100%) rename {src/test => tests}/ui/return-nil.rs (100%) rename {src/test => tests}/ui/return/issue-64620.rs (100%) rename {src/test => tests}/ui/return/issue-64620.stderr (100%) rename {src/test => tests}/ui/return/issue-82612-return-mutable-reference.rs (100%) rename {src/test => tests}/ui/return/issue-82612-return-mutable-reference.stderr (100%) rename {src/test => tests}/ui/return/issue-86188-return-not-in-fn-body.rs (100%) rename {src/test => tests}/ui/return/issue-86188-return-not-in-fn-body.stderr (100%) rename {src/test => tests}/ui/return/return-from-diverging.rs (100%) rename {src/test => tests}/ui/return/return-from-diverging.stderr (100%) rename {src/test => tests}/ui/return/return-impl-trait-bad.rs (100%) rename {src/test => tests}/ui/return/return-impl-trait-bad.stderr (100%) rename {src/test => tests}/ui/return/return-impl-trait.fixed (100%) rename {src/test => tests}/ui/return/return-impl-trait.rs (100%) rename {src/test => tests}/ui/return/return-impl-trait.stderr (100%) rename {src/test => tests}/ui/return/return-match-array-const.rs (100%) rename {src/test => tests}/ui/return/return-match-array-const.stderr (100%) rename {src/test => tests}/ui/return/return-type.rs (100%) rename {src/test => tests}/ui/return/return-type.stderr (100%) rename {src/test => tests}/ui/return/return-unit-from-diverging.rs (100%) rename {src/test => tests}/ui/return/return-unit-from-diverging.stderr (100%) rename {src/test => tests}/ui/return/tail-expr-as-potential-return.rs (100%) rename {src/test => tests}/ui/return/tail-expr-as-potential-return.stderr (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/bind-by-move-no-guards.rs (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/former-E0008-now-pass.rs (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/rfc-basic-examples.rs (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.rs (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.stderr (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs (100%) rename {src/test => tests}/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-embedded.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-param.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-embedded.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-param.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/allow-use-behind-cousin-variant.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.no_gate.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.with_gate.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/fn-ptr-is-structurally-matchable.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-empty-array-allowed-without-eq-issue-62336.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.rs (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.stderr (100%) rename {src/test => tests}/ui/rfc-1445-restrict-constants-in-patterns/phantom-data-is-structurally-matchable.rs (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/missing-link-attr.rs (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/missing-link-attr.stderr (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/multiple-renames.rs (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/multiple-renames.stderr (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/rename-modifiers.rs (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/rename-modifiers.stderr (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/rename-to-empty.rs (100%) rename {src/test => tests}/ui/rfc-1717-dllimport/rename-to-empty.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/issue-103052-1.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/issue-103052-1.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/issue-103052-2.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/issue-103052-2.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-for-never.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-for-result-box-error_err.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-for-str.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-impl-trait.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-impl-trait.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-in-test.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-main-i32.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-main-i32.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.stderr (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.rs (100%) rename {src/test => tests}/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/const.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/const.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/enum.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/enum.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/explicit-mut.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/explicit-mut.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/for.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/for.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/issue-44912-or.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/issue-44912-or.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/lit.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/lit.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/no-double-error.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/no-double-error.stderr (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/slice.rs (100%) rename {src/test => tests}/ui/rfc-2005-default-binding-mode/slice.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/auxiliary/enums.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/auxiliary/monovariants.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/auxiliary/structs.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/auxiliary/unstable.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/auxiliary/variants.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/borrowck-exhaustive.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum-as-cast.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum-as-cast.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/improper_ctypes/auxiliary/types.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/improper_ctypes/same_crate_proper.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/invalid-attribute.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/invalid-attribute.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/omitted-patterns.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/omitted-patterns.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/struct.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/struct.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/structs_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/auxiliary/uninhabited.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/coercions.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/coercions.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/patterns.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/variant.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/variant.stderr (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/variants_fictive_visibility.rs (100%) rename {src/test => tests}/ui/rfc-2008-non-exhaustive/variants_same_crate.rs (100%) rename {src/test => tests}/ui/rfc-2027-object-safe-for-dispatch/downcast-unsafe-trait-objects.rs (100%) rename {src/test => tests}/ui/rfc-2027-object-safe-for-dispatch/manual-self-impl-for-unsafe-obj.rs (100%) rename {src/test => tests}/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/call-chain.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/caller-location-intrinsic.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/const-caller-location.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/diverging-caller-location.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-odd-syntax.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-odd-syntax.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-invalid-abi.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-main.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-main.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-naked.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-naked.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-start.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/error-with-start.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/intrinsic-wrapper.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/macro-declaration.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/only-for-fns.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/only-for-fns.stderr (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/pass.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/std-panic-locations.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/track-caller-attribute.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/track-caller-ffi.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/tracked-closure.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/tracked-fn-ptr.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/tracked-trait-impls.rs (100%) rename {src/test => tests}/ui/rfc-2091-track-caller/tracked-trait-obj.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/cross-crate.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/cross-crate.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/dont-infer-static.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/dont-infer-static.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/enum.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/enum.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-dyn.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-dyn.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-enum.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-enum.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-projection.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-projection.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-struct.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-struct.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-union.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/explicit-union.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/issue-54467.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-enum.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-enum.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-regions.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-regions.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-structs.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-structs.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-union.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/nested-union.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/privacy.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/projection.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/projection.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/reference.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/reference.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-struct-not-wf.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/regions-struct-not-wf.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/self-dyn.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/self-dyn.stderr (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/self-structs.rs (100%) rename {src/test => tests}/ui/rfc-2093-infer-outlives/self-structs.stderr (100%) rename {src/test => tests}/ui/rfc-2126-crate-paths/crate-path-non-absolute.rs (100%) rename {src/test => tests}/ui/rfc-2126-crate-paths/crate-path-non-absolute.stderr (100%) rename {src/test => tests}/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.rs (100%) rename {src/test => tests}/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.stderr (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/auxiliary/xcrate.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-1.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-1.stderr (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-2.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-2.stderr (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-3.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/non-existent-3.stderr (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/not-allowed.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/not-allowed.stderr (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/single-segment.rs (100%) rename {src/test => tests}/ui/rfc-2126-extern-absolute-paths/single-segment.stderr (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/bindings.rs (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/bindings.stderr (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/feature-gate.rs (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/feature-gate.stderr (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/run-pass.rs (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/typeck.rs (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/typeck.stderr (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/warns.rs (100%) rename {src/test => tests}/ui/rfc-2294-if-let-guard/warns.stderr (100%) rename {src/test => tests}/ui/rfc-2306/convert-id-const-with-gate.rs (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.run.stderr (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.rs (100%) rename {src/test => tests}/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.stderr (100%) rename {src/test => tests}/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs (100%) rename {src/test => tests}/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr (100%) rename {src/test => tests}/ui/rfc-2397-do-not-recommend/unstable-feature.rs (100%) rename {src/test => tests}/ui/rfc-2397-do-not-recommend/unstable-feature.stderr (100%) rename {src/test => tests}/ui/rfc-2457/auxiliary/mod_file_nonascii_with_path_allowed-aux.rs (100%) rename {src/test => tests}/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs (100%) rename {src/test => tests}/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr (100%) rename {src/test => tests}/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs (100%) rename {src/test => tests}/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr (100%) rename {src/test => tests}/ui/rfc-2457/extern_block_nonascii_forbidden.rs (100%) rename {src/test => tests}/ui/rfc-2457/extern_block_nonascii_forbidden.stderr (100%) rename {src/test => tests}/ui/rfc-2457/idents-normalized.rs (100%) rename {src/test => tests}/ui/rfc-2457/mod_file_nonascii_forbidden.rs (100%) rename {src/test => tests}/ui/rfc-2457/mod_file_nonascii_forbidden.stderr (100%) rename {src/test => tests}/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs (100%) rename {src/test => tests}/ui/rfc-2457/mod_inline_nonascii_allowed.rs (100%) rename {src/test => tests}/ui/rfc-2457/no_mangle_nonascii_forbidden.rs (100%) rename {src/test => tests}/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/ast-pretty-check.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/ast-pretty-check.stdout (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/chains-without-let.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/chains-without-let.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/disallowed-positions.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/disallowed-positions.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/feature-gate.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/feature-gate.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/irrefutable-lets.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-88498.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-90722.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-92145.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-93150.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-93150.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/issue-99938.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/no-double-assigments.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/protect-precedences.rs (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/protect-precedences.stderr (100%) rename {src/test => tests}/ui/rfc-2497-if-let-chains/then-else-blocks.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/attr-without-param.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/attr-without-param.stderr (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/auxiliary/param-attrs.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-2018.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-2018.stderr (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-allowed.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.stderr (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-cfg.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-cfg.stderr (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/param-attrs-pretty.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.rs (100%) rename {src/test => tests}/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-x86-only.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/import-name-type-x86-only.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-too-large.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/multiple-declarations.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/multiple-declarations.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.stderr (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/unsupported-abi.rs (100%) rename {src/test => tests}/ui/rfc-2627-raw-dylib/unsupported-abi.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/assoc-type.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/assoc-type.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/attr-misuse.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/attr-misuse.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-closures.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-drop-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-drop-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-drop.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const-impl-trait.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/cross-crate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/feature-gate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/generic-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/hir-const-check.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/hir-const-check.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/inherent-impl.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/inherent-impl.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-100222.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-102156.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-102156.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-102985.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-102985.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-103677.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-79450.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-79450.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-88155.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-88155.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-90052.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-90052.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-92111.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/nested-closure.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specializing-constness.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/specializing-constness.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/staged-api.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/std-impl-gate.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/super-traits.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/syntax.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-twice.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde-twice.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/without-tilde.rs (100%) rename {src/test => tests}/ui/rfc-2632-const-trait-impl/without-tilde.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-1014-2.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1014.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1789-as-cell/from-mut.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-empty.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-exitcode.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result-box-error_ok.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-str.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/box.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/constref.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/enum.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/for.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/general.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/lit.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/range.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/ref-region.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/reset-mode.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/slice.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/struct.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/tuple-struct.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2005-default-binding-mode/tuple.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2151-raw-identifiers/attr.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2151-raw-identifiers/basic.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2151-raw-identifiers/items.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2151-raw-identifiers/macros.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2175-or-if-while-let/basic.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2302-self-struct-ctor.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/check-pass.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/closures-inherit-target_feature.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.mir.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.thir.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/fn-traits.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/safe-calls.mir.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/safe-calls.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/safe-calls.thir.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2421-unreserve-pure-offsetof-sizeof-alignof.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/coerce-in-base-expr.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.rs (100%) rename {src/test => tests}/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1445/eq-allows-match.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1623-2.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1623-2.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc1623-3.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1623-3.stderr (100%) rename {src/test => tests}/ui/rfcs/rfc1623.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1717/library-override.rs (100%) rename {src/test => tests}/ui/rfcs/rfc1857-drop-order.rs (100%) rename {src/test => tests}/ui/rmeta/auxiliary/rmeta-meta.rs (100%) rename {src/test => tests}/ui/rmeta/auxiliary/rmeta-rlib-rpass.rs (100%) rename {src/test => tests}/ui/rmeta/auxiliary/rmeta-rlib.rs (100%) rename {src/test => tests}/ui/rmeta/auxiliary/rmeta-rmeta.rs (100%) rename {src/test => tests}/ui/rmeta/emit-artifact-notifications.polonius.stderr (100%) rename {src/test => tests}/ui/rmeta/emit-artifact-notifications.rs (100%) rename {src/test => tests}/ui/rmeta/emit-artifact-notifications.stderr (100%) rename {src/test => tests}/ui/rmeta/emit-metadata-obj.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta-lib-pass.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta-pass.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta-priv-warn.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta-rpass.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta.stderr (100%) rename {src/test => tests}/ui/rmeta/rmeta_lib.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta_lib.stderr (100%) rename {src/test => tests}/ui/rmeta/rmeta_meta_main.rs (100%) rename {src/test => tests}/ui/rmeta/rmeta_meta_main.stderr (100%) rename {src/test => tests}/ui/runtime/atomic-print.rs (100%) rename {src/test => tests}/ui/runtime/backtrace-debuginfo-aux.rs (100%) rename {src/test => tests}/ui/runtime/backtrace-debuginfo.rs (100%) rename {src/test => tests}/ui/runtime/native-print-no-runtime.rs (100%) rename {src/test => tests}/ui/runtime/out-of-stack.rs (100%) rename {src/test => tests}/ui/runtime/rt-explody-panic-payloads.rs (100%) rename {src/test => tests}/ui/runtime/running-with-no-runtime.rs (100%) rename {src/test => tests}/ui/runtime/signal-alternate-stack-cleanup.rs (100%) rename {src/test => tests}/ui/runtime/stdout-during-shutdown.rs (100%) rename {src/test => tests}/ui/runtime/stdout-during-shutdown.run.stdout (100%) rename {src/test => tests}/ui/rust-2018/async-ident-allowed.rs (100%) rename {src/test => tests}/ui/rust-2018/async-ident-allowed.stderr (100%) rename {src/test => tests}/ui/rust-2018/async-ident.fixed (100%) rename {src/test => tests}/ui/rust-2018/async-ident.rs (100%) rename {src/test => tests}/ui/rust-2018/async-ident.stderr (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/baz.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/edition-lint-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/macro-use-warned-against.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/macro-use-warned-against2.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/remove-extern-crate.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/suggestions-not-always-applicable.rs (100%) rename {src/test => tests}/ui/rust-2018/auxiliary/trait-import-suggestions.rs (100%) rename {src/test => tests}/ui/rust-2018/dyn-keyword.fixed (100%) rename {src/test => tests}/ui/rust-2018/dyn-keyword.rs (100%) rename {src/test => tests}/ui/rust-2018/dyn-keyword.stderr (100%) rename {src/test => tests}/ui/rust-2018/dyn-trait-compatibility.rs (100%) rename {src/test => tests}/ui/rust-2018/dyn-trait-compatibility.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-fully-qualified-paths.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-fully-qualified-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-fully-qualified-paths.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives-macro.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives-macro.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives-macro.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives-multispan.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-infer-outlives.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-empty-paths.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-empty-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-empty-paths.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-paths.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-nested-paths.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-paths-2018.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-paths.fixed (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-paths.stderr (100%) rename {src/test => tests}/ui/rust-2018/edition-lint-uninferable-outlives.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-idiomatic-in-2018.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-idiomatic.fixed (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-idiomatic.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-referenced-by-self-path.fixed (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-referenced-by-self-path.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-rename.fixed (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-rename.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-rename.stderr (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-submod.fixed (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-submod.rs (100%) rename {src/test => tests}/ui/rust-2018/extern-crate-submod.stderr (100%) rename {src/test => tests}/ui/rust-2018/future-proofing-locals.rs (100%) rename {src/test => tests}/ui/rust-2018/future-proofing-locals.stderr (100%) rename {src/test => tests}/ui/rust-2018/issue-51008-1.rs (100%) rename {src/test => tests}/ui/rust-2018/issue-51008.rs (100%) rename {src/test => tests}/ui/rust-2018/issue-52202-use-suggestions.rs (100%) rename {src/test => tests}/ui/rust-2018/issue-52202-use-suggestions.stderr (100%) rename {src/test => tests}/ui/rust-2018/issue-54006.rs (100%) rename {src/test => tests}/ui/rust-2018/issue-54006.stderr (100%) rename {src/test => tests}/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.fixed (100%) rename {src/test => tests}/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs (100%) rename {src/test => tests}/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.stderr (100%) rename {src/test => tests}/ui/rust-2018/local-path-suggestions-2015.rs (100%) rename {src/test => tests}/ui/rust-2018/local-path-suggestions-2015.stderr (100%) rename {src/test => tests}/ui/rust-2018/local-path-suggestions-2018.rs (100%) rename {src/test => tests}/ui/rust-2018/local-path-suggestions-2018.stderr (100%) rename {src/test => tests}/ui/rust-2018/macro-use-warned-against.rs (100%) rename {src/test => tests}/ui/rust-2018/macro-use-warned-against.stderr (100%) rename {src/test => tests}/ui/rust-2018/proc-macro-crate-in-paths.rs (100%) rename {src/test => tests}/ui/rust-2018/remove-extern-crate.fixed (100%) rename {src/test => tests}/ui/rust-2018/remove-extern-crate.rs (100%) rename {src/test => tests}/ui/rust-2018/remove-extern-crate.stderr (100%) rename {src/test => tests}/ui/rust-2018/suggestions-not-always-applicable.fixed (100%) rename {src/test => tests}/ui/rust-2018/suggestions-not-always-applicable.rs (100%) rename {src/test => tests}/ui/rust-2018/trait-import-suggestions.rs (100%) rename {src/test => tests}/ui/rust-2018/trait-import-suggestions.stderr (100%) rename {src/test => tests}/ui/rust-2018/try-ident.fixed (100%) rename {src/test => tests}/ui/rust-2018/try-ident.rs (100%) rename {src/test => tests}/ui/rust-2018/try-ident.stderr (100%) rename {src/test => tests}/ui/rust-2018/try-macro.fixed (100%) rename {src/test => tests}/ui/rust-2018/try-macro.rs (100%) rename {src/test => tests}/ui/rust-2018/try-macro.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-macros-nested.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-macros-nested.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-macros.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-macros.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-nested.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity-nested.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/ambiguity.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/auxiliary/cross-crate.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/block-scoped-shadow.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/block-scoped-shadow.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/cross-crate.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/cross-crate.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/deadlock.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/deadlock.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/fn-local-enum.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/from-decl-macro.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-54253.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-54253.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-55779.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-56596-2.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-56596.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-56596.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-87932.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/issue-87932.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/macro-rules.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/macro-rules.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/prelude-fail-2.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/prelude-fail-2.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/prelude-fail.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/prelude-fail.stderr (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/prelude.rs (100%) rename {src/test => tests}/ui/rust-2018/uniform-paths/redundant.rs (100%) rename {src/test => tests}/ui/rust-2018/unresolved-asterisk-imports.rs (100%) rename {src/test => tests}/ui/rust-2018/unresolved-asterisk-imports.stderr (100%) rename {src/test => tests}/ui/rust-2021/array-into-iter-ambiguous.fixed (100%) rename {src/test => tests}/ui/rust-2021/array-into-iter-ambiguous.rs (100%) rename {src/test => tests}/ui/rust-2021/array-into-iter-ambiguous.stderr (100%) rename {src/test => tests}/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs (100%) rename {src/test => tests}/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic-trait.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic-trait.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic-trait.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-generic.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-imported.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-imported.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-imported.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-macros.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-macros.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-macros.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-shadow.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-shadow.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-turbofish.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-turbofish.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-turbofish.stderr (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision-unneeded.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision.fixed (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision.rs (100%) rename {src/test => tests}/ui/rust-2021/future-prelude-collision.stderr (100%) rename {src/test => tests}/ui/rust-2021/generic-type-collision.fixed (100%) rename {src/test => tests}/ui/rust-2021/generic-type-collision.rs (100%) rename {src/test => tests}/ui/rust-2021/generic-type-collision.stderr (100%) rename {src/test => tests}/ui/rust-2021/inherent-dyn-collision.fixed (100%) rename {src/test => tests}/ui/rust-2021/inherent-dyn-collision.rs (100%) rename {src/test => tests}/ui/rust-2021/inherent-dyn-collision.stderr (100%) rename {src/test => tests}/ui/rust-2021/inherent-method-collision.rs (100%) rename {src/test => tests}/ui/rust-2021/panic.rs (100%) rename {src/test => tests}/ui/rust-2021/panic.stderr (100%) rename {src/test => tests}/ui/rust-2021/prelude2021.rs (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-migration.fixed (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-migration.rs (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-migration.stderr (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-via-macro-2.rs (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-via-macro-2.stderr (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes-via-macro.rs (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes.rs (100%) rename {src/test => tests}/ui/rust-2021/reserved-prefixes.stderr (100%) rename {src/test => tests}/ui/rustc-error.rs (100%) rename {src/test => tests}/ui/rustc-error.stderr (100%) rename {src/test => tests}/ui/rustc-rust-log.rs (100%) rename {src/test => tests}/ui/rustdoc/README.md (100%) rename {src/test => tests}/ui/rustdoc/cfg-rustdoc.rs (100%) rename {src/test => tests}/ui/rustdoc/cfg-rustdoc.stderr (100%) rename {src/test => tests}/ui/rustdoc/check-doc-alias-attr-location.rs (100%) rename {src/test => tests}/ui/rustdoc/check-doc-alias-attr-location.stderr (100%) rename {src/test => tests}/ui/rustdoc/check-doc-alias-attr.rs (100%) rename {src/test => tests}/ui/rustdoc/check-doc-alias-attr.stderr (100%) rename {src/test => tests}/ui/rustdoc/deny-invalid-doc-attrs.rs (100%) rename {src/test => tests}/ui/rustdoc/deny-invalid-doc-attrs.stderr (100%) rename {src/test => tests}/ui/rustdoc/doc-alias-crate-level.rs (100%) rename {src/test => tests}/ui/rustdoc/doc-alias-crate-level.stderr (100%) rename {src/test => tests}/ui/rustdoc/doc-alias-same-name.rs (100%) rename {src/test => tests}/ui/rustdoc/doc-alias-same-name.stderr (100%) rename {src/test => tests}/ui/rustdoc/doc-inline-extern-crate.rs (100%) rename {src/test => tests}/ui/rustdoc/doc-inline-extern-crate.stderr (100%) rename {src/test => tests}/ui/rustdoc/doc-test-attr-pass.rs (100%) rename {src/test => tests}/ui/rustdoc/doc-test-attr.rs (100%) rename {src/test => tests}/ui/rustdoc/doc-test-attr.stderr (100%) rename {src/test => tests}/ui/rustdoc/doc_keyword.rs (100%) rename {src/test => tests}/ui/rustdoc/doc_keyword.stderr (100%) rename {src/test => tests}/ui/rustdoc/duplicate_doc_alias.rs (100%) rename {src/test => tests}/ui/rustdoc/duplicate_doc_alias.stderr (100%) rename {src/test => tests}/ui/rustdoc/feature-gate-doc_primitive.rs (100%) rename {src/test => tests}/ui/rustdoc/feature-gate-doc_primitive.stderr (100%) rename {src/test => tests}/ui/rustdoc/hidden-doc-associated-item.rs (100%) rename {src/test => tests}/ui/rustdoc/renamed-features-rustdoc_internals.rs (100%) rename {src/test => tests}/ui/rustdoc/renamed-features-rustdoc_internals.stderr (100%) rename {src/test => tests}/ui/rustdoc/unterminated-doc-comment.rs (100%) rename {src/test => tests}/ui/rustdoc/unterminated-doc-comment.stderr (100%) rename {src/test => tests}/ui/sanitize/address.rs (100%) rename {src/test => tests}/ui/sanitize/badfree.rs (100%) rename {src/test => tests}/ui/sanitize/cfg.rs (100%) rename {src/test => tests}/ui/sanitize/crt-static.rs (100%) rename {src/test => tests}/ui/sanitize/crt-static.stderr (100%) rename {src/test => tests}/ui/sanitize/hwaddress.rs (100%) rename {src/test => tests}/ui/sanitize/incompatible.rs (100%) rename {src/test => tests}/ui/sanitize/incompatible.stderr (100%) rename {src/test => tests}/ui/sanitize/inline-always.rs (100%) rename {src/test => tests}/ui/sanitize/inline-always.stderr (100%) rename {src/test => tests}/ui/sanitize/issue-72154-lifetime-markers.rs (100%) rename {src/test => tests}/ui/sanitize/leak.rs (100%) rename {src/test => tests}/ui/sanitize/memory-eager.rs (100%) rename {src/test => tests}/ui/sanitize/memory-passing.rs (100%) rename {src/test => tests}/ui/sanitize/memory.rs (100%) rename {src/test => tests}/ui/sanitize/new-llvm-pass-manager-thin-lto.rs (100%) rename {src/test => tests}/ui/sanitize/thread.rs (100%) rename {src/test => tests}/ui/sanitize/unsupported-target.rs (100%) rename {src/test => tests}/ui/sanitize/unsupported-target.stderr (100%) rename {src/test => tests}/ui/sanitize/use-after-scope.rs (100%) rename {src/test => tests}/ui/save-analysis/emit-notifications.polonius.stderr (100%) rename {src/test => tests}/ui/save-analysis/emit-notifications.rs (100%) rename {src/test => tests}/ui/save-analysis/emit-notifications.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-26459.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-26459.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-37323.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-59134-0.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-59134-0.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-59134-1.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-59134-1.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-63663.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-64659.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-65411.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-65590.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-68621.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-68621.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-72267.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-72267.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-73020.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-73020.stderr (100%) rename {src/test => tests}/ui/save-analysis/issue-73022.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-89066.rs (100%) rename {src/test => tests}/ui/save-analysis/issue-89066.stderr (100%) rename {src/test => tests}/ui/self/arbitrary-self-types-not-object-safe.curr.stderr (100%) rename {src/test => tests}/ui/self/arbitrary-self-types-not-object-safe.object_safe_for_dispatch.stderr (100%) rename {src/test => tests}/ui/self/arbitrary-self-types-not-object-safe.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_nested.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime-async.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.stderr (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.stderr (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.stderr (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_mismatch.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pin_lifetime_mismatch.stderr (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_pointers_and_wrappers.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_raw_pointer_struct.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_raw_pointer_trait.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_silly.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_stdlib_pointers.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_struct.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_trait.rs (100%) rename {src/test => tests}/ui/self/arbitrary_self_types_unsized_struct.rs (100%) rename {src/test => tests}/ui/self/auxiliary/explicit_self_xcrate.rs (100%) rename {src/test => tests}/ui/self/builtin-superkinds-self-type.rs (100%) rename {src/test => tests}/ui/self/by-value-self-in-mut-slot.rs (100%) rename {src/test => tests}/ui/self/class-missing-self.rs (100%) rename {src/test => tests}/ui/self/class-missing-self.stderr (100%) rename {src/test => tests}/ui/self/elision/README.md (100%) rename {src/test => tests}/ui/self/elision/alias-async.rs (100%) rename {src/test => tests}/ui/self/elision/alias.rs (100%) rename {src/test => tests}/ui/self/elision/assoc-async.rs (100%) rename {src/test => tests}/ui/self/elision/assoc.rs (100%) rename {src/test => tests}/ui/self/elision/lt-alias-async.rs (100%) rename {src/test => tests}/ui/self/elision/lt-alias.rs (100%) rename {src/test => tests}/ui/self/elision/lt-assoc-async.rs (100%) rename {src/test => tests}/ui/self/elision/lt-assoc.rs (100%) rename {src/test => tests}/ui/self/elision/lt-ref-self-async.rs (100%) rename {src/test => tests}/ui/self/elision/lt-ref-self-async.stderr (100%) rename {src/test => tests}/ui/self/elision/lt-ref-self.rs (100%) rename {src/test => tests}/ui/self/elision/lt-ref-self.stderr (100%) rename {src/test => tests}/ui/self/elision/lt-self-async.rs (100%) rename {src/test => tests}/ui/self/elision/lt-self.rs (100%) rename {src/test => tests}/ui/self/elision/lt-struct-async.rs (100%) rename {src/test => tests}/ui/self/elision/lt-struct.rs (100%) rename {src/test => tests}/ui/self/elision/multiple-ref-self-async.rs (100%) rename {src/test => tests}/ui/self/elision/multiple-ref-self.rs (100%) rename {src/test => tests}/ui/self/elision/ref-alias-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-alias.rs (100%) rename {src/test => tests}/ui/self/elision/ref-assoc-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-assoc.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-alias-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-alias.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-self-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-self-async.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-mut-self.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-self.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-mut-struct-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-struct-async.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-mut-struct.rs (100%) rename {src/test => tests}/ui/self/elision/ref-mut-struct.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-self-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-self-async.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-self.rs (100%) rename {src/test => tests}/ui/self/elision/ref-self.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-struct-async.rs (100%) rename {src/test => tests}/ui/self/elision/ref-struct-async.stderr (100%) rename {src/test => tests}/ui/self/elision/ref-struct.rs (100%) rename {src/test => tests}/ui/self/elision/ref-struct.stderr (100%) rename {src/test => tests}/ui/self/elision/self-async.rs (100%) rename {src/test => tests}/ui/self/elision/self.rs (100%) rename {src/test => tests}/ui/self/elision/struct-async.rs (100%) rename {src/test => tests}/ui/self/elision/struct.rs (100%) rename {src/test => tests}/ui/self/explicit-self-closures.rs (100%) rename {src/test => tests}/ui/self/explicit-self-generic.rs (100%) rename {src/test => tests}/ui/self/explicit-self-objects-uniq.rs (100%) rename {src/test => tests}/ui/self/explicit-self.rs (100%) rename {src/test => tests}/ui/self/explicit_self_xcrate_exe.rs (100%) rename {src/test => tests}/ui/self/issue-61882-2.rs (100%) rename {src/test => tests}/ui/self/issue-61882-2.stderr (100%) rename {src/test => tests}/ui/self/issue-61882.rs (100%) rename {src/test => tests}/ui/self/issue-61882.stderr (100%) rename {src/test => tests}/ui/self/move-self.rs (100%) rename {src/test => tests}/ui/self/object-safety-sized-self-by-value-self.rs (100%) rename {src/test => tests}/ui/self/object-safety-sized-self-generic-method.rs (100%) rename {src/test => tests}/ui/self/object-safety-sized-self-return-Self.rs (100%) rename {src/test => tests}/ui/self/objects-owned-object-owned-method.rs (100%) rename {src/test => tests}/ui/self/point-at-arbitrary-self-type-method.rs (100%) rename {src/test => tests}/ui/self/point-at-arbitrary-self-type-method.stderr (100%) rename {src/test => tests}/ui/self/point-at-arbitrary-self-type-trait-method.rs (100%) rename {src/test => tests}/ui/self/point-at-arbitrary-self-type-trait-method.stderr (100%) rename {src/test => tests}/ui/self/self-impl-2.rs (100%) rename {src/test => tests}/ui/self/self-impl.rs (100%) rename {src/test => tests}/ui/self/self-impl.stderr (100%) rename {src/test => tests}/ui/self/self-in-mut-slot-default-method.rs (100%) rename {src/test => tests}/ui/self/self-in-mut-slot-immediate-value.rs (100%) rename {src/test => tests}/ui/self/self-in-typedefs.rs (100%) rename {src/test => tests}/ui/self/self-infer.rs (100%) rename {src/test => tests}/ui/self/self-infer.stderr (100%) rename {src/test => tests}/ui/self/self-re-assign.rs (100%) rename {src/test => tests}/ui/self/self-shadowing-import.rs (100%) rename {src/test => tests}/ui/self/self-type-param.rs (100%) rename {src/test => tests}/ui/self/self-vs-path-ambiguity.rs (100%) rename {src/test => tests}/ui/self/self-vs-path-ambiguity.stderr (100%) rename {src/test => tests}/ui/self/self_lifetime-async.rs (100%) rename {src/test => tests}/ui/self/self_lifetime.rs (100%) rename {src/test => tests}/ui/self/self_type_keyword-2.rs (100%) rename {src/test => tests}/ui/self/self_type_keyword-2.stderr (100%) rename {src/test => tests}/ui/self/self_type_keyword.rs (100%) rename {src/test => tests}/ui/self/self_type_keyword.stderr (100%) rename {src/test => tests}/ui/self/string-self-append.rs (100%) rename {src/test => tests}/ui/self/suggest-self-2.rs (100%) rename {src/test => tests}/ui/self/suggest-self-2.stderr (100%) rename {src/test => tests}/ui/self/suggest-self.rs (100%) rename {src/test => tests}/ui/self/suggest-self.stderr (100%) rename {src/test => tests}/ui/self/ufcs-explicit-self.rs (100%) rename {src/test => tests}/ui/self/uniq-self-in-mut-slot.rs (100%) rename {src/test => tests}/ui/self/where-for-self.rs (100%) rename {src/test => tests}/ui/sepcomp/auxiliary/sepcomp-extern-lib.rs (100%) rename {src/test => tests}/ui/sepcomp/auxiliary/sepcomp_cci_lib.rs (100%) rename {src/test => tests}/ui/sepcomp/auxiliary/sepcomp_lib.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-cci.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-extern.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-fns-backwards.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-fns.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-lib-lto.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-lib.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-statics.rs (100%) rename {src/test => tests}/ui/sepcomp/sepcomp-unwind.rs (100%) rename {src/test => tests}/ui/seq-args.rs (100%) rename {src/test => tests}/ui/seq-args.stderr (100%) rename {src/test => tests}/ui/shadow-bool.rs (100%) rename {src/test => tests}/ui/shadowed-use-visibility.rs (100%) rename {src/test => tests}/ui/shadowed/shadowed-lifetime.rs (100%) rename {src/test => tests}/ui/shadowed/shadowed-lifetime.stderr (100%) rename {src/test => tests}/ui/shadowed/shadowed-trait-methods.rs (100%) rename {src/test => tests}/ui/shadowed/shadowed-trait-methods.stderr (100%) rename {src/test => tests}/ui/shadowed/shadowed-type-parameter.rs (100%) rename {src/test => tests}/ui/shadowed/shadowed-type-parameter.stderr (100%) rename {src/test => tests}/ui/shadowed/shadowed-use-visibility.rs (100%) rename {src/test => tests}/ui/shadowed/shadowed-use-visibility.stderr (100%) rename {src/test => tests}/ui/shadowed/shadowing-in-the-same-pattern.rs (100%) rename {src/test => tests}/ui/shadowed/shadowing-in-the-same-pattern.stderr (100%) rename {src/test => tests}/ui/short-error-format.rs (100%) rename {src/test => tests}/ui/short-error-format.stderr (100%) rename {src/test => tests}/ui/simd/array-trait.rs (100%) rename {src/test => tests}/ui/simd/array-trait.stderr (100%) rename {src/test => tests}/ui/simd/array-type.rs (100%) rename {src/test => tests}/ui/simd/generics.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/float-math-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/float-minmax-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-2.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-2.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-saturating-2.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-saturating-2.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-as.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-bitmask-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-bitmask.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-bitmask.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-cast-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-cast-pointer-width.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-cast.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-cast.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-comparison-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-comparison.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-comparison.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-elements-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-elements.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-elements.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-gather-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-reduction-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-reduction.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-reduction.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-select-pass.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-select.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-select.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-shuffle.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/generic-shuffle.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/inlining-issue67557-ice.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/inlining-issue67557.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/issue-85855.rs (100%) rename {src/test => tests}/ui/simd/intrinsic/issue-85855.stderr (100%) rename {src/test => tests}/ui/simd/intrinsic/ptr-cast.rs (100%) rename {src/test => tests}/ui/simd/issue-17170.rs (100%) rename {src/test => tests}/ui/simd/issue-32947.rs (100%) rename {src/test => tests}/ui/simd/issue-39720.rs (100%) rename {src/test => tests}/ui/simd/issue-85915-simd-ptrs.rs (100%) rename {src/test => tests}/ui/simd/issue-89193.rs (100%) rename {src/test => tests}/ui/simd/libm_no_std_cant_float.rs (100%) rename {src/test => tests}/ui/simd/libm_no_std_cant_float.stderr (100%) rename {src/test => tests}/ui/simd/libm_std_can_float.rs (100%) rename {src/test => tests}/ui/simd/monomorphize-shuffle-index.rs (100%) rename {src/test => tests}/ui/simd/portable-intrinsics-arent-exposed.rs (100%) rename {src/test => tests}/ui/simd/portable-intrinsics-arent-exposed.stderr (100%) rename {src/test => tests}/ui/simd/shuffle-not-out-of-bounds.rs (100%) rename {src/test => tests}/ui/simd/shuffle-not-out-of-bounds.stderr (100%) rename {src/test => tests}/ui/simd/shuffle.rs (100%) rename {src/test => tests}/ui/simd/simd-bitmask.rs (100%) rename {src/test => tests}/ui/simd/size-align.rs (100%) rename {src/test => tests}/ui/simd/target-feature-mixup.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-empty.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-empty.stderr (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-non-primitive.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-non-primitive.stderr (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-oversized.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-oversized.stderr (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-power-of-two.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-wide-ptr.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation-wide-ptr.stderr (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation.rs (100%) rename {src/test => tests}/ui/simd/type-generic-monomorphisation.stderr (100%) rename {src/test => tests}/ui/simd/type-len.rs (100%) rename {src/test => tests}/ui/simd/type-len.stderr (100%) rename {src/test => tests}/ui/simd/type-wide-ptr.rs (100%) rename {src/test => tests}/ui/simd/type-wide-ptr.stderr (100%) rename {src/test => tests}/ui/simd/wasm-simd-indirect.rs (100%) rename {src/test => tests}/ui/simple_global_asm.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/derive-eq.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/fn-types.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/fn-types.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-fn-argument.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-fn-argument.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-fn-return.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-method-return.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-struct.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-trait-method-argument.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-fn-arguments.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/two-uses-in-trait-impl.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/zero-uses-in-fn.fixed (100%) rename {src/test => tests}/ui/single-use-lifetime/zero-uses-in-fn.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/zero-uses-in-fn.stderr (100%) rename {src/test => tests}/ui/single-use-lifetime/zero-uses-in-impl.rs (100%) rename {src/test => tests}/ui/single-use-lifetime/zero-uses-in-impl.stderr (100%) rename {src/test => tests}/ui/sized-borrowed-pointer.rs (100%) rename {src/test => tests}/ui/sized-cycle-note.rs (100%) rename {src/test => tests}/ui/sized-cycle-note.stderr (100%) rename {src/test => tests}/ui/sized-owned-pointer.rs (100%) rename {src/test => tests}/ui/sized/coinductive-1-gat.rs (100%) rename {src/test => tests}/ui/sized/coinductive-1.rs (100%) rename {src/test => tests}/ui/sized/coinductive-2.rs (100%) rename {src/test => tests}/ui/sized/recursive-type-1.rs (100%) rename {src/test => tests}/ui/sized/recursive-type-2.rs (100%) rename {src/test => tests}/ui/sized/recursive-type-2.stderr (100%) rename {src/test => tests}/ui/slightly-nice-generic-literal-messages.rs (100%) rename {src/test => tests}/ui/slightly-nice-generic-literal-messages.stderr (100%) rename {src/test => tests}/ui/span/E0046.rs (100%) rename {src/test => tests}/ui/span/E0046.stderr (100%) rename {src/test => tests}/ui/span/E0072.rs (100%) rename {src/test => tests}/ui/span/E0072.stderr (100%) rename {src/test => tests}/ui/span/E0204.rs (100%) rename {src/test => tests}/ui/span/E0204.stderr (100%) rename {src/test => tests}/ui/span/E0493.rs (100%) rename {src/test => tests}/ui/span/E0493.stderr (100%) rename {src/test => tests}/ui/span/E0535.rs (100%) rename {src/test => tests}/ui/span/E0535.stderr (100%) rename {src/test => tests}/ui/span/E0536.rs (100%) rename {src/test => tests}/ui/span/E0536.stderr (100%) rename {src/test => tests}/ui/span/E0537.rs (100%) rename {src/test => tests}/ui/span/E0537.stderr (100%) rename {src/test => tests}/ui/span/auxiliary/transitive_dep_three.rs (100%) rename {src/test => tests}/ui/span/auxiliary/transitive_dep_two.rs (100%) rename {src/test => tests}/ui/span/borrowck-borrow-overloaded-auto-deref-mut.rs (100%) rename {src/test => tests}/ui/span/borrowck-borrow-overloaded-auto-deref-mut.stderr (100%) rename {src/test => tests}/ui/span/borrowck-borrow-overloaded-deref-mut.rs (100%) rename {src/test => tests}/ui/span/borrowck-borrow-overloaded-deref-mut.stderr (100%) rename {src/test => tests}/ui/span/borrowck-call-is-borrow-issue-12224.rs (100%) rename {src/test => tests}/ui/span/borrowck-call-is-borrow-issue-12224.stderr (100%) rename {src/test => tests}/ui/span/borrowck-call-method-from-mut-aliasable.rs (100%) rename {src/test => tests}/ui/span/borrowck-call-method-from-mut-aliasable.stderr (100%) rename {src/test => tests}/ui/span/borrowck-fn-in-const-b.rs (100%) rename {src/test => tests}/ui/span/borrowck-fn-in-const-b.stderr (100%) rename {src/test => tests}/ui/span/borrowck-let-suggestion-suffixes.rs (100%) rename {src/test => tests}/ui/span/borrowck-let-suggestion-suffixes.stderr (100%) rename {src/test => tests}/ui/span/borrowck-object-mutability.rs (100%) rename {src/test => tests}/ui/span/borrowck-object-mutability.stderr (100%) rename {src/test => tests}/ui/span/borrowck-ref-into-rvalue.fixed (100%) rename {src/test => tests}/ui/span/borrowck-ref-into-rvalue.rs (100%) rename {src/test => tests}/ui/span/borrowck-ref-into-rvalue.stderr (100%) rename {src/test => tests}/ui/span/coerce-suggestions.rs (100%) rename {src/test => tests}/ui/span/coerce-suggestions.stderr (100%) rename {src/test => tests}/ui/span/destructor-restrictions.rs (100%) rename {src/test => tests}/ui/span/destructor-restrictions.stderr (100%) rename {src/test => tests}/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.rs (100%) rename {src/test => tests}/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.stderr (100%) rename {src/test => tests}/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.rs (100%) rename {src/test => tests}/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.stderr (100%) rename {src/test => tests}/ui/span/dropck-object-cycle.rs (100%) rename {src/test => tests}/ui/span/dropck-object-cycle.stderr (100%) rename {src/test => tests}/ui/span/dropck_arr_cycle_checked.rs (100%) rename {src/test => tests}/ui/span/dropck_arr_cycle_checked.stderr (100%) rename {src/test => tests}/ui/span/dropck_direct_cycle_with_drop.rs (100%) rename {src/test => tests}/ui/span/dropck_direct_cycle_with_drop.stderr (100%) rename {src/test => tests}/ui/span/dropck_misc_variants.rs (100%) rename {src/test => tests}/ui/span/dropck_misc_variants.stderr (100%) rename {src/test => tests}/ui/span/dropck_vec_cycle_checked.rs (100%) rename {src/test => tests}/ui/span/dropck_vec_cycle_checked.stderr (100%) rename {src/test => tests}/ui/span/gated-features-attr-spans.rs (100%) rename {src/test => tests}/ui/span/gated-features-attr-spans.stderr (100%) rename {src/test => tests}/ui/span/impl-wrong-item-for-trait.rs (100%) rename {src/test => tests}/ui/span/impl-wrong-item-for-trait.stderr (100%) rename {src/test => tests}/ui/span/import-ty-params.rs (100%) rename {src/test => tests}/ui/span/import-ty-params.stderr (100%) rename {src/test => tests}/ui/span/issue-11925.rs (100%) rename {src/test => tests}/ui/span/issue-11925.stderr (100%) rename {src/test => tests}/ui/span/issue-15480.fixed (100%) rename {src/test => tests}/ui/span/issue-15480.rs (100%) rename {src/test => tests}/ui/span/issue-15480.stderr (100%) rename {src/test => tests}/ui/span/issue-23338-locals-die-before-temps-of-body.rs (100%) rename {src/test => tests}/ui/span/issue-23338-locals-die-before-temps-of-body.stderr (100%) rename {src/test => tests}/ui/span/issue-23729.rs (100%) rename {src/test => tests}/ui/span/issue-23729.stderr (100%) rename {src/test => tests}/ui/span/issue-23827.rs (100%) rename {src/test => tests}/ui/span/issue-23827.stderr (100%) rename {src/test => tests}/ui/span/issue-24356.rs (100%) rename {src/test => tests}/ui/span/issue-24356.stderr (100%) rename {src/test => tests}/ui/span/issue-24690.rs (100%) rename {src/test => tests}/ui/span/issue-24690.stderr (100%) rename {src/test => tests}/ui/span/issue-24805-dropck-child-has-items-via-parent.rs (100%) rename {src/test => tests}/ui/span/issue-24805-dropck-child-has-items-via-parent.stderr (100%) rename {src/test => tests}/ui/span/issue-24805-dropck-trait-has-items.rs (100%) rename {src/test => tests}/ui/span/issue-24805-dropck-trait-has-items.stderr (100%) rename {src/test => tests}/ui/span/issue-24895-copy-clone-dropck.rs (100%) rename {src/test => tests}/ui/span/issue-24895-copy-clone-dropck.stderr (100%) rename {src/test => tests}/ui/span/issue-25199.rs (100%) rename {src/test => tests}/ui/span/issue-25199.stderr (100%) rename {src/test => tests}/ui/span/issue-26656.rs (100%) rename {src/test => tests}/ui/span/issue-26656.stderr (100%) rename {src/test => tests}/ui/span/issue-27522.rs (100%) rename {src/test => tests}/ui/span/issue-27522.stderr (100%) rename {src/test => tests}/ui/span/issue-29106.rs (100%) rename {src/test => tests}/ui/span/issue-29106.stderr (100%) rename {src/test => tests}/ui/span/issue-29595.rs (100%) rename {src/test => tests}/ui/span/issue-29595.stderr (100%) rename {src/test => tests}/ui/span/issue-33884.rs (100%) rename {src/test => tests}/ui/span/issue-33884.stderr (100%) rename {src/test => tests}/ui/span/issue-34264.rs (100%) rename {src/test => tests}/ui/span/issue-34264.stderr (100%) rename {src/test => tests}/ui/span/issue-35987.rs (100%) rename {src/test => tests}/ui/span/issue-35987.stderr (100%) rename {src/test => tests}/ui/span/issue-36537.rs (100%) rename {src/test => tests}/ui/span/issue-36537.stderr (100%) rename {src/test => tests}/ui/span/issue-37767.rs (100%) rename {src/test => tests}/ui/span/issue-37767.stderr (100%) rename {src/test => tests}/ui/span/issue-39018.rs (100%) rename {src/test => tests}/ui/span/issue-39018.stderr (100%) rename {src/test => tests}/ui/span/issue-39698.rs (100%) rename {src/test => tests}/ui/span/issue-39698.stderr (100%) rename {src/test => tests}/ui/span/issue-40157.rs (100%) rename {src/test => tests}/ui/span/issue-40157.stderr (100%) rename {src/test => tests}/ui/span/issue-42234-unknown-receiver-type.full.stderr (100%) rename {src/test => tests}/ui/span/issue-42234-unknown-receiver-type.generic_arg.stderr (100%) rename {src/test => tests}/ui/span/issue-42234-unknown-receiver-type.rs (100%) rename {src/test => tests}/ui/span/issue-43927-non-ADT-derive.rs (100%) rename {src/test => tests}/ui/span/issue-43927-non-ADT-derive.stderr (100%) rename {src/test => tests}/ui/span/issue-71363.rs (100%) rename {src/test => tests}/ui/span/issue-71363.stderr (100%) rename {src/test => tests}/ui/span/issue-81800.rs (100%) rename {src/test => tests}/ui/span/issue-81800.stderr (100%) rename {src/test => tests}/ui/span/issue28498-reject-ex1.rs (100%) rename {src/test => tests}/ui/span/issue28498-reject-ex1.stderr (100%) rename {src/test => tests}/ui/span/issue28498-reject-lifetime-param.rs (100%) rename {src/test => tests}/ui/span/issue28498-reject-lifetime-param.stderr (100%) rename {src/test => tests}/ui/span/issue28498-reject-passed-to-fn.rs (100%) rename {src/test => tests}/ui/span/issue28498-reject-passed-to-fn.stderr (100%) rename {src/test => tests}/ui/span/issue28498-reject-trait-bound.rs (100%) rename {src/test => tests}/ui/span/issue28498-reject-trait-bound.stderr (100%) rename {src/test => tests}/ui/span/lint-unused-unsafe-thir.rs (100%) rename {src/test => tests}/ui/span/lint-unused-unsafe-thir.stderr (100%) rename {src/test => tests}/ui/span/lint-unused-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/span/lint-unused-unsafe.rs (100%) rename {src/test => tests}/ui/span/macro-span-replacement.rs (100%) rename {src/test => tests}/ui/span/macro-span-replacement.stderr (100%) rename {src/test => tests}/ui/span/macro-ty-params.rs (100%) rename {src/test => tests}/ui/span/macro-ty-params.stderr (100%) rename {src/test => tests}/ui/span/method-and-field-eager-resolution.rs (100%) rename {src/test => tests}/ui/span/method-and-field-eager-resolution.stderr (100%) rename {src/test => tests}/ui/span/missing-unit-argument.rs (100%) rename {src/test => tests}/ui/span/missing-unit-argument.stderr (100%) rename {src/test => tests}/ui/span/move-closure.rs (100%) rename {src/test => tests}/ui/span/move-closure.stderr (100%) rename {src/test => tests}/ui/span/multiline-span-E0072.rs (100%) rename {src/test => tests}/ui/span/multiline-span-E0072.stderr (100%) rename {src/test => tests}/ui/span/multiline-span-simple.rs (100%) rename {src/test => tests}/ui/span/multiline-span-simple.stderr (100%) rename {src/test => tests}/ui/span/multispan-import-lint.rs (100%) rename {src/test => tests}/ui/span/multispan-import-lint.stderr (100%) rename {src/test => tests}/ui/span/mut-arg-hint.rs (100%) rename {src/test => tests}/ui/span/mut-arg-hint.stderr (100%) rename {src/test => tests}/ui/span/mut-ptr-cant-outlive-ref.rs (100%) rename {src/test => tests}/ui/span/mut-ptr-cant-outlive-ref.stderr (100%) rename {src/test => tests}/ui/span/non-existing-module-import.rs (100%) rename {src/test => tests}/ui/span/non-existing-module-import.stderr (100%) rename {src/test => tests}/ui/span/pub-struct-field.rs (100%) rename {src/test => tests}/ui/span/pub-struct-field.stderr (100%) rename {src/test => tests}/ui/span/range-2.rs (100%) rename {src/test => tests}/ui/span/range-2.stderr (100%) rename {src/test => tests}/ui/span/recursive-type-field.rs (100%) rename {src/test => tests}/ui/span/recursive-type-field.stderr (100%) rename {src/test => tests}/ui/span/regionck-unboxed-closure-lifetimes.rs (100%) rename {src/test => tests}/ui/span/regionck-unboxed-closure-lifetimes.stderr (100%) rename {src/test => tests}/ui/span/regions-close-over-borrowed-ref-in-obj.rs (100%) rename {src/test => tests}/ui/span/regions-close-over-borrowed-ref-in-obj.stderr (100%) rename {src/test => tests}/ui/span/regions-close-over-type-parameter-2.rs (100%) rename {src/test => tests}/ui/span/regions-close-over-type-parameter-2.stderr (100%) rename {src/test => tests}/ui/span/regions-escape-loop-via-variable.rs (100%) rename {src/test => tests}/ui/span/regions-escape-loop-via-variable.stderr (100%) rename {src/test => tests}/ui/span/regions-escape-loop-via-vec.rs (100%) rename {src/test => tests}/ui/span/regions-escape-loop-via-vec.stderr (100%) rename {src/test => tests}/ui/span/regions-infer-borrow-scope-within-loop.rs (100%) rename {src/test => tests}/ui/span/regions-infer-borrow-scope-within-loop.stderr (100%) rename {src/test => tests}/ui/span/send-is-not-static-ensures-scoping.rs (100%) rename {src/test => tests}/ui/span/send-is-not-static-ensures-scoping.stderr (100%) rename {src/test => tests}/ui/span/send-is-not-static-std-sync-2.rs (100%) rename {src/test => tests}/ui/span/send-is-not-static-std-sync-2.stderr (100%) rename {src/test => tests}/ui/span/send-is-not-static-std-sync.rs (100%) rename {src/test => tests}/ui/span/send-is-not-static-std-sync.stderr (100%) rename {src/test => tests}/ui/span/slice-borrow.rs (100%) rename {src/test => tests}/ui/span/slice-borrow.stderr (100%) rename {src/test => tests}/ui/span/suggestion-non-ascii.rs (100%) rename {src/test => tests}/ui/span/suggestion-non-ascii.stderr (100%) rename {src/test => tests}/ui/span/transitive-dep-span.rs (100%) rename {src/test => tests}/ui/span/transitive-dep-span.stderr (100%) rename {src/test => tests}/ui/span/type-annotations-needed-expr.rs (100%) rename {src/test => tests}/ui/span/type-annotations-needed-expr.stderr (100%) rename {src/test => tests}/ui/span/type-binding.rs (100%) rename {src/test => tests}/ui/span/type-binding.stderr (100%) rename {src/test => tests}/ui/span/typo-suggestion.rs (100%) rename {src/test => tests}/ui/span/typo-suggestion.stderr (100%) rename {src/test => tests}/ui/span/unused-warning-point-at-identifier.rs (100%) rename {src/test => tests}/ui/span/unused-warning-point-at-identifier.stderr (100%) rename {src/test => tests}/ui/span/vec-must-not-hide-type-from-dropck.rs (100%) rename {src/test => tests}/ui/span/vec-must-not-hide-type-from-dropck.stderr (100%) rename {src/test => tests}/ui/span/vec_refs_data_with_early_death.rs (100%) rename {src/test => tests}/ui/span/vec_refs_data_with_early_death.stderr (100%) rename {src/test => tests}/ui/span/visibility-ty-params.rs (100%) rename {src/test => tests}/ui/span/visibility-ty-params.stderr (100%) rename {src/test => tests}/ui/span/wf-method-late-bound-regions.rs (100%) rename {src/test => tests}/ui/span/wf-method-late-bound-regions.stderr (100%) rename {src/test => tests}/ui/specialization/README-rpass.md (100%) rename {src/test => tests}/ui/specialization/README.md (100%) rename {src/test => tests}/ui/specialization/assoc-ty-graph-cycle.rs (100%) rename {src/test => tests}/ui/specialization/assoc-ty-graph-cycle.stderr (100%) rename {src/test => tests}/ui/specialization/auxiliary/cross_crates_defaults.rs (100%) rename {src/test => tests}/ui/specialization/auxiliary/go_trait.rs (100%) rename {src/test => tests}/ui/specialization/auxiliary/specialization_cross_crate.rs (100%) rename {src/test => tests}/ui/specialization/const_trait_impl.rs (100%) rename {src/test => tests}/ui/specialization/cross-crate-defaults.rs (100%) rename {src/test => tests}/ui/specialization/cross-crate-defaults.stderr (100%) rename {src/test => tests}/ui/specialization/default-associated-type-bound-1.rs (100%) rename {src/test => tests}/ui/specialization/default-associated-type-bound-1.stderr (100%) rename {src/test => tests}/ui/specialization/default-associated-type-bound-2.rs (100%) rename {src/test => tests}/ui/specialization/default-associated-type-bound-2.stderr (100%) rename {src/test => tests}/ui/specialization/default-generic-associated-type-bound.rs (100%) rename {src/test => tests}/ui/specialization/default-generic-associated-type-bound.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/allowed-cross-crate.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/allowed-cross-crate.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/auxiliary/go_trait.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/out-of-order.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/out-of-order.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/overlap-projection.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/overlap-projection.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/projection.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/projection.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-feature-gate-default.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-no-default.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-no-default.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-wfcheck.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/specialization-wfcheck.stderr (100%) rename {src/test => tests}/ui/specialization/defaultimpl/validation.rs (100%) rename {src/test => tests}/ui/specialization/defaultimpl/validation.stderr (100%) rename {src/test => tests}/ui/specialization/issue-33017.rs (100%) rename {src/test => tests}/ui/specialization/issue-33017.stderr (100%) rename {src/test => tests}/ui/specialization/issue-35376.rs (100%) rename {src/test => tests}/ui/specialization/issue-35376.stderr (100%) rename {src/test => tests}/ui/specialization/issue-36804.rs (100%) rename {src/test => tests}/ui/specialization/issue-36804.stderr (100%) rename {src/test => tests}/ui/specialization/issue-38091-2.rs (100%) rename {src/test => tests}/ui/specialization/issue-38091-2.stderr (100%) rename {src/test => tests}/ui/specialization/issue-38091.rs (100%) rename {src/test => tests}/ui/specialization/issue-38091.stderr (100%) rename {src/test => tests}/ui/specialization/issue-39448.rs (100%) rename {src/test => tests}/ui/specialization/issue-39448.stderr (100%) rename {src/test => tests}/ui/specialization/issue-39618.rs (100%) rename {src/test => tests}/ui/specialization/issue-39618.stderr (100%) rename {src/test => tests}/ui/specialization/issue-43037.current.stderr (100%) rename {src/test => tests}/ui/specialization/issue-43037.negative.stderr (100%) rename {src/test => tests}/ui/specialization/issue-43037.rs (100%) rename {src/test => tests}/ui/specialization/issue-44861.rs (100%) rename {src/test => tests}/ui/specialization/issue-44861.stderr (100%) rename {src/test => tests}/ui/specialization/issue-45814.current.stderr (100%) rename {src/test => tests}/ui/specialization/issue-45814.negative.stderr (100%) rename {src/test => tests}/ui/specialization/issue-45814.rs (100%) rename {src/test => tests}/ui/specialization/issue-50452-fail.rs (100%) rename {src/test => tests}/ui/specialization/issue-50452-fail.stderr (100%) rename {src/test => tests}/ui/specialization/issue-50452.rs (100%) rename {src/test => tests}/ui/specialization/issue-50452.stderr (100%) rename {src/test => tests}/ui/specialization/issue-51892.rs (100%) rename {src/test => tests}/ui/specialization/issue-51892.stderr (100%) rename {src/test => tests}/ui/specialization/issue-52050.rs (100%) rename {src/test => tests}/ui/specialization/issue-52050.stderr (100%) rename {src/test => tests}/ui/specialization/issue-59435.rs (100%) rename {src/test => tests}/ui/specialization/issue-59435.stderr (100%) rename {src/test => tests}/ui/specialization/issue-63716-parse-async.rs (100%) rename {src/test => tests}/ui/specialization/issue-63716-parse-async.stderr (100%) rename {src/test => tests}/ui/specialization/issue-68830-spurious-diagnostics.rs (100%) rename {src/test => tests}/ui/specialization/issue-68830-spurious-diagnostics.stderr (100%) rename {src/test => tests}/ui/specialization/issue-70442.rs (100%) rename {src/test => tests}/ui/specialization/issue-70442.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/auxiliary/specialization-trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/dyn-trait-assoc-types.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/impl-on-nonexisting.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/impl-on-nonexisting.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/impl_specialization_trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/impl_specialization_trait.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/implcit-well-formed-bounds.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/issue-79224.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/issue-79224.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeated_projection_type.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeated_projection_type.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeating_lifetimes.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeating_lifetimes.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeating_param.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/repeating_param.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/spec-iter.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/spec-marker-supertraits.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/spec-marker-supertraits.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/spec-reference.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_marker.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_marker.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_super_trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_super_trait.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialization_trait.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_marker.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_spec_trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_static.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_static.stderr (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_trait.rs (100%) rename {src/test => tests}/ui/specialization/min_specialization/specialize_on_trait.stderr (100%) rename {src/test => tests}/ui/specialization/non-defaulted-item-fail.rs (100%) rename {src/test => tests}/ui/specialization/non-defaulted-item-fail.stderr (100%) rename {src/test => tests}/ui/specialization/soundness/partial_eq_range_inclusive.rs (100%) rename {src/test => tests}/ui/specialization/soundness/partial_ord_slice.rs (100%) rename {src/test => tests}/ui/specialization/specialization-allowed-cross-crate.rs (100%) rename {src/test => tests}/ui/specialization/specialization-allowed-cross-crate.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-assoc-fns.rs (100%) rename {src/test => tests}/ui/specialization/specialization-assoc-fns.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-basics.rs (100%) rename {src/test => tests}/ui/specialization/specialization-basics.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-cross-crate-no-gate.rs (100%) rename {src/test => tests}/ui/specialization/specialization-cross-crate.rs (100%) rename {src/test => tests}/ui/specialization/specialization-cross-crate.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-default-methods.rs (100%) rename {src/test => tests}/ui/specialization/specialization-default-methods.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-default-projection.rs (100%) rename {src/test => tests}/ui/specialization/specialization-default-projection.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-default-types.rs (100%) rename {src/test => tests}/ui/specialization/specialization-default-types.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-feature-gate-default.rs (100%) rename {src/test => tests}/ui/specialization/specialization-feature-gate-default.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-feature-gate-overlap.rs (100%) rename {src/test => tests}/ui/specialization/specialization-feature-gate-overlap.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-no-default.rs (100%) rename {src/test => tests}/ui/specialization/specialization-no-default.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-on-projection.rs (100%) rename {src/test => tests}/ui/specialization/specialization-on-projection.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-out-of-order.rs (100%) rename {src/test => tests}/ui/specialization/specialization-out-of-order.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-hygiene.rs (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-hygiene.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-negative.rs (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-negative.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-projection.rs (100%) rename {src/test => tests}/ui/specialization/specialization-overlap-projection.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-overlap.rs (100%) rename {src/test => tests}/ui/specialization/specialization-overlap.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-polarity.rs (100%) rename {src/test => tests}/ui/specialization/specialization-polarity.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-projection-alias.rs (100%) rename {src/test => tests}/ui/specialization/specialization-projection-alias.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-projection.rs (100%) rename {src/test => tests}/ui/specialization/specialization-projection.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-supertraits.rs (100%) rename {src/test => tests}/ui/specialization/specialization-supertraits.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections-with-lifetimes.rs (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections-with-lifetimes.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections-with-params.rs (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections-with-params.stderr (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections.rs (100%) rename {src/test => tests}/ui/specialization/specialization-translate-projections.stderr (100%) rename {src/test => tests}/ui/specialization/transmute-specialization.rs (100%) rename {src/test => tests}/ui/specialization/transmute-specialization.stderr (100%) rename {src/test => tests}/ui/sse2.rs (100%) rename {src/test => tests}/ui/stability-attribute/accidental-stable-in-unstable.rs (100%) rename {src/test => tests}/ui/stability-attribute/accidental-stable-in-unstable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/allow-unstable-reexport.rs (100%) rename {src/test => tests}/ui/stability-attribute/allow-unstable-reexport.stderr (100%) rename {src/test => tests}/ui/stability-attribute/allowed-through-unstable.rs (100%) rename {src/test => tests}/ui/stability-attribute/allowed-through-unstable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/allowed-through-unstable-core.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/ctor-stability.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/default_body.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/lint-stability-reexport.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/lint-stability.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/stability-attribute-implies.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/stability_attribute_issue.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/stable-in-unstable-core.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/stable-in-unstable-std.rs (100%) rename {src/test => tests}/ui/stability-attribute/auxiliary/unstable_generic_param.rs (100%) rename {src/test => tests}/ui/stability-attribute/ctor-stability.rs (100%) rename {src/test => tests}/ui/stability-attribute/default-body-stability-err.rs (100%) rename {src/test => tests}/ui/stability-attribute/default-body-stability-err.stderr (100%) rename {src/test => tests}/ui/stability-attribute/default-body-stability-ok-enables.rs (100%) rename {src/test => tests}/ui/stability-attribute/default-body-stability-ok-impls.rs (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability-trait.rs (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability-trait.stderr (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability-where.rs (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability-where.stderr (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability.rs (100%) rename {src/test => tests}/ui/stability-attribute/generics-default-stability.stderr (100%) rename {src/test => tests}/ui/stability-attribute/issue-28075.rs (100%) rename {src/test => tests}/ui/stability-attribute/issue-28075.stderr (100%) rename {src/test => tests}/ui/stability-attribute/issue-28388-3.rs (100%) rename {src/test => tests}/ui/stability-attribute/issue-28388-3.stderr (100%) rename {src/test => tests}/ui/stability-attribute/issue-99286-stable-intrinsics.rs (100%) rename {src/test => tests}/ui/stability-attribute/missing-const-stability.rs (100%) rename {src/test => tests}/ui/stability-attribute/missing-const-stability.stderr (100%) rename {src/test => tests}/ui/stability-attribute/missing-stability-attr-at-top-level.rs (100%) rename {src/test => tests}/ui/stability-attribute/missing-stability-attr-at-top-level.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-missing.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-missing.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-no-feature.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-no-feature.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-using-stable.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-using-stable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-using-unstable.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-issue-43027.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-issue.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-issue.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-non-staged-force-unstable.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-non-staged-force-unstable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-non-staged.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-non-staged.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-2.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-2.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-3.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-3.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-4.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity-4.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-sanity.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-trait-impl.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-attribute-trait-impl.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stability-in-private-module.rs (100%) rename {src/test => tests}/ui/stability-attribute/stability-in-private-module.stderr (100%) rename {src/test => tests}/ui/stability-attribute/stable-in-unstable.rs (100%) rename {src/test => tests}/ui/stability-attribute/stable-in-unstable.stderr (100%) rename {src/test => tests}/ui/stability-attribute/suggest-vec-allocator-api.rs (100%) rename {src/test => tests}/ui/stability-attribute/suggest-vec-allocator-api.stderr (100%) rename {src/test => tests}/ui/stable-addr-of.rs (100%) rename {src/test => tests}/ui/stack-protector/warn-stack-protector-unsupported.all.stderr (100%) rename {src/test => tests}/ui/stack-protector/warn-stack-protector-unsupported.basic.stderr (100%) rename {src/test => tests}/ui/stack-protector/warn-stack-protector-unsupported.rs (100%) rename {src/test => tests}/ui/stack-protector/warn-stack-protector-unsupported.strong.stderr (100%) rename {src/test => tests}/ui/static/auxiliary/extern-statics.rs (100%) rename {src/test => tests}/ui/static/auxiliary/issue_24843.rs (100%) rename {src/test => tests}/ui/static/auxiliary/nested_item.rs (100%) rename {src/test => tests}/ui/static/auxiliary/static-priv-by-default.rs (100%) rename {src/test => tests}/ui/static/auxiliary/static_priv_by_default.rs (100%) rename {src/test => tests}/ui/static/bad-const-type.rs (100%) rename {src/test => tests}/ui/static/bad-const-type.stderr (100%) rename {src/test => tests}/ui/static/issue-18118-2.rs (100%) rename {src/test => tests}/ui/static/issue-18118-2.stderr (100%) rename {src/test => tests}/ui/static/issue-18118.rs (100%) rename {src/test => tests}/ui/static/issue-18118.stderr (100%) rename {src/test => tests}/ui/static/issue-24843.rs (100%) rename {src/test => tests}/ui/static/issue-34194.rs (100%) rename {src/test => tests}/ui/static/issue-5216.rs (100%) rename {src/test => tests}/ui/static/issue-5216.stderr (100%) rename {src/test => tests}/ui/static/nested_item_main.rs (100%) rename {src/test => tests}/ui/static/refer-to-other-statics-by-value.rs (100%) rename {src/test => tests}/ui/static/safe-extern-statics-mut.mir.stderr (100%) rename {src/test => tests}/ui/static/safe-extern-statics-mut.rs (100%) rename {src/test => tests}/ui/static/safe-extern-statics-mut.thir.stderr (100%) rename {src/test => tests}/ui/static/safe-extern-statics.mir.stderr (100%) rename {src/test => tests}/ui/static/safe-extern-statics.rs (100%) rename {src/test => tests}/ui/static/safe-extern-statics.thir.stderr (100%) rename {src/test => tests}/ui/static/static-closures.rs (100%) rename {src/test => tests}/ui/static/static-closures.stderr (100%) rename {src/test => tests}/ui/static/static-drop-scope.rs (100%) rename {src/test => tests}/ui/static/static-drop-scope.stderr (100%) rename {src/test => tests}/ui/static/static-extern-type.rs (100%) rename {src/test => tests}/ui/static/static-items-cant-move.rs (100%) rename {src/test => tests}/ui/static/static-items-cant-move.stderr (100%) rename {src/test => tests}/ui/static/static-lifetime-bound.rs (100%) rename {src/test => tests}/ui/static/static-lifetime-bound.stderr (100%) rename {src/test => tests}/ui/static/static-lifetime.rs (100%) rename {src/test => tests}/ui/static/static-lifetime.stderr (100%) rename {src/test => tests}/ui/static/static-method-privacy.rs (100%) rename {src/test => tests}/ui/static/static-method-privacy.stderr (100%) rename {src/test => tests}/ui/static/static-mut-bad-types.rs (100%) rename {src/test => tests}/ui/static/static-mut-bad-types.stderr (100%) rename {src/test => tests}/ui/static/static-mut-foreign-requires-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/static/static-mut-foreign-requires-unsafe.rs (100%) rename {src/test => tests}/ui/static/static-mut-foreign-requires-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/static/static-mut-not-constant.rs (100%) rename {src/test => tests}/ui/static/static-mut-not-constant.stderr (100%) rename {src/test => tests}/ui/static/static-mut-not-pat.rs (100%) rename {src/test => tests}/ui/static/static-mut-not-pat.stderr (100%) rename {src/test => tests}/ui/static/static-mut-requires-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/static/static-mut-requires-unsafe.rs (100%) rename {src/test => tests}/ui/static/static-mut-requires-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/static/static-priv-by-default2.rs (100%) rename {src/test => tests}/ui/static/static-priv-by-default2.stderr (100%) rename {src/test => tests}/ui/static/static-reference-to-fn-1.rs (100%) rename {src/test => tests}/ui/static/static-reference-to-fn-1.stderr (100%) rename {src/test => tests}/ui/static/static-reference-to-fn-2.rs (100%) rename {src/test => tests}/ui/static/static-reference-to-fn-2.stderr (100%) rename {src/test => tests}/ui/static/static-region-bound.rs (100%) rename {src/test => tests}/ui/static/static-region-bound.stderr (100%) rename {src/test => tests}/ui/static/static-vec-repeat-not-constant.rs (100%) rename {src/test => tests}/ui/static/static-vec-repeat-not-constant.stderr (100%) rename {src/test => tests}/ui/static/static_sized_requirement.rs (100%) rename {src/test => tests}/ui/static/thread-local-in-ctfe.rs (100%) rename {src/test => tests}/ui/static/thread-local-in-ctfe.stderr (100%) rename {src/test => tests}/ui/statics/auxiliary/static-function-pointer-aux.rs (100%) rename {src/test => tests}/ui/statics/auxiliary/static-methods-crate.rs (100%) rename {src/test => tests}/ui/statics/auxiliary/static_fn_inline_xc_aux.rs (100%) rename {src/test => tests}/ui/statics/auxiliary/static_fn_trait_xc_aux.rs (100%) rename {src/test => tests}/ui/statics/auxiliary/static_mut_xc.rs (100%) rename {src/test => tests}/ui/statics/issue-14227.mir.stderr (100%) rename {src/test => tests}/ui/statics/issue-14227.rs (100%) rename {src/test => tests}/ui/statics/issue-14227.thir.stderr (100%) rename {src/test => tests}/ui/statics/issue-15261.rs (100%) rename {src/test => tests}/ui/statics/issue-17233.rs (100%) rename {src/test => tests}/ui/statics/issue-17718-static-sync.rs (100%) rename {src/test => tests}/ui/statics/issue-17718-static-sync.stderr (100%) rename {src/test => tests}/ui/statics/issue-17718-static-unsafe-interior.rs (100%) rename {src/test => tests}/ui/statics/issue-44373-2.rs (100%) rename {src/test => tests}/ui/statics/issue-44373.rs (100%) rename {src/test => tests}/ui/statics/issue-44373.stderr (100%) rename {src/test => tests}/ui/statics/issue-91050-1.rs (100%) rename {src/test => tests}/ui/statics/issue-91050-2.rs (100%) rename {src/test => tests}/ui/statics/static-fn-inline-xc.rs (100%) rename {src/test => tests}/ui/statics/static-fn-trait-xc.rs (100%) rename {src/test => tests}/ui/statics/static-function-pointer-xc.rs (100%) rename {src/test => tests}/ui/statics/static-function-pointer.rs (100%) rename {src/test => tests}/ui/statics/static-impl.rs (100%) rename {src/test => tests}/ui/statics/static-method-in-trait-with-tps-intracrate.rs (100%) rename {src/test => tests}/ui/statics/static-method-xcrate.rs (100%) rename {src/test => tests}/ui/statics/static-methods-in-traits.rs (100%) rename {src/test => tests}/ui/statics/static-methods-in-traits2.rs (100%) rename {src/test => tests}/ui/statics/static-mut-xc.rs (100%) rename {src/test => tests}/ui/statics/static-promotion.rs (100%) rename {src/test => tests}/ui/statics/static-recursive.rs (100%) rename {src/test => tests}/ui/statics/uninhabited-static.rs (100%) rename {src/test => tests}/ui/statics/uninhabited-static.stderr (100%) rename {src/test => tests}/ui/stats/hir-stats.rs (100%) rename {src/test => tests}/ui/stats/hir-stats.stderr (100%) rename {src/test => tests}/ui/std-backtrace.rs (100%) rename {src/test => tests}/ui/std-uncopyable-atomics.rs (100%) rename {src/test => tests}/ui/std-uncopyable-atomics.stderr (100%) rename {src/test => tests}/ui/stdio-is-blocking.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/builtin-clone.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/eq-multidispatch.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/issue-21058.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/istr.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/log-knows-the-names-of-variants-in-std.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/matches2021.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/minmax-stability-issue-23687.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/not-sync.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/not-sync.stderr (100%) rename {src/test => tests}/ui/stdlib-unit-tests/raw-fat-ptr.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/seq-compare.rs (100%) rename {src/test => tests}/ui/stdlib-unit-tests/volatile-fat-ptr.rs (100%) rename {src/test => tests}/ui/stmt_expr_attrs_no_feature.rs (100%) rename {src/test => tests}/ui/stmt_expr_attrs_no_feature.stderr (100%) rename {src/test => tests}/ui/str/str-array-assignment.rs (100%) rename {src/test => tests}/ui/str/str-array-assignment.stderr (100%) rename {src/test => tests}/ui/str/str-as-char.fixed (100%) rename {src/test => tests}/ui/str/str-as-char.rs (100%) rename {src/test => tests}/ui/str/str-as-char.stderr (100%) rename {src/test => tests}/ui/str/str-concat-on-double-ref.rs (100%) rename {src/test => tests}/ui/str/str-concat-on-double-ref.stderr (100%) rename {src/test => tests}/ui/str/str-escape.rs (100%) rename {src/test => tests}/ui/str/str-escape.stderr (100%) rename {src/test => tests}/ui/str/str-idx.rs (100%) rename {src/test => tests}/ui/str/str-idx.stderr (100%) rename {src/test => tests}/ui/str/str-lit-type-mismatch.rs (100%) rename {src/test => tests}/ui/str/str-lit-type-mismatch.stderr (100%) rename {src/test => tests}/ui/str/str-mut-idx.rs (100%) rename {src/test => tests}/ui/str/str-mut-idx.stderr (100%) rename {src/test => tests}/ui/str/str-overrun.rs (100%) rename {src/test => tests}/ui/string-box-error.rs (100%) rename {src/test => tests}/ui/struct-ctor-mangling.rs (100%) rename {src/test => tests}/ui/structs-enums/align-enum.rs (100%) rename {src/test => tests}/ui/structs-enums/align-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_2.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_3.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_4.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_6.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_cast.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/cci_class_trait.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/empty-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/namespaced_enum_emulate_flat.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/namespaced_enums.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/newtype_struct_xc.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/struct_destructuring_cross_crate.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/struct_variant_xc_aux.rs (100%) rename {src/test => tests}/ui/structs-enums/auxiliary/xcrate_struct_aliases.rs (100%) rename {src/test => tests}/ui/structs-enums/borrow-tuple-fields.rs (100%) rename {src/test => tests}/ui/structs-enums/class-cast-to-trait-cross-crate-2.rs (100%) rename {src/test => tests}/ui/structs-enums/class-cast-to-trait-multiple-types.rs (100%) rename {src/test => tests}/ui/structs-enums/class-cast-to-trait.rs (100%) rename {src/test => tests}/ui/structs-enums/class-dtor.rs (100%) rename {src/test => tests}/ui/structs-enums/class-exports.rs (100%) rename {src/test => tests}/ui/structs-enums/class-impl-very-parameterized-trait.rs (100%) rename {src/test => tests}/ui/structs-enums/class-implement-trait-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/class-implement-traits.rs (100%) rename {src/test => tests}/ui/structs-enums/class-method-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/class-methods-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/class-methods.rs (100%) rename {src/test => tests}/ui/structs-enums/class-poly-methods-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/class-poly-methods.rs (100%) rename {src/test => tests}/ui/structs-enums/class-separate-impl.rs (100%) rename {src/test => tests}/ui/structs-enums/class-str-field.rs (100%) rename {src/test => tests}/ui/structs-enums/class-typarams.rs (100%) rename {src/test => tests}/ui/structs-enums/classes-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/classes-self-referential.rs (100%) rename {src/test => tests}/ui/structs-enums/classes-simple-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/classes-simple-method.rs (100%) rename {src/test => tests}/ui/structs-enums/classes-simple.rs (100%) rename {src/test => tests}/ui/structs-enums/classes.rs (100%) rename {src/test => tests}/ui/structs-enums/codegen-tag-static-padding.rs (100%) rename {src/test => tests}/ui/structs-enums/compare-generic-enums.rs (100%) rename {src/test => tests}/ui/structs-enums/cross-crate-newtype-struct-pat.rs (100%) rename {src/test => tests}/ui/structs-enums/discrim-explicit-23030.rs (100%) rename {src/test => tests}/ui/structs-enums/empty-struct-braces.rs (100%) rename {src/test => tests}/ui/structs-enums/empty-tag.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-alignment.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-clike-ffi-as-int.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-discr.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-discrim-autosizing.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-discrim-manual-sizing.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-discrim-range-overflow.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-discrim-width-stuff.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-disr-val-pretty.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-export-inheritance.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-layout-optimization.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-non-c-like-repr-c-and-int.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-non-c-like-repr-c.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-non-c-like-repr-int.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-null-pointer-opt.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-nullable-const-null-with-fields.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-nullable-simplifycfg-misopt.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-univariant-repr.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-variants.rs (100%) rename {src/test => tests}/ui/structs-enums/enum-vec-initializer.rs (100%) rename {src/test => tests}/ui/structs-enums/export-abstract-tag.rs (100%) rename {src/test => tests}/ui/structs-enums/export-tag-variant.rs (100%) rename {src/test => tests}/ui/structs-enums/expr-if-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/expr-match-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/field-destruction-order.rs (100%) rename {src/test => tests}/ui/structs-enums/foreign-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/functional-struct-upd.rs (100%) rename {src/test => tests}/ui/structs-enums/issue-1701.rs (100%) rename {src/test => tests}/ui/structs-enums/issue-2718-a.rs (100%) rename {src/test => tests}/ui/structs-enums/issue-2718-a.stderr (100%) rename {src/test => tests}/ui/structs-enums/issue-38002.rs (100%) rename {src/test => tests}/ui/structs-enums/issue-50731.rs (100%) rename {src/test => tests}/ui/structs-enums/ivec-tag.rs (100%) rename {src/test => tests}/ui/structs-enums/module-qualified-struct-destructure.rs (100%) rename {src/test => tests}/ui/structs-enums/multiple-reprs.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enum-emulate-flat-xc.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enum-emulate-flat.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enum-glob-import-xcrate.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enum-glob-import.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enums-xcrate.rs (100%) rename {src/test => tests}/ui/structs-enums/namespaced-enums.rs (100%) rename {src/test => tests}/ui/structs-enums/nested-enum-same-names.rs (100%) rename {src/test => tests}/ui/structs-enums/newtype-struct-drop-run.rs (100%) rename {src/test => tests}/ui/structs-enums/newtype-struct-with-dtor.rs (100%) rename {src/test => tests}/ui/structs-enums/newtype-struct-xc-2.rs (100%) rename {src/test => tests}/ui/structs-enums/newtype-struct-xc.rs (100%) rename {src/test => tests}/ui/structs-enums/nonzero-enum.rs (100%) rename {src/test => tests}/ui/structs-enums/numeric-fields.rs (100%) rename {src/test => tests}/ui/structs-enums/rec-align-u32.rs (100%) rename {src/test => tests}/ui/structs-enums/rec-align-u64.rs (100%) rename {src/test => tests}/ui/structs-enums/rec-auto.rs (100%) rename {src/test => tests}/ui/structs-enums/rec-extend.rs (100%) rename {src/test => tests}/ui/structs-enums/rec-tup.rs (100%) rename {src/test => tests}/ui/structs-enums/rec.rs (100%) rename {src/test => tests}/ui/structs-enums/record-pat.rs (100%) rename {src/test => tests}/ui/structs-enums/resource-in-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/simple-generic-tag.rs (100%) rename {src/test => tests}/ui/structs-enums/simple-match-generic-tag.rs (100%) rename {src/test => tests}/ui/structs-enums/small-enum-range-edge.rs (100%) rename {src/test => tests}/ui/structs-enums/small-enums-with-fields.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-aliases-xcrate.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-aliases.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-destructuring-cross-crate.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-enum-ignoring-field-with-underscore.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr (100%) rename {src/test => tests}/ui/structs-enums/struct-field-shorthand.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-like-variant-construct.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-like-variant-match.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-lit-functional-no-fields.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-literal-dtor.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-new-as-field-name.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-order-of-eval-1.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-order-of-eval-2.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-order-of-eval-3.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-order-of-eval-4.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-partial-move-1.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-partial-move-2.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-path-associated-type.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-path-self.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-pattern-matching.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/issue-74224.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/issue-74224.stderr (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/issue-84611.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/issue-84611.stderr (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/mutual-struct-recursion.rs (100%) rename {src/test => tests}/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr (100%) rename {src/test => tests}/ui/structs-enums/struct-variant-field-visibility.rs (100%) rename {src/test => tests}/ui/structs-enums/struct_variant_xc.rs (100%) rename {src/test => tests}/ui/structs-enums/struct_variant_xc_match.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-align-dyn-u64.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-align-dyn-variants.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-align-shape.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-align-u64.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-disr-val-shape.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-exports.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-in-block.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-variant-disr-type-mismatch.rs (100%) rename {src/test => tests}/ui/structs-enums/tag-variant-disr-val.rs (100%) rename {src/test => tests}/ui/structs-enums/tag.rs (100%) rename {src/test => tests}/ui/structs-enums/tuple-struct-construct.rs (100%) rename {src/test => tests}/ui/structs-enums/tuple-struct-constructor-pointer.rs (100%) rename {src/test => tests}/ui/structs-enums/tuple-struct-destructuring.rs (100%) rename {src/test => tests}/ui/structs-enums/tuple-struct-matching.rs (100%) rename {src/test => tests}/ui/structs-enums/tuple-struct-trivial.rs (100%) rename {src/test => tests}/ui/structs-enums/type-sizes.rs (100%) rename {src/test => tests}/ui/structs-enums/uninstantiable-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/unit-like-struct-drop-run.rs (100%) rename {src/test => tests}/ui/structs-enums/unit-like-struct.rs (100%) rename {src/test => tests}/ui/structs-enums/variant-structs-trivial.rs (100%) rename {src/test => tests}/ui/structs/auxiliary/struct_field_privacy.rs (100%) rename {src/test => tests}/ui/structs/auxiliary/struct_variant_privacy.rs (100%) rename {src/test => tests}/ui/structs/incomplete-fn-in-struct-definition.rs (100%) rename {src/test => tests}/ui/structs/incomplete-fn-in-struct-definition.stderr (100%) rename {src/test => tests}/ui/structs/issue-80853.rs (100%) rename {src/test => tests}/ui/structs/issue-80853.stderr (100%) rename {src/test => tests}/ui/structs/large-records.rs (100%) rename {src/test => tests}/ui/structs/multi-line-fru-suggestion.rs (100%) rename {src/test => tests}/ui/structs/multi-line-fru-suggestion.stderr (100%) rename {src/test => tests}/ui/structs/rhs-type.rs (100%) rename {src/test => tests}/ui/structs/struct-base-wrong-type.rs (100%) rename {src/test => tests}/ui/structs/struct-base-wrong-type.stderr (100%) rename {src/test => tests}/ui/structs/struct-duplicate-comma.fixed (100%) rename {src/test => tests}/ui/structs/struct-duplicate-comma.rs (100%) rename {src/test => tests}/ui/structs/struct-duplicate-comma.stderr (100%) rename {src/test => tests}/ui/structs/struct-field-cfg.rs (100%) rename {src/test => tests}/ui/structs/struct-field-cfg.stderr (100%) rename {src/test => tests}/ui/structs/struct-field-init-syntax.rs (100%) rename {src/test => tests}/ui/structs/struct-field-init-syntax.stderr (100%) rename {src/test => tests}/ui/structs/struct-field-privacy.rs (100%) rename {src/test => tests}/ui/structs/struct-field-privacy.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-decl-dupe.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-decl-dupe.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-dupe.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-dupe.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-hints-no-dupe.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-hints-no-dupe.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-hints.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-hints.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-missing.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-missing.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-shorthand-unresolved.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-shorthand-unresolved.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-shorthand.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-shorthand.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-too-many.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-too-many.stderr (100%) rename {src/test => tests}/ui/structs/struct-fields-typo.rs (100%) rename {src/test => tests}/ui/structs/struct-fields-typo.stderr (100%) rename {src/test => tests}/ui/structs/struct-fn-in-definition.rs (100%) rename {src/test => tests}/ui/structs/struct-fn-in-definition.stderr (100%) rename {src/test => tests}/ui/structs/struct-missing-comma.fixed (100%) rename {src/test => tests}/ui/structs/struct-missing-comma.rs (100%) rename {src/test => tests}/ui/structs/struct-missing-comma.stderr (100%) rename {src/test => tests}/ui/structs/struct-pat-derived-error.rs (100%) rename {src/test => tests}/ui/structs/struct-pat-derived-error.stderr (100%) rename {src/test => tests}/ui/structs/struct-path-alias-bounds.rs (100%) rename {src/test => tests}/ui/structs/struct-path-alias-bounds.stderr (100%) rename {src/test => tests}/ui/structs/struct-path-associated-type.rs (100%) rename {src/test => tests}/ui/structs/struct-path-associated-type.stderr (100%) rename {src/test => tests}/ui/structs/struct-path-self-type-mismatch.rs (100%) rename {src/test => tests}/ui/structs/struct-path-self-type-mismatch.stderr (100%) rename {src/test => tests}/ui/structs/struct-path-self.rs (100%) rename {src/test => tests}/ui/structs/struct-path-self.stderr (100%) rename {src/test => tests}/ui/structs/struct-record-suggestion.fixed (100%) rename {src/test => tests}/ui/structs/struct-record-suggestion.rs (100%) rename {src/test => tests}/ui/structs/struct-record-suggestion.stderr (100%) rename {src/test => tests}/ui/structs/struct-tuple-field-names.rs (100%) rename {src/test => tests}/ui/structs/struct-tuple-field-names.stderr (100%) rename {src/test => tests}/ui/structs/struct-variant-privacy-xc.rs (100%) rename {src/test => tests}/ui/structs/struct-variant-privacy-xc.stderr (100%) rename {src/test => tests}/ui/structs/struct-variant-privacy.rs (100%) rename {src/test => tests}/ui/structs/struct-variant-privacy.stderr (100%) rename {src/test => tests}/ui/structs/structure-constructor-type-mismatch.rs (100%) rename {src/test => tests}/ui/structs/structure-constructor-type-mismatch.stderr (100%) rename {src/test => tests}/ui/structs/suggest-private-fields.rs (100%) rename {src/test => tests}/ui/structs/suggest-private-fields.stderr (100%) rename {src/test => tests}/ui/structs/suggest-replacing-field-when-specifying-same-type.rs (100%) rename {src/test => tests}/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr (100%) rename {src/test => tests}/ui/structs/unresolved-struct-with-fru.rs (100%) rename {src/test => tests}/ui/structs/unresolved-struct-with-fru.stderr (100%) rename {src/test => tests}/ui/suggestions/abi-typo.fixed (100%) rename {src/test => tests}/ui/suggestions/abi-typo.rs (100%) rename {src/test => tests}/ui/suggestions/abi-typo.stderr (100%) rename {src/test => tests}/ui/suggestions/adt-param-with-implicit-sized-bound.rs (100%) rename {src/test => tests}/ui/suggestions/adt-param-with-implicit-sized-bound.stderr (100%) rename {src/test => tests}/ui/suggestions/args-instead-of-tuple-errors.rs (100%) rename {src/test => tests}/ui/suggestions/args-instead-of-tuple-errors.stderr (100%) rename {src/test => tests}/ui/suggestions/args-instead-of-tuple.fixed (100%) rename {src/test => tests}/ui/suggestions/args-instead-of-tuple.rs (100%) rename {src/test => tests}/ui/suggestions/args-instead-of-tuple.stderr (100%) rename {src/test => tests}/ui/suggestions/as-ref-2.rs (100%) rename {src/test => tests}/ui/suggestions/as-ref-2.stderr (100%) rename {src/test => tests}/ui/suggestions/as-ref.rs (100%) rename {src/test => tests}/ui/suggestions/as-ref.stderr (100%) rename {src/test => tests}/ui/suggestions/assoc-const-as-field.rs (100%) rename {src/test => tests}/ui/suggestions/assoc-const-as-field.stderr (100%) rename {src/test => tests}/ui/suggestions/assoc-const-as-fn.rs (100%) rename {src/test => tests}/ui/suggestions/assoc-const-as-fn.stderr (100%) rename {src/test => tests}/ui/suggestions/assoc-ct-for-assoc-method.rs (100%) rename {src/test => tests}/ui/suggestions/assoc-ct-for-assoc-method.stderr (100%) rename {src/test => tests}/ui/suggestions/assoc-type-in-method-return.rs (100%) rename {src/test => tests}/ui/suggestions/assoc-type-in-method-return.stderr (100%) rename {src/test => tests}/ui/suggestions/assoc_fn_without_self.rs (100%) rename {src/test => tests}/ui/suggestions/assoc_fn_without_self.stderr (100%) rename {src/test => tests}/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs (100%) rename {src/test => tests}/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr (100%) rename {src/test => tests}/ui/suggestions/attribute-typos.rs (100%) rename {src/test => tests}/ui/suggestions/attribute-typos.stderr (100%) rename {src/test => tests}/ui/suggestions/auxiliary/foo.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/issue-61963-1.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/issue-61963.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/issue-81839.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/meow.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/not-object-safe.rs (100%) rename {src/test => tests}/ui/suggestions/auxiliary/proc-macro-type-error.rs (100%) rename {src/test => tests}/ui/suggestions/bad-hex-float-lit.rs (100%) rename {src/test => tests}/ui/suggestions/bad-hex-float-lit.stderr (100%) rename {src/test => tests}/ui/suggestions/bool_typo_err_suggest.rs (100%) rename {src/test => tests}/ui/suggestions/bool_typo_err_suggest.stderr (100%) rename {src/test => tests}/ui/suggestions/borrow-for-loop-head.rs (100%) rename {src/test => tests}/ui/suggestions/borrow-for-loop-head.stderr (100%) rename {src/test => tests}/ui/suggestions/bound-suggestions.fixed (100%) rename {src/test => tests}/ui/suggestions/bound-suggestions.rs (100%) rename {src/test => tests}/ui/suggestions/bound-suggestions.stderr (100%) rename {src/test => tests}/ui/suggestions/box-future-wrong-output.rs (100%) rename {src/test => tests}/ui/suggestions/box-future-wrong-output.stderr (100%) rename {src/test => tests}/ui/suggestions/boxed-variant-field.rs (100%) rename {src/test => tests}/ui/suggestions/boxed-variant-field.stderr (100%) rename {src/test => tests}/ui/suggestions/call-boxed.rs (100%) rename {src/test => tests}/ui/suggestions/call-boxed.stderr (100%) rename {src/test => tests}/ui/suggestions/call-on-missing.rs (100%) rename {src/test => tests}/ui/suggestions/call-on-missing.stderr (100%) rename {src/test => tests}/ui/suggestions/call-on-unimplemented-ctor.rs (100%) rename {src/test => tests}/ui/suggestions/call-on-unimplemented-ctor.stderr (100%) rename {src/test => tests}/ui/suggestions/call-on-unimplemented-fn-ptr.rs (100%) rename {src/test => tests}/ui/suggestions/call-on-unimplemented-fn-ptr.stderr (100%) rename {src/test => tests}/ui/suggestions/chain-method-call-mutation-in-place.rs (100%) rename {src/test => tests}/ui/suggestions/chain-method-call-mutation-in-place.stderr (100%) rename {src/test => tests}/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed (100%) rename {src/test => tests}/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs (100%) rename {src/test => tests}/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr (100%) rename {src/test => tests}/ui/suggestions/const-in-struct-pat.rs (100%) rename {src/test => tests}/ui/suggestions/const-in-struct-pat.stderr (100%) rename {src/test => tests}/ui/suggestions/const-no-type.rs (100%) rename {src/test => tests}/ui/suggestions/const-no-type.stderr (100%) rename {src/test => tests}/ui/suggestions/const-pat-non-exaustive-let-new-var.rs (100%) rename {src/test => tests}/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr (100%) rename {src/test => tests}/ui/suggestions/constrain-suggest-ice.rs (100%) rename {src/test => tests}/ui/suggestions/constrain-suggest-ice.stderr (100%) rename {src/test => tests}/ui/suggestions/constrain-trait.fixed (100%) rename {src/test => tests}/ui/suggestions/constrain-trait.rs (100%) rename {src/test => tests}/ui/suggestions/constrain-trait.stderr (100%) rename {src/test => tests}/ui/suggestions/copied-and-cloned.fixed (100%) rename {src/test => tests}/ui/suggestions/copied-and-cloned.rs (100%) rename {src/test => tests}/ui/suggestions/copied-and-cloned.stderr (100%) rename {src/test => tests}/ui/suggestions/core-std-import-order-issue-83564.rs (100%) rename {src/test => tests}/ui/suggestions/core-std-import-order-issue-83564.stderr (100%) rename {src/test => tests}/ui/suggestions/count2len.rs (100%) rename {src/test => tests}/ui/suggestions/count2len.stderr (100%) rename {src/test => tests}/ui/suggestions/crate-or-module-typo.rs (100%) rename {src/test => tests}/ui/suggestions/crate-or-module-typo.stderr (100%) rename {src/test => tests}/ui/suggestions/deref-path-method.rs (100%) rename {src/test => tests}/ui/suggestions/deref-path-method.stderr (100%) rename {src/test => tests}/ui/suggestions/derive-clone-for-eq.fixed (100%) rename {src/test => tests}/ui/suggestions/derive-clone-for-eq.rs (100%) rename {src/test => tests}/ui/suggestions/derive-clone-for-eq.stderr (100%) rename {src/test => tests}/ui/suggestions/derive-macro-missing-bounds.rs (100%) rename {src/test => tests}/ui/suggestions/derive-macro-missing-bounds.stderr (100%) rename {src/test => tests}/ui/suggestions/derive-trait-for-method-call.rs (100%) rename {src/test => tests}/ui/suggestions/derive-trait-for-method-call.stderr (100%) rename {src/test => tests}/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.rs (100%) rename {src/test => tests}/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-child.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-parent.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-pin-array-dot-set.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-pin-array-dot-set.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/move-into-closure.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/move-into-closure.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/simple.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ref/simple.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-try_into-in-macros.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-try_into-in-macros.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ufcs-for-const.rs (100%) rename {src/test => tests}/ui/suggestions/dont-suggest-ufcs-for-const.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-try-removing-the-field.rs (100%) rename {src/test => tests}/ui/suggestions/dont-try-removing-the-field.stderr (100%) rename {src/test => tests}/ui/suggestions/dont-wrap-ambiguous-receivers.rs (100%) rename {src/test => tests}/ui/suggestions/dont-wrap-ambiguous-receivers.stderr (100%) rename {src/test => tests}/ui/suggestions/enum-method-probe.fixed (100%) rename {src/test => tests}/ui/suggestions/enum-method-probe.rs (100%) rename {src/test => tests}/ui/suggestions/enum-method-probe.stderr (100%) rename {src/test => tests}/ui/suggestions/enum-variant-arg-mismatch.rs (100%) rename {src/test => tests}/ui/suggestions/enum-variant-arg-mismatch.stderr (100%) rename {src/test => tests}/ui/suggestions/expected-boxed-future-isnt-pinned.rs (100%) rename {src/test => tests}/ui/suggestions/expected-boxed-future-isnt-pinned.stderr (100%) rename {src/test => tests}/ui/suggestions/field-access-considering-privacy.rs (100%) rename {src/test => tests}/ui/suggestions/field-access-considering-privacy.stderr (100%) rename {src/test => tests}/ui/suggestions/field-access.fixed (100%) rename {src/test => tests}/ui/suggestions/field-access.rs (100%) rename {src/test => tests}/ui/suggestions/field-access.stderr (100%) rename {src/test => tests}/ui/suggestions/field-has-method.rs (100%) rename {src/test => tests}/ui/suggestions/field-has-method.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs (100%) rename {src/test => tests}/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-missing-lifetime-in-item.rs (100%) rename {src/test => tests}/ui/suggestions/fn-missing-lifetime-in-item.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-needing-specified-return-type-param.rs (100%) rename {src/test => tests}/ui/suggestions/fn-needing-specified-return-type-param.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-or-tuple-struct-with-underscore-args.rs (100%) rename {src/test => tests}/ui/suggestions/fn-or-tuple-struct-with-underscore-args.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-or-tuple-struct-without-args.rs (100%) rename {src/test => tests}/ui/suggestions/fn-or-tuple-struct-without-args.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-to-method-deeply-nested.rs (100%) rename {src/test => tests}/ui/suggestions/fn-to-method-deeply-nested.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-to-method.rs (100%) rename {src/test => tests}/ui/suggestions/fn-to-method.stderr (100%) rename {src/test => tests}/ui/suggestions/fn-trait-notation.fixed (100%) rename {src/test => tests}/ui/suggestions/fn-trait-notation.rs (100%) rename {src/test => tests}/ui/suggestions/fn-trait-notation.stderr (100%) rename {src/test => tests}/ui/suggestions/for-i-in-vec.fixed (100%) rename {src/test => tests}/ui/suggestions/for-i-in-vec.rs (100%) rename {src/test => tests}/ui/suggestions/for-i-in-vec.stderr (100%) rename {src/test => tests}/ui/suggestions/format-borrow.rs (100%) rename {src/test => tests}/ui/suggestions/format-borrow.stderr (100%) rename {src/test => tests}/ui/suggestions/if-let-typo.rs (100%) rename {src/test => tests}/ui/suggestions/if-let-typo.stderr (100%) rename {src/test => tests}/ui/suggestions/if-then-neeing-semi.rs (100%) rename {src/test => tests}/ui/suggestions/if-then-neeing-semi.stderr (100%) rename {src/test => tests}/ui/suggestions/ignore-nested-field-binding.fixed (100%) rename {src/test => tests}/ui/suggestions/ignore-nested-field-binding.rs (100%) rename {src/test => tests}/ui/suggestions/ignore-nested-field-binding.stderr (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object-literal-bound-regions.rs (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object-literal.rs (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object-literal.stderr (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object.rs (100%) rename {src/test => tests}/ui/suggestions/imm-ref-trait-object.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.rs (100%) rename {src/test => tests}/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.rs (100%) rename {src/test => tests}/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-trait-missing-lifetime-gated.rs (100%) rename {src/test => tests}/ui/suggestions/impl-trait-missing-lifetime-gated.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-trait-missing-lifetime.rs (100%) rename {src/test => tests}/ui/suggestions/impl-trait-missing-lifetime.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-trait-return-trailing-semicolon.rs (100%) rename {src/test => tests}/ui/suggestions/impl-trait-return-trailing-semicolon.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-trait-with-missing-bounds.rs (100%) rename {src/test => tests}/ui/suggestions/impl-trait-with-missing-bounds.stderr (100%) rename {src/test => tests}/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.fixed (100%) rename {src/test => tests}/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.rs (100%) rename {src/test => tests}/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.stderr (100%) rename {src/test => tests}/ui/suggestions/import-trait-for-method-call.rs (100%) rename {src/test => tests}/ui/suggestions/import-trait-for-method-call.stderr (100%) rename {src/test => tests}/ui/suggestions/inner_type.fixed (100%) rename {src/test => tests}/ui/suggestions/inner_type.rs (100%) rename {src/test => tests}/ui/suggestions/inner_type.stderr (100%) rename {src/test => tests}/ui/suggestions/inner_type2.rs (100%) rename {src/test => tests}/ui/suggestions/inner_type2.stderr (100%) rename {src/test => tests}/ui/suggestions/into-convert.rs (100%) rename {src/test => tests}/ui/suggestions/into-convert.stderr (100%) rename {src/test => tests}/ui/suggestions/into-str.rs (100%) rename {src/test => tests}/ui/suggestions/into-str.stderr (100%) rename {src/test => tests}/ui/suggestions/invalid-bin-op.rs (100%) rename {src/test => tests}/ui/suggestions/invalid-bin-op.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-101065.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-101065.rs (100%) rename {src/test => tests}/ui/suggestions/issue-101065.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-101421.rs (100%) rename {src/test => tests}/ui/suggestions/issue-101421.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-101465.rs (100%) rename {src/test => tests}/ui/suggestions/issue-101465.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-101623.rs (100%) rename {src/test => tests}/ui/suggestions/issue-101623.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-101984.rs (100%) rename {src/test => tests}/ui/suggestions/issue-101984.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-102354.rs (100%) rename {src/test => tests}/ui/suggestions/issue-102354.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-102892.rs (100%) rename {src/test => tests}/ui/suggestions/issue-102892.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-103112.rs (100%) rename {src/test => tests}/ui/suggestions/issue-103112.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-104086-suggest-let.rs (100%) rename {src/test => tests}/ui/suggestions/issue-104086-suggest-let.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-104287.rs (100%) rename {src/test => tests}/ui/suggestions/issue-104287.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-104327.rs (100%) rename {src/test => tests}/ui/suggestions/issue-104327.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-104328.rs (100%) rename {src/test => tests}/ui/suggestions/issue-104328.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-105226.rs (100%) rename {src/test => tests}/ui/suggestions/issue-105226.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-105494.rs (100%) rename {src/test => tests}/ui/suggestions/issue-105494.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-105645.rs (100%) rename {src/test => tests}/ui/suggestions/issue-105645.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-106443-sugg-clone-for-arg.rs (100%) rename {src/test => tests}/ui/suggestions/issue-106443-sugg-clone-for-arg.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-106443-sugg-clone-for-bound.rs (100%) rename {src/test => tests}/ui/suggestions/issue-106443-sugg-clone-for-bound.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-21673.rs (100%) rename {src/test => tests}/ui/suggestions/issue-21673.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs (100%) rename {src/test => tests}/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-52820.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-52820.rs (100%) rename {src/test => tests}/ui/suggestions/issue-52820.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-53692.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-53692.rs (100%) rename {src/test => tests}/ui/suggestions/issue-53692.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-57672.rs (100%) rename {src/test => tests}/ui/suggestions/issue-59819.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-59819.rs (100%) rename {src/test => tests}/ui/suggestions/issue-59819.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-61226.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-61226.rs (100%) rename {src/test => tests}/ui/suggestions/issue-61226.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-61963.rs (100%) rename {src/test => tests}/ui/suggestions/issue-61963.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-62843.rs (100%) rename {src/test => tests}/ui/suggestions/issue-62843.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-64252-self-type.rs (100%) rename {src/test => tests}/ui/suggestions/issue-64252-self-type.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-66968-suggest-sorted-words.rs (100%) rename {src/test => tests}/ui/suggestions/issue-66968-suggest-sorted-words.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-68049-1.rs (100%) rename {src/test => tests}/ui/suggestions/issue-68049-1.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-68049-2.rs (100%) rename {src/test => tests}/ui/suggestions/issue-68049-2.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-71394-no-from-impl.rs (100%) rename {src/test => tests}/ui/suggestions/issue-71394-no-from-impl.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-72766.rs (100%) rename {src/test => tests}/ui/suggestions/issue-72766.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs (100%) rename {src/test => tests}/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-81098.rs (100%) rename {src/test => tests}/ui/suggestions/issue-81098.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-81839.rs (100%) rename {src/test => tests}/ui/suggestions/issue-81839.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-82361.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-82361.rs (100%) rename {src/test => tests}/ui/suggestions/issue-82361.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-82566-1.rs (100%) rename {src/test => tests}/ui/suggestions/issue-82566-1.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-82566-2.rs (100%) rename {src/test => tests}/ui/suggestions/issue-82566-2.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-83892.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-83892.rs (100%) rename {src/test => tests}/ui/suggestions/issue-83892.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-83943.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-83943.rs (100%) rename {src/test => tests}/ui/suggestions/issue-83943.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84592.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84592.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84700.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84700.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84973-2.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84973-2.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84973-blacklist.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84973-blacklist.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84973-negative.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84973-negative.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-84973.rs (100%) rename {src/test => tests}/ui/suggestions/issue-84973.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-85347.rs (100%) rename {src/test => tests}/ui/suggestions/issue-85347.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs (100%) rename {src/test => tests}/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs (100%) rename {src/test => tests}/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-86100-tuple-paren-comma.rs (100%) rename {src/test => tests}/ui/suggestions/issue-86100-tuple-paren-comma.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-86667.rs (100%) rename {src/test => tests}/ui/suggestions/issue-86667.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-88730.rs (100%) rename {src/test => tests}/ui/suggestions/issue-88730.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-89064.rs (100%) rename {src/test => tests}/ui/suggestions/issue-89064.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-89333.rs (100%) rename {src/test => tests}/ui/suggestions/issue-89333.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs (100%) rename {src/test => tests}/ui/suggestions/issue-90213-expected-boxfuture-self-ice.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-90974.rs (100%) rename {src/test => tests}/ui/suggestions/issue-90974.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-96223.rs (100%) rename {src/test => tests}/ui/suggestions/issue-96223.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-96555.rs (100%) rename {src/test => tests}/ui/suggestions/issue-96555.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-97677.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-97677.rs (100%) rename {src/test => tests}/ui/suggestions/issue-97677.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-97704.fixed (100%) rename {src/test => tests}/ui/suggestions/issue-97704.rs (100%) rename {src/test => tests}/ui/suggestions/issue-97704.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-97760.rs (100%) rename {src/test => tests}/ui/suggestions/issue-97760.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-98500.rs (100%) rename {src/test => tests}/ui/suggestions/issue-98500.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-99080.rs (100%) rename {src/test => tests}/ui/suggestions/issue-99080.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-99240-2.rs (100%) rename {src/test => tests}/ui/suggestions/issue-99240-2.stderr (100%) rename {src/test => tests}/ui/suggestions/issue-99240.rs (100%) rename {src/test => tests}/ui/suggestions/issue-99240.stderr (100%) rename {src/test => tests}/ui/suggestions/js-style-comparison-op-separate-eq-token.rs (100%) rename {src/test => tests}/ui/suggestions/js-style-comparison-op-separate-eq-token.stderr (100%) rename {src/test => tests}/ui/suggestions/js-style-comparison-op.fixed (100%) rename {src/test => tests}/ui/suggestions/js-style-comparison-op.rs (100%) rename {src/test => tests}/ui/suggestions/js-style-comparison-op.stderr (100%) rename {src/test => tests}/ui/suggestions/let-binding-init-expr-as-ty.rs (100%) rename {src/test => tests}/ui/suggestions/let-binding-init-expr-as-ty.stderr (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.fixed (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.rs (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.stderr (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature.rs (100%) rename {src/test => tests}/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr (100%) rename {src/test => tests}/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.rs (100%) rename {src/test => tests}/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.stderr (100%) rename {src/test => tests}/ui/suggestions/many-type-ascription.rs (100%) rename {src/test => tests}/ui/suggestions/many-type-ascription.stderr (100%) rename {src/test => tests}/ui/suggestions/match-ergonomics.rs (100%) rename {src/test => tests}/ui/suggestions/match-ergonomics.stderr (100%) rename {src/test => tests}/ui/suggestions/match-needing-semi.rs (100%) rename {src/test => tests}/ui/suggestions/match-needing-semi.stderr (100%) rename {src/test => tests}/ui/suggestions/match-prev-arm-needing-semi.rs (100%) rename {src/test => tests}/ui/suggestions/match-prev-arm-needing-semi.stderr (100%) rename {src/test => tests}/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.rs (100%) rename {src/test => tests}/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr (100%) rename {src/test => tests}/ui/suggestions/method-access-to-range-literal-typo.fixed (100%) rename {src/test => tests}/ui/suggestions/method-access-to-range-literal-typo.rs (100%) rename {src/test => tests}/ui/suggestions/method-access-to-range-literal-typo.stderr (100%) rename {src/test => tests}/ui/suggestions/method-missing-parentheses.rs (100%) rename {src/test => tests}/ui/suggestions/method-missing-parentheses.stderr (100%) rename {src/test => tests}/ui/suggestions/mismatched-types-numeric-from.rs (100%) rename {src/test => tests}/ui/suggestions/mismatched-types-numeric-from.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-fn-applicable-suggestions.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-fn-applicable-suggestions.rs (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-fn-applicable-suggestions.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-fn.rs (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-fn.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-assoc-type-bound-restriction.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-2.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-2.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-2.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-3.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-3.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl-3.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-derive-copy-impl.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl.rs (100%) rename {src/test => tests}/ui/suggestions/missing-bound-in-manual-copy-impl.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-lifetime-in-assoc-const-type.rs (100%) rename {src/test => tests}/ui/suggestions/missing-lifetime-in-assoc-const-type.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-lifetime-specifier.rs (100%) rename {src/test => tests}/ui/suggestions/missing-lifetime-specifier.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-lt-for-hrtb.rs (100%) rename {src/test => tests}/ui/suggestions/missing-lt-for-hrtb.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-trait-item.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-trait-item.rs (100%) rename {src/test => tests}/ui/suggestions/missing-trait-item.stderr (100%) rename {src/test => tests}/ui/suggestions/missing-type-param-used-in-param.fixed (100%) rename {src/test => tests}/ui/suggestions/missing-type-param-used-in-param.rs (100%) rename {src/test => tests}/ui/suggestions/missing-type-param-used-in-param.stderr (100%) rename {src/test => tests}/ui/suggestions/move-generic-to-trait-in-method-with-params.rs (100%) rename {src/test => tests}/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr (100%) rename {src/test => tests}/ui/suggestions/multibyte-escapes.rs (100%) rename {src/test => tests}/ui/suggestions/multibyte-escapes.stderr (100%) rename {src/test => tests}/ui/suggestions/mut-borrow-needed-by-trait.rs (100%) rename {src/test => tests}/ui/suggestions/mut-borrow-needed-by-trait.stderr (100%) rename {src/test => tests}/ui/suggestions/mut-ref-reassignment.rs (100%) rename {src/test => tests}/ui/suggestions/mut-ref-reassignment.stderr (100%) rename {src/test => tests}/ui/suggestions/negative-literal-index.fixed (100%) rename {src/test => tests}/ui/suggestions/negative-literal-index.rs (100%) rename {src/test => tests}/ui/suggestions/negative-literal-index.stderr (100%) rename {src/test => tests}/ui/suggestions/nested-non-tuple-tuple-struct.rs (100%) rename {src/test => tests}/ui/suggestions/nested-non-tuple-tuple-struct.stderr (100%) rename {src/test => tests}/ui/suggestions/no-extern-crate-in-type.rs (100%) rename {src/test => tests}/ui/suggestions/no-extern-crate-in-type.stderr (100%) rename {src/test => tests}/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs (100%) rename {src/test => tests}/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.stderr (100%) rename {src/test => tests}/ui/suggestions/non-existent-field-present-in-subfield.fixed (100%) rename {src/test => tests}/ui/suggestions/non-existent-field-present-in-subfield.rs (100%) rename {src/test => tests}/ui/suggestions/non-existent-field-present-in-subfield.stderr (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-references-self.rs (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-references-self.stderr (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-should-use-self.rs (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-should-use-self.stderr (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-should-use-where-sized.fixed (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-should-use-where-sized.rs (100%) rename {src/test => tests}/ui/suggestions/object-unsafe-trait-should-use-where-sized.stderr (100%) rename {src/test => tests}/ui/suggestions/opaque-type-error.rs (100%) rename {src/test => tests}/ui/suggestions/opaque-type-error.stderr (100%) rename {src/test => tests}/ui/suggestions/option-content-move-from-tuple-match.rs (100%) rename {src/test => tests}/ui/suggestions/option-content-move-from-tuple-match.stderr (100%) rename {src/test => tests}/ui/suggestions/option-content-move.rs (100%) rename {src/test => tests}/ui/suggestions/option-content-move.stderr (100%) rename {src/test => tests}/ui/suggestions/option-content-move2.rs (100%) rename {src/test => tests}/ui/suggestions/option-content-move2.stderr (100%) rename {src/test => tests}/ui/suggestions/option-to-bool.rs (100%) rename {src/test => tests}/ui/suggestions/option-to-bool.stderr (100%) rename {src/test => tests}/ui/suggestions/parenthesized-deref-suggestion.rs (100%) rename {src/test => tests}/ui/suggestions/parenthesized-deref-suggestion.stderr (100%) rename {src/test => tests}/ui/suggestions/path-by-value.rs (100%) rename {src/test => tests}/ui/suggestions/path-by-value.stderr (100%) rename {src/test => tests}/ui/suggestions/path-display.rs (100%) rename {src/test => tests}/ui/suggestions/path-display.stderr (100%) rename {src/test => tests}/ui/suggestions/pattern-slice-vec.fixed (100%) rename {src/test => tests}/ui/suggestions/pattern-slice-vec.rs (100%) rename {src/test => tests}/ui/suggestions/pattern-slice-vec.stderr (100%) rename {src/test => tests}/ui/suggestions/pattern-struct-with-slice-vec-field.rs (100%) rename {src/test => tests}/ui/suggestions/pattern-struct-with-slice-vec-field.stderr (100%) rename {src/test => tests}/ui/suggestions/private-field.rs (100%) rename {src/test => tests}/ui/suggestions/private-field.stderr (100%) rename {src/test => tests}/ui/suggestions/raw-byte-string-prefix.rs (100%) rename {src/test => tests}/ui/suggestions/raw-byte-string-prefix.stderr (100%) rename {src/test => tests}/ui/suggestions/raw-name-use-suggestion.rs (100%) rename {src/test => tests}/ui/suggestions/raw-name-use-suggestion.stderr (100%) rename {src/test => tests}/ui/suggestions/recover-from-semicolon-trailing-item.rs (100%) rename {src/test => tests}/ui/suggestions/recover-from-semicolon-trailing-item.stderr (100%) rename {src/test => tests}/ui/suggestions/recover-invalid-float.fixed (100%) rename {src/test => tests}/ui/suggestions/recover-invalid-float.rs (100%) rename {src/test => tests}/ui/suggestions/recover-invalid-float.stderr (100%) rename {src/test => tests}/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.rs (100%) rename {src/test => tests}/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr (100%) rename {src/test => tests}/ui/suggestions/ref-pattern-binding.fixed (100%) rename {src/test => tests}/ui/suggestions/ref-pattern-binding.rs (100%) rename {src/test => tests}/ui/suggestions/ref-pattern-binding.stderr (100%) rename {src/test => tests}/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.rs (100%) rename {src/test => tests}/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.stderr (100%) rename {src/test => tests}/ui/suggestions/remove-as_str.rs (100%) rename {src/test => tests}/ui/suggestions/remove-as_str.stderr (100%) rename {src/test => tests}/ui/suggestions/restrict-type-argument.rs (100%) rename {src/test => tests}/ui/suggestions/restrict-type-argument.stderr (100%) rename {src/test => tests}/ui/suggestions/restrict-type-not-param.rs (100%) rename {src/test => tests}/ui/suggestions/restrict-type-not-param.stderr (100%) rename {src/test => tests}/ui/suggestions/return-bindings-multi.rs (100%) rename {src/test => tests}/ui/suggestions/return-bindings-multi.stderr (100%) rename {src/test => tests}/ui/suggestions/return-bindings.rs (100%) rename {src/test => tests}/ui/suggestions/return-bindings.stderr (100%) rename {src/test => tests}/ui/suggestions/return-closures.rs (100%) rename {src/test => tests}/ui/suggestions/return-closures.stderr (100%) rename {src/test => tests}/ui/suggestions/return-cycle-2.rs (100%) rename {src/test => tests}/ui/suggestions/return-cycle-2.stderr (100%) rename {src/test => tests}/ui/suggestions/return-cycle.rs (100%) rename {src/test => tests}/ui/suggestions/return-cycle.stderr (100%) rename {src/test => tests}/ui/suggestions/return-elided-lifetime.rs (100%) rename {src/test => tests}/ui/suggestions/return-elided-lifetime.stderr (100%) rename {src/test => tests}/ui/suggestions/return-without-lifetime.rs (100%) rename {src/test => tests}/ui/suggestions/return-without-lifetime.stderr (100%) rename {src/test => tests}/ui/suggestions/shadowed-lplace-method-2.rs (100%) rename {src/test => tests}/ui/suggestions/shadowed-lplace-method-2.stderr (100%) rename {src/test => tests}/ui/suggestions/shadowed-lplace-method.fixed (100%) rename {src/test => tests}/ui/suggestions/shadowed-lplace-method.rs (100%) rename {src/test => tests}/ui/suggestions/shadowed-lplace-method.stderr (100%) rename {src/test => tests}/ui/suggestions/slice-issue-87994.rs (100%) rename {src/test => tests}/ui/suggestions/slice-issue-87994.stderr (100%) rename {src/test => tests}/ui/suggestions/struct-field-type-including-single-colon.rs (100%) rename {src/test => tests}/ui/suggestions/struct-field-type-including-single-colon.stderr (100%) rename {src/test => tests}/ui/suggestions/struct-initializer-comma.fixed (100%) rename {src/test => tests}/ui/suggestions/struct-initializer-comma.rs (100%) rename {src/test => tests}/ui/suggestions/struct-initializer-comma.stderr (100%) rename {src/test => tests}/ui/suggestions/sugg-else-for-closure.fixed (100%) rename {src/test => tests}/ui/suggestions/sugg-else-for-closure.rs (100%) rename {src/test => tests}/ui/suggestions/sugg-else-for-closure.stderr (100%) rename {src/test => tests}/ui/suggestions/sugg_with_positional_args_and_debug_fmt.rs (100%) rename {src/test => tests}/ui/suggestions/sugg_with_positional_args_and_debug_fmt.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-add-self.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-add-self.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-deref.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-deref.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-deref.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-assoc-fn-call-with-turbofish.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-blanket-impl-local-trait.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-blanket-impl-local-trait.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-borrow-to-dyn-object.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-borrow-to-dyn-object.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-box.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-box.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-box.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-change-mut.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-change-mut.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-1.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-1.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-2.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-2.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-3.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-closure-return-type-3.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-dereferencing-index.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-dereferencing-index.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-dereferencing-index.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-full-enum-variant-for-local-module.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-full-enum-variant-for-local-module.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-imm-mut-trait-implementations.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-imm-mut-trait-implementations.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-impl-trait-lifetime.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-impl-trait-lifetime.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-impl-trait-lifetime.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-labels.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-labels.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-let-for-assignment.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-let-for-assignment.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-let-for-assignment.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-methods.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-methods.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-move-lifetimes.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-move-lifetimes.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-move-types.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-move-types.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-mut-method-for-loop-hashmap.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-mut-method-for-loop-hashmap.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-mut-method-for-loop-hashmap.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-mut-method-for-loop.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-mut-method-for-loop.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-on-bare-closure-call.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-on-bare-closure-call.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-ref-macro.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-ref-macro.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-ref-mut.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-ref-mut.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-1.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-1.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-1.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-2.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-2.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-2.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-3.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-3.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-remove-refs-3.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-split-at-mut.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-split-at-mut.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-std-when-using-type.fixed (100%) rename {src/test => tests}/ui/suggestions/suggest-std-when-using-type.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-std-when-using-type.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-swapping-self-ty-and-trait.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-trait-items.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-trait-items.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-tryinto-edition-change.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-tryinto-edition-change.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-using-chars.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-using-chars.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest-variants.rs (100%) rename {src/test => tests}/ui/suggestions/suggest-variants.stderr (100%) rename {src/test => tests}/ui/suggestions/suggest_print_over_printf.rs (100%) rename {src/test => tests}/ui/suggestions/suggest_print_over_printf.stderr (100%) rename {src/test => tests}/ui/suggestions/too-many-field-suggestions.rs (100%) rename {src/test => tests}/ui/suggestions/too-many-field-suggestions.stderr (100%) rename {src/test => tests}/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.fixed (100%) rename {src/test => tests}/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs (100%) rename {src/test => tests}/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.stderr (100%) rename {src/test => tests}/ui/suggestions/trait-with-missing-associated-type-restriction.rs (100%) rename {src/test => tests}/ui/suggestions/trait-with-missing-associated-type-restriction.stderr (100%) rename {src/test => tests}/ui/suggestions/try-operator-dont-suggest-semicolon.rs (100%) rename {src/test => tests}/ui/suggestions/try-operator-dont-suggest-semicolon.stderr (100%) rename {src/test => tests}/ui/suggestions/try-removing-the-field.rs (100%) rename {src/test => tests}/ui/suggestions/try-removing-the-field.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-and-other-error.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-and-other-error.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-let.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-let.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-method.fixed (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-method.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-method.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path-2.fixed (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path-2.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path-2.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path-in-type.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path-in-type.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-path.stderr (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-variant.fixed (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-variant.rs (100%) rename {src/test => tests}/ui/suggestions/type-ascription-instead-of-variant.stderr (100%) rename {src/test => tests}/ui/suggestions/type-mismatch-struct-field-shorthand-2.rs (100%) rename {src/test => tests}/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr (100%) rename {src/test => tests}/ui/suggestions/type-mismatch-struct-field-shorthand.fixed (100%) rename {src/test => tests}/ui/suggestions/type-mismatch-struct-field-shorthand.rs (100%) rename {src/test => tests}/ui/suggestions/type-mismatch-struct-field-shorthand.stderr (100%) rename {src/test => tests}/ui/suggestions/type-not-found-in-adt-field.rs (100%) rename {src/test => tests}/ui/suggestions/type-not-found-in-adt-field.stderr (100%) rename {src/test => tests}/ui/suggestions/undeclared-module-alloc.rs (100%) rename {src/test => tests}/ui/suggestions/undeclared-module-alloc.stderr (100%) rename {src/test => tests}/ui/suggestions/unnamable-types.rs (100%) rename {src/test => tests}/ui/suggestions/unnamable-types.stderr (100%) rename {src/test => tests}/ui/suggestions/unnecessary_dot_for_floating_point_literal.rs (100%) rename {src/test => tests}/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr (100%) rename {src/test => tests}/ui/suggestions/unsized-function-parameter.fixed (100%) rename {src/test => tests}/ui/suggestions/unsized-function-parameter.rs (100%) rename {src/test => tests}/ui/suggestions/unsized-function-parameter.stderr (100%) rename {src/test => tests}/ui/suggestions/unused-closure-argument.rs (100%) rename {src/test => tests}/ui/suggestions/unused-closure-argument.stderr (100%) rename {src/test => tests}/ui/suggestions/use-placement-resolve.fixed (100%) rename {src/test => tests}/ui/suggestions/use-placement-resolve.rs (100%) rename {src/test => tests}/ui/suggestions/use-placement-resolve.stderr (100%) rename {src/test => tests}/ui/suggestions/use-placement-typeck.fixed (100%) rename {src/test => tests}/ui/suggestions/use-placement-typeck.rs (100%) rename {src/test => tests}/ui/suggestions/use-placement-typeck.stderr (100%) rename {src/test => tests}/ui/suggestions/use-type-argument-instead-of-assoc-type.rs (100%) rename {src/test => tests}/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr (100%) rename {src/test => tests}/ui/suggestions/while-let-typo.rs (100%) rename {src/test => tests}/ui/suggestions/while-let-typo.stderr (100%) rename {src/test => tests}/ui/super-at-top-level.rs (100%) rename {src/test => tests}/ui/super-at-top-level.stderr (100%) rename {src/test => tests}/ui/super-fast-paren-parsing.rs (100%) rename {src/test => tests}/ui/super.rs (100%) rename {src/test => tests}/ui/suppressed-error.rs (100%) rename {src/test => tests}/ui/suppressed-error.stderr (100%) rename {src/test => tests}/ui/svh-add-nothing.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/changing-crates-a1.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/changing-crates-a2.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/changing-crates-b.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-base.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-lit.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-significant-cfg.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-trait-bound.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-type-arg.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-type-ret.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-a-change-type-static.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-b.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-uta-base.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-uta-change-use-trait.rs (100%) rename {src/test => tests}/ui/svh/auxiliary/svh-utb.rs (100%) rename {src/test => tests}/ui/svh/changing-crates.rs (100%) rename {src/test => tests}/ui/svh/changing-crates.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-lit.rs (100%) rename {src/test => tests}/ui/svh/svh-change-lit.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-significant-cfg.rs (100%) rename {src/test => tests}/ui/svh/svh-change-significant-cfg.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-trait-bound.rs (100%) rename {src/test => tests}/ui/svh/svh-change-trait-bound.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-type-arg.rs (100%) rename {src/test => tests}/ui/svh/svh-change-type-arg.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-type-ret.rs (100%) rename {src/test => tests}/ui/svh/svh-change-type-ret.stderr (100%) rename {src/test => tests}/ui/svh/svh-change-type-static.rs (100%) rename {src/test => tests}/ui/svh/svh-change-type-static.stderr (100%) rename {src/test => tests}/ui/svh/svh-use-trait.rs (100%) rename {src/test => tests}/ui/svh/svh-use-trait.stderr (100%) rename {src/test => tests}/ui/swap-1.rs (100%) rename {src/test => tests}/ui/swap-overlapping.rs (100%) rename {src/test => tests}/ui/switched-expectations.rs (100%) rename {src/test => tests}/ui/switched-expectations.stderr (100%) rename {src/test => tests}/ui/symbol-names/basic.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/basic.rs (100%) rename {src/test => tests}/ui/symbol-names/basic.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/const-generics-demangling.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/const-generics-demangling.rs (100%) rename {src/test => tests}/ui/symbol-names/const-generics-demangling.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/const-generics-str-demangling.rs (100%) rename {src/test => tests}/ui/symbol-names/const-generics-str-demangling.stderr (100%) rename {src/test => tests}/ui/symbol-names/const-generics-structural-demangling.rs (100%) rename {src/test => tests}/ui/symbol-names/const-generics-structural-demangling.stderr (100%) rename {src/test => tests}/ui/symbol-names/const-generics.rs (100%) rename {src/test => tests}/ui/symbol-names/foreign-types.rs (100%) rename {src/test => tests}/ui/symbol-names/foreign-types.stderr (100%) rename {src/test => tests}/ui/symbol-names/impl1.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/impl1.rs (100%) rename {src/test => tests}/ui/symbol-names/impl1.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/impl2.rs (100%) rename {src/test => tests}/ui/symbol-names/impl2.stderr (100%) rename {src/test => tests}/ui/symbol-names/issue-53912.rs (100%) rename {src/test => tests}/ui/symbol-names/issue-60925.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/issue-60925.rs (100%) rename {src/test => tests}/ui/symbol-names/issue-60925.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/issue-75326.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/issue-75326.rs (100%) rename {src/test => tests}/ui/symbol-names/issue-75326.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/issue-76365.rs (100%) rename {src/test => tests}/ui/symbol-names/trait-objects.rs (100%) rename {src/test => tests}/ui/symbol-names/trait-objects.v0.stderr (100%) rename {src/test => tests}/ui/symbol-names/types.legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/types.rs (100%) rename {src/test => tests}/ui/symbol-names/types.verbose-legacy.stderr (100%) rename {src/test => tests}/ui/symbol-names/verbose.rs (100%) rename {src/test => tests}/ui/symbol-names/x86-stdcall.rs (100%) rename {src/test => tests}/ui/syntax-extension-minor.rs (100%) rename {src/test => tests}/ui/tag-that-dare-not-speak-its-name.rs (100%) rename {src/test => tests}/ui/tag-that-dare-not-speak-its-name.stderr (100%) rename {src/test => tests}/ui/tag-type-args.rs (100%) rename {src/test => tests}/ui/tag-type-args.stderr (100%) rename {src/test => tests}/ui/tag-variant-cast-non-nullary.fixed (100%) rename {src/test => tests}/ui/tag-variant-cast-non-nullary.rs (100%) rename {src/test => tests}/ui/tag-variant-cast-non-nullary.stderr (100%) rename {src/test => tests}/ui/tail-call-arg-leak.rs (100%) rename {src/test => tests}/ui/tail-cps.rs (100%) rename {src/test => tests}/ui/tail-typeck.rs (100%) rename {src/test => tests}/ui/tail-typeck.stderr (100%) rename {src/test => tests}/ui/target-feature/aarch64-neon-works.rs (100%) rename {src/test => tests}/ui/target-feature/feature-hierarchy.rs (100%) rename {src/test => tests}/ui/target-feature/gate.rs (100%) rename {src/test => tests}/ui/target-feature/gate.stderr (100%) rename {src/test => tests}/ui/target-feature/invalid-attribute.rs (100%) rename {src/test => tests}/ui/target-feature/invalid-attribute.stderr (100%) rename {src/test => tests}/ui/target-feature/missing-plusminus-2.rs (100%) rename {src/test => tests}/ui/target-feature/missing-plusminus-2.stderr (100%) rename {src/test => tests}/ui/target-feature/missing-plusminus.rs (100%) rename {src/test => tests}/ui/target-feature/missing-plusminus.stderr (100%) rename {src/test => tests}/ui/target-feature/no-llvm-leaks.rs (100%) rename {src/test => tests}/ui/target-feature/rust-specific-name-no-warnings.rs (100%) rename {src/test => tests}/ui/target-feature/similar-feature-suggestion.rs (100%) rename {src/test => tests}/ui/target-feature/similar-feature-suggestion.stderr (100%) rename {src/test => tests}/ui/target-feature/tied-features-cli.one.stderr (100%) rename {src/test => tests}/ui/target-feature/tied-features-cli.rs (100%) rename {src/test => tests}/ui/target-feature/tied-features-cli.three.stderr (100%) rename {src/test => tests}/ui/target-feature/tied-features-cli.two.stderr (100%) rename {src/test => tests}/ui/target-feature/tied-features.rs (100%) rename {src/test => tests}/ui/target-feature/tied-features.stderr (100%) rename {src/test => tests}/ui/target-feature/wasm-safe.rs (100%) rename {src/test => tests}/ui/terr-in-field.rs (100%) rename {src/test => tests}/ui/terr-in-field.stderr (100%) rename {src/test => tests}/ui/terr-sorts.rs (100%) rename {src/test => tests}/ui/terr-sorts.stderr (100%) rename {src/test => tests}/ui/test-attrs/auxiliary/test_macro.rs (100%) rename {src/test => tests}/ui/test-attrs/decl-macro-test.rs (100%) rename {src/test => tests}/ui/test-attrs/inaccessible-test-modules.rs (100%) rename {src/test => tests}/ui/test-attrs/inaccessible-test-modules.stderr (100%) rename {src/test => tests}/ui/test-attrs/issue-16597-empty.rs (100%) rename {src/test => tests}/ui/test-attrs/issue-16597.rs (100%) rename {src/test => tests}/ui/test-attrs/issue-20823.rs (100%) rename {src/test => tests}/ui/test-attrs/issue-36768.rs (100%) rename {src/test => tests}/ui/test-attrs/issue-52557.rs (100%) rename {src/test => tests}/ui/test-attrs/issue-53675-a-test-called-panic.rs (100%) rename {src/test => tests}/ui/test-attrs/run-unexported-tests.rs (100%) rename {src/test => tests}/ui/test-attrs/test-attr-non-associated-functions.rs (100%) rename {src/test => tests}/ui/test-attrs/test-attr-non-associated-functions.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-cant-be-shadowed.rs (100%) rename {src/test => tests}/ui/test-attrs/test-filter-multiple.rs (100%) rename {src/test => tests}/ui/test-attrs/test-filter-multiple.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-fn-signature-verification-for-explicit-return-type.rs (100%) rename {src/test => tests}/ui/test-attrs/test-main-not-dead-attr.rs (100%) rename {src/test => tests}/ui/test-attrs/test-main-not-dead.rs (100%) rename {src/test => tests}/ui/test-attrs/test-on-not-fn.rs (100%) rename {src/test => tests}/ui/test-attrs/test-on-not-fn.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort-disabled.rs (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort-disabled.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort-nocapture.rs (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort-nocapture.run.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort-nocapture.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort.rs (100%) rename {src/test => tests}/ui/test-attrs/test-panic-abort.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-panic-while-printing.rs (100%) rename {src/test => tests}/ui/test-attrs/test-passed-wasm.rs (100%) rename {src/test => tests}/ui/test-attrs/test-passed-wasm.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-passed.rs (100%) rename {src/test => tests}/ui/test-attrs/test-passed.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-runner-hides-buried-main.rs (100%) rename {src/test => tests}/ui/test-attrs/test-runner-hides-main.rs (100%) rename {src/test => tests}/ui/test-attrs/test-runner-hides-start.rs (100%) rename {src/test => tests}/ui/test-attrs/test-should-fail-good-message.rs (100%) rename {src/test => tests}/ui/test-attrs/test-should-panic-attr.rs (100%) rename {src/test => tests}/ui/test-attrs/test-should-panic-attr.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-thread-capture.rs (100%) rename {src/test => tests}/ui/test-attrs/test-thread-capture.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-thread-nocapture.rs (100%) rename {src/test => tests}/ui/test-attrs/test-thread-nocapture.run.stderr (100%) rename {src/test => tests}/ui/test-attrs/test-thread-nocapture.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-type.rs (100%) rename {src/test => tests}/ui/test-attrs/test-type.run.stdout (100%) rename {src/test => tests}/ui/test-attrs/test-vs-cfg-test.rs (100%) rename {src/test => tests}/ui/test-attrs/test-warns-dead-code.rs (100%) rename {src/test => tests}/ui/test-attrs/test-warns-dead-code.stderr (100%) rename {src/test => tests}/ui/thir-tree.rs (100%) rename {src/test => tests}/ui/thir-tree.stdout (100%) rename {src/test => tests}/ui/thread-local-mutation.rs (100%) rename {src/test => tests}/ui/thread-local-mutation.stderr (100%) rename {src/test => tests}/ui/thread-local-static.rs (100%) rename {src/test => tests}/ui/thread-local-static.stderr (100%) rename {src/test => tests}/ui/thread-local/name-collision.rs (100%) rename {src/test => tests}/ui/thread-local/non-static.rs (100%) rename {src/test => tests}/ui/thread-local/non-static.stderr (100%) rename {src/test => tests}/ui/thread-local/thread-local-issue-37508.rs (100%) rename {src/test => tests}/ui/thread-local/tls.rs (100%) rename {src/test => tests}/ui/threads-sendsync/auxiliary/thread-local-extern-static.rs (100%) rename {src/test => tests}/ui/threads-sendsync/child-outlives-parent.rs (100%) rename {src/test => tests}/ui/threads-sendsync/clone-with-exterior.rs (100%) rename {src/test => tests}/ui/threads-sendsync/comm.rs (100%) rename {src/test => tests}/ui/threads-sendsync/eprint-on-tls-drop.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-24313.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-29488.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-43733-2.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-43733.mir.stderr (100%) rename {src/test => tests}/ui/threads-sendsync/issue-43733.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-43733.thir.stderr (100%) rename {src/test => tests}/ui/threads-sendsync/issue-4446.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-4448.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-8827.rs (100%) rename {src/test => tests}/ui/threads-sendsync/issue-9396.rs (100%) rename {src/test => tests}/ui/threads-sendsync/mpsc_stress.rs (100%) rename {src/test => tests}/ui/threads-sendsync/send-is-not-static-par-for.rs (100%) rename {src/test => tests}/ui/threads-sendsync/send-resource.rs (100%) rename {src/test => tests}/ui/threads-sendsync/send-type-inference.rs (100%) rename {src/test => tests}/ui/threads-sendsync/send_str_hashmap.rs (100%) rename {src/test => tests}/ui/threads-sendsync/send_str_treemap.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sendable-class.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sendfn-is-a-block.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs (100%) rename {src/test => tests}/ui/threads-sendsync/spawn-fn.rs (100%) rename {src/test => tests}/ui/threads-sendsync/spawn-types.rs (100%) rename {src/test => tests}/ui/threads-sendsync/spawn.rs (100%) rename {src/test => tests}/ui/threads-sendsync/spawn2.rs (100%) rename {src/test => tests}/ui/threads-sendsync/spawning-with-debug.rs (100%) rename {src/test => tests}/ui/threads-sendsync/std-sync-right-kind-impls.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sync-send-atomics.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sync-send-in-std.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sync-send-iterators-in-libcollections.rs (100%) rename {src/test => tests}/ui/threads-sendsync/sync-send-iterators-in-libcore.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-0.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-1.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-10.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-11.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-12.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-13.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-14.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-15.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-16.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-17.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-3.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-4.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-5.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-6.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-7.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-9.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-comm-chan-nil.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-life-0.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-spawn-barefn.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-spawn-move-and-copy.rs (100%) rename {src/test => tests}/ui/threads-sendsync/task-stderr.rs (100%) rename {src/test => tests}/ui/threads-sendsync/tcp-stress.rs (100%) rename {src/test => tests}/ui/threads-sendsync/test-tasks-invalid-value.rs (100%) rename {src/test => tests}/ui/threads-sendsync/thread-local-extern-static.rs (100%) rename {src/test => tests}/ui/threads-sendsync/thread-local-syntax.rs (100%) rename {src/test => tests}/ui/threads-sendsync/threads.rs (100%) rename {src/test => tests}/ui/threads-sendsync/tls-dtors-are-run-in-a-static-binary.rs (100%) rename {src/test => tests}/ui/threads-sendsync/tls-init-on-init.rs (100%) rename {src/test => tests}/ui/threads-sendsync/tls-try-with.rs (100%) rename {src/test => tests}/ui/threads-sendsync/trivial-message.rs (100%) rename {src/test => tests}/ui/threads-sendsync/unwind-resource.rs (100%) rename {src/test => tests}/ui/threads-sendsync/yield.rs (100%) rename {src/test => tests}/ui/threads-sendsync/yield1.rs (100%) rename {src/test => tests}/ui/threads-sendsync/yield2.rs (100%) rename {src/test => tests}/ui/tool-attributes/diagnostic_item.rs (100%) rename {src/test => tests}/ui/tool-attributes/diagnostic_item.stderr (100%) rename {src/test => tests}/ui/tool-attributes/diagnostic_item2.rs (100%) rename {src/test => tests}/ui/tool-attributes/diagnostic_item3.rs (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-misplaced-1.rs (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-misplaced-1.stderr (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-misplaced-2.rs (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-misplaced-2.stderr (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-shadowing.rs (100%) rename {src/test => tests}/ui/tool-attributes/tool-attributes-shadowing.stderr (100%) rename {src/test => tests}/ui/tool_lints-fail.rs (100%) rename {src/test => tests}/ui/tool_lints-fail.stderr (100%) rename {src/test => tests}/ui/tool_lints-rpass.rs (100%) rename {src/test => tests}/ui/tool_lints.rs (100%) rename {src/test => tests}/ui/tool_lints.stderr (100%) rename {src/test => tests}/ui/tool_lints_2018_preview.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track.stderr (100%) rename {src/test => tests}/ui/track-diagnostics/track2.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track2.stderr (100%) rename {src/test => tests}/ui/track-diagnostics/track3.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track3.stderr (100%) rename {src/test => tests}/ui/track-diagnostics/track4.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track4.stderr (100%) rename {src/test => tests}/ui/track-diagnostics/track5.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track5.stderr (100%) rename {src/test => tests}/ui/track-diagnostics/track6.rs (100%) rename {src/test => tests}/ui/track-diagnostics/track6.stderr (100%) rename {src/test => tests}/ui/trailing-comma.rs (100%) rename {src/test => tests}/ui/trait-bounds/impl-bound-with-references-error.rs (100%) rename {src/test => tests}/ui/trait-bounds/impl-bound-with-references-error.stderr (100%) rename {src/test => tests}/ui/trait-bounds/impl-derived-implicit-sized-bound-2.rs (100%) rename {src/test => tests}/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr (100%) rename {src/test => tests}/ui/trait-bounds/impl-derived-implicit-sized-bound.rs (100%) rename {src/test => tests}/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr (100%) rename {src/test => tests}/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.rs (100%) rename {src/test => tests}/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.stderr (100%) rename {src/test => tests}/ui/trait-bounds/issue-75961.rs (100%) rename {src/test => tests}/ui/trait-bounds/issue-93008.rs (100%) rename {src/test => tests}/ui/trait-bounds/issue-94680.rs (100%) rename {src/test => tests}/ui/trait-bounds/issue-94999.rs (100%) rename {src/test => tests}/ui/trait-bounds/issue-95640.rs (100%) rename {src/test => tests}/ui/trait-bounds/mismatch-fn-trait.rs (100%) rename {src/test => tests}/ui/trait-bounds/mismatch-fn-trait.stderr (100%) rename {src/test => tests}/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.fixed (100%) rename {src/test => tests}/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.rs (100%) rename {src/test => tests}/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.stderr (100%) rename {src/test => tests}/ui/trait-bounds/unsized-bound.rs (100%) rename {src/test => tests}/ui/trait-bounds/unsized-bound.stderr (100%) rename {src/test => tests}/ui/trait-impl-bound-suggestions.fixed (100%) rename {src/test => tests}/ui/trait-impl-bound-suggestions.rs (100%) rename {src/test => tests}/ui/trait-impl-bound-suggestions.stderr (100%) rename {src/test => tests}/ui/trait-method-number-parameters.rs (100%) rename {src/test => tests}/ui/trait-method-number-parameters.stderr (100%) rename {src/test => tests}/ui/traits/alias/ambiguous.rs (100%) rename {src/test => tests}/ui/traits/alias/ambiguous.stderr (100%) rename {src/test => tests}/ui/traits/alias/auxiliary/greeter.rs (100%) rename {src/test => tests}/ui/traits/alias/auxiliary/send_sync.rs (100%) rename {src/test => tests}/ui/traits/alias/basic.rs (100%) rename {src/test => tests}/ui/traits/alias/bounds.rs (100%) rename {src/test => tests}/ui/traits/alias/cross-crate.rs (100%) rename {src/test => tests}/ui/traits/alias/cross-crate.stderr (100%) rename {src/test => tests}/ui/traits/alias/generic-default-in-dyn.rs (100%) rename {src/test => tests}/ui/traits/alias/generic-default-in-dyn.stderr (100%) rename {src/test => tests}/ui/traits/alias/impl.rs (100%) rename {src/test => tests}/ui/traits/alias/impl.stderr (100%) rename {src/test => tests}/ui/traits/alias/import-cross-crate.rs (100%) rename {src/test => tests}/ui/traits/alias/import.rs (100%) rename {src/test => tests}/ui/traits/alias/issue-60021-assoc-method-resolve.rs (100%) rename {src/test => tests}/ui/traits/alias/issue-72415-assoc-const-resolve.rs (100%) rename {src/test => tests}/ui/traits/alias/issue-75983.rs (100%) rename {src/test => tests}/ui/traits/alias/issue-83613.rs (100%) rename {src/test => tests}/ui/traits/alias/issue-83613.stderr (100%) rename {src/test => tests}/ui/traits/alias/maybe-bound.rs (100%) rename {src/test => tests}/ui/traits/alias/no-duplicates.rs (100%) rename {src/test => tests}/ui/traits/alias/no-duplicates.stderr (100%) rename {src/test => tests}/ui/traits/alias/no-extra-traits.rs (100%) rename {src/test => tests}/ui/traits/alias/no-extra-traits.stderr (100%) rename {src/test => tests}/ui/traits/alias/object-fail.rs (100%) rename {src/test => tests}/ui/traits/alias/object-fail.stderr (100%) rename {src/test => tests}/ui/traits/alias/object-wf.rs (100%) rename {src/test => tests}/ui/traits/alias/object.rs (100%) rename {src/test => tests}/ui/traits/alias/only-maybe-bound.rs (100%) rename {src/test => tests}/ui/traits/alias/only-maybe-bound.stderr (100%) rename {src/test => tests}/ui/traits/alias/self-in-const-generics.rs (100%) rename {src/test => tests}/ui/traits/alias/self-in-const-generics.stderr (100%) rename {src/test => tests}/ui/traits/alias/self-in-generics.rs (100%) rename {src/test => tests}/ui/traits/alias/self-in-generics.stderr (100%) rename {src/test => tests}/ui/traits/alias/style_lint.rs (100%) rename {src/test => tests}/ui/traits/alias/style_lint.stderr (100%) rename {src/test => tests}/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed (100%) rename {src/test => tests}/ui/traits/alias/suggest-trait-alias-instead-of-type.rs (100%) rename {src/test => tests}/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr (100%) rename {src/test => tests}/ui/traits/alias/syntax-fail.rs (100%) rename {src/test => tests}/ui/traits/alias/syntax-fail.stderr (100%) rename {src/test => tests}/ui/traits/alias/syntax.rs (100%) rename {src/test => tests}/ui/traits/alias/wf.rs (100%) rename {src/test => tests}/ui/traits/alias/wf.stderr (100%) rename {src/test => tests}/ui/traits/alignment-gep-tup-like-1.rs (100%) rename {src/test => tests}/ui/traits/anon-static-method.rs (100%) rename {src/test => tests}/ui/traits/anon_trait_static_method_exe.rs (100%) rename {src/test => tests}/ui/traits/as-struct-constructor.rs (100%) rename {src/test => tests}/ui/traits/as-struct-constructor.stderr (100%) rename {src/test => tests}/ui/traits/assignability-trait.rs (100%) rename {src/test => tests}/ui/traits/assoc-type-in-superbad.rs (100%) rename {src/test => tests}/ui/traits/assoc-type-in-superbad.stderr (100%) rename {src/test => tests}/ui/traits/assoc-type-in-supertrait.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs (100%) rename {src/test => tests}/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr (100%) rename {src/test => tests}/ui/traits/associated_type_bound/issue-51446.rs (100%) rename {src/test => tests}/ui/traits/astconv-cycle-between-and-type.rs (100%) rename {src/test => tests}/ui/traits/augmented-assignments-trait.rs (100%) rename {src/test => tests}/ui/traits/auxiliary/anon_trait_static_method_lib.rs (100%) rename {src/test => tests}/ui/traits/auxiliary/go_trait.rs (100%) rename {src/test => tests}/ui/traits/auxiliary/issue_89119_intercrate_caching.rs (100%) rename {src/test => tests}/ui/traits/auxiliary/trait_safety_lib.rs (100%) rename {src/test => tests}/ui/traits/auxiliary/traitimpl.rs (100%) rename {src/test => tests}/ui/traits/bad-method-typaram-kind.rs (100%) rename {src/test => tests}/ui/traits/bad-method-typaram-kind.stderr (100%) rename {src/test => tests}/ui/traits/bad-sized.rs (100%) rename {src/test => tests}/ui/traits/bad-sized.stderr (100%) rename {src/test => tests}/ui/traits/bound/assoc-fn-bound-root-obligation.rs (100%) rename {src/test => tests}/ui/traits/bound/assoc-fn-bound-root-obligation.stderr (100%) rename {src/test => tests}/ui/traits/bound/auxiliary/crate_a1.rs (100%) rename {src/test => tests}/ui/traits/bound/auxiliary/crate_a2.rs (100%) rename {src/test => tests}/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs (100%) rename {src/test => tests}/ui/traits/bound/basic.rs (100%) rename {src/test => tests}/ui/traits/bound/generic_trait.rs (100%) rename {src/test => tests}/ui/traits/bound/impl-comparison-duplicates.rs (100%) rename {src/test => tests}/ui/traits/bound/in-arc.rs (100%) rename {src/test => tests}/ui/traits/bound/multiple.rs (100%) rename {src/test => tests}/ui/traits/bound/not-on-bare-trait.rs (100%) rename {src/test => tests}/ui/traits/bound/not-on-bare-trait.stderr (100%) rename {src/test => tests}/ui/traits/bound/not-on-struct.rs (100%) rename {src/test => tests}/ui/traits/bound/not-on-struct.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-in-fns.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-in-fns.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-in-impls.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-in-impls.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-locals.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-locals.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-rpass.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-static.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-static.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-xc.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-xc.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-xc1.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums-xc1.stderr (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums.rs (100%) rename {src/test => tests}/ui/traits/bound/on-structs-and-enums.stderr (100%) rename {src/test => tests}/ui/traits/bound/recursion.rs (100%) rename {src/test => tests}/ui/traits/bound/same-crate-name.rs (100%) rename {src/test => tests}/ui/traits/bound/same-crate-name.stderr (100%) rename {src/test => tests}/ui/traits/bound/sugar.rs (100%) rename {src/test => tests}/ui/traits/bound/sugar.stderr (100%) rename {src/test => tests}/ui/traits/bug-7183-generics.rs (100%) rename {src/test => tests}/ui/traits/bug-7295.rs (100%) rename {src/test => tests}/ui/traits/cache-issue-18209.rs (100%) rename {src/test => tests}/ui/traits/cache-reached-depth-ice.rs (100%) rename {src/test => tests}/ui/traits/cache-reached-depth-ice.stderr (100%) rename {src/test => tests}/ui/traits/coercion-generic-bad.rs (100%) rename {src/test => tests}/ui/traits/coercion-generic-bad.stderr (100%) rename {src/test => tests}/ui/traits/coercion-generic-regions.rs (100%) rename {src/test => tests}/ui/traits/coercion-generic-regions.stderr (100%) rename {src/test => tests}/ui/traits/coercion-generic.rs (100%) rename {src/test => tests}/ui/traits/coercion.rs (100%) rename {src/test => tests}/ui/traits/composition-trivial.rs (100%) rename {src/test => tests}/ui/traits/conditional-dispatch.rs (100%) rename {src/test => tests}/ui/traits/conditional-model-fn.rs (100%) rename {src/test => tests}/ui/traits/conservative_impl_trait.rs (100%) rename {src/test => tests}/ui/traits/copy-guessing.rs (100%) rename {src/test => tests}/ui/traits/copy-impl-cannot-normalize.rs (100%) rename {src/test => tests}/ui/traits/copy-impl-cannot-normalize.stderr (100%) rename {src/test => tests}/ui/traits/cycle-cache-err-60010.rs (100%) rename {src/test => tests}/ui/traits/cycle-cache-err-60010.stderr (100%) rename {src/test => tests}/ui/traits/cycle-generic-bound.rs (100%) rename {src/test => tests}/ui/traits/cycle-type-trait.rs (100%) rename {src/test => tests}/ui/traits/default-method/auxiliary/xc.rs (100%) rename {src/test => tests}/ui/traits/default-method/auxiliary/xc_2.rs (100%) rename {src/test => tests}/ui/traits/default-method/bound-subst.rs (100%) rename {src/test => tests}/ui/traits/default-method/bound-subst2.rs (100%) rename {src/test => tests}/ui/traits/default-method/bound-subst3.rs (100%) rename {src/test => tests}/ui/traits/default-method/bound-subst4.rs (100%) rename {src/test => tests}/ui/traits/default-method/bound.rs (100%) rename {src/test => tests}/ui/traits/default-method/macro.rs (100%) rename {src/test => tests}/ui/traits/default-method/mut.rs (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of.rs (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of.stderr (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_gated.rs (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs (100%) rename {src/test => tests}/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr (100%) rename {src/test => tests}/ui/traits/default-method/self.rs (100%) rename {src/test => tests}/ui/traits/default-method/supervtable.rs (100%) rename {src/test => tests}/ui/traits/default-method/trivial.rs (100%) rename {src/test => tests}/ui/traits/default-method/xc-2.rs (100%) rename {src/test => tests}/ui/traits/default-method/xc.rs (100%) rename {src/test => tests}/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs (100%) rename {src/test => tests}/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr (100%) rename {src/test => tests}/ui/traits/duplicate-methods.rs (100%) rename {src/test => tests}/ui/traits/duplicate-methods.stderr (100%) rename {src/test => tests}/ui/traits/dyn-trait.rs (100%) rename {src/test => tests}/ui/traits/early-vtbl-resolution.rs (100%) rename {src/test => tests}/ui/traits/elaborate-type-region.rs (100%) rename {src/test => tests}/ui/traits/false-ambiguity-where-clause-builtin-bound.rs (100%) rename {src/test => tests}/ui/traits/fmt-pointer-trait.rs (100%) rename {src/test => tests}/ui/traits/generic.rs (100%) rename {src/test => tests}/ui/traits/impl-1.rs (100%) rename {src/test => tests}/ui/traits/impl-1.stderr (100%) rename {src/test => tests}/ui/traits/impl-2.rs (100%) rename {src/test => tests}/ui/traits/impl-bounds-checking.rs (100%) rename {src/test => tests}/ui/traits/impl-bounds-checking.stderr (100%) rename {src/test => tests}/ui/traits/impl-can-not-have-untraitful-items.rs (100%) rename {src/test => tests}/ui/traits/impl-can-not-have-untraitful-items.stderr (100%) rename {src/test => tests}/ui/traits/impl-different-num-params.rs (100%) rename {src/test => tests}/ui/traits/impl-different-num-params.stderr (100%) rename {src/test => tests}/ui/traits/impl-evaluation-order.rs (100%) rename {src/test => tests}/ui/traits/impl-for-module.rs (100%) rename {src/test => tests}/ui/traits/impl-for-module.stderr (100%) rename {src/test => tests}/ui/traits/impl-implicit-trait.rs (100%) rename {src/test => tests}/ui/traits/impl-inherent-prefer-over-trait.rs (100%) rename {src/test => tests}/ui/traits/impl-method-mismatch.rs (100%) rename {src/test => tests}/ui/traits/impl-method-mismatch.stderr (100%) rename {src/test => tests}/ui/traits/impl-object-overlap-issue-23853.rs (100%) rename {src/test => tests}/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs (100%) rename {src/test => tests}/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr (100%) rename {src/test => tests}/ui/traits/impl.rs (100%) rename {src/test => tests}/ui/traits/impl_trait_as_trait_return_position.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/lifetime.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/lifetime.stderr (100%) rename {src/test => tests}/ui/traits/inductive-overflow/simultaneous.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/simultaneous.stderr (100%) rename {src/test => tests}/ui/traits/inductive-overflow/supertrait-auto-trait.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/supertrait-auto-trait.stderr (100%) rename {src/test => tests}/ui/traits/inductive-overflow/supertrait.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/supertrait.stderr (100%) rename {src/test => tests}/ui/traits/inductive-overflow/two-traits.rs (100%) rename {src/test => tests}/ui/traits/inductive-overflow/two-traits.stderr (100%) rename {src/test => tests}/ui/traits/infer-from-object-issue-26952.rs (100%) rename {src/test => tests}/ui/traits/inherent-method-order.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auto-xc-2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auto-xc.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auto.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auxiliary/auto_xc.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auxiliary/auto_xc_2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auxiliary/overloading_xc.rs (100%) rename {src/test => tests}/ui/traits/inheritance/auxiliary/xc_call.rs (100%) rename {src/test => tests}/ui/traits/inheritance/basic.rs (100%) rename {src/test => tests}/ui/traits/inheritance/call-bound-inherited.rs (100%) rename {src/test => tests}/ui/traits/inheritance/call-bound-inherited2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/cast-without-call-to-supertrait.rs (100%) rename {src/test => tests}/ui/traits/inheritance/cast.rs (100%) rename {src/test => tests}/ui/traits/inheritance/cross-trait-call-xc.rs (100%) rename {src/test => tests}/ui/traits/inheritance/cross-trait-call.rs (100%) rename {src/test => tests}/ui/traits/inheritance/diamond.rs (100%) rename {src/test => tests}/ui/traits/inheritance/multiple-inheritors.rs (100%) rename {src/test => tests}/ui/traits/inheritance/multiple-params.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num0.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num1.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num3.rs (100%) rename {src/test => tests}/ui/traits/inheritance/num5.rs (100%) rename {src/test => tests}/ui/traits/inheritance/overloading-simple.rs (100%) rename {src/test => tests}/ui/traits/inheritance/overloading-xc-exe.rs (100%) rename {src/test => tests}/ui/traits/inheritance/overloading.rs (100%) rename {src/test => tests}/ui/traits/inheritance/repeated-supertrait-ambig.rs (100%) rename {src/test => tests}/ui/traits/inheritance/repeated-supertrait-ambig.stderr (100%) rename {src/test => tests}/ui/traits/inheritance/repeated-supertrait.rs (100%) rename {src/test => tests}/ui/traits/inheritance/self-in-supertype.rs (100%) rename {src/test => tests}/ui/traits/inheritance/self.rs (100%) rename {src/test => tests}/ui/traits/inheritance/simple.rs (100%) rename {src/test => tests}/ui/traits/inheritance/static.rs (100%) rename {src/test => tests}/ui/traits/inheritance/static2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/subst.rs (100%) rename {src/test => tests}/ui/traits/inheritance/subst2.rs (100%) rename {src/test => tests}/ui/traits/inheritance/visibility.rs (100%) rename {src/test => tests}/ui/traits/invalid_operator_trait.rs (100%) rename {src/test => tests}/ui/traits/invalid_operator_trait.stderr (100%) rename {src/test => tests}/ui/traits/issue-102989.rs (100%) rename {src/test => tests}/ui/traits/issue-102989.stderr (100%) rename {src/test => tests}/ui/traits/issue-104322.rs (100%) rename {src/test => tests}/ui/traits/issue-18400.rs (100%) rename {src/test => tests}/ui/traits/issue-18400.stderr (100%) rename {src/test => tests}/ui/traits/issue-18412.rs (100%) rename {src/test => tests}/ui/traits/issue-20692.rs (100%) rename {src/test => tests}/ui/traits/issue-20692.stderr (100%) rename {src/test => tests}/ui/traits/issue-22019.rs (100%) rename {src/test => tests}/ui/traits/issue-22110.rs (100%) rename {src/test => tests}/ui/traits/issue-22655.rs (100%) rename {src/test => tests}/ui/traits/issue-23003-overflow.rs (100%) rename {src/test => tests}/ui/traits/issue-23003.rs (100%) rename {src/test => tests}/ui/traits/issue-23825.rs (100%) rename {src/test => tests}/ui/traits/issue-24010.rs (100%) rename {src/test => tests}/ui/traits/issue-26339.rs (100%) rename {src/test => tests}/ui/traits/issue-28576.rs (100%) rename {src/test => tests}/ui/traits/issue-28576.stderr (100%) rename {src/test => tests}/ui/traits/issue-32963.rs (100%) rename {src/test => tests}/ui/traits/issue-32963.stderr (100%) rename {src/test => tests}/ui/traits/issue-33140-hack-boundaries.rs (100%) rename {src/test => tests}/ui/traits/issue-33140-hack-boundaries.stderr (100%) rename {src/test => tests}/ui/traits/issue-33140.rs (100%) rename {src/test => tests}/ui/traits/issue-33140.stderr (100%) rename {src/test => tests}/ui/traits/issue-35869.rs (100%) rename {src/test => tests}/ui/traits/issue-35869.stderr (100%) rename {src/test => tests}/ui/traits/issue-3683.rs (100%) rename {src/test => tests}/ui/traits/issue-38033.rs (100%) rename {src/test => tests}/ui/traits/issue-38404.rs (100%) rename {src/test => tests}/ui/traits/issue-38404.stderr (100%) rename {src/test => tests}/ui/traits/issue-38604.rs (100%) rename {src/test => tests}/ui/traits/issue-38604.stderr (100%) rename {src/test => tests}/ui/traits/issue-3973.rs (100%) rename {src/test => tests}/ui/traits/issue-3973.stderr (100%) rename {src/test => tests}/ui/traits/issue-4107.rs (100%) rename {src/test => tests}/ui/traits/issue-43132.rs (100%) rename {src/test => tests}/ui/traits/issue-43784-supertrait.rs (100%) rename {src/test => tests}/ui/traits/issue-43784-supertrait.stderr (100%) rename {src/test => tests}/ui/traits/issue-50480.rs (100%) rename {src/test => tests}/ui/traits/issue-50480.stderr (100%) rename {src/test => tests}/ui/traits/issue-52893.rs (100%) rename {src/test => tests}/ui/traits/issue-52893.stderr (100%) rename {src/test => tests}/ui/traits/issue-56202.rs (100%) rename {src/test => tests}/ui/traits/issue-56488.rs (100%) rename {src/test => tests}/ui/traits/issue-59029-1.rs (100%) rename {src/test => tests}/ui/traits/issue-59029-1.stderr (100%) rename {src/test => tests}/ui/traits/issue-59029-2.rs (100%) rename {src/test => tests}/ui/traits/issue-6128.rs (100%) rename {src/test => tests}/ui/traits/issue-6334.rs (100%) rename {src/test => tests}/ui/traits/issue-65284-suggest-generic-trait-bound.rs (100%) rename {src/test => tests}/ui/traits/issue-65284-suggest-generic-trait-bound.stderr (100%) rename {src/test => tests}/ui/traits/issue-65673.rs (100%) rename {src/test => tests}/ui/traits/issue-65673.stderr (100%) rename {src/test => tests}/ui/traits/issue-68295.rs (100%) rename {src/test => tests}/ui/traits/issue-68295.stderr (100%) rename {src/test => tests}/ui/traits/issue-7013.rs (100%) rename {src/test => tests}/ui/traits/issue-7013.stderr (100%) rename {src/test => tests}/ui/traits/issue-70944.rs (100%) rename {src/test => tests}/ui/traits/issue-71036.rs (100%) rename {src/test => tests}/ui/traits/issue-71036.stderr (100%) rename {src/test => tests}/ui/traits/issue-71136.rs (100%) rename {src/test => tests}/ui/traits/issue-71136.stderr (100%) rename {src/test => tests}/ui/traits/issue-72410.rs (100%) rename {src/test => tests}/ui/traits/issue-72410.stderr (100%) rename {src/test => tests}/ui/traits/issue-72455.rs (100%) rename {src/test => tests}/ui/traits/issue-75627.rs (100%) rename {src/test => tests}/ui/traits/issue-75627.stderr (100%) rename {src/test => tests}/ui/traits/issue-77982.rs (100%) rename {src/test => tests}/ui/traits/issue-77982.stderr (100%) rename {src/test => tests}/ui/traits/issue-78372.rs (100%) rename {src/test => tests}/ui/traits/issue-78372.stderr (100%) rename {src/test => tests}/ui/traits/issue-78632.rs (100%) rename {src/test => tests}/ui/traits/issue-79458.rs (100%) rename {src/test => tests}/ui/traits/issue-79458.stderr (100%) rename {src/test => tests}/ui/traits/issue-8153.rs (100%) rename {src/test => tests}/ui/traits/issue-8153.stderr (100%) rename {src/test => tests}/ui/traits/issue-82830.rs (100%) rename {src/test => tests}/ui/traits/issue-83538-tainted-cache-after-cycle.rs (100%) rename {src/test => tests}/ui/traits/issue-83538-tainted-cache-after-cycle.stderr (100%) rename {src/test => tests}/ui/traits/issue-84399-bad-fresh-caching.rs (100%) rename {src/test => tests}/ui/traits/issue-85360-eval-obligation-ice.rs (100%) rename {src/test => tests}/ui/traits/issue-85360-eval-obligation-ice.stderr (100%) rename {src/test => tests}/ui/traits/issue-85735.rs (100%) rename {src/test => tests}/ui/traits/issue-85735.stderr (100%) rename {src/test => tests}/ui/traits/issue-87558.rs (100%) rename {src/test => tests}/ui/traits/issue-87558.stderr (100%) rename {src/test => tests}/ui/traits/issue-89119.rs (100%) rename {src/test => tests}/ui/traits/issue-90195-2.rs (100%) rename {src/test => tests}/ui/traits/issue-90195.rs (100%) rename {src/test => tests}/ui/traits/issue-90662-projection-caching.rs (100%) rename {src/test => tests}/ui/traits/issue-91594.rs (100%) rename {src/test => tests}/ui/traits/issue-91594.stderr (100%) rename {src/test => tests}/ui/traits/issue-91949-hangs-on-recursion.rs (100%) rename {src/test => tests}/ui/traits/issue-91949-hangs-on-recursion.stderr (100%) rename {src/test => tests}/ui/traits/issue-92292.rs (100%) rename {src/test => tests}/ui/traits/issue-9394-inherited-calls.rs (100%) rename {src/test => tests}/ui/traits/issue-95311.rs (100%) rename {src/test => tests}/ui/traits/issue-95898.rs (100%) rename {src/test => tests}/ui/traits/issue-95898.stderr (100%) rename {src/test => tests}/ui/traits/issue-96664.rs (100%) rename {src/test => tests}/ui/traits/issue-96665.rs (100%) rename {src/test => tests}/ui/traits/issue-97576.rs (100%) rename {src/test => tests}/ui/traits/issue-97576.stderr (100%) rename {src/test => tests}/ui/traits/issue-97695-double-trivial-bound.rs (100%) rename {src/test => tests}/ui/traits/issue-99875.rs (100%) rename {src/test => tests}/ui/traits/issue-99875.stderr (100%) rename {src/test => tests}/ui/traits/item-inside-macro.rs (100%) rename {src/test => tests}/ui/traits/item-privacy.rs (100%) rename {src/test => tests}/ui/traits/item-privacy.stderr (100%) rename {src/test => tests}/ui/traits/kindck-owned-contains-1.rs (100%) rename {src/test => tests}/ui/traits/map-types.rs (100%) rename {src/test => tests}/ui/traits/map-types.stderr (100%) rename {src/test => tests}/ui/traits/matching-lifetimes.rs (100%) rename {src/test => tests}/ui/traits/matching-lifetimes.stderr (100%) rename {src/test => tests}/ui/traits/method-private.rs (100%) rename {src/test => tests}/ui/traits/method-private.stderr (100%) rename {src/test => tests}/ui/traits/monad.rs (100%) rename {src/test => tests}/ui/traits/monomorphized-callees-with-ty-params-3314.rs (100%) rename {src/test => tests}/ui/traits/multidispatch-bad.rs (100%) rename {src/test => tests}/ui/traits/multidispatch-bad.stderr (100%) rename {src/test => tests}/ui/traits/multidispatch-conditional-impl-not-considered.rs (100%) rename {src/test => tests}/ui/traits/multidispatch-convert-ambig-dest.rs (100%) rename {src/test => tests}/ui/traits/multidispatch-convert-ambig-dest.stderr (100%) rename {src/test => tests}/ui/traits/multidispatch-infer-convert-target.rs (100%) rename {src/test => tests}/ui/traits/multidispatch1.rs (100%) rename {src/test => tests}/ui/traits/multidispatch2.rs (100%) rename {src/test => tests}/ui/traits/mutual-recursion-issue-75860.rs (100%) rename {src/test => tests}/ui/traits/mutual-recursion-issue-75860.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/auxiliary/foreign_trait.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/eager-mono.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/feature-gate-negative_impls.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/feature-gate-negative_impls.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/negated-auto-traits-error.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negated-auto-traits-error.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/negated-auto-traits-rpass.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-default-impls.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-default-impls.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-impls-basic.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-negative.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-negative.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-positive-item.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-positive-item.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-positive.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/negative-specializes-positive.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/no-items.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/no-items.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/positive-specializes-negative.rs (100%) rename {src/test => tests}/ui/traits/negative-impls/positive-specializes-negative.stderr (100%) rename {src/test => tests}/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs (100%) rename {src/test => tests}/ui/traits/no-fallback-multiple-impls.rs (100%) rename {src/test => tests}/ui/traits/no-fallback-multiple-impls.stderr (100%) rename {src/test => tests}/ui/traits/no_send-struct.rs (100%) rename {src/test => tests}/ui/traits/no_send-struct.stderr (100%) rename {src/test => tests}/ui/traits/normalize-supertrait.rs (100%) rename {src/test => tests}/ui/traits/not-suggest-non-existing-fully-qualified-path.rs (100%) rename {src/test => tests}/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr (100%) rename {src/test => tests}/ui/traits/object-does-not-impl-trait.rs (100%) rename {src/test => tests}/ui/traits/object-does-not-impl-trait.stderr (100%) rename {src/test => tests}/ui/traits/object-one-type-two-traits.rs (100%) rename {src/test => tests}/ui/traits/object/auto-dedup-in-impl.rs (100%) rename {src/test => tests}/ui/traits/object/auto-dedup-in-impl.stderr (100%) rename {src/test => tests}/ui/traits/object/auto-dedup.rs (100%) rename {src/test => tests}/ui/traits/object/bounds-cycle-1.rs (100%) rename {src/test => tests}/ui/traits/object/bounds-cycle-2.rs (100%) rename {src/test => tests}/ui/traits/object/bounds-cycle-3.rs (100%) rename {src/test => tests}/ui/traits/object/bounds-cycle-4.rs (100%) rename {src/test => tests}/ui/traits/object/enforce-supertrait-projection.rs (100%) rename {src/test => tests}/ui/traits/object/enforce-supertrait-projection.stderr (100%) rename {src/test => tests}/ui/traits/object/exclusion.rs (100%) rename {src/test => tests}/ui/traits/object/generics.rs (100%) rename {src/test => tests}/ui/traits/object/issue-33140-traitobject-crate.rs (100%) rename {src/test => tests}/ui/traits/object/issue-33140-traitobject-crate.stderr (100%) rename {src/test => tests}/ui/traits/object/issue-44454-1.rs (100%) rename {src/test => tests}/ui/traits/object/issue-44454-1.stderr (100%) rename {src/test => tests}/ui/traits/object/issue-44454-2.rs (100%) rename {src/test => tests}/ui/traits/object/issue-44454-2.stderr (100%) rename {src/test => tests}/ui/traits/object/issue-44454-3.rs (100%) rename {src/test => tests}/ui/traits/object/issue-44454-3.stderr (100%) rename {src/test => tests}/ui/traits/object/lifetime-first.rs (100%) rename {src/test => tests}/ui/traits/object/macro-matcher.rs (100%) rename {src/test => tests}/ui/traits/object/macro-matcher.stderr (100%) rename {src/test => tests}/ui/traits/object/safety.rs (100%) rename {src/test => tests}/ui/traits/object/safety.stderr (100%) rename {src/test => tests}/ui/traits/object/supertrait-lifetime-bound.rs (100%) rename {src/test => tests}/ui/traits/object/supertrait-lifetime-bound.stderr (100%) rename {src/test => tests}/ui/traits/object/vs-lifetime-2.rs (100%) rename {src/test => tests}/ui/traits/object/vs-lifetime-2.stderr (100%) rename {src/test => tests}/ui/traits/object/vs-lifetime.rs (100%) rename {src/test => tests}/ui/traits/object/vs-lifetime.stderr (100%) rename {src/test => tests}/ui/traits/object/with-lifetime-bound.rs (100%) rename {src/test => tests}/ui/traits/object/with-self-in-projection-output-bad.rs (100%) rename {src/test => tests}/ui/traits/object/with-self-in-projection-output-bad.stderr (100%) rename {src/test => tests}/ui/traits/object/with-self-in-projection-output-good.rs (100%) rename {src/test => tests}/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs (100%) rename {src/test => tests}/ui/traits/objects-owned-object-borrowed-method-headerless.rs (100%) rename {src/test => tests}/ui/traits/operator-overloading-issue-52025.rs (100%) rename {src/test => tests}/ui/traits/overlap-not-permitted-for-builtin-trait.rs (100%) rename {src/test => tests}/ui/traits/overlap-not-permitted-for-builtin-trait.stderr (100%) rename {src/test => tests}/ui/traits/overlap-permitted-for-marker-traits.rs (100%) rename {src/test => tests}/ui/traits/param-without-lifetime-constraint.rs (100%) rename {src/test => tests}/ui/traits/param-without-lifetime-constraint.stderr (100%) rename {src/test => tests}/ui/traits/parameterized-with-bounds.rs (100%) rename {src/test => tests}/ui/traits/pointee-deduction.rs (100%) rename {src/test => tests}/ui/traits/pointee-tail-is-generic-errors.rs (100%) rename {src/test => tests}/ui/traits/pointee-tail-is-generic-errors.stderr (100%) rename {src/test => tests}/ui/traits/pointee-tail-is-generic.rs (100%) rename {src/test => tests}/ui/traits/principal-less-objects.rs (100%) rename {src/test => tests}/ui/traits/privacy.rs (100%) rename {src/test => tests}/ui/traits/project-modulo-regions.rs (100%) rename {src/test => tests}/ui/traits/project-modulo-regions.with_clause.stderr (100%) rename {src/test => tests}/ui/traits/project-modulo-regions.without_clause.stderr (100%) rename {src/test => tests}/ui/traits/region-pointer-simple.rs (100%) rename {src/test => tests}/ui/traits/reservation-impl/coherence-conflict.rs (100%) rename {src/test => tests}/ui/traits/reservation-impl/coherence-conflict.stderr (100%) rename {src/test => tests}/ui/traits/reservation-impl/no-use.rs (100%) rename {src/test => tests}/ui/traits/reservation-impl/no-use.stderr (100%) rename {src/test => tests}/ui/traits/reservation-impl/non-lattice-ok.rs (100%) rename {src/test => tests}/ui/traits/reservation-impl/ok.rs (100%) rename {src/test => tests}/ui/traits/resolution-in-overloaded-op.rs (100%) rename {src/test => tests}/ui/traits/resolution-in-overloaded-op.stderr (100%) rename {src/test => tests}/ui/traits/safety-fn-body.mir.stderr (100%) rename {src/test => tests}/ui/traits/safety-fn-body.rs (100%) rename {src/test => tests}/ui/traits/safety-fn-body.thir.stderr (100%) rename {src/test => tests}/ui/traits/safety-inherent-impl.rs (100%) rename {src/test => tests}/ui/traits/safety-inherent-impl.stderr (100%) rename {src/test => tests}/ui/traits/safety-ok-cc.rs (100%) rename {src/test => tests}/ui/traits/safety-ok.rs (100%) rename {src/test => tests}/ui/traits/safety-trait-impl-cc.rs (100%) rename {src/test => tests}/ui/traits/safety-trait-impl-cc.stderr (100%) rename {src/test => tests}/ui/traits/safety-trait-impl.rs (100%) rename {src/test => tests}/ui/traits/safety-trait-impl.stderr (100%) rename {src/test => tests}/ui/traits/self-without-lifetime-constraint.rs (100%) rename {src/test => tests}/ui/traits/self-without-lifetime-constraint.stderr (100%) rename {src/test => tests}/ui/traits/solver-cycles/inductive-canonical-cycle.rs (100%) rename {src/test => tests}/ui/traits/static-method-generic-inference.rs (100%) rename {src/test => tests}/ui/traits/static-method-generic-inference.stderr (100%) rename {src/test => tests}/ui/traits/static-method-overwriting.rs (100%) rename {src/test => tests}/ui/traits/static-outlives-a-where-clause.rs (100%) rename {src/test => tests}/ui/traits/staticness-mismatch.rs (100%) rename {src/test => tests}/ui/traits/staticness-mismatch.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-39029.fixed (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-39029.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-39029.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-62530.fixed (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-62530.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/issue-62530.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/multiple-0.fixed (100%) rename {src/test => tests}/ui/traits/suggest-deferences/multiple-0.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/multiple-0.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/multiple-1.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/multiple-1.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/root-obligation.fixed (100%) rename {src/test => tests}/ui/traits/suggest-deferences/root-obligation.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/root-obligation.stderr (100%) rename {src/test => tests}/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed (100%) rename {src/test => tests}/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs (100%) rename {src/test => tests}/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-closure.rs (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-closure.stderr (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-path-with-adjustment.rs (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-path-without-adjustment.rs (100%) rename {src/test => tests}/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr (100%) rename {src/test => tests}/ui/traits/suggest-where-clause.rs (100%) rename {src/test => tests}/ui/traits/suggest-where-clause.stderr (100%) rename {src/test => tests}/ui/traits/superdefault-generics.rs (100%) rename {src/test => tests}/ui/traits/syntax-polarity.rs (100%) rename {src/test => tests}/ui/traits/syntax-trait-polarity.rs (100%) rename {src/test => tests}/ui/traits/syntax-trait-polarity.stderr (100%) rename {src/test => tests}/ui/traits/test-2.rs (100%) rename {src/test => tests}/ui/traits/test-2.stderr (100%) rename {src/test => tests}/ui/traits/test.rs (100%) rename {src/test => tests}/ui/traits/test.stderr (100%) rename {src/test => tests}/ui/traits/to-str.rs (100%) rename {src/test => tests}/ui/traits/trait-or-new-type-instead.rs (100%) rename {src/test => tests}/ui/traits/trait-or-new-type-instead.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/basic.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/correct-supertrait-substitution.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/cyclic-trait-resolution.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/diamond.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/invalid-upcast.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/invalid-upcast.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/lifetime.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/migrate-lint-deny.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/migrate-lint-deny.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/replace-vptr.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/struct.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/subtrait-method.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/subtrait-method.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-1.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-1.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-2.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-2.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-3.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-3.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-4.rs (100%) rename {src/test => tests}/ui/traits/trait-upcasting/type-checking-test-4.stderr (100%) rename {src/test => tests}/ui/traits/typeclasses-eq-example-static.rs (100%) rename {src/test => tests}/ui/traits/typeclasses-eq-example.rs (100%) rename {src/test => tests}/ui/traits/ufcs-object.rs (100%) rename {src/test => tests}/ui/traits/unspecified-self-in-trait-ref.rs (100%) rename {src/test => tests}/ui/traits/unspecified-self-in-trait-ref.stderr (100%) rename {src/test => tests}/ui/traits/use-before-def.rs (100%) rename {src/test => tests}/ui/traits/vtable-res-trait-param.rs (100%) rename {src/test => tests}/ui/traits/vtable-res-trait-param.stderr (100%) rename {src/test => tests}/ui/traits/vtable/issue-91807.rs (100%) rename {src/test => tests}/ui/traits/vtable/issue-97381.rs (100%) rename {src/test => tests}/ui/traits/vtable/issue-97381.stderr (100%) rename {src/test => tests}/ui/traits/vtable/vtable-diamond.rs (100%) rename {src/test => tests}/ui/traits/vtable/vtable-diamond.stderr (100%) rename {src/test => tests}/ui/traits/vtable/vtable-multi-level.rs (100%) rename {src/test => tests}/ui/traits/vtable/vtable-multi-level.stderr (100%) rename {src/test => tests}/ui/traits/vtable/vtable-multiple.rs (100%) rename {src/test => tests}/ui/traits/vtable/vtable-multiple.stderr (100%) rename {src/test => tests}/ui/traits/vtable/vtable-non-object-safe.rs (100%) rename {src/test => tests}/ui/traits/vtable/vtable-non-object-safe.stderr (100%) rename {src/test => tests}/ui/traits/vtable/vtable-vacant.rs (100%) rename {src/test => tests}/ui/traits/vtable/vtable-vacant.stderr (100%) rename {src/test => tests}/ui/traits/wf-object/maybe-bound.rs (100%) rename {src/test => tests}/ui/traits/wf-object/maybe-bound.stderr (100%) rename {src/test => tests}/ui/traits/wf-object/no-duplicates.rs (100%) rename {src/test => tests}/ui/traits/wf-object/no-duplicates.stderr (100%) rename {src/test => tests}/ui/traits/wf-object/only-maybe-bound.rs (100%) rename {src/test => tests}/ui/traits/wf-object/only-maybe-bound.stderr (100%) rename {src/test => tests}/ui/traits/wf-object/reverse-order.rs (100%) rename {src/test => tests}/ui/traits/where-clause-vs-impl.rs (100%) rename {src/test => tests}/ui/traits/with-bounds-default.rs (100%) rename {src/test => tests}/ui/traits/with-dst.rs (100%) rename {src/test => tests}/ui/transmutability/abstraction/abstracted_assume.rs (100%) rename {src/test => tests}/ui/transmutability/abstraction/const_generic_fn.rs (100%) rename {src/test => tests}/ui/transmutability/arrays/issue-103783-array-length.rs (100%) rename {src/test => tests}/ui/transmutability/arrays/issue-103783-array-length.stderr (100%) rename {src/test => tests}/ui/transmutability/arrays/should_have_correct_length.rs (100%) rename {src/test => tests}/ui/transmutability/arrays/should_inherit_alignment.rs (100%) rename {src/test => tests}/ui/transmutability/arrays/should_require_well_defined_layout.rs (100%) rename {src/test => tests}/ui/transmutability/arrays/should_require_well_defined_layout.stderr (100%) rename {src/test => tests}/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.rs (100%) rename {src/test => tests}/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.stderr (100%) rename {src/test => tests}/ui/transmutability/enums/repr/should_require_well_defined_layout.rs (100%) rename {src/test => tests}/ui/transmutability/enums/repr/should_require_well_defined_layout.stderr (100%) rename {src/test => tests}/ui/transmutability/enums/should_order_correctly.rs (100%) rename {src/test => tests}/ui/transmutability/enums/should_pad_variants.rs (100%) rename {src/test => tests}/ui/transmutability/enums/should_pad_variants.stderr (100%) rename {src/test => tests}/ui/transmutability/enums/should_respect_endianness.rs (100%) rename {src/test => tests}/ui/transmutability/enums/should_respect_endianness.stderr (100%) rename {src/test => tests}/ui/transmutability/issue-101739-1.rs (100%) rename {src/test => tests}/ui/transmutability/issue-101739-1.stderr (100%) rename {src/test => tests}/ui/transmutability/issue-101739-2.rs (100%) rename {src/test => tests}/ui/transmutability/issue-101739-2.stderr (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/feature-missing.rs (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_dst.rs (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_dst.stderr (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_src.rs (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_src.stderr (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_src_field.rs (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/unknown_src_field.stderr (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs (100%) rename {src/test => tests}/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr (100%) rename {src/test => tests}/ui/transmutability/primitives/bool.rs (100%) rename {src/test => tests}/ui/transmutability/primitives/bool.stderr (100%) rename {src/test => tests}/ui/transmutability/primitives/numbers.rs (100%) rename {src/test => tests}/ui/transmutability/primitives/numbers.stderr (100%) rename {src/test => tests}/ui/transmutability/primitives/unit.rs (100%) rename {src/test => tests}/ui/transmutability/primitives/unit.stderr (100%) rename {src/test => tests}/ui/transmutability/references.rs (100%) rename {src/test => tests}/ui/transmutability/references.stderr (100%) rename {src/test => tests}/ui/transmutability/structs/repr/should_handle_align.rs (100%) rename {src/test => tests}/ui/transmutability/structs/repr/should_handle_packed.rs (100%) rename {src/test => tests}/ui/transmutability/structs/repr/should_require_well_defined_layout.rs (100%) rename {src/test => tests}/ui/transmutability/structs/repr/should_require_well_defined_layout.stderr (100%) rename {src/test => tests}/ui/transmutability/structs/should_order_fields_correctly.rs (100%) rename {src/test => tests}/ui/transmutability/unions/boolish.rs (100%) rename {src/test => tests}/ui/transmutability/unions/repr/should_handle_align.rs (100%) rename {src/test => tests}/ui/transmutability/unions/repr/should_handle_packed.rs (100%) rename {src/test => tests}/ui/transmutability/unions/repr/should_require_well_defined_layout.rs (100%) rename {src/test => tests}/ui/transmutability/unions/repr/should_require_well_defined_layout.stderr (100%) rename {src/test => tests}/ui/transmutability/unions/should_pad_variants.rs (100%) rename {src/test => tests}/ui/transmutability/unions/should_pad_variants.stderr (100%) rename {src/test => tests}/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_contraction.rs (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_contraction.stderr (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_disjoint.rs (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_disjoint.stderr (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_intersecting.rs (100%) rename {src/test => tests}/ui/transmutability/unions/should_reject_intersecting.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_variant.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_tricky_unreachable_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_private_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_private_variant.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_private_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_private_field.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_tricky_unreachable_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.stderr (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.rs (100%) rename {src/test => tests}/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.stderr (100%) rename {src/test => tests}/ui/transmute-equal-assoc-types.rs (100%) rename {src/test => tests}/ui/transmute-non-immediate-to-immediate.rs (100%) rename {src/test => tests}/ui/transmute/lifetimes.rs (100%) rename {src/test => tests}/ui/transmute/main.rs (100%) rename {src/test => tests}/ui/transmute/main.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-different-sizes.rs (100%) rename {src/test => tests}/ui/transmute/transmute-different-sizes.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-fat-pointers.rs (100%) rename {src/test => tests}/ui/transmute/transmute-fat-pointers.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-from-fn-item-types-error.rs (100%) rename {src/test => tests}/ui/transmute/transmute-from-fn-item-types-error.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-impl.rs (100%) rename {src/test => tests}/ui/transmute/transmute-impl.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-imut-to-mut.rs (100%) rename {src/test => tests}/ui/transmute/transmute-imut-to-mut.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-padding-ice.rs (100%) rename {src/test => tests}/ui/transmute/transmute-padding-ice.stderr (100%) rename {src/test => tests}/ui/transmute/transmute-type-parameters.rs (100%) rename {src/test => tests}/ui/transmute/transmute-type-parameters.stderr (100%) rename {src/test => tests}/ui/treat-err-as-bug/delay_span_bug.rs (100%) rename {src/test => tests}/ui/treat-err-as-bug/delay_span_bug.stderr (100%) rename {src/test => tests}/ui/treat-err-as-bug/err.rs (100%) rename {src/test => tests}/ui/treat-err-as-bug/err.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/issue-73021-impossible-inline.inline.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/issue-73021-impossible-inline.no-opt.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/issue-73021-impossible-inline.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-associated-functions.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-copy.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-copy.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-projection.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-sized.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-sized.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-inconsistent.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-leak-copy.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-leak-copy.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-leak.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-leak.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-lint.rs (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-lint.stderr (100%) rename {src/test => tests}/ui/trivial-bounds/trivial-bounds-object.rs (100%) rename {src/test => tests}/ui/trivial_casts-rpass.rs (100%) rename {src/test => tests}/ui/try-block/issue-45124.rs (100%) rename {src/test => tests}/ui/try-block/try-block-bad-lifetime.rs (100%) rename {src/test => tests}/ui/try-block/try-block-bad-lifetime.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-bad-type.rs (100%) rename {src/test => tests}/ui/try-block/try-block-bad-type.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-catch.rs (100%) rename {src/test => tests}/ui/try-block/try-block-catch.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-in-edition2015.rs (100%) rename {src/test => tests}/ui/try-block/try-block-in-edition2015.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-in-match.rs (100%) rename {src/test => tests}/ui/try-block/try-block-in-return.rs (100%) rename {src/test => tests}/ui/try-block/try-block-in-while.rs (100%) rename {src/test => tests}/ui/try-block/try-block-in-while.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-maybe-bad-lifetime.rs (100%) rename {src/test => tests}/ui/try-block/try-block-maybe-bad-lifetime.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-opt-init.rs (100%) rename {src/test => tests}/ui/try-block/try-block-opt-init.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-type-error.rs (100%) rename {src/test => tests}/ui/try-block/try-block-type-error.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-unreachable-code-lint.rs (100%) rename {src/test => tests}/ui/try-block/try-block-unreachable-code-lint.stderr (100%) rename {src/test => tests}/ui/try-block/try-block-unused-delims.fixed (100%) rename {src/test => tests}/ui/try-block/try-block-unused-delims.rs (100%) rename {src/test => tests}/ui/try-block/try-block-unused-delims.stderr (100%) rename {src/test => tests}/ui/try-block/try-block.rs (100%) rename {src/test => tests}/ui/try-block/try-is-identifier-edition2015.rs (100%) rename {src/test => tests}/ui/try-from-int-error-partial-eq.rs (100%) rename {src/test => tests}/ui/try-operator-hygiene.rs (100%) rename {src/test => tests}/ui/try-operator.rs (100%) rename {src/test => tests}/ui/try-trait/bad-interconversion.rs (100%) rename {src/test => tests}/ui/try-trait/bad-interconversion.stderr (100%) rename {src/test => tests}/ui/try-trait/option-to-result.rs (100%) rename {src/test => tests}/ui/try-trait/option-to-result.stderr (100%) rename {src/test => tests}/ui/try-trait/try-as-monad.rs (100%) rename {src/test => tests}/ui/try-trait/try-on-option-diagnostics.rs (100%) rename {src/test => tests}/ui/try-trait/try-on-option-diagnostics.stderr (100%) rename {src/test => tests}/ui/try-trait/try-on-option.rs (100%) rename {src/test => tests}/ui/try-trait/try-on-option.stderr (100%) rename {src/test => tests}/ui/try-trait/try-operator-custom.rs (100%) rename {src/test => tests}/ui/try-trait/try-operator-on-main.rs (100%) rename {src/test => tests}/ui/try-trait/try-operator-on-main.stderr (100%) rename {src/test => tests}/ui/try-trait/try-poll.rs (100%) rename {src/test => tests}/ui/try-trait/yeet-for-option.rs (100%) rename {src/test => tests}/ui/try-trait/yeet-for-result.rs (100%) rename {src/test => tests}/ui/tuple-index.rs (100%) rename {src/test => tests}/ui/tuple/add-tuple-within-arguments.rs (100%) rename {src/test => tests}/ui/tuple/add-tuple-within-arguments.stderr (100%) rename {src/test => tests}/ui/tuple/array-diagnostics.rs (100%) rename {src/test => tests}/ui/tuple/array-diagnostics.stderr (100%) rename {src/test => tests}/ui/tuple/builtin-fail.rs (100%) rename {src/test => tests}/ui/tuple/builtin-fail.stderr (100%) rename {src/test => tests}/ui/tuple/builtin.rs (100%) rename {src/test => tests}/ui/tuple/index-float.rs (100%) rename {src/test => tests}/ui/tuple/index-invalid.rs (100%) rename {src/test => tests}/ui/tuple/index-invalid.stderr (100%) rename {src/test => tests}/ui/tuple/indexing-in-macro.rs (100%) rename {src/test => tests}/ui/tuple/nested-index.rs (100%) rename {src/test => tests}/ui/tuple/one-tuple.rs (100%) rename {src/test => tests}/ui/tuple/tup.rs (100%) rename {src/test => tests}/ui/tuple/tuple-arity-mismatch.rs (100%) rename {src/test => tests}/ui/tuple/tuple-arity-mismatch.stderr (100%) rename {src/test => tests}/ui/tuple/tuple-index-fat-types.rs (100%) rename {src/test => tests}/ui/tuple/tuple-index-not-tuple.rs (100%) rename {src/test => tests}/ui/tuple/tuple-index-not-tuple.stderr (100%) rename {src/test => tests}/ui/tuple/tuple-index-out-of-bounds.rs (100%) rename {src/test => tests}/ui/tuple/tuple-index-out-of-bounds.stderr (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test.rs (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test.stderr (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test2.rs (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test2.stderr (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test3.rs (100%) rename {src/test => tests}/ui/tuple/tuple-struct-fields/test3.stderr (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-2.rs (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-2.stderr (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-3.rs (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-3.stderr (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-4.rs (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice-4.stderr (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice.rs (100%) rename {src/test => tests}/ui/tuple/wrong_argument_ice.stderr (100%) rename {src/test => tests}/ui/tydesc-name.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-generic-args-pass.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-generic-args.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-generic-args.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/issue-57866.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/self-in-enum-definition.rs (100%) rename {src/test => tests}/ui/type-alias-enum-variants/self-in-enum-definition.stderr (100%) rename {src/test => tests}/ui/type-alias-enum-variants/type-alias-enum-variants-pass.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/argument-types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/assoc-projection-ice.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/assoc-type-const.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/assoc-type-lifetime.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/associated-type-alias-impl-trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auto-trait-leakage.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auto-trait-leakage2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auto-trait-leakage2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auto-trait-leakage3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auto-trait-leakage3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auxiliary/coherence_cross_crate_trait_decl.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auxiliary/collect_hidden_types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/auxiliary/foreign-crate.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bound_reduction.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bound_reduction2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bound_reduction2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bounds-are-checked-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bounds-are-checked-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bounds-are-checked.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/bounds-are-checked.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closure_args.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closure_args2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closure_parent_substs.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closure_wf_outlives.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closure_wf_outlives.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closures_in_branches.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/closures_in_branches.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/coherence.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/coherence.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/coherence_cross_crate.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/coherence_cross_crate.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/coherence_generalization.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/collect_hidden_types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/constrain_inputs.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/constrain_inputs.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/constrain_inputs_unsound.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/constrain_inputs_unsound.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_crate_ice.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_crate_ice2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_inference.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/cross_inference_rpit.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/declared_but_never_defined.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/declared_but_never_defined.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/defining-use-submodule.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/destructuring.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses_never_type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses_never_type.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses_never_type2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses_never_type3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_defining_uses_never_type3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_lifetimes_defining_uses.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/different_lifetimes_defining_uses.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/fallback.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/fallback.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/field-types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/future.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/future.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_different_defining_uses.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_different_defining_uses.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use10.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use4.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use4.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use5.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use5.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use6.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use6.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use7.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use8.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use8.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use9.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_duplicate_param_use9.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_lifetime_param.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_nondefining_use.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_nondefining_use.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_not_used.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_not_used.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_underconstrained.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_underconstrained.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_underconstrained2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/generic_underconstrained2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_generic_tait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_same_tait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_same_tait.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_tait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_tait_bound.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds_closure.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds_closure.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds_from_types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_bounds_from_types.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_lifetime_wf_check.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_lifetime_wf_check3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_lifetime_wf_check3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/imply_bounds_from_bounds.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/incomplete-inference.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/incomplete-inference.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/inference-cycle.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/inference-cycle.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-101750.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-52843-closure-constrain.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-52843.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-52843.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53092-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53092-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53092.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53092.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53096.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53096.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53398-cyclic-types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53398-cyclic-types.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53598.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53598.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57611-trait-alias.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57700.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57700.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57807-associated-type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57961.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-57961.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-58662-generator-with-lifetime.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-58662-simplified.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-58887.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-58951-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-58951.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60371.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60371.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60407.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60407.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60564-working.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60564.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60564.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60662.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-60662.stdout (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-63263-closure-return.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-63279.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-63279.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-63355.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-65384.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-65384.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-65918.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-66580-closure-coherence.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-67844-nested-opaque.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-68368-non-defining-use.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-68368-non-defining-use.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-69323.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-70121.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-72793.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74244.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74244.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74280.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74280.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74761-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74761-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74761.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-74761.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-77179.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-77179.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-78450.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-84660-unsoundness.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-84660-unsoundness.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-89686.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-89686.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-89952.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-90400-1.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-90400-1.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-90400-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-90400-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-93411.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-94429.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-94429.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-96572-unconstrained.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-98604.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-98604.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-98608.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/issue-98608.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/missing_lifetime_bound.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/missing_lifetime_bound.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-pass.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/multiple_definitions.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested-tait-inference3.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested_type_alias_impl_trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/nested_type_alias_impl_trait.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/never_reveal_concrete_type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/no_revealing_outside_defining_module.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/not_a_defining_use.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/not_a_defining_use.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/not_well_formed.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/not_well_formed.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/reveal_local.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/reveal_local.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential-2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential-2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential-3.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential-4.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential-4.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self-referential.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/self_implication.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/static-const-types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/structural-match-no-leak.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/structural-match-no-leak.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/structural-match.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/structural-match.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-dyn.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-impl-trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-fns.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-sized.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-struct.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-tuple.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-impl-trait2.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type_of_a_let.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/type_of_a_let.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/unbounded_opaque_type.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/underconstrained_generic.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/underconstrained_generic.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/underconstrained_lifetime.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/underconstrained_lifetime.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/unused_generic_param.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/weird-return-types.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/wf-check-fn-def.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/wf-check-fn-def.stderr (100%) rename {src/test => tests}/ui/type-alias-impl-trait/wf-check-fn-ptrs.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/wf_check_closures.rs (100%) rename {src/test => tests}/ui/type-alias-impl-trait/wf_check_closures.stderr (100%) rename {src/test => tests}/ui/type-alias/issue-14933.rs (100%) rename {src/test => tests}/ui/type-alias/issue-37515.rs (100%) rename {src/test => tests}/ui/type-alias/issue-37515.stderr (100%) rename {src/test => tests}/ui/type-alias/issue-62263-self-in-atb.rs (100%) rename {src/test => tests}/ui/type-alias/issue-62263-self-in-atb.stderr (100%) rename {src/test => tests}/ui/type-alias/issue-62305-self-assoc-ty.rs (100%) rename {src/test => tests}/ui/type-alias/issue-62305-self-assoc-ty.stderr (100%) rename {src/test => tests}/ui/type-alias/issue-62364-self-ty-arg.rs (100%) rename {src/test => tests}/ui/type-alias/issue-62364-self-ty-arg.stderr (100%) rename {src/test => tests}/ui/type-id-higher-rank-2.rs (100%) rename {src/test => tests}/ui/type-inference/issue-30225.rs (100%) rename {src/test => tests}/ui/type-inference/issue-30225.stderr (100%) rename {src/test => tests}/ui/type-inference/or_else-multiple-type-params.rs (100%) rename {src/test => tests}/ui/type-inference/or_else-multiple-type-params.stderr (100%) rename {src/test => tests}/ui/type-inference/sort_by_key.rs (100%) rename {src/test => tests}/ui/type-inference/sort_by_key.stderr (100%) rename {src/test => tests}/ui/type-inference/unbounded-associated-type.rs (100%) rename {src/test => tests}/ui/type-inference/unbounded-associated-type.stderr (100%) rename {src/test => tests}/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.rs (100%) rename {src/test => tests}/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.stderr (100%) rename {src/test => tests}/ui/type-inference/unbounded-type-param-in-fn.rs (100%) rename {src/test => tests}/ui/type-inference/unbounded-type-param-in-fn.stderr (100%) rename {src/test => tests}/ui/type-namespace.rs (100%) rename {src/test => tests}/ui/type-param-constraints.rs (100%) rename {src/test => tests}/ui/type-param.rs (100%) rename {src/test => tests}/ui/type-ptr.rs (100%) rename {src/test => tests}/ui/type-use-i1-versus-i8.rs (100%) rename {src/test => tests}/ui/type/ascription/issue-34255-1.rs (100%) rename {src/test => tests}/ui/type/ascription/issue-34255-1.stderr (100%) rename {src/test => tests}/ui/type/ascription/issue-47666.fixed (100%) rename {src/test => tests}/ui/type/ascription/issue-47666.rs (100%) rename {src/test => tests}/ui/type/ascription/issue-47666.stderr (100%) rename {src/test => tests}/ui/type/ascription/issue-54516.fixed (100%) rename {src/test => tests}/ui/type/ascription/issue-54516.rs (100%) rename {src/test => tests}/ui/type/ascription/issue-54516.stderr (100%) rename {src/test => tests}/ui/type/ascription/issue-60933.fixed (100%) rename {src/test => tests}/ui/type/ascription/issue-60933.rs (100%) rename {src/test => tests}/ui/type/ascription/issue-60933.stderr (100%) rename {src/test => tests}/ui/type/auxiliary/crate_a1.rs (100%) rename {src/test => tests}/ui/type/auxiliary/crate_a2.rs (100%) rename {src/test => tests}/ui/type/binding-assigned-block-without-tail-expression.rs (100%) rename {src/test => tests}/ui/type/binding-assigned-block-without-tail-expression.stderr (100%) rename {src/test => tests}/ui/type/closure-with-wrong-borrows.rs (100%) rename {src/test => tests}/ui/type/closure-with-wrong-borrows.stderr (100%) rename {src/test => tests}/ui/type/issue-100584.rs (100%) rename {src/test => tests}/ui/type/issue-100584.stderr (100%) rename {src/test => tests}/ui/type/issue-101866.rs (100%) rename {src/test => tests}/ui/type/issue-101866.stderr (100%) rename {src/test => tests}/ui/type/issue-102598.rs (100%) rename {src/test => tests}/ui/type/issue-102598.stderr (100%) rename {src/test => tests}/ui/type/issue-103271.rs (100%) rename {src/test => tests}/ui/type/issue-103271.stderr (100%) rename {src/test => tests}/ui/type/issue-58355.rs (100%) rename {src/test => tests}/ui/type/issue-58355.stderr (100%) rename {src/test => tests}/ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs (100%) rename {src/test => tests}/ui/type/issue-67690-type-alias-bound-diagnostic-crash.stderr (100%) rename {src/test => tests}/ui/type/issue-91268.rs (100%) rename {src/test => tests}/ui/type/issue-91268.stderr (100%) rename {src/test => tests}/ui/type/issue-94187-verbose-type-name.rs (100%) rename {src/test => tests}/ui/type/missing-let-in-binding.fixed (100%) rename {src/test => tests}/ui/type/missing-let-in-binding.rs (100%) rename {src/test => tests}/ui/type/missing-let-in-binding.stderr (100%) rename {src/test => tests}/ui/type/type-alias-bounds.rs (100%) rename {src/test => tests}/ui/type/type-alias-bounds.stderr (100%) rename {src/test => tests}/ui/type/type-annotation-needed.rs (100%) rename {src/test => tests}/ui/type/type-annotation-needed.stderr (100%) rename {src/test => tests}/ui/type/type-arg-out-of-scope.rs (100%) rename {src/test => tests}/ui/type/type-arg-out-of-scope.stderr (100%) rename {src/test => tests}/ui/type/type-ascription-instead-of-initializer.rs (100%) rename {src/test => tests}/ui/type/type-ascription-instead-of-initializer.stderr (100%) rename {src/test => tests}/ui/type/type-ascription-instead-of-statement-end.rs (100%) rename {src/test => tests}/ui/type/type-ascription-instead-of-statement-end.stderr (100%) rename {src/test => tests}/ui/type/type-ascription-precedence.rs (100%) rename {src/test => tests}/ui/type/type-ascription-precedence.stderr (100%) rename {src/test => tests}/ui/type/type-ascription-soundness.rs (100%) rename {src/test => tests}/ui/type/type-ascription-soundness.stderr (100%) rename {src/test => tests}/ui/type/type-ascription-with-fn-call.fixed (100%) rename {src/test => tests}/ui/type/type-ascription-with-fn-call.rs (100%) rename {src/test => tests}/ui/type/type-ascription-with-fn-call.stderr (100%) rename {src/test => tests}/ui/type/type-ascription.rs (100%) rename {src/test => tests}/ui/type/type-check-defaults.rs (100%) rename {src/test => tests}/ui/type/type-check-defaults.stderr (100%) rename {src/test => tests}/ui/type/type-check/assignment-expected-bool.rs (100%) rename {src/test => tests}/ui/type/type-check/assignment-expected-bool.stderr (100%) rename {src/test => tests}/ui/type/type-check/assignment-in-if.rs (100%) rename {src/test => tests}/ui/type/type-check/assignment-in-if.stderr (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_array.rs (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_array.stderr (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_vec.rs (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_vec.stderr (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.rs (100%) rename {src/test => tests}/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.stderr (100%) rename {src/test => tests}/ui/type/type-check/issue-22897.rs (100%) rename {src/test => tests}/ui/type/type-check/issue-22897.stderr (100%) rename {src/test => tests}/ui/type/type-check/issue-40294.rs (100%) rename {src/test => tests}/ui/type/type-check/issue-40294.stderr (100%) rename {src/test => tests}/ui/type/type-check/issue-41314.rs (100%) rename {src/test => tests}/ui/type/type-check/issue-41314.stderr (100%) rename {src/test => tests}/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs (100%) rename {src/test => tests}/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.stderr (100%) rename {src/test => tests}/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs (100%) rename {src/test => tests}/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.stderr (100%) rename {src/test => tests}/ui/type/type-check/missing_trait_impl.rs (100%) rename {src/test => tests}/ui/type/type-check/missing_trait_impl.stderr (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference-2.rs (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference-2.stderr (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference-3.fixed (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference-3.rs (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference-3.stderr (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference.fixed (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference.rs (100%) rename {src/test => tests}/ui/type/type-check/point-at-inference.stderr (100%) rename {src/test => tests}/ui/type/type-check/unknown_type_for_closure.rs (100%) rename {src/test => tests}/ui/type/type-check/unknown_type_for_closure.stderr (100%) rename {src/test => tests}/ui/type/type-dependent-def-issue-49241.rs (100%) rename {src/test => tests}/ui/type/type-dependent-def-issue-49241.stderr (100%) rename {src/test => tests}/ui/type/type-error-break-tail.rs (100%) rename {src/test => tests}/ui/type/type-error-break-tail.stderr (100%) rename {src/test => tests}/ui/type/type-mismatch-multiple.rs (100%) rename {src/test => tests}/ui/type/type-mismatch-multiple.stderr (100%) rename {src/test => tests}/ui/type/type-mismatch-same-crate-name.rs (100%) rename {src/test => tests}/ui/type/type-mismatch-same-crate-name.stderr (100%) rename {src/test => tests}/ui/type/type-mismatch.rs (100%) rename {src/test => tests}/ui/type/type-mismatch.stderr (100%) rename {src/test => tests}/ui/type/type-parameter-defaults-referencing-Self-ppaux.rs (100%) rename {src/test => tests}/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr (100%) rename {src/test => tests}/ui/type/type-parameter-defaults-referencing-Self.rs (100%) rename {src/test => tests}/ui/type/type-parameter-defaults-referencing-Self.stderr (100%) rename {src/test => tests}/ui/type/type-parameter-names.rs (100%) rename {src/test => tests}/ui/type/type-parameter-names.stderr (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-1.rs (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-1.stderr (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-2.rs (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-2.stderr (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-3.rs (100%) rename {src/test => tests}/ui/type/type-params-in-different-spaces-3.stderr (100%) rename {src/test => tests}/ui/type/type-path-err-node-types.rs (100%) rename {src/test => tests}/ui/type/type-path-err-node-types.stderr (100%) rename {src/test => tests}/ui/type/type-recursive-box-shadowed.rs (100%) rename {src/test => tests}/ui/type/type-recursive-box-shadowed.stderr (100%) rename {src/test => tests}/ui/type/type-recursive.rs (100%) rename {src/test => tests}/ui/type/type-recursive.stderr (100%) rename {src/test => tests}/ui/type/type-shadow.rs (100%) rename {src/test => tests}/ui/type/type-shadow.stderr (100%) rename {src/test => tests}/ui/type/type-unsatisfiable.rs (100%) rename {src/test => tests}/ui/type/type-unsatisfiable.usage.stderr (100%) rename {src/test => tests}/ui/type_length_limit.polonius.stderr (100%) rename {src/test => tests}/ui/type_length_limit.rs (100%) rename {src/test => tests}/ui/type_length_limit.stderr (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-derefmut.fixed (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-derefmut.rs (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-derefmut.stderr (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-mut-ref.fixed (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-mut-ref.rs (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-mut-ref.stderr (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-needs-deref.rs (100%) rename {src/test => tests}/ui/typeck/assign-non-lval-needs-deref.stderr (100%) rename {src/test => tests}/ui/typeck/autoderef-with-param-env-error.rs (100%) rename {src/test => tests}/ui/typeck/autoderef-with-param-env-error.stderr (100%) rename {src/test => tests}/ui/typeck/auxiliary/issue-36708.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/issue-81943-lib.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/tdticc_coherence_lib.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/xcrate-issue-43189-a.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/xcrate-issue-43189-b.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/xcrate-issue-46112-rexport-core.rs (100%) rename {src/test => tests}/ui/typeck/auxiliary/xcrate-issue-61711-b.rs (100%) rename {src/test => tests}/ui/typeck/call-block.rs (100%) rename {src/test => tests}/ui/typeck/call-block.stderr (100%) rename {src/test => tests}/ui/typeck/check-args-on-fn-err-2.rs (100%) rename {src/test => tests}/ui/typeck/check-args-on-fn-err-2.stderr (100%) rename {src/test => tests}/ui/typeck/check-args-on-fn-err.rs (100%) rename {src/test => tests}/ui/typeck/check-args-on-fn-err.stderr (100%) rename {src/test => tests}/ui/typeck/conversion-methods.rs (100%) rename {src/test => tests}/ui/typeck/conversion-methods.stderr (100%) rename {src/test => tests}/ui/typeck/deref-multi.rs (100%) rename {src/test => tests}/ui/typeck/deref-multi.stderr (100%) rename {src/test => tests}/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.rs (100%) rename {src/test => tests}/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.stderr (100%) rename {src/test => tests}/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.rs (100%) rename {src/test => tests}/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.stderr (100%) rename {src/test => tests}/ui/typeck/explain_clone_autoref.rs (100%) rename {src/test => tests}/ui/typeck/explain_clone_autoref.stderr (100%) rename {src/test => tests}/ui/typeck/issue-100164.fixed (100%) rename {src/test => tests}/ui/typeck/issue-100164.rs (100%) rename {src/test => tests}/ui/typeck/issue-100164.stderr (100%) rename {src/test => tests}/ui/typeck/issue-100246.rs (100%) rename {src/test => tests}/ui/typeck/issue-100246.stderr (100%) rename {src/test => tests}/ui/typeck/issue-100285.rs (100%) rename {src/test => tests}/ui/typeck/issue-100285.stderr (100%) rename {src/test => tests}/ui/typeck/issue-103899.rs (100%) rename {src/test => tests}/ui/typeck/issue-10401.rs (100%) rename {src/test => tests}/ui/typeck/issue-10401.stderr (100%) rename {src/test => tests}/ui/typeck/issue-104510-ice.rs (100%) rename {src/test => tests}/ui/typeck/issue-104510-ice.stderr (100%) rename {src/test => tests}/ui/typeck/issue-104513-ice.rs (100%) rename {src/test => tests}/ui/typeck/issue-104513-ice.stderr (100%) rename {src/test => tests}/ui/typeck/issue-104582.rs (100%) rename {src/test => tests}/ui/typeck/issue-104582.stderr (100%) rename {src/test => tests}/ui/typeck/issue-105946.rs (100%) rename {src/test => tests}/ui/typeck/issue-105946.stderr (100%) rename {src/test => tests}/ui/typeck/issue-10969.rs (100%) rename {src/test => tests}/ui/typeck/issue-10969.stderr (100%) rename {src/test => tests}/ui/typeck/issue-13853-2.rs (100%) rename {src/test => tests}/ui/typeck/issue-13853-2.stderr (100%) rename {src/test => tests}/ui/typeck/issue-13853-5.rs (100%) rename {src/test => tests}/ui/typeck/issue-13853-5.stderr (100%) rename {src/test => tests}/ui/typeck/issue-13853.rs (100%) rename {src/test => tests}/ui/typeck/issue-13853.stderr (100%) rename {src/test => tests}/ui/typeck/issue-18937-1.rs (100%) rename {src/test => tests}/ui/typeck/issue-18937.rs (100%) rename {src/test => tests}/ui/typeck/issue-18937.stderr (100%) rename {src/test => tests}/ui/typeck/issue-22375.rs (100%) rename {src/test => tests}/ui/typeck/issue-29124.rs (100%) rename {src/test => tests}/ui/typeck/issue-29124.stderr (100%) rename {src/test => tests}/ui/typeck/issue-31173.rs (100%) rename {src/test => tests}/ui/typeck/issue-31173.stderr (100%) rename {src/test => tests}/ui/typeck/issue-33575.rs (100%) rename {src/test => tests}/ui/typeck/issue-33575.stderr (100%) rename {src/test => tests}/ui/typeck/issue-36708.rs (100%) rename {src/test => tests}/ui/typeck/issue-36708.stderr (100%) rename {src/test => tests}/ui/typeck/issue-43189.rs (100%) rename {src/test => tests}/ui/typeck/issue-43189.stderr (100%) rename {src/test => tests}/ui/typeck/issue-46112.rs (100%) rename {src/test => tests}/ui/typeck/issue-46112.stderr (100%) rename {src/test => tests}/ui/typeck/issue-50687-ice-on-borrow.rs (100%) rename {src/test => tests}/ui/typeck/issue-50687-ice-on-borrow.stderr (100%) rename {src/test => tests}/ui/typeck/issue-52082-type-param-shadows-existing-type.rs (100%) rename {src/test => tests}/ui/typeck/issue-52082-type-param-shadows-existing-type.stderr (100%) rename {src/test => tests}/ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs (100%) rename {src/test => tests}/ui/typeck/issue-57404.rs (100%) rename {src/test => tests}/ui/typeck/issue-57404.stderr (100%) rename {src/test => tests}/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs (100%) rename {src/test => tests}/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.stderr (100%) rename {src/test => tests}/ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs (100%) rename {src/test => tests}/ui/typeck/issue-65611.rs (100%) rename {src/test => tests}/ui/typeck/issue-65611.stderr (100%) rename {src/test => tests}/ui/typeck/issue-67971.rs (100%) rename {src/test => tests}/ui/typeck/issue-67971.stderr (100%) rename {src/test => tests}/ui/typeck/issue-68590-reborrow-through-derefmut.rs (100%) rename {src/test => tests}/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs (100%) rename {src/test => tests}/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.stderr (100%) rename {src/test => tests}/ui/typeck/issue-72225-call-fnmut-through-derefmut.rs (100%) rename {src/test => tests}/ui/typeck/issue-73592-borrow_mut-through-deref.fixed (100%) rename {src/test => tests}/ui/typeck/issue-73592-borrow_mut-through-deref.rs (100%) rename {src/test => tests}/ui/typeck/issue-73592-borrow_mut-through-deref.stderr (100%) rename {src/test => tests}/ui/typeck/issue-74086.rs (100%) rename {src/test => tests}/ui/typeck/issue-74086.stderr (100%) rename {src/test => tests}/ui/typeck/issue-74933.rs (100%) rename {src/test => tests}/ui/typeck/issue-75883.rs (100%) rename {src/test => tests}/ui/typeck/issue-75883.stderr (100%) rename {src/test => tests}/ui/typeck/issue-75889.rs (100%) rename {src/test => tests}/ui/typeck/issue-75889.stderr (100%) rename {src/test => tests}/ui/typeck/issue-79040.rs (100%) rename {src/test => tests}/ui/typeck/issue-79040.stderr (100%) rename {src/test => tests}/ui/typeck/issue-80207-unsized-return.rs (100%) rename {src/test => tests}/ui/typeck/issue-80779.rs (100%) rename {src/test => tests}/ui/typeck/issue-80779.stderr (100%) rename {src/test => tests}/ui/typeck/issue-81293.rs (100%) rename {src/test => tests}/ui/typeck/issue-81293.stderr (100%) rename {src/test => tests}/ui/typeck/issue-81885.rs (100%) rename {src/test => tests}/ui/typeck/issue-81885.stderr (100%) rename {src/test => tests}/ui/typeck/issue-81943.rs (100%) rename {src/test => tests}/ui/typeck/issue-81943.stderr (100%) rename {src/test => tests}/ui/typeck/issue-82772.rs (100%) rename {src/test => tests}/ui/typeck/issue-82772.stderr (100%) rename {src/test => tests}/ui/typeck/issue-83621-placeholder-static-in-extern.rs (100%) rename {src/test => tests}/ui/typeck/issue-83621-placeholder-static-in-extern.stderr (100%) rename {src/test => tests}/ui/typeck/issue-83693.rs (100%) rename {src/test => tests}/ui/typeck/issue-83693.stderr (100%) rename {src/test => tests}/ui/typeck/issue-84160.rs (100%) rename {src/test => tests}/ui/typeck/issue-84160.stderr (100%) rename {src/test => tests}/ui/typeck/issue-84768.rs (100%) rename {src/test => tests}/ui/typeck/issue-84768.stderr (100%) rename {src/test => tests}/ui/typeck/issue-84831.rs (100%) rename {src/test => tests}/ui/typeck/issue-84831.stderr (100%) rename {src/test => tests}/ui/typeck/issue-86721-return-expr-ice.rev1.stderr (100%) rename {src/test => tests}/ui/typeck/issue-86721-return-expr-ice.rev2.stderr (100%) rename {src/test => tests}/ui/typeck/issue-86721-return-expr-ice.rs (100%) rename {src/test => tests}/ui/typeck/issue-87181/empty-tuple-method.rs (100%) rename {src/test => tests}/ui/typeck/issue-87181/empty-tuple-method.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87181/enum-variant.rs (100%) rename {src/test => tests}/ui/typeck/issue-87181/enum-variant.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87181/tuple-field.rs (100%) rename {src/test => tests}/ui/typeck/issue-87181/tuple-field.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87181/tuple-method.rs (100%) rename {src/test => tests}/ui/typeck/issue-87181/tuple-method.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87771-ice-assign-assign-to-bool.rs (100%) rename {src/test => tests}/ui/typeck/issue-87771-ice-assign-assign-to-bool.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs (100%) rename {src/test => tests}/ui/typeck/issue-87872-missing-inaccessible-field-literal.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs (100%) rename {src/test => tests}/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr (100%) rename {src/test => tests}/ui/typeck/issue-87935-unsized-box-expr.rs (100%) rename {src/test => tests}/ui/typeck/issue-87935-unsized-box-expr.stderr (100%) rename {src/test => tests}/ui/typeck/issue-88609.rs (100%) rename {src/test => tests}/ui/typeck/issue-88643.rs (100%) rename {src/test => tests}/ui/typeck/issue-88643.stderr (100%) rename {src/test => tests}/ui/typeck/issue-88803-call-expr-method.fixed (100%) rename {src/test => tests}/ui/typeck/issue-88803-call-expr-method.rs (100%) rename {src/test => tests}/ui/typeck/issue-88803-call-expr-method.stderr (100%) rename {src/test => tests}/ui/typeck/issue-88844.rs (100%) rename {src/test => tests}/ui/typeck/issue-88844.stderr (100%) rename {src/test => tests}/ui/typeck/issue-89044-wrapped-expr-method.fixed (100%) rename {src/test => tests}/ui/typeck/issue-89044-wrapped-expr-method.rs (100%) rename {src/test => tests}/ui/typeck/issue-89044-wrapped-expr-method.stderr (100%) rename {src/test => tests}/ui/typeck/issue-89275.rs (100%) rename {src/test => tests}/ui/typeck/issue-89275.stderr (100%) rename {src/test => tests}/ui/typeck/issue-89806.rs (100%) rename {src/test => tests}/ui/typeck/issue-89806.stderr (100%) rename {src/test => tests}/ui/typeck/issue-89856.rs (100%) rename {src/test => tests}/ui/typeck/issue-89856.stderr (100%) rename {src/test => tests}/ui/typeck/issue-89935.rs (100%) rename {src/test => tests}/ui/typeck/issue-90101.rs (100%) rename {src/test => tests}/ui/typeck/issue-90101.stderr (100%) rename {src/test => tests}/ui/typeck/issue-90164.rs (100%) rename {src/test => tests}/ui/typeck/issue-90164.stderr (100%) rename {src/test => tests}/ui/typeck/issue-90319.rs (100%) rename {src/test => tests}/ui/typeck/issue-90319.stderr (100%) rename {src/test => tests}/ui/typeck/issue-90483-inaccessible-field-adjustment.rs (100%) rename {src/test => tests}/ui/typeck/issue-90483-inaccessible-field-adjustment.stderr (100%) rename {src/test => tests}/ui/typeck/issue-90804-incorrect-reference-suggestion.rs (100%) rename {src/test => tests}/ui/typeck/issue-90804-incorrect-reference-suggestion.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91210-ptr-method.fixed (100%) rename {src/test => tests}/ui/typeck/issue-91210-ptr-method.rs (100%) rename {src/test => tests}/ui/typeck/issue-91210-ptr-method.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91267.rs (100%) rename {src/test => tests}/ui/typeck/issue-91267.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91328.fixed (100%) rename {src/test => tests}/ui/typeck/issue-91328.rs (100%) rename {src/test => tests}/ui/typeck/issue-91328.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91334.rs (100%) rename {src/test => tests}/ui/typeck/issue-91334.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91450-inner-ty-error.rs (100%) rename {src/test => tests}/ui/typeck/issue-91450-inner-ty-error.stderr (100%) rename {src/test => tests}/ui/typeck/issue-91633.rs (100%) rename {src/test => tests}/ui/typeck/issue-92481.rs (100%) rename {src/test => tests}/ui/typeck/issue-92481.stderr (100%) rename {src/test => tests}/ui/typeck/issue-93486.rs (100%) rename {src/test => tests}/ui/typeck/issue-93486.stderr (100%) rename {src/test => tests}/ui/typeck/issue-96530.rs (100%) rename {src/test => tests}/ui/typeck/issue-96530.stderr (100%) rename {src/test => tests}/ui/typeck/issue-96738.rs (100%) rename {src/test => tests}/ui/typeck/issue-96738.stderr (100%) rename {src/test => tests}/ui/typeck/issue-98260.rs (100%) rename {src/test => tests}/ui/typeck/issue-98260.stderr (100%) rename {src/test => tests}/ui/typeck/issue-98982.rs (100%) rename {src/test => tests}/ui/typeck/issue-98982.stderr (100%) rename {src/test => tests}/ui/typeck/missing-private-fields-in-struct-literal.rs (100%) rename {src/test => tests}/ui/typeck/missing-private-fields-in-struct-literal.stderr (100%) rename {src/test => tests}/ui/typeck/no-type-for-node-ice.rs (100%) rename {src/test => tests}/ui/typeck/no-type-for-node-ice.stderr (100%) rename {src/test => tests}/ui/typeck/nonexistent-field-not-ambiguous.rs (100%) rename {src/test => tests}/ui/typeck/nonexistent-field-not-ambiguous.stderr (100%) rename {src/test => tests}/ui/typeck/path-to-method-sugg-unresolved-expr.rs (100%) rename {src/test => tests}/ui/typeck/path-to-method-sugg-unresolved-expr.stderr (100%) rename {src/test => tests}/ui/typeck/point-at-type-param-in-path-expr.rs (100%) rename {src/test => tests}/ui/typeck/point-at-type-param-in-path-expr.stderr (100%) rename {src/test => tests}/ui/typeck/point-at-type-parameter-definition.rs (100%) rename {src/test => tests}/ui/typeck/point-at-type-parameter-definition.stderr (100%) rename {src/test => tests}/ui/typeck/prim-with-args.fixed (100%) rename {src/test => tests}/ui/typeck/prim-with-args.rs (100%) rename {src/test => tests}/ui/typeck/prim-with-args.stderr (100%) rename {src/test => tests}/ui/typeck/project-cache-issue-37154.rs (100%) rename {src/test => tests}/ui/typeck/quiet-type-err-let-binding.rs (100%) rename {src/test => tests}/ui/typeck/quiet-type-err-let-binding.stderr (100%) rename {src/test => tests}/ui/typeck/remove-extra-argument.fixed (100%) rename {src/test => tests}/ui/typeck/remove-extra-argument.rs (100%) rename {src/test => tests}/ui/typeck/remove-extra-argument.stderr (100%) rename {src/test => tests}/ui/typeck/return_type_containing_closure.rs (100%) rename {src/test => tests}/ui/typeck/return_type_containing_closure.stderr (100%) rename {src/test => tests}/ui/typeck/slow-lhs-suggestion.rs (100%) rename {src/test => tests}/ui/typeck/slow-lhs-suggestion.stderr (100%) rename {src/test => tests}/ui/typeck/struct-enum-wrong-args.rs (100%) rename {src/test => tests}/ui/typeck/struct-enum-wrong-args.stderr (100%) rename {src/test => tests}/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.fixed (100%) rename {src/test => tests}/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.rs (100%) rename {src/test => tests}/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.stderr (100%) rename {src/test => tests}/ui/typeck/type-placeholder-fn-in-const.rs (100%) rename {src/test => tests}/ui/typeck/type-placeholder-fn-in-const.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-builtin-bound-type-parameters.rs (100%) rename {src/test => tests}/ui/typeck/typeck-builtin-bound-type-parameters.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-cast-pointer-to-float.rs (100%) rename {src/test => tests}/ui/typeck/typeck-cast-pointer-to-float.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-assoc-type.fixed (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-assoc-type.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-assoc-type.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-negation-send.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-negation-send.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-negation-sync.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-negation-sync.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-send-param.rs (100%) rename {src/test => tests}/ui/typeck/typeck-default-trait-impl-send-param.stderr (100%) rename {src/test => tests}/ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs (100%) rename {src/test => tests}/ui/typeck/typeck-unsafe-always-share.rs (100%) rename {src/test => tests}/ui/typeck/typeck-unsafe-always-share.stderr (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_1.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_item.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_item.stderr (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_item_help.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_item_help.stderr (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_lifetime_1.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_lifetime_1.stderr (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_lifetime_2.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_lifetime_2.stderr (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_mismatch.rs (100%) rename {src/test => tests}/ui/typeck/typeck_type_placeholder_mismatch.stderr (100%) rename {src/test => tests}/ui/typeck/ufcs-type-params.rs (100%) rename {src/test => tests}/ui/typeck/unify-return-ty.rs (100%) rename {src/test => tests}/ui/typeck/while-loop-block-cond.rs (100%) rename {src/test => tests}/ui/typeck/while-loop-block-cond.stderr (100%) rename {src/test => tests}/ui/typeid-intrinsic.rs (100%) rename {src/test => tests}/ui/typeof/issue-100183.rs (100%) rename {src/test => tests}/ui/typeof/issue-100183.stderr (100%) rename {src/test => tests}/ui/typeof/issue-29184.rs (100%) rename {src/test => tests}/ui/typeof/issue-29184.stderr (100%) rename {src/test => tests}/ui/typeof/issue-42060.rs (100%) rename {src/test => tests}/ui/typeof/issue-42060.stderr (100%) rename {src/test => tests}/ui/typeof/type_mismatch.rs (100%) rename {src/test => tests}/ui/typeof/type_mismatch.stderr (100%) rename {src/test => tests}/ui/typestate-multi-decl.rs (100%) rename {src/test => tests}/ui/ufcs-polymorphic-paths.rs (100%) rename {src/test => tests}/ui/ufcs/ufcs-explicit-self-bad.rs (100%) rename {src/test => tests}/ui/ufcs/ufcs-explicit-self-bad.stderr (100%) rename {src/test => tests}/ui/ufcs/ufcs-partially-resolved.rs (100%) rename {src/test => tests}/ui/ufcs/ufcs-partially-resolved.stderr (100%) rename {src/test => tests}/ui/ufcs/ufcs-qpath-missing-params.rs (100%) rename {src/test => tests}/ui/ufcs/ufcs-qpath-missing-params.stderr (100%) rename {src/test => tests}/ui/ufcs/ufcs-qpath-self-mismatch.rs (100%) rename {src/test => tests}/ui/ufcs/ufcs-qpath-self-mismatch.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/auxiliary/unboxed-closures-cross-crate.rs (100%) rename {src/test => tests}/ui/unboxed-closures/issue-18652.rs (100%) rename {src/test => tests}/ui/unboxed-closures/issue-18661.rs (100%) rename {src/test => tests}/ui/unboxed-closures/issue-30906.rs (100%) rename {src/test => tests}/ui/unboxed-closures/issue-30906.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/issue-53448.rs (100%) rename {src/test => tests}/ui/unboxed-closures/non-tupled-arg-mismatch.rs (100%) rename {src/test => tests}/ui/unboxed-closures/non-tupled-arg-mismatch.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/non-tupled-call.rs (100%) rename {src/test => tests}/ui/unboxed-closures/non-tupled-call.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/type-id-higher-rank.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-feature-gate.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-feature-gate.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-illegal-move.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-illegal-move.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-immutable-capture.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-immutable-capture.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-region.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-region.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-default.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-default.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-equiv.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-equiv.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-region.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-region.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-all-traits.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-blanket-fn-mut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-blanket-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-borrow-conflict.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-borrow-conflict.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-boxed.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-by-ref.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-call-fn-autoderef.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-call-sugar-autoderef.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-call-sugar-object-autoderef.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-call-sugar-object.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-counter-not-moved.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-counter-not-moved.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-cross-crate.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-direct-sugary-call.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-drop.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-extern-fn-hr.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-extern-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-fn-as-fnmut-and-fnonce.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-fnmut-as-fnonce.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-generic.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-bound.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-object-type.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-arg-types-w-bound-regs-from-expected-bound.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-explicit-call-early.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut-move.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnmut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce-move.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-fnonce.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-kind.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-recursive-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-infer-upvar.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-manual-impl.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-monomorphization.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-move-from-projection-issue-30046.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-move-mutable.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-move-mutable.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-move-some-upvars-in-by-ref-closure.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-mutate-upvar.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-mutate-upvar.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-prelude.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-simple.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-single-word-env.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-static-call-fn-once.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-sugar-object.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-type-mismatch.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-unique-type-id.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-wrong-abi.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.rs (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr (100%) rename {src/test => tests}/ui/unboxed-closures/unboxed-closures-zero-args.rs (100%) rename {src/test => tests}/ui/unconstrained-none.rs (100%) rename {src/test => tests}/ui/unconstrained-none.stderr (100%) rename {src/test => tests}/ui/unconstrained-ref.rs (100%) rename {src/test => tests}/ui/unconstrained-ref.stderr (100%) rename {src/test => tests}/ui/underscore-ident-matcher.rs (100%) rename {src/test => tests}/ui/underscore-ident-matcher.stderr (100%) rename {src/test => tests}/ui/underscore-imports/auxiliary/duplicate.rs (100%) rename {src/test => tests}/ui/underscore-imports/auxiliary/underscore-imports.rs (100%) rename {src/test => tests}/ui/underscore-imports/basic.rs (100%) rename {src/test => tests}/ui/underscore-imports/basic.stderr (100%) rename {src/test => tests}/ui/underscore-imports/cycle.rs (100%) rename {src/test => tests}/ui/underscore-imports/duplicate.rs (100%) rename {src/test => tests}/ui/underscore-imports/hygiene-2.rs (100%) rename {src/test => tests}/ui/underscore-imports/hygiene.rs (100%) rename {src/test => tests}/ui/underscore-imports/intercrate.rs (100%) rename {src/test => tests}/ui/underscore-imports/macro-expanded.rs (100%) rename {src/test => tests}/ui/underscore-imports/shadow.rs (100%) rename {src/test => tests}/ui/underscore-imports/shadow.stderr (100%) rename {src/test => tests}/ui/underscore-imports/unused-2018.rs (100%) rename {src/test => tests}/ui/underscore-imports/unused-2018.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/dyn-trait-underscore-in-struct.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/dyn-trait-underscore-in-struct.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/dyn-trait-underscore.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/dyn-trait-underscore.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/in-binder.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/in-binder.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/in-fn-return-illegal.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/in-fn-return-illegal.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/in-struct.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/in-struct.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-lifetime-binders.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-lifetime-binders.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-outlives-bounds.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/underscore-outlives-bounds.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-region.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-underscore.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clauses.rs (100%) rename {src/test => tests}/ui/underscore-lifetime/where-clauses.stderr (100%) rename {src/test => tests}/ui/underscore-lifetimes.rs (100%) rename {src/test => tests}/ui/underscore-method-after-integer.rs (100%) rename {src/test => tests}/ui/unevaluated_fixed_size_array_len.rs (100%) rename {src/test => tests}/ui/unevaluated_fixed_size_array_len.stderr (100%) rename {src/test => tests}/ui/uniform-paths/auxiliary/issue-53691.rs (100%) rename {src/test => tests}/ui/uniform-paths/basic-nested.rs (100%) rename {src/test => tests}/ui/uniform-paths/basic.rs (100%) rename {src/test => tests}/ui/uniform-paths/issue-53691.rs (100%) rename {src/test => tests}/ui/uniform-paths/macros-nested.rs (100%) rename {src/test => tests}/ui/uniform-paths/macros.rs (100%) rename {src/test => tests}/ui/uniform-paths/same-crate.rs (100%) rename {src/test => tests}/ui/uninhabited/exhaustive-wo-nevertype-issue-51221.rs (100%) rename {src/test => tests}/ui/uninhabited/privately-uninhabited-dead-code.rs (100%) rename {src/test => tests}/ui/uninhabited/privately-uninhabited-mir-call.rs (100%) rename {src/test => tests}/ui/uninhabited/privately-uninhabited-mir-call.stderr (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-enum-cast.rs (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-irrefutable.rs (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-irrefutable.stderr (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-matches-feature-gated.rs (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-matches-feature-gated.stderr (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-patterns.rs (100%) rename {src/test => tests}/ui/uninhabited/uninhabited-patterns.stderr (100%) rename {src/test => tests}/ui/uninit-empty-types.rs (100%) rename {src/test => tests}/ui/union/auxiliary/union.rs (100%) rename {src/test => tests}/ui/union/field_checks.rs (100%) rename {src/test => tests}/ui/union/field_checks.stderr (100%) rename {src/test => tests}/ui/union/issue-41073.rs (100%) rename {src/test => tests}/ui/union/issue-41073.stderr (100%) rename {src/test => tests}/ui/union/issue-81199.rs (100%) rename {src/test => tests}/ui/union/issue-81199.stderr (100%) rename {src/test => tests}/ui/union/issue-99375.rs (100%) rename {src/test => tests}/ui/union/union-align.rs (100%) rename {src/test => tests}/ui/union/union-backcomp.rs (100%) rename {src/test => tests}/ui/union/union-basic.rs (100%) rename {src/test => tests}/ui/union/union-borrow-move-parent-sibling.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-borrow-move-parent-sibling.rs (100%) rename {src/test => tests}/ui/union/union-borrow-move-parent-sibling.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-const-codegen.rs (100%) rename {src/test => tests}/ui/union/union-const-eval-field.rs (100%) rename {src/test => tests}/ui/union/union-const-eval.rs (100%) rename {src/test => tests}/ui/union/union-const-pat.rs (100%) rename {src/test => tests}/ui/union/union-const-pat.stderr (100%) rename {src/test => tests}/ui/union/union-copy.rs (100%) rename {src/test => tests}/ui/union/union-copy.stderr (100%) rename {src/test => tests}/ui/union/union-deref.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-deref.rs (100%) rename {src/test => tests}/ui/union/union-deref.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-derive-clone.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-derive-clone.rs (100%) rename {src/test => tests}/ui/union/union-derive-clone.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-derive-eq.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-derive-eq.rs (100%) rename {src/test => tests}/ui/union/union-derive-eq.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-derive-rpass.rs (100%) rename {src/test => tests}/ui/union/union-derive.rs (100%) rename {src/test => tests}/ui/union/union-derive.stderr (100%) rename {src/test => tests}/ui/union/union-drop-assign.rs (100%) rename {src/test => tests}/ui/union/union-drop.rs (100%) rename {src/test => tests}/ui/union/union-empty.rs (100%) rename {src/test => tests}/ui/union/union-empty.stderr (100%) rename {src/test => tests}/ui/union/union-fields-1.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-fields-1.rs (100%) rename {src/test => tests}/ui/union/union-fields-1.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-fields-2.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-fields-2.rs (100%) rename {src/test => tests}/ui/union/union-fields-2.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-generic-rpass.rs (100%) rename {src/test => tests}/ui/union/union-generic.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-generic.rs (100%) rename {src/test => tests}/ui/union/union-generic.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-inherent-method.rs (100%) rename {src/test => tests}/ui/union/union-lint-dead-code.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-lint-dead-code.rs (100%) rename {src/test => tests}/ui/union/union-lint-dead-code.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-macro.rs (100%) rename {src/test => tests}/ui/union/union-manuallydrop-rpass.rs (100%) rename {src/test => tests}/ui/union/union-move.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-move.rs (100%) rename {src/test => tests}/ui/union/union-move.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-nodrop.rs (100%) rename {src/test => tests}/ui/union/union-nonrepresentable.rs (100%) rename {src/test => tests}/ui/union/union-nonrepresentable.stderr (100%) rename {src/test => tests}/ui/union/union-nonzero.rs (100%) rename {src/test => tests}/ui/union/union-overwrite.rs (100%) rename {src/test => tests}/ui/union/union-packed.rs (100%) rename {src/test => tests}/ui/union/union-pat-refutability.rs (100%) rename {src/test => tests}/ui/union/union-repr-c.rs (100%) rename {src/test => tests}/ui/union/union-repr-c.stderr (100%) rename {src/test => tests}/ui/union/union-sized-field.rs (100%) rename {src/test => tests}/ui/union/union-sized-field.stderr (100%) rename {src/test => tests}/ui/union/union-suggest-field.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-suggest-field.rs (100%) rename {src/test => tests}/ui/union/union-suggest-field.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-trait-impl.rs (100%) rename {src/test => tests}/ui/union/union-transmute.rs (100%) rename {src/test => tests}/ui/union/union-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/union/union-unsafe.rs (100%) rename {src/test => tests}/ui/union/union-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/union/union-unsized.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-unsized.rs (100%) rename {src/test => tests}/ui/union/union-unsized.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-with-drop-fields.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/union/union-with-drop-fields.rs (100%) rename {src/test => tests}/ui/union/union-with-drop-fields.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unique-object-noncopyable.rs (100%) rename {src/test => tests}/ui/unique-object-noncopyable.stderr (100%) rename {src/test => tests}/ui/unique-pinned-nocopy.rs (100%) rename {src/test => tests}/ui/unique-pinned-nocopy.stderr (100%) rename {src/test => tests}/ui/unique/unique-assign-copy.rs (100%) rename {src/test => tests}/ui/unique/unique-assign-drop.rs (100%) rename {src/test => tests}/ui/unique/unique-assign-generic.rs (100%) rename {src/test => tests}/ui/unique/unique-assign.rs (100%) rename {src/test => tests}/ui/unique/unique-autoderef-field.rs (100%) rename {src/test => tests}/ui/unique/unique-autoderef-index.rs (100%) rename {src/test => tests}/ui/unique/unique-cmp.rs (100%) rename {src/test => tests}/ui/unique/unique-containing-tag.rs (100%) rename {src/test => tests}/ui/unique/unique-create.rs (100%) rename {src/test => tests}/ui/unique/unique-decl-init-copy.rs (100%) rename {src/test => tests}/ui/unique/unique-decl-init.rs (100%) rename {src/test => tests}/ui/unique/unique-decl-move.rs (100%) rename {src/test => tests}/ui/unique/unique-decl.rs (100%) rename {src/test => tests}/ui/unique/unique-deref.rs (100%) rename {src/test => tests}/ui/unique/unique-destructure.rs (100%) rename {src/test => tests}/ui/unique/unique-drop-complex.rs (100%) rename {src/test => tests}/ui/unique/unique-ffi-symbols.rs (100%) rename {src/test => tests}/ui/unique/unique-fn-arg-move.rs (100%) rename {src/test => tests}/ui/unique/unique-fn-arg-mut.rs (100%) rename {src/test => tests}/ui/unique/unique-fn-arg.rs (100%) rename {src/test => tests}/ui/unique/unique-fn-ret.rs (100%) rename {src/test => tests}/ui/unique/unique-generic-assign.rs (100%) rename {src/test => tests}/ui/unique/unique-in-tag.rs (100%) rename {src/test => tests}/ui/unique/unique-in-vec-copy.rs (100%) rename {src/test => tests}/ui/unique/unique-in-vec.rs (100%) rename {src/test => tests}/ui/unique/unique-init.rs (100%) rename {src/test => tests}/ui/unique/unique-kinds.rs (100%) rename {src/test => tests}/ui/unique/unique-log.rs (100%) rename {src/test => tests}/ui/unique/unique-match-discrim.rs (100%) rename {src/test => tests}/ui/unique/unique-move-drop.rs (100%) rename {src/test => tests}/ui/unique/unique-move-temp.rs (100%) rename {src/test => tests}/ui/unique/unique-move.rs (100%) rename {src/test => tests}/ui/unique/unique-mutable.rs (100%) rename {src/test => tests}/ui/unique/unique-object-move.rs (100%) rename {src/test => tests}/ui/unique/unique-pat-2.rs (100%) rename {src/test => tests}/ui/unique/unique-pat-3.rs (100%) rename {src/test => tests}/ui/unique/unique-pat.rs (100%) rename {src/test => tests}/ui/unique/unique-rec.rs (100%) rename {src/test => tests}/ui/unique/unique-send-2.rs (100%) rename {src/test => tests}/ui/unique/unique-send.rs (100%) rename {src/test => tests}/ui/unique/unique-swap.rs (100%) rename {src/test => tests}/ui/unit.rs (100%) rename {src/test => tests}/ui/unknown-language-item.rs (100%) rename {src/test => tests}/ui/unknown-language-item.stderr (100%) rename {src/test => tests}/ui/unknown-lint-tool-name.rs (100%) rename {src/test => tests}/ui/unknown-lint-tool-name.stderr (100%) rename {src/test => tests}/ui/unknown-llvm-arg.rs (100%) rename {src/test => tests}/ui/unknown-llvm-arg.stderr (100%) rename {src/test => tests}/ui/unknown-tool-name.rs (100%) rename {src/test => tests}/ui/unknown-tool-name.stderr (100%) rename {src/test => tests}/ui/unknown-unstable-lints/allow-unknown-unstable-lint-command-line.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/allow-unknown-unstable-lint-inline.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/deny-unstable-lint-command-line.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/deny-unstable-lint-command-line.stderr (100%) rename {src/test => tests}/ui/unknown-unstable-lints/deny-unstable-lint-inline.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/deny-unstable-lint-inline.stderr (100%) rename {src/test => tests}/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.stderr (100%) rename {src/test => tests}/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.rs (100%) rename {src/test => tests}/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.stderr (100%) rename {src/test => tests}/ui/unnamed_argument_mode.rs (100%) rename {src/test => tests}/ui/unop-move-semantics.rs (100%) rename {src/test => tests}/ui/unop-move-semantics.stderr (100%) rename {src/test => tests}/ui/unop-neg-bool.rs (100%) rename {src/test => tests}/ui/unop-neg-bool.stderr (100%) rename {src/test => tests}/ui/unpretty-expr-fn-arg.rs (100%) rename {src/test => tests}/ui/unpretty-expr-fn-arg.stdout (100%) rename {src/test => tests}/ui/unpretty/avoid-crash.rs (100%) rename {src/test => tests}/ui/unpretty/avoid-crash.stderr (100%) rename {src/test => tests}/ui/unpretty/bad-literal.rs (100%) rename {src/test => tests}/ui/unpretty/bad-literal.stderr (100%) rename {src/test => tests}/ui/unpretty/bad-literal.stdout (100%) rename {src/test => tests}/ui/unpretty/pretty-let-else.rs (100%) rename {src/test => tests}/ui/unpretty/pretty-let-else.stdout (100%) rename {src/test => tests}/ui/unreachable-code-1.rs (100%) rename {src/test => tests}/ui/unreachable-code.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-asterisk-imports.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-asterisk-imports.stderr (100%) rename {src/test => tests}/ui/unresolved/unresolved-candidates.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-candidates.stderr (100%) rename {src/test => tests}/ui/unresolved/unresolved-extern-mod-suggestion.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-extern-mod-suggestion.stderr (100%) rename {src/test => tests}/ui/unresolved/unresolved-import-recovery.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-import-recovery.stderr (100%) rename {src/test => tests}/ui/unresolved/unresolved-import.rs (100%) rename {src/test => tests}/ui/unresolved/unresolved-import.stderr (100%) rename {src/test => tests}/ui/unsafe-fn-called-from-unsafe-blk.rs (100%) rename {src/test => tests}/ui/unsafe-fn-called-from-unsafe-fn.rs (100%) rename {src/test => tests}/ui/unsafe-pointer-assignability.rs (100%) rename {src/test => tests}/ui/unsafe/access_union_field.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/access_union_field.rs (100%) rename {src/test => tests}/ui/unsafe/access_union_field.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/auxiliary/issue-106126.rs (100%) rename {src/test => tests}/ui/unsafe/inline_asm.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/inline_asm.rs (100%) rename {src/test => tests}/ui/unsafe/inline_asm.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-106126-good-path-bug.rs (100%) rename {src/test => tests}/ui/unsafe/issue-3080.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-3080.rs (100%) rename {src/test => tests}/ui/unsafe/issue-3080.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-45087-unreachable-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-45087-unreachable-unsafe.rs (100%) rename {src/test => tests}/ui/unsafe/issue-45087-unreachable-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs (100%) rename {src/test => tests}/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-47412.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-47412.rs (100%) rename {src/test => tests}/ui/unsafe/issue-47412.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs (100%) rename {src/test => tests}/ui/unsafe/issue-87414-query-cycle.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2_const.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2_const.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints2_const.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_const.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_const.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_const.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_match.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_match.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints3_match.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4_const.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4_const.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints4_const.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints_const.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints_const.rs (100%) rename {src/test => tests}/ui/unsafe/ranged_ints_const.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/ranged_ints_macro.rs (100%) rename {src/test => tests}/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs (100%) rename {src/test => tests}/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/union-assignop.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/union-assignop.rs (100%) rename {src/test => tests}/ui/unsafe/union-assignop.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/union-modification.rs (100%) rename {src/test => tests}/ui/unsafe/union.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/union.rs (100%) rename {src/test => tests}/ui/unsafe/union.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/union_access_through_block.rs (100%) rename {src/test => tests}/ui/unsafe/union_destructure.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/union_destructure.rs (100%) rename {src/test => tests}/ui/unsafe/union_wild_or_wild.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-around-compiler-generated-unsafe.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-around-compiler-generated-unsafe.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-around-compiler-generated-unsafe.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-assign.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-assign.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-assign.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-block-without-braces.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-block-without-braces.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-borrow.mirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-borrow.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-borrow.thirunsafeck.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-const-fn.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-const-fn.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-const-fn.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-assign-deref-ptr.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-assign-deref-ptr.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-autoderef.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-autoderef.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-called-from-safe.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-called-from-safe.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-called-from-safe.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-deref-ptr.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-deref-ptr.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-deref-ptr.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-used-as-value.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-used-as-value.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-fn-used-as-value.thir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-not-inherited.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-not-inherited.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-subtyping.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-subtyping.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-trait-impl.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-trait-impl.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-unstable-const-fn.mir.stderr (100%) rename {src/test => tests}/ui/unsafe/unsafe-unstable-const-fn.rs (100%) rename {src/test => tests}/ui/unsafe/unsafe-unstable-const-fn.thir.stderr (100%) rename {src/test => tests}/ui/unsigned-literal-negation.rs (100%) rename {src/test => tests}/ui/unsigned-literal-negation.stderr (100%) rename {src/test => tests}/ui/unsized-locals/autoderef.rs (100%) rename {src/test => tests}/ui/unsized-locals/auxiliary/ufuncs.rs (100%) rename {src/test => tests}/ui/unsized-locals/borrow-after-move.rs (100%) rename {src/test => tests}/ui/unsized-locals/borrow-after-move.stderr (100%) rename {src/test => tests}/ui/unsized-locals/box-fnonce.rs (100%) rename {src/test => tests}/ui/unsized-locals/by-value-trait-object-safety-rpass.rs (100%) rename {src/test => tests}/ui/unsized-locals/by-value-trait-object-safety-withdefault.rs (100%) rename {src/test => tests}/ui/unsized-locals/by-value-trait-object-safety.rs (100%) rename {src/test => tests}/ui/unsized-locals/by-value-trait-object-safety.stderr (100%) rename {src/test => tests}/ui/unsized-locals/double-move.rs (100%) rename {src/test => tests}/ui/unsized-locals/double-move.stderr (100%) rename {src/test => tests}/ui/unsized-locals/issue-30276-feature-flagged.rs (100%) rename {src/test => tests}/ui/unsized-locals/issue-30276-feature-flagged.stderr (100%) rename {src/test => tests}/ui/unsized-locals/issue-30276.rs (100%) rename {src/test => tests}/ui/unsized-locals/issue-30276.stderr (100%) rename {src/test => tests}/ui/unsized-locals/issue-50940-with-feature.rs (100%) rename {src/test => tests}/ui/unsized-locals/issue-50940-with-feature.stderr (100%) rename {src/test => tests}/ui/unsized-locals/issue-50940.rs (100%) rename {src/test => tests}/ui/unsized-locals/issue-50940.stderr (100%) rename {src/test => tests}/ui/unsized-locals/reference-unsized-locals.rs (100%) rename {src/test => tests}/ui/unsized-locals/simple-unsized-locals.rs (100%) rename {src/test => tests}/ui/unsized-locals/suggest-borrow.rs (100%) rename {src/test => tests}/ui/unsized-locals/suggest-borrow.stderr (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs-rpass.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs.stderr (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs2.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs2.stderr (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs3.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-exprs3.stderr (100%) rename {src/test => tests}/ui/unsized-locals/unsized-index.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-locals-using-unsized-fn-params.rs (100%) rename {src/test => tests}/ui/unsized-locals/unsized-locals-using-unsized-fn-params.stderr (100%) rename {src/test => tests}/ui/unsized-locals/unsized-parameters.rs (100%) rename {src/test => tests}/ui/unsized/box-instead-of-dyn-fn.rs (100%) rename {src/test => tests}/ui/unsized/box-instead-of-dyn-fn.stderr (100%) rename {src/test => tests}/ui/unsized/issue-30355.rs (100%) rename {src/test => tests}/ui/unsized/issue-30355.stderr (100%) rename {src/test => tests}/ui/unsized/issue-40231-1.rs (100%) rename {src/test => tests}/ui/unsized/issue-40231-2.rs (100%) rename {src/test => tests}/ui/unsized/issue-71659.rs (100%) rename {src/test => tests}/ui/unsized/issue-71659.stderr (100%) rename {src/test => tests}/ui/unsized/issue-75707.rs (100%) rename {src/test => tests}/ui/unsized/issue-75707.stderr (100%) rename {src/test => tests}/ui/unsized/issue-75899-but-gats.rs (100%) rename {src/test => tests}/ui/unsized/issue-75899.rs (100%) rename {src/test => tests}/ui/unsized/issue-91801.rs (100%) rename {src/test => tests}/ui/unsized/issue-91801.stderr (100%) rename {src/test => tests}/ui/unsized/issue-91803.rs (100%) rename {src/test => tests}/ui/unsized/issue-91803.stderr (100%) rename {src/test => tests}/ui/unsized/issue-97732.rs (100%) rename {src/test => tests}/ui/unsized/maybe-bounds-where-cpass.rs (100%) rename {src/test => tests}/ui/unsized/maybe-bounds-where.rs (100%) rename {src/test => tests}/ui/unsized/maybe-bounds-where.stderr (100%) rename {src/test => tests}/ui/unsized/param-mentioned-by-different-field.rs (100%) rename {src/test => tests}/ui/unsized/param-mentioned-by-different-field.stderr (100%) rename {src/test => tests}/ui/unsized/return-unsized-from-trait-method.rs (100%) rename {src/test => tests}/ui/unsized/return-unsized-from-trait-method.stderr (100%) rename {src/test => tests}/ui/unsized/unchanged-param.rs (100%) rename {src/test => tests}/ui/unsized/unsized-bare-typaram.rs (100%) rename {src/test => tests}/ui/unsized/unsized-bare-typaram.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-enum.rs (100%) rename {src/test => tests}/ui/unsized/unsized-enum.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-enum2.rs (100%) rename {src/test => tests}/ui/unsized/unsized-enum2.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-fn-arg.fixed (100%) rename {src/test => tests}/ui/unsized/unsized-fn-arg.rs (100%) rename {src/test => tests}/ui/unsized/unsized-fn-arg.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-fn-param.rs (100%) rename {src/test => tests}/ui/unsized/unsized-fn-param.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-inherent-impl-self-type.rs (100%) rename {src/test => tests}/ui/unsized/unsized-inherent-impl-self-type.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-struct.rs (100%) rename {src/test => tests}/ui/unsized/unsized-struct.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-trait-impl-self-type.rs (100%) rename {src/test => tests}/ui/unsized/unsized-trait-impl-self-type.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-trait-impl-trait-arg.rs (100%) rename {src/test => tests}/ui/unsized/unsized-trait-impl-trait-arg.stderr (100%) rename {src/test => tests}/ui/unsized/unsized-tuple-impls.rs (100%) rename {src/test => tests}/ui/unsized/unsized.rs (100%) rename {src/test => tests}/ui/unsized/unsized2.rs (100%) rename {src/test => tests}/ui/unsized/unsized3-rpass.rs (100%) rename {src/test => tests}/ui/unsized/unsized3.rs (100%) rename {src/test => tests}/ui/unsized/unsized3.stderr (100%) rename {src/test => tests}/ui/unsized/unsized5.rs (100%) rename {src/test => tests}/ui/unsized/unsized5.stderr (100%) rename {src/test => tests}/ui/unsized/unsized6.rs (100%) rename {src/test => tests}/ui/unsized/unsized6.stderr (100%) rename {src/test => tests}/ui/unsized/unsized7.rs (100%) rename {src/test => tests}/ui/unsized/unsized7.stderr (100%) rename {src/test => tests}/ui/unterminated-comment.rs (100%) rename {src/test => tests}/ui/unterminated-comment.stderr (100%) rename {src/test => tests}/ui/unterminated-nested-comment.rs (100%) rename {src/test => tests}/ui/unterminated-nested-comment.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/auxiliary/bar.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/auxiliary/foo.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-attr.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-attr.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline-json-silent.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline-json-silent.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline-json.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline-json.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/deny-cmdline.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/ignore-pathless-extern.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/libfib.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/libfib.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/lint-group.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/suppress.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/test-use-ok.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/test.mk (100%) rename {src/test => tests}/ui/unused-crate-deps/unused-aliases.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/unused-aliases.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/use_extern_crate_2015.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-attr.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-attr.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline-json.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline-json.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline-static.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline-static.stderr (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline.rs (100%) rename {src/test => tests}/ui/unused-crate-deps/warn-cmdline.stderr (100%) rename {src/test => tests}/ui/unused-move-capture.rs (100%) rename {src/test => tests}/ui/unused-move.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-c-unwind-enabled.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-c-unwind.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-c-unwind.stderr (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-stdcall-unwind.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-stdcall-unwind.stderr (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-system-unwind.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-system-unwind.stderr (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-thiscall-unwind.rs (100%) rename {src/test => tests}/ui/unwind-abis/feature-gate-thiscall-unwind.stderr (100%) rename {src/test => tests}/ui/unwind-abis/ffi-unwind-calls-lint.rs (100%) rename {src/test => tests}/ui/unwind-abis/ffi-unwind-calls-lint.stderr (100%) rename {src/test => tests}/ui/unwind-no-uwtable.rs (100%) rename {src/test => tests}/ui/unwind-unique.rs (100%) rename {src/test => tests}/ui/use-import-export.rs (100%) rename {src/test => tests}/ui/use-keyword-2.rs (100%) rename {src/test => tests}/ui/use-module-level-int-consts.rs (100%) rename {src/test => tests}/ui/use-nested-groups.rs (100%) rename {src/test => tests}/ui/use.rs (100%) rename {src/test => tests}/ui/use/auxiliary/extern-use-primitive-type-lib.rs (100%) rename {src/test => tests}/ui/use/auxiliary/use-from-trait-xc.rs (100%) rename {src/test => tests}/ui/use/issue-18986.rs (100%) rename {src/test => tests}/ui/use/issue-18986.stderr (100%) rename {src/test => tests}/ui/use/issue-60976-extern-use-primitive-type.rs (100%) rename {src/test => tests}/ui/use/use-after-move-based-on-type.rs (100%) rename {src/test => tests}/ui/use/use-after-move-based-on-type.stderr (100%) rename {src/test => tests}/ui/use/use-after-move-implicity-coerced-object.rs (100%) rename {src/test => tests}/ui/use/use-after-move-implicity-coerced-object.stderr (100%) rename {src/test => tests}/ui/use/use-after-move-self-based-on-type.rs (100%) rename {src/test => tests}/ui/use/use-after-move-self-based-on-type.stderr (100%) rename {src/test => tests}/ui/use/use-after-move-self.rs (100%) rename {src/test => tests}/ui/use/use-after-move-self.stderr (100%) rename {src/test => tests}/ui/use/use-associated-const.rs (100%) rename {src/test => tests}/ui/use/use-associated-const.stderr (100%) rename {src/test => tests}/ui/use/use-crate-self.rs (100%) rename {src/test => tests}/ui/use/use-crate-self.stderr (100%) rename {src/test => tests}/ui/use/use-from-trait-xc.rs (100%) rename {src/test => tests}/ui/use/use-from-trait-xc.stderr (100%) rename {src/test => tests}/ui/use/use-from-trait.rs (100%) rename {src/test => tests}/ui/use/use-from-trait.stderr (100%) rename {src/test => tests}/ui/use/use-keyword.rs (100%) rename {src/test => tests}/ui/use/use-keyword.stderr (100%) rename {src/test => tests}/ui/use/use-meta-mismatch.rs (100%) rename {src/test => tests}/ui/use/use-meta-mismatch.stderr (100%) rename {src/test => tests}/ui/use/use-mod.rs (100%) rename {src/test => tests}/ui/use/use-mod.stderr (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-2.rs (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-2.stderr (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-3.rs (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-3.stderr (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-4.rs (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-4.stderr (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-5.rs (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-5.stderr (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-6.rs (100%) rename {src/test => tests}/ui/use/use-mod/use-mod-6.stderr (100%) rename {src/test => tests}/ui/use/use-nested-groups-error.rs (100%) rename {src/test => tests}/ui/use/use-nested-groups-error.stderr (100%) rename {src/test => tests}/ui/use/use-nested-groups-unused-imports.rs (100%) rename {src/test => tests}/ui/use/use-nested-groups-unused-imports.stderr (100%) rename {src/test => tests}/ui/use/use-paths-as-items.rs (100%) rename {src/test => tests}/ui/use/use-paths-as-items.stderr (100%) rename {src/test => tests}/ui/use/use-self-type.rs (100%) rename {src/test => tests}/ui/use/use-self-type.stderr (100%) rename {src/test => tests}/ui/use/use-super-global-path.rs (100%) rename {src/test => tests}/ui/use/use-super-global-path.stderr (100%) rename {src/test => tests}/ui/used.rs (100%) rename {src/test => tests}/ui/used.stderr (100%) rename {src/test => tests}/ui/user-defined-macro-rules.rs (100%) rename {src/test => tests}/ui/using-target-feature-unstable.rs (100%) rename {src/test => tests}/ui/usize-generic-argument-parent.rs (100%) rename {src/test => tests}/ui/usize-generic-argument-parent.stderr (100%) rename {src/test => tests}/ui/utf8-bom.rs (100%) rename {src/test => tests}/ui/utf8_idents.rs (100%) rename {src/test => tests}/ui/variance-intersection-of-ref-and-opt-ref.rs (100%) rename {src/test => tests}/ui/variance-iterators-in-libcore.rs (100%) rename {src/test => tests}/ui/variance/variance-associated-consts.rs (100%) rename {src/test => tests}/ui/variance/variance-associated-consts.stderr (100%) rename {src/test => tests}/ui/variance/variance-associated-types.rs (100%) rename {src/test => tests}/ui/variance/variance-associated-types.stderr (100%) rename {src/test => tests}/ui/variance/variance-associated-types2.rs (100%) rename {src/test => tests}/ui/variance/variance-associated-types2.stderr (100%) rename {src/test => tests}/ui/variance/variance-btree-invariant-types.rs (100%) rename {src/test => tests}/ui/variance/variance-btree-invariant-types.stderr (100%) rename {src/test => tests}/ui/variance/variance-cell-is-invariant.rs (100%) rename {src/test => tests}/ui/variance/variance-cell-is-invariant.stderr (100%) rename {src/test => tests}/ui/variance/variance-contravariant-arg-object.rs (100%) rename {src/test => tests}/ui/variance/variance-contravariant-arg-object.stderr (100%) rename {src/test => tests}/ui/variance/variance-contravariant-arg-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-contravariant-arg-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-contravariant-self-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-contravariant-self-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-covariant-arg-object.rs (100%) rename {src/test => tests}/ui/variance/variance-covariant-arg-object.stderr (100%) rename {src/test => tests}/ui/variance/variance-covariant-arg-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-covariant-arg-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-covariant-self-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-covariant-self-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-invariant-arg-object.rs (100%) rename {src/test => tests}/ui/variance/variance-invariant-arg-object.stderr (100%) rename {src/test => tests}/ui/variance/variance-invariant-arg-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-invariant-arg-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-invariant-self-trait-match.rs (100%) rename {src/test => tests}/ui/variance/variance-invariant-self-trait-match.stderr (100%) rename {src/test => tests}/ui/variance/variance-issue-20533.rs (100%) rename {src/test => tests}/ui/variance/variance-issue-20533.stderr (100%) rename {src/test => tests}/ui/variance/variance-object-types.rs (100%) rename {src/test => tests}/ui/variance/variance-object-types.stderr (100%) rename {src/test => tests}/ui/variance/variance-regions-direct.rs (100%) rename {src/test => tests}/ui/variance/variance-regions-direct.stderr (100%) rename {src/test => tests}/ui/variance/variance-regions-indirect.rs (100%) rename {src/test => tests}/ui/variance/variance-regions-indirect.stderr (100%) rename {src/test => tests}/ui/variance/variance-regions-unused-direct.rs (100%) rename {src/test => tests}/ui/variance/variance-regions-unused-direct.stderr (100%) rename {src/test => tests}/ui/variance/variance-regions-unused-indirect.rs (100%) rename {src/test => tests}/ui/variance/variance-regions-unused-indirect.stderr (100%) rename {src/test => tests}/ui/variance/variance-trait-bounds.rs (100%) rename {src/test => tests}/ui/variance/variance-trait-bounds.stderr (100%) rename {src/test => tests}/ui/variance/variance-trait-matching.rs (100%) rename {src/test => tests}/ui/variance/variance-trait-matching.stderr (100%) rename {src/test => tests}/ui/variance/variance-trait-object-bound.rs (100%) rename {src/test => tests}/ui/variance/variance-trait-object-bound.stderr (100%) rename {src/test => tests}/ui/variance/variance-types-bounds.rs (100%) rename {src/test => tests}/ui/variance/variance-types-bounds.stderr (100%) rename {src/test => tests}/ui/variance/variance-types.rs (100%) rename {src/test => tests}/ui/variance/variance-types.stderr (100%) rename {src/test => tests}/ui/variance/variance-unused-region-param.rs (100%) rename {src/test => tests}/ui/variance/variance-unused-region-param.stderr (100%) rename {src/test => tests}/ui/variance/variance-unused-type-param.rs (100%) rename {src/test => tests}/ui/variance/variance-unused-type-param.stderr (100%) rename {src/test => tests}/ui/variance/variance-use-contravariant-struct-1.rs (100%) rename {src/test => tests}/ui/variance/variance-use-contravariant-struct-1.stderr (100%) rename {src/test => tests}/ui/variance/variance-use-contravariant-struct-2.rs (100%) rename {src/test => tests}/ui/variance/variance-use-covariant-struct-1.rs (100%) rename {src/test => tests}/ui/variance/variance-use-covariant-struct-1.stderr (100%) rename {src/test => tests}/ui/variance/variance-use-covariant-struct-2.rs (100%) rename {src/test => tests}/ui/variance/variance-use-invariant-struct-1.rs (100%) rename {src/test => tests}/ui/variance/variance-use-invariant-struct-1.stderr (100%) rename {src/test => tests}/ui/variants/auxiliary/variant-namespacing.rs (100%) rename {src/test => tests}/ui/variants/variant-namespacing.rs (100%) rename {src/test => tests}/ui/variants/variant-namespacing.stderr (100%) rename {src/test => tests}/ui/variants/variant-size-differences.rs (100%) rename {src/test => tests}/ui/variants/variant-size-differences.stderr (100%) rename {src/test => tests}/ui/variants/variant-used-as-type.rs (100%) rename {src/test => tests}/ui/variants/variant-used-as-type.stderr (100%) rename {src/test => tests}/ui/wait-forked-but-failed-child.rs (100%) rename {src/test => tests}/ui/walk-struct-literal-with.rs (100%) rename {src/test => tests}/ui/walk-struct-literal-with.stderr (100%) rename {src/test => tests}/ui/wasm-custom-section-relocations.rs (100%) rename {src/test => tests}/ui/wasm-custom-section-relocations.stderr (100%) rename {src/test => tests}/ui/wasm/simd-to-array-80108.rs (100%) rename {src/test => tests}/ui/wasm/wasm-hang-issue-76281.rs (100%) rename {src/test => tests}/ui/wasm/wasm-import-module.rs (100%) rename {src/test => tests}/ui/wasm/wasm-import-module.stderr (100%) rename {src/test => tests}/ui/weak-new-uninhabited-issue-48493.rs (100%) rename {src/test => tests}/ui/weird-exit-code.rs (100%) rename {src/test => tests}/ui/weird-exprs.rs (100%) rename {src/test => tests}/ui/wf/hir-wf-canonicalized.rs (100%) rename {src/test => tests}/ui/wf/hir-wf-canonicalized.stderr (100%) rename {src/test => tests}/ui/wf/hir-wf-check-erase-regions.rs (100%) rename {src/test => tests}/ui/wf/hir-wf-check-erase-regions.stderr (100%) rename {src/test => tests}/ui/wf/issue-103573.rs (100%) rename {src/test => tests}/ui/wf/issue-103573.stderr (100%) rename {src/test => tests}/ui/wf/issue-48638.rs (100%) rename {src/test => tests}/ui/wf/issue-87495.rs (100%) rename {src/test => tests}/ui/wf/issue-87495.stderr (100%) rename {src/test => tests}/ui/wf/issue-95665.rs (100%) rename {src/test => tests}/ui/wf/issue-95665.stderr (100%) rename {src/test => tests}/ui/wf/issue-96810.rs (100%) rename {src/test => tests}/ui/wf/issue-96810.stderr (100%) rename {src/test => tests}/ui/wf/wf-array-elem-sized.rs (100%) rename {src/test => tests}/ui/wf/wf-array-elem-sized.stderr (100%) rename {src/test => tests}/ui/wf/wf-complex-assoc-type.rs (100%) rename {src/test => tests}/ui/wf/wf-complex-assoc-type.stderr (100%) rename {src/test => tests}/ui/wf/wf-const-type.rs (100%) rename {src/test => tests}/ui/wf/wf-const-type.stderr (100%) rename {src/test => tests}/ui/wf/wf-convert-unsafe-trait-obj-box.rs (100%) rename {src/test => tests}/ui/wf/wf-convert-unsafe-trait-obj-box.stderr (100%) rename {src/test => tests}/ui/wf/wf-convert-unsafe-trait-obj.rs (100%) rename {src/test => tests}/ui/wf/wf-convert-unsafe-trait-obj.stderr (100%) rename {src/test => tests}/ui/wf/wf-enum-bound.rs (100%) rename {src/test => tests}/ui/wf/wf-enum-bound.stderr (100%) rename {src/test => tests}/ui/wf/wf-enum-fields-struct-variant.rs (100%) rename {src/test => tests}/ui/wf/wf-enum-fields-struct-variant.stderr (100%) rename {src/test => tests}/ui/wf/wf-enum-fields.rs (100%) rename {src/test => tests}/ui/wf/wf-enum-fields.stderr (100%) rename {src/test => tests}/ui/wf/wf-fn-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-fn-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-foreign-fn-decl-ret.rs (100%) rename {src/test => tests}/ui/wf/wf-foreign-fn-decl-ret.stderr (100%) rename {src/test => tests}/ui/wf/wf-impl-associated-type-region.rs (100%) rename {src/test => tests}/ui/wf/wf-impl-associated-type-region.stderr (100%) rename {src/test => tests}/ui/wf/wf-impl-associated-type-trait.rs (100%) rename {src/test => tests}/ui/wf/wf-impl-associated-type-trait.stderr (100%) rename {src/test => tests}/ui/wf/wf-impl-self-type.rs (100%) rename {src/test => tests}/ui/wf/wf-impl-self-type.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-arg.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-arg.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-ret.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-ret.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-arg.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-arg.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-ret.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-ret.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-static.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-type-static.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-fn-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-in-fn-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-foreign-fn-decls-issue-80468.rs (100%) rename {src/test => tests}/ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-obj-type-static.rs (100%) rename {src/test => tests}/ui/wf/wf-in-obj-type-static.stderr (100%) rename {src/test => tests}/ui/wf/wf-in-obj-type-trait.rs (100%) rename {src/test => tests}/ui/wf/wf-in-obj-type-trait.stderr (100%) rename {src/test => tests}/ui/wf/wf-inherent-impl-method-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-inherent-impl-method-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-inherent-impl-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-inherent-impl-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-misc-methods-issue-28609.rs (100%) rename {src/test => tests}/ui/wf/wf-misc-methods-issue-28609.stderr (100%) rename {src/test => tests}/ui/wf/wf-object-safe.rs (100%) rename {src/test => tests}/ui/wf/wf-object-safe.stderr (100%) rename {src/test => tests}/ui/wf/wf-outlives-ty-in-fn-or-trait.rs (100%) rename {src/test => tests}/ui/wf/wf-outlives-ty-in-fn-or-trait.stderr (100%) rename {src/test => tests}/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs (100%) rename {src/test => tests}/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.stderr (100%) rename {src/test => tests}/ui/wf/wf-static-method.rs (100%) rename {src/test => tests}/ui/wf/wf-static-method.stderr (100%) rename {src/test => tests}/ui/wf/wf-static-type.rs (100%) rename {src/test => tests}/ui/wf/wf-static-type.stderr (100%) rename {src/test => tests}/ui/wf/wf-struct-bound.rs (100%) rename {src/test => tests}/ui/wf/wf-struct-bound.stderr (100%) rename {src/test => tests}/ui/wf/wf-struct-field.rs (100%) rename {src/test => tests}/ui/wf/wf-struct-field.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-bound.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-bound.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-region.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-region.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-trait.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-associated-type-trait.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-bound.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-bound.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-arg.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-arg.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-ret.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-ret.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-default-fn-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-arg.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-arg.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-ret.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-ret.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-where-clause.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-fn-where-clause.stderr (100%) rename {src/test => tests}/ui/wf/wf-trait-superbound.rs (100%) rename {src/test => tests}/ui/wf/wf-trait-superbound.stderr (100%) rename {src/test => tests}/ui/wf/wf-unsafe-trait-obj-match.rs (100%) rename {src/test => tests}/ui/wf/wf-unsafe-trait-obj-match.stderr (100%) rename {src/test => tests}/ui/where-clauses/auxiliary/where_clauses_xc.rs (100%) rename {src/test => tests}/ui/where-clauses/higher-ranked-fn-type.quiet.stderr (100%) rename {src/test => tests}/ui/where-clauses/higher-ranked-fn-type.rs (100%) rename {src/test => tests}/ui/where-clauses/higher-ranked-fn-type.verbose.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clause-bounds-inconsistency.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clause-early-bound-lifetimes.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-method-substituion-rpass.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-method-substituion.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clause-method-substituion.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clause-region-outlives.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-cross-crate.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-lifetimes.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-method-unsatisfied.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-method-unsatisfied.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-method.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-unboxed-closures.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-unsatisfied.rs (100%) rename {src/test => tests}/ui/where-clauses/where-clauses-unsatisfied.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-clauses.rs (100%) rename {src/test => tests}/ui/where-clauses/where-equality-constraints.rs (100%) rename {src/test => tests}/ui/where-clauses/where-equality-constraints.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-for-self-2.rs (100%) rename {src/test => tests}/ui/where-clauses/where-for-self-2.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-for-self.rs (100%) rename {src/test => tests}/ui/where-clauses/where-for-self.stderr (100%) rename {src/test => tests}/ui/where-clauses/where-lifetime-resolution.rs (100%) rename {src/test => tests}/ui/where-clauses/where-lifetime-resolution.stderr (100%) rename {src/test => tests}/ui/while-type-error.rs (100%) rename {src/test => tests}/ui/while-type-error.stderr (100%) rename {src/test => tests}/ui/windows-subsystem-invalid.rs (100%) rename {src/test => tests}/ui/windows-subsystem-invalid.stderr (100%) rename {src/test => tests}/ui/write-fmt-errors.rs (100%) rename {src/test => tests}/ui/writing-to-immutable-vec.rs (100%) rename {src/test => tests}/ui/writing-to-immutable-vec.stderr (100%) rename {src/test => tests}/ui/wrong-hashset-issue-42918.rs (100%) rename {src/test => tests}/ui/wrong-mul-method-signature.rs (100%) rename {src/test => tests}/ui/wrong-mul-method-signature.stderr (100%) rename {src/test => tests}/ui/wrong-ret-type.rs (100%) rename {src/test => tests}/ui/wrong-ret-type.stderr (100%) rename {src/test => tests}/ui/xc-private-method.rs (100%) rename {src/test => tests}/ui/xc-private-method.stderr (100%) rename {src/test => tests}/ui/xc-private-method2.rs (100%) rename {src/test => tests}/ui/xc-private-method2.stderr (100%) rename {src/test => tests}/ui/xcrate/auxiliary/static_priv_by_default.rs (100%) rename {src/test => tests}/ui/xcrate/auxiliary/xcrate_unit_struct.rs (100%) rename {src/test => tests}/ui/xcrate/xcrate-private-by-default.rs (100%) rename {src/test => tests}/ui/xcrate/xcrate-private-by-default.stderr (100%) rename {src/test => tests}/ui/xcrate/xcrate-unit-struct-2.rs (100%) rename {src/test => tests}/ui/xcrate/xcrate-unit-struct.rs (100%) rename {src/test => tests}/ui/xcrate/xcrate-unit-struct.stderr (100%) rename {src/test => tests}/ui/zero-sized/zero-size-type-destructors.rs (100%) rename {src/test => tests}/ui/zero-sized/zero-sized-binary-heap-push.rs (100%) rename {src/test => tests}/ui/zero-sized/zero-sized-btreemap-insert.rs (100%) rename {src/test => tests}/ui/zero-sized/zero-sized-linkedlist-push.rs (100%) rename {src/test => tests}/ui/zero-sized/zero-sized-tuple-struct.rs (100%) diff --git a/src/test/COMPILER_TESTS.md b/tests/COMPILER_TESTS.md similarity index 100% rename from src/test/COMPILER_TESTS.md rename to tests/COMPILER_TESTS.md diff --git a/src/test/assembly/aarch64-naked-fn-no-bti-prolog.rs b/tests/assembly/aarch64-naked-fn-no-bti-prolog.rs similarity index 100% rename from src/test/assembly/aarch64-naked-fn-no-bti-prolog.rs rename to tests/assembly/aarch64-naked-fn-no-bti-prolog.rs diff --git a/src/test/assembly/aarch64-pointer-auth.rs b/tests/assembly/aarch64-pointer-auth.rs similarity index 100% rename from src/test/assembly/aarch64-pointer-auth.rs rename to tests/assembly/aarch64-pointer-auth.rs diff --git a/src/test/assembly/align_offset.rs b/tests/assembly/align_offset.rs similarity index 100% rename from src/test/assembly/align_offset.rs rename to tests/assembly/align_offset.rs diff --git a/src/test/assembly/asm/aarch64-el2vmsa.rs b/tests/assembly/asm/aarch64-el2vmsa.rs similarity index 100% rename from src/test/assembly/asm/aarch64-el2vmsa.rs rename to tests/assembly/asm/aarch64-el2vmsa.rs diff --git a/src/test/assembly/asm/aarch64-modifiers.rs b/tests/assembly/asm/aarch64-modifiers.rs similarity index 100% rename from src/test/assembly/asm/aarch64-modifiers.rs rename to tests/assembly/asm/aarch64-modifiers.rs diff --git a/src/test/assembly/asm/aarch64-outline-atomics.rs b/tests/assembly/asm/aarch64-outline-atomics.rs similarity index 100% rename from src/test/assembly/asm/aarch64-outline-atomics.rs rename to tests/assembly/asm/aarch64-outline-atomics.rs diff --git a/src/test/assembly/asm/aarch64-types.rs b/tests/assembly/asm/aarch64-types.rs similarity index 100% rename from src/test/assembly/asm/aarch64-types.rs rename to tests/assembly/asm/aarch64-types.rs diff --git a/src/test/assembly/asm/arm-modifiers.rs b/tests/assembly/asm/arm-modifiers.rs similarity index 100% rename from src/test/assembly/asm/arm-modifiers.rs rename to tests/assembly/asm/arm-modifiers.rs diff --git a/src/test/assembly/asm/arm-types.rs b/tests/assembly/asm/arm-types.rs similarity index 100% rename from src/test/assembly/asm/arm-types.rs rename to tests/assembly/asm/arm-types.rs diff --git a/src/test/assembly/asm/avr-modifiers.rs b/tests/assembly/asm/avr-modifiers.rs similarity index 100% rename from src/test/assembly/asm/avr-modifiers.rs rename to tests/assembly/asm/avr-modifiers.rs diff --git a/src/test/assembly/asm/avr-types.rs b/tests/assembly/asm/avr-types.rs similarity index 100% rename from src/test/assembly/asm/avr-types.rs rename to tests/assembly/asm/avr-types.rs diff --git a/src/test/assembly/asm/bpf-types.rs b/tests/assembly/asm/bpf-types.rs similarity index 100% rename from src/test/assembly/asm/bpf-types.rs rename to tests/assembly/asm/bpf-types.rs diff --git a/src/test/assembly/asm/global_asm.rs b/tests/assembly/asm/global_asm.rs similarity index 100% rename from src/test/assembly/asm/global_asm.rs rename to tests/assembly/asm/global_asm.rs diff --git a/src/test/assembly/asm/hexagon-types.rs b/tests/assembly/asm/hexagon-types.rs similarity index 100% rename from src/test/assembly/asm/hexagon-types.rs rename to tests/assembly/asm/hexagon-types.rs diff --git a/src/test/assembly/asm/mips-types.rs b/tests/assembly/asm/mips-types.rs similarity index 100% rename from src/test/assembly/asm/mips-types.rs rename to tests/assembly/asm/mips-types.rs diff --git a/src/test/assembly/asm/msp430-types.rs b/tests/assembly/asm/msp430-types.rs similarity index 100% rename from src/test/assembly/asm/msp430-types.rs rename to tests/assembly/asm/msp430-types.rs diff --git a/src/test/assembly/asm/nvptx-types.rs b/tests/assembly/asm/nvptx-types.rs similarity index 100% rename from src/test/assembly/asm/nvptx-types.rs rename to tests/assembly/asm/nvptx-types.rs diff --git a/src/test/assembly/asm/powerpc-types.rs b/tests/assembly/asm/powerpc-types.rs similarity index 100% rename from src/test/assembly/asm/powerpc-types.rs rename to tests/assembly/asm/powerpc-types.rs diff --git a/src/test/assembly/asm/riscv-types.rs b/tests/assembly/asm/riscv-types.rs similarity index 100% rename from src/test/assembly/asm/riscv-types.rs rename to tests/assembly/asm/riscv-types.rs diff --git a/src/test/assembly/asm/s390x-types.rs b/tests/assembly/asm/s390x-types.rs similarity index 100% rename from src/test/assembly/asm/s390x-types.rs rename to tests/assembly/asm/s390x-types.rs diff --git a/src/test/assembly/asm/wasm-types.rs b/tests/assembly/asm/wasm-types.rs similarity index 100% rename from src/test/assembly/asm/wasm-types.rs rename to tests/assembly/asm/wasm-types.rs diff --git a/src/test/assembly/asm/x86-modifiers.rs b/tests/assembly/asm/x86-modifiers.rs similarity index 100% rename from src/test/assembly/asm/x86-modifiers.rs rename to tests/assembly/asm/x86-modifiers.rs diff --git a/src/test/assembly/asm/x86-types.rs b/tests/assembly/asm/x86-types.rs similarity index 100% rename from src/test/assembly/asm/x86-types.rs rename to tests/assembly/asm/x86-types.rs diff --git a/src/test/assembly/auxiliary/breakpoint-panic-handler.rs b/tests/assembly/auxiliary/breakpoint-panic-handler.rs similarity index 100% rename from src/test/assembly/auxiliary/breakpoint-panic-handler.rs rename to tests/assembly/auxiliary/breakpoint-panic-handler.rs diff --git a/src/test/assembly/auxiliary/non-inline-dependency.rs b/tests/assembly/auxiliary/non-inline-dependency.rs similarity index 100% rename from src/test/assembly/auxiliary/non-inline-dependency.rs rename to tests/assembly/auxiliary/non-inline-dependency.rs diff --git a/src/test/assembly/dwarf5.rs b/tests/assembly/dwarf5.rs similarity index 100% rename from src/test/assembly/dwarf5.rs rename to tests/assembly/dwarf5.rs diff --git a/src/test/assembly/is_aligned.rs b/tests/assembly/is_aligned.rs similarity index 100% rename from src/test/assembly/is_aligned.rs rename to tests/assembly/is_aligned.rs diff --git a/src/test/assembly/niche-prefer-zero.rs b/tests/assembly/niche-prefer-zero.rs similarity index 100% rename from src/test/assembly/niche-prefer-zero.rs rename to tests/assembly/niche-prefer-zero.rs diff --git a/src/test/assembly/nvptx-arch-default.rs b/tests/assembly/nvptx-arch-default.rs similarity index 100% rename from src/test/assembly/nvptx-arch-default.rs rename to tests/assembly/nvptx-arch-default.rs diff --git a/src/test/assembly/nvptx-arch-emit-asm.rs b/tests/assembly/nvptx-arch-emit-asm.rs similarity index 100% rename from src/test/assembly/nvptx-arch-emit-asm.rs rename to tests/assembly/nvptx-arch-emit-asm.rs diff --git a/src/test/assembly/nvptx-arch-link-arg.rs b/tests/assembly/nvptx-arch-link-arg.rs similarity index 100% rename from src/test/assembly/nvptx-arch-link-arg.rs rename to tests/assembly/nvptx-arch-link-arg.rs diff --git a/src/test/assembly/nvptx-arch-target-cpu.rs b/tests/assembly/nvptx-arch-target-cpu.rs similarity index 100% rename from src/test/assembly/nvptx-arch-target-cpu.rs rename to tests/assembly/nvptx-arch-target-cpu.rs diff --git a/src/test/assembly/nvptx-atomics.rs b/tests/assembly/nvptx-atomics.rs similarity index 100% rename from src/test/assembly/nvptx-atomics.rs rename to tests/assembly/nvptx-atomics.rs diff --git a/src/test/assembly/nvptx-internalizing.rs b/tests/assembly/nvptx-internalizing.rs similarity index 100% rename from src/test/assembly/nvptx-internalizing.rs rename to tests/assembly/nvptx-internalizing.rs diff --git a/src/test/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs b/tests/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs similarity index 100% rename from src/test/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs rename to tests/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs diff --git a/src/test/assembly/nvptx-linking-binary.rs b/tests/assembly/nvptx-linking-binary.rs similarity index 100% rename from src/test/assembly/nvptx-linking-binary.rs rename to tests/assembly/nvptx-linking-binary.rs diff --git a/src/test/assembly/nvptx-linking-cdylib.rs b/tests/assembly/nvptx-linking-cdylib.rs similarity index 100% rename from src/test/assembly/nvptx-linking-cdylib.rs rename to tests/assembly/nvptx-linking-cdylib.rs diff --git a/src/test/assembly/nvptx-safe-naming.rs b/tests/assembly/nvptx-safe-naming.rs similarity index 100% rename from src/test/assembly/nvptx-safe-naming.rs rename to tests/assembly/nvptx-safe-naming.rs diff --git a/src/test/assembly/panic-no-unwind-no-uwtable.rs b/tests/assembly/panic-no-unwind-no-uwtable.rs similarity index 100% rename from src/test/assembly/panic-no-unwind-no-uwtable.rs rename to tests/assembly/panic-no-unwind-no-uwtable.rs diff --git a/src/test/assembly/panic-unwind-no-uwtable.rs b/tests/assembly/panic-unwind-no-uwtable.rs similarity index 100% rename from src/test/assembly/panic-unwind-no-uwtable.rs rename to tests/assembly/panic-unwind-no-uwtable.rs diff --git a/src/test/assembly/pic-relocation-model.rs b/tests/assembly/pic-relocation-model.rs similarity index 100% rename from src/test/assembly/pic-relocation-model.rs rename to tests/assembly/pic-relocation-model.rs diff --git a/src/test/assembly/pie-relocation-model.rs b/tests/assembly/pie-relocation-model.rs similarity index 100% rename from src/test/assembly/pie-relocation-model.rs rename to tests/assembly/pie-relocation-model.rs diff --git a/src/test/assembly/sparc-struct-abi.rs b/tests/assembly/sparc-struct-abi.rs similarity index 100% rename from src/test/assembly/sparc-struct-abi.rs rename to tests/assembly/sparc-struct-abi.rs diff --git a/src/test/assembly/stack-protector/stack-protector-heuristics-effect.rs b/tests/assembly/stack-protector/stack-protector-heuristics-effect.rs similarity index 100% rename from src/test/assembly/stack-protector/stack-protector-heuristics-effect.rs rename to tests/assembly/stack-protector/stack-protector-heuristics-effect.rs diff --git a/src/test/assembly/stack-protector/stack-protector-target-support.rs b/tests/assembly/stack-protector/stack-protector-target-support.rs similarity index 100% rename from src/test/assembly/stack-protector/stack-protector-target-support.rs rename to tests/assembly/stack-protector/stack-protector-target-support.rs diff --git a/src/test/assembly/static-relocation-model.rs b/tests/assembly/static-relocation-model.rs similarity index 100% rename from src/test/assembly/static-relocation-model.rs rename to tests/assembly/static-relocation-model.rs diff --git a/src/test/assembly/strict_provenance.rs b/tests/assembly/strict_provenance.rs similarity index 100% rename from src/test/assembly/strict_provenance.rs rename to tests/assembly/strict_provenance.rs diff --git a/src/test/assembly/target-feature-multiple.rs b/tests/assembly/target-feature-multiple.rs similarity index 100% rename from src/test/assembly/target-feature-multiple.rs rename to tests/assembly/target-feature-multiple.rs diff --git a/src/test/assembly/x86-stack-probes.rs b/tests/assembly/x86-stack-probes.rs similarity index 100% rename from src/test/assembly/x86-stack-probes.rs rename to tests/assembly/x86-stack-probes.rs diff --git a/src/test/assembly/x86_64-floating-point-clamp.rs b/tests/assembly/x86_64-floating-point-clamp.rs similarity index 100% rename from src/test/assembly/x86_64-floating-point-clamp.rs rename to tests/assembly/x86_64-floating-point-clamp.rs diff --git a/src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs b/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs similarity index 100% rename from src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs rename to tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs diff --git a/src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs b/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs similarity index 100% rename from src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs rename to tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs diff --git a/src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs b/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs similarity index 100% rename from src/test/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs rename to tests/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs diff --git a/src/test/assembly/x86_64-naked-fn-no-cet-prolog.rs b/tests/assembly/x86_64-naked-fn-no-cet-prolog.rs similarity index 100% rename from src/test/assembly/x86_64-naked-fn-no-cet-prolog.rs rename to tests/assembly/x86_64-naked-fn-no-cet-prolog.rs diff --git a/src/test/assembly/x86_64-no-jump-tables.rs b/tests/assembly/x86_64-no-jump-tables.rs similarity index 100% rename from src/test/assembly/x86_64-no-jump-tables.rs rename to tests/assembly/x86_64-no-jump-tables.rs diff --git a/src/test/assembly/x86_64-sse_crc.rs b/tests/assembly/x86_64-sse_crc.rs similarity index 100% rename from src/test/assembly/x86_64-sse_crc.rs rename to tests/assembly/x86_64-sse_crc.rs diff --git a/src/test/auxiliary/rust_test_helpers.c b/tests/auxiliary/rust_test_helpers.c similarity index 100% rename from src/test/auxiliary/rust_test_helpers.c rename to tests/auxiliary/rust_test_helpers.c diff --git a/src/test/codegen-units/item-collection/asm-sym.rs b/tests/codegen-units/item-collection/asm-sym.rs similarity index 100% rename from src/test/codegen-units/item-collection/asm-sym.rs rename to tests/codegen-units/item-collection/asm-sym.rs diff --git a/src/test/codegen-units/item-collection/auxiliary/cgu_export_trait_method.rs b/tests/codegen-units/item-collection/auxiliary/cgu_export_trait_method.rs similarity index 100% rename from src/test/codegen-units/item-collection/auxiliary/cgu_export_trait_method.rs rename to tests/codegen-units/item-collection/auxiliary/cgu_export_trait_method.rs diff --git a/src/test/codegen-units/item-collection/auxiliary/cgu_extern_closures.rs b/tests/codegen-units/item-collection/auxiliary/cgu_extern_closures.rs similarity index 100% rename from src/test/codegen-units/item-collection/auxiliary/cgu_extern_closures.rs rename to tests/codegen-units/item-collection/auxiliary/cgu_extern_closures.rs diff --git a/src/test/codegen-units/item-collection/auxiliary/cgu_generic_function.rs b/tests/codegen-units/item-collection/auxiliary/cgu_generic_function.rs similarity index 100% rename from src/test/codegen-units/item-collection/auxiliary/cgu_generic_function.rs rename to tests/codegen-units/item-collection/auxiliary/cgu_generic_function.rs diff --git a/src/test/codegen-units/item-collection/cross-crate-closures.rs b/tests/codegen-units/item-collection/cross-crate-closures.rs similarity index 100% rename from src/test/codegen-units/item-collection/cross-crate-closures.rs rename to tests/codegen-units/item-collection/cross-crate-closures.rs diff --git a/src/test/codegen-units/item-collection/cross-crate-generic-functions.rs b/tests/codegen-units/item-collection/cross-crate-generic-functions.rs similarity index 100% rename from src/test/codegen-units/item-collection/cross-crate-generic-functions.rs rename to tests/codegen-units/item-collection/cross-crate-generic-functions.rs diff --git a/src/test/codegen-units/item-collection/cross-crate-trait-method.rs b/tests/codegen-units/item-collection/cross-crate-trait-method.rs similarity index 100% rename from src/test/codegen-units/item-collection/cross-crate-trait-method.rs rename to tests/codegen-units/item-collection/cross-crate-trait-method.rs diff --git a/src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs b/tests/codegen-units/item-collection/drop_in_place_intrinsic.rs similarity index 100% rename from src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs rename to tests/codegen-units/item-collection/drop_in_place_intrinsic.rs diff --git a/src/test/codegen-units/item-collection/function-as-argument.rs b/tests/codegen-units/item-collection/function-as-argument.rs similarity index 100% rename from src/test/codegen-units/item-collection/function-as-argument.rs rename to tests/codegen-units/item-collection/function-as-argument.rs diff --git a/src/test/codegen-units/item-collection/generic-drop-glue.rs b/tests/codegen-units/item-collection/generic-drop-glue.rs similarity index 100% rename from src/test/codegen-units/item-collection/generic-drop-glue.rs rename to tests/codegen-units/item-collection/generic-drop-glue.rs diff --git a/src/test/codegen-units/item-collection/generic-functions.rs b/tests/codegen-units/item-collection/generic-functions.rs similarity index 100% rename from src/test/codegen-units/item-collection/generic-functions.rs rename to tests/codegen-units/item-collection/generic-functions.rs diff --git a/src/test/codegen-units/item-collection/generic-impl.rs b/tests/codegen-units/item-collection/generic-impl.rs similarity index 100% rename from src/test/codegen-units/item-collection/generic-impl.rs rename to tests/codegen-units/item-collection/generic-impl.rs diff --git a/src/test/codegen-units/item-collection/impl-in-non-instantiated-generic.rs b/tests/codegen-units/item-collection/impl-in-non-instantiated-generic.rs similarity index 100% rename from src/test/codegen-units/item-collection/impl-in-non-instantiated-generic.rs rename to tests/codegen-units/item-collection/impl-in-non-instantiated-generic.rs diff --git a/src/test/codegen-units/item-collection/implicit-panic-call.rs b/tests/codegen-units/item-collection/implicit-panic-call.rs similarity index 100% rename from src/test/codegen-units/item-collection/implicit-panic-call.rs rename to tests/codegen-units/item-collection/implicit-panic-call.rs diff --git a/src/test/codegen-units/item-collection/instantiation-through-vtable.rs b/tests/codegen-units/item-collection/instantiation-through-vtable.rs similarity index 100% rename from src/test/codegen-units/item-collection/instantiation-through-vtable.rs rename to tests/codegen-units/item-collection/instantiation-through-vtable.rs diff --git a/src/test/codegen-units/item-collection/items-within-generic-items.rs b/tests/codegen-units/item-collection/items-within-generic-items.rs similarity index 100% rename from src/test/codegen-units/item-collection/items-within-generic-items.rs rename to tests/codegen-units/item-collection/items-within-generic-items.rs diff --git a/src/test/codegen-units/item-collection/non-generic-closures.rs b/tests/codegen-units/item-collection/non-generic-closures.rs similarity index 100% rename from src/test/codegen-units/item-collection/non-generic-closures.rs rename to tests/codegen-units/item-collection/non-generic-closures.rs diff --git a/src/test/codegen-units/item-collection/non-generic-drop-glue.rs b/tests/codegen-units/item-collection/non-generic-drop-glue.rs similarity index 100% rename from src/test/codegen-units/item-collection/non-generic-drop-glue.rs rename to tests/codegen-units/item-collection/non-generic-drop-glue.rs diff --git a/src/test/codegen-units/item-collection/non-generic-functions.rs b/tests/codegen-units/item-collection/non-generic-functions.rs similarity index 100% rename from src/test/codegen-units/item-collection/non-generic-functions.rs rename to tests/codegen-units/item-collection/non-generic-functions.rs diff --git a/src/test/codegen-units/item-collection/overloaded-operators.rs b/tests/codegen-units/item-collection/overloaded-operators.rs similarity index 100% rename from src/test/codegen-units/item-collection/overloaded-operators.rs rename to tests/codegen-units/item-collection/overloaded-operators.rs diff --git a/src/test/codegen-units/item-collection/static-init.rs b/tests/codegen-units/item-collection/static-init.rs similarity index 100% rename from src/test/codegen-units/item-collection/static-init.rs rename to tests/codegen-units/item-collection/static-init.rs diff --git a/src/test/codegen-units/item-collection/statics-and-consts.rs b/tests/codegen-units/item-collection/statics-and-consts.rs similarity index 100% rename from src/test/codegen-units/item-collection/statics-and-consts.rs rename to tests/codegen-units/item-collection/statics-and-consts.rs diff --git a/src/test/codegen-units/item-collection/trait-implementations.rs b/tests/codegen-units/item-collection/trait-implementations.rs similarity index 100% rename from src/test/codegen-units/item-collection/trait-implementations.rs rename to tests/codegen-units/item-collection/trait-implementations.rs diff --git a/src/test/codegen-units/item-collection/trait-method-as-argument.rs b/tests/codegen-units/item-collection/trait-method-as-argument.rs similarity index 100% rename from src/test/codegen-units/item-collection/trait-method-as-argument.rs rename to tests/codegen-units/item-collection/trait-method-as-argument.rs diff --git a/src/test/codegen-units/item-collection/trait-method-default-impl.rs b/tests/codegen-units/item-collection/trait-method-default-impl.rs similarity index 100% rename from src/test/codegen-units/item-collection/trait-method-default-impl.rs rename to tests/codegen-units/item-collection/trait-method-default-impl.rs diff --git a/src/test/codegen-units/item-collection/transitive-drop-glue.rs b/tests/codegen-units/item-collection/transitive-drop-glue.rs similarity index 100% rename from src/test/codegen-units/item-collection/transitive-drop-glue.rs rename to tests/codegen-units/item-collection/transitive-drop-glue.rs diff --git a/src/test/codegen-units/item-collection/tuple-drop-glue.rs b/tests/codegen-units/item-collection/tuple-drop-glue.rs similarity index 100% rename from src/test/codegen-units/item-collection/tuple-drop-glue.rs rename to tests/codegen-units/item-collection/tuple-drop-glue.rs diff --git a/src/test/codegen-units/item-collection/unreferenced-const-fn.rs b/tests/codegen-units/item-collection/unreferenced-const-fn.rs similarity index 100% rename from src/test/codegen-units/item-collection/unreferenced-const-fn.rs rename to tests/codegen-units/item-collection/unreferenced-const-fn.rs diff --git a/src/test/codegen-units/item-collection/unreferenced-inline-function.rs b/tests/codegen-units/item-collection/unreferenced-inline-function.rs similarity index 100% rename from src/test/codegen-units/item-collection/unreferenced-inline-function.rs rename to tests/codegen-units/item-collection/unreferenced-inline-function.rs diff --git a/src/test/codegen-units/item-collection/unsizing.rs b/tests/codegen-units/item-collection/unsizing.rs similarity index 100% rename from src/test/codegen-units/item-collection/unsizing.rs rename to tests/codegen-units/item-collection/unsizing.rs diff --git a/src/test/codegen-units/item-collection/unused-traits-and-generics.rs b/tests/codegen-units/item-collection/unused-traits-and-generics.rs similarity index 100% rename from src/test/codegen-units/item-collection/unused-traits-and-generics.rs rename to tests/codegen-units/item-collection/unused-traits-and-generics.rs diff --git a/src/test/codegen-units/partitioning/auxiliary/cgu_explicit_inlining.rs b/tests/codegen-units/partitioning/auxiliary/cgu_explicit_inlining.rs similarity index 100% rename from src/test/codegen-units/partitioning/auxiliary/cgu_explicit_inlining.rs rename to tests/codegen-units/partitioning/auxiliary/cgu_explicit_inlining.rs diff --git a/src/test/codegen-units/partitioning/auxiliary/cgu_extern_drop_glue.rs b/tests/codegen-units/partitioning/auxiliary/cgu_extern_drop_glue.rs similarity index 100% rename from src/test/codegen-units/partitioning/auxiliary/cgu_extern_drop_glue.rs rename to tests/codegen-units/partitioning/auxiliary/cgu_extern_drop_glue.rs diff --git a/src/test/codegen-units/partitioning/auxiliary/cgu_generic_function.rs b/tests/codegen-units/partitioning/auxiliary/cgu_generic_function.rs similarity index 100% rename from src/test/codegen-units/partitioning/auxiliary/cgu_generic_function.rs rename to tests/codegen-units/partitioning/auxiliary/cgu_generic_function.rs diff --git a/src/test/codegen-units/partitioning/auxiliary/shared_generics_aux.rs b/tests/codegen-units/partitioning/auxiliary/shared_generics_aux.rs similarity index 100% rename from src/test/codegen-units/partitioning/auxiliary/shared_generics_aux.rs rename to tests/codegen-units/partitioning/auxiliary/shared_generics_aux.rs diff --git a/src/test/codegen-units/partitioning/extern-drop-glue.rs b/tests/codegen-units/partitioning/extern-drop-glue.rs similarity index 100% rename from src/test/codegen-units/partitioning/extern-drop-glue.rs rename to tests/codegen-units/partitioning/extern-drop-glue.rs diff --git a/src/test/codegen-units/partitioning/extern-generic.rs b/tests/codegen-units/partitioning/extern-generic.rs similarity index 100% rename from src/test/codegen-units/partitioning/extern-generic.rs rename to tests/codegen-units/partitioning/extern-generic.rs diff --git a/src/test/codegen-units/partitioning/incremental-merging.rs b/tests/codegen-units/partitioning/incremental-merging.rs similarity index 100% rename from src/test/codegen-units/partitioning/incremental-merging.rs rename to tests/codegen-units/partitioning/incremental-merging.rs diff --git a/src/test/codegen-units/partitioning/inlining-from-extern-crate.rs b/tests/codegen-units/partitioning/inlining-from-extern-crate.rs similarity index 100% rename from src/test/codegen-units/partitioning/inlining-from-extern-crate.rs rename to tests/codegen-units/partitioning/inlining-from-extern-crate.rs diff --git a/src/test/codegen-units/partitioning/local-drop-glue.rs b/tests/codegen-units/partitioning/local-drop-glue.rs similarity index 100% rename from src/test/codegen-units/partitioning/local-drop-glue.rs rename to tests/codegen-units/partitioning/local-drop-glue.rs diff --git a/src/test/codegen-units/partitioning/local-generic.rs b/tests/codegen-units/partitioning/local-generic.rs similarity index 100% rename from src/test/codegen-units/partitioning/local-generic.rs rename to tests/codegen-units/partitioning/local-generic.rs diff --git a/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs b/tests/codegen-units/partitioning/local-inlining-but-not-all.rs similarity index 100% rename from src/test/codegen-units/partitioning/local-inlining-but-not-all.rs rename to tests/codegen-units/partitioning/local-inlining-but-not-all.rs diff --git a/src/test/codegen-units/partitioning/local-inlining.rs b/tests/codegen-units/partitioning/local-inlining.rs similarity index 100% rename from src/test/codegen-units/partitioning/local-inlining.rs rename to tests/codegen-units/partitioning/local-inlining.rs diff --git a/src/test/codegen-units/partitioning/local-transitive-inlining.rs b/tests/codegen-units/partitioning/local-transitive-inlining.rs similarity index 100% rename from src/test/codegen-units/partitioning/local-transitive-inlining.rs rename to tests/codegen-units/partitioning/local-transitive-inlining.rs diff --git a/src/test/codegen-units/partitioning/methods-are-with-self-type.rs b/tests/codegen-units/partitioning/methods-are-with-self-type.rs similarity index 100% rename from src/test/codegen-units/partitioning/methods-are-with-self-type.rs rename to tests/codegen-units/partitioning/methods-are-with-self-type.rs diff --git a/src/test/codegen-units/partitioning/regular-modules.rs b/tests/codegen-units/partitioning/regular-modules.rs similarity index 100% rename from src/test/codegen-units/partitioning/regular-modules.rs rename to tests/codegen-units/partitioning/regular-modules.rs diff --git a/src/test/codegen-units/partitioning/shared-generics.rs b/tests/codegen-units/partitioning/shared-generics.rs similarity index 100% rename from src/test/codegen-units/partitioning/shared-generics.rs rename to tests/codegen-units/partitioning/shared-generics.rs diff --git a/src/test/codegen-units/partitioning/statics.rs b/tests/codegen-units/partitioning/statics.rs similarity index 100% rename from src/test/codegen-units/partitioning/statics.rs rename to tests/codegen-units/partitioning/statics.rs diff --git a/src/test/codegen-units/partitioning/vtable-through-const.rs b/tests/codegen-units/partitioning/vtable-through-const.rs similarity index 100% rename from src/test/codegen-units/partitioning/vtable-through-const.rs rename to tests/codegen-units/partitioning/vtable-through-const.rs diff --git a/src/test/codegen-units/polymorphization/unused_type_parameters.rs b/tests/codegen-units/polymorphization/unused_type_parameters.rs similarity index 100% rename from src/test/codegen-units/polymorphization/unused_type_parameters.rs rename to tests/codegen-units/polymorphization/unused_type_parameters.rs diff --git a/src/test/codegen/README.md b/tests/codegen/README.md similarity index 100% rename from src/test/codegen/README.md rename to tests/codegen/README.md diff --git a/src/test/codegen/abi-efiapi.rs b/tests/codegen/abi-efiapi.rs similarity index 100% rename from src/test/codegen/abi-efiapi.rs rename to tests/codegen/abi-efiapi.rs diff --git a/src/test/codegen/abi-main-signature-16bit-c-int.rs b/tests/codegen/abi-main-signature-16bit-c-int.rs similarity index 100% rename from src/test/codegen/abi-main-signature-16bit-c-int.rs rename to tests/codegen/abi-main-signature-16bit-c-int.rs diff --git a/src/test/codegen/abi-main-signature-32bit-c-int.rs b/tests/codegen/abi-main-signature-32bit-c-int.rs similarity index 100% rename from src/test/codegen/abi-main-signature-32bit-c-int.rs rename to tests/codegen/abi-main-signature-32bit-c-int.rs diff --git a/src/test/codegen/abi-repr-ext.rs b/tests/codegen/abi-repr-ext.rs similarity index 100% rename from src/test/codegen/abi-repr-ext.rs rename to tests/codegen/abi-repr-ext.rs diff --git a/src/test/codegen/abi-sysv64.rs b/tests/codegen/abi-sysv64.rs similarity index 100% rename from src/test/codegen/abi-sysv64.rs rename to tests/codegen/abi-sysv64.rs diff --git a/src/test/codegen/abi-x86-interrupt.rs b/tests/codegen/abi-x86-interrupt.rs similarity index 100% rename from src/test/codegen/abi-x86-interrupt.rs rename to tests/codegen/abi-x86-interrupt.rs diff --git a/src/test/codegen/abi-x86_64_sysv.rs b/tests/codegen/abi-x86_64_sysv.rs similarity index 100% rename from src/test/codegen/abi-x86_64_sysv.rs rename to tests/codegen/abi-x86_64_sysv.rs diff --git a/src/test/codegen/adjustments.rs b/tests/codegen/adjustments.rs similarity index 100% rename from src/test/codegen/adjustments.rs rename to tests/codegen/adjustments.rs diff --git a/src/test/codegen/align-enum.rs b/tests/codegen/align-enum.rs similarity index 100% rename from src/test/codegen/align-enum.rs rename to tests/codegen/align-enum.rs diff --git a/src/test/codegen/align-fn.rs b/tests/codegen/align-fn.rs similarity index 100% rename from src/test/codegen/align-fn.rs rename to tests/codegen/align-fn.rs diff --git a/src/test/codegen/align-struct.rs b/tests/codegen/align-struct.rs similarity index 100% rename from src/test/codegen/align-struct.rs rename to tests/codegen/align-struct.rs diff --git a/src/test/codegen/alloc-optimisation.rs b/tests/codegen/alloc-optimisation.rs similarity index 100% rename from src/test/codegen/alloc-optimisation.rs rename to tests/codegen/alloc-optimisation.rs diff --git a/src/test/codegen/array-clone.rs b/tests/codegen/array-clone.rs similarity index 100% rename from src/test/codegen/array-clone.rs rename to tests/codegen/array-clone.rs diff --git a/src/test/codegen/array-equality.rs b/tests/codegen/array-equality.rs similarity index 100% rename from src/test/codegen/array-equality.rs rename to tests/codegen/array-equality.rs diff --git a/src/test/codegen/asm-clobber_abi.rs b/tests/codegen/asm-clobber_abi.rs similarity index 100% rename from src/test/codegen/asm-clobber_abi.rs rename to tests/codegen/asm-clobber_abi.rs diff --git a/src/test/codegen/asm-clobbers.rs b/tests/codegen/asm-clobbers.rs similarity index 100% rename from src/test/codegen/asm-clobbers.rs rename to tests/codegen/asm-clobbers.rs diff --git a/src/test/codegen/asm-may_unwind.rs b/tests/codegen/asm-may_unwind.rs similarity index 100% rename from src/test/codegen/asm-may_unwind.rs rename to tests/codegen/asm-may_unwind.rs diff --git a/src/test/codegen/asm-multiple-options.rs b/tests/codegen/asm-multiple-options.rs similarity index 100% rename from src/test/codegen/asm-multiple-options.rs rename to tests/codegen/asm-multiple-options.rs diff --git a/src/test/codegen/asm-options.rs b/tests/codegen/asm-options.rs similarity index 100% rename from src/test/codegen/asm-options.rs rename to tests/codegen/asm-options.rs diff --git a/src/test/codegen/asm-powerpc-clobbers.rs b/tests/codegen/asm-powerpc-clobbers.rs similarity index 100% rename from src/test/codegen/asm-powerpc-clobbers.rs rename to tests/codegen/asm-powerpc-clobbers.rs diff --git a/src/test/codegen/asm-sanitize-llvm.rs b/tests/codegen/asm-sanitize-llvm.rs similarity index 100% rename from src/test/codegen/asm-sanitize-llvm.rs rename to tests/codegen/asm-sanitize-llvm.rs diff --git a/src/test/codegen/asm-target-clobbers.rs b/tests/codegen/asm-target-clobbers.rs similarity index 100% rename from src/test/codegen/asm-target-clobbers.rs rename to tests/codegen/asm-target-clobbers.rs diff --git a/src/test/codegen/async-fn-debug-awaitee-field.rs b/tests/codegen/async-fn-debug-awaitee-field.rs similarity index 100% rename from src/test/codegen/async-fn-debug-awaitee-field.rs rename to tests/codegen/async-fn-debug-awaitee-field.rs diff --git a/src/test/codegen/async-fn-debug-msvc.rs b/tests/codegen/async-fn-debug-msvc.rs similarity index 100% rename from src/test/codegen/async-fn-debug-msvc.rs rename to tests/codegen/async-fn-debug-msvc.rs diff --git a/src/test/codegen/async-fn-debug.rs b/tests/codegen/async-fn-debug.rs similarity index 100% rename from src/test/codegen/async-fn-debug.rs rename to tests/codegen/async-fn-debug.rs diff --git a/src/test/codegen/atomic-operations.rs b/tests/codegen/atomic-operations.rs similarity index 100% rename from src/test/codegen/atomic-operations.rs rename to tests/codegen/atomic-operations.rs diff --git a/src/test/codegen/autovectorize-f32x4.rs b/tests/codegen/autovectorize-f32x4.rs similarity index 100% rename from src/test/codegen/autovectorize-f32x4.rs rename to tests/codegen/autovectorize-f32x4.rs diff --git a/src/test/codegen/auxiliary/extern_decl.rs b/tests/codegen/auxiliary/extern_decl.rs similarity index 100% rename from src/test/codegen/auxiliary/extern_decl.rs rename to tests/codegen/auxiliary/extern_decl.rs diff --git a/src/test/codegen/auxiliary/nounwind.rs b/tests/codegen/auxiliary/nounwind.rs similarity index 100% rename from src/test/codegen/auxiliary/nounwind.rs rename to tests/codegen/auxiliary/nounwind.rs diff --git a/src/test/codegen/auxiliary/static_dllimport_aux.rs b/tests/codegen/auxiliary/static_dllimport_aux.rs similarity index 100% rename from src/test/codegen/auxiliary/static_dllimport_aux.rs rename to tests/codegen/auxiliary/static_dllimport_aux.rs diff --git a/src/test/codegen/auxiliary/thread_local_aux.rs b/tests/codegen/auxiliary/thread_local_aux.rs similarity index 100% rename from src/test/codegen/auxiliary/thread_local_aux.rs rename to tests/codegen/auxiliary/thread_local_aux.rs diff --git a/src/test/codegen/avr/avr-func-addrspace.rs b/tests/codegen/avr/avr-func-addrspace.rs similarity index 100% rename from src/test/codegen/avr/avr-func-addrspace.rs rename to tests/codegen/avr/avr-func-addrspace.rs diff --git a/src/test/codegen/binary-search-index-no-bound-check.rs b/tests/codegen/binary-search-index-no-bound-check.rs similarity index 100% rename from src/test/codegen/binary-search-index-no-bound-check.rs rename to tests/codegen/binary-search-index-no-bound-check.rs diff --git a/src/test/codegen/bool-cmp.rs b/tests/codegen/bool-cmp.rs similarity index 100% rename from src/test/codegen/bool-cmp.rs rename to tests/codegen/bool-cmp.rs diff --git a/src/test/codegen/box-maybe-uninit-llvm14.rs b/tests/codegen/box-maybe-uninit-llvm14.rs similarity index 100% rename from src/test/codegen/box-maybe-uninit-llvm14.rs rename to tests/codegen/box-maybe-uninit-llvm14.rs diff --git a/src/test/codegen/box-maybe-uninit.rs b/tests/codegen/box-maybe-uninit.rs similarity index 100% rename from src/test/codegen/box-maybe-uninit.rs rename to tests/codegen/box-maybe-uninit.rs diff --git a/src/test/codegen/bpf-alu32.rs b/tests/codegen/bpf-alu32.rs similarity index 100% rename from src/test/codegen/bpf-alu32.rs rename to tests/codegen/bpf-alu32.rs diff --git a/src/test/codegen/branch-protection.rs b/tests/codegen/branch-protection.rs similarity index 100% rename from src/test/codegen/branch-protection.rs rename to tests/codegen/branch-protection.rs diff --git a/src/test/codegen/c-variadic-copy.rs b/tests/codegen/c-variadic-copy.rs similarity index 100% rename from src/test/codegen/c-variadic-copy.rs rename to tests/codegen/c-variadic-copy.rs diff --git a/src/test/codegen/c-variadic-opt.rs b/tests/codegen/c-variadic-opt.rs similarity index 100% rename from src/test/codegen/c-variadic-opt.rs rename to tests/codegen/c-variadic-opt.rs diff --git a/src/test/codegen/c-variadic.rs b/tests/codegen/c-variadic.rs similarity index 100% rename from src/test/codegen/c-variadic.rs rename to tests/codegen/c-variadic.rs diff --git a/src/test/codegen/call-llvm-intrinsics.rs b/tests/codegen/call-llvm-intrinsics.rs similarity index 100% rename from src/test/codegen/call-llvm-intrinsics.rs rename to tests/codegen/call-llvm-intrinsics.rs diff --git a/src/test/codegen/call-metadata.rs b/tests/codegen/call-metadata.rs similarity index 100% rename from src/test/codegen/call-metadata.rs rename to tests/codegen/call-metadata.rs diff --git a/src/test/codegen/catch-unwind.rs b/tests/codegen/catch-unwind.rs similarity index 100% rename from src/test/codegen/catch-unwind.rs rename to tests/codegen/catch-unwind.rs diff --git a/src/test/codegen/cdylib-external-inline-fns.rs b/tests/codegen/cdylib-external-inline-fns.rs similarity index 100% rename from src/test/codegen/cdylib-external-inline-fns.rs rename to tests/codegen/cdylib-external-inline-fns.rs diff --git a/src/test/codegen/cf-protection.rs b/tests/codegen/cf-protection.rs similarity index 100% rename from src/test/codegen/cf-protection.rs rename to tests/codegen/cf-protection.rs diff --git a/src/test/codegen/cfguard-checks.rs b/tests/codegen/cfguard-checks.rs similarity index 100% rename from src/test/codegen/cfguard-checks.rs rename to tests/codegen/cfguard-checks.rs diff --git a/src/test/codegen/cfguard-disabled.rs b/tests/codegen/cfguard-disabled.rs similarity index 100% rename from src/test/codegen/cfguard-disabled.rs rename to tests/codegen/cfguard-disabled.rs diff --git a/src/test/codegen/cfguard-nochecks.rs b/tests/codegen/cfguard-nochecks.rs similarity index 100% rename from src/test/codegen/cfguard-nochecks.rs rename to tests/codegen/cfguard-nochecks.rs diff --git a/src/test/codegen/cfguard-non-msvc.rs b/tests/codegen/cfguard-non-msvc.rs similarity index 100% rename from src/test/codegen/cfguard-non-msvc.rs rename to tests/codegen/cfguard-non-msvc.rs diff --git a/src/test/codegen/codemodels.rs b/tests/codegen/codemodels.rs similarity index 100% rename from src/test/codegen/codemodels.rs rename to tests/codegen/codemodels.rs diff --git a/src/test/codegen/coercions.rs b/tests/codegen/coercions.rs similarity index 100% rename from src/test/codegen/coercions.rs rename to tests/codegen/coercions.rs diff --git a/src/test/codegen/cold-call-declare-and-call.rs b/tests/codegen/cold-call-declare-and-call.rs similarity index 100% rename from src/test/codegen/cold-call-declare-and-call.rs rename to tests/codegen/cold-call-declare-and-call.rs diff --git a/src/test/codegen/comparison-operators-newtype.rs b/tests/codegen/comparison-operators-newtype.rs similarity index 100% rename from src/test/codegen/comparison-operators-newtype.rs rename to tests/codegen/comparison-operators-newtype.rs diff --git a/src/test/codegen/consts.rs b/tests/codegen/consts.rs similarity index 100% rename from src/test/codegen/consts.rs rename to tests/codegen/consts.rs diff --git a/src/test/codegen/dealloc-no-unwind.rs b/tests/codegen/dealloc-no-unwind.rs similarity index 100% rename from src/test/codegen/dealloc-no-unwind.rs rename to tests/codegen/dealloc-no-unwind.rs diff --git a/src/test/codegen/debug-alignment.rs b/tests/codegen/debug-alignment.rs similarity index 100% rename from src/test/codegen/debug-alignment.rs rename to tests/codegen/debug-alignment.rs diff --git a/src/test/codegen/debug-column-msvc.rs b/tests/codegen/debug-column-msvc.rs similarity index 100% rename from src/test/codegen/debug-column-msvc.rs rename to tests/codegen/debug-column-msvc.rs diff --git a/src/test/codegen/debug-column.rs b/tests/codegen/debug-column.rs similarity index 100% rename from src/test/codegen/debug-column.rs rename to tests/codegen/debug-column.rs diff --git a/src/test/codegen/debug-compile-unit-path.rs b/tests/codegen/debug-compile-unit-path.rs similarity index 100% rename from src/test/codegen/debug-compile-unit-path.rs rename to tests/codegen/debug-compile-unit-path.rs diff --git a/src/test/codegen/debug-linkage-name.rs b/tests/codegen/debug-linkage-name.rs similarity index 100% rename from src/test/codegen/debug-linkage-name.rs rename to tests/codegen/debug-linkage-name.rs diff --git a/src/test/codegen/debug-vtable.rs b/tests/codegen/debug-vtable.rs similarity index 100% rename from src/test/codegen/debug-vtable.rs rename to tests/codegen/debug-vtable.rs diff --git a/src/test/codegen/debuginfo-generic-closure-env-names.rs b/tests/codegen/debuginfo-generic-closure-env-names.rs similarity index 100% rename from src/test/codegen/debuginfo-generic-closure-env-names.rs rename to tests/codegen/debuginfo-generic-closure-env-names.rs diff --git a/src/test/codegen/deduced-param-attrs.rs b/tests/codegen/deduced-param-attrs.rs similarity index 100% rename from src/test/codegen/deduced-param-attrs.rs rename to tests/codegen/deduced-param-attrs.rs diff --git a/src/test/codegen/default-requires-uwtable.rs b/tests/codegen/default-requires-uwtable.rs similarity index 100% rename from src/test/codegen/default-requires-uwtable.rs rename to tests/codegen/default-requires-uwtable.rs diff --git a/src/test/codegen/dllimports/auxiliary/dummy.rs b/tests/codegen/dllimports/auxiliary/dummy.rs similarity index 100% rename from src/test/codegen/dllimports/auxiliary/dummy.rs rename to tests/codegen/dllimports/auxiliary/dummy.rs diff --git a/src/test/codegen/dllimports/auxiliary/wrapper.rs b/tests/codegen/dllimports/auxiliary/wrapper.rs similarity index 100% rename from src/test/codegen/dllimports/auxiliary/wrapper.rs rename to tests/codegen/dllimports/auxiliary/wrapper.rs diff --git a/src/test/codegen/dllimports/main.rs b/tests/codegen/dllimports/main.rs similarity index 100% rename from src/test/codegen/dllimports/main.rs rename to tests/codegen/dllimports/main.rs diff --git a/src/test/codegen/drop.rs b/tests/codegen/drop.rs similarity index 100% rename from src/test/codegen/drop.rs rename to tests/codegen/drop.rs diff --git a/src/test/codegen/dst-vtable-align-nonzero.rs b/tests/codegen/dst-vtable-align-nonzero.rs similarity index 100% rename from src/test/codegen/dst-vtable-align-nonzero.rs rename to tests/codegen/dst-vtable-align-nonzero.rs diff --git a/src/test/codegen/dst-vtable-size-range.rs b/tests/codegen/dst-vtable-size-range.rs similarity index 100% rename from src/test/codegen/dst-vtable-size-range.rs rename to tests/codegen/dst-vtable-size-range.rs diff --git a/src/test/codegen/enum-bounds-check-derived-idx.rs b/tests/codegen/enum-bounds-check-derived-idx.rs similarity index 100% rename from src/test/codegen/enum-bounds-check-derived-idx.rs rename to tests/codegen/enum-bounds-check-derived-idx.rs diff --git a/src/test/codegen/enum-bounds-check-issue-13926.rs b/tests/codegen/enum-bounds-check-issue-13926.rs similarity index 100% rename from src/test/codegen/enum-bounds-check-issue-13926.rs rename to tests/codegen/enum-bounds-check-issue-13926.rs diff --git a/src/test/codegen/enum-bounds-check-issue-82871.rs b/tests/codegen/enum-bounds-check-issue-82871.rs similarity index 100% rename from src/test/codegen/enum-bounds-check-issue-82871.rs rename to tests/codegen/enum-bounds-check-issue-82871.rs diff --git a/src/test/codegen/enum-bounds-check.rs b/tests/codegen/enum-bounds-check.rs similarity index 100% rename from src/test/codegen/enum-bounds-check.rs rename to tests/codegen/enum-bounds-check.rs diff --git a/src/test/codegen/enum-debug-clike.rs b/tests/codegen/enum-debug-clike.rs similarity index 100% rename from src/test/codegen/enum-debug-clike.rs rename to tests/codegen/enum-debug-clike.rs diff --git a/src/test/codegen/enum-debug-niche-2.rs b/tests/codegen/enum-debug-niche-2.rs similarity index 100% rename from src/test/codegen/enum-debug-niche-2.rs rename to tests/codegen/enum-debug-niche-2.rs diff --git a/src/test/codegen/enum-debug-niche.rs b/tests/codegen/enum-debug-niche.rs similarity index 100% rename from src/test/codegen/enum-debug-niche.rs rename to tests/codegen/enum-debug-niche.rs diff --git a/src/test/codegen/enum-debug-tagged.rs b/tests/codegen/enum-debug-tagged.rs similarity index 100% rename from src/test/codegen/enum-debug-tagged.rs rename to tests/codegen/enum-debug-tagged.rs diff --git a/src/test/codegen/enum-discriminant-value.rs b/tests/codegen/enum-discriminant-value.rs similarity index 100% rename from src/test/codegen/enum-discriminant-value.rs rename to tests/codegen/enum-discriminant-value.rs diff --git a/src/test/codegen/enum-match.rs b/tests/codegen/enum-match.rs similarity index 100% rename from src/test/codegen/enum-match.rs rename to tests/codegen/enum-match.rs diff --git a/src/test/codegen/export-no-mangle.rs b/tests/codegen/export-no-mangle.rs similarity index 100% rename from src/test/codegen/export-no-mangle.rs rename to tests/codegen/export-no-mangle.rs diff --git a/src/test/codegen/external-no-mangle-fns.rs b/tests/codegen/external-no-mangle-fns.rs similarity index 100% rename from src/test/codegen/external-no-mangle-fns.rs rename to tests/codegen/external-no-mangle-fns.rs diff --git a/src/test/codegen/external-no-mangle-statics.rs b/tests/codegen/external-no-mangle-statics.rs similarity index 100% rename from src/test/codegen/external-no-mangle-statics.rs rename to tests/codegen/external-no-mangle-statics.rs diff --git a/src/test/codegen/fastcall-inreg.rs b/tests/codegen/fastcall-inreg.rs similarity index 100% rename from src/test/codegen/fastcall-inreg.rs rename to tests/codegen/fastcall-inreg.rs diff --git a/src/test/codegen/fatptr.rs b/tests/codegen/fatptr.rs similarity index 100% rename from src/test/codegen/fatptr.rs rename to tests/codegen/fatptr.rs diff --git a/src/test/codegen/fewer-names.rs b/tests/codegen/fewer-names.rs similarity index 100% rename from src/test/codegen/fewer-names.rs rename to tests/codegen/fewer-names.rs diff --git a/src/test/codegen/ffi-const.rs b/tests/codegen/ffi-const.rs similarity index 100% rename from src/test/codegen/ffi-const.rs rename to tests/codegen/ffi-const.rs diff --git a/src/test/codegen/ffi-out-of-bounds-loads.rs b/tests/codegen/ffi-out-of-bounds-loads.rs similarity index 100% rename from src/test/codegen/ffi-out-of-bounds-loads.rs rename to tests/codegen/ffi-out-of-bounds-loads.rs diff --git a/src/test/codegen/ffi-pure.rs b/tests/codegen/ffi-pure.rs similarity index 100% rename from src/test/codegen/ffi-pure.rs rename to tests/codegen/ffi-pure.rs diff --git a/src/test/codegen/ffi-returns-twice.rs b/tests/codegen/ffi-returns-twice.rs similarity index 100% rename from src/test/codegen/ffi-returns-twice.rs rename to tests/codegen/ffi-returns-twice.rs diff --git a/src/test/codegen/float_math.rs b/tests/codegen/float_math.rs similarity index 100% rename from src/test/codegen/float_math.rs rename to tests/codegen/float_math.rs diff --git a/src/test/codegen/fn-impl-trait-self.rs b/tests/codegen/fn-impl-trait-self.rs similarity index 100% rename from src/test/codegen/fn-impl-trait-self.rs rename to tests/codegen/fn-impl-trait-self.rs diff --git a/src/test/codegen/foo.s b/tests/codegen/foo.s similarity index 100% rename from src/test/codegen/foo.s rename to tests/codegen/foo.s diff --git a/src/test/codegen/force-frame-pointers.rs b/tests/codegen/force-frame-pointers.rs similarity index 100% rename from src/test/codegen/force-frame-pointers.rs rename to tests/codegen/force-frame-pointers.rs diff --git a/src/test/codegen/force-no-unwind-tables.rs b/tests/codegen/force-no-unwind-tables.rs similarity index 100% rename from src/test/codegen/force-no-unwind-tables.rs rename to tests/codegen/force-no-unwind-tables.rs diff --git a/src/test/codegen/force-unwind-tables.rs b/tests/codegen/force-unwind-tables.rs similarity index 100% rename from src/test/codegen/force-unwind-tables.rs rename to tests/codegen/force-unwind-tables.rs diff --git a/src/test/codegen/frame-pointer.rs b/tests/codegen/frame-pointer.rs similarity index 100% rename from src/test/codegen/frame-pointer.rs rename to tests/codegen/frame-pointer.rs diff --git a/src/test/codegen/function-arguments-noopt.rs b/tests/codegen/function-arguments-noopt.rs similarity index 100% rename from src/test/codegen/function-arguments-noopt.rs rename to tests/codegen/function-arguments-noopt.rs diff --git a/src/test/codegen/function-arguments.rs b/tests/codegen/function-arguments.rs similarity index 100% rename from src/test/codegen/function-arguments.rs rename to tests/codegen/function-arguments.rs diff --git a/src/test/codegen/gdb_debug_script_load.rs b/tests/codegen/gdb_debug_script_load.rs similarity index 100% rename from src/test/codegen/gdb_debug_script_load.rs rename to tests/codegen/gdb_debug_script_load.rs diff --git a/src/test/codegen/generator-debug-msvc.rs b/tests/codegen/generator-debug-msvc.rs similarity index 100% rename from src/test/codegen/generator-debug-msvc.rs rename to tests/codegen/generator-debug-msvc.rs diff --git a/src/test/codegen/generator-debug.rs b/tests/codegen/generator-debug.rs similarity index 100% rename from src/test/codegen/generator-debug.rs rename to tests/codegen/generator-debug.rs diff --git a/src/test/codegen/generic-debug.rs b/tests/codegen/generic-debug.rs similarity index 100% rename from src/test/codegen/generic-debug.rs rename to tests/codegen/generic-debug.rs diff --git a/src/test/codegen/global_asm.rs b/tests/codegen/global_asm.rs similarity index 100% rename from src/test/codegen/global_asm.rs rename to tests/codegen/global_asm.rs diff --git a/src/test/codegen/global_asm_include.rs b/tests/codegen/global_asm_include.rs similarity index 100% rename from src/test/codegen/global_asm_include.rs rename to tests/codegen/global_asm_include.rs diff --git a/src/test/codegen/global_asm_x2.rs b/tests/codegen/global_asm_x2.rs similarity index 100% rename from src/test/codegen/global_asm_x2.rs rename to tests/codegen/global_asm_x2.rs diff --git a/src/test/codegen/i686-macosx-deployment-target.rs b/tests/codegen/i686-macosx-deployment-target.rs similarity index 100% rename from src/test/codegen/i686-macosx-deployment-target.rs rename to tests/codegen/i686-macosx-deployment-target.rs diff --git a/src/test/codegen/i686-no-macosx-deployment-target.rs b/tests/codegen/i686-no-macosx-deployment-target.rs similarity index 100% rename from src/test/codegen/i686-no-macosx-deployment-target.rs rename to tests/codegen/i686-no-macosx-deployment-target.rs diff --git a/src/test/codegen/inline-always-works-always.rs b/tests/codegen/inline-always-works-always.rs similarity index 100% rename from src/test/codegen/inline-always-works-always.rs rename to tests/codegen/inline-always-works-always.rs diff --git a/src/test/codegen/inline-debuginfo.rs b/tests/codegen/inline-debuginfo.rs similarity index 100% rename from src/test/codegen/inline-debuginfo.rs rename to tests/codegen/inline-debuginfo.rs diff --git a/src/test/codegen/inline-hint.rs b/tests/codegen/inline-hint.rs similarity index 100% rename from src/test/codegen/inline-hint.rs rename to tests/codegen/inline-hint.rs diff --git a/src/test/codegen/instrument-coverage.rs b/tests/codegen/instrument-coverage.rs similarity index 100% rename from src/test/codegen/instrument-coverage.rs rename to tests/codegen/instrument-coverage.rs diff --git a/src/test/codegen/instrument-mcount.rs b/tests/codegen/instrument-mcount.rs similarity index 100% rename from src/test/codegen/instrument-mcount.rs rename to tests/codegen/instrument-mcount.rs diff --git a/src/test/codegen/integer-cmp.rs b/tests/codegen/integer-cmp.rs similarity index 100% rename from src/test/codegen/integer-cmp.rs rename to tests/codegen/integer-cmp.rs diff --git a/src/test/codegen/integer-overflow.rs b/tests/codegen/integer-overflow.rs similarity index 100% rename from src/test/codegen/integer-overflow.rs rename to tests/codegen/integer-overflow.rs diff --git a/src/test/codegen/internalize-closures.rs b/tests/codegen/internalize-closures.rs similarity index 100% rename from src/test/codegen/internalize-closures.rs rename to tests/codegen/internalize-closures.rs diff --git a/src/test/codegen/intrinsic-no-unnamed-attr.rs b/tests/codegen/intrinsic-no-unnamed-attr.rs similarity index 100% rename from src/test/codegen/intrinsic-no-unnamed-attr.rs rename to tests/codegen/intrinsic-no-unnamed-attr.rs diff --git a/src/test/codegen/intrinsics/const_eval_select.rs b/tests/codegen/intrinsics/const_eval_select.rs similarity index 100% rename from src/test/codegen/intrinsics/const_eval_select.rs rename to tests/codegen/intrinsics/const_eval_select.rs diff --git a/src/test/codegen/intrinsics/exact_div.rs b/tests/codegen/intrinsics/exact_div.rs similarity index 100% rename from src/test/codegen/intrinsics/exact_div.rs rename to tests/codegen/intrinsics/exact_div.rs diff --git a/src/test/codegen/intrinsics/likely.rs b/tests/codegen/intrinsics/likely.rs similarity index 100% rename from src/test/codegen/intrinsics/likely.rs rename to tests/codegen/intrinsics/likely.rs diff --git a/src/test/codegen/intrinsics/mask.rs b/tests/codegen/intrinsics/mask.rs similarity index 100% rename from src/test/codegen/intrinsics/mask.rs rename to tests/codegen/intrinsics/mask.rs diff --git a/src/test/codegen/intrinsics/nearby.rs b/tests/codegen/intrinsics/nearby.rs similarity index 100% rename from src/test/codegen/intrinsics/nearby.rs rename to tests/codegen/intrinsics/nearby.rs diff --git a/src/test/codegen/intrinsics/nontemporal.rs b/tests/codegen/intrinsics/nontemporal.rs similarity index 100% rename from src/test/codegen/intrinsics/nontemporal.rs rename to tests/codegen/intrinsics/nontemporal.rs diff --git a/src/test/codegen/intrinsics/offset_from.rs b/tests/codegen/intrinsics/offset_from.rs similarity index 100% rename from src/test/codegen/intrinsics/offset_from.rs rename to tests/codegen/intrinsics/offset_from.rs diff --git a/src/test/codegen/intrinsics/prefetch.rs b/tests/codegen/intrinsics/prefetch.rs similarity index 100% rename from src/test/codegen/intrinsics/prefetch.rs rename to tests/codegen/intrinsics/prefetch.rs diff --git a/src/test/codegen/intrinsics/unchecked_math.rs b/tests/codegen/intrinsics/unchecked_math.rs similarity index 100% rename from src/test/codegen/intrinsics/unchecked_math.rs rename to tests/codegen/intrinsics/unchecked_math.rs diff --git a/src/test/codegen/intrinsics/volatile.rs b/tests/codegen/intrinsics/volatile.rs similarity index 100% rename from src/test/codegen/intrinsics/volatile.rs rename to tests/codegen/intrinsics/volatile.rs diff --git a/src/test/codegen/intrinsics/volatile_order.rs b/tests/codegen/intrinsics/volatile_order.rs similarity index 100% rename from src/test/codegen/intrinsics/volatile_order.rs rename to tests/codegen/intrinsics/volatile_order.rs diff --git a/src/test/codegen/issue-103285-ptr-addr-overflow-check.rs b/tests/codegen/issue-103285-ptr-addr-overflow-check.rs similarity index 100% rename from src/test/codegen/issue-103285-ptr-addr-overflow-check.rs rename to tests/codegen/issue-103285-ptr-addr-overflow-check.rs diff --git a/src/test/codegen/issue-103840.rs b/tests/codegen/issue-103840.rs similarity index 100% rename from src/test/codegen/issue-103840.rs rename to tests/codegen/issue-103840.rs diff --git a/src/test/codegen/issue-105386-ub-in-debuginfo.rs b/tests/codegen/issue-105386-ub-in-debuginfo.rs similarity index 100% rename from src/test/codegen/issue-105386-ub-in-debuginfo.rs rename to tests/codegen/issue-105386-ub-in-debuginfo.rs diff --git a/src/test/codegen/issue-13018.rs b/tests/codegen/issue-13018.rs similarity index 100% rename from src/test/codegen/issue-13018.rs rename to tests/codegen/issue-13018.rs diff --git a/src/test/codegen/issue-15953.rs b/tests/codegen/issue-15953.rs similarity index 100% rename from src/test/codegen/issue-15953.rs rename to tests/codegen/issue-15953.rs diff --git a/src/test/codegen/issue-27130.rs b/tests/codegen/issue-27130.rs similarity index 100% rename from src/test/codegen/issue-27130.rs rename to tests/codegen/issue-27130.rs diff --git a/src/test/codegen/issue-32031.rs b/tests/codegen/issue-32031.rs similarity index 100% rename from src/test/codegen/issue-32031.rs rename to tests/codegen/issue-32031.rs diff --git a/src/test/codegen/issue-32364.rs b/tests/codegen/issue-32364.rs similarity index 100% rename from src/test/codegen/issue-32364.rs rename to tests/codegen/issue-32364.rs diff --git a/src/test/codegen/issue-34634.rs b/tests/codegen/issue-34634.rs similarity index 100% rename from src/test/codegen/issue-34634.rs rename to tests/codegen/issue-34634.rs diff --git a/src/test/codegen/issue-34947-pow-i32.rs b/tests/codegen/issue-34947-pow-i32.rs similarity index 100% rename from src/test/codegen/issue-34947-pow-i32.rs rename to tests/codegen/issue-34947-pow-i32.rs diff --git a/src/test/codegen/issue-37945.rs b/tests/codegen/issue-37945.rs similarity index 100% rename from src/test/codegen/issue-37945.rs rename to tests/codegen/issue-37945.rs diff --git a/src/test/codegen/issue-44056-macos-tls-align.rs b/tests/codegen/issue-44056-macos-tls-align.rs similarity index 100% rename from src/test/codegen/issue-44056-macos-tls-align.rs rename to tests/codegen/issue-44056-macos-tls-align.rs diff --git a/src/test/codegen/issue-45222.rs b/tests/codegen/issue-45222.rs similarity index 100% rename from src/test/codegen/issue-45222.rs rename to tests/codegen/issue-45222.rs diff --git a/src/test/codegen/issue-45466.rs b/tests/codegen/issue-45466.rs similarity index 100% rename from src/test/codegen/issue-45466.rs rename to tests/codegen/issue-45466.rs diff --git a/src/test/codegen/issue-45964-bounds-check-slice-pos.rs b/tests/codegen/issue-45964-bounds-check-slice-pos.rs similarity index 100% rename from src/test/codegen/issue-45964-bounds-check-slice-pos.rs rename to tests/codegen/issue-45964-bounds-check-slice-pos.rs diff --git a/src/test/codegen/issue-47278.rs b/tests/codegen/issue-47278.rs similarity index 100% rename from src/test/codegen/issue-47278.rs rename to tests/codegen/issue-47278.rs diff --git a/src/test/codegen/issue-47442.rs b/tests/codegen/issue-47442.rs similarity index 100% rename from src/test/codegen/issue-47442.rs rename to tests/codegen/issue-47442.rs diff --git a/src/test/codegen/issue-56267-2.rs b/tests/codegen/issue-56267-2.rs similarity index 100% rename from src/test/codegen/issue-56267-2.rs rename to tests/codegen/issue-56267-2.rs diff --git a/src/test/codegen/issue-56267.rs b/tests/codegen/issue-56267.rs similarity index 100% rename from src/test/codegen/issue-56267.rs rename to tests/codegen/issue-56267.rs diff --git a/src/test/codegen/issue-56927.rs b/tests/codegen/issue-56927.rs similarity index 100% rename from src/test/codegen/issue-56927.rs rename to tests/codegen/issue-56927.rs diff --git a/src/test/codegen/issue-58881.rs b/tests/codegen/issue-58881.rs similarity index 100% rename from src/test/codegen/issue-58881.rs rename to tests/codegen/issue-58881.rs diff --git a/src/test/codegen/issue-59352.rs b/tests/codegen/issue-59352.rs similarity index 100% rename from src/test/codegen/issue-59352.rs rename to tests/codegen/issue-59352.rs diff --git a/src/test/codegen/issue-69101-bounds-check.rs b/tests/codegen/issue-69101-bounds-check.rs similarity index 100% rename from src/test/codegen/issue-69101-bounds-check.rs rename to tests/codegen/issue-69101-bounds-check.rs diff --git a/src/test/codegen/issue-73031.rs b/tests/codegen/issue-73031.rs similarity index 100% rename from src/test/codegen/issue-73031.rs rename to tests/codegen/issue-73031.rs diff --git a/src/test/codegen/issue-73338-effecient-cmp.rs b/tests/codegen/issue-73338-effecient-cmp.rs similarity index 100% rename from src/test/codegen/issue-73338-effecient-cmp.rs rename to tests/codegen/issue-73338-effecient-cmp.rs diff --git a/src/test/codegen/issue-73396-bounds-check-after-position.rs b/tests/codegen/issue-73396-bounds-check-after-position.rs similarity index 100% rename from src/test/codegen/issue-73396-bounds-check-after-position.rs rename to tests/codegen/issue-73396-bounds-check-after-position.rs diff --git a/src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs b/tests/codegen/issue-73827-bounds-check-index-in-subexpr.rs similarity index 100% rename from src/test/codegen/issue-73827-bounds-check-index-in-subexpr.rs rename to tests/codegen/issue-73827-bounds-check-index-in-subexpr.rs diff --git a/src/test/codegen/issue-75525-bounds-checks.rs b/tests/codegen/issue-75525-bounds-checks.rs similarity index 100% rename from src/test/codegen/issue-75525-bounds-checks.rs rename to tests/codegen/issue-75525-bounds-checks.rs diff --git a/src/test/codegen/issue-75546.rs b/tests/codegen/issue-75546.rs similarity index 100% rename from src/test/codegen/issue-75546.rs rename to tests/codegen/issue-75546.rs diff --git a/src/test/codegen/issue-75659.rs b/tests/codegen/issue-75659.rs similarity index 100% rename from src/test/codegen/issue-75659.rs rename to tests/codegen/issue-75659.rs diff --git a/src/test/codegen/issue-77812.rs b/tests/codegen/issue-77812.rs similarity index 100% rename from src/test/codegen/issue-77812.rs rename to tests/codegen/issue-77812.rs diff --git a/src/test/codegen/issue-81408-dllimport-thinlto-windows.rs b/tests/codegen/issue-81408-dllimport-thinlto-windows.rs similarity index 100% rename from src/test/codegen/issue-81408-dllimport-thinlto-windows.rs rename to tests/codegen/issue-81408-dllimport-thinlto-windows.rs diff --git a/src/test/codegen/issue-84268.rs b/tests/codegen/issue-84268.rs similarity index 100% rename from src/test/codegen/issue-84268.rs rename to tests/codegen/issue-84268.rs diff --git a/src/test/codegen/issue-85872-multiple-reverse.rs b/tests/codegen/issue-85872-multiple-reverse.rs similarity index 100% rename from src/test/codegen/issue-85872-multiple-reverse.rs rename to tests/codegen/issue-85872-multiple-reverse.rs diff --git a/src/test/codegen/issue-86106.rs b/tests/codegen/issue-86106.rs similarity index 100% rename from src/test/codegen/issue-86106.rs rename to tests/codegen/issue-86106.rs diff --git a/src/test/codegen/issue-96274.rs b/tests/codegen/issue-96274.rs similarity index 100% rename from src/test/codegen/issue-96274.rs rename to tests/codegen/issue-96274.rs diff --git a/src/test/codegen/issue-96497-slice-size-nowrap.rs b/tests/codegen/issue-96497-slice-size-nowrap.rs similarity index 100% rename from src/test/codegen/issue-96497-slice-size-nowrap.rs rename to tests/codegen/issue-96497-slice-size-nowrap.rs diff --git a/src/test/codegen/issue-98156-const-arg-temp-lifetime.rs b/tests/codegen/issue-98156-const-arg-temp-lifetime.rs similarity index 100% rename from src/test/codegen/issue-98156-const-arg-temp-lifetime.rs rename to tests/codegen/issue-98156-const-arg-temp-lifetime.rs diff --git a/src/test/codegen/issue-98294-get-mut-copy-from-slice-opt.rs b/tests/codegen/issue-98294-get-mut-copy-from-slice-opt.rs similarity index 100% rename from src/test/codegen/issue-98294-get-mut-copy-from-slice-opt.rs rename to tests/codegen/issue-98294-get-mut-copy-from-slice-opt.rs diff --git a/src/test/codegen/iter-repeat-n-trivial-drop.rs b/tests/codegen/iter-repeat-n-trivial-drop.rs similarity index 100% rename from src/test/codegen/iter-repeat-n-trivial-drop.rs rename to tests/codegen/iter-repeat-n-trivial-drop.rs diff --git a/src/test/codegen/layout-size-checks.rs b/tests/codegen/layout-size-checks.rs similarity index 100% rename from src/test/codegen/layout-size-checks.rs rename to tests/codegen/layout-size-checks.rs diff --git a/src/test/codegen/lifetime_start_end.rs b/tests/codegen/lifetime_start_end.rs similarity index 100% rename from src/test/codegen/lifetime_start_end.rs rename to tests/codegen/lifetime_start_end.rs diff --git a/src/test/codegen/link-dead-code.rs b/tests/codegen/link-dead-code.rs similarity index 100% rename from src/test/codegen/link-dead-code.rs rename to tests/codegen/link-dead-code.rs diff --git a/src/test/codegen/link_section.rs b/tests/codegen/link_section.rs similarity index 100% rename from src/test/codegen/link_section.rs rename to tests/codegen/link_section.rs diff --git a/src/test/codegen/loads.rs b/tests/codegen/loads.rs similarity index 100% rename from src/test/codegen/loads.rs rename to tests/codegen/loads.rs diff --git a/src/test/codegen/local-generics-in-exe-internalized.rs b/tests/codegen/local-generics-in-exe-internalized.rs similarity index 100% rename from src/test/codegen/local-generics-in-exe-internalized.rs rename to tests/codegen/local-generics-in-exe-internalized.rs diff --git a/src/test/codegen/lto-removes-invokes.rs b/tests/codegen/lto-removes-invokes.rs similarity index 100% rename from src/test/codegen/lto-removes-invokes.rs rename to tests/codegen/lto-removes-invokes.rs diff --git a/src/test/codegen/mainsubprogram.rs b/tests/codegen/mainsubprogram.rs similarity index 100% rename from src/test/codegen/mainsubprogram.rs rename to tests/codegen/mainsubprogram.rs diff --git a/src/test/codegen/mainsubprogramstart.rs b/tests/codegen/mainsubprogramstart.rs similarity index 100% rename from src/test/codegen/mainsubprogramstart.rs rename to tests/codegen/mainsubprogramstart.rs diff --git a/src/test/codegen/match-optimized.rs b/tests/codegen/match-optimized.rs similarity index 100% rename from src/test/codegen/match-optimized.rs rename to tests/codegen/match-optimized.rs diff --git a/src/test/codegen/match-optimizes-away.rs b/tests/codegen/match-optimizes-away.rs similarity index 100% rename from src/test/codegen/match-optimizes-away.rs rename to tests/codegen/match-optimizes-away.rs diff --git a/src/test/codegen/match-unoptimized.rs b/tests/codegen/match-unoptimized.rs similarity index 100% rename from src/test/codegen/match-unoptimized.rs rename to tests/codegen/match-unoptimized.rs diff --git a/src/test/codegen/mem-replace-direct-memcpy.rs b/tests/codegen/mem-replace-direct-memcpy.rs similarity index 100% rename from src/test/codegen/mem-replace-direct-memcpy.rs rename to tests/codegen/mem-replace-direct-memcpy.rs diff --git a/src/test/codegen/merge-functions.rs b/tests/codegen/merge-functions.rs similarity index 100% rename from src/test/codegen/merge-functions.rs rename to tests/codegen/merge-functions.rs diff --git a/src/test/codegen/mir-inlined-line-numbers.rs b/tests/codegen/mir-inlined-line-numbers.rs similarity index 100% rename from src/test/codegen/mir-inlined-line-numbers.rs rename to tests/codegen/mir-inlined-line-numbers.rs diff --git a/src/test/codegen/mir_zst_stores.rs b/tests/codegen/mir_zst_stores.rs similarity index 100% rename from src/test/codegen/mir_zst_stores.rs rename to tests/codegen/mir_zst_stores.rs diff --git a/src/test/codegen/naked-functions.rs b/tests/codegen/naked-functions.rs similarity index 100% rename from src/test/codegen/naked-functions.rs rename to tests/codegen/naked-functions.rs diff --git a/src/test/codegen/naked-nocoverage.rs b/tests/codegen/naked-nocoverage.rs similarity index 100% rename from src/test/codegen/naked-nocoverage.rs rename to tests/codegen/naked-nocoverage.rs diff --git a/src/test/codegen/naked-noinline.rs b/tests/codegen/naked-noinline.rs similarity index 100% rename from src/test/codegen/naked-noinline.rs rename to tests/codegen/naked-noinline.rs diff --git a/src/test/codegen/no-assumes-on-casts.rs b/tests/codegen/no-assumes-on-casts.rs similarity index 100% rename from src/test/codegen/no-assumes-on-casts.rs rename to tests/codegen/no-assumes-on-casts.rs diff --git a/src/test/codegen/no-dllimport-w-cross-lang-lto.rs b/tests/codegen/no-dllimport-w-cross-lang-lto.rs similarity index 100% rename from src/test/codegen/no-dllimport-w-cross-lang-lto.rs rename to tests/codegen/no-dllimport-w-cross-lang-lto.rs diff --git a/src/test/codegen/no-jump-tables.rs b/tests/codegen/no-jump-tables.rs similarity index 100% rename from src/test/codegen/no-jump-tables.rs rename to tests/codegen/no-jump-tables.rs diff --git a/src/test/codegen/no-plt.rs b/tests/codegen/no-plt.rs similarity index 100% rename from src/test/codegen/no-plt.rs rename to tests/codegen/no-plt.rs diff --git a/src/test/codegen/noalias-box-off.rs b/tests/codegen/noalias-box-off.rs similarity index 100% rename from src/test/codegen/noalias-box-off.rs rename to tests/codegen/noalias-box-off.rs diff --git a/src/test/codegen/noalias-box.rs b/tests/codegen/noalias-box.rs similarity index 100% rename from src/test/codegen/noalias-box.rs rename to tests/codegen/noalias-box.rs diff --git a/src/test/codegen/noalias-flag.rs b/tests/codegen/noalias-flag.rs similarity index 100% rename from src/test/codegen/noalias-flag.rs rename to tests/codegen/noalias-flag.rs diff --git a/src/test/codegen/noalias-refcell.rs b/tests/codegen/noalias-refcell.rs similarity index 100% rename from src/test/codegen/noalias-refcell.rs rename to tests/codegen/noalias-refcell.rs diff --git a/src/test/codegen/noalias-rwlockreadguard.rs b/tests/codegen/noalias-rwlockreadguard.rs similarity index 100% rename from src/test/codegen/noalias-rwlockreadguard.rs rename to tests/codegen/noalias-rwlockreadguard.rs diff --git a/src/test/codegen/noalias-unpin.rs b/tests/codegen/noalias-unpin.rs similarity index 100% rename from src/test/codegen/noalias-unpin.rs rename to tests/codegen/noalias-unpin.rs diff --git a/src/test/codegen/non-terminate/infinite-loop-1.rs b/tests/codegen/non-terminate/infinite-loop-1.rs similarity index 100% rename from src/test/codegen/non-terminate/infinite-loop-1.rs rename to tests/codegen/non-terminate/infinite-loop-1.rs diff --git a/src/test/codegen/non-terminate/infinite-loop-2.rs b/tests/codegen/non-terminate/infinite-loop-2.rs similarity index 100% rename from src/test/codegen/non-terminate/infinite-loop-2.rs rename to tests/codegen/non-terminate/infinite-loop-2.rs diff --git a/src/test/codegen/non-terminate/infinite-recursion.rs b/tests/codegen/non-terminate/infinite-recursion.rs similarity index 100% rename from src/test/codegen/non-terminate/infinite-recursion.rs rename to tests/codegen/non-terminate/infinite-recursion.rs diff --git a/src/test/codegen/non-terminate/nonempty-infinite-loop.rs b/tests/codegen/non-terminate/nonempty-infinite-loop.rs similarity index 100% rename from src/test/codegen/non-terminate/nonempty-infinite-loop.rs rename to tests/codegen/non-terminate/nonempty-infinite-loop.rs diff --git a/src/test/codegen/noreturn-uninhabited.rs b/tests/codegen/noreturn-uninhabited.rs similarity index 100% rename from src/test/codegen/noreturn-uninhabited.rs rename to tests/codegen/noreturn-uninhabited.rs diff --git a/src/test/codegen/noreturnflag.rs b/tests/codegen/noreturnflag.rs similarity index 100% rename from src/test/codegen/noreturnflag.rs rename to tests/codegen/noreturnflag.rs diff --git a/src/test/codegen/nounwind.rs b/tests/codegen/nounwind.rs similarity index 100% rename from src/test/codegen/nounwind.rs rename to tests/codegen/nounwind.rs diff --git a/src/test/codegen/nrvo.rs b/tests/codegen/nrvo.rs similarity index 100% rename from src/test/codegen/nrvo.rs rename to tests/codegen/nrvo.rs diff --git a/src/test/codegen/optimize-attr-1.rs b/tests/codegen/optimize-attr-1.rs similarity index 100% rename from src/test/codegen/optimize-attr-1.rs rename to tests/codegen/optimize-attr-1.rs diff --git a/src/test/codegen/option-nonzero-eq.rs b/tests/codegen/option-nonzero-eq.rs similarity index 100% rename from src/test/codegen/option-nonzero-eq.rs rename to tests/codegen/option-nonzero-eq.rs diff --git a/src/test/codegen/packed.rs b/tests/codegen/packed.rs similarity index 100% rename from src/test/codegen/packed.rs rename to tests/codegen/packed.rs diff --git a/src/test/codegen/panic-abort-windows.rs b/tests/codegen/panic-abort-windows.rs similarity index 100% rename from src/test/codegen/panic-abort-windows.rs rename to tests/codegen/panic-abort-windows.rs diff --git a/src/test/codegen/panic-in-drop-abort.rs b/tests/codegen/panic-in-drop-abort.rs similarity index 100% rename from src/test/codegen/panic-in-drop-abort.rs rename to tests/codegen/panic-in-drop-abort.rs diff --git a/src/test/codegen/panic-unwind-default-uwtable.rs b/tests/codegen/panic-unwind-default-uwtable.rs similarity index 100% rename from src/test/codegen/panic-unwind-default-uwtable.rs rename to tests/codegen/panic-unwind-default-uwtable.rs diff --git a/src/test/codegen/personality_lifetimes.rs b/tests/codegen/personality_lifetimes.rs similarity index 100% rename from src/test/codegen/personality_lifetimes.rs rename to tests/codegen/personality_lifetimes.rs diff --git a/src/test/codegen/pgo-counter-bias.rs b/tests/codegen/pgo-counter-bias.rs similarity index 100% rename from src/test/codegen/pgo-counter-bias.rs rename to tests/codegen/pgo-counter-bias.rs diff --git a/src/test/codegen/pgo-instrumentation.rs b/tests/codegen/pgo-instrumentation.rs similarity index 100% rename from src/test/codegen/pgo-instrumentation.rs rename to tests/codegen/pgo-instrumentation.rs diff --git a/src/test/codegen/pic-relocation-model.rs b/tests/codegen/pic-relocation-model.rs similarity index 100% rename from src/test/codegen/pic-relocation-model.rs rename to tests/codegen/pic-relocation-model.rs diff --git a/src/test/codegen/pie-relocation-model.rs b/tests/codegen/pie-relocation-model.rs similarity index 100% rename from src/test/codegen/pie-relocation-model.rs rename to tests/codegen/pie-relocation-model.rs diff --git a/src/test/codegen/refs.rs b/tests/codegen/refs.rs similarity index 100% rename from src/test/codegen/refs.rs rename to tests/codegen/refs.rs diff --git a/src/test/codegen/remap_path_prefix/aux_mod.rs b/tests/codegen/remap_path_prefix/aux_mod.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/aux_mod.rs rename to tests/codegen/remap_path_prefix/aux_mod.rs diff --git a/src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs b/tests/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs rename to tests/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs diff --git a/src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs b/tests/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs rename to tests/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs diff --git a/src/test/codegen/remap_path_prefix/issue-73167-remap-std.rs b/tests/codegen/remap_path_prefix/issue-73167-remap-std.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/issue-73167-remap-std.rs rename to tests/codegen/remap_path_prefix/issue-73167-remap-std.rs diff --git a/src/test/codegen/remap_path_prefix/main.rs b/tests/codegen/remap_path_prefix/main.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/main.rs rename to tests/codegen/remap_path_prefix/main.rs diff --git a/src/test/codegen/remap_path_prefix/xcrate-generic.rs b/tests/codegen/remap_path_prefix/xcrate-generic.rs similarity index 100% rename from src/test/codegen/remap_path_prefix/xcrate-generic.rs rename to tests/codegen/remap_path_prefix/xcrate-generic.rs diff --git a/src/test/codegen/repeat-trusted-len.rs b/tests/codegen/repeat-trusted-len.rs similarity index 100% rename from src/test/codegen/repeat-trusted-len.rs rename to tests/codegen/repeat-trusted-len.rs diff --git a/src/test/codegen/repr-transparent-aggregates-1.rs b/tests/codegen/repr-transparent-aggregates-1.rs similarity index 100% rename from src/test/codegen/repr-transparent-aggregates-1.rs rename to tests/codegen/repr-transparent-aggregates-1.rs diff --git a/src/test/codegen/repr-transparent-aggregates-2.rs b/tests/codegen/repr-transparent-aggregates-2.rs similarity index 100% rename from src/test/codegen/repr-transparent-aggregates-2.rs rename to tests/codegen/repr-transparent-aggregates-2.rs diff --git a/src/test/codegen/repr-transparent-aggregates-3.rs b/tests/codegen/repr-transparent-aggregates-3.rs similarity index 100% rename from src/test/codegen/repr-transparent-aggregates-3.rs rename to tests/codegen/repr-transparent-aggregates-3.rs diff --git a/src/test/codegen/repr-transparent-sysv64.rs b/tests/codegen/repr-transparent-sysv64.rs similarity index 100% rename from src/test/codegen/repr-transparent-sysv64.rs rename to tests/codegen/repr-transparent-sysv64.rs diff --git a/src/test/codegen/repr-transparent.rs b/tests/codegen/repr-transparent.rs similarity index 100% rename from src/test/codegen/repr-transparent.rs rename to tests/codegen/repr-transparent.rs diff --git a/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs b/tests/codegen/riscv-abi/call-llvm-intrinsics.rs similarity index 100% rename from src/test/codegen/riscv-abi/call-llvm-intrinsics.rs rename to tests/codegen/riscv-abi/call-llvm-intrinsics.rs diff --git a/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs b/tests/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs similarity index 100% rename from src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs rename to tests/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs diff --git a/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs b/tests/codegen/riscv-abi/riscv64-lp64d-abi.rs similarity index 100% rename from src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs rename to tests/codegen/riscv-abi/riscv64-lp64d-abi.rs diff --git a/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs b/tests/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs similarity index 100% rename from src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs rename to tests/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs diff --git a/src/test/codegen/sanitizer-cfi-add-canonical-jump-tables-flag.rs b/tests/codegen/sanitizer-cfi-add-canonical-jump-tables-flag.rs similarity index 100% rename from src/test/codegen/sanitizer-cfi-add-canonical-jump-tables-flag.rs rename to tests/codegen/sanitizer-cfi-add-canonical-jump-tables-flag.rs diff --git a/src/test/codegen/sanitizer-cfi-emit-type-checks.rs b/tests/codegen/sanitizer-cfi-emit-type-checks.rs similarity index 100% rename from src/test/codegen/sanitizer-cfi-emit-type-checks.rs rename to tests/codegen/sanitizer-cfi-emit-type-checks.rs diff --git a/src/test/codegen/sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs b/tests/codegen/sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs similarity index 100% rename from src/test/codegen/sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs rename to tests/codegen/sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs diff --git a/src/test/codegen/sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs b/tests/codegen/sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs similarity index 100% rename from src/test/codegen/sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs rename to tests/codegen/sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs diff --git a/src/test/codegen/sanitizer-kcfi-add-kcfi-flag.rs b/tests/codegen/sanitizer-kcfi-add-kcfi-flag.rs similarity index 100% rename from src/test/codegen/sanitizer-kcfi-add-kcfi-flag.rs rename to tests/codegen/sanitizer-kcfi-add-kcfi-flag.rs diff --git a/src/test/codegen/sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs b/tests/codegen/sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs similarity index 100% rename from src/test/codegen/sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs rename to tests/codegen/sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs diff --git a/src/test/codegen/sanitizer-memory-track-orgins.rs b/tests/codegen/sanitizer-memory-track-orgins.rs similarity index 100% rename from src/test/codegen/sanitizer-memory-track-orgins.rs rename to tests/codegen/sanitizer-memory-track-orgins.rs diff --git a/src/test/codegen/sanitizer-no-sanitize-inlining.rs b/tests/codegen/sanitizer-no-sanitize-inlining.rs similarity index 100% rename from src/test/codegen/sanitizer-no-sanitize-inlining.rs rename to tests/codegen/sanitizer-no-sanitize-inlining.rs diff --git a/src/test/codegen/sanitizer-no-sanitize.rs b/tests/codegen/sanitizer-no-sanitize.rs similarity index 100% rename from src/test/codegen/sanitizer-no-sanitize.rs rename to tests/codegen/sanitizer-no-sanitize.rs diff --git a/src/test/codegen/sanitizer-recover.rs b/tests/codegen/sanitizer-recover.rs similarity index 100% rename from src/test/codegen/sanitizer-recover.rs rename to tests/codegen/sanitizer-recover.rs diff --git a/src/test/codegen/sanitizer_memtag_attr_check.rs b/tests/codegen/sanitizer_memtag_attr_check.rs similarity index 100% rename from src/test/codegen/sanitizer_memtag_attr_check.rs rename to tests/codegen/sanitizer_memtag_attr_check.rs diff --git a/src/test/codegen/sanitizer_scs_attr_check.rs b/tests/codegen/sanitizer_scs_attr_check.rs similarity index 100% rename from src/test/codegen/sanitizer_scs_attr_check.rs rename to tests/codegen/sanitizer_scs_attr_check.rs diff --git a/src/test/codegen/scalar-pair-bool.rs b/tests/codegen/scalar-pair-bool.rs similarity index 100% rename from src/test/codegen/scalar-pair-bool.rs rename to tests/codegen/scalar-pair-bool.rs diff --git a/src/test/codegen/set-discriminant-invalid.rs b/tests/codegen/set-discriminant-invalid.rs similarity index 100% rename from src/test/codegen/set-discriminant-invalid.rs rename to tests/codegen/set-discriminant-invalid.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-log.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-log.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-extract-insert.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-extract-insert.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-extract-insert.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-extract-insert.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs similarity index 100% rename from src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs rename to tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs diff --git a/src/test/codegen/simd-wide-sum.rs b/tests/codegen/simd-wide-sum.rs similarity index 100% rename from src/test/codegen/simd-wide-sum.rs rename to tests/codegen/simd-wide-sum.rs diff --git a/src/test/codegen/simd_arith_offset.rs b/tests/codegen/simd_arith_offset.rs similarity index 100% rename from src/test/codegen/simd_arith_offset.rs rename to tests/codegen/simd_arith_offset.rs diff --git a/src/test/codegen/slice-as_chunks.rs b/tests/codegen/slice-as_chunks.rs similarity index 100% rename from src/test/codegen/slice-as_chunks.rs rename to tests/codegen/slice-as_chunks.rs diff --git a/src/test/codegen/slice-init.rs b/tests/codegen/slice-init.rs similarity index 100% rename from src/test/codegen/slice-init.rs rename to tests/codegen/slice-init.rs diff --git a/src/test/codegen/slice-iter-len-eq-zero.rs b/tests/codegen/slice-iter-len-eq-zero.rs similarity index 100% rename from src/test/codegen/slice-iter-len-eq-zero.rs rename to tests/codegen/slice-iter-len-eq-zero.rs diff --git a/src/test/codegen/slice-position-bounds-check.rs b/tests/codegen/slice-position-bounds-check.rs similarity index 100% rename from src/test/codegen/slice-position-bounds-check.rs rename to tests/codegen/slice-position-bounds-check.rs diff --git a/src/test/codegen/slice-ref-equality.rs b/tests/codegen/slice-ref-equality.rs similarity index 100% rename from src/test/codegen/slice-ref-equality.rs rename to tests/codegen/slice-ref-equality.rs diff --git a/src/test/codegen/slice-reverse.rs b/tests/codegen/slice-reverse.rs similarity index 100% rename from src/test/codegen/slice-reverse.rs rename to tests/codegen/slice-reverse.rs diff --git a/src/test/codegen/slice-windows-no-bounds-check.rs b/tests/codegen/slice-windows-no-bounds-check.rs similarity index 100% rename from src/test/codegen/slice-windows-no-bounds-check.rs rename to tests/codegen/slice-windows-no-bounds-check.rs diff --git a/src/test/codegen/slice_as_from_ptr_range.rs b/tests/codegen/slice_as_from_ptr_range.rs similarity index 100% rename from src/test/codegen/slice_as_from_ptr_range.rs rename to tests/codegen/slice_as_from_ptr_range.rs diff --git a/src/test/codegen/some-abis-do-extend-params-to-32-bits.rs b/tests/codegen/some-abis-do-extend-params-to-32-bits.rs similarity index 100% rename from src/test/codegen/some-abis-do-extend-params-to-32-bits.rs rename to tests/codegen/some-abis-do-extend-params-to-32-bits.rs diff --git a/src/test/codegen/some-global-nonnull.rs b/tests/codegen/some-global-nonnull.rs similarity index 100% rename from src/test/codegen/some-global-nonnull.rs rename to tests/codegen/some-global-nonnull.rs diff --git a/src/test/codegen/sparc-struct-abi.rs b/tests/codegen/sparc-struct-abi.rs similarity index 100% rename from src/test/codegen/sparc-struct-abi.rs rename to tests/codegen/sparc-struct-abi.rs diff --git a/src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs b/tests/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs similarity index 100% rename from src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs rename to tests/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs diff --git a/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs b/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs similarity index 100% rename from src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs rename to tests/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs diff --git a/src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs b/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs similarity index 100% rename from src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs rename to tests/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs diff --git a/src/test/codegen/sse42-implies-crc32.rs b/tests/codegen/sse42-implies-crc32.rs similarity index 100% rename from src/test/codegen/sse42-implies-crc32.rs rename to tests/codegen/sse42-implies-crc32.rs diff --git a/src/test/codegen/stack-probes-call.rs b/tests/codegen/stack-probes-call.rs similarity index 100% rename from src/test/codegen/stack-probes-call.rs rename to tests/codegen/stack-probes-call.rs diff --git a/src/test/codegen/stack-probes-inline.rs b/tests/codegen/stack-probes-inline.rs similarity index 100% rename from src/test/codegen/stack-probes-inline.rs rename to tests/codegen/stack-probes-inline.rs diff --git a/src/test/codegen/stack-protector.rs b/tests/codegen/stack-protector.rs similarity index 100% rename from src/test/codegen/stack-protector.rs rename to tests/codegen/stack-protector.rs diff --git a/src/test/codegen/static-relocation-model-msvc.rs b/tests/codegen/static-relocation-model-msvc.rs similarity index 100% rename from src/test/codegen/static-relocation-model-msvc.rs rename to tests/codegen/static-relocation-model-msvc.rs diff --git a/src/test/codegen/staticlib-external-inline-fns.rs b/tests/codegen/staticlib-external-inline-fns.rs similarity index 100% rename from src/test/codegen/staticlib-external-inline-fns.rs rename to tests/codegen/staticlib-external-inline-fns.rs diff --git a/src/test/codegen/stores.rs b/tests/codegen/stores.rs similarity index 100% rename from src/test/codegen/stores.rs rename to tests/codegen/stores.rs diff --git a/src/test/codegen/swap-large-types.rs b/tests/codegen/swap-large-types.rs similarity index 100% rename from src/test/codegen/swap-large-types.rs rename to tests/codegen/swap-large-types.rs diff --git a/src/test/codegen/swap-simd-types.rs b/tests/codegen/swap-simd-types.rs similarity index 100% rename from src/test/codegen/swap-simd-types.rs rename to tests/codegen/swap-simd-types.rs diff --git a/src/test/codegen/swap-small-types.rs b/tests/codegen/swap-small-types.rs similarity index 100% rename from src/test/codegen/swap-small-types.rs rename to tests/codegen/swap-small-types.rs diff --git a/src/test/codegen/target-cpu-on-functions.rs b/tests/codegen/target-cpu-on-functions.rs similarity index 100% rename from src/test/codegen/target-cpu-on-functions.rs rename to tests/codegen/target-cpu-on-functions.rs diff --git a/src/test/codegen/target-feature-overrides.rs b/tests/codegen/target-feature-overrides.rs similarity index 100% rename from src/test/codegen/target-feature-overrides.rs rename to tests/codegen/target-feature-overrides.rs diff --git a/src/test/codegen/thread-local.rs b/tests/codegen/thread-local.rs similarity index 100% rename from src/test/codegen/thread-local.rs rename to tests/codegen/thread-local.rs diff --git a/src/test/codegen/to_vec.rs b/tests/codegen/to_vec.rs similarity index 100% rename from src/test/codegen/to_vec.rs rename to tests/codegen/to_vec.rs diff --git a/src/test/codegen/transmute-scalar.rs b/tests/codegen/transmute-scalar.rs similarity index 100% rename from src/test/codegen/transmute-scalar.rs rename to tests/codegen/transmute-scalar.rs diff --git a/src/test/codegen/try_identity.rs b/tests/codegen/try_identity.rs similarity index 100% rename from src/test/codegen/try_identity.rs rename to tests/codegen/try_identity.rs diff --git a/src/test/codegen/try_question_mark_nop.rs b/tests/codegen/try_question_mark_nop.rs similarity index 100% rename from src/test/codegen/try_question_mark_nop.rs rename to tests/codegen/try_question_mark_nop.rs diff --git a/src/test/codegen/tune-cpu-on-functions.rs b/tests/codegen/tune-cpu-on-functions.rs similarity index 100% rename from src/test/codegen/tune-cpu-on-functions.rs rename to tests/codegen/tune-cpu-on-functions.rs diff --git a/src/test/codegen/tuple-layout-opt.rs b/tests/codegen/tuple-layout-opt.rs similarity index 100% rename from src/test/codegen/tuple-layout-opt.rs rename to tests/codegen/tuple-layout-opt.rs diff --git a/src/test/codegen/unchecked-float-casts.rs b/tests/codegen/unchecked-float-casts.rs similarity index 100% rename from src/test/codegen/unchecked-float-casts.rs rename to tests/codegen/unchecked-float-casts.rs diff --git a/src/test/codegen/unchecked_shifts.rs b/tests/codegen/unchecked_shifts.rs similarity index 100% rename from src/test/codegen/unchecked_shifts.rs rename to tests/codegen/unchecked_shifts.rs diff --git a/src/test/codegen/uninit-consts.rs b/tests/codegen/uninit-consts.rs similarity index 100% rename from src/test/codegen/uninit-consts.rs rename to tests/codegen/uninit-consts.rs diff --git a/src/test/codegen/union-abi.rs b/tests/codegen/union-abi.rs similarity index 100% rename from src/test/codegen/union-abi.rs rename to tests/codegen/union-abi.rs diff --git a/src/test/codegen/unpadded-simd.rs b/tests/codegen/unpadded-simd.rs similarity index 100% rename from src/test/codegen/unpadded-simd.rs rename to tests/codegen/unpadded-simd.rs diff --git a/src/test/codegen/unwind-abis/aapcs-unwind-abi.rs b/tests/codegen/unwind-abis/aapcs-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/aapcs-unwind-abi.rs rename to tests/codegen/unwind-abis/aapcs-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/c-unwind-abi-panic-abort.rs b/tests/codegen/unwind-abis/c-unwind-abi-panic-abort.rs similarity index 100% rename from src/test/codegen/unwind-abis/c-unwind-abi-panic-abort.rs rename to tests/codegen/unwind-abis/c-unwind-abi-panic-abort.rs diff --git a/src/test/codegen/unwind-abis/c-unwind-abi.rs b/tests/codegen/unwind-abis/c-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/c-unwind-abi.rs rename to tests/codegen/unwind-abis/c-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/cdecl-unwind-abi.rs b/tests/codegen/unwind-abis/cdecl-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/cdecl-unwind-abi.rs rename to tests/codegen/unwind-abis/cdecl-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/fastcall-unwind-abi.rs b/tests/codegen/unwind-abis/fastcall-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/fastcall-unwind-abi.rs rename to tests/codegen/unwind-abis/fastcall-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs b/tests/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs similarity index 100% rename from src/test/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs rename to tests/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs diff --git a/src/test/codegen/unwind-abis/nounwind-on-stable-panic-unwind.rs b/tests/codegen/unwind-abis/nounwind-on-stable-panic-unwind.rs similarity index 100% rename from src/test/codegen/unwind-abis/nounwind-on-stable-panic-unwind.rs rename to tests/codegen/unwind-abis/nounwind-on-stable-panic-unwind.rs diff --git a/src/test/codegen/unwind-abis/nounwind.rs b/tests/codegen/unwind-abis/nounwind.rs similarity index 100% rename from src/test/codegen/unwind-abis/nounwind.rs rename to tests/codegen/unwind-abis/nounwind.rs diff --git a/src/test/codegen/unwind-abis/stdcall-unwind-abi.rs b/tests/codegen/unwind-abis/stdcall-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/stdcall-unwind-abi.rs rename to tests/codegen/unwind-abis/stdcall-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/system-unwind-abi.rs b/tests/codegen/unwind-abis/system-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/system-unwind-abi.rs rename to tests/codegen/unwind-abis/system-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/sysv64-unwind-abi.rs b/tests/codegen/unwind-abis/sysv64-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/sysv64-unwind-abi.rs rename to tests/codegen/unwind-abis/sysv64-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/thiscall-unwind-abi.rs b/tests/codegen/unwind-abis/thiscall-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/thiscall-unwind-abi.rs rename to tests/codegen/unwind-abis/thiscall-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/vectorcall-unwind-abi.rs b/tests/codegen/unwind-abis/vectorcall-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/vectorcall-unwind-abi.rs rename to tests/codegen/unwind-abis/vectorcall-unwind-abi.rs diff --git a/src/test/codegen/unwind-abis/win64-unwind-abi.rs b/tests/codegen/unwind-abis/win64-unwind-abi.rs similarity index 100% rename from src/test/codegen/unwind-abis/win64-unwind-abi.rs rename to tests/codegen/unwind-abis/win64-unwind-abi.rs diff --git a/src/test/codegen/unwind-and-panic-abort.rs b/tests/codegen/unwind-and-panic-abort.rs similarity index 100% rename from src/test/codegen/unwind-and-panic-abort.rs rename to tests/codegen/unwind-and-panic-abort.rs diff --git a/src/test/codegen/unwind-extern-exports.rs b/tests/codegen/unwind-extern-exports.rs similarity index 100% rename from src/test/codegen/unwind-extern-exports.rs rename to tests/codegen/unwind-extern-exports.rs diff --git a/src/test/codegen/unwind-extern-imports.rs b/tests/codegen/unwind-extern-imports.rs similarity index 100% rename from src/test/codegen/unwind-extern-imports.rs rename to tests/codegen/unwind-extern-imports.rs diff --git a/src/test/codegen/used_with_arg.rs b/tests/codegen/used_with_arg.rs similarity index 100% rename from src/test/codegen/used_with_arg.rs rename to tests/codegen/used_with_arg.rs diff --git a/src/test/codegen/var-names.rs b/tests/codegen/var-names.rs similarity index 100% rename from src/test/codegen/var-names.rs rename to tests/codegen/var-names.rs diff --git a/src/test/codegen/vec-calloc-llvm14.rs b/tests/codegen/vec-calloc-llvm14.rs similarity index 100% rename from src/test/codegen/vec-calloc-llvm14.rs rename to tests/codegen/vec-calloc-llvm14.rs diff --git a/src/test/codegen/vec-calloc.rs b/tests/codegen/vec-calloc.rs similarity index 100% rename from src/test/codegen/vec-calloc.rs rename to tests/codegen/vec-calloc.rs diff --git a/src/test/codegen/vec-in-place.rs b/tests/codegen/vec-in-place.rs similarity index 100% rename from src/test/codegen/vec-in-place.rs rename to tests/codegen/vec-in-place.rs diff --git a/src/test/codegen/vec-iter-collect-len.rs b/tests/codegen/vec-iter-collect-len.rs similarity index 100% rename from src/test/codegen/vec-iter-collect-len.rs rename to tests/codegen/vec-iter-collect-len.rs diff --git a/src/test/codegen/vec-optimizes-away.rs b/tests/codegen/vec-optimizes-away.rs similarity index 100% rename from src/test/codegen/vec-optimizes-away.rs rename to tests/codegen/vec-optimizes-away.rs diff --git a/src/test/codegen/vec-shrink-panik.rs b/tests/codegen/vec-shrink-panik.rs similarity index 100% rename from src/test/codegen/vec-shrink-panik.rs rename to tests/codegen/vec-shrink-panik.rs diff --git a/src/test/codegen/vecdeque_no_panic.rs b/tests/codegen/vecdeque_no_panic.rs similarity index 100% rename from src/test/codegen/vecdeque_no_panic.rs rename to tests/codegen/vecdeque_no_panic.rs diff --git a/src/test/codegen/virtual-function-elimination-32bit.rs b/tests/codegen/virtual-function-elimination-32bit.rs similarity index 100% rename from src/test/codegen/virtual-function-elimination-32bit.rs rename to tests/codegen/virtual-function-elimination-32bit.rs diff --git a/src/test/codegen/virtual-function-elimination.rs b/tests/codegen/virtual-function-elimination.rs similarity index 100% rename from src/test/codegen/virtual-function-elimination.rs rename to tests/codegen/virtual-function-elimination.rs diff --git a/src/test/codegen/wasm_casts_trapping.rs b/tests/codegen/wasm_casts_trapping.rs similarity index 100% rename from src/test/codegen/wasm_casts_trapping.rs rename to tests/codegen/wasm_casts_trapping.rs diff --git a/src/test/codegen/x86_64-macosx-deployment-target.rs b/tests/codegen/x86_64-macosx-deployment-target.rs similarity index 100% rename from src/test/codegen/x86_64-macosx-deployment-target.rs rename to tests/codegen/x86_64-macosx-deployment-target.rs diff --git a/src/test/codegen/x86_64-no-macosx-deployment-target.rs b/tests/codegen/x86_64-no-macosx-deployment-target.rs similarity index 100% rename from src/test/codegen/x86_64-no-macosx-deployment-target.rs rename to tests/codegen/x86_64-no-macosx-deployment-target.rs diff --git a/src/test/codegen/zip.rs b/tests/codegen/zip.rs similarity index 100% rename from src/test/codegen/zip.rs rename to tests/codegen/zip.rs diff --git a/src/test/codegen/zst-offset.rs b/tests/codegen/zst-offset.rs similarity index 100% rename from src/test/codegen/zst-offset.rs rename to tests/codegen/zst-offset.rs diff --git a/src/test/debuginfo/associated-types.rs b/tests/debuginfo/associated-types.rs similarity index 100% rename from src/test/debuginfo/associated-types.rs rename to tests/debuginfo/associated-types.rs diff --git a/src/test/debuginfo/auxiliary/cross_crate_debuginfo_type_uniquing.rs b/tests/debuginfo/auxiliary/cross_crate_debuginfo_type_uniquing.rs similarity index 100% rename from src/test/debuginfo/auxiliary/cross_crate_debuginfo_type_uniquing.rs rename to tests/debuginfo/auxiliary/cross_crate_debuginfo_type_uniquing.rs diff --git a/src/test/debuginfo/auxiliary/cross_crate_spans.rs b/tests/debuginfo/auxiliary/cross_crate_spans.rs similarity index 100% rename from src/test/debuginfo/auxiliary/cross_crate_spans.rs rename to tests/debuginfo/auxiliary/cross_crate_spans.rs diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis b/tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis similarity index 100% rename from src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis rename to tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py b/tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.py similarity index 100% rename from src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py rename to tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.py diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs b/tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs similarity index 100% rename from src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs rename to tests/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs diff --git a/src/test/debuginfo/auxiliary/issue-13213-aux.rs b/tests/debuginfo/auxiliary/issue-13213-aux.rs similarity index 100% rename from src/test/debuginfo/auxiliary/issue-13213-aux.rs rename to tests/debuginfo/auxiliary/issue-13213-aux.rs diff --git a/src/test/debuginfo/auxiliary/macro-stepping.rs b/tests/debuginfo/auxiliary/macro-stepping.rs similarity index 100% rename from src/test/debuginfo/auxiliary/macro-stepping.rs rename to tests/debuginfo/auxiliary/macro-stepping.rs diff --git a/src/test/debuginfo/basic-types-globals-metadata.rs b/tests/debuginfo/basic-types-globals-metadata.rs similarity index 100% rename from src/test/debuginfo/basic-types-globals-metadata.rs rename to tests/debuginfo/basic-types-globals-metadata.rs diff --git a/src/test/debuginfo/basic-types-globals.rs b/tests/debuginfo/basic-types-globals.rs similarity index 100% rename from src/test/debuginfo/basic-types-globals.rs rename to tests/debuginfo/basic-types-globals.rs diff --git a/src/test/debuginfo/basic-types-metadata.rs b/tests/debuginfo/basic-types-metadata.rs similarity index 100% rename from src/test/debuginfo/basic-types-metadata.rs rename to tests/debuginfo/basic-types-metadata.rs diff --git a/src/test/debuginfo/basic-types-mut-globals.rs b/tests/debuginfo/basic-types-mut-globals.rs similarity index 100% rename from src/test/debuginfo/basic-types-mut-globals.rs rename to tests/debuginfo/basic-types-mut-globals.rs diff --git a/src/test/debuginfo/basic-types.rs b/tests/debuginfo/basic-types.rs similarity index 100% rename from src/test/debuginfo/basic-types.rs rename to tests/debuginfo/basic-types.rs diff --git a/src/test/debuginfo/borrowed-basic.rs b/tests/debuginfo/borrowed-basic.rs similarity index 100% rename from src/test/debuginfo/borrowed-basic.rs rename to tests/debuginfo/borrowed-basic.rs diff --git a/src/test/debuginfo/borrowed-c-style-enum.rs b/tests/debuginfo/borrowed-c-style-enum.rs similarity index 100% rename from src/test/debuginfo/borrowed-c-style-enum.rs rename to tests/debuginfo/borrowed-c-style-enum.rs diff --git a/src/test/debuginfo/borrowed-enum.rs b/tests/debuginfo/borrowed-enum.rs similarity index 100% rename from src/test/debuginfo/borrowed-enum.rs rename to tests/debuginfo/borrowed-enum.rs diff --git a/src/test/debuginfo/borrowed-struct.rs b/tests/debuginfo/borrowed-struct.rs similarity index 100% rename from src/test/debuginfo/borrowed-struct.rs rename to tests/debuginfo/borrowed-struct.rs diff --git a/src/test/debuginfo/borrowed-tuple.rs b/tests/debuginfo/borrowed-tuple.rs similarity index 100% rename from src/test/debuginfo/borrowed-tuple.rs rename to tests/debuginfo/borrowed-tuple.rs diff --git a/src/test/debuginfo/borrowed-unique-basic.rs b/tests/debuginfo/borrowed-unique-basic.rs similarity index 100% rename from src/test/debuginfo/borrowed-unique-basic.rs rename to tests/debuginfo/borrowed-unique-basic.rs diff --git a/src/test/debuginfo/box.rs b/tests/debuginfo/box.rs similarity index 100% rename from src/test/debuginfo/box.rs rename to tests/debuginfo/box.rs diff --git a/src/test/debuginfo/boxed-struct.rs b/tests/debuginfo/boxed-struct.rs similarity index 100% rename from src/test/debuginfo/boxed-struct.rs rename to tests/debuginfo/boxed-struct.rs diff --git a/src/test/debuginfo/by-value-non-immediate-argument.rs b/tests/debuginfo/by-value-non-immediate-argument.rs similarity index 100% rename from src/test/debuginfo/by-value-non-immediate-argument.rs rename to tests/debuginfo/by-value-non-immediate-argument.rs diff --git a/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs b/tests/debuginfo/by-value-self-argument-in-trait-impl.rs similarity index 100% rename from src/test/debuginfo/by-value-self-argument-in-trait-impl.rs rename to tests/debuginfo/by-value-self-argument-in-trait-impl.rs diff --git a/src/test/debuginfo/c-style-enum-in-composite.rs b/tests/debuginfo/c-style-enum-in-composite.rs similarity index 100% rename from src/test/debuginfo/c-style-enum-in-composite.rs rename to tests/debuginfo/c-style-enum-in-composite.rs diff --git a/src/test/debuginfo/c-style-enum.rs b/tests/debuginfo/c-style-enum.rs similarity index 100% rename from src/test/debuginfo/c-style-enum.rs rename to tests/debuginfo/c-style-enum.rs diff --git a/src/test/debuginfo/captured-fields-1.rs b/tests/debuginfo/captured-fields-1.rs similarity index 100% rename from src/test/debuginfo/captured-fields-1.rs rename to tests/debuginfo/captured-fields-1.rs diff --git a/src/test/debuginfo/captured-fields-2.rs b/tests/debuginfo/captured-fields-2.rs similarity index 100% rename from src/test/debuginfo/captured-fields-2.rs rename to tests/debuginfo/captured-fields-2.rs diff --git a/src/test/debuginfo/closure-in-generic-function.rs b/tests/debuginfo/closure-in-generic-function.rs similarity index 100% rename from src/test/debuginfo/closure-in-generic-function.rs rename to tests/debuginfo/closure-in-generic-function.rs diff --git a/src/test/debuginfo/collapse-debuginfo-no-attr-flag.rs b/tests/debuginfo/collapse-debuginfo-no-attr-flag.rs similarity index 100% rename from src/test/debuginfo/collapse-debuginfo-no-attr-flag.rs rename to tests/debuginfo/collapse-debuginfo-no-attr-flag.rs diff --git a/src/test/debuginfo/collapse-debuginfo-no-attr.rs b/tests/debuginfo/collapse-debuginfo-no-attr.rs similarity index 100% rename from src/test/debuginfo/collapse-debuginfo-no-attr.rs rename to tests/debuginfo/collapse-debuginfo-no-attr.rs diff --git a/src/test/debuginfo/collapse-debuginfo-with-attr-flag.rs b/tests/debuginfo/collapse-debuginfo-with-attr-flag.rs similarity index 100% rename from src/test/debuginfo/collapse-debuginfo-with-attr-flag.rs rename to tests/debuginfo/collapse-debuginfo-with-attr-flag.rs diff --git a/src/test/debuginfo/collapse-debuginfo-with-attr.rs b/tests/debuginfo/collapse-debuginfo-with-attr.rs similarity index 100% rename from src/test/debuginfo/collapse-debuginfo-with-attr.rs rename to tests/debuginfo/collapse-debuginfo-with-attr.rs diff --git a/src/test/debuginfo/constant-debug-locs.rs b/tests/debuginfo/constant-debug-locs.rs similarity index 100% rename from src/test/debuginfo/constant-debug-locs.rs rename to tests/debuginfo/constant-debug-locs.rs diff --git a/src/test/debuginfo/constant-in-match-pattern.rs b/tests/debuginfo/constant-in-match-pattern.rs similarity index 100% rename from src/test/debuginfo/constant-in-match-pattern.rs rename to tests/debuginfo/constant-in-match-pattern.rs diff --git a/src/test/debuginfo/cross-crate-spans.rs b/tests/debuginfo/cross-crate-spans.rs similarity index 100% rename from src/test/debuginfo/cross-crate-spans.rs rename to tests/debuginfo/cross-crate-spans.rs diff --git a/src/test/debuginfo/cross-crate-type-uniquing.rs b/tests/debuginfo/cross-crate-type-uniquing.rs similarity index 100% rename from src/test/debuginfo/cross-crate-type-uniquing.rs rename to tests/debuginfo/cross-crate-type-uniquing.rs diff --git a/src/test/debuginfo/destructured-fn-argument.rs b/tests/debuginfo/destructured-fn-argument.rs similarity index 100% rename from src/test/debuginfo/destructured-fn-argument.rs rename to tests/debuginfo/destructured-fn-argument.rs diff --git a/src/test/debuginfo/destructured-for-loop-variable.rs b/tests/debuginfo/destructured-for-loop-variable.rs similarity index 100% rename from src/test/debuginfo/destructured-for-loop-variable.rs rename to tests/debuginfo/destructured-for-loop-variable.rs diff --git a/src/test/debuginfo/destructured-local.rs b/tests/debuginfo/destructured-local.rs similarity index 100% rename from src/test/debuginfo/destructured-local.rs rename to tests/debuginfo/destructured-local.rs diff --git a/src/test/debuginfo/drop-locations.rs b/tests/debuginfo/drop-locations.rs similarity index 100% rename from src/test/debuginfo/drop-locations.rs rename to tests/debuginfo/drop-locations.rs diff --git a/src/test/debuginfo/duration-type.rs b/tests/debuginfo/duration-type.rs similarity index 100% rename from src/test/debuginfo/duration-type.rs rename to tests/debuginfo/duration-type.rs diff --git a/src/test/debuginfo/embedded-visualizer-point.natvis b/tests/debuginfo/embedded-visualizer-point.natvis similarity index 100% rename from src/test/debuginfo/embedded-visualizer-point.natvis rename to tests/debuginfo/embedded-visualizer-point.natvis diff --git a/src/test/debuginfo/embedded-visualizer-point.py b/tests/debuginfo/embedded-visualizer-point.py similarity index 100% rename from src/test/debuginfo/embedded-visualizer-point.py rename to tests/debuginfo/embedded-visualizer-point.py diff --git a/src/test/debuginfo/embedded-visualizer.natvis b/tests/debuginfo/embedded-visualizer.natvis similarity index 100% rename from src/test/debuginfo/embedded-visualizer.natvis rename to tests/debuginfo/embedded-visualizer.natvis diff --git a/src/test/debuginfo/embedded-visualizer.py b/tests/debuginfo/embedded-visualizer.py similarity index 100% rename from src/test/debuginfo/embedded-visualizer.py rename to tests/debuginfo/embedded-visualizer.py diff --git a/src/test/debuginfo/embedded-visualizer.rs b/tests/debuginfo/embedded-visualizer.rs similarity index 100% rename from src/test/debuginfo/embedded-visualizer.rs rename to tests/debuginfo/embedded-visualizer.rs diff --git a/src/test/debuginfo/empty-string.rs b/tests/debuginfo/empty-string.rs similarity index 100% rename from src/test/debuginfo/empty-string.rs rename to tests/debuginfo/empty-string.rs diff --git a/src/test/debuginfo/enum-thinlto.rs b/tests/debuginfo/enum-thinlto.rs similarity index 100% rename from src/test/debuginfo/enum-thinlto.rs rename to tests/debuginfo/enum-thinlto.rs diff --git a/src/test/debuginfo/evec-in-struct.rs b/tests/debuginfo/evec-in-struct.rs similarity index 100% rename from src/test/debuginfo/evec-in-struct.rs rename to tests/debuginfo/evec-in-struct.rs diff --git a/src/test/debuginfo/extern-c-fn.rs b/tests/debuginfo/extern-c-fn.rs similarity index 100% rename from src/test/debuginfo/extern-c-fn.rs rename to tests/debuginfo/extern-c-fn.rs diff --git a/src/test/debuginfo/fixed-sized-array.rs b/tests/debuginfo/fixed-sized-array.rs similarity index 100% rename from src/test/debuginfo/fixed-sized-array.rs rename to tests/debuginfo/fixed-sized-array.rs diff --git a/src/test/debuginfo/function-arg-initialization.rs b/tests/debuginfo/function-arg-initialization.rs similarity index 100% rename from src/test/debuginfo/function-arg-initialization.rs rename to tests/debuginfo/function-arg-initialization.rs diff --git a/src/test/debuginfo/function-arguments.rs b/tests/debuginfo/function-arguments.rs similarity index 100% rename from src/test/debuginfo/function-arguments.rs rename to tests/debuginfo/function-arguments.rs diff --git a/src/test/debuginfo/function-call.rs b/tests/debuginfo/function-call.rs similarity index 100% rename from src/test/debuginfo/function-call.rs rename to tests/debuginfo/function-call.rs diff --git a/src/test/debuginfo/function-names.rs b/tests/debuginfo/function-names.rs similarity index 100% rename from src/test/debuginfo/function-names.rs rename to tests/debuginfo/function-names.rs diff --git a/src/test/debuginfo/function-prologue-stepping-regular.rs b/tests/debuginfo/function-prologue-stepping-regular.rs similarity index 100% rename from src/test/debuginfo/function-prologue-stepping-regular.rs rename to tests/debuginfo/function-prologue-stepping-regular.rs diff --git a/src/test/debuginfo/gdb-char.rs b/tests/debuginfo/gdb-char.rs similarity index 100% rename from src/test/debuginfo/gdb-char.rs rename to tests/debuginfo/gdb-char.rs diff --git a/src/test/debuginfo/gdb-pretty-struct-and-enums.rs b/tests/debuginfo/gdb-pretty-struct-and-enums.rs similarity index 100% rename from src/test/debuginfo/gdb-pretty-struct-and-enums.rs rename to tests/debuginfo/gdb-pretty-struct-and-enums.rs diff --git a/src/test/debuginfo/generator-locals.rs b/tests/debuginfo/generator-locals.rs similarity index 100% rename from src/test/debuginfo/generator-locals.rs rename to tests/debuginfo/generator-locals.rs diff --git a/src/test/debuginfo/generator-objects.rs b/tests/debuginfo/generator-objects.rs similarity index 100% rename from src/test/debuginfo/generator-objects.rs rename to tests/debuginfo/generator-objects.rs diff --git a/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs b/tests/debuginfo/generic-enum-with-different-disr-sizes.rs similarity index 100% rename from src/test/debuginfo/generic-enum-with-different-disr-sizes.rs rename to tests/debuginfo/generic-enum-with-different-disr-sizes.rs diff --git a/src/test/debuginfo/generic-function.rs b/tests/debuginfo/generic-function.rs similarity index 100% rename from src/test/debuginfo/generic-function.rs rename to tests/debuginfo/generic-function.rs diff --git a/src/test/debuginfo/generic-functions-nested.rs b/tests/debuginfo/generic-functions-nested.rs similarity index 100% rename from src/test/debuginfo/generic-functions-nested.rs rename to tests/debuginfo/generic-functions-nested.rs diff --git a/src/test/debuginfo/generic-method-on-generic-struct.rs b/tests/debuginfo/generic-method-on-generic-struct.rs similarity index 100% rename from src/test/debuginfo/generic-method-on-generic-struct.rs rename to tests/debuginfo/generic-method-on-generic-struct.rs diff --git a/src/test/debuginfo/generic-static-method-on-struct-and-enum.rs b/tests/debuginfo/generic-static-method-on-struct-and-enum.rs similarity index 100% rename from src/test/debuginfo/generic-static-method-on-struct-and-enum.rs rename to tests/debuginfo/generic-static-method-on-struct-and-enum.rs diff --git a/src/test/debuginfo/generic-struct-style-enum.rs b/tests/debuginfo/generic-struct-style-enum.rs similarity index 100% rename from src/test/debuginfo/generic-struct-style-enum.rs rename to tests/debuginfo/generic-struct-style-enum.rs diff --git a/src/test/debuginfo/generic-struct.rs b/tests/debuginfo/generic-struct.rs similarity index 100% rename from src/test/debuginfo/generic-struct.rs rename to tests/debuginfo/generic-struct.rs diff --git a/src/test/debuginfo/generic-tuple-style-enum.rs b/tests/debuginfo/generic-tuple-style-enum.rs similarity index 100% rename from src/test/debuginfo/generic-tuple-style-enum.rs rename to tests/debuginfo/generic-tuple-style-enum.rs diff --git a/src/test/debuginfo/include_string.rs b/tests/debuginfo/include_string.rs similarity index 100% rename from src/test/debuginfo/include_string.rs rename to tests/debuginfo/include_string.rs diff --git a/src/test/debuginfo/issue-12886.rs b/tests/debuginfo/issue-12886.rs similarity index 100% rename from src/test/debuginfo/issue-12886.rs rename to tests/debuginfo/issue-12886.rs diff --git a/src/test/debuginfo/issue-13213.rs b/tests/debuginfo/issue-13213.rs similarity index 100% rename from src/test/debuginfo/issue-13213.rs rename to tests/debuginfo/issue-13213.rs diff --git a/src/test/debuginfo/issue-14411.rs b/tests/debuginfo/issue-14411.rs similarity index 100% rename from src/test/debuginfo/issue-14411.rs rename to tests/debuginfo/issue-14411.rs diff --git a/src/test/debuginfo/issue-22656.rs b/tests/debuginfo/issue-22656.rs similarity index 100% rename from src/test/debuginfo/issue-22656.rs rename to tests/debuginfo/issue-22656.rs diff --git a/src/test/debuginfo/issue-57822.rs b/tests/debuginfo/issue-57822.rs similarity index 100% rename from src/test/debuginfo/issue-57822.rs rename to tests/debuginfo/issue-57822.rs diff --git a/src/test/debuginfo/issue-7712.rs b/tests/debuginfo/issue-7712.rs similarity index 100% rename from src/test/debuginfo/issue-7712.rs rename to tests/debuginfo/issue-7712.rs diff --git a/src/test/debuginfo/lexical-scope-in-for-loop.rs b/tests/debuginfo/lexical-scope-in-for-loop.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-for-loop.rs rename to tests/debuginfo/lexical-scope-in-for-loop.rs diff --git a/src/test/debuginfo/lexical-scope-in-if-let.rs b/tests/debuginfo/lexical-scope-in-if-let.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-if-let.rs rename to tests/debuginfo/lexical-scope-in-if-let.rs diff --git a/src/test/debuginfo/lexical-scope-in-if.rs b/tests/debuginfo/lexical-scope-in-if.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-if.rs rename to tests/debuginfo/lexical-scope-in-if.rs diff --git a/src/test/debuginfo/lexical-scope-in-match.rs b/tests/debuginfo/lexical-scope-in-match.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-match.rs rename to tests/debuginfo/lexical-scope-in-match.rs diff --git a/src/test/debuginfo/lexical-scope-in-parameterless-closure.rs b/tests/debuginfo/lexical-scope-in-parameterless-closure.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-parameterless-closure.rs rename to tests/debuginfo/lexical-scope-in-parameterless-closure.rs diff --git a/src/test/debuginfo/lexical-scope-in-stack-closure.rs b/tests/debuginfo/lexical-scope-in-stack-closure.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-stack-closure.rs rename to tests/debuginfo/lexical-scope-in-stack-closure.rs diff --git a/src/test/debuginfo/lexical-scope-in-unconditional-loop.rs b/tests/debuginfo/lexical-scope-in-unconditional-loop.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-unconditional-loop.rs rename to tests/debuginfo/lexical-scope-in-unconditional-loop.rs diff --git a/src/test/debuginfo/lexical-scope-in-unique-closure.rs b/tests/debuginfo/lexical-scope-in-unique-closure.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-unique-closure.rs rename to tests/debuginfo/lexical-scope-in-unique-closure.rs diff --git a/src/test/debuginfo/lexical-scope-in-while.rs b/tests/debuginfo/lexical-scope-in-while.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-in-while.rs rename to tests/debuginfo/lexical-scope-in-while.rs diff --git a/src/test/debuginfo/lexical-scope-with-macro.rs b/tests/debuginfo/lexical-scope-with-macro.rs similarity index 100% rename from src/test/debuginfo/lexical-scope-with-macro.rs rename to tests/debuginfo/lexical-scope-with-macro.rs diff --git a/src/test/debuginfo/lexical-scopes-in-block-expression.rs b/tests/debuginfo/lexical-scopes-in-block-expression.rs similarity index 100% rename from src/test/debuginfo/lexical-scopes-in-block-expression.rs rename to tests/debuginfo/lexical-scopes-in-block-expression.rs diff --git a/src/test/debuginfo/limited-debuginfo.rs b/tests/debuginfo/limited-debuginfo.rs similarity index 100% rename from src/test/debuginfo/limited-debuginfo.rs rename to tests/debuginfo/limited-debuginfo.rs diff --git a/src/test/debuginfo/macro-stepping.inc b/tests/debuginfo/macro-stepping.inc similarity index 100% rename from src/test/debuginfo/macro-stepping.inc rename to tests/debuginfo/macro-stepping.inc diff --git a/src/test/debuginfo/macro-stepping.rs b/tests/debuginfo/macro-stepping.rs similarity index 100% rename from src/test/debuginfo/macro-stepping.rs rename to tests/debuginfo/macro-stepping.rs diff --git a/src/test/debuginfo/marker-types.rs b/tests/debuginfo/marker-types.rs similarity index 100% rename from src/test/debuginfo/marker-types.rs rename to tests/debuginfo/marker-types.rs diff --git a/src/test/debuginfo/method-on-enum.rs b/tests/debuginfo/method-on-enum.rs similarity index 100% rename from src/test/debuginfo/method-on-enum.rs rename to tests/debuginfo/method-on-enum.rs diff --git a/src/test/debuginfo/method-on-generic-struct.rs b/tests/debuginfo/method-on-generic-struct.rs similarity index 100% rename from src/test/debuginfo/method-on-generic-struct.rs rename to tests/debuginfo/method-on-generic-struct.rs diff --git a/src/test/debuginfo/method-on-struct.rs b/tests/debuginfo/method-on-struct.rs similarity index 100% rename from src/test/debuginfo/method-on-struct.rs rename to tests/debuginfo/method-on-struct.rs diff --git a/src/test/debuginfo/method-on-trait.rs b/tests/debuginfo/method-on-trait.rs similarity index 100% rename from src/test/debuginfo/method-on-trait.rs rename to tests/debuginfo/method-on-trait.rs diff --git a/src/test/debuginfo/method-on-tuple-struct.rs b/tests/debuginfo/method-on-tuple-struct.rs similarity index 100% rename from src/test/debuginfo/method-on-tuple-struct.rs rename to tests/debuginfo/method-on-tuple-struct.rs diff --git a/src/test/debuginfo/msvc-pretty-enums.rs b/tests/debuginfo/msvc-pretty-enums.rs similarity index 100% rename from src/test/debuginfo/msvc-pretty-enums.rs rename to tests/debuginfo/msvc-pretty-enums.rs diff --git a/src/test/debuginfo/msvc-scalarpair-params.rs b/tests/debuginfo/msvc-scalarpair-params.rs similarity index 100% rename from src/test/debuginfo/msvc-scalarpair-params.rs rename to tests/debuginfo/msvc-scalarpair-params.rs diff --git a/src/test/debuginfo/multi-byte-chars.rs b/tests/debuginfo/multi-byte-chars.rs similarity index 100% rename from src/test/debuginfo/multi-byte-chars.rs rename to tests/debuginfo/multi-byte-chars.rs diff --git a/src/test/debuginfo/multi-cgu.rs b/tests/debuginfo/multi-cgu.rs similarity index 100% rename from src/test/debuginfo/multi-cgu.rs rename to tests/debuginfo/multi-cgu.rs diff --git a/src/test/debuginfo/multiple-functions-equal-var-names.rs b/tests/debuginfo/multiple-functions-equal-var-names.rs similarity index 100% rename from src/test/debuginfo/multiple-functions-equal-var-names.rs rename to tests/debuginfo/multiple-functions-equal-var-names.rs diff --git a/src/test/debuginfo/multiple-functions.rs b/tests/debuginfo/multiple-functions.rs similarity index 100% rename from src/test/debuginfo/multiple-functions.rs rename to tests/debuginfo/multiple-functions.rs diff --git a/src/test/debuginfo/mutable-locs.rs b/tests/debuginfo/mutable-locs.rs similarity index 100% rename from src/test/debuginfo/mutable-locs.rs rename to tests/debuginfo/mutable-locs.rs diff --git a/src/test/debuginfo/mutex.rs b/tests/debuginfo/mutex.rs similarity index 100% rename from src/test/debuginfo/mutex.rs rename to tests/debuginfo/mutex.rs diff --git a/src/test/debuginfo/name-shadowing-and-scope-nesting.rs b/tests/debuginfo/name-shadowing-and-scope-nesting.rs similarity index 100% rename from src/test/debuginfo/name-shadowing-and-scope-nesting.rs rename to tests/debuginfo/name-shadowing-and-scope-nesting.rs diff --git a/src/test/debuginfo/no_mangle-info.rs b/tests/debuginfo/no_mangle-info.rs similarity index 100% rename from src/test/debuginfo/no_mangle-info.rs rename to tests/debuginfo/no_mangle-info.rs diff --git a/src/test/debuginfo/numeric-types.rs b/tests/debuginfo/numeric-types.rs similarity index 100% rename from src/test/debuginfo/numeric-types.rs rename to tests/debuginfo/numeric-types.rs diff --git a/src/test/debuginfo/option-like-enum.rs b/tests/debuginfo/option-like-enum.rs similarity index 100% rename from src/test/debuginfo/option-like-enum.rs rename to tests/debuginfo/option-like-enum.rs diff --git a/src/test/debuginfo/packed-struct-with-destructor.rs b/tests/debuginfo/packed-struct-with-destructor.rs similarity index 100% rename from src/test/debuginfo/packed-struct-with-destructor.rs rename to tests/debuginfo/packed-struct-with-destructor.rs diff --git a/src/test/debuginfo/packed-struct.rs b/tests/debuginfo/packed-struct.rs similarity index 100% rename from src/test/debuginfo/packed-struct.rs rename to tests/debuginfo/packed-struct.rs diff --git a/src/test/debuginfo/pretty-huge-vec.rs b/tests/debuginfo/pretty-huge-vec.rs similarity index 100% rename from src/test/debuginfo/pretty-huge-vec.rs rename to tests/debuginfo/pretty-huge-vec.rs diff --git a/src/test/debuginfo/pretty-slices.rs b/tests/debuginfo/pretty-slices.rs similarity index 100% rename from src/test/debuginfo/pretty-slices.rs rename to tests/debuginfo/pretty-slices.rs diff --git a/src/test/debuginfo/pretty-std-collections-hash.rs b/tests/debuginfo/pretty-std-collections-hash.rs similarity index 100% rename from src/test/debuginfo/pretty-std-collections-hash.rs rename to tests/debuginfo/pretty-std-collections-hash.rs diff --git a/src/test/debuginfo/pretty-std-collections.rs b/tests/debuginfo/pretty-std-collections.rs similarity index 100% rename from src/test/debuginfo/pretty-std-collections.rs rename to tests/debuginfo/pretty-std-collections.rs diff --git a/src/test/debuginfo/pretty-std.rs b/tests/debuginfo/pretty-std.rs similarity index 100% rename from src/test/debuginfo/pretty-std.rs rename to tests/debuginfo/pretty-std.rs diff --git a/src/test/debuginfo/pretty-uninitialized-vec.rs b/tests/debuginfo/pretty-uninitialized-vec.rs similarity index 100% rename from src/test/debuginfo/pretty-uninitialized-vec.rs rename to tests/debuginfo/pretty-uninitialized-vec.rs diff --git a/src/test/debuginfo/range-types.rs b/tests/debuginfo/range-types.rs similarity index 100% rename from src/test/debuginfo/range-types.rs rename to tests/debuginfo/range-types.rs diff --git a/src/test/debuginfo/rc_arc.rs b/tests/debuginfo/rc_arc.rs similarity index 100% rename from src/test/debuginfo/rc_arc.rs rename to tests/debuginfo/rc_arc.rs diff --git a/src/test/debuginfo/recursive-enum.rs b/tests/debuginfo/recursive-enum.rs similarity index 100% rename from src/test/debuginfo/recursive-enum.rs rename to tests/debuginfo/recursive-enum.rs diff --git a/src/test/debuginfo/recursive-struct.rs b/tests/debuginfo/recursive-struct.rs similarity index 100% rename from src/test/debuginfo/recursive-struct.rs rename to tests/debuginfo/recursive-struct.rs diff --git a/src/test/debuginfo/result-types.rs b/tests/debuginfo/result-types.rs similarity index 100% rename from src/test/debuginfo/result-types.rs rename to tests/debuginfo/result-types.rs diff --git a/src/test/debuginfo/rwlock-read.rs b/tests/debuginfo/rwlock-read.rs similarity index 100% rename from src/test/debuginfo/rwlock-read.rs rename to tests/debuginfo/rwlock-read.rs diff --git a/src/test/debuginfo/rwlock-write.rs b/tests/debuginfo/rwlock-write.rs similarity index 100% rename from src/test/debuginfo/rwlock-write.rs rename to tests/debuginfo/rwlock-write.rs diff --git a/src/test/debuginfo/self-in-default-method.rs b/tests/debuginfo/self-in-default-method.rs similarity index 100% rename from src/test/debuginfo/self-in-default-method.rs rename to tests/debuginfo/self-in-default-method.rs diff --git a/src/test/debuginfo/self-in-generic-default-method.rs b/tests/debuginfo/self-in-generic-default-method.rs similarity index 100% rename from src/test/debuginfo/self-in-generic-default-method.rs rename to tests/debuginfo/self-in-generic-default-method.rs diff --git a/src/test/debuginfo/shadowed-argument.rs b/tests/debuginfo/shadowed-argument.rs similarity index 100% rename from src/test/debuginfo/shadowed-argument.rs rename to tests/debuginfo/shadowed-argument.rs diff --git a/src/test/debuginfo/shadowed-variable.rs b/tests/debuginfo/shadowed-variable.rs similarity index 100% rename from src/test/debuginfo/shadowed-variable.rs rename to tests/debuginfo/shadowed-variable.rs diff --git a/src/test/debuginfo/should-fail.rs b/tests/debuginfo/should-fail.rs similarity index 100% rename from src/test/debuginfo/should-fail.rs rename to tests/debuginfo/should-fail.rs diff --git a/src/test/debuginfo/simd.rs b/tests/debuginfo/simd.rs similarity index 100% rename from src/test/debuginfo/simd.rs rename to tests/debuginfo/simd.rs diff --git a/src/test/debuginfo/simple-lexical-scope.rs b/tests/debuginfo/simple-lexical-scope.rs similarity index 100% rename from src/test/debuginfo/simple-lexical-scope.rs rename to tests/debuginfo/simple-lexical-scope.rs diff --git a/src/test/debuginfo/simple-struct.rs b/tests/debuginfo/simple-struct.rs similarity index 100% rename from src/test/debuginfo/simple-struct.rs rename to tests/debuginfo/simple-struct.rs diff --git a/src/test/debuginfo/simple-tuple.rs b/tests/debuginfo/simple-tuple.rs similarity index 100% rename from src/test/debuginfo/simple-tuple.rs rename to tests/debuginfo/simple-tuple.rs diff --git a/src/test/debuginfo/static-method-on-struct-and-enum.rs b/tests/debuginfo/static-method-on-struct-and-enum.rs similarity index 100% rename from src/test/debuginfo/static-method-on-struct-and-enum.rs rename to tests/debuginfo/static-method-on-struct-and-enum.rs diff --git a/src/test/debuginfo/step-into-match.rs b/tests/debuginfo/step-into-match.rs similarity index 100% rename from src/test/debuginfo/step-into-match.rs rename to tests/debuginfo/step-into-match.rs diff --git a/src/test/debuginfo/struct-in-enum.rs b/tests/debuginfo/struct-in-enum.rs similarity index 100% rename from src/test/debuginfo/struct-in-enum.rs rename to tests/debuginfo/struct-in-enum.rs diff --git a/src/test/debuginfo/struct-in-struct.rs b/tests/debuginfo/struct-in-struct.rs similarity index 100% rename from src/test/debuginfo/struct-in-struct.rs rename to tests/debuginfo/struct-in-struct.rs diff --git a/src/test/debuginfo/struct-namespace.rs b/tests/debuginfo/struct-namespace.rs similarity index 100% rename from src/test/debuginfo/struct-namespace.rs rename to tests/debuginfo/struct-namespace.rs diff --git a/src/test/debuginfo/struct-style-enum.rs b/tests/debuginfo/struct-style-enum.rs similarity index 100% rename from src/test/debuginfo/struct-style-enum.rs rename to tests/debuginfo/struct-style-enum.rs diff --git a/src/test/debuginfo/struct-with-destructor.rs b/tests/debuginfo/struct-with-destructor.rs similarity index 100% rename from src/test/debuginfo/struct-with-destructor.rs rename to tests/debuginfo/struct-with-destructor.rs diff --git a/src/test/debuginfo/text-to-include-1.txt b/tests/debuginfo/text-to-include-1.txt similarity index 100% rename from src/test/debuginfo/text-to-include-1.txt rename to tests/debuginfo/text-to-include-1.txt diff --git a/src/test/debuginfo/text-to-include-2.txt b/tests/debuginfo/text-to-include-2.txt similarity index 100% rename from src/test/debuginfo/text-to-include-2.txt rename to tests/debuginfo/text-to-include-2.txt diff --git a/src/test/debuginfo/text-to-include-3.txt b/tests/debuginfo/text-to-include-3.txt similarity index 100% rename from src/test/debuginfo/text-to-include-3.txt rename to tests/debuginfo/text-to-include-3.txt diff --git a/src/test/debuginfo/thread-names.rs b/tests/debuginfo/thread-names.rs similarity index 100% rename from src/test/debuginfo/thread-names.rs rename to tests/debuginfo/thread-names.rs diff --git a/src/test/debuginfo/thread.rs b/tests/debuginfo/thread.rs similarity index 100% rename from src/test/debuginfo/thread.rs rename to tests/debuginfo/thread.rs diff --git a/src/test/debuginfo/trait-pointers.rs b/tests/debuginfo/trait-pointers.rs similarity index 100% rename from src/test/debuginfo/trait-pointers.rs rename to tests/debuginfo/trait-pointers.rs diff --git a/src/test/debuginfo/tuple-in-struct.rs b/tests/debuginfo/tuple-in-struct.rs similarity index 100% rename from src/test/debuginfo/tuple-in-struct.rs rename to tests/debuginfo/tuple-in-struct.rs diff --git a/src/test/debuginfo/tuple-in-tuple.rs b/tests/debuginfo/tuple-in-tuple.rs similarity index 100% rename from src/test/debuginfo/tuple-in-tuple.rs rename to tests/debuginfo/tuple-in-tuple.rs diff --git a/src/test/debuginfo/tuple-struct.rs b/tests/debuginfo/tuple-struct.rs similarity index 100% rename from src/test/debuginfo/tuple-struct.rs rename to tests/debuginfo/tuple-struct.rs diff --git a/src/test/debuginfo/tuple-style-enum.rs b/tests/debuginfo/tuple-style-enum.rs similarity index 100% rename from src/test/debuginfo/tuple-style-enum.rs rename to tests/debuginfo/tuple-style-enum.rs diff --git a/src/test/debuginfo/type-names.cdb.js b/tests/debuginfo/type-names.cdb.js similarity index 100% rename from src/test/debuginfo/type-names.cdb.js rename to tests/debuginfo/type-names.cdb.js diff --git a/src/test/debuginfo/type-names.rs b/tests/debuginfo/type-names.rs similarity index 100% rename from src/test/debuginfo/type-names.rs rename to tests/debuginfo/type-names.rs diff --git a/src/test/debuginfo/union-smoke.rs b/tests/debuginfo/union-smoke.rs similarity index 100% rename from src/test/debuginfo/union-smoke.rs rename to tests/debuginfo/union-smoke.rs diff --git a/src/test/debuginfo/unique-enum.rs b/tests/debuginfo/unique-enum.rs similarity index 100% rename from src/test/debuginfo/unique-enum.rs rename to tests/debuginfo/unique-enum.rs diff --git a/src/test/debuginfo/unit-type.rs b/tests/debuginfo/unit-type.rs similarity index 100% rename from src/test/debuginfo/unit-type.rs rename to tests/debuginfo/unit-type.rs diff --git a/src/test/debuginfo/unreachable-locals.rs b/tests/debuginfo/unreachable-locals.rs similarity index 100% rename from src/test/debuginfo/unreachable-locals.rs rename to tests/debuginfo/unreachable-locals.rs diff --git a/src/test/debuginfo/unsized.rs b/tests/debuginfo/unsized.rs similarity index 100% rename from src/test/debuginfo/unsized.rs rename to tests/debuginfo/unsized.rs diff --git a/src/test/debuginfo/var-captured-in-nested-closure.rs b/tests/debuginfo/var-captured-in-nested-closure.rs similarity index 100% rename from src/test/debuginfo/var-captured-in-nested-closure.rs rename to tests/debuginfo/var-captured-in-nested-closure.rs diff --git a/src/test/debuginfo/var-captured-in-sendable-closure.rs b/tests/debuginfo/var-captured-in-sendable-closure.rs similarity index 100% rename from src/test/debuginfo/var-captured-in-sendable-closure.rs rename to tests/debuginfo/var-captured-in-sendable-closure.rs diff --git a/src/test/debuginfo/var-captured-in-stack-closure.rs b/tests/debuginfo/var-captured-in-stack-closure.rs similarity index 100% rename from src/test/debuginfo/var-captured-in-stack-closure.rs rename to tests/debuginfo/var-captured-in-stack-closure.rs diff --git a/src/test/debuginfo/vec-slices.rs b/tests/debuginfo/vec-slices.rs similarity index 100% rename from src/test/debuginfo/vec-slices.rs rename to tests/debuginfo/vec-slices.rs diff --git a/src/test/debuginfo/vec.rs b/tests/debuginfo/vec.rs similarity index 100% rename from src/test/debuginfo/vec.rs rename to tests/debuginfo/vec.rs diff --git a/src/test/incremental/add_private_fn_at_krate_root_cc/auxiliary/point.rs b/tests/incremental/add_private_fn_at_krate_root_cc/auxiliary/point.rs similarity index 100% rename from src/test/incremental/add_private_fn_at_krate_root_cc/auxiliary/point.rs rename to tests/incremental/add_private_fn_at_krate_root_cc/auxiliary/point.rs diff --git a/src/test/incremental/add_private_fn_at_krate_root_cc/struct_point.rs b/tests/incremental/add_private_fn_at_krate_root_cc/struct_point.rs similarity index 100% rename from src/test/incremental/add_private_fn_at_krate_root_cc/struct_point.rs rename to tests/incremental/add_private_fn_at_krate_root_cc/struct_point.rs diff --git a/src/test/incremental/async-lifetimes.rs b/tests/incremental/async-lifetimes.rs similarity index 100% rename from src/test/incremental/async-lifetimes.rs rename to tests/incremental/async-lifetimes.rs diff --git a/src/test/incremental/auxiliary/incremental_proc_macro_aux.rs b/tests/incremental/auxiliary/incremental_proc_macro_aux.rs similarity index 100% rename from src/test/incremental/auxiliary/incremental_proc_macro_aux.rs rename to tests/incremental/auxiliary/incremental_proc_macro_aux.rs diff --git a/src/test/incremental/auxiliary/issue-49482-macro-def.rs b/tests/incremental/auxiliary/issue-49482-macro-def.rs similarity index 100% rename from src/test/incremental/auxiliary/issue-49482-macro-def.rs rename to tests/incremental/auxiliary/issue-49482-macro-def.rs diff --git a/src/test/incremental/auxiliary/issue-49482-reexport.rs b/tests/incremental/auxiliary/issue-49482-reexport.rs similarity index 100% rename from src/test/incremental/auxiliary/issue-49482-reexport.rs rename to tests/incremental/auxiliary/issue-49482-reexport.rs diff --git a/src/test/incremental/auxiliary/issue-54059.rs b/tests/incremental/auxiliary/issue-54059.rs similarity index 100% rename from src/test/incremental/auxiliary/issue-54059.rs rename to tests/incremental/auxiliary/issue-54059.rs diff --git a/src/test/incremental/auxiliary/issue-79661.rs b/tests/incremental/auxiliary/issue-79661.rs similarity index 100% rename from src/test/incremental/auxiliary/issue-79661.rs rename to tests/incremental/auxiliary/issue-79661.rs diff --git a/src/test/incremental/auxiliary/issue-79890.rs b/tests/incremental/auxiliary/issue-79890.rs similarity index 100% rename from src/test/incremental/auxiliary/issue-79890.rs rename to tests/incremental/auxiliary/issue-79890.rs diff --git a/src/test/incremental/auxiliary/rustc-rust-log-aux.rs b/tests/incremental/auxiliary/rustc-rust-log-aux.rs similarity index 100% rename from src/test/incremental/auxiliary/rustc-rust-log-aux.rs rename to tests/incremental/auxiliary/rustc-rust-log-aux.rs diff --git a/src/test/incremental/cache_file_headers.rs b/tests/incremental/cache_file_headers.rs similarity index 100% rename from src/test/incremental/cache_file_headers.rs rename to tests/incremental/cache_file_headers.rs diff --git a/src/test/incremental/callee_caller_cross_crate/auxiliary/a.rs b/tests/incremental/callee_caller_cross_crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/callee_caller_cross_crate/auxiliary/a.rs rename to tests/incremental/callee_caller_cross_crate/auxiliary/a.rs diff --git a/src/test/incremental/callee_caller_cross_crate/b.rs b/tests/incremental/callee_caller_cross_crate/b.rs similarity index 100% rename from src/test/incremental/callee_caller_cross_crate/b.rs rename to tests/incremental/callee_caller_cross_crate/b.rs diff --git a/src/test/incremental/change_add_field/struct_point.rs b/tests/incremental/change_add_field/struct_point.rs similarity index 100% rename from src/test/incremental/change_add_field/struct_point.rs rename to tests/incremental/change_add_field/struct_point.rs diff --git a/src/test/incremental/change_crate_dep_kind.rs b/tests/incremental/change_crate_dep_kind.rs similarity index 100% rename from src/test/incremental/change_crate_dep_kind.rs rename to tests/incremental/change_crate_dep_kind.rs diff --git a/src/test/incremental/change_crate_order/auxiliary/a.rs b/tests/incremental/change_crate_order/auxiliary/a.rs similarity index 100% rename from src/test/incremental/change_crate_order/auxiliary/a.rs rename to tests/incremental/change_crate_order/auxiliary/a.rs diff --git a/src/test/incremental/change_crate_order/auxiliary/b.rs b/tests/incremental/change_crate_order/auxiliary/b.rs similarity index 100% rename from src/test/incremental/change_crate_order/auxiliary/b.rs rename to tests/incremental/change_crate_order/auxiliary/b.rs diff --git a/src/test/incremental/change_crate_order/main.rs b/tests/incremental/change_crate_order/main.rs similarity index 100% rename from src/test/incremental/change_crate_order/main.rs rename to tests/incremental/change_crate_order/main.rs diff --git a/src/test/incremental/change_implementation_cross_crate/auxiliary/a.rs b/tests/incremental/change_implementation_cross_crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/change_implementation_cross_crate/auxiliary/a.rs rename to tests/incremental/change_implementation_cross_crate/auxiliary/a.rs diff --git a/src/test/incremental/change_implementation_cross_crate/main.rs b/tests/incremental/change_implementation_cross_crate/main.rs similarity index 100% rename from src/test/incremental/change_implementation_cross_crate/main.rs rename to tests/incremental/change_implementation_cross_crate/main.rs diff --git a/src/test/incremental/change_name_of_static_in_fn.rs b/tests/incremental/change_name_of_static_in_fn.rs similarity index 100% rename from src/test/incremental/change_name_of_static_in_fn.rs rename to tests/incremental/change_name_of_static_in_fn.rs diff --git a/src/test/incremental/change_private_fn/struct_point.rs b/tests/incremental/change_private_fn/struct_point.rs similarity index 100% rename from src/test/incremental/change_private_fn/struct_point.rs rename to tests/incremental/change_private_fn/struct_point.rs diff --git a/src/test/incremental/change_private_fn_cc/auxiliary/point.rs b/tests/incremental/change_private_fn_cc/auxiliary/point.rs similarity index 100% rename from src/test/incremental/change_private_fn_cc/auxiliary/point.rs rename to tests/incremental/change_private_fn_cc/auxiliary/point.rs diff --git a/src/test/incremental/change_private_fn_cc/struct_point.rs b/tests/incremental/change_private_fn_cc/struct_point.rs similarity index 100% rename from src/test/incremental/change_private_fn_cc/struct_point.rs rename to tests/incremental/change_private_fn_cc/struct_point.rs diff --git a/src/test/incremental/change_private_impl_method/struct_point.rs b/tests/incremental/change_private_impl_method/struct_point.rs similarity index 100% rename from src/test/incremental/change_private_impl_method/struct_point.rs rename to tests/incremental/change_private_impl_method/struct_point.rs diff --git a/src/test/incremental/change_private_impl_method_cc/auxiliary/point.rs b/tests/incremental/change_private_impl_method_cc/auxiliary/point.rs similarity index 100% rename from src/test/incremental/change_private_impl_method_cc/auxiliary/point.rs rename to tests/incremental/change_private_impl_method_cc/auxiliary/point.rs diff --git a/src/test/incremental/change_private_impl_method_cc/struct_point.rs b/tests/incremental/change_private_impl_method_cc/struct_point.rs similarity index 100% rename from src/test/incremental/change_private_impl_method_cc/struct_point.rs rename to tests/incremental/change_private_impl_method_cc/struct_point.rs diff --git a/src/test/incremental/change_pub_inherent_method_body/struct_point.rs b/tests/incremental/change_pub_inherent_method_body/struct_point.rs similarity index 100% rename from src/test/incremental/change_pub_inherent_method_body/struct_point.rs rename to tests/incremental/change_pub_inherent_method_body/struct_point.rs diff --git a/src/test/incremental/change_pub_inherent_method_sig/struct_point.rs b/tests/incremental/change_pub_inherent_method_sig/struct_point.rs similarity index 100% rename from src/test/incremental/change_pub_inherent_method_sig/struct_point.rs rename to tests/incremental/change_pub_inherent_method_sig/struct_point.rs diff --git a/src/test/incremental/change_symbol_export_status.rs b/tests/incremental/change_symbol_export_status.rs similarity index 100% rename from src/test/incremental/change_symbol_export_status.rs rename to tests/incremental/change_symbol_export_status.rs diff --git a/src/test/incremental/commandline-args.rs b/tests/incremental/commandline-args.rs similarity index 100% rename from src/test/incremental/commandline-args.rs rename to tests/incremental/commandline-args.rs diff --git a/src/test/incremental/const-generics/hash-tyvid-regression-1.rs b/tests/incremental/const-generics/hash-tyvid-regression-1.rs similarity index 100% rename from src/test/incremental/const-generics/hash-tyvid-regression-1.rs rename to tests/incremental/const-generics/hash-tyvid-regression-1.rs diff --git a/src/test/incremental/const-generics/hash-tyvid-regression-2.rs b/tests/incremental/const-generics/hash-tyvid-regression-2.rs similarity index 100% rename from src/test/incremental/const-generics/hash-tyvid-regression-2.rs rename to tests/incremental/const-generics/hash-tyvid-regression-2.rs diff --git a/src/test/incremental/const-generics/hash-tyvid-regression-3.rs b/tests/incremental/const-generics/hash-tyvid-regression-3.rs similarity index 100% rename from src/test/incremental/const-generics/hash-tyvid-regression-3.rs rename to tests/incremental/const-generics/hash-tyvid-regression-3.rs diff --git a/src/test/incremental/const-generics/hash-tyvid-regression-4.rs b/tests/incremental/const-generics/hash-tyvid-regression-4.rs similarity index 100% rename from src/test/incremental/const-generics/hash-tyvid-regression-4.rs rename to tests/incremental/const-generics/hash-tyvid-regression-4.rs diff --git a/src/test/incremental/const-generics/issue-61338.rs b/tests/incremental/const-generics/issue-61338.rs similarity index 100% rename from src/test/incremental/const-generics/issue-61338.rs rename to tests/incremental/const-generics/issue-61338.rs diff --git a/src/test/incremental/const-generics/issue-61516.rs b/tests/incremental/const-generics/issue-61516.rs similarity index 100% rename from src/test/incremental/const-generics/issue-61516.rs rename to tests/incremental/const-generics/issue-61516.rs diff --git a/src/test/incremental/const-generics/issue-62536.rs b/tests/incremental/const-generics/issue-62536.rs similarity index 100% rename from src/test/incremental/const-generics/issue-62536.rs rename to tests/incremental/const-generics/issue-62536.rs diff --git a/src/test/incremental/const-generics/issue-64087.rs b/tests/incremental/const-generics/issue-64087.rs similarity index 100% rename from src/test/incremental/const-generics/issue-64087.rs rename to tests/incremental/const-generics/issue-64087.rs diff --git a/src/test/incremental/const-generics/issue-65623.rs b/tests/incremental/const-generics/issue-65623.rs similarity index 100% rename from src/test/incremental/const-generics/issue-65623.rs rename to tests/incremental/const-generics/issue-65623.rs diff --git a/src/test/incremental/const-generics/issue-68477.rs b/tests/incremental/const-generics/issue-68477.rs similarity index 100% rename from src/test/incremental/const-generics/issue-68477.rs rename to tests/incremental/const-generics/issue-68477.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-1.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-1.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-1.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-1.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-2.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-2.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-2.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-2.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-3.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-3.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-3.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-77708-3.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-82034.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-82034.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-82034.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-82034.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-1.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-1.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-1.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-1.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-3.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-3.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-3.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-85031-3.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-86953.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-86953.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-86953.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-86953.rs diff --git a/src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-88022.rs b/tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-88022.rs similarity index 100% rename from src/test/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-88022.rs rename to tests/incremental/const-generics/try_unify_abstract_const_regression_tests/issue-88022.rs diff --git a/src/test/incremental/crate_hash_reorder.rs b/tests/incremental/crate_hash_reorder.rs similarity index 100% rename from src/test/incremental/crate_hash_reorder.rs rename to tests/incremental/crate_hash_reorder.rs diff --git a/src/test/incremental/cyclic-trait-hierarchy.rs b/tests/incremental/cyclic-trait-hierarchy.rs similarity index 100% rename from src/test/incremental/cyclic-trait-hierarchy.rs rename to tests/incremental/cyclic-trait-hierarchy.rs diff --git a/src/test/incremental/delayed_span_bug.rs b/tests/incremental/delayed_span_bug.rs similarity index 100% rename from src/test/incremental/delayed_span_bug.rs rename to tests/incremental/delayed_span_bug.rs diff --git a/src/test/incremental/dirty_clean.rs b/tests/incremental/dirty_clean.rs similarity index 100% rename from src/test/incremental/dirty_clean.rs rename to tests/incremental/dirty_clean.rs diff --git a/src/test/incremental/extern_static/issue-49153.rs b/tests/incremental/extern_static/issue-49153.rs similarity index 100% rename from src/test/incremental/extern_static/issue-49153.rs rename to tests/incremental/extern_static/issue-49153.rs diff --git a/src/test/incremental/feature_gate.rs b/tests/incremental/feature_gate.rs similarity index 100% rename from src/test/incremental/feature_gate.rs rename to tests/incremental/feature_gate.rs diff --git a/src/test/incremental/foreign.rs b/tests/incremental/foreign.rs similarity index 100% rename from src/test/incremental/foreign.rs rename to tests/incremental/foreign.rs diff --git a/src/test/incremental/hash-module-order.rs b/tests/incremental/hash-module-order.rs similarity index 100% rename from src/test/incremental/hash-module-order.rs rename to tests/incremental/hash-module-order.rs diff --git a/src/test/incremental/hashes/call_expressions.rs b/tests/incremental/hashes/call_expressions.rs similarity index 100% rename from src/test/incremental/hashes/call_expressions.rs rename to tests/incremental/hashes/call_expressions.rs diff --git a/src/test/incremental/hashes/closure_expressions.rs b/tests/incremental/hashes/closure_expressions.rs similarity index 100% rename from src/test/incremental/hashes/closure_expressions.rs rename to tests/incremental/hashes/closure_expressions.rs diff --git a/src/test/incremental/hashes/consts.rs b/tests/incremental/hashes/consts.rs similarity index 100% rename from src/test/incremental/hashes/consts.rs rename to tests/incremental/hashes/consts.rs diff --git a/src/test/incremental/hashes/enum_constructors.rs b/tests/incremental/hashes/enum_constructors.rs similarity index 100% rename from src/test/incremental/hashes/enum_constructors.rs rename to tests/incremental/hashes/enum_constructors.rs diff --git a/src/test/incremental/hashes/enum_defs.rs b/tests/incremental/hashes/enum_defs.rs similarity index 100% rename from src/test/incremental/hashes/enum_defs.rs rename to tests/incremental/hashes/enum_defs.rs diff --git a/src/test/incremental/hashes/exported_vs_not.rs b/tests/incremental/hashes/exported_vs_not.rs similarity index 100% rename from src/test/incremental/hashes/exported_vs_not.rs rename to tests/incremental/hashes/exported_vs_not.rs diff --git a/src/test/incremental/hashes/extern_mods.rs b/tests/incremental/hashes/extern_mods.rs similarity index 100% rename from src/test/incremental/hashes/extern_mods.rs rename to tests/incremental/hashes/extern_mods.rs diff --git a/src/test/incremental/hashes/for_loops.rs b/tests/incremental/hashes/for_loops.rs similarity index 100% rename from src/test/incremental/hashes/for_loops.rs rename to tests/incremental/hashes/for_loops.rs diff --git a/src/test/incremental/hashes/function_interfaces.rs b/tests/incremental/hashes/function_interfaces.rs similarity index 100% rename from src/test/incremental/hashes/function_interfaces.rs rename to tests/incremental/hashes/function_interfaces.rs diff --git a/src/test/incremental/hashes/if_expressions.rs b/tests/incremental/hashes/if_expressions.rs similarity index 100% rename from src/test/incremental/hashes/if_expressions.rs rename to tests/incremental/hashes/if_expressions.rs diff --git a/src/test/incremental/hashes/indexing_expressions.rs b/tests/incremental/hashes/indexing_expressions.rs similarity index 100% rename from src/test/incremental/hashes/indexing_expressions.rs rename to tests/incremental/hashes/indexing_expressions.rs diff --git a/src/test/incremental/hashes/inherent_impls.rs b/tests/incremental/hashes/inherent_impls.rs similarity index 100% rename from src/test/incremental/hashes/inherent_impls.rs rename to tests/incremental/hashes/inherent_impls.rs diff --git a/src/test/incremental/hashes/inline_asm.rs b/tests/incremental/hashes/inline_asm.rs similarity index 100% rename from src/test/incremental/hashes/inline_asm.rs rename to tests/incremental/hashes/inline_asm.rs diff --git a/src/test/incremental/hashes/let_expressions.rs b/tests/incremental/hashes/let_expressions.rs similarity index 100% rename from src/test/incremental/hashes/let_expressions.rs rename to tests/incremental/hashes/let_expressions.rs diff --git a/src/test/incremental/hashes/loop_expressions.rs b/tests/incremental/hashes/loop_expressions.rs similarity index 100% rename from src/test/incremental/hashes/loop_expressions.rs rename to tests/incremental/hashes/loop_expressions.rs diff --git a/src/test/incremental/hashes/match_expressions.rs b/tests/incremental/hashes/match_expressions.rs similarity index 100% rename from src/test/incremental/hashes/match_expressions.rs rename to tests/incremental/hashes/match_expressions.rs diff --git a/src/test/incremental/hashes/panic_exprs.rs b/tests/incremental/hashes/panic_exprs.rs similarity index 100% rename from src/test/incremental/hashes/panic_exprs.rs rename to tests/incremental/hashes/panic_exprs.rs diff --git a/src/test/incremental/hashes/statics.rs b/tests/incremental/hashes/statics.rs similarity index 100% rename from src/test/incremental/hashes/statics.rs rename to tests/incremental/hashes/statics.rs diff --git a/src/test/incremental/hashes/struct_constructors.rs b/tests/incremental/hashes/struct_constructors.rs similarity index 100% rename from src/test/incremental/hashes/struct_constructors.rs rename to tests/incremental/hashes/struct_constructors.rs diff --git a/src/test/incremental/hashes/struct_defs.rs b/tests/incremental/hashes/struct_defs.rs similarity index 100% rename from src/test/incremental/hashes/struct_defs.rs rename to tests/incremental/hashes/struct_defs.rs diff --git a/src/test/incremental/hashes/trait_defs.rs b/tests/incremental/hashes/trait_defs.rs similarity index 100% rename from src/test/incremental/hashes/trait_defs.rs rename to tests/incremental/hashes/trait_defs.rs diff --git a/src/test/incremental/hashes/trait_impls.rs b/tests/incremental/hashes/trait_impls.rs similarity index 100% rename from src/test/incremental/hashes/trait_impls.rs rename to tests/incremental/hashes/trait_impls.rs diff --git a/src/test/incremental/hashes/type_defs.rs b/tests/incremental/hashes/type_defs.rs similarity index 100% rename from src/test/incremental/hashes/type_defs.rs rename to tests/incremental/hashes/type_defs.rs diff --git a/src/test/incremental/hashes/unary_and_binary_exprs.rs b/tests/incremental/hashes/unary_and_binary_exprs.rs similarity index 100% rename from src/test/incremental/hashes/unary_and_binary_exprs.rs rename to tests/incremental/hashes/unary_and_binary_exprs.rs diff --git a/src/test/incremental/hashes/while_let_loops.rs b/tests/incremental/hashes/while_let_loops.rs similarity index 100% rename from src/test/incremental/hashes/while_let_loops.rs rename to tests/incremental/hashes/while_let_loops.rs diff --git a/src/test/incremental/hashes/while_loops.rs b/tests/incremental/hashes/while_loops.rs similarity index 100% rename from src/test/incremental/hashes/while_loops.rs rename to tests/incremental/hashes/while_loops.rs diff --git a/src/test/incremental/hello_world.rs b/tests/incremental/hello_world.rs similarity index 100% rename from src/test/incremental/hello_world.rs rename to tests/incremental/hello_world.rs diff --git a/src/test/incremental/hygiene/auxiliary/cached_hygiene.rs b/tests/incremental/hygiene/auxiliary/cached_hygiene.rs similarity index 100% rename from src/test/incremental/hygiene/auxiliary/cached_hygiene.rs rename to tests/incremental/hygiene/auxiliary/cached_hygiene.rs diff --git a/src/test/incremental/hygiene/load_cached_hygiene.rs b/tests/incremental/hygiene/load_cached_hygiene.rs similarity index 100% rename from src/test/incremental/hygiene/load_cached_hygiene.rs rename to tests/incremental/hygiene/load_cached_hygiene.rs diff --git a/src/test/incremental/ich_method_call_trait_scope.rs b/tests/incremental/ich_method_call_trait_scope.rs similarity index 100% rename from src/test/incremental/ich_method_call_trait_scope.rs rename to tests/incremental/ich_method_call_trait_scope.rs diff --git a/src/test/incremental/ich_nested_items.rs b/tests/incremental/ich_nested_items.rs similarity index 100% rename from src/test/incremental/ich_nested_items.rs rename to tests/incremental/ich_nested_items.rs diff --git a/src/test/incremental/ich_resolve_results.rs b/tests/incremental/ich_resolve_results.rs similarity index 100% rename from src/test/incremental/ich_resolve_results.rs rename to tests/incremental/ich_resolve_results.rs diff --git a/src/test/incremental/incremental_proc_macro.rs b/tests/incremental/incremental_proc_macro.rs similarity index 100% rename from src/test/incremental/incremental_proc_macro.rs rename to tests/incremental/incremental_proc_macro.rs diff --git a/src/test/incremental/inlined_hir_34991/main.rs b/tests/incremental/inlined_hir_34991/main.rs similarity index 100% rename from src/test/incremental/inlined_hir_34991/main.rs rename to tests/incremental/inlined_hir_34991/main.rs diff --git a/src/test/incremental/issue-100521-change-struct-name-assocty.rs b/tests/incremental/issue-100521-change-struct-name-assocty.rs similarity index 100% rename from src/test/incremental/issue-100521-change-struct-name-assocty.rs rename to tests/incremental/issue-100521-change-struct-name-assocty.rs diff --git a/src/test/incremental/issue-101518.rs b/tests/incremental/issue-101518.rs similarity index 100% rename from src/test/incremental/issue-101518.rs rename to tests/incremental/issue-101518.rs diff --git a/src/test/incremental/issue-35593.rs b/tests/incremental/issue-35593.rs similarity index 100% rename from src/test/incremental/issue-35593.rs rename to tests/incremental/issue-35593.rs diff --git a/src/test/incremental/issue-38222.rs b/tests/incremental/issue-38222.rs similarity index 100% rename from src/test/incremental/issue-38222.rs rename to tests/incremental/issue-38222.rs diff --git a/src/test/incremental/issue-39569.rs b/tests/incremental/issue-39569.rs similarity index 100% rename from src/test/incremental/issue-39569.rs rename to tests/incremental/issue-39569.rs diff --git a/src/test/incremental/issue-39828/auxiliary/generic.rs b/tests/incremental/issue-39828/auxiliary/generic.rs similarity index 100% rename from src/test/incremental/issue-39828/auxiliary/generic.rs rename to tests/incremental/issue-39828/auxiliary/generic.rs diff --git a/src/test/incremental/issue-39828/issue-39828.rs b/tests/incremental/issue-39828/issue-39828.rs similarity index 100% rename from src/test/incremental/issue-39828/issue-39828.rs rename to tests/incremental/issue-39828/issue-39828.rs diff --git a/src/test/incremental/issue-42602.rs b/tests/incremental/issue-42602.rs similarity index 100% rename from src/test/incremental/issue-42602.rs rename to tests/incremental/issue-42602.rs diff --git a/src/test/incremental/issue-49043.rs b/tests/incremental/issue-49043.rs similarity index 100% rename from src/test/incremental/issue-49043.rs rename to tests/incremental/issue-49043.rs diff --git a/src/test/incremental/issue-49482.rs b/tests/incremental/issue-49482.rs similarity index 100% rename from src/test/incremental/issue-49482.rs rename to tests/incremental/issue-49482.rs diff --git a/src/test/incremental/issue-49595/auxiliary/lit_a.rs b/tests/incremental/issue-49595/auxiliary/lit_a.rs similarity index 100% rename from src/test/incremental/issue-49595/auxiliary/lit_a.rs rename to tests/incremental/issue-49595/auxiliary/lit_a.rs diff --git a/src/test/incremental/issue-49595/auxiliary/lit_b.rs b/tests/incremental/issue-49595/auxiliary/lit_b.rs similarity index 100% rename from src/test/incremental/issue-49595/auxiliary/lit_b.rs rename to tests/incremental/issue-49595/auxiliary/lit_b.rs diff --git a/src/test/incremental/issue-49595/issue-49595.rs b/tests/incremental/issue-49595/issue-49595.rs similarity index 100% rename from src/test/incremental/issue-49595/issue-49595.rs rename to tests/incremental/issue-49595/issue-49595.rs diff --git a/src/test/incremental/issue-51409.rs b/tests/incremental/issue-51409.rs similarity index 100% rename from src/test/incremental/issue-51409.rs rename to tests/incremental/issue-51409.rs diff --git a/src/test/incremental/issue-54059.rs b/tests/incremental/issue-54059.rs similarity index 100% rename from src/test/incremental/issue-54059.rs rename to tests/incremental/issue-54059.rs diff --git a/src/test/incremental/issue-54242.rs b/tests/incremental/issue-54242.rs similarity index 100% rename from src/test/incremental/issue-54242.rs rename to tests/incremental/issue-54242.rs diff --git a/src/test/incremental/issue-59523-on-implemented-is-not-unused.rs b/tests/incremental/issue-59523-on-implemented-is-not-unused.rs similarity index 100% rename from src/test/incremental/issue-59523-on-implemented-is-not-unused.rs rename to tests/incremental/issue-59523-on-implemented-is-not-unused.rs diff --git a/src/test/incremental/issue-59524-layout-scalar-valid-range-is-not-unused.rs b/tests/incremental/issue-59524-layout-scalar-valid-range-is-not-unused.rs similarity index 100% rename from src/test/incremental/issue-59524-layout-scalar-valid-range-is-not-unused.rs rename to tests/incremental/issue-59524-layout-scalar-valid-range-is-not-unused.rs diff --git a/src/test/incremental/issue-60629.rs b/tests/incremental/issue-60629.rs similarity index 100% rename from src/test/incremental/issue-60629.rs rename to tests/incremental/issue-60629.rs diff --git a/src/test/incremental/issue-61323.rs b/tests/incremental/issue-61323.rs similarity index 100% rename from src/test/incremental/issue-61323.rs rename to tests/incremental/issue-61323.rs diff --git a/src/test/incremental/issue-61530.rs b/tests/incremental/issue-61530.rs similarity index 100% rename from src/test/incremental/issue-61530.rs rename to tests/incremental/issue-61530.rs diff --git a/src/test/incremental/issue-62649-path-collisions-happen.rs b/tests/incremental/issue-62649-path-collisions-happen.rs similarity index 100% rename from src/test/incremental/issue-62649-path-collisions-happen.rs rename to tests/incremental/issue-62649-path-collisions-happen.rs diff --git a/src/test/incremental/issue-69596.rs b/tests/incremental/issue-69596.rs similarity index 100% rename from src/test/incremental/issue-69596.rs rename to tests/incremental/issue-69596.rs diff --git a/src/test/incremental/issue-72386.rs b/tests/incremental/issue-72386.rs similarity index 100% rename from src/test/incremental/issue-72386.rs rename to tests/incremental/issue-72386.rs diff --git a/src/test/incremental/issue-79661-missing-def-path-hash.rs b/tests/incremental/issue-79661-missing-def-path-hash.rs similarity index 100% rename from src/test/incremental/issue-79661-missing-def-path-hash.rs rename to tests/incremental/issue-79661-missing-def-path-hash.rs diff --git a/src/test/incremental/issue-79890-imported-crates-changed.rs b/tests/incremental/issue-79890-imported-crates-changed.rs similarity index 100% rename from src/test/incremental/issue-79890-imported-crates-changed.rs rename to tests/incremental/issue-79890-imported-crates-changed.rs diff --git a/src/test/incremental/issue-80336-invalid-span.rs b/tests/incremental/issue-80336-invalid-span.rs similarity index 100% rename from src/test/incremental/issue-80336-invalid-span.rs rename to tests/incremental/issue-80336-invalid-span.rs diff --git a/src/test/incremental/issue-80691-bad-eval-cache.rs b/tests/incremental/issue-80691-bad-eval-cache.rs similarity index 100% rename from src/test/incremental/issue-80691-bad-eval-cache.rs rename to tests/incremental/issue-80691-bad-eval-cache.rs diff --git a/src/test/incremental/issue-82920-predicate-order-miscompile.rs b/tests/incremental/issue-82920-predicate-order-miscompile.rs similarity index 100% rename from src/test/incremental/issue-82920-predicate-order-miscompile.rs rename to tests/incremental/issue-82920-predicate-order-miscompile.rs diff --git a/src/test/incremental/issue-84252-global-alloc.rs b/tests/incremental/issue-84252-global-alloc.rs similarity index 100% rename from src/test/incremental/issue-84252-global-alloc.rs rename to tests/incremental/issue-84252-global-alloc.rs diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs b/tests/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs similarity index 100% rename from src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs rename to tests/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs b/tests/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs similarity index 100% rename from src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs rename to tests/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs b/tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs similarity index 100% rename from src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs rename to tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs diff --git a/src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs b/tests/incremental/issue-85197-invalid-span/invalid_span_main.rs similarity index 100% rename from src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs rename to tests/incremental/issue-85197-invalid-span/invalid_span_main.rs diff --git a/src/test/incremental/issue-85360-eval-obligation-ice.rs b/tests/incremental/issue-85360-eval-obligation-ice.rs similarity index 100% rename from src/test/incremental/issue-85360-eval-obligation-ice.rs rename to tests/incremental/issue-85360-eval-obligation-ice.rs diff --git a/src/test/incremental/issue-86753.rs b/tests/incremental/issue-86753.rs similarity index 100% rename from src/test/incremental/issue-86753.rs rename to tests/incremental/issue-86753.rs diff --git a/src/test/incremental/issue-92163-missing-sourcefile/auxiliary/first_crate.rs b/tests/incremental/issue-92163-missing-sourcefile/auxiliary/first_crate.rs similarity index 100% rename from src/test/incremental/issue-92163-missing-sourcefile/auxiliary/first_crate.rs rename to tests/incremental/issue-92163-missing-sourcefile/auxiliary/first_crate.rs diff --git a/src/test/incremental/issue-92163-missing-sourcefile/auxiliary/second_crate.rs b/tests/incremental/issue-92163-missing-sourcefile/auxiliary/second_crate.rs similarity index 100% rename from src/test/incremental/issue-92163-missing-sourcefile/auxiliary/second_crate.rs rename to tests/incremental/issue-92163-missing-sourcefile/auxiliary/second_crate.rs diff --git a/src/test/incremental/issue-92163-missing-sourcefile/issue_92163_main.rs b/tests/incremental/issue-92163-missing-sourcefile/issue_92163_main.rs similarity index 100% rename from src/test/incremental/issue-92163-missing-sourcefile/issue_92163_main.rs rename to tests/incremental/issue-92163-missing-sourcefile/issue_92163_main.rs diff --git a/src/test/incremental/issue-92987-provisional-dep-node.rs b/tests/incremental/issue-92987-provisional-dep-node.rs similarity index 100% rename from src/test/incremental/issue-92987-provisional-dep-node.rs rename to tests/incremental/issue-92987-provisional-dep-node.rs diff --git a/src/test/incremental/issue-96319-coinductive-cycle.rs b/tests/incremental/issue-96319-coinductive-cycle.rs similarity index 100% rename from src/test/incremental/issue-96319-coinductive-cycle.rs rename to tests/incremental/issue-96319-coinductive-cycle.rs diff --git a/src/test/incremental/krate-inherent.rs b/tests/incremental/krate-inherent.rs similarity index 100% rename from src/test/incremental/krate-inherent.rs rename to tests/incremental/krate-inherent.rs diff --git a/src/test/incremental/krate-inlined.rs b/tests/incremental/krate-inlined.rs similarity index 100% rename from src/test/incremental/krate-inlined.rs rename to tests/incremental/krate-inlined.rs diff --git a/src/test/incremental/krate_reassign_34991/auxiliary/a.rs b/tests/incremental/krate_reassign_34991/auxiliary/a.rs similarity index 100% rename from src/test/incremental/krate_reassign_34991/auxiliary/a.rs rename to tests/incremental/krate_reassign_34991/auxiliary/a.rs diff --git a/src/test/incremental/krate_reassign_34991/main.rs b/tests/incremental/krate_reassign_34991/main.rs similarity index 100% rename from src/test/incremental/krate_reassign_34991/main.rs rename to tests/incremental/krate_reassign_34991/main.rs diff --git a/src/test/incremental/link_order/auxiliary/my_lib.rs b/tests/incremental/link_order/auxiliary/my_lib.rs similarity index 100% rename from src/test/incremental/link_order/auxiliary/my_lib.rs rename to tests/incremental/link_order/auxiliary/my_lib.rs diff --git a/src/test/incremental/link_order/main.rs b/tests/incremental/link_order/main.rs similarity index 100% rename from src/test/incremental/link_order/main.rs rename to tests/incremental/link_order/main.rs diff --git a/src/test/incremental/lto-in-linker.rs b/tests/incremental/lto-in-linker.rs similarity index 100% rename from src/test/incremental/lto-in-linker.rs rename to tests/incremental/lto-in-linker.rs diff --git a/src/test/incremental/lto.rs b/tests/incremental/lto.rs similarity index 100% rename from src/test/incremental/lto.rs rename to tests/incremental/lto.rs diff --git a/src/test/incremental/macro_export.rs b/tests/incremental/macro_export.rs similarity index 100% rename from src/test/incremental/macro_export.rs rename to tests/incremental/macro_export.rs diff --git a/src/test/incremental/mir-opt.rs b/tests/incremental/mir-opt.rs similarity index 100% rename from src/test/incremental/mir-opt.rs rename to tests/incremental/mir-opt.rs diff --git a/src/test/incremental/no_mangle.rs b/tests/incremental/no_mangle.rs similarity index 100% rename from src/test/incremental/no_mangle.rs rename to tests/incremental/no_mangle.rs diff --git a/src/test/incremental/remapped_paths_cc/auxiliary/extern_crate.rs b/tests/incremental/remapped_paths_cc/auxiliary/extern_crate.rs similarity index 100% rename from src/test/incremental/remapped_paths_cc/auxiliary/extern_crate.rs rename to tests/incremental/remapped_paths_cc/auxiliary/extern_crate.rs diff --git a/src/test/incremental/remapped_paths_cc/main.rs b/tests/incremental/remapped_paths_cc/main.rs similarity index 100% rename from src/test/incremental/remapped_paths_cc/main.rs rename to tests/incremental/remapped_paths_cc/main.rs diff --git a/src/test/incremental/remove-private-item-cross-crate/auxiliary/a.rs b/tests/incremental/remove-private-item-cross-crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/remove-private-item-cross-crate/auxiliary/a.rs rename to tests/incremental/remove-private-item-cross-crate/auxiliary/a.rs diff --git a/src/test/incremental/remove-private-item-cross-crate/main.rs b/tests/incremental/remove-private-item-cross-crate/main.rs similarity index 100% rename from src/test/incremental/remove-private-item-cross-crate/main.rs rename to tests/incremental/remove-private-item-cross-crate/main.rs diff --git a/src/test/incremental/remove_crate/auxiliary/extern_crate.rs b/tests/incremental/remove_crate/auxiliary/extern_crate.rs similarity index 100% rename from src/test/incremental/remove_crate/auxiliary/extern_crate.rs rename to tests/incremental/remove_crate/auxiliary/extern_crate.rs diff --git a/src/test/incremental/remove_crate/main.rs b/tests/incremental/remove_crate/main.rs similarity index 100% rename from src/test/incremental/remove_crate/main.rs rename to tests/incremental/remove_crate/main.rs diff --git a/src/test/incremental/remove_source_file/auxiliary/mod.rs b/tests/incremental/remove_source_file/auxiliary/mod.rs similarity index 100% rename from src/test/incremental/remove_source_file/auxiliary/mod.rs rename to tests/incremental/remove_source_file/auxiliary/mod.rs diff --git a/src/test/incremental/remove_source_file/main.rs b/tests/incremental/remove_source_file/main.rs similarity index 100% rename from src/test/incremental/remove_source_file/main.rs rename to tests/incremental/remove_source_file/main.rs diff --git a/src/test/incremental/reorder_vtable.rs b/tests/incremental/reorder_vtable.rs similarity index 100% rename from src/test/incremental/reorder_vtable.rs rename to tests/incremental/reorder_vtable.rs diff --git a/src/test/incremental/rlib-lto.rs b/tests/incremental/rlib-lto.rs similarity index 100% rename from src/test/incremental/rlib-lto.rs rename to tests/incremental/rlib-lto.rs diff --git a/src/test/incremental/rlib_cross_crate/auxiliary/a.rs b/tests/incremental/rlib_cross_crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/rlib_cross_crate/auxiliary/a.rs rename to tests/incremental/rlib_cross_crate/auxiliary/a.rs diff --git a/src/test/incremental/rlib_cross_crate/b.rs b/tests/incremental/rlib_cross_crate/b.rs similarity index 100% rename from src/test/incremental/rlib_cross_crate/b.rs rename to tests/incremental/rlib_cross_crate/b.rs diff --git a/src/test/incremental/rustc-rust-log.rs b/tests/incremental/rustc-rust-log.rs similarity index 100% rename from src/test/incremental/rustc-rust-log.rs rename to tests/incremental/rustc-rust-log.rs diff --git a/src/test/incremental/source_loc_macros.rs b/tests/incremental/source_loc_macros.rs similarity index 100% rename from src/test/incremental/source_loc_macros.rs rename to tests/incremental/source_loc_macros.rs diff --git a/src/test/incremental/span_hash_stable/auxiliary/mod.rs b/tests/incremental/span_hash_stable/auxiliary/mod.rs similarity index 100% rename from src/test/incremental/span_hash_stable/auxiliary/mod.rs rename to tests/incremental/span_hash_stable/auxiliary/mod.rs diff --git a/src/test/incremental/span_hash_stable/auxiliary/sub1.rs b/tests/incremental/span_hash_stable/auxiliary/sub1.rs similarity index 100% rename from src/test/incremental/span_hash_stable/auxiliary/sub1.rs rename to tests/incremental/span_hash_stable/auxiliary/sub1.rs diff --git a/src/test/incremental/span_hash_stable/auxiliary/sub2.rs b/tests/incremental/span_hash_stable/auxiliary/sub2.rs similarity index 100% rename from src/test/incremental/span_hash_stable/auxiliary/sub2.rs rename to tests/incremental/span_hash_stable/auxiliary/sub2.rs diff --git a/src/test/incremental/span_hash_stable/main.rs b/tests/incremental/span_hash_stable/main.rs similarity index 100% rename from src/test/incremental/span_hash_stable/main.rs rename to tests/incremental/span_hash_stable/main.rs diff --git a/src/test/incremental/spans_in_type_debuginfo.rs b/tests/incremental/spans_in_type_debuginfo.rs similarity index 100% rename from src/test/incremental/spans_in_type_debuginfo.rs rename to tests/incremental/spans_in_type_debuginfo.rs diff --git a/src/test/incremental/spans_significant_w_debuginfo.rs b/tests/incremental/spans_significant_w_debuginfo.rs similarity index 100% rename from src/test/incremental/spans_significant_w_debuginfo.rs rename to tests/incremental/spans_significant_w_debuginfo.rs diff --git a/src/test/incremental/spans_significant_w_panic.rs b/tests/incremental/spans_significant_w_panic.rs similarity index 100% rename from src/test/incremental/spans_significant_w_panic.rs rename to tests/incremental/spans_significant_w_panic.rs diff --git a/src/test/incremental/spike-neg1.rs b/tests/incremental/spike-neg1.rs similarity index 100% rename from src/test/incremental/spike-neg1.rs rename to tests/incremental/spike-neg1.rs diff --git a/src/test/incremental/spike-neg2.rs b/tests/incremental/spike-neg2.rs similarity index 100% rename from src/test/incremental/spike-neg2.rs rename to tests/incremental/spike-neg2.rs diff --git a/src/test/incremental/spike.rs b/tests/incremental/spike.rs similarity index 100% rename from src/test/incremental/spike.rs rename to tests/incremental/spike.rs diff --git a/src/test/incremental/split_debuginfo_cached.rs b/tests/incremental/split_debuginfo_cached.rs similarity index 100% rename from src/test/incremental/split_debuginfo_cached.rs rename to tests/incremental/split_debuginfo_cached.rs diff --git a/src/test/incremental/split_debuginfo_mode.rs b/tests/incremental/split_debuginfo_mode.rs similarity index 100% rename from src/test/incremental/split_debuginfo_mode.rs rename to tests/incremental/split_debuginfo_mode.rs diff --git a/src/test/incremental/static_cycle/b.rs b/tests/incremental/static_cycle/b.rs similarity index 100% rename from src/test/incremental/static_cycle/b.rs rename to tests/incremental/static_cycle/b.rs diff --git a/src/test/incremental/static_refering_to_other_static/issue-49081.rs b/tests/incremental/static_refering_to_other_static/issue-49081.rs similarity index 100% rename from src/test/incremental/static_refering_to_other_static/issue-49081.rs rename to tests/incremental/static_refering_to_other_static/issue-49081.rs diff --git a/src/test/incremental/static_refering_to_other_static2/issue.rs b/tests/incremental/static_refering_to_other_static2/issue.rs similarity index 100% rename from src/test/incremental/static_refering_to_other_static2/issue.rs rename to tests/incremental/static_refering_to_other_static2/issue.rs diff --git a/src/test/incremental/static_refering_to_other_static3/issue.rs b/tests/incremental/static_refering_to_other_static3/issue.rs similarity index 100% rename from src/test/incremental/static_refering_to_other_static3/issue.rs rename to tests/incremental/static_refering_to_other_static3/issue.rs diff --git a/src/test/incremental/static_stable_hash/issue-49301.rs b/tests/incremental/static_stable_hash/issue-49301.rs similarity index 100% rename from src/test/incremental/static_stable_hash/issue-49301.rs rename to tests/incremental/static_stable_hash/issue-49301.rs diff --git a/src/test/incremental/string_constant.rs b/tests/incremental/string_constant.rs similarity index 100% rename from src/test/incremental/string_constant.rs rename to tests/incremental/string_constant.rs diff --git a/src/test/incremental/struct_add_field.rs b/tests/incremental/struct_add_field.rs similarity index 100% rename from src/test/incremental/struct_add_field.rs rename to tests/incremental/struct_add_field.rs diff --git a/src/test/incremental/struct_change_field_name.rs b/tests/incremental/struct_change_field_name.rs similarity index 100% rename from src/test/incremental/struct_change_field_name.rs rename to tests/incremental/struct_change_field_name.rs diff --git a/src/test/incremental/struct_change_field_type.rs b/tests/incremental/struct_change_field_type.rs similarity index 100% rename from src/test/incremental/struct_change_field_type.rs rename to tests/incremental/struct_change_field_type.rs diff --git a/src/test/incremental/struct_change_field_type_cross_crate/auxiliary/a.rs b/tests/incremental/struct_change_field_type_cross_crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/struct_change_field_type_cross_crate/auxiliary/a.rs rename to tests/incremental/struct_change_field_type_cross_crate/auxiliary/a.rs diff --git a/src/test/incremental/struct_change_field_type_cross_crate/b.rs b/tests/incremental/struct_change_field_type_cross_crate/b.rs similarity index 100% rename from src/test/incremental/struct_change_field_type_cross_crate/b.rs rename to tests/incremental/struct_change_field_type_cross_crate/b.rs diff --git a/src/test/incremental/struct_change_nothing.rs b/tests/incremental/struct_change_nothing.rs similarity index 100% rename from src/test/incremental/struct_change_nothing.rs rename to tests/incremental/struct_change_nothing.rs diff --git a/src/test/incremental/struct_remove_field.rs b/tests/incremental/struct_remove_field.rs similarity index 100% rename from src/test/incremental/struct_remove_field.rs rename to tests/incremental/struct_remove_field.rs diff --git a/src/test/incremental/thinlto/cgu_invalidated_via_import.rs b/tests/incremental/thinlto/cgu_invalidated_via_import.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_invalidated_via_import.rs rename to tests/incremental/thinlto/cgu_invalidated_via_import.rs diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_export_added.rs b/tests/incremental/thinlto/cgu_invalidated_when_export_added.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_invalidated_when_export_added.rs rename to tests/incremental/thinlto/cgu_invalidated_when_export_added.rs diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_export_removed.rs b/tests/incremental/thinlto/cgu_invalidated_when_export_removed.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_invalidated_when_export_removed.rs rename to tests/incremental/thinlto/cgu_invalidated_when_export_removed.rs diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_import_added.rs b/tests/incremental/thinlto/cgu_invalidated_when_import_added.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_invalidated_when_import_added.rs rename to tests/incremental/thinlto/cgu_invalidated_when_import_added.rs diff --git a/src/test/incremental/thinlto/cgu_invalidated_when_import_removed.rs b/tests/incremental/thinlto/cgu_invalidated_when_import_removed.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_invalidated_when_import_removed.rs rename to tests/incremental/thinlto/cgu_invalidated_when_import_removed.rs diff --git a/src/test/incremental/thinlto/cgu_keeps_identical_fn.rs b/tests/incremental/thinlto/cgu_keeps_identical_fn.rs similarity index 100% rename from src/test/incremental/thinlto/cgu_keeps_identical_fn.rs rename to tests/incremental/thinlto/cgu_keeps_identical_fn.rs diff --git a/src/test/incremental/thinlto/independent_cgus_dont_affect_each_other.rs b/tests/incremental/thinlto/independent_cgus_dont_affect_each_other.rs similarity index 100% rename from src/test/incremental/thinlto/independent_cgus_dont_affect_each_other.rs rename to tests/incremental/thinlto/independent_cgus_dont_affect_each_other.rs diff --git a/src/test/incremental/type_alias_cross_crate/auxiliary/a.rs b/tests/incremental/type_alias_cross_crate/auxiliary/a.rs similarity index 100% rename from src/test/incremental/type_alias_cross_crate/auxiliary/a.rs rename to tests/incremental/type_alias_cross_crate/auxiliary/a.rs diff --git a/src/test/incremental/type_alias_cross_crate/b.rs b/tests/incremental/type_alias_cross_crate/b.rs similarity index 100% rename from src/test/incremental/type_alias_cross_crate/b.rs rename to tests/incremental/type_alias_cross_crate/b.rs diff --git a/src/test/incremental/unchecked_dirty_clean.rs b/tests/incremental/unchecked_dirty_clean.rs similarity index 100% rename from src/test/incremental/unchecked_dirty_clean.rs rename to tests/incremental/unchecked_dirty_clean.rs diff --git a/src/test/incremental/warnings-reemitted.rs b/tests/incremental/warnings-reemitted.rs similarity index 100% rename from src/test/incremental/warnings-reemitted.rs rename to tests/incremental/warnings-reemitted.rs diff --git a/src/test/mir-opt/76803_regression.encode.SimplifyBranchSame.diff b/tests/mir-opt/76803_regression.encode.SimplifyBranchSame.diff similarity index 100% rename from src/test/mir-opt/76803_regression.encode.SimplifyBranchSame.diff rename to tests/mir-opt/76803_regression.encode.SimplifyBranchSame.diff diff --git a/src/test/mir-opt/76803_regression.rs b/tests/mir-opt/76803_regression.rs similarity index 100% rename from src/test/mir-opt/76803_regression.rs rename to tests/mir-opt/76803_regression.rs diff --git a/src/test/mir-opt/README.md b/tests/mir-opt/README.md similarity index 100% rename from src/test/mir-opt/README.md rename to tests/mir-opt/README.md diff --git a/src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir b/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir rename to tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir b/tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir rename to tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/address_of.rs b/tests/mir-opt/address_of.rs similarity index 100% rename from src/test/mir-opt/address_of.rs rename to tests/mir-opt/address_of.rs diff --git a/src/test/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/array_index_is_temporary.rs b/tests/mir-opt/array_index_is_temporary.rs similarity index 100% rename from src/test/mir-opt/array_index_is_temporary.rs rename to tests/mir-opt/array_index_is_temporary.rs diff --git a/src/test/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir b/tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir similarity index 100% rename from src/test/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir rename to tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir diff --git a/src/test/mir-opt/asm_unwind_panic_abort.rs b/tests/mir-opt/asm_unwind_panic_abort.rs similarity index 100% rename from src/test/mir-opt/asm_unwind_panic_abort.rs rename to tests/mir-opt/asm_unwind_panic_abort.rs diff --git a/src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir rename to tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/basic_assignment.rs b/tests/mir-opt/basic_assignment.rs similarity index 100% rename from src/test/mir-opt/basic_assignment.rs rename to tests/mir-opt/basic_assignment.rs diff --git a/src/test/mir-opt/bool_compare.opt1.InstCombine.diff b/tests/mir-opt/bool_compare.opt1.InstCombine.diff similarity index 100% rename from src/test/mir-opt/bool_compare.opt1.InstCombine.diff rename to tests/mir-opt/bool_compare.opt1.InstCombine.diff diff --git a/src/test/mir-opt/bool_compare.opt2.InstCombine.diff b/tests/mir-opt/bool_compare.opt2.InstCombine.diff similarity index 100% rename from src/test/mir-opt/bool_compare.opt2.InstCombine.diff rename to tests/mir-opt/bool_compare.opt2.InstCombine.diff diff --git a/src/test/mir-opt/bool_compare.opt3.InstCombine.diff b/tests/mir-opt/bool_compare.opt3.InstCombine.diff similarity index 100% rename from src/test/mir-opt/bool_compare.opt3.InstCombine.diff rename to tests/mir-opt/bool_compare.opt3.InstCombine.diff diff --git a/src/test/mir-opt/bool_compare.opt4.InstCombine.diff b/tests/mir-opt/bool_compare.opt4.InstCombine.diff similarity index 100% rename from src/test/mir-opt/bool_compare.opt4.InstCombine.diff rename to tests/mir-opt/bool_compare.opt4.InstCombine.diff diff --git a/src/test/mir-opt/bool_compare.rs b/tests/mir-opt/bool_compare.rs similarity index 100% rename from src/test/mir-opt/bool_compare.rs rename to tests/mir-opt/bool_compare.rs diff --git a/src/test/mir-opt/box_expr.main.ElaborateDrops.before.mir b/tests/mir-opt/box_expr.main.ElaborateDrops.before.mir similarity index 100% rename from src/test/mir-opt/box_expr.main.ElaborateDrops.before.mir rename to tests/mir-opt/box_expr.main.ElaborateDrops.before.mir diff --git a/src/test/mir-opt/box_expr.rs b/tests/mir-opt/box_expr.rs similarity index 100% rename from src/test/mir-opt/box_expr.rs rename to tests/mir-opt/box_expr.rs diff --git a/src/test/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir b/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir rename to tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir diff --git a/src/test/mir-opt/building/custom/arbitrary_let.rs b/tests/mir-opt/building/custom/arbitrary_let.rs similarity index 100% rename from src/test/mir-opt/building/custom/arbitrary_let.rs rename to tests/mir-opt/building/custom/arbitrary_let.rs diff --git a/src/test/mir-opt/building/custom/consts.consts.built.after.mir b/tests/mir-opt/building/custom/consts.consts.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/consts.consts.built.after.mir rename to tests/mir-opt/building/custom/consts.consts.built.after.mir diff --git a/src/test/mir-opt/building/custom/consts.rs b/tests/mir-opt/building/custom/consts.rs similarity index 100% rename from src/test/mir-opt/building/custom/consts.rs rename to tests/mir-opt/building/custom/consts.rs diff --git a/src/test/mir-opt/building/custom/consts.statics.built.after.mir b/tests/mir-opt/building/custom/consts.statics.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/consts.statics.built.after.mir rename to tests/mir-opt/building/custom/consts.statics.built.after.mir diff --git a/src/test/mir-opt/building/custom/enums.rs b/tests/mir-opt/building/custom/enums.rs similarity index 100% rename from src/test/mir-opt/building/custom/enums.rs rename to tests/mir-opt/building/custom/enums.rs diff --git a/src/test/mir-opt/building/custom/enums.set_discr.built.after.mir b/tests/mir-opt/building/custom/enums.set_discr.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/enums.set_discr.built.after.mir rename to tests/mir-opt/building/custom/enums.set_discr.built.after.mir diff --git a/src/test/mir-opt/building/custom/enums.set_discr_repr.built.after.mir b/tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/enums.set_discr_repr.built.after.mir rename to tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir diff --git a/src/test/mir-opt/building/custom/enums.switch_bool.built.after.mir b/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/enums.switch_bool.built.after.mir rename to tests/mir-opt/building/custom/enums.switch_bool.built.after.mir diff --git a/src/test/mir-opt/building/custom/enums.switch_option.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/enums.switch_option.built.after.mir rename to tests/mir-opt/building/custom/enums.switch_option.built.after.mir diff --git a/src/test/mir-opt/building/custom/enums.switch_option_repr.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/enums.switch_option_repr.built.after.mir rename to tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.rs b/tests/mir-opt/building/custom/projections.rs similarity index 100% rename from src/test/mir-opt/building/custom/projections.rs rename to tests/mir-opt/building/custom/projections.rs diff --git a/src/test/mir-opt/building/custom/projections.set.built.after.mir b/tests/mir-opt/building/custom/projections.set.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.set.built.after.mir rename to tests/mir-opt/building/custom/projections.set.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.simple_index.built.after.mir b/tests/mir-opt/building/custom/projections.simple_index.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.simple_index.built.after.mir rename to tests/mir-opt/building/custom/projections.simple_index.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.tuples.built.after.mir b/tests/mir-opt/building/custom/projections.tuples.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.tuples.built.after.mir rename to tests/mir-opt/building/custom/projections.tuples.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.unions.built.after.mir b/tests/mir-opt/building/custom/projections.unions.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.unions.built.after.mir rename to tests/mir-opt/building/custom/projections.unions.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.unwrap.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.unwrap.built.after.mir rename to tests/mir-opt/building/custom/projections.unwrap.built.after.mir diff --git a/src/test/mir-opt/building/custom/projections.unwrap_deref.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/projections.unwrap_deref.built.after.mir rename to tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir diff --git a/src/test/mir-opt/building/custom/references.immut_ref.built.after.mir b/tests/mir-opt/building/custom/references.immut_ref.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/references.immut_ref.built.after.mir rename to tests/mir-opt/building/custom/references.immut_ref.built.after.mir diff --git a/src/test/mir-opt/building/custom/references.mut_ref.built.after.mir b/tests/mir-opt/building/custom/references.mut_ref.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/references.mut_ref.built.after.mir rename to tests/mir-opt/building/custom/references.mut_ref.built.after.mir diff --git a/src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir b/tests/mir-opt/building/custom/references.raw_pointer.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir rename to tests/mir-opt/building/custom/references.raw_pointer.built.after.mir diff --git a/src/test/mir-opt/building/custom/references.rs b/tests/mir-opt/building/custom/references.rs similarity index 100% rename from src/test/mir-opt/building/custom/references.rs rename to tests/mir-opt/building/custom/references.rs diff --git a/src/test/mir-opt/building/custom/simple_assign.rs b/tests/mir-opt/building/custom/simple_assign.rs similarity index 100% rename from src/test/mir-opt/building/custom/simple_assign.rs rename to tests/mir-opt/building/custom/simple_assign.rs diff --git a/src/test/mir-opt/building/custom/simple_assign.simple.built.after.mir b/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/simple_assign.simple.built.after.mir rename to tests/mir-opt/building/custom/simple_assign.simple.built.after.mir diff --git a/src/test/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir b/tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir rename to tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir b/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir rename to tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.direct_call.built.after.mir b/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/terminators.direct_call.built.after.mir rename to tests/mir-opt/building/custom/terminators.direct_call.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.drop_first.built.after.mir b/tests/mir-opt/building/custom/terminators.drop_first.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/terminators.drop_first.built.after.mir rename to tests/mir-opt/building/custom/terminators.drop_first.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.drop_second.built.after.mir b/tests/mir-opt/building/custom/terminators.drop_second.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/terminators.drop_second.built.after.mir rename to tests/mir-opt/building/custom/terminators.drop_second.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.indirect_call.built.after.mir b/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir similarity index 100% rename from src/test/mir-opt/building/custom/terminators.indirect_call.built.after.mir rename to tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir diff --git a/src/test/mir-opt/building/custom/terminators.rs b/tests/mir-opt/building/custom/terminators.rs similarity index 100% rename from src/test/mir-opt/building/custom/terminators.rs rename to tests/mir-opt/building/custom/terminators.rs diff --git a/src/test/mir-opt/building/enum_cast.bar.built.after.mir b/tests/mir-opt/building/enum_cast.bar.built.after.mir similarity index 100% rename from src/test/mir-opt/building/enum_cast.bar.built.after.mir rename to tests/mir-opt/building/enum_cast.bar.built.after.mir diff --git a/src/test/mir-opt/building/enum_cast.boo.built.after.mir b/tests/mir-opt/building/enum_cast.boo.built.after.mir similarity index 100% rename from src/test/mir-opt/building/enum_cast.boo.built.after.mir rename to tests/mir-opt/building/enum_cast.boo.built.after.mir diff --git a/src/test/mir-opt/building/enum_cast.droppy.built.after.mir b/tests/mir-opt/building/enum_cast.droppy.built.after.mir similarity index 100% rename from src/test/mir-opt/building/enum_cast.droppy.built.after.mir rename to tests/mir-opt/building/enum_cast.droppy.built.after.mir diff --git a/src/test/mir-opt/building/enum_cast.foo.built.after.mir b/tests/mir-opt/building/enum_cast.foo.built.after.mir similarity index 100% rename from src/test/mir-opt/building/enum_cast.foo.built.after.mir rename to tests/mir-opt/building/enum_cast.foo.built.after.mir diff --git a/src/test/mir-opt/building/enum_cast.rs b/tests/mir-opt/building/enum_cast.rs similarity index 100% rename from src/test/mir-opt/building/enum_cast.rs rename to tests/mir-opt/building/enum_cast.rs diff --git a/src/test/mir-opt/building/issue_101867.main.built.after.mir b/tests/mir-opt/building/issue_101867.main.built.after.mir similarity index 100% rename from src/test/mir-opt/building/issue_101867.main.built.after.mir rename to tests/mir-opt/building/issue_101867.main.built.after.mir diff --git a/src/test/mir-opt/building/issue_101867.rs b/tests/mir-opt/building/issue_101867.rs similarity index 100% rename from src/test/mir-opt/building/issue_101867.rs rename to tests/mir-opt/building/issue_101867.rs diff --git a/src/test/mir-opt/building/issue_49232.main.built.after.mir b/tests/mir-opt/building/issue_49232.main.built.after.mir similarity index 100% rename from src/test/mir-opt/building/issue_49232.main.built.after.mir rename to tests/mir-opt/building/issue_49232.main.built.after.mir diff --git a/src/test/mir-opt/building/issue_49232.rs b/tests/mir-opt/building/issue_49232.rs similarity index 100% rename from src/test/mir-opt/building/issue_49232.rs rename to tests/mir-opt/building/issue_49232.rs diff --git a/src/test/mir-opt/building/match_false_edges.full_tested_match.built.after.mir b/tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir similarity index 100% rename from src/test/mir-opt/building/match_false_edges.full_tested_match.built.after.mir rename to tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir diff --git a/src/test/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir b/tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir similarity index 100% rename from src/test/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir rename to tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir diff --git a/src/test/mir-opt/building/match_false_edges.main.built.after.mir b/tests/mir-opt/building/match_false_edges.main.built.after.mir similarity index 100% rename from src/test/mir-opt/building/match_false_edges.main.built.after.mir rename to tests/mir-opt/building/match_false_edges.main.built.after.mir diff --git a/src/test/mir-opt/building/match_false_edges.rs b/tests/mir-opt/building/match_false_edges.rs similarity index 100% rename from src/test/mir-opt/building/match_false_edges.rs rename to tests/mir-opt/building/match_false_edges.rs diff --git a/src/test/mir-opt/building/receiver_ptr_mutability.main.built.after.mir b/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir similarity index 100% rename from src/test/mir-opt/building/receiver_ptr_mutability.main.built.after.mir rename to tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir diff --git a/src/test/mir-opt/building/receiver_ptr_mutability.rs b/tests/mir-opt/building/receiver_ptr_mutability.rs similarity index 100% rename from src/test/mir-opt/building/receiver_ptr_mutability.rs rename to tests/mir-opt/building/receiver_ptr_mutability.rs diff --git a/src/test/mir-opt/building/simple_match.match_bool.built.after.mir b/tests/mir-opt/building/simple_match.match_bool.built.after.mir similarity index 100% rename from src/test/mir-opt/building/simple_match.match_bool.built.after.mir rename to tests/mir-opt/building/simple_match.match_bool.built.after.mir diff --git a/src/test/mir-opt/building/simple_match.rs b/tests/mir-opt/building/simple_match.rs similarity index 100% rename from src/test/mir-opt/building/simple_match.rs rename to tests/mir-opt/building/simple_match.rs diff --git a/src/test/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir b/tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir similarity index 100% rename from src/test/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir rename to tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir diff --git a/src/test/mir-opt/building/storage_live_dead_in_statics.rs b/tests/mir-opt/building/storage_live_dead_in_statics.rs similarity index 100% rename from src/test/mir-opt/building/storage_live_dead_in_statics.rs rename to tests/mir-opt/building/storage_live_dead_in_statics.rs diff --git a/src/test/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir b/tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir similarity index 100% rename from src/test/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir rename to tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir diff --git a/src/test/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir b/tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir similarity index 100% rename from src/test/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir rename to tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir diff --git a/src/test/mir-opt/building/uniform_array_move_out.rs b/tests/mir-opt/building/uniform_array_move_out.rs similarity index 100% rename from src/test/mir-opt/building/uniform_array_move_out.rs rename to tests/mir-opt/building/uniform_array_move_out.rs diff --git a/src/test/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/byte_slice.rs b/tests/mir-opt/byte_slice.rs similarity index 100% rename from src/test/mir-opt/byte_slice.rs rename to tests/mir-opt/byte_slice.rs diff --git a/src/test/mir-opt/combine_array_len.norm2.InstCombine.diff b/tests/mir-opt/combine_array_len.norm2.InstCombine.diff similarity index 100% rename from src/test/mir-opt/combine_array_len.norm2.InstCombine.diff rename to tests/mir-opt/combine_array_len.norm2.InstCombine.diff diff --git a/src/test/mir-opt/combine_array_len.rs b/tests/mir-opt/combine_array_len.rs similarity index 100% rename from src/test/mir-opt/combine_array_len.rs rename to tests/mir-opt/combine_array_len.rs diff --git a/src/test/mir-opt/combine_clone_of_primitives.rs b/tests/mir-opt/combine_clone_of_primitives.rs similarity index 100% rename from src/test/mir-opt/combine_clone_of_primitives.rs rename to tests/mir-opt/combine_clone_of_primitives.rs diff --git a/src/test/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstCombine.diff b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstCombine.diff similarity index 100% rename from src/test/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstCombine.diff rename to tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstCombine.diff diff --git a/src/test/mir-opt/const_allocation.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation.main.ConstProp.after.32bit.mir rename to tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir diff --git a/src/test/mir-opt/const_allocation.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation.main.ConstProp.after.64bit.mir rename to tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir diff --git a/src/test/mir-opt/const_allocation.rs b/tests/mir-opt/const_allocation.rs similarity index 100% rename from src/test/mir-opt/const_allocation.rs rename to tests/mir-opt/const_allocation.rs diff --git a/src/test/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir rename to tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir diff --git a/src/test/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir rename to tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir diff --git a/src/test/mir-opt/const_allocation2.rs b/tests/mir-opt/const_allocation2.rs similarity index 100% rename from src/test/mir-opt/const_allocation2.rs rename to tests/mir-opt/const_allocation2.rs diff --git a/src/test/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir rename to tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir diff --git a/src/test/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir similarity index 100% rename from src/test/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir rename to tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir diff --git a/src/test/mir-opt/const_allocation3.rs b/tests/mir-opt/const_allocation3.rs similarity index 100% rename from src/test/mir-opt/const_allocation3.rs rename to tests/mir-opt/const_allocation3.rs diff --git a/src/test/mir-opt/const_debuginfo.main.ConstDebugInfo.diff b/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff similarity index 100% rename from src/test/mir-opt/const_debuginfo.main.ConstDebugInfo.diff rename to tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff diff --git a/src/test/mir-opt/const_debuginfo.rs b/tests/mir-opt/const_debuginfo.rs similarity index 100% rename from src/test/mir-opt/const_debuginfo.rs rename to tests/mir-opt/const_debuginfo.rs diff --git a/src/test/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff b/tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff similarity index 100% rename from src/test/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff rename to tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff diff --git a/src/test/mir-opt/const_goto.rs b/tests/mir-opt/const_goto.rs similarity index 100% rename from src/test/mir-opt/const_goto.rs rename to tests/mir-opt/const_goto.rs diff --git a/src/test/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff b/tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff similarity index 100% rename from src/test/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff rename to tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff diff --git a/src/test/mir-opt/const_goto_const_eval_fail.rs b/tests/mir-opt/const_goto_const_eval_fail.rs similarity index 100% rename from src/test/mir-opt/const_goto_const_eval_fail.rs rename to tests/mir-opt/const_goto_const_eval_fail.rs diff --git a/src/test/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff b/tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff similarity index 100% rename from src/test/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff rename to tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff diff --git a/src/test/mir-opt/const_goto_storage.rs b/tests/mir-opt/const_goto_storage.rs similarity index 100% rename from src/test/mir-opt/const_goto_storage.rs rename to tests/mir-opt/const_goto_storage.rs diff --git a/src/test/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff b/tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff rename to tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff diff --git a/src/test/mir-opt/const_promotion_extern_static.BOP.built.after.mir b/tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.BOP.built.after.mir rename to tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir diff --git a/src/test/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff b/tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff rename to tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff diff --git a/src/test/mir-opt/const_promotion_extern_static.rs b/tests/mir-opt/const_promotion_extern_static.rs similarity index 100% rename from src/test/mir-opt/const_promotion_extern_static.rs rename to tests/mir-opt/const_promotion_extern_static.rs diff --git a/src/test/mir-opt/const_prop/aggregate.main.ConstProp.diff b/tests/mir-opt/const_prop/aggregate.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/aggregate.main.ConstProp.diff rename to tests/mir-opt/const_prop/aggregate.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/aggregate.main.PreCodegen.after.mir b/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/const_prop/aggregate.main.PreCodegen.after.mir rename to tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.mir diff --git a/src/test/mir-opt/const_prop/aggregate.rs b/tests/mir-opt/const_prop/aggregate.rs similarity index 100% rename from src/test/mir-opt/const_prop/aggregate.rs rename to tests/mir-opt/const_prop/aggregate.rs diff --git a/src/test/mir-opt/const_prop/array_index.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/array_index.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/array_index.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/array_index.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/array_index.rs b/tests/mir-opt/const_prop/array_index.rs similarity index 100% rename from src/test/mir-opt/const_prop/array_index.rs rename to tests/mir-opt/const_prop/array_index.rs diff --git a/src/test/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.diff b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.diff rename to tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/bad_op_div_by_zero.rs b/tests/mir-opt/const_prop/bad_op_div_by_zero.rs similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_div_by_zero.rs rename to tests/mir-opt/const_prop/bad_op_div_by_zero.rs diff --git a/src/test/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.diff b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.diff rename to tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/bad_op_mod_by_zero.rs b/tests/mir-opt/const_prop/bad_op_mod_by_zero.rs similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_mod_by_zero.rs rename to tests/mir-opt/const_prop/bad_op_mod_by_zero.rs diff --git a/src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.rs b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.rs similarity index 100% rename from src/test/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.rs rename to tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.rs diff --git a/src/test/mir-opt/const_prop/boolean_identities.rs b/tests/mir-opt/const_prop/boolean_identities.rs similarity index 100% rename from src/test/mir-opt/const_prop/boolean_identities.rs rename to tests/mir-opt/const_prop/boolean_identities.rs diff --git a/src/test/mir-opt/const_prop/boolean_identities.test.ConstProp.diff b/tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/boolean_identities.test.ConstProp.diff rename to tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/boxes.main.ConstProp.diff b/tests/mir-opt/const_prop/boxes.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/boxes.main.ConstProp.diff rename to tests/mir-opt/const_prop/boxes.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/boxes.rs b/tests/mir-opt/const_prop/boxes.rs similarity index 100% rename from src/test/mir-opt/const_prop/boxes.rs rename to tests/mir-opt/const_prop/boxes.rs diff --git a/src/test/mir-opt/const_prop/cast.main.ConstProp.diff b/tests/mir-opt/const_prop/cast.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/cast.main.ConstProp.diff rename to tests/mir-opt/const_prop/cast.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/cast.rs b/tests/mir-opt/const_prop/cast.rs similarity index 100% rename from src/test/mir-opt/const_prop/cast.rs rename to tests/mir-opt/const_prop/cast.rs diff --git a/src/test/mir-opt/const_prop/checked_add.main.ConstProp.diff b/tests/mir-opt/const_prop/checked_add.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/checked_add.main.ConstProp.diff rename to tests/mir-opt/const_prop/checked_add.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/checked_add.rs b/tests/mir-opt/const_prop/checked_add.rs similarity index 100% rename from src/test/mir-opt/const_prop/checked_add.rs rename to tests/mir-opt/const_prop/checked_add.rs diff --git a/src/test/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.diff b/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.diff rename to tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/const_prop_fails_gracefully.rs b/tests/mir-opt/const_prop/const_prop_fails_gracefully.rs similarity index 100% rename from src/test/mir-opt/const_prop/const_prop_fails_gracefully.rs rename to tests/mir-opt/const_prop/const_prop_fails_gracefully.rs diff --git a/src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff b/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff rename to tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir b/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir similarity index 100% rename from src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir rename to tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir diff --git a/src/test/mir-opt/const_prop/control_flow_simplification.rs b/tests/mir-opt/const_prop/control_flow_simplification.rs similarity index 100% rename from src/test/mir-opt/const_prop/control_flow_simplification.rs rename to tests/mir-opt/const_prop/control_flow_simplification.rs diff --git a/src/test/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/discriminant.rs b/tests/mir-opt/const_prop/discriminant.rs similarity index 100% rename from src/test/mir-opt/const_prop/discriminant.rs rename to tests/mir-opt/const_prop/discriminant.rs diff --git a/src/test/mir-opt/const_prop/indirect.main.ConstProp.diff b/tests/mir-opt/const_prop/indirect.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/indirect.main.ConstProp.diff rename to tests/mir-opt/const_prop/indirect.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/indirect.rs b/tests/mir-opt/const_prop/indirect.rs similarity index 100% rename from src/test/mir-opt/const_prop/indirect.rs rename to tests/mir-opt/const_prop/indirect.rs diff --git a/src/test/mir-opt/const_prop/invalid_constant.main.ConstProp.diff b/tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/invalid_constant.main.ConstProp.diff rename to tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/invalid_constant.rs b/tests/mir-opt/const_prop/invalid_constant.rs similarity index 100% rename from src/test/mir-opt/const_prop/invalid_constant.rs rename to tests/mir-opt/const_prop/invalid_constant.rs diff --git a/src/test/mir-opt/const_prop/issue_66971.main.ConstProp.diff b/tests/mir-opt/const_prop/issue_66971.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/issue_66971.main.ConstProp.diff rename to tests/mir-opt/const_prop/issue_66971.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/issue_66971.rs b/tests/mir-opt/const_prop/issue_66971.rs similarity index 100% rename from src/test/mir-opt/const_prop/issue_66971.rs rename to tests/mir-opt/const_prop/issue_66971.rs diff --git a/src/test/mir-opt/const_prop/issue_67019.main.ConstProp.diff b/tests/mir-opt/const_prop/issue_67019.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/issue_67019.main.ConstProp.diff rename to tests/mir-opt/const_prop/issue_67019.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/issue_67019.rs b/tests/mir-opt/const_prop/issue_67019.rs similarity index 100% rename from src/test/mir-opt/const_prop/issue_67019.rs rename to tests/mir-opt/const_prop/issue_67019.rs diff --git a/src/test/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/large_array_index.rs b/tests/mir-opt/const_prop/large_array_index.rs similarity index 100% rename from src/test/mir-opt/const_prop/large_array_index.rs rename to tests/mir-opt/const_prop/large_array_index.rs diff --git a/src/test/mir-opt/const_prop/mult_by_zero.rs b/tests/mir-opt/const_prop/mult_by_zero.rs similarity index 100% rename from src/test/mir-opt/const_prop/mult_by_zero.rs rename to tests/mir-opt/const_prop/mult_by_zero.rs diff --git a/src/test/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff b/tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff rename to tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable.rs b/tests/mir-opt/const_prop/mutable_variable.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable.rs rename to tests/mir-opt/const_prop/mutable_variable.rs diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate.rs b/tests/mir-opt/const_prop/mutable_variable_aggregate.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate.rs rename to tests/mir-opt/const_prop/mutable_variable_aggregate.rs diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs rename to tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable_aggregate_partial_read.rs b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_aggregate_partial_read.rs rename to tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.rs diff --git a/src/test/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable_no_prop.rs b/tests/mir-opt/const_prop/mutable_variable_no_prop.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_no_prop.rs rename to tests/mir-opt/const_prop/mutable_variable_no_prop.rs diff --git a/src/test/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.diff rename to tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/mutable_variable_unprop_assign.rs b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs similarity index 100% rename from src/test/mir-opt/const_prop/mutable_variable_unprop_assign.rs rename to tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/optimizes_into_variable.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.32bit.mir b/tests/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.32bit.mir similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.32bit.mir rename to tests/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.32bit.mir diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.64bit.mir b/tests/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.64bit.mir similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.64bit.mir rename to tests/mir-opt/const_prop/optimizes_into_variable.main.PreCodegen.after.64bit.mir diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.diff b/tests/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.diff rename to tests/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.diff diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.diff b/tests/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.diff rename to tests/mir-opt/const_prop/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.diff diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.mir b/tests/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.mir similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.mir rename to tests/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.mir diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.mir b/tests/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.mir similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.mir rename to tests/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.mir diff --git a/src/test/mir-opt/const_prop/optimizes_into_variable.rs b/tests/mir-opt/const_prop/optimizes_into_variable.rs similarity index 100% rename from src/test/mir-opt/const_prop/optimizes_into_variable.rs rename to tests/mir-opt/const_prop/optimizes_into_variable.rs diff --git a/src/test/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff b/tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff rename to tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/read_immutable_static.rs b/tests/mir-opt/const_prop/read_immutable_static.rs similarity index 100% rename from src/test/mir-opt/const_prop/read_immutable_static.rs rename to tests/mir-opt/const_prop/read_immutable_static.rs diff --git a/src/test/mir-opt/const_prop/ref_deref.main.ConstProp.diff b/tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref.main.ConstProp.diff rename to tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/ref_deref.main.PromoteTemps.diff b/tests/mir-opt/const_prop/ref_deref.main.PromoteTemps.diff similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref.main.PromoteTemps.diff rename to tests/mir-opt/const_prop/ref_deref.main.PromoteTemps.diff diff --git a/src/test/mir-opt/const_prop/ref_deref.rs b/tests/mir-opt/const_prop/ref_deref.rs similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref.rs rename to tests/mir-opt/const_prop/ref_deref.rs diff --git a/src/test/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff b/tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff rename to tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/ref_deref_project.main.PromoteTemps.diff b/tests/mir-opt/const_prop/ref_deref_project.main.PromoteTemps.diff similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref_project.main.PromoteTemps.diff rename to tests/mir-opt/const_prop/ref_deref_project.main.PromoteTemps.diff diff --git a/src/test/mir-opt/const_prop/ref_deref_project.rs b/tests/mir-opt/const_prop/ref_deref_project.rs similarity index 100% rename from src/test/mir-opt/const_prop/ref_deref_project.rs rename to tests/mir-opt/const_prop/ref_deref_project.rs diff --git a/src/test/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff b/tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff rename to tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/reify_fn_ptr.rs b/tests/mir-opt/const_prop/reify_fn_ptr.rs similarity index 100% rename from src/test/mir-opt/const_prop/reify_fn_ptr.rs rename to tests/mir-opt/const_prop/reify_fn_ptr.rs diff --git a/src/test/mir-opt/const_prop/repeat.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/repeat.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/repeat.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/repeat.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/repeat.rs b/tests/mir-opt/const_prop/repeat.rs similarity index 100% rename from src/test/mir-opt/const_prop/repeat.rs rename to tests/mir-opt/const_prop/repeat.rs diff --git a/src/test/mir-opt/const_prop/return_place.add.ConstProp.diff b/tests/mir-opt/const_prop/return_place.add.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/return_place.add.ConstProp.diff rename to tests/mir-opt/const_prop/return_place.add.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/return_place.add.PreCodegen.before.mir b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.mir similarity index 100% rename from src/test/mir-opt/const_prop/return_place.add.PreCodegen.before.mir rename to tests/mir-opt/const_prop/return_place.add.PreCodegen.before.mir diff --git a/src/test/mir-opt/const_prop/return_place.rs b/tests/mir-opt/const_prop/return_place.rs similarity index 100% rename from src/test/mir-opt/const_prop/return_place.rs rename to tests/mir-opt/const_prop/return_place.rs diff --git a/src/test/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.diff b/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.diff rename to tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/scalar_literal_propagation.rs b/tests/mir-opt/const_prop/scalar_literal_propagation.rs similarity index 100% rename from src/test/mir-opt/const_prop/scalar_literal_propagation.rs rename to tests/mir-opt/const_prop/scalar_literal_propagation.rs diff --git a/src/test/mir-opt/const_prop/slice_len.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/slice_len.main.ConstProp.32bit.diff rename to tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.diff diff --git a/src/test/mir-opt/const_prop/slice_len.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.diff similarity index 100% rename from src/test/mir-opt/const_prop/slice_len.main.ConstProp.64bit.diff rename to tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.diff diff --git a/src/test/mir-opt/const_prop/slice_len.rs b/tests/mir-opt/const_prop/slice_len.rs similarity index 100% rename from src/test/mir-opt/const_prop/slice_len.rs rename to tests/mir-opt/const_prop/slice_len.rs diff --git a/src/test/mir-opt/const_prop/switch_int.main.ConstProp.diff b/tests/mir-opt/const_prop/switch_int.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/switch_int.main.ConstProp.diff rename to tests/mir-opt/const_prop/switch_int.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.diff b/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.diff similarity index 100% rename from src/test/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.diff rename to tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.diff diff --git a/src/test/mir-opt/const_prop/switch_int.rs b/tests/mir-opt/const_prop/switch_int.rs similarity index 100% rename from src/test/mir-opt/const_prop/switch_int.rs rename to tests/mir-opt/const_prop/switch_int.rs diff --git a/src/test/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.diff rename to tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.diff diff --git a/src/test/mir-opt/const_prop/tuple_literal_propagation.rs b/tests/mir-opt/const_prop/tuple_literal_propagation.rs similarity index 100% rename from src/test/mir-opt/const_prop/tuple_literal_propagation.rs rename to tests/mir-opt/const_prop/tuple_literal_propagation.rs diff --git a/src/test/mir-opt/const_prop_miscompile.bar.ConstProp.diff b/tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop_miscompile.bar.ConstProp.diff rename to tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff diff --git a/src/test/mir-opt/const_prop_miscompile.foo.ConstProp.diff b/tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff similarity index 100% rename from src/test/mir-opt/const_prop_miscompile.foo.ConstProp.diff rename to tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff diff --git a/src/test/mir-opt/const_prop_miscompile.rs b/tests/mir-opt/const_prop_miscompile.rs similarity index 100% rename from src/test/mir-opt/const_prop_miscompile.rs rename to tests/mir-opt/const_prop_miscompile.rs diff --git a/src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot b/tests/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot similarity index 100% rename from src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot rename to tests/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot diff --git a/src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot b/tests/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot similarity index 100% rename from src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot rename to tests/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot diff --git a/src/test/mir-opt/coverage_graphviz.rs b/tests/mir-opt/coverage_graphviz.rs similarity index 100% rename from src/test/mir-opt/coverage_graphviz.rs rename to tests/mir-opt/coverage_graphviz.rs diff --git a/src/test/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/cast.rs b/tests/mir-opt/dataflow-const-prop/cast.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/cast.rs rename to tests/mir-opt/dataflow-const-prop/cast.rs diff --git a/src/test/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/checked.rs b/tests/mir-opt/dataflow-const-prop/checked.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/checked.rs rename to tests/mir-opt/dataflow-const-prop/checked.rs diff --git a/src/test/mir-opt/dataflow-const-prop/enum.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/enum.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/enum.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/enum.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/enum.rs b/tests/mir-opt/dataflow-const-prop/enum.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/enum.rs rename to tests/mir-opt/dataflow-const-prop/enum.rs diff --git a/src/test/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/if.rs b/tests/mir-opt/dataflow-const-prop/if.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/if.rs rename to tests/mir-opt/dataflow-const-prop/if.rs diff --git a/src/test/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/inherit_overflow.rs b/tests/mir-opt/dataflow-const-prop/inherit_overflow.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/inherit_overflow.rs rename to tests/mir-opt/dataflow-const-prop/inherit_overflow.rs diff --git a/src/test/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/issue_81605.rs b/tests/mir-opt/dataflow-const-prop/issue_81605.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/issue_81605.rs rename to tests/mir-opt/dataflow-const-prop/issue_81605.rs diff --git a/src/test/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/ref_without_sb.rs b/tests/mir-opt/dataflow-const-prop/ref_without_sb.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/ref_without_sb.rs rename to tests/mir-opt/dataflow-const-prop/ref_without_sb.rs diff --git a/src/test/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/repr_transparent.rs b/tests/mir-opt/dataflow-const-prop/repr_transparent.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/repr_transparent.rs rename to tests/mir-opt/dataflow-const-prop/repr_transparent.rs diff --git a/src/test/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/self_assign.rs b/tests/mir-opt/dataflow-const-prop/self_assign.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/self_assign.rs rename to tests/mir-opt/dataflow-const-prop/self_assign.rs diff --git a/src/test/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/self_assign_add.rs b/tests/mir-opt/dataflow-const-prop/self_assign_add.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/self_assign_add.rs rename to tests/mir-opt/dataflow-const-prop/self_assign_add.rs diff --git a/src/test/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/sibling_ptr.rs b/tests/mir-opt/dataflow-const-prop/sibling_ptr.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/sibling_ptr.rs rename to tests/mir-opt/dataflow-const-prop/sibling_ptr.rs diff --git a/src/test/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/struct.rs b/tests/mir-opt/dataflow-const-prop/struct.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/struct.rs rename to tests/mir-opt/dataflow-const-prop/struct.rs diff --git a/src/test/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/terminator.rs b/tests/mir-opt/dataflow-const-prop/terminator.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/terminator.rs rename to tests/mir-opt/dataflow-const-prop/terminator.rs diff --git a/src/test/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff rename to tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff diff --git a/src/test/mir-opt/dataflow-const-prop/tuple.rs b/tests/mir-opt/dataflow-const-prop/tuple.rs similarity index 100% rename from src/test/mir-opt/dataflow-const-prop/tuple.rs rename to tests/mir-opt/dataflow-const-prop/tuple.rs diff --git a/src/test/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.diff similarity index 100% rename from src/test/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.diff rename to tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.diff diff --git a/src/test/mir-opt/dead-store-elimination/cycle.rs b/tests/mir-opt/dead-store-elimination/cycle.rs similarity index 100% rename from src/test/mir-opt/dead-store-elimination/cycle.rs rename to tests/mir-opt/dead-store-elimination/cycle.rs diff --git a/src/test/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff similarity index 100% rename from src/test/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff rename to tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff diff --git a/src/test/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff similarity index 100% rename from src/test/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff rename to tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff diff --git a/src/test/mir-opt/dead-store-elimination/provenance_soundness.rs b/tests/mir-opt/dead-store-elimination/provenance_soundness.rs similarity index 100% rename from src/test/mir-opt/dead-store-elimination/provenance_soundness.rs rename to tests/mir-opt/dead-store-elimination/provenance_soundness.rs diff --git a/src/test/mir-opt/deaggregator_test.bar.Deaggregator.diff b/tests/mir-opt/deaggregator_test.bar.Deaggregator.diff similarity index 100% rename from src/test/mir-opt/deaggregator_test.bar.Deaggregator.diff rename to tests/mir-opt/deaggregator_test.bar.Deaggregator.diff diff --git a/src/test/mir-opt/deaggregator_test.rs b/tests/mir-opt/deaggregator_test.rs similarity index 100% rename from src/test/mir-opt/deaggregator_test.rs rename to tests/mir-opt/deaggregator_test.rs diff --git a/src/test/mir-opt/deaggregator_test_enum.bar.Deaggregator.diff b/tests/mir-opt/deaggregator_test_enum.bar.Deaggregator.diff similarity index 100% rename from src/test/mir-opt/deaggregator_test_enum.bar.Deaggregator.diff rename to tests/mir-opt/deaggregator_test_enum.bar.Deaggregator.diff diff --git a/src/test/mir-opt/deaggregator_test_enum.rs b/tests/mir-opt/deaggregator_test_enum.rs similarity index 100% rename from src/test/mir-opt/deaggregator_test_enum.rs rename to tests/mir-opt/deaggregator_test_enum.rs diff --git a/src/test/mir-opt/deaggregator_test_enum_2.rs b/tests/mir-opt/deaggregator_test_enum_2.rs similarity index 100% rename from src/test/mir-opt/deaggregator_test_enum_2.rs rename to tests/mir-opt/deaggregator_test_enum_2.rs diff --git a/src/test/mir-opt/deaggregator_test_enum_2.test1.Deaggregator.diff b/tests/mir-opt/deaggregator_test_enum_2.test1.Deaggregator.diff similarity index 100% rename from src/test/mir-opt/deaggregator_test_enum_2.test1.Deaggregator.diff rename to tests/mir-opt/deaggregator_test_enum_2.test1.Deaggregator.diff diff --git a/src/test/mir-opt/deaggregator_test_multiple.rs b/tests/mir-opt/deaggregator_test_multiple.rs similarity index 100% rename from src/test/mir-opt/deaggregator_test_multiple.rs rename to tests/mir-opt/deaggregator_test_multiple.rs diff --git a/src/test/mir-opt/deaggregator_test_multiple.test.Deaggregator.diff b/tests/mir-opt/deaggregator_test_multiple.test.Deaggregator.diff similarity index 100% rename from src/test/mir-opt/deaggregator_test_multiple.test.Deaggregator.diff rename to tests/mir-opt/deaggregator_test_multiple.test.Deaggregator.diff diff --git a/src/test/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff similarity index 100% rename from src/test/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff rename to tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff diff --git a/src/test/mir-opt/deduplicate_blocks.rs b/tests/mir-opt/deduplicate_blocks.rs similarity index 100% rename from src/test/mir-opt/deduplicate_blocks.rs rename to tests/mir-opt/deduplicate_blocks.rs diff --git a/src/test/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir b/tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir rename to tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir diff --git a/src/test/mir-opt/deref-patterns/string.rs b/tests/mir-opt/deref-patterns/string.rs similarity index 100% rename from src/test/mir-opt/deref-patterns/string.rs rename to tests/mir-opt/deref-patterns/string.rs diff --git a/src/test/mir-opt/derefer_complex_case.main.Derefer.diff b/tests/mir-opt/derefer_complex_case.main.Derefer.diff similarity index 100% rename from src/test/mir-opt/derefer_complex_case.main.Derefer.diff rename to tests/mir-opt/derefer_complex_case.main.Derefer.diff diff --git a/src/test/mir-opt/derefer_complex_case.rs b/tests/mir-opt/derefer_complex_case.rs similarity index 100% rename from src/test/mir-opt/derefer_complex_case.rs rename to tests/mir-opt/derefer_complex_case.rs diff --git a/src/test/mir-opt/derefer_inline_test.main.Derefer.diff b/tests/mir-opt/derefer_inline_test.main.Derefer.diff similarity index 100% rename from src/test/mir-opt/derefer_inline_test.main.Derefer.diff rename to tests/mir-opt/derefer_inline_test.main.Derefer.diff diff --git a/src/test/mir-opt/derefer_inline_test.rs b/tests/mir-opt/derefer_inline_test.rs similarity index 100% rename from src/test/mir-opt/derefer_inline_test.rs rename to tests/mir-opt/derefer_inline_test.rs diff --git a/src/test/mir-opt/derefer_terminator_test.main.Derefer.diff b/tests/mir-opt/derefer_terminator_test.main.Derefer.diff similarity index 100% rename from src/test/mir-opt/derefer_terminator_test.main.Derefer.diff rename to tests/mir-opt/derefer_terminator_test.main.Derefer.diff diff --git a/src/test/mir-opt/derefer_terminator_test.rs b/tests/mir-opt/derefer_terminator_test.rs similarity index 100% rename from src/test/mir-opt/derefer_terminator_test.rs rename to tests/mir-opt/derefer_terminator_test.rs diff --git a/src/test/mir-opt/derefer_test.main.Derefer.diff b/tests/mir-opt/derefer_test.main.Derefer.diff similarity index 100% rename from src/test/mir-opt/derefer_test.main.Derefer.diff rename to tests/mir-opt/derefer_test.main.Derefer.diff diff --git a/src/test/mir-opt/derefer_test.rs b/tests/mir-opt/derefer_test.rs similarity index 100% rename from src/test/mir-opt/derefer_test.rs rename to tests/mir-opt/derefer_test.rs diff --git a/src/test/mir-opt/derefer_test_multiple.main.Derefer.diff b/tests/mir-opt/derefer_test_multiple.main.Derefer.diff similarity index 100% rename from src/test/mir-opt/derefer_test_multiple.main.Derefer.diff rename to tests/mir-opt/derefer_test_multiple.main.Derefer.diff diff --git a/src/test/mir-opt/derefer_test_multiple.rs b/tests/mir-opt/derefer_test_multiple.rs similarity index 100% rename from src/test/mir-opt/derefer_test_multiple.rs rename to tests/mir-opt/derefer_test_multiple.rs diff --git a/src/test/mir-opt/dest-prop/branch.foo.DestinationPropagation.diff b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/branch.foo.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/branch.rs b/tests/mir-opt/dest-prop/branch.rs similarity index 100% rename from src/test/mir-opt/dest-prop/branch.rs rename to tests/mir-opt/dest-prop/branch.rs diff --git a/src/test/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/copy_propagation_arg.rs b/tests/mir-opt/dest-prop/copy_propagation_arg.rs similarity index 100% rename from src/test/mir-opt/dest-prop/copy_propagation_arg.rs rename to tests/mir-opt/dest-prop/copy_propagation_arg.rs diff --git a/src/test/mir-opt/dest-prop/cycle.main.DestinationPropagation.diff b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/cycle.main.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/cycle.rs b/tests/mir-opt/dest-prop/cycle.rs similarity index 100% rename from src/test/mir-opt/dest-prop/cycle.rs rename to tests/mir-opt/dest-prop/cycle.rs diff --git a/src/test/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.mir b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.mir similarity index 100% rename from src/test/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.mir rename to tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.mir diff --git a/src/test/mir-opt/dest-prop/dead_stores_79191.rs b/tests/mir-opt/dest-prop/dead_stores_79191.rs similarity index 100% rename from src/test/mir-opt/dest-prop/dead_stores_79191.rs rename to tests/mir-opt/dest-prop/dead_stores_79191.rs diff --git a/src/test/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.mir b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.mir similarity index 100% rename from src/test/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.mir rename to tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.mir diff --git a/src/test/mir-opt/dest-prop/dead_stores_better.rs b/tests/mir-opt/dest-prop/dead_stores_better.rs similarity index 100% rename from src/test/mir-opt/dest-prop/dead_stores_better.rs rename to tests/mir-opt/dest-prop/dead_stores_better.rs diff --git a/src/test/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.diff b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/simple.rs b/tests/mir-opt/dest-prop/simple.rs similarity index 100% rename from src/test/mir-opt/dest-prop/simple.rs rename to tests/mir-opt/dest-prop/simple.rs diff --git a/src/test/mir-opt/dest-prop/union.main.DestinationPropagation.diff b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/union.main.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/union.main.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/union.rs b/tests/mir-opt/dest-prop/union.rs similarity index 100% rename from src/test/mir-opt/dest-prop/union.rs rename to tests/mir-opt/dest-prop/union.rs diff --git a/src/test/mir-opt/dest-prop/unreachable.f.DestinationPropagation.diff b/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.diff similarity index 100% rename from src/test/mir-opt/dest-prop/unreachable.f.DestinationPropagation.diff rename to tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.diff diff --git a/src/test/mir-opt/dest-prop/unreachable.rs b/tests/mir-opt/dest-prop/unreachable.rs similarity index 100% rename from src/test/mir-opt/dest-prop/unreachable.rs rename to tests/mir-opt/dest-prop/unreachable.rs diff --git a/src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir b/tests/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir rename to tests/mir-opt/div_overflow.const_dividend.PreCodegen.after.mir diff --git a/src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir b/tests/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir rename to tests/mir-opt/div_overflow.const_divisor.PreCodegen.after.mir diff --git a/src/test/mir-opt/div_overflow.rs b/tests/mir-opt/div_overflow.rs similarity index 100% rename from src/test/mir-opt/div_overflow.rs rename to tests/mir-opt/div_overflow.rs diff --git a/src/test/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch.rs b/tests/mir-opt/early_otherwise_branch.rs similarity index 100% rename from src/test/mir-opt/early_otherwise_branch.rs rename to tests/mir-opt/early_otherwise_branch.rs diff --git a/src/test/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs b/tests/mir-opt/early_otherwise_branch_3_element_tuple.rs similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs rename to tests/mir-opt/early_otherwise_branch_3_element_tuple.rs diff --git a/src/test/mir-opt/early_otherwise_branch_68867.rs b/tests/mir-opt/early_otherwise_branch_68867.rs similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_68867.rs rename to tests/mir-opt/early_otherwise_branch_68867.rs diff --git a/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch_noopt.rs b/tests/mir-opt/early_otherwise_branch_noopt.rs similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_noopt.rs rename to tests/mir-opt/early_otherwise_branch_noopt.rs diff --git a/src/test/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff rename to tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff diff --git a/src/test/mir-opt/early_otherwise_branch_soundness.rs b/tests/mir-opt/early_otherwise_branch_soundness.rs similarity index 100% rename from src/test/mir-opt/early_otherwise_branch_soundness.rs rename to tests/mir-opt/early_otherwise_branch_soundness.rs diff --git a/src/test/mir-opt/equal_true.opt.InstCombine.diff b/tests/mir-opt/equal_true.opt.InstCombine.diff similarity index 100% rename from src/test/mir-opt/equal_true.opt.InstCombine.diff rename to tests/mir-opt/equal_true.opt.InstCombine.diff diff --git a/src/test/mir-opt/equal_true.rs b/tests/mir-opt/equal_true.rs similarity index 100% rename from src/test/mir-opt/equal_true.rs rename to tests/mir-opt/equal_true.rs diff --git a/src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir b/tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir rename to tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/exponential_or.rs b/tests/mir-opt/exponential_or.rs similarity index 100% rename from src/test/mir-opt/exponential_or.rs rename to tests/mir-opt/exponential_or.rs diff --git a/src/test/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir b/tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir similarity index 100% rename from src/test/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir rename to tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir diff --git a/src/test/mir-opt/fn_ptr_shim.rs b/tests/mir-opt/fn_ptr_shim.rs similarity index 100% rename from src/test/mir-opt/fn_ptr_shim.rs rename to tests/mir-opt/fn_ptr_shim.rs diff --git a/src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff b/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff similarity index 100% rename from src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff rename to tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff diff --git a/src/test/mir-opt/funky_arms.rs b/tests/mir-opt/funky_arms.rs similarity index 100% rename from src/test/mir-opt/funky_arms.rs rename to tests/mir-opt/funky_arms.rs diff --git a/src/test/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir similarity index 100% rename from src/test/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir rename to tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir diff --git a/src/test/mir-opt/generator_drop_cleanup.rs b/tests/mir-opt/generator_drop_cleanup.rs similarity index 100% rename from src/test/mir-opt/generator_drop_cleanup.rs rename to tests/mir-opt/generator_drop_cleanup.rs diff --git a/src/test/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir b/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir similarity index 100% rename from src/test/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir rename to tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir diff --git a/src/test/mir-opt/generator_storage_dead_unwind.rs b/tests/mir-opt/generator_storage_dead_unwind.rs similarity index 100% rename from src/test/mir-opt/generator_storage_dead_unwind.rs rename to tests/mir-opt/generator_storage_dead_unwind.rs diff --git a/src/test/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir b/tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir similarity index 100% rename from src/test/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir rename to tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir diff --git a/src/test/mir-opt/generator_tiny.rs b/tests/mir-opt/generator_tiny.rs similarity index 100% rename from src/test/mir-opt/generator_tiny.rs rename to tests/mir-opt/generator_tiny.rs diff --git a/src/test/mir-opt/graphviz.main.built.after.dot b/tests/mir-opt/graphviz.main.built.after.dot similarity index 100% rename from src/test/mir-opt/graphviz.main.built.after.dot rename to tests/mir-opt/graphviz.main.built.after.dot diff --git a/src/test/mir-opt/graphviz.rs b/tests/mir-opt/graphviz.rs similarity index 100% rename from src/test/mir-opt/graphviz.rs rename to tests/mir-opt/graphviz.rs diff --git a/src/test/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff rename to tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/if_condition_int.rs b/tests/mir-opt/if_condition_int.rs similarity index 100% rename from src/test/mir-opt/if_condition_int.rs rename to tests/mir-opt/if_condition_int.rs diff --git a/src/test/mir-opt/inline/asm_unwind.main.Inline.diff b/tests/mir-opt/inline/asm_unwind.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/asm_unwind.main.Inline.diff rename to tests/mir-opt/inline/asm_unwind.main.Inline.diff diff --git a/src/test/mir-opt/inline/asm_unwind.rs b/tests/mir-opt/inline/asm_unwind.rs similarity index 100% rename from src/test/mir-opt/inline/asm_unwind.rs rename to tests/mir-opt/inline/asm_unwind.rs diff --git a/src/test/mir-opt/inline/caller_with_trivial_bound.foo.Inline.diff b/tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/caller_with_trivial_bound.foo.Inline.diff rename to tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.diff diff --git a/src/test/mir-opt/inline/caller_with_trivial_bound.rs b/tests/mir-opt/inline/caller_with_trivial_bound.rs similarity index 100% rename from src/test/mir-opt/inline/caller_with_trivial_bound.rs rename to tests/mir-opt/inline/caller_with_trivial_bound.rs diff --git a/src/test/mir-opt/inline/cycle.f.Inline.diff b/tests/mir-opt/inline/cycle.f.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/cycle.f.Inline.diff rename to tests/mir-opt/inline/cycle.f.Inline.diff diff --git a/src/test/mir-opt/inline/cycle.g.Inline.diff b/tests/mir-opt/inline/cycle.g.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/cycle.g.Inline.diff rename to tests/mir-opt/inline/cycle.g.Inline.diff diff --git a/src/test/mir-opt/inline/cycle.main.Inline.diff b/tests/mir-opt/inline/cycle.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/cycle.main.Inline.diff rename to tests/mir-opt/inline/cycle.main.Inline.diff diff --git a/src/test/mir-opt/inline/cycle.rs b/tests/mir-opt/inline/cycle.rs similarity index 100% rename from src/test/mir-opt/inline/cycle.rs rename to tests/mir-opt/inline/cycle.rs diff --git a/src/test/mir-opt/inline/dyn_trait.get_query.Inline.diff b/tests/mir-opt/inline/dyn_trait.get_query.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/dyn_trait.get_query.Inline.diff rename to tests/mir-opt/inline/dyn_trait.get_query.Inline.diff diff --git a/src/test/mir-opt/inline/dyn_trait.mk_cycle.Inline.diff b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/dyn_trait.mk_cycle.Inline.diff rename to tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.diff diff --git a/src/test/mir-opt/inline/dyn_trait.rs b/tests/mir-opt/inline/dyn_trait.rs similarity index 100% rename from src/test/mir-opt/inline/dyn_trait.rs rename to tests/mir-opt/inline/dyn_trait.rs diff --git a/src/test/mir-opt/inline/dyn_trait.try_execute_query.Inline.diff b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/dyn_trait.try_execute_query.Inline.diff rename to tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.diff diff --git a/src/test/mir-opt/inline/exponential_runtime.main.Inline.diff b/tests/mir-opt/inline/exponential_runtime.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/exponential_runtime.main.Inline.diff rename to tests/mir-opt/inline/exponential_runtime.main.Inline.diff diff --git a/src/test/mir-opt/inline/exponential_runtime.rs b/tests/mir-opt/inline/exponential_runtime.rs similarity index 100% rename from src/test/mir-opt/inline/exponential_runtime.rs rename to tests/mir-opt/inline/exponential_runtime.rs diff --git a/src/test/mir-opt/inline/inline_any_operand.bar.Inline.after.mir b/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_any_operand.bar.Inline.after.mir rename to tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_any_operand.rs b/tests/mir-opt/inline/inline_any_operand.rs similarity index 100% rename from src/test/mir-opt/inline/inline_any_operand.rs rename to tests/mir-opt/inline/inline_any_operand.rs diff --git a/src/test/mir-opt/inline/inline_async.rs b/tests/mir-opt/inline/inline_async.rs similarity index 100% rename from src/test/mir-opt/inline/inline_async.rs rename to tests/mir-opt/inline/inline_async.rs diff --git a/src/test/mir-opt/inline/inline_closure.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_closure.foo.Inline.after.mir rename to tests/mir-opt/inline/inline_closure.foo.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_closure.rs b/tests/mir-opt/inline/inline_closure.rs similarity index 100% rename from src/test/mir-opt/inline/inline_closure.rs rename to tests/mir-opt/inline/inline_closure.rs diff --git a/src/test/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir rename to tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_closure_borrows_arg.rs b/tests/mir-opt/inline/inline_closure_borrows_arg.rs similarity index 100% rename from src/test/mir-opt/inline/inline_closure_borrows_arg.rs rename to tests/mir-opt/inline/inline_closure_borrows_arg.rs diff --git a/src/test/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir rename to tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_closure_captures.rs b/tests/mir-opt/inline/inline_closure_captures.rs similarity index 100% rename from src/test/mir-opt/inline/inline_closure_captures.rs rename to tests/mir-opt/inline/inline_closure_captures.rs diff --git a/src/test/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.diff b/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.diff rename to tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.diff diff --git a/src/test/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.diff b/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.diff rename to tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.diff diff --git a/src/test/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.diff rename to tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.diff diff --git a/src/test/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.diff rename to tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.diff diff --git a/src/test/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.diff rename to tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.diff diff --git a/src/test/mir-opt/inline/inline_compatibility.rs b/tests/mir-opt/inline/inline_compatibility.rs similarity index 100% rename from src/test/mir-opt/inline/inline_compatibility.rs rename to tests/mir-opt/inline/inline_compatibility.rs diff --git a/src/test/mir-opt/inline/inline_cycle.one.Inline.diff b/tests/mir-opt/inline/inline_cycle.one.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_cycle.one.Inline.diff rename to tests/mir-opt/inline/inline_cycle.one.Inline.diff diff --git a/src/test/mir-opt/inline/inline_cycle.rs b/tests/mir-opt/inline/inline_cycle.rs similarity index 100% rename from src/test/mir-opt/inline/inline_cycle.rs rename to tests/mir-opt/inline/inline_cycle.rs diff --git a/src/test/mir-opt/inline/inline_cycle.two.Inline.diff b/tests/mir-opt/inline/inline_cycle.two.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_cycle.two.Inline.diff rename to tests/mir-opt/inline/inline_cycle.two.Inline.diff diff --git a/src/test/mir-opt/inline/inline_cycle_generic.main.Inline.diff b/tests/mir-opt/inline/inline_cycle_generic.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_cycle_generic.main.Inline.diff rename to tests/mir-opt/inline/inline_cycle_generic.main.Inline.diff diff --git a/src/test/mir-opt/inline/inline_cycle_generic.rs b/tests/mir-opt/inline/inline_cycle_generic.rs similarity index 100% rename from src/test/mir-opt/inline/inline_cycle_generic.rs rename to tests/mir-opt/inline/inline_cycle_generic.rs diff --git a/src/test/mir-opt/inline/inline_diverging.f.Inline.diff b/tests/mir-opt/inline/inline_diverging.f.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_diverging.f.Inline.diff rename to tests/mir-opt/inline/inline_diverging.f.Inline.diff diff --git a/src/test/mir-opt/inline/inline_diverging.g.Inline.diff b/tests/mir-opt/inline/inline_diverging.g.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_diverging.g.Inline.diff rename to tests/mir-opt/inline/inline_diverging.g.Inline.diff diff --git a/src/test/mir-opt/inline/inline_diverging.h.Inline.diff b/tests/mir-opt/inline/inline_diverging.h.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_diverging.h.Inline.diff rename to tests/mir-opt/inline/inline_diverging.h.Inline.diff diff --git a/src/test/mir-opt/inline/inline_diverging.rs b/tests/mir-opt/inline/inline_diverging.rs similarity index 100% rename from src/test/mir-opt/inline/inline_diverging.rs rename to tests/mir-opt/inline/inline_diverging.rs diff --git a/src/test/mir-opt/inline/inline_generator.main.Inline.diff b/tests/mir-opt/inline/inline_generator.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_generator.main.Inline.diff rename to tests/mir-opt/inline/inline_generator.main.Inline.diff diff --git a/src/test/mir-opt/inline/inline_generator.rs b/tests/mir-opt/inline/inline_generator.rs similarity index 100% rename from src/test/mir-opt/inline/inline_generator.rs rename to tests/mir-opt/inline/inline_generator.rs diff --git a/src/test/mir-opt/inline/inline_instruction_set.default.Inline.diff b/tests/mir-opt/inline/inline_instruction_set.default.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_instruction_set.default.Inline.diff rename to tests/mir-opt/inline/inline_instruction_set.default.Inline.diff diff --git a/src/test/mir-opt/inline/inline_instruction_set.rs b/tests/mir-opt/inline/inline_instruction_set.rs similarity index 100% rename from src/test/mir-opt/inline/inline_instruction_set.rs rename to tests/mir-opt/inline/inline_instruction_set.rs diff --git a/src/test/mir-opt/inline/inline_instruction_set.t32.Inline.diff b/tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_instruction_set.t32.Inline.diff rename to tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff diff --git a/src/test/mir-opt/inline/inline_into_box_place.main.Inline.diff b/tests/mir-opt/inline/inline_into_box_place.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_into_box_place.main.Inline.diff rename to tests/mir-opt/inline/inline_into_box_place.main.Inline.diff diff --git a/src/test/mir-opt/inline/inline_into_box_place.rs b/tests/mir-opt/inline/inline_into_box_place.rs similarity index 100% rename from src/test/mir-opt/inline/inline_into_box_place.rs rename to tests/mir-opt/inline/inline_into_box_place.rs diff --git a/src/test/mir-opt/inline/inline_options.main.Inline.after.mir b/tests/mir-opt/inline/inline_options.main.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_options.main.Inline.after.mir rename to tests/mir-opt/inline/inline_options.main.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_options.rs b/tests/mir-opt/inline/inline_options.rs similarity index 100% rename from src/test/mir-opt/inline/inline_options.rs rename to tests/mir-opt/inline/inline_options.rs diff --git a/src/test/mir-opt/inline/inline_retag.bar.Inline.after.mir b/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_retag.bar.Inline.after.mir rename to tests/mir-opt/inline/inline_retag.bar.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_retag.rs b/tests/mir-opt/inline/inline_retag.rs similarity index 100% rename from src/test/mir-opt/inline/inline_retag.rs rename to tests/mir-opt/inline/inline_retag.rs diff --git a/src/test/mir-opt/inline/inline_shims.clone.Inline.diff b/tests/mir-opt/inline/inline_shims.clone.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_shims.clone.Inline.diff rename to tests/mir-opt/inline/inline_shims.clone.Inline.diff diff --git a/src/test/mir-opt/inline/inline_shims.drop.Inline.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_shims.drop.Inline.diff rename to tests/mir-opt/inline/inline_shims.drop.Inline.diff diff --git a/src/test/mir-opt/inline/inline_shims.rs b/tests/mir-opt/inline/inline_shims.rs similarity index 100% rename from src/test/mir-opt/inline/inline_shims.rs rename to tests/mir-opt/inline/inline_shims.rs diff --git a/src/test/mir-opt/inline/inline_specialization.main.Inline.diff b/tests/mir-opt/inline/inline_specialization.main.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/inline_specialization.main.Inline.diff rename to tests/mir-opt/inline/inline_specialization.main.Inline.diff diff --git a/src/test/mir-opt/inline/inline_specialization.rs b/tests/mir-opt/inline/inline_specialization.rs similarity index 100% rename from src/test/mir-opt/inline/inline_specialization.rs rename to tests/mir-opt/inline/inline_specialization.rs diff --git a/src/test/mir-opt/inline/inline_trait_method.rs b/tests/mir-opt/inline/inline_trait_method.rs similarity index 100% rename from src/test/mir-opt/inline/inline_trait_method.rs rename to tests/mir-opt/inline/inline_trait_method.rs diff --git a/src/test/mir-opt/inline/inline_trait_method.test.Inline.after.mir b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_trait_method.test.Inline.after.mir rename to tests/mir-opt/inline/inline_trait_method.test.Inline.after.mir diff --git a/src/test/mir-opt/inline/inline_trait_method_2.rs b/tests/mir-opt/inline/inline_trait_method_2.rs similarity index 100% rename from src/test/mir-opt/inline/inline_trait_method_2.rs rename to tests/mir-opt/inline/inline_trait_method_2.rs diff --git a/src/test/mir-opt/inline/inline_trait_method_2.test2.Inline.after.mir b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/inline_trait_method_2.test2.Inline.after.mir rename to tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir rename to tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir rename to tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir rename to tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir rename to tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.rs b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.rs similarity index 100% rename from src/test/mir-opt/inline/issue_58867_inline_as_ref_as_mut.rs rename to tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.rs diff --git a/src/test/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir b/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir similarity index 100% rename from src/test/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir rename to tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir diff --git a/src/test/mir-opt/inline/issue_76997_inline_scopes_parenting.rs b/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.rs similarity index 100% rename from src/test/mir-opt/inline/issue_76997_inline_scopes_parenting.rs rename to tests/mir-opt/inline/issue_76997_inline_scopes_parenting.rs diff --git a/src/test/mir-opt/inline/issue_78442.bar.Inline.diff b/tests/mir-opt/inline/issue_78442.bar.Inline.diff similarity index 100% rename from src/test/mir-opt/inline/issue_78442.bar.Inline.diff rename to tests/mir-opt/inline/issue_78442.bar.Inline.diff diff --git a/src/test/mir-opt/inline/issue_78442.bar.RevealAll.diff b/tests/mir-opt/inline/issue_78442.bar.RevealAll.diff similarity index 100% rename from src/test/mir-opt/inline/issue_78442.bar.RevealAll.diff rename to tests/mir-opt/inline/issue_78442.bar.RevealAll.diff diff --git a/src/test/mir-opt/inline/issue_78442.rs b/tests/mir-opt/inline/issue_78442.rs similarity index 100% rename from src/test/mir-opt/inline/issue_78442.rs rename to tests/mir-opt/inline/issue_78442.rs diff --git a/src/test/mir-opt/inline/polymorphic_recursion.rs b/tests/mir-opt/inline/polymorphic_recursion.rs similarity index 100% rename from src/test/mir-opt/inline/polymorphic_recursion.rs rename to tests/mir-opt/inline/polymorphic_recursion.rs diff --git a/src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff b/tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff similarity index 100% rename from src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff rename to tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff diff --git a/src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff b/tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff similarity index 100% rename from src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff rename to tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff diff --git a/src/test/mir-opt/instrument_coverage.rs b/tests/mir-opt/instrument_coverage.rs similarity index 100% rename from src/test/mir-opt/instrument_coverage.rs rename to tests/mir-opt/instrument_coverage.rs diff --git a/src/test/mir-opt/issue_101973.inner.ConstProp.diff b/tests/mir-opt/issue_101973.inner.ConstProp.diff similarity index 100% rename from src/test/mir-opt/issue_101973.inner.ConstProp.diff rename to tests/mir-opt/issue_101973.inner.ConstProp.diff diff --git a/src/test/mir-opt/issue_101973.rs b/tests/mir-opt/issue_101973.rs similarity index 100% rename from src/test/mir-opt/issue_101973.rs rename to tests/mir-opt/issue_101973.rs diff --git a/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir rename to tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/issue_38669.rs b/tests/mir-opt/issue_38669.rs similarity index 100% rename from src/test/mir-opt/issue_38669.rs rename to tests/mir-opt/issue_38669.rs diff --git a/src/test/mir-opt/issue_41110.main.ElaborateDrops.after.mir b/tests/mir-opt/issue_41110.main.ElaborateDrops.after.mir similarity index 100% rename from src/test/mir-opt/issue_41110.main.ElaborateDrops.after.mir rename to tests/mir-opt/issue_41110.main.ElaborateDrops.after.mir diff --git a/src/test/mir-opt/issue_41110.rs b/tests/mir-opt/issue_41110.rs similarity index 100% rename from src/test/mir-opt/issue_41110.rs rename to tests/mir-opt/issue_41110.rs diff --git a/src/test/mir-opt/issue_41110.test.ElaborateDrops.after.mir b/tests/mir-opt/issue_41110.test.ElaborateDrops.after.mir similarity index 100% rename from src/test/mir-opt/issue_41110.test.ElaborateDrops.after.mir rename to tests/mir-opt/issue_41110.test.ElaborateDrops.after.mir diff --git a/src/test/mir-opt/issue_41697.rs b/tests/mir-opt/issue_41697.rs similarity index 100% rename from src/test/mir-opt/issue_41697.rs rename to tests/mir-opt/issue_41697.rs diff --git a/src/test/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir b/tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir similarity index 100% rename from src/test/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir rename to tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir diff --git a/src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir b/tests/mir-opt/issue_41888.main.ElaborateDrops.after.mir similarity index 100% rename from src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir rename to tests/mir-opt/issue_41888.main.ElaborateDrops.after.mir diff --git a/src/test/mir-opt/issue_41888.rs b/tests/mir-opt/issue_41888.rs similarity index 100% rename from src/test/mir-opt/issue_41888.rs rename to tests/mir-opt/issue_41888.rs diff --git a/src/test/mir-opt/issue_62289.rs b/tests/mir-opt/issue_62289.rs similarity index 100% rename from src/test/mir-opt/issue_62289.rs rename to tests/mir-opt/issue_62289.rs diff --git a/src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.mir similarity index 100% rename from src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir rename to tests/mir-opt/issue_62289.test.ElaborateDrops.before.mir diff --git a/src/test/mir-opt/issue_72181.bar.built.after.mir b/tests/mir-opt/issue_72181.bar.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_72181.bar.built.after.mir rename to tests/mir-opt/issue_72181.bar.built.after.mir diff --git a/src/test/mir-opt/issue_72181.foo.built.after.mir b/tests/mir-opt/issue_72181.foo.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_72181.foo.built.after.mir rename to tests/mir-opt/issue_72181.foo.built.after.mir diff --git a/src/test/mir-opt/issue_72181.main.built.after.mir b/tests/mir-opt/issue_72181.main.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_72181.main.built.after.mir rename to tests/mir-opt/issue_72181.main.built.after.mir diff --git a/src/test/mir-opt/issue_72181.rs b/tests/mir-opt/issue_72181.rs similarity index 100% rename from src/test/mir-opt/issue_72181.rs rename to tests/mir-opt/issue_72181.rs diff --git a/src/test/mir-opt/issue_72181_1.f.built.after.mir b/tests/mir-opt/issue_72181_1.f.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_72181_1.f.built.after.mir rename to tests/mir-opt/issue_72181_1.f.built.after.mir diff --git a/src/test/mir-opt/issue_72181_1.main.built.after.mir b/tests/mir-opt/issue_72181_1.main.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_72181_1.main.built.after.mir rename to tests/mir-opt/issue_72181_1.main.built.after.mir diff --git a/src/test/mir-opt/issue_72181_1.rs b/tests/mir-opt/issue_72181_1.rs similarity index 100% rename from src/test/mir-opt/issue_72181_1.rs rename to tests/mir-opt/issue_72181_1.rs diff --git a/src/test/mir-opt/issue_73223.main.SimplifyArmIdentity.diff b/tests/mir-opt/issue_73223.main.SimplifyArmIdentity.diff similarity index 100% rename from src/test/mir-opt/issue_73223.main.SimplifyArmIdentity.diff rename to tests/mir-opt/issue_73223.main.SimplifyArmIdentity.diff diff --git a/src/test/mir-opt/issue_73223.rs b/tests/mir-opt/issue_73223.rs similarity index 100% rename from src/test/mir-opt/issue_73223.rs rename to tests/mir-opt/issue_73223.rs diff --git a/src/test/mir-opt/issue_76432.rs b/tests/mir-opt/issue_76432.rs similarity index 100% rename from src/test/mir-opt/issue_76432.rs rename to tests/mir-opt/issue_76432.rs diff --git a/src/test/mir-opt/issue_76432.test.SimplifyComparisonIntegral.diff b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.diff similarity index 100% rename from src/test/mir-opt/issue_76432.test.SimplifyComparisonIntegral.diff rename to tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.diff diff --git a/src/test/mir-opt/issue_78192.f.InstCombine.diff b/tests/mir-opt/issue_78192.f.InstCombine.diff similarity index 100% rename from src/test/mir-opt/issue_78192.f.InstCombine.diff rename to tests/mir-opt/issue_78192.f.InstCombine.diff diff --git a/src/test/mir-opt/issue_78192.rs b/tests/mir-opt/issue_78192.rs similarity index 100% rename from src/test/mir-opt/issue_78192.rs rename to tests/mir-opt/issue_78192.rs diff --git a/src/test/mir-opt/issue_91633.bar.built.after.mir b/tests/mir-opt/issue_91633.bar.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_91633.bar.built.after.mir rename to tests/mir-opt/issue_91633.bar.built.after.mir diff --git a/src/test/mir-opt/issue_91633.foo.built.after.mir b/tests/mir-opt/issue_91633.foo.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_91633.foo.built.after.mir rename to tests/mir-opt/issue_91633.foo.built.after.mir diff --git a/src/test/mir-opt/issue_91633.fun.built.after.mir b/tests/mir-opt/issue_91633.fun.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_91633.fun.built.after.mir rename to tests/mir-opt/issue_91633.fun.built.after.mir diff --git a/src/test/mir-opt/issue_91633.hey.built.after.mir b/tests/mir-opt/issue_91633.hey.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_91633.hey.built.after.mir rename to tests/mir-opt/issue_91633.hey.built.after.mir diff --git a/src/test/mir-opt/issue_91633.rs b/tests/mir-opt/issue_91633.rs similarity index 100% rename from src/test/mir-opt/issue_91633.rs rename to tests/mir-opt/issue_91633.rs diff --git a/src/test/mir-opt/issue_99325.main.built.after.mir b/tests/mir-opt/issue_99325.main.built.after.mir similarity index 100% rename from src/test/mir-opt/issue_99325.main.built.after.mir rename to tests/mir-opt/issue_99325.main.built.after.mir diff --git a/src/test/mir-opt/issue_99325.rs b/tests/mir-opt/issue_99325.rs similarity index 100% rename from src/test/mir-opt/issue_99325.rs rename to tests/mir-opt/issue_99325.rs diff --git a/src/test/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir rename to tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir diff --git a/src/test/mir-opt/issues/issue_59352.rs b/tests/mir-opt/issues/issue_59352.rs similarity index 100% rename from src/test/mir-opt/issues/issue_59352.rs rename to tests/mir-opt/issues/issue_59352.rs diff --git a/src/test/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff b/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff rename to tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/issues/issue_75439.rs b/tests/mir-opt/issues/issue_75439.rs similarity index 100% rename from src/test/mir-opt/issues/issue_75439.rs rename to tests/mir-opt/issues/issue_75439.rs diff --git a/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir b/tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir similarity index 100% rename from src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir rename to tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir diff --git a/src/test/mir-opt/loop_test.rs b/tests/mir-opt/loop_test.rs similarity index 100% rename from src/test/mir-opt/loop_test.rs rename to tests/mir-opt/loop_test.rs diff --git a/src/test/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.diff b/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.diff similarity index 100% rename from src/test/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.diff rename to tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.diff diff --git a/src/test/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.diff b/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.diff similarity index 100% rename from src/test/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.diff rename to tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.diff diff --git a/src/test/mir-opt/lower_array_len.array_len.NormalizeArrayLen.diff b/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.diff similarity index 100% rename from src/test/mir-opt/lower_array_len.array_len.NormalizeArrayLen.diff rename to tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.diff diff --git a/src/test/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.diff b/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.diff similarity index 100% rename from src/test/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.diff rename to tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.diff diff --git a/src/test/mir-opt/lower_array_len.rs b/tests/mir-opt/lower_array_len.rs similarity index 100% rename from src/test/mir-opt/lower_array_len.rs rename to tests/mir-opt/lower_array_len.rs diff --git a/src/test/mir-opt/lower_array_len_e2e.array_bound.PreCodegen.after.mir b/tests/mir-opt/lower_array_len_e2e.array_bound.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_array_len_e2e.array_bound.PreCodegen.after.mir rename to tests/mir-opt/lower_array_len_e2e.array_bound.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir b/tests/mir-opt/lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir rename to tests/mir-opt/lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_array_len_e2e.array_len.PreCodegen.after.mir b/tests/mir-opt/lower_array_len_e2e.array_len.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_array_len_e2e.array_len.PreCodegen.after.mir rename to tests/mir-opt/lower_array_len_e2e.array_len.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir b/tests/mir-opt/lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir rename to tests/mir-opt/lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_array_len_e2e.rs b/tests/mir-opt/lower_array_len_e2e.rs similarity index 100% rename from src/test/mir-opt/lower_array_len_e2e.rs rename to tests/mir-opt/lower_array_len_e2e.rs diff --git a/src/test/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.assume.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.assume.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.forget.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.forget.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.rs b/tests/mir-opt/lower_intrinsics.rs similarity index 100% rename from src/test/mir-opt/lower_intrinsics.rs rename to tests/mir-opt/lower_intrinsics.rs diff --git a/src/test/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.diff b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.diff similarity index 100% rename from src/test/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.diff rename to tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.diff diff --git a/src/test/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir b/tests/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir rename to tests/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_intrinsics_e2e.f_unit.PreCodegen.after.mir b/tests/mir-opt/lower_intrinsics_e2e.f_unit.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/lower_intrinsics_e2e.f_unit.PreCodegen.after.mir rename to tests/mir-opt/lower_intrinsics_e2e.f_unit.PreCodegen.after.mir diff --git a/src/test/mir-opt/lower_intrinsics_e2e.rs b/tests/mir-opt/lower_intrinsics_e2e.rs similarity index 100% rename from src/test/mir-opt/lower_intrinsics_e2e.rs rename to tests/mir-opt/lower_intrinsics_e2e.rs diff --git a/src/test/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.diff b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.diff similarity index 100% rename from src/test/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.diff rename to tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.diff diff --git a/src/test/mir-opt/lower_slice_len.rs b/tests/mir-opt/lower_slice_len.rs similarity index 100% rename from src/test/mir-opt/lower_slice_len.rs rename to tests/mir-opt/lower_slice_len.rs diff --git a/src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/tests/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff similarity index 100% rename from src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff rename to tests/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff diff --git a/src/test/mir-opt/match_arm_scopes.rs b/tests/mir-opt/match_arm_scopes.rs similarity index 100% rename from src/test/mir-opt/match_arm_scopes.rs rename to tests/mir-opt/match_arm_scopes.rs diff --git a/src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir similarity index 100% rename from src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir rename to tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir diff --git a/src/test/mir-opt/match_test.rs b/tests/mir-opt/match_test.rs similarity index 100% rename from src/test/mir-opt/match_test.rs rename to tests/mir-opt/match_test.rs diff --git a/src/test/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff rename to tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff rename to tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff rename to tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/matches_reduce_branches.rs b/tests/mir-opt/matches_reduce_branches.rs similarity index 100% rename from src/test/mir-opt/matches_reduce_branches.rs rename to tests/mir-opt/matches_reduce_branches.rs diff --git a/src/test/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff rename to tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff similarity index 100% rename from src/test/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff rename to tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff diff --git a/src/test/mir-opt/matches_u8.rs b/tests/mir-opt/matches_u8.rs similarity index 100% rename from src/test/mir-opt/matches_u8.rs rename to tests/mir-opt/matches_u8.rs diff --git a/src/test/mir-opt/multiple_return_terminators.rs b/tests/mir-opt/multiple_return_terminators.rs similarity index 100% rename from src/test/mir-opt/multiple_return_terminators.rs rename to tests/mir-opt/multiple_return_terminators.rs diff --git a/src/test/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff b/tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff similarity index 100% rename from src/test/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff rename to tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff diff --git a/src/test/mir-opt/nll/named_lifetimes_basic.rs b/tests/mir-opt/nll/named_lifetimes_basic.rs similarity index 100% rename from src/test/mir-opt/nll/named_lifetimes_basic.rs rename to tests/mir-opt/nll/named_lifetimes_basic.rs diff --git a/src/test/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir b/tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir similarity index 100% rename from src/test/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir rename to tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir diff --git a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir similarity index 100% rename from src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir rename to tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir diff --git a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir similarity index 100% rename from src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir rename to tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir diff --git a/src/test/mir-opt/nll/region_subtyping_basic.rs b/tests/mir-opt/nll/region_subtyping_basic.rs similarity index 100% rename from src/test/mir-opt/nll/region_subtyping_basic.rs rename to tests/mir-opt/nll/region_subtyping_basic.rs diff --git a/src/test/mir-opt/no_drop_for_inactive_variant.rs b/tests/mir-opt/no_drop_for_inactive_variant.rs similarity index 100% rename from src/test/mir-opt/no_drop_for_inactive_variant.rs rename to tests/mir-opt/no_drop_for_inactive_variant.rs diff --git a/src/test/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.mir b/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.mir similarity index 100% rename from src/test/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.mir rename to tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.mir diff --git a/src/test/mir-opt/no_spurious_drop_after_call.rs b/tests/mir-opt/no_spurious_drop_after_call.rs similarity index 100% rename from src/test/mir-opt/no_spurious_drop_after_call.rs rename to tests/mir-opt/no_spurious_drop_after_call.rs diff --git a/src/test/mir-opt/not_equal_false.opt.InstCombine.diff b/tests/mir-opt/not_equal_false.opt.InstCombine.diff similarity index 100% rename from src/test/mir-opt/not_equal_false.opt.InstCombine.diff rename to tests/mir-opt/not_equal_false.opt.InstCombine.diff diff --git a/src/test/mir-opt/not_equal_false.rs b/tests/mir-opt/not_equal_false.rs similarity index 100% rename from src/test/mir-opt/not_equal_false.rs rename to tests/mir-opt/not_equal_false.rs diff --git a/src/test/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff similarity index 100% rename from src/test/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff rename to tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.diff diff --git a/src/test/mir-opt/nrvo_simple.rs b/tests/mir-opt/nrvo_simple.rs similarity index 100% rename from src/test/mir-opt/nrvo_simple.rs rename to tests/mir-opt/nrvo_simple.rs diff --git a/src/test/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/packed_struct_drop_aligned.rs b/tests/mir-opt/packed_struct_drop_aligned.rs similarity index 100% rename from src/test/mir-opt/packed_struct_drop_aligned.rs rename to tests/mir-opt/packed_struct_drop_aligned.rs diff --git a/src/test/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.diff b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.diff similarity index 100% rename from src/test/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.diff rename to tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.diff diff --git a/src/test/mir-opt/remove_fake_borrows.rs b/tests/mir-opt/remove_fake_borrows.rs similarity index 100% rename from src/test/mir-opt/remove_fake_borrows.rs rename to tests/mir-opt/remove_fake_borrows.rs diff --git a/src/test/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir b/tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir rename to tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir diff --git a/src/test/mir-opt/remove_never_const.rs b/tests/mir-opt/remove_never_const.rs similarity index 100% rename from src/test/mir-opt/remove_never_const.rs rename to tests/mir-opt/remove_never_const.rs diff --git a/src/test/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.diff b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.diff similarity index 100% rename from src/test/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.diff rename to tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.diff diff --git a/src/test/mir-opt/remove_storage_markers.rs b/tests/mir-opt/remove_storage_markers.rs similarity index 100% rename from src/test/mir-opt/remove_storage_markers.rs rename to tests/mir-opt/remove_storage_markers.rs diff --git a/src/test/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff b/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff similarity index 100% rename from src/test/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff rename to tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff diff --git a/src/test/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff b/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff similarity index 100% rename from src/test/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff rename to tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff diff --git a/src/test/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.diff b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.diff similarity index 100% rename from src/test/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.diff rename to tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.diff diff --git a/src/test/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff similarity index 100% rename from src/test/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff rename to tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff diff --git a/src/test/mir-opt/remove_unneeded_drops.rs b/tests/mir-opt/remove_unneeded_drops.rs similarity index 100% rename from src/test/mir-opt/remove_unneeded_drops.rs rename to tests/mir-opt/remove_unneeded_drops.rs diff --git a/src/test/mir-opt/remove_zsts.get_union.PreCodegen.after.mir b/tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/remove_zsts.get_union.PreCodegen.after.mir rename to tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir diff --git a/src/test/mir-opt/remove_zsts.get_union.RemoveZsts.diff b/tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff similarity index 100% rename from src/test/mir-opt/remove_zsts.get_union.RemoveZsts.diff rename to tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff diff --git a/src/test/mir-opt/remove_zsts.rs b/tests/mir-opt/remove_zsts.rs similarity index 100% rename from src/test/mir-opt/remove_zsts.rs rename to tests/mir-opt/remove_zsts.rs diff --git a/src/test/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir b/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir similarity index 100% rename from src/test/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir rename to tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir diff --git a/src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/retag.rs b/tests/mir-opt/retag.rs similarity index 100% rename from src/test/mir-opt/retag.rs rename to tests/mir-opt/retag.rs diff --git a/src/test/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir similarity index 100% rename from src/test/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir rename to tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir diff --git a/src/test/mir-opt/return_an_array.rs b/tests/mir-opt/return_an_array.rs similarity index 100% rename from src/test/mir-opt/return_an_array.rs rename to tests/mir-opt/return_an_array.rs diff --git a/src/test/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff b/tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff similarity index 100% rename from src/test/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff rename to tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff diff --git a/src/test/mir-opt/separate_const_switch.rs b/tests/mir-opt/separate_const_switch.rs similarity index 100% rename from src/test/mir-opt/separate_const_switch.rs rename to tests/mir-opt/separate_const_switch.rs diff --git a/src/test/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff b/tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff similarity index 100% rename from src/test/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff rename to tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff diff --git a/src/test/mir-opt/simple_option_map_e2e.ezmap.PreCodegen.after.mir b/tests/mir-opt/simple_option_map_e2e.ezmap.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/simple_option_map_e2e.ezmap.PreCodegen.after.mir rename to tests/mir-opt/simple_option_map_e2e.ezmap.PreCodegen.after.mir diff --git a/src/test/mir-opt/simple_option_map_e2e.rs b/tests/mir-opt/simple_option_map_e2e.rs similarity index 100% rename from src/test/mir-opt/simple_option_map_e2e.rs rename to tests/mir-opt/simple_option_map_e2e.rs diff --git a/src/test/mir-opt/simplify_arm.id_try.SimplifyArmIdentity.diff b/tests/mir-opt/simplify_arm.id_try.SimplifyArmIdentity.diff similarity index 100% rename from src/test/mir-opt/simplify_arm.id_try.SimplifyArmIdentity.diff rename to tests/mir-opt/simplify_arm.id_try.SimplifyArmIdentity.diff diff --git a/src/test/mir-opt/simplify_arm.id_try.SimplifyBranchSame.diff b/tests/mir-opt/simplify_arm.id_try.SimplifyBranchSame.diff similarity index 100% rename from src/test/mir-opt/simplify_arm.id_try.SimplifyBranchSame.diff rename to tests/mir-opt/simplify_arm.id_try.SimplifyBranchSame.diff diff --git a/src/test/mir-opt/simplify_arm.rs b/tests/mir-opt/simplify_arm.rs similarity index 100% rename from src/test/mir-opt/simplify_arm.rs rename to tests/mir-opt/simplify_arm.rs diff --git a/src/test/mir-opt/simplify_arm_identity.rs b/tests/mir-opt/simplify_arm_identity.rs similarity index 100% rename from src/test/mir-opt/simplify_arm_identity.rs rename to tests/mir-opt/simplify_arm_identity.rs diff --git a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff similarity index 100% rename from src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff rename to tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff diff --git a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff similarity index 100% rename from src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff rename to tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff diff --git a/src/test/mir-opt/simplify_cfg.rs b/tests/mir-opt/simplify_cfg.rs similarity index 100% rename from src/test/mir-opt/simplify_cfg.rs rename to tests/mir-opt/simplify_cfg.rs diff --git a/src/test/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.diff b/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.diff rename to tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.diff diff --git a/src/test/mir-opt/simplify_if.rs b/tests/mir-opt/simplify_if.rs similarity index 100% rename from src/test/mir-opt/simplify_if.rs rename to tests/mir-opt/simplify_if.rs diff --git a/src/test/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.rs b/tests/mir-opt/simplify_locals.rs similarity index 100% rename from src/test/mir-opt/simplify_locals.rs rename to tests/mir-opt/simplify_locals.rs diff --git a/src/test/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.diff b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.diff similarity index 100% rename from src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.diff rename to tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.diff diff --git a/src/test/mir-opt/simplify_locals_fixedpoint.rs b/tests/mir-opt/simplify_locals_fixedpoint.rs similarity index 100% rename from src/test/mir-opt/simplify_locals_fixedpoint.rs rename to tests/mir-opt/simplify_locals_fixedpoint.rs diff --git a/src/test/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals_removes_unused_consts.rs b/tests/mir-opt/simplify_locals_removes_unused_consts.rs similarity index 100% rename from src/test/mir-opt/simplify_locals_removes_unused_consts.rs rename to tests/mir-opt/simplify_locals_removes_unused_consts.rs diff --git a/src/test/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff similarity index 100% rename from src/test/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff rename to tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff diff --git a/src/test/mir-opt/simplify_locals_removes_unused_discriminant_reads.rs b/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.rs similarity index 100% rename from src/test/mir-opt/simplify_locals_removes_unused_discriminant_reads.rs rename to tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.rs diff --git a/src/test/mir-opt/simplify_match.main.ConstProp.diff b/tests/mir-opt/simplify_match.main.ConstProp.diff similarity index 100% rename from src/test/mir-opt/simplify_match.main.ConstProp.diff rename to tests/mir-opt/simplify_match.main.ConstProp.diff diff --git a/src/test/mir-opt/simplify_match.rs b/tests/mir-opt/simplify_match.rs similarity index 100% rename from src/test/mir-opt/simplify_match.rs rename to tests/mir-opt/simplify_match.rs diff --git a/src/test/mir-opt/simplify_try_if_let.rs b/tests/mir-opt/simplify_try_if_let.rs similarity index 100% rename from src/test/mir-opt/simplify_try_if_let.rs rename to tests/mir-opt/simplify_try_if_let.rs diff --git a/src/test/mir-opt/simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff b/tests/mir-opt/simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff similarity index 100% rename from src/test/mir-opt/simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff rename to tests/mir-opt/simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff diff --git a/src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir b/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir similarity index 100% rename from src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir rename to tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir diff --git a/src/test/mir-opt/slice_drop_shim.rs b/tests/mir-opt/slice_drop_shim.rs similarity index 100% rename from src/test/mir-opt/slice_drop_shim.rs rename to tests/mir-opt/slice_drop_shim.rs diff --git a/src/test/mir-opt/spanview_block.main.built.after.html b/tests/mir-opt/spanview_block.main.built.after.html similarity index 100% rename from src/test/mir-opt/spanview_block.main.built.after.html rename to tests/mir-opt/spanview_block.main.built.after.html diff --git a/src/test/mir-opt/spanview_block.rs b/tests/mir-opt/spanview_block.rs similarity index 100% rename from src/test/mir-opt/spanview_block.rs rename to tests/mir-opt/spanview_block.rs diff --git a/src/test/mir-opt/spanview_statement.main.built.after.html b/tests/mir-opt/spanview_statement.main.built.after.html similarity index 100% rename from src/test/mir-opt/spanview_statement.main.built.after.html rename to tests/mir-opt/spanview_statement.main.built.after.html diff --git a/src/test/mir-opt/spanview_statement.rs b/tests/mir-opt/spanview_statement.rs similarity index 100% rename from src/test/mir-opt/spanview_statement.rs rename to tests/mir-opt/spanview_statement.rs diff --git a/src/test/mir-opt/spanview_terminator.main.built.after.html b/tests/mir-opt/spanview_terminator.main.built.after.html similarity index 100% rename from src/test/mir-opt/spanview_terminator.main.built.after.html rename to tests/mir-opt/spanview_terminator.main.built.after.html diff --git a/src/test/mir-opt/spanview_terminator.rs b/tests/mir-opt/spanview_terminator.rs similarity index 100% rename from src/test/mir-opt/spanview_terminator.rs rename to tests/mir-opt/spanview_terminator.rs diff --git a/src/test/mir-opt/sroa.dropping.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.dropping.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.dropping.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.dropping.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/sroa.enums.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.enums.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.enums.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.enums.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/sroa.escaping.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.escaping.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.escaping.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.escaping.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/sroa.flat.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.flat.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.flat.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.flat.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/sroa.rs b/tests/mir-opt/sroa.rs similarity index 100% rename from src/test/mir-opt/sroa.rs rename to tests/mir-opt/sroa.rs diff --git a/src/test/mir-opt/sroa.structs.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.structs.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.structs.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.structs.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/sroa.unions.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa.unions.ScalarReplacementOfAggregates.diff similarity index 100% rename from src/test/mir-opt/sroa.unions.ScalarReplacementOfAggregates.diff rename to tests/mir-opt/sroa.unions.ScalarReplacementOfAggregates.diff diff --git a/src/test/mir-opt/storage_ranges.main.nll.0.mir b/tests/mir-opt/storage_ranges.main.nll.0.mir similarity index 100% rename from src/test/mir-opt/storage_ranges.main.nll.0.mir rename to tests/mir-opt/storage_ranges.main.nll.0.mir diff --git a/src/test/mir-opt/storage_ranges.rs b/tests/mir-opt/storage_ranges.rs similarity index 100% rename from src/test/mir-opt/storage_ranges.rs rename to tests/mir-opt/storage_ranges.rs diff --git a/src/test/mir-opt/tls_access.main.PreCodegen.after.mir b/tests/mir-opt/tls_access.main.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/tls_access.main.PreCodegen.after.mir rename to tests/mir-opt/tls_access.main.PreCodegen.after.mir diff --git a/src/test/mir-opt/tls_access.rs b/tests/mir-opt/tls_access.rs similarity index 100% rename from src/test/mir-opt/tls_access.rs rename to tests/mir-opt/tls_access.rs diff --git a/src/test/mir-opt/try_identity_e2e.new.PreCodegen.after.mir b/tests/mir-opt/try_identity_e2e.new.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/try_identity_e2e.new.PreCodegen.after.mir rename to tests/mir-opt/try_identity_e2e.new.PreCodegen.after.mir diff --git a/src/test/mir-opt/try_identity_e2e.old.PreCodegen.after.mir b/tests/mir-opt/try_identity_e2e.old.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/try_identity_e2e.old.PreCodegen.after.mir rename to tests/mir-opt/try_identity_e2e.old.PreCodegen.after.mir diff --git a/src/test/mir-opt/try_identity_e2e.rs b/tests/mir-opt/try_identity_e2e.rs similarity index 100% rename from src/test/mir-opt/try_identity_e2e.rs rename to tests/mir-opt/try_identity_e2e.rs diff --git a/src/test/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir b/tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir similarity index 100% rename from src/test/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir rename to tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir diff --git a/src/test/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir b/tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir similarity index 100% rename from src/test/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir rename to tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir diff --git a/src/test/mir-opt/uninhabited_enum.rs b/tests/mir-opt/uninhabited_enum.rs similarity index 100% rename from src/test/mir-opt/uninhabited_enum.rs rename to tests/mir-opt/uninhabited_enum.rs diff --git a/src/test/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir b/tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir rename to tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir diff --git a/src/test/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff rename to tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff diff --git a/src/test/mir-opt/uninhabited_enum_branching.rs b/tests/mir-opt/uninhabited_enum_branching.rs similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching.rs rename to tests/mir-opt/uninhabited_enum_branching.rs diff --git a/src/test/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir b/tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir rename to tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir diff --git a/src/test/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff rename to tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff diff --git a/src/test/mir-opt/uninhabited_enum_branching2.rs b/tests/mir-opt/uninhabited_enum_branching2.rs similarity index 100% rename from src/test/mir-opt/uninhabited_enum_branching2.rs rename to tests/mir-opt/uninhabited_enum_branching2.rs diff --git a/src/test/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff similarity index 100% rename from src/test/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff rename to tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff diff --git a/src/test/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff similarity index 100% rename from src/test/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff rename to tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff diff --git a/src/test/mir-opt/uninhabited_fallthrough_elimination.rs b/tests/mir-opt/uninhabited_fallthrough_elimination.rs similarity index 100% rename from src/test/mir-opt/uninhabited_fallthrough_elimination.rs rename to tests/mir-opt/uninhabited_fallthrough_elimination.rs diff --git a/src/test/mir-opt/unreachable.main.UnreachablePropagation.diff b/tests/mir-opt/unreachable.main.UnreachablePropagation.diff similarity index 100% rename from src/test/mir-opt/unreachable.main.UnreachablePropagation.diff rename to tests/mir-opt/unreachable.main.UnreachablePropagation.diff diff --git a/src/test/mir-opt/unreachable.rs b/tests/mir-opt/unreachable.rs similarity index 100% rename from src/test/mir-opt/unreachable.rs rename to tests/mir-opt/unreachable.rs diff --git a/src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff similarity index 100% rename from src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff rename to tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff diff --git a/src/test/mir-opt/unreachable_diverging.rs b/tests/mir-opt/unreachable_diverging.rs similarity index 100% rename from src/test/mir-opt/unreachable_diverging.rs rename to tests/mir-opt/unreachable_diverging.rs diff --git a/src/test/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir b/tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir similarity index 100% rename from src/test/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir rename to tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir diff --git a/src/test/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir b/tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir similarity index 100% rename from src/test/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir rename to tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir diff --git a/src/test/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir b/tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir similarity index 100% rename from src/test/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir rename to tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir diff --git a/src/test/mir-opt/unusual_item_types.rs b/tests/mir-opt/unusual_item_types.rs similarity index 100% rename from src/test/mir-opt/unusual_item_types.rs rename to tests/mir-opt/unusual_item_types.rs diff --git a/src/test/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir b/tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir similarity index 100% rename from src/test/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir rename to tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir diff --git a/src/test/mir-opt/while_let_loops.change_loop_body.ConstProp.diff b/tests/mir-opt/while_let_loops.change_loop_body.ConstProp.diff similarity index 100% rename from src/test/mir-opt/while_let_loops.change_loop_body.ConstProp.diff rename to tests/mir-opt/while_let_loops.change_loop_body.ConstProp.diff diff --git a/src/test/mir-opt/while_let_loops.change_loop_body.PreCodegen.after.mir b/tests/mir-opt/while_let_loops.change_loop_body.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/while_let_loops.change_loop_body.PreCodegen.after.mir rename to tests/mir-opt/while_let_loops.change_loop_body.PreCodegen.after.mir diff --git a/src/test/mir-opt/while_let_loops.rs b/tests/mir-opt/while_let_loops.rs similarity index 100% rename from src/test/mir-opt/while_let_loops.rs rename to tests/mir-opt/while_let_loops.rs diff --git a/src/test/mir-opt/while_storage.rs b/tests/mir-opt/while_storage.rs similarity index 100% rename from src/test/mir-opt/while_storage.rs rename to tests/mir-opt/while_storage.rs diff --git a/src/test/mir-opt/while_storage.while_loop.PreCodegen.after.mir b/tests/mir-opt/while_storage.while_loop.PreCodegen.after.mir similarity index 100% rename from src/test/mir-opt/while_storage.while_loop.PreCodegen.after.mir rename to tests/mir-opt/while_storage.while_loop.PreCodegen.after.mir diff --git a/src/test/pretty/asm.pp b/tests/pretty/asm.pp similarity index 100% rename from src/test/pretty/asm.pp rename to tests/pretty/asm.pp diff --git a/src/test/pretty/asm.rs b/tests/pretty/asm.rs similarity index 100% rename from src/test/pretty/asm.rs rename to tests/pretty/asm.rs diff --git a/src/test/pretty/ast-stmt-expr-attr.rs b/tests/pretty/ast-stmt-expr-attr.rs similarity index 100% rename from src/test/pretty/ast-stmt-expr-attr.rs rename to tests/pretty/ast-stmt-expr-attr.rs diff --git a/src/test/pretty/async.rs b/tests/pretty/async.rs similarity index 100% rename from src/test/pretty/async.rs rename to tests/pretty/async.rs diff --git a/src/test/pretty/attr-derive.rs b/tests/pretty/attr-derive.rs similarity index 100% rename from src/test/pretty/attr-derive.rs rename to tests/pretty/attr-derive.rs diff --git a/src/test/pretty/attr-fn-inner.rs b/tests/pretty/attr-fn-inner.rs similarity index 100% rename from src/test/pretty/attr-fn-inner.rs rename to tests/pretty/attr-fn-inner.rs diff --git a/src/test/pretty/attr-literals.rs b/tests/pretty/attr-literals.rs similarity index 100% rename from src/test/pretty/attr-literals.rs rename to tests/pretty/attr-literals.rs diff --git a/src/test/pretty/attr-tokens-raw-ident.rs b/tests/pretty/attr-tokens-raw-ident.rs similarity index 100% rename from src/test/pretty/attr-tokens-raw-ident.rs rename to tests/pretty/attr-tokens-raw-ident.rs diff --git a/src/test/pretty/auto-trait.rs b/tests/pretty/auto-trait.rs similarity index 100% rename from src/test/pretty/auto-trait.rs rename to tests/pretty/auto-trait.rs diff --git a/src/test/pretty/auxiliary/derive-foo.rs b/tests/pretty/auxiliary/derive-foo.rs similarity index 100% rename from src/test/pretty/auxiliary/derive-foo.rs rename to tests/pretty/auxiliary/derive-foo.rs diff --git a/src/test/pretty/blank-lines.rs b/tests/pretty/blank-lines.rs similarity index 100% rename from src/test/pretty/blank-lines.rs rename to tests/pretty/blank-lines.rs diff --git a/src/test/pretty/block-comment-multiple-asterisks.rs b/tests/pretty/block-comment-multiple-asterisks.rs similarity index 100% rename from src/test/pretty/block-comment-multiple-asterisks.rs rename to tests/pretty/block-comment-multiple-asterisks.rs diff --git a/src/test/pretty/block-comment-trailing-whitespace.rs b/tests/pretty/block-comment-trailing-whitespace.rs similarity index 100% rename from src/test/pretty/block-comment-trailing-whitespace.rs rename to tests/pretty/block-comment-trailing-whitespace.rs diff --git a/src/test/pretty/block-comment-trailing-whitespace2.rs b/tests/pretty/block-comment-trailing-whitespace2.rs similarity index 100% rename from src/test/pretty/block-comment-trailing-whitespace2.rs rename to tests/pretty/block-comment-trailing-whitespace2.rs diff --git a/src/test/pretty/block-comment-wchar.pp b/tests/pretty/block-comment-wchar.pp similarity index 100% rename from src/test/pretty/block-comment-wchar.pp rename to tests/pretty/block-comment-wchar.pp diff --git a/src/test/pretty/block-comment-wchar.rs b/tests/pretty/block-comment-wchar.rs similarity index 100% rename from src/test/pretty/block-comment-wchar.rs rename to tests/pretty/block-comment-wchar.rs diff --git a/src/test/pretty/block-disambig.rs b/tests/pretty/block-disambig.rs similarity index 100% rename from src/test/pretty/block-disambig.rs rename to tests/pretty/block-disambig.rs diff --git a/src/test/pretty/cast-lt.pp b/tests/pretty/cast-lt.pp similarity index 100% rename from src/test/pretty/cast-lt.pp rename to tests/pretty/cast-lt.pp diff --git a/src/test/pretty/cast-lt.rs b/tests/pretty/cast-lt.rs similarity index 100% rename from src/test/pretty/cast-lt.rs rename to tests/pretty/cast-lt.rs diff --git a/src/test/pretty/closure-reform-pretty.rs b/tests/pretty/closure-reform-pretty.rs similarity index 100% rename from src/test/pretty/closure-reform-pretty.rs rename to tests/pretty/closure-reform-pretty.rs diff --git a/src/test/pretty/delimited-token-groups.rs b/tests/pretty/delimited-token-groups.rs similarity index 100% rename from src/test/pretty/delimited-token-groups.rs rename to tests/pretty/delimited-token-groups.rs diff --git a/src/test/pretty/disamb-stmt-expr.rs b/tests/pretty/disamb-stmt-expr.rs similarity index 100% rename from src/test/pretty/disamb-stmt-expr.rs rename to tests/pretty/disamb-stmt-expr.rs diff --git a/src/test/pretty/do1.rs b/tests/pretty/do1.rs similarity index 100% rename from src/test/pretty/do1.rs rename to tests/pretty/do1.rs diff --git a/src/test/pretty/doc-comments.rs b/tests/pretty/doc-comments.rs similarity index 100% rename from src/test/pretty/doc-comments.rs rename to tests/pretty/doc-comments.rs diff --git a/src/test/pretty/dollar-crate.pp b/tests/pretty/dollar-crate.pp similarity index 100% rename from src/test/pretty/dollar-crate.pp rename to tests/pretty/dollar-crate.pp diff --git a/src/test/pretty/dollar-crate.rs b/tests/pretty/dollar-crate.rs similarity index 100% rename from src/test/pretty/dollar-crate.rs rename to tests/pretty/dollar-crate.rs diff --git a/src/test/pretty/empty-impl.rs b/tests/pretty/empty-impl.rs similarity index 100% rename from src/test/pretty/empty-impl.rs rename to tests/pretty/empty-impl.rs diff --git a/src/test/pretty/empty-lines.rs b/tests/pretty/empty-lines.rs similarity index 100% rename from src/test/pretty/empty-lines.rs rename to tests/pretty/empty-lines.rs diff --git a/src/test/pretty/enum-variant-vis.rs b/tests/pretty/enum-variant-vis.rs similarity index 100% rename from src/test/pretty/enum-variant-vis.rs rename to tests/pretty/enum-variant-vis.rs diff --git a/src/test/pretty/example1.rs b/tests/pretty/example1.rs similarity index 100% rename from src/test/pretty/example1.rs rename to tests/pretty/example1.rs diff --git a/src/test/pretty/example2.pp b/tests/pretty/example2.pp similarity index 100% rename from src/test/pretty/example2.pp rename to tests/pretty/example2.pp diff --git a/src/test/pretty/example2.rs b/tests/pretty/example2.rs similarity index 100% rename from src/test/pretty/example2.rs rename to tests/pretty/example2.rs diff --git a/src/test/pretty/expanded-and-path-remap-80832.pp b/tests/pretty/expanded-and-path-remap-80832.pp similarity index 100% rename from src/test/pretty/expanded-and-path-remap-80832.pp rename to tests/pretty/expanded-and-path-remap-80832.pp diff --git a/src/test/pretty/expanded-and-path-remap-80832.rs b/tests/pretty/expanded-and-path-remap-80832.rs similarity index 100% rename from src/test/pretty/expanded-and-path-remap-80832.rs rename to tests/pretty/expanded-and-path-remap-80832.rs diff --git a/src/test/pretty/fn-return.rs b/tests/pretty/fn-return.rs similarity index 100% rename from src/test/pretty/fn-return.rs rename to tests/pretty/fn-return.rs diff --git a/src/test/pretty/fn-types.rs b/tests/pretty/fn-types.rs similarity index 100% rename from src/test/pretty/fn-types.rs rename to tests/pretty/fn-types.rs diff --git a/src/test/pretty/fn-variadic.rs b/tests/pretty/fn-variadic.rs similarity index 100% rename from src/test/pretty/fn-variadic.rs rename to tests/pretty/fn-variadic.rs diff --git a/src/test/pretty/for-comment.rs b/tests/pretty/for-comment.rs similarity index 100% rename from src/test/pretty/for-comment.rs rename to tests/pretty/for-comment.rs diff --git a/src/test/pretty/gat-bounds.rs b/tests/pretty/gat-bounds.rs similarity index 100% rename from src/test/pretty/gat-bounds.rs rename to tests/pretty/gat-bounds.rs diff --git a/src/test/pretty/hir-pretty-loop.pp b/tests/pretty/hir-pretty-loop.pp similarity index 100% rename from src/test/pretty/hir-pretty-loop.pp rename to tests/pretty/hir-pretty-loop.pp diff --git a/src/test/pretty/hir-pretty-loop.rs b/tests/pretty/hir-pretty-loop.rs similarity index 100% rename from src/test/pretty/hir-pretty-loop.rs rename to tests/pretty/hir-pretty-loop.rs diff --git a/src/test/pretty/if-attr.rs b/tests/pretty/if-attr.rs similarity index 100% rename from src/test/pretty/if-attr.rs rename to tests/pretty/if-attr.rs diff --git a/src/test/pretty/import-renames.rs b/tests/pretty/import-renames.rs similarity index 100% rename from src/test/pretty/import-renames.rs rename to tests/pretty/import-renames.rs diff --git a/src/test/pretty/issue-12590-a.rs b/tests/pretty/issue-12590-a.rs similarity index 100% rename from src/test/pretty/issue-12590-a.rs rename to tests/pretty/issue-12590-a.rs diff --git a/src/test/pretty/issue-12590-b.rs b/tests/pretty/issue-12590-b.rs similarity index 100% rename from src/test/pretty/issue-12590-b.rs rename to tests/pretty/issue-12590-b.rs diff --git a/src/test/pretty/issue-12590-c.pp b/tests/pretty/issue-12590-c.pp similarity index 100% rename from src/test/pretty/issue-12590-c.pp rename to tests/pretty/issue-12590-c.pp diff --git a/src/test/pretty/issue-12590-c.rs b/tests/pretty/issue-12590-c.rs similarity index 100% rename from src/test/pretty/issue-12590-c.rs rename to tests/pretty/issue-12590-c.rs diff --git a/src/test/pretty/issue-19077.rs b/tests/pretty/issue-19077.rs similarity index 100% rename from src/test/pretty/issue-19077.rs rename to tests/pretty/issue-19077.rs diff --git a/src/test/pretty/issue-25031.rs b/tests/pretty/issue-25031.rs similarity index 100% rename from src/test/pretty/issue-25031.rs rename to tests/pretty/issue-25031.rs diff --git a/src/test/pretty/issue-30731.rs b/tests/pretty/issue-30731.rs similarity index 100% rename from src/test/pretty/issue-30731.rs rename to tests/pretty/issue-30731.rs diff --git a/src/test/pretty/issue-31073.pp b/tests/pretty/issue-31073.pp similarity index 100% rename from src/test/pretty/issue-31073.pp rename to tests/pretty/issue-31073.pp diff --git a/src/test/pretty/issue-31073.rs b/tests/pretty/issue-31073.rs similarity index 100% rename from src/test/pretty/issue-31073.rs rename to tests/pretty/issue-31073.rs diff --git a/src/test/pretty/issue-4264.pp b/tests/pretty/issue-4264.pp similarity index 100% rename from src/test/pretty/issue-4264.pp rename to tests/pretty/issue-4264.pp diff --git a/src/test/pretty/issue-4264.rs b/tests/pretty/issue-4264.rs similarity index 100% rename from src/test/pretty/issue-4264.rs rename to tests/pretty/issue-4264.rs diff --git a/src/test/pretty/issue-68710-field-attr-proc-mac-lost.rs b/tests/pretty/issue-68710-field-attr-proc-mac-lost.rs similarity index 100% rename from src/test/pretty/issue-68710-field-attr-proc-mac-lost.rs rename to tests/pretty/issue-68710-field-attr-proc-mac-lost.rs diff --git a/src/test/pretty/issue-73626.rs b/tests/pretty/issue-73626.rs similarity index 100% rename from src/test/pretty/issue-73626.rs rename to tests/pretty/issue-73626.rs diff --git a/src/test/pretty/issue-74745.rs b/tests/pretty/issue-74745.rs similarity index 100% rename from src/test/pretty/issue-74745.rs rename to tests/pretty/issue-74745.rs diff --git a/src/test/pretty/issue-85089.pp b/tests/pretty/issue-85089.pp similarity index 100% rename from src/test/pretty/issue-85089.pp rename to tests/pretty/issue-85089.pp diff --git a/src/test/pretty/issue-85089.rs b/tests/pretty/issue-85089.rs similarity index 100% rename from src/test/pretty/issue-85089.rs rename to tests/pretty/issue-85089.rs diff --git a/src/test/pretty/let.rs b/tests/pretty/let.rs similarity index 100% rename from src/test/pretty/let.rs rename to tests/pretty/let.rs diff --git a/src/test/pretty/lifetime.rs b/tests/pretty/lifetime.rs similarity index 100% rename from src/test/pretty/lifetime.rs rename to tests/pretty/lifetime.rs diff --git a/src/test/pretty/macro.rs b/tests/pretty/macro.rs similarity index 100% rename from src/test/pretty/macro.rs rename to tests/pretty/macro.rs diff --git a/src/test/pretty/macro_rules.rs b/tests/pretty/macro_rules.rs similarity index 100% rename from src/test/pretty/macro_rules.rs rename to tests/pretty/macro_rules.rs diff --git a/src/test/pretty/match-block-expr.rs b/tests/pretty/match-block-expr.rs similarity index 100% rename from src/test/pretty/match-block-expr.rs rename to tests/pretty/match-block-expr.rs diff --git a/src/test/pretty/match-naked-expr-medium.rs b/tests/pretty/match-naked-expr-medium.rs similarity index 100% rename from src/test/pretty/match-naked-expr-medium.rs rename to tests/pretty/match-naked-expr-medium.rs diff --git a/src/test/pretty/match-naked-expr.rs b/tests/pretty/match-naked-expr.rs similarity index 100% rename from src/test/pretty/match-naked-expr.rs rename to tests/pretty/match-naked-expr.rs diff --git a/src/test/pretty/nested-item-vis-defaultness.rs b/tests/pretty/nested-item-vis-defaultness.rs similarity index 100% rename from src/test/pretty/nested-item-vis-defaultness.rs rename to tests/pretty/nested-item-vis-defaultness.rs diff --git a/src/test/pretty/path-type-bounds.rs b/tests/pretty/path-type-bounds.rs similarity index 100% rename from src/test/pretty/path-type-bounds.rs rename to tests/pretty/path-type-bounds.rs diff --git a/src/test/pretty/qpath-associated-type-bound.rs b/tests/pretty/qpath-associated-type-bound.rs similarity index 100% rename from src/test/pretty/qpath-associated-type-bound.rs rename to tests/pretty/qpath-associated-type-bound.rs diff --git a/src/test/pretty/raw-address-of.rs b/tests/pretty/raw-address-of.rs similarity index 100% rename from src/test/pretty/raw-address-of.rs rename to tests/pretty/raw-address-of.rs diff --git a/src/test/pretty/raw-str-nonexpr.rs b/tests/pretty/raw-str-nonexpr.rs similarity index 100% rename from src/test/pretty/raw-str-nonexpr.rs rename to tests/pretty/raw-str-nonexpr.rs diff --git a/src/test/pretty/stmt_expr_attributes.rs b/tests/pretty/stmt_expr_attributes.rs similarity index 100% rename from src/test/pretty/stmt_expr_attributes.rs rename to tests/pretty/stmt_expr_attributes.rs diff --git a/src/test/pretty/struct-pattern.rs b/tests/pretty/struct-pattern.rs similarity index 100% rename from src/test/pretty/struct-pattern.rs rename to tests/pretty/struct-pattern.rs diff --git a/src/test/pretty/struct-tuple.rs b/tests/pretty/struct-tuple.rs similarity index 100% rename from src/test/pretty/struct-tuple.rs rename to tests/pretty/struct-tuple.rs diff --git a/src/test/pretty/tag-blank-lines.rs b/tests/pretty/tag-blank-lines.rs similarity index 100% rename from src/test/pretty/tag-blank-lines.rs rename to tests/pretty/tag-blank-lines.rs diff --git a/src/test/pretty/tests-are-sorted.pp b/tests/pretty/tests-are-sorted.pp similarity index 100% rename from src/test/pretty/tests-are-sorted.pp rename to tests/pretty/tests-are-sorted.pp diff --git a/src/test/pretty/tests-are-sorted.rs b/tests/pretty/tests-are-sorted.rs similarity index 100% rename from src/test/pretty/tests-are-sorted.rs rename to tests/pretty/tests-are-sorted.rs diff --git a/src/test/pretty/top-level-doc-comments.rs b/tests/pretty/top-level-doc-comments.rs similarity index 100% rename from src/test/pretty/top-level-doc-comments.rs rename to tests/pretty/top-level-doc-comments.rs diff --git a/src/test/pretty/trait-inner-attr.rs b/tests/pretty/trait-inner-attr.rs similarity index 100% rename from src/test/pretty/trait-inner-attr.rs rename to tests/pretty/trait-inner-attr.rs diff --git a/src/test/pretty/trait-polarity.rs b/tests/pretty/trait-polarity.rs similarity index 100% rename from src/test/pretty/trait-polarity.rs rename to tests/pretty/trait-polarity.rs diff --git a/src/test/pretty/trait-safety.rs b/tests/pretty/trait-safety.rs similarity index 100% rename from src/test/pretty/trait-safety.rs rename to tests/pretty/trait-safety.rs diff --git a/src/test/pretty/unary-op-disambig.rs b/tests/pretty/unary-op-disambig.rs similarity index 100% rename from src/test/pretty/unary-op-disambig.rs rename to tests/pretty/unary-op-disambig.rs diff --git a/src/test/pretty/use-tree.rs b/tests/pretty/use-tree.rs similarity index 100% rename from src/test/pretty/use-tree.rs rename to tests/pretty/use-tree.rs diff --git a/src/test/pretty/vec-comments.pp b/tests/pretty/vec-comments.pp similarity index 100% rename from src/test/pretty/vec-comments.pp rename to tests/pretty/vec-comments.pp diff --git a/src/test/pretty/vec-comments.rs b/tests/pretty/vec-comments.rs similarity index 100% rename from src/test/pretty/vec-comments.rs rename to tests/pretty/vec-comments.rs diff --git a/src/test/pretty/where-clauses.rs b/tests/pretty/where-clauses.rs similarity index 100% rename from src/test/pretty/where-clauses.rs rename to tests/pretty/where-clauses.rs diff --git a/src/test/pretty/yeet-expr.rs b/tests/pretty/yeet-expr.rs similarity index 100% rename from src/test/pretty/yeet-expr.rs rename to tests/pretty/yeet-expr.rs diff --git a/src/test/run-make-fulldeps/a-b-a-linker-guard/Makefile b/tests/run-make-fulldeps/a-b-a-linker-guard/Makefile similarity index 100% rename from src/test/run-make-fulldeps/a-b-a-linker-guard/Makefile rename to tests/run-make-fulldeps/a-b-a-linker-guard/Makefile diff --git a/src/test/run-make-fulldeps/a-b-a-linker-guard/a.rs b/tests/run-make-fulldeps/a-b-a-linker-guard/a.rs similarity index 100% rename from src/test/run-make-fulldeps/a-b-a-linker-guard/a.rs rename to tests/run-make-fulldeps/a-b-a-linker-guard/a.rs diff --git a/src/test/run-make-fulldeps/a-b-a-linker-guard/b.rs b/tests/run-make-fulldeps/a-b-a-linker-guard/b.rs similarity index 100% rename from src/test/run-make-fulldeps/a-b-a-linker-guard/b.rs rename to tests/run-make-fulldeps/a-b-a-linker-guard/b.rs diff --git a/src/test/run-make-fulldeps/alloc-no-oom-handling/Makefile b/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile similarity index 100% rename from src/test/run-make-fulldeps/alloc-no-oom-handling/Makefile rename to tests/run-make-fulldeps/alloc-no-oom-handling/Makefile diff --git a/src/test/run-make-fulldeps/alloc-no-rc/Makefile b/tests/run-make-fulldeps/alloc-no-rc/Makefile similarity index 100% rename from src/test/run-make-fulldeps/alloc-no-rc/Makefile rename to tests/run-make-fulldeps/alloc-no-rc/Makefile diff --git a/src/test/run-make-fulldeps/alloc-no-sync/Makefile b/tests/run-make-fulldeps/alloc-no-sync/Makefile similarity index 100% rename from src/test/run-make-fulldeps/alloc-no-sync/Makefile rename to tests/run-make-fulldeps/alloc-no-sync/Makefile diff --git a/src/test/run-make-fulldeps/allow-non-lint-warnings-cmdline/Makefile b/tests/run-make-fulldeps/allow-non-lint-warnings-cmdline/Makefile similarity index 100% rename from src/test/run-make-fulldeps/allow-non-lint-warnings-cmdline/Makefile rename to tests/run-make-fulldeps/allow-non-lint-warnings-cmdline/Makefile diff --git a/src/test/run-make-fulldeps/allow-non-lint-warnings-cmdline/foo.rs b/tests/run-make-fulldeps/allow-non-lint-warnings-cmdline/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/allow-non-lint-warnings-cmdline/foo.rs rename to tests/run-make-fulldeps/allow-non-lint-warnings-cmdline/foo.rs diff --git a/src/test/run-make-fulldeps/allow-warnings-cmdline-stability/Makefile b/tests/run-make-fulldeps/allow-warnings-cmdline-stability/Makefile similarity index 100% rename from src/test/run-make-fulldeps/allow-warnings-cmdline-stability/Makefile rename to tests/run-make-fulldeps/allow-warnings-cmdline-stability/Makefile diff --git a/src/test/run-make-fulldeps/allow-warnings-cmdline-stability/bar.rs b/tests/run-make-fulldeps/allow-warnings-cmdline-stability/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/allow-warnings-cmdline-stability/bar.rs rename to tests/run-make-fulldeps/allow-warnings-cmdline-stability/bar.rs diff --git a/src/test/run-make-fulldeps/allow-warnings-cmdline-stability/foo.rs b/tests/run-make-fulldeps/allow-warnings-cmdline-stability/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/allow-warnings-cmdline-stability/foo.rs rename to tests/run-make-fulldeps/allow-warnings-cmdline-stability/foo.rs diff --git a/src/test/run-make-fulldeps/archive-duplicate-names/Makefile b/tests/run-make-fulldeps/archive-duplicate-names/Makefile similarity index 100% rename from src/test/run-make-fulldeps/archive-duplicate-names/Makefile rename to tests/run-make-fulldeps/archive-duplicate-names/Makefile diff --git a/src/test/run-make-fulldeps/archive-duplicate-names/bar.c b/tests/run-make-fulldeps/archive-duplicate-names/bar.c similarity index 100% rename from src/test/run-make-fulldeps/archive-duplicate-names/bar.c rename to tests/run-make-fulldeps/archive-duplicate-names/bar.c diff --git a/src/test/run-make-fulldeps/archive-duplicate-names/bar.rs b/tests/run-make-fulldeps/archive-duplicate-names/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/archive-duplicate-names/bar.rs rename to tests/run-make-fulldeps/archive-duplicate-names/bar.rs diff --git a/src/test/run-make-fulldeps/archive-duplicate-names/foo.c b/tests/run-make-fulldeps/archive-duplicate-names/foo.c similarity index 100% rename from src/test/run-make-fulldeps/archive-duplicate-names/foo.c rename to tests/run-make-fulldeps/archive-duplicate-names/foo.c diff --git a/src/test/run-make-fulldeps/archive-duplicate-names/foo.rs b/tests/run-make-fulldeps/archive-duplicate-names/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/archive-duplicate-names/foo.rs rename to tests/run-make-fulldeps/archive-duplicate-names/foo.rs diff --git a/src/test/run-make-fulldeps/arguments-non-c-like-enum/Makefile b/tests/run-make-fulldeps/arguments-non-c-like-enum/Makefile similarity index 100% rename from src/test/run-make-fulldeps/arguments-non-c-like-enum/Makefile rename to tests/run-make-fulldeps/arguments-non-c-like-enum/Makefile diff --git a/src/test/run-make-fulldeps/arguments-non-c-like-enum/nonclike.rs b/tests/run-make-fulldeps/arguments-non-c-like-enum/nonclike.rs similarity index 100% rename from src/test/run-make-fulldeps/arguments-non-c-like-enum/nonclike.rs rename to tests/run-make-fulldeps/arguments-non-c-like-enum/nonclike.rs diff --git a/src/test/run-make-fulldeps/arguments-non-c-like-enum/test.c b/tests/run-make-fulldeps/arguments-non-c-like-enum/test.c similarity index 100% rename from src/test/run-make-fulldeps/arguments-non-c-like-enum/test.c rename to tests/run-make-fulldeps/arguments-non-c-like-enum/test.c diff --git a/src/test/run-make-fulldeps/atomic-lock-free/Makefile b/tests/run-make-fulldeps/atomic-lock-free/Makefile similarity index 100% rename from src/test/run-make-fulldeps/atomic-lock-free/Makefile rename to tests/run-make-fulldeps/atomic-lock-free/Makefile diff --git a/src/test/run-make-fulldeps/atomic-lock-free/atomic_lock_free.rs b/tests/run-make-fulldeps/atomic-lock-free/atomic_lock_free.rs similarity index 100% rename from src/test/run-make-fulldeps/atomic-lock-free/atomic_lock_free.rs rename to tests/run-make-fulldeps/atomic-lock-free/atomic_lock_free.rs diff --git a/src/test/run-make-fulldeps/bare-outfile/Makefile b/tests/run-make-fulldeps/bare-outfile/Makefile similarity index 100% rename from src/test/run-make-fulldeps/bare-outfile/Makefile rename to tests/run-make-fulldeps/bare-outfile/Makefile diff --git a/src/test/run-make-fulldeps/bare-outfile/foo.rs b/tests/run-make-fulldeps/bare-outfile/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/bare-outfile/foo.rs rename to tests/run-make-fulldeps/bare-outfile/foo.rs diff --git a/src/test/run-make-fulldeps/c-dynamic-dylib/Makefile b/tests/run-make-fulldeps/c-dynamic-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-dylib/Makefile rename to tests/run-make-fulldeps/c-dynamic-dylib/Makefile diff --git a/src/test/run-make-fulldeps/c-dynamic-dylib/bar.rs b/tests/run-make-fulldeps/c-dynamic-dylib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-dylib/bar.rs rename to tests/run-make-fulldeps/c-dynamic-dylib/bar.rs diff --git a/src/test/run-make-fulldeps/c-dynamic-dylib/cfoo.c b/tests/run-make-fulldeps/c-dynamic-dylib/cfoo.c similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-dylib/cfoo.c rename to tests/run-make-fulldeps/c-dynamic-dylib/cfoo.c diff --git a/src/test/run-make-fulldeps/c-dynamic-dylib/foo.rs b/tests/run-make-fulldeps/c-dynamic-dylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-dylib/foo.rs rename to tests/run-make-fulldeps/c-dynamic-dylib/foo.rs diff --git a/src/test/run-make-fulldeps/c-dynamic-rlib/Makefile b/tests/run-make-fulldeps/c-dynamic-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-rlib/Makefile rename to tests/run-make-fulldeps/c-dynamic-rlib/Makefile diff --git a/src/test/run-make-fulldeps/c-dynamic-rlib/bar.rs b/tests/run-make-fulldeps/c-dynamic-rlib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-rlib/bar.rs rename to tests/run-make-fulldeps/c-dynamic-rlib/bar.rs diff --git a/src/test/run-make-fulldeps/c-dynamic-rlib/cfoo.c b/tests/run-make-fulldeps/c-dynamic-rlib/cfoo.c similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-rlib/cfoo.c rename to tests/run-make-fulldeps/c-dynamic-rlib/cfoo.c diff --git a/src/test/run-make-fulldeps/c-dynamic-rlib/foo.rs b/tests/run-make-fulldeps/c-dynamic-rlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-dynamic-rlib/foo.rs rename to tests/run-make-fulldeps/c-dynamic-rlib/foo.rs diff --git a/src/test/run-make-fulldeps/c-link-to-rust-dylib/Makefile b/tests/run-make-fulldeps/c-link-to-rust-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-dylib/Makefile rename to tests/run-make-fulldeps/c-link-to-rust-dylib/Makefile diff --git a/src/test/run-make-fulldeps/c-link-to-rust-dylib/bar.c b/tests/run-make-fulldeps/c-link-to-rust-dylib/bar.c similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-dylib/bar.c rename to tests/run-make-fulldeps/c-link-to-rust-dylib/bar.c diff --git a/src/test/run-make-fulldeps/c-link-to-rust-dylib/foo.rs b/tests/run-make-fulldeps/c-link-to-rust-dylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-dylib/foo.rs rename to tests/run-make-fulldeps/c-link-to-rust-dylib/foo.rs diff --git a/src/test/run-make-fulldeps/c-link-to-rust-staticlib/Makefile b/tests/run-make-fulldeps/c-link-to-rust-staticlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-staticlib/Makefile rename to tests/run-make-fulldeps/c-link-to-rust-staticlib/Makefile diff --git a/src/test/run-make-fulldeps/c-link-to-rust-staticlib/bar.c b/tests/run-make-fulldeps/c-link-to-rust-staticlib/bar.c similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-staticlib/bar.c rename to tests/run-make-fulldeps/c-link-to-rust-staticlib/bar.c diff --git a/src/test/run-make-fulldeps/c-link-to-rust-staticlib/foo.rs b/tests/run-make-fulldeps/c-link-to-rust-staticlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-staticlib/foo.rs rename to tests/run-make-fulldeps/c-link-to-rust-staticlib/foo.rs diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile b/tests/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile rename to tests/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/checkrust.rs b/tests/run-make-fulldeps/c-link-to-rust-va-list-fn/checkrust.rs similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/checkrust.rs rename to tests/run-make-fulldeps/c-link-to-rust-va-list-fn/checkrust.rs diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/test.c b/tests/run-make-fulldeps/c-link-to-rust-va-list-fn/test.c similarity index 100% rename from src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/test.c rename to tests/run-make-fulldeps/c-link-to-rust-va-list-fn/test.c diff --git a/src/test/run-make-fulldeps/c-static-dylib/Makefile b/tests/run-make-fulldeps/c-static-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-static-dylib/Makefile rename to tests/run-make-fulldeps/c-static-dylib/Makefile diff --git a/src/test/run-make-fulldeps/c-static-dylib/bar.rs b/tests/run-make-fulldeps/c-static-dylib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/c-static-dylib/bar.rs rename to tests/run-make-fulldeps/c-static-dylib/bar.rs diff --git a/src/test/run-make-fulldeps/c-static-dylib/cfoo.c b/tests/run-make-fulldeps/c-static-dylib/cfoo.c similarity index 100% rename from src/test/run-make-fulldeps/c-static-dylib/cfoo.c rename to tests/run-make-fulldeps/c-static-dylib/cfoo.c diff --git a/src/test/run-make-fulldeps/c-static-dylib/foo.rs b/tests/run-make-fulldeps/c-static-dylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-static-dylib/foo.rs rename to tests/run-make-fulldeps/c-static-dylib/foo.rs diff --git a/src/test/run-make-fulldeps/c-static-rlib/Makefile b/tests/run-make-fulldeps/c-static-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-static-rlib/Makefile rename to tests/run-make-fulldeps/c-static-rlib/Makefile diff --git a/src/test/run-make-fulldeps/c-static-rlib/bar.rs b/tests/run-make-fulldeps/c-static-rlib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/c-static-rlib/bar.rs rename to tests/run-make-fulldeps/c-static-rlib/bar.rs diff --git a/src/test/run-make-fulldeps/c-static-rlib/cfoo.c b/tests/run-make-fulldeps/c-static-rlib/cfoo.c similarity index 100% rename from src/test/run-make-fulldeps/c-static-rlib/cfoo.c rename to tests/run-make-fulldeps/c-static-rlib/cfoo.c diff --git a/src/test/run-make-fulldeps/c-static-rlib/foo.rs b/tests/run-make-fulldeps/c-static-rlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/c-static-rlib/foo.rs rename to tests/run-make-fulldeps/c-static-rlib/foo.rs diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile rename to tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/Makefile diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c rename to tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/add.c diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs rename to tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/main.rs diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs b/tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs rename to tests/run-make-fulldeps/c-unwind-abi-catch-lib-panic/panic.rs diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-panic/Makefile b/tests/run-make-fulldeps/c-unwind-abi-catch-panic/Makefile similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-panic/Makefile rename to tests/run-make-fulldeps/c-unwind-abi-catch-panic/Makefile diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-panic/add.c b/tests/run-make-fulldeps/c-unwind-abi-catch-panic/add.c similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-panic/add.c rename to tests/run-make-fulldeps/c-unwind-abi-catch-panic/add.c diff --git a/src/test/run-make-fulldeps/c-unwind-abi-catch-panic/main.rs b/tests/run-make-fulldeps/c-unwind-abi-catch-panic/main.rs similarity index 100% rename from src/test/run-make-fulldeps/c-unwind-abi-catch-panic/main.rs rename to tests/run-make-fulldeps/c-unwind-abi-catch-panic/main.rs diff --git a/src/test/run-make-fulldeps/cat-and-grep-sanity-check/Makefile b/tests/run-make-fulldeps/cat-and-grep-sanity-check/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cat-and-grep-sanity-check/Makefile rename to tests/run-make-fulldeps/cat-and-grep-sanity-check/Makefile diff --git a/src/test/run-make-fulldeps/cdylib-dylib-linkage/Makefile b/tests/run-make-fulldeps/cdylib-dylib-linkage/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cdylib-dylib-linkage/Makefile rename to tests/run-make-fulldeps/cdylib-dylib-linkage/Makefile diff --git a/src/test/run-make-fulldeps/cdylib-dylib-linkage/bar.rs b/tests/run-make-fulldeps/cdylib-dylib-linkage/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/cdylib-dylib-linkage/bar.rs rename to tests/run-make-fulldeps/cdylib-dylib-linkage/bar.rs diff --git a/src/test/run-make-fulldeps/cdylib-dylib-linkage/foo.c b/tests/run-make-fulldeps/cdylib-dylib-linkage/foo.c similarity index 100% rename from src/test/run-make-fulldeps/cdylib-dylib-linkage/foo.c rename to tests/run-make-fulldeps/cdylib-dylib-linkage/foo.c diff --git a/src/test/run-make-fulldeps/cdylib-dylib-linkage/foo.rs b/tests/run-make-fulldeps/cdylib-dylib-linkage/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/cdylib-dylib-linkage/foo.rs rename to tests/run-make-fulldeps/cdylib-dylib-linkage/foo.rs diff --git a/src/test/run-make-fulldeps/cdylib-fewer-symbols/Makefile b/tests/run-make-fulldeps/cdylib-fewer-symbols/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cdylib-fewer-symbols/Makefile rename to tests/run-make-fulldeps/cdylib-fewer-symbols/Makefile diff --git a/src/test/run-make-fulldeps/cdylib-fewer-symbols/foo.rs b/tests/run-make-fulldeps/cdylib-fewer-symbols/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/cdylib-fewer-symbols/foo.rs rename to tests/run-make-fulldeps/cdylib-fewer-symbols/foo.rs diff --git a/src/test/run-make-fulldeps/cdylib/Makefile b/tests/run-make-fulldeps/cdylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cdylib/Makefile rename to tests/run-make-fulldeps/cdylib/Makefile diff --git a/src/test/run-make-fulldeps/cdylib/bar.rs b/tests/run-make-fulldeps/cdylib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/cdylib/bar.rs rename to tests/run-make-fulldeps/cdylib/bar.rs diff --git a/src/test/run-make-fulldeps/cdylib/foo.c b/tests/run-make-fulldeps/cdylib/foo.c similarity index 100% rename from src/test/run-make-fulldeps/cdylib/foo.c rename to tests/run-make-fulldeps/cdylib/foo.c diff --git a/src/test/run-make-fulldeps/cdylib/foo.rs b/tests/run-make-fulldeps/cdylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/cdylib/foo.rs rename to tests/run-make-fulldeps/cdylib/foo.rs diff --git a/src/test/run-make-fulldeps/codegen-options-parsing/Makefile b/tests/run-make-fulldeps/codegen-options-parsing/Makefile similarity index 100% rename from src/test/run-make-fulldeps/codegen-options-parsing/Makefile rename to tests/run-make-fulldeps/codegen-options-parsing/Makefile diff --git a/src/test/run-make-fulldeps/codegen-options-parsing/dummy.rs b/tests/run-make-fulldeps/codegen-options-parsing/dummy.rs similarity index 100% rename from src/test/run-make-fulldeps/codegen-options-parsing/dummy.rs rename to tests/run-make-fulldeps/codegen-options-parsing/dummy.rs diff --git a/src/test/run-make-fulldeps/compile-stdin/Makefile b/tests/run-make-fulldeps/compile-stdin/Makefile similarity index 100% rename from src/test/run-make-fulldeps/compile-stdin/Makefile rename to tests/run-make-fulldeps/compile-stdin/Makefile diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths-2/Makefile b/tests/run-make-fulldeps/compiler-lookup-paths-2/Makefile similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths-2/Makefile rename to tests/run-make-fulldeps/compiler-lookup-paths-2/Makefile diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths-2/a.rs b/tests/run-make-fulldeps/compiler-lookup-paths-2/a.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths-2/a.rs rename to tests/run-make-fulldeps/compiler-lookup-paths-2/a.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths-2/b.rs b/tests/run-make-fulldeps/compiler-lookup-paths-2/b.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths-2/b.rs rename to tests/run-make-fulldeps/compiler-lookup-paths-2/b.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths-2/c.rs b/tests/run-make-fulldeps/compiler-lookup-paths-2/c.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths-2/c.rs rename to tests/run-make-fulldeps/compiler-lookup-paths-2/c.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/Makefile b/tests/run-make-fulldeps/compiler-lookup-paths/Makefile similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/Makefile rename to tests/run-make-fulldeps/compiler-lookup-paths/Makefile diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/a.rs b/tests/run-make-fulldeps/compiler-lookup-paths/a.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/a.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/a.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/b.rs b/tests/run-make-fulldeps/compiler-lookup-paths/b.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/b.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/b.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/c.rs b/tests/run-make-fulldeps/compiler-lookup-paths/c.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/c.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/c.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/d.rs b/tests/run-make-fulldeps/compiler-lookup-paths/d.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/d.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/d.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/e.rs b/tests/run-make-fulldeps/compiler-lookup-paths/e.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/e.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/e.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/e2.rs b/tests/run-make-fulldeps/compiler-lookup-paths/e2.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/e2.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/e2.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/f.rs b/tests/run-make-fulldeps/compiler-lookup-paths/f.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/f.rs rename to tests/run-make-fulldeps/compiler-lookup-paths/f.rs diff --git a/src/test/run-make-fulldeps/compiler-lookup-paths/native.c b/tests/run-make-fulldeps/compiler-lookup-paths/native.c similarity index 100% rename from src/test/run-make-fulldeps/compiler-lookup-paths/native.c rename to tests/run-make-fulldeps/compiler-lookup-paths/native.c diff --git a/src/test/run-make-fulldeps/compiler-rt-works-on-mingw/Makefile b/tests/run-make-fulldeps/compiler-rt-works-on-mingw/Makefile similarity index 100% rename from src/test/run-make-fulldeps/compiler-rt-works-on-mingw/Makefile rename to tests/run-make-fulldeps/compiler-rt-works-on-mingw/Makefile diff --git a/src/test/run-make-fulldeps/compiler-rt-works-on-mingw/foo.cpp b/tests/run-make-fulldeps/compiler-rt-works-on-mingw/foo.cpp similarity index 100% rename from src/test/run-make-fulldeps/compiler-rt-works-on-mingw/foo.cpp rename to tests/run-make-fulldeps/compiler-rt-works-on-mingw/foo.cpp diff --git a/src/test/run-make-fulldeps/compiler-rt-works-on-mingw/foo.rs b/tests/run-make-fulldeps/compiler-rt-works-on-mingw/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/compiler-rt-works-on-mingw/foo.rs rename to tests/run-make-fulldeps/compiler-rt-works-on-mingw/foo.rs diff --git a/src/test/run-make-fulldeps/core-no-fp-fmt-parse/Makefile b/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile similarity index 100% rename from src/test/run-make-fulldeps/core-no-fp-fmt-parse/Makefile rename to tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile diff --git a/src/test/run-make-fulldeps/crate-data-smoke/Makefile b/tests/run-make-fulldeps/crate-data-smoke/Makefile similarity index 100% rename from src/test/run-make-fulldeps/crate-data-smoke/Makefile rename to tests/run-make-fulldeps/crate-data-smoke/Makefile diff --git a/src/test/run-make-fulldeps/crate-data-smoke/crate.rs b/tests/run-make-fulldeps/crate-data-smoke/crate.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-data-smoke/crate.rs rename to tests/run-make-fulldeps/crate-data-smoke/crate.rs diff --git a/src/test/run-make-fulldeps/crate-data-smoke/lib.rs b/tests/run-make-fulldeps/crate-data-smoke/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-data-smoke/lib.rs rename to tests/run-make-fulldeps/crate-data-smoke/lib.rs diff --git a/src/test/run-make-fulldeps/crate-data-smoke/rlib.rs b/tests/run-make-fulldeps/crate-data-smoke/rlib.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-data-smoke/rlib.rs rename to tests/run-make-fulldeps/crate-data-smoke/rlib.rs diff --git a/src/test/run-make-fulldeps/crate-hash-rustc-version/Makefile b/tests/run-make-fulldeps/crate-hash-rustc-version/Makefile similarity index 100% rename from src/test/run-make-fulldeps/crate-hash-rustc-version/Makefile rename to tests/run-make-fulldeps/crate-hash-rustc-version/Makefile diff --git a/src/test/run-make-fulldeps/crate-hash-rustc-version/a.rs b/tests/run-make-fulldeps/crate-hash-rustc-version/a.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-hash-rustc-version/a.rs rename to tests/run-make-fulldeps/crate-hash-rustc-version/a.rs diff --git a/src/test/run-make-fulldeps/crate-hash-rustc-version/b.rs b/tests/run-make-fulldeps/crate-hash-rustc-version/b.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-hash-rustc-version/b.rs rename to tests/run-make-fulldeps/crate-hash-rustc-version/b.rs diff --git a/src/test/run-make-fulldeps/crate-name-priority/Makefile b/tests/run-make-fulldeps/crate-name-priority/Makefile similarity index 100% rename from src/test/run-make-fulldeps/crate-name-priority/Makefile rename to tests/run-make-fulldeps/crate-name-priority/Makefile diff --git a/src/test/run-make-fulldeps/crate-name-priority/foo.rs b/tests/run-make-fulldeps/crate-name-priority/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-name-priority/foo.rs rename to tests/run-make-fulldeps/crate-name-priority/foo.rs diff --git a/src/test/run-make-fulldeps/crate-name-priority/foo1.rs b/tests/run-make-fulldeps/crate-name-priority/foo1.rs similarity index 100% rename from src/test/run-make-fulldeps/crate-name-priority/foo1.rs rename to tests/run-make-fulldeps/crate-name-priority/foo1.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-clang/Makefile b/tests/run-make-fulldeps/cross-lang-lto-clang/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-clang/Makefile rename to tests/run-make-fulldeps/cross-lang-lto-clang/Makefile diff --git a/src/test/run-make-fulldeps/cross-lang-lto-clang/clib.c b/tests/run-make-fulldeps/cross-lang-lto-clang/clib.c similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-clang/clib.c rename to tests/run-make-fulldeps/cross-lang-lto-clang/clib.c diff --git a/src/test/run-make-fulldeps/cross-lang-lto-clang/cmain.c b/tests/run-make-fulldeps/cross-lang-lto-clang/cmain.c similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-clang/cmain.c rename to tests/run-make-fulldeps/cross-lang-lto-clang/cmain.c diff --git a/src/test/run-make-fulldeps/cross-lang-lto-clang/main.rs b/tests/run-make-fulldeps/cross-lang-lto-clang/main.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-clang/main.rs rename to tests/run-make-fulldeps/cross-lang-lto-clang/main.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-clang/rustlib.rs b/tests/run-make-fulldeps/cross-lang-lto-clang/rustlib.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-clang/rustlib.rs rename to tests/run-make-fulldeps/cross-lang-lto-clang/rustlib.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile rename to tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c rename to tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c rename to tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs rename to tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs rename to tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/Makefile b/tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/Makefile rename to tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/Makefile diff --git a/src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/staticlib.rs b/tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/staticlib.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/staticlib.rs rename to tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/staticlib.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/upstream.rs b/tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/upstream.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs/upstream.rs rename to tests/run-make-fulldeps/cross-lang-lto-upstream-rlibs/upstream.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto/Makefile b/tests/run-make-fulldeps/cross-lang-lto/Makefile similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto/Makefile rename to tests/run-make-fulldeps/cross-lang-lto/Makefile diff --git a/src/test/run-make-fulldeps/cross-lang-lto/lib.rs b/tests/run-make-fulldeps/cross-lang-lto/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto/lib.rs rename to tests/run-make-fulldeps/cross-lang-lto/lib.rs diff --git a/src/test/run-make-fulldeps/cross-lang-lto/main.rs b/tests/run-make-fulldeps/cross-lang-lto/main.rs similarity index 100% rename from src/test/run-make-fulldeps/cross-lang-lto/main.rs rename to tests/run-make-fulldeps/cross-lang-lto/main.rs diff --git a/src/test/run-make-fulldeps/debug-assertions/Makefile b/tests/run-make-fulldeps/debug-assertions/Makefile similarity index 100% rename from src/test/run-make-fulldeps/debug-assertions/Makefile rename to tests/run-make-fulldeps/debug-assertions/Makefile diff --git a/src/test/run-make-fulldeps/debug-assertions/debug.rs b/tests/run-make-fulldeps/debug-assertions/debug.rs similarity index 100% rename from src/test/run-make-fulldeps/debug-assertions/debug.rs rename to tests/run-make-fulldeps/debug-assertions/debug.rs diff --git a/src/test/run-make-fulldeps/dep-info-doesnt-run-much/Makefile b/tests/run-make-fulldeps/dep-info-doesnt-run-much/Makefile similarity index 100% rename from src/test/run-make-fulldeps/dep-info-doesnt-run-much/Makefile rename to tests/run-make-fulldeps/dep-info-doesnt-run-much/Makefile diff --git a/src/test/run-make-fulldeps/dep-info-doesnt-run-much/foo.rs b/tests/run-make-fulldeps/dep-info-doesnt-run-much/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info-doesnt-run-much/foo.rs rename to tests/run-make-fulldeps/dep-info-doesnt-run-much/foo.rs diff --git a/src/test/run-make-fulldeps/dep-info-spaces/Makefile b/tests/run-make-fulldeps/dep-info-spaces/Makefile similarity index 100% rename from src/test/run-make-fulldeps/dep-info-spaces/Makefile rename to tests/run-make-fulldeps/dep-info-spaces/Makefile diff --git a/src/test/run-make-fulldeps/dep-info-spaces/Makefile.foo b/tests/run-make-fulldeps/dep-info-spaces/Makefile.foo similarity index 100% rename from src/test/run-make-fulldeps/dep-info-spaces/Makefile.foo rename to tests/run-make-fulldeps/dep-info-spaces/Makefile.foo diff --git a/src/test/run-make-fulldeps/dep-info-spaces/bar.rs b/tests/run-make-fulldeps/dep-info-spaces/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info-spaces/bar.rs rename to tests/run-make-fulldeps/dep-info-spaces/bar.rs diff --git a/src/test/run-make-fulldeps/dep-info-spaces/foo foo.rs b/tests/run-make-fulldeps/dep-info-spaces/foo foo.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info-spaces/foo foo.rs rename to tests/run-make-fulldeps/dep-info-spaces/foo foo.rs diff --git a/src/test/run-make-fulldeps/dep-info-spaces/lib.rs b/tests/run-make-fulldeps/dep-info-spaces/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info-spaces/lib.rs rename to tests/run-make-fulldeps/dep-info-spaces/lib.rs diff --git a/src/test/run-make-fulldeps/dep-info/Makefile b/tests/run-make-fulldeps/dep-info/Makefile similarity index 100% rename from src/test/run-make-fulldeps/dep-info/Makefile rename to tests/run-make-fulldeps/dep-info/Makefile diff --git a/src/test/run-make-fulldeps/dep-info/Makefile.foo b/tests/run-make-fulldeps/dep-info/Makefile.foo similarity index 100% rename from src/test/run-make-fulldeps/dep-info/Makefile.foo rename to tests/run-make-fulldeps/dep-info/Makefile.foo diff --git a/src/test/run-make-fulldeps/dep-info/bar.rs b/tests/run-make-fulldeps/dep-info/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info/bar.rs rename to tests/run-make-fulldeps/dep-info/bar.rs diff --git a/src/test/run-make-fulldeps/dep-info/foo.rs b/tests/run-make-fulldeps/dep-info/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info/foo.rs rename to tests/run-make-fulldeps/dep-info/foo.rs diff --git a/src/test/run-make-fulldeps/dep-info/lib.rs b/tests/run-make-fulldeps/dep-info/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info/lib.rs rename to tests/run-make-fulldeps/dep-info/lib.rs diff --git a/src/test/run-make-fulldeps/dep-info/lib2.rs b/tests/run-make-fulldeps/dep-info/lib2.rs similarity index 100% rename from src/test/run-make-fulldeps/dep-info/lib2.rs rename to tests/run-make-fulldeps/dep-info/lib2.rs diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile b/tests/run-make-fulldeps/doctests-keep-binaries/Makefile similarity index 100% rename from src/test/run-make-fulldeps/doctests-keep-binaries/Makefile rename to tests/run-make-fulldeps/doctests-keep-binaries/Makefile diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs b/tests/run-make-fulldeps/doctests-keep-binaries/t.rs similarity index 100% rename from src/test/run-make-fulldeps/doctests-keep-binaries/t.rs rename to tests/run-make-fulldeps/doctests-keep-binaries/t.rs diff --git a/src/test/run-make-fulldeps/duplicate-output-flavors/Makefile b/tests/run-make-fulldeps/duplicate-output-flavors/Makefile similarity index 100% rename from src/test/run-make-fulldeps/duplicate-output-flavors/Makefile rename to tests/run-make-fulldeps/duplicate-output-flavors/Makefile diff --git a/src/test/run-make-fulldeps/duplicate-output-flavors/foo.rs b/tests/run-make-fulldeps/duplicate-output-flavors/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/duplicate-output-flavors/foo.rs rename to tests/run-make-fulldeps/duplicate-output-flavors/foo.rs diff --git a/src/test/run-make-fulldeps/dylib-chain/Makefile b/tests/run-make-fulldeps/dylib-chain/Makefile similarity index 100% rename from src/test/run-make-fulldeps/dylib-chain/Makefile rename to tests/run-make-fulldeps/dylib-chain/Makefile diff --git a/src/test/run-make-fulldeps/dylib-chain/m1.rs b/tests/run-make-fulldeps/dylib-chain/m1.rs similarity index 100% rename from src/test/run-make-fulldeps/dylib-chain/m1.rs rename to tests/run-make-fulldeps/dylib-chain/m1.rs diff --git a/src/test/run-make-fulldeps/dylib-chain/m2.rs b/tests/run-make-fulldeps/dylib-chain/m2.rs similarity index 100% rename from src/test/run-make-fulldeps/dylib-chain/m2.rs rename to tests/run-make-fulldeps/dylib-chain/m2.rs diff --git a/src/test/run-make-fulldeps/dylib-chain/m3.rs b/tests/run-make-fulldeps/dylib-chain/m3.rs similarity index 100% rename from src/test/run-make-fulldeps/dylib-chain/m3.rs rename to tests/run-make-fulldeps/dylib-chain/m3.rs diff --git a/src/test/run-make-fulldeps/dylib-chain/m4.rs b/tests/run-make-fulldeps/dylib-chain/m4.rs similarity index 100% rename from src/test/run-make-fulldeps/dylib-chain/m4.rs rename to tests/run-make-fulldeps/dylib-chain/m4.rs diff --git a/src/test/run-make-fulldeps/emit-stack-sizes/Makefile b/tests/run-make-fulldeps/emit-stack-sizes/Makefile similarity index 100% rename from src/test/run-make-fulldeps/emit-stack-sizes/Makefile rename to tests/run-make-fulldeps/emit-stack-sizes/Makefile diff --git a/src/test/run-make-fulldeps/emit-stack-sizes/foo.rs b/tests/run-make-fulldeps/emit-stack-sizes/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/emit-stack-sizes/foo.rs rename to tests/run-make-fulldeps/emit-stack-sizes/foo.rs diff --git a/src/test/run-make-fulldeps/emit/Makefile b/tests/run-make-fulldeps/emit/Makefile similarity index 100% rename from src/test/run-make-fulldeps/emit/Makefile rename to tests/run-make-fulldeps/emit/Makefile diff --git a/src/test/run-make-fulldeps/emit/test-24876.rs b/tests/run-make-fulldeps/emit/test-24876.rs similarity index 100% rename from src/test/run-make-fulldeps/emit/test-24876.rs rename to tests/run-make-fulldeps/emit/test-24876.rs diff --git a/src/test/run-make-fulldeps/emit/test-26235.rs b/tests/run-make-fulldeps/emit/test-26235.rs similarity index 100% rename from src/test/run-make-fulldeps/emit/test-26235.rs rename to tests/run-make-fulldeps/emit/test-26235.rs diff --git a/src/test/run-make-fulldeps/error-found-staticlib-instead-crate/Makefile b/tests/run-make-fulldeps/error-found-staticlib-instead-crate/Makefile similarity index 100% rename from src/test/run-make-fulldeps/error-found-staticlib-instead-crate/Makefile rename to tests/run-make-fulldeps/error-found-staticlib-instead-crate/Makefile diff --git a/src/test/run-make-fulldeps/error-found-staticlib-instead-crate/bar.rs b/tests/run-make-fulldeps/error-found-staticlib-instead-crate/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/error-found-staticlib-instead-crate/bar.rs rename to tests/run-make-fulldeps/error-found-staticlib-instead-crate/bar.rs diff --git a/src/test/run-make-fulldeps/error-found-staticlib-instead-crate/foo.rs b/tests/run-make-fulldeps/error-found-staticlib-instead-crate/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/error-found-staticlib-instead-crate/foo.rs rename to tests/run-make-fulldeps/error-found-staticlib-instead-crate/foo.rs diff --git a/src/test/run-make-fulldeps/error-writing-dependencies/Makefile b/tests/run-make-fulldeps/error-writing-dependencies/Makefile similarity index 100% rename from src/test/run-make-fulldeps/error-writing-dependencies/Makefile rename to tests/run-make-fulldeps/error-writing-dependencies/Makefile diff --git a/src/test/run-make-fulldeps/error-writing-dependencies/foo.rs b/tests/run-make-fulldeps/error-writing-dependencies/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/error-writing-dependencies/foo.rs rename to tests/run-make-fulldeps/error-writing-dependencies/foo.rs diff --git a/src/test/run-make-fulldeps/exit-code/Makefile b/tests/run-make-fulldeps/exit-code/Makefile similarity index 100% rename from src/test/run-make-fulldeps/exit-code/Makefile rename to tests/run-make-fulldeps/exit-code/Makefile diff --git a/src/test/run-make-fulldeps/exit-code/compile-error.rs b/tests/run-make-fulldeps/exit-code/compile-error.rs similarity index 100% rename from src/test/run-make-fulldeps/exit-code/compile-error.rs rename to tests/run-make-fulldeps/exit-code/compile-error.rs diff --git a/src/test/run-make-fulldeps/exit-code/lint-failure.rs b/tests/run-make-fulldeps/exit-code/lint-failure.rs similarity index 100% rename from src/test/run-make-fulldeps/exit-code/lint-failure.rs rename to tests/run-make-fulldeps/exit-code/lint-failure.rs diff --git a/src/test/run-make-fulldeps/exit-code/success.rs b/tests/run-make-fulldeps/exit-code/success.rs similarity index 100% rename from src/test/run-make-fulldeps/exit-code/success.rs rename to tests/run-make-fulldeps/exit-code/success.rs diff --git a/src/test/run-make-fulldeps/extern-diff-internal-name/Makefile b/tests/run-make-fulldeps/extern-diff-internal-name/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-diff-internal-name/Makefile rename to tests/run-make-fulldeps/extern-diff-internal-name/Makefile diff --git a/src/test/run-make-fulldeps/extern-diff-internal-name/lib.rs b/tests/run-make-fulldeps/extern-diff-internal-name/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-diff-internal-name/lib.rs rename to tests/run-make-fulldeps/extern-diff-internal-name/lib.rs diff --git a/src/test/run-make-fulldeps/extern-diff-internal-name/test.rs b/tests/run-make-fulldeps/extern-diff-internal-name/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-diff-internal-name/test.rs rename to tests/run-make-fulldeps/extern-diff-internal-name/test.rs diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile b/tests/run-make-fulldeps/extern-flag-disambiguates/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile rename to tests/run-make-fulldeps/extern-flag-disambiguates/Makefile diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs b/tests/run-make-fulldeps/extern-flag-disambiguates/a.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs rename to tests/run-make-fulldeps/extern-flag-disambiguates/a.rs diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs b/tests/run-make-fulldeps/extern-flag-disambiguates/b.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs rename to tests/run-make-fulldeps/extern-flag-disambiguates/b.rs diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs b/tests/run-make-fulldeps/extern-flag-disambiguates/c.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs rename to tests/run-make-fulldeps/extern-flag-disambiguates/c.rs diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs b/tests/run-make-fulldeps/extern-flag-disambiguates/d.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs rename to tests/run-make-fulldeps/extern-flag-disambiguates/d.rs diff --git a/src/test/run-make-fulldeps/extern-flag-fun/Makefile b/tests/run-make-fulldeps/extern-flag-fun/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/Makefile rename to tests/run-make-fulldeps/extern-flag-fun/Makefile diff --git a/src/test/run-make-fulldeps/extern-flag-fun/bar-alt.rs b/tests/run-make-fulldeps/extern-flag-fun/bar-alt.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/bar-alt.rs rename to tests/run-make-fulldeps/extern-flag-fun/bar-alt.rs diff --git a/src/test/run-make-fulldeps/extern-flag-fun/bar.rs b/tests/run-make-fulldeps/extern-flag-fun/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/bar.rs rename to tests/run-make-fulldeps/extern-flag-fun/bar.rs diff --git a/src/test/run-make-fulldeps/extern-flag-fun/foo.rs b/tests/run-make-fulldeps/extern-flag-fun/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/foo.rs rename to tests/run-make-fulldeps/extern-flag-fun/foo.rs diff --git a/src/test/run-make-fulldeps/extern-flag-fun/gated_unstable.rs b/tests/run-make-fulldeps/extern-flag-fun/gated_unstable.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/gated_unstable.rs rename to tests/run-make-fulldeps/extern-flag-fun/gated_unstable.rs diff --git a/src/test/run-make-fulldeps/extern-flag-fun/rustc.rs b/tests/run-make-fulldeps/extern-flag-fun/rustc.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-fun/rustc.rs rename to tests/run-make-fulldeps/extern-flag-fun/rustc.rs diff --git a/src/test/run-make-fulldeps/extern-flag-pathless/Makefile b/tests/run-make-fulldeps/extern-flag-pathless/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-pathless/Makefile rename to tests/run-make-fulldeps/extern-flag-pathless/Makefile diff --git a/src/test/run-make-fulldeps/extern-flag-pathless/bar-dynamic.rs b/tests/run-make-fulldeps/extern-flag-pathless/bar-dynamic.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-pathless/bar-dynamic.rs rename to tests/run-make-fulldeps/extern-flag-pathless/bar-dynamic.rs diff --git a/src/test/run-make-fulldeps/extern-flag-pathless/bar-static.rs b/tests/run-make-fulldeps/extern-flag-pathless/bar-static.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-pathless/bar-static.rs rename to tests/run-make-fulldeps/extern-flag-pathless/bar-static.rs diff --git a/src/test/run-make-fulldeps/extern-flag-pathless/foo.rs b/tests/run-make-fulldeps/extern-flag-pathless/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-pathless/foo.rs rename to tests/run-make-fulldeps/extern-flag-pathless/foo.rs diff --git a/src/test/run-make-fulldeps/extern-flag-rename-transitive/Makefile b/tests/run-make-fulldeps/extern-flag-rename-transitive/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-rename-transitive/Makefile rename to tests/run-make-fulldeps/extern-flag-rename-transitive/Makefile diff --git a/src/test/run-make-fulldeps/extern-flag-rename-transitive/bar.rs b/tests/run-make-fulldeps/extern-flag-rename-transitive/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-rename-transitive/bar.rs rename to tests/run-make-fulldeps/extern-flag-rename-transitive/bar.rs diff --git a/src/test/run-make-fulldeps/extern-flag-rename-transitive/baz.rs b/tests/run-make-fulldeps/extern-flag-rename-transitive/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-rename-transitive/baz.rs rename to tests/run-make-fulldeps/extern-flag-rename-transitive/baz.rs diff --git a/src/test/run-make-fulldeps/extern-flag-rename-transitive/foo.rs b/tests/run-make-fulldeps/extern-flag-rename-transitive/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-flag-rename-transitive/foo.rs rename to tests/run-make-fulldeps/extern-flag-rename-transitive/foo.rs diff --git a/src/test/run-make-fulldeps/extern-fn-generic/Makefile b/tests/run-make-fulldeps/extern-fn-generic/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-generic/Makefile rename to tests/run-make-fulldeps/extern-fn-generic/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-generic/test.c b/tests/run-make-fulldeps/extern-fn-generic/test.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-generic/test.c rename to tests/run-make-fulldeps/extern-fn-generic/test.c diff --git a/src/test/run-make-fulldeps/extern-fn-generic/test.rs b/tests/run-make-fulldeps/extern-fn-generic/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-generic/test.rs rename to tests/run-make-fulldeps/extern-fn-generic/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-generic/testcrate.rs b/tests/run-make-fulldeps/extern-fn-generic/testcrate.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-generic/testcrate.rs rename to tests/run-make-fulldeps/extern-fn-generic/testcrate.rs diff --git a/src/test/run-make-fulldeps/extern-fn-mangle/Makefile b/tests/run-make-fulldeps/extern-fn-mangle/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-mangle/Makefile rename to tests/run-make-fulldeps/extern-fn-mangle/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-mangle/test.c b/tests/run-make-fulldeps/extern-fn-mangle/test.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-mangle/test.c rename to tests/run-make-fulldeps/extern-fn-mangle/test.c diff --git a/src/test/run-make-fulldeps/extern-fn-mangle/test.rs b/tests/run-make-fulldeps/extern-fn-mangle/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-mangle/test.rs rename to tests/run-make-fulldeps/extern-fn-mangle/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-reachable/Makefile b/tests/run-make-fulldeps/extern-fn-reachable/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-reachable/Makefile rename to tests/run-make-fulldeps/extern-fn-reachable/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-reachable/dylib.rs b/tests/run-make-fulldeps/extern-fn-reachable/dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-reachable/dylib.rs rename to tests/run-make-fulldeps/extern-fn-reachable/dylib.rs diff --git a/src/test/run-make-fulldeps/extern-fn-struct-passing-abi/Makefile b/tests/run-make-fulldeps/extern-fn-struct-passing-abi/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-struct-passing-abi/Makefile rename to tests/run-make-fulldeps/extern-fn-struct-passing-abi/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-struct-passing-abi/test.c b/tests/run-make-fulldeps/extern-fn-struct-passing-abi/test.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-struct-passing-abi/test.c rename to tests/run-make-fulldeps/extern-fn-struct-passing-abi/test.c diff --git a/src/test/run-make-fulldeps/extern-fn-struct-passing-abi/test.rs b/tests/run-make-fulldeps/extern-fn-struct-passing-abi/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-struct-passing-abi/test.rs rename to tests/run-make-fulldeps/extern-fn-struct-passing-abi/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-with-extern-types/Makefile b/tests/run-make-fulldeps/extern-fn-with-extern-types/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-extern-types/Makefile rename to tests/run-make-fulldeps/extern-fn-with-extern-types/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-with-extern-types/ctest.c b/tests/run-make-fulldeps/extern-fn-with-extern-types/ctest.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-extern-types/ctest.c rename to tests/run-make-fulldeps/extern-fn-with-extern-types/ctest.c diff --git a/src/test/run-make-fulldeps/extern-fn-with-extern-types/test.rs b/tests/run-make-fulldeps/extern-fn-with-extern-types/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-extern-types/test.rs rename to tests/run-make-fulldeps/extern-fn-with-extern-types/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-with-packed-struct/Makefile b/tests/run-make-fulldeps/extern-fn-with-packed-struct/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-packed-struct/Makefile rename to tests/run-make-fulldeps/extern-fn-with-packed-struct/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-with-packed-struct/test.c b/tests/run-make-fulldeps/extern-fn-with-packed-struct/test.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-packed-struct/test.c rename to tests/run-make-fulldeps/extern-fn-with-packed-struct/test.c diff --git a/src/test/run-make-fulldeps/extern-fn-with-packed-struct/test.rs b/tests/run-make-fulldeps/extern-fn-with-packed-struct/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-packed-struct/test.rs rename to tests/run-make-fulldeps/extern-fn-with-packed-struct/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-with-union/Makefile b/tests/run-make-fulldeps/extern-fn-with-union/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-union/Makefile rename to tests/run-make-fulldeps/extern-fn-with-union/Makefile diff --git a/src/test/run-make-fulldeps/extern-fn-with-union/ctest.c b/tests/run-make-fulldeps/extern-fn-with-union/ctest.c similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-union/ctest.c rename to tests/run-make-fulldeps/extern-fn-with-union/ctest.c diff --git a/src/test/run-make-fulldeps/extern-fn-with-union/test.rs b/tests/run-make-fulldeps/extern-fn-with-union/test.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-union/test.rs rename to tests/run-make-fulldeps/extern-fn-with-union/test.rs diff --git a/src/test/run-make-fulldeps/extern-fn-with-union/testcrate.rs b/tests/run-make-fulldeps/extern-fn-with-union/testcrate.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-fn-with-union/testcrate.rs rename to tests/run-make-fulldeps/extern-fn-with-union/testcrate.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies/Makefile b/tests/run-make-fulldeps/extern-multiple-copies/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies/Makefile rename to tests/run-make-fulldeps/extern-multiple-copies/Makefile diff --git a/src/test/run-make-fulldeps/extern-multiple-copies/bar.rs b/tests/run-make-fulldeps/extern-multiple-copies/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies/bar.rs rename to tests/run-make-fulldeps/extern-multiple-copies/bar.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies/foo1.rs b/tests/run-make-fulldeps/extern-multiple-copies/foo1.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies/foo1.rs rename to tests/run-make-fulldeps/extern-multiple-copies/foo1.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies/foo2.rs b/tests/run-make-fulldeps/extern-multiple-copies/foo2.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies/foo2.rs rename to tests/run-make-fulldeps/extern-multiple-copies/foo2.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies2/Makefile b/tests/run-make-fulldeps/extern-multiple-copies2/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies2/Makefile rename to tests/run-make-fulldeps/extern-multiple-copies2/Makefile diff --git a/src/test/run-make-fulldeps/extern-multiple-copies2/bar.rs b/tests/run-make-fulldeps/extern-multiple-copies2/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies2/bar.rs rename to tests/run-make-fulldeps/extern-multiple-copies2/bar.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies2/foo1.rs b/tests/run-make-fulldeps/extern-multiple-copies2/foo1.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies2/foo1.rs rename to tests/run-make-fulldeps/extern-multiple-copies2/foo1.rs diff --git a/src/test/run-make-fulldeps/extern-multiple-copies2/foo2.rs b/tests/run-make-fulldeps/extern-multiple-copies2/foo2.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-multiple-copies2/foo2.rs rename to tests/run-make-fulldeps/extern-multiple-copies2/foo2.rs diff --git a/src/test/run-make-fulldeps/extern-overrides-distribution/Makefile b/tests/run-make-fulldeps/extern-overrides-distribution/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extern-overrides-distribution/Makefile rename to tests/run-make-fulldeps/extern-overrides-distribution/Makefile diff --git a/src/test/run-make-fulldeps/extern-overrides-distribution/libc.rs b/tests/run-make-fulldeps/extern-overrides-distribution/libc.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-overrides-distribution/libc.rs rename to tests/run-make-fulldeps/extern-overrides-distribution/libc.rs diff --git a/src/test/run-make-fulldeps/extern-overrides-distribution/main.rs b/tests/run-make-fulldeps/extern-overrides-distribution/main.rs similarity index 100% rename from src/test/run-make-fulldeps/extern-overrides-distribution/main.rs rename to tests/run-make-fulldeps/extern-overrides-distribution/main.rs diff --git a/src/test/run-make-fulldeps/extra-filename-with-temp-outputs/Makefile b/tests/run-make-fulldeps/extra-filename-with-temp-outputs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/extra-filename-with-temp-outputs/Makefile rename to tests/run-make-fulldeps/extra-filename-with-temp-outputs/Makefile diff --git a/src/test/run-make-fulldeps/extra-filename-with-temp-outputs/foo.rs b/tests/run-make-fulldeps/extra-filename-with-temp-outputs/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/extra-filename-with-temp-outputs/foo.rs rename to tests/run-make-fulldeps/extra-filename-with-temp-outputs/foo.rs diff --git a/src/test/run-make-fulldeps/foreign-double-unwind/Makefile b/tests/run-make-fulldeps/foreign-double-unwind/Makefile similarity index 100% rename from src/test/run-make-fulldeps/foreign-double-unwind/Makefile rename to tests/run-make-fulldeps/foreign-double-unwind/Makefile diff --git a/src/test/run-make-fulldeps/foreign-double-unwind/foo.cpp b/tests/run-make-fulldeps/foreign-double-unwind/foo.cpp similarity index 100% rename from src/test/run-make-fulldeps/foreign-double-unwind/foo.cpp rename to tests/run-make-fulldeps/foreign-double-unwind/foo.cpp diff --git a/src/test/run-make-fulldeps/foreign-double-unwind/foo.rs b/tests/run-make-fulldeps/foreign-double-unwind/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/foreign-double-unwind/foo.rs rename to tests/run-make-fulldeps/foreign-double-unwind/foo.rs diff --git a/src/test/run-make-fulldeps/foreign-exceptions/Makefile b/tests/run-make-fulldeps/foreign-exceptions/Makefile similarity index 100% rename from src/test/run-make-fulldeps/foreign-exceptions/Makefile rename to tests/run-make-fulldeps/foreign-exceptions/Makefile diff --git a/src/test/run-make-fulldeps/foreign-exceptions/foo.cpp b/tests/run-make-fulldeps/foreign-exceptions/foo.cpp similarity index 100% rename from src/test/run-make-fulldeps/foreign-exceptions/foo.cpp rename to tests/run-make-fulldeps/foreign-exceptions/foo.cpp diff --git a/src/test/run-make-fulldeps/foreign-exceptions/foo.rs b/tests/run-make-fulldeps/foreign-exceptions/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/foreign-exceptions/foo.rs rename to tests/run-make-fulldeps/foreign-exceptions/foo.rs diff --git a/src/test/run-make-fulldeps/foreign-rust-exceptions/Makefile b/tests/run-make-fulldeps/foreign-rust-exceptions/Makefile similarity index 100% rename from src/test/run-make-fulldeps/foreign-rust-exceptions/Makefile rename to tests/run-make-fulldeps/foreign-rust-exceptions/Makefile diff --git a/src/test/run-make-fulldeps/foreign-rust-exceptions/bar.rs b/tests/run-make-fulldeps/foreign-rust-exceptions/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/foreign-rust-exceptions/bar.rs rename to tests/run-make-fulldeps/foreign-rust-exceptions/bar.rs diff --git a/src/test/run-make-fulldeps/foreign-rust-exceptions/foo.rs b/tests/run-make-fulldeps/foreign-rust-exceptions/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/foreign-rust-exceptions/foo.rs rename to tests/run-make-fulldeps/foreign-rust-exceptions/foo.rs diff --git a/src/test/run-make-fulldeps/fpic/Makefile b/tests/run-make-fulldeps/fpic/Makefile similarity index 100% rename from src/test/run-make-fulldeps/fpic/Makefile rename to tests/run-make-fulldeps/fpic/Makefile diff --git a/src/test/run-make-fulldeps/fpic/hello.rs b/tests/run-make-fulldeps/fpic/hello.rs similarity index 100% rename from src/test/run-make-fulldeps/fpic/hello.rs rename to tests/run-make-fulldeps/fpic/hello.rs diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/Makefile b/tests/run-make-fulldeps/glibc-staticlib-args/Makefile similarity index 100% rename from src/test/run-make-fulldeps/glibc-staticlib-args/Makefile rename to tests/run-make-fulldeps/glibc-staticlib-args/Makefile diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/library.rs b/tests/run-make-fulldeps/glibc-staticlib-args/library.rs similarity index 100% rename from src/test/run-make-fulldeps/glibc-staticlib-args/library.rs rename to tests/run-make-fulldeps/glibc-staticlib-args/library.rs diff --git a/src/test/run-make-fulldeps/glibc-staticlib-args/program.c b/tests/run-make-fulldeps/glibc-staticlib-args/program.c similarity index 100% rename from src/test/run-make-fulldeps/glibc-staticlib-args/program.c rename to tests/run-make-fulldeps/glibc-staticlib-args/program.c diff --git a/src/test/run-make-fulldeps/hir-tree/Makefile b/tests/run-make-fulldeps/hir-tree/Makefile similarity index 100% rename from src/test/run-make-fulldeps/hir-tree/Makefile rename to tests/run-make-fulldeps/hir-tree/Makefile diff --git a/src/test/run-make-fulldeps/hir-tree/input.rs b/tests/run-make-fulldeps/hir-tree/input.rs similarity index 100% rename from src/test/run-make-fulldeps/hir-tree/input.rs rename to tests/run-make-fulldeps/hir-tree/input.rs diff --git a/src/test/run-make-fulldeps/hotplug_codegen_backend/Makefile b/tests/run-make-fulldeps/hotplug_codegen_backend/Makefile similarity index 100% rename from src/test/run-make-fulldeps/hotplug_codegen_backend/Makefile rename to tests/run-make-fulldeps/hotplug_codegen_backend/Makefile diff --git a/src/test/run-make-fulldeps/hotplug_codegen_backend/some_crate.rs b/tests/run-make-fulldeps/hotplug_codegen_backend/some_crate.rs similarity index 100% rename from src/test/run-make-fulldeps/hotplug_codegen_backend/some_crate.rs rename to tests/run-make-fulldeps/hotplug_codegen_backend/some_crate.rs diff --git a/src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs b/tests/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs similarity index 100% rename from src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs rename to tests/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs diff --git a/src/test/run-make-fulldeps/include_bytes_deps/Makefile b/tests/run-make-fulldeps/include_bytes_deps/Makefile similarity index 100% rename from src/test/run-make-fulldeps/include_bytes_deps/Makefile rename to tests/run-make-fulldeps/include_bytes_deps/Makefile diff --git a/src/test/run-make-fulldeps/include_bytes_deps/input.bin b/tests/run-make-fulldeps/include_bytes_deps/input.bin similarity index 100% rename from src/test/run-make-fulldeps/include_bytes_deps/input.bin rename to tests/run-make-fulldeps/include_bytes_deps/input.bin diff --git a/src/test/run-make-fulldeps/include_bytes_deps/input.md b/tests/run-make-fulldeps/include_bytes_deps/input.md similarity index 100% rename from src/test/run-make-fulldeps/include_bytes_deps/input.md rename to tests/run-make-fulldeps/include_bytes_deps/input.md diff --git a/src/test/run-make-fulldeps/include_bytes_deps/input.txt b/tests/run-make-fulldeps/include_bytes_deps/input.txt similarity index 100% rename from src/test/run-make-fulldeps/include_bytes_deps/input.txt rename to tests/run-make-fulldeps/include_bytes_deps/input.txt diff --git a/src/test/run-make-fulldeps/include_bytes_deps/main.rs b/tests/run-make-fulldeps/include_bytes_deps/main.rs similarity index 100% rename from src/test/run-make-fulldeps/include_bytes_deps/main.rs rename to tests/run-make-fulldeps/include_bytes_deps/main.rs diff --git a/src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile b/tests/run-make-fulldeps/incr-add-rust-src-component/Makefile similarity index 100% rename from src/test/run-make-fulldeps/incr-add-rust-src-component/Makefile rename to tests/run-make-fulldeps/incr-add-rust-src-component/Makefile diff --git a/src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs b/tests/run-make-fulldeps/incr-add-rust-src-component/main.rs similarity index 100% rename from src/test/run-make-fulldeps/incr-add-rust-src-component/main.rs rename to tests/run-make-fulldeps/incr-add-rust-src-component/main.rs diff --git a/src/test/run-make-fulldeps/inline-always-many-cgu/Makefile b/tests/run-make-fulldeps/inline-always-many-cgu/Makefile similarity index 100% rename from src/test/run-make-fulldeps/inline-always-many-cgu/Makefile rename to tests/run-make-fulldeps/inline-always-many-cgu/Makefile diff --git a/src/test/run-make-fulldeps/inline-always-many-cgu/foo.rs b/tests/run-make-fulldeps/inline-always-many-cgu/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/inline-always-many-cgu/foo.rs rename to tests/run-make-fulldeps/inline-always-many-cgu/foo.rs diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/Makefile b/tests/run-make-fulldeps/interdependent-c-libraries/Makefile similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/Makefile rename to tests/run-make-fulldeps/interdependent-c-libraries/Makefile diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/bar.c b/tests/run-make-fulldeps/interdependent-c-libraries/bar.c similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/bar.c rename to tests/run-make-fulldeps/interdependent-c-libraries/bar.c diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/bar.rs b/tests/run-make-fulldeps/interdependent-c-libraries/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/bar.rs rename to tests/run-make-fulldeps/interdependent-c-libraries/bar.rs diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/foo.c b/tests/run-make-fulldeps/interdependent-c-libraries/foo.c similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/foo.c rename to tests/run-make-fulldeps/interdependent-c-libraries/foo.c diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/foo.rs b/tests/run-make-fulldeps/interdependent-c-libraries/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/foo.rs rename to tests/run-make-fulldeps/interdependent-c-libraries/foo.rs diff --git a/src/test/run-make-fulldeps/interdependent-c-libraries/main.rs b/tests/run-make-fulldeps/interdependent-c-libraries/main.rs similarity index 100% rename from src/test/run-make-fulldeps/interdependent-c-libraries/main.rs rename to tests/run-make-fulldeps/interdependent-c-libraries/main.rs diff --git a/src/test/run-make-fulldeps/intrinsic-unreachable/Makefile b/tests/run-make-fulldeps/intrinsic-unreachable/Makefile similarity index 100% rename from src/test/run-make-fulldeps/intrinsic-unreachable/Makefile rename to tests/run-make-fulldeps/intrinsic-unreachable/Makefile diff --git a/src/test/run-make-fulldeps/intrinsic-unreachable/exit-ret.rs b/tests/run-make-fulldeps/intrinsic-unreachable/exit-ret.rs similarity index 100% rename from src/test/run-make-fulldeps/intrinsic-unreachable/exit-ret.rs rename to tests/run-make-fulldeps/intrinsic-unreachable/exit-ret.rs diff --git a/src/test/run-make-fulldeps/intrinsic-unreachable/exit-unreachable.rs b/tests/run-make-fulldeps/intrinsic-unreachable/exit-unreachable.rs similarity index 100% rename from src/test/run-make-fulldeps/intrinsic-unreachable/exit-unreachable.rs rename to tests/run-make-fulldeps/intrinsic-unreachable/exit-unreachable.rs diff --git a/src/test/run-make-fulldeps/invalid-library/Makefile b/tests/run-make-fulldeps/invalid-library/Makefile similarity index 100% rename from src/test/run-make-fulldeps/invalid-library/Makefile rename to tests/run-make-fulldeps/invalid-library/Makefile diff --git a/src/test/run-make-fulldeps/invalid-library/foo.rs b/tests/run-make-fulldeps/invalid-library/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/invalid-library/foo.rs rename to tests/run-make-fulldeps/invalid-library/foo.rs diff --git a/src/test/run-make-fulldeps/invalid-staticlib/Makefile b/tests/run-make-fulldeps/invalid-staticlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/invalid-staticlib/Makefile rename to tests/run-make-fulldeps/invalid-staticlib/Makefile diff --git a/src/test/run-make-fulldeps/issue-11908/Makefile b/tests/run-make-fulldeps/issue-11908/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-11908/Makefile rename to tests/run-make-fulldeps/issue-11908/Makefile diff --git a/src/test/run-make-fulldeps/issue-11908/bar.rs b/tests/run-make-fulldeps/issue-11908/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-11908/bar.rs rename to tests/run-make-fulldeps/issue-11908/bar.rs diff --git a/src/test/run-make-fulldeps/issue-11908/foo.rs b/tests/run-make-fulldeps/issue-11908/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-11908/foo.rs rename to tests/run-make-fulldeps/issue-11908/foo.rs diff --git a/src/test/run-make-fulldeps/issue-14500/Makefile b/tests/run-make-fulldeps/issue-14500/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-14500/Makefile rename to tests/run-make-fulldeps/issue-14500/Makefile diff --git a/src/test/run-make-fulldeps/issue-14500/bar.rs b/tests/run-make-fulldeps/issue-14500/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-14500/bar.rs rename to tests/run-make-fulldeps/issue-14500/bar.rs diff --git a/src/test/run-make-fulldeps/issue-14500/foo.c b/tests/run-make-fulldeps/issue-14500/foo.c similarity index 100% rename from src/test/run-make-fulldeps/issue-14500/foo.c rename to tests/run-make-fulldeps/issue-14500/foo.c diff --git a/src/test/run-make-fulldeps/issue-14500/foo.rs b/tests/run-make-fulldeps/issue-14500/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-14500/foo.rs rename to tests/run-make-fulldeps/issue-14500/foo.rs diff --git a/src/test/run-make-fulldeps/issue-14698/Makefile b/tests/run-make-fulldeps/issue-14698/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-14698/Makefile rename to tests/run-make-fulldeps/issue-14698/Makefile diff --git a/src/test/run-make-fulldeps/issue-14698/foo.rs b/tests/run-make-fulldeps/issue-14698/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-14698/foo.rs rename to tests/run-make-fulldeps/issue-14698/foo.rs diff --git a/src/test/run-make-fulldeps/issue-15460/Makefile b/tests/run-make-fulldeps/issue-15460/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-15460/Makefile rename to tests/run-make-fulldeps/issue-15460/Makefile diff --git a/src/test/run-make-fulldeps/issue-15460/bar.rs b/tests/run-make-fulldeps/issue-15460/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-15460/bar.rs rename to tests/run-make-fulldeps/issue-15460/bar.rs diff --git a/src/test/run-make-fulldeps/issue-15460/foo.c b/tests/run-make-fulldeps/issue-15460/foo.c similarity index 100% rename from src/test/run-make-fulldeps/issue-15460/foo.c rename to tests/run-make-fulldeps/issue-15460/foo.c diff --git a/src/test/run-make-fulldeps/issue-15460/foo.rs b/tests/run-make-fulldeps/issue-15460/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-15460/foo.rs rename to tests/run-make-fulldeps/issue-15460/foo.rs diff --git a/src/test/run-make-fulldeps/issue-18943/Makefile b/tests/run-make-fulldeps/issue-18943/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-18943/Makefile rename to tests/run-make-fulldeps/issue-18943/Makefile diff --git a/src/test/run-make-fulldeps/issue-18943/foo.rs b/tests/run-make-fulldeps/issue-18943/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-18943/foo.rs rename to tests/run-make-fulldeps/issue-18943/foo.rs diff --git a/src/test/run-make-fulldeps/issue-19371/Makefile b/tests/run-make-fulldeps/issue-19371/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-19371/Makefile rename to tests/run-make-fulldeps/issue-19371/Makefile diff --git a/src/test/run-make-fulldeps/issue-19371/foo.rs b/tests/run-make-fulldeps/issue-19371/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-19371/foo.rs rename to tests/run-make-fulldeps/issue-19371/foo.rs diff --git a/src/test/run-make-fulldeps/issue-20626/Makefile b/tests/run-make-fulldeps/issue-20626/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-20626/Makefile rename to tests/run-make-fulldeps/issue-20626/Makefile diff --git a/src/test/run-make-fulldeps/issue-20626/foo.rs b/tests/run-make-fulldeps/issue-20626/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-20626/foo.rs rename to tests/run-make-fulldeps/issue-20626/foo.rs diff --git a/src/test/run-make-fulldeps/issue-22131/Makefile b/tests/run-make-fulldeps/issue-22131/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-22131/Makefile rename to tests/run-make-fulldeps/issue-22131/Makefile diff --git a/src/test/run-make-fulldeps/issue-22131/foo.rs b/tests/run-make-fulldeps/issue-22131/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-22131/foo.rs rename to tests/run-make-fulldeps/issue-22131/foo.rs diff --git a/src/test/run-make-fulldeps/issue-24445/Makefile b/tests/run-make-fulldeps/issue-24445/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-24445/Makefile rename to tests/run-make-fulldeps/issue-24445/Makefile diff --git a/src/test/run-make-fulldeps/issue-24445/foo.c b/tests/run-make-fulldeps/issue-24445/foo.c similarity index 100% rename from src/test/run-make-fulldeps/issue-24445/foo.c rename to tests/run-make-fulldeps/issue-24445/foo.c diff --git a/src/test/run-make-fulldeps/issue-24445/foo.rs b/tests/run-make-fulldeps/issue-24445/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-24445/foo.rs rename to tests/run-make-fulldeps/issue-24445/foo.rs diff --git a/src/test/run-make-fulldeps/issue-25581/Makefile b/tests/run-make-fulldeps/issue-25581/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-25581/Makefile rename to tests/run-make-fulldeps/issue-25581/Makefile diff --git a/src/test/run-make-fulldeps/issue-25581/test.c b/tests/run-make-fulldeps/issue-25581/test.c similarity index 100% rename from src/test/run-make-fulldeps/issue-25581/test.c rename to tests/run-make-fulldeps/issue-25581/test.c diff --git a/src/test/run-make-fulldeps/issue-25581/test.rs b/tests/run-make-fulldeps/issue-25581/test.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-25581/test.rs rename to tests/run-make-fulldeps/issue-25581/test.rs diff --git a/src/test/run-make-fulldeps/issue-26006/Makefile b/tests/run-make-fulldeps/issue-26006/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-26006/Makefile rename to tests/run-make-fulldeps/issue-26006/Makefile diff --git a/src/test/run-make-fulldeps/issue-26006/in/libc/lib.rs b/tests/run-make-fulldeps/issue-26006/in/libc/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-26006/in/libc/lib.rs rename to tests/run-make-fulldeps/issue-26006/in/libc/lib.rs diff --git a/src/test/run-make-fulldeps/issue-26006/in/time/lib.rs b/tests/run-make-fulldeps/issue-26006/in/time/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-26006/in/time/lib.rs rename to tests/run-make-fulldeps/issue-26006/in/time/lib.rs diff --git a/src/test/run-make-fulldeps/issue-26092/Makefile b/tests/run-make-fulldeps/issue-26092/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-26092/Makefile rename to tests/run-make-fulldeps/issue-26092/Makefile diff --git a/src/test/run-make-fulldeps/issue-26092/blank.rs b/tests/run-make-fulldeps/issue-26092/blank.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-26092/blank.rs rename to tests/run-make-fulldeps/issue-26092/blank.rs diff --git a/src/test/run-make-fulldeps/issue-28595/Makefile b/tests/run-make-fulldeps/issue-28595/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-28595/Makefile rename to tests/run-make-fulldeps/issue-28595/Makefile diff --git a/src/test/run-make-fulldeps/issue-28595/a.c b/tests/run-make-fulldeps/issue-28595/a.c similarity index 100% rename from src/test/run-make-fulldeps/issue-28595/a.c rename to tests/run-make-fulldeps/issue-28595/a.c diff --git a/src/test/run-make-fulldeps/issue-28595/a.rs b/tests/run-make-fulldeps/issue-28595/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-28595/a.rs rename to tests/run-make-fulldeps/issue-28595/a.rs diff --git a/src/test/run-make-fulldeps/issue-28595/b.c b/tests/run-make-fulldeps/issue-28595/b.c similarity index 100% rename from src/test/run-make-fulldeps/issue-28595/b.c rename to tests/run-make-fulldeps/issue-28595/b.c diff --git a/src/test/run-make-fulldeps/issue-28595/b.rs b/tests/run-make-fulldeps/issue-28595/b.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-28595/b.rs rename to tests/run-make-fulldeps/issue-28595/b.rs diff --git a/src/test/run-make-fulldeps/issue-28766/Makefile b/tests/run-make-fulldeps/issue-28766/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-28766/Makefile rename to tests/run-make-fulldeps/issue-28766/Makefile diff --git a/src/test/run-make-fulldeps/issue-28766/foo.rs b/tests/run-make-fulldeps/issue-28766/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-28766/foo.rs rename to tests/run-make-fulldeps/issue-28766/foo.rs diff --git a/src/test/run-make-fulldeps/issue-28766/main.rs b/tests/run-make-fulldeps/issue-28766/main.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-28766/main.rs rename to tests/run-make-fulldeps/issue-28766/main.rs diff --git a/src/test/run-make-fulldeps/issue-30063/Makefile b/tests/run-make-fulldeps/issue-30063/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-30063/Makefile rename to tests/run-make-fulldeps/issue-30063/Makefile diff --git a/src/test/run-make-fulldeps/issue-30063/foo.rs b/tests/run-make-fulldeps/issue-30063/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-30063/foo.rs rename to tests/run-make-fulldeps/issue-30063/foo.rs diff --git a/src/test/run-make-fulldeps/issue-33329/Makefile b/tests/run-make-fulldeps/issue-33329/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-33329/Makefile rename to tests/run-make-fulldeps/issue-33329/Makefile diff --git a/src/test/run-make-fulldeps/issue-33329/main.rs b/tests/run-make-fulldeps/issue-33329/main.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-33329/main.rs rename to tests/run-make-fulldeps/issue-33329/main.rs diff --git a/src/test/run-make-fulldeps/issue-35164/Makefile b/tests/run-make-fulldeps/issue-35164/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-35164/Makefile rename to tests/run-make-fulldeps/issue-35164/Makefile diff --git a/src/test/run-make-fulldeps/issue-35164/main.rs b/tests/run-make-fulldeps/issue-35164/main.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-35164/main.rs rename to tests/run-make-fulldeps/issue-35164/main.rs diff --git a/src/test/run-make-fulldeps/issue-35164/submodule/mod.rs b/tests/run-make-fulldeps/issue-35164/submodule/mod.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-35164/submodule/mod.rs rename to tests/run-make-fulldeps/issue-35164/submodule/mod.rs diff --git a/src/test/run-make-fulldeps/issue-37839/Makefile b/tests/run-make-fulldeps/issue-37839/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-37839/Makefile rename to tests/run-make-fulldeps/issue-37839/Makefile diff --git a/src/test/run-make-fulldeps/issue-37839/a.rs b/tests/run-make-fulldeps/issue-37839/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37839/a.rs rename to tests/run-make-fulldeps/issue-37839/a.rs diff --git a/src/test/run-make-fulldeps/issue-37839/b.rs b/tests/run-make-fulldeps/issue-37839/b.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37839/b.rs rename to tests/run-make-fulldeps/issue-37839/b.rs diff --git a/src/test/run-make-fulldeps/issue-37839/c.rs b/tests/run-make-fulldeps/issue-37839/c.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37839/c.rs rename to tests/run-make-fulldeps/issue-37839/c.rs diff --git a/src/test/run-make-fulldeps/issue-37893/Makefile b/tests/run-make-fulldeps/issue-37893/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-37893/Makefile rename to tests/run-make-fulldeps/issue-37893/Makefile diff --git a/src/test/run-make-fulldeps/issue-37893/a.rs b/tests/run-make-fulldeps/issue-37893/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37893/a.rs rename to tests/run-make-fulldeps/issue-37893/a.rs diff --git a/src/test/run-make-fulldeps/issue-37893/b.rs b/tests/run-make-fulldeps/issue-37893/b.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37893/b.rs rename to tests/run-make-fulldeps/issue-37893/b.rs diff --git a/src/test/run-make-fulldeps/issue-37893/c.rs b/tests/run-make-fulldeps/issue-37893/c.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-37893/c.rs rename to tests/run-make-fulldeps/issue-37893/c.rs diff --git a/src/test/run-make-fulldeps/issue-38237/Makefile b/tests/run-make-fulldeps/issue-38237/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-38237/Makefile rename to tests/run-make-fulldeps/issue-38237/Makefile diff --git a/src/test/run-make-fulldeps/issue-38237/bar.rs b/tests/run-make-fulldeps/issue-38237/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-38237/bar.rs rename to tests/run-make-fulldeps/issue-38237/bar.rs diff --git a/src/test/run-make-fulldeps/issue-38237/baz.rs b/tests/run-make-fulldeps/issue-38237/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-38237/baz.rs rename to tests/run-make-fulldeps/issue-38237/baz.rs diff --git a/src/test/run-make-fulldeps/issue-38237/foo.rs b/tests/run-make-fulldeps/issue-38237/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-38237/foo.rs rename to tests/run-make-fulldeps/issue-38237/foo.rs diff --git a/src/test/run-make-fulldeps/issue-40535/Makefile b/tests/run-make-fulldeps/issue-40535/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-40535/Makefile rename to tests/run-make-fulldeps/issue-40535/Makefile diff --git a/src/test/run-make-fulldeps/issue-40535/bar.rs b/tests/run-make-fulldeps/issue-40535/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-40535/bar.rs rename to tests/run-make-fulldeps/issue-40535/bar.rs diff --git a/src/test/run-make-fulldeps/issue-40535/baz.rs b/tests/run-make-fulldeps/issue-40535/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-40535/baz.rs rename to tests/run-make-fulldeps/issue-40535/baz.rs diff --git a/src/test/run-make-fulldeps/issue-40535/foo.rs b/tests/run-make-fulldeps/issue-40535/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-40535/foo.rs rename to tests/run-make-fulldeps/issue-40535/foo.rs diff --git a/src/test/run-make-fulldeps/issue-46239/Makefile b/tests/run-make-fulldeps/issue-46239/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-46239/Makefile rename to tests/run-make-fulldeps/issue-46239/Makefile diff --git a/src/test/run-make-fulldeps/issue-46239/main.rs b/tests/run-make-fulldeps/issue-46239/main.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-46239/main.rs rename to tests/run-make-fulldeps/issue-46239/main.rs diff --git a/src/test/run-make-fulldeps/issue-47551/Makefile b/tests/run-make-fulldeps/issue-47551/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-47551/Makefile rename to tests/run-make-fulldeps/issue-47551/Makefile diff --git a/src/test/run-make-fulldeps/issue-47551/eh_frame-terminator.rs b/tests/run-make-fulldeps/issue-47551/eh_frame-terminator.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-47551/eh_frame-terminator.rs rename to tests/run-make-fulldeps/issue-47551/eh_frame-terminator.rs diff --git a/src/test/run-make-fulldeps/issue-51671/Makefile b/tests/run-make-fulldeps/issue-51671/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-51671/Makefile rename to tests/run-make-fulldeps/issue-51671/Makefile diff --git a/src/test/run-make-fulldeps/issue-51671/app.rs b/tests/run-make-fulldeps/issue-51671/app.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-51671/app.rs rename to tests/run-make-fulldeps/issue-51671/app.rs diff --git a/src/test/run-make-fulldeps/issue-53964/Makefile b/tests/run-make-fulldeps/issue-53964/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-53964/Makefile rename to tests/run-make-fulldeps/issue-53964/Makefile diff --git a/src/test/run-make-fulldeps/issue-53964/app.rs b/tests/run-make-fulldeps/issue-53964/app.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-53964/app.rs rename to tests/run-make-fulldeps/issue-53964/app.rs diff --git a/src/test/run-make-fulldeps/issue-53964/panic.rs b/tests/run-make-fulldeps/issue-53964/panic.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-53964/panic.rs rename to tests/run-make-fulldeps/issue-53964/panic.rs diff --git a/src/test/run-make-fulldeps/issue-64153/Makefile b/tests/run-make-fulldeps/issue-64153/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-64153/Makefile rename to tests/run-make-fulldeps/issue-64153/Makefile diff --git a/src/test/run-make-fulldeps/issue-64153/downstream.rs b/tests/run-make-fulldeps/issue-64153/downstream.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-64153/downstream.rs rename to tests/run-make-fulldeps/issue-64153/downstream.rs diff --git a/src/test/run-make-fulldeps/issue-64153/upstream.rs b/tests/run-make-fulldeps/issue-64153/upstream.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-64153/upstream.rs rename to tests/run-make-fulldeps/issue-64153/upstream.rs diff --git a/src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/Makefile b/tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/Makefile rename to tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/Makefile diff --git a/src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/bar.c b/tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/bar.c similarity index 100% rename from src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/bar.c rename to tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/bar.c diff --git a/src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/foo.rs b/tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/foo.rs rename to tests/run-make-fulldeps/issue-68794-textrel-on-minimal-lib/foo.rs diff --git a/src/test/run-make-fulldeps/issue-69368/Makefile b/tests/run-make-fulldeps/issue-69368/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-69368/Makefile rename to tests/run-make-fulldeps/issue-69368/Makefile diff --git a/src/test/run-make-fulldeps/issue-69368/a.rs b/tests/run-make-fulldeps/issue-69368/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-69368/a.rs rename to tests/run-make-fulldeps/issue-69368/a.rs diff --git a/src/test/run-make-fulldeps/issue-69368/b.rs b/tests/run-make-fulldeps/issue-69368/b.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-69368/b.rs rename to tests/run-make-fulldeps/issue-69368/b.rs diff --git a/src/test/run-make-fulldeps/issue-69368/c.rs b/tests/run-make-fulldeps/issue-69368/c.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-69368/c.rs rename to tests/run-make-fulldeps/issue-69368/c.rs diff --git a/src/test/run-make-fulldeps/issue-7349/Makefile b/tests/run-make-fulldeps/issue-7349/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-7349/Makefile rename to tests/run-make-fulldeps/issue-7349/Makefile diff --git a/src/test/run-make-fulldeps/issue-7349/foo.rs b/tests/run-make-fulldeps/issue-7349/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-7349/foo.rs rename to tests/run-make-fulldeps/issue-7349/foo.rs diff --git a/src/test/run-make-fulldeps/issue-83045/Makefile b/tests/run-make-fulldeps/issue-83045/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-83045/Makefile rename to tests/run-make-fulldeps/issue-83045/Makefile diff --git a/src/test/run-make-fulldeps/issue-83045/a.rs b/tests/run-make-fulldeps/issue-83045/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-83045/a.rs rename to tests/run-make-fulldeps/issue-83045/a.rs diff --git a/src/test/run-make-fulldeps/issue-83045/b.rs b/tests/run-make-fulldeps/issue-83045/b.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-83045/b.rs rename to tests/run-make-fulldeps/issue-83045/b.rs diff --git a/src/test/run-make-fulldeps/issue-83045/c.rs b/tests/run-make-fulldeps/issue-83045/c.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-83045/c.rs rename to tests/run-make-fulldeps/issue-83045/c.rs diff --git a/src/test/run-make-fulldeps/issue-84395-lto-embed-bitcode/Makefile b/tests/run-make-fulldeps/issue-84395-lto-embed-bitcode/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-84395-lto-embed-bitcode/Makefile rename to tests/run-make-fulldeps/issue-84395-lto-embed-bitcode/Makefile diff --git a/src/test/run-make-fulldeps/issue-84395-lto-embed-bitcode/test.rs b/tests/run-make-fulldeps/issue-84395-lto-embed-bitcode/test.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-84395-lto-embed-bitcode/test.rs rename to tests/run-make-fulldeps/issue-84395-lto-embed-bitcode/test.rs diff --git a/src/test/run-make-fulldeps/issue-97463-abi-param-passing/Makefile b/tests/run-make-fulldeps/issue-97463-abi-param-passing/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue-97463-abi-param-passing/Makefile rename to tests/run-make-fulldeps/issue-97463-abi-param-passing/Makefile diff --git a/src/test/run-make-fulldeps/issue-97463-abi-param-passing/bad.c b/tests/run-make-fulldeps/issue-97463-abi-param-passing/bad.c similarity index 100% rename from src/test/run-make-fulldeps/issue-97463-abi-param-passing/bad.c rename to tests/run-make-fulldeps/issue-97463-abi-param-passing/bad.c diff --git a/src/test/run-make-fulldeps/issue-97463-abi-param-passing/param_passing.rs b/tests/run-make-fulldeps/issue-97463-abi-param-passing/param_passing.rs similarity index 100% rename from src/test/run-make-fulldeps/issue-97463-abi-param-passing/param_passing.rs rename to tests/run-make-fulldeps/issue-97463-abi-param-passing/param_passing.rs diff --git a/src/test/run-make-fulldeps/issue64319/Makefile b/tests/run-make-fulldeps/issue64319/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issue64319/Makefile rename to tests/run-make-fulldeps/issue64319/Makefile diff --git a/src/test/run-make-fulldeps/issue64319/bar.rs b/tests/run-make-fulldeps/issue64319/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/issue64319/bar.rs rename to tests/run-make-fulldeps/issue64319/bar.rs diff --git a/src/test/run-make-fulldeps/issue64319/foo.rs b/tests/run-make-fulldeps/issue64319/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/issue64319/foo.rs rename to tests/run-make-fulldeps/issue64319/foo.rs diff --git a/src/test/run-make-fulldeps/issues-41478-43796/Makefile b/tests/run-make-fulldeps/issues-41478-43796/Makefile similarity index 100% rename from src/test/run-make-fulldeps/issues-41478-43796/Makefile rename to tests/run-make-fulldeps/issues-41478-43796/Makefile diff --git a/src/test/run-make-fulldeps/issues-41478-43796/a.rs b/tests/run-make-fulldeps/issues-41478-43796/a.rs similarity index 100% rename from src/test/run-make-fulldeps/issues-41478-43796/a.rs rename to tests/run-make-fulldeps/issues-41478-43796/a.rs diff --git a/src/test/run-make-fulldeps/libs-through-symlinks/Makefile b/tests/run-make-fulldeps/libs-through-symlinks/Makefile similarity index 100% rename from src/test/run-make-fulldeps/libs-through-symlinks/Makefile rename to tests/run-make-fulldeps/libs-through-symlinks/Makefile diff --git a/src/test/run-make-fulldeps/libs-through-symlinks/bar.rs b/tests/run-make-fulldeps/libs-through-symlinks/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/libs-through-symlinks/bar.rs rename to tests/run-make-fulldeps/libs-through-symlinks/bar.rs diff --git a/src/test/run-make-fulldeps/libs-through-symlinks/foo.rs b/tests/run-make-fulldeps/libs-through-symlinks/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/libs-through-symlinks/foo.rs rename to tests/run-make-fulldeps/libs-through-symlinks/foo.rs diff --git a/src/test/run-make-fulldeps/libtest-json/Makefile b/tests/run-make-fulldeps/libtest-json/Makefile similarity index 100% rename from src/test/run-make-fulldeps/libtest-json/Makefile rename to tests/run-make-fulldeps/libtest-json/Makefile diff --git a/src/test/run-make-fulldeps/libtest-json/f.rs b/tests/run-make-fulldeps/libtest-json/f.rs similarity index 100% rename from src/test/run-make-fulldeps/libtest-json/f.rs rename to tests/run-make-fulldeps/libtest-json/f.rs diff --git a/src/test/run-make-fulldeps/libtest-json/output-default.json b/tests/run-make-fulldeps/libtest-json/output-default.json similarity index 100% rename from src/test/run-make-fulldeps/libtest-json/output-default.json rename to tests/run-make-fulldeps/libtest-json/output-default.json diff --git a/src/test/run-make-fulldeps/libtest-json/output-stdout-success.json b/tests/run-make-fulldeps/libtest-json/output-stdout-success.json similarity index 100% rename from src/test/run-make-fulldeps/libtest-json/output-stdout-success.json rename to tests/run-make-fulldeps/libtest-json/output-stdout-success.json diff --git a/src/test/run-make-fulldeps/libtest-json/validate_json.py b/tests/run-make-fulldeps/libtest-json/validate_json.py similarity index 100% rename from src/test/run-make-fulldeps/libtest-json/validate_json.py rename to tests/run-make-fulldeps/libtest-json/validate_json.py diff --git a/src/test/run-make-fulldeps/link-arg/Makefile b/tests/run-make-fulldeps/link-arg/Makefile similarity index 100% rename from src/test/run-make-fulldeps/link-arg/Makefile rename to tests/run-make-fulldeps/link-arg/Makefile diff --git a/src/test/run-make-fulldeps/link-arg/empty.rs b/tests/run-make-fulldeps/link-arg/empty.rs similarity index 100% rename from src/test/run-make-fulldeps/link-arg/empty.rs rename to tests/run-make-fulldeps/link-arg/empty.rs diff --git a/src/test/run-make-fulldeps/link-args-order/Makefile b/tests/run-make-fulldeps/link-args-order/Makefile similarity index 100% rename from src/test/run-make-fulldeps/link-args-order/Makefile rename to tests/run-make-fulldeps/link-args-order/Makefile diff --git a/src/test/run-make-fulldeps/link-args-order/empty.rs b/tests/run-make-fulldeps/link-args-order/empty.rs similarity index 100% rename from src/test/run-make-fulldeps/link-args-order/empty.rs rename to tests/run-make-fulldeps/link-args-order/empty.rs diff --git a/src/test/run-make-fulldeps/link-cfg/Makefile b/tests/run-make-fulldeps/link-cfg/Makefile similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/Makefile rename to tests/run-make-fulldeps/link-cfg/Makefile diff --git a/src/test/run-make-fulldeps/link-cfg/dep-with-staticlib.rs b/tests/run-make-fulldeps/link-cfg/dep-with-staticlib.rs similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/dep-with-staticlib.rs rename to tests/run-make-fulldeps/link-cfg/dep-with-staticlib.rs diff --git a/src/test/run-make-fulldeps/link-cfg/dep.rs b/tests/run-make-fulldeps/link-cfg/dep.rs similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/dep.rs rename to tests/run-make-fulldeps/link-cfg/dep.rs diff --git a/src/test/run-make-fulldeps/link-cfg/no-deps.rs b/tests/run-make-fulldeps/link-cfg/no-deps.rs similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/no-deps.rs rename to tests/run-make-fulldeps/link-cfg/no-deps.rs diff --git a/src/test/run-make-fulldeps/link-cfg/return1.c b/tests/run-make-fulldeps/link-cfg/return1.c similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/return1.c rename to tests/run-make-fulldeps/link-cfg/return1.c diff --git a/src/test/run-make-fulldeps/link-cfg/return2.c b/tests/run-make-fulldeps/link-cfg/return2.c similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/return2.c rename to tests/run-make-fulldeps/link-cfg/return2.c diff --git a/src/test/run-make-fulldeps/link-cfg/return3.c b/tests/run-make-fulldeps/link-cfg/return3.c similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/return3.c rename to tests/run-make-fulldeps/link-cfg/return3.c diff --git a/src/test/run-make-fulldeps/link-cfg/with-deps.rs b/tests/run-make-fulldeps/link-cfg/with-deps.rs similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/with-deps.rs rename to tests/run-make-fulldeps/link-cfg/with-deps.rs diff --git a/src/test/run-make-fulldeps/link-cfg/with-staticlib-deps.rs b/tests/run-make-fulldeps/link-cfg/with-staticlib-deps.rs similarity index 100% rename from src/test/run-make-fulldeps/link-cfg/with-staticlib-deps.rs rename to tests/run-make-fulldeps/link-cfg/with-staticlib-deps.rs diff --git a/src/test/run-make-fulldeps/link-dedup/Makefile b/tests/run-make-fulldeps/link-dedup/Makefile similarity index 100% rename from src/test/run-make-fulldeps/link-dedup/Makefile rename to tests/run-make-fulldeps/link-dedup/Makefile diff --git a/src/test/run-make-fulldeps/link-dedup/depa.rs b/tests/run-make-fulldeps/link-dedup/depa.rs similarity index 100% rename from src/test/run-make-fulldeps/link-dedup/depa.rs rename to tests/run-make-fulldeps/link-dedup/depa.rs diff --git a/src/test/run-make-fulldeps/link-dedup/depb.rs b/tests/run-make-fulldeps/link-dedup/depb.rs similarity index 100% rename from src/test/run-make-fulldeps/link-dedup/depb.rs rename to tests/run-make-fulldeps/link-dedup/depb.rs diff --git a/src/test/run-make-fulldeps/link-dedup/depc.rs b/tests/run-make-fulldeps/link-dedup/depc.rs similarity index 100% rename from src/test/run-make-fulldeps/link-dedup/depc.rs rename to tests/run-make-fulldeps/link-dedup/depc.rs diff --git a/src/test/run-make-fulldeps/link-dedup/empty.rs b/tests/run-make-fulldeps/link-dedup/empty.rs similarity index 100% rename from src/test/run-make-fulldeps/link-dedup/empty.rs rename to tests/run-make-fulldeps/link-dedup/empty.rs diff --git a/src/test/run-make-fulldeps/link-path-order/Makefile b/tests/run-make-fulldeps/link-path-order/Makefile similarity index 100% rename from src/test/run-make-fulldeps/link-path-order/Makefile rename to tests/run-make-fulldeps/link-path-order/Makefile diff --git a/src/test/run-make-fulldeps/link-path-order/correct.c b/tests/run-make-fulldeps/link-path-order/correct.c similarity index 100% rename from src/test/run-make-fulldeps/link-path-order/correct.c rename to tests/run-make-fulldeps/link-path-order/correct.c diff --git a/src/test/run-make-fulldeps/link-path-order/main.rs b/tests/run-make-fulldeps/link-path-order/main.rs similarity index 100% rename from src/test/run-make-fulldeps/link-path-order/main.rs rename to tests/run-make-fulldeps/link-path-order/main.rs diff --git a/src/test/run-make-fulldeps/link-path-order/wrong.c b/tests/run-make-fulldeps/link-path-order/wrong.c similarity index 100% rename from src/test/run-make-fulldeps/link-path-order/wrong.c rename to tests/run-make-fulldeps/link-path-order/wrong.c diff --git a/src/test/run-make-fulldeps/linkage-attr-on-static/Makefile b/tests/run-make-fulldeps/linkage-attr-on-static/Makefile similarity index 100% rename from src/test/run-make-fulldeps/linkage-attr-on-static/Makefile rename to tests/run-make-fulldeps/linkage-attr-on-static/Makefile diff --git a/src/test/run-make-fulldeps/linkage-attr-on-static/bar.rs b/tests/run-make-fulldeps/linkage-attr-on-static/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/linkage-attr-on-static/bar.rs rename to tests/run-make-fulldeps/linkage-attr-on-static/bar.rs diff --git a/src/test/run-make-fulldeps/linkage-attr-on-static/foo.c b/tests/run-make-fulldeps/linkage-attr-on-static/foo.c similarity index 100% rename from src/test/run-make-fulldeps/linkage-attr-on-static/foo.c rename to tests/run-make-fulldeps/linkage-attr-on-static/foo.c diff --git a/src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/Makefile b/tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/Makefile similarity index 100% rename from src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/Makefile rename to tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/Makefile diff --git a/src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.bat b/tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.bat similarity index 100% rename from src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.bat rename to tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.bat diff --git a/src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.rs b/tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.rs rename to tests/run-make-fulldeps/long-linker-command-lines-cmd-exe/foo.rs diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/tests/run-make-fulldeps/long-linker-command-lines/Makefile similarity index 100% rename from src/test/run-make-fulldeps/long-linker-command-lines/Makefile rename to tests/run-make-fulldeps/long-linker-command-lines/Makefile diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/foo.rs b/tests/run-make-fulldeps/long-linker-command-lines/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/long-linker-command-lines/foo.rs rename to tests/run-make-fulldeps/long-linker-command-lines/foo.rs diff --git a/src/test/run-make-fulldeps/longjmp-across-rust/Makefile b/tests/run-make-fulldeps/longjmp-across-rust/Makefile similarity index 100% rename from src/test/run-make-fulldeps/longjmp-across-rust/Makefile rename to tests/run-make-fulldeps/longjmp-across-rust/Makefile diff --git a/src/test/run-make-fulldeps/longjmp-across-rust/foo.c b/tests/run-make-fulldeps/longjmp-across-rust/foo.c similarity index 100% rename from src/test/run-make-fulldeps/longjmp-across-rust/foo.c rename to tests/run-make-fulldeps/longjmp-across-rust/foo.c diff --git a/src/test/run-make-fulldeps/longjmp-across-rust/main.rs b/tests/run-make-fulldeps/longjmp-across-rust/main.rs similarity index 100% rename from src/test/run-make-fulldeps/longjmp-across-rust/main.rs rename to tests/run-make-fulldeps/longjmp-across-rust/main.rs diff --git a/src/test/run-make-fulldeps/ls-metadata/Makefile b/tests/run-make-fulldeps/ls-metadata/Makefile similarity index 100% rename from src/test/run-make-fulldeps/ls-metadata/Makefile rename to tests/run-make-fulldeps/ls-metadata/Makefile diff --git a/src/test/run-make-fulldeps/ls-metadata/foo.rs b/tests/run-make-fulldeps/ls-metadata/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/ls-metadata/foo.rs rename to tests/run-make-fulldeps/ls-metadata/foo.rs diff --git a/src/test/run-make-fulldeps/lto-dylib-dep/Makefile b/tests/run-make-fulldeps/lto-dylib-dep/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-dylib-dep/Makefile rename to tests/run-make-fulldeps/lto-dylib-dep/Makefile diff --git a/src/test/run-make-fulldeps/lto-dylib-dep/a_dylib.rs b/tests/run-make-fulldeps/lto-dylib-dep/a_dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-dylib-dep/a_dylib.rs rename to tests/run-make-fulldeps/lto-dylib-dep/a_dylib.rs diff --git a/src/test/run-make-fulldeps/lto-dylib-dep/main.rs b/tests/run-make-fulldeps/lto-dylib-dep/main.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-dylib-dep/main.rs rename to tests/run-make-fulldeps/lto-dylib-dep/main.rs diff --git a/src/test/run-make-fulldeps/lto-empty/Makefile b/tests/run-make-fulldeps/lto-empty/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-empty/Makefile rename to tests/run-make-fulldeps/lto-empty/Makefile diff --git a/src/test/run-make-fulldeps/lto-empty/lib.rs b/tests/run-make-fulldeps/lto-empty/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-empty/lib.rs rename to tests/run-make-fulldeps/lto-empty/lib.rs diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/Makefile b/tests/run-make-fulldeps/lto-no-link-whole-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/Makefile rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/Makefile diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/bar.c b/tests/run-make-fulldeps/lto-no-link-whole-rlib/bar.c similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/bar.c rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/bar.c diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/foo.c b/tests/run-make-fulldeps/lto-no-link-whole-rlib/foo.c similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/foo.c rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/foo.c diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/lib1.rs b/tests/run-make-fulldeps/lto-no-link-whole-rlib/lib1.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/lib1.rs rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/lib1.rs diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/lib2.rs b/tests/run-make-fulldeps/lto-no-link-whole-rlib/lib2.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/lib2.rs rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/lib2.rs diff --git a/src/test/run-make-fulldeps/lto-no-link-whole-rlib/main.rs b/tests/run-make-fulldeps/lto-no-link-whole-rlib/main.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-no-link-whole-rlib/main.rs rename to tests/run-make-fulldeps/lto-no-link-whole-rlib/main.rs diff --git a/src/test/run-make-fulldeps/lto-readonly-lib/Makefile b/tests/run-make-fulldeps/lto-readonly-lib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-readonly-lib/Makefile rename to tests/run-make-fulldeps/lto-readonly-lib/Makefile diff --git a/src/test/run-make-fulldeps/lto-readonly-lib/lib.rs b/tests/run-make-fulldeps/lto-readonly-lib/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-readonly-lib/lib.rs rename to tests/run-make-fulldeps/lto-readonly-lib/lib.rs diff --git a/src/test/run-make-fulldeps/lto-readonly-lib/main.rs b/tests/run-make-fulldeps/lto-readonly-lib/main.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-readonly-lib/main.rs rename to tests/run-make-fulldeps/lto-readonly-lib/main.rs diff --git a/src/test/run-make-fulldeps/lto-smoke-c/Makefile b/tests/run-make-fulldeps/lto-smoke-c/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke-c/Makefile rename to tests/run-make-fulldeps/lto-smoke-c/Makefile diff --git a/src/test/run-make-fulldeps/lto-smoke-c/bar.c b/tests/run-make-fulldeps/lto-smoke-c/bar.c similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke-c/bar.c rename to tests/run-make-fulldeps/lto-smoke-c/bar.c diff --git a/src/test/run-make-fulldeps/lto-smoke-c/foo.rs b/tests/run-make-fulldeps/lto-smoke-c/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke-c/foo.rs rename to tests/run-make-fulldeps/lto-smoke-c/foo.rs diff --git a/src/test/run-make-fulldeps/lto-smoke/Makefile b/tests/run-make-fulldeps/lto-smoke/Makefile similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke/Makefile rename to tests/run-make-fulldeps/lto-smoke/Makefile diff --git a/src/test/run-make-fulldeps/lto-smoke/lib.rs b/tests/run-make-fulldeps/lto-smoke/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke/lib.rs rename to tests/run-make-fulldeps/lto-smoke/lib.rs diff --git a/src/test/run-make-fulldeps/lto-smoke/main.rs b/tests/run-make-fulldeps/lto-smoke/main.rs similarity index 100% rename from src/test/run-make-fulldeps/lto-smoke/main.rs rename to tests/run-make-fulldeps/lto-smoke/main.rs diff --git a/src/test/run-make-fulldeps/manual-crate-name/Makefile b/tests/run-make-fulldeps/manual-crate-name/Makefile similarity index 100% rename from src/test/run-make-fulldeps/manual-crate-name/Makefile rename to tests/run-make-fulldeps/manual-crate-name/Makefile diff --git a/src/test/run-make-fulldeps/manual-crate-name/bar.rs b/tests/run-make-fulldeps/manual-crate-name/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/manual-crate-name/bar.rs rename to tests/run-make-fulldeps/manual-crate-name/bar.rs diff --git a/src/test/run-make-fulldeps/manual-link/Makefile b/tests/run-make-fulldeps/manual-link/Makefile similarity index 100% rename from src/test/run-make-fulldeps/manual-link/Makefile rename to tests/run-make-fulldeps/manual-link/Makefile diff --git a/src/test/run-make-fulldeps/manual-link/bar.c b/tests/run-make-fulldeps/manual-link/bar.c similarity index 100% rename from src/test/run-make-fulldeps/manual-link/bar.c rename to tests/run-make-fulldeps/manual-link/bar.c diff --git a/src/test/run-make-fulldeps/manual-link/foo.c b/tests/run-make-fulldeps/manual-link/foo.c similarity index 100% rename from src/test/run-make-fulldeps/manual-link/foo.c rename to tests/run-make-fulldeps/manual-link/foo.c diff --git a/src/test/run-make-fulldeps/manual-link/foo.rs b/tests/run-make-fulldeps/manual-link/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/manual-link/foo.rs rename to tests/run-make-fulldeps/manual-link/foo.rs diff --git a/src/test/run-make-fulldeps/manual-link/main.rs b/tests/run-make-fulldeps/manual-link/main.rs similarity index 100% rename from src/test/run-make-fulldeps/manual-link/main.rs rename to tests/run-make-fulldeps/manual-link/main.rs diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/Makefile b/tests/run-make-fulldeps/many-crates-but-no-match/Makefile similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/Makefile rename to tests/run-make-fulldeps/many-crates-but-no-match/Makefile diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/crateA1.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/crateA1.rs rename to tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/crateA2.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/crateA2.rs rename to tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/crateA3.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/crateA3.rs rename to tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/crateB.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/crateB.rs rename to tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs diff --git a/src/test/run-make-fulldeps/many-crates-but-no-match/crateC.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs similarity index 100% rename from src/test/run-make-fulldeps/many-crates-but-no-match/crateC.rs rename to tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs diff --git a/src/test/run-make-fulldeps/metadata-flag-frobs-symbols/Makefile b/tests/run-make-fulldeps/metadata-flag-frobs-symbols/Makefile similarity index 100% rename from src/test/run-make-fulldeps/metadata-flag-frobs-symbols/Makefile rename to tests/run-make-fulldeps/metadata-flag-frobs-symbols/Makefile diff --git a/src/test/run-make-fulldeps/metadata-flag-frobs-symbols/bar.rs b/tests/run-make-fulldeps/metadata-flag-frobs-symbols/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/metadata-flag-frobs-symbols/bar.rs rename to tests/run-make-fulldeps/metadata-flag-frobs-symbols/bar.rs diff --git a/src/test/run-make-fulldeps/metadata-flag-frobs-symbols/foo.rs b/tests/run-make-fulldeps/metadata-flag-frobs-symbols/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/metadata-flag-frobs-symbols/foo.rs rename to tests/run-make-fulldeps/metadata-flag-frobs-symbols/foo.rs diff --git a/src/test/run-make-fulldeps/min-global-align/Makefile b/tests/run-make-fulldeps/min-global-align/Makefile similarity index 100% rename from src/test/run-make-fulldeps/min-global-align/Makefile rename to tests/run-make-fulldeps/min-global-align/Makefile diff --git a/src/test/run-make-fulldeps/min-global-align/min_global_align.rs b/tests/run-make-fulldeps/min-global-align/min_global_align.rs similarity index 100% rename from src/test/run-make-fulldeps/min-global-align/min_global_align.rs rename to tests/run-make-fulldeps/min-global-align/min_global_align.rs diff --git a/src/test/run-make-fulldeps/mingw-export-call-convention/Makefile b/tests/run-make-fulldeps/mingw-export-call-convention/Makefile similarity index 100% rename from src/test/run-make-fulldeps/mingw-export-call-convention/Makefile rename to tests/run-make-fulldeps/mingw-export-call-convention/Makefile diff --git a/src/test/run-make-fulldeps/mingw-export-call-convention/foo.rs b/tests/run-make-fulldeps/mingw-export-call-convention/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/mingw-export-call-convention/foo.rs rename to tests/run-make-fulldeps/mingw-export-call-convention/foo.rs diff --git a/src/test/run-make-fulldeps/mismatching-target-triples/Makefile b/tests/run-make-fulldeps/mismatching-target-triples/Makefile similarity index 100% rename from src/test/run-make-fulldeps/mismatching-target-triples/Makefile rename to tests/run-make-fulldeps/mismatching-target-triples/Makefile diff --git a/src/test/run-make-fulldeps/mismatching-target-triples/bar.rs b/tests/run-make-fulldeps/mismatching-target-triples/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/mismatching-target-triples/bar.rs rename to tests/run-make-fulldeps/mismatching-target-triples/bar.rs diff --git a/src/test/run-make-fulldeps/mismatching-target-triples/foo.rs b/tests/run-make-fulldeps/mismatching-target-triples/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/mismatching-target-triples/foo.rs rename to tests/run-make-fulldeps/mismatching-target-triples/foo.rs diff --git a/src/test/run-make-fulldeps/missing-crate-dependency/Makefile b/tests/run-make-fulldeps/missing-crate-dependency/Makefile similarity index 100% rename from src/test/run-make-fulldeps/missing-crate-dependency/Makefile rename to tests/run-make-fulldeps/missing-crate-dependency/Makefile diff --git a/src/test/run-make-fulldeps/missing-crate-dependency/crateA.rs b/tests/run-make-fulldeps/missing-crate-dependency/crateA.rs similarity index 100% rename from src/test/run-make-fulldeps/missing-crate-dependency/crateA.rs rename to tests/run-make-fulldeps/missing-crate-dependency/crateA.rs diff --git a/src/test/run-make-fulldeps/missing-crate-dependency/crateB.rs b/tests/run-make-fulldeps/missing-crate-dependency/crateB.rs similarity index 100% rename from src/test/run-make-fulldeps/missing-crate-dependency/crateB.rs rename to tests/run-make-fulldeps/missing-crate-dependency/crateB.rs diff --git a/src/test/run-make-fulldeps/missing-crate-dependency/crateC.rs b/tests/run-make-fulldeps/missing-crate-dependency/crateC.rs similarity index 100% rename from src/test/run-make-fulldeps/missing-crate-dependency/crateC.rs rename to tests/run-make-fulldeps/missing-crate-dependency/crateC.rs diff --git a/src/test/run-make-fulldeps/mixing-deps/Makefile b/tests/run-make-fulldeps/mixing-deps/Makefile similarity index 100% rename from src/test/run-make-fulldeps/mixing-deps/Makefile rename to tests/run-make-fulldeps/mixing-deps/Makefile diff --git a/src/test/run-make-fulldeps/mixing-deps/both.rs b/tests/run-make-fulldeps/mixing-deps/both.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-deps/both.rs rename to tests/run-make-fulldeps/mixing-deps/both.rs diff --git a/src/test/run-make-fulldeps/mixing-deps/dylib.rs b/tests/run-make-fulldeps/mixing-deps/dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-deps/dylib.rs rename to tests/run-make-fulldeps/mixing-deps/dylib.rs diff --git a/src/test/run-make-fulldeps/mixing-deps/prog.rs b/tests/run-make-fulldeps/mixing-deps/prog.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-deps/prog.rs rename to tests/run-make-fulldeps/mixing-deps/prog.rs diff --git a/src/test/run-make-fulldeps/mixing-formats/Makefile b/tests/run-make-fulldeps/mixing-formats/Makefile similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/Makefile rename to tests/run-make-fulldeps/mixing-formats/Makefile diff --git a/src/test/run-make-fulldeps/mixing-formats/bar1.rs b/tests/run-make-fulldeps/mixing-formats/bar1.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/bar1.rs rename to tests/run-make-fulldeps/mixing-formats/bar1.rs diff --git a/src/test/run-make-fulldeps/mixing-formats/bar2.rs b/tests/run-make-fulldeps/mixing-formats/bar2.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/bar2.rs rename to tests/run-make-fulldeps/mixing-formats/bar2.rs diff --git a/src/test/run-make-fulldeps/mixing-formats/baz.rs b/tests/run-make-fulldeps/mixing-formats/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/baz.rs rename to tests/run-make-fulldeps/mixing-formats/baz.rs diff --git a/src/test/run-make-fulldeps/mixing-formats/baz2.rs b/tests/run-make-fulldeps/mixing-formats/baz2.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/baz2.rs rename to tests/run-make-fulldeps/mixing-formats/baz2.rs diff --git a/src/test/run-make-fulldeps/mixing-formats/foo.rs b/tests/run-make-fulldeps/mixing-formats/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-formats/foo.rs rename to tests/run-make-fulldeps/mixing-formats/foo.rs diff --git a/src/test/run-make-fulldeps/mixing-libs/Makefile b/tests/run-make-fulldeps/mixing-libs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/mixing-libs/Makefile rename to tests/run-make-fulldeps/mixing-libs/Makefile diff --git a/src/test/run-make-fulldeps/mixing-libs/dylib.rs b/tests/run-make-fulldeps/mixing-libs/dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-libs/dylib.rs rename to tests/run-make-fulldeps/mixing-libs/dylib.rs diff --git a/src/test/run-make-fulldeps/mixing-libs/prog.rs b/tests/run-make-fulldeps/mixing-libs/prog.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-libs/prog.rs rename to tests/run-make-fulldeps/mixing-libs/prog.rs diff --git a/src/test/run-make-fulldeps/mixing-libs/rlib.rs b/tests/run-make-fulldeps/mixing-libs/rlib.rs similarity index 100% rename from src/test/run-make-fulldeps/mixing-libs/rlib.rs rename to tests/run-make-fulldeps/mixing-libs/rlib.rs diff --git a/src/test/run-make-fulldeps/msvc-opt-minsize/Makefile b/tests/run-make-fulldeps/msvc-opt-minsize/Makefile similarity index 100% rename from src/test/run-make-fulldeps/msvc-opt-minsize/Makefile rename to tests/run-make-fulldeps/msvc-opt-minsize/Makefile diff --git a/src/test/run-make-fulldeps/msvc-opt-minsize/foo.rs b/tests/run-make-fulldeps/msvc-opt-minsize/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/msvc-opt-minsize/foo.rs rename to tests/run-make-fulldeps/msvc-opt-minsize/foo.rs diff --git a/src/test/run-make-fulldeps/multiple-emits/Makefile b/tests/run-make-fulldeps/multiple-emits/Makefile similarity index 100% rename from src/test/run-make-fulldeps/multiple-emits/Makefile rename to tests/run-make-fulldeps/multiple-emits/Makefile diff --git a/src/test/run-make-fulldeps/multiple-emits/foo.rs b/tests/run-make-fulldeps/multiple-emits/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/multiple-emits/foo.rs rename to tests/run-make-fulldeps/multiple-emits/foo.rs diff --git a/src/test/run-make-fulldeps/no-builtins-lto/Makefile b/tests/run-make-fulldeps/no-builtins-lto/Makefile similarity index 100% rename from src/test/run-make-fulldeps/no-builtins-lto/Makefile rename to tests/run-make-fulldeps/no-builtins-lto/Makefile diff --git a/src/test/run-make-fulldeps/no-builtins-lto/main.rs b/tests/run-make-fulldeps/no-builtins-lto/main.rs similarity index 100% rename from src/test/run-make-fulldeps/no-builtins-lto/main.rs rename to tests/run-make-fulldeps/no-builtins-lto/main.rs diff --git a/src/test/run-make-fulldeps/no-builtins-lto/no_builtins.rs b/tests/run-make-fulldeps/no-builtins-lto/no_builtins.rs similarity index 100% rename from src/test/run-make-fulldeps/no-builtins-lto/no_builtins.rs rename to tests/run-make-fulldeps/no-builtins-lto/no_builtins.rs diff --git a/src/test/run-make-fulldeps/no-duplicate-libs/Makefile b/tests/run-make-fulldeps/no-duplicate-libs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/no-duplicate-libs/Makefile rename to tests/run-make-fulldeps/no-duplicate-libs/Makefile diff --git a/src/test/run-make-fulldeps/no-duplicate-libs/bar.c b/tests/run-make-fulldeps/no-duplicate-libs/bar.c similarity index 100% rename from src/test/run-make-fulldeps/no-duplicate-libs/bar.c rename to tests/run-make-fulldeps/no-duplicate-libs/bar.c diff --git a/src/test/run-make-fulldeps/no-duplicate-libs/foo.c b/tests/run-make-fulldeps/no-duplicate-libs/foo.c similarity index 100% rename from src/test/run-make-fulldeps/no-duplicate-libs/foo.c rename to tests/run-make-fulldeps/no-duplicate-libs/foo.c diff --git a/src/test/run-make-fulldeps/no-duplicate-libs/main.rs b/tests/run-make-fulldeps/no-duplicate-libs/main.rs similarity index 100% rename from src/test/run-make-fulldeps/no-duplicate-libs/main.rs rename to tests/run-make-fulldeps/no-duplicate-libs/main.rs diff --git a/src/test/run-make-fulldeps/no-intermediate-extras/Makefile b/tests/run-make-fulldeps/no-intermediate-extras/Makefile similarity index 100% rename from src/test/run-make-fulldeps/no-intermediate-extras/Makefile rename to tests/run-make-fulldeps/no-intermediate-extras/Makefile diff --git a/src/test/run-make-fulldeps/no-intermediate-extras/foo.rs b/tests/run-make-fulldeps/no-intermediate-extras/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/no-intermediate-extras/foo.rs rename to tests/run-make-fulldeps/no-intermediate-extras/foo.rs diff --git a/src/test/run-make-fulldeps/obey-crate-type-flag/Makefile b/tests/run-make-fulldeps/obey-crate-type-flag/Makefile similarity index 100% rename from src/test/run-make-fulldeps/obey-crate-type-flag/Makefile rename to tests/run-make-fulldeps/obey-crate-type-flag/Makefile diff --git a/src/test/run-make-fulldeps/obey-crate-type-flag/test.rs b/tests/run-make-fulldeps/obey-crate-type-flag/test.rs similarity index 100% rename from src/test/run-make-fulldeps/obey-crate-type-flag/test.rs rename to tests/run-make-fulldeps/obey-crate-type-flag/test.rs diff --git a/src/test/run-make-fulldeps/obtain-borrowck/Makefile b/tests/run-make-fulldeps/obtain-borrowck/Makefile similarity index 100% rename from src/test/run-make-fulldeps/obtain-borrowck/Makefile rename to tests/run-make-fulldeps/obtain-borrowck/Makefile diff --git a/src/test/run-make-fulldeps/obtain-borrowck/driver.rs b/tests/run-make-fulldeps/obtain-borrowck/driver.rs similarity index 100% rename from src/test/run-make-fulldeps/obtain-borrowck/driver.rs rename to tests/run-make-fulldeps/obtain-borrowck/driver.rs diff --git a/src/test/run-make-fulldeps/obtain-borrowck/output.stdout b/tests/run-make-fulldeps/obtain-borrowck/output.stdout similarity index 100% rename from src/test/run-make-fulldeps/obtain-borrowck/output.stdout rename to tests/run-make-fulldeps/obtain-borrowck/output.stdout diff --git a/src/test/run-make-fulldeps/obtain-borrowck/test.rs b/tests/run-make-fulldeps/obtain-borrowck/test.rs similarity index 100% rename from src/test/run-make-fulldeps/obtain-borrowck/test.rs rename to tests/run-make-fulldeps/obtain-borrowck/test.rs diff --git a/src/test/run-make-fulldeps/output-filename-conflicts-with-directory/Makefile b/tests/run-make-fulldeps/output-filename-conflicts-with-directory/Makefile similarity index 100% rename from src/test/run-make-fulldeps/output-filename-conflicts-with-directory/Makefile rename to tests/run-make-fulldeps/output-filename-conflicts-with-directory/Makefile diff --git a/src/test/run-make-fulldeps/output-filename-conflicts-with-directory/foo.rs b/tests/run-make-fulldeps/output-filename-conflicts-with-directory/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/output-filename-conflicts-with-directory/foo.rs rename to tests/run-make-fulldeps/output-filename-conflicts-with-directory/foo.rs diff --git a/src/test/run-make-fulldeps/output-filename-overwrites-input/Makefile b/tests/run-make-fulldeps/output-filename-overwrites-input/Makefile similarity index 100% rename from src/test/run-make-fulldeps/output-filename-overwrites-input/Makefile rename to tests/run-make-fulldeps/output-filename-overwrites-input/Makefile diff --git a/src/test/run-make-fulldeps/output-filename-overwrites-input/bar.rs b/tests/run-make-fulldeps/output-filename-overwrites-input/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/output-filename-overwrites-input/bar.rs rename to tests/run-make-fulldeps/output-filename-overwrites-input/bar.rs diff --git a/src/test/run-make-fulldeps/output-filename-overwrites-input/foo.rs b/tests/run-make-fulldeps/output-filename-overwrites-input/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/output-filename-overwrites-input/foo.rs rename to tests/run-make-fulldeps/output-filename-overwrites-input/foo.rs diff --git a/src/test/run-make-fulldeps/output-type-permutations/Makefile b/tests/run-make-fulldeps/output-type-permutations/Makefile similarity index 100% rename from src/test/run-make-fulldeps/output-type-permutations/Makefile rename to tests/run-make-fulldeps/output-type-permutations/Makefile diff --git a/src/test/run-make-fulldeps/output-type-permutations/foo.rs b/tests/run-make-fulldeps/output-type-permutations/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/output-type-permutations/foo.rs rename to tests/run-make-fulldeps/output-type-permutations/foo.rs diff --git a/src/test/run-make-fulldeps/output-with-hyphens/Makefile b/tests/run-make-fulldeps/output-with-hyphens/Makefile similarity index 100% rename from src/test/run-make-fulldeps/output-with-hyphens/Makefile rename to tests/run-make-fulldeps/output-with-hyphens/Makefile diff --git a/src/test/run-make-fulldeps/output-with-hyphens/foo-bar.rs b/tests/run-make-fulldeps/output-with-hyphens/foo-bar.rs similarity index 100% rename from src/test/run-make-fulldeps/output-with-hyphens/foo-bar.rs rename to tests/run-make-fulldeps/output-with-hyphens/foo-bar.rs diff --git a/src/test/run-make-fulldeps/override-aliased-flags/Makefile b/tests/run-make-fulldeps/override-aliased-flags/Makefile similarity index 100% rename from src/test/run-make-fulldeps/override-aliased-flags/Makefile rename to tests/run-make-fulldeps/override-aliased-flags/Makefile diff --git a/src/test/run-make-fulldeps/override-aliased-flags/main.rs b/tests/run-make-fulldeps/override-aliased-flags/main.rs similarity index 100% rename from src/test/run-make-fulldeps/override-aliased-flags/main.rs rename to tests/run-make-fulldeps/override-aliased-flags/main.rs diff --git a/src/test/run-make-fulldeps/panic-impl-transitive/Makefile b/tests/run-make-fulldeps/panic-impl-transitive/Makefile similarity index 100% rename from src/test/run-make-fulldeps/panic-impl-transitive/Makefile rename to tests/run-make-fulldeps/panic-impl-transitive/Makefile diff --git a/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-consumer.rs b/tests/run-make-fulldeps/panic-impl-transitive/panic-impl-consumer.rs similarity index 100% rename from src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-consumer.rs rename to tests/run-make-fulldeps/panic-impl-transitive/panic-impl-consumer.rs diff --git a/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs b/tests/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs similarity index 100% rename from src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs rename to tests/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs diff --git a/src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/Makefile b/tests/run-make-fulldeps/pass-non-c-like-enum-to-c/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/Makefile rename to tests/run-make-fulldeps/pass-non-c-like-enum-to-c/Makefile diff --git a/src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/nonclike.rs b/tests/run-make-fulldeps/pass-non-c-like-enum-to-c/nonclike.rs similarity index 100% rename from src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/nonclike.rs rename to tests/run-make-fulldeps/pass-non-c-like-enum-to-c/nonclike.rs diff --git a/src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/test.c b/tests/run-make-fulldeps/pass-non-c-like-enum-to-c/test.c similarity index 100% rename from src/test/run-make-fulldeps/pass-non-c-like-enum-to-c/test.c rename to tests/run-make-fulldeps/pass-non-c-like-enum-to-c/test.c diff --git a/src/test/run-make-fulldeps/pgo-branch-weights/Makefile b/tests/run-make-fulldeps/pgo-branch-weights/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-branch-weights/Makefile rename to tests/run-make-fulldeps/pgo-branch-weights/Makefile diff --git a/src/test/run-make-fulldeps/pgo-branch-weights/filecheck-patterns.txt b/tests/run-make-fulldeps/pgo-branch-weights/filecheck-patterns.txt similarity index 100% rename from src/test/run-make-fulldeps/pgo-branch-weights/filecheck-patterns.txt rename to tests/run-make-fulldeps/pgo-branch-weights/filecheck-patterns.txt diff --git a/src/test/run-make-fulldeps/pgo-branch-weights/interesting.rs b/tests/run-make-fulldeps/pgo-branch-weights/interesting.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-branch-weights/interesting.rs rename to tests/run-make-fulldeps/pgo-branch-weights/interesting.rs diff --git a/src/test/run-make-fulldeps/pgo-branch-weights/main.rs b/tests/run-make-fulldeps/pgo-branch-weights/main.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-branch-weights/main.rs rename to tests/run-make-fulldeps/pgo-branch-weights/main.rs diff --git a/src/test/run-make-fulldeps/pgo-branch-weights/opaque.rs b/tests/run-make-fulldeps/pgo-branch-weights/opaque.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-branch-weights/opaque.rs rename to tests/run-make-fulldeps/pgo-branch-weights/opaque.rs diff --git a/src/test/run-make-fulldeps/pgo-gen-lto/Makefile b/tests/run-make-fulldeps/pgo-gen-lto/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen-lto/Makefile rename to tests/run-make-fulldeps/pgo-gen-lto/Makefile diff --git a/src/test/run-make-fulldeps/pgo-gen-lto/test.rs b/tests/run-make-fulldeps/pgo-gen-lto/test.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen-lto/test.rs rename to tests/run-make-fulldeps/pgo-gen-lto/test.rs diff --git a/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile b/tests/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile rename to tests/run-make-fulldeps/pgo-gen-no-imp-symbols/Makefile diff --git a/src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/test.rs b/tests/run-make-fulldeps/pgo-gen-no-imp-symbols/test.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen-no-imp-symbols/test.rs rename to tests/run-make-fulldeps/pgo-gen-no-imp-symbols/test.rs diff --git a/src/test/run-make-fulldeps/pgo-gen/Makefile b/tests/run-make-fulldeps/pgo-gen/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen/Makefile rename to tests/run-make-fulldeps/pgo-gen/Makefile diff --git a/src/test/run-make-fulldeps/pgo-gen/test.rs b/tests/run-make-fulldeps/pgo-gen/test.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-gen/test.rs rename to tests/run-make-fulldeps/pgo-gen/test.rs diff --git a/src/test/run-make-fulldeps/pgo-indirect-call-promotion/Makefile b/tests/run-make-fulldeps/pgo-indirect-call-promotion/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-indirect-call-promotion/Makefile rename to tests/run-make-fulldeps/pgo-indirect-call-promotion/Makefile diff --git a/src/test/run-make-fulldeps/pgo-indirect-call-promotion/filecheck-patterns.txt b/tests/run-make-fulldeps/pgo-indirect-call-promotion/filecheck-patterns.txt similarity index 100% rename from src/test/run-make-fulldeps/pgo-indirect-call-promotion/filecheck-patterns.txt rename to tests/run-make-fulldeps/pgo-indirect-call-promotion/filecheck-patterns.txt diff --git a/src/test/run-make-fulldeps/pgo-indirect-call-promotion/interesting.rs b/tests/run-make-fulldeps/pgo-indirect-call-promotion/interesting.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-indirect-call-promotion/interesting.rs rename to tests/run-make-fulldeps/pgo-indirect-call-promotion/interesting.rs diff --git a/src/test/run-make-fulldeps/pgo-indirect-call-promotion/main.rs b/tests/run-make-fulldeps/pgo-indirect-call-promotion/main.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-indirect-call-promotion/main.rs rename to tests/run-make-fulldeps/pgo-indirect-call-promotion/main.rs diff --git a/src/test/run-make-fulldeps/pgo-indirect-call-promotion/opaque.rs b/tests/run-make-fulldeps/pgo-indirect-call-promotion/opaque.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-indirect-call-promotion/opaque.rs rename to tests/run-make-fulldeps/pgo-indirect-call-promotion/opaque.rs diff --git a/src/test/run-make-fulldeps/pgo-use/Makefile b/tests/run-make-fulldeps/pgo-use/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pgo-use/Makefile rename to tests/run-make-fulldeps/pgo-use/Makefile diff --git a/src/test/run-make-fulldeps/pgo-use/filecheck-patterns.txt b/tests/run-make-fulldeps/pgo-use/filecheck-patterns.txt similarity index 100% rename from src/test/run-make-fulldeps/pgo-use/filecheck-patterns.txt rename to tests/run-make-fulldeps/pgo-use/filecheck-patterns.txt diff --git a/src/test/run-make-fulldeps/pgo-use/main.rs b/tests/run-make-fulldeps/pgo-use/main.rs similarity index 100% rename from src/test/run-make-fulldeps/pgo-use/main.rs rename to tests/run-make-fulldeps/pgo-use/main.rs diff --git a/src/test/run-make-fulldeps/pointer-auth-link-with-c/Makefile b/tests/run-make-fulldeps/pointer-auth-link-with-c/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pointer-auth-link-with-c/Makefile rename to tests/run-make-fulldeps/pointer-auth-link-with-c/Makefile diff --git a/src/test/run-make-fulldeps/pointer-auth-link-with-c/test.c b/tests/run-make-fulldeps/pointer-auth-link-with-c/test.c similarity index 100% rename from src/test/run-make-fulldeps/pointer-auth-link-with-c/test.c rename to tests/run-make-fulldeps/pointer-auth-link-with-c/test.c diff --git a/src/test/run-make-fulldeps/pointer-auth-link-with-c/test.rs b/tests/run-make-fulldeps/pointer-auth-link-with-c/test.rs similarity index 100% rename from src/test/run-make-fulldeps/pointer-auth-link-with-c/test.rs rename to tests/run-make-fulldeps/pointer-auth-link-with-c/test.rs diff --git a/src/test/run-make-fulldeps/prefer-dylib/Makefile b/tests/run-make-fulldeps/prefer-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/prefer-dylib/Makefile rename to tests/run-make-fulldeps/prefer-dylib/Makefile diff --git a/src/test/run-make-fulldeps/prefer-dylib/bar.rs b/tests/run-make-fulldeps/prefer-dylib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/prefer-dylib/bar.rs rename to tests/run-make-fulldeps/prefer-dylib/bar.rs diff --git a/src/test/run-make-fulldeps/prefer-dylib/foo.rs b/tests/run-make-fulldeps/prefer-dylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/prefer-dylib/foo.rs rename to tests/run-make-fulldeps/prefer-dylib/foo.rs diff --git a/src/test/run-make-fulldeps/prefer-rlib/Makefile b/tests/run-make-fulldeps/prefer-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/prefer-rlib/Makefile rename to tests/run-make-fulldeps/prefer-rlib/Makefile diff --git a/src/test/run-make-fulldeps/prefer-rlib/bar.rs b/tests/run-make-fulldeps/prefer-rlib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/prefer-rlib/bar.rs rename to tests/run-make-fulldeps/prefer-rlib/bar.rs diff --git a/src/test/run-make-fulldeps/prefer-rlib/foo.rs b/tests/run-make-fulldeps/prefer-rlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/prefer-rlib/foo.rs rename to tests/run-make-fulldeps/prefer-rlib/foo.rs diff --git a/src/test/run-make-fulldeps/pretty-expanded/Makefile b/tests/run-make-fulldeps/pretty-expanded/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pretty-expanded/Makefile rename to tests/run-make-fulldeps/pretty-expanded/Makefile diff --git a/src/test/run-make-fulldeps/pretty-expanded/input.rs b/tests/run-make-fulldeps/pretty-expanded/input.rs similarity index 100% rename from src/test/run-make-fulldeps/pretty-expanded/input.rs rename to tests/run-make-fulldeps/pretty-expanded/input.rs diff --git a/src/test/run-make-fulldeps/pretty-print-to-file/Makefile b/tests/run-make-fulldeps/pretty-print-to-file/Makefile similarity index 100% rename from src/test/run-make-fulldeps/pretty-print-to-file/Makefile rename to tests/run-make-fulldeps/pretty-print-to-file/Makefile diff --git a/src/test/run-make-fulldeps/pretty-print-to-file/input.pp b/tests/run-make-fulldeps/pretty-print-to-file/input.pp similarity index 100% rename from src/test/run-make-fulldeps/pretty-print-to-file/input.pp rename to tests/run-make-fulldeps/pretty-print-to-file/input.pp diff --git a/src/test/run-make-fulldeps/pretty-print-to-file/input.rs b/tests/run-make-fulldeps/pretty-print-to-file/input.rs similarity index 100% rename from src/test/run-make-fulldeps/pretty-print-to-file/input.rs rename to tests/run-make-fulldeps/pretty-print-to-file/input.rs diff --git a/src/test/run-make-fulldeps/print-calling-conventions/Makefile b/tests/run-make-fulldeps/print-calling-conventions/Makefile similarity index 100% rename from src/test/run-make-fulldeps/print-calling-conventions/Makefile rename to tests/run-make-fulldeps/print-calling-conventions/Makefile diff --git a/src/test/run-make-fulldeps/print-cfg/Makefile b/tests/run-make-fulldeps/print-cfg/Makefile similarity index 100% rename from src/test/run-make-fulldeps/print-cfg/Makefile rename to tests/run-make-fulldeps/print-cfg/Makefile diff --git a/src/test/run-make-fulldeps/print-target-list/Makefile b/tests/run-make-fulldeps/print-target-list/Makefile similarity index 100% rename from src/test/run-make-fulldeps/print-target-list/Makefile rename to tests/run-make-fulldeps/print-target-list/Makefile diff --git a/src/test/run-make-fulldeps/profile/Makefile b/tests/run-make-fulldeps/profile/Makefile similarity index 100% rename from src/test/run-make-fulldeps/profile/Makefile rename to tests/run-make-fulldeps/profile/Makefile diff --git a/src/test/run-make-fulldeps/profile/test.rs b/tests/run-make-fulldeps/profile/test.rs similarity index 100% rename from src/test/run-make-fulldeps/profile/test.rs rename to tests/run-make-fulldeps/profile/test.rs diff --git a/src/test/run-make-fulldeps/prune-link-args/Makefile b/tests/run-make-fulldeps/prune-link-args/Makefile similarity index 100% rename from src/test/run-make-fulldeps/prune-link-args/Makefile rename to tests/run-make-fulldeps/prune-link-args/Makefile diff --git a/src/test/run-make-fulldeps/prune-link-args/empty.rs b/tests/run-make-fulldeps/prune-link-args/empty.rs similarity index 100% rename from src/test/run-make-fulldeps/prune-link-args/empty.rs rename to tests/run-make-fulldeps/prune-link-args/empty.rs diff --git a/src/test/run-make-fulldeps/redundant-libs/Makefile b/tests/run-make-fulldeps/redundant-libs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/redundant-libs/Makefile rename to tests/run-make-fulldeps/redundant-libs/Makefile diff --git a/src/test/run-make-fulldeps/redundant-libs/bar.c b/tests/run-make-fulldeps/redundant-libs/bar.c similarity index 100% rename from src/test/run-make-fulldeps/redundant-libs/bar.c rename to tests/run-make-fulldeps/redundant-libs/bar.c diff --git a/src/test/run-make-fulldeps/redundant-libs/baz.c b/tests/run-make-fulldeps/redundant-libs/baz.c similarity index 100% rename from src/test/run-make-fulldeps/redundant-libs/baz.c rename to tests/run-make-fulldeps/redundant-libs/baz.c diff --git a/src/test/run-make-fulldeps/redundant-libs/foo.c b/tests/run-make-fulldeps/redundant-libs/foo.c similarity index 100% rename from src/test/run-make-fulldeps/redundant-libs/foo.c rename to tests/run-make-fulldeps/redundant-libs/foo.c diff --git a/src/test/run-make-fulldeps/redundant-libs/main.rs b/tests/run-make-fulldeps/redundant-libs/main.rs similarity index 100% rename from src/test/run-make-fulldeps/redundant-libs/main.rs rename to tests/run-make-fulldeps/redundant-libs/main.rs diff --git a/src/test/run-make-fulldeps/relocation-model/Makefile b/tests/run-make-fulldeps/relocation-model/Makefile similarity index 100% rename from src/test/run-make-fulldeps/relocation-model/Makefile rename to tests/run-make-fulldeps/relocation-model/Makefile diff --git a/src/test/run-make-fulldeps/relocation-model/foo.rs b/tests/run-make-fulldeps/relocation-model/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/relocation-model/foo.rs rename to tests/run-make-fulldeps/relocation-model/foo.rs diff --git a/src/test/run-make-fulldeps/relro-levels/Makefile b/tests/run-make-fulldeps/relro-levels/Makefile similarity index 100% rename from src/test/run-make-fulldeps/relro-levels/Makefile rename to tests/run-make-fulldeps/relro-levels/Makefile diff --git a/src/test/run-make-fulldeps/relro-levels/hello.rs b/tests/run-make-fulldeps/relro-levels/hello.rs similarity index 100% rename from src/test/run-make-fulldeps/relro-levels/hello.rs rename to tests/run-make-fulldeps/relro-levels/hello.rs diff --git a/src/test/run-make-fulldeps/remap-path-prefix/Makefile b/tests/run-make-fulldeps/remap-path-prefix/Makefile similarity index 100% rename from src/test/run-make-fulldeps/remap-path-prefix/Makefile rename to tests/run-make-fulldeps/remap-path-prefix/Makefile diff --git a/src/test/run-make-fulldeps/remap-path-prefix/auxiliary/lib.rs b/tests/run-make-fulldeps/remap-path-prefix/auxiliary/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/remap-path-prefix/auxiliary/lib.rs rename to tests/run-make-fulldeps/remap-path-prefix/auxiliary/lib.rs diff --git a/src/test/run-make-fulldeps/reproducible-build-2/Makefile b/tests/run-make-fulldeps/reproducible-build-2/Makefile similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build-2/Makefile rename to tests/run-make-fulldeps/reproducible-build-2/Makefile diff --git a/src/test/run-make-fulldeps/reproducible-build-2/linker.rs b/tests/run-make-fulldeps/reproducible-build-2/linker.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build-2/linker.rs rename to tests/run-make-fulldeps/reproducible-build-2/linker.rs diff --git a/src/test/run-make-fulldeps/reproducible-build-2/reproducible-build-aux.rs b/tests/run-make-fulldeps/reproducible-build-2/reproducible-build-aux.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build-2/reproducible-build-aux.rs rename to tests/run-make-fulldeps/reproducible-build-2/reproducible-build-aux.rs diff --git a/src/test/run-make-fulldeps/reproducible-build-2/reproducible-build.rs b/tests/run-make-fulldeps/reproducible-build-2/reproducible-build.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build-2/reproducible-build.rs rename to tests/run-make-fulldeps/reproducible-build-2/reproducible-build.rs diff --git a/src/test/run-make-fulldeps/reproducible-build/Makefile b/tests/run-make-fulldeps/reproducible-build/Makefile similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build/Makefile rename to tests/run-make-fulldeps/reproducible-build/Makefile diff --git a/src/test/run-make-fulldeps/reproducible-build/linker.rs b/tests/run-make-fulldeps/reproducible-build/linker.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build/linker.rs rename to tests/run-make-fulldeps/reproducible-build/linker.rs diff --git a/src/test/run-make-fulldeps/reproducible-build/reproducible-build-aux.rs b/tests/run-make-fulldeps/reproducible-build/reproducible-build-aux.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build/reproducible-build-aux.rs rename to tests/run-make-fulldeps/reproducible-build/reproducible-build-aux.rs diff --git a/src/test/run-make-fulldeps/reproducible-build/reproducible-build.rs b/tests/run-make-fulldeps/reproducible-build/reproducible-build.rs similarity index 100% rename from src/test/run-make-fulldeps/reproducible-build/reproducible-build.rs rename to tests/run-make-fulldeps/reproducible-build/reproducible-build.rs diff --git a/src/test/run-make-fulldeps/resolve-rename/Makefile b/tests/run-make-fulldeps/resolve-rename/Makefile similarity index 100% rename from src/test/run-make-fulldeps/resolve-rename/Makefile rename to tests/run-make-fulldeps/resolve-rename/Makefile diff --git a/src/test/run-make-fulldeps/resolve-rename/bar.rs b/tests/run-make-fulldeps/resolve-rename/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/resolve-rename/bar.rs rename to tests/run-make-fulldeps/resolve-rename/bar.rs diff --git a/src/test/run-make-fulldeps/resolve-rename/baz.rs b/tests/run-make-fulldeps/resolve-rename/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/resolve-rename/baz.rs rename to tests/run-make-fulldeps/resolve-rename/baz.rs diff --git a/src/test/run-make-fulldeps/resolve-rename/foo.rs b/tests/run-make-fulldeps/resolve-rename/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/resolve-rename/foo.rs rename to tests/run-make-fulldeps/resolve-rename/foo.rs diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum-from-c/Makefile b/tests/run-make-fulldeps/return-non-c-like-enum-from-c/Makefile similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum-from-c/Makefile rename to tests/run-make-fulldeps/return-non-c-like-enum-from-c/Makefile diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum-from-c/nonclike.rs b/tests/run-make-fulldeps/return-non-c-like-enum-from-c/nonclike.rs similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum-from-c/nonclike.rs rename to tests/run-make-fulldeps/return-non-c-like-enum-from-c/nonclike.rs diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum-from-c/test.c b/tests/run-make-fulldeps/return-non-c-like-enum-from-c/test.c similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum-from-c/test.c rename to tests/run-make-fulldeps/return-non-c-like-enum-from-c/test.c diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum/Makefile b/tests/run-make-fulldeps/return-non-c-like-enum/Makefile similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum/Makefile rename to tests/run-make-fulldeps/return-non-c-like-enum/Makefile diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum/nonclike.rs b/tests/run-make-fulldeps/return-non-c-like-enum/nonclike.rs similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum/nonclike.rs rename to tests/run-make-fulldeps/return-non-c-like-enum/nonclike.rs diff --git a/src/test/run-make-fulldeps/return-non-c-like-enum/test.c b/tests/run-make-fulldeps/return-non-c-like-enum/test.c similarity index 100% rename from src/test/run-make-fulldeps/return-non-c-like-enum/test.c rename to tests/run-make-fulldeps/return-non-c-like-enum/test.c diff --git a/src/test/run-make-fulldeps/rlib-chain/Makefile b/tests/run-make-fulldeps/rlib-chain/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rlib-chain/Makefile rename to tests/run-make-fulldeps/rlib-chain/Makefile diff --git a/src/test/run-make-fulldeps/rlib-chain/m1.rs b/tests/run-make-fulldeps/rlib-chain/m1.rs similarity index 100% rename from src/test/run-make-fulldeps/rlib-chain/m1.rs rename to tests/run-make-fulldeps/rlib-chain/m1.rs diff --git a/src/test/run-make-fulldeps/rlib-chain/m2.rs b/tests/run-make-fulldeps/rlib-chain/m2.rs similarity index 100% rename from src/test/run-make-fulldeps/rlib-chain/m2.rs rename to tests/run-make-fulldeps/rlib-chain/m2.rs diff --git a/src/test/run-make-fulldeps/rlib-chain/m3.rs b/tests/run-make-fulldeps/rlib-chain/m3.rs similarity index 100% rename from src/test/run-make-fulldeps/rlib-chain/m3.rs rename to tests/run-make-fulldeps/rlib-chain/m3.rs diff --git a/src/test/run-make-fulldeps/rlib-chain/m4.rs b/tests/run-make-fulldeps/rlib-chain/m4.rs similarity index 100% rename from src/test/run-make-fulldeps/rlib-chain/m4.rs rename to tests/run-make-fulldeps/rlib-chain/m4.rs diff --git a/src/test/run-make-fulldeps/rustdoc-determinism/Makefile b/tests/run-make-fulldeps/rustdoc-determinism/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-determinism/Makefile rename to tests/run-make-fulldeps/rustdoc-determinism/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-determinism/bar.rs b/tests/run-make-fulldeps/rustdoc-determinism/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-determinism/bar.rs rename to tests/run-make-fulldeps/rustdoc-determinism/bar.rs diff --git a/src/test/run-make-fulldeps/rustdoc-determinism/foo.rs b/tests/run-make-fulldeps/rustdoc-determinism/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-determinism/foo.rs rename to tests/run-make-fulldeps/rustdoc-determinism/foo.rs diff --git a/src/test/run-make-fulldeps/rustdoc-error-lines/Makefile b/tests/run-make-fulldeps/rustdoc-error-lines/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-error-lines/Makefile rename to tests/run-make-fulldeps/rustdoc-error-lines/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-error-lines/input.rs b/tests/run-make-fulldeps/rustdoc-error-lines/input.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-error-lines/input.rs rename to tests/run-make-fulldeps/rustdoc-error-lines/input.rs diff --git a/src/test/run-make-fulldeps/rustdoc-io-error/Makefile b/tests/run-make-fulldeps/rustdoc-io-error/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-io-error/Makefile rename to tests/run-make-fulldeps/rustdoc-io-error/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-io-error/foo.rs b/tests/run-make-fulldeps/rustdoc-io-error/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-io-error/foo.rs rename to tests/run-make-fulldeps/rustdoc-io-error/foo.rs diff --git a/src/test/run-make-fulldeps/rustdoc-map-file/Makefile b/tests/run-make-fulldeps/rustdoc-map-file/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-map-file/Makefile rename to tests/run-make-fulldeps/rustdoc-map-file/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-map-file/expected.json b/tests/run-make-fulldeps/rustdoc-map-file/expected.json similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-map-file/expected.json rename to tests/run-make-fulldeps/rustdoc-map-file/expected.json diff --git a/src/test/run-make-fulldeps/rustdoc-map-file/foo.rs b/tests/run-make-fulldeps/rustdoc-map-file/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-map-file/foo.rs rename to tests/run-make-fulldeps/rustdoc-map-file/foo.rs diff --git a/src/test/run-make-fulldeps/rustdoc-map-file/validate_json.py b/tests/run-make-fulldeps/rustdoc-map-file/validate_json.py similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-map-file/validate_json.py rename to tests/run-make-fulldeps/rustdoc-map-file/validate_json.py diff --git a/src/test/run-make-fulldeps/rustdoc-output-path/Makefile b/tests/run-make-fulldeps/rustdoc-output-path/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-output-path/Makefile rename to tests/run-make-fulldeps/rustdoc-output-path/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-output-path/foo.rs b/tests/run-make-fulldeps/rustdoc-output-path/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-output-path/foo.rs rename to tests/run-make-fulldeps/rustdoc-output-path/foo.rs diff --git a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/Makefile b/tests/run-make-fulldeps/rustdoc-scrape-examples-macros/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/Makefile rename to tests/run-make-fulldeps/rustdoc-scrape-examples-macros/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/examples/ex.rs b/tests/run-make-fulldeps/rustdoc-scrape-examples-macros/examples/ex.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/examples/ex.rs rename to tests/run-make-fulldeps/rustdoc-scrape-examples-macros/examples/ex.rs diff --git a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs b/tests/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs rename to tests/run-make-fulldeps/rustdoc-scrape-examples-macros/src/lib.rs diff --git a/src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/proc.rs b/tests/run-make-fulldeps/rustdoc-scrape-examples-macros/src/proc.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-scrape-examples-macros/src/proc.rs rename to tests/run-make-fulldeps/rustdoc-scrape-examples-macros/src/proc.rs diff --git a/src/test/run-make-fulldeps/rustdoc-target-spec-json-path/Makefile b/tests/run-make-fulldeps/rustdoc-target-spec-json-path/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-target-spec-json-path/Makefile rename to tests/run-make-fulldeps/rustdoc-target-spec-json-path/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-target-spec-json-path/dummy_core.rs b/tests/run-make-fulldeps/rustdoc-target-spec-json-path/dummy_core.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-target-spec-json-path/dummy_core.rs rename to tests/run-make-fulldeps/rustdoc-target-spec-json-path/dummy_core.rs diff --git a/src/test/run-make-fulldeps/rustdoc-target-spec-json-path/my_crate.rs b/tests/run-make-fulldeps/rustdoc-target-spec-json-path/my_crate.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-target-spec-json-path/my_crate.rs rename to tests/run-make-fulldeps/rustdoc-target-spec-json-path/my_crate.rs diff --git a/src/test/run-make-fulldeps/rustdoc-target-spec-json-path/target.json b/tests/run-make-fulldeps/rustdoc-target-spec-json-path/target.json similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-target-spec-json-path/target.json rename to tests/run-make-fulldeps/rustdoc-target-spec-json-path/target.json diff --git a/src/test/run-make-fulldeps/rustdoc-themes/Makefile b/tests/run-make-fulldeps/rustdoc-themes/Makefile similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-themes/Makefile rename to tests/run-make-fulldeps/rustdoc-themes/Makefile diff --git a/src/test/run-make-fulldeps/rustdoc-themes/foo.rs b/tests/run-make-fulldeps/rustdoc-themes/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/rustdoc-themes/foo.rs rename to tests/run-make-fulldeps/rustdoc-themes/foo.rs diff --git a/src/test/run-make-fulldeps/sanitizer-cdylib-link/Makefile b/tests/run-make-fulldeps/sanitizer-cdylib-link/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-cdylib-link/Makefile rename to tests/run-make-fulldeps/sanitizer-cdylib-link/Makefile diff --git a/src/test/run-make-fulldeps/sanitizer-cdylib-link/library.rs b/tests/run-make-fulldeps/sanitizer-cdylib-link/library.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-cdylib-link/library.rs rename to tests/run-make-fulldeps/sanitizer-cdylib-link/library.rs diff --git a/src/test/run-make-fulldeps/sanitizer-cdylib-link/program.rs b/tests/run-make-fulldeps/sanitizer-cdylib-link/program.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-cdylib-link/program.rs rename to tests/run-make-fulldeps/sanitizer-cdylib-link/program.rs diff --git a/src/test/run-make-fulldeps/sanitizer-dylib-link/Makefile b/tests/run-make-fulldeps/sanitizer-dylib-link/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-dylib-link/Makefile rename to tests/run-make-fulldeps/sanitizer-dylib-link/Makefile diff --git a/src/test/run-make-fulldeps/sanitizer-dylib-link/library.rs b/tests/run-make-fulldeps/sanitizer-dylib-link/library.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-dylib-link/library.rs rename to tests/run-make-fulldeps/sanitizer-dylib-link/library.rs diff --git a/src/test/run-make-fulldeps/sanitizer-dylib-link/program.rs b/tests/run-make-fulldeps/sanitizer-dylib-link/program.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-dylib-link/program.rs rename to tests/run-make-fulldeps/sanitizer-dylib-link/program.rs diff --git a/src/test/run-make-fulldeps/sanitizer-staticlib-link/Makefile b/tests/run-make-fulldeps/sanitizer-staticlib-link/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-staticlib-link/Makefile rename to tests/run-make-fulldeps/sanitizer-staticlib-link/Makefile diff --git a/src/test/run-make-fulldeps/sanitizer-staticlib-link/library.rs b/tests/run-make-fulldeps/sanitizer-staticlib-link/library.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-staticlib-link/library.rs rename to tests/run-make-fulldeps/sanitizer-staticlib-link/library.rs diff --git a/src/test/run-make-fulldeps/sanitizer-staticlib-link/program.c b/tests/run-make-fulldeps/sanitizer-staticlib-link/program.c similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-staticlib-link/program.c rename to tests/run-make-fulldeps/sanitizer-staticlib-link/program.c diff --git a/src/test/run-make-fulldeps/sanitizer-staticlib-link/program.rs b/tests/run-make-fulldeps/sanitizer-staticlib-link/program.rs similarity index 100% rename from src/test/run-make-fulldeps/sanitizer-staticlib-link/program.rs rename to tests/run-make-fulldeps/sanitizer-staticlib-link/program.rs diff --git a/src/test/run-make-fulldeps/save-analysis-fail/Makefile b/tests/run-make-fulldeps/save-analysis-fail/Makefile similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/Makefile rename to tests/run-make-fulldeps/save-analysis-fail/Makefile diff --git a/src/test/run-make-fulldeps/save-analysis-fail/SameDir.rs b/tests/run-make-fulldeps/save-analysis-fail/SameDir.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/SameDir.rs rename to tests/run-make-fulldeps/save-analysis-fail/SameDir.rs diff --git a/src/test/run-make-fulldeps/save-analysis-fail/SameDir3.rs b/tests/run-make-fulldeps/save-analysis-fail/SameDir3.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/SameDir3.rs rename to tests/run-make-fulldeps/save-analysis-fail/SameDir3.rs diff --git a/src/test/run-make-fulldeps/save-analysis-fail/SubDir/mod.rs b/tests/run-make-fulldeps/save-analysis-fail/SubDir/mod.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/SubDir/mod.rs rename to tests/run-make-fulldeps/save-analysis-fail/SubDir/mod.rs diff --git a/src/test/run-make-fulldeps/save-analysis-fail/foo.rs b/tests/run-make-fulldeps/save-analysis-fail/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/foo.rs rename to tests/run-make-fulldeps/save-analysis-fail/foo.rs diff --git a/src/test/run-make-fulldeps/save-analysis-fail/krate2.rs b/tests/run-make-fulldeps/save-analysis-fail/krate2.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-fail/krate2.rs rename to tests/run-make-fulldeps/save-analysis-fail/krate2.rs diff --git a/src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile b/tests/run-make-fulldeps/save-analysis-rfc2126/Makefile similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile rename to tests/run-make-fulldeps/save-analysis-rfc2126/Makefile diff --git a/src/test/run-make-fulldeps/save-analysis-rfc2126/extern_absolute_paths.rs b/tests/run-make-fulldeps/save-analysis-rfc2126/extern_absolute_paths.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-rfc2126/extern_absolute_paths.rs rename to tests/run-make-fulldeps/save-analysis-rfc2126/extern_absolute_paths.rs diff --git a/src/test/run-make-fulldeps/save-analysis-rfc2126/krate2.rs b/tests/run-make-fulldeps/save-analysis-rfc2126/krate2.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-rfc2126/krate2.rs rename to tests/run-make-fulldeps/save-analysis-rfc2126/krate2.rs diff --git a/src/test/run-make-fulldeps/save-analysis-rfc2126/validate_json.py b/tests/run-make-fulldeps/save-analysis-rfc2126/validate_json.py similarity index 100% rename from src/test/run-make-fulldeps/save-analysis-rfc2126/validate_json.py rename to tests/run-make-fulldeps/save-analysis-rfc2126/validate_json.py diff --git a/src/test/run-make-fulldeps/save-analysis/Makefile b/tests/run-make-fulldeps/save-analysis/Makefile similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/Makefile rename to tests/run-make-fulldeps/save-analysis/Makefile diff --git a/src/test/run-make-fulldeps/save-analysis/SameDir.rs b/tests/run-make-fulldeps/save-analysis/SameDir.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/SameDir.rs rename to tests/run-make-fulldeps/save-analysis/SameDir.rs diff --git a/src/test/run-make-fulldeps/save-analysis/SameDir3.rs b/tests/run-make-fulldeps/save-analysis/SameDir3.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/SameDir3.rs rename to tests/run-make-fulldeps/save-analysis/SameDir3.rs diff --git a/src/test/run-make-fulldeps/save-analysis/SubDir/mod.rs b/tests/run-make-fulldeps/save-analysis/SubDir/mod.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/SubDir/mod.rs rename to tests/run-make-fulldeps/save-analysis/SubDir/mod.rs diff --git a/src/test/run-make-fulldeps/save-analysis/extra-docs.md b/tests/run-make-fulldeps/save-analysis/extra-docs.md similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/extra-docs.md rename to tests/run-make-fulldeps/save-analysis/extra-docs.md diff --git a/src/test/run-make-fulldeps/save-analysis/foo.rs b/tests/run-make-fulldeps/save-analysis/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/foo.rs rename to tests/run-make-fulldeps/save-analysis/foo.rs diff --git a/src/test/run-make-fulldeps/save-analysis/krate2.rs b/tests/run-make-fulldeps/save-analysis/krate2.rs similarity index 100% rename from src/test/run-make-fulldeps/save-analysis/krate2.rs rename to tests/run-make-fulldeps/save-analysis/krate2.rs diff --git a/src/test/run-make-fulldeps/separate-link-fail/Makefile b/tests/run-make-fulldeps/separate-link-fail/Makefile similarity index 100% rename from src/test/run-make-fulldeps/separate-link-fail/Makefile rename to tests/run-make-fulldeps/separate-link-fail/Makefile diff --git a/src/test/run-make-fulldeps/separate-link/Makefile b/tests/run-make-fulldeps/separate-link/Makefile similarity index 100% rename from src/test/run-make-fulldeps/separate-link/Makefile rename to tests/run-make-fulldeps/separate-link/Makefile diff --git a/src/test/run-make-fulldeps/sepcomp-cci-copies/Makefile b/tests/run-make-fulldeps/sepcomp-cci-copies/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-cci-copies/Makefile rename to tests/run-make-fulldeps/sepcomp-cci-copies/Makefile diff --git a/src/test/run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs b/tests/run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs rename to tests/run-make-fulldeps/sepcomp-cci-copies/cci_lib.rs diff --git a/src/test/run-make-fulldeps/sepcomp-cci-copies/foo.rs b/tests/run-make-fulldeps/sepcomp-cci-copies/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-cci-copies/foo.rs rename to tests/run-make-fulldeps/sepcomp-cci-copies/foo.rs diff --git a/src/test/run-make-fulldeps/sepcomp-inlining/Makefile b/tests/run-make-fulldeps/sepcomp-inlining/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-inlining/Makefile rename to tests/run-make-fulldeps/sepcomp-inlining/Makefile diff --git a/src/test/run-make-fulldeps/sepcomp-inlining/foo.rs b/tests/run-make-fulldeps/sepcomp-inlining/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-inlining/foo.rs rename to tests/run-make-fulldeps/sepcomp-inlining/foo.rs diff --git a/src/test/run-make-fulldeps/sepcomp-separate/Makefile b/tests/run-make-fulldeps/sepcomp-separate/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-separate/Makefile rename to tests/run-make-fulldeps/sepcomp-separate/Makefile diff --git a/src/test/run-make-fulldeps/sepcomp-separate/foo.rs b/tests/run-make-fulldeps/sepcomp-separate/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/sepcomp-separate/foo.rs rename to tests/run-make-fulldeps/sepcomp-separate/foo.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/Makefile b/tests/run-make-fulldeps/share-generics-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/Makefile rename to tests/run-make-fulldeps/share-generics-dylib/Makefile diff --git a/src/test/run-make-fulldeps/share-generics-dylib/instance_provider_a.rs b/tests/run-make-fulldeps/share-generics-dylib/instance_provider_a.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/instance_provider_a.rs rename to tests/run-make-fulldeps/share-generics-dylib/instance_provider_a.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/instance_provider_b.rs b/tests/run-make-fulldeps/share-generics-dylib/instance_provider_b.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/instance_provider_b.rs rename to tests/run-make-fulldeps/share-generics-dylib/instance_provider_b.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/instance_user_a_rlib.rs b/tests/run-make-fulldeps/share-generics-dylib/instance_user_a_rlib.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/instance_user_a_rlib.rs rename to tests/run-make-fulldeps/share-generics-dylib/instance_user_a_rlib.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/instance_user_b_rlib.rs b/tests/run-make-fulldeps/share-generics-dylib/instance_user_b_rlib.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/instance_user_b_rlib.rs rename to tests/run-make-fulldeps/share-generics-dylib/instance_user_b_rlib.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/instance_user_dylib.rs b/tests/run-make-fulldeps/share-generics-dylib/instance_user_dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/instance_user_dylib.rs rename to tests/run-make-fulldeps/share-generics-dylib/instance_user_dylib.rs diff --git a/src/test/run-make-fulldeps/share-generics-dylib/linked_leaf.rs b/tests/run-make-fulldeps/share-generics-dylib/linked_leaf.rs similarity index 100% rename from src/test/run-make-fulldeps/share-generics-dylib/linked_leaf.rs rename to tests/run-make-fulldeps/share-generics-dylib/linked_leaf.rs diff --git a/src/test/run-make-fulldeps/simd-ffi/Makefile b/tests/run-make-fulldeps/simd-ffi/Makefile similarity index 100% rename from src/test/run-make-fulldeps/simd-ffi/Makefile rename to tests/run-make-fulldeps/simd-ffi/Makefile diff --git a/src/test/run-make-fulldeps/simd-ffi/simd.rs b/tests/run-make-fulldeps/simd-ffi/simd.rs similarity index 100% rename from src/test/run-make-fulldeps/simd-ffi/simd.rs rename to tests/run-make-fulldeps/simd-ffi/simd.rs diff --git a/src/test/run-make-fulldeps/simple-dylib/Makefile b/tests/run-make-fulldeps/simple-dylib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/simple-dylib/Makefile rename to tests/run-make-fulldeps/simple-dylib/Makefile diff --git a/src/test/run-make-fulldeps/simple-dylib/bar.rs b/tests/run-make-fulldeps/simple-dylib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/simple-dylib/bar.rs rename to tests/run-make-fulldeps/simple-dylib/bar.rs diff --git a/src/test/run-make-fulldeps/simple-dylib/foo.rs b/tests/run-make-fulldeps/simple-dylib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/simple-dylib/foo.rs rename to tests/run-make-fulldeps/simple-dylib/foo.rs diff --git a/src/test/run-make-fulldeps/simple-rlib/Makefile b/tests/run-make-fulldeps/simple-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/simple-rlib/Makefile rename to tests/run-make-fulldeps/simple-rlib/Makefile diff --git a/src/test/run-make-fulldeps/simple-rlib/bar.rs b/tests/run-make-fulldeps/simple-rlib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/simple-rlib/bar.rs rename to tests/run-make-fulldeps/simple-rlib/bar.rs diff --git a/src/test/run-make-fulldeps/simple-rlib/foo.rs b/tests/run-make-fulldeps/simple-rlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/simple-rlib/foo.rs rename to tests/run-make-fulldeps/simple-rlib/foo.rs diff --git a/src/test/run-make-fulldeps/split-debuginfo/Makefile b/tests/run-make-fulldeps/split-debuginfo/Makefile similarity index 100% rename from src/test/run-make-fulldeps/split-debuginfo/Makefile rename to tests/run-make-fulldeps/split-debuginfo/Makefile diff --git a/src/test/run-make-fulldeps/split-debuginfo/bar.rs b/tests/run-make-fulldeps/split-debuginfo/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/split-debuginfo/bar.rs rename to tests/run-make-fulldeps/split-debuginfo/bar.rs diff --git a/src/test/run-make-fulldeps/split-debuginfo/baz.rs b/tests/run-make-fulldeps/split-debuginfo/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/split-debuginfo/baz.rs rename to tests/run-make-fulldeps/split-debuginfo/baz.rs diff --git a/src/test/run-make-fulldeps/split-debuginfo/foo.rs b/tests/run-make-fulldeps/split-debuginfo/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/split-debuginfo/foo.rs rename to tests/run-make-fulldeps/split-debuginfo/foo.rs diff --git a/src/test/run-make-fulldeps/split-debuginfo/main.rs b/tests/run-make-fulldeps/split-debuginfo/main.rs similarity index 100% rename from src/test/run-make-fulldeps/split-debuginfo/main.rs rename to tests/run-make-fulldeps/split-debuginfo/main.rs diff --git a/src/test/run-make-fulldeps/stable-symbol-names/Makefile b/tests/run-make-fulldeps/stable-symbol-names/Makefile similarity index 100% rename from src/test/run-make-fulldeps/stable-symbol-names/Makefile rename to tests/run-make-fulldeps/stable-symbol-names/Makefile diff --git a/src/test/run-make-fulldeps/stable-symbol-names/stable-symbol-names1.rs b/tests/run-make-fulldeps/stable-symbol-names/stable-symbol-names1.rs similarity index 100% rename from src/test/run-make-fulldeps/stable-symbol-names/stable-symbol-names1.rs rename to tests/run-make-fulldeps/stable-symbol-names/stable-symbol-names1.rs diff --git a/src/test/run-make-fulldeps/stable-symbol-names/stable-symbol-names2.rs b/tests/run-make-fulldeps/stable-symbol-names/stable-symbol-names2.rs similarity index 100% rename from src/test/run-make-fulldeps/stable-symbol-names/stable-symbol-names2.rs rename to tests/run-make-fulldeps/stable-symbol-names/stable-symbol-names2.rs diff --git a/src/test/run-make-fulldeps/static-dylib-by-default/Makefile b/tests/run-make-fulldeps/static-dylib-by-default/Makefile similarity index 100% rename from src/test/run-make-fulldeps/static-dylib-by-default/Makefile rename to tests/run-make-fulldeps/static-dylib-by-default/Makefile diff --git a/src/test/run-make-fulldeps/static-dylib-by-default/bar.rs b/tests/run-make-fulldeps/static-dylib-by-default/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/static-dylib-by-default/bar.rs rename to tests/run-make-fulldeps/static-dylib-by-default/bar.rs diff --git a/src/test/run-make-fulldeps/static-dylib-by-default/foo.rs b/tests/run-make-fulldeps/static-dylib-by-default/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/static-dylib-by-default/foo.rs rename to tests/run-make-fulldeps/static-dylib-by-default/foo.rs diff --git a/src/test/run-make-fulldeps/static-dylib-by-default/main.c b/tests/run-make-fulldeps/static-dylib-by-default/main.c similarity index 100% rename from src/test/run-make-fulldeps/static-dylib-by-default/main.c rename to tests/run-make-fulldeps/static-dylib-by-default/main.c diff --git a/src/test/run-make-fulldeps/static-extern-type/Makefile b/tests/run-make-fulldeps/static-extern-type/Makefile similarity index 100% rename from src/test/run-make-fulldeps/static-extern-type/Makefile rename to tests/run-make-fulldeps/static-extern-type/Makefile diff --git a/src/test/run-make-fulldeps/static-extern-type/define-foo.c b/tests/run-make-fulldeps/static-extern-type/define-foo.c similarity index 100% rename from src/test/run-make-fulldeps/static-extern-type/define-foo.c rename to tests/run-make-fulldeps/static-extern-type/define-foo.c diff --git a/src/test/run-make-fulldeps/static-extern-type/use-foo.rs b/tests/run-make-fulldeps/static-extern-type/use-foo.rs similarity index 100% rename from src/test/run-make-fulldeps/static-extern-type/use-foo.rs rename to tests/run-make-fulldeps/static-extern-type/use-foo.rs diff --git a/src/test/run-make-fulldeps/static-unwinding/Makefile b/tests/run-make-fulldeps/static-unwinding/Makefile similarity index 100% rename from src/test/run-make-fulldeps/static-unwinding/Makefile rename to tests/run-make-fulldeps/static-unwinding/Makefile diff --git a/src/test/run-make-fulldeps/static-unwinding/lib.rs b/tests/run-make-fulldeps/static-unwinding/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/static-unwinding/lib.rs rename to tests/run-make-fulldeps/static-unwinding/lib.rs diff --git a/src/test/run-make-fulldeps/static-unwinding/main.rs b/tests/run-make-fulldeps/static-unwinding/main.rs similarity index 100% rename from src/test/run-make-fulldeps/static-unwinding/main.rs rename to tests/run-make-fulldeps/static-unwinding/main.rs diff --git a/src/test/run-make-fulldeps/staticlib-blank-lib/Makefile b/tests/run-make-fulldeps/staticlib-blank-lib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/staticlib-blank-lib/Makefile rename to tests/run-make-fulldeps/staticlib-blank-lib/Makefile diff --git a/src/test/run-make-fulldeps/staticlib-blank-lib/foo.rs b/tests/run-make-fulldeps/staticlib-blank-lib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/staticlib-blank-lib/foo.rs rename to tests/run-make-fulldeps/staticlib-blank-lib/foo.rs diff --git a/src/test/run-make-fulldeps/std-core-cycle/Makefile b/tests/run-make-fulldeps/std-core-cycle/Makefile similarity index 100% rename from src/test/run-make-fulldeps/std-core-cycle/Makefile rename to tests/run-make-fulldeps/std-core-cycle/Makefile diff --git a/src/test/run-make-fulldeps/std-core-cycle/bar.rs b/tests/run-make-fulldeps/std-core-cycle/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/std-core-cycle/bar.rs rename to tests/run-make-fulldeps/std-core-cycle/bar.rs diff --git a/src/test/run-make-fulldeps/std-core-cycle/foo.rs b/tests/run-make-fulldeps/std-core-cycle/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/std-core-cycle/foo.rs rename to tests/run-make-fulldeps/std-core-cycle/foo.rs diff --git a/src/test/run-make-fulldeps/stdin-non-utf8/Makefile b/tests/run-make-fulldeps/stdin-non-utf8/Makefile similarity index 100% rename from src/test/run-make-fulldeps/stdin-non-utf8/Makefile rename to tests/run-make-fulldeps/stdin-non-utf8/Makefile diff --git a/src/test/run-make-fulldeps/stdin-non-utf8/non-utf8 b/tests/run-make-fulldeps/stdin-non-utf8/non-utf8 similarity index 100% rename from src/test/run-make-fulldeps/stdin-non-utf8/non-utf8 rename to tests/run-make-fulldeps/stdin-non-utf8/non-utf8 diff --git a/src/test/run-make-fulldeps/suspicious-library/Makefile b/tests/run-make-fulldeps/suspicious-library/Makefile similarity index 100% rename from src/test/run-make-fulldeps/suspicious-library/Makefile rename to tests/run-make-fulldeps/suspicious-library/Makefile diff --git a/src/test/run-make-fulldeps/suspicious-library/bar.rs b/tests/run-make-fulldeps/suspicious-library/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/suspicious-library/bar.rs rename to tests/run-make-fulldeps/suspicious-library/bar.rs diff --git a/src/test/run-make-fulldeps/suspicious-library/foo.rs b/tests/run-make-fulldeps/suspicious-library/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/suspicious-library/foo.rs rename to tests/run-make-fulldeps/suspicious-library/foo.rs diff --git a/src/test/run-make-fulldeps/symbol-visibility/Makefile b/tests/run-make-fulldeps/symbol-visibility/Makefile similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/Makefile rename to tests/run-make-fulldeps/symbol-visibility/Makefile diff --git a/src/test/run-make-fulldeps/symbol-visibility/a_cdylib.rs b/tests/run-make-fulldeps/symbol-visibility/a_cdylib.rs similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/a_cdylib.rs rename to tests/run-make-fulldeps/symbol-visibility/a_cdylib.rs diff --git a/src/test/run-make-fulldeps/symbol-visibility/a_proc_macro.rs b/tests/run-make-fulldeps/symbol-visibility/a_proc_macro.rs similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/a_proc_macro.rs rename to tests/run-make-fulldeps/symbol-visibility/a_proc_macro.rs diff --git a/src/test/run-make-fulldeps/symbol-visibility/a_rust_dylib.rs b/tests/run-make-fulldeps/symbol-visibility/a_rust_dylib.rs similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/a_rust_dylib.rs rename to tests/run-make-fulldeps/symbol-visibility/a_rust_dylib.rs diff --git a/src/test/run-make-fulldeps/symbol-visibility/an_executable.rs b/tests/run-make-fulldeps/symbol-visibility/an_executable.rs similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/an_executable.rs rename to tests/run-make-fulldeps/symbol-visibility/an_executable.rs diff --git a/src/test/run-make-fulldeps/symbol-visibility/an_rlib.rs b/tests/run-make-fulldeps/symbol-visibility/an_rlib.rs similarity index 100% rename from src/test/run-make-fulldeps/symbol-visibility/an_rlib.rs rename to tests/run-make-fulldeps/symbol-visibility/an_rlib.rs diff --git a/src/test/run-make-fulldeps/symbols-include-type-name/Makefile b/tests/run-make-fulldeps/symbols-include-type-name/Makefile similarity index 100% rename from src/test/run-make-fulldeps/symbols-include-type-name/Makefile rename to tests/run-make-fulldeps/symbols-include-type-name/Makefile diff --git a/src/test/run-make-fulldeps/symbols-include-type-name/lib.rs b/tests/run-make-fulldeps/symbols-include-type-name/lib.rs similarity index 100% rename from src/test/run-make-fulldeps/symbols-include-type-name/lib.rs rename to tests/run-make-fulldeps/symbols-include-type-name/lib.rs diff --git a/src/test/run-make-fulldeps/symlinked-extern/Makefile b/tests/run-make-fulldeps/symlinked-extern/Makefile similarity index 100% rename from src/test/run-make-fulldeps/symlinked-extern/Makefile rename to tests/run-make-fulldeps/symlinked-extern/Makefile diff --git a/src/test/run-make-fulldeps/symlinked-extern/bar.rs b/tests/run-make-fulldeps/symlinked-extern/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-extern/bar.rs rename to tests/run-make-fulldeps/symlinked-extern/bar.rs diff --git a/src/test/run-make-fulldeps/symlinked-extern/baz.rs b/tests/run-make-fulldeps/symlinked-extern/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-extern/baz.rs rename to tests/run-make-fulldeps/symlinked-extern/baz.rs diff --git a/src/test/run-make-fulldeps/symlinked-extern/foo.rs b/tests/run-make-fulldeps/symlinked-extern/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-extern/foo.rs rename to tests/run-make-fulldeps/symlinked-extern/foo.rs diff --git a/src/test/run-make-fulldeps/symlinked-libraries/Makefile b/tests/run-make-fulldeps/symlinked-libraries/Makefile similarity index 100% rename from src/test/run-make-fulldeps/symlinked-libraries/Makefile rename to tests/run-make-fulldeps/symlinked-libraries/Makefile diff --git a/src/test/run-make-fulldeps/symlinked-libraries/bar.rs b/tests/run-make-fulldeps/symlinked-libraries/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-libraries/bar.rs rename to tests/run-make-fulldeps/symlinked-libraries/bar.rs diff --git a/src/test/run-make-fulldeps/symlinked-libraries/foo.rs b/tests/run-make-fulldeps/symlinked-libraries/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-libraries/foo.rs rename to tests/run-make-fulldeps/symlinked-libraries/foo.rs diff --git a/src/test/run-make-fulldeps/symlinked-rlib/Makefile b/tests/run-make-fulldeps/symlinked-rlib/Makefile similarity index 100% rename from src/test/run-make-fulldeps/symlinked-rlib/Makefile rename to tests/run-make-fulldeps/symlinked-rlib/Makefile diff --git a/src/test/run-make-fulldeps/symlinked-rlib/bar.rs b/tests/run-make-fulldeps/symlinked-rlib/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-rlib/bar.rs rename to tests/run-make-fulldeps/symlinked-rlib/bar.rs diff --git a/src/test/run-make-fulldeps/symlinked-rlib/foo.rs b/tests/run-make-fulldeps/symlinked-rlib/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/symlinked-rlib/foo.rs rename to tests/run-make-fulldeps/symlinked-rlib/foo.rs diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile similarity index 100% rename from src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile rename to tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/test.py b/tests/run-make-fulldeps/sysroot-crates-are-unstable/test.py similarity index 100% rename from src/test/run-make-fulldeps/sysroot-crates-are-unstable/test.py rename to tests/run-make-fulldeps/sysroot-crates-are-unstable/test.py diff --git a/src/test/run-make-fulldeps/target-cpu-native/Makefile b/tests/run-make-fulldeps/target-cpu-native/Makefile similarity index 100% rename from src/test/run-make-fulldeps/target-cpu-native/Makefile rename to tests/run-make-fulldeps/target-cpu-native/Makefile diff --git a/src/test/run-make-fulldeps/target-cpu-native/foo.rs b/tests/run-make-fulldeps/target-cpu-native/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/target-cpu-native/foo.rs rename to tests/run-make-fulldeps/target-cpu-native/foo.rs diff --git a/src/test/run-make-fulldeps/target-specs/Makefile b/tests/run-make-fulldeps/target-specs/Makefile similarity index 100% rename from src/test/run-make-fulldeps/target-specs/Makefile rename to tests/run-make-fulldeps/target-specs/Makefile diff --git a/src/test/run-make-fulldeps/target-specs/definitely-not-builtin-target.json b/tests/run-make-fulldeps/target-specs/definitely-not-builtin-target.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/definitely-not-builtin-target.json rename to tests/run-make-fulldeps/target-specs/definitely-not-builtin-target.json diff --git a/src/test/run-make-fulldeps/target-specs/foo.rs b/tests/run-make-fulldeps/target-specs/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/target-specs/foo.rs rename to tests/run-make-fulldeps/target-specs/foo.rs diff --git a/src/test/run-make-fulldeps/target-specs/mismatching-data-layout.json b/tests/run-make-fulldeps/target-specs/mismatching-data-layout.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/mismatching-data-layout.json rename to tests/run-make-fulldeps/target-specs/mismatching-data-layout.json diff --git a/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json b/tests/run-make-fulldeps/target-specs/my-awesome-platform.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/my-awesome-platform.json rename to tests/run-make-fulldeps/target-specs/my-awesome-platform.json diff --git a/src/test/run-make-fulldeps/target-specs/my-incomplete-platform.json b/tests/run-make-fulldeps/target-specs/my-incomplete-platform.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/my-incomplete-platform.json rename to tests/run-make-fulldeps/target-specs/my-incomplete-platform.json diff --git a/src/test/run-make-fulldeps/target-specs/my-invalid-platform.json b/tests/run-make-fulldeps/target-specs/my-invalid-platform.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/my-invalid-platform.json rename to tests/run-make-fulldeps/target-specs/my-invalid-platform.json diff --git a/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/tests/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json similarity index 100% rename from src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json rename to tests/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json diff --git a/src/test/run-make-fulldeps/target-without-atomic-cas/Makefile b/tests/run-make-fulldeps/target-without-atomic-cas/Makefile similarity index 100% rename from src/test/run-make-fulldeps/target-without-atomic-cas/Makefile rename to tests/run-make-fulldeps/target-without-atomic-cas/Makefile diff --git a/src/test/run-make-fulldeps/test-harness/Makefile b/tests/run-make-fulldeps/test-harness/Makefile similarity index 100% rename from src/test/run-make-fulldeps/test-harness/Makefile rename to tests/run-make-fulldeps/test-harness/Makefile diff --git a/src/test/run-make-fulldeps/test-harness/test-ignore-cfg.rs b/tests/run-make-fulldeps/test-harness/test-ignore-cfg.rs similarity index 100% rename from src/test/run-make-fulldeps/test-harness/test-ignore-cfg.rs rename to tests/run-make-fulldeps/test-harness/test-ignore-cfg.rs diff --git a/src/test/run-make-fulldeps/tools.mk b/tests/run-make-fulldeps/tools.mk similarity index 100% rename from src/test/run-make-fulldeps/tools.mk rename to tests/run-make-fulldeps/tools.mk diff --git a/src/test/run-make-fulldeps/type-mismatch-same-crate-name/Makefile b/tests/run-make-fulldeps/type-mismatch-same-crate-name/Makefile similarity index 100% rename from src/test/run-make-fulldeps/type-mismatch-same-crate-name/Makefile rename to tests/run-make-fulldeps/type-mismatch-same-crate-name/Makefile diff --git a/src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateA.rs b/tests/run-make-fulldeps/type-mismatch-same-crate-name/crateA.rs similarity index 100% rename from src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateA.rs rename to tests/run-make-fulldeps/type-mismatch-same-crate-name/crateA.rs diff --git a/src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateB.rs b/tests/run-make-fulldeps/type-mismatch-same-crate-name/crateB.rs similarity index 100% rename from src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateB.rs rename to tests/run-make-fulldeps/type-mismatch-same-crate-name/crateB.rs diff --git a/src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateC.rs b/tests/run-make-fulldeps/type-mismatch-same-crate-name/crateC.rs similarity index 100% rename from src/test/run-make-fulldeps/type-mismatch-same-crate-name/crateC.rs rename to tests/run-make-fulldeps/type-mismatch-same-crate-name/crateC.rs diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile b/tests/run-make-fulldeps/use-extern-for-plugins/Makefile similarity index 100% rename from src/test/run-make-fulldeps/use-extern-for-plugins/Makefile rename to tests/run-make-fulldeps/use-extern-for-plugins/Makefile diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/bar.rs b/tests/run-make-fulldeps/use-extern-for-plugins/bar.rs similarity index 100% rename from src/test/run-make-fulldeps/use-extern-for-plugins/bar.rs rename to tests/run-make-fulldeps/use-extern-for-plugins/bar.rs diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/baz.rs b/tests/run-make-fulldeps/use-extern-for-plugins/baz.rs similarity index 100% rename from src/test/run-make-fulldeps/use-extern-for-plugins/baz.rs rename to tests/run-make-fulldeps/use-extern-for-plugins/baz.rs diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/foo.rs b/tests/run-make-fulldeps/use-extern-for-plugins/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/use-extern-for-plugins/foo.rs rename to tests/run-make-fulldeps/use-extern-for-plugins/foo.rs diff --git a/src/test/run-make-fulldeps/use-suggestions-rust-2018/Makefile b/tests/run-make-fulldeps/use-suggestions-rust-2018/Makefile similarity index 100% rename from src/test/run-make-fulldeps/use-suggestions-rust-2018/Makefile rename to tests/run-make-fulldeps/use-suggestions-rust-2018/Makefile diff --git a/src/test/run-make-fulldeps/use-suggestions-rust-2018/ep-nested-lib.rs b/tests/run-make-fulldeps/use-suggestions-rust-2018/ep-nested-lib.rs similarity index 100% rename from src/test/run-make-fulldeps/use-suggestions-rust-2018/ep-nested-lib.rs rename to tests/run-make-fulldeps/use-suggestions-rust-2018/ep-nested-lib.rs diff --git a/src/test/run-make-fulldeps/use-suggestions-rust-2018/use-suggestions.rs b/tests/run-make-fulldeps/use-suggestions-rust-2018/use-suggestions.rs similarity index 100% rename from src/test/run-make-fulldeps/use-suggestions-rust-2018/use-suggestions.rs rename to tests/run-make-fulldeps/use-suggestions-rust-2018/use-suggestions.rs diff --git a/src/test/run-make-fulldeps/used-cdylib-macos/Makefile b/tests/run-make-fulldeps/used-cdylib-macos/Makefile similarity index 100% rename from src/test/run-make-fulldeps/used-cdylib-macos/Makefile rename to tests/run-make-fulldeps/used-cdylib-macos/Makefile diff --git a/src/test/run-make-fulldeps/used-cdylib-macos/dylib_used.rs b/tests/run-make-fulldeps/used-cdylib-macos/dylib_used.rs similarity index 100% rename from src/test/run-make-fulldeps/used-cdylib-macos/dylib_used.rs rename to tests/run-make-fulldeps/used-cdylib-macos/dylib_used.rs diff --git a/src/test/run-make-fulldeps/used/Makefile b/tests/run-make-fulldeps/used/Makefile similarity index 100% rename from src/test/run-make-fulldeps/used/Makefile rename to tests/run-make-fulldeps/used/Makefile diff --git a/src/test/run-make-fulldeps/used/used.rs b/tests/run-make-fulldeps/used/used.rs similarity index 100% rename from src/test/run-make-fulldeps/used/used.rs rename to tests/run-make-fulldeps/used/used.rs diff --git a/src/test/run-make-fulldeps/version/Makefile b/tests/run-make-fulldeps/version/Makefile similarity index 100% rename from src/test/run-make-fulldeps/version/Makefile rename to tests/run-make-fulldeps/version/Makefile diff --git a/src/test/run-make-fulldeps/volatile-intrinsics/Makefile b/tests/run-make-fulldeps/volatile-intrinsics/Makefile similarity index 100% rename from src/test/run-make-fulldeps/volatile-intrinsics/Makefile rename to tests/run-make-fulldeps/volatile-intrinsics/Makefile diff --git a/src/test/run-make-fulldeps/volatile-intrinsics/main.rs b/tests/run-make-fulldeps/volatile-intrinsics/main.rs similarity index 100% rename from src/test/run-make-fulldeps/volatile-intrinsics/main.rs rename to tests/run-make-fulldeps/volatile-intrinsics/main.rs diff --git a/src/test/run-make-fulldeps/weird-output-filenames/Makefile b/tests/run-make-fulldeps/weird-output-filenames/Makefile similarity index 100% rename from src/test/run-make-fulldeps/weird-output-filenames/Makefile rename to tests/run-make-fulldeps/weird-output-filenames/Makefile diff --git a/src/test/run-make-fulldeps/weird-output-filenames/foo.rs b/tests/run-make-fulldeps/weird-output-filenames/foo.rs similarity index 100% rename from src/test/run-make-fulldeps/weird-output-filenames/foo.rs rename to tests/run-make-fulldeps/weird-output-filenames/foo.rs diff --git a/src/test/run-make-fulldeps/windows-binary-no-external-deps/Makefile b/tests/run-make-fulldeps/windows-binary-no-external-deps/Makefile similarity index 100% rename from src/test/run-make-fulldeps/windows-binary-no-external-deps/Makefile rename to tests/run-make-fulldeps/windows-binary-no-external-deps/Makefile diff --git a/src/test/run-make-fulldeps/windows-binary-no-external-deps/hello.rs b/tests/run-make-fulldeps/windows-binary-no-external-deps/hello.rs similarity index 100% rename from src/test/run-make-fulldeps/windows-binary-no-external-deps/hello.rs rename to tests/run-make-fulldeps/windows-binary-no-external-deps/hello.rs diff --git a/src/test/run-make-fulldeps/windows-spawn/Makefile b/tests/run-make-fulldeps/windows-spawn/Makefile similarity index 100% rename from src/test/run-make-fulldeps/windows-spawn/Makefile rename to tests/run-make-fulldeps/windows-spawn/Makefile diff --git a/src/test/run-make-fulldeps/windows-spawn/hello.rs b/tests/run-make-fulldeps/windows-spawn/hello.rs similarity index 100% rename from src/test/run-make-fulldeps/windows-spawn/hello.rs rename to tests/run-make-fulldeps/windows-spawn/hello.rs diff --git a/src/test/run-make-fulldeps/windows-spawn/spawn.rs b/tests/run-make-fulldeps/windows-spawn/spawn.rs similarity index 100% rename from src/test/run-make-fulldeps/windows-spawn/spawn.rs rename to tests/run-make-fulldeps/windows-spawn/spawn.rs diff --git a/src/test/run-make-fulldeps/windows-subsystem/Makefile b/tests/run-make-fulldeps/windows-subsystem/Makefile similarity index 100% rename from src/test/run-make-fulldeps/windows-subsystem/Makefile rename to tests/run-make-fulldeps/windows-subsystem/Makefile diff --git a/src/test/run-make-fulldeps/windows-subsystem/console.rs b/tests/run-make-fulldeps/windows-subsystem/console.rs similarity index 100% rename from src/test/run-make-fulldeps/windows-subsystem/console.rs rename to tests/run-make-fulldeps/windows-subsystem/console.rs diff --git a/src/test/run-make-fulldeps/windows-subsystem/windows.rs b/tests/run-make-fulldeps/windows-subsystem/windows.rs similarity index 100% rename from src/test/run-make-fulldeps/windows-subsystem/windows.rs rename to tests/run-make-fulldeps/windows-subsystem/windows.rs diff --git a/src/test/run-make/const_fn_mir/Makefile b/tests/run-make/const_fn_mir/Makefile similarity index 100% rename from src/test/run-make/const_fn_mir/Makefile rename to tests/run-make/const_fn_mir/Makefile diff --git a/src/test/run-make/const_fn_mir/dump.mir b/tests/run-make/const_fn_mir/dump.mir similarity index 100% rename from src/test/run-make/const_fn_mir/dump.mir rename to tests/run-make/const_fn_mir/dump.mir diff --git a/src/test/run-make/const_fn_mir/main.rs b/tests/run-make/const_fn_mir/main.rs similarity index 100% rename from src/test/run-make/const_fn_mir/main.rs rename to tests/run-make/const_fn_mir/main.rs diff --git a/src/test/run-make/coverage-llvmir/Makefile b/tests/run-make/coverage-llvmir/Makefile similarity index 100% rename from src/test/run-make/coverage-llvmir/Makefile rename to tests/run-make/coverage-llvmir/Makefile diff --git a/src/test/run-make/coverage-llvmir/filecheck.testprog.txt b/tests/run-make/coverage-llvmir/filecheck.testprog.txt similarity index 100% rename from src/test/run-make/coverage-llvmir/filecheck.testprog.txt rename to tests/run-make/coverage-llvmir/filecheck.testprog.txt diff --git a/src/test/run-make/coverage-llvmir/testprog.rs b/tests/run-make/coverage-llvmir/testprog.rs similarity index 100% rename from src/test/run-make/coverage-llvmir/testprog.rs rename to tests/run-make/coverage-llvmir/testprog.rs diff --git a/src/test/run-make/coverage-reports/Makefile b/tests/run-make/coverage-reports/Makefile similarity index 100% rename from src/test/run-make/coverage-reports/Makefile rename to tests/run-make/coverage-reports/Makefile diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.abort.txt b/tests/run-make/coverage-reports/expected_show_coverage.abort.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.abort.txt rename to tests/run-make/coverage-reports/expected_show_coverage.abort.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.assert.txt b/tests/run-make/coverage-reports/expected_show_coverage.assert.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.assert.txt rename to tests/run-make/coverage-reports/expected_show_coverage.assert.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.async.txt b/tests/run-make/coverage-reports/expected_show_coverage.async.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.async.txt rename to tests/run-make/coverage-reports/expected_show_coverage.async.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.async2.txt b/tests/run-make/coverage-reports/expected_show_coverage.async2.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.async2.txt rename to tests/run-make/coverage-reports/expected_show_coverage.async2.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.closure.txt b/tests/run-make/coverage-reports/expected_show_coverage.closure.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.closure.txt rename to tests/run-make/coverage-reports/expected_show_coverage.closure.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.closure_macro.txt b/tests/run-make/coverage-reports/expected_show_coverage.closure_macro.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.closure_macro.txt rename to tests/run-make/coverage-reports/expected_show_coverage.closure_macro.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.closure_macro_async.txt b/tests/run-make/coverage-reports/expected_show_coverage.closure_macro_async.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.closure_macro_async.txt rename to tests/run-make/coverage-reports/expected_show_coverage.closure_macro_async.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.conditions.txt b/tests/run-make/coverage-reports/expected_show_coverage.conditions.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.conditions.txt rename to tests/run-make/coverage-reports/expected_show_coverage.conditions.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.continue.txt b/tests/run-make/coverage-reports/expected_show_coverage.continue.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.continue.txt rename to tests/run-make/coverage-reports/expected_show_coverage.continue.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.dead_code.txt b/tests/run-make/coverage-reports/expected_show_coverage.dead_code.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.dead_code.txt rename to tests/run-make/coverage-reports/expected_show_coverage.dead_code.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.doctest.txt b/tests/run-make/coverage-reports/expected_show_coverage.doctest.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.doctest.txt rename to tests/run-make/coverage-reports/expected_show_coverage.doctest.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.drop_trait.txt b/tests/run-make/coverage-reports/expected_show_coverage.drop_trait.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.drop_trait.txt rename to tests/run-make/coverage-reports/expected_show_coverage.drop_trait.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.generator.txt b/tests/run-make/coverage-reports/expected_show_coverage.generator.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.generator.txt rename to tests/run-make/coverage-reports/expected_show_coverage.generator.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.generics.txt b/tests/run-make/coverage-reports/expected_show_coverage.generics.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.generics.txt rename to tests/run-make/coverage-reports/expected_show_coverage.generics.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.if.txt b/tests/run-make/coverage-reports/expected_show_coverage.if.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.if.txt rename to tests/run-make/coverage-reports/expected_show_coverage.if.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.if_else.txt b/tests/run-make/coverage-reports/expected_show_coverage.if_else.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.if_else.txt rename to tests/run-make/coverage-reports/expected_show_coverage.if_else.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.inline-dead.txt b/tests/run-make/coverage-reports/expected_show_coverage.inline-dead.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.inline-dead.txt rename to tests/run-make/coverage-reports/expected_show_coverage.inline-dead.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.inline.txt b/tests/run-make/coverage-reports/expected_show_coverage.inline.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.inline.txt rename to tests/run-make/coverage-reports/expected_show_coverage.inline.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.inner_items.txt b/tests/run-make/coverage-reports/expected_show_coverage.inner_items.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.inner_items.txt rename to tests/run-make/coverage-reports/expected_show_coverage.inner_items.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.issue-83601.txt b/tests/run-make/coverage-reports/expected_show_coverage.issue-83601.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.issue-83601.txt rename to tests/run-make/coverage-reports/expected_show_coverage.issue-83601.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.issue-84561.txt b/tests/run-make/coverage-reports/expected_show_coverage.issue-84561.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.issue-84561.txt rename to tests/run-make/coverage-reports/expected_show_coverage.issue-84561.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.issue-85461.txt b/tests/run-make/coverage-reports/expected_show_coverage.issue-85461.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.issue-85461.txt rename to tests/run-make/coverage-reports/expected_show_coverage.issue-85461.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.issue-93054.txt b/tests/run-make/coverage-reports/expected_show_coverage.issue-93054.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.issue-93054.txt rename to tests/run-make/coverage-reports/expected_show_coverage.issue-93054.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.lazy_boolean.txt b/tests/run-make/coverage-reports/expected_show_coverage.lazy_boolean.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.lazy_boolean.txt rename to tests/run-make/coverage-reports/expected_show_coverage.lazy_boolean.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.loop_break_value.txt b/tests/run-make/coverage-reports/expected_show_coverage.loop_break_value.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.loop_break_value.txt rename to tests/run-make/coverage-reports/expected_show_coverage.loop_break_value.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.loops_branches.txt b/tests/run-make/coverage-reports/expected_show_coverage.loops_branches.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.loops_branches.txt rename to tests/run-make/coverage-reports/expected_show_coverage.loops_branches.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.match_or_pattern.txt b/tests/run-make/coverage-reports/expected_show_coverage.match_or_pattern.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.match_or_pattern.txt rename to tests/run-make/coverage-reports/expected_show_coverage.match_or_pattern.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.nested_loops.txt b/tests/run-make/coverage-reports/expected_show_coverage.nested_loops.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.nested_loops.txt rename to tests/run-make/coverage-reports/expected_show_coverage.nested_loops.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.no_cov_crate.txt b/tests/run-make/coverage-reports/expected_show_coverage.no_cov_crate.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.no_cov_crate.txt rename to tests/run-make/coverage-reports/expected_show_coverage.no_cov_crate.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.overflow.txt b/tests/run-make/coverage-reports/expected_show_coverage.overflow.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.overflow.txt rename to tests/run-make/coverage-reports/expected_show_coverage.overflow.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.panic_unwind.txt b/tests/run-make/coverage-reports/expected_show_coverage.panic_unwind.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.panic_unwind.txt rename to tests/run-make/coverage-reports/expected_show_coverage.panic_unwind.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.partial_eq.txt b/tests/run-make/coverage-reports/expected_show_coverage.partial_eq.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.partial_eq.txt rename to tests/run-make/coverage-reports/expected_show_coverage.partial_eq.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.simple_loop.txt b/tests/run-make/coverage-reports/expected_show_coverage.simple_loop.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.simple_loop.txt rename to tests/run-make/coverage-reports/expected_show_coverage.simple_loop.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.simple_match.txt b/tests/run-make/coverage-reports/expected_show_coverage.simple_match.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.simple_match.txt rename to tests/run-make/coverage-reports/expected_show_coverage.simple_match.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.tight_inf_loop.txt b/tests/run-make/coverage-reports/expected_show_coverage.tight_inf_loop.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.tight_inf_loop.txt rename to tests/run-make/coverage-reports/expected_show_coverage.tight_inf_loop.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.try_error_result.txt b/tests/run-make/coverage-reports/expected_show_coverage.try_error_result.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.try_error_result.txt rename to tests/run-make/coverage-reports/expected_show_coverage.try_error_result.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.unused.txt b/tests/run-make/coverage-reports/expected_show_coverage.unused.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.unused.txt rename to tests/run-make/coverage-reports/expected_show_coverage.unused.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.unused_mod.txt b/tests/run-make/coverage-reports/expected_show_coverage.unused_mod.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.unused_mod.txt rename to tests/run-make/coverage-reports/expected_show_coverage.unused_mod.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.uses_crate.txt b/tests/run-make/coverage-reports/expected_show_coverage.uses_crate.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.uses_crate.txt rename to tests/run-make/coverage-reports/expected_show_coverage.uses_crate.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.uses_inline_crate.txt b/tests/run-make/coverage-reports/expected_show_coverage.uses_inline_crate.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.uses_inline_crate.txt rename to tests/run-make/coverage-reports/expected_show_coverage.uses_inline_crate.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.while.txt b/tests/run-make/coverage-reports/expected_show_coverage.while.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.while.txt rename to tests/run-make/coverage-reports/expected_show_coverage.while.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.while_early_ret.txt b/tests/run-make/coverage-reports/expected_show_coverage.while_early_ret.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.while_early_ret.txt rename to tests/run-make/coverage-reports/expected_show_coverage.while_early_ret.txt diff --git a/src/test/run-make/coverage-reports/expected_show_coverage.yield.txt b/tests/run-make/coverage-reports/expected_show_coverage.yield.txt similarity index 100% rename from src/test/run-make/coverage-reports/expected_show_coverage.yield.txt rename to tests/run-make/coverage-reports/expected_show_coverage.yield.txt diff --git a/src/test/run-make/coverage-reports/normalize_paths.py b/tests/run-make/coverage-reports/normalize_paths.py similarity index 100% rename from src/test/run-make/coverage-reports/normalize_paths.py rename to tests/run-make/coverage-reports/normalize_paths.py diff --git a/src/test/run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt b/tests/run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt similarity index 100% rename from src/test/run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt rename to tests/run-make/coverage/WARNING_KEEP_NAMES_SHORT.txt diff --git a/src/test/run-make/coverage/abort.rs b/tests/run-make/coverage/abort.rs similarity index 100% rename from src/test/run-make/coverage/abort.rs rename to tests/run-make/coverage/abort.rs diff --git a/src/test/run-make/coverage/assert.rs b/tests/run-make/coverage/assert.rs similarity index 100% rename from src/test/run-make/coverage/assert.rs rename to tests/run-make/coverage/assert.rs diff --git a/src/test/run-make/coverage/async.rs b/tests/run-make/coverage/async.rs similarity index 100% rename from src/test/run-make/coverage/async.rs rename to tests/run-make/coverage/async.rs diff --git a/src/test/run-make/coverage/async2.rs b/tests/run-make/coverage/async2.rs similarity index 100% rename from src/test/run-make/coverage/async2.rs rename to tests/run-make/coverage/async2.rs diff --git a/src/test/run-make/coverage/closure.rs b/tests/run-make/coverage/closure.rs similarity index 100% rename from src/test/run-make/coverage/closure.rs rename to tests/run-make/coverage/closure.rs diff --git a/src/test/run-make/coverage/closure_macro.rs b/tests/run-make/coverage/closure_macro.rs similarity index 100% rename from src/test/run-make/coverage/closure_macro.rs rename to tests/run-make/coverage/closure_macro.rs diff --git a/src/test/run-make/coverage/closure_macro_async.rs b/tests/run-make/coverage/closure_macro_async.rs similarity index 100% rename from src/test/run-make/coverage/closure_macro_async.rs rename to tests/run-make/coverage/closure_macro_async.rs diff --git a/src/test/run-make/coverage/compiletest-ignore-dir b/tests/run-make/coverage/compiletest-ignore-dir similarity index 100% rename from src/test/run-make/coverage/compiletest-ignore-dir rename to tests/run-make/coverage/compiletest-ignore-dir diff --git a/src/test/run-make/coverage/conditions.rs b/tests/run-make/coverage/conditions.rs similarity index 100% rename from src/test/run-make/coverage/conditions.rs rename to tests/run-make/coverage/conditions.rs diff --git a/src/test/run-make/coverage/continue.rs b/tests/run-make/coverage/continue.rs similarity index 100% rename from src/test/run-make/coverage/continue.rs rename to tests/run-make/coverage/continue.rs diff --git a/src/test/run-make/coverage/coverage_tools.mk b/tests/run-make/coverage/coverage_tools.mk similarity index 100% rename from src/test/run-make/coverage/coverage_tools.mk rename to tests/run-make/coverage/coverage_tools.mk diff --git a/src/test/run-make/coverage/dead_code.rs b/tests/run-make/coverage/dead_code.rs similarity index 100% rename from src/test/run-make/coverage/dead_code.rs rename to tests/run-make/coverage/dead_code.rs diff --git a/src/test/run-make/coverage/doctest.rs b/tests/run-make/coverage/doctest.rs similarity index 100% rename from src/test/run-make/coverage/doctest.rs rename to tests/run-make/coverage/doctest.rs diff --git a/src/test/run-make/coverage/drop_trait.rs b/tests/run-make/coverage/drop_trait.rs similarity index 100% rename from src/test/run-make/coverage/drop_trait.rs rename to tests/run-make/coverage/drop_trait.rs diff --git a/src/test/run-make/coverage/generator.rs b/tests/run-make/coverage/generator.rs similarity index 100% rename from src/test/run-make/coverage/generator.rs rename to tests/run-make/coverage/generator.rs diff --git a/src/test/run-make/coverage/generics.rs b/tests/run-make/coverage/generics.rs similarity index 100% rename from src/test/run-make/coverage/generics.rs rename to tests/run-make/coverage/generics.rs diff --git a/src/test/run-make/coverage/if.rs b/tests/run-make/coverage/if.rs similarity index 100% rename from src/test/run-make/coverage/if.rs rename to tests/run-make/coverage/if.rs diff --git a/src/test/run-make/coverage/if_else.rs b/tests/run-make/coverage/if_else.rs similarity index 100% rename from src/test/run-make/coverage/if_else.rs rename to tests/run-make/coverage/if_else.rs diff --git a/src/test/run-make/coverage/inline-dead.rs b/tests/run-make/coverage/inline-dead.rs similarity index 100% rename from src/test/run-make/coverage/inline-dead.rs rename to tests/run-make/coverage/inline-dead.rs diff --git a/src/test/run-make/coverage/inline.rs b/tests/run-make/coverage/inline.rs similarity index 100% rename from src/test/run-make/coverage/inline.rs rename to tests/run-make/coverage/inline.rs diff --git a/src/test/run-make/coverage/inner_items.rs b/tests/run-make/coverage/inner_items.rs similarity index 100% rename from src/test/run-make/coverage/inner_items.rs rename to tests/run-make/coverage/inner_items.rs diff --git a/src/test/run-make/coverage/issue-83601.rs b/tests/run-make/coverage/issue-83601.rs similarity index 100% rename from src/test/run-make/coverage/issue-83601.rs rename to tests/run-make/coverage/issue-83601.rs diff --git a/src/test/run-make/coverage/issue-84561.rs b/tests/run-make/coverage/issue-84561.rs similarity index 100% rename from src/test/run-make/coverage/issue-84561.rs rename to tests/run-make/coverage/issue-84561.rs diff --git a/src/test/run-make/coverage/issue-85461.rs b/tests/run-make/coverage/issue-85461.rs similarity index 100% rename from src/test/run-make/coverage/issue-85461.rs rename to tests/run-make/coverage/issue-85461.rs diff --git a/src/test/run-make/coverage/issue-93054.rs b/tests/run-make/coverage/issue-93054.rs similarity index 100% rename from src/test/run-make/coverage/issue-93054.rs rename to tests/run-make/coverage/issue-93054.rs diff --git a/src/test/run-make/coverage/lazy_boolean.rs b/tests/run-make/coverage/lazy_boolean.rs similarity index 100% rename from src/test/run-make/coverage/lazy_boolean.rs rename to tests/run-make/coverage/lazy_boolean.rs diff --git a/src/test/run-make/coverage/lib/doctest_crate.rs b/tests/run-make/coverage/lib/doctest_crate.rs similarity index 100% rename from src/test/run-make/coverage/lib/doctest_crate.rs rename to tests/run-make/coverage/lib/doctest_crate.rs diff --git a/src/test/run-make/coverage/lib/inline_always_with_dead_code.rs b/tests/run-make/coverage/lib/inline_always_with_dead_code.rs similarity index 100% rename from src/test/run-make/coverage/lib/inline_always_with_dead_code.rs rename to tests/run-make/coverage/lib/inline_always_with_dead_code.rs diff --git a/src/test/run-make/coverage/lib/unused_mod_helper.rs b/tests/run-make/coverage/lib/unused_mod_helper.rs similarity index 100% rename from src/test/run-make/coverage/lib/unused_mod_helper.rs rename to tests/run-make/coverage/lib/unused_mod_helper.rs diff --git a/src/test/run-make/coverage/lib/used_crate.rs b/tests/run-make/coverage/lib/used_crate.rs similarity index 100% rename from src/test/run-make/coverage/lib/used_crate.rs rename to tests/run-make/coverage/lib/used_crate.rs diff --git a/src/test/run-make/coverage/lib/used_inline_crate.rs b/tests/run-make/coverage/lib/used_inline_crate.rs similarity index 100% rename from src/test/run-make/coverage/lib/used_inline_crate.rs rename to tests/run-make/coverage/lib/used_inline_crate.rs diff --git a/src/test/run-make/coverage/loop_break_value.rs b/tests/run-make/coverage/loop_break_value.rs similarity index 100% rename from src/test/run-make/coverage/loop_break_value.rs rename to tests/run-make/coverage/loop_break_value.rs diff --git a/src/test/run-make/coverage/loops_branches.rs b/tests/run-make/coverage/loops_branches.rs similarity index 100% rename from src/test/run-make/coverage/loops_branches.rs rename to tests/run-make/coverage/loops_branches.rs diff --git a/src/test/run-make/coverage/match_or_pattern.rs b/tests/run-make/coverage/match_or_pattern.rs similarity index 100% rename from src/test/run-make/coverage/match_or_pattern.rs rename to tests/run-make/coverage/match_or_pattern.rs diff --git a/src/test/run-make/coverage/nested_loops.rs b/tests/run-make/coverage/nested_loops.rs similarity index 100% rename from src/test/run-make/coverage/nested_loops.rs rename to tests/run-make/coverage/nested_loops.rs diff --git a/src/test/run-make/coverage/no_cov_crate.rs b/tests/run-make/coverage/no_cov_crate.rs similarity index 100% rename from src/test/run-make/coverage/no_cov_crate.rs rename to tests/run-make/coverage/no_cov_crate.rs diff --git a/src/test/run-make/coverage/overflow.rs b/tests/run-make/coverage/overflow.rs similarity index 100% rename from src/test/run-make/coverage/overflow.rs rename to tests/run-make/coverage/overflow.rs diff --git a/src/test/run-make/coverage/panic_unwind.rs b/tests/run-make/coverage/panic_unwind.rs similarity index 100% rename from src/test/run-make/coverage/panic_unwind.rs rename to tests/run-make/coverage/panic_unwind.rs diff --git a/src/test/run-make/coverage/partial_eq.rs b/tests/run-make/coverage/partial_eq.rs similarity index 100% rename from src/test/run-make/coverage/partial_eq.rs rename to tests/run-make/coverage/partial_eq.rs diff --git a/src/test/run-make/coverage/simple_loop.rs b/tests/run-make/coverage/simple_loop.rs similarity index 100% rename from src/test/run-make/coverage/simple_loop.rs rename to tests/run-make/coverage/simple_loop.rs diff --git a/src/test/run-make/coverage/simple_match.rs b/tests/run-make/coverage/simple_match.rs similarity index 100% rename from src/test/run-make/coverage/simple_match.rs rename to tests/run-make/coverage/simple_match.rs diff --git a/src/test/run-make/coverage/tight_inf_loop.rs b/tests/run-make/coverage/tight_inf_loop.rs similarity index 100% rename from src/test/run-make/coverage/tight_inf_loop.rs rename to tests/run-make/coverage/tight_inf_loop.rs diff --git a/src/test/run-make/coverage/try_error_result.rs b/tests/run-make/coverage/try_error_result.rs similarity index 100% rename from src/test/run-make/coverage/try_error_result.rs rename to tests/run-make/coverage/try_error_result.rs diff --git a/src/test/run-make/coverage/unused.rs b/tests/run-make/coverage/unused.rs similarity index 100% rename from src/test/run-make/coverage/unused.rs rename to tests/run-make/coverage/unused.rs diff --git a/src/test/run-make/coverage/unused_mod.rs b/tests/run-make/coverage/unused_mod.rs similarity index 100% rename from src/test/run-make/coverage/unused_mod.rs rename to tests/run-make/coverage/unused_mod.rs diff --git a/src/test/run-make/coverage/uses_crate.rs b/tests/run-make/coverage/uses_crate.rs similarity index 100% rename from src/test/run-make/coverage/uses_crate.rs rename to tests/run-make/coverage/uses_crate.rs diff --git a/src/test/run-make/coverage/uses_inline_crate.rs b/tests/run-make/coverage/uses_inline_crate.rs similarity index 100% rename from src/test/run-make/coverage/uses_inline_crate.rs rename to tests/run-make/coverage/uses_inline_crate.rs diff --git a/src/test/run-make/coverage/while.rs b/tests/run-make/coverage/while.rs similarity index 100% rename from src/test/run-make/coverage/while.rs rename to tests/run-make/coverage/while.rs diff --git a/src/test/run-make/coverage/while_early_ret.rs b/tests/run-make/coverage/while_early_ret.rs similarity index 100% rename from src/test/run-make/coverage/while_early_ret.rs rename to tests/run-make/coverage/while_early_ret.rs diff --git a/src/test/run-make/coverage/yield.rs b/tests/run-make/coverage/yield.rs similarity index 100% rename from src/test/run-make/coverage/yield.rs rename to tests/run-make/coverage/yield.rs diff --git a/src/test/run-make/dep-graph/Makefile b/tests/run-make/dep-graph/Makefile similarity index 100% rename from src/test/run-make/dep-graph/Makefile rename to tests/run-make/dep-graph/Makefile diff --git a/src/test/run-make/dep-graph/foo.rs b/tests/run-make/dep-graph/foo.rs similarity index 100% rename from src/test/run-make/dep-graph/foo.rs rename to tests/run-make/dep-graph/foo.rs diff --git a/src/test/run-make/dump-mono-stats/Makefile b/tests/run-make/dump-mono-stats/Makefile similarity index 100% rename from src/test/run-make/dump-mono-stats/Makefile rename to tests/run-make/dump-mono-stats/Makefile diff --git a/src/test/run-make/dump-mono-stats/foo.rs b/tests/run-make/dump-mono-stats/foo.rs similarity index 100% rename from src/test/run-make/dump-mono-stats/foo.rs rename to tests/run-make/dump-mono-stats/foo.rs diff --git a/src/test/run-make/emit-named-files/Makefile b/tests/run-make/emit-named-files/Makefile similarity index 100% rename from src/test/run-make/emit-named-files/Makefile rename to tests/run-make/emit-named-files/Makefile diff --git a/src/test/run-make/emit-named-files/foo.rs b/tests/run-make/emit-named-files/foo.rs similarity index 100% rename from src/test/run-make/emit-named-files/foo.rs rename to tests/run-make/emit-named-files/foo.rs diff --git a/src/test/run-make/emit-path-unhashed/Makefile b/tests/run-make/emit-path-unhashed/Makefile similarity index 100% rename from src/test/run-make/emit-path-unhashed/Makefile rename to tests/run-make/emit-path-unhashed/Makefile diff --git a/src/test/run-make/emit-path-unhashed/foo.rs b/tests/run-make/emit-path-unhashed/foo.rs similarity index 100% rename from src/test/run-make/emit-path-unhashed/foo.rs rename to tests/run-make/emit-path-unhashed/foo.rs diff --git a/src/test/run-make/emit-shared-files/Makefile b/tests/run-make/emit-shared-files/Makefile similarity index 100% rename from src/test/run-make/emit-shared-files/Makefile rename to tests/run-make/emit-shared-files/Makefile diff --git a/src/test/run-make/emit-shared-files/x.rs b/tests/run-make/emit-shared-files/x.rs similarity index 100% rename from src/test/run-make/emit-shared-files/x.rs rename to tests/run-make/emit-shared-files/x.rs diff --git a/src/test/run-make/emit-shared-files/y.css b/tests/run-make/emit-shared-files/y.css similarity index 100% rename from src/test/run-make/emit-shared-files/y.css rename to tests/run-make/emit-shared-files/y.css diff --git a/src/test/run-make/emit-shared-files/z.css b/tests/run-make/emit-shared-files/z.css similarity index 100% rename from src/test/run-make/emit-shared-files/z.css rename to tests/run-make/emit-shared-files/z.css diff --git a/src/test/run-make/env-dep-info/Makefile b/tests/run-make/env-dep-info/Makefile similarity index 100% rename from src/test/run-make/env-dep-info/Makefile rename to tests/run-make/env-dep-info/Makefile diff --git a/src/test/run-make/env-dep-info/macro_def.rs b/tests/run-make/env-dep-info/macro_def.rs similarity index 100% rename from src/test/run-make/env-dep-info/macro_def.rs rename to tests/run-make/env-dep-info/macro_def.rs diff --git a/src/test/run-make/env-dep-info/macro_use.rs b/tests/run-make/env-dep-info/macro_use.rs similarity index 100% rename from src/test/run-make/env-dep-info/macro_use.rs rename to tests/run-make/env-dep-info/macro_use.rs diff --git a/src/test/run-make/env-dep-info/main.rs b/tests/run-make/env-dep-info/main.rs similarity index 100% rename from src/test/run-make/env-dep-info/main.rs rename to tests/run-make/env-dep-info/main.rs diff --git a/src/test/run-make/export-executable-symbols/Makefile b/tests/run-make/export-executable-symbols/Makefile similarity index 100% rename from src/test/run-make/export-executable-symbols/Makefile rename to tests/run-make/export-executable-symbols/Makefile diff --git a/src/test/run-make/export-executable-symbols/main.rs b/tests/run-make/export-executable-symbols/main.rs similarity index 100% rename from src/test/run-make/export-executable-symbols/main.rs rename to tests/run-make/export-executable-symbols/main.rs diff --git a/src/test/run-make/fmt-write-bloat/Makefile b/tests/run-make/fmt-write-bloat/Makefile similarity index 100% rename from src/test/run-make/fmt-write-bloat/Makefile rename to tests/run-make/fmt-write-bloat/Makefile diff --git a/src/test/run-make/fmt-write-bloat/main.rs b/tests/run-make/fmt-write-bloat/main.rs similarity index 100% rename from src/test/run-make/fmt-write-bloat/main.rs rename to tests/run-make/fmt-write-bloat/main.rs diff --git a/src/test/run-make/git_clone_sha1.sh b/tests/run-make/git_clone_sha1.sh similarity index 100% rename from src/test/run-make/git_clone_sha1.sh rename to tests/run-make/git_clone_sha1.sh diff --git a/src/test/run-make/incr-foreign-head-span/Makefile b/tests/run-make/incr-foreign-head-span/Makefile similarity index 100% rename from src/test/run-make/incr-foreign-head-span/Makefile rename to tests/run-make/incr-foreign-head-span/Makefile diff --git a/src/test/run-make/incr-foreign-head-span/first_crate.rs b/tests/run-make/incr-foreign-head-span/first_crate.rs similarity index 100% rename from src/test/run-make/incr-foreign-head-span/first_crate.rs rename to tests/run-make/incr-foreign-head-span/first_crate.rs diff --git a/src/test/run-make/incr-foreign-head-span/second_crate.rs b/tests/run-make/incr-foreign-head-span/second_crate.rs similarity index 100% rename from src/test/run-make/incr-foreign-head-span/second_crate.rs rename to tests/run-make/incr-foreign-head-span/second_crate.rs diff --git a/src/test/run-make/incr-prev-body-beyond-eof/Makefile b/tests/run-make/incr-prev-body-beyond-eof/Makefile similarity index 100% rename from src/test/run-make/incr-prev-body-beyond-eof/Makefile rename to tests/run-make/incr-prev-body-beyond-eof/Makefile diff --git a/src/test/run-make/incr-prev-body-beyond-eof/a.rs b/tests/run-make/incr-prev-body-beyond-eof/a.rs similarity index 100% rename from src/test/run-make/incr-prev-body-beyond-eof/a.rs rename to tests/run-make/incr-prev-body-beyond-eof/a.rs diff --git a/src/test/run-make/incr-prev-body-beyond-eof/b.rs b/tests/run-make/incr-prev-body-beyond-eof/b.rs similarity index 100% rename from src/test/run-make/incr-prev-body-beyond-eof/b.rs rename to tests/run-make/incr-prev-body-beyond-eof/b.rs diff --git a/src/test/run-make/incremental-session-fail/Makefile b/tests/run-make/incremental-session-fail/Makefile similarity index 100% rename from src/test/run-make/incremental-session-fail/Makefile rename to tests/run-make/incremental-session-fail/Makefile diff --git a/src/test/run-make/incremental-session-fail/foo.rs b/tests/run-make/incremental-session-fail/foo.rs similarity index 100% rename from src/test/run-make/incremental-session-fail/foo.rs rename to tests/run-make/incremental-session-fail/foo.rs diff --git a/src/test/run-make/invalid-so/Makefile b/tests/run-make/invalid-so/Makefile similarity index 100% rename from src/test/run-make/invalid-so/Makefile rename to tests/run-make/invalid-so/Makefile diff --git a/src/test/run-make/invalid-so/bar.rs b/tests/run-make/invalid-so/bar.rs similarity index 100% rename from src/test/run-make/invalid-so/bar.rs rename to tests/run-make/invalid-so/bar.rs diff --git a/src/test/run-make/issue-10971-temps-dir/Makefile b/tests/run-make/issue-10971-temps-dir/Makefile similarity index 100% rename from src/test/run-make/issue-10971-temps-dir/Makefile rename to tests/run-make/issue-10971-temps-dir/Makefile diff --git a/src/test/run-make/issue-36710/Makefile b/tests/run-make/issue-36710/Makefile similarity index 100% rename from src/test/run-make/issue-36710/Makefile rename to tests/run-make/issue-36710/Makefile diff --git a/src/test/run-make/issue-36710/foo.cpp b/tests/run-make/issue-36710/foo.cpp similarity index 100% rename from src/test/run-make/issue-36710/foo.cpp rename to tests/run-make/issue-36710/foo.cpp diff --git a/src/test/run-make/issue-36710/foo.rs b/tests/run-make/issue-36710/foo.rs similarity index 100% rename from src/test/run-make/issue-36710/foo.rs rename to tests/run-make/issue-36710/foo.rs diff --git a/src/test/run-make/issue-47384/Makefile b/tests/run-make/issue-47384/Makefile similarity index 100% rename from src/test/run-make/issue-47384/Makefile rename to tests/run-make/issue-47384/Makefile diff --git a/src/test/run-make/issue-47384/lib.rs b/tests/run-make/issue-47384/lib.rs similarity index 100% rename from src/test/run-make/issue-47384/lib.rs rename to tests/run-make/issue-47384/lib.rs diff --git a/src/test/run-make/issue-47384/linker.ld b/tests/run-make/issue-47384/linker.ld similarity index 100% rename from src/test/run-make/issue-47384/linker.ld rename to tests/run-make/issue-47384/linker.ld diff --git a/src/test/run-make/issue-47384/main.rs b/tests/run-make/issue-47384/main.rs similarity index 100% rename from src/test/run-make/issue-47384/main.rs rename to tests/run-make/issue-47384/main.rs diff --git a/src/test/run-make/issue-71519/Makefile b/tests/run-make/issue-71519/Makefile similarity index 100% rename from src/test/run-make/issue-71519/Makefile rename to tests/run-make/issue-71519/Makefile diff --git a/src/test/run-make/issue-71519/main.rs b/tests/run-make/issue-71519/main.rs similarity index 100% rename from src/test/run-make/issue-71519/main.rs rename to tests/run-make/issue-71519/main.rs diff --git a/src/test/run-make/issue-83112-incr-test-moved-file/Makefile b/tests/run-make/issue-83112-incr-test-moved-file/Makefile similarity index 100% rename from src/test/run-make/issue-83112-incr-test-moved-file/Makefile rename to tests/run-make/issue-83112-incr-test-moved-file/Makefile diff --git a/src/test/run-make/issue-83112-incr-test-moved-file/main.rs b/tests/run-make/issue-83112-incr-test-moved-file/main.rs similarity index 100% rename from src/test/run-make/issue-83112-incr-test-moved-file/main.rs rename to tests/run-make/issue-83112-incr-test-moved-file/main.rs diff --git a/src/test/run-make/issue-85019-moved-src-dir/Makefile b/tests/run-make/issue-85019-moved-src-dir/Makefile similarity index 100% rename from src/test/run-make/issue-85019-moved-src-dir/Makefile rename to tests/run-make/issue-85019-moved-src-dir/Makefile diff --git a/src/test/run-make/issue-85019-moved-src-dir/main.rs b/tests/run-make/issue-85019-moved-src-dir/main.rs similarity index 100% rename from src/test/run-make/issue-85019-moved-src-dir/main.rs rename to tests/run-make/issue-85019-moved-src-dir/main.rs diff --git a/src/test/run-make/issue-85019-moved-src-dir/my_lib.rs b/tests/run-make/issue-85019-moved-src-dir/my_lib.rs similarity index 100% rename from src/test/run-make/issue-85019-moved-src-dir/my_lib.rs rename to tests/run-make/issue-85019-moved-src-dir/my_lib.rs diff --git a/src/test/run-make/issue-85401-static-mir/Makefile b/tests/run-make/issue-85401-static-mir/Makefile similarity index 100% rename from src/test/run-make/issue-85401-static-mir/Makefile rename to tests/run-make/issue-85401-static-mir/Makefile diff --git a/src/test/run-make/issue-85401-static-mir/bar.rs b/tests/run-make/issue-85401-static-mir/bar.rs similarity index 100% rename from src/test/run-make/issue-85401-static-mir/bar.rs rename to tests/run-make/issue-85401-static-mir/bar.rs diff --git a/src/test/run-make/issue-85401-static-mir/baz.rs b/tests/run-make/issue-85401-static-mir/baz.rs similarity index 100% rename from src/test/run-make/issue-85401-static-mir/baz.rs rename to tests/run-make/issue-85401-static-mir/baz.rs diff --git a/src/test/run-make/issue-85401-static-mir/foo.rs b/tests/run-make/issue-85401-static-mir/foo.rs similarity index 100% rename from src/test/run-make/issue-85401-static-mir/foo.rs rename to tests/run-make/issue-85401-static-mir/foo.rs diff --git a/src/test/run-make/issue-85441/Makefile b/tests/run-make/issue-85441/Makefile similarity index 100% rename from src/test/run-make/issue-85441/Makefile rename to tests/run-make/issue-85441/Makefile diff --git a/src/test/run-make/issue-85441/empty.rs b/tests/run-make/issue-85441/empty.rs similarity index 100% rename from src/test/run-make/issue-85441/empty.rs rename to tests/run-make/issue-85441/empty.rs diff --git a/src/test/run-make/issue-88756-default-output/Makefile b/tests/run-make/issue-88756-default-output/Makefile similarity index 100% rename from src/test/run-make/issue-88756-default-output/Makefile rename to tests/run-make/issue-88756-default-output/Makefile diff --git a/src/test/run-make/issue-88756-default-output/README.md b/tests/run-make/issue-88756-default-output/README.md similarity index 100% rename from src/test/run-make/issue-88756-default-output/README.md rename to tests/run-make/issue-88756-default-output/README.md diff --git a/src/test/run-make/issue-88756-default-output/output-default.stdout b/tests/run-make/issue-88756-default-output/output-default.stdout similarity index 100% rename from src/test/run-make/issue-88756-default-output/output-default.stdout rename to tests/run-make/issue-88756-default-output/output-default.stdout diff --git a/src/test/run-make/issue-88756-default-output/x.rs b/tests/run-make/issue-88756-default-output/x.rs similarity index 100% rename from src/test/run-make/issue-88756-default-output/x.rs rename to tests/run-make/issue-88756-default-output/x.rs diff --git a/src/test/run-make/issue-96498/Makefile b/tests/run-make/issue-96498/Makefile similarity index 100% rename from src/test/run-make/issue-96498/Makefile rename to tests/run-make/issue-96498/Makefile diff --git a/src/test/run-make/issue-96498/foo.rs b/tests/run-make/issue-96498/foo.rs similarity index 100% rename from src/test/run-make/issue-96498/foo.rs rename to tests/run-make/issue-96498/foo.rs diff --git a/src/test/run-make/libtest-thread-limit/Makefile b/tests/run-make/libtest-thread-limit/Makefile similarity index 100% rename from src/test/run-make/libtest-thread-limit/Makefile rename to tests/run-make/libtest-thread-limit/Makefile diff --git a/src/test/run-make/libtest-thread-limit/test.rs b/tests/run-make/libtest-thread-limit/test.rs similarity index 100% rename from src/test/run-make/libtest-thread-limit/test.rs rename to tests/run-make/libtest-thread-limit/test.rs diff --git a/src/test/run-make/llvm-outputs/Makefile b/tests/run-make/llvm-outputs/Makefile similarity index 100% rename from src/test/run-make/llvm-outputs/Makefile rename to tests/run-make/llvm-outputs/Makefile diff --git a/src/test/run-make/macos-deployment-target/Makefile b/tests/run-make/macos-deployment-target/Makefile similarity index 100% rename from src/test/run-make/macos-deployment-target/Makefile rename to tests/run-make/macos-deployment-target/Makefile diff --git a/src/test/run-make/macos-deployment-target/with_deployment_target.rs b/tests/run-make/macos-deployment-target/with_deployment_target.rs similarity index 100% rename from src/test/run-make/macos-deployment-target/with_deployment_target.rs rename to tests/run-make/macos-deployment-target/with_deployment_target.rs diff --git a/src/test/run-make/macos-fat-archive/Makefile b/tests/run-make/macos-fat-archive/Makefile similarity index 100% rename from src/test/run-make/macos-fat-archive/Makefile rename to tests/run-make/macos-fat-archive/Makefile diff --git a/src/test/run-make/macos-fat-archive/lib.rs b/tests/run-make/macos-fat-archive/lib.rs similarity index 100% rename from src/test/run-make/macos-fat-archive/lib.rs rename to tests/run-make/macos-fat-archive/lib.rs diff --git a/src/test/run-make/macos-fat-archive/native-library.c b/tests/run-make/macos-fat-archive/native-library.c similarity index 100% rename from src/test/run-make/macos-fat-archive/native-library.c rename to tests/run-make/macos-fat-archive/native-library.c diff --git a/src/test/run-make/native-link-modifier-bundle/Makefile b/tests/run-make/native-link-modifier-bundle/Makefile similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/Makefile rename to tests/run-make/native-link-modifier-bundle/Makefile diff --git a/src/test/run-make/native-link-modifier-bundle/bundled.rs b/tests/run-make/native-link-modifier-bundle/bundled.rs similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/bundled.rs rename to tests/run-make/native-link-modifier-bundle/bundled.rs diff --git a/src/test/run-make/native-link-modifier-bundle/cdylib-bundled.rs b/tests/run-make/native-link-modifier-bundle/cdylib-bundled.rs similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/cdylib-bundled.rs rename to tests/run-make/native-link-modifier-bundle/cdylib-bundled.rs diff --git a/src/test/run-make/native-link-modifier-bundle/cdylib-non-bundled.rs b/tests/run-make/native-link-modifier-bundle/cdylib-non-bundled.rs similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/cdylib-non-bundled.rs rename to tests/run-make/native-link-modifier-bundle/cdylib-non-bundled.rs diff --git a/src/test/run-make/native-link-modifier-bundle/native-staticlib.c b/tests/run-make/native-link-modifier-bundle/native-staticlib.c similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/native-staticlib.c rename to tests/run-make/native-link-modifier-bundle/native-staticlib.c diff --git a/src/test/run-make/native-link-modifier-bundle/non-bundled.rs b/tests/run-make/native-link-modifier-bundle/non-bundled.rs similarity index 100% rename from src/test/run-make/native-link-modifier-bundle/non-bundled.rs rename to tests/run-make/native-link-modifier-bundle/non-bundled.rs diff --git a/src/test/run-make/native-link-modifier-verbatim-linker/Makefile b/tests/run-make/native-link-modifier-verbatim-linker/Makefile similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-linker/Makefile rename to tests/run-make/native-link-modifier-verbatim-linker/Makefile diff --git a/src/test/run-make/native-link-modifier-verbatim-linker/local_native_dep.rs b/tests/run-make/native-link-modifier-verbatim-linker/local_native_dep.rs similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-linker/local_native_dep.rs rename to tests/run-make/native-link-modifier-verbatim-linker/local_native_dep.rs diff --git a/src/test/run-make/native-link-modifier-verbatim-linker/main.rs b/tests/run-make/native-link-modifier-verbatim-linker/main.rs similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-linker/main.rs rename to tests/run-make/native-link-modifier-verbatim-linker/main.rs diff --git a/src/test/run-make/native-link-modifier-verbatim-rustc/Makefile b/tests/run-make/native-link-modifier-verbatim-rustc/Makefile similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-rustc/Makefile rename to tests/run-make/native-link-modifier-verbatim-rustc/Makefile diff --git a/src/test/run-make/native-link-modifier-verbatim-rustc/rust_dep.rs b/tests/run-make/native-link-modifier-verbatim-rustc/rust_dep.rs similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-rustc/rust_dep.rs rename to tests/run-make/native-link-modifier-verbatim-rustc/rust_dep.rs diff --git a/src/test/run-make/native-link-modifier-verbatim-rustc/upstream_native_dep.rs b/tests/run-make/native-link-modifier-verbatim-rustc/upstream_native_dep.rs similarity index 100% rename from src/test/run-make/native-link-modifier-verbatim-rustc/upstream_native_dep.rs rename to tests/run-make/native-link-modifier-verbatim-rustc/upstream_native_dep.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/Makefile b/tests/run-make/native-link-modifier-whole-archive/Makefile similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/Makefile rename to tests/run-make/native-link-modifier-whole-archive/Makefile diff --git a/src/test/run-make/native-link-modifier-whole-archive/c_static_lib_with_constructor.cpp b/tests/run-make/native-link-modifier-whole-archive/c_static_lib_with_constructor.cpp similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/c_static_lib_with_constructor.cpp rename to tests/run-make/native-link-modifier-whole-archive/c_static_lib_with_constructor.cpp diff --git a/src/test/run-make/native-link-modifier-whole-archive/directly_linked.rs b/tests/run-make/native-link-modifier-whole-archive/directly_linked.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/directly_linked.rs rename to tests/run-make/native-link-modifier-whole-archive/directly_linked.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/directly_linked_test_minus_whole_archive.rs b/tests/run-make/native-link-modifier-whole-archive/directly_linked_test_minus_whole_archive.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/directly_linked_test_minus_whole_archive.rs rename to tests/run-make/native-link-modifier-whole-archive/directly_linked_test_minus_whole_archive.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/directly_linked_test_plus_whole_archive.rs b/tests/run-make/native-link-modifier-whole-archive/directly_linked_test_plus_whole_archive.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/directly_linked_test_plus_whole_archive.rs rename to tests/run-make/native-link-modifier-whole-archive/directly_linked_test_plus_whole_archive.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/indirectly_linked.rs b/tests/run-make/native-link-modifier-whole-archive/indirectly_linked.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/indirectly_linked.rs rename to tests/run-make/native-link-modifier-whole-archive/indirectly_linked.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/indirectly_linked_via_attr.rs b/tests/run-make/native-link-modifier-whole-archive/indirectly_linked_via_attr.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/indirectly_linked_via_attr.rs rename to tests/run-make/native-link-modifier-whole-archive/indirectly_linked_via_attr.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/native_lib_in_src.rs b/tests/run-make/native-link-modifier-whole-archive/native_lib_in_src.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/native_lib_in_src.rs rename to tests/run-make/native-link-modifier-whole-archive/native_lib_in_src.rs diff --git a/src/test/run-make/native-link-modifier-whole-archive/rlib_with_cmdline_native_lib.rs b/tests/run-make/native-link-modifier-whole-archive/rlib_with_cmdline_native_lib.rs similarity index 100% rename from src/test/run-make/native-link-modifier-whole-archive/rlib_with_cmdline_native_lib.rs rename to tests/run-make/native-link-modifier-whole-archive/rlib_with_cmdline_native_lib.rs diff --git a/src/test/run-make/pass-linker-flags-from-dep/Makefile b/tests/run-make/pass-linker-flags-from-dep/Makefile similarity index 100% rename from src/test/run-make/pass-linker-flags-from-dep/Makefile rename to tests/run-make/pass-linker-flags-from-dep/Makefile diff --git a/src/test/run-make/pass-linker-flags-from-dep/main.rs b/tests/run-make/pass-linker-flags-from-dep/main.rs similarity index 100% rename from src/test/run-make/pass-linker-flags-from-dep/main.rs rename to tests/run-make/pass-linker-flags-from-dep/main.rs diff --git a/src/test/run-make/pass-linker-flags-from-dep/native_dep_1.rs b/tests/run-make/pass-linker-flags-from-dep/native_dep_1.rs similarity index 100% rename from src/test/run-make/pass-linker-flags-from-dep/native_dep_1.rs rename to tests/run-make/pass-linker-flags-from-dep/native_dep_1.rs diff --git a/src/test/run-make/pass-linker-flags-from-dep/native_dep_2.rs b/tests/run-make/pass-linker-flags-from-dep/native_dep_2.rs similarity index 100% rename from src/test/run-make/pass-linker-flags-from-dep/native_dep_2.rs rename to tests/run-make/pass-linker-flags-from-dep/native_dep_2.rs diff --git a/src/test/run-make/pass-linker-flags-from-dep/rust_dep.rs b/tests/run-make/pass-linker-flags-from-dep/rust_dep.rs similarity index 100% rename from src/test/run-make/pass-linker-flags-from-dep/rust_dep.rs rename to tests/run-make/pass-linker-flags-from-dep/rust_dep.rs diff --git a/src/test/run-make/pass-linker-flags/Makefile b/tests/run-make/pass-linker-flags/Makefile similarity index 100% rename from src/test/run-make/pass-linker-flags/Makefile rename to tests/run-make/pass-linker-flags/Makefile diff --git a/src/test/run-make/pass-linker-flags/rs.rs b/tests/run-make/pass-linker-flags/rs.rs similarity index 100% rename from src/test/run-make/pass-linker-flags/rs.rs rename to tests/run-make/pass-linker-flags/rs.rs diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/Makefile b/tests/run-make/raw-dylib-alt-calling-convention/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/Makefile rename to tests/run-make/raw-dylib-alt-calling-convention/Makefile diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/driver.rs b/tests/run-make/raw-dylib-alt-calling-convention/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/driver.rs rename to tests/run-make/raw-dylib-alt-calling-convention/driver.rs diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/extern.c b/tests/run-make/raw-dylib-alt-calling-convention/extern.c similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/extern.c rename to tests/run-make/raw-dylib-alt-calling-convention/extern.c diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/lib.rs b/tests/run-make/raw-dylib-alt-calling-convention/lib.rs similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/lib.rs rename to tests/run-make/raw-dylib-alt-calling-convention/lib.rs diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt b/tests/run-make/raw-dylib-alt-calling-convention/output.msvc.txt similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/output.msvc.txt rename to tests/run-make/raw-dylib-alt-calling-convention/output.msvc.txt diff --git a/src/test/run-make/raw-dylib-alt-calling-convention/output.txt b/tests/run-make/raw-dylib-alt-calling-convention/output.txt similarity index 100% rename from src/test/run-make/raw-dylib-alt-calling-convention/output.txt rename to tests/run-make/raw-dylib-alt-calling-convention/output.txt diff --git a/src/test/run-make/raw-dylib-c/Makefile b/tests/run-make/raw-dylib-c/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-c/Makefile rename to tests/run-make/raw-dylib-c/Makefile diff --git a/src/test/run-make/raw-dylib-c/driver.rs b/tests/run-make/raw-dylib-c/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-c/driver.rs rename to tests/run-make/raw-dylib-c/driver.rs diff --git a/src/test/run-make/raw-dylib-c/extern_1.c b/tests/run-make/raw-dylib-c/extern_1.c similarity index 100% rename from src/test/run-make/raw-dylib-c/extern_1.c rename to tests/run-make/raw-dylib-c/extern_1.c diff --git a/src/test/run-make/raw-dylib-c/extern_2.c b/tests/run-make/raw-dylib-c/extern_2.c similarity index 100% rename from src/test/run-make/raw-dylib-c/extern_2.c rename to tests/run-make/raw-dylib-c/extern_2.c diff --git a/src/test/run-make/raw-dylib-c/lib.rs b/tests/run-make/raw-dylib-c/lib.rs similarity index 100% rename from src/test/run-make/raw-dylib-c/lib.rs rename to tests/run-make/raw-dylib-c/lib.rs diff --git a/src/test/run-make/raw-dylib-c/output.txt b/tests/run-make/raw-dylib-c/output.txt similarity index 100% rename from src/test/run-make/raw-dylib-c/output.txt rename to tests/run-make/raw-dylib-c/output.txt diff --git a/src/test/run-make/raw-dylib-import-name-type/Makefile b/tests/run-make/raw-dylib-import-name-type/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/Makefile rename to tests/run-make/raw-dylib-import-name-type/Makefile diff --git a/src/test/run-make/raw-dylib-import-name-type/driver.rs b/tests/run-make/raw-dylib-import-name-type/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/driver.rs rename to tests/run-make/raw-dylib-import-name-type/driver.rs diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.c b/tests/run-make/raw-dylib-import-name-type/extern.c similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/extern.c rename to tests/run-make/raw-dylib-import-name-type/extern.c diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.gnu.def b/tests/run-make/raw-dylib-import-name-type/extern.gnu.def similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/extern.gnu.def rename to tests/run-make/raw-dylib-import-name-type/extern.gnu.def diff --git a/src/test/run-make/raw-dylib-import-name-type/extern.msvc.def b/tests/run-make/raw-dylib-import-name-type/extern.msvc.def similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/extern.msvc.def rename to tests/run-make/raw-dylib-import-name-type/extern.msvc.def diff --git a/src/test/run-make/raw-dylib-import-name-type/output.txt b/tests/run-make/raw-dylib-import-name-type/output.txt similarity index 100% rename from src/test/run-make/raw-dylib-import-name-type/output.txt rename to tests/run-make/raw-dylib-import-name-type/output.txt diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/Makefile b/tests/run-make/raw-dylib-inline-cross-dylib/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/Makefile rename to tests/run-make/raw-dylib-inline-cross-dylib/Makefile diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/driver.rs b/tests/run-make/raw-dylib-inline-cross-dylib/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/driver.rs rename to tests/run-make/raw-dylib-inline-cross-dylib/driver.rs diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/extern_1.c b/tests/run-make/raw-dylib-inline-cross-dylib/extern_1.c similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/extern_1.c rename to tests/run-make/raw-dylib-inline-cross-dylib/extern_1.c diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/extern_2.c b/tests/run-make/raw-dylib-inline-cross-dylib/extern_2.c similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/extern_2.c rename to tests/run-make/raw-dylib-inline-cross-dylib/extern_2.c diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/lib.rs b/tests/run-make/raw-dylib-inline-cross-dylib/lib.rs similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/lib.rs rename to tests/run-make/raw-dylib-inline-cross-dylib/lib.rs diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/lib_wrapper.rs b/tests/run-make/raw-dylib-inline-cross-dylib/lib_wrapper.rs similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/lib_wrapper.rs rename to tests/run-make/raw-dylib-inline-cross-dylib/lib_wrapper.rs diff --git a/src/test/run-make/raw-dylib-inline-cross-dylib/output.txt b/tests/run-make/raw-dylib-inline-cross-dylib/output.txt similarity index 100% rename from src/test/run-make/raw-dylib-inline-cross-dylib/output.txt rename to tests/run-make/raw-dylib-inline-cross-dylib/output.txt diff --git a/src/test/run-make/raw-dylib-link-ordinal/Makefile b/tests/run-make/raw-dylib-link-ordinal/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/Makefile rename to tests/run-make/raw-dylib-link-ordinal/Makefile diff --git a/src/test/run-make/raw-dylib-link-ordinal/driver.rs b/tests/run-make/raw-dylib-link-ordinal/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/driver.rs rename to tests/run-make/raw-dylib-link-ordinal/driver.rs diff --git a/src/test/run-make/raw-dylib-link-ordinal/exporter.c b/tests/run-make/raw-dylib-link-ordinal/exporter.c similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/exporter.c rename to tests/run-make/raw-dylib-link-ordinal/exporter.c diff --git a/src/test/run-make/raw-dylib-link-ordinal/exporter.def b/tests/run-make/raw-dylib-link-ordinal/exporter.def similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/exporter.def rename to tests/run-make/raw-dylib-link-ordinal/exporter.def diff --git a/src/test/run-make/raw-dylib-link-ordinal/lib.rs b/tests/run-make/raw-dylib-link-ordinal/lib.rs similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/lib.rs rename to tests/run-make/raw-dylib-link-ordinal/lib.rs diff --git a/src/test/run-make/raw-dylib-link-ordinal/output.txt b/tests/run-make/raw-dylib-link-ordinal/output.txt similarity index 100% rename from src/test/run-make/raw-dylib-link-ordinal/output.txt rename to tests/run-make/raw-dylib-link-ordinal/output.txt diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/Makefile b/tests/run-make/raw-dylib-stdcall-ordinal/Makefile similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/Makefile rename to tests/run-make/raw-dylib-stdcall-ordinal/Makefile diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/driver.rs b/tests/run-make/raw-dylib-stdcall-ordinal/driver.rs similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/driver.rs rename to tests/run-make/raw-dylib-stdcall-ordinal/driver.rs diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/expected_output.txt b/tests/run-make/raw-dylib-stdcall-ordinal/expected_output.txt similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/expected_output.txt rename to tests/run-make/raw-dylib-stdcall-ordinal/expected_output.txt diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/exporter-gnu.def b/tests/run-make/raw-dylib-stdcall-ordinal/exporter-gnu.def similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/exporter-gnu.def rename to tests/run-make/raw-dylib-stdcall-ordinal/exporter-gnu.def diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/exporter-msvc.def b/tests/run-make/raw-dylib-stdcall-ordinal/exporter-msvc.def similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/exporter-msvc.def rename to tests/run-make/raw-dylib-stdcall-ordinal/exporter-msvc.def diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/exporter.c b/tests/run-make/raw-dylib-stdcall-ordinal/exporter.c similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/exporter.c rename to tests/run-make/raw-dylib-stdcall-ordinal/exporter.c diff --git a/src/test/run-make/raw-dylib-stdcall-ordinal/lib.rs b/tests/run-make/raw-dylib-stdcall-ordinal/lib.rs similarity index 100% rename from src/test/run-make/raw-dylib-stdcall-ordinal/lib.rs rename to tests/run-make/raw-dylib-stdcall-ordinal/lib.rs diff --git a/src/test/run-make/remap-path-prefix-dwarf/Makefile b/tests/run-make/remap-path-prefix-dwarf/Makefile similarity index 100% rename from src/test/run-make/remap-path-prefix-dwarf/Makefile rename to tests/run-make/remap-path-prefix-dwarf/Makefile diff --git a/src/test/run-make/remap-path-prefix-dwarf/src/quux.rs b/tests/run-make/remap-path-prefix-dwarf/src/quux.rs similarity index 100% rename from src/test/run-make/remap-path-prefix-dwarf/src/quux.rs rename to tests/run-make/remap-path-prefix-dwarf/src/quux.rs diff --git a/src/test/run-make/repr128-dwarf/Makefile b/tests/run-make/repr128-dwarf/Makefile similarity index 100% rename from src/test/run-make/repr128-dwarf/Makefile rename to tests/run-make/repr128-dwarf/Makefile diff --git a/src/test/run-make/repr128-dwarf/lib.rs b/tests/run-make/repr128-dwarf/lib.rs similarity index 100% rename from src/test/run-make/repr128-dwarf/lib.rs rename to tests/run-make/repr128-dwarf/lib.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs-2/Makefile b/tests/run-make/rlib-format-packed-bundled-libs-2/Makefile similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs-2/Makefile rename to tests/run-make/rlib-format-packed-bundled-libs-2/Makefile diff --git a/src/test/run-make/rlib-format-packed-bundled-libs-2/main.rs b/tests/run-make/rlib-format-packed-bundled-libs-2/main.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs-2/main.rs rename to tests/run-make/rlib-format-packed-bundled-libs-2/main.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs-2/native_dep.rs b/tests/run-make/rlib-format-packed-bundled-libs-2/native_dep.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs-2/native_dep.rs rename to tests/run-make/rlib-format-packed-bundled-libs-2/native_dep.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs-2/rust_dep.rs b/tests/run-make/rlib-format-packed-bundled-libs-2/rust_dep.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs-2/rust_dep.rs rename to tests/run-make/rlib-format-packed-bundled-libs-2/rust_dep.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/Makefile b/tests/run-make/rlib-format-packed-bundled-libs/Makefile similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/Makefile rename to tests/run-make/rlib-format-packed-bundled-libs/Makefile diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/main.rs b/tests/run-make/rlib-format-packed-bundled-libs/main.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/main.rs rename to tests/run-make/rlib-format-packed-bundled-libs/main.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/native_dep_1.c b/tests/run-make/rlib-format-packed-bundled-libs/native_dep_1.c similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/native_dep_1.c rename to tests/run-make/rlib-format-packed-bundled-libs/native_dep_1.c diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/native_dep_2.c b/tests/run-make/rlib-format-packed-bundled-libs/native_dep_2.c similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/native_dep_2.c rename to tests/run-make/rlib-format-packed-bundled-libs/native_dep_2.c diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/native_dep_3.c b/tests/run-make/rlib-format-packed-bundled-libs/native_dep_3.c similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/native_dep_3.c rename to tests/run-make/rlib-format-packed-bundled-libs/native_dep_3.c diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/rust_dep_local.rs b/tests/run-make/rlib-format-packed-bundled-libs/rust_dep_local.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/rust_dep_local.rs rename to tests/run-make/rlib-format-packed-bundled-libs/rust_dep_local.rs diff --git a/src/test/run-make/rlib-format-packed-bundled-libs/rust_dep_up.rs b/tests/run-make/rlib-format-packed-bundled-libs/rust_dep_up.rs similarity index 100% rename from src/test/run-make/rlib-format-packed-bundled-libs/rust_dep_up.rs rename to tests/run-make/rlib-format-packed-bundled-libs/rust_dep_up.rs diff --git a/src/test/run-make/rustc-macro-dep-files/Makefile b/tests/run-make/rustc-macro-dep-files/Makefile similarity index 100% rename from src/test/run-make/rustc-macro-dep-files/Makefile rename to tests/run-make/rustc-macro-dep-files/Makefile diff --git a/src/test/run-make/rustc-macro-dep-files/bar.rs b/tests/run-make/rustc-macro-dep-files/bar.rs similarity index 100% rename from src/test/run-make/rustc-macro-dep-files/bar.rs rename to tests/run-make/rustc-macro-dep-files/bar.rs diff --git a/src/test/run-make/rustc-macro-dep-files/foo.rs b/tests/run-make/rustc-macro-dep-files/foo.rs similarity index 100% rename from src/test/run-make/rustc-macro-dep-files/foo.rs rename to tests/run-make/rustc-macro-dep-files/foo.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-invalid-expr/Makefile b/tests/run-make/rustdoc-scrape-examples-invalid-expr/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-invalid-expr/Makefile rename to tests/run-make/rustdoc-scrape-examples-invalid-expr/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-invalid-expr/examples/ex.rs b/tests/run-make/rustdoc-scrape-examples-invalid-expr/examples/ex.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-invalid-expr/examples/ex.rs rename to tests/run-make/rustdoc-scrape-examples-invalid-expr/examples/ex.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-invalid-expr/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-invalid-expr/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-invalid-expr/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-invalid-expr/src/lib.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-multiple/Makefile b/tests/run-make/rustdoc-scrape-examples-multiple/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-multiple/Makefile rename to tests/run-make/rustdoc-scrape-examples-multiple/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-multiple/examples/ex.rs b/tests/run-make/rustdoc-scrape-examples-multiple/examples/ex.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-multiple/examples/ex.rs rename to tests/run-make/rustdoc-scrape-examples-multiple/examples/ex.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-multiple/examples/ex2.rs b/tests/run-make/rustdoc-scrape-examples-multiple/examples/ex2.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-multiple/examples/ex2.rs rename to tests/run-make/rustdoc-scrape-examples-multiple/examples/ex2.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-multiple/scrape.mk b/tests/run-make/rustdoc-scrape-examples-multiple/scrape.mk similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-multiple/scrape.mk rename to tests/run-make/rustdoc-scrape-examples-multiple/scrape.mk diff --git a/src/test/run-make/rustdoc-scrape-examples-multiple/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-multiple/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-multiple/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-multiple/src/lib.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-ordering/Makefile b/tests/run-make/rustdoc-scrape-examples-ordering/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-ordering/Makefile rename to tests/run-make/rustdoc-scrape-examples-ordering/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-ordering/examples/ex1.rs b/tests/run-make/rustdoc-scrape-examples-ordering/examples/ex1.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-ordering/examples/ex1.rs rename to tests/run-make/rustdoc-scrape-examples-ordering/examples/ex1.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-ordering/examples/ex2.rs b/tests/run-make/rustdoc-scrape-examples-ordering/examples/ex2.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-ordering/examples/ex2.rs rename to tests/run-make/rustdoc-scrape-examples-ordering/examples/ex2.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-ordering/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-ordering/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-ordering/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-ordering/src/lib.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-remap/Makefile b/tests/run-make/rustdoc-scrape-examples-remap/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-remap/Makefile rename to tests/run-make/rustdoc-scrape-examples-remap/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-remap/examples/ex.rs b/tests/run-make/rustdoc-scrape-examples-remap/examples/ex.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-remap/examples/ex.rs rename to tests/run-make/rustdoc-scrape-examples-remap/examples/ex.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-remap/src/a.rs b/tests/run-make/rustdoc-scrape-examples-remap/src/a.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-remap/src/a.rs rename to tests/run-make/rustdoc-scrape-examples-remap/src/a.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-remap/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-remap/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-remap/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-remap/src/lib.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-test/Makefile b/tests/run-make/rustdoc-scrape-examples-test/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-test/Makefile rename to tests/run-make/rustdoc-scrape-examples-test/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-test/examples/ex.rs b/tests/run-make/rustdoc-scrape-examples-test/examples/ex.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-test/examples/ex.rs rename to tests/run-make/rustdoc-scrape-examples-test/examples/ex.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-test/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-test/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-test/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-test/src/lib.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile b/tests/run-make/rustdoc-scrape-examples-whitespace/Makefile similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-whitespace/Makefile rename to tests/run-make/rustdoc-scrape-examples-whitespace/Makefile diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs b/tests/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs rename to tests/run-make/rustdoc-scrape-examples-whitespace/examples/ex.rs diff --git a/src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs b/tests/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs rename to tests/run-make/rustdoc-scrape-examples-whitespace/src/lib.rs diff --git a/src/test/run-make/rustdoc-verify-output-files/Makefile b/tests/run-make/rustdoc-verify-output-files/Makefile similarity index 100% rename from src/test/run-make/rustdoc-verify-output-files/Makefile rename to tests/run-make/rustdoc-verify-output-files/Makefile diff --git a/src/test/run-make/rustdoc-verify-output-files/src/lib.rs b/tests/run-make/rustdoc-verify-output-files/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-verify-output-files/src/lib.rs rename to tests/run-make/rustdoc-verify-output-files/src/lib.rs diff --git a/src/test/run-make/rustdoc-with-out-dir-option/Makefile b/tests/run-make/rustdoc-with-out-dir-option/Makefile similarity index 100% rename from src/test/run-make/rustdoc-with-out-dir-option/Makefile rename to tests/run-make/rustdoc-with-out-dir-option/Makefile diff --git a/src/test/run-make/rustdoc-with-out-dir-option/src/lib.rs b/tests/run-make/rustdoc-with-out-dir-option/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-with-out-dir-option/src/lib.rs rename to tests/run-make/rustdoc-with-out-dir-option/src/lib.rs diff --git a/src/test/run-make/rustdoc-with-output-option/Makefile b/tests/run-make/rustdoc-with-output-option/Makefile similarity index 100% rename from src/test/run-make/rustdoc-with-output-option/Makefile rename to tests/run-make/rustdoc-with-output-option/Makefile diff --git a/src/test/run-make/rustdoc-with-output-option/src/lib.rs b/tests/run-make/rustdoc-with-output-option/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-with-output-option/src/lib.rs rename to tests/run-make/rustdoc-with-output-option/src/lib.rs diff --git a/src/test/run-make/rustdoc-with-short-out-dir-option/Makefile b/tests/run-make/rustdoc-with-short-out-dir-option/Makefile similarity index 100% rename from src/test/run-make/rustdoc-with-short-out-dir-option/Makefile rename to tests/run-make/rustdoc-with-short-out-dir-option/Makefile diff --git a/src/test/run-make/rustdoc-with-short-out-dir-option/src/lib.rs b/tests/run-make/rustdoc-with-short-out-dir-option/src/lib.rs similarity index 100% rename from src/test/run-make/rustdoc-with-short-out-dir-option/src/lib.rs rename to tests/run-make/rustdoc-with-short-out-dir-option/src/lib.rs diff --git a/src/test/run-make/static-pie/Makefile b/tests/run-make/static-pie/Makefile similarity index 100% rename from src/test/run-make/static-pie/Makefile rename to tests/run-make/static-pie/Makefile diff --git a/src/test/run-make/static-pie/check_clang_version.sh b/tests/run-make/static-pie/check_clang_version.sh similarity index 100% rename from src/test/run-make/static-pie/check_clang_version.sh rename to tests/run-make/static-pie/check_clang_version.sh diff --git a/src/test/run-make/static-pie/check_gcc_version.sh b/tests/run-make/static-pie/check_gcc_version.sh similarity index 100% rename from src/test/run-make/static-pie/check_gcc_version.sh rename to tests/run-make/static-pie/check_gcc_version.sh diff --git a/src/test/run-make/static-pie/test-aslr.rs b/tests/run-make/static-pie/test-aslr.rs similarity index 100% rename from src/test/run-make/static-pie/test-aslr.rs rename to tests/run-make/static-pie/test-aslr.rs diff --git a/src/test/run-make/test-benches/Makefile b/tests/run-make/test-benches/Makefile similarity index 100% rename from src/test/run-make/test-benches/Makefile rename to tests/run-make/test-benches/Makefile diff --git a/src/test/run-make/test-benches/smokebench.rs b/tests/run-make/test-benches/smokebench.rs similarity index 100% rename from src/test/run-make/test-benches/smokebench.rs rename to tests/run-make/test-benches/smokebench.rs diff --git a/src/test/run-make/thumb-none-cortex-m/Makefile b/tests/run-make/thumb-none-cortex-m/Makefile similarity index 100% rename from src/test/run-make/thumb-none-cortex-m/Makefile rename to tests/run-make/thumb-none-cortex-m/Makefile diff --git a/src/test/run-make/thumb-none-qemu/Makefile b/tests/run-make/thumb-none-qemu/Makefile similarity index 100% rename from src/test/run-make/thumb-none-qemu/Makefile rename to tests/run-make/thumb-none-qemu/Makefile diff --git a/src/test/run-make/thumb-none-qemu/example/.cargo/config b/tests/run-make/thumb-none-qemu/example/.cargo/config similarity index 100% rename from src/test/run-make/thumb-none-qemu/example/.cargo/config rename to tests/run-make/thumb-none-qemu/example/.cargo/config diff --git a/src/test/run-make/thumb-none-qemu/example/Cargo.lock b/tests/run-make/thumb-none-qemu/example/Cargo.lock similarity index 100% rename from src/test/run-make/thumb-none-qemu/example/Cargo.lock rename to tests/run-make/thumb-none-qemu/example/Cargo.lock diff --git a/src/test/run-make/thumb-none-qemu/example/Cargo.toml b/tests/run-make/thumb-none-qemu/example/Cargo.toml similarity index 100% rename from src/test/run-make/thumb-none-qemu/example/Cargo.toml rename to tests/run-make/thumb-none-qemu/example/Cargo.toml diff --git a/src/test/run-make/thumb-none-qemu/example/memory.x b/tests/run-make/thumb-none-qemu/example/memory.x similarity index 100% rename from src/test/run-make/thumb-none-qemu/example/memory.x rename to tests/run-make/thumb-none-qemu/example/memory.x diff --git a/src/test/run-make/thumb-none-qemu/example/src/main.rs b/tests/run-make/thumb-none-qemu/example/src/main.rs similarity index 100% rename from src/test/run-make/thumb-none-qemu/example/src/main.rs rename to tests/run-make/thumb-none-qemu/example/src/main.rs diff --git a/src/test/run-make/thumb-none-qemu/script.sh b/tests/run-make/thumb-none-qemu/script.sh similarity index 100% rename from src/test/run-make/thumb-none-qemu/script.sh rename to tests/run-make/thumb-none-qemu/script.sh diff --git a/src/test/run-make/track-path-dep-info/Makefile b/tests/run-make/track-path-dep-info/Makefile similarity index 100% rename from src/test/run-make/track-path-dep-info/Makefile rename to tests/run-make/track-path-dep-info/Makefile diff --git a/src/test/run-make/track-path-dep-info/emojis.txt b/tests/run-make/track-path-dep-info/emojis.txt similarity index 100% rename from src/test/run-make/track-path-dep-info/emojis.txt rename to tests/run-make/track-path-dep-info/emojis.txt diff --git a/src/test/run-make/track-path-dep-info/macro_def.rs b/tests/run-make/track-path-dep-info/macro_def.rs similarity index 100% rename from src/test/run-make/track-path-dep-info/macro_def.rs rename to tests/run-make/track-path-dep-info/macro_def.rs diff --git a/src/test/run-make/track-path-dep-info/macro_use.rs b/tests/run-make/track-path-dep-info/macro_use.rs similarity index 100% rename from src/test/run-make/track-path-dep-info/macro_use.rs rename to tests/run-make/track-path-dep-info/macro_use.rs diff --git a/src/test/run-make/track-pgo-dep-info/Makefile b/tests/run-make/track-pgo-dep-info/Makefile similarity index 100% rename from src/test/run-make/track-pgo-dep-info/Makefile rename to tests/run-make/track-pgo-dep-info/Makefile diff --git a/src/test/run-make/track-pgo-dep-info/main.rs b/tests/run-make/track-pgo-dep-info/main.rs similarity index 100% rename from src/test/run-make/track-pgo-dep-info/main.rs rename to tests/run-make/track-pgo-dep-info/main.rs diff --git a/src/test/run-make/translation/Makefile b/tests/run-make/translation/Makefile similarity index 100% rename from src/test/run-make/translation/Makefile rename to tests/run-make/translation/Makefile diff --git a/src/test/run-make/translation/broken.ftl b/tests/run-make/translation/broken.ftl similarity index 100% rename from src/test/run-make/translation/broken.ftl rename to tests/run-make/translation/broken.ftl diff --git a/src/test/run-make/translation/missing.ftl b/tests/run-make/translation/missing.ftl similarity index 100% rename from src/test/run-make/translation/missing.ftl rename to tests/run-make/translation/missing.ftl diff --git a/src/test/run-make/translation/test.rs b/tests/run-make/translation/test.rs similarity index 100% rename from src/test/run-make/translation/test.rs rename to tests/run-make/translation/test.rs diff --git a/src/test/run-make/translation/working.ftl b/tests/run-make/translation/working.ftl similarity index 100% rename from src/test/run-make/translation/working.ftl rename to tests/run-make/translation/working.ftl diff --git a/src/test/run-make/unstable-flag-required/Makefile b/tests/run-make/unstable-flag-required/Makefile similarity index 100% rename from src/test/run-make/unstable-flag-required/Makefile rename to tests/run-make/unstable-flag-required/Makefile diff --git a/src/test/run-make/unstable-flag-required/README.md b/tests/run-make/unstable-flag-required/README.md similarity index 100% rename from src/test/run-make/unstable-flag-required/README.md rename to tests/run-make/unstable-flag-required/README.md diff --git a/src/test/run-make/unstable-flag-required/output-format-json.stderr b/tests/run-make/unstable-flag-required/output-format-json.stderr similarity index 100% rename from src/test/run-make/unstable-flag-required/output-format-json.stderr rename to tests/run-make/unstable-flag-required/output-format-json.stderr diff --git a/src/test/run-make/unstable-flag-required/x.rs b/tests/run-make/unstable-flag-required/x.rs similarity index 100% rename from src/test/run-make/unstable-flag-required/x.rs rename to tests/run-make/unstable-flag-required/x.rs diff --git a/src/test/run-make/valid-print-requests/Makefile b/tests/run-make/valid-print-requests/Makefile similarity index 100% rename from src/test/run-make/valid-print-requests/Makefile rename to tests/run-make/valid-print-requests/Makefile diff --git a/src/test/run-make/valid-print-requests/valid-print-requests.stderr b/tests/run-make/valid-print-requests/valid-print-requests.stderr similarity index 100% rename from src/test/run-make/valid-print-requests/valid-print-requests.stderr rename to tests/run-make/valid-print-requests/valid-print-requests.stderr diff --git a/src/test/run-make/wasm-abi/Makefile b/tests/run-make/wasm-abi/Makefile similarity index 100% rename from src/test/run-make/wasm-abi/Makefile rename to tests/run-make/wasm-abi/Makefile diff --git a/src/test/run-make/wasm-abi/foo.js b/tests/run-make/wasm-abi/foo.js similarity index 100% rename from src/test/run-make/wasm-abi/foo.js rename to tests/run-make/wasm-abi/foo.js diff --git a/src/test/run-make/wasm-abi/foo.rs b/tests/run-make/wasm-abi/foo.rs similarity index 100% rename from src/test/run-make/wasm-abi/foo.rs rename to tests/run-make/wasm-abi/foo.rs diff --git a/src/test/run-make/wasm-custom-section/Makefile b/tests/run-make/wasm-custom-section/Makefile similarity index 100% rename from src/test/run-make/wasm-custom-section/Makefile rename to tests/run-make/wasm-custom-section/Makefile diff --git a/src/test/run-make/wasm-custom-section/bar.rs b/tests/run-make/wasm-custom-section/bar.rs similarity index 100% rename from src/test/run-make/wasm-custom-section/bar.rs rename to tests/run-make/wasm-custom-section/bar.rs diff --git a/src/test/run-make/wasm-custom-section/foo.js b/tests/run-make/wasm-custom-section/foo.js similarity index 100% rename from src/test/run-make/wasm-custom-section/foo.js rename to tests/run-make/wasm-custom-section/foo.js diff --git a/src/test/run-make/wasm-custom-section/foo.rs b/tests/run-make/wasm-custom-section/foo.rs similarity index 100% rename from src/test/run-make/wasm-custom-section/foo.rs rename to tests/run-make/wasm-custom-section/foo.rs diff --git a/src/test/run-make/wasm-custom-sections-opt/Makefile b/tests/run-make/wasm-custom-sections-opt/Makefile similarity index 100% rename from src/test/run-make/wasm-custom-sections-opt/Makefile rename to tests/run-make/wasm-custom-sections-opt/Makefile diff --git a/src/test/run-make/wasm-custom-sections-opt/foo.js b/tests/run-make/wasm-custom-sections-opt/foo.js similarity index 100% rename from src/test/run-make/wasm-custom-sections-opt/foo.js rename to tests/run-make/wasm-custom-sections-opt/foo.js diff --git a/src/test/run-make/wasm-custom-sections-opt/foo.rs b/tests/run-make/wasm-custom-sections-opt/foo.rs similarity index 100% rename from src/test/run-make/wasm-custom-sections-opt/foo.rs rename to tests/run-make/wasm-custom-sections-opt/foo.rs diff --git a/src/test/run-make/wasm-export-all-symbols/Makefile b/tests/run-make/wasm-export-all-symbols/Makefile similarity index 100% rename from src/test/run-make/wasm-export-all-symbols/Makefile rename to tests/run-make/wasm-export-all-symbols/Makefile diff --git a/src/test/run-make/wasm-export-all-symbols/bar.rs b/tests/run-make/wasm-export-all-symbols/bar.rs similarity index 100% rename from src/test/run-make/wasm-export-all-symbols/bar.rs rename to tests/run-make/wasm-export-all-symbols/bar.rs diff --git a/src/test/run-make/wasm-export-all-symbols/foo.rs b/tests/run-make/wasm-export-all-symbols/foo.rs similarity index 100% rename from src/test/run-make/wasm-export-all-symbols/foo.rs rename to tests/run-make/wasm-export-all-symbols/foo.rs diff --git a/src/test/run-make/wasm-export-all-symbols/main.rs b/tests/run-make/wasm-export-all-symbols/main.rs similarity index 100% rename from src/test/run-make/wasm-export-all-symbols/main.rs rename to tests/run-make/wasm-export-all-symbols/main.rs diff --git a/src/test/run-make/wasm-export-all-symbols/verify.js b/tests/run-make/wasm-export-all-symbols/verify.js similarity index 100% rename from src/test/run-make/wasm-export-all-symbols/verify.js rename to tests/run-make/wasm-export-all-symbols/verify.js diff --git a/src/test/run-make/wasm-import-module/Makefile b/tests/run-make/wasm-import-module/Makefile similarity index 100% rename from src/test/run-make/wasm-import-module/Makefile rename to tests/run-make/wasm-import-module/Makefile diff --git a/src/test/run-make/wasm-import-module/bar.rs b/tests/run-make/wasm-import-module/bar.rs similarity index 100% rename from src/test/run-make/wasm-import-module/bar.rs rename to tests/run-make/wasm-import-module/bar.rs diff --git a/src/test/run-make/wasm-import-module/foo.js b/tests/run-make/wasm-import-module/foo.js similarity index 100% rename from src/test/run-make/wasm-import-module/foo.js rename to tests/run-make/wasm-import-module/foo.js diff --git a/src/test/run-make/wasm-import-module/foo.rs b/tests/run-make/wasm-import-module/foo.rs similarity index 100% rename from src/test/run-make/wasm-import-module/foo.rs rename to tests/run-make/wasm-import-module/foo.rs diff --git a/src/test/run-make/wasm-panic-small/Makefile b/tests/run-make/wasm-panic-small/Makefile similarity index 100% rename from src/test/run-make/wasm-panic-small/Makefile rename to tests/run-make/wasm-panic-small/Makefile diff --git a/src/test/run-make/wasm-panic-small/foo.rs b/tests/run-make/wasm-panic-small/foo.rs similarity index 100% rename from src/test/run-make/wasm-panic-small/foo.rs rename to tests/run-make/wasm-panic-small/foo.rs diff --git a/src/test/run-make/wasm-spurious-import/Makefile b/tests/run-make/wasm-spurious-import/Makefile similarity index 100% rename from src/test/run-make/wasm-spurious-import/Makefile rename to tests/run-make/wasm-spurious-import/Makefile diff --git a/src/test/run-make/wasm-spurious-import/main.rs b/tests/run-make/wasm-spurious-import/main.rs similarity index 100% rename from src/test/run-make/wasm-spurious-import/main.rs rename to tests/run-make/wasm-spurious-import/main.rs diff --git a/src/test/run-make/wasm-spurious-import/verify.js b/tests/run-make/wasm-spurious-import/verify.js similarity index 100% rename from src/test/run-make/wasm-spurious-import/verify.js rename to tests/run-make/wasm-spurious-import/verify.js diff --git a/src/test/run-make/wasm-stringify-ints-small/Makefile b/tests/run-make/wasm-stringify-ints-small/Makefile similarity index 100% rename from src/test/run-make/wasm-stringify-ints-small/Makefile rename to tests/run-make/wasm-stringify-ints-small/Makefile diff --git a/src/test/run-make/wasm-stringify-ints-small/foo.rs b/tests/run-make/wasm-stringify-ints-small/foo.rs similarity index 100% rename from src/test/run-make/wasm-stringify-ints-small/foo.rs rename to tests/run-make/wasm-stringify-ints-small/foo.rs diff --git a/src/test/run-make/wasm-symbols-different-module/Makefile b/tests/run-make/wasm-symbols-different-module/Makefile similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/Makefile rename to tests/run-make/wasm-symbols-different-module/Makefile diff --git a/src/test/run-make/wasm-symbols-different-module/bar.rs b/tests/run-make/wasm-symbols-different-module/bar.rs similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/bar.rs rename to tests/run-make/wasm-symbols-different-module/bar.rs diff --git a/src/test/run-make/wasm-symbols-different-module/baz.rs b/tests/run-make/wasm-symbols-different-module/baz.rs similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/baz.rs rename to tests/run-make/wasm-symbols-different-module/baz.rs diff --git a/src/test/run-make/wasm-symbols-different-module/foo.rs b/tests/run-make/wasm-symbols-different-module/foo.rs similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/foo.rs rename to tests/run-make/wasm-symbols-different-module/foo.rs diff --git a/src/test/run-make/wasm-symbols-different-module/log.rs b/tests/run-make/wasm-symbols-different-module/log.rs similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/log.rs rename to tests/run-make/wasm-symbols-different-module/log.rs diff --git a/src/test/run-make/wasm-symbols-different-module/verify-imports.js b/tests/run-make/wasm-symbols-different-module/verify-imports.js similarity index 100% rename from src/test/run-make/wasm-symbols-different-module/verify-imports.js rename to tests/run-make/wasm-symbols-different-module/verify-imports.js diff --git a/src/test/run-make/wasm-symbols-not-exported/Makefile b/tests/run-make/wasm-symbols-not-exported/Makefile similarity index 100% rename from src/test/run-make/wasm-symbols-not-exported/Makefile rename to tests/run-make/wasm-symbols-not-exported/Makefile diff --git a/src/test/run-make/wasm-symbols-not-exported/bar.rs b/tests/run-make/wasm-symbols-not-exported/bar.rs similarity index 100% rename from src/test/run-make/wasm-symbols-not-exported/bar.rs rename to tests/run-make/wasm-symbols-not-exported/bar.rs diff --git a/src/test/run-make/wasm-symbols-not-exported/foo.rs b/tests/run-make/wasm-symbols-not-exported/foo.rs similarity index 100% rename from src/test/run-make/wasm-symbols-not-exported/foo.rs rename to tests/run-make/wasm-symbols-not-exported/foo.rs diff --git a/src/test/run-make/wasm-symbols-not-exported/verify-exported-symbols.js b/tests/run-make/wasm-symbols-not-exported/verify-exported-symbols.js similarity index 100% rename from src/test/run-make/wasm-symbols-not-exported/verify-exported-symbols.js rename to tests/run-make/wasm-symbols-not-exported/verify-exported-symbols.js diff --git a/src/test/run-make/wasm-symbols-not-imported/Makefile b/tests/run-make/wasm-symbols-not-imported/Makefile similarity index 100% rename from src/test/run-make/wasm-symbols-not-imported/Makefile rename to tests/run-make/wasm-symbols-not-imported/Makefile diff --git a/src/test/run-make/wasm-symbols-not-imported/foo.rs b/tests/run-make/wasm-symbols-not-imported/foo.rs similarity index 100% rename from src/test/run-make/wasm-symbols-not-imported/foo.rs rename to tests/run-make/wasm-symbols-not-imported/foo.rs diff --git a/src/test/run-make/wasm-symbols-not-imported/verify-no-imports.js b/tests/run-make/wasm-symbols-not-imported/verify-no-imports.js similarity index 100% rename from src/test/run-make/wasm-symbols-not-imported/verify-no-imports.js rename to tests/run-make/wasm-symbols-not-imported/verify-no-imports.js diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_c_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cc_plus_one_cxx_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_global_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_global_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_global_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_c_global_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_global_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_global_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_global_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/cmake_plus_one_cxx_global_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/Cargo.toml b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/Cargo.toml similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/Cargo.toml rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/Cargo.toml diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo.c diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_asm.s b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_asm.s similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_asm.s rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_asm.s diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_cxx.cpp b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_cxx.cpp similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_cxx.cpp rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/foo_cxx.cpp diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/CMakeLists.txt b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/CMakeLists.txt similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/CMakeLists.txt rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/CMakeLists.txt diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo.c b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo.c similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo.c rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo.c diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_asm.s b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_asm.s similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_asm.s rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_asm.s diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_cxx.cpp b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_cxx.cpp similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_cxx.cpp rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/libcmake_foo/src/foo_cxx.cpp diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/src/main.rs b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/src/main.rs similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/src/main.rs rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/src/main.rs diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/jumpto.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/jumpto.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/jumpto.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/jumpto.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/print.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/print.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/print.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/print.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/rust_plus_one_global_asm.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/rust_plus_one_global_asm.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/rust_plus_one_global_asm.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/rust_plus_one_global_asm.checks diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/script.sh b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/script.sh similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/script.sh rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/script.sh diff --git a/src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/unw_getcontext.checks b/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/unw_getcontext.checks similarity index 100% rename from src/test/run-make/x86_64-fortanix-unknown-sgx-lvi/unw_getcontext.checks rename to tests/run-make/x86_64-fortanix-unknown-sgx-lvi/unw_getcontext.checks diff --git a/src/test/run-pass-valgrind/cast-enum-with-dtor.rs b/tests/run-pass-valgrind/cast-enum-with-dtor.rs similarity index 100% rename from src/test/run-pass-valgrind/cast-enum-with-dtor.rs rename to tests/run-pass-valgrind/cast-enum-with-dtor.rs diff --git a/src/test/run-pass-valgrind/cleanup-auto-borrow-obj.rs b/tests/run-pass-valgrind/cleanup-auto-borrow-obj.rs similarity index 100% rename from src/test/run-pass-valgrind/cleanup-auto-borrow-obj.rs rename to tests/run-pass-valgrind/cleanup-auto-borrow-obj.rs diff --git a/src/test/run-pass-valgrind/cleanup-stdin.rs b/tests/run-pass-valgrind/cleanup-stdin.rs similarity index 100% rename from src/test/run-pass-valgrind/cleanup-stdin.rs rename to tests/run-pass-valgrind/cleanup-stdin.rs diff --git a/src/test/run-pass-valgrind/coerce-match-calls.rs b/tests/run-pass-valgrind/coerce-match-calls.rs similarity index 100% rename from src/test/run-pass-valgrind/coerce-match-calls.rs rename to tests/run-pass-valgrind/coerce-match-calls.rs diff --git a/src/test/run-pass-valgrind/coerce-match.rs b/tests/run-pass-valgrind/coerce-match.rs similarity index 100% rename from src/test/run-pass-valgrind/coerce-match.rs rename to tests/run-pass-valgrind/coerce-match.rs diff --git a/src/test/run-pass-valgrind/down-with-thread-dtors.rs b/tests/run-pass-valgrind/down-with-thread-dtors.rs similarity index 100% rename from src/test/run-pass-valgrind/down-with-thread-dtors.rs rename to tests/run-pass-valgrind/down-with-thread-dtors.rs diff --git a/src/test/run-pass-valgrind/dst-dtor-1.rs b/tests/run-pass-valgrind/dst-dtor-1.rs similarity index 100% rename from src/test/run-pass-valgrind/dst-dtor-1.rs rename to tests/run-pass-valgrind/dst-dtor-1.rs diff --git a/src/test/run-pass-valgrind/dst-dtor-2.rs b/tests/run-pass-valgrind/dst-dtor-2.rs similarity index 100% rename from src/test/run-pass-valgrind/dst-dtor-2.rs rename to tests/run-pass-valgrind/dst-dtor-2.rs diff --git a/src/test/run-pass-valgrind/dst-dtor-3.rs b/tests/run-pass-valgrind/dst-dtor-3.rs similarity index 100% rename from src/test/run-pass-valgrind/dst-dtor-3.rs rename to tests/run-pass-valgrind/dst-dtor-3.rs diff --git a/src/test/run-pass-valgrind/dst-dtor-4.rs b/tests/run-pass-valgrind/dst-dtor-4.rs similarity index 100% rename from src/test/run-pass-valgrind/dst-dtor-4.rs rename to tests/run-pass-valgrind/dst-dtor-4.rs diff --git a/src/test/run-pass-valgrind/exit-flushes.rs b/tests/run-pass-valgrind/exit-flushes.rs similarity index 100% rename from src/test/run-pass-valgrind/exit-flushes.rs rename to tests/run-pass-valgrind/exit-flushes.rs diff --git a/src/test/run-pass-valgrind/issue-44800.rs b/tests/run-pass-valgrind/issue-44800.rs similarity index 100% rename from src/test/run-pass-valgrind/issue-44800.rs rename to tests/run-pass-valgrind/issue-44800.rs diff --git a/src/test/run-pass-valgrind/osx-frameworks.rs b/tests/run-pass-valgrind/osx-frameworks.rs similarity index 100% rename from src/test/run-pass-valgrind/osx-frameworks.rs rename to tests/run-pass-valgrind/osx-frameworks.rs diff --git a/src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call.rs b/tests/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call.rs similarity index 100% rename from src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call.rs rename to tests/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call.rs diff --git a/src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call2.rs b/tests/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call2.rs similarity index 100% rename from src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call2.rs rename to tests/run-pass-valgrind/unsized-locals/by-value-trait-objects-rust-call2.rs diff --git a/src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects.rs b/tests/run-pass-valgrind/unsized-locals/by-value-trait-objects.rs similarity index 100% rename from src/test/run-pass-valgrind/unsized-locals/by-value-trait-objects.rs rename to tests/run-pass-valgrind/unsized-locals/by-value-trait-objects.rs diff --git a/src/test/run-pass-valgrind/unsized-locals/long-live-the-unsized-temporary.rs b/tests/run-pass-valgrind/unsized-locals/long-live-the-unsized-temporary.rs similarity index 100% rename from src/test/run-pass-valgrind/unsized-locals/long-live-the-unsized-temporary.rs rename to tests/run-pass-valgrind/unsized-locals/long-live-the-unsized-temporary.rs diff --git a/src/test/rustdoc-gui/README.md b/tests/rustdoc-gui/README.md similarity index 100% rename from src/test/rustdoc-gui/README.md rename to tests/rustdoc-gui/README.md diff --git a/src/test/rustdoc-gui/anchor-navigable.goml b/tests/rustdoc-gui/anchor-navigable.goml similarity index 100% rename from src/test/rustdoc-gui/anchor-navigable.goml rename to tests/rustdoc-gui/anchor-navigable.goml diff --git a/src/test/rustdoc-gui/anchors.goml b/tests/rustdoc-gui/anchors.goml similarity index 100% rename from src/test/rustdoc-gui/anchors.goml rename to tests/rustdoc-gui/anchors.goml diff --git a/src/test/rustdoc-gui/auto-hide-trait-implementations.goml b/tests/rustdoc-gui/auto-hide-trait-implementations.goml similarity index 100% rename from src/test/rustdoc-gui/auto-hide-trait-implementations.goml rename to tests/rustdoc-gui/auto-hide-trait-implementations.goml diff --git a/src/test/rustdoc-gui/basic-code.goml b/tests/rustdoc-gui/basic-code.goml similarity index 100% rename from src/test/rustdoc-gui/basic-code.goml rename to tests/rustdoc-gui/basic-code.goml diff --git a/src/test/rustdoc-gui/check-code-blocks-margin.goml b/tests/rustdoc-gui/check-code-blocks-margin.goml similarity index 100% rename from src/test/rustdoc-gui/check-code-blocks-margin.goml rename to tests/rustdoc-gui/check-code-blocks-margin.goml diff --git a/src/test/rustdoc-gui/check-stab-in-docblock.goml b/tests/rustdoc-gui/check-stab-in-docblock.goml similarity index 100% rename from src/test/rustdoc-gui/check-stab-in-docblock.goml rename to tests/rustdoc-gui/check-stab-in-docblock.goml diff --git a/src/test/rustdoc-gui/check_info_sign_position.goml b/tests/rustdoc-gui/check_info_sign_position.goml similarity index 100% rename from src/test/rustdoc-gui/check_info_sign_position.goml rename to tests/rustdoc-gui/check_info_sign_position.goml diff --git a/src/test/rustdoc-gui/code-blocks-overflow.goml b/tests/rustdoc-gui/code-blocks-overflow.goml similarity index 100% rename from src/test/rustdoc-gui/code-blocks-overflow.goml rename to tests/rustdoc-gui/code-blocks-overflow.goml diff --git a/src/test/rustdoc-gui/code-color.goml b/tests/rustdoc-gui/code-color.goml similarity index 100% rename from src/test/rustdoc-gui/code-color.goml rename to tests/rustdoc-gui/code-color.goml diff --git a/src/test/rustdoc-gui/code-sidebar-toggle.goml b/tests/rustdoc-gui/code-sidebar-toggle.goml similarity index 100% rename from src/test/rustdoc-gui/code-sidebar-toggle.goml rename to tests/rustdoc-gui/code-sidebar-toggle.goml diff --git a/src/test/rustdoc-gui/code-tags.goml b/tests/rustdoc-gui/code-tags.goml similarity index 100% rename from src/test/rustdoc-gui/code-tags.goml rename to tests/rustdoc-gui/code-tags.goml diff --git a/src/test/rustdoc-gui/codeblock-sub.goml b/tests/rustdoc-gui/codeblock-sub.goml similarity index 100% rename from src/test/rustdoc-gui/codeblock-sub.goml rename to tests/rustdoc-gui/codeblock-sub.goml diff --git a/src/test/rustdoc-gui/codeblock-tooltip.goml b/tests/rustdoc-gui/codeblock-tooltip.goml similarity index 100% rename from src/test/rustdoc-gui/codeblock-tooltip.goml rename to tests/rustdoc-gui/codeblock-tooltip.goml diff --git a/src/test/rustdoc-gui/cursor.goml b/tests/rustdoc-gui/cursor.goml similarity index 100% rename from src/test/rustdoc-gui/cursor.goml rename to tests/rustdoc-gui/cursor.goml diff --git a/src/test/rustdoc-gui/default-settings.goml b/tests/rustdoc-gui/default-settings.goml similarity index 100% rename from src/test/rustdoc-gui/default-settings.goml rename to tests/rustdoc-gui/default-settings.goml diff --git a/src/test/rustdoc-gui/docblock-big-code-mobile.goml b/tests/rustdoc-gui/docblock-big-code-mobile.goml similarity index 100% rename from src/test/rustdoc-gui/docblock-big-code-mobile.goml rename to tests/rustdoc-gui/docblock-big-code-mobile.goml diff --git a/src/test/rustdoc-gui/docblock-code-block-line-number.goml b/tests/rustdoc-gui/docblock-code-block-line-number.goml similarity index 100% rename from src/test/rustdoc-gui/docblock-code-block-line-number.goml rename to tests/rustdoc-gui/docblock-code-block-line-number.goml diff --git a/src/test/rustdoc-gui/docblock-details.goml b/tests/rustdoc-gui/docblock-details.goml similarity index 100% rename from src/test/rustdoc-gui/docblock-details.goml rename to tests/rustdoc-gui/docblock-details.goml diff --git a/src/test/rustdoc-gui/docblock-table-overflow.goml b/tests/rustdoc-gui/docblock-table-overflow.goml similarity index 100% rename from src/test/rustdoc-gui/docblock-table-overflow.goml rename to tests/rustdoc-gui/docblock-table-overflow.goml diff --git a/src/test/rustdoc-gui/docblock-table.goml b/tests/rustdoc-gui/docblock-table.goml similarity index 100% rename from src/test/rustdoc-gui/docblock-table.goml rename to tests/rustdoc-gui/docblock-table.goml diff --git a/src/test/rustdoc-gui/duplicate-macro-reexport.goml b/tests/rustdoc-gui/duplicate-macro-reexport.goml similarity index 100% rename from src/test/rustdoc-gui/duplicate-macro-reexport.goml rename to tests/rustdoc-gui/duplicate-macro-reexport.goml diff --git a/src/test/rustdoc-gui/enum-variants.goml b/tests/rustdoc-gui/enum-variants.goml similarity index 100% rename from src/test/rustdoc-gui/enum-variants.goml rename to tests/rustdoc-gui/enum-variants.goml diff --git a/src/test/rustdoc-gui/escape-key.goml b/tests/rustdoc-gui/escape-key.goml similarity index 100% rename from src/test/rustdoc-gui/escape-key.goml rename to tests/rustdoc-gui/escape-key.goml diff --git a/src/test/rustdoc-gui/font-weight.goml b/tests/rustdoc-gui/font-weight.goml similarity index 100% rename from src/test/rustdoc-gui/font-weight.goml rename to tests/rustdoc-gui/font-weight.goml diff --git a/src/test/rustdoc-gui/hash-item-expansion.goml b/tests/rustdoc-gui/hash-item-expansion.goml similarity index 100% rename from src/test/rustdoc-gui/hash-item-expansion.goml rename to tests/rustdoc-gui/hash-item-expansion.goml diff --git a/src/test/rustdoc-gui/headers-color.goml b/tests/rustdoc-gui/headers-color.goml similarity index 100% rename from src/test/rustdoc-gui/headers-color.goml rename to tests/rustdoc-gui/headers-color.goml diff --git a/src/test/rustdoc-gui/headings.goml b/tests/rustdoc-gui/headings.goml similarity index 100% rename from src/test/rustdoc-gui/headings.goml rename to tests/rustdoc-gui/headings.goml diff --git a/src/test/rustdoc-gui/help-page.goml b/tests/rustdoc-gui/help-page.goml similarity index 100% rename from src/test/rustdoc-gui/help-page.goml rename to tests/rustdoc-gui/help-page.goml diff --git a/src/test/rustdoc-gui/highlight-colors.goml b/tests/rustdoc-gui/highlight-colors.goml similarity index 100% rename from src/test/rustdoc-gui/highlight-colors.goml rename to tests/rustdoc-gui/highlight-colors.goml diff --git a/src/test/rustdoc-gui/huge-collection-of-constants.goml b/tests/rustdoc-gui/huge-collection-of-constants.goml similarity index 100% rename from src/test/rustdoc-gui/huge-collection-of-constants.goml rename to tests/rustdoc-gui/huge-collection-of-constants.goml diff --git a/src/test/rustdoc-gui/huge-logo.goml b/tests/rustdoc-gui/huge-logo.goml similarity index 100% rename from src/test/rustdoc-gui/huge-logo.goml rename to tests/rustdoc-gui/huge-logo.goml diff --git a/src/test/rustdoc-gui/impl-default-expansion.goml b/tests/rustdoc-gui/impl-default-expansion.goml similarity index 100% rename from src/test/rustdoc-gui/impl-default-expansion.goml rename to tests/rustdoc-gui/impl-default-expansion.goml diff --git a/src/test/rustdoc-gui/impl-doc.goml b/tests/rustdoc-gui/impl-doc.goml similarity index 100% rename from src/test/rustdoc-gui/impl-doc.goml rename to tests/rustdoc-gui/impl-doc.goml diff --git a/src/test/rustdoc-gui/implementors.goml b/tests/rustdoc-gui/implementors.goml similarity index 100% rename from src/test/rustdoc-gui/implementors.goml rename to tests/rustdoc-gui/implementors.goml diff --git a/src/test/rustdoc-gui/item-decl-colors.goml b/tests/rustdoc-gui/item-decl-colors.goml similarity index 100% rename from src/test/rustdoc-gui/item-decl-colors.goml rename to tests/rustdoc-gui/item-decl-colors.goml diff --git a/src/test/rustdoc-gui/item-info-alignment.goml b/tests/rustdoc-gui/item-info-alignment.goml similarity index 100% rename from src/test/rustdoc-gui/item-info-alignment.goml rename to tests/rustdoc-gui/item-info-alignment.goml diff --git a/src/test/rustdoc-gui/item-info-overflow.goml b/tests/rustdoc-gui/item-info-overflow.goml similarity index 100% rename from src/test/rustdoc-gui/item-info-overflow.goml rename to tests/rustdoc-gui/item-info-overflow.goml diff --git a/src/test/rustdoc-gui/item-info.goml b/tests/rustdoc-gui/item-info.goml similarity index 100% rename from src/test/rustdoc-gui/item-info.goml rename to tests/rustdoc-gui/item-info.goml diff --git a/src/test/rustdoc-gui/item-summary-table.goml b/tests/rustdoc-gui/item-summary-table.goml similarity index 100% rename from src/test/rustdoc-gui/item-summary-table.goml rename to tests/rustdoc-gui/item-summary-table.goml diff --git a/src/test/rustdoc-gui/javascript-disabled.goml b/tests/rustdoc-gui/javascript-disabled.goml similarity index 100% rename from src/test/rustdoc-gui/javascript-disabled.goml rename to tests/rustdoc-gui/javascript-disabled.goml diff --git a/src/test/rustdoc-gui/jump-to-def-background.goml b/tests/rustdoc-gui/jump-to-def-background.goml similarity index 100% rename from src/test/rustdoc-gui/jump-to-def-background.goml rename to tests/rustdoc-gui/jump-to-def-background.goml diff --git a/src/test/rustdoc-gui/label-next-to-symbol.goml b/tests/rustdoc-gui/label-next-to-symbol.goml similarity index 100% rename from src/test/rustdoc-gui/label-next-to-symbol.goml rename to tests/rustdoc-gui/label-next-to-symbol.goml diff --git a/src/test/rustdoc-gui/links-color.goml b/tests/rustdoc-gui/links-color.goml similarity index 100% rename from src/test/rustdoc-gui/links-color.goml rename to tests/rustdoc-gui/links-color.goml diff --git a/src/test/rustdoc-gui/list_code_block.goml b/tests/rustdoc-gui/list_code_block.goml similarity index 100% rename from src/test/rustdoc-gui/list_code_block.goml rename to tests/rustdoc-gui/list_code_block.goml diff --git a/src/test/rustdoc-gui/method-margins.goml b/tests/rustdoc-gui/method-margins.goml similarity index 100% rename from src/test/rustdoc-gui/method-margins.goml rename to tests/rustdoc-gui/method-margins.goml diff --git a/src/test/rustdoc-gui/mobile.goml b/tests/rustdoc-gui/mobile.goml similarity index 100% rename from src/test/rustdoc-gui/mobile.goml rename to tests/rustdoc-gui/mobile.goml diff --git a/src/test/rustdoc-gui/module-items-font.goml b/tests/rustdoc-gui/module-items-font.goml similarity index 100% rename from src/test/rustdoc-gui/module-items-font.goml rename to tests/rustdoc-gui/module-items-font.goml diff --git a/src/test/rustdoc-gui/no-docblock.goml b/tests/rustdoc-gui/no-docblock.goml similarity index 100% rename from src/test/rustdoc-gui/no-docblock.goml rename to tests/rustdoc-gui/no-docblock.goml diff --git a/src/test/rustdoc-gui/notable-trait.goml b/tests/rustdoc-gui/notable-trait.goml similarity index 100% rename from src/test/rustdoc-gui/notable-trait.goml rename to tests/rustdoc-gui/notable-trait.goml diff --git a/src/test/rustdoc-gui/overflow-tooltip-information.goml b/tests/rustdoc-gui/overflow-tooltip-information.goml similarity index 100% rename from src/test/rustdoc-gui/overflow-tooltip-information.goml rename to tests/rustdoc-gui/overflow-tooltip-information.goml diff --git a/src/test/rustdoc-gui/pocket-menu.goml b/tests/rustdoc-gui/pocket-menu.goml similarity index 100% rename from src/test/rustdoc-gui/pocket-menu.goml rename to tests/rustdoc-gui/pocket-menu.goml diff --git a/src/test/rustdoc-gui/run-on-hover.goml b/tests/rustdoc-gui/run-on-hover.goml similarity index 100% rename from src/test/rustdoc-gui/run-on-hover.goml rename to tests/rustdoc-gui/run-on-hover.goml diff --git a/src/test/rustdoc-gui/rust-logo.goml b/tests/rustdoc-gui/rust-logo.goml similarity index 100% rename from src/test/rustdoc-gui/rust-logo.goml rename to tests/rustdoc-gui/rust-logo.goml diff --git a/src/test/rustdoc-gui/scrape-examples-button-focus.goml b/tests/rustdoc-gui/scrape-examples-button-focus.goml similarity index 100% rename from src/test/rustdoc-gui/scrape-examples-button-focus.goml rename to tests/rustdoc-gui/scrape-examples-button-focus.goml diff --git a/src/test/rustdoc-gui/scrape-examples-color.goml b/tests/rustdoc-gui/scrape-examples-color.goml similarity index 100% rename from src/test/rustdoc-gui/scrape-examples-color.goml rename to tests/rustdoc-gui/scrape-examples-color.goml diff --git a/src/test/rustdoc-gui/scrape-examples-fonts.goml b/tests/rustdoc-gui/scrape-examples-fonts.goml similarity index 100% rename from src/test/rustdoc-gui/scrape-examples-fonts.goml rename to tests/rustdoc-gui/scrape-examples-fonts.goml diff --git a/src/test/rustdoc-gui/scrape-examples-layout.goml b/tests/rustdoc-gui/scrape-examples-layout.goml similarity index 100% rename from src/test/rustdoc-gui/scrape-examples-layout.goml rename to tests/rustdoc-gui/scrape-examples-layout.goml diff --git a/src/test/rustdoc-gui/scrape-examples-toggle.goml b/tests/rustdoc-gui/scrape-examples-toggle.goml similarity index 100% rename from src/test/rustdoc-gui/scrape-examples-toggle.goml rename to tests/rustdoc-gui/scrape-examples-toggle.goml diff --git a/src/test/rustdoc-gui/search-filter.goml b/tests/rustdoc-gui/search-filter.goml similarity index 100% rename from src/test/rustdoc-gui/search-filter.goml rename to tests/rustdoc-gui/search-filter.goml diff --git a/src/test/rustdoc-gui/search-form-elements.goml b/tests/rustdoc-gui/search-form-elements.goml similarity index 100% rename from src/test/rustdoc-gui/search-form-elements.goml rename to tests/rustdoc-gui/search-form-elements.goml diff --git a/src/test/rustdoc-gui/search-input-mobile.goml b/tests/rustdoc-gui/search-input-mobile.goml similarity index 100% rename from src/test/rustdoc-gui/search-input-mobile.goml rename to tests/rustdoc-gui/search-input-mobile.goml diff --git a/src/test/rustdoc-gui/search-keyboard.goml b/tests/rustdoc-gui/search-keyboard.goml similarity index 100% rename from src/test/rustdoc-gui/search-keyboard.goml rename to tests/rustdoc-gui/search-keyboard.goml diff --git a/src/test/rustdoc-gui/search-no-result.goml b/tests/rustdoc-gui/search-no-result.goml similarity index 100% rename from src/test/rustdoc-gui/search-no-result.goml rename to tests/rustdoc-gui/search-no-result.goml diff --git a/src/test/rustdoc-gui/search-reexport.goml b/tests/rustdoc-gui/search-reexport.goml similarity index 100% rename from src/test/rustdoc-gui/search-reexport.goml rename to tests/rustdoc-gui/search-reexport.goml diff --git a/src/test/rustdoc-gui/search-result-color.goml b/tests/rustdoc-gui/search-result-color.goml similarity index 100% rename from src/test/rustdoc-gui/search-result-color.goml rename to tests/rustdoc-gui/search-result-color.goml diff --git a/src/test/rustdoc-gui/search-result-description.goml b/tests/rustdoc-gui/search-result-description.goml similarity index 100% rename from src/test/rustdoc-gui/search-result-description.goml rename to tests/rustdoc-gui/search-result-description.goml diff --git a/src/test/rustdoc-gui/search-result-display.goml b/tests/rustdoc-gui/search-result-display.goml similarity index 100% rename from src/test/rustdoc-gui/search-result-display.goml rename to tests/rustdoc-gui/search-result-display.goml diff --git a/src/test/rustdoc-gui/search-result-go-to-first.goml b/tests/rustdoc-gui/search-result-go-to-first.goml similarity index 100% rename from src/test/rustdoc-gui/search-result-go-to-first.goml rename to tests/rustdoc-gui/search-result-go-to-first.goml diff --git a/src/test/rustdoc-gui/search-result-keyword.goml b/tests/rustdoc-gui/search-result-keyword.goml similarity index 100% rename from src/test/rustdoc-gui/search-result-keyword.goml rename to tests/rustdoc-gui/search-result-keyword.goml diff --git a/src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml b/tests/rustdoc-gui/search-tab-change-title-fn-sig.goml similarity index 100% rename from src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml rename to tests/rustdoc-gui/search-tab-change-title-fn-sig.goml diff --git a/src/test/rustdoc-gui/search-tab.goml b/tests/rustdoc-gui/search-tab.goml similarity index 100% rename from src/test/rustdoc-gui/search-tab.goml rename to tests/rustdoc-gui/search-tab.goml diff --git a/src/test/rustdoc-gui/settings.goml b/tests/rustdoc-gui/settings.goml similarity index 100% rename from src/test/rustdoc-gui/settings.goml rename to tests/rustdoc-gui/settings.goml diff --git a/src/test/rustdoc-gui/shortcuts.goml b/tests/rustdoc-gui/shortcuts.goml similarity index 100% rename from src/test/rustdoc-gui/shortcuts.goml rename to tests/rustdoc-gui/shortcuts.goml diff --git a/src/test/rustdoc-gui/sidebar-links-color.goml b/tests/rustdoc-gui/sidebar-links-color.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-links-color.goml rename to tests/rustdoc-gui/sidebar-links-color.goml diff --git a/src/test/rustdoc-gui/sidebar-macro-reexport.goml b/tests/rustdoc-gui/sidebar-macro-reexport.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-macro-reexport.goml rename to tests/rustdoc-gui/sidebar-macro-reexport.goml diff --git a/src/test/rustdoc-gui/sidebar-mobile-scroll.goml b/tests/rustdoc-gui/sidebar-mobile-scroll.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-mobile-scroll.goml rename to tests/rustdoc-gui/sidebar-mobile-scroll.goml diff --git a/src/test/rustdoc-gui/sidebar-mobile.goml b/tests/rustdoc-gui/sidebar-mobile.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-mobile.goml rename to tests/rustdoc-gui/sidebar-mobile.goml diff --git a/src/test/rustdoc-gui/sidebar-source-code-display.goml b/tests/rustdoc-gui/sidebar-source-code-display.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-source-code-display.goml rename to tests/rustdoc-gui/sidebar-source-code-display.goml diff --git a/src/test/rustdoc-gui/sidebar-source-code.goml b/tests/rustdoc-gui/sidebar-source-code.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar-source-code.goml rename to tests/rustdoc-gui/sidebar-source-code.goml diff --git a/src/test/rustdoc-gui/sidebar.goml b/tests/rustdoc-gui/sidebar.goml similarity index 100% rename from src/test/rustdoc-gui/sidebar.goml rename to tests/rustdoc-gui/sidebar.goml diff --git a/src/test/rustdoc-gui/source-anchor-scroll.goml b/tests/rustdoc-gui/source-anchor-scroll.goml similarity index 100% rename from src/test/rustdoc-gui/source-anchor-scroll.goml rename to tests/rustdoc-gui/source-anchor-scroll.goml diff --git a/src/test/rustdoc-gui/source-code-page.goml b/tests/rustdoc-gui/source-code-page.goml similarity index 100% rename from src/test/rustdoc-gui/source-code-page.goml rename to tests/rustdoc-gui/source-code-page.goml diff --git a/src/test/rustdoc-gui/src-font-size.goml b/tests/rustdoc-gui/src-font-size.goml similarity index 100% rename from src/test/rustdoc-gui/src-font-size.goml rename to tests/rustdoc-gui/src-font-size.goml diff --git a/src/test/rustdoc-gui/src/huge_logo/Cargo.lock b/tests/rustdoc-gui/src/huge_logo/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/huge_logo/Cargo.lock rename to tests/rustdoc-gui/src/huge_logo/Cargo.lock diff --git a/src/test/rustdoc-gui/src/huge_logo/Cargo.toml b/tests/rustdoc-gui/src/huge_logo/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/huge_logo/Cargo.toml rename to tests/rustdoc-gui/src/huge_logo/Cargo.toml diff --git a/src/test/rustdoc-gui/src/huge_logo/src/lib.rs b/tests/rustdoc-gui/src/huge_logo/src/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/huge_logo/src/lib.rs rename to tests/rustdoc-gui/src/huge_logo/src/lib.rs diff --git a/src/test/rustdoc-gui/src/lib2/Cargo.lock b/tests/rustdoc-gui/src/lib2/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/lib2/Cargo.lock rename to tests/rustdoc-gui/src/lib2/Cargo.lock diff --git a/src/test/rustdoc-gui/src/lib2/Cargo.toml b/tests/rustdoc-gui/src/lib2/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/lib2/Cargo.toml rename to tests/rustdoc-gui/src/lib2/Cargo.toml diff --git a/src/test/rustdoc-gui/src/lib2/another_folder/mod.rs b/tests/rustdoc-gui/src/lib2/another_folder/mod.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/another_folder/mod.rs rename to tests/rustdoc-gui/src/lib2/another_folder/mod.rs diff --git a/src/test/rustdoc-gui/src/lib2/another_folder/sub_mod/mod.rs b/tests/rustdoc-gui/src/lib2/another_folder/sub_mod/mod.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/another_folder/sub_mod/mod.rs rename to tests/rustdoc-gui/src/lib2/another_folder/sub_mod/mod.rs diff --git a/src/test/rustdoc-gui/src/lib2/another_mod/mod.rs b/tests/rustdoc-gui/src/lib2/another_mod/mod.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/another_mod/mod.rs rename to tests/rustdoc-gui/src/lib2/another_mod/mod.rs diff --git a/src/test/rustdoc-gui/src/lib2/http/Cargo.toml b/tests/rustdoc-gui/src/lib2/http/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/lib2/http/Cargo.toml rename to tests/rustdoc-gui/src/lib2/http/Cargo.toml diff --git a/src/test/rustdoc-gui/src/lib2/http/lib.rs b/tests/rustdoc-gui/src/lib2/http/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/http/lib.rs rename to tests/rustdoc-gui/src/lib2/http/lib.rs diff --git a/src/test/rustdoc-gui/src/lib2/implementors/Cargo.lock b/tests/rustdoc-gui/src/lib2/implementors/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/lib2/implementors/Cargo.lock rename to tests/rustdoc-gui/src/lib2/implementors/Cargo.lock diff --git a/src/test/rustdoc-gui/src/lib2/implementors/Cargo.toml b/tests/rustdoc-gui/src/lib2/implementors/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/lib2/implementors/Cargo.toml rename to tests/rustdoc-gui/src/lib2/implementors/Cargo.toml diff --git a/src/test/rustdoc-gui/src/lib2/implementors/lib.rs b/tests/rustdoc-gui/src/lib2/implementors/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/implementors/lib.rs rename to tests/rustdoc-gui/src/lib2/implementors/lib.rs diff --git a/src/test/rustdoc-gui/src/lib2/lib.rs b/tests/rustdoc-gui/src/lib2/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/lib2/lib.rs rename to tests/rustdoc-gui/src/lib2/lib.rs diff --git a/src/test/rustdoc-gui/src/link_to_definition/Cargo.lock b/tests/rustdoc-gui/src/link_to_definition/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/link_to_definition/Cargo.lock rename to tests/rustdoc-gui/src/link_to_definition/Cargo.lock diff --git a/src/test/rustdoc-gui/src/link_to_definition/Cargo.toml b/tests/rustdoc-gui/src/link_to_definition/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/link_to_definition/Cargo.toml rename to tests/rustdoc-gui/src/link_to_definition/Cargo.toml diff --git a/src/test/rustdoc-gui/src/link_to_definition/lib.rs b/tests/rustdoc-gui/src/link_to_definition/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/link_to_definition/lib.rs rename to tests/rustdoc-gui/src/link_to_definition/lib.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/Cargo.lock b/tests/rustdoc-gui/src/scrape_examples/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/Cargo.lock rename to tests/rustdoc-gui/src/scrape_examples/Cargo.lock diff --git a/src/test/rustdoc-gui/src/scrape_examples/Cargo.toml b/tests/rustdoc-gui/src/scrape_examples/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/Cargo.toml rename to tests/rustdoc-gui/src/scrape_examples/Cargo.toml diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-1.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-1.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-1.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-1.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-2.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-2.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-2.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-2.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-3.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-3.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-3.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-3.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-4.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-4.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-4.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-4.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-5.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-5.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-5.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-5.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-6.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-6.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-6.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-6.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check-many-7.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check-many-7.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check-many-7.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check-many-7.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/examples/check.rs b/tests/rustdoc-gui/src/scrape_examples/examples/check.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/examples/check.rs rename to tests/rustdoc-gui/src/scrape_examples/examples/check.rs diff --git a/src/test/rustdoc-gui/src/scrape_examples/src/lib.rs b/tests/rustdoc-gui/src/scrape_examples/src/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/scrape_examples/src/lib.rs rename to tests/rustdoc-gui/src/scrape_examples/src/lib.rs diff --git a/src/test/rustdoc-gui/src/settings/.cargo/config.toml b/tests/rustdoc-gui/src/settings/.cargo/config.toml similarity index 100% rename from src/test/rustdoc-gui/src/settings/.cargo/config.toml rename to tests/rustdoc-gui/src/settings/.cargo/config.toml diff --git a/src/test/rustdoc-gui/src/settings/Cargo.lock b/tests/rustdoc-gui/src/settings/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/settings/Cargo.lock rename to tests/rustdoc-gui/src/settings/Cargo.lock diff --git a/src/test/rustdoc-gui/src/settings/Cargo.toml b/tests/rustdoc-gui/src/settings/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/settings/Cargo.toml rename to tests/rustdoc-gui/src/settings/Cargo.toml diff --git a/src/test/rustdoc-gui/src/settings/lib.rs b/tests/rustdoc-gui/src/settings/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/settings/lib.rs rename to tests/rustdoc-gui/src/settings/lib.rs diff --git a/src/test/rustdoc-gui/src/staged_api/Cargo.lock b/tests/rustdoc-gui/src/staged_api/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/staged_api/Cargo.lock rename to tests/rustdoc-gui/src/staged_api/Cargo.lock diff --git a/src/test/rustdoc-gui/src/staged_api/Cargo.toml b/tests/rustdoc-gui/src/staged_api/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/staged_api/Cargo.toml rename to tests/rustdoc-gui/src/staged_api/Cargo.toml diff --git a/src/test/rustdoc-gui/src/staged_api/lib.rs b/tests/rustdoc-gui/src/staged_api/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/staged_api/lib.rs rename to tests/rustdoc-gui/src/staged_api/lib.rs diff --git a/src/test/rustdoc-gui/src/test_docs/Cargo.lock b/tests/rustdoc-gui/src/test_docs/Cargo.lock similarity index 100% rename from src/test/rustdoc-gui/src/test_docs/Cargo.lock rename to tests/rustdoc-gui/src/test_docs/Cargo.lock diff --git a/src/test/rustdoc-gui/src/test_docs/Cargo.toml b/tests/rustdoc-gui/src/test_docs/Cargo.toml similarity index 100% rename from src/test/rustdoc-gui/src/test_docs/Cargo.toml rename to tests/rustdoc-gui/src/test_docs/Cargo.toml diff --git a/src/test/rustdoc-gui/src/test_docs/build.rs b/tests/rustdoc-gui/src/test_docs/build.rs similarity index 100% rename from src/test/rustdoc-gui/src/test_docs/build.rs rename to tests/rustdoc-gui/src/test_docs/build.rs diff --git a/src/test/rustdoc-gui/src/test_docs/lib.rs b/tests/rustdoc-gui/src/test_docs/lib.rs similarity index 100% rename from src/test/rustdoc-gui/src/test_docs/lib.rs rename to tests/rustdoc-gui/src/test_docs/lib.rs diff --git a/src/test/rustdoc-gui/src/test_docs/macros.rs b/tests/rustdoc-gui/src/test_docs/macros.rs similarity index 100% rename from src/test/rustdoc-gui/src/test_docs/macros.rs rename to tests/rustdoc-gui/src/test_docs/macros.rs diff --git a/src/test/rustdoc-gui/stab-badge.goml b/tests/rustdoc-gui/stab-badge.goml similarity index 100% rename from src/test/rustdoc-gui/stab-badge.goml rename to tests/rustdoc-gui/stab-badge.goml diff --git a/src/test/rustdoc-gui/struct-fields.goml b/tests/rustdoc-gui/struct-fields.goml similarity index 100% rename from src/test/rustdoc-gui/struct-fields.goml rename to tests/rustdoc-gui/struct-fields.goml diff --git a/src/test/rustdoc-gui/target.goml b/tests/rustdoc-gui/target.goml similarity index 100% rename from src/test/rustdoc-gui/target.goml rename to tests/rustdoc-gui/target.goml diff --git a/src/test/rustdoc-gui/theme-change.goml b/tests/rustdoc-gui/theme-change.goml similarity index 100% rename from src/test/rustdoc-gui/theme-change.goml rename to tests/rustdoc-gui/theme-change.goml diff --git a/src/test/rustdoc-gui/theme-in-history.goml b/tests/rustdoc-gui/theme-in-history.goml similarity index 100% rename from src/test/rustdoc-gui/theme-in-history.goml rename to tests/rustdoc-gui/theme-in-history.goml diff --git a/src/test/rustdoc-gui/toggle-click-deadspace.goml b/tests/rustdoc-gui/toggle-click-deadspace.goml similarity index 100% rename from src/test/rustdoc-gui/toggle-click-deadspace.goml rename to tests/rustdoc-gui/toggle-click-deadspace.goml diff --git a/src/test/rustdoc-gui/toggle-docs-mobile.goml b/tests/rustdoc-gui/toggle-docs-mobile.goml similarity index 100% rename from src/test/rustdoc-gui/toggle-docs-mobile.goml rename to tests/rustdoc-gui/toggle-docs-mobile.goml diff --git a/src/test/rustdoc-gui/toggle-docs.goml b/tests/rustdoc-gui/toggle-docs.goml similarity index 100% rename from src/test/rustdoc-gui/toggle-docs.goml rename to tests/rustdoc-gui/toggle-docs.goml diff --git a/src/test/rustdoc-gui/toggle-implementors.goml b/tests/rustdoc-gui/toggle-implementors.goml similarity index 100% rename from src/test/rustdoc-gui/toggle-implementors.goml rename to tests/rustdoc-gui/toggle-implementors.goml diff --git a/src/test/rustdoc-gui/toggled-open-implementations.goml b/tests/rustdoc-gui/toggled-open-implementations.goml similarity index 100% rename from src/test/rustdoc-gui/toggled-open-implementations.goml rename to tests/rustdoc-gui/toggled-open-implementations.goml diff --git a/src/test/rustdoc-gui/trait-sidebar-item-order.goml b/tests/rustdoc-gui/trait-sidebar-item-order.goml similarity index 100% rename from src/test/rustdoc-gui/trait-sidebar-item-order.goml rename to tests/rustdoc-gui/trait-sidebar-item-order.goml diff --git a/src/test/rustdoc-gui/type-declation-overflow.goml b/tests/rustdoc-gui/type-declation-overflow.goml similarity index 100% rename from src/test/rustdoc-gui/type-declation-overflow.goml rename to tests/rustdoc-gui/type-declation-overflow.goml diff --git a/src/test/rustdoc-gui/unsafe-fn.goml b/tests/rustdoc-gui/unsafe-fn.goml similarity index 100% rename from src/test/rustdoc-gui/unsafe-fn.goml rename to tests/rustdoc-gui/unsafe-fn.goml diff --git a/src/test/rustdoc-gui/where-whitespace.goml b/tests/rustdoc-gui/where-whitespace.goml similarity index 100% rename from src/test/rustdoc-gui/where-whitespace.goml rename to tests/rustdoc-gui/where-whitespace.goml diff --git a/src/test/rustdoc-js-std/alias-1.js b/tests/rustdoc-js-std/alias-1.js similarity index 100% rename from src/test/rustdoc-js-std/alias-1.js rename to tests/rustdoc-js-std/alias-1.js diff --git a/src/test/rustdoc-js-std/alias-2.js b/tests/rustdoc-js-std/alias-2.js similarity index 100% rename from src/test/rustdoc-js-std/alias-2.js rename to tests/rustdoc-js-std/alias-2.js diff --git a/src/test/rustdoc-js-std/alias-3.js b/tests/rustdoc-js-std/alias-3.js similarity index 100% rename from src/test/rustdoc-js-std/alias-3.js rename to tests/rustdoc-js-std/alias-3.js diff --git a/src/test/rustdoc-js-std/alias-4.js b/tests/rustdoc-js-std/alias-4.js similarity index 100% rename from src/test/rustdoc-js-std/alias-4.js rename to tests/rustdoc-js-std/alias-4.js diff --git a/src/test/rustdoc-js-std/alias.js b/tests/rustdoc-js-std/alias.js similarity index 100% rename from src/test/rustdoc-js-std/alias.js rename to tests/rustdoc-js-std/alias.js diff --git a/src/test/rustdoc-js-std/asrawfd.js b/tests/rustdoc-js-std/asrawfd.js similarity index 100% rename from src/test/rustdoc-js-std/asrawfd.js rename to tests/rustdoc-js-std/asrawfd.js diff --git a/src/test/rustdoc-js-std/basic.js b/tests/rustdoc-js-std/basic.js similarity index 100% rename from src/test/rustdoc-js-std/basic.js rename to tests/rustdoc-js-std/basic.js diff --git a/src/test/rustdoc-js-std/deduplication.js b/tests/rustdoc-js-std/deduplication.js similarity index 100% rename from src/test/rustdoc-js-std/deduplication.js rename to tests/rustdoc-js-std/deduplication.js diff --git a/src/test/rustdoc-js-std/enum-option.js b/tests/rustdoc-js-std/enum-option.js similarity index 100% rename from src/test/rustdoc-js-std/enum-option.js rename to tests/rustdoc-js-std/enum-option.js diff --git a/src/test/rustdoc-js-std/filter-crate.js b/tests/rustdoc-js-std/filter-crate.js similarity index 100% rename from src/test/rustdoc-js-std/filter-crate.js rename to tests/rustdoc-js-std/filter-crate.js diff --git a/src/test/rustdoc-js-std/fn-forget.js b/tests/rustdoc-js-std/fn-forget.js similarity index 100% rename from src/test/rustdoc-js-std/fn-forget.js rename to tests/rustdoc-js-std/fn-forget.js diff --git a/src/test/rustdoc-js-std/from_u.js b/tests/rustdoc-js-std/from_u.js similarity index 100% rename from src/test/rustdoc-js-std/from_u.js rename to tests/rustdoc-js-std/from_u.js diff --git a/src/test/rustdoc-js-std/keyword.js b/tests/rustdoc-js-std/keyword.js similarity index 100% rename from src/test/rustdoc-js-std/keyword.js rename to tests/rustdoc-js-std/keyword.js diff --git a/src/test/rustdoc-js-std/macro-check.js b/tests/rustdoc-js-std/macro-check.js similarity index 100% rename from src/test/rustdoc-js-std/macro-check.js rename to tests/rustdoc-js-std/macro-check.js diff --git a/src/test/rustdoc-js-std/macro-print.js b/tests/rustdoc-js-std/macro-print.js similarity index 100% rename from src/test/rustdoc-js-std/macro-print.js rename to tests/rustdoc-js-std/macro-print.js diff --git a/src/test/rustdoc-js-std/never.js b/tests/rustdoc-js-std/never.js similarity index 100% rename from src/test/rustdoc-js-std/never.js rename to tests/rustdoc-js-std/never.js diff --git a/src/test/rustdoc-js-std/parser-errors.js b/tests/rustdoc-js-std/parser-errors.js similarity index 100% rename from src/test/rustdoc-js-std/parser-errors.js rename to tests/rustdoc-js-std/parser-errors.js diff --git a/src/test/rustdoc-js-std/parser-filter.js b/tests/rustdoc-js-std/parser-filter.js similarity index 100% rename from src/test/rustdoc-js-std/parser-filter.js rename to tests/rustdoc-js-std/parser-filter.js diff --git a/src/test/rustdoc-js-std/parser-generics.js b/tests/rustdoc-js-std/parser-generics.js similarity index 100% rename from src/test/rustdoc-js-std/parser-generics.js rename to tests/rustdoc-js-std/parser-generics.js diff --git a/src/test/rustdoc-js-std/parser-ident.js b/tests/rustdoc-js-std/parser-ident.js similarity index 100% rename from src/test/rustdoc-js-std/parser-ident.js rename to tests/rustdoc-js-std/parser-ident.js diff --git a/src/test/rustdoc-js-std/parser-literal.js b/tests/rustdoc-js-std/parser-literal.js similarity index 100% rename from src/test/rustdoc-js-std/parser-literal.js rename to tests/rustdoc-js-std/parser-literal.js diff --git a/src/test/rustdoc-js-std/parser-paths.js b/tests/rustdoc-js-std/parser-paths.js similarity index 100% rename from src/test/rustdoc-js-std/parser-paths.js rename to tests/rustdoc-js-std/parser-paths.js diff --git a/src/test/rustdoc-js-std/parser-quote.js b/tests/rustdoc-js-std/parser-quote.js similarity index 100% rename from src/test/rustdoc-js-std/parser-quote.js rename to tests/rustdoc-js-std/parser-quote.js diff --git a/src/test/rustdoc-js-std/parser-returned.js b/tests/rustdoc-js-std/parser-returned.js similarity index 100% rename from src/test/rustdoc-js-std/parser-returned.js rename to tests/rustdoc-js-std/parser-returned.js diff --git a/src/test/rustdoc-js-std/parser-separators.js b/tests/rustdoc-js-std/parser-separators.js similarity index 100% rename from src/test/rustdoc-js-std/parser-separators.js rename to tests/rustdoc-js-std/parser-separators.js diff --git a/src/test/rustdoc-js-std/parser-weird-queries.js b/tests/rustdoc-js-std/parser-weird-queries.js similarity index 100% rename from src/test/rustdoc-js-std/parser-weird-queries.js rename to tests/rustdoc-js-std/parser-weird-queries.js diff --git a/src/test/rustdoc-js-std/path-ordering.js b/tests/rustdoc-js-std/path-ordering.js similarity index 100% rename from src/test/rustdoc-js-std/path-ordering.js rename to tests/rustdoc-js-std/path-ordering.js diff --git a/src/test/rustdoc-js-std/primitive.js b/tests/rustdoc-js-std/primitive.js similarity index 100% rename from src/test/rustdoc-js-std/primitive.js rename to tests/rustdoc-js-std/primitive.js diff --git a/src/test/rustdoc-js-std/quoted.js b/tests/rustdoc-js-std/quoted.js similarity index 100% rename from src/test/rustdoc-js-std/quoted.js rename to tests/rustdoc-js-std/quoted.js diff --git a/src/test/rustdoc-js-std/return-specific-literal.js b/tests/rustdoc-js-std/return-specific-literal.js similarity index 100% rename from src/test/rustdoc-js-std/return-specific-literal.js rename to tests/rustdoc-js-std/return-specific-literal.js diff --git a/src/test/rustdoc-js-std/return-specific.js b/tests/rustdoc-js-std/return-specific.js similarity index 100% rename from src/test/rustdoc-js-std/return-specific.js rename to tests/rustdoc-js-std/return-specific.js diff --git a/src/test/rustdoc-js-std/should-fail.js b/tests/rustdoc-js-std/should-fail.js similarity index 100% rename from src/test/rustdoc-js-std/should-fail.js rename to tests/rustdoc-js-std/should-fail.js diff --git a/src/test/rustdoc-js-std/string-from_ut.js b/tests/rustdoc-js-std/string-from_ut.js similarity index 100% rename from src/test/rustdoc-js-std/string-from_ut.js rename to tests/rustdoc-js-std/string-from_ut.js diff --git a/src/test/rustdoc-js-std/struct-vec.js b/tests/rustdoc-js-std/struct-vec.js similarity index 100% rename from src/test/rustdoc-js-std/struct-vec.js rename to tests/rustdoc-js-std/struct-vec.js diff --git a/src/test/rustdoc-js-std/typed-query.js b/tests/rustdoc-js-std/typed-query.js similarity index 100% rename from src/test/rustdoc-js-std/typed-query.js rename to tests/rustdoc-js-std/typed-query.js diff --git a/src/test/rustdoc-js-std/vec-new.js b/tests/rustdoc-js-std/vec-new.js similarity index 100% rename from src/test/rustdoc-js-std/vec-new.js rename to tests/rustdoc-js-std/vec-new.js diff --git a/src/test/rustdoc-js/basic.js b/tests/rustdoc-js/basic.js similarity index 100% rename from src/test/rustdoc-js/basic.js rename to tests/rustdoc-js/basic.js diff --git a/src/test/rustdoc-js/basic.rs b/tests/rustdoc-js/basic.rs similarity index 100% rename from src/test/rustdoc-js/basic.rs rename to tests/rustdoc-js/basic.rs diff --git a/src/test/rustdoc-js/doc-alias-filter-out.js b/tests/rustdoc-js/doc-alias-filter-out.js similarity index 100% rename from src/test/rustdoc-js/doc-alias-filter-out.js rename to tests/rustdoc-js/doc-alias-filter-out.js diff --git a/src/test/rustdoc-js/doc-alias-filter-out.rs b/tests/rustdoc-js/doc-alias-filter-out.rs similarity index 100% rename from src/test/rustdoc-js/doc-alias-filter-out.rs rename to tests/rustdoc-js/doc-alias-filter-out.rs diff --git a/src/test/rustdoc-js/doc-alias-filter.js b/tests/rustdoc-js/doc-alias-filter.js similarity index 100% rename from src/test/rustdoc-js/doc-alias-filter.js rename to tests/rustdoc-js/doc-alias-filter.js diff --git a/src/test/rustdoc-js/doc-alias-filter.rs b/tests/rustdoc-js/doc-alias-filter.rs similarity index 100% rename from src/test/rustdoc-js/doc-alias-filter.rs rename to tests/rustdoc-js/doc-alias-filter.rs diff --git a/src/test/rustdoc-js/doc-alias-whitespace.js b/tests/rustdoc-js/doc-alias-whitespace.js similarity index 100% rename from src/test/rustdoc-js/doc-alias-whitespace.js rename to tests/rustdoc-js/doc-alias-whitespace.js diff --git a/src/test/rustdoc-js/doc-alias-whitespace.rs b/tests/rustdoc-js/doc-alias-whitespace.rs similarity index 100% rename from src/test/rustdoc-js/doc-alias-whitespace.rs rename to tests/rustdoc-js/doc-alias-whitespace.rs diff --git a/src/test/rustdoc-js/doc-alias.js b/tests/rustdoc-js/doc-alias.js similarity index 100% rename from src/test/rustdoc-js/doc-alias.js rename to tests/rustdoc-js/doc-alias.js diff --git a/src/test/rustdoc-js/doc-alias.rs b/tests/rustdoc-js/doc-alias.rs similarity index 100% rename from src/test/rustdoc-js/doc-alias.rs rename to tests/rustdoc-js/doc-alias.rs diff --git a/src/test/rustdoc-js/exact-match.js b/tests/rustdoc-js/exact-match.js similarity index 100% rename from src/test/rustdoc-js/exact-match.js rename to tests/rustdoc-js/exact-match.js diff --git a/src/test/rustdoc-js/exact-match.rs b/tests/rustdoc-js/exact-match.rs similarity index 100% rename from src/test/rustdoc-js/exact-match.rs rename to tests/rustdoc-js/exact-match.rs diff --git a/src/test/rustdoc-js/foreign-type-path.js b/tests/rustdoc-js/foreign-type-path.js similarity index 100% rename from src/test/rustdoc-js/foreign-type-path.js rename to tests/rustdoc-js/foreign-type-path.js diff --git a/src/test/rustdoc-js/foreign-type-path.rs b/tests/rustdoc-js/foreign-type-path.rs similarity index 100% rename from src/test/rustdoc-js/foreign-type-path.rs rename to tests/rustdoc-js/foreign-type-path.rs diff --git a/src/test/rustdoc-js/generics-impl.js b/tests/rustdoc-js/generics-impl.js similarity index 100% rename from src/test/rustdoc-js/generics-impl.js rename to tests/rustdoc-js/generics-impl.js diff --git a/src/test/rustdoc-js/generics-impl.rs b/tests/rustdoc-js/generics-impl.rs similarity index 100% rename from src/test/rustdoc-js/generics-impl.rs rename to tests/rustdoc-js/generics-impl.rs diff --git a/src/test/rustdoc-js/generics-multi-trait.js b/tests/rustdoc-js/generics-multi-trait.js similarity index 100% rename from src/test/rustdoc-js/generics-multi-trait.js rename to tests/rustdoc-js/generics-multi-trait.js diff --git a/src/test/rustdoc-js/generics-multi-trait.rs b/tests/rustdoc-js/generics-multi-trait.rs similarity index 100% rename from src/test/rustdoc-js/generics-multi-trait.rs rename to tests/rustdoc-js/generics-multi-trait.rs diff --git a/src/test/rustdoc-js/generics-trait.js b/tests/rustdoc-js/generics-trait.js similarity index 100% rename from src/test/rustdoc-js/generics-trait.js rename to tests/rustdoc-js/generics-trait.js diff --git a/src/test/rustdoc-js/generics-trait.rs b/tests/rustdoc-js/generics-trait.rs similarity index 100% rename from src/test/rustdoc-js/generics-trait.rs rename to tests/rustdoc-js/generics-trait.rs diff --git a/src/test/rustdoc-js/generics.js b/tests/rustdoc-js/generics.js similarity index 100% rename from src/test/rustdoc-js/generics.js rename to tests/rustdoc-js/generics.js diff --git a/src/test/rustdoc-js/generics.rs b/tests/rustdoc-js/generics.rs similarity index 100% rename from src/test/rustdoc-js/generics.rs rename to tests/rustdoc-js/generics.rs diff --git a/src/test/rustdoc-js/impl-trait.js b/tests/rustdoc-js/impl-trait.js similarity index 100% rename from src/test/rustdoc-js/impl-trait.js rename to tests/rustdoc-js/impl-trait.js diff --git a/src/test/rustdoc-js/impl-trait.rs b/tests/rustdoc-js/impl-trait.rs similarity index 100% rename from src/test/rustdoc-js/impl-trait.rs rename to tests/rustdoc-js/impl-trait.rs diff --git a/src/test/rustdoc-js/module-substring.js b/tests/rustdoc-js/module-substring.js similarity index 100% rename from src/test/rustdoc-js/module-substring.js rename to tests/rustdoc-js/module-substring.js diff --git a/src/test/rustdoc-js/module-substring.rs b/tests/rustdoc-js/module-substring.rs similarity index 100% rename from src/test/rustdoc-js/module-substring.rs rename to tests/rustdoc-js/module-substring.rs diff --git a/src/test/rustdoc-js/path-ordering.js b/tests/rustdoc-js/path-ordering.js similarity index 100% rename from src/test/rustdoc-js/path-ordering.js rename to tests/rustdoc-js/path-ordering.js diff --git a/src/test/rustdoc-js/path-ordering.rs b/tests/rustdoc-js/path-ordering.rs similarity index 100% rename from src/test/rustdoc-js/path-ordering.rs rename to tests/rustdoc-js/path-ordering.rs diff --git a/src/test/rustdoc-js/primitive.js b/tests/rustdoc-js/primitive.js similarity index 100% rename from src/test/rustdoc-js/primitive.js rename to tests/rustdoc-js/primitive.js diff --git a/src/test/rustdoc-js/primitive.rs b/tests/rustdoc-js/primitive.rs similarity index 100% rename from src/test/rustdoc-js/primitive.rs rename to tests/rustdoc-js/primitive.rs diff --git a/src/test/rustdoc-js/prototype.js b/tests/rustdoc-js/prototype.js similarity index 100% rename from src/test/rustdoc-js/prototype.js rename to tests/rustdoc-js/prototype.js diff --git a/src/test/rustdoc-js/prototype.rs b/tests/rustdoc-js/prototype.rs similarity index 100% rename from src/test/rustdoc-js/prototype.rs rename to tests/rustdoc-js/prototype.rs diff --git a/src/test/rustdoc-js/raw-pointer.js b/tests/rustdoc-js/raw-pointer.js similarity index 100% rename from src/test/rustdoc-js/raw-pointer.js rename to tests/rustdoc-js/raw-pointer.js diff --git a/src/test/rustdoc-js/raw-pointer.rs b/tests/rustdoc-js/raw-pointer.rs similarity index 100% rename from src/test/rustdoc-js/raw-pointer.rs rename to tests/rustdoc-js/raw-pointer.rs diff --git a/src/test/rustdoc-js/reexport.js b/tests/rustdoc-js/reexport.js similarity index 100% rename from src/test/rustdoc-js/reexport.js rename to tests/rustdoc-js/reexport.js diff --git a/src/test/rustdoc-js/reexport.rs b/tests/rustdoc-js/reexport.rs similarity index 100% rename from src/test/rustdoc-js/reexport.rs rename to tests/rustdoc-js/reexport.rs diff --git a/src/test/rustdoc-js/search-short-types.js b/tests/rustdoc-js/search-short-types.js similarity index 100% rename from src/test/rustdoc-js/search-short-types.js rename to tests/rustdoc-js/search-short-types.js diff --git a/src/test/rustdoc-js/search-short-types.rs b/tests/rustdoc-js/search-short-types.rs similarity index 100% rename from src/test/rustdoc-js/search-short-types.rs rename to tests/rustdoc-js/search-short-types.rs diff --git a/src/test/rustdoc-js/struct-like-variant.js b/tests/rustdoc-js/struct-like-variant.js similarity index 100% rename from src/test/rustdoc-js/struct-like-variant.js rename to tests/rustdoc-js/struct-like-variant.js diff --git a/src/test/rustdoc-js/struct-like-variant.rs b/tests/rustdoc-js/struct-like-variant.rs similarity index 100% rename from src/test/rustdoc-js/struct-like-variant.rs rename to tests/rustdoc-js/struct-like-variant.rs diff --git a/src/test/rustdoc-js/substring.js b/tests/rustdoc-js/substring.js similarity index 100% rename from src/test/rustdoc-js/substring.js rename to tests/rustdoc-js/substring.js diff --git a/src/test/rustdoc-js/substring.rs b/tests/rustdoc-js/substring.rs similarity index 100% rename from src/test/rustdoc-js/substring.rs rename to tests/rustdoc-js/substring.rs diff --git a/src/test/rustdoc-js/summaries.js b/tests/rustdoc-js/summaries.js similarity index 100% rename from src/test/rustdoc-js/summaries.js rename to tests/rustdoc-js/summaries.js diff --git a/src/test/rustdoc-js/summaries.rs b/tests/rustdoc-js/summaries.rs similarity index 100% rename from src/test/rustdoc-js/summaries.rs rename to tests/rustdoc-js/summaries.rs diff --git a/src/test/rustdoc-json/assoc_items.rs b/tests/rustdoc-json/assoc_items.rs similarity index 100% rename from src/test/rustdoc-json/assoc_items.rs rename to tests/rustdoc-json/assoc_items.rs diff --git a/src/test/rustdoc-json/assoc_type.rs b/tests/rustdoc-json/assoc_type.rs similarity index 100% rename from src/test/rustdoc-json/assoc_type.rs rename to tests/rustdoc-json/assoc_type.rs diff --git a/src/test/rustdoc-json/blanket_impls.rs b/tests/rustdoc-json/blanket_impls.rs similarity index 100% rename from src/test/rustdoc-json/blanket_impls.rs rename to tests/rustdoc-json/blanket_impls.rs diff --git a/src/test/rustdoc-json/doc_hidden_failure.rs b/tests/rustdoc-json/doc_hidden_failure.rs similarity index 100% rename from src/test/rustdoc-json/doc_hidden_failure.rs rename to tests/rustdoc-json/doc_hidden_failure.rs diff --git a/src/test/rustdoc-json/enums/auxiliary/color.rs b/tests/rustdoc-json/enums/auxiliary/color.rs similarity index 100% rename from src/test/rustdoc-json/enums/auxiliary/color.rs rename to tests/rustdoc-json/enums/auxiliary/color.rs diff --git a/src/test/rustdoc-json/enums/discriminant/basic.rs b/tests/rustdoc-json/enums/discriminant/basic.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/basic.rs rename to tests/rustdoc-json/enums/discriminant/basic.rs diff --git a/src/test/rustdoc-json/enums/discriminant/expr.rs b/tests/rustdoc-json/enums/discriminant/expr.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/expr.rs rename to tests/rustdoc-json/enums/discriminant/expr.rs diff --git a/src/test/rustdoc-json/enums/discriminant/limits.rs b/tests/rustdoc-json/enums/discriminant/limits.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/limits.rs rename to tests/rustdoc-json/enums/discriminant/limits.rs diff --git a/src/test/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs b/tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs rename to tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs diff --git a/src/test/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs b/tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs rename to tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs diff --git a/src/test/rustdoc-json/enums/discriminant/struct.rs b/tests/rustdoc-json/enums/discriminant/struct.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/struct.rs rename to tests/rustdoc-json/enums/discriminant/struct.rs diff --git a/src/test/rustdoc-json/enums/discriminant/tuple.rs b/tests/rustdoc-json/enums/discriminant/tuple.rs similarity index 100% rename from src/test/rustdoc-json/enums/discriminant/tuple.rs rename to tests/rustdoc-json/enums/discriminant/tuple.rs diff --git a/src/test/rustdoc-json/enums/doc_link_to_foreign_variant.rs b/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs similarity index 100% rename from src/test/rustdoc-json/enums/doc_link_to_foreign_variant.rs rename to tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs diff --git a/src/test/rustdoc-json/enums/field_hidden.rs b/tests/rustdoc-json/enums/field_hidden.rs similarity index 100% rename from src/test/rustdoc-json/enums/field_hidden.rs rename to tests/rustdoc-json/enums/field_hidden.rs diff --git a/src/test/rustdoc-json/enums/kind.rs b/tests/rustdoc-json/enums/kind.rs similarity index 100% rename from src/test/rustdoc-json/enums/kind.rs rename to tests/rustdoc-json/enums/kind.rs diff --git a/src/test/rustdoc-json/enums/struct_field_hidden.rs b/tests/rustdoc-json/enums/struct_field_hidden.rs similarity index 100% rename from src/test/rustdoc-json/enums/struct_field_hidden.rs rename to tests/rustdoc-json/enums/struct_field_hidden.rs diff --git a/src/test/rustdoc-json/enums/tuple_fields_hidden.rs b/tests/rustdoc-json/enums/tuple_fields_hidden.rs similarity index 100% rename from src/test/rustdoc-json/enums/tuple_fields_hidden.rs rename to tests/rustdoc-json/enums/tuple_fields_hidden.rs diff --git a/src/test/rustdoc-json/enums/use_glob.rs b/tests/rustdoc-json/enums/use_glob.rs similarity index 100% rename from src/test/rustdoc-json/enums/use_glob.rs rename to tests/rustdoc-json/enums/use_glob.rs diff --git a/src/test/rustdoc-json/enums/use_variant.rs b/tests/rustdoc-json/enums/use_variant.rs similarity index 100% rename from src/test/rustdoc-json/enums/use_variant.rs rename to tests/rustdoc-json/enums/use_variant.rs diff --git a/src/test/rustdoc-json/enums/use_variant_foreign.rs b/tests/rustdoc-json/enums/use_variant_foreign.rs similarity index 100% rename from src/test/rustdoc-json/enums/use_variant_foreign.rs rename to tests/rustdoc-json/enums/use_variant_foreign.rs diff --git a/src/test/rustdoc-json/enums/variant_struct.rs b/tests/rustdoc-json/enums/variant_struct.rs similarity index 100% rename from src/test/rustdoc-json/enums/variant_struct.rs rename to tests/rustdoc-json/enums/variant_struct.rs diff --git a/src/test/rustdoc-json/enums/variant_tuple_struct.rs b/tests/rustdoc-json/enums/variant_tuple_struct.rs similarity index 100% rename from src/test/rustdoc-json/enums/variant_tuple_struct.rs rename to tests/rustdoc-json/enums/variant_tuple_struct.rs diff --git a/src/test/rustdoc-json/fn_pointer/abi.rs b/tests/rustdoc-json/fn_pointer/abi.rs similarity index 100% rename from src/test/rustdoc-json/fn_pointer/abi.rs rename to tests/rustdoc-json/fn_pointer/abi.rs diff --git a/src/test/rustdoc-json/fn_pointer/generics.rs b/tests/rustdoc-json/fn_pointer/generics.rs similarity index 100% rename from src/test/rustdoc-json/fn_pointer/generics.rs rename to tests/rustdoc-json/fn_pointer/generics.rs diff --git a/src/test/rustdoc-json/fn_pointer/qualifiers.rs b/tests/rustdoc-json/fn_pointer/qualifiers.rs similarity index 100% rename from src/test/rustdoc-json/fn_pointer/qualifiers.rs rename to tests/rustdoc-json/fn_pointer/qualifiers.rs diff --git a/src/test/rustdoc-json/fns/abi.rs b/tests/rustdoc-json/fns/abi.rs similarity index 100% rename from src/test/rustdoc-json/fns/abi.rs rename to tests/rustdoc-json/fns/abi.rs diff --git a/src/test/rustdoc-json/fns/async_return.rs b/tests/rustdoc-json/fns/async_return.rs similarity index 100% rename from src/test/rustdoc-json/fns/async_return.rs rename to tests/rustdoc-json/fns/async_return.rs diff --git a/src/test/rustdoc-json/fns/generic_args.rs b/tests/rustdoc-json/fns/generic_args.rs similarity index 100% rename from src/test/rustdoc-json/fns/generic_args.rs rename to tests/rustdoc-json/fns/generic_args.rs diff --git a/src/test/rustdoc-json/fns/generic_returns.rs b/tests/rustdoc-json/fns/generic_returns.rs similarity index 100% rename from src/test/rustdoc-json/fns/generic_returns.rs rename to tests/rustdoc-json/fns/generic_returns.rs diff --git a/src/test/rustdoc-json/fns/generics.rs b/tests/rustdoc-json/fns/generics.rs similarity index 100% rename from src/test/rustdoc-json/fns/generics.rs rename to tests/rustdoc-json/fns/generics.rs diff --git a/src/test/rustdoc-json/fns/pattern_arg.rs b/tests/rustdoc-json/fns/pattern_arg.rs similarity index 100% rename from src/test/rustdoc-json/fns/pattern_arg.rs rename to tests/rustdoc-json/fns/pattern_arg.rs diff --git a/src/test/rustdoc-json/fns/qualifiers.rs b/tests/rustdoc-json/fns/qualifiers.rs similarity index 100% rename from src/test/rustdoc-json/fns/qualifiers.rs rename to tests/rustdoc-json/fns/qualifiers.rs diff --git a/src/test/rustdoc-json/fns/return_type_alias.rs b/tests/rustdoc-json/fns/return_type_alias.rs similarity index 100% rename from src/test/rustdoc-json/fns/return_type_alias.rs rename to tests/rustdoc-json/fns/return_type_alias.rs diff --git a/src/test/rustdoc-json/generic-associated-types/gats.rs b/tests/rustdoc-json/generic-associated-types/gats.rs similarity index 100% rename from src/test/rustdoc-json/generic-associated-types/gats.rs rename to tests/rustdoc-json/generic-associated-types/gats.rs diff --git a/src/test/rustdoc-json/generic_impl.rs b/tests/rustdoc-json/generic_impl.rs similarity index 100% rename from src/test/rustdoc-json/generic_impl.rs rename to tests/rustdoc-json/generic_impl.rs diff --git a/src/test/rustdoc-json/glob_import.rs b/tests/rustdoc-json/glob_import.rs similarity index 100% rename from src/test/rustdoc-json/glob_import.rs rename to tests/rustdoc-json/glob_import.rs diff --git a/src/test/rustdoc-json/impls/auto.rs b/tests/rustdoc-json/impls/auto.rs similarity index 100% rename from src/test/rustdoc-json/impls/auto.rs rename to tests/rustdoc-json/impls/auto.rs diff --git a/src/test/rustdoc-json/impls/auxiliary/foreign_struct.rs b/tests/rustdoc-json/impls/auxiliary/foreign_struct.rs similarity index 100% rename from src/test/rustdoc-json/impls/auxiliary/foreign_struct.rs rename to tests/rustdoc-json/impls/auxiliary/foreign_struct.rs diff --git a/src/test/rustdoc-json/impls/auxiliary/foreign_trait.rs b/tests/rustdoc-json/impls/auxiliary/foreign_trait.rs similarity index 100% rename from src/test/rustdoc-json/impls/auxiliary/foreign_trait.rs rename to tests/rustdoc-json/impls/auxiliary/foreign_trait.rs diff --git a/src/test/rustdoc-json/impls/blanket_with_local.rs b/tests/rustdoc-json/impls/blanket_with_local.rs similarity index 100% rename from src/test/rustdoc-json/impls/blanket_with_local.rs rename to tests/rustdoc-json/impls/blanket_with_local.rs diff --git a/src/test/rustdoc-json/impls/foreign_for_local.rs b/tests/rustdoc-json/impls/foreign_for_local.rs similarity index 100% rename from src/test/rustdoc-json/impls/foreign_for_local.rs rename to tests/rustdoc-json/impls/foreign_for_local.rs diff --git a/src/test/rustdoc-json/impls/import_from_private.rs b/tests/rustdoc-json/impls/import_from_private.rs similarity index 100% rename from src/test/rustdoc-json/impls/import_from_private.rs rename to tests/rustdoc-json/impls/import_from_private.rs diff --git a/src/test/rustdoc-json/impls/local_for_foreign.rs b/tests/rustdoc-json/impls/local_for_foreign.rs similarity index 100% rename from src/test/rustdoc-json/impls/local_for_foreign.rs rename to tests/rustdoc-json/impls/local_for_foreign.rs diff --git a/src/test/rustdoc-json/impls/local_for_local.rs b/tests/rustdoc-json/impls/local_for_local.rs similarity index 100% rename from src/test/rustdoc-json/impls/local_for_local.rs rename to tests/rustdoc-json/impls/local_for_local.rs diff --git a/src/test/rustdoc-json/impls/local_for_local_primitive.rs b/tests/rustdoc-json/impls/local_for_local_primitive.rs similarity index 100% rename from src/test/rustdoc-json/impls/local_for_local_primitive.rs rename to tests/rustdoc-json/impls/local_for_local_primitive.rs diff --git a/src/test/rustdoc-json/impls/local_for_primitive.rs b/tests/rustdoc-json/impls/local_for_primitive.rs similarity index 100% rename from src/test/rustdoc-json/impls/local_for_primitive.rs rename to tests/rustdoc-json/impls/local_for_primitive.rs diff --git a/src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs b/tests/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs similarity index 100% rename from src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs rename to tests/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs diff --git a/src/test/rustdoc-json/intra-doc-links/foreign_variant.rs b/tests/rustdoc-json/intra-doc-links/foreign_variant.rs similarity index 100% rename from src/test/rustdoc-json/intra-doc-links/foreign_variant.rs rename to tests/rustdoc-json/intra-doc-links/foreign_variant.rs diff --git a/src/test/rustdoc-json/intra-doc-links/non_page.rs b/tests/rustdoc-json/intra-doc-links/non_page.rs similarity index 100% rename from src/test/rustdoc-json/intra-doc-links/non_page.rs rename to tests/rustdoc-json/intra-doc-links/non_page.rs diff --git a/src/test/rustdoc-json/intra-doc-links/user_written.rs b/tests/rustdoc-json/intra-doc-links/user_written.rs similarity index 100% rename from src/test/rustdoc-json/intra-doc-links/user_written.rs rename to tests/rustdoc-json/intra-doc-links/user_written.rs diff --git a/src/test/rustdoc-json/keyword.rs b/tests/rustdoc-json/keyword.rs similarity index 100% rename from src/test/rustdoc-json/keyword.rs rename to tests/rustdoc-json/keyword.rs diff --git a/src/test/rustdoc-json/lifetime/longest.rs b/tests/rustdoc-json/lifetime/longest.rs similarity index 100% rename from src/test/rustdoc-json/lifetime/longest.rs rename to tests/rustdoc-json/lifetime/longest.rs diff --git a/src/test/rustdoc-json/lifetime/outlives.rs b/tests/rustdoc-json/lifetime/outlives.rs similarity index 100% rename from src/test/rustdoc-json/lifetime/outlives.rs rename to tests/rustdoc-json/lifetime/outlives.rs diff --git a/src/test/rustdoc-json/methods/abi.rs b/tests/rustdoc-json/methods/abi.rs similarity index 100% rename from src/test/rustdoc-json/methods/abi.rs rename to tests/rustdoc-json/methods/abi.rs diff --git a/src/test/rustdoc-json/methods/qualifiers.rs b/tests/rustdoc-json/methods/qualifiers.rs similarity index 100% rename from src/test/rustdoc-json/methods/qualifiers.rs rename to tests/rustdoc-json/methods/qualifiers.rs diff --git a/src/test/rustdoc-json/nested.rs b/tests/rustdoc-json/nested.rs similarity index 100% rename from src/test/rustdoc-json/nested.rs rename to tests/rustdoc-json/nested.rs diff --git a/src/test/rustdoc-json/output_generics.rs b/tests/rustdoc-json/output_generics.rs similarity index 100% rename from src/test/rustdoc-json/output_generics.rs rename to tests/rustdoc-json/output_generics.rs diff --git a/src/test/rustdoc-json/primitives/local_primitive.rs b/tests/rustdoc-json/primitives/local_primitive.rs similarity index 100% rename from src/test/rustdoc-json/primitives/local_primitive.rs rename to tests/rustdoc-json/primitives/local_primitive.rs diff --git a/src/test/rustdoc-json/primitives/primitive_impls.rs b/tests/rustdoc-json/primitives/primitive_impls.rs similarity index 100% rename from src/test/rustdoc-json/primitives/primitive_impls.rs rename to tests/rustdoc-json/primitives/primitive_impls.rs diff --git a/src/test/rustdoc-json/primitives/primitive_overloading.rs b/tests/rustdoc-json/primitives/primitive_overloading.rs similarity index 100% rename from src/test/rustdoc-json/primitives/primitive_overloading.rs rename to tests/rustdoc-json/primitives/primitive_overloading.rs diff --git a/src/test/rustdoc-json/primitives/primitive_type.rs b/tests/rustdoc-json/primitives/primitive_type.rs similarity index 100% rename from src/test/rustdoc-json/primitives/primitive_type.rs rename to tests/rustdoc-json/primitives/primitive_type.rs diff --git a/src/test/rustdoc-json/primitives/use_primitive.rs b/tests/rustdoc-json/primitives/use_primitive.rs similarity index 100% rename from src/test/rustdoc-json/primitives/use_primitive.rs rename to tests/rustdoc-json/primitives/use_primitive.rs diff --git a/src/test/rustdoc-json/reexport/auxiliary/pub-struct.rs b/tests/rustdoc-json/reexport/auxiliary/pub-struct.rs similarity index 100% rename from src/test/rustdoc-json/reexport/auxiliary/pub-struct.rs rename to tests/rustdoc-json/reexport/auxiliary/pub-struct.rs diff --git a/src/test/rustdoc-json/reexport/auxiliary/trait_with_docs.rs b/tests/rustdoc-json/reexport/auxiliary/trait_with_docs.rs similarity index 100% rename from src/test/rustdoc-json/reexport/auxiliary/trait_with_docs.rs rename to tests/rustdoc-json/reexport/auxiliary/trait_with_docs.rs diff --git a/src/test/rustdoc-json/reexport/export_extern_crate_as_self.rs b/tests/rustdoc-json/reexport/export_extern_crate_as_self.rs similarity index 100% rename from src/test/rustdoc-json/reexport/export_extern_crate_as_self.rs rename to tests/rustdoc-json/reexport/export_extern_crate_as_self.rs diff --git a/src/test/rustdoc-json/reexport/glob_collision.rs b/tests/rustdoc-json/reexport/glob_collision.rs similarity index 100% rename from src/test/rustdoc-json/reexport/glob_collision.rs rename to tests/rustdoc-json/reexport/glob_collision.rs diff --git a/src/test/rustdoc-json/reexport/glob_empty_mod.rs b/tests/rustdoc-json/reexport/glob_empty_mod.rs similarity index 100% rename from src/test/rustdoc-json/reexport/glob_empty_mod.rs rename to tests/rustdoc-json/reexport/glob_empty_mod.rs diff --git a/src/test/rustdoc-json/reexport/glob_extern.rs b/tests/rustdoc-json/reexport/glob_extern.rs similarity index 100% rename from src/test/rustdoc-json/reexport/glob_extern.rs rename to tests/rustdoc-json/reexport/glob_extern.rs diff --git a/src/test/rustdoc-json/reexport/glob_private.rs b/tests/rustdoc-json/reexport/glob_private.rs similarity index 100% rename from src/test/rustdoc-json/reexport/glob_private.rs rename to tests/rustdoc-json/reexport/glob_private.rs diff --git a/src/test/rustdoc-json/reexport/in_root_and_mod.rs b/tests/rustdoc-json/reexport/in_root_and_mod.rs similarity index 100% rename from src/test/rustdoc-json/reexport/in_root_and_mod.rs rename to tests/rustdoc-json/reexport/in_root_and_mod.rs diff --git a/src/test/rustdoc-json/reexport/in_root_and_mod_pub.rs b/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs similarity index 100% rename from src/test/rustdoc-json/reexport/in_root_and_mod_pub.rs rename to tests/rustdoc-json/reexport/in_root_and_mod_pub.rs diff --git a/src/test/rustdoc-json/reexport/macro.rs b/tests/rustdoc-json/reexport/macro.rs similarity index 100% rename from src/test/rustdoc-json/reexport/macro.rs rename to tests/rustdoc-json/reexport/macro.rs diff --git a/src/test/rustdoc-json/reexport/mod_not_included.rs b/tests/rustdoc-json/reexport/mod_not_included.rs similarity index 100% rename from src/test/rustdoc-json/reexport/mod_not_included.rs rename to tests/rustdoc-json/reexport/mod_not_included.rs diff --git a/src/test/rustdoc-json/reexport/private_twice_one_inline.rs b/tests/rustdoc-json/reexport/private_twice_one_inline.rs similarity index 100% rename from src/test/rustdoc-json/reexport/private_twice_one_inline.rs rename to tests/rustdoc-json/reexport/private_twice_one_inline.rs diff --git a/src/test/rustdoc-json/reexport/private_two_names.rs b/tests/rustdoc-json/reexport/private_two_names.rs similarity index 100% rename from src/test/rustdoc-json/reexport/private_two_names.rs rename to tests/rustdoc-json/reexport/private_two_names.rs diff --git a/src/test/rustdoc-json/reexport/pub_use_doc_hidden.rs b/tests/rustdoc-json/reexport/pub_use_doc_hidden.rs similarity index 100% rename from src/test/rustdoc-json/reexport/pub_use_doc_hidden.rs rename to tests/rustdoc-json/reexport/pub_use_doc_hidden.rs diff --git a/src/test/rustdoc-json/reexport/reexport_method_from_private_module.rs b/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs similarity index 100% rename from src/test/rustdoc-json/reexport/reexport_method_from_private_module.rs rename to tests/rustdoc-json/reexport/reexport_method_from_private_module.rs diff --git a/src/test/rustdoc-json/reexport/rename_private.rs b/tests/rustdoc-json/reexport/rename_private.rs similarity index 100% rename from src/test/rustdoc-json/reexport/rename_private.rs rename to tests/rustdoc-json/reexport/rename_private.rs diff --git a/src/test/rustdoc-json/reexport/rename_public.rs b/tests/rustdoc-json/reexport/rename_public.rs similarity index 100% rename from src/test/rustdoc-json/reexport/rename_public.rs rename to tests/rustdoc-json/reexport/rename_public.rs diff --git a/src/test/rustdoc-json/reexport/same_type_reexported_more_than_once.rs b/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs similarity index 100% rename from src/test/rustdoc-json/reexport/same_type_reexported_more_than_once.rs rename to tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs diff --git a/src/test/rustdoc-json/reexport/simple_private.rs b/tests/rustdoc-json/reexport/simple_private.rs similarity index 100% rename from src/test/rustdoc-json/reexport/simple_private.rs rename to tests/rustdoc-json/reexport/simple_private.rs diff --git a/src/test/rustdoc-json/reexport/simple_public.rs b/tests/rustdoc-json/reexport/simple_public.rs similarity index 100% rename from src/test/rustdoc-json/reexport/simple_public.rs rename to tests/rustdoc-json/reexport/simple_public.rs diff --git a/src/test/rustdoc-json/reexport/synthesize_trait_with_docs.rs b/tests/rustdoc-json/reexport/synthesize_trait_with_docs.rs similarity index 100% rename from src/test/rustdoc-json/reexport/synthesize_trait_with_docs.rs rename to tests/rustdoc-json/reexport/synthesize_trait_with_docs.rs diff --git a/src/test/rustdoc-json/return_private.rs b/tests/rustdoc-json/return_private.rs similarity index 100% rename from src/test/rustdoc-json/return_private.rs rename to tests/rustdoc-json/return_private.rs diff --git a/src/test/rustdoc-json/stripped_modules.rs b/tests/rustdoc-json/stripped_modules.rs similarity index 100% rename from src/test/rustdoc-json/stripped_modules.rs rename to tests/rustdoc-json/stripped_modules.rs diff --git a/src/test/rustdoc-json/structs/plain_all_pub.rs b/tests/rustdoc-json/structs/plain_all_pub.rs similarity index 100% rename from src/test/rustdoc-json/structs/plain_all_pub.rs rename to tests/rustdoc-json/structs/plain_all_pub.rs diff --git a/src/test/rustdoc-json/structs/plain_doc_hidden.rs b/tests/rustdoc-json/structs/plain_doc_hidden.rs similarity index 100% rename from src/test/rustdoc-json/structs/plain_doc_hidden.rs rename to tests/rustdoc-json/structs/plain_doc_hidden.rs diff --git a/src/test/rustdoc-json/structs/plain_empty.rs b/tests/rustdoc-json/structs/plain_empty.rs similarity index 100% rename from src/test/rustdoc-json/structs/plain_empty.rs rename to tests/rustdoc-json/structs/plain_empty.rs diff --git a/src/test/rustdoc-json/structs/plain_pub_priv.rs b/tests/rustdoc-json/structs/plain_pub_priv.rs similarity index 100% rename from src/test/rustdoc-json/structs/plain_pub_priv.rs rename to tests/rustdoc-json/structs/plain_pub_priv.rs diff --git a/src/test/rustdoc-json/structs/tuple.rs b/tests/rustdoc-json/structs/tuple.rs similarity index 100% rename from src/test/rustdoc-json/structs/tuple.rs rename to tests/rustdoc-json/structs/tuple.rs diff --git a/src/test/rustdoc-json/structs/tuple_empty.rs b/tests/rustdoc-json/structs/tuple_empty.rs similarity index 100% rename from src/test/rustdoc-json/structs/tuple_empty.rs rename to tests/rustdoc-json/structs/tuple_empty.rs diff --git a/src/test/rustdoc-json/structs/tuple_pub_priv.rs b/tests/rustdoc-json/structs/tuple_pub_priv.rs similarity index 100% rename from src/test/rustdoc-json/structs/tuple_pub_priv.rs rename to tests/rustdoc-json/structs/tuple_pub_priv.rs diff --git a/src/test/rustdoc-json/structs/unit.rs b/tests/rustdoc-json/structs/unit.rs similarity index 100% rename from src/test/rustdoc-json/structs/unit.rs rename to tests/rustdoc-json/structs/unit.rs diff --git a/src/test/rustdoc-json/structs/with_generics.rs b/tests/rustdoc-json/structs/with_generics.rs similarity index 100% rename from src/test/rustdoc-json/structs/with_generics.rs rename to tests/rustdoc-json/structs/with_generics.rs diff --git a/src/test/rustdoc-json/structs/with_primitives.rs b/tests/rustdoc-json/structs/with_primitives.rs similarity index 100% rename from src/test/rustdoc-json/structs/with_primitives.rs rename to tests/rustdoc-json/structs/with_primitives.rs diff --git a/src/test/rustdoc-json/traits/has_body.rs b/tests/rustdoc-json/traits/has_body.rs similarity index 100% rename from src/test/rustdoc-json/traits/has_body.rs rename to tests/rustdoc-json/traits/has_body.rs diff --git a/src/test/rustdoc-json/traits/implementors.rs b/tests/rustdoc-json/traits/implementors.rs similarity index 100% rename from src/test/rustdoc-json/traits/implementors.rs rename to tests/rustdoc-json/traits/implementors.rs diff --git a/src/test/rustdoc-json/traits/supertrait.rs b/tests/rustdoc-json/traits/supertrait.rs similarity index 100% rename from src/test/rustdoc-json/traits/supertrait.rs rename to tests/rustdoc-json/traits/supertrait.rs diff --git a/src/test/rustdoc-json/traits/trait_alias.rs b/tests/rustdoc-json/traits/trait_alias.rs similarity index 100% rename from src/test/rustdoc-json/traits/trait_alias.rs rename to tests/rustdoc-json/traits/trait_alias.rs diff --git a/src/test/rustdoc-json/traits/uses_extern_trait.rs b/tests/rustdoc-json/traits/uses_extern_trait.rs similarity index 100% rename from src/test/rustdoc-json/traits/uses_extern_trait.rs rename to tests/rustdoc-json/traits/uses_extern_trait.rs diff --git a/src/test/rustdoc-json/type/dyn.rs b/tests/rustdoc-json/type/dyn.rs similarity index 100% rename from src/test/rustdoc-json/type/dyn.rs rename to tests/rustdoc-json/type/dyn.rs diff --git a/src/test/rustdoc-json/type/extern.rs b/tests/rustdoc-json/type/extern.rs similarity index 100% rename from src/test/rustdoc-json/type/extern.rs rename to tests/rustdoc-json/type/extern.rs diff --git a/src/test/rustdoc-json/type/fn_lifetime.rs b/tests/rustdoc-json/type/fn_lifetime.rs similarity index 100% rename from src/test/rustdoc-json/type/fn_lifetime.rs rename to tests/rustdoc-json/type/fn_lifetime.rs diff --git a/src/test/rustdoc-json/type/generic_default.rs b/tests/rustdoc-json/type/generic_default.rs similarity index 100% rename from src/test/rustdoc-json/type/generic_default.rs rename to tests/rustdoc-json/type/generic_default.rs diff --git a/src/test/rustdoc-json/type/hrtb.rs b/tests/rustdoc-json/type/hrtb.rs similarity index 100% rename from src/test/rustdoc-json/type/hrtb.rs rename to tests/rustdoc-json/type/hrtb.rs diff --git a/src/test/rustdoc-json/unions/impl.rs b/tests/rustdoc-json/unions/impl.rs similarity index 100% rename from src/test/rustdoc-json/unions/impl.rs rename to tests/rustdoc-json/unions/impl.rs diff --git a/src/test/rustdoc-json/unions/union.rs b/tests/rustdoc-json/unions/union.rs similarity index 100% rename from src/test/rustdoc-json/unions/union.rs rename to tests/rustdoc-json/unions/union.rs diff --git a/src/test/rustdoc-ui/ambiguous-inherent-assoc-ty.rs b/tests/rustdoc-ui/ambiguous-inherent-assoc-ty.rs similarity index 100% rename from src/test/rustdoc-ui/ambiguous-inherent-assoc-ty.rs rename to tests/rustdoc-ui/ambiguous-inherent-assoc-ty.rs diff --git a/src/test/rustdoc-ui/assoc-item-not-in-scope.rs b/tests/rustdoc-ui/assoc-item-not-in-scope.rs similarity index 100% rename from src/test/rustdoc-ui/assoc-item-not-in-scope.rs rename to tests/rustdoc-ui/assoc-item-not-in-scope.rs diff --git a/src/test/rustdoc-ui/assoc-item-not-in-scope.stderr b/tests/rustdoc-ui/assoc-item-not-in-scope.stderr similarity index 100% rename from src/test/rustdoc-ui/assoc-item-not-in-scope.stderr rename to tests/rustdoc-ui/assoc-item-not-in-scope.stderr diff --git a/src/test/rustdoc-ui/auxiliary/empty-fn.rs b/tests/rustdoc-ui/auxiliary/empty-fn.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/empty-fn.rs rename to tests/rustdoc-ui/auxiliary/empty-fn.rs diff --git a/src/test/rustdoc-ui/auxiliary/extern_macros.rs b/tests/rustdoc-ui/auxiliary/extern_macros.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/extern_macros.rs rename to tests/rustdoc-ui/auxiliary/extern_macros.rs diff --git a/src/test/rustdoc-ui/auxiliary/issue-61592.rs b/tests/rustdoc-ui/auxiliary/issue-61592.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/issue-61592.rs rename to tests/rustdoc-ui/auxiliary/issue-61592.rs diff --git a/src/test/rustdoc-ui/auxiliary/module_macro_doc.rs b/tests/rustdoc-ui/auxiliary/module_macro_doc.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/module_macro_doc.rs rename to tests/rustdoc-ui/auxiliary/module_macro_doc.rs diff --git a/src/test/rustdoc-ui/auxiliary/overflow.rs b/tests/rustdoc-ui/auxiliary/overflow.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/overflow.rs rename to tests/rustdoc-ui/auxiliary/overflow.rs diff --git a/src/test/rustdoc-ui/auxiliary/panic-item.rs b/tests/rustdoc-ui/auxiliary/panic-item.rs similarity index 100% rename from src/test/rustdoc-ui/auxiliary/panic-item.rs rename to tests/rustdoc-ui/auxiliary/panic-item.rs diff --git a/src/test/rustdoc-ui/bare-urls.fixed b/tests/rustdoc-ui/bare-urls.fixed similarity index 100% rename from src/test/rustdoc-ui/bare-urls.fixed rename to tests/rustdoc-ui/bare-urls.fixed diff --git a/src/test/rustdoc-ui/bare-urls.rs b/tests/rustdoc-ui/bare-urls.rs similarity index 100% rename from src/test/rustdoc-ui/bare-urls.rs rename to tests/rustdoc-ui/bare-urls.rs diff --git a/src/test/rustdoc-ui/bare-urls.stderr b/tests/rustdoc-ui/bare-urls.stderr similarity index 100% rename from src/test/rustdoc-ui/bare-urls.stderr rename to tests/rustdoc-ui/bare-urls.stderr diff --git a/src/test/rustdoc-ui/block-doc-comment.rs b/tests/rustdoc-ui/block-doc-comment.rs similarity index 100% rename from src/test/rustdoc-ui/block-doc-comment.rs rename to tests/rustdoc-ui/block-doc-comment.rs diff --git a/src/test/rustdoc-ui/block-doc-comment.stdout b/tests/rustdoc-ui/block-doc-comment.stdout similarity index 100% rename from src/test/rustdoc-ui/block-doc-comment.stdout rename to tests/rustdoc-ui/block-doc-comment.stdout diff --git a/src/test/rustdoc-ui/bounded-hr-lifetime.rs b/tests/rustdoc-ui/bounded-hr-lifetime.rs similarity index 100% rename from src/test/rustdoc-ui/bounded-hr-lifetime.rs rename to tests/rustdoc-ui/bounded-hr-lifetime.rs diff --git a/src/test/rustdoc-ui/bounded-hr-lifetime.stderr b/tests/rustdoc-ui/bounded-hr-lifetime.stderr similarity index 100% rename from src/test/rustdoc-ui/bounded-hr-lifetime.stderr rename to tests/rustdoc-ui/bounded-hr-lifetime.stderr diff --git a/src/test/rustdoc-ui/c-help.rs b/tests/rustdoc-ui/c-help.rs similarity index 100% rename from src/test/rustdoc-ui/c-help.rs rename to tests/rustdoc-ui/c-help.rs diff --git a/src/test/rustdoc-ui/c-help.stdout b/tests/rustdoc-ui/c-help.stdout similarity index 100% rename from src/test/rustdoc-ui/c-help.stdout rename to tests/rustdoc-ui/c-help.stdout diff --git a/src/test/rustdoc-ui/cfg-test.rs b/tests/rustdoc-ui/cfg-test.rs similarity index 100% rename from src/test/rustdoc-ui/cfg-test.rs rename to tests/rustdoc-ui/cfg-test.rs diff --git a/src/test/rustdoc-ui/cfg-test.stdout b/tests/rustdoc-ui/cfg-test.stdout similarity index 100% rename from src/test/rustdoc-ui/cfg-test.stdout rename to tests/rustdoc-ui/cfg-test.stdout diff --git a/src/test/rustdoc-ui/check-attr-test.rs b/tests/rustdoc-ui/check-attr-test.rs similarity index 100% rename from src/test/rustdoc-ui/check-attr-test.rs rename to tests/rustdoc-ui/check-attr-test.rs diff --git a/src/test/rustdoc-ui/check-attr-test.stderr b/tests/rustdoc-ui/check-attr-test.stderr similarity index 100% rename from src/test/rustdoc-ui/check-attr-test.stderr rename to tests/rustdoc-ui/check-attr-test.stderr diff --git a/src/test/rustdoc-ui/check-attr.rs b/tests/rustdoc-ui/check-attr.rs similarity index 100% rename from src/test/rustdoc-ui/check-attr.rs rename to tests/rustdoc-ui/check-attr.rs diff --git a/src/test/rustdoc-ui/check-attr.stderr b/tests/rustdoc-ui/check-attr.stderr similarity index 100% rename from src/test/rustdoc-ui/check-attr.stderr rename to tests/rustdoc-ui/check-attr.stderr diff --git a/src/test/rustdoc-ui/check-cfg-test.rs b/tests/rustdoc-ui/check-cfg-test.rs similarity index 100% rename from src/test/rustdoc-ui/check-cfg-test.rs rename to tests/rustdoc-ui/check-cfg-test.rs diff --git a/src/test/rustdoc-ui/check-cfg-test.stderr b/tests/rustdoc-ui/check-cfg-test.stderr similarity index 100% rename from src/test/rustdoc-ui/check-cfg-test.stderr rename to tests/rustdoc-ui/check-cfg-test.stderr diff --git a/src/test/rustdoc-ui/check-cfg-test.stdout b/tests/rustdoc-ui/check-cfg-test.stdout similarity index 100% rename from src/test/rustdoc-ui/check-cfg-test.stdout rename to tests/rustdoc-ui/check-cfg-test.stdout diff --git a/src/test/rustdoc-ui/check-cfg-unstable.rs b/tests/rustdoc-ui/check-cfg-unstable.rs similarity index 100% rename from src/test/rustdoc-ui/check-cfg-unstable.rs rename to tests/rustdoc-ui/check-cfg-unstable.rs diff --git a/src/test/rustdoc-ui/check-cfg-unstable.stderr b/tests/rustdoc-ui/check-cfg-unstable.stderr similarity index 100% rename from src/test/rustdoc-ui/check-cfg-unstable.stderr rename to tests/rustdoc-ui/check-cfg-unstable.stderr diff --git a/src/test/rustdoc-ui/check-cfg.rs b/tests/rustdoc-ui/check-cfg.rs similarity index 100% rename from src/test/rustdoc-ui/check-cfg.rs rename to tests/rustdoc-ui/check-cfg.rs diff --git a/src/test/rustdoc-ui/check-cfg.stderr b/tests/rustdoc-ui/check-cfg.stderr similarity index 100% rename from src/test/rustdoc-ui/check-cfg.stderr rename to tests/rustdoc-ui/check-cfg.stderr diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.rs b/tests/rustdoc-ui/check-doc-alias-attr-location.rs similarity index 100% rename from src/test/rustdoc-ui/check-doc-alias-attr-location.rs rename to tests/rustdoc-ui/check-doc-alias-attr-location.rs diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr b/tests/rustdoc-ui/check-doc-alias-attr-location.stderr similarity index 100% rename from src/test/rustdoc-ui/check-doc-alias-attr-location.stderr rename to tests/rustdoc-ui/check-doc-alias-attr-location.stderr diff --git a/src/test/rustdoc-ui/check-doc-alias-attr.rs b/tests/rustdoc-ui/check-doc-alias-attr.rs similarity index 100% rename from src/test/rustdoc-ui/check-doc-alias-attr.rs rename to tests/rustdoc-ui/check-doc-alias-attr.rs diff --git a/src/test/rustdoc-ui/check-doc-alias-attr.stderr b/tests/rustdoc-ui/check-doc-alias-attr.stderr similarity index 100% rename from src/test/rustdoc-ui/check-doc-alias-attr.stderr rename to tests/rustdoc-ui/check-doc-alias-attr.stderr diff --git a/src/test/rustdoc-ui/check-fail.rs b/tests/rustdoc-ui/check-fail.rs similarity index 100% rename from src/test/rustdoc-ui/check-fail.rs rename to tests/rustdoc-ui/check-fail.rs diff --git a/src/test/rustdoc-ui/check-fail.stderr b/tests/rustdoc-ui/check-fail.stderr similarity index 100% rename from src/test/rustdoc-ui/check-fail.stderr rename to tests/rustdoc-ui/check-fail.stderr diff --git a/src/test/rustdoc-ui/check.rs b/tests/rustdoc-ui/check.rs similarity index 100% rename from src/test/rustdoc-ui/check.rs rename to tests/rustdoc-ui/check.rs diff --git a/src/test/rustdoc-ui/check.stderr b/tests/rustdoc-ui/check.stderr similarity index 100% rename from src/test/rustdoc-ui/check.stderr rename to tests/rustdoc-ui/check.stderr diff --git a/src/test/rustdoc-ui/commandline-argfile-badutf8.args b/tests/rustdoc-ui/commandline-argfile-badutf8.args similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile-badutf8.args rename to tests/rustdoc-ui/commandline-argfile-badutf8.args diff --git a/src/test/rustdoc-ui/commandline-argfile-badutf8.rs b/tests/rustdoc-ui/commandline-argfile-badutf8.rs similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile-badutf8.rs rename to tests/rustdoc-ui/commandline-argfile-badutf8.rs diff --git a/src/test/rustdoc-ui/commandline-argfile-badutf8.stderr b/tests/rustdoc-ui/commandline-argfile-badutf8.stderr similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile-badutf8.stderr rename to tests/rustdoc-ui/commandline-argfile-badutf8.stderr diff --git a/src/test/rustdoc-ui/commandline-argfile-missing.rs b/tests/rustdoc-ui/commandline-argfile-missing.rs similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile-missing.rs rename to tests/rustdoc-ui/commandline-argfile-missing.rs diff --git a/src/test/rustdoc-ui/commandline-argfile-missing.stderr b/tests/rustdoc-ui/commandline-argfile-missing.stderr similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile-missing.stderr rename to tests/rustdoc-ui/commandline-argfile-missing.stderr diff --git a/src/test/rustdoc-ui/commandline-argfile.args b/tests/rustdoc-ui/commandline-argfile.args similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile.args rename to tests/rustdoc-ui/commandline-argfile.args diff --git a/src/test/rustdoc-ui/commandline-argfile.rs b/tests/rustdoc-ui/commandline-argfile.rs similarity index 100% rename from src/test/rustdoc-ui/commandline-argfile.rs rename to tests/rustdoc-ui/commandline-argfile.rs diff --git a/src/test/rustdoc-ui/const-evalutation-ice.rs b/tests/rustdoc-ui/const-evalutation-ice.rs similarity index 100% rename from src/test/rustdoc-ui/const-evalutation-ice.rs rename to tests/rustdoc-ui/const-evalutation-ice.rs diff --git a/src/test/rustdoc-ui/const-evalutation-ice.stderr b/tests/rustdoc-ui/const-evalutation-ice.stderr similarity index 100% rename from src/test/rustdoc-ui/const-evalutation-ice.stderr rename to tests/rustdoc-ui/const-evalutation-ice.stderr diff --git a/src/test/rustdoc-ui/coverage/allow_missing_docs.rs b/tests/rustdoc-ui/coverage/allow_missing_docs.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/allow_missing_docs.rs rename to tests/rustdoc-ui/coverage/allow_missing_docs.rs diff --git a/src/test/rustdoc-ui/coverage/allow_missing_docs.stderr b/tests/rustdoc-ui/coverage/allow_missing_docs.stderr similarity index 100% rename from src/test/rustdoc-ui/coverage/allow_missing_docs.stderr rename to tests/rustdoc-ui/coverage/allow_missing_docs.stderr diff --git a/src/test/rustdoc-ui/coverage/allow_missing_docs.stdout b/tests/rustdoc-ui/coverage/allow_missing_docs.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/allow_missing_docs.stdout rename to tests/rustdoc-ui/coverage/allow_missing_docs.stdout diff --git a/src/test/rustdoc-ui/coverage/basic.rs b/tests/rustdoc-ui/coverage/basic.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/basic.rs rename to tests/rustdoc-ui/coverage/basic.rs diff --git a/src/test/rustdoc-ui/coverage/basic.stdout b/tests/rustdoc-ui/coverage/basic.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/basic.stdout rename to tests/rustdoc-ui/coverage/basic.stdout diff --git a/src/test/rustdoc-ui/coverage/doc-examples-json.rs b/tests/rustdoc-ui/coverage/doc-examples-json.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/doc-examples-json.rs rename to tests/rustdoc-ui/coverage/doc-examples-json.rs diff --git a/src/test/rustdoc-ui/coverage/doc-examples-json.stdout b/tests/rustdoc-ui/coverage/doc-examples-json.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/doc-examples-json.stdout rename to tests/rustdoc-ui/coverage/doc-examples-json.stdout diff --git a/src/test/rustdoc-ui/coverage/doc-examples.rs b/tests/rustdoc-ui/coverage/doc-examples.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/doc-examples.rs rename to tests/rustdoc-ui/coverage/doc-examples.rs diff --git a/src/test/rustdoc-ui/coverage/doc-examples.stdout b/tests/rustdoc-ui/coverage/doc-examples.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/doc-examples.stdout rename to tests/rustdoc-ui/coverage/doc-examples.stdout diff --git a/src/test/rustdoc-ui/coverage/empty.rs b/tests/rustdoc-ui/coverage/empty.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/empty.rs rename to tests/rustdoc-ui/coverage/empty.rs diff --git a/src/test/rustdoc-ui/coverage/empty.stdout b/tests/rustdoc-ui/coverage/empty.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/empty.stdout rename to tests/rustdoc-ui/coverage/empty.stdout diff --git a/src/test/rustdoc-ui/coverage/enum-tuple-documented.rs b/tests/rustdoc-ui/coverage/enum-tuple-documented.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/enum-tuple-documented.rs rename to tests/rustdoc-ui/coverage/enum-tuple-documented.rs diff --git a/src/test/rustdoc-ui/coverage/enum-tuple-documented.stdout b/tests/rustdoc-ui/coverage/enum-tuple-documented.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/enum-tuple-documented.stdout rename to tests/rustdoc-ui/coverage/enum-tuple-documented.stdout diff --git a/src/test/rustdoc-ui/coverage/enum-tuple.rs b/tests/rustdoc-ui/coverage/enum-tuple.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/enum-tuple.rs rename to tests/rustdoc-ui/coverage/enum-tuple.rs diff --git a/src/test/rustdoc-ui/coverage/enum-tuple.stdout b/tests/rustdoc-ui/coverage/enum-tuple.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/enum-tuple.stdout rename to tests/rustdoc-ui/coverage/enum-tuple.stdout diff --git a/src/test/rustdoc-ui/coverage/enums.rs b/tests/rustdoc-ui/coverage/enums.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/enums.rs rename to tests/rustdoc-ui/coverage/enums.rs diff --git a/src/test/rustdoc-ui/coverage/enums.stdout b/tests/rustdoc-ui/coverage/enums.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/enums.stdout rename to tests/rustdoc-ui/coverage/enums.stdout diff --git a/src/test/rustdoc-ui/coverage/exotic.rs b/tests/rustdoc-ui/coverage/exotic.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/exotic.rs rename to tests/rustdoc-ui/coverage/exotic.rs diff --git a/src/test/rustdoc-ui/coverage/exotic.stdout b/tests/rustdoc-ui/coverage/exotic.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/exotic.stdout rename to tests/rustdoc-ui/coverage/exotic.stdout diff --git a/src/test/rustdoc-ui/coverage/html.rs b/tests/rustdoc-ui/coverage/html.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/html.rs rename to tests/rustdoc-ui/coverage/html.rs diff --git a/src/test/rustdoc-ui/coverage/html.stderr b/tests/rustdoc-ui/coverage/html.stderr similarity index 100% rename from src/test/rustdoc-ui/coverage/html.stderr rename to tests/rustdoc-ui/coverage/html.stderr diff --git a/src/test/rustdoc-ui/coverage/json.rs b/tests/rustdoc-ui/coverage/json.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/json.rs rename to tests/rustdoc-ui/coverage/json.rs diff --git a/src/test/rustdoc-ui/coverage/json.stdout b/tests/rustdoc-ui/coverage/json.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/json.stdout rename to tests/rustdoc-ui/coverage/json.stdout diff --git a/src/test/rustdoc-ui/coverage/private.rs b/tests/rustdoc-ui/coverage/private.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/private.rs rename to tests/rustdoc-ui/coverage/private.rs diff --git a/src/test/rustdoc-ui/coverage/private.stdout b/tests/rustdoc-ui/coverage/private.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/private.stdout rename to tests/rustdoc-ui/coverage/private.stdout diff --git a/src/test/rustdoc-ui/coverage/statics-consts.rs b/tests/rustdoc-ui/coverage/statics-consts.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/statics-consts.rs rename to tests/rustdoc-ui/coverage/statics-consts.rs diff --git a/src/test/rustdoc-ui/coverage/statics-consts.stdout b/tests/rustdoc-ui/coverage/statics-consts.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/statics-consts.stdout rename to tests/rustdoc-ui/coverage/statics-consts.stdout diff --git a/src/test/rustdoc-ui/coverage/traits.rs b/tests/rustdoc-ui/coverage/traits.rs similarity index 100% rename from src/test/rustdoc-ui/coverage/traits.rs rename to tests/rustdoc-ui/coverage/traits.rs diff --git a/src/test/rustdoc-ui/coverage/traits.stdout b/tests/rustdoc-ui/coverage/traits.stdout similarity index 100% rename from src/test/rustdoc-ui/coverage/traits.stdout rename to tests/rustdoc-ui/coverage/traits.stdout diff --git a/src/test/rustdoc-ui/deny-intra-link-resolution-failure.rs b/tests/rustdoc-ui/deny-intra-link-resolution-failure.rs similarity index 100% rename from src/test/rustdoc-ui/deny-intra-link-resolution-failure.rs rename to tests/rustdoc-ui/deny-intra-link-resolution-failure.rs diff --git a/src/test/rustdoc-ui/deny-intra-link-resolution-failure.stderr b/tests/rustdoc-ui/deny-intra-link-resolution-failure.stderr similarity index 100% rename from src/test/rustdoc-ui/deny-intra-link-resolution-failure.stderr rename to tests/rustdoc-ui/deny-intra-link-resolution-failure.stderr diff --git a/src/test/rustdoc-ui/deny-missing-docs-crate.rs b/tests/rustdoc-ui/deny-missing-docs-crate.rs similarity index 100% rename from src/test/rustdoc-ui/deny-missing-docs-crate.rs rename to tests/rustdoc-ui/deny-missing-docs-crate.rs diff --git a/src/test/rustdoc-ui/deny-missing-docs-crate.stderr b/tests/rustdoc-ui/deny-missing-docs-crate.stderr similarity index 100% rename from src/test/rustdoc-ui/deny-missing-docs-crate.stderr rename to tests/rustdoc-ui/deny-missing-docs-crate.stderr diff --git a/src/test/rustdoc-ui/deny-missing-docs-macro.rs b/tests/rustdoc-ui/deny-missing-docs-macro.rs similarity index 100% rename from src/test/rustdoc-ui/deny-missing-docs-macro.rs rename to tests/rustdoc-ui/deny-missing-docs-macro.rs diff --git a/src/test/rustdoc-ui/deny-missing-docs-macro.stderr b/tests/rustdoc-ui/deny-missing-docs-macro.stderr similarity index 100% rename from src/test/rustdoc-ui/deny-missing-docs-macro.stderr rename to tests/rustdoc-ui/deny-missing-docs-macro.stderr diff --git a/src/test/rustdoc-ui/deprecated-attrs.rs b/tests/rustdoc-ui/deprecated-attrs.rs similarity index 100% rename from src/test/rustdoc-ui/deprecated-attrs.rs rename to tests/rustdoc-ui/deprecated-attrs.rs diff --git a/src/test/rustdoc-ui/deprecated-attrs.stderr b/tests/rustdoc-ui/deprecated-attrs.stderr similarity index 100% rename from src/test/rustdoc-ui/deprecated-attrs.stderr rename to tests/rustdoc-ui/deprecated-attrs.stderr diff --git a/src/test/rustdoc-ui/deref-generic.rs b/tests/rustdoc-ui/deref-generic.rs similarity index 100% rename from src/test/rustdoc-ui/deref-generic.rs rename to tests/rustdoc-ui/deref-generic.rs diff --git a/src/test/rustdoc-ui/diagnostic-width.rs b/tests/rustdoc-ui/diagnostic-width.rs similarity index 100% rename from src/test/rustdoc-ui/diagnostic-width.rs rename to tests/rustdoc-ui/diagnostic-width.rs diff --git a/src/test/rustdoc-ui/diagnostic-width.stderr b/tests/rustdoc-ui/diagnostic-width.stderr similarity index 100% rename from src/test/rustdoc-ui/diagnostic-width.stderr rename to tests/rustdoc-ui/diagnostic-width.stderr diff --git a/src/test/rustdoc-ui/display-output.rs b/tests/rustdoc-ui/display-output.rs similarity index 100% rename from src/test/rustdoc-ui/display-output.rs rename to tests/rustdoc-ui/display-output.rs diff --git a/src/test/rustdoc-ui/display-output.stdout b/tests/rustdoc-ui/display-output.stdout similarity index 100% rename from src/test/rustdoc-ui/display-output.stdout rename to tests/rustdoc-ui/display-output.stdout diff --git a/src/test/rustdoc-ui/doc-alias-assoc-const.rs b/tests/rustdoc-ui/doc-alias-assoc-const.rs similarity index 100% rename from src/test/rustdoc-ui/doc-alias-assoc-const.rs rename to tests/rustdoc-ui/doc-alias-assoc-const.rs diff --git a/src/test/rustdoc-ui/doc-alias-assoc-const.stderr b/tests/rustdoc-ui/doc-alias-assoc-const.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-alias-assoc-const.stderr rename to tests/rustdoc-ui/doc-alias-assoc-const.stderr diff --git a/src/test/rustdoc-ui/doc-alias-crate-level.rs b/tests/rustdoc-ui/doc-alias-crate-level.rs similarity index 100% rename from src/test/rustdoc-ui/doc-alias-crate-level.rs rename to tests/rustdoc-ui/doc-alias-crate-level.rs diff --git a/src/test/rustdoc-ui/doc-alias-crate-level.stderr b/tests/rustdoc-ui/doc-alias-crate-level.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-alias-crate-level.stderr rename to tests/rustdoc-ui/doc-alias-crate-level.stderr diff --git a/src/test/rustdoc-ui/doc-alias-same-name.rs b/tests/rustdoc-ui/doc-alias-same-name.rs similarity index 100% rename from src/test/rustdoc-ui/doc-alias-same-name.rs rename to tests/rustdoc-ui/doc-alias-same-name.rs diff --git a/src/test/rustdoc-ui/doc-alias-same-name.stderr b/tests/rustdoc-ui/doc-alias-same-name.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-alias-same-name.stderr rename to tests/rustdoc-ui/doc-alias-same-name.stderr diff --git a/src/test/rustdoc-ui/doc-attr.rs b/tests/rustdoc-ui/doc-attr.rs similarity index 100% rename from src/test/rustdoc-ui/doc-attr.rs rename to tests/rustdoc-ui/doc-attr.rs diff --git a/src/test/rustdoc-ui/doc-attr.stderr b/tests/rustdoc-ui/doc-attr.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-attr.stderr rename to tests/rustdoc-ui/doc-attr.stderr diff --git a/src/test/rustdoc-ui/doc-cfg.rs b/tests/rustdoc-ui/doc-cfg.rs similarity index 100% rename from src/test/rustdoc-ui/doc-cfg.rs rename to tests/rustdoc-ui/doc-cfg.rs diff --git a/src/test/rustdoc-ui/doc-cfg.stderr b/tests/rustdoc-ui/doc-cfg.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-cfg.stderr rename to tests/rustdoc-ui/doc-cfg.stderr diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-attr.rs b/tests/rustdoc-ui/doc-comment-multi-line-attr.rs similarity index 100% rename from src/test/rustdoc-ui/doc-comment-multi-line-attr.rs rename to tests/rustdoc-ui/doc-comment-multi-line-attr.rs diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout b/tests/rustdoc-ui/doc-comment-multi-line-attr.stdout similarity index 100% rename from src/test/rustdoc-ui/doc-comment-multi-line-attr.stdout rename to tests/rustdoc-ui/doc-comment-multi-line-attr.stdout diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs b/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs similarity index 100% rename from src/test/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs rename to tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs diff --git a/src/test/rustdoc-ui/doc-comment-multi-line-cfg-attr.stdout b/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.stdout similarity index 100% rename from src/test/rustdoc-ui/doc-comment-multi-line-cfg-attr.stdout rename to tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.stdout diff --git a/src/test/rustdoc-ui/doc-include-suggestion.rs b/tests/rustdoc-ui/doc-include-suggestion.rs similarity index 100% rename from src/test/rustdoc-ui/doc-include-suggestion.rs rename to tests/rustdoc-ui/doc-include-suggestion.rs diff --git a/src/test/rustdoc-ui/doc-include-suggestion.stderr b/tests/rustdoc-ui/doc-include-suggestion.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-include-suggestion.stderr rename to tests/rustdoc-ui/doc-include-suggestion.stderr diff --git a/src/test/rustdoc-ui/doc-spotlight.fixed b/tests/rustdoc-ui/doc-spotlight.fixed similarity index 100% rename from src/test/rustdoc-ui/doc-spotlight.fixed rename to tests/rustdoc-ui/doc-spotlight.fixed diff --git a/src/test/rustdoc-ui/doc-spotlight.rs b/tests/rustdoc-ui/doc-spotlight.rs similarity index 100% rename from src/test/rustdoc-ui/doc-spotlight.rs rename to tests/rustdoc-ui/doc-spotlight.rs diff --git a/src/test/rustdoc-ui/doc-spotlight.stderr b/tests/rustdoc-ui/doc-spotlight.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-spotlight.stderr rename to tests/rustdoc-ui/doc-spotlight.stderr diff --git a/src/test/rustdoc-ui/doc-test-attr-pass.rs b/tests/rustdoc-ui/doc-test-attr-pass.rs similarity index 100% rename from src/test/rustdoc-ui/doc-test-attr-pass.rs rename to tests/rustdoc-ui/doc-test-attr-pass.rs diff --git a/src/test/rustdoc-ui/doc-test-attr.rs b/tests/rustdoc-ui/doc-test-attr.rs similarity index 100% rename from src/test/rustdoc-ui/doc-test-attr.rs rename to tests/rustdoc-ui/doc-test-attr.rs diff --git a/src/test/rustdoc-ui/doc-test-attr.stderr b/tests/rustdoc-ui/doc-test-attr.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-test-attr.stderr rename to tests/rustdoc-ui/doc-test-attr.stderr diff --git a/src/test/rustdoc-ui/doc-test-doctest-feature.rs b/tests/rustdoc-ui/doc-test-doctest-feature.rs similarity index 100% rename from src/test/rustdoc-ui/doc-test-doctest-feature.rs rename to tests/rustdoc-ui/doc-test-doctest-feature.rs diff --git a/src/test/rustdoc-ui/doc-test-doctest-feature.stdout b/tests/rustdoc-ui/doc-test-doctest-feature.stdout similarity index 100% rename from src/test/rustdoc-ui/doc-test-doctest-feature.stdout rename to tests/rustdoc-ui/doc-test-doctest-feature.stdout diff --git a/src/test/rustdoc-ui/doc-test-rustdoc-feature.rs b/tests/rustdoc-ui/doc-test-rustdoc-feature.rs similarity index 100% rename from src/test/rustdoc-ui/doc-test-rustdoc-feature.rs rename to tests/rustdoc-ui/doc-test-rustdoc-feature.rs diff --git a/src/test/rustdoc-ui/doc-test-rustdoc-feature.stdout b/tests/rustdoc-ui/doc-test-rustdoc-feature.stdout similarity index 100% rename from src/test/rustdoc-ui/doc-test-rustdoc-feature.stdout rename to tests/rustdoc-ui/doc-test-rustdoc-feature.stdout diff --git a/src/test/rustdoc-ui/doc-without-codeblock.rs b/tests/rustdoc-ui/doc-without-codeblock.rs similarity index 100% rename from src/test/rustdoc-ui/doc-without-codeblock.rs rename to tests/rustdoc-ui/doc-without-codeblock.rs diff --git a/src/test/rustdoc-ui/doc-without-codeblock.stderr b/tests/rustdoc-ui/doc-without-codeblock.stderr similarity index 100% rename from src/test/rustdoc-ui/doc-without-codeblock.stderr rename to tests/rustdoc-ui/doc-without-codeblock.stderr diff --git a/src/test/rustdoc-ui/doc_cfg_hide.rs b/tests/rustdoc-ui/doc_cfg_hide.rs similarity index 100% rename from src/test/rustdoc-ui/doc_cfg_hide.rs rename to tests/rustdoc-ui/doc_cfg_hide.rs diff --git a/src/test/rustdoc-ui/doc_cfg_hide.stderr b/tests/rustdoc-ui/doc_cfg_hide.stderr similarity index 100% rename from src/test/rustdoc-ui/doc_cfg_hide.stderr rename to tests/rustdoc-ui/doc_cfg_hide.stderr diff --git a/src/test/rustdoc-ui/doctest-edition.rs b/tests/rustdoc-ui/doctest-edition.rs similarity index 100% rename from src/test/rustdoc-ui/doctest-edition.rs rename to tests/rustdoc-ui/doctest-edition.rs diff --git a/src/test/rustdoc-ui/doctest-edition.stderr b/tests/rustdoc-ui/doctest-edition.stderr similarity index 100% rename from src/test/rustdoc-ui/doctest-edition.stderr rename to tests/rustdoc-ui/doctest-edition.stderr diff --git a/src/test/rustdoc-ui/doctest-multiline-crate-attribute.rs b/tests/rustdoc-ui/doctest-multiline-crate-attribute.rs similarity index 100% rename from src/test/rustdoc-ui/doctest-multiline-crate-attribute.rs rename to tests/rustdoc-ui/doctest-multiline-crate-attribute.rs diff --git a/src/test/rustdoc-ui/doctest-multiline-crate-attribute.stdout b/tests/rustdoc-ui/doctest-multiline-crate-attribute.stdout similarity index 100% rename from src/test/rustdoc-ui/doctest-multiline-crate-attribute.stdout rename to tests/rustdoc-ui/doctest-multiline-crate-attribute.stdout diff --git a/src/test/rustdoc-ui/doctest-output.rs b/tests/rustdoc-ui/doctest-output.rs similarity index 100% rename from src/test/rustdoc-ui/doctest-output.rs rename to tests/rustdoc-ui/doctest-output.rs diff --git a/src/test/rustdoc-ui/doctest-output.stdout b/tests/rustdoc-ui/doctest-output.stdout similarity index 100% rename from src/test/rustdoc-ui/doctest-output.stdout rename to tests/rustdoc-ui/doctest-output.stdout diff --git a/src/test/rustdoc-ui/error-in-impl-trait/README.md b/tests/rustdoc-ui/error-in-impl-trait/README.md similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/README.md rename to tests/rustdoc-ui/error-in-impl-trait/README.md diff --git a/src/test/rustdoc-ui/error-in-impl-trait/async.rs b/tests/rustdoc-ui/error-in-impl-trait/async.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/async.rs rename to tests/rustdoc-ui/error-in-impl-trait/async.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/closure.rs b/tests/rustdoc-ui/error-in-impl-trait/closure.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/closure.rs rename to tests/rustdoc-ui/error-in-impl-trait/closure.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/const-generics.rs b/tests/rustdoc-ui/error-in-impl-trait/const-generics.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/const-generics.rs rename to tests/rustdoc-ui/error-in-impl-trait/const-generics.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/generic-argument.rs b/tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/generic-argument.rs rename to tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs rename to tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/impl-keyword.rs b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/impl-keyword.rs rename to tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/realistic-async.rs b/tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/realistic-async.rs rename to tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs b/tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs rename to tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs diff --git a/src/test/rustdoc-ui/error-in-impl-trait/trait-alias.rs b/tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs similarity index 100% rename from src/test/rustdoc-ui/error-in-impl-trait/trait-alias.rs rename to tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs diff --git a/src/test/rustdoc-ui/expect-tool-lint-rfc-2383.rs b/tests/rustdoc-ui/expect-tool-lint-rfc-2383.rs similarity index 100% rename from src/test/rustdoc-ui/expect-tool-lint-rfc-2383.rs rename to tests/rustdoc-ui/expect-tool-lint-rfc-2383.rs diff --git a/src/test/rustdoc-ui/expect-tool-lint-rfc-2383.stderr b/tests/rustdoc-ui/expect-tool-lint-rfc-2383.stderr similarity index 100% rename from src/test/rustdoc-ui/expect-tool-lint-rfc-2383.stderr rename to tests/rustdoc-ui/expect-tool-lint-rfc-2383.stderr diff --git a/src/test/rustdoc-ui/failed-doctest-compile-fail.rs b/tests/rustdoc-ui/failed-doctest-compile-fail.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-compile-fail.rs rename to tests/rustdoc-ui/failed-doctest-compile-fail.rs diff --git a/src/test/rustdoc-ui/failed-doctest-compile-fail.stdout b/tests/rustdoc-ui/failed-doctest-compile-fail.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-compile-fail.stdout rename to tests/rustdoc-ui/failed-doctest-compile-fail.stdout diff --git a/src/test/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs b/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs rename to tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs diff --git a/src/test/rustdoc-ui/failed-doctest-extra-semicolon-on-item.stdout b/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-extra-semicolon-on-item.stdout rename to tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.stdout diff --git a/src/test/rustdoc-ui/failed-doctest-missing-codes.rs b/tests/rustdoc-ui/failed-doctest-missing-codes.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-missing-codes.rs rename to tests/rustdoc-ui/failed-doctest-missing-codes.rs diff --git a/src/test/rustdoc-ui/failed-doctest-missing-codes.stdout b/tests/rustdoc-ui/failed-doctest-missing-codes.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-missing-codes.stdout rename to tests/rustdoc-ui/failed-doctest-missing-codes.stdout diff --git a/src/test/rustdoc-ui/failed-doctest-output-windows.rs b/tests/rustdoc-ui/failed-doctest-output-windows.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-output-windows.rs rename to tests/rustdoc-ui/failed-doctest-output-windows.rs diff --git a/src/test/rustdoc-ui/failed-doctest-output-windows.stdout b/tests/rustdoc-ui/failed-doctest-output-windows.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-output-windows.stdout rename to tests/rustdoc-ui/failed-doctest-output-windows.stdout diff --git a/src/test/rustdoc-ui/failed-doctest-output.rs b/tests/rustdoc-ui/failed-doctest-output.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-output.rs rename to tests/rustdoc-ui/failed-doctest-output.rs diff --git a/src/test/rustdoc-ui/failed-doctest-output.stdout b/tests/rustdoc-ui/failed-doctest-output.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-output.stdout rename to tests/rustdoc-ui/failed-doctest-output.stdout diff --git a/src/test/rustdoc-ui/failed-doctest-should-panic.rs b/tests/rustdoc-ui/failed-doctest-should-panic.rs similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-should-panic.rs rename to tests/rustdoc-ui/failed-doctest-should-panic.rs diff --git a/src/test/rustdoc-ui/failed-doctest-should-panic.stdout b/tests/rustdoc-ui/failed-doctest-should-panic.stdout similarity index 100% rename from src/test/rustdoc-ui/failed-doctest-should-panic.stdout rename to tests/rustdoc-ui/failed-doctest-should-panic.stdout diff --git a/src/test/rustdoc-ui/feature-gate-doc_cfg_hide.rs b/tests/rustdoc-ui/feature-gate-doc_cfg_hide.rs similarity index 100% rename from src/test/rustdoc-ui/feature-gate-doc_cfg_hide.rs rename to tests/rustdoc-ui/feature-gate-doc_cfg_hide.rs diff --git a/src/test/rustdoc-ui/feature-gate-doc_cfg_hide.stderr b/tests/rustdoc-ui/feature-gate-doc_cfg_hide.stderr similarity index 100% rename from src/test/rustdoc-ui/feature-gate-doc_cfg_hide.stderr rename to tests/rustdoc-ui/feature-gate-doc_cfg_hide.stderr diff --git a/src/test/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.rs b/tests/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.rs similarity index 100% rename from src/test/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.rs rename to tests/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.rs diff --git a/src/test/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.stderr b/tests/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.stderr similarity index 100% rename from src/test/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.stderr rename to tests/rustdoc-ui/feature-gate-rustdoc_missing_doc_code_examples.stderr diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt-unstable.rs b/tests/rustdoc-ui/generate-link-to-definition-opt-unstable.rs similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt-unstable.rs rename to tests/rustdoc-ui/generate-link-to-definition-opt-unstable.rs diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt-unstable.stderr b/tests/rustdoc-ui/generate-link-to-definition-opt-unstable.stderr similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt-unstable.stderr rename to tests/rustdoc-ui/generate-link-to-definition-opt-unstable.stderr diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt.rs b/tests/rustdoc-ui/generate-link-to-definition-opt.rs similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt.rs rename to tests/rustdoc-ui/generate-link-to-definition-opt.rs diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt.stderr b/tests/rustdoc-ui/generate-link-to-definition-opt.stderr similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt.stderr rename to tests/rustdoc-ui/generate-link-to-definition-opt.stderr diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt2.rs b/tests/rustdoc-ui/generate-link-to-definition-opt2.rs similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt2.rs rename to tests/rustdoc-ui/generate-link-to-definition-opt2.rs diff --git a/src/test/rustdoc-ui/generate-link-to-definition-opt2.stderr b/tests/rustdoc-ui/generate-link-to-definition-opt2.stderr similarity index 100% rename from src/test/rustdoc-ui/generate-link-to-definition-opt2.stderr rename to tests/rustdoc-ui/generate-link-to-definition-opt2.stderr diff --git a/src/test/rustdoc-ui/ignore-block-help.rs b/tests/rustdoc-ui/ignore-block-help.rs similarity index 100% rename from src/test/rustdoc-ui/ignore-block-help.rs rename to tests/rustdoc-ui/ignore-block-help.rs diff --git a/src/test/rustdoc-ui/ignore-block-help.stderr b/tests/rustdoc-ui/ignore-block-help.stderr similarity index 100% rename from src/test/rustdoc-ui/ignore-block-help.stderr rename to tests/rustdoc-ui/ignore-block-help.stderr diff --git a/src/test/rustdoc-ui/impl-fn-nesting.rs b/tests/rustdoc-ui/impl-fn-nesting.rs similarity index 100% rename from src/test/rustdoc-ui/impl-fn-nesting.rs rename to tests/rustdoc-ui/impl-fn-nesting.rs diff --git a/src/test/rustdoc-ui/impl-fn-nesting.stderr b/tests/rustdoc-ui/impl-fn-nesting.stderr similarity index 100% rename from src/test/rustdoc-ui/impl-fn-nesting.stderr rename to tests/rustdoc-ui/impl-fn-nesting.stderr diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.rs b/tests/rustdoc-ui/infinite-recursive-type-impl-trait-return.rs similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.rs rename to tests/rustdoc-ui/infinite-recursive-type-impl-trait-return.rs diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr b/tests/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr rename to tests/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.rs b/tests/rustdoc-ui/infinite-recursive-type-impl-trait.rs similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type-impl-trait.rs rename to tests/rustdoc-ui/infinite-recursive-type-impl-trait.rs diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr b/tests/rustdoc-ui/infinite-recursive-type-impl-trait.stderr similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr rename to tests/rustdoc-ui/infinite-recursive-type-impl-trait.stderr diff --git a/src/test/rustdoc-ui/infinite-recursive-type.rs b/tests/rustdoc-ui/infinite-recursive-type.rs similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type.rs rename to tests/rustdoc-ui/infinite-recursive-type.rs diff --git a/src/test/rustdoc-ui/infinite-recursive-type.stderr b/tests/rustdoc-ui/infinite-recursive-type.stderr similarity index 100% rename from src/test/rustdoc-ui/infinite-recursive-type.stderr rename to tests/rustdoc-ui/infinite-recursive-type.stderr diff --git a/src/test/rustdoc-ui/intra-doc/.gitattributes b/tests/rustdoc-ui/intra-doc/.gitattributes similarity index 100% rename from src/test/rustdoc-ui/intra-doc/.gitattributes rename to tests/rustdoc-ui/intra-doc/.gitattributes diff --git a/src/test/rustdoc-ui/intra-doc/alias-ice.rs b/tests/rustdoc-ui/intra-doc/alias-ice.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/alias-ice.rs rename to tests/rustdoc-ui/intra-doc/alias-ice.rs diff --git a/src/test/rustdoc-ui/intra-doc/alias-ice.stderr b/tests/rustdoc-ui/intra-doc/alias-ice.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/alias-ice.stderr rename to tests/rustdoc-ui/intra-doc/alias-ice.stderr diff --git a/src/test/rustdoc-ui/intra-doc/ambiguity.rs b/tests/rustdoc-ui/intra-doc/ambiguity.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/ambiguity.rs rename to tests/rustdoc-ui/intra-doc/ambiguity.rs diff --git a/src/test/rustdoc-ui/intra-doc/ambiguity.stderr b/tests/rustdoc-ui/intra-doc/ambiguity.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/ambiguity.stderr rename to tests/rustdoc-ui/intra-doc/ambiguity.stderr diff --git a/src/test/rustdoc-ui/intra-doc/anchors.rs b/tests/rustdoc-ui/intra-doc/anchors.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/anchors.rs rename to tests/rustdoc-ui/intra-doc/anchors.rs diff --git a/src/test/rustdoc-ui/intra-doc/anchors.stderr b/tests/rustdoc-ui/intra-doc/anchors.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/anchors.stderr rename to tests/rustdoc-ui/intra-doc/anchors.stderr diff --git a/src/test/rustdoc-ui/intra-doc/assoc-field.rs b/tests/rustdoc-ui/intra-doc/assoc-field.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/assoc-field.rs rename to tests/rustdoc-ui/intra-doc/assoc-field.rs diff --git a/src/test/rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs b/tests/rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs rename to tests/rustdoc-ui/intra-doc/assoc-mod-inner-outer.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/assoc-field-dep.rs b/tests/rustdoc-ui/intra-doc/auxiliary/assoc-field-dep.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/assoc-field-dep.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/assoc-field-dep.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/assoc-mod-inner-outer-dep.rs b/tests/rustdoc-ui/intra-doc/auxiliary/assoc-mod-inner-outer-dep.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/assoc-mod-inner-outer-dep.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/assoc-mod-inner-outer-dep.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/dep1.rs b/tests/rustdoc-ui/intra-doc/auxiliary/dep1.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/dep1.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/dep1.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/dep2.rs b/tests/rustdoc-ui/intra-doc/auxiliary/dep2.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/dep2.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/dep2.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/dep3.rs b/tests/rustdoc-ui/intra-doc/auxiliary/dep3.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/dep3.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/dep3.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/dep4.rs b/tests/rustdoc-ui/intra-doc/auxiliary/dep4.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/dep4.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/dep4.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/intra-doc-broken.rs b/tests/rustdoc-ui/intra-doc/auxiliary/intra-doc-broken.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/intra-doc-broken.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/intra-doc-broken.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/pointer-reexports-allowed.rs b/tests/rustdoc-ui/intra-doc/auxiliary/pointer-reexports-allowed.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/pointer-reexports-allowed.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/pointer-reexports-allowed.rs diff --git a/src/test/rustdoc-ui/intra-doc/auxiliary/through-proc-macro-aux.rs b/tests/rustdoc-ui/intra-doc/auxiliary/through-proc-macro-aux.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/auxiliary/through-proc-macro-aux.rs rename to tests/rustdoc-ui/intra-doc/auxiliary/through-proc-macro-aux.rs diff --git a/src/test/rustdoc-ui/intra-doc/broken-reexport.rs b/tests/rustdoc-ui/intra-doc/broken-reexport.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/broken-reexport.rs rename to tests/rustdoc-ui/intra-doc/broken-reexport.rs diff --git a/src/test/rustdoc-ui/intra-doc/crate-nonexistent.rs b/tests/rustdoc-ui/intra-doc/crate-nonexistent.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/crate-nonexistent.rs rename to tests/rustdoc-ui/intra-doc/crate-nonexistent.rs diff --git a/src/test/rustdoc-ui/intra-doc/crate-nonexistent.stderr b/tests/rustdoc-ui/intra-doc/crate-nonexistent.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/crate-nonexistent.stderr rename to tests/rustdoc-ui/intra-doc/crate-nonexistent.stderr diff --git a/src/test/rustdoc-ui/intra-doc/disambiguator-mismatch.rs b/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/disambiguator-mismatch.rs rename to tests/rustdoc-ui/intra-doc/disambiguator-mismatch.rs diff --git a/src/test/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr b/tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr rename to tests/rustdoc-ui/intra-doc/disambiguator-mismatch.stderr diff --git a/src/test/rustdoc-ui/intra-doc/double-anchor.rs b/tests/rustdoc-ui/intra-doc/double-anchor.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/double-anchor.rs rename to tests/rustdoc-ui/intra-doc/double-anchor.rs diff --git a/src/test/rustdoc-ui/intra-doc/double-anchor.stderr b/tests/rustdoc-ui/intra-doc/double-anchor.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/double-anchor.stderr rename to tests/rustdoc-ui/intra-doc/double-anchor.stderr diff --git a/src/test/rustdoc-ui/intra-doc/email-address-localhost.rs b/tests/rustdoc-ui/intra-doc/email-address-localhost.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/email-address-localhost.rs rename to tests/rustdoc-ui/intra-doc/email-address-localhost.rs diff --git a/src/test/rustdoc-ui/intra-doc/errors.rs b/tests/rustdoc-ui/intra-doc/errors.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/errors.rs rename to tests/rustdoc-ui/intra-doc/errors.rs diff --git a/src/test/rustdoc-ui/intra-doc/errors.stderr b/tests/rustdoc-ui/intra-doc/errors.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/errors.stderr rename to tests/rustdoc-ui/intra-doc/errors.stderr diff --git a/src/test/rustdoc-ui/intra-doc/extern-crate-load.rs b/tests/rustdoc-ui/intra-doc/extern-crate-load.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/extern-crate-load.rs rename to tests/rustdoc-ui/intra-doc/extern-crate-load.rs diff --git a/src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs b/tests/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs rename to tests/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs diff --git a/src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.stderr b/tests/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.stderr rename to tests/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.stderr diff --git a/src/test/rustdoc-ui/intra-doc/field-ice.rs b/tests/rustdoc-ui/intra-doc/field-ice.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/field-ice.rs rename to tests/rustdoc-ui/intra-doc/field-ice.rs diff --git a/src/test/rustdoc-ui/intra-doc/field-ice.stderr b/tests/rustdoc-ui/intra-doc/field-ice.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/field-ice.stderr rename to tests/rustdoc-ui/intra-doc/field-ice.stderr diff --git a/src/test/rustdoc-ui/intra-doc/global-path.rs b/tests/rustdoc-ui/intra-doc/global-path.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/global-path.rs rename to tests/rustdoc-ui/intra-doc/global-path.rs diff --git a/src/test/rustdoc-ui/intra-doc/global-path.stderr b/tests/rustdoc-ui/intra-doc/global-path.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/global-path.stderr rename to tests/rustdoc-ui/intra-doc/global-path.stderr diff --git a/src/test/rustdoc-ui/intra-doc/html-as-generics-intra-doc.rs b/tests/rustdoc-ui/intra-doc/html-as-generics-intra-doc.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/html-as-generics-intra-doc.rs rename to tests/rustdoc-ui/intra-doc/html-as-generics-intra-doc.rs diff --git a/src/test/rustdoc-ui/intra-doc/html-as-generics-intra-doc.stderr b/tests/rustdoc-ui/intra-doc/html-as-generics-intra-doc.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/html-as-generics-intra-doc.stderr rename to tests/rustdoc-ui/intra-doc/html-as-generics-intra-doc.stderr diff --git a/src/test/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.rs b/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.rs rename to tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.rs diff --git a/src/test/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr b/tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr rename to tests/rustdoc-ui/intra-doc/incompatible-primitive-disambiguator.stderr diff --git a/src/test/rustdoc-ui/intra-doc/macro-rules-error.rs b/tests/rustdoc-ui/intra-doc/macro-rules-error.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/macro-rules-error.rs rename to tests/rustdoc-ui/intra-doc/macro-rules-error.rs diff --git a/src/test/rustdoc-ui/intra-doc/macro-rules-error.stderr b/tests/rustdoc-ui/intra-doc/macro-rules-error.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/macro-rules-error.stderr rename to tests/rustdoc-ui/intra-doc/macro-rules-error.stderr diff --git a/src/test/rustdoc-ui/intra-doc/macro-rules.rs b/tests/rustdoc-ui/intra-doc/macro-rules.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/macro-rules.rs rename to tests/rustdoc-ui/intra-doc/macro-rules.rs diff --git a/src/test/rustdoc-ui/intra-doc/malformed-generics.rs b/tests/rustdoc-ui/intra-doc/malformed-generics.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/malformed-generics.rs rename to tests/rustdoc-ui/intra-doc/malformed-generics.rs diff --git a/src/test/rustdoc-ui/intra-doc/malformed-generics.stderr b/tests/rustdoc-ui/intra-doc/malformed-generics.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/malformed-generics.stderr rename to tests/rustdoc-ui/intra-doc/malformed-generics.stderr diff --git a/src/test/rustdoc-ui/intra-doc/non-path-primitives.rs b/tests/rustdoc-ui/intra-doc/non-path-primitives.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/non-path-primitives.rs rename to tests/rustdoc-ui/intra-doc/non-path-primitives.rs diff --git a/src/test/rustdoc-ui/intra-doc/non-path-primitives.stderr b/tests/rustdoc-ui/intra-doc/non-path-primitives.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/non-path-primitives.stderr rename to tests/rustdoc-ui/intra-doc/non-path-primitives.stderr diff --git a/src/test/rustdoc-ui/intra-doc/pointer-reexports-allowed.rs b/tests/rustdoc-ui/intra-doc/pointer-reexports-allowed.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/pointer-reexports-allowed.rs rename to tests/rustdoc-ui/intra-doc/pointer-reexports-allowed.rs diff --git a/src/test/rustdoc-ui/intra-doc/prim-conflict.rs b/tests/rustdoc-ui/intra-doc/prim-conflict.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/prim-conflict.rs rename to tests/rustdoc-ui/intra-doc/prim-conflict.rs diff --git a/src/test/rustdoc-ui/intra-doc/prim-conflict.stderr b/tests/rustdoc-ui/intra-doc/prim-conflict.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/prim-conflict.stderr rename to tests/rustdoc-ui/intra-doc/prim-conflict.stderr diff --git a/src/test/rustdoc-ui/intra-doc/private-from-crate-level.rs b/tests/rustdoc-ui/intra-doc/private-from-crate-level.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/private-from-crate-level.rs rename to tests/rustdoc-ui/intra-doc/private-from-crate-level.rs diff --git a/src/test/rustdoc-ui/intra-doc/private-from-crate-level.stderr b/tests/rustdoc-ui/intra-doc/private-from-crate-level.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/private-from-crate-level.stderr rename to tests/rustdoc-ui/intra-doc/private-from-crate-level.stderr diff --git a/src/test/rustdoc-ui/intra-doc/private.private.stderr b/tests/rustdoc-ui/intra-doc/private.private.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/private.private.stderr rename to tests/rustdoc-ui/intra-doc/private.private.stderr diff --git a/src/test/rustdoc-ui/intra-doc/private.public.stderr b/tests/rustdoc-ui/intra-doc/private.public.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/private.public.stderr rename to tests/rustdoc-ui/intra-doc/private.public.stderr diff --git a/src/test/rustdoc-ui/intra-doc/private.rs b/tests/rustdoc-ui/intra-doc/private.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/private.rs rename to tests/rustdoc-ui/intra-doc/private.rs diff --git a/src/test/rustdoc-ui/intra-doc/span-ice-55723.rs b/tests/rustdoc-ui/intra-doc/span-ice-55723.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/span-ice-55723.rs rename to tests/rustdoc-ui/intra-doc/span-ice-55723.rs diff --git a/src/test/rustdoc-ui/intra-doc/span-ice-55723.stderr b/tests/rustdoc-ui/intra-doc/span-ice-55723.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/span-ice-55723.stderr rename to tests/rustdoc-ui/intra-doc/span-ice-55723.stderr diff --git a/src/test/rustdoc-ui/intra-doc/through-proc-macro.rs b/tests/rustdoc-ui/intra-doc/through-proc-macro.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/through-proc-macro.rs rename to tests/rustdoc-ui/intra-doc/through-proc-macro.rs diff --git a/src/test/rustdoc-ui/intra-doc/through-proc-macro.stderr b/tests/rustdoc-ui/intra-doc/through-proc-macro.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/through-proc-macro.stderr rename to tests/rustdoc-ui/intra-doc/through-proc-macro.stderr diff --git a/src/test/rustdoc-ui/intra-doc/unknown-disambiguator.rs b/tests/rustdoc-ui/intra-doc/unknown-disambiguator.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unknown-disambiguator.rs rename to tests/rustdoc-ui/intra-doc/unknown-disambiguator.rs diff --git a/src/test/rustdoc-ui/intra-doc/unknown-disambiguator.stderr b/tests/rustdoc-ui/intra-doc/unknown-disambiguator.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unknown-disambiguator.stderr rename to tests/rustdoc-ui/intra-doc/unknown-disambiguator.stderr diff --git a/src/test/rustdoc-ui/intra-doc/unresolved-import-recovery.rs b/tests/rustdoc-ui/intra-doc/unresolved-import-recovery.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unresolved-import-recovery.rs rename to tests/rustdoc-ui/intra-doc/unresolved-import-recovery.rs diff --git a/src/test/rustdoc-ui/intra-doc/unresolved-import-recovery.stderr b/tests/rustdoc-ui/intra-doc/unresolved-import-recovery.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unresolved-import-recovery.stderr rename to tests/rustdoc-ui/intra-doc/unresolved-import-recovery.stderr diff --git a/src/test/rustdoc-ui/intra-doc/unused-extern-crate.rs b/tests/rustdoc-ui/intra-doc/unused-extern-crate.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unused-extern-crate.rs rename to tests/rustdoc-ui/intra-doc/unused-extern-crate.rs diff --git a/src/test/rustdoc-ui/intra-doc/unused-extern-crate.stderr b/tests/rustdoc-ui/intra-doc/unused-extern-crate.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/unused-extern-crate.stderr rename to tests/rustdoc-ui/intra-doc/unused-extern-crate.stderr diff --git a/src/test/rustdoc-ui/intra-doc/warning-crlf.rs b/tests/rustdoc-ui/intra-doc/warning-crlf.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/warning-crlf.rs rename to tests/rustdoc-ui/intra-doc/warning-crlf.rs diff --git a/src/test/rustdoc-ui/intra-doc/warning-crlf.stderr b/tests/rustdoc-ui/intra-doc/warning-crlf.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/warning-crlf.stderr rename to tests/rustdoc-ui/intra-doc/warning-crlf.stderr diff --git a/src/test/rustdoc-ui/intra-doc/warning.rs b/tests/rustdoc-ui/intra-doc/warning.rs similarity index 100% rename from src/test/rustdoc-ui/intra-doc/warning.rs rename to tests/rustdoc-ui/intra-doc/warning.rs diff --git a/src/test/rustdoc-ui/intra-doc/warning.stderr b/tests/rustdoc-ui/intra-doc/warning.stderr similarity index 100% rename from src/test/rustdoc-ui/intra-doc/warning.stderr rename to tests/rustdoc-ui/intra-doc/warning.stderr diff --git a/src/test/rustdoc-ui/invalid-cfg.rs b/tests/rustdoc-ui/invalid-cfg.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-cfg.rs rename to tests/rustdoc-ui/invalid-cfg.rs diff --git a/src/test/rustdoc-ui/invalid-cfg.stderr b/tests/rustdoc-ui/invalid-cfg.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-cfg.stderr rename to tests/rustdoc-ui/invalid-cfg.stderr diff --git a/src/test/rustdoc-ui/invalid-doc-attr.rs b/tests/rustdoc-ui/invalid-doc-attr.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-doc-attr.rs rename to tests/rustdoc-ui/invalid-doc-attr.rs diff --git a/src/test/rustdoc-ui/invalid-doc-attr.stderr b/tests/rustdoc-ui/invalid-doc-attr.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-doc-attr.stderr rename to tests/rustdoc-ui/invalid-doc-attr.stderr diff --git a/src/test/rustdoc-ui/invalid-html-self-closing-tag.rs b/tests/rustdoc-ui/invalid-html-self-closing-tag.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-html-self-closing-tag.rs rename to tests/rustdoc-ui/invalid-html-self-closing-tag.rs diff --git a/src/test/rustdoc-ui/invalid-html-self-closing-tag.stderr b/tests/rustdoc-ui/invalid-html-self-closing-tag.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-html-self-closing-tag.stderr rename to tests/rustdoc-ui/invalid-html-self-closing-tag.stderr diff --git a/src/test/rustdoc-ui/invalid-html-tags.rs b/tests/rustdoc-ui/invalid-html-tags.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-html-tags.rs rename to tests/rustdoc-ui/invalid-html-tags.rs diff --git a/src/test/rustdoc-ui/invalid-html-tags.stderr b/tests/rustdoc-ui/invalid-html-tags.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-html-tags.stderr rename to tests/rustdoc-ui/invalid-html-tags.stderr diff --git a/src/test/rustdoc-ui/invalid-keyword.rs b/tests/rustdoc-ui/invalid-keyword.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-keyword.rs rename to tests/rustdoc-ui/invalid-keyword.rs diff --git a/src/test/rustdoc-ui/invalid-keyword.stderr b/tests/rustdoc-ui/invalid-keyword.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-keyword.stderr rename to tests/rustdoc-ui/invalid-keyword.stderr diff --git a/src/test/rustdoc-ui/invalid-syntax.rs b/tests/rustdoc-ui/invalid-syntax.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-syntax.rs rename to tests/rustdoc-ui/invalid-syntax.rs diff --git a/src/test/rustdoc-ui/invalid-syntax.stderr b/tests/rustdoc-ui/invalid-syntax.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-syntax.stderr rename to tests/rustdoc-ui/invalid-syntax.stderr diff --git a/src/test/rustdoc-ui/invalid-theme-name.rs b/tests/rustdoc-ui/invalid-theme-name.rs similarity index 100% rename from src/test/rustdoc-ui/invalid-theme-name.rs rename to tests/rustdoc-ui/invalid-theme-name.rs diff --git a/src/test/rustdoc-ui/invalid-theme-name.stderr b/tests/rustdoc-ui/invalid-theme-name.stderr similarity index 100% rename from src/test/rustdoc-ui/invalid-theme-name.stderr rename to tests/rustdoc-ui/invalid-theme-name.stderr diff --git a/src/test/rustdoc-ui/issue-101076.rs b/tests/rustdoc-ui/issue-101076.rs similarity index 100% rename from src/test/rustdoc-ui/issue-101076.rs rename to tests/rustdoc-ui/issue-101076.rs diff --git a/src/test/rustdoc-ui/issue-102986.rs b/tests/rustdoc-ui/issue-102986.rs similarity index 100% rename from src/test/rustdoc-ui/issue-102986.rs rename to tests/rustdoc-ui/issue-102986.rs diff --git a/src/test/rustdoc-ui/issue-102986.stderr b/tests/rustdoc-ui/issue-102986.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-102986.stderr rename to tests/rustdoc-ui/issue-102986.stderr diff --git a/src/test/rustdoc-ui/issue-103997.rs b/tests/rustdoc-ui/issue-103997.rs similarity index 100% rename from src/test/rustdoc-ui/issue-103997.rs rename to tests/rustdoc-ui/issue-103997.rs diff --git a/src/test/rustdoc-ui/issue-103997.stderr b/tests/rustdoc-ui/issue-103997.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-103997.stderr rename to tests/rustdoc-ui/issue-103997.stderr diff --git a/src/test/rustdoc-ui/issue-105334.rs b/tests/rustdoc-ui/issue-105334.rs similarity index 100% rename from src/test/rustdoc-ui/issue-105334.rs rename to tests/rustdoc-ui/issue-105334.rs diff --git a/src/test/rustdoc-ui/issue-105334.stderr b/tests/rustdoc-ui/issue-105334.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-105334.stderr rename to tests/rustdoc-ui/issue-105334.stderr diff --git a/src/test/rustdoc-ui/issue-105737.rs b/tests/rustdoc-ui/issue-105737.rs similarity index 100% rename from src/test/rustdoc-ui/issue-105737.rs rename to tests/rustdoc-ui/issue-105737.rs diff --git a/src/test/rustdoc-ui/issue-105737.stderr b/tests/rustdoc-ui/issue-105737.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-105737.stderr rename to tests/rustdoc-ui/issue-105737.stderr diff --git a/src/test/rustdoc-ui/issue-105742.rs b/tests/rustdoc-ui/issue-105742.rs similarity index 100% rename from src/test/rustdoc-ui/issue-105742.rs rename to tests/rustdoc-ui/issue-105742.rs diff --git a/src/test/rustdoc-ui/issue-105742.stderr b/tests/rustdoc-ui/issue-105742.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-105742.stderr rename to tests/rustdoc-ui/issue-105742.stderr diff --git a/src/test/rustdoc-ui/issue-106213.rs b/tests/rustdoc-ui/issue-106213.rs similarity index 100% rename from src/test/rustdoc-ui/issue-106213.rs rename to tests/rustdoc-ui/issue-106213.rs diff --git a/src/test/rustdoc-ui/issue-106213.stderr b/tests/rustdoc-ui/issue-106213.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-106213.stderr rename to tests/rustdoc-ui/issue-106213.stderr diff --git a/src/test/rustdoc-ui/issue-106226.rs b/tests/rustdoc-ui/issue-106226.rs similarity index 100% rename from src/test/rustdoc-ui/issue-106226.rs rename to tests/rustdoc-ui/issue-106226.rs diff --git a/src/test/rustdoc-ui/issue-106226.stderr b/tests/rustdoc-ui/issue-106226.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-106226.stderr rename to tests/rustdoc-ui/issue-106226.stderr diff --git a/src/test/rustdoc-ui/issue-58473-2.rs b/tests/rustdoc-ui/issue-58473-2.rs similarity index 100% rename from src/test/rustdoc-ui/issue-58473-2.rs rename to tests/rustdoc-ui/issue-58473-2.rs diff --git a/src/test/rustdoc-ui/issue-58473.rs b/tests/rustdoc-ui/issue-58473.rs similarity index 100% rename from src/test/rustdoc-ui/issue-58473.rs rename to tests/rustdoc-ui/issue-58473.rs diff --git a/src/test/rustdoc-ui/issue-61592-2.rs b/tests/rustdoc-ui/issue-61592-2.rs similarity index 100% rename from src/test/rustdoc-ui/issue-61592-2.rs rename to tests/rustdoc-ui/issue-61592-2.rs diff --git a/src/test/rustdoc-ui/issue-61592-2.stderr b/tests/rustdoc-ui/issue-61592-2.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-61592-2.stderr rename to tests/rustdoc-ui/issue-61592-2.stderr diff --git a/src/test/rustdoc-ui/issue-61592.rs b/tests/rustdoc-ui/issue-61592.rs similarity index 100% rename from src/test/rustdoc-ui/issue-61592.rs rename to tests/rustdoc-ui/issue-61592.rs diff --git a/src/test/rustdoc-ui/issue-61592.stderr b/tests/rustdoc-ui/issue-61592.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-61592.stderr rename to tests/rustdoc-ui/issue-61592.stderr diff --git a/src/test/rustdoc-ui/issue-61732.rs b/tests/rustdoc-ui/issue-61732.rs similarity index 100% rename from src/test/rustdoc-ui/issue-61732.rs rename to tests/rustdoc-ui/issue-61732.rs diff --git a/src/test/rustdoc-ui/issue-61732.stderr b/tests/rustdoc-ui/issue-61732.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-61732.stderr rename to tests/rustdoc-ui/issue-61732.stderr diff --git a/src/test/rustdoc-ui/issue-74134.private.stderr b/tests/rustdoc-ui/issue-74134.private.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-74134.private.stderr rename to tests/rustdoc-ui/issue-74134.private.stderr diff --git a/src/test/rustdoc-ui/issue-74134.public.stderr b/tests/rustdoc-ui/issue-74134.public.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-74134.public.stderr rename to tests/rustdoc-ui/issue-74134.public.stderr diff --git a/src/test/rustdoc-ui/issue-74134.rs b/tests/rustdoc-ui/issue-74134.rs similarity index 100% rename from src/test/rustdoc-ui/issue-74134.rs rename to tests/rustdoc-ui/issue-74134.rs diff --git a/src/test/rustdoc-ui/issue-79465.rs b/tests/rustdoc-ui/issue-79465.rs similarity index 100% rename from src/test/rustdoc-ui/issue-79465.rs rename to tests/rustdoc-ui/issue-79465.rs diff --git a/src/test/rustdoc-ui/issue-79465.stderr b/tests/rustdoc-ui/issue-79465.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-79465.stderr rename to tests/rustdoc-ui/issue-79465.stderr diff --git a/src/test/rustdoc-ui/issue-79467.rs b/tests/rustdoc-ui/issue-79467.rs similarity index 100% rename from src/test/rustdoc-ui/issue-79467.rs rename to tests/rustdoc-ui/issue-79467.rs diff --git a/src/test/rustdoc-ui/issue-79467.stderr b/tests/rustdoc-ui/issue-79467.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-79467.stderr rename to tests/rustdoc-ui/issue-79467.stderr diff --git a/src/test/rustdoc-ui/issue-79494.rs b/tests/rustdoc-ui/issue-79494.rs similarity index 100% rename from src/test/rustdoc-ui/issue-79494.rs rename to tests/rustdoc-ui/issue-79494.rs diff --git a/src/test/rustdoc-ui/issue-79494.stderr b/tests/rustdoc-ui/issue-79494.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-79494.stderr rename to tests/rustdoc-ui/issue-79494.stderr diff --git a/src/test/rustdoc-ui/issue-80992.rs b/tests/rustdoc-ui/issue-80992.rs similarity index 100% rename from src/test/rustdoc-ui/issue-80992.rs rename to tests/rustdoc-ui/issue-80992.rs diff --git a/src/test/rustdoc-ui/issue-80992.stdout b/tests/rustdoc-ui/issue-80992.stdout similarity index 100% rename from src/test/rustdoc-ui/issue-80992.stdout rename to tests/rustdoc-ui/issue-80992.stdout diff --git a/src/test/rustdoc-ui/issue-81662-shortness.rs b/tests/rustdoc-ui/issue-81662-shortness.rs similarity index 100% rename from src/test/rustdoc-ui/issue-81662-shortness.rs rename to tests/rustdoc-ui/issue-81662-shortness.rs diff --git a/src/test/rustdoc-ui/issue-81662-shortness.stdout b/tests/rustdoc-ui/issue-81662-shortness.stdout similarity index 100% rename from src/test/rustdoc-ui/issue-81662-shortness.stdout rename to tests/rustdoc-ui/issue-81662-shortness.stdout diff --git a/src/test/rustdoc-ui/issue-83883-describe-lints.rs b/tests/rustdoc-ui/issue-83883-describe-lints.rs similarity index 100% rename from src/test/rustdoc-ui/issue-83883-describe-lints.rs rename to tests/rustdoc-ui/issue-83883-describe-lints.rs diff --git a/src/test/rustdoc-ui/issue-83883-describe-lints.stdout b/tests/rustdoc-ui/issue-83883-describe-lints.stdout similarity index 100% rename from src/test/rustdoc-ui/issue-83883-describe-lints.stdout rename to tests/rustdoc-ui/issue-83883-describe-lints.stdout diff --git a/src/test/rustdoc-ui/issue-91134.rs b/tests/rustdoc-ui/issue-91134.rs similarity index 100% rename from src/test/rustdoc-ui/issue-91134.rs rename to tests/rustdoc-ui/issue-91134.rs diff --git a/src/test/rustdoc-ui/issue-91134.stdout b/tests/rustdoc-ui/issue-91134.stdout similarity index 100% rename from src/test/rustdoc-ui/issue-91134.stdout rename to tests/rustdoc-ui/issue-91134.stdout diff --git a/src/test/rustdoc-ui/issue-91713.rs b/tests/rustdoc-ui/issue-91713.rs similarity index 100% rename from src/test/rustdoc-ui/issue-91713.rs rename to tests/rustdoc-ui/issue-91713.rs diff --git a/src/test/rustdoc-ui/issue-91713.stderr b/tests/rustdoc-ui/issue-91713.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-91713.stderr rename to tests/rustdoc-ui/issue-91713.stderr diff --git a/src/test/rustdoc-ui/issue-91713.stdout b/tests/rustdoc-ui/issue-91713.stdout similarity index 100% rename from src/test/rustdoc-ui/issue-91713.stdout rename to tests/rustdoc-ui/issue-91713.stdout diff --git a/src/test/rustdoc-ui/issue-96287.rs b/tests/rustdoc-ui/issue-96287.rs similarity index 100% rename from src/test/rustdoc-ui/issue-96287.rs rename to tests/rustdoc-ui/issue-96287.rs diff --git a/src/test/rustdoc-ui/issue-96287.stderr b/tests/rustdoc-ui/issue-96287.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-96287.stderr rename to tests/rustdoc-ui/issue-96287.stderr diff --git a/src/test/rustdoc-ui/issue-98690.rs b/tests/rustdoc-ui/issue-98690.rs similarity index 100% rename from src/test/rustdoc-ui/issue-98690.rs rename to tests/rustdoc-ui/issue-98690.rs diff --git a/src/test/rustdoc-ui/issue-98690.stderr b/tests/rustdoc-ui/issue-98690.stderr similarity index 100% rename from src/test/rustdoc-ui/issue-98690.stderr rename to tests/rustdoc-ui/issue-98690.stderr diff --git a/src/test/rustdoc-ui/lint-group.rs b/tests/rustdoc-ui/lint-group.rs similarity index 100% rename from src/test/rustdoc-ui/lint-group.rs rename to tests/rustdoc-ui/lint-group.rs diff --git a/src/test/rustdoc-ui/lint-group.stderr b/tests/rustdoc-ui/lint-group.stderr similarity index 100% rename from src/test/rustdoc-ui/lint-group.stderr rename to tests/rustdoc-ui/lint-group.stderr diff --git a/src/test/rustdoc-ui/lint-missing-doc-code-example.rs b/tests/rustdoc-ui/lint-missing-doc-code-example.rs similarity index 100% rename from src/test/rustdoc-ui/lint-missing-doc-code-example.rs rename to tests/rustdoc-ui/lint-missing-doc-code-example.rs diff --git a/src/test/rustdoc-ui/lint-missing-doc-code-example.stderr b/tests/rustdoc-ui/lint-missing-doc-code-example.stderr similarity index 100% rename from src/test/rustdoc-ui/lint-missing-doc-code-example.stderr rename to tests/rustdoc-ui/lint-missing-doc-code-example.stderr diff --git a/src/test/rustdoc-ui/macro-docs.rs b/tests/rustdoc-ui/macro-docs.rs similarity index 100% rename from src/test/rustdoc-ui/macro-docs.rs rename to tests/rustdoc-ui/macro-docs.rs diff --git a/src/test/rustdoc-ui/macro-docs.stderr b/tests/rustdoc-ui/macro-docs.stderr similarity index 100% rename from src/test/rustdoc-ui/macro-docs.stderr rename to tests/rustdoc-ui/macro-docs.stderr diff --git a/src/test/rustdoc-ui/macro-docs.stdout b/tests/rustdoc-ui/macro-docs.stdout similarity index 100% rename from src/test/rustdoc-ui/macro-docs.stdout rename to tests/rustdoc-ui/macro-docs.stdout diff --git a/src/test/rustdoc-ui/no-crate-level-doc-lint.rs b/tests/rustdoc-ui/no-crate-level-doc-lint.rs similarity index 100% rename from src/test/rustdoc-ui/no-crate-level-doc-lint.rs rename to tests/rustdoc-ui/no-crate-level-doc-lint.rs diff --git a/src/test/rustdoc-ui/no-crate-level-doc-lint.stderr b/tests/rustdoc-ui/no-crate-level-doc-lint.stderr similarity index 100% rename from src/test/rustdoc-ui/no-crate-level-doc-lint.stderr rename to tests/rustdoc-ui/no-crate-level-doc-lint.stderr diff --git a/src/test/rustdoc-ui/no-run-flag-error.rs b/tests/rustdoc-ui/no-run-flag-error.rs similarity index 100% rename from src/test/rustdoc-ui/no-run-flag-error.rs rename to tests/rustdoc-ui/no-run-flag-error.rs diff --git a/src/test/rustdoc-ui/no-run-flag-error.stderr b/tests/rustdoc-ui/no-run-flag-error.stderr similarity index 100% rename from src/test/rustdoc-ui/no-run-flag-error.stderr rename to tests/rustdoc-ui/no-run-flag-error.stderr diff --git a/src/test/rustdoc-ui/no-run-flag.rs b/tests/rustdoc-ui/no-run-flag.rs similarity index 100% rename from src/test/rustdoc-ui/no-run-flag.rs rename to tests/rustdoc-ui/no-run-flag.rs diff --git a/src/test/rustdoc-ui/no-run-flag.stdout b/tests/rustdoc-ui/no-run-flag.stdout similarity index 100% rename from src/test/rustdoc-ui/no-run-flag.stdout rename to tests/rustdoc-ui/no-run-flag.stdout diff --git a/src/test/rustdoc-ui/nocapture-fail.rs b/tests/rustdoc-ui/nocapture-fail.rs similarity index 100% rename from src/test/rustdoc-ui/nocapture-fail.rs rename to tests/rustdoc-ui/nocapture-fail.rs diff --git a/src/test/rustdoc-ui/nocapture-fail.stderr b/tests/rustdoc-ui/nocapture-fail.stderr similarity index 100% rename from src/test/rustdoc-ui/nocapture-fail.stderr rename to tests/rustdoc-ui/nocapture-fail.stderr diff --git a/src/test/rustdoc-ui/nocapture-fail.stdout b/tests/rustdoc-ui/nocapture-fail.stdout similarity index 100% rename from src/test/rustdoc-ui/nocapture-fail.stdout rename to tests/rustdoc-ui/nocapture-fail.stdout diff --git a/src/test/rustdoc-ui/nocapture.rs b/tests/rustdoc-ui/nocapture.rs similarity index 100% rename from src/test/rustdoc-ui/nocapture.rs rename to tests/rustdoc-ui/nocapture.rs diff --git a/src/test/rustdoc-ui/nocapture.stderr b/tests/rustdoc-ui/nocapture.stderr similarity index 100% rename from src/test/rustdoc-ui/nocapture.stderr rename to tests/rustdoc-ui/nocapture.stderr diff --git a/src/test/rustdoc-ui/nocapture.stdout b/tests/rustdoc-ui/nocapture.stdout similarity index 100% rename from src/test/rustdoc-ui/nocapture.stdout rename to tests/rustdoc-ui/nocapture.stdout diff --git a/src/test/rustdoc-ui/normalize-cycle.rs b/tests/rustdoc-ui/normalize-cycle.rs similarity index 100% rename from src/test/rustdoc-ui/normalize-cycle.rs rename to tests/rustdoc-ui/normalize-cycle.rs diff --git a/src/test/rustdoc-ui/normalize-overflow.rs b/tests/rustdoc-ui/normalize-overflow.rs similarity index 100% rename from src/test/rustdoc-ui/normalize-overflow.rs rename to tests/rustdoc-ui/normalize-overflow.rs diff --git a/src/test/rustdoc-ui/output-format-html-stable.rs b/tests/rustdoc-ui/output-format-html-stable.rs similarity index 100% rename from src/test/rustdoc-ui/output-format-html-stable.rs rename to tests/rustdoc-ui/output-format-html-stable.rs diff --git a/src/test/rustdoc-ui/private-doc-test.rs b/tests/rustdoc-ui/private-doc-test.rs similarity index 100% rename from src/test/rustdoc-ui/private-doc-test.rs rename to tests/rustdoc-ui/private-doc-test.rs diff --git a/src/test/rustdoc-ui/private-item-doc-test.rs b/tests/rustdoc-ui/private-item-doc-test.rs similarity index 100% rename from src/test/rustdoc-ui/private-item-doc-test.rs rename to tests/rustdoc-ui/private-item-doc-test.rs diff --git a/src/test/rustdoc-ui/private-item-doc-test.stderr b/tests/rustdoc-ui/private-item-doc-test.stderr similarity index 100% rename from src/test/rustdoc-ui/private-item-doc-test.stderr rename to tests/rustdoc-ui/private-item-doc-test.stderr diff --git a/src/test/rustdoc-ui/private-public-item-doc-test.rs b/tests/rustdoc-ui/private-public-item-doc-test.rs similarity index 100% rename from src/test/rustdoc-ui/private-public-item-doc-test.rs rename to tests/rustdoc-ui/private-public-item-doc-test.rs diff --git a/src/test/rustdoc-ui/private-public-item-doc-test.stderr b/tests/rustdoc-ui/private-public-item-doc-test.stderr similarity index 100% rename from src/test/rustdoc-ui/private-public-item-doc-test.stderr rename to tests/rustdoc-ui/private-public-item-doc-test.stderr diff --git a/src/test/rustdoc-ui/pub-export-lint.rs b/tests/rustdoc-ui/pub-export-lint.rs similarity index 100% rename from src/test/rustdoc-ui/pub-export-lint.rs rename to tests/rustdoc-ui/pub-export-lint.rs diff --git a/src/test/rustdoc-ui/pub-export-lint.stderr b/tests/rustdoc-ui/pub-export-lint.stderr similarity index 100% rename from src/test/rustdoc-ui/pub-export-lint.stderr rename to tests/rustdoc-ui/pub-export-lint.stderr diff --git a/src/test/rustdoc-ui/public-reexported-item-doc-test.rs b/tests/rustdoc-ui/public-reexported-item-doc-test.rs similarity index 100% rename from src/test/rustdoc-ui/public-reexported-item-doc-test.rs rename to tests/rustdoc-ui/public-reexported-item-doc-test.rs diff --git a/src/test/rustdoc-ui/range-pattern.rs b/tests/rustdoc-ui/range-pattern.rs similarity index 100% rename from src/test/rustdoc-ui/range-pattern.rs rename to tests/rustdoc-ui/range-pattern.rs diff --git a/src/test/rustdoc-ui/recursive-deref-ice.rs b/tests/rustdoc-ui/recursive-deref-ice.rs similarity index 100% rename from src/test/rustdoc-ui/recursive-deref-ice.rs rename to tests/rustdoc-ui/recursive-deref-ice.rs diff --git a/src/test/rustdoc-ui/reference-link-reports-error-once.rs b/tests/rustdoc-ui/reference-link-reports-error-once.rs similarity index 100% rename from src/test/rustdoc-ui/reference-link-reports-error-once.rs rename to tests/rustdoc-ui/reference-link-reports-error-once.rs diff --git a/src/test/rustdoc-ui/reference-link-reports-error-once.stderr b/tests/rustdoc-ui/reference-link-reports-error-once.stderr similarity index 100% rename from src/test/rustdoc-ui/reference-link-reports-error-once.stderr rename to tests/rustdoc-ui/reference-link-reports-error-once.stderr diff --git a/src/test/rustdoc-ui/reference-links.rs b/tests/rustdoc-ui/reference-links.rs similarity index 100% rename from src/test/rustdoc-ui/reference-links.rs rename to tests/rustdoc-ui/reference-links.rs diff --git a/src/test/rustdoc-ui/reference-links.stderr b/tests/rustdoc-ui/reference-links.stderr similarity index 100% rename from src/test/rustdoc-ui/reference-links.stderr rename to tests/rustdoc-ui/reference-links.stderr diff --git a/src/test/rustdoc-ui/renamed-lint-still-applies.rs b/tests/rustdoc-ui/renamed-lint-still-applies.rs similarity index 100% rename from src/test/rustdoc-ui/renamed-lint-still-applies.rs rename to tests/rustdoc-ui/renamed-lint-still-applies.rs diff --git a/src/test/rustdoc-ui/renamed-lint-still-applies.stderr b/tests/rustdoc-ui/renamed-lint-still-applies.stderr similarity index 100% rename from src/test/rustdoc-ui/renamed-lint-still-applies.stderr rename to tests/rustdoc-ui/renamed-lint-still-applies.stderr diff --git a/src/test/rustdoc-ui/run-directory.correct.stdout b/tests/rustdoc-ui/run-directory.correct.stdout similarity index 100% rename from src/test/rustdoc-ui/run-directory.correct.stdout rename to tests/rustdoc-ui/run-directory.correct.stdout diff --git a/src/test/rustdoc-ui/run-directory.incorrect.stdout b/tests/rustdoc-ui/run-directory.incorrect.stdout similarity index 100% rename from src/test/rustdoc-ui/run-directory.incorrect.stdout rename to tests/rustdoc-ui/run-directory.incorrect.stdout diff --git a/src/test/rustdoc-ui/run-directory.rs b/tests/rustdoc-ui/run-directory.rs similarity index 100% rename from src/test/rustdoc-ui/run-directory.rs rename to tests/rustdoc-ui/run-directory.rs diff --git a/src/test/rustdoc-ui/rustc-check-passes.rs b/tests/rustdoc-ui/rustc-check-passes.rs similarity index 100% rename from src/test/rustdoc-ui/rustc-check-passes.rs rename to tests/rustdoc-ui/rustc-check-passes.rs diff --git a/src/test/rustdoc-ui/rustc-check-passes.stderr b/tests/rustdoc-ui/rustc-check-passes.stderr similarity index 100% rename from src/test/rustdoc-ui/rustc-check-passes.stderr rename to tests/rustdoc-ui/rustc-check-passes.stderr diff --git a/src/test/rustdoc-ui/scrape-examples-fail-if-type-error.rs b/tests/rustdoc-ui/scrape-examples-fail-if-type-error.rs similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-fail-if-type-error.rs rename to tests/rustdoc-ui/scrape-examples-fail-if-type-error.rs diff --git a/src/test/rustdoc-ui/scrape-examples-fail-if-type-error.stderr b/tests/rustdoc-ui/scrape-examples-fail-if-type-error.stderr similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-fail-if-type-error.stderr rename to tests/rustdoc-ui/scrape-examples-fail-if-type-error.stderr diff --git a/src/test/rustdoc-ui/scrape-examples-ice.rs b/tests/rustdoc-ui/scrape-examples-ice.rs similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-ice.rs rename to tests/rustdoc-ui/scrape-examples-ice.rs diff --git a/src/test/rustdoc-ui/scrape-examples-wrong-options-1.rs b/tests/rustdoc-ui/scrape-examples-wrong-options-1.rs similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-wrong-options-1.rs rename to tests/rustdoc-ui/scrape-examples-wrong-options-1.rs diff --git a/src/test/rustdoc-ui/scrape-examples-wrong-options-1.stderr b/tests/rustdoc-ui/scrape-examples-wrong-options-1.stderr similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-wrong-options-1.stderr rename to tests/rustdoc-ui/scrape-examples-wrong-options-1.stderr diff --git a/src/test/rustdoc-ui/scrape-examples-wrong-options-2.rs b/tests/rustdoc-ui/scrape-examples-wrong-options-2.rs similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-wrong-options-2.rs rename to tests/rustdoc-ui/scrape-examples-wrong-options-2.rs diff --git a/src/test/rustdoc-ui/scrape-examples-wrong-options-2.stderr b/tests/rustdoc-ui/scrape-examples-wrong-options-2.stderr similarity index 100% rename from src/test/rustdoc-ui/scrape-examples-wrong-options-2.stderr rename to tests/rustdoc-ui/scrape-examples-wrong-options-2.stderr diff --git a/src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs b/tests/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs similarity index 100% rename from src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs rename to tests/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs diff --git a/src/test/rustdoc-ui/suggestions/html-as-generics-no-suggestions.rs b/tests/rustdoc-ui/suggestions/html-as-generics-no-suggestions.rs similarity index 100% rename from src/test/rustdoc-ui/suggestions/html-as-generics-no-suggestions.rs rename to tests/rustdoc-ui/suggestions/html-as-generics-no-suggestions.rs diff --git a/src/test/rustdoc-ui/suggestions/html-as-generics-no-suggestions.stderr b/tests/rustdoc-ui/suggestions/html-as-generics-no-suggestions.stderr similarity index 100% rename from src/test/rustdoc-ui/suggestions/html-as-generics-no-suggestions.stderr rename to tests/rustdoc-ui/suggestions/html-as-generics-no-suggestions.stderr diff --git a/src/test/rustdoc-ui/suggestions/html-as-generics.fixed b/tests/rustdoc-ui/suggestions/html-as-generics.fixed similarity index 100% rename from src/test/rustdoc-ui/suggestions/html-as-generics.fixed rename to tests/rustdoc-ui/suggestions/html-as-generics.fixed diff --git a/src/test/rustdoc-ui/suggestions/html-as-generics.rs b/tests/rustdoc-ui/suggestions/html-as-generics.rs similarity index 100% rename from src/test/rustdoc-ui/suggestions/html-as-generics.rs rename to tests/rustdoc-ui/suggestions/html-as-generics.rs diff --git a/src/test/rustdoc-ui/suggestions/html-as-generics.stderr b/tests/rustdoc-ui/suggestions/html-as-generics.stderr similarity index 100% rename from src/test/rustdoc-ui/suggestions/html-as-generics.stderr rename to tests/rustdoc-ui/suggestions/html-as-generics.stderr diff --git a/src/test/rustdoc-ui/test-compile-fail1.rs b/tests/rustdoc-ui/test-compile-fail1.rs similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail1.rs rename to tests/rustdoc-ui/test-compile-fail1.rs diff --git a/src/test/rustdoc-ui/test-compile-fail1.stderr b/tests/rustdoc-ui/test-compile-fail1.stderr similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail1.stderr rename to tests/rustdoc-ui/test-compile-fail1.stderr diff --git a/src/test/rustdoc-ui/test-compile-fail2.rs b/tests/rustdoc-ui/test-compile-fail2.rs similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail2.rs rename to tests/rustdoc-ui/test-compile-fail2.rs diff --git a/src/test/rustdoc-ui/test-compile-fail2.stderr b/tests/rustdoc-ui/test-compile-fail2.stderr similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail2.stderr rename to tests/rustdoc-ui/test-compile-fail2.stderr diff --git a/src/test/rustdoc-ui/test-compile-fail3.rs b/tests/rustdoc-ui/test-compile-fail3.rs similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail3.rs rename to tests/rustdoc-ui/test-compile-fail3.rs diff --git a/src/test/rustdoc-ui/test-compile-fail3.stderr b/tests/rustdoc-ui/test-compile-fail3.stderr similarity index 100% rename from src/test/rustdoc-ui/test-compile-fail3.stderr rename to tests/rustdoc-ui/test-compile-fail3.stderr diff --git a/src/test/rustdoc-ui/test-no_std.rs b/tests/rustdoc-ui/test-no_std.rs similarity index 100% rename from src/test/rustdoc-ui/test-no_std.rs rename to tests/rustdoc-ui/test-no_std.rs diff --git a/src/test/rustdoc-ui/test-no_std.stdout b/tests/rustdoc-ui/test-no_std.stdout similarity index 100% rename from src/test/rustdoc-ui/test-no_std.stdout rename to tests/rustdoc-ui/test-no_std.stdout diff --git a/src/test/rustdoc-ui/test-type.rs b/tests/rustdoc-ui/test-type.rs similarity index 100% rename from src/test/rustdoc-ui/test-type.rs rename to tests/rustdoc-ui/test-type.rs diff --git a/src/test/rustdoc-ui/test-type.stdout b/tests/rustdoc-ui/test-type.stdout similarity index 100% rename from src/test/rustdoc-ui/test-type.stdout rename to tests/rustdoc-ui/test-type.stdout diff --git a/src/test/rustdoc-ui/track-diagnostics.rs b/tests/rustdoc-ui/track-diagnostics.rs similarity index 100% rename from src/test/rustdoc-ui/track-diagnostics.rs rename to tests/rustdoc-ui/track-diagnostics.rs diff --git a/src/test/rustdoc-ui/track-diagnostics.stderr b/tests/rustdoc-ui/track-diagnostics.stderr similarity index 100% rename from src/test/rustdoc-ui/track-diagnostics.stderr rename to tests/rustdoc-ui/track-diagnostics.stderr diff --git a/src/test/rustdoc-ui/tuple-variadic-check.rs b/tests/rustdoc-ui/tuple-variadic-check.rs similarity index 100% rename from src/test/rustdoc-ui/tuple-variadic-check.rs rename to tests/rustdoc-ui/tuple-variadic-check.rs diff --git a/src/test/rustdoc-ui/tuple-variadic-check.stderr b/tests/rustdoc-ui/tuple-variadic-check.stderr similarity index 100% rename from src/test/rustdoc-ui/tuple-variadic-check.stderr rename to tests/rustdoc-ui/tuple-variadic-check.stderr diff --git a/src/test/rustdoc-ui/unable-fulfill-trait.rs b/tests/rustdoc-ui/unable-fulfill-trait.rs similarity index 100% rename from src/test/rustdoc-ui/unable-fulfill-trait.rs rename to tests/rustdoc-ui/unable-fulfill-trait.rs diff --git a/src/test/rustdoc-ui/unable-fulfill-trait.stderr b/tests/rustdoc-ui/unable-fulfill-trait.stderr similarity index 100% rename from src/test/rustdoc-ui/unable-fulfill-trait.stderr rename to tests/rustdoc-ui/unable-fulfill-trait.stderr diff --git a/src/test/rustdoc-ui/unknown-renamed-lints.rs b/tests/rustdoc-ui/unknown-renamed-lints.rs similarity index 100% rename from src/test/rustdoc-ui/unknown-renamed-lints.rs rename to tests/rustdoc-ui/unknown-renamed-lints.rs diff --git a/src/test/rustdoc-ui/unknown-renamed-lints.stderr b/tests/rustdoc-ui/unknown-renamed-lints.stderr similarity index 100% rename from src/test/rustdoc-ui/unknown-renamed-lints.stderr rename to tests/rustdoc-ui/unknown-renamed-lints.stderr diff --git a/src/test/rustdoc-ui/unparseable-doc-test.rs b/tests/rustdoc-ui/unparseable-doc-test.rs similarity index 100% rename from src/test/rustdoc-ui/unparseable-doc-test.rs rename to tests/rustdoc-ui/unparseable-doc-test.rs diff --git a/src/test/rustdoc-ui/unparseable-doc-test.stdout b/tests/rustdoc-ui/unparseable-doc-test.stdout similarity index 100% rename from src/test/rustdoc-ui/unparseable-doc-test.stdout rename to tests/rustdoc-ui/unparseable-doc-test.stdout diff --git a/src/test/rustdoc-ui/unused-braces-lint.rs b/tests/rustdoc-ui/unused-braces-lint.rs similarity index 100% rename from src/test/rustdoc-ui/unused-braces-lint.rs rename to tests/rustdoc-ui/unused-braces-lint.rs diff --git a/src/test/rustdoc-ui/unused-extern-crate.rs b/tests/rustdoc-ui/unused-extern-crate.rs similarity index 100% rename from src/test/rustdoc-ui/unused-extern-crate.rs rename to tests/rustdoc-ui/unused-extern-crate.rs diff --git a/src/test/rustdoc-ui/unused.rs b/tests/rustdoc-ui/unused.rs similarity index 100% rename from src/test/rustdoc-ui/unused.rs rename to tests/rustdoc-ui/unused.rs diff --git a/src/test/rustdoc-ui/use_both_out_dir_and_output_options.rs b/tests/rustdoc-ui/use_both_out_dir_and_output_options.rs similarity index 100% rename from src/test/rustdoc-ui/use_both_out_dir_and_output_options.rs rename to tests/rustdoc-ui/use_both_out_dir_and_output_options.rs diff --git a/src/test/rustdoc-ui/use_both_out_dir_and_output_options.stderr b/tests/rustdoc-ui/use_both_out_dir_and_output_options.stderr similarity index 100% rename from src/test/rustdoc-ui/use_both_out_dir_and_output_options.stderr rename to tests/rustdoc-ui/use_both_out_dir_and_output_options.stderr diff --git a/src/test/rustdoc-ui/wasm-safe.rs b/tests/rustdoc-ui/wasm-safe.rs similarity index 100% rename from src/test/rustdoc-ui/wasm-safe.rs rename to tests/rustdoc-ui/wasm-safe.rs diff --git a/src/test/rustdoc-ui/z-help.rs b/tests/rustdoc-ui/z-help.rs similarity index 100% rename from src/test/rustdoc-ui/z-help.rs rename to tests/rustdoc-ui/z-help.rs diff --git a/src/test/rustdoc-ui/z-help.stdout b/tests/rustdoc-ui/z-help.stdout similarity index 100% rename from src/test/rustdoc-ui/z-help.stdout rename to tests/rustdoc-ui/z-help.stdout diff --git a/src/test/rustdoc/all.rs b/tests/rustdoc/all.rs similarity index 100% rename from src/test/rustdoc/all.rs rename to tests/rustdoc/all.rs diff --git a/src/test/rustdoc/anchors.no_const_anchor.html b/tests/rustdoc/anchors.no_const_anchor.html similarity index 100% rename from src/test/rustdoc/anchors.no_const_anchor.html rename to tests/rustdoc/anchors.no_const_anchor.html diff --git a/src/test/rustdoc/anchors.no_const_anchor2.html b/tests/rustdoc/anchors.no_const_anchor2.html similarity index 100% rename from src/test/rustdoc/anchors.no_const_anchor2.html rename to tests/rustdoc/anchors.no_const_anchor2.html diff --git a/src/test/rustdoc/anchors.no_method_anchor.html b/tests/rustdoc/anchors.no_method_anchor.html similarity index 100% rename from src/test/rustdoc/anchors.no_method_anchor.html rename to tests/rustdoc/anchors.no_method_anchor.html diff --git a/src/test/rustdoc/anchors.no_trait_method_anchor.html b/tests/rustdoc/anchors.no_trait_method_anchor.html similarity index 100% rename from src/test/rustdoc/anchors.no_trait_method_anchor.html rename to tests/rustdoc/anchors.no_trait_method_anchor.html diff --git a/src/test/rustdoc/anchors.no_tymethod_anchor.html b/tests/rustdoc/anchors.no_tymethod_anchor.html similarity index 100% rename from src/test/rustdoc/anchors.no_tymethod_anchor.html rename to tests/rustdoc/anchors.no_tymethod_anchor.html diff --git a/src/test/rustdoc/anchors.no_type_anchor.html b/tests/rustdoc/anchors.no_type_anchor.html similarity index 100% rename from src/test/rustdoc/anchors.no_type_anchor.html rename to tests/rustdoc/anchors.no_type_anchor.html diff --git a/src/test/rustdoc/anchors.no_type_anchor2.html b/tests/rustdoc/anchors.no_type_anchor2.html similarity index 100% rename from src/test/rustdoc/anchors.no_type_anchor2.html rename to tests/rustdoc/anchors.no_type_anchor2.html diff --git a/src/test/rustdoc/anchors.rs b/tests/rustdoc/anchors.rs similarity index 100% rename from src/test/rustdoc/anchors.rs rename to tests/rustdoc/anchors.rs diff --git a/src/test/rustdoc/anonymous-lifetime.rs b/tests/rustdoc/anonymous-lifetime.rs similarity index 100% rename from src/test/rustdoc/anonymous-lifetime.rs rename to tests/rustdoc/anonymous-lifetime.rs diff --git a/src/test/rustdoc/anonymous-reexport.rs b/tests/rustdoc/anonymous-reexport.rs similarity index 100% rename from src/test/rustdoc/anonymous-reexport.rs rename to tests/rustdoc/anonymous-reexport.rs diff --git a/src/test/rustdoc/array-links.link_box_generic.html b/tests/rustdoc/array-links.link_box_generic.html similarity index 100% rename from src/test/rustdoc/array-links.link_box_generic.html rename to tests/rustdoc/array-links.link_box_generic.html diff --git a/src/test/rustdoc/array-links.link_box_u32.html b/tests/rustdoc/array-links.link_box_u32.html similarity index 100% rename from src/test/rustdoc/array-links.link_box_u32.html rename to tests/rustdoc/array-links.link_box_u32.html diff --git a/src/test/rustdoc/array-links.link_slice_generic.html b/tests/rustdoc/array-links.link_slice_generic.html similarity index 100% rename from src/test/rustdoc/array-links.link_slice_generic.html rename to tests/rustdoc/array-links.link_slice_generic.html diff --git a/src/test/rustdoc/array-links.link_slice_u32.html b/tests/rustdoc/array-links.link_slice_u32.html similarity index 100% rename from src/test/rustdoc/array-links.link_slice_u32.html rename to tests/rustdoc/array-links.link_slice_u32.html diff --git a/src/test/rustdoc/array-links.rs b/tests/rustdoc/array-links.rs similarity index 100% rename from src/test/rustdoc/array-links.rs rename to tests/rustdoc/array-links.rs diff --git a/src/test/rustdoc/asm-foreign.rs b/tests/rustdoc/asm-foreign.rs similarity index 100% rename from src/test/rustdoc/asm-foreign.rs rename to tests/rustdoc/asm-foreign.rs diff --git a/src/test/rustdoc/asm-foreign2.rs b/tests/rustdoc/asm-foreign2.rs similarity index 100% rename from src/test/rustdoc/asm-foreign2.rs rename to tests/rustdoc/asm-foreign2.rs diff --git a/src/test/rustdoc/assoc-consts-version.rs b/tests/rustdoc/assoc-consts-version.rs similarity index 100% rename from src/test/rustdoc/assoc-consts-version.rs rename to tests/rustdoc/assoc-consts-version.rs diff --git a/src/test/rustdoc/assoc-consts.rs b/tests/rustdoc/assoc-consts.rs similarity index 100% rename from src/test/rustdoc/assoc-consts.rs rename to tests/rustdoc/assoc-consts.rs diff --git a/src/test/rustdoc/assoc-item-cast.rs b/tests/rustdoc/assoc-item-cast.rs similarity index 100% rename from src/test/rustdoc/assoc-item-cast.rs rename to tests/rustdoc/assoc-item-cast.rs diff --git a/src/test/rustdoc/assoc-types.rs b/tests/rustdoc/assoc-types.rs similarity index 100% rename from src/test/rustdoc/assoc-types.rs rename to tests/rustdoc/assoc-types.rs diff --git a/src/test/rustdoc/associated-consts.rs b/tests/rustdoc/associated-consts.rs similarity index 100% rename from src/test/rustdoc/associated-consts.rs rename to tests/rustdoc/associated-consts.rs diff --git a/src/test/rustdoc/async-fn.rs b/tests/rustdoc/async-fn.rs similarity index 100% rename from src/test/rustdoc/async-fn.rs rename to tests/rustdoc/async-fn.rs diff --git a/src/test/rustdoc/async-move-doctest.rs b/tests/rustdoc/async-move-doctest.rs similarity index 100% rename from src/test/rustdoc/async-move-doctest.rs rename to tests/rustdoc/async-move-doctest.rs diff --git a/src/test/rustdoc/async-trait-sig.rs b/tests/rustdoc/async-trait-sig.rs similarity index 100% rename from src/test/rustdoc/async-trait-sig.rs rename to tests/rustdoc/async-trait-sig.rs diff --git a/src/test/rustdoc/async-trait.rs b/tests/rustdoc/async-trait.rs similarity index 100% rename from src/test/rustdoc/async-trait.rs rename to tests/rustdoc/async-trait.rs diff --git a/src/test/rustdoc/attribute-rendering.rs b/tests/rustdoc/attribute-rendering.rs similarity index 100% rename from src/test/rustdoc/attribute-rendering.rs rename to tests/rustdoc/attribute-rendering.rs diff --git a/src/test/rustdoc/attributes.rs b/tests/rustdoc/attributes.rs similarity index 100% rename from src/test/rustdoc/attributes.rs rename to tests/rustdoc/attributes.rs diff --git a/src/test/rustdoc/auto-impl-for-trait.rs b/tests/rustdoc/auto-impl-for-trait.rs similarity index 100% rename from src/test/rustdoc/auto-impl-for-trait.rs rename to tests/rustdoc/auto-impl-for-trait.rs diff --git a/src/test/rustdoc/auto-impl-primitive.rs b/tests/rustdoc/auto-impl-primitive.rs similarity index 100% rename from src/test/rustdoc/auto-impl-primitive.rs rename to tests/rustdoc/auto-impl-primitive.rs diff --git a/src/test/rustdoc/auto-trait-not-send.rs b/tests/rustdoc/auto-trait-not-send.rs similarity index 100% rename from src/test/rustdoc/auto-trait-not-send.rs rename to tests/rustdoc/auto-trait-not-send.rs diff --git a/src/test/rustdoc/auto-traits.rs b/tests/rustdoc/auto-traits.rs similarity index 100% rename from src/test/rustdoc/auto-traits.rs rename to tests/rustdoc/auto-traits.rs diff --git a/src/test/rustdoc/auto_aliases.rs b/tests/rustdoc/auto_aliases.rs similarity index 100% rename from src/test/rustdoc/auto_aliases.rs rename to tests/rustdoc/auto_aliases.rs diff --git a/src/test/rustdoc/auxiliary/all-item-types.rs b/tests/rustdoc/auxiliary/all-item-types.rs similarity index 100% rename from src/test/rustdoc/auxiliary/all-item-types.rs rename to tests/rustdoc/auxiliary/all-item-types.rs diff --git a/src/test/rustdoc/auxiliary/async-trait-dep.rs b/tests/rustdoc/auxiliary/async-trait-dep.rs similarity index 100% rename from src/test/rustdoc/auxiliary/async-trait-dep.rs rename to tests/rustdoc/auxiliary/async-trait-dep.rs diff --git a/src/test/rustdoc/auxiliary/auto-traits.rs b/tests/rustdoc/auxiliary/auto-traits.rs similarity index 100% rename from src/test/rustdoc/auxiliary/auto-traits.rs rename to tests/rustdoc/auxiliary/auto-traits.rs diff --git a/src/test/rustdoc/auxiliary/cross-crate-hidden-assoc-trait-items.rs b/tests/rustdoc/auxiliary/cross-crate-hidden-assoc-trait-items.rs similarity index 100% rename from src/test/rustdoc/auxiliary/cross-crate-hidden-assoc-trait-items.rs rename to tests/rustdoc/auxiliary/cross-crate-hidden-assoc-trait-items.rs diff --git a/src/test/rustdoc/auxiliary/cross-crate-hidden-impl-parameter.rs b/tests/rustdoc/auxiliary/cross-crate-hidden-impl-parameter.rs similarity index 100% rename from src/test/rustdoc/auxiliary/cross-crate-hidden-impl-parameter.rs rename to tests/rustdoc/auxiliary/cross-crate-hidden-impl-parameter.rs diff --git a/src/test/rustdoc/auxiliary/elided-lifetime.rs b/tests/rustdoc/auxiliary/elided-lifetime.rs similarity index 100% rename from src/test/rustdoc/auxiliary/elided-lifetime.rs rename to tests/rustdoc/auxiliary/elided-lifetime.rs diff --git a/src/test/rustdoc/auxiliary/empty.rs b/tests/rustdoc/auxiliary/empty.rs similarity index 100% rename from src/test/rustdoc/auxiliary/empty.rs rename to tests/rustdoc/auxiliary/empty.rs diff --git a/src/test/rustdoc/auxiliary/enum-primitive.rs b/tests/rustdoc/auxiliary/enum-primitive.rs similarity index 100% rename from src/test/rustdoc/auxiliary/enum-primitive.rs rename to tests/rustdoc/auxiliary/enum-primitive.rs diff --git a/src/test/rustdoc/auxiliary/extern-impl-trait.rs b/tests/rustdoc/auxiliary/extern-impl-trait.rs similarity index 100% rename from src/test/rustdoc/auxiliary/extern-impl-trait.rs rename to tests/rustdoc/auxiliary/extern-impl-trait.rs diff --git a/src/test/rustdoc/auxiliary/extern-links.rs b/tests/rustdoc/auxiliary/extern-links.rs similarity index 100% rename from src/test/rustdoc/auxiliary/extern-links.rs rename to tests/rustdoc/auxiliary/extern-links.rs diff --git a/src/test/rustdoc/auxiliary/external-cross-doc.md b/tests/rustdoc/auxiliary/external-cross-doc.md similarity index 100% rename from src/test/rustdoc/auxiliary/external-cross-doc.md rename to tests/rustdoc/auxiliary/external-cross-doc.md diff --git a/src/test/rustdoc/auxiliary/external-cross.rs b/tests/rustdoc/auxiliary/external-cross.rs similarity index 100% rename from src/test/rustdoc/auxiliary/external-cross.rs rename to tests/rustdoc/auxiliary/external-cross.rs diff --git a/src/test/rustdoc/auxiliary/external-doc.md b/tests/rustdoc/auxiliary/external-doc.md similarity index 100% rename from src/test/rustdoc/auxiliary/external-doc.md rename to tests/rustdoc/auxiliary/external-doc.md diff --git a/src/test/rustdoc/auxiliary/external-macro-src.rs b/tests/rustdoc/auxiliary/external-macro-src.rs similarity index 100% rename from src/test/rustdoc/auxiliary/external-macro-src.rs rename to tests/rustdoc/auxiliary/external-macro-src.rs diff --git a/src/test/rustdoc/auxiliary/html_root.rs b/tests/rustdoc/auxiliary/html_root.rs similarity index 100% rename from src/test/rustdoc/auxiliary/html_root.rs rename to tests/rustdoc/auxiliary/html_root.rs diff --git a/src/test/rustdoc/auxiliary/incoherent-impl-types.rs b/tests/rustdoc/auxiliary/incoherent-impl-types.rs similarity index 100% rename from src/test/rustdoc/auxiliary/incoherent-impl-types.rs rename to tests/rustdoc/auxiliary/incoherent-impl-types.rs diff --git a/src/test/rustdoc/auxiliary/inline-default-methods.rs b/tests/rustdoc/auxiliary/inline-default-methods.rs similarity index 100% rename from src/test/rustdoc/auxiliary/inline-default-methods.rs rename to tests/rustdoc/auxiliary/inline-default-methods.rs diff --git a/src/test/rustdoc/auxiliary/issue-100204-aux.rs b/tests/rustdoc/auxiliary/issue-100204-aux.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-100204-aux.rs rename to tests/rustdoc/auxiliary/issue-100204-aux.rs diff --git a/src/test/rustdoc/auxiliary/issue-13698.rs b/tests/rustdoc/auxiliary/issue-13698.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-13698.rs rename to tests/rustdoc/auxiliary/issue-13698.rs diff --git a/src/test/rustdoc/auxiliary/issue-15318.rs b/tests/rustdoc/auxiliary/issue-15318.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-15318.rs rename to tests/rustdoc/auxiliary/issue-15318.rs diff --git a/src/test/rustdoc/auxiliary/issue-17476.rs b/tests/rustdoc/auxiliary/issue-17476.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-17476.rs rename to tests/rustdoc/auxiliary/issue-17476.rs diff --git a/src/test/rustdoc/auxiliary/issue-19190-3.rs b/tests/rustdoc/auxiliary/issue-19190-3.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-19190-3.rs rename to tests/rustdoc/auxiliary/issue-19190-3.rs diff --git a/src/test/rustdoc/auxiliary/issue-20646.rs b/tests/rustdoc/auxiliary/issue-20646.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-20646.rs rename to tests/rustdoc/auxiliary/issue-20646.rs diff --git a/src/test/rustdoc/auxiliary/issue-20727.rs b/tests/rustdoc/auxiliary/issue-20727.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-20727.rs rename to tests/rustdoc/auxiliary/issue-20727.rs diff --git a/src/test/rustdoc/auxiliary/issue-21092.rs b/tests/rustdoc/auxiliary/issue-21092.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-21092.rs rename to tests/rustdoc/auxiliary/issue-21092.rs diff --git a/src/test/rustdoc/auxiliary/issue-21801.rs b/tests/rustdoc/auxiliary/issue-21801.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-21801.rs rename to tests/rustdoc/auxiliary/issue-21801.rs diff --git a/src/test/rustdoc/auxiliary/issue-22025.rs b/tests/rustdoc/auxiliary/issue-22025.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-22025.rs rename to tests/rustdoc/auxiliary/issue-22025.rs diff --git a/src/test/rustdoc/auxiliary/issue-23207-1.rs b/tests/rustdoc/auxiliary/issue-23207-1.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-23207-1.rs rename to tests/rustdoc/auxiliary/issue-23207-1.rs diff --git a/src/test/rustdoc/auxiliary/issue-23207-2.rs b/tests/rustdoc/auxiliary/issue-23207-2.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-23207-2.rs rename to tests/rustdoc/auxiliary/issue-23207-2.rs diff --git a/src/test/rustdoc/auxiliary/issue-26606-macro.rs b/tests/rustdoc/auxiliary/issue-26606-macro.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-26606-macro.rs rename to tests/rustdoc/auxiliary/issue-26606-macro.rs diff --git a/src/test/rustdoc/auxiliary/issue-27362-aux.rs b/tests/rustdoc/auxiliary/issue-27362-aux.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-27362-aux.rs rename to tests/rustdoc/auxiliary/issue-27362-aux.rs diff --git a/src/test/rustdoc/auxiliary/issue-28927-1.rs b/tests/rustdoc/auxiliary/issue-28927-1.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-28927-1.rs rename to tests/rustdoc/auxiliary/issue-28927-1.rs diff --git a/src/test/rustdoc/auxiliary/issue-28927-2.rs b/tests/rustdoc/auxiliary/issue-28927-2.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-28927-2.rs rename to tests/rustdoc/auxiliary/issue-28927-2.rs diff --git a/src/test/rustdoc/auxiliary/issue-29584.rs b/tests/rustdoc/auxiliary/issue-29584.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-29584.rs rename to tests/rustdoc/auxiliary/issue-29584.rs diff --git a/src/test/rustdoc/auxiliary/issue-30109-1.rs b/tests/rustdoc/auxiliary/issue-30109-1.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-30109-1.rs rename to tests/rustdoc/auxiliary/issue-30109-1.rs diff --git a/src/test/rustdoc/auxiliary/issue-34274.rs b/tests/rustdoc/auxiliary/issue-34274.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-34274.rs rename to tests/rustdoc/auxiliary/issue-34274.rs diff --git a/src/test/rustdoc/auxiliary/issue-36031.rs b/tests/rustdoc/auxiliary/issue-36031.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-36031.rs rename to tests/rustdoc/auxiliary/issue-36031.rs diff --git a/src/test/rustdoc/auxiliary/issue-40936.rs b/tests/rustdoc/auxiliary/issue-40936.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-40936.rs rename to tests/rustdoc/auxiliary/issue-40936.rs diff --git a/src/test/rustdoc/auxiliary/issue-46727.rs b/tests/rustdoc/auxiliary/issue-46727.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-46727.rs rename to tests/rustdoc/auxiliary/issue-46727.rs diff --git a/src/test/rustdoc/auxiliary/issue-48414.rs b/tests/rustdoc/auxiliary/issue-48414.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-48414.rs rename to tests/rustdoc/auxiliary/issue-48414.rs diff --git a/src/test/rustdoc/auxiliary/issue-53689.rs b/tests/rustdoc/auxiliary/issue-53689.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-53689.rs rename to tests/rustdoc/auxiliary/issue-53689.rs diff --git a/src/test/rustdoc/auxiliary/issue-57180.rs b/tests/rustdoc/auxiliary/issue-57180.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-57180.rs rename to tests/rustdoc/auxiliary/issue-57180.rs diff --git a/src/test/rustdoc/auxiliary/issue-61592.rs b/tests/rustdoc/auxiliary/issue-61592.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-61592.rs rename to tests/rustdoc/auxiliary/issue-61592.rs diff --git a/src/test/rustdoc/auxiliary/issue-73061.rs b/tests/rustdoc/auxiliary/issue-73061.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-73061.rs rename to tests/rustdoc/auxiliary/issue-73061.rs diff --git a/src/test/rustdoc/auxiliary/issue-85454.rs b/tests/rustdoc/auxiliary/issue-85454.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-85454.rs rename to tests/rustdoc/auxiliary/issue-85454.rs diff --git a/src/test/rustdoc/auxiliary/issue-86620-1.rs b/tests/rustdoc/auxiliary/issue-86620-1.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-86620-1.rs rename to tests/rustdoc/auxiliary/issue-86620-1.rs diff --git a/src/test/rustdoc/auxiliary/issue-98697-reexport-with-anonymous-lifetime.rs b/tests/rustdoc/auxiliary/issue-98697-reexport-with-anonymous-lifetime.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-98697-reexport-with-anonymous-lifetime.rs rename to tests/rustdoc/auxiliary/issue-98697-reexport-with-anonymous-lifetime.rs diff --git a/src/test/rustdoc/auxiliary/issue-99221-aux.rs b/tests/rustdoc/auxiliary/issue-99221-aux.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-99221-aux.rs rename to tests/rustdoc/auxiliary/issue-99221-aux.rs diff --git a/src/test/rustdoc/auxiliary/issue-99734-aux.rs b/tests/rustdoc/auxiliary/issue-99734-aux.rs similarity index 100% rename from src/test/rustdoc/auxiliary/issue-99734-aux.rs rename to tests/rustdoc/auxiliary/issue-99734-aux.rs diff --git a/src/test/rustdoc/auxiliary/macro_pub_in_module.rs b/tests/rustdoc/auxiliary/macro_pub_in_module.rs similarity index 100% rename from src/test/rustdoc/auxiliary/macro_pub_in_module.rs rename to tests/rustdoc/auxiliary/macro_pub_in_module.rs diff --git a/src/test/rustdoc/auxiliary/masked.rs b/tests/rustdoc/auxiliary/masked.rs similarity index 100% rename from src/test/rustdoc/auxiliary/masked.rs rename to tests/rustdoc/auxiliary/masked.rs diff --git a/src/test/rustdoc/auxiliary/mod-stackoverflow.rs b/tests/rustdoc/auxiliary/mod-stackoverflow.rs similarity index 100% rename from src/test/rustdoc/auxiliary/mod-stackoverflow.rs rename to tests/rustdoc/auxiliary/mod-stackoverflow.rs diff --git a/src/test/rustdoc/auxiliary/no_html_root.rs b/tests/rustdoc/auxiliary/no_html_root.rs similarity index 100% rename from src/test/rustdoc/auxiliary/no_html_root.rs rename to tests/rustdoc/auxiliary/no_html_root.rs diff --git a/src/test/rustdoc/auxiliary/normalize-assoc-item.rs b/tests/rustdoc/auxiliary/normalize-assoc-item.rs similarity index 100% rename from src/test/rustdoc/auxiliary/normalize-assoc-item.rs rename to tests/rustdoc/auxiliary/normalize-assoc-item.rs diff --git a/src/test/rustdoc/auxiliary/primitive-doc.rs b/tests/rustdoc/auxiliary/primitive-doc.rs similarity index 100% rename from src/test/rustdoc/auxiliary/primitive-doc.rs rename to tests/rustdoc/auxiliary/primitive-doc.rs diff --git a/src/test/rustdoc/auxiliary/primitive-reexport.rs b/tests/rustdoc/auxiliary/primitive-reexport.rs similarity index 100% rename from src/test/rustdoc/auxiliary/primitive-reexport.rs rename to tests/rustdoc/auxiliary/primitive-reexport.rs diff --git a/src/test/rustdoc/auxiliary/pub-extern-crate.rs b/tests/rustdoc/auxiliary/pub-extern-crate.rs similarity index 100% rename from src/test/rustdoc/auxiliary/pub-extern-crate.rs rename to tests/rustdoc/auxiliary/pub-extern-crate.rs diff --git a/src/test/rustdoc/auxiliary/pub-use-extern-macros.rs b/tests/rustdoc/auxiliary/pub-use-extern-macros.rs similarity index 100% rename from src/test/rustdoc/auxiliary/pub-use-extern-macros.rs rename to tests/rustdoc/auxiliary/pub-use-extern-macros.rs diff --git a/src/test/rustdoc/auxiliary/real_gimli.rs b/tests/rustdoc/auxiliary/real_gimli.rs similarity index 100% rename from src/test/rustdoc/auxiliary/real_gimli.rs rename to tests/rustdoc/auxiliary/real_gimli.rs diff --git a/src/test/rustdoc/auxiliary/realcore.rs b/tests/rustdoc/auxiliary/realcore.rs similarity index 100% rename from src/test/rustdoc/auxiliary/realcore.rs rename to tests/rustdoc/auxiliary/realcore.rs diff --git a/src/test/rustdoc/auxiliary/reexp-stripped.rs b/tests/rustdoc/auxiliary/reexp-stripped.rs similarity index 100% rename from src/test/rustdoc/auxiliary/reexp-stripped.rs rename to tests/rustdoc/auxiliary/reexp-stripped.rs diff --git a/src/test/rustdoc/auxiliary/reexport-check.rs b/tests/rustdoc/auxiliary/reexport-check.rs similarity index 100% rename from src/test/rustdoc/auxiliary/reexport-check.rs rename to tests/rustdoc/auxiliary/reexport-check.rs diff --git a/src/test/rustdoc/auxiliary/reexport-doc-aux.rs b/tests/rustdoc/auxiliary/reexport-doc-aux.rs similarity index 100% rename from src/test/rustdoc/auxiliary/reexport-doc-aux.rs rename to tests/rustdoc/auxiliary/reexport-doc-aux.rs diff --git a/src/test/rustdoc/auxiliary/reexports.rs b/tests/rustdoc/auxiliary/reexports.rs similarity index 100% rename from src/test/rustdoc/auxiliary/reexports.rs rename to tests/rustdoc/auxiliary/reexports.rs diff --git a/src/test/rustdoc/auxiliary/rustdoc-default-impl.rs b/tests/rustdoc/auxiliary/rustdoc-default-impl.rs similarity index 100% rename from src/test/rustdoc/auxiliary/rustdoc-default-impl.rs rename to tests/rustdoc/auxiliary/rustdoc-default-impl.rs diff --git a/src/test/rustdoc/auxiliary/rustdoc-extern-default-method.rs b/tests/rustdoc/auxiliary/rustdoc-extern-default-method.rs similarity index 100% rename from src/test/rustdoc/auxiliary/rustdoc-extern-default-method.rs rename to tests/rustdoc/auxiliary/rustdoc-extern-default-method.rs diff --git a/src/test/rustdoc/auxiliary/rustdoc-extern-method.rs b/tests/rustdoc/auxiliary/rustdoc-extern-method.rs similarity index 100% rename from src/test/rustdoc/auxiliary/rustdoc-extern-method.rs rename to tests/rustdoc/auxiliary/rustdoc-extern-method.rs diff --git a/src/test/rustdoc/auxiliary/rustdoc-ffi.rs b/tests/rustdoc/auxiliary/rustdoc-ffi.rs similarity index 100% rename from src/test/rustdoc/auxiliary/rustdoc-ffi.rs rename to tests/rustdoc/auxiliary/rustdoc-ffi.rs diff --git a/src/test/rustdoc/auxiliary/rustdoc-impl-parts-crosscrate.rs b/tests/rustdoc/auxiliary/rustdoc-impl-parts-crosscrate.rs similarity index 100% rename from src/test/rustdoc/auxiliary/rustdoc-impl-parts-crosscrate.rs rename to tests/rustdoc/auxiliary/rustdoc-impl-parts-crosscrate.rs diff --git a/src/test/rustdoc/auxiliary/source-code-bar.rs b/tests/rustdoc/auxiliary/source-code-bar.rs similarity index 100% rename from src/test/rustdoc/auxiliary/source-code-bar.rs rename to tests/rustdoc/auxiliary/source-code-bar.rs diff --git a/src/test/rustdoc/auxiliary/source_code.rs b/tests/rustdoc/auxiliary/source_code.rs similarity index 100% rename from src/test/rustdoc/auxiliary/source_code.rs rename to tests/rustdoc/auxiliary/source_code.rs diff --git a/src/test/rustdoc/auxiliary/src-links-external.rs b/tests/rustdoc/auxiliary/src-links-external.rs similarity index 100% rename from src/test/rustdoc/auxiliary/src-links-external.rs rename to tests/rustdoc/auxiliary/src-links-external.rs diff --git a/src/test/rustdoc/auxiliary/trait-alias-mention.rs b/tests/rustdoc/auxiliary/trait-alias-mention.rs similarity index 100% rename from src/test/rustdoc/auxiliary/trait-alias-mention.rs rename to tests/rustdoc/auxiliary/trait-alias-mention.rs diff --git a/src/test/rustdoc/auxiliary/trait-visibility.rs b/tests/rustdoc/auxiliary/trait-visibility.rs similarity index 100% rename from src/test/rustdoc/auxiliary/trait-visibility.rs rename to tests/rustdoc/auxiliary/trait-visibility.rs diff --git a/src/test/rustdoc/auxiliary/unit-return.rs b/tests/rustdoc/auxiliary/unit-return.rs similarity index 100% rename from src/test/rustdoc/auxiliary/unit-return.rs rename to tests/rustdoc/auxiliary/unit-return.rs diff --git a/src/test/rustdoc/auxiliary/unstable-trait.rs b/tests/rustdoc/auxiliary/unstable-trait.rs similarity index 100% rename from src/test/rustdoc/auxiliary/unstable-trait.rs rename to tests/rustdoc/auxiliary/unstable-trait.rs diff --git a/src/test/rustdoc/auxiliary/variant-struct.rs b/tests/rustdoc/auxiliary/variant-struct.rs similarity index 100% rename from src/test/rustdoc/auxiliary/variant-struct.rs rename to tests/rustdoc/auxiliary/variant-struct.rs diff --git a/src/test/rustdoc/bad-codeblock-syntax.rs b/tests/rustdoc/bad-codeblock-syntax.rs similarity index 100% rename from src/test/rustdoc/bad-codeblock-syntax.rs rename to tests/rustdoc/bad-codeblock-syntax.rs diff --git a/src/test/rustdoc/blanket-reexport-item.rs b/tests/rustdoc/blanket-reexport-item.rs similarity index 100% rename from src/test/rustdoc/blanket-reexport-item.rs rename to tests/rustdoc/blanket-reexport-item.rs diff --git a/src/test/rustdoc/bounds-in-multiple-parts.rs b/tests/rustdoc/bounds-in-multiple-parts.rs similarity index 100% rename from src/test/rustdoc/bounds-in-multiple-parts.rs rename to tests/rustdoc/bounds-in-multiple-parts.rs diff --git a/src/test/rustdoc/cap-lints.rs b/tests/rustdoc/cap-lints.rs similarity index 100% rename from src/test/rustdoc/cap-lints.rs rename to tests/rustdoc/cap-lints.rs diff --git a/src/test/rustdoc/cfg-doctest.rs b/tests/rustdoc/cfg-doctest.rs similarity index 100% rename from src/test/rustdoc/cfg-doctest.rs rename to tests/rustdoc/cfg-doctest.rs diff --git a/src/test/rustdoc/cfg_doc_reexport.rs b/tests/rustdoc/cfg_doc_reexport.rs similarity index 100% rename from src/test/rustdoc/cfg_doc_reexport.rs rename to tests/rustdoc/cfg_doc_reexport.rs diff --git a/src/test/rustdoc/check-source-code-urls-to-def-std.rs b/tests/rustdoc/check-source-code-urls-to-def-std.rs similarity index 100% rename from src/test/rustdoc/check-source-code-urls-to-def-std.rs rename to tests/rustdoc/check-source-code-urls-to-def-std.rs diff --git a/src/test/rustdoc/check-source-code-urls-to-def.rs b/tests/rustdoc/check-source-code-urls-to-def.rs similarity index 100% rename from src/test/rustdoc/check-source-code-urls-to-def.rs rename to tests/rustdoc/check-source-code-urls-to-def.rs diff --git a/src/test/rustdoc/check-styled-link.rs b/tests/rustdoc/check-styled-link.rs similarity index 100% rename from src/test/rustdoc/check-styled-link.rs rename to tests/rustdoc/check-styled-link.rs diff --git a/src/test/rustdoc/check.rs b/tests/rustdoc/check.rs similarity index 100% rename from src/test/rustdoc/check.rs rename to tests/rustdoc/check.rs diff --git a/src/test/rustdoc/codeblock-title.rs b/tests/rustdoc/codeblock-title.rs similarity index 100% rename from src/test/rustdoc/codeblock-title.rs rename to tests/rustdoc/codeblock-title.rs diff --git a/src/test/rustdoc/comment-in-doctest.rs b/tests/rustdoc/comment-in-doctest.rs similarity index 100% rename from src/test/rustdoc/comment-in-doctest.rs rename to tests/rustdoc/comment-in-doctest.rs diff --git a/src/test/rustdoc/const-display.rs b/tests/rustdoc/const-display.rs similarity index 100% rename from src/test/rustdoc/const-display.rs rename to tests/rustdoc/const-display.rs diff --git a/src/test/rustdoc/const-doc.rs b/tests/rustdoc/const-doc.rs similarity index 100% rename from src/test/rustdoc/const-doc.rs rename to tests/rustdoc/const-doc.rs diff --git a/src/test/rustdoc/const-fn.rs b/tests/rustdoc/const-fn.rs similarity index 100% rename from src/test/rustdoc/const-fn.rs rename to tests/rustdoc/const-fn.rs diff --git a/src/test/rustdoc/const-generics/add-impl.rs b/tests/rustdoc/const-generics/add-impl.rs similarity index 100% rename from src/test/rustdoc/const-generics/add-impl.rs rename to tests/rustdoc/const-generics/add-impl.rs diff --git a/src/test/rustdoc/const-generics/auxiliary/extern_crate.rs b/tests/rustdoc/const-generics/auxiliary/extern_crate.rs similarity index 100% rename from src/test/rustdoc/const-generics/auxiliary/extern_crate.rs rename to tests/rustdoc/const-generics/auxiliary/extern_crate.rs diff --git a/src/test/rustdoc/const-generics/const-generic-defaults.rs b/tests/rustdoc/const-generics/const-generic-defaults.rs similarity index 100% rename from src/test/rustdoc/const-generics/const-generic-defaults.rs rename to tests/rustdoc/const-generics/const-generic-defaults.rs diff --git a/src/test/rustdoc/const-generics/const-generic-slice.rs b/tests/rustdoc/const-generics/const-generic-slice.rs similarity index 100% rename from src/test/rustdoc/const-generics/const-generic-slice.rs rename to tests/rustdoc/const-generics/const-generic-slice.rs diff --git a/src/test/rustdoc/const-generics/const-generics-docs.rs b/tests/rustdoc/const-generics/const-generics-docs.rs similarity index 100% rename from src/test/rustdoc/const-generics/const-generics-docs.rs rename to tests/rustdoc/const-generics/const-generics-docs.rs diff --git a/src/test/rustdoc/const-generics/const-impl.rs b/tests/rustdoc/const-generics/const-impl.rs similarity index 100% rename from src/test/rustdoc/const-generics/const-impl.rs rename to tests/rustdoc/const-generics/const-impl.rs diff --git a/src/test/rustdoc/const-generics/generic_const_exprs.rs b/tests/rustdoc/const-generics/generic_const_exprs.rs similarity index 100% rename from src/test/rustdoc/const-generics/generic_const_exprs.rs rename to tests/rustdoc/const-generics/generic_const_exprs.rs diff --git a/src/test/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs b/tests/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs similarity index 100% rename from src/test/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs rename to tests/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs diff --git a/src/test/rustdoc/const-generics/type-alias.rs b/tests/rustdoc/const-generics/type-alias.rs similarity index 100% rename from src/test/rustdoc/const-generics/type-alias.rs rename to tests/rustdoc/const-generics/type-alias.rs diff --git a/src/test/rustdoc/const-underscore.rs b/tests/rustdoc/const-underscore.rs similarity index 100% rename from src/test/rustdoc/const-underscore.rs rename to tests/rustdoc/const-underscore.rs diff --git a/src/test/rustdoc/const-value-display.rs b/tests/rustdoc/const-value-display.rs similarity index 100% rename from src/test/rustdoc/const-value-display.rs rename to tests/rustdoc/const-value-display.rs diff --git a/src/test/rustdoc/const.rs b/tests/rustdoc/const.rs similarity index 100% rename from src/test/rustdoc/const.rs rename to tests/rustdoc/const.rs diff --git a/src/test/rustdoc/constructor-imports.rs b/tests/rustdoc/constructor-imports.rs similarity index 100% rename from src/test/rustdoc/constructor-imports.rs rename to tests/rustdoc/constructor-imports.rs diff --git a/src/test/rustdoc/crate-version-escape.rs b/tests/rustdoc/crate-version-escape.rs similarity index 100% rename from src/test/rustdoc/crate-version-escape.rs rename to tests/rustdoc/crate-version-escape.rs diff --git a/src/test/rustdoc/crate-version.rs b/tests/rustdoc/crate-version.rs similarity index 100% rename from src/test/rustdoc/crate-version.rs rename to tests/rustdoc/crate-version.rs diff --git a/src/test/rustdoc/cross-crate-hidden-assoc-trait-items.rs b/tests/rustdoc/cross-crate-hidden-assoc-trait-items.rs similarity index 100% rename from src/test/rustdoc/cross-crate-hidden-assoc-trait-items.rs rename to tests/rustdoc/cross-crate-hidden-assoc-trait-items.rs diff --git a/src/test/rustdoc/cross-crate-hidden-impl-parameter.rs b/tests/rustdoc/cross-crate-hidden-impl-parameter.rs similarity index 100% rename from src/test/rustdoc/cross-crate-hidden-impl-parameter.rs rename to tests/rustdoc/cross-crate-hidden-impl-parameter.rs diff --git a/src/test/rustdoc/cross-crate-links.rs b/tests/rustdoc/cross-crate-links.rs similarity index 100% rename from src/test/rustdoc/cross-crate-links.rs rename to tests/rustdoc/cross-crate-links.rs diff --git a/src/test/rustdoc/cross-crate-primitive-doc.rs b/tests/rustdoc/cross-crate-primitive-doc.rs similarity index 100% rename from src/test/rustdoc/cross-crate-primitive-doc.rs rename to tests/rustdoc/cross-crate-primitive-doc.rs diff --git a/src/test/rustdoc/decl-trailing-whitespace.declaration.html b/tests/rustdoc/decl-trailing-whitespace.declaration.html similarity index 100% rename from src/test/rustdoc/decl-trailing-whitespace.declaration.html rename to tests/rustdoc/decl-trailing-whitespace.declaration.html diff --git a/src/test/rustdoc/decl-trailing-whitespace.rs b/tests/rustdoc/decl-trailing-whitespace.rs similarity index 100% rename from src/test/rustdoc/decl-trailing-whitespace.rs rename to tests/rustdoc/decl-trailing-whitespace.rs diff --git a/src/test/rustdoc/decl_macro.rs b/tests/rustdoc/decl_macro.rs similarity index 100% rename from src/test/rustdoc/decl_macro.rs rename to tests/rustdoc/decl_macro.rs diff --git a/src/test/rustdoc/decl_macro_priv.rs b/tests/rustdoc/decl_macro_priv.rs similarity index 100% rename from src/test/rustdoc/decl_macro_priv.rs rename to tests/rustdoc/decl_macro_priv.rs diff --git a/src/test/rustdoc/deep-structures.rs b/tests/rustdoc/deep-structures.rs similarity index 100% rename from src/test/rustdoc/deep-structures.rs rename to tests/rustdoc/deep-structures.rs diff --git a/src/test/rustdoc/default-impl.rs b/tests/rustdoc/default-impl.rs similarity index 100% rename from src/test/rustdoc/default-impl.rs rename to tests/rustdoc/default-impl.rs diff --git a/src/test/rustdoc/default-theme.rs b/tests/rustdoc/default-theme.rs similarity index 100% rename from src/test/rustdoc/default-theme.rs rename to tests/rustdoc/default-theme.rs diff --git a/src/test/rustdoc/default-trait-method-link.rs b/tests/rustdoc/default-trait-method-link.rs similarity index 100% rename from src/test/rustdoc/default-trait-method-link.rs rename to tests/rustdoc/default-trait-method-link.rs diff --git a/src/test/rustdoc/default-trait-method.rs b/tests/rustdoc/default-trait-method.rs similarity index 100% rename from src/test/rustdoc/default-trait-method.rs rename to tests/rustdoc/default-trait-method.rs diff --git a/src/test/rustdoc/deprecated-future-staged-api.rs b/tests/rustdoc/deprecated-future-staged-api.rs similarity index 100% rename from src/test/rustdoc/deprecated-future-staged-api.rs rename to tests/rustdoc/deprecated-future-staged-api.rs diff --git a/src/test/rustdoc/deprecated-future.rs b/tests/rustdoc/deprecated-future.rs similarity index 100% rename from src/test/rustdoc/deprecated-future.rs rename to tests/rustdoc/deprecated-future.rs diff --git a/src/test/rustdoc/deprecated-impls.rs b/tests/rustdoc/deprecated-impls.rs similarity index 100% rename from src/test/rustdoc/deprecated-impls.rs rename to tests/rustdoc/deprecated-impls.rs diff --git a/src/test/rustdoc/deprecated.rs b/tests/rustdoc/deprecated.rs similarity index 100% rename from src/test/rustdoc/deprecated.rs rename to tests/rustdoc/deprecated.rs diff --git a/src/test/rustdoc/deref-const-fn.rs b/tests/rustdoc/deref-const-fn.rs similarity index 100% rename from src/test/rustdoc/deref-const-fn.rs rename to tests/rustdoc/deref-const-fn.rs diff --git a/src/test/rustdoc/deref-mut-methods.rs b/tests/rustdoc/deref-mut-methods.rs similarity index 100% rename from src/test/rustdoc/deref-mut-methods.rs rename to tests/rustdoc/deref-mut-methods.rs diff --git a/src/test/rustdoc/deref-recursive-pathbuf.rs b/tests/rustdoc/deref-recursive-pathbuf.rs similarity index 100% rename from src/test/rustdoc/deref-recursive-pathbuf.rs rename to tests/rustdoc/deref-recursive-pathbuf.rs diff --git a/src/test/rustdoc/deref-recursive.rs b/tests/rustdoc/deref-recursive.rs similarity index 100% rename from src/test/rustdoc/deref-recursive.rs rename to tests/rustdoc/deref-recursive.rs diff --git a/src/test/rustdoc/deref-slice-core.rs b/tests/rustdoc/deref-slice-core.rs similarity index 100% rename from src/test/rustdoc/deref-slice-core.rs rename to tests/rustdoc/deref-slice-core.rs diff --git a/src/test/rustdoc/deref-to-primitive.rs b/tests/rustdoc/deref-to-primitive.rs similarity index 100% rename from src/test/rustdoc/deref-to-primitive.rs rename to tests/rustdoc/deref-to-primitive.rs diff --git a/src/test/rustdoc/deref-typedef.rs b/tests/rustdoc/deref-typedef.rs similarity index 100% rename from src/test/rustdoc/deref-typedef.rs rename to tests/rustdoc/deref-typedef.rs diff --git a/src/test/rustdoc/description.rs b/tests/rustdoc/description.rs similarity index 100% rename from src/test/rustdoc/description.rs rename to tests/rustdoc/description.rs diff --git a/src/test/rustdoc/description_default.rs b/tests/rustdoc/description_default.rs similarity index 100% rename from src/test/rustdoc/description_default.rs rename to tests/rustdoc/description_default.rs diff --git a/src/test/rustdoc/doc-assoc-item.rs b/tests/rustdoc/doc-assoc-item.rs similarity index 100% rename from src/test/rustdoc/doc-assoc-item.rs rename to tests/rustdoc/doc-assoc-item.rs diff --git a/src/test/rustdoc/doc-auto-cfg.rs b/tests/rustdoc/doc-auto-cfg.rs similarity index 100% rename from src/test/rustdoc/doc-auto-cfg.rs rename to tests/rustdoc/doc-auto-cfg.rs diff --git a/src/test/rustdoc/doc-cfg-hide.rs b/tests/rustdoc/doc-cfg-hide.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-hide.rs rename to tests/rustdoc/doc-cfg-hide.rs diff --git a/src/test/rustdoc/doc-cfg-implicit-gate.rs b/tests/rustdoc/doc-cfg-implicit-gate.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-implicit-gate.rs rename to tests/rustdoc/doc-cfg-implicit-gate.rs diff --git a/src/test/rustdoc/doc-cfg-implicit.rs b/tests/rustdoc/doc-cfg-implicit.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-implicit.rs rename to tests/rustdoc/doc-cfg-implicit.rs diff --git a/src/test/rustdoc/doc-cfg-simplification.rs b/tests/rustdoc/doc-cfg-simplification.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-simplification.rs rename to tests/rustdoc/doc-cfg-simplification.rs diff --git a/src/test/rustdoc/doc-cfg-target-feature.rs b/tests/rustdoc/doc-cfg-target-feature.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-target-feature.rs rename to tests/rustdoc/doc-cfg-target-feature.rs diff --git a/src/test/rustdoc/doc-cfg-traits.rs b/tests/rustdoc/doc-cfg-traits.rs similarity index 100% rename from src/test/rustdoc/doc-cfg-traits.rs rename to tests/rustdoc/doc-cfg-traits.rs diff --git a/src/test/rustdoc/doc-cfg.rs b/tests/rustdoc/doc-cfg.rs similarity index 100% rename from src/test/rustdoc/doc-cfg.rs rename to tests/rustdoc/doc-cfg.rs diff --git a/src/test/rustdoc/doc-notable_trait-mut_t_is_not_an_iterator.rs b/tests/rustdoc/doc-notable_trait-mut_t_is_not_an_iterator.rs similarity index 100% rename from src/test/rustdoc/doc-notable_trait-mut_t_is_not_an_iterator.rs rename to tests/rustdoc/doc-notable_trait-mut_t_is_not_an_iterator.rs diff --git a/src/test/rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs b/tests/rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs similarity index 100% rename from src/test/rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs rename to tests/rustdoc/doc-notable_trait-mut_t_is_not_ref_t.rs diff --git a/src/test/rustdoc/doc-notable_trait-slice.bare_fn_matches.html b/tests/rustdoc/doc-notable_trait-slice.bare_fn_matches.html similarity index 100% rename from src/test/rustdoc/doc-notable_trait-slice.bare_fn_matches.html rename to tests/rustdoc/doc-notable_trait-slice.bare_fn_matches.html diff --git a/src/test/rustdoc/doc-notable_trait-slice.rs b/tests/rustdoc/doc-notable_trait-slice.rs similarity index 100% rename from src/test/rustdoc/doc-notable_trait-slice.rs rename to tests/rustdoc/doc-notable_trait-slice.rs diff --git a/src/test/rustdoc/doc-notable_trait.bare-fn.html b/tests/rustdoc/doc-notable_trait.bare-fn.html similarity index 100% rename from src/test/rustdoc/doc-notable_trait.bare-fn.html rename to tests/rustdoc/doc-notable_trait.bare-fn.html diff --git a/src/test/rustdoc/doc-notable_trait.rs b/tests/rustdoc/doc-notable_trait.rs similarity index 100% rename from src/test/rustdoc/doc-notable_trait.rs rename to tests/rustdoc/doc-notable_trait.rs diff --git a/src/test/rustdoc/doc-notable_trait.some-struct-new.html b/tests/rustdoc/doc-notable_trait.some-struct-new.html similarity index 100% rename from src/test/rustdoc/doc-notable_trait.some-struct-new.html rename to tests/rustdoc/doc-notable_trait.some-struct-new.html diff --git a/src/test/rustdoc/doc-notable_trait.wrap-me.html b/tests/rustdoc/doc-notable_trait.wrap-me.html similarity index 100% rename from src/test/rustdoc/doc-notable_trait.wrap-me.html rename to tests/rustdoc/doc-notable_trait.wrap-me.html diff --git a/src/test/rustdoc/doc-notable_trait_box_is_not_an_iterator.rs b/tests/rustdoc/doc-notable_trait_box_is_not_an_iterator.rs similarity index 100% rename from src/test/rustdoc/doc-notable_trait_box_is_not_an_iterator.rs rename to tests/rustdoc/doc-notable_trait_box_is_not_an_iterator.rs diff --git a/src/test/rustdoc/doc-proc-macro.rs b/tests/rustdoc/doc-proc-macro.rs similarity index 100% rename from src/test/rustdoc/doc-proc-macro.rs rename to tests/rustdoc/doc-proc-macro.rs diff --git a/src/test/rustdoc/doc_auto_cfg_nested_impl.rs b/tests/rustdoc/doc_auto_cfg_nested_impl.rs similarity index 100% rename from src/test/rustdoc/doc_auto_cfg_nested_impl.rs rename to tests/rustdoc/doc_auto_cfg_nested_impl.rs diff --git a/src/test/rustdoc/doctest-manual-crate-name.rs b/tests/rustdoc/doctest-manual-crate-name.rs similarity index 100% rename from src/test/rustdoc/doctest-manual-crate-name.rs rename to tests/rustdoc/doctest-manual-crate-name.rs diff --git a/src/test/rustdoc/double-quote-escape.rs b/tests/rustdoc/double-quote-escape.rs similarity index 100% rename from src/test/rustdoc/double-quote-escape.rs rename to tests/rustdoc/double-quote-escape.rs diff --git a/src/test/rustdoc/duplicate-cfg.rs b/tests/rustdoc/duplicate-cfg.rs similarity index 100% rename from src/test/rustdoc/duplicate-cfg.rs rename to tests/rustdoc/duplicate-cfg.rs diff --git a/src/test/rustdoc/duplicate-flags.rs b/tests/rustdoc/duplicate-flags.rs similarity index 100% rename from src/test/rustdoc/duplicate-flags.rs rename to tests/rustdoc/duplicate-flags.rs diff --git a/src/test/rustdoc/duplicate_impls/impls.rs b/tests/rustdoc/duplicate_impls/impls.rs similarity index 100% rename from src/test/rustdoc/duplicate_impls/impls.rs rename to tests/rustdoc/duplicate_impls/impls.rs diff --git a/src/test/rustdoc/duplicate_impls/issue-33054.rs b/tests/rustdoc/duplicate_impls/issue-33054.rs similarity index 100% rename from src/test/rustdoc/duplicate_impls/issue-33054.rs rename to tests/rustdoc/duplicate_impls/issue-33054.rs diff --git a/src/test/rustdoc/duplicated_impl.rs b/tests/rustdoc/duplicated_impl.rs similarity index 100% rename from src/test/rustdoc/duplicated_impl.rs rename to tests/rustdoc/duplicated_impl.rs diff --git a/src/test/rustdoc/early-unindent.rs b/tests/rustdoc/early-unindent.rs similarity index 100% rename from src/test/rustdoc/early-unindent.rs rename to tests/rustdoc/early-unindent.rs diff --git a/src/test/rustdoc/edition-doctest.rs b/tests/rustdoc/edition-doctest.rs similarity index 100% rename from src/test/rustdoc/edition-doctest.rs rename to tests/rustdoc/edition-doctest.rs diff --git a/src/test/rustdoc/edition-flag.rs b/tests/rustdoc/edition-flag.rs similarity index 100% rename from src/test/rustdoc/edition-flag.rs rename to tests/rustdoc/edition-flag.rs diff --git a/src/test/rustdoc/elided-lifetime.rs b/tests/rustdoc/elided-lifetime.rs similarity index 100% rename from src/test/rustdoc/elided-lifetime.rs rename to tests/rustdoc/elided-lifetime.rs diff --git a/src/test/rustdoc/empty-doc-comment.rs b/tests/rustdoc/empty-doc-comment.rs similarity index 100% rename from src/test/rustdoc/empty-doc-comment.rs rename to tests/rustdoc/empty-doc-comment.rs diff --git a/src/test/rustdoc/empty-impl-block-private-with-doc.rs b/tests/rustdoc/empty-impl-block-private-with-doc.rs similarity index 100% rename from src/test/rustdoc/empty-impl-block-private-with-doc.rs rename to tests/rustdoc/empty-impl-block-private-with-doc.rs diff --git a/src/test/rustdoc/empty-impl-block-private.rs b/tests/rustdoc/empty-impl-block-private.rs similarity index 100% rename from src/test/rustdoc/empty-impl-block-private.rs rename to tests/rustdoc/empty-impl-block-private.rs diff --git a/src/test/rustdoc/empty-impl-block.rs b/tests/rustdoc/empty-impl-block.rs similarity index 100% rename from src/test/rustdoc/empty-impl-block.rs rename to tests/rustdoc/empty-impl-block.rs diff --git a/src/test/rustdoc/empty-impls.rs b/tests/rustdoc/empty-impls.rs similarity index 100% rename from src/test/rustdoc/empty-impls.rs rename to tests/rustdoc/empty-impls.rs diff --git a/src/test/rustdoc/empty-mod-private.rs b/tests/rustdoc/empty-mod-private.rs similarity index 100% rename from src/test/rustdoc/empty-mod-private.rs rename to tests/rustdoc/empty-mod-private.rs diff --git a/src/test/rustdoc/empty-mod-public.rs b/tests/rustdoc/empty-mod-public.rs similarity index 100% rename from src/test/rustdoc/empty-mod-public.rs rename to tests/rustdoc/empty-mod-public.rs diff --git a/src/test/rustdoc/empty-section.rs b/tests/rustdoc/empty-section.rs similarity index 100% rename from src/test/rustdoc/empty-section.rs rename to tests/rustdoc/empty-section.rs diff --git a/src/test/rustdoc/ensure-src-link.rs b/tests/rustdoc/ensure-src-link.rs similarity index 100% rename from src/test/rustdoc/ensure-src-link.rs rename to tests/rustdoc/ensure-src-link.rs diff --git a/src/test/rustdoc/enum-headings.rs b/tests/rustdoc/enum-headings.rs similarity index 100% rename from src/test/rustdoc/enum-headings.rs rename to tests/rustdoc/enum-headings.rs diff --git a/src/test/rustdoc/escape-deref-methods.rs b/tests/rustdoc/escape-deref-methods.rs similarity index 100% rename from src/test/rustdoc/escape-deref-methods.rs rename to tests/rustdoc/escape-deref-methods.rs diff --git a/src/test/rustdoc/extern-default-method.no_href_on_anchor.html b/tests/rustdoc/extern-default-method.no_href_on_anchor.html similarity index 100% rename from src/test/rustdoc/extern-default-method.no_href_on_anchor.html rename to tests/rustdoc/extern-default-method.no_href_on_anchor.html diff --git a/src/test/rustdoc/extern-default-method.rs b/tests/rustdoc/extern-default-method.rs similarity index 100% rename from src/test/rustdoc/extern-default-method.rs rename to tests/rustdoc/extern-default-method.rs diff --git a/src/test/rustdoc/extern-html-root-url-precedence.rs b/tests/rustdoc/extern-html-root-url-precedence.rs similarity index 100% rename from src/test/rustdoc/extern-html-root-url-precedence.rs rename to tests/rustdoc/extern-html-root-url-precedence.rs diff --git a/src/test/rustdoc/extern-html-root-url.rs b/tests/rustdoc/extern-html-root-url.rs similarity index 100% rename from src/test/rustdoc/extern-html-root-url.rs rename to tests/rustdoc/extern-html-root-url.rs diff --git a/src/test/rustdoc/extern-impl-trait.rs b/tests/rustdoc/extern-impl-trait.rs similarity index 100% rename from src/test/rustdoc/extern-impl-trait.rs rename to tests/rustdoc/extern-impl-trait.rs diff --git a/src/test/rustdoc/extern-impl.rs b/tests/rustdoc/extern-impl.rs similarity index 100% rename from src/test/rustdoc/extern-impl.rs rename to tests/rustdoc/extern-impl.rs diff --git a/src/test/rustdoc/extern-links.rs b/tests/rustdoc/extern-links.rs similarity index 100% rename from src/test/rustdoc/extern-links.rs rename to tests/rustdoc/extern-links.rs diff --git a/src/test/rustdoc/extern-method.rs b/tests/rustdoc/extern-method.rs similarity index 100% rename from src/test/rustdoc/extern-method.rs rename to tests/rustdoc/extern-method.rs diff --git a/src/test/rustdoc/external-cross.rs b/tests/rustdoc/external-cross.rs similarity index 100% rename from src/test/rustdoc/external-cross.rs rename to tests/rustdoc/external-cross.rs diff --git a/src/test/rustdoc/external-doc.rs b/tests/rustdoc/external-doc.rs similarity index 100% rename from src/test/rustdoc/external-doc.rs rename to tests/rustdoc/external-doc.rs diff --git a/src/test/rustdoc/external-macro-src.rs b/tests/rustdoc/external-macro-src.rs similarity index 100% rename from src/test/rustdoc/external-macro-src.rs rename to tests/rustdoc/external-macro-src.rs diff --git a/src/test/rustdoc/feature-gate-doc_auto_cfg.rs b/tests/rustdoc/feature-gate-doc_auto_cfg.rs similarity index 100% rename from src/test/rustdoc/feature-gate-doc_auto_cfg.rs rename to tests/rustdoc/feature-gate-doc_auto_cfg.rs diff --git a/src/test/rustdoc/ffi.rs b/tests/rustdoc/ffi.rs similarity index 100% rename from src/test/rustdoc/ffi.rs rename to tests/rustdoc/ffi.rs diff --git a/src/test/rustdoc/fn-bound.rs b/tests/rustdoc/fn-bound.rs similarity index 100% rename from src/test/rustdoc/fn-bound.rs rename to tests/rustdoc/fn-bound.rs diff --git a/src/test/rustdoc/fn-pointer-arg-name.rs b/tests/rustdoc/fn-pointer-arg-name.rs similarity index 100% rename from src/test/rustdoc/fn-pointer-arg-name.rs rename to tests/rustdoc/fn-pointer-arg-name.rs diff --git a/src/test/rustdoc/fn-sidebar.rs b/tests/rustdoc/fn-sidebar.rs similarity index 100% rename from src/test/rustdoc/fn-sidebar.rs rename to tests/rustdoc/fn-sidebar.rs diff --git a/src/test/rustdoc/fn-type.rs b/tests/rustdoc/fn-type.rs similarity index 100% rename from src/test/rustdoc/fn-type.rs rename to tests/rustdoc/fn-type.rs diff --git a/src/test/rustdoc/force-target-feature.rs b/tests/rustdoc/force-target-feature.rs similarity index 100% rename from src/test/rustdoc/force-target-feature.rs rename to tests/rustdoc/force-target-feature.rs diff --git a/src/test/rustdoc/foreigntype-reexport.rs b/tests/rustdoc/foreigntype-reexport.rs similarity index 100% rename from src/test/rustdoc/foreigntype-reexport.rs rename to tests/rustdoc/foreigntype-reexport.rs diff --git a/src/test/rustdoc/foreigntype.rs b/tests/rustdoc/foreigntype.rs similarity index 100% rename from src/test/rustdoc/foreigntype.rs rename to tests/rustdoc/foreigntype.rs diff --git a/src/test/rustdoc/generic-associated-types/gats.rs b/tests/rustdoc/generic-associated-types/gats.rs similarity index 100% rename from src/test/rustdoc/generic-associated-types/gats.rs rename to tests/rustdoc/generic-associated-types/gats.rs diff --git a/src/test/rustdoc/generic-associated-types/issue-94683.rs b/tests/rustdoc/generic-associated-types/issue-94683.rs similarity index 100% rename from src/test/rustdoc/generic-associated-types/issue-94683.rs rename to tests/rustdoc/generic-associated-types/issue-94683.rs diff --git a/src/test/rustdoc/generic-impl.rs b/tests/rustdoc/generic-impl.rs similarity index 100% rename from src/test/rustdoc/generic-impl.rs rename to tests/rustdoc/generic-impl.rs diff --git a/src/test/rustdoc/generic_const_exprs.rs b/tests/rustdoc/generic_const_exprs.rs similarity index 100% rename from src/test/rustdoc/generic_const_exprs.rs rename to tests/rustdoc/generic_const_exprs.rs diff --git a/src/test/rustdoc/glob-shadowing-const.rs b/tests/rustdoc/glob-shadowing-const.rs similarity index 100% rename from src/test/rustdoc/glob-shadowing-const.rs rename to tests/rustdoc/glob-shadowing-const.rs diff --git a/src/test/rustdoc/glob-shadowing.rs b/tests/rustdoc/glob-shadowing.rs similarity index 100% rename from src/test/rustdoc/glob-shadowing.rs rename to tests/rustdoc/glob-shadowing.rs diff --git a/src/test/rustdoc/hidden-impls.rs b/tests/rustdoc/hidden-impls.rs similarity index 100% rename from src/test/rustdoc/hidden-impls.rs rename to tests/rustdoc/hidden-impls.rs diff --git a/src/test/rustdoc/hidden-line.rs b/tests/rustdoc/hidden-line.rs similarity index 100% rename from src/test/rustdoc/hidden-line.rs rename to tests/rustdoc/hidden-line.rs diff --git a/src/test/rustdoc/hidden-methods.rs b/tests/rustdoc/hidden-methods.rs similarity index 100% rename from src/test/rustdoc/hidden-methods.rs rename to tests/rustdoc/hidden-methods.rs diff --git a/src/test/rustdoc/hidden-trait-methods-with-document-hidden-items.rs b/tests/rustdoc/hidden-trait-methods-with-document-hidden-items.rs similarity index 100% rename from src/test/rustdoc/hidden-trait-methods-with-document-hidden-items.rs rename to tests/rustdoc/hidden-trait-methods-with-document-hidden-items.rs diff --git a/src/test/rustdoc/hidden-trait-methods.rs b/tests/rustdoc/hidden-trait-methods.rs similarity index 100% rename from src/test/rustdoc/hidden-trait-methods.rs rename to tests/rustdoc/hidden-trait-methods.rs diff --git a/src/test/rustdoc/hidden-trait-struct-impls.rs b/tests/rustdoc/hidden-trait-struct-impls.rs similarity index 100% rename from src/test/rustdoc/hidden-trait-struct-impls.rs rename to tests/rustdoc/hidden-trait-struct-impls.rs diff --git a/src/test/rustdoc/hide-complex-unevaluated-const-arguments.rs b/tests/rustdoc/hide-complex-unevaluated-const-arguments.rs similarity index 100% rename from src/test/rustdoc/hide-complex-unevaluated-const-arguments.rs rename to tests/rustdoc/hide-complex-unevaluated-const-arguments.rs diff --git a/src/test/rustdoc/hide-complex-unevaluated-consts.rs b/tests/rustdoc/hide-complex-unevaluated-consts.rs similarity index 100% rename from src/test/rustdoc/hide-complex-unevaluated-consts.rs rename to tests/rustdoc/hide-complex-unevaluated-consts.rs diff --git a/src/test/rustdoc/hide-unstable-trait.rs b/tests/rustdoc/hide-unstable-trait.rs similarity index 100% rename from src/test/rustdoc/hide-unstable-trait.rs rename to tests/rustdoc/hide-unstable-trait.rs diff --git a/src/test/rustdoc/higher-ranked-trait-bounds.rs b/tests/rustdoc/higher-ranked-trait-bounds.rs similarity index 100% rename from src/test/rustdoc/higher-ranked-trait-bounds.rs rename to tests/rustdoc/higher-ranked-trait-bounds.rs diff --git a/src/test/rustdoc/impl-box.rs b/tests/rustdoc/impl-box.rs similarity index 100% rename from src/test/rustdoc/impl-box.rs rename to tests/rustdoc/impl-box.rs diff --git a/src/test/rustdoc/impl-disambiguation.rs b/tests/rustdoc/impl-disambiguation.rs similarity index 100% rename from src/test/rustdoc/impl-disambiguation.rs rename to tests/rustdoc/impl-disambiguation.rs diff --git a/src/test/rustdoc/impl-everywhere.rs b/tests/rustdoc/impl-everywhere.rs similarity index 100% rename from src/test/rustdoc/impl-everywhere.rs rename to tests/rustdoc/impl-everywhere.rs diff --git a/src/test/rustdoc/impl-in-const-block.rs b/tests/rustdoc/impl-in-const-block.rs similarity index 100% rename from src/test/rustdoc/impl-in-const-block.rs rename to tests/rustdoc/impl-in-const-block.rs diff --git a/src/test/rustdoc/impl-parts-crosscrate.rs b/tests/rustdoc/impl-parts-crosscrate.rs similarity index 100% rename from src/test/rustdoc/impl-parts-crosscrate.rs rename to tests/rustdoc/impl-parts-crosscrate.rs diff --git a/src/test/rustdoc/impl-parts.rs b/tests/rustdoc/impl-parts.rs similarity index 100% rename from src/test/rustdoc/impl-parts.rs rename to tests/rustdoc/impl-parts.rs diff --git a/src/test/rustdoc/impl-trait-alias.rs b/tests/rustdoc/impl-trait-alias.rs similarity index 100% rename from src/test/rustdoc/impl-trait-alias.rs rename to tests/rustdoc/impl-trait-alias.rs diff --git a/src/test/rustdoc/implementor-stable-version.rs b/tests/rustdoc/implementor-stable-version.rs similarity index 100% rename from src/test/rustdoc/implementor-stable-version.rs rename to tests/rustdoc/implementor-stable-version.rs diff --git a/src/test/rustdoc/impossible-default.rs b/tests/rustdoc/impossible-default.rs similarity index 100% rename from src/test/rustdoc/impossible-default.rs rename to tests/rustdoc/impossible-default.rs diff --git a/src/test/rustdoc/include_str_cut.rs b/tests/rustdoc/include_str_cut.rs similarity index 100% rename from src/test/rustdoc/include_str_cut.rs rename to tests/rustdoc/include_str_cut.rs diff --git a/src/test/rustdoc/index-page.rs b/tests/rustdoc/index-page.rs similarity index 100% rename from src/test/rustdoc/index-page.rs rename to tests/rustdoc/index-page.rs diff --git a/src/test/rustdoc/infinite-redirection.rs b/tests/rustdoc/infinite-redirection.rs similarity index 100% rename from src/test/rustdoc/infinite-redirection.rs rename to tests/rustdoc/infinite-redirection.rs diff --git a/src/test/rustdoc/inline-default-methods.rs b/tests/rustdoc/inline-default-methods.rs similarity index 100% rename from src/test/rustdoc/inline-default-methods.rs rename to tests/rustdoc/inline-default-methods.rs diff --git a/src/test/rustdoc/inline_cross/add-docs.rs b/tests/rustdoc/inline_cross/add-docs.rs similarity index 100% rename from src/test/rustdoc/inline_cross/add-docs.rs rename to tests/rustdoc/inline_cross/add-docs.rs diff --git a/src/test/rustdoc/inline_cross/assoc-items.rs b/tests/rustdoc/inline_cross/assoc-items.rs similarity index 100% rename from src/test/rustdoc/inline_cross/assoc-items.rs rename to tests/rustdoc/inline_cross/assoc-items.rs diff --git a/src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out0.html b/tests/rustdoc/inline_cross/assoc_item_trait_bounds.out0.html similarity index 100% rename from src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out0.html rename to tests/rustdoc/inline_cross/assoc_item_trait_bounds.out0.html diff --git a/src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out2.html b/tests/rustdoc/inline_cross/assoc_item_trait_bounds.out2.html similarity index 100% rename from src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out2.html rename to tests/rustdoc/inline_cross/assoc_item_trait_bounds.out2.html diff --git a/src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out9.html b/tests/rustdoc/inline_cross/assoc_item_trait_bounds.out9.html similarity index 100% rename from src/test/rustdoc/inline_cross/assoc_item_trait_bounds.out9.html rename to tests/rustdoc/inline_cross/assoc_item_trait_bounds.out9.html diff --git a/src/test/rustdoc/inline_cross/assoc_item_trait_bounds.rs b/tests/rustdoc/inline_cross/assoc_item_trait_bounds.rs similarity index 100% rename from src/test/rustdoc/inline_cross/assoc_item_trait_bounds.rs rename to tests/rustdoc/inline_cross/assoc_item_trait_bounds.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/add-docs.rs b/tests/rustdoc/inline_cross/auxiliary/add-docs.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/add-docs.rs rename to tests/rustdoc/inline_cross/auxiliary/add-docs.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/assoc-items.rs b/tests/rustdoc/inline_cross/auxiliary/assoc-items.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/assoc-items.rs rename to tests/rustdoc/inline_cross/auxiliary/assoc-items.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/assoc_item_trait_bounds.rs b/tests/rustdoc/inline_cross/auxiliary/assoc_item_trait_bounds.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/assoc_item_trait_bounds.rs rename to tests/rustdoc/inline_cross/auxiliary/assoc_item_trait_bounds.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/cross-glob.rs b/tests/rustdoc/inline_cross/auxiliary/cross-glob.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/cross-glob.rs rename to tests/rustdoc/inline_cross/auxiliary/cross-glob.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs b/tests/rustdoc/inline_cross/auxiliary/default-trait-method.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs rename to tests/rustdoc/inline_cross/auxiliary/default-trait-method.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/dyn_trait.rs b/tests/rustdoc/inline_cross/auxiliary/dyn_trait.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/dyn_trait.rs rename to tests/rustdoc/inline_cross/auxiliary/dyn_trait.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/impl-inline-without-trait.rs b/tests/rustdoc/inline_cross/auxiliary/impl-inline-without-trait.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/impl-inline-without-trait.rs rename to tests/rustdoc/inline_cross/auxiliary/impl-inline-without-trait.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/impl_trait_aux.rs b/tests/rustdoc/inline_cross/auxiliary/impl_trait_aux.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/impl_trait_aux.rs rename to tests/rustdoc/inline_cross/auxiliary/impl_trait_aux.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/implementors_inline.rs b/tests/rustdoc/inline_cross/auxiliary/implementors_inline.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/implementors_inline.rs rename to tests/rustdoc/inline_cross/auxiliary/implementors_inline.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/issue-24183.rs b/tests/rustdoc/inline_cross/auxiliary/issue-24183.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/issue-24183.rs rename to tests/rustdoc/inline_cross/auxiliary/issue-24183.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/issue-33113.rs b/tests/rustdoc/inline_cross/auxiliary/issue-33113.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/issue-33113.rs rename to tests/rustdoc/inline_cross/auxiliary/issue-33113.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/macro-vis.rs b/tests/rustdoc/inline_cross/auxiliary/macro-vis.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/macro-vis.rs rename to tests/rustdoc/inline_cross/auxiliary/macro-vis.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/macros.rs b/tests/rustdoc/inline_cross/auxiliary/macros.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/macros.rs rename to tests/rustdoc/inline_cross/auxiliary/macros.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/proc_macro.rs b/tests/rustdoc/inline_cross/auxiliary/proc_macro.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/proc_macro.rs rename to tests/rustdoc/inline_cross/auxiliary/proc_macro.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/renamed-via-module.rs b/tests/rustdoc/inline_cross/auxiliary/renamed-via-module.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/renamed-via-module.rs rename to tests/rustdoc/inline_cross/auxiliary/renamed-via-module.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/rustdoc-hidden-sig.rs b/tests/rustdoc/inline_cross/auxiliary/rustdoc-hidden-sig.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/rustdoc-hidden-sig.rs rename to tests/rustdoc/inline_cross/auxiliary/rustdoc-hidden-sig.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/rustdoc-hidden.rs b/tests/rustdoc/inline_cross/auxiliary/rustdoc-hidden.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/rustdoc-hidden.rs rename to tests/rustdoc/inline_cross/auxiliary/rustdoc-hidden.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/rustdoc-nonreachable-impls.rs b/tests/rustdoc/inline_cross/auxiliary/rustdoc-nonreachable-impls.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/rustdoc-nonreachable-impls.rs rename to tests/rustdoc/inline_cross/auxiliary/rustdoc-nonreachable-impls.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs b/tests/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs rename to tests/rustdoc/inline_cross/auxiliary/rustdoc-trait-object-impl.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/trait-vis.rs b/tests/rustdoc/inline_cross/auxiliary/trait-vis.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/trait-vis.rs rename to tests/rustdoc/inline_cross/auxiliary/trait-vis.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/use_crate.rs b/tests/rustdoc/inline_cross/auxiliary/use_crate.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/use_crate.rs rename to tests/rustdoc/inline_cross/auxiliary/use_crate.rs diff --git a/src/test/rustdoc/inline_cross/auxiliary/use_crate_2.rs b/tests/rustdoc/inline_cross/auxiliary/use_crate_2.rs similarity index 100% rename from src/test/rustdoc/inline_cross/auxiliary/use_crate_2.rs rename to tests/rustdoc/inline_cross/auxiliary/use_crate_2.rs diff --git a/src/test/rustdoc/inline_cross/cross-glob.rs b/tests/rustdoc/inline_cross/cross-glob.rs similarity index 100% rename from src/test/rustdoc/inline_cross/cross-glob.rs rename to tests/rustdoc/inline_cross/cross-glob.rs diff --git a/src/test/rustdoc/inline_cross/default-trait-method.rs b/tests/rustdoc/inline_cross/default-trait-method.rs similarity index 100% rename from src/test/rustdoc/inline_cross/default-trait-method.rs rename to tests/rustdoc/inline_cross/default-trait-method.rs diff --git a/src/test/rustdoc/inline_cross/dyn_trait.rs b/tests/rustdoc/inline_cross/dyn_trait.rs similarity index 100% rename from src/test/rustdoc/inline_cross/dyn_trait.rs rename to tests/rustdoc/inline_cross/dyn_trait.rs diff --git a/src/test/rustdoc/inline_cross/hidden-use.rs b/tests/rustdoc/inline_cross/hidden-use.rs similarity index 100% rename from src/test/rustdoc/inline_cross/hidden-use.rs rename to tests/rustdoc/inline_cross/hidden-use.rs diff --git a/src/test/rustdoc/inline_cross/impl-inline-without-trait.rs b/tests/rustdoc/inline_cross/impl-inline-without-trait.rs similarity index 100% rename from src/test/rustdoc/inline_cross/impl-inline-without-trait.rs rename to tests/rustdoc/inline_cross/impl-inline-without-trait.rs diff --git a/src/test/rustdoc/inline_cross/impl_trait.rs b/tests/rustdoc/inline_cross/impl_trait.rs similarity index 100% rename from src/test/rustdoc/inline_cross/impl_trait.rs rename to tests/rustdoc/inline_cross/impl_trait.rs diff --git a/src/test/rustdoc/inline_cross/implementors-js.rs b/tests/rustdoc/inline_cross/implementors-js.rs similarity index 100% rename from src/test/rustdoc/inline_cross/implementors-js.rs rename to tests/rustdoc/inline_cross/implementors-js.rs diff --git a/src/test/rustdoc/inline_cross/inline_hidden.rs b/tests/rustdoc/inline_cross/inline_hidden.rs similarity index 100% rename from src/test/rustdoc/inline_cross/inline_hidden.rs rename to tests/rustdoc/inline_cross/inline_hidden.rs diff --git a/src/test/rustdoc/inline_cross/issue-24183.method_no_where_self_sized.html b/tests/rustdoc/inline_cross/issue-24183.method_no_where_self_sized.html similarity index 100% rename from src/test/rustdoc/inline_cross/issue-24183.method_no_where_self_sized.html rename to tests/rustdoc/inline_cross/issue-24183.method_no_where_self_sized.html diff --git a/src/test/rustdoc/inline_cross/issue-24183.rs b/tests/rustdoc/inline_cross/issue-24183.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-24183.rs rename to tests/rustdoc/inline_cross/issue-24183.rs diff --git a/src/test/rustdoc/inline_cross/issue-28480.rs b/tests/rustdoc/inline_cross/issue-28480.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-28480.rs rename to tests/rustdoc/inline_cross/issue-28480.rs diff --git a/src/test/rustdoc/inline_cross/issue-31948-1.rs b/tests/rustdoc/inline_cross/issue-31948-1.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-31948-1.rs rename to tests/rustdoc/inline_cross/issue-31948-1.rs diff --git a/src/test/rustdoc/inline_cross/issue-31948-2.rs b/tests/rustdoc/inline_cross/issue-31948-2.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-31948-2.rs rename to tests/rustdoc/inline_cross/issue-31948-2.rs diff --git a/src/test/rustdoc/inline_cross/issue-31948.rs b/tests/rustdoc/inline_cross/issue-31948.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-31948.rs rename to tests/rustdoc/inline_cross/issue-31948.rs diff --git a/src/test/rustdoc/inline_cross/issue-32881.rs b/tests/rustdoc/inline_cross/issue-32881.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-32881.rs rename to tests/rustdoc/inline_cross/issue-32881.rs diff --git a/src/test/rustdoc/inline_cross/issue-33113.rs b/tests/rustdoc/inline_cross/issue-33113.rs similarity index 100% rename from src/test/rustdoc/inline_cross/issue-33113.rs rename to tests/rustdoc/inline_cross/issue-33113.rs diff --git a/src/test/rustdoc/inline_cross/macro-vis.rs b/tests/rustdoc/inline_cross/macro-vis.rs similarity index 100% rename from src/test/rustdoc/inline_cross/macro-vis.rs rename to tests/rustdoc/inline_cross/macro-vis.rs diff --git a/src/test/rustdoc/inline_cross/macros.rs b/tests/rustdoc/inline_cross/macros.rs similarity index 100% rename from src/test/rustdoc/inline_cross/macros.rs rename to tests/rustdoc/inline_cross/macros.rs diff --git a/src/test/rustdoc/inline_cross/proc_macro.rs b/tests/rustdoc/inline_cross/proc_macro.rs similarity index 100% rename from src/test/rustdoc/inline_cross/proc_macro.rs rename to tests/rustdoc/inline_cross/proc_macro.rs diff --git a/src/test/rustdoc/inline_cross/renamed-via-module.rs b/tests/rustdoc/inline_cross/renamed-via-module.rs similarity index 100% rename from src/test/rustdoc/inline_cross/renamed-via-module.rs rename to tests/rustdoc/inline_cross/renamed-via-module.rs diff --git a/src/test/rustdoc/inline_cross/trait-vis.rs b/tests/rustdoc/inline_cross/trait-vis.rs similarity index 100% rename from src/test/rustdoc/inline_cross/trait-vis.rs rename to tests/rustdoc/inline_cross/trait-vis.rs diff --git a/src/test/rustdoc/inline_cross/use_crate.rs b/tests/rustdoc/inline_cross/use_crate.rs similarity index 100% rename from src/test/rustdoc/inline_cross/use_crate.rs rename to tests/rustdoc/inline_cross/use_crate.rs diff --git a/src/test/rustdoc/inline_local/glob-extern-document-private-items.rs b/tests/rustdoc/inline_local/glob-extern-document-private-items.rs similarity index 100% rename from src/test/rustdoc/inline_local/glob-extern-document-private-items.rs rename to tests/rustdoc/inline_local/glob-extern-document-private-items.rs diff --git a/src/test/rustdoc/inline_local/glob-extern.rs b/tests/rustdoc/inline_local/glob-extern.rs similarity index 100% rename from src/test/rustdoc/inline_local/glob-extern.rs rename to tests/rustdoc/inline_local/glob-extern.rs diff --git a/src/test/rustdoc/inline_local/glob-private-document-private-items.rs b/tests/rustdoc/inline_local/glob-private-document-private-items.rs similarity index 100% rename from src/test/rustdoc/inline_local/glob-private-document-private-items.rs rename to tests/rustdoc/inline_local/glob-private-document-private-items.rs diff --git a/src/test/rustdoc/inline_local/glob-private.rs b/tests/rustdoc/inline_local/glob-private.rs similarity index 100% rename from src/test/rustdoc/inline_local/glob-private.rs rename to tests/rustdoc/inline_local/glob-private.rs diff --git a/src/test/rustdoc/inline_local/hidden-use.rs b/tests/rustdoc/inline_local/hidden-use.rs similarity index 100% rename from src/test/rustdoc/inline_local/hidden-use.rs rename to tests/rustdoc/inline_local/hidden-use.rs diff --git a/src/test/rustdoc/inline_local/issue-28537.rs b/tests/rustdoc/inline_local/issue-28537.rs similarity index 100% rename from src/test/rustdoc/inline_local/issue-28537.rs rename to tests/rustdoc/inline_local/issue-28537.rs diff --git a/src/test/rustdoc/inline_local/issue-32343.rs b/tests/rustdoc/inline_local/issue-32343.rs similarity index 100% rename from src/test/rustdoc/inline_local/issue-32343.rs rename to tests/rustdoc/inline_local/issue-32343.rs diff --git a/src/test/rustdoc/inline_local/macro_by_example.rs b/tests/rustdoc/inline_local/macro_by_example.rs similarity index 100% rename from src/test/rustdoc/inline_local/macro_by_example.rs rename to tests/rustdoc/inline_local/macro_by_example.rs diff --git a/src/test/rustdoc/inline_local/please_inline.rs b/tests/rustdoc/inline_local/please_inline.rs similarity index 100% rename from src/test/rustdoc/inline_local/please_inline.rs rename to tests/rustdoc/inline_local/please_inline.rs diff --git a/src/test/rustdoc/inline_local/trait-vis.rs b/tests/rustdoc/inline_local/trait-vis.rs similarity index 100% rename from src/test/rustdoc/inline_local/trait-vis.rs rename to tests/rustdoc/inline_local/trait-vis.rs diff --git a/src/test/rustdoc/internal.rs b/tests/rustdoc/internal.rs similarity index 100% rename from src/test/rustdoc/internal.rs rename to tests/rustdoc/internal.rs diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/self.rs b/tests/rustdoc/intra-doc-crate/auxiliary/self.rs similarity index 100% rename from src/test/rustdoc/intra-doc-crate/auxiliary/self.rs rename to tests/rustdoc/intra-doc-crate/auxiliary/self.rs diff --git a/src/test/rustdoc/intra-doc-crate/self.rs b/tests/rustdoc/intra-doc-crate/self.rs similarity index 100% rename from src/test/rustdoc/intra-doc-crate/self.rs rename to tests/rustdoc/intra-doc-crate/self.rs diff --git a/src/test/rustdoc/intra-doc/anchors.rs b/tests/rustdoc/intra-doc/anchors.rs similarity index 100% rename from src/test/rustdoc/intra-doc/anchors.rs rename to tests/rustdoc/intra-doc/anchors.rs diff --git a/src/test/rustdoc/intra-doc/assoc-reexport-super.rs b/tests/rustdoc/intra-doc/assoc-reexport-super.rs similarity index 100% rename from src/test/rustdoc/intra-doc/assoc-reexport-super.rs rename to tests/rustdoc/intra-doc/assoc-reexport-super.rs diff --git a/src/test/rustdoc/intra-doc/associated-defaults.rs b/tests/rustdoc/intra-doc/associated-defaults.rs similarity index 100% rename from src/test/rustdoc/intra-doc/associated-defaults.rs rename to tests/rustdoc/intra-doc/associated-defaults.rs diff --git a/src/test/rustdoc/intra-doc/associated-items.rs b/tests/rustdoc/intra-doc/associated-items.rs similarity index 100% rename from src/test/rustdoc/intra-doc/associated-items.rs rename to tests/rustdoc/intra-doc/associated-items.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/empty.rs b/tests/rustdoc/intra-doc/auxiliary/empty.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/empty.rs rename to tests/rustdoc/intra-doc/auxiliary/empty.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/empty2.rs b/tests/rustdoc/intra-doc/auxiliary/empty2.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/empty2.rs rename to tests/rustdoc/intra-doc/auxiliary/empty2.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/extern-builtin-type-impl-dep.rs b/tests/rustdoc/intra-doc/auxiliary/extern-builtin-type-impl-dep.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/extern-builtin-type-impl-dep.rs rename to tests/rustdoc/intra-doc/auxiliary/extern-builtin-type-impl-dep.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/extern-inherent-impl-dep.rs b/tests/rustdoc/intra-doc/auxiliary/extern-inherent-impl-dep.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/extern-inherent-impl-dep.rs rename to tests/rustdoc/intra-doc/auxiliary/extern-inherent-impl-dep.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs b/tests/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs rename to tests/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs b/tests/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs rename to tests/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs b/tests/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs rename to tests/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs b/tests/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs rename to tests/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/issue-103463-aux.rs b/tests/rustdoc/intra-doc/auxiliary/issue-103463-aux.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/issue-103463-aux.rs rename to tests/rustdoc/intra-doc/auxiliary/issue-103463-aux.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/issue-66159-1.rs b/tests/rustdoc/intra-doc/auxiliary/issue-66159-1.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/issue-66159-1.rs rename to tests/rustdoc/intra-doc/auxiliary/issue-66159-1.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/my-core.rs b/tests/rustdoc/intra-doc/auxiliary/my-core.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/my-core.rs rename to tests/rustdoc/intra-doc/auxiliary/my-core.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs b/tests/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs rename to tests/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs diff --git a/src/test/rustdoc/intra-doc/auxiliary/pub-struct.rs b/tests/rustdoc/intra-doc/auxiliary/pub-struct.rs similarity index 100% rename from src/test/rustdoc/intra-doc/auxiliary/pub-struct.rs rename to tests/rustdoc/intra-doc/auxiliary/pub-struct.rs diff --git a/src/test/rustdoc/intra-doc/basic.rs b/tests/rustdoc/intra-doc/basic.rs similarity index 100% rename from src/test/rustdoc/intra-doc/basic.rs rename to tests/rustdoc/intra-doc/basic.rs diff --git a/src/test/rustdoc/intra-doc/builtin-macros.rs b/tests/rustdoc/intra-doc/builtin-macros.rs similarity index 100% rename from src/test/rustdoc/intra-doc/builtin-macros.rs rename to tests/rustdoc/intra-doc/builtin-macros.rs diff --git a/src/test/rustdoc/intra-doc/crate-relative-assoc.rs b/tests/rustdoc/intra-doc/crate-relative-assoc.rs similarity index 100% rename from src/test/rustdoc/intra-doc/crate-relative-assoc.rs rename to tests/rustdoc/intra-doc/crate-relative-assoc.rs diff --git a/src/test/rustdoc/intra-doc/crate-relative.rs b/tests/rustdoc/intra-doc/crate-relative.rs similarity index 100% rename from src/test/rustdoc/intra-doc/crate-relative.rs rename to tests/rustdoc/intra-doc/crate-relative.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/additional_doc.rs b/tests/rustdoc/intra-doc/cross-crate/additional_doc.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/additional_doc.rs rename to tests/rustdoc/intra-doc/cross-crate/additional_doc.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/module.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/module.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/module.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/module.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs b/tests/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs rename to tests/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/basic.rs b/tests/rustdoc/intra-doc/cross-crate/basic.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/basic.rs rename to tests/rustdoc/intra-doc/cross-crate/basic.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/crate.rs b/tests/rustdoc/intra-doc/cross-crate/crate.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/crate.rs rename to tests/rustdoc/intra-doc/cross-crate/crate.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/hidden.rs b/tests/rustdoc/intra-doc/cross-crate/hidden.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/hidden.rs rename to tests/rustdoc/intra-doc/cross-crate/hidden.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/macro.rs b/tests/rustdoc/intra-doc/cross-crate/macro.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/macro.rs rename to tests/rustdoc/intra-doc/cross-crate/macro.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/module.rs b/tests/rustdoc/intra-doc/cross-crate/module.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/module.rs rename to tests/rustdoc/intra-doc/cross-crate/module.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/submodule-inner.rs b/tests/rustdoc/intra-doc/cross-crate/submodule-inner.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/submodule-inner.rs rename to tests/rustdoc/intra-doc/cross-crate/submodule-inner.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/submodule-outer.rs b/tests/rustdoc/intra-doc/cross-crate/submodule-outer.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/submodule-outer.rs rename to tests/rustdoc/intra-doc/cross-crate/submodule-outer.rs diff --git a/src/test/rustdoc/intra-doc/cross-crate/traits.rs b/tests/rustdoc/intra-doc/cross-crate/traits.rs similarity index 100% rename from src/test/rustdoc/intra-doc/cross-crate/traits.rs rename to tests/rustdoc/intra-doc/cross-crate/traits.rs diff --git a/src/test/rustdoc/intra-doc/disambiguators-removed.rs b/tests/rustdoc/intra-doc/disambiguators-removed.rs similarity index 100% rename from src/test/rustdoc/intra-doc/disambiguators-removed.rs rename to tests/rustdoc/intra-doc/disambiguators-removed.rs diff --git a/src/test/rustdoc/intra-doc/email-address.rs b/tests/rustdoc/intra-doc/email-address.rs similarity index 100% rename from src/test/rustdoc/intra-doc/email-address.rs rename to tests/rustdoc/intra-doc/email-address.rs diff --git a/src/test/rustdoc/intra-doc/enum-struct-field.rs b/tests/rustdoc/intra-doc/enum-struct-field.rs similarity index 100% rename from src/test/rustdoc/intra-doc/enum-struct-field.rs rename to tests/rustdoc/intra-doc/enum-struct-field.rs diff --git a/src/test/rustdoc/intra-doc/extern-builtin-type-impl.rs b/tests/rustdoc/intra-doc/extern-builtin-type-impl.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-builtin-type-impl.rs rename to tests/rustdoc/intra-doc/extern-builtin-type-impl.rs diff --git a/src/test/rustdoc/intra-doc/extern-crate-only-used-in-link.rs b/tests/rustdoc/intra-doc/extern-crate-only-used-in-link.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-crate-only-used-in-link.rs rename to tests/rustdoc/intra-doc/extern-crate-only-used-in-link.rs diff --git a/src/test/rustdoc/intra-doc/extern-crate.rs b/tests/rustdoc/intra-doc/extern-crate.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-crate.rs rename to tests/rustdoc/intra-doc/extern-crate.rs diff --git a/src/test/rustdoc/intra-doc/extern-inherent-impl.rs b/tests/rustdoc/intra-doc/extern-inherent-impl.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-inherent-impl.rs rename to tests/rustdoc/intra-doc/extern-inherent-impl.rs diff --git a/src/test/rustdoc/intra-doc/extern-reference-link.rs b/tests/rustdoc/intra-doc/extern-reference-link.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-reference-link.rs rename to tests/rustdoc/intra-doc/extern-reference-link.rs diff --git a/src/test/rustdoc/intra-doc/extern-type.rs b/tests/rustdoc/intra-doc/extern-type.rs similarity index 100% rename from src/test/rustdoc/intra-doc/extern-type.rs rename to tests/rustdoc/intra-doc/extern-type.rs diff --git a/src/test/rustdoc/intra-doc/external-traits.rs b/tests/rustdoc/intra-doc/external-traits.rs similarity index 100% rename from src/test/rustdoc/intra-doc/external-traits.rs rename to tests/rustdoc/intra-doc/external-traits.rs diff --git a/src/test/rustdoc/intra-doc/field.rs b/tests/rustdoc/intra-doc/field.rs similarity index 100% rename from src/test/rustdoc/intra-doc/field.rs rename to tests/rustdoc/intra-doc/field.rs diff --git a/src/test/rustdoc/intra-doc/generic-params.rs b/tests/rustdoc/intra-doc/generic-params.rs similarity index 100% rename from src/test/rustdoc/intra-doc/generic-params.rs rename to tests/rustdoc/intra-doc/generic-params.rs diff --git a/src/test/rustdoc/intra-doc/generic-trait-impl.rs b/tests/rustdoc/intra-doc/generic-trait-impl.rs similarity index 100% rename from src/test/rustdoc/intra-doc/generic-trait-impl.rs rename to tests/rustdoc/intra-doc/generic-trait-impl.rs diff --git a/src/test/rustdoc/intra-doc/in-bodies.rs b/tests/rustdoc/intra-doc/in-bodies.rs similarity index 100% rename from src/test/rustdoc/intra-doc/in-bodies.rs rename to tests/rustdoc/intra-doc/in-bodies.rs diff --git a/src/test/rustdoc/intra-doc/issue-103463.rs b/tests/rustdoc/intra-doc/issue-103463.rs similarity index 100% rename from src/test/rustdoc/intra-doc/issue-103463.rs rename to tests/rustdoc/intra-doc/issue-103463.rs diff --git a/src/test/rustdoc/intra-doc/issue-104145.rs b/tests/rustdoc/intra-doc/issue-104145.rs similarity index 100% rename from src/test/rustdoc/intra-doc/issue-104145.rs rename to tests/rustdoc/intra-doc/issue-104145.rs diff --git a/src/test/rustdoc/intra-doc/issue-66159.rs b/tests/rustdoc/intra-doc/issue-66159.rs similarity index 100% rename from src/test/rustdoc/intra-doc/issue-66159.rs rename to tests/rustdoc/intra-doc/issue-66159.rs diff --git a/src/test/rustdoc/intra-doc/issue-82209.rs b/tests/rustdoc/intra-doc/issue-82209.rs similarity index 100% rename from src/test/rustdoc/intra-doc/issue-82209.rs rename to tests/rustdoc/intra-doc/issue-82209.rs diff --git a/src/test/rustdoc/intra-doc/libstd-re-export.rs b/tests/rustdoc/intra-doc/libstd-re-export.rs similarity index 100% rename from src/test/rustdoc/intra-doc/libstd-re-export.rs rename to tests/rustdoc/intra-doc/libstd-re-export.rs diff --git a/src/test/rustdoc/intra-doc/macros-disambiguators.rs b/tests/rustdoc/intra-doc/macros-disambiguators.rs similarity index 100% rename from src/test/rustdoc/intra-doc/macros-disambiguators.rs rename to tests/rustdoc/intra-doc/macros-disambiguators.rs diff --git a/src/test/rustdoc/intra-doc/mod-ambiguity.rs b/tests/rustdoc/intra-doc/mod-ambiguity.rs similarity index 100% rename from src/test/rustdoc/intra-doc/mod-ambiguity.rs rename to tests/rustdoc/intra-doc/mod-ambiguity.rs diff --git a/src/test/rustdoc/intra-doc/mod-relative.rs b/tests/rustdoc/intra-doc/mod-relative.rs similarity index 100% rename from src/test/rustdoc/intra-doc/mod-relative.rs rename to tests/rustdoc/intra-doc/mod-relative.rs diff --git a/src/test/rustdoc/intra-doc/no-doc-primitive.rs b/tests/rustdoc/intra-doc/no-doc-primitive.rs similarity index 100% rename from src/test/rustdoc/intra-doc/no-doc-primitive.rs rename to tests/rustdoc/intra-doc/no-doc-primitive.rs diff --git a/src/test/rustdoc/intra-doc/non-path-primitives.rs b/tests/rustdoc/intra-doc/non-path-primitives.rs similarity index 100% rename from src/test/rustdoc/intra-doc/non-path-primitives.rs rename to tests/rustdoc/intra-doc/non-path-primitives.rs diff --git a/src/test/rustdoc/intra-doc/prim-assoc.rs b/tests/rustdoc/intra-doc/prim-assoc.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-assoc.rs rename to tests/rustdoc/intra-doc/prim-assoc.rs diff --git a/src/test/rustdoc/intra-doc/prim-associated-traits.rs b/tests/rustdoc/intra-doc/prim-associated-traits.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-associated-traits.rs rename to tests/rustdoc/intra-doc/prim-associated-traits.rs diff --git a/src/test/rustdoc/intra-doc/prim-methods-external-core.rs b/tests/rustdoc/intra-doc/prim-methods-external-core.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-methods-external-core.rs rename to tests/rustdoc/intra-doc/prim-methods-external-core.rs diff --git a/src/test/rustdoc/intra-doc/prim-methods-local.rs b/tests/rustdoc/intra-doc/prim-methods-local.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-methods-local.rs rename to tests/rustdoc/intra-doc/prim-methods-local.rs diff --git a/src/test/rustdoc/intra-doc/prim-methods.rs b/tests/rustdoc/intra-doc/prim-methods.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-methods.rs rename to tests/rustdoc/intra-doc/prim-methods.rs diff --git a/src/test/rustdoc/intra-doc/prim-precedence.rs b/tests/rustdoc/intra-doc/prim-precedence.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-precedence.rs rename to tests/rustdoc/intra-doc/prim-precedence.rs diff --git a/src/test/rustdoc/intra-doc/prim-self.rs b/tests/rustdoc/intra-doc/prim-self.rs similarity index 100% rename from src/test/rustdoc/intra-doc/prim-self.rs rename to tests/rustdoc/intra-doc/prim-self.rs diff --git a/src/test/rustdoc/intra-doc/primitive-disambiguators.rs b/tests/rustdoc/intra-doc/primitive-disambiguators.rs similarity index 100% rename from src/test/rustdoc/intra-doc/primitive-disambiguators.rs rename to tests/rustdoc/intra-doc/primitive-disambiguators.rs diff --git a/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs b/tests/rustdoc/intra-doc/primitive-non-default-impl.rs similarity index 100% rename from src/test/rustdoc/intra-doc/primitive-non-default-impl.rs rename to tests/rustdoc/intra-doc/primitive-non-default-impl.rs diff --git a/src/test/rustdoc/intra-doc/private-failures-ignored.rs b/tests/rustdoc/intra-doc/private-failures-ignored.rs similarity index 100% rename from src/test/rustdoc/intra-doc/private-failures-ignored.rs rename to tests/rustdoc/intra-doc/private-failures-ignored.rs diff --git a/src/test/rustdoc/intra-doc/private.rs b/tests/rustdoc/intra-doc/private.rs similarity index 100% rename from src/test/rustdoc/intra-doc/private.rs rename to tests/rustdoc/intra-doc/private.rs diff --git a/src/test/rustdoc/intra-doc/proc-macro.rs b/tests/rustdoc/intra-doc/proc-macro.rs similarity index 100% rename from src/test/rustdoc/intra-doc/proc-macro.rs rename to tests/rustdoc/intra-doc/proc-macro.rs diff --git a/src/test/rustdoc/intra-doc/pub-use.rs b/tests/rustdoc/intra-doc/pub-use.rs similarity index 100% rename from src/test/rustdoc/intra-doc/pub-use.rs rename to tests/rustdoc/intra-doc/pub-use.rs diff --git a/src/test/rustdoc/intra-doc/raw-ident-self.rs b/tests/rustdoc/intra-doc/raw-ident-self.rs similarity index 100% rename from src/test/rustdoc/intra-doc/raw-ident-self.rs rename to tests/rustdoc/intra-doc/raw-ident-self.rs diff --git a/src/test/rustdoc/intra-doc/reexport-additional-docs.rs b/tests/rustdoc/intra-doc/reexport-additional-docs.rs similarity index 100% rename from src/test/rustdoc/intra-doc/reexport-additional-docs.rs rename to tests/rustdoc/intra-doc/reexport-additional-docs.rs diff --git a/src/test/rustdoc/intra-doc/self-cache.rs b/tests/rustdoc/intra-doc/self-cache.rs similarity index 100% rename from src/test/rustdoc/intra-doc/self-cache.rs rename to tests/rustdoc/intra-doc/self-cache.rs diff --git a/src/test/rustdoc/intra-doc/self.rs b/tests/rustdoc/intra-doc/self.rs similarity index 100% rename from src/test/rustdoc/intra-doc/self.rs rename to tests/rustdoc/intra-doc/self.rs diff --git a/src/test/rustdoc/intra-doc/trait-impl.rs b/tests/rustdoc/intra-doc/trait-impl.rs similarity index 100% rename from src/test/rustdoc/intra-doc/trait-impl.rs rename to tests/rustdoc/intra-doc/trait-impl.rs diff --git a/src/test/rustdoc/intra-doc/trait-item.rs b/tests/rustdoc/intra-doc/trait-item.rs similarity index 100% rename from src/test/rustdoc/intra-doc/trait-item.rs rename to tests/rustdoc/intra-doc/trait-item.rs diff --git a/src/test/rustdoc/intra-doc/true-false.rs b/tests/rustdoc/intra-doc/true-false.rs similarity index 100% rename from src/test/rustdoc/intra-doc/true-false.rs rename to tests/rustdoc/intra-doc/true-false.rs diff --git a/src/test/rustdoc/intra-doc/type-alias.rs b/tests/rustdoc/intra-doc/type-alias.rs similarity index 100% rename from src/test/rustdoc/intra-doc/type-alias.rs rename to tests/rustdoc/intra-doc/type-alias.rs diff --git a/src/test/rustdoc/invalid.crate.name.rs b/tests/rustdoc/invalid.crate.name.rs similarity index 100% rename from src/test/rustdoc/invalid.crate.name.rs rename to tests/rustdoc/invalid.crate.name.rs diff --git a/src/test/rustdoc/issue-100204-inline-impl-through-glob-import.rs b/tests/rustdoc/issue-100204-inline-impl-through-glob-import.rs similarity index 100% rename from src/test/rustdoc/issue-100204-inline-impl-through-glob-import.rs rename to tests/rustdoc/issue-100204-inline-impl-through-glob-import.rs diff --git a/src/test/rustdoc/issue-100241.rs b/tests/rustdoc/issue-100241.rs similarity index 100% rename from src/test/rustdoc/issue-100241.rs rename to tests/rustdoc/issue-100241.rs diff --git a/src/test/rustdoc/issue-100620.rs b/tests/rustdoc/issue-100620.rs similarity index 100% rename from src/test/rustdoc/issue-100620.rs rename to tests/rustdoc/issue-100620.rs diff --git a/src/test/rustdoc/issue-100679-sidebar-links-deref.rs b/tests/rustdoc/issue-100679-sidebar-links-deref.rs similarity index 100% rename from src/test/rustdoc/issue-100679-sidebar-links-deref.rs rename to tests/rustdoc/issue-100679-sidebar-links-deref.rs diff --git a/src/test/rustdoc/issue-101743-bold-tag.rs b/tests/rustdoc/issue-101743-bold-tag.rs similarity index 100% rename from src/test/rustdoc/issue-101743-bold-tag.rs rename to tests/rustdoc/issue-101743-bold-tag.rs diff --git a/src/test/rustdoc/issue-102154.rs b/tests/rustdoc/issue-102154.rs similarity index 100% rename from src/test/rustdoc/issue-102154.rs rename to tests/rustdoc/issue-102154.rs diff --git a/src/test/rustdoc/issue-105952.rs b/tests/rustdoc/issue-105952.rs similarity index 100% rename from src/test/rustdoc/issue-105952.rs rename to tests/rustdoc/issue-105952.rs diff --git a/src/test/rustdoc/issue-12834.rs b/tests/rustdoc/issue-12834.rs similarity index 100% rename from src/test/rustdoc/issue-12834.rs rename to tests/rustdoc/issue-12834.rs diff --git a/src/test/rustdoc/issue-13698.rs b/tests/rustdoc/issue-13698.rs similarity index 100% rename from src/test/rustdoc/issue-13698.rs rename to tests/rustdoc/issue-13698.rs diff --git a/src/test/rustdoc/issue-15169.rs b/tests/rustdoc/issue-15169.rs similarity index 100% rename from src/test/rustdoc/issue-15169.rs rename to tests/rustdoc/issue-15169.rs diff --git a/src/test/rustdoc/issue-15318-2.rs b/tests/rustdoc/issue-15318-2.rs similarity index 100% rename from src/test/rustdoc/issue-15318-2.rs rename to tests/rustdoc/issue-15318-2.rs diff --git a/src/test/rustdoc/issue-15318-3.rs b/tests/rustdoc/issue-15318-3.rs similarity index 100% rename from src/test/rustdoc/issue-15318-3.rs rename to tests/rustdoc/issue-15318-3.rs diff --git a/src/test/rustdoc/issue-15318.rs b/tests/rustdoc/issue-15318.rs similarity index 100% rename from src/test/rustdoc/issue-15318.rs rename to tests/rustdoc/issue-15318.rs diff --git a/src/test/rustdoc/issue-15347.rs b/tests/rustdoc/issue-15347.rs similarity index 100% rename from src/test/rustdoc/issue-15347.rs rename to tests/rustdoc/issue-15347.rs diff --git a/src/test/rustdoc/issue-16019.rs b/tests/rustdoc/issue-16019.rs similarity index 100% rename from src/test/rustdoc/issue-16019.rs rename to tests/rustdoc/issue-16019.rs diff --git a/src/test/rustdoc/issue-16265-1.rs b/tests/rustdoc/issue-16265-1.rs similarity index 100% rename from src/test/rustdoc/issue-16265-1.rs rename to tests/rustdoc/issue-16265-1.rs diff --git a/src/test/rustdoc/issue-16265-2.rs b/tests/rustdoc/issue-16265-2.rs similarity index 100% rename from src/test/rustdoc/issue-16265-2.rs rename to tests/rustdoc/issue-16265-2.rs diff --git a/src/test/rustdoc/issue-17476.rs b/tests/rustdoc/issue-17476.rs similarity index 100% rename from src/test/rustdoc/issue-17476.rs rename to tests/rustdoc/issue-17476.rs diff --git a/src/test/rustdoc/issue-18199.rs b/tests/rustdoc/issue-18199.rs similarity index 100% rename from src/test/rustdoc/issue-18199.rs rename to tests/rustdoc/issue-18199.rs diff --git a/src/test/rustdoc/issue-19181.rs b/tests/rustdoc/issue-19181.rs similarity index 100% rename from src/test/rustdoc/issue-19181.rs rename to tests/rustdoc/issue-19181.rs diff --git a/src/test/rustdoc/issue-19190-2.rs b/tests/rustdoc/issue-19190-2.rs similarity index 100% rename from src/test/rustdoc/issue-19190-2.rs rename to tests/rustdoc/issue-19190-2.rs diff --git a/src/test/rustdoc/issue-19190-3.rs b/tests/rustdoc/issue-19190-3.rs similarity index 100% rename from src/test/rustdoc/issue-19190-3.rs rename to tests/rustdoc/issue-19190-3.rs diff --git a/src/test/rustdoc/issue-19190.rs b/tests/rustdoc/issue-19190.rs similarity index 100% rename from src/test/rustdoc/issue-19190.rs rename to tests/rustdoc/issue-19190.rs diff --git a/src/test/rustdoc/issue-20175.rs b/tests/rustdoc/issue-20175.rs similarity index 100% rename from src/test/rustdoc/issue-20175.rs rename to tests/rustdoc/issue-20175.rs diff --git a/src/test/rustdoc/issue-20646.rs b/tests/rustdoc/issue-20646.rs similarity index 100% rename from src/test/rustdoc/issue-20646.rs rename to tests/rustdoc/issue-20646.rs diff --git a/src/test/rustdoc/issue-20727-2.rs b/tests/rustdoc/issue-20727-2.rs similarity index 100% rename from src/test/rustdoc/issue-20727-2.rs rename to tests/rustdoc/issue-20727-2.rs diff --git a/src/test/rustdoc/issue-20727-3.rs b/tests/rustdoc/issue-20727-3.rs similarity index 100% rename from src/test/rustdoc/issue-20727-3.rs rename to tests/rustdoc/issue-20727-3.rs diff --git a/src/test/rustdoc/issue-20727-4.rs b/tests/rustdoc/issue-20727-4.rs similarity index 100% rename from src/test/rustdoc/issue-20727-4.rs rename to tests/rustdoc/issue-20727-4.rs diff --git a/src/test/rustdoc/issue-20727.rs b/tests/rustdoc/issue-20727.rs similarity index 100% rename from src/test/rustdoc/issue-20727.rs rename to tests/rustdoc/issue-20727.rs diff --git a/src/test/rustdoc/issue-21092.rs b/tests/rustdoc/issue-21092.rs similarity index 100% rename from src/test/rustdoc/issue-21092.rs rename to tests/rustdoc/issue-21092.rs diff --git a/src/test/rustdoc/issue-21474.rs b/tests/rustdoc/issue-21474.rs similarity index 100% rename from src/test/rustdoc/issue-21474.rs rename to tests/rustdoc/issue-21474.rs diff --git a/src/test/rustdoc/issue-21801.rs b/tests/rustdoc/issue-21801.rs similarity index 100% rename from src/test/rustdoc/issue-21801.rs rename to tests/rustdoc/issue-21801.rs diff --git a/src/test/rustdoc/issue-22025.rs b/tests/rustdoc/issue-22025.rs similarity index 100% rename from src/test/rustdoc/issue-22025.rs rename to tests/rustdoc/issue-22025.rs diff --git a/src/test/rustdoc/issue-22038.rs b/tests/rustdoc/issue-22038.rs similarity index 100% rename from src/test/rustdoc/issue-22038.rs rename to tests/rustdoc/issue-22038.rs diff --git a/src/test/rustdoc/issue-23106.rs b/tests/rustdoc/issue-23106.rs similarity index 100% rename from src/test/rustdoc/issue-23106.rs rename to tests/rustdoc/issue-23106.rs diff --git a/src/test/rustdoc/issue-23207.rs b/tests/rustdoc/issue-23207.rs similarity index 100% rename from src/test/rustdoc/issue-23207.rs rename to tests/rustdoc/issue-23207.rs diff --git a/src/test/rustdoc/issue-23511.rs b/tests/rustdoc/issue-23511.rs similarity index 100% rename from src/test/rustdoc/issue-23511.rs rename to tests/rustdoc/issue-23511.rs diff --git a/src/test/rustdoc/issue-23744.rs b/tests/rustdoc/issue-23744.rs similarity index 100% rename from src/test/rustdoc/issue-23744.rs rename to tests/rustdoc/issue-23744.rs diff --git a/src/test/rustdoc/issue-23812.rs b/tests/rustdoc/issue-23812.rs similarity index 100% rename from src/test/rustdoc/issue-23812.rs rename to tests/rustdoc/issue-23812.rs diff --git a/src/test/rustdoc/issue-25001.rs b/tests/rustdoc/issue-25001.rs similarity index 100% rename from src/test/rustdoc/issue-25001.rs rename to tests/rustdoc/issue-25001.rs diff --git a/src/test/rustdoc/issue-25944.rs b/tests/rustdoc/issue-25944.rs similarity index 100% rename from src/test/rustdoc/issue-25944.rs rename to tests/rustdoc/issue-25944.rs diff --git a/src/test/rustdoc/issue-26606.rs b/tests/rustdoc/issue-26606.rs similarity index 100% rename from src/test/rustdoc/issue-26606.rs rename to tests/rustdoc/issue-26606.rs diff --git a/src/test/rustdoc/issue-26995.rs b/tests/rustdoc/issue-26995.rs similarity index 100% rename from src/test/rustdoc/issue-26995.rs rename to tests/rustdoc/issue-26995.rs diff --git a/src/test/rustdoc/issue-27104.rs b/tests/rustdoc/issue-27104.rs similarity index 100% rename from src/test/rustdoc/issue-27104.rs rename to tests/rustdoc/issue-27104.rs diff --git a/src/test/rustdoc/issue-27362.rs b/tests/rustdoc/issue-27362.rs similarity index 100% rename from src/test/rustdoc/issue-27362.rs rename to tests/rustdoc/issue-27362.rs diff --git a/src/test/rustdoc/issue-27759.rs b/tests/rustdoc/issue-27759.rs similarity index 100% rename from src/test/rustdoc/issue-27759.rs rename to tests/rustdoc/issue-27759.rs diff --git a/src/test/rustdoc/issue-27862.rs b/tests/rustdoc/issue-27862.rs similarity index 100% rename from src/test/rustdoc/issue-27862.rs rename to tests/rustdoc/issue-27862.rs diff --git a/src/test/rustdoc/issue-28478.rs b/tests/rustdoc/issue-28478.rs similarity index 100% rename from src/test/rustdoc/issue-28478.rs rename to tests/rustdoc/issue-28478.rs diff --git a/src/test/rustdoc/issue-28927.rs b/tests/rustdoc/issue-28927.rs similarity index 100% rename from src/test/rustdoc/issue-28927.rs rename to tests/rustdoc/issue-28927.rs diff --git a/src/test/rustdoc/issue-29449.rs b/tests/rustdoc/issue-29449.rs similarity index 100% rename from src/test/rustdoc/issue-29449.rs rename to tests/rustdoc/issue-29449.rs diff --git a/src/test/rustdoc/issue-29503.rs b/tests/rustdoc/issue-29503.rs similarity index 100% rename from src/test/rustdoc/issue-29503.rs rename to tests/rustdoc/issue-29503.rs diff --git a/src/test/rustdoc/issue-29584.rs b/tests/rustdoc/issue-29584.rs similarity index 100% rename from src/test/rustdoc/issue-29584.rs rename to tests/rustdoc/issue-29584.rs diff --git a/src/test/rustdoc/issue-30109.rs b/tests/rustdoc/issue-30109.rs similarity index 100% rename from src/test/rustdoc/issue-30109.rs rename to tests/rustdoc/issue-30109.rs diff --git a/src/test/rustdoc/issue-30252.rs b/tests/rustdoc/issue-30252.rs similarity index 100% rename from src/test/rustdoc/issue-30252.rs rename to tests/rustdoc/issue-30252.rs diff --git a/src/test/rustdoc/issue-30366.rs b/tests/rustdoc/issue-30366.rs similarity index 100% rename from src/test/rustdoc/issue-30366.rs rename to tests/rustdoc/issue-30366.rs diff --git a/src/test/rustdoc/issue-31808.rs b/tests/rustdoc/issue-31808.rs similarity index 100% rename from src/test/rustdoc/issue-31808.rs rename to tests/rustdoc/issue-31808.rs diff --git a/src/test/rustdoc/issue-31899.rs b/tests/rustdoc/issue-31899.rs similarity index 100% rename from src/test/rustdoc/issue-31899.rs rename to tests/rustdoc/issue-31899.rs diff --git a/src/test/rustdoc/issue-32374.rs b/tests/rustdoc/issue-32374.rs similarity index 100% rename from src/test/rustdoc/issue-32374.rs rename to tests/rustdoc/issue-32374.rs diff --git a/src/test/rustdoc/issue-32395.rs b/tests/rustdoc/issue-32395.rs similarity index 100% rename from src/test/rustdoc/issue-32395.rs rename to tests/rustdoc/issue-32395.rs diff --git a/src/test/rustdoc/issue-32556.rs b/tests/rustdoc/issue-32556.rs similarity index 100% rename from src/test/rustdoc/issue-32556.rs rename to tests/rustdoc/issue-32556.rs diff --git a/src/test/rustdoc/issue-32890.rs b/tests/rustdoc/issue-32890.rs similarity index 100% rename from src/test/rustdoc/issue-32890.rs rename to tests/rustdoc/issue-32890.rs diff --git a/src/test/rustdoc/issue-33069.rs b/tests/rustdoc/issue-33069.rs similarity index 100% rename from src/test/rustdoc/issue-33069.rs rename to tests/rustdoc/issue-33069.rs diff --git a/src/test/rustdoc/issue-33178-1.rs b/tests/rustdoc/issue-33178-1.rs similarity index 100% rename from src/test/rustdoc/issue-33178-1.rs rename to tests/rustdoc/issue-33178-1.rs diff --git a/src/test/rustdoc/issue-33178.rs b/tests/rustdoc/issue-33178.rs similarity index 100% rename from src/test/rustdoc/issue-33178.rs rename to tests/rustdoc/issue-33178.rs diff --git a/src/test/rustdoc/issue-33302.rs b/tests/rustdoc/issue-33302.rs similarity index 100% rename from src/test/rustdoc/issue-33302.rs rename to tests/rustdoc/issue-33302.rs diff --git a/src/test/rustdoc/issue-33592.rs b/tests/rustdoc/issue-33592.rs similarity index 100% rename from src/test/rustdoc/issue-33592.rs rename to tests/rustdoc/issue-33592.rs diff --git a/src/test/rustdoc/issue-34025.rs b/tests/rustdoc/issue-34025.rs similarity index 100% rename from src/test/rustdoc/issue-34025.rs rename to tests/rustdoc/issue-34025.rs diff --git a/src/test/rustdoc/issue-34274.rs b/tests/rustdoc/issue-34274.rs similarity index 100% rename from src/test/rustdoc/issue-34274.rs rename to tests/rustdoc/issue-34274.rs diff --git a/src/test/rustdoc/issue-34423.rs b/tests/rustdoc/issue-34423.rs similarity index 100% rename from src/test/rustdoc/issue-34423.rs rename to tests/rustdoc/issue-34423.rs diff --git a/src/test/rustdoc/issue-34473.rs b/tests/rustdoc/issue-34473.rs similarity index 100% rename from src/test/rustdoc/issue-34473.rs rename to tests/rustdoc/issue-34473.rs diff --git a/src/test/rustdoc/issue-34928.rs b/tests/rustdoc/issue-34928.rs similarity index 100% rename from src/test/rustdoc/issue-34928.rs rename to tests/rustdoc/issue-34928.rs diff --git a/src/test/rustdoc/issue-35169-2.rs b/tests/rustdoc/issue-35169-2.rs similarity index 100% rename from src/test/rustdoc/issue-35169-2.rs rename to tests/rustdoc/issue-35169-2.rs diff --git a/src/test/rustdoc/issue-35169.rs b/tests/rustdoc/issue-35169.rs similarity index 100% rename from src/test/rustdoc/issue-35169.rs rename to tests/rustdoc/issue-35169.rs diff --git a/src/test/rustdoc/issue-35488.rs b/tests/rustdoc/issue-35488.rs similarity index 100% rename from src/test/rustdoc/issue-35488.rs rename to tests/rustdoc/issue-35488.rs diff --git a/src/test/rustdoc/issue-36031.rs b/tests/rustdoc/issue-36031.rs similarity index 100% rename from src/test/rustdoc/issue-36031.rs rename to tests/rustdoc/issue-36031.rs diff --git a/src/test/rustdoc/issue-38129.rs b/tests/rustdoc/issue-38129.rs similarity index 100% rename from src/test/rustdoc/issue-38129.rs rename to tests/rustdoc/issue-38129.rs diff --git a/src/test/rustdoc/issue-38219.rs b/tests/rustdoc/issue-38219.rs similarity index 100% rename from src/test/rustdoc/issue-38219.rs rename to tests/rustdoc/issue-38219.rs diff --git a/src/test/rustdoc/issue-40936.rs b/tests/rustdoc/issue-40936.rs similarity index 100% rename from src/test/rustdoc/issue-40936.rs rename to tests/rustdoc/issue-40936.rs diff --git a/src/test/rustdoc/issue-41783.codeblock.html b/tests/rustdoc/issue-41783.codeblock.html similarity index 100% rename from src/test/rustdoc/issue-41783.codeblock.html rename to tests/rustdoc/issue-41783.codeblock.html diff --git a/src/test/rustdoc/issue-41783.rs b/tests/rustdoc/issue-41783.rs similarity index 100% rename from src/test/rustdoc/issue-41783.rs rename to tests/rustdoc/issue-41783.rs diff --git a/src/test/rustdoc/issue-42760.rs b/tests/rustdoc/issue-42760.rs similarity index 100% rename from src/test/rustdoc/issue-42760.rs rename to tests/rustdoc/issue-42760.rs diff --git a/src/test/rustdoc/issue-43153.rs b/tests/rustdoc/issue-43153.rs similarity index 100% rename from src/test/rustdoc/issue-43153.rs rename to tests/rustdoc/issue-43153.rs diff --git a/src/test/rustdoc/issue-43701.rs b/tests/rustdoc/issue-43701.rs similarity index 100% rename from src/test/rustdoc/issue-43701.rs rename to tests/rustdoc/issue-43701.rs diff --git a/src/test/rustdoc/issue-43869.rs b/tests/rustdoc/issue-43869.rs similarity index 100% rename from src/test/rustdoc/issue-43869.rs rename to tests/rustdoc/issue-43869.rs diff --git a/src/test/rustdoc/issue-43893.rs b/tests/rustdoc/issue-43893.rs similarity index 100% rename from src/test/rustdoc/issue-43893.rs rename to tests/rustdoc/issue-43893.rs diff --git a/src/test/rustdoc/issue-45584.rs b/tests/rustdoc/issue-45584.rs similarity index 100% rename from src/test/rustdoc/issue-45584.rs rename to tests/rustdoc/issue-45584.rs diff --git a/src/test/rustdoc/issue-46271.rs b/tests/rustdoc/issue-46271.rs similarity index 100% rename from src/test/rustdoc/issue-46271.rs rename to tests/rustdoc/issue-46271.rs diff --git a/src/test/rustdoc/issue-46377.rs b/tests/rustdoc/issue-46377.rs similarity index 100% rename from src/test/rustdoc/issue-46377.rs rename to tests/rustdoc/issue-46377.rs diff --git a/src/test/rustdoc/issue-46380-2.rs b/tests/rustdoc/issue-46380-2.rs similarity index 100% rename from src/test/rustdoc/issue-46380-2.rs rename to tests/rustdoc/issue-46380-2.rs diff --git a/src/test/rustdoc/issue-46727.rs b/tests/rustdoc/issue-46727.rs similarity index 100% rename from src/test/rustdoc/issue-46727.rs rename to tests/rustdoc/issue-46727.rs diff --git a/src/test/rustdoc/issue-46766.rs b/tests/rustdoc/issue-46766.rs similarity index 100% rename from src/test/rustdoc/issue-46766.rs rename to tests/rustdoc/issue-46766.rs diff --git a/src/test/rustdoc/issue-46767.rs b/tests/rustdoc/issue-46767.rs similarity index 100% rename from src/test/rustdoc/issue-46767.rs rename to tests/rustdoc/issue-46767.rs diff --git a/src/test/rustdoc/issue-46976.rs b/tests/rustdoc/issue-46976.rs similarity index 100% rename from src/test/rustdoc/issue-46976.rs rename to tests/rustdoc/issue-46976.rs diff --git a/src/test/rustdoc/issue-47038.rs b/tests/rustdoc/issue-47038.rs similarity index 100% rename from src/test/rustdoc/issue-47038.rs rename to tests/rustdoc/issue-47038.rs diff --git a/src/test/rustdoc/issue-47197-blank-line-in-doc-block.rs b/tests/rustdoc/issue-47197-blank-line-in-doc-block.rs similarity index 100% rename from src/test/rustdoc/issue-47197-blank-line-in-doc-block.rs rename to tests/rustdoc/issue-47197-blank-line-in-doc-block.rs diff --git a/src/test/rustdoc/issue-47639.rs b/tests/rustdoc/issue-47639.rs similarity index 100% rename from src/test/rustdoc/issue-47639.rs rename to tests/rustdoc/issue-47639.rs diff --git a/src/test/rustdoc/issue-48377.rs b/tests/rustdoc/issue-48377.rs similarity index 100% rename from src/test/rustdoc/issue-48377.rs rename to tests/rustdoc/issue-48377.rs diff --git a/src/test/rustdoc/issue-48414.rs b/tests/rustdoc/issue-48414.rs similarity index 100% rename from src/test/rustdoc/issue-48414.rs rename to tests/rustdoc/issue-48414.rs diff --git a/src/test/rustdoc/issue-50159.rs b/tests/rustdoc/issue-50159.rs similarity index 100% rename from src/test/rustdoc/issue-50159.rs rename to tests/rustdoc/issue-50159.rs diff --git a/src/test/rustdoc/issue-51236.rs b/tests/rustdoc/issue-51236.rs similarity index 100% rename from src/test/rustdoc/issue-51236.rs rename to tests/rustdoc/issue-51236.rs diff --git a/src/test/rustdoc/issue-52873.rs b/tests/rustdoc/issue-52873.rs similarity index 100% rename from src/test/rustdoc/issue-52873.rs rename to tests/rustdoc/issue-52873.rs diff --git a/src/test/rustdoc/issue-53689.rs b/tests/rustdoc/issue-53689.rs similarity index 100% rename from src/test/rustdoc/issue-53689.rs rename to tests/rustdoc/issue-53689.rs diff --git a/src/test/rustdoc/issue-53812.rs b/tests/rustdoc/issue-53812.rs similarity index 100% rename from src/test/rustdoc/issue-53812.rs rename to tests/rustdoc/issue-53812.rs diff --git a/src/test/rustdoc/issue-54478-demo-allocator.rs b/tests/rustdoc/issue-54478-demo-allocator.rs similarity index 100% rename from src/test/rustdoc/issue-54478-demo-allocator.rs rename to tests/rustdoc/issue-54478-demo-allocator.rs diff --git a/src/test/rustdoc/issue-54705.rs b/tests/rustdoc/issue-54705.rs similarity index 100% rename from src/test/rustdoc/issue-54705.rs rename to tests/rustdoc/issue-54705.rs diff --git a/src/test/rustdoc/issue-55001.rs b/tests/rustdoc/issue-55001.rs similarity index 100% rename from src/test/rustdoc/issue-55001.rs rename to tests/rustdoc/issue-55001.rs diff --git a/src/test/rustdoc/issue-55321.rs b/tests/rustdoc/issue-55321.rs similarity index 100% rename from src/test/rustdoc/issue-55321.rs rename to tests/rustdoc/issue-55321.rs diff --git a/src/test/rustdoc/issue-55364.rs b/tests/rustdoc/issue-55364.rs similarity index 100% rename from src/test/rustdoc/issue-55364.rs rename to tests/rustdoc/issue-55364.rs diff --git a/src/test/rustdoc/issue-56701.rs b/tests/rustdoc/issue-56701.rs similarity index 100% rename from src/test/rustdoc/issue-56701.rs rename to tests/rustdoc/issue-56701.rs diff --git a/src/test/rustdoc/issue-56822.rs b/tests/rustdoc/issue-56822.rs similarity index 100% rename from src/test/rustdoc/issue-56822.rs rename to tests/rustdoc/issue-56822.rs diff --git a/src/test/rustdoc/issue-57180.rs b/tests/rustdoc/issue-57180.rs similarity index 100% rename from src/test/rustdoc/issue-57180.rs rename to tests/rustdoc/issue-57180.rs diff --git a/src/test/rustdoc/issue-60482.rs b/tests/rustdoc/issue-60482.rs similarity index 100% rename from src/test/rustdoc/issue-60482.rs rename to tests/rustdoc/issue-60482.rs diff --git a/src/test/rustdoc/issue-60726.rs b/tests/rustdoc/issue-60726.rs similarity index 100% rename from src/test/rustdoc/issue-60726.rs rename to tests/rustdoc/issue-60726.rs diff --git a/src/test/rustdoc/issue-61592.rs b/tests/rustdoc/issue-61592.rs similarity index 100% rename from src/test/rustdoc/issue-61592.rs rename to tests/rustdoc/issue-61592.rs diff --git a/src/test/rustdoc/issue-67851-both.rs b/tests/rustdoc/issue-67851-both.rs similarity index 100% rename from src/test/rustdoc/issue-67851-both.rs rename to tests/rustdoc/issue-67851-both.rs diff --git a/src/test/rustdoc/issue-67851-hidden.rs b/tests/rustdoc/issue-67851-hidden.rs similarity index 100% rename from src/test/rustdoc/issue-67851-hidden.rs rename to tests/rustdoc/issue-67851-hidden.rs diff --git a/src/test/rustdoc/issue-67851-neither.rs b/tests/rustdoc/issue-67851-neither.rs similarity index 100% rename from src/test/rustdoc/issue-67851-neither.rs rename to tests/rustdoc/issue-67851-neither.rs diff --git a/src/test/rustdoc/issue-67851-private.rs b/tests/rustdoc/issue-67851-private.rs similarity index 100% rename from src/test/rustdoc/issue-67851-private.rs rename to tests/rustdoc/issue-67851-private.rs diff --git a/src/test/rustdoc/issue-72340.rs b/tests/rustdoc/issue-72340.rs similarity index 100% rename from src/test/rustdoc/issue-72340.rs rename to tests/rustdoc/issue-72340.rs diff --git a/src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs b/tests/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs similarity index 100% rename from src/test/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs rename to tests/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs diff --git a/src/test/rustdoc/issue-74083.rs b/tests/rustdoc/issue-74083.rs similarity index 100% rename from src/test/rustdoc/issue-74083.rs rename to tests/rustdoc/issue-74083.rs diff --git a/src/test/rustdoc/issue-75588.rs b/tests/rustdoc/issue-75588.rs similarity index 100% rename from src/test/rustdoc/issue-75588.rs rename to tests/rustdoc/issue-75588.rs diff --git a/src/test/rustdoc/issue-76501.rs b/tests/rustdoc/issue-76501.rs similarity index 100% rename from src/test/rustdoc/issue-76501.rs rename to tests/rustdoc/issue-76501.rs diff --git a/src/test/rustdoc/issue-78673.rs b/tests/rustdoc/issue-78673.rs similarity index 100% rename from src/test/rustdoc/issue-78673.rs rename to tests/rustdoc/issue-78673.rs diff --git a/src/test/rustdoc/issue-78701.rs b/tests/rustdoc/issue-78701.rs similarity index 100% rename from src/test/rustdoc/issue-78701.rs rename to tests/rustdoc/issue-78701.rs diff --git a/src/test/rustdoc/issue-79201.rs b/tests/rustdoc/issue-79201.rs similarity index 100% rename from src/test/rustdoc/issue-79201.rs rename to tests/rustdoc/issue-79201.rs diff --git a/src/test/rustdoc/issue-80233-normalize-auto-trait.rs b/tests/rustdoc/issue-80233-normalize-auto-trait.rs similarity index 100% rename from src/test/rustdoc/issue-80233-normalize-auto-trait.rs rename to tests/rustdoc/issue-80233-normalize-auto-trait.rs diff --git a/src/test/rustdoc/issue-82465-asref-for-and-of-local.rs b/tests/rustdoc/issue-82465-asref-for-and-of-local.rs similarity index 100% rename from src/test/rustdoc/issue-82465-asref-for-and-of-local.rs rename to tests/rustdoc/issue-82465-asref-for-and-of-local.rs diff --git a/src/test/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs b/tests/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs similarity index 100% rename from src/test/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs rename to tests/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs diff --git a/src/test/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline.rs b/tests/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline.rs similarity index 100% rename from src/test/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline.rs rename to tests/rustdoc/issue-83375-multiple-mods-w-same-name-doc-inline.rs diff --git a/src/test/rustdoc/issue-85454.rs b/tests/rustdoc/issue-85454.rs similarity index 100% rename from src/test/rustdoc/issue-85454.rs rename to tests/rustdoc/issue-85454.rs diff --git a/src/test/rustdoc/issue-86620.rs b/tests/rustdoc/issue-86620.rs similarity index 100% rename from src/test/rustdoc/issue-86620.rs rename to tests/rustdoc/issue-86620.rs diff --git a/src/test/rustdoc/issue-88600.rs b/tests/rustdoc/issue-88600.rs similarity index 100% rename from src/test/rustdoc/issue-88600.rs rename to tests/rustdoc/issue-88600.rs diff --git a/src/test/rustdoc/issue-89309-heading-levels.rs b/tests/rustdoc/issue-89309-heading-levels.rs similarity index 100% rename from src/test/rustdoc/issue-89309-heading-levels.rs rename to tests/rustdoc/issue-89309-heading-levels.rs diff --git a/src/test/rustdoc/issue-89852.rs b/tests/rustdoc/issue-89852.rs similarity index 100% rename from src/test/rustdoc/issue-89852.rs rename to tests/rustdoc/issue-89852.rs diff --git a/src/test/rustdoc/issue-95633.rs b/tests/rustdoc/issue-95633.rs similarity index 100% rename from src/test/rustdoc/issue-95633.rs rename to tests/rustdoc/issue-95633.rs diff --git a/src/test/rustdoc/issue-95873.rs b/tests/rustdoc/issue-95873.rs similarity index 100% rename from src/test/rustdoc/issue-95873.rs rename to tests/rustdoc/issue-95873.rs diff --git a/src/test/rustdoc/issue-96381.rs b/tests/rustdoc/issue-96381.rs similarity index 100% rename from src/test/rustdoc/issue-96381.rs rename to tests/rustdoc/issue-96381.rs diff --git a/src/test/rustdoc/issue-98697.rs b/tests/rustdoc/issue-98697.rs similarity index 100% rename from src/test/rustdoc/issue-98697.rs rename to tests/rustdoc/issue-98697.rs diff --git a/src/test/rustdoc/issue-99221-multiple-macro-rules-w-same-name-submodule.rs b/tests/rustdoc/issue-99221-multiple-macro-rules-w-same-name-submodule.rs similarity index 100% rename from src/test/rustdoc/issue-99221-multiple-macro-rules-w-same-name-submodule.rs rename to tests/rustdoc/issue-99221-multiple-macro-rules-w-same-name-submodule.rs diff --git a/src/test/rustdoc/issue-99221-multiple-macro-rules-w-same-name.rs b/tests/rustdoc/issue-99221-multiple-macro-rules-w-same-name.rs similarity index 100% rename from src/test/rustdoc/issue-99221-multiple-macro-rules-w-same-name.rs rename to tests/rustdoc/issue-99221-multiple-macro-rules-w-same-name.rs diff --git a/src/test/rustdoc/issue-99221-multiple-structs-w-same-name.rs b/tests/rustdoc/issue-99221-multiple-structs-w-same-name.rs similarity index 100% rename from src/test/rustdoc/issue-99221-multiple-structs-w-same-name.rs rename to tests/rustdoc/issue-99221-multiple-structs-w-same-name.rs diff --git a/src/test/rustdoc/issue-99734-multiple-foreigns-w-same-name.rs b/tests/rustdoc/issue-99734-multiple-foreigns-w-same-name.rs similarity index 100% rename from src/test/rustdoc/issue-99734-multiple-foreigns-w-same-name.rs rename to tests/rustdoc/issue-99734-multiple-foreigns-w-same-name.rs diff --git a/src/test/rustdoc/issue-99734-multiple-mods-w-same-name.rs b/tests/rustdoc/issue-99734-multiple-mods-w-same-name.rs similarity index 100% rename from src/test/rustdoc/issue-99734-multiple-mods-w-same-name.rs rename to tests/rustdoc/issue-99734-multiple-mods-w-same-name.rs diff --git a/src/test/rustdoc/keyword.rs b/tests/rustdoc/keyword.rs similarity index 100% rename from src/test/rustdoc/keyword.rs rename to tests/rustdoc/keyword.rs diff --git a/src/test/rustdoc/legacy-const-generic.rs b/tests/rustdoc/legacy-const-generic.rs similarity index 100% rename from src/test/rustdoc/legacy-const-generic.rs rename to tests/rustdoc/legacy-const-generic.rs diff --git a/src/test/rustdoc/lifetime-name.rs b/tests/rustdoc/lifetime-name.rs similarity index 100% rename from src/test/rustdoc/lifetime-name.rs rename to tests/rustdoc/lifetime-name.rs diff --git a/src/test/rustdoc/line-breaks.rs b/tests/rustdoc/line-breaks.rs similarity index 100% rename from src/test/rustdoc/line-breaks.rs rename to tests/rustdoc/line-breaks.rs diff --git a/src/test/rustdoc/link-assoc-const.rs b/tests/rustdoc/link-assoc-const.rs similarity index 100% rename from src/test/rustdoc/link-assoc-const.rs rename to tests/rustdoc/link-assoc-const.rs diff --git a/src/test/rustdoc/link-title-escape.rs b/tests/rustdoc/link-title-escape.rs similarity index 100% rename from src/test/rustdoc/link-title-escape.rs rename to tests/rustdoc/link-title-escape.rs diff --git a/src/test/rustdoc/local-reexport-doc.rs b/tests/rustdoc/local-reexport-doc.rs similarity index 100% rename from src/test/rustdoc/local-reexport-doc.rs rename to tests/rustdoc/local-reexport-doc.rs diff --git a/src/test/rustdoc/logo-class-default.rs b/tests/rustdoc/logo-class-default.rs similarity index 100% rename from src/test/rustdoc/logo-class-default.rs rename to tests/rustdoc/logo-class-default.rs diff --git a/src/test/rustdoc/logo-class.rs b/tests/rustdoc/logo-class.rs similarity index 100% rename from src/test/rustdoc/logo-class.rs rename to tests/rustdoc/logo-class.rs diff --git a/src/test/rustdoc/macro-document-private-duplicate.rs b/tests/rustdoc/macro-document-private-duplicate.rs similarity index 100% rename from src/test/rustdoc/macro-document-private-duplicate.rs rename to tests/rustdoc/macro-document-private-duplicate.rs diff --git a/src/test/rustdoc/macro-document-private.rs b/tests/rustdoc/macro-document-private.rs similarity index 100% rename from src/test/rustdoc/macro-document-private.rs rename to tests/rustdoc/macro-document-private.rs diff --git a/src/test/rustdoc/macro-generated-macro.macro_linebreak_pre.html b/tests/rustdoc/macro-generated-macro.macro_linebreak_pre.html similarity index 100% rename from src/test/rustdoc/macro-generated-macro.macro_linebreak_pre.html rename to tests/rustdoc/macro-generated-macro.macro_linebreak_pre.html diff --git a/src/test/rustdoc/macro-generated-macro.macro_morestuff_pre.html b/tests/rustdoc/macro-generated-macro.macro_morestuff_pre.html similarity index 100% rename from src/test/rustdoc/macro-generated-macro.macro_morestuff_pre.html rename to tests/rustdoc/macro-generated-macro.macro_morestuff_pre.html diff --git a/src/test/rustdoc/macro-generated-macro.rs b/tests/rustdoc/macro-generated-macro.rs similarity index 100% rename from src/test/rustdoc/macro-generated-macro.rs rename to tests/rustdoc/macro-generated-macro.rs diff --git a/src/test/rustdoc/macro-higher-kinded-function.rs b/tests/rustdoc/macro-higher-kinded-function.rs similarity index 100% rename from src/test/rustdoc/macro-higher-kinded-function.rs rename to tests/rustdoc/macro-higher-kinded-function.rs diff --git a/src/test/rustdoc/macro-in-async-block.rs b/tests/rustdoc/macro-in-async-block.rs similarity index 100% rename from src/test/rustdoc/macro-in-async-block.rs rename to tests/rustdoc/macro-in-async-block.rs diff --git a/src/test/rustdoc/macro-in-closure.rs b/tests/rustdoc/macro-in-closure.rs similarity index 100% rename from src/test/rustdoc/macro-in-closure.rs rename to tests/rustdoc/macro-in-closure.rs diff --git a/src/test/rustdoc/macro-indirect-use.rs b/tests/rustdoc/macro-indirect-use.rs similarity index 100% rename from src/test/rustdoc/macro-indirect-use.rs rename to tests/rustdoc/macro-indirect-use.rs diff --git a/src/test/rustdoc/macro-private-not-documented.rs b/tests/rustdoc/macro-private-not-documented.rs similarity index 100% rename from src/test/rustdoc/macro-private-not-documented.rs rename to tests/rustdoc/macro-private-not-documented.rs diff --git a/src/test/rustdoc/macro_pub_in_module.rs b/tests/rustdoc/macro_pub_in_module.rs similarity index 100% rename from src/test/rustdoc/macro_pub_in_module.rs rename to tests/rustdoc/macro_pub_in_module.rs diff --git a/src/test/rustdoc/macro_rules-matchers.rs b/tests/rustdoc/macro_rules-matchers.rs similarity index 100% rename from src/test/rustdoc/macro_rules-matchers.rs rename to tests/rustdoc/macro_rules-matchers.rs diff --git a/src/test/rustdoc/macros.rs b/tests/rustdoc/macros.rs similarity index 100% rename from src/test/rustdoc/macros.rs rename to tests/rustdoc/macros.rs diff --git a/src/test/rustdoc/manual_impl.rs b/tests/rustdoc/manual_impl.rs similarity index 100% rename from src/test/rustdoc/manual_impl.rs rename to tests/rustdoc/manual_impl.rs diff --git a/src/test/rustdoc/markdown-summaries.rs b/tests/rustdoc/markdown-summaries.rs similarity index 100% rename from src/test/rustdoc/markdown-summaries.rs rename to tests/rustdoc/markdown-summaries.rs diff --git a/src/test/rustdoc/masked.rs b/tests/rustdoc/masked.rs similarity index 100% rename from src/test/rustdoc/masked.rs rename to tests/rustdoc/masked.rs diff --git a/src/test/rustdoc/method-list.rs b/tests/rustdoc/method-list.rs similarity index 100% rename from src/test/rustdoc/method-list.rs rename to tests/rustdoc/method-list.rs diff --git a/src/test/rustdoc/mixing-doc-comments-and-attrs.S1_top-doc.html b/tests/rustdoc/mixing-doc-comments-and-attrs.S1_top-doc.html similarity index 100% rename from src/test/rustdoc/mixing-doc-comments-and-attrs.S1_top-doc.html rename to tests/rustdoc/mixing-doc-comments-and-attrs.S1_top-doc.html diff --git a/src/test/rustdoc/mixing-doc-comments-and-attrs.S2_top-doc.html b/tests/rustdoc/mixing-doc-comments-and-attrs.S2_top-doc.html similarity index 100% rename from src/test/rustdoc/mixing-doc-comments-and-attrs.S2_top-doc.html rename to tests/rustdoc/mixing-doc-comments-and-attrs.S2_top-doc.html diff --git a/src/test/rustdoc/mixing-doc-comments-and-attrs.S3_top-doc.html b/tests/rustdoc/mixing-doc-comments-and-attrs.S3_top-doc.html similarity index 100% rename from src/test/rustdoc/mixing-doc-comments-and-attrs.S3_top-doc.html rename to tests/rustdoc/mixing-doc-comments-and-attrs.S3_top-doc.html diff --git a/src/test/rustdoc/mixing-doc-comments-and-attrs.rs b/tests/rustdoc/mixing-doc-comments-and-attrs.rs similarity index 100% rename from src/test/rustdoc/mixing-doc-comments-and-attrs.rs rename to tests/rustdoc/mixing-doc-comments-and-attrs.rs diff --git a/src/test/rustdoc/mod-stackoverflow.rs b/tests/rustdoc/mod-stackoverflow.rs similarity index 100% rename from src/test/rustdoc/mod-stackoverflow.rs rename to tests/rustdoc/mod-stackoverflow.rs diff --git a/src/test/rustdoc/module-impls.rs b/tests/rustdoc/module-impls.rs similarity index 100% rename from src/test/rustdoc/module-impls.rs rename to tests/rustdoc/module-impls.rs diff --git a/src/test/rustdoc/multiple-import-levels.rs b/tests/rustdoc/multiple-import-levels.rs similarity index 100% rename from src/test/rustdoc/multiple-import-levels.rs rename to tests/rustdoc/multiple-import-levels.rs diff --git a/src/test/rustdoc/must_implement_one_of.rs b/tests/rustdoc/must_implement_one_of.rs similarity index 100% rename from src/test/rustdoc/must_implement_one_of.rs rename to tests/rustdoc/must_implement_one_of.rs diff --git a/src/test/rustdoc/mut-params.rs b/tests/rustdoc/mut-params.rs similarity index 100% rename from src/test/rustdoc/mut-params.rs rename to tests/rustdoc/mut-params.rs diff --git a/src/test/rustdoc/namespaces.rs b/tests/rustdoc/namespaces.rs similarity index 100% rename from src/test/rustdoc/namespaces.rs rename to tests/rustdoc/namespaces.rs diff --git a/src/test/rustdoc/negative-impl-sidebar.rs b/tests/rustdoc/negative-impl-sidebar.rs similarity index 100% rename from src/test/rustdoc/negative-impl-sidebar.rs rename to tests/rustdoc/negative-impl-sidebar.rs diff --git a/src/test/rustdoc/negative-impl.rs b/tests/rustdoc/negative-impl.rs similarity index 100% rename from src/test/rustdoc/negative-impl.rs rename to tests/rustdoc/negative-impl.rs diff --git a/src/test/rustdoc/nested-modules.rs b/tests/rustdoc/nested-modules.rs similarity index 100% rename from src/test/rustdoc/nested-modules.rs rename to tests/rustdoc/nested-modules.rs diff --git a/src/test/rustdoc/no-compiler-reexport.rs b/tests/rustdoc/no-compiler-reexport.rs similarity index 100% rename from src/test/rustdoc/no-compiler-reexport.rs rename to tests/rustdoc/no-compiler-reexport.rs diff --git a/src/test/rustdoc/no-crate-filter.rs b/tests/rustdoc/no-crate-filter.rs similarity index 100% rename from src/test/rustdoc/no-crate-filter.rs rename to tests/rustdoc/no-crate-filter.rs diff --git a/src/test/rustdoc/no-run-still-checks-lints.rs b/tests/rustdoc/no-run-still-checks-lints.rs similarity index 100% rename from src/test/rustdoc/no-run-still-checks-lints.rs rename to tests/rustdoc/no-run-still-checks-lints.rs diff --git a/src/test/rustdoc/no-stack-overflow-25295.rs b/tests/rustdoc/no-stack-overflow-25295.rs similarity index 100% rename from src/test/rustdoc/no-stack-overflow-25295.rs rename to tests/rustdoc/no-stack-overflow-25295.rs diff --git a/src/test/rustdoc/no-unit-struct-field.rs b/tests/rustdoc/no-unit-struct-field.rs similarity index 100% rename from src/test/rustdoc/no-unit-struct-field.rs rename to tests/rustdoc/no-unit-struct-field.rs diff --git a/src/test/rustdoc/no_std-primitive.rs b/tests/rustdoc/no_std-primitive.rs similarity index 100% rename from src/test/rustdoc/no_std-primitive.rs rename to tests/rustdoc/no_std-primitive.rs diff --git a/src/test/rustdoc/normalize-assoc-item.rs b/tests/rustdoc/normalize-assoc-item.rs similarity index 100% rename from src/test/rustdoc/normalize-assoc-item.rs rename to tests/rustdoc/normalize-assoc-item.rs diff --git a/src/test/rustdoc/not-wf-ambiguous-normalization.rs b/tests/rustdoc/not-wf-ambiguous-normalization.rs similarity index 100% rename from src/test/rustdoc/not-wf-ambiguous-normalization.rs rename to tests/rustdoc/not-wf-ambiguous-normalization.rs diff --git a/src/test/rustdoc/nul-error.rs b/tests/rustdoc/nul-error.rs similarity index 100% rename from src/test/rustdoc/nul-error.rs rename to tests/rustdoc/nul-error.rs diff --git a/src/test/rustdoc/playground-arg.rs b/tests/rustdoc/playground-arg.rs similarity index 100% rename from src/test/rustdoc/playground-arg.rs rename to tests/rustdoc/playground-arg.rs diff --git a/src/test/rustdoc/playground-empty.rs b/tests/rustdoc/playground-empty.rs similarity index 100% rename from src/test/rustdoc/playground-empty.rs rename to tests/rustdoc/playground-empty.rs diff --git a/src/test/rustdoc/playground-none.rs b/tests/rustdoc/playground-none.rs similarity index 100% rename from src/test/rustdoc/playground-none.rs rename to tests/rustdoc/playground-none.rs diff --git a/src/test/rustdoc/playground-syntax-error.rs b/tests/rustdoc/playground-syntax-error.rs similarity index 100% rename from src/test/rustdoc/playground-syntax-error.rs rename to tests/rustdoc/playground-syntax-error.rs diff --git a/src/test/rustdoc/playground.rs b/tests/rustdoc/playground.rs similarity index 100% rename from src/test/rustdoc/playground.rs rename to tests/rustdoc/playground.rs diff --git a/src/test/rustdoc/primitive-link.rs b/tests/rustdoc/primitive-link.rs similarity index 100% rename from src/test/rustdoc/primitive-link.rs rename to tests/rustdoc/primitive-link.rs diff --git a/src/test/rustdoc/primitive-reexport.rs b/tests/rustdoc/primitive-reexport.rs similarity index 100% rename from src/test/rustdoc/primitive-reexport.rs rename to tests/rustdoc/primitive-reexport.rs diff --git a/src/test/rustdoc/primitive-reference.rs b/tests/rustdoc/primitive-reference.rs similarity index 100% rename from src/test/rustdoc/primitive-reference.rs rename to tests/rustdoc/primitive-reference.rs diff --git a/src/test/rustdoc/primitive-slice-auto-trait.rs b/tests/rustdoc/primitive-slice-auto-trait.rs similarity index 100% rename from src/test/rustdoc/primitive-slice-auto-trait.rs rename to tests/rustdoc/primitive-slice-auto-trait.rs diff --git a/src/test/rustdoc/primitive-tuple-auto-trait.rs b/tests/rustdoc/primitive-tuple-auto-trait.rs similarity index 100% rename from src/test/rustdoc/primitive-tuple-auto-trait.rs rename to tests/rustdoc/primitive-tuple-auto-trait.rs diff --git a/src/test/rustdoc/primitive-tuple-variadic.rs b/tests/rustdoc/primitive-tuple-variadic.rs similarity index 100% rename from src/test/rustdoc/primitive-tuple-variadic.rs rename to tests/rustdoc/primitive-tuple-variadic.rs diff --git a/src/test/rustdoc/primitive-unit-auto-trait.rs b/tests/rustdoc/primitive-unit-auto-trait.rs similarity index 100% rename from src/test/rustdoc/primitive-unit-auto-trait.rs rename to tests/rustdoc/primitive-unit-auto-trait.rs diff --git a/src/test/rustdoc/primitive.rs b/tests/rustdoc/primitive.rs similarity index 100% rename from src/test/rustdoc/primitive.rs rename to tests/rustdoc/primitive.rs diff --git a/src/test/rustdoc/primitive/no_std.rs b/tests/rustdoc/primitive/no_std.rs similarity index 100% rename from src/test/rustdoc/primitive/no_std.rs rename to tests/rustdoc/primitive/no_std.rs diff --git a/src/test/rustdoc/primitive/primitive-generic-impl.rs b/tests/rustdoc/primitive/primitive-generic-impl.rs similarity index 100% rename from src/test/rustdoc/primitive/primitive-generic-impl.rs rename to tests/rustdoc/primitive/primitive-generic-impl.rs diff --git a/src/test/rustdoc/private-type-alias.rs b/tests/rustdoc/private-type-alias.rs similarity index 100% rename from src/test/rustdoc/private-type-alias.rs rename to tests/rustdoc/private-type-alias.rs diff --git a/src/test/rustdoc/proc-macro.rs b/tests/rustdoc/proc-macro.rs similarity index 100% rename from src/test/rustdoc/proc-macro.rs rename to tests/rustdoc/proc-macro.rs diff --git a/src/test/rustdoc/process-termination.rs b/tests/rustdoc/process-termination.rs similarity index 100% rename from src/test/rustdoc/process-termination.rs rename to tests/rustdoc/process-termination.rs diff --git a/src/test/rustdoc/pub-extern-crate.rs b/tests/rustdoc/pub-extern-crate.rs similarity index 100% rename from src/test/rustdoc/pub-extern-crate.rs rename to tests/rustdoc/pub-extern-crate.rs diff --git a/src/test/rustdoc/pub-method.rs b/tests/rustdoc/pub-method.rs similarity index 100% rename from src/test/rustdoc/pub-method.rs rename to tests/rustdoc/pub-method.rs diff --git a/src/test/rustdoc/pub-use-extern-macros.rs b/tests/rustdoc/pub-use-extern-macros.rs similarity index 100% rename from src/test/rustdoc/pub-use-extern-macros.rs rename to tests/rustdoc/pub-use-extern-macros.rs diff --git a/src/test/rustdoc/range-arg-pattern.rs b/tests/rustdoc/range-arg-pattern.rs similarity index 100% rename from src/test/rustdoc/range-arg-pattern.rs rename to tests/rustdoc/range-arg-pattern.rs diff --git a/src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs b/tests/rustdoc/raw-ident-eliminate-r-hashtag.rs similarity index 100% rename from src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs rename to tests/rustdoc/raw-ident-eliminate-r-hashtag.rs diff --git a/src/test/rustdoc/read-more-unneeded.rs b/tests/rustdoc/read-more-unneeded.rs similarity index 100% rename from src/test/rustdoc/read-more-unneeded.rs rename to tests/rustdoc/read-more-unneeded.rs diff --git a/src/test/rustdoc/recursion1.rs b/tests/rustdoc/recursion1.rs similarity index 100% rename from src/test/rustdoc/recursion1.rs rename to tests/rustdoc/recursion1.rs diff --git a/src/test/rustdoc/recursion2.rs b/tests/rustdoc/recursion2.rs similarity index 100% rename from src/test/rustdoc/recursion2.rs rename to tests/rustdoc/recursion2.rs diff --git a/src/test/rustdoc/recursion3.rs b/tests/rustdoc/recursion3.rs similarity index 100% rename from src/test/rustdoc/recursion3.rs rename to tests/rustdoc/recursion3.rs diff --git a/src/test/rustdoc/recursive-deref-sidebar.rs b/tests/rustdoc/recursive-deref-sidebar.rs similarity index 100% rename from src/test/rustdoc/recursive-deref-sidebar.rs rename to tests/rustdoc/recursive-deref-sidebar.rs diff --git a/src/test/rustdoc/recursive-deref.rs b/tests/rustdoc/recursive-deref.rs similarity index 100% rename from src/test/rustdoc/recursive-deref.rs rename to tests/rustdoc/recursive-deref.rs diff --git a/src/test/rustdoc/redirect-const.rs b/tests/rustdoc/redirect-const.rs similarity index 100% rename from src/test/rustdoc/redirect-const.rs rename to tests/rustdoc/redirect-const.rs diff --git a/src/test/rustdoc/redirect-map-empty.rs b/tests/rustdoc/redirect-map-empty.rs similarity index 100% rename from src/test/rustdoc/redirect-map-empty.rs rename to tests/rustdoc/redirect-map-empty.rs diff --git a/src/test/rustdoc/redirect-map.rs b/tests/rustdoc/redirect-map.rs similarity index 100% rename from src/test/rustdoc/redirect-map.rs rename to tests/rustdoc/redirect-map.rs diff --git a/src/test/rustdoc/redirect-rename.rs b/tests/rustdoc/redirect-rename.rs similarity index 100% rename from src/test/rustdoc/redirect-rename.rs rename to tests/rustdoc/redirect-rename.rs diff --git a/src/test/rustdoc/redirect.rs b/tests/rustdoc/redirect.rs similarity index 100% rename from src/test/rustdoc/redirect.rs rename to tests/rustdoc/redirect.rs diff --git a/src/test/rustdoc/reexport-check.rs b/tests/rustdoc/reexport-check.rs similarity index 100% rename from src/test/rustdoc/reexport-check.rs rename to tests/rustdoc/reexport-check.rs diff --git a/src/test/rustdoc/reexport-dep-foreign-fn.rs b/tests/rustdoc/reexport-dep-foreign-fn.rs similarity index 100% rename from src/test/rustdoc/reexport-dep-foreign-fn.rs rename to tests/rustdoc/reexport-dep-foreign-fn.rs diff --git a/src/test/rustdoc/reexport-doc.rs b/tests/rustdoc/reexport-doc.rs similarity index 100% rename from src/test/rustdoc/reexport-doc.rs rename to tests/rustdoc/reexport-doc.rs diff --git a/src/test/rustdoc/reexport-stability-tags-deprecated-and-portability.rs b/tests/rustdoc/reexport-stability-tags-deprecated-and-portability.rs similarity index 100% rename from src/test/rustdoc/reexport-stability-tags-deprecated-and-portability.rs rename to tests/rustdoc/reexport-stability-tags-deprecated-and-portability.rs diff --git a/src/test/rustdoc/reexport-stability-tags-unstable-and-portability.rs b/tests/rustdoc/reexport-stability-tags-unstable-and-portability.rs similarity index 100% rename from src/test/rustdoc/reexport-stability-tags-unstable-and-portability.rs rename to tests/rustdoc/reexport-stability-tags-unstable-and-portability.rs diff --git a/src/test/rustdoc/reexports-priv.rs b/tests/rustdoc/reexports-priv.rs similarity index 100% rename from src/test/rustdoc/reexports-priv.rs rename to tests/rustdoc/reexports-priv.rs diff --git a/src/test/rustdoc/reexports.rs b/tests/rustdoc/reexports.rs similarity index 100% rename from src/test/rustdoc/reexports.rs rename to tests/rustdoc/reexports.rs diff --git a/src/test/rustdoc/remove-duplicates.rs b/tests/rustdoc/remove-duplicates.rs similarity index 100% rename from src/test/rustdoc/remove-duplicates.rs rename to tests/rustdoc/remove-duplicates.rs diff --git a/src/test/rustdoc/remove-url-from-headings.rs b/tests/rustdoc/remove-url-from-headings.rs similarity index 100% rename from src/test/rustdoc/remove-url-from-headings.rs rename to tests/rustdoc/remove-url-from-headings.rs diff --git a/src/test/rustdoc/return-impl-trait.rs b/tests/rustdoc/return-impl-trait.rs similarity index 100% rename from src/test/rustdoc/return-impl-trait.rs rename to tests/rustdoc/return-impl-trait.rs diff --git a/src/test/rustdoc/rfc-2632-const-trait-impl.rs b/tests/rustdoc/rfc-2632-const-trait-impl.rs similarity index 100% rename from src/test/rustdoc/rfc-2632-const-trait-impl.rs rename to tests/rustdoc/rfc-2632-const-trait-impl.rs diff --git a/src/test/rustdoc/rustc-incoherent-impls.rs b/tests/rustdoc/rustc-incoherent-impls.rs similarity index 100% rename from src/test/rustdoc/rustc-incoherent-impls.rs rename to tests/rustdoc/rustc-incoherent-impls.rs diff --git a/src/test/rustdoc/rustc-macro-crate.rs b/tests/rustdoc/rustc-macro-crate.rs similarity index 100% rename from src/test/rustdoc/rustc-macro-crate.rs rename to tests/rustdoc/rustc-macro-crate.rs diff --git a/src/test/rustdoc/safe-intrinsic.rs b/tests/rustdoc/safe-intrinsic.rs similarity index 100% rename from src/test/rustdoc/safe-intrinsic.rs rename to tests/rustdoc/safe-intrinsic.rs diff --git a/src/test/rustdoc/same-crate-hidden-impl-parameter.rs b/tests/rustdoc/same-crate-hidden-impl-parameter.rs similarity index 100% rename from src/test/rustdoc/same-crate-hidden-impl-parameter.rs rename to tests/rustdoc/same-crate-hidden-impl-parameter.rs diff --git a/src/test/rustdoc/sanitizer-option.rs b/tests/rustdoc/sanitizer-option.rs similarity index 100% rename from src/test/rustdoc/sanitizer-option.rs rename to tests/rustdoc/sanitizer-option.rs diff --git a/src/test/rustdoc/search-index-summaries.rs b/tests/rustdoc/search-index-summaries.rs similarity index 100% rename from src/test/rustdoc/search-index-summaries.rs rename to tests/rustdoc/search-index-summaries.rs diff --git a/src/test/rustdoc/search-index.rs b/tests/rustdoc/search-index.rs similarity index 100% rename from src/test/rustdoc/search-index.rs rename to tests/rustdoc/search-index.rs diff --git a/src/test/rustdoc/short-docblock-codeblock.rs b/tests/rustdoc/short-docblock-codeblock.rs similarity index 100% rename from src/test/rustdoc/short-docblock-codeblock.rs rename to tests/rustdoc/short-docblock-codeblock.rs diff --git a/src/test/rustdoc/short-docblock.rs b/tests/rustdoc/short-docblock.rs similarity index 100% rename from src/test/rustdoc/short-docblock.rs rename to tests/rustdoc/short-docblock.rs diff --git a/src/test/rustdoc/short-line.md b/tests/rustdoc/short-line.md similarity index 100% rename from src/test/rustdoc/short-line.md rename to tests/rustdoc/short-line.md diff --git a/src/test/rustdoc/show-const-contents.rs b/tests/rustdoc/show-const-contents.rs similarity index 100% rename from src/test/rustdoc/show-const-contents.rs rename to tests/rustdoc/show-const-contents.rs diff --git a/src/test/rustdoc/sidebar-all-page.rs b/tests/rustdoc/sidebar-all-page.rs similarity index 100% rename from src/test/rustdoc/sidebar-all-page.rs rename to tests/rustdoc/sidebar-all-page.rs diff --git a/src/test/rustdoc/sidebar-items.rs b/tests/rustdoc/sidebar-items.rs similarity index 100% rename from src/test/rustdoc/sidebar-items.rs rename to tests/rustdoc/sidebar-items.rs diff --git a/src/test/rustdoc/sidebar-link-generation.rs b/tests/rustdoc/sidebar-link-generation.rs similarity index 100% rename from src/test/rustdoc/sidebar-link-generation.rs rename to tests/rustdoc/sidebar-link-generation.rs diff --git a/src/test/rustdoc/sidebar-links-to-foreign-impl.rs b/tests/rustdoc/sidebar-links-to-foreign-impl.rs similarity index 100% rename from src/test/rustdoc/sidebar-links-to-foreign-impl.rs rename to tests/rustdoc/sidebar-links-to-foreign-impl.rs diff --git a/src/test/rustdoc/sized_trait.rs b/tests/rustdoc/sized_trait.rs similarity index 100% rename from src/test/rustdoc/sized_trait.rs rename to tests/rustdoc/sized_trait.rs diff --git a/src/test/rustdoc/slice-links.link_box_generic.html b/tests/rustdoc/slice-links.link_box_generic.html similarity index 100% rename from src/test/rustdoc/slice-links.link_box_generic.html rename to tests/rustdoc/slice-links.link_box_generic.html diff --git a/src/test/rustdoc/slice-links.link_box_u32.html b/tests/rustdoc/slice-links.link_box_u32.html similarity index 100% rename from src/test/rustdoc/slice-links.link_box_u32.html rename to tests/rustdoc/slice-links.link_box_u32.html diff --git a/src/test/rustdoc/slice-links.link_slice_generic.html b/tests/rustdoc/slice-links.link_slice_generic.html similarity index 100% rename from src/test/rustdoc/slice-links.link_slice_generic.html rename to tests/rustdoc/slice-links.link_slice_generic.html diff --git a/src/test/rustdoc/slice-links.link_slice_u32.html b/tests/rustdoc/slice-links.link_slice_u32.html similarity index 100% rename from src/test/rustdoc/slice-links.link_slice_u32.html rename to tests/rustdoc/slice-links.link_slice_u32.html diff --git a/src/test/rustdoc/slice-links.rs b/tests/rustdoc/slice-links.rs similarity index 100% rename from src/test/rustdoc/slice-links.rs rename to tests/rustdoc/slice-links.rs diff --git a/src/test/rustdoc/smart-punct.rs b/tests/rustdoc/smart-punct.rs similarity index 100% rename from src/test/rustdoc/smart-punct.rs rename to tests/rustdoc/smart-punct.rs diff --git a/src/test/rustdoc/smoke.rs b/tests/rustdoc/smoke.rs similarity index 100% rename from src/test/rustdoc/smoke.rs rename to tests/rustdoc/smoke.rs diff --git a/src/test/rustdoc/sort-modules-by-appearance.rs b/tests/rustdoc/sort-modules-by-appearance.rs similarity index 100% rename from src/test/rustdoc/sort-modules-by-appearance.rs rename to tests/rustdoc/sort-modules-by-appearance.rs diff --git a/src/test/rustdoc/source-file.rs b/tests/rustdoc/source-file.rs similarity index 100% rename from src/test/rustdoc/source-file.rs rename to tests/rustdoc/source-file.rs diff --git a/src/test/rustdoc/source-version-separator.rs b/tests/rustdoc/source-version-separator.rs similarity index 100% rename from src/test/rustdoc/source-version-separator.rs rename to tests/rustdoc/source-version-separator.rs diff --git a/src/test/rustdoc/spotlight-from-dependency.odd.html b/tests/rustdoc/spotlight-from-dependency.odd.html similarity index 100% rename from src/test/rustdoc/spotlight-from-dependency.odd.html rename to tests/rustdoc/spotlight-from-dependency.odd.html diff --git a/src/test/rustdoc/spotlight-from-dependency.rs b/tests/rustdoc/spotlight-from-dependency.rs similarity index 100% rename from src/test/rustdoc/spotlight-from-dependency.rs rename to tests/rustdoc/spotlight-from-dependency.rs diff --git a/src/test/rustdoc/src-links-auto-impls.rs b/tests/rustdoc/src-links-auto-impls.rs similarity index 100% rename from src/test/rustdoc/src-links-auto-impls.rs rename to tests/rustdoc/src-links-auto-impls.rs diff --git a/src/test/rustdoc/src-links-external.rs b/tests/rustdoc/src-links-external.rs similarity index 100% rename from src/test/rustdoc/src-links-external.rs rename to tests/rustdoc/src-links-external.rs diff --git a/src/test/rustdoc/src-links.rs b/tests/rustdoc/src-links.rs similarity index 100% rename from src/test/rustdoc/src-links.rs rename to tests/rustdoc/src-links.rs diff --git a/src/test/rustdoc/src-links/compiletest-ignore-dir b/tests/rustdoc/src-links/compiletest-ignore-dir similarity index 100% rename from src/test/rustdoc/src-links/compiletest-ignore-dir rename to tests/rustdoc/src-links/compiletest-ignore-dir diff --git a/src/test/rustdoc/src-links/fizz.rs b/tests/rustdoc/src-links/fizz.rs similarity index 100% rename from src/test/rustdoc/src-links/fizz.rs rename to tests/rustdoc/src-links/fizz.rs diff --git a/src/test/rustdoc/src-links/mod.rs b/tests/rustdoc/src-links/mod.rs similarity index 100% rename from src/test/rustdoc/src-links/mod.rs rename to tests/rustdoc/src-links/mod.rs diff --git a/src/test/rustdoc/stability.rs b/tests/rustdoc/stability.rs similarity index 100% rename from src/test/rustdoc/stability.rs rename to tests/rustdoc/stability.rs diff --git a/src/test/rustdoc/static-root-path.rs b/tests/rustdoc/static-root-path.rs similarity index 100% rename from src/test/rustdoc/static-root-path.rs rename to tests/rustdoc/static-root-path.rs diff --git a/src/test/rustdoc/static.rs b/tests/rustdoc/static.rs similarity index 100% rename from src/test/rustdoc/static.rs rename to tests/rustdoc/static.rs diff --git a/src/test/rustdoc/strip-block-doc-comments-stars.docblock.html b/tests/rustdoc/strip-block-doc-comments-stars.docblock.html similarity index 100% rename from src/test/rustdoc/strip-block-doc-comments-stars.docblock.html rename to tests/rustdoc/strip-block-doc-comments-stars.docblock.html diff --git a/src/test/rustdoc/strip-block-doc-comments-stars.rs b/tests/rustdoc/strip-block-doc-comments-stars.rs similarity index 100% rename from src/test/rustdoc/strip-block-doc-comments-stars.rs rename to tests/rustdoc/strip-block-doc-comments-stars.rs diff --git a/src/test/rustdoc/strip-enum-variant.no-not-shown.html b/tests/rustdoc/strip-enum-variant.no-not-shown.html similarity index 100% rename from src/test/rustdoc/strip-enum-variant.no-not-shown.html rename to tests/rustdoc/strip-enum-variant.no-not-shown.html diff --git a/src/test/rustdoc/strip-enum-variant.rs b/tests/rustdoc/strip-enum-variant.rs similarity index 100% rename from src/test/rustdoc/strip-enum-variant.rs rename to tests/rustdoc/strip-enum-variant.rs diff --git a/src/test/rustdoc/struct-arg-pattern.rs b/tests/rustdoc/struct-arg-pattern.rs similarity index 100% rename from src/test/rustdoc/struct-arg-pattern.rs rename to tests/rustdoc/struct-arg-pattern.rs diff --git a/src/test/rustdoc/struct-field.rs b/tests/rustdoc/struct-field.rs similarity index 100% rename from src/test/rustdoc/struct-field.rs rename to tests/rustdoc/struct-field.rs diff --git a/src/test/rustdoc/struct-implementations-title.rs b/tests/rustdoc/struct-implementations-title.rs similarity index 100% rename from src/test/rustdoc/struct-implementations-title.rs rename to tests/rustdoc/struct-implementations-title.rs diff --git a/src/test/rustdoc/structfields.rs b/tests/rustdoc/structfields.rs similarity index 100% rename from src/test/rustdoc/structfields.rs rename to tests/rustdoc/structfields.rs diff --git a/src/test/rustdoc/synthetic_auto/basic.rs b/tests/rustdoc/synthetic_auto/basic.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/basic.rs rename to tests/rustdoc/synthetic_auto/basic.rs diff --git a/src/test/rustdoc/synthetic_auto/complex.rs b/tests/rustdoc/synthetic_auto/complex.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/complex.rs rename to tests/rustdoc/synthetic_auto/complex.rs diff --git a/src/test/rustdoc/synthetic_auto/crate-local.rs b/tests/rustdoc/synthetic_auto/crate-local.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/crate-local.rs rename to tests/rustdoc/synthetic_auto/crate-local.rs diff --git a/src/test/rustdoc/synthetic_auto/issue-72213-projection-lifetime.rs b/tests/rustdoc/synthetic_auto/issue-72213-projection-lifetime.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/issue-72213-projection-lifetime.rs rename to tests/rustdoc/synthetic_auto/issue-72213-projection-lifetime.rs diff --git a/src/test/rustdoc/synthetic_auto/lifetimes.rs b/tests/rustdoc/synthetic_auto/lifetimes.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/lifetimes.rs rename to tests/rustdoc/synthetic_auto/lifetimes.rs diff --git a/src/test/rustdoc/synthetic_auto/manual.rs b/tests/rustdoc/synthetic_auto/manual.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/manual.rs rename to tests/rustdoc/synthetic_auto/manual.rs diff --git a/src/test/rustdoc/synthetic_auto/negative.rs b/tests/rustdoc/synthetic_auto/negative.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/negative.rs rename to tests/rustdoc/synthetic_auto/negative.rs diff --git a/src/test/rustdoc/synthetic_auto/nested.rs b/tests/rustdoc/synthetic_auto/nested.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/nested.rs rename to tests/rustdoc/synthetic_auto/nested.rs diff --git a/src/test/rustdoc/synthetic_auto/no-redundancy.rs b/tests/rustdoc/synthetic_auto/no-redundancy.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/no-redundancy.rs rename to tests/rustdoc/synthetic_auto/no-redundancy.rs diff --git a/src/test/rustdoc/synthetic_auto/overflow.rs b/tests/rustdoc/synthetic_auto/overflow.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/overflow.rs rename to tests/rustdoc/synthetic_auto/overflow.rs diff --git a/src/test/rustdoc/synthetic_auto/project.rs b/tests/rustdoc/synthetic_auto/project.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/project.rs rename to tests/rustdoc/synthetic_auto/project.rs diff --git a/src/test/rustdoc/synthetic_auto/self-referential.rs b/tests/rustdoc/synthetic_auto/self-referential.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/self-referential.rs rename to tests/rustdoc/synthetic_auto/self-referential.rs diff --git a/src/test/rustdoc/synthetic_auto/static-region.rs b/tests/rustdoc/synthetic_auto/static-region.rs similarity index 100% rename from src/test/rustdoc/synthetic_auto/static-region.rs rename to tests/rustdoc/synthetic_auto/static-region.rs diff --git a/src/test/rustdoc/tab_title.rs b/tests/rustdoc/tab_title.rs similarity index 100% rename from src/test/rustdoc/tab_title.rs rename to tests/rustdoc/tab_title.rs diff --git a/src/test/rustdoc/table-in-docblock.rs b/tests/rustdoc/table-in-docblock.rs similarity index 100% rename from src/test/rustdoc/table-in-docblock.rs rename to tests/rustdoc/table-in-docblock.rs diff --git a/src/test/rustdoc/task-lists.rs b/tests/rustdoc/task-lists.rs similarity index 100% rename from src/test/rustdoc/task-lists.rs rename to tests/rustdoc/task-lists.rs diff --git a/src/test/rustdoc/test-lists.rs b/tests/rustdoc/test-lists.rs similarity index 100% rename from src/test/rustdoc/test-lists.rs rename to tests/rustdoc/test-lists.rs diff --git a/src/test/rustdoc/test-parens.rs b/tests/rustdoc/test-parens.rs similarity index 100% rename from src/test/rustdoc/test-parens.rs rename to tests/rustdoc/test-parens.rs diff --git a/src/test/rustdoc/test-strikethrough.rs b/tests/rustdoc/test-strikethrough.rs similarity index 100% rename from src/test/rustdoc/test-strikethrough.rs rename to tests/rustdoc/test-strikethrough.rs diff --git a/src/test/rustdoc/test_option_check/bar.rs b/tests/rustdoc/test_option_check/bar.rs similarity index 100% rename from src/test/rustdoc/test_option_check/bar.rs rename to tests/rustdoc/test_option_check/bar.rs diff --git a/src/test/rustdoc/test_option_check/test.rs b/tests/rustdoc/test_option_check/test.rs similarity index 100% rename from src/test/rustdoc/test_option_check/test.rs rename to tests/rustdoc/test_option_check/test.rs diff --git a/src/test/rustdoc/thread-local-src.rs b/tests/rustdoc/thread-local-src.rs similarity index 100% rename from src/test/rustdoc/thread-local-src.rs rename to tests/rustdoc/thread-local-src.rs diff --git a/src/test/rustdoc/titles.rs b/tests/rustdoc/titles.rs similarity index 100% rename from src/test/rustdoc/titles.rs rename to tests/rustdoc/titles.rs diff --git a/src/test/rustdoc/toggle-item-contents.rs b/tests/rustdoc/toggle-item-contents.rs similarity index 100% rename from src/test/rustdoc/toggle-item-contents.rs rename to tests/rustdoc/toggle-item-contents.rs diff --git a/src/test/rustdoc/toggle-method.rs b/tests/rustdoc/toggle-method.rs similarity index 100% rename from src/test/rustdoc/toggle-method.rs rename to tests/rustdoc/toggle-method.rs diff --git a/src/test/rustdoc/toggle-trait-fn.rs b/tests/rustdoc/toggle-trait-fn.rs similarity index 100% rename from src/test/rustdoc/toggle-trait-fn.rs rename to tests/rustdoc/toggle-trait-fn.rs diff --git a/src/test/rustdoc/trait-alias-mention.rs b/tests/rustdoc/trait-alias-mention.rs similarity index 100% rename from src/test/rustdoc/trait-alias-mention.rs rename to tests/rustdoc/trait-alias-mention.rs diff --git a/src/test/rustdoc/trait-impl-items-links-and-anchors.rs b/tests/rustdoc/trait-impl-items-links-and-anchors.rs similarity index 100% rename from src/test/rustdoc/trait-impl-items-links-and-anchors.rs rename to tests/rustdoc/trait-impl-items-links-and-anchors.rs diff --git a/src/test/rustdoc/trait-impl.rs b/tests/rustdoc/trait-impl.rs similarity index 100% rename from src/test/rustdoc/trait-impl.rs rename to tests/rustdoc/trait-impl.rs diff --git a/src/test/rustdoc/trait-self-link.rs b/tests/rustdoc/trait-self-link.rs similarity index 100% rename from src/test/rustdoc/trait-self-link.rs rename to tests/rustdoc/trait-self-link.rs diff --git a/src/test/rustdoc/trait-src-link.rs b/tests/rustdoc/trait-src-link.rs similarity index 100% rename from src/test/rustdoc/trait-src-link.rs rename to tests/rustdoc/trait-src-link.rs diff --git a/src/test/rustdoc/trait-visibility.rs b/tests/rustdoc/trait-visibility.rs similarity index 100% rename from src/test/rustdoc/trait-visibility.rs rename to tests/rustdoc/trait-visibility.rs diff --git a/src/test/rustdoc/trait_alias.rs b/tests/rustdoc/trait_alias.rs similarity index 100% rename from src/test/rustdoc/trait_alias.rs rename to tests/rustdoc/trait_alias.rs diff --git a/src/test/rustdoc/traits-in-bodies-private.rs b/tests/rustdoc/traits-in-bodies-private.rs similarity index 100% rename from src/test/rustdoc/traits-in-bodies-private.rs rename to tests/rustdoc/traits-in-bodies-private.rs diff --git a/src/test/rustdoc/traits-in-bodies.rs b/tests/rustdoc/traits-in-bodies.rs similarity index 100% rename from src/test/rustdoc/traits-in-bodies.rs rename to tests/rustdoc/traits-in-bodies.rs diff --git a/src/test/rustdoc/tuple-struct-fields-doc.rs b/tests/rustdoc/tuple-struct-fields-doc.rs similarity index 100% rename from src/test/rustdoc/tuple-struct-fields-doc.rs rename to tests/rustdoc/tuple-struct-fields-doc.rs diff --git a/src/test/rustdoc/tuples.link1_i32.html b/tests/rustdoc/tuples.link1_i32.html similarity index 100% rename from src/test/rustdoc/tuples.link1_i32.html rename to tests/rustdoc/tuples.link1_i32.html diff --git a/src/test/rustdoc/tuples.link1_t.html b/tests/rustdoc/tuples.link1_t.html similarity index 100% rename from src/test/rustdoc/tuples.link1_t.html rename to tests/rustdoc/tuples.link1_t.html diff --git a/src/test/rustdoc/tuples.link2_i32.html b/tests/rustdoc/tuples.link2_i32.html similarity index 100% rename from src/test/rustdoc/tuples.link2_i32.html rename to tests/rustdoc/tuples.link2_i32.html diff --git a/src/test/rustdoc/tuples.link2_t.html b/tests/rustdoc/tuples.link2_t.html similarity index 100% rename from src/test/rustdoc/tuples.link2_t.html rename to tests/rustdoc/tuples.link2_t.html diff --git a/src/test/rustdoc/tuples.link2_tu.html b/tests/rustdoc/tuples.link2_tu.html similarity index 100% rename from src/test/rustdoc/tuples.link2_tu.html rename to tests/rustdoc/tuples.link2_tu.html diff --git a/src/test/rustdoc/tuples.link_unit.html b/tests/rustdoc/tuples.link_unit.html similarity index 100% rename from src/test/rustdoc/tuples.link_unit.html rename to tests/rustdoc/tuples.link_unit.html diff --git a/src/test/rustdoc/tuples.rs b/tests/rustdoc/tuples.rs similarity index 100% rename from src/test/rustdoc/tuples.rs rename to tests/rustdoc/tuples.rs diff --git a/src/test/rustdoc/type-layout-flag-required.rs b/tests/rustdoc/type-layout-flag-required.rs similarity index 100% rename from src/test/rustdoc/type-layout-flag-required.rs rename to tests/rustdoc/type-layout-flag-required.rs diff --git a/src/test/rustdoc/type-layout.rs b/tests/rustdoc/type-layout.rs similarity index 100% rename from src/test/rustdoc/type-layout.rs rename to tests/rustdoc/type-layout.rs diff --git a/src/test/rustdoc/typedef.rs b/tests/rustdoc/typedef.rs similarity index 100% rename from src/test/rustdoc/typedef.rs rename to tests/rustdoc/typedef.rs diff --git a/src/test/rustdoc/unindent.md b/tests/rustdoc/unindent.md similarity index 100% rename from src/test/rustdoc/unindent.md rename to tests/rustdoc/unindent.md diff --git a/src/test/rustdoc/unindent.rs b/tests/rustdoc/unindent.rs similarity index 100% rename from src/test/rustdoc/unindent.rs rename to tests/rustdoc/unindent.rs diff --git a/src/test/rustdoc/union.rs b/tests/rustdoc/union.rs similarity index 100% rename from src/test/rustdoc/union.rs rename to tests/rustdoc/union.rs diff --git a/src/test/rustdoc/unit-return.rs b/tests/rustdoc/unit-return.rs similarity index 100% rename from src/test/rustdoc/unit-return.rs rename to tests/rustdoc/unit-return.rs diff --git a/src/test/rustdoc/universal-impl-trait.rs b/tests/rustdoc/universal-impl-trait.rs similarity index 100% rename from src/test/rustdoc/universal-impl-trait.rs rename to tests/rustdoc/universal-impl-trait.rs diff --git a/src/test/rustdoc/unneeded-trait-implementations-title.rs b/tests/rustdoc/unneeded-trait-implementations-title.rs similarity index 100% rename from src/test/rustdoc/unneeded-trait-implementations-title.rs rename to tests/rustdoc/unneeded-trait-implementations-title.rs diff --git a/src/test/rustdoc/use-attr.rs b/tests/rustdoc/use-attr.rs similarity index 100% rename from src/test/rustdoc/use-attr.rs rename to tests/rustdoc/use-attr.rs diff --git a/src/test/rustdoc/useless_lifetime_bound.rs b/tests/rustdoc/useless_lifetime_bound.rs similarity index 100% rename from src/test/rustdoc/useless_lifetime_bound.rs rename to tests/rustdoc/useless_lifetime_bound.rs diff --git a/src/test/rustdoc/variadic.rs b/tests/rustdoc/variadic.rs similarity index 100% rename from src/test/rustdoc/variadic.rs rename to tests/rustdoc/variadic.rs diff --git a/src/test/rustdoc/version-separator-without-source.rs b/tests/rustdoc/version-separator-without-source.rs similarity index 100% rename from src/test/rustdoc/version-separator-without-source.rs rename to tests/rustdoc/version-separator-without-source.rs diff --git a/src/test/rustdoc/viewpath-rename.rs b/tests/rustdoc/viewpath-rename.rs similarity index 100% rename from src/test/rustdoc/viewpath-rename.rs rename to tests/rustdoc/viewpath-rename.rs diff --git a/src/test/rustdoc/viewpath-self.rs b/tests/rustdoc/viewpath-self.rs similarity index 100% rename from src/test/rustdoc/viewpath-self.rs rename to tests/rustdoc/viewpath-self.rs diff --git a/src/test/rustdoc/visibility.rs b/tests/rustdoc/visibility.rs similarity index 100% rename from src/test/rustdoc/visibility.rs rename to tests/rustdoc/visibility.rs diff --git a/src/test/rustdoc/where-clause-order.rs b/tests/rustdoc/where-clause-order.rs similarity index 100% rename from src/test/rustdoc/where-clause-order.rs rename to tests/rustdoc/where-clause-order.rs diff --git a/src/test/rustdoc/where-sized.rs b/tests/rustdoc/where-sized.rs similarity index 100% rename from src/test/rustdoc/where-sized.rs rename to tests/rustdoc/where-sized.rs diff --git a/src/test/rustdoc/where.SWhere_Simd_item-decl.html b/tests/rustdoc/where.SWhere_Simd_item-decl.html similarity index 100% rename from src/test/rustdoc/where.SWhere_Simd_item-decl.html rename to tests/rustdoc/where.SWhere_Simd_item-decl.html diff --git a/src/test/rustdoc/where.SWhere_TraitWhere_item-decl.html b/tests/rustdoc/where.SWhere_TraitWhere_item-decl.html similarity index 100% rename from src/test/rustdoc/where.SWhere_TraitWhere_item-decl.html rename to tests/rustdoc/where.SWhere_TraitWhere_item-decl.html diff --git a/src/test/rustdoc/where.rs b/tests/rustdoc/where.rs similarity index 100% rename from src/test/rustdoc/where.rs rename to tests/rustdoc/where.rs diff --git a/src/test/rustdoc/whitespace-after-where-clause.enum.html b/tests/rustdoc/whitespace-after-where-clause.enum.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.enum.html rename to tests/rustdoc/whitespace-after-where-clause.enum.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.enum2.html b/tests/rustdoc/whitespace-after-where-clause.enum2.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.enum2.html rename to tests/rustdoc/whitespace-after-where-clause.enum2.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.rs b/tests/rustdoc/whitespace-after-where-clause.rs similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.rs rename to tests/rustdoc/whitespace-after-where-clause.rs diff --git a/src/test/rustdoc/whitespace-after-where-clause.struct.html b/tests/rustdoc/whitespace-after-where-clause.struct.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.struct.html rename to tests/rustdoc/whitespace-after-where-clause.struct.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.struct2.html b/tests/rustdoc/whitespace-after-where-clause.struct2.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.struct2.html rename to tests/rustdoc/whitespace-after-where-clause.struct2.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.trait.html b/tests/rustdoc/whitespace-after-where-clause.trait.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.trait.html rename to tests/rustdoc/whitespace-after-where-clause.trait.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.trait2.html b/tests/rustdoc/whitespace-after-where-clause.trait2.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.trait2.html rename to tests/rustdoc/whitespace-after-where-clause.trait2.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.union.html b/tests/rustdoc/whitespace-after-where-clause.union.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.union.html rename to tests/rustdoc/whitespace-after-where-clause.union.html diff --git a/src/test/rustdoc/whitespace-after-where-clause.union2.html b/tests/rustdoc/whitespace-after-where-clause.union2.html similarity index 100% rename from src/test/rustdoc/whitespace-after-where-clause.union2.html rename to tests/rustdoc/whitespace-after-where-clause.union2.html diff --git a/src/test/rustdoc/without-redirect.rs b/tests/rustdoc/without-redirect.rs similarity index 100% rename from src/test/rustdoc/without-redirect.rs rename to tests/rustdoc/without-redirect.rs diff --git a/src/test/rustdoc/wrapping.rs b/tests/rustdoc/wrapping.rs similarity index 100% rename from src/test/rustdoc/wrapping.rs rename to tests/rustdoc/wrapping.rs diff --git a/src/test/ui-fulldeps/auxiliary/empty-plugin.rs b/tests/ui-fulldeps/auxiliary/empty-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/empty-plugin.rs rename to tests/ui-fulldeps/auxiliary/empty-plugin.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-13560-1.rs b/tests/ui-fulldeps/auxiliary/issue-13560-1.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-13560-1.rs rename to tests/ui-fulldeps/auxiliary/issue-13560-1.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-13560-2.rs b/tests/ui-fulldeps/auxiliary/issue-13560-2.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-13560-2.rs rename to tests/ui-fulldeps/auxiliary/issue-13560-2.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-13560-3.rs b/tests/ui-fulldeps/auxiliary/issue-13560-3.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-13560-3.rs rename to tests/ui-fulldeps/auxiliary/issue-13560-3.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-16822.rs b/tests/ui-fulldeps/auxiliary/issue-16822.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-16822.rs rename to tests/ui-fulldeps/auxiliary/issue-16822.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-18502.rs b/tests/ui-fulldeps/auxiliary/issue-18502.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-18502.rs rename to tests/ui-fulldeps/auxiliary/issue-18502.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-24106.rs b/tests/ui-fulldeps/auxiliary/issue-24106.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-24106.rs rename to tests/ui-fulldeps/auxiliary/issue-24106.rs diff --git a/src/test/ui-fulldeps/auxiliary/issue-40001-plugin.rs b/tests/ui-fulldeps/auxiliary/issue-40001-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/issue-40001-plugin.rs rename to tests/ui-fulldeps/auxiliary/issue-40001-plugin.rs diff --git a/src/test/ui-fulldeps/auxiliary/lint-for-crate-rpass.rs b/tests/ui-fulldeps/auxiliary/lint-for-crate-rpass.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lint-for-crate-rpass.rs rename to tests/ui-fulldeps/auxiliary/lint-for-crate-rpass.rs diff --git a/src/test/ui-fulldeps/auxiliary/lint-for-crate.rs b/tests/ui-fulldeps/auxiliary/lint-for-crate.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lint-for-crate.rs rename to tests/ui-fulldeps/auxiliary/lint-for-crate.rs diff --git a/src/test/ui-fulldeps/auxiliary/lint-group-plugin-test.rs b/tests/ui-fulldeps/auxiliary/lint-group-plugin-test.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lint-group-plugin-test.rs rename to tests/ui-fulldeps/auxiliary/lint-group-plugin-test.rs diff --git a/src/test/ui-fulldeps/auxiliary/lint-plugin-test.rs b/tests/ui-fulldeps/auxiliary/lint-plugin-test.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lint-plugin-test.rs rename to tests/ui-fulldeps/auxiliary/lint-plugin-test.rs diff --git a/src/test/ui-fulldeps/auxiliary/lint-tool-test.rs b/tests/ui-fulldeps/auxiliary/lint-tool-test.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lint-tool-test.rs rename to tests/ui-fulldeps/auxiliary/lint-tool-test.rs diff --git a/src/test/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs b/tests/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs rename to tests/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs diff --git a/src/test/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs b/tests/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs rename to tests/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs diff --git a/src/test/ui-fulldeps/auxiliary/multiple-plugins-1.rs b/tests/ui-fulldeps/auxiliary/multiple-plugins-1.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/multiple-plugins-1.rs rename to tests/ui-fulldeps/auxiliary/multiple-plugins-1.rs diff --git a/src/test/ui-fulldeps/auxiliary/multiple-plugins-2.rs b/tests/ui-fulldeps/auxiliary/multiple-plugins-2.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/multiple-plugins-2.rs rename to tests/ui-fulldeps/auxiliary/multiple-plugins-2.rs diff --git a/src/test/ui-fulldeps/auxiliary/outlive-expansion-phase.rs b/tests/ui-fulldeps/auxiliary/outlive-expansion-phase.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/outlive-expansion-phase.rs rename to tests/ui-fulldeps/auxiliary/outlive-expansion-phase.rs diff --git a/src/test/ui-fulldeps/auxiliary/rlib-crate-test.rs b/tests/ui-fulldeps/auxiliary/rlib-crate-test.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/rlib-crate-test.rs rename to tests/ui-fulldeps/auxiliary/rlib-crate-test.rs diff --git a/src/test/ui-fulldeps/auxiliary/syntax-extension-with-dll-deps-1.rs b/tests/ui-fulldeps/auxiliary/syntax-extension-with-dll-deps-1.rs similarity index 100% rename from src/test/ui-fulldeps/auxiliary/syntax-extension-with-dll-deps-1.rs rename to tests/ui-fulldeps/auxiliary/syntax-extension-with-dll-deps-1.rs diff --git a/src/test/ui-fulldeps/compiler-calls.rs b/tests/ui-fulldeps/compiler-calls.rs similarity index 100% rename from src/test/ui-fulldeps/compiler-calls.rs rename to tests/ui-fulldeps/compiler-calls.rs diff --git a/src/test/ui-fulldeps/create-dir-all-bare.rs b/tests/ui-fulldeps/create-dir-all-bare.rs similarity index 100% rename from src/test/ui-fulldeps/create-dir-all-bare.rs rename to tests/ui-fulldeps/create-dir-all-bare.rs diff --git a/src/test/ui-fulldeps/deriving-encodable-decodable-box.rs b/tests/ui-fulldeps/deriving-encodable-decodable-box.rs similarity index 100% rename from src/test/ui-fulldeps/deriving-encodable-decodable-box.rs rename to tests/ui-fulldeps/deriving-encodable-decodable-box.rs diff --git a/src/test/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs b/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs similarity index 100% rename from src/test/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs rename to tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs diff --git a/src/test/ui-fulldeps/deriving-global.rs b/tests/ui-fulldeps/deriving-global.rs similarity index 100% rename from src/test/ui-fulldeps/deriving-global.rs rename to tests/ui-fulldeps/deriving-global.rs diff --git a/src/test/ui-fulldeps/deriving-hygiene.rs b/tests/ui-fulldeps/deriving-hygiene.rs similarity index 100% rename from src/test/ui-fulldeps/deriving-hygiene.rs rename to tests/ui-fulldeps/deriving-hygiene.rs diff --git a/src/test/ui-fulldeps/dropck-tarena-cycle-checked.rs b/tests/ui-fulldeps/dropck-tarena-cycle-checked.rs similarity index 100% rename from src/test/ui-fulldeps/dropck-tarena-cycle-checked.rs rename to tests/ui-fulldeps/dropck-tarena-cycle-checked.rs diff --git a/src/test/ui-fulldeps/dropck-tarena-cycle-checked.stderr b/tests/ui-fulldeps/dropck-tarena-cycle-checked.stderr similarity index 100% rename from src/test/ui-fulldeps/dropck-tarena-cycle-checked.stderr rename to tests/ui-fulldeps/dropck-tarena-cycle-checked.stderr diff --git a/src/test/ui-fulldeps/dropck-tarena-unsound-drop.rs b/tests/ui-fulldeps/dropck-tarena-unsound-drop.rs similarity index 100% rename from src/test/ui-fulldeps/dropck-tarena-unsound-drop.rs rename to tests/ui-fulldeps/dropck-tarena-unsound-drop.rs diff --git a/src/test/ui-fulldeps/dropck-tarena-unsound-drop.stderr b/tests/ui-fulldeps/dropck-tarena-unsound-drop.stderr similarity index 100% rename from src/test/ui-fulldeps/dropck-tarena-unsound-drop.stderr rename to tests/ui-fulldeps/dropck-tarena-unsound-drop.stderr diff --git a/src/test/ui-fulldeps/dropck_tarena_sound_drop.rs b/tests/ui-fulldeps/dropck_tarena_sound_drop.rs similarity index 100% rename from src/test/ui-fulldeps/dropck_tarena_sound_drop.rs rename to tests/ui-fulldeps/dropck_tarena_sound_drop.rs diff --git a/src/test/ui-fulldeps/empty-struct-braces-derive.rs b/tests/ui-fulldeps/empty-struct-braces-derive.rs similarity index 100% rename from src/test/ui-fulldeps/empty-struct-braces-derive.rs rename to tests/ui-fulldeps/empty-struct-braces-derive.rs diff --git a/src/test/ui-fulldeps/extern-mod-syntax.rs b/tests/ui-fulldeps/extern-mod-syntax.rs similarity index 100% rename from src/test/ui-fulldeps/extern-mod-syntax.rs rename to tests/ui-fulldeps/extern-mod-syntax.rs diff --git a/src/test/ui-fulldeps/feature-gate-plugin.rs b/tests/ui-fulldeps/feature-gate-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/feature-gate-plugin.rs rename to tests/ui-fulldeps/feature-gate-plugin.rs diff --git a/src/test/ui-fulldeps/feature-gate-plugin.stderr b/tests/ui-fulldeps/feature-gate-plugin.stderr similarity index 100% rename from src/test/ui-fulldeps/feature-gate-plugin.stderr rename to tests/ui-fulldeps/feature-gate-plugin.stderr diff --git a/src/test/ui-fulldeps/fluent-messages/duplicate-a-b.ftl b/tests/ui-fulldeps/fluent-messages/duplicate-a-b.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/duplicate-a-b.ftl rename to tests/ui-fulldeps/fluent-messages/duplicate-a-b.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/duplicate-a.ftl b/tests/ui-fulldeps/fluent-messages/duplicate-a.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/duplicate-a.ftl rename to tests/ui-fulldeps/fluent-messages/duplicate-a.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/label-with-hyphens.ftl b/tests/ui-fulldeps/fluent-messages/label-with-hyphens.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/label-with-hyphens.ftl rename to tests/ui-fulldeps/fluent-messages/label-with-hyphens.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/missing-crate-name.ftl b/tests/ui-fulldeps/fluent-messages/missing-crate-name.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/missing-crate-name.ftl rename to tests/ui-fulldeps/fluent-messages/missing-crate-name.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/missing-message.ftl b/tests/ui-fulldeps/fluent-messages/missing-message.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/missing-message.ftl rename to tests/ui-fulldeps/fluent-messages/missing-message.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/slug-with-hyphens.ftl b/tests/ui-fulldeps/fluent-messages/slug-with-hyphens.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/slug-with-hyphens.ftl rename to tests/ui-fulldeps/fluent-messages/slug-with-hyphens.ftl diff --git a/src/test/ui-fulldeps/fluent-messages/test.rs b/tests/ui-fulldeps/fluent-messages/test.rs similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/test.rs rename to tests/ui-fulldeps/fluent-messages/test.rs diff --git a/src/test/ui-fulldeps/fluent-messages/test.stderr b/tests/ui-fulldeps/fluent-messages/test.stderr similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/test.stderr rename to tests/ui-fulldeps/fluent-messages/test.stderr diff --git a/src/test/ui-fulldeps/fluent-messages/valid.ftl b/tests/ui-fulldeps/fluent-messages/valid.ftl similarity index 100% rename from src/test/ui-fulldeps/fluent-messages/valid.ftl rename to tests/ui-fulldeps/fluent-messages/valid.ftl diff --git a/src/test/ui-fulldeps/gated-plugin.rs b/tests/ui-fulldeps/gated-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/gated-plugin.rs rename to tests/ui-fulldeps/gated-plugin.rs diff --git a/src/test/ui-fulldeps/gated-plugin.stderr b/tests/ui-fulldeps/gated-plugin.stderr similarity index 100% rename from src/test/ui-fulldeps/gated-plugin.stderr rename to tests/ui-fulldeps/gated-plugin.stderr diff --git a/src/test/ui-fulldeps/hash-stable-is-unstable.rs b/tests/ui-fulldeps/hash-stable-is-unstable.rs similarity index 100% rename from src/test/ui-fulldeps/hash-stable-is-unstable.rs rename to tests/ui-fulldeps/hash-stable-is-unstable.rs diff --git a/src/test/ui-fulldeps/hash-stable-is-unstable.stderr b/tests/ui-fulldeps/hash-stable-is-unstable.stderr similarity index 100% rename from src/test/ui-fulldeps/hash-stable-is-unstable.stderr rename to tests/ui-fulldeps/hash-stable-is-unstable.stderr diff --git a/src/test/ui-fulldeps/internal-lints/bad_opt_access.rs b/tests/ui-fulldeps/internal-lints/bad_opt_access.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/bad_opt_access.rs rename to tests/ui-fulldeps/internal-lints/bad_opt_access.rs diff --git a/src/test/ui-fulldeps/internal-lints/bad_opt_access.stderr b/tests/ui-fulldeps/internal-lints/bad_opt_access.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/bad_opt_access.stderr rename to tests/ui-fulldeps/internal-lints/bad_opt_access.stderr diff --git a/src/test/ui-fulldeps/internal-lints/default_hash_types.rs b/tests/ui-fulldeps/internal-lints/default_hash_types.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/default_hash_types.rs rename to tests/ui-fulldeps/internal-lints/default_hash_types.rs diff --git a/src/test/ui-fulldeps/internal-lints/default_hash_types.stderr b/tests/ui-fulldeps/internal-lints/default_hash_types.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/default_hash_types.stderr rename to tests/ui-fulldeps/internal-lints/default_hash_types.stderr diff --git a/src/test/ui-fulldeps/internal-lints/diagnostics.rs b/tests/ui-fulldeps/internal-lints/diagnostics.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/diagnostics.rs rename to tests/ui-fulldeps/internal-lints/diagnostics.rs diff --git a/src/test/ui-fulldeps/internal-lints/diagnostics.stderr b/tests/ui-fulldeps/internal-lints/diagnostics.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/diagnostics.stderr rename to tests/ui-fulldeps/internal-lints/diagnostics.stderr diff --git a/src/test/ui-fulldeps/internal-lints/diagnostics_incorrect.rs b/tests/ui-fulldeps/internal-lints/diagnostics_incorrect.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/diagnostics_incorrect.rs rename to tests/ui-fulldeps/internal-lints/diagnostics_incorrect.rs diff --git a/src/test/ui-fulldeps/internal-lints/diagnostics_incorrect.stderr b/tests/ui-fulldeps/internal-lints/diagnostics_incorrect.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/diagnostics_incorrect.stderr rename to tests/ui-fulldeps/internal-lints/diagnostics_incorrect.stderr diff --git a/src/test/ui-fulldeps/internal-lints/existing_doc_keyword.rs b/tests/ui-fulldeps/internal-lints/existing_doc_keyword.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/existing_doc_keyword.rs rename to tests/ui-fulldeps/internal-lints/existing_doc_keyword.rs diff --git a/src/test/ui-fulldeps/internal-lints/existing_doc_keyword.stderr b/tests/ui-fulldeps/internal-lints/existing_doc_keyword.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/existing_doc_keyword.stderr rename to tests/ui-fulldeps/internal-lints/existing_doc_keyword.stderr diff --git a/src/test/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs b/tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs rename to tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs diff --git a/src/test/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.stderr b/tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.stderr rename to tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.stderr diff --git a/src/test/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs b/tests/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs rename to tests/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs diff --git a/src/test/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.stderr b/tests/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.stderr rename to tests/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.stderr diff --git a/src/test/ui-fulldeps/internal-lints/query_stability.rs b/tests/ui-fulldeps/internal-lints/query_stability.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/query_stability.rs rename to tests/ui-fulldeps/internal-lints/query_stability.rs diff --git a/src/test/ui-fulldeps/internal-lints/query_stability.stderr b/tests/ui-fulldeps/internal-lints/query_stability.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/query_stability.stderr rename to tests/ui-fulldeps/internal-lints/query_stability.stderr diff --git a/src/test/ui-fulldeps/internal-lints/query_stability_incorrect.rs b/tests/ui-fulldeps/internal-lints/query_stability_incorrect.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/query_stability_incorrect.rs rename to tests/ui-fulldeps/internal-lints/query_stability_incorrect.rs diff --git a/src/test/ui-fulldeps/internal-lints/query_stability_incorrect.stderr b/tests/ui-fulldeps/internal-lints/query_stability_incorrect.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/query_stability_incorrect.stderr rename to tests/ui-fulldeps/internal-lints/query_stability_incorrect.stderr diff --git a/src/test/ui-fulldeps/internal-lints/rustc_pass_by_value.rs b/tests/ui-fulldeps/internal-lints/rustc_pass_by_value.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/rustc_pass_by_value.rs rename to tests/ui-fulldeps/internal-lints/rustc_pass_by_value.rs diff --git a/src/test/ui-fulldeps/internal-lints/rustc_pass_by_value.stderr b/tests/ui-fulldeps/internal-lints/rustc_pass_by_value.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/rustc_pass_by_value.stderr rename to tests/ui-fulldeps/internal-lints/rustc_pass_by_value.stderr diff --git a/src/test/ui-fulldeps/internal-lints/rustc_pass_by_value_self.rs b/tests/ui-fulldeps/internal-lints/rustc_pass_by_value_self.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/rustc_pass_by_value_self.rs rename to tests/ui-fulldeps/internal-lints/rustc_pass_by_value_self.rs diff --git a/src/test/ui-fulldeps/internal-lints/rustc_pass_by_value_self.stderr b/tests/ui-fulldeps/internal-lints/rustc_pass_by_value_self.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/rustc_pass_by_value_self.stderr rename to tests/ui-fulldeps/internal-lints/rustc_pass_by_value_self.stderr diff --git a/src/test/ui-fulldeps/internal-lints/ty_tykind_usage.rs b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs similarity index 100% rename from src/test/ui-fulldeps/internal-lints/ty_tykind_usage.rs rename to tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs diff --git a/src/test/ui-fulldeps/internal-lints/ty_tykind_usage.stderr b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr similarity index 100% rename from src/test/ui-fulldeps/internal-lints/ty_tykind_usage.stderr rename to tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr diff --git a/src/test/ui-fulldeps/issue-11881.rs b/tests/ui-fulldeps/issue-11881.rs similarity index 100% rename from src/test/ui-fulldeps/issue-11881.rs rename to tests/ui-fulldeps/issue-11881.rs diff --git a/src/test/ui-fulldeps/issue-13560.rs b/tests/ui-fulldeps/issue-13560.rs similarity index 100% rename from src/test/ui-fulldeps/issue-13560.rs rename to tests/ui-fulldeps/issue-13560.rs diff --git a/src/test/ui-fulldeps/issue-14021.rs b/tests/ui-fulldeps/issue-14021.rs similarity index 100% rename from src/test/ui-fulldeps/issue-14021.rs rename to tests/ui-fulldeps/issue-14021.rs diff --git a/src/test/ui-fulldeps/issue-15149.rs b/tests/ui-fulldeps/issue-15149.rs similarity index 100% rename from src/test/ui-fulldeps/issue-15149.rs rename to tests/ui-fulldeps/issue-15149.rs diff --git a/src/test/ui-fulldeps/issue-15778-fail.rs b/tests/ui-fulldeps/issue-15778-fail.rs similarity index 100% rename from src/test/ui-fulldeps/issue-15778-fail.rs rename to tests/ui-fulldeps/issue-15778-fail.rs diff --git a/src/test/ui-fulldeps/issue-15778-fail.stderr b/tests/ui-fulldeps/issue-15778-fail.stderr similarity index 100% rename from src/test/ui-fulldeps/issue-15778-fail.stderr rename to tests/ui-fulldeps/issue-15778-fail.stderr diff --git a/src/test/ui-fulldeps/issue-15924.rs b/tests/ui-fulldeps/issue-15924.rs similarity index 100% rename from src/test/ui-fulldeps/issue-15924.rs rename to tests/ui-fulldeps/issue-15924.rs diff --git a/src/test/ui-fulldeps/issue-16822.rs b/tests/ui-fulldeps/issue-16822.rs similarity index 100% rename from src/test/ui-fulldeps/issue-16822.rs rename to tests/ui-fulldeps/issue-16822.rs diff --git a/src/test/ui-fulldeps/issue-18502.rs b/tests/ui-fulldeps/issue-18502.rs similarity index 100% rename from src/test/ui-fulldeps/issue-18502.rs rename to tests/ui-fulldeps/issue-18502.rs diff --git a/src/test/ui-fulldeps/issue-24106.rs b/tests/ui-fulldeps/issue-24106.rs similarity index 100% rename from src/test/ui-fulldeps/issue-24106.rs rename to tests/ui-fulldeps/issue-24106.rs diff --git a/src/test/ui-fulldeps/issue-2804.rs b/tests/ui-fulldeps/issue-2804.rs similarity index 100% rename from src/test/ui-fulldeps/issue-2804.rs rename to tests/ui-fulldeps/issue-2804.rs diff --git a/src/test/ui-fulldeps/issue-40001.rs b/tests/ui-fulldeps/issue-40001.rs similarity index 100% rename from src/test/ui-fulldeps/issue-40001.rs rename to tests/ui-fulldeps/issue-40001.rs diff --git a/src/test/ui-fulldeps/issue-40001.stderr b/tests/ui-fulldeps/issue-40001.stderr similarity index 100% rename from src/test/ui-fulldeps/issue-40001.stderr rename to tests/ui-fulldeps/issue-40001.stderr diff --git a/src/test/ui-fulldeps/issue-81357-unsound-file-methods.rs b/tests/ui-fulldeps/issue-81357-unsound-file-methods.rs similarity index 100% rename from src/test/ui-fulldeps/issue-81357-unsound-file-methods.rs rename to tests/ui-fulldeps/issue-81357-unsound-file-methods.rs diff --git a/src/test/ui-fulldeps/lint-group-denied-lint-allowed.rs b/tests/ui-fulldeps/lint-group-denied-lint-allowed.rs similarity index 100% rename from src/test/ui-fulldeps/lint-group-denied-lint-allowed.rs rename to tests/ui-fulldeps/lint-group-denied-lint-allowed.rs diff --git a/src/test/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs b/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs similarity index 100% rename from src/test/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs rename to tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs diff --git a/src/test/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr b/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr rename to tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr diff --git a/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.rs b/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.rs similarity index 100% rename from src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.rs rename to tests/ui-fulldeps/lint-group-plugin-deny-cmdline.rs diff --git a/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr b/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr rename to tests/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr diff --git a/src/test/ui-fulldeps/lint-group-plugin.rs b/tests/ui-fulldeps/lint-group-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/lint-group-plugin.rs rename to tests/ui-fulldeps/lint-group-plugin.rs diff --git a/src/test/ui-fulldeps/lint-group-plugin.stderr b/tests/ui-fulldeps/lint-group-plugin.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-group-plugin.stderr rename to tests/ui-fulldeps/lint-group-plugin.stderr diff --git a/src/test/ui-fulldeps/lint-pass-macros.rs b/tests/ui-fulldeps/lint-pass-macros.rs similarity index 100% rename from src/test/ui-fulldeps/lint-pass-macros.rs rename to tests/ui-fulldeps/lint-pass-macros.rs diff --git a/src/test/ui-fulldeps/lint-plugin-cmdline-allow.rs b/tests/ui-fulldeps/lint-plugin-cmdline-allow.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-cmdline-allow.rs rename to tests/ui-fulldeps/lint-plugin-cmdline-allow.rs diff --git a/src/test/ui-fulldeps/lint-plugin-cmdline-allow.stderr b/tests/ui-fulldeps/lint-plugin-cmdline-allow.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-cmdline-allow.stderr rename to tests/ui-fulldeps/lint-plugin-cmdline-allow.stderr diff --git a/src/test/ui-fulldeps/lint-plugin-cmdline-load.rs b/tests/ui-fulldeps/lint-plugin-cmdline-load.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-cmdline-load.rs rename to tests/ui-fulldeps/lint-plugin-cmdline-load.rs diff --git a/src/test/ui-fulldeps/lint-plugin-cmdline-load.stderr b/tests/ui-fulldeps/lint-plugin-cmdline-load.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-cmdline-load.stderr rename to tests/ui-fulldeps/lint-plugin-cmdline-load.stderr diff --git a/src/test/ui-fulldeps/lint-plugin-deny-attr.rs b/tests/ui-fulldeps/lint-plugin-deny-attr.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-deny-attr.rs rename to tests/ui-fulldeps/lint-plugin-deny-attr.rs diff --git a/src/test/ui-fulldeps/lint-plugin-deny-attr.stderr b/tests/ui-fulldeps/lint-plugin-deny-attr.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-deny-attr.stderr rename to tests/ui-fulldeps/lint-plugin-deny-attr.stderr diff --git a/src/test/ui-fulldeps/lint-plugin-deny-cmdline.rs b/tests/ui-fulldeps/lint-plugin-deny-cmdline.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-deny-cmdline.rs rename to tests/ui-fulldeps/lint-plugin-deny-cmdline.rs diff --git a/src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr b/tests/ui-fulldeps/lint-plugin-deny-cmdline.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr rename to tests/ui-fulldeps/lint-plugin-deny-cmdline.stderr diff --git a/src/test/ui-fulldeps/lint-plugin-forbid-attrs.rs b/tests/ui-fulldeps/lint-plugin-forbid-attrs.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-forbid-attrs.rs rename to tests/ui-fulldeps/lint-plugin-forbid-attrs.rs diff --git a/src/test/ui-fulldeps/lint-plugin-forbid-attrs.stderr b/tests/ui-fulldeps/lint-plugin-forbid-attrs.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-forbid-attrs.stderr rename to tests/ui-fulldeps/lint-plugin-forbid-attrs.stderr diff --git a/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.rs b/tests/ui-fulldeps/lint-plugin-forbid-cmdline.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-forbid-cmdline.rs rename to tests/ui-fulldeps/lint-plugin-forbid-cmdline.rs diff --git a/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr b/tests/ui-fulldeps/lint-plugin-forbid-cmdline.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr rename to tests/ui-fulldeps/lint-plugin-forbid-cmdline.stderr diff --git a/src/test/ui-fulldeps/lint-plugin.rs b/tests/ui-fulldeps/lint-plugin.rs similarity index 100% rename from src/test/ui-fulldeps/lint-plugin.rs rename to tests/ui-fulldeps/lint-plugin.rs diff --git a/src/test/ui-fulldeps/lint-plugin.stderr b/tests/ui-fulldeps/lint-plugin.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-plugin.stderr rename to tests/ui-fulldeps/lint-plugin.stderr diff --git a/src/test/ui-fulldeps/lint-tool-cmdline-allow.rs b/tests/ui-fulldeps/lint-tool-cmdline-allow.rs similarity index 100% rename from src/test/ui-fulldeps/lint-tool-cmdline-allow.rs rename to tests/ui-fulldeps/lint-tool-cmdline-allow.rs diff --git a/src/test/ui-fulldeps/lint-tool-cmdline-allow.stderr b/tests/ui-fulldeps/lint-tool-cmdline-allow.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-tool-cmdline-allow.stderr rename to tests/ui-fulldeps/lint-tool-cmdline-allow.stderr diff --git a/src/test/ui-fulldeps/lint-tool-test.rs b/tests/ui-fulldeps/lint-tool-test.rs similarity index 100% rename from src/test/ui-fulldeps/lint-tool-test.rs rename to tests/ui-fulldeps/lint-tool-test.rs diff --git a/src/test/ui-fulldeps/lint-tool-test.stderr b/tests/ui-fulldeps/lint-tool-test.stderr similarity index 100% rename from src/test/ui-fulldeps/lint-tool-test.stderr rename to tests/ui-fulldeps/lint-tool-test.stderr diff --git a/src/test/ui-fulldeps/lto-syntax-extension.rs b/tests/ui-fulldeps/lto-syntax-extension.rs similarity index 100% rename from src/test/ui-fulldeps/lto-syntax-extension.rs rename to tests/ui-fulldeps/lto-syntax-extension.rs diff --git a/src/test/ui-fulldeps/lto-syntax-extension.stderr b/tests/ui-fulldeps/lto-syntax-extension.stderr similarity index 100% rename from src/test/ui-fulldeps/lto-syntax-extension.stderr rename to tests/ui-fulldeps/lto-syntax-extension.stderr diff --git a/src/test/ui-fulldeps/macro-crate-rlib.rs b/tests/ui-fulldeps/macro-crate-rlib.rs similarity index 100% rename from src/test/ui-fulldeps/macro-crate-rlib.rs rename to tests/ui-fulldeps/macro-crate-rlib.rs diff --git a/src/test/ui-fulldeps/macro-crate-rlib.stderr b/tests/ui-fulldeps/macro-crate-rlib.stderr similarity index 100% rename from src/test/ui-fulldeps/macro-crate-rlib.stderr rename to tests/ui-fulldeps/macro-crate-rlib.stderr diff --git a/src/test/ui-fulldeps/missing-rustc-driver-error.rs b/tests/ui-fulldeps/missing-rustc-driver-error.rs similarity index 100% rename from src/test/ui-fulldeps/missing-rustc-driver-error.rs rename to tests/ui-fulldeps/missing-rustc-driver-error.rs diff --git a/src/test/ui-fulldeps/missing-rustc-driver-error.stderr b/tests/ui-fulldeps/missing-rustc-driver-error.stderr similarity index 100% rename from src/test/ui-fulldeps/missing-rustc-driver-error.stderr rename to tests/ui-fulldeps/missing-rustc-driver-error.stderr diff --git a/src/test/ui-fulldeps/mod_dir_path_canonicalized.rs b/tests/ui-fulldeps/mod_dir_path_canonicalized.rs similarity index 100% rename from src/test/ui-fulldeps/mod_dir_path_canonicalized.rs rename to tests/ui-fulldeps/mod_dir_path_canonicalized.rs diff --git a/src/test/ui-fulldeps/mod_dir_simple/compiletest-ignore-dir b/tests/ui-fulldeps/mod_dir_simple/compiletest-ignore-dir similarity index 100% rename from src/test/ui-fulldeps/mod_dir_simple/compiletest-ignore-dir rename to tests/ui-fulldeps/mod_dir_simple/compiletest-ignore-dir diff --git a/src/test/ui-fulldeps/mod_dir_simple/test.rs b/tests/ui-fulldeps/mod_dir_simple/test.rs similarity index 100% rename from src/test/ui-fulldeps/mod_dir_simple/test.rs rename to tests/ui-fulldeps/mod_dir_simple/test.rs diff --git a/src/test/ui-fulldeps/multiple-plugins.rs b/tests/ui-fulldeps/multiple-plugins.rs similarity index 100% rename from src/test/ui-fulldeps/multiple-plugins.rs rename to tests/ui-fulldeps/multiple-plugins.rs diff --git a/src/test/ui-fulldeps/multiple-plugins.stderr b/tests/ui-fulldeps/multiple-plugins.stderr similarity index 100% rename from src/test/ui-fulldeps/multiple-plugins.stderr rename to tests/ui-fulldeps/multiple-plugins.stderr diff --git a/src/test/ui-fulldeps/myriad-closures.rs b/tests/ui-fulldeps/myriad-closures.rs similarity index 100% rename from src/test/ui-fulldeps/myriad-closures.rs rename to tests/ui-fulldeps/myriad-closures.rs diff --git a/src/test/ui-fulldeps/outlive-expansion-phase.rs b/tests/ui-fulldeps/outlive-expansion-phase.rs similarity index 100% rename from src/test/ui-fulldeps/outlive-expansion-phase.rs rename to tests/ui-fulldeps/outlive-expansion-phase.rs diff --git a/src/test/ui-fulldeps/outlive-expansion-phase.stderr b/tests/ui-fulldeps/outlive-expansion-phase.stderr similarity index 100% rename from src/test/ui-fulldeps/outlive-expansion-phase.stderr rename to tests/ui-fulldeps/outlive-expansion-phase.stderr diff --git a/src/test/ui-fulldeps/pathless-extern-unstable.rs b/tests/ui-fulldeps/pathless-extern-unstable.rs similarity index 100% rename from src/test/ui-fulldeps/pathless-extern-unstable.rs rename to tests/ui-fulldeps/pathless-extern-unstable.rs diff --git a/src/test/ui-fulldeps/pathless-extern-unstable.stderr b/tests/ui-fulldeps/pathless-extern-unstable.stderr similarity index 100% rename from src/test/ui-fulldeps/pathless-extern-unstable.stderr rename to tests/ui-fulldeps/pathless-extern-unstable.stderr diff --git a/src/test/ui-fulldeps/plugin-args.rs b/tests/ui-fulldeps/plugin-args.rs similarity index 100% rename from src/test/ui-fulldeps/plugin-args.rs rename to tests/ui-fulldeps/plugin-args.rs diff --git a/src/test/ui-fulldeps/plugin-args.stderr b/tests/ui-fulldeps/plugin-args.stderr similarity index 100% rename from src/test/ui-fulldeps/plugin-args.stderr rename to tests/ui-fulldeps/plugin-args.stderr diff --git a/src/test/ui-fulldeps/plugin-as-extern-crate.rs b/tests/ui-fulldeps/plugin-as-extern-crate.rs similarity index 100% rename from src/test/ui-fulldeps/plugin-as-extern-crate.rs rename to tests/ui-fulldeps/plugin-as-extern-crate.rs diff --git a/src/test/ui-fulldeps/pprust-expr-roundtrip.rs b/tests/ui-fulldeps/pprust-expr-roundtrip.rs similarity index 100% rename from src/test/ui-fulldeps/pprust-expr-roundtrip.rs rename to tests/ui-fulldeps/pprust-expr-roundtrip.rs diff --git a/src/test/ui-fulldeps/regions-mock-tcx.rs b/tests/ui-fulldeps/regions-mock-tcx.rs similarity index 100% rename from src/test/ui-fulldeps/regions-mock-tcx.rs rename to tests/ui-fulldeps/regions-mock-tcx.rs diff --git a/src/test/ui-fulldeps/rename-directory.rs b/tests/ui-fulldeps/rename-directory.rs similarity index 100% rename from src/test/ui-fulldeps/rename-directory.rs rename to tests/ui-fulldeps/rename-directory.rs diff --git a/src/test/ui-fulldeps/rustc_encodable_hygiene.rs b/tests/ui-fulldeps/rustc_encodable_hygiene.rs similarity index 100% rename from src/test/ui-fulldeps/rustc_encodable_hygiene.rs rename to tests/ui-fulldeps/rustc_encodable_hygiene.rs diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs rename to tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr rename to tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr diff --git a/src/test/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs b/tests/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs rename to tests/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs diff --git a/src/test/ui-fulldeps/session-diagnostic/enforce_slug_naming.stderr b/tests/ui-fulldeps/session-diagnostic/enforce_slug_naming.stderr similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/enforce_slug_naming.stderr rename to tests/ui-fulldeps/session-diagnostic/enforce_slug_naming.stderr diff --git a/src/test/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs rename to tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs diff --git a/src/test/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr similarity index 100% rename from src/test/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr rename to tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr diff --git a/src/test/ui-fulldeps/stdio-from.rs b/tests/ui-fulldeps/stdio-from.rs similarity index 100% rename from src/test/ui-fulldeps/stdio-from.rs rename to tests/ui-fulldeps/stdio-from.rs diff --git a/src/test/ui-fulldeps/switch-stdout.rs b/tests/ui-fulldeps/switch-stdout.rs similarity index 100% rename from src/test/ui-fulldeps/switch-stdout.rs rename to tests/ui-fulldeps/switch-stdout.rs diff --git a/src/test/ui/.gitattributes b/tests/ui/.gitattributes similarity index 100% rename from src/test/ui/.gitattributes rename to tests/ui/.gitattributes diff --git a/src/test/ui/abi/abi-sysv64-arg-passing.rs b/tests/ui/abi/abi-sysv64-arg-passing.rs similarity index 100% rename from src/test/ui/abi/abi-sysv64-arg-passing.rs rename to tests/ui/abi/abi-sysv64-arg-passing.rs diff --git a/src/test/ui/abi/abi-sysv64-register-usage.rs b/tests/ui/abi/abi-sysv64-register-usage.rs similarity index 100% rename from src/test/ui/abi/abi-sysv64-register-usage.rs rename to tests/ui/abi/abi-sysv64-register-usage.rs diff --git a/src/test/ui/abi/abi-typo-unstable.rs b/tests/ui/abi/abi-typo-unstable.rs similarity index 100% rename from src/test/ui/abi/abi-typo-unstable.rs rename to tests/ui/abi/abi-typo-unstable.rs diff --git a/src/test/ui/abi/abi-typo-unstable.stderr b/tests/ui/abi/abi-typo-unstable.stderr similarity index 100% rename from src/test/ui/abi/abi-typo-unstable.stderr rename to tests/ui/abi/abi-typo-unstable.stderr diff --git a/src/test/ui/abi/anon-extern-mod.rs b/tests/ui/abi/anon-extern-mod.rs similarity index 100% rename from src/test/ui/abi/anon-extern-mod.rs rename to tests/ui/abi/anon-extern-mod.rs diff --git a/src/test/ui/abi/c-stack-as-value.rs b/tests/ui/abi/c-stack-as-value.rs similarity index 100% rename from src/test/ui/abi/c-stack-as-value.rs rename to tests/ui/abi/c-stack-as-value.rs diff --git a/src/test/ui/abi/c-stack-returning-int64.rs b/tests/ui/abi/c-stack-returning-int64.rs similarity index 100% rename from src/test/ui/abi/c-stack-returning-int64.rs rename to tests/ui/abi/c-stack-returning-int64.rs diff --git a/src/test/ui/abi/cabi-int-widening.rs b/tests/ui/abi/cabi-int-widening.rs similarity index 100% rename from src/test/ui/abi/cabi-int-widening.rs rename to tests/ui/abi/cabi-int-widening.rs diff --git a/src/test/ui/abi/cross-crate/anon-extern-mod-cross-crate-2.rs b/tests/ui/abi/cross-crate/anon-extern-mod-cross-crate-2.rs similarity index 100% rename from src/test/ui/abi/cross-crate/anon-extern-mod-cross-crate-2.rs rename to tests/ui/abi/cross-crate/anon-extern-mod-cross-crate-2.rs diff --git a/src/test/ui/abi/cross-crate/auxiliary/anon-extern-mod-cross-crate-1.rs b/tests/ui/abi/cross-crate/auxiliary/anon-extern-mod-cross-crate-1.rs similarity index 100% rename from src/test/ui/abi/cross-crate/auxiliary/anon-extern-mod-cross-crate-1.rs rename to tests/ui/abi/cross-crate/auxiliary/anon-extern-mod-cross-crate-1.rs diff --git a/src/test/ui/abi/cross-crate/duplicated-external-mods.rs b/tests/ui/abi/cross-crate/duplicated-external-mods.rs similarity index 100% rename from src/test/ui/abi/cross-crate/duplicated-external-mods.rs rename to tests/ui/abi/cross-crate/duplicated-external-mods.rs diff --git a/src/test/ui/abi/extern/auxiliary/extern-crosscrate-source.rs b/tests/ui/abi/extern/auxiliary/extern-crosscrate-source.rs similarity index 100% rename from src/test/ui/abi/extern/auxiliary/extern-crosscrate-source.rs rename to tests/ui/abi/extern/auxiliary/extern-crosscrate-source.rs diff --git a/src/test/ui/abi/extern/extern-call-deep.rs b/tests/ui/abi/extern/extern-call-deep.rs similarity index 100% rename from src/test/ui/abi/extern/extern-call-deep.rs rename to tests/ui/abi/extern/extern-call-deep.rs diff --git a/src/test/ui/abi/extern/extern-call-deep2.rs b/tests/ui/abi/extern/extern-call-deep2.rs similarity index 100% rename from src/test/ui/abi/extern/extern-call-deep2.rs rename to tests/ui/abi/extern/extern-call-deep2.rs diff --git a/src/test/ui/abi/extern/extern-call-direct.rs b/tests/ui/abi/extern/extern-call-direct.rs similarity index 100% rename from src/test/ui/abi/extern/extern-call-direct.rs rename to tests/ui/abi/extern/extern-call-direct.rs diff --git a/src/test/ui/abi/extern/extern-call-indirect.rs b/tests/ui/abi/extern/extern-call-indirect.rs similarity index 100% rename from src/test/ui/abi/extern/extern-call-indirect.rs rename to tests/ui/abi/extern/extern-call-indirect.rs diff --git a/src/test/ui/abi/extern/extern-call-scrub.rs b/tests/ui/abi/extern/extern-call-scrub.rs similarity index 100% rename from src/test/ui/abi/extern/extern-call-scrub.rs rename to tests/ui/abi/extern/extern-call-scrub.rs diff --git a/src/test/ui/abi/extern/extern-crosscrate.rs b/tests/ui/abi/extern/extern-crosscrate.rs similarity index 100% rename from src/test/ui/abi/extern/extern-crosscrate.rs rename to tests/ui/abi/extern/extern-crosscrate.rs diff --git a/src/test/ui/abi/extern/extern-pass-TwoU16s.rs b/tests/ui/abi/extern/extern-pass-TwoU16s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-TwoU16s.rs rename to tests/ui/abi/extern/extern-pass-TwoU16s.rs diff --git a/src/test/ui/abi/extern/extern-pass-TwoU32s.rs b/tests/ui/abi/extern/extern-pass-TwoU32s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-TwoU32s.rs rename to tests/ui/abi/extern/extern-pass-TwoU32s.rs diff --git a/src/test/ui/abi/extern/extern-pass-TwoU64s.rs b/tests/ui/abi/extern/extern-pass-TwoU64s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-TwoU64s.rs rename to tests/ui/abi/extern/extern-pass-TwoU64s.rs diff --git a/src/test/ui/abi/extern/extern-pass-TwoU8s.rs b/tests/ui/abi/extern/extern-pass-TwoU8s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-TwoU8s.rs rename to tests/ui/abi/extern/extern-pass-TwoU8s.rs diff --git a/src/test/ui/abi/extern/extern-pass-char.rs b/tests/ui/abi/extern/extern-pass-char.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-char.rs rename to tests/ui/abi/extern/extern-pass-char.rs diff --git a/src/test/ui/abi/extern/extern-pass-double.rs b/tests/ui/abi/extern/extern-pass-double.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-double.rs rename to tests/ui/abi/extern/extern-pass-double.rs diff --git a/src/test/ui/abi/extern/extern-pass-empty.rs b/tests/ui/abi/extern/extern-pass-empty.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-empty.rs rename to tests/ui/abi/extern/extern-pass-empty.rs diff --git a/src/test/ui/abi/extern/extern-pass-u32.rs b/tests/ui/abi/extern/extern-pass-u32.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-u32.rs rename to tests/ui/abi/extern/extern-pass-u32.rs diff --git a/src/test/ui/abi/extern/extern-pass-u64.rs b/tests/ui/abi/extern/extern-pass-u64.rs similarity index 100% rename from src/test/ui/abi/extern/extern-pass-u64.rs rename to tests/ui/abi/extern/extern-pass-u64.rs diff --git a/src/test/ui/abi/extern/extern-return-TwoU16s.rs b/tests/ui/abi/extern/extern-return-TwoU16s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-return-TwoU16s.rs rename to tests/ui/abi/extern/extern-return-TwoU16s.rs diff --git a/src/test/ui/abi/extern/extern-return-TwoU32s.rs b/tests/ui/abi/extern/extern-return-TwoU32s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-return-TwoU32s.rs rename to tests/ui/abi/extern/extern-return-TwoU32s.rs diff --git a/src/test/ui/abi/extern/extern-return-TwoU64s.rs b/tests/ui/abi/extern/extern-return-TwoU64s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-return-TwoU64s.rs rename to tests/ui/abi/extern/extern-return-TwoU64s.rs diff --git a/src/test/ui/abi/extern/extern-return-TwoU8s.rs b/tests/ui/abi/extern/extern-return-TwoU8s.rs similarity index 100% rename from src/test/ui/abi/extern/extern-return-TwoU8s.rs rename to tests/ui/abi/extern/extern-return-TwoU8s.rs diff --git a/src/test/ui/abi/foreign/auxiliary/foreign_lib.rs b/tests/ui/abi/foreign/auxiliary/foreign_lib.rs similarity index 100% rename from src/test/ui/abi/foreign/auxiliary/foreign_lib.rs rename to tests/ui/abi/foreign/auxiliary/foreign_lib.rs diff --git a/src/test/ui/abi/foreign/foreign-call-no-runtime.rs b/tests/ui/abi/foreign/foreign-call-no-runtime.rs similarity index 100% rename from src/test/ui/abi/foreign/foreign-call-no-runtime.rs rename to tests/ui/abi/foreign/foreign-call-no-runtime.rs diff --git a/src/test/ui/abi/foreign/foreign-dupe.rs b/tests/ui/abi/foreign/foreign-dupe.rs similarity index 100% rename from src/test/ui/abi/foreign/foreign-dupe.rs rename to tests/ui/abi/foreign/foreign-dupe.rs diff --git a/src/test/ui/abi/foreign/foreign-fn-with-byval.rs b/tests/ui/abi/foreign/foreign-fn-with-byval.rs similarity index 100% rename from src/test/ui/abi/foreign/foreign-fn-with-byval.rs rename to tests/ui/abi/foreign/foreign-fn-with-byval.rs diff --git a/src/test/ui/abi/foreign/foreign-no-abi.rs b/tests/ui/abi/foreign/foreign-no-abi.rs similarity index 100% rename from src/test/ui/abi/foreign/foreign-no-abi.rs rename to tests/ui/abi/foreign/foreign-no-abi.rs diff --git a/src/test/ui/abi/foreign/invoke-external-foreign.rs b/tests/ui/abi/foreign/invoke-external-foreign.rs similarity index 100% rename from src/test/ui/abi/foreign/invoke-external-foreign.rs rename to tests/ui/abi/foreign/invoke-external-foreign.rs diff --git a/src/test/ui/abi/homogenous-floats-target-feature-mixup.rs b/tests/ui/abi/homogenous-floats-target-feature-mixup.rs similarity index 100% rename from src/test/ui/abi/homogenous-floats-target-feature-mixup.rs rename to tests/ui/abi/homogenous-floats-target-feature-mixup.rs diff --git a/src/test/ui/abi/issue-28676.rs b/tests/ui/abi/issue-28676.rs similarity index 100% rename from src/test/ui/abi/issue-28676.rs rename to tests/ui/abi/issue-28676.rs diff --git a/src/test/ui/abi/issues/issue-22565-rust-call.rs b/tests/ui/abi/issues/issue-22565-rust-call.rs similarity index 100% rename from src/test/ui/abi/issues/issue-22565-rust-call.rs rename to tests/ui/abi/issues/issue-22565-rust-call.rs diff --git a/src/test/ui/abi/issues/issue-22565-rust-call.stderr b/tests/ui/abi/issues/issue-22565-rust-call.stderr similarity index 100% rename from src/test/ui/abi/issues/issue-22565-rust-call.stderr rename to tests/ui/abi/issues/issue-22565-rust-call.stderr diff --git a/src/test/ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs b/tests/ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs similarity index 100% rename from src/test/ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs rename to tests/ui/abi/issues/issue-62350-sysv-neg-reg-counts.rs diff --git a/src/test/ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs b/tests/ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs similarity index 100% rename from src/test/ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs rename to tests/ui/abi/issues/issue-97463-broken-abi-leaked-uninit-data.rs diff --git a/src/test/ui/abi/lib-defaults.rs b/tests/ui/abi/lib-defaults.rs similarity index 100% rename from src/test/ui/abi/lib-defaults.rs rename to tests/ui/abi/lib-defaults.rs diff --git a/src/test/ui/abi/mir/mir_codegen_calls_variadic.rs b/tests/ui/abi/mir/mir_codegen_calls_variadic.rs similarity index 100% rename from src/test/ui/abi/mir/mir_codegen_calls_variadic.rs rename to tests/ui/abi/mir/mir_codegen_calls_variadic.rs diff --git a/src/test/ui/abi/nullable-pointer-ffi-compat.rs b/tests/ui/abi/nullable-pointer-ffi-compat.rs similarity index 100% rename from src/test/ui/abi/nullable-pointer-ffi-compat.rs rename to tests/ui/abi/nullable-pointer-ffi-compat.rs diff --git a/src/test/ui/abi/numbers-arithmetic/i128-ffi.rs b/tests/ui/abi/numbers-arithmetic/i128-ffi.rs similarity index 100% rename from src/test/ui/abi/numbers-arithmetic/i128-ffi.rs rename to tests/ui/abi/numbers-arithmetic/i128-ffi.rs diff --git a/src/test/ui/abi/rustcall-generic.rs b/tests/ui/abi/rustcall-generic.rs similarity index 100% rename from src/test/ui/abi/rustcall-generic.rs rename to tests/ui/abi/rustcall-generic.rs diff --git a/src/test/ui/abi/segfault-no-out-of-stack.rs b/tests/ui/abi/segfault-no-out-of-stack.rs similarity index 100% rename from src/test/ui/abi/segfault-no-out-of-stack.rs rename to tests/ui/abi/segfault-no-out-of-stack.rs diff --git a/src/test/ui/abi/stack-probes-lto.rs b/tests/ui/abi/stack-probes-lto.rs similarity index 100% rename from src/test/ui/abi/stack-probes-lto.rs rename to tests/ui/abi/stack-probes-lto.rs diff --git a/src/test/ui/abi/stack-probes.rs b/tests/ui/abi/stack-probes.rs similarity index 100% rename from src/test/ui/abi/stack-probes.rs rename to tests/ui/abi/stack-probes.rs diff --git a/src/test/ui/abi/stack-protector.rs b/tests/ui/abi/stack-protector.rs similarity index 100% rename from src/test/ui/abi/stack-protector.rs rename to tests/ui/abi/stack-protector.rs diff --git a/src/test/ui/abi/statics/static-mut-foreign.rs b/tests/ui/abi/statics/static-mut-foreign.rs similarity index 100% rename from src/test/ui/abi/statics/static-mut-foreign.rs rename to tests/ui/abi/statics/static-mut-foreign.rs diff --git a/src/test/ui/abi/struct-enums/struct-return.rs b/tests/ui/abi/struct-enums/struct-return.rs similarity index 100% rename from src/test/ui/abi/struct-enums/struct-return.rs rename to tests/ui/abi/struct-enums/struct-return.rs diff --git a/src/test/ui/abi/union/union-c-interop.rs b/tests/ui/abi/union/union-c-interop.rs similarity index 100% rename from src/test/ui/abi/union/union-c-interop.rs rename to tests/ui/abi/union/union-c-interop.rs diff --git a/src/test/ui/abi/unsupported.aarch64.stderr b/tests/ui/abi/unsupported.aarch64.stderr similarity index 100% rename from src/test/ui/abi/unsupported.aarch64.stderr rename to tests/ui/abi/unsupported.aarch64.stderr diff --git a/src/test/ui/abi/unsupported.arm.stderr b/tests/ui/abi/unsupported.arm.stderr similarity index 100% rename from src/test/ui/abi/unsupported.arm.stderr rename to tests/ui/abi/unsupported.arm.stderr diff --git a/src/test/ui/abi/unsupported.i686.stderr b/tests/ui/abi/unsupported.i686.stderr similarity index 100% rename from src/test/ui/abi/unsupported.i686.stderr rename to tests/ui/abi/unsupported.i686.stderr diff --git a/src/test/ui/abi/unsupported.rs b/tests/ui/abi/unsupported.rs similarity index 100% rename from src/test/ui/abi/unsupported.rs rename to tests/ui/abi/unsupported.rs diff --git a/src/test/ui/abi/unsupported.x64.stderr b/tests/ui/abi/unsupported.x64.stderr similarity index 100% rename from src/test/ui/abi/unsupported.x64.stderr rename to tests/ui/abi/unsupported.x64.stderr diff --git a/src/test/ui/abi/variadic-ffi.rs b/tests/ui/abi/variadic-ffi.rs similarity index 100% rename from src/test/ui/abi/variadic-ffi.rs rename to tests/ui/abi/variadic-ffi.rs diff --git a/src/test/ui/abi/x86stdcall.rs b/tests/ui/abi/x86stdcall.rs similarity index 100% rename from src/test/ui/abi/x86stdcall.rs rename to tests/ui/abi/x86stdcall.rs diff --git a/src/test/ui/abi/x86stdcall2.rs b/tests/ui/abi/x86stdcall2.rs similarity index 100% rename from src/test/ui/abi/x86stdcall2.rs rename to tests/ui/abi/x86stdcall2.rs diff --git a/src/test/ui/alias-uninit-value.rs b/tests/ui/alias-uninit-value.rs similarity index 100% rename from src/test/ui/alias-uninit-value.rs rename to tests/ui/alias-uninit-value.rs diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs b/tests/ui/alloc-error/alloc-error-handler-bad-signature-1.rs similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-1.rs diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.stderr b/tests/ui/alloc-error/alloc-error-handler-bad-signature-1.stderr similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.stderr rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-1.stderr diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs b/tests/ui/alloc-error/alloc-error-handler-bad-signature-2.rs similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-2.rs diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.stderr b/tests/ui/alloc-error/alloc-error-handler-bad-signature-2.stderr similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.stderr rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-2.stderr diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs b/tests/ui/alloc-error/alloc-error-handler-bad-signature-3.rs similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-3.rs diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.stderr b/tests/ui/alloc-error/alloc-error-handler-bad-signature-3.stderr similarity index 100% rename from src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.stderr rename to tests/ui/alloc-error/alloc-error-handler-bad-signature-3.stderr diff --git a/src/test/ui/alloc-error/default-alloc-error-hook.rs b/tests/ui/alloc-error/default-alloc-error-hook.rs similarity index 100% rename from src/test/ui/alloc-error/default-alloc-error-hook.rs rename to tests/ui/alloc-error/default-alloc-error-hook.rs diff --git a/src/test/ui/allocator/allocator-args.rs b/tests/ui/allocator/allocator-args.rs similarity index 100% rename from src/test/ui/allocator/allocator-args.rs rename to tests/ui/allocator/allocator-args.rs diff --git a/src/test/ui/allocator/allocator-args.stderr b/tests/ui/allocator/allocator-args.stderr similarity index 100% rename from src/test/ui/allocator/allocator-args.stderr rename to tests/ui/allocator/allocator-args.stderr diff --git a/src/test/ui/allocator/auxiliary/custom-as-global.rs b/tests/ui/allocator/auxiliary/custom-as-global.rs similarity index 100% rename from src/test/ui/allocator/auxiliary/custom-as-global.rs rename to tests/ui/allocator/auxiliary/custom-as-global.rs diff --git a/src/test/ui/allocator/auxiliary/custom.rs b/tests/ui/allocator/auxiliary/custom.rs similarity index 100% rename from src/test/ui/allocator/auxiliary/custom.rs rename to tests/ui/allocator/auxiliary/custom.rs diff --git a/src/test/ui/allocator/auxiliary/helper.rs b/tests/ui/allocator/auxiliary/helper.rs similarity index 100% rename from src/test/ui/allocator/auxiliary/helper.rs rename to tests/ui/allocator/auxiliary/helper.rs diff --git a/src/test/ui/allocator/auxiliary/system-allocator.rs b/tests/ui/allocator/auxiliary/system-allocator.rs similarity index 100% rename from src/test/ui/allocator/auxiliary/system-allocator.rs rename to tests/ui/allocator/auxiliary/system-allocator.rs diff --git a/src/test/ui/allocator/auxiliary/system-allocator2.rs b/tests/ui/allocator/auxiliary/system-allocator2.rs similarity index 100% rename from src/test/ui/allocator/auxiliary/system-allocator2.rs rename to tests/ui/allocator/auxiliary/system-allocator2.rs diff --git a/src/test/ui/allocator/custom-in-block.rs b/tests/ui/allocator/custom-in-block.rs similarity index 100% rename from src/test/ui/allocator/custom-in-block.rs rename to tests/ui/allocator/custom-in-block.rs diff --git a/src/test/ui/allocator/custom-in-submodule.rs b/tests/ui/allocator/custom-in-submodule.rs similarity index 100% rename from src/test/ui/allocator/custom-in-submodule.rs rename to tests/ui/allocator/custom-in-submodule.rs diff --git a/src/test/ui/allocator/custom.rs b/tests/ui/allocator/custom.rs similarity index 100% rename from src/test/ui/allocator/custom.rs rename to tests/ui/allocator/custom.rs diff --git a/src/test/ui/allocator/function-allocator.rs b/tests/ui/allocator/function-allocator.rs similarity index 100% rename from src/test/ui/allocator/function-allocator.rs rename to tests/ui/allocator/function-allocator.rs diff --git a/src/test/ui/allocator/function-allocator.stderr b/tests/ui/allocator/function-allocator.stderr similarity index 100% rename from src/test/ui/allocator/function-allocator.stderr rename to tests/ui/allocator/function-allocator.stderr diff --git a/src/test/ui/allocator/hygiene.rs b/tests/ui/allocator/hygiene.rs similarity index 100% rename from src/test/ui/allocator/hygiene.rs rename to tests/ui/allocator/hygiene.rs diff --git a/src/test/ui/allocator/no_std-alloc-error-handler-custom.rs b/tests/ui/allocator/no_std-alloc-error-handler-custom.rs similarity index 100% rename from src/test/ui/allocator/no_std-alloc-error-handler-custom.rs rename to tests/ui/allocator/no_std-alloc-error-handler-custom.rs diff --git a/src/test/ui/allocator/no_std-alloc-error-handler-default.rs b/tests/ui/allocator/no_std-alloc-error-handler-default.rs similarity index 100% rename from src/test/ui/allocator/no_std-alloc-error-handler-default.rs rename to tests/ui/allocator/no_std-alloc-error-handler-default.rs diff --git a/src/test/ui/allocator/not-an-allocator.rs b/tests/ui/allocator/not-an-allocator.rs similarity index 100% rename from src/test/ui/allocator/not-an-allocator.rs rename to tests/ui/allocator/not-an-allocator.rs diff --git a/src/test/ui/allocator/not-an-allocator.stderr b/tests/ui/allocator/not-an-allocator.stderr similarity index 100% rename from src/test/ui/allocator/not-an-allocator.stderr rename to tests/ui/allocator/not-an-allocator.stderr diff --git a/src/test/ui/allocator/object-safe.rs b/tests/ui/allocator/object-safe.rs similarity index 100% rename from src/test/ui/allocator/object-safe.rs rename to tests/ui/allocator/object-safe.rs diff --git a/src/test/ui/allocator/two-allocators.rs b/tests/ui/allocator/two-allocators.rs similarity index 100% rename from src/test/ui/allocator/two-allocators.rs rename to tests/ui/allocator/two-allocators.rs diff --git a/src/test/ui/allocator/two-allocators.stderr b/tests/ui/allocator/two-allocators.stderr similarity index 100% rename from src/test/ui/allocator/two-allocators.stderr rename to tests/ui/allocator/two-allocators.stderr diff --git a/src/test/ui/allocator/two-allocators2.rs b/tests/ui/allocator/two-allocators2.rs similarity index 100% rename from src/test/ui/allocator/two-allocators2.rs rename to tests/ui/allocator/two-allocators2.rs diff --git a/src/test/ui/allocator/two-allocators2.stderr b/tests/ui/allocator/two-allocators2.stderr similarity index 100% rename from src/test/ui/allocator/two-allocators2.stderr rename to tests/ui/allocator/two-allocators2.stderr diff --git a/src/test/ui/allocator/two-allocators3.rs b/tests/ui/allocator/two-allocators3.rs similarity index 100% rename from src/test/ui/allocator/two-allocators3.rs rename to tests/ui/allocator/two-allocators3.rs diff --git a/src/test/ui/allocator/two-allocators3.stderr b/tests/ui/allocator/two-allocators3.stderr similarity index 100% rename from src/test/ui/allocator/two-allocators3.stderr rename to tests/ui/allocator/two-allocators3.stderr diff --git a/src/test/ui/allocator/xcrate-use.rs b/tests/ui/allocator/xcrate-use.rs similarity index 100% rename from src/test/ui/allocator/xcrate-use.rs rename to tests/ui/allocator/xcrate-use.rs diff --git a/src/test/ui/allocator/xcrate-use2.rs b/tests/ui/allocator/xcrate-use2.rs similarity index 100% rename from src/test/ui/allocator/xcrate-use2.rs rename to tests/ui/allocator/xcrate-use2.rs diff --git a/src/test/ui/annotate-snippet/auxiliary/multispan.rs b/tests/ui/annotate-snippet/auxiliary/multispan.rs similarity index 100% rename from src/test/ui/annotate-snippet/auxiliary/multispan.rs rename to tests/ui/annotate-snippet/auxiliary/multispan.rs diff --git a/src/test/ui/annotate-snippet/missing-type.rs b/tests/ui/annotate-snippet/missing-type.rs similarity index 100% rename from src/test/ui/annotate-snippet/missing-type.rs rename to tests/ui/annotate-snippet/missing-type.rs diff --git a/src/test/ui/annotate-snippet/missing-type.stderr b/tests/ui/annotate-snippet/missing-type.stderr similarity index 100% rename from src/test/ui/annotate-snippet/missing-type.stderr rename to tests/ui/annotate-snippet/missing-type.stderr diff --git a/src/test/ui/annotate-snippet/multispan.rs b/tests/ui/annotate-snippet/multispan.rs similarity index 100% rename from src/test/ui/annotate-snippet/multispan.rs rename to tests/ui/annotate-snippet/multispan.rs diff --git a/src/test/ui/annotate-snippet/multispan.stderr b/tests/ui/annotate-snippet/multispan.stderr similarity index 100% rename from src/test/ui/annotate-snippet/multispan.stderr rename to tests/ui/annotate-snippet/multispan.stderr diff --git a/src/test/ui/anon-params/anon-params-denied-2018.rs b/tests/ui/anon-params/anon-params-denied-2018.rs similarity index 100% rename from src/test/ui/anon-params/anon-params-denied-2018.rs rename to tests/ui/anon-params/anon-params-denied-2018.rs diff --git a/src/test/ui/anon-params/anon-params-denied-2018.stderr b/tests/ui/anon-params/anon-params-denied-2018.stderr similarity index 100% rename from src/test/ui/anon-params/anon-params-denied-2018.stderr rename to tests/ui/anon-params/anon-params-denied-2018.stderr diff --git a/src/test/ui/anon-params/anon-params-deprecated.fixed b/tests/ui/anon-params/anon-params-deprecated.fixed similarity index 100% rename from src/test/ui/anon-params/anon-params-deprecated.fixed rename to tests/ui/anon-params/anon-params-deprecated.fixed diff --git a/src/test/ui/anon-params/anon-params-deprecated.rs b/tests/ui/anon-params/anon-params-deprecated.rs similarity index 100% rename from src/test/ui/anon-params/anon-params-deprecated.rs rename to tests/ui/anon-params/anon-params-deprecated.rs diff --git a/src/test/ui/anon-params/anon-params-deprecated.stderr b/tests/ui/anon-params/anon-params-deprecated.stderr similarity index 100% rename from src/test/ui/anon-params/anon-params-deprecated.stderr rename to tests/ui/anon-params/anon-params-deprecated.stderr diff --git a/src/test/ui/anon-params/anon-params-edition-hygiene.rs b/tests/ui/anon-params/anon-params-edition-hygiene.rs similarity index 100% rename from src/test/ui/anon-params/anon-params-edition-hygiene.rs rename to tests/ui/anon-params/anon-params-edition-hygiene.rs diff --git a/src/test/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs b/tests/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs similarity index 100% rename from src/test/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs rename to tests/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs diff --git a/src/test/ui/anonymous-higher-ranked-lifetime.rs b/tests/ui/anonymous-higher-ranked-lifetime.rs similarity index 100% rename from src/test/ui/anonymous-higher-ranked-lifetime.rs rename to tests/ui/anonymous-higher-ranked-lifetime.rs diff --git a/src/test/ui/anonymous-higher-ranked-lifetime.stderr b/tests/ui/anonymous-higher-ranked-lifetime.stderr similarity index 100% rename from src/test/ui/anonymous-higher-ranked-lifetime.stderr rename to tests/ui/anonymous-higher-ranked-lifetime.stderr diff --git a/src/test/ui/argument-suggestions/basic.rs b/tests/ui/argument-suggestions/basic.rs similarity index 100% rename from src/test/ui/argument-suggestions/basic.rs rename to tests/ui/argument-suggestions/basic.rs diff --git a/src/test/ui/argument-suggestions/basic.stderr b/tests/ui/argument-suggestions/basic.stderr similarity index 100% rename from src/test/ui/argument-suggestions/basic.stderr rename to tests/ui/argument-suggestions/basic.stderr diff --git a/src/test/ui/argument-suggestions/complex.rs b/tests/ui/argument-suggestions/complex.rs similarity index 100% rename from src/test/ui/argument-suggestions/complex.rs rename to tests/ui/argument-suggestions/complex.rs diff --git a/src/test/ui/argument-suggestions/complex.stderr b/tests/ui/argument-suggestions/complex.stderr similarity index 100% rename from src/test/ui/argument-suggestions/complex.stderr rename to tests/ui/argument-suggestions/complex.stderr diff --git a/src/test/ui/argument-suggestions/display-is-suggestable.rs b/tests/ui/argument-suggestions/display-is-suggestable.rs similarity index 100% rename from src/test/ui/argument-suggestions/display-is-suggestable.rs rename to tests/ui/argument-suggestions/display-is-suggestable.rs diff --git a/src/test/ui/argument-suggestions/display-is-suggestable.stderr b/tests/ui/argument-suggestions/display-is-suggestable.stderr similarity index 100% rename from src/test/ui/argument-suggestions/display-is-suggestable.stderr rename to tests/ui/argument-suggestions/display-is-suggestable.stderr diff --git a/src/test/ui/argument-suggestions/exotic-calls.rs b/tests/ui/argument-suggestions/exotic-calls.rs similarity index 100% rename from src/test/ui/argument-suggestions/exotic-calls.rs rename to tests/ui/argument-suggestions/exotic-calls.rs diff --git a/src/test/ui/argument-suggestions/exotic-calls.stderr b/tests/ui/argument-suggestions/exotic-calls.stderr similarity index 100% rename from src/test/ui/argument-suggestions/exotic-calls.stderr rename to tests/ui/argument-suggestions/exotic-calls.stderr diff --git a/src/test/ui/argument-suggestions/extern-fn-arg-names.rs b/tests/ui/argument-suggestions/extern-fn-arg-names.rs similarity index 100% rename from src/test/ui/argument-suggestions/extern-fn-arg-names.rs rename to tests/ui/argument-suggestions/extern-fn-arg-names.rs diff --git a/src/test/ui/argument-suggestions/extern-fn-arg-names.stderr b/tests/ui/argument-suggestions/extern-fn-arg-names.stderr similarity index 100% rename from src/test/ui/argument-suggestions/extern-fn-arg-names.stderr rename to tests/ui/argument-suggestions/extern-fn-arg-names.stderr diff --git a/src/test/ui/argument-suggestions/extra_arguments.rs b/tests/ui/argument-suggestions/extra_arguments.rs similarity index 100% rename from src/test/ui/argument-suggestions/extra_arguments.rs rename to tests/ui/argument-suggestions/extra_arguments.rs diff --git a/src/test/ui/argument-suggestions/extra_arguments.stderr b/tests/ui/argument-suggestions/extra_arguments.stderr similarity index 100% rename from src/test/ui/argument-suggestions/extra_arguments.stderr rename to tests/ui/argument-suggestions/extra_arguments.stderr diff --git a/src/test/ui/argument-suggestions/formal-and-expected-differ.rs b/tests/ui/argument-suggestions/formal-and-expected-differ.rs similarity index 100% rename from src/test/ui/argument-suggestions/formal-and-expected-differ.rs rename to tests/ui/argument-suggestions/formal-and-expected-differ.rs diff --git a/src/test/ui/argument-suggestions/formal-and-expected-differ.stderr b/tests/ui/argument-suggestions/formal-and-expected-differ.stderr similarity index 100% rename from src/test/ui/argument-suggestions/formal-and-expected-differ.stderr rename to tests/ui/argument-suggestions/formal-and-expected-differ.stderr diff --git a/src/test/ui/argument-suggestions/invalid_arguments.rs b/tests/ui/argument-suggestions/invalid_arguments.rs similarity index 100% rename from src/test/ui/argument-suggestions/invalid_arguments.rs rename to tests/ui/argument-suggestions/invalid_arguments.rs diff --git a/src/test/ui/argument-suggestions/invalid_arguments.stderr b/tests/ui/argument-suggestions/invalid_arguments.stderr similarity index 100% rename from src/test/ui/argument-suggestions/invalid_arguments.stderr rename to tests/ui/argument-suggestions/invalid_arguments.stderr diff --git a/src/test/ui/argument-suggestions/issue-100154.rs b/tests/ui/argument-suggestions/issue-100154.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-100154.rs rename to tests/ui/argument-suggestions/issue-100154.rs diff --git a/src/test/ui/argument-suggestions/issue-100154.stderr b/tests/ui/argument-suggestions/issue-100154.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-100154.stderr rename to tests/ui/argument-suggestions/issue-100154.stderr diff --git a/src/test/ui/argument-suggestions/issue-100478.rs b/tests/ui/argument-suggestions/issue-100478.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-100478.rs rename to tests/ui/argument-suggestions/issue-100478.rs diff --git a/src/test/ui/argument-suggestions/issue-100478.stderr b/tests/ui/argument-suggestions/issue-100478.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-100478.stderr rename to tests/ui/argument-suggestions/issue-100478.stderr diff --git a/src/test/ui/argument-suggestions/issue-101097.rs b/tests/ui/argument-suggestions/issue-101097.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-101097.rs rename to tests/ui/argument-suggestions/issue-101097.rs diff --git a/src/test/ui/argument-suggestions/issue-101097.stderr b/tests/ui/argument-suggestions/issue-101097.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-101097.stderr rename to tests/ui/argument-suggestions/issue-101097.stderr diff --git a/src/test/ui/argument-suggestions/issue-96638.rs b/tests/ui/argument-suggestions/issue-96638.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-96638.rs rename to tests/ui/argument-suggestions/issue-96638.rs diff --git a/src/test/ui/argument-suggestions/issue-96638.stderr b/tests/ui/argument-suggestions/issue-96638.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-96638.stderr rename to tests/ui/argument-suggestions/issue-96638.stderr diff --git a/src/test/ui/argument-suggestions/issue-97197.rs b/tests/ui/argument-suggestions/issue-97197.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-97197.rs rename to tests/ui/argument-suggestions/issue-97197.rs diff --git a/src/test/ui/argument-suggestions/issue-97197.stderr b/tests/ui/argument-suggestions/issue-97197.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-97197.stderr rename to tests/ui/argument-suggestions/issue-97197.stderr diff --git a/src/test/ui/argument-suggestions/issue-97484.rs b/tests/ui/argument-suggestions/issue-97484.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-97484.rs rename to tests/ui/argument-suggestions/issue-97484.rs diff --git a/src/test/ui/argument-suggestions/issue-97484.stderr b/tests/ui/argument-suggestions/issue-97484.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-97484.stderr rename to tests/ui/argument-suggestions/issue-97484.stderr diff --git a/src/test/ui/argument-suggestions/issue-98894.rs b/tests/ui/argument-suggestions/issue-98894.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-98894.rs rename to tests/ui/argument-suggestions/issue-98894.rs diff --git a/src/test/ui/argument-suggestions/issue-98894.stderr b/tests/ui/argument-suggestions/issue-98894.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-98894.stderr rename to tests/ui/argument-suggestions/issue-98894.stderr diff --git a/src/test/ui/argument-suggestions/issue-98897.rs b/tests/ui/argument-suggestions/issue-98897.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-98897.rs rename to tests/ui/argument-suggestions/issue-98897.rs diff --git a/src/test/ui/argument-suggestions/issue-98897.stderr b/tests/ui/argument-suggestions/issue-98897.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-98897.stderr rename to tests/ui/argument-suggestions/issue-98897.stderr diff --git a/src/test/ui/argument-suggestions/issue-99482.rs b/tests/ui/argument-suggestions/issue-99482.rs similarity index 100% rename from src/test/ui/argument-suggestions/issue-99482.rs rename to tests/ui/argument-suggestions/issue-99482.rs diff --git a/src/test/ui/argument-suggestions/issue-99482.stderr b/tests/ui/argument-suggestions/issue-99482.stderr similarity index 100% rename from src/test/ui/argument-suggestions/issue-99482.stderr rename to tests/ui/argument-suggestions/issue-99482.stderr diff --git a/src/test/ui/argument-suggestions/missing_arguments.rs b/tests/ui/argument-suggestions/missing_arguments.rs similarity index 100% rename from src/test/ui/argument-suggestions/missing_arguments.rs rename to tests/ui/argument-suggestions/missing_arguments.rs diff --git a/src/test/ui/argument-suggestions/missing_arguments.stderr b/tests/ui/argument-suggestions/missing_arguments.stderr similarity index 100% rename from src/test/ui/argument-suggestions/missing_arguments.stderr rename to tests/ui/argument-suggestions/missing_arguments.stderr diff --git a/src/test/ui/argument-suggestions/mixed_cases.rs b/tests/ui/argument-suggestions/mixed_cases.rs similarity index 100% rename from src/test/ui/argument-suggestions/mixed_cases.rs rename to tests/ui/argument-suggestions/mixed_cases.rs diff --git a/src/test/ui/argument-suggestions/mixed_cases.stderr b/tests/ui/argument-suggestions/mixed_cases.stderr similarity index 100% rename from src/test/ui/argument-suggestions/mixed_cases.stderr rename to tests/ui/argument-suggestions/mixed_cases.stderr diff --git a/src/test/ui/argument-suggestions/permuted_arguments.rs b/tests/ui/argument-suggestions/permuted_arguments.rs similarity index 100% rename from src/test/ui/argument-suggestions/permuted_arguments.rs rename to tests/ui/argument-suggestions/permuted_arguments.rs diff --git a/src/test/ui/argument-suggestions/permuted_arguments.stderr b/tests/ui/argument-suggestions/permuted_arguments.stderr similarity index 100% rename from src/test/ui/argument-suggestions/permuted_arguments.stderr rename to tests/ui/argument-suggestions/permuted_arguments.stderr diff --git a/src/test/ui/argument-suggestions/swapped_arguments.rs b/tests/ui/argument-suggestions/swapped_arguments.rs similarity index 100% rename from src/test/ui/argument-suggestions/swapped_arguments.rs rename to tests/ui/argument-suggestions/swapped_arguments.rs diff --git a/src/test/ui/argument-suggestions/swapped_arguments.stderr b/tests/ui/argument-suggestions/swapped_arguments.stderr similarity index 100% rename from src/test/ui/argument-suggestions/swapped_arguments.stderr rename to tests/ui/argument-suggestions/swapped_arguments.stderr diff --git a/src/test/ui/argument-suggestions/too-long.rs b/tests/ui/argument-suggestions/too-long.rs similarity index 100% rename from src/test/ui/argument-suggestions/too-long.rs rename to tests/ui/argument-suggestions/too-long.rs diff --git a/src/test/ui/argument-suggestions/too-long.stderr b/tests/ui/argument-suggestions/too-long.stderr similarity index 100% rename from src/test/ui/argument-suggestions/too-long.stderr rename to tests/ui/argument-suggestions/too-long.stderr diff --git a/src/test/ui/argument-suggestions/two-mismatch-notes.rs b/tests/ui/argument-suggestions/two-mismatch-notes.rs similarity index 100% rename from src/test/ui/argument-suggestions/two-mismatch-notes.rs rename to tests/ui/argument-suggestions/two-mismatch-notes.rs diff --git a/src/test/ui/argument-suggestions/two-mismatch-notes.stderr b/tests/ui/argument-suggestions/two-mismatch-notes.stderr similarity index 100% rename from src/test/ui/argument-suggestions/two-mismatch-notes.stderr rename to tests/ui/argument-suggestions/two-mismatch-notes.stderr diff --git a/src/test/ui/array-slice-vec/array-break-length.rs b/tests/ui/array-slice-vec/array-break-length.rs similarity index 100% rename from src/test/ui/array-slice-vec/array-break-length.rs rename to tests/ui/array-slice-vec/array-break-length.rs diff --git a/src/test/ui/array-slice-vec/array-break-length.stderr b/tests/ui/array-slice-vec/array-break-length.stderr similarity index 100% rename from src/test/ui/array-slice-vec/array-break-length.stderr rename to tests/ui/array-slice-vec/array-break-length.stderr diff --git a/src/test/ui/array-slice-vec/array-not-vector.rs b/tests/ui/array-slice-vec/array-not-vector.rs similarity index 100% rename from src/test/ui/array-slice-vec/array-not-vector.rs rename to tests/ui/array-slice-vec/array-not-vector.rs diff --git a/src/test/ui/array-slice-vec/array-not-vector.stderr b/tests/ui/array-slice-vec/array-not-vector.stderr similarity index 100% rename from src/test/ui/array-slice-vec/array-not-vector.stderr rename to tests/ui/array-slice-vec/array-not-vector.stderr diff --git a/src/test/ui/array-slice-vec/array_const_index-0.rs b/tests/ui/array-slice-vec/array_const_index-0.rs similarity index 100% rename from src/test/ui/array-slice-vec/array_const_index-0.rs rename to tests/ui/array-slice-vec/array_const_index-0.rs diff --git a/src/test/ui/array-slice-vec/array_const_index-0.stderr b/tests/ui/array-slice-vec/array_const_index-0.stderr similarity index 100% rename from src/test/ui/array-slice-vec/array_const_index-0.stderr rename to tests/ui/array-slice-vec/array_const_index-0.stderr diff --git a/src/test/ui/array-slice-vec/array_const_index-1.rs b/tests/ui/array-slice-vec/array_const_index-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/array_const_index-1.rs rename to tests/ui/array-slice-vec/array_const_index-1.rs diff --git a/src/test/ui/array-slice-vec/array_const_index-1.stderr b/tests/ui/array-slice-vec/array_const_index-1.stderr similarity index 100% rename from src/test/ui/array-slice-vec/array_const_index-1.stderr rename to tests/ui/array-slice-vec/array_const_index-1.stderr diff --git a/src/test/ui/array-slice-vec/array_const_index-2.rs b/tests/ui/array-slice-vec/array_const_index-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/array_const_index-2.rs rename to tests/ui/array-slice-vec/array_const_index-2.rs diff --git a/src/test/ui/array-slice-vec/bounds-check-no-overflow.rs b/tests/ui/array-slice-vec/bounds-check-no-overflow.rs similarity index 100% rename from src/test/ui/array-slice-vec/bounds-check-no-overflow.rs rename to tests/ui/array-slice-vec/bounds-check-no-overflow.rs diff --git a/src/test/ui/array-slice-vec/box-of-array-of-drop-1.rs b/tests/ui/array-slice-vec/box-of-array-of-drop-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/box-of-array-of-drop-1.rs rename to tests/ui/array-slice-vec/box-of-array-of-drop-1.rs diff --git a/src/test/ui/array-slice-vec/box-of-array-of-drop-2.rs b/tests/ui/array-slice-vec/box-of-array-of-drop-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/box-of-array-of-drop-2.rs rename to tests/ui/array-slice-vec/box-of-array-of-drop-2.rs diff --git a/src/test/ui/array-slice-vec/byte-literals.rs b/tests/ui/array-slice-vec/byte-literals.rs similarity index 100% rename from src/test/ui/array-slice-vec/byte-literals.rs rename to tests/ui/array-slice-vec/byte-literals.rs diff --git a/src/test/ui/array-slice-vec/cast-in-array-size.rs b/tests/ui/array-slice-vec/cast-in-array-size.rs similarity index 100% rename from src/test/ui/array-slice-vec/cast-in-array-size.rs rename to tests/ui/array-slice-vec/cast-in-array-size.rs diff --git a/src/test/ui/array-slice-vec/check-static-mut-slices.rs b/tests/ui/array-slice-vec/check-static-mut-slices.rs similarity index 100% rename from src/test/ui/array-slice-vec/check-static-mut-slices.rs rename to tests/ui/array-slice-vec/check-static-mut-slices.rs diff --git a/src/test/ui/array-slice-vec/check-static-slice.rs b/tests/ui/array-slice-vec/check-static-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/check-static-slice.rs rename to tests/ui/array-slice-vec/check-static-slice.rs diff --git a/src/test/ui/array-slice-vec/copy-out-of-array-1.rs b/tests/ui/array-slice-vec/copy-out-of-array-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/copy-out-of-array-1.rs rename to tests/ui/array-slice-vec/copy-out-of-array-1.rs diff --git a/src/test/ui/array-slice-vec/destructure-array-1.rs b/tests/ui/array-slice-vec/destructure-array-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/destructure-array-1.rs rename to tests/ui/array-slice-vec/destructure-array-1.rs diff --git a/src/test/ui/array-slice-vec/dst-raw-slice.rs b/tests/ui/array-slice-vec/dst-raw-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/dst-raw-slice.rs rename to tests/ui/array-slice-vec/dst-raw-slice.rs diff --git a/src/test/ui/array-slice-vec/empty-mutable-vec.rs b/tests/ui/array-slice-vec/empty-mutable-vec.rs similarity index 100% rename from src/test/ui/array-slice-vec/empty-mutable-vec.rs rename to tests/ui/array-slice-vec/empty-mutable-vec.rs diff --git a/src/test/ui/array-slice-vec/estr-slice.rs b/tests/ui/array-slice-vec/estr-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/estr-slice.rs rename to tests/ui/array-slice-vec/estr-slice.rs diff --git a/src/test/ui/array-slice-vec/evec-slice.rs b/tests/ui/array-slice-vec/evec-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/evec-slice.rs rename to tests/ui/array-slice-vec/evec-slice.rs diff --git a/src/test/ui/array-slice-vec/fixed_length_copy.rs b/tests/ui/array-slice-vec/fixed_length_copy.rs similarity index 100% rename from src/test/ui/array-slice-vec/fixed_length_copy.rs rename to tests/ui/array-slice-vec/fixed_length_copy.rs diff --git a/src/test/ui/array-slice-vec/huge-largest-array.rs b/tests/ui/array-slice-vec/huge-largest-array.rs similarity index 100% rename from src/test/ui/array-slice-vec/huge-largest-array.rs rename to tests/ui/array-slice-vec/huge-largest-array.rs diff --git a/src/test/ui/array-slice-vec/infer_array_len.rs b/tests/ui/array-slice-vec/infer_array_len.rs similarity index 100% rename from src/test/ui/array-slice-vec/infer_array_len.rs rename to tests/ui/array-slice-vec/infer_array_len.rs diff --git a/src/test/ui/array-slice-vec/infer_array_len.stderr b/tests/ui/array-slice-vec/infer_array_len.stderr similarity index 100% rename from src/test/ui/array-slice-vec/infer_array_len.stderr rename to tests/ui/array-slice-vec/infer_array_len.stderr diff --git a/src/test/ui/array-slice-vec/issue-15730.rs b/tests/ui/array-slice-vec/issue-15730.rs similarity index 100% rename from src/test/ui/array-slice-vec/issue-15730.rs rename to tests/ui/array-slice-vec/issue-15730.rs diff --git a/src/test/ui/array-slice-vec/issue-18425.rs b/tests/ui/array-slice-vec/issue-18425.rs similarity index 100% rename from src/test/ui/array-slice-vec/issue-18425.rs rename to tests/ui/array-slice-vec/issue-18425.rs diff --git a/src/test/ui/array-slice-vec/issue-69103-extra-binding-subslice.rs b/tests/ui/array-slice-vec/issue-69103-extra-binding-subslice.rs similarity index 100% rename from src/test/ui/array-slice-vec/issue-69103-extra-binding-subslice.rs rename to tests/ui/array-slice-vec/issue-69103-extra-binding-subslice.rs diff --git a/src/test/ui/array-slice-vec/issue-69103-extra-binding-subslice.stderr b/tests/ui/array-slice-vec/issue-69103-extra-binding-subslice.stderr similarity index 100% rename from src/test/ui/array-slice-vec/issue-69103-extra-binding-subslice.stderr rename to tests/ui/array-slice-vec/issue-69103-extra-binding-subslice.stderr diff --git a/src/test/ui/array-slice-vec/ivec-pass-by-value.rs b/tests/ui/array-slice-vec/ivec-pass-by-value.rs similarity index 100% rename from src/test/ui/array-slice-vec/ivec-pass-by-value.rs rename to tests/ui/array-slice-vec/ivec-pass-by-value.rs diff --git a/src/test/ui/array-slice-vec/match_arr_unknown_len.rs b/tests/ui/array-slice-vec/match_arr_unknown_len.rs similarity index 100% rename from src/test/ui/array-slice-vec/match_arr_unknown_len.rs rename to tests/ui/array-slice-vec/match_arr_unknown_len.rs diff --git a/src/test/ui/array-slice-vec/match_arr_unknown_len.stderr b/tests/ui/array-slice-vec/match_arr_unknown_len.stderr similarity index 100% rename from src/test/ui/array-slice-vec/match_arr_unknown_len.stderr rename to tests/ui/array-slice-vec/match_arr_unknown_len.stderr diff --git a/src/test/ui/array-slice-vec/mut-vstore-expr.rs b/tests/ui/array-slice-vec/mut-vstore-expr.rs similarity index 100% rename from src/test/ui/array-slice-vec/mut-vstore-expr.rs rename to tests/ui/array-slice-vec/mut-vstore-expr.rs diff --git a/src/test/ui/array-slice-vec/mutability-inherits-through-fixed-length-vec.rs b/tests/ui/array-slice-vec/mutability-inherits-through-fixed-length-vec.rs similarity index 100% rename from src/test/ui/array-slice-vec/mutability-inherits-through-fixed-length-vec.rs rename to tests/ui/array-slice-vec/mutability-inherits-through-fixed-length-vec.rs diff --git a/src/test/ui/array-slice-vec/mutable-alias-vec.rs b/tests/ui/array-slice-vec/mutable-alias-vec.rs similarity index 100% rename from src/test/ui/array-slice-vec/mutable-alias-vec.rs rename to tests/ui/array-slice-vec/mutable-alias-vec.rs diff --git a/src/test/ui/array-slice-vec/nested-vec-1.rs b/tests/ui/array-slice-vec/nested-vec-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/nested-vec-1.rs rename to tests/ui/array-slice-vec/nested-vec-1.rs diff --git a/src/test/ui/array-slice-vec/nested-vec-2.rs b/tests/ui/array-slice-vec/nested-vec-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/nested-vec-2.rs rename to tests/ui/array-slice-vec/nested-vec-2.rs diff --git a/src/test/ui/array-slice-vec/nested-vec-3.rs b/tests/ui/array-slice-vec/nested-vec-3.rs similarity index 100% rename from src/test/ui/array-slice-vec/nested-vec-3.rs rename to tests/ui/array-slice-vec/nested-vec-3.rs diff --git a/src/test/ui/array-slice-vec/new-style-fixed-length-vec.rs b/tests/ui/array-slice-vec/new-style-fixed-length-vec.rs similarity index 100% rename from src/test/ui/array-slice-vec/new-style-fixed-length-vec.rs rename to tests/ui/array-slice-vec/new-style-fixed-length-vec.rs diff --git a/src/test/ui/array-slice-vec/rcvr-borrowed-to-slice.rs b/tests/ui/array-slice-vec/rcvr-borrowed-to-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/rcvr-borrowed-to-slice.rs rename to tests/ui/array-slice-vec/rcvr-borrowed-to-slice.rs diff --git a/src/test/ui/array-slice-vec/repeat_empty_ok.rs b/tests/ui/array-slice-vec/repeat_empty_ok.rs similarity index 100% rename from src/test/ui/array-slice-vec/repeat_empty_ok.rs rename to tests/ui/array-slice-vec/repeat_empty_ok.rs diff --git a/src/test/ui/array-slice-vec/repeat_empty_ok.stderr b/tests/ui/array-slice-vec/repeat_empty_ok.stderr similarity index 100% rename from src/test/ui/array-slice-vec/repeat_empty_ok.stderr rename to tests/ui/array-slice-vec/repeat_empty_ok.stderr diff --git a/src/test/ui/array-slice-vec/repeated-vector-syntax.rs b/tests/ui/array-slice-vec/repeated-vector-syntax.rs similarity index 100% rename from src/test/ui/array-slice-vec/repeated-vector-syntax.rs rename to tests/ui/array-slice-vec/repeated-vector-syntax.rs diff --git a/src/test/ui/array-slice-vec/show-boxed-slice.rs b/tests/ui/array-slice-vec/show-boxed-slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/show-boxed-slice.rs rename to tests/ui/array-slice-vec/show-boxed-slice.rs diff --git a/src/test/ui/array-slice-vec/slice-2.rs b/tests/ui/array-slice-vec/slice-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-2.rs rename to tests/ui/array-slice-vec/slice-2.rs diff --git a/src/test/ui/array-slice-vec/slice-2.stderr b/tests/ui/array-slice-vec/slice-2.stderr similarity index 100% rename from src/test/ui/array-slice-vec/slice-2.stderr rename to tests/ui/array-slice-vec/slice-2.stderr diff --git a/src/test/ui/array-slice-vec/slice-mut-2.rs b/tests/ui/array-slice-vec/slice-mut-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-mut-2.rs rename to tests/ui/array-slice-vec/slice-mut-2.rs diff --git a/src/test/ui/array-slice-vec/slice-mut-2.stderr b/tests/ui/array-slice-vec/slice-mut-2.stderr similarity index 100% rename from src/test/ui/array-slice-vec/slice-mut-2.stderr rename to tests/ui/array-slice-vec/slice-mut-2.stderr diff --git a/src/test/ui/array-slice-vec/slice-mut.rs b/tests/ui/array-slice-vec/slice-mut.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-mut.rs rename to tests/ui/array-slice-vec/slice-mut.rs diff --git a/src/test/ui/array-slice-vec/slice-mut.stderr b/tests/ui/array-slice-vec/slice-mut.stderr similarity index 100% rename from src/test/ui/array-slice-vec/slice-mut.stderr rename to tests/ui/array-slice-vec/slice-mut.stderr diff --git a/src/test/ui/array-slice-vec/slice-of-zero-size-elements.rs b/tests/ui/array-slice-vec/slice-of-zero-size-elements.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-of-zero-size-elements.rs rename to tests/ui/array-slice-vec/slice-of-zero-size-elements.rs diff --git a/src/test/ui/array-slice-vec/slice-panic-1.rs b/tests/ui/array-slice-vec/slice-panic-1.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-panic-1.rs rename to tests/ui/array-slice-vec/slice-panic-1.rs diff --git a/src/test/ui/array-slice-vec/slice-panic-2.rs b/tests/ui/array-slice-vec/slice-panic-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-panic-2.rs rename to tests/ui/array-slice-vec/slice-panic-2.rs diff --git a/src/test/ui/array-slice-vec/slice-pat-type-mismatches.rs b/tests/ui/array-slice-vec/slice-pat-type-mismatches.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-pat-type-mismatches.rs rename to tests/ui/array-slice-vec/slice-pat-type-mismatches.rs diff --git a/src/test/ui/array-slice-vec/slice-pat-type-mismatches.stderr b/tests/ui/array-slice-vec/slice-pat-type-mismatches.stderr similarity index 100% rename from src/test/ui/array-slice-vec/slice-pat-type-mismatches.stderr rename to tests/ui/array-slice-vec/slice-pat-type-mismatches.stderr diff --git a/src/test/ui/array-slice-vec/slice-to-vec-comparison.rs b/tests/ui/array-slice-vec/slice-to-vec-comparison.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice-to-vec-comparison.rs rename to tests/ui/array-slice-vec/slice-to-vec-comparison.rs diff --git a/src/test/ui/array-slice-vec/slice-to-vec-comparison.stderr b/tests/ui/array-slice-vec/slice-to-vec-comparison.stderr similarity index 100% rename from src/test/ui/array-slice-vec/slice-to-vec-comparison.stderr rename to tests/ui/array-slice-vec/slice-to-vec-comparison.stderr diff --git a/src/test/ui/array-slice-vec/slice.rs b/tests/ui/array-slice-vec/slice.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice.rs rename to tests/ui/array-slice-vec/slice.rs diff --git a/src/test/ui/array-slice-vec/slice_binary_search.rs b/tests/ui/array-slice-vec/slice_binary_search.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice_binary_search.rs rename to tests/ui/array-slice-vec/slice_binary_search.rs diff --git a/src/test/ui/array-slice-vec/slice_is_sorted_by_borrow.rs b/tests/ui/array-slice-vec/slice_is_sorted_by_borrow.rs similarity index 100% rename from src/test/ui/array-slice-vec/slice_is_sorted_by_borrow.rs rename to tests/ui/array-slice-vec/slice_is_sorted_by_borrow.rs diff --git a/src/test/ui/array-slice-vec/subslice-only-once-semantic-restriction.rs b/tests/ui/array-slice-vec/subslice-only-once-semantic-restriction.rs similarity index 100% rename from src/test/ui/array-slice-vec/subslice-only-once-semantic-restriction.rs rename to tests/ui/array-slice-vec/subslice-only-once-semantic-restriction.rs diff --git a/src/test/ui/array-slice-vec/subslice-only-once-semantic-restriction.stderr b/tests/ui/array-slice-vec/subslice-only-once-semantic-restriction.stderr similarity index 100% rename from src/test/ui/array-slice-vec/subslice-only-once-semantic-restriction.stderr rename to tests/ui/array-slice-vec/subslice-only-once-semantic-restriction.stderr diff --git a/src/test/ui/array-slice-vec/subslice-patterns-const-eval-match.rs b/tests/ui/array-slice-vec/subslice-patterns-const-eval-match.rs similarity index 100% rename from src/test/ui/array-slice-vec/subslice-patterns-const-eval-match.rs rename to tests/ui/array-slice-vec/subslice-patterns-const-eval-match.rs diff --git a/src/test/ui/array-slice-vec/subslice-patterns-const-eval.rs b/tests/ui/array-slice-vec/subslice-patterns-const-eval.rs similarity index 100% rename from src/test/ui/array-slice-vec/subslice-patterns-const-eval.rs rename to tests/ui/array-slice-vec/subslice-patterns-const-eval.rs diff --git a/src/test/ui/array-slice-vec/suggest-array-length.fixed b/tests/ui/array-slice-vec/suggest-array-length.fixed similarity index 100% rename from src/test/ui/array-slice-vec/suggest-array-length.fixed rename to tests/ui/array-slice-vec/suggest-array-length.fixed diff --git a/src/test/ui/array-slice-vec/suggest-array-length.rs b/tests/ui/array-slice-vec/suggest-array-length.rs similarity index 100% rename from src/test/ui/array-slice-vec/suggest-array-length.rs rename to tests/ui/array-slice-vec/suggest-array-length.rs diff --git a/src/test/ui/array-slice-vec/suggest-array-length.stderr b/tests/ui/array-slice-vec/suggest-array-length.stderr similarity index 100% rename from src/test/ui/array-slice-vec/suggest-array-length.stderr rename to tests/ui/array-slice-vec/suggest-array-length.stderr diff --git a/src/test/ui/array-slice-vec/variance-vec-covariant.rs b/tests/ui/array-slice-vec/variance-vec-covariant.rs similarity index 100% rename from src/test/ui/array-slice-vec/variance-vec-covariant.rs rename to tests/ui/array-slice-vec/variance-vec-covariant.rs diff --git a/src/test/ui/array-slice-vec/vec-dst.rs b/tests/ui/array-slice-vec/vec-dst.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-dst.rs rename to tests/ui/array-slice-vec/vec-dst.rs diff --git a/src/test/ui/array-slice-vec/vec-fixed-length.rs b/tests/ui/array-slice-vec/vec-fixed-length.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-fixed-length.rs rename to tests/ui/array-slice-vec/vec-fixed-length.rs diff --git a/src/test/ui/array-slice-vec/vec-late-init.rs b/tests/ui/array-slice-vec/vec-late-init.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-late-init.rs rename to tests/ui/array-slice-vec/vec-late-init.rs diff --git a/src/test/ui/array-slice-vec/vec-macro-no-std.rs b/tests/ui/array-slice-vec/vec-macro-no-std.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-no-std.rs rename to tests/ui/array-slice-vec/vec-macro-no-std.rs diff --git a/src/test/ui/array-slice-vec/vec-macro-rvalue-scope.rs b/tests/ui/array-slice-vec/vec-macro-rvalue-scope.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-rvalue-scope.rs rename to tests/ui/array-slice-vec/vec-macro-rvalue-scope.rs diff --git a/src/test/ui/array-slice-vec/vec-macro-with-brackets.rs b/tests/ui/array-slice-vec/vec-macro-with-brackets.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-with-brackets.rs rename to tests/ui/array-slice-vec/vec-macro-with-brackets.rs diff --git a/src/test/ui/array-slice-vec/vec-macro-with-comma-only.rs b/tests/ui/array-slice-vec/vec-macro-with-comma-only.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-with-comma-only.rs rename to tests/ui/array-slice-vec/vec-macro-with-comma-only.rs diff --git a/src/test/ui/array-slice-vec/vec-macro-with-comma-only.stderr b/tests/ui/array-slice-vec/vec-macro-with-comma-only.stderr similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-with-comma-only.stderr rename to tests/ui/array-slice-vec/vec-macro-with-comma-only.stderr diff --git a/src/test/ui/array-slice-vec/vec-macro-with-trailing-comma.rs b/tests/ui/array-slice-vec/vec-macro-with-trailing-comma.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-macro-with-trailing-comma.rs rename to tests/ui/array-slice-vec/vec-macro-with-trailing-comma.rs diff --git a/src/test/ui/array-slice-vec/vec-matching-autoslice.rs b/tests/ui/array-slice-vec/vec-matching-autoslice.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-matching-autoslice.rs rename to tests/ui/array-slice-vec/vec-matching-autoslice.rs diff --git a/src/test/ui/array-slice-vec/vec-matching-fixed.rs b/tests/ui/array-slice-vec/vec-matching-fixed.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-matching-fixed.rs rename to tests/ui/array-slice-vec/vec-matching-fixed.rs diff --git a/src/test/ui/array-slice-vec/vec-matching-fold.rs b/tests/ui/array-slice-vec/vec-matching-fold.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-matching-fold.rs rename to tests/ui/array-slice-vec/vec-matching-fold.rs diff --git a/src/test/ui/array-slice-vec/vec-matching-legal-tail-element-borrow.rs b/tests/ui/array-slice-vec/vec-matching-legal-tail-element-borrow.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-matching-legal-tail-element-borrow.rs rename to tests/ui/array-slice-vec/vec-matching-legal-tail-element-borrow.rs diff --git a/src/test/ui/array-slice-vec/vec-matching.rs b/tests/ui/array-slice-vec/vec-matching.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-matching.rs rename to tests/ui/array-slice-vec/vec-matching.rs diff --git a/src/test/ui/array-slice-vec/vec-mut-iter-borrow.rs b/tests/ui/array-slice-vec/vec-mut-iter-borrow.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-mut-iter-borrow.rs rename to tests/ui/array-slice-vec/vec-mut-iter-borrow.rs diff --git a/src/test/ui/array-slice-vec/vec-mut-iter-borrow.stderr b/tests/ui/array-slice-vec/vec-mut-iter-borrow.stderr similarity index 100% rename from src/test/ui/array-slice-vec/vec-mut-iter-borrow.stderr rename to tests/ui/array-slice-vec/vec-mut-iter-borrow.stderr diff --git a/src/test/ui/array-slice-vec/vec-overrun.rs b/tests/ui/array-slice-vec/vec-overrun.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-overrun.rs rename to tests/ui/array-slice-vec/vec-overrun.rs diff --git a/src/test/ui/array-slice-vec/vec-repeat-with-cast.rs b/tests/ui/array-slice-vec/vec-repeat-with-cast.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-repeat-with-cast.rs rename to tests/ui/array-slice-vec/vec-repeat-with-cast.rs diff --git a/src/test/ui/array-slice-vec/vec-res-add.rs b/tests/ui/array-slice-vec/vec-res-add.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-res-add.rs rename to tests/ui/array-slice-vec/vec-res-add.rs diff --git a/src/test/ui/array-slice-vec/vec-res-add.stderr b/tests/ui/array-slice-vec/vec-res-add.stderr similarity index 100% rename from src/test/ui/array-slice-vec/vec-res-add.stderr rename to tests/ui/array-slice-vec/vec-res-add.stderr diff --git a/src/test/ui/array-slice-vec/vec-tail-matching.rs b/tests/ui/array-slice-vec/vec-tail-matching.rs similarity index 100% rename from src/test/ui/array-slice-vec/vec-tail-matching.rs rename to tests/ui/array-slice-vec/vec-tail-matching.rs diff --git a/src/test/ui/array-slice-vec/vector-cast-weirdness.rs b/tests/ui/array-slice-vec/vector-cast-weirdness.rs similarity index 100% rename from src/test/ui/array-slice-vec/vector-cast-weirdness.rs rename to tests/ui/array-slice-vec/vector-cast-weirdness.rs diff --git a/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr b/tests/ui/array-slice-vec/vector-cast-weirdness.stderr similarity index 100% rename from src/test/ui/array-slice-vec/vector-cast-weirdness.stderr rename to tests/ui/array-slice-vec/vector-cast-weirdness.stderr diff --git a/src/test/ui/array-slice-vec/vector-no-ann-2.rs b/tests/ui/array-slice-vec/vector-no-ann-2.rs similarity index 100% rename from src/test/ui/array-slice-vec/vector-no-ann-2.rs rename to tests/ui/array-slice-vec/vector-no-ann-2.rs diff --git a/src/test/ui/array-slice-vec/vector-no-ann.rs b/tests/ui/array-slice-vec/vector-no-ann.rs similarity index 100% rename from src/test/ui/array-slice-vec/vector-no-ann.rs rename to tests/ui/array-slice-vec/vector-no-ann.rs diff --git a/src/test/ui/array-slice-vec/vector-no-ann.stderr b/tests/ui/array-slice-vec/vector-no-ann.stderr similarity index 100% rename from src/test/ui/array-slice-vec/vector-no-ann.stderr rename to tests/ui/array-slice-vec/vector-no-ann.stderr diff --git a/src/test/ui/artificial-block.rs b/tests/ui/artificial-block.rs similarity index 100% rename from src/test/ui/artificial-block.rs rename to tests/ui/artificial-block.rs diff --git a/src/test/ui/as-precedence.rs b/tests/ui/as-precedence.rs similarity index 100% rename from src/test/ui/as-precedence.rs rename to tests/ui/as-precedence.rs diff --git a/src/test/ui/asm/aarch64/bad-options.rs b/tests/ui/asm/aarch64/bad-options.rs similarity index 100% rename from src/test/ui/asm/aarch64/bad-options.rs rename to tests/ui/asm/aarch64/bad-options.rs diff --git a/src/test/ui/asm/aarch64/bad-options.stderr b/tests/ui/asm/aarch64/bad-options.stderr similarity index 100% rename from src/test/ui/asm/aarch64/bad-options.stderr rename to tests/ui/asm/aarch64/bad-options.stderr diff --git a/src/test/ui/asm/aarch64/bad-reg.rs b/tests/ui/asm/aarch64/bad-reg.rs similarity index 100% rename from src/test/ui/asm/aarch64/bad-reg.rs rename to tests/ui/asm/aarch64/bad-reg.rs diff --git a/src/test/ui/asm/aarch64/bad-reg.stderr b/tests/ui/asm/aarch64/bad-reg.stderr similarity index 100% rename from src/test/ui/asm/aarch64/bad-reg.stderr rename to tests/ui/asm/aarch64/bad-reg.stderr diff --git a/src/test/ui/asm/aarch64/const.rs b/tests/ui/asm/aarch64/const.rs similarity index 100% rename from src/test/ui/asm/aarch64/const.rs rename to tests/ui/asm/aarch64/const.rs diff --git a/src/test/ui/asm/aarch64/duplicate-options.fixed b/tests/ui/asm/aarch64/duplicate-options.fixed similarity index 100% rename from src/test/ui/asm/aarch64/duplicate-options.fixed rename to tests/ui/asm/aarch64/duplicate-options.fixed diff --git a/src/test/ui/asm/aarch64/duplicate-options.rs b/tests/ui/asm/aarch64/duplicate-options.rs similarity index 100% rename from src/test/ui/asm/aarch64/duplicate-options.rs rename to tests/ui/asm/aarch64/duplicate-options.rs diff --git a/src/test/ui/asm/aarch64/duplicate-options.stderr b/tests/ui/asm/aarch64/duplicate-options.stderr similarity index 100% rename from src/test/ui/asm/aarch64/duplicate-options.stderr rename to tests/ui/asm/aarch64/duplicate-options.stderr diff --git a/src/test/ui/asm/aarch64/interpolated-idents.rs b/tests/ui/asm/aarch64/interpolated-idents.rs similarity index 100% rename from src/test/ui/asm/aarch64/interpolated-idents.rs rename to tests/ui/asm/aarch64/interpolated-idents.rs diff --git a/src/test/ui/asm/aarch64/interpolated-idents.stderr b/tests/ui/asm/aarch64/interpolated-idents.stderr similarity index 100% rename from src/test/ui/asm/aarch64/interpolated-idents.stderr rename to tests/ui/asm/aarch64/interpolated-idents.stderr diff --git a/src/test/ui/asm/aarch64/llvm-58384.rs b/tests/ui/asm/aarch64/llvm-58384.rs similarity index 100% rename from src/test/ui/asm/aarch64/llvm-58384.rs rename to tests/ui/asm/aarch64/llvm-58384.rs diff --git a/src/test/ui/asm/aarch64/may_unwind.rs b/tests/ui/asm/aarch64/may_unwind.rs similarity index 100% rename from src/test/ui/asm/aarch64/may_unwind.rs rename to tests/ui/asm/aarch64/may_unwind.rs diff --git a/src/test/ui/asm/aarch64/parse-error.rs b/tests/ui/asm/aarch64/parse-error.rs similarity index 100% rename from src/test/ui/asm/aarch64/parse-error.rs rename to tests/ui/asm/aarch64/parse-error.rs diff --git a/src/test/ui/asm/aarch64/parse-error.stderr b/tests/ui/asm/aarch64/parse-error.stderr similarity index 100% rename from src/test/ui/asm/aarch64/parse-error.stderr rename to tests/ui/asm/aarch64/parse-error.stderr diff --git a/src/test/ui/asm/aarch64/srcloc.rs b/tests/ui/asm/aarch64/srcloc.rs similarity index 100% rename from src/test/ui/asm/aarch64/srcloc.rs rename to tests/ui/asm/aarch64/srcloc.rs diff --git a/src/test/ui/asm/aarch64/srcloc.stderr b/tests/ui/asm/aarch64/srcloc.stderr similarity index 100% rename from src/test/ui/asm/aarch64/srcloc.stderr rename to tests/ui/asm/aarch64/srcloc.stderr diff --git a/src/test/ui/asm/aarch64/sym.rs b/tests/ui/asm/aarch64/sym.rs similarity index 100% rename from src/test/ui/asm/aarch64/sym.rs rename to tests/ui/asm/aarch64/sym.rs diff --git a/src/test/ui/asm/aarch64/type-check-2-2.rs b/tests/ui/asm/aarch64/type-check-2-2.rs similarity index 100% rename from src/test/ui/asm/aarch64/type-check-2-2.rs rename to tests/ui/asm/aarch64/type-check-2-2.rs diff --git a/src/test/ui/asm/aarch64/type-check-2-2.stderr b/tests/ui/asm/aarch64/type-check-2-2.stderr similarity index 100% rename from src/test/ui/asm/aarch64/type-check-2-2.stderr rename to tests/ui/asm/aarch64/type-check-2-2.stderr diff --git a/src/test/ui/asm/aarch64/type-check-2.rs b/tests/ui/asm/aarch64/type-check-2.rs similarity index 100% rename from src/test/ui/asm/aarch64/type-check-2.rs rename to tests/ui/asm/aarch64/type-check-2.rs diff --git a/src/test/ui/asm/aarch64/type-check-2.stderr b/tests/ui/asm/aarch64/type-check-2.stderr similarity index 100% rename from src/test/ui/asm/aarch64/type-check-2.stderr rename to tests/ui/asm/aarch64/type-check-2.stderr diff --git a/src/test/ui/asm/aarch64/type-check-3.rs b/tests/ui/asm/aarch64/type-check-3.rs similarity index 100% rename from src/test/ui/asm/aarch64/type-check-3.rs rename to tests/ui/asm/aarch64/type-check-3.rs diff --git a/src/test/ui/asm/aarch64/type-check-3.stderr b/tests/ui/asm/aarch64/type-check-3.stderr similarity index 100% rename from src/test/ui/asm/aarch64/type-check-3.stderr rename to tests/ui/asm/aarch64/type-check-3.stderr diff --git a/src/test/ui/asm/aarch64/type-check-4.rs b/tests/ui/asm/aarch64/type-check-4.rs similarity index 100% rename from src/test/ui/asm/aarch64/type-check-4.rs rename to tests/ui/asm/aarch64/type-check-4.rs diff --git a/src/test/ui/asm/aarch64/type-check-4.stderr b/tests/ui/asm/aarch64/type-check-4.stderr similarity index 100% rename from src/test/ui/asm/aarch64/type-check-4.stderr rename to tests/ui/asm/aarch64/type-check-4.stderr diff --git a/src/test/ui/asm/bad-arch.mirunsafeck.stderr b/tests/ui/asm/bad-arch.mirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-arch.mirunsafeck.stderr rename to tests/ui/asm/bad-arch.mirunsafeck.stderr diff --git a/src/test/ui/asm/bad-arch.rs b/tests/ui/asm/bad-arch.rs similarity index 100% rename from src/test/ui/asm/bad-arch.rs rename to tests/ui/asm/bad-arch.rs diff --git a/src/test/ui/asm/bad-arch.thirunsafeck.stderr b/tests/ui/asm/bad-arch.thirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-arch.thirunsafeck.stderr rename to tests/ui/asm/bad-arch.thirunsafeck.stderr diff --git a/src/test/ui/asm/bad-template.aarch64_mirunsafeck.stderr b/tests/ui/asm/bad-template.aarch64_mirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-template.aarch64_mirunsafeck.stderr rename to tests/ui/asm/bad-template.aarch64_mirunsafeck.stderr diff --git a/src/test/ui/asm/bad-template.aarch64_thirunsafeck.stderr b/tests/ui/asm/bad-template.aarch64_thirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-template.aarch64_thirunsafeck.stderr rename to tests/ui/asm/bad-template.aarch64_thirunsafeck.stderr diff --git a/src/test/ui/asm/bad-template.rs b/tests/ui/asm/bad-template.rs similarity index 100% rename from src/test/ui/asm/bad-template.rs rename to tests/ui/asm/bad-template.rs diff --git a/src/test/ui/asm/bad-template.x86_64_mirunsafeck.stderr b/tests/ui/asm/bad-template.x86_64_mirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-template.x86_64_mirunsafeck.stderr rename to tests/ui/asm/bad-template.x86_64_mirunsafeck.stderr diff --git a/src/test/ui/asm/bad-template.x86_64_thirunsafeck.stderr b/tests/ui/asm/bad-template.x86_64_thirunsafeck.stderr similarity index 100% rename from src/test/ui/asm/bad-template.x86_64_thirunsafeck.stderr rename to tests/ui/asm/bad-template.x86_64_thirunsafeck.stderr diff --git a/src/test/ui/asm/generic-const.rs b/tests/ui/asm/generic-const.rs similarity index 100% rename from src/test/ui/asm/generic-const.rs rename to tests/ui/asm/generic-const.rs diff --git a/src/test/ui/asm/inline-syntax.arm.stderr b/tests/ui/asm/inline-syntax.arm.stderr similarity index 100% rename from src/test/ui/asm/inline-syntax.arm.stderr rename to tests/ui/asm/inline-syntax.arm.stderr diff --git a/src/test/ui/asm/inline-syntax.rs b/tests/ui/asm/inline-syntax.rs similarity index 100% rename from src/test/ui/asm/inline-syntax.rs rename to tests/ui/asm/inline-syntax.rs diff --git a/src/test/ui/asm/inline-syntax.x86_64.stderr b/tests/ui/asm/inline-syntax.x86_64.stderr similarity index 100% rename from src/test/ui/asm/inline-syntax.x86_64.stderr rename to tests/ui/asm/inline-syntax.x86_64.stderr diff --git a/src/test/ui/asm/issue-72570.rs b/tests/ui/asm/issue-72570.rs similarity index 100% rename from src/test/ui/asm/issue-72570.rs rename to tests/ui/asm/issue-72570.rs diff --git a/src/test/ui/asm/issue-72570.stderr b/tests/ui/asm/issue-72570.stderr similarity index 100% rename from src/test/ui/asm/issue-72570.stderr rename to tests/ui/asm/issue-72570.stderr diff --git a/src/test/ui/asm/issue-85247.rs b/tests/ui/asm/issue-85247.rs similarity index 100% rename from src/test/ui/asm/issue-85247.rs rename to tests/ui/asm/issue-85247.rs diff --git a/src/test/ui/asm/issue-85247.rwpi.stderr b/tests/ui/asm/issue-85247.rwpi.stderr similarity index 100% rename from src/test/ui/asm/issue-85247.rwpi.stderr rename to tests/ui/asm/issue-85247.rwpi.stderr diff --git a/src/test/ui/asm/issue-87802.rs b/tests/ui/asm/issue-87802.rs similarity index 100% rename from src/test/ui/asm/issue-87802.rs rename to tests/ui/asm/issue-87802.rs diff --git a/src/test/ui/asm/issue-87802.stderr b/tests/ui/asm/issue-87802.stderr similarity index 100% rename from src/test/ui/asm/issue-87802.stderr rename to tests/ui/asm/issue-87802.stderr diff --git a/src/test/ui/asm/issue-89305.rs b/tests/ui/asm/issue-89305.rs similarity index 100% rename from src/test/ui/asm/issue-89305.rs rename to tests/ui/asm/issue-89305.rs diff --git a/src/test/ui/asm/issue-89305.stderr b/tests/ui/asm/issue-89305.stderr similarity index 100% rename from src/test/ui/asm/issue-89305.stderr rename to tests/ui/asm/issue-89305.stderr diff --git a/src/test/ui/asm/issue-92378.rs b/tests/ui/asm/issue-92378.rs similarity index 100% rename from src/test/ui/asm/issue-92378.rs rename to tests/ui/asm/issue-92378.rs diff --git a/src/test/ui/asm/issue-97490.rs b/tests/ui/asm/issue-97490.rs similarity index 100% rename from src/test/ui/asm/issue-97490.rs rename to tests/ui/asm/issue-97490.rs diff --git a/src/test/ui/asm/issue-99071.rs b/tests/ui/asm/issue-99071.rs similarity index 100% rename from src/test/ui/asm/issue-99071.rs rename to tests/ui/asm/issue-99071.rs diff --git a/src/test/ui/asm/issue-99071.stderr b/tests/ui/asm/issue-99071.stderr similarity index 100% rename from src/test/ui/asm/issue-99071.stderr rename to tests/ui/asm/issue-99071.stderr diff --git a/src/test/ui/asm/issue-99122-2.rs b/tests/ui/asm/issue-99122-2.rs similarity index 100% rename from src/test/ui/asm/issue-99122-2.rs rename to tests/ui/asm/issue-99122-2.rs diff --git a/src/test/ui/asm/issue-99122.rs b/tests/ui/asm/issue-99122.rs similarity index 100% rename from src/test/ui/asm/issue-99122.rs rename to tests/ui/asm/issue-99122.rs diff --git a/src/test/ui/asm/issue-99122.stderr b/tests/ui/asm/issue-99122.stderr similarity index 100% rename from src/test/ui/asm/issue-99122.stderr rename to tests/ui/asm/issue-99122.stderr diff --git a/src/test/ui/asm/may_unwind.rs b/tests/ui/asm/may_unwind.rs similarity index 100% rename from src/test/ui/asm/may_unwind.rs rename to tests/ui/asm/may_unwind.rs diff --git a/src/test/ui/asm/naked-functions-ffi.rs b/tests/ui/asm/naked-functions-ffi.rs similarity index 100% rename from src/test/ui/asm/naked-functions-ffi.rs rename to tests/ui/asm/naked-functions-ffi.rs diff --git a/src/test/ui/asm/naked-functions-ffi.stderr b/tests/ui/asm/naked-functions-ffi.stderr similarity index 100% rename from src/test/ui/asm/naked-functions-ffi.stderr rename to tests/ui/asm/naked-functions-ffi.stderr diff --git a/src/test/ui/asm/naked-functions-unused.aarch64.stderr b/tests/ui/asm/naked-functions-unused.aarch64.stderr similarity index 100% rename from src/test/ui/asm/naked-functions-unused.aarch64.stderr rename to tests/ui/asm/naked-functions-unused.aarch64.stderr diff --git a/src/test/ui/asm/naked-functions-unused.rs b/tests/ui/asm/naked-functions-unused.rs similarity index 100% rename from src/test/ui/asm/naked-functions-unused.rs rename to tests/ui/asm/naked-functions-unused.rs diff --git a/src/test/ui/asm/naked-functions-unused.x86_64.stderr b/tests/ui/asm/naked-functions-unused.x86_64.stderr similarity index 100% rename from src/test/ui/asm/naked-functions-unused.x86_64.stderr rename to tests/ui/asm/naked-functions-unused.x86_64.stderr diff --git a/src/test/ui/asm/naked-functions.rs b/tests/ui/asm/naked-functions.rs similarity index 100% rename from src/test/ui/asm/naked-functions.rs rename to tests/ui/asm/naked-functions.rs diff --git a/src/test/ui/asm/naked-functions.stderr b/tests/ui/asm/naked-functions.stderr similarity index 100% rename from src/test/ui/asm/naked-functions.stderr rename to tests/ui/asm/naked-functions.stderr diff --git a/src/test/ui/asm/naked-invalid-attr.rs b/tests/ui/asm/naked-invalid-attr.rs similarity index 100% rename from src/test/ui/asm/naked-invalid-attr.rs rename to tests/ui/asm/naked-invalid-attr.rs diff --git a/src/test/ui/asm/naked-invalid-attr.stderr b/tests/ui/asm/naked-invalid-attr.stderr similarity index 100% rename from src/test/ui/asm/naked-invalid-attr.stderr rename to tests/ui/asm/naked-invalid-attr.stderr diff --git a/src/test/ui/asm/named-asm-labels.rs b/tests/ui/asm/named-asm-labels.rs similarity index 100% rename from src/test/ui/asm/named-asm-labels.rs rename to tests/ui/asm/named-asm-labels.rs diff --git a/src/test/ui/asm/named-asm-labels.s b/tests/ui/asm/named-asm-labels.s similarity index 100% rename from src/test/ui/asm/named-asm-labels.s rename to tests/ui/asm/named-asm-labels.s diff --git a/src/test/ui/asm/named-asm-labels.stderr b/tests/ui/asm/named-asm-labels.stderr similarity index 100% rename from src/test/ui/asm/named-asm-labels.stderr rename to tests/ui/asm/named-asm-labels.stderr diff --git a/src/test/ui/asm/noreturn.rs b/tests/ui/asm/noreturn.rs similarity index 100% rename from src/test/ui/asm/noreturn.rs rename to tests/ui/asm/noreturn.rs diff --git a/src/test/ui/asm/reg-conflict.rs b/tests/ui/asm/reg-conflict.rs similarity index 100% rename from src/test/ui/asm/reg-conflict.rs rename to tests/ui/asm/reg-conflict.rs diff --git a/src/test/ui/asm/reg-conflict.stderr b/tests/ui/asm/reg-conflict.stderr similarity index 100% rename from src/test/ui/asm/reg-conflict.stderr rename to tests/ui/asm/reg-conflict.stderr diff --git a/src/test/ui/asm/type-check-1.rs b/tests/ui/asm/type-check-1.rs similarity index 100% rename from src/test/ui/asm/type-check-1.rs rename to tests/ui/asm/type-check-1.rs diff --git a/src/test/ui/asm/type-check-1.stderr b/tests/ui/asm/type-check-1.stderr similarity index 100% rename from src/test/ui/asm/type-check-1.stderr rename to tests/ui/asm/type-check-1.stderr diff --git a/src/test/ui/asm/type-check-4.rs b/tests/ui/asm/type-check-4.rs similarity index 100% rename from src/test/ui/asm/type-check-4.rs rename to tests/ui/asm/type-check-4.rs diff --git a/src/test/ui/asm/type-check-4.stderr b/tests/ui/asm/type-check-4.stderr similarity index 100% rename from src/test/ui/asm/type-check-4.stderr rename to tests/ui/asm/type-check-4.stderr diff --git a/src/test/ui/asm/unpretty-expanded.rs b/tests/ui/asm/unpretty-expanded.rs similarity index 100% rename from src/test/ui/asm/unpretty-expanded.rs rename to tests/ui/asm/unpretty-expanded.rs diff --git a/src/test/ui/asm/unpretty-expanded.stdout b/tests/ui/asm/unpretty-expanded.stdout similarity index 100% rename from src/test/ui/asm/unpretty-expanded.stdout rename to tests/ui/asm/unpretty-expanded.stdout diff --git a/src/test/ui/asm/x86_64/bad-clobber-abi.rs b/tests/ui/asm/x86_64/bad-clobber-abi.rs similarity index 100% rename from src/test/ui/asm/x86_64/bad-clobber-abi.rs rename to tests/ui/asm/x86_64/bad-clobber-abi.rs diff --git a/src/test/ui/asm/x86_64/bad-clobber-abi.stderr b/tests/ui/asm/x86_64/bad-clobber-abi.stderr similarity index 100% rename from src/test/ui/asm/x86_64/bad-clobber-abi.stderr rename to tests/ui/asm/x86_64/bad-clobber-abi.stderr diff --git a/src/test/ui/asm/x86_64/bad-options.rs b/tests/ui/asm/x86_64/bad-options.rs similarity index 100% rename from src/test/ui/asm/x86_64/bad-options.rs rename to tests/ui/asm/x86_64/bad-options.rs diff --git a/src/test/ui/asm/x86_64/bad-options.stderr b/tests/ui/asm/x86_64/bad-options.stderr similarity index 100% rename from src/test/ui/asm/x86_64/bad-options.stderr rename to tests/ui/asm/x86_64/bad-options.stderr diff --git a/src/test/ui/asm/x86_64/bad-reg.rs b/tests/ui/asm/x86_64/bad-reg.rs similarity index 100% rename from src/test/ui/asm/x86_64/bad-reg.rs rename to tests/ui/asm/x86_64/bad-reg.rs diff --git a/src/test/ui/asm/x86_64/bad-reg.stderr b/tests/ui/asm/x86_64/bad-reg.stderr similarity index 100% rename from src/test/ui/asm/x86_64/bad-reg.stderr rename to tests/ui/asm/x86_64/bad-reg.stderr diff --git a/src/test/ui/asm/x86_64/const.rs b/tests/ui/asm/x86_64/const.rs similarity index 100% rename from src/test/ui/asm/x86_64/const.rs rename to tests/ui/asm/x86_64/const.rs diff --git a/src/test/ui/asm/x86_64/duplicate-options.fixed b/tests/ui/asm/x86_64/duplicate-options.fixed similarity index 100% rename from src/test/ui/asm/x86_64/duplicate-options.fixed rename to tests/ui/asm/x86_64/duplicate-options.fixed diff --git a/src/test/ui/asm/x86_64/duplicate-options.rs b/tests/ui/asm/x86_64/duplicate-options.rs similarity index 100% rename from src/test/ui/asm/x86_64/duplicate-options.rs rename to tests/ui/asm/x86_64/duplicate-options.rs diff --git a/src/test/ui/asm/x86_64/duplicate-options.stderr b/tests/ui/asm/x86_64/duplicate-options.stderr similarity index 100% rename from src/test/ui/asm/x86_64/duplicate-options.stderr rename to tests/ui/asm/x86_64/duplicate-options.stderr diff --git a/src/test/ui/asm/x86_64/interpolated-idents.rs b/tests/ui/asm/x86_64/interpolated-idents.rs similarity index 100% rename from src/test/ui/asm/x86_64/interpolated-idents.rs rename to tests/ui/asm/x86_64/interpolated-idents.rs diff --git a/src/test/ui/asm/x86_64/interpolated-idents.stderr b/tests/ui/asm/x86_64/interpolated-idents.stderr similarity index 100% rename from src/test/ui/asm/x86_64/interpolated-idents.stderr rename to tests/ui/asm/x86_64/interpolated-idents.stderr diff --git a/src/test/ui/asm/x86_64/issue-82869.rs b/tests/ui/asm/x86_64/issue-82869.rs similarity index 100% rename from src/test/ui/asm/x86_64/issue-82869.rs rename to tests/ui/asm/x86_64/issue-82869.rs diff --git a/src/test/ui/asm/x86_64/issue-82869.stderr b/tests/ui/asm/x86_64/issue-82869.stderr similarity index 100% rename from src/test/ui/asm/x86_64/issue-82869.stderr rename to tests/ui/asm/x86_64/issue-82869.stderr diff --git a/src/test/ui/asm/x86_64/issue-89875.rs b/tests/ui/asm/x86_64/issue-89875.rs similarity index 100% rename from src/test/ui/asm/x86_64/issue-89875.rs rename to tests/ui/asm/x86_64/issue-89875.rs diff --git a/src/test/ui/asm/x86_64/issue-96797.rs b/tests/ui/asm/x86_64/issue-96797.rs similarity index 100% rename from src/test/ui/asm/x86_64/issue-96797.rs rename to tests/ui/asm/x86_64/issue-96797.rs diff --git a/src/test/ui/asm/x86_64/may_unwind.rs b/tests/ui/asm/x86_64/may_unwind.rs similarity index 100% rename from src/test/ui/asm/x86_64/may_unwind.rs rename to tests/ui/asm/x86_64/may_unwind.rs diff --git a/src/test/ui/asm/x86_64/multiple-clobber-abi.rs b/tests/ui/asm/x86_64/multiple-clobber-abi.rs similarity index 100% rename from src/test/ui/asm/x86_64/multiple-clobber-abi.rs rename to tests/ui/asm/x86_64/multiple-clobber-abi.rs diff --git a/src/test/ui/asm/x86_64/parse-error.rs b/tests/ui/asm/x86_64/parse-error.rs similarity index 100% rename from src/test/ui/asm/x86_64/parse-error.rs rename to tests/ui/asm/x86_64/parse-error.rs diff --git a/src/test/ui/asm/x86_64/parse-error.stderr b/tests/ui/asm/x86_64/parse-error.stderr similarity index 100% rename from src/test/ui/asm/x86_64/parse-error.stderr rename to tests/ui/asm/x86_64/parse-error.stderr diff --git a/src/test/ui/asm/x86_64/srcloc.rs b/tests/ui/asm/x86_64/srcloc.rs similarity index 100% rename from src/test/ui/asm/x86_64/srcloc.rs rename to tests/ui/asm/x86_64/srcloc.rs diff --git a/src/test/ui/asm/x86_64/srcloc.stderr b/tests/ui/asm/x86_64/srcloc.stderr similarity index 100% rename from src/test/ui/asm/x86_64/srcloc.stderr rename to tests/ui/asm/x86_64/srcloc.stderr diff --git a/src/test/ui/asm/x86_64/sym.rs b/tests/ui/asm/x86_64/sym.rs similarity index 100% rename from src/test/ui/asm/x86_64/sym.rs rename to tests/ui/asm/x86_64/sym.rs diff --git a/src/test/ui/asm/x86_64/target-feature-attr.rs b/tests/ui/asm/x86_64/target-feature-attr.rs similarity index 100% rename from src/test/ui/asm/x86_64/target-feature-attr.rs rename to tests/ui/asm/x86_64/target-feature-attr.rs diff --git a/src/test/ui/asm/x86_64/target-feature-attr.stderr b/tests/ui/asm/x86_64/target-feature-attr.stderr similarity index 100% rename from src/test/ui/asm/x86_64/target-feature-attr.stderr rename to tests/ui/asm/x86_64/target-feature-attr.stderr diff --git a/src/test/ui/asm/x86_64/type-check-2.rs b/tests/ui/asm/x86_64/type-check-2.rs similarity index 100% rename from src/test/ui/asm/x86_64/type-check-2.rs rename to tests/ui/asm/x86_64/type-check-2.rs diff --git a/src/test/ui/asm/x86_64/type-check-2.stderr b/tests/ui/asm/x86_64/type-check-2.stderr similarity index 100% rename from src/test/ui/asm/x86_64/type-check-2.stderr rename to tests/ui/asm/x86_64/type-check-2.stderr diff --git a/src/test/ui/asm/x86_64/type-check-3.rs b/tests/ui/asm/x86_64/type-check-3.rs similarity index 100% rename from src/test/ui/asm/x86_64/type-check-3.rs rename to tests/ui/asm/x86_64/type-check-3.rs diff --git a/src/test/ui/asm/x86_64/type-check-3.stderr b/tests/ui/asm/x86_64/type-check-3.stderr similarity index 100% rename from src/test/ui/asm/x86_64/type-check-3.stderr rename to tests/ui/asm/x86_64/type-check-3.stderr diff --git a/src/test/ui/asm/x86_64/type-check-4.rs b/tests/ui/asm/x86_64/type-check-4.rs similarity index 100% rename from src/test/ui/asm/x86_64/type-check-4.rs rename to tests/ui/asm/x86_64/type-check-4.rs diff --git a/src/test/ui/asm/x86_64/type-check-4.stderr b/tests/ui/asm/x86_64/type-check-4.stderr similarity index 100% rename from src/test/ui/asm/x86_64/type-check-4.stderr rename to tests/ui/asm/x86_64/type-check-4.stderr diff --git a/src/test/ui/asm/x86_64/type-check-5.rs b/tests/ui/asm/x86_64/type-check-5.rs similarity index 100% rename from src/test/ui/asm/x86_64/type-check-5.rs rename to tests/ui/asm/x86_64/type-check-5.rs diff --git a/src/test/ui/asm/x86_64/type-check-5.stderr b/tests/ui/asm/x86_64/type-check-5.stderr similarity index 100% rename from src/test/ui/asm/x86_64/type-check-5.stderr rename to tests/ui/asm/x86_64/type-check-5.stderr diff --git a/src/test/ui/assign-assign.rs b/tests/ui/assign-assign.rs similarity index 100% rename from src/test/ui/assign-assign.rs rename to tests/ui/assign-assign.rs diff --git a/src/test/ui/assign-imm-local-twice.rs b/tests/ui/assign-imm-local-twice.rs similarity index 100% rename from src/test/ui/assign-imm-local-twice.rs rename to tests/ui/assign-imm-local-twice.rs diff --git a/src/test/ui/assign-imm-local-twice.stderr b/tests/ui/assign-imm-local-twice.stderr similarity index 100% rename from src/test/ui/assign-imm-local-twice.stderr rename to tests/ui/assign-imm-local-twice.stderr diff --git a/src/test/ui/assoc-lang-items.rs b/tests/ui/assoc-lang-items.rs similarity index 100% rename from src/test/ui/assoc-lang-items.rs rename to tests/ui/assoc-lang-items.rs diff --git a/src/test/ui/assoc-lang-items.stderr b/tests/ui/assoc-lang-items.stderr similarity index 100% rename from src/test/ui/assoc-lang-items.stderr rename to tests/ui/assoc-lang-items.stderr diff --git a/src/test/ui/assoc-oddities-3.rs b/tests/ui/assoc-oddities-3.rs similarity index 100% rename from src/test/ui/assoc-oddities-3.rs rename to tests/ui/assoc-oddities-3.rs diff --git a/src/test/ui/associated-consts/assoc-const-eq-missing.rs b/tests/ui/associated-consts/assoc-const-eq-missing.rs similarity index 100% rename from src/test/ui/associated-consts/assoc-const-eq-missing.rs rename to tests/ui/associated-consts/assoc-const-eq-missing.rs diff --git a/src/test/ui/associated-consts/assoc-const-eq-missing.stderr b/tests/ui/associated-consts/assoc-const-eq-missing.stderr similarity index 100% rename from src/test/ui/associated-consts/assoc-const-eq-missing.stderr rename to tests/ui/associated-consts/assoc-const-eq-missing.stderr diff --git a/src/test/ui/associated-consts/assoc-const-ty-mismatch.rs b/tests/ui/associated-consts/assoc-const-ty-mismatch.rs similarity index 100% rename from src/test/ui/associated-consts/assoc-const-ty-mismatch.rs rename to tests/ui/associated-consts/assoc-const-ty-mismatch.rs diff --git a/src/test/ui/associated-consts/assoc-const-ty-mismatch.stderr b/tests/ui/associated-consts/assoc-const-ty-mismatch.stderr similarity index 100% rename from src/test/ui/associated-consts/assoc-const-ty-mismatch.stderr rename to tests/ui/associated-consts/assoc-const-ty-mismatch.stderr diff --git a/src/test/ui/associated-consts/assoc-const.rs b/tests/ui/associated-consts/assoc-const.rs similarity index 100% rename from src/test/ui/associated-consts/assoc-const.rs rename to tests/ui/associated-consts/assoc-const.rs diff --git a/src/test/ui/associated-consts/associated-const-ambiguity-report.rs b/tests/ui/associated-consts/associated-const-ambiguity-report.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-ambiguity-report.rs rename to tests/ui/associated-consts/associated-const-ambiguity-report.rs diff --git a/src/test/ui/associated-consts/associated-const-ambiguity-report.stderr b/tests/ui/associated-consts/associated-const-ambiguity-report.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-ambiguity-report.stderr rename to tests/ui/associated-consts/associated-const-ambiguity-report.stderr diff --git a/src/test/ui/associated-consts/associated-const-array-len.rs b/tests/ui/associated-consts/associated-const-array-len.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-array-len.rs rename to tests/ui/associated-consts/associated-const-array-len.rs diff --git a/src/test/ui/associated-consts/associated-const-array-len.stderr b/tests/ui/associated-consts/associated-const-array-len.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-array-len.stderr rename to tests/ui/associated-consts/associated-const-array-len.stderr diff --git a/src/test/ui/associated-consts/associated-const-const-eval.rs b/tests/ui/associated-consts/associated-const-const-eval.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-const-eval.rs rename to tests/ui/associated-consts/associated-const-const-eval.rs diff --git a/src/test/ui/associated-consts/associated-const-cross-crate-const-eval.rs b/tests/ui/associated-consts/associated-const-cross-crate-const-eval.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-cross-crate-const-eval.rs rename to tests/ui/associated-consts/associated-const-cross-crate-const-eval.rs diff --git a/src/test/ui/associated-consts/associated-const-cross-crate-defaults.rs b/tests/ui/associated-consts/associated-const-cross-crate-defaults.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-cross-crate-defaults.rs rename to tests/ui/associated-consts/associated-const-cross-crate-defaults.rs diff --git a/src/test/ui/associated-consts/associated-const-cross-crate.rs b/tests/ui/associated-consts/associated-const-cross-crate.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-cross-crate.rs rename to tests/ui/associated-consts/associated-const-cross-crate.rs diff --git a/src/test/ui/associated-consts/associated-const-dead-code.rs b/tests/ui/associated-consts/associated-const-dead-code.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-dead-code.rs rename to tests/ui/associated-consts/associated-const-dead-code.rs diff --git a/src/test/ui/associated-consts/associated-const-dead-code.stderr b/tests/ui/associated-consts/associated-const-dead-code.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-dead-code.stderr rename to tests/ui/associated-consts/associated-const-dead-code.stderr diff --git a/src/test/ui/associated-consts/associated-const-generic-obligations.rs b/tests/ui/associated-consts/associated-const-generic-obligations.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-generic-obligations.rs rename to tests/ui/associated-consts/associated-const-generic-obligations.rs diff --git a/src/test/ui/associated-consts/associated-const-generic-obligations.stderr b/tests/ui/associated-consts/associated-const-generic-obligations.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-generic-obligations.stderr rename to tests/ui/associated-consts/associated-const-generic-obligations.stderr diff --git a/src/test/ui/associated-consts/associated-const-impl-wrong-lifetime.rs b/tests/ui/associated-consts/associated-const-impl-wrong-lifetime.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-impl-wrong-lifetime.rs rename to tests/ui/associated-consts/associated-const-impl-wrong-lifetime.rs diff --git a/src/test/ui/associated-consts/associated-const-impl-wrong-lifetime.stderr b/tests/ui/associated-consts/associated-const-impl-wrong-lifetime.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-impl-wrong-lifetime.stderr rename to tests/ui/associated-consts/associated-const-impl-wrong-lifetime.stderr diff --git a/src/test/ui/associated-consts/associated-const-impl-wrong-type.rs b/tests/ui/associated-consts/associated-const-impl-wrong-type.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-impl-wrong-type.rs rename to tests/ui/associated-consts/associated-const-impl-wrong-type.rs diff --git a/src/test/ui/associated-consts/associated-const-impl-wrong-type.stderr b/tests/ui/associated-consts/associated-const-impl-wrong-type.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-impl-wrong-type.stderr rename to tests/ui/associated-consts/associated-const-impl-wrong-type.stderr diff --git a/src/test/ui/associated-consts/associated-const-in-global-const.rs b/tests/ui/associated-consts/associated-const-in-global-const.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-in-global-const.rs rename to tests/ui/associated-consts/associated-const-in-global-const.rs diff --git a/src/test/ui/associated-consts/associated-const-in-trait.rs b/tests/ui/associated-consts/associated-const-in-trait.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-in-trait.rs rename to tests/ui/associated-consts/associated-const-in-trait.rs diff --git a/src/test/ui/associated-consts/associated-const-in-trait.stderr b/tests/ui/associated-consts/associated-const-in-trait.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-in-trait.stderr rename to tests/ui/associated-consts/associated-const-in-trait.stderr diff --git a/src/test/ui/associated-consts/associated-const-inherent-impl.rs b/tests/ui/associated-consts/associated-const-inherent-impl.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-inherent-impl.rs rename to tests/ui/associated-consts/associated-const-inherent-impl.rs diff --git a/src/test/ui/associated-consts/associated-const-marks-live-code.rs b/tests/ui/associated-consts/associated-const-marks-live-code.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-marks-live-code.rs rename to tests/ui/associated-consts/associated-const-marks-live-code.rs diff --git a/src/test/ui/associated-consts/associated-const-match-patterns.rs b/tests/ui/associated-consts/associated-const-match-patterns.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-match-patterns.rs rename to tests/ui/associated-consts/associated-const-match-patterns.rs diff --git a/src/test/ui/associated-consts/associated-const-no-item.rs b/tests/ui/associated-consts/associated-const-no-item.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-no-item.rs rename to tests/ui/associated-consts/associated-const-no-item.rs diff --git a/src/test/ui/associated-consts/associated-const-no-item.stderr b/tests/ui/associated-consts/associated-const-no-item.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-no-item.stderr rename to tests/ui/associated-consts/associated-const-no-item.stderr diff --git a/src/test/ui/associated-consts/associated-const-outer-ty-refs.rs b/tests/ui/associated-consts/associated-const-outer-ty-refs.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-outer-ty-refs.rs rename to tests/ui/associated-consts/associated-const-outer-ty-refs.rs diff --git a/src/test/ui/associated-consts/associated-const-overwrite-default.rs b/tests/ui/associated-consts/associated-const-overwrite-default.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-overwrite-default.rs rename to tests/ui/associated-consts/associated-const-overwrite-default.rs diff --git a/src/test/ui/associated-consts/associated-const-private-impl.rs b/tests/ui/associated-consts/associated-const-private-impl.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-private-impl.rs rename to tests/ui/associated-consts/associated-const-private-impl.rs diff --git a/src/test/ui/associated-consts/associated-const-private-impl.stderr b/tests/ui/associated-consts/associated-const-private-impl.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-private-impl.stderr rename to tests/ui/associated-consts/associated-const-private-impl.stderr diff --git a/src/test/ui/associated-consts/associated-const-public-impl.rs b/tests/ui/associated-consts/associated-const-public-impl.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-public-impl.rs rename to tests/ui/associated-consts/associated-const-public-impl.rs diff --git a/src/test/ui/associated-consts/associated-const-range-match-patterns.rs b/tests/ui/associated-consts/associated-const-range-match-patterns.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-range-match-patterns.rs rename to tests/ui/associated-consts/associated-const-range-match-patterns.rs diff --git a/src/test/ui/associated-consts/associated-const-resolution-order.rs b/tests/ui/associated-consts/associated-const-resolution-order.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-resolution-order.rs rename to tests/ui/associated-consts/associated-const-resolution-order.rs diff --git a/src/test/ui/associated-consts/associated-const-self-type.rs b/tests/ui/associated-consts/associated-const-self-type.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-self-type.rs rename to tests/ui/associated-consts/associated-const-self-type.rs diff --git a/src/test/ui/associated-consts/associated-const-trait-bound.rs b/tests/ui/associated-consts/associated-const-trait-bound.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-trait-bound.rs rename to tests/ui/associated-consts/associated-const-trait-bound.rs diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arms.rs b/tests/ui/associated-consts/associated-const-type-parameter-arms.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arms.rs rename to tests/ui/associated-consts/associated-const-type-parameter-arms.rs diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arms.stderr b/tests/ui/associated-consts/associated-const-type-parameter-arms.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arms.stderr rename to tests/ui/associated-consts/associated-const-type-parameter-arms.stderr diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arrays-2.rs b/tests/ui/associated-consts/associated-const-type-parameter-arrays-2.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arrays-2.rs rename to tests/ui/associated-consts/associated-const-type-parameter-arrays-2.rs diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arrays-2.stderr b/tests/ui/associated-consts/associated-const-type-parameter-arrays-2.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arrays-2.stderr rename to tests/ui/associated-consts/associated-const-type-parameter-arrays-2.stderr diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arrays.rs b/tests/ui/associated-consts/associated-const-type-parameter-arrays.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arrays.rs rename to tests/ui/associated-consts/associated-const-type-parameter-arrays.rs diff --git a/src/test/ui/associated-consts/associated-const-type-parameter-arrays.stderr b/tests/ui/associated-consts/associated-const-type-parameter-arrays.stderr similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameter-arrays.stderr rename to tests/ui/associated-consts/associated-const-type-parameter-arrays.stderr diff --git a/src/test/ui/associated-consts/associated-const-type-parameters.rs b/tests/ui/associated-consts/associated-const-type-parameters.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-type-parameters.rs rename to tests/ui/associated-consts/associated-const-type-parameters.rs diff --git a/src/test/ui/associated-consts/associated-const-ufcs-infer-trait.rs b/tests/ui/associated-consts/associated-const-ufcs-infer-trait.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-ufcs-infer-trait.rs rename to tests/ui/associated-consts/associated-const-ufcs-infer-trait.rs diff --git a/src/test/ui/associated-consts/associated-const-use-default.rs b/tests/ui/associated-consts/associated-const-use-default.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-use-default.rs rename to tests/ui/associated-consts/associated-const-use-default.rs diff --git a/src/test/ui/associated-consts/associated-const-use-impl-of-same-trait.rs b/tests/ui/associated-consts/associated-const-use-impl-of-same-trait.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const-use-impl-of-same-trait.rs rename to tests/ui/associated-consts/associated-const-use-impl-of-same-trait.rs diff --git a/src/test/ui/associated-consts/associated-const.rs b/tests/ui/associated-consts/associated-const.rs similarity index 100% rename from src/test/ui/associated-consts/associated-const.rs rename to tests/ui/associated-consts/associated-const.rs diff --git a/src/test/ui/associated-consts/auxiliary/associated-const-cc-lib.rs b/tests/ui/associated-consts/auxiliary/associated-const-cc-lib.rs similarity index 100% rename from src/test/ui/associated-consts/auxiliary/associated-const-cc-lib.rs rename to tests/ui/associated-consts/auxiliary/associated-const-cc-lib.rs diff --git a/src/test/ui/associated-consts/auxiliary/empty-struct.rs b/tests/ui/associated-consts/auxiliary/empty-struct.rs similarity index 100% rename from src/test/ui/associated-consts/auxiliary/empty-struct.rs rename to tests/ui/associated-consts/auxiliary/empty-struct.rs diff --git a/src/test/ui/associated-consts/defaults-cyclic-fail.rs b/tests/ui/associated-consts/defaults-cyclic-fail.rs similarity index 100% rename from src/test/ui/associated-consts/defaults-cyclic-fail.rs rename to tests/ui/associated-consts/defaults-cyclic-fail.rs diff --git a/src/test/ui/associated-consts/defaults-cyclic-fail.stderr b/tests/ui/associated-consts/defaults-cyclic-fail.stderr similarity index 100% rename from src/test/ui/associated-consts/defaults-cyclic-fail.stderr rename to tests/ui/associated-consts/defaults-cyclic-fail.stderr diff --git a/src/test/ui/associated-consts/defaults-cyclic-pass.rs b/tests/ui/associated-consts/defaults-cyclic-pass.rs similarity index 100% rename from src/test/ui/associated-consts/defaults-cyclic-pass.rs rename to tests/ui/associated-consts/defaults-cyclic-pass.rs diff --git a/src/test/ui/associated-consts/defaults-not-assumed-fail.rs b/tests/ui/associated-consts/defaults-not-assumed-fail.rs similarity index 100% rename from src/test/ui/associated-consts/defaults-not-assumed-fail.rs rename to tests/ui/associated-consts/defaults-not-assumed-fail.rs diff --git a/src/test/ui/associated-consts/defaults-not-assumed-fail.stderr b/tests/ui/associated-consts/defaults-not-assumed-fail.stderr similarity index 100% rename from src/test/ui/associated-consts/defaults-not-assumed-fail.stderr rename to tests/ui/associated-consts/defaults-not-assumed-fail.stderr diff --git a/src/test/ui/associated-consts/defaults-not-assumed-pass.rs b/tests/ui/associated-consts/defaults-not-assumed-pass.rs similarity index 100% rename from src/test/ui/associated-consts/defaults-not-assumed-pass.rs rename to tests/ui/associated-consts/defaults-not-assumed-pass.rs diff --git a/src/test/ui/associated-consts/issue-102335-const.rs b/tests/ui/associated-consts/issue-102335-const.rs similarity index 100% rename from src/test/ui/associated-consts/issue-102335-const.rs rename to tests/ui/associated-consts/issue-102335-const.rs diff --git a/src/test/ui/associated-consts/issue-102335-const.stderr b/tests/ui/associated-consts/issue-102335-const.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-102335-const.stderr rename to tests/ui/associated-consts/issue-102335-const.stderr diff --git a/src/test/ui/associated-consts/issue-105330.rs b/tests/ui/associated-consts/issue-105330.rs similarity index 100% rename from src/test/ui/associated-consts/issue-105330.rs rename to tests/ui/associated-consts/issue-105330.rs diff --git a/src/test/ui/associated-consts/issue-105330.stderr b/tests/ui/associated-consts/issue-105330.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-105330.stderr rename to tests/ui/associated-consts/issue-105330.stderr diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.rs diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.stderr b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.stderr rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-impl.stderr diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.rs diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.stderr b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.stderr rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait-default.stderr diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.rs diff --git a/src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.stderr b/tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.stderr rename to tests/ui/associated-consts/issue-24949-assoc-const-static-recursion-trait.stderr diff --git a/src/test/ui/associated-consts/issue-47814.rs b/tests/ui/associated-consts/issue-47814.rs similarity index 100% rename from src/test/ui/associated-consts/issue-47814.rs rename to tests/ui/associated-consts/issue-47814.rs diff --git a/src/test/ui/associated-consts/issue-47814.stderr b/tests/ui/associated-consts/issue-47814.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-47814.stderr rename to tests/ui/associated-consts/issue-47814.stderr diff --git a/src/test/ui/associated-consts/issue-58022.rs b/tests/ui/associated-consts/issue-58022.rs similarity index 100% rename from src/test/ui/associated-consts/issue-58022.rs rename to tests/ui/associated-consts/issue-58022.rs diff --git a/src/test/ui/associated-consts/issue-58022.stderr b/tests/ui/associated-consts/issue-58022.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-58022.stderr rename to tests/ui/associated-consts/issue-58022.stderr diff --git a/src/test/ui/associated-consts/issue-63496.rs b/tests/ui/associated-consts/issue-63496.rs similarity index 100% rename from src/test/ui/associated-consts/issue-63496.rs rename to tests/ui/associated-consts/issue-63496.rs diff --git a/src/test/ui/associated-consts/issue-63496.stderr b/tests/ui/associated-consts/issue-63496.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-63496.stderr rename to tests/ui/associated-consts/issue-63496.stderr diff --git a/src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.noopt.stderr b/tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.noopt.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.noopt.stderr rename to tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.noopt.stderr diff --git a/src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt.stderr b/tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt.stderr rename to tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt.stderr diff --git a/src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr b/tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr rename to tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr diff --git a/src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs b/tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs similarity index 100% rename from src/test/ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs rename to tests/ui/associated-consts/issue-69020-assoc-const-arith-overflow.rs diff --git a/src/test/ui/associated-consts/issue-88599-ref-self.rs b/tests/ui/associated-consts/issue-88599-ref-self.rs similarity index 100% rename from src/test/ui/associated-consts/issue-88599-ref-self.rs rename to tests/ui/associated-consts/issue-88599-ref-self.rs diff --git a/src/test/ui/associated-consts/issue-93775.rs b/tests/ui/associated-consts/issue-93775.rs similarity index 100% rename from src/test/ui/associated-consts/issue-93775.rs rename to tests/ui/associated-consts/issue-93775.rs diff --git a/src/test/ui/associated-consts/issue-93835.rs b/tests/ui/associated-consts/issue-93835.rs similarity index 100% rename from src/test/ui/associated-consts/issue-93835.rs rename to tests/ui/associated-consts/issue-93835.rs diff --git a/src/test/ui/associated-consts/issue-93835.stderr b/tests/ui/associated-consts/issue-93835.stderr similarity index 100% rename from src/test/ui/associated-consts/issue-93835.stderr rename to tests/ui/associated-consts/issue-93835.stderr diff --git a/src/test/ui/associated-consts/mismatched_impl_ty_1.rs b/tests/ui/associated-consts/mismatched_impl_ty_1.rs similarity index 100% rename from src/test/ui/associated-consts/mismatched_impl_ty_1.rs rename to tests/ui/associated-consts/mismatched_impl_ty_1.rs diff --git a/src/test/ui/associated-consts/mismatched_impl_ty_2.rs b/tests/ui/associated-consts/mismatched_impl_ty_2.rs similarity index 100% rename from src/test/ui/associated-consts/mismatched_impl_ty_2.rs rename to tests/ui/associated-consts/mismatched_impl_ty_2.rs diff --git a/src/test/ui/associated-consts/mismatched_impl_ty_3.rs b/tests/ui/associated-consts/mismatched_impl_ty_3.rs similarity index 100% rename from src/test/ui/associated-consts/mismatched_impl_ty_3.rs rename to tests/ui/associated-consts/mismatched_impl_ty_3.rs diff --git a/src/test/ui/associated-consts/shadowed-const.rs b/tests/ui/associated-consts/shadowed-const.rs similarity index 100% rename from src/test/ui/associated-consts/shadowed-const.rs rename to tests/ui/associated-consts/shadowed-const.rs diff --git a/src/test/ui/associated-consts/shadowed-const.stderr b/tests/ui/associated-consts/shadowed-const.stderr similarity index 100% rename from src/test/ui/associated-consts/shadowed-const.stderr rename to tests/ui/associated-consts/shadowed-const.stderr diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-no-body.rs b/tests/ui/associated-inherent-types/assoc-inherent-no-body.rs similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-no-body.rs rename to tests/ui/associated-inherent-types/assoc-inherent-no-body.rs diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-no-body.stderr b/tests/ui/associated-inherent-types/assoc-inherent-no-body.stderr similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-no-body.stderr rename to tests/ui/associated-inherent-types/assoc-inherent-no-body.stderr diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-private.rs b/tests/ui/associated-inherent-types/assoc-inherent-private.rs similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-private.rs rename to tests/ui/associated-inherent-types/assoc-inherent-private.rs diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-private.stderr b/tests/ui/associated-inherent-types/assoc-inherent-private.stderr similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-private.stderr rename to tests/ui/associated-inherent-types/assoc-inherent-private.stderr diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-unstable.rs b/tests/ui/associated-inherent-types/assoc-inherent-unstable.rs similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-unstable.rs rename to tests/ui/associated-inherent-types/assoc-inherent-unstable.rs diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-unstable.stderr b/tests/ui/associated-inherent-types/assoc-inherent-unstable.stderr similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-unstable.stderr rename to tests/ui/associated-inherent-types/assoc-inherent-unstable.stderr diff --git a/src/test/ui/associated-inherent-types/assoc-inherent-use.rs b/tests/ui/associated-inherent-types/assoc-inherent-use.rs similarity index 100% rename from src/test/ui/associated-inherent-types/assoc-inherent-use.rs rename to tests/ui/associated-inherent-types/assoc-inherent-use.rs diff --git a/src/test/ui/associated-inherent-types/auxiliary/assoc-inherent-unstable.rs b/tests/ui/associated-inherent-types/auxiliary/assoc-inherent-unstable.rs similarity index 100% rename from src/test/ui/associated-inherent-types/auxiliary/assoc-inherent-unstable.rs rename to tests/ui/associated-inherent-types/auxiliary/assoc-inherent-unstable.rs diff --git a/src/test/ui/associated-inherent-types/issue-104260.rs b/tests/ui/associated-inherent-types/issue-104260.rs similarity index 100% rename from src/test/ui/associated-inherent-types/issue-104260.rs rename to tests/ui/associated-inherent-types/issue-104260.rs diff --git a/src/test/ui/associated-inherent-types/normalize-projection-0.rs b/tests/ui/associated-inherent-types/normalize-projection-0.rs similarity index 100% rename from src/test/ui/associated-inherent-types/normalize-projection-0.rs rename to tests/ui/associated-inherent-types/normalize-projection-0.rs diff --git a/src/test/ui/associated-inherent-types/normalize-projection-1.rs b/tests/ui/associated-inherent-types/normalize-projection-1.rs similarity index 100% rename from src/test/ui/associated-inherent-types/normalize-projection-1.rs rename to tests/ui/associated-inherent-types/normalize-projection-1.rs diff --git a/src/test/ui/associated-inherent-types/struct-generics.rs b/tests/ui/associated-inherent-types/struct-generics.rs similarity index 100% rename from src/test/ui/associated-inherent-types/struct-generics.rs rename to tests/ui/associated-inherent-types/struct-generics.rs diff --git a/src/test/ui/associated-inherent-types/style.rs b/tests/ui/associated-inherent-types/style.rs similarity index 100% rename from src/test/ui/associated-inherent-types/style.rs rename to tests/ui/associated-inherent-types/style.rs diff --git a/src/test/ui/associated-inherent-types/style.stderr b/tests/ui/associated-inherent-types/style.stderr similarity index 100% rename from src/test/ui/associated-inherent-types/style.stderr rename to tests/ui/associated-inherent-types/style.stderr diff --git a/src/test/ui/associated-item/associated-item-duplicate-bounds.rs b/tests/ui/associated-item/associated-item-duplicate-bounds.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-bounds.rs rename to tests/ui/associated-item/associated-item-duplicate-bounds.rs diff --git a/src/test/ui/associated-item/associated-item-duplicate-bounds.stderr b/tests/ui/associated-item/associated-item-duplicate-bounds.stderr similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-bounds.stderr rename to tests/ui/associated-item/associated-item-duplicate-bounds.stderr diff --git a/src/test/ui/associated-item/associated-item-duplicate-names-2.rs b/tests/ui/associated-item/associated-item-duplicate-names-2.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names-2.rs rename to tests/ui/associated-item/associated-item-duplicate-names-2.rs diff --git a/src/test/ui/associated-item/associated-item-duplicate-names-2.stderr b/tests/ui/associated-item/associated-item-duplicate-names-2.stderr similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names-2.stderr rename to tests/ui/associated-item/associated-item-duplicate-names-2.stderr diff --git a/src/test/ui/associated-item/associated-item-duplicate-names-3.rs b/tests/ui/associated-item/associated-item-duplicate-names-3.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names-3.rs rename to tests/ui/associated-item/associated-item-duplicate-names-3.rs diff --git a/src/test/ui/associated-item/associated-item-duplicate-names-3.stderr b/tests/ui/associated-item/associated-item-duplicate-names-3.stderr similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names-3.stderr rename to tests/ui/associated-item/associated-item-duplicate-names-3.stderr diff --git a/src/test/ui/associated-item/associated-item-duplicate-names.rs b/tests/ui/associated-item/associated-item-duplicate-names.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names.rs rename to tests/ui/associated-item/associated-item-duplicate-names.rs diff --git a/src/test/ui/associated-item/associated-item-duplicate-names.stderr b/tests/ui/associated-item/associated-item-duplicate-names.stderr similarity index 100% rename from src/test/ui/associated-item/associated-item-duplicate-names.stderr rename to tests/ui/associated-item/associated-item-duplicate-names.stderr diff --git a/src/test/ui/associated-item/associated-item-enum.rs b/tests/ui/associated-item/associated-item-enum.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-enum.rs rename to tests/ui/associated-item/associated-item-enum.rs diff --git a/src/test/ui/associated-item/associated-item-enum.stderr b/tests/ui/associated-item/associated-item-enum.stderr similarity index 100% rename from src/test/ui/associated-item/associated-item-enum.stderr rename to tests/ui/associated-item/associated-item-enum.stderr diff --git a/src/test/ui/associated-item/associated-item-two-bounds.rs b/tests/ui/associated-item/associated-item-two-bounds.rs similarity index 100% rename from src/test/ui/associated-item/associated-item-two-bounds.rs rename to tests/ui/associated-item/associated-item-two-bounds.rs diff --git a/src/test/ui/associated-item/impl-duplicate-methods.rs b/tests/ui/associated-item/impl-duplicate-methods.rs similarity index 100% rename from src/test/ui/associated-item/impl-duplicate-methods.rs rename to tests/ui/associated-item/impl-duplicate-methods.rs diff --git a/src/test/ui/associated-item/impl-duplicate-methods.stderr b/tests/ui/associated-item/impl-duplicate-methods.stderr similarity index 100% rename from src/test/ui/associated-item/impl-duplicate-methods.stderr rename to tests/ui/associated-item/impl-duplicate-methods.stderr diff --git a/src/test/ui/associated-item/issue-105449.rs b/tests/ui/associated-item/issue-105449.rs similarity index 100% rename from src/test/ui/associated-item/issue-105449.rs rename to tests/ui/associated-item/issue-105449.rs diff --git a/src/test/ui/associated-item/issue-48027.rs b/tests/ui/associated-item/issue-48027.rs similarity index 100% rename from src/test/ui/associated-item/issue-48027.rs rename to tests/ui/associated-item/issue-48027.rs diff --git a/src/test/ui/associated-item/issue-48027.stderr b/tests/ui/associated-item/issue-48027.stderr similarity index 100% rename from src/test/ui/associated-item/issue-48027.stderr rename to tests/ui/associated-item/issue-48027.stderr diff --git a/src/test/ui/associated-item/issue-87638.fixed b/tests/ui/associated-item/issue-87638.fixed similarity index 100% rename from src/test/ui/associated-item/issue-87638.fixed rename to tests/ui/associated-item/issue-87638.fixed diff --git a/src/test/ui/associated-item/issue-87638.rs b/tests/ui/associated-item/issue-87638.rs similarity index 100% rename from src/test/ui/associated-item/issue-87638.rs rename to tests/ui/associated-item/issue-87638.rs diff --git a/src/test/ui/associated-item/issue-87638.stderr b/tests/ui/associated-item/issue-87638.stderr similarity index 100% rename from src/test/ui/associated-item/issue-87638.stderr rename to tests/ui/associated-item/issue-87638.stderr diff --git a/src/test/ui/associated-path-shl.rs b/tests/ui/associated-path-shl.rs similarity index 100% rename from src/test/ui/associated-path-shl.rs rename to tests/ui/associated-path-shl.rs diff --git a/src/test/ui/associated-path-shl.stderr b/tests/ui/associated-path-shl.stderr similarity index 100% rename from src/test/ui/associated-path-shl.stderr rename to tests/ui/associated-path-shl.stderr diff --git a/src/test/ui/associated-type-bounds/ambiguous-associated-type.rs b/tests/ui/associated-type-bounds/ambiguous-associated-type.rs similarity index 100% rename from src/test/ui/associated-type-bounds/ambiguous-associated-type.rs rename to tests/ui/associated-type-bounds/ambiguous-associated-type.rs diff --git a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs b/tests/ui/associated-type-bounds/ambiguous-associated-type2.rs similarity index 100% rename from src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs rename to tests/ui/associated-type-bounds/ambiguous-associated-type2.rs diff --git a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr b/tests/ui/associated-type-bounds/ambiguous-associated-type2.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr rename to tests/ui/associated-type-bounds/ambiguous-associated-type2.stderr diff --git a/src/test/ui/associated-type-bounds/assoc-type-bound-through-where-clause.rs b/tests/ui/associated-type-bounds/assoc-type-bound-through-where-clause.rs similarity index 100% rename from src/test/ui/associated-type-bounds/assoc-type-bound-through-where-clause.rs rename to tests/ui/associated-type-bounds/assoc-type-bound-through-where-clause.rs diff --git a/src/test/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs similarity index 100% rename from src/test/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs rename to tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs diff --git a/src/test/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr rename to tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr diff --git a/src/test/ui/associated-type-bounds/associated-item-through-where-clause.rs b/tests/ui/associated-type-bounds/associated-item-through-where-clause.rs similarity index 100% rename from src/test/ui/associated-type-bounds/associated-item-through-where-clause.rs rename to tests/ui/associated-type-bounds/associated-item-through-where-clause.rs diff --git a/src/test/ui/associated-type-bounds/auxiliary/fn-aux.rs b/tests/ui/associated-type-bounds/auxiliary/fn-aux.rs similarity index 100% rename from src/test/ui/associated-type-bounds/auxiliary/fn-aux.rs rename to tests/ui/associated-type-bounds/auxiliary/fn-aux.rs diff --git a/src/test/ui/associated-type-bounds/auxiliary/fn-dyn-aux.rs b/tests/ui/associated-type-bounds/auxiliary/fn-dyn-aux.rs similarity index 100% rename from src/test/ui/associated-type-bounds/auxiliary/fn-dyn-aux.rs rename to tests/ui/associated-type-bounds/auxiliary/fn-dyn-aux.rs diff --git a/src/test/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs b/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs similarity index 100% rename from src/test/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs rename to tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs diff --git a/src/test/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.stderr b/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.stderr rename to tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.stderr diff --git a/src/test/ui/associated-type-bounds/binder-on-bound.rs b/tests/ui/associated-type-bounds/binder-on-bound.rs similarity index 100% rename from src/test/ui/associated-type-bounds/binder-on-bound.rs rename to tests/ui/associated-type-bounds/binder-on-bound.rs diff --git a/src/test/ui/associated-type-bounds/binder-on-bound.stderr b/tests/ui/associated-type-bounds/binder-on-bound.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/binder-on-bound.stderr rename to tests/ui/associated-type-bounds/binder-on-bound.stderr diff --git a/src/test/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs b/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs similarity index 100% rename from src/test/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs rename to tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs diff --git a/src/test/ui/associated-type-bounds/bounds-on-assoc-in-trait.stderr b/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/bounds-on-assoc-in-trait.stderr rename to tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.stderr diff --git a/src/test/ui/associated-type-bounds/const-projection-err.gce.stderr b/tests/ui/associated-type-bounds/const-projection-err.gce.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/const-projection-err.gce.stderr rename to tests/ui/associated-type-bounds/const-projection-err.gce.stderr diff --git a/src/test/ui/associated-type-bounds/const-projection-err.rs b/tests/ui/associated-type-bounds/const-projection-err.rs similarity index 100% rename from src/test/ui/associated-type-bounds/const-projection-err.rs rename to tests/ui/associated-type-bounds/const-projection-err.rs diff --git a/src/test/ui/associated-type-bounds/const-projection-err.stock.stderr b/tests/ui/associated-type-bounds/const-projection-err.stock.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/const-projection-err.stock.stderr rename to tests/ui/associated-type-bounds/const-projection-err.stock.stderr diff --git a/src/test/ui/associated-type-bounds/duplicate.rs b/tests/ui/associated-type-bounds/duplicate.rs similarity index 100% rename from src/test/ui/associated-type-bounds/duplicate.rs rename to tests/ui/associated-type-bounds/duplicate.rs diff --git a/src/test/ui/associated-type-bounds/duplicate.stderr b/tests/ui/associated-type-bounds/duplicate.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/duplicate.stderr rename to tests/ui/associated-type-bounds/duplicate.stderr diff --git a/src/test/ui/associated-type-bounds/dyn-impl-trait-type.rs b/tests/ui/associated-type-bounds/dyn-impl-trait-type.rs similarity index 100% rename from src/test/ui/associated-type-bounds/dyn-impl-trait-type.rs rename to tests/ui/associated-type-bounds/dyn-impl-trait-type.rs diff --git a/src/test/ui/associated-type-bounds/dyn-rpit-and-let.rs b/tests/ui/associated-type-bounds/dyn-rpit-and-let.rs similarity index 100% rename from src/test/ui/associated-type-bounds/dyn-rpit-and-let.rs rename to tests/ui/associated-type-bounds/dyn-rpit-and-let.rs diff --git a/src/test/ui/associated-type-bounds/elision.rs b/tests/ui/associated-type-bounds/elision.rs similarity index 100% rename from src/test/ui/associated-type-bounds/elision.rs rename to tests/ui/associated-type-bounds/elision.rs diff --git a/src/test/ui/associated-type-bounds/elision.stderr b/tests/ui/associated-type-bounds/elision.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/elision.stderr rename to tests/ui/associated-type-bounds/elision.stderr diff --git a/src/test/ui/associated-type-bounds/entails-sized-object-safety.rs b/tests/ui/associated-type-bounds/entails-sized-object-safety.rs similarity index 100% rename from src/test/ui/associated-type-bounds/entails-sized-object-safety.rs rename to tests/ui/associated-type-bounds/entails-sized-object-safety.rs diff --git a/src/test/ui/associated-type-bounds/enum-bounds.rs b/tests/ui/associated-type-bounds/enum-bounds.rs similarity index 100% rename from src/test/ui/associated-type-bounds/enum-bounds.rs rename to tests/ui/associated-type-bounds/enum-bounds.rs diff --git a/src/test/ui/associated-type-bounds/fn-apit.rs b/tests/ui/associated-type-bounds/fn-apit.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-apit.rs rename to tests/ui/associated-type-bounds/fn-apit.rs diff --git a/src/test/ui/associated-type-bounds/fn-aux.rs b/tests/ui/associated-type-bounds/fn-aux.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-aux.rs rename to tests/ui/associated-type-bounds/fn-aux.rs diff --git a/src/test/ui/associated-type-bounds/fn-dyn-apit.rs b/tests/ui/associated-type-bounds/fn-dyn-apit.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-dyn-apit.rs rename to tests/ui/associated-type-bounds/fn-dyn-apit.rs diff --git a/src/test/ui/associated-type-bounds/fn-inline.rs b/tests/ui/associated-type-bounds/fn-inline.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-inline.rs rename to tests/ui/associated-type-bounds/fn-inline.rs diff --git a/src/test/ui/associated-type-bounds/fn-where.rs b/tests/ui/associated-type-bounds/fn-where.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-where.rs rename to tests/ui/associated-type-bounds/fn-where.rs diff --git a/src/test/ui/associated-type-bounds/fn-wrap-apit.rs b/tests/ui/associated-type-bounds/fn-wrap-apit.rs similarity index 100% rename from src/test/ui/associated-type-bounds/fn-wrap-apit.rs rename to tests/ui/associated-type-bounds/fn-wrap-apit.rs diff --git a/src/test/ui/associated-type-bounds/handle-predicates-that-can-define-assoc-type.rs b/tests/ui/associated-type-bounds/handle-predicates-that-can-define-assoc-type.rs similarity index 100% rename from src/test/ui/associated-type-bounds/handle-predicates-that-can-define-assoc-type.rs rename to tests/ui/associated-type-bounds/handle-predicates-that-can-define-assoc-type.rs diff --git a/src/test/ui/associated-type-bounds/hrtb.rs b/tests/ui/associated-type-bounds/hrtb.rs similarity index 100% rename from src/test/ui/associated-type-bounds/hrtb.rs rename to tests/ui/associated-type-bounds/hrtb.rs diff --git a/src/test/ui/associated-type-bounds/implied-region-constraints.rs b/tests/ui/associated-type-bounds/implied-region-constraints.rs similarity index 100% rename from src/test/ui/associated-type-bounds/implied-region-constraints.rs rename to tests/ui/associated-type-bounds/implied-region-constraints.rs diff --git a/src/test/ui/associated-type-bounds/implied-region-constraints.stderr b/tests/ui/associated-type-bounds/implied-region-constraints.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/implied-region-constraints.stderr rename to tests/ui/associated-type-bounds/implied-region-constraints.stderr diff --git a/src/test/ui/associated-type-bounds/inside-adt.rs b/tests/ui/associated-type-bounds/inside-adt.rs similarity index 100% rename from src/test/ui/associated-type-bounds/inside-adt.rs rename to tests/ui/associated-type-bounds/inside-adt.rs diff --git a/src/test/ui/associated-type-bounds/inside-adt.stderr b/tests/ui/associated-type-bounds/inside-adt.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/inside-adt.stderr rename to tests/ui/associated-type-bounds/inside-adt.stderr diff --git a/src/test/ui/associated-type-bounds/issue-102335-ty.rs b/tests/ui/associated-type-bounds/issue-102335-ty.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-102335-ty.rs rename to tests/ui/associated-type-bounds/issue-102335-ty.rs diff --git a/src/test/ui/associated-type-bounds/issue-102335-ty.stderr b/tests/ui/associated-type-bounds/issue-102335-ty.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/issue-102335-ty.stderr rename to tests/ui/associated-type-bounds/issue-102335-ty.stderr diff --git a/src/test/ui/associated-type-bounds/issue-61752.rs b/tests/ui/associated-type-bounds/issue-61752.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-61752.rs rename to tests/ui/associated-type-bounds/issue-61752.rs diff --git a/src/test/ui/associated-type-bounds/issue-70292.rs b/tests/ui/associated-type-bounds/issue-70292.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-70292.rs rename to tests/ui/associated-type-bounds/issue-70292.rs diff --git a/src/test/ui/associated-type-bounds/issue-71443-1.rs b/tests/ui/associated-type-bounds/issue-71443-1.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-71443-1.rs rename to tests/ui/associated-type-bounds/issue-71443-1.rs diff --git a/src/test/ui/associated-type-bounds/issue-71443-1.stderr b/tests/ui/associated-type-bounds/issue-71443-1.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/issue-71443-1.stderr rename to tests/ui/associated-type-bounds/issue-71443-1.stderr diff --git a/src/test/ui/associated-type-bounds/issue-71443-2.rs b/tests/ui/associated-type-bounds/issue-71443-2.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-71443-2.rs rename to tests/ui/associated-type-bounds/issue-71443-2.rs diff --git a/src/test/ui/associated-type-bounds/issue-73818.rs b/tests/ui/associated-type-bounds/issue-73818.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-73818.rs rename to tests/ui/associated-type-bounds/issue-73818.rs diff --git a/src/test/ui/associated-type-bounds/issue-79949.rs b/tests/ui/associated-type-bounds/issue-79949.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-79949.rs rename to tests/ui/associated-type-bounds/issue-79949.rs diff --git a/src/test/ui/associated-type-bounds/issue-81193.rs b/tests/ui/associated-type-bounds/issue-81193.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-81193.rs rename to tests/ui/associated-type-bounds/issue-81193.rs diff --git a/src/test/ui/associated-type-bounds/issue-83017.rs b/tests/ui/associated-type-bounds/issue-83017.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-83017.rs rename to tests/ui/associated-type-bounds/issue-83017.rs diff --git a/src/test/ui/associated-type-bounds/issue-99828.rs b/tests/ui/associated-type-bounds/issue-99828.rs similarity index 100% rename from src/test/ui/associated-type-bounds/issue-99828.rs rename to tests/ui/associated-type-bounds/issue-99828.rs diff --git a/src/test/ui/associated-type-bounds/issue-99828.stderr b/tests/ui/associated-type-bounds/issue-99828.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/issue-99828.stderr rename to tests/ui/associated-type-bounds/issue-99828.stderr diff --git a/src/test/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.rs b/tests/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.rs similarity index 100% rename from src/test/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.rs rename to tests/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.rs diff --git a/src/test/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.stderr b/tests/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.stderr rename to tests/ui/associated-type-bounds/missing-trait-bound-for-assoc-fails.stderr diff --git a/src/test/ui/associated-type-bounds/order-dependent-bounds-issue-54121.rs b/tests/ui/associated-type-bounds/order-dependent-bounds-issue-54121.rs similarity index 100% rename from src/test/ui/associated-type-bounds/order-dependent-bounds-issue-54121.rs rename to tests/ui/associated-type-bounds/order-dependent-bounds-issue-54121.rs diff --git a/src/test/ui/associated-type-bounds/rpit.rs b/tests/ui/associated-type-bounds/rpit.rs similarity index 100% rename from src/test/ui/associated-type-bounds/rpit.rs rename to tests/ui/associated-type-bounds/rpit.rs diff --git a/src/test/ui/associated-type-bounds/struct-bounds.rs b/tests/ui/associated-type-bounds/struct-bounds.rs similarity index 100% rename from src/test/ui/associated-type-bounds/struct-bounds.rs rename to tests/ui/associated-type-bounds/struct-bounds.rs diff --git a/src/test/ui/associated-type-bounds/supertrait-referencing-self.rs b/tests/ui/associated-type-bounds/supertrait-referencing-self.rs similarity index 100% rename from src/test/ui/associated-type-bounds/supertrait-referencing-self.rs rename to tests/ui/associated-type-bounds/supertrait-referencing-self.rs diff --git a/src/test/ui/associated-type-bounds/supertrait-referencing.rs b/tests/ui/associated-type-bounds/supertrait-referencing.rs similarity index 100% rename from src/test/ui/associated-type-bounds/supertrait-referencing.rs rename to tests/ui/associated-type-bounds/supertrait-referencing.rs diff --git a/src/test/ui/associated-type-bounds/supertrait-where-referencing-self.rs b/tests/ui/associated-type-bounds/supertrait-where-referencing-self.rs similarity index 100% rename from src/test/ui/associated-type-bounds/supertrait-where-referencing-self.rs rename to tests/ui/associated-type-bounds/supertrait-where-referencing-self.rs diff --git a/src/test/ui/associated-type-bounds/trait-alias-impl-trait.rs b/tests/ui/associated-type-bounds/trait-alias-impl-trait.rs similarity index 100% rename from src/test/ui/associated-type-bounds/trait-alias-impl-trait.rs rename to tests/ui/associated-type-bounds/trait-alias-impl-trait.rs diff --git a/src/test/ui/associated-type-bounds/trait-params.rs b/tests/ui/associated-type-bounds/trait-params.rs similarity index 100% rename from src/test/ui/associated-type-bounds/trait-params.rs rename to tests/ui/associated-type-bounds/trait-params.rs diff --git a/src/test/ui/associated-type-bounds/traits-assoc-anonymized.rs b/tests/ui/associated-type-bounds/traits-assoc-anonymized.rs similarity index 100% rename from src/test/ui/associated-type-bounds/traits-assoc-anonymized.rs rename to tests/ui/associated-type-bounds/traits-assoc-anonymized.rs diff --git a/src/test/ui/associated-type-bounds/traits-assoc-type-macros.rs b/tests/ui/associated-type-bounds/traits-assoc-type-macros.rs similarity index 100% rename from src/test/ui/associated-type-bounds/traits-assoc-type-macros.rs rename to tests/ui/associated-type-bounds/traits-assoc-type-macros.rs diff --git a/src/test/ui/associated-type-bounds/type-alias.rs b/tests/ui/associated-type-bounds/type-alias.rs similarity index 100% rename from src/test/ui/associated-type-bounds/type-alias.rs rename to tests/ui/associated-type-bounds/type-alias.rs diff --git a/src/test/ui/associated-type-bounds/type-alias.stderr b/tests/ui/associated-type-bounds/type-alias.stderr similarity index 100% rename from src/test/ui/associated-type-bounds/type-alias.stderr rename to tests/ui/associated-type-bounds/type-alias.stderr diff --git a/src/test/ui/associated-type-bounds/union-bounds.rs b/tests/ui/associated-type-bounds/union-bounds.rs similarity index 100% rename from src/test/ui/associated-type-bounds/union-bounds.rs rename to tests/ui/associated-type-bounds/union-bounds.rs diff --git a/src/test/ui/associated-types/associate-type-bound-normalization.rs b/tests/ui/associated-types/associate-type-bound-normalization.rs similarity index 100% rename from src/test/ui/associated-types/associate-type-bound-normalization.rs rename to tests/ui/associated-types/associate-type-bound-normalization.rs diff --git a/src/test/ui/associated-types/associated-item-long-paths.rs b/tests/ui/associated-types/associated-item-long-paths.rs similarity index 100% rename from src/test/ui/associated-types/associated-item-long-paths.rs rename to tests/ui/associated-types/associated-item-long-paths.rs diff --git a/src/test/ui/associated-types/associated-type-destructuring-assignment.rs b/tests/ui/associated-types/associated-type-destructuring-assignment.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-destructuring-assignment.rs rename to tests/ui/associated-types/associated-type-destructuring-assignment.rs diff --git a/src/test/ui/associated-types/associated-type-macro.rs b/tests/ui/associated-types/associated-type-macro.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-macro.rs rename to tests/ui/associated-types/associated-type-macro.rs diff --git a/src/test/ui/associated-types/associated-type-macro.stderr b/tests/ui/associated-types/associated-type-macro.stderr similarity index 100% rename from src/test/ui/associated-types/associated-type-macro.stderr rename to tests/ui/associated-types/associated-type-macro.stderr diff --git a/src/test/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.rs b/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.rs rename to tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.rs diff --git a/src/test/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr b/tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr rename to tests/ui/associated-types/associated-type-projection-ambig-between-bound-and-where-clause.stderr diff --git a/src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs b/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs rename to tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs diff --git a/src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr b/tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr rename to tests/ui/associated-types/associated-type-projection-from-multiple-supertraits.stderr diff --git a/src/test/ui/associated-types/associated-type-projection-from-supertrait.rs b/tests/ui/associated-types/associated-type-projection-from-supertrait.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-from-supertrait.rs rename to tests/ui/associated-types/associated-type-projection-from-supertrait.rs diff --git a/src/test/ui/associated-types/associated-type-projection-from-supertrait.stderr b/tests/ui/associated-types/associated-type-projection-from-supertrait.stderr similarity index 100% rename from src/test/ui/associated-types/associated-type-projection-from-supertrait.stderr rename to tests/ui/associated-types/associated-type-projection-from-supertrait.stderr diff --git a/src/test/ui/associated-types/associated-type-struct-construction.rs b/tests/ui/associated-types/associated-type-struct-construction.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-struct-construction.rs rename to tests/ui/associated-types/associated-type-struct-construction.rs diff --git a/src/test/ui/associated-types/associated-type-tuple-struct-construction.rs b/tests/ui/associated-types/associated-type-tuple-struct-construction.rs similarity index 100% rename from src/test/ui/associated-types/associated-type-tuple-struct-construction.rs rename to tests/ui/associated-types/associated-type-tuple-struct-construction.rs diff --git a/src/test/ui/associated-types/associated-type-tuple-struct-construction.stderr b/tests/ui/associated-types/associated-type-tuple-struct-construction.stderr similarity index 100% rename from src/test/ui/associated-types/associated-type-tuple-struct-construction.stderr rename to tests/ui/associated-types/associated-type-tuple-struct-construction.stderr diff --git a/src/test/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.rs b/tests/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.rs rename to tests/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.rs diff --git a/src/test/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.stderr b/tests/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.stderr rename to tests/ui/associated-types/associated-types-ICE-when-projecting-out-of-err.stderr diff --git a/src/test/ui/associated-types/associated-types-basic.rs b/tests/ui/associated-types/associated-types-basic.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-basic.rs rename to tests/ui/associated-types/associated-types-basic.rs diff --git a/src/test/ui/associated-types/associated-types-binding-in-trait.rs b/tests/ui/associated-types/associated-types-binding-in-trait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-binding-in-trait.rs rename to tests/ui/associated-types/associated-types-binding-in-trait.rs diff --git a/src/test/ui/associated-types/associated-types-binding-in-where-clause.rs b/tests/ui/associated-types/associated-types-binding-in-where-clause.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-binding-in-where-clause.rs rename to tests/ui/associated-types/associated-types-binding-in-where-clause.rs diff --git a/src/test/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.rs b/tests/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.rs rename to tests/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.rs diff --git a/src/test/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.stderr b/tests/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.stderr rename to tests/ui/associated-types/associated-types-binding-to-type-defined-in-supertrait.stderr diff --git a/src/test/ui/associated-types/associated-types-bound-ambiguity.rs b/tests/ui/associated-types/associated-types-bound-ambiguity.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-bound-ambiguity.rs rename to tests/ui/associated-types/associated-types-bound-ambiguity.rs diff --git a/src/test/ui/associated-types/associated-types-bound-failure.fixed b/tests/ui/associated-types/associated-types-bound-failure.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-bound-failure.fixed rename to tests/ui/associated-types/associated-types-bound-failure.fixed diff --git a/src/test/ui/associated-types/associated-types-bound-failure.rs b/tests/ui/associated-types/associated-types-bound-failure.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-bound-failure.rs rename to tests/ui/associated-types/associated-types-bound-failure.rs diff --git a/src/test/ui/associated-types/associated-types-bound-failure.stderr b/tests/ui/associated-types/associated-types-bound-failure.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-bound-failure.stderr rename to tests/ui/associated-types/associated-types-bound-failure.stderr diff --git a/src/test/ui/associated-types/associated-types-bound.rs b/tests/ui/associated-types/associated-types-bound.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-bound.rs rename to tests/ui/associated-types/associated-types-bound.rs diff --git a/src/test/ui/associated-types/associated-types-cc.rs b/tests/ui/associated-types/associated-types-cc.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-cc.rs rename to tests/ui/associated-types/associated-types-cc.rs diff --git a/src/test/ui/associated-types/associated-types-coherence-failure.rs b/tests/ui/associated-types/associated-types-coherence-failure.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-coherence-failure.rs rename to tests/ui/associated-types/associated-types-coherence-failure.rs diff --git a/src/test/ui/associated-types/associated-types-coherence-failure.stderr b/tests/ui/associated-types/associated-types-coherence-failure.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-coherence-failure.stderr rename to tests/ui/associated-types/associated-types-coherence-failure.stderr diff --git a/src/test/ui/associated-types/associated-types-conditional-dispatch.rs b/tests/ui/associated-types/associated-types-conditional-dispatch.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-conditional-dispatch.rs rename to tests/ui/associated-types/associated-types-conditional-dispatch.rs diff --git a/src/test/ui/associated-types/associated-types-constant-type.rs b/tests/ui/associated-types/associated-types-constant-type.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-constant-type.rs rename to tests/ui/associated-types/associated-types-constant-type.rs diff --git a/src/test/ui/associated-types/associated-types-doubleendediterator-object.rs b/tests/ui/associated-types/associated-types-doubleendediterator-object.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-doubleendediterator-object.rs rename to tests/ui/associated-types/associated-types-doubleendediterator-object.rs diff --git a/src/test/ui/associated-types/associated-types-duplicate-binding-in-env-hrtb.rs b/tests/ui/associated-types/associated-types-duplicate-binding-in-env-hrtb.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-duplicate-binding-in-env-hrtb.rs rename to tests/ui/associated-types/associated-types-duplicate-binding-in-env-hrtb.rs diff --git a/src/test/ui/associated-types/associated-types-duplicate-binding-in-env.rs b/tests/ui/associated-types/associated-types-duplicate-binding-in-env.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-duplicate-binding-in-env.rs rename to tests/ui/associated-types/associated-types-duplicate-binding-in-env.rs diff --git a/src/test/ui/associated-types/associated-types-enum-field-named.rs b/tests/ui/associated-types/associated-types-enum-field-named.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-enum-field-named.rs rename to tests/ui/associated-types/associated-types-enum-field-named.rs diff --git a/src/test/ui/associated-types/associated-types-enum-field-numbered.rs b/tests/ui/associated-types/associated-types-enum-field-numbered.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-enum-field-numbered.rs rename to tests/ui/associated-types/associated-types-enum-field-numbered.rs diff --git a/src/test/ui/associated-types/associated-types-eq-1.rs b/tests/ui/associated-types/associated-types-eq-1.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-1.rs rename to tests/ui/associated-types/associated-types-eq-1.rs diff --git a/src/test/ui/associated-types/associated-types-eq-1.stderr b/tests/ui/associated-types/associated-types-eq-1.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-1.stderr rename to tests/ui/associated-types/associated-types-eq-1.stderr diff --git a/src/test/ui/associated-types/associated-types-eq-2.rs b/tests/ui/associated-types/associated-types-eq-2.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-2.rs rename to tests/ui/associated-types/associated-types-eq-2.rs diff --git a/src/test/ui/associated-types/associated-types-eq-2.stderr b/tests/ui/associated-types/associated-types-eq-2.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-2.stderr rename to tests/ui/associated-types/associated-types-eq-2.stderr diff --git a/src/test/ui/associated-types/associated-types-eq-3.rs b/tests/ui/associated-types/associated-types-eq-3.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-3.rs rename to tests/ui/associated-types/associated-types-eq-3.rs diff --git a/src/test/ui/associated-types/associated-types-eq-3.stderr b/tests/ui/associated-types/associated-types-eq-3.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-3.stderr rename to tests/ui/associated-types/associated-types-eq-3.stderr diff --git a/src/test/ui/associated-types/associated-types-eq-expr-path.rs b/tests/ui/associated-types/associated-types-eq-expr-path.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-expr-path.rs rename to tests/ui/associated-types/associated-types-eq-expr-path.rs diff --git a/src/test/ui/associated-types/associated-types-eq-expr-path.stderr b/tests/ui/associated-types/associated-types-eq-expr-path.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-expr-path.stderr rename to tests/ui/associated-types/associated-types-eq-expr-path.stderr diff --git a/src/test/ui/associated-types/associated-types-eq-hr.rs b/tests/ui/associated-types/associated-types-eq-hr.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-hr.rs rename to tests/ui/associated-types/associated-types-eq-hr.rs diff --git a/src/test/ui/associated-types/associated-types-eq-hr.stderr b/tests/ui/associated-types/associated-types-eq-hr.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-hr.stderr rename to tests/ui/associated-types/associated-types-eq-hr.stderr diff --git a/src/test/ui/associated-types/associated-types-eq-obj.rs b/tests/ui/associated-types/associated-types-eq-obj.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-eq-obj.rs rename to tests/ui/associated-types/associated-types-eq-obj.rs diff --git a/src/test/ui/associated-types/associated-types-for-unimpl-trait.fixed b/tests/ui/associated-types/associated-types-for-unimpl-trait.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-for-unimpl-trait.fixed rename to tests/ui/associated-types/associated-types-for-unimpl-trait.fixed diff --git a/src/test/ui/associated-types/associated-types-for-unimpl-trait.rs b/tests/ui/associated-types/associated-types-for-unimpl-trait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-for-unimpl-trait.rs rename to tests/ui/associated-types/associated-types-for-unimpl-trait.rs diff --git a/src/test/ui/associated-types/associated-types-for-unimpl-trait.stderr b/tests/ui/associated-types/associated-types-for-unimpl-trait.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-for-unimpl-trait.stderr rename to tests/ui/associated-types/associated-types-for-unimpl-trait.stderr diff --git a/src/test/ui/associated-types/associated-types-from-supertrait.rs b/tests/ui/associated-types/associated-types-from-supertrait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-from-supertrait.rs rename to tests/ui/associated-types/associated-types-from-supertrait.rs diff --git a/src/test/ui/associated-types/associated-types-impl-redirect.rs b/tests/ui/associated-types/associated-types-impl-redirect.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-impl-redirect.rs rename to tests/ui/associated-types/associated-types-impl-redirect.rs diff --git a/src/test/ui/associated-types/associated-types-in-ambiguous-context.rs b/tests/ui/associated-types/associated-types-in-ambiguous-context.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-ambiguous-context.rs rename to tests/ui/associated-types/associated-types-in-ambiguous-context.rs diff --git a/src/test/ui/associated-types/associated-types-in-ambiguous-context.stderr b/tests/ui/associated-types/associated-types-in-ambiguous-context.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-in-ambiguous-context.stderr rename to tests/ui/associated-types/associated-types-in-ambiguous-context.stderr diff --git a/src/test/ui/associated-types/associated-types-in-bound-type-arg.rs b/tests/ui/associated-types/associated-types-in-bound-type-arg.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-bound-type-arg.rs rename to tests/ui/associated-types/associated-types-in-bound-type-arg.rs diff --git a/src/test/ui/associated-types/associated-types-in-default-method.rs b/tests/ui/associated-types/associated-types-in-default-method.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-default-method.rs rename to tests/ui/associated-types/associated-types-in-default-method.rs diff --git a/src/test/ui/associated-types/associated-types-in-fn.rs b/tests/ui/associated-types/associated-types-in-fn.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-fn.rs rename to tests/ui/associated-types/associated-types-in-fn.rs diff --git a/src/test/ui/associated-types/associated-types-in-impl-generics.rs b/tests/ui/associated-types/associated-types-in-impl-generics.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-impl-generics.rs rename to tests/ui/associated-types/associated-types-in-impl-generics.rs diff --git a/src/test/ui/associated-types/associated-types-in-inherent-method.rs b/tests/ui/associated-types/associated-types-in-inherent-method.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-in-inherent-method.rs rename to tests/ui/associated-types/associated-types-in-inherent-method.rs diff --git a/src/test/ui/associated-types/associated-types-incomplete-object.rs b/tests/ui/associated-types/associated-types-incomplete-object.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-incomplete-object.rs rename to tests/ui/associated-types/associated-types-incomplete-object.rs diff --git a/src/test/ui/associated-types/associated-types-incomplete-object.stderr b/tests/ui/associated-types/associated-types-incomplete-object.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-incomplete-object.stderr rename to tests/ui/associated-types/associated-types-incomplete-object.stderr diff --git a/src/test/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.rs b/tests/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.rs rename to tests/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.rs diff --git a/src/test/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.stderr b/tests/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.stderr rename to tests/ui/associated-types/associated-types-invalid-trait-ref-issue-18865.stderr diff --git a/src/test/ui/associated-types/associated-types-issue-17359.rs b/tests/ui/associated-types/associated-types-issue-17359.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-17359.rs rename to tests/ui/associated-types/associated-types-issue-17359.rs diff --git a/src/test/ui/associated-types/associated-types-issue-17359.stderr b/tests/ui/associated-types/associated-types-issue-17359.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-17359.stderr rename to tests/ui/associated-types/associated-types-issue-17359.stderr diff --git a/src/test/ui/associated-types/associated-types-issue-20220.rs b/tests/ui/associated-types/associated-types-issue-20220.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-20220.rs rename to tests/ui/associated-types/associated-types-issue-20220.rs diff --git a/src/test/ui/associated-types/associated-types-issue-20346.rs b/tests/ui/associated-types/associated-types-issue-20346.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-20346.rs rename to tests/ui/associated-types/associated-types-issue-20346.rs diff --git a/src/test/ui/associated-types/associated-types-issue-20346.stderr b/tests/ui/associated-types/associated-types-issue-20346.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-20346.stderr rename to tests/ui/associated-types/associated-types-issue-20346.stderr diff --git a/src/test/ui/associated-types/associated-types-issue-20371.rs b/tests/ui/associated-types/associated-types-issue-20371.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-20371.rs rename to tests/ui/associated-types/associated-types-issue-20371.rs diff --git a/src/test/ui/associated-types/associated-types-issue-21212.rs b/tests/ui/associated-types/associated-types-issue-21212.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-issue-21212.rs rename to tests/ui/associated-types/associated-types-issue-21212.rs diff --git a/src/test/ui/associated-types/associated-types-iterator-binding.rs b/tests/ui/associated-types/associated-types-iterator-binding.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-iterator-binding.rs rename to tests/ui/associated-types/associated-types-iterator-binding.rs diff --git a/src/test/ui/associated-types/associated-types-method.rs b/tests/ui/associated-types/associated-types-method.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-method.rs rename to tests/ui/associated-types/associated-types-method.rs diff --git a/src/test/ui/associated-types/associated-types-multiple-types-one-trait.rs b/tests/ui/associated-types/associated-types-multiple-types-one-trait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-multiple-types-one-trait.rs rename to tests/ui/associated-types/associated-types-multiple-types-one-trait.rs diff --git a/src/test/ui/associated-types/associated-types-multiple-types-one-trait.stderr b/tests/ui/associated-types/associated-types-multiple-types-one-trait.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-multiple-types-one-trait.stderr rename to tests/ui/associated-types/associated-types-multiple-types-one-trait.stderr diff --git a/src/test/ui/associated-types/associated-types-nested-projections.rs b/tests/ui/associated-types/associated-types-nested-projections.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-nested-projections.rs rename to tests/ui/associated-types/associated-types-nested-projections.rs diff --git a/src/test/ui/associated-types/associated-types-no-suitable-bound.rs b/tests/ui/associated-types/associated-types-no-suitable-bound.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-bound.rs rename to tests/ui/associated-types/associated-types-no-suitable-bound.rs diff --git a/src/test/ui/associated-types/associated-types-no-suitable-bound.stderr b/tests/ui/associated-types/associated-types-no-suitable-bound.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-bound.stderr rename to tests/ui/associated-types/associated-types-no-suitable-bound.stderr diff --git a/src/test/ui/associated-types/associated-types-no-suitable-supertrait-2.rs b/tests/ui/associated-types/associated-types-no-suitable-supertrait-2.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-supertrait-2.rs rename to tests/ui/associated-types/associated-types-no-suitable-supertrait-2.rs diff --git a/src/test/ui/associated-types/associated-types-no-suitable-supertrait-2.stderr b/tests/ui/associated-types/associated-types-no-suitable-supertrait-2.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-supertrait-2.stderr rename to tests/ui/associated-types/associated-types-no-suitable-supertrait-2.stderr diff --git a/src/test/ui/associated-types/associated-types-no-suitable-supertrait.rs b/tests/ui/associated-types/associated-types-no-suitable-supertrait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-supertrait.rs rename to tests/ui/associated-types/associated-types-no-suitable-supertrait.rs diff --git a/src/test/ui/associated-types/associated-types-no-suitable-supertrait.stderr b/tests/ui/associated-types/associated-types-no-suitable-supertrait.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-no-suitable-supertrait.stderr rename to tests/ui/associated-types/associated-types-no-suitable-supertrait.stderr diff --git a/src/test/ui/associated-types/associated-types-normalize-in-bounds-binding.rs b/tests/ui/associated-types/associated-types-normalize-in-bounds-binding.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-normalize-in-bounds-binding.rs rename to tests/ui/associated-types/associated-types-normalize-in-bounds-binding.rs diff --git a/src/test/ui/associated-types/associated-types-normalize-in-bounds-ufcs.rs b/tests/ui/associated-types/associated-types-normalize-in-bounds-ufcs.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-normalize-in-bounds-ufcs.rs rename to tests/ui/associated-types/associated-types-normalize-in-bounds-ufcs.rs diff --git a/src/test/ui/associated-types/associated-types-normalize-in-bounds.rs b/tests/ui/associated-types/associated-types-normalize-in-bounds.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-normalize-in-bounds.rs rename to tests/ui/associated-types/associated-types-normalize-in-bounds.rs diff --git a/src/test/ui/associated-types/associated-types-normalize-unifield-struct.rs b/tests/ui/associated-types/associated-types-normalize-unifield-struct.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-normalize-unifield-struct.rs rename to tests/ui/associated-types/associated-types-normalize-unifield-struct.rs diff --git a/src/test/ui/associated-types/associated-types-outlives.rs b/tests/ui/associated-types/associated-types-outlives.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-outlives.rs rename to tests/ui/associated-types/associated-types-outlives.rs diff --git a/src/test/ui/associated-types/associated-types-outlives.stderr b/tests/ui/associated-types/associated-types-outlives.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-outlives.stderr rename to tests/ui/associated-types/associated-types-outlives.stderr diff --git a/src/test/ui/associated-types/associated-types-overridden-binding-2.rs b/tests/ui/associated-types/associated-types-overridden-binding-2.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-overridden-binding-2.rs rename to tests/ui/associated-types/associated-types-overridden-binding-2.rs diff --git a/src/test/ui/associated-types/associated-types-overridden-binding-2.stderr b/tests/ui/associated-types/associated-types-overridden-binding-2.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-overridden-binding-2.stderr rename to tests/ui/associated-types/associated-types-overridden-binding-2.stderr diff --git a/src/test/ui/associated-types/associated-types-overridden-binding.rs b/tests/ui/associated-types/associated-types-overridden-binding.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-overridden-binding.rs rename to tests/ui/associated-types/associated-types-overridden-binding.rs diff --git a/src/test/ui/associated-types/associated-types-overridden-binding.stderr b/tests/ui/associated-types/associated-types-overridden-binding.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-overridden-binding.stderr rename to tests/ui/associated-types/associated-types-overridden-binding.stderr diff --git a/src/test/ui/associated-types/associated-types-overridden-default.rs b/tests/ui/associated-types/associated-types-overridden-default.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-overridden-default.rs rename to tests/ui/associated-types/associated-types-overridden-default.rs diff --git a/src/test/ui/associated-types/associated-types-path-1.rs b/tests/ui/associated-types/associated-types-path-1.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-path-1.rs rename to tests/ui/associated-types/associated-types-path-1.rs diff --git a/src/test/ui/associated-types/associated-types-path-1.stderr b/tests/ui/associated-types/associated-types-path-1.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-path-1.stderr rename to tests/ui/associated-types/associated-types-path-1.stderr diff --git a/src/test/ui/associated-types/associated-types-path-2.rs b/tests/ui/associated-types/associated-types-path-2.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-path-2.rs rename to tests/ui/associated-types/associated-types-path-2.rs diff --git a/src/test/ui/associated-types/associated-types-path-2.stderr b/tests/ui/associated-types/associated-types-path-2.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-path-2.stderr rename to tests/ui/associated-types/associated-types-path-2.stderr diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.rs b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.rs rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.rs diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.stderr rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.stderr diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.fixed b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.fixed rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.fixed diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.rs b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.rs rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.rs diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-fn.stderr diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-struct.rs b/tests/ui/associated-types/associated-types-project-from-hrtb-in-struct.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-struct.rs rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-struct.rs diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-struct.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-struct.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-struct.stderr rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-struct.stderr diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.fixed b/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.fixed rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.fixed diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.rs b/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.rs rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.rs diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr b/tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr rename to tests/ui/associated-types/associated-types-project-from-hrtb-in-trait-method.stderr diff --git a/src/test/ui/associated-types/associated-types-project-from-type-param-via-bound-in-where.rs b/tests/ui/associated-types/associated-types-project-from-type-param-via-bound-in-where.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-project-from-type-param-via-bound-in-where.rs rename to tests/ui/associated-types/associated-types-project-from-type-param-via-bound-in-where.rs diff --git a/src/test/ui/associated-types/associated-types-projection-bound-ambiguity.rs b/tests/ui/associated-types/associated-types-projection-bound-ambiguity.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-bound-ambiguity.rs rename to tests/ui/associated-types/associated-types-projection-bound-ambiguity.rs diff --git a/src/test/ui/associated-types/associated-types-projection-bound-in-supertraits.rs b/tests/ui/associated-types/associated-types-projection-bound-in-supertraits.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-bound-in-supertraits.rs rename to tests/ui/associated-types/associated-types-projection-bound-in-supertraits.rs diff --git a/src/test/ui/associated-types/associated-types-projection-from-known-type-in-impl.rs b/tests/ui/associated-types/associated-types-projection-from-known-type-in-impl.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-from-known-type-in-impl.rs rename to tests/ui/associated-types/associated-types-projection-from-known-type-in-impl.rs diff --git a/src/test/ui/associated-types/associated-types-projection-in-object-type.rs b/tests/ui/associated-types/associated-types-projection-in-object-type.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-in-object-type.rs rename to tests/ui/associated-types/associated-types-projection-in-object-type.rs diff --git a/src/test/ui/associated-types/associated-types-projection-in-supertrait.rs b/tests/ui/associated-types/associated-types-projection-in-supertrait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-in-supertrait.rs rename to tests/ui/associated-types/associated-types-projection-in-supertrait.rs diff --git a/src/test/ui/associated-types/associated-types-projection-in-where-clause.rs b/tests/ui/associated-types/associated-types-projection-in-where-clause.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-in-where-clause.rs rename to tests/ui/associated-types/associated-types-projection-in-where-clause.rs diff --git a/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.fixed b/tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.fixed rename to tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.fixed diff --git a/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs b/tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs rename to tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs diff --git a/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.stderr b/tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.stderr rename to tests/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.stderr diff --git a/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait.rs b/tests/ui/associated-types/associated-types-projection-to-unrelated-trait.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-projection-to-unrelated-trait.rs rename to tests/ui/associated-types/associated-types-projection-to-unrelated-trait.rs diff --git a/src/test/ui/associated-types/associated-types-qualified-path-with-trait-with-type-parameters.rs b/tests/ui/associated-types/associated-types-qualified-path-with-trait-with-type-parameters.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-qualified-path-with-trait-with-type-parameters.rs rename to tests/ui/associated-types/associated-types-qualified-path-with-trait-with-type-parameters.rs diff --git a/src/test/ui/associated-types/associated-types-ref-from-struct.rs b/tests/ui/associated-types/associated-types-ref-from-struct.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-ref-from-struct.rs rename to tests/ui/associated-types/associated-types-ref-from-struct.rs diff --git a/src/test/ui/associated-types/associated-types-ref-in-struct-literal.rs b/tests/ui/associated-types/associated-types-ref-in-struct-literal.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-ref-in-struct-literal.rs rename to tests/ui/associated-types/associated-types-ref-in-struct-literal.rs diff --git a/src/test/ui/associated-types/associated-types-region-erasure-issue-20582.rs b/tests/ui/associated-types/associated-types-region-erasure-issue-20582.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-region-erasure-issue-20582.rs rename to tests/ui/associated-types/associated-types-region-erasure-issue-20582.rs diff --git a/src/test/ui/associated-types/associated-types-resolve-lifetime.rs b/tests/ui/associated-types/associated-types-resolve-lifetime.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-resolve-lifetime.rs rename to tests/ui/associated-types/associated-types-resolve-lifetime.rs diff --git a/src/test/ui/associated-types/associated-types-return.rs b/tests/ui/associated-types/associated-types-return.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-return.rs rename to tests/ui/associated-types/associated-types-return.rs diff --git a/src/test/ui/associated-types/associated-types-simple.rs b/tests/ui/associated-types/associated-types-simple.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-simple.rs rename to tests/ui/associated-types/associated-types-simple.rs diff --git a/src/test/ui/associated-types/associated-types-stream.rs b/tests/ui/associated-types/associated-types-stream.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-stream.rs rename to tests/ui/associated-types/associated-types-stream.rs diff --git a/src/test/ui/associated-types/associated-types-struct-field-named.rs b/tests/ui/associated-types/associated-types-struct-field-named.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-struct-field-named.rs rename to tests/ui/associated-types/associated-types-struct-field-named.rs diff --git a/src/test/ui/associated-types/associated-types-struct-field-numbered.rs b/tests/ui/associated-types/associated-types-struct-field-numbered.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-struct-field-numbered.rs rename to tests/ui/associated-types/associated-types-struct-field-numbered.rs diff --git a/src/test/ui/associated-types/associated-types-subtyping-1.rs b/tests/ui/associated-types/associated-types-subtyping-1.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-subtyping-1.rs rename to tests/ui/associated-types/associated-types-subtyping-1.rs diff --git a/src/test/ui/associated-types/associated-types-subtyping-1.stderr b/tests/ui/associated-types/associated-types-subtyping-1.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-subtyping-1.stderr rename to tests/ui/associated-types/associated-types-subtyping-1.stderr diff --git a/src/test/ui/associated-types/associated-types-sugar-path.rs b/tests/ui/associated-types/associated-types-sugar-path.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-sugar-path.rs rename to tests/ui/associated-types/associated-types-sugar-path.rs diff --git a/src/test/ui/associated-types/associated-types-unconstrained.rs b/tests/ui/associated-types/associated-types-unconstrained.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-unconstrained.rs rename to tests/ui/associated-types/associated-types-unconstrained.rs diff --git a/src/test/ui/associated-types/associated-types-unconstrained.stderr b/tests/ui/associated-types/associated-types-unconstrained.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-unconstrained.stderr rename to tests/ui/associated-types/associated-types-unconstrained.stderr diff --git a/src/test/ui/associated-types/associated-types-unsized.fixed b/tests/ui/associated-types/associated-types-unsized.fixed similarity index 100% rename from src/test/ui/associated-types/associated-types-unsized.fixed rename to tests/ui/associated-types/associated-types-unsized.fixed diff --git a/src/test/ui/associated-types/associated-types-unsized.rs b/tests/ui/associated-types/associated-types-unsized.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-unsized.rs rename to tests/ui/associated-types/associated-types-unsized.rs diff --git a/src/test/ui/associated-types/associated-types-unsized.stderr b/tests/ui/associated-types/associated-types-unsized.stderr similarity index 100% rename from src/test/ui/associated-types/associated-types-unsized.stderr rename to tests/ui/associated-types/associated-types-unsized.stderr diff --git a/src/test/ui/associated-types/associated-types-where-clause-impl-ambiguity.rs b/tests/ui/associated-types/associated-types-where-clause-impl-ambiguity.rs similarity index 100% rename from src/test/ui/associated-types/associated-types-where-clause-impl-ambiguity.rs rename to tests/ui/associated-types/associated-types-where-clause-impl-ambiguity.rs diff --git a/src/test/ui/associated-types/auxiliary/associated-types-cc-lib.rs b/tests/ui/associated-types/auxiliary/associated-types-cc-lib.rs similarity index 100% rename from src/test/ui/associated-types/auxiliary/associated-types-cc-lib.rs rename to tests/ui/associated-types/auxiliary/associated-types-cc-lib.rs diff --git a/src/test/ui/associated-types/bound-lifetime-constrained.clause.stderr b/tests/ui/associated-types/bound-lifetime-constrained.clause.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-constrained.clause.stderr rename to tests/ui/associated-types/bound-lifetime-constrained.clause.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-constrained.func.stderr b/tests/ui/associated-types/bound-lifetime-constrained.func.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-constrained.func.stderr rename to tests/ui/associated-types/bound-lifetime-constrained.func.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-constrained.object.stderr b/tests/ui/associated-types/bound-lifetime-constrained.object.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-constrained.object.stderr rename to tests/ui/associated-types/bound-lifetime-constrained.object.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-constrained.rs b/tests/ui/associated-types/bound-lifetime-constrained.rs similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-constrained.rs rename to tests/ui/associated-types/bound-lifetime-constrained.rs diff --git a/src/test/ui/associated-types/bound-lifetime-in-binding-only.angle.stderr b/tests/ui/associated-types/bound-lifetime-in-binding-only.angle.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-binding-only.angle.stderr rename to tests/ui/associated-types/bound-lifetime-in-binding-only.angle.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-binding-only.elision.stderr b/tests/ui/associated-types/bound-lifetime-in-binding-only.elision.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-binding-only.elision.stderr rename to tests/ui/associated-types/bound-lifetime-in-binding-only.elision.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-binding-only.ok.stderr b/tests/ui/associated-types/bound-lifetime-in-binding-only.ok.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-binding-only.ok.stderr rename to tests/ui/associated-types/bound-lifetime-in-binding-only.ok.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-binding-only.paren.stderr b/tests/ui/associated-types/bound-lifetime-in-binding-only.paren.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-binding-only.paren.stderr rename to tests/ui/associated-types/bound-lifetime-in-binding-only.paren.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-binding-only.rs b/tests/ui/associated-types/bound-lifetime-in-binding-only.rs similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-binding-only.rs rename to tests/ui/associated-types/bound-lifetime-in-binding-only.rs diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.elision.stderr b/tests/ui/associated-types/bound-lifetime-in-return-only.elision.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.elision.stderr rename to tests/ui/associated-types/bound-lifetime-in-return-only.elision.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.local.stderr b/tests/ui/associated-types/bound-lifetime-in-return-only.local.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.local.stderr rename to tests/ui/associated-types/bound-lifetime-in-return-only.local.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.ok.stderr b/tests/ui/associated-types/bound-lifetime-in-return-only.ok.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.ok.stderr rename to tests/ui/associated-types/bound-lifetime-in-return-only.ok.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.rs b/tests/ui/associated-types/bound-lifetime-in-return-only.rs similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.rs rename to tests/ui/associated-types/bound-lifetime-in-return-only.rs diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.sig.stderr b/tests/ui/associated-types/bound-lifetime-in-return-only.sig.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.sig.stderr rename to tests/ui/associated-types/bound-lifetime-in-return-only.sig.stderr diff --git a/src/test/ui/associated-types/bound-lifetime-in-return-only.structure.stderr b/tests/ui/associated-types/bound-lifetime-in-return-only.structure.stderr similarity index 100% rename from src/test/ui/associated-types/bound-lifetime-in-return-only.structure.stderr rename to tests/ui/associated-types/bound-lifetime-in-return-only.structure.stderr diff --git a/src/test/ui/associated-types/cache/chrono-scan.rs b/tests/ui/associated-types/cache/chrono-scan.rs similarity index 100% rename from src/test/ui/associated-types/cache/chrono-scan.rs rename to tests/ui/associated-types/cache/chrono-scan.rs diff --git a/src/test/ui/associated-types/cache/elision.rs b/tests/ui/associated-types/cache/elision.rs similarity index 100% rename from src/test/ui/associated-types/cache/elision.rs rename to tests/ui/associated-types/cache/elision.rs diff --git a/src/test/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.stderr b/tests/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.stderr similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.stderr rename to tests/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.stderr diff --git a/src/test/ui/associated-types/cache/project-fn-ret-contravariant.rs b/tests/ui/associated-types/cache/project-fn-ret-contravariant.rs similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-contravariant.rs rename to tests/ui/associated-types/cache/project-fn-ret-contravariant.rs diff --git a/src/test/ui/associated-types/cache/project-fn-ret-contravariant.transmute.stderr b/tests/ui/associated-types/cache/project-fn-ret-contravariant.transmute.stderr similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-contravariant.transmute.stderr rename to tests/ui/associated-types/cache/project-fn-ret-contravariant.transmute.stderr diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.krisskross.stderr b/tests/ui/associated-types/cache/project-fn-ret-invariant.krisskross.stderr similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-invariant.krisskross.stderr rename to tests/ui/associated-types/cache/project-fn-ret-invariant.krisskross.stderr diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.oneuse.stderr b/tests/ui/associated-types/cache/project-fn-ret-invariant.oneuse.stderr similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-invariant.oneuse.stderr rename to tests/ui/associated-types/cache/project-fn-ret-invariant.oneuse.stderr diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.rs b/tests/ui/associated-types/cache/project-fn-ret-invariant.rs similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-invariant.rs rename to tests/ui/associated-types/cache/project-fn-ret-invariant.rs diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.transmute.stderr b/tests/ui/associated-types/cache/project-fn-ret-invariant.transmute.stderr similarity index 100% rename from src/test/ui/associated-types/cache/project-fn-ret-invariant.transmute.stderr rename to tests/ui/associated-types/cache/project-fn-ret-invariant.transmute.stderr diff --git a/src/test/ui/associated-types/default-associated-types.rs b/tests/ui/associated-types/default-associated-types.rs similarity index 100% rename from src/test/ui/associated-types/default-associated-types.rs rename to tests/ui/associated-types/default-associated-types.rs diff --git a/src/test/ui/associated-types/defaults-cyclic-fail-1.rs b/tests/ui/associated-types/defaults-cyclic-fail-1.rs similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-fail-1.rs rename to tests/ui/associated-types/defaults-cyclic-fail-1.rs diff --git a/src/test/ui/associated-types/defaults-cyclic-fail-1.stderr b/tests/ui/associated-types/defaults-cyclic-fail-1.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-fail-1.stderr rename to tests/ui/associated-types/defaults-cyclic-fail-1.stderr diff --git a/src/test/ui/associated-types/defaults-cyclic-fail-2.rs b/tests/ui/associated-types/defaults-cyclic-fail-2.rs similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-fail-2.rs rename to tests/ui/associated-types/defaults-cyclic-fail-2.rs diff --git a/src/test/ui/associated-types/defaults-cyclic-fail-2.stderr b/tests/ui/associated-types/defaults-cyclic-fail-2.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-fail-2.stderr rename to tests/ui/associated-types/defaults-cyclic-fail-2.stderr diff --git a/src/test/ui/associated-types/defaults-cyclic-pass-1.rs b/tests/ui/associated-types/defaults-cyclic-pass-1.rs similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-pass-1.rs rename to tests/ui/associated-types/defaults-cyclic-pass-1.rs diff --git a/src/test/ui/associated-types/defaults-cyclic-pass-2.rs b/tests/ui/associated-types/defaults-cyclic-pass-2.rs similarity index 100% rename from src/test/ui/associated-types/defaults-cyclic-pass-2.rs rename to tests/ui/associated-types/defaults-cyclic-pass-2.rs diff --git a/src/test/ui/associated-types/defaults-in-other-trait-items-pass.rs b/tests/ui/associated-types/defaults-in-other-trait-items-pass.rs similarity index 100% rename from src/test/ui/associated-types/defaults-in-other-trait-items-pass.rs rename to tests/ui/associated-types/defaults-in-other-trait-items-pass.rs diff --git a/src/test/ui/associated-types/defaults-in-other-trait-items.rs b/tests/ui/associated-types/defaults-in-other-trait-items.rs similarity index 100% rename from src/test/ui/associated-types/defaults-in-other-trait-items.rs rename to tests/ui/associated-types/defaults-in-other-trait-items.rs diff --git a/src/test/ui/associated-types/defaults-in-other-trait-items.stderr b/tests/ui/associated-types/defaults-in-other-trait-items.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-in-other-trait-items.stderr rename to tests/ui/associated-types/defaults-in-other-trait-items.stderr diff --git a/src/test/ui/associated-types/defaults-mixed.rs b/tests/ui/associated-types/defaults-mixed.rs similarity index 100% rename from src/test/ui/associated-types/defaults-mixed.rs rename to tests/ui/associated-types/defaults-mixed.rs diff --git a/src/test/ui/associated-types/defaults-mixed.stderr b/tests/ui/associated-types/defaults-mixed.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-mixed.stderr rename to tests/ui/associated-types/defaults-mixed.stderr diff --git a/src/test/ui/associated-types/defaults-specialization.rs b/tests/ui/associated-types/defaults-specialization.rs similarity index 100% rename from src/test/ui/associated-types/defaults-specialization.rs rename to tests/ui/associated-types/defaults-specialization.rs diff --git a/src/test/ui/associated-types/defaults-specialization.stderr b/tests/ui/associated-types/defaults-specialization.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-specialization.stderr rename to tests/ui/associated-types/defaults-specialization.stderr diff --git a/src/test/ui/associated-types/defaults-suitability.rs b/tests/ui/associated-types/defaults-suitability.rs similarity index 100% rename from src/test/ui/associated-types/defaults-suitability.rs rename to tests/ui/associated-types/defaults-suitability.rs diff --git a/src/test/ui/associated-types/defaults-suitability.stderr b/tests/ui/associated-types/defaults-suitability.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-suitability.stderr rename to tests/ui/associated-types/defaults-suitability.stderr diff --git a/src/test/ui/associated-types/defaults-unsound-62211-1.rs b/tests/ui/associated-types/defaults-unsound-62211-1.rs similarity index 100% rename from src/test/ui/associated-types/defaults-unsound-62211-1.rs rename to tests/ui/associated-types/defaults-unsound-62211-1.rs diff --git a/src/test/ui/associated-types/defaults-unsound-62211-1.stderr b/tests/ui/associated-types/defaults-unsound-62211-1.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-unsound-62211-1.stderr rename to tests/ui/associated-types/defaults-unsound-62211-1.stderr diff --git a/src/test/ui/associated-types/defaults-unsound-62211-2.rs b/tests/ui/associated-types/defaults-unsound-62211-2.rs similarity index 100% rename from src/test/ui/associated-types/defaults-unsound-62211-2.rs rename to tests/ui/associated-types/defaults-unsound-62211-2.rs diff --git a/src/test/ui/associated-types/defaults-unsound-62211-2.stderr b/tests/ui/associated-types/defaults-unsound-62211-2.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-unsound-62211-2.stderr rename to tests/ui/associated-types/defaults-unsound-62211-2.stderr diff --git a/src/test/ui/associated-types/defaults-wf.rs b/tests/ui/associated-types/defaults-wf.rs similarity index 100% rename from src/test/ui/associated-types/defaults-wf.rs rename to tests/ui/associated-types/defaults-wf.rs diff --git a/src/test/ui/associated-types/defaults-wf.stderr b/tests/ui/associated-types/defaults-wf.stderr similarity index 100% rename from src/test/ui/associated-types/defaults-wf.stderr rename to tests/ui/associated-types/defaults-wf.stderr diff --git a/src/test/ui/associated-types/higher-ranked-projection.bad.stderr b/tests/ui/associated-types/higher-ranked-projection.bad.stderr similarity index 100% rename from src/test/ui/associated-types/higher-ranked-projection.bad.stderr rename to tests/ui/associated-types/higher-ranked-projection.bad.stderr diff --git a/src/test/ui/associated-types/higher-ranked-projection.rs b/tests/ui/associated-types/higher-ranked-projection.rs similarity index 100% rename from src/test/ui/associated-types/higher-ranked-projection.rs rename to tests/ui/associated-types/higher-ranked-projection.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-1.rs b/tests/ui/associated-types/hr-associated-type-bound-1.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-1.rs rename to tests/ui/associated-types/hr-associated-type-bound-1.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-1.stderr b/tests/ui/associated-types/hr-associated-type-bound-1.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-1.stderr rename to tests/ui/associated-types/hr-associated-type-bound-1.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-2.rs b/tests/ui/associated-types/hr-associated-type-bound-2.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-2.rs rename to tests/ui/associated-types/hr-associated-type-bound-2.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-2.stderr b/tests/ui/associated-types/hr-associated-type-bound-2.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-2.stderr rename to tests/ui/associated-types/hr-associated-type-bound-2.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-object.rs b/tests/ui/associated-types/hr-associated-type-bound-object.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-object.rs rename to tests/ui/associated-types/hr-associated-type-bound-object.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-object.stderr b/tests/ui/associated-types/hr-associated-type-bound-object.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-object.stderr rename to tests/ui/associated-types/hr-associated-type-bound-object.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-1.rs b/tests/ui/associated-types/hr-associated-type-bound-param-1.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-1.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-1.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-1.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-1.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-1.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-1.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-2.rs b/tests/ui/associated-types/hr-associated-type-bound-param-2.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-2.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-2.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-2.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-2.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-2.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-2.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-3.rs b/tests/ui/associated-types/hr-associated-type-bound-param-3.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-3.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-3.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-3.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-3.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-3.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-3.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-4.rs b/tests/ui/associated-types/hr-associated-type-bound-param-4.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-4.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-4.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-4.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-4.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-4.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-4.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-5.rs b/tests/ui/associated-types/hr-associated-type-bound-param-5.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-5.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-5.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-5.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-5.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-5.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-5.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-6.rs b/tests/ui/associated-types/hr-associated-type-bound-param-6.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-6.rs rename to tests/ui/associated-types/hr-associated-type-bound-param-6.rs diff --git a/src/test/ui/associated-types/hr-associated-type-bound-param-6.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-6.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-bound-param-6.stderr rename to tests/ui/associated-types/hr-associated-type-bound-param-6.stderr diff --git a/src/test/ui/associated-types/hr-associated-type-projection-1.rs b/tests/ui/associated-types/hr-associated-type-projection-1.rs similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-projection-1.rs rename to tests/ui/associated-types/hr-associated-type-projection-1.rs diff --git a/src/test/ui/associated-types/hr-associated-type-projection-1.stderr b/tests/ui/associated-types/hr-associated-type-projection-1.stderr similarity index 100% rename from src/test/ui/associated-types/hr-associated-type-projection-1.stderr rename to tests/ui/associated-types/hr-associated-type-projection-1.stderr diff --git a/src/test/ui/associated-types/impl-trait-return-missing-constraint.rs b/tests/ui/associated-types/impl-trait-return-missing-constraint.rs similarity index 100% rename from src/test/ui/associated-types/impl-trait-return-missing-constraint.rs rename to tests/ui/associated-types/impl-trait-return-missing-constraint.rs diff --git a/src/test/ui/associated-types/impl-trait-return-missing-constraint.stderr b/tests/ui/associated-types/impl-trait-return-missing-constraint.stderr similarity index 100% rename from src/test/ui/associated-types/impl-trait-return-missing-constraint.stderr rename to tests/ui/associated-types/impl-trait-return-missing-constraint.stderr diff --git a/src/test/ui/associated-types/impl-wf-cycle-1.rs b/tests/ui/associated-types/impl-wf-cycle-1.rs similarity index 100% rename from src/test/ui/associated-types/impl-wf-cycle-1.rs rename to tests/ui/associated-types/impl-wf-cycle-1.rs diff --git a/src/test/ui/associated-types/impl-wf-cycle-1.stderr b/tests/ui/associated-types/impl-wf-cycle-1.stderr similarity index 100% rename from src/test/ui/associated-types/impl-wf-cycle-1.stderr rename to tests/ui/associated-types/impl-wf-cycle-1.stderr diff --git a/src/test/ui/associated-types/impl-wf-cycle-2.rs b/tests/ui/associated-types/impl-wf-cycle-2.rs similarity index 100% rename from src/test/ui/associated-types/impl-wf-cycle-2.rs rename to tests/ui/associated-types/impl-wf-cycle-2.rs diff --git a/src/test/ui/associated-types/impl-wf-cycle-2.stderr b/tests/ui/associated-types/impl-wf-cycle-2.stderr similarity index 100% rename from src/test/ui/associated-types/impl-wf-cycle-2.stderr rename to tests/ui/associated-types/impl-wf-cycle-2.stderr diff --git a/src/test/ui/associated-types/issue-18655.rs b/tests/ui/associated-types/issue-18655.rs similarity index 100% rename from src/test/ui/associated-types/issue-18655.rs rename to tests/ui/associated-types/issue-18655.rs diff --git a/src/test/ui/associated-types/issue-19081.rs b/tests/ui/associated-types/issue-19081.rs similarity index 100% rename from src/test/ui/associated-types/issue-19081.rs rename to tests/ui/associated-types/issue-19081.rs diff --git a/src/test/ui/associated-types/issue-19883.rs b/tests/ui/associated-types/issue-19883.rs similarity index 100% rename from src/test/ui/associated-types/issue-19883.rs rename to tests/ui/associated-types/issue-19883.rs diff --git a/src/test/ui/associated-types/issue-19883.stderr b/tests/ui/associated-types/issue-19883.stderr similarity index 100% rename from src/test/ui/associated-types/issue-19883.stderr rename to tests/ui/associated-types/issue-19883.stderr diff --git a/src/test/ui/associated-types/issue-20005.rs b/tests/ui/associated-types/issue-20005.rs similarity index 100% rename from src/test/ui/associated-types/issue-20005.rs rename to tests/ui/associated-types/issue-20005.rs diff --git a/src/test/ui/associated-types/issue-20005.stderr b/tests/ui/associated-types/issue-20005.stderr similarity index 100% rename from src/test/ui/associated-types/issue-20005.stderr rename to tests/ui/associated-types/issue-20005.stderr diff --git a/src/test/ui/associated-types/issue-20825-2.rs b/tests/ui/associated-types/issue-20825-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-20825-2.rs rename to tests/ui/associated-types/issue-20825-2.rs diff --git a/src/test/ui/associated-types/issue-20825.rs b/tests/ui/associated-types/issue-20825.rs similarity index 100% rename from src/test/ui/associated-types/issue-20825.rs rename to tests/ui/associated-types/issue-20825.rs diff --git a/src/test/ui/associated-types/issue-20825.stderr b/tests/ui/associated-types/issue-20825.stderr similarity index 100% rename from src/test/ui/associated-types/issue-20825.stderr rename to tests/ui/associated-types/issue-20825.stderr diff --git a/src/test/ui/associated-types/issue-21363.rs b/tests/ui/associated-types/issue-21363.rs similarity index 100% rename from src/test/ui/associated-types/issue-21363.rs rename to tests/ui/associated-types/issue-21363.rs diff --git a/src/test/ui/associated-types/issue-21726.rs b/tests/ui/associated-types/issue-21726.rs similarity index 100% rename from src/test/ui/associated-types/issue-21726.rs rename to tests/ui/associated-types/issue-21726.rs diff --git a/src/test/ui/associated-types/issue-22037.rs b/tests/ui/associated-types/issue-22037.rs similarity index 100% rename from src/test/ui/associated-types/issue-22037.rs rename to tests/ui/associated-types/issue-22037.rs diff --git a/src/test/ui/associated-types/issue-22037.stderr b/tests/ui/associated-types/issue-22037.stderr similarity index 100% rename from src/test/ui/associated-types/issue-22037.stderr rename to tests/ui/associated-types/issue-22037.stderr diff --git a/src/test/ui/associated-types/issue-22066.rs b/tests/ui/associated-types/issue-22066.rs similarity index 100% rename from src/test/ui/associated-types/issue-22066.rs rename to tests/ui/associated-types/issue-22066.rs diff --git a/src/test/ui/associated-types/issue-22560.rs b/tests/ui/associated-types/issue-22560.rs similarity index 100% rename from src/test/ui/associated-types/issue-22560.rs rename to tests/ui/associated-types/issue-22560.rs diff --git a/src/test/ui/associated-types/issue-22560.stderr b/tests/ui/associated-types/issue-22560.stderr similarity index 100% rename from src/test/ui/associated-types/issue-22560.stderr rename to tests/ui/associated-types/issue-22560.stderr diff --git a/src/test/ui/associated-types/issue-22828.rs b/tests/ui/associated-types/issue-22828.rs similarity index 100% rename from src/test/ui/associated-types/issue-22828.rs rename to tests/ui/associated-types/issue-22828.rs diff --git a/src/test/ui/associated-types/issue-23208.rs b/tests/ui/associated-types/issue-23208.rs similarity index 100% rename from src/test/ui/associated-types/issue-23208.rs rename to tests/ui/associated-types/issue-23208.rs diff --git a/src/test/ui/associated-types/issue-23595-1.rs b/tests/ui/associated-types/issue-23595-1.rs similarity index 100% rename from src/test/ui/associated-types/issue-23595-1.rs rename to tests/ui/associated-types/issue-23595-1.rs diff --git a/src/test/ui/associated-types/issue-23595-1.stderr b/tests/ui/associated-types/issue-23595-1.stderr similarity index 100% rename from src/test/ui/associated-types/issue-23595-1.stderr rename to tests/ui/associated-types/issue-23595-1.stderr diff --git a/src/test/ui/associated-types/issue-23595-2.rs b/tests/ui/associated-types/issue-23595-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-23595-2.rs rename to tests/ui/associated-types/issue-23595-2.rs diff --git a/src/test/ui/associated-types/issue-23595-2.stderr b/tests/ui/associated-types/issue-23595-2.stderr similarity index 100% rename from src/test/ui/associated-types/issue-23595-2.stderr rename to tests/ui/associated-types/issue-23595-2.stderr diff --git a/src/test/ui/associated-types/issue-24159.rs b/tests/ui/associated-types/issue-24159.rs similarity index 100% rename from src/test/ui/associated-types/issue-24159.rs rename to tests/ui/associated-types/issue-24159.rs diff --git a/src/test/ui/associated-types/issue-24204.rs b/tests/ui/associated-types/issue-24204.rs similarity index 100% rename from src/test/ui/associated-types/issue-24204.rs rename to tests/ui/associated-types/issue-24204.rs diff --git a/src/test/ui/associated-types/issue-24338.rs b/tests/ui/associated-types/issue-24338.rs similarity index 100% rename from src/test/ui/associated-types/issue-24338.rs rename to tests/ui/associated-types/issue-24338.rs diff --git a/src/test/ui/associated-types/issue-25339.rs b/tests/ui/associated-types/issue-25339.rs similarity index 100% rename from src/test/ui/associated-types/issue-25339.rs rename to tests/ui/associated-types/issue-25339.rs diff --git a/src/test/ui/associated-types/issue-25700-1.rs b/tests/ui/associated-types/issue-25700-1.rs similarity index 100% rename from src/test/ui/associated-types/issue-25700-1.rs rename to tests/ui/associated-types/issue-25700-1.rs diff --git a/src/test/ui/associated-types/issue-25700-2.rs b/tests/ui/associated-types/issue-25700-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-25700-2.rs rename to tests/ui/associated-types/issue-25700-2.rs diff --git a/src/test/ui/associated-types/issue-25700.rs b/tests/ui/associated-types/issue-25700.rs similarity index 100% rename from src/test/ui/associated-types/issue-25700.rs rename to tests/ui/associated-types/issue-25700.rs diff --git a/src/test/ui/associated-types/issue-25700.stderr b/tests/ui/associated-types/issue-25700.stderr similarity index 100% rename from src/test/ui/associated-types/issue-25700.stderr rename to tests/ui/associated-types/issue-25700.stderr diff --git a/src/test/ui/associated-types/issue-26681.rs b/tests/ui/associated-types/issue-26681.rs similarity index 100% rename from src/test/ui/associated-types/issue-26681.rs rename to tests/ui/associated-types/issue-26681.rs diff --git a/src/test/ui/associated-types/issue-26681.stderr b/tests/ui/associated-types/issue-26681.stderr similarity index 100% rename from src/test/ui/associated-types/issue-26681.stderr rename to tests/ui/associated-types/issue-26681.stderr diff --git a/src/test/ui/associated-types/issue-27675-unchecked-bounds.rs b/tests/ui/associated-types/issue-27675-unchecked-bounds.rs similarity index 100% rename from src/test/ui/associated-types/issue-27675-unchecked-bounds.rs rename to tests/ui/associated-types/issue-27675-unchecked-bounds.rs diff --git a/src/test/ui/associated-types/issue-27675-unchecked-bounds.stderr b/tests/ui/associated-types/issue-27675-unchecked-bounds.stderr similarity index 100% rename from src/test/ui/associated-types/issue-27675-unchecked-bounds.stderr rename to tests/ui/associated-types/issue-27675-unchecked-bounds.stderr diff --git a/src/test/ui/associated-types/issue-28871.rs b/tests/ui/associated-types/issue-28871.rs similarity index 100% rename from src/test/ui/associated-types/issue-28871.rs rename to tests/ui/associated-types/issue-28871.rs diff --git a/src/test/ui/associated-types/issue-31597.rs b/tests/ui/associated-types/issue-31597.rs similarity index 100% rename from src/test/ui/associated-types/issue-31597.rs rename to tests/ui/associated-types/issue-31597.rs diff --git a/src/test/ui/associated-types/issue-32350.rs b/tests/ui/associated-types/issue-32350.rs similarity index 100% rename from src/test/ui/associated-types/issue-32350.rs rename to tests/ui/associated-types/issue-32350.rs diff --git a/src/test/ui/associated-types/issue-36499.rs b/tests/ui/associated-types/issue-36499.rs similarity index 100% rename from src/test/ui/associated-types/issue-36499.rs rename to tests/ui/associated-types/issue-36499.rs diff --git a/src/test/ui/associated-types/issue-36499.stderr b/tests/ui/associated-types/issue-36499.stderr similarity index 100% rename from src/test/ui/associated-types/issue-36499.stderr rename to tests/ui/associated-types/issue-36499.stderr diff --git a/src/test/ui/associated-types/issue-37808.rs b/tests/ui/associated-types/issue-37808.rs similarity index 100% rename from src/test/ui/associated-types/issue-37808.rs rename to tests/ui/associated-types/issue-37808.rs diff --git a/src/test/ui/associated-types/issue-37883.rs b/tests/ui/associated-types/issue-37883.rs similarity index 100% rename from src/test/ui/associated-types/issue-37883.rs rename to tests/ui/associated-types/issue-37883.rs diff --git a/src/test/ui/associated-types/issue-38917.rs b/tests/ui/associated-types/issue-38917.rs similarity index 100% rename from src/test/ui/associated-types/issue-38917.rs rename to tests/ui/associated-types/issue-38917.rs diff --git a/src/test/ui/associated-types/issue-39532.rs b/tests/ui/associated-types/issue-39532.rs similarity index 100% rename from src/test/ui/associated-types/issue-39532.rs rename to tests/ui/associated-types/issue-39532.rs diff --git a/src/test/ui/associated-types/issue-40093.rs b/tests/ui/associated-types/issue-40093.rs similarity index 100% rename from src/test/ui/associated-types/issue-40093.rs rename to tests/ui/associated-types/issue-40093.rs diff --git a/src/test/ui/associated-types/issue-41868.rs b/tests/ui/associated-types/issue-41868.rs similarity index 100% rename from src/test/ui/associated-types/issue-41868.rs rename to tests/ui/associated-types/issue-41868.rs diff --git a/src/test/ui/associated-types/issue-43475.rs b/tests/ui/associated-types/issue-43475.rs similarity index 100% rename from src/test/ui/associated-types/issue-43475.rs rename to tests/ui/associated-types/issue-43475.rs diff --git a/src/test/ui/associated-types/issue-43784-associated-type.rs b/tests/ui/associated-types/issue-43784-associated-type.rs similarity index 100% rename from src/test/ui/associated-types/issue-43784-associated-type.rs rename to tests/ui/associated-types/issue-43784-associated-type.rs diff --git a/src/test/ui/associated-types/issue-43784-associated-type.stderr b/tests/ui/associated-types/issue-43784-associated-type.stderr similarity index 100% rename from src/test/ui/associated-types/issue-43784-associated-type.stderr rename to tests/ui/associated-types/issue-43784-associated-type.stderr diff --git a/src/test/ui/associated-types/issue-43924.rs b/tests/ui/associated-types/issue-43924.rs similarity index 100% rename from src/test/ui/associated-types/issue-43924.rs rename to tests/ui/associated-types/issue-43924.rs diff --git a/src/test/ui/associated-types/issue-43924.stderr b/tests/ui/associated-types/issue-43924.stderr similarity index 100% rename from src/test/ui/associated-types/issue-43924.stderr rename to tests/ui/associated-types/issue-43924.stderr diff --git a/src/test/ui/associated-types/issue-44153.rs b/tests/ui/associated-types/issue-44153.rs similarity index 100% rename from src/test/ui/associated-types/issue-44153.rs rename to tests/ui/associated-types/issue-44153.rs diff --git a/src/test/ui/associated-types/issue-44153.stderr b/tests/ui/associated-types/issue-44153.stderr similarity index 100% rename from src/test/ui/associated-types/issue-44153.stderr rename to tests/ui/associated-types/issue-44153.stderr diff --git a/src/test/ui/associated-types/issue-47139-1.rs b/tests/ui/associated-types/issue-47139-1.rs similarity index 100% rename from src/test/ui/associated-types/issue-47139-1.rs rename to tests/ui/associated-types/issue-47139-1.rs diff --git a/src/test/ui/associated-types/issue-47139-2.rs b/tests/ui/associated-types/issue-47139-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-47139-2.rs rename to tests/ui/associated-types/issue-47139-2.rs diff --git a/src/test/ui/associated-types/issue-47385.rs b/tests/ui/associated-types/issue-47385.rs similarity index 100% rename from src/test/ui/associated-types/issue-47385.rs rename to tests/ui/associated-types/issue-47385.rs diff --git a/src/test/ui/associated-types/issue-47814.rs b/tests/ui/associated-types/issue-47814.rs similarity index 100% rename from src/test/ui/associated-types/issue-47814.rs rename to tests/ui/associated-types/issue-47814.rs diff --git a/src/test/ui/associated-types/issue-47814.stderr b/tests/ui/associated-types/issue-47814.stderr similarity index 100% rename from src/test/ui/associated-types/issue-47814.stderr rename to tests/ui/associated-types/issue-47814.stderr diff --git a/src/test/ui/associated-types/issue-48010.rs b/tests/ui/associated-types/issue-48010.rs similarity index 100% rename from src/test/ui/associated-types/issue-48010.rs rename to tests/ui/associated-types/issue-48010.rs diff --git a/src/test/ui/associated-types/issue-48551.rs b/tests/ui/associated-types/issue-48551.rs similarity index 100% rename from src/test/ui/associated-types/issue-48551.rs rename to tests/ui/associated-types/issue-48551.rs diff --git a/src/test/ui/associated-types/issue-50301.rs b/tests/ui/associated-types/issue-50301.rs similarity index 100% rename from src/test/ui/associated-types/issue-50301.rs rename to tests/ui/associated-types/issue-50301.rs diff --git a/src/test/ui/associated-types/issue-54108.rs b/tests/ui/associated-types/issue-54108.rs similarity index 100% rename from src/test/ui/associated-types/issue-54108.rs rename to tests/ui/associated-types/issue-54108.rs diff --git a/src/test/ui/associated-types/issue-54108.stderr b/tests/ui/associated-types/issue-54108.stderr similarity index 100% rename from src/test/ui/associated-types/issue-54108.stderr rename to tests/ui/associated-types/issue-54108.stderr diff --git a/src/test/ui/associated-types/issue-54182-1.rs b/tests/ui/associated-types/issue-54182-1.rs similarity index 100% rename from src/test/ui/associated-types/issue-54182-1.rs rename to tests/ui/associated-types/issue-54182-1.rs diff --git a/src/test/ui/associated-types/issue-54182-2.rs b/tests/ui/associated-types/issue-54182-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-54182-2.rs rename to tests/ui/associated-types/issue-54182-2.rs diff --git a/src/test/ui/associated-types/issue-54467.rs b/tests/ui/associated-types/issue-54467.rs similarity index 100% rename from src/test/ui/associated-types/issue-54467.rs rename to tests/ui/associated-types/issue-54467.rs diff --git a/src/test/ui/associated-types/issue-55846.rs b/tests/ui/associated-types/issue-55846.rs similarity index 100% rename from src/test/ui/associated-types/issue-55846.rs rename to tests/ui/associated-types/issue-55846.rs diff --git a/src/test/ui/associated-types/issue-59324.rs b/tests/ui/associated-types/issue-59324.rs similarity index 100% rename from src/test/ui/associated-types/issue-59324.rs rename to tests/ui/associated-types/issue-59324.rs diff --git a/src/test/ui/associated-types/issue-59324.stderr b/tests/ui/associated-types/issue-59324.stderr similarity index 100% rename from src/test/ui/associated-types/issue-59324.stderr rename to tests/ui/associated-types/issue-59324.stderr diff --git a/src/test/ui/associated-types/issue-62200.rs b/tests/ui/associated-types/issue-62200.rs similarity index 100% rename from src/test/ui/associated-types/issue-62200.rs rename to tests/ui/associated-types/issue-62200.rs diff --git a/src/test/ui/associated-types/issue-62200.stderr b/tests/ui/associated-types/issue-62200.stderr similarity index 100% rename from src/test/ui/associated-types/issue-62200.stderr rename to tests/ui/associated-types/issue-62200.stderr diff --git a/src/test/ui/associated-types/issue-63591.rs b/tests/ui/associated-types/issue-63591.rs similarity index 100% rename from src/test/ui/associated-types/issue-63591.rs rename to tests/ui/associated-types/issue-63591.rs diff --git a/src/test/ui/associated-types/issue-63593.rs b/tests/ui/associated-types/issue-63593.rs similarity index 100% rename from src/test/ui/associated-types/issue-63593.rs rename to tests/ui/associated-types/issue-63593.rs diff --git a/src/test/ui/associated-types/issue-63593.stderr b/tests/ui/associated-types/issue-63593.stderr similarity index 100% rename from src/test/ui/associated-types/issue-63593.stderr rename to tests/ui/associated-types/issue-63593.stderr diff --git a/src/test/ui/associated-types/issue-64848.rs b/tests/ui/associated-types/issue-64848.rs similarity index 100% rename from src/test/ui/associated-types/issue-64848.rs rename to tests/ui/associated-types/issue-64848.rs diff --git a/src/test/ui/associated-types/issue-64855-2.rs b/tests/ui/associated-types/issue-64855-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-64855-2.rs rename to tests/ui/associated-types/issue-64855-2.rs diff --git a/src/test/ui/associated-types/issue-64855.rs b/tests/ui/associated-types/issue-64855.rs similarity index 100% rename from src/test/ui/associated-types/issue-64855.rs rename to tests/ui/associated-types/issue-64855.rs diff --git a/src/test/ui/associated-types/issue-64855.stderr b/tests/ui/associated-types/issue-64855.stderr similarity index 100% rename from src/test/ui/associated-types/issue-64855.stderr rename to tests/ui/associated-types/issue-64855.stderr diff --git a/src/test/ui/associated-types/issue-65774-1.rs b/tests/ui/associated-types/issue-65774-1.rs similarity index 100% rename from src/test/ui/associated-types/issue-65774-1.rs rename to tests/ui/associated-types/issue-65774-1.rs diff --git a/src/test/ui/associated-types/issue-65774-1.stderr b/tests/ui/associated-types/issue-65774-1.stderr similarity index 100% rename from src/test/ui/associated-types/issue-65774-1.stderr rename to tests/ui/associated-types/issue-65774-1.stderr diff --git a/src/test/ui/associated-types/issue-65774-2.rs b/tests/ui/associated-types/issue-65774-2.rs similarity index 100% rename from src/test/ui/associated-types/issue-65774-2.rs rename to tests/ui/associated-types/issue-65774-2.rs diff --git a/src/test/ui/associated-types/issue-65774-2.stderr b/tests/ui/associated-types/issue-65774-2.stderr similarity index 100% rename from src/test/ui/associated-types/issue-65774-2.stderr rename to tests/ui/associated-types/issue-65774-2.stderr diff --git a/src/test/ui/associated-types/issue-65934.rs b/tests/ui/associated-types/issue-65934.rs similarity index 100% rename from src/test/ui/associated-types/issue-65934.rs rename to tests/ui/associated-types/issue-65934.rs diff --git a/src/test/ui/associated-types/issue-67684.rs b/tests/ui/associated-types/issue-67684.rs similarity index 100% rename from src/test/ui/associated-types/issue-67684.rs rename to tests/ui/associated-types/issue-67684.rs diff --git a/src/test/ui/associated-types/issue-69398.rs b/tests/ui/associated-types/issue-69398.rs similarity index 100% rename from src/test/ui/associated-types/issue-69398.rs rename to tests/ui/associated-types/issue-69398.rs diff --git a/src/test/ui/associated-types/issue-71113.rs b/tests/ui/associated-types/issue-71113.rs similarity index 100% rename from src/test/ui/associated-types/issue-71113.rs rename to tests/ui/associated-types/issue-71113.rs diff --git a/src/test/ui/associated-types/issue-72806.rs b/tests/ui/associated-types/issue-72806.rs similarity index 100% rename from src/test/ui/associated-types/issue-72806.rs rename to tests/ui/associated-types/issue-72806.rs diff --git a/src/test/ui/associated-types/issue-72806.stderr b/tests/ui/associated-types/issue-72806.stderr similarity index 100% rename from src/test/ui/associated-types/issue-72806.stderr rename to tests/ui/associated-types/issue-72806.stderr diff --git a/src/test/ui/associated-types/issue-76179.rs b/tests/ui/associated-types/issue-76179.rs similarity index 100% rename from src/test/ui/associated-types/issue-76179.rs rename to tests/ui/associated-types/issue-76179.rs diff --git a/src/test/ui/associated-types/issue-82079.rs b/tests/ui/associated-types/issue-82079.rs similarity index 100% rename from src/test/ui/associated-types/issue-82079.rs rename to tests/ui/associated-types/issue-82079.rs diff --git a/src/test/ui/associated-types/issue-85103.rs b/tests/ui/associated-types/issue-85103.rs similarity index 100% rename from src/test/ui/associated-types/issue-85103.rs rename to tests/ui/associated-types/issue-85103.rs diff --git a/src/test/ui/associated-types/issue-85103.stderr b/tests/ui/associated-types/issue-85103.stderr similarity index 100% rename from src/test/ui/associated-types/issue-85103.stderr rename to tests/ui/associated-types/issue-85103.stderr diff --git a/src/test/ui/associated-types/issue-87261.rs b/tests/ui/associated-types/issue-87261.rs similarity index 100% rename from src/test/ui/associated-types/issue-87261.rs rename to tests/ui/associated-types/issue-87261.rs diff --git a/src/test/ui/associated-types/issue-87261.stderr b/tests/ui/associated-types/issue-87261.stderr similarity index 100% rename from src/test/ui/associated-types/issue-87261.stderr rename to tests/ui/associated-types/issue-87261.stderr diff --git a/src/test/ui/associated-types/issue-88856.rs b/tests/ui/associated-types/issue-88856.rs similarity index 100% rename from src/test/ui/associated-types/issue-88856.rs rename to tests/ui/associated-types/issue-88856.rs diff --git a/src/test/ui/associated-types/issue-91069.rs b/tests/ui/associated-types/issue-91069.rs similarity index 100% rename from src/test/ui/associated-types/issue-91069.rs rename to tests/ui/associated-types/issue-91069.rs diff --git a/src/test/ui/associated-types/issue-91231.rs b/tests/ui/associated-types/issue-91231.rs similarity index 100% rename from src/test/ui/associated-types/issue-91231.rs rename to tests/ui/associated-types/issue-91231.rs diff --git a/src/test/ui/associated-types/issue-91234.rs b/tests/ui/associated-types/issue-91234.rs similarity index 100% rename from src/test/ui/associated-types/issue-91234.rs rename to tests/ui/associated-types/issue-91234.rs diff --git a/src/test/ui/associated-types/missing-associated-types.rs b/tests/ui/associated-types/missing-associated-types.rs similarity index 100% rename from src/test/ui/associated-types/missing-associated-types.rs rename to tests/ui/associated-types/missing-associated-types.rs diff --git a/src/test/ui/associated-types/missing-associated-types.stderr b/tests/ui/associated-types/missing-associated-types.stderr similarity index 100% rename from src/test/ui/associated-types/missing-associated-types.stderr rename to tests/ui/associated-types/missing-associated-types.stderr diff --git a/src/test/ui/associated-types/normalization-debruijn-1.rs b/tests/ui/associated-types/normalization-debruijn-1.rs similarity index 100% rename from src/test/ui/associated-types/normalization-debruijn-1.rs rename to tests/ui/associated-types/normalization-debruijn-1.rs diff --git a/src/test/ui/associated-types/normalization-debruijn-2.rs b/tests/ui/associated-types/normalization-debruijn-2.rs similarity index 100% rename from src/test/ui/associated-types/normalization-debruijn-2.rs rename to tests/ui/associated-types/normalization-debruijn-2.rs diff --git a/src/test/ui/associated-types/normalization-debruijn-3.rs b/tests/ui/associated-types/normalization-debruijn-3.rs similarity index 100% rename from src/test/ui/associated-types/normalization-debruijn-3.rs rename to tests/ui/associated-types/normalization-debruijn-3.rs diff --git a/src/test/ui/associated-types/normalization-generality-2.rs b/tests/ui/associated-types/normalization-generality-2.rs similarity index 100% rename from src/test/ui/associated-types/normalization-generality-2.rs rename to tests/ui/associated-types/normalization-generality-2.rs diff --git a/src/test/ui/associated-types/normalization-generality.rs b/tests/ui/associated-types/normalization-generality.rs similarity index 100% rename from src/test/ui/associated-types/normalization-generality.rs rename to tests/ui/associated-types/normalization-generality.rs diff --git a/src/test/ui/associated-types/normalization-probe-cycle.rs b/tests/ui/associated-types/normalization-probe-cycle.rs similarity index 100% rename from src/test/ui/associated-types/normalization-probe-cycle.rs rename to tests/ui/associated-types/normalization-probe-cycle.rs diff --git a/src/test/ui/associated-types/normalize-cycle-in-eval-no-region.rs b/tests/ui/associated-types/normalize-cycle-in-eval-no-region.rs similarity index 100% rename from src/test/ui/associated-types/normalize-cycle-in-eval-no-region.rs rename to tests/ui/associated-types/normalize-cycle-in-eval-no-region.rs diff --git a/src/test/ui/associated-types/normalize-cycle-in-eval.rs b/tests/ui/associated-types/normalize-cycle-in-eval.rs similarity index 100% rename from src/test/ui/associated-types/normalize-cycle-in-eval.rs rename to tests/ui/associated-types/normalize-cycle-in-eval.rs diff --git a/src/test/ui/associated-types/object-method-numbering.rs b/tests/ui/associated-types/object-method-numbering.rs similarity index 100% rename from src/test/ui/associated-types/object-method-numbering.rs rename to tests/ui/associated-types/object-method-numbering.rs diff --git a/src/test/ui/associated-types/object-normalization.rs b/tests/ui/associated-types/object-normalization.rs similarity index 100% rename from src/test/ui/associated-types/object-normalization.rs rename to tests/ui/associated-types/object-normalization.rs diff --git a/src/test/ui/associated-types/param-env-normalize-cycle.rs b/tests/ui/associated-types/param-env-normalize-cycle.rs similarity index 100% rename from src/test/ui/associated-types/param-env-normalize-cycle.rs rename to tests/ui/associated-types/param-env-normalize-cycle.rs diff --git a/src/test/ui/associated-types/point-at-type-on-obligation-failure-2.rs b/tests/ui/associated-types/point-at-type-on-obligation-failure-2.rs similarity index 100% rename from src/test/ui/associated-types/point-at-type-on-obligation-failure-2.rs rename to tests/ui/associated-types/point-at-type-on-obligation-failure-2.rs diff --git a/src/test/ui/associated-types/point-at-type-on-obligation-failure-2.stderr b/tests/ui/associated-types/point-at-type-on-obligation-failure-2.stderr similarity index 100% rename from src/test/ui/associated-types/point-at-type-on-obligation-failure-2.stderr rename to tests/ui/associated-types/point-at-type-on-obligation-failure-2.stderr diff --git a/src/test/ui/associated-types/point-at-type-on-obligation-failure.rs b/tests/ui/associated-types/point-at-type-on-obligation-failure.rs similarity index 100% rename from src/test/ui/associated-types/point-at-type-on-obligation-failure.rs rename to tests/ui/associated-types/point-at-type-on-obligation-failure.rs diff --git a/src/test/ui/associated-types/point-at-type-on-obligation-failure.stderr b/tests/ui/associated-types/point-at-type-on-obligation-failure.stderr similarity index 100% rename from src/test/ui/associated-types/point-at-type-on-obligation-failure.stderr rename to tests/ui/associated-types/point-at-type-on-obligation-failure.stderr diff --git a/src/test/ui/associated-types/project-defer-unification.rs b/tests/ui/associated-types/project-defer-unification.rs similarity index 100% rename from src/test/ui/associated-types/project-defer-unification.rs rename to tests/ui/associated-types/project-defer-unification.rs diff --git a/src/test/ui/associated-types/project-recursion-limit-non-fatal.rs b/tests/ui/associated-types/project-recursion-limit-non-fatal.rs similarity index 100% rename from src/test/ui/associated-types/project-recursion-limit-non-fatal.rs rename to tests/ui/associated-types/project-recursion-limit-non-fatal.rs diff --git a/src/test/ui/associated-types/substs-ppaux.normal.stderr b/tests/ui/associated-types/substs-ppaux.normal.stderr similarity index 100% rename from src/test/ui/associated-types/substs-ppaux.normal.stderr rename to tests/ui/associated-types/substs-ppaux.normal.stderr diff --git a/src/test/ui/associated-types/substs-ppaux.rs b/tests/ui/associated-types/substs-ppaux.rs similarity index 100% rename from src/test/ui/associated-types/substs-ppaux.rs rename to tests/ui/associated-types/substs-ppaux.rs diff --git a/src/test/ui/associated-types/substs-ppaux.verbose.stderr b/tests/ui/associated-types/substs-ppaux.verbose.stderr similarity index 100% rename from src/test/ui/associated-types/substs-ppaux.verbose.stderr rename to tests/ui/associated-types/substs-ppaux.verbose.stderr diff --git a/src/test/ui/associated-types/trait-with-supertraits-needing-sized-self.rs b/tests/ui/associated-types/trait-with-supertraits-needing-sized-self.rs similarity index 100% rename from src/test/ui/associated-types/trait-with-supertraits-needing-sized-self.rs rename to tests/ui/associated-types/trait-with-supertraits-needing-sized-self.rs diff --git a/src/test/ui/associated-types/trait-with-supertraits-needing-sized-self.stderr b/tests/ui/associated-types/trait-with-supertraits-needing-sized-self.stderr similarity index 100% rename from src/test/ui/associated-types/trait-with-supertraits-needing-sized-self.stderr rename to tests/ui/associated-types/trait-with-supertraits-needing-sized-self.stderr diff --git a/src/test/ui/associated-types/wf-cycle-2.rs b/tests/ui/associated-types/wf-cycle-2.rs similarity index 100% rename from src/test/ui/associated-types/wf-cycle-2.rs rename to tests/ui/associated-types/wf-cycle-2.rs diff --git a/src/test/ui/associated-types/wf-cycle.rs b/tests/ui/associated-types/wf-cycle.rs similarity index 100% rename from src/test/ui/associated-types/wf-cycle.rs rename to tests/ui/associated-types/wf-cycle.rs diff --git a/src/test/ui/async-await/argument-patterns.rs b/tests/ui/async-await/argument-patterns.rs similarity index 100% rename from src/test/ui/async-await/argument-patterns.rs rename to tests/ui/async-await/argument-patterns.rs diff --git a/src/test/ui/async-await/async-assoc-fn-anon-lifetimes.rs b/tests/ui/async-await/async-assoc-fn-anon-lifetimes.rs similarity index 100% rename from src/test/ui/async-await/async-assoc-fn-anon-lifetimes.rs rename to tests/ui/async-await/async-assoc-fn-anon-lifetimes.rs diff --git a/src/test/ui/async-await/async-await-let-else.drop-tracking.stderr b/tests/ui/async-await/async-await-let-else.drop-tracking.stderr similarity index 100% rename from src/test/ui/async-await/async-await-let-else.drop-tracking.stderr rename to tests/ui/async-await/async-await-let-else.drop-tracking.stderr diff --git a/src/test/ui/async-await/async-await-let-else.no-drop-tracking.stderr b/tests/ui/async-await/async-await-let-else.no-drop-tracking.stderr similarity index 100% rename from src/test/ui/async-await/async-await-let-else.no-drop-tracking.stderr rename to tests/ui/async-await/async-await-let-else.no-drop-tracking.stderr diff --git a/src/test/ui/async-await/async-await-let-else.rs b/tests/ui/async-await/async-await-let-else.rs similarity index 100% rename from src/test/ui/async-await/async-await-let-else.rs rename to tests/ui/async-await/async-await-let-else.rs diff --git a/src/test/ui/async-await/async-await.rs b/tests/ui/async-await/async-await.rs similarity index 100% rename from src/test/ui/async-await/async-await.rs rename to tests/ui/async-await/async-await.rs diff --git a/src/test/ui/async-await/async-block-control-flow-static-semantics.rs b/tests/ui/async-await/async-block-control-flow-static-semantics.rs similarity index 100% rename from src/test/ui/async-await/async-block-control-flow-static-semantics.rs rename to tests/ui/async-await/async-block-control-flow-static-semantics.rs diff --git a/src/test/ui/async-await/async-block-control-flow-static-semantics.stderr b/tests/ui/async-await/async-block-control-flow-static-semantics.stderr similarity index 100% rename from src/test/ui/async-await/async-block-control-flow-static-semantics.stderr rename to tests/ui/async-await/async-block-control-flow-static-semantics.stderr diff --git a/src/test/ui/async-await/async-borrowck-escaping-block-error.fixed b/tests/ui/async-await/async-borrowck-escaping-block-error.fixed similarity index 100% rename from src/test/ui/async-await/async-borrowck-escaping-block-error.fixed rename to tests/ui/async-await/async-borrowck-escaping-block-error.fixed diff --git a/src/test/ui/async-await/async-borrowck-escaping-block-error.rs b/tests/ui/async-await/async-borrowck-escaping-block-error.rs similarity index 100% rename from src/test/ui/async-await/async-borrowck-escaping-block-error.rs rename to tests/ui/async-await/async-borrowck-escaping-block-error.rs diff --git a/src/test/ui/async-await/async-borrowck-escaping-block-error.stderr b/tests/ui/async-await/async-borrowck-escaping-block-error.stderr similarity index 100% rename from src/test/ui/async-await/async-borrowck-escaping-block-error.stderr rename to tests/ui/async-await/async-borrowck-escaping-block-error.stderr diff --git a/src/test/ui/async-await/async-borrowck-escaping-closure-error.rs b/tests/ui/async-await/async-borrowck-escaping-closure-error.rs similarity index 100% rename from src/test/ui/async-await/async-borrowck-escaping-closure-error.rs rename to tests/ui/async-await/async-borrowck-escaping-closure-error.rs diff --git a/src/test/ui/async-await/async-borrowck-escaping-closure-error.stderr b/tests/ui/async-await/async-borrowck-escaping-closure-error.stderr similarity index 100% rename from src/test/ui/async-await/async-borrowck-escaping-closure-error.stderr rename to tests/ui/async-await/async-borrowck-escaping-closure-error.stderr diff --git a/src/test/ui/async-await/async-closure-matches-expr.rs b/tests/ui/async-await/async-closure-matches-expr.rs similarity index 100% rename from src/test/ui/async-await/async-closure-matches-expr.rs rename to tests/ui/async-await/async-closure-matches-expr.rs diff --git a/src/test/ui/async-await/async-closure.rs b/tests/ui/async-await/async-closure.rs similarity index 100% rename from src/test/ui/async-await/async-closure.rs rename to tests/ui/async-await/async-closure.rs diff --git a/src/test/ui/async-await/async-error-span.rs b/tests/ui/async-await/async-error-span.rs similarity index 100% rename from src/test/ui/async-await/async-error-span.rs rename to tests/ui/async-await/async-error-span.rs diff --git a/src/test/ui/async-await/async-error-span.stderr b/tests/ui/async-await/async-error-span.stderr similarity index 100% rename from src/test/ui/async-await/async-error-span.stderr rename to tests/ui/async-await/async-error-span.stderr diff --git a/src/test/ui/async-await/async-fn-elided-impl-lifetime-parameter.rs b/tests/ui/async-await/async-fn-elided-impl-lifetime-parameter.rs similarity index 100% rename from src/test/ui/async-await/async-fn-elided-impl-lifetime-parameter.rs rename to tests/ui/async-await/async-fn-elided-impl-lifetime-parameter.rs diff --git a/src/test/ui/async-await/async-fn-nonsend.rs b/tests/ui/async-await/async-fn-nonsend.rs similarity index 100% rename from src/test/ui/async-await/async-fn-nonsend.rs rename to tests/ui/async-await/async-fn-nonsend.rs diff --git a/src/test/ui/async-await/async-fn-nonsend.stderr b/tests/ui/async-await/async-fn-nonsend.stderr similarity index 100% rename from src/test/ui/async-await/async-fn-nonsend.stderr rename to tests/ui/async-await/async-fn-nonsend.stderr diff --git a/src/test/ui/async-await/async-fn-path-elision.rs b/tests/ui/async-await/async-fn-path-elision.rs similarity index 100% rename from src/test/ui/async-await/async-fn-path-elision.rs rename to tests/ui/async-await/async-fn-path-elision.rs diff --git a/src/test/ui/async-await/async-fn-path-elision.stderr b/tests/ui/async-await/async-fn-path-elision.stderr similarity index 100% rename from src/test/ui/async-await/async-fn-path-elision.stderr rename to tests/ui/async-await/async-fn-path-elision.stderr diff --git a/src/test/ui/async-await/async-fn-send-uses-nonsend.rs b/tests/ui/async-await/async-fn-send-uses-nonsend.rs similarity index 100% rename from src/test/ui/async-await/async-fn-send-uses-nonsend.rs rename to tests/ui/async-await/async-fn-send-uses-nonsend.rs diff --git a/src/test/ui/async-await/async-fn-size-moved-locals.rs b/tests/ui/async-await/async-fn-size-moved-locals.rs similarity index 100% rename from src/test/ui/async-await/async-fn-size-moved-locals.rs rename to tests/ui/async-await/async-fn-size-moved-locals.rs diff --git a/src/test/ui/async-await/async-fn-size-uninit-locals.rs b/tests/ui/async-await/async-fn-size-uninit-locals.rs similarity index 100% rename from src/test/ui/async-await/async-fn-size-uninit-locals.rs rename to tests/ui/async-await/async-fn-size-uninit-locals.rs diff --git a/src/test/ui/async-await/async-fn-size.rs b/tests/ui/async-await/async-fn-size.rs similarity index 100% rename from src/test/ui/async-await/async-fn-size.rs rename to tests/ui/async-await/async-fn-size.rs diff --git a/src/test/ui/async-await/async-is-unwindsafe.rs b/tests/ui/async-await/async-is-unwindsafe.rs similarity index 100% rename from src/test/ui/async-await/async-is-unwindsafe.rs rename to tests/ui/async-await/async-is-unwindsafe.rs diff --git a/src/test/ui/async-await/async-is-unwindsafe.stderr b/tests/ui/async-await/async-is-unwindsafe.stderr similarity index 100% rename from src/test/ui/async-await/async-is-unwindsafe.stderr rename to tests/ui/async-await/async-is-unwindsafe.stderr diff --git a/src/test/ui/async-await/async-matches-expr.rs b/tests/ui/async-await/async-matches-expr.rs similarity index 100% rename from src/test/ui/async-await/async-matches-expr.rs rename to tests/ui/async-await/async-matches-expr.rs diff --git a/src/test/ui/async-await/async-trait-fn.rs b/tests/ui/async-await/async-trait-fn.rs similarity index 100% rename from src/test/ui/async-await/async-trait-fn.rs rename to tests/ui/async-await/async-trait-fn.rs diff --git a/src/test/ui/async-await/async-trait-fn.stderr b/tests/ui/async-await/async-trait-fn.stderr similarity index 100% rename from src/test/ui/async-await/async-trait-fn.stderr rename to tests/ui/async-await/async-trait-fn.stderr diff --git a/src/test/ui/async-await/async-unsafe-fn-call-in-safe.mir.stderr b/tests/ui/async-await/async-unsafe-fn-call-in-safe.mir.stderr similarity index 100% rename from src/test/ui/async-await/async-unsafe-fn-call-in-safe.mir.stderr rename to tests/ui/async-await/async-unsafe-fn-call-in-safe.mir.stderr diff --git a/src/test/ui/async-await/async-unsafe-fn-call-in-safe.rs b/tests/ui/async-await/async-unsafe-fn-call-in-safe.rs similarity index 100% rename from src/test/ui/async-await/async-unsafe-fn-call-in-safe.rs rename to tests/ui/async-await/async-unsafe-fn-call-in-safe.rs diff --git a/src/test/ui/async-await/async-unsafe-fn-call-in-safe.thir.stderr b/tests/ui/async-await/async-unsafe-fn-call-in-safe.thir.stderr similarity index 100% rename from src/test/ui/async-await/async-unsafe-fn-call-in-safe.thir.stderr rename to tests/ui/async-await/async-unsafe-fn-call-in-safe.thir.stderr diff --git a/src/test/ui/async-await/async-with-closure.rs b/tests/ui/async-await/async-with-closure.rs similarity index 100% rename from src/test/ui/async-await/async-with-closure.rs rename to tests/ui/async-await/async-with-closure.rs diff --git a/src/test/ui/async-await/auxiliary/arc_wake.rs b/tests/ui/async-await/auxiliary/arc_wake.rs similarity index 100% rename from src/test/ui/async-await/auxiliary/arc_wake.rs rename to tests/ui/async-await/auxiliary/arc_wake.rs diff --git a/src/test/ui/async-await/auxiliary/issue-72470-lib.rs b/tests/ui/async-await/auxiliary/issue-72470-lib.rs similarity index 100% rename from src/test/ui/async-await/auxiliary/issue-72470-lib.rs rename to tests/ui/async-await/auxiliary/issue-72470-lib.rs diff --git a/src/test/ui/async-await/await-into-future.rs b/tests/ui/async-await/await-into-future.rs similarity index 100% rename from src/test/ui/async-await/await-into-future.rs rename to tests/ui/async-await/await-into-future.rs diff --git a/src/test/ui/async-await/await-keyword/2015-edition-error-various-positions.rs b/tests/ui/async-await/await-keyword/2015-edition-error-various-positions.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/2015-edition-error-various-positions.rs rename to tests/ui/async-await/await-keyword/2015-edition-error-various-positions.rs diff --git a/src/test/ui/async-await/await-keyword/2015-edition-error-various-positions.stderr b/tests/ui/async-await/await-keyword/2015-edition-error-various-positions.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/2015-edition-error-various-positions.stderr rename to tests/ui/async-await/await-keyword/2015-edition-error-various-positions.stderr diff --git a/src/test/ui/async-await/await-keyword/2015-edition-warning.fixed b/tests/ui/async-await/await-keyword/2015-edition-warning.fixed similarity index 100% rename from src/test/ui/async-await/await-keyword/2015-edition-warning.fixed rename to tests/ui/async-await/await-keyword/2015-edition-warning.fixed diff --git a/src/test/ui/async-await/await-keyword/2015-edition-warning.rs b/tests/ui/async-await/await-keyword/2015-edition-warning.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/2015-edition-warning.rs rename to tests/ui/async-await/await-keyword/2015-edition-warning.rs diff --git a/src/test/ui/async-await/await-keyword/2015-edition-warning.stderr b/tests/ui/async-await/await-keyword/2015-edition-warning.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/2015-edition-warning.stderr rename to tests/ui/async-await/await-keyword/2015-edition-warning.stderr diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs b/tests/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs rename to tests/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr b/tests/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr rename to tests/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error.rs b/tests/ui/async-await/await-keyword/2018-edition-error.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/2018-edition-error.rs rename to tests/ui/async-await/await-keyword/2018-edition-error.rs diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error.stderr b/tests/ui/async-await/await-keyword/2018-edition-error.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/2018-edition-error.stderr rename to tests/ui/async-await/await-keyword/2018-edition-error.stderr diff --git a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs b/tests/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs rename to tests/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs diff --git a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr b/tests/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr rename to tests/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr diff --git a/src/test/ui/async-await/await-keyword/post_expansion_error.rs b/tests/ui/async-await/await-keyword/post_expansion_error.rs similarity index 100% rename from src/test/ui/async-await/await-keyword/post_expansion_error.rs rename to tests/ui/async-await/await-keyword/post_expansion_error.rs diff --git a/src/test/ui/async-await/await-keyword/post_expansion_error.stderr b/tests/ui/async-await/await-keyword/post_expansion_error.stderr similarity index 100% rename from src/test/ui/async-await/await-keyword/post_expansion_error.stderr rename to tests/ui/async-await/await-keyword/post_expansion_error.stderr diff --git a/src/test/ui/async-await/await-unsize.rs b/tests/ui/async-await/await-unsize.rs similarity index 100% rename from src/test/ui/async-await/await-unsize.rs rename to tests/ui/async-await/await-unsize.rs diff --git a/src/test/ui/async-await/bound-normalization.rs b/tests/ui/async-await/bound-normalization.rs similarity index 100% rename from src/test/ui/async-await/bound-normalization.rs rename to tests/ui/async-await/bound-normalization.rs diff --git a/src/test/ui/async-await/conditional-and-guaranteed-initialization.rs b/tests/ui/async-await/conditional-and-guaranteed-initialization.rs similarity index 100% rename from src/test/ui/async-await/conditional-and-guaranteed-initialization.rs rename to tests/ui/async-await/conditional-and-guaranteed-initialization.rs diff --git a/src/test/ui/async-await/default-struct-update.rs b/tests/ui/async-await/default-struct-update.rs similarity index 100% rename from src/test/ui/async-await/default-struct-update.rs rename to tests/ui/async-await/default-struct-update.rs diff --git a/src/test/ui/async-await/dont-print-desugared-async.rs b/tests/ui/async-await/dont-print-desugared-async.rs similarity index 100% rename from src/test/ui/async-await/dont-print-desugared-async.rs rename to tests/ui/async-await/dont-print-desugared-async.rs diff --git a/src/test/ui/async-await/dont-print-desugared-async.stderr b/tests/ui/async-await/dont-print-desugared-async.stderr similarity index 100% rename from src/test/ui/async-await/dont-print-desugared-async.stderr rename to tests/ui/async-await/dont-print-desugared-async.stderr diff --git a/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs b/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs similarity index 100% rename from src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs rename to tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.rs diff --git a/src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr b/tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr similarity index 100% rename from src/test/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr rename to tests/ui/async-await/dont-suggest-await-on-method-return-mismatch.stderr diff --git a/src/test/ui/async-await/dont-suggest-missing-await.rs b/tests/ui/async-await/dont-suggest-missing-await.rs similarity index 100% rename from src/test/ui/async-await/dont-suggest-missing-await.rs rename to tests/ui/async-await/dont-suggest-missing-await.rs diff --git a/src/test/ui/async-await/dont-suggest-missing-await.stderr b/tests/ui/async-await/dont-suggest-missing-await.stderr similarity index 100% rename from src/test/ui/async-await/dont-suggest-missing-await.stderr rename to tests/ui/async-await/dont-suggest-missing-await.stderr diff --git a/src/test/ui/async-await/drop-and-assign.rs b/tests/ui/async-await/drop-and-assign.rs similarity index 100% rename from src/test/ui/async-await/drop-and-assign.rs rename to tests/ui/async-await/drop-and-assign.rs diff --git a/src/test/ui/async-await/drop-order/auxiliary/arc_wake.rs b/tests/ui/async-await/drop-order/auxiliary/arc_wake.rs similarity index 100% rename from src/test/ui/async-await/drop-order/auxiliary/arc_wake.rs rename to tests/ui/async-await/drop-order/auxiliary/arc_wake.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-for-async-fn-parameters-by-ref-binding.rs b/tests/ui/async-await/drop-order/drop-order-for-async-fn-parameters-by-ref-binding.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-for-async-fn-parameters-by-ref-binding.rs rename to tests/ui/async-await/drop-order/drop-order-for-async-fn-parameters-by-ref-binding.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-for-async-fn-parameters.rs b/tests/ui/async-await/drop-order/drop-order-for-async-fn-parameters.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-for-async-fn-parameters.rs rename to tests/ui/async-await/drop-order/drop-order-for-async-fn-parameters.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-for-locals-when-cancelled.rs b/tests/ui/async-await/drop-order/drop-order-for-locals-when-cancelled.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-for-locals-when-cancelled.rs rename to tests/ui/async-await/drop-order/drop-order-for-locals-when-cancelled.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-for-temporary-in-tail-return-expr.rs b/tests/ui/async-await/drop-order/drop-order-for-temporary-in-tail-return-expr.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-for-temporary-in-tail-return-expr.rs rename to tests/ui/async-await/drop-order/drop-order-for-temporary-in-tail-return-expr.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-locals-are-hidden.rs b/tests/ui/async-await/drop-order/drop-order-locals-are-hidden.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-locals-are-hidden.rs rename to tests/ui/async-await/drop-order/drop-order-locals-are-hidden.rs diff --git a/src/test/ui/async-await/drop-order/drop-order-locals-are-hidden.stderr b/tests/ui/async-await/drop-order/drop-order-locals-are-hidden.stderr similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-locals-are-hidden.stderr rename to tests/ui/async-await/drop-order/drop-order-locals-are-hidden.stderr diff --git a/src/test/ui/async-await/drop-order/drop-order-when-cancelled.rs b/tests/ui/async-await/drop-order/drop-order-when-cancelled.rs similarity index 100% rename from src/test/ui/async-await/drop-order/drop-order-when-cancelled.rs rename to tests/ui/async-await/drop-order/drop-order-when-cancelled.rs diff --git a/src/test/ui/async-await/drop-track-bad-field-in-fru.rs b/tests/ui/async-await/drop-track-bad-field-in-fru.rs similarity index 100% rename from src/test/ui/async-await/drop-track-bad-field-in-fru.rs rename to tests/ui/async-await/drop-track-bad-field-in-fru.rs diff --git a/src/test/ui/async-await/drop-track-bad-field-in-fru.stderr b/tests/ui/async-await/drop-track-bad-field-in-fru.stderr similarity index 100% rename from src/test/ui/async-await/drop-track-bad-field-in-fru.stderr rename to tests/ui/async-await/drop-track-bad-field-in-fru.stderr diff --git a/src/test/ui/async-await/drop-track-field-assign-nonsend.rs b/tests/ui/async-await/drop-track-field-assign-nonsend.rs similarity index 100% rename from src/test/ui/async-await/drop-track-field-assign-nonsend.rs rename to tests/ui/async-await/drop-track-field-assign-nonsend.rs diff --git a/src/test/ui/async-await/drop-track-field-assign-nonsend.stderr b/tests/ui/async-await/drop-track-field-assign-nonsend.stderr similarity index 100% rename from src/test/ui/async-await/drop-track-field-assign-nonsend.stderr rename to tests/ui/async-await/drop-track-field-assign-nonsend.stderr diff --git a/src/test/ui/async-await/drop-track-field-assign.rs b/tests/ui/async-await/drop-track-field-assign.rs similarity index 100% rename from src/test/ui/async-await/drop-track-field-assign.rs rename to tests/ui/async-await/drop-track-field-assign.rs diff --git a/src/test/ui/async-await/drop-tracking-unresolved-typeck-results.rs b/tests/ui/async-await/drop-tracking-unresolved-typeck-results.rs similarity index 100% rename from src/test/ui/async-await/drop-tracking-unresolved-typeck-results.rs rename to tests/ui/async-await/drop-tracking-unresolved-typeck-results.rs diff --git a/src/test/ui/async-await/drop-tracking-unresolved-typeck-results.stderr b/tests/ui/async-await/drop-tracking-unresolved-typeck-results.stderr similarity index 100% rename from src/test/ui/async-await/drop-tracking-unresolved-typeck-results.stderr rename to tests/ui/async-await/drop-tracking-unresolved-typeck-results.stderr diff --git a/src/test/ui/async-await/edition-deny-async-fns-2015.rs b/tests/ui/async-await/edition-deny-async-fns-2015.rs similarity index 100% rename from src/test/ui/async-await/edition-deny-async-fns-2015.rs rename to tests/ui/async-await/edition-deny-async-fns-2015.rs diff --git a/src/test/ui/async-await/edition-deny-async-fns-2015.stderr b/tests/ui/async-await/edition-deny-async-fns-2015.stderr similarity index 100% rename from src/test/ui/async-await/edition-deny-async-fns-2015.stderr rename to tests/ui/async-await/edition-deny-async-fns-2015.stderr diff --git a/src/test/ui/async-await/expansion-in-attrs.rs b/tests/ui/async-await/expansion-in-attrs.rs similarity index 100% rename from src/test/ui/async-await/expansion-in-attrs.rs rename to tests/ui/async-await/expansion-in-attrs.rs diff --git a/src/test/ui/async-await/feature-async-closure.rs b/tests/ui/async-await/feature-async-closure.rs similarity index 100% rename from src/test/ui/async-await/feature-async-closure.rs rename to tests/ui/async-await/feature-async-closure.rs diff --git a/src/test/ui/async-await/feature-async-closure.stderr b/tests/ui/async-await/feature-async-closure.stderr similarity index 100% rename from src/test/ui/async-await/feature-async-closure.stderr rename to tests/ui/async-await/feature-async-closure.stderr diff --git a/src/test/ui/async-await/feature-gate-async_fn_in_trait.rs b/tests/ui/async-await/feature-gate-async_fn_in_trait.rs similarity index 100% rename from src/test/ui/async-await/feature-gate-async_fn_in_trait.rs rename to tests/ui/async-await/feature-gate-async_fn_in_trait.rs diff --git a/src/test/ui/async-await/feature-gate-async_fn_in_trait.stderr b/tests/ui/async-await/feature-gate-async_fn_in_trait.stderr similarity index 100% rename from src/test/ui/async-await/feature-gate-async_fn_in_trait.stderr rename to tests/ui/async-await/feature-gate-async_fn_in_trait.stderr diff --git a/src/test/ui/async-await/feature-self-return-type.rs b/tests/ui/async-await/feature-self-return-type.rs similarity index 100% rename from src/test/ui/async-await/feature-self-return-type.rs rename to tests/ui/async-await/feature-self-return-type.rs diff --git a/src/test/ui/async-await/feature-self-return-type.stderr b/tests/ui/async-await/feature-self-return-type.stderr similarity index 100% rename from src/test/ui/async-await/feature-self-return-type.stderr rename to tests/ui/async-await/feature-self-return-type.stderr diff --git a/src/test/ui/async-await/futures-api.rs b/tests/ui/async-await/futures-api.rs similarity index 100% rename from src/test/ui/async-await/futures-api.rs rename to tests/ui/async-await/futures-api.rs diff --git a/src/test/ui/async-await/generator-desc.rs b/tests/ui/async-await/generator-desc.rs similarity index 100% rename from src/test/ui/async-await/generator-desc.rs rename to tests/ui/async-await/generator-desc.rs diff --git a/src/test/ui/async-await/generator-desc.stderr b/tests/ui/async-await/generator-desc.stderr similarity index 100% rename from src/test/ui/async-await/generator-desc.stderr rename to tests/ui/async-await/generator-desc.stderr diff --git a/src/test/ui/async-await/generator-not-future.rs b/tests/ui/async-await/generator-not-future.rs similarity index 100% rename from src/test/ui/async-await/generator-not-future.rs rename to tests/ui/async-await/generator-not-future.rs diff --git a/src/test/ui/async-await/generator-not-future.stderr b/tests/ui/async-await/generator-not-future.stderr similarity index 100% rename from src/test/ui/async-await/generator-not-future.stderr rename to tests/ui/async-await/generator-not-future.stderr diff --git a/src/test/ui/async-await/generics-and-bounds.rs b/tests/ui/async-await/generics-and-bounds.rs similarity index 100% rename from src/test/ui/async-await/generics-and-bounds.rs rename to tests/ui/async-await/generics-and-bounds.rs diff --git a/src/test/ui/async-await/in-trait/async-associated-types.rs b/tests/ui/async-await/in-trait/async-associated-types.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-associated-types.rs rename to tests/ui/async-await/in-trait/async-associated-types.rs diff --git a/src/test/ui/async-await/in-trait/async-associated-types2.rs b/tests/ui/async-await/in-trait/async-associated-types2.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-associated-types2.rs rename to tests/ui/async-await/in-trait/async-associated-types2.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.rs b/tests/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.rs rename to tests/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.stderr b/tests/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.stderr rename to tests/ui/async-await/in-trait/async-example-desugared-boxed-in-trait.stderr diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-boxed.rs b/tests/ui/async-await/in-trait/async-example-desugared-boxed.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-boxed.rs rename to tests/ui/async-await/in-trait/async-example-desugared-boxed.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-boxed.stderr b/tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-boxed.stderr rename to tests/ui/async-await/in-trait/async-example-desugared-boxed.stderr diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-extra.rs b/tests/ui/async-await/in-trait/async-example-desugared-extra.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-extra.rs rename to tests/ui/async-await/in-trait/async-example-desugared-extra.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-in-trait.rs b/tests/ui/async-await/in-trait/async-example-desugared-in-trait.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-in-trait.rs rename to tests/ui/async-await/in-trait/async-example-desugared-in-trait.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-manual.rs b/tests/ui/async-await/in-trait/async-example-desugared-manual.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-manual.rs rename to tests/ui/async-await/in-trait/async-example-desugared-manual.rs diff --git a/src/test/ui/async-await/in-trait/async-example-desugared-manual.stderr b/tests/ui/async-await/in-trait/async-example-desugared-manual.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared-manual.stderr rename to tests/ui/async-await/in-trait/async-example-desugared-manual.stderr diff --git a/src/test/ui/async-await/in-trait/async-example-desugared.rs b/tests/ui/async-await/in-trait/async-example-desugared.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example-desugared.rs rename to tests/ui/async-await/in-trait/async-example-desugared.rs diff --git a/src/test/ui/async-await/in-trait/async-example.rs b/tests/ui/async-await/in-trait/async-example.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-example.rs rename to tests/ui/async-await/in-trait/async-example.rs diff --git a/src/test/ui/async-await/in-trait/async-generics-and-bounds.rs b/tests/ui/async-await/in-trait/async-generics-and-bounds.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-generics-and-bounds.rs rename to tests/ui/async-await/in-trait/async-generics-and-bounds.rs diff --git a/src/test/ui/async-await/in-trait/async-generics-and-bounds.stderr b/tests/ui/async-await/in-trait/async-generics-and-bounds.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-generics-and-bounds.stderr rename to tests/ui/async-await/in-trait/async-generics-and-bounds.stderr diff --git a/src/test/ui/async-await/in-trait/async-generics.rs b/tests/ui/async-await/in-trait/async-generics.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-generics.rs rename to tests/ui/async-await/in-trait/async-generics.rs diff --git a/src/test/ui/async-await/in-trait/async-generics.stderr b/tests/ui/async-await/in-trait/async-generics.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-generics.stderr rename to tests/ui/async-await/in-trait/async-generics.stderr diff --git a/src/test/ui/async-await/in-trait/async-lifetimes-and-bounds.rs b/tests/ui/async-await/in-trait/async-lifetimes-and-bounds.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-lifetimes-and-bounds.rs rename to tests/ui/async-await/in-trait/async-lifetimes-and-bounds.rs diff --git a/src/test/ui/async-await/in-trait/async-lifetimes.rs b/tests/ui/async-await/in-trait/async-lifetimes.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-lifetimes.rs rename to tests/ui/async-await/in-trait/async-lifetimes.rs diff --git a/src/test/ui/async-await/in-trait/async-recursive-generic.rs b/tests/ui/async-await/in-trait/async-recursive-generic.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-recursive-generic.rs rename to tests/ui/async-await/in-trait/async-recursive-generic.rs diff --git a/src/test/ui/async-await/in-trait/async-recursive-generic.stderr b/tests/ui/async-await/in-trait/async-recursive-generic.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-recursive-generic.stderr rename to tests/ui/async-await/in-trait/async-recursive-generic.stderr diff --git a/src/test/ui/async-await/in-trait/async-recursive.rs b/tests/ui/async-await/in-trait/async-recursive.rs similarity index 100% rename from src/test/ui/async-await/in-trait/async-recursive.rs rename to tests/ui/async-await/in-trait/async-recursive.rs diff --git a/src/test/ui/async-await/in-trait/async-recursive.stderr b/tests/ui/async-await/in-trait/async-recursive.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/async-recursive.stderr rename to tests/ui/async-await/in-trait/async-recursive.stderr diff --git a/src/test/ui/async-await/in-trait/bad-signatures.rs b/tests/ui/async-await/in-trait/bad-signatures.rs similarity index 100% rename from src/test/ui/async-await/in-trait/bad-signatures.rs rename to tests/ui/async-await/in-trait/bad-signatures.rs diff --git a/src/test/ui/async-await/in-trait/bad-signatures.stderr b/tests/ui/async-await/in-trait/bad-signatures.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/bad-signatures.stderr rename to tests/ui/async-await/in-trait/bad-signatures.stderr diff --git a/src/test/ui/async-await/in-trait/early-bound-1.rs b/tests/ui/async-await/in-trait/early-bound-1.rs similarity index 100% rename from src/test/ui/async-await/in-trait/early-bound-1.rs rename to tests/ui/async-await/in-trait/early-bound-1.rs diff --git a/src/test/ui/async-await/in-trait/early-bound-2.rs b/tests/ui/async-await/in-trait/early-bound-2.rs similarity index 100% rename from src/test/ui/async-await/in-trait/early-bound-2.rs rename to tests/ui/async-await/in-trait/early-bound-2.rs diff --git a/src/test/ui/async-await/in-trait/fn-not-async-err.rs b/tests/ui/async-await/in-trait/fn-not-async-err.rs similarity index 100% rename from src/test/ui/async-await/in-trait/fn-not-async-err.rs rename to tests/ui/async-await/in-trait/fn-not-async-err.rs diff --git a/src/test/ui/async-await/in-trait/fn-not-async-err.stderr b/tests/ui/async-await/in-trait/fn-not-async-err.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/fn-not-async-err.stderr rename to tests/ui/async-await/in-trait/fn-not-async-err.stderr diff --git a/src/test/ui/async-await/in-trait/fn-not-async-err2.rs b/tests/ui/async-await/in-trait/fn-not-async-err2.rs similarity index 100% rename from src/test/ui/async-await/in-trait/fn-not-async-err2.rs rename to tests/ui/async-await/in-trait/fn-not-async-err2.rs diff --git a/src/test/ui/async-await/in-trait/fn-not-async-err2.stderr b/tests/ui/async-await/in-trait/fn-not-async-err2.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/fn-not-async-err2.stderr rename to tests/ui/async-await/in-trait/fn-not-async-err2.stderr diff --git a/src/test/ui/async-await/in-trait/implied-bounds.rs b/tests/ui/async-await/in-trait/implied-bounds.rs similarity index 100% rename from src/test/ui/async-await/in-trait/implied-bounds.rs rename to tests/ui/async-await/in-trait/implied-bounds.rs diff --git a/src/test/ui/async-await/in-trait/issue-102138.rs b/tests/ui/async-await/in-trait/issue-102138.rs similarity index 100% rename from src/test/ui/async-await/in-trait/issue-102138.rs rename to tests/ui/async-await/in-trait/issue-102138.rs diff --git a/src/test/ui/async-await/in-trait/issue-102219.rs b/tests/ui/async-await/in-trait/issue-102219.rs similarity index 100% rename from src/test/ui/async-await/in-trait/issue-102219.rs rename to tests/ui/async-await/in-trait/issue-102219.rs diff --git a/src/test/ui/async-await/in-trait/issue-102310.rs b/tests/ui/async-await/in-trait/issue-102310.rs similarity index 100% rename from src/test/ui/async-await/in-trait/issue-102310.rs rename to tests/ui/async-await/in-trait/issue-102310.rs diff --git a/src/test/ui/async-await/in-trait/issue-104678.rs b/tests/ui/async-await/in-trait/issue-104678.rs similarity index 100% rename from src/test/ui/async-await/in-trait/issue-104678.rs rename to tests/ui/async-await/in-trait/issue-104678.rs diff --git a/src/test/ui/async-await/in-trait/lifetime-mismatch.rs b/tests/ui/async-await/in-trait/lifetime-mismatch.rs similarity index 100% rename from src/test/ui/async-await/in-trait/lifetime-mismatch.rs rename to tests/ui/async-await/in-trait/lifetime-mismatch.rs diff --git a/src/test/ui/async-await/in-trait/lifetime-mismatch.stderr b/tests/ui/async-await/in-trait/lifetime-mismatch.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/lifetime-mismatch.stderr rename to tests/ui/async-await/in-trait/lifetime-mismatch.stderr diff --git a/src/test/ui/async-await/in-trait/nested-rpit.rs b/tests/ui/async-await/in-trait/nested-rpit.rs similarity index 100% rename from src/test/ui/async-await/in-trait/nested-rpit.rs rename to tests/ui/async-await/in-trait/nested-rpit.rs diff --git a/src/test/ui/async-await/in-trait/object-safety.rs b/tests/ui/async-await/in-trait/object-safety.rs similarity index 100% rename from src/test/ui/async-await/in-trait/object-safety.rs rename to tests/ui/async-await/in-trait/object-safety.rs diff --git a/src/test/ui/async-await/in-trait/object-safety.stderr b/tests/ui/async-await/in-trait/object-safety.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/object-safety.stderr rename to tests/ui/async-await/in-trait/object-safety.stderr diff --git a/src/test/ui/async-await/in-trait/return-type-suggestion.rs b/tests/ui/async-await/in-trait/return-type-suggestion.rs similarity index 100% rename from src/test/ui/async-await/in-trait/return-type-suggestion.rs rename to tests/ui/async-await/in-trait/return-type-suggestion.rs diff --git a/src/test/ui/async-await/in-trait/return-type-suggestion.stderr b/tests/ui/async-await/in-trait/return-type-suggestion.stderr similarity index 100% rename from src/test/ui/async-await/in-trait/return-type-suggestion.stderr rename to tests/ui/async-await/in-trait/return-type-suggestion.stderr diff --git a/src/test/ui/async-await/incorrect-move-async-order-issue-79694.fixed b/tests/ui/async-await/incorrect-move-async-order-issue-79694.fixed similarity index 100% rename from src/test/ui/async-await/incorrect-move-async-order-issue-79694.fixed rename to tests/ui/async-await/incorrect-move-async-order-issue-79694.fixed diff --git a/src/test/ui/async-await/incorrect-move-async-order-issue-79694.rs b/tests/ui/async-await/incorrect-move-async-order-issue-79694.rs similarity index 100% rename from src/test/ui/async-await/incorrect-move-async-order-issue-79694.rs rename to tests/ui/async-await/incorrect-move-async-order-issue-79694.rs diff --git a/src/test/ui/async-await/incorrect-move-async-order-issue-79694.stderr b/tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr similarity index 100% rename from src/test/ui/async-await/incorrect-move-async-order-issue-79694.stderr rename to tests/ui/async-await/incorrect-move-async-order-issue-79694.stderr diff --git a/src/test/ui/async-await/interior-with-const-generic-expr.rs b/tests/ui/async-await/interior-with-const-generic-expr.rs similarity index 100% rename from src/test/ui/async-await/interior-with-const-generic-expr.rs rename to tests/ui/async-await/interior-with-const-generic-expr.rs diff --git a/src/test/ui/async-await/issue-101715.rs b/tests/ui/async-await/issue-101715.rs similarity index 100% rename from src/test/ui/async-await/issue-101715.rs rename to tests/ui/async-await/issue-101715.rs diff --git a/src/test/ui/async-await/issue-101715.stderr b/tests/ui/async-await/issue-101715.stderr similarity index 100% rename from src/test/ui/async-await/issue-101715.stderr rename to tests/ui/async-await/issue-101715.stderr diff --git a/src/test/ui/async-await/issue-105501.rs b/tests/ui/async-await/issue-105501.rs similarity index 100% rename from src/test/ui/async-await/issue-105501.rs rename to tests/ui/async-await/issue-105501.rs diff --git a/src/test/ui/async-await/issue-54239-private-type-triggers-lint.rs b/tests/ui/async-await/issue-54239-private-type-triggers-lint.rs similarity index 100% rename from src/test/ui/async-await/issue-54239-private-type-triggers-lint.rs rename to tests/ui/async-await/issue-54239-private-type-triggers-lint.rs diff --git a/src/test/ui/async-await/issue-60709.rs b/tests/ui/async-await/issue-60709.rs similarity index 100% rename from src/test/ui/async-await/issue-60709.rs rename to tests/ui/async-await/issue-60709.rs diff --git a/src/test/ui/async-await/issue-61076.rs b/tests/ui/async-await/issue-61076.rs similarity index 100% rename from src/test/ui/async-await/issue-61076.rs rename to tests/ui/async-await/issue-61076.rs diff --git a/src/test/ui/async-await/issue-61076.stderr b/tests/ui/async-await/issue-61076.stderr similarity index 100% rename from src/test/ui/async-await/issue-61076.stderr rename to tests/ui/async-await/issue-61076.stderr diff --git a/src/test/ui/async-await/issue-61452.rs b/tests/ui/async-await/issue-61452.rs similarity index 100% rename from src/test/ui/async-await/issue-61452.rs rename to tests/ui/async-await/issue-61452.rs diff --git a/src/test/ui/async-await/issue-61452.stderr b/tests/ui/async-await/issue-61452.stderr similarity index 100% rename from src/test/ui/async-await/issue-61452.stderr rename to tests/ui/async-await/issue-61452.stderr diff --git a/src/test/ui/async-await/issue-61793.rs b/tests/ui/async-await/issue-61793.rs similarity index 100% rename from src/test/ui/async-await/issue-61793.rs rename to tests/ui/async-await/issue-61793.rs diff --git a/src/test/ui/async-await/issue-61949-self-return-type.rs b/tests/ui/async-await/issue-61949-self-return-type.rs similarity index 100% rename from src/test/ui/async-await/issue-61949-self-return-type.rs rename to tests/ui/async-await/issue-61949-self-return-type.rs diff --git a/src/test/ui/async-await/issue-61949-self-return-type.stderr b/tests/ui/async-await/issue-61949-self-return-type.stderr similarity index 100% rename from src/test/ui/async-await/issue-61949-self-return-type.stderr rename to tests/ui/async-await/issue-61949-self-return-type.stderr diff --git a/src/test/ui/async-await/issue-62658.rs b/tests/ui/async-await/issue-62658.rs similarity index 100% rename from src/test/ui/async-await/issue-62658.rs rename to tests/ui/async-await/issue-62658.rs diff --git a/src/test/ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs b/tests/ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs similarity index 100% rename from src/test/ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs rename to tests/ui/async-await/issue-63832-await-short-temporary-lifetime-1.rs diff --git a/src/test/ui/async-await/issue-63832-await-short-temporary-lifetime.rs b/tests/ui/async-await/issue-63832-await-short-temporary-lifetime.rs similarity index 100% rename from src/test/ui/async-await/issue-63832-await-short-temporary-lifetime.rs rename to tests/ui/async-await/issue-63832-await-short-temporary-lifetime.rs diff --git a/src/test/ui/async-await/issue-64130-1-sync.rs b/tests/ui/async-await/issue-64130-1-sync.rs similarity index 100% rename from src/test/ui/async-await/issue-64130-1-sync.rs rename to tests/ui/async-await/issue-64130-1-sync.rs diff --git a/src/test/ui/async-await/issue-64130-1-sync.stderr b/tests/ui/async-await/issue-64130-1-sync.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-1-sync.stderr rename to tests/ui/async-await/issue-64130-1-sync.stderr diff --git a/src/test/ui/async-await/issue-64130-2-send.rs b/tests/ui/async-await/issue-64130-2-send.rs similarity index 100% rename from src/test/ui/async-await/issue-64130-2-send.rs rename to tests/ui/async-await/issue-64130-2-send.rs diff --git a/src/test/ui/async-await/issue-64130-2-send.stderr b/tests/ui/async-await/issue-64130-2-send.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-2-send.stderr rename to tests/ui/async-await/issue-64130-2-send.stderr diff --git a/src/test/ui/async-await/issue-64130-3-other.rs b/tests/ui/async-await/issue-64130-3-other.rs similarity index 100% rename from src/test/ui/async-await/issue-64130-3-other.rs rename to tests/ui/async-await/issue-64130-3-other.rs diff --git a/src/test/ui/async-await/issue-64130-3-other.stderr b/tests/ui/async-await/issue-64130-3-other.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-3-other.stderr rename to tests/ui/async-await/issue-64130-3-other.stderr diff --git a/src/test/ui/async-await/issue-64130-4-async-move.drop-tracking.stderr b/tests/ui/async-await/issue-64130-4-async-move.drop-tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-4-async-move.drop-tracking.stderr rename to tests/ui/async-await/issue-64130-4-async-move.drop-tracking.stderr diff --git a/src/test/ui/async-await/issue-64130-4-async-move.no_drop_tracking.stderr b/tests/ui/async-await/issue-64130-4-async-move.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-4-async-move.no_drop_tracking.stderr rename to tests/ui/async-await/issue-64130-4-async-move.no_drop_tracking.stderr diff --git a/src/test/ui/async-await/issue-64130-4-async-move.rs b/tests/ui/async-await/issue-64130-4-async-move.rs similarity index 100% rename from src/test/ui/async-await/issue-64130-4-async-move.rs rename to tests/ui/async-await/issue-64130-4-async-move.rs diff --git a/src/test/ui/async-await/issue-64130-non-send-future-diags.rs b/tests/ui/async-await/issue-64130-non-send-future-diags.rs similarity index 100% rename from src/test/ui/async-await/issue-64130-non-send-future-diags.rs rename to tests/ui/async-await/issue-64130-non-send-future-diags.rs diff --git a/src/test/ui/async-await/issue-64130-non-send-future-diags.stderr b/tests/ui/async-await/issue-64130-non-send-future-diags.stderr similarity index 100% rename from src/test/ui/async-await/issue-64130-non-send-future-diags.stderr rename to tests/ui/async-await/issue-64130-non-send-future-diags.stderr diff --git a/src/test/ui/async-await/issue-64391.rs b/tests/ui/async-await/issue-64391.rs similarity index 100% rename from src/test/ui/async-await/issue-64391.rs rename to tests/ui/async-await/issue-64391.rs diff --git a/src/test/ui/async-await/issue-66312.rs b/tests/ui/async-await/issue-66312.rs similarity index 100% rename from src/test/ui/async-await/issue-66312.rs rename to tests/ui/async-await/issue-66312.rs diff --git a/src/test/ui/async-await/issue-66312.stderr b/tests/ui/async-await/issue-66312.stderr similarity index 100% rename from src/test/ui/async-await/issue-66312.stderr rename to tests/ui/async-await/issue-66312.stderr diff --git a/src/test/ui/async-await/issue-66387-if-without-else.rs b/tests/ui/async-await/issue-66387-if-without-else.rs similarity index 100% rename from src/test/ui/async-await/issue-66387-if-without-else.rs rename to tests/ui/async-await/issue-66387-if-without-else.rs diff --git a/src/test/ui/async-await/issue-66387-if-without-else.stderr b/tests/ui/async-await/issue-66387-if-without-else.stderr similarity index 100% rename from src/test/ui/async-await/issue-66387-if-without-else.stderr rename to tests/ui/async-await/issue-66387-if-without-else.stderr diff --git a/src/test/ui/async-await/issue-67252-unnamed-future.rs b/tests/ui/async-await/issue-67252-unnamed-future.rs similarity index 100% rename from src/test/ui/async-await/issue-67252-unnamed-future.rs rename to tests/ui/async-await/issue-67252-unnamed-future.rs diff --git a/src/test/ui/async-await/issue-67252-unnamed-future.stderr b/tests/ui/async-await/issue-67252-unnamed-future.stderr similarity index 100% rename from src/test/ui/async-await/issue-67252-unnamed-future.stderr rename to tests/ui/async-await/issue-67252-unnamed-future.stderr diff --git a/src/test/ui/async-await/issue-67651.rs b/tests/ui/async-await/issue-67651.rs similarity index 100% rename from src/test/ui/async-await/issue-67651.rs rename to tests/ui/async-await/issue-67651.rs diff --git a/src/test/ui/async-await/issue-67651.stderr b/tests/ui/async-await/issue-67651.stderr similarity index 100% rename from src/test/ui/async-await/issue-67651.stderr rename to tests/ui/async-await/issue-67651.stderr diff --git a/src/test/ui/async-await/issue-67765-async-diagnostic.rs b/tests/ui/async-await/issue-67765-async-diagnostic.rs similarity index 100% rename from src/test/ui/async-await/issue-67765-async-diagnostic.rs rename to tests/ui/async-await/issue-67765-async-diagnostic.rs diff --git a/src/test/ui/async-await/issue-67765-async-diagnostic.stderr b/tests/ui/async-await/issue-67765-async-diagnostic.stderr similarity index 100% rename from src/test/ui/async-await/issue-67765-async-diagnostic.stderr rename to tests/ui/async-await/issue-67765-async-diagnostic.stderr diff --git a/src/test/ui/async-await/issue-68112.drop_tracking.stderr b/tests/ui/async-await/issue-68112.drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-68112.drop_tracking.stderr rename to tests/ui/async-await/issue-68112.drop_tracking.stderr diff --git a/src/test/ui/async-await/issue-68112.no_drop_tracking.stderr b/tests/ui/async-await/issue-68112.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-68112.no_drop_tracking.stderr rename to tests/ui/async-await/issue-68112.no_drop_tracking.stderr diff --git a/src/test/ui/async-await/issue-68112.rs b/tests/ui/async-await/issue-68112.rs similarity index 100% rename from src/test/ui/async-await/issue-68112.rs rename to tests/ui/async-await/issue-68112.rs diff --git a/src/test/ui/async-await/issue-68523-start.rs b/tests/ui/async-await/issue-68523-start.rs similarity index 100% rename from src/test/ui/async-await/issue-68523-start.rs rename to tests/ui/async-await/issue-68523-start.rs diff --git a/src/test/ui/async-await/issue-68523-start.stderr b/tests/ui/async-await/issue-68523-start.stderr similarity index 100% rename from src/test/ui/async-await/issue-68523-start.stderr rename to tests/ui/async-await/issue-68523-start.stderr diff --git a/src/test/ui/async-await/issue-68523.rs b/tests/ui/async-await/issue-68523.rs similarity index 100% rename from src/test/ui/async-await/issue-68523.rs rename to tests/ui/async-await/issue-68523.rs diff --git a/src/test/ui/async-await/issue-68523.stderr b/tests/ui/async-await/issue-68523.stderr similarity index 100% rename from src/test/ui/async-await/issue-68523.stderr rename to tests/ui/async-await/issue-68523.stderr diff --git a/src/test/ui/async-await/issue-69446-fnmut-capture.rs b/tests/ui/async-await/issue-69446-fnmut-capture.rs similarity index 100% rename from src/test/ui/async-await/issue-69446-fnmut-capture.rs rename to tests/ui/async-await/issue-69446-fnmut-capture.rs diff --git a/src/test/ui/async-await/issue-69446-fnmut-capture.stderr b/tests/ui/async-await/issue-69446-fnmut-capture.stderr similarity index 100% rename from src/test/ui/async-await/issue-69446-fnmut-capture.stderr rename to tests/ui/async-await/issue-69446-fnmut-capture.stderr diff --git a/src/test/ui/async-await/issue-70594.rs b/tests/ui/async-await/issue-70594.rs similarity index 100% rename from src/test/ui/async-await/issue-70594.rs rename to tests/ui/async-await/issue-70594.rs diff --git a/src/test/ui/async-await/issue-70594.stderr b/tests/ui/async-await/issue-70594.stderr similarity index 100% rename from src/test/ui/async-await/issue-70594.stderr rename to tests/ui/async-await/issue-70594.stderr diff --git a/src/test/ui/async-await/issue-70818.rs b/tests/ui/async-await/issue-70818.rs similarity index 100% rename from src/test/ui/async-await/issue-70818.rs rename to tests/ui/async-await/issue-70818.rs diff --git a/src/test/ui/async-await/issue-70818.stderr b/tests/ui/async-await/issue-70818.stderr similarity index 100% rename from src/test/ui/async-await/issue-70818.stderr rename to tests/ui/async-await/issue-70818.stderr diff --git a/src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr b/tests/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr rename to tests/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr diff --git a/src/test/ui/async-await/issue-70935-complex-spans.no_drop_tracking.stderr b/tests/ui/async-await/issue-70935-complex-spans.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-70935-complex-spans.no_drop_tracking.stderr rename to tests/ui/async-await/issue-70935-complex-spans.no_drop_tracking.stderr diff --git a/src/test/ui/async-await/issue-70935-complex-spans.rs b/tests/ui/async-await/issue-70935-complex-spans.rs similarity index 100% rename from src/test/ui/async-await/issue-70935-complex-spans.rs rename to tests/ui/async-await/issue-70935-complex-spans.rs diff --git a/src/test/ui/async-await/issue-71137.rs b/tests/ui/async-await/issue-71137.rs similarity index 100% rename from src/test/ui/async-await/issue-71137.rs rename to tests/ui/async-await/issue-71137.rs diff --git a/src/test/ui/async-await/issue-71137.stderr b/tests/ui/async-await/issue-71137.stderr similarity index 100% rename from src/test/ui/async-await/issue-71137.stderr rename to tests/ui/async-await/issue-71137.stderr diff --git a/src/test/ui/async-await/issue-72442.rs b/tests/ui/async-await/issue-72442.rs similarity index 100% rename from src/test/ui/async-await/issue-72442.rs rename to tests/ui/async-await/issue-72442.rs diff --git a/src/test/ui/async-await/issue-72442.stderr b/tests/ui/async-await/issue-72442.stderr similarity index 100% rename from src/test/ui/async-await/issue-72442.stderr rename to tests/ui/async-await/issue-72442.stderr diff --git a/src/test/ui/async-await/issue-72470-llvm-dominate.rs b/tests/ui/async-await/issue-72470-llvm-dominate.rs similarity index 100% rename from src/test/ui/async-await/issue-72470-llvm-dominate.rs rename to tests/ui/async-await/issue-72470-llvm-dominate.rs diff --git a/src/test/ui/async-await/issue-72590-type-error-sized.rs b/tests/ui/async-await/issue-72590-type-error-sized.rs similarity index 100% rename from src/test/ui/async-await/issue-72590-type-error-sized.rs rename to tests/ui/async-await/issue-72590-type-error-sized.rs diff --git a/src/test/ui/async-await/issue-72590-type-error-sized.stderr b/tests/ui/async-await/issue-72590-type-error-sized.stderr similarity index 100% rename from src/test/ui/async-await/issue-72590-type-error-sized.stderr rename to tests/ui/async-await/issue-72590-type-error-sized.stderr diff --git a/src/test/ui/async-await/issue-73050.rs b/tests/ui/async-await/issue-73050.rs similarity index 100% rename from src/test/ui/async-await/issue-73050.rs rename to tests/ui/async-await/issue-73050.rs diff --git a/src/test/ui/async-await/issue-73137.rs b/tests/ui/async-await/issue-73137.rs similarity index 100% rename from src/test/ui/async-await/issue-73137.rs rename to tests/ui/async-await/issue-73137.rs diff --git a/src/test/ui/async-await/issue-73541-1.rs b/tests/ui/async-await/issue-73541-1.rs similarity index 100% rename from src/test/ui/async-await/issue-73541-1.rs rename to tests/ui/async-await/issue-73541-1.rs diff --git a/src/test/ui/async-await/issue-73541-1.stderr b/tests/ui/async-await/issue-73541-1.stderr similarity index 100% rename from src/test/ui/async-await/issue-73541-1.stderr rename to tests/ui/async-await/issue-73541-1.stderr diff --git a/src/test/ui/async-await/issue-73541-2.rs b/tests/ui/async-await/issue-73541-2.rs similarity index 100% rename from src/test/ui/async-await/issue-73541-2.rs rename to tests/ui/async-await/issue-73541-2.rs diff --git a/src/test/ui/async-await/issue-73541-2.stderr b/tests/ui/async-await/issue-73541-2.stderr similarity index 100% rename from src/test/ui/async-await/issue-73541-2.stderr rename to tests/ui/async-await/issue-73541-2.stderr diff --git a/src/test/ui/async-await/issue-73541-3.rs b/tests/ui/async-await/issue-73541-3.rs similarity index 100% rename from src/test/ui/async-await/issue-73541-3.rs rename to tests/ui/async-await/issue-73541-3.rs diff --git a/src/test/ui/async-await/issue-73541-3.stderr b/tests/ui/async-await/issue-73541-3.stderr similarity index 100% rename from src/test/ui/async-await/issue-73541-3.stderr rename to tests/ui/async-await/issue-73541-3.stderr diff --git a/src/test/ui/async-await/issue-73541.rs b/tests/ui/async-await/issue-73541.rs similarity index 100% rename from src/test/ui/async-await/issue-73541.rs rename to tests/ui/async-await/issue-73541.rs diff --git a/src/test/ui/async-await/issue-73541.stderr b/tests/ui/async-await/issue-73541.stderr similarity index 100% rename from src/test/ui/async-await/issue-73541.stderr rename to tests/ui/async-await/issue-73541.stderr diff --git a/src/test/ui/async-await/issue-73741-type-err-drop-tracking.rs b/tests/ui/async-await/issue-73741-type-err-drop-tracking.rs similarity index 100% rename from src/test/ui/async-await/issue-73741-type-err-drop-tracking.rs rename to tests/ui/async-await/issue-73741-type-err-drop-tracking.rs diff --git a/src/test/ui/async-await/issue-73741-type-err-drop-tracking.stderr b/tests/ui/async-await/issue-73741-type-err-drop-tracking.stderr similarity index 100% rename from src/test/ui/async-await/issue-73741-type-err-drop-tracking.stderr rename to tests/ui/async-await/issue-73741-type-err-drop-tracking.stderr diff --git a/src/test/ui/async-await/issue-73741-type-err.rs b/tests/ui/async-await/issue-73741-type-err.rs similarity index 100% rename from src/test/ui/async-await/issue-73741-type-err.rs rename to tests/ui/async-await/issue-73741-type-err.rs diff --git a/src/test/ui/async-await/issue-73741-type-err.stderr b/tests/ui/async-await/issue-73741-type-err.stderr similarity index 100% rename from src/test/ui/async-await/issue-73741-type-err.stderr rename to tests/ui/async-await/issue-73741-type-err.stderr diff --git a/src/test/ui/async-await/issue-74047.rs b/tests/ui/async-await/issue-74047.rs similarity index 100% rename from src/test/ui/async-await/issue-74047.rs rename to tests/ui/async-await/issue-74047.rs diff --git a/src/test/ui/async-await/issue-74047.stderr b/tests/ui/async-await/issue-74047.stderr similarity index 100% rename from src/test/ui/async-await/issue-74047.stderr rename to tests/ui/async-await/issue-74047.stderr diff --git a/src/test/ui/async-await/issue-74072-lifetime-name-annotations.rs b/tests/ui/async-await/issue-74072-lifetime-name-annotations.rs similarity index 100% rename from src/test/ui/async-await/issue-74072-lifetime-name-annotations.rs rename to tests/ui/async-await/issue-74072-lifetime-name-annotations.rs diff --git a/src/test/ui/async-await/issue-74072-lifetime-name-annotations.stderr b/tests/ui/async-await/issue-74072-lifetime-name-annotations.stderr similarity index 100% rename from src/test/ui/async-await/issue-74072-lifetime-name-annotations.stderr rename to tests/ui/async-await/issue-74072-lifetime-name-annotations.stderr diff --git a/src/test/ui/async-await/issue-74497-lifetime-in-opaque.rs b/tests/ui/async-await/issue-74497-lifetime-in-opaque.rs similarity index 100% rename from src/test/ui/async-await/issue-74497-lifetime-in-opaque.rs rename to tests/ui/async-await/issue-74497-lifetime-in-opaque.rs diff --git a/src/test/ui/async-await/issue-74497-lifetime-in-opaque.stderr b/tests/ui/async-await/issue-74497-lifetime-in-opaque.stderr similarity index 100% rename from src/test/ui/async-await/issue-74497-lifetime-in-opaque.stderr rename to tests/ui/async-await/issue-74497-lifetime-in-opaque.stderr diff --git a/src/test/ui/async-await/issue-75785-confusing-named-region.rs b/tests/ui/async-await/issue-75785-confusing-named-region.rs similarity index 100% rename from src/test/ui/async-await/issue-75785-confusing-named-region.rs rename to tests/ui/async-await/issue-75785-confusing-named-region.rs diff --git a/src/test/ui/async-await/issue-75785-confusing-named-region.stderr b/tests/ui/async-await/issue-75785-confusing-named-region.stderr similarity index 100% rename from src/test/ui/async-await/issue-75785-confusing-named-region.stderr rename to tests/ui/async-await/issue-75785-confusing-named-region.stderr diff --git a/src/test/ui/async-await/issue-76547.rs b/tests/ui/async-await/issue-76547.rs similarity index 100% rename from src/test/ui/async-await/issue-76547.rs rename to tests/ui/async-await/issue-76547.rs diff --git a/src/test/ui/async-await/issue-76547.stderr b/tests/ui/async-await/issue-76547.stderr similarity index 100% rename from src/test/ui/async-await/issue-76547.stderr rename to tests/ui/async-await/issue-76547.stderr diff --git a/src/test/ui/async-await/issue-77993-2.rs b/tests/ui/async-await/issue-77993-2.rs similarity index 100% rename from src/test/ui/async-await/issue-77993-2.rs rename to tests/ui/async-await/issue-77993-2.rs diff --git a/src/test/ui/async-await/issue-77993-2.stderr b/tests/ui/async-await/issue-77993-2.stderr similarity index 100% rename from src/test/ui/async-await/issue-77993-2.stderr rename to tests/ui/async-await/issue-77993-2.stderr diff --git a/src/test/ui/async-await/issue-84841.rs b/tests/ui/async-await/issue-84841.rs similarity index 100% rename from src/test/ui/async-await/issue-84841.rs rename to tests/ui/async-await/issue-84841.rs diff --git a/src/test/ui/async-await/issue-84841.stderr b/tests/ui/async-await/issue-84841.stderr similarity index 100% rename from src/test/ui/async-await/issue-84841.stderr rename to tests/ui/async-await/issue-84841.stderr diff --git a/src/test/ui/async-await/issue-86507.rs b/tests/ui/async-await/issue-86507.rs similarity index 100% rename from src/test/ui/async-await/issue-86507.rs rename to tests/ui/async-await/issue-86507.rs diff --git a/src/test/ui/async-await/issue-86507.stderr b/tests/ui/async-await/issue-86507.stderr similarity index 100% rename from src/test/ui/async-await/issue-86507.stderr rename to tests/ui/async-await/issue-86507.stderr diff --git a/src/test/ui/async-await/issue-93197.rs b/tests/ui/async-await/issue-93197.rs similarity index 100% rename from src/test/ui/async-await/issue-93197.rs rename to tests/ui/async-await/issue-93197.rs diff --git a/src/test/ui/async-await/issue-93648.rs b/tests/ui/async-await/issue-93648.rs similarity index 100% rename from src/test/ui/async-await/issue-93648.rs rename to tests/ui/async-await/issue-93648.rs diff --git a/src/test/ui/async-await/issue-98634.rs b/tests/ui/async-await/issue-98634.rs similarity index 100% rename from src/test/ui/async-await/issue-98634.rs rename to tests/ui/async-await/issue-98634.rs diff --git a/src/test/ui/async-await/issue-98634.stderr b/tests/ui/async-await/issue-98634.stderr similarity index 100% rename from src/test/ui/async-await/issue-98634.stderr rename to tests/ui/async-await/issue-98634.stderr diff --git a/src/test/ui/async-await/issues/auxiliary/issue-60674.rs b/tests/ui/async-await/issues/auxiliary/issue-60674.rs similarity index 100% rename from src/test/ui/async-await/issues/auxiliary/issue-60674.rs rename to tests/ui/async-await/issues/auxiliary/issue-60674.rs diff --git a/src/test/ui/async-await/issues/auxiliary/issue_67893.rs b/tests/ui/async-await/issues/auxiliary/issue_67893.rs similarity index 100% rename from src/test/ui/async-await/issues/auxiliary/issue_67893.rs rename to tests/ui/async-await/issues/auxiliary/issue_67893.rs diff --git a/src/test/ui/async-await/issues/issue-102206.rs b/tests/ui/async-await/issues/issue-102206.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-102206.rs rename to tests/ui/async-await/issues/issue-102206.rs diff --git a/src/test/ui/async-await/issues/issue-102206.stderr b/tests/ui/async-await/issues/issue-102206.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-102206.stderr rename to tests/ui/async-await/issues/issue-102206.stderr diff --git a/src/test/ui/async-await/issues/issue-51719.rs b/tests/ui/async-await/issues/issue-51719.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-51719.rs rename to tests/ui/async-await/issues/issue-51719.rs diff --git a/src/test/ui/async-await/issues/issue-51719.stderr b/tests/ui/async-await/issues/issue-51719.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-51719.stderr rename to tests/ui/async-await/issues/issue-51719.stderr diff --git a/src/test/ui/async-await/issues/issue-51751.rs b/tests/ui/async-await/issues/issue-51751.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-51751.rs rename to tests/ui/async-await/issues/issue-51751.rs diff --git a/src/test/ui/async-await/issues/issue-51751.stderr b/tests/ui/async-await/issues/issue-51751.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-51751.stderr rename to tests/ui/async-await/issues/issue-51751.stderr diff --git a/src/test/ui/async-await/issues/issue-53249.rs b/tests/ui/async-await/issues/issue-53249.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-53249.rs rename to tests/ui/async-await/issues/issue-53249.rs diff --git a/src/test/ui/async-await/issues/issue-54752-async-block.rs b/tests/ui/async-await/issues/issue-54752-async-block.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-54752-async-block.rs rename to tests/ui/async-await/issues/issue-54752-async-block.rs diff --git a/src/test/ui/async-await/issues/issue-54752-async-block.stderr b/tests/ui/async-await/issues/issue-54752-async-block.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-54752-async-block.stderr rename to tests/ui/async-await/issues/issue-54752-async-block.stderr diff --git a/src/test/ui/async-await/issues/issue-54974.rs b/tests/ui/async-await/issues/issue-54974.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-54974.rs rename to tests/ui/async-await/issues/issue-54974.rs diff --git a/src/test/ui/async-await/issues/issue-55324.rs b/tests/ui/async-await/issues/issue-55324.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-55324.rs rename to tests/ui/async-await/issues/issue-55324.rs diff --git a/src/test/ui/async-await/issues/issue-55809.rs b/tests/ui/async-await/issues/issue-55809.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-55809.rs rename to tests/ui/async-await/issues/issue-55809.rs diff --git a/src/test/ui/async-await/issues/issue-58885.rs b/tests/ui/async-await/issues/issue-58885.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-58885.rs rename to tests/ui/async-await/issues/issue-58885.rs diff --git a/src/test/ui/async-await/issues/issue-59001.rs b/tests/ui/async-await/issues/issue-59001.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-59001.rs rename to tests/ui/async-await/issues/issue-59001.rs diff --git a/src/test/ui/async-await/issues/issue-59972.rs b/tests/ui/async-await/issues/issue-59972.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-59972.rs rename to tests/ui/async-await/issues/issue-59972.rs diff --git a/src/test/ui/async-await/issues/issue-60518.rs b/tests/ui/async-await/issues/issue-60518.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-60518.rs rename to tests/ui/async-await/issues/issue-60518.rs diff --git a/src/test/ui/async-await/issues/issue-60655-latebound-regions.rs b/tests/ui/async-await/issues/issue-60655-latebound-regions.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-60655-latebound-regions.rs rename to tests/ui/async-await/issues/issue-60655-latebound-regions.rs diff --git a/src/test/ui/async-await/issues/issue-60674.rs b/tests/ui/async-await/issues/issue-60674.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-60674.rs rename to tests/ui/async-await/issues/issue-60674.rs diff --git a/src/test/ui/async-await/issues/issue-60674.stdout b/tests/ui/async-await/issues/issue-60674.stdout similarity index 100% rename from src/test/ui/async-await/issues/issue-60674.stdout rename to tests/ui/async-await/issues/issue-60674.stdout diff --git a/src/test/ui/async-await/issues/issue-61187.rs b/tests/ui/async-await/issues/issue-61187.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-61187.rs rename to tests/ui/async-await/issues/issue-61187.rs diff --git a/src/test/ui/async-await/issues/issue-61187.stderr b/tests/ui/async-await/issues/issue-61187.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-61187.stderr rename to tests/ui/async-await/issues/issue-61187.stderr diff --git a/src/test/ui/async-await/issues/issue-61986.rs b/tests/ui/async-await/issues/issue-61986.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-61986.rs rename to tests/ui/async-await/issues/issue-61986.rs diff --git a/src/test/ui/async-await/issues/issue-62009-1.rs b/tests/ui/async-await/issues/issue-62009-1.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-62009-1.rs rename to tests/ui/async-await/issues/issue-62009-1.rs diff --git a/src/test/ui/async-await/issues/issue-62009-1.stderr b/tests/ui/async-await/issues/issue-62009-1.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-62009-1.stderr rename to tests/ui/async-await/issues/issue-62009-1.stderr diff --git a/src/test/ui/async-await/issues/issue-62009-2.rs b/tests/ui/async-await/issues/issue-62009-2.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-62009-2.rs rename to tests/ui/async-await/issues/issue-62009-2.rs diff --git a/src/test/ui/async-await/issues/issue-62009-2.stderr b/tests/ui/async-await/issues/issue-62009-2.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-62009-2.stderr rename to tests/ui/async-await/issues/issue-62009-2.stderr diff --git a/src/test/ui/async-await/issues/issue-62097.rs b/tests/ui/async-await/issues/issue-62097.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-62097.rs rename to tests/ui/async-await/issues/issue-62097.rs diff --git a/src/test/ui/async-await/issues/issue-62097.stderr b/tests/ui/async-await/issues/issue-62097.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-62097.stderr rename to tests/ui/async-await/issues/issue-62097.stderr diff --git a/src/test/ui/async-await/issues/issue-62517-1.rs b/tests/ui/async-await/issues/issue-62517-1.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-62517-1.rs rename to tests/ui/async-await/issues/issue-62517-1.rs diff --git a/src/test/ui/async-await/issues/issue-62517-2.rs b/tests/ui/async-await/issues/issue-62517-2.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-62517-2.rs rename to tests/ui/async-await/issues/issue-62517-2.rs diff --git a/src/test/ui/async-await/issues/issue-63388-1.rs b/tests/ui/async-await/issues/issue-63388-1.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-1.rs rename to tests/ui/async-await/issues/issue-63388-1.rs diff --git a/src/test/ui/async-await/issues/issue-63388-1.stderr b/tests/ui/async-await/issues/issue-63388-1.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-1.stderr rename to tests/ui/async-await/issues/issue-63388-1.stderr diff --git a/src/test/ui/async-await/issues/issue-63388-2.rs b/tests/ui/async-await/issues/issue-63388-2.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-2.rs rename to tests/ui/async-await/issues/issue-63388-2.rs diff --git a/src/test/ui/async-await/issues/issue-63388-2.stderr b/tests/ui/async-await/issues/issue-63388-2.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-2.stderr rename to tests/ui/async-await/issues/issue-63388-2.stderr diff --git a/src/test/ui/async-await/issues/issue-63388-3.rs b/tests/ui/async-await/issues/issue-63388-3.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-3.rs rename to tests/ui/async-await/issues/issue-63388-3.rs diff --git a/src/test/ui/async-await/issues/issue-63388-4.rs b/tests/ui/async-await/issues/issue-63388-4.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-63388-4.rs rename to tests/ui/async-await/issues/issue-63388-4.rs diff --git a/src/test/ui/async-await/issues/issue-64391-2.rs b/tests/ui/async-await/issues/issue-64391-2.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-64391-2.rs rename to tests/ui/async-await/issues/issue-64391-2.rs diff --git a/src/test/ui/async-await/issues/issue-64433.rs b/tests/ui/async-await/issues/issue-64433.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-64433.rs rename to tests/ui/async-await/issues/issue-64433.rs diff --git a/src/test/ui/async-await/issues/issue-64477-2.rs b/tests/ui/async-await/issues/issue-64477-2.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-64477-2.rs rename to tests/ui/async-await/issues/issue-64477-2.rs diff --git a/src/test/ui/async-await/issues/issue-64477.rs b/tests/ui/async-await/issues/issue-64477.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-64477.rs rename to tests/ui/async-await/issues/issue-64477.rs diff --git a/src/test/ui/async-await/issues/issue-64964.rs b/tests/ui/async-await/issues/issue-64964.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-64964.rs rename to tests/ui/async-await/issues/issue-64964.rs diff --git a/src/test/ui/async-await/issues/issue-65159.rs b/tests/ui/async-await/issues/issue-65159.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-65159.rs rename to tests/ui/async-await/issues/issue-65159.rs diff --git a/src/test/ui/async-await/issues/issue-65159.stderr b/tests/ui/async-await/issues/issue-65159.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-65159.stderr rename to tests/ui/async-await/issues/issue-65159.stderr diff --git a/src/test/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs b/tests/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs rename to tests/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-completion.rs diff --git a/src/test/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs b/tests/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs rename to tests/ui/async-await/issues/issue-65419/issue-65419-async-fn-resume-after-panic.rs diff --git a/src/test/ui/async-await/issues/issue-65419/issue-65419-generator-resume-after-completion.rs b/tests/ui/async-await/issues/issue-65419/issue-65419-generator-resume-after-completion.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-65419/issue-65419-generator-resume-after-completion.rs rename to tests/ui/async-await/issues/issue-65419/issue-65419-generator-resume-after-completion.rs diff --git a/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr b/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr rename to tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr diff --git a/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs b/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs rename to tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs diff --git a/src/test/ui/async-await/issues/issue-66695-static-refs.rs b/tests/ui/async-await/issues/issue-66695-static-refs.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-66695-static-refs.rs rename to tests/ui/async-await/issues/issue-66695-static-refs.rs diff --git a/src/test/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs b/tests/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs rename to tests/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.rs diff --git a/src/test/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.stderr b/tests/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.stderr rename to tests/ui/async-await/issues/issue-66958-non-copy-infered-type-arg.stderr diff --git a/src/test/ui/async-await/issues/issue-67611-static-mut-refs.rs b/tests/ui/async-await/issues/issue-67611-static-mut-refs.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-67611-static-mut-refs.rs rename to tests/ui/async-await/issues/issue-67611-static-mut-refs.rs diff --git a/src/test/ui/async-await/issues/issue-67893.rs b/tests/ui/async-await/issues/issue-67893.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-67893.rs rename to tests/ui/async-await/issues/issue-67893.rs diff --git a/src/test/ui/async-await/issues/issue-67893.stderr b/tests/ui/async-await/issues/issue-67893.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-67893.stderr rename to tests/ui/async-await/issues/issue-67893.stderr diff --git a/src/test/ui/async-await/issues/issue-69307-nested.rs b/tests/ui/async-await/issues/issue-69307-nested.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-69307-nested.rs rename to tests/ui/async-await/issues/issue-69307-nested.rs diff --git a/src/test/ui/async-await/issues/issue-69307.rs b/tests/ui/async-await/issues/issue-69307.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-69307.rs rename to tests/ui/async-await/issues/issue-69307.rs diff --git a/src/test/ui/async-await/issues/issue-72312.rs b/tests/ui/async-await/issues/issue-72312.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-72312.rs rename to tests/ui/async-await/issues/issue-72312.rs diff --git a/src/test/ui/async-await/issues/issue-72312.stderr b/tests/ui/async-await/issues/issue-72312.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-72312.stderr rename to tests/ui/async-await/issues/issue-72312.stderr diff --git a/src/test/ui/async-await/issues/issue-78600.rs b/tests/ui/async-await/issues/issue-78600.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-78600.rs rename to tests/ui/async-await/issues/issue-78600.rs diff --git a/src/test/ui/async-await/issues/issue-78600.stderr b/tests/ui/async-await/issues/issue-78600.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-78600.stderr rename to tests/ui/async-await/issues/issue-78600.stderr diff --git a/src/test/ui/async-await/issues/issue-78654.full.stderr b/tests/ui/async-await/issues/issue-78654.full.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-78654.full.stderr rename to tests/ui/async-await/issues/issue-78654.full.stderr diff --git a/src/test/ui/async-await/issues/issue-78654.min.stderr b/tests/ui/async-await/issues/issue-78654.min.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-78654.min.stderr rename to tests/ui/async-await/issues/issue-78654.min.stderr diff --git a/src/test/ui/async-await/issues/issue-78654.rs b/tests/ui/async-await/issues/issue-78654.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-78654.rs rename to tests/ui/async-await/issues/issue-78654.rs diff --git a/src/test/ui/async-await/issues/issue-78938-async-block.rs b/tests/ui/async-await/issues/issue-78938-async-block.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-78938-async-block.rs rename to tests/ui/async-await/issues/issue-78938-async-block.rs diff --git a/src/test/ui/async-await/issues/issue-78938-async-block.stderr b/tests/ui/async-await/issues/issue-78938-async-block.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-78938-async-block.stderr rename to tests/ui/async-await/issues/issue-78938-async-block.stderr diff --git a/src/test/ui/async-await/issues/issue-95307.rs b/tests/ui/async-await/issues/issue-95307.rs similarity index 100% rename from src/test/ui/async-await/issues/issue-95307.rs rename to tests/ui/async-await/issues/issue-95307.rs diff --git a/src/test/ui/async-await/issues/issue-95307.stderr b/tests/ui/async-await/issues/issue-95307.stderr similarity index 100% rename from src/test/ui/async-await/issues/issue-95307.stderr rename to tests/ui/async-await/issues/issue-95307.stderr diff --git a/src/test/ui/async-await/issues/non-async-enclosing-span.rs b/tests/ui/async-await/issues/non-async-enclosing-span.rs similarity index 100% rename from src/test/ui/async-await/issues/non-async-enclosing-span.rs rename to tests/ui/async-await/issues/non-async-enclosing-span.rs diff --git a/src/test/ui/async-await/issues/non-async-enclosing-span.stderr b/tests/ui/async-await/issues/non-async-enclosing-span.stderr similarity index 100% rename from src/test/ui/async-await/issues/non-async-enclosing-span.stderr rename to tests/ui/async-await/issues/non-async-enclosing-span.stderr diff --git a/src/test/ui/async-await/large_moves.attribute.stderr b/tests/ui/async-await/large_moves.attribute.stderr similarity index 100% rename from src/test/ui/async-await/large_moves.attribute.stderr rename to tests/ui/async-await/large_moves.attribute.stderr diff --git a/src/test/ui/async-await/large_moves.option.stderr b/tests/ui/async-await/large_moves.option.stderr similarity index 100% rename from src/test/ui/async-await/large_moves.option.stderr rename to tests/ui/async-await/large_moves.option.stderr diff --git a/src/test/ui/async-await/large_moves.rs b/tests/ui/async-await/large_moves.rs similarity index 100% rename from src/test/ui/async-await/large_moves.rs rename to tests/ui/async-await/large_moves.rs diff --git a/src/test/ui/async-await/move-part-await-return-rest-struct.rs b/tests/ui/async-await/move-part-await-return-rest-struct.rs similarity index 100% rename from src/test/ui/async-await/move-part-await-return-rest-struct.rs rename to tests/ui/async-await/move-part-await-return-rest-struct.rs diff --git a/src/test/ui/async-await/move-part-await-return-rest-tuple.rs b/tests/ui/async-await/move-part-await-return-rest-tuple.rs similarity index 100% rename from src/test/ui/async-await/move-part-await-return-rest-tuple.rs rename to tests/ui/async-await/move-part-await-return-rest-tuple.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/elided.rs b/tests/ui/async-await/multiple-lifetimes/elided.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/elided.rs rename to tests/ui/async-await/multiple-lifetimes/elided.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/fn-ptr.rs b/tests/ui/async-await/multiple-lifetimes/fn-ptr.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/fn-ptr.rs rename to tests/ui/async-await/multiple-lifetimes/fn-ptr.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/hrtb.rs b/tests/ui/async-await/multiple-lifetimes/hrtb.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/hrtb.rs rename to tests/ui/async-await/multiple-lifetimes/hrtb.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/named.rs b/tests/ui/async-await/multiple-lifetimes/named.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/named.rs rename to tests/ui/async-await/multiple-lifetimes/named.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/partial-relation.rs b/tests/ui/async-await/multiple-lifetimes/partial-relation.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/partial-relation.rs rename to tests/ui/async-await/multiple-lifetimes/partial-relation.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-fg.rs b/tests/ui/async-await/multiple-lifetimes/ret-impl-trait-fg.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-fg.rs rename to tests/ui/async-await/multiple-lifetimes/ret-impl-trait-fg.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs b/tests/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs rename to tests/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.stderr b/tests/ui/async-await/multiple-lifetimes/ret-impl-trait-one.stderr similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.stderr rename to tests/ui/async-await/multiple-lifetimes/ret-impl-trait-one.stderr diff --git a/src/test/ui/async-await/multiple-lifetimes/ret-ref.rs b/tests/ui/async-await/multiple-lifetimes/ret-ref.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/ret-ref.rs rename to tests/ui/async-await/multiple-lifetimes/ret-ref.rs diff --git a/src/test/ui/async-await/multiple-lifetimes/ret-ref.stderr b/tests/ui/async-await/multiple-lifetimes/ret-ref.stderr similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/ret-ref.stderr rename to tests/ui/async-await/multiple-lifetimes/ret-ref.stderr diff --git a/src/test/ui/async-await/multiple-lifetimes/variance.rs b/tests/ui/async-await/multiple-lifetimes/variance.rs similarity index 100% rename from src/test/ui/async-await/multiple-lifetimes/variance.rs rename to tests/ui/async-await/multiple-lifetimes/variance.rs diff --git a/src/test/ui/async-await/mutually-recursive-async-impl-trait-type.rs b/tests/ui/async-await/mutually-recursive-async-impl-trait-type.rs similarity index 100% rename from src/test/ui/async-await/mutually-recursive-async-impl-trait-type.rs rename to tests/ui/async-await/mutually-recursive-async-impl-trait-type.rs diff --git a/src/test/ui/async-await/mutually-recursive-async-impl-trait-type.stderr b/tests/ui/async-await/mutually-recursive-async-impl-trait-type.stderr similarity index 100% rename from src/test/ui/async-await/mutually-recursive-async-impl-trait-type.stderr rename to tests/ui/async-await/mutually-recursive-async-impl-trait-type.stderr diff --git a/src/test/ui/async-await/nested-in-impl.rs b/tests/ui/async-await/nested-in-impl.rs similarity index 100% rename from src/test/ui/async-await/nested-in-impl.rs rename to tests/ui/async-await/nested-in-impl.rs diff --git a/src/test/ui/async-await/no-async-const.rs b/tests/ui/async-await/no-async-const.rs similarity index 100% rename from src/test/ui/async-await/no-async-const.rs rename to tests/ui/async-await/no-async-const.rs diff --git a/src/test/ui/async-await/no-async-const.stderr b/tests/ui/async-await/no-async-const.stderr similarity index 100% rename from src/test/ui/async-await/no-async-const.stderr rename to tests/ui/async-await/no-async-const.stderr diff --git a/src/test/ui/async-await/no-const-async.rs b/tests/ui/async-await/no-const-async.rs similarity index 100% rename from src/test/ui/async-await/no-const-async.rs rename to tests/ui/async-await/no-const-async.rs diff --git a/src/test/ui/async-await/no-const-async.stderr b/tests/ui/async-await/no-const-async.stderr similarity index 100% rename from src/test/ui/async-await/no-const-async.stderr rename to tests/ui/async-await/no-const-async.stderr diff --git a/src/test/ui/async-await/no-move-across-await-struct.rs b/tests/ui/async-await/no-move-across-await-struct.rs similarity index 100% rename from src/test/ui/async-await/no-move-across-await-struct.rs rename to tests/ui/async-await/no-move-across-await-struct.rs diff --git a/src/test/ui/async-await/no-move-across-await-struct.stderr b/tests/ui/async-await/no-move-across-await-struct.stderr similarity index 100% rename from src/test/ui/async-await/no-move-across-await-struct.stderr rename to tests/ui/async-await/no-move-across-await-struct.stderr diff --git a/src/test/ui/async-await/no-move-across-await-tuple.rs b/tests/ui/async-await/no-move-across-await-tuple.rs similarity index 100% rename from src/test/ui/async-await/no-move-across-await-tuple.rs rename to tests/ui/async-await/no-move-across-await-tuple.rs diff --git a/src/test/ui/async-await/no-move-across-await-tuple.stderr b/tests/ui/async-await/no-move-across-await-tuple.stderr similarity index 100% rename from src/test/ui/async-await/no-move-across-await-tuple.stderr rename to tests/ui/async-await/no-move-across-await-tuple.stderr diff --git a/src/test/ui/async-await/no-non-guaranteed-initialization.rs b/tests/ui/async-await/no-non-guaranteed-initialization.rs similarity index 100% rename from src/test/ui/async-await/no-non-guaranteed-initialization.rs rename to tests/ui/async-await/no-non-guaranteed-initialization.rs diff --git a/src/test/ui/async-await/no-non-guaranteed-initialization.stderr b/tests/ui/async-await/no-non-guaranteed-initialization.stderr similarity index 100% rename from src/test/ui/async-await/no-non-guaranteed-initialization.stderr rename to tests/ui/async-await/no-non-guaranteed-initialization.stderr diff --git a/src/test/ui/async-await/no-params-non-move-async-closure.rs b/tests/ui/async-await/no-params-non-move-async-closure.rs similarity index 100% rename from src/test/ui/async-await/no-params-non-move-async-closure.rs rename to tests/ui/async-await/no-params-non-move-async-closure.rs diff --git a/src/test/ui/async-await/no-params-non-move-async-closure.stderr b/tests/ui/async-await/no-params-non-move-async-closure.stderr similarity index 100% rename from src/test/ui/async-await/no-params-non-move-async-closure.stderr rename to tests/ui/async-await/no-params-non-move-async-closure.stderr diff --git a/src/test/ui/async-await/no-std.rs b/tests/ui/async-await/no-std.rs similarity index 100% rename from src/test/ui/async-await/no-std.rs rename to tests/ui/async-await/no-std.rs diff --git a/src/test/ui/async-await/no-unsafe-async.rs b/tests/ui/async-await/no-unsafe-async.rs similarity index 100% rename from src/test/ui/async-await/no-unsafe-async.rs rename to tests/ui/async-await/no-unsafe-async.rs diff --git a/src/test/ui/async-await/no-unsafe-async.stderr b/tests/ui/async-await/no-unsafe-async.stderr similarity index 100% rename from src/test/ui/async-await/no-unsafe-async.stderr rename to tests/ui/async-await/no-unsafe-async.stderr diff --git a/src/test/ui/async-await/non-trivial-drop.rs b/tests/ui/async-await/non-trivial-drop.rs similarity index 100% rename from src/test/ui/async-await/non-trivial-drop.rs rename to tests/ui/async-await/non-trivial-drop.rs diff --git a/src/test/ui/async-await/partial-drop-partial-reinit.drop_tracking.stderr b/tests/ui/async-await/partial-drop-partial-reinit.drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/partial-drop-partial-reinit.drop_tracking.stderr rename to tests/ui/async-await/partial-drop-partial-reinit.drop_tracking.stderr diff --git a/src/test/ui/async-await/partial-drop-partial-reinit.no_drop_tracking.stderr b/tests/ui/async-await/partial-drop-partial-reinit.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/async-await/partial-drop-partial-reinit.no_drop_tracking.stderr rename to tests/ui/async-await/partial-drop-partial-reinit.no_drop_tracking.stderr diff --git a/src/test/ui/async-await/partial-drop-partial-reinit.rs b/tests/ui/async-await/partial-drop-partial-reinit.rs similarity index 100% rename from src/test/ui/async-await/partial-drop-partial-reinit.rs rename to tests/ui/async-await/partial-drop-partial-reinit.rs diff --git a/src/test/ui/async-await/partial-initialization-across-await.rs b/tests/ui/async-await/partial-initialization-across-await.rs similarity index 100% rename from src/test/ui/async-await/partial-initialization-across-await.rs rename to tests/ui/async-await/partial-initialization-across-await.rs diff --git a/src/test/ui/async-await/partial-initialization-across-await.stderr b/tests/ui/async-await/partial-initialization-across-await.stderr similarity index 100% rename from src/test/ui/async-await/partial-initialization-across-await.stderr rename to tests/ui/async-await/partial-initialization-across-await.stderr diff --git a/src/test/ui/async-await/pin-needed-to-poll-2.rs b/tests/ui/async-await/pin-needed-to-poll-2.rs similarity index 100% rename from src/test/ui/async-await/pin-needed-to-poll-2.rs rename to tests/ui/async-await/pin-needed-to-poll-2.rs diff --git a/src/test/ui/async-await/pin-needed-to-poll-2.stderr b/tests/ui/async-await/pin-needed-to-poll-2.stderr similarity index 100% rename from src/test/ui/async-await/pin-needed-to-poll-2.stderr rename to tests/ui/async-await/pin-needed-to-poll-2.stderr diff --git a/src/test/ui/async-await/pin-needed-to-poll.rs b/tests/ui/async-await/pin-needed-to-poll.rs similarity index 100% rename from src/test/ui/async-await/pin-needed-to-poll.rs rename to tests/ui/async-await/pin-needed-to-poll.rs diff --git a/src/test/ui/async-await/pin-needed-to-poll.stderr b/tests/ui/async-await/pin-needed-to-poll.stderr similarity index 100% rename from src/test/ui/async-await/pin-needed-to-poll.stderr rename to tests/ui/async-await/pin-needed-to-poll.stderr diff --git a/src/test/ui/async-await/proper-span-for-type-error.fixed b/tests/ui/async-await/proper-span-for-type-error.fixed similarity index 100% rename from src/test/ui/async-await/proper-span-for-type-error.fixed rename to tests/ui/async-await/proper-span-for-type-error.fixed diff --git a/src/test/ui/async-await/proper-span-for-type-error.rs b/tests/ui/async-await/proper-span-for-type-error.rs similarity index 100% rename from src/test/ui/async-await/proper-span-for-type-error.rs rename to tests/ui/async-await/proper-span-for-type-error.rs diff --git a/src/test/ui/async-await/proper-span-for-type-error.stderr b/tests/ui/async-await/proper-span-for-type-error.stderr similarity index 100% rename from src/test/ui/async-await/proper-span-for-type-error.stderr rename to tests/ui/async-await/proper-span-for-type-error.stderr diff --git a/src/test/ui/async-await/recursive-async-impl-trait-type.rs b/tests/ui/async-await/recursive-async-impl-trait-type.rs similarity index 100% rename from src/test/ui/async-await/recursive-async-impl-trait-type.rs rename to tests/ui/async-await/recursive-async-impl-trait-type.rs diff --git a/src/test/ui/async-await/recursive-async-impl-trait-type.stderr b/tests/ui/async-await/recursive-async-impl-trait-type.stderr similarity index 100% rename from src/test/ui/async-await/recursive-async-impl-trait-type.stderr rename to tests/ui/async-await/recursive-async-impl-trait-type.stderr diff --git a/src/test/ui/async-await/repeat_count_const_in_async_fn.rs b/tests/ui/async-await/repeat_count_const_in_async_fn.rs similarity index 100% rename from src/test/ui/async-await/repeat_count_const_in_async_fn.rs rename to tests/ui/async-await/repeat_count_const_in_async_fn.rs diff --git a/src/test/ui/async-await/return-ty-raw-ptr-coercion.rs b/tests/ui/async-await/return-ty-raw-ptr-coercion.rs similarity index 100% rename from src/test/ui/async-await/return-ty-raw-ptr-coercion.rs rename to tests/ui/async-await/return-ty-raw-ptr-coercion.rs diff --git a/src/test/ui/async-await/return-ty-unsize-coercion.rs b/tests/ui/async-await/return-ty-unsize-coercion.rs similarity index 100% rename from src/test/ui/async-await/return-ty-unsize-coercion.rs rename to tests/ui/async-await/return-ty-unsize-coercion.rs diff --git a/src/test/ui/async-await/suggest-missing-await-closure.fixed b/tests/ui/async-await/suggest-missing-await-closure.fixed similarity index 100% rename from src/test/ui/async-await/suggest-missing-await-closure.fixed rename to tests/ui/async-await/suggest-missing-await-closure.fixed diff --git a/src/test/ui/async-await/suggest-missing-await-closure.rs b/tests/ui/async-await/suggest-missing-await-closure.rs similarity index 100% rename from src/test/ui/async-await/suggest-missing-await-closure.rs rename to tests/ui/async-await/suggest-missing-await-closure.rs diff --git a/src/test/ui/async-await/suggest-missing-await-closure.stderr b/tests/ui/async-await/suggest-missing-await-closure.stderr similarity index 100% rename from src/test/ui/async-await/suggest-missing-await-closure.stderr rename to tests/ui/async-await/suggest-missing-await-closure.stderr diff --git a/src/test/ui/async-await/suggest-missing-await.rs b/tests/ui/async-await/suggest-missing-await.rs similarity index 100% rename from src/test/ui/async-await/suggest-missing-await.rs rename to tests/ui/async-await/suggest-missing-await.rs diff --git a/src/test/ui/async-await/suggest-missing-await.stderr b/tests/ui/async-await/suggest-missing-await.stderr similarity index 100% rename from src/test/ui/async-await/suggest-missing-await.stderr rename to tests/ui/async-await/suggest-missing-await.stderr diff --git a/src/test/ui/async-await/suggest-switching-edition-on-await-cargo.rs b/tests/ui/async-await/suggest-switching-edition-on-await-cargo.rs similarity index 100% rename from src/test/ui/async-await/suggest-switching-edition-on-await-cargo.rs rename to tests/ui/async-await/suggest-switching-edition-on-await-cargo.rs diff --git a/src/test/ui/async-await/suggest-switching-edition-on-await-cargo.stderr b/tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr similarity index 100% rename from src/test/ui/async-await/suggest-switching-edition-on-await-cargo.stderr rename to tests/ui/async-await/suggest-switching-edition-on-await-cargo.stderr diff --git a/src/test/ui/async-await/suggest-switching-edition-on-await.rs b/tests/ui/async-await/suggest-switching-edition-on-await.rs similarity index 100% rename from src/test/ui/async-await/suggest-switching-edition-on-await.rs rename to tests/ui/async-await/suggest-switching-edition-on-await.rs diff --git a/src/test/ui/async-await/suggest-switching-edition-on-await.stderr b/tests/ui/async-await/suggest-switching-edition-on-await.stderr similarity index 100% rename from src/test/ui/async-await/suggest-switching-edition-on-await.stderr rename to tests/ui/async-await/suggest-switching-edition-on-await.stderr diff --git a/src/test/ui/async-await/track-caller/async-block.rs b/tests/ui/async-await/track-caller/async-block.rs similarity index 100% rename from src/test/ui/async-await/track-caller/async-block.rs rename to tests/ui/async-await/track-caller/async-block.rs diff --git a/src/test/ui/async-await/track-caller/async-block.stderr b/tests/ui/async-await/track-caller/async-block.stderr similarity index 100% rename from src/test/ui/async-await/track-caller/async-block.stderr rename to tests/ui/async-await/track-caller/async-block.stderr diff --git a/src/test/ui/async-await/track-caller/async-closure-gate.rs b/tests/ui/async-await/track-caller/async-closure-gate.rs similarity index 100% rename from src/test/ui/async-await/track-caller/async-closure-gate.rs rename to tests/ui/async-await/track-caller/async-closure-gate.rs diff --git a/src/test/ui/async-await/track-caller/async-closure-gate.stderr b/tests/ui/async-await/track-caller/async-closure-gate.stderr similarity index 100% rename from src/test/ui/async-await/track-caller/async-closure-gate.stderr rename to tests/ui/async-await/track-caller/async-closure-gate.stderr diff --git a/src/test/ui/async-await/track-caller/issue-105134.rs b/tests/ui/async-await/track-caller/issue-105134.rs similarity index 100% rename from src/test/ui/async-await/track-caller/issue-105134.rs rename to tests/ui/async-await/track-caller/issue-105134.rs diff --git a/src/test/ui/async-await/track-caller/panic-track-caller.nofeat.stderr b/tests/ui/async-await/track-caller/panic-track-caller.nofeat.stderr similarity index 100% rename from src/test/ui/async-await/track-caller/panic-track-caller.nofeat.stderr rename to tests/ui/async-await/track-caller/panic-track-caller.nofeat.stderr diff --git a/src/test/ui/async-await/track-caller/panic-track-caller.rs b/tests/ui/async-await/track-caller/panic-track-caller.rs similarity index 100% rename from src/test/ui/async-await/track-caller/panic-track-caller.rs rename to tests/ui/async-await/track-caller/panic-track-caller.rs diff --git a/src/test/ui/async-await/try-on-option-in-async.rs b/tests/ui/async-await/try-on-option-in-async.rs similarity index 100% rename from src/test/ui/async-await/try-on-option-in-async.rs rename to tests/ui/async-await/try-on-option-in-async.rs diff --git a/src/test/ui/async-await/try-on-option-in-async.stderr b/tests/ui/async-await/try-on-option-in-async.stderr similarity index 100% rename from src/test/ui/async-await/try-on-option-in-async.stderr rename to tests/ui/async-await/try-on-option-in-async.stderr diff --git a/src/test/ui/async-await/type-parameter-send.rs b/tests/ui/async-await/type-parameter-send.rs similarity index 100% rename from src/test/ui/async-await/type-parameter-send.rs rename to tests/ui/async-await/type-parameter-send.rs diff --git a/src/test/ui/async-await/unnecessary-await.rs b/tests/ui/async-await/unnecessary-await.rs similarity index 100% rename from src/test/ui/async-await/unnecessary-await.rs rename to tests/ui/async-await/unnecessary-await.rs diff --git a/src/test/ui/async-await/unnecessary-await.stderr b/tests/ui/async-await/unnecessary-await.stderr similarity index 100% rename from src/test/ui/async-await/unnecessary-await.stderr rename to tests/ui/async-await/unnecessary-await.stderr diff --git a/src/test/ui/async-await/unreachable-lint-1.rs b/tests/ui/async-await/unreachable-lint-1.rs similarity index 100% rename from src/test/ui/async-await/unreachable-lint-1.rs rename to tests/ui/async-await/unreachable-lint-1.rs diff --git a/src/test/ui/async-await/unreachable-lint-1.stderr b/tests/ui/async-await/unreachable-lint-1.stderr similarity index 100% rename from src/test/ui/async-await/unreachable-lint-1.stderr rename to tests/ui/async-await/unreachable-lint-1.stderr diff --git a/src/test/ui/async-await/unreachable-lint.rs b/tests/ui/async-await/unreachable-lint.rs similarity index 100% rename from src/test/ui/async-await/unreachable-lint.rs rename to tests/ui/async-await/unreachable-lint.rs diff --git a/src/test/ui/async-await/unresolved_type_param.rs b/tests/ui/async-await/unresolved_type_param.rs similarity index 100% rename from src/test/ui/async-await/unresolved_type_param.rs rename to tests/ui/async-await/unresolved_type_param.rs diff --git a/src/test/ui/async-await/unresolved_type_param.stderr b/tests/ui/async-await/unresolved_type_param.stderr similarity index 100% rename from src/test/ui/async-await/unresolved_type_param.stderr rename to tests/ui/async-await/unresolved_type_param.stderr diff --git a/src/test/ui/async-await/unused-lifetime.rs b/tests/ui/async-await/unused-lifetime.rs similarity index 100% rename from src/test/ui/async-await/unused-lifetime.rs rename to tests/ui/async-await/unused-lifetime.rs diff --git a/src/test/ui/async-await/unused-lifetime.stderr b/tests/ui/async-await/unused-lifetime.stderr similarity index 100% rename from src/test/ui/async-await/unused-lifetime.stderr rename to tests/ui/async-await/unused-lifetime.stderr diff --git a/src/test/ui/atomic-from-mut-not-available.rs b/tests/ui/atomic-from-mut-not-available.rs similarity index 100% rename from src/test/ui/atomic-from-mut-not-available.rs rename to tests/ui/atomic-from-mut-not-available.rs diff --git a/src/test/ui/atomic-from-mut-not-available.stderr b/tests/ui/atomic-from-mut-not-available.stderr similarity index 100% rename from src/test/ui/atomic-from-mut-not-available.stderr rename to tests/ui/atomic-from-mut-not-available.stderr diff --git a/src/test/ui/attempted-access-non-fatal.rs b/tests/ui/attempted-access-non-fatal.rs similarity index 100% rename from src/test/ui/attempted-access-non-fatal.rs rename to tests/ui/attempted-access-non-fatal.rs diff --git a/src/test/ui/attempted-access-non-fatal.stderr b/tests/ui/attempted-access-non-fatal.stderr similarity index 100% rename from src/test/ui/attempted-access-non-fatal.stderr rename to tests/ui/attempted-access-non-fatal.stderr diff --git a/src/test/ui/attr-bad-crate-attr.rc b/tests/ui/attr-bad-crate-attr.rc similarity index 100% rename from src/test/ui/attr-bad-crate-attr.rc rename to tests/ui/attr-bad-crate-attr.rc diff --git a/src/test/ui/attr-shebang.rs b/tests/ui/attr-shebang.rs similarity index 100% rename from src/test/ui/attr-shebang.rs rename to tests/ui/attr-shebang.rs diff --git a/src/test/ui/attr-start.rs b/tests/ui/attr-start.rs similarity index 100% rename from src/test/ui/attr-start.rs rename to tests/ui/attr-start.rs diff --git a/src/test/ui/attr-usage-inline.rs b/tests/ui/attr-usage-inline.rs similarity index 100% rename from src/test/ui/attr-usage-inline.rs rename to tests/ui/attr-usage-inline.rs diff --git a/src/test/ui/attr-usage-inline.stderr b/tests/ui/attr-usage-inline.stderr similarity index 100% rename from src/test/ui/attr-usage-inline.stderr rename to tests/ui/attr-usage-inline.stderr diff --git a/src/test/ui/attributes/attr-before-view-item.rs b/tests/ui/attributes/attr-before-view-item.rs similarity index 100% rename from src/test/ui/attributes/attr-before-view-item.rs rename to tests/ui/attributes/attr-before-view-item.rs diff --git a/src/test/ui/attributes/attr-before-view-item2.rs b/tests/ui/attributes/attr-before-view-item2.rs similarity index 100% rename from src/test/ui/attributes/attr-before-view-item2.rs rename to tests/ui/attributes/attr-before-view-item2.rs diff --git a/src/test/ui/attributes/attr-eq-token-tree.rs b/tests/ui/attributes/attr-eq-token-tree.rs similarity index 100% rename from src/test/ui/attributes/attr-eq-token-tree.rs rename to tests/ui/attributes/attr-eq-token-tree.rs diff --git a/src/test/ui/attributes/attr-eq-token-tree.stderr b/tests/ui/attributes/attr-eq-token-tree.stderr similarity index 100% rename from src/test/ui/attributes/attr-eq-token-tree.stderr rename to tests/ui/attributes/attr-eq-token-tree.stderr diff --git a/src/test/ui/attributes/attr-mix-new.rs b/tests/ui/attributes/attr-mix-new.rs similarity index 100% rename from src/test/ui/attributes/attr-mix-new.rs rename to tests/ui/attributes/attr-mix-new.rs diff --git a/src/test/ui/attributes/attrs-on-params.rs b/tests/ui/attributes/attrs-on-params.rs similarity index 100% rename from src/test/ui/attributes/attrs-on-params.rs rename to tests/ui/attributes/attrs-on-params.rs diff --git a/src/test/ui/attributes/attrs-on-params.stderr b/tests/ui/attributes/attrs-on-params.stderr similarity index 100% rename from src/test/ui/attributes/attrs-on-params.stderr rename to tests/ui/attributes/attrs-on-params.stderr diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-1.rs b/tests/ui/attributes/attrs-with-no-formal-in-generics-1.rs similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-1.rs rename to tests/ui/attributes/attrs-with-no-formal-in-generics-1.rs diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-1.stderr b/tests/ui/attributes/attrs-with-no-formal-in-generics-1.stderr similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-1.stderr rename to tests/ui/attributes/attrs-with-no-formal-in-generics-1.stderr diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-2.rs b/tests/ui/attributes/attrs-with-no-formal-in-generics-2.rs similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-2.rs rename to tests/ui/attributes/attrs-with-no-formal-in-generics-2.rs diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-2.stderr b/tests/ui/attributes/attrs-with-no-formal-in-generics-2.stderr similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-2.stderr rename to tests/ui/attributes/attrs-with-no-formal-in-generics-2.stderr diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-3.rs b/tests/ui/attributes/attrs-with-no-formal-in-generics-3.rs similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-3.rs rename to tests/ui/attributes/attrs-with-no-formal-in-generics-3.rs diff --git a/src/test/ui/attributes/attrs-with-no-formal-in-generics-3.stderr b/tests/ui/attributes/attrs-with-no-formal-in-generics-3.stderr similarity index 100% rename from src/test/ui/attributes/attrs-with-no-formal-in-generics-3.stderr rename to tests/ui/attributes/attrs-with-no-formal-in-generics-3.stderr diff --git a/src/test/ui/attributes/auxiliary/key-value-expansion.rs b/tests/ui/attributes/auxiliary/key-value-expansion.rs similarity index 100% rename from src/test/ui/attributes/auxiliary/key-value-expansion.rs rename to tests/ui/attributes/auxiliary/key-value-expansion.rs diff --git a/src/test/ui/attributes/class-attributes-1.rs b/tests/ui/attributes/class-attributes-1.rs similarity index 100% rename from src/test/ui/attributes/class-attributes-1.rs rename to tests/ui/attributes/class-attributes-1.rs diff --git a/src/test/ui/attributes/class-attributes-2.rs b/tests/ui/attributes/class-attributes-2.rs similarity index 100% rename from src/test/ui/attributes/class-attributes-2.rs rename to tests/ui/attributes/class-attributes-2.rs diff --git a/src/test/ui/attributes/collapse-debuginfo-invalid.rs b/tests/ui/attributes/collapse-debuginfo-invalid.rs similarity index 100% rename from src/test/ui/attributes/collapse-debuginfo-invalid.rs rename to tests/ui/attributes/collapse-debuginfo-invalid.rs diff --git a/src/test/ui/attributes/collapse-debuginfo-invalid.stderr b/tests/ui/attributes/collapse-debuginfo-invalid.stderr similarity index 100% rename from src/test/ui/attributes/collapse-debuginfo-invalid.stderr rename to tests/ui/attributes/collapse-debuginfo-invalid.stderr diff --git a/src/test/ui/attributes/const-stability-on-macro.rs b/tests/ui/attributes/const-stability-on-macro.rs similarity index 100% rename from src/test/ui/attributes/const-stability-on-macro.rs rename to tests/ui/attributes/const-stability-on-macro.rs diff --git a/src/test/ui/attributes/const-stability-on-macro.stderr b/tests/ui/attributes/const-stability-on-macro.stderr similarity index 100% rename from src/test/ui/attributes/const-stability-on-macro.stderr rename to tests/ui/attributes/const-stability-on-macro.stderr diff --git a/src/test/ui/attributes/doc-attr.rs b/tests/ui/attributes/doc-attr.rs similarity index 100% rename from src/test/ui/attributes/doc-attr.rs rename to tests/ui/attributes/doc-attr.rs diff --git a/src/test/ui/attributes/doc-attr.stderr b/tests/ui/attributes/doc-attr.stderr similarity index 100% rename from src/test/ui/attributes/doc-attr.stderr rename to tests/ui/attributes/doc-attr.stderr diff --git a/src/test/ui/attributes/duplicated-attributes.rs b/tests/ui/attributes/duplicated-attributes.rs similarity index 100% rename from src/test/ui/attributes/duplicated-attributes.rs rename to tests/ui/attributes/duplicated-attributes.rs diff --git a/src/test/ui/attributes/duplicated-attributes.stderr b/tests/ui/attributes/duplicated-attributes.stderr similarity index 100% rename from src/test/ui/attributes/duplicated-attributes.stderr rename to tests/ui/attributes/duplicated-attributes.stderr diff --git a/src/test/ui/attributes/extented-attribute-macro-error.rs b/tests/ui/attributes/extented-attribute-macro-error.rs similarity index 100% rename from src/test/ui/attributes/extented-attribute-macro-error.rs rename to tests/ui/attributes/extented-attribute-macro-error.rs diff --git a/src/test/ui/attributes/extented-attribute-macro-error.stderr b/tests/ui/attributes/extented-attribute-macro-error.stderr similarity index 100% rename from src/test/ui/attributes/extented-attribute-macro-error.stderr rename to tests/ui/attributes/extented-attribute-macro-error.stderr diff --git a/src/test/ui/attributes/field-attributes-vis-unresolved.rs b/tests/ui/attributes/field-attributes-vis-unresolved.rs similarity index 100% rename from src/test/ui/attributes/field-attributes-vis-unresolved.rs rename to tests/ui/attributes/field-attributes-vis-unresolved.rs diff --git a/src/test/ui/attributes/field-attributes-vis-unresolved.stderr b/tests/ui/attributes/field-attributes-vis-unresolved.stderr similarity index 100% rename from src/test/ui/attributes/field-attributes-vis-unresolved.stderr rename to tests/ui/attributes/field-attributes-vis-unresolved.stderr diff --git a/src/test/ui/attributes/invalid-doc-attr.rs b/tests/ui/attributes/invalid-doc-attr.rs similarity index 100% rename from src/test/ui/attributes/invalid-doc-attr.rs rename to tests/ui/attributes/invalid-doc-attr.rs diff --git a/src/test/ui/attributes/invalid-doc-attr.stderr b/tests/ui/attributes/invalid-doc-attr.stderr similarity index 100% rename from src/test/ui/attributes/invalid-doc-attr.stderr rename to tests/ui/attributes/invalid-doc-attr.stderr diff --git a/src/test/ui/attributes/issue-100631.rs b/tests/ui/attributes/issue-100631.rs similarity index 100% rename from src/test/ui/attributes/issue-100631.rs rename to tests/ui/attributes/issue-100631.rs diff --git a/src/test/ui/attributes/issue-100631.stderr b/tests/ui/attributes/issue-100631.stderr similarity index 100% rename from src/test/ui/attributes/issue-100631.stderr rename to tests/ui/attributes/issue-100631.stderr diff --git a/src/test/ui/attributes/issue-105594-invalid-attr-validation.rs b/tests/ui/attributes/issue-105594-invalid-attr-validation.rs similarity index 100% rename from src/test/ui/attributes/issue-105594-invalid-attr-validation.rs rename to tests/ui/attributes/issue-105594-invalid-attr-validation.rs diff --git a/src/test/ui/attributes/issue-105594-invalid-attr-validation.stderr b/tests/ui/attributes/issue-105594-invalid-attr-validation.stderr similarity index 100% rename from src/test/ui/attributes/issue-105594-invalid-attr-validation.stderr rename to tests/ui/attributes/issue-105594-invalid-attr-validation.stderr diff --git a/src/test/ui/attributes/issue-40962.rs b/tests/ui/attributes/issue-40962.rs similarity index 100% rename from src/test/ui/attributes/issue-40962.rs rename to tests/ui/attributes/issue-40962.rs diff --git a/src/test/ui/attributes/issue-90873.rs b/tests/ui/attributes/issue-90873.rs similarity index 100% rename from src/test/ui/attributes/issue-90873.rs rename to tests/ui/attributes/issue-90873.rs diff --git a/src/test/ui/attributes/issue-90873.stderr b/tests/ui/attributes/issue-90873.stderr similarity index 100% rename from src/test/ui/attributes/issue-90873.stderr rename to tests/ui/attributes/issue-90873.stderr diff --git a/src/test/ui/attributes/item-attributes.rs b/tests/ui/attributes/item-attributes.rs similarity index 100% rename from src/test/ui/attributes/item-attributes.rs rename to tests/ui/attributes/item-attributes.rs diff --git a/src/test/ui/attributes/key-value-expansion-on-mac.rs b/tests/ui/attributes/key-value-expansion-on-mac.rs similarity index 100% rename from src/test/ui/attributes/key-value-expansion-on-mac.rs rename to tests/ui/attributes/key-value-expansion-on-mac.rs diff --git a/src/test/ui/attributes/key-value-expansion-on-mac.stderr b/tests/ui/attributes/key-value-expansion-on-mac.stderr similarity index 100% rename from src/test/ui/attributes/key-value-expansion-on-mac.stderr rename to tests/ui/attributes/key-value-expansion-on-mac.stderr diff --git a/src/test/ui/attributes/key-value-expansion.rs b/tests/ui/attributes/key-value-expansion.rs similarity index 100% rename from src/test/ui/attributes/key-value-expansion.rs rename to tests/ui/attributes/key-value-expansion.rs diff --git a/src/test/ui/attributes/key-value-expansion.stderr b/tests/ui/attributes/key-value-expansion.stderr similarity index 100% rename from src/test/ui/attributes/key-value-expansion.stderr rename to tests/ui/attributes/key-value-expansion.stderr diff --git a/src/test/ui/attributes/key-value-non-ascii.rs b/tests/ui/attributes/key-value-non-ascii.rs similarity index 100% rename from src/test/ui/attributes/key-value-non-ascii.rs rename to tests/ui/attributes/key-value-non-ascii.rs diff --git a/src/test/ui/attributes/key-value-non-ascii.stderr b/tests/ui/attributes/key-value-non-ascii.stderr similarity index 100% rename from src/test/ui/attributes/key-value-non-ascii.stderr rename to tests/ui/attributes/key-value-non-ascii.stderr diff --git a/src/test/ui/attributes/main-removed-1.rs b/tests/ui/attributes/main-removed-1.rs similarity index 100% rename from src/test/ui/attributes/main-removed-1.rs rename to tests/ui/attributes/main-removed-1.rs diff --git a/src/test/ui/attributes/main-removed-1.stderr b/tests/ui/attributes/main-removed-1.stderr similarity index 100% rename from src/test/ui/attributes/main-removed-1.stderr rename to tests/ui/attributes/main-removed-1.stderr diff --git a/src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs b/tests/ui/attributes/main-removed-2/auxiliary/tokyo.rs similarity index 100% rename from src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs rename to tests/ui/attributes/main-removed-2/auxiliary/tokyo.rs diff --git a/src/test/ui/attributes/main-removed-2/main.rs b/tests/ui/attributes/main-removed-2/main.rs similarity index 100% rename from src/test/ui/attributes/main-removed-2/main.rs rename to tests/ui/attributes/main-removed-2/main.rs diff --git a/src/test/ui/attributes/method-attributes.rs b/tests/ui/attributes/method-attributes.rs similarity index 100% rename from src/test/ui/attributes/method-attributes.rs rename to tests/ui/attributes/method-attributes.rs diff --git a/src/test/ui/attributes/multiple-invalid.rs b/tests/ui/attributes/multiple-invalid.rs similarity index 100% rename from src/test/ui/attributes/multiple-invalid.rs rename to tests/ui/attributes/multiple-invalid.rs diff --git a/src/test/ui/attributes/multiple-invalid.stderr b/tests/ui/attributes/multiple-invalid.stderr similarity index 100% rename from src/test/ui/attributes/multiple-invalid.stderr rename to tests/ui/attributes/multiple-invalid.stderr diff --git a/src/test/ui/attributes/nonterminal-expansion.rs b/tests/ui/attributes/nonterminal-expansion.rs similarity index 100% rename from src/test/ui/attributes/nonterminal-expansion.rs rename to tests/ui/attributes/nonterminal-expansion.rs diff --git a/src/test/ui/attributes/nonterminal-expansion.stderr b/tests/ui/attributes/nonterminal-expansion.stderr similarity index 100% rename from src/test/ui/attributes/nonterminal-expansion.stderr rename to tests/ui/attributes/nonterminal-expansion.stderr diff --git a/src/test/ui/attributes/obsolete-attr.rs b/tests/ui/attributes/obsolete-attr.rs similarity index 100% rename from src/test/ui/attributes/obsolete-attr.rs rename to tests/ui/attributes/obsolete-attr.rs diff --git a/src/test/ui/attributes/obsolete-attr.stderr b/tests/ui/attributes/obsolete-attr.stderr similarity index 100% rename from src/test/ui/attributes/obsolete-attr.stderr rename to tests/ui/attributes/obsolete-attr.stderr diff --git a/src/test/ui/attributes/suffixed-literal-meta.rs b/tests/ui/attributes/suffixed-literal-meta.rs similarity index 100% rename from src/test/ui/attributes/suffixed-literal-meta.rs rename to tests/ui/attributes/suffixed-literal-meta.rs diff --git a/src/test/ui/attributes/suffixed-literal-meta.stderr b/tests/ui/attributes/suffixed-literal-meta.stderr similarity index 100% rename from src/test/ui/attributes/suffixed-literal-meta.stderr rename to tests/ui/attributes/suffixed-literal-meta.stderr diff --git a/src/test/ui/attributes/tool_attributes.rs b/tests/ui/attributes/tool_attributes.rs similarity index 100% rename from src/test/ui/attributes/tool_attributes.rs rename to tests/ui/attributes/tool_attributes.rs diff --git a/src/test/ui/attributes/unix_sigpipe/auxiliary/sigpipe-utils.rs b/tests/ui/attributes/unix_sigpipe/auxiliary/sigpipe-utils.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/auxiliary/sigpipe-utils.rs rename to tests/ui/attributes/unix_sigpipe/auxiliary/sigpipe-utils.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-crate.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-crate.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-crate.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-crate.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-crate.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-crate.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-crate.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-crate.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-duplicates.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-error.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-error.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-error.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-error.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-list.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-list.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-list.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-list.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-list.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-list.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-list.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-list.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-main-fn.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-non-root-main.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-not-used.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-not-used.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-not-used.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-not-used.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-only-feature.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-only-feature.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-only-feature.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-only-feature.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-rustc_main.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-rustc_main.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-rustc_main.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-rustc_main.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-sig_dfl.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-start.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-start.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-start.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-start.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-start.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-start.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-start.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-start.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-struct.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-struct.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-struct.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-struct.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-struct.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-struct.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-struct.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-struct.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe-wrong.stderr diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe.rs similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe.rs rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe.rs diff --git a/src/test/ui/attributes/unix_sigpipe/unix_sigpipe.stderr b/tests/ui/attributes/unix_sigpipe/unix_sigpipe.stderr similarity index 100% rename from src/test/ui/attributes/unix_sigpipe/unix_sigpipe.stderr rename to tests/ui/attributes/unix_sigpipe/unix_sigpipe.stderr diff --git a/src/test/ui/attributes/unknown-attr.rs b/tests/ui/attributes/unknown-attr.rs similarity index 100% rename from src/test/ui/attributes/unknown-attr.rs rename to tests/ui/attributes/unknown-attr.rs diff --git a/src/test/ui/attributes/unknown-attr.stderr b/tests/ui/attributes/unknown-attr.stderr similarity index 100% rename from src/test/ui/attributes/unknown-attr.stderr rename to tests/ui/attributes/unknown-attr.stderr diff --git a/src/test/ui/attributes/unnamed-field-attributes-dup.rs b/tests/ui/attributes/unnamed-field-attributes-dup.rs similarity index 100% rename from src/test/ui/attributes/unnamed-field-attributes-dup.rs rename to tests/ui/attributes/unnamed-field-attributes-dup.rs diff --git a/src/test/ui/attributes/unnamed-field-attributes-vis.rs b/tests/ui/attributes/unnamed-field-attributes-vis.rs similarity index 100% rename from src/test/ui/attributes/unnamed-field-attributes-vis.rs rename to tests/ui/attributes/unnamed-field-attributes-vis.rs diff --git a/src/test/ui/attributes/unnamed-field-attributes.rs b/tests/ui/attributes/unnamed-field-attributes.rs similarity index 100% rename from src/test/ui/attributes/unnamed-field-attributes.rs rename to tests/ui/attributes/unnamed-field-attributes.rs diff --git a/src/test/ui/attributes/unrestricted-attribute-tokens.rs b/tests/ui/attributes/unrestricted-attribute-tokens.rs similarity index 100% rename from src/test/ui/attributes/unrestricted-attribute-tokens.rs rename to tests/ui/attributes/unrestricted-attribute-tokens.rs diff --git a/src/test/ui/attributes/unused-item-in-attr.rs b/tests/ui/attributes/unused-item-in-attr.rs similarity index 100% rename from src/test/ui/attributes/unused-item-in-attr.rs rename to tests/ui/attributes/unused-item-in-attr.rs diff --git a/src/test/ui/attributes/unused-item-in-attr.stderr b/tests/ui/attributes/unused-item-in-attr.stderr similarity index 100% rename from src/test/ui/attributes/unused-item-in-attr.stderr rename to tests/ui/attributes/unused-item-in-attr.stderr diff --git a/src/test/ui/attributes/used_with_arg.rs b/tests/ui/attributes/used_with_arg.rs similarity index 100% rename from src/test/ui/attributes/used_with_arg.rs rename to tests/ui/attributes/used_with_arg.rs diff --git a/src/test/ui/attributes/used_with_arg.stderr b/tests/ui/attributes/used_with_arg.stderr similarity index 100% rename from src/test/ui/attributes/used_with_arg.stderr rename to tests/ui/attributes/used_with_arg.stderr diff --git a/src/test/ui/attributes/used_with_arg_no_mangle.rs b/tests/ui/attributes/used_with_arg_no_mangle.rs similarity index 100% rename from src/test/ui/attributes/used_with_arg_no_mangle.rs rename to tests/ui/attributes/used_with_arg_no_mangle.rs diff --git a/src/test/ui/attributes/used_with_multi_args.rs b/tests/ui/attributes/used_with_multi_args.rs similarity index 100% rename from src/test/ui/attributes/used_with_multi_args.rs rename to tests/ui/attributes/used_with_multi_args.rs diff --git a/src/test/ui/attributes/used_with_multi_args.stderr b/tests/ui/attributes/used_with_multi_args.stderr similarity index 100% rename from src/test/ui/attributes/used_with_multi_args.stderr rename to tests/ui/attributes/used_with_multi_args.stderr diff --git a/src/test/ui/attributes/variant-attributes.rs b/tests/ui/attributes/variant-attributes.rs similarity index 100% rename from src/test/ui/attributes/variant-attributes.rs rename to tests/ui/attributes/variant-attributes.rs diff --git a/src/test/ui/attributes/z-crate-attr.rs b/tests/ui/attributes/z-crate-attr.rs similarity index 100% rename from src/test/ui/attributes/z-crate-attr.rs rename to tests/ui/attributes/z-crate-attr.rs diff --git a/src/test/ui/attrs-resolution-errors.rs b/tests/ui/attrs-resolution-errors.rs similarity index 100% rename from src/test/ui/attrs-resolution-errors.rs rename to tests/ui/attrs-resolution-errors.rs diff --git a/src/test/ui/attrs-resolution-errors.stderr b/tests/ui/attrs-resolution-errors.stderr similarity index 100% rename from src/test/ui/attrs-resolution-errors.stderr rename to tests/ui/attrs-resolution-errors.stderr diff --git a/src/test/ui/attrs-resolution.rs b/tests/ui/attrs-resolution.rs similarity index 100% rename from src/test/ui/attrs-resolution.rs rename to tests/ui/attrs-resolution.rs diff --git a/src/test/ui/augmented-assignments-feature-gate-cross.rs b/tests/ui/augmented-assignments-feature-gate-cross.rs similarity index 100% rename from src/test/ui/augmented-assignments-feature-gate-cross.rs rename to tests/ui/augmented-assignments-feature-gate-cross.rs diff --git a/src/test/ui/augmented-assignments-rpass.rs b/tests/ui/augmented-assignments-rpass.rs similarity index 100% rename from src/test/ui/augmented-assignments-rpass.rs rename to tests/ui/augmented-assignments-rpass.rs diff --git a/src/test/ui/augmented-assignments.rs b/tests/ui/augmented-assignments.rs similarity index 100% rename from src/test/ui/augmented-assignments.rs rename to tests/ui/augmented-assignments.rs diff --git a/src/test/ui/augmented-assignments.stderr b/tests/ui/augmented-assignments.stderr similarity index 100% rename from src/test/ui/augmented-assignments.stderr rename to tests/ui/augmented-assignments.stderr diff --git a/src/test/ui/auto-instantiate.rs b/tests/ui/auto-instantiate.rs similarity index 100% rename from src/test/ui/auto-instantiate.rs rename to tests/ui/auto-instantiate.rs diff --git a/src/test/ui/auto-ref-slice-plus-ref.rs b/tests/ui/auto-ref-slice-plus-ref.rs similarity index 100% rename from src/test/ui/auto-ref-slice-plus-ref.rs rename to tests/ui/auto-ref-slice-plus-ref.rs diff --git a/src/test/ui/auto-ref-slice-plus-ref.stderr b/tests/ui/auto-ref-slice-plus-ref.stderr similarity index 100% rename from src/test/ui/auto-ref-slice-plus-ref.stderr rename to tests/ui/auto-ref-slice-plus-ref.stderr diff --git a/src/test/ui/auto-traits/auto-is-contextual.rs b/tests/ui/auto-traits/auto-is-contextual.rs similarity index 100% rename from src/test/ui/auto-traits/auto-is-contextual.rs rename to tests/ui/auto-traits/auto-is-contextual.rs diff --git a/src/test/ui/auto-traits/auto-trait-projection-recursion.rs b/tests/ui/auto-traits/auto-trait-projection-recursion.rs similarity index 100% rename from src/test/ui/auto-traits/auto-trait-projection-recursion.rs rename to tests/ui/auto-traits/auto-trait-projection-recursion.rs diff --git a/src/test/ui/auto-traits/auto-trait-validation.fixed b/tests/ui/auto-traits/auto-trait-validation.fixed similarity index 100% rename from src/test/ui/auto-traits/auto-trait-validation.fixed rename to tests/ui/auto-traits/auto-trait-validation.fixed diff --git a/src/test/ui/auto-traits/auto-trait-validation.rs b/tests/ui/auto-traits/auto-trait-validation.rs similarity index 100% rename from src/test/ui/auto-traits/auto-trait-validation.rs rename to tests/ui/auto-traits/auto-trait-validation.rs diff --git a/src/test/ui/auto-traits/auto-trait-validation.stderr b/tests/ui/auto-traits/auto-trait-validation.stderr similarity index 100% rename from src/test/ui/auto-traits/auto-trait-validation.stderr rename to tests/ui/auto-traits/auto-trait-validation.stderr diff --git a/src/test/ui/auto-traits/auto-traits.rs b/tests/ui/auto-traits/auto-traits.rs similarity index 100% rename from src/test/ui/auto-traits/auto-traits.rs rename to tests/ui/auto-traits/auto-traits.rs diff --git a/src/test/ui/auto-traits/bad-generics-on-dyn.rs b/tests/ui/auto-traits/bad-generics-on-dyn.rs similarity index 100% rename from src/test/ui/auto-traits/bad-generics-on-dyn.rs rename to tests/ui/auto-traits/bad-generics-on-dyn.rs diff --git a/src/test/ui/auto-traits/bad-generics-on-dyn.stderr b/tests/ui/auto-traits/bad-generics-on-dyn.stderr similarity index 100% rename from src/test/ui/auto-traits/bad-generics-on-dyn.stderr rename to tests/ui/auto-traits/bad-generics-on-dyn.stderr diff --git a/src/test/ui/auto-traits/issue-23080-2.rs b/tests/ui/auto-traits/issue-23080-2.rs similarity index 100% rename from src/test/ui/auto-traits/issue-23080-2.rs rename to tests/ui/auto-traits/issue-23080-2.rs diff --git a/src/test/ui/auto-traits/issue-23080-2.stderr b/tests/ui/auto-traits/issue-23080-2.stderr similarity index 100% rename from src/test/ui/auto-traits/issue-23080-2.stderr rename to tests/ui/auto-traits/issue-23080-2.stderr diff --git a/src/test/ui/auto-traits/issue-23080.rs b/tests/ui/auto-traits/issue-23080.rs similarity index 100% rename from src/test/ui/auto-traits/issue-23080.rs rename to tests/ui/auto-traits/issue-23080.rs diff --git a/src/test/ui/auto-traits/issue-23080.stderr b/tests/ui/auto-traits/issue-23080.stderr similarity index 100% rename from src/test/ui/auto-traits/issue-23080.stderr rename to tests/ui/auto-traits/issue-23080.stderr diff --git a/src/test/ui/auto-traits/issue-84075.rs b/tests/ui/auto-traits/issue-84075.rs similarity index 100% rename from src/test/ui/auto-traits/issue-84075.rs rename to tests/ui/auto-traits/issue-84075.rs diff --git a/src/test/ui/auto-traits/issue-84075.stderr b/tests/ui/auto-traits/issue-84075.stderr similarity index 100% rename from src/test/ui/auto-traits/issue-84075.stderr rename to tests/ui/auto-traits/issue-84075.stderr diff --git a/src/test/ui/auto-traits/suspicious-impls-lint.rs b/tests/ui/auto-traits/suspicious-impls-lint.rs similarity index 100% rename from src/test/ui/auto-traits/suspicious-impls-lint.rs rename to tests/ui/auto-traits/suspicious-impls-lint.rs diff --git a/src/test/ui/auto-traits/suspicious-impls-lint.stderr b/tests/ui/auto-traits/suspicious-impls-lint.stderr similarity index 100% rename from src/test/ui/auto-traits/suspicious-impls-lint.stderr rename to tests/ui/auto-traits/suspicious-impls-lint.stderr diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs b/tests/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs rename to tests/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr b/tests/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr rename to tests/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs b/tests/ui/auto-traits/typeck-auto-trait-no-supertraits.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs rename to tests/ui/auto-traits/typeck-auto-trait-no-supertraits.rs diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr b/tests/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr rename to tests/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs b/tests/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs rename to tests/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr rename to tests/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs b/tests/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs rename to tests/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr rename to tests/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs b/tests/ui/auto-traits/typeck-default-trait-impl-negation.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs rename to tests/ui/auto-traits/typeck-default-trait-impl-negation.rs diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-negation.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr rename to tests/ui/auto-traits/typeck-default-trait-impl-negation.stderr diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.rs similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs rename to tests/ui/auto-traits/typeck-default-trait-impl-precedence.rs diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr similarity index 100% rename from src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr rename to tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr diff --git a/src/test/ui/autoderef-full-lval.rs b/tests/ui/autoderef-full-lval.rs similarity index 100% rename from src/test/ui/autoderef-full-lval.rs rename to tests/ui/autoderef-full-lval.rs diff --git a/src/test/ui/autoderef-full-lval.stderr b/tests/ui/autoderef-full-lval.stderr similarity index 100% rename from src/test/ui/autoderef-full-lval.stderr rename to tests/ui/autoderef-full-lval.stderr diff --git a/src/test/ui/autoref-autoderef/auto-ref-bounded-ty-param.rs b/tests/ui/autoref-autoderef/auto-ref-bounded-ty-param.rs similarity index 100% rename from src/test/ui/autoref-autoderef/auto-ref-bounded-ty-param.rs rename to tests/ui/autoref-autoderef/auto-ref-bounded-ty-param.rs diff --git a/src/test/ui/autoref-autoderef/auto-ref-sliceable.rs b/tests/ui/autoref-autoderef/auto-ref-sliceable.rs similarity index 100% rename from src/test/ui/autoref-autoderef/auto-ref-sliceable.rs rename to tests/ui/autoref-autoderef/auto-ref-sliceable.rs diff --git a/src/test/ui/autoref-autoderef/auto-ref.rs b/tests/ui/autoref-autoderef/auto-ref.rs similarity index 100% rename from src/test/ui/autoref-autoderef/auto-ref.rs rename to tests/ui/autoref-autoderef/auto-ref.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-and-borrow-method-receiver.rs b/tests/ui/autoref-autoderef/autoderef-and-borrow-method-receiver.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-and-borrow-method-receiver.rs rename to tests/ui/autoref-autoderef/autoderef-and-borrow-method-receiver.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-method-on-trait.rs b/tests/ui/autoref-autoderef/autoderef-method-on-trait.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-method-on-trait.rs rename to tests/ui/autoref-autoderef/autoderef-method-on-trait.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-method-priority.rs b/tests/ui/autoref-autoderef/autoderef-method-priority.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-method-priority.rs rename to tests/ui/autoref-autoderef/autoderef-method-priority.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.rs b/tests/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.rs rename to tests/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-method-twice.rs b/tests/ui/autoref-autoderef/autoderef-method-twice.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-method-twice.rs rename to tests/ui/autoref-autoderef/autoderef-method-twice.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-method.rs b/tests/ui/autoref-autoderef/autoderef-method.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-method.rs rename to tests/ui/autoref-autoderef/autoderef-method.rs diff --git a/src/test/ui/autoref-autoderef/autoderef-privacy.rs b/tests/ui/autoref-autoderef/autoderef-privacy.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoderef-privacy.rs rename to tests/ui/autoref-autoderef/autoderef-privacy.rs diff --git a/src/test/ui/autoref-autoderef/autoref-intermediate-types-issue-3585.rs b/tests/ui/autoref-autoderef/autoref-intermediate-types-issue-3585.rs similarity index 100% rename from src/test/ui/autoref-autoderef/autoref-intermediate-types-issue-3585.rs rename to tests/ui/autoref-autoderef/autoref-intermediate-types-issue-3585.rs diff --git a/src/test/ui/autoref-autoderef/deref-into-array.rs b/tests/ui/autoref-autoderef/deref-into-array.rs similarity index 100% rename from src/test/ui/autoref-autoderef/deref-into-array.rs rename to tests/ui/autoref-autoderef/deref-into-array.rs diff --git a/src/test/ui/autoref-autoderef/issue-38940.rs b/tests/ui/autoref-autoderef/issue-38940.rs similarity index 100% rename from src/test/ui/autoref-autoderef/issue-38940.rs rename to tests/ui/autoref-autoderef/issue-38940.rs diff --git a/src/test/ui/autoref-autoderef/issue-38940.stderr b/tests/ui/autoref-autoderef/issue-38940.stderr similarity index 100% rename from src/test/ui/autoref-autoderef/issue-38940.stderr rename to tests/ui/autoref-autoderef/issue-38940.stderr diff --git a/src/test/ui/auxiliary/augmented_assignments.rs b/tests/ui/auxiliary/augmented_assignments.rs similarity index 100% rename from src/test/ui/auxiliary/augmented_assignments.rs rename to tests/ui/auxiliary/augmented_assignments.rs diff --git a/src/test/ui/auxiliary/check_static_recursion_foreign_helper.rs b/tests/ui/auxiliary/check_static_recursion_foreign_helper.rs similarity index 100% rename from src/test/ui/auxiliary/check_static_recursion_foreign_helper.rs rename to tests/ui/auxiliary/check_static_recursion_foreign_helper.rs diff --git a/src/test/ui/auxiliary/crate-method-reexport-grrrrrrr2.rs b/tests/ui/auxiliary/crate-method-reexport-grrrrrrr2.rs similarity index 100% rename from src/test/ui/auxiliary/crate-method-reexport-grrrrrrr2.rs rename to tests/ui/auxiliary/crate-method-reexport-grrrrrrr2.rs diff --git a/src/test/ui/auxiliary/default-ty-param-cross-crate-crate.rs b/tests/ui/auxiliary/default-ty-param-cross-crate-crate.rs similarity index 100% rename from src/test/ui/auxiliary/default-ty-param-cross-crate-crate.rs rename to tests/ui/auxiliary/default-ty-param-cross-crate-crate.rs diff --git a/src/test/ui/auxiliary/edition-kw-macro-2015.rs b/tests/ui/auxiliary/edition-kw-macro-2015.rs similarity index 100% rename from src/test/ui/auxiliary/edition-kw-macro-2015.rs rename to tests/ui/auxiliary/edition-kw-macro-2015.rs diff --git a/src/test/ui/auxiliary/edition-kw-macro-2018.rs b/tests/ui/auxiliary/edition-kw-macro-2018.rs similarity index 100% rename from src/test/ui/auxiliary/edition-kw-macro-2018.rs rename to tests/ui/auxiliary/edition-kw-macro-2018.rs diff --git a/src/test/ui/auxiliary/fancy-panic.rs b/tests/ui/auxiliary/fancy-panic.rs similarity index 100% rename from src/test/ui/auxiliary/fancy-panic.rs rename to tests/ui/auxiliary/fancy-panic.rs diff --git a/src/test/ui/auxiliary/hello_macro.rs b/tests/ui/auxiliary/hello_macro.rs similarity index 100% rename from src/test/ui/auxiliary/hello_macro.rs rename to tests/ui/auxiliary/hello_macro.rs diff --git a/src/test/ui/auxiliary/impl_privacy_xc_1.rs b/tests/ui/auxiliary/impl_privacy_xc_1.rs similarity index 100% rename from src/test/ui/auxiliary/impl_privacy_xc_1.rs rename to tests/ui/auxiliary/impl_privacy_xc_1.rs diff --git a/src/test/ui/auxiliary/inner_static.rs b/tests/ui/auxiliary/inner_static.rs similarity index 100% rename from src/test/ui/auxiliary/inner_static.rs rename to tests/ui/auxiliary/inner_static.rs diff --git a/src/test/ui/auxiliary/issue-76387.rs b/tests/ui/auxiliary/issue-76387.rs similarity index 100% rename from src/test/ui/auxiliary/issue-76387.rs rename to tests/ui/auxiliary/issue-76387.rs diff --git a/src/test/ui/auxiliary/kinds_in_metadata.rs b/tests/ui/auxiliary/kinds_in_metadata.rs similarity index 100% rename from src/test/ui/auxiliary/kinds_in_metadata.rs rename to tests/ui/auxiliary/kinds_in_metadata.rs diff --git a/src/test/ui/auxiliary/msvc-data-only-lib.rs b/tests/ui/auxiliary/msvc-data-only-lib.rs similarity index 100% rename from src/test/ui/auxiliary/msvc-data-only-lib.rs rename to tests/ui/auxiliary/msvc-data-only-lib.rs diff --git a/src/test/ui/auxiliary/noexporttypelib.rs b/tests/ui/auxiliary/noexporttypelib.rs similarity index 100% rename from src/test/ui/auxiliary/noexporttypelib.rs rename to tests/ui/auxiliary/noexporttypelib.rs diff --git a/src/test/ui/auxiliary/orphan-check-diagnostics.rs b/tests/ui/auxiliary/orphan-check-diagnostics.rs similarity index 100% rename from src/test/ui/auxiliary/orphan-check-diagnostics.rs rename to tests/ui/auxiliary/orphan-check-diagnostics.rs diff --git a/src/test/ui/auxiliary/pub-and-stability.rs b/tests/ui/auxiliary/pub-and-stability.rs similarity index 100% rename from src/test/ui/auxiliary/pub-and-stability.rs rename to tests/ui/auxiliary/pub-and-stability.rs diff --git a/src/test/ui/auxiliary/removing-extern-crate.rs b/tests/ui/auxiliary/removing-extern-crate.rs similarity index 100% rename from src/test/ui/auxiliary/removing-extern-crate.rs rename to tests/ui/auxiliary/removing-extern-crate.rs diff --git a/src/test/ui/auxiliary/rustc-rust-log-aux.rs b/tests/ui/auxiliary/rustc-rust-log-aux.rs similarity index 100% rename from src/test/ui/auxiliary/rustc-rust-log-aux.rs rename to tests/ui/auxiliary/rustc-rust-log-aux.rs diff --git a/src/test/ui/auxiliary/svh-a-base.rs b/tests/ui/auxiliary/svh-a-base.rs similarity index 100% rename from src/test/ui/auxiliary/svh-a-base.rs rename to tests/ui/auxiliary/svh-a-base.rs diff --git a/src/test/ui/auxiliary/svh-b.rs b/tests/ui/auxiliary/svh-b.rs similarity index 100% rename from src/test/ui/auxiliary/svh-b.rs rename to tests/ui/auxiliary/svh-b.rs diff --git a/src/test/ui/auxiliary/typeid-intrinsic-aux1.rs b/tests/ui/auxiliary/typeid-intrinsic-aux1.rs similarity index 100% rename from src/test/ui/auxiliary/typeid-intrinsic-aux1.rs rename to tests/ui/auxiliary/typeid-intrinsic-aux1.rs diff --git a/src/test/ui/auxiliary/typeid-intrinsic-aux2.rs b/tests/ui/auxiliary/typeid-intrinsic-aux2.rs similarity index 100% rename from src/test/ui/auxiliary/typeid-intrinsic-aux2.rs rename to tests/ui/auxiliary/typeid-intrinsic-aux2.rs diff --git a/src/test/ui/auxiliary/using-target-feature-unstable.rs b/tests/ui/auxiliary/using-target-feature-unstable.rs similarity index 100% rename from src/test/ui/auxiliary/using-target-feature-unstable.rs rename to tests/ui/auxiliary/using-target-feature-unstable.rs diff --git a/src/test/ui/auxiliary/xc-private-method-lib.rs b/tests/ui/auxiliary/xc-private-method-lib.rs similarity index 100% rename from src/test/ui/auxiliary/xc-private-method-lib.rs rename to tests/ui/auxiliary/xc-private-method-lib.rs diff --git a/src/test/ui/backtrace-apple-no-dsymutil.rs b/tests/ui/backtrace-apple-no-dsymutil.rs similarity index 100% rename from src/test/ui/backtrace-apple-no-dsymutil.rs rename to tests/ui/backtrace-apple-no-dsymutil.rs diff --git a/src/test/ui/backtrace.rs b/tests/ui/backtrace.rs similarity index 100% rename from src/test/ui/backtrace.rs rename to tests/ui/backtrace.rs diff --git a/src/test/ui/bare-fn-implements-fn-mut.rs b/tests/ui/bare-fn-implements-fn-mut.rs similarity index 100% rename from src/test/ui/bare-fn-implements-fn-mut.rs rename to tests/ui/bare-fn-implements-fn-mut.rs diff --git a/src/test/ui/bare-static-string.rs b/tests/ui/bare-static-string.rs similarity index 100% rename from src/test/ui/bare-static-string.rs rename to tests/ui/bare-static-string.rs diff --git a/src/test/ui/bench/issue-32062.rs b/tests/ui/bench/issue-32062.rs similarity index 100% rename from src/test/ui/bench/issue-32062.rs rename to tests/ui/bench/issue-32062.rs diff --git a/src/test/ui/big-literals.rs b/tests/ui/big-literals.rs similarity index 100% rename from src/test/ui/big-literals.rs rename to tests/ui/big-literals.rs diff --git a/src/test/ui/bind-by-move.rs b/tests/ui/bind-by-move.rs similarity index 100% rename from src/test/ui/bind-by-move.rs rename to tests/ui/bind-by-move.rs diff --git a/src/test/ui/binding/ambiguity-item.rs b/tests/ui/binding/ambiguity-item.rs similarity index 100% rename from src/test/ui/binding/ambiguity-item.rs rename to tests/ui/binding/ambiguity-item.rs diff --git a/src/test/ui/binding/ambiguity-item.stderr b/tests/ui/binding/ambiguity-item.stderr similarity index 100% rename from src/test/ui/binding/ambiguity-item.stderr rename to tests/ui/binding/ambiguity-item.stderr diff --git a/src/test/ui/binding/bind-field-short-with-modifiers.rs b/tests/ui/binding/bind-field-short-with-modifiers.rs similarity index 100% rename from src/test/ui/binding/bind-field-short-with-modifiers.rs rename to tests/ui/binding/bind-field-short-with-modifiers.rs diff --git a/src/test/ui/binding/borrowed-ptr-pattern-2.rs b/tests/ui/binding/borrowed-ptr-pattern-2.rs similarity index 100% rename from src/test/ui/binding/borrowed-ptr-pattern-2.rs rename to tests/ui/binding/borrowed-ptr-pattern-2.rs diff --git a/src/test/ui/binding/borrowed-ptr-pattern-3.rs b/tests/ui/binding/borrowed-ptr-pattern-3.rs similarity index 100% rename from src/test/ui/binding/borrowed-ptr-pattern-3.rs rename to tests/ui/binding/borrowed-ptr-pattern-3.rs diff --git a/src/test/ui/binding/borrowed-ptr-pattern-infallible.rs b/tests/ui/binding/borrowed-ptr-pattern-infallible.rs similarity index 100% rename from src/test/ui/binding/borrowed-ptr-pattern-infallible.rs rename to tests/ui/binding/borrowed-ptr-pattern-infallible.rs diff --git a/src/test/ui/binding/borrowed-ptr-pattern-option.rs b/tests/ui/binding/borrowed-ptr-pattern-option.rs similarity index 100% rename from src/test/ui/binding/borrowed-ptr-pattern-option.rs rename to tests/ui/binding/borrowed-ptr-pattern-option.rs diff --git a/src/test/ui/binding/borrowed-ptr-pattern.rs b/tests/ui/binding/borrowed-ptr-pattern.rs similarity index 100% rename from src/test/ui/binding/borrowed-ptr-pattern.rs rename to tests/ui/binding/borrowed-ptr-pattern.rs diff --git a/src/test/ui/binding/const-param.rs b/tests/ui/binding/const-param.rs similarity index 100% rename from src/test/ui/binding/const-param.rs rename to tests/ui/binding/const-param.rs diff --git a/src/test/ui/binding/const-param.stderr b/tests/ui/binding/const-param.stderr similarity index 100% rename from src/test/ui/binding/const-param.stderr rename to tests/ui/binding/const-param.stderr diff --git a/src/test/ui/binding/empty-types-in-patterns.rs b/tests/ui/binding/empty-types-in-patterns.rs similarity index 100% rename from src/test/ui/binding/empty-types-in-patterns.rs rename to tests/ui/binding/empty-types-in-patterns.rs diff --git a/src/test/ui/binding/exhaustive-bool-match-sanity.rs b/tests/ui/binding/exhaustive-bool-match-sanity.rs similarity index 100% rename from src/test/ui/binding/exhaustive-bool-match-sanity.rs rename to tests/ui/binding/exhaustive-bool-match-sanity.rs diff --git a/src/test/ui/binding/expr-match-generic-unique1.rs b/tests/ui/binding/expr-match-generic-unique1.rs similarity index 100% rename from src/test/ui/binding/expr-match-generic-unique1.rs rename to tests/ui/binding/expr-match-generic-unique1.rs diff --git a/src/test/ui/binding/expr-match-generic-unique2.rs b/tests/ui/binding/expr-match-generic-unique2.rs similarity index 100% rename from src/test/ui/binding/expr-match-generic-unique2.rs rename to tests/ui/binding/expr-match-generic-unique2.rs diff --git a/src/test/ui/binding/expr-match-generic.rs b/tests/ui/binding/expr-match-generic.rs similarity index 100% rename from src/test/ui/binding/expr-match-generic.rs rename to tests/ui/binding/expr-match-generic.rs diff --git a/src/test/ui/binding/expr-match-panic-all.rs b/tests/ui/binding/expr-match-panic-all.rs similarity index 100% rename from src/test/ui/binding/expr-match-panic-all.rs rename to tests/ui/binding/expr-match-panic-all.rs diff --git a/src/test/ui/binding/expr-match-panic.rs b/tests/ui/binding/expr-match-panic.rs similarity index 100% rename from src/test/ui/binding/expr-match-panic.rs rename to tests/ui/binding/expr-match-panic.rs diff --git a/src/test/ui/binding/expr-match-unique.rs b/tests/ui/binding/expr-match-unique.rs similarity index 100% rename from src/test/ui/binding/expr-match-unique.rs rename to tests/ui/binding/expr-match-unique.rs diff --git a/src/test/ui/binding/expr-match.rs b/tests/ui/binding/expr-match.rs similarity index 100% rename from src/test/ui/binding/expr-match.rs rename to tests/ui/binding/expr-match.rs diff --git a/src/test/ui/binding/fat-arrow-match.rs b/tests/ui/binding/fat-arrow-match.rs similarity index 100% rename from src/test/ui/binding/fat-arrow-match.rs rename to tests/ui/binding/fat-arrow-match.rs diff --git a/src/test/ui/binding/fn-arg-incomplete-pattern-drop-order.rs b/tests/ui/binding/fn-arg-incomplete-pattern-drop-order.rs similarity index 100% rename from src/test/ui/binding/fn-arg-incomplete-pattern-drop-order.rs rename to tests/ui/binding/fn-arg-incomplete-pattern-drop-order.rs diff --git a/src/test/ui/binding/fn-pattern-expected-type-2.rs b/tests/ui/binding/fn-pattern-expected-type-2.rs similarity index 100% rename from src/test/ui/binding/fn-pattern-expected-type-2.rs rename to tests/ui/binding/fn-pattern-expected-type-2.rs diff --git a/src/test/ui/binding/fn-pattern-expected-type.rs b/tests/ui/binding/fn-pattern-expected-type.rs similarity index 100% rename from src/test/ui/binding/fn-pattern-expected-type.rs rename to tests/ui/binding/fn-pattern-expected-type.rs diff --git a/src/test/ui/binding/func-arg-incomplete-pattern.rs b/tests/ui/binding/func-arg-incomplete-pattern.rs similarity index 100% rename from src/test/ui/binding/func-arg-incomplete-pattern.rs rename to tests/ui/binding/func-arg-incomplete-pattern.rs diff --git a/src/test/ui/binding/func-arg-ref-pattern.rs b/tests/ui/binding/func-arg-ref-pattern.rs similarity index 100% rename from src/test/ui/binding/func-arg-ref-pattern.rs rename to tests/ui/binding/func-arg-ref-pattern.rs diff --git a/src/test/ui/binding/func-arg-wild-pattern.rs b/tests/ui/binding/func-arg-wild-pattern.rs similarity index 100% rename from src/test/ui/binding/func-arg-wild-pattern.rs rename to tests/ui/binding/func-arg-wild-pattern.rs diff --git a/src/test/ui/binding/if-let.rs b/tests/ui/binding/if-let.rs similarity index 100% rename from src/test/ui/binding/if-let.rs rename to tests/ui/binding/if-let.rs diff --git a/src/test/ui/binding/inconsistent-lifetime-mismatch.rs b/tests/ui/binding/inconsistent-lifetime-mismatch.rs similarity index 100% rename from src/test/ui/binding/inconsistent-lifetime-mismatch.rs rename to tests/ui/binding/inconsistent-lifetime-mismatch.rs diff --git a/src/test/ui/binding/inferred-suffix-in-pattern-range.rs b/tests/ui/binding/inferred-suffix-in-pattern-range.rs similarity index 100% rename from src/test/ui/binding/inferred-suffix-in-pattern-range.rs rename to tests/ui/binding/inferred-suffix-in-pattern-range.rs diff --git a/src/test/ui/binding/irrefutable-slice-patterns.rs b/tests/ui/binding/irrefutable-slice-patterns.rs similarity index 100% rename from src/test/ui/binding/irrefutable-slice-patterns.rs rename to tests/ui/binding/irrefutable-slice-patterns.rs diff --git a/src/test/ui/binding/issue-53114-borrow-checks.rs b/tests/ui/binding/issue-53114-borrow-checks.rs similarity index 100% rename from src/test/ui/binding/issue-53114-borrow-checks.rs rename to tests/ui/binding/issue-53114-borrow-checks.rs diff --git a/src/test/ui/binding/issue-53114-borrow-checks.stderr b/tests/ui/binding/issue-53114-borrow-checks.stderr similarity index 100% rename from src/test/ui/binding/issue-53114-borrow-checks.stderr rename to tests/ui/binding/issue-53114-borrow-checks.stderr diff --git a/src/test/ui/binding/issue-53114-safety-checks.rs b/tests/ui/binding/issue-53114-safety-checks.rs similarity index 100% rename from src/test/ui/binding/issue-53114-safety-checks.rs rename to tests/ui/binding/issue-53114-safety-checks.rs diff --git a/src/test/ui/binding/issue-53114-safety-checks.stderr b/tests/ui/binding/issue-53114-safety-checks.stderr similarity index 100% rename from src/test/ui/binding/issue-53114-safety-checks.stderr rename to tests/ui/binding/issue-53114-safety-checks.stderr diff --git a/src/test/ui/binding/let-assignability.rs b/tests/ui/binding/let-assignability.rs similarity index 100% rename from src/test/ui/binding/let-assignability.rs rename to tests/ui/binding/let-assignability.rs diff --git a/src/test/ui/binding/let-destruct-ref.rs b/tests/ui/binding/let-destruct-ref.rs similarity index 100% rename from src/test/ui/binding/let-destruct-ref.rs rename to tests/ui/binding/let-destruct-ref.rs diff --git a/src/test/ui/binding/let-var-hygiene.rs b/tests/ui/binding/let-var-hygiene.rs similarity index 100% rename from src/test/ui/binding/let-var-hygiene.rs rename to tests/ui/binding/let-var-hygiene.rs diff --git a/src/test/ui/binding/match-arm-statics.rs b/tests/ui/binding/match-arm-statics.rs similarity index 100% rename from src/test/ui/binding/match-arm-statics.rs rename to tests/ui/binding/match-arm-statics.rs diff --git a/src/test/ui/binding/match-beginning-vert.rs b/tests/ui/binding/match-beginning-vert.rs similarity index 100% rename from src/test/ui/binding/match-beginning-vert.rs rename to tests/ui/binding/match-beginning-vert.rs diff --git a/src/test/ui/binding/match-borrowed_str.rs b/tests/ui/binding/match-borrowed_str.rs similarity index 100% rename from src/test/ui/binding/match-borrowed_str.rs rename to tests/ui/binding/match-borrowed_str.rs diff --git a/src/test/ui/binding/match-bot-2.rs b/tests/ui/binding/match-bot-2.rs similarity index 100% rename from src/test/ui/binding/match-bot-2.rs rename to tests/ui/binding/match-bot-2.rs diff --git a/src/test/ui/binding/match-bot.rs b/tests/ui/binding/match-bot.rs similarity index 100% rename from src/test/ui/binding/match-bot.rs rename to tests/ui/binding/match-bot.rs diff --git a/src/test/ui/binding/match-byte-array-patterns.rs b/tests/ui/binding/match-byte-array-patterns.rs similarity index 100% rename from src/test/ui/binding/match-byte-array-patterns.rs rename to tests/ui/binding/match-byte-array-patterns.rs diff --git a/src/test/ui/binding/match-enum-struct-0.rs b/tests/ui/binding/match-enum-struct-0.rs similarity index 100% rename from src/test/ui/binding/match-enum-struct-0.rs rename to tests/ui/binding/match-enum-struct-0.rs diff --git a/src/test/ui/binding/match-enum-struct-1.rs b/tests/ui/binding/match-enum-struct-1.rs similarity index 100% rename from src/test/ui/binding/match-enum-struct-1.rs rename to tests/ui/binding/match-enum-struct-1.rs diff --git a/src/test/ui/binding/match-implicit-copy-unique.rs b/tests/ui/binding/match-implicit-copy-unique.rs similarity index 100% rename from src/test/ui/binding/match-implicit-copy-unique.rs rename to tests/ui/binding/match-implicit-copy-unique.rs diff --git a/src/test/ui/binding/match-in-macro.rs b/tests/ui/binding/match-in-macro.rs similarity index 100% rename from src/test/ui/binding/match-in-macro.rs rename to tests/ui/binding/match-in-macro.rs diff --git a/src/test/ui/binding/match-join.rs b/tests/ui/binding/match-join.rs similarity index 100% rename from src/test/ui/binding/match-join.rs rename to tests/ui/binding/match-join.rs diff --git a/src/test/ui/binding/match-larger-const.rs b/tests/ui/binding/match-larger-const.rs similarity index 100% rename from src/test/ui/binding/match-larger-const.rs rename to tests/ui/binding/match-larger-const.rs diff --git a/src/test/ui/binding/match-naked-record-expr.rs b/tests/ui/binding/match-naked-record-expr.rs similarity index 100% rename from src/test/ui/binding/match-naked-record-expr.rs rename to tests/ui/binding/match-naked-record-expr.rs diff --git a/src/test/ui/binding/match-naked-record.rs b/tests/ui/binding/match-naked-record.rs similarity index 100% rename from src/test/ui/binding/match-naked-record.rs rename to tests/ui/binding/match-naked-record.rs diff --git a/src/test/ui/binding/match-path.rs b/tests/ui/binding/match-path.rs similarity index 100% rename from src/test/ui/binding/match-path.rs rename to tests/ui/binding/match-path.rs diff --git a/src/test/ui/binding/match-pattern-bindings.rs b/tests/ui/binding/match-pattern-bindings.rs similarity index 100% rename from src/test/ui/binding/match-pattern-bindings.rs rename to tests/ui/binding/match-pattern-bindings.rs diff --git a/src/test/ui/binding/match-pattern-lit.rs b/tests/ui/binding/match-pattern-lit.rs similarity index 100% rename from src/test/ui/binding/match-pattern-lit.rs rename to tests/ui/binding/match-pattern-lit.rs diff --git a/src/test/ui/binding/match-pattern-no-type-params.rs b/tests/ui/binding/match-pattern-no-type-params.rs similarity index 100% rename from src/test/ui/binding/match-pattern-no-type-params.rs rename to tests/ui/binding/match-pattern-no-type-params.rs diff --git a/src/test/ui/binding/match-pattern-simple.rs b/tests/ui/binding/match-pattern-simple.rs similarity index 100% rename from src/test/ui/binding/match-pattern-simple.rs rename to tests/ui/binding/match-pattern-simple.rs diff --git a/src/test/ui/binding/match-phi.rs b/tests/ui/binding/match-phi.rs similarity index 100% rename from src/test/ui/binding/match-phi.rs rename to tests/ui/binding/match-phi.rs diff --git a/src/test/ui/binding/match-pipe-binding.rs b/tests/ui/binding/match-pipe-binding.rs similarity index 100% rename from src/test/ui/binding/match-pipe-binding.rs rename to tests/ui/binding/match-pipe-binding.rs diff --git a/src/test/ui/binding/match-range-infer.rs b/tests/ui/binding/match-range-infer.rs similarity index 100% rename from src/test/ui/binding/match-range-infer.rs rename to tests/ui/binding/match-range-infer.rs diff --git a/src/test/ui/binding/match-range-static.rs b/tests/ui/binding/match-range-static.rs similarity index 100% rename from src/test/ui/binding/match-range-static.rs rename to tests/ui/binding/match-range-static.rs diff --git a/src/test/ui/binding/match-range.rs b/tests/ui/binding/match-range.rs similarity index 100% rename from src/test/ui/binding/match-range.rs rename to tests/ui/binding/match-range.rs diff --git a/src/test/ui/binding/match-reassign.rs b/tests/ui/binding/match-reassign.rs similarity index 100% rename from src/test/ui/binding/match-reassign.rs rename to tests/ui/binding/match-reassign.rs diff --git a/src/test/ui/binding/match-ref-binding-in-guard-3256.rs b/tests/ui/binding/match-ref-binding-in-guard-3256.rs similarity index 100% rename from src/test/ui/binding/match-ref-binding-in-guard-3256.rs rename to tests/ui/binding/match-ref-binding-in-guard-3256.rs diff --git a/src/test/ui/binding/match-ref-binding-mut-option.rs b/tests/ui/binding/match-ref-binding-mut-option.rs similarity index 100% rename from src/test/ui/binding/match-ref-binding-mut-option.rs rename to tests/ui/binding/match-ref-binding-mut-option.rs diff --git a/src/test/ui/binding/match-ref-binding-mut.rs b/tests/ui/binding/match-ref-binding-mut.rs similarity index 100% rename from src/test/ui/binding/match-ref-binding-mut.rs rename to tests/ui/binding/match-ref-binding-mut.rs diff --git a/src/test/ui/binding/match-ref-binding.rs b/tests/ui/binding/match-ref-binding.rs similarity index 100% rename from src/test/ui/binding/match-ref-binding.rs rename to tests/ui/binding/match-ref-binding.rs diff --git a/src/test/ui/binding/match-ref-unsized.rs b/tests/ui/binding/match-ref-unsized.rs similarity index 100% rename from src/test/ui/binding/match-ref-unsized.rs rename to tests/ui/binding/match-ref-unsized.rs diff --git a/src/test/ui/binding/match-str.rs b/tests/ui/binding/match-str.rs similarity index 100% rename from src/test/ui/binding/match-str.rs rename to tests/ui/binding/match-str.rs diff --git a/src/test/ui/binding/match-struct-0.rs b/tests/ui/binding/match-struct-0.rs similarity index 100% rename from src/test/ui/binding/match-struct-0.rs rename to tests/ui/binding/match-struct-0.rs diff --git a/src/test/ui/binding/match-tag.rs b/tests/ui/binding/match-tag.rs similarity index 100% rename from src/test/ui/binding/match-tag.rs rename to tests/ui/binding/match-tag.rs diff --git a/src/test/ui/binding/match-unique-bind.rs b/tests/ui/binding/match-unique-bind.rs similarity index 100% rename from src/test/ui/binding/match-unique-bind.rs rename to tests/ui/binding/match-unique-bind.rs diff --git a/src/test/ui/binding/match-unsized.rs b/tests/ui/binding/match-unsized.rs similarity index 100% rename from src/test/ui/binding/match-unsized.rs rename to tests/ui/binding/match-unsized.rs diff --git a/src/test/ui/binding/match-value-binding-in-guard-3291.rs b/tests/ui/binding/match-value-binding-in-guard-3291.rs similarity index 100% rename from src/test/ui/binding/match-value-binding-in-guard-3291.rs rename to tests/ui/binding/match-value-binding-in-guard-3291.rs diff --git a/src/test/ui/binding/match-var-hygiene.rs b/tests/ui/binding/match-var-hygiene.rs similarity index 100% rename from src/test/ui/binding/match-var-hygiene.rs rename to tests/ui/binding/match-var-hygiene.rs diff --git a/src/test/ui/binding/match-vec-alternatives.rs b/tests/ui/binding/match-vec-alternatives.rs similarity index 100% rename from src/test/ui/binding/match-vec-alternatives.rs rename to tests/ui/binding/match-vec-alternatives.rs diff --git a/src/test/ui/binding/match-vec-rvalue.rs b/tests/ui/binding/match-vec-rvalue.rs similarity index 100% rename from src/test/ui/binding/match-vec-rvalue.rs rename to tests/ui/binding/match-vec-rvalue.rs diff --git a/src/test/ui/binding/match-with-ret-arm.rs b/tests/ui/binding/match-with-ret-arm.rs similarity index 100% rename from src/test/ui/binding/match-with-ret-arm.rs rename to tests/ui/binding/match-with-ret-arm.rs diff --git a/src/test/ui/binding/multi-let.rs b/tests/ui/binding/multi-let.rs similarity index 100% rename from src/test/ui/binding/multi-let.rs rename to tests/ui/binding/multi-let.rs diff --git a/src/test/ui/binding/mut-in-ident-patterns.rs b/tests/ui/binding/mut-in-ident-patterns.rs similarity index 100% rename from src/test/ui/binding/mut-in-ident-patterns.rs rename to tests/ui/binding/mut-in-ident-patterns.rs diff --git a/src/test/ui/binding/nested-matchs.rs b/tests/ui/binding/nested-matchs.rs similarity index 100% rename from src/test/ui/binding/nested-matchs.rs rename to tests/ui/binding/nested-matchs.rs diff --git a/src/test/ui/binding/nested-pattern.rs b/tests/ui/binding/nested-pattern.rs similarity index 100% rename from src/test/ui/binding/nested-pattern.rs rename to tests/ui/binding/nested-pattern.rs diff --git a/src/test/ui/binding/nil-pattern.rs b/tests/ui/binding/nil-pattern.rs similarity index 100% rename from src/test/ui/binding/nil-pattern.rs rename to tests/ui/binding/nil-pattern.rs diff --git a/src/test/ui/binding/nullary-or-pattern.rs b/tests/ui/binding/nullary-or-pattern.rs similarity index 100% rename from src/test/ui/binding/nullary-or-pattern.rs rename to tests/ui/binding/nullary-or-pattern.rs diff --git a/src/test/ui/binding/optional_comma_in_match_arm.rs b/tests/ui/binding/optional_comma_in_match_arm.rs similarity index 100% rename from src/test/ui/binding/optional_comma_in_match_arm.rs rename to tests/ui/binding/optional_comma_in_match_arm.rs diff --git a/src/test/ui/binding/or-pattern.rs b/tests/ui/binding/or-pattern.rs similarity index 100% rename from src/test/ui/binding/or-pattern.rs rename to tests/ui/binding/or-pattern.rs diff --git a/src/test/ui/binding/order-drop-with-match.rs b/tests/ui/binding/order-drop-with-match.rs similarity index 100% rename from src/test/ui/binding/order-drop-with-match.rs rename to tests/ui/binding/order-drop-with-match.rs diff --git a/src/test/ui/binding/pat-ranges.rs b/tests/ui/binding/pat-ranges.rs similarity index 100% rename from src/test/ui/binding/pat-ranges.rs rename to tests/ui/binding/pat-ranges.rs diff --git a/src/test/ui/binding/pat-tuple-1.rs b/tests/ui/binding/pat-tuple-1.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-1.rs rename to tests/ui/binding/pat-tuple-1.rs diff --git a/src/test/ui/binding/pat-tuple-2.rs b/tests/ui/binding/pat-tuple-2.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-2.rs rename to tests/ui/binding/pat-tuple-2.rs diff --git a/src/test/ui/binding/pat-tuple-3.rs b/tests/ui/binding/pat-tuple-3.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-3.rs rename to tests/ui/binding/pat-tuple-3.rs diff --git a/src/test/ui/binding/pat-tuple-4.rs b/tests/ui/binding/pat-tuple-4.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-4.rs rename to tests/ui/binding/pat-tuple-4.rs diff --git a/src/test/ui/binding/pat-tuple-5.rs b/tests/ui/binding/pat-tuple-5.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-5.rs rename to tests/ui/binding/pat-tuple-5.rs diff --git a/src/test/ui/binding/pat-tuple-6.rs b/tests/ui/binding/pat-tuple-6.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-6.rs rename to tests/ui/binding/pat-tuple-6.rs diff --git a/src/test/ui/binding/pat-tuple-7.rs b/tests/ui/binding/pat-tuple-7.rs similarity index 100% rename from src/test/ui/binding/pat-tuple-7.rs rename to tests/ui/binding/pat-tuple-7.rs diff --git a/src/test/ui/binding/pattern-bound-var-in-for-each.rs b/tests/ui/binding/pattern-bound-var-in-for-each.rs similarity index 100% rename from src/test/ui/binding/pattern-bound-var-in-for-each.rs rename to tests/ui/binding/pattern-bound-var-in-for-each.rs diff --git a/src/test/ui/binding/pattern-in-closure.rs b/tests/ui/binding/pattern-in-closure.rs similarity index 100% rename from src/test/ui/binding/pattern-in-closure.rs rename to tests/ui/binding/pattern-in-closure.rs diff --git a/src/test/ui/binding/range-inclusive-pattern-precedence.rs b/tests/ui/binding/range-inclusive-pattern-precedence.rs similarity index 100% rename from src/test/ui/binding/range-inclusive-pattern-precedence.rs rename to tests/ui/binding/range-inclusive-pattern-precedence.rs diff --git a/src/test/ui/binding/shadow.rs b/tests/ui/binding/shadow.rs similarity index 100% rename from src/test/ui/binding/shadow.rs rename to tests/ui/binding/shadow.rs diff --git a/src/test/ui/binding/simple-generic-match.rs b/tests/ui/binding/simple-generic-match.rs similarity index 100% rename from src/test/ui/binding/simple-generic-match.rs rename to tests/ui/binding/simple-generic-match.rs diff --git a/src/test/ui/binding/use-uninit-match.rs b/tests/ui/binding/use-uninit-match.rs similarity index 100% rename from src/test/ui/binding/use-uninit-match.rs rename to tests/ui/binding/use-uninit-match.rs diff --git a/src/test/ui/binding/use-uninit-match2.rs b/tests/ui/binding/use-uninit-match2.rs similarity index 100% rename from src/test/ui/binding/use-uninit-match2.rs rename to tests/ui/binding/use-uninit-match2.rs diff --git a/src/test/ui/binding/zero_sized_subslice_match.rs b/tests/ui/binding/zero_sized_subslice_match.rs similarity index 100% rename from src/test/ui/binding/zero_sized_subslice_match.rs rename to tests/ui/binding/zero_sized_subslice_match.rs diff --git a/src/test/ui/binop/binary-minus-without-space.rs b/tests/ui/binop/binary-minus-without-space.rs similarity index 100% rename from src/test/ui/binop/binary-minus-without-space.rs rename to tests/ui/binop/binary-minus-without-space.rs diff --git a/src/test/ui/binop/binary-op-on-double-ref.fixed b/tests/ui/binop/binary-op-on-double-ref.fixed similarity index 100% rename from src/test/ui/binop/binary-op-on-double-ref.fixed rename to tests/ui/binop/binary-op-on-double-ref.fixed diff --git a/src/test/ui/binop/binary-op-on-double-ref.rs b/tests/ui/binop/binary-op-on-double-ref.rs similarity index 100% rename from src/test/ui/binop/binary-op-on-double-ref.rs rename to tests/ui/binop/binary-op-on-double-ref.rs diff --git a/src/test/ui/binop/binary-op-on-double-ref.stderr b/tests/ui/binop/binary-op-on-double-ref.stderr similarity index 100% rename from src/test/ui/binop/binary-op-on-double-ref.stderr rename to tests/ui/binop/binary-op-on-double-ref.stderr diff --git a/src/test/ui/binop/binary-op-on-fn-ptr-eq.rs b/tests/ui/binop/binary-op-on-fn-ptr-eq.rs similarity index 100% rename from src/test/ui/binop/binary-op-on-fn-ptr-eq.rs rename to tests/ui/binop/binary-op-on-fn-ptr-eq.rs diff --git a/src/test/ui/binop/binop-bitxor-str.rs b/tests/ui/binop/binop-bitxor-str.rs similarity index 100% rename from src/test/ui/binop/binop-bitxor-str.rs rename to tests/ui/binop/binop-bitxor-str.rs diff --git a/src/test/ui/binop/binop-bitxor-str.stderr b/tests/ui/binop/binop-bitxor-str.stderr similarity index 100% rename from src/test/ui/binop/binop-bitxor-str.stderr rename to tests/ui/binop/binop-bitxor-str.stderr diff --git a/src/test/ui/binop/binop-consume-args.rs b/tests/ui/binop/binop-consume-args.rs similarity index 100% rename from src/test/ui/binop/binop-consume-args.rs rename to tests/ui/binop/binop-consume-args.rs diff --git a/src/test/ui/binop/binop-consume-args.stderr b/tests/ui/binop/binop-consume-args.stderr similarity index 100% rename from src/test/ui/binop/binop-consume-args.stderr rename to tests/ui/binop/binop-consume-args.stderr diff --git a/src/test/ui/binop/binop-fail-3.rs b/tests/ui/binop/binop-fail-3.rs similarity index 100% rename from src/test/ui/binop/binop-fail-3.rs rename to tests/ui/binop/binop-fail-3.rs diff --git a/src/test/ui/binop/binop-logic-float.rs b/tests/ui/binop/binop-logic-float.rs similarity index 100% rename from src/test/ui/binop/binop-logic-float.rs rename to tests/ui/binop/binop-logic-float.rs diff --git a/src/test/ui/binop/binop-logic-float.stderr b/tests/ui/binop/binop-logic-float.stderr similarity index 100% rename from src/test/ui/binop/binop-logic-float.stderr rename to tests/ui/binop/binop-logic-float.stderr diff --git a/src/test/ui/binop/binop-logic-int.rs b/tests/ui/binop/binop-logic-int.rs similarity index 100% rename from src/test/ui/binop/binop-logic-int.rs rename to tests/ui/binop/binop-logic-int.rs diff --git a/src/test/ui/binop/binop-logic-int.stderr b/tests/ui/binop/binop-logic-int.stderr similarity index 100% rename from src/test/ui/binop/binop-logic-int.stderr rename to tests/ui/binop/binop-logic-int.stderr diff --git a/src/test/ui/binop/binop-move-semantics.rs b/tests/ui/binop/binop-move-semantics.rs similarity index 100% rename from src/test/ui/binop/binop-move-semantics.rs rename to tests/ui/binop/binop-move-semantics.rs diff --git a/src/test/ui/binop/binop-move-semantics.stderr b/tests/ui/binop/binop-move-semantics.stderr similarity index 100% rename from src/test/ui/binop/binop-move-semantics.stderr rename to tests/ui/binop/binop-move-semantics.stderr diff --git a/src/test/ui/binop/binop-mul-bool.rs b/tests/ui/binop/binop-mul-bool.rs similarity index 100% rename from src/test/ui/binop/binop-mul-bool.rs rename to tests/ui/binop/binop-mul-bool.rs diff --git a/src/test/ui/binop/binop-mul-bool.stderr b/tests/ui/binop/binop-mul-bool.stderr similarity index 100% rename from src/test/ui/binop/binop-mul-bool.stderr rename to tests/ui/binop/binop-mul-bool.stderr diff --git a/src/test/ui/binop/binop-mul-i32-f32.rs b/tests/ui/binop/binop-mul-i32-f32.rs similarity index 100% rename from src/test/ui/binop/binop-mul-i32-f32.rs rename to tests/ui/binop/binop-mul-i32-f32.rs diff --git a/src/test/ui/binop/binop-mul-i32-f32.stderr b/tests/ui/binop/binop-mul-i32-f32.stderr similarity index 100% rename from src/test/ui/binop/binop-mul-i32-f32.stderr rename to tests/ui/binop/binop-mul-i32-f32.stderr diff --git a/src/test/ui/binop/binop-panic.rs b/tests/ui/binop/binop-panic.rs similarity index 100% rename from src/test/ui/binop/binop-panic.rs rename to tests/ui/binop/binop-panic.rs diff --git a/src/test/ui/binop/binop-typeck.rs b/tests/ui/binop/binop-typeck.rs similarity index 100% rename from src/test/ui/binop/binop-typeck.rs rename to tests/ui/binop/binop-typeck.rs diff --git a/src/test/ui/binop/binop-typeck.stderr b/tests/ui/binop/binop-typeck.stderr similarity index 100% rename from src/test/ui/binop/binop-typeck.stderr rename to tests/ui/binop/binop-typeck.stderr diff --git a/src/test/ui/binop/binops-issue-22743.rs b/tests/ui/binop/binops-issue-22743.rs similarity index 100% rename from src/test/ui/binop/binops-issue-22743.rs rename to tests/ui/binop/binops-issue-22743.rs diff --git a/src/test/ui/binop/binops.rs b/tests/ui/binop/binops.rs similarity index 100% rename from src/test/ui/binop/binops.rs rename to tests/ui/binop/binops.rs diff --git a/src/test/ui/binop/issue-25916.rs b/tests/ui/binop/issue-25916.rs similarity index 100% rename from src/test/ui/binop/issue-25916.rs rename to tests/ui/binop/issue-25916.rs diff --git a/src/test/ui/binop/issue-28837.rs b/tests/ui/binop/issue-28837.rs similarity index 100% rename from src/test/ui/binop/issue-28837.rs rename to tests/ui/binop/issue-28837.rs diff --git a/src/test/ui/binop/issue-28837.stderr b/tests/ui/binop/issue-28837.stderr similarity index 100% rename from src/test/ui/binop/issue-28837.stderr rename to tests/ui/binop/issue-28837.stderr diff --git a/src/test/ui/binop/issue-3820.rs b/tests/ui/binop/issue-3820.rs similarity index 100% rename from src/test/ui/binop/issue-3820.rs rename to tests/ui/binop/issue-3820.rs diff --git a/src/test/ui/binop/issue-3820.stderr b/tests/ui/binop/issue-3820.stderr similarity index 100% rename from src/test/ui/binop/issue-3820.stderr rename to tests/ui/binop/issue-3820.stderr diff --git a/src/test/ui/binop/issue-77910-1.rs b/tests/ui/binop/issue-77910-1.rs similarity index 100% rename from src/test/ui/binop/issue-77910-1.rs rename to tests/ui/binop/issue-77910-1.rs diff --git a/src/test/ui/binop/issue-77910-1.stderr b/tests/ui/binop/issue-77910-1.stderr similarity index 100% rename from src/test/ui/binop/issue-77910-1.stderr rename to tests/ui/binop/issue-77910-1.stderr diff --git a/src/test/ui/binop/issue-77910-2.rs b/tests/ui/binop/issue-77910-2.rs similarity index 100% rename from src/test/ui/binop/issue-77910-2.rs rename to tests/ui/binop/issue-77910-2.rs diff --git a/src/test/ui/binop/issue-77910-2.stderr b/tests/ui/binop/issue-77910-2.stderr similarity index 100% rename from src/test/ui/binop/issue-77910-2.stderr rename to tests/ui/binop/issue-77910-2.stderr diff --git a/src/test/ui/binop/issue-93927.rs b/tests/ui/binop/issue-93927.rs similarity index 100% rename from src/test/ui/binop/issue-93927.rs rename to tests/ui/binop/issue-93927.rs diff --git a/src/test/ui/binop/issue-93927.stderr b/tests/ui/binop/issue-93927.stderr similarity index 100% rename from src/test/ui/binop/issue-93927.stderr rename to tests/ui/binop/issue-93927.stderr diff --git a/src/test/ui/binop/operator-multidispatch.rs b/tests/ui/binop/operator-multidispatch.rs similarity index 100% rename from src/test/ui/binop/operator-multidispatch.rs rename to tests/ui/binop/operator-multidispatch.rs diff --git a/src/test/ui/binop/operator-overloading.rs b/tests/ui/binop/operator-overloading.rs similarity index 100% rename from src/test/ui/binop/operator-overloading.rs rename to tests/ui/binop/operator-overloading.rs diff --git a/src/test/ui/binop/placement-syntax.rs b/tests/ui/binop/placement-syntax.rs similarity index 100% rename from src/test/ui/binop/placement-syntax.rs rename to tests/ui/binop/placement-syntax.rs diff --git a/src/test/ui/binop/placement-syntax.stderr b/tests/ui/binop/placement-syntax.stderr similarity index 100% rename from src/test/ui/binop/placement-syntax.stderr rename to tests/ui/binop/placement-syntax.stderr diff --git a/src/test/ui/binop/shift-various-bad-types.rs b/tests/ui/binop/shift-various-bad-types.rs similarity index 100% rename from src/test/ui/binop/shift-various-bad-types.rs rename to tests/ui/binop/shift-various-bad-types.rs diff --git a/src/test/ui/binop/shift-various-bad-types.stderr b/tests/ui/binop/shift-various-bad-types.stderr similarity index 100% rename from src/test/ui/binop/shift-various-bad-types.stderr rename to tests/ui/binop/shift-various-bad-types.stderr diff --git a/src/test/ui/binop/structured-compare.rs b/tests/ui/binop/structured-compare.rs similarity index 100% rename from src/test/ui/binop/structured-compare.rs rename to tests/ui/binop/structured-compare.rs diff --git a/src/test/ui/bitwise.rs b/tests/ui/bitwise.rs similarity index 100% rename from src/test/ui/bitwise.rs rename to tests/ui/bitwise.rs diff --git a/src/test/ui/blind/blind-item-block-item-shadow.rs b/tests/ui/blind/blind-item-block-item-shadow.rs similarity index 100% rename from src/test/ui/blind/blind-item-block-item-shadow.rs rename to tests/ui/blind/blind-item-block-item-shadow.rs diff --git a/src/test/ui/blind/blind-item-block-item-shadow.stderr b/tests/ui/blind/blind-item-block-item-shadow.stderr similarity index 100% rename from src/test/ui/blind/blind-item-block-item-shadow.stderr rename to tests/ui/blind/blind-item-block-item-shadow.stderr diff --git a/src/test/ui/blind/blind-item-block-middle.rs b/tests/ui/blind/blind-item-block-middle.rs similarity index 100% rename from src/test/ui/blind/blind-item-block-middle.rs rename to tests/ui/blind/blind-item-block-middle.rs diff --git a/src/test/ui/blind/blind-item-block-middle.stderr b/tests/ui/blind/blind-item-block-middle.stderr similarity index 100% rename from src/test/ui/blind/blind-item-block-middle.stderr rename to tests/ui/blind/blind-item-block-middle.stderr diff --git a/src/test/ui/blind/blind-item-item-shadow.rs b/tests/ui/blind/blind-item-item-shadow.rs similarity index 100% rename from src/test/ui/blind/blind-item-item-shadow.rs rename to tests/ui/blind/blind-item-item-shadow.rs diff --git a/src/test/ui/blind/blind-item-item-shadow.stderr b/tests/ui/blind/blind-item-item-shadow.stderr similarity index 100% rename from src/test/ui/blind/blind-item-item-shadow.stderr rename to tests/ui/blind/blind-item-item-shadow.stderr diff --git a/src/test/ui/block-result/block-must-not-have-result-do.rs b/tests/ui/block-result/block-must-not-have-result-do.rs similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-do.rs rename to tests/ui/block-result/block-must-not-have-result-do.rs diff --git a/src/test/ui/block-result/block-must-not-have-result-do.stderr b/tests/ui/block-result/block-must-not-have-result-do.stderr similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-do.stderr rename to tests/ui/block-result/block-must-not-have-result-do.stderr diff --git a/src/test/ui/block-result/block-must-not-have-result-res.rs b/tests/ui/block-result/block-must-not-have-result-res.rs similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-res.rs rename to tests/ui/block-result/block-must-not-have-result-res.rs diff --git a/src/test/ui/block-result/block-must-not-have-result-res.stderr b/tests/ui/block-result/block-must-not-have-result-res.stderr similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-res.stderr rename to tests/ui/block-result/block-must-not-have-result-res.stderr diff --git a/src/test/ui/block-result/block-must-not-have-result-while.rs b/tests/ui/block-result/block-must-not-have-result-while.rs similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-while.rs rename to tests/ui/block-result/block-must-not-have-result-while.rs diff --git a/src/test/ui/block-result/block-must-not-have-result-while.stderr b/tests/ui/block-result/block-must-not-have-result-while.stderr similarity index 100% rename from src/test/ui/block-result/block-must-not-have-result-while.stderr rename to tests/ui/block-result/block-must-not-have-result-while.stderr diff --git a/src/test/ui/block-result/consider-removing-last-semi.fixed b/tests/ui/block-result/consider-removing-last-semi.fixed similarity index 100% rename from src/test/ui/block-result/consider-removing-last-semi.fixed rename to tests/ui/block-result/consider-removing-last-semi.fixed diff --git a/src/test/ui/block-result/consider-removing-last-semi.rs b/tests/ui/block-result/consider-removing-last-semi.rs similarity index 100% rename from src/test/ui/block-result/consider-removing-last-semi.rs rename to tests/ui/block-result/consider-removing-last-semi.rs diff --git a/src/test/ui/block-result/consider-removing-last-semi.stderr b/tests/ui/block-result/consider-removing-last-semi.stderr similarity index 100% rename from src/test/ui/block-result/consider-removing-last-semi.stderr rename to tests/ui/block-result/consider-removing-last-semi.stderr diff --git a/src/test/ui/block-result/issue-11714.rs b/tests/ui/block-result/issue-11714.rs similarity index 100% rename from src/test/ui/block-result/issue-11714.rs rename to tests/ui/block-result/issue-11714.rs diff --git a/src/test/ui/block-result/issue-11714.stderr b/tests/ui/block-result/issue-11714.stderr similarity index 100% rename from src/test/ui/block-result/issue-11714.stderr rename to tests/ui/block-result/issue-11714.stderr diff --git a/src/test/ui/block-result/issue-13428.rs b/tests/ui/block-result/issue-13428.rs similarity index 100% rename from src/test/ui/block-result/issue-13428.rs rename to tests/ui/block-result/issue-13428.rs diff --git a/src/test/ui/block-result/issue-13428.stderr b/tests/ui/block-result/issue-13428.stderr similarity index 100% rename from src/test/ui/block-result/issue-13428.stderr rename to tests/ui/block-result/issue-13428.stderr diff --git a/src/test/ui/block-result/issue-13624.rs b/tests/ui/block-result/issue-13624.rs similarity index 100% rename from src/test/ui/block-result/issue-13624.rs rename to tests/ui/block-result/issue-13624.rs diff --git a/src/test/ui/block-result/issue-13624.stderr b/tests/ui/block-result/issue-13624.stderr similarity index 100% rename from src/test/ui/block-result/issue-13624.stderr rename to tests/ui/block-result/issue-13624.stderr diff --git a/src/test/ui/block-result/issue-20862.rs b/tests/ui/block-result/issue-20862.rs similarity index 100% rename from src/test/ui/block-result/issue-20862.rs rename to tests/ui/block-result/issue-20862.rs diff --git a/src/test/ui/block-result/issue-20862.stderr b/tests/ui/block-result/issue-20862.stderr similarity index 100% rename from src/test/ui/block-result/issue-20862.stderr rename to tests/ui/block-result/issue-20862.stderr diff --git a/src/test/ui/block-result/issue-22645.rs b/tests/ui/block-result/issue-22645.rs similarity index 100% rename from src/test/ui/block-result/issue-22645.rs rename to tests/ui/block-result/issue-22645.rs diff --git a/src/test/ui/block-result/issue-22645.stderr b/tests/ui/block-result/issue-22645.stderr similarity index 100% rename from src/test/ui/block-result/issue-22645.stderr rename to tests/ui/block-result/issue-22645.stderr diff --git a/src/test/ui/block-result/issue-3563.rs b/tests/ui/block-result/issue-3563.rs similarity index 100% rename from src/test/ui/block-result/issue-3563.rs rename to tests/ui/block-result/issue-3563.rs diff --git a/src/test/ui/block-result/issue-3563.stderr b/tests/ui/block-result/issue-3563.stderr similarity index 100% rename from src/test/ui/block-result/issue-3563.stderr rename to tests/ui/block-result/issue-3563.stderr diff --git a/src/test/ui/block-result/issue-5500.rs b/tests/ui/block-result/issue-5500.rs similarity index 100% rename from src/test/ui/block-result/issue-5500.rs rename to tests/ui/block-result/issue-5500.rs diff --git a/src/test/ui/block-result/issue-5500.stderr b/tests/ui/block-result/issue-5500.stderr similarity index 100% rename from src/test/ui/block-result/issue-5500.stderr rename to tests/ui/block-result/issue-5500.stderr diff --git a/src/test/ui/block-result/unexpected-return-on-unit.rs b/tests/ui/block-result/unexpected-return-on-unit.rs similarity index 100% rename from src/test/ui/block-result/unexpected-return-on-unit.rs rename to tests/ui/block-result/unexpected-return-on-unit.rs diff --git a/src/test/ui/block-result/unexpected-return-on-unit.stderr b/tests/ui/block-result/unexpected-return-on-unit.stderr similarity index 100% rename from src/test/ui/block-result/unexpected-return-on-unit.stderr rename to tests/ui/block-result/unexpected-return-on-unit.stderr diff --git a/src/test/ui/bogus-tag.rs b/tests/ui/bogus-tag.rs similarity index 100% rename from src/test/ui/bogus-tag.rs rename to tests/ui/bogus-tag.rs diff --git a/src/test/ui/bogus-tag.stderr b/tests/ui/bogus-tag.stderr similarity index 100% rename from src/test/ui/bogus-tag.stderr rename to tests/ui/bogus-tag.stderr diff --git a/src/test/ui/borrow-by-val-method-receiver.rs b/tests/ui/borrow-by-val-method-receiver.rs similarity index 100% rename from src/test/ui/borrow-by-val-method-receiver.rs rename to tests/ui/borrow-by-val-method-receiver.rs diff --git a/src/test/ui/borrowck/access-mode-in-closures.rs b/tests/ui/borrowck/access-mode-in-closures.rs similarity index 100% rename from src/test/ui/borrowck/access-mode-in-closures.rs rename to tests/ui/borrowck/access-mode-in-closures.rs diff --git a/src/test/ui/borrowck/access-mode-in-closures.stderr b/tests/ui/borrowck/access-mode-in-closures.stderr similarity index 100% rename from src/test/ui/borrowck/access-mode-in-closures.stderr rename to tests/ui/borrowck/access-mode-in-closures.stderr diff --git a/src/test/ui/borrowck/anonymous-region-in-apit.rs b/tests/ui/borrowck/anonymous-region-in-apit.rs similarity index 100% rename from src/test/ui/borrowck/anonymous-region-in-apit.rs rename to tests/ui/borrowck/anonymous-region-in-apit.rs diff --git a/src/test/ui/borrowck/anonymous-region-in-apit.stderr b/tests/ui/borrowck/anonymous-region-in-apit.stderr similarity index 100% rename from src/test/ui/borrowck/anonymous-region-in-apit.stderr rename to tests/ui/borrowck/anonymous-region-in-apit.stderr diff --git a/src/test/ui/borrowck/assign-never-type.rs b/tests/ui/borrowck/assign-never-type.rs similarity index 100% rename from src/test/ui/borrowck/assign-never-type.rs rename to tests/ui/borrowck/assign-never-type.rs diff --git a/src/test/ui/borrowck/assign_mutable_fields.rs b/tests/ui/borrowck/assign_mutable_fields.rs similarity index 100% rename from src/test/ui/borrowck/assign_mutable_fields.rs rename to tests/ui/borrowck/assign_mutable_fields.rs diff --git a/src/test/ui/borrowck/assign_mutable_fields.stderr b/tests/ui/borrowck/assign_mutable_fields.stderr similarity index 100% rename from src/test/ui/borrowck/assign_mutable_fields.stderr rename to tests/ui/borrowck/assign_mutable_fields.stderr diff --git a/src/test/ui/borrowck/async-reference-generality.rs b/tests/ui/borrowck/async-reference-generality.rs similarity index 100% rename from src/test/ui/borrowck/async-reference-generality.rs rename to tests/ui/borrowck/async-reference-generality.rs diff --git a/src/test/ui/borrowck/async-reference-generality.stderr b/tests/ui/borrowck/async-reference-generality.stderr similarity index 100% rename from src/test/ui/borrowck/async-reference-generality.stderr rename to tests/ui/borrowck/async-reference-generality.stderr diff --git a/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs b/tests/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs similarity index 100% rename from src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs rename to tests/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.rs diff --git a/src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr b/tests/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr similarity index 100% rename from src/test/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr rename to tests/ui/borrowck/bindings-after-at-or-patterns-slice-patterns-box-patterns.stderr diff --git a/src/test/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.rs b/tests/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.rs similarity index 100% rename from src/test/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.rs rename to tests/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.rs diff --git a/src/test/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.stderr b/tests/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.stderr rename to tests/ui/borrowck/borrow-immutable-upvar-mutation-impl-trait.stderr diff --git a/src/test/ui/borrowck/borrow-immutable-upvar-mutation.rs b/tests/ui/borrowck/borrow-immutable-upvar-mutation.rs similarity index 100% rename from src/test/ui/borrowck/borrow-immutable-upvar-mutation.rs rename to tests/ui/borrowck/borrow-immutable-upvar-mutation.rs diff --git a/src/test/ui/borrowck/borrow-immutable-upvar-mutation.stderr b/tests/ui/borrowck/borrow-immutable-upvar-mutation.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-immutable-upvar-mutation.stderr rename to tests/ui/borrowck/borrow-immutable-upvar-mutation.stderr diff --git a/src/test/ui/borrowck/borrow-raw-address-of-borrowed.rs b/tests/ui/borrowck/borrow-raw-address-of-borrowed.rs similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-borrowed.rs rename to tests/ui/borrowck/borrow-raw-address-of-borrowed.rs diff --git a/src/test/ui/borrowck/borrow-raw-address-of-borrowed.stderr b/tests/ui/borrowck/borrow-raw-address-of-borrowed.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-borrowed.stderr rename to tests/ui/borrowck/borrow-raw-address-of-borrowed.stderr diff --git a/src/test/ui/borrowck/borrow-raw-address-of-deref-mutability-ok.rs b/tests/ui/borrowck/borrow-raw-address-of-deref-mutability-ok.rs similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-deref-mutability-ok.rs rename to tests/ui/borrowck/borrow-raw-address-of-deref-mutability-ok.rs diff --git a/src/test/ui/borrowck/borrow-raw-address-of-deref-mutability.rs b/tests/ui/borrowck/borrow-raw-address-of-deref-mutability.rs similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-deref-mutability.rs rename to tests/ui/borrowck/borrow-raw-address-of-deref-mutability.rs diff --git a/src/test/ui/borrowck/borrow-raw-address-of-deref-mutability.stderr b/tests/ui/borrowck/borrow-raw-address-of-deref-mutability.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-deref-mutability.stderr rename to tests/ui/borrowck/borrow-raw-address-of-deref-mutability.stderr diff --git a/src/test/ui/borrowck/borrow-raw-address-of-mutability-ok.rs b/tests/ui/borrowck/borrow-raw-address-of-mutability-ok.rs similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-mutability-ok.rs rename to tests/ui/borrowck/borrow-raw-address-of-mutability-ok.rs diff --git a/src/test/ui/borrowck/borrow-raw-address-of-mutability.rs b/tests/ui/borrowck/borrow-raw-address-of-mutability.rs similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-mutability.rs rename to tests/ui/borrowck/borrow-raw-address-of-mutability.rs diff --git a/src/test/ui/borrowck/borrow-raw-address-of-mutability.stderr b/tests/ui/borrowck/borrow-raw-address-of-mutability.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-raw-address-of-mutability.stderr rename to tests/ui/borrowck/borrow-raw-address-of-mutability.stderr diff --git a/src/test/ui/borrowck/borrow-tuple-fields.rs b/tests/ui/borrowck/borrow-tuple-fields.rs similarity index 100% rename from src/test/ui/borrowck/borrow-tuple-fields.rs rename to tests/ui/borrowck/borrow-tuple-fields.rs diff --git a/src/test/ui/borrowck/borrow-tuple-fields.stderr b/tests/ui/borrowck/borrow-tuple-fields.stderr similarity index 100% rename from src/test/ui/borrowck/borrow-tuple-fields.stderr rename to tests/ui/borrowck/borrow-tuple-fields.stderr diff --git a/src/test/ui/borrowck/borrowck-access-permissions.rs b/tests/ui/borrowck/borrowck-access-permissions.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-access-permissions.rs rename to tests/ui/borrowck/borrowck-access-permissions.rs diff --git a/src/test/ui/borrowck/borrowck-access-permissions.stderr b/tests/ui/borrowck/borrowck-access-permissions.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-access-permissions.stderr rename to tests/ui/borrowck/borrowck-access-permissions.stderr diff --git a/src/test/ui/borrowck/borrowck-and-init.rs b/tests/ui/borrowck/borrowck-and-init.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-and-init.rs rename to tests/ui/borrowck/borrowck-and-init.rs diff --git a/src/test/ui/borrowck/borrowck-and-init.stderr b/tests/ui/borrowck/borrowck-and-init.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-and-init.stderr rename to tests/ui/borrowck/borrowck-and-init.stderr diff --git a/src/test/ui/borrowck/borrowck-anon-fields-struct.rs b/tests/ui/borrowck/borrowck-anon-fields-struct.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-struct.rs rename to tests/ui/borrowck/borrowck-anon-fields-struct.rs diff --git a/src/test/ui/borrowck/borrowck-anon-fields-struct.stderr b/tests/ui/borrowck/borrowck-anon-fields-struct.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-struct.stderr rename to tests/ui/borrowck/borrowck-anon-fields-struct.stderr diff --git a/src/test/ui/borrowck/borrowck-anon-fields-tuple.rs b/tests/ui/borrowck/borrowck-anon-fields-tuple.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-tuple.rs rename to tests/ui/borrowck/borrowck-anon-fields-tuple.rs diff --git a/src/test/ui/borrowck/borrowck-anon-fields-tuple.stderr b/tests/ui/borrowck/borrowck-anon-fields-tuple.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-tuple.stderr rename to tests/ui/borrowck/borrowck-anon-fields-tuple.stderr diff --git a/src/test/ui/borrowck/borrowck-anon-fields-variant.rs b/tests/ui/borrowck/borrowck-anon-fields-variant.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-variant.rs rename to tests/ui/borrowck/borrowck-anon-fields-variant.rs diff --git a/src/test/ui/borrowck/borrowck-anon-fields-variant.stderr b/tests/ui/borrowck/borrowck-anon-fields-variant.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-anon-fields-variant.stderr rename to tests/ui/borrowck/borrowck-anon-fields-variant.stderr diff --git a/src/test/ui/borrowck/borrowck-argument.rs b/tests/ui/borrowck/borrowck-argument.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-argument.rs rename to tests/ui/borrowck/borrowck-argument.rs diff --git a/src/test/ui/borrowck/borrowck-argument.stderr b/tests/ui/borrowck/borrowck-argument.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-argument.stderr rename to tests/ui/borrowck/borrowck-argument.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-comp-idx.rs b/tests/ui/borrowck/borrowck-assign-comp-idx.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-comp-idx.rs rename to tests/ui/borrowck/borrowck-assign-comp-idx.rs diff --git a/src/test/ui/borrowck/borrowck-assign-comp-idx.stderr b/tests/ui/borrowck/borrowck-assign-comp-idx.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-comp-idx.stderr rename to tests/ui/borrowck/borrowck-assign-comp-idx.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-comp.rs b/tests/ui/borrowck/borrowck-assign-comp.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-comp.rs rename to tests/ui/borrowck/borrowck-assign-comp.rs diff --git a/src/test/ui/borrowck/borrowck-assign-comp.stderr b/tests/ui/borrowck/borrowck-assign-comp.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-comp.stderr rename to tests/ui/borrowck/borrowck-assign-comp.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.rs b/tests/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.rs rename to tests/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.rs diff --git a/src/test/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr b/tests/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr rename to tests/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs b/tests/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs rename to tests/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs diff --git a/src/test/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.stderr b/tests/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.stderr rename to tests/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-to-constants.rs b/tests/ui/borrowck/borrowck-assign-to-constants.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-constants.rs rename to tests/ui/borrowck/borrowck-assign-to-constants.rs diff --git a/src/test/ui/borrowck/borrowck-assign-to-constants.stderr b/tests/ui/borrowck/borrowck-assign-to-constants.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-constants.stderr rename to tests/ui/borrowck/borrowck-assign-to-constants.stderr diff --git a/src/test/ui/borrowck/borrowck-assign-to-subfield.rs b/tests/ui/borrowck/borrowck-assign-to-subfield.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assign-to-subfield.rs rename to tests/ui/borrowck/borrowck-assign-to-subfield.rs diff --git a/src/test/ui/borrowck/borrowck-assignment-to-static-mut.rs b/tests/ui/borrowck/borrowck-assignment-to-static-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-assignment-to-static-mut.rs rename to tests/ui/borrowck/borrowck-assignment-to-static-mut.rs diff --git a/src/test/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.rs b/tests/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.rs rename to tests/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.rs diff --git a/src/test/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.stderr b/tests/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.stderr rename to tests/ui/borrowck/borrowck-auto-mut-ref-to-immut-var.stderr diff --git a/src/test/ui/borrowck/borrowck-autoref-3261.rs b/tests/ui/borrowck/borrowck-autoref-3261.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-autoref-3261.rs rename to tests/ui/borrowck/borrowck-autoref-3261.rs diff --git a/src/test/ui/borrowck/borrowck-autoref-3261.stderr b/tests/ui/borrowck/borrowck-autoref-3261.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-autoref-3261.stderr rename to tests/ui/borrowck/borrowck-autoref-3261.stderr diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-free.rs b/tests/ui/borrowck/borrowck-bad-nested-calls-free.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-bad-nested-calls-free.rs rename to tests/ui/borrowck/borrowck-bad-nested-calls-free.rs diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-free.stderr b/tests/ui/borrowck/borrowck-bad-nested-calls-free.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-bad-nested-calls-free.stderr rename to tests/ui/borrowck/borrowck-bad-nested-calls-free.stderr diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-move.rs b/tests/ui/borrowck/borrowck-bad-nested-calls-move.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-bad-nested-calls-move.rs rename to tests/ui/borrowck/borrowck-bad-nested-calls-move.rs diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-move.stderr b/tests/ui/borrowck/borrowck-bad-nested-calls-move.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-bad-nested-calls-move.stderr rename to tests/ui/borrowck/borrowck-bad-nested-calls-move.stderr diff --git a/src/test/ui/borrowck/borrowck-binding-mutbl.rs b/tests/ui/borrowck/borrowck-binding-mutbl.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-binding-mutbl.rs rename to tests/ui/borrowck/borrowck-binding-mutbl.rs diff --git a/src/test/ui/borrowck/borrowck-block-unint.rs b/tests/ui/borrowck/borrowck-block-unint.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-block-unint.rs rename to tests/ui/borrowck/borrowck-block-unint.rs diff --git a/src/test/ui/borrowck/borrowck-block-unint.stderr b/tests/ui/borrowck/borrowck-block-unint.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-block-unint.stderr rename to tests/ui/borrowck/borrowck-block-unint.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-from-expr-block.rs b/tests/ui/borrowck/borrowck-borrow-from-expr-block.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-expr-block.rs rename to tests/ui/borrowck/borrowck-borrow-from-expr-block.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.rs b/tests/ui/borrowck/borrowck-borrow-from-owned-ptr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.rs rename to tests/ui/borrowck/borrowck-borrow-from-owned-ptr.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.stderr b/tests/ui/borrowck/borrowck-borrow-from-owned-ptr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.stderr rename to tests/ui/borrowck/borrowck-borrow-from-owned-ptr.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.rs b/tests/ui/borrowck/borrowck-borrow-from-stack-variable.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-stack-variable.rs rename to tests/ui/borrowck/borrowck-borrow-from-stack-variable.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.stderr b/tests/ui/borrowck/borrowck-borrow-from-stack-variable.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-stack-variable.stderr rename to tests/ui/borrowck/borrowck-borrow-from-stack-variable.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-from-temporary.rs b/tests/ui/borrowck/borrowck-borrow-from-temporary.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-temporary.rs rename to tests/ui/borrowck/borrowck-borrow-from-temporary.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-from-temporary.stderr b/tests/ui/borrowck/borrowck-borrow-from-temporary.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-from-temporary.stderr rename to tests/ui/borrowck/borrowck-borrow-from-temporary.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.rs b/tests/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.rs rename to tests/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.stderr b/tests/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.stderr rename to tests/ui/borrowck/borrowck-borrow-immut-deref-of-box-as-mut.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs b/tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs rename to tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr b/tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr rename to tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.rs b/tests/ui/borrowck/borrowck-borrow-mut-object-twice.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-mut-object-twice.rs rename to tests/ui/borrowck/borrowck-borrow-mut-object-twice.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.stderr b/tests/ui/borrowck/borrowck-borrow-mut-object-twice.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-mut-object-twice.stderr rename to tests/ui/borrowck/borrowck-borrow-mut-object-twice.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-of-mut-base-ptr-safe.rs b/tests/ui/borrowck/borrowck-borrow-of-mut-base-ptr-safe.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-of-mut-base-ptr-safe.rs rename to tests/ui/borrowck/borrowck-borrow-of-mut-base-ptr-safe.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-overloaded-auto-deref.rs b/tests/ui/borrowck/borrowck-borrow-overloaded-auto-deref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-overloaded-auto-deref.rs rename to tests/ui/borrowck/borrowck-borrow-overloaded-auto-deref.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-overloaded-auto-deref.stderr b/tests/ui/borrowck/borrowck-borrow-overloaded-auto-deref.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-overloaded-auto-deref.stderr rename to tests/ui/borrowck/borrowck-borrow-overloaded-auto-deref.stderr diff --git a/src/test/ui/borrowck/borrowck-borrow-overloaded-deref.rs b/tests/ui/borrowck/borrowck-borrow-overloaded-deref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-overloaded-deref.rs rename to tests/ui/borrowck/borrowck-borrow-overloaded-deref.rs diff --git a/src/test/ui/borrowck/borrowck-borrow-overloaded-deref.stderr b/tests/ui/borrowck/borrowck-borrow-overloaded-deref.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrow-overloaded-deref.stderr rename to tests/ui/borrowck/borrowck-borrow-overloaded-deref.stderr diff --git a/src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs b/tests/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs rename to tests/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.rs diff --git a/src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.stderr b/tests/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.stderr rename to tests/ui/borrowck/borrowck-borrowed-uniq-rvalue-2.stderr diff --git a/src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed b/tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed similarity index 100% rename from src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed rename to tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.fixed diff --git a/src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.rs b/tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.rs rename to tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.rs diff --git a/src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.stderr b/tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-borrowed-uniq-rvalue.stderr rename to tests/ui/borrowck/borrowck-borrowed-uniq-rvalue.stderr diff --git a/src/test/ui/borrowck/borrowck-box-sensitivity.rs b/tests/ui/borrowck/borrowck-box-sensitivity.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-box-sensitivity.rs rename to tests/ui/borrowck/borrowck-box-sensitivity.rs diff --git a/src/test/ui/borrowck/borrowck-break-uninit-2.rs b/tests/ui/borrowck/borrowck-break-uninit-2.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-break-uninit-2.rs rename to tests/ui/borrowck/borrowck-break-uninit-2.rs diff --git a/src/test/ui/borrowck/borrowck-break-uninit-2.stderr b/tests/ui/borrowck/borrowck-break-uninit-2.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-break-uninit-2.stderr rename to tests/ui/borrowck/borrowck-break-uninit-2.stderr diff --git a/src/test/ui/borrowck/borrowck-break-uninit.rs b/tests/ui/borrowck/borrowck-break-uninit.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-break-uninit.rs rename to tests/ui/borrowck/borrowck-break-uninit.rs diff --git a/src/test/ui/borrowck/borrowck-break-uninit.stderr b/tests/ui/borrowck/borrowck-break-uninit.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-break-uninit.stderr rename to tests/ui/borrowck/borrowck-break-uninit.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.rs b/tests/ui/borrowck/borrowck-closures-mut-and-imm.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-and-imm.rs rename to tests/ui/borrowck/borrowck-closures-mut-and-imm.rs diff --git a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.stderr b/tests/ui/borrowck/borrowck-closures-mut-and-imm.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-and-imm.stderr rename to tests/ui/borrowck/borrowck-closures-mut-and-imm.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-mut-of-imm.rs b/tests/ui/borrowck/borrowck-closures-mut-of-imm.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-of-imm.rs rename to tests/ui/borrowck/borrowck-closures-mut-of-imm.rs diff --git a/src/test/ui/borrowck/borrowck-closures-mut-of-imm.stderr b/tests/ui/borrowck/borrowck-closures-mut-of-imm.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-of-imm.stderr rename to tests/ui/borrowck/borrowck-closures-mut-of-imm.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-mut-of-mut.rs b/tests/ui/borrowck/borrowck-closures-mut-of-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-of-mut.rs rename to tests/ui/borrowck/borrowck-closures-mut-of-mut.rs diff --git a/src/test/ui/borrowck/borrowck-closures-mut-of-mut.stderr b/tests/ui/borrowck/borrowck-closures-mut-of-mut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-mut-of-mut.stderr rename to tests/ui/borrowck/borrowck-closures-mut-of-mut.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-slice-patterns-ok.rs b/tests/ui/borrowck/borrowck-closures-slice-patterns-ok.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-slice-patterns-ok.rs rename to tests/ui/borrowck/borrowck-closures-slice-patterns-ok.rs diff --git a/src/test/ui/borrowck/borrowck-closures-slice-patterns.rs b/tests/ui/borrowck/borrowck-closures-slice-patterns.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-slice-patterns.rs rename to tests/ui/borrowck/borrowck-closures-slice-patterns.rs diff --git a/src/test/ui/borrowck/borrowck-closures-slice-patterns.stderr b/tests/ui/borrowck/borrowck-closures-slice-patterns.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-slice-patterns.stderr rename to tests/ui/borrowck/borrowck-closures-slice-patterns.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-two-imm.rs b/tests/ui/borrowck/borrowck-closures-two-imm.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-two-imm.rs rename to tests/ui/borrowck/borrowck-closures-two-imm.rs diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut-fail.rs b/tests/ui/borrowck/borrowck-closures-two-mut-fail.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-two-mut-fail.rs rename to tests/ui/borrowck/borrowck-closures-two-mut-fail.rs diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut-fail.stderr b/tests/ui/borrowck/borrowck-closures-two-mut-fail.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-two-mut-fail.stderr rename to tests/ui/borrowck/borrowck-closures-two-mut-fail.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut.rs b/tests/ui/borrowck/borrowck-closures-two-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-two-mut.rs rename to tests/ui/borrowck/borrowck-closures-two-mut.rs diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut.stderr b/tests/ui/borrowck/borrowck-closures-two-mut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-two-mut.stderr rename to tests/ui/borrowck/borrowck-closures-two-mut.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-unique-imm.rs b/tests/ui/borrowck/borrowck-closures-unique-imm.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-unique-imm.rs rename to tests/ui/borrowck/borrowck-closures-unique-imm.rs diff --git a/src/test/ui/borrowck/borrowck-closures-unique-imm.stderr b/tests/ui/borrowck/borrowck-closures-unique-imm.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-unique-imm.stderr rename to tests/ui/borrowck/borrowck-closures-unique-imm.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-unique.rs b/tests/ui/borrowck/borrowck-closures-unique.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-unique.rs rename to tests/ui/borrowck/borrowck-closures-unique.rs diff --git a/src/test/ui/borrowck/borrowck-closures-unique.stderr b/tests/ui/borrowck/borrowck-closures-unique.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-unique.stderr rename to tests/ui/borrowck/borrowck-closures-unique.stderr diff --git a/src/test/ui/borrowck/borrowck-closures-use-after-free.rs b/tests/ui/borrowck/borrowck-closures-use-after-free.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-use-after-free.rs rename to tests/ui/borrowck/borrowck-closures-use-after-free.rs diff --git a/src/test/ui/borrowck/borrowck-closures-use-after-free.stderr b/tests/ui/borrowck/borrowck-closures-use-after-free.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-closures-use-after-free.stderr rename to tests/ui/borrowck/borrowck-closures-use-after-free.stderr diff --git a/src/test/ui/borrowck/borrowck-consume-unsize-vec.rs b/tests/ui/borrowck/borrowck-consume-unsize-vec.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-consume-unsize-vec.rs rename to tests/ui/borrowck/borrowck-consume-unsize-vec.rs diff --git a/src/test/ui/borrowck/borrowck-consume-unsize-vec.stderr b/tests/ui/borrowck/borrowck-consume-unsize-vec.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-consume-unsize-vec.stderr rename to tests/ui/borrowck/borrowck-consume-unsize-vec.stderr diff --git a/src/test/ui/borrowck/borrowck-consume-upcast-box.rs b/tests/ui/borrowck/borrowck-consume-upcast-box.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-consume-upcast-box.rs rename to tests/ui/borrowck/borrowck-consume-upcast-box.rs diff --git a/src/test/ui/borrowck/borrowck-consume-upcast-box.stderr b/tests/ui/borrowck/borrowck-consume-upcast-box.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-consume-upcast-box.stderr rename to tests/ui/borrowck/borrowck-consume-upcast-box.stderr diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.rs b/tests/ui/borrowck/borrowck-describe-lvalue.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-describe-lvalue.rs rename to tests/ui/borrowck/borrowck-describe-lvalue.rs diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.stderr b/tests/ui/borrowck/borrowck-describe-lvalue.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-describe-lvalue.stderr rename to tests/ui/borrowck/borrowck-describe-lvalue.stderr diff --git a/src/test/ui/borrowck/borrowck-drop-from-guard.rs b/tests/ui/borrowck/borrowck-drop-from-guard.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-drop-from-guard.rs rename to tests/ui/borrowck/borrowck-drop-from-guard.rs diff --git a/src/test/ui/borrowck/borrowck-drop-from-guard.stderr b/tests/ui/borrowck/borrowck-drop-from-guard.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-drop-from-guard.stderr rename to tests/ui/borrowck/borrowck-drop-from-guard.stderr diff --git a/src/test/ui/borrowck/borrowck-escaping-closure-error-1.rs b/tests/ui/borrowck/borrowck-escaping-closure-error-1.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-escaping-closure-error-1.rs rename to tests/ui/borrowck/borrowck-escaping-closure-error-1.rs diff --git a/src/test/ui/borrowck/borrowck-escaping-closure-error-1.stderr b/tests/ui/borrowck/borrowck-escaping-closure-error-1.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-escaping-closure-error-1.stderr rename to tests/ui/borrowck/borrowck-escaping-closure-error-1.stderr diff --git a/src/test/ui/borrowck/borrowck-escaping-closure-error-2.rs b/tests/ui/borrowck/borrowck-escaping-closure-error-2.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-escaping-closure-error-2.rs rename to tests/ui/borrowck/borrowck-escaping-closure-error-2.rs diff --git a/src/test/ui/borrowck/borrowck-escaping-closure-error-2.stderr b/tests/ui/borrowck/borrowck-escaping-closure-error-2.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-escaping-closure-error-2.stderr rename to tests/ui/borrowck/borrowck-escaping-closure-error-2.stderr diff --git a/src/test/ui/borrowck/borrowck-field-sensitivity-rpass.rs b/tests/ui/borrowck/borrowck-field-sensitivity-rpass.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-field-sensitivity-rpass.rs rename to tests/ui/borrowck/borrowck-field-sensitivity-rpass.rs diff --git a/src/test/ui/borrowck/borrowck-field-sensitivity.rs b/tests/ui/borrowck/borrowck-field-sensitivity.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-field-sensitivity.rs rename to tests/ui/borrowck/borrowck-field-sensitivity.rs diff --git a/src/test/ui/borrowck/borrowck-field-sensitivity.stderr b/tests/ui/borrowck/borrowck-field-sensitivity.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-field-sensitivity.stderr rename to tests/ui/borrowck/borrowck-field-sensitivity.stderr diff --git a/src/test/ui/borrowck/borrowck-fixed-length-vecs.rs b/tests/ui/borrowck/borrowck-fixed-length-vecs.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-fixed-length-vecs.rs rename to tests/ui/borrowck/borrowck-fixed-length-vecs.rs diff --git a/src/test/ui/borrowck/borrowck-fn-in-const-a.rs b/tests/ui/borrowck/borrowck-fn-in-const-a.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-fn-in-const-a.rs rename to tests/ui/borrowck/borrowck-fn-in-const-a.rs diff --git a/src/test/ui/borrowck/borrowck-fn-in-const-a.stderr b/tests/ui/borrowck/borrowck-fn-in-const-a.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-fn-in-const-a.stderr rename to tests/ui/borrowck/borrowck-fn-in-const-a.stderr diff --git a/src/test/ui/borrowck/borrowck-fn-in-const-c.rs b/tests/ui/borrowck/borrowck-fn-in-const-c.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-fn-in-const-c.rs rename to tests/ui/borrowck/borrowck-fn-in-const-c.rs diff --git a/src/test/ui/borrowck/borrowck-fn-in-const-c.stderr b/tests/ui/borrowck/borrowck-fn-in-const-c.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-fn-in-const-c.stderr rename to tests/ui/borrowck/borrowck-fn-in-const-c.stderr diff --git a/src/test/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.rs b/tests/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.rs rename to tests/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.rs diff --git a/src/test/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.stderr b/tests/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.stderr rename to tests/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.stderr diff --git a/src/test/ui/borrowck/borrowck-for-loop-head-linkage.rs b/tests/ui/borrowck/borrowck-for-loop-head-linkage.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-head-linkage.rs rename to tests/ui/borrowck/borrowck-for-loop-head-linkage.rs diff --git a/src/test/ui/borrowck/borrowck-for-loop-head-linkage.stderr b/tests/ui/borrowck/borrowck-for-loop-head-linkage.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-head-linkage.stderr rename to tests/ui/borrowck/borrowck-for-loop-head-linkage.stderr diff --git a/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs b/tests/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs rename to tests/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs diff --git a/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr b/tests/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr rename to tests/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr diff --git a/src/test/ui/borrowck/borrowck-freeze-frozen-mut.rs b/tests/ui/borrowck/borrowck-freeze-frozen-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-freeze-frozen-mut.rs rename to tests/ui/borrowck/borrowck-freeze-frozen-mut.rs diff --git a/src/test/ui/borrowck/borrowck-if-no-else.rs b/tests/ui/borrowck/borrowck-if-no-else.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-if-no-else.rs rename to tests/ui/borrowck/borrowck-if-no-else.rs diff --git a/src/test/ui/borrowck/borrowck-if-no-else.stderr b/tests/ui/borrowck/borrowck-if-no-else.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-if-no-else.stderr rename to tests/ui/borrowck/borrowck-if-no-else.stderr diff --git a/src/test/ui/borrowck/borrowck-if-with-else.rs b/tests/ui/borrowck/borrowck-if-with-else.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-if-with-else.rs rename to tests/ui/borrowck/borrowck-if-with-else.rs diff --git a/src/test/ui/borrowck/borrowck-if-with-else.stderr b/tests/ui/borrowck/borrowck-if-with-else.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-if-with-else.stderr rename to tests/ui/borrowck/borrowck-if-with-else.stderr diff --git a/src/test/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs b/tests/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs rename to tests/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs diff --git a/src/test/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.stderr b/tests/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.stderr rename to tests/ui/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.stderr diff --git a/src/test/ui/borrowck/borrowck-in-static.rs b/tests/ui/borrowck/borrowck-in-static.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-in-static.rs rename to tests/ui/borrowck/borrowck-in-static.rs diff --git a/src/test/ui/borrowck/borrowck-in-static.stderr b/tests/ui/borrowck/borrowck-in-static.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-in-static.stderr rename to tests/ui/borrowck/borrowck-in-static.stderr diff --git a/src/test/ui/borrowck/borrowck-init-in-called-fn-expr.rs b/tests/ui/borrowck/borrowck-init-in-called-fn-expr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-called-fn-expr.rs rename to tests/ui/borrowck/borrowck-init-in-called-fn-expr.rs diff --git a/src/test/ui/borrowck/borrowck-init-in-called-fn-expr.stderr b/tests/ui/borrowck/borrowck-init-in-called-fn-expr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-called-fn-expr.stderr rename to tests/ui/borrowck/borrowck-init-in-called-fn-expr.stderr diff --git a/src/test/ui/borrowck/borrowck-init-in-fn-expr.rs b/tests/ui/borrowck/borrowck-init-in-fn-expr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-fn-expr.rs rename to tests/ui/borrowck/borrowck-init-in-fn-expr.rs diff --git a/src/test/ui/borrowck/borrowck-init-in-fn-expr.stderr b/tests/ui/borrowck/borrowck-init-in-fn-expr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-fn-expr.stderr rename to tests/ui/borrowck/borrowck-init-in-fn-expr.stderr diff --git a/src/test/ui/borrowck/borrowck-init-in-fru.rs b/tests/ui/borrowck/borrowck-init-in-fru.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-fru.rs rename to tests/ui/borrowck/borrowck-init-in-fru.rs diff --git a/src/test/ui/borrowck/borrowck-init-in-fru.stderr b/tests/ui/borrowck/borrowck-init-in-fru.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-init-in-fru.stderr rename to tests/ui/borrowck/borrowck-init-in-fru.stderr diff --git a/src/test/ui/borrowck/borrowck-init-op-equal.rs b/tests/ui/borrowck/borrowck-init-op-equal.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-init-op-equal.rs rename to tests/ui/borrowck/borrowck-init-op-equal.rs diff --git a/src/test/ui/borrowck/borrowck-init-op-equal.stderr b/tests/ui/borrowck/borrowck-init-op-equal.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-init-op-equal.stderr rename to tests/ui/borrowck/borrowck-init-op-equal.stderr diff --git a/src/test/ui/borrowck/borrowck-init-plus-equal.rs b/tests/ui/borrowck/borrowck-init-plus-equal.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-init-plus-equal.rs rename to tests/ui/borrowck/borrowck-init-plus-equal.rs diff --git a/src/test/ui/borrowck/borrowck-init-plus-equal.stderr b/tests/ui/borrowck/borrowck-init-plus-equal.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-init-plus-equal.stderr rename to tests/ui/borrowck/borrowck-init-plus-equal.stderr diff --git a/src/test/ui/borrowck/borrowck-insert-during-each.rs b/tests/ui/borrowck/borrowck-insert-during-each.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-insert-during-each.rs rename to tests/ui/borrowck/borrowck-insert-during-each.rs diff --git a/src/test/ui/borrowck/borrowck-insert-during-each.stderr b/tests/ui/borrowck/borrowck-insert-during-each.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-insert-during-each.stderr rename to tests/ui/borrowck/borrowck-insert-during-each.stderr diff --git a/src/test/ui/borrowck/borrowck-issue-14498.rs b/tests/ui/borrowck/borrowck-issue-14498.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-14498.rs rename to tests/ui/borrowck/borrowck-issue-14498.rs diff --git a/src/test/ui/borrowck/borrowck-issue-14498.stderr b/tests/ui/borrowck/borrowck-issue-14498.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-14498.stderr rename to tests/ui/borrowck/borrowck-issue-14498.stderr diff --git a/src/test/ui/borrowck/borrowck-issue-2657-1.rs b/tests/ui/borrowck/borrowck-issue-2657-1.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-2657-1.rs rename to tests/ui/borrowck/borrowck-issue-2657-1.rs diff --git a/src/test/ui/borrowck/borrowck-issue-2657-1.stderr b/tests/ui/borrowck/borrowck-issue-2657-1.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-2657-1.stderr rename to tests/ui/borrowck/borrowck-issue-2657-1.stderr diff --git a/src/test/ui/borrowck/borrowck-issue-2657-2.fixed b/tests/ui/borrowck/borrowck-issue-2657-2.fixed similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-2657-2.fixed rename to tests/ui/borrowck/borrowck-issue-2657-2.fixed diff --git a/src/test/ui/borrowck/borrowck-issue-2657-2.rs b/tests/ui/borrowck/borrowck-issue-2657-2.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-2657-2.rs rename to tests/ui/borrowck/borrowck-issue-2657-2.rs diff --git a/src/test/ui/borrowck/borrowck-issue-2657-2.stderr b/tests/ui/borrowck/borrowck-issue-2657-2.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-2657-2.stderr rename to tests/ui/borrowck/borrowck-issue-2657-2.stderr diff --git a/src/test/ui/borrowck/borrowck-issue-48962.rs b/tests/ui/borrowck/borrowck-issue-48962.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-48962.rs rename to tests/ui/borrowck/borrowck-issue-48962.rs diff --git a/src/test/ui/borrowck/borrowck-issue-48962.stderr b/tests/ui/borrowck/borrowck-issue-48962.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-issue-48962.stderr rename to tests/ui/borrowck/borrowck-issue-48962.stderr diff --git a/src/test/ui/borrowck/borrowck-lend-args.rs b/tests/ui/borrowck/borrowck-lend-args.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-args.rs rename to tests/ui/borrowck/borrowck-lend-args.rs diff --git a/src/test/ui/borrowck/borrowck-lend-flow-if.rs b/tests/ui/borrowck/borrowck-lend-flow-if.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-if.rs rename to tests/ui/borrowck/borrowck-lend-flow-if.rs diff --git a/src/test/ui/borrowck/borrowck-lend-flow-if.stderr b/tests/ui/borrowck/borrowck-lend-flow-if.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-if.stderr rename to tests/ui/borrowck/borrowck-lend-flow-if.stderr diff --git a/src/test/ui/borrowck/borrowck-lend-flow-loop.rs b/tests/ui/borrowck/borrowck-lend-flow-loop.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-loop.rs rename to tests/ui/borrowck/borrowck-lend-flow-loop.rs diff --git a/src/test/ui/borrowck/borrowck-lend-flow-loop.stderr b/tests/ui/borrowck/borrowck-lend-flow-loop.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-loop.stderr rename to tests/ui/borrowck/borrowck-lend-flow-loop.stderr diff --git a/src/test/ui/borrowck/borrowck-lend-flow-match.rs b/tests/ui/borrowck/borrowck-lend-flow-match.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-match.rs rename to tests/ui/borrowck/borrowck-lend-flow-match.rs diff --git a/src/test/ui/borrowck/borrowck-lend-flow-match.stderr b/tests/ui/borrowck/borrowck-lend-flow-match.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow-match.stderr rename to tests/ui/borrowck/borrowck-lend-flow-match.stderr diff --git a/src/test/ui/borrowck/borrowck-lend-flow.rs b/tests/ui/borrowck/borrowck-lend-flow.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow.rs rename to tests/ui/borrowck/borrowck-lend-flow.rs diff --git a/src/test/ui/borrowck/borrowck-lend-flow.stderr b/tests/ui/borrowck/borrowck-lend-flow.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-lend-flow.stderr rename to tests/ui/borrowck/borrowck-lend-flow.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-move-cc.rs b/tests/ui/borrowck/borrowck-loan-blocks-move-cc.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-move-cc.rs rename to tests/ui/borrowck/borrowck-loan-blocks-move-cc.rs diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-move-cc.stderr b/tests/ui/borrowck/borrowck-loan-blocks-move-cc.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-move-cc.stderr rename to tests/ui/borrowck/borrowck-loan-blocks-move-cc.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-move.rs b/tests/ui/borrowck/borrowck-loan-blocks-move.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-move.rs rename to tests/ui/borrowck/borrowck-loan-blocks-move.rs diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-move.stderr b/tests/ui/borrowck/borrowck-loan-blocks-move.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-move.stderr rename to tests/ui/borrowck/borrowck-loan-blocks-move.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.rs b/tests/ui/borrowck/borrowck-loan-blocks-mut-uniq.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.rs rename to tests/ui/borrowck/borrowck-loan-blocks-mut-uniq.rs diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.stderr b/tests/ui/borrowck/borrowck-loan-blocks-mut-uniq.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.stderr rename to tests/ui/borrowck/borrowck-loan-blocks-mut-uniq.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-in-overloaded-op.rs b/tests/ui/borrowck/borrowck-loan-in-overloaded-op.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-in-overloaded-op.rs rename to tests/ui/borrowck/borrowck-loan-in-overloaded-op.rs diff --git a/src/test/ui/borrowck/borrowck-loan-in-overloaded-op.stderr b/tests/ui/borrowck/borrowck-loan-in-overloaded-op.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-in-overloaded-op.stderr rename to tests/ui/borrowck/borrowck-loan-in-overloaded-op.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-of-static-data-issue-27616.rs b/tests/ui/borrowck/borrowck-loan-of-static-data-issue-27616.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-of-static-data-issue-27616.rs rename to tests/ui/borrowck/borrowck-loan-of-static-data-issue-27616.rs diff --git a/src/test/ui/borrowck/borrowck-loan-of-static-data-issue-27616.stderr b/tests/ui/borrowck/borrowck-loan-of-static-data-issue-27616.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-of-static-data-issue-27616.stderr rename to tests/ui/borrowck/borrowck-loan-of-static-data-issue-27616.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs b/tests/ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs rename to tests/ui/borrowck/borrowck-loan-rcvr-overloaded-op.rs diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.stderr b/tests/ui/borrowck/borrowck-loan-rcvr-overloaded-op.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.stderr rename to tests/ui/borrowck/borrowck-loan-rcvr-overloaded-op.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr.rs b/tests/ui/borrowck/borrowck-loan-rcvr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-rcvr.rs rename to tests/ui/borrowck/borrowck-loan-rcvr.rs diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr.stderr b/tests/ui/borrowck/borrowck-loan-rcvr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-rcvr.stderr rename to tests/ui/borrowck/borrowck-loan-rcvr.stderr diff --git a/src/test/ui/borrowck/borrowck-loan-vec-content.rs b/tests/ui/borrowck/borrowck-loan-vec-content.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-vec-content.rs rename to tests/ui/borrowck/borrowck-loan-vec-content.rs diff --git a/src/test/ui/borrowck/borrowck-loan-vec-content.stderr b/tests/ui/borrowck/borrowck-loan-vec-content.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-loan-vec-content.stderr rename to tests/ui/borrowck/borrowck-loan-vec-content.stderr diff --git a/src/test/ui/borrowck/borrowck-local-borrow-outlives-fn.rs b/tests/ui/borrowck/borrowck-local-borrow-outlives-fn.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-local-borrow-outlives-fn.rs rename to tests/ui/borrowck/borrowck-local-borrow-outlives-fn.rs diff --git a/src/test/ui/borrowck/borrowck-local-borrow-outlives-fn.stderr b/tests/ui/borrowck/borrowck-local-borrow-outlives-fn.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-local-borrow-outlives-fn.stderr rename to tests/ui/borrowck/borrowck-local-borrow-outlives-fn.stderr diff --git a/src/test/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.rs b/tests/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.rs rename to tests/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.rs diff --git a/src/test/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.stderr b/tests/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.stderr rename to tests/ui/borrowck/borrowck-local-borrow-with-panic-outlives-fn.stderr diff --git a/src/test/ui/borrowck/borrowck-local-borrow.rs b/tests/ui/borrowck/borrowck-local-borrow.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-local-borrow.rs rename to tests/ui/borrowck/borrowck-local-borrow.rs diff --git a/src/test/ui/borrowck/borrowck-macro-interaction-issue-6304.rs b/tests/ui/borrowck/borrowck-macro-interaction-issue-6304.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-macro-interaction-issue-6304.rs rename to tests/ui/borrowck/borrowck-macro-interaction-issue-6304.rs diff --git a/src/test/ui/borrowck/borrowck-match-already-borrowed.rs b/tests/ui/borrowck/borrowck-match-already-borrowed.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-match-already-borrowed.rs rename to tests/ui/borrowck/borrowck-match-already-borrowed.rs diff --git a/src/test/ui/borrowck/borrowck-match-already-borrowed.stderr b/tests/ui/borrowck/borrowck-match-already-borrowed.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-match-already-borrowed.stderr rename to tests/ui/borrowck/borrowck-match-already-borrowed.stderr diff --git a/src/test/ui/borrowck/borrowck-match-binding-is-assignment.rs b/tests/ui/borrowck/borrowck-match-binding-is-assignment.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-match-binding-is-assignment.rs rename to tests/ui/borrowck/borrowck-match-binding-is-assignment.rs diff --git a/src/test/ui/borrowck/borrowck-match-binding-is-assignment.stderr b/tests/ui/borrowck/borrowck-match-binding-is-assignment.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-match-binding-is-assignment.stderr rename to tests/ui/borrowck/borrowck-match-binding-is-assignment.stderr diff --git a/src/test/ui/borrowck/borrowck-move-by-capture-ok.rs b/tests/ui/borrowck/borrowck-move-by-capture-ok.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-by-capture-ok.rs rename to tests/ui/borrowck/borrowck-move-by-capture-ok.rs diff --git a/src/test/ui/borrowck/borrowck-move-by-capture.rs b/tests/ui/borrowck/borrowck-move-by-capture.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-by-capture.rs rename to tests/ui/borrowck/borrowck-move-by-capture.rs diff --git a/src/test/ui/borrowck/borrowck-move-by-capture.stderr b/tests/ui/borrowck/borrowck-move-by-capture.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-by-capture.stderr rename to tests/ui/borrowck/borrowck-move-by-capture.stderr diff --git a/src/test/ui/borrowck/borrowck-move-error-with-note.fixed b/tests/ui/borrowck/borrowck-move-error-with-note.fixed similarity index 100% rename from src/test/ui/borrowck/borrowck-move-error-with-note.fixed rename to tests/ui/borrowck/borrowck-move-error-with-note.fixed diff --git a/src/test/ui/borrowck/borrowck-move-error-with-note.rs b/tests/ui/borrowck/borrowck-move-error-with-note.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-error-with-note.rs rename to tests/ui/borrowck/borrowck-move-error-with-note.rs diff --git a/src/test/ui/borrowck/borrowck-move-error-with-note.stderr b/tests/ui/borrowck/borrowck-move-error-with-note.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-error-with-note.stderr rename to tests/ui/borrowck/borrowck-move-error-with-note.stderr diff --git a/src/test/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.rs b/tests/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.rs rename to tests/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.rs diff --git a/src/test/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.stderr b/tests/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.stderr rename to tests/ui/borrowck/borrowck-move-from-subpath-of-borrowed-path.stderr diff --git a/src/test/ui/borrowck/borrowck-move-from-unsafe-ptr.rs b/tests/ui/borrowck/borrowck-move-from-unsafe-ptr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-from-unsafe-ptr.rs rename to tests/ui/borrowck/borrowck-move-from-unsafe-ptr.rs diff --git a/src/test/ui/borrowck/borrowck-move-from-unsafe-ptr.stderr b/tests/ui/borrowck/borrowck-move-from-unsafe-ptr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-from-unsafe-ptr.stderr rename to tests/ui/borrowck/borrowck-move-from-unsafe-ptr.stderr diff --git a/src/test/ui/borrowck/borrowck-move-in-irrefut-pat.rs b/tests/ui/borrowck/borrowck-move-in-irrefut-pat.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-in-irrefut-pat.rs rename to tests/ui/borrowck/borrowck-move-in-irrefut-pat.rs diff --git a/src/test/ui/borrowck/borrowck-move-in-irrefut-pat.stderr b/tests/ui/borrowck/borrowck-move-in-irrefut-pat.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-in-irrefut-pat.stderr rename to tests/ui/borrowck/borrowck-move-in-irrefut-pat.stderr diff --git a/src/test/ui/borrowck/borrowck-move-moved-value-into-closure.rs b/tests/ui/borrowck/borrowck-move-moved-value-into-closure.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-moved-value-into-closure.rs rename to tests/ui/borrowck/borrowck-move-moved-value-into-closure.rs diff --git a/src/test/ui/borrowck/borrowck-move-moved-value-into-closure.stderr b/tests/ui/borrowck/borrowck-move-moved-value-into-closure.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-moved-value-into-closure.stderr rename to tests/ui/borrowck/borrowck-move-moved-value-into-closure.stderr diff --git a/src/test/ui/borrowck/borrowck-move-mut-base-ptr.rs b/tests/ui/borrowck/borrowck-move-mut-base-ptr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-mut-base-ptr.rs rename to tests/ui/borrowck/borrowck-move-mut-base-ptr.rs diff --git a/src/test/ui/borrowck/borrowck-move-mut-base-ptr.stderr b/tests/ui/borrowck/borrowck-move-mut-base-ptr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-mut-base-ptr.stderr rename to tests/ui/borrowck/borrowck-move-mut-base-ptr.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-match.rs b/tests/ui/borrowck/borrowck-move-out-from-array-match.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-match.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-match.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-match.stderr b/tests/ui/borrowck/borrowck-move-out-from-array-match.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-match.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array-match.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.rs b/tests/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.stderr b/tests/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array-no-overlap-match.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap.rs b/tests/ui/borrowck/borrowck-move-out-from-array-no-overlap.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-no-overlap.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-no-overlap.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use-match.rs b/tests/ui/borrowck/borrowck-move-out-from-array-use-match.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use-match.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-use-match.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use-match.stderr b/tests/ui/borrowck/borrowck-move-out-from-array-use-match.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use-match.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array-use-match.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.rs b/tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.stderr b/tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap-match.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap.rs b/tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use-no-overlap.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-use-no-overlap.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use.rs b/tests/ui/borrowck/borrowck-move-out-from-array-use.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use.rs rename to tests/ui/borrowck/borrowck-move-out-from-array-use.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array-use.stderr b/tests/ui/borrowck/borrowck-move-out-from-array-use.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array-use.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array-use.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array.rs b/tests/ui/borrowck/borrowck-move-out-from-array.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array.rs rename to tests/ui/borrowck/borrowck-move-out-from-array.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-from-array.stderr b/tests/ui/borrowck/borrowck-move-out-from-array.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-from-array.stderr rename to tests/ui/borrowck/borrowck-move-out-from-array.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.rs b/tests/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.rs rename to tests/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.stderr b/tests/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.stderr rename to tests/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-overloaded-deref.rs b/tests/ui/borrowck/borrowck-move-out-of-overloaded-deref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-overloaded-deref.rs rename to tests/ui/borrowck/borrowck-move-out-of-overloaded-deref.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-overloaded-deref.stderr b/tests/ui/borrowck/borrowck-move-out-of-overloaded-deref.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-overloaded-deref.stderr rename to tests/ui/borrowck/borrowck-move-out-of-overloaded-deref.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-static-item.rs b/tests/ui/borrowck/borrowck-move-out-of-static-item.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-static-item.rs rename to tests/ui/borrowck/borrowck-move-out-of-static-item.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-static-item.stderr b/tests/ui/borrowck/borrowck-move-out-of-static-item.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-static-item.stderr rename to tests/ui/borrowck/borrowck-move-out-of-static-item.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.fixed b/tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.fixed similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.fixed rename to tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.fixed diff --git a/src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.rs b/tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.rs rename to tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.stderr b/tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-struct-with-dtor.stderr rename to tests/ui/borrowck/borrowck-move-out-of-struct-with-dtor.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.fixed b/tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.fixed similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.fixed rename to tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.fixed diff --git a/src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.rs b/tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.rs rename to tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.stderr b/tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.stderr rename to tests/ui/borrowck/borrowck-move-out-of-tuple-struct-with-dtor.stderr diff --git a/src/test/ui/borrowck/borrowck-move-out-of-vec-tail.rs b/tests/ui/borrowck/borrowck-move-out-of-vec-tail.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-vec-tail.rs rename to tests/ui/borrowck/borrowck-move-out-of-vec-tail.rs diff --git a/src/test/ui/borrowck/borrowck-move-out-of-vec-tail.stderr b/tests/ui/borrowck/borrowck-move-out-of-vec-tail.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-out-of-vec-tail.stderr rename to tests/ui/borrowck/borrowck-move-out-of-vec-tail.stderr diff --git a/src/test/ui/borrowck/borrowck-move-subcomponent.rs b/tests/ui/borrowck/borrowck-move-subcomponent.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-move-subcomponent.rs rename to tests/ui/borrowck/borrowck-move-subcomponent.rs diff --git a/src/test/ui/borrowck/borrowck-move-subcomponent.stderr b/tests/ui/borrowck/borrowck-move-subcomponent.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-move-subcomponent.stderr rename to tests/ui/borrowck/borrowck-move-subcomponent.stderr diff --git a/src/test/ui/borrowck/borrowck-multiple-borrows-interior-boxes.rs b/tests/ui/borrowck/borrowck-multiple-borrows-interior-boxes.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-multiple-borrows-interior-boxes.rs rename to tests/ui/borrowck/borrowck-multiple-borrows-interior-boxes.rs diff --git a/src/test/ui/borrowck/borrowck-multiple-captures.rs b/tests/ui/borrowck/borrowck-multiple-captures.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-multiple-captures.rs rename to tests/ui/borrowck/borrowck-multiple-captures.rs diff --git a/src/test/ui/borrowck/borrowck-multiple-captures.stderr b/tests/ui/borrowck/borrowck-multiple-captures.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-multiple-captures.stderr rename to tests/ui/borrowck/borrowck-multiple-captures.stderr diff --git a/src/test/ui/borrowck/borrowck-mut-addr-of-imm-var.rs b/tests/ui/borrowck/borrowck-mut-addr-of-imm-var.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-addr-of-imm-var.rs rename to tests/ui/borrowck/borrowck-mut-addr-of-imm-var.rs diff --git a/src/test/ui/borrowck/borrowck-mut-addr-of-imm-var.stderr b/tests/ui/borrowck/borrowck-mut-addr-of-imm-var.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-addr-of-imm-var.stderr rename to tests/ui/borrowck/borrowck-mut-addr-of-imm-var.stderr diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.rs b/tests/ui/borrowck/borrowck-mut-borrow-linear-errors.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.rs rename to tests/ui/borrowck/borrowck-mut-borrow-linear-errors.rs diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.stderr b/tests/ui/borrowck/borrowck-mut-borrow-linear-errors.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.stderr rename to tests/ui/borrowck/borrowck-mut-borrow-linear-errors.stderr diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs b/tests/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs rename to tests/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.rs diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.stderr b/tests/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.stderr rename to tests/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.stderr diff --git a/src/test/ui/borrowck/borrowck-mut-slice-of-imm-vec.rs b/tests/ui/borrowck/borrowck-mut-slice-of-imm-vec.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-slice-of-imm-vec.rs rename to tests/ui/borrowck/borrowck-mut-slice-of-imm-vec.rs diff --git a/src/test/ui/borrowck/borrowck-mut-slice-of-imm-vec.stderr b/tests/ui/borrowck/borrowck-mut-slice-of-imm-vec.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-slice-of-imm-vec.stderr rename to tests/ui/borrowck/borrowck-mut-slice-of-imm-vec.stderr diff --git a/src/test/ui/borrowck/borrowck-mut-uniq.rs b/tests/ui/borrowck/borrowck-mut-uniq.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-uniq.rs rename to tests/ui/borrowck/borrowck-mut-uniq.rs diff --git a/src/test/ui/borrowck/borrowck-mut-vec-as-imm-slice.rs b/tests/ui/borrowck/borrowck-mut-vec-as-imm-slice.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mut-vec-as-imm-slice.rs rename to tests/ui/borrowck/borrowck-mut-vec-as-imm-slice.rs diff --git a/src/test/ui/borrowck/borrowck-mutate-in-guard.rs b/tests/ui/borrowck/borrowck-mutate-in-guard.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-mutate-in-guard.rs rename to tests/ui/borrowck/borrowck-mutate-in-guard.rs diff --git a/src/test/ui/borrowck/borrowck-mutate-in-guard.stderr b/tests/ui/borrowck/borrowck-mutate-in-guard.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-mutate-in-guard.stderr rename to tests/ui/borrowck/borrowck-mutate-in-guard.stderr diff --git a/src/test/ui/borrowck/borrowck-no-cycle-in-exchange-heap.rs b/tests/ui/borrowck/borrowck-no-cycle-in-exchange-heap.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-no-cycle-in-exchange-heap.rs rename to tests/ui/borrowck/borrowck-no-cycle-in-exchange-heap.rs diff --git a/src/test/ui/borrowck/borrowck-no-cycle-in-exchange-heap.stderr b/tests/ui/borrowck/borrowck-no-cycle-in-exchange-heap.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-no-cycle-in-exchange-heap.stderr rename to tests/ui/borrowck/borrowck-no-cycle-in-exchange-heap.stderr diff --git a/src/test/ui/borrowck/borrowck-object-lifetime.rs b/tests/ui/borrowck/borrowck-object-lifetime.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-object-lifetime.rs rename to tests/ui/borrowck/borrowck-object-lifetime.rs diff --git a/src/test/ui/borrowck/borrowck-object-lifetime.stderr b/tests/ui/borrowck/borrowck-object-lifetime.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-object-lifetime.stderr rename to tests/ui/borrowck/borrowck-object-lifetime.stderr diff --git a/src/test/ui/borrowck/borrowck-or-init.rs b/tests/ui/borrowck/borrowck-or-init.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-or-init.rs rename to tests/ui/borrowck/borrowck-or-init.rs diff --git a/src/test/ui/borrowck/borrowck-or-init.stderr b/tests/ui/borrowck/borrowck-or-init.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-or-init.stderr rename to tests/ui/borrowck/borrowck-or-init.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-call.rs b/tests/ui/borrowck/borrowck-overloaded-call.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-call.rs rename to tests/ui/borrowck/borrowck-overloaded-call.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-call.stderr b/tests/ui/borrowck/borrowck-overloaded-call.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-call.stderr rename to tests/ui/borrowck/borrowck-overloaded-call.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.rs b/tests/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.rs rename to tests/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.stderr b/tests/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.stderr rename to tests/ui/borrowck/borrowck-overloaded-index-and-overloaded-deref.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.rs b/tests/ui/borrowck/borrowck-overloaded-index-autoderef.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-autoderef.rs rename to tests/ui/borrowck/borrowck-overloaded-index-autoderef.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.stderr b/tests/ui/borrowck/borrowck-overloaded-index-autoderef.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-autoderef.stderr rename to tests/ui/borrowck/borrowck-overloaded-index-autoderef.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-from-vec.rs b/tests/ui/borrowck/borrowck-overloaded-index-move-from-vec.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-move-from-vec.rs rename to tests/ui/borrowck/borrowck-overloaded-index-move-from-vec.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-from-vec.stderr b/tests/ui/borrowck/borrowck-overloaded-index-move-from-vec.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-move-from-vec.stderr rename to tests/ui/borrowck/borrowck-overloaded-index-move-from-vec.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs b/tests/ui/borrowck/borrowck-overloaded-index-move-index.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs rename to tests/ui/borrowck/borrowck-overloaded-index-move-index.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.stderr b/tests/ui/borrowck/borrowck-overloaded-index-move-index.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-move-index.stderr rename to tests/ui/borrowck/borrowck-overloaded-index-move-index.stderr diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs b/tests/ui/borrowck/borrowck-overloaded-index-ref-index.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs rename to tests/ui/borrowck/borrowck-overloaded-index-ref-index.rs diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.stderr b/tests/ui/borrowck/borrowck-overloaded-index-ref-index.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-overloaded-index-ref-index.stderr rename to tests/ui/borrowck/borrowck-overloaded-index-ref-index.stderr diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-1.rs b/tests/ui/borrowck/borrowck-partial-reinit-1.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-1.rs rename to tests/ui/borrowck/borrowck-partial-reinit-1.rs diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-1.stderr b/tests/ui/borrowck/borrowck-partial-reinit-1.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-1.stderr rename to tests/ui/borrowck/borrowck-partial-reinit-1.stderr diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-2.rs b/tests/ui/borrowck/borrowck-partial-reinit-2.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-2.rs rename to tests/ui/borrowck/borrowck-partial-reinit-2.rs diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-2.stderr b/tests/ui/borrowck/borrowck-partial-reinit-2.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-2.stderr rename to tests/ui/borrowck/borrowck-partial-reinit-2.stderr diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-3.rs b/tests/ui/borrowck/borrowck-partial-reinit-3.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-3.rs rename to tests/ui/borrowck/borrowck-partial-reinit-3.rs diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-3.stderr b/tests/ui/borrowck/borrowck-partial-reinit-3.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-3.stderr rename to tests/ui/borrowck/borrowck-partial-reinit-3.stderr diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-4.rs b/tests/ui/borrowck/borrowck-partial-reinit-4.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-4.rs rename to tests/ui/borrowck/borrowck-partial-reinit-4.rs diff --git a/src/test/ui/borrowck/borrowck-partial-reinit-4.stderr b/tests/ui/borrowck/borrowck-partial-reinit-4.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-partial-reinit-4.stderr rename to tests/ui/borrowck/borrowck-partial-reinit-4.stderr diff --git a/src/test/ui/borrowck/borrowck-pat-enum.rs b/tests/ui/borrowck/borrowck-pat-enum.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-pat-enum.rs rename to tests/ui/borrowck/borrowck-pat-enum.rs diff --git a/src/test/ui/borrowck/borrowck-pat-reassign-binding.rs b/tests/ui/borrowck/borrowck-pat-reassign-binding.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-pat-reassign-binding.rs rename to tests/ui/borrowck/borrowck-pat-reassign-binding.rs diff --git a/src/test/ui/borrowck/borrowck-pat-reassign-binding.stderr b/tests/ui/borrowck/borrowck-pat-reassign-binding.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-pat-reassign-binding.stderr rename to tests/ui/borrowck/borrowck-pat-reassign-binding.stderr diff --git a/src/test/ui/borrowck/borrowck-pat-reassign-no-binding.rs b/tests/ui/borrowck/borrowck-pat-reassign-no-binding.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-pat-reassign-no-binding.rs rename to tests/ui/borrowck/borrowck-pat-reassign-no-binding.rs diff --git a/src/test/ui/borrowck/borrowck-reborrow-from-mut.rs b/tests/ui/borrowck/borrowck-reborrow-from-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-reborrow-from-mut.rs rename to tests/ui/borrowck/borrowck-reborrow-from-mut.rs diff --git a/src/test/ui/borrowck/borrowck-reborrow-from-mut.stderr b/tests/ui/borrowck/borrowck-reborrow-from-mut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-reborrow-from-mut.stderr rename to tests/ui/borrowck/borrowck-reborrow-from-mut.stderr diff --git a/src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.rs b/tests/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.rs rename to tests/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.rs diff --git a/src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.stderr b/tests/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.stderr rename to tests/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.stderr diff --git a/src/test/ui/borrowck/borrowck-ref-mut-of-imm.rs b/tests/ui/borrowck/borrowck-ref-mut-of-imm.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-ref-mut-of-imm.rs rename to tests/ui/borrowck/borrowck-ref-mut-of-imm.rs diff --git a/src/test/ui/borrowck/borrowck-ref-mut-of-imm.stderr b/tests/ui/borrowck/borrowck-ref-mut-of-imm.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-ref-mut-of-imm.stderr rename to tests/ui/borrowck/borrowck-ref-mut-of-imm.stderr diff --git a/src/test/ui/borrowck/borrowck-reinit.rs b/tests/ui/borrowck/borrowck-reinit.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-reinit.rs rename to tests/ui/borrowck/borrowck-reinit.rs diff --git a/src/test/ui/borrowck/borrowck-reinit.stderr b/tests/ui/borrowck/borrowck-reinit.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-reinit.stderr rename to tests/ui/borrowck/borrowck-reinit.stderr diff --git a/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.rs b/tests/ui/borrowck/borrowck-report-with-custom-diagnostic.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.rs rename to tests/ui/borrowck/borrowck-report-with-custom-diagnostic.rs diff --git a/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.stderr b/tests/ui/borrowck/borrowck-report-with-custom-diagnostic.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.stderr rename to tests/ui/borrowck/borrowck-report-with-custom-diagnostic.stderr diff --git a/src/test/ui/borrowck/borrowck-return-variable-on-stack-via-clone.rs b/tests/ui/borrowck/borrowck-return-variable-on-stack-via-clone.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-return-variable-on-stack-via-clone.rs rename to tests/ui/borrowck/borrowck-return-variable-on-stack-via-clone.rs diff --git a/src/test/ui/borrowck/borrowck-return-variable-on-stack-via-clone.stderr b/tests/ui/borrowck/borrowck-return-variable-on-stack-via-clone.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-return-variable-on-stack-via-clone.stderr rename to tests/ui/borrowck/borrowck-return-variable-on-stack-via-clone.stderr diff --git a/src/test/ui/borrowck/borrowck-return.rs b/tests/ui/borrowck/borrowck-return.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-return.rs rename to tests/ui/borrowck/borrowck-return.rs diff --git a/src/test/ui/borrowck/borrowck-return.stderr b/tests/ui/borrowck/borrowck-return.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-return.stderr rename to tests/ui/borrowck/borrowck-return.stderr diff --git a/src/test/ui/borrowck/borrowck-rvalues-mutable.rs b/tests/ui/borrowck/borrowck-rvalues-mutable.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-rvalues-mutable.rs rename to tests/ui/borrowck/borrowck-rvalues-mutable.rs diff --git a/src/test/ui/borrowck/borrowck-scope-of-deref-issue-4666.rs b/tests/ui/borrowck/borrowck-scope-of-deref-issue-4666.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-scope-of-deref-issue-4666.rs rename to tests/ui/borrowck/borrowck-scope-of-deref-issue-4666.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array-no-overlap.rs b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-array-no-overlap.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array-no-overlap.rs rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-array-no-overlap.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array.rs b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-array.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array.rs rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-array.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array.stderr b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-array.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-array.stderr rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-array.stderr diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-rpass.rs b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-rpass.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-rpass.rs rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-rpass.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice-no-overlap.rs b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice-no-overlap.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice-no-overlap.rs rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice-no-overlap.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice.rs b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice.rs rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice.rs diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice.stderr b/tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-slice-pattern-element-loan-slice.stderr rename to tests/ui/borrowck/borrowck-slice-pattern-element-loan-slice.stderr diff --git a/src/test/ui/borrowck/borrowck-static-item-in-fn.rs b/tests/ui/borrowck/borrowck-static-item-in-fn.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-static-item-in-fn.rs rename to tests/ui/borrowck/borrowck-static-item-in-fn.rs diff --git a/src/test/ui/borrowck/borrowck-storage-dead.rs b/tests/ui/borrowck/borrowck-storage-dead.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-storage-dead.rs rename to tests/ui/borrowck/borrowck-storage-dead.rs diff --git a/src/test/ui/borrowck/borrowck-storage-dead.stderr b/tests/ui/borrowck/borrowck-storage-dead.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-storage-dead.stderr rename to tests/ui/borrowck/borrowck-storage-dead.stderr diff --git a/src/test/ui/borrowck/borrowck-struct-update-with-dtor.rs b/tests/ui/borrowck/borrowck-struct-update-with-dtor.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-struct-update-with-dtor.rs rename to tests/ui/borrowck/borrowck-struct-update-with-dtor.rs diff --git a/src/test/ui/borrowck/borrowck-struct-update-with-dtor.stderr b/tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-struct-update-with-dtor.stderr rename to tests/ui/borrowck/borrowck-struct-update-with-dtor.stderr diff --git a/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.rs b/tests/ui/borrowck/borrowck-swap-mut-base-ptr.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-swap-mut-base-ptr.rs rename to tests/ui/borrowck/borrowck-swap-mut-base-ptr.rs diff --git a/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.stderr b/tests/ui/borrowck/borrowck-swap-mut-base-ptr.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-swap-mut-base-ptr.stderr rename to tests/ui/borrowck/borrowck-swap-mut-base-ptr.stderr diff --git a/src/test/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.rs b/tests/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.rs rename to tests/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.rs diff --git a/src/test/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.stderr b/tests/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.stderr rename to tests/ui/borrowck/borrowck-thread-local-static-borrow-outlives-fn.stderr diff --git a/src/test/ui/borrowck/borrowck-trait-lifetime.rs b/tests/ui/borrowck/borrowck-trait-lifetime.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-trait-lifetime.rs rename to tests/ui/borrowck/borrowck-trait-lifetime.rs diff --git a/src/test/ui/borrowck/borrowck-unary-move.rs b/tests/ui/borrowck/borrowck-unary-move.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-unary-move.rs rename to tests/ui/borrowck/borrowck-unary-move.rs diff --git a/src/test/ui/borrowck/borrowck-unary-move.stderr b/tests/ui/borrowck/borrowck-unary-move.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-unary-move.stderr rename to tests/ui/borrowck/borrowck-unary-move.stderr diff --git a/src/test/ui/borrowck/borrowck-unboxed-closures.rs b/tests/ui/borrowck/borrowck-unboxed-closures.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-unboxed-closures.rs rename to tests/ui/borrowck/borrowck-unboxed-closures.rs diff --git a/src/test/ui/borrowck/borrowck-unboxed-closures.stderr b/tests/ui/borrowck/borrowck-unboxed-closures.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-unboxed-closures.stderr rename to tests/ui/borrowck/borrowck-unboxed-closures.stderr diff --git a/src/test/ui/borrowck/borrowck-uninit-after-item.rs b/tests/ui/borrowck/borrowck-uninit-after-item.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-after-item.rs rename to tests/ui/borrowck/borrowck-uninit-after-item.rs diff --git a/src/test/ui/borrowck/borrowck-uninit-after-item.stderr b/tests/ui/borrowck/borrowck-uninit-after-item.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-after-item.stderr rename to tests/ui/borrowck/borrowck-uninit-after-item.stderr diff --git a/src/test/ui/borrowck/borrowck-uninit-field-access.rs b/tests/ui/borrowck/borrowck-uninit-field-access.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-field-access.rs rename to tests/ui/borrowck/borrowck-uninit-field-access.rs diff --git a/src/test/ui/borrowck/borrowck-uninit-field-access.stderr b/tests/ui/borrowck/borrowck-uninit-field-access.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-field-access.stderr rename to tests/ui/borrowck/borrowck-uninit-field-access.stderr diff --git a/src/test/ui/borrowck/borrowck-uninit-in-assignop.rs b/tests/ui/borrowck/borrowck-uninit-in-assignop.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-in-assignop.rs rename to tests/ui/borrowck/borrowck-uninit-in-assignop.rs diff --git a/src/test/ui/borrowck/borrowck-uninit-in-assignop.stderr b/tests/ui/borrowck/borrowck-uninit-in-assignop.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-in-assignop.stderr rename to tests/ui/borrowck/borrowck-uninit-in-assignop.stderr diff --git a/src/test/ui/borrowck/borrowck-uninit-ref-chain.rs b/tests/ui/borrowck/borrowck-uninit-ref-chain.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-ref-chain.rs rename to tests/ui/borrowck/borrowck-uninit-ref-chain.rs diff --git a/src/test/ui/borrowck/borrowck-uninit-ref-chain.stderr b/tests/ui/borrowck/borrowck-uninit-ref-chain.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit-ref-chain.stderr rename to tests/ui/borrowck/borrowck-uninit-ref-chain.stderr diff --git a/src/test/ui/borrowck/borrowck-uninit.rs b/tests/ui/borrowck/borrowck-uninit.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit.rs rename to tests/ui/borrowck/borrowck-uninit.rs diff --git a/src/test/ui/borrowck/borrowck-uninit.stderr b/tests/ui/borrowck/borrowck-uninit.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uninit.stderr rename to tests/ui/borrowck/borrowck-uninit.stderr diff --git a/src/test/ui/borrowck/borrowck-union-borrow-nested.rs b/tests/ui/borrowck/borrowck-union-borrow-nested.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-union-borrow-nested.rs rename to tests/ui/borrowck/borrowck-union-borrow-nested.rs diff --git a/src/test/ui/borrowck/borrowck-union-borrow-nested.stderr b/tests/ui/borrowck/borrowck-union-borrow-nested.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-union-borrow-nested.stderr rename to tests/ui/borrowck/borrowck-union-borrow-nested.stderr diff --git a/src/test/ui/borrowck/borrowck-union-borrow.rs b/tests/ui/borrowck/borrowck-union-borrow.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-union-borrow.rs rename to tests/ui/borrowck/borrowck-union-borrow.rs diff --git a/src/test/ui/borrowck/borrowck-union-borrow.stderr b/tests/ui/borrowck/borrowck-union-borrow.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-union-borrow.stderr rename to tests/ui/borrowck/borrowck-union-borrow.stderr diff --git a/src/test/ui/borrowck/borrowck-union-move-assign.rs b/tests/ui/borrowck/borrowck-union-move-assign.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-union-move-assign.rs rename to tests/ui/borrowck/borrowck-union-move-assign.rs diff --git a/src/test/ui/borrowck/borrowck-union-move-assign.stderr b/tests/ui/borrowck/borrowck-union-move-assign.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-union-move-assign.stderr rename to tests/ui/borrowck/borrowck-union-move-assign.stderr diff --git a/src/test/ui/borrowck/borrowck-union-move.rs b/tests/ui/borrowck/borrowck-union-move.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-union-move.rs rename to tests/ui/borrowck/borrowck-union-move.rs diff --git a/src/test/ui/borrowck/borrowck-union-move.stderr b/tests/ui/borrowck/borrowck-union-move.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-union-move.stderr rename to tests/ui/borrowck/borrowck-union-move.stderr diff --git a/src/test/ui/borrowck/borrowck-union-uninitialized.rs b/tests/ui/borrowck/borrowck-union-uninitialized.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-union-uninitialized.rs rename to tests/ui/borrowck/borrowck-union-uninitialized.rs diff --git a/src/test/ui/borrowck/borrowck-union-uninitialized.stderr b/tests/ui/borrowck/borrowck-union-uninitialized.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-union-uninitialized.stderr rename to tests/ui/borrowck/borrowck-union-uninitialized.stderr diff --git a/src/test/ui/borrowck/borrowck-uniq-via-lend.rs b/tests/ui/borrowck/borrowck-uniq-via-lend.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uniq-via-lend.rs rename to tests/ui/borrowck/borrowck-uniq-via-lend.rs diff --git a/src/test/ui/borrowck/borrowck-uniq-via-lend.stderr b/tests/ui/borrowck/borrowck-uniq-via-lend.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-uniq-via-lend.stderr rename to tests/ui/borrowck/borrowck-uniq-via-lend.stderr diff --git a/src/test/ui/borrowck/borrowck-uniq-via-ref.rs b/tests/ui/borrowck/borrowck-uniq-via-ref.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-uniq-via-ref.rs rename to tests/ui/borrowck/borrowck-uniq-via-ref.rs diff --git a/src/test/ui/borrowck/borrowck-univariant-enum.rs b/tests/ui/borrowck/borrowck-univariant-enum.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-univariant-enum.rs rename to tests/ui/borrowck/borrowck-univariant-enum.rs diff --git a/src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs b/tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs rename to tests/ui/borrowck/borrowck-unsafe-static-mutable-borrows.rs diff --git a/src/test/ui/borrowck/borrowck-unused-mut-locals.rs b/tests/ui/borrowck/borrowck-unused-mut-locals.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-unused-mut-locals.rs rename to tests/ui/borrowck/borrowck-unused-mut-locals.rs diff --git a/src/test/ui/borrowck/borrowck-use-in-index-lvalue.rs b/tests/ui/borrowck/borrowck-use-in-index-lvalue.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-use-in-index-lvalue.rs rename to tests/ui/borrowck/borrowck-use-in-index-lvalue.rs diff --git a/src/test/ui/borrowck/borrowck-use-in-index-lvalue.stderr b/tests/ui/borrowck/borrowck-use-in-index-lvalue.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-use-in-index-lvalue.stderr rename to tests/ui/borrowck/borrowck-use-in-index-lvalue.stderr diff --git a/src/test/ui/borrowck/borrowck-use-mut-borrow-rpass.rs b/tests/ui/borrowck/borrowck-use-mut-borrow-rpass.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-use-mut-borrow-rpass.rs rename to tests/ui/borrowck/borrowck-use-mut-borrow-rpass.rs diff --git a/src/test/ui/borrowck/borrowck-use-mut-borrow.rs b/tests/ui/borrowck/borrowck-use-mut-borrow.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-use-mut-borrow.rs rename to tests/ui/borrowck/borrowck-use-mut-borrow.rs diff --git a/src/test/ui/borrowck/borrowck-use-mut-borrow.stderr b/tests/ui/borrowck/borrowck-use-mut-borrow.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-use-mut-borrow.stderr rename to tests/ui/borrowck/borrowck-use-mut-borrow.stderr diff --git a/src/test/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.rs b/tests/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.rs rename to tests/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.rs diff --git a/src/test/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.stderr b/tests/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.stderr rename to tests/ui/borrowck/borrowck-use-uninitialized-in-cast-trait.stderr diff --git a/src/test/ui/borrowck/borrowck-use-uninitialized-in-cast.rs b/tests/ui/borrowck/borrowck-use-uninitialized-in-cast.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-use-uninitialized-in-cast.rs rename to tests/ui/borrowck/borrowck-use-uninitialized-in-cast.rs diff --git a/src/test/ui/borrowck/borrowck-use-uninitialized-in-cast.stderr b/tests/ui/borrowck/borrowck-use-uninitialized-in-cast.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-use-uninitialized-in-cast.stderr rename to tests/ui/borrowck/borrowck-use-uninitialized-in-cast.stderr diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-element-loan.rs b/tests/ui/borrowck/borrowck-vec-pattern-element-loan.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-element-loan.rs rename to tests/ui/borrowck/borrowck-vec-pattern-element-loan.rs diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-element-loan.stderr b/tests/ui/borrowck/borrowck-vec-pattern-element-loan.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-element-loan.stderr rename to tests/ui/borrowck/borrowck-vec-pattern-element-loan.stderr diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.rs b/tests/ui/borrowck/borrowck-vec-pattern-loan-from-mut.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.rs rename to tests/ui/borrowck/borrowck-vec-pattern-loan-from-mut.rs diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.stderr b/tests/ui/borrowck/borrowck-vec-pattern-loan-from-mut.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.stderr rename to tests/ui/borrowck/borrowck-vec-pattern-loan-from-mut.stderr diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-move-tail.rs b/tests/ui/borrowck/borrowck-vec-pattern-move-tail.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-move-tail.rs rename to tests/ui/borrowck/borrowck-vec-pattern-move-tail.rs diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-move-tail.stderr b/tests/ui/borrowck/borrowck-vec-pattern-move-tail.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-move-tail.stderr rename to tests/ui/borrowck/borrowck-vec-pattern-move-tail.stderr diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-nesting.rs b/tests/ui/borrowck/borrowck-vec-pattern-nesting.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-nesting.rs rename to tests/ui/borrowck/borrowck-vec-pattern-nesting.rs diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr b/tests/ui/borrowck/borrowck-vec-pattern-nesting.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr rename to tests/ui/borrowck/borrowck-vec-pattern-nesting.stderr diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-tail-element-loan.rs b/tests/ui/borrowck/borrowck-vec-pattern-tail-element-loan.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-tail-element-loan.rs rename to tests/ui/borrowck/borrowck-vec-pattern-tail-element-loan.rs diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-tail-element-loan.stderr b/tests/ui/borrowck/borrowck-vec-pattern-tail-element-loan.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-vec-pattern-tail-element-loan.stderr rename to tests/ui/borrowck/borrowck-vec-pattern-tail-element-loan.stderr diff --git a/src/test/ui/borrowck/borrowck-while-break.rs b/tests/ui/borrowck/borrowck-while-break.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-while-break.rs rename to tests/ui/borrowck/borrowck-while-break.rs diff --git a/src/test/ui/borrowck/borrowck-while-break.stderr b/tests/ui/borrowck/borrowck-while-break.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-while-break.stderr rename to tests/ui/borrowck/borrowck-while-break.stderr diff --git a/src/test/ui/borrowck/borrowck-while-cond.rs b/tests/ui/borrowck/borrowck-while-cond.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-while-cond.rs rename to tests/ui/borrowck/borrowck-while-cond.rs diff --git a/src/test/ui/borrowck/borrowck-while-cond.stderr b/tests/ui/borrowck/borrowck-while-cond.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-while-cond.stderr rename to tests/ui/borrowck/borrowck-while-cond.stderr diff --git a/src/test/ui/borrowck/borrowck-while.rs b/tests/ui/borrowck/borrowck-while.rs similarity index 100% rename from src/test/ui/borrowck/borrowck-while.rs rename to tests/ui/borrowck/borrowck-while.rs diff --git a/src/test/ui/borrowck/borrowck-while.stderr b/tests/ui/borrowck/borrowck-while.stderr similarity index 100% rename from src/test/ui/borrowck/borrowck-while.stderr rename to tests/ui/borrowck/borrowck-while.stderr diff --git a/src/test/ui/borrowck/copy-suggestion-region-vid.rs b/tests/ui/borrowck/copy-suggestion-region-vid.rs similarity index 100% rename from src/test/ui/borrowck/copy-suggestion-region-vid.rs rename to tests/ui/borrowck/copy-suggestion-region-vid.rs diff --git a/src/test/ui/borrowck/copy-suggestion-region-vid.stderr b/tests/ui/borrowck/copy-suggestion-region-vid.stderr similarity index 100% rename from src/test/ui/borrowck/copy-suggestion-region-vid.stderr rename to tests/ui/borrowck/copy-suggestion-region-vid.stderr diff --git a/src/test/ui/borrowck/disallow-possibly-uninitialized.rs b/tests/ui/borrowck/disallow-possibly-uninitialized.rs similarity index 100% rename from src/test/ui/borrowck/disallow-possibly-uninitialized.rs rename to tests/ui/borrowck/disallow-possibly-uninitialized.rs diff --git a/src/test/ui/borrowck/disallow-possibly-uninitialized.stderr b/tests/ui/borrowck/disallow-possibly-uninitialized.stderr similarity index 100% rename from src/test/ui/borrowck/disallow-possibly-uninitialized.stderr rename to tests/ui/borrowck/disallow-possibly-uninitialized.stderr diff --git a/src/test/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.rs b/tests/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.rs similarity index 100% rename from src/test/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.rs rename to tests/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.rs diff --git a/src/test/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.stderr b/tests/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.stderr similarity index 100% rename from src/test/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.stderr rename to tests/ui/borrowck/do-not-suggest-adding-move-when-closure-is-already-marked-as-move.stderr diff --git a/src/test/ui/borrowck/fsu-moves-and-copies.rs b/tests/ui/borrowck/fsu-moves-and-copies.rs similarity index 100% rename from src/test/ui/borrowck/fsu-moves-and-copies.rs rename to tests/ui/borrowck/fsu-moves-and-copies.rs diff --git a/src/test/ui/borrowck/immut-function-arguments.rs b/tests/ui/borrowck/immut-function-arguments.rs similarity index 100% rename from src/test/ui/borrowck/immut-function-arguments.rs rename to tests/ui/borrowck/immut-function-arguments.rs diff --git a/src/test/ui/borrowck/immut-function-arguments.stderr b/tests/ui/borrowck/immut-function-arguments.stderr similarity index 100% rename from src/test/ui/borrowck/immut-function-arguments.stderr rename to tests/ui/borrowck/immut-function-arguments.stderr diff --git a/src/test/ui/borrowck/immutable-arg.rs b/tests/ui/borrowck/immutable-arg.rs similarity index 100% rename from src/test/ui/borrowck/immutable-arg.rs rename to tests/ui/borrowck/immutable-arg.rs diff --git a/src/test/ui/borrowck/immutable-arg.stderr b/tests/ui/borrowck/immutable-arg.stderr similarity index 100% rename from src/test/ui/borrowck/immutable-arg.stderr rename to tests/ui/borrowck/immutable-arg.stderr diff --git a/src/test/ui/borrowck/index-mut-help-with-impl.rs b/tests/ui/borrowck/index-mut-help-with-impl.rs similarity index 100% rename from src/test/ui/borrowck/index-mut-help-with-impl.rs rename to tests/ui/borrowck/index-mut-help-with-impl.rs diff --git a/src/test/ui/borrowck/index-mut-help-with-impl.stderr b/tests/ui/borrowck/index-mut-help-with-impl.stderr similarity index 100% rename from src/test/ui/borrowck/index-mut-help-with-impl.stderr rename to tests/ui/borrowck/index-mut-help-with-impl.stderr diff --git a/src/test/ui/borrowck/index-mut-help.rs b/tests/ui/borrowck/index-mut-help.rs similarity index 100% rename from src/test/ui/borrowck/index-mut-help.rs rename to tests/ui/borrowck/index-mut-help.rs diff --git a/src/test/ui/borrowck/index-mut-help.stderr b/tests/ui/borrowck/index-mut-help.stderr similarity index 100% rename from src/test/ui/borrowck/index-mut-help.stderr rename to tests/ui/borrowck/index-mut-help.stderr diff --git a/src/test/ui/borrowck/issue-101119.rs b/tests/ui/borrowck/issue-101119.rs similarity index 100% rename from src/test/ui/borrowck/issue-101119.rs rename to tests/ui/borrowck/issue-101119.rs diff --git a/src/test/ui/borrowck/issue-101119.stderr b/tests/ui/borrowck/issue-101119.stderr similarity index 100% rename from src/test/ui/borrowck/issue-101119.stderr rename to tests/ui/borrowck/issue-101119.stderr diff --git a/src/test/ui/borrowck/issue-102209.rs b/tests/ui/borrowck/issue-102209.rs similarity index 100% rename from src/test/ui/borrowck/issue-102209.rs rename to tests/ui/borrowck/issue-102209.rs diff --git a/src/test/ui/borrowck/issue-102209.stderr b/tests/ui/borrowck/issue-102209.stderr similarity index 100% rename from src/test/ui/borrowck/issue-102209.stderr rename to tests/ui/borrowck/issue-102209.stderr diff --git a/src/test/ui/borrowck/issue-103095.rs b/tests/ui/borrowck/issue-103095.rs similarity index 100% rename from src/test/ui/borrowck/issue-103095.rs rename to tests/ui/borrowck/issue-103095.rs diff --git a/src/test/ui/borrowck/issue-103250.rs b/tests/ui/borrowck/issue-103250.rs similarity index 100% rename from src/test/ui/borrowck/issue-103250.rs rename to tests/ui/borrowck/issue-103250.rs diff --git a/src/test/ui/borrowck/issue-103250.stderr b/tests/ui/borrowck/issue-103250.stderr similarity index 100% rename from src/test/ui/borrowck/issue-103250.stderr rename to tests/ui/borrowck/issue-103250.stderr diff --git a/src/test/ui/borrowck/issue-103624.rs b/tests/ui/borrowck/issue-103624.rs similarity index 100% rename from src/test/ui/borrowck/issue-103624.rs rename to tests/ui/borrowck/issue-103624.rs diff --git a/src/test/ui/borrowck/issue-103624.stderr b/tests/ui/borrowck/issue-103624.stderr similarity index 100% rename from src/test/ui/borrowck/issue-103624.stderr rename to tests/ui/borrowck/issue-103624.stderr diff --git a/src/test/ui/borrowck/issue-104639-lifetime-order.rs b/tests/ui/borrowck/issue-104639-lifetime-order.rs similarity index 100% rename from src/test/ui/borrowck/issue-104639-lifetime-order.rs rename to tests/ui/borrowck/issue-104639-lifetime-order.rs diff --git a/src/test/ui/borrowck/issue-10876.rs b/tests/ui/borrowck/issue-10876.rs similarity index 100% rename from src/test/ui/borrowck/issue-10876.rs rename to tests/ui/borrowck/issue-10876.rs diff --git a/src/test/ui/borrowck/issue-11493.fixed b/tests/ui/borrowck/issue-11493.fixed similarity index 100% rename from src/test/ui/borrowck/issue-11493.fixed rename to tests/ui/borrowck/issue-11493.fixed diff --git a/src/test/ui/borrowck/issue-11493.rs b/tests/ui/borrowck/issue-11493.rs similarity index 100% rename from src/test/ui/borrowck/issue-11493.rs rename to tests/ui/borrowck/issue-11493.rs diff --git a/src/test/ui/borrowck/issue-11493.stderr b/tests/ui/borrowck/issue-11493.stderr similarity index 100% rename from src/test/ui/borrowck/issue-11493.stderr rename to tests/ui/borrowck/issue-11493.stderr diff --git a/src/test/ui/borrowck/issue-17263.rs b/tests/ui/borrowck/issue-17263.rs similarity index 100% rename from src/test/ui/borrowck/issue-17263.rs rename to tests/ui/borrowck/issue-17263.rs diff --git a/src/test/ui/borrowck/issue-17545.rs b/tests/ui/borrowck/issue-17545.rs similarity index 100% rename from src/test/ui/borrowck/issue-17545.rs rename to tests/ui/borrowck/issue-17545.rs diff --git a/src/test/ui/borrowck/issue-17545.stderr b/tests/ui/borrowck/issue-17545.stderr similarity index 100% rename from src/test/ui/borrowck/issue-17545.stderr rename to tests/ui/borrowck/issue-17545.stderr diff --git a/src/test/ui/borrowck/issue-17718-static-move.rs b/tests/ui/borrowck/issue-17718-static-move.rs similarity index 100% rename from src/test/ui/borrowck/issue-17718-static-move.rs rename to tests/ui/borrowck/issue-17718-static-move.rs diff --git a/src/test/ui/borrowck/issue-17718-static-move.stderr b/tests/ui/borrowck/issue-17718-static-move.stderr similarity index 100% rename from src/test/ui/borrowck/issue-17718-static-move.stderr rename to tests/ui/borrowck/issue-17718-static-move.stderr diff --git a/src/test/ui/borrowck/issue-20801.rs b/tests/ui/borrowck/issue-20801.rs similarity index 100% rename from src/test/ui/borrowck/issue-20801.rs rename to tests/ui/borrowck/issue-20801.rs diff --git a/src/test/ui/borrowck/issue-20801.stderr b/tests/ui/borrowck/issue-20801.stderr similarity index 100% rename from src/test/ui/borrowck/issue-20801.stderr rename to tests/ui/borrowck/issue-20801.stderr diff --git a/src/test/ui/borrowck/issue-23338-params-outlive-temps-of-body.rs b/tests/ui/borrowck/issue-23338-params-outlive-temps-of-body.rs similarity index 100% rename from src/test/ui/borrowck/issue-23338-params-outlive-temps-of-body.rs rename to tests/ui/borrowck/issue-23338-params-outlive-temps-of-body.rs diff --git a/src/test/ui/borrowck/issue-24267-flow-exit.rs b/tests/ui/borrowck/issue-24267-flow-exit.rs similarity index 100% rename from src/test/ui/borrowck/issue-24267-flow-exit.rs rename to tests/ui/borrowck/issue-24267-flow-exit.rs diff --git a/src/test/ui/borrowck/issue-24267-flow-exit.stderr b/tests/ui/borrowck/issue-24267-flow-exit.stderr similarity index 100% rename from src/test/ui/borrowck/issue-24267-flow-exit.stderr rename to tests/ui/borrowck/issue-24267-flow-exit.stderr diff --git a/src/test/ui/borrowck/issue-25793.rs b/tests/ui/borrowck/issue-25793.rs similarity index 100% rename from src/test/ui/borrowck/issue-25793.rs rename to tests/ui/borrowck/issue-25793.rs diff --git a/src/test/ui/borrowck/issue-25793.stderr b/tests/ui/borrowck/issue-25793.stderr similarity index 100% rename from src/test/ui/borrowck/issue-25793.stderr rename to tests/ui/borrowck/issue-25793.stderr diff --git a/src/test/ui/borrowck/issue-28934.rs b/tests/ui/borrowck/issue-28934.rs similarity index 100% rename from src/test/ui/borrowck/issue-28934.rs rename to tests/ui/borrowck/issue-28934.rs diff --git a/src/test/ui/borrowck/issue-29166.rs b/tests/ui/borrowck/issue-29166.rs similarity index 100% rename from src/test/ui/borrowck/issue-29166.rs rename to tests/ui/borrowck/issue-29166.rs diff --git a/src/test/ui/borrowck/issue-31287-drop-in-guard.rs b/tests/ui/borrowck/issue-31287-drop-in-guard.rs similarity index 100% rename from src/test/ui/borrowck/issue-31287-drop-in-guard.rs rename to tests/ui/borrowck/issue-31287-drop-in-guard.rs diff --git a/src/test/ui/borrowck/issue-31287-drop-in-guard.stderr b/tests/ui/borrowck/issue-31287-drop-in-guard.stderr similarity index 100% rename from src/test/ui/borrowck/issue-31287-drop-in-guard.stderr rename to tests/ui/borrowck/issue-31287-drop-in-guard.stderr diff --git a/src/test/ui/borrowck/issue-33819.rs b/tests/ui/borrowck/issue-33819.rs similarity index 100% rename from src/test/ui/borrowck/issue-33819.rs rename to tests/ui/borrowck/issue-33819.rs diff --git a/src/test/ui/borrowck/issue-33819.stderr b/tests/ui/borrowck/issue-33819.stderr similarity index 100% rename from src/test/ui/borrowck/issue-33819.stderr rename to tests/ui/borrowck/issue-33819.stderr diff --git a/src/test/ui/borrowck/issue-36082.fixed b/tests/ui/borrowck/issue-36082.fixed similarity index 100% rename from src/test/ui/borrowck/issue-36082.fixed rename to tests/ui/borrowck/issue-36082.fixed diff --git a/src/test/ui/borrowck/issue-36082.rs b/tests/ui/borrowck/issue-36082.rs similarity index 100% rename from src/test/ui/borrowck/issue-36082.rs rename to tests/ui/borrowck/issue-36082.rs diff --git a/src/test/ui/borrowck/issue-36082.stderr b/tests/ui/borrowck/issue-36082.stderr similarity index 100% rename from src/test/ui/borrowck/issue-36082.stderr rename to tests/ui/borrowck/issue-36082.stderr diff --git a/src/test/ui/borrowck/issue-41962.rs b/tests/ui/borrowck/issue-41962.rs similarity index 100% rename from src/test/ui/borrowck/issue-41962.rs rename to tests/ui/borrowck/issue-41962.rs diff --git a/src/test/ui/borrowck/issue-41962.stderr b/tests/ui/borrowck/issue-41962.stderr similarity index 100% rename from src/test/ui/borrowck/issue-41962.stderr rename to tests/ui/borrowck/issue-41962.stderr diff --git a/src/test/ui/borrowck/issue-42344.rs b/tests/ui/borrowck/issue-42344.rs similarity index 100% rename from src/test/ui/borrowck/issue-42344.rs rename to tests/ui/borrowck/issue-42344.rs diff --git a/src/test/ui/borrowck/issue-42344.stderr b/tests/ui/borrowck/issue-42344.stderr similarity index 100% rename from src/test/ui/borrowck/issue-42344.stderr rename to tests/ui/borrowck/issue-42344.stderr diff --git a/src/test/ui/borrowck/issue-45199.rs b/tests/ui/borrowck/issue-45199.rs similarity index 100% rename from src/test/ui/borrowck/issue-45199.rs rename to tests/ui/borrowck/issue-45199.rs diff --git a/src/test/ui/borrowck/issue-45199.stderr b/tests/ui/borrowck/issue-45199.stderr similarity index 100% rename from src/test/ui/borrowck/issue-45199.stderr rename to tests/ui/borrowck/issue-45199.stderr diff --git a/src/test/ui/borrowck/issue-45983.rs b/tests/ui/borrowck/issue-45983.rs similarity index 100% rename from src/test/ui/borrowck/issue-45983.rs rename to tests/ui/borrowck/issue-45983.rs diff --git a/src/test/ui/borrowck/issue-45983.stderr b/tests/ui/borrowck/issue-45983.stderr similarity index 100% rename from src/test/ui/borrowck/issue-45983.stderr rename to tests/ui/borrowck/issue-45983.stderr diff --git a/src/test/ui/borrowck/issue-46095.rs b/tests/ui/borrowck/issue-46095.rs similarity index 100% rename from src/test/ui/borrowck/issue-46095.rs rename to tests/ui/borrowck/issue-46095.rs diff --git a/src/test/ui/borrowck/issue-46471.rs b/tests/ui/borrowck/issue-46471.rs similarity index 100% rename from src/test/ui/borrowck/issue-46471.rs rename to tests/ui/borrowck/issue-46471.rs diff --git a/src/test/ui/borrowck/issue-46471.stderr b/tests/ui/borrowck/issue-46471.stderr similarity index 100% rename from src/test/ui/borrowck/issue-46471.stderr rename to tests/ui/borrowck/issue-46471.stderr diff --git a/src/test/ui/borrowck/issue-47215-ice-from-drop-elab.rs b/tests/ui/borrowck/issue-47215-ice-from-drop-elab.rs similarity index 100% rename from src/test/ui/borrowck/issue-47215-ice-from-drop-elab.rs rename to tests/ui/borrowck/issue-47215-ice-from-drop-elab.rs diff --git a/src/test/ui/borrowck/issue-47215-ice-from-drop-elab.stderr b/tests/ui/borrowck/issue-47215-ice-from-drop-elab.stderr similarity index 100% rename from src/test/ui/borrowck/issue-47215-ice-from-drop-elab.stderr rename to tests/ui/borrowck/issue-47215-ice-from-drop-elab.stderr diff --git a/src/test/ui/borrowck/issue-51117.rs b/tests/ui/borrowck/issue-51117.rs similarity index 100% rename from src/test/ui/borrowck/issue-51117.rs rename to tests/ui/borrowck/issue-51117.rs diff --git a/src/test/ui/borrowck/issue-51117.stderr b/tests/ui/borrowck/issue-51117.stderr similarity index 100% rename from src/test/ui/borrowck/issue-51117.stderr rename to tests/ui/borrowck/issue-51117.stderr diff --git a/src/test/ui/borrowck/issue-51301.rs b/tests/ui/borrowck/issue-51301.rs similarity index 100% rename from src/test/ui/borrowck/issue-51301.rs rename to tests/ui/borrowck/issue-51301.rs diff --git a/src/test/ui/borrowck/issue-51301.stderr b/tests/ui/borrowck/issue-51301.stderr similarity index 100% rename from src/test/ui/borrowck/issue-51301.stderr rename to tests/ui/borrowck/issue-51301.stderr diff --git a/src/test/ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs b/tests/ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs similarity index 100% rename from src/test/ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs rename to tests/ui/borrowck/issue-51348-multi-ref-mut-in-guard.rs diff --git a/src/test/ui/borrowck/issue-51415.fixed b/tests/ui/borrowck/issue-51415.fixed similarity index 100% rename from src/test/ui/borrowck/issue-51415.fixed rename to tests/ui/borrowck/issue-51415.fixed diff --git a/src/test/ui/borrowck/issue-51415.rs b/tests/ui/borrowck/issue-51415.rs similarity index 100% rename from src/test/ui/borrowck/issue-51415.rs rename to tests/ui/borrowck/issue-51415.rs diff --git a/src/test/ui/borrowck/issue-51415.stderr b/tests/ui/borrowck/issue-51415.stderr similarity index 100% rename from src/test/ui/borrowck/issue-51415.stderr rename to tests/ui/borrowck/issue-51415.stderr diff --git a/src/test/ui/borrowck/issue-52713-bug.rs b/tests/ui/borrowck/issue-52713-bug.rs similarity index 100% rename from src/test/ui/borrowck/issue-52713-bug.rs rename to tests/ui/borrowck/issue-52713-bug.rs diff --git a/src/test/ui/borrowck/issue-52713-bug.stderr b/tests/ui/borrowck/issue-52713-bug.stderr similarity index 100% rename from src/test/ui/borrowck/issue-52713-bug.stderr rename to tests/ui/borrowck/issue-52713-bug.stderr diff --git a/src/test/ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs b/tests/ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs similarity index 100% rename from src/test/ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs rename to tests/ui/borrowck/issue-52967-edition-2018-needs-two-phase-borrows.rs diff --git a/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs b/tests/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs similarity index 100% rename from src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs rename to tests/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.rs diff --git a/src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr b/tests/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr similarity index 100% rename from src/test/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr rename to tests/ui/borrowck/issue-53432-nested-closure-outlives-borrowed-value.stderr diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs b/tests/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs rename to tests/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.rs diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.stderr b/tests/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.stderr similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.stderr rename to tests/ui/borrowck/issue-54499-field-mutation-marks-mut-as-used.stderr diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs b/tests/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs rename to tests/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.rs diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.stderr b/tests/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.stderr similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.stderr rename to tests/ui/borrowck/issue-54499-field-mutation-of-moved-out-with-mut.stderr diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out.rs b/tests/ui/borrowck/issue-54499-field-mutation-of-moved-out.rs similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out.rs rename to tests/ui/borrowck/issue-54499-field-mutation-of-moved-out.rs diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out.stderr b/tests/ui/borrowck/issue-54499-field-mutation-of-moved-out.stderr similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-moved-out.stderr rename to tests/ui/borrowck/issue-54499-field-mutation-of-moved-out.stderr diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-never-init.rs b/tests/ui/borrowck/issue-54499-field-mutation-of-never-init.rs similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-never-init.rs rename to tests/ui/borrowck/issue-54499-field-mutation-of-never-init.rs diff --git a/src/test/ui/borrowck/issue-54499-field-mutation-of-never-init.stderr b/tests/ui/borrowck/issue-54499-field-mutation-of-never-init.stderr similarity index 100% rename from src/test/ui/borrowck/issue-54499-field-mutation-of-never-init.stderr rename to tests/ui/borrowck/issue-54499-field-mutation-of-never-init.stderr diff --git a/src/test/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs b/tests/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs similarity index 100% rename from src/test/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs rename to tests/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.rs diff --git a/src/test/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.stderr b/tests/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.stderr similarity index 100% rename from src/test/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.stderr rename to tests/ui/borrowck/issue-54597-reject-move-out-of-borrow-via-pat.stderr diff --git a/src/test/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs b/tests/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs similarity index 100% rename from src/test/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs rename to tests/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.rs diff --git a/src/test/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.stderr b/tests/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.stderr similarity index 100% rename from src/test/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.stderr rename to tests/ui/borrowck/issue-55492-borrowck-migrate-scans-parents.stderr diff --git a/src/test/ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs b/tests/ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs similarity index 100% rename from src/test/ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs rename to tests/ui/borrowck/issue-55552-ascribe-wildcard-to-structured-pattern.rs diff --git a/src/test/ui/borrowck/issue-58776-borrowck-scans-children.rs b/tests/ui/borrowck/issue-58776-borrowck-scans-children.rs similarity index 100% rename from src/test/ui/borrowck/issue-58776-borrowck-scans-children.rs rename to tests/ui/borrowck/issue-58776-borrowck-scans-children.rs diff --git a/src/test/ui/borrowck/issue-58776-borrowck-scans-children.stderr b/tests/ui/borrowck/issue-58776-borrowck-scans-children.stderr similarity index 100% rename from src/test/ui/borrowck/issue-58776-borrowck-scans-children.stderr rename to tests/ui/borrowck/issue-58776-borrowck-scans-children.stderr diff --git a/src/test/ui/borrowck/issue-62007-assign-box.rs b/tests/ui/borrowck/issue-62007-assign-box.rs similarity index 100% rename from src/test/ui/borrowck/issue-62007-assign-box.rs rename to tests/ui/borrowck/issue-62007-assign-box.rs diff --git a/src/test/ui/borrowck/issue-62007-assign-field.rs b/tests/ui/borrowck/issue-62007-assign-field.rs similarity index 100% rename from src/test/ui/borrowck/issue-62007-assign-field.rs rename to tests/ui/borrowck/issue-62007-assign-field.rs diff --git a/src/test/ui/borrowck/issue-62107-match-arm-scopes.rs b/tests/ui/borrowck/issue-62107-match-arm-scopes.rs similarity index 100% rename from src/test/ui/borrowck/issue-62107-match-arm-scopes.rs rename to tests/ui/borrowck/issue-62107-match-arm-scopes.rs diff --git a/src/test/ui/borrowck/issue-62107-match-arm-scopes.stderr b/tests/ui/borrowck/issue-62107-match-arm-scopes.stderr similarity index 100% rename from src/test/ui/borrowck/issue-62107-match-arm-scopes.stderr rename to tests/ui/borrowck/issue-62107-match-arm-scopes.stderr diff --git a/src/test/ui/borrowck/issue-64453.rs b/tests/ui/borrowck/issue-64453.rs similarity index 100% rename from src/test/ui/borrowck/issue-64453.rs rename to tests/ui/borrowck/issue-64453.rs diff --git a/src/test/ui/borrowck/issue-64453.stderr b/tests/ui/borrowck/issue-64453.stderr similarity index 100% rename from src/test/ui/borrowck/issue-64453.stderr rename to tests/ui/borrowck/issue-64453.stderr diff --git a/src/test/ui/borrowck/issue-69789-iterator-mut-suggestion.rs b/tests/ui/borrowck/issue-69789-iterator-mut-suggestion.rs similarity index 100% rename from src/test/ui/borrowck/issue-69789-iterator-mut-suggestion.rs rename to tests/ui/borrowck/issue-69789-iterator-mut-suggestion.rs diff --git a/src/test/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr b/tests/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr similarity index 100% rename from src/test/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr rename to tests/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr diff --git a/src/test/ui/borrowck/issue-71546.rs b/tests/ui/borrowck/issue-71546.rs similarity index 100% rename from src/test/ui/borrowck/issue-71546.rs rename to tests/ui/borrowck/issue-71546.rs diff --git a/src/test/ui/borrowck/issue-7573.rs b/tests/ui/borrowck/issue-7573.rs similarity index 100% rename from src/test/ui/borrowck/issue-7573.rs rename to tests/ui/borrowck/issue-7573.rs diff --git a/src/test/ui/borrowck/issue-7573.stderr b/tests/ui/borrowck/issue-7573.stderr similarity index 100% rename from src/test/ui/borrowck/issue-7573.stderr rename to tests/ui/borrowck/issue-7573.stderr diff --git a/src/test/ui/borrowck/issue-80772.rs b/tests/ui/borrowck/issue-80772.rs similarity index 100% rename from src/test/ui/borrowck/issue-80772.rs rename to tests/ui/borrowck/issue-80772.rs diff --git a/src/test/ui/borrowck/issue-81365-1.rs b/tests/ui/borrowck/issue-81365-1.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-1.rs rename to tests/ui/borrowck/issue-81365-1.rs diff --git a/src/test/ui/borrowck/issue-81365-1.stderr b/tests/ui/borrowck/issue-81365-1.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-1.stderr rename to tests/ui/borrowck/issue-81365-1.stderr diff --git a/src/test/ui/borrowck/issue-81365-10.rs b/tests/ui/borrowck/issue-81365-10.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-10.rs rename to tests/ui/borrowck/issue-81365-10.rs diff --git a/src/test/ui/borrowck/issue-81365-10.stderr b/tests/ui/borrowck/issue-81365-10.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-10.stderr rename to tests/ui/borrowck/issue-81365-10.stderr diff --git a/src/test/ui/borrowck/issue-81365-11.rs b/tests/ui/borrowck/issue-81365-11.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-11.rs rename to tests/ui/borrowck/issue-81365-11.rs diff --git a/src/test/ui/borrowck/issue-81365-11.stderr b/tests/ui/borrowck/issue-81365-11.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-11.stderr rename to tests/ui/borrowck/issue-81365-11.stderr diff --git a/src/test/ui/borrowck/issue-81365-2.rs b/tests/ui/borrowck/issue-81365-2.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-2.rs rename to tests/ui/borrowck/issue-81365-2.rs diff --git a/src/test/ui/borrowck/issue-81365-2.stderr b/tests/ui/borrowck/issue-81365-2.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-2.stderr rename to tests/ui/borrowck/issue-81365-2.stderr diff --git a/src/test/ui/borrowck/issue-81365-3.rs b/tests/ui/borrowck/issue-81365-3.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-3.rs rename to tests/ui/borrowck/issue-81365-3.rs diff --git a/src/test/ui/borrowck/issue-81365-3.stderr b/tests/ui/borrowck/issue-81365-3.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-3.stderr rename to tests/ui/borrowck/issue-81365-3.stderr diff --git a/src/test/ui/borrowck/issue-81365-4.rs b/tests/ui/borrowck/issue-81365-4.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-4.rs rename to tests/ui/borrowck/issue-81365-4.rs diff --git a/src/test/ui/borrowck/issue-81365-4.stderr b/tests/ui/borrowck/issue-81365-4.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-4.stderr rename to tests/ui/borrowck/issue-81365-4.stderr diff --git a/src/test/ui/borrowck/issue-81365-5.rs b/tests/ui/borrowck/issue-81365-5.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-5.rs rename to tests/ui/borrowck/issue-81365-5.rs diff --git a/src/test/ui/borrowck/issue-81365-5.stderr b/tests/ui/borrowck/issue-81365-5.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-5.stderr rename to tests/ui/borrowck/issue-81365-5.stderr diff --git a/src/test/ui/borrowck/issue-81365-6.rs b/tests/ui/borrowck/issue-81365-6.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-6.rs rename to tests/ui/borrowck/issue-81365-6.rs diff --git a/src/test/ui/borrowck/issue-81365-6.stderr b/tests/ui/borrowck/issue-81365-6.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-6.stderr rename to tests/ui/borrowck/issue-81365-6.stderr diff --git a/src/test/ui/borrowck/issue-81365-7.rs b/tests/ui/borrowck/issue-81365-7.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-7.rs rename to tests/ui/borrowck/issue-81365-7.rs diff --git a/src/test/ui/borrowck/issue-81365-7.stderr b/tests/ui/borrowck/issue-81365-7.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-7.stderr rename to tests/ui/borrowck/issue-81365-7.stderr diff --git a/src/test/ui/borrowck/issue-81365-8.rs b/tests/ui/borrowck/issue-81365-8.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-8.rs rename to tests/ui/borrowck/issue-81365-8.rs diff --git a/src/test/ui/borrowck/issue-81365-8.stderr b/tests/ui/borrowck/issue-81365-8.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-8.stderr rename to tests/ui/borrowck/issue-81365-8.stderr diff --git a/src/test/ui/borrowck/issue-81365-9.rs b/tests/ui/borrowck/issue-81365-9.rs similarity index 100% rename from src/test/ui/borrowck/issue-81365-9.rs rename to tests/ui/borrowck/issue-81365-9.rs diff --git a/src/test/ui/borrowck/issue-81365-9.stderr b/tests/ui/borrowck/issue-81365-9.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81365-9.stderr rename to tests/ui/borrowck/issue-81365-9.stderr diff --git a/src/test/ui/borrowck/issue-81899.rs b/tests/ui/borrowck/issue-81899.rs similarity index 100% rename from src/test/ui/borrowck/issue-81899.rs rename to tests/ui/borrowck/issue-81899.rs diff --git a/src/test/ui/borrowck/issue-81899.stderr b/tests/ui/borrowck/issue-81899.stderr similarity index 100% rename from src/test/ui/borrowck/issue-81899.stderr rename to tests/ui/borrowck/issue-81899.stderr diff --git a/src/test/ui/borrowck/issue-82032.rs b/tests/ui/borrowck/issue-82032.rs similarity index 100% rename from src/test/ui/borrowck/issue-82032.rs rename to tests/ui/borrowck/issue-82032.rs diff --git a/src/test/ui/borrowck/issue-82032.stderr b/tests/ui/borrowck/issue-82032.stderr similarity index 100% rename from src/test/ui/borrowck/issue-82032.stderr rename to tests/ui/borrowck/issue-82032.stderr diff --git a/src/test/ui/borrowck/issue-82126-mismatched-subst-and-hir.rs b/tests/ui/borrowck/issue-82126-mismatched-subst-and-hir.rs similarity index 100% rename from src/test/ui/borrowck/issue-82126-mismatched-subst-and-hir.rs rename to tests/ui/borrowck/issue-82126-mismatched-subst-and-hir.rs diff --git a/src/test/ui/borrowck/issue-82126-mismatched-subst-and-hir.stderr b/tests/ui/borrowck/issue-82126-mismatched-subst-and-hir.stderr similarity index 100% rename from src/test/ui/borrowck/issue-82126-mismatched-subst-and-hir.stderr rename to tests/ui/borrowck/issue-82126-mismatched-subst-and-hir.stderr diff --git a/src/test/ui/borrowck/issue-82462.rs b/tests/ui/borrowck/issue-82462.rs similarity index 100% rename from src/test/ui/borrowck/issue-82462.rs rename to tests/ui/borrowck/issue-82462.rs diff --git a/src/test/ui/borrowck/issue-82462.stderr b/tests/ui/borrowck/issue-82462.stderr similarity index 100% rename from src/test/ui/borrowck/issue-82462.stderr rename to tests/ui/borrowck/issue-82462.stderr diff --git a/src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs b/tests/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs similarity index 100% rename from src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs rename to tests/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs diff --git a/src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr b/tests/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr similarity index 100% rename from src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr rename to tests/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr diff --git a/src/test/ui/borrowck/issue-83760.rs b/tests/ui/borrowck/issue-83760.rs similarity index 100% rename from src/test/ui/borrowck/issue-83760.rs rename to tests/ui/borrowck/issue-83760.rs diff --git a/src/test/ui/borrowck/issue-83760.stderr b/tests/ui/borrowck/issue-83760.stderr similarity index 100% rename from src/test/ui/borrowck/issue-83760.stderr rename to tests/ui/borrowck/issue-83760.stderr diff --git a/src/test/ui/borrowck/issue-85581.rs b/tests/ui/borrowck/issue-85581.rs similarity index 100% rename from src/test/ui/borrowck/issue-85581.rs rename to tests/ui/borrowck/issue-85581.rs diff --git a/src/test/ui/borrowck/issue-85581.stderr b/tests/ui/borrowck/issue-85581.stderr similarity index 100% rename from src/test/ui/borrowck/issue-85581.stderr rename to tests/ui/borrowck/issue-85581.stderr diff --git a/src/test/ui/borrowck/issue-85765.rs b/tests/ui/borrowck/issue-85765.rs similarity index 100% rename from src/test/ui/borrowck/issue-85765.rs rename to tests/ui/borrowck/issue-85765.rs diff --git a/src/test/ui/borrowck/issue-85765.stderr b/tests/ui/borrowck/issue-85765.stderr similarity index 100% rename from src/test/ui/borrowck/issue-85765.stderr rename to tests/ui/borrowck/issue-85765.stderr diff --git a/src/test/ui/borrowck/issue-87456-point-to-closure.rs b/tests/ui/borrowck/issue-87456-point-to-closure.rs similarity index 100% rename from src/test/ui/borrowck/issue-87456-point-to-closure.rs rename to tests/ui/borrowck/issue-87456-point-to-closure.rs diff --git a/src/test/ui/borrowck/issue-87456-point-to-closure.stderr b/tests/ui/borrowck/issue-87456-point-to-closure.stderr similarity index 100% rename from src/test/ui/borrowck/issue-87456-point-to-closure.stderr rename to tests/ui/borrowck/issue-87456-point-to-closure.stderr diff --git a/src/test/ui/borrowck/issue-88434-minimal-example.rs b/tests/ui/borrowck/issue-88434-minimal-example.rs similarity index 100% rename from src/test/ui/borrowck/issue-88434-minimal-example.rs rename to tests/ui/borrowck/issue-88434-minimal-example.rs diff --git a/src/test/ui/borrowck/issue-88434-minimal-example.stderr b/tests/ui/borrowck/issue-88434-minimal-example.stderr similarity index 100% rename from src/test/ui/borrowck/issue-88434-minimal-example.stderr rename to tests/ui/borrowck/issue-88434-minimal-example.stderr diff --git a/src/test/ui/borrowck/issue-88434-removal-index-should-be-less.rs b/tests/ui/borrowck/issue-88434-removal-index-should-be-less.rs similarity index 100% rename from src/test/ui/borrowck/issue-88434-removal-index-should-be-less.rs rename to tests/ui/borrowck/issue-88434-removal-index-should-be-less.rs diff --git a/src/test/ui/borrowck/issue-88434-removal-index-should-be-less.stderr b/tests/ui/borrowck/issue-88434-removal-index-should-be-less.stderr similarity index 100% rename from src/test/ui/borrowck/issue-88434-removal-index-should-be-less.stderr rename to tests/ui/borrowck/issue-88434-removal-index-should-be-less.stderr diff --git a/src/test/ui/borrowck/issue-91206.rs b/tests/ui/borrowck/issue-91206.rs similarity index 100% rename from src/test/ui/borrowck/issue-91206.rs rename to tests/ui/borrowck/issue-91206.rs diff --git a/src/test/ui/borrowck/issue-91206.stderr b/tests/ui/borrowck/issue-91206.stderr similarity index 100% rename from src/test/ui/borrowck/issue-91206.stderr rename to tests/ui/borrowck/issue-91206.stderr diff --git a/src/test/ui/borrowck/issue-92015.rs b/tests/ui/borrowck/issue-92015.rs similarity index 100% rename from src/test/ui/borrowck/issue-92015.rs rename to tests/ui/borrowck/issue-92015.rs diff --git a/src/test/ui/borrowck/issue-92015.stderr b/tests/ui/borrowck/issue-92015.stderr similarity index 100% rename from src/test/ui/borrowck/issue-92015.stderr rename to tests/ui/borrowck/issue-92015.stderr diff --git a/src/test/ui/borrowck/issue-93078.rs b/tests/ui/borrowck/issue-93078.rs similarity index 100% rename from src/test/ui/borrowck/issue-93078.rs rename to tests/ui/borrowck/issue-93078.rs diff --git a/src/test/ui/borrowck/issue-93078.stderr b/tests/ui/borrowck/issue-93078.stderr similarity index 100% rename from src/test/ui/borrowck/issue-93078.stderr rename to tests/ui/borrowck/issue-93078.stderr diff --git a/src/test/ui/borrowck/issue-93093.rs b/tests/ui/borrowck/issue-93093.rs similarity index 100% rename from src/test/ui/borrowck/issue-93093.rs rename to tests/ui/borrowck/issue-93093.rs diff --git a/src/test/ui/borrowck/issue-93093.stderr b/tests/ui/borrowck/issue-93093.stderr similarity index 100% rename from src/test/ui/borrowck/issue-93093.stderr rename to tests/ui/borrowck/issue-93093.stderr diff --git a/src/test/ui/borrowck/issue-95079-missing-move-in-nested-closure.rs b/tests/ui/borrowck/issue-95079-missing-move-in-nested-closure.rs similarity index 100% rename from src/test/ui/borrowck/issue-95079-missing-move-in-nested-closure.rs rename to tests/ui/borrowck/issue-95079-missing-move-in-nested-closure.rs diff --git a/src/test/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr b/tests/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr similarity index 100% rename from src/test/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr rename to tests/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr diff --git a/src/test/ui/borrowck/kindck-implicit-close-over-mut-var.rs b/tests/ui/borrowck/kindck-implicit-close-over-mut-var.rs similarity index 100% rename from src/test/ui/borrowck/kindck-implicit-close-over-mut-var.rs rename to tests/ui/borrowck/kindck-implicit-close-over-mut-var.rs diff --git a/src/test/ui/borrowck/lazy-init.rs b/tests/ui/borrowck/lazy-init.rs similarity index 100% rename from src/test/ui/borrowck/lazy-init.rs rename to tests/ui/borrowck/lazy-init.rs diff --git a/src/test/ui/borrowck/many-mutable-borrows.rs b/tests/ui/borrowck/many-mutable-borrows.rs similarity index 100% rename from src/test/ui/borrowck/many-mutable-borrows.rs rename to tests/ui/borrowck/many-mutable-borrows.rs diff --git a/src/test/ui/borrowck/many-mutable-borrows.stderr b/tests/ui/borrowck/many-mutable-borrows.stderr similarity index 100% rename from src/test/ui/borrowck/many-mutable-borrows.stderr rename to tests/ui/borrowck/many-mutable-borrows.stderr diff --git a/src/test/ui/borrowck/move-error-in-promoted-2.rs b/tests/ui/borrowck/move-error-in-promoted-2.rs similarity index 100% rename from src/test/ui/borrowck/move-error-in-promoted-2.rs rename to tests/ui/borrowck/move-error-in-promoted-2.rs diff --git a/src/test/ui/borrowck/move-error-in-promoted-2.stderr b/tests/ui/borrowck/move-error-in-promoted-2.stderr similarity index 100% rename from src/test/ui/borrowck/move-error-in-promoted-2.stderr rename to tests/ui/borrowck/move-error-in-promoted-2.stderr diff --git a/src/test/ui/borrowck/move-error-in-promoted.rs b/tests/ui/borrowck/move-error-in-promoted.rs similarity index 100% rename from src/test/ui/borrowck/move-error-in-promoted.rs rename to tests/ui/borrowck/move-error-in-promoted.rs diff --git a/src/test/ui/borrowck/move-error-in-promoted.stderr b/tests/ui/borrowck/move-error-in-promoted.stderr similarity index 100% rename from src/test/ui/borrowck/move-error-in-promoted.stderr rename to tests/ui/borrowck/move-error-in-promoted.stderr diff --git a/src/test/ui/borrowck/move-error-snippets-ext.rs b/tests/ui/borrowck/move-error-snippets-ext.rs similarity index 100% rename from src/test/ui/borrowck/move-error-snippets-ext.rs rename to tests/ui/borrowck/move-error-snippets-ext.rs diff --git a/src/test/ui/borrowck/move-error-snippets.rs b/tests/ui/borrowck/move-error-snippets.rs similarity index 100% rename from src/test/ui/borrowck/move-error-snippets.rs rename to tests/ui/borrowck/move-error-snippets.rs diff --git a/src/test/ui/borrowck/move-error-snippets.stderr b/tests/ui/borrowck/move-error-snippets.stderr similarity index 100% rename from src/test/ui/borrowck/move-error-snippets.stderr rename to tests/ui/borrowck/move-error-snippets.stderr diff --git a/src/test/ui/borrowck/move-from-union-field-issue-66500.rs b/tests/ui/borrowck/move-from-union-field-issue-66500.rs similarity index 100% rename from src/test/ui/borrowck/move-from-union-field-issue-66500.rs rename to tests/ui/borrowck/move-from-union-field-issue-66500.rs diff --git a/src/test/ui/borrowck/move-from-union-field-issue-66500.stderr b/tests/ui/borrowck/move-from-union-field-issue-66500.stderr similarity index 100% rename from src/test/ui/borrowck/move-from-union-field-issue-66500.stderr rename to tests/ui/borrowck/move-from-union-field-issue-66500.stderr diff --git a/src/test/ui/borrowck/move-in-pattern-mut-in-loop.rs b/tests/ui/borrowck/move-in-pattern-mut-in-loop.rs similarity index 100% rename from src/test/ui/borrowck/move-in-pattern-mut-in-loop.rs rename to tests/ui/borrowck/move-in-pattern-mut-in-loop.rs diff --git a/src/test/ui/borrowck/move-in-pattern-mut-in-loop.stderr b/tests/ui/borrowck/move-in-pattern-mut-in-loop.stderr similarity index 100% rename from src/test/ui/borrowck/move-in-pattern-mut-in-loop.stderr rename to tests/ui/borrowck/move-in-pattern-mut-in-loop.stderr diff --git a/src/test/ui/borrowck/move-in-pattern-mut.rs b/tests/ui/borrowck/move-in-pattern-mut.rs similarity index 100% rename from src/test/ui/borrowck/move-in-pattern-mut.rs rename to tests/ui/borrowck/move-in-pattern-mut.rs diff --git a/src/test/ui/borrowck/move-in-pattern-mut.stderr b/tests/ui/borrowck/move-in-pattern-mut.stderr similarity index 100% rename from src/test/ui/borrowck/move-in-pattern-mut.stderr rename to tests/ui/borrowck/move-in-pattern-mut.stderr diff --git a/src/test/ui/borrowck/move-in-pattern.fixed b/tests/ui/borrowck/move-in-pattern.fixed similarity index 100% rename from src/test/ui/borrowck/move-in-pattern.fixed rename to tests/ui/borrowck/move-in-pattern.fixed diff --git a/src/test/ui/borrowck/move-in-pattern.rs b/tests/ui/borrowck/move-in-pattern.rs similarity index 100% rename from src/test/ui/borrowck/move-in-pattern.rs rename to tests/ui/borrowck/move-in-pattern.rs diff --git a/src/test/ui/borrowck/move-in-pattern.stderr b/tests/ui/borrowck/move-in-pattern.stderr similarity index 100% rename from src/test/ui/borrowck/move-in-pattern.stderr rename to tests/ui/borrowck/move-in-pattern.stderr diff --git a/src/test/ui/borrowck/move-in-static-initializer-issue-38520.rs b/tests/ui/borrowck/move-in-static-initializer-issue-38520.rs similarity index 100% rename from src/test/ui/borrowck/move-in-static-initializer-issue-38520.rs rename to tests/ui/borrowck/move-in-static-initializer-issue-38520.rs diff --git a/src/test/ui/borrowck/move-in-static-initializer-issue-38520.stderr b/tests/ui/borrowck/move-in-static-initializer-issue-38520.stderr similarity index 100% rename from src/test/ui/borrowck/move-in-static-initializer-issue-38520.stderr rename to tests/ui/borrowck/move-in-static-initializer-issue-38520.stderr diff --git a/src/test/ui/borrowck/mut-borrow-in-loop-2.fixed b/tests/ui/borrowck/mut-borrow-in-loop-2.fixed similarity index 100% rename from src/test/ui/borrowck/mut-borrow-in-loop-2.fixed rename to tests/ui/borrowck/mut-borrow-in-loop-2.fixed diff --git a/src/test/ui/borrowck/mut-borrow-in-loop-2.rs b/tests/ui/borrowck/mut-borrow-in-loop-2.rs similarity index 100% rename from src/test/ui/borrowck/mut-borrow-in-loop-2.rs rename to tests/ui/borrowck/mut-borrow-in-loop-2.rs diff --git a/src/test/ui/borrowck/mut-borrow-in-loop-2.stderr b/tests/ui/borrowck/mut-borrow-in-loop-2.stderr similarity index 100% rename from src/test/ui/borrowck/mut-borrow-in-loop-2.stderr rename to tests/ui/borrowck/mut-borrow-in-loop-2.stderr diff --git a/src/test/ui/borrowck/mut-borrow-in-loop.rs b/tests/ui/borrowck/mut-borrow-in-loop.rs similarity index 100% rename from src/test/ui/borrowck/mut-borrow-in-loop.rs rename to tests/ui/borrowck/mut-borrow-in-loop.rs diff --git a/src/test/ui/borrowck/mut-borrow-in-loop.stderr b/tests/ui/borrowck/mut-borrow-in-loop.stderr similarity index 100% rename from src/test/ui/borrowck/mut-borrow-in-loop.stderr rename to tests/ui/borrowck/mut-borrow-in-loop.stderr diff --git a/src/test/ui/borrowck/mut-borrow-of-mut-ref.rs b/tests/ui/borrowck/mut-borrow-of-mut-ref.rs similarity index 100% rename from src/test/ui/borrowck/mut-borrow-of-mut-ref.rs rename to tests/ui/borrowck/mut-borrow-of-mut-ref.rs diff --git a/src/test/ui/borrowck/mut-borrow-of-mut-ref.stderr b/tests/ui/borrowck/mut-borrow-of-mut-ref.stderr similarity index 100% rename from src/test/ui/borrowck/mut-borrow-of-mut-ref.stderr rename to tests/ui/borrowck/mut-borrow-of-mut-ref.stderr diff --git a/src/test/ui/borrowck/mut-borrow-outside-loop.rs b/tests/ui/borrowck/mut-borrow-outside-loop.rs similarity index 100% rename from src/test/ui/borrowck/mut-borrow-outside-loop.rs rename to tests/ui/borrowck/mut-borrow-outside-loop.rs diff --git a/src/test/ui/borrowck/mut-borrow-outside-loop.stderr b/tests/ui/borrowck/mut-borrow-outside-loop.stderr similarity index 100% rename from src/test/ui/borrowck/mut-borrow-outside-loop.stderr rename to tests/ui/borrowck/mut-borrow-outside-loop.stderr diff --git a/src/test/ui/borrowck/mutability-errors.rs b/tests/ui/borrowck/mutability-errors.rs similarity index 100% rename from src/test/ui/borrowck/mutability-errors.rs rename to tests/ui/borrowck/mutability-errors.rs diff --git a/src/test/ui/borrowck/mutability-errors.stderr b/tests/ui/borrowck/mutability-errors.stderr similarity index 100% rename from src/test/ui/borrowck/mutability-errors.stderr rename to tests/ui/borrowck/mutability-errors.stderr diff --git a/src/test/ui/borrowck/or-patterns.rs b/tests/ui/borrowck/or-patterns.rs similarity index 100% rename from src/test/ui/borrowck/or-patterns.rs rename to tests/ui/borrowck/or-patterns.rs diff --git a/src/test/ui/borrowck/or-patterns.stderr b/tests/ui/borrowck/or-patterns.stderr similarity index 100% rename from src/test/ui/borrowck/or-patterns.stderr rename to tests/ui/borrowck/or-patterns.stderr diff --git a/src/test/ui/borrowck/promote-ref-mut-in-let-issue-46557.rs b/tests/ui/borrowck/promote-ref-mut-in-let-issue-46557.rs similarity index 100% rename from src/test/ui/borrowck/promote-ref-mut-in-let-issue-46557.rs rename to tests/ui/borrowck/promote-ref-mut-in-let-issue-46557.rs diff --git a/src/test/ui/borrowck/promote-ref-mut-in-let-issue-46557.stderr b/tests/ui/borrowck/promote-ref-mut-in-let-issue-46557.stderr similarity index 100% rename from src/test/ui/borrowck/promote-ref-mut-in-let-issue-46557.stderr rename to tests/ui/borrowck/promote-ref-mut-in-let-issue-46557.stderr diff --git a/src/test/ui/borrowck/reassignment_immutable_fields.rs b/tests/ui/borrowck/reassignment_immutable_fields.rs similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields.rs rename to tests/ui/borrowck/reassignment_immutable_fields.rs diff --git a/src/test/ui/borrowck/reassignment_immutable_fields.stderr b/tests/ui/borrowck/reassignment_immutable_fields.stderr similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields.stderr rename to tests/ui/borrowck/reassignment_immutable_fields.stderr diff --git a/src/test/ui/borrowck/reassignment_immutable_fields_overlapping.rs b/tests/ui/borrowck/reassignment_immutable_fields_overlapping.rs similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields_overlapping.rs rename to tests/ui/borrowck/reassignment_immutable_fields_overlapping.rs diff --git a/src/test/ui/borrowck/reassignment_immutable_fields_overlapping.stderr b/tests/ui/borrowck/reassignment_immutable_fields_overlapping.stderr similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields_overlapping.stderr rename to tests/ui/borrowck/reassignment_immutable_fields_overlapping.stderr diff --git a/src/test/ui/borrowck/reassignment_immutable_fields_twice.rs b/tests/ui/borrowck/reassignment_immutable_fields_twice.rs similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields_twice.rs rename to tests/ui/borrowck/reassignment_immutable_fields_twice.rs diff --git a/src/test/ui/borrowck/reassignment_immutable_fields_twice.stderr b/tests/ui/borrowck/reassignment_immutable_fields_twice.stderr similarity index 100% rename from src/test/ui/borrowck/reassignment_immutable_fields_twice.stderr rename to tests/ui/borrowck/reassignment_immutable_fields_twice.stderr diff --git a/src/test/ui/borrowck/reborrow-sugg-move-then-borrow.rs b/tests/ui/borrowck/reborrow-sugg-move-then-borrow.rs similarity index 100% rename from src/test/ui/borrowck/reborrow-sugg-move-then-borrow.rs rename to tests/ui/borrowck/reborrow-sugg-move-then-borrow.rs diff --git a/src/test/ui/borrowck/reborrow-sugg-move-then-borrow.stderr b/tests/ui/borrowck/reborrow-sugg-move-then-borrow.stderr similarity index 100% rename from src/test/ui/borrowck/reborrow-sugg-move-then-borrow.stderr rename to tests/ui/borrowck/reborrow-sugg-move-then-borrow.stderr diff --git a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs b/tests/ui/borrowck/regions-bound-missing-bound-in-impl.rs similarity index 100% rename from src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs rename to tests/ui/borrowck/regions-bound-missing-bound-in-impl.rs diff --git a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr b/tests/ui/borrowck/regions-bound-missing-bound-in-impl.stderr similarity index 100% rename from src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr rename to tests/ui/borrowck/regions-bound-missing-bound-in-impl.stderr diff --git a/src/test/ui/borrowck/regions-escape-bound-fn-2.rs b/tests/ui/borrowck/regions-escape-bound-fn-2.rs similarity index 100% rename from src/test/ui/borrowck/regions-escape-bound-fn-2.rs rename to tests/ui/borrowck/regions-escape-bound-fn-2.rs diff --git a/src/test/ui/borrowck/regions-escape-bound-fn-2.stderr b/tests/ui/borrowck/regions-escape-bound-fn-2.stderr similarity index 100% rename from src/test/ui/borrowck/regions-escape-bound-fn-2.stderr rename to tests/ui/borrowck/regions-escape-bound-fn-2.stderr diff --git a/src/test/ui/borrowck/regions-escape-bound-fn.rs b/tests/ui/borrowck/regions-escape-bound-fn.rs similarity index 100% rename from src/test/ui/borrowck/regions-escape-bound-fn.rs rename to tests/ui/borrowck/regions-escape-bound-fn.rs diff --git a/src/test/ui/borrowck/regions-escape-bound-fn.stderr b/tests/ui/borrowck/regions-escape-bound-fn.stderr similarity index 100% rename from src/test/ui/borrowck/regions-escape-bound-fn.stderr rename to tests/ui/borrowck/regions-escape-bound-fn.stderr diff --git a/src/test/ui/borrowck/regions-escape-unboxed-closure.rs b/tests/ui/borrowck/regions-escape-unboxed-closure.rs similarity index 100% rename from src/test/ui/borrowck/regions-escape-unboxed-closure.rs rename to tests/ui/borrowck/regions-escape-unboxed-closure.rs diff --git a/src/test/ui/borrowck/regions-escape-unboxed-closure.stderr b/tests/ui/borrowck/regions-escape-unboxed-closure.stderr similarity index 100% rename from src/test/ui/borrowck/regions-escape-unboxed-closure.stderr rename to tests/ui/borrowck/regions-escape-unboxed-closure.stderr diff --git a/src/test/ui/borrowck/return-local-binding-from-desugaring.rs b/tests/ui/borrowck/return-local-binding-from-desugaring.rs similarity index 100% rename from src/test/ui/borrowck/return-local-binding-from-desugaring.rs rename to tests/ui/borrowck/return-local-binding-from-desugaring.rs diff --git a/src/test/ui/borrowck/return-local-binding-from-desugaring.stderr b/tests/ui/borrowck/return-local-binding-from-desugaring.stderr similarity index 100% rename from src/test/ui/borrowck/return-local-binding-from-desugaring.stderr rename to tests/ui/borrowck/return-local-binding-from-desugaring.stderr diff --git a/src/test/ui/borrowck/slice-index-bounds-check-invalidation.rs b/tests/ui/borrowck/slice-index-bounds-check-invalidation.rs similarity index 100% rename from src/test/ui/borrowck/slice-index-bounds-check-invalidation.rs rename to tests/ui/borrowck/slice-index-bounds-check-invalidation.rs diff --git a/src/test/ui/borrowck/slice-index-bounds-check-invalidation.stderr b/tests/ui/borrowck/slice-index-bounds-check-invalidation.stderr similarity index 100% rename from src/test/ui/borrowck/slice-index-bounds-check-invalidation.stderr rename to tests/ui/borrowck/slice-index-bounds-check-invalidation.stderr diff --git a/src/test/ui/borrowck/suggest-as-ref-on-mut-closure.rs b/tests/ui/borrowck/suggest-as-ref-on-mut-closure.rs similarity index 100% rename from src/test/ui/borrowck/suggest-as-ref-on-mut-closure.rs rename to tests/ui/borrowck/suggest-as-ref-on-mut-closure.rs diff --git a/src/test/ui/borrowck/suggest-as-ref-on-mut-closure.stderr b/tests/ui/borrowck/suggest-as-ref-on-mut-closure.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-as-ref-on-mut-closure.stderr rename to tests/ui/borrowck/suggest-as-ref-on-mut-closure.stderr diff --git a/src/test/ui/borrowck/suggest-assign-rvalue.rs b/tests/ui/borrowck/suggest-assign-rvalue.rs similarity index 100% rename from src/test/ui/borrowck/suggest-assign-rvalue.rs rename to tests/ui/borrowck/suggest-assign-rvalue.rs diff --git a/src/test/ui/borrowck/suggest-assign-rvalue.stderr b/tests/ui/borrowck/suggest-assign-rvalue.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-assign-rvalue.stderr rename to tests/ui/borrowck/suggest-assign-rvalue.stderr diff --git a/src/test/ui/borrowck/suggest-local-var-double-mut.rs b/tests/ui/borrowck/suggest-local-var-double-mut.rs similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-double-mut.rs rename to tests/ui/borrowck/suggest-local-var-double-mut.rs diff --git a/src/test/ui/borrowck/suggest-local-var-double-mut.stderr b/tests/ui/borrowck/suggest-local-var-double-mut.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-double-mut.stderr rename to tests/ui/borrowck/suggest-local-var-double-mut.stderr diff --git a/src/test/ui/borrowck/suggest-local-var-for-vector.rs b/tests/ui/borrowck/suggest-local-var-for-vector.rs similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-for-vector.rs rename to tests/ui/borrowck/suggest-local-var-for-vector.rs diff --git a/src/test/ui/borrowck/suggest-local-var-for-vector.stderr b/tests/ui/borrowck/suggest-local-var-for-vector.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-for-vector.stderr rename to tests/ui/borrowck/suggest-local-var-for-vector.stderr diff --git a/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs b/tests/ui/borrowck/suggest-local-var-imm-and-mut.rs similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs rename to tests/ui/borrowck/suggest-local-var-imm-and-mut.rs diff --git a/src/test/ui/borrowck/suggest-local-var-imm-and-mut.stderr b/tests/ui/borrowck/suggest-local-var-imm-and-mut.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-local-var-imm-and-mut.stderr rename to tests/ui/borrowck/suggest-local-var-imm-and-mut.stderr diff --git a/src/test/ui/borrowck/suggest-storing-local-var-for-vector.rs b/tests/ui/borrowck/suggest-storing-local-var-for-vector.rs similarity index 100% rename from src/test/ui/borrowck/suggest-storing-local-var-for-vector.rs rename to tests/ui/borrowck/suggest-storing-local-var-for-vector.rs diff --git a/src/test/ui/borrowck/suggest-storing-local-var-for-vector.stderr b/tests/ui/borrowck/suggest-storing-local-var-for-vector.stderr similarity index 100% rename from src/test/ui/borrowck/suggest-storing-local-var-for-vector.stderr rename to tests/ui/borrowck/suggest-storing-local-var-for-vector.stderr diff --git a/src/test/ui/borrowck/two-phase-across-loop.rs b/tests/ui/borrowck/two-phase-across-loop.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-across-loop.rs rename to tests/ui/borrowck/two-phase-across-loop.rs diff --git a/src/test/ui/borrowck/two-phase-across-loop.stderr b/tests/ui/borrowck/two-phase-across-loop.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-across-loop.stderr rename to tests/ui/borrowck/two-phase-across-loop.stderr diff --git a/src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr b/tests/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr rename to tests/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr diff --git a/src/test/ui/borrowck/two-phase-activation-sharing-interference.rs b/tests/ui/borrowck/two-phase-activation-sharing-interference.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-activation-sharing-interference.rs rename to tests/ui/borrowck/two-phase-activation-sharing-interference.rs diff --git a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr b/tests/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr rename to tests/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr diff --git a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs b/tests/ui/borrowck/two-phase-allow-access-during-reservation.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs rename to tests/ui/borrowck/two-phase-allow-access-during-reservation.rs diff --git a/src/test/ui/borrowck/two-phase-baseline.rs b/tests/ui/borrowck/two-phase-baseline.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-baseline.rs rename to tests/ui/borrowck/two-phase-baseline.rs diff --git a/src/test/ui/borrowck/two-phase-bin-ops.rs b/tests/ui/borrowck/two-phase-bin-ops.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-bin-ops.rs rename to tests/ui/borrowck/two-phase-bin-ops.rs diff --git a/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs b/tests/ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs rename to tests/ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs diff --git a/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr b/tests/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr rename to tests/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr diff --git a/src/test/ui/borrowck/two-phase-control-flow-split-before-activation.rs b/tests/ui/borrowck/two-phase-control-flow-split-before-activation.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-control-flow-split-before-activation.rs rename to tests/ui/borrowck/two-phase-control-flow-split-before-activation.rs diff --git a/src/test/ui/borrowck/two-phase-method-receivers.rs b/tests/ui/borrowck/two-phase-method-receivers.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-method-receivers.rs rename to tests/ui/borrowck/two-phase-method-receivers.rs diff --git a/src/test/ui/borrowck/two-phase-multi-mut.rs b/tests/ui/borrowck/two-phase-multi-mut.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-multi-mut.rs rename to tests/ui/borrowck/two-phase-multi-mut.rs diff --git a/src/test/ui/borrowck/two-phase-multi-mut.stderr b/tests/ui/borrowck/two-phase-multi-mut.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-multi-mut.stderr rename to tests/ui/borrowck/two-phase-multi-mut.stderr diff --git a/src/test/ui/borrowck/two-phase-multiple-activations.rs b/tests/ui/borrowck/two-phase-multiple-activations.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-multiple-activations.rs rename to tests/ui/borrowck/two-phase-multiple-activations.rs diff --git a/src/test/ui/borrowck/two-phase-nonrecv-autoref.base.stderr b/tests/ui/borrowck/two-phase-nonrecv-autoref.base.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-nonrecv-autoref.base.stderr rename to tests/ui/borrowck/two-phase-nonrecv-autoref.base.stderr diff --git a/src/test/ui/borrowck/two-phase-nonrecv-autoref.rs b/tests/ui/borrowck/two-phase-nonrecv-autoref.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-nonrecv-autoref.rs rename to tests/ui/borrowck/two-phase-nonrecv-autoref.rs diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs b/tests/ui/borrowck/two-phase-reservation-sharing-interference-2.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs rename to tests/ui/borrowck/two-phase-reservation-sharing-interference-2.rs diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.stderr b/tests/ui/borrowck/two-phase-reservation-sharing-interference-2.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.stderr rename to tests/ui/borrowck/two-phase-reservation-sharing-interference-2.stderr diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr b/tests/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr rename to tests/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs b/tests/ui/borrowck/two-phase-reservation-sharing-interference.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs rename to tests/ui/borrowck/two-phase-reservation-sharing-interference.rs diff --git a/src/test/ui/borrowck/two-phase-sneaky.rs b/tests/ui/borrowck/two-phase-sneaky.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-sneaky.rs rename to tests/ui/borrowck/two-phase-sneaky.rs diff --git a/src/test/ui/borrowck/two-phase-sneaky.stderr b/tests/ui/borrowck/two-phase-sneaky.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-sneaky.stderr rename to tests/ui/borrowck/two-phase-sneaky.stderr diff --git a/src/test/ui/borrowck/two-phase-surprise-no-conflict.rs b/tests/ui/borrowck/two-phase-surprise-no-conflict.rs similarity index 100% rename from src/test/ui/borrowck/two-phase-surprise-no-conflict.rs rename to tests/ui/borrowck/two-phase-surprise-no-conflict.rs diff --git a/src/test/ui/borrowck/two-phase-surprise-no-conflict.stderr b/tests/ui/borrowck/two-phase-surprise-no-conflict.stderr similarity index 100% rename from src/test/ui/borrowck/two-phase-surprise-no-conflict.stderr rename to tests/ui/borrowck/two-phase-surprise-no-conflict.stderr diff --git a/src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.fixed b/tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.fixed similarity index 100% rename from src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.fixed rename to tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.fixed diff --git a/src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.rs b/tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.rs similarity index 100% rename from src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.rs rename to tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.rs diff --git a/src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.stderr b/tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.stderr similarity index 100% rename from src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.stderr rename to tests/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.stderr diff --git a/src/test/ui/bounds-lifetime.rs b/tests/ui/bounds-lifetime.rs similarity index 100% rename from src/test/ui/bounds-lifetime.rs rename to tests/ui/bounds-lifetime.rs diff --git a/src/test/ui/bounds-lifetime.stderr b/tests/ui/bounds-lifetime.stderr similarity index 100% rename from src/test/ui/bounds-lifetime.stderr rename to tests/ui/bounds-lifetime.stderr diff --git a/src/test/ui/box/alloc-unstable-fail.rs b/tests/ui/box/alloc-unstable-fail.rs similarity index 100% rename from src/test/ui/box/alloc-unstable-fail.rs rename to tests/ui/box/alloc-unstable-fail.rs diff --git a/src/test/ui/box/alloc-unstable-fail.stderr b/tests/ui/box/alloc-unstable-fail.stderr similarity index 100% rename from src/test/ui/box/alloc-unstable-fail.stderr rename to tests/ui/box/alloc-unstable-fail.stderr diff --git a/src/test/ui/box/alloc-unstable.rs b/tests/ui/box/alloc-unstable.rs similarity index 100% rename from src/test/ui/box/alloc-unstable.rs rename to tests/ui/box/alloc-unstable.rs diff --git a/src/test/ui/box/into-boxed-slice-fail.rs b/tests/ui/box/into-boxed-slice-fail.rs similarity index 100% rename from src/test/ui/box/into-boxed-slice-fail.rs rename to tests/ui/box/into-boxed-slice-fail.rs diff --git a/src/test/ui/box/into-boxed-slice-fail.stderr b/tests/ui/box/into-boxed-slice-fail.stderr similarity index 100% rename from src/test/ui/box/into-boxed-slice-fail.stderr rename to tests/ui/box/into-boxed-slice-fail.stderr diff --git a/src/test/ui/box/into-boxed-slice.rs b/tests/ui/box/into-boxed-slice.rs similarity index 100% rename from src/test/ui/box/into-boxed-slice.rs rename to tests/ui/box/into-boxed-slice.rs diff --git a/src/test/ui/box/issue-82446.rs b/tests/ui/box/issue-82446.rs similarity index 100% rename from src/test/ui/box/issue-82446.rs rename to tests/ui/box/issue-82446.rs diff --git a/src/test/ui/box/issue-82446.stderr b/tests/ui/box/issue-82446.stderr similarity index 100% rename from src/test/ui/box/issue-82446.stderr rename to tests/ui/box/issue-82446.stderr diff --git a/src/test/ui/box/issue-95036.rs b/tests/ui/box/issue-95036.rs similarity index 100% rename from src/test/ui/box/issue-95036.rs rename to tests/ui/box/issue-95036.rs diff --git a/src/test/ui/box/large-allocator-ice.rs b/tests/ui/box/large-allocator-ice.rs similarity index 100% rename from src/test/ui/box/large-allocator-ice.rs rename to tests/ui/box/large-allocator-ice.rs diff --git a/src/test/ui/box/leak-alloc.rs b/tests/ui/box/leak-alloc.rs similarity index 100% rename from src/test/ui/box/leak-alloc.rs rename to tests/ui/box/leak-alloc.rs diff --git a/src/test/ui/box/leak-alloc.stderr b/tests/ui/box/leak-alloc.stderr similarity index 100% rename from src/test/ui/box/leak-alloc.stderr rename to tests/ui/box/leak-alloc.stderr diff --git a/src/test/ui/box/new-box-syntax.rs b/tests/ui/box/new-box-syntax.rs similarity index 100% rename from src/test/ui/box/new-box-syntax.rs rename to tests/ui/box/new-box-syntax.rs diff --git a/src/test/ui/box/new-box.rs b/tests/ui/box/new-box.rs similarity index 100% rename from src/test/ui/box/new-box.rs rename to tests/ui/box/new-box.rs diff --git a/src/test/ui/box/new.rs b/tests/ui/box/new.rs similarity index 100% rename from src/test/ui/box/new.rs rename to tests/ui/box/new.rs diff --git a/src/test/ui/box/thin_align.rs b/tests/ui/box/thin_align.rs similarity index 100% rename from src/test/ui/box/thin_align.rs rename to tests/ui/box/thin_align.rs diff --git a/src/test/ui/box/thin_drop.rs b/tests/ui/box/thin_drop.rs similarity index 100% rename from src/test/ui/box/thin_drop.rs rename to tests/ui/box/thin_drop.rs diff --git a/src/test/ui/box/thin_new.rs b/tests/ui/box/thin_new.rs similarity index 100% rename from src/test/ui/box/thin_new.rs rename to tests/ui/box/thin_new.rs diff --git a/src/test/ui/box/thin_zst.rs b/tests/ui/box/thin_zst.rs similarity index 100% rename from src/test/ui/box/thin_zst.rs rename to tests/ui/box/thin_zst.rs diff --git a/src/test/ui/break-diverging-value.rs b/tests/ui/break-diverging-value.rs similarity index 100% rename from src/test/ui/break-diverging-value.rs rename to tests/ui/break-diverging-value.rs diff --git a/src/test/ui/break-diverging-value.stderr b/tests/ui/break-diverging-value.stderr similarity index 100% rename from src/test/ui/break-diverging-value.stderr rename to tests/ui/break-diverging-value.stderr diff --git a/src/test/ui/btreemap/btreemap-index-mut.rs b/tests/ui/btreemap/btreemap-index-mut.rs similarity index 100% rename from src/test/ui/btreemap/btreemap-index-mut.rs rename to tests/ui/btreemap/btreemap-index-mut.rs diff --git a/src/test/ui/btreemap/btreemap-index-mut.stderr b/tests/ui/btreemap/btreemap-index-mut.stderr similarity index 100% rename from src/test/ui/btreemap/btreemap-index-mut.stderr rename to tests/ui/btreemap/btreemap-index-mut.stderr diff --git a/src/test/ui/btreemap/btreemap_dropck.rs b/tests/ui/btreemap/btreemap_dropck.rs similarity index 100% rename from src/test/ui/btreemap/btreemap_dropck.rs rename to tests/ui/btreemap/btreemap_dropck.rs diff --git a/src/test/ui/btreemap/btreemap_dropck.stderr b/tests/ui/btreemap/btreemap_dropck.stderr similarity index 100% rename from src/test/ui/btreemap/btreemap_dropck.stderr rename to tests/ui/btreemap/btreemap_dropck.stderr diff --git a/src/test/ui/btreemap/btreemap_into_iterator_lifetime.rs b/tests/ui/btreemap/btreemap_into_iterator_lifetime.rs similarity index 100% rename from src/test/ui/btreemap/btreemap_into_iterator_lifetime.rs rename to tests/ui/btreemap/btreemap_into_iterator_lifetime.rs diff --git a/src/test/ui/builtin-clone-unwind.rs b/tests/ui/builtin-clone-unwind.rs similarity index 100% rename from src/test/ui/builtin-clone-unwind.rs rename to tests/ui/builtin-clone-unwind.rs diff --git a/src/test/ui/builtin-superkinds/auxiliary/trait_superkinds_in_metadata.rs b/tests/ui/builtin-superkinds/auxiliary/trait_superkinds_in_metadata.rs similarity index 100% rename from src/test/ui/builtin-superkinds/auxiliary/trait_superkinds_in_metadata.rs rename to tests/ui/builtin-superkinds/auxiliary/trait_superkinds_in_metadata.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-capabilities-transitive.rs b/tests/ui/builtin-superkinds/builtin-superkinds-capabilities-transitive.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-capabilities-transitive.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-capabilities-transitive.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-capabilities-xc.rs b/tests/ui/builtin-superkinds/builtin-superkinds-capabilities-xc.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-capabilities-xc.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-capabilities-xc.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-capabilities.rs b/tests/ui/builtin-superkinds/builtin-superkinds-capabilities.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-capabilities.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-capabilities.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-double-superkind.rs b/tests/ui/builtin-superkinds/builtin-superkinds-double-superkind.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-double-superkind.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-double-superkind.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-double-superkind.stderr b/tests/ui/builtin-superkinds/builtin-superkinds-double-superkind.stderr similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-double-superkind.stderr rename to tests/ui/builtin-superkinds/builtin-superkinds-double-superkind.stderr diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata.rs b/tests/ui/builtin-superkinds/builtin-superkinds-in-metadata.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-in-metadata.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata.stderr b/tests/ui/builtin-superkinds/builtin-superkinds-in-metadata.stderr similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata.stderr rename to tests/ui/builtin-superkinds/builtin-superkinds-in-metadata.stderr diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata2.rs b/tests/ui/builtin-superkinds/builtin-superkinds-in-metadata2.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-in-metadata2.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-in-metadata2.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-phantom-typaram.rs b/tests/ui/builtin-superkinds/builtin-superkinds-phantom-typaram.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-phantom-typaram.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-phantom-typaram.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-self-type.rs b/tests/ui/builtin-superkinds/builtin-superkinds-self-type.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-self-type.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-self-type.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-self-type.stderr b/tests/ui/builtin-superkinds/builtin-superkinds-self-type.stderr similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-self-type.stderr rename to tests/ui/builtin-superkinds/builtin-superkinds-self-type.stderr diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-simple.rs b/tests/ui/builtin-superkinds/builtin-superkinds-simple.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-simple.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-simple.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-simple.stderr b/tests/ui/builtin-superkinds/builtin-superkinds-simple.stderr similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-simple.stderr rename to tests/ui/builtin-superkinds/builtin-superkinds-simple.stderr diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-simple2.rs b/tests/ui/builtin-superkinds/builtin-superkinds-simple2.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-simple2.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-simple2.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.rs b/tests/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.rs diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.stderr b/tests/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.stderr similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.stderr rename to tests/ui/builtin-superkinds/builtin-superkinds-typaram-not-send.stderr diff --git a/src/test/ui/builtin-superkinds/builtin-superkinds-typaram.rs b/tests/ui/builtin-superkinds/builtin-superkinds-typaram.rs similarity index 100% rename from src/test/ui/builtin-superkinds/builtin-superkinds-typaram.rs rename to tests/ui/builtin-superkinds/builtin-superkinds-typaram.rs diff --git a/src/test/ui/by-move-pattern-binding.rs b/tests/ui/by-move-pattern-binding.rs similarity index 100% rename from src/test/ui/by-move-pattern-binding.rs rename to tests/ui/by-move-pattern-binding.rs diff --git a/src/test/ui/by-move-pattern-binding.stderr b/tests/ui/by-move-pattern-binding.stderr similarity index 100% rename from src/test/ui/by-move-pattern-binding.stderr rename to tests/ui/by-move-pattern-binding.stderr diff --git a/src/test/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs similarity index 100% rename from src/test/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs rename to tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs diff --git a/src/test/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr similarity index 100% rename from src/test/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr rename to tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr diff --git a/src/test/ui/c-variadic/issue-32201.rs b/tests/ui/c-variadic/issue-32201.rs similarity index 100% rename from src/test/ui/c-variadic/issue-32201.rs rename to tests/ui/c-variadic/issue-32201.rs diff --git a/src/test/ui/c-variadic/issue-32201.stderr b/tests/ui/c-variadic/issue-32201.stderr similarity index 100% rename from src/test/ui/c-variadic/issue-32201.stderr rename to tests/ui/c-variadic/issue-32201.stderr diff --git a/src/test/ui/c-variadic/issue-86053-1.rs b/tests/ui/c-variadic/issue-86053-1.rs similarity index 100% rename from src/test/ui/c-variadic/issue-86053-1.rs rename to tests/ui/c-variadic/issue-86053-1.rs diff --git a/src/test/ui/c-variadic/issue-86053-1.stderr b/tests/ui/c-variadic/issue-86053-1.stderr similarity index 100% rename from src/test/ui/c-variadic/issue-86053-1.stderr rename to tests/ui/c-variadic/issue-86053-1.stderr diff --git a/src/test/ui/c-variadic/issue-86053-2.rs b/tests/ui/c-variadic/issue-86053-2.rs similarity index 100% rename from src/test/ui/c-variadic/issue-86053-2.rs rename to tests/ui/c-variadic/issue-86053-2.rs diff --git a/src/test/ui/c-variadic/issue-86053-2.stderr b/tests/ui/c-variadic/issue-86053-2.stderr similarity index 100% rename from src/test/ui/c-variadic/issue-86053-2.stderr rename to tests/ui/c-variadic/issue-86053-2.stderr diff --git a/src/test/ui/c-variadic/variadic-ffi-1.rs b/tests/ui/c-variadic/variadic-ffi-1.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-1.rs rename to tests/ui/c-variadic/variadic-ffi-1.rs diff --git a/src/test/ui/c-variadic/variadic-ffi-1.stderr b/tests/ui/c-variadic/variadic-ffi-1.stderr similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-1.stderr rename to tests/ui/c-variadic/variadic-ffi-1.stderr diff --git a/src/test/ui/c-variadic/variadic-ffi-2.rs b/tests/ui/c-variadic/variadic-ffi-2.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-2.rs rename to tests/ui/c-variadic/variadic-ffi-2.rs diff --git a/src/test/ui/c-variadic/variadic-ffi-2.stderr b/tests/ui/c-variadic/variadic-ffi-2.stderr similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-2.stderr rename to tests/ui/c-variadic/variadic-ffi-2.stderr diff --git a/src/test/ui/c-variadic/variadic-ffi-4.rs b/tests/ui/c-variadic/variadic-ffi-4.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-4.rs rename to tests/ui/c-variadic/variadic-ffi-4.rs diff --git a/src/test/ui/c-variadic/variadic-ffi-4.stderr b/tests/ui/c-variadic/variadic-ffi-4.stderr similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-4.stderr rename to tests/ui/c-variadic/variadic-ffi-4.stderr diff --git a/src/test/ui/c-variadic/variadic-ffi-6.rs b/tests/ui/c-variadic/variadic-ffi-6.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-6.rs rename to tests/ui/c-variadic/variadic-ffi-6.rs diff --git a/src/test/ui/c-variadic/variadic-ffi-6.stderr b/tests/ui/c-variadic/variadic-ffi-6.stderr similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-6.stderr rename to tests/ui/c-variadic/variadic-ffi-6.stderr diff --git a/src/test/ui/c-variadic/variadic-ffi-no-fixed-args.rs b/tests/ui/c-variadic/variadic-ffi-no-fixed-args.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-no-fixed-args.rs rename to tests/ui/c-variadic/variadic-ffi-no-fixed-args.rs diff --git a/src/test/ui/c-variadic/variadic-ffi-no-fixed-args.stderr b/tests/ui/c-variadic/variadic-ffi-no-fixed-args.stderr similarity index 100% rename from src/test/ui/c-variadic/variadic-ffi-no-fixed-args.stderr rename to tests/ui/c-variadic/variadic-ffi-no-fixed-args.stderr diff --git a/src/test/ui/c-variadic/variadic-unreachable-arg-error.rs b/tests/ui/c-variadic/variadic-unreachable-arg-error.rs similarity index 100% rename from src/test/ui/c-variadic/variadic-unreachable-arg-error.rs rename to tests/ui/c-variadic/variadic-unreachable-arg-error.rs diff --git a/src/test/ui/can-copy-pod.rs b/tests/ui/can-copy-pod.rs similarity index 100% rename from src/test/ui/can-copy-pod.rs rename to tests/ui/can-copy-pod.rs diff --git a/src/test/ui/cancel-clean-via-immediate-rvalue-ref.rs b/tests/ui/cancel-clean-via-immediate-rvalue-ref.rs similarity index 100% rename from src/test/ui/cancel-clean-via-immediate-rvalue-ref.rs rename to tests/ui/cancel-clean-via-immediate-rvalue-ref.rs diff --git a/src/test/ui/cannot-mutate-captured-non-mut-var.rs b/tests/ui/cannot-mutate-captured-non-mut-var.rs similarity index 100% rename from src/test/ui/cannot-mutate-captured-non-mut-var.rs rename to tests/ui/cannot-mutate-captured-non-mut-var.rs diff --git a/src/test/ui/cannot-mutate-captured-non-mut-var.stderr b/tests/ui/cannot-mutate-captured-non-mut-var.stderr similarity index 100% rename from src/test/ui/cannot-mutate-captured-non-mut-var.stderr rename to tests/ui/cannot-mutate-captured-non-mut-var.stderr diff --git a/src/test/ui/capture1.rs b/tests/ui/capture1.rs similarity index 100% rename from src/test/ui/capture1.rs rename to tests/ui/capture1.rs diff --git a/src/test/ui/capture1.stderr b/tests/ui/capture1.stderr similarity index 100% rename from src/test/ui/capture1.stderr rename to tests/ui/capture1.stderr diff --git a/src/test/ui/cast/cast-as-bool.rs b/tests/ui/cast/cast-as-bool.rs similarity index 100% rename from src/test/ui/cast/cast-as-bool.rs rename to tests/ui/cast/cast-as-bool.rs diff --git a/src/test/ui/cast/cast-as-bool.stderr b/tests/ui/cast/cast-as-bool.stderr similarity index 100% rename from src/test/ui/cast/cast-as-bool.stderr rename to tests/ui/cast/cast-as-bool.stderr diff --git a/src/test/ui/cast/cast-char.rs b/tests/ui/cast/cast-char.rs similarity index 100% rename from src/test/ui/cast/cast-char.rs rename to tests/ui/cast/cast-char.rs diff --git a/src/test/ui/cast/cast-char.stderr b/tests/ui/cast/cast-char.stderr similarity index 100% rename from src/test/ui/cast/cast-char.stderr rename to tests/ui/cast/cast-char.stderr diff --git a/src/test/ui/cast/cast-does-fallback.rs b/tests/ui/cast/cast-does-fallback.rs similarity index 100% rename from src/test/ui/cast/cast-does-fallback.rs rename to tests/ui/cast/cast-does-fallback.rs diff --git a/src/test/ui/cast/cast-errors-issue-43825.rs b/tests/ui/cast/cast-errors-issue-43825.rs similarity index 100% rename from src/test/ui/cast/cast-errors-issue-43825.rs rename to tests/ui/cast/cast-errors-issue-43825.rs diff --git a/src/test/ui/cast/cast-errors-issue-43825.stderr b/tests/ui/cast/cast-errors-issue-43825.stderr similarity index 100% rename from src/test/ui/cast/cast-errors-issue-43825.stderr rename to tests/ui/cast/cast-errors-issue-43825.stderr diff --git a/src/test/ui/cast/cast-from-nil.rs b/tests/ui/cast/cast-from-nil.rs similarity index 100% rename from src/test/ui/cast/cast-from-nil.rs rename to tests/ui/cast/cast-from-nil.rs diff --git a/src/test/ui/cast/cast-from-nil.stderr b/tests/ui/cast/cast-from-nil.stderr similarity index 100% rename from src/test/ui/cast/cast-from-nil.stderr rename to tests/ui/cast/cast-from-nil.stderr diff --git a/src/test/ui/cast/cast-int-to-char.rs b/tests/ui/cast/cast-int-to-char.rs similarity index 100% rename from src/test/ui/cast/cast-int-to-char.rs rename to tests/ui/cast/cast-int-to-char.rs diff --git a/src/test/ui/cast/cast-int-to-char.stderr b/tests/ui/cast/cast-int-to-char.stderr similarity index 100% rename from src/test/ui/cast/cast-int-to-char.stderr rename to tests/ui/cast/cast-int-to-char.stderr diff --git a/src/test/ui/cast/cast-macro-lhs.rs b/tests/ui/cast/cast-macro-lhs.rs similarity index 100% rename from src/test/ui/cast/cast-macro-lhs.rs rename to tests/ui/cast/cast-macro-lhs.rs diff --git a/src/test/ui/cast/cast-macro-lhs.stderr b/tests/ui/cast/cast-macro-lhs.stderr similarity index 100% rename from src/test/ui/cast/cast-macro-lhs.stderr rename to tests/ui/cast/cast-macro-lhs.stderr diff --git a/src/test/ui/cast/cast-pointee-projection.rs b/tests/ui/cast/cast-pointee-projection.rs similarity index 100% rename from src/test/ui/cast/cast-pointee-projection.rs rename to tests/ui/cast/cast-pointee-projection.rs diff --git a/src/test/ui/cast/cast-region-to-uint.rs b/tests/ui/cast/cast-region-to-uint.rs similarity index 100% rename from src/test/ui/cast/cast-region-to-uint.rs rename to tests/ui/cast/cast-region-to-uint.rs diff --git a/src/test/ui/cast/cast-rfc0401-2.rs b/tests/ui/cast/cast-rfc0401-2.rs similarity index 100% rename from src/test/ui/cast/cast-rfc0401-2.rs rename to tests/ui/cast/cast-rfc0401-2.rs diff --git a/src/test/ui/cast/cast-rfc0401-2.stderr b/tests/ui/cast/cast-rfc0401-2.stderr similarity index 100% rename from src/test/ui/cast/cast-rfc0401-2.stderr rename to tests/ui/cast/cast-rfc0401-2.stderr diff --git a/src/test/ui/cast/cast-rfc0401-vtable-kinds.rs b/tests/ui/cast/cast-rfc0401-vtable-kinds.rs similarity index 100% rename from src/test/ui/cast/cast-rfc0401-vtable-kinds.rs rename to tests/ui/cast/cast-rfc0401-vtable-kinds.rs diff --git a/src/test/ui/cast/cast-rfc0401.rs b/tests/ui/cast/cast-rfc0401.rs similarity index 100% rename from src/test/ui/cast/cast-rfc0401.rs rename to tests/ui/cast/cast-rfc0401.rs diff --git a/src/test/ui/cast/cast-to-bare-fn.rs b/tests/ui/cast/cast-to-bare-fn.rs similarity index 100% rename from src/test/ui/cast/cast-to-bare-fn.rs rename to tests/ui/cast/cast-to-bare-fn.rs diff --git a/src/test/ui/cast/cast-to-bare-fn.stderr b/tests/ui/cast/cast-to-bare-fn.stderr similarity index 100% rename from src/test/ui/cast/cast-to-bare-fn.stderr rename to tests/ui/cast/cast-to-bare-fn.stderr diff --git a/src/test/ui/cast/cast-to-infer-ty.rs b/tests/ui/cast/cast-to-infer-ty.rs similarity index 100% rename from src/test/ui/cast/cast-to-infer-ty.rs rename to tests/ui/cast/cast-to-infer-ty.rs diff --git a/src/test/ui/cast/cast-to-nil.rs b/tests/ui/cast/cast-to-nil.rs similarity index 100% rename from src/test/ui/cast/cast-to-nil.rs rename to tests/ui/cast/cast-to-nil.rs diff --git a/src/test/ui/cast/cast-to-nil.stderr b/tests/ui/cast/cast-to-nil.stderr similarity index 100% rename from src/test/ui/cast/cast-to-nil.stderr rename to tests/ui/cast/cast-to-nil.stderr diff --git a/src/test/ui/cast/cast-to-unsized-trait-object-suggestion.rs b/tests/ui/cast/cast-to-unsized-trait-object-suggestion.rs similarity index 100% rename from src/test/ui/cast/cast-to-unsized-trait-object-suggestion.rs rename to tests/ui/cast/cast-to-unsized-trait-object-suggestion.rs diff --git a/src/test/ui/cast/cast-to-unsized-trait-object-suggestion.stderr b/tests/ui/cast/cast-to-unsized-trait-object-suggestion.stderr similarity index 100% rename from src/test/ui/cast/cast-to-unsized-trait-object-suggestion.stderr rename to tests/ui/cast/cast-to-unsized-trait-object-suggestion.stderr diff --git a/src/test/ui/cast/cast.rs b/tests/ui/cast/cast.rs similarity index 100% rename from src/test/ui/cast/cast.rs rename to tests/ui/cast/cast.rs diff --git a/src/test/ui/cast/casts-differing-anon.rs b/tests/ui/cast/casts-differing-anon.rs similarity index 100% rename from src/test/ui/cast/casts-differing-anon.rs rename to tests/ui/cast/casts-differing-anon.rs diff --git a/src/test/ui/cast/casts-differing-anon.stderr b/tests/ui/cast/casts-differing-anon.stderr similarity index 100% rename from src/test/ui/cast/casts-differing-anon.stderr rename to tests/ui/cast/casts-differing-anon.stderr diff --git a/src/test/ui/cast/casts-issue-46365.rs b/tests/ui/cast/casts-issue-46365.rs similarity index 100% rename from src/test/ui/cast/casts-issue-46365.rs rename to tests/ui/cast/casts-issue-46365.rs diff --git a/src/test/ui/cast/casts-issue-46365.stderr b/tests/ui/cast/casts-issue-46365.stderr similarity index 100% rename from src/test/ui/cast/casts-issue-46365.stderr rename to tests/ui/cast/casts-issue-46365.stderr diff --git a/src/test/ui/cast/codegen-object-shim.rs b/tests/ui/cast/codegen-object-shim.rs similarity index 100% rename from src/test/ui/cast/codegen-object-shim.rs rename to tests/ui/cast/codegen-object-shim.rs diff --git a/src/test/ui/cast/fat-ptr-cast-rpass.rs b/tests/ui/cast/fat-ptr-cast-rpass.rs similarity index 100% rename from src/test/ui/cast/fat-ptr-cast-rpass.rs rename to tests/ui/cast/fat-ptr-cast-rpass.rs diff --git a/src/test/ui/cast/fat-ptr-cast.rs b/tests/ui/cast/fat-ptr-cast.rs similarity index 100% rename from src/test/ui/cast/fat-ptr-cast.rs rename to tests/ui/cast/fat-ptr-cast.rs diff --git a/src/test/ui/cast/fat-ptr-cast.stderr b/tests/ui/cast/fat-ptr-cast.stderr similarity index 100% rename from src/test/ui/cast/fat-ptr-cast.stderr rename to tests/ui/cast/fat-ptr-cast.stderr diff --git a/src/test/ui/cast/issue-10991.rs b/tests/ui/cast/issue-10991.rs similarity index 100% rename from src/test/ui/cast/issue-10991.rs rename to tests/ui/cast/issue-10991.rs diff --git a/src/test/ui/cast/issue-10991.stderr b/tests/ui/cast/issue-10991.stderr similarity index 100% rename from src/test/ui/cast/issue-10991.stderr rename to tests/ui/cast/issue-10991.stderr diff --git a/src/test/ui/cast/issue-17444.rs b/tests/ui/cast/issue-17444.rs similarity index 100% rename from src/test/ui/cast/issue-17444.rs rename to tests/ui/cast/issue-17444.rs diff --git a/src/test/ui/cast/issue-17444.stderr b/tests/ui/cast/issue-17444.stderr similarity index 100% rename from src/test/ui/cast/issue-17444.stderr rename to tests/ui/cast/issue-17444.stderr diff --git a/src/test/ui/cast/issue-84213.fixed b/tests/ui/cast/issue-84213.fixed similarity index 100% rename from src/test/ui/cast/issue-84213.fixed rename to tests/ui/cast/issue-84213.fixed diff --git a/src/test/ui/cast/issue-84213.rs b/tests/ui/cast/issue-84213.rs similarity index 100% rename from src/test/ui/cast/issue-84213.rs rename to tests/ui/cast/issue-84213.rs diff --git a/src/test/ui/cast/issue-84213.stderr b/tests/ui/cast/issue-84213.stderr similarity index 100% rename from src/test/ui/cast/issue-84213.stderr rename to tests/ui/cast/issue-84213.stderr diff --git a/src/test/ui/cast/issue-85586.rs b/tests/ui/cast/issue-85586.rs similarity index 100% rename from src/test/ui/cast/issue-85586.rs rename to tests/ui/cast/issue-85586.rs diff --git a/src/test/ui/cast/issue-85586.stderr b/tests/ui/cast/issue-85586.stderr similarity index 100% rename from src/test/ui/cast/issue-85586.stderr rename to tests/ui/cast/issue-85586.stderr diff --git a/src/test/ui/cast/issue-88621.rs b/tests/ui/cast/issue-88621.rs similarity index 100% rename from src/test/ui/cast/issue-88621.rs rename to tests/ui/cast/issue-88621.rs diff --git a/src/test/ui/cast/issue-88621.stderr b/tests/ui/cast/issue-88621.stderr similarity index 100% rename from src/test/ui/cast/issue-88621.stderr rename to tests/ui/cast/issue-88621.stderr diff --git a/src/test/ui/cast/issue-89497.fixed b/tests/ui/cast/issue-89497.fixed similarity index 100% rename from src/test/ui/cast/issue-89497.fixed rename to tests/ui/cast/issue-89497.fixed diff --git a/src/test/ui/cast/issue-89497.rs b/tests/ui/cast/issue-89497.rs similarity index 100% rename from src/test/ui/cast/issue-89497.rs rename to tests/ui/cast/issue-89497.rs diff --git a/src/test/ui/cast/issue-89497.stderr b/tests/ui/cast/issue-89497.stderr similarity index 100% rename from src/test/ui/cast/issue-89497.stderr rename to tests/ui/cast/issue-89497.stderr diff --git a/src/test/ui/cast/supported-cast.rs b/tests/ui/cast/supported-cast.rs similarity index 100% rename from src/test/ui/cast/supported-cast.rs rename to tests/ui/cast/supported-cast.rs diff --git a/src/test/ui/cast/unsupported-cast.rs b/tests/ui/cast/unsupported-cast.rs similarity index 100% rename from src/test/ui/cast/unsupported-cast.rs rename to tests/ui/cast/unsupported-cast.rs diff --git a/src/test/ui/cast/unsupported-cast.stderr b/tests/ui/cast/unsupported-cast.stderr similarity index 100% rename from src/test/ui/cast/unsupported-cast.stderr rename to tests/ui/cast/unsupported-cast.stderr diff --git a/src/test/ui/catch-unwind-bang.rs b/tests/ui/catch-unwind-bang.rs similarity index 100% rename from src/test/ui/catch-unwind-bang.rs rename to tests/ui/catch-unwind-bang.rs diff --git a/src/test/ui/cenum_impl_drop_cast.rs b/tests/ui/cenum_impl_drop_cast.rs similarity index 100% rename from src/test/ui/cenum_impl_drop_cast.rs rename to tests/ui/cenum_impl_drop_cast.rs diff --git a/src/test/ui/cenum_impl_drop_cast.stderr b/tests/ui/cenum_impl_drop_cast.stderr similarity index 100% rename from src/test/ui/cenum_impl_drop_cast.stderr rename to tests/ui/cenum_impl_drop_cast.stderr diff --git a/src/test/ui/cfg/assume-incomplete-release/assume-incomplete.rs b/tests/ui/cfg/assume-incomplete-release/assume-incomplete.rs similarity index 100% rename from src/test/ui/cfg/assume-incomplete-release/assume-incomplete.rs rename to tests/ui/cfg/assume-incomplete-release/assume-incomplete.rs diff --git a/src/test/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs b/tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs similarity index 100% rename from src/test/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs rename to tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs diff --git a/src/test/ui/cfg/auxiliary/cfg_inner_static.rs b/tests/ui/cfg/auxiliary/cfg_inner_static.rs similarity index 100% rename from src/test/ui/cfg/auxiliary/cfg_inner_static.rs rename to tests/ui/cfg/auxiliary/cfg_inner_static.rs diff --git a/src/test/ui/cfg/cfg-attr-cfg.rs b/tests/ui/cfg/cfg-attr-cfg.rs similarity index 100% rename from src/test/ui/cfg/cfg-attr-cfg.rs rename to tests/ui/cfg/cfg-attr-cfg.rs diff --git a/src/test/ui/cfg/cfg-attr-crate.rs b/tests/ui/cfg/cfg-attr-crate.rs similarity index 100% rename from src/test/ui/cfg/cfg-attr-crate.rs rename to tests/ui/cfg/cfg-attr-crate.rs diff --git a/src/test/ui/cfg/cfg-family.rs b/tests/ui/cfg/cfg-family.rs similarity index 100% rename from src/test/ui/cfg/cfg-family.rs rename to tests/ui/cfg/cfg-family.rs diff --git a/src/test/ui/cfg/cfg-in-crate-1.rs b/tests/ui/cfg/cfg-in-crate-1.rs similarity index 100% rename from src/test/ui/cfg/cfg-in-crate-1.rs rename to tests/ui/cfg/cfg-in-crate-1.rs diff --git a/src/test/ui/cfg/cfg-macros-foo.rs b/tests/ui/cfg/cfg-macros-foo.rs similarity index 100% rename from src/test/ui/cfg/cfg-macros-foo.rs rename to tests/ui/cfg/cfg-macros-foo.rs diff --git a/src/test/ui/cfg/cfg-macros-notfoo.rs b/tests/ui/cfg/cfg-macros-notfoo.rs similarity index 100% rename from src/test/ui/cfg/cfg-macros-notfoo.rs rename to tests/ui/cfg/cfg-macros-notfoo.rs diff --git a/src/test/ui/cfg/cfg-match-arm.rs b/tests/ui/cfg/cfg-match-arm.rs similarity index 100% rename from src/test/ui/cfg/cfg-match-arm.rs rename to tests/ui/cfg/cfg-match-arm.rs diff --git a/src/test/ui/cfg/cfg-method-receiver-ok.rs b/tests/ui/cfg/cfg-method-receiver-ok.rs similarity index 100% rename from src/test/ui/cfg/cfg-method-receiver-ok.rs rename to tests/ui/cfg/cfg-method-receiver-ok.rs diff --git a/src/test/ui/cfg/cfg-method-receiver.rs b/tests/ui/cfg/cfg-method-receiver.rs similarity index 100% rename from src/test/ui/cfg/cfg-method-receiver.rs rename to tests/ui/cfg/cfg-method-receiver.rs diff --git a/src/test/ui/cfg/cfg-method-receiver.stderr b/tests/ui/cfg/cfg-method-receiver.stderr similarity index 100% rename from src/test/ui/cfg/cfg-method-receiver.stderr rename to tests/ui/cfg/cfg-method-receiver.stderr diff --git a/src/test/ui/cfg/cfg-panic-abort.rs b/tests/ui/cfg/cfg-panic-abort.rs similarity index 100% rename from src/test/ui/cfg/cfg-panic-abort.rs rename to tests/ui/cfg/cfg-panic-abort.rs diff --git a/src/test/ui/cfg/cfg-panic.rs b/tests/ui/cfg/cfg-panic.rs similarity index 100% rename from src/test/ui/cfg/cfg-panic.rs rename to tests/ui/cfg/cfg-panic.rs diff --git a/src/test/ui/cfg/cfg-path-error.rs b/tests/ui/cfg/cfg-path-error.rs similarity index 100% rename from src/test/ui/cfg/cfg-path-error.rs rename to tests/ui/cfg/cfg-path-error.rs diff --git a/src/test/ui/cfg/cfg-path-error.stderr b/tests/ui/cfg/cfg-path-error.stderr similarity index 100% rename from src/test/ui/cfg/cfg-path-error.stderr rename to tests/ui/cfg/cfg-path-error.stderr diff --git a/src/test/ui/cfg/cfg-target-abi.rs b/tests/ui/cfg/cfg-target-abi.rs similarity index 100% rename from src/test/ui/cfg/cfg-target-abi.rs rename to tests/ui/cfg/cfg-target-abi.rs diff --git a/src/test/ui/cfg/cfg-target-compact-errors.rs b/tests/ui/cfg/cfg-target-compact-errors.rs similarity index 100% rename from src/test/ui/cfg/cfg-target-compact-errors.rs rename to tests/ui/cfg/cfg-target-compact-errors.rs diff --git a/src/test/ui/cfg/cfg-target-compact-errors.stderr b/tests/ui/cfg/cfg-target-compact-errors.stderr similarity index 100% rename from src/test/ui/cfg/cfg-target-compact-errors.stderr rename to tests/ui/cfg/cfg-target-compact-errors.stderr diff --git a/src/test/ui/cfg/cfg-target-compact.rs b/tests/ui/cfg/cfg-target-compact.rs similarity index 100% rename from src/test/ui/cfg/cfg-target-compact.rs rename to tests/ui/cfg/cfg-target-compact.rs diff --git a/src/test/ui/cfg/cfg-target-family.rs b/tests/ui/cfg/cfg-target-family.rs similarity index 100% rename from src/test/ui/cfg/cfg-target-family.rs rename to tests/ui/cfg/cfg-target-family.rs diff --git a/src/test/ui/cfg/cfg-target-vendor.rs b/tests/ui/cfg/cfg-target-vendor.rs similarity index 100% rename from src/test/ui/cfg/cfg-target-vendor.rs rename to tests/ui/cfg/cfg-target-vendor.rs diff --git a/src/test/ui/cfg/cfg_attr.rs b/tests/ui/cfg/cfg_attr.rs similarity index 100% rename from src/test/ui/cfg/cfg_attr.rs rename to tests/ui/cfg/cfg_attr.rs diff --git a/src/test/ui/cfg/cfg_inner_static.rs b/tests/ui/cfg/cfg_inner_static.rs similarity index 100% rename from src/test/ui/cfg/cfg_inner_static.rs rename to tests/ui/cfg/cfg_inner_static.rs diff --git a/src/test/ui/cfg/cfg_stmt_expr.rs b/tests/ui/cfg/cfg_stmt_expr.rs similarity index 100% rename from src/test/ui/cfg/cfg_stmt_expr.rs rename to tests/ui/cfg/cfg_stmt_expr.rs diff --git a/src/test/ui/cfg/cfgs-on-items.rs b/tests/ui/cfg/cfgs-on-items.rs similarity index 100% rename from src/test/ui/cfg/cfgs-on-items.rs rename to tests/ui/cfg/cfgs-on-items.rs diff --git a/src/test/ui/cfg/conditional-compile-arch.rs b/tests/ui/cfg/conditional-compile-arch.rs similarity index 100% rename from src/test/ui/cfg/conditional-compile-arch.rs rename to tests/ui/cfg/conditional-compile-arch.rs diff --git a/src/test/ui/cfg/conditional-compile.rs b/tests/ui/cfg/conditional-compile.rs similarity index 100% rename from src/test/ui/cfg/conditional-compile.rs rename to tests/ui/cfg/conditional-compile.rs diff --git a/src/test/ui/cfg/crt-static-off-works.rs b/tests/ui/cfg/crt-static-off-works.rs similarity index 100% rename from src/test/ui/cfg/crt-static-off-works.rs rename to tests/ui/cfg/crt-static-off-works.rs diff --git a/src/test/ui/cfg/crt-static-on-works.rs b/tests/ui/cfg/crt-static-on-works.rs similarity index 100% rename from src/test/ui/cfg/crt-static-on-works.rs rename to tests/ui/cfg/crt-static-on-works.rs diff --git a/src/test/ui/cfg/expanded-cfg.rs b/tests/ui/cfg/expanded-cfg.rs similarity index 100% rename from src/test/ui/cfg/expanded-cfg.rs rename to tests/ui/cfg/expanded-cfg.rs diff --git a/src/test/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs b/tests/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs similarity index 100% rename from src/test/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs rename to tests/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs diff --git a/src/test/ui/cfg/future-compat-crate-attributes-using-cfg_attr.stderr b/tests/ui/cfg/future-compat-crate-attributes-using-cfg_attr.stderr similarity index 100% rename from src/test/ui/cfg/future-compat-crate-attributes-using-cfg_attr.stderr rename to tests/ui/cfg/future-compat-crate-attributes-using-cfg_attr.stderr diff --git a/src/test/ui/cfguard-run.rs b/tests/ui/cfguard-run.rs similarity index 100% rename from src/test/ui/cfguard-run.rs rename to tests/ui/cfguard-run.rs diff --git a/src/test/ui/chalkify/arithmetic.rs b/tests/ui/chalkify/arithmetic.rs similarity index 100% rename from src/test/ui/chalkify/arithmetic.rs rename to tests/ui/chalkify/arithmetic.rs diff --git a/src/test/ui/chalkify/assert.rs b/tests/ui/chalkify/assert.rs similarity index 100% rename from src/test/ui/chalkify/assert.rs rename to tests/ui/chalkify/assert.rs diff --git a/src/test/ui/chalkify/basic.rs b/tests/ui/chalkify/basic.rs similarity index 100% rename from src/test/ui/chalkify/basic.rs rename to tests/ui/chalkify/basic.rs diff --git a/src/test/ui/chalkify/bugs/async.rs b/tests/ui/chalkify/bugs/async.rs similarity index 100% rename from src/test/ui/chalkify/bugs/async.rs rename to tests/ui/chalkify/bugs/async.rs diff --git a/src/test/ui/chalkify/bugs/async.stderr b/tests/ui/chalkify/bugs/async.stderr similarity index 100% rename from src/test/ui/chalkify/bugs/async.stderr rename to tests/ui/chalkify/bugs/async.stderr diff --git a/src/test/ui/chalkify/builtin-copy-clone.rs b/tests/ui/chalkify/builtin-copy-clone.rs similarity index 100% rename from src/test/ui/chalkify/builtin-copy-clone.rs rename to tests/ui/chalkify/builtin-copy-clone.rs diff --git a/src/test/ui/chalkify/chalk_initial_program.rs b/tests/ui/chalkify/chalk_initial_program.rs similarity index 100% rename from src/test/ui/chalkify/chalk_initial_program.rs rename to tests/ui/chalkify/chalk_initial_program.rs diff --git a/src/test/ui/chalkify/chalk_initial_program.stderr b/tests/ui/chalkify/chalk_initial_program.stderr similarity index 100% rename from src/test/ui/chalkify/chalk_initial_program.stderr rename to tests/ui/chalkify/chalk_initial_program.stderr diff --git a/src/test/ui/chalkify/closure.rs b/tests/ui/chalkify/closure.rs similarity index 100% rename from src/test/ui/chalkify/closure.rs rename to tests/ui/chalkify/closure.rs diff --git a/src/test/ui/chalkify/closure.stderr b/tests/ui/chalkify/closure.stderr similarity index 100% rename from src/test/ui/chalkify/closure.stderr rename to tests/ui/chalkify/closure.stderr diff --git a/src/test/ui/chalkify/generic_impls.rs b/tests/ui/chalkify/generic_impls.rs similarity index 100% rename from src/test/ui/chalkify/generic_impls.rs rename to tests/ui/chalkify/generic_impls.rs diff --git a/src/test/ui/chalkify/generic_impls.stderr b/tests/ui/chalkify/generic_impls.stderr similarity index 100% rename from src/test/ui/chalkify/generic_impls.stderr rename to tests/ui/chalkify/generic_impls.stderr diff --git a/src/test/ui/chalkify/impl_wf.rs b/tests/ui/chalkify/impl_wf.rs similarity index 100% rename from src/test/ui/chalkify/impl_wf.rs rename to tests/ui/chalkify/impl_wf.rs diff --git a/src/test/ui/chalkify/impl_wf.stderr b/tests/ui/chalkify/impl_wf.stderr similarity index 100% rename from src/test/ui/chalkify/impl_wf.stderr rename to tests/ui/chalkify/impl_wf.stderr diff --git a/src/test/ui/chalkify/impl_wf_2.rs b/tests/ui/chalkify/impl_wf_2.rs similarity index 100% rename from src/test/ui/chalkify/impl_wf_2.rs rename to tests/ui/chalkify/impl_wf_2.rs diff --git a/src/test/ui/chalkify/impl_wf_2.stderr b/tests/ui/chalkify/impl_wf_2.stderr similarity index 100% rename from src/test/ui/chalkify/impl_wf_2.stderr rename to tests/ui/chalkify/impl_wf_2.stderr diff --git a/src/test/ui/chalkify/inherent_impl.rs b/tests/ui/chalkify/inherent_impl.rs similarity index 100% rename from src/test/ui/chalkify/inherent_impl.rs rename to tests/ui/chalkify/inherent_impl.rs diff --git a/src/test/ui/chalkify/inherent_impl_min.rs b/tests/ui/chalkify/inherent_impl_min.rs similarity index 100% rename from src/test/ui/chalkify/inherent_impl_min.rs rename to tests/ui/chalkify/inherent_impl_min.rs diff --git a/src/test/ui/chalkify/lower_env1.rs b/tests/ui/chalkify/lower_env1.rs similarity index 100% rename from src/test/ui/chalkify/lower_env1.rs rename to tests/ui/chalkify/lower_env1.rs diff --git a/src/test/ui/chalkify/lower_env2.rs b/tests/ui/chalkify/lower_env2.rs similarity index 100% rename from src/test/ui/chalkify/lower_env2.rs rename to tests/ui/chalkify/lower_env2.rs diff --git a/src/test/ui/chalkify/lower_env3.rs b/tests/ui/chalkify/lower_env3.rs similarity index 100% rename from src/test/ui/chalkify/lower_env3.rs rename to tests/ui/chalkify/lower_env3.rs diff --git a/src/test/ui/chalkify/lower_impl.rs b/tests/ui/chalkify/lower_impl.rs similarity index 100% rename from src/test/ui/chalkify/lower_impl.rs rename to tests/ui/chalkify/lower_impl.rs diff --git a/src/test/ui/chalkify/lower_struct.rs b/tests/ui/chalkify/lower_struct.rs similarity index 100% rename from src/test/ui/chalkify/lower_struct.rs rename to tests/ui/chalkify/lower_struct.rs diff --git a/src/test/ui/chalkify/lower_trait.rs b/tests/ui/chalkify/lower_trait.rs similarity index 100% rename from src/test/ui/chalkify/lower_trait.rs rename to tests/ui/chalkify/lower_trait.rs diff --git a/src/test/ui/chalkify/lower_trait_higher_rank.rs b/tests/ui/chalkify/lower_trait_higher_rank.rs similarity index 100% rename from src/test/ui/chalkify/lower_trait_higher_rank.rs rename to tests/ui/chalkify/lower_trait_higher_rank.rs diff --git a/src/test/ui/chalkify/lower_trait_where_clause.rs b/tests/ui/chalkify/lower_trait_where_clause.rs similarity index 100% rename from src/test/ui/chalkify/lower_trait_where_clause.rs rename to tests/ui/chalkify/lower_trait_where_clause.rs diff --git a/src/test/ui/chalkify/println.rs b/tests/ui/chalkify/println.rs similarity index 100% rename from src/test/ui/chalkify/println.rs rename to tests/ui/chalkify/println.rs diff --git a/src/test/ui/chalkify/projection.rs b/tests/ui/chalkify/projection.rs similarity index 100% rename from src/test/ui/chalkify/projection.rs rename to tests/ui/chalkify/projection.rs diff --git a/src/test/ui/chalkify/recursive_where_clause_on_type.rs b/tests/ui/chalkify/recursive_where_clause_on_type.rs similarity index 100% rename from src/test/ui/chalkify/recursive_where_clause_on_type.rs rename to tests/ui/chalkify/recursive_where_clause_on_type.rs diff --git a/src/test/ui/chalkify/recursive_where_clause_on_type.stderr b/tests/ui/chalkify/recursive_where_clause_on_type.stderr similarity index 100% rename from src/test/ui/chalkify/recursive_where_clause_on_type.stderr rename to tests/ui/chalkify/recursive_where_clause_on_type.stderr diff --git a/src/test/ui/chalkify/super_trait.rs b/tests/ui/chalkify/super_trait.rs similarity index 100% rename from src/test/ui/chalkify/super_trait.rs rename to tests/ui/chalkify/super_trait.rs diff --git a/src/test/ui/chalkify/trait-objects.rs b/tests/ui/chalkify/trait-objects.rs similarity index 100% rename from src/test/ui/chalkify/trait-objects.rs rename to tests/ui/chalkify/trait-objects.rs diff --git a/src/test/ui/chalkify/trait_implied_bound.rs b/tests/ui/chalkify/trait_implied_bound.rs similarity index 100% rename from src/test/ui/chalkify/trait_implied_bound.rs rename to tests/ui/chalkify/trait_implied_bound.rs diff --git a/src/test/ui/chalkify/type_implied_bound.rs b/tests/ui/chalkify/type_implied_bound.rs similarity index 100% rename from src/test/ui/chalkify/type_implied_bound.rs rename to tests/ui/chalkify/type_implied_bound.rs diff --git a/src/test/ui/chalkify/type_inference.rs b/tests/ui/chalkify/type_inference.rs similarity index 100% rename from src/test/ui/chalkify/type_inference.rs rename to tests/ui/chalkify/type_inference.rs diff --git a/src/test/ui/chalkify/type_inference.stderr b/tests/ui/chalkify/type_inference.stderr similarity index 100% rename from src/test/ui/chalkify/type_inference.stderr rename to tests/ui/chalkify/type_inference.stderr diff --git a/src/test/ui/chalkify/type_wf.rs b/tests/ui/chalkify/type_wf.rs similarity index 100% rename from src/test/ui/chalkify/type_wf.rs rename to tests/ui/chalkify/type_wf.rs diff --git a/src/test/ui/chalkify/type_wf.stderr b/tests/ui/chalkify/type_wf.stderr similarity index 100% rename from src/test/ui/chalkify/type_wf.stderr rename to tests/ui/chalkify/type_wf.stderr diff --git a/src/test/ui/char.rs b/tests/ui/char.rs similarity index 100% rename from src/test/ui/char.rs rename to tests/ui/char.rs diff --git a/src/test/ui/check-cfg/allow-at-crate-level.rs b/tests/ui/check-cfg/allow-at-crate-level.rs similarity index 100% rename from src/test/ui/check-cfg/allow-at-crate-level.rs rename to tests/ui/check-cfg/allow-at-crate-level.rs diff --git a/src/test/ui/check-cfg/allow-macro-cfg.rs b/tests/ui/check-cfg/allow-macro-cfg.rs similarity index 100% rename from src/test/ui/check-cfg/allow-macro-cfg.rs rename to tests/ui/check-cfg/allow-macro-cfg.rs diff --git a/src/test/ui/check-cfg/allow-same-level.rs b/tests/ui/check-cfg/allow-same-level.rs similarity index 100% rename from src/test/ui/check-cfg/allow-same-level.rs rename to tests/ui/check-cfg/allow-same-level.rs diff --git a/src/test/ui/check-cfg/allow-same-level.stderr b/tests/ui/check-cfg/allow-same-level.stderr similarity index 100% rename from src/test/ui/check-cfg/allow-same-level.stderr rename to tests/ui/check-cfg/allow-same-level.stderr diff --git a/src/test/ui/check-cfg/allow-top-level.rs b/tests/ui/check-cfg/allow-top-level.rs similarity index 100% rename from src/test/ui/check-cfg/allow-top-level.rs rename to tests/ui/check-cfg/allow-top-level.rs diff --git a/src/test/ui/check-cfg/allow-upper-level.rs b/tests/ui/check-cfg/allow-upper-level.rs similarity index 100% rename from src/test/ui/check-cfg/allow-upper-level.rs rename to tests/ui/check-cfg/allow-upper-level.rs diff --git a/src/test/ui/check-cfg/compact-names.rs b/tests/ui/check-cfg/compact-names.rs similarity index 100% rename from src/test/ui/check-cfg/compact-names.rs rename to tests/ui/check-cfg/compact-names.rs diff --git a/src/test/ui/check-cfg/compact-names.stderr b/tests/ui/check-cfg/compact-names.stderr similarity index 100% rename from src/test/ui/check-cfg/compact-names.stderr rename to tests/ui/check-cfg/compact-names.stderr diff --git a/src/test/ui/check-cfg/compact-values.rs b/tests/ui/check-cfg/compact-values.rs similarity index 100% rename from src/test/ui/check-cfg/compact-values.rs rename to tests/ui/check-cfg/compact-values.rs diff --git a/src/test/ui/check-cfg/compact-values.stderr b/tests/ui/check-cfg/compact-values.stderr similarity index 100% rename from src/test/ui/check-cfg/compact-values.stderr rename to tests/ui/check-cfg/compact-values.stderr diff --git a/src/test/ui/check-cfg/empty-names.rs b/tests/ui/check-cfg/empty-names.rs similarity index 100% rename from src/test/ui/check-cfg/empty-names.rs rename to tests/ui/check-cfg/empty-names.rs diff --git a/src/test/ui/check-cfg/empty-names.stderr b/tests/ui/check-cfg/empty-names.stderr similarity index 100% rename from src/test/ui/check-cfg/empty-names.stderr rename to tests/ui/check-cfg/empty-names.stderr diff --git a/src/test/ui/check-cfg/empty-values.rs b/tests/ui/check-cfg/empty-values.rs similarity index 100% rename from src/test/ui/check-cfg/empty-values.rs rename to tests/ui/check-cfg/empty-values.rs diff --git a/src/test/ui/check-cfg/empty-values.stderr b/tests/ui/check-cfg/empty-values.stderr similarity index 100% rename from src/test/ui/check-cfg/empty-values.stderr rename to tests/ui/check-cfg/empty-values.stderr diff --git a/src/test/ui/check-cfg/invalid-arguments.anything_else.stderr b/tests/ui/check-cfg/invalid-arguments.anything_else.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-arguments.anything_else.stderr rename to tests/ui/check-cfg/invalid-arguments.anything_else.stderr diff --git a/src/test/ui/check-cfg/invalid-arguments.names_simple_ident.stderr b/tests/ui/check-cfg/invalid-arguments.names_simple_ident.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-arguments.names_simple_ident.stderr rename to tests/ui/check-cfg/invalid-arguments.names_simple_ident.stderr diff --git a/src/test/ui/check-cfg/invalid-arguments.rs b/tests/ui/check-cfg/invalid-arguments.rs similarity index 100% rename from src/test/ui/check-cfg/invalid-arguments.rs rename to tests/ui/check-cfg/invalid-arguments.rs diff --git a/src/test/ui/check-cfg/invalid-arguments.values_simple_ident.stderr b/tests/ui/check-cfg/invalid-arguments.values_simple_ident.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-arguments.values_simple_ident.stderr rename to tests/ui/check-cfg/invalid-arguments.values_simple_ident.stderr diff --git a/src/test/ui/check-cfg/invalid-arguments.values_string_literals.stderr b/tests/ui/check-cfg/invalid-arguments.values_string_literals.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-arguments.values_string_literals.stderr rename to tests/ui/check-cfg/invalid-arguments.values_string_literals.stderr diff --git a/src/test/ui/check-cfg/invalid-cfg-name.rs b/tests/ui/check-cfg/invalid-cfg-name.rs similarity index 100% rename from src/test/ui/check-cfg/invalid-cfg-name.rs rename to tests/ui/check-cfg/invalid-cfg-name.rs diff --git a/src/test/ui/check-cfg/invalid-cfg-name.stderr b/tests/ui/check-cfg/invalid-cfg-name.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-cfg-name.stderr rename to tests/ui/check-cfg/invalid-cfg-name.stderr diff --git a/src/test/ui/check-cfg/invalid-cfg-value.rs b/tests/ui/check-cfg/invalid-cfg-value.rs similarity index 100% rename from src/test/ui/check-cfg/invalid-cfg-value.rs rename to tests/ui/check-cfg/invalid-cfg-value.rs diff --git a/src/test/ui/check-cfg/invalid-cfg-value.stderr b/tests/ui/check-cfg/invalid-cfg-value.stderr similarity index 100% rename from src/test/ui/check-cfg/invalid-cfg-value.stderr rename to tests/ui/check-cfg/invalid-cfg-value.stderr diff --git a/src/test/ui/check-cfg/mix.rs b/tests/ui/check-cfg/mix.rs similarity index 100% rename from src/test/ui/check-cfg/mix.rs rename to tests/ui/check-cfg/mix.rs diff --git a/src/test/ui/check-cfg/mix.stderr b/tests/ui/check-cfg/mix.stderr similarity index 100% rename from src/test/ui/check-cfg/mix.stderr rename to tests/ui/check-cfg/mix.stderr diff --git a/src/test/ui/check-cfg/no-values.rs b/tests/ui/check-cfg/no-values.rs similarity index 100% rename from src/test/ui/check-cfg/no-values.rs rename to tests/ui/check-cfg/no-values.rs diff --git a/src/test/ui/check-cfg/no-values.stderr b/tests/ui/check-cfg/no-values.stderr similarity index 100% rename from src/test/ui/check-cfg/no-values.stderr rename to tests/ui/check-cfg/no-values.stderr diff --git a/src/test/ui/check-cfg/stmt-no-ice.rs b/tests/ui/check-cfg/stmt-no-ice.rs similarity index 100% rename from src/test/ui/check-cfg/stmt-no-ice.rs rename to tests/ui/check-cfg/stmt-no-ice.rs diff --git a/src/test/ui/check-cfg/stmt-no-ice.stderr b/tests/ui/check-cfg/stmt-no-ice.stderr similarity index 100% rename from src/test/ui/check-cfg/stmt-no-ice.stderr rename to tests/ui/check-cfg/stmt-no-ice.stderr diff --git a/src/test/ui/check-cfg/well-known-names.rs b/tests/ui/check-cfg/well-known-names.rs similarity index 100% rename from src/test/ui/check-cfg/well-known-names.rs rename to tests/ui/check-cfg/well-known-names.rs diff --git a/src/test/ui/check-cfg/well-known-names.stderr b/tests/ui/check-cfg/well-known-names.stderr similarity index 100% rename from src/test/ui/check-cfg/well-known-names.stderr rename to tests/ui/check-cfg/well-known-names.stderr diff --git a/src/test/ui/check-cfg/well-known-values.rs b/tests/ui/check-cfg/well-known-values.rs similarity index 100% rename from src/test/ui/check-cfg/well-known-values.rs rename to tests/ui/check-cfg/well-known-values.rs diff --git a/src/test/ui/check-cfg/well-known-values.stderr b/tests/ui/check-cfg/well-known-values.stderr similarity index 100% rename from src/test/ui/check-cfg/well-known-values.stderr rename to tests/ui/check-cfg/well-known-values.stderr diff --git a/src/test/ui/check-static-immutable-mut-slices.rs b/tests/ui/check-static-immutable-mut-slices.rs similarity index 100% rename from src/test/ui/check-static-immutable-mut-slices.rs rename to tests/ui/check-static-immutable-mut-slices.rs diff --git a/src/test/ui/check-static-immutable-mut-slices.stderr b/tests/ui/check-static-immutable-mut-slices.stderr similarity index 100% rename from src/test/ui/check-static-immutable-mut-slices.stderr rename to tests/ui/check-static-immutable-mut-slices.stderr diff --git a/src/test/ui/check-static-recursion-foreign.rs b/tests/ui/check-static-recursion-foreign.rs similarity index 100% rename from src/test/ui/check-static-recursion-foreign.rs rename to tests/ui/check-static-recursion-foreign.rs diff --git a/src/test/ui/check-static-values-constraints.rs b/tests/ui/check-static-values-constraints.rs similarity index 100% rename from src/test/ui/check-static-values-constraints.rs rename to tests/ui/check-static-values-constraints.rs diff --git a/src/test/ui/check-static-values-constraints.stderr b/tests/ui/check-static-values-constraints.stderr similarity index 100% rename from src/test/ui/check-static-values-constraints.stderr rename to tests/ui/check-static-values-constraints.stderr diff --git a/src/test/ui/class-cast-to-trait.rs b/tests/ui/class-cast-to-trait.rs similarity index 100% rename from src/test/ui/class-cast-to-trait.rs rename to tests/ui/class-cast-to-trait.rs diff --git a/src/test/ui/class-cast-to-trait.stderr b/tests/ui/class-cast-to-trait.stderr similarity index 100% rename from src/test/ui/class-cast-to-trait.stderr rename to tests/ui/class-cast-to-trait.stderr diff --git a/src/test/ui/class-method-missing.rs b/tests/ui/class-method-missing.rs similarity index 100% rename from src/test/ui/class-method-missing.rs rename to tests/ui/class-method-missing.rs diff --git a/src/test/ui/class-method-missing.stderr b/tests/ui/class-method-missing.stderr similarity index 100% rename from src/test/ui/class-method-missing.stderr rename to tests/ui/class-method-missing.stderr diff --git a/src/test/ui/cleanup-rvalue-for-scope.rs b/tests/ui/cleanup-rvalue-for-scope.rs similarity index 100% rename from src/test/ui/cleanup-rvalue-for-scope.rs rename to tests/ui/cleanup-rvalue-for-scope.rs diff --git a/src/test/ui/cleanup-rvalue-scopes-cf.rs b/tests/ui/cleanup-rvalue-scopes-cf.rs similarity index 100% rename from src/test/ui/cleanup-rvalue-scopes-cf.rs rename to tests/ui/cleanup-rvalue-scopes-cf.rs diff --git a/src/test/ui/cleanup-rvalue-scopes-cf.stderr b/tests/ui/cleanup-rvalue-scopes-cf.stderr similarity index 100% rename from src/test/ui/cleanup-rvalue-scopes-cf.stderr rename to tests/ui/cleanup-rvalue-scopes-cf.stderr diff --git a/src/test/ui/cleanup-rvalue-scopes.rs b/tests/ui/cleanup-rvalue-scopes.rs similarity index 100% rename from src/test/ui/cleanup-rvalue-scopes.rs rename to tests/ui/cleanup-rvalue-scopes.rs diff --git a/src/test/ui/cleanup-rvalue-temp-during-incomplete-alloc.rs b/tests/ui/cleanup-rvalue-temp-during-incomplete-alloc.rs similarity index 100% rename from src/test/ui/cleanup-rvalue-temp-during-incomplete-alloc.rs rename to tests/ui/cleanup-rvalue-temp-during-incomplete-alloc.rs diff --git a/src/test/ui/cleanup-shortcircuit.rs b/tests/ui/cleanup-shortcircuit.rs similarity index 100% rename from src/test/ui/cleanup-shortcircuit.rs rename to tests/ui/cleanup-shortcircuit.rs diff --git a/src/test/ui/close-over-big-then-small-data.rs b/tests/ui/close-over-big-then-small-data.rs similarity index 100% rename from src/test/ui/close-over-big-then-small-data.rs rename to tests/ui/close-over-big-then-small-data.rs diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs b/tests/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs rename to tests/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn.rs b/tests/ui/closure-expected-type/expect-fn-supply-fn.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-fn-supply-fn.rs rename to tests/ui/closure-expected-type/expect-fn-supply-fn.rs diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr b/tests/ui/closure-expected-type/expect-fn-supply-fn.stderr similarity index 100% rename from src/test/ui/closure-expected-type/expect-fn-supply-fn.stderr rename to tests/ui/closure-expected-type/expect-fn-supply-fn.stderr diff --git a/src/test/ui/closure-expected-type/expect-infer-var-appearing-twice.rs b/tests/ui/closure-expected-type/expect-infer-var-appearing-twice.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-infer-var-appearing-twice.rs rename to tests/ui/closure-expected-type/expect-infer-var-appearing-twice.rs diff --git a/src/test/ui/closure-expected-type/expect-infer-var-appearing-twice.stderr b/tests/ui/closure-expected-type/expect-infer-var-appearing-twice.stderr similarity index 100% rename from src/test/ui/closure-expected-type/expect-infer-var-appearing-twice.stderr rename to tests/ui/closure-expected-type/expect-infer-var-appearing-twice.stderr diff --git a/src/test/ui/closure-expected-type/expect-infer-var-supply-ty-with-bound-region.rs b/tests/ui/closure-expected-type/expect-infer-var-supply-ty-with-bound-region.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-infer-var-supply-ty-with-bound-region.rs rename to tests/ui/closure-expected-type/expect-infer-var-supply-ty-with-bound-region.rs diff --git a/src/test/ui/closure-expected-type/expect-infer-var-supply-ty-with-free-region.rs b/tests/ui/closure-expected-type/expect-infer-var-supply-ty-with-free-region.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-infer-var-supply-ty-with-free-region.rs rename to tests/ui/closure-expected-type/expect-infer-var-supply-ty-with-free-region.rs diff --git a/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.rs b/tests/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.rs similarity index 100% rename from src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.rs rename to tests/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.rs diff --git a/src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr b/tests/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr similarity index 100% rename from src/test/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr rename to tests/ui/closure-expected-type/expect-two-infer-vars-supply-ty-with-bound-region.stderr diff --git a/src/test/ui/closure-expected-type/issue-24421.rs b/tests/ui/closure-expected-type/issue-24421.rs similarity index 100% rename from src/test/ui/closure-expected-type/issue-24421.rs rename to tests/ui/closure-expected-type/issue-24421.rs diff --git a/src/test/ui/closure_context/issue-26046-fn-mut.rs b/tests/ui/closure_context/issue-26046-fn-mut.rs similarity index 100% rename from src/test/ui/closure_context/issue-26046-fn-mut.rs rename to tests/ui/closure_context/issue-26046-fn-mut.rs diff --git a/src/test/ui/closure_context/issue-26046-fn-mut.stderr b/tests/ui/closure_context/issue-26046-fn-mut.stderr similarity index 100% rename from src/test/ui/closure_context/issue-26046-fn-mut.stderr rename to tests/ui/closure_context/issue-26046-fn-mut.stderr diff --git a/src/test/ui/closure_context/issue-26046-fn-once.rs b/tests/ui/closure_context/issue-26046-fn-once.rs similarity index 100% rename from src/test/ui/closure_context/issue-26046-fn-once.rs rename to tests/ui/closure_context/issue-26046-fn-once.rs diff --git a/src/test/ui/closure_context/issue-26046-fn-once.stderr b/tests/ui/closure_context/issue-26046-fn-once.stderr similarity index 100% rename from src/test/ui/closure_context/issue-26046-fn-once.stderr rename to tests/ui/closure_context/issue-26046-fn-once.stderr diff --git a/src/test/ui/closure_context/issue-42065.rs b/tests/ui/closure_context/issue-42065.rs similarity index 100% rename from src/test/ui/closure_context/issue-42065.rs rename to tests/ui/closure_context/issue-42065.rs diff --git a/src/test/ui/closure_context/issue-42065.stderr b/tests/ui/closure_context/issue-42065.stderr similarity index 100% rename from src/test/ui/closure_context/issue-42065.stderr rename to tests/ui/closure_context/issue-42065.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/arrays-completely-captured.rs b/tests/ui/closures/2229_closure_analysis/arrays-completely-captured.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/arrays-completely-captured.rs rename to tests/ui/closures/2229_closure_analysis/arrays-completely-captured.rs diff --git a/src/test/ui/closures/2229_closure_analysis/arrays-completely-captured.stderr b/tests/ui/closures/2229_closure_analysis/arrays-completely-captured.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/arrays-completely-captured.stderr rename to tests/ui/closures/2229_closure_analysis/arrays-completely-captured.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/by_value.rs b/tests/ui/closures/2229_closure_analysis/by_value.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/by_value.rs rename to tests/ui/closures/2229_closure_analysis/by_value.rs diff --git a/src/test/ui/closures/2229_closure_analysis/by_value.stderr b/tests/ui/closures/2229_closure_analysis/by_value.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/by_value.stderr rename to tests/ui/closures/2229_closure_analysis/by_value.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-1.rs b/tests/ui/closures/2229_closure_analysis/capture-analysis-1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-1.rs rename to tests/ui/closures/2229_closure_analysis/capture-analysis-1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-1.stderr b/tests/ui/closures/2229_closure_analysis/capture-analysis-1.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-1.stderr rename to tests/ui/closures/2229_closure_analysis/capture-analysis-1.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-2.rs b/tests/ui/closures/2229_closure_analysis/capture-analysis-2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-2.rs rename to tests/ui/closures/2229_closure_analysis/capture-analysis-2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-2.stderr b/tests/ui/closures/2229_closure_analysis/capture-analysis-2.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-2.stderr rename to tests/ui/closures/2229_closure_analysis/capture-analysis-2.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-3.rs b/tests/ui/closures/2229_closure_analysis/capture-analysis-3.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-3.rs rename to tests/ui/closures/2229_closure_analysis/capture-analysis-3.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-3.stderr b/tests/ui/closures/2229_closure_analysis/capture-analysis-3.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-3.stderr rename to tests/ui/closures/2229_closure_analysis/capture-analysis-3.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-4.rs b/tests/ui/closures/2229_closure_analysis/capture-analysis-4.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-4.rs rename to tests/ui/closures/2229_closure_analysis/capture-analysis-4.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-analysis-4.stderr b/tests/ui/closures/2229_closure_analysis/capture-analysis-4.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-analysis-4.stderr rename to tests/ui/closures/2229_closure_analysis/capture-analysis-4.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.rs b/tests/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.rs rename to tests/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.stderr b/tests/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.stderr rename to tests/ui/closures/2229_closure_analysis/capture-disjoint-field-struct.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.rs b/tests/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.rs rename to tests/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.stderr b/tests/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.stderr rename to tests/ui/closures/2229_closure_analysis/capture-disjoint-field-tuple.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/capture-enum-field.rs b/tests/ui/closures/2229_closure_analysis/capture-enum-field.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-enum-field.rs rename to tests/ui/closures/2229_closure_analysis/capture-enum-field.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-enums.rs b/tests/ui/closures/2229_closure_analysis/capture-enums.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-enums.rs rename to tests/ui/closures/2229_closure_analysis/capture-enums.rs diff --git a/src/test/ui/closures/2229_closure_analysis/capture-enums.stderr b/tests/ui/closures/2229_closure_analysis/capture-enums.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/capture-enums.stderr rename to tests/ui/closures/2229_closure_analysis/capture-enums.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/deep-multilevel-struct.rs b/tests/ui/closures/2229_closure_analysis/deep-multilevel-struct.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/deep-multilevel-struct.rs rename to tests/ui/closures/2229_closure_analysis/deep-multilevel-struct.rs diff --git a/src/test/ui/closures/2229_closure_analysis/deep-multilevel-struct.stderr b/tests/ui/closures/2229_closure_analysis/deep-multilevel-struct.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/deep-multilevel-struct.stderr rename to tests/ui/closures/2229_closure_analysis/deep-multilevel-struct.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/deep-multilevel-tuple.rs b/tests/ui/closures/2229_closure_analysis/deep-multilevel-tuple.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/deep-multilevel-tuple.rs rename to tests/ui/closures/2229_closure_analysis/deep-multilevel-tuple.rs diff --git a/src/test/ui/closures/2229_closure_analysis/deep-multilevel-tuple.stderr b/tests/ui/closures/2229_closure_analysis/deep-multilevel-tuple.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/deep-multilevel-tuple.stderr rename to tests/ui/closures/2229_closure_analysis/deep-multilevel-tuple.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/destructure_patterns.rs b/tests/ui/closures/2229_closure_analysis/destructure_patterns.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/destructure_patterns.rs rename to tests/ui/closures/2229_closure_analysis/destructure_patterns.rs diff --git a/src/test/ui/closures/2229_closure_analysis/destructure_patterns.stderr b/tests/ui/closures/2229_closure_analysis/destructure_patterns.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/destructure_patterns.stderr rename to tests/ui/closures/2229_closure_analysis/destructure_patterns.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/arrays.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/arrays.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/arrays.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/arrays.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/arrays.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/arrays.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/arrays.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/arrays.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-1.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-2.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-3.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-4.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/borrowck/borrowck-closures-mut-and-imm.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/box.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/box.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/box.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/box.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/box.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/box.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/box.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/box.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm-borrow.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/cant-mutate-imm.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-array-diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-multi-variant-diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-single-variant-diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-struct-diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics-1.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/closure-origin-tuple-diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/liveness.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/liveness.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/liveness.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/liveness.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/liveness.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/liveness.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/liveness.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/liveness.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/liveness_unintentional_copy.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/multilevel-path.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/mut_ref.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/mut_ref.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/mut_ref.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/mut_ref.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/mut_ref.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/mut_ref.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/mut_ref.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/mut_ref.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/repr_packed.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/repr_packed.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/repr_packed.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/repr_packed.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/repr_packed.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/repr_packed.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/repr_packed.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/repr_packed.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/simple-struct-min-capture.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/union.rs b/tests/ui/closures/2229_closure_analysis/diagnostics/union.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/union.rs rename to tests/ui/closures/2229_closure_analysis/diagnostics/union.rs diff --git a/src/test/ui/closures/2229_closure_analysis/diagnostics/union.stderr b/tests/ui/closures/2229_closure_analysis/diagnostics/union.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/diagnostics/union.stderr rename to tests/ui/closures/2229_closure_analysis/diagnostics/union.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.rs b/tests/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.rs rename to tests/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.rs diff --git a/src/test/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.stderr b/tests/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.stderr rename to tests/ui/closures/2229_closure_analysis/feature-gate-capture_disjoint_fields.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/filter-on-struct-member.rs b/tests/ui/closures/2229_closure_analysis/filter-on-struct-member.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/filter-on-struct-member.rs rename to tests/ui/closures/2229_closure_analysis/filter-on-struct-member.rs diff --git a/src/test/ui/closures/2229_closure_analysis/filter-on-struct-member.stderr b/tests/ui/closures/2229_closure_analysis/filter-on-struct-member.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/filter-on-struct-member.stderr rename to tests/ui/closures/2229_closure_analysis/filter-on-struct-member.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-87378.rs b/tests/ui/closures/2229_closure_analysis/issue-87378.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-87378.rs rename to tests/ui/closures/2229_closure_analysis/issue-87378.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-87378.stderr b/tests/ui/closures/2229_closure_analysis/issue-87378.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-87378.stderr rename to tests/ui/closures/2229_closure_analysis/issue-87378.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-87987.rs b/tests/ui/closures/2229_closure_analysis/issue-87987.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-87987.rs rename to tests/ui/closures/2229_closure_analysis/issue-87987.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-87987.stderr b/tests/ui/closures/2229_closure_analysis/issue-87987.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-87987.stderr rename to tests/ui/closures/2229_closure_analysis/issue-87987.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-88118-2.rs b/tests/ui/closures/2229_closure_analysis/issue-88118-2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-88118-2.rs rename to tests/ui/closures/2229_closure_analysis/issue-88118-2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-88118-2.stderr b/tests/ui/closures/2229_closure_analysis/issue-88118-2.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-88118-2.stderr rename to tests/ui/closures/2229_closure_analysis/issue-88118-2.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-88476.rs b/tests/ui/closures/2229_closure_analysis/issue-88476.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-88476.rs rename to tests/ui/closures/2229_closure_analysis/issue-88476.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-88476.stderr b/tests/ui/closures/2229_closure_analysis/issue-88476.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-88476.stderr rename to tests/ui/closures/2229_closure_analysis/issue-88476.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-89606.rs b/tests/ui/closures/2229_closure_analysis/issue-89606.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-89606.rs rename to tests/ui/closures/2229_closure_analysis/issue-89606.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-90465.fixed b/tests/ui/closures/2229_closure_analysis/issue-90465.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-90465.fixed rename to tests/ui/closures/2229_closure_analysis/issue-90465.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/issue-90465.rs b/tests/ui/closures/2229_closure_analysis/issue-90465.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-90465.rs rename to tests/ui/closures/2229_closure_analysis/issue-90465.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue-90465.stderr b/tests/ui/closures/2229_closure_analysis/issue-90465.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-90465.stderr rename to tests/ui/closures/2229_closure_analysis/issue-90465.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs b/tests/ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs rename to tests/ui/closures/2229_closure_analysis/issue-92724-needsdrop-query-cycle.rs diff --git a/src/test/ui/closures/2229_closure_analysis/issue_88118.rs b/tests/ui/closures/2229_closure_analysis/issue_88118.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/issue_88118.rs rename to tests/ui/closures/2229_closure_analysis/issue_88118.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/auxiliary/match_non_exhaustive_lib.rs b/tests/ui/closures/2229_closure_analysis/match/auxiliary/match_non_exhaustive_lib.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/auxiliary/match_non_exhaustive_lib.rs rename to tests/ui/closures/2229_closure_analysis/match/auxiliary/match_non_exhaustive_lib.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-87097.rs b/tests/ui/closures/2229_closure_analysis/match/issue-87097.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-87097.rs rename to tests/ui/closures/2229_closure_analysis/match/issue-87097.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-87097.stderr b/tests/ui/closures/2229_closure_analysis/match/issue-87097.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-87097.stderr rename to tests/ui/closures/2229_closure_analysis/match/issue-87097.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-87426.rs b/tests/ui/closures/2229_closure_analysis/match/issue-87426.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-87426.rs rename to tests/ui/closures/2229_closure_analysis/match/issue-87426.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-87988.rs b/tests/ui/closures/2229_closure_analysis/match/issue-87988.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-87988.rs rename to tests/ui/closures/2229_closure_analysis/match/issue-87988.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-88331.rs b/tests/ui/closures/2229_closure_analysis/match/issue-88331.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-88331.rs rename to tests/ui/closures/2229_closure_analysis/match/issue-88331.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/issue-88331.stderr b/tests/ui/closures/2229_closure_analysis/match/issue-88331.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/issue-88331.stderr rename to tests/ui/closures/2229_closure_analysis/match/issue-88331.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_1.rs b/tests/ui/closures/2229_closure_analysis/match/match-edge-cases_1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_1.rs rename to tests/ui/closures/2229_closure_analysis/match/match-edge-cases_1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_2.rs b/tests/ui/closures/2229_closure_analysis/match/match-edge-cases_2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_2.rs rename to tests/ui/closures/2229_closure_analysis/match/match-edge-cases_2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_2.stderr b/tests/ui/closures/2229_closure_analysis/match/match-edge-cases_2.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/match-edge-cases_2.stderr rename to tests/ui/closures/2229_closure_analysis/match/match-edge-cases_2.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/match/non-exhaustive-match.rs b/tests/ui/closures/2229_closure_analysis/match/non-exhaustive-match.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/non-exhaustive-match.rs rename to tests/ui/closures/2229_closure_analysis/match/non-exhaustive-match.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/non-exhaustive-match.stderr b/tests/ui/closures/2229_closure_analysis/match/non-exhaustive-match.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/non-exhaustive-match.stderr rename to tests/ui/closures/2229_closure_analysis/match/non-exhaustive-match.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs b/tests/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs rename to tests/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.stderr b/tests/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.stderr rename to tests/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.rs b/tests/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.rs rename to tests/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.rs diff --git a/src/test/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.stderr b/tests/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.stderr rename to tests/ui/closures/2229_closure_analysis/match/patterns-capture-analysis.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.fixed b/tests/ui/closures/2229_closure_analysis/migrations/auto_traits.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/auto_traits.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.rs b/tests/ui/closures/2229_closure_analysis/migrations/auto_traits.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.rs rename to tests/ui/closures/2229_closure_analysis/migrations/auto_traits.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.stderr b/tests/ui/closures/2229_closure_analysis/migrations/auto_traits.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/auto_traits.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/auto_traits.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.fixed b/tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.rs b/tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.rs rename to tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.stderr b/tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/closure-body-macro-fragment.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop.fixed b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop.rs b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop.rs rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.fixed b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.rs b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.rs rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.stderr b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_migrations.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_no_migrations.rs b/tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_no_migrations.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_no_migrations.rs rename to tests/ui/closures/2229_closure_analysis/migrations/insignificant_drop_attr_no_migrations.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/issue-78720.rs b/tests/ui/closures/2229_closure_analysis/migrations/issue-78720.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/issue-78720.rs rename to tests/ui/closures/2229_closure_analysis/migrations/issue-78720.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/issue-78720.stderr b/tests/ui/closures/2229_closure_analysis/migrations/issue-78720.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/issue-78720.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/issue-78720.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/issue-86753.rs b/tests/ui/closures/2229_closure_analysis/migrations/issue-86753.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/issue-86753.rs rename to tests/ui/closures/2229_closure_analysis/migrations/issue-86753.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs b/tests/ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs rename to tests/ui/closures/2229_closure_analysis/migrations/issue-90024-adt-correct-subst.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/macro.fixed b/tests/ui/closures/2229_closure_analysis/migrations/macro.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/macro.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/macro.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/macro.rs b/tests/ui/closures/2229_closure_analysis/migrations/macro.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/macro.rs rename to tests/ui/closures/2229_closure_analysis/migrations/macro.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/macro.stderr b/tests/ui/closures/2229_closure_analysis/migrations/macro.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/macro.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/macro.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.fixed b/tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.rs b/tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.rs rename to tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.stderr b/tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/migrations_rustfix.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.fixed b/tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.rs b/tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.rs rename to tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.stderr b/tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/mir_calls_to_shims.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.fixed b/tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.rs b/tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.rs rename to tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.stderr b/tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/multi_diagnostics.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/no_migrations.rs b/tests/ui/closures/2229_closure_analysis/migrations/no_migrations.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/no_migrations.rs rename to tests/ui/closures/2229_closure_analysis/migrations/no_migrations.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/old_name.rs b/tests/ui/closures/2229_closure_analysis/migrations/old_name.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/old_name.rs rename to tests/ui/closures/2229_closure_analysis/migrations/old_name.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/old_name.stderr b/tests/ui/closures/2229_closure_analysis/migrations/old_name.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/old_name.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/old_name.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/precise.fixed b/tests/ui/closures/2229_closure_analysis/migrations/precise.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/precise.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/precise.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/precise.rs b/tests/ui/closures/2229_closure_analysis/migrations/precise.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/precise.rs rename to tests/ui/closures/2229_closure_analysis/migrations/precise.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/precise.stderr b/tests/ui/closures/2229_closure_analysis/migrations/precise.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/precise.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/precise.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/precise_no_migrations.rs b/tests/ui/closures/2229_closure_analysis/migrations/precise_no_migrations.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/precise_no_migrations.rs rename to tests/ui/closures/2229_closure_analysis/migrations/precise_no_migrations.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.fixed b/tests/ui/closures/2229_closure_analysis/migrations/significant_drop.fixed similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.fixed rename to tests/ui/closures/2229_closure_analysis/migrations/significant_drop.fixed diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.rs b/tests/ui/closures/2229_closure_analysis/migrations/significant_drop.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.rs rename to tests/ui/closures/2229_closure_analysis/migrations/significant_drop.rs diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.stderr b/tests/ui/closures/2229_closure_analysis/migrations/significant_drop.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/significant_drop.stderr rename to tests/ui/closures/2229_closure_analysis/migrations/significant_drop.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/migrations/unpin_no_migration.rs b/tests/ui/closures/2229_closure_analysis/migrations/unpin_no_migration.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/migrations/unpin_no_migration.rs rename to tests/ui/closures/2229_closure_analysis/migrations/unpin_no_migration.rs diff --git a/src/test/ui/closures/2229_closure_analysis/move_closure.rs b/tests/ui/closures/2229_closure_analysis/move_closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/move_closure.rs rename to tests/ui/closures/2229_closure_analysis/move_closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/move_closure.stderr b/tests/ui/closures/2229_closure_analysis/move_closure.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/move_closure.stderr rename to tests/ui/closures/2229_closure_analysis/move_closure.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/multilevel-path-1.rs b/tests/ui/closures/2229_closure_analysis/multilevel-path-1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/multilevel-path-1.rs rename to tests/ui/closures/2229_closure_analysis/multilevel-path-1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/multilevel-path-1.stderr b/tests/ui/closures/2229_closure_analysis/multilevel-path-1.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/multilevel-path-1.stderr rename to tests/ui/closures/2229_closure_analysis/multilevel-path-1.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/multilevel-path-2.rs b/tests/ui/closures/2229_closure_analysis/multilevel-path-2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/multilevel-path-2.rs rename to tests/ui/closures/2229_closure_analysis/multilevel-path-2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/multilevel-path-2.stderr b/tests/ui/closures/2229_closure_analysis/multilevel-path-2.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/multilevel-path-2.stderr rename to tests/ui/closures/2229_closure_analysis/multilevel-path-2.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/nested-closure.rs b/tests/ui/closures/2229_closure_analysis/nested-closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/nested-closure.rs rename to tests/ui/closures/2229_closure_analysis/nested-closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/nested-closure.stderr b/tests/ui/closures/2229_closure_analysis/nested-closure.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/nested-closure.stderr rename to tests/ui/closures/2229_closure_analysis/nested-closure.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/optimization/edge_case.rs b/tests/ui/closures/2229_closure_analysis/optimization/edge_case.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/optimization/edge_case.rs rename to tests/ui/closures/2229_closure_analysis/optimization/edge_case.rs diff --git a/src/test/ui/closures/2229_closure_analysis/optimization/edge_case.stderr b/tests/ui/closures/2229_closure_analysis/optimization/edge_case.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/optimization/edge_case.stderr rename to tests/ui/closures/2229_closure_analysis/optimization/edge_case.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/optimization/edge_case_run_pass.rs b/tests/ui/closures/2229_closure_analysis/optimization/edge_case_run_pass.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/optimization/edge_case_run_pass.rs rename to tests/ui/closures/2229_closure_analysis/optimization/edge_case_run_pass.rs diff --git a/src/test/ui/closures/2229_closure_analysis/path-with-array-access.rs b/tests/ui/closures/2229_closure_analysis/path-with-array-access.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/path-with-array-access.rs rename to tests/ui/closures/2229_closure_analysis/path-with-array-access.rs diff --git a/src/test/ui/closures/2229_closure_analysis/path-with-array-access.stderr b/tests/ui/closures/2229_closure_analysis/path-with-array-access.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/path-with-array-access.stderr rename to tests/ui/closures/2229_closure_analysis/path-with-array-access.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs b/tests/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs rename to tests/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs diff --git a/src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order.stderr b/tests/ui/closures/2229_closure_analysis/preserve_field_drop_order.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order.stderr rename to tests/ui/closures/2229_closure_analysis/preserve_field_drop_order.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.rs b/tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.rs rename to tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_eighteen.run.stdout b/tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_eighteen.run.stdout similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_eighteen.run.stdout rename to tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_eighteen.run.stdout diff --git a/src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_twentyone.run.stdout b/tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_twentyone.run.stdout similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_twentyone.run.stdout rename to tests/ui/closures/2229_closure_analysis/preserve_field_drop_order2.twenty_twentyone.run.stdout diff --git a/src/test/ui/closures/2229_closure_analysis/repr_packed.rs b/tests/ui/closures/2229_closure_analysis/repr_packed.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/repr_packed.rs rename to tests/ui/closures/2229_closure_analysis/repr_packed.rs diff --git a/src/test/ui/closures/2229_closure_analysis/repr_packed.stderr b/tests/ui/closures/2229_closure_analysis/repr_packed.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/repr_packed.stderr rename to tests/ui/closures/2229_closure_analysis/repr_packed.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/box.rs b/tests/ui/closures/2229_closure_analysis/run_pass/box.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/box.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/box.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/by_value.rs b/tests/ui/closures/2229_closure_analysis/run_pass/by_value.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/by_value.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/by_value.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs b/tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs b/tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs b/tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/capture_with_wildcard_match.rs b/tests/ui/closures/2229_closure_analysis/run_pass/capture_with_wildcard_match.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/capture_with_wildcard_match.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/capture_with_wildcard_match.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.rs b/tests/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.stderr b/tests/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.stderr rename to tests/ui/closures/2229_closure_analysis/run_pass/destructure-pattern-closure-within-closure.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.rs b/tests/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.stderr b/tests/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.stderr rename to tests/ui/closures/2229_closure_analysis/run_pass/destructure_patterns.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/disjoint-capture-in-same-closure.rs b/tests/ui/closures/2229_closure_analysis/run_pass/disjoint-capture-in-same-closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/disjoint-capture-in-same-closure.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/disjoint-capture-in-same-closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/drop_then_use_fake_reads.rs b/tests/ui/closures/2229_closure_analysis/run_pass/drop_then_use_fake_reads.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/drop_then_use_fake_reads.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/drop_then_use_fake_reads.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/edition.rs b/tests/ui/closures/2229_closure_analysis/run_pass/edition.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/edition.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/edition.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs b/tests/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/fru_syntax.rs b/tests/ui/closures/2229_closure_analysis/run_pass/fru_syntax.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/fru_syntax.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/fru_syntax.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/issue-87378.rs b/tests/ui/closures/2229_closure_analysis/run_pass/issue-87378.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/issue-87378.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/issue-87378.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/issue-88372.rs b/tests/ui/closures/2229_closure_analysis/run_pass/issue-88372.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/issue-88372.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/issue-88372.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/issue-88431.rs b/tests/ui/closures/2229_closure_analysis/run_pass/issue-88431.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/issue-88431.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/issue-88431.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/issue-88476.rs b/tests/ui/closures/2229_closure_analysis/run_pass/issue-88476.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/issue-88476.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/issue-88476.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/lit-pattern-matching-with-methods.rs b/tests/ui/closures/2229_closure_analysis/run_pass/lit-pattern-matching-with-methods.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/lit-pattern-matching-with-methods.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/lit-pattern-matching-with-methods.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/move_closure.rs b/tests/ui/closures/2229_closure_analysis/run_pass/move_closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/move_closure.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/move_closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs b/tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs b/tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-3.rs b/tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-3.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-3.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/multilevel-path-3.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/mut_ref.rs b/tests/ui/closures/2229_closure_analysis/run_pass/mut_ref.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/mut_ref.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/mut_ref.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/mut_ref_struct_mem.rs b/tests/ui/closures/2229_closure_analysis/run_pass/mut_ref_struct_mem.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/mut_ref_struct_mem.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/mut_ref_struct_mem.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/nested-closure.rs b/tests/ui/closures/2229_closure_analysis/run_pass/nested-closure.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/nested-closure.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/nested-closure.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/struct-pattern-matching-with-methods.rs b/tests/ui/closures/2229_closure_analysis/run_pass/struct-pattern-matching-with-methods.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/struct-pattern-matching-with-methods.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/struct-pattern-matching-with-methods.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/tuple-struct-pattern-matching-with-methods.rs b/tests/ui/closures/2229_closure_analysis/run_pass/tuple-struct-pattern-matching-with-methods.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/tuple-struct-pattern-matching-with-methods.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/tuple-struct-pattern-matching-with-methods.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/unsafe_ptr.rs b/tests/ui/closures/2229_closure_analysis/run_pass/unsafe_ptr.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/unsafe_ptr.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/unsafe_ptr.rs diff --git a/src/test/ui/closures/2229_closure_analysis/run_pass/use_of_mutable_borrow_and_fake_reads.rs b/tests/ui/closures/2229_closure_analysis/run_pass/use_of_mutable_borrow_and_fake_reads.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/run_pass/use_of_mutable_borrow_and_fake_reads.rs rename to tests/ui/closures/2229_closure_analysis/run_pass/use_of_mutable_borrow_and_fake_reads.rs diff --git a/src/test/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs b/tests/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs rename to tests/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs diff --git a/src/test/ui/closures/2229_closure_analysis/simple-struct-min-capture.stderr b/tests/ui/closures/2229_closure_analysis/simple-struct-min-capture.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/simple-struct-min-capture.stderr rename to tests/ui/closures/2229_closure_analysis/simple-struct-min-capture.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/unsafe_ptr.rs b/tests/ui/closures/2229_closure_analysis/unsafe_ptr.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/unsafe_ptr.rs rename to tests/ui/closures/2229_closure_analysis/unsafe_ptr.rs diff --git a/src/test/ui/closures/2229_closure_analysis/unsafe_ptr.stderr b/tests/ui/closures/2229_closure_analysis/unsafe_ptr.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/unsafe_ptr.stderr rename to tests/ui/closures/2229_closure_analysis/unsafe_ptr.stderr diff --git a/src/test/ui/closures/2229_closure_analysis/wild_patterns.rs b/tests/ui/closures/2229_closure_analysis/wild_patterns.rs similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/wild_patterns.rs rename to tests/ui/closures/2229_closure_analysis/wild_patterns.rs diff --git a/src/test/ui/closures/2229_closure_analysis/wild_patterns.stderr b/tests/ui/closures/2229_closure_analysis/wild_patterns.stderr similarity index 100% rename from src/test/ui/closures/2229_closure_analysis/wild_patterns.stderr rename to tests/ui/closures/2229_closure_analysis/wild_patterns.stderr diff --git a/src/test/ui/closures/add_semicolon_non_block_closure.rs b/tests/ui/closures/add_semicolon_non_block_closure.rs similarity index 100% rename from src/test/ui/closures/add_semicolon_non_block_closure.rs rename to tests/ui/closures/add_semicolon_non_block_closure.rs diff --git a/src/test/ui/closures/add_semicolon_non_block_closure.stderr b/tests/ui/closures/add_semicolon_non_block_closure.stderr similarity index 100% rename from src/test/ui/closures/add_semicolon_non_block_closure.stderr rename to tests/ui/closures/add_semicolon_non_block_closure.stderr diff --git a/src/test/ui/closures/binder/async-closure-with-binder.rs b/tests/ui/closures/binder/async-closure-with-binder.rs similarity index 100% rename from src/test/ui/closures/binder/async-closure-with-binder.rs rename to tests/ui/closures/binder/async-closure-with-binder.rs diff --git a/src/test/ui/closures/binder/async-closure-with-binder.stderr b/tests/ui/closures/binder/async-closure-with-binder.stderr similarity index 100% rename from src/test/ui/closures/binder/async-closure-with-binder.stderr rename to tests/ui/closures/binder/async-closure-with-binder.stderr diff --git a/src/test/ui/closures/binder/disallow-const.rs b/tests/ui/closures/binder/disallow-const.rs similarity index 100% rename from src/test/ui/closures/binder/disallow-const.rs rename to tests/ui/closures/binder/disallow-const.rs diff --git a/src/test/ui/closures/binder/disallow-const.stderr b/tests/ui/closures/binder/disallow-const.stderr similarity index 100% rename from src/test/ui/closures/binder/disallow-const.stderr rename to tests/ui/closures/binder/disallow-const.stderr diff --git a/src/test/ui/closures/binder/disallow-ty.rs b/tests/ui/closures/binder/disallow-ty.rs similarity index 100% rename from src/test/ui/closures/binder/disallow-ty.rs rename to tests/ui/closures/binder/disallow-ty.rs diff --git a/src/test/ui/closures/binder/disallow-ty.stderr b/tests/ui/closures/binder/disallow-ty.stderr similarity index 100% rename from src/test/ui/closures/binder/disallow-ty.stderr rename to tests/ui/closures/binder/disallow-ty.stderr diff --git a/src/test/ui/closures/binder/implicit-return.rs b/tests/ui/closures/binder/implicit-return.rs similarity index 100% rename from src/test/ui/closures/binder/implicit-return.rs rename to tests/ui/closures/binder/implicit-return.rs diff --git a/src/test/ui/closures/binder/implicit-return.stderr b/tests/ui/closures/binder/implicit-return.stderr similarity index 100% rename from src/test/ui/closures/binder/implicit-return.stderr rename to tests/ui/closures/binder/implicit-return.stderr diff --git a/src/test/ui/closures/binder/implicit-stuff.rs b/tests/ui/closures/binder/implicit-stuff.rs similarity index 100% rename from src/test/ui/closures/binder/implicit-stuff.rs rename to tests/ui/closures/binder/implicit-stuff.rs diff --git a/src/test/ui/closures/binder/implicit-stuff.stderr b/tests/ui/closures/binder/implicit-stuff.stderr similarity index 100% rename from src/test/ui/closures/binder/implicit-stuff.stderr rename to tests/ui/closures/binder/implicit-stuff.stderr diff --git a/src/test/ui/closures/binder/late-bound-in-body.rs b/tests/ui/closures/binder/late-bound-in-body.rs similarity index 100% rename from src/test/ui/closures/binder/late-bound-in-body.rs rename to tests/ui/closures/binder/late-bound-in-body.rs diff --git a/src/test/ui/closures/binder/nested-closures-regions.rs b/tests/ui/closures/binder/nested-closures-regions.rs similarity index 100% rename from src/test/ui/closures/binder/nested-closures-regions.rs rename to tests/ui/closures/binder/nested-closures-regions.rs diff --git a/src/test/ui/closures/binder/nested-closures-regions.stderr b/tests/ui/closures/binder/nested-closures-regions.stderr similarity index 100% rename from src/test/ui/closures/binder/nested-closures-regions.stderr rename to tests/ui/closures/binder/nested-closures-regions.stderr diff --git a/src/test/ui/closures/binder/nested-closures.rs b/tests/ui/closures/binder/nested-closures.rs similarity index 100% rename from src/test/ui/closures/binder/nested-closures.rs rename to tests/ui/closures/binder/nested-closures.rs diff --git a/src/test/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.rs b/tests/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.rs similarity index 100% rename from src/test/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.rs rename to tests/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.rs diff --git a/src/test/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.stderr b/tests/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.stderr similarity index 100% rename from src/test/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.stderr rename to tests/ui/closures/binder/suggestion-for-introducing-lifetime-into-binder.stderr diff --git a/src/test/ui/closures/closure-array-break-length.rs b/tests/ui/closures/closure-array-break-length.rs similarity index 100% rename from src/test/ui/closures/closure-array-break-length.rs rename to tests/ui/closures/closure-array-break-length.rs diff --git a/src/test/ui/closures/closure-array-break-length.stderr b/tests/ui/closures/closure-array-break-length.stderr similarity index 100% rename from src/test/ui/closures/closure-array-break-length.stderr rename to tests/ui/closures/closure-array-break-length.stderr diff --git a/src/test/ui/closures/closure-bounds-cant-promote-superkind-in-struct.rs b/tests/ui/closures/closure-bounds-cant-promote-superkind-in-struct.rs similarity index 100% rename from src/test/ui/closures/closure-bounds-cant-promote-superkind-in-struct.rs rename to tests/ui/closures/closure-bounds-cant-promote-superkind-in-struct.rs diff --git a/src/test/ui/closures/closure-bounds-cant-promote-superkind-in-struct.stderr b/tests/ui/closures/closure-bounds-cant-promote-superkind-in-struct.stderr similarity index 100% rename from src/test/ui/closures/closure-bounds-cant-promote-superkind-in-struct.stderr rename to tests/ui/closures/closure-bounds-cant-promote-superkind-in-struct.stderr diff --git a/src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.rs b/tests/ui/closures/closure-bounds-static-cant-capture-borrowed.rs similarity index 100% rename from src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.rs rename to tests/ui/closures/closure-bounds-static-cant-capture-borrowed.rs diff --git a/src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.stderr b/tests/ui/closures/closure-bounds-static-cant-capture-borrowed.stderr similarity index 100% rename from src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.stderr rename to tests/ui/closures/closure-bounds-static-cant-capture-borrowed.stderr diff --git a/src/test/ui/closures/closure-bounds-subtype.rs b/tests/ui/closures/closure-bounds-subtype.rs similarity index 100% rename from src/test/ui/closures/closure-bounds-subtype.rs rename to tests/ui/closures/closure-bounds-subtype.rs diff --git a/src/test/ui/closures/closure-bounds-subtype.stderr b/tests/ui/closures/closure-bounds-subtype.stderr similarity index 100% rename from src/test/ui/closures/closure-bounds-subtype.stderr rename to tests/ui/closures/closure-bounds-subtype.stderr diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.polonius.stderr b/tests/ui/closures/closure-expected-type/expect-region-supply-region-2.polonius.stderr similarity index 100% rename from src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.polonius.stderr rename to tests/ui/closures/closure-expected-type/expect-region-supply-region-2.polonius.stderr diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.rs b/tests/ui/closures/closure-expected-type/expect-region-supply-region-2.rs similarity index 100% rename from src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.rs rename to tests/ui/closures/closure-expected-type/expect-region-supply-region-2.rs diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.stderr b/tests/ui/closures/closure-expected-type/expect-region-supply-region-2.stderr similarity index 100% rename from src/test/ui/closures/closure-expected-type/expect-region-supply-region-2.stderr rename to tests/ui/closures/closure-expected-type/expect-region-supply-region-2.stderr diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region.rs b/tests/ui/closures/closure-expected-type/expect-region-supply-region.rs similarity index 100% rename from src/test/ui/closures/closure-expected-type/expect-region-supply-region.rs rename to tests/ui/closures/closure-expected-type/expect-region-supply-region.rs diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region.stderr b/tests/ui/closures/closure-expected-type/expect-region-supply-region.stderr similarity index 100% rename from src/test/ui/closures/closure-expected-type/expect-region-supply-region.stderr rename to tests/ui/closures/closure-expected-type/expect-region-supply-region.stderr diff --git a/src/test/ui/closures/closure-expected.rs b/tests/ui/closures/closure-expected.rs similarity index 100% rename from src/test/ui/closures/closure-expected.rs rename to tests/ui/closures/closure-expected.rs diff --git a/src/test/ui/closures/closure-expected.stderr b/tests/ui/closures/closure-expected.stderr similarity index 100% rename from src/test/ui/closures/closure-expected.stderr rename to tests/ui/closures/closure-expected.stderr diff --git a/src/test/ui/closures/closure-immutable-outer-variable.fixed b/tests/ui/closures/closure-immutable-outer-variable.fixed similarity index 100% rename from src/test/ui/closures/closure-immutable-outer-variable.fixed rename to tests/ui/closures/closure-immutable-outer-variable.fixed diff --git a/src/test/ui/closures/closure-immutable-outer-variable.rs b/tests/ui/closures/closure-immutable-outer-variable.rs similarity index 100% rename from src/test/ui/closures/closure-immutable-outer-variable.rs rename to tests/ui/closures/closure-immutable-outer-variable.rs diff --git a/src/test/ui/closures/closure-immutable-outer-variable.rs.fixed b/tests/ui/closures/closure-immutable-outer-variable.rs.fixed similarity index 100% rename from src/test/ui/closures/closure-immutable-outer-variable.rs.fixed rename to tests/ui/closures/closure-immutable-outer-variable.rs.fixed diff --git a/src/test/ui/closures/closure-immutable-outer-variable.stderr b/tests/ui/closures/closure-immutable-outer-variable.stderr similarity index 100% rename from src/test/ui/closures/closure-immutable-outer-variable.stderr rename to tests/ui/closures/closure-immutable-outer-variable.stderr diff --git a/src/test/ui/closures/closure-move-sync.rs b/tests/ui/closures/closure-move-sync.rs similarity index 100% rename from src/test/ui/closures/closure-move-sync.rs rename to tests/ui/closures/closure-move-sync.rs diff --git a/src/test/ui/closures/closure-move-sync.stderr b/tests/ui/closures/closure-move-sync.stderr similarity index 100% rename from src/test/ui/closures/closure-move-sync.stderr rename to tests/ui/closures/closure-move-sync.stderr diff --git a/src/test/ui/closures/closure-no-fn-1.rs b/tests/ui/closures/closure-no-fn-1.rs similarity index 100% rename from src/test/ui/closures/closure-no-fn-1.rs rename to tests/ui/closures/closure-no-fn-1.rs diff --git a/src/test/ui/closures/closure-no-fn-1.stderr b/tests/ui/closures/closure-no-fn-1.stderr similarity index 100% rename from src/test/ui/closures/closure-no-fn-1.stderr rename to tests/ui/closures/closure-no-fn-1.stderr diff --git a/src/test/ui/closures/closure-no-fn-2.rs b/tests/ui/closures/closure-no-fn-2.rs similarity index 100% rename from src/test/ui/closures/closure-no-fn-2.rs rename to tests/ui/closures/closure-no-fn-2.rs diff --git a/src/test/ui/closures/closure-no-fn-2.stderr b/tests/ui/closures/closure-no-fn-2.stderr similarity index 100% rename from src/test/ui/closures/closure-no-fn-2.stderr rename to tests/ui/closures/closure-no-fn-2.stderr diff --git a/src/test/ui/closures/closure-no-fn-3.rs b/tests/ui/closures/closure-no-fn-3.rs similarity index 100% rename from src/test/ui/closures/closure-no-fn-3.rs rename to tests/ui/closures/closure-no-fn-3.rs diff --git a/src/test/ui/closures/closure-no-fn-3.stderr b/tests/ui/closures/closure-no-fn-3.stderr similarity index 100% rename from src/test/ui/closures/closure-no-fn-3.stderr rename to tests/ui/closures/closure-no-fn-3.stderr diff --git a/src/test/ui/closures/closure-no-fn-4.rs b/tests/ui/closures/closure-no-fn-4.rs similarity index 100% rename from src/test/ui/closures/closure-no-fn-4.rs rename to tests/ui/closures/closure-no-fn-4.rs diff --git a/src/test/ui/closures/closure-no-fn-4.stderr b/tests/ui/closures/closure-no-fn-4.stderr similarity index 100% rename from src/test/ui/closures/closure-no-fn-4.stderr rename to tests/ui/closures/closure-no-fn-4.stderr diff --git a/src/test/ui/closures/closure-no-fn-5.rs b/tests/ui/closures/closure-no-fn-5.rs similarity index 100% rename from src/test/ui/closures/closure-no-fn-5.rs rename to tests/ui/closures/closure-no-fn-5.rs diff --git a/src/test/ui/closures/closure-no-fn-5.stderr b/tests/ui/closures/closure-no-fn-5.stderr similarity index 100% rename from src/test/ui/closures/closure-no-fn-5.stderr rename to tests/ui/closures/closure-no-fn-5.stderr diff --git a/src/test/ui/closures/closure-referencing-itself-issue-25954.rs b/tests/ui/closures/closure-referencing-itself-issue-25954.rs similarity index 100% rename from src/test/ui/closures/closure-referencing-itself-issue-25954.rs rename to tests/ui/closures/closure-referencing-itself-issue-25954.rs diff --git a/src/test/ui/closures/closure-referencing-itself-issue-25954.stderr b/tests/ui/closures/closure-referencing-itself-issue-25954.stderr similarity index 100% rename from src/test/ui/closures/closure-referencing-itself-issue-25954.stderr rename to tests/ui/closures/closure-referencing-itself-issue-25954.stderr diff --git a/src/test/ui/closures/closure-reform-bad.rs b/tests/ui/closures/closure-reform-bad.rs similarity index 100% rename from src/test/ui/closures/closure-reform-bad.rs rename to tests/ui/closures/closure-reform-bad.rs diff --git a/src/test/ui/closures/closure-reform-bad.stderr b/tests/ui/closures/closure-reform-bad.stderr similarity index 100% rename from src/test/ui/closures/closure-reform-bad.stderr rename to tests/ui/closures/closure-reform-bad.stderr diff --git a/src/test/ui/closures/closure-return-type-mismatch.rs b/tests/ui/closures/closure-return-type-mismatch.rs similarity index 100% rename from src/test/ui/closures/closure-return-type-mismatch.rs rename to tests/ui/closures/closure-return-type-mismatch.rs diff --git a/src/test/ui/closures/closure-return-type-mismatch.stderr b/tests/ui/closures/closure-return-type-mismatch.stderr similarity index 100% rename from src/test/ui/closures/closure-return-type-mismatch.stderr rename to tests/ui/closures/closure-return-type-mismatch.stderr diff --git a/src/test/ui/closures/closure-return-type-must-be-sized.rs b/tests/ui/closures/closure-return-type-must-be-sized.rs similarity index 100% rename from src/test/ui/closures/closure-return-type-must-be-sized.rs rename to tests/ui/closures/closure-return-type-must-be-sized.rs diff --git a/src/test/ui/closures/closure-return-type-must-be-sized.stderr b/tests/ui/closures/closure-return-type-must-be-sized.stderr similarity index 100% rename from src/test/ui/closures/closure-return-type-must-be-sized.stderr rename to tests/ui/closures/closure-return-type-must-be-sized.stderr diff --git a/src/test/ui/closures/closure-wrong-kind.rs b/tests/ui/closures/closure-wrong-kind.rs similarity index 100% rename from src/test/ui/closures/closure-wrong-kind.rs rename to tests/ui/closures/closure-wrong-kind.rs diff --git a/src/test/ui/closures/closure-wrong-kind.stderr b/tests/ui/closures/closure-wrong-kind.stderr similarity index 100% rename from src/test/ui/closures/closure-wrong-kind.stderr rename to tests/ui/closures/closure-wrong-kind.stderr diff --git a/src/test/ui/closures/closure_cap_coerce_many_fail.rs b/tests/ui/closures/closure_cap_coerce_many_fail.rs similarity index 100% rename from src/test/ui/closures/closure_cap_coerce_many_fail.rs rename to tests/ui/closures/closure_cap_coerce_many_fail.rs diff --git a/src/test/ui/closures/closure_cap_coerce_many_fail.stderr b/tests/ui/closures/closure_cap_coerce_many_fail.stderr similarity index 100% rename from src/test/ui/closures/closure_cap_coerce_many_fail.stderr rename to tests/ui/closures/closure_cap_coerce_many_fail.stderr diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_check_pass.rs b/tests/ui/closures/closure_no_cap_coerce_many_check_pass.rs similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_check_pass.rs rename to tests/ui/closures/closure_no_cap_coerce_many_check_pass.rs diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_run_pass.rs b/tests/ui/closures/closure_no_cap_coerce_many_run_pass.rs similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_run_pass.rs rename to tests/ui/closures/closure_no_cap_coerce_many_run_pass.rs diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.mir.stderr b/tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.mir.stderr similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.mir.stderr rename to tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.mir.stderr diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.rs b/tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.rs similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.rs rename to tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.rs diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.thir.stderr b/tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.thir.stderr similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_unsafe_0.thir.stderr rename to tests/ui/closures/closure_no_cap_coerce_many_unsafe_0.thir.stderr diff --git a/src/test/ui/closures/closure_no_cap_coerce_many_unsafe_1.rs b/tests/ui/closures/closure_no_cap_coerce_many_unsafe_1.rs similarity index 100% rename from src/test/ui/closures/closure_no_cap_coerce_many_unsafe_1.rs rename to tests/ui/closures/closure_no_cap_coerce_many_unsafe_1.rs diff --git a/src/test/ui/closures/closure_promotion.rs b/tests/ui/closures/closure_promotion.rs similarity index 100% rename from src/test/ui/closures/closure_promotion.rs rename to tests/ui/closures/closure_promotion.rs diff --git a/src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr b/tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr similarity index 100% rename from src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr rename to tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr diff --git a/src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.rs b/tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.rs similarity index 100% rename from src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.rs rename to tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.rs diff --git a/src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr b/tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr similarity index 100% rename from src/test/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr rename to tests/ui/closures/coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr diff --git a/src/test/ui/closures/coerce-unsafe-to-closure.rs b/tests/ui/closures/coerce-unsafe-to-closure.rs similarity index 100% rename from src/test/ui/closures/coerce-unsafe-to-closure.rs rename to tests/ui/closures/coerce-unsafe-to-closure.rs diff --git a/src/test/ui/closures/coerce-unsafe-to-closure.stderr b/tests/ui/closures/coerce-unsafe-to-closure.stderr similarity index 100% rename from src/test/ui/closures/coerce-unsafe-to-closure.stderr rename to tests/ui/closures/coerce-unsafe-to-closure.stderr diff --git a/src/test/ui/closures/deeply-nested_closures.rs b/tests/ui/closures/deeply-nested_closures.rs similarity index 100% rename from src/test/ui/closures/deeply-nested_closures.rs rename to tests/ui/closures/deeply-nested_closures.rs diff --git a/src/test/ui/closures/diverging-closure.rs b/tests/ui/closures/diverging-closure.rs similarity index 100% rename from src/test/ui/closures/diverging-closure.rs rename to tests/ui/closures/diverging-closure.rs diff --git a/src/test/ui/closures/issue-101696.rs b/tests/ui/closures/issue-101696.rs similarity index 100% rename from src/test/ui/closures/issue-101696.rs rename to tests/ui/closures/issue-101696.rs diff --git a/src/test/ui/closures/issue-102089-multiple-opaque-cast.rs b/tests/ui/closures/issue-102089-multiple-opaque-cast.rs similarity index 100% rename from src/test/ui/closures/issue-102089-multiple-opaque-cast.rs rename to tests/ui/closures/issue-102089-multiple-opaque-cast.rs diff --git a/src/test/ui/closures/issue-10398.rs b/tests/ui/closures/issue-10398.rs similarity index 100% rename from src/test/ui/closures/issue-10398.rs rename to tests/ui/closures/issue-10398.rs diff --git a/src/test/ui/closures/issue-10398.stderr b/tests/ui/closures/issue-10398.stderr similarity index 100% rename from src/test/ui/closures/issue-10398.stderr rename to tests/ui/closures/issue-10398.stderr diff --git a/src/test/ui/closures/issue-23012-supertrait-signature-inference.rs b/tests/ui/closures/issue-23012-supertrait-signature-inference.rs similarity index 100% rename from src/test/ui/closures/issue-23012-supertrait-signature-inference.rs rename to tests/ui/closures/issue-23012-supertrait-signature-inference.rs diff --git a/src/test/ui/closures/issue-41366.rs b/tests/ui/closures/issue-41366.rs similarity index 100% rename from src/test/ui/closures/issue-41366.rs rename to tests/ui/closures/issue-41366.rs diff --git a/src/test/ui/closures/issue-42463.rs b/tests/ui/closures/issue-42463.rs similarity index 100% rename from src/test/ui/closures/issue-42463.rs rename to tests/ui/closures/issue-42463.rs diff --git a/src/test/ui/closures/issue-46742.rs b/tests/ui/closures/issue-46742.rs similarity index 100% rename from src/test/ui/closures/issue-46742.rs rename to tests/ui/closures/issue-46742.rs diff --git a/src/test/ui/closures/issue-48109.rs b/tests/ui/closures/issue-48109.rs similarity index 100% rename from src/test/ui/closures/issue-48109.rs rename to tests/ui/closures/issue-48109.rs diff --git a/src/test/ui/closures/issue-52437.rs b/tests/ui/closures/issue-52437.rs similarity index 100% rename from src/test/ui/closures/issue-52437.rs rename to tests/ui/closures/issue-52437.rs diff --git a/src/test/ui/closures/issue-52437.stderr b/tests/ui/closures/issue-52437.stderr similarity index 100% rename from src/test/ui/closures/issue-52437.stderr rename to tests/ui/closures/issue-52437.stderr diff --git a/src/test/ui/closures/issue-67123.rs b/tests/ui/closures/issue-67123.rs similarity index 100% rename from src/test/ui/closures/issue-67123.rs rename to tests/ui/closures/issue-67123.rs diff --git a/src/test/ui/closures/issue-67123.stderr b/tests/ui/closures/issue-67123.stderr similarity index 100% rename from src/test/ui/closures/issue-67123.stderr rename to tests/ui/closures/issue-67123.stderr diff --git a/src/test/ui/closures/issue-6801.rs b/tests/ui/closures/issue-6801.rs similarity index 100% rename from src/test/ui/closures/issue-6801.rs rename to tests/ui/closures/issue-6801.rs diff --git a/src/test/ui/closures/issue-6801.stderr b/tests/ui/closures/issue-6801.stderr similarity index 100% rename from src/test/ui/closures/issue-6801.stderr rename to tests/ui/closures/issue-6801.stderr diff --git a/src/test/ui/closures/issue-68025.rs b/tests/ui/closures/issue-68025.rs similarity index 100% rename from src/test/ui/closures/issue-68025.rs rename to tests/ui/closures/issue-68025.rs diff --git a/src/test/ui/closures/issue-72408-nested-closures-exponential.rs b/tests/ui/closures/issue-72408-nested-closures-exponential.rs similarity index 100% rename from src/test/ui/closures/issue-72408-nested-closures-exponential.rs rename to tests/ui/closures/issue-72408-nested-closures-exponential.rs diff --git a/src/test/ui/closures/issue-78720.rs b/tests/ui/closures/issue-78720.rs similarity index 100% rename from src/test/ui/closures/issue-78720.rs rename to tests/ui/closures/issue-78720.rs diff --git a/src/test/ui/closures/issue-78720.stderr b/tests/ui/closures/issue-78720.stderr similarity index 100% rename from src/test/ui/closures/issue-78720.stderr rename to tests/ui/closures/issue-78720.stderr diff --git a/src/test/ui/closures/issue-80313-mutable-borrow-in-closure.rs b/tests/ui/closures/issue-80313-mutable-borrow-in-closure.rs similarity index 100% rename from src/test/ui/closures/issue-80313-mutable-borrow-in-closure.rs rename to tests/ui/closures/issue-80313-mutable-borrow-in-closure.rs diff --git a/src/test/ui/closures/issue-80313-mutable-borrow-in-closure.stderr b/tests/ui/closures/issue-80313-mutable-borrow-in-closure.stderr similarity index 100% rename from src/test/ui/closures/issue-80313-mutable-borrow-in-closure.stderr rename to tests/ui/closures/issue-80313-mutable-borrow-in-closure.stderr diff --git a/src/test/ui/closures/issue-80313-mutable-borrow-in-move-closure.rs b/tests/ui/closures/issue-80313-mutable-borrow-in-move-closure.rs similarity index 100% rename from src/test/ui/closures/issue-80313-mutable-borrow-in-move-closure.rs rename to tests/ui/closures/issue-80313-mutable-borrow-in-move-closure.rs diff --git a/src/test/ui/closures/issue-80313-mutable-borrow-in-move-closure.stderr b/tests/ui/closures/issue-80313-mutable-borrow-in-move-closure.stderr similarity index 100% rename from src/test/ui/closures/issue-80313-mutable-borrow-in-move-closure.stderr rename to tests/ui/closures/issue-80313-mutable-borrow-in-move-closure.stderr diff --git a/src/test/ui/closures/issue-80313-mutation-in-closure.rs b/tests/ui/closures/issue-80313-mutation-in-closure.rs similarity index 100% rename from src/test/ui/closures/issue-80313-mutation-in-closure.rs rename to tests/ui/closures/issue-80313-mutation-in-closure.rs diff --git a/src/test/ui/closures/issue-80313-mutation-in-closure.stderr b/tests/ui/closures/issue-80313-mutation-in-closure.stderr similarity index 100% rename from src/test/ui/closures/issue-80313-mutation-in-closure.stderr rename to tests/ui/closures/issue-80313-mutation-in-closure.stderr diff --git a/src/test/ui/closures/issue-80313-mutation-in-move-closure.rs b/tests/ui/closures/issue-80313-mutation-in-move-closure.rs similarity index 100% rename from src/test/ui/closures/issue-80313-mutation-in-move-closure.rs rename to tests/ui/closures/issue-80313-mutation-in-move-closure.rs diff --git a/src/test/ui/closures/issue-80313-mutation-in-move-closure.stderr b/tests/ui/closures/issue-80313-mutation-in-move-closure.stderr similarity index 100% rename from src/test/ui/closures/issue-80313-mutation-in-move-closure.stderr rename to tests/ui/closures/issue-80313-mutation-in-move-closure.stderr diff --git a/src/test/ui/closures/issue-81700-mut-borrow.rs b/tests/ui/closures/issue-81700-mut-borrow.rs similarity index 100% rename from src/test/ui/closures/issue-81700-mut-borrow.rs rename to tests/ui/closures/issue-81700-mut-borrow.rs diff --git a/src/test/ui/closures/issue-81700-mut-borrow.stderr b/tests/ui/closures/issue-81700-mut-borrow.stderr similarity index 100% rename from src/test/ui/closures/issue-81700-mut-borrow.stderr rename to tests/ui/closures/issue-81700-mut-borrow.stderr diff --git a/src/test/ui/closures/issue-82438-mut-without-upvar.rs b/tests/ui/closures/issue-82438-mut-without-upvar.rs similarity index 100% rename from src/test/ui/closures/issue-82438-mut-without-upvar.rs rename to tests/ui/closures/issue-82438-mut-without-upvar.rs diff --git a/src/test/ui/closures/issue-82438-mut-without-upvar.stderr b/tests/ui/closures/issue-82438-mut-without-upvar.stderr similarity index 100% rename from src/test/ui/closures/issue-82438-mut-without-upvar.stderr rename to tests/ui/closures/issue-82438-mut-without-upvar.stderr diff --git a/src/test/ui/closures/issue-84044-drop-non-mut.rs b/tests/ui/closures/issue-84044-drop-non-mut.rs similarity index 100% rename from src/test/ui/closures/issue-84044-drop-non-mut.rs rename to tests/ui/closures/issue-84044-drop-non-mut.rs diff --git a/src/test/ui/closures/issue-84044-drop-non-mut.stderr b/tests/ui/closures/issue-84044-drop-non-mut.stderr similarity index 100% rename from src/test/ui/closures/issue-84044-drop-non-mut.stderr rename to tests/ui/closures/issue-84044-drop-non-mut.stderr diff --git a/src/test/ui/closures/issue-84128.rs b/tests/ui/closures/issue-84128.rs similarity index 100% rename from src/test/ui/closures/issue-84128.rs rename to tests/ui/closures/issue-84128.rs diff --git a/src/test/ui/closures/issue-84128.stderr b/tests/ui/closures/issue-84128.stderr similarity index 100% rename from src/test/ui/closures/issue-84128.stderr rename to tests/ui/closures/issue-84128.stderr diff --git a/src/test/ui/closures/issue-87461.rs b/tests/ui/closures/issue-87461.rs similarity index 100% rename from src/test/ui/closures/issue-87461.rs rename to tests/ui/closures/issue-87461.rs diff --git a/src/test/ui/closures/issue-87461.stderr b/tests/ui/closures/issue-87461.stderr similarity index 100% rename from src/test/ui/closures/issue-87461.stderr rename to tests/ui/closures/issue-87461.stderr diff --git a/src/test/ui/closures/issue-87814-1.rs b/tests/ui/closures/issue-87814-1.rs similarity index 100% rename from src/test/ui/closures/issue-87814-1.rs rename to tests/ui/closures/issue-87814-1.rs diff --git a/src/test/ui/closures/issue-87814-2.rs b/tests/ui/closures/issue-87814-2.rs similarity index 100% rename from src/test/ui/closures/issue-87814-2.rs rename to tests/ui/closures/issue-87814-2.rs diff --git a/src/test/ui/closures/issue-90871.rs b/tests/ui/closures/issue-90871.rs similarity index 100% rename from src/test/ui/closures/issue-90871.rs rename to tests/ui/closures/issue-90871.rs diff --git a/src/test/ui/closures/issue-90871.stderr b/tests/ui/closures/issue-90871.stderr similarity index 100% rename from src/test/ui/closures/issue-90871.stderr rename to tests/ui/closures/issue-90871.stderr diff --git a/src/test/ui/closures/issue-97607.rs b/tests/ui/closures/issue-97607.rs similarity index 100% rename from src/test/ui/closures/issue-97607.rs rename to tests/ui/closures/issue-97607.rs diff --git a/src/test/ui/closures/issue-99565.rs b/tests/ui/closures/issue-99565.rs similarity index 100% rename from src/test/ui/closures/issue-99565.rs rename to tests/ui/closures/issue-99565.rs diff --git a/src/test/ui/closures/issue-99565.stderr b/tests/ui/closures/issue-99565.stderr similarity index 100% rename from src/test/ui/closures/issue-99565.stderr rename to tests/ui/closures/issue-99565.stderr diff --git a/src/test/ui/closures/local-type-mix.rs b/tests/ui/closures/local-type-mix.rs similarity index 100% rename from src/test/ui/closures/local-type-mix.rs rename to tests/ui/closures/local-type-mix.rs diff --git a/src/test/ui/closures/local-type-mix.stderr b/tests/ui/closures/local-type-mix.stderr similarity index 100% rename from src/test/ui/closures/local-type-mix.stderr rename to tests/ui/closures/local-type-mix.stderr diff --git a/src/test/ui/closures/multiple-fn-bounds.rs b/tests/ui/closures/multiple-fn-bounds.rs similarity index 100% rename from src/test/ui/closures/multiple-fn-bounds.rs rename to tests/ui/closures/multiple-fn-bounds.rs diff --git a/src/test/ui/closures/multiple-fn-bounds.stderr b/tests/ui/closures/multiple-fn-bounds.stderr similarity index 100% rename from src/test/ui/closures/multiple-fn-bounds.stderr rename to tests/ui/closures/multiple-fn-bounds.stderr diff --git a/src/test/ui/closures/old-closure-arg-call-as.rs b/tests/ui/closures/old-closure-arg-call-as.rs similarity index 100% rename from src/test/ui/closures/old-closure-arg-call-as.rs rename to tests/ui/closures/old-closure-arg-call-as.rs diff --git a/src/test/ui/closures/old-closure-arg.rs b/tests/ui/closures/old-closure-arg.rs similarity index 100% rename from src/test/ui/closures/old-closure-arg.rs rename to tests/ui/closures/old-closure-arg.rs diff --git a/src/test/ui/closures/old-closure-explicit-types.rs b/tests/ui/closures/old-closure-explicit-types.rs similarity index 100% rename from src/test/ui/closures/old-closure-explicit-types.rs rename to tests/ui/closures/old-closure-explicit-types.rs diff --git a/src/test/ui/closures/old-closure-expr-precedence.rs b/tests/ui/closures/old-closure-expr-precedence.rs similarity index 100% rename from src/test/ui/closures/old-closure-expr-precedence.rs rename to tests/ui/closures/old-closure-expr-precedence.rs diff --git a/src/test/ui/closures/old-closure-expr-precedence.stderr b/tests/ui/closures/old-closure-expr-precedence.stderr similarity index 100% rename from src/test/ui/closures/old-closure-expr-precedence.stderr rename to tests/ui/closures/old-closure-expr-precedence.stderr diff --git a/src/test/ui/closures/old-closure-expression-remove-semicolon.fixed b/tests/ui/closures/old-closure-expression-remove-semicolon.fixed similarity index 100% rename from src/test/ui/closures/old-closure-expression-remove-semicolon.fixed rename to tests/ui/closures/old-closure-expression-remove-semicolon.fixed diff --git a/src/test/ui/closures/old-closure-expression-remove-semicolon.rs b/tests/ui/closures/old-closure-expression-remove-semicolon.rs similarity index 100% rename from src/test/ui/closures/old-closure-expression-remove-semicolon.rs rename to tests/ui/closures/old-closure-expression-remove-semicolon.rs diff --git a/src/test/ui/closures/old-closure-expression-remove-semicolon.stderr b/tests/ui/closures/old-closure-expression-remove-semicolon.stderr similarity index 100% rename from src/test/ui/closures/old-closure-expression-remove-semicolon.stderr rename to tests/ui/closures/old-closure-expression-remove-semicolon.stderr diff --git a/src/test/ui/closures/old-closure-fn-coerce.rs b/tests/ui/closures/old-closure-fn-coerce.rs similarity index 100% rename from src/test/ui/closures/old-closure-fn-coerce.rs rename to tests/ui/closures/old-closure-fn-coerce.rs diff --git a/src/test/ui/closures/old-closure-iter-1.rs b/tests/ui/closures/old-closure-iter-1.rs similarity index 100% rename from src/test/ui/closures/old-closure-iter-1.rs rename to tests/ui/closures/old-closure-iter-1.rs diff --git a/src/test/ui/closures/old-closure-iter-2.rs b/tests/ui/closures/old-closure-iter-2.rs similarity index 100% rename from src/test/ui/closures/old-closure-iter-2.rs rename to tests/ui/closures/old-closure-iter-2.rs diff --git a/src/test/ui/closures/once-move-out-on-heap.rs b/tests/ui/closures/once-move-out-on-heap.rs similarity index 100% rename from src/test/ui/closures/once-move-out-on-heap.rs rename to tests/ui/closures/once-move-out-on-heap.rs diff --git a/src/test/ui/closures/print/closure-print-generic-1.rs b/tests/ui/closures/print/closure-print-generic-1.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-1.rs rename to tests/ui/closures/print/closure-print-generic-1.rs diff --git a/src/test/ui/closures/print/closure-print-generic-1.stderr b/tests/ui/closures/print/closure-print-generic-1.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-1.stderr rename to tests/ui/closures/print/closure-print-generic-1.stderr diff --git a/src/test/ui/closures/print/closure-print-generic-2.rs b/tests/ui/closures/print/closure-print-generic-2.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-2.rs rename to tests/ui/closures/print/closure-print-generic-2.rs diff --git a/src/test/ui/closures/print/closure-print-generic-2.stderr b/tests/ui/closures/print/closure-print-generic-2.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-2.stderr rename to tests/ui/closures/print/closure-print-generic-2.stderr diff --git a/src/test/ui/closures/print/closure-print-generic-trim-off-verbose-2.rs b/tests/ui/closures/print/closure-print-generic-trim-off-verbose-2.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-trim-off-verbose-2.rs rename to tests/ui/closures/print/closure-print-generic-trim-off-verbose-2.rs diff --git a/src/test/ui/closures/print/closure-print-generic-trim-off-verbose-2.stderr b/tests/ui/closures/print/closure-print-generic-trim-off-verbose-2.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-trim-off-verbose-2.stderr rename to tests/ui/closures/print/closure-print-generic-trim-off-verbose-2.stderr diff --git a/src/test/ui/closures/print/closure-print-generic-verbose-1.rs b/tests/ui/closures/print/closure-print-generic-verbose-1.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-verbose-1.rs rename to tests/ui/closures/print/closure-print-generic-verbose-1.rs diff --git a/src/test/ui/closures/print/closure-print-generic-verbose-1.stderr b/tests/ui/closures/print/closure-print-generic-verbose-1.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-verbose-1.stderr rename to tests/ui/closures/print/closure-print-generic-verbose-1.stderr diff --git a/src/test/ui/closures/print/closure-print-generic-verbose-2.rs b/tests/ui/closures/print/closure-print-generic-verbose-2.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-verbose-2.rs rename to tests/ui/closures/print/closure-print-generic-verbose-2.rs diff --git a/src/test/ui/closures/print/closure-print-generic-verbose-2.stderr b/tests/ui/closures/print/closure-print-generic-verbose-2.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-generic-verbose-2.stderr rename to tests/ui/closures/print/closure-print-generic-verbose-2.stderr diff --git a/src/test/ui/closures/print/closure-print-verbose.rs b/tests/ui/closures/print/closure-print-verbose.rs similarity index 100% rename from src/test/ui/closures/print/closure-print-verbose.rs rename to tests/ui/closures/print/closure-print-verbose.rs diff --git a/src/test/ui/closures/print/closure-print-verbose.stderr b/tests/ui/closures/print/closure-print-verbose.stderr similarity index 100% rename from src/test/ui/closures/print/closure-print-verbose.stderr rename to tests/ui/closures/print/closure-print-verbose.stderr diff --git a/src/test/ui/closures/semistatement-in-lambda.rs b/tests/ui/closures/semistatement-in-lambda.rs similarity index 100% rename from src/test/ui/closures/semistatement-in-lambda.rs rename to tests/ui/closures/semistatement-in-lambda.rs diff --git a/src/test/ui/closures/supertrait-hint-cycle-2.rs b/tests/ui/closures/supertrait-hint-cycle-2.rs similarity index 100% rename from src/test/ui/closures/supertrait-hint-cycle-2.rs rename to tests/ui/closures/supertrait-hint-cycle-2.rs diff --git a/src/test/ui/closures/supertrait-hint-cycle-3.rs b/tests/ui/closures/supertrait-hint-cycle-3.rs similarity index 100% rename from src/test/ui/closures/supertrait-hint-cycle-3.rs rename to tests/ui/closures/supertrait-hint-cycle-3.rs diff --git a/src/test/ui/closures/supertrait-hint-cycle.rs b/tests/ui/closures/supertrait-hint-cycle.rs similarity index 100% rename from src/test/ui/closures/supertrait-hint-cycle.rs rename to tests/ui/closures/supertrait-hint-cycle.rs diff --git a/src/test/ui/closures/supertrait-hint-references-assoc-ty.rs b/tests/ui/closures/supertrait-hint-references-assoc-ty.rs similarity index 100% rename from src/test/ui/closures/supertrait-hint-references-assoc-ty.rs rename to tests/ui/closures/supertrait-hint-references-assoc-ty.rs diff --git a/src/test/ui/closures/thir-unsafeck-issue-85871.rs b/tests/ui/closures/thir-unsafeck-issue-85871.rs similarity index 100% rename from src/test/ui/closures/thir-unsafeck-issue-85871.rs rename to tests/ui/closures/thir-unsafeck-issue-85871.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/gate_test.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-registers.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-registers.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-registers.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-registers.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/params-on-stack.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-1.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-call/wrong-abi-location-2.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/gate_test.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/issue-83475.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-registers.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-registers.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-registers.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-registers.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/params-on-stack.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/trustzone-only.stderr diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.rs similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.rs rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.rs diff --git a/src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.stderr b/tests/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.stderr similarity index 100% rename from src/test/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.stderr rename to tests/ui/cmse-nonsecure/cmse-nonsecure-entry/wrong-abi.stderr diff --git a/src/test/ui/codegen/auxiliary/issue-97708-aux.rs b/tests/ui/codegen/auxiliary/issue-97708-aux.rs similarity index 100% rename from src/test/ui/codegen/auxiliary/issue-97708-aux.rs rename to tests/ui/codegen/auxiliary/issue-97708-aux.rs diff --git a/src/test/ui/codegen/auxiliary/llvm_pr32379.rs b/tests/ui/codegen/auxiliary/llvm_pr32379.rs similarity index 100% rename from src/test/ui/codegen/auxiliary/llvm_pr32379.rs rename to tests/ui/codegen/auxiliary/llvm_pr32379.rs diff --git a/src/test/ui/codegen/init-large-type.rs b/tests/ui/codegen/init-large-type.rs similarity index 100% rename from src/test/ui/codegen/init-large-type.rs rename to tests/ui/codegen/init-large-type.rs diff --git a/src/test/ui/codegen/issue-101585-128bit-repeat.rs b/tests/ui/codegen/issue-101585-128bit-repeat.rs similarity index 100% rename from src/test/ui/codegen/issue-101585-128bit-repeat.rs rename to tests/ui/codegen/issue-101585-128bit-repeat.rs diff --git a/src/test/ui/codegen/issue-16602-1.rs b/tests/ui/codegen/issue-16602-1.rs similarity index 100% rename from src/test/ui/codegen/issue-16602-1.rs rename to tests/ui/codegen/issue-16602-1.rs diff --git a/src/test/ui/codegen/issue-16602-2.rs b/tests/ui/codegen/issue-16602-2.rs similarity index 100% rename from src/test/ui/codegen/issue-16602-2.rs rename to tests/ui/codegen/issue-16602-2.rs diff --git a/src/test/ui/codegen/issue-16602-3.rs b/tests/ui/codegen/issue-16602-3.rs similarity index 100% rename from src/test/ui/codegen/issue-16602-3.rs rename to tests/ui/codegen/issue-16602-3.rs diff --git a/src/test/ui/codegen/issue-28950.rs b/tests/ui/codegen/issue-28950.rs similarity index 100% rename from src/test/ui/codegen/issue-28950.rs rename to tests/ui/codegen/issue-28950.rs diff --git a/src/test/ui/codegen/issue-55976.rs b/tests/ui/codegen/issue-55976.rs similarity index 100% rename from src/test/ui/codegen/issue-55976.rs rename to tests/ui/codegen/issue-55976.rs diff --git a/src/test/ui/codegen/issue-63787.rs b/tests/ui/codegen/issue-63787.rs similarity index 100% rename from src/test/ui/codegen/issue-63787.rs rename to tests/ui/codegen/issue-63787.rs diff --git a/src/test/ui/codegen/issue-64401.rs b/tests/ui/codegen/issue-64401.rs similarity index 100% rename from src/test/ui/codegen/issue-64401.rs rename to tests/ui/codegen/issue-64401.rs diff --git a/src/test/ui/codegen/issue-82859-slice-miscompile.rs b/tests/ui/codegen/issue-82859-slice-miscompile.rs similarity index 100% rename from src/test/ui/codegen/issue-82859-slice-miscompile.rs rename to tests/ui/codegen/issue-82859-slice-miscompile.rs diff --git a/src/test/ui/codegen/issue-88043-bb-does-not-have-terminator.rs b/tests/ui/codegen/issue-88043-bb-does-not-have-terminator.rs similarity index 100% rename from src/test/ui/codegen/issue-88043-bb-does-not-have-terminator.rs rename to tests/ui/codegen/issue-88043-bb-does-not-have-terminator.rs diff --git a/src/test/ui/codegen/issue-97708.rs b/tests/ui/codegen/issue-97708.rs similarity index 100% rename from src/test/ui/codegen/issue-97708.rs rename to tests/ui/codegen/issue-97708.rs diff --git a/src/test/ui/codegen/issue-99551.rs b/tests/ui/codegen/issue-99551.rs similarity index 100% rename from src/test/ui/codegen/issue-99551.rs rename to tests/ui/codegen/issue-99551.rs diff --git a/src/test/ui/codegen/llvm-pr32379.rs b/tests/ui/codegen/llvm-pr32379.rs similarity index 100% rename from src/test/ui/codegen/llvm-pr32379.rs rename to tests/ui/codegen/llvm-pr32379.rs diff --git a/src/test/ui/codemap_tests/bad-format-args.rs b/tests/ui/codemap_tests/bad-format-args.rs similarity index 100% rename from src/test/ui/codemap_tests/bad-format-args.rs rename to tests/ui/codemap_tests/bad-format-args.rs diff --git a/src/test/ui/codemap_tests/bad-format-args.stderr b/tests/ui/codemap_tests/bad-format-args.stderr similarity index 100% rename from src/test/ui/codemap_tests/bad-format-args.stderr rename to tests/ui/codemap_tests/bad-format-args.stderr diff --git a/src/test/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.rs b/tests/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.rs similarity index 100% rename from src/test/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.rs rename to tests/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.rs diff --git a/src/test/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.stderr b/tests/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.stderr similarity index 100% rename from src/test/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.stderr rename to tests/ui/codemap_tests/coherence-overlapping-inherent-impl-trait.stderr diff --git a/src/test/ui/codemap_tests/empty_span.rs b/tests/ui/codemap_tests/empty_span.rs similarity index 100% rename from src/test/ui/codemap_tests/empty_span.rs rename to tests/ui/codemap_tests/empty_span.rs diff --git a/src/test/ui/codemap_tests/empty_span.stderr b/tests/ui/codemap_tests/empty_span.stderr similarity index 100% rename from src/test/ui/codemap_tests/empty_span.stderr rename to tests/ui/codemap_tests/empty_span.stderr diff --git a/src/test/ui/codemap_tests/huge_multispan_highlight.rs b/tests/ui/codemap_tests/huge_multispan_highlight.rs similarity index 100% rename from src/test/ui/codemap_tests/huge_multispan_highlight.rs rename to tests/ui/codemap_tests/huge_multispan_highlight.rs diff --git a/src/test/ui/codemap_tests/huge_multispan_highlight.stderr b/tests/ui/codemap_tests/huge_multispan_highlight.stderr similarity index 100% rename from src/test/ui/codemap_tests/huge_multispan_highlight.stderr rename to tests/ui/codemap_tests/huge_multispan_highlight.stderr diff --git a/src/test/ui/codemap_tests/issue-11715.rs b/tests/ui/codemap_tests/issue-11715.rs similarity index 100% rename from src/test/ui/codemap_tests/issue-11715.rs rename to tests/ui/codemap_tests/issue-11715.rs diff --git a/src/test/ui/codemap_tests/issue-11715.stderr b/tests/ui/codemap_tests/issue-11715.stderr similarity index 100% rename from src/test/ui/codemap_tests/issue-11715.stderr rename to tests/ui/codemap_tests/issue-11715.stderr diff --git a/src/test/ui/codemap_tests/issue-28308.rs b/tests/ui/codemap_tests/issue-28308.rs similarity index 100% rename from src/test/ui/codemap_tests/issue-28308.rs rename to tests/ui/codemap_tests/issue-28308.rs diff --git a/src/test/ui/codemap_tests/issue-28308.stderr b/tests/ui/codemap_tests/issue-28308.stderr similarity index 100% rename from src/test/ui/codemap_tests/issue-28308.stderr rename to tests/ui/codemap_tests/issue-28308.stderr diff --git a/src/test/ui/codemap_tests/one_line.rs b/tests/ui/codemap_tests/one_line.rs similarity index 100% rename from src/test/ui/codemap_tests/one_line.rs rename to tests/ui/codemap_tests/one_line.rs diff --git a/src/test/ui/codemap_tests/one_line.stderr b/tests/ui/codemap_tests/one_line.stderr similarity index 100% rename from src/test/ui/codemap_tests/one_line.stderr rename to tests/ui/codemap_tests/one_line.stderr diff --git a/src/test/ui/codemap_tests/overlapping_inherent_impls.rs b/tests/ui/codemap_tests/overlapping_inherent_impls.rs similarity index 100% rename from src/test/ui/codemap_tests/overlapping_inherent_impls.rs rename to tests/ui/codemap_tests/overlapping_inherent_impls.rs diff --git a/src/test/ui/codemap_tests/overlapping_inherent_impls.stderr b/tests/ui/codemap_tests/overlapping_inherent_impls.stderr similarity index 100% rename from src/test/ui/codemap_tests/overlapping_inherent_impls.stderr rename to tests/ui/codemap_tests/overlapping_inherent_impls.stderr diff --git a/src/test/ui/codemap_tests/tab.rs b/tests/ui/codemap_tests/tab.rs similarity index 100% rename from src/test/ui/codemap_tests/tab.rs rename to tests/ui/codemap_tests/tab.rs diff --git a/src/test/ui/codemap_tests/tab.stderr b/tests/ui/codemap_tests/tab.stderr similarity index 100% rename from src/test/ui/codemap_tests/tab.stderr rename to tests/ui/codemap_tests/tab.stderr diff --git a/src/test/ui/codemap_tests/tab_2.rs b/tests/ui/codemap_tests/tab_2.rs similarity index 100% rename from src/test/ui/codemap_tests/tab_2.rs rename to tests/ui/codemap_tests/tab_2.rs diff --git a/src/test/ui/codemap_tests/tab_2.stderr b/tests/ui/codemap_tests/tab_2.stderr similarity index 100% rename from src/test/ui/codemap_tests/tab_2.stderr rename to tests/ui/codemap_tests/tab_2.stderr diff --git a/src/test/ui/codemap_tests/tab_3.rs b/tests/ui/codemap_tests/tab_3.rs similarity index 100% rename from src/test/ui/codemap_tests/tab_3.rs rename to tests/ui/codemap_tests/tab_3.rs diff --git a/src/test/ui/codemap_tests/tab_3.stderr b/tests/ui/codemap_tests/tab_3.stderr similarity index 100% rename from src/test/ui/codemap_tests/tab_3.stderr rename to tests/ui/codemap_tests/tab_3.stderr diff --git a/src/test/ui/codemap_tests/two_files.rs b/tests/ui/codemap_tests/two_files.rs similarity index 100% rename from src/test/ui/codemap_tests/two_files.rs rename to tests/ui/codemap_tests/two_files.rs diff --git a/src/test/ui/codemap_tests/two_files.stderr b/tests/ui/codemap_tests/two_files.stderr similarity index 100% rename from src/test/ui/codemap_tests/two_files.stderr rename to tests/ui/codemap_tests/two_files.stderr diff --git a/src/test/ui/codemap_tests/two_files_data.rs b/tests/ui/codemap_tests/two_files_data.rs similarity index 100% rename from src/test/ui/codemap_tests/two_files_data.rs rename to tests/ui/codemap_tests/two_files_data.rs diff --git a/src/test/ui/codemap_tests/unicode.expanded.stdout b/tests/ui/codemap_tests/unicode.expanded.stdout similarity index 100% rename from src/test/ui/codemap_tests/unicode.expanded.stdout rename to tests/ui/codemap_tests/unicode.expanded.stdout diff --git a/src/test/ui/codemap_tests/unicode.normal.stderr b/tests/ui/codemap_tests/unicode.normal.stderr similarity index 100% rename from src/test/ui/codemap_tests/unicode.normal.stderr rename to tests/ui/codemap_tests/unicode.normal.stderr diff --git a/src/test/ui/codemap_tests/unicode.rs b/tests/ui/codemap_tests/unicode.rs similarity index 100% rename from src/test/ui/codemap_tests/unicode.rs rename to tests/ui/codemap_tests/unicode.rs diff --git a/src/test/ui/codemap_tests/unicode_2.rs b/tests/ui/codemap_tests/unicode_2.rs similarity index 100% rename from src/test/ui/codemap_tests/unicode_2.rs rename to tests/ui/codemap_tests/unicode_2.rs diff --git a/src/test/ui/codemap_tests/unicode_2.stderr b/tests/ui/codemap_tests/unicode_2.stderr similarity index 100% rename from src/test/ui/codemap_tests/unicode_2.stderr rename to tests/ui/codemap_tests/unicode_2.stderr diff --git a/src/test/ui/codemap_tests/unicode_3.rs b/tests/ui/codemap_tests/unicode_3.rs similarity index 100% rename from src/test/ui/codemap_tests/unicode_3.rs rename to tests/ui/codemap_tests/unicode_3.rs diff --git a/src/test/ui/codemap_tests/unicode_3.stderr b/tests/ui/codemap_tests/unicode_3.stderr similarity index 100% rename from src/test/ui/codemap_tests/unicode_3.stderr rename to tests/ui/codemap_tests/unicode_3.stderr diff --git a/src/test/ui/coercion/auxiliary/issue-39823.rs b/tests/ui/coercion/auxiliary/issue-39823.rs similarity index 100% rename from src/test/ui/coercion/auxiliary/issue-39823.rs rename to tests/ui/coercion/auxiliary/issue-39823.rs diff --git a/src/test/ui/coercion/coerce-block-tail-26978.rs b/tests/ui/coercion/coerce-block-tail-26978.rs similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-26978.rs rename to tests/ui/coercion/coerce-block-tail-26978.rs diff --git a/src/test/ui/coercion/coerce-block-tail-26978.stderr b/tests/ui/coercion/coerce-block-tail-26978.stderr similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-26978.stderr rename to tests/ui/coercion/coerce-block-tail-26978.stderr diff --git a/src/test/ui/coercion/coerce-block-tail-57749.rs b/tests/ui/coercion/coerce-block-tail-57749.rs similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-57749.rs rename to tests/ui/coercion/coerce-block-tail-57749.rs diff --git a/src/test/ui/coercion/coerce-block-tail-57749.stderr b/tests/ui/coercion/coerce-block-tail-57749.stderr similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-57749.stderr rename to tests/ui/coercion/coerce-block-tail-57749.stderr diff --git a/src/test/ui/coercion/coerce-block-tail-83783.rs b/tests/ui/coercion/coerce-block-tail-83783.rs similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-83783.rs rename to tests/ui/coercion/coerce-block-tail-83783.rs diff --git a/src/test/ui/coercion/coerce-block-tail-83783.stderr b/tests/ui/coercion/coerce-block-tail-83783.stderr similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-83783.stderr rename to tests/ui/coercion/coerce-block-tail-83783.stderr diff --git a/src/test/ui/coercion/coerce-block-tail-83850.rs b/tests/ui/coercion/coerce-block-tail-83850.rs similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-83850.rs rename to tests/ui/coercion/coerce-block-tail-83850.rs diff --git a/src/test/ui/coercion/coerce-block-tail-83850.stderr b/tests/ui/coercion/coerce-block-tail-83850.stderr similarity index 100% rename from src/test/ui/coercion/coerce-block-tail-83850.stderr rename to tests/ui/coercion/coerce-block-tail-83850.stderr diff --git a/src/test/ui/coercion/coerce-block-tail.rs b/tests/ui/coercion/coerce-block-tail.rs similarity index 100% rename from src/test/ui/coercion/coerce-block-tail.rs rename to tests/ui/coercion/coerce-block-tail.rs diff --git a/src/test/ui/coercion/coerce-block-tail.stderr b/tests/ui/coercion/coerce-block-tail.stderr similarity index 100% rename from src/test/ui/coercion/coerce-block-tail.stderr rename to tests/ui/coercion/coerce-block-tail.stderr diff --git a/src/test/ui/coercion/coerce-expect-unsized-ascribed.rs b/tests/ui/coercion/coerce-expect-unsized-ascribed.rs similarity index 100% rename from src/test/ui/coercion/coerce-expect-unsized-ascribed.rs rename to tests/ui/coercion/coerce-expect-unsized-ascribed.rs diff --git a/src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr b/tests/ui/coercion/coerce-expect-unsized-ascribed.stderr similarity index 100% rename from src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr rename to tests/ui/coercion/coerce-expect-unsized-ascribed.stderr diff --git a/src/test/ui/coercion/coerce-expect-unsized.rs b/tests/ui/coercion/coerce-expect-unsized.rs similarity index 100% rename from src/test/ui/coercion/coerce-expect-unsized.rs rename to tests/ui/coercion/coerce-expect-unsized.rs diff --git a/src/test/ui/coercion/coerce-issue-49593-box-never-windows.nofallback.stderr b/tests/ui/coercion/coerce-issue-49593-box-never-windows.nofallback.stderr similarity index 100% rename from src/test/ui/coercion/coerce-issue-49593-box-never-windows.nofallback.stderr rename to tests/ui/coercion/coerce-issue-49593-box-never-windows.nofallback.stderr diff --git a/src/test/ui/coercion/coerce-issue-49593-box-never-windows.rs b/tests/ui/coercion/coerce-issue-49593-box-never-windows.rs similarity index 100% rename from src/test/ui/coercion/coerce-issue-49593-box-never-windows.rs rename to tests/ui/coercion/coerce-issue-49593-box-never-windows.rs diff --git a/src/test/ui/coercion/coerce-issue-49593-box-never.nofallback.stderr b/tests/ui/coercion/coerce-issue-49593-box-never.nofallback.stderr similarity index 100% rename from src/test/ui/coercion/coerce-issue-49593-box-never.nofallback.stderr rename to tests/ui/coercion/coerce-issue-49593-box-never.nofallback.stderr diff --git a/src/test/ui/coercion/coerce-issue-49593-box-never.rs b/tests/ui/coercion/coerce-issue-49593-box-never.rs similarity index 100% rename from src/test/ui/coercion/coerce-issue-49593-box-never.rs rename to tests/ui/coercion/coerce-issue-49593-box-never.rs diff --git a/src/test/ui/coercion/coerce-mut.rs b/tests/ui/coercion/coerce-mut.rs similarity index 100% rename from src/test/ui/coercion/coerce-mut.rs rename to tests/ui/coercion/coerce-mut.rs diff --git a/src/test/ui/coercion/coerce-mut.stderr b/tests/ui/coercion/coerce-mut.stderr similarity index 100% rename from src/test/ui/coercion/coerce-mut.stderr rename to tests/ui/coercion/coerce-mut.stderr diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs b/tests/ui/coercion/coerce-overloaded-autoderef-fail.rs similarity index 100% rename from src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs rename to tests/ui/coercion/coerce-overloaded-autoderef-fail.rs diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef-fail.stderr b/tests/ui/coercion/coerce-overloaded-autoderef-fail.stderr similarity index 100% rename from src/test/ui/coercion/coerce-overloaded-autoderef-fail.stderr rename to tests/ui/coercion/coerce-overloaded-autoderef-fail.stderr diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.rs b/tests/ui/coercion/coerce-overloaded-autoderef.rs similarity index 100% rename from src/test/ui/coercion/coerce-overloaded-autoderef.rs rename to tests/ui/coercion/coerce-overloaded-autoderef.rs diff --git a/src/test/ui/coercion/coerce-reborrow-imm-ptr-arg.rs b/tests/ui/coercion/coerce-reborrow-imm-ptr-arg.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-imm-ptr-arg.rs rename to tests/ui/coercion/coerce-reborrow-imm-ptr-arg.rs diff --git a/src/test/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs b/tests/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs rename to tests/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs diff --git a/src/test/ui/coercion/coerce-reborrow-imm-vec-arg.rs b/tests/ui/coercion/coerce-reborrow-imm-vec-arg.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-imm-vec-arg.rs rename to tests/ui/coercion/coerce-reborrow-imm-vec-arg.rs diff --git a/src/test/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs b/tests/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs rename to tests/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs diff --git a/src/test/ui/coercion/coerce-reborrow-multi-arg-fail.rs b/tests/ui/coercion/coerce-reborrow-multi-arg-fail.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-multi-arg-fail.rs rename to tests/ui/coercion/coerce-reborrow-multi-arg-fail.rs diff --git a/src/test/ui/coercion/coerce-reborrow-multi-arg-fail.stderr b/tests/ui/coercion/coerce-reborrow-multi-arg-fail.stderr similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-multi-arg-fail.stderr rename to tests/ui/coercion/coerce-reborrow-multi-arg-fail.stderr diff --git a/src/test/ui/coercion/coerce-reborrow-multi-arg.rs b/tests/ui/coercion/coerce-reborrow-multi-arg.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-multi-arg.rs rename to tests/ui/coercion/coerce-reborrow-multi-arg.rs diff --git a/src/test/ui/coercion/coerce-reborrow-mut-ptr-arg.rs b/tests/ui/coercion/coerce-reborrow-mut-ptr-arg.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-mut-ptr-arg.rs rename to tests/ui/coercion/coerce-reborrow-mut-ptr-arg.rs diff --git a/src/test/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs b/tests/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs rename to tests/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs diff --git a/src/test/ui/coercion/coerce-reborrow-mut-vec-arg.rs b/tests/ui/coercion/coerce-reborrow-mut-vec-arg.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-mut-vec-arg.rs rename to tests/ui/coercion/coerce-reborrow-mut-vec-arg.rs diff --git a/src/test/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs b/tests/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs similarity index 100% rename from src/test/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs rename to tests/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs diff --git a/src/test/ui/coercion/coerce-to-bang-cast.rs b/tests/ui/coercion/coerce-to-bang-cast.rs similarity index 100% rename from src/test/ui/coercion/coerce-to-bang-cast.rs rename to tests/ui/coercion/coerce-to-bang-cast.rs diff --git a/src/test/ui/coercion/coerce-to-bang-cast.stderr b/tests/ui/coercion/coerce-to-bang-cast.stderr similarity index 100% rename from src/test/ui/coercion/coerce-to-bang-cast.stderr rename to tests/ui/coercion/coerce-to-bang-cast.stderr diff --git a/src/test/ui/coercion/coerce-to-bang.rs b/tests/ui/coercion/coerce-to-bang.rs similarity index 100% rename from src/test/ui/coercion/coerce-to-bang.rs rename to tests/ui/coercion/coerce-to-bang.rs diff --git a/src/test/ui/coercion/coerce-to-bang.stderr b/tests/ui/coercion/coerce-to-bang.stderr similarity index 100% rename from src/test/ui/coercion/coerce-to-bang.stderr rename to tests/ui/coercion/coerce-to-bang.stderr diff --git a/src/test/ui/coercion/coerce-unify-return.rs b/tests/ui/coercion/coerce-unify-return.rs similarity index 100% rename from src/test/ui/coercion/coerce-unify-return.rs rename to tests/ui/coercion/coerce-unify-return.rs diff --git a/src/test/ui/coercion/coerce-unify.rs b/tests/ui/coercion/coerce-unify.rs similarity index 100% rename from src/test/ui/coercion/coerce-unify.rs rename to tests/ui/coercion/coerce-unify.rs diff --git a/src/test/ui/coercion/coerce-unsize-subtype.rs b/tests/ui/coercion/coerce-unsize-subtype.rs similarity index 100% rename from src/test/ui/coercion/coerce-unsize-subtype.rs rename to tests/ui/coercion/coerce-unsize-subtype.rs diff --git a/src/test/ui/coercion/coercion-missing-tail-expected-type.fixed b/tests/ui/coercion/coercion-missing-tail-expected-type.fixed similarity index 100% rename from src/test/ui/coercion/coercion-missing-tail-expected-type.fixed rename to tests/ui/coercion/coercion-missing-tail-expected-type.fixed diff --git a/src/test/ui/coercion/coercion-missing-tail-expected-type.rs b/tests/ui/coercion/coercion-missing-tail-expected-type.rs similarity index 100% rename from src/test/ui/coercion/coercion-missing-tail-expected-type.rs rename to tests/ui/coercion/coercion-missing-tail-expected-type.rs diff --git a/src/test/ui/coercion/coercion-missing-tail-expected-type.stderr b/tests/ui/coercion/coercion-missing-tail-expected-type.stderr similarity index 100% rename from src/test/ui/coercion/coercion-missing-tail-expected-type.stderr rename to tests/ui/coercion/coercion-missing-tail-expected-type.stderr diff --git a/src/test/ui/coercion/coercion-slice.rs b/tests/ui/coercion/coercion-slice.rs similarity index 100% rename from src/test/ui/coercion/coercion-slice.rs rename to tests/ui/coercion/coercion-slice.rs diff --git a/src/test/ui/coercion/coercion-slice.stderr b/tests/ui/coercion/coercion-slice.stderr similarity index 100% rename from src/test/ui/coercion/coercion-slice.stderr rename to tests/ui/coercion/coercion-slice.stderr diff --git a/src/test/ui/coercion/issue-101066.rs b/tests/ui/coercion/issue-101066.rs similarity index 100% rename from src/test/ui/coercion/issue-101066.rs rename to tests/ui/coercion/issue-101066.rs diff --git a/src/test/ui/coercion/issue-14589.rs b/tests/ui/coercion/issue-14589.rs similarity index 100% rename from src/test/ui/coercion/issue-14589.rs rename to tests/ui/coercion/issue-14589.rs diff --git a/src/test/ui/coercion/issue-36007.rs b/tests/ui/coercion/issue-36007.rs similarity index 100% rename from src/test/ui/coercion/issue-36007.rs rename to tests/ui/coercion/issue-36007.rs diff --git a/src/test/ui/coercion/issue-37655.rs b/tests/ui/coercion/issue-37655.rs similarity index 100% rename from src/test/ui/coercion/issue-37655.rs rename to tests/ui/coercion/issue-37655.rs diff --git a/src/test/ui/coercion/issue-39823.rs b/tests/ui/coercion/issue-39823.rs similarity index 100% rename from src/test/ui/coercion/issue-39823.rs rename to tests/ui/coercion/issue-39823.rs diff --git a/src/test/ui/coercion/issue-53475.rs b/tests/ui/coercion/issue-53475.rs similarity index 100% rename from src/test/ui/coercion/issue-53475.rs rename to tests/ui/coercion/issue-53475.rs diff --git a/src/test/ui/coercion/issue-53475.stderr b/tests/ui/coercion/issue-53475.stderr similarity index 100% rename from src/test/ui/coercion/issue-53475.stderr rename to tests/ui/coercion/issue-53475.stderr diff --git a/src/test/ui/coercion/issue-73886.rs b/tests/ui/coercion/issue-73886.rs similarity index 100% rename from src/test/ui/coercion/issue-73886.rs rename to tests/ui/coercion/issue-73886.rs diff --git a/src/test/ui/coercion/issue-73886.stderr b/tests/ui/coercion/issue-73886.stderr similarity index 100% rename from src/test/ui/coercion/issue-73886.stderr rename to tests/ui/coercion/issue-73886.stderr diff --git a/src/test/ui/coercion/issue-88097.rs b/tests/ui/coercion/issue-88097.rs similarity index 100% rename from src/test/ui/coercion/issue-88097.rs rename to tests/ui/coercion/issue-88097.rs diff --git a/src/test/ui/coercion/retslot-cast.rs b/tests/ui/coercion/retslot-cast.rs similarity index 100% rename from src/test/ui/coercion/retslot-cast.rs rename to tests/ui/coercion/retslot-cast.rs diff --git a/src/test/ui/coercion/retslot-cast.stderr b/tests/ui/coercion/retslot-cast.stderr similarity index 100% rename from src/test/ui/coercion/retslot-cast.stderr rename to tests/ui/coercion/retslot-cast.stderr diff --git a/src/test/ui/coercion/unsafe-coercion.rs b/tests/ui/coercion/unsafe-coercion.rs similarity index 100% rename from src/test/ui/coercion/unsafe-coercion.rs rename to tests/ui/coercion/unsafe-coercion.rs diff --git a/src/test/ui/coherence/auxiliary/coherence_copy_like_lib.rs b/tests/ui/coherence/auxiliary/coherence_copy_like_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/coherence_copy_like_lib.rs rename to tests/ui/coherence/auxiliary/coherence_copy_like_lib.rs diff --git a/src/test/ui/coherence/auxiliary/coherence_fundamental_trait_lib.rs b/tests/ui/coherence/auxiliary/coherence_fundamental_trait_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/coherence_fundamental_trait_lib.rs rename to tests/ui/coherence/auxiliary/coherence_fundamental_trait_lib.rs diff --git a/src/test/ui/coherence/auxiliary/coherence_inherent_cc_lib.rs b/tests/ui/coherence/auxiliary/coherence_inherent_cc_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/coherence_inherent_cc_lib.rs rename to tests/ui/coherence/auxiliary/coherence_inherent_cc_lib.rs diff --git a/src/test/ui/coherence/auxiliary/coherence_lib.rs b/tests/ui/coherence/auxiliary/coherence_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/coherence_lib.rs rename to tests/ui/coherence/auxiliary/coherence_lib.rs diff --git a/src/test/ui/coherence/auxiliary/coherence_orphan_lib.rs b/tests/ui/coherence/auxiliary/coherence_orphan_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/coherence_orphan_lib.rs rename to tests/ui/coherence/auxiliary/coherence_orphan_lib.rs diff --git a/src/test/ui/coherence/auxiliary/error_lib.rs b/tests/ui/coherence/auxiliary/error_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/error_lib.rs rename to tests/ui/coherence/auxiliary/error_lib.rs diff --git a/src/test/ui/coherence/auxiliary/go_trait.rs b/tests/ui/coherence/auxiliary/go_trait.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/go_trait.rs rename to tests/ui/coherence/auxiliary/go_trait.rs diff --git a/src/test/ui/coherence/auxiliary/option_future.rs b/tests/ui/coherence/auxiliary/option_future.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/option_future.rs rename to tests/ui/coherence/auxiliary/option_future.rs diff --git a/src/test/ui/coherence/auxiliary/re_rebalance_coherence_lib-rpass.rs b/tests/ui/coherence/auxiliary/re_rebalance_coherence_lib-rpass.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/re_rebalance_coherence_lib-rpass.rs rename to tests/ui/coherence/auxiliary/re_rebalance_coherence_lib-rpass.rs diff --git a/src/test/ui/coherence/auxiliary/re_rebalance_coherence_lib.rs b/tests/ui/coherence/auxiliary/re_rebalance_coherence_lib.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/re_rebalance_coherence_lib.rs rename to tests/ui/coherence/auxiliary/re_rebalance_coherence_lib.rs diff --git a/src/test/ui/coherence/auxiliary/trait-with-const-param.rs b/tests/ui/coherence/auxiliary/trait-with-const-param.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/trait-with-const-param.rs rename to tests/ui/coherence/auxiliary/trait-with-const-param.rs diff --git a/src/test/ui/coherence/auxiliary/trait_impl_conflict.rs b/tests/ui/coherence/auxiliary/trait_impl_conflict.rs similarity index 100% rename from src/test/ui/coherence/auxiliary/trait_impl_conflict.rs rename to tests/ui/coherence/auxiliary/trait_impl_conflict.rs diff --git a/src/test/ui/coherence/coherence-all-remote.rs b/tests/ui/coherence/coherence-all-remote.rs similarity index 100% rename from src/test/ui/coherence/coherence-all-remote.rs rename to tests/ui/coherence/coherence-all-remote.rs diff --git a/src/test/ui/coherence/coherence-all-remote.stderr b/tests/ui/coherence/coherence-all-remote.stderr similarity index 100% rename from src/test/ui/coherence/coherence-all-remote.stderr rename to tests/ui/coherence/coherence-all-remote.stderr diff --git a/src/test/ui/coherence/coherence-bigint-int.rs b/tests/ui/coherence/coherence-bigint-int.rs similarity index 100% rename from src/test/ui/coherence/coherence-bigint-int.rs rename to tests/ui/coherence/coherence-bigint-int.rs diff --git a/src/test/ui/coherence/coherence-bigint-param.rs b/tests/ui/coherence/coherence-bigint-param.rs similarity index 100% rename from src/test/ui/coherence/coherence-bigint-param.rs rename to tests/ui/coherence/coherence-bigint-param.rs diff --git a/src/test/ui/coherence/coherence-bigint-param.stderr b/tests/ui/coherence/coherence-bigint-param.stderr similarity index 100% rename from src/test/ui/coherence/coherence-bigint-param.stderr rename to tests/ui/coherence/coherence-bigint-param.stderr diff --git a/src/test/ui/coherence/coherence-bigint-vecint.rs b/tests/ui/coherence/coherence-bigint-vecint.rs similarity index 100% rename from src/test/ui/coherence/coherence-bigint-vecint.rs rename to tests/ui/coherence/coherence-bigint-vecint.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.stderr diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-blanket-unimplemented.stderr diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-cross-crate.stderr diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-multidispatch.stderr diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-trait.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-trait.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-trait.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-trait.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific-trait.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-specific-trait.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific-trait.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific-trait.stderr diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific.rs b/tests/ui/coherence/coherence-blanket-conflicts-with-specific.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific.rs rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific.rs diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-specific.stderr b/tests/ui/coherence/coherence-blanket-conflicts-with-specific.stderr similarity index 100% rename from src/test/ui/coherence/coherence-blanket-conflicts-with-specific.stderr rename to tests/ui/coherence/coherence-blanket-conflicts-with-specific.stderr diff --git a/src/test/ui/coherence/coherence-blanket.rs b/tests/ui/coherence/coherence-blanket.rs similarity index 100% rename from src/test/ui/coherence/coherence-blanket.rs rename to tests/ui/coherence/coherence-blanket.rs diff --git a/src/test/ui/coherence/coherence-conflicting-negative-trait-impl.rs b/tests/ui/coherence/coherence-conflicting-negative-trait-impl.rs similarity index 100% rename from src/test/ui/coherence/coherence-conflicting-negative-trait-impl.rs rename to tests/ui/coherence/coherence-conflicting-negative-trait-impl.rs diff --git a/src/test/ui/coherence/coherence-conflicting-negative-trait-impl.stderr b/tests/ui/coherence/coherence-conflicting-negative-trait-impl.stderr similarity index 100% rename from src/test/ui/coherence/coherence-conflicting-negative-trait-impl.stderr rename to tests/ui/coherence/coherence-conflicting-negative-trait-impl.stderr diff --git a/src/test/ui/coherence/coherence-covered-type-parameter.rs b/tests/ui/coherence/coherence-covered-type-parameter.rs similarity index 100% rename from src/test/ui/coherence/coherence-covered-type-parameter.rs rename to tests/ui/coherence/coherence-covered-type-parameter.rs diff --git a/src/test/ui/coherence/coherence-cow.re_a.stderr b/tests/ui/coherence/coherence-cow.re_a.stderr similarity index 100% rename from src/test/ui/coherence/coherence-cow.re_a.stderr rename to tests/ui/coherence/coherence-cow.re_a.stderr diff --git a/src/test/ui/coherence/coherence-cow.re_b.stderr b/tests/ui/coherence/coherence-cow.re_b.stderr similarity index 100% rename from src/test/ui/coherence/coherence-cow.re_b.stderr rename to tests/ui/coherence/coherence-cow.re_b.stderr diff --git a/src/test/ui/coherence/coherence-cow.re_c.stderr b/tests/ui/coherence/coherence-cow.re_c.stderr similarity index 100% rename from src/test/ui/coherence/coherence-cow.re_c.stderr rename to tests/ui/coherence/coherence-cow.re_c.stderr diff --git a/src/test/ui/coherence/coherence-cow.rs b/tests/ui/coherence/coherence-cow.rs similarity index 100% rename from src/test/ui/coherence/coherence-cow.rs rename to tests/ui/coherence/coherence-cow.rs diff --git a/src/test/ui/coherence/coherence-cross-crate-conflict.rs b/tests/ui/coherence/coherence-cross-crate-conflict.rs similarity index 100% rename from src/test/ui/coherence/coherence-cross-crate-conflict.rs rename to tests/ui/coherence/coherence-cross-crate-conflict.rs diff --git a/src/test/ui/coherence/coherence-cross-crate-conflict.stderr b/tests/ui/coherence/coherence-cross-crate-conflict.stderr similarity index 100% rename from src/test/ui/coherence/coherence-cross-crate-conflict.stderr rename to tests/ui/coherence/coherence-cross-crate-conflict.stderr diff --git a/src/test/ui/coherence/coherence-default-trait-impl.rs b/tests/ui/coherence/coherence-default-trait-impl.rs similarity index 100% rename from src/test/ui/coherence/coherence-default-trait-impl.rs rename to tests/ui/coherence/coherence-default-trait-impl.rs diff --git a/src/test/ui/coherence/coherence-default-trait-impl.stderr b/tests/ui/coherence/coherence-default-trait-impl.stderr similarity index 100% rename from src/test/ui/coherence/coherence-default-trait-impl.stderr rename to tests/ui/coherence/coherence-default-trait-impl.stderr diff --git a/src/test/ui/coherence/coherence-error-suppression.rs b/tests/ui/coherence/coherence-error-suppression.rs similarity index 100% rename from src/test/ui/coherence/coherence-error-suppression.rs rename to tests/ui/coherence/coherence-error-suppression.rs diff --git a/src/test/ui/coherence/coherence-error-suppression.stderr b/tests/ui/coherence/coherence-error-suppression.stderr similarity index 100% rename from src/test/ui/coherence/coherence-error-suppression.stderr rename to tests/ui/coherence/coherence-error-suppression.stderr diff --git a/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.rs b/tests/ui/coherence/coherence-fn-covariant-bound-vs-static.rs similarity index 100% rename from src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.rs rename to tests/ui/coherence/coherence-fn-covariant-bound-vs-static.rs diff --git a/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr b/tests/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr similarity index 100% rename from src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr rename to tests/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr diff --git a/src/test/ui/coherence/coherence-fn-implied-bounds.rs b/tests/ui/coherence/coherence-fn-implied-bounds.rs similarity index 100% rename from src/test/ui/coherence/coherence-fn-implied-bounds.rs rename to tests/ui/coherence/coherence-fn-implied-bounds.rs diff --git a/src/test/ui/coherence/coherence-fn-implied-bounds.stderr b/tests/ui/coherence/coherence-fn-implied-bounds.stderr similarity index 100% rename from src/test/ui/coherence/coherence-fn-implied-bounds.stderr rename to tests/ui/coherence/coherence-fn-implied-bounds.stderr diff --git a/src/test/ui/coherence/coherence-fn-inputs.rs b/tests/ui/coherence/coherence-fn-inputs.rs similarity index 100% rename from src/test/ui/coherence/coherence-fn-inputs.rs rename to tests/ui/coherence/coherence-fn-inputs.rs diff --git a/src/test/ui/coherence/coherence-fn-inputs.stderr b/tests/ui/coherence/coherence-fn-inputs.stderr similarity index 100% rename from src/test/ui/coherence/coherence-fn-inputs.stderr rename to tests/ui/coherence/coherence-fn-inputs.stderr diff --git a/src/test/ui/coherence/coherence-free-vs-bound-region.rs b/tests/ui/coherence/coherence-free-vs-bound-region.rs similarity index 100% rename from src/test/ui/coherence/coherence-free-vs-bound-region.rs rename to tests/ui/coherence/coherence-free-vs-bound-region.rs diff --git a/src/test/ui/coherence/coherence-free-vs-bound-region.stderr b/tests/ui/coherence/coherence-free-vs-bound-region.stderr similarity index 100% rename from src/test/ui/coherence/coherence-free-vs-bound-region.stderr rename to tests/ui/coherence/coherence-free-vs-bound-region.stderr diff --git a/src/test/ui/coherence/coherence-fundamental-trait-objects.rs b/tests/ui/coherence/coherence-fundamental-trait-objects.rs similarity index 100% rename from src/test/ui/coherence/coherence-fundamental-trait-objects.rs rename to tests/ui/coherence/coherence-fundamental-trait-objects.rs diff --git a/src/test/ui/coherence/coherence-fundamental-trait-objects.stderr b/tests/ui/coherence/coherence-fundamental-trait-objects.stderr similarity index 100% rename from src/test/ui/coherence/coherence-fundamental-trait-objects.stderr rename to tests/ui/coherence/coherence-fundamental-trait-objects.stderr diff --git a/src/test/ui/coherence/coherence-impl-in-fn.rs b/tests/ui/coherence/coherence-impl-in-fn.rs similarity index 100% rename from src/test/ui/coherence/coherence-impl-in-fn.rs rename to tests/ui/coherence/coherence-impl-in-fn.rs diff --git a/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs b/tests/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs rename to tests/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs diff --git a/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.stderr b/tests/ui/coherence/coherence-impl-trait-for-marker-trait-negative.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.stderr rename to tests/ui/coherence/coherence-impl-trait-for-marker-trait-negative.stderr diff --git a/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs b/tests/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs rename to tests/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs diff --git a/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.stderr b/tests/ui/coherence/coherence-impl-trait-for-marker-trait-positive.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.stderr rename to tests/ui/coherence/coherence-impl-trait-for-marker-trait-positive.stderr diff --git a/src/test/ui/coherence/coherence-impl-trait-for-trait-object-safe.rs b/tests/ui/coherence/coherence-impl-trait-for-trait-object-safe.rs similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-trait-object-safe.rs rename to tests/ui/coherence/coherence-impl-trait-for-trait-object-safe.rs diff --git a/src/test/ui/coherence/coherence-impl-trait-for-trait-object-safe.stderr b/tests/ui/coherence/coherence-impl-trait-for-trait-object-safe.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-trait-object-safe.stderr rename to tests/ui/coherence/coherence-impl-trait-for-trait-object-safe.stderr diff --git a/src/test/ui/coherence/coherence-impl-trait-for-trait.rs b/tests/ui/coherence/coherence-impl-trait-for-trait.rs similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-trait.rs rename to tests/ui/coherence/coherence-impl-trait-for-trait.rs diff --git a/src/test/ui/coherence/coherence-impl-trait-for-trait.stderr b/tests/ui/coherence/coherence-impl-trait-for-trait.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impl-trait-for-trait.stderr rename to tests/ui/coherence/coherence-impl-trait-for-trait.stderr diff --git a/src/test/ui/coherence/coherence-impls-copy.rs b/tests/ui/coherence/coherence-impls-copy.rs similarity index 100% rename from src/test/ui/coherence/coherence-impls-copy.rs rename to tests/ui/coherence/coherence-impls-copy.rs diff --git a/src/test/ui/coherence/coherence-impls-copy.stderr b/tests/ui/coherence/coherence-impls-copy.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impls-copy.stderr rename to tests/ui/coherence/coherence-impls-copy.stderr diff --git a/src/test/ui/coherence/coherence-impls-send.rs b/tests/ui/coherence/coherence-impls-send.rs similarity index 100% rename from src/test/ui/coherence/coherence-impls-send.rs rename to tests/ui/coherence/coherence-impls-send.rs diff --git a/src/test/ui/coherence/coherence-impls-send.stderr b/tests/ui/coherence/coherence-impls-send.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impls-send.stderr rename to tests/ui/coherence/coherence-impls-send.stderr diff --git a/src/test/ui/coherence/coherence-impls-sized.rs b/tests/ui/coherence/coherence-impls-sized.rs similarity index 100% rename from src/test/ui/coherence/coherence-impls-sized.rs rename to tests/ui/coherence/coherence-impls-sized.rs diff --git a/src/test/ui/coherence/coherence-impls-sized.stderr b/tests/ui/coherence/coherence-impls-sized.stderr similarity index 100% rename from src/test/ui/coherence/coherence-impls-sized.stderr rename to tests/ui/coherence/coherence-impls-sized.stderr diff --git a/src/test/ui/coherence/coherence-inherited-assoc-ty-cycle-err.rs b/tests/ui/coherence/coherence-inherited-assoc-ty-cycle-err.rs similarity index 100% rename from src/test/ui/coherence/coherence-inherited-assoc-ty-cycle-err.rs rename to tests/ui/coherence/coherence-inherited-assoc-ty-cycle-err.rs diff --git a/src/test/ui/coherence/coherence-inherited-assoc-ty-cycle-err.stderr b/tests/ui/coherence/coherence-inherited-assoc-ty-cycle-err.stderr similarity index 100% rename from src/test/ui/coherence/coherence-inherited-assoc-ty-cycle-err.stderr rename to tests/ui/coherence/coherence-inherited-assoc-ty-cycle-err.stderr diff --git a/src/test/ui/coherence/coherence-inherited-subtyping.old.stderr b/tests/ui/coherence/coherence-inherited-subtyping.old.stderr similarity index 100% rename from src/test/ui/coherence/coherence-inherited-subtyping.old.stderr rename to tests/ui/coherence/coherence-inherited-subtyping.old.stderr diff --git a/src/test/ui/coherence/coherence-inherited-subtyping.re.stderr b/tests/ui/coherence/coherence-inherited-subtyping.re.stderr similarity index 100% rename from src/test/ui/coherence/coherence-inherited-subtyping.re.stderr rename to tests/ui/coherence/coherence-inherited-subtyping.re.stderr diff --git a/src/test/ui/coherence/coherence-inherited-subtyping.rs b/tests/ui/coherence/coherence-inherited-subtyping.rs similarity index 100% rename from src/test/ui/coherence/coherence-inherited-subtyping.rs rename to tests/ui/coherence/coherence-inherited-subtyping.rs diff --git a/src/test/ui/coherence/coherence-iterator-vec-any-elem.rs b/tests/ui/coherence/coherence-iterator-vec-any-elem.rs similarity index 100% rename from src/test/ui/coherence/coherence-iterator-vec-any-elem.rs rename to tests/ui/coherence/coherence-iterator-vec-any-elem.rs diff --git a/src/test/ui/coherence/coherence-iterator-vec.rs b/tests/ui/coherence/coherence-iterator-vec.rs similarity index 100% rename from src/test/ui/coherence/coherence-iterator-vec.rs rename to tests/ui/coherence/coherence-iterator-vec.rs diff --git a/src/test/ui/coherence/coherence-lone-type-parameter.rs b/tests/ui/coherence/coherence-lone-type-parameter.rs similarity index 100% rename from src/test/ui/coherence/coherence-lone-type-parameter.rs rename to tests/ui/coherence/coherence-lone-type-parameter.rs diff --git a/src/test/ui/coherence/coherence-lone-type-parameter.stderr b/tests/ui/coherence/coherence-lone-type-parameter.stderr similarity index 100% rename from src/test/ui/coherence/coherence-lone-type-parameter.stderr rename to tests/ui/coherence/coherence-lone-type-parameter.stderr diff --git a/src/test/ui/coherence/coherence-multidispatch-tuple.rs b/tests/ui/coherence/coherence-multidispatch-tuple.rs similarity index 100% rename from src/test/ui/coherence/coherence-multidispatch-tuple.rs rename to tests/ui/coherence/coherence-multidispatch-tuple.rs diff --git a/src/test/ui/coherence/coherence-negative-impls-copy-bad.rs b/tests/ui/coherence/coherence-negative-impls-copy-bad.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-copy-bad.rs rename to tests/ui/coherence/coherence-negative-impls-copy-bad.rs diff --git a/src/test/ui/coherence/coherence-negative-impls-copy-bad.stderr b/tests/ui/coherence/coherence-negative-impls-copy-bad.stderr similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-copy-bad.stderr rename to tests/ui/coherence/coherence-negative-impls-copy-bad.stderr diff --git a/src/test/ui/coherence/coherence-negative-impls-copy.rs b/tests/ui/coherence/coherence-negative-impls-copy.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-copy.rs rename to tests/ui/coherence/coherence-negative-impls-copy.rs diff --git a/src/test/ui/coherence/coherence-negative-impls-safe-rpass.rs b/tests/ui/coherence/coherence-negative-impls-safe-rpass.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-safe-rpass.rs rename to tests/ui/coherence/coherence-negative-impls-safe-rpass.rs diff --git a/src/test/ui/coherence/coherence-negative-impls-safe.rs b/tests/ui/coherence/coherence-negative-impls-safe.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-safe.rs rename to tests/ui/coherence/coherence-negative-impls-safe.rs diff --git a/src/test/ui/coherence/coherence-negative-impls-safe.stderr b/tests/ui/coherence/coherence-negative-impls-safe.stderr similarity index 100% rename from src/test/ui/coherence/coherence-negative-impls-safe.stderr rename to tests/ui/coherence/coherence-negative-impls-safe.stderr diff --git a/src/test/ui/coherence/coherence-negative-inherent-where-bounds.rs b/tests/ui/coherence/coherence-negative-inherent-where-bounds.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-inherent-where-bounds.rs rename to tests/ui/coherence/coherence-negative-inherent-where-bounds.rs diff --git a/src/test/ui/coherence/coherence-negative-inherent.rs b/tests/ui/coherence/coherence-negative-inherent.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-inherent.rs rename to tests/ui/coherence/coherence-negative-inherent.rs diff --git a/src/test/ui/coherence/coherence-negative-outlives-lifetimes.rs b/tests/ui/coherence/coherence-negative-outlives-lifetimes.rs similarity index 100% rename from src/test/ui/coherence/coherence-negative-outlives-lifetimes.rs rename to tests/ui/coherence/coherence-negative-outlives-lifetimes.rs diff --git a/src/test/ui/coherence/coherence-negative-outlives-lifetimes.stock.stderr b/tests/ui/coherence/coherence-negative-outlives-lifetimes.stock.stderr similarity index 100% rename from src/test/ui/coherence/coherence-negative-outlives-lifetimes.stock.stderr rename to tests/ui/coherence/coherence-negative-outlives-lifetimes.stock.stderr diff --git a/src/test/ui/coherence/coherence-no-direct-lifetime-dispatch.rs b/tests/ui/coherence/coherence-no-direct-lifetime-dispatch.rs similarity index 100% rename from src/test/ui/coherence/coherence-no-direct-lifetime-dispatch.rs rename to tests/ui/coherence/coherence-no-direct-lifetime-dispatch.rs diff --git a/src/test/ui/coherence/coherence-no-direct-lifetime-dispatch.stderr b/tests/ui/coherence/coherence-no-direct-lifetime-dispatch.stderr similarity index 100% rename from src/test/ui/coherence/coherence-no-direct-lifetime-dispatch.stderr rename to tests/ui/coherence/coherence-no-direct-lifetime-dispatch.stderr diff --git a/src/test/ui/coherence/coherence-orphan.rs b/tests/ui/coherence/coherence-orphan.rs similarity index 100% rename from src/test/ui/coherence/coherence-orphan.rs rename to tests/ui/coherence/coherence-orphan.rs diff --git a/src/test/ui/coherence/coherence-orphan.stderr b/tests/ui/coherence/coherence-orphan.stderr similarity index 100% rename from src/test/ui/coherence/coherence-orphan.stderr rename to tests/ui/coherence/coherence-orphan.stderr diff --git a/src/test/ui/coherence/coherence-overlap-all-t-and-tuple.rs b/tests/ui/coherence/coherence-overlap-all-t-and-tuple.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-all-t-and-tuple.rs rename to tests/ui/coherence/coherence-overlap-all-t-and-tuple.rs diff --git a/src/test/ui/coherence/coherence-overlap-all-t-and-tuple.stderr b/tests/ui/coherence/coherence-overlap-all-t-and-tuple.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-all-t-and-tuple.stderr rename to tests/ui/coherence/coherence-overlap-all-t-and-tuple.stderr diff --git a/src/test/ui/coherence/coherence-overlap-double-negative.rs b/tests/ui/coherence/coherence-overlap-double-negative.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-double-negative.rs rename to tests/ui/coherence/coherence-overlap-double-negative.rs diff --git a/src/test/ui/coherence/coherence-overlap-downstream-inherent.rs b/tests/ui/coherence/coherence-overlap-downstream-inherent.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-downstream-inherent.rs rename to tests/ui/coherence/coherence-overlap-downstream-inherent.rs diff --git a/src/test/ui/coherence/coherence-overlap-downstream-inherent.stderr b/tests/ui/coherence/coherence-overlap-downstream-inherent.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-downstream-inherent.stderr rename to tests/ui/coherence/coherence-overlap-downstream-inherent.stderr diff --git a/src/test/ui/coherence/coherence-overlap-downstream.rs b/tests/ui/coherence/coherence-overlap-downstream.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-downstream.rs rename to tests/ui/coherence/coherence-overlap-downstream.rs diff --git a/src/test/ui/coherence/coherence-overlap-downstream.stderr b/tests/ui/coherence/coherence-overlap-downstream.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-downstream.stderr rename to tests/ui/coherence/coherence-overlap-downstream.stderr diff --git a/src/test/ui/coherence/coherence-overlap-issue-23516-inherent.rs b/tests/ui/coherence/coherence-overlap-issue-23516-inherent.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-issue-23516-inherent.rs rename to tests/ui/coherence/coherence-overlap-issue-23516-inherent.rs diff --git a/src/test/ui/coherence/coherence-overlap-issue-23516-inherent.stderr b/tests/ui/coherence/coherence-overlap-issue-23516-inherent.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-issue-23516-inherent.stderr rename to tests/ui/coherence/coherence-overlap-issue-23516-inherent.stderr diff --git a/src/test/ui/coherence/coherence-overlap-issue-23516.rs b/tests/ui/coherence/coherence-overlap-issue-23516.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-issue-23516.rs rename to tests/ui/coherence/coherence-overlap-issue-23516.rs diff --git a/src/test/ui/coherence/coherence-overlap-issue-23516.stderr b/tests/ui/coherence/coherence-overlap-issue-23516.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-issue-23516.stderr rename to tests/ui/coherence/coherence-overlap-issue-23516.stderr diff --git a/src/test/ui/coherence/coherence-overlap-messages.rs b/tests/ui/coherence/coherence-overlap-messages.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-messages.rs rename to tests/ui/coherence/coherence-overlap-messages.rs diff --git a/src/test/ui/coherence/coherence-overlap-messages.stderr b/tests/ui/coherence/coherence-overlap-messages.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-messages.stderr rename to tests/ui/coherence/coherence-overlap-messages.stderr diff --git a/src/test/ui/coherence/coherence-overlap-negate-alias-strict.rs b/tests/ui/coherence/coherence-overlap-negate-alias-strict.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negate-alias-strict.rs rename to tests/ui/coherence/coherence-overlap-negate-alias-strict.rs diff --git a/src/test/ui/coherence/coherence-overlap-negate-not-use-feature-gate.rs b/tests/ui/coherence/coherence-overlap-negate-not-use-feature-gate.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negate-not-use-feature-gate.rs rename to tests/ui/coherence/coherence-overlap-negate-not-use-feature-gate.rs diff --git a/src/test/ui/coherence/coherence-overlap-negate-not-use-feature-gate.stderr b/tests/ui/coherence/coherence-overlap-negate-not-use-feature-gate.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negate-not-use-feature-gate.stderr rename to tests/ui/coherence/coherence-overlap-negate-not-use-feature-gate.stderr diff --git a/src/test/ui/coherence/coherence-overlap-negate-strict.rs b/tests/ui/coherence/coherence-overlap-negate-strict.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negate-strict.rs rename to tests/ui/coherence/coherence-overlap-negate-strict.rs diff --git a/src/test/ui/coherence/coherence-overlap-negate-use-feature-gate.rs b/tests/ui/coherence/coherence-overlap-negate-use-feature-gate.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negate-use-feature-gate.rs rename to tests/ui/coherence/coherence-overlap-negate-use-feature-gate.rs diff --git a/src/test/ui/coherence/coherence-overlap-negative-trait.rs b/tests/ui/coherence/coherence-overlap-negative-trait.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negative-trait.rs rename to tests/ui/coherence/coherence-overlap-negative-trait.rs diff --git a/src/test/ui/coherence/coherence-overlap-negative-trait2.rs b/tests/ui/coherence/coherence-overlap-negative-trait2.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-negative-trait2.rs rename to tests/ui/coherence/coherence-overlap-negative-trait2.rs diff --git a/src/test/ui/coherence/coherence-overlap-super-negative.rs b/tests/ui/coherence/coherence-overlap-super-negative.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-super-negative.rs rename to tests/ui/coherence/coherence-overlap-super-negative.rs diff --git a/src/test/ui/coherence/coherence-overlap-trait-alias.rs b/tests/ui/coherence/coherence-overlap-trait-alias.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-trait-alias.rs rename to tests/ui/coherence/coherence-overlap-trait-alias.rs diff --git a/src/test/ui/coherence/coherence-overlap-trait-alias.stderr b/tests/ui/coherence/coherence-overlap-trait-alias.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-trait-alias.stderr rename to tests/ui/coherence/coherence-overlap-trait-alias.stderr diff --git a/src/test/ui/coherence/coherence-overlap-upstream-inherent.rs b/tests/ui/coherence/coherence-overlap-upstream-inherent.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-upstream-inherent.rs rename to tests/ui/coherence/coherence-overlap-upstream-inherent.rs diff --git a/src/test/ui/coherence/coherence-overlap-upstream-inherent.stderr b/tests/ui/coherence/coherence-overlap-upstream-inherent.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-upstream-inherent.stderr rename to tests/ui/coherence/coherence-overlap-upstream-inherent.stderr diff --git a/src/test/ui/coherence/coherence-overlap-upstream.rs b/tests/ui/coherence/coherence-overlap-upstream.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-upstream.rs rename to tests/ui/coherence/coherence-overlap-upstream.rs diff --git a/src/test/ui/coherence/coherence-overlap-upstream.stderr b/tests/ui/coherence/coherence-overlap-upstream.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlap-upstream.stderr rename to tests/ui/coherence/coherence-overlap-upstream.stderr diff --git a/src/test/ui/coherence/coherence-overlap-with-regions.rs b/tests/ui/coherence/coherence-overlap-with-regions.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlap-with-regions.rs rename to tests/ui/coherence/coherence-overlap-with-regions.rs diff --git a/src/test/ui/coherence/coherence-overlapping-pairs.rs b/tests/ui/coherence/coherence-overlapping-pairs.rs similarity index 100% rename from src/test/ui/coherence/coherence-overlapping-pairs.rs rename to tests/ui/coherence/coherence-overlapping-pairs.rs diff --git a/src/test/ui/coherence/coherence-overlapping-pairs.stderr b/tests/ui/coherence/coherence-overlapping-pairs.stderr similarity index 100% rename from src/test/ui/coherence/coherence-overlapping-pairs.stderr rename to tests/ui/coherence/coherence-overlapping-pairs.stderr diff --git a/src/test/ui/coherence/coherence-pair-covered-uncovered-1.rs b/tests/ui/coherence/coherence-pair-covered-uncovered-1.rs similarity index 100% rename from src/test/ui/coherence/coherence-pair-covered-uncovered-1.rs rename to tests/ui/coherence/coherence-pair-covered-uncovered-1.rs diff --git a/src/test/ui/coherence/coherence-pair-covered-uncovered-1.stderr b/tests/ui/coherence/coherence-pair-covered-uncovered-1.stderr similarity index 100% rename from src/test/ui/coherence/coherence-pair-covered-uncovered-1.stderr rename to tests/ui/coherence/coherence-pair-covered-uncovered-1.stderr diff --git a/src/test/ui/coherence/coherence-pair-covered-uncovered.rs b/tests/ui/coherence/coherence-pair-covered-uncovered.rs similarity index 100% rename from src/test/ui/coherence/coherence-pair-covered-uncovered.rs rename to tests/ui/coherence/coherence-pair-covered-uncovered.rs diff --git a/src/test/ui/coherence/coherence-pair-covered-uncovered.stderr b/tests/ui/coherence/coherence-pair-covered-uncovered.stderr similarity index 100% rename from src/test/ui/coherence/coherence-pair-covered-uncovered.stderr rename to tests/ui/coherence/coherence-pair-covered-uncovered.stderr diff --git a/src/test/ui/coherence/coherence-projection-conflict-orphan.rs b/tests/ui/coherence/coherence-projection-conflict-orphan.rs similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict-orphan.rs rename to tests/ui/coherence/coherence-projection-conflict-orphan.rs diff --git a/src/test/ui/coherence/coherence-projection-conflict-orphan.stderr b/tests/ui/coherence/coherence-projection-conflict-orphan.stderr similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict-orphan.stderr rename to tests/ui/coherence/coherence-projection-conflict-orphan.stderr diff --git a/src/test/ui/coherence/coherence-projection-conflict-ty-param.rs b/tests/ui/coherence/coherence-projection-conflict-ty-param.rs similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict-ty-param.rs rename to tests/ui/coherence/coherence-projection-conflict-ty-param.rs diff --git a/src/test/ui/coherence/coherence-projection-conflict-ty-param.stderr b/tests/ui/coherence/coherence-projection-conflict-ty-param.stderr similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict-ty-param.stderr rename to tests/ui/coherence/coherence-projection-conflict-ty-param.stderr diff --git a/src/test/ui/coherence/coherence-projection-conflict.rs b/tests/ui/coherence/coherence-projection-conflict.rs similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict.rs rename to tests/ui/coherence/coherence-projection-conflict.rs diff --git a/src/test/ui/coherence/coherence-projection-conflict.stderr b/tests/ui/coherence/coherence-projection-conflict.stderr similarity index 100% rename from src/test/ui/coherence/coherence-projection-conflict.stderr rename to tests/ui/coherence/coherence-projection-conflict.stderr diff --git a/src/test/ui/coherence/coherence-projection-ok-orphan.rs b/tests/ui/coherence/coherence-projection-ok-orphan.rs similarity index 100% rename from src/test/ui/coherence/coherence-projection-ok-orphan.rs rename to tests/ui/coherence/coherence-projection-ok-orphan.rs diff --git a/src/test/ui/coherence/coherence-projection-ok.rs b/tests/ui/coherence/coherence-projection-ok.rs similarity index 100% rename from src/test/ui/coherence/coherence-projection-ok.rs rename to tests/ui/coherence/coherence-projection-ok.rs diff --git a/src/test/ui/coherence/coherence-rfc447-constrained.rs b/tests/ui/coherence/coherence-rfc447-constrained.rs similarity index 100% rename from src/test/ui/coherence/coherence-rfc447-constrained.rs rename to tests/ui/coherence/coherence-rfc447-constrained.rs diff --git a/src/test/ui/coherence/coherence-subtyping.rs b/tests/ui/coherence/coherence-subtyping.rs similarity index 100% rename from src/test/ui/coherence/coherence-subtyping.rs rename to tests/ui/coherence/coherence-subtyping.rs diff --git a/src/test/ui/coherence/coherence-subtyping.stderr b/tests/ui/coherence/coherence-subtyping.stderr similarity index 100% rename from src/test/ui/coherence/coherence-subtyping.stderr rename to tests/ui/coherence/coherence-subtyping.stderr diff --git a/src/test/ui/coherence/coherence-tuple-conflict.rs b/tests/ui/coherence/coherence-tuple-conflict.rs similarity index 100% rename from src/test/ui/coherence/coherence-tuple-conflict.rs rename to tests/ui/coherence/coherence-tuple-conflict.rs diff --git a/src/test/ui/coherence/coherence-tuple-conflict.stderr b/tests/ui/coherence/coherence-tuple-conflict.stderr similarity index 100% rename from src/test/ui/coherence/coherence-tuple-conflict.stderr rename to tests/ui/coherence/coherence-tuple-conflict.stderr diff --git a/src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs b/tests/ui/coherence/coherence-unsafe-trait-object-impl.rs similarity index 100% rename from src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs rename to tests/ui/coherence/coherence-unsafe-trait-object-impl.rs diff --git a/src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr b/tests/ui/coherence/coherence-unsafe-trait-object-impl.stderr similarity index 100% rename from src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr rename to tests/ui/coherence/coherence-unsafe-trait-object-impl.stderr diff --git a/src/test/ui/coherence/coherence-vec-local-2.rs b/tests/ui/coherence/coherence-vec-local-2.rs similarity index 100% rename from src/test/ui/coherence/coherence-vec-local-2.rs rename to tests/ui/coherence/coherence-vec-local-2.rs diff --git a/src/test/ui/coherence/coherence-vec-local-2.stderr b/tests/ui/coherence/coherence-vec-local-2.stderr similarity index 100% rename from src/test/ui/coherence/coherence-vec-local-2.stderr rename to tests/ui/coherence/coherence-vec-local-2.stderr diff --git a/src/test/ui/coherence/coherence-vec-local.rs b/tests/ui/coherence/coherence-vec-local.rs similarity index 100% rename from src/test/ui/coherence/coherence-vec-local.rs rename to tests/ui/coherence/coherence-vec-local.rs diff --git a/src/test/ui/coherence/coherence-vec-local.stderr b/tests/ui/coherence/coherence-vec-local.stderr similarity index 100% rename from src/test/ui/coherence/coherence-vec-local.stderr rename to tests/ui/coherence/coherence-vec-local.stderr diff --git a/src/test/ui/coherence/coherence-wasm-bindgen.rs b/tests/ui/coherence/coherence-wasm-bindgen.rs similarity index 100% rename from src/test/ui/coherence/coherence-wasm-bindgen.rs rename to tests/ui/coherence/coherence-wasm-bindgen.rs diff --git a/src/test/ui/coherence/coherence-wasm-bindgen.stderr b/tests/ui/coherence/coherence-wasm-bindgen.stderr similarity index 100% rename from src/test/ui/coherence/coherence-wasm-bindgen.stderr rename to tests/ui/coherence/coherence-wasm-bindgen.stderr diff --git a/src/test/ui/coherence/coherence-where-clause.rs b/tests/ui/coherence/coherence-where-clause.rs similarity index 100% rename from src/test/ui/coherence/coherence-where-clause.rs rename to tests/ui/coherence/coherence-where-clause.rs diff --git a/src/test/ui/coherence/coherence-with-closure.rs b/tests/ui/coherence/coherence-with-closure.rs similarity index 100% rename from src/test/ui/coherence/coherence-with-closure.rs rename to tests/ui/coherence/coherence-with-closure.rs diff --git a/src/test/ui/coherence/coherence-with-closure.stderr b/tests/ui/coherence/coherence-with-closure.stderr similarity index 100% rename from src/test/ui/coherence/coherence-with-closure.stderr rename to tests/ui/coherence/coherence-with-closure.stderr diff --git a/src/test/ui/coherence/coherence-with-generator.rs b/tests/ui/coherence/coherence-with-generator.rs similarity index 100% rename from src/test/ui/coherence/coherence-with-generator.rs rename to tests/ui/coherence/coherence-with-generator.rs diff --git a/src/test/ui/coherence/coherence-with-generator.stderr b/tests/ui/coherence/coherence-with-generator.stderr similarity index 100% rename from src/test/ui/coherence/coherence-with-generator.stderr rename to tests/ui/coherence/coherence-with-generator.stderr diff --git a/src/test/ui/coherence/coherence_copy_like.rs b/tests/ui/coherence/coherence_copy_like.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like.rs rename to tests/ui/coherence/coherence_copy_like.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_fundamental_struct.rs b/tests/ui/coherence/coherence_copy_like_err_fundamental_struct.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_fundamental_struct.rs rename to tests/ui/coherence/coherence_copy_like_err_fundamental_struct.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_ref.rs b/tests/ui/coherence/coherence_copy_like_err_fundamental_struct_ref.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_ref.rs rename to tests/ui/coherence/coherence_copy_like_err_fundamental_struct_ref.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.rs b/tests/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.rs rename to tests/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.stderr b/tests/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.stderr similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.stderr rename to tests/ui/coherence/coherence_copy_like_err_fundamental_struct_tuple.stderr diff --git a/src/test/ui/coherence/coherence_copy_like_err_struct.rs b/tests/ui/coherence/coherence_copy_like_err_struct.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_struct.rs rename to tests/ui/coherence/coherence_copy_like_err_struct.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_struct.stderr b/tests/ui/coherence/coherence_copy_like_err_struct.stderr similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_struct.stderr rename to tests/ui/coherence/coherence_copy_like_err_struct.stderr diff --git a/src/test/ui/coherence/coherence_copy_like_err_tuple.rs b/tests/ui/coherence/coherence_copy_like_err_tuple.rs similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_tuple.rs rename to tests/ui/coherence/coherence_copy_like_err_tuple.rs diff --git a/src/test/ui/coherence/coherence_copy_like_err_tuple.stderr b/tests/ui/coherence/coherence_copy_like_err_tuple.stderr similarity index 100% rename from src/test/ui/coherence/coherence_copy_like_err_tuple.stderr rename to tests/ui/coherence/coherence_copy_like_err_tuple.stderr diff --git a/src/test/ui/coherence/coherence_inherent.rs b/tests/ui/coherence/coherence_inherent.rs similarity index 100% rename from src/test/ui/coherence/coherence_inherent.rs rename to tests/ui/coherence/coherence_inherent.rs diff --git a/src/test/ui/coherence/coherence_inherent.stderr b/tests/ui/coherence/coherence_inherent.stderr similarity index 100% rename from src/test/ui/coherence/coherence_inherent.stderr rename to tests/ui/coherence/coherence_inherent.stderr diff --git a/src/test/ui/coherence/coherence_inherent_cc.rs b/tests/ui/coherence/coherence_inherent_cc.rs similarity index 100% rename from src/test/ui/coherence/coherence_inherent_cc.rs rename to tests/ui/coherence/coherence_inherent_cc.rs diff --git a/src/test/ui/coherence/coherence_inherent_cc.stderr b/tests/ui/coherence/coherence_inherent_cc.stderr similarity index 100% rename from src/test/ui/coherence/coherence_inherent_cc.stderr rename to tests/ui/coherence/coherence_inherent_cc.stderr diff --git a/src/test/ui/coherence/coherence_local.rs b/tests/ui/coherence/coherence_local.rs similarity index 100% rename from src/test/ui/coherence/coherence_local.rs rename to tests/ui/coherence/coherence_local.rs diff --git a/src/test/ui/coherence/coherence_local_err_struct.rs b/tests/ui/coherence/coherence_local_err_struct.rs similarity index 100% rename from src/test/ui/coherence/coherence_local_err_struct.rs rename to tests/ui/coherence/coherence_local_err_struct.rs diff --git a/src/test/ui/coherence/coherence_local_err_struct.stderr b/tests/ui/coherence/coherence_local_err_struct.stderr similarity index 100% rename from src/test/ui/coherence/coherence_local_err_struct.stderr rename to tests/ui/coherence/coherence_local_err_struct.stderr diff --git a/src/test/ui/coherence/coherence_local_err_tuple.rs b/tests/ui/coherence/coherence_local_err_tuple.rs similarity index 100% rename from src/test/ui/coherence/coherence_local_err_tuple.rs rename to tests/ui/coherence/coherence_local_err_tuple.rs diff --git a/src/test/ui/coherence/coherence_local_err_tuple.stderr b/tests/ui/coherence/coherence_local_err_tuple.stderr similarity index 100% rename from src/test/ui/coherence/coherence_local_err_tuple.stderr rename to tests/ui/coherence/coherence_local_err_tuple.stderr diff --git a/src/test/ui/coherence/coherence_local_ref.rs b/tests/ui/coherence/coherence_local_ref.rs similarity index 100% rename from src/test/ui/coherence/coherence_local_ref.rs rename to tests/ui/coherence/coherence_local_ref.rs diff --git a/src/test/ui/coherence/conflicting-impl-with-err.rs b/tests/ui/coherence/conflicting-impl-with-err.rs similarity index 100% rename from src/test/ui/coherence/conflicting-impl-with-err.rs rename to tests/ui/coherence/conflicting-impl-with-err.rs diff --git a/src/test/ui/coherence/conflicting-impl-with-err.stderr b/tests/ui/coherence/conflicting-impl-with-err.stderr similarity index 100% rename from src/test/ui/coherence/conflicting-impl-with-err.stderr rename to tests/ui/coherence/conflicting-impl-with-err.stderr diff --git a/src/test/ui/coherence/const-generics-orphan-check-ok.rs b/tests/ui/coherence/const-generics-orphan-check-ok.rs similarity index 100% rename from src/test/ui/coherence/const-generics-orphan-check-ok.rs rename to tests/ui/coherence/const-generics-orphan-check-ok.rs diff --git a/src/test/ui/coherence/deep-bad-copy-reason.rs b/tests/ui/coherence/deep-bad-copy-reason.rs similarity index 100% rename from src/test/ui/coherence/deep-bad-copy-reason.rs rename to tests/ui/coherence/deep-bad-copy-reason.rs diff --git a/src/test/ui/coherence/deep-bad-copy-reason.stderr b/tests/ui/coherence/deep-bad-copy-reason.stderr similarity index 100% rename from src/test/ui/coherence/deep-bad-copy-reason.stderr rename to tests/ui/coherence/deep-bad-copy-reason.stderr diff --git a/src/test/ui/coherence/impl-foreign-for-foreign.rs b/tests/ui/coherence/impl-foreign-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-foreign.rs rename to tests/ui/coherence/impl-foreign-for-foreign.rs diff --git a/src/test/ui/coherence/impl-foreign-for-foreign.stderr b/tests/ui/coherence/impl-foreign-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-foreign.stderr rename to tests/ui/coherence/impl-foreign-for-foreign.stderr diff --git a/src/test/ui/coherence/impl-foreign-for-foreign[foreign].rs b/tests/ui/coherence/impl-foreign-for-foreign[foreign].rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-foreign[foreign].rs rename to tests/ui/coherence/impl-foreign-for-foreign[foreign].rs diff --git a/src/test/ui/coherence/impl-foreign-for-foreign[foreign].stderr b/tests/ui/coherence/impl-foreign-for-foreign[foreign].stderr similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-foreign[foreign].stderr rename to tests/ui/coherence/impl-foreign-for-foreign[foreign].stderr diff --git a/src/test/ui/coherence/impl-foreign-for-foreign[local].rs b/tests/ui/coherence/impl-foreign-for-foreign[local].rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-foreign[local].rs rename to tests/ui/coherence/impl-foreign-for-foreign[local].rs diff --git a/src/test/ui/coherence/impl-foreign-for-fundamental[foreign].rs b/tests/ui/coherence/impl-foreign-for-fundamental[foreign].rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-fundamental[foreign].rs rename to tests/ui/coherence/impl-foreign-for-fundamental[foreign].rs diff --git a/src/test/ui/coherence/impl-foreign-for-fundamental[foreign].stderr b/tests/ui/coherence/impl-foreign-for-fundamental[foreign].stderr similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-fundamental[foreign].stderr rename to tests/ui/coherence/impl-foreign-for-fundamental[foreign].stderr diff --git a/src/test/ui/coherence/impl-foreign-for-fundamental[local].rs b/tests/ui/coherence/impl-foreign-for-fundamental[local].rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-fundamental[local].rs rename to tests/ui/coherence/impl-foreign-for-fundamental[local].rs diff --git a/src/test/ui/coherence/impl-foreign-for-local.rs b/tests/ui/coherence/impl-foreign-for-local.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-local.rs rename to tests/ui/coherence/impl-foreign-for-local.rs diff --git a/src/test/ui/coherence/impl-foreign-for-locally-defined-fundamental.rs b/tests/ui/coherence/impl-foreign-for-locally-defined-fundamental.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-locally-defined-fundamental.rs rename to tests/ui/coherence/impl-foreign-for-locally-defined-fundamental.rs diff --git a/src/test/ui/coherence/impl-foreign-for-locally-defined-fundamental[foreign].rs b/tests/ui/coherence/impl-foreign-for-locally-defined-fundamental[foreign].rs similarity index 100% rename from src/test/ui/coherence/impl-foreign-for-locally-defined-fundamental[foreign].rs rename to tests/ui/coherence/impl-foreign-for-locally-defined-fundamental[foreign].rs diff --git a/src/test/ui/coherence/impl-foreign[foreign]-for-foreign.rs b/tests/ui/coherence/impl-foreign[foreign]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign[foreign]-for-foreign.rs rename to tests/ui/coherence/impl-foreign[foreign]-for-foreign.rs diff --git a/src/test/ui/coherence/impl-foreign[foreign]-for-foreign.stderr b/tests/ui/coherence/impl-foreign[foreign]-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl-foreign[foreign]-for-foreign.stderr rename to tests/ui/coherence/impl-foreign[foreign]-for-foreign.stderr diff --git a/src/test/ui/coherence/impl-foreign[foreign]-for-local.rs b/tests/ui/coherence/impl-foreign[foreign]-for-local.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign[foreign]-for-local.rs rename to tests/ui/coherence/impl-foreign[foreign]-for-local.rs diff --git a/src/test/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.rs b/tests/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.rs rename to tests/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.rs diff --git a/src/test/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.stderr b/tests/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.stderr rename to tests/ui/coherence/impl-foreign[fundemental[foreign]]-for-foreign.stderr diff --git a/src/test/ui/coherence/impl-foreign[fundemental[local]]-for-foreign.rs b/tests/ui/coherence/impl-foreign[fundemental[local]]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl-foreign[fundemental[local]]-for-foreign.rs rename to tests/ui/coherence/impl-foreign[fundemental[local]]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign-for-foreign[t].rs b/tests/ui/coherence/impl[t]-foreign-for-foreign[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign-for-foreign[t].rs rename to tests/ui/coherence/impl[t]-foreign-for-foreign[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign-for-foreign[t].stderr b/tests/ui/coherence/impl[t]-foreign-for-foreign[t].stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign-for-foreign[t].stderr rename to tests/ui/coherence/impl[t]-foreign-for-foreign[t].stderr diff --git a/src/test/ui/coherence/impl[t]-foreign-for-fundamental[t].rs b/tests/ui/coherence/impl[t]-foreign-for-fundamental[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign-for-fundamental[t].rs rename to tests/ui/coherence/impl[t]-foreign-for-fundamental[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign-for-fundamental[t].stderr b/tests/ui/coherence/impl[t]-foreign-for-fundamental[t].stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign-for-fundamental[t].stderr rename to tests/ui/coherence/impl[t]-foreign-for-fundamental[t].stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[foreign[t]_local]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[foreign[t]_local]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[foreign[t]_local]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[foreign[t]_local]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].rs b/tests/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].rs rename to tests/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].stderr b/tests/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].stderr rename to tests/ui/coherence/impl[t]-foreign[foreign]-for-fundamental[t].stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[foreign]-for-t.rs b/tests/ui/coherence/impl[t]-foreign[foreign]-for-t.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[foreign]-for-t.rs rename to tests/ui/coherence/impl[t]-foreign[foreign]-for-t.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[foreign]-for-t.stderr b/tests/ui/coherence/impl[t]-foreign[foreign]-for-t.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[foreign]-for-t.stderr rename to tests/ui/coherence/impl[t]-foreign[foreign]-for-t.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.stderr b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.stderr rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-foreign.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].rs b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].rs rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].stderr b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].stderr rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-fundamental[t].stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-local.rs b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-local.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-local.rs rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-local.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.rs b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.rs rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.stderr b/tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.stderr rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]]-for-t.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.stderr b/tests/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.stderr rename to tests/ui/coherence/impl[t]-foreign[fundamental[t]_local]-for-foreign.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[fundemental[local]]-for-foreign[t].rs b/tests/ui/coherence/impl[t]-foreign[fundemental[local]]-for-foreign[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[fundemental[local]]-for-foreign[t].rs rename to tests/ui/coherence/impl[t]-foreign[fundemental[local]]-for-foreign[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[local]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-foreign[t].rs b/tests/ui/coherence/impl[t]-foreign[local]-for-foreign[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-foreign[t].rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-foreign[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[foreign[t]].rs b/tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[foreign[t]].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[foreign[t]].rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[foreign[t]].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].rs b/tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].stderr b/tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].stderr rename to tests/ui/coherence/impl[t]-foreign[local]-for-fundamental[t].stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-local.rs b/tests/ui/coherence/impl[t]-foreign[local]-for-local.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-local.rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-local.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-t.rs b/tests/ui/coherence/impl[t]-foreign[local]-for-t.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-t.rs rename to tests/ui/coherence/impl[t]-foreign[local]-for-t.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[local]-for-t.stderr b/tests/ui/coherence/impl[t]-foreign[local]-for-t.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local]-for-t.stderr rename to tests/ui/coherence/impl[t]-foreign[local]-for-t.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[local_fundamental[t]]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[local_fundamental[t]]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[local_fundamental[t]]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[local_fundamental[t]]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-foreign.rs b/tests/ui/coherence/impl[t]-foreign[t]-for-foreign.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-foreign.rs rename to tests/ui/coherence/impl[t]-foreign[t]-for-foreign.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-foreign.stderr b/tests/ui/coherence/impl[t]-foreign[t]-for-foreign.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-foreign.stderr rename to tests/ui/coherence/impl[t]-foreign[t]-for-foreign.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-fundamental.rs b/tests/ui/coherence/impl[t]-foreign[t]-for-fundamental.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-fundamental.rs rename to tests/ui/coherence/impl[t]-foreign[t]-for-fundamental.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-fundamental.stderr b/tests/ui/coherence/impl[t]-foreign[t]-for-fundamental.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-fundamental.stderr rename to tests/ui/coherence/impl[t]-foreign[t]-for-fundamental.stderr diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-local.rs b/tests/ui/coherence/impl[t]-foreign[t]-for-local.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-local.rs rename to tests/ui/coherence/impl[t]-foreign[t]-for-local.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-t.rs b/tests/ui/coherence/impl[t]-foreign[t]-for-t.rs similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-t.rs rename to tests/ui/coherence/impl[t]-foreign[t]-for-t.rs diff --git a/src/test/ui/coherence/impl[t]-foreign[t]-for-t.stderr b/tests/ui/coherence/impl[t]-foreign[t]-for-t.stderr similarity index 100% rename from src/test/ui/coherence/impl[t]-foreign[t]-for-t.stderr rename to tests/ui/coherence/impl[t]-foreign[t]-for-t.stderr diff --git a/src/test/ui/coherence/inter-crate-ambiguity-causes-notes.rs b/tests/ui/coherence/inter-crate-ambiguity-causes-notes.rs similarity index 100% rename from src/test/ui/coherence/inter-crate-ambiguity-causes-notes.rs rename to tests/ui/coherence/inter-crate-ambiguity-causes-notes.rs diff --git a/src/test/ui/coherence/inter-crate-ambiguity-causes-notes.stderr b/tests/ui/coherence/inter-crate-ambiguity-causes-notes.stderr similarity index 100% rename from src/test/ui/coherence/inter-crate-ambiguity-causes-notes.stderr rename to tests/ui/coherence/inter-crate-ambiguity-causes-notes.stderr diff --git a/src/test/ui/coherence/issue-85026.rs b/tests/ui/coherence/issue-85026.rs similarity index 100% rename from src/test/ui/coherence/issue-85026.rs rename to tests/ui/coherence/issue-85026.rs diff --git a/src/test/ui/coherence/issue-85026.stderr b/tests/ui/coherence/issue-85026.stderr similarity index 100% rename from src/test/ui/coherence/issue-85026.stderr rename to tests/ui/coherence/issue-85026.stderr diff --git a/src/test/ui/coherence/issue-99663-2.rs b/tests/ui/coherence/issue-99663-2.rs similarity index 100% rename from src/test/ui/coherence/issue-99663-2.rs rename to tests/ui/coherence/issue-99663-2.rs diff --git a/src/test/ui/coherence/issue-99663.rs b/tests/ui/coherence/issue-99663.rs similarity index 100% rename from src/test/ui/coherence/issue-99663.rs rename to tests/ui/coherence/issue-99663.rs diff --git a/src/test/ui/coherence/re-rebalance-coherence-default-generic-associated-type.rs b/tests/ui/coherence/re-rebalance-coherence-default-generic-associated-type.rs similarity index 100% rename from src/test/ui/coherence/re-rebalance-coherence-default-generic-associated-type.rs rename to tests/ui/coherence/re-rebalance-coherence-default-generic-associated-type.rs diff --git a/src/test/ui/coherence/re-rebalance-coherence.rs b/tests/ui/coherence/re-rebalance-coherence.rs similarity index 100% rename from src/test/ui/coherence/re-rebalance-coherence.rs rename to tests/ui/coherence/re-rebalance-coherence.rs diff --git a/src/test/ui/coherence/strict-coherence-needs-negative-coherence.rs b/tests/ui/coherence/strict-coherence-needs-negative-coherence.rs similarity index 100% rename from src/test/ui/coherence/strict-coherence-needs-negative-coherence.rs rename to tests/ui/coherence/strict-coherence-needs-negative-coherence.rs diff --git a/src/test/ui/coherence/strict-coherence-needs-negative-coherence.stderr b/tests/ui/coherence/strict-coherence-needs-negative-coherence.stderr similarity index 100% rename from src/test/ui/coherence/strict-coherence-needs-negative-coherence.stderr rename to tests/ui/coherence/strict-coherence-needs-negative-coherence.stderr diff --git a/src/test/ui/command-line-diagnostics.rs b/tests/ui/command-line-diagnostics.rs similarity index 100% rename from src/test/ui/command-line-diagnostics.rs rename to tests/ui/command-line-diagnostics.rs diff --git a/src/test/ui/command-line-diagnostics.stderr b/tests/ui/command-line-diagnostics.stderr similarity index 100% rename from src/test/ui/command-line-diagnostics.stderr rename to tests/ui/command-line-diagnostics.stderr diff --git a/src/test/ui/command/command-argv0.rs b/tests/ui/command/command-argv0.rs similarity index 100% rename from src/test/ui/command/command-argv0.rs rename to tests/ui/command/command-argv0.rs diff --git a/src/test/ui/command/command-create-pidfd.rs b/tests/ui/command/command-create-pidfd.rs similarity index 100% rename from src/test/ui/command/command-create-pidfd.rs rename to tests/ui/command/command-create-pidfd.rs diff --git a/src/test/ui/command/command-current-dir.rs b/tests/ui/command/command-current-dir.rs similarity index 100% rename from src/test/ui/command/command-current-dir.rs rename to tests/ui/command/command-current-dir.rs diff --git a/src/test/ui/command/command-exec.rs b/tests/ui/command/command-exec.rs similarity index 100% rename from src/test/ui/command/command-exec.rs rename to tests/ui/command/command-exec.rs diff --git a/src/test/ui/command/command-pre-exec.rs b/tests/ui/command/command-pre-exec.rs similarity index 100% rename from src/test/ui/command/command-pre-exec.rs rename to tests/ui/command/command-pre-exec.rs diff --git a/src/test/ui/command/command-setgroups.rs b/tests/ui/command/command-setgroups.rs similarity index 100% rename from src/test/ui/command/command-setgroups.rs rename to tests/ui/command/command-setgroups.rs diff --git a/src/test/ui/command/command-uid-gid.rs b/tests/ui/command/command-uid-gid.rs similarity index 100% rename from src/test/ui/command/command-uid-gid.rs rename to tests/ui/command/command-uid-gid.rs diff --git a/src/test/ui/command/issue-10626.rs b/tests/ui/command/issue-10626.rs similarity index 100% rename from src/test/ui/command/issue-10626.rs rename to tests/ui/command/issue-10626.rs diff --git a/src/test/ui/commandline-argfile-badutf8.args b/tests/ui/commandline-argfile-badutf8.args similarity index 100% rename from src/test/ui/commandline-argfile-badutf8.args rename to tests/ui/commandline-argfile-badutf8.args diff --git a/src/test/ui/commandline-argfile-badutf8.rs b/tests/ui/commandline-argfile-badutf8.rs similarity index 100% rename from src/test/ui/commandline-argfile-badutf8.rs rename to tests/ui/commandline-argfile-badutf8.rs diff --git a/src/test/ui/commandline-argfile-badutf8.stderr b/tests/ui/commandline-argfile-badutf8.stderr similarity index 100% rename from src/test/ui/commandline-argfile-badutf8.stderr rename to tests/ui/commandline-argfile-badutf8.stderr diff --git a/src/test/ui/commandline-argfile-missing.rs b/tests/ui/commandline-argfile-missing.rs similarity index 100% rename from src/test/ui/commandline-argfile-missing.rs rename to tests/ui/commandline-argfile-missing.rs diff --git a/src/test/ui/commandline-argfile-missing.stderr b/tests/ui/commandline-argfile-missing.stderr similarity index 100% rename from src/test/ui/commandline-argfile-missing.stderr rename to tests/ui/commandline-argfile-missing.stderr diff --git a/src/test/ui/commandline-argfile.args b/tests/ui/commandline-argfile.args similarity index 100% rename from src/test/ui/commandline-argfile.args rename to tests/ui/commandline-argfile.args diff --git a/src/test/ui/commandline-argfile.rs b/tests/ui/commandline-argfile.rs similarity index 100% rename from src/test/ui/commandline-argfile.rs rename to tests/ui/commandline-argfile.rs diff --git a/src/test/ui/compare-method/bad-self-type.rs b/tests/ui/compare-method/bad-self-type.rs similarity index 100% rename from src/test/ui/compare-method/bad-self-type.rs rename to tests/ui/compare-method/bad-self-type.rs diff --git a/src/test/ui/compare-method/bad-self-type.stderr b/tests/ui/compare-method/bad-self-type.stderr similarity index 100% rename from src/test/ui/compare-method/bad-self-type.stderr rename to tests/ui/compare-method/bad-self-type.stderr diff --git a/src/test/ui/compare-method/issue-90444.rs b/tests/ui/compare-method/issue-90444.rs similarity index 100% rename from src/test/ui/compare-method/issue-90444.rs rename to tests/ui/compare-method/issue-90444.rs diff --git a/src/test/ui/compare-method/issue-90444.stderr b/tests/ui/compare-method/issue-90444.stderr similarity index 100% rename from src/test/ui/compare-method/issue-90444.stderr rename to tests/ui/compare-method/issue-90444.stderr diff --git a/src/test/ui/compare-method/proj-outlives-region.rs b/tests/ui/compare-method/proj-outlives-region.rs similarity index 100% rename from src/test/ui/compare-method/proj-outlives-region.rs rename to tests/ui/compare-method/proj-outlives-region.rs diff --git a/src/test/ui/compare-method/proj-outlives-region.stderr b/tests/ui/compare-method/proj-outlives-region.stderr similarity index 100% rename from src/test/ui/compare-method/proj-outlives-region.stderr rename to tests/ui/compare-method/proj-outlives-region.stderr diff --git a/src/test/ui/compare-method/region-extra-2.rs b/tests/ui/compare-method/region-extra-2.rs similarity index 100% rename from src/test/ui/compare-method/region-extra-2.rs rename to tests/ui/compare-method/region-extra-2.rs diff --git a/src/test/ui/compare-method/region-extra-2.stderr b/tests/ui/compare-method/region-extra-2.stderr similarity index 100% rename from src/test/ui/compare-method/region-extra-2.stderr rename to tests/ui/compare-method/region-extra-2.stderr diff --git a/src/test/ui/compare-method/region-extra.rs b/tests/ui/compare-method/region-extra.rs similarity index 100% rename from src/test/ui/compare-method/region-extra.rs rename to tests/ui/compare-method/region-extra.rs diff --git a/src/test/ui/compare-method/region-extra.stderr b/tests/ui/compare-method/region-extra.stderr similarity index 100% rename from src/test/ui/compare-method/region-extra.stderr rename to tests/ui/compare-method/region-extra.stderr diff --git a/src/test/ui/compare-method/region-unrelated.rs b/tests/ui/compare-method/region-unrelated.rs similarity index 100% rename from src/test/ui/compare-method/region-unrelated.rs rename to tests/ui/compare-method/region-unrelated.rs diff --git a/src/test/ui/compare-method/region-unrelated.stderr b/tests/ui/compare-method/region-unrelated.stderr similarity index 100% rename from src/test/ui/compare-method/region-unrelated.stderr rename to tests/ui/compare-method/region-unrelated.stderr diff --git a/src/test/ui/compare-method/reordered-type-param.rs b/tests/ui/compare-method/reordered-type-param.rs similarity index 100% rename from src/test/ui/compare-method/reordered-type-param.rs rename to tests/ui/compare-method/reordered-type-param.rs diff --git a/src/test/ui/compare-method/reordered-type-param.stderr b/tests/ui/compare-method/reordered-type-param.stderr similarity index 100% rename from src/test/ui/compare-method/reordered-type-param.stderr rename to tests/ui/compare-method/reordered-type-param.stderr diff --git a/src/test/ui/compare-method/trait-bound-on-type-parameter.rs b/tests/ui/compare-method/trait-bound-on-type-parameter.rs similarity index 100% rename from src/test/ui/compare-method/trait-bound-on-type-parameter.rs rename to tests/ui/compare-method/trait-bound-on-type-parameter.rs diff --git a/src/test/ui/compare-method/trait-bound-on-type-parameter.stderr b/tests/ui/compare-method/trait-bound-on-type-parameter.stderr similarity index 100% rename from src/test/ui/compare-method/trait-bound-on-type-parameter.stderr rename to tests/ui/compare-method/trait-bound-on-type-parameter.stderr diff --git a/src/test/ui/compare-method/traits-misc-mismatch-1.rs b/tests/ui/compare-method/traits-misc-mismatch-1.rs similarity index 100% rename from src/test/ui/compare-method/traits-misc-mismatch-1.rs rename to tests/ui/compare-method/traits-misc-mismatch-1.rs diff --git a/src/test/ui/compare-method/traits-misc-mismatch-1.stderr b/tests/ui/compare-method/traits-misc-mismatch-1.stderr similarity index 100% rename from src/test/ui/compare-method/traits-misc-mismatch-1.stderr rename to tests/ui/compare-method/traits-misc-mismatch-1.stderr diff --git a/src/test/ui/compare-method/traits-misc-mismatch-2.rs b/tests/ui/compare-method/traits-misc-mismatch-2.rs similarity index 100% rename from src/test/ui/compare-method/traits-misc-mismatch-2.rs rename to tests/ui/compare-method/traits-misc-mismatch-2.rs diff --git a/src/test/ui/compare-method/traits-misc-mismatch-2.stderr b/tests/ui/compare-method/traits-misc-mismatch-2.stderr similarity index 100% rename from src/test/ui/compare-method/traits-misc-mismatch-2.stderr rename to tests/ui/compare-method/traits-misc-mismatch-2.stderr diff --git a/src/test/ui/compile_error_macro.rs b/tests/ui/compile_error_macro.rs similarity index 100% rename from src/test/ui/compile_error_macro.rs rename to tests/ui/compile_error_macro.rs diff --git a/src/test/ui/compile_error_macro.stderr b/tests/ui/compile_error_macro.stderr similarity index 100% rename from src/test/ui/compile_error_macro.stderr rename to tests/ui/compile_error_macro.stderr diff --git a/src/test/ui/compiletest-self-test/compile-flags-last.rs b/tests/ui/compiletest-self-test/compile-flags-last.rs similarity index 100% rename from src/test/ui/compiletest-self-test/compile-flags-last.rs rename to tests/ui/compiletest-self-test/compile-flags-last.rs diff --git a/src/test/ui/compiletest-self-test/compile-flags-last.stderr b/tests/ui/compiletest-self-test/compile-flags-last.stderr similarity index 100% rename from src/test/ui/compiletest-self-test/compile-flags-last.stderr rename to tests/ui/compiletest-self-test/compile-flags-last.stderr diff --git a/src/test/ui/compiletest-self-test/ui-testing-optout.rs b/tests/ui/compiletest-self-test/ui-testing-optout.rs similarity index 100% rename from src/test/ui/compiletest-self-test/ui-testing-optout.rs rename to tests/ui/compiletest-self-test/ui-testing-optout.rs diff --git a/src/test/ui/compiletest-self-test/ui-testing-optout.stderr b/tests/ui/compiletest-self-test/ui-testing-optout.stderr similarity index 100% rename from src/test/ui/compiletest-self-test/ui-testing-optout.stderr rename to tests/ui/compiletest-self-test/ui-testing-optout.stderr diff --git a/src/test/ui/complex.rs b/tests/ui/complex.rs similarity index 100% rename from src/test/ui/complex.rs rename to tests/ui/complex.rs diff --git a/src/test/ui/conditional-compilation/auxiliary/namespaced_enums.rs b/tests/ui/conditional-compilation/auxiliary/namespaced_enums.rs similarity index 100% rename from src/test/ui/conditional-compilation/auxiliary/namespaced_enums.rs rename to tests/ui/conditional-compilation/auxiliary/namespaced_enums.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-1.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-1.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-1.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-1.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-2.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-2.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-2.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-2.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-2.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-2.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-2.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-2.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-3.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-3.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-3.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-3.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-3.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-3.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-3.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-3.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-4.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-4.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-4.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-4.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-4.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-4.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-4.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-4.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-5.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-5.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-5.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-5.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-5.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-5.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-5.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-5.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-6.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-6.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-6.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-6.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-6.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-6.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-6.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-6.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-7.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-7.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-7.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-7.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-7.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-7.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-7.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-7.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-8.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-8.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-8.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-8.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-8.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-8.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-8.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-8.stderr diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs b/tests/ui/conditional-compilation/cfg-arg-invalid-9.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs rename to tests/ui/conditional-compilation/cfg-arg-invalid-9.rs diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr b/tests/ui/conditional-compilation/cfg-arg-invalid-9.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr rename to tests/ui/conditional-compilation/cfg-arg-invalid-9.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-cfg-2.rs b/tests/ui/conditional-compilation/cfg-attr-cfg-2.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-cfg-2.rs rename to tests/ui/conditional-compilation/cfg-attr-cfg-2.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-cfg-2.stderr b/tests/ui/conditional-compilation/cfg-attr-cfg-2.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-cfg-2.stderr rename to tests/ui/conditional-compilation/cfg-attr-cfg-2.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-crate-2.rs b/tests/ui/conditional-compilation/cfg-attr-crate-2.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-crate-2.rs rename to tests/ui/conditional-compilation/cfg-attr-crate-2.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-crate-2.stderr b/tests/ui/conditional-compilation/cfg-attr-crate-2.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-crate-2.stderr rename to tests/ui/conditional-compilation/cfg-attr-crate-2.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-empty-is-unused.rs b/tests/ui/conditional-compilation/cfg-attr-empty-is-unused.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-empty-is-unused.rs rename to tests/ui/conditional-compilation/cfg-attr-empty-is-unused.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-empty-is-unused.stderr b/tests/ui/conditional-compilation/cfg-attr-empty-is-unused.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-empty-is-unused.stderr rename to tests/ui/conditional-compilation/cfg-attr-empty-is-unused.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-invalid-predicate.rs b/tests/ui/conditional-compilation/cfg-attr-invalid-predicate.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-invalid-predicate.rs rename to tests/ui/conditional-compilation/cfg-attr-invalid-predicate.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-invalid-predicate.stderr b/tests/ui/conditional-compilation/cfg-attr-invalid-predicate.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-invalid-predicate.stderr rename to tests/ui/conditional-compilation/cfg-attr-invalid-predicate.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-false.rs b/tests/ui/conditional-compilation/cfg-attr-multi-false.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-false.rs rename to tests/ui/conditional-compilation/cfg-attr-multi-false.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs b/tests/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs rename to tests/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.stderr b/tests/ui/conditional-compilation/cfg-attr-multi-invalid-1.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-invalid-1.stderr rename to tests/ui/conditional-compilation/cfg-attr-multi-invalid-1.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs b/tests/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs rename to tests/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.stderr b/tests/ui/conditional-compilation/cfg-attr-multi-invalid-2.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-invalid-2.stderr rename to tests/ui/conditional-compilation/cfg-attr-multi-invalid-2.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-true.rs b/tests/ui/conditional-compilation/cfg-attr-multi-true.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-true.rs rename to tests/ui/conditional-compilation/cfg-attr-multi-true.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-multi-true.stderr b/tests/ui/conditional-compilation/cfg-attr-multi-true.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-multi-true.stderr rename to tests/ui/conditional-compilation/cfg-attr-multi-true.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-parse.rs b/tests/ui/conditional-compilation/cfg-attr-parse.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-parse.rs rename to tests/ui/conditional-compilation/cfg-attr-parse.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-parse.stderr b/tests/ui/conditional-compilation/cfg-attr-parse.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-parse.stderr rename to tests/ui/conditional-compilation/cfg-attr-parse.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.rs b/tests/ui/conditional-compilation/cfg-attr-syntax-validation.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-syntax-validation.rs rename to tests/ui/conditional-compilation/cfg-attr-syntax-validation.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr b/tests/ui/conditional-compilation/cfg-attr-syntax-validation.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr rename to tests/ui/conditional-compilation/cfg-attr-syntax-validation.stderr diff --git a/src/test/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.rs b/tests/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.rs rename to tests/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.rs diff --git a/src/test/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.stderr b/tests/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.stderr rename to tests/ui/conditional-compilation/cfg-attr-unknown-attribute-macro-expansion.stderr diff --git a/src/test/ui/conditional-compilation/cfg-empty-codemap.rs b/tests/ui/conditional-compilation/cfg-empty-codemap.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-empty-codemap.rs rename to tests/ui/conditional-compilation/cfg-empty-codemap.rs diff --git a/src/test/ui/conditional-compilation/cfg-empty-codemap.stderr b/tests/ui/conditional-compilation/cfg-empty-codemap.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-empty-codemap.stderr rename to tests/ui/conditional-compilation/cfg-empty-codemap.stderr diff --git a/src/test/ui/conditional-compilation/cfg-generic-params.rs b/tests/ui/conditional-compilation/cfg-generic-params.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-generic-params.rs rename to tests/ui/conditional-compilation/cfg-generic-params.rs diff --git a/src/test/ui/conditional-compilation/cfg-generic-params.stderr b/tests/ui/conditional-compilation/cfg-generic-params.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-generic-params.stderr rename to tests/ui/conditional-compilation/cfg-generic-params.stderr diff --git a/src/test/ui/conditional-compilation/cfg-in-crate-1.rs b/tests/ui/conditional-compilation/cfg-in-crate-1.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-in-crate-1.rs rename to tests/ui/conditional-compilation/cfg-in-crate-1.rs diff --git a/src/test/ui/conditional-compilation/cfg-in-crate-1.stderr b/tests/ui/conditional-compilation/cfg-in-crate-1.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-in-crate-1.stderr rename to tests/ui/conditional-compilation/cfg-in-crate-1.stderr diff --git a/src/test/ui/conditional-compilation/cfg-non-opt-expr.rs b/tests/ui/conditional-compilation/cfg-non-opt-expr.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg-non-opt-expr.rs rename to tests/ui/conditional-compilation/cfg-non-opt-expr.rs diff --git a/src/test/ui/conditional-compilation/cfg-non-opt-expr.stderr b/tests/ui/conditional-compilation/cfg-non-opt-expr.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg-non-opt-expr.stderr rename to tests/ui/conditional-compilation/cfg-non-opt-expr.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-bugs.rs b/tests/ui/conditional-compilation/cfg_accessible-bugs.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-bugs.rs rename to tests/ui/conditional-compilation/cfg_accessible-bugs.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-bugs.stderr b/tests/ui/conditional-compilation/cfg_accessible-bugs.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-bugs.stderr rename to tests/ui/conditional-compilation/cfg_accessible-bugs.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-input-validation.rs b/tests/ui/conditional-compilation/cfg_accessible-input-validation.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-input-validation.rs rename to tests/ui/conditional-compilation/cfg_accessible-input-validation.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-input-validation.stderr b/tests/ui/conditional-compilation/cfg_accessible-input-validation.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-input-validation.stderr rename to tests/ui/conditional-compilation/cfg_accessible-input-validation.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-not_sure.edition2015.stderr b/tests/ui/conditional-compilation/cfg_accessible-not_sure.edition2015.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-not_sure.edition2015.stderr rename to tests/ui/conditional-compilation/cfg_accessible-not_sure.edition2015.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-not_sure.edition2021.stderr b/tests/ui/conditional-compilation/cfg_accessible-not_sure.edition2021.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-not_sure.edition2021.stderr rename to tests/ui/conditional-compilation/cfg_accessible-not_sure.edition2021.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-not_sure.rs b/tests/ui/conditional-compilation/cfg_accessible-not_sure.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-not_sure.rs rename to tests/ui/conditional-compilation/cfg_accessible-not_sure.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-private.rs b/tests/ui/conditional-compilation/cfg_accessible-private.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-private.rs rename to tests/ui/conditional-compilation/cfg_accessible-private.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-stuck.rs b/tests/ui/conditional-compilation/cfg_accessible-stuck.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-stuck.rs rename to tests/ui/conditional-compilation/cfg_accessible-stuck.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-stuck.stderr b/tests/ui/conditional-compilation/cfg_accessible-stuck.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-stuck.stderr rename to tests/ui/conditional-compilation/cfg_accessible-stuck.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible-unstable.rs b/tests/ui/conditional-compilation/cfg_accessible-unstable.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-unstable.rs rename to tests/ui/conditional-compilation/cfg_accessible-unstable.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible-unstable.stderr b/tests/ui/conditional-compilation/cfg_accessible-unstable.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible-unstable.stderr rename to tests/ui/conditional-compilation/cfg_accessible-unstable.stderr diff --git a/src/test/ui/conditional-compilation/cfg_accessible.rs b/tests/ui/conditional-compilation/cfg_accessible.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible.rs rename to tests/ui/conditional-compilation/cfg_accessible.rs diff --git a/src/test/ui/conditional-compilation/cfg_accessible.stderr b/tests/ui/conditional-compilation/cfg_accessible.stderr similarity index 100% rename from src/test/ui/conditional-compilation/cfg_accessible.stderr rename to tests/ui/conditional-compilation/cfg_accessible.stderr diff --git a/src/test/ui/conditional-compilation/cfg_attr_path.rs b/tests/ui/conditional-compilation/cfg_attr_path.rs similarity index 100% rename from src/test/ui/conditional-compilation/cfg_attr_path.rs rename to tests/ui/conditional-compilation/cfg_attr_path.rs diff --git a/src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs b/tests/ui/conditional-compilation/inner-cfg-non-inline-mod.rs similarity index 100% rename from src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs rename to tests/ui/conditional-compilation/inner-cfg-non-inline-mod.rs diff --git a/src/test/ui/conditional-compilation/issue-34028.rs b/tests/ui/conditional-compilation/issue-34028.rs similarity index 100% rename from src/test/ui/conditional-compilation/issue-34028.rs rename to tests/ui/conditional-compilation/issue-34028.rs diff --git a/src/test/ui/conditional-compilation/module_with_cfg.rs b/tests/ui/conditional-compilation/module_with_cfg.rs similarity index 100% rename from src/test/ui/conditional-compilation/module_with_cfg.rs rename to tests/ui/conditional-compilation/module_with_cfg.rs diff --git a/src/test/ui/conditional-compilation/test-cfg.rs b/tests/ui/conditional-compilation/test-cfg.rs similarity index 100% rename from src/test/ui/conditional-compilation/test-cfg.rs rename to tests/ui/conditional-compilation/test-cfg.rs diff --git a/src/test/ui/conditional-compilation/test-cfg.stderr b/tests/ui/conditional-compilation/test-cfg.stderr similarity index 100% rename from src/test/ui/conditional-compilation/test-cfg.stderr rename to tests/ui/conditional-compilation/test-cfg.stderr diff --git a/src/test/ui/conflicting-repr-hints.rs b/tests/ui/conflicting-repr-hints.rs similarity index 100% rename from src/test/ui/conflicting-repr-hints.rs rename to tests/ui/conflicting-repr-hints.rs diff --git a/src/test/ui/conflicting-repr-hints.stderr b/tests/ui/conflicting-repr-hints.stderr similarity index 100% rename from src/test/ui/conflicting-repr-hints.stderr rename to tests/ui/conflicting-repr-hints.stderr diff --git a/src/test/ui/confuse-field-and-method/issue-18343.rs b/tests/ui/confuse-field-and-method/issue-18343.rs similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-18343.rs rename to tests/ui/confuse-field-and-method/issue-18343.rs diff --git a/src/test/ui/confuse-field-and-method/issue-18343.stderr b/tests/ui/confuse-field-and-method/issue-18343.stderr similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-18343.stderr rename to tests/ui/confuse-field-and-method/issue-18343.stderr diff --git a/src/test/ui/confuse-field-and-method/issue-2392.rs b/tests/ui/confuse-field-and-method/issue-2392.rs similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-2392.rs rename to tests/ui/confuse-field-and-method/issue-2392.rs diff --git a/src/test/ui/confuse-field-and-method/issue-2392.stderr b/tests/ui/confuse-field-and-method/issue-2392.stderr similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-2392.stderr rename to tests/ui/confuse-field-and-method/issue-2392.stderr diff --git a/src/test/ui/confuse-field-and-method/issue-32128.rs b/tests/ui/confuse-field-and-method/issue-32128.rs similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-32128.rs rename to tests/ui/confuse-field-and-method/issue-32128.rs diff --git a/src/test/ui/confuse-field-and-method/issue-32128.stderr b/tests/ui/confuse-field-and-method/issue-32128.stderr similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-32128.stderr rename to tests/ui/confuse-field-and-method/issue-32128.stderr diff --git a/src/test/ui/confuse-field-and-method/issue-33784.rs b/tests/ui/confuse-field-and-method/issue-33784.rs similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-33784.rs rename to tests/ui/confuse-field-and-method/issue-33784.rs diff --git a/src/test/ui/confuse-field-and-method/issue-33784.stderr b/tests/ui/confuse-field-and-method/issue-33784.stderr similarity index 100% rename from src/test/ui/confuse-field-and-method/issue-33784.stderr rename to tests/ui/confuse-field-and-method/issue-33784.stderr diff --git a/src/test/ui/confuse-field-and-method/private-field.rs b/tests/ui/confuse-field-and-method/private-field.rs similarity index 100% rename from src/test/ui/confuse-field-and-method/private-field.rs rename to tests/ui/confuse-field-and-method/private-field.rs diff --git a/src/test/ui/confuse-field-and-method/private-field.stderr b/tests/ui/confuse-field-and-method/private-field.stderr similarity index 100% rename from src/test/ui/confuse-field-and-method/private-field.stderr rename to tests/ui/confuse-field-and-method/private-field.stderr diff --git a/src/test/ui/conservative_impl_trait.rs b/tests/ui/conservative_impl_trait.rs similarity index 100% rename from src/test/ui/conservative_impl_trait.rs rename to tests/ui/conservative_impl_trait.rs diff --git a/src/test/ui/conservative_impl_trait.stderr b/tests/ui/conservative_impl_trait.stderr similarity index 100% rename from src/test/ui/conservative_impl_trait.stderr rename to tests/ui/conservative_impl_trait.stderr diff --git a/src/test/ui/const-generics/apit-with-const-param.rs b/tests/ui/const-generics/apit-with-const-param.rs similarity index 100% rename from src/test/ui/const-generics/apit-with-const-param.rs rename to tests/ui/const-generics/apit-with-const-param.rs diff --git a/src/test/ui/const-generics/arg-in-pat-1.rs b/tests/ui/const-generics/arg-in-pat-1.rs similarity index 100% rename from src/test/ui/const-generics/arg-in-pat-1.rs rename to tests/ui/const-generics/arg-in-pat-1.rs diff --git a/src/test/ui/const-generics/arg-in-pat-2.rs b/tests/ui/const-generics/arg-in-pat-2.rs similarity index 100% rename from src/test/ui/const-generics/arg-in-pat-2.rs rename to tests/ui/const-generics/arg-in-pat-2.rs diff --git a/src/test/ui/const-generics/arg-in-pat-3.rs b/tests/ui/const-generics/arg-in-pat-3.rs similarity index 100% rename from src/test/ui/const-generics/arg-in-pat-3.rs rename to tests/ui/const-generics/arg-in-pat-3.rs diff --git a/src/test/ui/const-generics/argument_order.rs b/tests/ui/const-generics/argument_order.rs similarity index 100% rename from src/test/ui/const-generics/argument_order.rs rename to tests/ui/const-generics/argument_order.rs diff --git a/src/test/ui/const-generics/argument_order.stderr b/tests/ui/const-generics/argument_order.stderr similarity index 100% rename from src/test/ui/const-generics/argument_order.stderr rename to tests/ui/const-generics/argument_order.stderr diff --git a/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs b/tests/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs rename to tests/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs diff --git a/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs b/tests/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs rename to tests/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs diff --git a/src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs b/tests/ui/const-generics/array-impls/alloc-types-impls-length-33.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs rename to tests/ui/const-generics/array-impls/alloc-types-impls-length-33.rs diff --git a/src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs b/tests/ui/const-generics/array-impls/core-traits-impls-length-32.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs rename to tests/ui/const-generics/array-impls/core-traits-impls-length-32.rs diff --git a/src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs b/tests/ui/const-generics/array-impls/core-traits-impls-length-33.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs rename to tests/ui/const-generics/array-impls/core-traits-impls-length-33.rs diff --git a/src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs b/tests/ui/const-generics/array-impls/into-iter-impls-length-32.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs rename to tests/ui/const-generics/array-impls/into-iter-impls-length-32.rs diff --git a/src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs b/tests/ui/const-generics/array-impls/into-iter-impls-length-33.rs similarity index 100% rename from src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs rename to tests/ui/const-generics/array-impls/into-iter-impls-length-33.rs diff --git a/src/test/ui/const-generics/array-wrapper-struct-ctor.rs b/tests/ui/const-generics/array-wrapper-struct-ctor.rs similarity index 100% rename from src/test/ui/const-generics/array-wrapper-struct-ctor.rs rename to tests/ui/const-generics/array-wrapper-struct-ctor.rs diff --git a/src/test/ui/const-generics/assoc_const_eq_diagnostic.rs b/tests/ui/const-generics/assoc_const_eq_diagnostic.rs similarity index 100% rename from src/test/ui/const-generics/assoc_const_eq_diagnostic.rs rename to tests/ui/const-generics/assoc_const_eq_diagnostic.rs diff --git a/src/test/ui/const-generics/assoc_const_eq_diagnostic.stderr b/tests/ui/const-generics/assoc_const_eq_diagnostic.stderr similarity index 100% rename from src/test/ui/const-generics/assoc_const_eq_diagnostic.stderr rename to tests/ui/const-generics/assoc_const_eq_diagnostic.stderr diff --git a/src/test/ui/const-generics/associated-type-bound-fail.rs b/tests/ui/const-generics/associated-type-bound-fail.rs similarity index 100% rename from src/test/ui/const-generics/associated-type-bound-fail.rs rename to tests/ui/const-generics/associated-type-bound-fail.rs diff --git a/src/test/ui/const-generics/associated-type-bound-fail.stderr b/tests/ui/const-generics/associated-type-bound-fail.stderr similarity index 100% rename from src/test/ui/const-generics/associated-type-bound-fail.stderr rename to tests/ui/const-generics/associated-type-bound-fail.stderr diff --git a/src/test/ui/const-generics/associated-type-bound.rs b/tests/ui/const-generics/associated-type-bound.rs similarity index 100% rename from src/test/ui/const-generics/associated-type-bound.rs rename to tests/ui/const-generics/associated-type-bound.rs diff --git a/src/test/ui/const-generics/auxiliary/const_generic_lib.rs b/tests/ui/const-generics/auxiliary/const_generic_lib.rs similarity index 100% rename from src/test/ui/const-generics/auxiliary/const_generic_lib.rs rename to tests/ui/const-generics/auxiliary/const_generic_lib.rs diff --git a/src/test/ui/const-generics/auxiliary/crayte.rs b/tests/ui/const-generics/auxiliary/crayte.rs similarity index 100% rename from src/test/ui/const-generics/auxiliary/crayte.rs rename to tests/ui/const-generics/auxiliary/crayte.rs diff --git a/src/test/ui/const-generics/auxiliary/generics_of_parent.rs b/tests/ui/const-generics/auxiliary/generics_of_parent.rs similarity index 100% rename from src/test/ui/const-generics/auxiliary/generics_of_parent.rs rename to tests/ui/const-generics/auxiliary/generics_of_parent.rs diff --git a/src/test/ui/const-generics/auxiliary/generics_of_parent_impl_trait.rs b/tests/ui/const-generics/auxiliary/generics_of_parent_impl_trait.rs similarity index 100% rename from src/test/ui/const-generics/auxiliary/generics_of_parent_impl_trait.rs rename to tests/ui/const-generics/auxiliary/generics_of_parent_impl_trait.rs diff --git a/src/test/ui/const-generics/auxiliary/legacy-const-generics.rs b/tests/ui/const-generics/auxiliary/legacy-const-generics.rs similarity index 100% rename from src/test/ui/const-generics/auxiliary/legacy-const-generics.rs rename to tests/ui/const-generics/auxiliary/legacy-const-generics.rs diff --git a/src/test/ui/const-generics/backcompat/trait-resolution-breakage.rs b/tests/ui/const-generics/backcompat/trait-resolution-breakage.rs similarity index 100% rename from src/test/ui/const-generics/backcompat/trait-resolution-breakage.rs rename to tests/ui/const-generics/backcompat/trait-resolution-breakage.rs diff --git a/src/test/ui/const-generics/backcompat/unevaluated-consts.rs b/tests/ui/const-generics/backcompat/unevaluated-consts.rs similarity index 100% rename from src/test/ui/const-generics/backcompat/unevaluated-consts.rs rename to tests/ui/const-generics/backcompat/unevaluated-consts.rs diff --git a/src/test/ui/const-generics/bad-const-generic-exprs.rs b/tests/ui/const-generics/bad-const-generic-exprs.rs similarity index 100% rename from src/test/ui/const-generics/bad-const-generic-exprs.rs rename to tests/ui/const-generics/bad-const-generic-exprs.rs diff --git a/src/test/ui/const-generics/bad-const-generic-exprs.stderr b/tests/ui/const-generics/bad-const-generic-exprs.stderr similarity index 100% rename from src/test/ui/const-generics/bad-const-generic-exprs.stderr rename to tests/ui/const-generics/bad-const-generic-exprs.stderr diff --git a/src/test/ui/const-generics/broken-mir-1.rs b/tests/ui/const-generics/broken-mir-1.rs similarity index 100% rename from src/test/ui/const-generics/broken-mir-1.rs rename to tests/ui/const-generics/broken-mir-1.rs diff --git a/src/test/ui/const-generics/broken-mir-2.rs b/tests/ui/const-generics/broken-mir-2.rs similarity index 100% rename from src/test/ui/const-generics/broken-mir-2.rs rename to tests/ui/const-generics/broken-mir-2.rs diff --git a/src/test/ui/const-generics/cannot-infer-type-for-const-param.rs b/tests/ui/const-generics/cannot-infer-type-for-const-param.rs similarity index 100% rename from src/test/ui/const-generics/cannot-infer-type-for-const-param.rs rename to tests/ui/const-generics/cannot-infer-type-for-const-param.rs diff --git a/src/test/ui/const-generics/coerce_unsized_array.rs b/tests/ui/const-generics/coerce_unsized_array.rs similarity index 100% rename from src/test/ui/const-generics/coerce_unsized_array.rs rename to tests/ui/const-generics/coerce_unsized_array.rs diff --git a/src/test/ui/const-generics/concrete-const-as-fn-arg.rs b/tests/ui/const-generics/concrete-const-as-fn-arg.rs similarity index 100% rename from src/test/ui/const-generics/concrete-const-as-fn-arg.rs rename to tests/ui/const-generics/concrete-const-as-fn-arg.rs diff --git a/src/test/ui/const-generics/concrete-const-impl-method.rs b/tests/ui/const-generics/concrete-const-impl-method.rs similarity index 100% rename from src/test/ui/const-generics/concrete-const-impl-method.rs rename to tests/ui/const-generics/concrete-const-impl-method.rs diff --git a/src/test/ui/const-generics/condition-in-trait-const-arg.rs b/tests/ui/const-generics/condition-in-trait-const-arg.rs similarity index 100% rename from src/test/ui/const-generics/condition-in-trait-const-arg.rs rename to tests/ui/const-generics/condition-in-trait-const-arg.rs diff --git a/src/test/ui/const-generics/const-arg-in-const-arg.full.stderr b/tests/ui/const-generics/const-arg-in-const-arg.full.stderr similarity index 100% rename from src/test/ui/const-generics/const-arg-in-const-arg.full.stderr rename to tests/ui/const-generics/const-arg-in-const-arg.full.stderr diff --git a/src/test/ui/const-generics/const-arg-in-const-arg.min.stderr b/tests/ui/const-generics/const-arg-in-const-arg.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-arg-in-const-arg.min.stderr rename to tests/ui/const-generics/const-arg-in-const-arg.min.stderr diff --git a/src/test/ui/const-generics/const-arg-in-const-arg.rs b/tests/ui/const-generics/const-arg-in-const-arg.rs similarity index 100% rename from src/test/ui/const-generics/const-arg-in-const-arg.rs rename to tests/ui/const-generics/const-arg-in-const-arg.rs diff --git a/src/test/ui/const-generics/const-arg-in-fn.rs b/tests/ui/const-generics/const-arg-in-fn.rs similarity index 100% rename from src/test/ui/const-generics/const-arg-in-fn.rs rename to tests/ui/const-generics/const-arg-in-fn.rs diff --git a/src/test/ui/const-generics/const-arg-type-arg-misordered.rs b/tests/ui/const-generics/const-arg-type-arg-misordered.rs similarity index 100% rename from src/test/ui/const-generics/const-arg-type-arg-misordered.rs rename to tests/ui/const-generics/const-arg-type-arg-misordered.rs diff --git a/src/test/ui/const-generics/const-arg-type-arg-misordered.stderr b/tests/ui/const-generics/const-arg-type-arg-misordered.stderr similarity index 100% rename from src/test/ui/const-generics/const-arg-type-arg-misordered.stderr rename to tests/ui/const-generics/const-arg-type-arg-misordered.stderr diff --git a/src/test/ui/const-generics/const-argument-cross-crate-mismatch.rs b/tests/ui/const-generics/const-argument-cross-crate-mismatch.rs similarity index 100% rename from src/test/ui/const-generics/const-argument-cross-crate-mismatch.rs rename to tests/ui/const-generics/const-argument-cross-crate-mismatch.rs diff --git a/src/test/ui/const-generics/const-argument-cross-crate-mismatch.stderr b/tests/ui/const-generics/const-argument-cross-crate-mismatch.stderr similarity index 100% rename from src/test/ui/const-generics/const-argument-cross-crate-mismatch.stderr rename to tests/ui/const-generics/const-argument-cross-crate-mismatch.stderr diff --git a/src/test/ui/const-generics/const-argument-cross-crate.rs b/tests/ui/const-generics/const-argument-cross-crate.rs similarity index 100% rename from src/test/ui/const-generics/const-argument-cross-crate.rs rename to tests/ui/const-generics/const-argument-cross-crate.rs diff --git a/src/test/ui/const-generics/const-argument-if-length.full.stderr b/tests/ui/const-generics/const-argument-if-length.full.stderr similarity index 100% rename from src/test/ui/const-generics/const-argument-if-length.full.stderr rename to tests/ui/const-generics/const-argument-if-length.full.stderr diff --git a/src/test/ui/const-generics/const-argument-if-length.min.stderr b/tests/ui/const-generics/const-argument-if-length.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-argument-if-length.min.stderr rename to tests/ui/const-generics/const-argument-if-length.min.stderr diff --git a/src/test/ui/const-generics/const-argument-if-length.rs b/tests/ui/const-generics/const-argument-if-length.rs similarity index 100% rename from src/test/ui/const-generics/const-argument-if-length.rs rename to tests/ui/const-generics/const-argument-if-length.rs diff --git a/src/test/ui/const-generics/const-argument-non-static-lifetime.min.stderr b/tests/ui/const-generics/const-argument-non-static-lifetime.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-argument-non-static-lifetime.min.stderr rename to tests/ui/const-generics/const-argument-non-static-lifetime.min.stderr diff --git a/src/test/ui/const-generics/const-argument-non-static-lifetime.rs b/tests/ui/const-generics/const-argument-non-static-lifetime.rs similarity index 100% rename from src/test/ui/const-generics/const-argument-non-static-lifetime.rs rename to tests/ui/const-generics/const-argument-non-static-lifetime.rs diff --git a/src/test/ui/const-generics/const-fn-with-const-param.rs b/tests/ui/const-generics/const-fn-with-const-param.rs similarity index 100% rename from src/test/ui/const-generics/const-fn-with-const-param.rs rename to tests/ui/const-generics/const-fn-with-const-param.rs diff --git a/src/test/ui/const-generics/const-generic-default-wont-borrowck.rs b/tests/ui/const-generics/const-generic-default-wont-borrowck.rs similarity index 100% rename from src/test/ui/const-generics/const-generic-default-wont-borrowck.rs rename to tests/ui/const-generics/const-generic-default-wont-borrowck.rs diff --git a/src/test/ui/const-generics/const-generic-default-wont-borrowck.stderr b/tests/ui/const-generics/const-generic-default-wont-borrowck.stderr similarity index 100% rename from src/test/ui/const-generics/const-generic-default-wont-borrowck.stderr rename to tests/ui/const-generics/const-generic-default-wont-borrowck.stderr diff --git a/src/test/ui/const-generics/const-generic-function.rs b/tests/ui/const-generics/const-generic-function.rs similarity index 100% rename from src/test/ui/const-generics/const-generic-function.rs rename to tests/ui/const-generics/const-generic-function.rs diff --git a/src/test/ui/const-generics/const-generic-function.stderr b/tests/ui/const-generics/const-generic-function.stderr similarity index 100% rename from src/test/ui/const-generics/const-generic-function.stderr rename to tests/ui/const-generics/const-generic-function.stderr diff --git a/src/test/ui/const-generics/const-generic-type_name.rs b/tests/ui/const-generics/const-generic-type_name.rs similarity index 100% rename from src/test/ui/const-generics/const-generic-type_name.rs rename to tests/ui/const-generics/const-generic-type_name.rs diff --git a/src/test/ui/const-generics/const-param-after-const-literal-arg.rs b/tests/ui/const-generics/const-param-after-const-literal-arg.rs similarity index 100% rename from src/test/ui/const-generics/const-param-after-const-literal-arg.rs rename to tests/ui/const-generics/const-param-after-const-literal-arg.rs diff --git a/src/test/ui/const-generics/const-param-before-other-params.rs b/tests/ui/const-generics/const-param-before-other-params.rs similarity index 100% rename from src/test/ui/const-generics/const-param-before-other-params.rs rename to tests/ui/const-generics/const-param-before-other-params.rs diff --git a/src/test/ui/const-generics/const-param-before-other-params.stderr b/tests/ui/const-generics/const-param-before-other-params.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-before-other-params.stderr rename to tests/ui/const-generics/const-param-before-other-params.stderr diff --git a/src/test/ui/const-generics/const-param-elided-lifetime.full.stderr b/tests/ui/const-generics/const-param-elided-lifetime.full.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-elided-lifetime.full.stderr rename to tests/ui/const-generics/const-param-elided-lifetime.full.stderr diff --git a/src/test/ui/const-generics/const-param-elided-lifetime.min.stderr b/tests/ui/const-generics/const-param-elided-lifetime.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-elided-lifetime.min.stderr rename to tests/ui/const-generics/const-param-elided-lifetime.min.stderr diff --git a/src/test/ui/const-generics/const-param-elided-lifetime.rs b/tests/ui/const-generics/const-param-elided-lifetime.rs similarity index 100% rename from src/test/ui/const-generics/const-param-elided-lifetime.rs rename to tests/ui/const-generics/const-param-elided-lifetime.rs diff --git a/src/test/ui/const-generics/const-param-in-async.rs b/tests/ui/const-generics/const-param-in-async.rs similarity index 100% rename from src/test/ui/const-generics/const-param-in-async.rs rename to tests/ui/const-generics/const-param-in-async.rs diff --git a/src/test/ui/const-generics/const-param-type-depends-on-const-param.full.stderr b/tests/ui/const-generics/const-param-type-depends-on-const-param.full.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-const-param.full.stderr rename to tests/ui/const-generics/const-param-type-depends-on-const-param.full.stderr diff --git a/src/test/ui/const-generics/const-param-type-depends-on-const-param.min.stderr b/tests/ui/const-generics/const-param-type-depends-on-const-param.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-const-param.min.stderr rename to tests/ui/const-generics/const-param-type-depends-on-const-param.min.stderr diff --git a/src/test/ui/const-generics/const-param-type-depends-on-const-param.rs b/tests/ui/const-generics/const-param-type-depends-on-const-param.rs similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-const-param.rs rename to tests/ui/const-generics/const-param-type-depends-on-const-param.rs diff --git a/src/test/ui/const-generics/const-param-type-depends-on-type-param-ungated.rs b/tests/ui/const-generics/const-param-type-depends-on-type-param-ungated.rs similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-type-param-ungated.rs rename to tests/ui/const-generics/const-param-type-depends-on-type-param-ungated.rs diff --git a/src/test/ui/const-generics/const-param-type-depends-on-type-param-ungated.stderr b/tests/ui/const-generics/const-param-type-depends-on-type-param-ungated.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-type-param-ungated.stderr rename to tests/ui/const-generics/const-param-type-depends-on-type-param-ungated.stderr diff --git a/src/test/ui/const-generics/const-param-type-depends-on-type-param.full.stderr b/tests/ui/const-generics/const-param-type-depends-on-type-param.full.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-type-param.full.stderr rename to tests/ui/const-generics/const-param-type-depends-on-type-param.full.stderr diff --git a/src/test/ui/const-generics/const-param-type-depends-on-type-param.min.stderr b/tests/ui/const-generics/const-param-type-depends-on-type-param.min.stderr similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-type-param.min.stderr rename to tests/ui/const-generics/const-param-type-depends-on-type-param.min.stderr diff --git a/src/test/ui/const-generics/const-param-type-depends-on-type-param.rs b/tests/ui/const-generics/const-param-type-depends-on-type-param.rs similarity index 100% rename from src/test/ui/const-generics/const-param-type-depends-on-type-param.rs rename to tests/ui/const-generics/const-param-type-depends-on-type-param.rs diff --git a/src/test/ui/const-generics/const-parameter-uppercase-lint.rs b/tests/ui/const-generics/const-parameter-uppercase-lint.rs similarity index 100% rename from src/test/ui/const-generics/const-parameter-uppercase-lint.rs rename to tests/ui/const-generics/const-parameter-uppercase-lint.rs diff --git a/src/test/ui/const-generics/const-parameter-uppercase-lint.stderr b/tests/ui/const-generics/const-parameter-uppercase-lint.stderr similarity index 100% rename from src/test/ui/const-generics/const-parameter-uppercase-lint.stderr rename to tests/ui/const-generics/const-parameter-uppercase-lint.stderr diff --git a/src/test/ui/const-generics/const_trait_fn-issue-88433.rs b/tests/ui/const-generics/const_trait_fn-issue-88433.rs similarity index 100% rename from src/test/ui/const-generics/const_trait_fn-issue-88433.rs rename to tests/ui/const-generics/const_trait_fn-issue-88433.rs diff --git a/src/test/ui/const-generics/core-types.rs b/tests/ui/const-generics/core-types.rs similarity index 100% rename from src/test/ui/const-generics/core-types.rs rename to tests/ui/const-generics/core-types.rs diff --git a/src/test/ui/const-generics/cross_crate_complex.rs b/tests/ui/const-generics/cross_crate_complex.rs similarity index 100% rename from src/test/ui/const-generics/cross_crate_complex.rs rename to tests/ui/const-generics/cross_crate_complex.rs diff --git a/src/test/ui/const-generics/defaults/auxiliary/const_defaulty.rs b/tests/ui/const-generics/defaults/auxiliary/const_defaulty.rs similarity index 100% rename from src/test/ui/const-generics/defaults/auxiliary/const_defaulty.rs rename to tests/ui/const-generics/defaults/auxiliary/const_defaulty.rs diff --git a/src/test/ui/const-generics/defaults/auxiliary/trait_object_lt_defaults_lib.rs b/tests/ui/const-generics/defaults/auxiliary/trait_object_lt_defaults_lib.rs similarity index 100% rename from src/test/ui/const-generics/defaults/auxiliary/trait_object_lt_defaults_lib.rs rename to tests/ui/const-generics/defaults/auxiliary/trait_object_lt_defaults_lib.rs diff --git a/src/test/ui/const-generics/defaults/complex-generic-default-expr.min.stderr b/tests/ui/const-generics/defaults/complex-generic-default-expr.min.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/complex-generic-default-expr.min.stderr rename to tests/ui/const-generics/defaults/complex-generic-default-expr.min.stderr diff --git a/src/test/ui/const-generics/defaults/complex-generic-default-expr.rs b/tests/ui/const-generics/defaults/complex-generic-default-expr.rs similarity index 100% rename from src/test/ui/const-generics/defaults/complex-generic-default-expr.rs rename to tests/ui/const-generics/defaults/complex-generic-default-expr.rs diff --git a/src/test/ui/const-generics/defaults/complex-unord-param.rs b/tests/ui/const-generics/defaults/complex-unord-param.rs similarity index 100% rename from src/test/ui/const-generics/defaults/complex-unord-param.rs rename to tests/ui/const-generics/defaults/complex-unord-param.rs diff --git a/src/test/ui/const-generics/defaults/const-default.rs b/tests/ui/const-generics/defaults/const-default.rs similarity index 100% rename from src/test/ui/const-generics/defaults/const-default.rs rename to tests/ui/const-generics/defaults/const-default.rs diff --git a/src/test/ui/const-generics/defaults/const-param-as-default-value.rs b/tests/ui/const-generics/defaults/const-param-as-default-value.rs similarity index 100% rename from src/test/ui/const-generics/defaults/const-param-as-default-value.rs rename to tests/ui/const-generics/defaults/const-param-as-default-value.rs diff --git a/src/test/ui/const-generics/defaults/const-param-in-ty-defaults.rs b/tests/ui/const-generics/defaults/const-param-in-ty-defaults.rs similarity index 100% rename from src/test/ui/const-generics/defaults/const-param-in-ty-defaults.rs rename to tests/ui/const-generics/defaults/const-param-in-ty-defaults.rs diff --git a/src/test/ui/const-generics/defaults/default-annotation.rs b/tests/ui/const-generics/defaults/default-annotation.rs similarity index 100% rename from src/test/ui/const-generics/defaults/default-annotation.rs rename to tests/ui/const-generics/defaults/default-annotation.rs diff --git a/src/test/ui/const-generics/defaults/default-const-param-cannot-reference-self.rs b/tests/ui/const-generics/defaults/default-const-param-cannot-reference-self.rs similarity index 100% rename from src/test/ui/const-generics/defaults/default-const-param-cannot-reference-self.rs rename to tests/ui/const-generics/defaults/default-const-param-cannot-reference-self.rs diff --git a/src/test/ui/const-generics/defaults/default-const-param-cannot-reference-self.stderr b/tests/ui/const-generics/defaults/default-const-param-cannot-reference-self.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/default-const-param-cannot-reference-self.stderr rename to tests/ui/const-generics/defaults/default-const-param-cannot-reference-self.stderr diff --git a/src/test/ui/const-generics/defaults/default-on-impl.rs b/tests/ui/const-generics/defaults/default-on-impl.rs similarity index 100% rename from src/test/ui/const-generics/defaults/default-on-impl.rs rename to tests/ui/const-generics/defaults/default-on-impl.rs diff --git a/src/test/ui/const-generics/defaults/default-on-impl.stderr b/tests/ui/const-generics/defaults/default-on-impl.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/default-on-impl.stderr rename to tests/ui/const-generics/defaults/default-on-impl.stderr diff --git a/src/test/ui/const-generics/defaults/default-param-wf-concrete.rs b/tests/ui/const-generics/defaults/default-param-wf-concrete.rs similarity index 100% rename from src/test/ui/const-generics/defaults/default-param-wf-concrete.rs rename to tests/ui/const-generics/defaults/default-param-wf-concrete.rs diff --git a/src/test/ui/const-generics/defaults/default-param-wf-concrete.stderr b/tests/ui/const-generics/defaults/default-param-wf-concrete.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/default-param-wf-concrete.stderr rename to tests/ui/const-generics/defaults/default-param-wf-concrete.stderr diff --git a/src/test/ui/const-generics/defaults/doesnt_infer.rs b/tests/ui/const-generics/defaults/doesnt_infer.rs similarity index 100% rename from src/test/ui/const-generics/defaults/doesnt_infer.rs rename to tests/ui/const-generics/defaults/doesnt_infer.rs diff --git a/src/test/ui/const-generics/defaults/doesnt_infer.stderr b/tests/ui/const-generics/defaults/doesnt_infer.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/doesnt_infer.stderr rename to tests/ui/const-generics/defaults/doesnt_infer.stderr diff --git a/src/test/ui/const-generics/defaults/external.rs b/tests/ui/const-generics/defaults/external.rs similarity index 100% rename from src/test/ui/const-generics/defaults/external.rs rename to tests/ui/const-generics/defaults/external.rs diff --git a/src/test/ui/const-generics/defaults/forward-declared.rs b/tests/ui/const-generics/defaults/forward-declared.rs similarity index 100% rename from src/test/ui/const-generics/defaults/forward-declared.rs rename to tests/ui/const-generics/defaults/forward-declared.rs diff --git a/src/test/ui/const-generics/defaults/forward-declared.stderr b/tests/ui/const-generics/defaults/forward-declared.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/forward-declared.stderr rename to tests/ui/const-generics/defaults/forward-declared.stderr diff --git a/src/test/ui/const-generics/defaults/generic-expr-default-concrete.rs b/tests/ui/const-generics/defaults/generic-expr-default-concrete.rs similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default-concrete.rs rename to tests/ui/const-generics/defaults/generic-expr-default-concrete.rs diff --git a/src/test/ui/const-generics/defaults/generic-expr-default-concrete.stderr b/tests/ui/const-generics/defaults/generic-expr-default-concrete.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default-concrete.stderr rename to tests/ui/const-generics/defaults/generic-expr-default-concrete.stderr diff --git a/src/test/ui/const-generics/defaults/generic-expr-default-mismatched-types.rs b/tests/ui/const-generics/defaults/generic-expr-default-mismatched-types.rs similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default-mismatched-types.rs rename to tests/ui/const-generics/defaults/generic-expr-default-mismatched-types.rs diff --git a/src/test/ui/const-generics/defaults/generic-expr-default-mismatched-types.stderr b/tests/ui/const-generics/defaults/generic-expr-default-mismatched-types.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default-mismatched-types.stderr rename to tests/ui/const-generics/defaults/generic-expr-default-mismatched-types.stderr diff --git a/src/test/ui/const-generics/defaults/generic-expr-default.rs b/tests/ui/const-generics/defaults/generic-expr-default.rs similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default.rs rename to tests/ui/const-generics/defaults/generic-expr-default.rs diff --git a/src/test/ui/const-generics/defaults/generic-expr-default.stderr b/tests/ui/const-generics/defaults/generic-expr-default.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/generic-expr-default.stderr rename to tests/ui/const-generics/defaults/generic-expr-default.stderr diff --git a/src/test/ui/const-generics/defaults/intermixed-lifetime.rs b/tests/ui/const-generics/defaults/intermixed-lifetime.rs similarity index 100% rename from src/test/ui/const-generics/defaults/intermixed-lifetime.rs rename to tests/ui/const-generics/defaults/intermixed-lifetime.rs diff --git a/src/test/ui/const-generics/defaults/intermixed-lifetime.stderr b/tests/ui/const-generics/defaults/intermixed-lifetime.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/intermixed-lifetime.stderr rename to tests/ui/const-generics/defaults/intermixed-lifetime.stderr diff --git a/src/test/ui/const-generics/defaults/mismatch.rs b/tests/ui/const-generics/defaults/mismatch.rs similarity index 100% rename from src/test/ui/const-generics/defaults/mismatch.rs rename to tests/ui/const-generics/defaults/mismatch.rs diff --git a/src/test/ui/const-generics/defaults/mismatch.stderr b/tests/ui/const-generics/defaults/mismatch.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/mismatch.stderr rename to tests/ui/const-generics/defaults/mismatch.stderr diff --git a/src/test/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.rs b/tests/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.rs similarity index 100% rename from src/test/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.rs rename to tests/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.rs diff --git a/src/test/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.stderr b/tests/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.stderr rename to tests/ui/const-generics/defaults/mismatched_ty_const_in_trait_impl.stderr diff --git a/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs b/tests/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs similarity index 100% rename from src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs rename to tests/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs diff --git a/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr b/tests/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr rename to tests/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr diff --git a/src/test/ui/const-generics/defaults/pretty-printing-ast.rs b/tests/ui/const-generics/defaults/pretty-printing-ast.rs similarity index 100% rename from src/test/ui/const-generics/defaults/pretty-printing-ast.rs rename to tests/ui/const-generics/defaults/pretty-printing-ast.rs diff --git a/src/test/ui/const-generics/defaults/pretty-printing-ast.stdout b/tests/ui/const-generics/defaults/pretty-printing-ast.stdout similarity index 100% rename from src/test/ui/const-generics/defaults/pretty-printing-ast.stdout rename to tests/ui/const-generics/defaults/pretty-printing-ast.stdout diff --git a/src/test/ui/const-generics/defaults/repr-c-issue-82792.rs b/tests/ui/const-generics/defaults/repr-c-issue-82792.rs similarity index 100% rename from src/test/ui/const-generics/defaults/repr-c-issue-82792.rs rename to tests/ui/const-generics/defaults/repr-c-issue-82792.rs diff --git a/src/test/ui/const-generics/defaults/rp_impl_trait.rs b/tests/ui/const-generics/defaults/rp_impl_trait.rs similarity index 100% rename from src/test/ui/const-generics/defaults/rp_impl_trait.rs rename to tests/ui/const-generics/defaults/rp_impl_trait.rs diff --git a/src/test/ui/const-generics/defaults/rp_impl_trait_fail.rs b/tests/ui/const-generics/defaults/rp_impl_trait_fail.rs similarity index 100% rename from src/test/ui/const-generics/defaults/rp_impl_trait_fail.rs rename to tests/ui/const-generics/defaults/rp_impl_trait_fail.rs diff --git a/src/test/ui/const-generics/defaults/rp_impl_trait_fail.stderr b/tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/rp_impl_trait_fail.stderr rename to tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr diff --git a/src/test/ui/const-generics/defaults/self-referential.rs b/tests/ui/const-generics/defaults/self-referential.rs similarity index 100% rename from src/test/ui/const-generics/defaults/self-referential.rs rename to tests/ui/const-generics/defaults/self-referential.rs diff --git a/src/test/ui/const-generics/defaults/self-referential.stderr b/tests/ui/const-generics/defaults/self-referential.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/self-referential.stderr rename to tests/ui/const-generics/defaults/self-referential.stderr diff --git a/src/test/ui/const-generics/defaults/simple-defaults.rs b/tests/ui/const-generics/defaults/simple-defaults.rs similarity index 100% rename from src/test/ui/const-generics/defaults/simple-defaults.rs rename to tests/ui/const-generics/defaults/simple-defaults.rs diff --git a/src/test/ui/const-generics/defaults/trait_object_lt_defaults.rs b/tests/ui/const-generics/defaults/trait_object_lt_defaults.rs similarity index 100% rename from src/test/ui/const-generics/defaults/trait_object_lt_defaults.rs rename to tests/ui/const-generics/defaults/trait_object_lt_defaults.rs diff --git a/src/test/ui/const-generics/defaults/trait_objects.rs b/tests/ui/const-generics/defaults/trait_objects.rs similarity index 100% rename from src/test/ui/const-generics/defaults/trait_objects.rs rename to tests/ui/const-generics/defaults/trait_objects.rs diff --git a/src/test/ui/const-generics/defaults/trait_objects_fail.rs b/tests/ui/const-generics/defaults/trait_objects_fail.rs similarity index 100% rename from src/test/ui/const-generics/defaults/trait_objects_fail.rs rename to tests/ui/const-generics/defaults/trait_objects_fail.rs diff --git a/src/test/ui/const-generics/defaults/trait_objects_fail.stderr b/tests/ui/const-generics/defaults/trait_objects_fail.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/trait_objects_fail.stderr rename to tests/ui/const-generics/defaults/trait_objects_fail.stderr diff --git a/src/test/ui/const-generics/defaults/type-default-const-param-name.rs b/tests/ui/const-generics/defaults/type-default-const-param-name.rs similarity index 100% rename from src/test/ui/const-generics/defaults/type-default-const-param-name.rs rename to tests/ui/const-generics/defaults/type-default-const-param-name.rs diff --git a/src/test/ui/const-generics/defaults/wfness.rs b/tests/ui/const-generics/defaults/wfness.rs similarity index 100% rename from src/test/ui/const-generics/defaults/wfness.rs rename to tests/ui/const-generics/defaults/wfness.rs diff --git a/src/test/ui/const-generics/defaults/wfness.stderr b/tests/ui/const-generics/defaults/wfness.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/wfness.stderr rename to tests/ui/const-generics/defaults/wfness.stderr diff --git a/src/test/ui/const-generics/defaults/wrong-order.rs b/tests/ui/const-generics/defaults/wrong-order.rs similarity index 100% rename from src/test/ui/const-generics/defaults/wrong-order.rs rename to tests/ui/const-generics/defaults/wrong-order.rs diff --git a/src/test/ui/const-generics/defaults/wrong-order.stderr b/tests/ui/const-generics/defaults/wrong-order.stderr similarity index 100% rename from src/test/ui/const-generics/defaults/wrong-order.stderr rename to tests/ui/const-generics/defaults/wrong-order.stderr diff --git a/src/test/ui/const-generics/deref-into-array-generic.rs b/tests/ui/const-generics/deref-into-array-generic.rs similarity index 100% rename from src/test/ui/const-generics/deref-into-array-generic.rs rename to tests/ui/const-generics/deref-into-array-generic.rs diff --git a/src/test/ui/const-generics/different_generic_args.full.stderr b/tests/ui/const-generics/different_generic_args.full.stderr similarity index 100% rename from src/test/ui/const-generics/different_generic_args.full.stderr rename to tests/ui/const-generics/different_generic_args.full.stderr diff --git a/src/test/ui/const-generics/different_generic_args.min.stderr b/tests/ui/const-generics/different_generic_args.min.stderr similarity index 100% rename from src/test/ui/const-generics/different_generic_args.min.stderr rename to tests/ui/const-generics/different_generic_args.min.stderr diff --git a/src/test/ui/const-generics/different_generic_args.rs b/tests/ui/const-generics/different_generic_args.rs similarity index 100% rename from src/test/ui/const-generics/different_generic_args.rs rename to tests/ui/const-generics/different_generic_args.rs diff --git a/src/test/ui/const-generics/different_generic_args_array.rs b/tests/ui/const-generics/different_generic_args_array.rs similarity index 100% rename from src/test/ui/const-generics/different_generic_args_array.rs rename to tests/ui/const-generics/different_generic_args_array.rs diff --git a/src/test/ui/const-generics/different_generic_args_array.stderr b/tests/ui/const-generics/different_generic_args_array.stderr similarity index 100% rename from src/test/ui/const-generics/different_generic_args_array.stderr rename to tests/ui/const-generics/different_generic_args_array.stderr diff --git a/src/test/ui/const-generics/dont-evaluate-array-len-on-err-1.rs b/tests/ui/const-generics/dont-evaluate-array-len-on-err-1.rs similarity index 100% rename from src/test/ui/const-generics/dont-evaluate-array-len-on-err-1.rs rename to tests/ui/const-generics/dont-evaluate-array-len-on-err-1.rs diff --git a/src/test/ui/const-generics/dont-evaluate-array-len-on-err-1.stderr b/tests/ui/const-generics/dont-evaluate-array-len-on-err-1.stderr similarity index 100% rename from src/test/ui/const-generics/dont-evaluate-array-len-on-err-1.stderr rename to tests/ui/const-generics/dont-evaluate-array-len-on-err-1.stderr diff --git a/src/test/ui/const-generics/dyn-supertraits.rs b/tests/ui/const-generics/dyn-supertraits.rs similarity index 100% rename from src/test/ui/const-generics/dyn-supertraits.rs rename to tests/ui/const-generics/dyn-supertraits.rs diff --git a/src/test/ui/const-generics/early/closing-args-token.rs b/tests/ui/const-generics/early/closing-args-token.rs similarity index 100% rename from src/test/ui/const-generics/early/closing-args-token.rs rename to tests/ui/const-generics/early/closing-args-token.rs diff --git a/src/test/ui/const-generics/early/closing-args-token.stderr b/tests/ui/const-generics/early/closing-args-token.stderr similarity index 100% rename from src/test/ui/const-generics/early/closing-args-token.stderr rename to tests/ui/const-generics/early/closing-args-token.stderr diff --git a/src/test/ui/const-generics/early/const-expression-parameter.rs b/tests/ui/const-generics/early/const-expression-parameter.rs similarity index 100% rename from src/test/ui/const-generics/early/const-expression-parameter.rs rename to tests/ui/const-generics/early/const-expression-parameter.rs diff --git a/src/test/ui/const-generics/early/const-expression-parameter.stderr b/tests/ui/const-generics/early/const-expression-parameter.stderr similarity index 100% rename from src/test/ui/const-generics/early/const-expression-parameter.stderr rename to tests/ui/const-generics/early/const-expression-parameter.stderr diff --git a/src/test/ui/const-generics/early/const-param-from-outer-fn.rs b/tests/ui/const-generics/early/const-param-from-outer-fn.rs similarity index 100% rename from src/test/ui/const-generics/early/const-param-from-outer-fn.rs rename to tests/ui/const-generics/early/const-param-from-outer-fn.rs diff --git a/src/test/ui/const-generics/early/const-param-from-outer-fn.stderr b/tests/ui/const-generics/early/const-param-from-outer-fn.stderr similarity index 100% rename from src/test/ui/const-generics/early/const-param-from-outer-fn.stderr rename to tests/ui/const-generics/early/const-param-from-outer-fn.stderr diff --git a/src/test/ui/const-generics/early/const-param-hygiene.rs b/tests/ui/const-generics/early/const-param-hygiene.rs similarity index 100% rename from src/test/ui/const-generics/early/const-param-hygiene.rs rename to tests/ui/const-generics/early/const-param-hygiene.rs diff --git a/src/test/ui/const-generics/early/const-param-shadowing.rs b/tests/ui/const-generics/early/const-param-shadowing.rs similarity index 100% rename from src/test/ui/const-generics/early/const-param-shadowing.rs rename to tests/ui/const-generics/early/const-param-shadowing.rs diff --git a/src/test/ui/const-generics/early/const-param-shadowing.stderr b/tests/ui/const-generics/early/const-param-shadowing.stderr similarity index 100% rename from src/test/ui/const-generics/early/const-param-shadowing.stderr rename to tests/ui/const-generics/early/const-param-shadowing.stderr diff --git a/src/test/ui/const-generics/early/invalid-const-arguments.rs b/tests/ui/const-generics/early/invalid-const-arguments.rs similarity index 100% rename from src/test/ui/const-generics/early/invalid-const-arguments.rs rename to tests/ui/const-generics/early/invalid-const-arguments.rs diff --git a/src/test/ui/const-generics/early/invalid-const-arguments.stderr b/tests/ui/const-generics/early/invalid-const-arguments.stderr similarity index 100% rename from src/test/ui/const-generics/early/invalid-const-arguments.stderr rename to tests/ui/const-generics/early/invalid-const-arguments.stderr diff --git a/src/test/ui/const-generics/early/macro_rules-braces.rs b/tests/ui/const-generics/early/macro_rules-braces.rs similarity index 100% rename from src/test/ui/const-generics/early/macro_rules-braces.rs rename to tests/ui/const-generics/early/macro_rules-braces.rs diff --git a/src/test/ui/const-generics/early/macro_rules-braces.stderr b/tests/ui/const-generics/early/macro_rules-braces.stderr similarity index 100% rename from src/test/ui/const-generics/early/macro_rules-braces.stderr rename to tests/ui/const-generics/early/macro_rules-braces.stderr diff --git a/src/test/ui/const-generics/ensure_is_evaluatable.rs b/tests/ui/const-generics/ensure_is_evaluatable.rs similarity index 100% rename from src/test/ui/const-generics/ensure_is_evaluatable.rs rename to tests/ui/const-generics/ensure_is_evaluatable.rs diff --git a/src/test/ui/const-generics/ensure_is_evaluatable.stderr b/tests/ui/const-generics/ensure_is_evaluatable.stderr similarity index 100% rename from src/test/ui/const-generics/ensure_is_evaluatable.stderr rename to tests/ui/const-generics/ensure_is_evaluatable.stderr diff --git a/src/test/ui/const-generics/enum-variants.rs b/tests/ui/const-generics/enum-variants.rs similarity index 100% rename from src/test/ui/const-generics/enum-variants.rs rename to tests/ui/const-generics/enum-variants.rs diff --git a/src/test/ui/const-generics/exhaustive-value.rs b/tests/ui/const-generics/exhaustive-value.rs similarity index 100% rename from src/test/ui/const-generics/exhaustive-value.rs rename to tests/ui/const-generics/exhaustive-value.rs diff --git a/src/test/ui/const-generics/exhaustive-value.stderr b/tests/ui/const-generics/exhaustive-value.stderr similarity index 100% rename from src/test/ui/const-generics/exhaustive-value.stderr rename to tests/ui/const-generics/exhaustive-value.stderr diff --git a/src/test/ui/const-generics/expose-default-substs-param-env.rs b/tests/ui/const-generics/expose-default-substs-param-env.rs similarity index 100% rename from src/test/ui/const-generics/expose-default-substs-param-env.rs rename to tests/ui/const-generics/expose-default-substs-param-env.rs diff --git a/src/test/ui/const-generics/float-generic.adt_const_params.stderr b/tests/ui/const-generics/float-generic.adt_const_params.stderr similarity index 100% rename from src/test/ui/const-generics/float-generic.adt_const_params.stderr rename to tests/ui/const-generics/float-generic.adt_const_params.stderr diff --git a/src/test/ui/const-generics/float-generic.rs b/tests/ui/const-generics/float-generic.rs similarity index 100% rename from src/test/ui/const-generics/float-generic.rs rename to tests/ui/const-generics/float-generic.rs diff --git a/src/test/ui/const-generics/float-generic.simple.stderr b/tests/ui/const-generics/float-generic.simple.stderr similarity index 100% rename from src/test/ui/const-generics/float-generic.simple.stderr rename to tests/ui/const-generics/float-generic.simple.stderr diff --git a/src/test/ui/const-generics/fn-const-param-call.full.stderr b/tests/ui/const-generics/fn-const-param-call.full.stderr similarity index 100% rename from src/test/ui/const-generics/fn-const-param-call.full.stderr rename to tests/ui/const-generics/fn-const-param-call.full.stderr diff --git a/src/test/ui/const-generics/fn-const-param-call.min.stderr b/tests/ui/const-generics/fn-const-param-call.min.stderr similarity index 100% rename from src/test/ui/const-generics/fn-const-param-call.min.stderr rename to tests/ui/const-generics/fn-const-param-call.min.stderr diff --git a/src/test/ui/const-generics/fn-const-param-call.rs b/tests/ui/const-generics/fn-const-param-call.rs similarity index 100% rename from src/test/ui/const-generics/fn-const-param-call.rs rename to tests/ui/const-generics/fn-const-param-call.rs diff --git a/src/test/ui/const-generics/fn-const-param-infer.full.stderr b/tests/ui/const-generics/fn-const-param-infer.full.stderr similarity index 100% rename from src/test/ui/const-generics/fn-const-param-infer.full.stderr rename to tests/ui/const-generics/fn-const-param-infer.full.stderr diff --git a/src/test/ui/const-generics/fn-const-param-infer.min.stderr b/tests/ui/const-generics/fn-const-param-infer.min.stderr similarity index 100% rename from src/test/ui/const-generics/fn-const-param-infer.min.stderr rename to tests/ui/const-generics/fn-const-param-infer.min.stderr diff --git a/src/test/ui/const-generics/fn-const-param-infer.rs b/tests/ui/const-generics/fn-const-param-infer.rs similarity index 100% rename from src/test/ui/const-generics/fn-const-param-infer.rs rename to tests/ui/const-generics/fn-const-param-infer.rs diff --git a/src/test/ui/const-generics/fn_with_two_const_inputs.rs b/tests/ui/const-generics/fn_with_two_const_inputs.rs similarity index 100% rename from src/test/ui/const-generics/fn_with_two_const_inputs.rs rename to tests/ui/const-generics/fn_with_two_const_inputs.rs diff --git a/src/test/ui/const-generics/fn_with_two_const_inputs.stderr b/tests/ui/const-generics/fn_with_two_const_inputs.stderr similarity index 100% rename from src/test/ui/const-generics/fn_with_two_const_inputs.stderr rename to tests/ui/const-generics/fn_with_two_const_inputs.stderr diff --git a/src/test/ui/const-generics/fn_with_two_same_const_inputs.rs b/tests/ui/const-generics/fn_with_two_same_const_inputs.rs similarity index 100% rename from src/test/ui/const-generics/fn_with_two_same_const_inputs.rs rename to tests/ui/const-generics/fn_with_two_same_const_inputs.rs diff --git a/src/test/ui/const-generics/forbid-non-structural_match-types.rs b/tests/ui/const-generics/forbid-non-structural_match-types.rs similarity index 100% rename from src/test/ui/const-generics/forbid-non-structural_match-types.rs rename to tests/ui/const-generics/forbid-non-structural_match-types.rs diff --git a/src/test/ui/const-generics/forbid-non-structural_match-types.stderr b/tests/ui/const-generics/forbid-non-structural_match-types.stderr similarity index 100% rename from src/test/ui/const-generics/forbid-non-structural_match-types.stderr rename to tests/ui/const-generics/forbid-non-structural_match-types.stderr diff --git a/src/test/ui/const-generics/foreign-item-const-parameter.rs b/tests/ui/const-generics/foreign-item-const-parameter.rs similarity index 100% rename from src/test/ui/const-generics/foreign-item-const-parameter.rs rename to tests/ui/const-generics/foreign-item-const-parameter.rs diff --git a/src/test/ui/const-generics/foreign-item-const-parameter.stderr b/tests/ui/const-generics/foreign-item-const-parameter.stderr similarity index 100% rename from src/test/ui/const-generics/foreign-item-const-parameter.stderr rename to tests/ui/const-generics/foreign-item-const-parameter.stderr diff --git a/src/test/ui/const-generics/generic-param-mismatch.rs b/tests/ui/const-generics/generic-param-mismatch.rs similarity index 100% rename from src/test/ui/const-generics/generic-param-mismatch.rs rename to tests/ui/const-generics/generic-param-mismatch.rs diff --git a/src/test/ui/const-generics/generic-param-mismatch.stderr b/tests/ui/const-generics/generic-param-mismatch.stderr similarity index 100% rename from src/test/ui/const-generics/generic-param-mismatch.stderr rename to tests/ui/const-generics/generic-param-mismatch.stderr diff --git a/src/test/ui/const-generics/generic_arg_infer/array-repeat-expr.rs b/tests/ui/const-generics/generic_arg_infer/array-repeat-expr.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/array-repeat-expr.rs rename to tests/ui/const-generics/generic_arg_infer/array-repeat-expr.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/dont-use-defaults.rs b/tests/ui/const-generics/generic_arg_infer/dont-use-defaults.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/dont-use-defaults.rs rename to tests/ui/const-generics/generic_arg_infer/dont-use-defaults.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/in-signature.rs b/tests/ui/const-generics/generic_arg_infer/in-signature.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/in-signature.rs rename to tests/ui/const-generics/generic_arg_infer/in-signature.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/in-signature.stderr b/tests/ui/const-generics/generic_arg_infer/in-signature.stderr similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/in-signature.stderr rename to tests/ui/const-generics/generic_arg_infer/in-signature.stderr diff --git a/src/test/ui/const-generics/generic_arg_infer/infer-arg-test.rs b/tests/ui/const-generics/generic_arg_infer/infer-arg-test.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/infer-arg-test.rs rename to tests/ui/const-generics/generic_arg_infer/infer-arg-test.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/infer-arg-test.stderr b/tests/ui/const-generics/generic_arg_infer/infer-arg-test.stderr similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/infer-arg-test.stderr rename to tests/ui/const-generics/generic_arg_infer/infer-arg-test.stderr diff --git a/src/test/ui/const-generics/generic_arg_infer/infer_arg_and_const_arg.rs b/tests/ui/const-generics/generic_arg_infer/infer_arg_and_const_arg.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/infer_arg_and_const_arg.rs rename to tests/ui/const-generics/generic_arg_infer/infer_arg_and_const_arg.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/issue-91614.rs b/tests/ui/const-generics/generic_arg_infer/issue-91614.rs similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/issue-91614.rs rename to tests/ui/const-generics/generic_arg_infer/issue-91614.rs diff --git a/src/test/ui/const-generics/generic_arg_infer/issue-91614.stderr b/tests/ui/const-generics/generic_arg_infer/issue-91614.stderr similarity index 100% rename from src/test/ui/const-generics/generic_arg_infer/issue-91614.stderr rename to tests/ui/const-generics/generic_arg_infer/issue-91614.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-1.rs b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-1.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-1.rs rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-1.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.rs b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.rs rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.stderr b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.stderr rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-2.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.rs b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.rs rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-3.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs b/tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs rename to tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.rs b/tests/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.rs rename to tests/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.stderr b/tests/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.stderr rename to tests/ui/const-generics/generic_const_exprs/abstract-consts-as-cast-5.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.full.stderr b/tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.full.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.full.stderr rename to tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.full.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.min.stderr b/tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.min.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.min.stderr rename to tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.min.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.rs b/tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.rs rename to tests/ui/const-generics/generic_const_exprs/array-size-in-generic-struct-param.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/const_equate_assoc_consts.rs b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/const_equate_assoc_consts.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/const_equate_assoc_consts.rs rename to tests/ui/const-generics/generic_const_exprs/assoc_const_unification/const_equate_assoc_consts.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.rs b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.rs rename to tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr rename to tests/ui/const-generics/generic_const_exprs/assoc_const_unification/doesnt_unify_evaluatable.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/dropck_unifies_assoc_consts.rs b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/dropck_unifies_assoc_consts.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/dropck_unifies_assoc_consts.rs rename to tests/ui/const-generics/generic_const_exprs/assoc_const_unification/dropck_unifies_assoc_consts.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/unifies_evaluatable.rs b/tests/ui/const-generics/generic_const_exprs/assoc_const_unification/unifies_evaluatable.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/assoc_const_unification/unifies_evaluatable.rs rename to tests/ui/const-generics/generic_const_exprs/assoc_const_unification/unifies_evaluatable.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/associated-const.rs b/tests/ui/const-generics/generic_const_exprs/associated-const.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/associated-const.rs rename to tests/ui/const-generics/generic_const_exprs/associated-const.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/associated-consts.rs b/tests/ui/const-generics/generic_const_exprs/associated-consts.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/associated-consts.rs rename to tests/ui/const-generics/generic_const_exprs/associated-consts.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/auxiliary/const_evaluatable_lib.rs b/tests/ui/const-generics/generic_const_exprs/auxiliary/const_evaluatable_lib.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/auxiliary/const_evaluatable_lib.rs rename to tests/ui/const-generics/generic_const_exprs/auxiliary/const_evaluatable_lib.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs b/tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs rename to tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/closures.rs b/tests/ui/const-generics/generic_const_exprs/closures.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/closures.rs rename to tests/ui/const-generics/generic_const_exprs/closures.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/closures.stderr b/tests/ui/const-generics/generic_const_exprs/closures.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/closures.stderr rename to tests/ui/const-generics/generic_const_exprs/closures.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs b/tests/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs rename to tests/ui/const-generics/generic_const_exprs/const_eval_resolve_canonical.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs rename to tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr b/tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr rename to tests/ui/const-generics/generic_const_exprs/const_kind_expr/wf_obligation.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/cross_crate.rs b/tests/ui/const-generics/generic_const_exprs/cross_crate.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/cross_crate.rs rename to tests/ui/const-generics/generic_const_exprs/cross_crate.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/cross_crate_predicate.rs b/tests/ui/const-generics/generic_const_exprs/cross_crate_predicate.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/cross_crate_predicate.rs rename to tests/ui/const-generics/generic_const_exprs/cross_crate_predicate.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/cross_crate_predicate.stderr b/tests/ui/const-generics/generic_const_exprs/cross_crate_predicate.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/cross_crate_predicate.stderr rename to tests/ui/const-generics/generic_const_exprs/cross_crate_predicate.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/dependence_lint.full.stderr b/tests/ui/const-generics/generic_const_exprs/dependence_lint.full.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/dependence_lint.full.stderr rename to tests/ui/const-generics/generic_const_exprs/dependence_lint.full.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/dependence_lint.gce.stderr b/tests/ui/const-generics/generic_const_exprs/dependence_lint.gce.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/dependence_lint.gce.stderr rename to tests/ui/const-generics/generic_const_exprs/dependence_lint.gce.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/dependence_lint.rs b/tests/ui/const-generics/generic_const_exprs/dependence_lint.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/dependence_lint.rs rename to tests/ui/const-generics/generic_const_exprs/dependence_lint.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/different-fn.rs b/tests/ui/const-generics/generic_const_exprs/different-fn.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/different-fn.rs rename to tests/ui/const-generics/generic_const_exprs/different-fn.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/different-fn.stderr b/tests/ui/const-generics/generic_const_exprs/different-fn.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/different-fn.stderr rename to tests/ui/const-generics/generic_const_exprs/different-fn.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/division.rs b/tests/ui/const-generics/generic_const_exprs/division.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/division.rs rename to tests/ui/const-generics/generic_const_exprs/division.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/dont-eagerly-error-in-is-const-evaluatable.rs b/tests/ui/const-generics/generic_const_exprs/dont-eagerly-error-in-is-const-evaluatable.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/dont-eagerly-error-in-is-const-evaluatable.rs rename to tests/ui/const-generics/generic_const_exprs/dont-eagerly-error-in-is-const-evaluatable.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/drop_impl.rs b/tests/ui/const-generics/generic_const_exprs/drop_impl.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/drop_impl.rs rename to tests/ui/const-generics/generic_const_exprs/drop_impl.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/elaborate-trait-pred.rs b/tests/ui/const-generics/generic_const_exprs/elaborate-trait-pred.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/elaborate-trait-pred.rs rename to tests/ui/const-generics/generic_const_exprs/elaborate-trait-pred.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/eval-privacy.rs b/tests/ui/const-generics/generic_const_exprs/eval-privacy.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/eval-privacy.rs rename to tests/ui/const-generics/generic_const_exprs/eval-privacy.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/eval-privacy.stderr b/tests/ui/const-generics/generic_const_exprs/eval-privacy.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/eval-privacy.stderr rename to tests/ui/const-generics/generic_const_exprs/eval-privacy.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/eval-try-unify.rs b/tests/ui/const-generics/generic_const_exprs/eval-try-unify.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/eval-try-unify.rs rename to tests/ui/const-generics/generic_const_exprs/eval-try-unify.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/eval-try-unify.stderr b/tests/ui/const-generics/generic_const_exprs/eval-try-unify.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/eval-try-unify.stderr rename to tests/ui/const-generics/generic_const_exprs/eval-try-unify.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/evaluated-to-ambig.rs b/tests/ui/const-generics/generic_const_exprs/evaluated-to-ambig.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/evaluated-to-ambig.rs rename to tests/ui/const-generics/generic_const_exprs/evaluated-to-ambig.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.rs b/tests/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.rs rename to tests/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.stderr b/tests/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.stderr rename to tests/ui/const-generics/generic_const_exprs/feature-gate-generic_const_exprs.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/fn_call.rs b/tests/ui/const-generics/generic_const_exprs/fn_call.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/fn_call.rs rename to tests/ui/const-generics/generic_const_exprs/fn_call.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/from-sig-fail.rs b/tests/ui/const-generics/generic_const_exprs/from-sig-fail.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/from-sig-fail.rs rename to tests/ui/const-generics/generic_const_exprs/from-sig-fail.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/from-sig-fail.stderr b/tests/ui/const-generics/generic_const_exprs/from-sig-fail.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/from-sig-fail.stderr rename to tests/ui/const-generics/generic_const_exprs/from-sig-fail.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/from-sig.rs b/tests/ui/const-generics/generic_const_exprs/from-sig.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/from-sig.rs rename to tests/ui/const-generics/generic_const_exprs/from-sig.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/function-call.rs b/tests/ui/const-generics/generic_const_exprs/function-call.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/function-call.rs rename to tests/ui/const-generics/generic_const_exprs/function-call.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/function-call.stderr b/tests/ui/const-generics/generic_const_exprs/function-call.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/function-call.stderr rename to tests/ui/const-generics/generic_const_exprs/function-call.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/impl-bounds.rs b/tests/ui/const-generics/generic_const_exprs/impl-bounds.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/impl-bounds.rs rename to tests/ui/const-generics/generic_const_exprs/impl-bounds.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/infer-too-generic.rs b/tests/ui/const-generics/generic_const_exprs/infer-too-generic.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/infer-too-generic.rs rename to tests/ui/const-generics/generic_const_exprs/infer-too-generic.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-100217.rs b/tests/ui/const-generics/generic_const_exprs/issue-100217.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-100217.rs rename to tests/ui/const-generics/generic_const_exprs/issue-100217.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-100360.rs b/tests/ui/const-generics/generic_const_exprs/issue-100360.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-100360.rs rename to tests/ui/const-generics/generic_const_exprs/issue-100360.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-102074.rs b/tests/ui/const-generics/generic_const_exprs/issue-102074.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-102074.rs rename to tests/ui/const-generics/generic_const_exprs/issue-102074.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-102768.rs b/tests/ui/const-generics/generic_const_exprs/issue-102768.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-102768.rs rename to tests/ui/const-generics/generic_const_exprs/issue-102768.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-102768.stderr b/tests/ui/const-generics/generic_const_exprs/issue-102768.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-102768.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-102768.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-105257.rs b/tests/ui/const-generics/generic_const_exprs/issue-105257.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-105257.rs rename to tests/ui/const-generics/generic_const_exprs/issue-105257.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-105257.stderr b/tests/ui/const-generics/generic_const_exprs/issue-105257.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-105257.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-105257.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-105608.rs b/tests/ui/const-generics/generic_const_exprs/issue-105608.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-105608.rs rename to tests/ui/const-generics/generic_const_exprs/issue-105608.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-105608.stderr b/tests/ui/const-generics/generic_const_exprs/issue-105608.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-105608.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-105608.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-62504.full.stderr b/tests/ui/const-generics/generic_const_exprs/issue-62504.full.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-62504.full.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-62504.full.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-62504.min.stderr b/tests/ui/const-generics/generic_const_exprs/issue-62504.min.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-62504.min.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-62504.min.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-62504.rs b/tests/ui/const-generics/generic_const_exprs/issue-62504.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-62504.rs rename to tests/ui/const-generics/generic_const_exprs/issue-62504.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-69654.rs b/tests/ui/const-generics/generic_const_exprs/issue-69654.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-69654.rs rename to tests/ui/const-generics/generic_const_exprs/issue-69654.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-69654.stderr b/tests/ui/const-generics/generic_const_exprs/issue-69654.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-69654.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-69654.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-72787.min.stderr b/tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-72787.min.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-72787.rs b/tests/ui/const-generics/generic_const_exprs/issue-72787.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-72787.rs rename to tests/ui/const-generics/generic_const_exprs/issue-72787.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.full.stderr b/tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.full.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.full.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.full.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.min.stderr b/tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.min.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.min.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.min.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs b/tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs rename to tests/ui/const-generics/generic_const_exprs/issue-72819-generic-in-const-eval.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-73298.rs b/tests/ui/const-generics/generic_const_exprs/issue-73298.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-73298.rs rename to tests/ui/const-generics/generic_const_exprs/issue-73298.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-73899.rs b/tests/ui/const-generics/generic_const_exprs/issue-73899.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-73899.rs rename to tests/ui/const-generics/generic_const_exprs/issue-73899.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-74634.rs b/tests/ui/const-generics/generic_const_exprs/issue-74634.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-74634.rs rename to tests/ui/const-generics/generic_const_exprs/issue-74634.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-74713.rs b/tests/ui/const-generics/generic_const_exprs/issue-74713.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-74713.rs rename to tests/ui/const-generics/generic_const_exprs/issue-74713.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-74713.stderr b/tests/ui/const-generics/generic_const_exprs/issue-74713.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-74713.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-74713.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-76595.rs b/tests/ui/const-generics/generic_const_exprs/issue-76595.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-76595.rs rename to tests/ui/const-generics/generic_const_exprs/issue-76595.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-76595.stderr b/tests/ui/const-generics/generic_const_exprs/issue-76595.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-76595.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-76595.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs b/tests/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs rename to tests/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.stderr b/tests/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-79518-default_trait_method_normalization.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs b/tests/ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs rename to tests/ui/const-generics/generic_const_exprs/issue-80561-incorrect-param-env.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-80742.rs b/tests/ui/const-generics/generic_const_exprs/issue-80742.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-80742.rs rename to tests/ui/const-generics/generic_const_exprs/issue-80742.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-80742.stderr b/tests/ui/const-generics/generic_const_exprs/issue-80742.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-80742.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-80742.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-82268.rs b/tests/ui/const-generics/generic_const_exprs/issue-82268.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-82268.rs rename to tests/ui/const-generics/generic_const_exprs/issue-82268.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-83765.rs b/tests/ui/const-generics/generic_const_exprs/issue-83765.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-83765.rs rename to tests/ui/const-generics/generic_const_exprs/issue-83765.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-83765.stderr b/tests/ui/const-generics/generic_const_exprs/issue-83765.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-83765.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-83765.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-83972.rs b/tests/ui/const-generics/generic_const_exprs/issue-83972.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-83972.rs rename to tests/ui/const-generics/generic_const_exprs/issue-83972.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-84408.rs b/tests/ui/const-generics/generic_const_exprs/issue-84408.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-84408.rs rename to tests/ui/const-generics/generic_const_exprs/issue-84408.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-84669.rs b/tests/ui/const-generics/generic_const_exprs/issue-84669.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-84669.rs rename to tests/ui/const-generics/generic_const_exprs/issue-84669.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-85848.rs b/tests/ui/const-generics/generic_const_exprs/issue-85848.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-85848.rs rename to tests/ui/const-generics/generic_const_exprs/issue-85848.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-85848.stderr b/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-85848.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-85848.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-86710.rs b/tests/ui/const-generics/generic_const_exprs/issue-86710.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-86710.rs rename to tests/ui/const-generics/generic_const_exprs/issue-86710.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-89851.rs b/tests/ui/const-generics/generic_const_exprs/issue-89851.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-89851.rs rename to tests/ui/const-generics/generic_const_exprs/issue-89851.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-90847.rs b/tests/ui/const-generics/generic_const_exprs/issue-90847.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-90847.rs rename to tests/ui/const-generics/generic_const_exprs/issue-90847.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-94287.rs b/tests/ui/const-generics/generic_const_exprs/issue-94287.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-94287.rs rename to tests/ui/const-generics/generic_const_exprs/issue-94287.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-94287.stderr b/tests/ui/const-generics/generic_const_exprs/issue-94287.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-94287.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-94287.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-94293.rs b/tests/ui/const-generics/generic_const_exprs/issue-94293.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-94293.rs rename to tests/ui/const-generics/generic_const_exprs/issue-94293.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs b/tests/ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs rename to tests/ui/const-generics/generic_const_exprs/issue-97047-ice-1.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-1.stderr b/tests/ui/const-generics/generic_const_exprs/issue-97047-ice-1.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-1.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-97047-ice-1.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs b/tests/ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs rename to tests/ui/const-generics/generic_const_exprs/issue-97047-ice-2.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-2.stderr b/tests/ui/const-generics/generic_const_exprs/issue-97047-ice-2.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-97047-ice-2.stderr rename to tests/ui/const-generics/generic_const_exprs/issue-97047-ice-2.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-99647.rs b/tests/ui/const-generics/generic_const_exprs/issue-99647.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-99647.rs rename to tests/ui/const-generics/generic_const_exprs/issue-99647.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/issue-99705.rs b/tests/ui/const-generics/generic_const_exprs/issue-99705.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/issue-99705.rs rename to tests/ui/const-generics/generic_const_exprs/issue-99705.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/less_than.rs b/tests/ui/const-generics/generic_const_exprs/less_than.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/less_than.rs rename to tests/ui/const-generics/generic_const_exprs/less_than.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/let-bindings.rs b/tests/ui/const-generics/generic_const_exprs/let-bindings.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/let-bindings.rs rename to tests/ui/const-generics/generic_const_exprs/let-bindings.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/let-bindings.stderr b/tests/ui/const-generics/generic_const_exprs/let-bindings.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/let-bindings.stderr rename to tests/ui/const-generics/generic_const_exprs/let-bindings.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/needs_where_clause.rs b/tests/ui/const-generics/generic_const_exprs/needs_where_clause.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/needs_where_clause.rs rename to tests/ui/const-generics/generic_const_exprs/needs_where_clause.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/needs_where_clause.stderr b/tests/ui/const-generics/generic_const_exprs/needs_where_clause.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/needs_where_clause.stderr rename to tests/ui/const-generics/generic_const_exprs/needs_where_clause.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/nested-abstract-consts-1.rs b/tests/ui/const-generics/generic_const_exprs/nested-abstract-consts-1.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/nested-abstract-consts-1.rs rename to tests/ui/const-generics/generic_const_exprs/nested-abstract-consts-1.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/nested-abstract-consts-2.rs b/tests/ui/const-generics/generic_const_exprs/nested-abstract-consts-2.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/nested-abstract-consts-2.rs rename to tests/ui/const-generics/generic_const_exprs/nested-abstract-consts-2.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/nested_uneval_unification-1.rs b/tests/ui/const-generics/generic_const_exprs/nested_uneval_unification-1.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/nested_uneval_unification-1.rs rename to tests/ui/const-generics/generic_const_exprs/nested_uneval_unification-1.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/nested_uneval_unification-2.rs b/tests/ui/const-generics/generic_const_exprs/nested_uneval_unification-2.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/nested_uneval_unification-2.rs rename to tests/ui/const-generics/generic_const_exprs/nested_uneval_unification-2.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/no_dependence.rs b/tests/ui/const-generics/generic_const_exprs/no_dependence.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/no_dependence.rs rename to tests/ui/const-generics/generic_const_exprs/no_dependence.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/no_where_clause.rs b/tests/ui/const-generics/generic_const_exprs/no_where_clause.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/no_where_clause.rs rename to tests/ui/const-generics/generic_const_exprs/no_where_clause.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/no_where_clause.stderr b/tests/ui/const-generics/generic_const_exprs/no_where_clause.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/no_where_clause.stderr rename to tests/ui/const-generics/generic_const_exprs/no_where_clause.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/normed_to_param_is_evaluatable.rs b/tests/ui/const-generics/generic_const_exprs/normed_to_param_is_evaluatable.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/normed_to_param_is_evaluatable.rs rename to tests/ui/const-generics/generic_const_exprs/normed_to_param_is_evaluatable.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-err-ret.rs b/tests/ui/const-generics/generic_const_exprs/object-safety-err-ret.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-err-ret.rs rename to tests/ui/const-generics/generic_const_exprs/object-safety-err-ret.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-err-ret.stderr b/tests/ui/const-generics/generic_const_exprs/object-safety-err-ret.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-err-ret.stderr rename to tests/ui/const-generics/generic_const_exprs/object-safety-err-ret.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.rs b/tests/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.rs rename to tests/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.stderr b/tests/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.stderr rename to tests/ui/const-generics/generic_const_exprs/object-safety-err-where-bounds.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.rs b/tests/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.rs rename to tests/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.stderr b/tests/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.stderr rename to tests/ui/const-generics/generic_const_exprs/object-safety-ok-infer-err.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/object-safety-ok.rs b/tests/ui/const-generics/generic_const_exprs/object-safety-ok.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/object-safety-ok.rs rename to tests/ui/const-generics/generic_const_exprs/object-safety-ok.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/obligation-cause.rs b/tests/ui/const-generics/generic_const_exprs/obligation-cause.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/obligation-cause.rs rename to tests/ui/const-generics/generic_const_exprs/obligation-cause.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/obligation-cause.stderr b/tests/ui/const-generics/generic_const_exprs/obligation-cause.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/obligation-cause.stderr rename to tests/ui/const-generics/generic_const_exprs/obligation-cause.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/simple_fail.rs b/tests/ui/const-generics/generic_const_exprs/simple_fail.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/simple_fail.rs rename to tests/ui/const-generics/generic_const_exprs/simple_fail.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/simple_fail.stderr b/tests/ui/const-generics/generic_const_exprs/simple_fail.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/simple_fail.stderr rename to tests/ui/const-generics/generic_const_exprs/simple_fail.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/subexprs_are_const_evalutable.rs b/tests/ui/const-generics/generic_const_exprs/subexprs_are_const_evalutable.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/subexprs_are_const_evalutable.rs rename to tests/ui/const-generics/generic_const_exprs/subexprs_are_const_evalutable.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/ty-alias-substitution.rs b/tests/ui/const-generics/generic_const_exprs/ty-alias-substitution.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/ty-alias-substitution.rs rename to tests/ui/const-generics/generic_const_exprs/ty-alias-substitution.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.rs b/tests/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.rs rename to tests/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr b/tests/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr rename to tests/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr diff --git a/src/test/ui/const-generics/generic_const_exprs/unop.rs b/tests/ui/const-generics/generic_const_exprs/unop.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unop.rs rename to tests/ui/const-generics/generic_const_exprs/unop.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/unused-complex-default-expr.rs b/tests/ui/const-generics/generic_const_exprs/unused-complex-default-expr.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unused-complex-default-expr.rs rename to tests/ui/const-generics/generic_const_exprs/unused-complex-default-expr.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/unused_expr.rs b/tests/ui/const-generics/generic_const_exprs/unused_expr.rs similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unused_expr.rs rename to tests/ui/const-generics/generic_const_exprs/unused_expr.rs diff --git a/src/test/ui/const-generics/generic_const_exprs/unused_expr.stderr b/tests/ui/const-generics/generic_const_exprs/unused_expr.stderr similarity index 100% rename from src/test/ui/const-generics/generic_const_exprs/unused_expr.stderr rename to tests/ui/const-generics/generic_const_exprs/unused_expr.stderr diff --git a/src/test/ui/const-generics/ice-68875.rs b/tests/ui/const-generics/ice-68875.rs similarity index 100% rename from src/test/ui/const-generics/ice-68875.rs rename to tests/ui/const-generics/ice-68875.rs diff --git a/src/test/ui/const-generics/ice-68875.stderr b/tests/ui/const-generics/ice-68875.stderr similarity index 100% rename from src/test/ui/const-generics/ice-68875.stderr rename to tests/ui/const-generics/ice-68875.stderr diff --git a/src/test/ui/const-generics/ice-const-generic-function-return-ty.rs b/tests/ui/const-generics/ice-const-generic-function-return-ty.rs similarity index 100% rename from src/test/ui/const-generics/ice-const-generic-function-return-ty.rs rename to tests/ui/const-generics/ice-const-generic-function-return-ty.rs diff --git a/src/test/ui/const-generics/ice-const-generic-function-return-ty.stderr b/tests/ui/const-generics/ice-const-generic-function-return-ty.stderr similarity index 100% rename from src/test/ui/const-generics/ice-const-generic-function-return-ty.stderr rename to tests/ui/const-generics/ice-const-generic-function-return-ty.stderr diff --git a/src/test/ui/const-generics/impl-const-generic-struct.rs b/tests/ui/const-generics/impl-const-generic-struct.rs similarity index 100% rename from src/test/ui/const-generics/impl-const-generic-struct.rs rename to tests/ui/const-generics/impl-const-generic-struct.rs diff --git a/src/test/ui/const-generics/incorrect-number-of-const-args.rs b/tests/ui/const-generics/incorrect-number-of-const-args.rs similarity index 100% rename from src/test/ui/const-generics/incorrect-number-of-const-args.rs rename to tests/ui/const-generics/incorrect-number-of-const-args.rs diff --git a/src/test/ui/const-generics/incorrect-number-of-const-args.stderr b/tests/ui/const-generics/incorrect-number-of-const-args.stderr similarity index 100% rename from src/test/ui/const-generics/incorrect-number-of-const-args.stderr rename to tests/ui/const-generics/incorrect-number-of-const-args.stderr diff --git a/src/test/ui/const-generics/infer/cannot-infer-const-args.rs b/tests/ui/const-generics/infer/cannot-infer-const-args.rs similarity index 100% rename from src/test/ui/const-generics/infer/cannot-infer-const-args.rs rename to tests/ui/const-generics/infer/cannot-infer-const-args.rs diff --git a/src/test/ui/const-generics/infer/cannot-infer-const-args.stderr b/tests/ui/const-generics/infer/cannot-infer-const-args.stderr similarity index 100% rename from src/test/ui/const-generics/infer/cannot-infer-const-args.stderr rename to tests/ui/const-generics/infer/cannot-infer-const-args.stderr diff --git a/src/test/ui/const-generics/infer/issue-77092.rs b/tests/ui/const-generics/infer/issue-77092.rs similarity index 100% rename from src/test/ui/const-generics/infer/issue-77092.rs rename to tests/ui/const-generics/infer/issue-77092.rs diff --git a/src/test/ui/const-generics/infer/issue-77092.stderr b/tests/ui/const-generics/infer/issue-77092.stderr similarity index 100% rename from src/test/ui/const-generics/infer/issue-77092.stderr rename to tests/ui/const-generics/infer/issue-77092.stderr diff --git a/src/test/ui/const-generics/infer/method-chain.rs b/tests/ui/const-generics/infer/method-chain.rs similarity index 100% rename from src/test/ui/const-generics/infer/method-chain.rs rename to tests/ui/const-generics/infer/method-chain.rs diff --git a/src/test/ui/const-generics/infer/method-chain.stderr b/tests/ui/const-generics/infer/method-chain.stderr similarity index 100% rename from src/test/ui/const-generics/infer/method-chain.stderr rename to tests/ui/const-generics/infer/method-chain.stderr diff --git a/src/test/ui/const-generics/infer/one-param-uninferred.rs b/tests/ui/const-generics/infer/one-param-uninferred.rs similarity index 100% rename from src/test/ui/const-generics/infer/one-param-uninferred.rs rename to tests/ui/const-generics/infer/one-param-uninferred.rs diff --git a/src/test/ui/const-generics/infer/one-param-uninferred.stderr b/tests/ui/const-generics/infer/one-param-uninferred.stderr similarity index 100% rename from src/test/ui/const-generics/infer/one-param-uninferred.stderr rename to tests/ui/const-generics/infer/one-param-uninferred.stderr diff --git a/src/test/ui/const-generics/infer/uninferred-consts.rs b/tests/ui/const-generics/infer/uninferred-consts.rs similarity index 100% rename from src/test/ui/const-generics/infer/uninferred-consts.rs rename to tests/ui/const-generics/infer/uninferred-consts.rs diff --git a/src/test/ui/const-generics/infer/uninferred-consts.stderr b/tests/ui/const-generics/infer/uninferred-consts.stderr similarity index 100% rename from src/test/ui/const-generics/infer/uninferred-consts.stderr rename to tests/ui/const-generics/infer/uninferred-consts.stderr diff --git a/src/test/ui/const-generics/infer_arg_from_pat.rs b/tests/ui/const-generics/infer_arg_from_pat.rs similarity index 100% rename from src/test/ui/const-generics/infer_arg_from_pat.rs rename to tests/ui/const-generics/infer_arg_from_pat.rs diff --git a/src/test/ui/const-generics/infer_arr_len_from_pat.rs b/tests/ui/const-generics/infer_arr_len_from_pat.rs similarity index 100% rename from src/test/ui/const-generics/infer_arr_len_from_pat.rs rename to tests/ui/const-generics/infer_arr_len_from_pat.rs diff --git a/src/test/ui/const-generics/inhabited-assoc-ty-ice-1.rs b/tests/ui/const-generics/inhabited-assoc-ty-ice-1.rs similarity index 100% rename from src/test/ui/const-generics/inhabited-assoc-ty-ice-1.rs rename to tests/ui/const-generics/inhabited-assoc-ty-ice-1.rs diff --git a/src/test/ui/const-generics/inhabited-assoc-ty-ice-2.rs b/tests/ui/const-generics/inhabited-assoc-ty-ice-2.rs similarity index 100% rename from src/test/ui/const-generics/inhabited-assoc-ty-ice-2.rs rename to tests/ui/const-generics/inhabited-assoc-ty-ice-2.rs diff --git a/src/test/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs b/tests/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs similarity index 100% rename from src/test/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs rename to tests/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs diff --git a/src/test/ui/const-generics/intrinsics-type_name-as-const-argument.min.stderr b/tests/ui/const-generics/intrinsics-type_name-as-const-argument.min.stderr similarity index 100% rename from src/test/ui/const-generics/intrinsics-type_name-as-const-argument.min.stderr rename to tests/ui/const-generics/intrinsics-type_name-as-const-argument.min.stderr diff --git a/src/test/ui/const-generics/intrinsics-type_name-as-const-argument.rs b/tests/ui/const-generics/intrinsics-type_name-as-const-argument.rs similarity index 100% rename from src/test/ui/const-generics/intrinsics-type_name-as-const-argument.rs rename to tests/ui/const-generics/intrinsics-type_name-as-const-argument.rs diff --git a/src/test/ui/const-generics/invalid-const-arg-for-type-param.rs b/tests/ui/const-generics/invalid-const-arg-for-type-param.rs similarity index 100% rename from src/test/ui/const-generics/invalid-const-arg-for-type-param.rs rename to tests/ui/const-generics/invalid-const-arg-for-type-param.rs diff --git a/src/test/ui/const-generics/invalid-const-arg-for-type-param.stderr b/tests/ui/const-generics/invalid-const-arg-for-type-param.stderr similarity index 100% rename from src/test/ui/const-generics/invalid-const-arg-for-type-param.stderr rename to tests/ui/const-generics/invalid-const-arg-for-type-param.stderr diff --git a/src/test/ui/const-generics/invalid-constant-in-args.rs b/tests/ui/const-generics/invalid-constant-in-args.rs similarity index 100% rename from src/test/ui/const-generics/invalid-constant-in-args.rs rename to tests/ui/const-generics/invalid-constant-in-args.rs diff --git a/src/test/ui/const-generics/invalid-constant-in-args.stderr b/tests/ui/const-generics/invalid-constant-in-args.stderr similarity index 100% rename from src/test/ui/const-generics/invalid-constant-in-args.stderr rename to tests/ui/const-generics/invalid-constant-in-args.stderr diff --git a/src/test/ui/const-generics/invalid-enum.rs b/tests/ui/const-generics/invalid-enum.rs similarity index 100% rename from src/test/ui/const-generics/invalid-enum.rs rename to tests/ui/const-generics/invalid-enum.rs diff --git a/src/test/ui/const-generics/invalid-enum.stderr b/tests/ui/const-generics/invalid-enum.stderr similarity index 100% rename from src/test/ui/const-generics/invalid-enum.stderr rename to tests/ui/const-generics/invalid-enum.stderr diff --git a/src/test/ui/const-generics/invariant.rs b/tests/ui/const-generics/invariant.rs similarity index 100% rename from src/test/ui/const-generics/invariant.rs rename to tests/ui/const-generics/invariant.rs diff --git a/src/test/ui/const-generics/invariant.stderr b/tests/ui/const-generics/invariant.stderr similarity index 100% rename from src/test/ui/const-generics/invariant.stderr rename to tests/ui/const-generics/invariant.stderr diff --git a/src/test/ui/const-generics/issue-102124.rs b/tests/ui/const-generics/issue-102124.rs similarity index 100% rename from src/test/ui/const-generics/issue-102124.rs rename to tests/ui/const-generics/issue-102124.rs diff --git a/src/test/ui/const-generics/issue-105689.rs b/tests/ui/const-generics/issue-105689.rs similarity index 100% rename from src/test/ui/const-generics/issue-105689.rs rename to tests/ui/const-generics/issue-105689.rs diff --git a/src/test/ui/const-generics/issue-46511.rs b/tests/ui/const-generics/issue-46511.rs similarity index 100% rename from src/test/ui/const-generics/issue-46511.rs rename to tests/ui/const-generics/issue-46511.rs diff --git a/src/test/ui/const-generics/issue-46511.stderr b/tests/ui/const-generics/issue-46511.stderr similarity index 100% rename from src/test/ui/const-generics/issue-46511.stderr rename to tests/ui/const-generics/issue-46511.stderr diff --git a/src/test/ui/const-generics/issue-66451.rs b/tests/ui/const-generics/issue-66451.rs similarity index 100% rename from src/test/ui/const-generics/issue-66451.rs rename to tests/ui/const-generics/issue-66451.rs diff --git a/src/test/ui/const-generics/issue-66451.stderr b/tests/ui/const-generics/issue-66451.stderr similarity index 100% rename from src/test/ui/const-generics/issue-66451.stderr rename to tests/ui/const-generics/issue-66451.stderr diff --git a/src/test/ui/const-generics/issue-70408.rs b/tests/ui/const-generics/issue-70408.rs similarity index 100% rename from src/test/ui/const-generics/issue-70408.rs rename to tests/ui/const-generics/issue-70408.rs diff --git a/src/test/ui/const-generics/issue-80471.rs b/tests/ui/const-generics/issue-80471.rs similarity index 100% rename from src/test/ui/const-generics/issue-80471.rs rename to tests/ui/const-generics/issue-80471.rs diff --git a/src/test/ui/const-generics/issue-80471.stderr b/tests/ui/const-generics/issue-80471.stderr similarity index 100% rename from src/test/ui/const-generics/issue-80471.stderr rename to tests/ui/const-generics/issue-80471.stderr diff --git a/src/test/ui/const-generics/issue-93647.rs b/tests/ui/const-generics/issue-93647.rs similarity index 100% rename from src/test/ui/const-generics/issue-93647.rs rename to tests/ui/const-generics/issue-93647.rs diff --git a/src/test/ui/const-generics/issue-93647.stderr b/tests/ui/const-generics/issue-93647.stderr similarity index 100% rename from src/test/ui/const-generics/issue-93647.stderr rename to tests/ui/const-generics/issue-93647.stderr diff --git a/src/test/ui/const-generics/issue-97007.rs b/tests/ui/const-generics/issue-97007.rs similarity index 100% rename from src/test/ui/const-generics/issue-97007.rs rename to tests/ui/const-generics/issue-97007.rs diff --git a/src/test/ui/const-generics/issues/auxiliary/const_generic_issues_lib.rs b/tests/ui/const-generics/issues/auxiliary/const_generic_issues_lib.rs similarity index 100% rename from src/test/ui/const-generics/issues/auxiliary/const_generic_issues_lib.rs rename to tests/ui/const-generics/issues/auxiliary/const_generic_issues_lib.rs diff --git a/src/test/ui/const-generics/issues/auxiliary/impl-const.rs b/tests/ui/const-generics/issues/auxiliary/impl-const.rs similarity index 100% rename from src/test/ui/const-generics/issues/auxiliary/impl-const.rs rename to tests/ui/const-generics/issues/auxiliary/impl-const.rs diff --git a/src/test/ui/const-generics/issues/issue-100313.rs b/tests/ui/const-generics/issues/issue-100313.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-100313.rs rename to tests/ui/const-generics/issues/issue-100313.rs diff --git a/src/test/ui/const-generics/issues/issue-100313.stderr b/tests/ui/const-generics/issues/issue-100313.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-100313.stderr rename to tests/ui/const-generics/issues/issue-100313.stderr diff --git a/src/test/ui/const-generics/issues/issue-105037.rs b/tests/ui/const-generics/issues/issue-105037.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-105037.rs rename to tests/ui/const-generics/issues/issue-105037.rs diff --git a/src/test/ui/const-generics/issues/issue-56445-1.full.stderr b/tests/ui/const-generics/issues/issue-56445-1.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-1.full.stderr rename to tests/ui/const-generics/issues/issue-56445-1.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-56445-1.min.stderr b/tests/ui/const-generics/issues/issue-56445-1.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-1.min.stderr rename to tests/ui/const-generics/issues/issue-56445-1.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-56445-1.rs b/tests/ui/const-generics/issues/issue-56445-1.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-1.rs rename to tests/ui/const-generics/issues/issue-56445-1.rs diff --git a/src/test/ui/const-generics/issues/issue-56445-2.rs b/tests/ui/const-generics/issues/issue-56445-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-2.rs rename to tests/ui/const-generics/issues/issue-56445-2.rs diff --git a/src/test/ui/const-generics/issues/issue-56445-2.stderr b/tests/ui/const-generics/issues/issue-56445-2.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-2.stderr rename to tests/ui/const-generics/issues/issue-56445-2.stderr diff --git a/src/test/ui/const-generics/issues/issue-56445-3.rs b/tests/ui/const-generics/issues/issue-56445-3.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-3.rs rename to tests/ui/const-generics/issues/issue-56445-3.rs diff --git a/src/test/ui/const-generics/issues/issue-56445-3.stderr b/tests/ui/const-generics/issues/issue-56445-3.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-56445-3.stderr rename to tests/ui/const-generics/issues/issue-56445-3.stderr diff --git a/src/test/ui/const-generics/issues/issue-60818-struct-constructors.rs b/tests/ui/const-generics/issues/issue-60818-struct-constructors.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-60818-struct-constructors.rs rename to tests/ui/const-generics/issues/issue-60818-struct-constructors.rs diff --git a/src/test/ui/const-generics/issues/issue-61336-1.rs b/tests/ui/const-generics/issues/issue-61336-1.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-61336-1.rs rename to tests/ui/const-generics/issues/issue-61336-1.rs diff --git a/src/test/ui/const-generics/issues/issue-61336-2.rs b/tests/ui/const-generics/issues/issue-61336-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-61336-2.rs rename to tests/ui/const-generics/issues/issue-61336-2.rs diff --git a/src/test/ui/const-generics/issues/issue-61336-2.stderr b/tests/ui/const-generics/issues/issue-61336-2.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-61336-2.stderr rename to tests/ui/const-generics/issues/issue-61336-2.stderr diff --git a/src/test/ui/const-generics/issues/issue-61336.rs b/tests/ui/const-generics/issues/issue-61336.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-61336.rs rename to tests/ui/const-generics/issues/issue-61336.rs diff --git a/src/test/ui/const-generics/issues/issue-61336.stderr b/tests/ui/const-generics/issues/issue-61336.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-61336.stderr rename to tests/ui/const-generics/issues/issue-61336.stderr diff --git a/src/test/ui/const-generics/issues/issue-61422.rs b/tests/ui/const-generics/issues/issue-61422.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-61422.rs rename to tests/ui/const-generics/issues/issue-61422.rs diff --git a/src/test/ui/const-generics/issues/issue-61432.rs b/tests/ui/const-generics/issues/issue-61432.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-61432.rs rename to tests/ui/const-generics/issues/issue-61432.rs diff --git a/src/test/ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs b/tests/ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs rename to tests/ui/const-generics/issues/issue-62187-encountered-polymorphic-const.rs diff --git a/src/test/ui/const-generics/issues/issue-62878.full.stderr b/tests/ui/const-generics/issues/issue-62878.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-62878.full.stderr rename to tests/ui/const-generics/issues/issue-62878.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-62878.min.stderr b/tests/ui/const-generics/issues/issue-62878.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-62878.min.stderr rename to tests/ui/const-generics/issues/issue-62878.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-62878.rs b/tests/ui/const-generics/issues/issue-62878.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-62878.rs rename to tests/ui/const-generics/issues/issue-62878.rs diff --git a/src/test/ui/const-generics/issues/issue-63322-forbid-dyn.full.stderr b/tests/ui/const-generics/issues/issue-63322-forbid-dyn.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-63322-forbid-dyn.full.stderr rename to tests/ui/const-generics/issues/issue-63322-forbid-dyn.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-63322-forbid-dyn.min.stderr b/tests/ui/const-generics/issues/issue-63322-forbid-dyn.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-63322-forbid-dyn.min.stderr rename to tests/ui/const-generics/issues/issue-63322-forbid-dyn.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-63322-forbid-dyn.rs b/tests/ui/const-generics/issues/issue-63322-forbid-dyn.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-63322-forbid-dyn.rs rename to tests/ui/const-generics/issues/issue-63322-forbid-dyn.rs diff --git a/src/test/ui/const-generics/issues/issue-64519.rs b/tests/ui/const-generics/issues/issue-64519.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-64519.rs rename to tests/ui/const-generics/issues/issue-64519.rs diff --git a/src/test/ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs b/tests/ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs rename to tests/ui/const-generics/issues/issue-66596-impl-trait-for-str-const-arg.rs diff --git a/src/test/ui/const-generics/issues/issue-66906.rs b/tests/ui/const-generics/issues/issue-66906.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-66906.rs rename to tests/ui/const-generics/issues/issue-66906.rs diff --git a/src/test/ui/const-generics/issues/issue-67185-1.rs b/tests/ui/const-generics/issues/issue-67185-1.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67185-1.rs rename to tests/ui/const-generics/issues/issue-67185-1.rs diff --git a/src/test/ui/const-generics/issues/issue-67185-2.rs b/tests/ui/const-generics/issues/issue-67185-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67185-2.rs rename to tests/ui/const-generics/issues/issue-67185-2.rs diff --git a/src/test/ui/const-generics/issues/issue-67185-2.stderr b/tests/ui/const-generics/issues/issue-67185-2.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67185-2.stderr rename to tests/ui/const-generics/issues/issue-67185-2.stderr diff --git a/src/test/ui/const-generics/issues/issue-67375.full.stderr b/tests/ui/const-generics/issues/issue-67375.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67375.full.stderr rename to tests/ui/const-generics/issues/issue-67375.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67375.min.stderr b/tests/ui/const-generics/issues/issue-67375.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67375.min.stderr rename to tests/ui/const-generics/issues/issue-67375.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67375.rs b/tests/ui/const-generics/issues/issue-67375.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67375.rs rename to tests/ui/const-generics/issues/issue-67375.rs diff --git a/src/test/ui/const-generics/issues/issue-67739.full.stderr b/tests/ui/const-generics/issues/issue-67739.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67739.full.stderr rename to tests/ui/const-generics/issues/issue-67739.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67739.min.stderr b/tests/ui/const-generics/issues/issue-67739.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67739.min.stderr rename to tests/ui/const-generics/issues/issue-67739.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67739.rs b/tests/ui/const-generics/issues/issue-67739.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67739.rs rename to tests/ui/const-generics/issues/issue-67739.rs diff --git a/src/test/ui/const-generics/issues/issue-67945-1.full.stderr b/tests/ui/const-generics/issues/issue-67945-1.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-1.full.stderr rename to tests/ui/const-generics/issues/issue-67945-1.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-1.min.stderr b/tests/ui/const-generics/issues/issue-67945-1.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-1.min.stderr rename to tests/ui/const-generics/issues/issue-67945-1.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-1.rs b/tests/ui/const-generics/issues/issue-67945-1.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-1.rs rename to tests/ui/const-generics/issues/issue-67945-1.rs diff --git a/src/test/ui/const-generics/issues/issue-67945-2.full.stderr b/tests/ui/const-generics/issues/issue-67945-2.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-2.full.stderr rename to tests/ui/const-generics/issues/issue-67945-2.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-2.min.stderr b/tests/ui/const-generics/issues/issue-67945-2.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-2.min.stderr rename to tests/ui/const-generics/issues/issue-67945-2.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-2.rs b/tests/ui/const-generics/issues/issue-67945-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-2.rs rename to tests/ui/const-generics/issues/issue-67945-2.rs diff --git a/src/test/ui/const-generics/issues/issue-67945-3.full.stderr b/tests/ui/const-generics/issues/issue-67945-3.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-3.full.stderr rename to tests/ui/const-generics/issues/issue-67945-3.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-3.min.stderr b/tests/ui/const-generics/issues/issue-67945-3.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-3.min.stderr rename to tests/ui/const-generics/issues/issue-67945-3.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-3.rs b/tests/ui/const-generics/issues/issue-67945-3.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-3.rs rename to tests/ui/const-generics/issues/issue-67945-3.rs diff --git a/src/test/ui/const-generics/issues/issue-67945-4.full.stderr b/tests/ui/const-generics/issues/issue-67945-4.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-4.full.stderr rename to tests/ui/const-generics/issues/issue-67945-4.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-4.min.stderr b/tests/ui/const-generics/issues/issue-67945-4.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-4.min.stderr rename to tests/ui/const-generics/issues/issue-67945-4.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-67945-4.rs b/tests/ui/const-generics/issues/issue-67945-4.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-67945-4.rs rename to tests/ui/const-generics/issues/issue-67945-4.rs diff --git a/src/test/ui/const-generics/issues/issue-68104-print-stack-overflow.rs b/tests/ui/const-generics/issues/issue-68104-print-stack-overflow.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-68104-print-stack-overflow.rs rename to tests/ui/const-generics/issues/issue-68104-print-stack-overflow.rs diff --git a/src/test/ui/const-generics/issues/issue-68366.full.stderr b/tests/ui/const-generics/issues/issue-68366.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-68366.full.stderr rename to tests/ui/const-generics/issues/issue-68366.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-68366.min.stderr b/tests/ui/const-generics/issues/issue-68366.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-68366.min.stderr rename to tests/ui/const-generics/issues/issue-68366.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-68366.rs b/tests/ui/const-generics/issues/issue-68366.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-68366.rs rename to tests/ui/const-generics/issues/issue-68366.rs diff --git a/src/test/ui/const-generics/issues/issue-68596.rs b/tests/ui/const-generics/issues/issue-68596.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-68596.rs rename to tests/ui/const-generics/issues/issue-68596.rs diff --git a/src/test/ui/const-generics/issues/issue-68615-adt.min.stderr b/tests/ui/const-generics/issues/issue-68615-adt.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-68615-adt.min.stderr rename to tests/ui/const-generics/issues/issue-68615-adt.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-68615-adt.rs b/tests/ui/const-generics/issues/issue-68615-adt.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-68615-adt.rs rename to tests/ui/const-generics/issues/issue-68615-adt.rs diff --git a/src/test/ui/const-generics/issues/issue-68615-array.min.stderr b/tests/ui/const-generics/issues/issue-68615-array.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-68615-array.min.stderr rename to tests/ui/const-generics/issues/issue-68615-array.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-68615-array.rs b/tests/ui/const-generics/issues/issue-68615-array.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-68615-array.rs rename to tests/ui/const-generics/issues/issue-68615-array.rs diff --git a/src/test/ui/const-generics/issues/issue-69654-run-pass.rs b/tests/ui/const-generics/issues/issue-69654-run-pass.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-69654-run-pass.rs rename to tests/ui/const-generics/issues/issue-69654-run-pass.rs diff --git a/src/test/ui/const-generics/issues/issue-70125-1.rs b/tests/ui/const-generics/issues/issue-70125-1.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70125-1.rs rename to tests/ui/const-generics/issues/issue-70125-1.rs diff --git a/src/test/ui/const-generics/issues/issue-70125-2.rs b/tests/ui/const-generics/issues/issue-70125-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70125-2.rs rename to tests/ui/const-generics/issues/issue-70125-2.rs diff --git a/src/test/ui/const-generics/issues/issue-70167.rs b/tests/ui/const-generics/issues/issue-70167.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70167.rs rename to tests/ui/const-generics/issues/issue-70167.rs diff --git a/src/test/ui/const-generics/issues/issue-70180-1-stalled_on.rs b/tests/ui/const-generics/issues/issue-70180-1-stalled_on.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70180-1-stalled_on.rs rename to tests/ui/const-generics/issues/issue-70180-1-stalled_on.rs diff --git a/src/test/ui/const-generics/issues/issue-70180-2-stalled_on.rs b/tests/ui/const-generics/issues/issue-70180-2-stalled_on.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70180-2-stalled_on.rs rename to tests/ui/const-generics/issues/issue-70180-2-stalled_on.rs diff --git a/src/test/ui/const-generics/issues/issue-70225.rs b/tests/ui/const-generics/issues/issue-70225.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70225.rs rename to tests/ui/const-generics/issues/issue-70225.rs diff --git a/src/test/ui/const-generics/issues/issue-70273-assoc-fn.rs b/tests/ui/const-generics/issues/issue-70273-assoc-fn.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-70273-assoc-fn.rs rename to tests/ui/const-generics/issues/issue-70273-assoc-fn.rs diff --git a/src/test/ui/const-generics/issues/issue-71169.full.stderr b/tests/ui/const-generics/issues/issue-71169.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71169.full.stderr rename to tests/ui/const-generics/issues/issue-71169.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-71169.min.stderr b/tests/ui/const-generics/issues/issue-71169.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71169.min.stderr rename to tests/ui/const-generics/issues/issue-71169.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-71169.rs b/tests/ui/const-generics/issues/issue-71169.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71169.rs rename to tests/ui/const-generics/issues/issue-71169.rs diff --git a/src/test/ui/const-generics/issues/issue-71202.rs b/tests/ui/const-generics/issues/issue-71202.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71202.rs rename to tests/ui/const-generics/issues/issue-71202.rs diff --git a/src/test/ui/const-generics/issues/issue-71202.stderr b/tests/ui/const-generics/issues/issue-71202.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71202.stderr rename to tests/ui/const-generics/issues/issue-71202.stderr diff --git a/src/test/ui/const-generics/issues/issue-71381.full.stderr b/tests/ui/const-generics/issues/issue-71381.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71381.full.stderr rename to tests/ui/const-generics/issues/issue-71381.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-71381.min.stderr b/tests/ui/const-generics/issues/issue-71381.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71381.min.stderr rename to tests/ui/const-generics/issues/issue-71381.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-71381.rs b/tests/ui/const-generics/issues/issue-71381.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71381.rs rename to tests/ui/const-generics/issues/issue-71381.rs diff --git a/src/test/ui/const-generics/issues/issue-71382.full.stderr b/tests/ui/const-generics/issues/issue-71382.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71382.full.stderr rename to tests/ui/const-generics/issues/issue-71382.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-71382.min.stderr b/tests/ui/const-generics/issues/issue-71382.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71382.min.stderr rename to tests/ui/const-generics/issues/issue-71382.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-71382.rs b/tests/ui/const-generics/issues/issue-71382.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71382.rs rename to tests/ui/const-generics/issues/issue-71382.rs diff --git a/src/test/ui/const-generics/issues/issue-71547.rs b/tests/ui/const-generics/issues/issue-71547.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71547.rs rename to tests/ui/const-generics/issues/issue-71547.rs diff --git a/src/test/ui/const-generics/issues/issue-71611.full.stderr b/tests/ui/const-generics/issues/issue-71611.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71611.full.stderr rename to tests/ui/const-generics/issues/issue-71611.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-71611.min.stderr b/tests/ui/const-generics/issues/issue-71611.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-71611.min.stderr rename to tests/ui/const-generics/issues/issue-71611.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-71611.rs b/tests/ui/const-generics/issues/issue-71611.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71611.rs rename to tests/ui/const-generics/issues/issue-71611.rs diff --git a/src/test/ui/const-generics/issues/issue-71986.rs b/tests/ui/const-generics/issues/issue-71986.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-71986.rs rename to tests/ui/const-generics/issues/issue-71986.rs diff --git a/src/test/ui/const-generics/issues/issue-72352.full.stderr b/tests/ui/const-generics/issues/issue-72352.full.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-72352.full.stderr rename to tests/ui/const-generics/issues/issue-72352.full.stderr diff --git a/src/test/ui/const-generics/issues/issue-72352.min.stderr b/tests/ui/const-generics/issues/issue-72352.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-72352.min.stderr rename to tests/ui/const-generics/issues/issue-72352.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-72352.rs b/tests/ui/const-generics/issues/issue-72352.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-72352.rs rename to tests/ui/const-generics/issues/issue-72352.rs diff --git a/src/test/ui/const-generics/issues/issue-72845.rs b/tests/ui/const-generics/issues/issue-72845.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-72845.rs rename to tests/ui/const-generics/issues/issue-72845.rs diff --git a/src/test/ui/const-generics/issues/issue-72845.stderr b/tests/ui/const-generics/issues/issue-72845.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-72845.stderr rename to tests/ui/const-generics/issues/issue-72845.stderr diff --git a/src/test/ui/const-generics/issues/issue-73120.rs b/tests/ui/const-generics/issues/issue-73120.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-73120.rs rename to tests/ui/const-generics/issues/issue-73120.rs diff --git a/src/test/ui/const-generics/issues/issue-73260.rs b/tests/ui/const-generics/issues/issue-73260.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-73260.rs rename to tests/ui/const-generics/issues/issue-73260.rs diff --git a/src/test/ui/const-generics/issues/issue-73260.stderr b/tests/ui/const-generics/issues/issue-73260.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-73260.stderr rename to tests/ui/const-generics/issues/issue-73260.stderr diff --git a/src/test/ui/const-generics/issues/issue-73491.min.stderr b/tests/ui/const-generics/issues/issue-73491.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-73491.min.stderr rename to tests/ui/const-generics/issues/issue-73491.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-73491.rs b/tests/ui/const-generics/issues/issue-73491.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-73491.rs rename to tests/ui/const-generics/issues/issue-73491.rs diff --git a/src/test/ui/const-generics/issues/issue-73727-static-reference-array-const-param.min.stderr b/tests/ui/const-generics/issues/issue-73727-static-reference-array-const-param.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-73727-static-reference-array-const-param.min.stderr rename to tests/ui/const-generics/issues/issue-73727-static-reference-array-const-param.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs b/tests/ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs rename to tests/ui/const-generics/issues/issue-73727-static-reference-array-const-param.rs diff --git a/src/test/ui/const-generics/issues/issue-74101.min.stderr b/tests/ui/const-generics/issues/issue-74101.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-74101.min.stderr rename to tests/ui/const-generics/issues/issue-74101.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-74101.rs b/tests/ui/const-generics/issues/issue-74101.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-74101.rs rename to tests/ui/const-generics/issues/issue-74101.rs diff --git a/src/test/ui/const-generics/issues/issue-74255.min.stderr b/tests/ui/const-generics/issues/issue-74255.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-74255.min.stderr rename to tests/ui/const-generics/issues/issue-74255.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-74255.rs b/tests/ui/const-generics/issues/issue-74255.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-74255.rs rename to tests/ui/const-generics/issues/issue-74255.rs diff --git a/src/test/ui/const-generics/issues/issue-74906.rs b/tests/ui/const-generics/issues/issue-74906.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-74906.rs rename to tests/ui/const-generics/issues/issue-74906.rs diff --git a/src/test/ui/const-generics/issues/issue-74950.min.stderr b/tests/ui/const-generics/issues/issue-74950.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-74950.min.stderr rename to tests/ui/const-generics/issues/issue-74950.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-74950.rs b/tests/ui/const-generics/issues/issue-74950.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-74950.rs rename to tests/ui/const-generics/issues/issue-74950.rs diff --git a/src/test/ui/const-generics/issues/issue-75047.min.stderr b/tests/ui/const-generics/issues/issue-75047.min.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-75047.min.stderr rename to tests/ui/const-generics/issues/issue-75047.min.stderr diff --git a/src/test/ui/const-generics/issues/issue-75047.rs b/tests/ui/const-generics/issues/issue-75047.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-75047.rs rename to tests/ui/const-generics/issues/issue-75047.rs diff --git a/src/test/ui/const-generics/issues/issue-75299.rs b/tests/ui/const-generics/issues/issue-75299.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-75299.rs rename to tests/ui/const-generics/issues/issue-75299.rs diff --git a/src/test/ui/const-generics/issues/issue-76701-ty-param-in-const.rs b/tests/ui/const-generics/issues/issue-76701-ty-param-in-const.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-76701-ty-param-in-const.rs rename to tests/ui/const-generics/issues/issue-76701-ty-param-in-const.rs diff --git a/src/test/ui/const-generics/issues/issue-76701-ty-param-in-const.stderr b/tests/ui/const-generics/issues/issue-76701-ty-param-in-const.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-76701-ty-param-in-const.stderr rename to tests/ui/const-generics/issues/issue-76701-ty-param-in-const.stderr diff --git a/src/test/ui/const-generics/issues/issue-77357.rs b/tests/ui/const-generics/issues/issue-77357.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-77357.rs rename to tests/ui/const-generics/issues/issue-77357.rs diff --git a/src/test/ui/const-generics/issues/issue-77357.stderr b/tests/ui/const-generics/issues/issue-77357.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-77357.stderr rename to tests/ui/const-generics/issues/issue-77357.stderr diff --git a/src/test/ui/const-generics/issues/issue-79674.rs b/tests/ui/const-generics/issues/issue-79674.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-79674.rs rename to tests/ui/const-generics/issues/issue-79674.rs diff --git a/src/test/ui/const-generics/issues/issue-79674.stderr b/tests/ui/const-generics/issues/issue-79674.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-79674.stderr rename to tests/ui/const-generics/issues/issue-79674.stderr diff --git a/src/test/ui/const-generics/issues/issue-80062.rs b/tests/ui/const-generics/issues/issue-80062.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-80062.rs rename to tests/ui/const-generics/issues/issue-80062.rs diff --git a/src/test/ui/const-generics/issues/issue-80062.stderr b/tests/ui/const-generics/issues/issue-80062.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-80062.stderr rename to tests/ui/const-generics/issues/issue-80062.stderr diff --git a/src/test/ui/const-generics/issues/issue-80375.rs b/tests/ui/const-generics/issues/issue-80375.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-80375.rs rename to tests/ui/const-generics/issues/issue-80375.rs diff --git a/src/test/ui/const-generics/issues/issue-80375.stderr b/tests/ui/const-generics/issues/issue-80375.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-80375.stderr rename to tests/ui/const-generics/issues/issue-80375.stderr diff --git a/src/test/ui/const-generics/issues/issue-82956.rs b/tests/ui/const-generics/issues/issue-82956.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-82956.rs rename to tests/ui/const-generics/issues/issue-82956.rs diff --git a/src/test/ui/const-generics/issues/issue-82956.stderr b/tests/ui/const-generics/issues/issue-82956.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-82956.stderr rename to tests/ui/const-generics/issues/issue-82956.stderr diff --git a/src/test/ui/const-generics/issues/issue-83249.rs b/tests/ui/const-generics/issues/issue-83249.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-83249.rs rename to tests/ui/const-generics/issues/issue-83249.rs diff --git a/src/test/ui/const-generics/issues/issue-83249.stderr b/tests/ui/const-generics/issues/issue-83249.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-83249.stderr rename to tests/ui/const-generics/issues/issue-83249.stderr diff --git a/src/test/ui/const-generics/issues/issue-83288.rs b/tests/ui/const-generics/issues/issue-83288.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-83288.rs rename to tests/ui/const-generics/issues/issue-83288.rs diff --git a/src/test/ui/const-generics/issues/issue-83466.rs b/tests/ui/const-generics/issues/issue-83466.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-83466.rs rename to tests/ui/const-generics/issues/issue-83466.rs diff --git a/src/test/ui/const-generics/issues/issue-83466.stderr b/tests/ui/const-generics/issues/issue-83466.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-83466.stderr rename to tests/ui/const-generics/issues/issue-83466.stderr diff --git a/src/test/ui/const-generics/issues/issue-83765.rs b/tests/ui/const-generics/issues/issue-83765.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-83765.rs rename to tests/ui/const-generics/issues/issue-83765.rs diff --git a/src/test/ui/const-generics/issues/issue-83765.stderr b/tests/ui/const-generics/issues/issue-83765.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-83765.stderr rename to tests/ui/const-generics/issues/issue-83765.stderr diff --git a/src/test/ui/const-generics/issues/issue-83993.rs b/tests/ui/const-generics/issues/issue-83993.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-83993.rs rename to tests/ui/const-generics/issues/issue-83993.rs diff --git a/src/test/ui/const-generics/issues/issue-84659.rs b/tests/ui/const-generics/issues/issue-84659.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-84659.rs rename to tests/ui/const-generics/issues/issue-84659.rs diff --git a/src/test/ui/const-generics/issues/issue-84659.stderr b/tests/ui/const-generics/issues/issue-84659.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-84659.stderr rename to tests/ui/const-generics/issues/issue-84659.stderr diff --git a/src/test/ui/const-generics/issues/issue-85031-2.rs b/tests/ui/const-generics/issues/issue-85031-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-85031-2.rs rename to tests/ui/const-generics/issues/issue-85031-2.rs diff --git a/src/test/ui/const-generics/issues/issue-85031-2.stderr b/tests/ui/const-generics/issues/issue-85031-2.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-85031-2.stderr rename to tests/ui/const-generics/issues/issue-85031-2.stderr diff --git a/src/test/ui/const-generics/issues/issue-86033.rs b/tests/ui/const-generics/issues/issue-86033.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-86033.rs rename to tests/ui/const-generics/issues/issue-86033.rs diff --git a/src/test/ui/const-generics/issues/issue-86530.rs b/tests/ui/const-generics/issues/issue-86530.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-86530.rs rename to tests/ui/const-generics/issues/issue-86530.rs diff --git a/src/test/ui/const-generics/issues/issue-86530.stderr b/tests/ui/const-generics/issues/issue-86530.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-86530.stderr rename to tests/ui/const-generics/issues/issue-86530.stderr diff --git a/src/test/ui/const-generics/issues/issue-86535-2.rs b/tests/ui/const-generics/issues/issue-86535-2.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-86535-2.rs rename to tests/ui/const-generics/issues/issue-86535-2.rs diff --git a/src/test/ui/const-generics/issues/issue-86535.rs b/tests/ui/const-generics/issues/issue-86535.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-86535.rs rename to tests/ui/const-generics/issues/issue-86535.rs diff --git a/src/test/ui/const-generics/issues/issue-86820.rs b/tests/ui/const-generics/issues/issue-86820.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-86820.rs rename to tests/ui/const-generics/issues/issue-86820.rs diff --git a/src/test/ui/const-generics/issues/issue-86820.stderr b/tests/ui/const-generics/issues/issue-86820.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-86820.stderr rename to tests/ui/const-generics/issues/issue-86820.stderr diff --git a/src/test/ui/const-generics/issues/issue-87076.rs b/tests/ui/const-generics/issues/issue-87076.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-87076.rs rename to tests/ui/const-generics/issues/issue-87076.rs diff --git a/src/test/ui/const-generics/issues/issue-87470.rs b/tests/ui/const-generics/issues/issue-87470.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-87470.rs rename to tests/ui/const-generics/issues/issue-87470.rs diff --git a/src/test/ui/const-generics/issues/issue-87493.rs b/tests/ui/const-generics/issues/issue-87493.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-87493.rs rename to tests/ui/const-generics/issues/issue-87493.rs diff --git a/src/test/ui/const-generics/issues/issue-87493.stderr b/tests/ui/const-generics/issues/issue-87493.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-87493.stderr rename to tests/ui/const-generics/issues/issue-87493.stderr diff --git a/src/test/ui/const-generics/issues/issue-87964.rs b/tests/ui/const-generics/issues/issue-87964.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-87964.rs rename to tests/ui/const-generics/issues/issue-87964.rs diff --git a/src/test/ui/const-generics/issues/issue-88119.rs b/tests/ui/const-generics/issues/issue-88119.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-88119.rs rename to tests/ui/const-generics/issues/issue-88119.rs diff --git a/src/test/ui/const-generics/issues/issue-88468.rs b/tests/ui/const-generics/issues/issue-88468.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-88468.rs rename to tests/ui/const-generics/issues/issue-88468.rs diff --git a/src/test/ui/const-generics/issues/issue-88997.rs b/tests/ui/const-generics/issues/issue-88997.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-88997.rs rename to tests/ui/const-generics/issues/issue-88997.rs diff --git a/src/test/ui/const-generics/issues/issue-88997.stderr b/tests/ui/const-generics/issues/issue-88997.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-88997.stderr rename to tests/ui/const-generics/issues/issue-88997.stderr diff --git a/src/test/ui/const-generics/issues/issue-89146.rs b/tests/ui/const-generics/issues/issue-89146.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-89146.rs rename to tests/ui/const-generics/issues/issue-89146.rs diff --git a/src/test/ui/const-generics/issues/issue-89304.rs b/tests/ui/const-generics/issues/issue-89304.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-89304.rs rename to tests/ui/const-generics/issues/issue-89304.rs diff --git a/src/test/ui/const-generics/issues/issue-89320.rs b/tests/ui/const-generics/issues/issue-89320.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-89320.rs rename to tests/ui/const-generics/issues/issue-89320.rs diff --git a/src/test/ui/const-generics/issues/issue-89334.rs b/tests/ui/const-generics/issues/issue-89334.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-89334.rs rename to tests/ui/const-generics/issues/issue-89334.rs diff --git a/src/test/ui/const-generics/issues/issue-90318.rs b/tests/ui/const-generics/issues/issue-90318.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-90318.rs rename to tests/ui/const-generics/issues/issue-90318.rs diff --git a/src/test/ui/const-generics/issues/issue-90318.stderr b/tests/ui/const-generics/issues/issue-90318.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-90318.stderr rename to tests/ui/const-generics/issues/issue-90318.stderr diff --git a/src/test/ui/const-generics/issues/issue-90364.rs b/tests/ui/const-generics/issues/issue-90364.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-90364.rs rename to tests/ui/const-generics/issues/issue-90364.rs diff --git a/src/test/ui/const-generics/issues/issue-90364.stderr b/tests/ui/const-generics/issues/issue-90364.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-90364.stderr rename to tests/ui/const-generics/issues/issue-90364.stderr diff --git a/src/test/ui/const-generics/issues/issue-90455.rs b/tests/ui/const-generics/issues/issue-90455.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-90455.rs rename to tests/ui/const-generics/issues/issue-90455.rs diff --git a/src/test/ui/const-generics/issues/issue-90455.stderr b/tests/ui/const-generics/issues/issue-90455.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-90455.stderr rename to tests/ui/const-generics/issues/issue-90455.stderr diff --git a/src/test/ui/const-generics/issues/issue-92186.rs b/tests/ui/const-generics/issues/issue-92186.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-92186.rs rename to tests/ui/const-generics/issues/issue-92186.rs diff --git a/src/test/ui/const-generics/issues/issue-96654.rs b/tests/ui/const-generics/issues/issue-96654.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-96654.rs rename to tests/ui/const-generics/issues/issue-96654.rs diff --git a/src/test/ui/const-generics/issues/issue-97278.rs b/tests/ui/const-generics/issues/issue-97278.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-97278.rs rename to tests/ui/const-generics/issues/issue-97278.rs diff --git a/src/test/ui/const-generics/issues/issue-97278.stderr b/tests/ui/const-generics/issues/issue-97278.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-97278.stderr rename to tests/ui/const-generics/issues/issue-97278.stderr diff --git a/src/test/ui/const-generics/issues/issue-97634.rs b/tests/ui/const-generics/issues/issue-97634.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-97634.rs rename to tests/ui/const-generics/issues/issue-97634.rs diff --git a/src/test/ui/const-generics/issues/issue-98629.rs b/tests/ui/const-generics/issues/issue-98629.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-98629.rs rename to tests/ui/const-generics/issues/issue-98629.rs diff --git a/src/test/ui/const-generics/issues/issue-98629.stderr b/tests/ui/const-generics/issues/issue-98629.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-98629.stderr rename to tests/ui/const-generics/issues/issue-98629.stderr diff --git a/src/test/ui/const-generics/issues/issue-99641.rs b/tests/ui/const-generics/issues/issue-99641.rs similarity index 100% rename from src/test/ui/const-generics/issues/issue-99641.rs rename to tests/ui/const-generics/issues/issue-99641.rs diff --git a/src/test/ui/const-generics/issues/issue-99641.stderr b/tests/ui/const-generics/issues/issue-99641.stderr similarity index 100% rename from src/test/ui/const-generics/issues/issue-99641.stderr rename to tests/ui/const-generics/issues/issue-99641.stderr diff --git a/src/test/ui/const-generics/late-bound-vars/in_closure.rs b/tests/ui/const-generics/late-bound-vars/in_closure.rs similarity index 100% rename from src/test/ui/const-generics/late-bound-vars/in_closure.rs rename to tests/ui/const-generics/late-bound-vars/in_closure.rs diff --git a/src/test/ui/const-generics/late-bound-vars/simple.rs b/tests/ui/const-generics/late-bound-vars/simple.rs similarity index 100% rename from src/test/ui/const-generics/late-bound-vars/simple.rs rename to tests/ui/const-generics/late-bound-vars/simple.rs diff --git a/src/test/ui/const-generics/legacy-const-generics-bad.rs b/tests/ui/const-generics/legacy-const-generics-bad.rs similarity index 100% rename from src/test/ui/const-generics/legacy-const-generics-bad.rs rename to tests/ui/const-generics/legacy-const-generics-bad.rs diff --git a/src/test/ui/const-generics/legacy-const-generics-bad.stderr b/tests/ui/const-generics/legacy-const-generics-bad.stderr similarity index 100% rename from src/test/ui/const-generics/legacy-const-generics-bad.stderr rename to tests/ui/const-generics/legacy-const-generics-bad.stderr diff --git a/src/test/ui/const-generics/legacy-const-generics.rs b/tests/ui/const-generics/legacy-const-generics.rs similarity index 100% rename from src/test/ui/const-generics/legacy-const-generics.rs rename to tests/ui/const-generics/legacy-const-generics.rs diff --git a/src/test/ui/const-generics/min_const_generics/assoc_const.rs b/tests/ui/const-generics/min_const_generics/assoc_const.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/assoc_const.rs rename to tests/ui/const-generics/min_const_generics/assoc_const.rs diff --git a/src/test/ui/const-generics/min_const_generics/complex-expression.rs b/tests/ui/const-generics/min_const_generics/complex-expression.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/complex-expression.rs rename to tests/ui/const-generics/min_const_generics/complex-expression.rs diff --git a/src/test/ui/const-generics/min_const_generics/complex-expression.stderr b/tests/ui/const-generics/min_const_generics/complex-expression.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/complex-expression.stderr rename to tests/ui/const-generics/min_const_generics/complex-expression.stderr diff --git a/src/test/ui/const-generics/min_const_generics/complex-types.rs b/tests/ui/const-generics/min_const_generics/complex-types.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/complex-types.rs rename to tests/ui/const-generics/min_const_generics/complex-types.rs diff --git a/src/test/ui/const-generics/min_const_generics/complex-types.stderr b/tests/ui/const-generics/min_const_generics/complex-types.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/complex-types.stderr rename to tests/ui/const-generics/min_const_generics/complex-types.stderr diff --git a/src/test/ui/const-generics/min_const_generics/const-evaluatable-unchecked.rs b/tests/ui/const-generics/min_const_generics/const-evaluatable-unchecked.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-evaluatable-unchecked.rs rename to tests/ui/const-generics/min_const_generics/const-evaluatable-unchecked.rs diff --git a/src/test/ui/const-generics/min_const_generics/const-evaluatable-unchecked.stderr b/tests/ui/const-generics/min_const_generics/const-evaluatable-unchecked.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-evaluatable-unchecked.stderr rename to tests/ui/const-generics/min_const_generics/const-evaluatable-unchecked.stderr diff --git a/src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.rs b/tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.rs rename to tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.rs diff --git a/src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.stderr b/tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.stderr rename to tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces-without-turbofish.stderr diff --git a/src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.rs b/tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.rs rename to tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.rs diff --git a/src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.stderr b/tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.stderr rename to tests/ui/const-generics/min_const_generics/const-expression-suggest-missing-braces.stderr diff --git a/src/test/ui/const-generics/min_const_generics/const_default_first.rs b/tests/ui/const-generics/min_const_generics/const_default_first.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const_default_first.rs rename to tests/ui/const-generics/min_const_generics/const_default_first.rs diff --git a/src/test/ui/const-generics/min_const_generics/const_default_first.stderr b/tests/ui/const-generics/min_const_generics/const_default_first.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const_default_first.stderr rename to tests/ui/const-generics/min_const_generics/const_default_first.stderr diff --git a/src/test/ui/const-generics/min_const_generics/const_fn_in_generics.rs b/tests/ui/const-generics/min_const_generics/const_fn_in_generics.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/const_fn_in_generics.rs rename to tests/ui/const-generics/min_const_generics/const_fn_in_generics.rs diff --git a/src/test/ui/const-generics/min_const_generics/default_function_param.rs b/tests/ui/const-generics/min_const_generics/default_function_param.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/default_function_param.rs rename to tests/ui/const-generics/min_const_generics/default_function_param.rs diff --git a/src/test/ui/const-generics/min_const_generics/default_function_param.stderr b/tests/ui/const-generics/min_const_generics/default_function_param.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/default_function_param.stderr rename to tests/ui/const-generics/min_const_generics/default_function_param.stderr diff --git a/src/test/ui/const-generics/min_const_generics/default_trait_param.rs b/tests/ui/const-generics/min_const_generics/default_trait_param.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/default_trait_param.rs rename to tests/ui/const-generics/min_const_generics/default_trait_param.rs diff --git a/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs b/tests/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs rename to tests/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs diff --git a/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr b/tests/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr rename to tests/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr diff --git a/src/test/ui/const-generics/min_const_generics/forbid-self-no-normalize.rs b/tests/ui/const-generics/min_const_generics/forbid-self-no-normalize.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/forbid-self-no-normalize.rs rename to tests/ui/const-generics/min_const_generics/forbid-self-no-normalize.rs diff --git a/src/test/ui/const-generics/min_const_generics/forbid-self-no-normalize.stderr b/tests/ui/const-generics/min_const_generics/forbid-self-no-normalize.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/forbid-self-no-normalize.stderr rename to tests/ui/const-generics/min_const_generics/forbid-self-no-normalize.stderr diff --git a/src/test/ui/const-generics/min_const_generics/inferred_const.rs b/tests/ui/const-generics/min_const_generics/inferred_const.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/inferred_const.rs rename to tests/ui/const-generics/min_const_generics/inferred_const.rs diff --git a/src/test/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr b/tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr rename to tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr diff --git a/src/test/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr b/tests/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr rename to tests/ui/const-generics/min_const_generics/invalid-patterns.64bit.stderr diff --git a/src/test/ui/const-generics/min_const_generics/invalid-patterns.rs b/tests/ui/const-generics/min_const_generics/invalid-patterns.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/invalid-patterns.rs rename to tests/ui/const-generics/min_const_generics/invalid-patterns.rs diff --git a/src/test/ui/const-generics/min_const_generics/macro-fail.rs b/tests/ui/const-generics/min_const_generics/macro-fail.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/macro-fail.rs rename to tests/ui/const-generics/min_const_generics/macro-fail.rs diff --git a/src/test/ui/const-generics/min_const_generics/macro-fail.stderr b/tests/ui/const-generics/min_const_generics/macro-fail.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/macro-fail.stderr rename to tests/ui/const-generics/min_const_generics/macro-fail.stderr diff --git a/src/test/ui/const-generics/min_const_generics/macro.rs b/tests/ui/const-generics/min_const_generics/macro.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/macro.rs rename to tests/ui/const-generics/min_const_generics/macro.rs diff --git a/src/test/ui/const-generics/min_const_generics/self-ty-in-const-1.rs b/tests/ui/const-generics/min_const_generics/self-ty-in-const-1.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/self-ty-in-const-1.rs rename to tests/ui/const-generics/min_const_generics/self-ty-in-const-1.rs diff --git a/src/test/ui/const-generics/min_const_generics/self-ty-in-const-1.stderr b/tests/ui/const-generics/min_const_generics/self-ty-in-const-1.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/self-ty-in-const-1.stderr rename to tests/ui/const-generics/min_const_generics/self-ty-in-const-1.stderr diff --git a/src/test/ui/const-generics/min_const_generics/self-ty-in-const-2.rs b/tests/ui/const-generics/min_const_generics/self-ty-in-const-2.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/self-ty-in-const-2.rs rename to tests/ui/const-generics/min_const_generics/self-ty-in-const-2.rs diff --git a/src/test/ui/const-generics/min_const_generics/self-ty-in-const-2.stderr b/tests/ui/const-generics/min_const_generics/self-ty-in-const-2.stderr similarity index 100% rename from src/test/ui/const-generics/min_const_generics/self-ty-in-const-2.stderr rename to tests/ui/const-generics/min_const_generics/self-ty-in-const-2.stderr diff --git a/src/test/ui/const-generics/min_const_generics/type_and_const_defaults.rs b/tests/ui/const-generics/min_const_generics/type_and_const_defaults.rs similarity index 100% rename from src/test/ui/const-generics/min_const_generics/type_and_const_defaults.rs rename to tests/ui/const-generics/min_const_generics/type_and_const_defaults.rs diff --git a/src/test/ui/const-generics/nested-type.full.stderr b/tests/ui/const-generics/nested-type.full.stderr similarity index 100% rename from src/test/ui/const-generics/nested-type.full.stderr rename to tests/ui/const-generics/nested-type.full.stderr diff --git a/src/test/ui/const-generics/nested-type.min.stderr b/tests/ui/const-generics/nested-type.min.stderr similarity index 100% rename from src/test/ui/const-generics/nested-type.min.stderr rename to tests/ui/const-generics/nested-type.min.stderr diff --git a/src/test/ui/const-generics/nested-type.rs b/tests/ui/const-generics/nested-type.rs similarity index 100% rename from src/test/ui/const-generics/nested-type.rs rename to tests/ui/const-generics/nested-type.rs diff --git a/src/test/ui/const-generics/occurs-check/bind-param.rs b/tests/ui/const-generics/occurs-check/bind-param.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/bind-param.rs rename to tests/ui/const-generics/occurs-check/bind-param.rs diff --git a/src/test/ui/const-generics/occurs-check/unify-fixpoint.rs b/tests/ui/const-generics/occurs-check/unify-fixpoint.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unify-fixpoint.rs rename to tests/ui/const-generics/occurs-check/unify-fixpoint.rs diff --git a/src/test/ui/const-generics/occurs-check/unify-fixpoint.stderr b/tests/ui/const-generics/occurs-check/unify-fixpoint.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unify-fixpoint.stderr rename to tests/ui/const-generics/occurs-check/unify-fixpoint.stderr diff --git a/src/test/ui/const-generics/occurs-check/unify-n-nplusone.rs b/tests/ui/const-generics/occurs-check/unify-n-nplusone.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unify-n-nplusone.rs rename to tests/ui/const-generics/occurs-check/unify-n-nplusone.rs diff --git a/src/test/ui/const-generics/occurs-check/unify-n-nplusone.stderr b/tests/ui/const-generics/occurs-check/unify-n-nplusone.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unify-n-nplusone.stderr rename to tests/ui/const-generics/occurs-check/unify-n-nplusone.stderr diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-1.rs b/tests/ui/const-generics/occurs-check/unused-substs-1.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-1.rs rename to tests/ui/const-generics/occurs-check/unused-substs-1.rs diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-1.stderr b/tests/ui/const-generics/occurs-check/unused-substs-1.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-1.stderr rename to tests/ui/const-generics/occurs-check/unused-substs-1.stderr diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-2.rs b/tests/ui/const-generics/occurs-check/unused-substs-2.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-2.rs rename to tests/ui/const-generics/occurs-check/unused-substs-2.rs diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-2.stderr b/tests/ui/const-generics/occurs-check/unused-substs-2.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-2.stderr rename to tests/ui/const-generics/occurs-check/unused-substs-2.stderr diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-3.rs b/tests/ui/const-generics/occurs-check/unused-substs-3.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-3.rs rename to tests/ui/const-generics/occurs-check/unused-substs-3.rs diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-3.stderr b/tests/ui/const-generics/occurs-check/unused-substs-3.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-3.stderr rename to tests/ui/const-generics/occurs-check/unused-substs-3.stderr diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-4.rs b/tests/ui/const-generics/occurs-check/unused-substs-4.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-4.rs rename to tests/ui/const-generics/occurs-check/unused-substs-4.rs diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-4.stderr b/tests/ui/const-generics/occurs-check/unused-substs-4.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-4.stderr rename to tests/ui/const-generics/occurs-check/unused-substs-4.stderr diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-5.rs b/tests/ui/const-generics/occurs-check/unused-substs-5.rs similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-5.rs rename to tests/ui/const-generics/occurs-check/unused-substs-5.rs diff --git a/src/test/ui/const-generics/occurs-check/unused-substs-5.stderr b/tests/ui/const-generics/occurs-check/unused-substs-5.stderr similarity index 100% rename from src/test/ui/const-generics/occurs-check/unused-substs-5.stderr rename to tests/ui/const-generics/occurs-check/unused-substs-5.stderr diff --git a/src/test/ui/const-generics/outer-lifetime-in-const-generic-default.rs b/tests/ui/const-generics/outer-lifetime-in-const-generic-default.rs similarity index 100% rename from src/test/ui/const-generics/outer-lifetime-in-const-generic-default.rs rename to tests/ui/const-generics/outer-lifetime-in-const-generic-default.rs diff --git a/src/test/ui/const-generics/outer-lifetime-in-const-generic-default.stderr b/tests/ui/const-generics/outer-lifetime-in-const-generic-default.stderr similarity index 100% rename from src/test/ui/const-generics/outer-lifetime-in-const-generic-default.stderr rename to tests/ui/const-generics/outer-lifetime-in-const-generic-default.stderr diff --git a/src/test/ui/const-generics/overlapping_impls.rs b/tests/ui/const-generics/overlapping_impls.rs similarity index 100% rename from src/test/ui/const-generics/overlapping_impls.rs rename to tests/ui/const-generics/overlapping_impls.rs diff --git a/src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.full.stderr b/tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.full.stderr similarity index 100% rename from src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.full.stderr rename to tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.full.stderr diff --git a/src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.min.stderr b/tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.min.stderr similarity index 100% rename from src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.min.stderr rename to tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.min.stderr diff --git a/src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.rs b/tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.rs similarity index 100% rename from src/test/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.rs rename to tests/ui/const-generics/params-in-ct-in-ty-param-lazy-norm.rs diff --git a/src/test/ui/const-generics/parent_generics_of_encoding.rs b/tests/ui/const-generics/parent_generics_of_encoding.rs similarity index 100% rename from src/test/ui/const-generics/parent_generics_of_encoding.rs rename to tests/ui/const-generics/parent_generics_of_encoding.rs diff --git a/src/test/ui/const-generics/parent_generics_of_encoding_impl_trait.rs b/tests/ui/const-generics/parent_generics_of_encoding_impl_trait.rs similarity index 100% rename from src/test/ui/const-generics/parent_generics_of_encoding_impl_trait.rs rename to tests/ui/const-generics/parent_generics_of_encoding_impl_trait.rs diff --git a/src/test/ui/const-generics/parent_generics_of_encoding_impl_trait.stderr b/tests/ui/const-generics/parent_generics_of_encoding_impl_trait.stderr similarity index 100% rename from src/test/ui/const-generics/parent_generics_of_encoding_impl_trait.stderr rename to tests/ui/const-generics/parent_generics_of_encoding_impl_trait.stderr diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs rename to tests/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr rename to tests/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs rename to tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr rename to tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013-type.rs similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs rename to tests/ui/const-generics/parser-error-recovery/issue-89013-type.rs diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013-type.stderr similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr rename to tests/ui/const-generics/parser-error-recovery/issue-89013-type.stderr diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013.rs similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013.rs rename to tests/ui/const-generics/parser-error-recovery/issue-89013.rs diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr similarity index 100% rename from src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr rename to tests/ui/const-generics/parser-error-recovery/issue-89013.stderr diff --git a/src/test/ui/const-generics/projection-as-arg-const.rs b/tests/ui/const-generics/projection-as-arg-const.rs similarity index 100% rename from src/test/ui/const-generics/projection-as-arg-const.rs rename to tests/ui/const-generics/projection-as-arg-const.rs diff --git a/src/test/ui/const-generics/projection-as-arg-const.stderr b/tests/ui/const-generics/projection-as-arg-const.stderr similarity index 100% rename from src/test/ui/const-generics/projection-as-arg-const.stderr rename to tests/ui/const-generics/projection-as-arg-const.stderr diff --git a/src/test/ui/const-generics/promotion.rs b/tests/ui/const-generics/promotion.rs similarity index 100% rename from src/test/ui/const-generics/promotion.rs rename to tests/ui/const-generics/promotion.rs diff --git a/src/test/ui/const-generics/raw-ptr-const-param-deref.full.stderr b/tests/ui/const-generics/raw-ptr-const-param-deref.full.stderr similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param-deref.full.stderr rename to tests/ui/const-generics/raw-ptr-const-param-deref.full.stderr diff --git a/src/test/ui/const-generics/raw-ptr-const-param-deref.min.stderr b/tests/ui/const-generics/raw-ptr-const-param-deref.min.stderr similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param-deref.min.stderr rename to tests/ui/const-generics/raw-ptr-const-param-deref.min.stderr diff --git a/src/test/ui/const-generics/raw-ptr-const-param-deref.rs b/tests/ui/const-generics/raw-ptr-const-param-deref.rs similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param-deref.rs rename to tests/ui/const-generics/raw-ptr-const-param-deref.rs diff --git a/src/test/ui/const-generics/raw-ptr-const-param.full.stderr b/tests/ui/const-generics/raw-ptr-const-param.full.stderr similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param.full.stderr rename to tests/ui/const-generics/raw-ptr-const-param.full.stderr diff --git a/src/test/ui/const-generics/raw-ptr-const-param.min.stderr b/tests/ui/const-generics/raw-ptr-const-param.min.stderr similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param.min.stderr rename to tests/ui/const-generics/raw-ptr-const-param.min.stderr diff --git a/src/test/ui/const-generics/raw-ptr-const-param.rs b/tests/ui/const-generics/raw-ptr-const-param.rs similarity index 100% rename from src/test/ui/const-generics/raw-ptr-const-param.rs rename to tests/ui/const-generics/raw-ptr-const-param.rs diff --git a/src/test/ui/const-generics/slice-const-param-mismatch.full.stderr b/tests/ui/const-generics/slice-const-param-mismatch.full.stderr similarity index 100% rename from src/test/ui/const-generics/slice-const-param-mismatch.full.stderr rename to tests/ui/const-generics/slice-const-param-mismatch.full.stderr diff --git a/src/test/ui/const-generics/slice-const-param-mismatch.min.stderr b/tests/ui/const-generics/slice-const-param-mismatch.min.stderr similarity index 100% rename from src/test/ui/const-generics/slice-const-param-mismatch.min.stderr rename to tests/ui/const-generics/slice-const-param-mismatch.min.stderr diff --git a/src/test/ui/const-generics/slice-const-param-mismatch.rs b/tests/ui/const-generics/slice-const-param-mismatch.rs similarity index 100% rename from src/test/ui/const-generics/slice-const-param-mismatch.rs rename to tests/ui/const-generics/slice-const-param-mismatch.rs diff --git a/src/test/ui/const-generics/slice-const-param.rs b/tests/ui/const-generics/slice-const-param.rs similarity index 100% rename from src/test/ui/const-generics/slice-const-param.rs rename to tests/ui/const-generics/slice-const-param.rs diff --git a/src/test/ui/const-generics/sneaky-array-repeat-expr.rs b/tests/ui/const-generics/sneaky-array-repeat-expr.rs similarity index 100% rename from src/test/ui/const-generics/sneaky-array-repeat-expr.rs rename to tests/ui/const-generics/sneaky-array-repeat-expr.rs diff --git a/src/test/ui/const-generics/sneaky-array-repeat-expr.stderr b/tests/ui/const-generics/sneaky-array-repeat-expr.stderr similarity index 100% rename from src/test/ui/const-generics/sneaky-array-repeat-expr.stderr rename to tests/ui/const-generics/sneaky-array-repeat-expr.stderr diff --git a/src/test/ui/const-generics/std/const-generics-range.min.stderr b/tests/ui/const-generics/std/const-generics-range.min.stderr similarity index 100% rename from src/test/ui/const-generics/std/const-generics-range.min.stderr rename to tests/ui/const-generics/std/const-generics-range.min.stderr diff --git a/src/test/ui/const-generics/std/const-generics-range.rs b/tests/ui/const-generics/std/const-generics-range.rs similarity index 100% rename from src/test/ui/const-generics/std/const-generics-range.rs rename to tests/ui/const-generics/std/const-generics-range.rs diff --git a/src/test/ui/const-generics/struct-with-invalid-const-param.rs b/tests/ui/const-generics/struct-with-invalid-const-param.rs similarity index 100% rename from src/test/ui/const-generics/struct-with-invalid-const-param.rs rename to tests/ui/const-generics/struct-with-invalid-const-param.rs diff --git a/src/test/ui/const-generics/struct-with-invalid-const-param.stderr b/tests/ui/const-generics/struct-with-invalid-const-param.stderr similarity index 100% rename from src/test/ui/const-generics/struct-with-invalid-const-param.stderr rename to tests/ui/const-generics/struct-with-invalid-const-param.stderr diff --git a/src/test/ui/const-generics/suggest_const_for_array.rs b/tests/ui/const-generics/suggest_const_for_array.rs similarity index 100% rename from src/test/ui/const-generics/suggest_const_for_array.rs rename to tests/ui/const-generics/suggest_const_for_array.rs diff --git a/src/test/ui/const-generics/suggest_const_for_array.stderr b/tests/ui/const-generics/suggest_const_for_array.stderr similarity index 100% rename from src/test/ui/const-generics/suggest_const_for_array.stderr rename to tests/ui/const-generics/suggest_const_for_array.stderr diff --git a/src/test/ui/const-generics/trait-const-args.rs b/tests/ui/const-generics/trait-const-args.rs similarity index 100% rename from src/test/ui/const-generics/trait-const-args.rs rename to tests/ui/const-generics/trait-const-args.rs diff --git a/src/test/ui/const-generics/transmute-const-param-static-reference.min.stderr b/tests/ui/const-generics/transmute-const-param-static-reference.min.stderr similarity index 100% rename from src/test/ui/const-generics/transmute-const-param-static-reference.min.stderr rename to tests/ui/const-generics/transmute-const-param-static-reference.min.stderr diff --git a/src/test/ui/const-generics/transmute-const-param-static-reference.rs b/tests/ui/const-generics/transmute-const-param-static-reference.rs similarity index 100% rename from src/test/ui/const-generics/transmute-const-param-static-reference.rs rename to tests/ui/const-generics/transmute-const-param-static-reference.rs diff --git a/src/test/ui/const-generics/transparent-maybeunit-array-wrapper.rs b/tests/ui/const-generics/transparent-maybeunit-array-wrapper.rs similarity index 100% rename from src/test/ui/const-generics/transparent-maybeunit-array-wrapper.rs rename to tests/ui/const-generics/transparent-maybeunit-array-wrapper.rs diff --git a/src/test/ui/const-generics/try_unify_ignore_lifetimes.rs b/tests/ui/const-generics/try_unify_ignore_lifetimes.rs similarity index 100% rename from src/test/ui/const-generics/try_unify_ignore_lifetimes.rs rename to tests/ui/const-generics/try_unify_ignore_lifetimes.rs diff --git a/src/test/ui/const-generics/two_matching_preds.rs b/tests/ui/const-generics/two_matching_preds.rs similarity index 100% rename from src/test/ui/const-generics/two_matching_preds.rs rename to tests/ui/const-generics/two_matching_preds.rs diff --git a/src/test/ui/const-generics/type-after-const-ok.rs b/tests/ui/const-generics/type-after-const-ok.rs similarity index 100% rename from src/test/ui/const-generics/type-after-const-ok.rs rename to tests/ui/const-generics/type-after-const-ok.rs diff --git a/src/test/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs b/tests/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs rename to tests/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs diff --git a/src/test/ui/const-generics/type-dependent/const-arg-in-const-arg.rs b/tests/ui/const-generics/type-dependent/const-arg-in-const-arg.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/const-arg-in-const-arg.rs rename to tests/ui/const-generics/type-dependent/const-arg-in-const-arg.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-61936.rs b/tests/ui/const-generics/type-dependent/issue-61936.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-61936.rs rename to tests/ui/const-generics/type-dependent/issue-61936.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-63695.rs b/tests/ui/const-generics/type-dependent/issue-63695.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-63695.rs rename to tests/ui/const-generics/type-dependent/issue-63695.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-67144-1.rs b/tests/ui/const-generics/type-dependent/issue-67144-1.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-67144-1.rs rename to tests/ui/const-generics/type-dependent/issue-67144-1.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-67144-2.rs b/tests/ui/const-generics/type-dependent/issue-67144-2.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-67144-2.rs rename to tests/ui/const-generics/type-dependent/issue-67144-2.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-69816.rs b/tests/ui/const-generics/type-dependent/issue-69816.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-69816.rs rename to tests/ui/const-generics/type-dependent/issue-69816.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-70217.rs b/tests/ui/const-generics/type-dependent/issue-70217.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-70217.rs rename to tests/ui/const-generics/type-dependent/issue-70217.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-70507.rs b/tests/ui/const-generics/type-dependent/issue-70507.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-70507.rs rename to tests/ui/const-generics/type-dependent/issue-70507.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-70586.rs b/tests/ui/const-generics/type-dependent/issue-70586.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-70586.rs rename to tests/ui/const-generics/type-dependent/issue-70586.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-71348.min.stderr b/tests/ui/const-generics/type-dependent/issue-71348.min.stderr similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-71348.min.stderr rename to tests/ui/const-generics/type-dependent/issue-71348.min.stderr diff --git a/src/test/ui/const-generics/type-dependent/issue-71348.rs b/tests/ui/const-generics/type-dependent/issue-71348.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-71348.rs rename to tests/ui/const-generics/type-dependent/issue-71348.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-71382.rs b/tests/ui/const-generics/type-dependent/issue-71382.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-71382.rs rename to tests/ui/const-generics/type-dependent/issue-71382.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-71382.stderr b/tests/ui/const-generics/type-dependent/issue-71382.stderr similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-71382.stderr rename to tests/ui/const-generics/type-dependent/issue-71382.stderr diff --git a/src/test/ui/const-generics/type-dependent/issue-71805.rs b/tests/ui/const-generics/type-dependent/issue-71805.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-71805.rs rename to tests/ui/const-generics/type-dependent/issue-71805.rs diff --git a/src/test/ui/const-generics/type-dependent/issue-73730.rs b/tests/ui/const-generics/type-dependent/issue-73730.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/issue-73730.rs rename to tests/ui/const-generics/type-dependent/issue-73730.rs diff --git a/src/test/ui/const-generics/type-dependent/non-local.rs b/tests/ui/const-generics/type-dependent/non-local.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/non-local.rs rename to tests/ui/const-generics/type-dependent/non-local.rs diff --git a/src/test/ui/const-generics/type-dependent/qpath.rs b/tests/ui/const-generics/type-dependent/qpath.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/qpath.rs rename to tests/ui/const-generics/type-dependent/qpath.rs diff --git a/src/test/ui/const-generics/type-dependent/simple.rs b/tests/ui/const-generics/type-dependent/simple.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/simple.rs rename to tests/ui/const-generics/type-dependent/simple.rs diff --git a/src/test/ui/const-generics/type-dependent/type-mismatch.full.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr similarity index 100% rename from src/test/ui/const-generics/type-dependent/type-mismatch.full.stderr rename to tests/ui/const-generics/type-dependent/type-mismatch.full.stderr diff --git a/src/test/ui/const-generics/type-dependent/type-mismatch.min.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr similarity index 100% rename from src/test/ui/const-generics/type-dependent/type-mismatch.min.stderr rename to tests/ui/const-generics/type-dependent/type-mismatch.min.stderr diff --git a/src/test/ui/const-generics/type-dependent/type-mismatch.rs b/tests/ui/const-generics/type-dependent/type-mismatch.rs similarity index 100% rename from src/test/ui/const-generics/type-dependent/type-mismatch.rs rename to tests/ui/const-generics/type-dependent/type-mismatch.rs diff --git a/src/test/ui/const-generics/type_mismatch.rs b/tests/ui/const-generics/type_mismatch.rs similarity index 100% rename from src/test/ui/const-generics/type_mismatch.rs rename to tests/ui/const-generics/type_mismatch.rs diff --git a/src/test/ui/const-generics/type_mismatch.stderr b/tests/ui/const-generics/type_mismatch.stderr similarity index 100% rename from src/test/ui/const-generics/type_mismatch.stderr rename to tests/ui/const-generics/type_mismatch.stderr diff --git a/src/test/ui/const-generics/type_not_in_scope.rs b/tests/ui/const-generics/type_not_in_scope.rs similarity index 100% rename from src/test/ui/const-generics/type_not_in_scope.rs rename to tests/ui/const-generics/type_not_in_scope.rs diff --git a/src/test/ui/const-generics/type_not_in_scope.stderr b/tests/ui/const-generics/type_not_in_scope.stderr similarity index 100% rename from src/test/ui/const-generics/type_not_in_scope.stderr rename to tests/ui/const-generics/type_not_in_scope.stderr diff --git a/src/test/ui/const-generics/type_of_anon_const.rs b/tests/ui/const-generics/type_of_anon_const.rs similarity index 100% rename from src/test/ui/const-generics/type_of_anon_const.rs rename to tests/ui/const-generics/type_of_anon_const.rs diff --git a/src/test/ui/const-generics/types-mismatch-const-args.full.stderr b/tests/ui/const-generics/types-mismatch-const-args.full.stderr similarity index 100% rename from src/test/ui/const-generics/types-mismatch-const-args.full.stderr rename to tests/ui/const-generics/types-mismatch-const-args.full.stderr diff --git a/src/test/ui/const-generics/types-mismatch-const-args.min.stderr b/tests/ui/const-generics/types-mismatch-const-args.min.stderr similarity index 100% rename from src/test/ui/const-generics/types-mismatch-const-args.min.stderr rename to tests/ui/const-generics/types-mismatch-const-args.min.stderr diff --git a/src/test/ui/const-generics/types-mismatch-const-args.rs b/tests/ui/const-generics/types-mismatch-const-args.rs similarity index 100% rename from src/test/ui/const-generics/types-mismatch-const-args.rs rename to tests/ui/const-generics/types-mismatch-const-args.rs diff --git a/src/test/ui/const-generics/unify_with_nested_expr.rs b/tests/ui/const-generics/unify_with_nested_expr.rs similarity index 100% rename from src/test/ui/const-generics/unify_with_nested_expr.rs rename to tests/ui/const-generics/unify_with_nested_expr.rs diff --git a/src/test/ui/const-generics/unify_with_nested_expr.stderr b/tests/ui/const-generics/unify_with_nested_expr.stderr similarity index 100% rename from src/test/ui/const-generics/unify_with_nested_expr.stderr rename to tests/ui/const-generics/unify_with_nested_expr.stderr diff --git a/src/test/ui/const-generics/uninferred-consts-during-codegen-1.rs b/tests/ui/const-generics/uninferred-consts-during-codegen-1.rs similarity index 100% rename from src/test/ui/const-generics/uninferred-consts-during-codegen-1.rs rename to tests/ui/const-generics/uninferred-consts-during-codegen-1.rs diff --git a/src/test/ui/const-generics/uninferred-consts-during-codegen-2.rs b/tests/ui/const-generics/uninferred-consts-during-codegen-2.rs similarity index 100% rename from src/test/ui/const-generics/uninferred-consts-during-codegen-2.rs rename to tests/ui/const-generics/uninferred-consts-during-codegen-2.rs diff --git a/src/test/ui/const-generics/unknown_adt.rs b/tests/ui/const-generics/unknown_adt.rs similarity index 100% rename from src/test/ui/const-generics/unknown_adt.rs rename to tests/ui/const-generics/unknown_adt.rs diff --git a/src/test/ui/const-generics/unknown_adt.stderr b/tests/ui/const-generics/unknown_adt.stderr similarity index 100% rename from src/test/ui/const-generics/unknown_adt.stderr rename to tests/ui/const-generics/unknown_adt.stderr diff --git a/src/test/ui/const-generics/unused-const-param.rs b/tests/ui/const-generics/unused-const-param.rs similarity index 100% rename from src/test/ui/const-generics/unused-const-param.rs rename to tests/ui/const-generics/unused-const-param.rs diff --git a/src/test/ui/const-generics/unused-type-param-suggestion.rs b/tests/ui/const-generics/unused-type-param-suggestion.rs similarity index 100% rename from src/test/ui/const-generics/unused-type-param-suggestion.rs rename to tests/ui/const-generics/unused-type-param-suggestion.rs diff --git a/src/test/ui/const-generics/unused-type-param-suggestion.stderr b/tests/ui/const-generics/unused-type-param-suggestion.stderr similarity index 100% rename from src/test/ui/const-generics/unused-type-param-suggestion.stderr rename to tests/ui/const-generics/unused-type-param-suggestion.stderr diff --git a/src/test/ui/const-generics/unused_braces.fixed b/tests/ui/const-generics/unused_braces.fixed similarity index 100% rename from src/test/ui/const-generics/unused_braces.fixed rename to tests/ui/const-generics/unused_braces.fixed diff --git a/src/test/ui/const-generics/unused_braces.full.fixed b/tests/ui/const-generics/unused_braces.full.fixed similarity index 100% rename from src/test/ui/const-generics/unused_braces.full.fixed rename to tests/ui/const-generics/unused_braces.full.fixed diff --git a/src/test/ui/const-generics/unused_braces.min.fixed b/tests/ui/const-generics/unused_braces.min.fixed similarity index 100% rename from src/test/ui/const-generics/unused_braces.min.fixed rename to tests/ui/const-generics/unused_braces.min.fixed diff --git a/src/test/ui/const-generics/unused_braces.rs b/tests/ui/const-generics/unused_braces.rs similarity index 100% rename from src/test/ui/const-generics/unused_braces.rs rename to tests/ui/const-generics/unused_braces.rs diff --git a/src/test/ui/const-generics/unused_braces.stderr b/tests/ui/const-generics/unused_braces.stderr similarity index 100% rename from src/test/ui/const-generics/unused_braces.stderr rename to tests/ui/const-generics/unused_braces.stderr diff --git a/src/test/ui/const-generics/where-clauses.rs b/tests/ui/const-generics/where-clauses.rs similarity index 100% rename from src/test/ui/const-generics/where-clauses.rs rename to tests/ui/const-generics/where-clauses.rs diff --git a/src/test/ui/const-ptr/allowed_slices.rs b/tests/ui/const-ptr/allowed_slices.rs similarity index 100% rename from src/test/ui/const-ptr/allowed_slices.rs rename to tests/ui/const-ptr/allowed_slices.rs diff --git a/src/test/ui/const-ptr/forbidden_slices.rs b/tests/ui/const-ptr/forbidden_slices.rs similarity index 100% rename from src/test/ui/const-ptr/forbidden_slices.rs rename to tests/ui/const-ptr/forbidden_slices.rs diff --git a/src/test/ui/const-ptr/forbidden_slices.stderr b/tests/ui/const-ptr/forbidden_slices.stderr similarity index 100% rename from src/test/ui/const-ptr/forbidden_slices.stderr rename to tests/ui/const-ptr/forbidden_slices.stderr diff --git a/src/test/ui/const-ptr/out_of_bounds_read.rs b/tests/ui/const-ptr/out_of_bounds_read.rs similarity index 100% rename from src/test/ui/const-ptr/out_of_bounds_read.rs rename to tests/ui/const-ptr/out_of_bounds_read.rs diff --git a/src/test/ui/const-ptr/out_of_bounds_read.stderr b/tests/ui/const-ptr/out_of_bounds_read.stderr similarity index 100% rename from src/test/ui/const-ptr/out_of_bounds_read.stderr rename to tests/ui/const-ptr/out_of_bounds_read.stderr diff --git a/src/test/ui/const_prop/ice-assert-fail-div-by-zero.rs b/tests/ui/const_prop/ice-assert-fail-div-by-zero.rs similarity index 100% rename from src/test/ui/const_prop/ice-assert-fail-div-by-zero.rs rename to tests/ui/const_prop/ice-assert-fail-div-by-zero.rs diff --git a/src/test/ui/const_prop/ice-assert-fail-div-by-zero.stderr b/tests/ui/const_prop/ice-assert-fail-div-by-zero.stderr similarity index 100% rename from src/test/ui/const_prop/ice-assert-fail-div-by-zero.stderr rename to tests/ui/const_prop/ice-assert-fail-div-by-zero.stderr diff --git a/src/test/ui/const_prop/inline_spans.rs b/tests/ui/const_prop/inline_spans.rs similarity index 100% rename from src/test/ui/const_prop/inline_spans.rs rename to tests/ui/const_prop/inline_spans.rs diff --git a/src/test/ui/const_prop/inline_spans_lint_attribute.rs b/tests/ui/const_prop/inline_spans_lint_attribute.rs similarity index 100% rename from src/test/ui/const_prop/inline_spans_lint_attribute.rs rename to tests/ui/const_prop/inline_spans_lint_attribute.rs diff --git a/src/test/ui/const_prop/issue-102553.rs b/tests/ui/const_prop/issue-102553.rs similarity index 100% rename from src/test/ui/const_prop/issue-102553.rs rename to tests/ui/const_prop/issue-102553.rs diff --git a/src/test/ui/constructor-lifetime-args.rs b/tests/ui/constructor-lifetime-args.rs similarity index 100% rename from src/test/ui/constructor-lifetime-args.rs rename to tests/ui/constructor-lifetime-args.rs diff --git a/src/test/ui/constructor-lifetime-args.stderr b/tests/ui/constructor-lifetime-args.stderr similarity index 100% rename from src/test/ui/constructor-lifetime-args.stderr rename to tests/ui/constructor-lifetime-args.stderr diff --git a/src/test/ui/consts/array-literal-index-oob.rs b/tests/ui/consts/array-literal-index-oob.rs similarity index 100% rename from src/test/ui/consts/array-literal-index-oob.rs rename to tests/ui/consts/array-literal-index-oob.rs diff --git a/src/test/ui/consts/array-literal-index-oob.stderr b/tests/ui/consts/array-literal-index-oob.stderr similarity index 100% rename from src/test/ui/consts/array-literal-index-oob.stderr rename to tests/ui/consts/array-literal-index-oob.stderr diff --git a/src/test/ui/consts/array-to-slice-cast.rs b/tests/ui/consts/array-to-slice-cast.rs similarity index 100% rename from src/test/ui/consts/array-to-slice-cast.rs rename to tests/ui/consts/array-to-slice-cast.rs diff --git a/src/test/ui/consts/assert-type-intrinsics.rs b/tests/ui/consts/assert-type-intrinsics.rs similarity index 100% rename from src/test/ui/consts/assert-type-intrinsics.rs rename to tests/ui/consts/assert-type-intrinsics.rs diff --git a/src/test/ui/consts/assert-type-intrinsics.stderr b/tests/ui/consts/assert-type-intrinsics.stderr similarity index 100% rename from src/test/ui/consts/assert-type-intrinsics.stderr rename to tests/ui/consts/assert-type-intrinsics.stderr diff --git a/src/test/ui/consts/assoc-const.rs b/tests/ui/consts/assoc-const.rs similarity index 100% rename from src/test/ui/consts/assoc-const.rs rename to tests/ui/consts/assoc-const.rs diff --git a/src/test/ui/consts/assoc_const_generic_impl.rs b/tests/ui/consts/assoc_const_generic_impl.rs similarity index 100% rename from src/test/ui/consts/assoc_const_generic_impl.rs rename to tests/ui/consts/assoc_const_generic_impl.rs diff --git a/src/test/ui/consts/assoc_const_generic_impl.stderr b/tests/ui/consts/assoc_const_generic_impl.stderr similarity index 100% rename from src/test/ui/consts/assoc_const_generic_impl.stderr rename to tests/ui/consts/assoc_const_generic_impl.stderr diff --git a/src/test/ui/consts/associated_const_generic.rs b/tests/ui/consts/associated_const_generic.rs similarity index 100% rename from src/test/ui/consts/associated_const_generic.rs rename to tests/ui/consts/associated_const_generic.rs diff --git a/src/test/ui/consts/async-block.rs b/tests/ui/consts/async-block.rs similarity index 100% rename from src/test/ui/consts/async-block.rs rename to tests/ui/consts/async-block.rs diff --git a/src/test/ui/consts/async-block.with_feature.stderr b/tests/ui/consts/async-block.with_feature.stderr similarity index 100% rename from src/test/ui/consts/async-block.with_feature.stderr rename to tests/ui/consts/async-block.with_feature.stderr diff --git a/src/test/ui/consts/async-block.without_feature.stderr b/tests/ui/consts/async-block.without_feature.stderr similarity index 100% rename from src/test/ui/consts/async-block.without_feature.stderr rename to tests/ui/consts/async-block.without_feature.stderr diff --git a/src/test/ui/consts/auxiliary/cci_const_block.rs b/tests/ui/consts/auxiliary/cci_const_block.rs similarity index 100% rename from src/test/ui/consts/auxiliary/cci_const_block.rs rename to tests/ui/consts/auxiliary/cci_const_block.rs diff --git a/src/test/ui/consts/auxiliary/const_fn_lib.rs b/tests/ui/consts/auxiliary/const_fn_lib.rs similarity index 100% rename from src/test/ui/consts/auxiliary/const_fn_lib.rs rename to tests/ui/consts/auxiliary/const_fn_lib.rs diff --git a/src/test/ui/consts/auxiliary/external_macro.rs b/tests/ui/consts/auxiliary/external_macro.rs similarity index 100% rename from src/test/ui/consts/auxiliary/external_macro.rs rename to tests/ui/consts/auxiliary/external_macro.rs diff --git a/src/test/ui/consts/auxiliary/issue-17718-aux.rs b/tests/ui/consts/auxiliary/issue-17718-aux.rs similarity index 100% rename from src/test/ui/consts/auxiliary/issue-17718-aux.rs rename to tests/ui/consts/auxiliary/issue-17718-aux.rs diff --git a/src/test/ui/consts/auxiliary/issue-63226.rs b/tests/ui/consts/auxiliary/issue-63226.rs similarity index 100% rename from src/test/ui/consts/auxiliary/issue-63226.rs rename to tests/ui/consts/auxiliary/issue-63226.rs diff --git a/src/test/ui/consts/auxiliary/promotable_const_fn_lib.rs b/tests/ui/consts/auxiliary/promotable_const_fn_lib.rs similarity index 100% rename from src/test/ui/consts/auxiliary/promotable_const_fn_lib.rs rename to tests/ui/consts/auxiliary/promotable_const_fn_lib.rs diff --git a/src/test/ui/consts/bswap-const.rs b/tests/ui/consts/bswap-const.rs similarity index 100% rename from src/test/ui/consts/bswap-const.rs rename to tests/ui/consts/bswap-const.rs diff --git a/src/test/ui/consts/cast-discriminant-zst-enum.rs b/tests/ui/consts/cast-discriminant-zst-enum.rs similarity index 100% rename from src/test/ui/consts/cast-discriminant-zst-enum.rs rename to tests/ui/consts/cast-discriminant-zst-enum.rs diff --git a/src/test/ui/consts/chained-constants-stackoverflow.rs b/tests/ui/consts/chained-constants-stackoverflow.rs similarity index 100% rename from src/test/ui/consts/chained-constants-stackoverflow.rs rename to tests/ui/consts/chained-constants-stackoverflow.rs diff --git a/src/test/ui/consts/check_const-feature-gated.rs b/tests/ui/consts/check_const-feature-gated.rs similarity index 100% rename from src/test/ui/consts/check_const-feature-gated.rs rename to tests/ui/consts/check_const-feature-gated.rs diff --git a/src/test/ui/consts/closure-structural-match-issue-90013.rs b/tests/ui/consts/closure-structural-match-issue-90013.rs similarity index 100% rename from src/test/ui/consts/closure-structural-match-issue-90013.rs rename to tests/ui/consts/closure-structural-match-issue-90013.rs diff --git a/src/test/ui/consts/const-address-of-interior-mut.rs b/tests/ui/consts/const-address-of-interior-mut.rs similarity index 100% rename from src/test/ui/consts/const-address-of-interior-mut.rs rename to tests/ui/consts/const-address-of-interior-mut.rs diff --git a/src/test/ui/consts/const-address-of-interior-mut.stderr b/tests/ui/consts/const-address-of-interior-mut.stderr similarity index 100% rename from src/test/ui/consts/const-address-of-interior-mut.stderr rename to tests/ui/consts/const-address-of-interior-mut.stderr diff --git a/src/test/ui/consts/const-address-of-mut.rs b/tests/ui/consts/const-address-of-mut.rs similarity index 100% rename from src/test/ui/consts/const-address-of-mut.rs rename to tests/ui/consts/const-address-of-mut.rs diff --git a/src/test/ui/consts/const-address-of-mut.stderr b/tests/ui/consts/const-address-of-mut.stderr similarity index 100% rename from src/test/ui/consts/const-address-of-mut.stderr rename to tests/ui/consts/const-address-of-mut.stderr diff --git a/src/test/ui/consts/const-address-of.rs b/tests/ui/consts/const-address-of.rs similarity index 100% rename from src/test/ui/consts/const-address-of.rs rename to tests/ui/consts/const-address-of.rs diff --git a/src/test/ui/consts/const-adt-align-mismatch.rs b/tests/ui/consts/const-adt-align-mismatch.rs similarity index 100% rename from src/test/ui/consts/const-adt-align-mismatch.rs rename to tests/ui/consts/const-adt-align-mismatch.rs diff --git a/src/test/ui/consts/const-array-oob-arith.rs b/tests/ui/consts/const-array-oob-arith.rs similarity index 100% rename from src/test/ui/consts/const-array-oob-arith.rs rename to tests/ui/consts/const-array-oob-arith.rs diff --git a/src/test/ui/consts/const-array-oob-arith.stderr b/tests/ui/consts/const-array-oob-arith.stderr similarity index 100% rename from src/test/ui/consts/const-array-oob-arith.stderr rename to tests/ui/consts/const-array-oob-arith.stderr diff --git a/src/test/ui/consts/const-array-oob.rs b/tests/ui/consts/const-array-oob.rs similarity index 100% rename from src/test/ui/consts/const-array-oob.rs rename to tests/ui/consts/const-array-oob.rs diff --git a/src/test/ui/consts/const-array-oob.stderr b/tests/ui/consts/const-array-oob.stderr similarity index 100% rename from src/test/ui/consts/const-array-oob.stderr rename to tests/ui/consts/const-array-oob.stderr diff --git a/src/test/ui/consts/const-as-fn.rs b/tests/ui/consts/const-as-fn.rs similarity index 100% rename from src/test/ui/consts/const-as-fn.rs rename to tests/ui/consts/const-as-fn.rs diff --git a/src/test/ui/consts/const-as-fn.stderr b/tests/ui/consts/const-as-fn.stderr similarity index 100% rename from src/test/ui/consts/const-as-fn.stderr rename to tests/ui/consts/const-as-fn.stderr diff --git a/src/test/ui/consts/const-autoderef.rs b/tests/ui/consts/const-autoderef.rs similarity index 100% rename from src/test/ui/consts/const-autoderef.rs rename to tests/ui/consts/const-autoderef.rs diff --git a/src/test/ui/consts/const-big-enum.rs b/tests/ui/consts/const-big-enum.rs similarity index 100% rename from src/test/ui/consts/const-big-enum.rs rename to tests/ui/consts/const-big-enum.rs diff --git a/src/test/ui/consts/const-binops.rs b/tests/ui/consts/const-binops.rs similarity index 100% rename from src/test/ui/consts/const-binops.rs rename to tests/ui/consts/const-binops.rs diff --git a/src/test/ui/consts/const-bitshift-rhs-inference.rs b/tests/ui/consts/const-bitshift-rhs-inference.rs similarity index 100% rename from src/test/ui/consts/const-bitshift-rhs-inference.rs rename to tests/ui/consts/const-bitshift-rhs-inference.rs diff --git a/src/test/ui/consts/const-block-const-bound.rs b/tests/ui/consts/const-block-const-bound.rs similarity index 100% rename from src/test/ui/consts/const-block-const-bound.rs rename to tests/ui/consts/const-block-const-bound.rs diff --git a/src/test/ui/consts/const-block-const-bound.stderr b/tests/ui/consts/const-block-const-bound.stderr similarity index 100% rename from src/test/ui/consts/const-block-const-bound.stderr rename to tests/ui/consts/const-block-const-bound.stderr diff --git a/src/test/ui/consts/const-block-cross-crate-fn.rs b/tests/ui/consts/const-block-cross-crate-fn.rs similarity index 100% rename from src/test/ui/consts/const-block-cross-crate-fn.rs rename to tests/ui/consts/const-block-cross-crate-fn.rs diff --git a/src/test/ui/consts/const-block-item-macro-codegen.rs b/tests/ui/consts/const-block-item-macro-codegen.rs similarity index 100% rename from src/test/ui/consts/const-block-item-macro-codegen.rs rename to tests/ui/consts/const-block-item-macro-codegen.rs diff --git a/src/test/ui/consts/const-block-item.rs b/tests/ui/consts/const-block-item.rs similarity index 100% rename from src/test/ui/consts/const-block-item.rs rename to tests/ui/consts/const-block-item.rs diff --git a/src/test/ui/consts/const-block-non-item-statement-3.rs b/tests/ui/consts/const-block-non-item-statement-3.rs similarity index 100% rename from src/test/ui/consts/const-block-non-item-statement-3.rs rename to tests/ui/consts/const-block-non-item-statement-3.rs diff --git a/src/test/ui/consts/const-block-non-item-statement-rpass.rs b/tests/ui/consts/const-block-non-item-statement-rpass.rs similarity index 100% rename from src/test/ui/consts/const-block-non-item-statement-rpass.rs rename to tests/ui/consts/const-block-non-item-statement-rpass.rs diff --git a/src/test/ui/consts/const-block-non-item-statement.rs b/tests/ui/consts/const-block-non-item-statement.rs similarity index 100% rename from src/test/ui/consts/const-block-non-item-statement.rs rename to tests/ui/consts/const-block-non-item-statement.rs diff --git a/src/test/ui/consts/const-block.rs b/tests/ui/consts/const-block.rs similarity index 100% rename from src/test/ui/consts/const-block.rs rename to tests/ui/consts/const-block.rs diff --git a/src/test/ui/consts/const-blocks/const-repeat.rs b/tests/ui/consts/const-blocks/const-repeat.rs similarity index 100% rename from src/test/ui/consts/const-blocks/const-repeat.rs rename to tests/ui/consts/const-blocks/const-repeat.rs diff --git a/src/test/ui/consts/const-blocks/fn-call-in-const.rs b/tests/ui/consts/const-blocks/fn-call-in-const.rs similarity index 100% rename from src/test/ui/consts/const-blocks/fn-call-in-const.rs rename to tests/ui/consts/const-blocks/fn-call-in-const.rs diff --git a/src/test/ui/consts/const-blocks/fn-call-in-non-const.rs b/tests/ui/consts/const-blocks/fn-call-in-non-const.rs similarity index 100% rename from src/test/ui/consts/const-blocks/fn-call-in-non-const.rs rename to tests/ui/consts/const-blocks/fn-call-in-non-const.rs diff --git a/src/test/ui/consts/const-blocks/fn-call-in-non-const.stderr b/tests/ui/consts/const-blocks/fn-call-in-non-const.stderr similarity index 100% rename from src/test/ui/consts/const-blocks/fn-call-in-non-const.stderr rename to tests/ui/consts/const-blocks/fn-call-in-non-const.stderr diff --git a/src/test/ui/consts/const-blocks/migrate-fail.rs b/tests/ui/consts/const-blocks/migrate-fail.rs similarity index 100% rename from src/test/ui/consts/const-blocks/migrate-fail.rs rename to tests/ui/consts/const-blocks/migrate-fail.rs diff --git a/src/test/ui/consts/const-blocks/migrate-fail.stderr b/tests/ui/consts/const-blocks/migrate-fail.stderr similarity index 100% rename from src/test/ui/consts/const-blocks/migrate-fail.stderr rename to tests/ui/consts/const-blocks/migrate-fail.stderr diff --git a/src/test/ui/consts/const-blocks/migrate-pass.rs b/tests/ui/consts/const-blocks/migrate-pass.rs similarity index 100% rename from src/test/ui/consts/const-blocks/migrate-pass.rs rename to tests/ui/consts/const-blocks/migrate-pass.rs diff --git a/src/test/ui/consts/const-blocks/nll-fail.rs b/tests/ui/consts/const-blocks/nll-fail.rs similarity index 100% rename from src/test/ui/consts/const-blocks/nll-fail.rs rename to tests/ui/consts/const-blocks/nll-fail.rs diff --git a/src/test/ui/consts/const-blocks/nll-fail.stderr b/tests/ui/consts/const-blocks/nll-fail.stderr similarity index 100% rename from src/test/ui/consts/const-blocks/nll-fail.stderr rename to tests/ui/consts/const-blocks/nll-fail.stderr diff --git a/src/test/ui/consts/const-blocks/nll-pass.rs b/tests/ui/consts/const-blocks/nll-pass.rs similarity index 100% rename from src/test/ui/consts/const-blocks/nll-pass.rs rename to tests/ui/consts/const-blocks/nll-pass.rs diff --git a/src/test/ui/consts/const-blocks/run-pass.rs b/tests/ui/consts/const-blocks/run-pass.rs similarity index 100% rename from src/test/ui/consts/const-blocks/run-pass.rs rename to tests/ui/consts/const-blocks/run-pass.rs diff --git a/src/test/ui/consts/const-blocks/trait-error.rs b/tests/ui/consts/const-blocks/trait-error.rs similarity index 100% rename from src/test/ui/consts/const-blocks/trait-error.rs rename to tests/ui/consts/const-blocks/trait-error.rs diff --git a/src/test/ui/consts/const-blocks/trait-error.stderr b/tests/ui/consts/const-blocks/trait-error.stderr similarity index 100% rename from src/test/ui/consts/const-blocks/trait-error.stderr rename to tests/ui/consts/const-blocks/trait-error.stderr diff --git a/src/test/ui/consts/const-bound.rs b/tests/ui/consts/const-bound.rs similarity index 100% rename from src/test/ui/consts/const-bound.rs rename to tests/ui/consts/const-bound.rs diff --git a/src/test/ui/consts/const-byte-str-cast.rs b/tests/ui/consts/const-byte-str-cast.rs similarity index 100% rename from src/test/ui/consts/const-byte-str-cast.rs rename to tests/ui/consts/const-byte-str-cast.rs diff --git a/src/test/ui/consts/const-call.rs b/tests/ui/consts/const-call.rs similarity index 100% rename from src/test/ui/consts/const-call.rs rename to tests/ui/consts/const-call.rs diff --git a/src/test/ui/consts/const-call.stderr b/tests/ui/consts/const-call.stderr similarity index 100% rename from src/test/ui/consts/const-call.stderr rename to tests/ui/consts/const-call.stderr diff --git a/src/test/ui/consts/const-cast-different-types.rs b/tests/ui/consts/const-cast-different-types.rs similarity index 100% rename from src/test/ui/consts/const-cast-different-types.rs rename to tests/ui/consts/const-cast-different-types.rs diff --git a/src/test/ui/consts/const-cast-different-types.stderr b/tests/ui/consts/const-cast-different-types.stderr similarity index 100% rename from src/test/ui/consts/const-cast-different-types.stderr rename to tests/ui/consts/const-cast-different-types.stderr diff --git a/src/test/ui/consts/const-cast-ptr-int.rs b/tests/ui/consts/const-cast-ptr-int.rs similarity index 100% rename from src/test/ui/consts/const-cast-ptr-int.rs rename to tests/ui/consts/const-cast-ptr-int.rs diff --git a/src/test/ui/consts/const-cast-wrong-type.rs b/tests/ui/consts/const-cast-wrong-type.rs similarity index 100% rename from src/test/ui/consts/const-cast-wrong-type.rs rename to tests/ui/consts/const-cast-wrong-type.rs diff --git a/src/test/ui/consts/const-cast-wrong-type.stderr b/tests/ui/consts/const-cast-wrong-type.stderr similarity index 100% rename from src/test/ui/consts/const-cast-wrong-type.stderr rename to tests/ui/consts/const-cast-wrong-type.stderr diff --git a/src/test/ui/consts/const-cast.rs b/tests/ui/consts/const-cast.rs similarity index 100% rename from src/test/ui/consts/const-cast.rs rename to tests/ui/consts/const-cast.rs diff --git a/src/test/ui/consts/const-const.rs b/tests/ui/consts/const-const.rs similarity index 100% rename from src/test/ui/consts/const-const.rs rename to tests/ui/consts/const-const.rs diff --git a/src/test/ui/consts/const-contents.rs b/tests/ui/consts/const-contents.rs similarity index 100% rename from src/test/ui/consts/const-contents.rs rename to tests/ui/consts/const-contents.rs diff --git a/src/test/ui/consts/const-deref-ptr.rs b/tests/ui/consts/const-deref-ptr.rs similarity index 100% rename from src/test/ui/consts/const-deref-ptr.rs rename to tests/ui/consts/const-deref-ptr.rs diff --git a/src/test/ui/consts/const-deref-ptr.stderr b/tests/ui/consts/const-deref-ptr.stderr similarity index 100% rename from src/test/ui/consts/const-deref-ptr.stderr rename to tests/ui/consts/const-deref-ptr.stderr diff --git a/src/test/ui/consts/const-deref.rs b/tests/ui/consts/const-deref.rs similarity index 100% rename from src/test/ui/consts/const-deref.rs rename to tests/ui/consts/const-deref.rs diff --git a/src/test/ui/consts/const-endianess.rs b/tests/ui/consts/const-endianess.rs similarity index 100% rename from src/test/ui/consts/const-endianess.rs rename to tests/ui/consts/const-endianess.rs diff --git a/src/test/ui/consts/const-enum-byref-self.rs b/tests/ui/consts/const-enum-byref-self.rs similarity index 100% rename from src/test/ui/consts/const-enum-byref-self.rs rename to tests/ui/consts/const-enum-byref-self.rs diff --git a/src/test/ui/consts/const-enum-byref.rs b/tests/ui/consts/const-enum-byref.rs similarity index 100% rename from src/test/ui/consts/const-enum-byref.rs rename to tests/ui/consts/const-enum-byref.rs diff --git a/src/test/ui/consts/const-enum-cast.rs b/tests/ui/consts/const-enum-cast.rs similarity index 100% rename from src/test/ui/consts/const-enum-cast.rs rename to tests/ui/consts/const-enum-cast.rs diff --git a/src/test/ui/consts/const-enum-ptr.rs b/tests/ui/consts/const-enum-ptr.rs similarity index 100% rename from src/test/ui/consts/const-enum-ptr.rs rename to tests/ui/consts/const-enum-ptr.rs diff --git a/src/test/ui/consts/const-enum-struct.rs b/tests/ui/consts/const-enum-struct.rs similarity index 100% rename from src/test/ui/consts/const-enum-struct.rs rename to tests/ui/consts/const-enum-struct.rs diff --git a/src/test/ui/consts/const-enum-struct2.rs b/tests/ui/consts/const-enum-struct2.rs similarity index 100% rename from src/test/ui/consts/const-enum-struct2.rs rename to tests/ui/consts/const-enum-struct2.rs diff --git a/src/test/ui/consts/const-enum-structlike.rs b/tests/ui/consts/const-enum-structlike.rs similarity index 100% rename from src/test/ui/consts/const-enum-structlike.rs rename to tests/ui/consts/const-enum-structlike.rs diff --git a/src/test/ui/consts/const-enum-tuple.rs b/tests/ui/consts/const-enum-tuple.rs similarity index 100% rename from src/test/ui/consts/const-enum-tuple.rs rename to tests/ui/consts/const-enum-tuple.rs diff --git a/src/test/ui/consts/const-enum-tuple2.rs b/tests/ui/consts/const-enum-tuple2.rs similarity index 100% rename from src/test/ui/consts/const-enum-tuple2.rs rename to tests/ui/consts/const-enum-tuple2.rs diff --git a/src/test/ui/consts/const-enum-tuplestruct.rs b/tests/ui/consts/const-enum-tuplestruct.rs similarity index 100% rename from src/test/ui/consts/const-enum-tuplestruct.rs rename to tests/ui/consts/const-enum-tuplestruct.rs diff --git a/src/test/ui/consts/const-enum-tuplestruct2.rs b/tests/ui/consts/const-enum-tuplestruct2.rs similarity index 100% rename from src/test/ui/consts/const-enum-tuplestruct2.rs rename to tests/ui/consts/const-enum-tuplestruct2.rs diff --git a/src/test/ui/consts/const-enum-vec-index.rs b/tests/ui/consts/const-enum-vec-index.rs similarity index 100% rename from src/test/ui/consts/const-enum-vec-index.rs rename to tests/ui/consts/const-enum-vec-index.rs diff --git a/src/test/ui/consts/const-enum-vec-ptr.rs b/tests/ui/consts/const-enum-vec-ptr.rs similarity index 100% rename from src/test/ui/consts/const-enum-vec-ptr.rs rename to tests/ui/consts/const-enum-vec-ptr.rs diff --git a/src/test/ui/consts/const-enum-vector.rs b/tests/ui/consts/const-enum-vector.rs similarity index 100% rename from src/test/ui/consts/const-enum-vector.rs rename to tests/ui/consts/const-enum-vector.rs diff --git a/src/test/ui/consts/const-err-early.rs b/tests/ui/consts/const-err-early.rs similarity index 100% rename from src/test/ui/consts/const-err-early.rs rename to tests/ui/consts/const-err-early.rs diff --git a/src/test/ui/consts/const-err-early.stderr b/tests/ui/consts/const-err-early.stderr similarity index 100% rename from src/test/ui/consts/const-err-early.stderr rename to tests/ui/consts/const-err-early.stderr diff --git a/src/test/ui/consts/const-err-late.rs b/tests/ui/consts/const-err-late.rs similarity index 100% rename from src/test/ui/consts/const-err-late.rs rename to tests/ui/consts/const-err-late.rs diff --git a/src/test/ui/consts/const-err-late.stderr b/tests/ui/consts/const-err-late.stderr similarity index 100% rename from src/test/ui/consts/const-err-late.stderr rename to tests/ui/consts/const-err-late.stderr diff --git a/src/test/ui/consts/const-err-multi.rs b/tests/ui/consts/const-err-multi.rs similarity index 100% rename from src/test/ui/consts/const-err-multi.rs rename to tests/ui/consts/const-err-multi.rs diff --git a/src/test/ui/consts/const-err-multi.stderr b/tests/ui/consts/const-err-multi.stderr similarity index 100% rename from src/test/ui/consts/const-err-multi.stderr rename to tests/ui/consts/const-err-multi.stderr diff --git a/src/test/ui/consts/const-err-rpass.rs b/tests/ui/consts/const-err-rpass.rs similarity index 100% rename from src/test/ui/consts/const-err-rpass.rs rename to tests/ui/consts/const-err-rpass.rs diff --git a/src/test/ui/consts/const-err2.noopt.stderr b/tests/ui/consts/const-err2.noopt.stderr similarity index 100% rename from src/test/ui/consts/const-err2.noopt.stderr rename to tests/ui/consts/const-err2.noopt.stderr diff --git a/src/test/ui/consts/const-err2.opt.stderr b/tests/ui/consts/const-err2.opt.stderr similarity index 100% rename from src/test/ui/consts/const-err2.opt.stderr rename to tests/ui/consts/const-err2.opt.stderr diff --git a/src/test/ui/consts/const-err2.opt_with_overflow_checks.stderr b/tests/ui/consts/const-err2.opt_with_overflow_checks.stderr similarity index 100% rename from src/test/ui/consts/const-err2.opt_with_overflow_checks.stderr rename to tests/ui/consts/const-err2.opt_with_overflow_checks.stderr diff --git a/src/test/ui/consts/const-err2.rs b/tests/ui/consts/const-err2.rs similarity index 100% rename from src/test/ui/consts/const-err2.rs rename to tests/ui/consts/const-err2.rs diff --git a/src/test/ui/consts/const-err4.32bit.stderr b/tests/ui/consts/const-err4.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-err4.32bit.stderr rename to tests/ui/consts/const-err4.32bit.stderr diff --git a/src/test/ui/consts/const-err4.64bit.stderr b/tests/ui/consts/const-err4.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-err4.64bit.stderr rename to tests/ui/consts/const-err4.64bit.stderr diff --git a/src/test/ui/consts/const-err4.rs b/tests/ui/consts/const-err4.rs similarity index 100% rename from src/test/ui/consts/const-err4.rs rename to tests/ui/consts/const-err4.rs diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs b/tests/ui/consts/const-eval/assign-to-static-within-other-static.rs similarity index 100% rename from src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs rename to tests/ui/consts/const-eval/assign-to-static-within-other-static.rs diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr b/tests/ui/consts/const-eval/assign-to-static-within-other-static.stderr similarity index 100% rename from src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr rename to tests/ui/consts/const-eval/assign-to-static-within-other-static.stderr diff --git a/src/test/ui/consts/const-eval/auxiliary/post_monomorphization_error.rs b/tests/ui/consts/const-eval/auxiliary/post_monomorphization_error.rs similarity index 100% rename from src/test/ui/consts/const-eval/auxiliary/post_monomorphization_error.rs rename to tests/ui/consts/const-eval/auxiliary/post_monomorphization_error.rs diff --git a/src/test/ui/consts/const-eval/auxiliary/stability.rs b/tests/ui/consts/const-eval/auxiliary/stability.rs similarity index 100% rename from src/test/ui/consts/const-eval/auxiliary/stability.rs rename to tests/ui/consts/const-eval/auxiliary/stability.rs diff --git a/src/test/ui/consts/const-eval/conditional_array_execution.rs b/tests/ui/consts/const-eval/conditional_array_execution.rs similarity index 100% rename from src/test/ui/consts/const-eval/conditional_array_execution.rs rename to tests/ui/consts/const-eval/conditional_array_execution.rs diff --git a/src/test/ui/consts/const-eval/conditional_array_execution.stderr b/tests/ui/consts/const-eval/conditional_array_execution.stderr similarity index 100% rename from src/test/ui/consts/const-eval/conditional_array_execution.stderr rename to tests/ui/consts/const-eval/conditional_array_execution.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-intrinsic-promotion.rs b/tests/ui/consts/const-eval/const-eval-intrinsic-promotion.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-intrinsic-promotion.rs rename to tests/ui/consts/const-eval/const-eval-intrinsic-promotion.rs diff --git a/src/test/ui/consts/const-eval/const-eval-intrinsic-promotion.stderr b/tests/ui/consts/const-eval/const-eval-intrinsic-promotion.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-intrinsic-promotion.stderr rename to tests/ui/consts/const-eval/const-eval-intrinsic-promotion.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-2.rs b/tests/ui/consts/const-eval/const-eval-overflow-2.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-2.rs rename to tests/ui/consts/const-eval/const-eval-overflow-2.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-2.stderr b/tests/ui/consts/const-eval/const-eval-overflow-2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-2.stderr rename to tests/ui/consts/const-eval/const-eval-overflow-2.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-3.rs b/tests/ui/consts/const-eval/const-eval-overflow-3.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-3.rs rename to tests/ui/consts/const-eval/const-eval-overflow-3.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-3.stderr b/tests/ui/consts/const-eval/const-eval-overflow-3.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-3.stderr rename to tests/ui/consts/const-eval/const-eval-overflow-3.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-3b.rs b/tests/ui/consts/const-eval/const-eval-overflow-3b.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-3b.rs rename to tests/ui/consts/const-eval/const-eval-overflow-3b.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-3b.stderr b/tests/ui/consts/const-eval/const-eval-overflow-3b.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-3b.stderr rename to tests/ui/consts/const-eval/const-eval-overflow-3b.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-4.rs b/tests/ui/consts/const-eval/const-eval-overflow-4.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-4.rs rename to tests/ui/consts/const-eval/const-eval-overflow-4.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-4.stderr b/tests/ui/consts/const-eval/const-eval-overflow-4.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-4.stderr rename to tests/ui/consts/const-eval/const-eval-overflow-4.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-4b.rs b/tests/ui/consts/const-eval/const-eval-overflow-4b.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-4b.rs rename to tests/ui/consts/const-eval/const-eval-overflow-4b.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow-4b.stderr b/tests/ui/consts/const-eval/const-eval-overflow-4b.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow-4b.stderr rename to tests/ui/consts/const-eval/const-eval-overflow-4b.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2.rs b/tests/ui/consts/const-eval/const-eval-overflow2.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2.rs rename to tests/ui/consts/const-eval/const-eval-overflow2.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2.stderr b/tests/ui/consts/const-eval/const-eval-overflow2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2.stderr rename to tests/ui/consts/const-eval/const-eval-overflow2.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2b.rs b/tests/ui/consts/const-eval/const-eval-overflow2b.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2b.rs rename to tests/ui/consts/const-eval/const-eval-overflow2b.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2b.stderr b/tests/ui/consts/const-eval/const-eval-overflow2b.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2b.stderr rename to tests/ui/consts/const-eval/const-eval-overflow2b.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2c.rs b/tests/ui/consts/const-eval/const-eval-overflow2c.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2c.rs rename to tests/ui/consts/const-eval/const-eval-overflow2c.rs diff --git a/src/test/ui/consts/const-eval/const-eval-overflow2c.stderr b/tests/ui/consts/const-eval/const-eval-overflow2c.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-overflow2c.stderr rename to tests/ui/consts/const-eval/const-eval-overflow2c.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-query-stack.rs b/tests/ui/consts/const-eval/const-eval-query-stack.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-query-stack.rs rename to tests/ui/consts/const-eval/const-eval-query-stack.rs diff --git a/src/test/ui/consts/const-eval/const-eval-query-stack.stderr b/tests/ui/consts/const-eval/const-eval-query-stack.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-query-stack.stderr rename to tests/ui/consts/const-eval/const-eval-query-stack.stderr diff --git a/src/test/ui/consts/const-eval/const-eval-span.rs b/tests/ui/consts/const-eval/const-eval-span.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-span.rs rename to tests/ui/consts/const-eval/const-eval-span.rs diff --git a/src/test/ui/consts/const-eval/const-eval-span.stderr b/tests/ui/consts/const-eval/const-eval-span.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-eval-span.stderr rename to tests/ui/consts/const-eval/const-eval-span.stderr diff --git a/src/test/ui/consts/const-eval/const-pointer-values-in-various-types.64bit.stderr b/tests/ui/consts/const-eval/const-pointer-values-in-various-types.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const-pointer-values-in-various-types.64bit.stderr rename to tests/ui/consts/const-eval/const-pointer-values-in-various-types.64bit.stderr diff --git a/src/test/ui/consts/const-eval/const-pointer-values-in-various-types.rs b/tests/ui/consts/const-eval/const-pointer-values-in-various-types.rs similarity index 100% rename from src/test/ui/consts/const-eval/const-pointer-values-in-various-types.rs rename to tests/ui/consts/const-eval/const-pointer-values-in-various-types.rs diff --git a/src/test/ui/consts/const-eval/const_fn_ptr.rs b/tests/ui/consts/const-eval/const_fn_ptr.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr.rs rename to tests/ui/consts/const-eval/const_fn_ptr.rs diff --git a/src/test/ui/consts/const-eval/const_fn_ptr.stderr b/tests/ui/consts/const-eval/const_fn_ptr.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr.stderr rename to tests/ui/consts/const-eval/const_fn_ptr.stderr diff --git a/src/test/ui/consts/const-eval/const_fn_ptr_fail.rs b/tests/ui/consts/const-eval/const_fn_ptr_fail.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr_fail.rs rename to tests/ui/consts/const-eval/const_fn_ptr_fail.rs diff --git a/src/test/ui/consts/const-eval/const_fn_ptr_fail.stderr b/tests/ui/consts/const-eval/const_fn_ptr_fail.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr_fail.stderr rename to tests/ui/consts/const-eval/const_fn_ptr_fail.stderr diff --git a/src/test/ui/consts/const-eval/const_fn_ptr_fail2.rs b/tests/ui/consts/const-eval/const_fn_ptr_fail2.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr_fail2.rs rename to tests/ui/consts/const-eval/const_fn_ptr_fail2.rs diff --git a/src/test/ui/consts/const-eval/const_fn_ptr_fail2.stderr b/tests/ui/consts/const-eval/const_fn_ptr_fail2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_fn_ptr_fail2.stderr rename to tests/ui/consts/const-eval/const_fn_ptr_fail2.stderr diff --git a/src/test/ui/consts/const-eval/const_let.rs b/tests/ui/consts/const-eval/const_let.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_let.rs rename to tests/ui/consts/const-eval/const_let.rs diff --git a/src/test/ui/consts/const-eval/const_let.stderr b/tests/ui/consts/const-eval/const_let.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_let.stderr rename to tests/ui/consts/const-eval/const_let.stderr diff --git a/src/test/ui/consts/const-eval/const_panic.rs b/tests/ui/consts/const-eval/const_panic.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_panic.rs rename to tests/ui/consts/const-eval/const_panic.rs diff --git a/src/test/ui/consts/const-eval/const_panic.stderr b/tests/ui/consts/const-eval/const_panic.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic.stderr rename to tests/ui/consts/const-eval/const_panic.stderr diff --git a/src/test/ui/consts/const-eval/const_panic_2021.rs b/tests/ui/consts/const-eval/const_panic_2021.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_2021.rs rename to tests/ui/consts/const-eval/const_panic_2021.rs diff --git a/src/test/ui/consts/const-eval/const_panic_2021.stderr b/tests/ui/consts/const-eval/const_panic_2021.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_2021.stderr rename to tests/ui/consts/const-eval/const_panic_2021.stderr diff --git a/src/test/ui/consts/const-eval/const_panic_libcore_bin.rs b/tests/ui/consts/const-eval/const_panic_libcore_bin.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_libcore_bin.rs rename to tests/ui/consts/const-eval/const_panic_libcore_bin.rs diff --git a/src/test/ui/consts/const-eval/const_panic_libcore_bin.stderr b/tests/ui/consts/const-eval/const_panic_libcore_bin.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_libcore_bin.stderr rename to tests/ui/consts/const-eval/const_panic_libcore_bin.stderr diff --git a/src/test/ui/consts/const-eval/const_panic_stability.e2018.stderr b/tests/ui/consts/const-eval/const_panic_stability.e2018.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_stability.e2018.stderr rename to tests/ui/consts/const-eval/const_panic_stability.e2018.stderr diff --git a/src/test/ui/consts/const-eval/const_panic_stability.e2021.stderr b/tests/ui/consts/const-eval/const_panic_stability.e2021.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_stability.e2021.stderr rename to tests/ui/consts/const-eval/const_panic_stability.e2021.stderr diff --git a/src/test/ui/consts/const-eval/const_panic_stability.rs b/tests/ui/consts/const-eval/const_panic_stability.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_stability.rs rename to tests/ui/consts/const-eval/const_panic_stability.rs diff --git a/src/test/ui/consts/const-eval/const_panic_track_caller.rs b/tests/ui/consts/const-eval/const_panic_track_caller.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_track_caller.rs rename to tests/ui/consts/const-eval/const_panic_track_caller.rs diff --git a/src/test/ui/consts/const-eval/const_panic_track_caller.stderr b/tests/ui/consts/const-eval/const_panic_track_caller.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_panic_track_caller.stderr rename to tests/ui/consts/const-eval/const_panic_track_caller.stderr diff --git a/src/test/ui/consts/const-eval/const_prop_errors.rs b/tests/ui/consts/const-eval/const_prop_errors.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_prop_errors.rs rename to tests/ui/consts/const-eval/const_prop_errors.rs diff --git a/src/test/ui/consts/const-eval/const_raw_ptr_ops.rs b/tests/ui/consts/const-eval/const_raw_ptr_ops.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_raw_ptr_ops.rs rename to tests/ui/consts/const-eval/const_raw_ptr_ops.rs diff --git a/src/test/ui/consts/const-eval/const_raw_ptr_ops.stderr b/tests/ui/consts/const-eval/const_raw_ptr_ops.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_raw_ptr_ops.stderr rename to tests/ui/consts/const-eval/const_raw_ptr_ops.stderr diff --git a/src/test/ui/consts/const-eval/const_raw_ptr_ops2.rs b/tests/ui/consts/const-eval/const_raw_ptr_ops2.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_raw_ptr_ops2.rs rename to tests/ui/consts/const-eval/const_raw_ptr_ops2.rs diff --git a/src/test/ui/consts/const-eval/const_raw_ptr_ops2.stderr b/tests/ui/consts/const-eval/const_raw_ptr_ops2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/const_raw_ptr_ops2.stderr rename to tests/ui/consts/const-eval/const_raw_ptr_ops2.stderr diff --git a/src/test/ui/consts/const-eval/const_signed_pat.rs b/tests/ui/consts/const-eval/const_signed_pat.rs similarity index 100% rename from src/test/ui/consts/const-eval/const_signed_pat.rs rename to tests/ui/consts/const-eval/const_signed_pat.rs diff --git a/src/test/ui/consts/const-eval/dangling.rs b/tests/ui/consts/const-eval/dangling.rs similarity index 100% rename from src/test/ui/consts/const-eval/dangling.rs rename to tests/ui/consts/const-eval/dangling.rs diff --git a/src/test/ui/consts/const-eval/dangling.stderr b/tests/ui/consts/const-eval/dangling.stderr similarity index 100% rename from src/test/ui/consts/const-eval/dangling.stderr rename to tests/ui/consts/const-eval/dangling.stderr diff --git a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs similarity index 100% rename from src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs rename to tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs diff --git a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.stderr b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn.stderr similarity index 100% rename from src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.stderr rename to tests/ui/consts/const-eval/dont_promote_unstable_const_fn.stderr diff --git a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.rs b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.rs similarity index 100% rename from src/test/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.rs rename to tests/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.rs diff --git a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.stderr b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.stderr similarity index 100% rename from src/test/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.stderr rename to tests/ui/consts/const-eval/dont_promote_unstable_const_fn_cross_crate.stderr diff --git a/src/test/ui/consts/const-eval/double_check.rs b/tests/ui/consts/const-eval/double_check.rs similarity index 100% rename from src/test/ui/consts/const-eval/double_check.rs rename to tests/ui/consts/const-eval/double_check.rs diff --git a/src/test/ui/consts/const-eval/double_check2.rs b/tests/ui/consts/const-eval/double_check2.rs similarity index 100% rename from src/test/ui/consts/const-eval/double_check2.rs rename to tests/ui/consts/const-eval/double_check2.rs diff --git a/src/test/ui/consts/const-eval/duration_conversion.rs b/tests/ui/consts/const-eval/duration_conversion.rs similarity index 100% rename from src/test/ui/consts/const-eval/duration_conversion.rs rename to tests/ui/consts/const-eval/duration_conversion.rs diff --git a/src/test/ui/consts/const-eval/enum_discr.rs b/tests/ui/consts/const-eval/enum_discr.rs similarity index 100% rename from src/test/ui/consts/const-eval/enum_discr.rs rename to tests/ui/consts/const-eval/enum_discr.rs diff --git a/src/test/ui/consts/const-eval/erroneous-const.rs b/tests/ui/consts/const-eval/erroneous-const.rs similarity index 100% rename from src/test/ui/consts/const-eval/erroneous-const.rs rename to tests/ui/consts/const-eval/erroneous-const.rs diff --git a/src/test/ui/consts/const-eval/erroneous-const.stderr b/tests/ui/consts/const-eval/erroneous-const.stderr similarity index 100% rename from src/test/ui/consts/const-eval/erroneous-const.stderr rename to tests/ui/consts/const-eval/erroneous-const.stderr diff --git a/src/test/ui/consts/const-eval/erroneous-const2.rs b/tests/ui/consts/const-eval/erroneous-const2.rs similarity index 100% rename from src/test/ui/consts/const-eval/erroneous-const2.rs rename to tests/ui/consts/const-eval/erroneous-const2.rs diff --git a/src/test/ui/consts/const-eval/erroneous-const2.stderr b/tests/ui/consts/const-eval/erroneous-const2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/erroneous-const2.stderr rename to tests/ui/consts/const-eval/erroneous-const2.stderr diff --git a/src/test/ui/consts/const-eval/extern_fat_pointer.rs b/tests/ui/consts/const-eval/extern_fat_pointer.rs similarity index 100% rename from src/test/ui/consts/const-eval/extern_fat_pointer.rs rename to tests/ui/consts/const-eval/extern_fat_pointer.rs diff --git a/src/test/ui/consts/const-eval/format.rs b/tests/ui/consts/const-eval/format.rs similarity index 100% rename from src/test/ui/consts/const-eval/format.rs rename to tests/ui/consts/const-eval/format.rs diff --git a/src/test/ui/consts/const-eval/format.stderr b/tests/ui/consts/const-eval/format.stderr similarity index 100% rename from src/test/ui/consts/const-eval/format.stderr rename to tests/ui/consts/const-eval/format.stderr diff --git a/src/test/ui/consts/const-eval/generic-slice.rs b/tests/ui/consts/const-eval/generic-slice.rs similarity index 100% rename from src/test/ui/consts/const-eval/generic-slice.rs rename to tests/ui/consts/const-eval/generic-slice.rs diff --git a/src/test/ui/consts/const-eval/generic-slice.stderr b/tests/ui/consts/const-eval/generic-slice.stderr similarity index 100% rename from src/test/ui/consts/const-eval/generic-slice.stderr rename to tests/ui/consts/const-eval/generic-slice.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_errors.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_errors.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_errors.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_errors.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_errors.stderr b/tests/ui/consts/const-eval/heap/alloc_intrinsic_errors.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_errors.stderr rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_errors.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr b/tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_transient.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_transient.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_transient.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_transient.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.32bit.stderr b/tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.32bit.stderr rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.32bit.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.64bit.stderr b/tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.64bit.stderr rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.64bit.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_uninit.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_uninit.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_untyped.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_untyped.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_untyped.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_untyped.rs diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_untyped.stderr b/tests/ui/consts/const-eval/heap/alloc_intrinsic_untyped.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_untyped.stderr rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_untyped.stderr diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_zero_sized.rs b/tests/ui/consts/const-eval/heap/alloc_intrinsic_zero_sized.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/alloc_intrinsic_zero_sized.rs rename to tests/ui/consts/const-eval/heap/alloc_intrinsic_zero_sized.rs diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic.rs b/tests/ui/consts/const-eval/heap/dealloc_intrinsic.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic.rs rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic.rs diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.rs b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.rs rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.rs diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.stderr b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.stderr rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_dangling.stderr diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.rs b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.rs rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.rs diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.stderr b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.stderr rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_duplicate.stderr diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.rs b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.rs rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.rs diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.stderr b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.stderr similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.stderr rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_incorrect_layout.stderr diff --git a/src/test/ui/consts/const-eval/heap/dealloc_intrinsic_zero_sized.rs b/tests/ui/consts/const-eval/heap/dealloc_intrinsic_zero_sized.rs similarity index 100% rename from src/test/ui/consts/const-eval/heap/dealloc_intrinsic_zero_sized.rs rename to tests/ui/consts/const-eval/heap/dealloc_intrinsic_zero_sized.rs diff --git a/src/test/ui/consts/const-eval/ice-generic-assoc-const.rs b/tests/ui/consts/const-eval/ice-generic-assoc-const.rs similarity index 100% rename from src/test/ui/consts/const-eval/ice-generic-assoc-const.rs rename to tests/ui/consts/const-eval/ice-generic-assoc-const.rs diff --git a/src/test/ui/consts/const-eval/ice-packed.rs b/tests/ui/consts/const-eval/ice-packed.rs similarity index 100% rename from src/test/ui/consts/const-eval/ice-packed.rs rename to tests/ui/consts/const-eval/ice-packed.rs diff --git a/src/test/ui/consts/const-eval/index-out-of-bounds-never-type.rs b/tests/ui/consts/const-eval/index-out-of-bounds-never-type.rs similarity index 100% rename from src/test/ui/consts/const-eval/index-out-of-bounds-never-type.rs rename to tests/ui/consts/const-eval/index-out-of-bounds-never-type.rs diff --git a/src/test/ui/consts/const-eval/index-out-of-bounds-never-type.stderr b/tests/ui/consts/const-eval/index-out-of-bounds-never-type.stderr similarity index 100% rename from src/test/ui/consts/const-eval/index-out-of-bounds-never-type.stderr rename to tests/ui/consts/const-eval/index-out-of-bounds-never-type.stderr diff --git a/src/test/ui/consts/const-eval/index_out_of_bounds.rs b/tests/ui/consts/const-eval/index_out_of_bounds.rs similarity index 100% rename from src/test/ui/consts/const-eval/index_out_of_bounds.rs rename to tests/ui/consts/const-eval/index_out_of_bounds.rs diff --git a/src/test/ui/consts/const-eval/index_out_of_bounds.stderr b/tests/ui/consts/const-eval/index_out_of_bounds.stderr similarity index 100% rename from src/test/ui/consts/const-eval/index_out_of_bounds.stderr rename to tests/ui/consts/const-eval/index_out_of_bounds.stderr diff --git a/src/test/ui/consts/const-eval/index_out_of_bounds_propagated.rs b/tests/ui/consts/const-eval/index_out_of_bounds_propagated.rs similarity index 100% rename from src/test/ui/consts/const-eval/index_out_of_bounds_propagated.rs rename to tests/ui/consts/const-eval/index_out_of_bounds_propagated.rs diff --git a/src/test/ui/consts/const-eval/index_out_of_bounds_propagated.stderr b/tests/ui/consts/const-eval/index_out_of_bounds_propagated.stderr similarity index 100% rename from src/test/ui/consts/const-eval/index_out_of_bounds_propagated.stderr rename to tests/ui/consts/const-eval/index_out_of_bounds_propagated.stderr diff --git a/src/test/ui/consts/const-eval/infinite_loop.rs b/tests/ui/consts/const-eval/infinite_loop.rs similarity index 100% rename from src/test/ui/consts/const-eval/infinite_loop.rs rename to tests/ui/consts/const-eval/infinite_loop.rs diff --git a/src/test/ui/consts/const-eval/infinite_loop.stderr b/tests/ui/consts/const-eval/infinite_loop.stderr similarity index 100% rename from src/test/ui/consts/const-eval/infinite_loop.stderr rename to tests/ui/consts/const-eval/infinite_loop.stderr diff --git a/src/test/ui/consts/const-eval/issue-100878.rs b/tests/ui/consts/const-eval/issue-100878.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-100878.rs rename to tests/ui/consts/const-eval/issue-100878.rs diff --git a/src/test/ui/consts/const-eval/issue-104390.rs b/tests/ui/consts/const-eval/issue-104390.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-104390.rs rename to tests/ui/consts/const-eval/issue-104390.rs diff --git a/src/test/ui/consts/const-eval/issue-104390.stderr b/tests/ui/consts/const-eval/issue-104390.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-104390.stderr rename to tests/ui/consts/const-eval/issue-104390.stderr diff --git a/src/test/ui/consts/const-eval/issue-43197.rs b/tests/ui/consts/const-eval/issue-43197.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-43197.rs rename to tests/ui/consts/const-eval/issue-43197.rs diff --git a/src/test/ui/consts/const-eval/issue-43197.stderr b/tests/ui/consts/const-eval/issue-43197.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-43197.stderr rename to tests/ui/consts/const-eval/issue-43197.stderr diff --git a/src/test/ui/consts/const-eval/issue-44578.rs b/tests/ui/consts/const-eval/issue-44578.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-44578.rs rename to tests/ui/consts/const-eval/issue-44578.rs diff --git a/src/test/ui/consts/const-eval/issue-44578.stderr b/tests/ui/consts/const-eval/issue-44578.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-44578.stderr rename to tests/ui/consts/const-eval/issue-44578.stderr diff --git a/src/test/ui/consts/const-eval/issue-47971.rs b/tests/ui/consts/const-eval/issue-47971.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-47971.rs rename to tests/ui/consts/const-eval/issue-47971.rs diff --git a/src/test/ui/consts/const-eval/issue-49296.rs b/tests/ui/consts/const-eval/issue-49296.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-49296.rs rename to tests/ui/consts/const-eval/issue-49296.rs diff --git a/src/test/ui/consts/const-eval/issue-49296.stderr b/tests/ui/consts/const-eval/issue-49296.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-49296.stderr rename to tests/ui/consts/const-eval/issue-49296.stderr diff --git a/src/test/ui/consts/const-eval/issue-50706.rs b/tests/ui/consts/const-eval/issue-50706.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-50706.rs rename to tests/ui/consts/const-eval/issue-50706.rs diff --git a/src/test/ui/consts/const-eval/issue-50814-2.rs b/tests/ui/consts/const-eval/issue-50814-2.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-50814-2.rs rename to tests/ui/consts/const-eval/issue-50814-2.rs diff --git a/src/test/ui/consts/const-eval/issue-50814-2.stderr b/tests/ui/consts/const-eval/issue-50814-2.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-50814-2.stderr rename to tests/ui/consts/const-eval/issue-50814-2.stderr diff --git a/src/test/ui/consts/const-eval/issue-50814.rs b/tests/ui/consts/const-eval/issue-50814.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-50814.rs rename to tests/ui/consts/const-eval/issue-50814.rs diff --git a/src/test/ui/consts/const-eval/issue-50814.stderr b/tests/ui/consts/const-eval/issue-50814.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-50814.stderr rename to tests/ui/consts/const-eval/issue-50814.stderr diff --git a/src/test/ui/consts/const-eval/issue-51300.rs b/tests/ui/consts/const-eval/issue-51300.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-51300.rs rename to tests/ui/consts/const-eval/issue-51300.rs diff --git a/src/test/ui/consts/const-eval/issue-52475.rs b/tests/ui/consts/const-eval/issue-52475.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-52475.rs rename to tests/ui/consts/const-eval/issue-52475.rs diff --git a/src/test/ui/consts/const-eval/issue-52475.stderr b/tests/ui/consts/const-eval/issue-52475.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-52475.stderr rename to tests/ui/consts/const-eval/issue-52475.stderr diff --git a/src/test/ui/consts/const-eval/issue-53157.rs b/tests/ui/consts/const-eval/issue-53157.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-53157.rs rename to tests/ui/consts/const-eval/issue-53157.rs diff --git a/src/test/ui/consts/const-eval/issue-53401.rs b/tests/ui/consts/const-eval/issue-53401.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-53401.rs rename to tests/ui/consts/const-eval/issue-53401.rs diff --git a/src/test/ui/consts/const-eval/issue-55541.rs b/tests/ui/consts/const-eval/issue-55541.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-55541.rs rename to tests/ui/consts/const-eval/issue-55541.rs diff --git a/src/test/ui/consts/const-eval/issue-64908.rs b/tests/ui/consts/const-eval/issue-64908.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-64908.rs rename to tests/ui/consts/const-eval/issue-64908.rs diff --git a/src/test/ui/consts/const-eval/issue-64970.rs b/tests/ui/consts/const-eval/issue-64970.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-64970.rs rename to tests/ui/consts/const-eval/issue-64970.rs diff --git a/src/test/ui/consts/const-eval/issue-65394.rs b/tests/ui/consts/const-eval/issue-65394.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-65394.rs rename to tests/ui/consts/const-eval/issue-65394.rs diff --git a/src/test/ui/consts/const-eval/issue-65394.stderr b/tests/ui/consts/const-eval/issue-65394.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-65394.stderr rename to tests/ui/consts/const-eval/issue-65394.stderr diff --git a/src/test/ui/consts/const-eval/issue-70723.rs b/tests/ui/consts/const-eval/issue-70723.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-70723.rs rename to tests/ui/consts/const-eval/issue-70723.rs diff --git a/src/test/ui/consts/const-eval/issue-70723.stderr b/tests/ui/consts/const-eval/issue-70723.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-70723.stderr rename to tests/ui/consts/const-eval/issue-70723.stderr diff --git a/src/test/ui/consts/const-eval/issue-70804-fn-subtyping.rs b/tests/ui/consts/const-eval/issue-70804-fn-subtyping.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-70804-fn-subtyping.rs rename to tests/ui/consts/const-eval/issue-70804-fn-subtyping.rs diff --git a/src/test/ui/consts/const-eval/issue-84957-const-str-as-bytes.rs b/tests/ui/consts/const-eval/issue-84957-const-str-as-bytes.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-84957-const-str-as-bytes.rs rename to tests/ui/consts/const-eval/issue-84957-const-str-as-bytes.rs diff --git a/src/test/ui/consts/const-eval/issue-85155.rs b/tests/ui/consts/const-eval/issue-85155.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-85155.rs rename to tests/ui/consts/const-eval/issue-85155.rs diff --git a/src/test/ui/consts/const-eval/issue-85155.stderr b/tests/ui/consts/const-eval/issue-85155.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-85155.stderr rename to tests/ui/consts/const-eval/issue-85155.stderr diff --git a/src/test/ui/consts/const-eval/issue-85907.rs b/tests/ui/consts/const-eval/issue-85907.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-85907.rs rename to tests/ui/consts/const-eval/issue-85907.rs diff --git a/src/test/ui/consts/const-eval/issue-85907.stderr b/tests/ui/consts/const-eval/issue-85907.stderr similarity index 100% rename from src/test/ui/consts/const-eval/issue-85907.stderr rename to tests/ui/consts/const-eval/issue-85907.stderr diff --git a/src/test/ui/consts/const-eval/issue-91827-extern-types.rs b/tests/ui/consts/const-eval/issue-91827-extern-types.rs similarity index 100% rename from src/test/ui/consts/const-eval/issue-91827-extern-types.rs rename to tests/ui/consts/const-eval/issue-91827-extern-types.rs diff --git a/src/test/ui/consts/const-eval/livedrop.rs b/tests/ui/consts/const-eval/livedrop.rs similarity index 100% rename from src/test/ui/consts/const-eval/livedrop.rs rename to tests/ui/consts/const-eval/livedrop.rs diff --git a/src/test/ui/consts/const-eval/livedrop.stderr b/tests/ui/consts/const-eval/livedrop.stderr similarity index 100% rename from src/test/ui/consts/const-eval/livedrop.stderr rename to tests/ui/consts/const-eval/livedrop.stderr diff --git a/src/test/ui/consts/const-eval/match-test-ptr-null.rs b/tests/ui/consts/const-eval/match-test-ptr-null.rs similarity index 100% rename from src/test/ui/consts/const-eval/match-test-ptr-null.rs rename to tests/ui/consts/const-eval/match-test-ptr-null.rs diff --git a/src/test/ui/consts/const-eval/match-test-ptr-null.stderr b/tests/ui/consts/const-eval/match-test-ptr-null.stderr similarity index 100% rename from src/test/ui/consts/const-eval/match-test-ptr-null.stderr rename to tests/ui/consts/const-eval/match-test-ptr-null.stderr diff --git a/src/test/ui/consts/const-eval/mod-static-with-const-fn.rs b/tests/ui/consts/const-eval/mod-static-with-const-fn.rs similarity index 100% rename from src/test/ui/consts/const-eval/mod-static-with-const-fn.rs rename to tests/ui/consts/const-eval/mod-static-with-const-fn.rs diff --git a/src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr b/tests/ui/consts/const-eval/mod-static-with-const-fn.stderr similarity index 100% rename from src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr rename to tests/ui/consts/const-eval/mod-static-with-const-fn.stderr diff --git a/src/test/ui/consts/const-eval/no_lint_for_statically_known_error.rs b/tests/ui/consts/const-eval/no_lint_for_statically_known_error.rs similarity index 100% rename from src/test/ui/consts/const-eval/no_lint_for_statically_known_error.rs rename to tests/ui/consts/const-eval/no_lint_for_statically_known_error.rs diff --git a/src/test/ui/consts/const-eval/nrvo.rs b/tests/ui/consts/const-eval/nrvo.rs similarity index 100% rename from src/test/ui/consts/const-eval/nrvo.rs rename to tests/ui/consts/const-eval/nrvo.rs diff --git a/src/test/ui/consts/const-eval/panic-assoc-never-type.rs b/tests/ui/consts/const-eval/panic-assoc-never-type.rs similarity index 100% rename from src/test/ui/consts/const-eval/panic-assoc-never-type.rs rename to tests/ui/consts/const-eval/panic-assoc-never-type.rs diff --git a/src/test/ui/consts/const-eval/panic-assoc-never-type.stderr b/tests/ui/consts/const-eval/panic-assoc-never-type.stderr similarity index 100% rename from src/test/ui/consts/const-eval/panic-assoc-never-type.stderr rename to tests/ui/consts/const-eval/panic-assoc-never-type.stderr diff --git a/src/test/ui/consts/const-eval/panic-never-type.rs b/tests/ui/consts/const-eval/panic-never-type.rs similarity index 100% rename from src/test/ui/consts/const-eval/panic-never-type.rs rename to tests/ui/consts/const-eval/panic-never-type.rs diff --git a/src/test/ui/consts/const-eval/panic-never-type.stderr b/tests/ui/consts/const-eval/panic-never-type.stderr similarity index 100% rename from src/test/ui/consts/const-eval/panic-never-type.stderr rename to tests/ui/consts/const-eval/panic-never-type.stderr diff --git a/src/test/ui/consts/const-eval/partial_ptr_overwrite.rs b/tests/ui/consts/const-eval/partial_ptr_overwrite.rs similarity index 100% rename from src/test/ui/consts/const-eval/partial_ptr_overwrite.rs rename to tests/ui/consts/const-eval/partial_ptr_overwrite.rs diff --git a/src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr b/tests/ui/consts/const-eval/partial_ptr_overwrite.stderr similarity index 100% rename from src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr rename to tests/ui/consts/const-eval/partial_ptr_overwrite.stderr diff --git a/src/test/ui/consts/const-eval/promote-static.rs b/tests/ui/consts/const-eval/promote-static.rs similarity index 100% rename from src/test/ui/consts/const-eval/promote-static.rs rename to tests/ui/consts/const-eval/promote-static.rs diff --git a/src/test/ui/consts/const-eval/promote_mutable_zst_mir_borrowck.rs b/tests/ui/consts/const-eval/promote_mutable_zst_mir_borrowck.rs similarity index 100% rename from src/test/ui/consts/const-eval/promote_mutable_zst_mir_borrowck.rs rename to tests/ui/consts/const-eval/promote_mutable_zst_mir_borrowck.rs diff --git a/src/test/ui/consts/const-eval/promoted_const_fn_fail.rs b/tests/ui/consts/const-eval/promoted_const_fn_fail.rs similarity index 100% rename from src/test/ui/consts/const-eval/promoted_const_fn_fail.rs rename to tests/ui/consts/const-eval/promoted_const_fn_fail.rs diff --git a/src/test/ui/consts/const-eval/promoted_const_fn_fail.stderr b/tests/ui/consts/const-eval/promoted_const_fn_fail.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_const_fn_fail.stderr rename to tests/ui/consts/const-eval/promoted_const_fn_fail.stderr diff --git a/src/test/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.rs b/tests/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.rs similarity index 100% rename from src/test/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.rs rename to tests/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.rs diff --git a/src/test/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.stderr b/tests/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.stderr rename to tests/ui/consts/const-eval/promoted_const_fn_fail_deny_const_err.stderr diff --git a/src/test/ui/consts/const-eval/promoted_errors.noopt.stderr b/tests/ui/consts/const-eval/promoted_errors.noopt.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_errors.noopt.stderr rename to tests/ui/consts/const-eval/promoted_errors.noopt.stderr diff --git a/src/test/ui/consts/const-eval/promoted_errors.opt.stderr b/tests/ui/consts/const-eval/promoted_errors.opt.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_errors.opt.stderr rename to tests/ui/consts/const-eval/promoted_errors.opt.stderr diff --git a/src/test/ui/consts/const-eval/promoted_errors.opt_with_overflow_checks.stderr b/tests/ui/consts/const-eval/promoted_errors.opt_with_overflow_checks.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_errors.opt_with_overflow_checks.stderr rename to tests/ui/consts/const-eval/promoted_errors.opt_with_overflow_checks.stderr diff --git a/src/test/ui/consts/const-eval/promoted_errors.rs b/tests/ui/consts/const-eval/promoted_errors.rs similarity index 100% rename from src/test/ui/consts/const-eval/promoted_errors.rs rename to tests/ui/consts/const-eval/promoted_errors.rs diff --git a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs b/tests/ui/consts/const-eval/promoted_raw_ptr_ops.rs similarity index 100% rename from src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs rename to tests/ui/consts/const-eval/promoted_raw_ptr_ops.rs diff --git a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr b/tests/ui/consts/const-eval/promoted_raw_ptr_ops.stderr similarity index 100% rename from src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr rename to tests/ui/consts/const-eval/promoted_raw_ptr_ops.stderr diff --git a/src/test/ui/consts/const-eval/raw-bytes.32bit.stderr b/tests/ui/consts/const-eval/raw-bytes.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/raw-bytes.32bit.stderr rename to tests/ui/consts/const-eval/raw-bytes.32bit.stderr diff --git a/src/test/ui/consts/const-eval/raw-bytes.64bit.stderr b/tests/ui/consts/const-eval/raw-bytes.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/raw-bytes.64bit.stderr rename to tests/ui/consts/const-eval/raw-bytes.64bit.stderr diff --git a/src/test/ui/consts/const-eval/raw-bytes.rs b/tests/ui/consts/const-eval/raw-bytes.rs similarity index 100% rename from src/test/ui/consts/const-eval/raw-bytes.rs rename to tests/ui/consts/const-eval/raw-bytes.rs diff --git a/src/test/ui/consts/const-eval/ref_to_int_match.32bit.stderr b/tests/ui/consts/const-eval/ref_to_int_match.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ref_to_int_match.32bit.stderr rename to tests/ui/consts/const-eval/ref_to_int_match.32bit.stderr diff --git a/src/test/ui/consts/const-eval/ref_to_int_match.64bit.stderr b/tests/ui/consts/const-eval/ref_to_int_match.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ref_to_int_match.64bit.stderr rename to tests/ui/consts/const-eval/ref_to_int_match.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ref_to_int_match.rs b/tests/ui/consts/const-eval/ref_to_int_match.rs similarity index 100% rename from src/test/ui/consts/const-eval/ref_to_int_match.rs rename to tests/ui/consts/const-eval/ref_to_int_match.rs diff --git a/src/test/ui/consts/const-eval/shift_overflow.rs b/tests/ui/consts/const-eval/shift_overflow.rs similarity index 100% rename from src/test/ui/consts/const-eval/shift_overflow.rs rename to tests/ui/consts/const-eval/shift_overflow.rs diff --git a/src/test/ui/consts/const-eval/shift_overflow.stderr b/tests/ui/consts/const-eval/shift_overflow.stderr similarity index 100% rename from src/test/ui/consts/const-eval/shift_overflow.stderr rename to tests/ui/consts/const-eval/shift_overflow.stderr diff --git a/src/test/ui/consts/const-eval/simd/insert_extract.rs b/tests/ui/consts/const-eval/simd/insert_extract.rs similarity index 100% rename from src/test/ui/consts/const-eval/simd/insert_extract.rs rename to tests/ui/consts/const-eval/simd/insert_extract.rs diff --git a/src/test/ui/consts/const-eval/simple_with_undef.rs b/tests/ui/consts/const-eval/simple_with_undef.rs similarity index 100% rename from src/test/ui/consts/const-eval/simple_with_undef.rs rename to tests/ui/consts/const-eval/simple_with_undef.rs diff --git a/src/test/ui/consts/const-eval/size-of-t.rs b/tests/ui/consts/const-eval/size-of-t.rs similarity index 100% rename from src/test/ui/consts/const-eval/size-of-t.rs rename to tests/ui/consts/const-eval/size-of-t.rs diff --git a/src/test/ui/consts/const-eval/size-of-t.stderr b/tests/ui/consts/const-eval/size-of-t.stderr similarity index 100% rename from src/test/ui/consts/const-eval/size-of-t.stderr rename to tests/ui/consts/const-eval/size-of-t.stderr diff --git a/src/test/ui/consts/const-eval/strlen.rs b/tests/ui/consts/const-eval/strlen.rs similarity index 100% rename from src/test/ui/consts/const-eval/strlen.rs rename to tests/ui/consts/const-eval/strlen.rs diff --git a/src/test/ui/consts/const-eval/transmute-const-promotion.rs b/tests/ui/consts/const-eval/transmute-const-promotion.rs similarity index 100% rename from src/test/ui/consts/const-eval/transmute-const-promotion.rs rename to tests/ui/consts/const-eval/transmute-const-promotion.rs diff --git a/src/test/ui/consts/const-eval/transmute-const-promotion.stderr b/tests/ui/consts/const-eval/transmute-const-promotion.stderr similarity index 100% rename from src/test/ui/consts/const-eval/transmute-const-promotion.stderr rename to tests/ui/consts/const-eval/transmute-const-promotion.stderr diff --git a/src/test/ui/consts/const-eval/transmute-const.32bit.stderr b/tests/ui/consts/const-eval/transmute-const.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/transmute-const.32bit.stderr rename to tests/ui/consts/const-eval/transmute-const.32bit.stderr diff --git a/src/test/ui/consts/const-eval/transmute-const.64bit.stderr b/tests/ui/consts/const-eval/transmute-const.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/transmute-const.64bit.stderr rename to tests/ui/consts/const-eval/transmute-const.64bit.stderr diff --git a/src/test/ui/consts/const-eval/transmute-const.rs b/tests/ui/consts/const-eval/transmute-const.rs similarity index 100% rename from src/test/ui/consts/const-eval/transmute-const.rs rename to tests/ui/consts/const-eval/transmute-const.rs diff --git a/src/test/ui/consts/const-eval/ub-enum-overwrite.rs b/tests/ui/consts/const-eval/ub-enum-overwrite.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-enum-overwrite.rs rename to tests/ui/consts/const-eval/ub-enum-overwrite.rs diff --git a/src/test/ui/consts/const-eval/ub-enum-overwrite.stderr b/tests/ui/consts/const-eval/ub-enum-overwrite.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-enum-overwrite.stderr rename to tests/ui/consts/const-eval/ub-enum-overwrite.stderr diff --git a/src/test/ui/consts/const-eval/ub-enum.32bit.stderr b/tests/ui/consts/const-eval/ub-enum.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-enum.32bit.stderr rename to tests/ui/consts/const-eval/ub-enum.32bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-enum.64bit.stderr b/tests/ui/consts/const-eval/ub-enum.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-enum.64bit.stderr rename to tests/ui/consts/const-eval/ub-enum.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-enum.rs b/tests/ui/consts/const-eval/ub-enum.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-enum.rs rename to tests/ui/consts/const-eval/ub-enum.rs diff --git a/src/test/ui/consts/const-eval/ub-incorrect-vtable.32bit.stderr b/tests/ui/consts/const-eval/ub-incorrect-vtable.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-incorrect-vtable.32bit.stderr rename to tests/ui/consts/const-eval/ub-incorrect-vtable.32bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-incorrect-vtable.64bit.stderr b/tests/ui/consts/const-eval/ub-incorrect-vtable.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-incorrect-vtable.64bit.stderr rename to tests/ui/consts/const-eval/ub-incorrect-vtable.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-incorrect-vtable.rs b/tests/ui/consts/const-eval/ub-incorrect-vtable.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-incorrect-vtable.rs rename to tests/ui/consts/const-eval/ub-incorrect-vtable.rs diff --git a/src/test/ui/consts/const-eval/ub-int-array.32bit.stderr b/tests/ui/consts/const-eval/ub-int-array.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-int-array.32bit.stderr rename to tests/ui/consts/const-eval/ub-int-array.32bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-int-array.64bit.stderr b/tests/ui/consts/const-eval/ub-int-array.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-int-array.64bit.stderr rename to tests/ui/consts/const-eval/ub-int-array.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-int-array.rs b/tests/ui/consts/const-eval/ub-int-array.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-int-array.rs rename to tests/ui/consts/const-eval/ub-int-array.rs diff --git a/src/test/ui/consts/const-eval/ub-nonnull.chalk.64bit.stderr b/tests/ui/consts/const-eval/ub-nonnull.chalk.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-nonnull.chalk.64bit.stderr rename to tests/ui/consts/const-eval/ub-nonnull.chalk.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-nonnull.rs b/tests/ui/consts/const-eval/ub-nonnull.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-nonnull.rs rename to tests/ui/consts/const-eval/ub-nonnull.rs diff --git a/src/test/ui/consts/const-eval/ub-nonnull.stderr b/tests/ui/consts/const-eval/ub-nonnull.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-nonnull.stderr rename to tests/ui/consts/const-eval/ub-nonnull.stderr diff --git a/src/test/ui/consts/const-eval/ub-ref-ptr.rs b/tests/ui/consts/const-eval/ub-ref-ptr.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-ref-ptr.rs rename to tests/ui/consts/const-eval/ub-ref-ptr.rs diff --git a/src/test/ui/consts/const-eval/ub-ref-ptr.stderr b/tests/ui/consts/const-eval/ub-ref-ptr.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-ref-ptr.stderr rename to tests/ui/consts/const-eval/ub-ref-ptr.stderr diff --git a/src/test/ui/consts/const-eval/ub-uninhabit.rs b/tests/ui/consts/const-eval/ub-uninhabit.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-uninhabit.rs rename to tests/ui/consts/const-eval/ub-uninhabit.rs diff --git a/src/test/ui/consts/const-eval/ub-uninhabit.stderr b/tests/ui/consts/const-eval/ub-uninhabit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-uninhabit.stderr rename to tests/ui/consts/const-eval/ub-uninhabit.stderr diff --git a/src/test/ui/consts/const-eval/ub-upvars.32bit.stderr b/tests/ui/consts/const-eval/ub-upvars.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-upvars.32bit.stderr rename to tests/ui/consts/const-eval/ub-upvars.32bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-upvars.64bit.stderr b/tests/ui/consts/const-eval/ub-upvars.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-upvars.64bit.stderr rename to tests/ui/consts/const-eval/ub-upvars.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-upvars.rs b/tests/ui/consts/const-eval/ub-upvars.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-upvars.rs rename to tests/ui/consts/const-eval/ub-upvars.rs diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.chalk.64bit.stderr b/tests/ui/consts/const-eval/ub-wide-ptr.chalk.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-wide-ptr.chalk.64bit.stderr rename to tests/ui/consts/const-eval/ub-wide-ptr.chalk.64bit.stderr diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.rs b/tests/ui/consts/const-eval/ub-wide-ptr.rs similarity index 100% rename from src/test/ui/consts/const-eval/ub-wide-ptr.rs rename to tests/ui/consts/const-eval/ub-wide-ptr.rs diff --git a/src/test/ui/consts/const-eval/ub-wide-ptr.stderr b/tests/ui/consts/const-eval/ub-wide-ptr.stderr similarity index 100% rename from src/test/ui/consts/const-eval/ub-wide-ptr.stderr rename to tests/ui/consts/const-eval/ub-wide-ptr.stderr diff --git a/src/test/ui/consts/const-eval/union-const-eval-field.rs b/tests/ui/consts/const-eval/union-const-eval-field.rs similarity index 100% rename from src/test/ui/consts/const-eval/union-const-eval-field.rs rename to tests/ui/consts/const-eval/union-const-eval-field.rs diff --git a/src/test/ui/consts/const-eval/union-const-eval-field.stderr b/tests/ui/consts/const-eval/union-const-eval-field.stderr similarity index 100% rename from src/test/ui/consts/const-eval/union-const-eval-field.stderr rename to tests/ui/consts/const-eval/union-const-eval-field.stderr diff --git a/src/test/ui/consts/const-eval/union-ice.rs b/tests/ui/consts/const-eval/union-ice.rs similarity index 100% rename from src/test/ui/consts/const-eval/union-ice.rs rename to tests/ui/consts/const-eval/union-ice.rs diff --git a/src/test/ui/consts/const-eval/union-ice.stderr b/tests/ui/consts/const-eval/union-ice.stderr similarity index 100% rename from src/test/ui/consts/const-eval/union-ice.stderr rename to tests/ui/consts/const-eval/union-ice.stderr diff --git a/src/test/ui/consts/const-eval/union-ub.32bit.stderr b/tests/ui/consts/const-eval/union-ub.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/union-ub.32bit.stderr rename to tests/ui/consts/const-eval/union-ub.32bit.stderr diff --git a/src/test/ui/consts/const-eval/union-ub.64bit.stderr b/tests/ui/consts/const-eval/union-ub.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/union-ub.64bit.stderr rename to tests/ui/consts/const-eval/union-ub.64bit.stderr diff --git a/src/test/ui/consts/const-eval/union-ub.rs b/tests/ui/consts/const-eval/union-ub.rs similarity index 100% rename from src/test/ui/consts/const-eval/union-ub.rs rename to tests/ui/consts/const-eval/union-ub.rs diff --git a/src/test/ui/consts/const-eval/union_promotion.rs b/tests/ui/consts/const-eval/union_promotion.rs similarity index 100% rename from src/test/ui/consts/const-eval/union_promotion.rs rename to tests/ui/consts/const-eval/union_promotion.rs diff --git a/src/test/ui/consts/const-eval/union_promotion.stderr b/tests/ui/consts/const-eval/union_promotion.stderr similarity index 100% rename from src/test/ui/consts/const-eval/union_promotion.stderr rename to tests/ui/consts/const-eval/union_promotion.stderr diff --git a/src/test/ui/consts/const-eval/unused-broken-const.rs b/tests/ui/consts/const-eval/unused-broken-const.rs similarity index 100% rename from src/test/ui/consts/const-eval/unused-broken-const.rs rename to tests/ui/consts/const-eval/unused-broken-const.rs diff --git a/src/test/ui/consts/const-eval/unused-broken-const.stderr b/tests/ui/consts/const-eval/unused-broken-const.stderr similarity index 100% rename from src/test/ui/consts/const-eval/unused-broken-const.stderr rename to tests/ui/consts/const-eval/unused-broken-const.stderr diff --git a/src/test/ui/consts/const-eval/unwind-abort.rs b/tests/ui/consts/const-eval/unwind-abort.rs similarity index 100% rename from src/test/ui/consts/const-eval/unwind-abort.rs rename to tests/ui/consts/const-eval/unwind-abort.rs diff --git a/src/test/ui/consts/const-eval/unwind-abort.stderr b/tests/ui/consts/const-eval/unwind-abort.stderr similarity index 100% rename from src/test/ui/consts/const-eval/unwind-abort.stderr rename to tests/ui/consts/const-eval/unwind-abort.stderr diff --git a/src/test/ui/consts/const-eval/valid-const.rs b/tests/ui/consts/const-eval/valid-const.rs similarity index 100% rename from src/test/ui/consts/const-eval/valid-const.rs rename to tests/ui/consts/const-eval/valid-const.rs diff --git a/src/test/ui/consts/const-eval/validate_uninhabited_zsts.32bit.stderr b/tests/ui/consts/const-eval/validate_uninhabited_zsts.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/validate_uninhabited_zsts.32bit.stderr rename to tests/ui/consts/const-eval/validate_uninhabited_zsts.32bit.stderr diff --git a/src/test/ui/consts/const-eval/validate_uninhabited_zsts.64bit.stderr b/tests/ui/consts/const-eval/validate_uninhabited_zsts.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-eval/validate_uninhabited_zsts.64bit.stderr rename to tests/ui/consts/const-eval/validate_uninhabited_zsts.64bit.stderr diff --git a/src/test/ui/consts/const-eval/validate_uninhabited_zsts.rs b/tests/ui/consts/const-eval/validate_uninhabited_zsts.rs similarity index 100% rename from src/test/ui/consts/const-eval/validate_uninhabited_zsts.rs rename to tests/ui/consts/const-eval/validate_uninhabited_zsts.rs diff --git a/src/test/ui/consts/const-eval/write-to-uninhabited-enum-variant.rs b/tests/ui/consts/const-eval/write-to-uninhabited-enum-variant.rs similarity index 100% rename from src/test/ui/consts/const-eval/write-to-uninhabited-enum-variant.rs rename to tests/ui/consts/const-eval/write-to-uninhabited-enum-variant.rs diff --git a/src/test/ui/consts/const-eval/zst_operand_eval.rs b/tests/ui/consts/const-eval/zst_operand_eval.rs similarity index 100% rename from src/test/ui/consts/const-eval/zst_operand_eval.rs rename to tests/ui/consts/const-eval/zst_operand_eval.rs diff --git a/src/test/ui/consts/const-expr-addr-operator.rs b/tests/ui/consts/const-expr-addr-operator.rs similarity index 100% rename from src/test/ui/consts/const-expr-addr-operator.rs rename to tests/ui/consts/const-expr-addr-operator.rs diff --git a/src/test/ui/consts/const-expr-in-fixed-length-vec.rs b/tests/ui/consts/const-expr-in-fixed-length-vec.rs similarity index 100% rename from src/test/ui/consts/const-expr-in-fixed-length-vec.rs rename to tests/ui/consts/const-expr-in-fixed-length-vec.rs diff --git a/src/test/ui/consts/const-expr-in-vec-repeat.rs b/tests/ui/consts/const-expr-in-vec-repeat.rs similarity index 100% rename from src/test/ui/consts/const-expr-in-vec-repeat.rs rename to tests/ui/consts/const-expr-in-vec-repeat.rs diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.rs b/tests/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.rs rename to tests/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.rs diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.stderr b/tests/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.stderr rename to tests/ui/consts/const-extern-fn/const-extern-fn-call-extern-fn.stderr diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.rs b/tests/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.rs rename to tests/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.rs diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.stderr b/tests/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.stderr rename to tests/ui/consts/const-extern-fn/const-extern-fn-min-const-fn.stderr diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.mir.stderr b/tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.mir.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.mir.stderr rename to tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.mir.stderr diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.rs b/tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.rs rename to tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.rs diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.thir.stderr b/tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.thir.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.thir.stderr rename to tests/ui/consts/const-extern-fn/const-extern-fn-requires-unsafe.thir.stderr diff --git a/src/test/ui/consts/const-extern-fn/const-extern-fn.rs b/tests/ui/consts/const-extern-fn/const-extern-fn.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/const-extern-fn.rs rename to tests/ui/consts/const-extern-fn/const-extern-fn.rs diff --git a/src/test/ui/consts/const-extern-fn/feature-gate-const_extern_fn.rs b/tests/ui/consts/const-extern-fn/feature-gate-const_extern_fn.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/feature-gate-const_extern_fn.rs rename to tests/ui/consts/const-extern-fn/feature-gate-const_extern_fn.rs diff --git a/src/test/ui/consts/const-extern-fn/feature-gate-const_extern_fn.stderr b/tests/ui/consts/const-extern-fn/feature-gate-const_extern_fn.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/feature-gate-const_extern_fn.stderr rename to tests/ui/consts/const-extern-fn/feature-gate-const_extern_fn.stderr diff --git a/src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs b/tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs rename to tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.rs diff --git a/src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.stderr b/tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.stderr rename to tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier-2.stderr diff --git a/src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs b/tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs similarity index 100% rename from src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs rename to tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.rs diff --git a/src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.stderr b/tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.stderr similarity index 100% rename from src/test/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.stderr rename to tests/ui/consts/const-extern-fn/issue-68062-const-extern-fns-dont-need-fn-specifier.stderr diff --git a/src/test/ui/consts/const-extern-function.rs b/tests/ui/consts/const-extern-function.rs similarity index 100% rename from src/test/ui/consts/const-extern-function.rs rename to tests/ui/consts/const-extern-function.rs diff --git a/src/test/ui/consts/const-external-macro-const-err.rs b/tests/ui/consts/const-external-macro-const-err.rs similarity index 100% rename from src/test/ui/consts/const-external-macro-const-err.rs rename to tests/ui/consts/const-external-macro-const-err.rs diff --git a/src/test/ui/consts/const-external-macro-const-err.stderr b/tests/ui/consts/const-external-macro-const-err.stderr similarity index 100% rename from src/test/ui/consts/const-external-macro-const-err.stderr rename to tests/ui/consts/const-external-macro-const-err.stderr diff --git a/src/test/ui/consts/const-fields-and-indexing.rs b/tests/ui/consts/const-fields-and-indexing.rs similarity index 100% rename from src/test/ui/consts/const-fields-and-indexing.rs rename to tests/ui/consts/const-fields-and-indexing.rs diff --git a/src/test/ui/consts/const-float-bits-conv.rs b/tests/ui/consts/const-float-bits-conv.rs similarity index 100% rename from src/test/ui/consts/const-float-bits-conv.rs rename to tests/ui/consts/const-float-bits-conv.rs diff --git a/src/test/ui/consts/const-float-bits-reject-conv.rs b/tests/ui/consts/const-float-bits-reject-conv.rs similarity index 100% rename from src/test/ui/consts/const-float-bits-reject-conv.rs rename to tests/ui/consts/const-float-bits-reject-conv.rs diff --git a/src/test/ui/consts/const-float-bits-reject-conv.stderr b/tests/ui/consts/const-float-bits-reject-conv.stderr similarity index 100% rename from src/test/ui/consts/const-float-bits-reject-conv.stderr rename to tests/ui/consts/const-float-bits-reject-conv.stderr diff --git a/src/test/ui/consts/const-float-classify.rs b/tests/ui/consts/const-float-classify.rs similarity index 100% rename from src/test/ui/consts/const-float-classify.rs rename to tests/ui/consts/const-float-classify.rs diff --git a/src/test/ui/consts/const-fn-const-eval.rs b/tests/ui/consts/const-fn-const-eval.rs similarity index 100% rename from src/test/ui/consts/const-fn-const-eval.rs rename to tests/ui/consts/const-fn-const-eval.rs diff --git a/src/test/ui/consts/const-fn-destructuring-arg.rs b/tests/ui/consts/const-fn-destructuring-arg.rs similarity index 100% rename from src/test/ui/consts/const-fn-destructuring-arg.rs rename to tests/ui/consts/const-fn-destructuring-arg.rs diff --git a/src/test/ui/consts/const-fn-error.rs b/tests/ui/consts/const-fn-error.rs similarity index 100% rename from src/test/ui/consts/const-fn-error.rs rename to tests/ui/consts/const-fn-error.rs diff --git a/src/test/ui/consts/const-fn-error.stderr b/tests/ui/consts/const-fn-error.stderr similarity index 100% rename from src/test/ui/consts/const-fn-error.stderr rename to tests/ui/consts/const-fn-error.stderr diff --git a/src/test/ui/consts/const-fn-in-vec.rs b/tests/ui/consts/const-fn-in-vec.rs similarity index 100% rename from src/test/ui/consts/const-fn-in-vec.rs rename to tests/ui/consts/const-fn-in-vec.rs diff --git a/src/test/ui/consts/const-fn-in-vec.stderr b/tests/ui/consts/const-fn-in-vec.stderr similarity index 100% rename from src/test/ui/consts/const-fn-in-vec.stderr rename to tests/ui/consts/const-fn-in-vec.stderr diff --git a/src/test/ui/consts/const-fn-method.rs b/tests/ui/consts/const-fn-method.rs similarity index 100% rename from src/test/ui/consts/const-fn-method.rs rename to tests/ui/consts/const-fn-method.rs diff --git a/src/test/ui/consts/const-fn-mismatch.rs b/tests/ui/consts/const-fn-mismatch.rs similarity index 100% rename from src/test/ui/consts/const-fn-mismatch.rs rename to tests/ui/consts/const-fn-mismatch.rs diff --git a/src/test/ui/consts/const-fn-mismatch.stderr b/tests/ui/consts/const-fn-mismatch.stderr similarity index 100% rename from src/test/ui/consts/const-fn-mismatch.stderr rename to tests/ui/consts/const-fn-mismatch.stderr diff --git a/src/test/ui/consts/const-fn-nested.rs b/tests/ui/consts/const-fn-nested.rs similarity index 100% rename from src/test/ui/consts/const-fn-nested.rs rename to tests/ui/consts/const-fn-nested.rs diff --git a/src/test/ui/consts/const-fn-not-in-trait.rs b/tests/ui/consts/const-fn-not-in-trait.rs similarity index 100% rename from src/test/ui/consts/const-fn-not-in-trait.rs rename to tests/ui/consts/const-fn-not-in-trait.rs diff --git a/src/test/ui/consts/const-fn-not-in-trait.stderr b/tests/ui/consts/const-fn-not-in-trait.stderr similarity index 100% rename from src/test/ui/consts/const-fn-not-in-trait.stderr rename to tests/ui/consts/const-fn-not-in-trait.stderr diff --git a/src/test/ui/consts/const-fn-not-safe-for-const.rs b/tests/ui/consts/const-fn-not-safe-for-const.rs similarity index 100% rename from src/test/ui/consts/const-fn-not-safe-for-const.rs rename to tests/ui/consts/const-fn-not-safe-for-const.rs diff --git a/src/test/ui/consts/const-fn-not-safe-for-const.stderr b/tests/ui/consts/const-fn-not-safe-for-const.stderr similarity index 100% rename from src/test/ui/consts/const-fn-not-safe-for-const.stderr rename to tests/ui/consts/const-fn-not-safe-for-const.stderr diff --git a/src/test/ui/consts/const-fn-ptr.rs b/tests/ui/consts/const-fn-ptr.rs similarity index 100% rename from src/test/ui/consts/const-fn-ptr.rs rename to tests/ui/consts/const-fn-ptr.rs diff --git a/src/test/ui/consts/const-fn-ptr.stderr b/tests/ui/consts/const-fn-ptr.stderr similarity index 100% rename from src/test/ui/consts/const-fn-ptr.stderr rename to tests/ui/consts/const-fn-ptr.stderr diff --git a/src/test/ui/consts/const-fn-stability-calls-3.rs b/tests/ui/consts/const-fn-stability-calls-3.rs similarity index 100% rename from src/test/ui/consts/const-fn-stability-calls-3.rs rename to tests/ui/consts/const-fn-stability-calls-3.rs diff --git a/src/test/ui/consts/const-fn-stability-calls.rs b/tests/ui/consts/const-fn-stability-calls.rs similarity index 100% rename from src/test/ui/consts/const-fn-stability-calls.rs rename to tests/ui/consts/const-fn-stability-calls.rs diff --git a/src/test/ui/consts/const-fn-type-name-any.rs b/tests/ui/consts/const-fn-type-name-any.rs similarity index 100% rename from src/test/ui/consts/const-fn-type-name-any.rs rename to tests/ui/consts/const-fn-type-name-any.rs diff --git a/src/test/ui/consts/const-fn-type-name.rs b/tests/ui/consts/const-fn-type-name.rs similarity index 100% rename from src/test/ui/consts/const-fn-type-name.rs rename to tests/ui/consts/const-fn-type-name.rs diff --git a/src/test/ui/consts/const-fn-val.rs b/tests/ui/consts/const-fn-val.rs similarity index 100% rename from src/test/ui/consts/const-fn-val.rs rename to tests/ui/consts/const-fn-val.rs diff --git a/src/test/ui/consts/const-fn-zst-args.rs b/tests/ui/consts/const-fn-zst-args.rs similarity index 100% rename from src/test/ui/consts/const-fn-zst-args.rs rename to tests/ui/consts/const-fn-zst-args.rs diff --git a/src/test/ui/consts/const-fn.rs b/tests/ui/consts/const-fn.rs similarity index 100% rename from src/test/ui/consts/const-fn.rs rename to tests/ui/consts/const-fn.rs diff --git a/src/test/ui/consts/const-for-feature-gate.rs b/tests/ui/consts/const-for-feature-gate.rs similarity index 100% rename from src/test/ui/consts/const-for-feature-gate.rs rename to tests/ui/consts/const-for-feature-gate.rs diff --git a/src/test/ui/consts/const-for-feature-gate.stderr b/tests/ui/consts/const-for-feature-gate.stderr similarity index 100% rename from src/test/ui/consts/const-for-feature-gate.stderr rename to tests/ui/consts/const-for-feature-gate.stderr diff --git a/src/test/ui/consts/const-for.rs b/tests/ui/consts/const-for.rs similarity index 100% rename from src/test/ui/consts/const-for.rs rename to tests/ui/consts/const-for.rs diff --git a/src/test/ui/consts/const-for.stderr b/tests/ui/consts/const-for.stderr similarity index 100% rename from src/test/ui/consts/const-for.stderr rename to tests/ui/consts/const-for.stderr diff --git a/src/test/ui/consts/const-index-feature-gate.rs b/tests/ui/consts/const-index-feature-gate.rs similarity index 100% rename from src/test/ui/consts/const-index-feature-gate.rs rename to tests/ui/consts/const-index-feature-gate.rs diff --git a/src/test/ui/consts/const-int-arithmetic-overflow.rs b/tests/ui/consts/const-int-arithmetic-overflow.rs similarity index 100% rename from src/test/ui/consts/const-int-arithmetic-overflow.rs rename to tests/ui/consts/const-int-arithmetic-overflow.rs diff --git a/src/test/ui/consts/const-int-arithmetic.rs b/tests/ui/consts/const-int-arithmetic.rs similarity index 100% rename from src/test/ui/consts/const-int-arithmetic.rs rename to tests/ui/consts/const-int-arithmetic.rs diff --git a/src/test/ui/consts/const-int-conversion-rpass.rs b/tests/ui/consts/const-int-conversion-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-conversion-rpass.rs rename to tests/ui/consts/const-int-conversion-rpass.rs diff --git a/src/test/ui/consts/const-int-conversion.rs b/tests/ui/consts/const-int-conversion.rs similarity index 100% rename from src/test/ui/consts/const-int-conversion.rs rename to tests/ui/consts/const-int-conversion.rs diff --git a/src/test/ui/consts/const-int-conversion.stderr b/tests/ui/consts/const-int-conversion.stderr similarity index 100% rename from src/test/ui/consts/const-int-conversion.stderr rename to tests/ui/consts/const-int-conversion.stderr diff --git a/src/test/ui/consts/const-int-overflowing-rpass.rs b/tests/ui/consts/const-int-overflowing-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-overflowing-rpass.rs rename to tests/ui/consts/const-int-overflowing-rpass.rs diff --git a/src/test/ui/consts/const-int-overflowing.rs b/tests/ui/consts/const-int-overflowing.rs similarity index 100% rename from src/test/ui/consts/const-int-overflowing.rs rename to tests/ui/consts/const-int-overflowing.rs diff --git a/src/test/ui/consts/const-int-overflowing.stderr b/tests/ui/consts/const-int-overflowing.stderr similarity index 100% rename from src/test/ui/consts/const-int-overflowing.stderr rename to tests/ui/consts/const-int-overflowing.stderr diff --git a/src/test/ui/consts/const-int-pow-rpass.rs b/tests/ui/consts/const-int-pow-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-pow-rpass.rs rename to tests/ui/consts/const-int-pow-rpass.rs diff --git a/src/test/ui/consts/const-int-rotate-rpass.rs b/tests/ui/consts/const-int-rotate-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-rotate-rpass.rs rename to tests/ui/consts/const-int-rotate-rpass.rs diff --git a/src/test/ui/consts/const-int-rotate.rs b/tests/ui/consts/const-int-rotate.rs similarity index 100% rename from src/test/ui/consts/const-int-rotate.rs rename to tests/ui/consts/const-int-rotate.rs diff --git a/src/test/ui/consts/const-int-rotate.stderr b/tests/ui/consts/const-int-rotate.stderr similarity index 100% rename from src/test/ui/consts/const-int-rotate.stderr rename to tests/ui/consts/const-int-rotate.stderr diff --git a/src/test/ui/consts/const-int-saturating-arith.rs b/tests/ui/consts/const-int-saturating-arith.rs similarity index 100% rename from src/test/ui/consts/const-int-saturating-arith.rs rename to tests/ui/consts/const-int-saturating-arith.rs diff --git a/src/test/ui/consts/const-int-sign-rpass.rs b/tests/ui/consts/const-int-sign-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-sign-rpass.rs rename to tests/ui/consts/const-int-sign-rpass.rs diff --git a/src/test/ui/consts/const-int-sign.rs b/tests/ui/consts/const-int-sign.rs similarity index 100% rename from src/test/ui/consts/const-int-sign.rs rename to tests/ui/consts/const-int-sign.rs diff --git a/src/test/ui/consts/const-int-sign.stderr b/tests/ui/consts/const-int-sign.stderr similarity index 100% rename from src/test/ui/consts/const-int-sign.stderr rename to tests/ui/consts/const-int-sign.stderr diff --git a/src/test/ui/consts/const-int-unchecked.rs b/tests/ui/consts/const-int-unchecked.rs similarity index 100% rename from src/test/ui/consts/const-int-unchecked.rs rename to tests/ui/consts/const-int-unchecked.rs diff --git a/src/test/ui/consts/const-int-unchecked.stderr b/tests/ui/consts/const-int-unchecked.stderr similarity index 100% rename from src/test/ui/consts/const-int-unchecked.stderr rename to tests/ui/consts/const-int-unchecked.stderr diff --git a/src/test/ui/consts/const-int-wrapping-rpass.rs b/tests/ui/consts/const-int-wrapping-rpass.rs similarity index 100% rename from src/test/ui/consts/const-int-wrapping-rpass.rs rename to tests/ui/consts/const-int-wrapping-rpass.rs diff --git a/src/test/ui/consts/const-int-wrapping.rs b/tests/ui/consts/const-int-wrapping.rs similarity index 100% rename from src/test/ui/consts/const-int-wrapping.rs rename to tests/ui/consts/const-int-wrapping.rs diff --git a/src/test/ui/consts/const-int-wrapping.stderr b/tests/ui/consts/const-int-wrapping.stderr similarity index 100% rename from src/test/ui/consts/const-int-wrapping.stderr rename to tests/ui/consts/const-int-wrapping.stderr diff --git a/src/test/ui/consts/const-integer-bool-ops.rs b/tests/ui/consts/const-integer-bool-ops.rs similarity index 100% rename from src/test/ui/consts/const-integer-bool-ops.rs rename to tests/ui/consts/const-integer-bool-ops.rs diff --git a/src/test/ui/consts/const-integer-bool-ops.stderr b/tests/ui/consts/const-integer-bool-ops.stderr similarity index 100% rename from src/test/ui/consts/const-integer-bool-ops.stderr rename to tests/ui/consts/const-integer-bool-ops.stderr diff --git a/src/test/ui/consts/const-labeled-break.rs b/tests/ui/consts/const-labeled-break.rs similarity index 100% rename from src/test/ui/consts/const-labeled-break.rs rename to tests/ui/consts/const-labeled-break.rs diff --git a/src/test/ui/consts/const-len-underflow-separate-spans.rs b/tests/ui/consts/const-len-underflow-separate-spans.rs similarity index 100% rename from src/test/ui/consts/const-len-underflow-separate-spans.rs rename to tests/ui/consts/const-len-underflow-separate-spans.rs diff --git a/src/test/ui/consts/const-len-underflow-separate-spans.stderr b/tests/ui/consts/const-len-underflow-separate-spans.stderr similarity index 100% rename from src/test/ui/consts/const-len-underflow-separate-spans.stderr rename to tests/ui/consts/const-len-underflow-separate-spans.stderr diff --git a/src/test/ui/consts/const-len-underflow-subspans.rs b/tests/ui/consts/const-len-underflow-subspans.rs similarity index 100% rename from src/test/ui/consts/const-len-underflow-subspans.rs rename to tests/ui/consts/const-len-underflow-subspans.rs diff --git a/src/test/ui/consts/const-len-underflow-subspans.stderr b/tests/ui/consts/const-len-underflow-subspans.stderr similarity index 100% rename from src/test/ui/consts/const-len-underflow-subspans.stderr rename to tests/ui/consts/const-len-underflow-subspans.stderr diff --git a/src/test/ui/consts/const-match-check.eval1.stderr b/tests/ui/consts/const-match-check.eval1.stderr similarity index 100% rename from src/test/ui/consts/const-match-check.eval1.stderr rename to tests/ui/consts/const-match-check.eval1.stderr diff --git a/src/test/ui/consts/const-match-check.eval2.stderr b/tests/ui/consts/const-match-check.eval2.stderr similarity index 100% rename from src/test/ui/consts/const-match-check.eval2.stderr rename to tests/ui/consts/const-match-check.eval2.stderr diff --git a/src/test/ui/consts/const-match-check.matchck.stderr b/tests/ui/consts/const-match-check.matchck.stderr similarity index 100% rename from src/test/ui/consts/const-match-check.matchck.stderr rename to tests/ui/consts/const-match-check.matchck.stderr diff --git a/src/test/ui/consts/const-match-check.rs b/tests/ui/consts/const-match-check.rs similarity index 100% rename from src/test/ui/consts/const-match-check.rs rename to tests/ui/consts/const-match-check.rs diff --git a/src/test/ui/consts/const-match-pattern-arm.rs b/tests/ui/consts/const-match-pattern-arm.rs similarity index 100% rename from src/test/ui/consts/const-match-pattern-arm.rs rename to tests/ui/consts/const-match-pattern-arm.rs diff --git a/src/test/ui/consts/const-meth-pattern.rs b/tests/ui/consts/const-meth-pattern.rs similarity index 100% rename from src/test/ui/consts/const-meth-pattern.rs rename to tests/ui/consts/const-meth-pattern.rs diff --git a/src/test/ui/consts/const-multi-ref.rs b/tests/ui/consts/const-multi-ref.rs similarity index 100% rename from src/test/ui/consts/const-multi-ref.rs rename to tests/ui/consts/const-multi-ref.rs diff --git a/src/test/ui/consts/const-multi-ref.stderr b/tests/ui/consts/const-multi-ref.stderr similarity index 100% rename from src/test/ui/consts/const-multi-ref.stderr rename to tests/ui/consts/const-multi-ref.stderr diff --git a/src/test/ui/consts/const-mut-refs/const_mut_address_of.rs b/tests/ui/consts/const-mut-refs/const_mut_address_of.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/const_mut_address_of.rs rename to tests/ui/consts/const-mut-refs/const_mut_address_of.rs diff --git a/src/test/ui/consts/const-mut-refs/const_mut_refs.rs b/tests/ui/consts/const-mut-refs/const_mut_refs.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/const_mut_refs.rs rename to tests/ui/consts/const-mut-refs/const_mut_refs.rs diff --git a/src/test/ui/consts/const-mut-refs/feature-gate-const_mut_refs.rs b/tests/ui/consts/const-mut-refs/feature-gate-const_mut_refs.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/feature-gate-const_mut_refs.rs rename to tests/ui/consts/const-mut-refs/feature-gate-const_mut_refs.rs diff --git a/src/test/ui/consts/const-mut-refs/feature-gate-const_mut_refs.stderr b/tests/ui/consts/const-mut-refs/feature-gate-const_mut_refs.stderr similarity index 100% rename from src/test/ui/consts/const-mut-refs/feature-gate-const_mut_refs.stderr rename to tests/ui/consts/const-mut-refs/feature-gate-const_mut_refs.stderr diff --git a/src/test/ui/consts/const-mut-refs/issue-76510.32bit.stderr b/tests/ui/consts/const-mut-refs/issue-76510.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-mut-refs/issue-76510.32bit.stderr rename to tests/ui/consts/const-mut-refs/issue-76510.32bit.stderr diff --git a/src/test/ui/consts/const-mut-refs/issue-76510.64bit.stderr b/tests/ui/consts/const-mut-refs/issue-76510.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-mut-refs/issue-76510.64bit.stderr rename to tests/ui/consts/const-mut-refs/issue-76510.64bit.stderr diff --git a/src/test/ui/consts/const-mut-refs/issue-76510.rs b/tests/ui/consts/const-mut-refs/issue-76510.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/issue-76510.rs rename to tests/ui/consts/const-mut-refs/issue-76510.rs diff --git a/src/test/ui/consts/const-mut-refs/mut_ref_in_final.rs b/tests/ui/consts/const-mut-refs/mut_ref_in_final.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/mut_ref_in_final.rs rename to tests/ui/consts/const-mut-refs/mut_ref_in_final.rs diff --git a/src/test/ui/consts/const-mut-refs/mut_ref_in_final.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final.stderr similarity index 100% rename from src/test/ui/consts/const-mut-refs/mut_ref_in_final.stderr rename to tests/ui/consts/const-mut-refs/mut_ref_in_final.stderr diff --git a/src/test/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs similarity index 100% rename from src/test/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs rename to tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs diff --git a/src/test/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr similarity index 100% rename from src/test/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr rename to tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr diff --git a/src/test/ui/consts/const-needs_drop-monomorphic.rs b/tests/ui/consts/const-needs_drop-monomorphic.rs similarity index 100% rename from src/test/ui/consts/const-needs_drop-monomorphic.rs rename to tests/ui/consts/const-needs_drop-monomorphic.rs diff --git a/src/test/ui/consts/const-needs_drop-monomorphic.stderr b/tests/ui/consts/const-needs_drop-monomorphic.stderr similarity index 100% rename from src/test/ui/consts/const-needs_drop-monomorphic.stderr rename to tests/ui/consts/const-needs_drop-monomorphic.stderr diff --git a/src/test/ui/consts/const-needs_drop.rs b/tests/ui/consts/const-needs_drop.rs similarity index 100% rename from src/test/ui/consts/const-needs_drop.rs rename to tests/ui/consts/const-needs_drop.rs diff --git a/src/test/ui/consts/const-negation.rs b/tests/ui/consts/const-negation.rs similarity index 100% rename from src/test/ui/consts/const-negation.rs rename to tests/ui/consts/const-negation.rs diff --git a/src/test/ui/consts/const-negative.rs b/tests/ui/consts/const-negative.rs similarity index 100% rename from src/test/ui/consts/const-negative.rs rename to tests/ui/consts/const-negative.rs diff --git a/src/test/ui/consts/const-nullary-enum.rs b/tests/ui/consts/const-nullary-enum.rs similarity index 100% rename from src/test/ui/consts/const-nullary-enum.rs rename to tests/ui/consts/const-nullary-enum.rs diff --git a/src/test/ui/consts/const-nullary-univariant-enum.rs b/tests/ui/consts/const-nullary-univariant-enum.rs similarity index 100% rename from src/test/ui/consts/const-nullary-univariant-enum.rs rename to tests/ui/consts/const-nullary-univariant-enum.rs diff --git a/src/test/ui/consts/const-pattern-irrefutable.rs b/tests/ui/consts/const-pattern-irrefutable.rs similarity index 100% rename from src/test/ui/consts/const-pattern-irrefutable.rs rename to tests/ui/consts/const-pattern-irrefutable.rs diff --git a/src/test/ui/consts/const-pattern-irrefutable.stderr b/tests/ui/consts/const-pattern-irrefutable.stderr similarity index 100% rename from src/test/ui/consts/const-pattern-irrefutable.stderr rename to tests/ui/consts/const-pattern-irrefutable.stderr diff --git a/src/test/ui/consts/const-pattern-not-const-evaluable.rs b/tests/ui/consts/const-pattern-not-const-evaluable.rs similarity index 100% rename from src/test/ui/consts/const-pattern-not-const-evaluable.rs rename to tests/ui/consts/const-pattern-not-const-evaluable.rs diff --git a/src/test/ui/consts/const-pattern-variant.rs b/tests/ui/consts/const-pattern-variant.rs similarity index 100% rename from src/test/ui/consts/const-pattern-variant.rs rename to tests/ui/consts/const-pattern-variant.rs diff --git a/src/test/ui/consts/const-points-to-static.32bit.stderr b/tests/ui/consts/const-points-to-static.32bit.stderr similarity index 100% rename from src/test/ui/consts/const-points-to-static.32bit.stderr rename to tests/ui/consts/const-points-to-static.32bit.stderr diff --git a/src/test/ui/consts/const-points-to-static.64bit.stderr b/tests/ui/consts/const-points-to-static.64bit.stderr similarity index 100% rename from src/test/ui/consts/const-points-to-static.64bit.stderr rename to tests/ui/consts/const-points-to-static.64bit.stderr diff --git a/src/test/ui/consts/const-points-to-static.rs b/tests/ui/consts/const-points-to-static.rs similarity index 100% rename from src/test/ui/consts/const-points-to-static.rs rename to tests/ui/consts/const-points-to-static.rs diff --git a/src/test/ui/consts/const-prop-ice.rs b/tests/ui/consts/const-prop-ice.rs similarity index 100% rename from src/test/ui/consts/const-prop-ice.rs rename to tests/ui/consts/const-prop-ice.rs diff --git a/src/test/ui/consts/const-prop-ice.stderr b/tests/ui/consts/const-prop-ice.stderr similarity index 100% rename from src/test/ui/consts/const-prop-ice.stderr rename to tests/ui/consts/const-prop-ice.stderr diff --git a/src/test/ui/consts/const-prop-ice2.rs b/tests/ui/consts/const-prop-ice2.rs similarity index 100% rename from src/test/ui/consts/const-prop-ice2.rs rename to tests/ui/consts/const-prop-ice2.rs diff --git a/src/test/ui/consts/const-prop-ice2.stderr b/tests/ui/consts/const-prop-ice2.stderr similarity index 100% rename from src/test/ui/consts/const-prop-ice2.stderr rename to tests/ui/consts/const-prop-ice2.stderr diff --git a/src/test/ui/consts/const-prop-ice3.rs b/tests/ui/consts/const-prop-ice3.rs similarity index 100% rename from src/test/ui/consts/const-prop-ice3.rs rename to tests/ui/consts/const-prop-ice3.rs diff --git a/src/test/ui/consts/const-prop-overflowing-casts.rs b/tests/ui/consts/const-prop-overflowing-casts.rs similarity index 100% rename from src/test/ui/consts/const-prop-overflowing-casts.rs rename to tests/ui/consts/const-prop-overflowing-casts.rs diff --git a/src/test/ui/consts/const-prop-read-static-in-const.rs b/tests/ui/consts/const-prop-read-static-in-const.rs similarity index 100% rename from src/test/ui/consts/const-prop-read-static-in-const.rs rename to tests/ui/consts/const-prop-read-static-in-const.rs diff --git a/src/test/ui/consts/const-prop-read-static-in-const.stderr b/tests/ui/consts/const-prop-read-static-in-const.stderr similarity index 100% rename from src/test/ui/consts/const-prop-read-static-in-const.stderr rename to tests/ui/consts/const-prop-read-static-in-const.stderr diff --git a/src/test/ui/consts/const-ptr-nonnull-rpass.rs b/tests/ui/consts/const-ptr-nonnull-rpass.rs similarity index 100% rename from src/test/ui/consts/const-ptr-nonnull-rpass.rs rename to tests/ui/consts/const-ptr-nonnull-rpass.rs diff --git a/src/test/ui/consts/const-ptr-nonnull.rs b/tests/ui/consts/const-ptr-nonnull.rs similarity index 100% rename from src/test/ui/consts/const-ptr-nonnull.rs rename to tests/ui/consts/const-ptr-nonnull.rs diff --git a/src/test/ui/consts/const-ptr-nonnull.stderr b/tests/ui/consts/const-ptr-nonnull.stderr similarity index 100% rename from src/test/ui/consts/const-ptr-nonnull.stderr rename to tests/ui/consts/const-ptr-nonnull.stderr diff --git a/src/test/ui/consts/const-ptr-unique-rpass.rs b/tests/ui/consts/const-ptr-unique-rpass.rs similarity index 100% rename from src/test/ui/consts/const-ptr-unique-rpass.rs rename to tests/ui/consts/const-ptr-unique-rpass.rs diff --git a/src/test/ui/consts/const-ptr-unique.rs b/tests/ui/consts/const-ptr-unique.rs similarity index 100% rename from src/test/ui/consts/const-ptr-unique.rs rename to tests/ui/consts/const-ptr-unique.rs diff --git a/src/test/ui/consts/const-ptr-unique.stderr b/tests/ui/consts/const-ptr-unique.stderr similarity index 100% rename from src/test/ui/consts/const-ptr-unique.stderr rename to tests/ui/consts/const-ptr-unique.stderr diff --git a/src/test/ui/consts/const-rec-and-tup.rs b/tests/ui/consts/const-rec-and-tup.rs similarity index 100% rename from src/test/ui/consts/const-rec-and-tup.rs rename to tests/ui/consts/const-rec-and-tup.rs diff --git a/src/test/ui/consts/const-region-ptrs-noncopy.rs b/tests/ui/consts/const-region-ptrs-noncopy.rs similarity index 100% rename from src/test/ui/consts/const-region-ptrs-noncopy.rs rename to tests/ui/consts/const-region-ptrs-noncopy.rs diff --git a/src/test/ui/consts/const-region-ptrs.rs b/tests/ui/consts/const-region-ptrs.rs similarity index 100% rename from src/test/ui/consts/const-region-ptrs.rs rename to tests/ui/consts/const-region-ptrs.rs diff --git a/src/test/ui/consts/const-repeated-values.rs b/tests/ui/consts/const-repeated-values.rs similarity index 100% rename from src/test/ui/consts/const-repeated-values.rs rename to tests/ui/consts/const-repeated-values.rs diff --git a/src/test/ui/consts/const-size_of-align_of.rs b/tests/ui/consts/const-size_of-align_of.rs similarity index 100% rename from src/test/ui/consts/const-size_of-align_of.rs rename to tests/ui/consts/const-size_of-align_of.rs diff --git a/src/test/ui/consts/const-size_of-cycle.rs b/tests/ui/consts/const-size_of-cycle.rs similarity index 100% rename from src/test/ui/consts/const-size_of-cycle.rs rename to tests/ui/consts/const-size_of-cycle.rs diff --git a/src/test/ui/consts/const-size_of-cycle.stderr b/tests/ui/consts/const-size_of-cycle.stderr similarity index 100% rename from src/test/ui/consts/const-size_of-cycle.stderr rename to tests/ui/consts/const-size_of-cycle.stderr diff --git a/src/test/ui/consts/const-size_of_val-align_of_val-extern-type.rs b/tests/ui/consts/const-size_of_val-align_of_val-extern-type.rs similarity index 100% rename from src/test/ui/consts/const-size_of_val-align_of_val-extern-type.rs rename to tests/ui/consts/const-size_of_val-align_of_val-extern-type.rs diff --git a/src/test/ui/consts/const-size_of_val-align_of_val-extern-type.stderr b/tests/ui/consts/const-size_of_val-align_of_val-extern-type.stderr similarity index 100% rename from src/test/ui/consts/const-size_of_val-align_of_val-extern-type.stderr rename to tests/ui/consts/const-size_of_val-align_of_val-extern-type.stderr diff --git a/src/test/ui/consts/const-size_of_val-align_of_val.rs b/tests/ui/consts/const-size_of_val-align_of_val.rs similarity index 100% rename from src/test/ui/consts/const-size_of_val-align_of_val.rs rename to tests/ui/consts/const-size_of_val-align_of_val.rs diff --git a/src/test/ui/consts/const-slice-oob.rs b/tests/ui/consts/const-slice-oob.rs similarity index 100% rename from src/test/ui/consts/const-slice-oob.rs rename to tests/ui/consts/const-slice-oob.rs diff --git a/src/test/ui/consts/const-slice-oob.stderr b/tests/ui/consts/const-slice-oob.stderr similarity index 100% rename from src/test/ui/consts/const-slice-oob.stderr rename to tests/ui/consts/const-slice-oob.stderr diff --git a/src/test/ui/consts/const-struct-offsets.rs b/tests/ui/consts/const-struct-offsets.rs similarity index 100% rename from src/test/ui/consts/const-struct-offsets.rs rename to tests/ui/consts/const-struct-offsets.rs diff --git a/src/test/ui/consts/const-struct.rs b/tests/ui/consts/const-struct.rs similarity index 100% rename from src/test/ui/consts/const-struct.rs rename to tests/ui/consts/const-struct.rs diff --git a/src/test/ui/consts/const-suggest-feature.rs b/tests/ui/consts/const-suggest-feature.rs similarity index 100% rename from src/test/ui/consts/const-suggest-feature.rs rename to tests/ui/consts/const-suggest-feature.rs diff --git a/src/test/ui/consts/const-suggest-feature.stderr b/tests/ui/consts/const-suggest-feature.stderr similarity index 100% rename from src/test/ui/consts/const-suggest-feature.stderr rename to tests/ui/consts/const-suggest-feature.stderr diff --git a/src/test/ui/consts/const-trait-to-trait.rs b/tests/ui/consts/const-trait-to-trait.rs similarity index 100% rename from src/test/ui/consts/const-trait-to-trait.rs rename to tests/ui/consts/const-trait-to-trait.rs diff --git a/src/test/ui/consts/const-try-feature-gate.rs b/tests/ui/consts/const-try-feature-gate.rs similarity index 100% rename from src/test/ui/consts/const-try-feature-gate.rs rename to tests/ui/consts/const-try-feature-gate.rs diff --git a/src/test/ui/consts/const-try-feature-gate.stderr b/tests/ui/consts/const-try-feature-gate.stderr similarity index 100% rename from src/test/ui/consts/const-try-feature-gate.stderr rename to tests/ui/consts/const-try-feature-gate.stderr diff --git a/src/test/ui/consts/const-try.rs b/tests/ui/consts/const-try.rs similarity index 100% rename from src/test/ui/consts/const-try.rs rename to tests/ui/consts/const-try.rs diff --git a/src/test/ui/consts/const-tup-index-span.rs b/tests/ui/consts/const-tup-index-span.rs similarity index 100% rename from src/test/ui/consts/const-tup-index-span.rs rename to tests/ui/consts/const-tup-index-span.rs diff --git a/src/test/ui/consts/const-tup-index-span.stderr b/tests/ui/consts/const-tup-index-span.stderr similarity index 100% rename from src/test/ui/consts/const-tup-index-span.stderr rename to tests/ui/consts/const-tup-index-span.stderr diff --git a/src/test/ui/consts/const-tuple-struct.rs b/tests/ui/consts/const-tuple-struct.rs similarity index 100% rename from src/test/ui/consts/const-tuple-struct.rs rename to tests/ui/consts/const-tuple-struct.rs diff --git a/src/test/ui/consts/const-type-mismatch.rs b/tests/ui/consts/const-type-mismatch.rs similarity index 100% rename from src/test/ui/consts/const-type-mismatch.rs rename to tests/ui/consts/const-type-mismatch.rs diff --git a/src/test/ui/consts/const-type-mismatch.stderr b/tests/ui/consts/const-type-mismatch.stderr similarity index 100% rename from src/test/ui/consts/const-type-mismatch.stderr rename to tests/ui/consts/const-type-mismatch.stderr diff --git a/src/test/ui/consts/const-typeid-of-rpass.rs b/tests/ui/consts/const-typeid-of-rpass.rs similarity index 100% rename from src/test/ui/consts/const-typeid-of-rpass.rs rename to tests/ui/consts/const-typeid-of-rpass.rs diff --git a/src/test/ui/consts/const-unit-struct.rs b/tests/ui/consts/const-unit-struct.rs similarity index 100% rename from src/test/ui/consts/const-unit-struct.rs rename to tests/ui/consts/const-unit-struct.rs diff --git a/src/test/ui/consts/const-unsafe-fn.rs b/tests/ui/consts/const-unsafe-fn.rs similarity index 100% rename from src/test/ui/consts/const-unsafe-fn.rs rename to tests/ui/consts/const-unsafe-fn.rs diff --git a/src/test/ui/consts/const-unsized.rs b/tests/ui/consts/const-unsized.rs similarity index 100% rename from src/test/ui/consts/const-unsized.rs rename to tests/ui/consts/const-unsized.rs diff --git a/src/test/ui/consts/const-unsized.stderr b/tests/ui/consts/const-unsized.stderr similarity index 100% rename from src/test/ui/consts/const-unsized.stderr rename to tests/ui/consts/const-unsized.stderr diff --git a/src/test/ui/consts/const-unwrap.rs b/tests/ui/consts/const-unwrap.rs similarity index 100% rename from src/test/ui/consts/const-unwrap.rs rename to tests/ui/consts/const-unwrap.rs diff --git a/src/test/ui/consts/const-unwrap.stderr b/tests/ui/consts/const-unwrap.stderr similarity index 100% rename from src/test/ui/consts/const-unwrap.stderr rename to tests/ui/consts/const-unwrap.stderr diff --git a/src/test/ui/consts/const-validation-fail-55455.rs b/tests/ui/consts/const-validation-fail-55455.rs similarity index 100% rename from src/test/ui/consts/const-validation-fail-55455.rs rename to tests/ui/consts/const-validation-fail-55455.rs diff --git a/src/test/ui/consts/const-variant-count.rs b/tests/ui/consts/const-variant-count.rs similarity index 100% rename from src/test/ui/consts/const-variant-count.rs rename to tests/ui/consts/const-variant-count.rs diff --git a/src/test/ui/consts/const-vec-of-fns.rs b/tests/ui/consts/const-vec-of-fns.rs similarity index 100% rename from src/test/ui/consts/const-vec-of-fns.rs rename to tests/ui/consts/const-vec-of-fns.rs diff --git a/src/test/ui/consts/const-vec-syntax.rs b/tests/ui/consts/const-vec-syntax.rs similarity index 100% rename from src/test/ui/consts/const-vec-syntax.rs rename to tests/ui/consts/const-vec-syntax.rs diff --git a/src/test/ui/consts/const-vecs-and-slices.rs b/tests/ui/consts/const-vecs-and-slices.rs similarity index 100% rename from src/test/ui/consts/const-vecs-and-slices.rs rename to tests/ui/consts/const-vecs-and-slices.rs diff --git a/src/test/ui/consts/const.rs b/tests/ui/consts/const.rs similarity index 100% rename from src/test/ui/consts/const.rs rename to tests/ui/consts/const.rs diff --git a/src/test/ui/consts/const_constructor/const-construct-call.rs b/tests/ui/consts/const_constructor/const-construct-call.rs similarity index 100% rename from src/test/ui/consts/const_constructor/const-construct-call.rs rename to tests/ui/consts/const_constructor/const-construct-call.rs diff --git a/src/test/ui/consts/const_constructor/const_constructor_qpath.rs b/tests/ui/consts/const_constructor/const_constructor_qpath.rs similarity index 100% rename from src/test/ui/consts/const_constructor/const_constructor_qpath.rs rename to tests/ui/consts/const_constructor/const_constructor_qpath.rs diff --git a/src/test/ui/consts/const_discriminant.rs b/tests/ui/consts/const_discriminant.rs similarity index 100% rename from src/test/ui/consts/const_discriminant.rs rename to tests/ui/consts/const_discriminant.rs diff --git a/src/test/ui/consts/const_fn_floating_point_arithmetic.gated.stderr b/tests/ui/consts/const_fn_floating_point_arithmetic.gated.stderr similarity index 100% rename from src/test/ui/consts/const_fn_floating_point_arithmetic.gated.stderr rename to tests/ui/consts/const_fn_floating_point_arithmetic.gated.stderr diff --git a/src/test/ui/consts/const_fn_floating_point_arithmetic.rs b/tests/ui/consts/const_fn_floating_point_arithmetic.rs similarity index 100% rename from src/test/ui/consts/const_fn_floating_point_arithmetic.rs rename to tests/ui/consts/const_fn_floating_point_arithmetic.rs diff --git a/src/test/ui/consts/const_fn_floating_point_arithmetic.stock.stderr b/tests/ui/consts/const_fn_floating_point_arithmetic.stock.stderr similarity index 100% rename from src/test/ui/consts/const_fn_floating_point_arithmetic.stock.stderr rename to tests/ui/consts/const_fn_floating_point_arithmetic.stock.stderr diff --git a/src/test/ui/consts/const_fn_return_nested_fn_ptr.rs b/tests/ui/consts/const_fn_return_nested_fn_ptr.rs similarity index 100% rename from src/test/ui/consts/const_fn_return_nested_fn_ptr.rs rename to tests/ui/consts/const_fn_return_nested_fn_ptr.rs diff --git a/src/test/ui/consts/const_fn_unsize.rs b/tests/ui/consts/const_fn_unsize.rs similarity index 100% rename from src/test/ui/consts/const_fn_unsize.rs rename to tests/ui/consts/const_fn_unsize.rs diff --git a/src/test/ui/consts/const_forget.rs b/tests/ui/consts/const_forget.rs similarity index 100% rename from src/test/ui/consts/const_forget.rs rename to tests/ui/consts/const_forget.rs diff --git a/src/test/ui/consts/const_in_pattern/accept_structural.rs b/tests/ui/consts/const_in_pattern/accept_structural.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/accept_structural.rs rename to tests/ui/consts/const_in_pattern/accept_structural.rs diff --git a/src/test/ui/consts/const_in_pattern/auxiliary/consts.rs b/tests/ui/consts/const_in_pattern/auxiliary/consts.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/auxiliary/consts.rs rename to tests/ui/consts/const_in_pattern/auxiliary/consts.rs diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-fail.rs b/tests/ui/consts/const_in_pattern/cross-crate-fail.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/cross-crate-fail.rs rename to tests/ui/consts/const_in_pattern/cross-crate-fail.rs diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr b/tests/ui/consts/const_in_pattern/cross-crate-fail.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr rename to tests/ui/consts/const_in_pattern/cross-crate-fail.stderr diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-pass.rs b/tests/ui/consts/const_in_pattern/cross-crate-pass.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/cross-crate-pass.rs rename to tests/ui/consts/const_in_pattern/cross-crate-pass.rs diff --git a/src/test/ui/consts/const_in_pattern/custom-eq-branch-pass.rs b/tests/ui/consts/const_in_pattern/custom-eq-branch-pass.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/custom-eq-branch-pass.rs rename to tests/ui/consts/const_in_pattern/custom-eq-branch-pass.rs diff --git a/src/test/ui/consts/const_in_pattern/custom-eq-branch-warn.rs b/tests/ui/consts/const_in_pattern/custom-eq-branch-warn.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/custom-eq-branch-warn.rs rename to tests/ui/consts/const_in_pattern/custom-eq-branch-warn.rs diff --git a/src/test/ui/consts/const_in_pattern/custom-eq-branch-warn.stderr b/tests/ui/consts/const_in_pattern/custom-eq-branch-warn.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/custom-eq-branch-warn.stderr rename to tests/ui/consts/const_in_pattern/custom-eq-branch-warn.stderr diff --git a/src/test/ui/consts/const_in_pattern/incomplete-slice.rs b/tests/ui/consts/const_in_pattern/incomplete-slice.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/incomplete-slice.rs rename to tests/ui/consts/const_in_pattern/incomplete-slice.rs diff --git a/src/test/ui/consts/const_in_pattern/incomplete-slice.stderr b/tests/ui/consts/const_in_pattern/incomplete-slice.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/incomplete-slice.stderr rename to tests/ui/consts/const_in_pattern/incomplete-slice.stderr diff --git a/src/test/ui/consts/const_in_pattern/issue-44333.rs b/tests/ui/consts/const_in_pattern/issue-44333.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-44333.rs rename to tests/ui/consts/const_in_pattern/issue-44333.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-44333.stderr b/tests/ui/consts/const_in_pattern/issue-44333.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-44333.stderr rename to tests/ui/consts/const_in_pattern/issue-44333.stderr diff --git a/src/test/ui/consts/const_in_pattern/issue-53708.rs b/tests/ui/consts/const_in_pattern/issue-53708.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-53708.rs rename to tests/ui/consts/const_in_pattern/issue-53708.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-62614.rs b/tests/ui/consts/const_in_pattern/issue-62614.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-62614.rs rename to tests/ui/consts/const_in_pattern/issue-62614.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-65466.rs b/tests/ui/consts/const_in_pattern/issue-65466.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-65466.rs rename to tests/ui/consts/const_in_pattern/issue-65466.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-73431.rs b/tests/ui/consts/const_in_pattern/issue-73431.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-73431.rs rename to tests/ui/consts/const_in_pattern/issue-73431.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-73431.stderr b/tests/ui/consts/const_in_pattern/issue-73431.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-73431.stderr rename to tests/ui/consts/const_in_pattern/issue-73431.stderr diff --git a/src/test/ui/consts/const_in_pattern/issue-78057.rs b/tests/ui/consts/const_in_pattern/issue-78057.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-78057.rs rename to tests/ui/consts/const_in_pattern/issue-78057.rs diff --git a/src/test/ui/consts/const_in_pattern/issue-78057.stderr b/tests/ui/consts/const_in_pattern/issue-78057.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/issue-78057.stderr rename to tests/ui/consts/const_in_pattern/issue-78057.stderr diff --git a/src/test/ui/consts/const_in_pattern/no-eq-branch-fail.rs b/tests/ui/consts/const_in_pattern/no-eq-branch-fail.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/no-eq-branch-fail.rs rename to tests/ui/consts/const_in_pattern/no-eq-branch-fail.rs diff --git a/src/test/ui/consts/const_in_pattern/no-eq-branch-fail.stderr b/tests/ui/consts/const_in_pattern/no-eq-branch-fail.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/no-eq-branch-fail.stderr rename to tests/ui/consts/const_in_pattern/no-eq-branch-fail.stderr diff --git a/src/test/ui/consts/const_in_pattern/reject_non_partial_eq.rs b/tests/ui/consts/const_in_pattern/reject_non_partial_eq.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/reject_non_partial_eq.rs rename to tests/ui/consts/const_in_pattern/reject_non_partial_eq.rs diff --git a/src/test/ui/consts/const_in_pattern/reject_non_partial_eq.stderr b/tests/ui/consts/const_in_pattern/reject_non_partial_eq.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/reject_non_partial_eq.stderr rename to tests/ui/consts/const_in_pattern/reject_non_partial_eq.stderr diff --git a/src/test/ui/consts/const_in_pattern/reject_non_structural.rs b/tests/ui/consts/const_in_pattern/reject_non_structural.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/reject_non_structural.rs rename to tests/ui/consts/const_in_pattern/reject_non_structural.rs diff --git a/src/test/ui/consts/const_in_pattern/reject_non_structural.stderr b/tests/ui/consts/const_in_pattern/reject_non_structural.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/reject_non_structural.stderr rename to tests/ui/consts/const_in_pattern/reject_non_structural.stderr diff --git a/src/test/ui/consts/const_in_pattern/warn_corner_cases.rs b/tests/ui/consts/const_in_pattern/warn_corner_cases.rs similarity index 100% rename from src/test/ui/consts/const_in_pattern/warn_corner_cases.rs rename to tests/ui/consts/const_in_pattern/warn_corner_cases.rs diff --git a/src/test/ui/consts/const_in_pattern/warn_corner_cases.stderr b/tests/ui/consts/const_in_pattern/warn_corner_cases.stderr similarity index 100% rename from src/test/ui/consts/const_in_pattern/warn_corner_cases.stderr rename to tests/ui/consts/const_in_pattern/warn_corner_cases.stderr diff --git a/src/test/ui/consts/const_let_assign.rs b/tests/ui/consts/const_let_assign.rs similarity index 100% rename from src/test/ui/consts/const_let_assign.rs rename to tests/ui/consts/const_let_assign.rs diff --git a/src/test/ui/consts/const_let_assign2.rs b/tests/ui/consts/const_let_assign2.rs similarity index 100% rename from src/test/ui/consts/const_let_assign2.rs rename to tests/ui/consts/const_let_assign2.rs diff --git a/src/test/ui/consts/const_let_assign3.rs b/tests/ui/consts/const_let_assign3.rs similarity index 100% rename from src/test/ui/consts/const_let_assign3.rs rename to tests/ui/consts/const_let_assign3.rs diff --git a/src/test/ui/consts/const_let_assign3.stderr b/tests/ui/consts/const_let_assign3.stderr similarity index 100% rename from src/test/ui/consts/const_let_assign3.stderr rename to tests/ui/consts/const_let_assign3.stderr diff --git a/src/test/ui/consts/const_let_eq.rs b/tests/ui/consts/const_let_eq.rs similarity index 100% rename from src/test/ui/consts/const_let_eq.rs rename to tests/ui/consts/const_let_eq.rs diff --git a/src/test/ui/consts/const_let_eq_float.rs b/tests/ui/consts/const_let_eq_float.rs similarity index 100% rename from src/test/ui/consts/const_let_eq_float.rs rename to tests/ui/consts/const_let_eq_float.rs diff --git a/src/test/ui/consts/const_let_irrefutable.rs b/tests/ui/consts/const_let_irrefutable.rs similarity index 100% rename from src/test/ui/consts/const_let_irrefutable.rs rename to tests/ui/consts/const_let_irrefutable.rs diff --git a/src/test/ui/consts/const_let_promote.rs b/tests/ui/consts/const_let_promote.rs similarity index 100% rename from src/test/ui/consts/const_let_promote.rs rename to tests/ui/consts/const_let_promote.rs diff --git a/src/test/ui/consts/const_let_refutable.rs b/tests/ui/consts/const_let_refutable.rs similarity index 100% rename from src/test/ui/consts/const_let_refutable.rs rename to tests/ui/consts/const_let_refutable.rs diff --git a/src/test/ui/consts/const_let_refutable.stderr b/tests/ui/consts/const_let_refutable.stderr similarity index 100% rename from src/test/ui/consts/const_let_refutable.stderr rename to tests/ui/consts/const_let_refutable.stderr diff --git a/src/test/ui/consts/const_limit/const_eval_limit_not_reached.rs b/tests/ui/consts/const_limit/const_eval_limit_not_reached.rs similarity index 100% rename from src/test/ui/consts/const_limit/const_eval_limit_not_reached.rs rename to tests/ui/consts/const_limit/const_eval_limit_not_reached.rs diff --git a/src/test/ui/consts/const_limit/const_eval_limit_overflow.rs b/tests/ui/consts/const_limit/const_eval_limit_overflow.rs similarity index 100% rename from src/test/ui/consts/const_limit/const_eval_limit_overflow.rs rename to tests/ui/consts/const_limit/const_eval_limit_overflow.rs diff --git a/src/test/ui/consts/const_limit/const_eval_limit_overflow.stderr b/tests/ui/consts/const_limit/const_eval_limit_overflow.stderr similarity index 100% rename from src/test/ui/consts/const_limit/const_eval_limit_overflow.stderr rename to tests/ui/consts/const_limit/const_eval_limit_overflow.stderr diff --git a/src/test/ui/consts/const_limit/const_eval_limit_reached.rs b/tests/ui/consts/const_limit/const_eval_limit_reached.rs similarity index 100% rename from src/test/ui/consts/const_limit/const_eval_limit_reached.rs rename to tests/ui/consts/const_limit/const_eval_limit_reached.rs diff --git a/src/test/ui/consts/const_limit/const_eval_limit_reached.stderr b/tests/ui/consts/const_limit/const_eval_limit_reached.stderr similarity index 100% rename from src/test/ui/consts/const_limit/const_eval_limit_reached.stderr rename to tests/ui/consts/const_limit/const_eval_limit_reached.stderr diff --git a/src/test/ui/consts/const_limit/feature-gate-const_eval_limit.rs b/tests/ui/consts/const_limit/feature-gate-const_eval_limit.rs similarity index 100% rename from src/test/ui/consts/const_limit/feature-gate-const_eval_limit.rs rename to tests/ui/consts/const_limit/feature-gate-const_eval_limit.rs diff --git a/src/test/ui/consts/const_limit/feature-gate-const_eval_limit.stderr b/tests/ui/consts/const_limit/feature-gate-const_eval_limit.stderr similarity index 100% rename from src/test/ui/consts/const_limit/feature-gate-const_eval_limit.stderr rename to tests/ui/consts/const_limit/feature-gate-const_eval_limit.stderr diff --git a/src/test/ui/consts/const_prop_slice_pat_ice.rs b/tests/ui/consts/const_prop_slice_pat_ice.rs similarity index 100% rename from src/test/ui/consts/const_prop_slice_pat_ice.rs rename to tests/ui/consts/const_prop_slice_pat_ice.rs diff --git a/src/test/ui/consts/const_short_circuit.rs b/tests/ui/consts/const_short_circuit.rs similarity index 100% rename from src/test/ui/consts/const_short_circuit.rs rename to tests/ui/consts/const_short_circuit.rs diff --git a/src/test/ui/consts/const_unsafe_unreachable.rs b/tests/ui/consts/const_unsafe_unreachable.rs similarity index 100% rename from src/test/ui/consts/const_unsafe_unreachable.rs rename to tests/ui/consts/const_unsafe_unreachable.rs diff --git a/src/test/ui/consts/const_unsafe_unreachable_ub.rs b/tests/ui/consts/const_unsafe_unreachable_ub.rs similarity index 100% rename from src/test/ui/consts/const_unsafe_unreachable_ub.rs rename to tests/ui/consts/const_unsafe_unreachable_ub.rs diff --git a/src/test/ui/consts/const_unsafe_unreachable_ub.stderr b/tests/ui/consts/const_unsafe_unreachable_ub.stderr similarity index 100% rename from src/test/ui/consts/const_unsafe_unreachable_ub.stderr rename to tests/ui/consts/const_unsafe_unreachable_ub.stderr diff --git a/src/test/ui/consts/constifconst-call-in-const-position.rs b/tests/ui/consts/constifconst-call-in-const-position.rs similarity index 100% rename from src/test/ui/consts/constifconst-call-in-const-position.rs rename to tests/ui/consts/constifconst-call-in-const-position.rs diff --git a/src/test/ui/consts/constifconst-call-in-const-position.stderr b/tests/ui/consts/constifconst-call-in-const-position.stderr similarity index 100% rename from src/test/ui/consts/constifconst-call-in-const-position.stderr rename to tests/ui/consts/constifconst-call-in-const-position.stderr diff --git a/src/test/ui/consts/consts-in-patterns.rs b/tests/ui/consts/consts-in-patterns.rs similarity index 100% rename from src/test/ui/consts/consts-in-patterns.rs rename to tests/ui/consts/consts-in-patterns.rs diff --git a/src/test/ui/consts/control-flow/assert.rs b/tests/ui/consts/control-flow/assert.rs similarity index 100% rename from src/test/ui/consts/control-flow/assert.rs rename to tests/ui/consts/control-flow/assert.rs diff --git a/src/test/ui/consts/control-flow/assert.stderr b/tests/ui/consts/control-flow/assert.stderr similarity index 100% rename from src/test/ui/consts/control-flow/assert.stderr rename to tests/ui/consts/control-flow/assert.stderr diff --git a/src/test/ui/consts/control-flow/basics.rs b/tests/ui/consts/control-flow/basics.rs similarity index 100% rename from src/test/ui/consts/control-flow/basics.rs rename to tests/ui/consts/control-flow/basics.rs diff --git a/src/test/ui/consts/control-flow/drop-fail.precise.stderr b/tests/ui/consts/control-flow/drop-fail.precise.stderr similarity index 100% rename from src/test/ui/consts/control-flow/drop-fail.precise.stderr rename to tests/ui/consts/control-flow/drop-fail.precise.stderr diff --git a/src/test/ui/consts/control-flow/drop-fail.rs b/tests/ui/consts/control-flow/drop-fail.rs similarity index 100% rename from src/test/ui/consts/control-flow/drop-fail.rs rename to tests/ui/consts/control-flow/drop-fail.rs diff --git a/src/test/ui/consts/control-flow/drop-fail.stock.stderr b/tests/ui/consts/control-flow/drop-fail.stock.stderr similarity index 100% rename from src/test/ui/consts/control-flow/drop-fail.stock.stderr rename to tests/ui/consts/control-flow/drop-fail.stock.stderr diff --git a/src/test/ui/consts/control-flow/drop-pass.rs b/tests/ui/consts/control-flow/drop-pass.rs similarity index 100% rename from src/test/ui/consts/control-flow/drop-pass.rs rename to tests/ui/consts/control-flow/drop-pass.rs diff --git a/src/test/ui/consts/control-flow/drop-precise.rs b/tests/ui/consts/control-flow/drop-precise.rs similarity index 100% rename from src/test/ui/consts/control-flow/drop-precise.rs rename to tests/ui/consts/control-flow/drop-precise.rs diff --git a/src/test/ui/consts/control-flow/exhaustive-c-like-enum-match.rs b/tests/ui/consts/control-flow/exhaustive-c-like-enum-match.rs similarity index 100% rename from src/test/ui/consts/control-flow/exhaustive-c-like-enum-match.rs rename to tests/ui/consts/control-flow/exhaustive-c-like-enum-match.rs diff --git a/src/test/ui/consts/control-flow/feature-gate-const-if-match.rs b/tests/ui/consts/control-flow/feature-gate-const-if-match.rs similarity index 100% rename from src/test/ui/consts/control-flow/feature-gate-const-if-match.rs rename to tests/ui/consts/control-flow/feature-gate-const-if-match.rs diff --git a/src/test/ui/consts/control-flow/interior-mutability.rs b/tests/ui/consts/control-flow/interior-mutability.rs similarity index 100% rename from src/test/ui/consts/control-flow/interior-mutability.rs rename to tests/ui/consts/control-flow/interior-mutability.rs diff --git a/src/test/ui/consts/control-flow/interior-mutability.stderr b/tests/ui/consts/control-flow/interior-mutability.stderr similarity index 100% rename from src/test/ui/consts/control-flow/interior-mutability.stderr rename to tests/ui/consts/control-flow/interior-mutability.stderr diff --git a/src/test/ui/consts/control-flow/issue-46843.rs b/tests/ui/consts/control-flow/issue-46843.rs similarity index 100% rename from src/test/ui/consts/control-flow/issue-46843.rs rename to tests/ui/consts/control-flow/issue-46843.rs diff --git a/src/test/ui/consts/control-flow/issue-46843.stderr b/tests/ui/consts/control-flow/issue-46843.stderr similarity index 100% rename from src/test/ui/consts/control-flow/issue-46843.stderr rename to tests/ui/consts/control-flow/issue-46843.stderr diff --git a/src/test/ui/consts/control-flow/issue-50577.rs b/tests/ui/consts/control-flow/issue-50577.rs similarity index 100% rename from src/test/ui/consts/control-flow/issue-50577.rs rename to tests/ui/consts/control-flow/issue-50577.rs diff --git a/src/test/ui/consts/control-flow/issue-50577.stderr b/tests/ui/consts/control-flow/issue-50577.stderr similarity index 100% rename from src/test/ui/consts/control-flow/issue-50577.stderr rename to tests/ui/consts/control-flow/issue-50577.stderr diff --git a/src/test/ui/consts/control-flow/loop.rs b/tests/ui/consts/control-flow/loop.rs similarity index 100% rename from src/test/ui/consts/control-flow/loop.rs rename to tests/ui/consts/control-flow/loop.rs diff --git a/src/test/ui/consts/control-flow/loop.stderr b/tests/ui/consts/control-flow/loop.stderr similarity index 100% rename from src/test/ui/consts/control-flow/loop.stderr rename to tests/ui/consts/control-flow/loop.stderr diff --git a/src/test/ui/consts/control-flow/short-circuit-let.rs b/tests/ui/consts/control-flow/short-circuit-let.rs similarity index 100% rename from src/test/ui/consts/control-flow/short-circuit-let.rs rename to tests/ui/consts/control-flow/short-circuit-let.rs diff --git a/src/test/ui/consts/control-flow/short-circuit.rs b/tests/ui/consts/control-flow/short-circuit.rs similarity index 100% rename from src/test/ui/consts/control-flow/short-circuit.rs rename to tests/ui/consts/control-flow/short-circuit.rs diff --git a/src/test/ui/consts/control-flow/single_variant_match_ice.rs b/tests/ui/consts/control-flow/single_variant_match_ice.rs similarity index 100% rename from src/test/ui/consts/control-flow/single_variant_match_ice.rs rename to tests/ui/consts/control-flow/single_variant_match_ice.rs diff --git a/src/test/ui/consts/control-flow/try.rs b/tests/ui/consts/control-flow/try.rs similarity index 100% rename from src/test/ui/consts/control-flow/try.rs rename to tests/ui/consts/control-flow/try.rs diff --git a/src/test/ui/consts/control-flow/try.stderr b/tests/ui/consts/control-flow/try.stderr similarity index 100% rename from src/test/ui/consts/control-flow/try.stderr rename to tests/ui/consts/control-flow/try.stderr diff --git a/src/test/ui/consts/copy-intrinsic.rs b/tests/ui/consts/copy-intrinsic.rs similarity index 100% rename from src/test/ui/consts/copy-intrinsic.rs rename to tests/ui/consts/copy-intrinsic.rs diff --git a/src/test/ui/consts/copy-intrinsic.stderr b/tests/ui/consts/copy-intrinsic.stderr similarity index 100% rename from src/test/ui/consts/copy-intrinsic.stderr rename to tests/ui/consts/copy-intrinsic.stderr diff --git a/src/test/ui/consts/dangling-alloc-id-ice.rs b/tests/ui/consts/dangling-alloc-id-ice.rs similarity index 100% rename from src/test/ui/consts/dangling-alloc-id-ice.rs rename to tests/ui/consts/dangling-alloc-id-ice.rs diff --git a/src/test/ui/consts/dangling-alloc-id-ice.stderr b/tests/ui/consts/dangling-alloc-id-ice.stderr similarity index 100% rename from src/test/ui/consts/dangling-alloc-id-ice.stderr rename to tests/ui/consts/dangling-alloc-id-ice.stderr diff --git a/src/test/ui/consts/dangling_raw_ptr.rs b/tests/ui/consts/dangling_raw_ptr.rs similarity index 100% rename from src/test/ui/consts/dangling_raw_ptr.rs rename to tests/ui/consts/dangling_raw_ptr.rs diff --git a/src/test/ui/consts/dangling_raw_ptr.stderr b/tests/ui/consts/dangling_raw_ptr.stderr similarity index 100% rename from src/test/ui/consts/dangling_raw_ptr.stderr rename to tests/ui/consts/dangling_raw_ptr.stderr diff --git a/src/test/ui/consts/deref_in_pattern.rs b/tests/ui/consts/deref_in_pattern.rs similarity index 100% rename from src/test/ui/consts/deref_in_pattern.rs rename to tests/ui/consts/deref_in_pattern.rs diff --git a/src/test/ui/consts/drop_box.rs b/tests/ui/consts/drop_box.rs similarity index 100% rename from src/test/ui/consts/drop_box.rs rename to tests/ui/consts/drop_box.rs diff --git a/src/test/ui/consts/drop_box.stderr b/tests/ui/consts/drop_box.stderr similarity index 100% rename from src/test/ui/consts/drop_box.stderr rename to tests/ui/consts/drop_box.stderr diff --git a/src/test/ui/consts/drop_none.rs b/tests/ui/consts/drop_none.rs similarity index 100% rename from src/test/ui/consts/drop_none.rs rename to tests/ui/consts/drop_none.rs diff --git a/src/test/ui/consts/drop_zst.rs b/tests/ui/consts/drop_zst.rs similarity index 100% rename from src/test/ui/consts/drop_zst.rs rename to tests/ui/consts/drop_zst.rs diff --git a/src/test/ui/consts/drop_zst.stderr b/tests/ui/consts/drop_zst.stderr similarity index 100% rename from src/test/ui/consts/drop_zst.stderr rename to tests/ui/consts/drop_zst.stderr diff --git a/src/test/ui/consts/enum-discr-type-err.rs b/tests/ui/consts/enum-discr-type-err.rs similarity index 100% rename from src/test/ui/consts/enum-discr-type-err.rs rename to tests/ui/consts/enum-discr-type-err.rs diff --git a/src/test/ui/consts/enum-discr-type-err.stderr b/tests/ui/consts/enum-discr-type-err.stderr similarity index 100% rename from src/test/ui/consts/enum-discr-type-err.stderr rename to tests/ui/consts/enum-discr-type-err.stderr diff --git a/src/test/ui/consts/eval-enum.rs b/tests/ui/consts/eval-enum.rs similarity index 100% rename from src/test/ui/consts/eval-enum.rs rename to tests/ui/consts/eval-enum.rs diff --git a/src/test/ui/consts/eval-enum.stderr b/tests/ui/consts/eval-enum.stderr similarity index 100% rename from src/test/ui/consts/eval-enum.stderr rename to tests/ui/consts/eval-enum.stderr diff --git a/src/test/ui/consts/extra-const-ub/detect-extra-ub.rs b/tests/ui/consts/extra-const-ub/detect-extra-ub.rs similarity index 100% rename from src/test/ui/consts/extra-const-ub/detect-extra-ub.rs rename to tests/ui/consts/extra-const-ub/detect-extra-ub.rs diff --git a/src/test/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr b/tests/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr similarity index 100% rename from src/test/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr rename to tests/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr diff --git a/src/test/ui/consts/extra-const-ub/issue-100771.rs b/tests/ui/consts/extra-const-ub/issue-100771.rs similarity index 100% rename from src/test/ui/consts/extra-const-ub/issue-100771.rs rename to tests/ui/consts/extra-const-ub/issue-100771.rs diff --git a/src/test/ui/consts/extra-const-ub/issue-101034.rs b/tests/ui/consts/extra-const-ub/issue-101034.rs similarity index 100% rename from src/test/ui/consts/extra-const-ub/issue-101034.rs rename to tests/ui/consts/extra-const-ub/issue-101034.rs diff --git a/src/test/ui/consts/fn_trait_refs.rs b/tests/ui/consts/fn_trait_refs.rs similarity index 100% rename from src/test/ui/consts/fn_trait_refs.rs rename to tests/ui/consts/fn_trait_refs.rs diff --git a/src/test/ui/consts/huge-values.rs b/tests/ui/consts/huge-values.rs similarity index 100% rename from src/test/ui/consts/huge-values.rs rename to tests/ui/consts/huge-values.rs diff --git a/src/test/ui/consts/ice-48279.rs b/tests/ui/consts/ice-48279.rs similarity index 100% rename from src/test/ui/consts/ice-48279.rs rename to tests/ui/consts/ice-48279.rs diff --git a/src/test/ui/consts/ice-zst-static-access.rs b/tests/ui/consts/ice-zst-static-access.rs similarity index 100% rename from src/test/ui/consts/ice-zst-static-access.rs rename to tests/ui/consts/ice-zst-static-access.rs diff --git a/src/test/ui/consts/inline_asm.rs b/tests/ui/consts/inline_asm.rs similarity index 100% rename from src/test/ui/consts/inline_asm.rs rename to tests/ui/consts/inline_asm.rs diff --git a/src/test/ui/consts/inline_asm.stderr b/tests/ui/consts/inline_asm.stderr similarity index 100% rename from src/test/ui/consts/inline_asm.stderr rename to tests/ui/consts/inline_asm.stderr diff --git a/src/test/ui/consts/int_ptr_for_zst_slices.rs b/tests/ui/consts/int_ptr_for_zst_slices.rs similarity index 100% rename from src/test/ui/consts/int_ptr_for_zst_slices.rs rename to tests/ui/consts/int_ptr_for_zst_slices.rs diff --git a/src/test/ui/consts/intrinsic_without_const_stab.rs b/tests/ui/consts/intrinsic_without_const_stab.rs similarity index 100% rename from src/test/ui/consts/intrinsic_without_const_stab.rs rename to tests/ui/consts/intrinsic_without_const_stab.rs diff --git a/src/test/ui/consts/intrinsic_without_const_stab.stderr b/tests/ui/consts/intrinsic_without_const_stab.stderr similarity index 100% rename from src/test/ui/consts/intrinsic_without_const_stab.stderr rename to tests/ui/consts/intrinsic_without_const_stab.stderr diff --git a/src/test/ui/consts/intrinsic_without_const_stab_fail.rs b/tests/ui/consts/intrinsic_without_const_stab_fail.rs similarity index 100% rename from src/test/ui/consts/intrinsic_without_const_stab_fail.rs rename to tests/ui/consts/intrinsic_without_const_stab_fail.rs diff --git a/src/test/ui/consts/intrinsic_without_const_stab_fail.stderr b/tests/ui/consts/intrinsic_without_const_stab_fail.stderr similarity index 100% rename from src/test/ui/consts/intrinsic_without_const_stab_fail.stderr rename to tests/ui/consts/intrinsic_without_const_stab_fail.stderr diff --git a/src/test/ui/consts/invalid-const-in-body.rs b/tests/ui/consts/invalid-const-in-body.rs similarity index 100% rename from src/test/ui/consts/invalid-const-in-body.rs rename to tests/ui/consts/invalid-const-in-body.rs diff --git a/src/test/ui/consts/invalid-const-in-body.stderr b/tests/ui/consts/invalid-const-in-body.stderr similarity index 100% rename from src/test/ui/consts/invalid-const-in-body.stderr rename to tests/ui/consts/invalid-const-in-body.stderr diff --git a/src/test/ui/consts/invalid-inline-const-in-match-arm.rs b/tests/ui/consts/invalid-inline-const-in-match-arm.rs similarity index 100% rename from src/test/ui/consts/invalid-inline-const-in-match-arm.rs rename to tests/ui/consts/invalid-inline-const-in-match-arm.rs diff --git a/src/test/ui/consts/invalid-inline-const-in-match-arm.stderr b/tests/ui/consts/invalid-inline-const-in-match-arm.stderr similarity index 100% rename from src/test/ui/consts/invalid-inline-const-in-match-arm.stderr rename to tests/ui/consts/invalid-inline-const-in-match-arm.stderr diff --git a/src/test/ui/consts/invalid-union.32bit.stderr b/tests/ui/consts/invalid-union.32bit.stderr similarity index 100% rename from src/test/ui/consts/invalid-union.32bit.stderr rename to tests/ui/consts/invalid-union.32bit.stderr diff --git a/src/test/ui/consts/invalid-union.64bit.stderr b/tests/ui/consts/invalid-union.64bit.stderr similarity index 100% rename from src/test/ui/consts/invalid-union.64bit.stderr rename to tests/ui/consts/invalid-union.64bit.stderr diff --git a/src/test/ui/consts/invalid-union.rs b/tests/ui/consts/invalid-union.rs similarity index 100% rename from src/test/ui/consts/invalid-union.rs rename to tests/ui/consts/invalid-union.rs diff --git a/src/test/ui/consts/invalid_promotion.rs b/tests/ui/consts/invalid_promotion.rs similarity index 100% rename from src/test/ui/consts/invalid_promotion.rs rename to tests/ui/consts/invalid_promotion.rs diff --git a/src/test/ui/consts/issue-102117.rs b/tests/ui/consts/issue-102117.rs similarity index 100% rename from src/test/ui/consts/issue-102117.rs rename to tests/ui/consts/issue-102117.rs diff --git a/src/test/ui/consts/issue-102117.stderr b/tests/ui/consts/issue-102117.stderr similarity index 100% rename from src/test/ui/consts/issue-102117.stderr rename to tests/ui/consts/issue-102117.stderr diff --git a/src/test/ui/consts/issue-103790.rs b/tests/ui/consts/issue-103790.rs similarity index 100% rename from src/test/ui/consts/issue-103790.rs rename to tests/ui/consts/issue-103790.rs diff --git a/src/test/ui/consts/issue-103790.stderr b/tests/ui/consts/issue-103790.stderr similarity index 100% rename from src/test/ui/consts/issue-103790.stderr rename to tests/ui/consts/issue-103790.stderr diff --git a/src/test/ui/consts/issue-104155.rs b/tests/ui/consts/issue-104155.rs similarity index 100% rename from src/test/ui/consts/issue-104155.rs rename to tests/ui/consts/issue-104155.rs diff --git a/src/test/ui/consts/issue-104396.rs b/tests/ui/consts/issue-104396.rs similarity index 100% rename from src/test/ui/consts/issue-104396.rs rename to tests/ui/consts/issue-104396.rs diff --git a/src/test/ui/consts/issue-104396.stderr b/tests/ui/consts/issue-104396.stderr similarity index 100% rename from src/test/ui/consts/issue-104396.stderr rename to tests/ui/consts/issue-104396.stderr diff --git a/src/test/ui/consts/issue-104609.rs b/tests/ui/consts/issue-104609.rs similarity index 100% rename from src/test/ui/consts/issue-104609.rs rename to tests/ui/consts/issue-104609.rs diff --git a/src/test/ui/consts/issue-104609.stderr b/tests/ui/consts/issue-104609.stderr similarity index 100% rename from src/test/ui/consts/issue-104609.stderr rename to tests/ui/consts/issue-104609.stderr diff --git a/src/test/ui/consts/issue-104768.rs b/tests/ui/consts/issue-104768.rs similarity index 100% rename from src/test/ui/consts/issue-104768.rs rename to tests/ui/consts/issue-104768.rs diff --git a/src/test/ui/consts/issue-104768.stderr b/tests/ui/consts/issue-104768.stderr similarity index 100% rename from src/test/ui/consts/issue-104768.stderr rename to tests/ui/consts/issue-104768.stderr diff --git a/src/test/ui/consts/issue-13837.rs b/tests/ui/consts/issue-13837.rs similarity index 100% rename from src/test/ui/consts/issue-13837.rs rename to tests/ui/consts/issue-13837.rs diff --git a/src/test/ui/consts/issue-13902.rs b/tests/ui/consts/issue-13902.rs similarity index 100% rename from src/test/ui/consts/issue-13902.rs rename to tests/ui/consts/issue-13902.rs diff --git a/src/test/ui/consts/issue-17074.rs b/tests/ui/consts/issue-17074.rs similarity index 100% rename from src/test/ui/consts/issue-17074.rs rename to tests/ui/consts/issue-17074.rs diff --git a/src/test/ui/consts/issue-17458.rs b/tests/ui/consts/issue-17458.rs similarity index 100% rename from src/test/ui/consts/issue-17458.rs rename to tests/ui/consts/issue-17458.rs diff --git a/src/test/ui/consts/issue-17458.stderr b/tests/ui/consts/issue-17458.stderr similarity index 100% rename from src/test/ui/consts/issue-17458.stderr rename to tests/ui/consts/issue-17458.stderr diff --git a/src/test/ui/consts/issue-17718-borrow-interior.rs b/tests/ui/consts/issue-17718-borrow-interior.rs similarity index 100% rename from src/test/ui/consts/issue-17718-borrow-interior.rs rename to tests/ui/consts/issue-17718-borrow-interior.rs diff --git a/src/test/ui/consts/issue-17718-const-bad-values.rs b/tests/ui/consts/issue-17718-const-bad-values.rs similarity index 100% rename from src/test/ui/consts/issue-17718-const-bad-values.rs rename to tests/ui/consts/issue-17718-const-bad-values.rs diff --git a/src/test/ui/consts/issue-17718-const-bad-values.stderr b/tests/ui/consts/issue-17718-const-bad-values.stderr similarity index 100% rename from src/test/ui/consts/issue-17718-const-bad-values.stderr rename to tests/ui/consts/issue-17718-const-bad-values.stderr diff --git a/src/test/ui/consts/issue-17718-const-borrow.rs b/tests/ui/consts/issue-17718-const-borrow.rs similarity index 100% rename from src/test/ui/consts/issue-17718-const-borrow.rs rename to tests/ui/consts/issue-17718-const-borrow.rs diff --git a/src/test/ui/consts/issue-17718-const-borrow.stderr b/tests/ui/consts/issue-17718-const-borrow.stderr similarity index 100% rename from src/test/ui/consts/issue-17718-const-borrow.stderr rename to tests/ui/consts/issue-17718-const-borrow.stderr diff --git a/src/test/ui/consts/issue-17718-constants-not-static.rs b/tests/ui/consts/issue-17718-constants-not-static.rs similarity index 100% rename from src/test/ui/consts/issue-17718-constants-not-static.rs rename to tests/ui/consts/issue-17718-constants-not-static.rs diff --git a/src/test/ui/consts/issue-17718-constants-not-static.stderr b/tests/ui/consts/issue-17718-constants-not-static.stderr similarity index 100% rename from src/test/ui/consts/issue-17718-constants-not-static.stderr rename to tests/ui/consts/issue-17718-constants-not-static.stderr diff --git a/src/test/ui/consts/issue-17718-references.rs b/tests/ui/consts/issue-17718-references.rs similarity index 100% rename from src/test/ui/consts/issue-17718-references.rs rename to tests/ui/consts/issue-17718-references.rs diff --git a/src/test/ui/consts/issue-17718-references.stderr b/tests/ui/consts/issue-17718-references.stderr similarity index 100% rename from src/test/ui/consts/issue-17718-references.stderr rename to tests/ui/consts/issue-17718-references.stderr diff --git a/src/test/ui/consts/issue-17718.rs b/tests/ui/consts/issue-17718.rs similarity index 100% rename from src/test/ui/consts/issue-17718.rs rename to tests/ui/consts/issue-17718.rs diff --git a/src/test/ui/consts/issue-17756.rs b/tests/ui/consts/issue-17756.rs similarity index 100% rename from src/test/ui/consts/issue-17756.rs rename to tests/ui/consts/issue-17756.rs diff --git a/src/test/ui/consts/issue-18294.rs b/tests/ui/consts/issue-18294.rs similarity index 100% rename from src/test/ui/consts/issue-18294.rs rename to tests/ui/consts/issue-18294.rs diff --git a/src/test/ui/consts/issue-18294.stderr b/tests/ui/consts/issue-18294.stderr similarity index 100% rename from src/test/ui/consts/issue-18294.stderr rename to tests/ui/consts/issue-18294.stderr diff --git a/src/test/ui/consts/issue-19244.rs b/tests/ui/consts/issue-19244.rs similarity index 100% rename from src/test/ui/consts/issue-19244.rs rename to tests/ui/consts/issue-19244.rs diff --git a/src/test/ui/consts/issue-21562.rs b/tests/ui/consts/issue-21562.rs similarity index 100% rename from src/test/ui/consts/issue-21562.rs rename to tests/ui/consts/issue-21562.rs diff --git a/src/test/ui/consts/issue-21721.rs b/tests/ui/consts/issue-21721.rs similarity index 100% rename from src/test/ui/consts/issue-21721.rs rename to tests/ui/consts/issue-21721.rs diff --git a/src/test/ui/consts/issue-23833.rs b/tests/ui/consts/issue-23833.rs similarity index 100% rename from src/test/ui/consts/issue-23833.rs rename to tests/ui/consts/issue-23833.rs diff --git a/src/test/ui/consts/issue-23968-const-not-overflow.rs b/tests/ui/consts/issue-23968-const-not-overflow.rs similarity index 100% rename from src/test/ui/consts/issue-23968-const-not-overflow.rs rename to tests/ui/consts/issue-23968-const-not-overflow.rs diff --git a/src/test/ui/consts/issue-25826.rs b/tests/ui/consts/issue-25826.rs similarity index 100% rename from src/test/ui/consts/issue-25826.rs rename to tests/ui/consts/issue-25826.rs diff --git a/src/test/ui/consts/issue-25826.stderr b/tests/ui/consts/issue-25826.stderr similarity index 100% rename from src/test/ui/consts/issue-25826.stderr rename to tests/ui/consts/issue-25826.stderr diff --git a/src/test/ui/consts/issue-27890.rs b/tests/ui/consts/issue-27890.rs similarity index 100% rename from src/test/ui/consts/issue-27890.rs rename to tests/ui/consts/issue-27890.rs diff --git a/src/test/ui/consts/issue-28113.rs b/tests/ui/consts/issue-28113.rs similarity index 100% rename from src/test/ui/consts/issue-28113.rs rename to tests/ui/consts/issue-28113.rs diff --git a/src/test/ui/consts/issue-28113.stderr b/tests/ui/consts/issue-28113.stderr similarity index 100% rename from src/test/ui/consts/issue-28113.stderr rename to tests/ui/consts/issue-28113.stderr diff --git a/src/test/ui/consts/issue-29914-2.rs b/tests/ui/consts/issue-29914-2.rs similarity index 100% rename from src/test/ui/consts/issue-29914-2.rs rename to tests/ui/consts/issue-29914-2.rs diff --git a/src/test/ui/consts/issue-29914-3.rs b/tests/ui/consts/issue-29914-3.rs similarity index 100% rename from src/test/ui/consts/issue-29914-3.rs rename to tests/ui/consts/issue-29914-3.rs diff --git a/src/test/ui/consts/issue-29914.rs b/tests/ui/consts/issue-29914.rs similarity index 100% rename from src/test/ui/consts/issue-29914.rs rename to tests/ui/consts/issue-29914.rs diff --git a/src/test/ui/consts/issue-29927-1.rs b/tests/ui/consts/issue-29927-1.rs similarity index 100% rename from src/test/ui/consts/issue-29927-1.rs rename to tests/ui/consts/issue-29927-1.rs diff --git a/src/test/ui/consts/issue-29927.rs b/tests/ui/consts/issue-29927.rs similarity index 100% rename from src/test/ui/consts/issue-29927.rs rename to tests/ui/consts/issue-29927.rs diff --git a/src/test/ui/consts/issue-32829-2.rs b/tests/ui/consts/issue-32829-2.rs similarity index 100% rename from src/test/ui/consts/issue-32829-2.rs rename to tests/ui/consts/issue-32829-2.rs diff --git a/src/test/ui/consts/issue-32829-2.stderr b/tests/ui/consts/issue-32829-2.stderr similarity index 100% rename from src/test/ui/consts/issue-32829-2.stderr rename to tests/ui/consts/issue-32829-2.stderr diff --git a/src/test/ui/consts/issue-32829.rs b/tests/ui/consts/issue-32829.rs similarity index 100% rename from src/test/ui/consts/issue-32829.rs rename to tests/ui/consts/issue-32829.rs diff --git a/src/test/ui/consts/issue-32829.stderr b/tests/ui/consts/issue-32829.stderr similarity index 100% rename from src/test/ui/consts/issue-32829.stderr rename to tests/ui/consts/issue-32829.stderr diff --git a/src/test/ui/consts/issue-33537.rs b/tests/ui/consts/issue-33537.rs similarity index 100% rename from src/test/ui/consts/issue-33537.rs rename to tests/ui/consts/issue-33537.rs diff --git a/src/test/ui/consts/issue-34784.rs b/tests/ui/consts/issue-34784.rs similarity index 100% rename from src/test/ui/consts/issue-34784.rs rename to tests/ui/consts/issue-34784.rs diff --git a/src/test/ui/consts/issue-3521.fixed b/tests/ui/consts/issue-3521.fixed similarity index 100% rename from src/test/ui/consts/issue-3521.fixed rename to tests/ui/consts/issue-3521.fixed diff --git a/src/test/ui/consts/issue-3521.rs b/tests/ui/consts/issue-3521.rs similarity index 100% rename from src/test/ui/consts/issue-3521.rs rename to tests/ui/consts/issue-3521.rs diff --git a/src/test/ui/consts/issue-3521.stderr b/tests/ui/consts/issue-3521.stderr similarity index 100% rename from src/test/ui/consts/issue-3521.stderr rename to tests/ui/consts/issue-3521.stderr diff --git a/src/test/ui/consts/issue-36163.rs b/tests/ui/consts/issue-36163.rs similarity index 100% rename from src/test/ui/consts/issue-36163.rs rename to tests/ui/consts/issue-36163.rs diff --git a/src/test/ui/consts/issue-36163.stderr b/tests/ui/consts/issue-36163.stderr similarity index 100% rename from src/test/ui/consts/issue-36163.stderr rename to tests/ui/consts/issue-36163.stderr diff --git a/src/test/ui/consts/issue-37222.rs b/tests/ui/consts/issue-37222.rs similarity index 100% rename from src/test/ui/consts/issue-37222.rs rename to tests/ui/consts/issue-37222.rs diff --git a/src/test/ui/consts/issue-37550-1.rs b/tests/ui/consts/issue-37550-1.rs similarity index 100% rename from src/test/ui/consts/issue-37550-1.rs rename to tests/ui/consts/issue-37550-1.rs diff --git a/src/test/ui/consts/issue-37550.rs b/tests/ui/consts/issue-37550.rs similarity index 100% rename from src/test/ui/consts/issue-37550.rs rename to tests/ui/consts/issue-37550.rs diff --git a/src/test/ui/consts/issue-37991.rs b/tests/ui/consts/issue-37991.rs similarity index 100% rename from src/test/ui/consts/issue-37991.rs rename to tests/ui/consts/issue-37991.rs diff --git a/src/test/ui/consts/issue-39161-bogus-error.rs b/tests/ui/consts/issue-39161-bogus-error.rs similarity index 100% rename from src/test/ui/consts/issue-39161-bogus-error.rs rename to tests/ui/consts/issue-39161-bogus-error.rs diff --git a/src/test/ui/consts/issue-39974.rs b/tests/ui/consts/issue-39974.rs similarity index 100% rename from src/test/ui/consts/issue-39974.rs rename to tests/ui/consts/issue-39974.rs diff --git a/src/test/ui/consts/issue-39974.stderr b/tests/ui/consts/issue-39974.stderr similarity index 100% rename from src/test/ui/consts/issue-39974.stderr rename to tests/ui/consts/issue-39974.stderr diff --git a/src/test/ui/consts/issue-43105.rs b/tests/ui/consts/issue-43105.rs similarity index 100% rename from src/test/ui/consts/issue-43105.rs rename to tests/ui/consts/issue-43105.rs diff --git a/src/test/ui/consts/issue-43105.stderr b/tests/ui/consts/issue-43105.stderr similarity index 100% rename from src/test/ui/consts/issue-43105.stderr rename to tests/ui/consts/issue-43105.stderr diff --git a/src/test/ui/consts/issue-44415.rs b/tests/ui/consts/issue-44415.rs similarity index 100% rename from src/test/ui/consts/issue-44415.rs rename to tests/ui/consts/issue-44415.rs diff --git a/src/test/ui/consts/issue-44415.stderr b/tests/ui/consts/issue-44415.stderr similarity index 100% rename from src/test/ui/consts/issue-44415.stderr rename to tests/ui/consts/issue-44415.stderr diff --git a/src/test/ui/consts/issue-46553.rs b/tests/ui/consts/issue-46553.rs similarity index 100% rename from src/test/ui/consts/issue-46553.rs rename to tests/ui/consts/issue-46553.rs diff --git a/src/test/ui/consts/issue-47789.rs b/tests/ui/consts/issue-47789.rs similarity index 100% rename from src/test/ui/consts/issue-47789.rs rename to tests/ui/consts/issue-47789.rs diff --git a/src/test/ui/consts/issue-50439.rs b/tests/ui/consts/issue-50439.rs similarity index 100% rename from src/test/ui/consts/issue-50439.rs rename to tests/ui/consts/issue-50439.rs diff --git a/src/test/ui/consts/issue-50439.stderr b/tests/ui/consts/issue-50439.stderr similarity index 100% rename from src/test/ui/consts/issue-50439.stderr rename to tests/ui/consts/issue-50439.stderr diff --git a/src/test/ui/consts/issue-52023-array-size-pointer-cast.rs b/tests/ui/consts/issue-52023-array-size-pointer-cast.rs similarity index 100% rename from src/test/ui/consts/issue-52023-array-size-pointer-cast.rs rename to tests/ui/consts/issue-52023-array-size-pointer-cast.rs diff --git a/src/test/ui/consts/issue-52023-array-size-pointer-cast.stderr b/tests/ui/consts/issue-52023-array-size-pointer-cast.stderr similarity index 100% rename from src/test/ui/consts/issue-52023-array-size-pointer-cast.stderr rename to tests/ui/consts/issue-52023-array-size-pointer-cast.stderr diff --git a/src/test/ui/consts/issue-52060.rs b/tests/ui/consts/issue-52060.rs similarity index 100% rename from src/test/ui/consts/issue-52060.rs rename to tests/ui/consts/issue-52060.rs diff --git a/src/test/ui/consts/issue-52060.stderr b/tests/ui/consts/issue-52060.stderr similarity index 100% rename from src/test/ui/consts/issue-52060.stderr rename to tests/ui/consts/issue-52060.stderr diff --git a/src/test/ui/consts/issue-54224.rs b/tests/ui/consts/issue-54224.rs similarity index 100% rename from src/test/ui/consts/issue-54224.rs rename to tests/ui/consts/issue-54224.rs diff --git a/src/test/ui/consts/issue-54224.stderr b/tests/ui/consts/issue-54224.stderr similarity index 100% rename from src/test/ui/consts/issue-54224.stderr rename to tests/ui/consts/issue-54224.stderr diff --git a/src/test/ui/consts/issue-54348.rs b/tests/ui/consts/issue-54348.rs similarity index 100% rename from src/test/ui/consts/issue-54348.rs rename to tests/ui/consts/issue-54348.rs diff --git a/src/test/ui/consts/issue-54348.stderr b/tests/ui/consts/issue-54348.stderr similarity index 100% rename from src/test/ui/consts/issue-54348.stderr rename to tests/ui/consts/issue-54348.stderr diff --git a/src/test/ui/consts/issue-54387.rs b/tests/ui/consts/issue-54387.rs similarity index 100% rename from src/test/ui/consts/issue-54387.rs rename to tests/ui/consts/issue-54387.rs diff --git a/src/test/ui/consts/issue-54954.rs b/tests/ui/consts/issue-54954.rs similarity index 100% rename from src/test/ui/consts/issue-54954.rs rename to tests/ui/consts/issue-54954.rs diff --git a/src/test/ui/consts/issue-54954.stderr b/tests/ui/consts/issue-54954.stderr similarity index 100% rename from src/test/ui/consts/issue-54954.stderr rename to tests/ui/consts/issue-54954.stderr diff --git a/src/test/ui/consts/issue-56164.rs b/tests/ui/consts/issue-56164.rs similarity index 100% rename from src/test/ui/consts/issue-56164.rs rename to tests/ui/consts/issue-56164.rs diff --git a/src/test/ui/consts/issue-56164.stderr b/tests/ui/consts/issue-56164.stderr similarity index 100% rename from src/test/ui/consts/issue-56164.stderr rename to tests/ui/consts/issue-56164.stderr diff --git a/src/test/ui/consts/issue-58435-ice-with-assoc-const.rs b/tests/ui/consts/issue-58435-ice-with-assoc-const.rs similarity index 100% rename from src/test/ui/consts/issue-58435-ice-with-assoc-const.rs rename to tests/ui/consts/issue-58435-ice-with-assoc-const.rs diff --git a/src/test/ui/consts/issue-62045.rs b/tests/ui/consts/issue-62045.rs similarity index 100% rename from src/test/ui/consts/issue-62045.rs rename to tests/ui/consts/issue-62045.rs diff --git a/src/test/ui/consts/issue-63226.rs b/tests/ui/consts/issue-63226.rs similarity index 100% rename from src/test/ui/consts/issue-63226.rs rename to tests/ui/consts/issue-63226.rs diff --git a/src/test/ui/consts/issue-63952.32bit.stderr b/tests/ui/consts/issue-63952.32bit.stderr similarity index 100% rename from src/test/ui/consts/issue-63952.32bit.stderr rename to tests/ui/consts/issue-63952.32bit.stderr diff --git a/src/test/ui/consts/issue-63952.64bit.stderr b/tests/ui/consts/issue-63952.64bit.stderr similarity index 100% rename from src/test/ui/consts/issue-63952.64bit.stderr rename to tests/ui/consts/issue-63952.64bit.stderr diff --git a/src/test/ui/consts/issue-63952.rs b/tests/ui/consts/issue-63952.rs similarity index 100% rename from src/test/ui/consts/issue-63952.rs rename to tests/ui/consts/issue-63952.rs diff --git a/src/test/ui/consts/issue-64059.rs b/tests/ui/consts/issue-64059.rs similarity index 100% rename from src/test/ui/consts/issue-64059.rs rename to tests/ui/consts/issue-64059.rs diff --git a/src/test/ui/consts/issue-64506.rs b/tests/ui/consts/issue-64506.rs similarity index 100% rename from src/test/ui/consts/issue-64506.rs rename to tests/ui/consts/issue-64506.rs diff --git a/src/test/ui/consts/issue-64662.rs b/tests/ui/consts/issue-64662.rs similarity index 100% rename from src/test/ui/consts/issue-64662.rs rename to tests/ui/consts/issue-64662.rs diff --git a/src/test/ui/consts/issue-64662.stderr b/tests/ui/consts/issue-64662.stderr similarity index 100% rename from src/test/ui/consts/issue-64662.stderr rename to tests/ui/consts/issue-64662.stderr diff --git a/src/test/ui/consts/issue-65348.rs b/tests/ui/consts/issue-65348.rs similarity index 100% rename from src/test/ui/consts/issue-65348.rs rename to tests/ui/consts/issue-65348.rs diff --git a/src/test/ui/consts/issue-66342.rs b/tests/ui/consts/issue-66342.rs similarity index 100% rename from src/test/ui/consts/issue-66342.rs rename to tests/ui/consts/issue-66342.rs diff --git a/src/test/ui/consts/issue-66345.rs b/tests/ui/consts/issue-66345.rs similarity index 100% rename from src/test/ui/consts/issue-66345.rs rename to tests/ui/consts/issue-66345.rs diff --git a/src/test/ui/consts/issue-66397.rs b/tests/ui/consts/issue-66397.rs similarity index 100% rename from src/test/ui/consts/issue-66397.rs rename to tests/ui/consts/issue-66397.rs diff --git a/src/test/ui/consts/issue-66693-panic-in-array-len.rs b/tests/ui/consts/issue-66693-panic-in-array-len.rs similarity index 100% rename from src/test/ui/consts/issue-66693-panic-in-array-len.rs rename to tests/ui/consts/issue-66693-panic-in-array-len.rs diff --git a/src/test/ui/consts/issue-66693-panic-in-array-len.stderr b/tests/ui/consts/issue-66693-panic-in-array-len.stderr similarity index 100% rename from src/test/ui/consts/issue-66693-panic-in-array-len.stderr rename to tests/ui/consts/issue-66693-panic-in-array-len.stderr diff --git a/src/test/ui/consts/issue-66693.rs b/tests/ui/consts/issue-66693.rs similarity index 100% rename from src/test/ui/consts/issue-66693.rs rename to tests/ui/consts/issue-66693.rs diff --git a/src/test/ui/consts/issue-66693.stderr b/tests/ui/consts/issue-66693.stderr similarity index 100% rename from src/test/ui/consts/issue-66693.stderr rename to tests/ui/consts/issue-66693.stderr diff --git a/src/test/ui/consts/issue-66787.rs b/tests/ui/consts/issue-66787.rs similarity index 100% rename from src/test/ui/consts/issue-66787.rs rename to tests/ui/consts/issue-66787.rs diff --git a/src/test/ui/consts/issue-67529.rs b/tests/ui/consts/issue-67529.rs similarity index 100% rename from src/test/ui/consts/issue-67529.rs rename to tests/ui/consts/issue-67529.rs diff --git a/src/test/ui/consts/issue-67640.rs b/tests/ui/consts/issue-67640.rs similarity index 100% rename from src/test/ui/consts/issue-67640.rs rename to tests/ui/consts/issue-67640.rs diff --git a/src/test/ui/consts/issue-67641.rs b/tests/ui/consts/issue-67641.rs similarity index 100% rename from src/test/ui/consts/issue-67641.rs rename to tests/ui/consts/issue-67641.rs diff --git a/src/test/ui/consts/issue-67696-const-prop-ice.rs b/tests/ui/consts/issue-67696-const-prop-ice.rs similarity index 100% rename from src/test/ui/consts/issue-67696-const-prop-ice.rs rename to tests/ui/consts/issue-67696-const-prop-ice.rs diff --git a/src/test/ui/consts/issue-67862.rs b/tests/ui/consts/issue-67862.rs similarity index 100% rename from src/test/ui/consts/issue-67862.rs rename to tests/ui/consts/issue-67862.rs diff --git a/src/test/ui/consts/issue-68264-overflow.rs b/tests/ui/consts/issue-68264-overflow.rs similarity index 100% rename from src/test/ui/consts/issue-68264-overflow.rs rename to tests/ui/consts/issue-68264-overflow.rs diff --git a/src/test/ui/consts/issue-68542-closure-in-array-len.rs b/tests/ui/consts/issue-68542-closure-in-array-len.rs similarity index 100% rename from src/test/ui/consts/issue-68542-closure-in-array-len.rs rename to tests/ui/consts/issue-68542-closure-in-array-len.rs diff --git a/src/test/ui/consts/issue-68542-closure-in-array-len.stderr b/tests/ui/consts/issue-68542-closure-in-array-len.stderr similarity index 100% rename from src/test/ui/consts/issue-68542-closure-in-array-len.stderr rename to tests/ui/consts/issue-68542-closure-in-array-len.stderr diff --git a/src/test/ui/consts/issue-68684.rs b/tests/ui/consts/issue-68684.rs similarity index 100% rename from src/test/ui/consts/issue-68684.rs rename to tests/ui/consts/issue-68684.rs diff --git a/src/test/ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs b/tests/ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs similarity index 100% rename from src/test/ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs rename to tests/ui/consts/issue-69191-ice-on-uninhabited-enum-field.rs diff --git a/src/test/ui/consts/issue-69310-array-size-lit-wrong-ty.rs b/tests/ui/consts/issue-69310-array-size-lit-wrong-ty.rs similarity index 100% rename from src/test/ui/consts/issue-69310-array-size-lit-wrong-ty.rs rename to tests/ui/consts/issue-69310-array-size-lit-wrong-ty.rs diff --git a/src/test/ui/consts/issue-69310-array-size-lit-wrong-ty.stderr b/tests/ui/consts/issue-69310-array-size-lit-wrong-ty.stderr similarity index 100% rename from src/test/ui/consts/issue-69310-array-size-lit-wrong-ty.stderr rename to tests/ui/consts/issue-69310-array-size-lit-wrong-ty.stderr diff --git a/src/test/ui/consts/issue-69312.rs b/tests/ui/consts/issue-69312.rs similarity index 100% rename from src/test/ui/consts/issue-69312.rs rename to tests/ui/consts/issue-69312.rs diff --git a/src/test/ui/consts/issue-69488.rs b/tests/ui/consts/issue-69488.rs similarity index 100% rename from src/test/ui/consts/issue-69488.rs rename to tests/ui/consts/issue-69488.rs diff --git a/src/test/ui/consts/issue-69532.rs b/tests/ui/consts/issue-69532.rs similarity index 100% rename from src/test/ui/consts/issue-69532.rs rename to tests/ui/consts/issue-69532.rs diff --git a/src/test/ui/consts/issue-6991.rs b/tests/ui/consts/issue-6991.rs similarity index 100% rename from src/test/ui/consts/issue-6991.rs rename to tests/ui/consts/issue-6991.rs diff --git a/src/test/ui/consts/issue-70773-mir-typeck-lt-norm.rs b/tests/ui/consts/issue-70773-mir-typeck-lt-norm.rs similarity index 100% rename from src/test/ui/consts/issue-70773-mir-typeck-lt-norm.rs rename to tests/ui/consts/issue-70773-mir-typeck-lt-norm.rs diff --git a/src/test/ui/consts/issue-70942-trait-vs-impl-mismatch.rs b/tests/ui/consts/issue-70942-trait-vs-impl-mismatch.rs similarity index 100% rename from src/test/ui/consts/issue-70942-trait-vs-impl-mismatch.rs rename to tests/ui/consts/issue-70942-trait-vs-impl-mismatch.rs diff --git a/src/test/ui/consts/issue-70942-trait-vs-impl-mismatch.stderr b/tests/ui/consts/issue-70942-trait-vs-impl-mismatch.stderr similarity index 100% rename from src/test/ui/consts/issue-70942-trait-vs-impl-mismatch.stderr rename to tests/ui/consts/issue-70942-trait-vs-impl-mismatch.stderr diff --git a/src/test/ui/consts/issue-73976-monomorphic.rs b/tests/ui/consts/issue-73976-monomorphic.rs similarity index 100% rename from src/test/ui/consts/issue-73976-monomorphic.rs rename to tests/ui/consts/issue-73976-monomorphic.rs diff --git a/src/test/ui/consts/issue-73976-polymorphic.rs b/tests/ui/consts/issue-73976-polymorphic.rs similarity index 100% rename from src/test/ui/consts/issue-73976-polymorphic.rs rename to tests/ui/consts/issue-73976-polymorphic.rs diff --git a/src/test/ui/consts/issue-73976-polymorphic.stderr b/tests/ui/consts/issue-73976-polymorphic.stderr similarity index 100% rename from src/test/ui/consts/issue-73976-polymorphic.stderr rename to tests/ui/consts/issue-73976-polymorphic.stderr diff --git a/src/test/ui/consts/issue-76064.rs b/tests/ui/consts/issue-76064.rs similarity index 100% rename from src/test/ui/consts/issue-76064.rs rename to tests/ui/consts/issue-76064.rs diff --git a/src/test/ui/consts/issue-76064.stderr b/tests/ui/consts/issue-76064.stderr similarity index 100% rename from src/test/ui/consts/issue-76064.stderr rename to tests/ui/consts/issue-76064.stderr diff --git a/src/test/ui/consts/issue-77062-large-zst-array.rs b/tests/ui/consts/issue-77062-large-zst-array.rs similarity index 100% rename from src/test/ui/consts/issue-77062-large-zst-array.rs rename to tests/ui/consts/issue-77062-large-zst-array.rs diff --git a/src/test/ui/consts/issue-78655.rs b/tests/ui/consts/issue-78655.rs similarity index 100% rename from src/test/ui/consts/issue-78655.rs rename to tests/ui/consts/issue-78655.rs diff --git a/src/test/ui/consts/issue-78655.stderr b/tests/ui/consts/issue-78655.stderr similarity index 100% rename from src/test/ui/consts/issue-78655.stderr rename to tests/ui/consts/issue-78655.stderr diff --git a/src/test/ui/consts/issue-79137-monomorphic.rs b/tests/ui/consts/issue-79137-monomorphic.rs similarity index 100% rename from src/test/ui/consts/issue-79137-monomorphic.rs rename to tests/ui/consts/issue-79137-monomorphic.rs diff --git a/src/test/ui/consts/issue-79137-toogeneric.rs b/tests/ui/consts/issue-79137-toogeneric.rs similarity index 100% rename from src/test/ui/consts/issue-79137-toogeneric.rs rename to tests/ui/consts/issue-79137-toogeneric.rs diff --git a/src/test/ui/consts/issue-79137-toogeneric.stderr b/tests/ui/consts/issue-79137-toogeneric.stderr similarity index 100% rename from src/test/ui/consts/issue-79137-toogeneric.stderr rename to tests/ui/consts/issue-79137-toogeneric.stderr diff --git a/src/test/ui/consts/issue-79152-const-array-index.rs b/tests/ui/consts/issue-79152-const-array-index.rs similarity index 100% rename from src/test/ui/consts/issue-79152-const-array-index.rs rename to tests/ui/consts/issue-79152-const-array-index.rs diff --git a/src/test/ui/consts/issue-79690.64bit.stderr b/tests/ui/consts/issue-79690.64bit.stderr similarity index 100% rename from src/test/ui/consts/issue-79690.64bit.stderr rename to tests/ui/consts/issue-79690.64bit.stderr diff --git a/src/test/ui/consts/issue-79690.rs b/tests/ui/consts/issue-79690.rs similarity index 100% rename from src/test/ui/consts/issue-79690.rs rename to tests/ui/consts/issue-79690.rs diff --git a/src/test/ui/consts/issue-83182.rs b/tests/ui/consts/issue-83182.rs similarity index 100% rename from src/test/ui/consts/issue-83182.rs rename to tests/ui/consts/issue-83182.rs diff --git a/src/test/ui/consts/issue-83182.stderr b/tests/ui/consts/issue-83182.stderr similarity index 100% rename from src/test/ui/consts/issue-83182.stderr rename to tests/ui/consts/issue-83182.stderr diff --git a/src/test/ui/consts/issue-87046.rs b/tests/ui/consts/issue-87046.rs similarity index 100% rename from src/test/ui/consts/issue-87046.rs rename to tests/ui/consts/issue-87046.rs diff --git a/src/test/ui/consts/issue-87046.stderr b/tests/ui/consts/issue-87046.stderr similarity index 100% rename from src/test/ui/consts/issue-87046.stderr rename to tests/ui/consts/issue-87046.stderr diff --git a/src/test/ui/consts/issue-88071.rs b/tests/ui/consts/issue-88071.rs similarity index 100% rename from src/test/ui/consts/issue-88071.rs rename to tests/ui/consts/issue-88071.rs diff --git a/src/test/ui/consts/issue-88649.rs b/tests/ui/consts/issue-88649.rs similarity index 100% rename from src/test/ui/consts/issue-88649.rs rename to tests/ui/consts/issue-88649.rs diff --git a/src/test/ui/consts/issue-89088.rs b/tests/ui/consts/issue-89088.rs similarity index 100% rename from src/test/ui/consts/issue-89088.rs rename to tests/ui/consts/issue-89088.rs diff --git a/src/test/ui/consts/issue-90762.rs b/tests/ui/consts/issue-90762.rs similarity index 100% rename from src/test/ui/consts/issue-90762.rs rename to tests/ui/consts/issue-90762.rs diff --git a/src/test/ui/consts/issue-90870.fixed b/tests/ui/consts/issue-90870.fixed similarity index 100% rename from src/test/ui/consts/issue-90870.fixed rename to tests/ui/consts/issue-90870.fixed diff --git a/src/test/ui/consts/issue-90870.rs b/tests/ui/consts/issue-90870.rs similarity index 100% rename from src/test/ui/consts/issue-90870.rs rename to tests/ui/consts/issue-90870.rs diff --git a/src/test/ui/consts/issue-90870.stderr b/tests/ui/consts/issue-90870.stderr similarity index 100% rename from src/test/ui/consts/issue-90870.stderr rename to tests/ui/consts/issue-90870.stderr diff --git a/src/test/ui/consts/issue-90878-2.rs b/tests/ui/consts/issue-90878-2.rs similarity index 100% rename from src/test/ui/consts/issue-90878-2.rs rename to tests/ui/consts/issue-90878-2.rs diff --git a/src/test/ui/consts/issue-90878-2.stderr b/tests/ui/consts/issue-90878-2.stderr similarity index 100% rename from src/test/ui/consts/issue-90878-2.stderr rename to tests/ui/consts/issue-90878-2.stderr diff --git a/src/test/ui/consts/issue-90878-3.rs b/tests/ui/consts/issue-90878-3.rs similarity index 100% rename from src/test/ui/consts/issue-90878-3.rs rename to tests/ui/consts/issue-90878-3.rs diff --git a/src/test/ui/consts/issue-90878-3.stderr b/tests/ui/consts/issue-90878-3.stderr similarity index 100% rename from src/test/ui/consts/issue-90878-3.stderr rename to tests/ui/consts/issue-90878-3.stderr diff --git a/src/test/ui/consts/issue-90878.rs b/tests/ui/consts/issue-90878.rs similarity index 100% rename from src/test/ui/consts/issue-90878.rs rename to tests/ui/consts/issue-90878.rs diff --git a/src/test/ui/consts/issue-90878.stderr b/tests/ui/consts/issue-90878.stderr similarity index 100% rename from src/test/ui/consts/issue-90878.stderr rename to tests/ui/consts/issue-90878.stderr diff --git a/src/test/ui/consts/issue-91434.rs b/tests/ui/consts/issue-91434.rs similarity index 100% rename from src/test/ui/consts/issue-91434.rs rename to tests/ui/consts/issue-91434.rs diff --git a/src/test/ui/consts/issue-91434.stderr b/tests/ui/consts/issue-91434.stderr similarity index 100% rename from src/test/ui/consts/issue-91434.stderr rename to tests/ui/consts/issue-91434.stderr diff --git a/src/test/ui/consts/issue-91560.fixed b/tests/ui/consts/issue-91560.fixed similarity index 100% rename from src/test/ui/consts/issue-91560.fixed rename to tests/ui/consts/issue-91560.fixed diff --git a/src/test/ui/consts/issue-91560.rs b/tests/ui/consts/issue-91560.rs similarity index 100% rename from src/test/ui/consts/issue-91560.rs rename to tests/ui/consts/issue-91560.rs diff --git a/src/test/ui/consts/issue-91560.stderr b/tests/ui/consts/issue-91560.stderr similarity index 100% rename from src/test/ui/consts/issue-91560.stderr rename to tests/ui/consts/issue-91560.stderr diff --git a/src/test/ui/consts/issue-94371.rs b/tests/ui/consts/issue-94371.rs similarity index 100% rename from src/test/ui/consts/issue-94371.rs rename to tests/ui/consts/issue-94371.rs diff --git a/src/test/ui/consts/issue-94675.rs b/tests/ui/consts/issue-94675.rs similarity index 100% rename from src/test/ui/consts/issue-94675.rs rename to tests/ui/consts/issue-94675.rs diff --git a/src/test/ui/consts/issue-94675.stderr b/tests/ui/consts/issue-94675.stderr similarity index 100% rename from src/test/ui/consts/issue-94675.stderr rename to tests/ui/consts/issue-94675.stderr diff --git a/src/test/ui/consts/issue-96169.rs b/tests/ui/consts/issue-96169.rs similarity index 100% rename from src/test/ui/consts/issue-96169.rs rename to tests/ui/consts/issue-96169.rs diff --git a/src/test/ui/consts/issue-broken-mir.rs b/tests/ui/consts/issue-broken-mir.rs similarity index 100% rename from src/test/ui/consts/issue-broken-mir.rs rename to tests/ui/consts/issue-broken-mir.rs diff --git a/src/test/ui/consts/issue-miri-1910.rs b/tests/ui/consts/issue-miri-1910.rs similarity index 100% rename from src/test/ui/consts/issue-miri-1910.rs rename to tests/ui/consts/issue-miri-1910.rs diff --git a/src/test/ui/consts/issue-miri-1910.stderr b/tests/ui/consts/issue-miri-1910.stderr similarity index 100% rename from src/test/ui/consts/issue-miri-1910.stderr rename to tests/ui/consts/issue-miri-1910.stderr diff --git a/src/test/ui/consts/large_const_alloc.rs b/tests/ui/consts/large_const_alloc.rs similarity index 100% rename from src/test/ui/consts/large_const_alloc.rs rename to tests/ui/consts/large_const_alloc.rs diff --git a/src/test/ui/consts/large_const_alloc.stderr b/tests/ui/consts/large_const_alloc.stderr similarity index 100% rename from src/test/ui/consts/large_const_alloc.stderr rename to tests/ui/consts/large_const_alloc.stderr diff --git a/src/test/ui/consts/locals-in-const-fn.rs b/tests/ui/consts/locals-in-const-fn.rs similarity index 100% rename from src/test/ui/consts/locals-in-const-fn.rs rename to tests/ui/consts/locals-in-const-fn.rs diff --git a/src/test/ui/consts/match-const-fn-structs.rs b/tests/ui/consts/match-const-fn-structs.rs similarity index 100% rename from src/test/ui/consts/match-const-fn-structs.rs rename to tests/ui/consts/match-const-fn-structs.rs diff --git a/src/test/ui/consts/match_ice.rs b/tests/ui/consts/match_ice.rs similarity index 100% rename from src/test/ui/consts/match_ice.rs rename to tests/ui/consts/match_ice.rs diff --git a/src/test/ui/consts/match_ice.stderr b/tests/ui/consts/match_ice.stderr similarity index 100% rename from src/test/ui/consts/match_ice.stderr rename to tests/ui/consts/match_ice.stderr diff --git a/src/test/ui/consts/min_const_fn/address_of.rs b/tests/ui/consts/min_const_fn/address_of.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/address_of.rs rename to tests/ui/consts/min_const_fn/address_of.rs diff --git a/src/test/ui/consts/min_const_fn/address_of.stderr b/tests/ui/consts/min_const_fn/address_of.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/address_of.stderr rename to tests/ui/consts/min_const_fn/address_of.stderr diff --git a/src/test/ui/consts/min_const_fn/address_of_const.rs b/tests/ui/consts/min_const_fn/address_of_const.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/address_of_const.rs rename to tests/ui/consts/min_const_fn/address_of_const.rs diff --git a/src/test/ui/consts/min_const_fn/allow_const_fn_ptr_run_pass.rs b/tests/ui/consts/min_const_fn/allow_const_fn_ptr_run_pass.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/allow_const_fn_ptr_run_pass.rs rename to tests/ui/consts/min_const_fn/allow_const_fn_ptr_run_pass.rs diff --git a/src/test/ui/consts/min_const_fn/allow_raw_ptr_dereference_const_fn.rs b/tests/ui/consts/min_const_fn/allow_raw_ptr_dereference_const_fn.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/allow_raw_ptr_dereference_const_fn.rs rename to tests/ui/consts/min_const_fn/allow_raw_ptr_dereference_const_fn.rs diff --git a/src/test/ui/consts/min_const_fn/bad_const_fn_body_ice.rs b/tests/ui/consts/min_const_fn/bad_const_fn_body_ice.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/bad_const_fn_body_ice.rs rename to tests/ui/consts/min_const_fn/bad_const_fn_body_ice.rs diff --git a/src/test/ui/consts/min_const_fn/bad_const_fn_body_ice.stderr b/tests/ui/consts/min_const_fn/bad_const_fn_body_ice.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/bad_const_fn_body_ice.stderr rename to tests/ui/consts/min_const_fn/bad_const_fn_body_ice.stderr diff --git a/src/test/ui/consts/min_const_fn/cast_fn.rs b/tests/ui/consts/min_const_fn/cast_fn.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/cast_fn.rs rename to tests/ui/consts/min_const_fn/cast_fn.rs diff --git a/src/test/ui/consts/min_const_fn/cmp_fn_pointers.rs b/tests/ui/consts/min_const_fn/cmp_fn_pointers.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/cmp_fn_pointers.rs rename to tests/ui/consts/min_const_fn/cmp_fn_pointers.rs diff --git a/src/test/ui/consts/min_const_fn/cmp_fn_pointers.stderr b/tests/ui/consts/min_const_fn/cmp_fn_pointers.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/cmp_fn_pointers.stderr rename to tests/ui/consts/min_const_fn/cmp_fn_pointers.stderr diff --git a/src/test/ui/consts/min_const_fn/min_const_fn.rs b/tests/ui/consts/min_const_fn/min_const_fn.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn.rs rename to tests/ui/consts/min_const_fn/min_const_fn.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_fn.stderr b/tests/ui/consts/min_const_fn/min_const_fn.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn.stderr rename to tests/ui/consts/min_const_fn/min_const_fn.stderr diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_dyn.rs b/tests/ui/consts/min_const_fn/min_const_fn_dyn.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_dyn.rs rename to tests/ui/consts/min_const_fn/min_const_fn_dyn.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_libstd.rs b/tests/ui/consts/min_const_fn/min_const_fn_libstd.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_libstd.rs rename to tests/ui/consts/min_const_fn/min_const_fn_libstd.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs b/tests/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs rename to tests/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.stderr b/tests/ui/consts/min_const_fn/min_const_fn_libstd_stability.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.stderr rename to tests/ui/consts/min_const_fn/min_const_fn_libstd_stability.stderr diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs b/tests/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs rename to tests/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr b/tests/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr rename to tests/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_ok.rs b/tests/ui/consts/min_const_fn/min_const_fn_unsafe_ok.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_fn_unsafe_ok.rs rename to tests/ui/consts/min_const_fn/min_const_fn_unsafe_ok.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs b/tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs rename to tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.stderr b/tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.stderr rename to tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.stderr diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs b/tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs rename to tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.stderr b/tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.stderr rename to tests/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.stderr diff --git a/src/test/ui/consts/min_const_fn/mutable_borrow.rs b/tests/ui/consts/min_const_fn/mutable_borrow.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/mutable_borrow.rs rename to tests/ui/consts/min_const_fn/mutable_borrow.rs diff --git a/src/test/ui/consts/min_const_fn/mutable_borrow.stderr b/tests/ui/consts/min_const_fn/mutable_borrow.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/mutable_borrow.stderr rename to tests/ui/consts/min_const_fn/mutable_borrow.stderr diff --git a/src/test/ui/consts/min_const_fn/promotion.rs b/tests/ui/consts/min_const_fn/promotion.rs similarity index 100% rename from src/test/ui/consts/min_const_fn/promotion.rs rename to tests/ui/consts/min_const_fn/promotion.rs diff --git a/src/test/ui/consts/min_const_fn/promotion.stderr b/tests/ui/consts/min_const_fn/promotion.stderr similarity index 100% rename from src/test/ui/consts/min_const_fn/promotion.stderr rename to tests/ui/consts/min_const_fn/promotion.stderr diff --git a/src/test/ui/consts/mir_check_nonconst.rs b/tests/ui/consts/mir_check_nonconst.rs similarity index 100% rename from src/test/ui/consts/mir_check_nonconst.rs rename to tests/ui/consts/mir_check_nonconst.rs diff --git a/src/test/ui/consts/mir_check_nonconst.stderr b/tests/ui/consts/mir_check_nonconst.stderr similarity index 100% rename from src/test/ui/consts/mir_check_nonconst.stderr rename to tests/ui/consts/mir_check_nonconst.stderr diff --git a/src/test/ui/consts/miri_unleashed/abi-mismatch.rs b/tests/ui/consts/miri_unleashed/abi-mismatch.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/abi-mismatch.rs rename to tests/ui/consts/miri_unleashed/abi-mismatch.rs diff --git a/src/test/ui/consts/miri_unleashed/abi-mismatch.stderr b/tests/ui/consts/miri_unleashed/abi-mismatch.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/abi-mismatch.stderr rename to tests/ui/consts/miri_unleashed/abi-mismatch.stderr diff --git a/src/test/ui/consts/miri_unleashed/assoc_const.rs b/tests/ui/consts/miri_unleashed/assoc_const.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/assoc_const.rs rename to tests/ui/consts/miri_unleashed/assoc_const.rs diff --git a/src/test/ui/consts/miri_unleashed/assoc_const.stderr b/tests/ui/consts/miri_unleashed/assoc_const.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/assoc_const.stderr rename to tests/ui/consts/miri_unleashed/assoc_const.stderr diff --git a/src/test/ui/consts/miri_unleashed/assoc_const_2.rs b/tests/ui/consts/miri_unleashed/assoc_const_2.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/assoc_const_2.rs rename to tests/ui/consts/miri_unleashed/assoc_const_2.rs diff --git a/src/test/ui/consts/miri_unleashed/assoc_const_2.stderr b/tests/ui/consts/miri_unleashed/assoc_const_2.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/assoc_const_2.stderr rename to tests/ui/consts/miri_unleashed/assoc_const_2.stderr diff --git a/src/test/ui/consts/miri_unleashed/auxiliary/static_cross_crate.rs b/tests/ui/consts/miri_unleashed/auxiliary/static_cross_crate.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/auxiliary/static_cross_crate.rs rename to tests/ui/consts/miri_unleashed/auxiliary/static_cross_crate.rs diff --git a/src/test/ui/consts/miri_unleashed/box.rs b/tests/ui/consts/miri_unleashed/box.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/box.rs rename to tests/ui/consts/miri_unleashed/box.rs diff --git a/src/test/ui/consts/miri_unleashed/box.stderr b/tests/ui/consts/miri_unleashed/box.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/box.stderr rename to tests/ui/consts/miri_unleashed/box.stderr diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static.32bit.stderr b/tests/ui/consts/miri_unleashed/const_refers_to_static.32bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static.32bit.stderr rename to tests/ui/consts/miri_unleashed/const_refers_to_static.32bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static.64bit.stderr b/tests/ui/consts/miri_unleashed/const_refers_to_static.64bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static.64bit.stderr rename to tests/ui/consts/miri_unleashed/const_refers_to_static.64bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static.rs b/tests/ui/consts/miri_unleashed/const_refers_to_static.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static.rs rename to tests/ui/consts/miri_unleashed/const_refers_to_static.rs diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.32bit.stderr b/tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.32bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.32bit.stderr rename to tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.32bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.64bit.stderr b/tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.64bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.64bit.stderr rename to tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.64bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs b/tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs rename to tests/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs diff --git a/src/test/ui/consts/miri_unleashed/drop.rs b/tests/ui/consts/miri_unleashed/drop.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/drop.rs rename to tests/ui/consts/miri_unleashed/drop.rs diff --git a/src/test/ui/consts/miri_unleashed/drop.stderr b/tests/ui/consts/miri_unleashed/drop.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/drop.stderr rename to tests/ui/consts/miri_unleashed/drop.stderr diff --git a/src/test/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.rs b/tests/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.rs rename to tests/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.rs diff --git a/src/test/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.stderr b/tests/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.stderr rename to tests/ui/consts/miri_unleashed/feature-gate-unleash_the_miri_inside_of_you.stderr diff --git a/src/test/ui/consts/miri_unleashed/inline_asm.rs b/tests/ui/consts/miri_unleashed/inline_asm.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/inline_asm.rs rename to tests/ui/consts/miri_unleashed/inline_asm.rs diff --git a/src/test/ui/consts/miri_unleashed/inline_asm.stderr b/tests/ui/consts/miri_unleashed/inline_asm.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/inline_asm.stderr rename to tests/ui/consts/miri_unleashed/inline_asm.stderr diff --git a/src/test/ui/consts/miri_unleashed/mutable_references.rs b/tests/ui/consts/miri_unleashed/mutable_references.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutable_references.rs rename to tests/ui/consts/miri_unleashed/mutable_references.rs diff --git a/src/test/ui/consts/miri_unleashed/mutable_references.stderr b/tests/ui/consts/miri_unleashed/mutable_references.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutable_references.stderr rename to tests/ui/consts/miri_unleashed/mutable_references.stderr diff --git a/src/test/ui/consts/miri_unleashed/mutable_references_err.32bit.stderr b/tests/ui/consts/miri_unleashed/mutable_references_err.32bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutable_references_err.32bit.stderr rename to tests/ui/consts/miri_unleashed/mutable_references_err.32bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/mutable_references_err.64bit.stderr b/tests/ui/consts/miri_unleashed/mutable_references_err.64bit.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutable_references_err.64bit.stderr rename to tests/ui/consts/miri_unleashed/mutable_references_err.64bit.stderr diff --git a/src/test/ui/consts/miri_unleashed/mutable_references_err.rs b/tests/ui/consts/miri_unleashed/mutable_references_err.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutable_references_err.rs rename to tests/ui/consts/miri_unleashed/mutable_references_err.rs diff --git a/src/test/ui/consts/miri_unleashed/mutating_global.rs b/tests/ui/consts/miri_unleashed/mutating_global.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutating_global.rs rename to tests/ui/consts/miri_unleashed/mutating_global.rs diff --git a/src/test/ui/consts/miri_unleashed/mutating_global.stderr b/tests/ui/consts/miri_unleashed/mutating_global.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/mutating_global.stderr rename to tests/ui/consts/miri_unleashed/mutating_global.stderr diff --git a/src/test/ui/consts/miri_unleashed/non_const_fn.rs b/tests/ui/consts/miri_unleashed/non_const_fn.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/non_const_fn.rs rename to tests/ui/consts/miri_unleashed/non_const_fn.rs diff --git a/src/test/ui/consts/miri_unleashed/non_const_fn.stderr b/tests/ui/consts/miri_unleashed/non_const_fn.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/non_const_fn.stderr rename to tests/ui/consts/miri_unleashed/non_const_fn.stderr diff --git a/src/test/ui/consts/miri_unleashed/ptr_arith.rs b/tests/ui/consts/miri_unleashed/ptr_arith.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/ptr_arith.rs rename to tests/ui/consts/miri_unleashed/ptr_arith.rs diff --git a/src/test/ui/consts/miri_unleashed/ptr_arith.stderr b/tests/ui/consts/miri_unleashed/ptr_arith.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/ptr_arith.stderr rename to tests/ui/consts/miri_unleashed/ptr_arith.stderr diff --git a/src/test/ui/consts/miri_unleashed/raw_mutable_const.rs b/tests/ui/consts/miri_unleashed/raw_mutable_const.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/raw_mutable_const.rs rename to tests/ui/consts/miri_unleashed/raw_mutable_const.rs diff --git a/src/test/ui/consts/miri_unleashed/raw_mutable_const.stderr b/tests/ui/consts/miri_unleashed/raw_mutable_const.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/raw_mutable_const.stderr rename to tests/ui/consts/miri_unleashed/raw_mutable_const.stderr diff --git a/src/test/ui/consts/miri_unleashed/slice_eq.rs b/tests/ui/consts/miri_unleashed/slice_eq.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/slice_eq.rs rename to tests/ui/consts/miri_unleashed/slice_eq.rs diff --git a/src/test/ui/consts/miri_unleashed/tls.rs b/tests/ui/consts/miri_unleashed/tls.rs similarity index 100% rename from src/test/ui/consts/miri_unleashed/tls.rs rename to tests/ui/consts/miri_unleashed/tls.rs diff --git a/src/test/ui/consts/miri_unleashed/tls.stderr b/tests/ui/consts/miri_unleashed/tls.stderr similarity index 100% rename from src/test/ui/consts/miri_unleashed/tls.stderr rename to tests/ui/consts/miri_unleashed/tls.stderr diff --git a/src/test/ui/consts/missing_span_in_backtrace.rs b/tests/ui/consts/missing_span_in_backtrace.rs similarity index 100% rename from src/test/ui/consts/missing_span_in_backtrace.rs rename to tests/ui/consts/missing_span_in_backtrace.rs diff --git a/src/test/ui/consts/missing_span_in_backtrace.stderr b/tests/ui/consts/missing_span_in_backtrace.stderr similarity index 100% rename from src/test/ui/consts/missing_span_in_backtrace.stderr rename to tests/ui/consts/missing_span_in_backtrace.stderr diff --git a/src/test/ui/consts/mozjs-error.rs b/tests/ui/consts/mozjs-error.rs similarity index 100% rename from src/test/ui/consts/mozjs-error.rs rename to tests/ui/consts/mozjs-error.rs diff --git a/src/test/ui/consts/nested_erroneous_ctfe.rs b/tests/ui/consts/nested_erroneous_ctfe.rs similarity index 100% rename from src/test/ui/consts/nested_erroneous_ctfe.rs rename to tests/ui/consts/nested_erroneous_ctfe.rs diff --git a/src/test/ui/consts/nested_erroneous_ctfe.stderr b/tests/ui/consts/nested_erroneous_ctfe.stderr similarity index 100% rename from src/test/ui/consts/nested_erroneous_ctfe.stderr rename to tests/ui/consts/nested_erroneous_ctfe.stderr diff --git a/src/test/ui/consts/non-const-value-in-const.rs b/tests/ui/consts/non-const-value-in-const.rs similarity index 100% rename from src/test/ui/consts/non-const-value-in-const.rs rename to tests/ui/consts/non-const-value-in-const.rs diff --git a/src/test/ui/consts/non-const-value-in-const.stderr b/tests/ui/consts/non-const-value-in-const.stderr similarity index 100% rename from src/test/ui/consts/non-const-value-in-const.stderr rename to tests/ui/consts/non-const-value-in-const.stderr diff --git a/src/test/ui/consts/non-scalar-cast.rs b/tests/ui/consts/non-scalar-cast.rs similarity index 100% rename from src/test/ui/consts/non-scalar-cast.rs rename to tests/ui/consts/non-scalar-cast.rs diff --git a/src/test/ui/consts/offset.rs b/tests/ui/consts/offset.rs similarity index 100% rename from src/test/ui/consts/offset.rs rename to tests/ui/consts/offset.rs diff --git a/src/test/ui/consts/offset_from.rs b/tests/ui/consts/offset_from.rs similarity index 100% rename from src/test/ui/consts/offset_from.rs rename to tests/ui/consts/offset_from.rs diff --git a/src/test/ui/consts/offset_from_ub.rs b/tests/ui/consts/offset_from_ub.rs similarity index 100% rename from src/test/ui/consts/offset_from_ub.rs rename to tests/ui/consts/offset_from_ub.rs diff --git a/src/test/ui/consts/offset_from_ub.stderr b/tests/ui/consts/offset_from_ub.stderr similarity index 100% rename from src/test/ui/consts/offset_from_ub.stderr rename to tests/ui/consts/offset_from_ub.stderr diff --git a/src/test/ui/consts/offset_ub.rs b/tests/ui/consts/offset_ub.rs similarity index 100% rename from src/test/ui/consts/offset_ub.rs rename to tests/ui/consts/offset_ub.rs diff --git a/src/test/ui/consts/offset_ub.stderr b/tests/ui/consts/offset_ub.stderr similarity index 100% rename from src/test/ui/consts/offset_ub.stderr rename to tests/ui/consts/offset_ub.stderr diff --git a/src/test/ui/consts/packed_pattern.rs b/tests/ui/consts/packed_pattern.rs similarity index 100% rename from src/test/ui/consts/packed_pattern.rs rename to tests/ui/consts/packed_pattern.rs diff --git a/src/test/ui/consts/packed_pattern.stderr b/tests/ui/consts/packed_pattern.stderr similarity index 100% rename from src/test/ui/consts/packed_pattern.stderr rename to tests/ui/consts/packed_pattern.stderr diff --git a/src/test/ui/consts/packed_pattern2.rs b/tests/ui/consts/packed_pattern2.rs similarity index 100% rename from src/test/ui/consts/packed_pattern2.rs rename to tests/ui/consts/packed_pattern2.rs diff --git a/src/test/ui/consts/packed_pattern2.stderr b/tests/ui/consts/packed_pattern2.stderr similarity index 100% rename from src/test/ui/consts/packed_pattern2.stderr rename to tests/ui/consts/packed_pattern2.stderr diff --git a/src/test/ui/consts/partial_qualif.rs b/tests/ui/consts/partial_qualif.rs similarity index 100% rename from src/test/ui/consts/partial_qualif.rs rename to tests/ui/consts/partial_qualif.rs diff --git a/src/test/ui/consts/partial_qualif.stderr b/tests/ui/consts/partial_qualif.stderr similarity index 100% rename from src/test/ui/consts/partial_qualif.stderr rename to tests/ui/consts/partial_qualif.stderr diff --git a/src/test/ui/consts/precise-drop-with-coverage.rs b/tests/ui/consts/precise-drop-with-coverage.rs similarity index 100% rename from src/test/ui/consts/precise-drop-with-coverage.rs rename to tests/ui/consts/precise-drop-with-coverage.rs diff --git a/src/test/ui/consts/precise-drop-with-promoted.rs b/tests/ui/consts/precise-drop-with-promoted.rs similarity index 100% rename from src/test/ui/consts/precise-drop-with-promoted.rs rename to tests/ui/consts/precise-drop-with-promoted.rs diff --git a/src/test/ui/consts/promote-not.rs b/tests/ui/consts/promote-not.rs similarity index 100% rename from src/test/ui/consts/promote-not.rs rename to tests/ui/consts/promote-not.rs diff --git a/src/test/ui/consts/promote-not.stderr b/tests/ui/consts/promote-not.stderr similarity index 100% rename from src/test/ui/consts/promote-not.stderr rename to tests/ui/consts/promote-not.stderr diff --git a/src/test/ui/consts/promote_borrowed_field.rs b/tests/ui/consts/promote_borrowed_field.rs similarity index 100% rename from src/test/ui/consts/promote_borrowed_field.rs rename to tests/ui/consts/promote_borrowed_field.rs diff --git a/src/test/ui/consts/promote_const_let.rs b/tests/ui/consts/promote_const_let.rs similarity index 100% rename from src/test/ui/consts/promote_const_let.rs rename to tests/ui/consts/promote_const_let.rs diff --git a/src/test/ui/consts/promote_const_let.stderr b/tests/ui/consts/promote_const_let.stderr similarity index 100% rename from src/test/ui/consts/promote_const_let.stderr rename to tests/ui/consts/promote_const_let.stderr diff --git a/src/test/ui/consts/promote_evaluation_unused_result.rs b/tests/ui/consts/promote_evaluation_unused_result.rs similarity index 100% rename from src/test/ui/consts/promote_evaluation_unused_result.rs rename to tests/ui/consts/promote_evaluation_unused_result.rs diff --git a/src/test/ui/consts/promote_fn_calls.rs b/tests/ui/consts/promote_fn_calls.rs similarity index 100% rename from src/test/ui/consts/promote_fn_calls.rs rename to tests/ui/consts/promote_fn_calls.rs diff --git a/src/test/ui/consts/promote_fn_calls_std.rs b/tests/ui/consts/promote_fn_calls_std.rs similarity index 100% rename from src/test/ui/consts/promote_fn_calls_std.rs rename to tests/ui/consts/promote_fn_calls_std.rs diff --git a/src/test/ui/consts/promoted-const-drop.rs b/tests/ui/consts/promoted-const-drop.rs similarity index 100% rename from src/test/ui/consts/promoted-const-drop.rs rename to tests/ui/consts/promoted-const-drop.rs diff --git a/src/test/ui/consts/promoted-const-drop.stderr b/tests/ui/consts/promoted-const-drop.stderr similarity index 100% rename from src/test/ui/consts/promoted-const-drop.stderr rename to tests/ui/consts/promoted-const-drop.stderr diff --git a/src/test/ui/consts/promoted-storage.rs b/tests/ui/consts/promoted-storage.rs similarity index 100% rename from src/test/ui/consts/promoted-storage.rs rename to tests/ui/consts/promoted-storage.rs diff --git a/src/test/ui/consts/promoted-validation-55454.rs b/tests/ui/consts/promoted-validation-55454.rs similarity index 100% rename from src/test/ui/consts/promoted-validation-55454.rs rename to tests/ui/consts/promoted-validation-55454.rs diff --git a/src/test/ui/consts/promoted_const_call.rs b/tests/ui/consts/promoted_const_call.rs similarity index 100% rename from src/test/ui/consts/promoted_const_call.rs rename to tests/ui/consts/promoted_const_call.rs diff --git a/src/test/ui/consts/promoted_const_call.stderr b/tests/ui/consts/promoted_const_call.stderr similarity index 100% rename from src/test/ui/consts/promoted_const_call.stderr rename to tests/ui/consts/promoted_const_call.stderr diff --git a/src/test/ui/consts/promoted_const_call2.rs b/tests/ui/consts/promoted_const_call2.rs similarity index 100% rename from src/test/ui/consts/promoted_const_call2.rs rename to tests/ui/consts/promoted_const_call2.rs diff --git a/src/test/ui/consts/promoted_const_call2.stderr b/tests/ui/consts/promoted_const_call2.stderr similarity index 100% rename from src/test/ui/consts/promoted_const_call2.stderr rename to tests/ui/consts/promoted_const_call2.stderr diff --git a/src/test/ui/consts/promoted_const_call3.rs b/tests/ui/consts/promoted_const_call3.rs similarity index 100% rename from src/test/ui/consts/promoted_const_call3.rs rename to tests/ui/consts/promoted_const_call3.rs diff --git a/src/test/ui/consts/promoted_const_call3.stderr b/tests/ui/consts/promoted_const_call3.stderr similarity index 100% rename from src/test/ui/consts/promoted_const_call3.stderr rename to tests/ui/consts/promoted_const_call3.stderr diff --git a/src/test/ui/consts/promoted_const_call4.rs b/tests/ui/consts/promoted_const_call4.rs similarity index 100% rename from src/test/ui/consts/promoted_const_call4.rs rename to tests/ui/consts/promoted_const_call4.rs diff --git a/src/test/ui/consts/promoted_const_call5.rs b/tests/ui/consts/promoted_const_call5.rs similarity index 100% rename from src/test/ui/consts/promoted_const_call5.rs rename to tests/ui/consts/promoted_const_call5.rs diff --git a/src/test/ui/consts/promoted_const_call5.stderr b/tests/ui/consts/promoted_const_call5.stderr similarity index 100% rename from src/test/ui/consts/promoted_const_call5.stderr rename to tests/ui/consts/promoted_const_call5.stderr diff --git a/src/test/ui/consts/promoted_regression.rs b/tests/ui/consts/promoted_regression.rs similarity index 100% rename from src/test/ui/consts/promoted_regression.rs rename to tests/ui/consts/promoted_regression.rs diff --git a/src/test/ui/consts/promotion-mutable-ref.rs b/tests/ui/consts/promotion-mutable-ref.rs similarity index 100% rename from src/test/ui/consts/promotion-mutable-ref.rs rename to tests/ui/consts/promotion-mutable-ref.rs diff --git a/src/test/ui/consts/promotion.rs b/tests/ui/consts/promotion.rs similarity index 100% rename from src/test/ui/consts/promotion.rs rename to tests/ui/consts/promotion.rs diff --git a/src/test/ui/consts/ptr_comparisons.rs b/tests/ui/consts/ptr_comparisons.rs similarity index 100% rename from src/test/ui/consts/ptr_comparisons.rs rename to tests/ui/consts/ptr_comparisons.rs diff --git a/src/test/ui/consts/ptr_comparisons.stderr b/tests/ui/consts/ptr_comparisons.stderr similarity index 100% rename from src/test/ui/consts/ptr_comparisons.stderr rename to tests/ui/consts/ptr_comparisons.stderr diff --git a/src/test/ui/consts/ptr_is_null.rs b/tests/ui/consts/ptr_is_null.rs similarity index 100% rename from src/test/ui/consts/ptr_is_null.rs rename to tests/ui/consts/ptr_is_null.rs diff --git a/src/test/ui/consts/qualif-indirect-mutation-fail.rs b/tests/ui/consts/qualif-indirect-mutation-fail.rs similarity index 100% rename from src/test/ui/consts/qualif-indirect-mutation-fail.rs rename to tests/ui/consts/qualif-indirect-mutation-fail.rs diff --git a/src/test/ui/consts/qualif-indirect-mutation-fail.stderr b/tests/ui/consts/qualif-indirect-mutation-fail.stderr similarity index 100% rename from src/test/ui/consts/qualif-indirect-mutation-fail.stderr rename to tests/ui/consts/qualif-indirect-mutation-fail.stderr diff --git a/src/test/ui/consts/qualif-indirect-mutation-pass.rs b/tests/ui/consts/qualif-indirect-mutation-pass.rs similarity index 100% rename from src/test/ui/consts/qualif-indirect-mutation-pass.rs rename to tests/ui/consts/qualif-indirect-mutation-pass.rs diff --git a/src/test/ui/consts/qualif-union.rs b/tests/ui/consts/qualif-union.rs similarity index 100% rename from src/test/ui/consts/qualif-union.rs rename to tests/ui/consts/qualif-union.rs diff --git a/src/test/ui/consts/qualif-union.stderr b/tests/ui/consts/qualif-union.stderr similarity index 100% rename from src/test/ui/consts/qualif-union.stderr rename to tests/ui/consts/qualif-union.stderr diff --git a/src/test/ui/consts/qualif_overwrite.rs b/tests/ui/consts/qualif_overwrite.rs similarity index 100% rename from src/test/ui/consts/qualif_overwrite.rs rename to tests/ui/consts/qualif_overwrite.rs diff --git a/src/test/ui/consts/qualif_overwrite.stderr b/tests/ui/consts/qualif_overwrite.stderr similarity index 100% rename from src/test/ui/consts/qualif_overwrite.stderr rename to tests/ui/consts/qualif_overwrite.stderr diff --git a/src/test/ui/consts/qualif_overwrite_2.rs b/tests/ui/consts/qualif_overwrite_2.rs similarity index 100% rename from src/test/ui/consts/qualif_overwrite_2.rs rename to tests/ui/consts/qualif_overwrite_2.rs diff --git a/src/test/ui/consts/qualif_overwrite_2.stderr b/tests/ui/consts/qualif_overwrite_2.stderr similarity index 100% rename from src/test/ui/consts/qualif_overwrite_2.stderr rename to tests/ui/consts/qualif_overwrite_2.stderr diff --git a/src/test/ui/consts/raw-ptr-const.rs b/tests/ui/consts/raw-ptr-const.rs similarity index 100% rename from src/test/ui/consts/raw-ptr-const.rs rename to tests/ui/consts/raw-ptr-const.rs diff --git a/src/test/ui/consts/raw-ptr-const.stderr b/tests/ui/consts/raw-ptr-const.stderr similarity index 100% rename from src/test/ui/consts/raw-ptr-const.stderr rename to tests/ui/consts/raw-ptr-const.stderr diff --git a/src/test/ui/consts/raw_pointer_promoted.rs b/tests/ui/consts/raw_pointer_promoted.rs similarity index 100% rename from src/test/ui/consts/raw_pointer_promoted.rs rename to tests/ui/consts/raw_pointer_promoted.rs diff --git a/src/test/ui/consts/recursive-zst-static.default.stderr b/tests/ui/consts/recursive-zst-static.default.stderr similarity index 100% rename from src/test/ui/consts/recursive-zst-static.default.stderr rename to tests/ui/consts/recursive-zst-static.default.stderr diff --git a/src/test/ui/consts/recursive-zst-static.rs b/tests/ui/consts/recursive-zst-static.rs similarity index 100% rename from src/test/ui/consts/recursive-zst-static.rs rename to tests/ui/consts/recursive-zst-static.rs diff --git a/src/test/ui/consts/recursive-zst-static.unleash.stderr b/tests/ui/consts/recursive-zst-static.unleash.stderr similarity index 100% rename from src/test/ui/consts/recursive-zst-static.unleash.stderr rename to tests/ui/consts/recursive-zst-static.unleash.stderr diff --git a/src/test/ui/consts/recursive.rs b/tests/ui/consts/recursive.rs similarity index 100% rename from src/test/ui/consts/recursive.rs rename to tests/ui/consts/recursive.rs diff --git a/src/test/ui/consts/recursive.stderr b/tests/ui/consts/recursive.stderr similarity index 100% rename from src/test/ui/consts/recursive.stderr rename to tests/ui/consts/recursive.stderr diff --git a/src/test/ui/consts/references.rs b/tests/ui/consts/references.rs similarity index 100% rename from src/test/ui/consts/references.rs rename to tests/ui/consts/references.rs diff --git a/src/test/ui/consts/refs_check_const_eq-issue-88384.rs b/tests/ui/consts/refs_check_const_eq-issue-88384.rs similarity index 100% rename from src/test/ui/consts/refs_check_const_eq-issue-88384.rs rename to tests/ui/consts/refs_check_const_eq-issue-88384.rs diff --git a/src/test/ui/consts/refs_check_const_eq-issue-88384.stderr b/tests/ui/consts/refs_check_const_eq-issue-88384.stderr similarity index 100% rename from src/test/ui/consts/refs_check_const_eq-issue-88384.stderr rename to tests/ui/consts/refs_check_const_eq-issue-88384.stderr diff --git a/src/test/ui/consts/refs_check_const_value_eq-issue-88876.rs b/tests/ui/consts/refs_check_const_value_eq-issue-88876.rs similarity index 100% rename from src/test/ui/consts/refs_check_const_value_eq-issue-88876.rs rename to tests/ui/consts/refs_check_const_value_eq-issue-88876.rs diff --git a/src/test/ui/consts/repeat_match.rs b/tests/ui/consts/repeat_match.rs similarity index 100% rename from src/test/ui/consts/repeat_match.rs rename to tests/ui/consts/repeat_match.rs diff --git a/src/test/ui/consts/return-in-const-fn.rs b/tests/ui/consts/return-in-const-fn.rs similarity index 100% rename from src/test/ui/consts/return-in-const-fn.rs rename to tests/ui/consts/return-in-const-fn.rs diff --git a/src/test/ui/consts/rustc-const-stability-require-const.rs b/tests/ui/consts/rustc-const-stability-require-const.rs similarity index 100% rename from src/test/ui/consts/rustc-const-stability-require-const.rs rename to tests/ui/consts/rustc-const-stability-require-const.rs diff --git a/src/test/ui/consts/rustc-const-stability-require-const.stderr b/tests/ui/consts/rustc-const-stability-require-const.stderr similarity index 100% rename from src/test/ui/consts/rustc-const-stability-require-const.stderr rename to tests/ui/consts/rustc-const-stability-require-const.stderr diff --git a/src/test/ui/consts/rustc-impl-const-stability.rs b/tests/ui/consts/rustc-impl-const-stability.rs similarity index 100% rename from src/test/ui/consts/rustc-impl-const-stability.rs rename to tests/ui/consts/rustc-impl-const-stability.rs diff --git a/src/test/ui/consts/rvalue-static-promotion.rs b/tests/ui/consts/rvalue-static-promotion.rs similarity index 100% rename from src/test/ui/consts/rvalue-static-promotion.rs rename to tests/ui/consts/rvalue-static-promotion.rs diff --git a/src/test/ui/consts/self_normalization.rs b/tests/ui/consts/self_normalization.rs similarity index 100% rename from src/test/ui/consts/self_normalization.rs rename to tests/ui/consts/self_normalization.rs diff --git a/src/test/ui/consts/self_normalization2.rs b/tests/ui/consts/self_normalization2.rs similarity index 100% rename from src/test/ui/consts/self_normalization2.rs rename to tests/ui/consts/self_normalization2.rs diff --git a/src/test/ui/consts/signed_enum_discr.rs b/tests/ui/consts/signed_enum_discr.rs similarity index 100% rename from src/test/ui/consts/signed_enum_discr.rs rename to tests/ui/consts/signed_enum_discr.rs diff --git a/src/test/ui/consts/stable-precise-live-drops-in-libcore.rs b/tests/ui/consts/stable-precise-live-drops-in-libcore.rs similarity index 100% rename from src/test/ui/consts/stable-precise-live-drops-in-libcore.rs rename to tests/ui/consts/stable-precise-live-drops-in-libcore.rs diff --git a/src/test/ui/consts/stable-precise-live-drops-in-libcore.stderr b/tests/ui/consts/stable-precise-live-drops-in-libcore.stderr similarity index 100% rename from src/test/ui/consts/stable-precise-live-drops-in-libcore.stderr rename to tests/ui/consts/stable-precise-live-drops-in-libcore.stderr diff --git a/src/test/ui/consts/static-cycle-error.rs b/tests/ui/consts/static-cycle-error.rs similarity index 100% rename from src/test/ui/consts/static-cycle-error.rs rename to tests/ui/consts/static-cycle-error.rs diff --git a/src/test/ui/consts/static-raw-pointer-interning.rs b/tests/ui/consts/static-raw-pointer-interning.rs similarity index 100% rename from src/test/ui/consts/static-raw-pointer-interning.rs rename to tests/ui/consts/static-raw-pointer-interning.rs diff --git a/src/test/ui/consts/static-raw-pointer-interning2.rs b/tests/ui/consts/static-raw-pointer-interning2.rs similarity index 100% rename from src/test/ui/consts/static-raw-pointer-interning2.rs rename to tests/ui/consts/static-raw-pointer-interning2.rs diff --git a/src/test/ui/consts/static_mut_containing_mut_ref.rs b/tests/ui/consts/static_mut_containing_mut_ref.rs similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref.rs rename to tests/ui/consts/static_mut_containing_mut_ref.rs diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.mut_refs.stderr b/tests/ui/consts/static_mut_containing_mut_ref2.mut_refs.stderr similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref2.mut_refs.stderr rename to tests/ui/consts/static_mut_containing_mut_ref2.mut_refs.stderr diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.rs b/tests/ui/consts/static_mut_containing_mut_ref2.rs similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref2.rs rename to tests/ui/consts/static_mut_containing_mut_ref2.rs diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.stock.stderr b/tests/ui/consts/static_mut_containing_mut_ref2.stock.stderr similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref2.stock.stderr rename to tests/ui/consts/static_mut_containing_mut_ref2.stock.stderr diff --git a/src/test/ui/consts/static_mut_containing_mut_ref3.rs b/tests/ui/consts/static_mut_containing_mut_ref3.rs similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref3.rs rename to tests/ui/consts/static_mut_containing_mut_ref3.rs diff --git a/src/test/ui/consts/static_mut_containing_mut_ref3.stderr b/tests/ui/consts/static_mut_containing_mut_ref3.stderr similarity index 100% rename from src/test/ui/consts/static_mut_containing_mut_ref3.stderr rename to tests/ui/consts/static_mut_containing_mut_ref3.stderr diff --git a/src/test/ui/consts/std/alloc.32bit.stderr b/tests/ui/consts/std/alloc.32bit.stderr similarity index 100% rename from src/test/ui/consts/std/alloc.32bit.stderr rename to tests/ui/consts/std/alloc.32bit.stderr diff --git a/src/test/ui/consts/std/alloc.64bit.stderr b/tests/ui/consts/std/alloc.64bit.stderr similarity index 100% rename from src/test/ui/consts/std/alloc.64bit.stderr rename to tests/ui/consts/std/alloc.64bit.stderr diff --git a/src/test/ui/consts/std/alloc.rs b/tests/ui/consts/std/alloc.rs similarity index 100% rename from src/test/ui/consts/std/alloc.rs rename to tests/ui/consts/std/alloc.rs diff --git a/src/test/ui/consts/std/cell.rs b/tests/ui/consts/std/cell.rs similarity index 100% rename from src/test/ui/consts/std/cell.rs rename to tests/ui/consts/std/cell.rs diff --git a/src/test/ui/consts/std/cell.stderr b/tests/ui/consts/std/cell.stderr similarity index 100% rename from src/test/ui/consts/std/cell.stderr rename to tests/ui/consts/std/cell.stderr diff --git a/src/test/ui/consts/std/iter.rs b/tests/ui/consts/std/iter.rs similarity index 100% rename from src/test/ui/consts/std/iter.rs rename to tests/ui/consts/std/iter.rs diff --git a/src/test/ui/consts/std/slice.rs b/tests/ui/consts/std/slice.rs similarity index 100% rename from src/test/ui/consts/std/slice.rs rename to tests/ui/consts/std/slice.rs diff --git a/src/test/ui/consts/too_generic_eval_ice.rs b/tests/ui/consts/too_generic_eval_ice.rs similarity index 100% rename from src/test/ui/consts/too_generic_eval_ice.rs rename to tests/ui/consts/too_generic_eval_ice.rs diff --git a/src/test/ui/consts/too_generic_eval_ice.stderr b/tests/ui/consts/too_generic_eval_ice.stderr similarity index 100% rename from src/test/ui/consts/too_generic_eval_ice.stderr rename to tests/ui/consts/too_generic_eval_ice.stderr diff --git a/src/test/ui/consts/trait_specialization.rs b/tests/ui/consts/trait_specialization.rs similarity index 100% rename from src/test/ui/consts/trait_specialization.rs rename to tests/ui/consts/trait_specialization.rs diff --git a/src/test/ui/consts/trait_specialization.stderr b/tests/ui/consts/trait_specialization.stderr similarity index 100% rename from src/test/ui/consts/trait_specialization.stderr rename to tests/ui/consts/trait_specialization.stderr diff --git a/src/test/ui/consts/transmute-const.rs b/tests/ui/consts/transmute-const.rs similarity index 100% rename from src/test/ui/consts/transmute-const.rs rename to tests/ui/consts/transmute-const.rs diff --git a/src/test/ui/consts/transmute-size-mismatch-before-typeck.rs b/tests/ui/consts/transmute-size-mismatch-before-typeck.rs similarity index 100% rename from src/test/ui/consts/transmute-size-mismatch-before-typeck.rs rename to tests/ui/consts/transmute-size-mismatch-before-typeck.rs diff --git a/src/test/ui/consts/transmute-size-mismatch-before-typeck.stderr b/tests/ui/consts/transmute-size-mismatch-before-typeck.stderr similarity index 100% rename from src/test/ui/consts/transmute-size-mismatch-before-typeck.stderr rename to tests/ui/consts/transmute-size-mismatch-before-typeck.stderr diff --git a/src/test/ui/consts/try-operator.rs b/tests/ui/consts/try-operator.rs similarity index 100% rename from src/test/ui/consts/try-operator.rs rename to tests/ui/consts/try-operator.rs diff --git a/src/test/ui/consts/tuple-struct-constructors.rs b/tests/ui/consts/tuple-struct-constructors.rs similarity index 100% rename from src/test/ui/consts/tuple-struct-constructors.rs rename to tests/ui/consts/tuple-struct-constructors.rs diff --git a/src/test/ui/consts/underscore_const_names.rs b/tests/ui/consts/underscore_const_names.rs similarity index 100% rename from src/test/ui/consts/underscore_const_names.rs rename to tests/ui/consts/underscore_const_names.rs diff --git a/src/test/ui/consts/uninhabited-const-issue-61744.rs b/tests/ui/consts/uninhabited-const-issue-61744.rs similarity index 100% rename from src/test/ui/consts/uninhabited-const-issue-61744.rs rename to tests/ui/consts/uninhabited-const-issue-61744.rs diff --git a/src/test/ui/consts/uninhabited-const-issue-61744.stderr b/tests/ui/consts/uninhabited-const-issue-61744.stderr similarity index 100% rename from src/test/ui/consts/uninhabited-const-issue-61744.stderr rename to tests/ui/consts/uninhabited-const-issue-61744.stderr diff --git a/src/test/ui/consts/union_constant.rs b/tests/ui/consts/union_constant.rs similarity index 100% rename from src/test/ui/consts/union_constant.rs rename to tests/ui/consts/union_constant.rs diff --git a/src/test/ui/consts/unnormalized-param-env.rs b/tests/ui/consts/unnormalized-param-env.rs similarity index 100% rename from src/test/ui/consts/unnormalized-param-env.rs rename to tests/ui/consts/unnormalized-param-env.rs diff --git a/src/test/ui/consts/unstable-const-fn-in-libcore.rs b/tests/ui/consts/unstable-const-fn-in-libcore.rs similarity index 100% rename from src/test/ui/consts/unstable-const-fn-in-libcore.rs rename to tests/ui/consts/unstable-const-fn-in-libcore.rs diff --git a/src/test/ui/consts/unstable-const-fn-in-libcore.stderr b/tests/ui/consts/unstable-const-fn-in-libcore.stderr similarity index 100% rename from src/test/ui/consts/unstable-const-fn-in-libcore.stderr rename to tests/ui/consts/unstable-const-fn-in-libcore.stderr diff --git a/src/test/ui/consts/unstable-precise-live-drops-in-libcore.rs b/tests/ui/consts/unstable-precise-live-drops-in-libcore.rs similarity index 100% rename from src/test/ui/consts/unstable-precise-live-drops-in-libcore.rs rename to tests/ui/consts/unstable-precise-live-drops-in-libcore.rs diff --git a/src/test/ui/consts/unwind-abort.rs b/tests/ui/consts/unwind-abort.rs similarity index 100% rename from src/test/ui/consts/unwind-abort.rs rename to tests/ui/consts/unwind-abort.rs diff --git a/src/test/ui/consts/validate_never_arrays.rs b/tests/ui/consts/validate_never_arrays.rs similarity index 100% rename from src/test/ui/consts/validate_never_arrays.rs rename to tests/ui/consts/validate_never_arrays.rs diff --git a/src/test/ui/consts/validate_never_arrays.stderr b/tests/ui/consts/validate_never_arrays.stderr similarity index 100% rename from src/test/ui/consts/validate_never_arrays.stderr rename to tests/ui/consts/validate_never_arrays.stderr diff --git a/src/test/ui/consts/write-to-static-mut-in-static.rs b/tests/ui/consts/write-to-static-mut-in-static.rs similarity index 100% rename from src/test/ui/consts/write-to-static-mut-in-static.rs rename to tests/ui/consts/write-to-static-mut-in-static.rs diff --git a/src/test/ui/consts/write-to-static-mut-in-static.stderr b/tests/ui/consts/write-to-static-mut-in-static.stderr similarity index 100% rename from src/test/ui/consts/write-to-static-mut-in-static.stderr rename to tests/ui/consts/write-to-static-mut-in-static.stderr diff --git a/src/test/ui/consts/write_to_mut_ref_dest.rs b/tests/ui/consts/write_to_mut_ref_dest.rs similarity index 100% rename from src/test/ui/consts/write_to_mut_ref_dest.rs rename to tests/ui/consts/write_to_mut_ref_dest.rs diff --git a/src/test/ui/consts/write_to_mut_ref_dest.stock.stderr b/tests/ui/consts/write_to_mut_ref_dest.stock.stderr similarity index 100% rename from src/test/ui/consts/write_to_mut_ref_dest.stock.stderr rename to tests/ui/consts/write_to_mut_ref_dest.stock.stderr diff --git a/src/test/ui/consts/write_to_static_via_mut_ref.rs b/tests/ui/consts/write_to_static_via_mut_ref.rs similarity index 100% rename from src/test/ui/consts/write_to_static_via_mut_ref.rs rename to tests/ui/consts/write_to_static_via_mut_ref.rs diff --git a/src/test/ui/consts/write_to_static_via_mut_ref.stderr b/tests/ui/consts/write_to_static_via_mut_ref.stderr similarity index 100% rename from src/test/ui/consts/write_to_static_via_mut_ref.stderr rename to tests/ui/consts/write_to_static_via_mut_ref.stderr diff --git a/src/test/ui/consts/zst_no_llvm_alloc.rs b/tests/ui/consts/zst_no_llvm_alloc.rs similarity index 100% rename from src/test/ui/consts/zst_no_llvm_alloc.rs rename to tests/ui/consts/zst_no_llvm_alloc.rs diff --git a/src/test/ui/copy-a-resource.rs b/tests/ui/copy-a-resource.rs similarity index 100% rename from src/test/ui/copy-a-resource.rs rename to tests/ui/copy-a-resource.rs diff --git a/src/test/ui/copy-a-resource.stderr b/tests/ui/copy-a-resource.stderr similarity index 100% rename from src/test/ui/copy-a-resource.stderr rename to tests/ui/copy-a-resource.stderr diff --git a/src/test/ui/crate-leading-sep.rs b/tests/ui/crate-leading-sep.rs similarity index 100% rename from src/test/ui/crate-leading-sep.rs rename to tests/ui/crate-leading-sep.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve1-1.rs b/tests/ui/crate-loading/auxiliary/crateresolve1-1.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve1-1.rs rename to tests/ui/crate-loading/auxiliary/crateresolve1-1.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve1-2.rs b/tests/ui/crate-loading/auxiliary/crateresolve1-2.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve1-2.rs rename to tests/ui/crate-loading/auxiliary/crateresolve1-2.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve1-3.rs b/tests/ui/crate-loading/auxiliary/crateresolve1-3.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve1-3.rs rename to tests/ui/crate-loading/auxiliary/crateresolve1-3.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve2-1.rs b/tests/ui/crate-loading/auxiliary/crateresolve2-1.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve2-1.rs rename to tests/ui/crate-loading/auxiliary/crateresolve2-1.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve2-2.rs b/tests/ui/crate-loading/auxiliary/crateresolve2-2.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve2-2.rs rename to tests/ui/crate-loading/auxiliary/crateresolve2-2.rs diff --git a/src/test/ui/crate-loading/auxiliary/crateresolve2-3.rs b/tests/ui/crate-loading/auxiliary/crateresolve2-3.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/crateresolve2-3.rs rename to tests/ui/crate-loading/auxiliary/crateresolve2-3.rs diff --git a/src/test/ui/crate-loading/auxiliary/libfoo.rlib b/tests/ui/crate-loading/auxiliary/libfoo.rlib similarity index 100% rename from src/test/ui/crate-loading/auxiliary/libfoo.rlib rename to tests/ui/crate-loading/auxiliary/libfoo.rlib diff --git a/src/test/ui/crate-loading/auxiliary/proc-macro.rs b/tests/ui/crate-loading/auxiliary/proc-macro.rs similarity index 100% rename from src/test/ui/crate-loading/auxiliary/proc-macro.rs rename to tests/ui/crate-loading/auxiliary/proc-macro.rs diff --git a/src/test/ui/crate-loading/crateresolve1.rs b/tests/ui/crate-loading/crateresolve1.rs similarity index 100% rename from src/test/ui/crate-loading/crateresolve1.rs rename to tests/ui/crate-loading/crateresolve1.rs diff --git a/src/test/ui/crate-loading/crateresolve1.stderr b/tests/ui/crate-loading/crateresolve1.stderr similarity index 100% rename from src/test/ui/crate-loading/crateresolve1.stderr rename to tests/ui/crate-loading/crateresolve1.stderr diff --git a/src/test/ui/crate-loading/crateresolve2.rs b/tests/ui/crate-loading/crateresolve2.rs similarity index 100% rename from src/test/ui/crate-loading/crateresolve2.rs rename to tests/ui/crate-loading/crateresolve2.rs diff --git a/src/test/ui/crate-loading/crateresolve2.stderr b/tests/ui/crate-loading/crateresolve2.stderr similarity index 100% rename from src/test/ui/crate-loading/crateresolve2.stderr rename to tests/ui/crate-loading/crateresolve2.stderr diff --git a/src/test/ui/crate-loading/cross-compiled-proc-macro.rs b/tests/ui/crate-loading/cross-compiled-proc-macro.rs similarity index 100% rename from src/test/ui/crate-loading/cross-compiled-proc-macro.rs rename to tests/ui/crate-loading/cross-compiled-proc-macro.rs diff --git a/src/test/ui/crate-loading/invalid-rlib.rs b/tests/ui/crate-loading/invalid-rlib.rs similarity index 100% rename from src/test/ui/crate-loading/invalid-rlib.rs rename to tests/ui/crate-loading/invalid-rlib.rs diff --git a/src/test/ui/crate-loading/invalid-rlib.stderr b/tests/ui/crate-loading/invalid-rlib.stderr similarity index 100% rename from src/test/ui/crate-loading/invalid-rlib.stderr rename to tests/ui/crate-loading/invalid-rlib.stderr diff --git a/src/test/ui/crate-loading/missing-std.rs b/tests/ui/crate-loading/missing-std.rs similarity index 100% rename from src/test/ui/crate-loading/missing-std.rs rename to tests/ui/crate-loading/missing-std.rs diff --git a/src/test/ui/crate-loading/missing-std.stderr b/tests/ui/crate-loading/missing-std.stderr similarity index 100% rename from src/test/ui/crate-loading/missing-std.stderr rename to tests/ui/crate-loading/missing-std.stderr diff --git a/src/test/ui/crate-method-reexport-grrrrrrr.rs b/tests/ui/crate-method-reexport-grrrrrrr.rs similarity index 100% rename from src/test/ui/crate-method-reexport-grrrrrrr.rs rename to tests/ui/crate-method-reexport-grrrrrrr.rs diff --git a/src/test/ui/crate-name-attr-used.rs b/tests/ui/crate-name-attr-used.rs similarity index 100% rename from src/test/ui/crate-name-attr-used.rs rename to tests/ui/crate-name-attr-used.rs diff --git a/src/test/ui/crate-name-mismatch.rs b/tests/ui/crate-name-mismatch.rs similarity index 100% rename from src/test/ui/crate-name-mismatch.rs rename to tests/ui/crate-name-mismatch.rs diff --git a/src/test/ui/crate-name-mismatch.stderr b/tests/ui/crate-name-mismatch.stderr similarity index 100% rename from src/test/ui/crate-name-mismatch.stderr rename to tests/ui/crate-name-mismatch.stderr diff --git a/src/test/ui/cross-crate/auxiliary/cci_borrow_lib.rs b/tests/ui/cross-crate/auxiliary/cci_borrow_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_borrow_lib.rs rename to tests/ui/cross-crate/auxiliary/cci_borrow_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_capture_clause.rs b/tests/ui/cross-crate/auxiliary/cci_capture_clause.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_capture_clause.rs rename to tests/ui/cross-crate/auxiliary/cci_capture_clause.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_const.rs b/tests/ui/cross-crate/auxiliary/cci_const.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_const.rs rename to tests/ui/cross-crate/auxiliary/cci_const.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_impl_lib.rs b/tests/ui/cross-crate/auxiliary/cci_impl_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_impl_lib.rs rename to tests/ui/cross-crate/auxiliary/cci_impl_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_iter_lib.rs b/tests/ui/cross-crate/auxiliary/cci_iter_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_iter_lib.rs rename to tests/ui/cross-crate/auxiliary/cci_iter_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_nested_lib.rs b/tests/ui/cross-crate/auxiliary/cci_nested_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_nested_lib.rs rename to tests/ui/cross-crate/auxiliary/cci_nested_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/cci_no_inline_lib.rs b/tests/ui/cross-crate/auxiliary/cci_no_inline_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/cci_no_inline_lib.rs rename to tests/ui/cross-crate/auxiliary/cci_no_inline_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/moves_based_on_type_lib.rs b/tests/ui/cross-crate/auxiliary/moves_based_on_type_lib.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/moves_based_on_type_lib.rs rename to tests/ui/cross-crate/auxiliary/moves_based_on_type_lib.rs diff --git a/src/test/ui/cross-crate/auxiliary/pub_static_array.rs b/tests/ui/cross-crate/auxiliary/pub_static_array.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/pub_static_array.rs rename to tests/ui/cross-crate/auxiliary/pub_static_array.rs diff --git a/src/test/ui/cross-crate/auxiliary/reexported_static_methods.rs b/tests/ui/cross-crate/auxiliary/reexported_static_methods.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/reexported_static_methods.rs rename to tests/ui/cross-crate/auxiliary/reexported_static_methods.rs diff --git a/src/test/ui/cross-crate/auxiliary/static_init_aux.rs b/tests/ui/cross-crate/auxiliary/static_init_aux.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/static_init_aux.rs rename to tests/ui/cross-crate/auxiliary/static_init_aux.rs diff --git a/src/test/ui/cross-crate/auxiliary/xcrate-trait-lifetime-param.rs b/tests/ui/cross-crate/auxiliary/xcrate-trait-lifetime-param.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/xcrate-trait-lifetime-param.rs rename to tests/ui/cross-crate/auxiliary/xcrate-trait-lifetime-param.rs diff --git a/src/test/ui/cross-crate/auxiliary/xcrate_address_insignificant.rs b/tests/ui/cross-crate/auxiliary/xcrate_address_insignificant.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/xcrate_address_insignificant.rs rename to tests/ui/cross-crate/auxiliary/xcrate_address_insignificant.rs diff --git a/src/test/ui/cross-crate/auxiliary/xcrate_associated_type_defaults.rs b/tests/ui/cross-crate/auxiliary/xcrate_associated_type_defaults.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/xcrate_associated_type_defaults.rs rename to tests/ui/cross-crate/auxiliary/xcrate_associated_type_defaults.rs diff --git a/src/test/ui/cross-crate/auxiliary/xcrate_generic_fn_nested_return.rs b/tests/ui/cross-crate/auxiliary/xcrate_generic_fn_nested_return.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/xcrate_generic_fn_nested_return.rs rename to tests/ui/cross-crate/auxiliary/xcrate_generic_fn_nested_return.rs diff --git a/src/test/ui/cross-crate/auxiliary/xcrate_static_addresses.rs b/tests/ui/cross-crate/auxiliary/xcrate_static_addresses.rs similarity index 100% rename from src/test/ui/cross-crate/auxiliary/xcrate_static_addresses.rs rename to tests/ui/cross-crate/auxiliary/xcrate_static_addresses.rs diff --git a/src/test/ui/cross-crate/cci_borrow.rs b/tests/ui/cross-crate/cci_borrow.rs similarity index 100% rename from src/test/ui/cross-crate/cci_borrow.rs rename to tests/ui/cross-crate/cci_borrow.rs diff --git a/src/test/ui/cross-crate/cci_capture_clause.rs b/tests/ui/cross-crate/cci_capture_clause.rs similarity index 100% rename from src/test/ui/cross-crate/cci_capture_clause.rs rename to tests/ui/cross-crate/cci_capture_clause.rs diff --git a/src/test/ui/cross-crate/cci_impl_exe.rs b/tests/ui/cross-crate/cci_impl_exe.rs similarity index 100% rename from src/test/ui/cross-crate/cci_impl_exe.rs rename to tests/ui/cross-crate/cci_impl_exe.rs diff --git a/src/test/ui/cross-crate/cci_iter_exe.rs b/tests/ui/cross-crate/cci_iter_exe.rs similarity index 100% rename from src/test/ui/cross-crate/cci_iter_exe.rs rename to tests/ui/cross-crate/cci_iter_exe.rs diff --git a/src/test/ui/cross-crate/cci_nested_exe.rs b/tests/ui/cross-crate/cci_nested_exe.rs similarity index 100% rename from src/test/ui/cross-crate/cci_nested_exe.rs rename to tests/ui/cross-crate/cci_nested_exe.rs diff --git a/src/test/ui/cross-crate/cci_no_inline_exe.rs b/tests/ui/cross-crate/cci_no_inline_exe.rs similarity index 100% rename from src/test/ui/cross-crate/cci_no_inline_exe.rs rename to tests/ui/cross-crate/cci_no_inline_exe.rs diff --git a/src/test/ui/cross-crate/const-cross-crate-const.rs b/tests/ui/cross-crate/const-cross-crate-const.rs similarity index 100% rename from src/test/ui/cross-crate/const-cross-crate-const.rs rename to tests/ui/cross-crate/const-cross-crate-const.rs diff --git a/src/test/ui/cross-crate/const-cross-crate-extern.rs b/tests/ui/cross-crate/const-cross-crate-extern.rs similarity index 100% rename from src/test/ui/cross-crate/const-cross-crate-extern.rs rename to tests/ui/cross-crate/const-cross-crate-extern.rs diff --git a/src/test/ui/cross-crate/cross-crate-const-pat.rs b/tests/ui/cross-crate/cross-crate-const-pat.rs similarity index 100% rename from src/test/ui/cross-crate/cross-crate-const-pat.rs rename to tests/ui/cross-crate/cross-crate-const-pat.rs diff --git a/src/test/ui/cross-crate/issue-64872/auxiliary/a_def_obj.rs b/tests/ui/cross-crate/issue-64872/auxiliary/a_def_obj.rs similarity index 100% rename from src/test/ui/cross-crate/issue-64872/auxiliary/a_def_obj.rs rename to tests/ui/cross-crate/issue-64872/auxiliary/a_def_obj.rs diff --git a/src/test/ui/cross-crate/issue-64872/auxiliary/b_reexport_obj.rs b/tests/ui/cross-crate/issue-64872/auxiliary/b_reexport_obj.rs similarity index 100% rename from src/test/ui/cross-crate/issue-64872/auxiliary/b_reexport_obj.rs rename to tests/ui/cross-crate/issue-64872/auxiliary/b_reexport_obj.rs diff --git a/src/test/ui/cross-crate/issue-64872/auxiliary/c_another_vtable_for_obj.rs b/tests/ui/cross-crate/issue-64872/auxiliary/c_another_vtable_for_obj.rs similarity index 100% rename from src/test/ui/cross-crate/issue-64872/auxiliary/c_another_vtable_for_obj.rs rename to tests/ui/cross-crate/issue-64872/auxiliary/c_another_vtable_for_obj.rs diff --git a/src/test/ui/cross-crate/issue-64872/auxiliary/d_chain_of_rlibs_and_dylibs.rs b/tests/ui/cross-crate/issue-64872/auxiliary/d_chain_of_rlibs_and_dylibs.rs similarity index 100% rename from src/test/ui/cross-crate/issue-64872/auxiliary/d_chain_of_rlibs_and_dylibs.rs rename to tests/ui/cross-crate/issue-64872/auxiliary/d_chain_of_rlibs_and_dylibs.rs diff --git a/src/test/ui/cross-crate/issue-64872/issue-64872.rs b/tests/ui/cross-crate/issue-64872/issue-64872.rs similarity index 100% rename from src/test/ui/cross-crate/issue-64872/issue-64872.rs rename to tests/ui/cross-crate/issue-64872/issue-64872.rs diff --git a/src/test/ui/cross-crate/moves-based-on-type-cross-crate.rs b/tests/ui/cross-crate/moves-based-on-type-cross-crate.rs similarity index 100% rename from src/test/ui/cross-crate/moves-based-on-type-cross-crate.rs rename to tests/ui/cross-crate/moves-based-on-type-cross-crate.rs diff --git a/src/test/ui/cross-crate/reexported-static-methods-cross-crate.rs b/tests/ui/cross-crate/reexported-static-methods-cross-crate.rs similarity index 100% rename from src/test/ui/cross-crate/reexported-static-methods-cross-crate.rs rename to tests/ui/cross-crate/reexported-static-methods-cross-crate.rs diff --git a/src/test/ui/cross-crate/static-array-across-crate.rs b/tests/ui/cross-crate/static-array-across-crate.rs similarity index 100% rename from src/test/ui/cross-crate/static-array-across-crate.rs rename to tests/ui/cross-crate/static-array-across-crate.rs diff --git a/src/test/ui/cross-crate/static-init.rs b/tests/ui/cross-crate/static-init.rs similarity index 100% rename from src/test/ui/cross-crate/static-init.rs rename to tests/ui/cross-crate/static-init.rs diff --git a/src/test/ui/cross-crate/xcrate-address-insignificant.rs b/tests/ui/cross-crate/xcrate-address-insignificant.rs similarity index 100% rename from src/test/ui/cross-crate/xcrate-address-insignificant.rs rename to tests/ui/cross-crate/xcrate-address-insignificant.rs diff --git a/src/test/ui/cross-crate/xcrate-associated-type-defaults.rs b/tests/ui/cross-crate/xcrate-associated-type-defaults.rs similarity index 100% rename from src/test/ui/cross-crate/xcrate-associated-type-defaults.rs rename to tests/ui/cross-crate/xcrate-associated-type-defaults.rs diff --git a/src/test/ui/cross-crate/xcrate-static-addresses.rs b/tests/ui/cross-crate/xcrate-static-addresses.rs similarity index 100% rename from src/test/ui/cross-crate/xcrate-static-addresses.rs rename to tests/ui/cross-crate/xcrate-static-addresses.rs diff --git a/src/test/ui/cross-crate/xcrate-trait-lifetime-param.rs b/tests/ui/cross-crate/xcrate-trait-lifetime-param.rs similarity index 100% rename from src/test/ui/cross-crate/xcrate-trait-lifetime-param.rs rename to tests/ui/cross-crate/xcrate-trait-lifetime-param.rs diff --git a/src/test/ui/cross-crate/xcrate_generic_fn_nested_return.rs b/tests/ui/cross-crate/xcrate_generic_fn_nested_return.rs similarity index 100% rename from src/test/ui/cross-crate/xcrate_generic_fn_nested_return.rs rename to tests/ui/cross-crate/xcrate_generic_fn_nested_return.rs diff --git a/src/test/ui/cross/cross-borrow-trait.rs b/tests/ui/cross/cross-borrow-trait.rs similarity index 100% rename from src/test/ui/cross/cross-borrow-trait.rs rename to tests/ui/cross/cross-borrow-trait.rs diff --git a/src/test/ui/cross/cross-borrow-trait.stderr b/tests/ui/cross/cross-borrow-trait.stderr similarity index 100% rename from src/test/ui/cross/cross-borrow-trait.stderr rename to tests/ui/cross/cross-borrow-trait.stderr diff --git a/src/test/ui/cross/cross-crate-macro-backtrace/auxiliary/extern_macro_crate.rs b/tests/ui/cross/cross-crate-macro-backtrace/auxiliary/extern_macro_crate.rs similarity index 100% rename from src/test/ui/cross/cross-crate-macro-backtrace/auxiliary/extern_macro_crate.rs rename to tests/ui/cross/cross-crate-macro-backtrace/auxiliary/extern_macro_crate.rs diff --git a/src/test/ui/cross/cross-crate-macro-backtrace/main.rs b/tests/ui/cross/cross-crate-macro-backtrace/main.rs similarity index 100% rename from src/test/ui/cross/cross-crate-macro-backtrace/main.rs rename to tests/ui/cross/cross-crate-macro-backtrace/main.rs diff --git a/src/test/ui/cross/cross-crate-macro-backtrace/main.stderr b/tests/ui/cross/cross-crate-macro-backtrace/main.stderr similarity index 100% rename from src/test/ui/cross/cross-crate-macro-backtrace/main.stderr rename to tests/ui/cross/cross-crate-macro-backtrace/main.stderr diff --git a/src/test/ui/cross/cross-file-errors/main.rs b/tests/ui/cross/cross-file-errors/main.rs similarity index 100% rename from src/test/ui/cross/cross-file-errors/main.rs rename to tests/ui/cross/cross-file-errors/main.rs diff --git a/src/test/ui/cross/cross-file-errors/main.stderr b/tests/ui/cross/cross-file-errors/main.stderr similarity index 100% rename from src/test/ui/cross/cross-file-errors/main.stderr rename to tests/ui/cross/cross-file-errors/main.stderr diff --git a/src/test/ui/cross/cross-file-errors/underscore.rs b/tests/ui/cross/cross-file-errors/underscore.rs similarity index 100% rename from src/test/ui/cross/cross-file-errors/underscore.rs rename to tests/ui/cross/cross-file-errors/underscore.rs diff --git a/src/test/ui/cross/cross-fn-cache-hole.rs b/tests/ui/cross/cross-fn-cache-hole.rs similarity index 100% rename from src/test/ui/cross/cross-fn-cache-hole.rs rename to tests/ui/cross/cross-fn-cache-hole.rs diff --git a/src/test/ui/cross/cross-fn-cache-hole.stderr b/tests/ui/cross/cross-fn-cache-hole.stderr similarity index 100% rename from src/test/ui/cross/cross-fn-cache-hole.stderr rename to tests/ui/cross/cross-fn-cache-hole.stderr diff --git a/src/test/ui/custom-attribute-multisegment.rs b/tests/ui/custom-attribute-multisegment.rs similarity index 100% rename from src/test/ui/custom-attribute-multisegment.rs rename to tests/ui/custom-attribute-multisegment.rs diff --git a/src/test/ui/custom-attribute-multisegment.stderr b/tests/ui/custom-attribute-multisegment.stderr similarity index 100% rename from src/test/ui/custom-attribute-multisegment.stderr rename to tests/ui/custom-attribute-multisegment.stderr diff --git a/src/test/ui/custom-test-frameworks-simple.rs b/tests/ui/custom-test-frameworks-simple.rs similarity index 100% rename from src/test/ui/custom-test-frameworks-simple.rs rename to tests/ui/custom-test-frameworks-simple.rs diff --git a/src/test/ui/custom_attribute.rs b/tests/ui/custom_attribute.rs similarity index 100% rename from src/test/ui/custom_attribute.rs rename to tests/ui/custom_attribute.rs diff --git a/src/test/ui/custom_attribute.stderr b/tests/ui/custom_attribute.stderr similarity index 100% rename from src/test/ui/custom_attribute.stderr rename to tests/ui/custom_attribute.stderr diff --git a/src/test/ui/custom_test_frameworks/auxiliary/dynamic_runner.rs b/tests/ui/custom_test_frameworks/auxiliary/dynamic_runner.rs similarity index 100% rename from src/test/ui/custom_test_frameworks/auxiliary/dynamic_runner.rs rename to tests/ui/custom_test_frameworks/auxiliary/dynamic_runner.rs diff --git a/src/test/ui/custom_test_frameworks/auxiliary/example_runner.rs b/tests/ui/custom_test_frameworks/auxiliary/example_runner.rs similarity index 100% rename from src/test/ui/custom_test_frameworks/auxiliary/example_runner.rs rename to tests/ui/custom_test_frameworks/auxiliary/example_runner.rs diff --git a/src/test/ui/custom_test_frameworks/dynamic.rs b/tests/ui/custom_test_frameworks/dynamic.rs similarity index 100% rename from src/test/ui/custom_test_frameworks/dynamic.rs rename to tests/ui/custom_test_frameworks/dynamic.rs diff --git a/src/test/ui/custom_test_frameworks/full.rs b/tests/ui/custom_test_frameworks/full.rs similarity index 100% rename from src/test/ui/custom_test_frameworks/full.rs rename to tests/ui/custom_test_frameworks/full.rs diff --git a/src/test/ui/custom_test_frameworks/mismatch.rs b/tests/ui/custom_test_frameworks/mismatch.rs similarity index 100% rename from src/test/ui/custom_test_frameworks/mismatch.rs rename to tests/ui/custom_test_frameworks/mismatch.rs diff --git a/src/test/ui/custom_test_frameworks/mismatch.stderr b/tests/ui/custom_test_frameworks/mismatch.stderr similarity index 100% rename from src/test/ui/custom_test_frameworks/mismatch.stderr rename to tests/ui/custom_test_frameworks/mismatch.stderr diff --git a/src/test/ui/cycle-trait/cycle-trait-default-type-trait.rs b/tests/ui/cycle-trait/cycle-trait-default-type-trait.rs similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-default-type-trait.rs rename to tests/ui/cycle-trait/cycle-trait-default-type-trait.rs diff --git a/src/test/ui/cycle-trait/cycle-trait-default-type-trait.stderr b/tests/ui/cycle-trait/cycle-trait-default-type-trait.stderr similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-default-type-trait.stderr rename to tests/ui/cycle-trait/cycle-trait-default-type-trait.stderr diff --git a/src/test/ui/cycle-trait/cycle-trait-supertrait-direct.rs b/tests/ui/cycle-trait/cycle-trait-supertrait-direct.rs similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-supertrait-direct.rs rename to tests/ui/cycle-trait/cycle-trait-supertrait-direct.rs diff --git a/src/test/ui/cycle-trait/cycle-trait-supertrait-direct.stderr b/tests/ui/cycle-trait/cycle-trait-supertrait-direct.stderr similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-supertrait-direct.stderr rename to tests/ui/cycle-trait/cycle-trait-supertrait-direct.stderr diff --git a/src/test/ui/cycle-trait/cycle-trait-supertrait-indirect.rs b/tests/ui/cycle-trait/cycle-trait-supertrait-indirect.rs similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-supertrait-indirect.rs rename to tests/ui/cycle-trait/cycle-trait-supertrait-indirect.rs diff --git a/src/test/ui/cycle-trait/cycle-trait-supertrait-indirect.stderr b/tests/ui/cycle-trait/cycle-trait-supertrait-indirect.stderr similarity index 100% rename from src/test/ui/cycle-trait/cycle-trait-supertrait-indirect.stderr rename to tests/ui/cycle-trait/cycle-trait-supertrait-indirect.stderr diff --git a/src/test/ui/debuginfo/debuginfo-box-with-large-allocator.rs b/tests/ui/debuginfo/debuginfo-box-with-large-allocator.rs similarity index 100% rename from src/test/ui/debuginfo/debuginfo-box-with-large-allocator.rs rename to tests/ui/debuginfo/debuginfo-box-with-large-allocator.rs diff --git a/src/test/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs b/tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs similarity index 100% rename from src/test/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs rename to tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs diff --git a/src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.rs b/tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.rs similarity index 100% rename from src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.rs rename to tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.rs diff --git a/src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.stderr b/tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.stderr similarity index 100% rename from src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.stderr rename to tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-1.stderr diff --git a/src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.rs b/tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.rs similarity index 100% rename from src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.rs rename to tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.rs diff --git a/src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.stderr b/tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.stderr similarity index 100% rename from src/test/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.stderr rename to tests/ui/debuginfo/debuginfo-type-name-layout-ice-94961-2.stderr diff --git a/src/test/ui/debuginfo/debuginfo_with_uninhabitable_field_and_unsized.rs b/tests/ui/debuginfo/debuginfo_with_uninhabitable_field_and_unsized.rs similarity index 100% rename from src/test/ui/debuginfo/debuginfo_with_uninhabitable_field_and_unsized.rs rename to tests/ui/debuginfo/debuginfo_with_uninhabitable_field_and_unsized.rs diff --git a/src/test/ui/debuginfo/issue-105386-debuginfo-ub.rs b/tests/ui/debuginfo/issue-105386-debuginfo-ub.rs similarity index 100% rename from src/test/ui/debuginfo/issue-105386-debuginfo-ub.rs rename to tests/ui/debuginfo/issue-105386-debuginfo-ub.rs diff --git a/src/test/ui/debuginfo/late-bound-projection.rs b/tests/ui/debuginfo/late-bound-projection.rs similarity index 100% rename from src/test/ui/debuginfo/late-bound-projection.rs rename to tests/ui/debuginfo/late-bound-projection.rs diff --git a/src/test/ui/deduplicate-diagnostics.deduplicate.stderr b/tests/ui/deduplicate-diagnostics.deduplicate.stderr similarity index 100% rename from src/test/ui/deduplicate-diagnostics.deduplicate.stderr rename to tests/ui/deduplicate-diagnostics.deduplicate.stderr diff --git a/src/test/ui/deduplicate-diagnostics.duplicate.stderr b/tests/ui/deduplicate-diagnostics.duplicate.stderr similarity index 100% rename from src/test/ui/deduplicate-diagnostics.duplicate.stderr rename to tests/ui/deduplicate-diagnostics.duplicate.stderr diff --git a/src/test/ui/deduplicate-diagnostics.rs b/tests/ui/deduplicate-diagnostics.rs similarity index 100% rename from src/test/ui/deduplicate-diagnostics.rs rename to tests/ui/deduplicate-diagnostics.rs diff --git a/src/test/ui/deep.rs b/tests/ui/deep.rs similarity index 100% rename from src/test/ui/deep.rs rename to tests/ui/deep.rs diff --git a/src/test/ui/default-method-parsing.rs b/tests/ui/default-method-parsing.rs similarity index 100% rename from src/test/ui/default-method-parsing.rs rename to tests/ui/default-method-parsing.rs diff --git a/src/test/ui/default-method-simple.rs b/tests/ui/default-method-simple.rs similarity index 100% rename from src/test/ui/default-method-simple.rs rename to tests/ui/default-method-simple.rs diff --git a/src/test/ui/defaults-well-formedness.rs b/tests/ui/defaults-well-formedness.rs similarity index 100% rename from src/test/ui/defaults-well-formedness.rs rename to tests/ui/defaults-well-formedness.rs diff --git a/src/test/ui/definition-reachable/auxiliary/field-method-macro.rs b/tests/ui/definition-reachable/auxiliary/field-method-macro.rs similarity index 100% rename from src/test/ui/definition-reachable/auxiliary/field-method-macro.rs rename to tests/ui/definition-reachable/auxiliary/field-method-macro.rs diff --git a/src/test/ui/definition-reachable/auxiliary/nested-fn-macro.rs b/tests/ui/definition-reachable/auxiliary/nested-fn-macro.rs similarity index 100% rename from src/test/ui/definition-reachable/auxiliary/nested-fn-macro.rs rename to tests/ui/definition-reachable/auxiliary/nested-fn-macro.rs diff --git a/src/test/ui/definition-reachable/auxiliary/private-use-macro.rs b/tests/ui/definition-reachable/auxiliary/private-use-macro.rs similarity index 100% rename from src/test/ui/definition-reachable/auxiliary/private-use-macro.rs rename to tests/ui/definition-reachable/auxiliary/private-use-macro.rs diff --git a/src/test/ui/definition-reachable/field-method.rs b/tests/ui/definition-reachable/field-method.rs similarity index 100% rename from src/test/ui/definition-reachable/field-method.rs rename to tests/ui/definition-reachable/field-method.rs diff --git a/src/test/ui/definition-reachable/nested-fn.rs b/tests/ui/definition-reachable/nested-fn.rs similarity index 100% rename from src/test/ui/definition-reachable/nested-fn.rs rename to tests/ui/definition-reachable/nested-fn.rs diff --git a/src/test/ui/definition-reachable/private-non-types.rs b/tests/ui/definition-reachable/private-non-types.rs similarity index 100% rename from src/test/ui/definition-reachable/private-non-types.rs rename to tests/ui/definition-reachable/private-non-types.rs diff --git a/src/test/ui/definition-reachable/private-types.rs b/tests/ui/definition-reachable/private-types.rs similarity index 100% rename from src/test/ui/definition-reachable/private-types.rs rename to tests/ui/definition-reachable/private-types.rs diff --git a/src/test/ui/definition-reachable/private-use.rs b/tests/ui/definition-reachable/private-use.rs similarity index 100% rename from src/test/ui/definition-reachable/private-use.rs rename to tests/ui/definition-reachable/private-use.rs diff --git a/src/test/ui/dep-graph/dep-graph-assoc-type-codegen.rs b/tests/ui/dep-graph/dep-graph-assoc-type-codegen.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-assoc-type-codegen.rs rename to tests/ui/dep-graph/dep-graph-assoc-type-codegen.rs diff --git a/src/test/ui/dep-graph/dep-graph-assoc-type-codegen.stderr b/tests/ui/dep-graph/dep-graph-assoc-type-codegen.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-assoc-type-codegen.stderr rename to tests/ui/dep-graph/dep-graph-assoc-type-codegen.stderr diff --git a/src/test/ui/dep-graph/dep-graph-caller-callee.rs b/tests/ui/dep-graph/dep-graph-caller-callee.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-caller-callee.rs rename to tests/ui/dep-graph/dep-graph-caller-callee.rs diff --git a/src/test/ui/dep-graph/dep-graph-caller-callee.stderr b/tests/ui/dep-graph/dep-graph-caller-callee.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-caller-callee.stderr rename to tests/ui/dep-graph/dep-graph-caller-callee.stderr diff --git a/src/test/ui/dep-graph/dep-graph-check-attr.rs b/tests/ui/dep-graph/dep-graph-check-attr.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-check-attr.rs rename to tests/ui/dep-graph/dep-graph-check-attr.rs diff --git a/src/test/ui/dep-graph/dep-graph-check-attr.stderr b/tests/ui/dep-graph/dep-graph-check-attr.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-check-attr.stderr rename to tests/ui/dep-graph/dep-graph-check-attr.stderr diff --git a/src/test/ui/dep-graph/dep-graph-struct-signature.rs b/tests/ui/dep-graph/dep-graph-struct-signature.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-struct-signature.rs rename to tests/ui/dep-graph/dep-graph-struct-signature.rs diff --git a/src/test/ui/dep-graph/dep-graph-struct-signature.stderr b/tests/ui/dep-graph/dep-graph-struct-signature.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-struct-signature.stderr rename to tests/ui/dep-graph/dep-graph-struct-signature.stderr diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.rs b/tests/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.rs rename to tests/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.rs diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.stderr b/tests/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.stderr rename to tests/ui/dep-graph/dep-graph-trait-impl-two-traits-same-method.stderr diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl-two-traits.rs b/tests/ui/dep-graph/dep-graph-trait-impl-two-traits.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl-two-traits.rs rename to tests/ui/dep-graph/dep-graph-trait-impl-two-traits.rs diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl-two-traits.stderr b/tests/ui/dep-graph/dep-graph-trait-impl-two-traits.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl-two-traits.stderr rename to tests/ui/dep-graph/dep-graph-trait-impl-two-traits.stderr diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl.rs b/tests/ui/dep-graph/dep-graph-trait-impl.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl.rs rename to tests/ui/dep-graph/dep-graph-trait-impl.rs diff --git a/src/test/ui/dep-graph/dep-graph-trait-impl.stderr b/tests/ui/dep-graph/dep-graph-trait-impl.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-trait-impl.stderr rename to tests/ui/dep-graph/dep-graph-trait-impl.stderr diff --git a/src/test/ui/dep-graph/dep-graph-type-alias.rs b/tests/ui/dep-graph/dep-graph-type-alias.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-type-alias.rs rename to tests/ui/dep-graph/dep-graph-type-alias.rs diff --git a/src/test/ui/dep-graph/dep-graph-type-alias.stderr b/tests/ui/dep-graph/dep-graph-type-alias.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-type-alias.stderr rename to tests/ui/dep-graph/dep-graph-type-alias.stderr diff --git a/src/test/ui/dep-graph/dep-graph-variance-alias.rs b/tests/ui/dep-graph/dep-graph-variance-alias.rs similarity index 100% rename from src/test/ui/dep-graph/dep-graph-variance-alias.rs rename to tests/ui/dep-graph/dep-graph-variance-alias.rs diff --git a/src/test/ui/dep-graph/dep-graph-variance-alias.stderr b/tests/ui/dep-graph/dep-graph-variance-alias.stderr similarity index 100% rename from src/test/ui/dep-graph/dep-graph-variance-alias.stderr rename to tests/ui/dep-graph/dep-graph-variance-alias.stderr diff --git a/src/test/ui/deprecation-in-force-unstable.rs b/tests/ui/deprecation-in-force-unstable.rs similarity index 100% rename from src/test/ui/deprecation-in-force-unstable.rs rename to tests/ui/deprecation-in-force-unstable.rs diff --git a/src/test/ui/deprecation/atomic_initializers.fixed b/tests/ui/deprecation/atomic_initializers.fixed similarity index 100% rename from src/test/ui/deprecation/atomic_initializers.fixed rename to tests/ui/deprecation/atomic_initializers.fixed diff --git a/src/test/ui/deprecation/atomic_initializers.rs b/tests/ui/deprecation/atomic_initializers.rs similarity index 100% rename from src/test/ui/deprecation/atomic_initializers.rs rename to tests/ui/deprecation/atomic_initializers.rs diff --git a/src/test/ui/deprecation/atomic_initializers.stderr b/tests/ui/deprecation/atomic_initializers.stderr similarity index 100% rename from src/test/ui/deprecation/atomic_initializers.stderr rename to tests/ui/deprecation/atomic_initializers.stderr diff --git a/src/test/ui/deprecation/auxiliary/deprecation-lint.rs b/tests/ui/deprecation/auxiliary/deprecation-lint.rs similarity index 100% rename from src/test/ui/deprecation/auxiliary/deprecation-lint.rs rename to tests/ui/deprecation/auxiliary/deprecation-lint.rs diff --git a/src/test/ui/deprecation/deprecated-macro_escape-inner.rs b/tests/ui/deprecation/deprecated-macro_escape-inner.rs similarity index 100% rename from src/test/ui/deprecation/deprecated-macro_escape-inner.rs rename to tests/ui/deprecation/deprecated-macro_escape-inner.rs diff --git a/src/test/ui/deprecation/deprecated-macro_escape-inner.stderr b/tests/ui/deprecation/deprecated-macro_escape-inner.stderr similarity index 100% rename from src/test/ui/deprecation/deprecated-macro_escape-inner.stderr rename to tests/ui/deprecation/deprecated-macro_escape-inner.stderr diff --git a/src/test/ui/deprecation/deprecated-macro_escape.rs b/tests/ui/deprecation/deprecated-macro_escape.rs similarity index 100% rename from src/test/ui/deprecation/deprecated-macro_escape.rs rename to tests/ui/deprecation/deprecated-macro_escape.rs diff --git a/src/test/ui/deprecation/deprecated-macro_escape.stderr b/tests/ui/deprecation/deprecated-macro_escape.stderr similarity index 100% rename from src/test/ui/deprecation/deprecated-macro_escape.stderr rename to tests/ui/deprecation/deprecated-macro_escape.stderr diff --git a/src/test/ui/deprecation/deprecated_no_stack_check.rs b/tests/ui/deprecation/deprecated_no_stack_check.rs similarity index 100% rename from src/test/ui/deprecation/deprecated_no_stack_check.rs rename to tests/ui/deprecation/deprecated_no_stack_check.rs diff --git a/src/test/ui/deprecation/deprecated_no_stack_check.stderr b/tests/ui/deprecation/deprecated_no_stack_check.stderr similarity index 100% rename from src/test/ui/deprecation/deprecated_no_stack_check.stderr rename to tests/ui/deprecation/deprecated_no_stack_check.stderr diff --git a/src/test/ui/deprecation/deprecation-in-future.rs b/tests/ui/deprecation/deprecation-in-future.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-in-future.rs rename to tests/ui/deprecation/deprecation-in-future.rs diff --git a/src/test/ui/deprecation/deprecation-in-future.stderr b/tests/ui/deprecation/deprecation-in-future.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-in-future.stderr rename to tests/ui/deprecation/deprecation-in-future.stderr diff --git a/src/test/ui/deprecation/deprecation-lint-2.rs b/tests/ui/deprecation/deprecation-lint-2.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-2.rs rename to tests/ui/deprecation/deprecation-lint-2.rs diff --git a/src/test/ui/deprecation/deprecation-lint-2.stderr b/tests/ui/deprecation/deprecation-lint-2.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-2.stderr rename to tests/ui/deprecation/deprecation-lint-2.stderr diff --git a/src/test/ui/deprecation/deprecation-lint-3.rs b/tests/ui/deprecation/deprecation-lint-3.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-3.rs rename to tests/ui/deprecation/deprecation-lint-3.rs diff --git a/src/test/ui/deprecation/deprecation-lint-3.stderr b/tests/ui/deprecation/deprecation-lint-3.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-3.stderr rename to tests/ui/deprecation/deprecation-lint-3.stderr diff --git a/src/test/ui/deprecation/deprecation-lint-nested.rs b/tests/ui/deprecation/deprecation-lint-nested.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-nested.rs rename to tests/ui/deprecation/deprecation-lint-nested.rs diff --git a/src/test/ui/deprecation/deprecation-lint-nested.stderr b/tests/ui/deprecation/deprecation-lint-nested.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-lint-nested.stderr rename to tests/ui/deprecation/deprecation-lint-nested.stderr diff --git a/src/test/ui/deprecation/deprecation-lint.rs b/tests/ui/deprecation/deprecation-lint.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-lint.rs rename to tests/ui/deprecation/deprecation-lint.rs diff --git a/src/test/ui/deprecation/deprecation-lint.stderr b/tests/ui/deprecation/deprecation-lint.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-lint.stderr rename to tests/ui/deprecation/deprecation-lint.stderr diff --git a/src/test/ui/deprecation/deprecation-sanity.rs b/tests/ui/deprecation/deprecation-sanity.rs similarity index 100% rename from src/test/ui/deprecation/deprecation-sanity.rs rename to tests/ui/deprecation/deprecation-sanity.rs diff --git a/src/test/ui/deprecation/deprecation-sanity.stderr b/tests/ui/deprecation/deprecation-sanity.stderr similarity index 100% rename from src/test/ui/deprecation/deprecation-sanity.stderr rename to tests/ui/deprecation/deprecation-sanity.stderr diff --git a/src/test/ui/deprecation/derive_on_deprecated.rs b/tests/ui/deprecation/derive_on_deprecated.rs similarity index 100% rename from src/test/ui/deprecation/derive_on_deprecated.rs rename to tests/ui/deprecation/derive_on_deprecated.rs diff --git a/src/test/ui/deprecation/derive_on_deprecated_forbidden.rs b/tests/ui/deprecation/derive_on_deprecated_forbidden.rs similarity index 100% rename from src/test/ui/deprecation/derive_on_deprecated_forbidden.rs rename to tests/ui/deprecation/derive_on_deprecated_forbidden.rs diff --git a/src/test/ui/deprecation/feature-gate-deprecated_suggestion.rs b/tests/ui/deprecation/feature-gate-deprecated_suggestion.rs similarity index 100% rename from src/test/ui/deprecation/feature-gate-deprecated_suggestion.rs rename to tests/ui/deprecation/feature-gate-deprecated_suggestion.rs diff --git a/src/test/ui/deprecation/feature-gate-deprecated_suggestion.stderr b/tests/ui/deprecation/feature-gate-deprecated_suggestion.stderr similarity index 100% rename from src/test/ui/deprecation/feature-gate-deprecated_suggestion.stderr rename to tests/ui/deprecation/feature-gate-deprecated_suggestion.stderr diff --git a/src/test/ui/deprecation/invalid-literal.rs b/tests/ui/deprecation/invalid-literal.rs similarity index 100% rename from src/test/ui/deprecation/invalid-literal.rs rename to tests/ui/deprecation/invalid-literal.rs diff --git a/src/test/ui/deprecation/invalid-literal.stderr b/tests/ui/deprecation/invalid-literal.stderr similarity index 100% rename from src/test/ui/deprecation/invalid-literal.stderr rename to tests/ui/deprecation/invalid-literal.stderr diff --git a/src/test/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs b/tests/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs similarity index 100% rename from src/test/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs rename to tests/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.rs diff --git a/src/test/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.stderr b/tests/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.stderr similarity index 100% rename from src/test/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.stderr rename to tests/ui/deprecation/issue-66340-deprecated-attr-non-meta-grammar.stderr diff --git a/src/test/ui/deprecation/issue-84637-deprecated-associated-function.fixed b/tests/ui/deprecation/issue-84637-deprecated-associated-function.fixed similarity index 100% rename from src/test/ui/deprecation/issue-84637-deprecated-associated-function.fixed rename to tests/ui/deprecation/issue-84637-deprecated-associated-function.fixed diff --git a/src/test/ui/deprecation/issue-84637-deprecated-associated-function.rs b/tests/ui/deprecation/issue-84637-deprecated-associated-function.rs similarity index 100% rename from src/test/ui/deprecation/issue-84637-deprecated-associated-function.rs rename to tests/ui/deprecation/issue-84637-deprecated-associated-function.rs diff --git a/src/test/ui/deprecation/issue-84637-deprecated-associated-function.stderr b/tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr similarity index 100% rename from src/test/ui/deprecation/issue-84637-deprecated-associated-function.stderr rename to tests/ui/deprecation/issue-84637-deprecated-associated-function.stderr diff --git a/src/test/ui/deprecation/staged-deprecation-in-future.rs b/tests/ui/deprecation/staged-deprecation-in-future.rs similarity index 100% rename from src/test/ui/deprecation/staged-deprecation-in-future.rs rename to tests/ui/deprecation/staged-deprecation-in-future.rs diff --git a/src/test/ui/deprecation/staged-deprecation-in-future.stderr b/tests/ui/deprecation/staged-deprecation-in-future.stderr similarity index 100% rename from src/test/ui/deprecation/staged-deprecation-in-future.stderr rename to tests/ui/deprecation/staged-deprecation-in-future.stderr diff --git a/src/test/ui/deprecation/suggestion.fixed b/tests/ui/deprecation/suggestion.fixed similarity index 100% rename from src/test/ui/deprecation/suggestion.fixed rename to tests/ui/deprecation/suggestion.fixed diff --git a/src/test/ui/deprecation/suggestion.rs b/tests/ui/deprecation/suggestion.rs similarity index 100% rename from src/test/ui/deprecation/suggestion.rs rename to tests/ui/deprecation/suggestion.rs diff --git a/src/test/ui/deprecation/suggestion.stderr b/tests/ui/deprecation/suggestion.stderr similarity index 100% rename from src/test/ui/deprecation/suggestion.stderr rename to tests/ui/deprecation/suggestion.stderr diff --git a/src/test/ui/deprecation/try-macro-suggestion.rs b/tests/ui/deprecation/try-macro-suggestion.rs similarity index 100% rename from src/test/ui/deprecation/try-macro-suggestion.rs rename to tests/ui/deprecation/try-macro-suggestion.rs diff --git a/src/test/ui/deprecation/try-macro-suggestion.stderr b/tests/ui/deprecation/try-macro-suggestion.stderr similarity index 100% rename from src/test/ui/deprecation/try-macro-suggestion.stderr rename to tests/ui/deprecation/try-macro-suggestion.stderr diff --git a/src/test/ui/deref-non-pointer.rs b/tests/ui/deref-non-pointer.rs similarity index 100% rename from src/test/ui/deref-non-pointer.rs rename to tests/ui/deref-non-pointer.rs diff --git a/src/test/ui/deref-non-pointer.stderr b/tests/ui/deref-non-pointer.stderr similarity index 100% rename from src/test/ui/deref-non-pointer.stderr rename to tests/ui/deref-non-pointer.stderr diff --git a/src/test/ui/deref-patterns/basic.rs b/tests/ui/deref-patterns/basic.rs similarity index 100% rename from src/test/ui/deref-patterns/basic.rs rename to tests/ui/deref-patterns/basic.rs diff --git a/src/test/ui/deref-patterns/basic.run.stdout b/tests/ui/deref-patterns/basic.run.stdout similarity index 100% rename from src/test/ui/deref-patterns/basic.run.stdout rename to tests/ui/deref-patterns/basic.run.stdout diff --git a/src/test/ui/deref-patterns/default-infer.rs b/tests/ui/deref-patterns/default-infer.rs similarity index 100% rename from src/test/ui/deref-patterns/default-infer.rs rename to tests/ui/deref-patterns/default-infer.rs diff --git a/src/test/ui/deref-patterns/gate.rs b/tests/ui/deref-patterns/gate.rs similarity index 100% rename from src/test/ui/deref-patterns/gate.rs rename to tests/ui/deref-patterns/gate.rs diff --git a/src/test/ui/deref-patterns/gate.stderr b/tests/ui/deref-patterns/gate.stderr similarity index 100% rename from src/test/ui/deref-patterns/gate.stderr rename to tests/ui/deref-patterns/gate.stderr diff --git a/src/test/ui/deref-patterns/refs.rs b/tests/ui/deref-patterns/refs.rs similarity index 100% rename from src/test/ui/deref-patterns/refs.rs rename to tests/ui/deref-patterns/refs.rs diff --git a/src/test/ui/deref-rc.rs b/tests/ui/deref-rc.rs similarity index 100% rename from src/test/ui/deref-rc.rs rename to tests/ui/deref-rc.rs diff --git a/src/test/ui/deref.rs b/tests/ui/deref.rs similarity index 100% rename from src/test/ui/deref.rs rename to tests/ui/deref.rs diff --git a/src/test/ui/derive-uninhabited-enum-38885.rs b/tests/ui/derive-uninhabited-enum-38885.rs similarity index 100% rename from src/test/ui/derive-uninhabited-enum-38885.rs rename to tests/ui/derive-uninhabited-enum-38885.rs diff --git a/src/test/ui/derive-uninhabited-enum-38885.stderr b/tests/ui/derive-uninhabited-enum-38885.stderr similarity index 100% rename from src/test/ui/derive-uninhabited-enum-38885.stderr rename to tests/ui/derive-uninhabited-enum-38885.stderr diff --git a/src/test/ui/derived-errors/issue-30580.rs b/tests/ui/derived-errors/issue-30580.rs similarity index 100% rename from src/test/ui/derived-errors/issue-30580.rs rename to tests/ui/derived-errors/issue-30580.rs diff --git a/src/test/ui/derived-errors/issue-30580.stderr b/tests/ui/derived-errors/issue-30580.stderr similarity index 100% rename from src/test/ui/derived-errors/issue-30580.stderr rename to tests/ui/derived-errors/issue-30580.stderr diff --git a/src/test/ui/derived-errors/issue-31997-1.rs b/tests/ui/derived-errors/issue-31997-1.rs similarity index 100% rename from src/test/ui/derived-errors/issue-31997-1.rs rename to tests/ui/derived-errors/issue-31997-1.rs diff --git a/src/test/ui/derived-errors/issue-31997-1.stderr b/tests/ui/derived-errors/issue-31997-1.stderr similarity index 100% rename from src/test/ui/derived-errors/issue-31997-1.stderr rename to tests/ui/derived-errors/issue-31997-1.stderr diff --git a/src/test/ui/derived-errors/issue-31997.rs b/tests/ui/derived-errors/issue-31997.rs similarity index 100% rename from src/test/ui/derived-errors/issue-31997.rs rename to tests/ui/derived-errors/issue-31997.rs diff --git a/src/test/ui/derived-errors/issue-31997.stderr b/tests/ui/derived-errors/issue-31997.stderr similarity index 100% rename from src/test/ui/derived-errors/issue-31997.stderr rename to tests/ui/derived-errors/issue-31997.stderr diff --git a/src/test/ui/derives/auxiliary/derive-marker-tricky.rs b/tests/ui/derives/auxiliary/derive-marker-tricky.rs similarity index 100% rename from src/test/ui/derives/auxiliary/derive-marker-tricky.rs rename to tests/ui/derives/auxiliary/derive-marker-tricky.rs diff --git a/src/test/ui/derives/clone-debug-dead-code-in-the-same-struct.rs b/tests/ui/derives/clone-debug-dead-code-in-the-same-struct.rs similarity index 100% rename from src/test/ui/derives/clone-debug-dead-code-in-the-same-struct.rs rename to tests/ui/derives/clone-debug-dead-code-in-the-same-struct.rs diff --git a/src/test/ui/derives/clone-debug-dead-code-in-the-same-struct.stderr b/tests/ui/derives/clone-debug-dead-code-in-the-same-struct.stderr similarity index 100% rename from src/test/ui/derives/clone-debug-dead-code-in-the-same-struct.stderr rename to tests/ui/derives/clone-debug-dead-code-in-the-same-struct.stderr diff --git a/src/test/ui/derives/clone-debug-dead-code.rs b/tests/ui/derives/clone-debug-dead-code.rs similarity index 100% rename from src/test/ui/derives/clone-debug-dead-code.rs rename to tests/ui/derives/clone-debug-dead-code.rs diff --git a/src/test/ui/derives/clone-debug-dead-code.stderr b/tests/ui/derives/clone-debug-dead-code.stderr similarity index 100% rename from src/test/ui/derives/clone-debug-dead-code.stderr rename to tests/ui/derives/clone-debug-dead-code.stderr diff --git a/src/test/ui/derives/derive-Debug-use-ufcs-struct.rs b/tests/ui/derives/derive-Debug-use-ufcs-struct.rs similarity index 100% rename from src/test/ui/derives/derive-Debug-use-ufcs-struct.rs rename to tests/ui/derives/derive-Debug-use-ufcs-struct.rs diff --git a/src/test/ui/derives/derive-Debug-use-ufcs-tuple.rs b/tests/ui/derives/derive-Debug-use-ufcs-tuple.rs similarity index 100% rename from src/test/ui/derives/derive-Debug-use-ufcs-tuple.rs rename to tests/ui/derives/derive-Debug-use-ufcs-tuple.rs diff --git a/src/test/ui/derives/derive-assoc-type-not-impl.rs b/tests/ui/derives/derive-assoc-type-not-impl.rs similarity index 100% rename from src/test/ui/derives/derive-assoc-type-not-impl.rs rename to tests/ui/derives/derive-assoc-type-not-impl.rs diff --git a/src/test/ui/derives/derive-assoc-type-not-impl.stderr b/tests/ui/derives/derive-assoc-type-not-impl.stderr similarity index 100% rename from src/test/ui/derives/derive-assoc-type-not-impl.stderr rename to tests/ui/derives/derive-assoc-type-not-impl.stderr diff --git a/src/test/ui/derives/derive-deadlock.rs b/tests/ui/derives/derive-deadlock.rs similarity index 100% rename from src/test/ui/derives/derive-deadlock.rs rename to tests/ui/derives/derive-deadlock.rs diff --git a/src/test/ui/derives/derive-deadlock.stderr b/tests/ui/derives/derive-deadlock.stderr similarity index 100% rename from src/test/ui/derives/derive-deadlock.stderr rename to tests/ui/derives/derive-deadlock.stderr diff --git a/src/test/ui/derives/derive-hygiene.rs b/tests/ui/derives/derive-hygiene.rs similarity index 100% rename from src/test/ui/derives/derive-hygiene.rs rename to tests/ui/derives/derive-hygiene.rs diff --git a/src/test/ui/derives/derive-macro-const-default.rs b/tests/ui/derives/derive-macro-const-default.rs similarity index 100% rename from src/test/ui/derives/derive-macro-const-default.rs rename to tests/ui/derives/derive-macro-const-default.rs diff --git a/src/test/ui/derives/derive-marker-tricky.rs b/tests/ui/derives/derive-marker-tricky.rs similarity index 100% rename from src/test/ui/derives/derive-marker-tricky.rs rename to tests/ui/derives/derive-marker-tricky.rs diff --git a/src/test/ui/derives/derive-multiple-with-packed.rs b/tests/ui/derives/derive-multiple-with-packed.rs similarity index 100% rename from src/test/ui/derives/derive-multiple-with-packed.rs rename to tests/ui/derives/derive-multiple-with-packed.rs diff --git a/src/test/ui/derives/derive-on-trait-item-or-impl-item.rs b/tests/ui/derives/derive-on-trait-item-or-impl-item.rs similarity index 100% rename from src/test/ui/derives/derive-on-trait-item-or-impl-item.rs rename to tests/ui/derives/derive-on-trait-item-or-impl-item.rs diff --git a/src/test/ui/derives/derive-on-trait-item-or-impl-item.stderr b/tests/ui/derives/derive-on-trait-item-or-impl-item.stderr similarity index 100% rename from src/test/ui/derives/derive-on-trait-item-or-impl-item.stderr rename to tests/ui/derives/derive-on-trait-item-or-impl-item.stderr diff --git a/src/test/ui/derives/derive-partial-ord.rs b/tests/ui/derives/derive-partial-ord.rs similarity index 100% rename from src/test/ui/derives/derive-partial-ord.rs rename to tests/ui/derives/derive-partial-ord.rs diff --git a/src/test/ui/derives/derive-renamed.rs b/tests/ui/derives/derive-renamed.rs similarity index 100% rename from src/test/ui/derives/derive-renamed.rs rename to tests/ui/derives/derive-renamed.rs diff --git a/src/test/ui/derives/derives-span-Clone-enum-struct-variant.rs b/tests/ui/derives/derives-span-Clone-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-Clone-enum-struct-variant.rs rename to tests/ui/derives/derives-span-Clone-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-Clone-enum-struct-variant.stderr b/tests/ui/derives/derives-span-Clone-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Clone-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-Clone-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-Clone-enum.rs b/tests/ui/derives/derives-span-Clone-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-Clone-enum.rs rename to tests/ui/derives/derives-span-Clone-enum.rs diff --git a/src/test/ui/derives/derives-span-Clone-enum.stderr b/tests/ui/derives/derives-span-Clone-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Clone-enum.stderr rename to tests/ui/derives/derives-span-Clone-enum.stderr diff --git a/src/test/ui/derives/derives-span-Clone-struct.rs b/tests/ui/derives/derives-span-Clone-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Clone-struct.rs rename to tests/ui/derives/derives-span-Clone-struct.rs diff --git a/src/test/ui/derives/derives-span-Clone-struct.stderr b/tests/ui/derives/derives-span-Clone-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Clone-struct.stderr rename to tests/ui/derives/derives-span-Clone-struct.stderr diff --git a/src/test/ui/derives/derives-span-Clone-tuple-struct.rs b/tests/ui/derives/derives-span-Clone-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Clone-tuple-struct.rs rename to tests/ui/derives/derives-span-Clone-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Clone-tuple-struct.stderr b/tests/ui/derives/derives-span-Clone-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Clone-tuple-struct.stderr rename to tests/ui/derives/derives-span-Clone-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-Debug-enum-struct-variant.rs b/tests/ui/derives/derives-span-Debug-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-Debug-enum-struct-variant.rs rename to tests/ui/derives/derives-span-Debug-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-Debug-enum-struct-variant.stderr b/tests/ui/derives/derives-span-Debug-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Debug-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-Debug-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-Debug-enum.rs b/tests/ui/derives/derives-span-Debug-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-Debug-enum.rs rename to tests/ui/derives/derives-span-Debug-enum.rs diff --git a/src/test/ui/derives/derives-span-Debug-enum.stderr b/tests/ui/derives/derives-span-Debug-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Debug-enum.stderr rename to tests/ui/derives/derives-span-Debug-enum.stderr diff --git a/src/test/ui/derives/derives-span-Debug-struct.rs b/tests/ui/derives/derives-span-Debug-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Debug-struct.rs rename to tests/ui/derives/derives-span-Debug-struct.rs diff --git a/src/test/ui/derives/derives-span-Debug-struct.stderr b/tests/ui/derives/derives-span-Debug-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Debug-struct.stderr rename to tests/ui/derives/derives-span-Debug-struct.stderr diff --git a/src/test/ui/derives/derives-span-Debug-tuple-struct.rs b/tests/ui/derives/derives-span-Debug-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Debug-tuple-struct.rs rename to tests/ui/derives/derives-span-Debug-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Debug-tuple-struct.stderr b/tests/ui/derives/derives-span-Debug-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Debug-tuple-struct.stderr rename to tests/ui/derives/derives-span-Debug-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-Default-struct.rs b/tests/ui/derives/derives-span-Default-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Default-struct.rs rename to tests/ui/derives/derives-span-Default-struct.rs diff --git a/src/test/ui/derives/derives-span-Default-struct.stderr b/tests/ui/derives/derives-span-Default-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Default-struct.stderr rename to tests/ui/derives/derives-span-Default-struct.stderr diff --git a/src/test/ui/derives/derives-span-Default-tuple-struct.rs b/tests/ui/derives/derives-span-Default-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Default-tuple-struct.rs rename to tests/ui/derives/derives-span-Default-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Default-tuple-struct.stderr b/tests/ui/derives/derives-span-Default-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Default-tuple-struct.stderr rename to tests/ui/derives/derives-span-Default-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-Eq-enum-struct-variant.rs b/tests/ui/derives/derives-span-Eq-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-Eq-enum-struct-variant.rs rename to tests/ui/derives/derives-span-Eq-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-Eq-enum-struct-variant.stderr b/tests/ui/derives/derives-span-Eq-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Eq-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-Eq-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-Eq-enum.rs b/tests/ui/derives/derives-span-Eq-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-Eq-enum.rs rename to tests/ui/derives/derives-span-Eq-enum.rs diff --git a/src/test/ui/derives/derives-span-Eq-enum.stderr b/tests/ui/derives/derives-span-Eq-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Eq-enum.stderr rename to tests/ui/derives/derives-span-Eq-enum.stderr diff --git a/src/test/ui/derives/derives-span-Eq-struct.rs b/tests/ui/derives/derives-span-Eq-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Eq-struct.rs rename to tests/ui/derives/derives-span-Eq-struct.rs diff --git a/src/test/ui/derives/derives-span-Eq-struct.stderr b/tests/ui/derives/derives-span-Eq-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Eq-struct.stderr rename to tests/ui/derives/derives-span-Eq-struct.stderr diff --git a/src/test/ui/derives/derives-span-Eq-tuple-struct.rs b/tests/ui/derives/derives-span-Eq-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Eq-tuple-struct.rs rename to tests/ui/derives/derives-span-Eq-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Eq-tuple-struct.stderr b/tests/ui/derives/derives-span-Eq-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Eq-tuple-struct.stderr rename to tests/ui/derives/derives-span-Eq-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-Hash-enum-struct-variant.rs b/tests/ui/derives/derives-span-Hash-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-Hash-enum-struct-variant.rs rename to tests/ui/derives/derives-span-Hash-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-Hash-enum-struct-variant.stderr b/tests/ui/derives/derives-span-Hash-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Hash-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-Hash-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-Hash-enum.rs b/tests/ui/derives/derives-span-Hash-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-Hash-enum.rs rename to tests/ui/derives/derives-span-Hash-enum.rs diff --git a/src/test/ui/derives/derives-span-Hash-enum.stderr b/tests/ui/derives/derives-span-Hash-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Hash-enum.stderr rename to tests/ui/derives/derives-span-Hash-enum.stderr diff --git a/src/test/ui/derives/derives-span-Hash-struct.rs b/tests/ui/derives/derives-span-Hash-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Hash-struct.rs rename to tests/ui/derives/derives-span-Hash-struct.rs diff --git a/src/test/ui/derives/derives-span-Hash-struct.stderr b/tests/ui/derives/derives-span-Hash-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Hash-struct.stderr rename to tests/ui/derives/derives-span-Hash-struct.stderr diff --git a/src/test/ui/derives/derives-span-Hash-tuple-struct.rs b/tests/ui/derives/derives-span-Hash-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Hash-tuple-struct.rs rename to tests/ui/derives/derives-span-Hash-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Hash-tuple-struct.stderr b/tests/ui/derives/derives-span-Hash-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Hash-tuple-struct.stderr rename to tests/ui/derives/derives-span-Hash-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-Ord-enum-struct-variant.rs b/tests/ui/derives/derives-span-Ord-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-Ord-enum-struct-variant.rs rename to tests/ui/derives/derives-span-Ord-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-Ord-enum-struct-variant.stderr b/tests/ui/derives/derives-span-Ord-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Ord-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-Ord-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-Ord-enum.rs b/tests/ui/derives/derives-span-Ord-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-Ord-enum.rs rename to tests/ui/derives/derives-span-Ord-enum.rs diff --git a/src/test/ui/derives/derives-span-Ord-enum.stderr b/tests/ui/derives/derives-span-Ord-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Ord-enum.stderr rename to tests/ui/derives/derives-span-Ord-enum.stderr diff --git a/src/test/ui/derives/derives-span-Ord-struct.rs b/tests/ui/derives/derives-span-Ord-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Ord-struct.rs rename to tests/ui/derives/derives-span-Ord-struct.rs diff --git a/src/test/ui/derives/derives-span-Ord-struct.stderr b/tests/ui/derives/derives-span-Ord-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Ord-struct.stderr rename to tests/ui/derives/derives-span-Ord-struct.stderr diff --git a/src/test/ui/derives/derives-span-Ord-tuple-struct.rs b/tests/ui/derives/derives-span-Ord-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-Ord-tuple-struct.rs rename to tests/ui/derives/derives-span-Ord-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-Ord-tuple-struct.stderr b/tests/ui/derives/derives-span-Ord-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-Ord-tuple-struct.stderr rename to tests/ui/derives/derives-span-Ord-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-PartialEq-enum-struct-variant.rs b/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-enum-struct-variant.rs rename to tests/ui/derives/derives-span-PartialEq-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr b/tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-PartialEq-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-PartialEq-enum.rs b/tests/ui/derives/derives-span-PartialEq-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-enum.rs rename to tests/ui/derives/derives-span-PartialEq-enum.rs diff --git a/src/test/ui/derives/derives-span-PartialEq-enum.stderr b/tests/ui/derives/derives-span-PartialEq-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-enum.stderr rename to tests/ui/derives/derives-span-PartialEq-enum.stderr diff --git a/src/test/ui/derives/derives-span-PartialEq-struct.rs b/tests/ui/derives/derives-span-PartialEq-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-struct.rs rename to tests/ui/derives/derives-span-PartialEq-struct.rs diff --git a/src/test/ui/derives/derives-span-PartialEq-struct.stderr b/tests/ui/derives/derives-span-PartialEq-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-struct.stderr rename to tests/ui/derives/derives-span-PartialEq-struct.stderr diff --git a/src/test/ui/derives/derives-span-PartialEq-tuple-struct.rs b/tests/ui/derives/derives-span-PartialEq-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-tuple-struct.rs rename to tests/ui/derives/derives-span-PartialEq-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-PartialEq-tuple-struct.stderr b/tests/ui/derives/derives-span-PartialEq-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialEq-tuple-struct.stderr rename to tests/ui/derives/derives-span-PartialEq-tuple-struct.stderr diff --git a/src/test/ui/derives/derives-span-PartialOrd-enum-struct-variant.rs b/tests/ui/derives/derives-span-PartialOrd-enum-struct-variant.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-enum-struct-variant.rs rename to tests/ui/derives/derives-span-PartialOrd-enum-struct-variant.rs diff --git a/src/test/ui/derives/derives-span-PartialOrd-enum-struct-variant.stderr b/tests/ui/derives/derives-span-PartialOrd-enum-struct-variant.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-enum-struct-variant.stderr rename to tests/ui/derives/derives-span-PartialOrd-enum-struct-variant.stderr diff --git a/src/test/ui/derives/derives-span-PartialOrd-enum.rs b/tests/ui/derives/derives-span-PartialOrd-enum.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-enum.rs rename to tests/ui/derives/derives-span-PartialOrd-enum.rs diff --git a/src/test/ui/derives/derives-span-PartialOrd-enum.stderr b/tests/ui/derives/derives-span-PartialOrd-enum.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-enum.stderr rename to tests/ui/derives/derives-span-PartialOrd-enum.stderr diff --git a/src/test/ui/derives/derives-span-PartialOrd-struct.rs b/tests/ui/derives/derives-span-PartialOrd-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-struct.rs rename to tests/ui/derives/derives-span-PartialOrd-struct.rs diff --git a/src/test/ui/derives/derives-span-PartialOrd-struct.stderr b/tests/ui/derives/derives-span-PartialOrd-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-struct.stderr rename to tests/ui/derives/derives-span-PartialOrd-struct.stderr diff --git a/src/test/ui/derives/derives-span-PartialOrd-tuple-struct.rs b/tests/ui/derives/derives-span-PartialOrd-tuple-struct.rs similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-tuple-struct.rs rename to tests/ui/derives/derives-span-PartialOrd-tuple-struct.rs diff --git a/src/test/ui/derives/derives-span-PartialOrd-tuple-struct.stderr b/tests/ui/derives/derives-span-PartialOrd-tuple-struct.stderr similarity index 100% rename from src/test/ui/derives/derives-span-PartialOrd-tuple-struct.stderr rename to tests/ui/derives/derives-span-PartialOrd-tuple-struct.stderr diff --git a/src/test/ui/derives/deriving-bounds.rs b/tests/ui/derives/deriving-bounds.rs similarity index 100% rename from src/test/ui/derives/deriving-bounds.rs rename to tests/ui/derives/deriving-bounds.rs diff --git a/src/test/ui/derives/deriving-bounds.stderr b/tests/ui/derives/deriving-bounds.stderr similarity index 100% rename from src/test/ui/derives/deriving-bounds.stderr rename to tests/ui/derives/deriving-bounds.stderr diff --git a/src/test/ui/derives/deriving-copyclone.rs b/tests/ui/derives/deriving-copyclone.rs similarity index 100% rename from src/test/ui/derives/deriving-copyclone.rs rename to tests/ui/derives/deriving-copyclone.rs diff --git a/src/test/ui/derives/deriving-copyclone.stderr b/tests/ui/derives/deriving-copyclone.stderr similarity index 100% rename from src/test/ui/derives/deriving-copyclone.stderr rename to tests/ui/derives/deriving-copyclone.stderr diff --git a/src/test/ui/derives/deriving-meta-empty-trait-list.rs b/tests/ui/derives/deriving-meta-empty-trait-list.rs similarity index 100% rename from src/test/ui/derives/deriving-meta-empty-trait-list.rs rename to tests/ui/derives/deriving-meta-empty-trait-list.rs diff --git a/src/test/ui/derives/deriving-meta-unknown-trait.rs b/tests/ui/derives/deriving-meta-unknown-trait.rs similarity index 100% rename from src/test/ui/derives/deriving-meta-unknown-trait.rs rename to tests/ui/derives/deriving-meta-unknown-trait.rs diff --git a/src/test/ui/derives/deriving-meta-unknown-trait.stderr b/tests/ui/derives/deriving-meta-unknown-trait.stderr similarity index 100% rename from src/test/ui/derives/deriving-meta-unknown-trait.stderr rename to tests/ui/derives/deriving-meta-unknown-trait.stderr diff --git a/src/test/ui/derives/deriving-no-inner-impl-error-message.rs b/tests/ui/derives/deriving-no-inner-impl-error-message.rs similarity index 100% rename from src/test/ui/derives/deriving-no-inner-impl-error-message.rs rename to tests/ui/derives/deriving-no-inner-impl-error-message.rs diff --git a/src/test/ui/derives/deriving-no-inner-impl-error-message.stderr b/tests/ui/derives/deriving-no-inner-impl-error-message.stderr similarity index 100% rename from src/test/ui/derives/deriving-no-inner-impl-error-message.stderr rename to tests/ui/derives/deriving-no-inner-impl-error-message.stderr diff --git a/src/test/ui/derives/deriving-non-type.rs b/tests/ui/derives/deriving-non-type.rs similarity index 100% rename from src/test/ui/derives/deriving-non-type.rs rename to tests/ui/derives/deriving-non-type.rs diff --git a/src/test/ui/derives/deriving-non-type.stderr b/tests/ui/derives/deriving-non-type.stderr similarity index 100% rename from src/test/ui/derives/deriving-non-type.stderr rename to tests/ui/derives/deriving-non-type.stderr diff --git a/src/test/ui/derives/deriving-primitive.rs b/tests/ui/derives/deriving-primitive.rs similarity index 100% rename from src/test/ui/derives/deriving-primitive.rs rename to tests/ui/derives/deriving-primitive.rs diff --git a/src/test/ui/derives/deriving-primitive.stderr b/tests/ui/derives/deriving-primitive.stderr similarity index 100% rename from src/test/ui/derives/deriving-primitive.stderr rename to tests/ui/derives/deriving-primitive.stderr diff --git a/src/test/ui/derives/deriving-with-repr-packed.rs b/tests/ui/derives/deriving-with-repr-packed.rs similarity index 100% rename from src/test/ui/derives/deriving-with-repr-packed.rs rename to tests/ui/derives/deriving-with-repr-packed.rs diff --git a/src/test/ui/derives/deriving-with-repr-packed.stderr b/tests/ui/derives/deriving-with-repr-packed.stderr similarity index 100% rename from src/test/ui/derives/deriving-with-repr-packed.stderr rename to tests/ui/derives/deriving-with-repr-packed.stderr diff --git a/src/test/ui/derives/issue-36617.rs b/tests/ui/derives/issue-36617.rs similarity index 100% rename from src/test/ui/derives/issue-36617.rs rename to tests/ui/derives/issue-36617.rs diff --git a/src/test/ui/derives/issue-36617.stderr b/tests/ui/derives/issue-36617.stderr similarity index 100% rename from src/test/ui/derives/issue-36617.stderr rename to tests/ui/derives/issue-36617.stderr diff --git a/src/test/ui/derives/issue-43023.rs b/tests/ui/derives/issue-43023.rs similarity index 100% rename from src/test/ui/derives/issue-43023.rs rename to tests/ui/derives/issue-43023.rs diff --git a/src/test/ui/derives/issue-43023.stderr b/tests/ui/derives/issue-43023.stderr similarity index 100% rename from src/test/ui/derives/issue-43023.stderr rename to tests/ui/derives/issue-43023.stderr diff --git a/src/test/ui/derives/issue-91492.rs b/tests/ui/derives/issue-91492.rs similarity index 100% rename from src/test/ui/derives/issue-91492.rs rename to tests/ui/derives/issue-91492.rs diff --git a/src/test/ui/derives/issue-91492.stderr b/tests/ui/derives/issue-91492.stderr similarity index 100% rename from src/test/ui/derives/issue-91492.stderr rename to tests/ui/derives/issue-91492.stderr diff --git a/src/test/ui/derives/issue-91550.rs b/tests/ui/derives/issue-91550.rs similarity index 100% rename from src/test/ui/derives/issue-91550.rs rename to tests/ui/derives/issue-91550.rs diff --git a/src/test/ui/derives/issue-91550.stderr b/tests/ui/derives/issue-91550.stderr similarity index 100% rename from src/test/ui/derives/issue-91550.stderr rename to tests/ui/derives/issue-91550.stderr diff --git a/src/test/ui/derives/issue-97343.rs b/tests/ui/derives/issue-97343.rs similarity index 100% rename from src/test/ui/derives/issue-97343.rs rename to tests/ui/derives/issue-97343.rs diff --git a/src/test/ui/derives/issue-97343.stderr b/tests/ui/derives/issue-97343.stderr similarity index 100% rename from src/test/ui/derives/issue-97343.stderr rename to tests/ui/derives/issue-97343.stderr diff --git a/src/test/ui/deriving/auxiliary/derive-no-std.rs b/tests/ui/deriving/auxiliary/derive-no-std.rs similarity index 100% rename from src/test/ui/deriving/auxiliary/derive-no-std.rs rename to tests/ui/deriving/auxiliary/derive-no-std.rs diff --git a/src/test/ui/deriving/derive-no-std.rs b/tests/ui/deriving/derive-no-std.rs similarity index 100% rename from src/test/ui/deriving/derive-no-std.rs rename to tests/ui/deriving/derive-no-std.rs diff --git a/src/test/ui/deriving/derive-partialord-correctness.rs b/tests/ui/deriving/derive-partialord-correctness.rs similarity index 100% rename from src/test/ui/deriving/derive-partialord-correctness.rs rename to tests/ui/deriving/derive-partialord-correctness.rs diff --git a/src/test/ui/deriving/deriving-all-codegen.rs b/tests/ui/deriving/deriving-all-codegen.rs similarity index 100% rename from src/test/ui/deriving/deriving-all-codegen.rs rename to tests/ui/deriving/deriving-all-codegen.rs diff --git a/src/test/ui/deriving/deriving-all-codegen.stdout b/tests/ui/deriving/deriving-all-codegen.stdout similarity index 100% rename from src/test/ui/deriving/deriving-all-codegen.stdout rename to tests/ui/deriving/deriving-all-codegen.stdout diff --git a/src/test/ui/deriving/deriving-associated-types.rs b/tests/ui/deriving/deriving-associated-types.rs similarity index 100% rename from src/test/ui/deriving/deriving-associated-types.rs rename to tests/ui/deriving/deriving-associated-types.rs diff --git a/src/test/ui/deriving/deriving-bounds.rs b/tests/ui/deriving/deriving-bounds.rs similarity index 100% rename from src/test/ui/deriving/deriving-bounds.rs rename to tests/ui/deriving/deriving-bounds.rs diff --git a/src/test/ui/deriving/deriving-clone-array.rs b/tests/ui/deriving/deriving-clone-array.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-array.rs rename to tests/ui/deriving/deriving-clone-array.rs diff --git a/src/test/ui/deriving/deriving-clone-enum.rs b/tests/ui/deriving/deriving-clone-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-enum.rs rename to tests/ui/deriving/deriving-clone-enum.rs diff --git a/src/test/ui/deriving/deriving-clone-generic-enum.rs b/tests/ui/deriving/deriving-clone-generic-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-generic-enum.rs rename to tests/ui/deriving/deriving-clone-generic-enum.rs diff --git a/src/test/ui/deriving/deriving-clone-generic-struct.rs b/tests/ui/deriving/deriving-clone-generic-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-generic-struct.rs rename to tests/ui/deriving/deriving-clone-generic-struct.rs diff --git a/src/test/ui/deriving/deriving-clone-generic-tuple-struct.rs b/tests/ui/deriving/deriving-clone-generic-tuple-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-generic-tuple-struct.rs rename to tests/ui/deriving/deriving-clone-generic-tuple-struct.rs diff --git a/src/test/ui/deriving/deriving-clone-struct.rs b/tests/ui/deriving/deriving-clone-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-struct.rs rename to tests/ui/deriving/deriving-clone-struct.rs diff --git a/src/test/ui/deriving/deriving-clone-tuple-struct.rs b/tests/ui/deriving/deriving-clone-tuple-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-clone-tuple-struct.rs rename to tests/ui/deriving/deriving-clone-tuple-struct.rs diff --git a/src/test/ui/deriving/deriving-cmp-generic-enum.rs b/tests/ui/deriving/deriving-cmp-generic-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-cmp-generic-enum.rs rename to tests/ui/deriving/deriving-cmp-generic-enum.rs diff --git a/src/test/ui/deriving/deriving-cmp-generic-struct-enum.rs b/tests/ui/deriving/deriving-cmp-generic-struct-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-cmp-generic-struct-enum.rs rename to tests/ui/deriving/deriving-cmp-generic-struct-enum.rs diff --git a/src/test/ui/deriving/deriving-cmp-generic-struct.rs b/tests/ui/deriving/deriving-cmp-generic-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-cmp-generic-struct.rs rename to tests/ui/deriving/deriving-cmp-generic-struct.rs diff --git a/src/test/ui/deriving/deriving-cmp-generic-tuple-struct.rs b/tests/ui/deriving/deriving-cmp-generic-tuple-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-cmp-generic-tuple-struct.rs rename to tests/ui/deriving/deriving-cmp-generic-tuple-struct.rs diff --git a/src/test/ui/deriving/deriving-cmp-shortcircuit.rs b/tests/ui/deriving/deriving-cmp-shortcircuit.rs similarity index 100% rename from src/test/ui/deriving/deriving-cmp-shortcircuit.rs rename to tests/ui/deriving/deriving-cmp-shortcircuit.rs diff --git a/src/test/ui/deriving/deriving-copyclone.rs b/tests/ui/deriving/deriving-copyclone.rs similarity index 100% rename from src/test/ui/deriving/deriving-copyclone.rs rename to tests/ui/deriving/deriving-copyclone.rs diff --git a/src/test/ui/deriving/deriving-default-box.rs b/tests/ui/deriving/deriving-default-box.rs similarity index 100% rename from src/test/ui/deriving/deriving-default-box.rs rename to tests/ui/deriving/deriving-default-box.rs diff --git a/src/test/ui/deriving/deriving-default-enum.rs b/tests/ui/deriving/deriving-default-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-default-enum.rs rename to tests/ui/deriving/deriving-default-enum.rs diff --git a/src/test/ui/deriving/deriving-enum-single-variant.rs b/tests/ui/deriving/deriving-enum-single-variant.rs similarity index 100% rename from src/test/ui/deriving/deriving-enum-single-variant.rs rename to tests/ui/deriving/deriving-enum-single-variant.rs diff --git a/src/test/ui/deriving/deriving-eq-ord-boxed-slice.rs b/tests/ui/deriving/deriving-eq-ord-boxed-slice.rs similarity index 100% rename from src/test/ui/deriving/deriving-eq-ord-boxed-slice.rs rename to tests/ui/deriving/deriving-eq-ord-boxed-slice.rs diff --git a/src/test/ui/deriving/deriving-hash.rs b/tests/ui/deriving/deriving-hash.rs similarity index 100% rename from src/test/ui/deriving/deriving-hash.rs rename to tests/ui/deriving/deriving-hash.rs diff --git a/src/test/ui/deriving/deriving-in-fn.rs b/tests/ui/deriving/deriving-in-fn.rs similarity index 100% rename from src/test/ui/deriving/deriving-in-fn.rs rename to tests/ui/deriving/deriving-in-fn.rs diff --git a/src/test/ui/deriving/deriving-in-macro.rs b/tests/ui/deriving/deriving-in-macro.rs similarity index 100% rename from src/test/ui/deriving/deriving-in-macro.rs rename to tests/ui/deriving/deriving-in-macro.rs diff --git a/src/test/ui/deriving/deriving-meta-multiple.rs b/tests/ui/deriving/deriving-meta-multiple.rs similarity index 100% rename from src/test/ui/deriving/deriving-meta-multiple.rs rename to tests/ui/deriving/deriving-meta-multiple.rs diff --git a/src/test/ui/deriving/deriving-meta.rs b/tests/ui/deriving/deriving-meta.rs similarity index 100% rename from src/test/ui/deriving/deriving-meta.rs rename to tests/ui/deriving/deriving-meta.rs diff --git a/src/test/ui/deriving/deriving-self-lifetime-totalord-totaleq.rs b/tests/ui/deriving/deriving-self-lifetime-totalord-totaleq.rs similarity index 100% rename from src/test/ui/deriving/deriving-self-lifetime-totalord-totaleq.rs rename to tests/ui/deriving/deriving-self-lifetime-totalord-totaleq.rs diff --git a/src/test/ui/deriving/deriving-show-2.rs b/tests/ui/deriving/deriving-show-2.rs similarity index 100% rename from src/test/ui/deriving/deriving-show-2.rs rename to tests/ui/deriving/deriving-show-2.rs diff --git a/src/test/ui/deriving/deriving-show.rs b/tests/ui/deriving/deriving-show.rs similarity index 100% rename from src/test/ui/deriving/deriving-show.rs rename to tests/ui/deriving/deriving-show.rs diff --git a/src/test/ui/deriving/deriving-via-extension-c-enum.rs b/tests/ui/deriving/deriving-via-extension-c-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-c-enum.rs rename to tests/ui/deriving/deriving-via-extension-c-enum.rs diff --git a/src/test/ui/deriving/deriving-via-extension-enum.rs b/tests/ui/deriving/deriving-via-extension-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-enum.rs rename to tests/ui/deriving/deriving-via-extension-enum.rs diff --git a/src/test/ui/deriving/deriving-via-extension-hash-enum.rs b/tests/ui/deriving/deriving-via-extension-hash-enum.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-hash-enum.rs rename to tests/ui/deriving/deriving-via-extension-hash-enum.rs diff --git a/src/test/ui/deriving/deriving-via-extension-hash-struct.rs b/tests/ui/deriving/deriving-via-extension-hash-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-hash-struct.rs rename to tests/ui/deriving/deriving-via-extension-hash-struct.rs diff --git a/src/test/ui/deriving/deriving-via-extension-struct-empty.rs b/tests/ui/deriving/deriving-via-extension-struct-empty.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-struct-empty.rs rename to tests/ui/deriving/deriving-via-extension-struct-empty.rs diff --git a/src/test/ui/deriving/deriving-via-extension-struct-like-enum-variant.rs b/tests/ui/deriving/deriving-via-extension-struct-like-enum-variant.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-struct-like-enum-variant.rs rename to tests/ui/deriving/deriving-via-extension-struct-like-enum-variant.rs diff --git a/src/test/ui/deriving/deriving-via-extension-struct-tuple.rs b/tests/ui/deriving/deriving-via-extension-struct-tuple.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-struct-tuple.rs rename to tests/ui/deriving/deriving-via-extension-struct-tuple.rs diff --git a/src/test/ui/deriving/deriving-via-extension-struct.rs b/tests/ui/deriving/deriving-via-extension-struct.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-struct.rs rename to tests/ui/deriving/deriving-via-extension-struct.rs diff --git a/src/test/ui/deriving/deriving-via-extension-type-params.rs b/tests/ui/deriving/deriving-via-extension-type-params.rs similarity index 100% rename from src/test/ui/deriving/deriving-via-extension-type-params.rs rename to tests/ui/deriving/deriving-via-extension-type-params.rs diff --git a/src/test/ui/deriving/deriving-with-helper.rs b/tests/ui/deriving/deriving-with-helper.rs similarity index 100% rename from src/test/ui/deriving/deriving-with-helper.rs rename to tests/ui/deriving/deriving-with-helper.rs diff --git a/src/test/ui/deriving/deriving-with-repr-packed.rs b/tests/ui/deriving/deriving-with-repr-packed.rs similarity index 100% rename from src/test/ui/deriving/deriving-with-repr-packed.rs rename to tests/ui/deriving/deriving-with-repr-packed.rs diff --git a/src/test/ui/deriving/issue-103157.rs b/tests/ui/deriving/issue-103157.rs similarity index 100% rename from src/test/ui/deriving/issue-103157.rs rename to tests/ui/deriving/issue-103157.rs diff --git a/src/test/ui/deriving/issue-103157.stderr b/tests/ui/deriving/issue-103157.stderr similarity index 100% rename from src/test/ui/deriving/issue-103157.stderr rename to tests/ui/deriving/issue-103157.stderr diff --git a/src/test/ui/deriving/issue-105101.rs b/tests/ui/deriving/issue-105101.rs similarity index 100% rename from src/test/ui/deriving/issue-105101.rs rename to tests/ui/deriving/issue-105101.rs diff --git a/src/test/ui/deriving/issue-105101.stderr b/tests/ui/deriving/issue-105101.stderr similarity index 100% rename from src/test/ui/deriving/issue-105101.stderr rename to tests/ui/deriving/issue-105101.stderr diff --git a/src/test/ui/deriving/issue-19358.rs b/tests/ui/deriving/issue-19358.rs similarity index 100% rename from src/test/ui/deriving/issue-19358.rs rename to tests/ui/deriving/issue-19358.rs diff --git a/src/test/ui/deriving/issue-3935.rs b/tests/ui/deriving/issue-3935.rs similarity index 100% rename from src/test/ui/deriving/issue-3935.rs rename to tests/ui/deriving/issue-3935.rs diff --git a/src/test/ui/deriving/issue-58319.rs b/tests/ui/deriving/issue-58319.rs similarity index 100% rename from src/test/ui/deriving/issue-58319.rs rename to tests/ui/deriving/issue-58319.rs diff --git a/src/test/ui/deriving/issue-6341.rs b/tests/ui/deriving/issue-6341.rs similarity index 100% rename from src/test/ui/deriving/issue-6341.rs rename to tests/ui/deriving/issue-6341.rs diff --git a/src/test/ui/deriving/issue-89188-gat-hrtb.rs b/tests/ui/deriving/issue-89188-gat-hrtb.rs similarity index 100% rename from src/test/ui/deriving/issue-89188-gat-hrtb.rs rename to tests/ui/deriving/issue-89188-gat-hrtb.rs diff --git a/src/test/ui/dest-prop/skeptic-miscompile.rs b/tests/ui/dest-prop/skeptic-miscompile.rs similarity index 100% rename from src/test/ui/dest-prop/skeptic-miscompile.rs rename to tests/ui/dest-prop/skeptic-miscompile.rs diff --git a/src/test/ui/destructure-trait-ref.rs b/tests/ui/destructure-trait-ref.rs similarity index 100% rename from src/test/ui/destructure-trait-ref.rs rename to tests/ui/destructure-trait-ref.rs diff --git a/src/test/ui/destructure-trait-ref.stderr b/tests/ui/destructure-trait-ref.stderr similarity index 100% rename from src/test/ui/destructure-trait-ref.stderr rename to tests/ui/destructure-trait-ref.stderr diff --git a/src/test/ui/destructuring-assignment/bad-expr-lhs.rs b/tests/ui/destructuring-assignment/bad-expr-lhs.rs similarity index 100% rename from src/test/ui/destructuring-assignment/bad-expr-lhs.rs rename to tests/ui/destructuring-assignment/bad-expr-lhs.rs diff --git a/src/test/ui/destructuring-assignment/bad-expr-lhs.stderr b/tests/ui/destructuring-assignment/bad-expr-lhs.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/bad-expr-lhs.stderr rename to tests/ui/destructuring-assignment/bad-expr-lhs.stderr diff --git a/src/test/ui/destructuring-assignment/default-match-bindings-forbidden.rs b/tests/ui/destructuring-assignment/default-match-bindings-forbidden.rs similarity index 100% rename from src/test/ui/destructuring-assignment/default-match-bindings-forbidden.rs rename to tests/ui/destructuring-assignment/default-match-bindings-forbidden.rs diff --git a/src/test/ui/destructuring-assignment/default-match-bindings-forbidden.stderr b/tests/ui/destructuring-assignment/default-match-bindings-forbidden.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/default-match-bindings-forbidden.stderr rename to tests/ui/destructuring-assignment/default-match-bindings-forbidden.stderr diff --git a/src/test/ui/destructuring-assignment/drop-order.rs b/tests/ui/destructuring-assignment/drop-order.rs similarity index 100% rename from src/test/ui/destructuring-assignment/drop-order.rs rename to tests/ui/destructuring-assignment/drop-order.rs diff --git a/src/test/ui/destructuring-assignment/nested_destructure.rs b/tests/ui/destructuring-assignment/nested_destructure.rs similarity index 100% rename from src/test/ui/destructuring-assignment/nested_destructure.rs rename to tests/ui/destructuring-assignment/nested_destructure.rs diff --git a/src/test/ui/destructuring-assignment/note-unsupported.rs b/tests/ui/destructuring-assignment/note-unsupported.rs similarity index 100% rename from src/test/ui/destructuring-assignment/note-unsupported.rs rename to tests/ui/destructuring-assignment/note-unsupported.rs diff --git a/src/test/ui/destructuring-assignment/note-unsupported.stderr b/tests/ui/destructuring-assignment/note-unsupported.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/note-unsupported.stderr rename to tests/ui/destructuring-assignment/note-unsupported.stderr diff --git a/src/test/ui/destructuring-assignment/slice_destructure.rs b/tests/ui/destructuring-assignment/slice_destructure.rs similarity index 100% rename from src/test/ui/destructuring-assignment/slice_destructure.rs rename to tests/ui/destructuring-assignment/slice_destructure.rs diff --git a/src/test/ui/destructuring-assignment/slice_destructure_fail.rs b/tests/ui/destructuring-assignment/slice_destructure_fail.rs similarity index 100% rename from src/test/ui/destructuring-assignment/slice_destructure_fail.rs rename to tests/ui/destructuring-assignment/slice_destructure_fail.rs diff --git a/src/test/ui/destructuring-assignment/slice_destructure_fail.stderr b/tests/ui/destructuring-assignment/slice_destructure_fail.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/slice_destructure_fail.stderr rename to tests/ui/destructuring-assignment/slice_destructure_fail.stderr diff --git a/src/test/ui/destructuring-assignment/struct-or-enum-variant-path.rs b/tests/ui/destructuring-assignment/struct-or-enum-variant-path.rs similarity index 100% rename from src/test/ui/destructuring-assignment/struct-or-enum-variant-path.rs rename to tests/ui/destructuring-assignment/struct-or-enum-variant-path.rs diff --git a/src/test/ui/destructuring-assignment/struct_destructure.rs b/tests/ui/destructuring-assignment/struct_destructure.rs similarity index 100% rename from src/test/ui/destructuring-assignment/struct_destructure.rs rename to tests/ui/destructuring-assignment/struct_destructure.rs diff --git a/src/test/ui/destructuring-assignment/struct_destructure_fail.rs b/tests/ui/destructuring-assignment/struct_destructure_fail.rs similarity index 100% rename from src/test/ui/destructuring-assignment/struct_destructure_fail.rs rename to tests/ui/destructuring-assignment/struct_destructure_fail.rs diff --git a/src/test/ui/destructuring-assignment/struct_destructure_fail.stderr b/tests/ui/destructuring-assignment/struct_destructure_fail.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/struct_destructure_fail.stderr rename to tests/ui/destructuring-assignment/struct_destructure_fail.stderr diff --git a/src/test/ui/destructuring-assignment/tuple_destructure.rs b/tests/ui/destructuring-assignment/tuple_destructure.rs similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_destructure.rs rename to tests/ui/destructuring-assignment/tuple_destructure.rs diff --git a/src/test/ui/destructuring-assignment/tuple_destructure_fail.rs b/tests/ui/destructuring-assignment/tuple_destructure_fail.rs similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_destructure_fail.rs rename to tests/ui/destructuring-assignment/tuple_destructure_fail.rs diff --git a/src/test/ui/destructuring-assignment/tuple_destructure_fail.stderr b/tests/ui/destructuring-assignment/tuple_destructure_fail.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_destructure_fail.stderr rename to tests/ui/destructuring-assignment/tuple_destructure_fail.stderr diff --git a/src/test/ui/destructuring-assignment/tuple_struct_destructure.rs b/tests/ui/destructuring-assignment/tuple_struct_destructure.rs similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_struct_destructure.rs rename to tests/ui/destructuring-assignment/tuple_struct_destructure.rs diff --git a/src/test/ui/destructuring-assignment/tuple_struct_destructure_fail.rs b/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.rs similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_struct_destructure_fail.rs rename to tests/ui/destructuring-assignment/tuple_struct_destructure_fail.rs diff --git a/src/test/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr b/tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr rename to tests/ui/destructuring-assignment/tuple_struct_destructure_fail.stderr diff --git a/src/test/ui/destructuring-assignment/warn-unused-duplication.rs b/tests/ui/destructuring-assignment/warn-unused-duplication.rs similarity index 100% rename from src/test/ui/destructuring-assignment/warn-unused-duplication.rs rename to tests/ui/destructuring-assignment/warn-unused-duplication.rs diff --git a/src/test/ui/destructuring-assignment/warn-unused-duplication.stderr b/tests/ui/destructuring-assignment/warn-unused-duplication.stderr similarity index 100% rename from src/test/ui/destructuring-assignment/warn-unused-duplication.stderr rename to tests/ui/destructuring-assignment/warn-unused-duplication.stderr diff --git a/src/test/ui/diagnostic-width/flag-human.rs b/tests/ui/diagnostic-width/flag-human.rs similarity index 100% rename from src/test/ui/diagnostic-width/flag-human.rs rename to tests/ui/diagnostic-width/flag-human.rs diff --git a/src/test/ui/diagnostic-width/flag-human.stderr b/tests/ui/diagnostic-width/flag-human.stderr similarity index 100% rename from src/test/ui/diagnostic-width/flag-human.stderr rename to tests/ui/diagnostic-width/flag-human.stderr diff --git a/src/test/ui/diagnostic-width/flag-json.rs b/tests/ui/diagnostic-width/flag-json.rs similarity index 100% rename from src/test/ui/diagnostic-width/flag-json.rs rename to tests/ui/diagnostic-width/flag-json.rs diff --git a/src/test/ui/diagnostic-width/flag-json.stderr b/tests/ui/diagnostic-width/flag-json.stderr similarity index 100% rename from src/test/ui/diagnostic-width/flag-json.stderr rename to tests/ui/diagnostic-width/flag-json.stderr diff --git a/src/test/ui/diagnostic-width/long-E0308.rs b/tests/ui/diagnostic-width/long-E0308.rs similarity index 100% rename from src/test/ui/diagnostic-width/long-E0308.rs rename to tests/ui/diagnostic-width/long-E0308.rs diff --git a/src/test/ui/diagnostic-width/long-E0308.stderr b/tests/ui/diagnostic-width/long-E0308.stderr similarity index 100% rename from src/test/ui/diagnostic-width/long-E0308.stderr rename to tests/ui/diagnostic-width/long-E0308.stderr diff --git a/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs b/tests/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs similarity index 100% rename from src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs rename to tests/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs diff --git a/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr b/tests/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr similarity index 100% rename from src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr rename to tests/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming-2.rs b/tests/ui/diagnostic-width/non-whitespace-trimming-2.rs similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming-2.rs rename to tests/ui/diagnostic-width/non-whitespace-trimming-2.rs diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming-2.stderr b/tests/ui/diagnostic-width/non-whitespace-trimming-2.stderr similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming-2.stderr rename to tests/ui/diagnostic-width/non-whitespace-trimming-2.stderr diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.rs b/tests/ui/diagnostic-width/non-whitespace-trimming-unicode.rs similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.rs rename to tests/ui/diagnostic-width/non-whitespace-trimming-unicode.rs diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr b/tests/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr rename to tests/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming.rs b/tests/ui/diagnostic-width/non-whitespace-trimming.rs similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming.rs rename to tests/ui/diagnostic-width/non-whitespace-trimming.rs diff --git a/src/test/ui/diagnostic-width/non-whitespace-trimming.stderr b/tests/ui/diagnostic-width/non-whitespace-trimming.stderr similarity index 100% rename from src/test/ui/diagnostic-width/non-whitespace-trimming.stderr rename to tests/ui/diagnostic-width/non-whitespace-trimming.stderr diff --git a/src/test/ui/diagnostic-width/tabs-trimming.rs b/tests/ui/diagnostic-width/tabs-trimming.rs similarity index 100% rename from src/test/ui/diagnostic-width/tabs-trimming.rs rename to tests/ui/diagnostic-width/tabs-trimming.rs diff --git a/src/test/ui/diagnostic-width/tabs-trimming.stderr b/tests/ui/diagnostic-width/tabs-trimming.stderr similarity index 100% rename from src/test/ui/diagnostic-width/tabs-trimming.stderr rename to tests/ui/diagnostic-width/tabs-trimming.stderr diff --git a/src/test/ui/diagnostic-width/whitespace-trimming-2.rs b/tests/ui/diagnostic-width/whitespace-trimming-2.rs similarity index 100% rename from src/test/ui/diagnostic-width/whitespace-trimming-2.rs rename to tests/ui/diagnostic-width/whitespace-trimming-2.rs diff --git a/src/test/ui/diagnostic-width/whitespace-trimming-2.stderr b/tests/ui/diagnostic-width/whitespace-trimming-2.stderr similarity index 100% rename from src/test/ui/diagnostic-width/whitespace-trimming-2.stderr rename to tests/ui/diagnostic-width/whitespace-trimming-2.stderr diff --git a/src/test/ui/diagnostic-width/whitespace-trimming.rs b/tests/ui/diagnostic-width/whitespace-trimming.rs similarity index 100% rename from src/test/ui/diagnostic-width/whitespace-trimming.rs rename to tests/ui/diagnostic-width/whitespace-trimming.rs diff --git a/src/test/ui/diagnostic-width/whitespace-trimming.stderr b/tests/ui/diagnostic-width/whitespace-trimming.stderr similarity index 100% rename from src/test/ui/diagnostic-width/whitespace-trimming.stderr rename to tests/ui/diagnostic-width/whitespace-trimming.stderr diff --git a/src/test/ui/did_you_mean/E0178.rs b/tests/ui/did_you_mean/E0178.rs similarity index 100% rename from src/test/ui/did_you_mean/E0178.rs rename to tests/ui/did_you_mean/E0178.rs diff --git a/src/test/ui/did_you_mean/E0178.stderr b/tests/ui/did_you_mean/E0178.stderr similarity index 100% rename from src/test/ui/did_you_mean/E0178.stderr rename to tests/ui/did_you_mean/E0178.stderr diff --git a/src/test/ui/did_you_mean/bad-assoc-expr.rs b/tests/ui/did_you_mean/bad-assoc-expr.rs similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-expr.rs rename to tests/ui/did_you_mean/bad-assoc-expr.rs diff --git a/src/test/ui/did_you_mean/bad-assoc-expr.stderr b/tests/ui/did_you_mean/bad-assoc-expr.stderr similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-expr.stderr rename to tests/ui/did_you_mean/bad-assoc-expr.stderr diff --git a/src/test/ui/did_you_mean/bad-assoc-pat.rs b/tests/ui/did_you_mean/bad-assoc-pat.rs similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-pat.rs rename to tests/ui/did_you_mean/bad-assoc-pat.rs diff --git a/src/test/ui/did_you_mean/bad-assoc-pat.stderr b/tests/ui/did_you_mean/bad-assoc-pat.stderr similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-pat.stderr rename to tests/ui/did_you_mean/bad-assoc-pat.stderr diff --git a/src/test/ui/did_you_mean/bad-assoc-ty.rs b/tests/ui/did_you_mean/bad-assoc-ty.rs similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-ty.rs rename to tests/ui/did_you_mean/bad-assoc-ty.rs diff --git a/src/test/ui/did_you_mean/bad-assoc-ty.stderr b/tests/ui/did_you_mean/bad-assoc-ty.stderr similarity index 100% rename from src/test/ui/did_you_mean/bad-assoc-ty.stderr rename to tests/ui/did_you_mean/bad-assoc-ty.stderr diff --git a/src/test/ui/did_you_mean/brackets-to-braces-single-element.rs b/tests/ui/did_you_mean/brackets-to-braces-single-element.rs similarity index 100% rename from src/test/ui/did_you_mean/brackets-to-braces-single-element.rs rename to tests/ui/did_you_mean/brackets-to-braces-single-element.rs diff --git a/src/test/ui/did_you_mean/brackets-to-braces-single-element.stderr b/tests/ui/did_you_mean/brackets-to-braces-single-element.stderr similarity index 100% rename from src/test/ui/did_you_mean/brackets-to-braces-single-element.stderr rename to tests/ui/did_you_mean/brackets-to-braces-single-element.stderr diff --git a/src/test/ui/did_you_mean/compatible-variants-in-pat.rs b/tests/ui/did_you_mean/compatible-variants-in-pat.rs similarity index 100% rename from src/test/ui/did_you_mean/compatible-variants-in-pat.rs rename to tests/ui/did_you_mean/compatible-variants-in-pat.rs diff --git a/src/test/ui/did_you_mean/compatible-variants-in-pat.stderr b/tests/ui/did_you_mean/compatible-variants-in-pat.stderr similarity index 100% rename from src/test/ui/did_you_mean/compatible-variants-in-pat.stderr rename to tests/ui/did_you_mean/compatible-variants-in-pat.stderr diff --git a/src/test/ui/did_you_mean/compatible-variants.rs b/tests/ui/did_you_mean/compatible-variants.rs similarity index 100% rename from src/test/ui/did_you_mean/compatible-variants.rs rename to tests/ui/did_you_mean/compatible-variants.rs diff --git a/src/test/ui/did_you_mean/compatible-variants.stderr b/tests/ui/did_you_mean/compatible-variants.stderr similarity index 100% rename from src/test/ui/did_you_mean/compatible-variants.stderr rename to tests/ui/did_you_mean/compatible-variants.stderr diff --git a/src/test/ui/did_you_mean/issue-103909.rs b/tests/ui/did_you_mean/issue-103909.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-103909.rs rename to tests/ui/did_you_mean/issue-103909.rs diff --git a/src/test/ui/did_you_mean/issue-103909.stderr b/tests/ui/did_you_mean/issue-103909.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-103909.stderr rename to tests/ui/did_you_mean/issue-103909.stderr diff --git a/src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs rename to tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.rs diff --git a/src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr rename to tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr diff --git a/src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs rename to tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.rs diff --git a/src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.stderr b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.stderr rename to tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-2.stderr diff --git a/src/test/ui/did_you_mean/issue-31424.rs b/tests/ui/did_you_mean/issue-31424.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-31424.rs rename to tests/ui/did_you_mean/issue-31424.rs diff --git a/src/test/ui/did_you_mean/issue-31424.stderr b/tests/ui/did_you_mean/issue-31424.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-31424.stderr rename to tests/ui/did_you_mean/issue-31424.stderr diff --git a/src/test/ui/did_you_mean/issue-34126.rs b/tests/ui/did_you_mean/issue-34126.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-34126.rs rename to tests/ui/did_you_mean/issue-34126.rs diff --git a/src/test/ui/did_you_mean/issue-34126.stderr b/tests/ui/did_you_mean/issue-34126.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-34126.stderr rename to tests/ui/did_you_mean/issue-34126.stderr diff --git a/src/test/ui/did_you_mean/issue-34337.rs b/tests/ui/did_you_mean/issue-34337.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-34337.rs rename to tests/ui/did_you_mean/issue-34337.rs diff --git a/src/test/ui/did_you_mean/issue-34337.stderr b/tests/ui/did_you_mean/issue-34337.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-34337.stderr rename to tests/ui/did_you_mean/issue-34337.stderr diff --git a/src/test/ui/did_you_mean/issue-35937.rs b/tests/ui/did_you_mean/issue-35937.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-35937.rs rename to tests/ui/did_you_mean/issue-35937.rs diff --git a/src/test/ui/did_you_mean/issue-35937.stderr b/tests/ui/did_you_mean/issue-35937.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-35937.stderr rename to tests/ui/did_you_mean/issue-35937.stderr diff --git a/src/test/ui/did_you_mean/issue-36798.rs b/tests/ui/did_you_mean/issue-36798.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-36798.rs rename to tests/ui/did_you_mean/issue-36798.rs diff --git a/src/test/ui/did_you_mean/issue-36798.stderr b/tests/ui/did_you_mean/issue-36798.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-36798.stderr rename to tests/ui/did_you_mean/issue-36798.stderr diff --git a/src/test/ui/did_you_mean/issue-36798_unknown_field.rs b/tests/ui/did_you_mean/issue-36798_unknown_field.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-36798_unknown_field.rs rename to tests/ui/did_you_mean/issue-36798_unknown_field.rs diff --git a/src/test/ui/did_you_mean/issue-36798_unknown_field.stderr b/tests/ui/did_you_mean/issue-36798_unknown_field.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-36798_unknown_field.stderr rename to tests/ui/did_you_mean/issue-36798_unknown_field.stderr diff --git a/src/test/ui/did_you_mean/issue-37139.rs b/tests/ui/did_you_mean/issue-37139.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-37139.rs rename to tests/ui/did_you_mean/issue-37139.rs diff --git a/src/test/ui/did_you_mean/issue-37139.stderr b/tests/ui/did_you_mean/issue-37139.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-37139.stderr rename to tests/ui/did_you_mean/issue-37139.stderr diff --git a/src/test/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs b/tests/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs rename to tests/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.rs diff --git a/src/test/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.stderr b/tests/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.stderr rename to tests/ui/did_you_mean/issue-38054-do-not-show-unresolved-names.stderr diff --git a/src/test/ui/did_you_mean/issue-38147-1.rs b/tests/ui/did_you_mean/issue-38147-1.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-1.rs rename to tests/ui/did_you_mean/issue-38147-1.rs diff --git a/src/test/ui/did_you_mean/issue-38147-1.stderr b/tests/ui/did_you_mean/issue-38147-1.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-1.stderr rename to tests/ui/did_you_mean/issue-38147-1.stderr diff --git a/src/test/ui/did_you_mean/issue-38147-2.rs b/tests/ui/did_you_mean/issue-38147-2.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-2.rs rename to tests/ui/did_you_mean/issue-38147-2.rs diff --git a/src/test/ui/did_you_mean/issue-38147-2.stderr b/tests/ui/did_you_mean/issue-38147-2.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-2.stderr rename to tests/ui/did_you_mean/issue-38147-2.stderr diff --git a/src/test/ui/did_you_mean/issue-38147-3.rs b/tests/ui/did_you_mean/issue-38147-3.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-3.rs rename to tests/ui/did_you_mean/issue-38147-3.rs diff --git a/src/test/ui/did_you_mean/issue-38147-3.stderr b/tests/ui/did_you_mean/issue-38147-3.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-3.stderr rename to tests/ui/did_you_mean/issue-38147-3.stderr diff --git a/src/test/ui/did_you_mean/issue-38147-4.rs b/tests/ui/did_you_mean/issue-38147-4.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-4.rs rename to tests/ui/did_you_mean/issue-38147-4.rs diff --git a/src/test/ui/did_you_mean/issue-38147-4.stderr b/tests/ui/did_you_mean/issue-38147-4.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-38147-4.stderr rename to tests/ui/did_you_mean/issue-38147-4.stderr diff --git a/src/test/ui/did_you_mean/issue-39544.rs b/tests/ui/did_you_mean/issue-39544.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-39544.rs rename to tests/ui/did_you_mean/issue-39544.rs diff --git a/src/test/ui/did_you_mean/issue-39544.stderr b/tests/ui/did_you_mean/issue-39544.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-39544.stderr rename to tests/ui/did_you_mean/issue-39544.stderr diff --git a/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.rs b/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.rs rename to tests/ui/did_you_mean/issue-39802-show-5-trait-impls.rs diff --git a/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr b/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr rename to tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr diff --git a/src/test/ui/did_you_mean/issue-40006.rs b/tests/ui/did_you_mean/issue-40006.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-40006.rs rename to tests/ui/did_you_mean/issue-40006.rs diff --git a/src/test/ui/did_you_mean/issue-40006.stderr b/tests/ui/did_you_mean/issue-40006.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-40006.stderr rename to tests/ui/did_you_mean/issue-40006.stderr diff --git a/src/test/ui/did_you_mean/issue-40396.rs b/tests/ui/did_you_mean/issue-40396.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-40396.rs rename to tests/ui/did_you_mean/issue-40396.rs diff --git a/src/test/ui/did_you_mean/issue-40396.stderr b/tests/ui/did_you_mean/issue-40396.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-40396.stderr rename to tests/ui/did_you_mean/issue-40396.stderr diff --git a/src/test/ui/did_you_mean/issue-40823.rs b/tests/ui/did_you_mean/issue-40823.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-40823.rs rename to tests/ui/did_you_mean/issue-40823.rs diff --git a/src/test/ui/did_you_mean/issue-40823.stderr b/tests/ui/did_you_mean/issue-40823.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-40823.stderr rename to tests/ui/did_you_mean/issue-40823.stderr diff --git a/src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.fixed b/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.fixed similarity index 100% rename from src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.fixed rename to tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.fixed diff --git a/src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs b/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs rename to tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.rs diff --git a/src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr b/tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr rename to tests/ui/did_you_mean/issue-41679-tilde-bitwise-negation-attempt.stderr diff --git a/src/test/ui/did_you_mean/issue-42599_available_fields_note.rs b/tests/ui/did_you_mean/issue-42599_available_fields_note.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-42599_available_fields_note.rs rename to tests/ui/did_you_mean/issue-42599_available_fields_note.rs diff --git a/src/test/ui/did_you_mean/issue-42599_available_fields_note.stderr b/tests/ui/did_you_mean/issue-42599_available_fields_note.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-42599_available_fields_note.stderr rename to tests/ui/did_you_mean/issue-42599_available_fields_note.stderr diff --git a/src/test/ui/did_you_mean/issue-42764.rs b/tests/ui/did_you_mean/issue-42764.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-42764.rs rename to tests/ui/did_you_mean/issue-42764.rs diff --git a/src/test/ui/did_you_mean/issue-42764.stderr b/tests/ui/did_you_mean/issue-42764.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-42764.stderr rename to tests/ui/did_you_mean/issue-42764.stderr diff --git a/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.rs b/tests/ui/did_you_mean/issue-43871-enum-instead-of-variant.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.rs rename to tests/ui/did_you_mean/issue-43871-enum-instead-of-variant.rs diff --git a/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr b/tests/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr rename to tests/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr diff --git a/src/test/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs b/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs rename to tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.rs diff --git a/src/test/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr b/tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr rename to tests/ui/did_you_mean/issue-46718-struct-pattern-dotdotdot.stderr diff --git a/src/test/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs b/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs rename to tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.rs diff --git a/src/test/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr b/tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr rename to tests/ui/did_you_mean/issue-46836-identifier-not-instead-of-negation.stderr diff --git a/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs b/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs rename to tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.rs diff --git a/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr b/tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr rename to tests/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr diff --git a/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs b/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs rename to tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.rs diff --git a/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr b/tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr rename to tests/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr diff --git a/src/test/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs b/tests/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs rename to tests/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.rs diff --git a/src/test/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.stderr b/tests/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.stderr rename to tests/ui/did_you_mean/issue-53280-expected-float-found-integer-literal.stderr diff --git a/src/test/ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs b/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs rename to tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.rs diff --git a/src/test/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr b/tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr rename to tests/ui/did_you_mean/issue-54109-and_instead_of_ampersands.stderr diff --git a/src/test/ui/did_you_mean/issue-54109-without-witness.fixed b/tests/ui/did_you_mean/issue-54109-without-witness.fixed similarity index 100% rename from src/test/ui/did_you_mean/issue-54109-without-witness.fixed rename to tests/ui/did_you_mean/issue-54109-without-witness.fixed diff --git a/src/test/ui/did_you_mean/issue-54109-without-witness.rs b/tests/ui/did_you_mean/issue-54109-without-witness.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-54109-without-witness.rs rename to tests/ui/did_you_mean/issue-54109-without-witness.rs diff --git a/src/test/ui/did_you_mean/issue-54109-without-witness.stderr b/tests/ui/did_you_mean/issue-54109-without-witness.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-54109-without-witness.stderr rename to tests/ui/did_you_mean/issue-54109-without-witness.stderr diff --git a/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs b/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs rename to tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.rs diff --git a/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr b/tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr rename to tests/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr diff --git a/src/test/ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs b/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs rename to tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.rs diff --git a/src/test/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr b/tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr rename to tests/ui/did_you_mean/issue-87830-try-brackets-for-arrays.stderr diff --git a/src/test/ui/did_you_mean/issue-93210-ignore-doc-hidden.rs b/tests/ui/did_you_mean/issue-93210-ignore-doc-hidden.rs similarity index 100% rename from src/test/ui/did_you_mean/issue-93210-ignore-doc-hidden.rs rename to tests/ui/did_you_mean/issue-93210-ignore-doc-hidden.rs diff --git a/src/test/ui/did_you_mean/issue-93210-ignore-doc-hidden.stderr b/tests/ui/did_you_mean/issue-93210-ignore-doc-hidden.stderr similarity index 100% rename from src/test/ui/did_you_mean/issue-93210-ignore-doc-hidden.stderr rename to tests/ui/did_you_mean/issue-93210-ignore-doc-hidden.stderr diff --git a/src/test/ui/did_you_mean/pub-macro-rules.rs b/tests/ui/did_you_mean/pub-macro-rules.rs similarity index 100% rename from src/test/ui/did_you_mean/pub-macro-rules.rs rename to tests/ui/did_you_mean/pub-macro-rules.rs diff --git a/src/test/ui/did_you_mean/pub-macro-rules.stderr b/tests/ui/did_you_mean/pub-macro-rules.stderr similarity index 100% rename from src/test/ui/did_you_mean/pub-macro-rules.stderr rename to tests/ui/did_you_mean/pub-macro-rules.stderr diff --git a/src/test/ui/did_you_mean/recursion_limit.rs b/tests/ui/did_you_mean/recursion_limit.rs similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit.rs rename to tests/ui/did_you_mean/recursion_limit.rs diff --git a/src/test/ui/did_you_mean/recursion_limit.stderr b/tests/ui/did_you_mean/recursion_limit.stderr similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit.stderr rename to tests/ui/did_you_mean/recursion_limit.stderr diff --git a/src/test/ui/did_you_mean/recursion_limit_deref.rs b/tests/ui/did_you_mean/recursion_limit_deref.rs similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit_deref.rs rename to tests/ui/did_you_mean/recursion_limit_deref.rs diff --git a/src/test/ui/did_you_mean/recursion_limit_deref.stderr b/tests/ui/did_you_mean/recursion_limit_deref.stderr similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit_deref.stderr rename to tests/ui/did_you_mean/recursion_limit_deref.stderr diff --git a/src/test/ui/did_you_mean/recursion_limit_macro.rs b/tests/ui/did_you_mean/recursion_limit_macro.rs similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit_macro.rs rename to tests/ui/did_you_mean/recursion_limit_macro.rs diff --git a/src/test/ui/did_you_mean/recursion_limit_macro.stderr b/tests/ui/did_you_mean/recursion_limit_macro.stderr similarity index 100% rename from src/test/ui/did_you_mean/recursion_limit_macro.stderr rename to tests/ui/did_you_mean/recursion_limit_macro.stderr diff --git a/src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.fixed b/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.fixed similarity index 100% rename from src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.fixed rename to tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.fixed diff --git a/src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.rs b/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.rs similarity index 100% rename from src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.rs rename to tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.rs diff --git a/src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr b/tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr similarity index 100% rename from src/test/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr rename to tests/ui/did_you_mean/replace-impl-infer-ty-from-trait.stderr diff --git a/src/test/ui/did_you_mean/trait-object-reference-without-parens-suggestion.rs b/tests/ui/did_you_mean/trait-object-reference-without-parens-suggestion.rs similarity index 100% rename from src/test/ui/did_you_mean/trait-object-reference-without-parens-suggestion.rs rename to tests/ui/did_you_mean/trait-object-reference-without-parens-suggestion.rs diff --git a/src/test/ui/did_you_mean/trait-object-reference-without-parens-suggestion.stderr b/tests/ui/did_you_mean/trait-object-reference-without-parens-suggestion.stderr similarity index 100% rename from src/test/ui/did_you_mean/trait-object-reference-without-parens-suggestion.stderr rename to tests/ui/did_you_mean/trait-object-reference-without-parens-suggestion.stderr diff --git a/src/test/ui/did_you_mean/use_instead_of_import.fixed b/tests/ui/did_you_mean/use_instead_of_import.fixed similarity index 100% rename from src/test/ui/did_you_mean/use_instead_of_import.fixed rename to tests/ui/did_you_mean/use_instead_of_import.fixed diff --git a/src/test/ui/did_you_mean/use_instead_of_import.rs b/tests/ui/did_you_mean/use_instead_of_import.rs similarity index 100% rename from src/test/ui/did_you_mean/use_instead_of_import.rs rename to tests/ui/did_you_mean/use_instead_of_import.rs diff --git a/src/test/ui/did_you_mean/use_instead_of_import.stderr b/tests/ui/did_you_mean/use_instead_of_import.stderr similarity index 100% rename from src/test/ui/did_you_mean/use_instead_of_import.stderr rename to tests/ui/did_you_mean/use_instead_of_import.stderr diff --git a/src/test/ui/directory_ownership/foo/compiletest-ignore-dir b/tests/ui/directory_ownership/foo/compiletest-ignore-dir similarity index 100% rename from src/test/ui/directory_ownership/foo/compiletest-ignore-dir rename to tests/ui/directory_ownership/foo/compiletest-ignore-dir diff --git a/src/test/ui/directory_ownership/foo/mod_file_not_owning/aux2.rs b/tests/ui/directory_ownership/foo/mod_file_not_owning/aux2.rs similarity index 100% rename from src/test/ui/directory_ownership/foo/mod_file_not_owning/aux2.rs rename to tests/ui/directory_ownership/foo/mod_file_not_owning/aux2.rs diff --git a/src/test/ui/directory_ownership/foo/mod_file_not_owning_aux2.rs b/tests/ui/directory_ownership/foo/mod_file_not_owning_aux2.rs similarity index 100% rename from src/test/ui/directory_ownership/foo/mod_file_not_owning_aux2.rs rename to tests/ui/directory_ownership/foo/mod_file_not_owning_aux2.rs diff --git a/src/test/ui/directory_ownership/macro-expanded-mod.rs b/tests/ui/directory_ownership/macro-expanded-mod.rs similarity index 100% rename from src/test/ui/directory_ownership/macro-expanded-mod.rs rename to tests/ui/directory_ownership/macro-expanded-mod.rs diff --git a/src/test/ui/directory_ownership/macro-expanded-mod.stderr b/tests/ui/directory_ownership/macro-expanded-mod.stderr similarity index 100% rename from src/test/ui/directory_ownership/macro-expanded-mod.stderr rename to tests/ui/directory_ownership/macro-expanded-mod.stderr diff --git a/src/test/ui/directory_ownership/macro_expanded_mod_helper/foo/bar.rs b/tests/ui/directory_ownership/macro_expanded_mod_helper/foo/bar.rs similarity index 100% rename from src/test/ui/directory_ownership/macro_expanded_mod_helper/foo/bar.rs rename to tests/ui/directory_ownership/macro_expanded_mod_helper/foo/bar.rs diff --git a/src/test/ui/directory_ownership/macro_expanded_mod_helper/foo/mod.rs b/tests/ui/directory_ownership/macro_expanded_mod_helper/foo/mod.rs similarity index 100% rename from src/test/ui/directory_ownership/macro_expanded_mod_helper/foo/mod.rs rename to tests/ui/directory_ownership/macro_expanded_mod_helper/foo/mod.rs diff --git a/src/test/ui/directory_ownership/mod_file_not_owning_aux1.rs b/tests/ui/directory_ownership/mod_file_not_owning_aux1.rs similarity index 100% rename from src/test/ui/directory_ownership/mod_file_not_owning_aux1.rs rename to tests/ui/directory_ownership/mod_file_not_owning_aux1.rs diff --git a/src/test/ui/directory_ownership/mod_file_not_owning_aux1/compiletest-ignore-dir b/tests/ui/directory_ownership/mod_file_not_owning_aux1/compiletest-ignore-dir similarity index 100% rename from src/test/ui/directory_ownership/mod_file_not_owning_aux1/compiletest-ignore-dir rename to tests/ui/directory_ownership/mod_file_not_owning_aux1/compiletest-ignore-dir diff --git a/src/test/ui/directory_ownership/mod_file_not_owning_aux1/mod_file_not_owning_aux2.rs b/tests/ui/directory_ownership/mod_file_not_owning_aux1/mod_file_not_owning_aux2.rs similarity index 100% rename from src/test/ui/directory_ownership/mod_file_not_owning_aux1/mod_file_not_owning_aux2.rs rename to tests/ui/directory_ownership/mod_file_not_owning_aux1/mod_file_not_owning_aux2.rs diff --git a/src/test/ui/directory_ownership/mod_file_not_owning_aux2.rs b/tests/ui/directory_ownership/mod_file_not_owning_aux2.rs similarity index 100% rename from src/test/ui/directory_ownership/mod_file_not_owning_aux2.rs rename to tests/ui/directory_ownership/mod_file_not_owning_aux2.rs diff --git a/src/test/ui/directory_ownership/mod_file_not_owning_aux3.rs b/tests/ui/directory_ownership/mod_file_not_owning_aux3.rs similarity index 100% rename from src/test/ui/directory_ownership/mod_file_not_owning_aux3.rs rename to tests/ui/directory_ownership/mod_file_not_owning_aux3.rs diff --git a/src/test/ui/directory_ownership/non-inline-mod-restriction.rs b/tests/ui/directory_ownership/non-inline-mod-restriction.rs similarity index 100% rename from src/test/ui/directory_ownership/non-inline-mod-restriction.rs rename to tests/ui/directory_ownership/non-inline-mod-restriction.rs diff --git a/src/test/ui/directory_ownership/non-inline-mod-restriction.stderr b/tests/ui/directory_ownership/non-inline-mod-restriction.stderr similarity index 100% rename from src/test/ui/directory_ownership/non-inline-mod-restriction.stderr rename to tests/ui/directory_ownership/non-inline-mod-restriction.stderr diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.fixed b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.fixed similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.fixed rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.fixed diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.rs b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.rs similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.rs rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.rs diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.stderr b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.stderr similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.stderr rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-let.stderr diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.fixed b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.fixed similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.fixed rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.fixed diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.rs b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.rs similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.rs rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.rs diff --git a/src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.stderr b/tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.stderr similarity index 100% rename from src/test/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.stderr rename to tests/ui/disallowed-deconstructing/disallowed-deconstructing-destructing-struct-match.stderr diff --git a/src/test/ui/disambiguate-identical-names.rs b/tests/ui/disambiguate-identical-names.rs similarity index 100% rename from src/test/ui/disambiguate-identical-names.rs rename to tests/ui/disambiguate-identical-names.rs diff --git a/src/test/ui/disambiguate-identical-names.stderr b/tests/ui/disambiguate-identical-names.stderr similarity index 100% rename from src/test/ui/disambiguate-identical-names.stderr rename to tests/ui/disambiguate-identical-names.stderr diff --git a/src/test/ui/discrim/discrim-ill-typed.rs b/tests/ui/discrim/discrim-ill-typed.rs similarity index 100% rename from src/test/ui/discrim/discrim-ill-typed.rs rename to tests/ui/discrim/discrim-ill-typed.rs diff --git a/src/test/ui/discrim/discrim-ill-typed.stderr b/tests/ui/discrim/discrim-ill-typed.stderr similarity index 100% rename from src/test/ui/discrim/discrim-ill-typed.stderr rename to tests/ui/discrim/discrim-ill-typed.stderr diff --git a/src/test/ui/discrim/discrim-overflow-2.rs b/tests/ui/discrim/discrim-overflow-2.rs similarity index 100% rename from src/test/ui/discrim/discrim-overflow-2.rs rename to tests/ui/discrim/discrim-overflow-2.rs diff --git a/src/test/ui/discrim/discrim-overflow-2.stderr b/tests/ui/discrim/discrim-overflow-2.stderr similarity index 100% rename from src/test/ui/discrim/discrim-overflow-2.stderr rename to tests/ui/discrim/discrim-overflow-2.stderr diff --git a/src/test/ui/discrim/discrim-overflow.rs b/tests/ui/discrim/discrim-overflow.rs similarity index 100% rename from src/test/ui/discrim/discrim-overflow.rs rename to tests/ui/discrim/discrim-overflow.rs diff --git a/src/test/ui/discrim/discrim-overflow.stderr b/tests/ui/discrim/discrim-overflow.stderr similarity index 100% rename from src/test/ui/discrim/discrim-overflow.stderr rename to tests/ui/discrim/discrim-overflow.stderr diff --git a/src/test/ui/diverging-fallback-method-chain.rs b/tests/ui/diverging-fallback-method-chain.rs similarity index 100% rename from src/test/ui/diverging-fallback-method-chain.rs rename to tests/ui/diverging-fallback-method-chain.rs diff --git a/src/test/ui/diverging-fallback-option.rs b/tests/ui/diverging-fallback-option.rs similarity index 100% rename from src/test/ui/diverging-fallback-option.rs rename to tests/ui/diverging-fallback-option.rs diff --git a/src/test/ui/diverging-fn-tail-35849.rs b/tests/ui/diverging-fn-tail-35849.rs similarity index 100% rename from src/test/ui/diverging-fn-tail-35849.rs rename to tests/ui/diverging-fn-tail-35849.rs diff --git a/src/test/ui/diverging-fn-tail-35849.stderr b/tests/ui/diverging-fn-tail-35849.stderr similarity index 100% rename from src/test/ui/diverging-fn-tail-35849.stderr rename to tests/ui/diverging-fn-tail-35849.stderr diff --git a/src/test/ui/does-nothing.rs b/tests/ui/does-nothing.rs similarity index 100% rename from src/test/ui/does-nothing.rs rename to tests/ui/does-nothing.rs diff --git a/src/test/ui/does-nothing.stderr b/tests/ui/does-nothing.stderr similarity index 100% rename from src/test/ui/does-nothing.stderr rename to tests/ui/does-nothing.stderr diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs b/tests/ui/dollar-crate/dollar-crate-is-keyword-2.rs similarity index 100% rename from src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs rename to tests/ui/dollar-crate/dollar-crate-is-keyword-2.rs diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr b/tests/ui/dollar-crate/dollar-crate-is-keyword-2.stderr similarity index 100% rename from src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr rename to tests/ui/dollar-crate/dollar-crate-is-keyword-2.stderr diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword.rs b/tests/ui/dollar-crate/dollar-crate-is-keyword.rs similarity index 100% rename from src/test/ui/dollar-crate/dollar-crate-is-keyword.rs rename to tests/ui/dollar-crate/dollar-crate-is-keyword.rs diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr b/tests/ui/dollar-crate/dollar-crate-is-keyword.stderr similarity index 100% rename from src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr rename to tests/ui/dollar-crate/dollar-crate-is-keyword.stderr diff --git a/src/test/ui/dont-suggest-private-trait-method.rs b/tests/ui/dont-suggest-private-trait-method.rs similarity index 100% rename from src/test/ui/dont-suggest-private-trait-method.rs rename to tests/ui/dont-suggest-private-trait-method.rs diff --git a/src/test/ui/dont-suggest-private-trait-method.stderr b/tests/ui/dont-suggest-private-trait-method.stderr similarity index 100% rename from src/test/ui/dont-suggest-private-trait-method.stderr rename to tests/ui/dont-suggest-private-trait-method.stderr diff --git a/src/test/ui/double-ref.rs b/tests/ui/double-ref.rs similarity index 100% rename from src/test/ui/double-ref.rs rename to tests/ui/double-ref.rs diff --git a/src/test/ui/double-type-import.rs b/tests/ui/double-type-import.rs similarity index 100% rename from src/test/ui/double-type-import.rs rename to tests/ui/double-type-import.rs diff --git a/src/test/ui/double-type-import.stderr b/tests/ui/double-type-import.stderr similarity index 100% rename from src/test/ui/double-type-import.stderr rename to tests/ui/double-type-import.stderr diff --git a/src/test/ui/drop-bounds/drop-bounds-impl-drop.rs b/tests/ui/drop-bounds/drop-bounds-impl-drop.rs similarity index 100% rename from src/test/ui/drop-bounds/drop-bounds-impl-drop.rs rename to tests/ui/drop-bounds/drop-bounds-impl-drop.rs diff --git a/src/test/ui/drop-bounds/drop-bounds.rs b/tests/ui/drop-bounds/drop-bounds.rs similarity index 100% rename from src/test/ui/drop-bounds/drop-bounds.rs rename to tests/ui/drop-bounds/drop-bounds.rs diff --git a/src/test/ui/drop-bounds/drop-bounds.stderr b/tests/ui/drop-bounds/drop-bounds.stderr similarity index 100% rename from src/test/ui/drop-bounds/drop-bounds.stderr rename to tests/ui/drop-bounds/drop-bounds.stderr diff --git a/src/test/ui/drop/auxiliary/dropck_eyepatch_extern_crate.rs b/tests/ui/drop/auxiliary/dropck_eyepatch_extern_crate.rs similarity index 100% rename from src/test/ui/drop/auxiliary/dropck_eyepatch_extern_crate.rs rename to tests/ui/drop/auxiliary/dropck_eyepatch_extern_crate.rs diff --git a/src/test/ui/drop/auxiliary/inline_dtor.rs b/tests/ui/drop/auxiliary/inline_dtor.rs similarity index 100% rename from src/test/ui/drop/auxiliary/inline_dtor.rs rename to tests/ui/drop/auxiliary/inline_dtor.rs diff --git a/src/test/ui/drop/auxiliary/issue-10028.rs b/tests/ui/drop/auxiliary/issue-10028.rs similarity index 100% rename from src/test/ui/drop/auxiliary/issue-10028.rs rename to tests/ui/drop/auxiliary/issue-10028.rs diff --git a/src/test/ui/drop/drop-foreign-fundamental.rs b/tests/ui/drop/drop-foreign-fundamental.rs similarity index 100% rename from src/test/ui/drop/drop-foreign-fundamental.rs rename to tests/ui/drop/drop-foreign-fundamental.rs diff --git a/src/test/ui/drop/drop-foreign-fundamental.stderr b/tests/ui/drop/drop-foreign-fundamental.stderr similarity index 100% rename from src/test/ui/drop/drop-foreign-fundamental.stderr rename to tests/ui/drop/drop-foreign-fundamental.stderr diff --git a/src/test/ui/drop/drop-if-let-binding.rs b/tests/ui/drop/drop-if-let-binding.rs similarity index 100% rename from src/test/ui/drop/drop-if-let-binding.rs rename to tests/ui/drop/drop-if-let-binding.rs diff --git a/src/test/ui/drop/drop-on-empty-block-exit.rs b/tests/ui/drop/drop-on-empty-block-exit.rs similarity index 100% rename from src/test/ui/drop/drop-on-empty-block-exit.rs rename to tests/ui/drop/drop-on-empty-block-exit.rs diff --git a/src/test/ui/drop/drop-on-ret.rs b/tests/ui/drop/drop-on-ret.rs similarity index 100% rename from src/test/ui/drop/drop-on-ret.rs rename to tests/ui/drop/drop-on-ret.rs diff --git a/src/test/ui/drop/drop-struct-as-object.rs b/tests/ui/drop/drop-struct-as-object.rs similarity index 100% rename from src/test/ui/drop/drop-struct-as-object.rs rename to tests/ui/drop/drop-struct-as-object.rs diff --git a/src/test/ui/drop/drop-trait-enum.rs b/tests/ui/drop/drop-trait-enum.rs similarity index 100% rename from src/test/ui/drop/drop-trait-enum.rs rename to tests/ui/drop/drop-trait-enum.rs diff --git a/src/test/ui/drop/drop-trait-generic.rs b/tests/ui/drop/drop-trait-generic.rs similarity index 100% rename from src/test/ui/drop/drop-trait-generic.rs rename to tests/ui/drop/drop-trait-generic.rs diff --git a/src/test/ui/drop/drop-trait.rs b/tests/ui/drop/drop-trait.rs similarity index 100% rename from src/test/ui/drop/drop-trait.rs rename to tests/ui/drop/drop-trait.rs diff --git a/src/test/ui/drop/drop-uninhabited-enum.rs b/tests/ui/drop/drop-uninhabited-enum.rs similarity index 100% rename from src/test/ui/drop/drop-uninhabited-enum.rs rename to tests/ui/drop/drop-uninhabited-enum.rs diff --git a/src/test/ui/drop/drop-with-type-ascription-1.rs b/tests/ui/drop/drop-with-type-ascription-1.rs similarity index 100% rename from src/test/ui/drop/drop-with-type-ascription-1.rs rename to tests/ui/drop/drop-with-type-ascription-1.rs diff --git a/src/test/ui/drop/drop-with-type-ascription-2.rs b/tests/ui/drop/drop-with-type-ascription-2.rs similarity index 100% rename from src/test/ui/drop/drop-with-type-ascription-2.rs rename to tests/ui/drop/drop-with-type-ascription-2.rs diff --git a/src/test/ui/drop/drop_order.rs b/tests/ui/drop/drop_order.rs similarity index 100% rename from src/test/ui/drop/drop_order.rs rename to tests/ui/drop/drop_order.rs diff --git a/src/test/ui/drop/dropck-eyepatch-extern-crate.rs b/tests/ui/drop/dropck-eyepatch-extern-crate.rs similarity index 100% rename from src/test/ui/drop/dropck-eyepatch-extern-crate.rs rename to tests/ui/drop/dropck-eyepatch-extern-crate.rs diff --git a/src/test/ui/drop/dropck-eyepatch-reorder.rs b/tests/ui/drop/dropck-eyepatch-reorder.rs similarity index 100% rename from src/test/ui/drop/dropck-eyepatch-reorder.rs rename to tests/ui/drop/dropck-eyepatch-reorder.rs diff --git a/src/test/ui/drop/dropck-eyepatch.rs b/tests/ui/drop/dropck-eyepatch.rs similarity index 100% rename from src/test/ui/drop/dropck-eyepatch.rs rename to tests/ui/drop/dropck-eyepatch.rs diff --git a/src/test/ui/drop/dropck_legal_cycles.rs b/tests/ui/drop/dropck_legal_cycles.rs similarity index 100% rename from src/test/ui/drop/dropck_legal_cycles.rs rename to tests/ui/drop/dropck_legal_cycles.rs diff --git a/src/test/ui/drop/dynamic-drop-async.rs b/tests/ui/drop/dynamic-drop-async.rs similarity index 100% rename from src/test/ui/drop/dynamic-drop-async.rs rename to tests/ui/drop/dynamic-drop-async.rs diff --git a/src/test/ui/drop/dynamic-drop.rs b/tests/ui/drop/dynamic-drop.rs similarity index 100% rename from src/test/ui/drop/dynamic-drop.rs rename to tests/ui/drop/dynamic-drop.rs diff --git a/src/test/ui/drop/issue-100276.rs b/tests/ui/drop/issue-100276.rs similarity index 100% rename from src/test/ui/drop/issue-100276.rs rename to tests/ui/drop/issue-100276.rs diff --git a/src/test/ui/drop/issue-10028.rs b/tests/ui/drop/issue-10028.rs similarity index 100% rename from src/test/ui/drop/issue-10028.rs rename to tests/ui/drop/issue-10028.rs diff --git a/src/test/ui/drop/issue-103107.rs b/tests/ui/drop/issue-103107.rs similarity index 100% rename from src/test/ui/drop/issue-103107.rs rename to tests/ui/drop/issue-103107.rs diff --git a/src/test/ui/drop/issue-17718-const-destructors.rs b/tests/ui/drop/issue-17718-const-destructors.rs similarity index 100% rename from src/test/ui/drop/issue-17718-const-destructors.rs rename to tests/ui/drop/issue-17718-const-destructors.rs diff --git a/src/test/ui/drop/issue-21486.rs b/tests/ui/drop/issue-21486.rs similarity index 100% rename from src/test/ui/drop/issue-21486.rs rename to tests/ui/drop/issue-21486.rs diff --git a/src/test/ui/drop/issue-23338-ensure-param-drop-order.rs b/tests/ui/drop/issue-23338-ensure-param-drop-order.rs similarity index 100% rename from src/test/ui/drop/issue-23338-ensure-param-drop-order.rs rename to tests/ui/drop/issue-23338-ensure-param-drop-order.rs diff --git a/src/test/ui/drop/issue-2734.rs b/tests/ui/drop/issue-2734.rs similarity index 100% rename from src/test/ui/drop/issue-2734.rs rename to tests/ui/drop/issue-2734.rs diff --git a/src/test/ui/drop/issue-30018-nopanic.rs b/tests/ui/drop/issue-30018-nopanic.rs similarity index 100% rename from src/test/ui/drop/issue-30018-nopanic.rs rename to tests/ui/drop/issue-30018-nopanic.rs diff --git a/src/test/ui/drop/issue-35546.rs b/tests/ui/drop/issue-35546.rs similarity index 100% rename from src/test/ui/drop/issue-35546.rs rename to tests/ui/drop/issue-35546.rs diff --git a/src/test/ui/drop/issue-48962.rs b/tests/ui/drop/issue-48962.rs similarity index 100% rename from src/test/ui/drop/issue-48962.rs rename to tests/ui/drop/issue-48962.rs diff --git a/src/test/ui/drop/issue-90752-raw-ptr-shenanigans.rs b/tests/ui/drop/issue-90752-raw-ptr-shenanigans.rs similarity index 100% rename from src/test/ui/drop/issue-90752-raw-ptr-shenanigans.rs rename to tests/ui/drop/issue-90752-raw-ptr-shenanigans.rs diff --git a/src/test/ui/drop/issue-90752.rs b/tests/ui/drop/issue-90752.rs similarity index 100% rename from src/test/ui/drop/issue-90752.rs rename to tests/ui/drop/issue-90752.rs diff --git a/src/test/ui/drop/no-drop-flag-size.rs b/tests/ui/drop/no-drop-flag-size.rs similarity index 100% rename from src/test/ui/drop/no-drop-flag-size.rs rename to tests/ui/drop/no-drop-flag-size.rs diff --git a/src/test/ui/drop/nondrop-cycle.rs b/tests/ui/drop/nondrop-cycle.rs similarity index 100% rename from src/test/ui/drop/nondrop-cycle.rs rename to tests/ui/drop/nondrop-cycle.rs diff --git a/src/test/ui/drop/repeat-drop-2.rs b/tests/ui/drop/repeat-drop-2.rs similarity index 100% rename from src/test/ui/drop/repeat-drop-2.rs rename to tests/ui/drop/repeat-drop-2.rs diff --git a/src/test/ui/drop/repeat-drop-2.stderr b/tests/ui/drop/repeat-drop-2.stderr similarity index 100% rename from src/test/ui/drop/repeat-drop-2.stderr rename to tests/ui/drop/repeat-drop-2.stderr diff --git a/src/test/ui/drop/repeat-drop.rs b/tests/ui/drop/repeat-drop.rs similarity index 100% rename from src/test/ui/drop/repeat-drop.rs rename to tests/ui/drop/repeat-drop.rs diff --git a/src/test/ui/drop/terminate-in-initializer.rs b/tests/ui/drop/terminate-in-initializer.rs similarity index 100% rename from src/test/ui/drop/terminate-in-initializer.rs rename to tests/ui/drop/terminate-in-initializer.rs diff --git a/src/test/ui/drop/use_inline_dtor.rs b/tests/ui/drop/use_inline_dtor.rs similarity index 100% rename from src/test/ui/drop/use_inline_dtor.rs rename to tests/ui/drop/use_inline_dtor.rs diff --git a/src/test/ui/dropck/auxiliary/dropck_eyepatch_extern_crate.rs b/tests/ui/dropck/auxiliary/dropck_eyepatch_extern_crate.rs similarity index 100% rename from src/test/ui/dropck/auxiliary/dropck_eyepatch_extern_crate.rs rename to tests/ui/dropck/auxiliary/dropck_eyepatch_extern_crate.rs diff --git a/src/test/ui/dropck/cleanup-arm-conditional.rs b/tests/ui/dropck/cleanup-arm-conditional.rs similarity index 100% rename from src/test/ui/dropck/cleanup-arm-conditional.rs rename to tests/ui/dropck/cleanup-arm-conditional.rs diff --git a/src/test/ui/dropck/drop-on-non-struct.rs b/tests/ui/dropck/drop-on-non-struct.rs similarity index 100% rename from src/test/ui/dropck/drop-on-non-struct.rs rename to tests/ui/dropck/drop-on-non-struct.rs diff --git a/src/test/ui/dropck/drop-on-non-struct.stderr b/tests/ui/dropck/drop-on-non-struct.stderr similarity index 100% rename from src/test/ui/dropck/drop-on-non-struct.stderr rename to tests/ui/dropck/drop-on-non-struct.stderr diff --git a/src/test/ui/dropck/drop-with-active-borrows-1.rs b/tests/ui/dropck/drop-with-active-borrows-1.rs similarity index 100% rename from src/test/ui/dropck/drop-with-active-borrows-1.rs rename to tests/ui/dropck/drop-with-active-borrows-1.rs diff --git a/src/test/ui/dropck/drop-with-active-borrows-1.stderr b/tests/ui/dropck/drop-with-active-borrows-1.stderr similarity index 100% rename from src/test/ui/dropck/drop-with-active-borrows-1.stderr rename to tests/ui/dropck/drop-with-active-borrows-1.stderr diff --git a/src/test/ui/dropck/drop-with-active-borrows-2.rs b/tests/ui/dropck/drop-with-active-borrows-2.rs similarity index 100% rename from src/test/ui/dropck/drop-with-active-borrows-2.rs rename to tests/ui/dropck/drop-with-active-borrows-2.rs diff --git a/src/test/ui/dropck/drop-with-active-borrows-2.stderr b/tests/ui/dropck/drop-with-active-borrows-2.stderr similarity index 100% rename from src/test/ui/dropck/drop-with-active-borrows-2.stderr rename to tests/ui/dropck/drop-with-active-borrows-2.stderr diff --git a/src/test/ui/dropck/dropck-eyepatch-extern-crate.rs b/tests/ui/dropck/dropck-eyepatch-extern-crate.rs similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-extern-crate.rs rename to tests/ui/dropck/dropck-eyepatch-extern-crate.rs diff --git a/src/test/ui/dropck/dropck-eyepatch-extern-crate.stderr b/tests/ui/dropck/dropck-eyepatch-extern-crate.stderr similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-extern-crate.stderr rename to tests/ui/dropck/dropck-eyepatch-extern-crate.stderr diff --git a/src/test/ui/dropck/dropck-eyepatch-implies-unsafe-impl.rs b/tests/ui/dropck/dropck-eyepatch-implies-unsafe-impl.rs similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-implies-unsafe-impl.rs rename to tests/ui/dropck/dropck-eyepatch-implies-unsafe-impl.rs diff --git a/src/test/ui/dropck/dropck-eyepatch-implies-unsafe-impl.stderr b/tests/ui/dropck/dropck-eyepatch-implies-unsafe-impl.stderr similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-implies-unsafe-impl.stderr rename to tests/ui/dropck/dropck-eyepatch-implies-unsafe-impl.stderr diff --git a/src/test/ui/dropck/dropck-eyepatch-reorder.rs b/tests/ui/dropck/dropck-eyepatch-reorder.rs similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-reorder.rs rename to tests/ui/dropck/dropck-eyepatch-reorder.rs diff --git a/src/test/ui/dropck/dropck-eyepatch-reorder.stderr b/tests/ui/dropck/dropck-eyepatch-reorder.stderr similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch-reorder.stderr rename to tests/ui/dropck/dropck-eyepatch-reorder.stderr diff --git a/src/test/ui/dropck/dropck-eyepatch.rs b/tests/ui/dropck/dropck-eyepatch.rs similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch.rs rename to tests/ui/dropck/dropck-eyepatch.rs diff --git a/src/test/ui/dropck/dropck-eyepatch.stderr b/tests/ui/dropck/dropck-eyepatch.stderr similarity index 100% rename from src/test/ui/dropck/dropck-eyepatch.stderr rename to tests/ui/dropck/dropck-eyepatch.stderr diff --git a/src/test/ui/dropck/dropck-union.rs b/tests/ui/dropck/dropck-union.rs similarity index 100% rename from src/test/ui/dropck/dropck-union.rs rename to tests/ui/dropck/dropck-union.rs diff --git a/src/test/ui/dropck/dropck-union.stderr b/tests/ui/dropck/dropck-union.stderr similarity index 100% rename from src/test/ui/dropck/dropck-union.stderr rename to tests/ui/dropck/dropck-union.stderr diff --git a/src/test/ui/dropck/dropck_fn_type.rs b/tests/ui/dropck/dropck_fn_type.rs similarity index 100% rename from src/test/ui/dropck/dropck_fn_type.rs rename to tests/ui/dropck/dropck_fn_type.rs diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs b/tests/ui/dropck/dropck_no_diverge_on_nonregular_1.rs similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_1.rs diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.stderr b/tests/ui/dropck/dropck_no_diverge_on_nonregular_1.stderr similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.stderr rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_1.stderr diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs b/tests/ui/dropck/dropck_no_diverge_on_nonregular_2.rs similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_2.rs diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.stderr b/tests/ui/dropck/dropck_no_diverge_on_nonregular_2.stderr similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.stderr rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_2.stderr diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_3.rs b/tests/ui/dropck/dropck_no_diverge_on_nonregular_3.rs similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_3.rs rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_3.rs diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_3.stderr b/tests/ui/dropck/dropck_no_diverge_on_nonregular_3.stderr similarity index 100% rename from src/test/ui/dropck/dropck_no_diverge_on_nonregular_3.stderr rename to tests/ui/dropck/dropck_no_diverge_on_nonregular_3.stderr diff --git a/src/test/ui/dropck/dropck_trait_cycle_checked.rs b/tests/ui/dropck/dropck_trait_cycle_checked.rs similarity index 100% rename from src/test/ui/dropck/dropck_trait_cycle_checked.rs rename to tests/ui/dropck/dropck_trait_cycle_checked.rs diff --git a/src/test/ui/dropck/dropck_trait_cycle_checked.stderr b/tests/ui/dropck/dropck_trait_cycle_checked.stderr similarity index 100% rename from src/test/ui/dropck/dropck_trait_cycle_checked.stderr rename to tests/ui/dropck/dropck_trait_cycle_checked.stderr diff --git a/src/test/ui/dropck/dropck_traits.rs b/tests/ui/dropck/dropck_traits.rs similarity index 100% rename from src/test/ui/dropck/dropck_traits.rs rename to tests/ui/dropck/dropck_traits.rs diff --git a/src/test/ui/dropck/issue-24805-dropck-itemless.rs b/tests/ui/dropck/issue-24805-dropck-itemless.rs similarity index 100% rename from src/test/ui/dropck/issue-24805-dropck-itemless.rs rename to tests/ui/dropck/issue-24805-dropck-itemless.rs diff --git a/src/test/ui/dropck/issue-28498-ugeh-with-lifetime-param.rs b/tests/ui/dropck/issue-28498-ugeh-with-lifetime-param.rs similarity index 100% rename from src/test/ui/dropck/issue-28498-ugeh-with-lifetime-param.rs rename to tests/ui/dropck/issue-28498-ugeh-with-lifetime-param.rs diff --git a/src/test/ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs b/tests/ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs similarity index 100% rename from src/test/ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs rename to tests/ui/dropck/issue-28498-ugeh-with-passed-to-fn.rs diff --git a/src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs b/tests/ui/dropck/issue-28498-ugeh-with-trait-bound.rs similarity index 100% rename from src/test/ui/dropck/issue-28498-ugeh-with-trait-bound.rs rename to tests/ui/dropck/issue-28498-ugeh-with-trait-bound.rs diff --git a/src/test/ui/dropck/issue-29844.rs b/tests/ui/dropck/issue-29844.rs similarity index 100% rename from src/test/ui/dropck/issue-29844.rs rename to tests/ui/dropck/issue-29844.rs diff --git a/src/test/ui/dropck/issue-34053.rs b/tests/ui/dropck/issue-34053.rs similarity index 100% rename from src/test/ui/dropck/issue-34053.rs rename to tests/ui/dropck/issue-34053.rs diff --git a/src/test/ui/dropck/issue-38868.rs b/tests/ui/dropck/issue-38868.rs similarity index 100% rename from src/test/ui/dropck/issue-38868.rs rename to tests/ui/dropck/issue-38868.rs diff --git a/src/test/ui/dropck/issue-38868.stderr b/tests/ui/dropck/issue-38868.stderr similarity index 100% rename from src/test/ui/dropck/issue-38868.stderr rename to tests/ui/dropck/issue-38868.stderr diff --git a/src/test/ui/dropck/issue-54943-1.rs b/tests/ui/dropck/issue-54943-1.rs similarity index 100% rename from src/test/ui/dropck/issue-54943-1.rs rename to tests/ui/dropck/issue-54943-1.rs diff --git a/src/test/ui/dropck/issue-54943-2.rs b/tests/ui/dropck/issue-54943-2.rs similarity index 100% rename from src/test/ui/dropck/issue-54943-2.rs rename to tests/ui/dropck/issue-54943-2.rs diff --git a/src/test/ui/dropck/reject-specialized-drops-8142.rs b/tests/ui/dropck/reject-specialized-drops-8142.rs similarity index 100% rename from src/test/ui/dropck/reject-specialized-drops-8142.rs rename to tests/ui/dropck/reject-specialized-drops-8142.rs diff --git a/src/test/ui/dropck/reject-specialized-drops-8142.stderr b/tests/ui/dropck/reject-specialized-drops-8142.stderr similarity index 100% rename from src/test/ui/dropck/reject-specialized-drops-8142.stderr rename to tests/ui/dropck/reject-specialized-drops-8142.stderr diff --git a/src/test/ui/dropck/relate_lt_in_type_outlives_bound.rs b/tests/ui/dropck/relate_lt_in_type_outlives_bound.rs similarity index 100% rename from src/test/ui/dropck/relate_lt_in_type_outlives_bound.rs rename to tests/ui/dropck/relate_lt_in_type_outlives_bound.rs diff --git a/src/test/ui/dropck/relate_lt_in_type_outlives_bound.stderr b/tests/ui/dropck/relate_lt_in_type_outlives_bound.stderr similarity index 100% rename from src/test/ui/dropck/relate_lt_in_type_outlives_bound.stderr rename to tests/ui/dropck/relate_lt_in_type_outlives_bound.stderr diff --git a/src/test/ui/dst/dst-bad-assign-2.rs b/tests/ui/dst/dst-bad-assign-2.rs similarity index 100% rename from src/test/ui/dst/dst-bad-assign-2.rs rename to tests/ui/dst/dst-bad-assign-2.rs diff --git a/src/test/ui/dst/dst-bad-assign-2.stderr b/tests/ui/dst/dst-bad-assign-2.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-assign-2.stderr rename to tests/ui/dst/dst-bad-assign-2.stderr diff --git a/src/test/ui/dst/dst-bad-assign-3.rs b/tests/ui/dst/dst-bad-assign-3.rs similarity index 100% rename from src/test/ui/dst/dst-bad-assign-3.rs rename to tests/ui/dst/dst-bad-assign-3.rs diff --git a/src/test/ui/dst/dst-bad-assign-3.stderr b/tests/ui/dst/dst-bad-assign-3.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-assign-3.stderr rename to tests/ui/dst/dst-bad-assign-3.stderr diff --git a/src/test/ui/dst/dst-bad-assign.rs b/tests/ui/dst/dst-bad-assign.rs similarity index 100% rename from src/test/ui/dst/dst-bad-assign.rs rename to tests/ui/dst/dst-bad-assign.rs diff --git a/src/test/ui/dst/dst-bad-assign.stderr b/tests/ui/dst/dst-bad-assign.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-assign.stderr rename to tests/ui/dst/dst-bad-assign.stderr diff --git a/src/test/ui/dst/dst-bad-coerce1.rs b/tests/ui/dst/dst-bad-coerce1.rs similarity index 100% rename from src/test/ui/dst/dst-bad-coerce1.rs rename to tests/ui/dst/dst-bad-coerce1.rs diff --git a/src/test/ui/dst/dst-bad-coerce1.stderr b/tests/ui/dst/dst-bad-coerce1.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-coerce1.stderr rename to tests/ui/dst/dst-bad-coerce1.stderr diff --git a/src/test/ui/dst/dst-bad-coerce2.rs b/tests/ui/dst/dst-bad-coerce2.rs similarity index 100% rename from src/test/ui/dst/dst-bad-coerce2.rs rename to tests/ui/dst/dst-bad-coerce2.rs diff --git a/src/test/ui/dst/dst-bad-coerce2.stderr b/tests/ui/dst/dst-bad-coerce2.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-coerce2.stderr rename to tests/ui/dst/dst-bad-coerce2.stderr diff --git a/src/test/ui/dst/dst-bad-coerce3.rs b/tests/ui/dst/dst-bad-coerce3.rs similarity index 100% rename from src/test/ui/dst/dst-bad-coerce3.rs rename to tests/ui/dst/dst-bad-coerce3.rs diff --git a/src/test/ui/dst/dst-bad-coerce3.stderr b/tests/ui/dst/dst-bad-coerce3.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-coerce3.stderr rename to tests/ui/dst/dst-bad-coerce3.stderr diff --git a/src/test/ui/dst/dst-bad-coerce4.rs b/tests/ui/dst/dst-bad-coerce4.rs similarity index 100% rename from src/test/ui/dst/dst-bad-coerce4.rs rename to tests/ui/dst/dst-bad-coerce4.rs diff --git a/src/test/ui/dst/dst-bad-coerce4.stderr b/tests/ui/dst/dst-bad-coerce4.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-coerce4.stderr rename to tests/ui/dst/dst-bad-coerce4.stderr diff --git a/src/test/ui/dst/dst-bad-coercions.rs b/tests/ui/dst/dst-bad-coercions.rs similarity index 100% rename from src/test/ui/dst/dst-bad-coercions.rs rename to tests/ui/dst/dst-bad-coercions.rs diff --git a/src/test/ui/dst/dst-bad-coercions.stderr b/tests/ui/dst/dst-bad-coercions.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-coercions.stderr rename to tests/ui/dst/dst-bad-coercions.stderr diff --git a/src/test/ui/dst/dst-bad-deep-2.rs b/tests/ui/dst/dst-bad-deep-2.rs similarity index 100% rename from src/test/ui/dst/dst-bad-deep-2.rs rename to tests/ui/dst/dst-bad-deep-2.rs diff --git a/src/test/ui/dst/dst-bad-deep-2.stderr b/tests/ui/dst/dst-bad-deep-2.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-deep-2.stderr rename to tests/ui/dst/dst-bad-deep-2.stderr diff --git a/src/test/ui/dst/dst-bad-deep.rs b/tests/ui/dst/dst-bad-deep.rs similarity index 100% rename from src/test/ui/dst/dst-bad-deep.rs rename to tests/ui/dst/dst-bad-deep.rs diff --git a/src/test/ui/dst/dst-bad-deep.stderr b/tests/ui/dst/dst-bad-deep.stderr similarity index 100% rename from src/test/ui/dst/dst-bad-deep.stderr rename to tests/ui/dst/dst-bad-deep.stderr diff --git a/src/test/ui/dst/dst-index.rs b/tests/ui/dst/dst-index.rs similarity index 100% rename from src/test/ui/dst/dst-index.rs rename to tests/ui/dst/dst-index.rs diff --git a/src/test/ui/dst/dst-index.stderr b/tests/ui/dst/dst-index.stderr similarity index 100% rename from src/test/ui/dst/dst-index.stderr rename to tests/ui/dst/dst-index.stderr diff --git a/src/test/ui/dst/dst-object-from-unsized-type.rs b/tests/ui/dst/dst-object-from-unsized-type.rs similarity index 100% rename from src/test/ui/dst/dst-object-from-unsized-type.rs rename to tests/ui/dst/dst-object-from-unsized-type.rs diff --git a/src/test/ui/dst/dst-object-from-unsized-type.stderr b/tests/ui/dst/dst-object-from-unsized-type.stderr similarity index 100% rename from src/test/ui/dst/dst-object-from-unsized-type.stderr rename to tests/ui/dst/dst-object-from-unsized-type.stderr diff --git a/src/test/ui/dst/dst-rvalue.rs b/tests/ui/dst/dst-rvalue.rs similarity index 100% rename from src/test/ui/dst/dst-rvalue.rs rename to tests/ui/dst/dst-rvalue.rs diff --git a/src/test/ui/dst/dst-rvalue.stderr b/tests/ui/dst/dst-rvalue.stderr similarity index 100% rename from src/test/ui/dst/dst-rvalue.stderr rename to tests/ui/dst/dst-rvalue.stderr diff --git a/src/test/ui/dst/dst-sized-trait-param.rs b/tests/ui/dst/dst-sized-trait-param.rs similarity index 100% rename from src/test/ui/dst/dst-sized-trait-param.rs rename to tests/ui/dst/dst-sized-trait-param.rs diff --git a/src/test/ui/dst/dst-sized-trait-param.stderr b/tests/ui/dst/dst-sized-trait-param.stderr similarity index 100% rename from src/test/ui/dst/dst-sized-trait-param.stderr rename to tests/ui/dst/dst-sized-trait-param.stderr diff --git a/src/test/ui/dupe-first-attr.rc b/tests/ui/dupe-first-attr.rc similarity index 100% rename from src/test/ui/dupe-first-attr.rc rename to tests/ui/dupe-first-attr.rc diff --git a/src/test/ui/duplicate/dupe-symbols-1.rs b/tests/ui/duplicate/dupe-symbols-1.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-1.rs rename to tests/ui/duplicate/dupe-symbols-1.rs diff --git a/src/test/ui/duplicate/dupe-symbols-1.stderr b/tests/ui/duplicate/dupe-symbols-1.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-1.stderr rename to tests/ui/duplicate/dupe-symbols-1.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-2.rs b/tests/ui/duplicate/dupe-symbols-2.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-2.rs rename to tests/ui/duplicate/dupe-symbols-2.rs diff --git a/src/test/ui/duplicate/dupe-symbols-2.stderr b/tests/ui/duplicate/dupe-symbols-2.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-2.stderr rename to tests/ui/duplicate/dupe-symbols-2.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-3.rs b/tests/ui/duplicate/dupe-symbols-3.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-3.rs rename to tests/ui/duplicate/dupe-symbols-3.rs diff --git a/src/test/ui/duplicate/dupe-symbols-3.stderr b/tests/ui/duplicate/dupe-symbols-3.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-3.stderr rename to tests/ui/duplicate/dupe-symbols-3.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-4.rs b/tests/ui/duplicate/dupe-symbols-4.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-4.rs rename to tests/ui/duplicate/dupe-symbols-4.rs diff --git a/src/test/ui/duplicate/dupe-symbols-4.stderr b/tests/ui/duplicate/dupe-symbols-4.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-4.stderr rename to tests/ui/duplicate/dupe-symbols-4.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-5.rs b/tests/ui/duplicate/dupe-symbols-5.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-5.rs rename to tests/ui/duplicate/dupe-symbols-5.rs diff --git a/src/test/ui/duplicate/dupe-symbols-5.stderr b/tests/ui/duplicate/dupe-symbols-5.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-5.stderr rename to tests/ui/duplicate/dupe-symbols-5.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-6.rs b/tests/ui/duplicate/dupe-symbols-6.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-6.rs rename to tests/ui/duplicate/dupe-symbols-6.rs diff --git a/src/test/ui/duplicate/dupe-symbols-6.stderr b/tests/ui/duplicate/dupe-symbols-6.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-6.stderr rename to tests/ui/duplicate/dupe-symbols-6.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-7.rs b/tests/ui/duplicate/dupe-symbols-7.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-7.rs rename to tests/ui/duplicate/dupe-symbols-7.rs diff --git a/src/test/ui/duplicate/dupe-symbols-7.stderr b/tests/ui/duplicate/dupe-symbols-7.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-7.stderr rename to tests/ui/duplicate/dupe-symbols-7.stderr diff --git a/src/test/ui/duplicate/dupe-symbols-8.rs b/tests/ui/duplicate/dupe-symbols-8.rs similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-8.rs rename to tests/ui/duplicate/dupe-symbols-8.rs diff --git a/src/test/ui/duplicate/dupe-symbols-8.stderr b/tests/ui/duplicate/dupe-symbols-8.stderr similarity index 100% rename from src/test/ui/duplicate/dupe-symbols-8.stderr rename to tests/ui/duplicate/dupe-symbols-8.stderr diff --git a/src/test/ui/duplicate/duplicate-check-macro-exports.rs b/tests/ui/duplicate/duplicate-check-macro-exports.rs similarity index 100% rename from src/test/ui/duplicate/duplicate-check-macro-exports.rs rename to tests/ui/duplicate/duplicate-check-macro-exports.rs diff --git a/src/test/ui/duplicate/duplicate-check-macro-exports.stderr b/tests/ui/duplicate/duplicate-check-macro-exports.stderr similarity index 100% rename from src/test/ui/duplicate/duplicate-check-macro-exports.stderr rename to tests/ui/duplicate/duplicate-check-macro-exports.stderr diff --git a/src/test/ui/duplicate/duplicate-parameter.rs b/tests/ui/duplicate/duplicate-parameter.rs similarity index 100% rename from src/test/ui/duplicate/duplicate-parameter.rs rename to tests/ui/duplicate/duplicate-parameter.rs diff --git a/src/test/ui/duplicate/duplicate-parameter.stderr b/tests/ui/duplicate/duplicate-parameter.stderr similarity index 100% rename from src/test/ui/duplicate/duplicate-parameter.stderr rename to tests/ui/duplicate/duplicate-parameter.stderr diff --git a/src/test/ui/duplicate/duplicate-type-parameter.rs b/tests/ui/duplicate/duplicate-type-parameter.rs similarity index 100% rename from src/test/ui/duplicate/duplicate-type-parameter.rs rename to tests/ui/duplicate/duplicate-type-parameter.rs diff --git a/src/test/ui/duplicate/duplicate-type-parameter.stderr b/tests/ui/duplicate/duplicate-type-parameter.stderr similarity index 100% rename from src/test/ui/duplicate/duplicate-type-parameter.stderr rename to tests/ui/duplicate/duplicate-type-parameter.stderr diff --git a/src/test/ui/duplicate_entry_error.rs b/tests/ui/duplicate_entry_error.rs similarity index 100% rename from src/test/ui/duplicate_entry_error.rs rename to tests/ui/duplicate_entry_error.rs diff --git a/src/test/ui/duplicate_entry_error.stderr b/tests/ui/duplicate_entry_error.stderr similarity index 100% rename from src/test/ui/duplicate_entry_error.stderr rename to tests/ui/duplicate_entry_error.stderr diff --git a/src/test/ui/dyn-drop/dyn-drop.rs b/tests/ui/dyn-drop/dyn-drop.rs similarity index 100% rename from src/test/ui/dyn-drop/dyn-drop.rs rename to tests/ui/dyn-drop/dyn-drop.rs diff --git a/src/test/ui/dyn-drop/dyn-drop.stderr b/tests/ui/dyn-drop/dyn-drop.stderr similarity index 100% rename from src/test/ui/dyn-drop/dyn-drop.stderr rename to tests/ui/dyn-drop/dyn-drop.stderr diff --git a/src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.fixed b/tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.fixed similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.fixed rename to tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.fixed diff --git a/src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.rs b/tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.rs rename to tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.rs diff --git a/src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.stderr b/tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.stderr similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.stderr rename to tests/ui/dyn-keyword/dyn-2015-edition-keyword-ident-lint.stderr diff --git a/src/test/ui/dyn-keyword/dyn-2015-idents-in-decl-macros-unlinted.rs b/tests/ui/dyn-keyword/dyn-2015-idents-in-decl-macros-unlinted.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-idents-in-decl-macros-unlinted.rs rename to tests/ui/dyn-keyword/dyn-2015-idents-in-decl-macros-unlinted.rs diff --git a/src/test/ui/dyn-keyword/dyn-2015-idents-in-macros-unlinted.rs b/tests/ui/dyn-keyword/dyn-2015-idents-in-macros-unlinted.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-idents-in-macros-unlinted.rs rename to tests/ui/dyn-keyword/dyn-2015-idents-in-macros-unlinted.rs diff --git a/src/test/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.rs b/tests/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.rs rename to tests/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.rs diff --git a/src/test/ui/dyn-keyword/dyn-2018-edition-lint.rs b/tests/ui/dyn-keyword/dyn-2018-edition-lint.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2018-edition-lint.rs rename to tests/ui/dyn-keyword/dyn-2018-edition-lint.rs diff --git a/src/test/ui/dyn-keyword/dyn-2018-edition-lint.stderr b/tests/ui/dyn-keyword/dyn-2018-edition-lint.stderr similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2018-edition-lint.stderr rename to tests/ui/dyn-keyword/dyn-2018-edition-lint.stderr diff --git a/src/test/ui/dyn-keyword/dyn-2021-edition-error.rs b/tests/ui/dyn-keyword/dyn-2021-edition-error.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2021-edition-error.rs rename to tests/ui/dyn-keyword/dyn-2021-edition-error.rs diff --git a/src/test/ui/dyn-keyword/dyn-2021-edition-error.stderr b/tests/ui/dyn-keyword/dyn-2021-edition-error.stderr similarity index 100% rename from src/test/ui/dyn-keyword/dyn-2021-edition-error.stderr rename to tests/ui/dyn-keyword/dyn-2021-edition-error.stderr diff --git a/src/test/ui/dyn-keyword/dyn-angle-brackets.fixed b/tests/ui/dyn-keyword/dyn-angle-brackets.fixed similarity index 100% rename from src/test/ui/dyn-keyword/dyn-angle-brackets.fixed rename to tests/ui/dyn-keyword/dyn-angle-brackets.fixed diff --git a/src/test/ui/dyn-keyword/dyn-angle-brackets.rs b/tests/ui/dyn-keyword/dyn-angle-brackets.rs similarity index 100% rename from src/test/ui/dyn-keyword/dyn-angle-brackets.rs rename to tests/ui/dyn-keyword/dyn-angle-brackets.rs diff --git a/src/test/ui/dyn-keyword/dyn-angle-brackets.stderr b/tests/ui/dyn-keyword/dyn-angle-brackets.stderr similarity index 100% rename from src/test/ui/dyn-keyword/dyn-angle-brackets.stderr rename to tests/ui/dyn-keyword/dyn-angle-brackets.stderr diff --git a/src/test/ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs b/tests/ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs similarity index 100% rename from src/test/ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs rename to tests/ui/dyn-keyword/issue-56327-dyn-trait-in-macro-is-okay.rs diff --git a/src/test/ui/dyn-star/align.normal.stderr b/tests/ui/dyn-star/align.normal.stderr similarity index 100% rename from src/test/ui/dyn-star/align.normal.stderr rename to tests/ui/dyn-star/align.normal.stderr diff --git a/src/test/ui/dyn-star/align.over_aligned.stderr b/tests/ui/dyn-star/align.over_aligned.stderr similarity index 100% rename from src/test/ui/dyn-star/align.over_aligned.stderr rename to tests/ui/dyn-star/align.over_aligned.stderr diff --git a/src/test/ui/dyn-star/align.rs b/tests/ui/dyn-star/align.rs similarity index 100% rename from src/test/ui/dyn-star/align.rs rename to tests/ui/dyn-star/align.rs diff --git a/src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs b/tests/ui/dyn-star/auxiliary/dyn-star-foreign.rs similarity index 100% rename from src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs rename to tests/ui/dyn-star/auxiliary/dyn-star-foreign.rs diff --git a/src/test/ui/dyn-star/box.rs b/tests/ui/dyn-star/box.rs similarity index 100% rename from src/test/ui/dyn-star/box.rs rename to tests/ui/dyn-star/box.rs diff --git a/src/test/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs b/tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs similarity index 100% rename from src/test/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs rename to tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs diff --git a/src/test/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr b/tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr similarity index 100% rename from src/test/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr rename to tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr diff --git a/src/test/ui/dyn-star/check-size-at-cast-polymorphic.rs b/tests/ui/dyn-star/check-size-at-cast-polymorphic.rs similarity index 100% rename from src/test/ui/dyn-star/check-size-at-cast-polymorphic.rs rename to tests/ui/dyn-star/check-size-at-cast-polymorphic.rs diff --git a/src/test/ui/dyn-star/check-size-at-cast.rs b/tests/ui/dyn-star/check-size-at-cast.rs similarity index 100% rename from src/test/ui/dyn-star/check-size-at-cast.rs rename to tests/ui/dyn-star/check-size-at-cast.rs diff --git a/src/test/ui/dyn-star/check-size-at-cast.stderr b/tests/ui/dyn-star/check-size-at-cast.stderr similarity index 100% rename from src/test/ui/dyn-star/check-size-at-cast.stderr rename to tests/ui/dyn-star/check-size-at-cast.stderr diff --git a/src/test/ui/dyn-star/const.rs b/tests/ui/dyn-star/const.rs similarity index 100% rename from src/test/ui/dyn-star/const.rs rename to tests/ui/dyn-star/const.rs diff --git a/src/test/ui/dyn-star/dispatch-on-pin-mut.rs b/tests/ui/dyn-star/dispatch-on-pin-mut.rs similarity index 100% rename from src/test/ui/dyn-star/dispatch-on-pin-mut.rs rename to tests/ui/dyn-star/dispatch-on-pin-mut.rs diff --git a/src/test/ui/dyn-star/dispatch-on-pin-mut.run.stdout b/tests/ui/dyn-star/dispatch-on-pin-mut.run.stdout similarity index 100% rename from src/test/ui/dyn-star/dispatch-on-pin-mut.run.stdout rename to tests/ui/dyn-star/dispatch-on-pin-mut.run.stdout diff --git a/src/test/ui/dyn-star/dispatch-on-pin-mut.stderr b/tests/ui/dyn-star/dispatch-on-pin-mut.stderr similarity index 100% rename from src/test/ui/dyn-star/dispatch-on-pin-mut.stderr rename to tests/ui/dyn-star/dispatch-on-pin-mut.stderr diff --git a/src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.rs b/tests/ui/dyn-star/dont-unsize-coerce-dyn-star.rs similarity index 100% rename from src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.rs rename to tests/ui/dyn-star/dont-unsize-coerce-dyn-star.rs diff --git a/src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.run.stdout b/tests/ui/dyn-star/dont-unsize-coerce-dyn-star.run.stdout similarity index 100% rename from src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.run.stdout rename to tests/ui/dyn-star/dont-unsize-coerce-dyn-star.run.stdout diff --git a/src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.stderr b/tests/ui/dyn-star/dont-unsize-coerce-dyn-star.stderr similarity index 100% rename from src/test/ui/dyn-star/dont-unsize-coerce-dyn-star.stderr rename to tests/ui/dyn-star/dont-unsize-coerce-dyn-star.stderr diff --git a/src/test/ui/dyn-star/drop.rs b/tests/ui/dyn-star/drop.rs similarity index 100% rename from src/test/ui/dyn-star/drop.rs rename to tests/ui/dyn-star/drop.rs diff --git a/src/test/ui/dyn-star/drop.run.stdout b/tests/ui/dyn-star/drop.run.stdout similarity index 100% rename from src/test/ui/dyn-star/drop.run.stdout rename to tests/ui/dyn-star/drop.run.stdout diff --git a/src/test/ui/dyn-star/dyn-async-trait.rs b/tests/ui/dyn-star/dyn-async-trait.rs similarity index 100% rename from src/test/ui/dyn-star/dyn-async-trait.rs rename to tests/ui/dyn-star/dyn-async-trait.rs diff --git a/src/test/ui/dyn-star/dyn-to-rigid.rs b/tests/ui/dyn-star/dyn-to-rigid.rs similarity index 100% rename from src/test/ui/dyn-star/dyn-to-rigid.rs rename to tests/ui/dyn-star/dyn-to-rigid.rs diff --git a/src/test/ui/dyn-star/dyn-to-rigid.stderr b/tests/ui/dyn-star/dyn-to-rigid.stderr similarity index 100% rename from src/test/ui/dyn-star/dyn-to-rigid.stderr rename to tests/ui/dyn-star/dyn-to-rigid.stderr diff --git a/src/test/ui/dyn-star/error.rs b/tests/ui/dyn-star/error.rs similarity index 100% rename from src/test/ui/dyn-star/error.rs rename to tests/ui/dyn-star/error.rs diff --git a/src/test/ui/dyn-star/error.stderr b/tests/ui/dyn-star/error.stderr similarity index 100% rename from src/test/ui/dyn-star/error.stderr rename to tests/ui/dyn-star/error.stderr diff --git a/src/test/ui/dyn-star/feature-gate-dyn_star.rs b/tests/ui/dyn-star/feature-gate-dyn_star.rs similarity index 100% rename from src/test/ui/dyn-star/feature-gate-dyn_star.rs rename to tests/ui/dyn-star/feature-gate-dyn_star.rs diff --git a/src/test/ui/dyn-star/feature-gate-dyn_star.stderr b/tests/ui/dyn-star/feature-gate-dyn_star.stderr similarity index 100% rename from src/test/ui/dyn-star/feature-gate-dyn_star.stderr rename to tests/ui/dyn-star/feature-gate-dyn_star.stderr diff --git a/src/test/ui/dyn-star/issue-102430.rs b/tests/ui/dyn-star/issue-102430.rs similarity index 100% rename from src/test/ui/dyn-star/issue-102430.rs rename to tests/ui/dyn-star/issue-102430.rs diff --git a/src/test/ui/dyn-star/make-dyn-star.rs b/tests/ui/dyn-star/make-dyn-star.rs similarity index 100% rename from src/test/ui/dyn-star/make-dyn-star.rs rename to tests/ui/dyn-star/make-dyn-star.rs diff --git a/src/test/ui/dyn-star/method.rs b/tests/ui/dyn-star/method.rs similarity index 100% rename from src/test/ui/dyn-star/method.rs rename to tests/ui/dyn-star/method.rs diff --git a/src/test/ui/dyn-star/no-explicit-dyn-star-cast.rs b/tests/ui/dyn-star/no-explicit-dyn-star-cast.rs similarity index 100% rename from src/test/ui/dyn-star/no-explicit-dyn-star-cast.rs rename to tests/ui/dyn-star/no-explicit-dyn-star-cast.rs diff --git a/src/test/ui/dyn-star/no-explicit-dyn-star-cast.stderr b/tests/ui/dyn-star/no-explicit-dyn-star-cast.stderr similarity index 100% rename from src/test/ui/dyn-star/no-explicit-dyn-star-cast.stderr rename to tests/ui/dyn-star/no-explicit-dyn-star-cast.stderr diff --git a/src/test/ui/dyn-star/no-explicit-dyn-star.rs b/tests/ui/dyn-star/no-explicit-dyn-star.rs similarity index 100% rename from src/test/ui/dyn-star/no-explicit-dyn-star.rs rename to tests/ui/dyn-star/no-explicit-dyn-star.rs diff --git a/src/test/ui/dyn-star/no-explicit-dyn-star.stderr b/tests/ui/dyn-star/no-explicit-dyn-star.stderr similarity index 100% rename from src/test/ui/dyn-star/no-explicit-dyn-star.stderr rename to tests/ui/dyn-star/no-explicit-dyn-star.stderr diff --git a/src/test/ui/dyn-star/no-implicit-dyn-star.rs b/tests/ui/dyn-star/no-implicit-dyn-star.rs similarity index 100% rename from src/test/ui/dyn-star/no-implicit-dyn-star.rs rename to tests/ui/dyn-star/no-implicit-dyn-star.rs diff --git a/src/test/ui/dyn-star/no-implicit-dyn-star.stderr b/tests/ui/dyn-star/no-implicit-dyn-star.stderr similarity index 100% rename from src/test/ui/dyn-star/no-implicit-dyn-star.stderr rename to tests/ui/dyn-star/no-implicit-dyn-star.stderr diff --git a/src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.rs b/tests/ui/dyn-star/no-unsize-coerce-dyn-trait.rs similarity index 100% rename from src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.rs rename to tests/ui/dyn-star/no-unsize-coerce-dyn-trait.rs diff --git a/src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.stderr b/tests/ui/dyn-star/no-unsize-coerce-dyn-trait.stderr similarity index 100% rename from src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.stderr rename to tests/ui/dyn-star/no-unsize-coerce-dyn-trait.stderr diff --git a/src/test/ui/dyn-star/return.rs b/tests/ui/dyn-star/return.rs similarity index 100% rename from src/test/ui/dyn-star/return.rs rename to tests/ui/dyn-star/return.rs diff --git a/src/test/ui/dyn-star/return.stderr b/tests/ui/dyn-star/return.stderr similarity index 100% rename from src/test/ui/dyn-star/return.stderr rename to tests/ui/dyn-star/return.stderr diff --git a/src/test/ui/dyn-star/syntax.rs b/tests/ui/dyn-star/syntax.rs similarity index 100% rename from src/test/ui/dyn-star/syntax.rs rename to tests/ui/dyn-star/syntax.rs diff --git a/src/test/ui/dyn-star/unsize-into-ref-dyn-star.rs b/tests/ui/dyn-star/unsize-into-ref-dyn-star.rs similarity index 100% rename from src/test/ui/dyn-star/unsize-into-ref-dyn-star.rs rename to tests/ui/dyn-star/unsize-into-ref-dyn-star.rs diff --git a/src/test/ui/dyn-star/unsize-into-ref-dyn-star.stderr b/tests/ui/dyn-star/unsize-into-ref-dyn-star.stderr similarity index 100% rename from src/test/ui/dyn-star/unsize-into-ref-dyn-star.stderr rename to tests/ui/dyn-star/unsize-into-ref-dyn-star.stderr diff --git a/src/test/ui/dyn-star/upcast.rs b/tests/ui/dyn-star/upcast.rs similarity index 100% rename from src/test/ui/dyn-star/upcast.rs rename to tests/ui/dyn-star/upcast.rs diff --git a/src/test/ui/dyn-star/upcast.stderr b/tests/ui/dyn-star/upcast.stderr similarity index 100% rename from src/test/ui/dyn-star/upcast.stderr rename to tests/ui/dyn-star/upcast.stderr diff --git a/src/test/ui/dynamically-sized-types/dst-coerce-custom.rs b/tests/ui/dynamically-sized-types/dst-coerce-custom.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-coerce-custom.rs rename to tests/ui/dynamically-sized-types/dst-coerce-custom.rs diff --git a/src/test/ui/dynamically-sized-types/dst-coerce-rc.rs b/tests/ui/dynamically-sized-types/dst-coerce-rc.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-coerce-rc.rs rename to tests/ui/dynamically-sized-types/dst-coerce-rc.rs diff --git a/src/test/ui/dynamically-sized-types/dst-coercions.rs b/tests/ui/dynamically-sized-types/dst-coercions.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-coercions.rs rename to tests/ui/dynamically-sized-types/dst-coercions.rs diff --git a/src/test/ui/dynamically-sized-types/dst-deref-mut.rs b/tests/ui/dynamically-sized-types/dst-deref-mut.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-deref-mut.rs rename to tests/ui/dynamically-sized-types/dst-deref-mut.rs diff --git a/src/test/ui/dynamically-sized-types/dst-deref.rs b/tests/ui/dynamically-sized-types/dst-deref.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-deref.rs rename to tests/ui/dynamically-sized-types/dst-deref.rs diff --git a/src/test/ui/dynamically-sized-types/dst-field-align.rs b/tests/ui/dynamically-sized-types/dst-field-align.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-field-align.rs rename to tests/ui/dynamically-sized-types/dst-field-align.rs diff --git a/src/test/ui/dynamically-sized-types/dst-index.rs b/tests/ui/dynamically-sized-types/dst-index.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-index.rs rename to tests/ui/dynamically-sized-types/dst-index.rs diff --git a/src/test/ui/dynamically-sized-types/dst-irrefutable-bind.rs b/tests/ui/dynamically-sized-types/dst-irrefutable-bind.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-irrefutable-bind.rs rename to tests/ui/dynamically-sized-types/dst-irrefutable-bind.rs diff --git a/src/test/ui/dynamically-sized-types/dst-raw.rs b/tests/ui/dynamically-sized-types/dst-raw.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-raw.rs rename to tests/ui/dynamically-sized-types/dst-raw.rs diff --git a/src/test/ui/dynamically-sized-types/dst-struct-sole.rs b/tests/ui/dynamically-sized-types/dst-struct-sole.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-struct-sole.rs rename to tests/ui/dynamically-sized-types/dst-struct-sole.rs diff --git a/src/test/ui/dynamically-sized-types/dst-struct.rs b/tests/ui/dynamically-sized-types/dst-struct.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-struct.rs rename to tests/ui/dynamically-sized-types/dst-struct.rs diff --git a/src/test/ui/dynamically-sized-types/dst-trait-tuple.rs b/tests/ui/dynamically-sized-types/dst-trait-tuple.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-trait-tuple.rs rename to tests/ui/dynamically-sized-types/dst-trait-tuple.rs diff --git a/src/test/ui/dynamically-sized-types/dst-trait.rs b/tests/ui/dynamically-sized-types/dst-trait.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-trait.rs rename to tests/ui/dynamically-sized-types/dst-trait.rs diff --git a/src/test/ui/dynamically-sized-types/dst-tuple-no-reorder.rs b/tests/ui/dynamically-sized-types/dst-tuple-no-reorder.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-tuple-no-reorder.rs rename to tests/ui/dynamically-sized-types/dst-tuple-no-reorder.rs diff --git a/src/test/ui/dynamically-sized-types/dst-tuple-sole.rs b/tests/ui/dynamically-sized-types/dst-tuple-sole.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-tuple-sole.rs rename to tests/ui/dynamically-sized-types/dst-tuple-sole.rs diff --git a/src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs b/tests/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs rename to tests/ui/dynamically-sized-types/dst-tuple-zst-offsets.rs diff --git a/src/test/ui/dynamically-sized-types/dst-tuple.rs b/tests/ui/dynamically-sized-types/dst-tuple.rs similarity index 100% rename from src/test/ui/dynamically-sized-types/dst-tuple.rs rename to tests/ui/dynamically-sized-types/dst-tuple.rs diff --git a/src/test/ui/early-ret-binop-add.rs b/tests/ui/early-ret-binop-add.rs similarity index 100% rename from src/test/ui/early-ret-binop-add.rs rename to tests/ui/early-ret-binop-add.rs diff --git a/src/test/ui/editions/async-block-2015.rs b/tests/ui/editions/async-block-2015.rs similarity index 100% rename from src/test/ui/editions/async-block-2015.rs rename to tests/ui/editions/async-block-2015.rs diff --git a/src/test/ui/editions/async-block-2015.stderr b/tests/ui/editions/async-block-2015.stderr similarity index 100% rename from src/test/ui/editions/async-block-2015.stderr rename to tests/ui/editions/async-block-2015.stderr diff --git a/src/test/ui/editions/auxiliary/absolute.rs b/tests/ui/editions/auxiliary/absolute.rs similarity index 100% rename from src/test/ui/editions/auxiliary/absolute.rs rename to tests/ui/editions/auxiliary/absolute.rs diff --git a/src/test/ui/editions/auxiliary/edition-extern-crate-allowed.rs b/tests/ui/editions/auxiliary/edition-extern-crate-allowed.rs similarity index 100% rename from src/test/ui/editions/auxiliary/edition-extern-crate-allowed.rs rename to tests/ui/editions/auxiliary/edition-extern-crate-allowed.rs diff --git a/src/test/ui/editions/auxiliary/edition-imports-2015.rs b/tests/ui/editions/auxiliary/edition-imports-2015.rs similarity index 100% rename from src/test/ui/editions/auxiliary/edition-imports-2015.rs rename to tests/ui/editions/auxiliary/edition-imports-2015.rs diff --git a/src/test/ui/editions/auxiliary/edition-imports-2018.rs b/tests/ui/editions/auxiliary/edition-imports-2018.rs similarity index 100% rename from src/test/ui/editions/auxiliary/edition-imports-2018.rs rename to tests/ui/editions/auxiliary/edition-imports-2018.rs diff --git a/src/test/ui/editions/auxiliary/edition-kw-macro-2015.rs b/tests/ui/editions/auxiliary/edition-kw-macro-2015.rs similarity index 100% rename from src/test/ui/editions/auxiliary/edition-kw-macro-2015.rs rename to tests/ui/editions/auxiliary/edition-kw-macro-2015.rs diff --git a/src/test/ui/editions/auxiliary/edition-kw-macro-2018.rs b/tests/ui/editions/auxiliary/edition-kw-macro-2018.rs similarity index 100% rename from src/test/ui/editions/auxiliary/edition-kw-macro-2018.rs rename to tests/ui/editions/auxiliary/edition-kw-macro-2018.rs diff --git a/src/test/ui/editions/dyn-trait-sugg-2021.rs b/tests/ui/editions/dyn-trait-sugg-2021.rs similarity index 100% rename from src/test/ui/editions/dyn-trait-sugg-2021.rs rename to tests/ui/editions/dyn-trait-sugg-2021.rs diff --git a/src/test/ui/editions/dyn-trait-sugg-2021.stderr b/tests/ui/editions/dyn-trait-sugg-2021.stderr similarity index 100% rename from src/test/ui/editions/dyn-trait-sugg-2021.stderr rename to tests/ui/editions/dyn-trait-sugg-2021.stderr diff --git a/src/test/ui/editions/edition-extern-crate-allowed.rs b/tests/ui/editions/edition-extern-crate-allowed.rs similarity index 100% rename from src/test/ui/editions/edition-extern-crate-allowed.rs rename to tests/ui/editions/edition-extern-crate-allowed.rs diff --git a/src/test/ui/editions/edition-extern-crate-allowed.stderr b/tests/ui/editions/edition-extern-crate-allowed.stderr similarity index 100% rename from src/test/ui/editions/edition-extern-crate-allowed.stderr rename to tests/ui/editions/edition-extern-crate-allowed.stderr diff --git a/src/test/ui/editions/edition-feature-ok.rs b/tests/ui/editions/edition-feature-ok.rs similarity index 100% rename from src/test/ui/editions/edition-feature-ok.rs rename to tests/ui/editions/edition-feature-ok.rs diff --git a/src/test/ui/editions/edition-feature-redundant.rs b/tests/ui/editions/edition-feature-redundant.rs similarity index 100% rename from src/test/ui/editions/edition-feature-redundant.rs rename to tests/ui/editions/edition-feature-redundant.rs diff --git a/src/test/ui/editions/edition-feature-redundant.stderr b/tests/ui/editions/edition-feature-redundant.stderr similarity index 100% rename from src/test/ui/editions/edition-feature-redundant.stderr rename to tests/ui/editions/edition-feature-redundant.stderr diff --git a/src/test/ui/editions/edition-imports-2015.rs b/tests/ui/editions/edition-imports-2015.rs similarity index 100% rename from src/test/ui/editions/edition-imports-2015.rs rename to tests/ui/editions/edition-imports-2015.rs diff --git a/src/test/ui/editions/edition-imports-2015.stderr b/tests/ui/editions/edition-imports-2015.stderr similarity index 100% rename from src/test/ui/editions/edition-imports-2015.stderr rename to tests/ui/editions/edition-imports-2015.stderr diff --git a/src/test/ui/editions/edition-imports-2018.rs b/tests/ui/editions/edition-imports-2018.rs similarity index 100% rename from src/test/ui/editions/edition-imports-2018.rs rename to tests/ui/editions/edition-imports-2018.rs diff --git a/src/test/ui/editions/edition-imports-2018.stderr b/tests/ui/editions/edition-imports-2018.stderr similarity index 100% rename from src/test/ui/editions/edition-imports-2018.stderr rename to tests/ui/editions/edition-imports-2018.stderr diff --git a/src/test/ui/editions/edition-imports-virtual-2015-ambiguity.rs b/tests/ui/editions/edition-imports-virtual-2015-ambiguity.rs similarity index 100% rename from src/test/ui/editions/edition-imports-virtual-2015-ambiguity.rs rename to tests/ui/editions/edition-imports-virtual-2015-ambiguity.rs diff --git a/src/test/ui/editions/edition-imports-virtual-2015-gated.rs b/tests/ui/editions/edition-imports-virtual-2015-gated.rs similarity index 100% rename from src/test/ui/editions/edition-imports-virtual-2015-gated.rs rename to tests/ui/editions/edition-imports-virtual-2015-gated.rs diff --git a/src/test/ui/editions/edition-imports-virtual-2015-gated.stderr b/tests/ui/editions/edition-imports-virtual-2015-gated.stderr similarity index 100% rename from src/test/ui/editions/edition-imports-virtual-2015-gated.stderr rename to tests/ui/editions/edition-imports-virtual-2015-gated.stderr diff --git a/src/test/ui/editions/edition-keywords-2015-2015-expansion.rs b/tests/ui/editions/edition-keywords-2015-2015-expansion.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2015-expansion.rs rename to tests/ui/editions/edition-keywords-2015-2015-expansion.rs diff --git a/src/test/ui/editions/edition-keywords-2015-2015-parsing.rs b/tests/ui/editions/edition-keywords-2015-2015-parsing.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2015-parsing.rs rename to tests/ui/editions/edition-keywords-2015-2015-parsing.rs diff --git a/src/test/ui/editions/edition-keywords-2015-2015-parsing.stderr b/tests/ui/editions/edition-keywords-2015-2015-parsing.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2015-parsing.stderr rename to tests/ui/editions/edition-keywords-2015-2015-parsing.stderr diff --git a/src/test/ui/editions/edition-keywords-2015-2015.rs b/tests/ui/editions/edition-keywords-2015-2015.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2015.rs rename to tests/ui/editions/edition-keywords-2015-2015.rs diff --git a/src/test/ui/editions/edition-keywords-2015-2018-expansion.rs b/tests/ui/editions/edition-keywords-2015-2018-expansion.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2018-expansion.rs rename to tests/ui/editions/edition-keywords-2015-2018-expansion.rs diff --git a/src/test/ui/editions/edition-keywords-2015-2018-expansion.stderr b/tests/ui/editions/edition-keywords-2015-2018-expansion.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2018-expansion.stderr rename to tests/ui/editions/edition-keywords-2015-2018-expansion.stderr diff --git a/src/test/ui/editions/edition-keywords-2015-2018-parsing.rs b/tests/ui/editions/edition-keywords-2015-2018-parsing.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2018-parsing.rs rename to tests/ui/editions/edition-keywords-2015-2018-parsing.rs diff --git a/src/test/ui/editions/edition-keywords-2015-2018-parsing.stderr b/tests/ui/editions/edition-keywords-2015-2018-parsing.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2018-parsing.stderr rename to tests/ui/editions/edition-keywords-2015-2018-parsing.stderr diff --git a/src/test/ui/editions/edition-keywords-2015-2018.rs b/tests/ui/editions/edition-keywords-2015-2018.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2015-2018.rs rename to tests/ui/editions/edition-keywords-2015-2018.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2015-expansion.rs b/tests/ui/editions/edition-keywords-2018-2015-expansion.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2015-expansion.rs rename to tests/ui/editions/edition-keywords-2018-2015-expansion.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2015-parsing.rs b/tests/ui/editions/edition-keywords-2018-2015-parsing.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2015-parsing.rs rename to tests/ui/editions/edition-keywords-2018-2015-parsing.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr b/tests/ui/editions/edition-keywords-2018-2015-parsing.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr rename to tests/ui/editions/edition-keywords-2018-2015-parsing.stderr diff --git a/src/test/ui/editions/edition-keywords-2018-2015.rs b/tests/ui/editions/edition-keywords-2018-2015.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2015.rs rename to tests/ui/editions/edition-keywords-2018-2015.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2018-expansion.rs b/tests/ui/editions/edition-keywords-2018-2018-expansion.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2018-expansion.rs rename to tests/ui/editions/edition-keywords-2018-2018-expansion.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2018-expansion.stderr b/tests/ui/editions/edition-keywords-2018-2018-expansion.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2018-expansion.stderr rename to tests/ui/editions/edition-keywords-2018-2018-expansion.stderr diff --git a/src/test/ui/editions/edition-keywords-2018-2018-parsing.rs b/tests/ui/editions/edition-keywords-2018-2018-parsing.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2018-parsing.rs rename to tests/ui/editions/edition-keywords-2018-2018-parsing.rs diff --git a/src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr b/tests/ui/editions/edition-keywords-2018-2018-parsing.stderr similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr rename to tests/ui/editions/edition-keywords-2018-2018-parsing.stderr diff --git a/src/test/ui/editions/edition-keywords-2018-2018.rs b/tests/ui/editions/edition-keywords-2018-2018.rs similarity index 100% rename from src/test/ui/editions/edition-keywords-2018-2018.rs rename to tests/ui/editions/edition-keywords-2018-2018.rs diff --git a/src/test/ui/editions/edition-raw-pointer-method-2015.rs b/tests/ui/editions/edition-raw-pointer-method-2015.rs similarity index 100% rename from src/test/ui/editions/edition-raw-pointer-method-2015.rs rename to tests/ui/editions/edition-raw-pointer-method-2015.rs diff --git a/src/test/ui/editions/edition-raw-pointer-method-2015.stderr b/tests/ui/editions/edition-raw-pointer-method-2015.stderr similarity index 100% rename from src/test/ui/editions/edition-raw-pointer-method-2015.stderr rename to tests/ui/editions/edition-raw-pointer-method-2015.stderr diff --git a/src/test/ui/editions/edition-raw-pointer-method-2018.rs b/tests/ui/editions/edition-raw-pointer-method-2018.rs similarity index 100% rename from src/test/ui/editions/edition-raw-pointer-method-2018.rs rename to tests/ui/editions/edition-raw-pointer-method-2018.rs diff --git a/src/test/ui/editions/edition-raw-pointer-method-2018.stderr b/tests/ui/editions/edition-raw-pointer-method-2018.stderr similarity index 100% rename from src/test/ui/editions/edition-raw-pointer-method-2018.stderr rename to tests/ui/editions/edition-raw-pointer-method-2018.stderr diff --git a/src/test/ui/editions/epoch-gate-feature.rs b/tests/ui/editions/epoch-gate-feature.rs similarity index 100% rename from src/test/ui/editions/epoch-gate-feature.rs rename to tests/ui/editions/epoch-gate-feature.rs diff --git a/src/test/ui/elide-errors-on-mismatched-tuple.rs b/tests/ui/elide-errors-on-mismatched-tuple.rs similarity index 100% rename from src/test/ui/elide-errors-on-mismatched-tuple.rs rename to tests/ui/elide-errors-on-mismatched-tuple.rs diff --git a/src/test/ui/elide-errors-on-mismatched-tuple.stderr b/tests/ui/elide-errors-on-mismatched-tuple.stderr similarity index 100% rename from src/test/ui/elide-errors-on-mismatched-tuple.stderr rename to tests/ui/elide-errors-on-mismatched-tuple.stderr diff --git a/src/test/ui/elided-test.rs b/tests/ui/elided-test.rs similarity index 100% rename from src/test/ui/elided-test.rs rename to tests/ui/elided-test.rs diff --git a/src/test/ui/elided-test.stderr b/tests/ui/elided-test.stderr similarity index 100% rename from src/test/ui/elided-test.stderr rename to tests/ui/elided-test.stderr diff --git a/src/test/ui/else-if.rs b/tests/ui/else-if.rs similarity index 100% rename from src/test/ui/else-if.rs rename to tests/ui/else-if.rs diff --git a/src/test/ui/empty-allocation-non-null.rs b/tests/ui/empty-allocation-non-null.rs similarity index 100% rename from src/test/ui/empty-allocation-non-null.rs rename to tests/ui/empty-allocation-non-null.rs diff --git a/src/test/ui/empty-allocation-rvalue-non-null.rs b/tests/ui/empty-allocation-rvalue-non-null.rs similarity index 100% rename from src/test/ui/empty-allocation-rvalue-non-null.rs rename to tests/ui/empty-allocation-rvalue-non-null.rs diff --git a/src/test/ui/empty-type-parameter-list.rs b/tests/ui/empty-type-parameter-list.rs similarity index 100% rename from src/test/ui/empty-type-parameter-list.rs rename to tests/ui/empty-type-parameter-list.rs diff --git a/src/test/ui/empty/auxiliary/empty-struct.rs b/tests/ui/empty/auxiliary/empty-struct.rs similarity index 100% rename from src/test/ui/empty/auxiliary/empty-struct.rs rename to tests/ui/empty/auxiliary/empty-struct.rs diff --git a/src/test/ui/empty/auxiliary/two_macros.rs b/tests/ui/empty/auxiliary/two_macros.rs similarity index 100% rename from src/test/ui/empty/auxiliary/two_macros.rs rename to tests/ui/empty/auxiliary/two_macros.rs diff --git a/src/test/ui/empty/empty-attributes.rs b/tests/ui/empty/empty-attributes.rs similarity index 100% rename from src/test/ui/empty/empty-attributes.rs rename to tests/ui/empty/empty-attributes.rs diff --git a/src/test/ui/empty/empty-attributes.stderr b/tests/ui/empty/empty-attributes.stderr similarity index 100% rename from src/test/ui/empty/empty-attributes.stderr rename to tests/ui/empty/empty-attributes.stderr diff --git a/src/test/ui/empty/empty-comment.rs b/tests/ui/empty/empty-comment.rs similarity index 100% rename from src/test/ui/empty/empty-comment.rs rename to tests/ui/empty/empty-comment.rs diff --git a/src/test/ui/empty/empty-comment.stderr b/tests/ui/empty/empty-comment.stderr similarity index 100% rename from src/test/ui/empty/empty-comment.stderr rename to tests/ui/empty/empty-comment.stderr diff --git a/src/test/ui/empty/empty-linkname.rs b/tests/ui/empty/empty-linkname.rs similarity index 100% rename from src/test/ui/empty/empty-linkname.rs rename to tests/ui/empty/empty-linkname.rs diff --git a/src/test/ui/empty/empty-linkname.stderr b/tests/ui/empty/empty-linkname.stderr similarity index 100% rename from src/test/ui/empty/empty-linkname.stderr rename to tests/ui/empty/empty-linkname.stderr diff --git a/src/test/ui/empty/empty-macro-use.rs b/tests/ui/empty/empty-macro-use.rs similarity index 100% rename from src/test/ui/empty/empty-macro-use.rs rename to tests/ui/empty/empty-macro-use.rs diff --git a/src/test/ui/empty/empty-macro-use.stderr b/tests/ui/empty/empty-macro-use.stderr similarity index 100% rename from src/test/ui/empty/empty-macro-use.stderr rename to tests/ui/empty/empty-macro-use.stderr diff --git a/src/test/ui/empty/empty-never-array.rs b/tests/ui/empty/empty-never-array.rs similarity index 100% rename from src/test/ui/empty/empty-never-array.rs rename to tests/ui/empty/empty-never-array.rs diff --git a/src/test/ui/empty/empty-never-array.stderr b/tests/ui/empty/empty-never-array.stderr similarity index 100% rename from src/test/ui/empty/empty-never-array.stderr rename to tests/ui/empty/empty-never-array.stderr diff --git a/src/test/ui/empty/empty-struct-braces-expr.rs b/tests/ui/empty/empty-struct-braces-expr.rs similarity index 100% rename from src/test/ui/empty/empty-struct-braces-expr.rs rename to tests/ui/empty/empty-struct-braces-expr.rs diff --git a/src/test/ui/empty/empty-struct-braces-expr.stderr b/tests/ui/empty/empty-struct-braces-expr.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-braces-expr.stderr rename to tests/ui/empty/empty-struct-braces-expr.stderr diff --git a/src/test/ui/empty/empty-struct-braces-pat-1.rs b/tests/ui/empty/empty-struct-braces-pat-1.rs similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-1.rs rename to tests/ui/empty/empty-struct-braces-pat-1.rs diff --git a/src/test/ui/empty/empty-struct-braces-pat-1.stderr b/tests/ui/empty/empty-struct-braces-pat-1.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-1.stderr rename to tests/ui/empty/empty-struct-braces-pat-1.stderr diff --git a/src/test/ui/empty/empty-struct-braces-pat-2.rs b/tests/ui/empty/empty-struct-braces-pat-2.rs similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-2.rs rename to tests/ui/empty/empty-struct-braces-pat-2.rs diff --git a/src/test/ui/empty/empty-struct-braces-pat-2.stderr b/tests/ui/empty/empty-struct-braces-pat-2.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-2.stderr rename to tests/ui/empty/empty-struct-braces-pat-2.stderr diff --git a/src/test/ui/empty/empty-struct-braces-pat-3.rs b/tests/ui/empty/empty-struct-braces-pat-3.rs similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-3.rs rename to tests/ui/empty/empty-struct-braces-pat-3.rs diff --git a/src/test/ui/empty/empty-struct-braces-pat-3.stderr b/tests/ui/empty/empty-struct-braces-pat-3.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-braces-pat-3.stderr rename to tests/ui/empty/empty-struct-braces-pat-3.stderr diff --git a/src/test/ui/empty/empty-struct-tuple-pat.rs b/tests/ui/empty/empty-struct-tuple-pat.rs similarity index 100% rename from src/test/ui/empty/empty-struct-tuple-pat.rs rename to tests/ui/empty/empty-struct-tuple-pat.rs diff --git a/src/test/ui/empty/empty-struct-tuple-pat.stderr b/tests/ui/empty/empty-struct-tuple-pat.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-tuple-pat.stderr rename to tests/ui/empty/empty-struct-tuple-pat.stderr diff --git a/src/test/ui/empty/empty-struct-unit-expr.rs b/tests/ui/empty/empty-struct-unit-expr.rs similarity index 100% rename from src/test/ui/empty/empty-struct-unit-expr.rs rename to tests/ui/empty/empty-struct-unit-expr.rs diff --git a/src/test/ui/empty/empty-struct-unit-expr.stderr b/tests/ui/empty/empty-struct-unit-expr.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-unit-expr.stderr rename to tests/ui/empty/empty-struct-unit-expr.stderr diff --git a/src/test/ui/empty/empty-struct-unit-pat.rs b/tests/ui/empty/empty-struct-unit-pat.rs similarity index 100% rename from src/test/ui/empty/empty-struct-unit-pat.rs rename to tests/ui/empty/empty-struct-unit-pat.rs diff --git a/src/test/ui/empty/empty-struct-unit-pat.stderr b/tests/ui/empty/empty-struct-unit-pat.stderr similarity index 100% rename from src/test/ui/empty/empty-struct-unit-pat.stderr rename to tests/ui/empty/empty-struct-unit-pat.stderr diff --git a/src/test/ui/empty/issue-37026.rs b/tests/ui/empty/issue-37026.rs similarity index 100% rename from src/test/ui/empty/issue-37026.rs rename to tests/ui/empty/issue-37026.rs diff --git a/src/test/ui/empty/issue-37026.stderr b/tests/ui/empty/issue-37026.stderr similarity index 100% rename from src/test/ui/empty/issue-37026.stderr rename to tests/ui/empty/issue-37026.stderr diff --git a/src/test/ui/empty/no-link.rs b/tests/ui/empty/no-link.rs similarity index 100% rename from src/test/ui/empty/no-link.rs rename to tests/ui/empty/no-link.rs diff --git a/src/test/ui/empty_global_asm.rs b/tests/ui/empty_global_asm.rs similarity index 100% rename from src/test/ui/empty_global_asm.rs rename to tests/ui/empty_global_asm.rs diff --git a/src/test/ui/entry-point/auxiliary/main_functions.rs b/tests/ui/entry-point/auxiliary/main_functions.rs similarity index 100% rename from src/test/ui/entry-point/auxiliary/main_functions.rs rename to tests/ui/entry-point/auxiliary/main_functions.rs diff --git a/src/test/ui/entry-point/imported_main_conflict.rs b/tests/ui/entry-point/imported_main_conflict.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_conflict.rs rename to tests/ui/entry-point/imported_main_conflict.rs diff --git a/src/test/ui/entry-point/imported_main_conflict.stderr b/tests/ui/entry-point/imported_main_conflict.stderr similarity index 100% rename from src/test/ui/entry-point/imported_main_conflict.stderr rename to tests/ui/entry-point/imported_main_conflict.stderr diff --git a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs b/tests/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs rename to tests/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs diff --git a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr b/tests/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr similarity index 100% rename from src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr rename to tests/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr diff --git a/src/test/ui/entry-point/imported_main_const_forbidden.rs b/tests/ui/entry-point/imported_main_const_forbidden.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_const_forbidden.rs rename to tests/ui/entry-point/imported_main_const_forbidden.rs diff --git a/src/test/ui/entry-point/imported_main_const_forbidden.stderr b/tests/ui/entry-point/imported_main_const_forbidden.stderr similarity index 100% rename from src/test/ui/entry-point/imported_main_const_forbidden.stderr rename to tests/ui/entry-point/imported_main_const_forbidden.stderr diff --git a/src/test/ui/entry-point/imported_main_from_extern_crate.rs b/tests/ui/entry-point/imported_main_from_extern_crate.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_from_extern_crate.rs rename to tests/ui/entry-point/imported_main_from_extern_crate.rs diff --git a/src/test/ui/entry-point/imported_main_from_inner_mod.rs b/tests/ui/entry-point/imported_main_from_inner_mod.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_from_inner_mod.rs rename to tests/ui/entry-point/imported_main_from_inner_mod.rs diff --git a/src/test/ui/entry-point/imported_main_unused_not_trigger_feature_gate.rs b/tests/ui/entry-point/imported_main_unused_not_trigger_feature_gate.rs similarity index 100% rename from src/test/ui/entry-point/imported_main_unused_not_trigger_feature_gate.rs rename to tests/ui/entry-point/imported_main_unused_not_trigger_feature_gate.rs diff --git a/src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs b/tests/ui/enum-discriminant/actually_not_an_enum-discriminant.rs similarity index 100% rename from src/test/ui/enum-discriminant/actually_not_an_enum-discriminant.rs rename to tests/ui/enum-discriminant/actually_not_an_enum-discriminant.rs diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs b/tests/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs similarity index 100% rename from src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs rename to tests/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.rs diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr b/tests/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr similarity index 100% rename from src/test/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr rename to tests/ui/enum-discriminant/arbitrary_enum_discriminant-no-repr.stderr diff --git a/src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs b/tests/ui/enum-discriminant/arbitrary_enum_discriminant.rs similarity index 100% rename from src/test/ui/enum-discriminant/arbitrary_enum_discriminant.rs rename to tests/ui/enum-discriminant/arbitrary_enum_discriminant.rs diff --git a/src/test/ui/enum-discriminant/discriminant_size.rs b/tests/ui/enum-discriminant/discriminant_size.rs similarity index 100% rename from src/test/ui/enum-discriminant/discriminant_size.rs rename to tests/ui/enum-discriminant/discriminant_size.rs diff --git a/src/test/ui/enum-discriminant/discriminant_size.stderr b/tests/ui/enum-discriminant/discriminant_size.stderr similarity index 100% rename from src/test/ui/enum-discriminant/discriminant_size.stderr rename to tests/ui/enum-discriminant/discriminant_size.stderr diff --git a/src/test/ui/enum-discriminant/discriminant_value-wrapper.rs b/tests/ui/enum-discriminant/discriminant_value-wrapper.rs similarity index 100% rename from src/test/ui/enum-discriminant/discriminant_value-wrapper.rs rename to tests/ui/enum-discriminant/discriminant_value-wrapper.rs diff --git a/src/test/ui/enum-discriminant/discriminant_value.rs b/tests/ui/enum-discriminant/discriminant_value.rs similarity index 100% rename from src/test/ui/enum-discriminant/discriminant_value.rs rename to tests/ui/enum-discriminant/discriminant_value.rs diff --git a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs b/tests/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs similarity index 100% rename from src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs rename to tests/ui/enum-discriminant/forbidden-discriminant-kind-impl.rs diff --git a/src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr b/tests/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr similarity index 100% rename from src/test/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr rename to tests/ui/enum-discriminant/forbidden-discriminant-kind-impl.stderr diff --git a/src/test/ui/enum-discriminant/get_discr.rs b/tests/ui/enum-discriminant/get_discr.rs similarity index 100% rename from src/test/ui/enum-discriminant/get_discr.rs rename to tests/ui/enum-discriminant/get_discr.rs diff --git a/src/test/ui/enum-discriminant/issue-104519.rs b/tests/ui/enum-discriminant/issue-104519.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-104519.rs rename to tests/ui/enum-discriminant/issue-104519.rs diff --git a/src/test/ui/enum-discriminant/issue-43398.rs b/tests/ui/enum-discriminant/issue-43398.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-43398.rs rename to tests/ui/enum-discriminant/issue-43398.rs diff --git a/src/test/ui/enum-discriminant/issue-43398.stderr b/tests/ui/enum-discriminant/issue-43398.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-43398.stderr rename to tests/ui/enum-discriminant/issue-43398.stderr diff --git a/src/test/ui/enum-discriminant/issue-46519.rs b/tests/ui/enum-discriminant/issue-46519.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-46519.rs rename to tests/ui/enum-discriminant/issue-46519.rs diff --git a/src/test/ui/enum-discriminant/issue-51582.rs b/tests/ui/enum-discriminant/issue-51582.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-51582.rs rename to tests/ui/enum-discriminant/issue-51582.rs diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs b/tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs rename to tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.rs diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr b/tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr rename to tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice-2.stderr diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs b/tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs rename to tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice.rs diff --git a/src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr b/tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr rename to tests/ui/enum-discriminant/issue-70453-generics-in-discr-ice.stderr diff --git a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs b/tests/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs rename to tests/ui/enum-discriminant/issue-70453-polymorphic-ctfe.rs diff --git a/src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr b/tests/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr rename to tests/ui/enum-discriminant/issue-70453-polymorphic-ctfe.stderr diff --git a/src/test/ui/enum-discriminant/issue-70509-partial_eq.rs b/tests/ui/enum-discriminant/issue-70509-partial_eq.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-70509-partial_eq.rs rename to tests/ui/enum-discriminant/issue-70509-partial_eq.rs diff --git a/src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr b/tests/ui/enum-discriminant/issue-70509-partial_eq.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-70509-partial_eq.stderr rename to tests/ui/enum-discriminant/issue-70509-partial_eq.stderr diff --git a/src/test/ui/enum-discriminant/issue-72554.rs b/tests/ui/enum-discriminant/issue-72554.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-72554.rs rename to tests/ui/enum-discriminant/issue-72554.rs diff --git a/src/test/ui/enum-discriminant/issue-72554.stderr b/tests/ui/enum-discriminant/issue-72554.stderr similarity index 100% rename from src/test/ui/enum-discriminant/issue-72554.stderr rename to tests/ui/enum-discriminant/issue-72554.stderr diff --git a/src/test/ui/enum-discriminant/issue-90038.rs b/tests/ui/enum-discriminant/issue-90038.rs similarity index 100% rename from src/test/ui/enum-discriminant/issue-90038.rs rename to tests/ui/enum-discriminant/issue-90038.rs diff --git a/src/test/ui/enum-discriminant/niche-prefer-zero.rs b/tests/ui/enum-discriminant/niche-prefer-zero.rs similarity index 100% rename from src/test/ui/enum-discriminant/niche-prefer-zero.rs rename to tests/ui/enum-discriminant/niche-prefer-zero.rs diff --git a/src/test/ui/enum-discriminant/niche.rs b/tests/ui/enum-discriminant/niche.rs similarity index 100% rename from src/test/ui/enum-discriminant/niche.rs rename to tests/ui/enum-discriminant/niche.rs diff --git a/src/test/ui/enum-discriminant/repr128.rs b/tests/ui/enum-discriminant/repr128.rs similarity index 100% rename from src/test/ui/enum-discriminant/repr128.rs rename to tests/ui/enum-discriminant/repr128.rs diff --git a/src/test/ui/enum-discriminant/repr128.stderr b/tests/ui/enum-discriminant/repr128.stderr similarity index 100% rename from src/test/ui/enum-discriminant/repr128.stderr rename to tests/ui/enum-discriminant/repr128.stderr diff --git a/src/test/ui/enum/enum-and-module-in-same-scope.rs b/tests/ui/enum/enum-and-module-in-same-scope.rs similarity index 100% rename from src/test/ui/enum/enum-and-module-in-same-scope.rs rename to tests/ui/enum/enum-and-module-in-same-scope.rs diff --git a/src/test/ui/enum/enum-and-module-in-same-scope.stderr b/tests/ui/enum/enum-and-module-in-same-scope.stderr similarity index 100% rename from src/test/ui/enum/enum-and-module-in-same-scope.stderr rename to tests/ui/enum/enum-and-module-in-same-scope.stderr diff --git a/src/test/ui/enum/enum-discrim-autosizing.rs b/tests/ui/enum/enum-discrim-autosizing.rs similarity index 100% rename from src/test/ui/enum/enum-discrim-autosizing.rs rename to tests/ui/enum/enum-discrim-autosizing.rs diff --git a/src/test/ui/enum/enum-discrim-autosizing.stderr b/tests/ui/enum/enum-discrim-autosizing.stderr similarity index 100% rename from src/test/ui/enum/enum-discrim-autosizing.stderr rename to tests/ui/enum/enum-discrim-autosizing.stderr diff --git a/src/test/ui/enum/enum-discrim-too-small.rs b/tests/ui/enum/enum-discrim-too-small.rs similarity index 100% rename from src/test/ui/enum/enum-discrim-too-small.rs rename to tests/ui/enum/enum-discrim-too-small.rs diff --git a/src/test/ui/enum/enum-discrim-too-small.stderr b/tests/ui/enum/enum-discrim-too-small.stderr similarity index 100% rename from src/test/ui/enum/enum-discrim-too-small.stderr rename to tests/ui/enum/enum-discrim-too-small.stderr diff --git a/src/test/ui/enum/enum-discrim-too-small2.rs b/tests/ui/enum/enum-discrim-too-small2.rs similarity index 100% rename from src/test/ui/enum/enum-discrim-too-small2.rs rename to tests/ui/enum/enum-discrim-too-small2.rs diff --git a/src/test/ui/enum/enum-discrim-too-small2.stderr b/tests/ui/enum/enum-discrim-too-small2.stderr similarity index 100% rename from src/test/ui/enum/enum-discrim-too-small2.stderr rename to tests/ui/enum/enum-discrim-too-small2.stderr diff --git a/src/test/ui/enum/enum-in-scope.rs b/tests/ui/enum/enum-in-scope.rs similarity index 100% rename from src/test/ui/enum/enum-in-scope.rs rename to tests/ui/enum/enum-in-scope.rs diff --git a/src/test/ui/enum/enum-in-scope.stderr b/tests/ui/enum/enum-in-scope.stderr similarity index 100% rename from src/test/ui/enum/enum-in-scope.stderr rename to tests/ui/enum/enum-in-scope.stderr diff --git a/src/test/ui/enum/enum-size-variance.rs b/tests/ui/enum/enum-size-variance.rs similarity index 100% rename from src/test/ui/enum/enum-size-variance.rs rename to tests/ui/enum/enum-size-variance.rs diff --git a/src/test/ui/enum/enum-size-variance.stderr b/tests/ui/enum/enum-size-variance.stderr similarity index 100% rename from src/test/ui/enum/enum-size-variance.stderr rename to tests/ui/enum/enum-size-variance.stderr diff --git a/src/test/ui/enum/enum-to-float-cast-2.rs b/tests/ui/enum/enum-to-float-cast-2.rs similarity index 100% rename from src/test/ui/enum/enum-to-float-cast-2.rs rename to tests/ui/enum/enum-to-float-cast-2.rs diff --git a/src/test/ui/enum/enum-to-float-cast-2.stderr b/tests/ui/enum/enum-to-float-cast-2.stderr similarity index 100% rename from src/test/ui/enum/enum-to-float-cast-2.stderr rename to tests/ui/enum/enum-to-float-cast-2.stderr diff --git a/src/test/ui/enum/enum-to-float-cast.rs b/tests/ui/enum/enum-to-float-cast.rs similarity index 100% rename from src/test/ui/enum/enum-to-float-cast.rs rename to tests/ui/enum/enum-to-float-cast.rs diff --git a/src/test/ui/enum/enum-to-float-cast.stderr b/tests/ui/enum/enum-to-float-cast.stderr similarity index 100% rename from src/test/ui/enum/enum-to-float-cast.stderr rename to tests/ui/enum/enum-to-float-cast.stderr diff --git a/src/test/ui/enum/enum-variant-type-2.rs b/tests/ui/enum/enum-variant-type-2.rs similarity index 100% rename from src/test/ui/enum/enum-variant-type-2.rs rename to tests/ui/enum/enum-variant-type-2.rs diff --git a/src/test/ui/enum/enum-variant-type-2.stderr b/tests/ui/enum/enum-variant-type-2.stderr similarity index 100% rename from src/test/ui/enum/enum-variant-type-2.stderr rename to tests/ui/enum/enum-variant-type-2.stderr diff --git a/src/test/ui/enum/issue-42747.rs b/tests/ui/enum/issue-42747.rs similarity index 100% rename from src/test/ui/enum/issue-42747.rs rename to tests/ui/enum/issue-42747.rs diff --git a/src/test/ui/enum/issue-67945-1.rs b/tests/ui/enum/issue-67945-1.rs similarity index 100% rename from src/test/ui/enum/issue-67945-1.rs rename to tests/ui/enum/issue-67945-1.rs diff --git a/src/test/ui/enum/issue-67945-1.stderr b/tests/ui/enum/issue-67945-1.stderr similarity index 100% rename from src/test/ui/enum/issue-67945-1.stderr rename to tests/ui/enum/issue-67945-1.stderr diff --git a/src/test/ui/enum/issue-67945-2.rs b/tests/ui/enum/issue-67945-2.rs similarity index 100% rename from src/test/ui/enum/issue-67945-2.rs rename to tests/ui/enum/issue-67945-2.rs diff --git a/src/test/ui/enum/issue-67945-2.stderr b/tests/ui/enum/issue-67945-2.stderr similarity index 100% rename from src/test/ui/enum/issue-67945-2.stderr rename to tests/ui/enum/issue-67945-2.stderr diff --git a/src/test/ui/enum/nested-enum.rs b/tests/ui/enum/nested-enum.rs similarity index 100% rename from src/test/ui/enum/nested-enum.rs rename to tests/ui/enum/nested-enum.rs diff --git a/src/test/ui/enum/nested-enum.stderr b/tests/ui/enum/nested-enum.stderr similarity index 100% rename from src/test/ui/enum/nested-enum.stderr rename to tests/ui/enum/nested-enum.stderr diff --git a/src/test/ui/enum/suggest-default-attribute.rs b/tests/ui/enum/suggest-default-attribute.rs similarity index 100% rename from src/test/ui/enum/suggest-default-attribute.rs rename to tests/ui/enum/suggest-default-attribute.rs diff --git a/src/test/ui/enum/suggest-default-attribute.stderr b/tests/ui/enum/suggest-default-attribute.stderr similarity index 100% rename from src/test/ui/enum/suggest-default-attribute.stderr rename to tests/ui/enum/suggest-default-attribute.stderr diff --git a/src/test/ui/enum/union-in-enum.rs b/tests/ui/enum/union-in-enum.rs similarity index 100% rename from src/test/ui/enum/union-in-enum.rs rename to tests/ui/enum/union-in-enum.rs diff --git a/src/test/ui/env-args-reverse-iterator.rs b/tests/ui/env-args-reverse-iterator.rs similarity index 100% rename from src/test/ui/env-args-reverse-iterator.rs rename to tests/ui/env-args-reverse-iterator.rs diff --git a/src/test/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs similarity index 100% rename from src/test/ui/env-funky-keys.rs rename to tests/ui/env-funky-keys.rs diff --git a/src/test/ui/env-null-vars.rs b/tests/ui/env-null-vars.rs similarity index 100% rename from src/test/ui/env-null-vars.rs rename to tests/ui/env-null-vars.rs diff --git a/src/test/ui/env-vars.rs b/tests/ui/env-vars.rs similarity index 100% rename from src/test/ui/env-vars.rs rename to tests/ui/env-vars.rs diff --git a/src/test/ui/error-codes/E0001.rs b/tests/ui/error-codes/E0001.rs similarity index 100% rename from src/test/ui/error-codes/E0001.rs rename to tests/ui/error-codes/E0001.rs diff --git a/src/test/ui/error-codes/E0001.stderr b/tests/ui/error-codes/E0001.stderr similarity index 100% rename from src/test/ui/error-codes/E0001.stderr rename to tests/ui/error-codes/E0001.stderr diff --git a/src/test/ui/error-codes/E0004-2.rs b/tests/ui/error-codes/E0004-2.rs similarity index 100% rename from src/test/ui/error-codes/E0004-2.rs rename to tests/ui/error-codes/E0004-2.rs diff --git a/src/test/ui/error-codes/E0004-2.stderr b/tests/ui/error-codes/E0004-2.stderr similarity index 100% rename from src/test/ui/error-codes/E0004-2.stderr rename to tests/ui/error-codes/E0004-2.stderr diff --git a/src/test/ui/error-codes/E0004.rs b/tests/ui/error-codes/E0004.rs similarity index 100% rename from src/test/ui/error-codes/E0004.rs rename to tests/ui/error-codes/E0004.rs diff --git a/src/test/ui/error-codes/E0004.stderr b/tests/ui/error-codes/E0004.stderr similarity index 100% rename from src/test/ui/error-codes/E0004.stderr rename to tests/ui/error-codes/E0004.stderr diff --git a/src/test/ui/error-codes/E0005.rs b/tests/ui/error-codes/E0005.rs similarity index 100% rename from src/test/ui/error-codes/E0005.rs rename to tests/ui/error-codes/E0005.rs diff --git a/src/test/ui/error-codes/E0005.stderr b/tests/ui/error-codes/E0005.stderr similarity index 100% rename from src/test/ui/error-codes/E0005.stderr rename to tests/ui/error-codes/E0005.stderr diff --git a/src/test/ui/error-codes/E0010-teach.rs b/tests/ui/error-codes/E0010-teach.rs similarity index 100% rename from src/test/ui/error-codes/E0010-teach.rs rename to tests/ui/error-codes/E0010-teach.rs diff --git a/src/test/ui/error-codes/E0010-teach.stderr b/tests/ui/error-codes/E0010-teach.stderr similarity index 100% rename from src/test/ui/error-codes/E0010-teach.stderr rename to tests/ui/error-codes/E0010-teach.stderr diff --git a/src/test/ui/error-codes/E0010.rs b/tests/ui/error-codes/E0010.rs similarity index 100% rename from src/test/ui/error-codes/E0010.rs rename to tests/ui/error-codes/E0010.rs diff --git a/src/test/ui/error-codes/E0010.stderr b/tests/ui/error-codes/E0010.stderr similarity index 100% rename from src/test/ui/error-codes/E0010.stderr rename to tests/ui/error-codes/E0010.stderr diff --git a/src/test/ui/error-codes/E0013.rs b/tests/ui/error-codes/E0013.rs similarity index 100% rename from src/test/ui/error-codes/E0013.rs rename to tests/ui/error-codes/E0013.rs diff --git a/src/test/ui/error-codes/E0013.stderr b/tests/ui/error-codes/E0013.stderr similarity index 100% rename from src/test/ui/error-codes/E0013.stderr rename to tests/ui/error-codes/E0013.stderr diff --git a/src/test/ui/error-codes/E0015.rs b/tests/ui/error-codes/E0015.rs similarity index 100% rename from src/test/ui/error-codes/E0015.rs rename to tests/ui/error-codes/E0015.rs diff --git a/src/test/ui/error-codes/E0015.stderr b/tests/ui/error-codes/E0015.stderr similarity index 100% rename from src/test/ui/error-codes/E0015.stderr rename to tests/ui/error-codes/E0015.stderr diff --git a/src/test/ui/error-codes/E0017.rs b/tests/ui/error-codes/E0017.rs similarity index 100% rename from src/test/ui/error-codes/E0017.rs rename to tests/ui/error-codes/E0017.rs diff --git a/src/test/ui/error-codes/E0017.stderr b/tests/ui/error-codes/E0017.stderr similarity index 100% rename from src/test/ui/error-codes/E0017.stderr rename to tests/ui/error-codes/E0017.stderr diff --git a/src/test/ui/error-codes/E0023.rs b/tests/ui/error-codes/E0023.rs similarity index 100% rename from src/test/ui/error-codes/E0023.rs rename to tests/ui/error-codes/E0023.rs diff --git a/src/test/ui/error-codes/E0023.stderr b/tests/ui/error-codes/E0023.stderr similarity index 100% rename from src/test/ui/error-codes/E0023.stderr rename to tests/ui/error-codes/E0023.stderr diff --git a/src/test/ui/error-codes/E0025.rs b/tests/ui/error-codes/E0025.rs similarity index 100% rename from src/test/ui/error-codes/E0025.rs rename to tests/ui/error-codes/E0025.rs diff --git a/src/test/ui/error-codes/E0025.stderr b/tests/ui/error-codes/E0025.stderr similarity index 100% rename from src/test/ui/error-codes/E0025.stderr rename to tests/ui/error-codes/E0025.stderr diff --git a/src/test/ui/error-codes/E0026-teach.rs b/tests/ui/error-codes/E0026-teach.rs similarity index 100% rename from src/test/ui/error-codes/E0026-teach.rs rename to tests/ui/error-codes/E0026-teach.rs diff --git a/src/test/ui/error-codes/E0026-teach.stderr b/tests/ui/error-codes/E0026-teach.stderr similarity index 100% rename from src/test/ui/error-codes/E0026-teach.stderr rename to tests/ui/error-codes/E0026-teach.stderr diff --git a/src/test/ui/error-codes/E0026.rs b/tests/ui/error-codes/E0026.rs similarity index 100% rename from src/test/ui/error-codes/E0026.rs rename to tests/ui/error-codes/E0026.rs diff --git a/src/test/ui/error-codes/E0026.stderr b/tests/ui/error-codes/E0026.stderr similarity index 100% rename from src/test/ui/error-codes/E0026.stderr rename to tests/ui/error-codes/E0026.stderr diff --git a/src/test/ui/error-codes/E0027.rs b/tests/ui/error-codes/E0027.rs similarity index 100% rename from src/test/ui/error-codes/E0027.rs rename to tests/ui/error-codes/E0027.rs diff --git a/src/test/ui/error-codes/E0027.stderr b/tests/ui/error-codes/E0027.stderr similarity index 100% rename from src/test/ui/error-codes/E0027.stderr rename to tests/ui/error-codes/E0027.stderr diff --git a/src/test/ui/error-codes/E0029-teach.rs b/tests/ui/error-codes/E0029-teach.rs similarity index 100% rename from src/test/ui/error-codes/E0029-teach.rs rename to tests/ui/error-codes/E0029-teach.rs diff --git a/src/test/ui/error-codes/E0029-teach.stderr b/tests/ui/error-codes/E0029-teach.stderr similarity index 100% rename from src/test/ui/error-codes/E0029-teach.stderr rename to tests/ui/error-codes/E0029-teach.stderr diff --git a/src/test/ui/error-codes/E0029.rs b/tests/ui/error-codes/E0029.rs similarity index 100% rename from src/test/ui/error-codes/E0029.rs rename to tests/ui/error-codes/E0029.rs diff --git a/src/test/ui/error-codes/E0029.stderr b/tests/ui/error-codes/E0029.stderr similarity index 100% rename from src/test/ui/error-codes/E0029.stderr rename to tests/ui/error-codes/E0029.stderr diff --git a/src/test/ui/error-codes/E0030-teach.rs b/tests/ui/error-codes/E0030-teach.rs similarity index 100% rename from src/test/ui/error-codes/E0030-teach.rs rename to tests/ui/error-codes/E0030-teach.rs diff --git a/src/test/ui/error-codes/E0030-teach.stderr b/tests/ui/error-codes/E0030-teach.stderr similarity index 100% rename from src/test/ui/error-codes/E0030-teach.stderr rename to tests/ui/error-codes/E0030-teach.stderr diff --git a/src/test/ui/error-codes/E0030.rs b/tests/ui/error-codes/E0030.rs similarity index 100% rename from src/test/ui/error-codes/E0030.rs rename to tests/ui/error-codes/E0030.rs diff --git a/src/test/ui/error-codes/E0030.stderr b/tests/ui/error-codes/E0030.stderr similarity index 100% rename from src/test/ui/error-codes/E0030.stderr rename to tests/ui/error-codes/E0030.stderr diff --git a/src/test/ui/error-codes/E0033-teach.rs b/tests/ui/error-codes/E0033-teach.rs similarity index 100% rename from src/test/ui/error-codes/E0033-teach.rs rename to tests/ui/error-codes/E0033-teach.rs diff --git a/src/test/ui/error-codes/E0033-teach.stderr b/tests/ui/error-codes/E0033-teach.stderr similarity index 100% rename from src/test/ui/error-codes/E0033-teach.stderr rename to tests/ui/error-codes/E0033-teach.stderr diff --git a/src/test/ui/error-codes/E0033.rs b/tests/ui/error-codes/E0033.rs similarity index 100% rename from src/test/ui/error-codes/E0033.rs rename to tests/ui/error-codes/E0033.rs diff --git a/src/test/ui/error-codes/E0033.stderr b/tests/ui/error-codes/E0033.stderr similarity index 100% rename from src/test/ui/error-codes/E0033.stderr rename to tests/ui/error-codes/E0033.stderr diff --git a/src/test/ui/error-codes/E0034.rs b/tests/ui/error-codes/E0034.rs similarity index 100% rename from src/test/ui/error-codes/E0034.rs rename to tests/ui/error-codes/E0034.rs diff --git a/src/test/ui/error-codes/E0034.stderr b/tests/ui/error-codes/E0034.stderr similarity index 100% rename from src/test/ui/error-codes/E0034.stderr rename to tests/ui/error-codes/E0034.stderr diff --git a/src/test/ui/error-codes/E0038.rs b/tests/ui/error-codes/E0038.rs similarity index 100% rename from src/test/ui/error-codes/E0038.rs rename to tests/ui/error-codes/E0038.rs diff --git a/src/test/ui/error-codes/E0038.stderr b/tests/ui/error-codes/E0038.stderr similarity index 100% rename from src/test/ui/error-codes/E0038.stderr rename to tests/ui/error-codes/E0038.stderr diff --git a/src/test/ui/error-codes/E0040.fixed b/tests/ui/error-codes/E0040.fixed similarity index 100% rename from src/test/ui/error-codes/E0040.fixed rename to tests/ui/error-codes/E0040.fixed diff --git a/src/test/ui/error-codes/E0040.rs b/tests/ui/error-codes/E0040.rs similarity index 100% rename from src/test/ui/error-codes/E0040.rs rename to tests/ui/error-codes/E0040.rs diff --git a/src/test/ui/error-codes/E0040.stderr b/tests/ui/error-codes/E0040.stderr similarity index 100% rename from src/test/ui/error-codes/E0040.stderr rename to tests/ui/error-codes/E0040.stderr diff --git a/src/test/ui/error-codes/E0044.rs b/tests/ui/error-codes/E0044.rs similarity index 100% rename from src/test/ui/error-codes/E0044.rs rename to tests/ui/error-codes/E0044.rs diff --git a/src/test/ui/error-codes/E0044.stderr b/tests/ui/error-codes/E0044.stderr similarity index 100% rename from src/test/ui/error-codes/E0044.stderr rename to tests/ui/error-codes/E0044.stderr diff --git a/src/test/ui/error-codes/E0045.rs b/tests/ui/error-codes/E0045.rs similarity index 100% rename from src/test/ui/error-codes/E0045.rs rename to tests/ui/error-codes/E0045.rs diff --git a/src/test/ui/error-codes/E0045.stderr b/tests/ui/error-codes/E0045.stderr similarity index 100% rename from src/test/ui/error-codes/E0045.stderr rename to tests/ui/error-codes/E0045.stderr diff --git a/src/test/ui/error-codes/E0049.rs b/tests/ui/error-codes/E0049.rs similarity index 100% rename from src/test/ui/error-codes/E0049.rs rename to tests/ui/error-codes/E0049.rs diff --git a/src/test/ui/error-codes/E0049.stderr b/tests/ui/error-codes/E0049.stderr similarity index 100% rename from src/test/ui/error-codes/E0049.stderr rename to tests/ui/error-codes/E0049.stderr diff --git a/src/test/ui/error-codes/E0050.rs b/tests/ui/error-codes/E0050.rs similarity index 100% rename from src/test/ui/error-codes/E0050.rs rename to tests/ui/error-codes/E0050.rs diff --git a/src/test/ui/error-codes/E0050.stderr b/tests/ui/error-codes/E0050.stderr similarity index 100% rename from src/test/ui/error-codes/E0050.stderr rename to tests/ui/error-codes/E0050.stderr diff --git a/src/test/ui/error-codes/E0054.rs b/tests/ui/error-codes/E0054.rs similarity index 100% rename from src/test/ui/error-codes/E0054.rs rename to tests/ui/error-codes/E0054.rs diff --git a/src/test/ui/error-codes/E0054.stderr b/tests/ui/error-codes/E0054.stderr similarity index 100% rename from src/test/ui/error-codes/E0054.stderr rename to tests/ui/error-codes/E0054.stderr diff --git a/src/test/ui/error-codes/E0055.rs b/tests/ui/error-codes/E0055.rs similarity index 100% rename from src/test/ui/error-codes/E0055.rs rename to tests/ui/error-codes/E0055.rs diff --git a/src/test/ui/error-codes/E0055.stderr b/tests/ui/error-codes/E0055.stderr similarity index 100% rename from src/test/ui/error-codes/E0055.stderr rename to tests/ui/error-codes/E0055.stderr diff --git a/src/test/ui/error-codes/E0057.rs b/tests/ui/error-codes/E0057.rs similarity index 100% rename from src/test/ui/error-codes/E0057.rs rename to tests/ui/error-codes/E0057.rs diff --git a/src/test/ui/error-codes/E0057.stderr b/tests/ui/error-codes/E0057.stderr similarity index 100% rename from src/test/ui/error-codes/E0057.stderr rename to tests/ui/error-codes/E0057.stderr diff --git a/src/test/ui/error-codes/E0059.rs b/tests/ui/error-codes/E0059.rs similarity index 100% rename from src/test/ui/error-codes/E0059.rs rename to tests/ui/error-codes/E0059.rs diff --git a/src/test/ui/error-codes/E0059.stderr b/tests/ui/error-codes/E0059.stderr similarity index 100% rename from src/test/ui/error-codes/E0059.stderr rename to tests/ui/error-codes/E0059.stderr diff --git a/src/test/ui/error-codes/E0060.rs b/tests/ui/error-codes/E0060.rs similarity index 100% rename from src/test/ui/error-codes/E0060.rs rename to tests/ui/error-codes/E0060.rs diff --git a/src/test/ui/error-codes/E0060.stderr b/tests/ui/error-codes/E0060.stderr similarity index 100% rename from src/test/ui/error-codes/E0060.stderr rename to tests/ui/error-codes/E0060.stderr diff --git a/src/test/ui/error-codes/E0061.rs b/tests/ui/error-codes/E0061.rs similarity index 100% rename from src/test/ui/error-codes/E0061.rs rename to tests/ui/error-codes/E0061.rs diff --git a/src/test/ui/error-codes/E0061.stderr b/tests/ui/error-codes/E0061.stderr similarity index 100% rename from src/test/ui/error-codes/E0061.stderr rename to tests/ui/error-codes/E0061.stderr diff --git a/src/test/ui/error-codes/E0062.rs b/tests/ui/error-codes/E0062.rs similarity index 100% rename from src/test/ui/error-codes/E0062.rs rename to tests/ui/error-codes/E0062.rs diff --git a/src/test/ui/error-codes/E0062.stderr b/tests/ui/error-codes/E0062.stderr similarity index 100% rename from src/test/ui/error-codes/E0062.stderr rename to tests/ui/error-codes/E0062.stderr diff --git a/src/test/ui/error-codes/E0063.rs b/tests/ui/error-codes/E0063.rs similarity index 100% rename from src/test/ui/error-codes/E0063.rs rename to tests/ui/error-codes/E0063.rs diff --git a/src/test/ui/error-codes/E0063.stderr b/tests/ui/error-codes/E0063.stderr similarity index 100% rename from src/test/ui/error-codes/E0063.stderr rename to tests/ui/error-codes/E0063.stderr diff --git a/src/test/ui/error-codes/E0067.rs b/tests/ui/error-codes/E0067.rs similarity index 100% rename from src/test/ui/error-codes/E0067.rs rename to tests/ui/error-codes/E0067.rs diff --git a/src/test/ui/error-codes/E0067.stderr b/tests/ui/error-codes/E0067.stderr similarity index 100% rename from src/test/ui/error-codes/E0067.stderr rename to tests/ui/error-codes/E0067.stderr diff --git a/src/test/ui/error-codes/E0069.rs b/tests/ui/error-codes/E0069.rs similarity index 100% rename from src/test/ui/error-codes/E0069.rs rename to tests/ui/error-codes/E0069.rs diff --git a/src/test/ui/error-codes/E0069.stderr b/tests/ui/error-codes/E0069.stderr similarity index 100% rename from src/test/ui/error-codes/E0069.stderr rename to tests/ui/error-codes/E0069.stderr diff --git a/src/test/ui/error-codes/E0070.rs b/tests/ui/error-codes/E0070.rs similarity index 100% rename from src/test/ui/error-codes/E0070.rs rename to tests/ui/error-codes/E0070.rs diff --git a/src/test/ui/error-codes/E0070.stderr b/tests/ui/error-codes/E0070.stderr similarity index 100% rename from src/test/ui/error-codes/E0070.stderr rename to tests/ui/error-codes/E0070.stderr diff --git a/src/test/ui/error-codes/E0071.rs b/tests/ui/error-codes/E0071.rs similarity index 100% rename from src/test/ui/error-codes/E0071.rs rename to tests/ui/error-codes/E0071.rs diff --git a/src/test/ui/error-codes/E0071.stderr b/tests/ui/error-codes/E0071.stderr similarity index 100% rename from src/test/ui/error-codes/E0071.stderr rename to tests/ui/error-codes/E0071.stderr diff --git a/src/test/ui/error-codes/E0075.rs b/tests/ui/error-codes/E0075.rs similarity index 100% rename from src/test/ui/error-codes/E0075.rs rename to tests/ui/error-codes/E0075.rs diff --git a/src/test/ui/error-codes/E0075.stderr b/tests/ui/error-codes/E0075.stderr similarity index 100% rename from src/test/ui/error-codes/E0075.stderr rename to tests/ui/error-codes/E0075.stderr diff --git a/src/test/ui/error-codes/E0076.rs b/tests/ui/error-codes/E0076.rs similarity index 100% rename from src/test/ui/error-codes/E0076.rs rename to tests/ui/error-codes/E0076.rs diff --git a/src/test/ui/error-codes/E0076.stderr b/tests/ui/error-codes/E0076.stderr similarity index 100% rename from src/test/ui/error-codes/E0076.stderr rename to tests/ui/error-codes/E0076.stderr diff --git a/src/test/ui/error-codes/E0077.rs b/tests/ui/error-codes/E0077.rs similarity index 100% rename from src/test/ui/error-codes/E0077.rs rename to tests/ui/error-codes/E0077.rs diff --git a/src/test/ui/error-codes/E0077.stderr b/tests/ui/error-codes/E0077.stderr similarity index 100% rename from src/test/ui/error-codes/E0077.stderr rename to tests/ui/error-codes/E0077.stderr diff --git a/src/test/ui/error-codes/E0080.rs b/tests/ui/error-codes/E0080.rs similarity index 100% rename from src/test/ui/error-codes/E0080.rs rename to tests/ui/error-codes/E0080.rs diff --git a/src/test/ui/error-codes/E0080.stderr b/tests/ui/error-codes/E0080.stderr similarity index 100% rename from src/test/ui/error-codes/E0080.stderr rename to tests/ui/error-codes/E0080.stderr diff --git a/src/test/ui/error-codes/E0081.rs b/tests/ui/error-codes/E0081.rs similarity index 100% rename from src/test/ui/error-codes/E0081.rs rename to tests/ui/error-codes/E0081.rs diff --git a/src/test/ui/error-codes/E0081.stderr b/tests/ui/error-codes/E0081.stderr similarity index 100% rename from src/test/ui/error-codes/E0081.stderr rename to tests/ui/error-codes/E0081.stderr diff --git a/src/test/ui/error-codes/E0084.rs b/tests/ui/error-codes/E0084.rs similarity index 100% rename from src/test/ui/error-codes/E0084.rs rename to tests/ui/error-codes/E0084.rs diff --git a/src/test/ui/error-codes/E0084.stderr b/tests/ui/error-codes/E0084.stderr similarity index 100% rename from src/test/ui/error-codes/E0084.stderr rename to tests/ui/error-codes/E0084.stderr diff --git a/src/test/ui/error-codes/E0091.rs b/tests/ui/error-codes/E0091.rs similarity index 100% rename from src/test/ui/error-codes/E0091.rs rename to tests/ui/error-codes/E0091.rs diff --git a/src/test/ui/error-codes/E0091.stderr b/tests/ui/error-codes/E0091.stderr similarity index 100% rename from src/test/ui/error-codes/E0091.stderr rename to tests/ui/error-codes/E0091.stderr diff --git a/src/test/ui/error-codes/E0092.rs b/tests/ui/error-codes/E0092.rs similarity index 100% rename from src/test/ui/error-codes/E0092.rs rename to tests/ui/error-codes/E0092.rs diff --git a/src/test/ui/error-codes/E0092.stderr b/tests/ui/error-codes/E0092.stderr similarity index 100% rename from src/test/ui/error-codes/E0092.stderr rename to tests/ui/error-codes/E0092.stderr diff --git a/src/test/ui/error-codes/E0093.rs b/tests/ui/error-codes/E0093.rs similarity index 100% rename from src/test/ui/error-codes/E0093.rs rename to tests/ui/error-codes/E0093.rs diff --git a/src/test/ui/error-codes/E0093.stderr b/tests/ui/error-codes/E0093.stderr similarity index 100% rename from src/test/ui/error-codes/E0093.stderr rename to tests/ui/error-codes/E0093.stderr diff --git a/src/test/ui/error-codes/E0094.rs b/tests/ui/error-codes/E0094.rs similarity index 100% rename from src/test/ui/error-codes/E0094.rs rename to tests/ui/error-codes/E0094.rs diff --git a/src/test/ui/error-codes/E0094.stderr b/tests/ui/error-codes/E0094.stderr similarity index 100% rename from src/test/ui/error-codes/E0094.stderr rename to tests/ui/error-codes/E0094.stderr diff --git a/src/test/ui/error-codes/E0106.rs b/tests/ui/error-codes/E0106.rs similarity index 100% rename from src/test/ui/error-codes/E0106.rs rename to tests/ui/error-codes/E0106.rs diff --git a/src/test/ui/error-codes/E0106.stderr b/tests/ui/error-codes/E0106.stderr similarity index 100% rename from src/test/ui/error-codes/E0106.stderr rename to tests/ui/error-codes/E0106.stderr diff --git a/src/test/ui/error-codes/E0107.rs b/tests/ui/error-codes/E0107.rs similarity index 100% rename from src/test/ui/error-codes/E0107.rs rename to tests/ui/error-codes/E0107.rs diff --git a/src/test/ui/error-codes/E0107.stderr b/tests/ui/error-codes/E0107.stderr similarity index 100% rename from src/test/ui/error-codes/E0107.stderr rename to tests/ui/error-codes/E0107.stderr diff --git a/src/test/ui/error-codes/E0109.rs b/tests/ui/error-codes/E0109.rs similarity index 100% rename from src/test/ui/error-codes/E0109.rs rename to tests/ui/error-codes/E0109.rs diff --git a/src/test/ui/error-codes/E0109.stderr b/tests/ui/error-codes/E0109.stderr similarity index 100% rename from src/test/ui/error-codes/E0109.stderr rename to tests/ui/error-codes/E0109.stderr diff --git a/src/test/ui/error-codes/E0110.rs b/tests/ui/error-codes/E0110.rs similarity index 100% rename from src/test/ui/error-codes/E0110.rs rename to tests/ui/error-codes/E0110.rs diff --git a/src/test/ui/error-codes/E0110.stderr b/tests/ui/error-codes/E0110.stderr similarity index 100% rename from src/test/ui/error-codes/E0110.stderr rename to tests/ui/error-codes/E0110.stderr diff --git a/src/test/ui/error-codes/E0116.rs b/tests/ui/error-codes/E0116.rs similarity index 100% rename from src/test/ui/error-codes/E0116.rs rename to tests/ui/error-codes/E0116.rs diff --git a/src/test/ui/error-codes/E0116.stderr b/tests/ui/error-codes/E0116.stderr similarity index 100% rename from src/test/ui/error-codes/E0116.stderr rename to tests/ui/error-codes/E0116.stderr diff --git a/src/test/ui/error-codes/E0117.rs b/tests/ui/error-codes/E0117.rs similarity index 100% rename from src/test/ui/error-codes/E0117.rs rename to tests/ui/error-codes/E0117.rs diff --git a/src/test/ui/error-codes/E0117.stderr b/tests/ui/error-codes/E0117.stderr similarity index 100% rename from src/test/ui/error-codes/E0117.stderr rename to tests/ui/error-codes/E0117.stderr diff --git a/src/test/ui/error-codes/E0118.rs b/tests/ui/error-codes/E0118.rs similarity index 100% rename from src/test/ui/error-codes/E0118.rs rename to tests/ui/error-codes/E0118.rs diff --git a/src/test/ui/error-codes/E0118.stderr b/tests/ui/error-codes/E0118.stderr similarity index 100% rename from src/test/ui/error-codes/E0118.stderr rename to tests/ui/error-codes/E0118.stderr diff --git a/src/test/ui/error-codes/E0119.rs b/tests/ui/error-codes/E0119.rs similarity index 100% rename from src/test/ui/error-codes/E0119.rs rename to tests/ui/error-codes/E0119.rs diff --git a/src/test/ui/error-codes/E0119.stderr b/tests/ui/error-codes/E0119.stderr similarity index 100% rename from src/test/ui/error-codes/E0119.stderr rename to tests/ui/error-codes/E0119.stderr diff --git a/src/test/ui/error-codes/E0120.rs b/tests/ui/error-codes/E0120.rs similarity index 100% rename from src/test/ui/error-codes/E0120.rs rename to tests/ui/error-codes/E0120.rs diff --git a/src/test/ui/error-codes/E0120.stderr b/tests/ui/error-codes/E0120.stderr similarity index 100% rename from src/test/ui/error-codes/E0120.stderr rename to tests/ui/error-codes/E0120.stderr diff --git a/src/test/ui/error-codes/E0121.rs b/tests/ui/error-codes/E0121.rs similarity index 100% rename from src/test/ui/error-codes/E0121.rs rename to tests/ui/error-codes/E0121.rs diff --git a/src/test/ui/error-codes/E0121.stderr b/tests/ui/error-codes/E0121.stderr similarity index 100% rename from src/test/ui/error-codes/E0121.stderr rename to tests/ui/error-codes/E0121.stderr diff --git a/src/test/ui/error-codes/E0124.rs b/tests/ui/error-codes/E0124.rs similarity index 100% rename from src/test/ui/error-codes/E0124.rs rename to tests/ui/error-codes/E0124.rs diff --git a/src/test/ui/error-codes/E0124.stderr b/tests/ui/error-codes/E0124.stderr similarity index 100% rename from src/test/ui/error-codes/E0124.stderr rename to tests/ui/error-codes/E0124.stderr diff --git a/src/test/ui/error-codes/E0128.rs b/tests/ui/error-codes/E0128.rs similarity index 100% rename from src/test/ui/error-codes/E0128.rs rename to tests/ui/error-codes/E0128.rs diff --git a/src/test/ui/error-codes/E0128.stderr b/tests/ui/error-codes/E0128.stderr similarity index 100% rename from src/test/ui/error-codes/E0128.stderr rename to tests/ui/error-codes/E0128.stderr diff --git a/src/test/ui/error-codes/E0130.rs b/tests/ui/error-codes/E0130.rs similarity index 100% rename from src/test/ui/error-codes/E0130.rs rename to tests/ui/error-codes/E0130.rs diff --git a/src/test/ui/error-codes/E0130.stderr b/tests/ui/error-codes/E0130.stderr similarity index 100% rename from src/test/ui/error-codes/E0130.stderr rename to tests/ui/error-codes/E0130.stderr diff --git a/src/test/ui/error-codes/E0131.rs b/tests/ui/error-codes/E0131.rs similarity index 100% rename from src/test/ui/error-codes/E0131.rs rename to tests/ui/error-codes/E0131.rs diff --git a/src/test/ui/error-codes/E0131.stderr b/tests/ui/error-codes/E0131.stderr similarity index 100% rename from src/test/ui/error-codes/E0131.stderr rename to tests/ui/error-codes/E0131.stderr diff --git a/src/test/ui/error-codes/E0132.rs b/tests/ui/error-codes/E0132.rs similarity index 100% rename from src/test/ui/error-codes/E0132.rs rename to tests/ui/error-codes/E0132.rs diff --git a/src/test/ui/error-codes/E0132.stderr b/tests/ui/error-codes/E0132.stderr similarity index 100% rename from src/test/ui/error-codes/E0132.stderr rename to tests/ui/error-codes/E0132.stderr diff --git a/src/test/ui/error-codes/E0133.mir.stderr b/tests/ui/error-codes/E0133.mir.stderr similarity index 100% rename from src/test/ui/error-codes/E0133.mir.stderr rename to tests/ui/error-codes/E0133.mir.stderr diff --git a/src/test/ui/error-codes/E0133.rs b/tests/ui/error-codes/E0133.rs similarity index 100% rename from src/test/ui/error-codes/E0133.rs rename to tests/ui/error-codes/E0133.rs diff --git a/src/test/ui/error-codes/E0133.thir.stderr b/tests/ui/error-codes/E0133.thir.stderr similarity index 100% rename from src/test/ui/error-codes/E0133.thir.stderr rename to tests/ui/error-codes/E0133.thir.stderr diff --git a/src/test/ui/error-codes/E0138.rs b/tests/ui/error-codes/E0138.rs similarity index 100% rename from src/test/ui/error-codes/E0138.rs rename to tests/ui/error-codes/E0138.rs diff --git a/src/test/ui/error-codes/E0138.stderr b/tests/ui/error-codes/E0138.stderr similarity index 100% rename from src/test/ui/error-codes/E0138.stderr rename to tests/ui/error-codes/E0138.stderr diff --git a/src/test/ui/error-codes/E0152.rs b/tests/ui/error-codes/E0152.rs similarity index 100% rename from src/test/ui/error-codes/E0152.rs rename to tests/ui/error-codes/E0152.rs diff --git a/src/test/ui/error-codes/E0152.stderr b/tests/ui/error-codes/E0152.stderr similarity index 100% rename from src/test/ui/error-codes/E0152.stderr rename to tests/ui/error-codes/E0152.stderr diff --git a/src/test/ui/error-codes/E0161.base.stderr b/tests/ui/error-codes/E0161.base.stderr similarity index 100% rename from src/test/ui/error-codes/E0161.base.stderr rename to tests/ui/error-codes/E0161.base.stderr diff --git a/src/test/ui/error-codes/E0161.rs b/tests/ui/error-codes/E0161.rs similarity index 100% rename from src/test/ui/error-codes/E0161.rs rename to tests/ui/error-codes/E0161.rs diff --git a/src/test/ui/error-codes/E0164.rs b/tests/ui/error-codes/E0164.rs similarity index 100% rename from src/test/ui/error-codes/E0164.rs rename to tests/ui/error-codes/E0164.rs diff --git a/src/test/ui/error-codes/E0164.stderr b/tests/ui/error-codes/E0164.stderr similarity index 100% rename from src/test/ui/error-codes/E0164.stderr rename to tests/ui/error-codes/E0164.stderr diff --git a/src/test/ui/error-codes/E0184.rs b/tests/ui/error-codes/E0184.rs similarity index 100% rename from src/test/ui/error-codes/E0184.rs rename to tests/ui/error-codes/E0184.rs diff --git a/src/test/ui/error-codes/E0184.stderr b/tests/ui/error-codes/E0184.stderr similarity index 100% rename from src/test/ui/error-codes/E0184.stderr rename to tests/ui/error-codes/E0184.stderr diff --git a/src/test/ui/error-codes/E0185.rs b/tests/ui/error-codes/E0185.rs similarity index 100% rename from src/test/ui/error-codes/E0185.rs rename to tests/ui/error-codes/E0185.rs diff --git a/src/test/ui/error-codes/E0185.stderr b/tests/ui/error-codes/E0185.stderr similarity index 100% rename from src/test/ui/error-codes/E0185.stderr rename to tests/ui/error-codes/E0185.stderr diff --git a/src/test/ui/error-codes/E0186.rs b/tests/ui/error-codes/E0186.rs similarity index 100% rename from src/test/ui/error-codes/E0186.rs rename to tests/ui/error-codes/E0186.rs diff --git a/src/test/ui/error-codes/E0186.stderr b/tests/ui/error-codes/E0186.stderr similarity index 100% rename from src/test/ui/error-codes/E0186.stderr rename to tests/ui/error-codes/E0186.stderr diff --git a/src/test/ui/error-codes/E0191.rs b/tests/ui/error-codes/E0191.rs similarity index 100% rename from src/test/ui/error-codes/E0191.rs rename to tests/ui/error-codes/E0191.rs diff --git a/src/test/ui/error-codes/E0191.stderr b/tests/ui/error-codes/E0191.stderr similarity index 100% rename from src/test/ui/error-codes/E0191.stderr rename to tests/ui/error-codes/E0191.stderr diff --git a/src/test/ui/error-codes/E0194.rs b/tests/ui/error-codes/E0194.rs similarity index 100% rename from src/test/ui/error-codes/E0194.rs rename to tests/ui/error-codes/E0194.rs diff --git a/src/test/ui/error-codes/E0194.stderr b/tests/ui/error-codes/E0194.stderr similarity index 100% rename from src/test/ui/error-codes/E0194.stderr rename to tests/ui/error-codes/E0194.stderr diff --git a/src/test/ui/error-codes/E0195.rs b/tests/ui/error-codes/E0195.rs similarity index 100% rename from src/test/ui/error-codes/E0195.rs rename to tests/ui/error-codes/E0195.rs diff --git a/src/test/ui/error-codes/E0195.stderr b/tests/ui/error-codes/E0195.stderr similarity index 100% rename from src/test/ui/error-codes/E0195.stderr rename to tests/ui/error-codes/E0195.stderr diff --git a/src/test/ui/error-codes/E0197.rs b/tests/ui/error-codes/E0197.rs similarity index 100% rename from src/test/ui/error-codes/E0197.rs rename to tests/ui/error-codes/E0197.rs diff --git a/src/test/ui/error-codes/E0197.stderr b/tests/ui/error-codes/E0197.stderr similarity index 100% rename from src/test/ui/error-codes/E0197.stderr rename to tests/ui/error-codes/E0197.stderr diff --git a/src/test/ui/error-codes/E0198.rs b/tests/ui/error-codes/E0198.rs similarity index 100% rename from src/test/ui/error-codes/E0198.rs rename to tests/ui/error-codes/E0198.rs diff --git a/src/test/ui/error-codes/E0198.stderr b/tests/ui/error-codes/E0198.stderr similarity index 100% rename from src/test/ui/error-codes/E0198.stderr rename to tests/ui/error-codes/E0198.stderr diff --git a/src/test/ui/error-codes/E0199.rs b/tests/ui/error-codes/E0199.rs similarity index 100% rename from src/test/ui/error-codes/E0199.rs rename to tests/ui/error-codes/E0199.rs diff --git a/src/test/ui/error-codes/E0199.stderr b/tests/ui/error-codes/E0199.stderr similarity index 100% rename from src/test/ui/error-codes/E0199.stderr rename to tests/ui/error-codes/E0199.stderr diff --git a/src/test/ui/error-codes/E0200.rs b/tests/ui/error-codes/E0200.rs similarity index 100% rename from src/test/ui/error-codes/E0200.rs rename to tests/ui/error-codes/E0200.rs diff --git a/src/test/ui/error-codes/E0200.stderr b/tests/ui/error-codes/E0200.stderr similarity index 100% rename from src/test/ui/error-codes/E0200.stderr rename to tests/ui/error-codes/E0200.stderr diff --git a/src/test/ui/error-codes/E0201.rs b/tests/ui/error-codes/E0201.rs similarity index 100% rename from src/test/ui/error-codes/E0201.rs rename to tests/ui/error-codes/E0201.rs diff --git a/src/test/ui/error-codes/E0201.stderr b/tests/ui/error-codes/E0201.stderr similarity index 100% rename from src/test/ui/error-codes/E0201.stderr rename to tests/ui/error-codes/E0201.stderr diff --git a/src/test/ui/error-codes/E0206.rs b/tests/ui/error-codes/E0206.rs similarity index 100% rename from src/test/ui/error-codes/E0206.rs rename to tests/ui/error-codes/E0206.rs diff --git a/src/test/ui/error-codes/E0206.stderr b/tests/ui/error-codes/E0206.stderr similarity index 100% rename from src/test/ui/error-codes/E0206.stderr rename to tests/ui/error-codes/E0206.stderr diff --git a/src/test/ui/error-codes/E0207.rs b/tests/ui/error-codes/E0207.rs similarity index 100% rename from src/test/ui/error-codes/E0207.rs rename to tests/ui/error-codes/E0207.rs diff --git a/src/test/ui/error-codes/E0207.stderr b/tests/ui/error-codes/E0207.stderr similarity index 100% rename from src/test/ui/error-codes/E0207.stderr rename to tests/ui/error-codes/E0207.stderr diff --git a/src/test/ui/error-codes/E0214.rs b/tests/ui/error-codes/E0214.rs similarity index 100% rename from src/test/ui/error-codes/E0214.rs rename to tests/ui/error-codes/E0214.rs diff --git a/src/test/ui/error-codes/E0214.stderr b/tests/ui/error-codes/E0214.stderr similarity index 100% rename from src/test/ui/error-codes/E0214.stderr rename to tests/ui/error-codes/E0214.stderr diff --git a/src/test/ui/error-codes/E0220.rs b/tests/ui/error-codes/E0220.rs similarity index 100% rename from src/test/ui/error-codes/E0220.rs rename to tests/ui/error-codes/E0220.rs diff --git a/src/test/ui/error-codes/E0220.stderr b/tests/ui/error-codes/E0220.stderr similarity index 100% rename from src/test/ui/error-codes/E0220.stderr rename to tests/ui/error-codes/E0220.stderr diff --git a/src/test/ui/error-codes/E0221.rs b/tests/ui/error-codes/E0221.rs similarity index 100% rename from src/test/ui/error-codes/E0221.rs rename to tests/ui/error-codes/E0221.rs diff --git a/src/test/ui/error-codes/E0221.stderr b/tests/ui/error-codes/E0221.stderr similarity index 100% rename from src/test/ui/error-codes/E0221.stderr rename to tests/ui/error-codes/E0221.stderr diff --git a/src/test/ui/error-codes/E0223.rs b/tests/ui/error-codes/E0223.rs similarity index 100% rename from src/test/ui/error-codes/E0223.rs rename to tests/ui/error-codes/E0223.rs diff --git a/src/test/ui/error-codes/E0223.stderr b/tests/ui/error-codes/E0223.stderr similarity index 100% rename from src/test/ui/error-codes/E0223.stderr rename to tests/ui/error-codes/E0223.stderr diff --git a/src/test/ui/error-codes/E0225.rs b/tests/ui/error-codes/E0225.rs similarity index 100% rename from src/test/ui/error-codes/E0225.rs rename to tests/ui/error-codes/E0225.rs diff --git a/src/test/ui/error-codes/E0225.stderr b/tests/ui/error-codes/E0225.stderr similarity index 100% rename from src/test/ui/error-codes/E0225.stderr rename to tests/ui/error-codes/E0225.stderr diff --git a/src/test/ui/error-codes/E0227.rs b/tests/ui/error-codes/E0227.rs similarity index 100% rename from src/test/ui/error-codes/E0227.rs rename to tests/ui/error-codes/E0227.rs diff --git a/src/test/ui/error-codes/E0227.stderr b/tests/ui/error-codes/E0227.stderr similarity index 100% rename from src/test/ui/error-codes/E0227.stderr rename to tests/ui/error-codes/E0227.stderr diff --git a/src/test/ui/error-codes/E0229.rs b/tests/ui/error-codes/E0229.rs similarity index 100% rename from src/test/ui/error-codes/E0229.rs rename to tests/ui/error-codes/E0229.rs diff --git a/src/test/ui/error-codes/E0229.stderr b/tests/ui/error-codes/E0229.stderr similarity index 100% rename from src/test/ui/error-codes/E0229.stderr rename to tests/ui/error-codes/E0229.stderr diff --git a/src/test/ui/error-codes/E0252.rs b/tests/ui/error-codes/E0252.rs similarity index 100% rename from src/test/ui/error-codes/E0252.rs rename to tests/ui/error-codes/E0252.rs diff --git a/src/test/ui/error-codes/E0252.stderr b/tests/ui/error-codes/E0252.stderr similarity index 100% rename from src/test/ui/error-codes/E0252.stderr rename to tests/ui/error-codes/E0252.stderr diff --git a/src/test/ui/error-codes/E0253.rs b/tests/ui/error-codes/E0253.rs similarity index 100% rename from src/test/ui/error-codes/E0253.rs rename to tests/ui/error-codes/E0253.rs diff --git a/src/test/ui/error-codes/E0253.stderr b/tests/ui/error-codes/E0253.stderr similarity index 100% rename from src/test/ui/error-codes/E0253.stderr rename to tests/ui/error-codes/E0253.stderr diff --git a/src/test/ui/error-codes/E0254.rs b/tests/ui/error-codes/E0254.rs similarity index 100% rename from src/test/ui/error-codes/E0254.rs rename to tests/ui/error-codes/E0254.rs diff --git a/src/test/ui/error-codes/E0254.stderr b/tests/ui/error-codes/E0254.stderr similarity index 100% rename from src/test/ui/error-codes/E0254.stderr rename to tests/ui/error-codes/E0254.stderr diff --git a/src/test/ui/error-codes/E0255.rs b/tests/ui/error-codes/E0255.rs similarity index 100% rename from src/test/ui/error-codes/E0255.rs rename to tests/ui/error-codes/E0255.rs diff --git a/src/test/ui/error-codes/E0255.stderr b/tests/ui/error-codes/E0255.stderr similarity index 100% rename from src/test/ui/error-codes/E0255.stderr rename to tests/ui/error-codes/E0255.stderr diff --git a/src/test/ui/error-codes/E0259.rs b/tests/ui/error-codes/E0259.rs similarity index 100% rename from src/test/ui/error-codes/E0259.rs rename to tests/ui/error-codes/E0259.rs diff --git a/src/test/ui/error-codes/E0259.stderr b/tests/ui/error-codes/E0259.stderr similarity index 100% rename from src/test/ui/error-codes/E0259.stderr rename to tests/ui/error-codes/E0259.stderr diff --git a/src/test/ui/error-codes/E0260.rs b/tests/ui/error-codes/E0260.rs similarity index 100% rename from src/test/ui/error-codes/E0260.rs rename to tests/ui/error-codes/E0260.rs diff --git a/src/test/ui/error-codes/E0260.stderr b/tests/ui/error-codes/E0260.stderr similarity index 100% rename from src/test/ui/error-codes/E0260.stderr rename to tests/ui/error-codes/E0260.stderr diff --git a/src/test/ui/error-codes/E0261.rs b/tests/ui/error-codes/E0261.rs similarity index 100% rename from src/test/ui/error-codes/E0261.rs rename to tests/ui/error-codes/E0261.rs diff --git a/src/test/ui/error-codes/E0261.stderr b/tests/ui/error-codes/E0261.stderr similarity index 100% rename from src/test/ui/error-codes/E0261.stderr rename to tests/ui/error-codes/E0261.stderr diff --git a/src/test/ui/error-codes/E0262.rs b/tests/ui/error-codes/E0262.rs similarity index 100% rename from src/test/ui/error-codes/E0262.rs rename to tests/ui/error-codes/E0262.rs diff --git a/src/test/ui/error-codes/E0262.stderr b/tests/ui/error-codes/E0262.stderr similarity index 100% rename from src/test/ui/error-codes/E0262.stderr rename to tests/ui/error-codes/E0262.stderr diff --git a/src/test/ui/error-codes/E0263.rs b/tests/ui/error-codes/E0263.rs similarity index 100% rename from src/test/ui/error-codes/E0263.rs rename to tests/ui/error-codes/E0263.rs diff --git a/src/test/ui/error-codes/E0263.stderr b/tests/ui/error-codes/E0263.stderr similarity index 100% rename from src/test/ui/error-codes/E0263.stderr rename to tests/ui/error-codes/E0263.stderr diff --git a/src/test/ui/error-codes/E0264.rs b/tests/ui/error-codes/E0264.rs similarity index 100% rename from src/test/ui/error-codes/E0264.rs rename to tests/ui/error-codes/E0264.rs diff --git a/src/test/ui/error-codes/E0264.stderr b/tests/ui/error-codes/E0264.stderr similarity index 100% rename from src/test/ui/error-codes/E0264.stderr rename to tests/ui/error-codes/E0264.stderr diff --git a/src/test/ui/error-codes/E0267.rs b/tests/ui/error-codes/E0267.rs similarity index 100% rename from src/test/ui/error-codes/E0267.rs rename to tests/ui/error-codes/E0267.rs diff --git a/src/test/ui/error-codes/E0267.stderr b/tests/ui/error-codes/E0267.stderr similarity index 100% rename from src/test/ui/error-codes/E0267.stderr rename to tests/ui/error-codes/E0267.stderr diff --git a/src/test/ui/error-codes/E0268.rs b/tests/ui/error-codes/E0268.rs similarity index 100% rename from src/test/ui/error-codes/E0268.rs rename to tests/ui/error-codes/E0268.rs diff --git a/src/test/ui/error-codes/E0268.stderr b/tests/ui/error-codes/E0268.stderr similarity index 100% rename from src/test/ui/error-codes/E0268.stderr rename to tests/ui/error-codes/E0268.stderr diff --git a/src/test/ui/error-codes/E0271.rs b/tests/ui/error-codes/E0271.rs similarity index 100% rename from src/test/ui/error-codes/E0271.rs rename to tests/ui/error-codes/E0271.rs diff --git a/src/test/ui/error-codes/E0271.stderr b/tests/ui/error-codes/E0271.stderr similarity index 100% rename from src/test/ui/error-codes/E0271.stderr rename to tests/ui/error-codes/E0271.stderr diff --git a/src/test/ui/error-codes/E0275.rs b/tests/ui/error-codes/E0275.rs similarity index 100% rename from src/test/ui/error-codes/E0275.rs rename to tests/ui/error-codes/E0275.rs diff --git a/src/test/ui/error-codes/E0275.stderr b/tests/ui/error-codes/E0275.stderr similarity index 100% rename from src/test/ui/error-codes/E0275.stderr rename to tests/ui/error-codes/E0275.stderr diff --git a/src/test/ui/error-codes/E0276.rs b/tests/ui/error-codes/E0276.rs similarity index 100% rename from src/test/ui/error-codes/E0276.rs rename to tests/ui/error-codes/E0276.rs diff --git a/src/test/ui/error-codes/E0276.stderr b/tests/ui/error-codes/E0276.stderr similarity index 100% rename from src/test/ui/error-codes/E0276.stderr rename to tests/ui/error-codes/E0276.stderr diff --git a/src/test/ui/error-codes/E0277-2.rs b/tests/ui/error-codes/E0277-2.rs similarity index 100% rename from src/test/ui/error-codes/E0277-2.rs rename to tests/ui/error-codes/E0277-2.rs diff --git a/src/test/ui/error-codes/E0277-2.stderr b/tests/ui/error-codes/E0277-2.stderr similarity index 100% rename from src/test/ui/error-codes/E0277-2.stderr rename to tests/ui/error-codes/E0277-2.stderr diff --git a/src/test/ui/error-codes/E0277-3.rs b/tests/ui/error-codes/E0277-3.rs similarity index 100% rename from src/test/ui/error-codes/E0277-3.rs rename to tests/ui/error-codes/E0277-3.rs diff --git a/src/test/ui/error-codes/E0277-3.stderr b/tests/ui/error-codes/E0277-3.stderr similarity index 100% rename from src/test/ui/error-codes/E0277-3.stderr rename to tests/ui/error-codes/E0277-3.stderr diff --git a/src/test/ui/error-codes/E0277.rs b/tests/ui/error-codes/E0277.rs similarity index 100% rename from src/test/ui/error-codes/E0277.rs rename to tests/ui/error-codes/E0277.rs diff --git a/src/test/ui/error-codes/E0277.stderr b/tests/ui/error-codes/E0277.stderr similarity index 100% rename from src/test/ui/error-codes/E0277.stderr rename to tests/ui/error-codes/E0277.stderr diff --git a/src/test/ui/error-codes/E0282.rs b/tests/ui/error-codes/E0282.rs similarity index 100% rename from src/test/ui/error-codes/E0282.rs rename to tests/ui/error-codes/E0282.rs diff --git a/src/test/ui/error-codes/E0282.stderr b/tests/ui/error-codes/E0282.stderr similarity index 100% rename from src/test/ui/error-codes/E0282.stderr rename to tests/ui/error-codes/E0282.stderr diff --git a/src/test/ui/error-codes/E0283.rs b/tests/ui/error-codes/E0283.rs similarity index 100% rename from src/test/ui/error-codes/E0283.rs rename to tests/ui/error-codes/E0283.rs diff --git a/src/test/ui/error-codes/E0283.stderr b/tests/ui/error-codes/E0283.stderr similarity index 100% rename from src/test/ui/error-codes/E0283.stderr rename to tests/ui/error-codes/E0283.stderr diff --git a/src/test/ui/error-codes/E0297.rs b/tests/ui/error-codes/E0297.rs similarity index 100% rename from src/test/ui/error-codes/E0297.rs rename to tests/ui/error-codes/E0297.rs diff --git a/src/test/ui/error-codes/E0297.stderr b/tests/ui/error-codes/E0297.stderr similarity index 100% rename from src/test/ui/error-codes/E0297.stderr rename to tests/ui/error-codes/E0297.stderr diff --git a/src/test/ui/error-codes/E0308-2.rs b/tests/ui/error-codes/E0308-2.rs similarity index 100% rename from src/test/ui/error-codes/E0308-2.rs rename to tests/ui/error-codes/E0308-2.rs diff --git a/src/test/ui/error-codes/E0308-2.stderr b/tests/ui/error-codes/E0308-2.stderr similarity index 100% rename from src/test/ui/error-codes/E0308-2.stderr rename to tests/ui/error-codes/E0308-2.stderr diff --git a/src/test/ui/error-codes/E0308-4.rs b/tests/ui/error-codes/E0308-4.rs similarity index 100% rename from src/test/ui/error-codes/E0308-4.rs rename to tests/ui/error-codes/E0308-4.rs diff --git a/src/test/ui/error-codes/E0308-4.stderr b/tests/ui/error-codes/E0308-4.stderr similarity index 100% rename from src/test/ui/error-codes/E0308-4.stderr rename to tests/ui/error-codes/E0308-4.stderr diff --git a/src/test/ui/error-codes/E0308.rs b/tests/ui/error-codes/E0308.rs similarity index 100% rename from src/test/ui/error-codes/E0308.rs rename to tests/ui/error-codes/E0308.rs diff --git a/src/test/ui/error-codes/E0308.stderr b/tests/ui/error-codes/E0308.stderr similarity index 100% rename from src/test/ui/error-codes/E0308.stderr rename to tests/ui/error-codes/E0308.stderr diff --git a/src/test/ui/error-codes/E0311.rs b/tests/ui/error-codes/E0311.rs similarity index 100% rename from src/test/ui/error-codes/E0311.rs rename to tests/ui/error-codes/E0311.rs diff --git a/src/test/ui/error-codes/E0311.stderr b/tests/ui/error-codes/E0311.stderr similarity index 100% rename from src/test/ui/error-codes/E0311.stderr rename to tests/ui/error-codes/E0311.stderr diff --git a/src/test/ui/error-codes/E0328.rs b/tests/ui/error-codes/E0328.rs similarity index 100% rename from src/test/ui/error-codes/E0328.rs rename to tests/ui/error-codes/E0328.rs diff --git a/src/test/ui/error-codes/E0328.stderr b/tests/ui/error-codes/E0328.stderr similarity index 100% rename from src/test/ui/error-codes/E0328.stderr rename to tests/ui/error-codes/E0328.stderr diff --git a/src/test/ui/error-codes/E0365.rs b/tests/ui/error-codes/E0365.rs similarity index 100% rename from src/test/ui/error-codes/E0365.rs rename to tests/ui/error-codes/E0365.rs diff --git a/src/test/ui/error-codes/E0365.stderr b/tests/ui/error-codes/E0365.stderr similarity index 100% rename from src/test/ui/error-codes/E0365.stderr rename to tests/ui/error-codes/E0365.stderr diff --git a/src/test/ui/error-codes/E0370.rs b/tests/ui/error-codes/E0370.rs similarity index 100% rename from src/test/ui/error-codes/E0370.rs rename to tests/ui/error-codes/E0370.rs diff --git a/src/test/ui/error-codes/E0370.stderr b/tests/ui/error-codes/E0370.stderr similarity index 100% rename from src/test/ui/error-codes/E0370.stderr rename to tests/ui/error-codes/E0370.stderr diff --git a/src/test/ui/error-codes/E0374.rs b/tests/ui/error-codes/E0374.rs similarity index 100% rename from src/test/ui/error-codes/E0374.rs rename to tests/ui/error-codes/E0374.rs diff --git a/src/test/ui/error-codes/E0374.stderr b/tests/ui/error-codes/E0374.stderr similarity index 100% rename from src/test/ui/error-codes/E0374.stderr rename to tests/ui/error-codes/E0374.stderr diff --git a/src/test/ui/error-codes/E0375.rs b/tests/ui/error-codes/E0375.rs similarity index 100% rename from src/test/ui/error-codes/E0375.rs rename to tests/ui/error-codes/E0375.rs diff --git a/src/test/ui/error-codes/E0375.stderr b/tests/ui/error-codes/E0375.stderr similarity index 100% rename from src/test/ui/error-codes/E0375.stderr rename to tests/ui/error-codes/E0375.stderr diff --git a/src/test/ui/error-codes/E0376.rs b/tests/ui/error-codes/E0376.rs similarity index 100% rename from src/test/ui/error-codes/E0376.rs rename to tests/ui/error-codes/E0376.rs diff --git a/src/test/ui/error-codes/E0376.stderr b/tests/ui/error-codes/E0376.stderr similarity index 100% rename from src/test/ui/error-codes/E0376.stderr rename to tests/ui/error-codes/E0376.stderr diff --git a/src/test/ui/error-codes/E0377.rs b/tests/ui/error-codes/E0377.rs similarity index 100% rename from src/test/ui/error-codes/E0377.rs rename to tests/ui/error-codes/E0377.rs diff --git a/src/test/ui/error-codes/E0377.stderr b/tests/ui/error-codes/E0377.stderr similarity index 100% rename from src/test/ui/error-codes/E0377.stderr rename to tests/ui/error-codes/E0377.stderr diff --git a/src/test/ui/error-codes/E0388.rs b/tests/ui/error-codes/E0388.rs similarity index 100% rename from src/test/ui/error-codes/E0388.rs rename to tests/ui/error-codes/E0388.rs diff --git a/src/test/ui/error-codes/E0388.stderr b/tests/ui/error-codes/E0388.stderr similarity index 100% rename from src/test/ui/error-codes/E0388.stderr rename to tests/ui/error-codes/E0388.stderr diff --git a/src/test/ui/error-codes/E0389.rs b/tests/ui/error-codes/E0389.rs similarity index 100% rename from src/test/ui/error-codes/E0389.rs rename to tests/ui/error-codes/E0389.rs diff --git a/src/test/ui/error-codes/E0389.stderr b/tests/ui/error-codes/E0389.stderr similarity index 100% rename from src/test/ui/error-codes/E0389.stderr rename to tests/ui/error-codes/E0389.stderr diff --git a/src/test/ui/error-codes/E0390.rs b/tests/ui/error-codes/E0390.rs similarity index 100% rename from src/test/ui/error-codes/E0390.rs rename to tests/ui/error-codes/E0390.rs diff --git a/src/test/ui/error-codes/E0390.stderr b/tests/ui/error-codes/E0390.stderr similarity index 100% rename from src/test/ui/error-codes/E0390.stderr rename to tests/ui/error-codes/E0390.stderr diff --git a/src/test/ui/error-codes/E0392.rs b/tests/ui/error-codes/E0392.rs similarity index 100% rename from src/test/ui/error-codes/E0392.rs rename to tests/ui/error-codes/E0392.rs diff --git a/src/test/ui/error-codes/E0392.stderr b/tests/ui/error-codes/E0392.stderr similarity index 100% rename from src/test/ui/error-codes/E0392.stderr rename to tests/ui/error-codes/E0392.stderr diff --git a/src/test/ui/error-codes/E0393.rs b/tests/ui/error-codes/E0393.rs similarity index 100% rename from src/test/ui/error-codes/E0393.rs rename to tests/ui/error-codes/E0393.rs diff --git a/src/test/ui/error-codes/E0393.stderr b/tests/ui/error-codes/E0393.stderr similarity index 100% rename from src/test/ui/error-codes/E0393.stderr rename to tests/ui/error-codes/E0393.stderr diff --git a/src/test/ui/error-codes/E0396-fixed.rs b/tests/ui/error-codes/E0396-fixed.rs similarity index 100% rename from src/test/ui/error-codes/E0396-fixed.rs rename to tests/ui/error-codes/E0396-fixed.rs diff --git a/src/test/ui/error-codes/E0396-fixed.stderr b/tests/ui/error-codes/E0396-fixed.stderr similarity index 100% rename from src/test/ui/error-codes/E0396-fixed.stderr rename to tests/ui/error-codes/E0396-fixed.stderr diff --git a/src/test/ui/error-codes/E0396.rs b/tests/ui/error-codes/E0396.rs similarity index 100% rename from src/test/ui/error-codes/E0396.rs rename to tests/ui/error-codes/E0396.rs diff --git a/src/test/ui/error-codes/E0396.stderr b/tests/ui/error-codes/E0396.stderr similarity index 100% rename from src/test/ui/error-codes/E0396.stderr rename to tests/ui/error-codes/E0396.stderr diff --git a/src/test/ui/error-codes/E0401.rs b/tests/ui/error-codes/E0401.rs similarity index 100% rename from src/test/ui/error-codes/E0401.rs rename to tests/ui/error-codes/E0401.rs diff --git a/src/test/ui/error-codes/E0401.stderr b/tests/ui/error-codes/E0401.stderr similarity index 100% rename from src/test/ui/error-codes/E0401.stderr rename to tests/ui/error-codes/E0401.stderr diff --git a/src/test/ui/error-codes/E0403.rs b/tests/ui/error-codes/E0403.rs similarity index 100% rename from src/test/ui/error-codes/E0403.rs rename to tests/ui/error-codes/E0403.rs diff --git a/src/test/ui/error-codes/E0403.stderr b/tests/ui/error-codes/E0403.stderr similarity index 100% rename from src/test/ui/error-codes/E0403.stderr rename to tests/ui/error-codes/E0403.stderr diff --git a/src/test/ui/error-codes/E0404.rs b/tests/ui/error-codes/E0404.rs similarity index 100% rename from src/test/ui/error-codes/E0404.rs rename to tests/ui/error-codes/E0404.rs diff --git a/src/test/ui/error-codes/E0404.stderr b/tests/ui/error-codes/E0404.stderr similarity index 100% rename from src/test/ui/error-codes/E0404.stderr rename to tests/ui/error-codes/E0404.stderr diff --git a/src/test/ui/error-codes/E0405.rs b/tests/ui/error-codes/E0405.rs similarity index 100% rename from src/test/ui/error-codes/E0405.rs rename to tests/ui/error-codes/E0405.rs diff --git a/src/test/ui/error-codes/E0405.stderr b/tests/ui/error-codes/E0405.stderr similarity index 100% rename from src/test/ui/error-codes/E0405.stderr rename to tests/ui/error-codes/E0405.stderr diff --git a/src/test/ui/error-codes/E0407.rs b/tests/ui/error-codes/E0407.rs similarity index 100% rename from src/test/ui/error-codes/E0407.rs rename to tests/ui/error-codes/E0407.rs diff --git a/src/test/ui/error-codes/E0407.stderr b/tests/ui/error-codes/E0407.stderr similarity index 100% rename from src/test/ui/error-codes/E0407.stderr rename to tests/ui/error-codes/E0407.stderr diff --git a/src/test/ui/error-codes/E0408.rs b/tests/ui/error-codes/E0408.rs similarity index 100% rename from src/test/ui/error-codes/E0408.rs rename to tests/ui/error-codes/E0408.rs diff --git a/src/test/ui/error-codes/E0408.stderr b/tests/ui/error-codes/E0408.stderr similarity index 100% rename from src/test/ui/error-codes/E0408.stderr rename to tests/ui/error-codes/E0408.stderr diff --git a/src/test/ui/error-codes/E0411.rs b/tests/ui/error-codes/E0411.rs similarity index 100% rename from src/test/ui/error-codes/E0411.rs rename to tests/ui/error-codes/E0411.rs diff --git a/src/test/ui/error-codes/E0411.stderr b/tests/ui/error-codes/E0411.stderr similarity index 100% rename from src/test/ui/error-codes/E0411.stderr rename to tests/ui/error-codes/E0411.stderr diff --git a/src/test/ui/error-codes/E0412.rs b/tests/ui/error-codes/E0412.rs similarity index 100% rename from src/test/ui/error-codes/E0412.rs rename to tests/ui/error-codes/E0412.rs diff --git a/src/test/ui/error-codes/E0412.stderr b/tests/ui/error-codes/E0412.stderr similarity index 100% rename from src/test/ui/error-codes/E0412.stderr rename to tests/ui/error-codes/E0412.stderr diff --git a/src/test/ui/error-codes/E0415.rs b/tests/ui/error-codes/E0415.rs similarity index 100% rename from src/test/ui/error-codes/E0415.rs rename to tests/ui/error-codes/E0415.rs diff --git a/src/test/ui/error-codes/E0415.stderr b/tests/ui/error-codes/E0415.stderr similarity index 100% rename from src/test/ui/error-codes/E0415.stderr rename to tests/ui/error-codes/E0415.stderr diff --git a/src/test/ui/error-codes/E0416.rs b/tests/ui/error-codes/E0416.rs similarity index 100% rename from src/test/ui/error-codes/E0416.rs rename to tests/ui/error-codes/E0416.rs diff --git a/src/test/ui/error-codes/E0416.stderr b/tests/ui/error-codes/E0416.stderr similarity index 100% rename from src/test/ui/error-codes/E0416.stderr rename to tests/ui/error-codes/E0416.stderr diff --git a/src/test/ui/error-codes/E0423.rs b/tests/ui/error-codes/E0423.rs similarity index 100% rename from src/test/ui/error-codes/E0423.rs rename to tests/ui/error-codes/E0423.rs diff --git a/src/test/ui/error-codes/E0423.stderr b/tests/ui/error-codes/E0423.stderr similarity index 100% rename from src/test/ui/error-codes/E0423.stderr rename to tests/ui/error-codes/E0423.stderr diff --git a/src/test/ui/error-codes/E0424.rs b/tests/ui/error-codes/E0424.rs similarity index 100% rename from src/test/ui/error-codes/E0424.rs rename to tests/ui/error-codes/E0424.rs diff --git a/src/test/ui/error-codes/E0424.stderr b/tests/ui/error-codes/E0424.stderr similarity index 100% rename from src/test/ui/error-codes/E0424.stderr rename to tests/ui/error-codes/E0424.stderr diff --git a/src/test/ui/error-codes/E0425.rs b/tests/ui/error-codes/E0425.rs similarity index 100% rename from src/test/ui/error-codes/E0425.rs rename to tests/ui/error-codes/E0425.rs diff --git a/src/test/ui/error-codes/E0425.stderr b/tests/ui/error-codes/E0425.stderr similarity index 100% rename from src/test/ui/error-codes/E0425.stderr rename to tests/ui/error-codes/E0425.stderr diff --git a/src/test/ui/error-codes/E0426.rs b/tests/ui/error-codes/E0426.rs similarity index 100% rename from src/test/ui/error-codes/E0426.rs rename to tests/ui/error-codes/E0426.rs diff --git a/src/test/ui/error-codes/E0426.stderr b/tests/ui/error-codes/E0426.stderr similarity index 100% rename from src/test/ui/error-codes/E0426.stderr rename to tests/ui/error-codes/E0426.stderr diff --git a/src/test/ui/error-codes/E0428.rs b/tests/ui/error-codes/E0428.rs similarity index 100% rename from src/test/ui/error-codes/E0428.rs rename to tests/ui/error-codes/E0428.rs diff --git a/src/test/ui/error-codes/E0428.stderr b/tests/ui/error-codes/E0428.stderr similarity index 100% rename from src/test/ui/error-codes/E0428.stderr rename to tests/ui/error-codes/E0428.stderr diff --git a/src/test/ui/error-codes/E0429.rs b/tests/ui/error-codes/E0429.rs similarity index 100% rename from src/test/ui/error-codes/E0429.rs rename to tests/ui/error-codes/E0429.rs diff --git a/src/test/ui/error-codes/E0429.stderr b/tests/ui/error-codes/E0429.stderr similarity index 100% rename from src/test/ui/error-codes/E0429.stderr rename to tests/ui/error-codes/E0429.stderr diff --git a/src/test/ui/error-codes/E0430.rs b/tests/ui/error-codes/E0430.rs similarity index 100% rename from src/test/ui/error-codes/E0430.rs rename to tests/ui/error-codes/E0430.rs diff --git a/src/test/ui/error-codes/E0430.stderr b/tests/ui/error-codes/E0430.stderr similarity index 100% rename from src/test/ui/error-codes/E0430.stderr rename to tests/ui/error-codes/E0430.stderr diff --git a/src/test/ui/error-codes/E0431.rs b/tests/ui/error-codes/E0431.rs similarity index 100% rename from src/test/ui/error-codes/E0431.rs rename to tests/ui/error-codes/E0431.rs diff --git a/src/test/ui/error-codes/E0431.stderr b/tests/ui/error-codes/E0431.stderr similarity index 100% rename from src/test/ui/error-codes/E0431.stderr rename to tests/ui/error-codes/E0431.stderr diff --git a/src/test/ui/error-codes/E0432.rs b/tests/ui/error-codes/E0432.rs similarity index 100% rename from src/test/ui/error-codes/E0432.rs rename to tests/ui/error-codes/E0432.rs diff --git a/src/test/ui/error-codes/E0432.stderr b/tests/ui/error-codes/E0432.stderr similarity index 100% rename from src/test/ui/error-codes/E0432.stderr rename to tests/ui/error-codes/E0432.stderr diff --git a/src/test/ui/error-codes/E0433.rs b/tests/ui/error-codes/E0433.rs similarity index 100% rename from src/test/ui/error-codes/E0433.rs rename to tests/ui/error-codes/E0433.rs diff --git a/src/test/ui/error-codes/E0433.stderr b/tests/ui/error-codes/E0433.stderr similarity index 100% rename from src/test/ui/error-codes/E0433.stderr rename to tests/ui/error-codes/E0433.stderr diff --git a/src/test/ui/error-codes/E0434.rs b/tests/ui/error-codes/E0434.rs similarity index 100% rename from src/test/ui/error-codes/E0434.rs rename to tests/ui/error-codes/E0434.rs diff --git a/src/test/ui/error-codes/E0434.stderr b/tests/ui/error-codes/E0434.stderr similarity index 100% rename from src/test/ui/error-codes/E0434.stderr rename to tests/ui/error-codes/E0434.stderr diff --git a/src/test/ui/error-codes/E0435.fixed b/tests/ui/error-codes/E0435.fixed similarity index 100% rename from src/test/ui/error-codes/E0435.fixed rename to tests/ui/error-codes/E0435.fixed diff --git a/src/test/ui/error-codes/E0435.rs b/tests/ui/error-codes/E0435.rs similarity index 100% rename from src/test/ui/error-codes/E0435.rs rename to tests/ui/error-codes/E0435.rs diff --git a/src/test/ui/error-codes/E0435.stderr b/tests/ui/error-codes/E0435.stderr similarity index 100% rename from src/test/ui/error-codes/E0435.stderr rename to tests/ui/error-codes/E0435.stderr diff --git a/src/test/ui/error-codes/E0437.rs b/tests/ui/error-codes/E0437.rs similarity index 100% rename from src/test/ui/error-codes/E0437.rs rename to tests/ui/error-codes/E0437.rs diff --git a/src/test/ui/error-codes/E0437.stderr b/tests/ui/error-codes/E0437.stderr similarity index 100% rename from src/test/ui/error-codes/E0437.stderr rename to tests/ui/error-codes/E0437.stderr diff --git a/src/test/ui/error-codes/E0438.rs b/tests/ui/error-codes/E0438.rs similarity index 100% rename from src/test/ui/error-codes/E0438.rs rename to tests/ui/error-codes/E0438.rs diff --git a/src/test/ui/error-codes/E0438.stderr b/tests/ui/error-codes/E0438.stderr similarity index 100% rename from src/test/ui/error-codes/E0438.stderr rename to tests/ui/error-codes/E0438.stderr diff --git a/src/test/ui/error-codes/E0445.rs b/tests/ui/error-codes/E0445.rs similarity index 100% rename from src/test/ui/error-codes/E0445.rs rename to tests/ui/error-codes/E0445.rs diff --git a/src/test/ui/error-codes/E0445.stderr b/tests/ui/error-codes/E0445.stderr similarity index 100% rename from src/test/ui/error-codes/E0445.stderr rename to tests/ui/error-codes/E0445.stderr diff --git a/src/test/ui/error-codes/E0446.rs b/tests/ui/error-codes/E0446.rs similarity index 100% rename from src/test/ui/error-codes/E0446.rs rename to tests/ui/error-codes/E0446.rs diff --git a/src/test/ui/error-codes/E0446.stderr b/tests/ui/error-codes/E0446.stderr similarity index 100% rename from src/test/ui/error-codes/E0446.stderr rename to tests/ui/error-codes/E0446.stderr diff --git a/src/test/ui/error-codes/E0449.rs b/tests/ui/error-codes/E0449.rs similarity index 100% rename from src/test/ui/error-codes/E0449.rs rename to tests/ui/error-codes/E0449.rs diff --git a/src/test/ui/error-codes/E0449.stderr b/tests/ui/error-codes/E0449.stderr similarity index 100% rename from src/test/ui/error-codes/E0449.stderr rename to tests/ui/error-codes/E0449.stderr diff --git a/src/test/ui/error-codes/E0451.rs b/tests/ui/error-codes/E0451.rs similarity index 100% rename from src/test/ui/error-codes/E0451.rs rename to tests/ui/error-codes/E0451.rs diff --git a/src/test/ui/error-codes/E0451.stderr b/tests/ui/error-codes/E0451.stderr similarity index 100% rename from src/test/ui/error-codes/E0451.stderr rename to tests/ui/error-codes/E0451.stderr diff --git a/src/test/ui/error-codes/E0452.rs b/tests/ui/error-codes/E0452.rs similarity index 100% rename from src/test/ui/error-codes/E0452.rs rename to tests/ui/error-codes/E0452.rs diff --git a/src/test/ui/error-codes/E0452.stderr b/tests/ui/error-codes/E0452.stderr similarity index 100% rename from src/test/ui/error-codes/E0452.stderr rename to tests/ui/error-codes/E0452.stderr diff --git a/src/test/ui/error-codes/E0453.rs b/tests/ui/error-codes/E0453.rs similarity index 100% rename from src/test/ui/error-codes/E0453.rs rename to tests/ui/error-codes/E0453.rs diff --git a/src/test/ui/error-codes/E0453.stderr b/tests/ui/error-codes/E0453.stderr similarity index 100% rename from src/test/ui/error-codes/E0453.stderr rename to tests/ui/error-codes/E0453.stderr diff --git a/src/test/ui/error-codes/E0454.rs b/tests/ui/error-codes/E0454.rs similarity index 100% rename from src/test/ui/error-codes/E0454.rs rename to tests/ui/error-codes/E0454.rs diff --git a/src/test/ui/error-codes/E0454.stderr b/tests/ui/error-codes/E0454.stderr similarity index 100% rename from src/test/ui/error-codes/E0454.stderr rename to tests/ui/error-codes/E0454.stderr diff --git a/src/test/ui/error-codes/E0458.rs b/tests/ui/error-codes/E0458.rs similarity index 100% rename from src/test/ui/error-codes/E0458.rs rename to tests/ui/error-codes/E0458.rs diff --git a/src/test/ui/error-codes/E0458.stderr b/tests/ui/error-codes/E0458.stderr similarity index 100% rename from src/test/ui/error-codes/E0458.stderr rename to tests/ui/error-codes/E0458.stderr diff --git a/src/test/ui/error-codes/E0459.rs b/tests/ui/error-codes/E0459.rs similarity index 100% rename from src/test/ui/error-codes/E0459.rs rename to tests/ui/error-codes/E0459.rs diff --git a/src/test/ui/error-codes/E0459.stderr b/tests/ui/error-codes/E0459.stderr similarity index 100% rename from src/test/ui/error-codes/E0459.stderr rename to tests/ui/error-codes/E0459.stderr diff --git a/src/test/ui/error-codes/E0462.rs b/tests/ui/error-codes/E0462.rs similarity index 100% rename from src/test/ui/error-codes/E0462.rs rename to tests/ui/error-codes/E0462.rs diff --git a/src/test/ui/error-codes/E0462.stderr b/tests/ui/error-codes/E0462.stderr similarity index 100% rename from src/test/ui/error-codes/E0462.stderr rename to tests/ui/error-codes/E0462.stderr diff --git a/src/test/ui/error-codes/E0463.rs b/tests/ui/error-codes/E0463.rs similarity index 100% rename from src/test/ui/error-codes/E0463.rs rename to tests/ui/error-codes/E0463.rs diff --git a/src/test/ui/error-codes/E0463.stderr b/tests/ui/error-codes/E0463.stderr similarity index 100% rename from src/test/ui/error-codes/E0463.stderr rename to tests/ui/error-codes/E0463.stderr diff --git a/src/test/ui/error-codes/E0464.rs b/tests/ui/error-codes/E0464.rs similarity index 100% rename from src/test/ui/error-codes/E0464.rs rename to tests/ui/error-codes/E0464.rs diff --git a/src/test/ui/error-codes/E0464.stderr b/tests/ui/error-codes/E0464.stderr similarity index 100% rename from src/test/ui/error-codes/E0464.stderr rename to tests/ui/error-codes/E0464.stderr diff --git a/src/test/ui/error-codes/E0478.rs b/tests/ui/error-codes/E0478.rs similarity index 100% rename from src/test/ui/error-codes/E0478.rs rename to tests/ui/error-codes/E0478.rs diff --git a/src/test/ui/error-codes/E0478.stderr b/tests/ui/error-codes/E0478.stderr similarity index 100% rename from src/test/ui/error-codes/E0478.stderr rename to tests/ui/error-codes/E0478.stderr diff --git a/src/test/ui/error-codes/E0492.rs b/tests/ui/error-codes/E0492.rs similarity index 100% rename from src/test/ui/error-codes/E0492.rs rename to tests/ui/error-codes/E0492.rs diff --git a/src/test/ui/error-codes/E0492.stderr b/tests/ui/error-codes/E0492.stderr similarity index 100% rename from src/test/ui/error-codes/E0492.stderr rename to tests/ui/error-codes/E0492.stderr diff --git a/src/test/ui/error-codes/E0496.rs b/tests/ui/error-codes/E0496.rs similarity index 100% rename from src/test/ui/error-codes/E0496.rs rename to tests/ui/error-codes/E0496.rs diff --git a/src/test/ui/error-codes/E0496.stderr b/tests/ui/error-codes/E0496.stderr similarity index 100% rename from src/test/ui/error-codes/E0496.stderr rename to tests/ui/error-codes/E0496.stderr diff --git a/src/test/ui/error-codes/E0499.rs b/tests/ui/error-codes/E0499.rs similarity index 100% rename from src/test/ui/error-codes/E0499.rs rename to tests/ui/error-codes/E0499.rs diff --git a/src/test/ui/error-codes/E0499.stderr b/tests/ui/error-codes/E0499.stderr similarity index 100% rename from src/test/ui/error-codes/E0499.stderr rename to tests/ui/error-codes/E0499.stderr diff --git a/src/test/ui/error-codes/E0501.rs b/tests/ui/error-codes/E0501.rs similarity index 100% rename from src/test/ui/error-codes/E0501.rs rename to tests/ui/error-codes/E0501.rs diff --git a/src/test/ui/error-codes/E0501.stderr b/tests/ui/error-codes/E0501.stderr similarity index 100% rename from src/test/ui/error-codes/E0501.stderr rename to tests/ui/error-codes/E0501.stderr diff --git a/src/test/ui/error-codes/E0502.rs b/tests/ui/error-codes/E0502.rs similarity index 100% rename from src/test/ui/error-codes/E0502.rs rename to tests/ui/error-codes/E0502.rs diff --git a/src/test/ui/error-codes/E0502.stderr b/tests/ui/error-codes/E0502.stderr similarity index 100% rename from src/test/ui/error-codes/E0502.stderr rename to tests/ui/error-codes/E0502.stderr diff --git a/src/test/ui/error-codes/E0503.rs b/tests/ui/error-codes/E0503.rs similarity index 100% rename from src/test/ui/error-codes/E0503.rs rename to tests/ui/error-codes/E0503.rs diff --git a/src/test/ui/error-codes/E0503.stderr b/tests/ui/error-codes/E0503.stderr similarity index 100% rename from src/test/ui/error-codes/E0503.stderr rename to tests/ui/error-codes/E0503.stderr diff --git a/src/test/ui/error-codes/E0504.rs b/tests/ui/error-codes/E0504.rs similarity index 100% rename from src/test/ui/error-codes/E0504.rs rename to tests/ui/error-codes/E0504.rs diff --git a/src/test/ui/error-codes/E0504.stderr b/tests/ui/error-codes/E0504.stderr similarity index 100% rename from src/test/ui/error-codes/E0504.stderr rename to tests/ui/error-codes/E0504.stderr diff --git a/src/test/ui/error-codes/E0505.rs b/tests/ui/error-codes/E0505.rs similarity index 100% rename from src/test/ui/error-codes/E0505.rs rename to tests/ui/error-codes/E0505.rs diff --git a/src/test/ui/error-codes/E0505.stderr b/tests/ui/error-codes/E0505.stderr similarity index 100% rename from src/test/ui/error-codes/E0505.stderr rename to tests/ui/error-codes/E0505.stderr diff --git a/src/test/ui/error-codes/E0506.rs b/tests/ui/error-codes/E0506.rs similarity index 100% rename from src/test/ui/error-codes/E0506.rs rename to tests/ui/error-codes/E0506.rs diff --git a/src/test/ui/error-codes/E0506.stderr b/tests/ui/error-codes/E0506.stderr similarity index 100% rename from src/test/ui/error-codes/E0506.stderr rename to tests/ui/error-codes/E0506.stderr diff --git a/src/test/ui/error-codes/E0507.rs b/tests/ui/error-codes/E0507.rs similarity index 100% rename from src/test/ui/error-codes/E0507.rs rename to tests/ui/error-codes/E0507.rs diff --git a/src/test/ui/error-codes/E0507.stderr b/tests/ui/error-codes/E0507.stderr similarity index 100% rename from src/test/ui/error-codes/E0507.stderr rename to tests/ui/error-codes/E0507.stderr diff --git a/src/test/ui/error-codes/E0508-fail.rs b/tests/ui/error-codes/E0508-fail.rs similarity index 100% rename from src/test/ui/error-codes/E0508-fail.rs rename to tests/ui/error-codes/E0508-fail.rs diff --git a/src/test/ui/error-codes/E0508-fail.stderr b/tests/ui/error-codes/E0508-fail.stderr similarity index 100% rename from src/test/ui/error-codes/E0508-fail.stderr rename to tests/ui/error-codes/E0508-fail.stderr diff --git a/src/test/ui/error-codes/E0508.rs b/tests/ui/error-codes/E0508.rs similarity index 100% rename from src/test/ui/error-codes/E0508.rs rename to tests/ui/error-codes/E0508.rs diff --git a/src/test/ui/error-codes/E0508.stderr b/tests/ui/error-codes/E0508.stderr similarity index 100% rename from src/test/ui/error-codes/E0508.stderr rename to tests/ui/error-codes/E0508.stderr diff --git a/src/test/ui/error-codes/E0509.rs b/tests/ui/error-codes/E0509.rs similarity index 100% rename from src/test/ui/error-codes/E0509.rs rename to tests/ui/error-codes/E0509.rs diff --git a/src/test/ui/error-codes/E0509.stderr b/tests/ui/error-codes/E0509.stderr similarity index 100% rename from src/test/ui/error-codes/E0509.stderr rename to tests/ui/error-codes/E0509.stderr diff --git a/src/test/ui/error-codes/E0511.rs b/tests/ui/error-codes/E0511.rs similarity index 100% rename from src/test/ui/error-codes/E0511.rs rename to tests/ui/error-codes/E0511.rs diff --git a/src/test/ui/error-codes/E0511.stderr b/tests/ui/error-codes/E0511.stderr similarity index 100% rename from src/test/ui/error-codes/E0511.stderr rename to tests/ui/error-codes/E0511.stderr diff --git a/src/test/ui/error-codes/E0512.rs b/tests/ui/error-codes/E0512.rs similarity index 100% rename from src/test/ui/error-codes/E0512.rs rename to tests/ui/error-codes/E0512.rs diff --git a/src/test/ui/error-codes/E0512.stderr b/tests/ui/error-codes/E0512.stderr similarity index 100% rename from src/test/ui/error-codes/E0512.stderr rename to tests/ui/error-codes/E0512.stderr diff --git a/src/test/ui/error-codes/E0516.rs b/tests/ui/error-codes/E0516.rs similarity index 100% rename from src/test/ui/error-codes/E0516.rs rename to tests/ui/error-codes/E0516.rs diff --git a/src/test/ui/error-codes/E0516.stderr b/tests/ui/error-codes/E0516.stderr similarity index 100% rename from src/test/ui/error-codes/E0516.stderr rename to tests/ui/error-codes/E0516.stderr diff --git a/src/test/ui/error-codes/E0517.rs b/tests/ui/error-codes/E0517.rs similarity index 100% rename from src/test/ui/error-codes/E0517.rs rename to tests/ui/error-codes/E0517.rs diff --git a/src/test/ui/error-codes/E0517.stderr b/tests/ui/error-codes/E0517.stderr similarity index 100% rename from src/test/ui/error-codes/E0517.stderr rename to tests/ui/error-codes/E0517.stderr diff --git a/src/test/ui/error-codes/E0518.rs b/tests/ui/error-codes/E0518.rs similarity index 100% rename from src/test/ui/error-codes/E0518.rs rename to tests/ui/error-codes/E0518.rs diff --git a/src/test/ui/error-codes/E0518.stderr b/tests/ui/error-codes/E0518.stderr similarity index 100% rename from src/test/ui/error-codes/E0518.stderr rename to tests/ui/error-codes/E0518.stderr diff --git a/src/test/ui/error-codes/E0519.rs b/tests/ui/error-codes/E0519.rs similarity index 100% rename from src/test/ui/error-codes/E0519.rs rename to tests/ui/error-codes/E0519.rs diff --git a/src/test/ui/error-codes/E0519.stderr b/tests/ui/error-codes/E0519.stderr similarity index 100% rename from src/test/ui/error-codes/E0519.stderr rename to tests/ui/error-codes/E0519.stderr diff --git a/src/test/ui/error-codes/E0520.rs b/tests/ui/error-codes/E0520.rs similarity index 100% rename from src/test/ui/error-codes/E0520.rs rename to tests/ui/error-codes/E0520.rs diff --git a/src/test/ui/error-codes/E0520.stderr b/tests/ui/error-codes/E0520.stderr similarity index 100% rename from src/test/ui/error-codes/E0520.stderr rename to tests/ui/error-codes/E0520.stderr diff --git a/src/test/ui/error-codes/E0522.rs b/tests/ui/error-codes/E0522.rs similarity index 100% rename from src/test/ui/error-codes/E0522.rs rename to tests/ui/error-codes/E0522.rs diff --git a/src/test/ui/error-codes/E0522.stderr b/tests/ui/error-codes/E0522.stderr similarity index 100% rename from src/test/ui/error-codes/E0522.stderr rename to tests/ui/error-codes/E0522.stderr diff --git a/src/test/ui/error-codes/E0527.rs b/tests/ui/error-codes/E0527.rs similarity index 100% rename from src/test/ui/error-codes/E0527.rs rename to tests/ui/error-codes/E0527.rs diff --git a/src/test/ui/error-codes/E0527.stderr b/tests/ui/error-codes/E0527.stderr similarity index 100% rename from src/test/ui/error-codes/E0527.stderr rename to tests/ui/error-codes/E0527.stderr diff --git a/src/test/ui/error-codes/E0528.rs b/tests/ui/error-codes/E0528.rs similarity index 100% rename from src/test/ui/error-codes/E0528.rs rename to tests/ui/error-codes/E0528.rs diff --git a/src/test/ui/error-codes/E0528.stderr b/tests/ui/error-codes/E0528.stderr similarity index 100% rename from src/test/ui/error-codes/E0528.stderr rename to tests/ui/error-codes/E0528.stderr diff --git a/src/test/ui/error-codes/E0529.rs b/tests/ui/error-codes/E0529.rs similarity index 100% rename from src/test/ui/error-codes/E0529.rs rename to tests/ui/error-codes/E0529.rs diff --git a/src/test/ui/error-codes/E0529.stderr b/tests/ui/error-codes/E0529.stderr similarity index 100% rename from src/test/ui/error-codes/E0529.stderr rename to tests/ui/error-codes/E0529.stderr diff --git a/src/test/ui/error-codes/E0530.rs b/tests/ui/error-codes/E0530.rs similarity index 100% rename from src/test/ui/error-codes/E0530.rs rename to tests/ui/error-codes/E0530.rs diff --git a/src/test/ui/error-codes/E0530.stderr b/tests/ui/error-codes/E0530.stderr similarity index 100% rename from src/test/ui/error-codes/E0530.stderr rename to tests/ui/error-codes/E0530.stderr diff --git a/src/test/ui/error-codes/E0532.rs b/tests/ui/error-codes/E0532.rs similarity index 100% rename from src/test/ui/error-codes/E0532.rs rename to tests/ui/error-codes/E0532.rs diff --git a/src/test/ui/error-codes/E0532.stderr b/tests/ui/error-codes/E0532.stderr similarity index 100% rename from src/test/ui/error-codes/E0532.stderr rename to tests/ui/error-codes/E0532.stderr diff --git a/src/test/ui/error-codes/E0534.rs b/tests/ui/error-codes/E0534.rs similarity index 100% rename from src/test/ui/error-codes/E0534.rs rename to tests/ui/error-codes/E0534.rs diff --git a/src/test/ui/error-codes/E0534.stderr b/tests/ui/error-codes/E0534.stderr similarity index 100% rename from src/test/ui/error-codes/E0534.stderr rename to tests/ui/error-codes/E0534.stderr diff --git a/src/test/ui/error-codes/E0559.rs b/tests/ui/error-codes/E0559.rs similarity index 100% rename from src/test/ui/error-codes/E0559.rs rename to tests/ui/error-codes/E0559.rs diff --git a/src/test/ui/error-codes/E0559.stderr b/tests/ui/error-codes/E0559.stderr similarity index 100% rename from src/test/ui/error-codes/E0559.stderr rename to tests/ui/error-codes/E0559.stderr diff --git a/src/test/ui/error-codes/E0560.rs b/tests/ui/error-codes/E0560.rs similarity index 100% rename from src/test/ui/error-codes/E0560.rs rename to tests/ui/error-codes/E0560.rs diff --git a/src/test/ui/error-codes/E0560.stderr b/tests/ui/error-codes/E0560.stderr similarity index 100% rename from src/test/ui/error-codes/E0560.stderr rename to tests/ui/error-codes/E0560.stderr diff --git a/src/test/ui/error-codes/E0565-1.rs b/tests/ui/error-codes/E0565-1.rs similarity index 100% rename from src/test/ui/error-codes/E0565-1.rs rename to tests/ui/error-codes/E0565-1.rs diff --git a/src/test/ui/error-codes/E0565-1.stderr b/tests/ui/error-codes/E0565-1.stderr similarity index 100% rename from src/test/ui/error-codes/E0565-1.stderr rename to tests/ui/error-codes/E0565-1.stderr diff --git a/src/test/ui/error-codes/E0565-2.rs b/tests/ui/error-codes/E0565-2.rs similarity index 100% rename from src/test/ui/error-codes/E0565-2.rs rename to tests/ui/error-codes/E0565-2.rs diff --git a/src/test/ui/error-codes/E0565-2.stderr b/tests/ui/error-codes/E0565-2.stderr similarity index 100% rename from src/test/ui/error-codes/E0565-2.stderr rename to tests/ui/error-codes/E0565-2.stderr diff --git a/src/test/ui/error-codes/E0565.rs b/tests/ui/error-codes/E0565.rs similarity index 100% rename from src/test/ui/error-codes/E0565.rs rename to tests/ui/error-codes/E0565.rs diff --git a/src/test/ui/error-codes/E0565.stderr b/tests/ui/error-codes/E0565.stderr similarity index 100% rename from src/test/ui/error-codes/E0565.stderr rename to tests/ui/error-codes/E0565.stderr diff --git a/src/test/ui/error-codes/E0572.rs b/tests/ui/error-codes/E0572.rs similarity index 100% rename from src/test/ui/error-codes/E0572.rs rename to tests/ui/error-codes/E0572.rs diff --git a/src/test/ui/error-codes/E0572.stderr b/tests/ui/error-codes/E0572.stderr similarity index 100% rename from src/test/ui/error-codes/E0572.stderr rename to tests/ui/error-codes/E0572.stderr diff --git a/src/test/ui/error-codes/E0582.rs b/tests/ui/error-codes/E0582.rs similarity index 100% rename from src/test/ui/error-codes/E0582.rs rename to tests/ui/error-codes/E0582.rs diff --git a/src/test/ui/error-codes/E0582.stderr b/tests/ui/error-codes/E0582.stderr similarity index 100% rename from src/test/ui/error-codes/E0582.stderr rename to tests/ui/error-codes/E0582.stderr diff --git a/src/test/ui/error-codes/E0583.rs b/tests/ui/error-codes/E0583.rs similarity index 100% rename from src/test/ui/error-codes/E0583.rs rename to tests/ui/error-codes/E0583.rs diff --git a/src/test/ui/error-codes/E0583.stderr b/tests/ui/error-codes/E0583.stderr similarity index 100% rename from src/test/ui/error-codes/E0583.stderr rename to tests/ui/error-codes/E0583.stderr diff --git a/src/test/ui/error-codes/E0585.rs b/tests/ui/error-codes/E0585.rs similarity index 100% rename from src/test/ui/error-codes/E0585.rs rename to tests/ui/error-codes/E0585.rs diff --git a/src/test/ui/error-codes/E0585.stderr b/tests/ui/error-codes/E0585.stderr similarity index 100% rename from src/test/ui/error-codes/E0585.stderr rename to tests/ui/error-codes/E0585.stderr diff --git a/src/test/ui/error-codes/E0586.rs b/tests/ui/error-codes/E0586.rs similarity index 100% rename from src/test/ui/error-codes/E0586.rs rename to tests/ui/error-codes/E0586.rs diff --git a/src/test/ui/error-codes/E0586.stderr b/tests/ui/error-codes/E0586.stderr similarity index 100% rename from src/test/ui/error-codes/E0586.stderr rename to tests/ui/error-codes/E0586.stderr diff --git a/src/test/ui/error-codes/E0594.rs b/tests/ui/error-codes/E0594.rs similarity index 100% rename from src/test/ui/error-codes/E0594.rs rename to tests/ui/error-codes/E0594.rs diff --git a/src/test/ui/error-codes/E0594.stderr b/tests/ui/error-codes/E0594.stderr similarity index 100% rename from src/test/ui/error-codes/E0594.stderr rename to tests/ui/error-codes/E0594.stderr diff --git a/src/test/ui/error-codes/E0596.rs b/tests/ui/error-codes/E0596.rs similarity index 100% rename from src/test/ui/error-codes/E0596.rs rename to tests/ui/error-codes/E0596.rs diff --git a/src/test/ui/error-codes/E0596.stderr b/tests/ui/error-codes/E0596.stderr similarity index 100% rename from src/test/ui/error-codes/E0596.stderr rename to tests/ui/error-codes/E0596.stderr diff --git a/src/test/ui/error-codes/E0597.rs b/tests/ui/error-codes/E0597.rs similarity index 100% rename from src/test/ui/error-codes/E0597.rs rename to tests/ui/error-codes/E0597.rs diff --git a/src/test/ui/error-codes/E0597.stderr b/tests/ui/error-codes/E0597.stderr similarity index 100% rename from src/test/ui/error-codes/E0597.stderr rename to tests/ui/error-codes/E0597.stderr diff --git a/src/test/ui/error-codes/E0599.rs b/tests/ui/error-codes/E0599.rs similarity index 100% rename from src/test/ui/error-codes/E0599.rs rename to tests/ui/error-codes/E0599.rs diff --git a/src/test/ui/error-codes/E0599.stderr b/tests/ui/error-codes/E0599.stderr similarity index 100% rename from src/test/ui/error-codes/E0599.stderr rename to tests/ui/error-codes/E0599.stderr diff --git a/src/test/ui/error-codes/E0600.rs b/tests/ui/error-codes/E0600.rs similarity index 100% rename from src/test/ui/error-codes/E0600.rs rename to tests/ui/error-codes/E0600.rs diff --git a/src/test/ui/error-codes/E0600.stderr b/tests/ui/error-codes/E0600.stderr similarity index 100% rename from src/test/ui/error-codes/E0600.stderr rename to tests/ui/error-codes/E0600.stderr diff --git a/src/test/ui/error-codes/E0601.rs b/tests/ui/error-codes/E0601.rs similarity index 100% rename from src/test/ui/error-codes/E0601.rs rename to tests/ui/error-codes/E0601.rs diff --git a/src/test/ui/error-codes/E0601.stderr b/tests/ui/error-codes/E0601.stderr similarity index 100% rename from src/test/ui/error-codes/E0601.stderr rename to tests/ui/error-codes/E0601.stderr diff --git a/src/test/ui/error-codes/E0602.rs b/tests/ui/error-codes/E0602.rs similarity index 100% rename from src/test/ui/error-codes/E0602.rs rename to tests/ui/error-codes/E0602.rs diff --git a/src/test/ui/error-codes/E0602.stderr b/tests/ui/error-codes/E0602.stderr similarity index 100% rename from src/test/ui/error-codes/E0602.stderr rename to tests/ui/error-codes/E0602.stderr diff --git a/src/test/ui/error-codes/E0603.rs b/tests/ui/error-codes/E0603.rs similarity index 100% rename from src/test/ui/error-codes/E0603.rs rename to tests/ui/error-codes/E0603.rs diff --git a/src/test/ui/error-codes/E0603.stderr b/tests/ui/error-codes/E0603.stderr similarity index 100% rename from src/test/ui/error-codes/E0603.stderr rename to tests/ui/error-codes/E0603.stderr diff --git a/src/test/ui/error-codes/E0604.rs b/tests/ui/error-codes/E0604.rs similarity index 100% rename from src/test/ui/error-codes/E0604.rs rename to tests/ui/error-codes/E0604.rs diff --git a/src/test/ui/error-codes/E0604.stderr b/tests/ui/error-codes/E0604.stderr similarity index 100% rename from src/test/ui/error-codes/E0604.stderr rename to tests/ui/error-codes/E0604.stderr diff --git a/src/test/ui/error-codes/E0605.rs b/tests/ui/error-codes/E0605.rs similarity index 100% rename from src/test/ui/error-codes/E0605.rs rename to tests/ui/error-codes/E0605.rs diff --git a/src/test/ui/error-codes/E0605.stderr b/tests/ui/error-codes/E0605.stderr similarity index 100% rename from src/test/ui/error-codes/E0605.stderr rename to tests/ui/error-codes/E0605.stderr diff --git a/src/test/ui/error-codes/E0606.rs b/tests/ui/error-codes/E0606.rs similarity index 100% rename from src/test/ui/error-codes/E0606.rs rename to tests/ui/error-codes/E0606.rs diff --git a/src/test/ui/error-codes/E0606.stderr b/tests/ui/error-codes/E0606.stderr similarity index 100% rename from src/test/ui/error-codes/E0606.stderr rename to tests/ui/error-codes/E0606.stderr diff --git a/src/test/ui/error-codes/E0607.rs b/tests/ui/error-codes/E0607.rs similarity index 100% rename from src/test/ui/error-codes/E0607.rs rename to tests/ui/error-codes/E0607.rs diff --git a/src/test/ui/error-codes/E0607.stderr b/tests/ui/error-codes/E0607.stderr similarity index 100% rename from src/test/ui/error-codes/E0607.stderr rename to tests/ui/error-codes/E0607.stderr diff --git a/src/test/ui/error-codes/E0608.rs b/tests/ui/error-codes/E0608.rs similarity index 100% rename from src/test/ui/error-codes/E0608.rs rename to tests/ui/error-codes/E0608.rs diff --git a/src/test/ui/error-codes/E0608.stderr b/tests/ui/error-codes/E0608.stderr similarity index 100% rename from src/test/ui/error-codes/E0608.stderr rename to tests/ui/error-codes/E0608.stderr diff --git a/src/test/ui/error-codes/E0609.rs b/tests/ui/error-codes/E0609.rs similarity index 100% rename from src/test/ui/error-codes/E0609.rs rename to tests/ui/error-codes/E0609.rs diff --git a/src/test/ui/error-codes/E0609.stderr b/tests/ui/error-codes/E0609.stderr similarity index 100% rename from src/test/ui/error-codes/E0609.stderr rename to tests/ui/error-codes/E0609.stderr diff --git a/src/test/ui/error-codes/E0610.rs b/tests/ui/error-codes/E0610.rs similarity index 100% rename from src/test/ui/error-codes/E0610.rs rename to tests/ui/error-codes/E0610.rs diff --git a/src/test/ui/error-codes/E0610.stderr b/tests/ui/error-codes/E0610.stderr similarity index 100% rename from src/test/ui/error-codes/E0610.stderr rename to tests/ui/error-codes/E0610.stderr diff --git a/src/test/ui/error-codes/E0614.rs b/tests/ui/error-codes/E0614.rs similarity index 100% rename from src/test/ui/error-codes/E0614.rs rename to tests/ui/error-codes/E0614.rs diff --git a/src/test/ui/error-codes/E0614.stderr b/tests/ui/error-codes/E0614.stderr similarity index 100% rename from src/test/ui/error-codes/E0614.stderr rename to tests/ui/error-codes/E0614.stderr diff --git a/src/test/ui/error-codes/E0615.rs b/tests/ui/error-codes/E0615.rs similarity index 100% rename from src/test/ui/error-codes/E0615.rs rename to tests/ui/error-codes/E0615.rs diff --git a/src/test/ui/error-codes/E0615.stderr b/tests/ui/error-codes/E0615.stderr similarity index 100% rename from src/test/ui/error-codes/E0615.stderr rename to tests/ui/error-codes/E0615.stderr diff --git a/src/test/ui/error-codes/E0616.rs b/tests/ui/error-codes/E0616.rs similarity index 100% rename from src/test/ui/error-codes/E0616.rs rename to tests/ui/error-codes/E0616.rs diff --git a/src/test/ui/error-codes/E0616.stderr b/tests/ui/error-codes/E0616.stderr similarity index 100% rename from src/test/ui/error-codes/E0616.stderr rename to tests/ui/error-codes/E0616.stderr diff --git a/src/test/ui/error-codes/E0617.rs b/tests/ui/error-codes/E0617.rs similarity index 100% rename from src/test/ui/error-codes/E0617.rs rename to tests/ui/error-codes/E0617.rs diff --git a/src/test/ui/error-codes/E0617.stderr b/tests/ui/error-codes/E0617.stderr similarity index 100% rename from src/test/ui/error-codes/E0617.stderr rename to tests/ui/error-codes/E0617.stderr diff --git a/src/test/ui/error-codes/E0618.rs b/tests/ui/error-codes/E0618.rs similarity index 100% rename from src/test/ui/error-codes/E0618.rs rename to tests/ui/error-codes/E0618.rs diff --git a/src/test/ui/error-codes/E0618.stderr b/tests/ui/error-codes/E0618.stderr similarity index 100% rename from src/test/ui/error-codes/E0618.stderr rename to tests/ui/error-codes/E0618.stderr diff --git a/src/test/ui/error-codes/E0620.rs b/tests/ui/error-codes/E0620.rs similarity index 100% rename from src/test/ui/error-codes/E0620.rs rename to tests/ui/error-codes/E0620.rs diff --git a/src/test/ui/error-codes/E0620.stderr b/tests/ui/error-codes/E0620.stderr similarity index 100% rename from src/test/ui/error-codes/E0620.stderr rename to tests/ui/error-codes/E0620.stderr diff --git a/src/test/ui/error-codes/E0621-does-not-trigger-for-closures.rs b/tests/ui/error-codes/E0621-does-not-trigger-for-closures.rs similarity index 100% rename from src/test/ui/error-codes/E0621-does-not-trigger-for-closures.rs rename to tests/ui/error-codes/E0621-does-not-trigger-for-closures.rs diff --git a/src/test/ui/error-codes/E0621-does-not-trigger-for-closures.stderr b/tests/ui/error-codes/E0621-does-not-trigger-for-closures.stderr similarity index 100% rename from src/test/ui/error-codes/E0621-does-not-trigger-for-closures.stderr rename to tests/ui/error-codes/E0621-does-not-trigger-for-closures.stderr diff --git a/src/test/ui/error-codes/E0622.rs b/tests/ui/error-codes/E0622.rs similarity index 100% rename from src/test/ui/error-codes/E0622.rs rename to tests/ui/error-codes/E0622.rs diff --git a/src/test/ui/error-codes/E0622.stderr b/tests/ui/error-codes/E0622.stderr similarity index 100% rename from src/test/ui/error-codes/E0622.stderr rename to tests/ui/error-codes/E0622.stderr diff --git a/src/test/ui/error-codes/E0624.rs b/tests/ui/error-codes/E0624.rs similarity index 100% rename from src/test/ui/error-codes/E0624.rs rename to tests/ui/error-codes/E0624.rs diff --git a/src/test/ui/error-codes/E0624.stderr b/tests/ui/error-codes/E0624.stderr similarity index 100% rename from src/test/ui/error-codes/E0624.stderr rename to tests/ui/error-codes/E0624.stderr diff --git a/src/test/ui/error-codes/E0637.rs b/tests/ui/error-codes/E0637.rs similarity index 100% rename from src/test/ui/error-codes/E0637.rs rename to tests/ui/error-codes/E0637.rs diff --git a/src/test/ui/error-codes/E0637.stderr b/tests/ui/error-codes/E0637.stderr similarity index 100% rename from src/test/ui/error-codes/E0637.stderr rename to tests/ui/error-codes/E0637.stderr diff --git a/src/test/ui/error-codes/E0642.fixed b/tests/ui/error-codes/E0642.fixed similarity index 100% rename from src/test/ui/error-codes/E0642.fixed rename to tests/ui/error-codes/E0642.fixed diff --git a/src/test/ui/error-codes/E0642.rs b/tests/ui/error-codes/E0642.rs similarity index 100% rename from src/test/ui/error-codes/E0642.rs rename to tests/ui/error-codes/E0642.rs diff --git a/src/test/ui/error-codes/E0642.stderr b/tests/ui/error-codes/E0642.stderr similarity index 100% rename from src/test/ui/error-codes/E0642.stderr rename to tests/ui/error-codes/E0642.stderr diff --git a/src/test/ui/error-codes/E0646.rs b/tests/ui/error-codes/E0646.rs similarity index 100% rename from src/test/ui/error-codes/E0646.rs rename to tests/ui/error-codes/E0646.rs diff --git a/src/test/ui/error-codes/E0646.stderr b/tests/ui/error-codes/E0646.stderr similarity index 100% rename from src/test/ui/error-codes/E0646.stderr rename to tests/ui/error-codes/E0646.stderr diff --git a/src/test/ui/error-codes/E0647.rs b/tests/ui/error-codes/E0647.rs similarity index 100% rename from src/test/ui/error-codes/E0647.rs rename to tests/ui/error-codes/E0647.rs diff --git a/src/test/ui/error-codes/E0647.stderr b/tests/ui/error-codes/E0647.stderr similarity index 100% rename from src/test/ui/error-codes/E0647.stderr rename to tests/ui/error-codes/E0647.stderr diff --git a/src/test/ui/error-codes/E0648.rs b/tests/ui/error-codes/E0648.rs similarity index 100% rename from src/test/ui/error-codes/E0648.rs rename to tests/ui/error-codes/E0648.rs diff --git a/src/test/ui/error-codes/E0648.stderr b/tests/ui/error-codes/E0648.stderr similarity index 100% rename from src/test/ui/error-codes/E0648.stderr rename to tests/ui/error-codes/E0648.stderr diff --git a/src/test/ui/error-codes/E0657.rs b/tests/ui/error-codes/E0657.rs similarity index 100% rename from src/test/ui/error-codes/E0657.rs rename to tests/ui/error-codes/E0657.rs diff --git a/src/test/ui/error-codes/E0657.stderr b/tests/ui/error-codes/E0657.stderr similarity index 100% rename from src/test/ui/error-codes/E0657.stderr rename to tests/ui/error-codes/E0657.stderr diff --git a/src/test/ui/error-codes/E0658.rs b/tests/ui/error-codes/E0658.rs similarity index 100% rename from src/test/ui/error-codes/E0658.rs rename to tests/ui/error-codes/E0658.rs diff --git a/src/test/ui/error-codes/E0658.stderr b/tests/ui/error-codes/E0658.stderr similarity index 100% rename from src/test/ui/error-codes/E0658.stderr rename to tests/ui/error-codes/E0658.stderr diff --git a/src/test/ui/error-codes/E0659.rs b/tests/ui/error-codes/E0659.rs similarity index 100% rename from src/test/ui/error-codes/E0659.rs rename to tests/ui/error-codes/E0659.rs diff --git a/src/test/ui/error-codes/E0659.stderr b/tests/ui/error-codes/E0659.stderr similarity index 100% rename from src/test/ui/error-codes/E0659.stderr rename to tests/ui/error-codes/E0659.stderr diff --git a/src/test/ui/error-codes/E0705.rs b/tests/ui/error-codes/E0705.rs similarity index 100% rename from src/test/ui/error-codes/E0705.rs rename to tests/ui/error-codes/E0705.rs diff --git a/src/test/ui/error-codes/E0705.stderr b/tests/ui/error-codes/E0705.stderr similarity index 100% rename from src/test/ui/error-codes/E0705.stderr rename to tests/ui/error-codes/E0705.stderr diff --git a/src/test/ui/error-codes/E0711.rs b/tests/ui/error-codes/E0711.rs similarity index 100% rename from src/test/ui/error-codes/E0711.rs rename to tests/ui/error-codes/E0711.rs diff --git a/src/test/ui/error-codes/E0711.stderr b/tests/ui/error-codes/E0711.stderr similarity index 100% rename from src/test/ui/error-codes/E0711.stderr rename to tests/ui/error-codes/E0711.stderr diff --git a/src/test/ui/error-codes/E0718.rs b/tests/ui/error-codes/E0718.rs similarity index 100% rename from src/test/ui/error-codes/E0718.rs rename to tests/ui/error-codes/E0718.rs diff --git a/src/test/ui/error-codes/E0718.stderr b/tests/ui/error-codes/E0718.stderr similarity index 100% rename from src/test/ui/error-codes/E0718.stderr rename to tests/ui/error-codes/E0718.stderr diff --git a/src/test/ui/error-codes/E0719.rs b/tests/ui/error-codes/E0719.rs similarity index 100% rename from src/test/ui/error-codes/E0719.rs rename to tests/ui/error-codes/E0719.rs diff --git a/src/test/ui/error-codes/E0719.stderr b/tests/ui/error-codes/E0719.stderr similarity index 100% rename from src/test/ui/error-codes/E0719.stderr rename to tests/ui/error-codes/E0719.stderr diff --git a/src/test/ui/error-codes/E0730.rs b/tests/ui/error-codes/E0730.rs similarity index 100% rename from src/test/ui/error-codes/E0730.rs rename to tests/ui/error-codes/E0730.rs diff --git a/src/test/ui/error-codes/E0730.stderr b/tests/ui/error-codes/E0730.stderr similarity index 100% rename from src/test/ui/error-codes/E0730.stderr rename to tests/ui/error-codes/E0730.stderr diff --git a/src/test/ui/error-codes/E0746.fixed b/tests/ui/error-codes/E0746.fixed similarity index 100% rename from src/test/ui/error-codes/E0746.fixed rename to tests/ui/error-codes/E0746.fixed diff --git a/src/test/ui/error-codes/E0746.rs b/tests/ui/error-codes/E0746.rs similarity index 100% rename from src/test/ui/error-codes/E0746.rs rename to tests/ui/error-codes/E0746.rs diff --git a/src/test/ui/error-codes/E0746.stderr b/tests/ui/error-codes/E0746.stderr similarity index 100% rename from src/test/ui/error-codes/E0746.stderr rename to tests/ui/error-codes/E0746.stderr diff --git a/src/test/ui/error-codes/E0767.rs b/tests/ui/error-codes/E0767.rs similarity index 100% rename from src/test/ui/error-codes/E0767.rs rename to tests/ui/error-codes/E0767.rs diff --git a/src/test/ui/error-codes/E0767.stderr b/tests/ui/error-codes/E0767.stderr similarity index 100% rename from src/test/ui/error-codes/E0767.stderr rename to tests/ui/error-codes/E0767.stderr diff --git a/src/test/ui/error-codes/E0771.rs b/tests/ui/error-codes/E0771.rs similarity index 100% rename from src/test/ui/error-codes/E0771.rs rename to tests/ui/error-codes/E0771.rs diff --git a/src/test/ui/error-codes/E0771.stderr b/tests/ui/error-codes/E0771.stderr similarity index 100% rename from src/test/ui/error-codes/E0771.stderr rename to tests/ui/error-codes/E0771.stderr diff --git a/src/test/ui/error-codes/E0777.rs b/tests/ui/error-codes/E0777.rs similarity index 100% rename from src/test/ui/error-codes/E0777.rs rename to tests/ui/error-codes/E0777.rs diff --git a/src/test/ui/error-codes/E0777.stderr b/tests/ui/error-codes/E0777.stderr similarity index 100% rename from src/test/ui/error-codes/E0777.stderr rename to tests/ui/error-codes/E0777.stderr diff --git a/src/test/ui/error-codes/E0778.rs b/tests/ui/error-codes/E0778.rs similarity index 100% rename from src/test/ui/error-codes/E0778.rs rename to tests/ui/error-codes/E0778.rs diff --git a/src/test/ui/error-codes/E0778.stderr b/tests/ui/error-codes/E0778.stderr similarity index 100% rename from src/test/ui/error-codes/E0778.stderr rename to tests/ui/error-codes/E0778.stderr diff --git a/src/test/ui/error-codes/E0779.rs b/tests/ui/error-codes/E0779.rs similarity index 100% rename from src/test/ui/error-codes/E0779.rs rename to tests/ui/error-codes/E0779.rs diff --git a/src/test/ui/error-codes/E0779.stderr b/tests/ui/error-codes/E0779.stderr similarity index 100% rename from src/test/ui/error-codes/E0779.stderr rename to tests/ui/error-codes/E0779.stderr diff --git a/src/test/ui/error-codes/E0790.rs b/tests/ui/error-codes/E0790.rs similarity index 100% rename from src/test/ui/error-codes/E0790.rs rename to tests/ui/error-codes/E0790.rs diff --git a/src/test/ui/error-codes/E0790.stderr b/tests/ui/error-codes/E0790.stderr similarity index 100% rename from src/test/ui/error-codes/E0790.stderr rename to tests/ui/error-codes/E0790.stderr diff --git a/src/test/ui/error-codes/auxiliary/crateresolve1-1.rs b/tests/ui/error-codes/auxiliary/crateresolve1-1.rs similarity index 100% rename from src/test/ui/error-codes/auxiliary/crateresolve1-1.rs rename to tests/ui/error-codes/auxiliary/crateresolve1-1.rs diff --git a/src/test/ui/error-codes/auxiliary/crateresolve1-2.rs b/tests/ui/error-codes/auxiliary/crateresolve1-2.rs similarity index 100% rename from src/test/ui/error-codes/auxiliary/crateresolve1-2.rs rename to tests/ui/error-codes/auxiliary/crateresolve1-2.rs diff --git a/src/test/ui/error-codes/auxiliary/crateresolve1-3.rs b/tests/ui/error-codes/auxiliary/crateresolve1-3.rs similarity index 100% rename from src/test/ui/error-codes/auxiliary/crateresolve1-3.rs rename to tests/ui/error-codes/auxiliary/crateresolve1-3.rs diff --git a/src/test/ui/error-codes/auxiliary/found-staticlib.rs b/tests/ui/error-codes/auxiliary/found-staticlib.rs similarity index 100% rename from src/test/ui/error-codes/auxiliary/found-staticlib.rs rename to tests/ui/error-codes/auxiliary/found-staticlib.rs diff --git a/src/test/ui/error-codes/e0119/auxiliary/complex_impl_support.rs b/tests/ui/error-codes/e0119/auxiliary/complex_impl_support.rs similarity index 100% rename from src/test/ui/error-codes/e0119/auxiliary/complex_impl_support.rs rename to tests/ui/error-codes/e0119/auxiliary/complex_impl_support.rs diff --git a/src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs b/tests/ui/error-codes/e0119/auxiliary/issue-23563-a.rs similarity index 100% rename from src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs rename to tests/ui/error-codes/e0119/auxiliary/issue-23563-a.rs diff --git a/src/test/ui/error-codes/e0119/complex-impl.rs b/tests/ui/error-codes/e0119/complex-impl.rs similarity index 100% rename from src/test/ui/error-codes/e0119/complex-impl.rs rename to tests/ui/error-codes/e0119/complex-impl.rs diff --git a/src/test/ui/error-codes/e0119/complex-impl.stderr b/tests/ui/error-codes/e0119/complex-impl.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/complex-impl.stderr rename to tests/ui/error-codes/e0119/complex-impl.stderr diff --git a/src/test/ui/error-codes/e0119/conflict-with-std.rs b/tests/ui/error-codes/e0119/conflict-with-std.rs similarity index 100% rename from src/test/ui/error-codes/e0119/conflict-with-std.rs rename to tests/ui/error-codes/e0119/conflict-with-std.rs diff --git a/src/test/ui/error-codes/e0119/conflict-with-std.stderr b/tests/ui/error-codes/e0119/conflict-with-std.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/conflict-with-std.stderr rename to tests/ui/error-codes/e0119/conflict-with-std.stderr diff --git a/src/test/ui/error-codes/e0119/issue-23563.rs b/tests/ui/error-codes/e0119/issue-23563.rs similarity index 100% rename from src/test/ui/error-codes/e0119/issue-23563.rs rename to tests/ui/error-codes/e0119/issue-23563.rs diff --git a/src/test/ui/error-codes/e0119/issue-23563.stderr b/tests/ui/error-codes/e0119/issue-23563.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/issue-23563.stderr rename to tests/ui/error-codes/e0119/issue-23563.stderr diff --git a/src/test/ui/error-codes/e0119/issue-27403.rs b/tests/ui/error-codes/e0119/issue-27403.rs similarity index 100% rename from src/test/ui/error-codes/e0119/issue-27403.rs rename to tests/ui/error-codes/e0119/issue-27403.rs diff --git a/src/test/ui/error-codes/e0119/issue-27403.stderr b/tests/ui/error-codes/e0119/issue-27403.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/issue-27403.stderr rename to tests/ui/error-codes/e0119/issue-27403.stderr diff --git a/src/test/ui/error-codes/e0119/issue-28981.rs b/tests/ui/error-codes/e0119/issue-28981.rs similarity index 100% rename from src/test/ui/error-codes/e0119/issue-28981.rs rename to tests/ui/error-codes/e0119/issue-28981.rs diff --git a/src/test/ui/error-codes/e0119/issue-28981.stderr b/tests/ui/error-codes/e0119/issue-28981.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/issue-28981.stderr rename to tests/ui/error-codes/e0119/issue-28981.stderr diff --git a/src/test/ui/error-codes/e0119/so-37347311.rs b/tests/ui/error-codes/e0119/so-37347311.rs similarity index 100% rename from src/test/ui/error-codes/e0119/so-37347311.rs rename to tests/ui/error-codes/e0119/so-37347311.rs diff --git a/src/test/ui/error-codes/e0119/so-37347311.stderr b/tests/ui/error-codes/e0119/so-37347311.stderr similarity index 100% rename from src/test/ui/error-codes/e0119/so-37347311.stderr rename to tests/ui/error-codes/e0119/so-37347311.stderr diff --git a/src/test/ui/error-codes/ex-E0611.rs b/tests/ui/error-codes/ex-E0611.rs similarity index 100% rename from src/test/ui/error-codes/ex-E0611.rs rename to tests/ui/error-codes/ex-E0611.rs diff --git a/src/test/ui/error-codes/ex-E0611.stderr b/tests/ui/error-codes/ex-E0611.stderr similarity index 100% rename from src/test/ui/error-codes/ex-E0611.stderr rename to tests/ui/error-codes/ex-E0611.stderr diff --git a/src/test/ui/error-codes/ex-E0612.rs b/tests/ui/error-codes/ex-E0612.rs similarity index 100% rename from src/test/ui/error-codes/ex-E0612.rs rename to tests/ui/error-codes/ex-E0612.rs diff --git a/src/test/ui/error-codes/ex-E0612.stderr b/tests/ui/error-codes/ex-E0612.stderr similarity index 100% rename from src/test/ui/error-codes/ex-E0612.stderr rename to tests/ui/error-codes/ex-E0612.stderr diff --git a/src/test/ui/error-festival.rs b/tests/ui/error-festival.rs similarity index 100% rename from src/test/ui/error-festival.rs rename to tests/ui/error-festival.rs diff --git a/src/test/ui/error-festival.stderr b/tests/ui/error-festival.stderr similarity index 100% rename from src/test/ui/error-festival.stderr rename to tests/ui/error-festival.stderr diff --git a/src/test/ui/error-should-say-copy-not-pod.rs b/tests/ui/error-should-say-copy-not-pod.rs similarity index 100% rename from src/test/ui/error-should-say-copy-not-pod.rs rename to tests/ui/error-should-say-copy-not-pod.rs diff --git a/src/test/ui/error-should-say-copy-not-pod.stderr b/tests/ui/error-should-say-copy-not-pod.stderr similarity index 100% rename from src/test/ui/error-should-say-copy-not-pod.stderr rename to tests/ui/error-should-say-copy-not-pod.stderr diff --git a/src/test/ui/errors/issue-104621-extern-bad-file.rs b/tests/ui/errors/issue-104621-extern-bad-file.rs similarity index 100% rename from src/test/ui/errors/issue-104621-extern-bad-file.rs rename to tests/ui/errors/issue-104621-extern-bad-file.rs diff --git a/src/test/ui/errors/issue-104621-extern-bad-file.stderr b/tests/ui/errors/issue-104621-extern-bad-file.stderr similarity index 100% rename from src/test/ui/errors/issue-104621-extern-bad-file.stderr rename to tests/ui/errors/issue-104621-extern-bad-file.stderr diff --git a/src/test/ui/errors/issue-104621-extern-not-file.rs b/tests/ui/errors/issue-104621-extern-not-file.rs similarity index 100% rename from src/test/ui/errors/issue-104621-extern-not-file.rs rename to tests/ui/errors/issue-104621-extern-not-file.rs diff --git a/src/test/ui/errors/issue-104621-extern-not-file.stderr b/tests/ui/errors/issue-104621-extern-not-file.stderr similarity index 100% rename from src/test/ui/errors/issue-104621-extern-not-file.stderr rename to tests/ui/errors/issue-104621-extern-not-file.stderr diff --git a/src/test/ui/errors/issue-89280-emitter-overflow-splice-lines.rs b/tests/ui/errors/issue-89280-emitter-overflow-splice-lines.rs similarity index 100% rename from src/test/ui/errors/issue-89280-emitter-overflow-splice-lines.rs rename to tests/ui/errors/issue-89280-emitter-overflow-splice-lines.rs diff --git a/src/test/ui/errors/issue-89280-emitter-overflow-splice-lines.stderr b/tests/ui/errors/issue-89280-emitter-overflow-splice-lines.stderr similarity index 100% rename from src/test/ui/errors/issue-89280-emitter-overflow-splice-lines.stderr rename to tests/ui/errors/issue-89280-emitter-overflow-splice-lines.stderr diff --git a/src/test/ui/errors/issue-99572-impl-trait-on-pointer.rs b/tests/ui/errors/issue-99572-impl-trait-on-pointer.rs similarity index 100% rename from src/test/ui/errors/issue-99572-impl-trait-on-pointer.rs rename to tests/ui/errors/issue-99572-impl-trait-on-pointer.rs diff --git a/src/test/ui/errors/issue-99572-impl-trait-on-pointer.stderr b/tests/ui/errors/issue-99572-impl-trait-on-pointer.stderr similarity index 100% rename from src/test/ui/errors/issue-99572-impl-trait-on-pointer.stderr rename to tests/ui/errors/issue-99572-impl-trait-on-pointer.stderr diff --git a/src/test/ui/exclusive-drop-and-copy.rs b/tests/ui/exclusive-drop-and-copy.rs similarity index 100% rename from src/test/ui/exclusive-drop-and-copy.rs rename to tests/ui/exclusive-drop-and-copy.rs diff --git a/src/test/ui/exclusive-drop-and-copy.stderr b/tests/ui/exclusive-drop-and-copy.stderr similarity index 100% rename from src/test/ui/exclusive-drop-and-copy.stderr rename to tests/ui/exclusive-drop-and-copy.stderr diff --git a/src/test/ui/exec-env.rs b/tests/ui/exec-env.rs similarity index 100% rename from src/test/ui/exec-env.rs rename to tests/ui/exec-env.rs diff --git a/src/test/ui/explain.rs b/tests/ui/explain.rs similarity index 100% rename from src/test/ui/explain.rs rename to tests/ui/explain.rs diff --git a/src/test/ui/explain.stdout b/tests/ui/explain.stdout similarity index 100% rename from src/test/ui/explain.stdout rename to tests/ui/explain.stdout diff --git a/src/test/ui/explicit-i-suffix.rs b/tests/ui/explicit-i-suffix.rs similarity index 100% rename from src/test/ui/explicit-i-suffix.rs rename to tests/ui/explicit-i-suffix.rs diff --git a/src/test/ui/explicit/explicit-call-to-dtor.fixed b/tests/ui/explicit/explicit-call-to-dtor.fixed similarity index 100% rename from src/test/ui/explicit/explicit-call-to-dtor.fixed rename to tests/ui/explicit/explicit-call-to-dtor.fixed diff --git a/src/test/ui/explicit/explicit-call-to-dtor.rs b/tests/ui/explicit/explicit-call-to-dtor.rs similarity index 100% rename from src/test/ui/explicit/explicit-call-to-dtor.rs rename to tests/ui/explicit/explicit-call-to-dtor.rs diff --git a/src/test/ui/explicit/explicit-call-to-dtor.stderr b/tests/ui/explicit/explicit-call-to-dtor.stderr similarity index 100% rename from src/test/ui/explicit/explicit-call-to-dtor.stderr rename to tests/ui/explicit/explicit-call-to-dtor.stderr diff --git a/src/test/ui/explicit/explicit-call-to-supertrait-dtor.fixed b/tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed similarity index 100% rename from src/test/ui/explicit/explicit-call-to-supertrait-dtor.fixed rename to tests/ui/explicit/explicit-call-to-supertrait-dtor.fixed diff --git a/src/test/ui/explicit/explicit-call-to-supertrait-dtor.rs b/tests/ui/explicit/explicit-call-to-supertrait-dtor.rs similarity index 100% rename from src/test/ui/explicit/explicit-call-to-supertrait-dtor.rs rename to tests/ui/explicit/explicit-call-to-supertrait-dtor.rs diff --git a/src/test/ui/explicit/explicit-call-to-supertrait-dtor.stderr b/tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr similarity index 100% rename from src/test/ui/explicit/explicit-call-to-supertrait-dtor.stderr rename to tests/ui/explicit/explicit-call-to-supertrait-dtor.stderr diff --git a/src/test/ui/explicit/explicit-self-lifetime-mismatch.rs b/tests/ui/explicit/explicit-self-lifetime-mismatch.rs similarity index 100% rename from src/test/ui/explicit/explicit-self-lifetime-mismatch.rs rename to tests/ui/explicit/explicit-self-lifetime-mismatch.rs diff --git a/src/test/ui/explicit/explicit-self-lifetime-mismatch.stderr b/tests/ui/explicit/explicit-self-lifetime-mismatch.stderr similarity index 100% rename from src/test/ui/explicit/explicit-self-lifetime-mismatch.stderr rename to tests/ui/explicit/explicit-self-lifetime-mismatch.stderr diff --git a/src/test/ui/explore-issue-38412.rs b/tests/ui/explore-issue-38412.rs similarity index 100% rename from src/test/ui/explore-issue-38412.rs rename to tests/ui/explore-issue-38412.rs diff --git a/src/test/ui/explore-issue-38412.stderr b/tests/ui/explore-issue-38412.stderr similarity index 100% rename from src/test/ui/explore-issue-38412.stderr rename to tests/ui/explore-issue-38412.stderr diff --git a/src/test/ui/expr-block-fn.rs b/tests/ui/expr-block-fn.rs similarity index 100% rename from src/test/ui/expr-block-fn.rs rename to tests/ui/expr-block-fn.rs diff --git a/src/test/ui/expr-block-generic-unique1.rs b/tests/ui/expr-block-generic-unique1.rs similarity index 100% rename from src/test/ui/expr-block-generic-unique1.rs rename to tests/ui/expr-block-generic-unique1.rs diff --git a/src/test/ui/expr-block-generic-unique2.rs b/tests/ui/expr-block-generic-unique2.rs similarity index 100% rename from src/test/ui/expr-block-generic-unique2.rs rename to tests/ui/expr-block-generic-unique2.rs diff --git a/src/test/ui/expr-block-generic.rs b/tests/ui/expr-block-generic.rs similarity index 100% rename from src/test/ui/expr-block-generic.rs rename to tests/ui/expr-block-generic.rs diff --git a/src/test/ui/expr-block.rs b/tests/ui/expr-block.rs similarity index 100% rename from src/test/ui/expr-block.rs rename to tests/ui/expr-block.rs diff --git a/src/test/ui/expr-copy.rs b/tests/ui/expr-copy.rs similarity index 100% rename from src/test/ui/expr-copy.rs rename to tests/ui/expr-copy.rs diff --git a/src/test/ui/expr-if-generic.rs b/tests/ui/expr-if-generic.rs similarity index 100% rename from src/test/ui/expr-if-generic.rs rename to tests/ui/expr-if-generic.rs diff --git a/src/test/ui/expr-if-panic-all.rs b/tests/ui/expr-if-panic-all.rs similarity index 100% rename from src/test/ui/expr-if-panic-all.rs rename to tests/ui/expr-if-panic-all.rs diff --git a/src/test/ui/expr-if-unique.rs b/tests/ui/expr-if-unique.rs similarity index 100% rename from src/test/ui/expr-if-unique.rs rename to tests/ui/expr-if-unique.rs diff --git a/src/test/ui/expr-scope.rs b/tests/ui/expr-scope.rs similarity index 100% rename from src/test/ui/expr-scope.rs rename to tests/ui/expr-scope.rs diff --git a/src/test/ui/expr/compound-assignment/eval-order.rs b/tests/ui/expr/compound-assignment/eval-order.rs similarity index 100% rename from src/test/ui/expr/compound-assignment/eval-order.rs rename to tests/ui/expr/compound-assignment/eval-order.rs diff --git a/src/test/ui/expr/if-bot.rs b/tests/ui/expr/if-bot.rs similarity index 100% rename from src/test/ui/expr/if-bot.rs rename to tests/ui/expr/if-bot.rs diff --git a/src/test/ui/expr/if/attrs/bad-cfg.rs b/tests/ui/expr/if/attrs/bad-cfg.rs similarity index 100% rename from src/test/ui/expr/if/attrs/bad-cfg.rs rename to tests/ui/expr/if/attrs/bad-cfg.rs diff --git a/src/test/ui/expr/if/attrs/bad-cfg.stderr b/tests/ui/expr/if/attrs/bad-cfg.stderr similarity index 100% rename from src/test/ui/expr/if/attrs/bad-cfg.stderr rename to tests/ui/expr/if/attrs/bad-cfg.stderr diff --git a/src/test/ui/expr/if/attrs/builtin-if-attr.rs b/tests/ui/expr/if/attrs/builtin-if-attr.rs similarity index 100% rename from src/test/ui/expr/if/attrs/builtin-if-attr.rs rename to tests/ui/expr/if/attrs/builtin-if-attr.rs diff --git a/src/test/ui/expr/if/attrs/cfg-false-if-attr.rs b/tests/ui/expr/if/attrs/cfg-false-if-attr.rs similarity index 100% rename from src/test/ui/expr/if/attrs/cfg-false-if-attr.rs rename to tests/ui/expr/if/attrs/cfg-false-if-attr.rs diff --git a/src/test/ui/expr/if/attrs/else-attrs.rs b/tests/ui/expr/if/attrs/else-attrs.rs similarity index 100% rename from src/test/ui/expr/if/attrs/else-attrs.rs rename to tests/ui/expr/if/attrs/else-attrs.rs diff --git a/src/test/ui/expr/if/attrs/else-attrs.stderr b/tests/ui/expr/if/attrs/else-attrs.stderr similarity index 100% rename from src/test/ui/expr/if/attrs/else-attrs.stderr rename to tests/ui/expr/if/attrs/else-attrs.stderr diff --git a/src/test/ui/expr/if/attrs/gate-whole-expr.rs b/tests/ui/expr/if/attrs/gate-whole-expr.rs similarity index 100% rename from src/test/ui/expr/if/attrs/gate-whole-expr.rs rename to tests/ui/expr/if/attrs/gate-whole-expr.rs diff --git a/src/test/ui/expr/if/attrs/let-chains-attr.rs b/tests/ui/expr/if/attrs/let-chains-attr.rs similarity index 100% rename from src/test/ui/expr/if/attrs/let-chains-attr.rs rename to tests/ui/expr/if/attrs/let-chains-attr.rs diff --git a/src/test/ui/expr/if/attrs/stmt-expr-gated.rs b/tests/ui/expr/if/attrs/stmt-expr-gated.rs similarity index 100% rename from src/test/ui/expr/if/attrs/stmt-expr-gated.rs rename to tests/ui/expr/if/attrs/stmt-expr-gated.rs diff --git a/src/test/ui/expr/if/attrs/stmt-expr-gated.stderr b/tests/ui/expr/if/attrs/stmt-expr-gated.stderr similarity index 100% rename from src/test/ui/expr/if/attrs/stmt-expr-gated.stderr rename to tests/ui/expr/if/attrs/stmt-expr-gated.stderr diff --git a/src/test/ui/expr/if/bad-if-let-suggestion.rs b/tests/ui/expr/if/bad-if-let-suggestion.rs similarity index 100% rename from src/test/ui/expr/if/bad-if-let-suggestion.rs rename to tests/ui/expr/if/bad-if-let-suggestion.rs diff --git a/src/test/ui/expr/if/bad-if-let-suggestion.stderr b/tests/ui/expr/if/bad-if-let-suggestion.stderr similarity index 100% rename from src/test/ui/expr/if/bad-if-let-suggestion.stderr rename to tests/ui/expr/if/bad-if-let-suggestion.stderr diff --git a/src/test/ui/expr/if/expr-if-panic-fn.rs b/tests/ui/expr/if/expr-if-panic-fn.rs similarity index 100% rename from src/test/ui/expr/if/expr-if-panic-fn.rs rename to tests/ui/expr/if/expr-if-panic-fn.rs diff --git a/src/test/ui/expr/if/expr-if-panic-pass.rs b/tests/ui/expr/if/expr-if-panic-pass.rs similarity index 100% rename from src/test/ui/expr/if/expr-if-panic-pass.rs rename to tests/ui/expr/if/expr-if-panic-pass.rs diff --git a/src/test/ui/expr/if/expr-if-panic.rs b/tests/ui/expr/if/expr-if-panic.rs similarity index 100% rename from src/test/ui/expr/if/expr-if-panic.rs rename to tests/ui/expr/if/expr-if-panic.rs diff --git a/src/test/ui/expr/if/expr-if.rs b/tests/ui/expr/if/expr-if.rs similarity index 100% rename from src/test/ui/expr/if/expr-if.rs rename to tests/ui/expr/if/expr-if.rs diff --git a/src/test/ui/expr/if/if-branch-types.rs b/tests/ui/expr/if/if-branch-types.rs similarity index 100% rename from src/test/ui/expr/if/if-branch-types.rs rename to tests/ui/expr/if/if-branch-types.rs diff --git a/src/test/ui/expr/if/if-branch-types.stderr b/tests/ui/expr/if/if-branch-types.stderr similarity index 100% rename from src/test/ui/expr/if/if-branch-types.stderr rename to tests/ui/expr/if/if-branch-types.stderr diff --git a/src/test/ui/expr/if/if-check-panic.rs b/tests/ui/expr/if/if-check-panic.rs similarity index 100% rename from src/test/ui/expr/if/if-check-panic.rs rename to tests/ui/expr/if/if-check-panic.rs diff --git a/src/test/ui/expr/if/if-check.rs b/tests/ui/expr/if/if-check.rs similarity index 100% rename from src/test/ui/expr/if/if-check.rs rename to tests/ui/expr/if/if-check.rs diff --git a/src/test/ui/expr/if/if-cond-bot.rs b/tests/ui/expr/if/if-cond-bot.rs similarity index 100% rename from src/test/ui/expr/if/if-cond-bot.rs rename to tests/ui/expr/if/if-cond-bot.rs diff --git a/src/test/ui/expr/if/if-else-type-mismatch.rs b/tests/ui/expr/if/if-else-type-mismatch.rs similarity index 100% rename from src/test/ui/expr/if/if-else-type-mismatch.rs rename to tests/ui/expr/if/if-else-type-mismatch.rs diff --git a/src/test/ui/expr/if/if-else-type-mismatch.stderr b/tests/ui/expr/if/if-else-type-mismatch.stderr similarity index 100% rename from src/test/ui/expr/if/if-else-type-mismatch.stderr rename to tests/ui/expr/if/if-else-type-mismatch.stderr diff --git a/src/test/ui/expr/if/if-let-arm-types.rs b/tests/ui/expr/if/if-let-arm-types.rs similarity index 100% rename from src/test/ui/expr/if/if-let-arm-types.rs rename to tests/ui/expr/if/if-let-arm-types.rs diff --git a/src/test/ui/expr/if/if-let-arm-types.stderr b/tests/ui/expr/if/if-let-arm-types.stderr similarity index 100% rename from src/test/ui/expr/if/if-let-arm-types.stderr rename to tests/ui/expr/if/if-let-arm-types.stderr diff --git a/src/test/ui/expr/if/if-let.rs b/tests/ui/expr/if/if-let.rs similarity index 100% rename from src/test/ui/expr/if/if-let.rs rename to tests/ui/expr/if/if-let.rs diff --git a/src/test/ui/expr/if/if-let.stderr b/tests/ui/expr/if/if-let.stderr similarity index 100% rename from src/test/ui/expr/if/if-let.stderr rename to tests/ui/expr/if/if-let.stderr diff --git a/src/test/ui/expr/if/if-loop.rs b/tests/ui/expr/if/if-loop.rs similarity index 100% rename from src/test/ui/expr/if/if-loop.rs rename to tests/ui/expr/if/if-loop.rs diff --git a/src/test/ui/expr/if/if-no-match-bindings.rs b/tests/ui/expr/if/if-no-match-bindings.rs similarity index 100% rename from src/test/ui/expr/if/if-no-match-bindings.rs rename to tests/ui/expr/if/if-no-match-bindings.rs diff --git a/src/test/ui/expr/if/if-no-match-bindings.stderr b/tests/ui/expr/if/if-no-match-bindings.stderr similarity index 100% rename from src/test/ui/expr/if/if-no-match-bindings.stderr rename to tests/ui/expr/if/if-no-match-bindings.stderr diff --git a/src/test/ui/expr/if/if-ret.rs b/tests/ui/expr/if/if-ret.rs similarity index 100% rename from src/test/ui/expr/if/if-ret.rs rename to tests/ui/expr/if/if-ret.rs diff --git a/src/test/ui/expr/if/if-ret.stderr b/tests/ui/expr/if/if-ret.stderr similarity index 100% rename from src/test/ui/expr/if/if-ret.stderr rename to tests/ui/expr/if/if-ret.stderr diff --git a/src/test/ui/expr/if/if-typeck.rs b/tests/ui/expr/if/if-typeck.rs similarity index 100% rename from src/test/ui/expr/if/if-typeck.rs rename to tests/ui/expr/if/if-typeck.rs diff --git a/src/test/ui/expr/if/if-typeck.stderr b/tests/ui/expr/if/if-typeck.stderr similarity index 100% rename from src/test/ui/expr/if/if-typeck.stderr rename to tests/ui/expr/if/if-typeck.stderr diff --git a/src/test/ui/expr/if/if-without-block.rs b/tests/ui/expr/if/if-without-block.rs similarity index 100% rename from src/test/ui/expr/if/if-without-block.rs rename to tests/ui/expr/if/if-without-block.rs diff --git a/src/test/ui/expr/if/if-without-block.stderr b/tests/ui/expr/if/if-without-block.stderr similarity index 100% rename from src/test/ui/expr/if/if-without-block.stderr rename to tests/ui/expr/if/if-without-block.stderr diff --git a/src/test/ui/expr/if/if-without-else-as-fn-expr.rs b/tests/ui/expr/if/if-without-else-as-fn-expr.rs similarity index 100% rename from src/test/ui/expr/if/if-without-else-as-fn-expr.rs rename to tests/ui/expr/if/if-without-else-as-fn-expr.rs diff --git a/src/test/ui/expr/if/if-without-else-as-fn-expr.stderr b/tests/ui/expr/if/if-without-else-as-fn-expr.stderr similarity index 100% rename from src/test/ui/expr/if/if-without-else-as-fn-expr.stderr rename to tests/ui/expr/if/if-without-else-as-fn-expr.stderr diff --git a/src/test/ui/expr/if/if-without-else-result.rs b/tests/ui/expr/if/if-without-else-result.rs similarity index 100% rename from src/test/ui/expr/if/if-without-else-result.rs rename to tests/ui/expr/if/if-without-else-result.rs diff --git a/src/test/ui/expr/if/if-without-else-result.stderr b/tests/ui/expr/if/if-without-else-result.stderr similarity index 100% rename from src/test/ui/expr/if/if-without-else-result.stderr rename to tests/ui/expr/if/if-without-else-result.stderr diff --git a/src/test/ui/expr/if/issue-4201.rs b/tests/ui/expr/if/issue-4201.rs similarity index 100% rename from src/test/ui/expr/if/issue-4201.rs rename to tests/ui/expr/if/issue-4201.rs diff --git a/src/test/ui/expr/if/issue-4201.stderr b/tests/ui/expr/if/issue-4201.stderr similarity index 100% rename from src/test/ui/expr/if/issue-4201.stderr rename to tests/ui/expr/if/issue-4201.stderr diff --git a/src/test/ui/expr/malformed_closure/missing_braces_around_block.fixed b/tests/ui/expr/malformed_closure/missing_braces_around_block.fixed similarity index 100% rename from src/test/ui/expr/malformed_closure/missing_braces_around_block.fixed rename to tests/ui/expr/malformed_closure/missing_braces_around_block.fixed diff --git a/src/test/ui/expr/malformed_closure/missing_braces_around_block.rs b/tests/ui/expr/malformed_closure/missing_braces_around_block.rs similarity index 100% rename from src/test/ui/expr/malformed_closure/missing_braces_around_block.rs rename to tests/ui/expr/malformed_closure/missing_braces_around_block.rs diff --git a/src/test/ui/expr/malformed_closure/missing_braces_around_block.stderr b/tests/ui/expr/malformed_closure/missing_braces_around_block.stderr similarity index 100% rename from src/test/ui/expr/malformed_closure/missing_braces_around_block.stderr rename to tests/ui/expr/malformed_closure/missing_braces_around_block.stderr diff --git a/src/test/ui/expr/malformed_closure/ruby_style_closure.rs b/tests/ui/expr/malformed_closure/ruby_style_closure.rs similarity index 100% rename from src/test/ui/expr/malformed_closure/ruby_style_closure.rs rename to tests/ui/expr/malformed_closure/ruby_style_closure.rs diff --git a/src/test/ui/expr/malformed_closure/ruby_style_closure.stderr b/tests/ui/expr/malformed_closure/ruby_style_closure.stderr similarity index 100% rename from src/test/ui/expr/malformed_closure/ruby_style_closure.stderr rename to tests/ui/expr/malformed_closure/ruby_style_closure.stderr diff --git a/src/test/ui/ext-expand-inner-exprs.rs b/tests/ui/ext-expand-inner-exprs.rs similarity index 100% rename from src/test/ui/ext-expand-inner-exprs.rs rename to tests/ui/ext-expand-inner-exprs.rs diff --git a/src/test/ui/ext-nonexistent.rs b/tests/ui/ext-nonexistent.rs similarity index 100% rename from src/test/ui/ext-nonexistent.rs rename to tests/ui/ext-nonexistent.rs diff --git a/src/test/ui/ext-nonexistent.stderr b/tests/ui/ext-nonexistent.stderr similarity index 100% rename from src/test/ui/ext-nonexistent.stderr rename to tests/ui/ext-nonexistent.stderr diff --git a/src/test/ui/extenv/extenv-arg-2-not-string-literal.rs b/tests/ui/extenv/extenv-arg-2-not-string-literal.rs similarity index 100% rename from src/test/ui/extenv/extenv-arg-2-not-string-literal.rs rename to tests/ui/extenv/extenv-arg-2-not-string-literal.rs diff --git a/src/test/ui/extenv/extenv-arg-2-not-string-literal.stderr b/tests/ui/extenv/extenv-arg-2-not-string-literal.stderr similarity index 100% rename from src/test/ui/extenv/extenv-arg-2-not-string-literal.stderr rename to tests/ui/extenv/extenv-arg-2-not-string-literal.stderr diff --git a/src/test/ui/extenv/extenv-no-args.rs b/tests/ui/extenv/extenv-no-args.rs similarity index 100% rename from src/test/ui/extenv/extenv-no-args.rs rename to tests/ui/extenv/extenv-no-args.rs diff --git a/src/test/ui/extenv/extenv-no-args.stderr b/tests/ui/extenv/extenv-no-args.stderr similarity index 100% rename from src/test/ui/extenv/extenv-no-args.stderr rename to tests/ui/extenv/extenv-no-args.stderr diff --git a/src/test/ui/extenv/extenv-not-defined-custom.rs b/tests/ui/extenv/extenv-not-defined-custom.rs similarity index 100% rename from src/test/ui/extenv/extenv-not-defined-custom.rs rename to tests/ui/extenv/extenv-not-defined-custom.rs diff --git a/src/test/ui/extenv/extenv-not-defined-custom.stderr b/tests/ui/extenv/extenv-not-defined-custom.stderr similarity index 100% rename from src/test/ui/extenv/extenv-not-defined-custom.stderr rename to tests/ui/extenv/extenv-not-defined-custom.stderr diff --git a/src/test/ui/extenv/extenv-not-defined-default.rs b/tests/ui/extenv/extenv-not-defined-default.rs similarity index 100% rename from src/test/ui/extenv/extenv-not-defined-default.rs rename to tests/ui/extenv/extenv-not-defined-default.rs diff --git a/src/test/ui/extenv/extenv-not-defined-default.stderr b/tests/ui/extenv/extenv-not-defined-default.stderr similarity index 100% rename from src/test/ui/extenv/extenv-not-defined-default.stderr rename to tests/ui/extenv/extenv-not-defined-default.stderr diff --git a/src/test/ui/extenv/extenv-not-string-literal.rs b/tests/ui/extenv/extenv-not-string-literal.rs similarity index 100% rename from src/test/ui/extenv/extenv-not-string-literal.rs rename to tests/ui/extenv/extenv-not-string-literal.rs diff --git a/src/test/ui/extenv/extenv-not-string-literal.stderr b/tests/ui/extenv/extenv-not-string-literal.stderr similarity index 100% rename from src/test/ui/extenv/extenv-not-string-literal.stderr rename to tests/ui/extenv/extenv-not-string-literal.stderr diff --git a/src/test/ui/extenv/extenv-too-many-args.rs b/tests/ui/extenv/extenv-too-many-args.rs similarity index 100% rename from src/test/ui/extenv/extenv-too-many-args.rs rename to tests/ui/extenv/extenv-too-many-args.rs diff --git a/src/test/ui/extenv/extenv-too-many-args.stderr b/tests/ui/extenv/extenv-too-many-args.stderr similarity index 100% rename from src/test/ui/extenv/extenv-too-many-args.stderr rename to tests/ui/extenv/extenv-too-many-args.stderr diff --git a/src/test/ui/extenv/issue-55897.rs b/tests/ui/extenv/issue-55897.rs similarity index 100% rename from src/test/ui/extenv/issue-55897.rs rename to tests/ui/extenv/issue-55897.rs diff --git a/src/test/ui/extenv/issue-55897.stderr b/tests/ui/extenv/issue-55897.stderr similarity index 100% rename from src/test/ui/extenv/issue-55897.stderr rename to tests/ui/extenv/issue-55897.stderr diff --git a/src/test/ui/extern-flag/auxiliary/somedep.rs b/tests/ui/extern-flag/auxiliary/somedep.rs similarity index 100% rename from src/test/ui/extern-flag/auxiliary/somedep.rs rename to tests/ui/extern-flag/auxiliary/somedep.rs diff --git a/src/test/ui/extern-flag/empty-extern-arg.rs b/tests/ui/extern-flag/empty-extern-arg.rs similarity index 100% rename from src/test/ui/extern-flag/empty-extern-arg.rs rename to tests/ui/extern-flag/empty-extern-arg.rs diff --git a/src/test/ui/extern-flag/empty-extern-arg.stderr b/tests/ui/extern-flag/empty-extern-arg.stderr similarity index 100% rename from src/test/ui/extern-flag/empty-extern-arg.stderr rename to tests/ui/extern-flag/empty-extern-arg.stderr diff --git a/src/test/ui/extern-flag/multiple-opts.rs b/tests/ui/extern-flag/multiple-opts.rs similarity index 100% rename from src/test/ui/extern-flag/multiple-opts.rs rename to tests/ui/extern-flag/multiple-opts.rs diff --git a/src/test/ui/extern-flag/multiple-opts.stderr b/tests/ui/extern-flag/multiple-opts.stderr similarity index 100% rename from src/test/ui/extern-flag/multiple-opts.stderr rename to tests/ui/extern-flag/multiple-opts.stderr diff --git a/src/test/ui/extern-flag/no-nounused.rs b/tests/ui/extern-flag/no-nounused.rs similarity index 100% rename from src/test/ui/extern-flag/no-nounused.rs rename to tests/ui/extern-flag/no-nounused.rs diff --git a/src/test/ui/extern-flag/no-nounused.stderr b/tests/ui/extern-flag/no-nounused.stderr similarity index 100% rename from src/test/ui/extern-flag/no-nounused.stderr rename to tests/ui/extern-flag/no-nounused.stderr diff --git a/src/test/ui/extern-flag/noprelude-and-prelude.rs b/tests/ui/extern-flag/noprelude-and-prelude.rs similarity index 100% rename from src/test/ui/extern-flag/noprelude-and-prelude.rs rename to tests/ui/extern-flag/noprelude-and-prelude.rs diff --git a/src/test/ui/extern-flag/noprelude-resolves.rs b/tests/ui/extern-flag/noprelude-resolves.rs similarity index 100% rename from src/test/ui/extern-flag/noprelude-resolves.rs rename to tests/ui/extern-flag/noprelude-resolves.rs diff --git a/src/test/ui/extern-flag/noprelude.rs b/tests/ui/extern-flag/noprelude.rs similarity index 100% rename from src/test/ui/extern-flag/noprelude.rs rename to tests/ui/extern-flag/noprelude.rs diff --git a/src/test/ui/extern-flag/noprelude.stderr b/tests/ui/extern-flag/noprelude.stderr similarity index 100% rename from src/test/ui/extern-flag/noprelude.stderr rename to tests/ui/extern-flag/noprelude.stderr diff --git a/src/test/ui/extern-flag/nounused.rs b/tests/ui/extern-flag/nounused.rs similarity index 100% rename from src/test/ui/extern-flag/nounused.rs rename to tests/ui/extern-flag/nounused.rs diff --git a/src/test/ui/extern-flag/public-and-private.rs b/tests/ui/extern-flag/public-and-private.rs similarity index 100% rename from src/test/ui/extern-flag/public-and-private.rs rename to tests/ui/extern-flag/public-and-private.rs diff --git a/src/test/ui/extern-flag/public-and-private.stderr b/tests/ui/extern-flag/public-and-private.stderr similarity index 100% rename from src/test/ui/extern-flag/public-and-private.stderr rename to tests/ui/extern-flag/public-and-private.stderr diff --git a/src/test/ui/extern/auxiliary/extern-take-value.rs b/tests/ui/extern/auxiliary/extern-take-value.rs similarity index 100% rename from src/test/ui/extern/auxiliary/extern-take-value.rs rename to tests/ui/extern/auxiliary/extern-take-value.rs diff --git a/src/test/ui/extern/auxiliary/extern-types-inherent-impl.rs b/tests/ui/extern/auxiliary/extern-types-inherent-impl.rs similarity index 100% rename from src/test/ui/extern/auxiliary/extern-types-inherent-impl.rs rename to tests/ui/extern/auxiliary/extern-types-inherent-impl.rs diff --git a/src/test/ui/extern/auxiliary/extern_calling_convention.rs b/tests/ui/extern/auxiliary/extern_calling_convention.rs similarity index 100% rename from src/test/ui/extern/auxiliary/extern_calling_convention.rs rename to tests/ui/extern/auxiliary/extern_calling_convention.rs diff --git a/src/test/ui/extern/auxiliary/extern_mod_ordering_lib.rs b/tests/ui/extern/auxiliary/extern_mod_ordering_lib.rs similarity index 100% rename from src/test/ui/extern/auxiliary/extern_mod_ordering_lib.rs rename to tests/ui/extern/auxiliary/extern_mod_ordering_lib.rs diff --git a/src/test/ui/extern/auxiliary/fat_drop.rs b/tests/ui/extern/auxiliary/fat_drop.rs similarity index 100% rename from src/test/ui/extern/auxiliary/fat_drop.rs rename to tests/ui/extern/auxiliary/fat_drop.rs diff --git a/src/test/ui/extern/auxiliary/invalid-utf8.txt b/tests/ui/extern/auxiliary/invalid-utf8.txt similarity index 100% rename from src/test/ui/extern/auxiliary/invalid-utf8.txt rename to tests/ui/extern/auxiliary/invalid-utf8.txt diff --git a/src/test/ui/extern/auxiliary/issue-80074-macro.rs b/tests/ui/extern/auxiliary/issue-80074-macro.rs similarity index 100% rename from src/test/ui/extern/auxiliary/issue-80074-macro.rs rename to tests/ui/extern/auxiliary/issue-80074-macro.rs diff --git a/src/test/ui/extern/auxiliary/m1.rs b/tests/ui/extern/auxiliary/m1.rs similarity index 100% rename from src/test/ui/extern/auxiliary/m1.rs rename to tests/ui/extern/auxiliary/m1.rs diff --git a/src/test/ui/extern/auxiliary/m2.rs b/tests/ui/extern/auxiliary/m2.rs similarity index 100% rename from src/test/ui/extern/auxiliary/m2.rs rename to tests/ui/extern/auxiliary/m2.rs diff --git a/src/test/ui/extern/auxiliary/no-mangle-associated-fn.rs b/tests/ui/extern/auxiliary/no-mangle-associated-fn.rs similarity index 100% rename from src/test/ui/extern/auxiliary/no-mangle-associated-fn.rs rename to tests/ui/extern/auxiliary/no-mangle-associated-fn.rs diff --git a/src/test/ui/extern/auxiliary/reexport-should-still-link.rs b/tests/ui/extern/auxiliary/reexport-should-still-link.rs similarity index 100% rename from src/test/ui/extern/auxiliary/reexport-should-still-link.rs rename to tests/ui/extern/auxiliary/reexport-should-still-link.rs diff --git a/src/test/ui/extern/extern-1.rs b/tests/ui/extern/extern-1.rs similarity index 100% rename from src/test/ui/extern/extern-1.rs rename to tests/ui/extern/extern-1.rs diff --git a/src/test/ui/extern/extern-calling-convention-test.rs b/tests/ui/extern/extern-calling-convention-test.rs similarity index 100% rename from src/test/ui/extern/extern-calling-convention-test.rs rename to tests/ui/extern/extern-calling-convention-test.rs diff --git a/src/test/ui/extern/extern-compare-with-return-type.rs b/tests/ui/extern/extern-compare-with-return-type.rs similarity index 100% rename from src/test/ui/extern/extern-compare-with-return-type.rs rename to tests/ui/extern/extern-compare-with-return-type.rs diff --git a/src/test/ui/extern/extern-const.fixed b/tests/ui/extern/extern-const.fixed similarity index 100% rename from src/test/ui/extern/extern-const.fixed rename to tests/ui/extern/extern-const.fixed diff --git a/src/test/ui/extern/extern-const.rs b/tests/ui/extern/extern-const.rs similarity index 100% rename from src/test/ui/extern/extern-const.rs rename to tests/ui/extern/extern-const.rs diff --git a/src/test/ui/extern/extern-const.stderr b/tests/ui/extern/extern-const.stderr similarity index 100% rename from src/test/ui/extern/extern-const.stderr rename to tests/ui/extern/extern-const.stderr diff --git a/src/test/ui/extern/extern-crate-multiple-missing.rs b/tests/ui/extern/extern-crate-multiple-missing.rs similarity index 100% rename from src/test/ui/extern/extern-crate-multiple-missing.rs rename to tests/ui/extern/extern-crate-multiple-missing.rs diff --git a/src/test/ui/extern/extern-crate-multiple-missing.stderr b/tests/ui/extern/extern-crate-multiple-missing.stderr similarity index 100% rename from src/test/ui/extern/extern-crate-multiple-missing.stderr rename to tests/ui/extern/extern-crate-multiple-missing.stderr diff --git a/src/test/ui/extern/extern-crate-rename.rs b/tests/ui/extern/extern-crate-rename.rs similarity index 100% rename from src/test/ui/extern/extern-crate-rename.rs rename to tests/ui/extern/extern-crate-rename.rs diff --git a/src/test/ui/extern/extern-crate-rename.stderr b/tests/ui/extern/extern-crate-rename.stderr similarity index 100% rename from src/test/ui/extern/extern-crate-rename.stderr rename to tests/ui/extern/extern-crate-rename.stderr diff --git a/src/test/ui/extern/extern-crate-visibility.rs b/tests/ui/extern/extern-crate-visibility.rs similarity index 100% rename from src/test/ui/extern/extern-crate-visibility.rs rename to tests/ui/extern/extern-crate-visibility.rs diff --git a/src/test/ui/extern/extern-crate-visibility.stderr b/tests/ui/extern/extern-crate-visibility.stderr similarity index 100% rename from src/test/ui/extern/extern-crate-visibility.stderr rename to tests/ui/extern/extern-crate-visibility.stderr diff --git a/src/test/ui/extern/extern-ffi-fn-with-body.rs b/tests/ui/extern/extern-ffi-fn-with-body.rs similarity index 100% rename from src/test/ui/extern/extern-ffi-fn-with-body.rs rename to tests/ui/extern/extern-ffi-fn-with-body.rs diff --git a/src/test/ui/extern/extern-ffi-fn-with-body.stderr b/tests/ui/extern/extern-ffi-fn-with-body.stderr similarity index 100% rename from src/test/ui/extern/extern-ffi-fn-with-body.stderr rename to tests/ui/extern/extern-ffi-fn-with-body.stderr diff --git a/src/test/ui/extern/extern-foreign-crate.rs b/tests/ui/extern/extern-foreign-crate.rs similarity index 100% rename from src/test/ui/extern/extern-foreign-crate.rs rename to tests/ui/extern/extern-foreign-crate.rs diff --git a/src/test/ui/extern/extern-macro.rs b/tests/ui/extern/extern-macro.rs similarity index 100% rename from src/test/ui/extern/extern-macro.rs rename to tests/ui/extern/extern-macro.rs diff --git a/src/test/ui/extern/extern-macro.stderr b/tests/ui/extern/extern-macro.stderr similarity index 100% rename from src/test/ui/extern/extern-macro.stderr rename to tests/ui/extern/extern-macro.stderr diff --git a/src/test/ui/extern/extern-main-fn.rs b/tests/ui/extern/extern-main-fn.rs similarity index 100% rename from src/test/ui/extern/extern-main-fn.rs rename to tests/ui/extern/extern-main-fn.rs diff --git a/src/test/ui/extern/extern-main-fn.stderr b/tests/ui/extern/extern-main-fn.stderr similarity index 100% rename from src/test/ui/extern/extern-main-fn.stderr rename to tests/ui/extern/extern-main-fn.stderr diff --git a/src/test/ui/extern/extern-main-issue-86110.rs b/tests/ui/extern/extern-main-issue-86110.rs similarity index 100% rename from src/test/ui/extern/extern-main-issue-86110.rs rename to tests/ui/extern/extern-main-issue-86110.rs diff --git a/src/test/ui/extern/extern-main-issue-86110.stderr b/tests/ui/extern/extern-main-issue-86110.stderr similarity index 100% rename from src/test/ui/extern/extern-main-issue-86110.stderr rename to tests/ui/extern/extern-main-issue-86110.stderr diff --git a/src/test/ui/extern/extern-methods.rs b/tests/ui/extern/extern-methods.rs similarity index 100% rename from src/test/ui/extern/extern-methods.rs rename to tests/ui/extern/extern-methods.rs diff --git a/src/test/ui/extern/extern-mod-abi.rs b/tests/ui/extern/extern-mod-abi.rs similarity index 100% rename from src/test/ui/extern/extern-mod-abi.rs rename to tests/ui/extern/extern-mod-abi.rs diff --git a/src/test/ui/extern/extern-mod-ordering-exe.rs b/tests/ui/extern/extern-mod-ordering-exe.rs similarity index 100% rename from src/test/ui/extern/extern-mod-ordering-exe.rs rename to tests/ui/extern/extern-mod-ordering-exe.rs diff --git a/src/test/ui/extern/extern-no-mangle.rs b/tests/ui/extern/extern-no-mangle.rs similarity index 100% rename from src/test/ui/extern/extern-no-mangle.rs rename to tests/ui/extern/extern-no-mangle.rs diff --git a/src/test/ui/extern/extern-no-mangle.stderr b/tests/ui/extern/extern-no-mangle.stderr similarity index 100% rename from src/test/ui/extern/extern-no-mangle.stderr rename to tests/ui/extern/extern-no-mangle.stderr diff --git a/src/test/ui/extern/extern-prelude-core.rs b/tests/ui/extern/extern-prelude-core.rs similarity index 100% rename from src/test/ui/extern/extern-prelude-core.rs rename to tests/ui/extern/extern-prelude-core.rs diff --git a/src/test/ui/extern/extern-prelude-no-speculative.rs b/tests/ui/extern/extern-prelude-no-speculative.rs similarity index 100% rename from src/test/ui/extern/extern-prelude-no-speculative.rs rename to tests/ui/extern/extern-prelude-no-speculative.rs diff --git a/src/test/ui/extern/extern-prelude-std.rs b/tests/ui/extern/extern-prelude-std.rs similarity index 100% rename from src/test/ui/extern/extern-prelude-std.rs rename to tests/ui/extern/extern-prelude-std.rs diff --git a/src/test/ui/extern/extern-pub.rs b/tests/ui/extern/extern-pub.rs similarity index 100% rename from src/test/ui/extern/extern-pub.rs rename to tests/ui/extern/extern-pub.rs diff --git a/src/test/ui/extern/extern-rust.rs b/tests/ui/extern/extern-rust.rs similarity index 100% rename from src/test/ui/extern/extern-rust.rs rename to tests/ui/extern/extern-rust.rs diff --git a/src/test/ui/extern/extern-static-size-overflow.rs b/tests/ui/extern/extern-static-size-overflow.rs similarity index 100% rename from src/test/ui/extern/extern-static-size-overflow.rs rename to tests/ui/extern/extern-static-size-overflow.rs diff --git a/src/test/ui/extern/extern-static-size-overflow.stderr b/tests/ui/extern/extern-static-size-overflow.stderr similarity index 100% rename from src/test/ui/extern/extern-static-size-overflow.stderr rename to tests/ui/extern/extern-static-size-overflow.stderr diff --git a/src/test/ui/extern/extern-take-value.rs b/tests/ui/extern/extern-take-value.rs similarity index 100% rename from src/test/ui/extern/extern-take-value.rs rename to tests/ui/extern/extern-take-value.rs diff --git a/src/test/ui/extern/extern-thiscall.rs b/tests/ui/extern/extern-thiscall.rs similarity index 100% rename from src/test/ui/extern/extern-thiscall.rs rename to tests/ui/extern/extern-thiscall.rs diff --git a/src/test/ui/extern/extern-type-diag-not-similar.rs b/tests/ui/extern/extern-type-diag-not-similar.rs similarity index 100% rename from src/test/ui/extern/extern-type-diag-not-similar.rs rename to tests/ui/extern/extern-type-diag-not-similar.rs diff --git a/src/test/ui/extern/extern-type-diag-not-similar.stderr b/tests/ui/extern/extern-type-diag-not-similar.stderr similarity index 100% rename from src/test/ui/extern/extern-type-diag-not-similar.stderr rename to tests/ui/extern/extern-type-diag-not-similar.stderr diff --git a/src/test/ui/extern/extern-types-distinct-types.rs b/tests/ui/extern/extern-types-distinct-types.rs similarity index 100% rename from src/test/ui/extern/extern-types-distinct-types.rs rename to tests/ui/extern/extern-types-distinct-types.rs diff --git a/src/test/ui/extern/extern-types-distinct-types.stderr b/tests/ui/extern/extern-types-distinct-types.stderr similarity index 100% rename from src/test/ui/extern/extern-types-distinct-types.stderr rename to tests/ui/extern/extern-types-distinct-types.stderr diff --git a/src/test/ui/extern/extern-types-inherent-impl.rs b/tests/ui/extern/extern-types-inherent-impl.rs similarity index 100% rename from src/test/ui/extern/extern-types-inherent-impl.rs rename to tests/ui/extern/extern-types-inherent-impl.rs diff --git a/src/test/ui/extern/extern-types-manual-sync-send.rs b/tests/ui/extern/extern-types-manual-sync-send.rs similarity index 100% rename from src/test/ui/extern/extern-types-manual-sync-send.rs rename to tests/ui/extern/extern-types-manual-sync-send.rs diff --git a/src/test/ui/extern/extern-types-not-sync-send.rs b/tests/ui/extern/extern-types-not-sync-send.rs similarity index 100% rename from src/test/ui/extern/extern-types-not-sync-send.rs rename to tests/ui/extern/extern-types-not-sync-send.rs diff --git a/src/test/ui/extern/extern-types-not-sync-send.stderr b/tests/ui/extern/extern-types-not-sync-send.stderr similarity index 100% rename from src/test/ui/extern/extern-types-not-sync-send.stderr rename to tests/ui/extern/extern-types-not-sync-send.stderr diff --git a/src/test/ui/extern/extern-types-pointer-cast.rs b/tests/ui/extern/extern-types-pointer-cast.rs similarity index 100% rename from src/test/ui/extern/extern-types-pointer-cast.rs rename to tests/ui/extern/extern-types-pointer-cast.rs diff --git a/src/test/ui/extern/extern-types-size_of_val.rs b/tests/ui/extern/extern-types-size_of_val.rs similarity index 100% rename from src/test/ui/extern/extern-types-size_of_val.rs rename to tests/ui/extern/extern-types-size_of_val.rs diff --git a/src/test/ui/extern/extern-types-thin-pointer.rs b/tests/ui/extern/extern-types-thin-pointer.rs similarity index 100% rename from src/test/ui/extern/extern-types-thin-pointer.rs rename to tests/ui/extern/extern-types-thin-pointer.rs diff --git a/src/test/ui/extern/extern-types-trait-impl.rs b/tests/ui/extern/extern-types-trait-impl.rs similarity index 100% rename from src/test/ui/extern/extern-types-trait-impl.rs rename to tests/ui/extern/extern-types-trait-impl.rs diff --git a/src/test/ui/extern/extern-types-unsized.rs b/tests/ui/extern/extern-types-unsized.rs similarity index 100% rename from src/test/ui/extern/extern-types-unsized.rs rename to tests/ui/extern/extern-types-unsized.rs diff --git a/src/test/ui/extern/extern-types-unsized.stderr b/tests/ui/extern/extern-types-unsized.stderr similarity index 100% rename from src/test/ui/extern/extern-types-unsized.stderr rename to tests/ui/extern/extern-types-unsized.stderr diff --git a/src/test/ui/extern/extern-vectorcall.rs b/tests/ui/extern/extern-vectorcall.rs similarity index 100% rename from src/test/ui/extern/extern-vectorcall.rs rename to tests/ui/extern/extern-vectorcall.rs diff --git a/src/test/ui/extern/extern-with-type-bounds.rs b/tests/ui/extern/extern-with-type-bounds.rs similarity index 100% rename from src/test/ui/extern/extern-with-type-bounds.rs rename to tests/ui/extern/extern-with-type-bounds.rs diff --git a/src/test/ui/extern/extern-with-type-bounds.stderr b/tests/ui/extern/extern-with-type-bounds.stderr similarity index 100% rename from src/test/ui/extern/extern-with-type-bounds.stderr rename to tests/ui/extern/extern-with-type-bounds.stderr diff --git a/src/test/ui/extern/extern-wrong-value-type.rs b/tests/ui/extern/extern-wrong-value-type.rs similarity index 100% rename from src/test/ui/extern/extern-wrong-value-type.rs rename to tests/ui/extern/extern-wrong-value-type.rs diff --git a/src/test/ui/extern/extern-wrong-value-type.stderr b/tests/ui/extern/extern-wrong-value-type.stderr similarity index 100% rename from src/test/ui/extern/extern-wrong-value-type.stderr rename to tests/ui/extern/extern-wrong-value-type.stderr diff --git a/src/test/ui/extern/extern_fat_drop.rs b/tests/ui/extern/extern_fat_drop.rs similarity index 100% rename from src/test/ui/extern/extern_fat_drop.rs rename to tests/ui/extern/extern_fat_drop.rs diff --git a/src/test/ui/extern/issue-10025.rs b/tests/ui/extern/issue-10025.rs similarity index 100% rename from src/test/ui/extern/issue-10025.rs rename to tests/ui/extern/issue-10025.rs diff --git a/src/test/ui/extern/issue-10763.rs b/tests/ui/extern/issue-10763.rs similarity index 100% rename from src/test/ui/extern/issue-10763.rs rename to tests/ui/extern/issue-10763.rs diff --git a/src/test/ui/extern/issue-10764-rpass.rs b/tests/ui/extern/issue-10764-rpass.rs similarity index 100% rename from src/test/ui/extern/issue-10764-rpass.rs rename to tests/ui/extern/issue-10764-rpass.rs diff --git a/src/test/ui/extern/issue-13655.rs b/tests/ui/extern/issue-13655.rs similarity index 100% rename from src/test/ui/extern/issue-13655.rs rename to tests/ui/extern/issue-13655.rs diff --git a/src/test/ui/extern/issue-28324.mir.stderr b/tests/ui/extern/issue-28324.mir.stderr similarity index 100% rename from src/test/ui/extern/issue-28324.mir.stderr rename to tests/ui/extern/issue-28324.mir.stderr diff --git a/src/test/ui/extern/issue-28324.rs b/tests/ui/extern/issue-28324.rs similarity index 100% rename from src/test/ui/extern/issue-28324.rs rename to tests/ui/extern/issue-28324.rs diff --git a/src/test/ui/extern/issue-28324.thir.stderr b/tests/ui/extern/issue-28324.thir.stderr similarity index 100% rename from src/test/ui/extern/issue-28324.thir.stderr rename to tests/ui/extern/issue-28324.thir.stderr diff --git a/src/test/ui/extern/issue-36122-accessing-externed-dst.rs b/tests/ui/extern/issue-36122-accessing-externed-dst.rs similarity index 100% rename from src/test/ui/extern/issue-36122-accessing-externed-dst.rs rename to tests/ui/extern/issue-36122-accessing-externed-dst.rs diff --git a/src/test/ui/extern/issue-36122-accessing-externed-dst.stderr b/tests/ui/extern/issue-36122-accessing-externed-dst.stderr similarity index 100% rename from src/test/ui/extern/issue-36122-accessing-externed-dst.stderr rename to tests/ui/extern/issue-36122-accessing-externed-dst.stderr diff --git a/src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs b/tests/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs similarity index 100% rename from src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs rename to tests/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs diff --git a/src/test/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs b/tests/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs similarity index 100% rename from src/test/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs rename to tests/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs diff --git a/src/test/ui/extern/issue-80074.rs b/tests/ui/extern/issue-80074.rs similarity index 100% rename from src/test/ui/extern/issue-80074.rs rename to tests/ui/extern/issue-80074.rs diff --git a/src/test/ui/extern/issue-95829.rs b/tests/ui/extern/issue-95829.rs similarity index 100% rename from src/test/ui/extern/issue-95829.rs rename to tests/ui/extern/issue-95829.rs diff --git a/src/test/ui/extern/issue-95829.stderr b/tests/ui/extern/issue-95829.stderr similarity index 100% rename from src/test/ui/extern/issue-95829.stderr rename to tests/ui/extern/issue-95829.stderr diff --git a/src/test/ui/extern/no-mangle-associated-fn.rs b/tests/ui/extern/no-mangle-associated-fn.rs similarity index 100% rename from src/test/ui/extern/no-mangle-associated-fn.rs rename to tests/ui/extern/no-mangle-associated-fn.rs diff --git a/src/test/ui/extern/not-in-block.rs b/tests/ui/extern/not-in-block.rs similarity index 100% rename from src/test/ui/extern/not-in-block.rs rename to tests/ui/extern/not-in-block.rs diff --git a/src/test/ui/extern/not-in-block.stderr b/tests/ui/extern/not-in-block.stderr similarity index 100% rename from src/test/ui/extern/not-in-block.stderr rename to tests/ui/extern/not-in-block.stderr diff --git a/src/test/ui/extoption_env-no-args.rs b/tests/ui/extoption_env-no-args.rs similarity index 100% rename from src/test/ui/extoption_env-no-args.rs rename to tests/ui/extoption_env-no-args.rs diff --git a/src/test/ui/extoption_env-no-args.stderr b/tests/ui/extoption_env-no-args.stderr similarity index 100% rename from src/test/ui/extoption_env-no-args.stderr rename to tests/ui/extoption_env-no-args.stderr diff --git a/src/test/ui/extoption_env-not-defined.rs b/tests/ui/extoption_env-not-defined.rs similarity index 100% rename from src/test/ui/extoption_env-not-defined.rs rename to tests/ui/extoption_env-not-defined.rs diff --git a/src/test/ui/extoption_env-not-string-literal.rs b/tests/ui/extoption_env-not-string-literal.rs similarity index 100% rename from src/test/ui/extoption_env-not-string-literal.rs rename to tests/ui/extoption_env-not-string-literal.rs diff --git a/src/test/ui/extoption_env-not-string-literal.stderr b/tests/ui/extoption_env-not-string-literal.stderr similarity index 100% rename from src/test/ui/extoption_env-not-string-literal.stderr rename to tests/ui/extoption_env-not-string-literal.stderr diff --git a/src/test/ui/extoption_env-too-many-args.rs b/tests/ui/extoption_env-too-many-args.rs similarity index 100% rename from src/test/ui/extoption_env-too-many-args.rs rename to tests/ui/extoption_env-too-many-args.rs diff --git a/src/test/ui/extoption_env-too-many-args.stderr b/tests/ui/extoption_env-too-many-args.stderr similarity index 100% rename from src/test/ui/extoption_env-too-many-args.stderr rename to tests/ui/extoption_env-too-many-args.stderr diff --git a/src/test/ui/fact.rs b/tests/ui/fact.rs similarity index 100% rename from src/test/ui/fact.rs rename to tests/ui/fact.rs diff --git a/src/test/ui/fail-simple.rs b/tests/ui/fail-simple.rs similarity index 100% rename from src/test/ui/fail-simple.rs rename to tests/ui/fail-simple.rs diff --git a/src/test/ui/fail-simple.stderr b/tests/ui/fail-simple.stderr similarity index 100% rename from src/test/ui/fail-simple.stderr rename to tests/ui/fail-simple.stderr diff --git a/src/test/ui/feature-gates/allow-features-empty.rs b/tests/ui/feature-gates/allow-features-empty.rs similarity index 100% rename from src/test/ui/feature-gates/allow-features-empty.rs rename to tests/ui/feature-gates/allow-features-empty.rs diff --git a/src/test/ui/feature-gates/allow-features-empty.stderr b/tests/ui/feature-gates/allow-features-empty.stderr similarity index 100% rename from src/test/ui/feature-gates/allow-features-empty.stderr rename to tests/ui/feature-gates/allow-features-empty.stderr diff --git a/src/test/ui/feature-gates/allow-features.rs b/tests/ui/feature-gates/allow-features.rs similarity index 100% rename from src/test/ui/feature-gates/allow-features.rs rename to tests/ui/feature-gates/allow-features.rs diff --git a/src/test/ui/feature-gates/allow-features.stderr b/tests/ui/feature-gates/allow-features.stderr similarity index 100% rename from src/test/ui/feature-gates/allow-features.stderr rename to tests/ui/feature-gates/allow-features.stderr diff --git a/src/test/ui/feature-gates/auxiliary/cfg-target-thread-local.rs b/tests/ui/feature-gates/auxiliary/cfg-target-thread-local.rs similarity index 100% rename from src/test/ui/feature-gates/auxiliary/cfg-target-thread-local.rs rename to tests/ui/feature-gates/auxiliary/cfg-target-thread-local.rs diff --git a/src/test/ui/feature-gates/auxiliary/debugger-visualizer.natvis b/tests/ui/feature-gates/auxiliary/debugger-visualizer.natvis similarity index 100% rename from src/test/ui/feature-gates/auxiliary/debugger-visualizer.natvis rename to tests/ui/feature-gates/auxiliary/debugger-visualizer.natvis diff --git a/src/test/ui/feature-gates/auxiliary/pub_dep.rs b/tests/ui/feature-gates/auxiliary/pub_dep.rs similarity index 100% rename from src/test/ui/feature-gates/auxiliary/pub_dep.rs rename to tests/ui/feature-gates/auxiliary/pub_dep.rs diff --git a/src/test/ui/feature-gates/auxiliary/re_rebalance_coherence_lib.rs b/tests/ui/feature-gates/auxiliary/re_rebalance_coherence_lib.rs similarity index 100% rename from src/test/ui/feature-gates/auxiliary/re_rebalance_coherence_lib.rs rename to tests/ui/feature-gates/auxiliary/re_rebalance_coherence_lib.rs diff --git a/src/test/ui/feature-gates/bench.rs b/tests/ui/feature-gates/bench.rs similarity index 100% rename from src/test/ui/feature-gates/bench.rs rename to tests/ui/feature-gates/bench.rs diff --git a/src/test/ui/feature-gates/bench.stderr b/tests/ui/feature-gates/bench.stderr similarity index 100% rename from src/test/ui/feature-gates/bench.stderr rename to tests/ui/feature-gates/bench.stderr diff --git a/src/test/ui/feature-gates/duplicate-features.rs b/tests/ui/feature-gates/duplicate-features.rs similarity index 100% rename from src/test/ui/feature-gates/duplicate-features.rs rename to tests/ui/feature-gates/duplicate-features.rs diff --git a/src/test/ui/feature-gates/duplicate-features.stderr b/tests/ui/feature-gates/duplicate-features.stderr similarity index 100% rename from src/test/ui/feature-gates/duplicate-features.stderr rename to tests/ui/feature-gates/duplicate-features.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.rs rename to tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr rename to tests/ui/feature-gates/feature-gate-abi-avr-interrupt.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi-efiapi.rs b/tests/ui/feature-gates/feature-gate-abi-efiapi.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-efiapi.rs rename to tests/ui/feature-gates/feature-gate-abi-efiapi.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi-efiapi.stderr b/tests/ui/feature-gates/feature-gate-abi-efiapi.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-efiapi.stderr rename to tests/ui/feature-gates/feature-gate-abi-efiapi.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs rename to tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr rename to tests/ui/feature-gates/feature-gate-abi-msp430-interrupt.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi-x86-interrupt.rs b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-x86-interrupt.rs rename to tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr b/tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr rename to tests/ui/feature-gates/feature-gate-abi-x86-interrupt.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi.rs b/tests/ui/feature-gates/feature-gate-abi.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi.rs rename to tests/ui/feature-gates/feature-gate-abi.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi.stderr b/tests/ui/feature-gates/feature-gate-abi.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi.stderr rename to tests/ui/feature-gates/feature-gate-abi.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi_amdgpu_kernel.rs b/tests/ui/feature-gates/feature-gate-abi_amdgpu_kernel.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_amdgpu_kernel.rs rename to tests/ui/feature-gates/feature-gate-abi_amdgpu_kernel.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi_amdgpu_kernel.stderr b/tests/ui/feature-gates/feature-gate-abi_amdgpu_kernel.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_amdgpu_kernel.stderr rename to tests/ui/feature-gates/feature-gate-abi_amdgpu_kernel.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi_ptx.rs b/tests/ui/feature-gates/feature-gate-abi_ptx.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_ptx.rs rename to tests/ui/feature-gates/feature-gate-abi_ptx.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi_ptx.stderr b/tests/ui/feature-gates/feature-gate-abi_ptx.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_ptx.stderr rename to tests/ui/feature-gates/feature-gate-abi_ptx.stderr diff --git a/src/test/ui/feature-gates/feature-gate-abi_unadjusted.rs b/tests/ui/feature-gates/feature-gate-abi_unadjusted.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_unadjusted.rs rename to tests/ui/feature-gates/feature-gate-abi_unadjusted.rs diff --git a/src/test/ui/feature-gates/feature-gate-abi_unadjusted.stderr b/tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-abi_unadjusted.stderr rename to tests/ui/feature-gates/feature-gate-abi_unadjusted.stderr diff --git a/src/test/ui/feature-gates/feature-gate-adt_const_params.rs b/tests/ui/feature-gates/feature-gate-adt_const_params.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-adt_const_params.rs rename to tests/ui/feature-gates/feature-gate-adt_const_params.rs diff --git a/src/test/ui/feature-gates/feature-gate-adt_const_params.stderr b/tests/ui/feature-gates/feature-gate-adt_const_params.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-adt_const_params.stderr rename to tests/ui/feature-gates/feature-gate-adt_const_params.stderr diff --git a/src/test/ui/feature-gates/feature-gate-alloc-error-handler.rs b/tests/ui/feature-gates/feature-gate-alloc-error-handler.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-alloc-error-handler.rs rename to tests/ui/feature-gates/feature-gate-alloc-error-handler.rs diff --git a/src/test/ui/feature-gates/feature-gate-alloc-error-handler.stderr b/tests/ui/feature-gates/feature-gate-alloc-error-handler.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-alloc-error-handler.stderr rename to tests/ui/feature-gates/feature-gate-alloc-error-handler.stderr diff --git a/src/test/ui/feature-gates/feature-gate-allocator_internals.rs b/tests/ui/feature-gates/feature-gate-allocator_internals.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allocator_internals.rs rename to tests/ui/feature-gates/feature-gate-allocator_internals.rs diff --git a/src/test/ui/feature-gates/feature-gate-allocator_internals.stderr b/tests/ui/feature-gates/feature-gate-allocator_internals.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allocator_internals.stderr rename to tests/ui/feature-gates/feature-gate-allocator_internals.stderr diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.rs b/tests/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.rs rename to tests/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.rs diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.stderr b/tests/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.stderr rename to tests/ui/feature-gates/feature-gate-allow-internal-unsafe-nested-macro.stderr diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.rs b/tests/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.rs rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.rs diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.stderr b/tests/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.stderr rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable-nested-macro.stderr diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable-struct.rs b/tests/ui/feature-gates/feature-gate-allow-internal-unstable-struct.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable-struct.rs rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable-struct.rs diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable-struct.stderr b/tests/ui/feature-gates/feature-gate-allow-internal-unstable-struct.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable-struct.stderr rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable-struct.stderr diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable.rs b/tests/ui/feature-gates/feature-gate-allow-internal-unstable.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable.rs rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable.rs diff --git a/src/test/ui/feature-gates/feature-gate-allow-internal-unstable.stderr b/tests/ui/feature-gates/feature-gate-allow-internal-unstable.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-allow-internal-unstable.stderr rename to tests/ui/feature-gates/feature-gate-allow-internal-unstable.stderr diff --git a/src/test/ui/feature-gates/feature-gate-arbitrary-self-types.rs b/tests/ui/feature-gates/feature-gate-arbitrary-self-types.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-arbitrary-self-types.rs rename to tests/ui/feature-gates/feature-gate-arbitrary-self-types.rs diff --git a/src/test/ui/feature-gates/feature-gate-arbitrary-self-types.stderr b/tests/ui/feature-gates/feature-gate-arbitrary-self-types.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-arbitrary-self-types.stderr rename to tests/ui/feature-gates/feature-gate-arbitrary-self-types.stderr diff --git a/src/test/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.rs b/tests/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.rs rename to tests/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.rs diff --git a/src/test/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.stderr b/tests/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.stderr rename to tests/ui/feature-gates/feature-gate-arbitrary_self_types-raw-pointer.stderr diff --git a/src/test/ui/feature-gates/feature-gate-asm_const.rs b/tests/ui/feature-gates/feature-gate-asm_const.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_const.rs rename to tests/ui/feature-gates/feature-gate-asm_const.rs diff --git a/src/test/ui/feature-gates/feature-gate-asm_const.stderr b/tests/ui/feature-gates/feature-gate-asm_const.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_const.stderr rename to tests/ui/feature-gates/feature-gate-asm_const.stderr diff --git a/src/test/ui/feature-gates/feature-gate-asm_experimental_arch.rs b/tests/ui/feature-gates/feature-gate-asm_experimental_arch.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_experimental_arch.rs rename to tests/ui/feature-gates/feature-gate-asm_experimental_arch.rs diff --git a/src/test/ui/feature-gates/feature-gate-asm_experimental_arch.stderr b/tests/ui/feature-gates/feature-gate-asm_experimental_arch.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_experimental_arch.stderr rename to tests/ui/feature-gates/feature-gate-asm_experimental_arch.stderr diff --git a/src/test/ui/feature-gates/feature-gate-asm_unwind.rs b/tests/ui/feature-gates/feature-gate-asm_unwind.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_unwind.rs rename to tests/ui/feature-gates/feature-gate-asm_unwind.rs diff --git a/src/test/ui/feature-gates/feature-gate-asm_unwind.stderr b/tests/ui/feature-gates/feature-gate-asm_unwind.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-asm_unwind.stderr rename to tests/ui/feature-gates/feature-gate-asm_unwind.stderr diff --git a/src/test/ui/feature-gates/feature-gate-assoc-type-defaults.rs b/tests/ui/feature-gates/feature-gate-assoc-type-defaults.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-assoc-type-defaults.rs rename to tests/ui/feature-gates/feature-gate-assoc-type-defaults.rs diff --git a/src/test/ui/feature-gates/feature-gate-assoc-type-defaults.stderr b/tests/ui/feature-gates/feature-gate-assoc-type-defaults.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-assoc-type-defaults.stderr rename to tests/ui/feature-gates/feature-gate-assoc-type-defaults.stderr diff --git a/src/test/ui/feature-gates/feature-gate-associated_const_equality.rs b/tests/ui/feature-gates/feature-gate-associated_const_equality.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-associated_const_equality.rs rename to tests/ui/feature-gates/feature-gate-associated_const_equality.rs diff --git a/src/test/ui/feature-gates/feature-gate-associated_const_equality.stderr b/tests/ui/feature-gates/feature-gate-associated_const_equality.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-associated_const_equality.stderr rename to tests/ui/feature-gates/feature-gate-associated_const_equality.stderr diff --git a/src/test/ui/feature-gates/feature-gate-associated_type_bounds.rs b/tests/ui/feature-gates/feature-gate-associated_type_bounds.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-associated_type_bounds.rs rename to tests/ui/feature-gates/feature-gate-associated_type_bounds.rs diff --git a/src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr b/tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr rename to tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr diff --git a/src/test/ui/feature-gates/feature-gate-auto-traits.rs b/tests/ui/feature-gates/feature-gate-auto-traits.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-auto-traits.rs rename to tests/ui/feature-gates/feature-gate-auto-traits.rs diff --git a/src/test/ui/feature-gates/feature-gate-auto-traits.stderr b/tests/ui/feature-gates/feature-gate-auto-traits.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-auto-traits.stderr rename to tests/ui/feature-gates/feature-gate-auto-traits.stderr diff --git a/src/test/ui/feature-gates/feature-gate-box-expr.rs b/tests/ui/feature-gates/feature-gate-box-expr.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box-expr.rs rename to tests/ui/feature-gates/feature-gate-box-expr.rs diff --git a/src/test/ui/feature-gates/feature-gate-box-expr.stderr b/tests/ui/feature-gates/feature-gate-box-expr.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box-expr.stderr rename to tests/ui/feature-gates/feature-gate-box-expr.stderr diff --git a/src/test/ui/feature-gates/feature-gate-box_patterns.rs b/tests/ui/feature-gates/feature-gate-box_patterns.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box_patterns.rs rename to tests/ui/feature-gates/feature-gate-box_patterns.rs diff --git a/src/test/ui/feature-gates/feature-gate-box_patterns.stderr b/tests/ui/feature-gates/feature-gate-box_patterns.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box_patterns.stderr rename to tests/ui/feature-gates/feature-gate-box_patterns.stderr diff --git a/src/test/ui/feature-gates/feature-gate-box_syntax.rs b/tests/ui/feature-gates/feature-gate-box_syntax.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box_syntax.rs rename to tests/ui/feature-gates/feature-gate-box_syntax.rs diff --git a/src/test/ui/feature-gates/feature-gate-box_syntax.stderr b/tests/ui/feature-gates/feature-gate-box_syntax.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-box_syntax.stderr rename to tests/ui/feature-gates/feature-gate-box_syntax.stderr diff --git a/src/test/ui/feature-gates/feature-gate-c_variadic.rs b/tests/ui/feature-gates/feature-gate-c_variadic.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-c_variadic.rs rename to tests/ui/feature-gates/feature-gate-c_variadic.rs diff --git a/src/test/ui/feature-gates/feature-gate-c_variadic.stderr b/tests/ui/feature-gates/feature-gate-c_variadic.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-c_variadic.stderr rename to tests/ui/feature-gates/feature-gate-c_variadic.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs b/tests/ui/feature-gates/feature-gate-cfg-target-abi.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs rename to tests/ui/feature-gates/feature-gate-cfg-target-abi.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr b/tests/ui/feature-gates/feature-gate-cfg-target-abi.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr rename to tests/ui/feature-gates/feature-gate-cfg-target-abi.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-compact.rs b/tests/ui/feature-gates/feature-gate-cfg-target-compact.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-compact.rs rename to tests/ui/feature-gates/feature-gate-cfg-target-compact.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-compact.stderr b/tests/ui/feature-gates/feature-gate-cfg-target-compact.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-compact.stderr rename to tests/ui/feature-gates/feature-gate-cfg-target-compact.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.rs b/tests/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.rs rename to tests/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.stderr b/tests/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.stderr rename to tests/ui/feature-gates/feature-gate-cfg-target-has-atomic-equal-alignment.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs b/tests/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs rename to tests/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic.stderr b/tests/ui/feature-gates/feature-gate-cfg-target-has-atomic.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic.stderr rename to tests/ui/feature-gates/feature-gate-cfg-target-has-atomic.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-thread-local.rs b/tests/ui/feature-gates/feature-gate-cfg-target-thread-local.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-thread-local.rs rename to tests/ui/feature-gates/feature-gate-cfg-target-thread-local.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-thread-local.stderr b/tests/ui/feature-gates/feature-gate-cfg-target-thread-local.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-target-thread-local.stderr rename to tests/ui/feature-gates/feature-gate-cfg-target-thread-local.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg-version.rs b/tests/ui/feature-gates/feature-gate-cfg-version.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-version.rs rename to tests/ui/feature-gates/feature-gate-cfg-version.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg-version.stderr b/tests/ui/feature-gates/feature-gate-cfg-version.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg-version.stderr rename to tests/ui/feature-gates/feature-gate-cfg-version.stderr diff --git a/src/test/ui/feature-gates/feature-gate-cfg_sanitize.rs b/tests/ui/feature-gates/feature-gate-cfg_sanitize.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg_sanitize.rs rename to tests/ui/feature-gates/feature-gate-cfg_sanitize.rs diff --git a/src/test/ui/feature-gates/feature-gate-cfg_sanitize.stderr b/tests/ui/feature-gates/feature-gate-cfg_sanitize.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-cfg_sanitize.stderr rename to tests/ui/feature-gates/feature-gate-cfg_sanitize.stderr diff --git a/src/test/ui/feature-gates/feature-gate-check-cfg.rs b/tests/ui/feature-gates/feature-gate-check-cfg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-check-cfg.rs rename to tests/ui/feature-gates/feature-gate-check-cfg.rs diff --git a/src/test/ui/feature-gates/feature-gate-check-cfg.stderr b/tests/ui/feature-gates/feature-gate-check-cfg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-check-cfg.stderr rename to tests/ui/feature-gates/feature-gate-check-cfg.stderr diff --git a/src/test/ui/feature-gates/feature-gate-closure_lifetime_binder.rs b/tests/ui/feature-gates/feature-gate-closure_lifetime_binder.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-closure_lifetime_binder.rs rename to tests/ui/feature-gates/feature-gate-closure_lifetime_binder.rs diff --git a/src/test/ui/feature-gates/feature-gate-closure_lifetime_binder.stderr b/tests/ui/feature-gates/feature-gate-closure_lifetime_binder.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-closure_lifetime_binder.stderr rename to tests/ui/feature-gates/feature-gate-closure_lifetime_binder.stderr diff --git a/src/test/ui/feature-gates/feature-gate-closure_track_caller.rs b/tests/ui/feature-gates/feature-gate-closure_track_caller.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-closure_track_caller.rs rename to tests/ui/feature-gates/feature-gate-closure_track_caller.rs diff --git a/src/test/ui/feature-gates/feature-gate-closure_track_caller.stderr b/tests/ui/feature-gates/feature-gate-closure_track_caller.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-closure_track_caller.stderr rename to tests/ui/feature-gates/feature-gate-closure_track_caller.stderr diff --git a/src/test/ui/feature-gates/feature-gate-collapse_debuginfo.rs b/tests/ui/feature-gates/feature-gate-collapse_debuginfo.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-collapse_debuginfo.rs rename to tests/ui/feature-gates/feature-gate-collapse_debuginfo.rs diff --git a/src/test/ui/feature-gates/feature-gate-collapse_debuginfo.stderr b/tests/ui/feature-gates/feature-gate-collapse_debuginfo.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-collapse_debuginfo.stderr rename to tests/ui/feature-gates/feature-gate-collapse_debuginfo.stderr diff --git a/src/test/ui/feature-gates/feature-gate-compiler-builtins.rs b/tests/ui/feature-gates/feature-gate-compiler-builtins.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-compiler-builtins.rs rename to tests/ui/feature-gates/feature-gate-compiler-builtins.rs diff --git a/src/test/ui/feature-gates/feature-gate-compiler-builtins.stderr b/tests/ui/feature-gates/feature-gate-compiler-builtins.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-compiler-builtins.stderr rename to tests/ui/feature-gates/feature-gate-compiler-builtins.stderr diff --git a/src/test/ui/feature-gates/feature-gate-concat_bytes.rs b/tests/ui/feature-gates/feature-gate-concat_bytes.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_bytes.rs rename to tests/ui/feature-gates/feature-gate-concat_bytes.rs diff --git a/src/test/ui/feature-gates/feature-gate-concat_bytes.stderr b/tests/ui/feature-gates/feature-gate-concat_bytes.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_bytes.stderr rename to tests/ui/feature-gates/feature-gate-concat_bytes.stderr diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents.rs b/tests/ui/feature-gates/feature-gate-concat_idents.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents.rs rename to tests/ui/feature-gates/feature-gate-concat_idents.rs diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents.stderr b/tests/ui/feature-gates/feature-gate-concat_idents.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents.stderr rename to tests/ui/feature-gates/feature-gate-concat_idents.stderr diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents2.rs b/tests/ui/feature-gates/feature-gate-concat_idents2.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents2.rs rename to tests/ui/feature-gates/feature-gate-concat_idents2.rs diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents2.stderr b/tests/ui/feature-gates/feature-gate-concat_idents2.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents2.stderr rename to tests/ui/feature-gates/feature-gate-concat_idents2.stderr diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents3.rs b/tests/ui/feature-gates/feature-gate-concat_idents3.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents3.rs rename to tests/ui/feature-gates/feature-gate-concat_idents3.rs diff --git a/src/test/ui/feature-gates/feature-gate-concat_idents3.stderr b/tests/ui/feature-gates/feature-gate-concat_idents3.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-concat_idents3.stderr rename to tests/ui/feature-gates/feature-gate-concat_idents3.stderr diff --git a/src/test/ui/feature-gates/feature-gate-const-indexing.rs b/tests/ui/feature-gates/feature-gate-const-indexing.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-const-indexing.rs rename to tests/ui/feature-gates/feature-gate-const-indexing.rs diff --git a/src/test/ui/feature-gates/feature-gate-const_refs_to_cell.rs b/tests/ui/feature-gates/feature-gate-const_refs_to_cell.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-const_refs_to_cell.rs rename to tests/ui/feature-gates/feature-gate-const_refs_to_cell.rs diff --git a/src/test/ui/feature-gates/feature-gate-custom_attribute.rs b/tests/ui/feature-gates/feature-gate-custom_attribute.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_attribute.rs rename to tests/ui/feature-gates/feature-gate-custom_attribute.rs diff --git a/src/test/ui/feature-gates/feature-gate-custom_attribute.stderr b/tests/ui/feature-gates/feature-gate-custom_attribute.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_attribute.stderr rename to tests/ui/feature-gates/feature-gate-custom_attribute.stderr diff --git a/src/test/ui/feature-gates/feature-gate-custom_attribute2.rs b/tests/ui/feature-gates/feature-gate-custom_attribute2.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_attribute2.rs rename to tests/ui/feature-gates/feature-gate-custom_attribute2.rs diff --git a/src/test/ui/feature-gates/feature-gate-custom_attribute2.stderr b/tests/ui/feature-gates/feature-gate-custom_attribute2.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_attribute2.stderr rename to tests/ui/feature-gates/feature-gate-custom_attribute2.stderr diff --git a/src/test/ui/feature-gates/feature-gate-custom_mir.rs b/tests/ui/feature-gates/feature-gate-custom_mir.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_mir.rs rename to tests/ui/feature-gates/feature-gate-custom_mir.rs diff --git a/src/test/ui/feature-gates/feature-gate-custom_mir.stderr b/tests/ui/feature-gates/feature-gate-custom_mir.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_mir.stderr rename to tests/ui/feature-gates/feature-gate-custom_mir.stderr diff --git a/src/test/ui/feature-gates/feature-gate-custom_test_frameworks.rs b/tests/ui/feature-gates/feature-gate-custom_test_frameworks.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_test_frameworks.rs rename to tests/ui/feature-gates/feature-gate-custom_test_frameworks.rs diff --git a/src/test/ui/feature-gates/feature-gate-custom_test_frameworks.stderr b/tests/ui/feature-gates/feature-gate-custom_test_frameworks.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-custom_test_frameworks.stderr rename to tests/ui/feature-gates/feature-gate-custom_test_frameworks.stderr diff --git a/src/test/ui/feature-gates/feature-gate-debugger-visualizer.rs b/tests/ui/feature-gates/feature-gate-debugger-visualizer.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-debugger-visualizer.rs rename to tests/ui/feature-gates/feature-gate-debugger-visualizer.rs diff --git a/src/test/ui/feature-gates/feature-gate-debugger-visualizer.stderr b/tests/ui/feature-gates/feature-gate-debugger-visualizer.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-debugger-visualizer.stderr rename to tests/ui/feature-gates/feature-gate-debugger-visualizer.stderr diff --git a/src/test/ui/feature-gates/feature-gate-decl_macro.rs b/tests/ui/feature-gates/feature-gate-decl_macro.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-decl_macro.rs rename to tests/ui/feature-gates/feature-gate-decl_macro.rs diff --git a/src/test/ui/feature-gates/feature-gate-decl_macro.stderr b/tests/ui/feature-gates/feature-gate-decl_macro.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-decl_macro.stderr rename to tests/ui/feature-gates/feature-gate-decl_macro.stderr diff --git a/src/test/ui/feature-gates/feature-gate-default_type_parameter_fallback.rs b/tests/ui/feature-gates/feature-gate-default_type_parameter_fallback.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-default_type_parameter_fallback.rs rename to tests/ui/feature-gates/feature-gate-default_type_parameter_fallback.rs diff --git a/src/test/ui/feature-gates/feature-gate-default_type_parameter_fallback.stderr b/tests/ui/feature-gates/feature-gate-default_type_parameter_fallback.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-default_type_parameter_fallback.stderr rename to tests/ui/feature-gates/feature-gate-default_type_parameter_fallback.stderr diff --git a/src/test/ui/feature-gates/feature-gate-deprecated_safe.rs b/tests/ui/feature-gates/feature-gate-deprecated_safe.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-deprecated_safe.rs rename to tests/ui/feature-gates/feature-gate-deprecated_safe.rs diff --git a/src/test/ui/feature-gates/feature-gate-deprecated_safe.stderr b/tests/ui/feature-gates/feature-gate-deprecated_safe.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-deprecated_safe.stderr rename to tests/ui/feature-gates/feature-gate-deprecated_safe.stderr diff --git a/src/test/ui/feature-gates/feature-gate-doc_cfg.rs b/tests/ui/feature-gates/feature-gate-doc_cfg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_cfg.rs rename to tests/ui/feature-gates/feature-gate-doc_cfg.rs diff --git a/src/test/ui/feature-gates/feature-gate-doc_cfg.stderr b/tests/ui/feature-gates/feature-gate-doc_cfg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_cfg.stderr rename to tests/ui/feature-gates/feature-gate-doc_cfg.stderr diff --git a/src/test/ui/feature-gates/feature-gate-doc_masked.rs b/tests/ui/feature-gates/feature-gate-doc_masked.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_masked.rs rename to tests/ui/feature-gates/feature-gate-doc_masked.rs diff --git a/src/test/ui/feature-gates/feature-gate-doc_masked.stderr b/tests/ui/feature-gates/feature-gate-doc_masked.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_masked.stderr rename to tests/ui/feature-gates/feature-gate-doc_masked.stderr diff --git a/src/test/ui/feature-gates/feature-gate-doc_notable_trait.rs b/tests/ui/feature-gates/feature-gate-doc_notable_trait.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_notable_trait.rs rename to tests/ui/feature-gates/feature-gate-doc_notable_trait.rs diff --git a/src/test/ui/feature-gates/feature-gate-doc_notable_trait.stderr b/tests/ui/feature-gates/feature-gate-doc_notable_trait.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-doc_notable_trait.stderr rename to tests/ui/feature-gates/feature-gate-doc_notable_trait.stderr diff --git a/src/test/ui/feature-gates/feature-gate-exclusive-range-pattern.rs b/tests/ui/feature-gates/feature-gate-exclusive-range-pattern.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-exclusive-range-pattern.rs rename to tests/ui/feature-gates/feature-gate-exclusive-range-pattern.rs diff --git a/src/test/ui/feature-gates/feature-gate-exclusive-range-pattern.stderr b/tests/ui/feature-gates/feature-gate-exclusive-range-pattern.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-exclusive-range-pattern.stderr rename to tests/ui/feature-gates/feature-gate-exclusive-range-pattern.stderr diff --git a/src/test/ui/feature-gates/feature-gate-exhaustive-patterns.rs b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-exhaustive-patterns.rs rename to tests/ui/feature-gates/feature-gate-exhaustive-patterns.rs diff --git a/src/test/ui/feature-gates/feature-gate-exhaustive-patterns.stderr b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-exhaustive-patterns.stderr rename to tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr diff --git a/src/test/ui/feature-gates/feature-gate-extern_absolute_paths.rs b/tests/ui/feature-gates/feature-gate-extern_absolute_paths.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_absolute_paths.rs rename to tests/ui/feature-gates/feature-gate-extern_absolute_paths.rs diff --git a/src/test/ui/feature-gates/feature-gate-extern_absolute_paths.stderr b/tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_absolute_paths.stderr rename to tests/ui/feature-gates/feature-gate-extern_absolute_paths.stderr diff --git a/src/test/ui/feature-gates/feature-gate-extern_prelude.rs b/tests/ui/feature-gates/feature-gate-extern_prelude.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_prelude.rs rename to tests/ui/feature-gates/feature-gate-extern_prelude.rs diff --git a/src/test/ui/feature-gates/feature-gate-extern_prelude.stderr b/tests/ui/feature-gates/feature-gate-extern_prelude.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_prelude.stderr rename to tests/ui/feature-gates/feature-gate-extern_prelude.stderr diff --git a/src/test/ui/feature-gates/feature-gate-extern_types.rs b/tests/ui/feature-gates/feature-gate-extern_types.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_types.rs rename to tests/ui/feature-gates/feature-gate-extern_types.rs diff --git a/src/test/ui/feature-gates/feature-gate-extern_types.stderr b/tests/ui/feature-gates/feature-gate-extern_types.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-extern_types.stderr rename to tests/ui/feature-gates/feature-gate-extern_types.stderr diff --git a/src/test/ui/feature-gates/feature-gate-feature-gate.rs b/tests/ui/feature-gates/feature-gate-feature-gate.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-feature-gate.rs rename to tests/ui/feature-gates/feature-gate-feature-gate.rs diff --git a/src/test/ui/feature-gates/feature-gate-feature-gate.stderr b/tests/ui/feature-gates/feature-gate-feature-gate.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-feature-gate.stderr rename to tests/ui/feature-gates/feature-gate-feature-gate.stderr diff --git a/src/test/ui/feature-gates/feature-gate-ffi_const.rs b/tests/ui/feature-gates/feature-gate-ffi_const.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_const.rs rename to tests/ui/feature-gates/feature-gate-ffi_const.rs diff --git a/src/test/ui/feature-gates/feature-gate-ffi_const.stderr b/tests/ui/feature-gates/feature-gate-ffi_const.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_const.stderr rename to tests/ui/feature-gates/feature-gate-ffi_const.stderr diff --git a/src/test/ui/feature-gates/feature-gate-ffi_pure.rs b/tests/ui/feature-gates/feature-gate-ffi_pure.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_pure.rs rename to tests/ui/feature-gates/feature-gate-ffi_pure.rs diff --git a/src/test/ui/feature-gates/feature-gate-ffi_pure.stderr b/tests/ui/feature-gates/feature-gate-ffi_pure.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_pure.stderr rename to tests/ui/feature-gates/feature-gate-ffi_pure.stderr diff --git a/src/test/ui/feature-gates/feature-gate-ffi_returns_twice.rs b/tests/ui/feature-gates/feature-gate-ffi_returns_twice.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_returns_twice.rs rename to tests/ui/feature-gates/feature-gate-ffi_returns_twice.rs diff --git a/src/test/ui/feature-gates/feature-gate-ffi_returns_twice.stderr b/tests/ui/feature-gates/feature-gate-ffi_returns_twice.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-ffi_returns_twice.stderr rename to tests/ui/feature-gates/feature-gate-ffi_returns_twice.stderr diff --git a/src/test/ui/feature-gates/feature-gate-fn_align.rs b/tests/ui/feature-gates/feature-gate-fn_align.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-fn_align.rs rename to tests/ui/feature-gates/feature-gate-fn_align.rs diff --git a/src/test/ui/feature-gates/feature-gate-fn_align.stderr b/tests/ui/feature-gates/feature-gate-fn_align.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-fn_align.stderr rename to tests/ui/feature-gates/feature-gate-fn_align.stderr diff --git a/src/test/ui/feature-gates/feature-gate-format_args_nl.rs b/tests/ui/feature-gates/feature-gate-format_args_nl.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-format_args_nl.rs rename to tests/ui/feature-gates/feature-gate-format_args_nl.rs diff --git a/src/test/ui/feature-gates/feature-gate-format_args_nl.stderr b/tests/ui/feature-gates/feature-gate-format_args_nl.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-format_args_nl.stderr rename to tests/ui/feature-gates/feature-gate-format_args_nl.stderr diff --git a/src/test/ui/feature-gates/feature-gate-fundamental.rs b/tests/ui/feature-gates/feature-gate-fundamental.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-fundamental.rs rename to tests/ui/feature-gates/feature-gate-fundamental.rs diff --git a/src/test/ui/feature-gates/feature-gate-fundamental.stderr b/tests/ui/feature-gates/feature-gate-fundamental.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-fundamental.stderr rename to tests/ui/feature-gates/feature-gate-fundamental.stderr diff --git a/src/test/ui/feature-gates/feature-gate-generators.rs b/tests/ui/feature-gates/feature-gate-generators.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generators.rs rename to tests/ui/feature-gates/feature-gate-generators.rs diff --git a/src/test/ui/feature-gates/feature-gate-generators.stderr b/tests/ui/feature-gates/feature-gate-generators.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generators.stderr rename to tests/ui/feature-gates/feature-gate-generators.stderr diff --git a/src/test/ui/feature-gates/feature-gate-generic_arg_infer.normal.stderr b/tests/ui/feature-gates/feature-gate-generic_arg_infer.normal.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generic_arg_infer.normal.stderr rename to tests/ui/feature-gates/feature-gate-generic_arg_infer.normal.stderr diff --git a/src/test/ui/feature-gates/feature-gate-generic_arg_infer.rs b/tests/ui/feature-gates/feature-gate-generic_arg_infer.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generic_arg_infer.rs rename to tests/ui/feature-gates/feature-gate-generic_arg_infer.rs diff --git a/src/test/ui/feature-gates/feature-gate-generic_associated_types_extended.rs b/tests/ui/feature-gates/feature-gate-generic_associated_types_extended.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generic_associated_types_extended.rs rename to tests/ui/feature-gates/feature-gate-generic_associated_types_extended.rs diff --git a/src/test/ui/feature-gates/feature-gate-generic_associated_types_extended.stderr b/tests/ui/feature-gates/feature-gate-generic_associated_types_extended.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-generic_associated_types_extended.stderr rename to tests/ui/feature-gates/feature-gate-generic_associated_types_extended.stderr diff --git a/src/test/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.rs b/tests/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.rs rename to tests/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.rs diff --git a/src/test/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.stderr b/tests/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.stderr rename to tests/ui/feature-gates/feature-gate-impl_trait_in_fn_trait_return.stderr diff --git a/src/test/ui/feature-gates/feature-gate-imported_main.rs b/tests/ui/feature-gates/feature-gate-imported_main.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-imported_main.rs rename to tests/ui/feature-gates/feature-gate-imported_main.rs diff --git a/src/test/ui/feature-gates/feature-gate-imported_main.stderr b/tests/ui/feature-gates/feature-gate-imported_main.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-imported_main.stderr rename to tests/ui/feature-gates/feature-gate-imported_main.stderr diff --git a/src/test/ui/feature-gates/feature-gate-inherent_associated_types.rs b/tests/ui/feature-gates/feature-gate-inherent_associated_types.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inherent_associated_types.rs rename to tests/ui/feature-gates/feature-gate-inherent_associated_types.rs diff --git a/src/test/ui/feature-gates/feature-gate-inherent_associated_types.stderr b/tests/ui/feature-gates/feature-gate-inherent_associated_types.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inherent_associated_types.stderr rename to tests/ui/feature-gates/feature-gate-inherent_associated_types.stderr diff --git a/src/test/ui/feature-gates/feature-gate-inline_const.rs b/tests/ui/feature-gates/feature-gate-inline_const.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inline_const.rs rename to tests/ui/feature-gates/feature-gate-inline_const.rs diff --git a/src/test/ui/feature-gates/feature-gate-inline_const.stderr b/tests/ui/feature-gates/feature-gate-inline_const.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inline_const.stderr rename to tests/ui/feature-gates/feature-gate-inline_const.stderr diff --git a/src/test/ui/feature-gates/feature-gate-inline_const_pat.rs b/tests/ui/feature-gates/feature-gate-inline_const_pat.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inline_const_pat.rs rename to tests/ui/feature-gates/feature-gate-inline_const_pat.rs diff --git a/src/test/ui/feature-gates/feature-gate-inline_const_pat.stderr b/tests/ui/feature-gates/feature-gate-inline_const_pat.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-inline_const_pat.stderr rename to tests/ui/feature-gates/feature-gate-inline_const_pat.stderr diff --git a/src/test/ui/feature-gates/feature-gate-intrinsics.rs b/tests/ui/feature-gates/feature-gate-intrinsics.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-intrinsics.rs rename to tests/ui/feature-gates/feature-gate-intrinsics.rs diff --git a/src/test/ui/feature-gates/feature-gate-intrinsics.stderr b/tests/ui/feature-gates/feature-gate-intrinsics.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-intrinsics.stderr rename to tests/ui/feature-gates/feature-gate-intrinsics.stderr diff --git a/src/test/ui/feature-gates/feature-gate-is_sorted.rs b/tests/ui/feature-gates/feature-gate-is_sorted.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-is_sorted.rs rename to tests/ui/feature-gates/feature-gate-is_sorted.rs diff --git a/src/test/ui/feature-gates/feature-gate-is_sorted.stderr b/tests/ui/feature-gates/feature-gate-is_sorted.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-is_sorted.stderr rename to tests/ui/feature-gates/feature-gate-is_sorted.stderr diff --git a/src/test/ui/feature-gates/feature-gate-lang-items.rs b/tests/ui/feature-gates/feature-gate-lang-items.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-lang-items.rs rename to tests/ui/feature-gates/feature-gate-lang-items.rs diff --git a/src/test/ui/feature-gates/feature-gate-lang-items.stderr b/tests/ui/feature-gates/feature-gate-lang-items.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-lang-items.stderr rename to tests/ui/feature-gates/feature-gate-lang-items.stderr diff --git a/src/test/ui/feature-gates/feature-gate-large-assignments.rs b/tests/ui/feature-gates/feature-gate-large-assignments.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-large-assignments.rs rename to tests/ui/feature-gates/feature-gate-large-assignments.rs diff --git a/src/test/ui/feature-gates/feature-gate-large-assignments.stderr b/tests/ui/feature-gates/feature-gate-large-assignments.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-large-assignments.stderr rename to tests/ui/feature-gates/feature-gate-large-assignments.stderr diff --git a/src/test/ui/feature-gates/feature-gate-link_cfg.rs b/tests/ui/feature-gates/feature-gate-link_cfg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-link_cfg.rs rename to tests/ui/feature-gates/feature-gate-link_cfg.rs diff --git a/src/test/ui/feature-gates/feature-gate-link_cfg.stderr b/tests/ui/feature-gates/feature-gate-link_cfg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-link_cfg.stderr rename to tests/ui/feature-gates/feature-gate-link_cfg.stderr diff --git a/src/test/ui/feature-gates/feature-gate-link_llvm_intrinsics.rs b/tests/ui/feature-gates/feature-gate-link_llvm_intrinsics.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-link_llvm_intrinsics.rs rename to tests/ui/feature-gates/feature-gate-link_llvm_intrinsics.rs diff --git a/src/test/ui/feature-gates/feature-gate-link_llvm_intrinsics.stderr b/tests/ui/feature-gates/feature-gate-link_llvm_intrinsics.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-link_llvm_intrinsics.stderr rename to tests/ui/feature-gates/feature-gate-link_llvm_intrinsics.stderr diff --git a/src/test/ui/feature-gates/feature-gate-linkage.rs b/tests/ui/feature-gates/feature-gate-linkage.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-linkage.rs rename to tests/ui/feature-gates/feature-gate-linkage.rs diff --git a/src/test/ui/feature-gates/feature-gate-linkage.stderr b/tests/ui/feature-gates/feature-gate-linkage.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-linkage.stderr rename to tests/ui/feature-gates/feature-gate-linkage.stderr diff --git a/src/test/ui/feature-gates/feature-gate-lint-reasons.rs b/tests/ui/feature-gates/feature-gate-lint-reasons.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-lint-reasons.rs rename to tests/ui/feature-gates/feature-gate-lint-reasons.rs diff --git a/src/test/ui/feature-gates/feature-gate-lint-reasons.stderr b/tests/ui/feature-gates/feature-gate-lint-reasons.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-lint-reasons.stderr rename to tests/ui/feature-gates/feature-gate-lint-reasons.stderr diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax.rs b/tests/ui/feature-gates/feature-gate-log_syntax.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax.rs rename to tests/ui/feature-gates/feature-gate-log_syntax.rs diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax.stderr b/tests/ui/feature-gates/feature-gate-log_syntax.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax.stderr rename to tests/ui/feature-gates/feature-gate-log_syntax.stderr diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax.stdout b/tests/ui/feature-gates/feature-gate-log_syntax.stdout similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax.stdout rename to tests/ui/feature-gates/feature-gate-log_syntax.stdout diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax2.rs b/tests/ui/feature-gates/feature-gate-log_syntax2.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax2.rs rename to tests/ui/feature-gates/feature-gate-log_syntax2.rs diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax2.stderr b/tests/ui/feature-gates/feature-gate-log_syntax2.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax2.stderr rename to tests/ui/feature-gates/feature-gate-log_syntax2.stderr diff --git a/src/test/ui/feature-gates/feature-gate-log_syntax2.stdout b/tests/ui/feature-gates/feature-gate-log_syntax2.stdout similarity index 100% rename from src/test/ui/feature-gates/feature-gate-log_syntax2.stdout rename to tests/ui/feature-gates/feature-gate-log_syntax2.stdout diff --git a/src/test/ui/feature-gates/feature-gate-marker_trait_attr.rs b/tests/ui/feature-gates/feature-gate-marker_trait_attr.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-marker_trait_attr.rs rename to tests/ui/feature-gates/feature-gate-marker_trait_attr.rs diff --git a/src/test/ui/feature-gates/feature-gate-marker_trait_attr.stderr b/tests/ui/feature-gates/feature-gate-marker_trait_attr.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-marker_trait_attr.stderr rename to tests/ui/feature-gates/feature-gate-marker_trait_attr.stderr diff --git a/src/test/ui/feature-gates/feature-gate-may-dangle.rs b/tests/ui/feature-gates/feature-gate-may-dangle.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-may-dangle.rs rename to tests/ui/feature-gates/feature-gate-may-dangle.rs diff --git a/src/test/ui/feature-gates/feature-gate-may-dangle.stderr b/tests/ui/feature-gates/feature-gate-may-dangle.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-may-dangle.stderr rename to tests/ui/feature-gates/feature-gate-may-dangle.stderr diff --git a/src/test/ui/feature-gates/feature-gate-min_const_fn.rs b/tests/ui/feature-gates/feature-gate-min_const_fn.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-min_const_fn.rs rename to tests/ui/feature-gates/feature-gate-min_const_fn.rs diff --git a/src/test/ui/feature-gates/feature-gate-min_const_fn.stderr b/tests/ui/feature-gates/feature-gate-min_const_fn.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-min_const_fn.stderr rename to tests/ui/feature-gates/feature-gate-min_const_fn.stderr diff --git a/src/test/ui/feature-gates/feature-gate-more-qualified-paths.rs b/tests/ui/feature-gates/feature-gate-more-qualified-paths.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-more-qualified-paths.rs rename to tests/ui/feature-gates/feature-gate-more-qualified-paths.rs diff --git a/src/test/ui/feature-gates/feature-gate-more-qualified-paths.stderr b/tests/ui/feature-gates/feature-gate-more-qualified-paths.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-more-qualified-paths.stderr rename to tests/ui/feature-gates/feature-gate-more-qualified-paths.stderr diff --git a/src/test/ui/feature-gates/feature-gate-naked_functions.rs b/tests/ui/feature-gates/feature-gate-naked_functions.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-naked_functions.rs rename to tests/ui/feature-gates/feature-gate-naked_functions.rs diff --git a/src/test/ui/feature-gates/feature-gate-naked_functions.stderr b/tests/ui/feature-gates/feature-gate-naked_functions.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-naked_functions.stderr rename to tests/ui/feature-gates/feature-gate-naked_functions.stderr diff --git a/src/test/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.rs b/tests/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.rs rename to tests/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.rs diff --git a/src/test/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.stderr b/tests/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.stderr rename to tests/ui/feature-gates/feature-gate-native_link_modifiers_as_needed.stderr diff --git a/src/test/ui/feature-gates/feature-gate-needs-allocator.rs b/tests/ui/feature-gates/feature-gate-needs-allocator.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-needs-allocator.rs rename to tests/ui/feature-gates/feature-gate-needs-allocator.rs diff --git a/src/test/ui/feature-gates/feature-gate-needs-allocator.stderr b/tests/ui/feature-gates/feature-gate-needs-allocator.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-needs-allocator.stderr rename to tests/ui/feature-gates/feature-gate-needs-allocator.stderr diff --git a/src/test/ui/feature-gates/feature-gate-negate-unsigned.rs b/tests/ui/feature-gates/feature-gate-negate-unsigned.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-negate-unsigned.rs rename to tests/ui/feature-gates/feature-gate-negate-unsigned.rs diff --git a/src/test/ui/feature-gates/feature-gate-negate-unsigned.stderr b/tests/ui/feature-gates/feature-gate-negate-unsigned.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-negate-unsigned.stderr rename to tests/ui/feature-gates/feature-gate-negate-unsigned.stderr diff --git a/src/test/ui/feature-gates/feature-gate-never_type.rs b/tests/ui/feature-gates/feature-gate-never_type.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-never_type.rs rename to tests/ui/feature-gates/feature-gate-never_type.rs diff --git a/src/test/ui/feature-gates/feature-gate-never_type.stderr b/tests/ui/feature-gates/feature-gate-never_type.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-never_type.stderr rename to tests/ui/feature-gates/feature-gate-never_type.stderr diff --git a/src/test/ui/feature-gates/feature-gate-no_core.rs b/tests/ui/feature-gates/feature-gate-no_core.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_core.rs rename to tests/ui/feature-gates/feature-gate-no_core.rs diff --git a/src/test/ui/feature-gates/feature-gate-no_core.stderr b/tests/ui/feature-gates/feature-gate-no_core.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_core.stderr rename to tests/ui/feature-gates/feature-gate-no_core.stderr diff --git a/src/test/ui/feature-gates/feature-gate-no_coverage.rs b/tests/ui/feature-gates/feature-gate-no_coverage.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_coverage.rs rename to tests/ui/feature-gates/feature-gate-no_coverage.rs diff --git a/src/test/ui/feature-gates/feature-gate-no_coverage.stderr b/tests/ui/feature-gates/feature-gate-no_coverage.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_coverage.stderr rename to tests/ui/feature-gates/feature-gate-no_coverage.stderr diff --git a/src/test/ui/feature-gates/feature-gate-no_sanitize.rs b/tests/ui/feature-gates/feature-gate-no_sanitize.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_sanitize.rs rename to tests/ui/feature-gates/feature-gate-no_sanitize.rs diff --git a/src/test/ui/feature-gates/feature-gate-no_sanitize.stderr b/tests/ui/feature-gates/feature-gate-no_sanitize.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-no_sanitize.stderr rename to tests/ui/feature-gates/feature-gate-no_sanitize.stderr diff --git a/src/test/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.rs b/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.rs rename to tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.rs diff --git a/src/test/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr b/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr rename to tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr diff --git a/src/test/ui/feature-gates/feature-gate-object_safe_for_dispatch.rs b/tests/ui/feature-gates/feature-gate-object_safe_for_dispatch.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-object_safe_for_dispatch.rs rename to tests/ui/feature-gates/feature-gate-object_safe_for_dispatch.rs diff --git a/src/test/ui/feature-gates/feature-gate-object_safe_for_dispatch.stderr b/tests/ui/feature-gates/feature-gate-object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-object_safe_for_dispatch.stderr rename to tests/ui/feature-gates/feature-gate-object_safe_for_dispatch.stderr diff --git a/src/test/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.rs b/tests/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.rs rename to tests/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.rs diff --git a/src/test/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.stderr b/tests/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.stderr rename to tests/ui/feature-gates/feature-gate-omit-gdb-pretty-printer-section.stderr diff --git a/src/test/ui/feature-gates/feature-gate-optimize_attribute.rs b/tests/ui/feature-gates/feature-gate-optimize_attribute.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-optimize_attribute.rs rename to tests/ui/feature-gates/feature-gate-optimize_attribute.rs diff --git a/src/test/ui/feature-gates/feature-gate-optimize_attribute.stderr b/tests/ui/feature-gates/feature-gate-optimize_attribute.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-optimize_attribute.stderr rename to tests/ui/feature-gates/feature-gate-optimize_attribute.stderr diff --git a/src/test/ui/feature-gates/feature-gate-overlapping_marker_traits.rs b/tests/ui/feature-gates/feature-gate-overlapping_marker_traits.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-overlapping_marker_traits.rs rename to tests/ui/feature-gates/feature-gate-overlapping_marker_traits.rs diff --git a/src/test/ui/feature-gates/feature-gate-overlapping_marker_traits.stderr b/tests/ui/feature-gates/feature-gate-overlapping_marker_traits.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-overlapping_marker_traits.stderr rename to tests/ui/feature-gates/feature-gate-overlapping_marker_traits.stderr diff --git a/src/test/ui/feature-gates/feature-gate-precise_pointer_size_matching.rs b/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-precise_pointer_size_matching.rs rename to tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.rs diff --git a/src/test/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr b/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr rename to tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr diff --git a/src/test/ui/feature-gates/feature-gate-prelude_import.rs b/tests/ui/feature-gates/feature-gate-prelude_import.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-prelude_import.rs rename to tests/ui/feature-gates/feature-gate-prelude_import.rs diff --git a/src/test/ui/feature-gates/feature-gate-prelude_import.stderr b/tests/ui/feature-gates/feature-gate-prelude_import.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-prelude_import.stderr rename to tests/ui/feature-gates/feature-gate-prelude_import.stderr diff --git a/src/test/ui/feature-gates/feature-gate-profiler-runtime.rs b/tests/ui/feature-gates/feature-gate-profiler-runtime.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-profiler-runtime.rs rename to tests/ui/feature-gates/feature-gate-profiler-runtime.rs diff --git a/src/test/ui/feature-gates/feature-gate-profiler-runtime.stderr b/tests/ui/feature-gates/feature-gate-profiler-runtime.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-profiler-runtime.stderr rename to tests/ui/feature-gates/feature-gate-profiler-runtime.stderr diff --git a/src/test/ui/feature-gates/feature-gate-public_private_dependencies.rs b/tests/ui/feature-gates/feature-gate-public_private_dependencies.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-public_private_dependencies.rs rename to tests/ui/feature-gates/feature-gate-public_private_dependencies.rs diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib-2.rs b/tests/ui/feature-gates/feature-gate-raw-dylib-2.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib-2.rs rename to tests/ui/feature-gates/feature-gate-raw-dylib-2.rs diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib-2.stderr b/tests/ui/feature-gates/feature-gate-raw-dylib-2.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib-2.stderr rename to tests/ui/feature-gates/feature-gate-raw-dylib-2.stderr diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs b/tests/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs rename to tests/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr b/tests/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr rename to tests/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib.rs b/tests/ui/feature-gates/feature-gate-raw-dylib.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib.rs rename to tests/ui/feature-gates/feature-gate-raw-dylib.rs diff --git a/src/test/ui/feature-gates/feature-gate-raw-dylib.stderr b/tests/ui/feature-gates/feature-gate-raw-dylib.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-raw-dylib.stderr rename to tests/ui/feature-gates/feature-gate-raw-dylib.stderr diff --git a/src/test/ui/feature-gates/feature-gate-register_tool.rs b/tests/ui/feature-gates/feature-gate-register_tool.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-register_tool.rs rename to tests/ui/feature-gates/feature-gate-register_tool.rs diff --git a/src/test/ui/feature-gates/feature-gate-register_tool.stderr b/tests/ui/feature-gates/feature-gate-register_tool.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-register_tool.stderr rename to tests/ui/feature-gates/feature-gate-register_tool.stderr diff --git a/src/test/ui/feature-gates/feature-gate-repr-simd.rs b/tests/ui/feature-gates/feature-gate-repr-simd.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-repr-simd.rs rename to tests/ui/feature-gates/feature-gate-repr-simd.rs diff --git a/src/test/ui/feature-gates/feature-gate-repr-simd.stderr b/tests/ui/feature-gates/feature-gate-repr-simd.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-repr-simd.stderr rename to tests/ui/feature-gates/feature-gate-repr-simd.stderr diff --git a/src/test/ui/feature-gates/feature-gate-repr128.rs b/tests/ui/feature-gates/feature-gate-repr128.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-repr128.rs rename to tests/ui/feature-gates/feature-gate-repr128.rs diff --git a/src/test/ui/feature-gates/feature-gate-repr128.stderr b/tests/ui/feature-gates/feature-gate-repr128.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-repr128.stderr rename to tests/ui/feature-gates/feature-gate-repr128.stderr diff --git a/src/test/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.rs b/tests/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.rs rename to tests/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.rs diff --git a/src/test/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.stderr b/tests/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.stderr rename to tests/ui/feature-gates/feature-gate-return_position_impl_trait_in_trait.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rust_cold_cc.rs b/tests/ui/feature-gates/feature-gate-rust_cold_cc.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rust_cold_cc.rs rename to tests/ui/feature-gates/feature-gate-rust_cold_cc.rs diff --git a/src/test/ui/feature-gates/feature-gate-rust_cold_cc.stderr b/tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rust_cold_cc.stderr rename to tests/ui/feature-gates/feature-gate-rust_cold_cc.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.rs b/tests/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.rs rename to tests/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.rs diff --git a/src/test/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.stderr b/tests/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.stderr rename to tests/ui/feature-gates/feature-gate-rustc-allow-const-fn-unstable.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs b/tests/ui/feature-gates/feature-gate-rustc-attrs-1.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs rename to tests/ui/feature-gates/feature-gate-rustc-attrs-1.rs diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr b/tests/ui/feature-gates/feature-gate-rustc-attrs-1.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr rename to tests/ui/feature-gates/feature-gate-rustc-attrs-1.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs.rs b/tests/ui/feature-gates/feature-gate-rustc-attrs.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-attrs.rs rename to tests/ui/feature-gates/feature-gate-rustc-attrs.rs diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs.stderr b/tests/ui/feature-gates/feature-gate-rustc-attrs.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc-attrs.stderr rename to tests/ui/feature-gates/feature-gate-rustc-attrs.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs b/tests/ui/feature-gates/feature-gate-rustc_const_unstable.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs rename to tests/ui/feature-gates/feature-gate-rustc_const_unstable.rs diff --git a/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.stderr b/tests/ui/feature-gates/feature-gate-rustc_const_unstable.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustc_const_unstable.stderr rename to tests/ui/feature-gates/feature-gate-rustc_const_unstable.stderr diff --git a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs b/tests/ui/feature-gates/feature-gate-rustdoc_internals.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs rename to tests/ui/feature-gates/feature-gate-rustdoc_internals.rs diff --git a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr b/tests/ui/feature-gates/feature-gate-rustdoc_internals.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr rename to tests/ui/feature-gates/feature-gate-rustdoc_internals.stderr diff --git a/src/test/ui/feature-gates/feature-gate-simd-ffi.rs b/tests/ui/feature-gates/feature-gate-simd-ffi.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-simd-ffi.rs rename to tests/ui/feature-gates/feature-gate-simd-ffi.rs diff --git a/src/test/ui/feature-gates/feature-gate-simd-ffi.stderr b/tests/ui/feature-gates/feature-gate-simd-ffi.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-simd-ffi.stderr rename to tests/ui/feature-gates/feature-gate-simd-ffi.stderr diff --git a/src/test/ui/feature-gates/feature-gate-simd.rs b/tests/ui/feature-gates/feature-gate-simd.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-simd.rs rename to tests/ui/feature-gates/feature-gate-simd.rs diff --git a/src/test/ui/feature-gates/feature-gate-simd.stderr b/tests/ui/feature-gates/feature-gate-simd.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-simd.stderr rename to tests/ui/feature-gates/feature-gate-simd.stderr diff --git a/src/test/ui/feature-gates/feature-gate-staged_api.rs b/tests/ui/feature-gates/feature-gate-staged_api.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-staged_api.rs rename to tests/ui/feature-gates/feature-gate-staged_api.rs diff --git a/src/test/ui/feature-gates/feature-gate-staged_api.stderr b/tests/ui/feature-gates/feature-gate-staged_api.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-staged_api.stderr rename to tests/ui/feature-gates/feature-gate-staged_api.stderr diff --git a/src/test/ui/feature-gates/feature-gate-start.rs b/tests/ui/feature-gates/feature-gate-start.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-start.rs rename to tests/ui/feature-gates/feature-gate-start.rs diff --git a/src/test/ui/feature-gates/feature-gate-start.stderr b/tests/ui/feature-gates/feature-gate-start.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-start.stderr rename to tests/ui/feature-gates/feature-gate-start.stderr diff --git a/src/test/ui/feature-gates/feature-gate-stmt_expr_attributes.rs b/tests/ui/feature-gates/feature-gate-stmt_expr_attributes.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-stmt_expr_attributes.rs rename to tests/ui/feature-gates/feature-gate-stmt_expr_attributes.rs diff --git a/src/test/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr b/tests/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr rename to tests/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr diff --git a/src/test/ui/feature-gates/feature-gate-strict_provenance.rs b/tests/ui/feature-gates/feature-gate-strict_provenance.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-strict_provenance.rs rename to tests/ui/feature-gates/feature-gate-strict_provenance.rs diff --git a/src/test/ui/feature-gates/feature-gate-strict_provenance.stderr b/tests/ui/feature-gates/feature-gate-strict_provenance.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-strict_provenance.stderr rename to tests/ui/feature-gates/feature-gate-strict_provenance.stderr diff --git a/src/test/ui/feature-gates/feature-gate-test_unstable_lint.rs b/tests/ui/feature-gates/feature-gate-test_unstable_lint.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-test_unstable_lint.rs rename to tests/ui/feature-gates/feature-gate-test_unstable_lint.rs diff --git a/src/test/ui/feature-gates/feature-gate-test_unstable_lint.stderr b/tests/ui/feature-gates/feature-gate-test_unstable_lint.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-test_unstable_lint.stderr rename to tests/ui/feature-gates/feature-gate-test_unstable_lint.stderr diff --git a/src/test/ui/feature-gates/feature-gate-thread_local.rs b/tests/ui/feature-gates/feature-gate-thread_local.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-thread_local.rs rename to tests/ui/feature-gates/feature-gate-thread_local.rs diff --git a/src/test/ui/feature-gates/feature-gate-thread_local.stderr b/tests/ui/feature-gates/feature-gate-thread_local.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-thread_local.stderr rename to tests/ui/feature-gates/feature-gate-thread_local.stderr diff --git a/src/test/ui/feature-gates/feature-gate-trace_macros.rs b/tests/ui/feature-gates/feature-gate-trace_macros.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trace_macros.rs rename to tests/ui/feature-gates/feature-gate-trace_macros.rs diff --git a/src/test/ui/feature-gates/feature-gate-trace_macros.stderr b/tests/ui/feature-gates/feature-gate-trace_macros.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trace_macros.stderr rename to tests/ui/feature-gates/feature-gate-trace_macros.stderr diff --git a/src/test/ui/feature-gates/feature-gate-trait-alias.rs b/tests/ui/feature-gates/feature-gate-trait-alias.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trait-alias.rs rename to tests/ui/feature-gates/feature-gate-trait-alias.rs diff --git a/src/test/ui/feature-gates/feature-gate-trait-alias.stderr b/tests/ui/feature-gates/feature-gate-trait-alias.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trait-alias.stderr rename to tests/ui/feature-gates/feature-gate-trait-alias.stderr diff --git a/src/test/ui/feature-gates/feature-gate-trait_upcasting.rs b/tests/ui/feature-gates/feature-gate-trait_upcasting.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trait_upcasting.rs rename to tests/ui/feature-gates/feature-gate-trait_upcasting.rs diff --git a/src/test/ui/feature-gates/feature-gate-trait_upcasting.stderr b/tests/ui/feature-gates/feature-gate-trait_upcasting.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trait_upcasting.stderr rename to tests/ui/feature-gates/feature-gate-trait_upcasting.stderr diff --git a/src/test/ui/feature-gates/feature-gate-transparent_unions.rs b/tests/ui/feature-gates/feature-gate-transparent_unions.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-transparent_unions.rs rename to tests/ui/feature-gates/feature-gate-transparent_unions.rs diff --git a/src/test/ui/feature-gates/feature-gate-transparent_unions.stderr b/tests/ui/feature-gates/feature-gate-transparent_unions.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-transparent_unions.stderr rename to tests/ui/feature-gates/feature-gate-transparent_unions.stderr diff --git a/src/test/ui/feature-gates/feature-gate-trivial_bounds-lint.rs b/tests/ui/feature-gates/feature-gate-trivial_bounds-lint.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trivial_bounds-lint.rs rename to tests/ui/feature-gates/feature-gate-trivial_bounds-lint.rs diff --git a/src/test/ui/feature-gates/feature-gate-trivial_bounds.rs b/tests/ui/feature-gates/feature-gate-trivial_bounds.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trivial_bounds.rs rename to tests/ui/feature-gates/feature-gate-trivial_bounds.rs diff --git a/src/test/ui/feature-gates/feature-gate-trivial_bounds.stderr b/tests/ui/feature-gates/feature-gate-trivial_bounds.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-trivial_bounds.stderr rename to tests/ui/feature-gates/feature-gate-trivial_bounds.stderr diff --git a/src/test/ui/feature-gates/feature-gate-try_blocks.rs b/tests/ui/feature-gates/feature-gate-try_blocks.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-try_blocks.rs rename to tests/ui/feature-gates/feature-gate-try_blocks.rs diff --git a/src/test/ui/feature-gates/feature-gate-try_blocks.stderr b/tests/ui/feature-gates/feature-gate-try_blocks.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-try_blocks.stderr rename to tests/ui/feature-gates/feature-gate-try_blocks.stderr diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs b/tests/ui/feature-gates/feature-gate-type_alias_impl_trait.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs rename to tests/ui/feature-gates/feature-gate-type_alias_impl_trait.rs diff --git a/src/test/ui/feature-gates/feature-gate-type_ascription.rs b/tests/ui/feature-gates/feature-gate-type_ascription.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-type_ascription.rs rename to tests/ui/feature-gates/feature-gate-type_ascription.rs diff --git a/src/test/ui/feature-gates/feature-gate-type_ascription.stderr b/tests/ui/feature-gates/feature-gate-type_ascription.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-type_ascription.stderr rename to tests/ui/feature-gates/feature-gate-type_ascription.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs rename to tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.rs diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr rename to tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-method-calls.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures-method-calls.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-method-calls.rs rename to tests/ui/feature-gates/feature-gate-unboxed-closures-method-calls.rs diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-method-calls.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures-method-calls.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-method-calls.stderr rename to tests/ui/feature-gates/feature-gate-unboxed-closures-method-calls.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.rs rename to tests/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.rs diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.stderr rename to tests/ui/feature-gates/feature-gate-unboxed-closures-ufcs-calls.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures.rs b/tests/ui/feature-gates/feature-gate-unboxed-closures.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures.rs rename to tests/ui/feature-gates/feature-gate-unboxed-closures.rs diff --git a/src/test/ui/feature-gates/feature-gate-unboxed-closures.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unboxed-closures.stderr rename to tests/ui/feature-gates/feature-gate-unboxed-closures.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unix_sigpipe.rs b/tests/ui/feature-gates/feature-gate-unix_sigpipe.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unix_sigpipe.rs rename to tests/ui/feature-gates/feature-gate-unix_sigpipe.rs diff --git a/src/test/ui/feature-gates/feature-gate-unix_sigpipe.stderr b/tests/ui/feature-gates/feature-gate-unix_sigpipe.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unix_sigpipe.stderr rename to tests/ui/feature-gates/feature-gate-unix_sigpipe.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unsafe_pin_internals.rs b/tests/ui/feature-gates/feature-gate-unsafe_pin_internals.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsafe_pin_internals.rs rename to tests/ui/feature-gates/feature-gate-unsafe_pin_internals.rs diff --git a/src/test/ui/feature-gates/feature-gate-unsafe_pin_internals.stderr b/tests/ui/feature-gates/feature-gate-unsafe_pin_internals.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsafe_pin_internals.stderr rename to tests/ui/feature-gates/feature-gate-unsafe_pin_internals.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unsized_fn_params.rs b/tests/ui/feature-gates/feature-gate-unsized_fn_params.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_fn_params.rs rename to tests/ui/feature-gates/feature-gate-unsized_fn_params.rs diff --git a/src/test/ui/feature-gates/feature-gate-unsized_fn_params.stderr b/tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_fn_params.stderr rename to tests/ui/feature-gates/feature-gate-unsized_fn_params.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unsized_locals.rs b/tests/ui/feature-gates/feature-gate-unsized_locals.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_locals.rs rename to tests/ui/feature-gates/feature-gate-unsized_locals.rs diff --git a/src/test/ui/feature-gates/feature-gate-unsized_locals.stderr b/tests/ui/feature-gates/feature-gate-unsized_locals.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_locals.stderr rename to tests/ui/feature-gates/feature-gate-unsized_locals.stderr diff --git a/src/test/ui/feature-gates/feature-gate-unsized_tuple_coercion.rs b/tests/ui/feature-gates/feature-gate-unsized_tuple_coercion.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_tuple_coercion.rs rename to tests/ui/feature-gates/feature-gate-unsized_tuple_coercion.rs diff --git a/src/test/ui/feature-gates/feature-gate-unsized_tuple_coercion.stderr b/tests/ui/feature-gates/feature-gate-unsized_tuple_coercion.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-unsized_tuple_coercion.stderr rename to tests/ui/feature-gates/feature-gate-unsized_tuple_coercion.stderr diff --git a/src/test/ui/feature-gates/feature-gate-used_with_arg.rs b/tests/ui/feature-gates/feature-gate-used_with_arg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-used_with_arg.rs rename to tests/ui/feature-gates/feature-gate-used_with_arg.rs diff --git a/src/test/ui/feature-gates/feature-gate-used_with_arg.stderr b/tests/ui/feature-gates/feature-gate-used_with_arg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-used_with_arg.stderr rename to tests/ui/feature-gates/feature-gate-used_with_arg.stderr diff --git a/src/test/ui/feature-gates/feature-gate-vectorcall.rs b/tests/ui/feature-gates/feature-gate-vectorcall.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-vectorcall.rs rename to tests/ui/feature-gates/feature-gate-vectorcall.rs diff --git a/src/test/ui/feature-gates/feature-gate-vectorcall.stderr b/tests/ui/feature-gates/feature-gate-vectorcall.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-vectorcall.stderr rename to tests/ui/feature-gates/feature-gate-vectorcall.stderr diff --git a/src/test/ui/feature-gates/feature-gate-wasm_abi.rs b/tests/ui/feature-gates/feature-gate-wasm_abi.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-wasm_abi.rs rename to tests/ui/feature-gates/feature-gate-wasm_abi.rs diff --git a/src/test/ui/feature-gates/feature-gate-wasm_abi.stderr b/tests/ui/feature-gates/feature-gate-wasm_abi.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-wasm_abi.stderr rename to tests/ui/feature-gates/feature-gate-wasm_abi.stderr diff --git a/src/test/ui/feature-gates/feature-gate-with_negative_coherence.rs b/tests/ui/feature-gates/feature-gate-with_negative_coherence.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-with_negative_coherence.rs rename to tests/ui/feature-gates/feature-gate-with_negative_coherence.rs diff --git a/src/test/ui/feature-gates/feature-gate-with_negative_coherence.stderr b/tests/ui/feature-gates/feature-gate-with_negative_coherence.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-with_negative_coherence.stderr rename to tests/ui/feature-gates/feature-gate-with_negative_coherence.stderr diff --git a/src/test/ui/feature-gates/feature-gate-yeet_expr-in-cfg.rs b/tests/ui/feature-gates/feature-gate-yeet_expr-in-cfg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-yeet_expr-in-cfg.rs rename to tests/ui/feature-gates/feature-gate-yeet_expr-in-cfg.rs diff --git a/src/test/ui/feature-gates/feature-gate-yeet_expr-in-cfg.stderr b/tests/ui/feature-gates/feature-gate-yeet_expr-in-cfg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-yeet_expr-in-cfg.stderr rename to tests/ui/feature-gates/feature-gate-yeet_expr-in-cfg.stderr diff --git a/src/test/ui/feature-gates/feature-gate-yeet_expr.rs b/tests/ui/feature-gates/feature-gate-yeet_expr.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gate-yeet_expr.rs rename to tests/ui/feature-gates/feature-gate-yeet_expr.rs diff --git a/src/test/ui/feature-gates/feature-gate-yeet_expr.stderr b/tests/ui/feature-gates/feature-gate-yeet_expr.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gate-yeet_expr.stderr rename to tests/ui/feature-gates/feature-gate-yeet_expr.stderr diff --git a/src/test/ui/feature-gates/feature-gated-feature-in-macro-arg.rs b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs similarity index 100% rename from src/test/ui/feature-gates/feature-gated-feature-in-macro-arg.rs rename to tests/ui/feature-gates/feature-gated-feature-in-macro-arg.rs diff --git a/src/test/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr b/tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr similarity index 100% rename from src/test/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr rename to tests/ui/feature-gates/feature-gated-feature-in-macro-arg.stderr diff --git a/src/test/ui/feature-gates/gated-bad-feature.rs b/tests/ui/feature-gates/gated-bad-feature.rs similarity index 100% rename from src/test/ui/feature-gates/gated-bad-feature.rs rename to tests/ui/feature-gates/gated-bad-feature.rs diff --git a/src/test/ui/feature-gates/gated-bad-feature.stderr b/tests/ui/feature-gates/gated-bad-feature.stderr similarity index 100% rename from src/test/ui/feature-gates/gated-bad-feature.stderr rename to tests/ui/feature-gates/gated-bad-feature.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-bench.rs b/tests/ui/feature-gates/issue-43106-gating-of-bench.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-bench.rs rename to tests/ui/feature-gates/issue-43106-gating-of-bench.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-bench.stderr b/tests/ui/feature-gates/issue-43106-gating-of-bench.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-bench.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-bench.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs rename to tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs rename to tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr b/tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-deprecated.rs b/tests/ui/feature-gates/issue-43106-gating-of-deprecated.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-deprecated.rs rename to tests/ui/feature-gates/issue-43106-gating-of-deprecated.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive-2.rs b/tests/ui/feature-gates/issue-43106-gating-of-derive-2.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-derive-2.rs rename to tests/ui/feature-gates/issue-43106-gating-of-derive-2.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive-2.stderr b/tests/ui/feature-gates/issue-43106-gating-of-derive-2.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-derive-2.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-derive-2.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive.rs b/tests/ui/feature-gates/issue-43106-gating-of-derive.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-derive.rs rename to tests/ui/feature-gates/issue-43106-gating-of-derive.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr b/tests/ui/feature-gates/issue-43106-gating-of-derive.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-derive.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-macro_escape.rs b/tests/ui/feature-gates/issue-43106-gating-of-macro_escape.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-macro_escape.rs rename to tests/ui/feature-gates/issue-43106-gating-of-macro_escape.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-macro_escape.stderr b/tests/ui/feature-gates/issue-43106-gating-of-macro_escape.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-macro_escape.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-macro_escape.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.rs b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-macro_use.rs rename to tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs b/tests/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs rename to tests/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.stderr b/tests/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-proc_macro_derive.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-stable.rs b/tests/ui/feature-gates/issue-43106-gating-of-stable.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-stable.rs rename to tests/ui/feature-gates/issue-43106-gating-of-stable.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-stable.stderr b/tests/ui/feature-gates/issue-43106-gating-of-stable.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-stable.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-stable.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-test.rs b/tests/ui/feature-gates/issue-43106-gating-of-test.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-test.rs rename to tests/ui/feature-gates/issue-43106-gating-of-test.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-test.stderr b/tests/ui/feature-gates/issue-43106-gating-of-test.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-test.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-test.stderr diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-unstable.rs b/tests/ui/feature-gates/issue-43106-gating-of-unstable.rs similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-unstable.rs rename to tests/ui/feature-gates/issue-43106-gating-of-unstable.rs diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-unstable.stderr b/tests/ui/feature-gates/issue-43106-gating-of-unstable.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-43106-gating-of-unstable.stderr rename to tests/ui/feature-gates/issue-43106-gating-of-unstable.stderr diff --git a/src/test/ui/feature-gates/issue-49983-see-issue-0.rs b/tests/ui/feature-gates/issue-49983-see-issue-0.rs similarity index 100% rename from src/test/ui/feature-gates/issue-49983-see-issue-0.rs rename to tests/ui/feature-gates/issue-49983-see-issue-0.rs diff --git a/src/test/ui/feature-gates/issue-49983-see-issue-0.stderr b/tests/ui/feature-gates/issue-49983-see-issue-0.stderr similarity index 100% rename from src/test/ui/feature-gates/issue-49983-see-issue-0.stderr rename to tests/ui/feature-gates/issue-49983-see-issue-0.stderr diff --git a/src/test/ui/feature-gates/rustc-private.rs b/tests/ui/feature-gates/rustc-private.rs similarity index 100% rename from src/test/ui/feature-gates/rustc-private.rs rename to tests/ui/feature-gates/rustc-private.rs diff --git a/src/test/ui/feature-gates/rustc-private.stderr b/tests/ui/feature-gates/rustc-private.stderr similarity index 100% rename from src/test/ui/feature-gates/rustc-private.stderr rename to tests/ui/feature-gates/rustc-private.stderr diff --git a/src/test/ui/feature-gates/soft-syntax-gates-with-errors.rs b/tests/ui/feature-gates/soft-syntax-gates-with-errors.rs similarity index 100% rename from src/test/ui/feature-gates/soft-syntax-gates-with-errors.rs rename to tests/ui/feature-gates/soft-syntax-gates-with-errors.rs diff --git a/src/test/ui/feature-gates/soft-syntax-gates-with-errors.stderr b/tests/ui/feature-gates/soft-syntax-gates-with-errors.stderr similarity index 100% rename from src/test/ui/feature-gates/soft-syntax-gates-with-errors.stderr rename to tests/ui/feature-gates/soft-syntax-gates-with-errors.stderr diff --git a/src/test/ui/feature-gates/soft-syntax-gates-without-errors.rs b/tests/ui/feature-gates/soft-syntax-gates-without-errors.rs similarity index 100% rename from src/test/ui/feature-gates/soft-syntax-gates-without-errors.rs rename to tests/ui/feature-gates/soft-syntax-gates-without-errors.rs diff --git a/src/test/ui/feature-gates/soft-syntax-gates-without-errors.stderr b/tests/ui/feature-gates/soft-syntax-gates-without-errors.stderr similarity index 100% rename from src/test/ui/feature-gates/soft-syntax-gates-without-errors.stderr rename to tests/ui/feature-gates/soft-syntax-gates-without-errors.stderr diff --git a/src/test/ui/feature-gates/stability-attribute-consistency.rs b/tests/ui/feature-gates/stability-attribute-consistency.rs similarity index 100% rename from src/test/ui/feature-gates/stability-attribute-consistency.rs rename to tests/ui/feature-gates/stability-attribute-consistency.rs diff --git a/src/test/ui/feature-gates/stability-attribute-consistency.stderr b/tests/ui/feature-gates/stability-attribute-consistency.stderr similarity index 100% rename from src/test/ui/feature-gates/stability-attribute-consistency.stderr rename to tests/ui/feature-gates/stability-attribute-consistency.stderr diff --git a/src/test/ui/feature-gates/stable-features.rs b/tests/ui/feature-gates/stable-features.rs similarity index 100% rename from src/test/ui/feature-gates/stable-features.rs rename to tests/ui/feature-gates/stable-features.rs diff --git a/src/test/ui/feature-gates/stable-features.stderr b/tests/ui/feature-gates/stable-features.stderr similarity index 100% rename from src/test/ui/feature-gates/stable-features.stderr rename to tests/ui/feature-gates/stable-features.stderr diff --git a/src/test/ui/feature-gates/trace_macros-gate.rs b/tests/ui/feature-gates/trace_macros-gate.rs similarity index 100% rename from src/test/ui/feature-gates/trace_macros-gate.rs rename to tests/ui/feature-gates/trace_macros-gate.rs diff --git a/src/test/ui/feature-gates/trace_macros-gate.stderr b/tests/ui/feature-gates/trace_macros-gate.stderr similarity index 100% rename from src/test/ui/feature-gates/trace_macros-gate.stderr rename to tests/ui/feature-gates/trace_macros-gate.stderr diff --git a/src/test/ui/feature-gates/unknown-feature.rs b/tests/ui/feature-gates/unknown-feature.rs similarity index 100% rename from src/test/ui/feature-gates/unknown-feature.rs rename to tests/ui/feature-gates/unknown-feature.rs diff --git a/src/test/ui/feature-gates/unknown-feature.stderr b/tests/ui/feature-gates/unknown-feature.stderr similarity index 100% rename from src/test/ui/feature-gates/unknown-feature.stderr rename to tests/ui/feature-gates/unknown-feature.stderr diff --git a/src/test/ui/feature-gates/unstable-attribute-allow-issue-0.rs b/tests/ui/feature-gates/unstable-attribute-allow-issue-0.rs similarity index 100% rename from src/test/ui/feature-gates/unstable-attribute-allow-issue-0.rs rename to tests/ui/feature-gates/unstable-attribute-allow-issue-0.rs diff --git a/src/test/ui/feature-gates/unstable-attribute-allow-issue-0.stderr b/tests/ui/feature-gates/unstable-attribute-allow-issue-0.stderr similarity index 100% rename from src/test/ui/feature-gates/unstable-attribute-allow-issue-0.stderr rename to tests/ui/feature-gates/unstable-attribute-allow-issue-0.stderr diff --git a/src/test/ui/ffi_const.rs b/tests/ui/ffi_const.rs similarity index 100% rename from src/test/ui/ffi_const.rs rename to tests/ui/ffi_const.rs diff --git a/src/test/ui/ffi_const.stderr b/tests/ui/ffi_const.stderr similarity index 100% rename from src/test/ui/ffi_const.stderr rename to tests/ui/ffi_const.stderr diff --git a/src/test/ui/ffi_const2.rs b/tests/ui/ffi_const2.rs similarity index 100% rename from src/test/ui/ffi_const2.rs rename to tests/ui/ffi_const2.rs diff --git a/src/test/ui/ffi_const2.stderr b/tests/ui/ffi_const2.stderr similarity index 100% rename from src/test/ui/ffi_const2.stderr rename to tests/ui/ffi_const2.stderr diff --git a/src/test/ui/ffi_pure.rs b/tests/ui/ffi_pure.rs similarity index 100% rename from src/test/ui/ffi_pure.rs rename to tests/ui/ffi_pure.rs diff --git a/src/test/ui/ffi_pure.stderr b/tests/ui/ffi_pure.stderr similarity index 100% rename from src/test/ui/ffi_pure.stderr rename to tests/ui/ffi_pure.stderr diff --git a/src/test/ui/ffi_returns_twice.rs b/tests/ui/ffi_returns_twice.rs similarity index 100% rename from src/test/ui/ffi_returns_twice.rs rename to tests/ui/ffi_returns_twice.rs diff --git a/src/test/ui/ffi_returns_twice.stderr b/tests/ui/ffi_returns_twice.stderr similarity index 100% rename from src/test/ui/ffi_returns_twice.stderr rename to tests/ui/ffi_returns_twice.stderr diff --git a/src/test/ui/filter-block-view-items.rs b/tests/ui/filter-block-view-items.rs similarity index 100% rename from src/test/ui/filter-block-view-items.rs rename to tests/ui/filter-block-view-items.rs diff --git a/src/test/ui/fmt/auxiliary/format-string-proc-macro.rs b/tests/ui/fmt/auxiliary/format-string-proc-macro.rs similarity index 100% rename from src/test/ui/fmt/auxiliary/format-string-proc-macro.rs rename to tests/ui/fmt/auxiliary/format-string-proc-macro.rs diff --git a/src/test/ui/fmt/format-args-capture-issue-102057.rs b/tests/ui/fmt/format-args-capture-issue-102057.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-102057.rs rename to tests/ui/fmt/format-args-capture-issue-102057.rs diff --git a/src/test/ui/fmt/format-args-capture-issue-102057.stderr b/tests/ui/fmt/format-args-capture-issue-102057.stderr similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-102057.stderr rename to tests/ui/fmt/format-args-capture-issue-102057.stderr diff --git a/src/test/ui/fmt/format-args-capture-issue-93378.rs b/tests/ui/fmt/format-args-capture-issue-93378.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-93378.rs rename to tests/ui/fmt/format-args-capture-issue-93378.rs diff --git a/src/test/ui/fmt/format-args-capture-issue-93378.stderr b/tests/ui/fmt/format-args-capture-issue-93378.stderr similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-93378.stderr rename to tests/ui/fmt/format-args-capture-issue-93378.stderr diff --git a/src/test/ui/fmt/format-args-capture-issue-94010.rs b/tests/ui/fmt/format-args-capture-issue-94010.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-94010.rs rename to tests/ui/fmt/format-args-capture-issue-94010.rs diff --git a/src/test/ui/fmt/format-args-capture-issue-94010.stderr b/tests/ui/fmt/format-args-capture-issue-94010.stderr similarity index 100% rename from src/test/ui/fmt/format-args-capture-issue-94010.stderr rename to tests/ui/fmt/format-args-capture-issue-94010.stderr diff --git a/src/test/ui/fmt/format-args-capture-macro-hygiene.rs b/tests/ui/fmt/format-args-capture-macro-hygiene.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture-macro-hygiene.rs rename to tests/ui/fmt/format-args-capture-macro-hygiene.rs diff --git a/src/test/ui/fmt/format-args-capture-macro-hygiene.stderr b/tests/ui/fmt/format-args-capture-macro-hygiene.stderr similarity index 100% rename from src/test/ui/fmt/format-args-capture-macro-hygiene.stderr rename to tests/ui/fmt/format-args-capture-macro-hygiene.stderr diff --git a/src/test/ui/fmt/format-args-capture-missing-variables.rs b/tests/ui/fmt/format-args-capture-missing-variables.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture-missing-variables.rs rename to tests/ui/fmt/format-args-capture-missing-variables.rs diff --git a/src/test/ui/fmt/format-args-capture-missing-variables.stderr b/tests/ui/fmt/format-args-capture-missing-variables.stderr similarity index 100% rename from src/test/ui/fmt/format-args-capture-missing-variables.stderr rename to tests/ui/fmt/format-args-capture-missing-variables.stderr diff --git a/src/test/ui/fmt/format-args-capture.rs b/tests/ui/fmt/format-args-capture.rs similarity index 100% rename from src/test/ui/fmt/format-args-capture.rs rename to tests/ui/fmt/format-args-capture.rs diff --git a/src/test/ui/fmt/format-expanded-string.rs b/tests/ui/fmt/format-expanded-string.rs similarity index 100% rename from src/test/ui/fmt/format-expanded-string.rs rename to tests/ui/fmt/format-expanded-string.rs diff --git a/src/test/ui/fmt/format-expanded-string.stderr b/tests/ui/fmt/format-expanded-string.stderr similarity index 100% rename from src/test/ui/fmt/format-expanded-string.stderr rename to tests/ui/fmt/format-expanded-string.stderr diff --git a/src/test/ui/fmt/format-raw-string-error.rs b/tests/ui/fmt/format-raw-string-error.rs similarity index 100% rename from src/test/ui/fmt/format-raw-string-error.rs rename to tests/ui/fmt/format-raw-string-error.rs diff --git a/src/test/ui/fmt/format-raw-string-error.stderr b/tests/ui/fmt/format-raw-string-error.stderr similarity index 100% rename from src/test/ui/fmt/format-raw-string-error.stderr rename to tests/ui/fmt/format-raw-string-error.stderr diff --git a/src/test/ui/fmt/format-string-error-2.rs b/tests/ui/fmt/format-string-error-2.rs similarity index 100% rename from src/test/ui/fmt/format-string-error-2.rs rename to tests/ui/fmt/format-string-error-2.rs diff --git a/src/test/ui/fmt/format-string-error-2.stderr b/tests/ui/fmt/format-string-error-2.stderr similarity index 100% rename from src/test/ui/fmt/format-string-error-2.stderr rename to tests/ui/fmt/format-string-error-2.stderr diff --git a/src/test/ui/fmt/format-string-error.rs b/tests/ui/fmt/format-string-error.rs similarity index 100% rename from src/test/ui/fmt/format-string-error.rs rename to tests/ui/fmt/format-string-error.rs diff --git a/src/test/ui/fmt/format-string-error.stderr b/tests/ui/fmt/format-string-error.stderr similarity index 100% rename from src/test/ui/fmt/format-string-error.stderr rename to tests/ui/fmt/format-string-error.stderr diff --git a/src/test/ui/fmt/format-with-yield-point.rs b/tests/ui/fmt/format-with-yield-point.rs similarity index 100% rename from src/test/ui/fmt/format-with-yield-point.rs rename to tests/ui/fmt/format-with-yield-point.rs diff --git a/src/test/ui/fmt/ifmt-bad-arg.rs b/tests/ui/fmt/ifmt-bad-arg.rs similarity index 100% rename from src/test/ui/fmt/ifmt-bad-arg.rs rename to tests/ui/fmt/ifmt-bad-arg.rs diff --git a/src/test/ui/fmt/ifmt-bad-arg.stderr b/tests/ui/fmt/ifmt-bad-arg.stderr similarity index 100% rename from src/test/ui/fmt/ifmt-bad-arg.stderr rename to tests/ui/fmt/ifmt-bad-arg.stderr diff --git a/src/test/ui/fmt/ifmt-bad-format-args.rs b/tests/ui/fmt/ifmt-bad-format-args.rs similarity index 100% rename from src/test/ui/fmt/ifmt-bad-format-args.rs rename to tests/ui/fmt/ifmt-bad-format-args.rs diff --git a/src/test/ui/fmt/ifmt-bad-format-args.stderr b/tests/ui/fmt/ifmt-bad-format-args.stderr similarity index 100% rename from src/test/ui/fmt/ifmt-bad-format-args.stderr rename to tests/ui/fmt/ifmt-bad-format-args.stderr diff --git a/src/test/ui/fmt/ifmt-unimpl.rs b/tests/ui/fmt/ifmt-unimpl.rs similarity index 100% rename from src/test/ui/fmt/ifmt-unimpl.rs rename to tests/ui/fmt/ifmt-unimpl.rs diff --git a/src/test/ui/fmt/ifmt-unimpl.stderr b/tests/ui/fmt/ifmt-unimpl.stderr similarity index 100% rename from src/test/ui/fmt/ifmt-unimpl.stderr rename to tests/ui/fmt/ifmt-unimpl.stderr diff --git a/src/test/ui/fmt/ifmt-unknown-trait.rs b/tests/ui/fmt/ifmt-unknown-trait.rs similarity index 100% rename from src/test/ui/fmt/ifmt-unknown-trait.rs rename to tests/ui/fmt/ifmt-unknown-trait.rs diff --git a/src/test/ui/fmt/ifmt-unknown-trait.stderr b/tests/ui/fmt/ifmt-unknown-trait.stderr similarity index 100% rename from src/test/ui/fmt/ifmt-unknown-trait.stderr rename to tests/ui/fmt/ifmt-unknown-trait.stderr diff --git a/src/test/ui/fmt/incorrect-separator.rs b/tests/ui/fmt/incorrect-separator.rs similarity index 100% rename from src/test/ui/fmt/incorrect-separator.rs rename to tests/ui/fmt/incorrect-separator.rs diff --git a/src/test/ui/fmt/incorrect-separator.stderr b/tests/ui/fmt/incorrect-separator.stderr similarity index 100% rename from src/test/ui/fmt/incorrect-separator.stderr rename to tests/ui/fmt/incorrect-separator.stderr diff --git a/src/test/ui/fmt/issue-103826.rs b/tests/ui/fmt/issue-103826.rs similarity index 100% rename from src/test/ui/fmt/issue-103826.rs rename to tests/ui/fmt/issue-103826.rs diff --git a/src/test/ui/fmt/issue-103826.stderr b/tests/ui/fmt/issue-103826.stderr similarity index 100% rename from src/test/ui/fmt/issue-103826.stderr rename to tests/ui/fmt/issue-103826.stderr diff --git a/src/test/ui/fmt/issue-104142.rs b/tests/ui/fmt/issue-104142.rs similarity index 100% rename from src/test/ui/fmt/issue-104142.rs rename to tests/ui/fmt/issue-104142.rs diff --git a/src/test/ui/fmt/issue-104142.stderr b/tests/ui/fmt/issue-104142.stderr similarity index 100% rename from src/test/ui/fmt/issue-104142.stderr rename to tests/ui/fmt/issue-104142.stderr diff --git a/src/test/ui/fmt/issue-86085.rs b/tests/ui/fmt/issue-86085.rs similarity index 100% rename from src/test/ui/fmt/issue-86085.rs rename to tests/ui/fmt/issue-86085.rs diff --git a/src/test/ui/fmt/issue-86085.stderr b/tests/ui/fmt/issue-86085.stderr similarity index 100% rename from src/test/ui/fmt/issue-86085.stderr rename to tests/ui/fmt/issue-86085.stderr diff --git a/src/test/ui/fmt/issue-89173.rs b/tests/ui/fmt/issue-89173.rs similarity index 100% rename from src/test/ui/fmt/issue-89173.rs rename to tests/ui/fmt/issue-89173.rs diff --git a/src/test/ui/fmt/issue-89173.stderr b/tests/ui/fmt/issue-89173.stderr similarity index 100% rename from src/test/ui/fmt/issue-89173.stderr rename to tests/ui/fmt/issue-89173.stderr diff --git a/src/test/ui/fmt/issue-91556.rs b/tests/ui/fmt/issue-91556.rs similarity index 100% rename from src/test/ui/fmt/issue-91556.rs rename to tests/ui/fmt/issue-91556.rs diff --git a/src/test/ui/fmt/issue-91556.stderr b/tests/ui/fmt/issue-91556.stderr similarity index 100% rename from src/test/ui/fmt/issue-91556.stderr rename to tests/ui/fmt/issue-91556.stderr diff --git a/src/test/ui/fmt/respanned-literal-issue-106191.rs b/tests/ui/fmt/respanned-literal-issue-106191.rs similarity index 100% rename from src/test/ui/fmt/respanned-literal-issue-106191.rs rename to tests/ui/fmt/respanned-literal-issue-106191.rs diff --git a/src/test/ui/fmt/respanned-literal-issue-106191.stderr b/tests/ui/fmt/respanned-literal-issue-106191.stderr similarity index 100% rename from src/test/ui/fmt/respanned-literal-issue-106191.stderr rename to tests/ui/fmt/respanned-literal-issue-106191.stderr diff --git a/src/test/ui/fmt/send-sync.rs b/tests/ui/fmt/send-sync.rs similarity index 100% rename from src/test/ui/fmt/send-sync.rs rename to tests/ui/fmt/send-sync.rs diff --git a/src/test/ui/fmt/send-sync.stderr b/tests/ui/fmt/send-sync.stderr similarity index 100% rename from src/test/ui/fmt/send-sync.stderr rename to tests/ui/fmt/send-sync.stderr diff --git a/src/test/ui/fmt/struct-field-as-captured-argument.fixed b/tests/ui/fmt/struct-field-as-captured-argument.fixed similarity index 100% rename from src/test/ui/fmt/struct-field-as-captured-argument.fixed rename to tests/ui/fmt/struct-field-as-captured-argument.fixed diff --git a/src/test/ui/fmt/struct-field-as-captured-argument.rs b/tests/ui/fmt/struct-field-as-captured-argument.rs similarity index 100% rename from src/test/ui/fmt/struct-field-as-captured-argument.rs rename to tests/ui/fmt/struct-field-as-captured-argument.rs diff --git a/src/test/ui/fmt/struct-field-as-captured-argument.stderr b/tests/ui/fmt/struct-field-as-captured-argument.stderr similarity index 100% rename from src/test/ui/fmt/struct-field-as-captured-argument.stderr rename to tests/ui/fmt/struct-field-as-captured-argument.stderr diff --git a/src/test/ui/fmt/unicode-escape-spans.rs b/tests/ui/fmt/unicode-escape-spans.rs similarity index 100% rename from src/test/ui/fmt/unicode-escape-spans.rs rename to tests/ui/fmt/unicode-escape-spans.rs diff --git a/src/test/ui/fmt/unicode-escape-spans.stderr b/tests/ui/fmt/unicode-escape-spans.stderr similarity index 100% rename from src/test/ui/fmt/unicode-escape-spans.stderr rename to tests/ui/fmt/unicode-escape-spans.stderr diff --git a/src/test/ui/fn-in-pat.rs b/tests/ui/fn-in-pat.rs similarity index 100% rename from src/test/ui/fn-in-pat.rs rename to tests/ui/fn-in-pat.rs diff --git a/src/test/ui/fn-in-pat.stderr b/tests/ui/fn-in-pat.stderr similarity index 100% rename from src/test/ui/fn-in-pat.stderr rename to tests/ui/fn-in-pat.stderr diff --git a/src/test/ui/fn/bad-main.rs b/tests/ui/fn/bad-main.rs similarity index 100% rename from src/test/ui/fn/bad-main.rs rename to tests/ui/fn/bad-main.rs diff --git a/src/test/ui/fn/bad-main.stderr b/tests/ui/fn/bad-main.stderr similarity index 100% rename from src/test/ui/fn/bad-main.stderr rename to tests/ui/fn/bad-main.stderr diff --git a/src/test/ui/fn/dyn-fn-alignment.rs b/tests/ui/fn/dyn-fn-alignment.rs similarity index 100% rename from src/test/ui/fn/dyn-fn-alignment.rs rename to tests/ui/fn/dyn-fn-alignment.rs diff --git a/src/test/ui/fn/expr-fn-panic.rs b/tests/ui/fn/expr-fn-panic.rs similarity index 100% rename from src/test/ui/fn/expr-fn-panic.rs rename to tests/ui/fn/expr-fn-panic.rs diff --git a/src/test/ui/fn/expr-fn.rs b/tests/ui/fn/expr-fn.rs similarity index 100% rename from src/test/ui/fn/expr-fn.rs rename to tests/ui/fn/expr-fn.rs diff --git a/src/test/ui/fn/fn-bad-block-type.rs b/tests/ui/fn/fn-bad-block-type.rs similarity index 100% rename from src/test/ui/fn/fn-bad-block-type.rs rename to tests/ui/fn/fn-bad-block-type.rs diff --git a/src/test/ui/fn/fn-bad-block-type.stderr b/tests/ui/fn/fn-bad-block-type.stderr similarity index 100% rename from src/test/ui/fn/fn-bad-block-type.stderr rename to tests/ui/fn/fn-bad-block-type.stderr diff --git a/src/test/ui/fn/fn-closure-mutable-capture.rs b/tests/ui/fn/fn-closure-mutable-capture.rs similarity index 100% rename from src/test/ui/fn/fn-closure-mutable-capture.rs rename to tests/ui/fn/fn-closure-mutable-capture.rs diff --git a/src/test/ui/fn/fn-closure-mutable-capture.stderr b/tests/ui/fn/fn-closure-mutable-capture.stderr similarity index 100% rename from src/test/ui/fn/fn-closure-mutable-capture.stderr rename to tests/ui/fn/fn-closure-mutable-capture.stderr diff --git a/src/test/ui/fn/fn-compare-mismatch.rs b/tests/ui/fn/fn-compare-mismatch.rs similarity index 100% rename from src/test/ui/fn/fn-compare-mismatch.rs rename to tests/ui/fn/fn-compare-mismatch.rs diff --git a/src/test/ui/fn/fn-compare-mismatch.stderr b/tests/ui/fn/fn-compare-mismatch.stderr similarity index 100% rename from src/test/ui/fn/fn-compare-mismatch.stderr rename to tests/ui/fn/fn-compare-mismatch.stderr diff --git a/src/test/ui/fn/fn-item-type.rs b/tests/ui/fn/fn-item-type.rs similarity index 100% rename from src/test/ui/fn/fn-item-type.rs rename to tests/ui/fn/fn-item-type.rs diff --git a/src/test/ui/fn/fn-item-type.stderr b/tests/ui/fn/fn-item-type.stderr similarity index 100% rename from src/test/ui/fn/fn-item-type.stderr rename to tests/ui/fn/fn-item-type.stderr diff --git a/src/test/ui/fn/fn-recover-return-sign.fixed b/tests/ui/fn/fn-recover-return-sign.fixed similarity index 100% rename from src/test/ui/fn/fn-recover-return-sign.fixed rename to tests/ui/fn/fn-recover-return-sign.fixed diff --git a/src/test/ui/fn/fn-recover-return-sign.rs b/tests/ui/fn/fn-recover-return-sign.rs similarity index 100% rename from src/test/ui/fn/fn-recover-return-sign.rs rename to tests/ui/fn/fn-recover-return-sign.rs diff --git a/src/test/ui/fn/fn-recover-return-sign.stderr b/tests/ui/fn/fn-recover-return-sign.stderr similarity index 100% rename from src/test/ui/fn/fn-recover-return-sign.stderr rename to tests/ui/fn/fn-recover-return-sign.stderr diff --git a/src/test/ui/fn/fn-recover-return-sign2.rs b/tests/ui/fn/fn-recover-return-sign2.rs similarity index 100% rename from src/test/ui/fn/fn-recover-return-sign2.rs rename to tests/ui/fn/fn-recover-return-sign2.rs diff --git a/src/test/ui/fn/fn-recover-return-sign2.stderr b/tests/ui/fn/fn-recover-return-sign2.stderr similarity index 100% rename from src/test/ui/fn/fn-recover-return-sign2.stderr rename to tests/ui/fn/fn-recover-return-sign2.stderr diff --git a/src/test/ui/fn/fn-trait-formatting.rs b/tests/ui/fn/fn-trait-formatting.rs similarity index 100% rename from src/test/ui/fn/fn-trait-formatting.rs rename to tests/ui/fn/fn-trait-formatting.rs diff --git a/src/test/ui/fn/fn-trait-formatting.stderr b/tests/ui/fn/fn-trait-formatting.stderr similarity index 100% rename from src/test/ui/fn/fn-trait-formatting.stderr rename to tests/ui/fn/fn-trait-formatting.stderr diff --git a/src/test/ui/fn/fun-call-variants.rs b/tests/ui/fn/fun-call-variants.rs similarity index 100% rename from src/test/ui/fn/fun-call-variants.rs rename to tests/ui/fn/fun-call-variants.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-2.rs b/tests/ui/fn/implied-bounds-unnorm-associated-type-2.rs similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-2.rs rename to tests/ui/fn/implied-bounds-unnorm-associated-type-2.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-2.stderr b/tests/ui/fn/implied-bounds-unnorm-associated-type-2.stderr similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-2.stderr rename to tests/ui/fn/implied-bounds-unnorm-associated-type-2.stderr diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-3.rs b/tests/ui/fn/implied-bounds-unnorm-associated-type-3.rs similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-3.rs rename to tests/ui/fn/implied-bounds-unnorm-associated-type-3.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-4.rs b/tests/ui/fn/implied-bounds-unnorm-associated-type-4.rs similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-4.rs rename to tests/ui/fn/implied-bounds-unnorm-associated-type-4.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-4.stderr b/tests/ui/fn/implied-bounds-unnorm-associated-type-4.stderr similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-4.stderr rename to tests/ui/fn/implied-bounds-unnorm-associated-type-4.stderr diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-5.rs b/tests/ui/fn/implied-bounds-unnorm-associated-type-5.rs similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-5.rs rename to tests/ui/fn/implied-bounds-unnorm-associated-type-5.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type-5.stderr b/tests/ui/fn/implied-bounds-unnorm-associated-type-5.stderr similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type-5.stderr rename to tests/ui/fn/implied-bounds-unnorm-associated-type-5.stderr diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type.rs b/tests/ui/fn/implied-bounds-unnorm-associated-type.rs similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type.rs rename to tests/ui/fn/implied-bounds-unnorm-associated-type.rs diff --git a/src/test/ui/fn/implied-bounds-unnorm-associated-type.stderr b/tests/ui/fn/implied-bounds-unnorm-associated-type.stderr similarity index 100% rename from src/test/ui/fn/implied-bounds-unnorm-associated-type.stderr rename to tests/ui/fn/implied-bounds-unnorm-associated-type.stderr diff --git a/src/test/ui/fn/issue-3044.rs b/tests/ui/fn/issue-3044.rs similarity index 100% rename from src/test/ui/fn/issue-3044.rs rename to tests/ui/fn/issue-3044.rs diff --git a/src/test/ui/fn/issue-3044.stderr b/tests/ui/fn/issue-3044.stderr similarity index 100% rename from src/test/ui/fn/issue-3044.stderr rename to tests/ui/fn/issue-3044.stderr diff --git a/src/test/ui/fn/issue-3904.rs b/tests/ui/fn/issue-3904.rs similarity index 100% rename from src/test/ui/fn/issue-3904.rs rename to tests/ui/fn/issue-3904.rs diff --git a/src/test/ui/fn/issue-80179.rs b/tests/ui/fn/issue-80179.rs similarity index 100% rename from src/test/ui/fn/issue-80179.rs rename to tests/ui/fn/issue-80179.rs diff --git a/src/test/ui/fn/issue-80179.stderr b/tests/ui/fn/issue-80179.stderr similarity index 100% rename from src/test/ui/fn/issue-80179.stderr rename to tests/ui/fn/issue-80179.stderr diff --git a/src/test/ui/fn/keyword-order.rs b/tests/ui/fn/keyword-order.rs similarity index 100% rename from src/test/ui/fn/keyword-order.rs rename to tests/ui/fn/keyword-order.rs diff --git a/src/test/ui/fn/keyword-order.stderr b/tests/ui/fn/keyword-order.stderr similarity index 100% rename from src/test/ui/fn/keyword-order.stderr rename to tests/ui/fn/keyword-order.stderr diff --git a/src/test/ui/fn/nested-function-names-issue-8587.rs b/tests/ui/fn/nested-function-names-issue-8587.rs similarity index 100% rename from src/test/ui/fn/nested-function-names-issue-8587.rs rename to tests/ui/fn/nested-function-names-issue-8587.rs diff --git a/src/test/ui/fn/signature-error-reporting-under-verbose.rs b/tests/ui/fn/signature-error-reporting-under-verbose.rs similarity index 100% rename from src/test/ui/fn/signature-error-reporting-under-verbose.rs rename to tests/ui/fn/signature-error-reporting-under-verbose.rs diff --git a/src/test/ui/fn/signature-error-reporting-under-verbose.stderr b/tests/ui/fn/signature-error-reporting-under-verbose.stderr similarity index 100% rename from src/test/ui/fn/signature-error-reporting-under-verbose.stderr rename to tests/ui/fn/signature-error-reporting-under-verbose.stderr diff --git a/src/test/ui/fn/suggest-return-closure.rs b/tests/ui/fn/suggest-return-closure.rs similarity index 100% rename from src/test/ui/fn/suggest-return-closure.rs rename to tests/ui/fn/suggest-return-closure.rs diff --git a/src/test/ui/fn/suggest-return-closure.stderr b/tests/ui/fn/suggest-return-closure.stderr similarity index 100% rename from src/test/ui/fn/suggest-return-closure.stderr rename to tests/ui/fn/suggest-return-closure.stderr diff --git a/src/test/ui/fn/suggest-return-future.rs b/tests/ui/fn/suggest-return-future.rs similarity index 100% rename from src/test/ui/fn/suggest-return-future.rs rename to tests/ui/fn/suggest-return-future.rs diff --git a/src/test/ui/fn/suggest-return-future.stderr b/tests/ui/fn/suggest-return-future.stderr similarity index 100% rename from src/test/ui/fn/suggest-return-future.stderr rename to tests/ui/fn/suggest-return-future.stderr diff --git a/src/test/ui/for-loop-while/auto-loop.rs b/tests/ui/for-loop-while/auto-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/auto-loop.rs rename to tests/ui/for-loop-while/auto-loop.rs diff --git a/src/test/ui/for-loop-while/break-outside-loop.rs b/tests/ui/for-loop-while/break-outside-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/break-outside-loop.rs rename to tests/ui/for-loop-while/break-outside-loop.rs diff --git a/src/test/ui/for-loop-while/break-outside-loop.stderr b/tests/ui/for-loop-while/break-outside-loop.stderr similarity index 100% rename from src/test/ui/for-loop-while/break-outside-loop.stderr rename to tests/ui/for-loop-while/break-outside-loop.stderr diff --git a/src/test/ui/for-loop-while/break-value.rs b/tests/ui/for-loop-while/break-value.rs similarity index 100% rename from src/test/ui/for-loop-while/break-value.rs rename to tests/ui/for-loop-while/break-value.rs diff --git a/src/test/ui/for-loop-while/break-while-condition.rs b/tests/ui/for-loop-while/break-while-condition.rs similarity index 100% rename from src/test/ui/for-loop-while/break-while-condition.rs rename to tests/ui/for-loop-while/break-while-condition.rs diff --git a/src/test/ui/for-loop-while/break-while-condition.stderr b/tests/ui/for-loop-while/break-while-condition.stderr similarity index 100% rename from src/test/ui/for-loop-while/break-while-condition.stderr rename to tests/ui/for-loop-while/break-while-condition.stderr diff --git a/src/test/ui/for-loop-while/break.rs b/tests/ui/for-loop-while/break.rs similarity index 100% rename from src/test/ui/for-loop-while/break.rs rename to tests/ui/for-loop-while/break.rs diff --git a/src/test/ui/for-loop-while/cleanup-rvalue-during-if-and-while.rs b/tests/ui/for-loop-while/cleanup-rvalue-during-if-and-while.rs similarity index 100% rename from src/test/ui/for-loop-while/cleanup-rvalue-during-if-and-while.rs rename to tests/ui/for-loop-while/cleanup-rvalue-during-if-and-while.rs diff --git a/src/test/ui/for-loop-while/for-destruct.rs b/tests/ui/for-loop-while/for-destruct.rs similarity index 100% rename from src/test/ui/for-loop-while/for-destruct.rs rename to tests/ui/for-loop-while/for-destruct.rs diff --git a/src/test/ui/for-loop-while/for-loop-goofiness.rs b/tests/ui/for-loop-while/for-loop-goofiness.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-goofiness.rs rename to tests/ui/for-loop-while/for-loop-goofiness.rs diff --git a/src/test/ui/for-loop-while/for-loop-has-unit-body.rs b/tests/ui/for-loop-while/for-loop-has-unit-body.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-has-unit-body.rs rename to tests/ui/for-loop-while/for-loop-has-unit-body.rs diff --git a/src/test/ui/for-loop-while/for-loop-into-iterator.rs b/tests/ui/for-loop-while/for-loop-into-iterator.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-into-iterator.rs rename to tests/ui/for-loop-while/for-loop-into-iterator.rs diff --git a/src/test/ui/for-loop-while/for-loop-lifetime-of-unbound-values.rs b/tests/ui/for-loop-while/for-loop-lifetime-of-unbound-values.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-lifetime-of-unbound-values.rs rename to tests/ui/for-loop-while/for-loop-lifetime-of-unbound-values.rs diff --git a/src/test/ui/for-loop-while/for-loop-macro.rs b/tests/ui/for-loop-while/for-loop-macro.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-macro.rs rename to tests/ui/for-loop-while/for-loop-macro.rs diff --git a/src/test/ui/for-loop-while/for-loop-mut-ref-element.rs b/tests/ui/for-loop-while/for-loop-mut-ref-element.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-mut-ref-element.rs rename to tests/ui/for-loop-while/for-loop-mut-ref-element.rs diff --git a/src/test/ui/for-loop-while/for-loop-no-std.rs b/tests/ui/for-loop-while/for-loop-no-std.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-no-std.rs rename to tests/ui/for-loop-while/for-loop-no-std.rs diff --git a/src/test/ui/for-loop-while/for-loop-panic.rs b/tests/ui/for-loop-while/for-loop-panic.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-panic.rs rename to tests/ui/for-loop-while/for-loop-panic.rs diff --git a/src/test/ui/for-loop-while/for-loop-unconstrained-element-type-i32-fallback.rs b/tests/ui/for-loop-while/for-loop-unconstrained-element-type-i32-fallback.rs similarity index 100% rename from src/test/ui/for-loop-while/for-loop-unconstrained-element-type-i32-fallback.rs rename to tests/ui/for-loop-while/for-loop-unconstrained-element-type-i32-fallback.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators-break.rs b/tests/ui/for-loop-while/foreach-external-iterators-break.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators-break.rs rename to tests/ui/for-loop-while/foreach-external-iterators-break.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators-hashmap-break-restart.rs b/tests/ui/for-loop-while/foreach-external-iterators-hashmap-break-restart.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators-hashmap-break-restart.rs rename to tests/ui/for-loop-while/foreach-external-iterators-hashmap-break-restart.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators-hashmap.rs b/tests/ui/for-loop-while/foreach-external-iterators-hashmap.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators-hashmap.rs rename to tests/ui/for-loop-while/foreach-external-iterators-hashmap.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators-loop.rs b/tests/ui/for-loop-while/foreach-external-iterators-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators-loop.rs rename to tests/ui/for-loop-while/foreach-external-iterators-loop.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators-nested.rs b/tests/ui/for-loop-while/foreach-external-iterators-nested.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators-nested.rs rename to tests/ui/for-loop-while/foreach-external-iterators-nested.rs diff --git a/src/test/ui/for-loop-while/foreach-external-iterators.rs b/tests/ui/for-loop-while/foreach-external-iterators.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-external-iterators.rs rename to tests/ui/for-loop-while/foreach-external-iterators.rs diff --git a/src/test/ui/for-loop-while/foreach-nested.rs b/tests/ui/for-loop-while/foreach-nested.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-nested.rs rename to tests/ui/for-loop-while/foreach-nested.rs diff --git a/src/test/ui/for-loop-while/foreach-put-structured.rs b/tests/ui/for-loop-while/foreach-put-structured.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-put-structured.rs rename to tests/ui/for-loop-while/foreach-put-structured.rs diff --git a/src/test/ui/for-loop-while/foreach-simple-outer-slot.rs b/tests/ui/for-loop-while/foreach-simple-outer-slot.rs similarity index 100% rename from src/test/ui/for-loop-while/foreach-simple-outer-slot.rs rename to tests/ui/for-loop-while/foreach-simple-outer-slot.rs diff --git a/src/test/ui/for-loop-while/issue-2216.rs b/tests/ui/for-loop-while/issue-2216.rs similarity index 100% rename from src/test/ui/for-loop-while/issue-2216.rs rename to tests/ui/for-loop-while/issue-2216.rs diff --git a/src/test/ui/for-loop-while/issue-51345.rs b/tests/ui/for-loop-while/issue-51345.rs similarity index 100% rename from src/test/ui/for-loop-while/issue-51345.rs rename to tests/ui/for-loop-while/issue-51345.rs diff --git a/src/test/ui/for-loop-while/issue-69841.rs b/tests/ui/for-loop-while/issue-69841.rs similarity index 100% rename from src/test/ui/for-loop-while/issue-69841.rs rename to tests/ui/for-loop-while/issue-69841.rs diff --git a/src/test/ui/for-loop-while/label_break_value.rs b/tests/ui/for-loop-while/label_break_value.rs similarity index 100% rename from src/test/ui/for-loop-while/label_break_value.rs rename to tests/ui/for-loop-while/label_break_value.rs diff --git a/src/test/ui/for-loop-while/label_break_value_invalid.rs b/tests/ui/for-loop-while/label_break_value_invalid.rs similarity index 100% rename from src/test/ui/for-loop-while/label_break_value_invalid.rs rename to tests/ui/for-loop-while/label_break_value_invalid.rs diff --git a/src/test/ui/for-loop-while/label_break_value_invalid.stderr b/tests/ui/for-loop-while/label_break_value_invalid.stderr similarity index 100% rename from src/test/ui/for-loop-while/label_break_value_invalid.stderr rename to tests/ui/for-loop-while/label_break_value_invalid.stderr diff --git a/src/test/ui/for-loop-while/labeled-break.rs b/tests/ui/for-loop-while/labeled-break.rs similarity index 100% rename from src/test/ui/for-loop-while/labeled-break.rs rename to tests/ui/for-loop-while/labeled-break.rs diff --git a/src/test/ui/for-loop-while/linear-for-loop.rs b/tests/ui/for-loop-while/linear-for-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/linear-for-loop.rs rename to tests/ui/for-loop-while/linear-for-loop.rs diff --git a/src/test/ui/for-loop-while/liveness-assign-imm-local-after-loop.rs b/tests/ui/for-loop-while/liveness-assign-imm-local-after-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/liveness-assign-imm-local-after-loop.rs rename to tests/ui/for-loop-while/liveness-assign-imm-local-after-loop.rs diff --git a/src/test/ui/for-loop-while/liveness-loop-break.rs b/tests/ui/for-loop-while/liveness-loop-break.rs similarity index 100% rename from src/test/ui/for-loop-while/liveness-loop-break.rs rename to tests/ui/for-loop-while/liveness-loop-break.rs diff --git a/src/test/ui/for-loop-while/liveness-move-in-loop.rs b/tests/ui/for-loop-while/liveness-move-in-loop.rs similarity index 100% rename from src/test/ui/for-loop-while/liveness-move-in-loop.rs rename to tests/ui/for-loop-while/liveness-move-in-loop.rs diff --git a/src/test/ui/for-loop-while/long-while.rs b/tests/ui/for-loop-while/long-while.rs similarity index 100% rename from src/test/ui/for-loop-while/long-while.rs rename to tests/ui/for-loop-while/long-while.rs diff --git a/src/test/ui/for-loop-while/loop-break-cont-1.rs b/tests/ui/for-loop-while/loop-break-cont-1.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-break-cont-1.rs rename to tests/ui/for-loop-while/loop-break-cont-1.rs diff --git a/src/test/ui/for-loop-while/loop-break-cont.rs b/tests/ui/for-loop-while/loop-break-cont.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-break-cont.rs rename to tests/ui/for-loop-while/loop-break-cont.rs diff --git a/src/test/ui/for-loop-while/loop-break-value.rs b/tests/ui/for-loop-while/loop-break-value.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-break-value.rs rename to tests/ui/for-loop-while/loop-break-value.rs diff --git a/src/test/ui/for-loop-while/loop-diverges.rs b/tests/ui/for-loop-while/loop-diverges.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-diverges.rs rename to tests/ui/for-loop-while/loop-diverges.rs diff --git a/src/test/ui/for-loop-while/loop-label-shadowing.rs b/tests/ui/for-loop-while/loop-label-shadowing.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-label-shadowing.rs rename to tests/ui/for-loop-while/loop-label-shadowing.rs diff --git a/src/test/ui/for-loop-while/loop-labeled-break-value.rs b/tests/ui/for-loop-while/loop-labeled-break-value.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-labeled-break-value.rs rename to tests/ui/for-loop-while/loop-labeled-break-value.rs diff --git a/src/test/ui/for-loop-while/loop-no-reinit-needed-post-bot.rs b/tests/ui/for-loop-while/loop-no-reinit-needed-post-bot.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-no-reinit-needed-post-bot.rs rename to tests/ui/for-loop-while/loop-no-reinit-needed-post-bot.rs diff --git a/src/test/ui/for-loop-while/loop-scope.rs b/tests/ui/for-loop-while/loop-scope.rs similarity index 100% rename from src/test/ui/for-loop-while/loop-scope.rs rename to tests/ui/for-loop-while/loop-scope.rs diff --git a/src/test/ui/for-loop-while/while-cont.rs b/tests/ui/for-loop-while/while-cont.rs similarity index 100% rename from src/test/ui/for-loop-while/while-cont.rs rename to tests/ui/for-loop-while/while-cont.rs diff --git a/src/test/ui/for-loop-while/while-flow-graph.rs b/tests/ui/for-loop-while/while-flow-graph.rs similarity index 100% rename from src/test/ui/for-loop-while/while-flow-graph.rs rename to tests/ui/for-loop-while/while-flow-graph.rs diff --git a/src/test/ui/for-loop-while/while-label.rs b/tests/ui/for-loop-while/while-label.rs similarity index 100% rename from src/test/ui/for-loop-while/while-label.rs rename to tests/ui/for-loop-while/while-label.rs diff --git a/src/test/ui/for-loop-while/while-let-2.rs b/tests/ui/for-loop-while/while-let-2.rs similarity index 100% rename from src/test/ui/for-loop-while/while-let-2.rs rename to tests/ui/for-loop-while/while-let-2.rs diff --git a/src/test/ui/for-loop-while/while-let-2.stderr b/tests/ui/for-loop-while/while-let-2.stderr similarity index 100% rename from src/test/ui/for-loop-while/while-let-2.stderr rename to tests/ui/for-loop-while/while-let-2.stderr diff --git a/src/test/ui/for-loop-while/while-let.rs b/tests/ui/for-loop-while/while-let.rs similarity index 100% rename from src/test/ui/for-loop-while/while-let.rs rename to tests/ui/for-loop-while/while-let.rs diff --git a/src/test/ui/for-loop-while/while-loop-constraints-2.rs b/tests/ui/for-loop-while/while-loop-constraints-2.rs similarity index 100% rename from src/test/ui/for-loop-while/while-loop-constraints-2.rs rename to tests/ui/for-loop-while/while-loop-constraints-2.rs diff --git a/src/test/ui/for-loop-while/while-prelude-drop.rs b/tests/ui/for-loop-while/while-prelude-drop.rs similarity index 100% rename from src/test/ui/for-loop-while/while-prelude-drop.rs rename to tests/ui/for-loop-while/while-prelude-drop.rs diff --git a/src/test/ui/for-loop-while/while-with-break.rs b/tests/ui/for-loop-while/while-with-break.rs similarity index 100% rename from src/test/ui/for-loop-while/while-with-break.rs rename to tests/ui/for-loop-while/while-with-break.rs diff --git a/src/test/ui/for-loop-while/while.rs b/tests/ui/for-loop-while/while.rs similarity index 100% rename from src/test/ui/for-loop-while/while.rs rename to tests/ui/for-loop-while/while.rs diff --git a/src/test/ui/for/for-c-in-str.rs b/tests/ui/for/for-c-in-str.rs similarity index 100% rename from src/test/ui/for/for-c-in-str.rs rename to tests/ui/for/for-c-in-str.rs diff --git a/src/test/ui/for/for-c-in-str.stderr b/tests/ui/for/for-c-in-str.stderr similarity index 100% rename from src/test/ui/for/for-c-in-str.stderr rename to tests/ui/for/for-c-in-str.stderr diff --git a/src/test/ui/for/for-expn.rs b/tests/ui/for/for-expn.rs similarity index 100% rename from src/test/ui/for/for-expn.rs rename to tests/ui/for/for-expn.rs diff --git a/src/test/ui/for/for-expn.stderr b/tests/ui/for/for-expn.stderr similarity index 100% rename from src/test/ui/for/for-expn.stderr rename to tests/ui/for/for-expn.stderr diff --git a/src/test/ui/for/for-loop-bogosity.rs b/tests/ui/for/for-loop-bogosity.rs similarity index 100% rename from src/test/ui/for/for-loop-bogosity.rs rename to tests/ui/for/for-loop-bogosity.rs diff --git a/src/test/ui/for/for-loop-bogosity.stderr b/tests/ui/for/for-loop-bogosity.stderr similarity index 100% rename from src/test/ui/for/for-loop-bogosity.stderr rename to tests/ui/for/for-loop-bogosity.stderr diff --git a/src/test/ui/for/for-loop-refutable-pattern-error-message.rs b/tests/ui/for/for-loop-refutable-pattern-error-message.rs similarity index 100% rename from src/test/ui/for/for-loop-refutable-pattern-error-message.rs rename to tests/ui/for/for-loop-refutable-pattern-error-message.rs diff --git a/src/test/ui/for/for-loop-refutable-pattern-error-message.stderr b/tests/ui/for/for-loop-refutable-pattern-error-message.stderr similarity index 100% rename from src/test/ui/for/for-loop-refutable-pattern-error-message.stderr rename to tests/ui/for/for-loop-refutable-pattern-error-message.stderr diff --git a/src/test/ui/for/for-loop-type-error.rs b/tests/ui/for/for-loop-type-error.rs similarity index 100% rename from src/test/ui/for/for-loop-type-error.rs rename to tests/ui/for/for-loop-type-error.rs diff --git a/src/test/ui/for/for-loop-type-error.stderr b/tests/ui/for/for-loop-type-error.stderr similarity index 100% rename from src/test/ui/for/for-loop-type-error.stderr rename to tests/ui/for/for-loop-type-error.stderr diff --git a/src/test/ui/for/for-loop-unconstrained-element-type.rs b/tests/ui/for/for-loop-unconstrained-element-type.rs similarity index 100% rename from src/test/ui/for/for-loop-unconstrained-element-type.rs rename to tests/ui/for/for-loop-unconstrained-element-type.rs diff --git a/src/test/ui/for/for-loop-unconstrained-element-type.stderr b/tests/ui/for/for-loop-unconstrained-element-type.stderr similarity index 100% rename from src/test/ui/for/for-loop-unconstrained-element-type.stderr rename to tests/ui/for/for-loop-unconstrained-element-type.stderr diff --git a/src/test/ui/foreign-fn-return-lifetime.fixed b/tests/ui/foreign-fn-return-lifetime.fixed similarity index 100% rename from src/test/ui/foreign-fn-return-lifetime.fixed rename to tests/ui/foreign-fn-return-lifetime.fixed diff --git a/src/test/ui/foreign-fn-return-lifetime.rs b/tests/ui/foreign-fn-return-lifetime.rs similarity index 100% rename from src/test/ui/foreign-fn-return-lifetime.rs rename to tests/ui/foreign-fn-return-lifetime.rs diff --git a/src/test/ui/foreign-fn-return-lifetime.stderr b/tests/ui/foreign-fn-return-lifetime.stderr similarity index 100% rename from src/test/ui/foreign-fn-return-lifetime.stderr rename to tests/ui/foreign-fn-return-lifetime.stderr diff --git a/src/test/ui/foreign-unsafe-fn-called.mir.stderr b/tests/ui/foreign-unsafe-fn-called.mir.stderr similarity index 100% rename from src/test/ui/foreign-unsafe-fn-called.mir.stderr rename to tests/ui/foreign-unsafe-fn-called.mir.stderr diff --git a/src/test/ui/foreign-unsafe-fn-called.rs b/tests/ui/foreign-unsafe-fn-called.rs similarity index 100% rename from src/test/ui/foreign-unsafe-fn-called.rs rename to tests/ui/foreign-unsafe-fn-called.rs diff --git a/src/test/ui/foreign-unsafe-fn-called.thir.stderr b/tests/ui/foreign-unsafe-fn-called.thir.stderr similarity index 100% rename from src/test/ui/foreign-unsafe-fn-called.thir.stderr rename to tests/ui/foreign-unsafe-fn-called.thir.stderr diff --git a/src/test/ui/foreign/auxiliary/fn-abi.rs b/tests/ui/foreign/auxiliary/fn-abi.rs similarity index 100% rename from src/test/ui/foreign/auxiliary/fn-abi.rs rename to tests/ui/foreign/auxiliary/fn-abi.rs diff --git a/src/test/ui/foreign/foreign-fn-linkname.rs b/tests/ui/foreign/foreign-fn-linkname.rs similarity index 100% rename from src/test/ui/foreign/foreign-fn-linkname.rs rename to tests/ui/foreign/foreign-fn-linkname.rs diff --git a/src/test/ui/foreign/foreign-int-types.rs b/tests/ui/foreign/foreign-int-types.rs similarity index 100% rename from src/test/ui/foreign/foreign-int-types.rs rename to tests/ui/foreign/foreign-int-types.rs diff --git a/src/test/ui/foreign/foreign-mod-src/compiletest-ignore-dir b/tests/ui/foreign/foreign-mod-src/compiletest-ignore-dir similarity index 100% rename from src/test/ui/foreign/foreign-mod-src/compiletest-ignore-dir rename to tests/ui/foreign/foreign-mod-src/compiletest-ignore-dir diff --git a/src/test/ui/foreign/foreign-mod-src/inner.rs b/tests/ui/foreign/foreign-mod-src/inner.rs similarity index 100% rename from src/test/ui/foreign/foreign-mod-src/inner.rs rename to tests/ui/foreign/foreign-mod-src/inner.rs diff --git a/src/test/ui/foreign/foreign-mod-unused-const.rs b/tests/ui/foreign/foreign-mod-unused-const.rs similarity index 100% rename from src/test/ui/foreign/foreign-mod-unused-const.rs rename to tests/ui/foreign/foreign-mod-unused-const.rs diff --git a/src/test/ui/foreign/foreign-pub-super.rs b/tests/ui/foreign/foreign-pub-super.rs similarity index 100% rename from src/test/ui/foreign/foreign-pub-super.rs rename to tests/ui/foreign/foreign-pub-super.rs diff --git a/src/test/ui/foreign/foreign-src/compiletest-ignore-dir b/tests/ui/foreign/foreign-src/compiletest-ignore-dir similarity index 100% rename from src/test/ui/foreign/foreign-src/compiletest-ignore-dir rename to tests/ui/foreign/foreign-src/compiletest-ignore-dir diff --git a/src/test/ui/foreign/foreign-src/foreign.rs b/tests/ui/foreign/foreign-src/foreign.rs similarity index 100% rename from src/test/ui/foreign/foreign-src/foreign.rs rename to tests/ui/foreign/foreign-src/foreign.rs diff --git a/src/test/ui/foreign/foreign-truncated-arguments.rs b/tests/ui/foreign/foreign-truncated-arguments.rs similarity index 100% rename from src/test/ui/foreign/foreign-truncated-arguments.rs rename to tests/ui/foreign/foreign-truncated-arguments.rs diff --git a/src/test/ui/foreign/foreign2.rs b/tests/ui/foreign/foreign2.rs similarity index 100% rename from src/test/ui/foreign/foreign2.rs rename to tests/ui/foreign/foreign2.rs diff --git a/src/test/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs b/tests/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs similarity index 100% rename from src/test/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs rename to tests/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.rs diff --git a/src/test/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.stderr b/tests/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.stderr similarity index 100% rename from src/test/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.stderr rename to tests/ui/foreign/issue-74120-lowering-of-ffi-block-bodies.stderr diff --git a/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs b/tests/ui/foreign/issue-91370-foreign-fn-block-impl.rs similarity index 100% rename from src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs rename to tests/ui/foreign/issue-91370-foreign-fn-block-impl.rs diff --git a/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr b/tests/ui/foreign/issue-91370-foreign-fn-block-impl.stderr similarity index 100% rename from src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr rename to tests/ui/foreign/issue-91370-foreign-fn-block-impl.stderr diff --git a/src/test/ui/foreign/issue-99276-same-type-lifetimes.rs b/tests/ui/foreign/issue-99276-same-type-lifetimes.rs similarity index 100% rename from src/test/ui/foreign/issue-99276-same-type-lifetimes.rs rename to tests/ui/foreign/issue-99276-same-type-lifetimes.rs diff --git a/src/test/ui/foreign/nil-decl-in-foreign.rs b/tests/ui/foreign/nil-decl-in-foreign.rs similarity index 100% rename from src/test/ui/foreign/nil-decl-in-foreign.rs rename to tests/ui/foreign/nil-decl-in-foreign.rs diff --git a/src/test/ui/format-no-std.rs b/tests/ui/format-no-std.rs similarity index 100% rename from src/test/ui/format-no-std.rs rename to tests/ui/format-no-std.rs diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name1.rs b/tests/ui/fully-qualified-type/fully-qualified-type-name1.rs similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name1.rs rename to tests/ui/fully-qualified-type/fully-qualified-type-name1.rs diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name1.stderr b/tests/ui/fully-qualified-type/fully-qualified-type-name1.stderr similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name1.stderr rename to tests/ui/fully-qualified-type/fully-qualified-type-name1.stderr diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name2.rs b/tests/ui/fully-qualified-type/fully-qualified-type-name2.rs similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name2.rs rename to tests/ui/fully-qualified-type/fully-qualified-type-name2.rs diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name2.stderr b/tests/ui/fully-qualified-type/fully-qualified-type-name2.stderr similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name2.stderr rename to tests/ui/fully-qualified-type/fully-qualified-type-name2.stderr diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name4.rs b/tests/ui/fully-qualified-type/fully-qualified-type-name4.rs similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name4.rs rename to tests/ui/fully-qualified-type/fully-qualified-type-name4.rs diff --git a/src/test/ui/fully-qualified-type/fully-qualified-type-name4.stderr b/tests/ui/fully-qualified-type/fully-qualified-type-name4.stderr similarity index 100% rename from src/test/ui/fully-qualified-type/fully-qualified-type-name4.stderr rename to tests/ui/fully-qualified-type/fully-qualified-type-name4.stderr diff --git a/src/test/ui/fun-indirect-call.rs b/tests/ui/fun-indirect-call.rs similarity index 100% rename from src/test/ui/fun-indirect-call.rs rename to tests/ui/fun-indirect-call.rs diff --git a/src/test/ui/function-pointer/function-pointer-comparison-issue-54685.rs b/tests/ui/function-pointer/function-pointer-comparison-issue-54685.rs similarity index 100% rename from src/test/ui/function-pointer/function-pointer-comparison-issue-54685.rs rename to tests/ui/function-pointer/function-pointer-comparison-issue-54685.rs diff --git a/src/test/ui/function-pointer/issue-102289.rs b/tests/ui/function-pointer/issue-102289.rs similarity index 100% rename from src/test/ui/function-pointer/issue-102289.rs rename to tests/ui/function-pointer/issue-102289.rs diff --git a/src/test/ui/function-pointer/sized-ret-with-binder.rs b/tests/ui/function-pointer/sized-ret-with-binder.rs similarity index 100% rename from src/test/ui/function-pointer/sized-ret-with-binder.rs rename to tests/ui/function-pointer/sized-ret-with-binder.rs diff --git a/src/test/ui/function-pointer/unsized-ret.rs b/tests/ui/function-pointer/unsized-ret.rs similarity index 100% rename from src/test/ui/function-pointer/unsized-ret.rs rename to tests/ui/function-pointer/unsized-ret.rs diff --git a/src/test/ui/function-pointer/unsized-ret.stderr b/tests/ui/function-pointer/unsized-ret.stderr similarity index 100% rename from src/test/ui/function-pointer/unsized-ret.stderr rename to tests/ui/function-pointer/unsized-ret.stderr diff --git a/src/test/ui/functional-struct-update/functional-struct-update-noncopyable.rs b/tests/ui/functional-struct-update/functional-struct-update-noncopyable.rs similarity index 100% rename from src/test/ui/functional-struct-update/functional-struct-update-noncopyable.rs rename to tests/ui/functional-struct-update/functional-struct-update-noncopyable.rs diff --git a/src/test/ui/functional-struct-update/functional-struct-update-noncopyable.stderr b/tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr similarity index 100% rename from src/test/ui/functional-struct-update/functional-struct-update-noncopyable.stderr rename to tests/ui/functional-struct-update/functional-struct-update-noncopyable.stderr diff --git a/src/test/ui/functional-struct-update/functional-struct-update-respects-privacy.rs b/tests/ui/functional-struct-update/functional-struct-update-respects-privacy.rs similarity index 100% rename from src/test/ui/functional-struct-update/functional-struct-update-respects-privacy.rs rename to tests/ui/functional-struct-update/functional-struct-update-respects-privacy.rs diff --git a/src/test/ui/functional-struct-update/functional-struct-update-respects-privacy.stderr b/tests/ui/functional-struct-update/functional-struct-update-respects-privacy.stderr similarity index 100% rename from src/test/ui/functional-struct-update/functional-struct-update-respects-privacy.stderr rename to tests/ui/functional-struct-update/functional-struct-update-respects-privacy.stderr diff --git a/src/test/ui/functions-closures/auxiliary/fn-abi.rs b/tests/ui/functions-closures/auxiliary/fn-abi.rs similarity index 100% rename from src/test/ui/functions-closures/auxiliary/fn-abi.rs rename to tests/ui/functions-closures/auxiliary/fn-abi.rs diff --git a/src/test/ui/functions-closures/call-closure-from-overloaded-op.rs b/tests/ui/functions-closures/call-closure-from-overloaded-op.rs similarity index 100% rename from src/test/ui/functions-closures/call-closure-from-overloaded-op.rs rename to tests/ui/functions-closures/call-closure-from-overloaded-op.rs diff --git a/src/test/ui/functions-closures/capture-clauses-boxed-closures.rs b/tests/ui/functions-closures/capture-clauses-boxed-closures.rs similarity index 100% rename from src/test/ui/functions-closures/capture-clauses-boxed-closures.rs rename to tests/ui/functions-closures/capture-clauses-boxed-closures.rs diff --git a/src/test/ui/functions-closures/capture-clauses-unboxed-closures.rs b/tests/ui/functions-closures/capture-clauses-unboxed-closures.rs similarity index 100% rename from src/test/ui/functions-closures/capture-clauses-unboxed-closures.rs rename to tests/ui/functions-closures/capture-clauses-unboxed-closures.rs diff --git a/src/test/ui/functions-closures/clone-closure.rs b/tests/ui/functions-closures/clone-closure.rs similarity index 100% rename from src/test/ui/functions-closures/clone-closure.rs rename to tests/ui/functions-closures/clone-closure.rs diff --git a/src/test/ui/functions-closures/closure-bounds-can-capture-chan.rs b/tests/ui/functions-closures/closure-bounds-can-capture-chan.rs similarity index 100% rename from src/test/ui/functions-closures/closure-bounds-can-capture-chan.rs rename to tests/ui/functions-closures/closure-bounds-can-capture-chan.rs diff --git a/src/test/ui/functions-closures/closure-expected-type/README.md b/tests/ui/functions-closures/closure-expected-type/README.md similarity index 100% rename from src/test/ui/functions-closures/closure-expected-type/README.md rename to tests/ui/functions-closures/closure-expected-type/README.md diff --git a/src/test/ui/functions-closures/closure-expected-type/expect-infer-supply-two-infers.rs b/tests/ui/functions-closures/closure-expected-type/expect-infer-supply-two-infers.rs similarity index 100% rename from src/test/ui/functions-closures/closure-expected-type/expect-infer-supply-two-infers.rs rename to tests/ui/functions-closures/closure-expected-type/expect-infer-supply-two-infers.rs diff --git a/src/test/ui/functions-closures/closure-expected-type/issue-38714.rs b/tests/ui/functions-closures/closure-expected-type/issue-38714.rs similarity index 100% rename from src/test/ui/functions-closures/closure-expected-type/issue-38714.rs rename to tests/ui/functions-closures/closure-expected-type/issue-38714.rs diff --git a/src/test/ui/functions-closures/closure-expected-type/supply-just-return-type.rs b/tests/ui/functions-closures/closure-expected-type/supply-just-return-type.rs similarity index 100% rename from src/test/ui/functions-closures/closure-expected-type/supply-just-return-type.rs rename to tests/ui/functions-closures/closure-expected-type/supply-just-return-type.rs diff --git a/src/test/ui/functions-closures/closure-expected-type/supply-nothing.rs b/tests/ui/functions-closures/closure-expected-type/supply-nothing.rs similarity index 100% rename from src/test/ui/functions-closures/closure-expected-type/supply-nothing.rs rename to tests/ui/functions-closures/closure-expected-type/supply-nothing.rs diff --git a/src/test/ui/functions-closures/closure-immediate.rs b/tests/ui/functions-closures/closure-immediate.rs similarity index 100% rename from src/test/ui/functions-closures/closure-immediate.rs rename to tests/ui/functions-closures/closure-immediate.rs diff --git a/src/test/ui/functions-closures/closure-inference.rs b/tests/ui/functions-closures/closure-inference.rs similarity index 100% rename from src/test/ui/functions-closures/closure-inference.rs rename to tests/ui/functions-closures/closure-inference.rs diff --git a/src/test/ui/functions-closures/closure-inference2.rs b/tests/ui/functions-closures/closure-inference2.rs similarity index 100% rename from src/test/ui/functions-closures/closure-inference2.rs rename to tests/ui/functions-closures/closure-inference2.rs diff --git a/src/test/ui/functions-closures/closure-reform.rs b/tests/ui/functions-closures/closure-reform.rs similarity index 100% rename from src/test/ui/functions-closures/closure-reform.rs rename to tests/ui/functions-closures/closure-reform.rs diff --git a/src/test/ui/functions-closures/closure-returning-closure.rs b/tests/ui/functions-closures/closure-returning-closure.rs similarity index 100% rename from src/test/ui/functions-closures/closure-returning-closure.rs rename to tests/ui/functions-closures/closure-returning-closure.rs diff --git a/src/test/ui/functions-closures/closure-to-fn-coercion.rs b/tests/ui/functions-closures/closure-to-fn-coercion.rs similarity index 100% rename from src/test/ui/functions-closures/closure-to-fn-coercion.rs rename to tests/ui/functions-closures/closure-to-fn-coercion.rs diff --git a/src/test/ui/functions-closures/closure_to_fn_coercion-expected-types.rs b/tests/ui/functions-closures/closure_to_fn_coercion-expected-types.rs similarity index 100% rename from src/test/ui/functions-closures/closure_to_fn_coercion-expected-types.rs rename to tests/ui/functions-closures/closure_to_fn_coercion-expected-types.rs diff --git a/src/test/ui/functions-closures/copy-closure.rs b/tests/ui/functions-closures/copy-closure.rs similarity index 100% rename from src/test/ui/functions-closures/copy-closure.rs rename to tests/ui/functions-closures/copy-closure.rs diff --git a/src/test/ui/functions-closures/fn-abi.rs b/tests/ui/functions-closures/fn-abi.rs similarity index 100% rename from src/test/ui/functions-closures/fn-abi.rs rename to tests/ui/functions-closures/fn-abi.rs diff --git a/src/test/ui/functions-closures/fn-bare-assign.rs b/tests/ui/functions-closures/fn-bare-assign.rs similarity index 100% rename from src/test/ui/functions-closures/fn-bare-assign.rs rename to tests/ui/functions-closures/fn-bare-assign.rs diff --git a/src/test/ui/functions-closures/fn-bare-coerce-to-block.rs b/tests/ui/functions-closures/fn-bare-coerce-to-block.rs similarity index 100% rename from src/test/ui/functions-closures/fn-bare-coerce-to-block.rs rename to tests/ui/functions-closures/fn-bare-coerce-to-block.rs diff --git a/src/test/ui/functions-closures/fn-bare-item.rs b/tests/ui/functions-closures/fn-bare-item.rs similarity index 100% rename from src/test/ui/functions-closures/fn-bare-item.rs rename to tests/ui/functions-closures/fn-bare-item.rs diff --git a/src/test/ui/functions-closures/fn-bare-size.rs b/tests/ui/functions-closures/fn-bare-size.rs similarity index 100% rename from src/test/ui/functions-closures/fn-bare-size.rs rename to tests/ui/functions-closures/fn-bare-size.rs diff --git a/src/test/ui/functions-closures/fn-bare-spawn.rs b/tests/ui/functions-closures/fn-bare-spawn.rs similarity index 100% rename from src/test/ui/functions-closures/fn-bare-spawn.rs rename to tests/ui/functions-closures/fn-bare-spawn.rs diff --git a/src/test/ui/functions-closures/fn-coerce-field.rs b/tests/ui/functions-closures/fn-coerce-field.rs similarity index 100% rename from src/test/ui/functions-closures/fn-coerce-field.rs rename to tests/ui/functions-closures/fn-coerce-field.rs diff --git a/src/test/ui/functions-closures/fn-help-with-err-generic-is-not-function.rs b/tests/ui/functions-closures/fn-help-with-err-generic-is-not-function.rs similarity index 100% rename from src/test/ui/functions-closures/fn-help-with-err-generic-is-not-function.rs rename to tests/ui/functions-closures/fn-help-with-err-generic-is-not-function.rs diff --git a/src/test/ui/functions-closures/fn-help-with-err-generic-is-not-function.stderr b/tests/ui/functions-closures/fn-help-with-err-generic-is-not-function.stderr similarity index 100% rename from src/test/ui/functions-closures/fn-help-with-err-generic-is-not-function.stderr rename to tests/ui/functions-closures/fn-help-with-err-generic-is-not-function.stderr diff --git a/src/test/ui/functions-closures/fn-help-with-err.rs b/tests/ui/functions-closures/fn-help-with-err.rs similarity index 100% rename from src/test/ui/functions-closures/fn-help-with-err.rs rename to tests/ui/functions-closures/fn-help-with-err.rs diff --git a/src/test/ui/functions-closures/fn-help-with-err.stderr b/tests/ui/functions-closures/fn-help-with-err.stderr similarity index 100% rename from src/test/ui/functions-closures/fn-help-with-err.stderr rename to tests/ui/functions-closures/fn-help-with-err.stderr diff --git a/src/test/ui/functions-closures/fn-item-type-cast.rs b/tests/ui/functions-closures/fn-item-type-cast.rs similarity index 100% rename from src/test/ui/functions-closures/fn-item-type-cast.rs rename to tests/ui/functions-closures/fn-item-type-cast.rs diff --git a/src/test/ui/functions-closures/fn-item-type-coerce.rs b/tests/ui/functions-closures/fn-item-type-coerce.rs similarity index 100% rename from src/test/ui/functions-closures/fn-item-type-coerce.rs rename to tests/ui/functions-closures/fn-item-type-coerce.rs diff --git a/src/test/ui/functions-closures/fn-item-type-zero-sized.rs b/tests/ui/functions-closures/fn-item-type-zero-sized.rs similarity index 100% rename from src/test/ui/functions-closures/fn-item-type-zero-sized.rs rename to tests/ui/functions-closures/fn-item-type-zero-sized.rs diff --git a/src/test/ui/functions-closures/fn-lval.rs b/tests/ui/functions-closures/fn-lval.rs similarity index 100% rename from src/test/ui/functions-closures/fn-lval.rs rename to tests/ui/functions-closures/fn-lval.rs diff --git a/src/test/ui/functions-closures/fn-type-infer.rs b/tests/ui/functions-closures/fn-type-infer.rs similarity index 100% rename from src/test/ui/functions-closures/fn-type-infer.rs rename to tests/ui/functions-closures/fn-type-infer.rs diff --git a/src/test/ui/functions-closures/implied-bounds-closure-arg-outlives.rs b/tests/ui/functions-closures/implied-bounds-closure-arg-outlives.rs similarity index 100% rename from src/test/ui/functions-closures/implied-bounds-closure-arg-outlives.rs rename to tests/ui/functions-closures/implied-bounds-closure-arg-outlives.rs diff --git a/src/test/ui/functions-closures/nullable-pointer-opt-closures.rs b/tests/ui/functions-closures/nullable-pointer-opt-closures.rs similarity index 100% rename from src/test/ui/functions-closures/nullable-pointer-opt-closures.rs rename to tests/ui/functions-closures/nullable-pointer-opt-closures.rs diff --git a/src/test/ui/functions-closures/parallel-codegen-closures.rs b/tests/ui/functions-closures/parallel-codegen-closures.rs similarity index 100% rename from src/test/ui/functions-closures/parallel-codegen-closures.rs rename to tests/ui/functions-closures/parallel-codegen-closures.rs diff --git a/src/test/ui/functions-closures/return-from-closure.rs b/tests/ui/functions-closures/return-from-closure.rs similarity index 100% rename from src/test/ui/functions-closures/return-from-closure.rs rename to tests/ui/functions-closures/return-from-closure.rs diff --git a/src/test/ui/future-incompatible-lint-group.rs b/tests/ui/future-incompatible-lint-group.rs similarity index 100% rename from src/test/ui/future-incompatible-lint-group.rs rename to tests/ui/future-incompatible-lint-group.rs diff --git a/src/test/ui/future-incompatible-lint-group.stderr b/tests/ui/future-incompatible-lint-group.stderr similarity index 100% rename from src/test/ui/future-incompatible-lint-group.stderr rename to tests/ui/future-incompatible-lint-group.stderr diff --git a/src/test/ui/generator/addassign-yield.rs b/tests/ui/generator/addassign-yield.rs similarity index 100% rename from src/test/ui/generator/addassign-yield.rs rename to tests/ui/generator/addassign-yield.rs diff --git a/src/test/ui/generator/async-generator-issue-67158.rs b/tests/ui/generator/async-generator-issue-67158.rs similarity index 100% rename from src/test/ui/generator/async-generator-issue-67158.rs rename to tests/ui/generator/async-generator-issue-67158.rs diff --git a/src/test/ui/generator/async-generator-issue-67158.stderr b/tests/ui/generator/async-generator-issue-67158.stderr similarity index 100% rename from src/test/ui/generator/async-generator-issue-67158.stderr rename to tests/ui/generator/async-generator-issue-67158.stderr diff --git a/src/test/ui/generator/auto-trait-regions.rs b/tests/ui/generator/auto-trait-regions.rs similarity index 100% rename from src/test/ui/generator/auto-trait-regions.rs rename to tests/ui/generator/auto-trait-regions.rs diff --git a/src/test/ui/generator/auto-trait-regions.stderr b/tests/ui/generator/auto-trait-regions.stderr similarity index 100% rename from src/test/ui/generator/auto-trait-regions.stderr rename to tests/ui/generator/auto-trait-regions.stderr diff --git a/src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs b/tests/ui/generator/auxiliary/metadata-sufficient-for-layout.rs similarity index 100% rename from src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs rename to tests/ui/generator/auxiliary/metadata-sufficient-for-layout.rs diff --git a/src/test/ui/generator/auxiliary/xcrate-reachable.rs b/tests/ui/generator/auxiliary/xcrate-reachable.rs similarity index 100% rename from src/test/ui/generator/auxiliary/xcrate-reachable.rs rename to tests/ui/generator/auxiliary/xcrate-reachable.rs diff --git a/src/test/ui/generator/auxiliary/xcrate.rs b/tests/ui/generator/auxiliary/xcrate.rs similarity index 100% rename from src/test/ui/generator/auxiliary/xcrate.rs rename to tests/ui/generator/auxiliary/xcrate.rs diff --git a/src/test/ui/generator/borrow-in-tail-expr.rs b/tests/ui/generator/borrow-in-tail-expr.rs similarity index 100% rename from src/test/ui/generator/borrow-in-tail-expr.rs rename to tests/ui/generator/borrow-in-tail-expr.rs diff --git a/src/test/ui/generator/borrowing.rs b/tests/ui/generator/borrowing.rs similarity index 100% rename from src/test/ui/generator/borrowing.rs rename to tests/ui/generator/borrowing.rs diff --git a/src/test/ui/generator/borrowing.stderr b/tests/ui/generator/borrowing.stderr similarity index 100% rename from src/test/ui/generator/borrowing.stderr rename to tests/ui/generator/borrowing.stderr diff --git a/src/test/ui/generator/clone-impl-async.rs b/tests/ui/generator/clone-impl-async.rs similarity index 100% rename from src/test/ui/generator/clone-impl-async.rs rename to tests/ui/generator/clone-impl-async.rs diff --git a/src/test/ui/generator/clone-impl-async.stderr b/tests/ui/generator/clone-impl-async.stderr similarity index 100% rename from src/test/ui/generator/clone-impl-async.stderr rename to tests/ui/generator/clone-impl-async.stderr diff --git a/src/test/ui/generator/clone-impl-static.rs b/tests/ui/generator/clone-impl-static.rs similarity index 100% rename from src/test/ui/generator/clone-impl-static.rs rename to tests/ui/generator/clone-impl-static.rs diff --git a/src/test/ui/generator/clone-impl-static.stderr b/tests/ui/generator/clone-impl-static.stderr similarity index 100% rename from src/test/ui/generator/clone-impl-static.stderr rename to tests/ui/generator/clone-impl-static.stderr diff --git a/src/test/ui/generator/clone-impl.rs b/tests/ui/generator/clone-impl.rs similarity index 100% rename from src/test/ui/generator/clone-impl.rs rename to tests/ui/generator/clone-impl.rs diff --git a/src/test/ui/generator/clone-impl.stderr b/tests/ui/generator/clone-impl.stderr similarity index 100% rename from src/test/ui/generator/clone-impl.stderr rename to tests/ui/generator/clone-impl.stderr diff --git a/src/test/ui/generator/conditional-drop.rs b/tests/ui/generator/conditional-drop.rs similarity index 100% rename from src/test/ui/generator/conditional-drop.rs rename to tests/ui/generator/conditional-drop.rs diff --git a/src/test/ui/generator/control-flow.rs b/tests/ui/generator/control-flow.rs similarity index 100% rename from src/test/ui/generator/control-flow.rs rename to tests/ui/generator/control-flow.rs diff --git a/src/test/ui/generator/derived-drop-parent-expr.rs b/tests/ui/generator/derived-drop-parent-expr.rs similarity index 100% rename from src/test/ui/generator/derived-drop-parent-expr.rs rename to tests/ui/generator/derived-drop-parent-expr.rs diff --git a/src/test/ui/generator/discriminant.rs b/tests/ui/generator/discriminant.rs similarity index 100% rename from src/test/ui/generator/discriminant.rs rename to tests/ui/generator/discriminant.rs diff --git a/src/test/ui/generator/drop-and-replace.rs b/tests/ui/generator/drop-and-replace.rs similarity index 100% rename from src/test/ui/generator/drop-and-replace.rs rename to tests/ui/generator/drop-and-replace.rs diff --git a/src/test/ui/generator/drop-control-flow.rs b/tests/ui/generator/drop-control-flow.rs similarity index 100% rename from src/test/ui/generator/drop-control-flow.rs rename to tests/ui/generator/drop-control-flow.rs diff --git a/src/test/ui/generator/drop-env.rs b/tests/ui/generator/drop-env.rs similarity index 100% rename from src/test/ui/generator/drop-env.rs rename to tests/ui/generator/drop-env.rs diff --git a/src/test/ui/generator/drop-track-addassign-yield.rs b/tests/ui/generator/drop-track-addassign-yield.rs similarity index 100% rename from src/test/ui/generator/drop-track-addassign-yield.rs rename to tests/ui/generator/drop-track-addassign-yield.rs diff --git a/src/test/ui/generator/drop-tracking-parent-expression.rs b/tests/ui/generator/drop-tracking-parent-expression.rs similarity index 100% rename from src/test/ui/generator/drop-tracking-parent-expression.rs rename to tests/ui/generator/drop-tracking-parent-expression.rs diff --git a/src/test/ui/generator/drop-tracking-parent-expression.stderr b/tests/ui/generator/drop-tracking-parent-expression.stderr similarity index 100% rename from src/test/ui/generator/drop-tracking-parent-expression.stderr rename to tests/ui/generator/drop-tracking-parent-expression.stderr diff --git a/src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs b/tests/ui/generator/drop-tracking-yielding-in-match-guards.rs similarity index 100% rename from src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs rename to tests/ui/generator/drop-tracking-yielding-in-match-guards.rs diff --git a/src/test/ui/generator/drop-yield-twice.rs b/tests/ui/generator/drop-yield-twice.rs similarity index 100% rename from src/test/ui/generator/drop-yield-twice.rs rename to tests/ui/generator/drop-yield-twice.rs diff --git a/src/test/ui/generator/drop-yield-twice.stderr b/tests/ui/generator/drop-yield-twice.stderr similarity index 100% rename from src/test/ui/generator/drop-yield-twice.stderr rename to tests/ui/generator/drop-yield-twice.stderr diff --git a/src/test/ui/generator/dropck-resume.rs b/tests/ui/generator/dropck-resume.rs similarity index 100% rename from src/test/ui/generator/dropck-resume.rs rename to tests/ui/generator/dropck-resume.rs diff --git a/src/test/ui/generator/dropck-resume.stderr b/tests/ui/generator/dropck-resume.stderr similarity index 100% rename from src/test/ui/generator/dropck-resume.stderr rename to tests/ui/generator/dropck-resume.stderr diff --git a/src/test/ui/generator/dropck.rs b/tests/ui/generator/dropck.rs similarity index 100% rename from src/test/ui/generator/dropck.rs rename to tests/ui/generator/dropck.rs diff --git a/src/test/ui/generator/dropck.stderr b/tests/ui/generator/dropck.stderr similarity index 100% rename from src/test/ui/generator/dropck.stderr rename to tests/ui/generator/dropck.stderr diff --git a/src/test/ui/generator/generator-region-requirements.migrate.stderr b/tests/ui/generator/generator-region-requirements.migrate.stderr similarity index 100% rename from src/test/ui/generator/generator-region-requirements.migrate.stderr rename to tests/ui/generator/generator-region-requirements.migrate.stderr diff --git a/src/test/ui/generator/generator-region-requirements.rs b/tests/ui/generator/generator-region-requirements.rs similarity index 100% rename from src/test/ui/generator/generator-region-requirements.rs rename to tests/ui/generator/generator-region-requirements.rs diff --git a/src/test/ui/generator/generator-region-requirements.stderr b/tests/ui/generator/generator-region-requirements.stderr similarity index 100% rename from src/test/ui/generator/generator-region-requirements.stderr rename to tests/ui/generator/generator-region-requirements.stderr diff --git a/src/test/ui/generator/generator-resume-after-panic.rs b/tests/ui/generator/generator-resume-after-panic.rs similarity index 100% rename from src/test/ui/generator/generator-resume-after-panic.rs rename to tests/ui/generator/generator-resume-after-panic.rs diff --git a/src/test/ui/generator/generator-with-nll.rs b/tests/ui/generator/generator-with-nll.rs similarity index 100% rename from src/test/ui/generator/generator-with-nll.rs rename to tests/ui/generator/generator-with-nll.rs diff --git a/src/test/ui/generator/generator-with-nll.stderr b/tests/ui/generator/generator-with-nll.stderr similarity index 100% rename from src/test/ui/generator/generator-with-nll.stderr rename to tests/ui/generator/generator-with-nll.stderr diff --git a/src/test/ui/generator/generator-yielding-or-returning-itself.rs b/tests/ui/generator/generator-yielding-or-returning-itself.rs similarity index 100% rename from src/test/ui/generator/generator-yielding-or-returning-itself.rs rename to tests/ui/generator/generator-yielding-or-returning-itself.rs diff --git a/src/test/ui/generator/generator-yielding-or-returning-itself.stderr b/tests/ui/generator/generator-yielding-or-returning-itself.stderr similarity index 100% rename from src/test/ui/generator/generator-yielding-or-returning-itself.stderr rename to tests/ui/generator/generator-yielding-or-returning-itself.stderr diff --git a/src/test/ui/generator/issue-102645.rs b/tests/ui/generator/issue-102645.rs similarity index 100% rename from src/test/ui/generator/issue-102645.rs rename to tests/ui/generator/issue-102645.rs diff --git a/src/test/ui/generator/issue-102645.stderr b/tests/ui/generator/issue-102645.stderr similarity index 100% rename from src/test/ui/generator/issue-102645.stderr rename to tests/ui/generator/issue-102645.stderr diff --git a/src/test/ui/generator/issue-44197.rs b/tests/ui/generator/issue-44197.rs similarity index 100% rename from src/test/ui/generator/issue-44197.rs rename to tests/ui/generator/issue-44197.rs diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr b/tests/ui/generator/issue-45729-unsafe-in-generator.mir.stderr similarity index 100% rename from src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr rename to tests/ui/generator/issue-45729-unsafe-in-generator.mir.stderr diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.rs b/tests/ui/generator/issue-45729-unsafe-in-generator.rs similarity index 100% rename from src/test/ui/generator/issue-45729-unsafe-in-generator.rs rename to tests/ui/generator/issue-45729-unsafe-in-generator.rs diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr b/tests/ui/generator/issue-45729-unsafe-in-generator.thir.stderr similarity index 100% rename from src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr rename to tests/ui/generator/issue-45729-unsafe-in-generator.thir.stderr diff --git a/src/test/ui/generator/issue-48048.rs b/tests/ui/generator/issue-48048.rs similarity index 100% rename from src/test/ui/generator/issue-48048.rs rename to tests/ui/generator/issue-48048.rs diff --git a/src/test/ui/generator/issue-48048.stderr b/tests/ui/generator/issue-48048.stderr similarity index 100% rename from src/test/ui/generator/issue-48048.stderr rename to tests/ui/generator/issue-48048.stderr diff --git a/src/test/ui/generator/issue-52304.rs b/tests/ui/generator/issue-52304.rs similarity index 100% rename from src/test/ui/generator/issue-52304.rs rename to tests/ui/generator/issue-52304.rs diff --git a/src/test/ui/generator/issue-52398.rs b/tests/ui/generator/issue-52398.rs similarity index 100% rename from src/test/ui/generator/issue-52398.rs rename to tests/ui/generator/issue-52398.rs diff --git a/src/test/ui/generator/issue-52398.stderr b/tests/ui/generator/issue-52398.stderr similarity index 100% rename from src/test/ui/generator/issue-52398.stderr rename to tests/ui/generator/issue-52398.stderr diff --git a/src/test/ui/generator/issue-53548-1.rs b/tests/ui/generator/issue-53548-1.rs similarity index 100% rename from src/test/ui/generator/issue-53548-1.rs rename to tests/ui/generator/issue-53548-1.rs diff --git a/src/test/ui/generator/issue-53548.rs b/tests/ui/generator/issue-53548.rs similarity index 100% rename from src/test/ui/generator/issue-53548.rs rename to tests/ui/generator/issue-53548.rs diff --git a/src/test/ui/generator/issue-57017.rs b/tests/ui/generator/issue-57017.rs similarity index 100% rename from src/test/ui/generator/issue-57017.rs rename to tests/ui/generator/issue-57017.rs diff --git a/src/test/ui/generator/issue-57084.rs b/tests/ui/generator/issue-57084.rs similarity index 100% rename from src/test/ui/generator/issue-57084.rs rename to tests/ui/generator/issue-57084.rs diff --git a/src/test/ui/generator/issue-57084.stderr b/tests/ui/generator/issue-57084.stderr similarity index 100% rename from src/test/ui/generator/issue-57084.stderr rename to tests/ui/generator/issue-57084.stderr diff --git a/src/test/ui/generator/issue-57478.rs b/tests/ui/generator/issue-57478.rs similarity index 100% rename from src/test/ui/generator/issue-57478.rs rename to tests/ui/generator/issue-57478.rs diff --git a/src/test/ui/generator/issue-58888.rs b/tests/ui/generator/issue-58888.rs similarity index 100% rename from src/test/ui/generator/issue-58888.rs rename to tests/ui/generator/issue-58888.rs diff --git a/src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs b/tests/ui/generator/issue-61442-stmt-expr-with-drop.rs similarity index 100% rename from src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs rename to tests/ui/generator/issue-61442-stmt-expr-with-drop.rs diff --git a/src/test/ui/generator/issue-62506-two_awaits.rs b/tests/ui/generator/issue-62506-two_awaits.rs similarity index 100% rename from src/test/ui/generator/issue-62506-two_awaits.rs rename to tests/ui/generator/issue-62506-two_awaits.rs diff --git a/src/test/ui/generator/issue-64620-yield-array-element.rs b/tests/ui/generator/issue-64620-yield-array-element.rs similarity index 100% rename from src/test/ui/generator/issue-64620-yield-array-element.rs rename to tests/ui/generator/issue-64620-yield-array-element.rs diff --git a/src/test/ui/generator/issue-64620-yield-array-element.stderr b/tests/ui/generator/issue-64620-yield-array-element.stderr similarity index 100% rename from src/test/ui/generator/issue-64620-yield-array-element.stderr rename to tests/ui/generator/issue-64620-yield-array-element.stderr diff --git a/src/test/ui/generator/issue-68112.rs b/tests/ui/generator/issue-68112.rs similarity index 100% rename from src/test/ui/generator/issue-68112.rs rename to tests/ui/generator/issue-68112.rs diff --git a/src/test/ui/generator/issue-68112.stderr b/tests/ui/generator/issue-68112.stderr similarity index 100% rename from src/test/ui/generator/issue-68112.stderr rename to tests/ui/generator/issue-68112.stderr diff --git a/src/test/ui/generator/issue-69017.rs b/tests/ui/generator/issue-69017.rs similarity index 100% rename from src/test/ui/generator/issue-69017.rs rename to tests/ui/generator/issue-69017.rs diff --git a/src/test/ui/generator/issue-69039.rs b/tests/ui/generator/issue-69039.rs similarity index 100% rename from src/test/ui/generator/issue-69039.rs rename to tests/ui/generator/issue-69039.rs diff --git a/src/test/ui/generator/issue-87142.rs b/tests/ui/generator/issue-87142.rs similarity index 100% rename from src/test/ui/generator/issue-87142.rs rename to tests/ui/generator/issue-87142.rs diff --git a/src/test/ui/generator/issue-88653.rs b/tests/ui/generator/issue-88653.rs similarity index 100% rename from src/test/ui/generator/issue-88653.rs rename to tests/ui/generator/issue-88653.rs diff --git a/src/test/ui/generator/issue-88653.stderr b/tests/ui/generator/issue-88653.stderr similarity index 100% rename from src/test/ui/generator/issue-88653.stderr rename to tests/ui/generator/issue-88653.stderr diff --git a/src/test/ui/generator/issue-91477.rs b/tests/ui/generator/issue-91477.rs similarity index 100% rename from src/test/ui/generator/issue-91477.rs rename to tests/ui/generator/issue-91477.rs diff --git a/src/test/ui/generator/issue-91477.stderr b/tests/ui/generator/issue-91477.stderr similarity index 100% rename from src/test/ui/generator/issue-91477.stderr rename to tests/ui/generator/issue-91477.stderr diff --git a/src/test/ui/generator/issue-93161.rs b/tests/ui/generator/issue-93161.rs similarity index 100% rename from src/test/ui/generator/issue-93161.rs rename to tests/ui/generator/issue-93161.rs diff --git a/src/test/ui/generator/iterator-count.rs b/tests/ui/generator/iterator-count.rs similarity index 100% rename from src/test/ui/generator/iterator-count.rs rename to tests/ui/generator/iterator-count.rs diff --git a/src/test/ui/generator/layout-error.rs b/tests/ui/generator/layout-error.rs similarity index 100% rename from src/test/ui/generator/layout-error.rs rename to tests/ui/generator/layout-error.rs diff --git a/src/test/ui/generator/layout-error.stderr b/tests/ui/generator/layout-error.stderr similarity index 100% rename from src/test/ui/generator/layout-error.stderr rename to tests/ui/generator/layout-error.stderr diff --git a/src/test/ui/generator/live-upvar-across-yield.rs b/tests/ui/generator/live-upvar-across-yield.rs similarity index 100% rename from src/test/ui/generator/live-upvar-across-yield.rs rename to tests/ui/generator/live-upvar-across-yield.rs diff --git a/src/test/ui/generator/match-bindings.rs b/tests/ui/generator/match-bindings.rs similarity index 100% rename from src/test/ui/generator/match-bindings.rs rename to tests/ui/generator/match-bindings.rs diff --git a/src/test/ui/generator/match-bindings.stderr b/tests/ui/generator/match-bindings.stderr similarity index 100% rename from src/test/ui/generator/match-bindings.stderr rename to tests/ui/generator/match-bindings.stderr diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.rs b/tests/ui/generator/metadata-sufficient-for-layout.rs similarity index 100% rename from src/test/ui/generator/metadata-sufficient-for-layout.rs rename to tests/ui/generator/metadata-sufficient-for-layout.rs diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.stderr b/tests/ui/generator/metadata-sufficient-for-layout.stderr similarity index 100% rename from src/test/ui/generator/metadata-sufficient-for-layout.stderr rename to tests/ui/generator/metadata-sufficient-for-layout.stderr diff --git a/src/test/ui/generator/nested_generators.rs b/tests/ui/generator/nested_generators.rs similarity index 100% rename from src/test/ui/generator/nested_generators.rs rename to tests/ui/generator/nested_generators.rs diff --git a/src/test/ui/generator/niche-in-generator.rs b/tests/ui/generator/niche-in-generator.rs similarity index 100% rename from src/test/ui/generator/niche-in-generator.rs rename to tests/ui/generator/niche-in-generator.rs diff --git a/src/test/ui/generator/non-static-is-unpin.rs b/tests/ui/generator/non-static-is-unpin.rs similarity index 100% rename from src/test/ui/generator/non-static-is-unpin.rs rename to tests/ui/generator/non-static-is-unpin.rs diff --git a/src/test/ui/generator/not-send-sync.rs b/tests/ui/generator/not-send-sync.rs similarity index 100% rename from src/test/ui/generator/not-send-sync.rs rename to tests/ui/generator/not-send-sync.rs diff --git a/src/test/ui/generator/not-send-sync.stderr b/tests/ui/generator/not-send-sync.stderr similarity index 100% rename from src/test/ui/generator/not-send-sync.stderr rename to tests/ui/generator/not-send-sync.stderr diff --git a/src/test/ui/generator/overlap-locals.rs b/tests/ui/generator/overlap-locals.rs similarity index 100% rename from src/test/ui/generator/overlap-locals.rs rename to tests/ui/generator/overlap-locals.rs diff --git a/src/test/ui/generator/panic-drops-resume.rs b/tests/ui/generator/panic-drops-resume.rs similarity index 100% rename from src/test/ui/generator/panic-drops-resume.rs rename to tests/ui/generator/panic-drops-resume.rs diff --git a/src/test/ui/generator/panic-drops.rs b/tests/ui/generator/panic-drops.rs similarity index 100% rename from src/test/ui/generator/panic-drops.rs rename to tests/ui/generator/panic-drops.rs diff --git a/src/test/ui/generator/panic-safe.rs b/tests/ui/generator/panic-safe.rs similarity index 100% rename from src/test/ui/generator/panic-safe.rs rename to tests/ui/generator/panic-safe.rs diff --git a/src/test/ui/generator/partial-drop.rs b/tests/ui/generator/partial-drop.rs similarity index 100% rename from src/test/ui/generator/partial-drop.rs rename to tests/ui/generator/partial-drop.rs diff --git a/src/test/ui/generator/partial-drop.stderr b/tests/ui/generator/partial-drop.stderr similarity index 100% rename from src/test/ui/generator/partial-drop.stderr rename to tests/ui/generator/partial-drop.stderr diff --git a/src/test/ui/generator/partial-initialization-across-yield.rs b/tests/ui/generator/partial-initialization-across-yield.rs similarity index 100% rename from src/test/ui/generator/partial-initialization-across-yield.rs rename to tests/ui/generator/partial-initialization-across-yield.rs diff --git a/src/test/ui/generator/partial-initialization-across-yield.stderr b/tests/ui/generator/partial-initialization-across-yield.stderr similarity index 100% rename from src/test/ui/generator/partial-initialization-across-yield.stderr rename to tests/ui/generator/partial-initialization-across-yield.stderr diff --git a/src/test/ui/generator/pattern-borrow.rs b/tests/ui/generator/pattern-borrow.rs similarity index 100% rename from src/test/ui/generator/pattern-borrow.rs rename to tests/ui/generator/pattern-borrow.rs diff --git a/src/test/ui/generator/pattern-borrow.stderr b/tests/ui/generator/pattern-borrow.stderr similarity index 100% rename from src/test/ui/generator/pattern-borrow.stderr rename to tests/ui/generator/pattern-borrow.stderr diff --git a/src/test/ui/generator/pin-box-generator.rs b/tests/ui/generator/pin-box-generator.rs similarity index 100% rename from src/test/ui/generator/pin-box-generator.rs rename to tests/ui/generator/pin-box-generator.rs diff --git a/src/test/ui/generator/print/generator-print-verbose-1.rs b/tests/ui/generator/print/generator-print-verbose-1.rs similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-1.rs rename to tests/ui/generator/print/generator-print-verbose-1.rs diff --git a/src/test/ui/generator/print/generator-print-verbose-1.stderr b/tests/ui/generator/print/generator-print-verbose-1.stderr similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-1.stderr rename to tests/ui/generator/print/generator-print-verbose-1.stderr diff --git a/src/test/ui/generator/print/generator-print-verbose-2.rs b/tests/ui/generator/print/generator-print-verbose-2.rs similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-2.rs rename to tests/ui/generator/print/generator-print-verbose-2.rs diff --git a/src/test/ui/generator/print/generator-print-verbose-2.stderr b/tests/ui/generator/print/generator-print-verbose-2.stderr similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-2.stderr rename to tests/ui/generator/print/generator-print-verbose-2.stderr diff --git a/src/test/ui/generator/print/generator-print-verbose-3.rs b/tests/ui/generator/print/generator-print-verbose-3.rs similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-3.rs rename to tests/ui/generator/print/generator-print-verbose-3.rs diff --git a/src/test/ui/generator/print/generator-print-verbose-3.stderr b/tests/ui/generator/print/generator-print-verbose-3.stderr similarity index 100% rename from src/test/ui/generator/print/generator-print-verbose-3.stderr rename to tests/ui/generator/print/generator-print-verbose-3.stderr diff --git a/src/test/ui/generator/reborrow-mut-upvar.rs b/tests/ui/generator/reborrow-mut-upvar.rs similarity index 100% rename from src/test/ui/generator/reborrow-mut-upvar.rs rename to tests/ui/generator/reborrow-mut-upvar.rs diff --git a/src/test/ui/generator/reborrow-mut-upvar.stderr b/tests/ui/generator/reborrow-mut-upvar.stderr similarity index 100% rename from src/test/ui/generator/reborrow-mut-upvar.stderr rename to tests/ui/generator/reborrow-mut-upvar.stderr diff --git a/src/test/ui/generator/ref-escapes-but-not-over-yield.rs b/tests/ui/generator/ref-escapes-but-not-over-yield.rs similarity index 100% rename from src/test/ui/generator/ref-escapes-but-not-over-yield.rs rename to tests/ui/generator/ref-escapes-but-not-over-yield.rs diff --git a/src/test/ui/generator/ref-escapes-but-not-over-yield.stderr b/tests/ui/generator/ref-escapes-but-not-over-yield.stderr similarity index 100% rename from src/test/ui/generator/ref-escapes-but-not-over-yield.stderr rename to tests/ui/generator/ref-escapes-but-not-over-yield.stderr diff --git a/src/test/ui/generator/ref-upvar-not-send.rs b/tests/ui/generator/ref-upvar-not-send.rs similarity index 100% rename from src/test/ui/generator/ref-upvar-not-send.rs rename to tests/ui/generator/ref-upvar-not-send.rs diff --git a/src/test/ui/generator/ref-upvar-not-send.stderr b/tests/ui/generator/ref-upvar-not-send.stderr similarity index 100% rename from src/test/ui/generator/ref-upvar-not-send.stderr rename to tests/ui/generator/ref-upvar-not-send.stderr diff --git a/src/test/ui/generator/reinit-in-match-guard.rs b/tests/ui/generator/reinit-in-match-guard.rs similarity index 100% rename from src/test/ui/generator/reinit-in-match-guard.rs rename to tests/ui/generator/reinit-in-match-guard.rs diff --git a/src/test/ui/generator/resume-after-return.rs b/tests/ui/generator/resume-after-return.rs similarity index 100% rename from src/test/ui/generator/resume-after-return.rs rename to tests/ui/generator/resume-after-return.rs diff --git a/src/test/ui/generator/resume-arg-late-bound.rs b/tests/ui/generator/resume-arg-late-bound.rs similarity index 100% rename from src/test/ui/generator/resume-arg-late-bound.rs rename to tests/ui/generator/resume-arg-late-bound.rs diff --git a/src/test/ui/generator/resume-arg-late-bound.stderr b/tests/ui/generator/resume-arg-late-bound.stderr similarity index 100% rename from src/test/ui/generator/resume-arg-late-bound.stderr rename to tests/ui/generator/resume-arg-late-bound.stderr diff --git a/src/test/ui/generator/resume-arg-size.rs b/tests/ui/generator/resume-arg-size.rs similarity index 100% rename from src/test/ui/generator/resume-arg-size.rs rename to tests/ui/generator/resume-arg-size.rs diff --git a/src/test/ui/generator/resume-live-across-yield.rs b/tests/ui/generator/resume-live-across-yield.rs similarity index 100% rename from src/test/ui/generator/resume-live-across-yield.rs rename to tests/ui/generator/resume-live-across-yield.rs diff --git a/src/test/ui/generator/retain-resume-ref.rs b/tests/ui/generator/retain-resume-ref.rs similarity index 100% rename from src/test/ui/generator/retain-resume-ref.rs rename to tests/ui/generator/retain-resume-ref.rs diff --git a/src/test/ui/generator/retain-resume-ref.stderr b/tests/ui/generator/retain-resume-ref.stderr similarity index 100% rename from src/test/ui/generator/retain-resume-ref.stderr rename to tests/ui/generator/retain-resume-ref.stderr diff --git a/src/test/ui/generator/size-moved-locals.rs b/tests/ui/generator/size-moved-locals.rs similarity index 100% rename from src/test/ui/generator/size-moved-locals.rs rename to tests/ui/generator/size-moved-locals.rs diff --git a/src/test/ui/generator/sized-yield.rs b/tests/ui/generator/sized-yield.rs similarity index 100% rename from src/test/ui/generator/sized-yield.rs rename to tests/ui/generator/sized-yield.rs diff --git a/src/test/ui/generator/sized-yield.stderr b/tests/ui/generator/sized-yield.stderr similarity index 100% rename from src/test/ui/generator/sized-yield.stderr rename to tests/ui/generator/sized-yield.stderr diff --git a/src/test/ui/generator/smoke-resume-args.rs b/tests/ui/generator/smoke-resume-args.rs similarity index 100% rename from src/test/ui/generator/smoke-resume-args.rs rename to tests/ui/generator/smoke-resume-args.rs diff --git a/src/test/ui/generator/smoke.rs b/tests/ui/generator/smoke.rs similarity index 100% rename from src/test/ui/generator/smoke.rs rename to tests/ui/generator/smoke.rs diff --git a/src/test/ui/generator/static-generators.rs b/tests/ui/generator/static-generators.rs similarity index 100% rename from src/test/ui/generator/static-generators.rs rename to tests/ui/generator/static-generators.rs diff --git a/src/test/ui/generator/static-mut-reference-across-yield.rs b/tests/ui/generator/static-mut-reference-across-yield.rs similarity index 100% rename from src/test/ui/generator/static-mut-reference-across-yield.rs rename to tests/ui/generator/static-mut-reference-across-yield.rs diff --git a/src/test/ui/generator/static-not-unpin.rs b/tests/ui/generator/static-not-unpin.rs similarity index 100% rename from src/test/ui/generator/static-not-unpin.rs rename to tests/ui/generator/static-not-unpin.rs diff --git a/src/test/ui/generator/static-not-unpin.stderr b/tests/ui/generator/static-not-unpin.stderr similarity index 100% rename from src/test/ui/generator/static-not-unpin.stderr rename to tests/ui/generator/static-not-unpin.stderr diff --git a/src/test/ui/generator/static-reference-across-yield.rs b/tests/ui/generator/static-reference-across-yield.rs similarity index 100% rename from src/test/ui/generator/static-reference-across-yield.rs rename to tests/ui/generator/static-reference-across-yield.rs diff --git a/src/test/ui/generator/too-live-local-in-immovable-gen.rs b/tests/ui/generator/too-live-local-in-immovable-gen.rs similarity index 100% rename from src/test/ui/generator/too-live-local-in-immovable-gen.rs rename to tests/ui/generator/too-live-local-in-immovable-gen.rs diff --git a/src/test/ui/generator/too-live-local-in-immovable-gen.stderr b/tests/ui/generator/too-live-local-in-immovable-gen.stderr similarity index 100% rename from src/test/ui/generator/too-live-local-in-immovable-gen.stderr rename to tests/ui/generator/too-live-local-in-immovable-gen.stderr diff --git a/src/test/ui/generator/too-many-parameters.rs b/tests/ui/generator/too-many-parameters.rs similarity index 100% rename from src/test/ui/generator/too-many-parameters.rs rename to tests/ui/generator/too-many-parameters.rs diff --git a/src/test/ui/generator/too-many-parameters.stderr b/tests/ui/generator/too-many-parameters.stderr similarity index 100% rename from src/test/ui/generator/too-many-parameters.stderr rename to tests/ui/generator/too-many-parameters.stderr diff --git a/src/test/ui/generator/type-mismatch-error.rs b/tests/ui/generator/type-mismatch-error.rs similarity index 100% rename from src/test/ui/generator/type-mismatch-error.rs rename to tests/ui/generator/type-mismatch-error.rs diff --git a/src/test/ui/generator/type-mismatch-error.stderr b/tests/ui/generator/type-mismatch-error.stderr similarity index 100% rename from src/test/ui/generator/type-mismatch-error.stderr rename to tests/ui/generator/type-mismatch-error.stderr diff --git a/src/test/ui/generator/type-mismatch-signature-deduction.rs b/tests/ui/generator/type-mismatch-signature-deduction.rs similarity index 100% rename from src/test/ui/generator/type-mismatch-signature-deduction.rs rename to tests/ui/generator/type-mismatch-signature-deduction.rs diff --git a/src/test/ui/generator/type-mismatch-signature-deduction.stderr b/tests/ui/generator/type-mismatch-signature-deduction.stderr similarity index 100% rename from src/test/ui/generator/type-mismatch-signature-deduction.stderr rename to tests/ui/generator/type-mismatch-signature-deduction.stderr diff --git a/src/test/ui/generator/unresolved-ct-var-drop-tracking.rs b/tests/ui/generator/unresolved-ct-var-drop-tracking.rs similarity index 100% rename from src/test/ui/generator/unresolved-ct-var-drop-tracking.rs rename to tests/ui/generator/unresolved-ct-var-drop-tracking.rs diff --git a/src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr b/tests/ui/generator/unresolved-ct-var-drop-tracking.stderr similarity index 100% rename from src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr rename to tests/ui/generator/unresolved-ct-var-drop-tracking.stderr diff --git a/src/test/ui/generator/unresolved-ct-var.rs b/tests/ui/generator/unresolved-ct-var.rs similarity index 100% rename from src/test/ui/generator/unresolved-ct-var.rs rename to tests/ui/generator/unresolved-ct-var.rs diff --git a/src/test/ui/generator/unresolved-ct-var.stderr b/tests/ui/generator/unresolved-ct-var.stderr similarity index 100% rename from src/test/ui/generator/unresolved-ct-var.stderr rename to tests/ui/generator/unresolved-ct-var.stderr diff --git a/src/test/ui/generator/xcrate-reachable.rs b/tests/ui/generator/xcrate-reachable.rs similarity index 100% rename from src/test/ui/generator/xcrate-reachable.rs rename to tests/ui/generator/xcrate-reachable.rs diff --git a/src/test/ui/generator/xcrate.rs b/tests/ui/generator/xcrate.rs similarity index 100% rename from src/test/ui/generator/xcrate.rs rename to tests/ui/generator/xcrate.rs diff --git a/src/test/ui/generator/yield-in-args-rev.rs b/tests/ui/generator/yield-in-args-rev.rs similarity index 100% rename from src/test/ui/generator/yield-in-args-rev.rs rename to tests/ui/generator/yield-in-args-rev.rs diff --git a/src/test/ui/generator/yield-in-args-rev.stderr b/tests/ui/generator/yield-in-args-rev.stderr similarity index 100% rename from src/test/ui/generator/yield-in-args-rev.stderr rename to tests/ui/generator/yield-in-args-rev.stderr diff --git a/src/test/ui/generator/yield-in-args.rs b/tests/ui/generator/yield-in-args.rs similarity index 100% rename from src/test/ui/generator/yield-in-args.rs rename to tests/ui/generator/yield-in-args.rs diff --git a/src/test/ui/generator/yield-in-args.stderr b/tests/ui/generator/yield-in-args.stderr similarity index 100% rename from src/test/ui/generator/yield-in-args.stderr rename to tests/ui/generator/yield-in-args.stderr diff --git a/src/test/ui/generator/yield-in-box.rs b/tests/ui/generator/yield-in-box.rs similarity index 100% rename from src/test/ui/generator/yield-in-box.rs rename to tests/ui/generator/yield-in-box.rs diff --git a/src/test/ui/generator/yield-in-box.stderr b/tests/ui/generator/yield-in-box.stderr similarity index 100% rename from src/test/ui/generator/yield-in-box.stderr rename to tests/ui/generator/yield-in-box.stderr diff --git a/src/test/ui/generator/yield-in-const.rs b/tests/ui/generator/yield-in-const.rs similarity index 100% rename from src/test/ui/generator/yield-in-const.rs rename to tests/ui/generator/yield-in-const.rs diff --git a/src/test/ui/generator/yield-in-const.stderr b/tests/ui/generator/yield-in-const.stderr similarity index 100% rename from src/test/ui/generator/yield-in-const.stderr rename to tests/ui/generator/yield-in-const.stderr diff --git a/src/test/ui/generator/yield-in-function.rs b/tests/ui/generator/yield-in-function.rs similarity index 100% rename from src/test/ui/generator/yield-in-function.rs rename to tests/ui/generator/yield-in-function.rs diff --git a/src/test/ui/generator/yield-in-function.stderr b/tests/ui/generator/yield-in-function.stderr similarity index 100% rename from src/test/ui/generator/yield-in-function.stderr rename to tests/ui/generator/yield-in-function.stderr diff --git a/src/test/ui/generator/yield-in-initializer.rs b/tests/ui/generator/yield-in-initializer.rs similarity index 100% rename from src/test/ui/generator/yield-in-initializer.rs rename to tests/ui/generator/yield-in-initializer.rs diff --git a/src/test/ui/generator/yield-in-initializer.stderr b/tests/ui/generator/yield-in-initializer.stderr similarity index 100% rename from src/test/ui/generator/yield-in-initializer.stderr rename to tests/ui/generator/yield-in-initializer.stderr diff --git a/src/test/ui/generator/yield-in-static.rs b/tests/ui/generator/yield-in-static.rs similarity index 100% rename from src/test/ui/generator/yield-in-static.rs rename to tests/ui/generator/yield-in-static.rs diff --git a/src/test/ui/generator/yield-in-static.stderr b/tests/ui/generator/yield-in-static.stderr similarity index 100% rename from src/test/ui/generator/yield-in-static.stderr rename to tests/ui/generator/yield-in-static.stderr diff --git a/src/test/ui/generator/yield-outside-generator-issue-78653.rs b/tests/ui/generator/yield-outside-generator-issue-78653.rs similarity index 100% rename from src/test/ui/generator/yield-outside-generator-issue-78653.rs rename to tests/ui/generator/yield-outside-generator-issue-78653.rs diff --git a/src/test/ui/generator/yield-outside-generator-issue-78653.stderr b/tests/ui/generator/yield-outside-generator-issue-78653.stderr similarity index 100% rename from src/test/ui/generator/yield-outside-generator-issue-78653.stderr rename to tests/ui/generator/yield-outside-generator-issue-78653.stderr diff --git a/src/test/ui/generator/yield-subtype.rs b/tests/ui/generator/yield-subtype.rs similarity index 100% rename from src/test/ui/generator/yield-subtype.rs rename to tests/ui/generator/yield-subtype.rs diff --git a/src/test/ui/generator/yield-subtype.stderr b/tests/ui/generator/yield-subtype.stderr similarity index 100% rename from src/test/ui/generator/yield-subtype.stderr rename to tests/ui/generator/yield-subtype.stderr diff --git a/src/test/ui/generator/yield-while-iterating.rs b/tests/ui/generator/yield-while-iterating.rs similarity index 100% rename from src/test/ui/generator/yield-while-iterating.rs rename to tests/ui/generator/yield-while-iterating.rs diff --git a/src/test/ui/generator/yield-while-iterating.stderr b/tests/ui/generator/yield-while-iterating.stderr similarity index 100% rename from src/test/ui/generator/yield-while-iterating.stderr rename to tests/ui/generator/yield-while-iterating.stderr diff --git a/src/test/ui/generator/yield-while-local-borrowed.rs b/tests/ui/generator/yield-while-local-borrowed.rs similarity index 100% rename from src/test/ui/generator/yield-while-local-borrowed.rs rename to tests/ui/generator/yield-while-local-borrowed.rs diff --git a/src/test/ui/generator/yield-while-local-borrowed.stderr b/tests/ui/generator/yield-while-local-borrowed.stderr similarity index 100% rename from src/test/ui/generator/yield-while-local-borrowed.stderr rename to tests/ui/generator/yield-while-local-borrowed.stderr diff --git a/src/test/ui/generator/yield-while-ref-reborrowed.rs b/tests/ui/generator/yield-while-ref-reborrowed.rs similarity index 100% rename from src/test/ui/generator/yield-while-ref-reborrowed.rs rename to tests/ui/generator/yield-while-ref-reborrowed.rs diff --git a/src/test/ui/generator/yield-while-ref-reborrowed.stderr b/tests/ui/generator/yield-while-ref-reborrowed.stderr similarity index 100% rename from src/test/ui/generator/yield-while-ref-reborrowed.stderr rename to tests/ui/generator/yield-while-ref-reborrowed.stderr diff --git a/src/test/ui/generator/yielding-in-match-guards.rs b/tests/ui/generator/yielding-in-match-guards.rs similarity index 100% rename from src/test/ui/generator/yielding-in-match-guards.rs rename to tests/ui/generator/yielding-in-match-guards.rs diff --git a/src/test/ui/generic-associated-types/anonymize-bound-vars.rs b/tests/ui/generic-associated-types/anonymize-bound-vars.rs similarity index 100% rename from src/test/ui/generic-associated-types/anonymize-bound-vars.rs rename to tests/ui/generic-associated-types/anonymize-bound-vars.rs diff --git a/src/test/ui/generic-associated-types/auxiliary/foo_defn.rs b/tests/ui/generic-associated-types/auxiliary/foo_defn.rs similarity index 100% rename from src/test/ui/generic-associated-types/auxiliary/foo_defn.rs rename to tests/ui/generic-associated-types/auxiliary/foo_defn.rs diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs b/tests/ui/generic-associated-types/bugs/hrtb-implied-1.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs rename to tests/ui/generic-associated-types/bugs/hrtb-implied-1.rs diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr b/tests/ui/generic-associated-types/bugs/hrtb-implied-1.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr rename to tests/ui/generic-associated-types/bugs/hrtb-implied-1.stderr diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs b/tests/ui/generic-associated-types/bugs/hrtb-implied-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs rename to tests/ui/generic-associated-types/bugs/hrtb-implied-2.rs diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr b/tests/ui/generic-associated-types/bugs/hrtb-implied-2.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr rename to tests/ui/generic-associated-types/bugs/hrtb-implied-2.stderr diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs b/tests/ui/generic-associated-types/bugs/hrtb-implied-3.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs rename to tests/ui/generic-associated-types/bugs/hrtb-implied-3.rs diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr b/tests/ui/generic-associated-types/bugs/hrtb-implied-3.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr rename to tests/ui/generic-associated-types/bugs/hrtb-implied-3.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.rs b/tests/ui/generic-associated-types/bugs/issue-100013.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-100013.rs rename to tests/ui/generic-associated-types/bugs/issue-100013.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.stderr b/tests/ui/generic-associated-types/bugs/issue-100013.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-100013.stderr rename to tests/ui/generic-associated-types/bugs/issue-100013.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-80626.rs b/tests/ui/generic-associated-types/bugs/issue-80626.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-80626.rs rename to tests/ui/generic-associated-types/bugs/issue-80626.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-87735.rs b/tests/ui/generic-associated-types/bugs/issue-87735.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87735.rs rename to tests/ui/generic-associated-types/bugs/issue-87735.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-87735.stderr b/tests/ui/generic-associated-types/bugs/issue-87735.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87735.stderr rename to tests/ui/generic-associated-types/bugs/issue-87735.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-87755.rs b/tests/ui/generic-associated-types/bugs/issue-87755.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87755.rs rename to tests/ui/generic-associated-types/bugs/issue-87755.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-87755.stderr b/tests/ui/generic-associated-types/bugs/issue-87755.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87755.stderr rename to tests/ui/generic-associated-types/bugs/issue-87755.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-87803.rs b/tests/ui/generic-associated-types/bugs/issue-87803.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87803.rs rename to tests/ui/generic-associated-types/bugs/issue-87803.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-87803.stderr b/tests/ui/generic-associated-types/bugs/issue-87803.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-87803.stderr rename to tests/ui/generic-associated-types/bugs/issue-87803.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-88382.rs b/tests/ui/generic-associated-types/bugs/issue-88382.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88382.rs rename to tests/ui/generic-associated-types/bugs/issue-88382.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-88382.stderr b/tests/ui/generic-associated-types/bugs/issue-88382.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88382.stderr rename to tests/ui/generic-associated-types/bugs/issue-88382.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-88460.rs b/tests/ui/generic-associated-types/bugs/issue-88460.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88460.rs rename to tests/ui/generic-associated-types/bugs/issue-88460.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-88460.stderr b/tests/ui/generic-associated-types/bugs/issue-88460.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88460.stderr rename to tests/ui/generic-associated-types/bugs/issue-88460.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-88526.rs b/tests/ui/generic-associated-types/bugs/issue-88526.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88526.rs rename to tests/ui/generic-associated-types/bugs/issue-88526.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-88526.stderr b/tests/ui/generic-associated-types/bugs/issue-88526.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-88526.stderr rename to tests/ui/generic-associated-types/bugs/issue-88526.stderr diff --git a/src/test/ui/generic-associated-types/bugs/issue-91762.rs b/tests/ui/generic-associated-types/bugs/issue-91762.rs similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-91762.rs rename to tests/ui/generic-associated-types/bugs/issue-91762.rs diff --git a/src/test/ui/generic-associated-types/bugs/issue-91762.stderr b/tests/ui/generic-associated-types/bugs/issue-91762.stderr similarity index 100% rename from src/test/ui/generic-associated-types/bugs/issue-91762.stderr rename to tests/ui/generic-associated-types/bugs/issue-91762.stderr diff --git a/src/test/ui/generic-associated-types/collections-project-default.rs b/tests/ui/generic-associated-types/collections-project-default.rs similarity index 100% rename from src/test/ui/generic-associated-types/collections-project-default.rs rename to tests/ui/generic-associated-types/collections-project-default.rs diff --git a/src/test/ui/generic-associated-types/collections-project-default.stderr b/tests/ui/generic-associated-types/collections-project-default.stderr similarity index 100% rename from src/test/ui/generic-associated-types/collections-project-default.stderr rename to tests/ui/generic-associated-types/collections-project-default.stderr diff --git a/src/test/ui/generic-associated-types/collections.rs b/tests/ui/generic-associated-types/collections.rs similarity index 100% rename from src/test/ui/generic-associated-types/collections.rs rename to tests/ui/generic-associated-types/collections.rs diff --git a/src/test/ui/generic-associated-types/collectivity-regression.rs b/tests/ui/generic-associated-types/collectivity-regression.rs similarity index 100% rename from src/test/ui/generic-associated-types/collectivity-regression.rs rename to tests/ui/generic-associated-types/collectivity-regression.rs diff --git a/src/test/ui/generic-associated-types/collectivity-regression.stderr b/tests/ui/generic-associated-types/collectivity-regression.stderr similarity index 100% rename from src/test/ui/generic-associated-types/collectivity-regression.stderr rename to tests/ui/generic-associated-types/collectivity-regression.stderr diff --git a/src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-1.rs b/tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-1.rs similarity index 100% rename from src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-1.rs rename to tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-1.rs diff --git a/src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-2.rs b/tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-2.rs rename to tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-2.rs diff --git a/src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-3.rs b/tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-3.rs similarity index 100% rename from src/test/ui/generic-associated-types/const-generics-gat-in-trait-return-type-3.rs rename to tests/ui/generic-associated-types/const-generics-gat-in-trait-return-type-3.rs diff --git a/src/test/ui/generic-associated-types/const_params_have_right_type.rs b/tests/ui/generic-associated-types/const_params_have_right_type.rs similarity index 100% rename from src/test/ui/generic-associated-types/const_params_have_right_type.rs rename to tests/ui/generic-associated-types/const_params_have_right_type.rs diff --git a/src/test/ui/generic-associated-types/const_params_have_right_type.stderr b/tests/ui/generic-associated-types/const_params_have_right_type.stderr similarity index 100% rename from src/test/ui/generic-associated-types/const_params_have_right_type.stderr rename to tests/ui/generic-associated-types/const_params_have_right_type.stderr diff --git a/src/test/ui/generic-associated-types/constraint-assoc-type-suggestion.rs b/tests/ui/generic-associated-types/constraint-assoc-type-suggestion.rs similarity index 100% rename from src/test/ui/generic-associated-types/constraint-assoc-type-suggestion.rs rename to tests/ui/generic-associated-types/constraint-assoc-type-suggestion.rs diff --git a/src/test/ui/generic-associated-types/constraint-assoc-type-suggestion.stderr b/tests/ui/generic-associated-types/constraint-assoc-type-suggestion.stderr similarity index 100% rename from src/test/ui/generic-associated-types/constraint-assoc-type-suggestion.stderr rename to tests/ui/generic-associated-types/constraint-assoc-type-suggestion.stderr diff --git a/src/test/ui/generic-associated-types/construct_with_other_type.rs b/tests/ui/generic-associated-types/construct_with_other_type.rs similarity index 100% rename from src/test/ui/generic-associated-types/construct_with_other_type.rs rename to tests/ui/generic-associated-types/construct_with_other_type.rs diff --git a/src/test/ui/generic-associated-types/cross-crate-bounds.rs b/tests/ui/generic-associated-types/cross-crate-bounds.rs similarity index 100% rename from src/test/ui/generic-associated-types/cross-crate-bounds.rs rename to tests/ui/generic-associated-types/cross-crate-bounds.rs diff --git a/src/test/ui/generic-associated-types/cross-crate-bounds.stderr b/tests/ui/generic-associated-types/cross-crate-bounds.stderr similarity index 100% rename from src/test/ui/generic-associated-types/cross-crate-bounds.stderr rename to tests/ui/generic-associated-types/cross-crate-bounds.stderr diff --git a/src/test/ui/generic-associated-types/elided-in-expr-position.rs b/tests/ui/generic-associated-types/elided-in-expr-position.rs similarity index 100% rename from src/test/ui/generic-associated-types/elided-in-expr-position.rs rename to tests/ui/generic-associated-types/elided-in-expr-position.rs diff --git a/src/test/ui/generic-associated-types/elided-in-expr-position.stderr b/tests/ui/generic-associated-types/elided-in-expr-position.stderr similarity index 100% rename from src/test/ui/generic-associated-types/elided-in-expr-position.stderr rename to tests/ui/generic-associated-types/elided-in-expr-position.stderr diff --git a/src/test/ui/generic-associated-types/empty_generics.rs b/tests/ui/generic-associated-types/empty_generics.rs similarity index 100% rename from src/test/ui/generic-associated-types/empty_generics.rs rename to tests/ui/generic-associated-types/empty_generics.rs diff --git a/src/test/ui/generic-associated-types/empty_generics.stderr b/tests/ui/generic-associated-types/empty_generics.stderr similarity index 100% rename from src/test/ui/generic-associated-types/empty_generics.stderr rename to tests/ui/generic-associated-types/empty_generics.stderr diff --git a/src/test/ui/generic-associated-types/equality-bound.rs b/tests/ui/generic-associated-types/equality-bound.rs similarity index 100% rename from src/test/ui/generic-associated-types/equality-bound.rs rename to tests/ui/generic-associated-types/equality-bound.rs diff --git a/src/test/ui/generic-associated-types/equality-bound.stderr b/tests/ui/generic-associated-types/equality-bound.stderr similarity index 100% rename from src/test/ui/generic-associated-types/equality-bound.stderr rename to tests/ui/generic-associated-types/equality-bound.stderr diff --git a/src/test/ui/generic-associated-types/extended/lending_iterator.base.stderr b/tests/ui/generic-associated-types/extended/lending_iterator.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/extended/lending_iterator.base.stderr rename to tests/ui/generic-associated-types/extended/lending_iterator.base.stderr diff --git a/src/test/ui/generic-associated-types/extended/lending_iterator.rs b/tests/ui/generic-associated-types/extended/lending_iterator.rs similarity index 100% rename from src/test/ui/generic-associated-types/extended/lending_iterator.rs rename to tests/ui/generic-associated-types/extended/lending_iterator.rs diff --git a/src/test/ui/generic-associated-types/extended/lending_iterator_2.base.stderr b/tests/ui/generic-associated-types/extended/lending_iterator_2.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/extended/lending_iterator_2.base.stderr rename to tests/ui/generic-associated-types/extended/lending_iterator_2.base.stderr diff --git a/src/test/ui/generic-associated-types/extended/lending_iterator_2.rs b/tests/ui/generic-associated-types/extended/lending_iterator_2.rs similarity index 100% rename from src/test/ui/generic-associated-types/extended/lending_iterator_2.rs rename to tests/ui/generic-associated-types/extended/lending_iterator_2.rs diff --git a/src/test/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.rs b/tests/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.rs similarity index 100% rename from src/test/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.rs rename to tests/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.rs diff --git a/src/test/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.stderr b/tests/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.stderr similarity index 100% rename from src/test/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.stderr rename to tests/ui/generic-associated-types/gat-in-trait-path-undeclared-lifetime.stderr diff --git a/src/test/ui/generic-associated-types/gat-in-trait-path.base.stderr b/tests/ui/generic-associated-types/gat-in-trait-path.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/gat-in-trait-path.base.stderr rename to tests/ui/generic-associated-types/gat-in-trait-path.base.stderr diff --git a/src/test/ui/generic-associated-types/gat-in-trait-path.rs b/tests/ui/generic-associated-types/gat-in-trait-path.rs similarity index 100% rename from src/test/ui/generic-associated-types/gat-in-trait-path.rs rename to tests/ui/generic-associated-types/gat-in-trait-path.rs diff --git a/src/test/ui/generic-associated-types/gat-trait-path-generic-type-arg.rs b/tests/ui/generic-associated-types/gat-trait-path-generic-type-arg.rs similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-generic-type-arg.rs rename to tests/ui/generic-associated-types/gat-trait-path-generic-type-arg.rs diff --git a/src/test/ui/generic-associated-types/gat-trait-path-generic-type-arg.stderr b/tests/ui/generic-associated-types/gat-trait-path-generic-type-arg.stderr similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-generic-type-arg.stderr rename to tests/ui/generic-associated-types/gat-trait-path-generic-type-arg.stderr diff --git a/src/test/ui/generic-associated-types/gat-trait-path-missing-lifetime.rs b/tests/ui/generic-associated-types/gat-trait-path-missing-lifetime.rs similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-missing-lifetime.rs rename to tests/ui/generic-associated-types/gat-trait-path-missing-lifetime.rs diff --git a/src/test/ui/generic-associated-types/gat-trait-path-missing-lifetime.stderr b/tests/ui/generic-associated-types/gat-trait-path-missing-lifetime.stderr similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-missing-lifetime.stderr rename to tests/ui/generic-associated-types/gat-trait-path-missing-lifetime.stderr diff --git a/src/test/ui/generic-associated-types/gat-trait-path-parenthesised-args.rs b/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.rs similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-parenthesised-args.rs rename to tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.rs diff --git a/src/test/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr b/tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr similarity index 100% rename from src/test/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr rename to tests/ui/generic-associated-types/gat-trait-path-parenthesised-args.stderr diff --git a/src/test/ui/generic-associated-types/generic-associated-type-bounds.rs b/tests/ui/generic-associated-types/generic-associated-type-bounds.rs similarity index 100% rename from src/test/ui/generic-associated-types/generic-associated-type-bounds.rs rename to tests/ui/generic-associated-types/generic-associated-type-bounds.rs diff --git a/src/test/ui/generic-associated-types/generic-associated-types-where.rs b/tests/ui/generic-associated-types/generic-associated-types-where.rs similarity index 100% rename from src/test/ui/generic-associated-types/generic-associated-types-where.rs rename to tests/ui/generic-associated-types/generic-associated-types-where.rs diff --git a/src/test/ui/generic-associated-types/generic-associated-types-where.stderr b/tests/ui/generic-associated-types/generic-associated-types-where.stderr similarity index 100% rename from src/test/ui/generic-associated-types/generic-associated-types-where.stderr rename to tests/ui/generic-associated-types/generic-associated-types-where.stderr diff --git a/src/test/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.rs b/tests/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.rs similarity index 100% rename from src/test/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.rs rename to tests/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.rs diff --git a/src/test/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.stderr b/tests/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.stderr similarity index 100% rename from src/test/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.stderr rename to tests/ui/generic-associated-types/generic_associated_type_undeclared_lifetimes.stderr diff --git a/src/test/ui/generic-associated-types/impl_bounds.rs b/tests/ui/generic-associated-types/impl_bounds.rs similarity index 100% rename from src/test/ui/generic-associated-types/impl_bounds.rs rename to tests/ui/generic-associated-types/impl_bounds.rs diff --git a/src/test/ui/generic-associated-types/impl_bounds.stderr b/tests/ui/generic-associated-types/impl_bounds.stderr similarity index 100% rename from src/test/ui/generic-associated-types/impl_bounds.stderr rename to tests/ui/generic-associated-types/impl_bounds.stderr diff --git a/src/test/ui/generic-associated-types/impl_bounds_ok.rs b/tests/ui/generic-associated-types/impl_bounds_ok.rs similarity index 100% rename from src/test/ui/generic-associated-types/impl_bounds_ok.rs rename to tests/ui/generic-associated-types/impl_bounds_ok.rs diff --git a/src/test/ui/generic-associated-types/issue-101020.rs b/tests/ui/generic-associated-types/issue-101020.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-101020.rs rename to tests/ui/generic-associated-types/issue-101020.rs diff --git a/src/test/ui/generic-associated-types/issue-101020.stderr b/tests/ui/generic-associated-types/issue-101020.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-101020.stderr rename to tests/ui/generic-associated-types/issue-101020.stderr diff --git a/src/test/ui/generic-associated-types/issue-102114.rs b/tests/ui/generic-associated-types/issue-102114.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-102114.rs rename to tests/ui/generic-associated-types/issue-102114.rs diff --git a/src/test/ui/generic-associated-types/issue-102114.stderr b/tests/ui/generic-associated-types/issue-102114.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-102114.stderr rename to tests/ui/generic-associated-types/issue-102114.stderr diff --git a/src/test/ui/generic-associated-types/issue-102333.rs b/tests/ui/generic-associated-types/issue-102333.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-102333.rs rename to tests/ui/generic-associated-types/issue-102333.rs diff --git a/src/test/ui/generic-associated-types/issue-102335-gat.rs b/tests/ui/generic-associated-types/issue-102335-gat.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-102335-gat.rs rename to tests/ui/generic-associated-types/issue-102335-gat.rs diff --git a/src/test/ui/generic-associated-types/issue-102335-gat.stderr b/tests/ui/generic-associated-types/issue-102335-gat.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-102335-gat.stderr rename to tests/ui/generic-associated-types/issue-102335-gat.stderr diff --git a/src/test/ui/generic-associated-types/issue-47206-where-clause.rs b/tests/ui/generic-associated-types/issue-47206-where-clause.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-47206-where-clause.rs rename to tests/ui/generic-associated-types/issue-47206-where-clause.rs diff --git a/src/test/ui/generic-associated-types/issue-47206-where-clause.stderr b/tests/ui/generic-associated-types/issue-47206-where-clause.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-47206-where-clause.stderr rename to tests/ui/generic-associated-types/issue-47206-where-clause.stderr diff --git a/src/test/ui/generic-associated-types/issue-58694-parameter-out-of-range.rs b/tests/ui/generic-associated-types/issue-58694-parameter-out-of-range.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-58694-parameter-out-of-range.rs rename to tests/ui/generic-associated-types/issue-58694-parameter-out-of-range.rs diff --git a/src/test/ui/generic-associated-types/issue-62326-parameter-out-of-range.rs b/tests/ui/generic-associated-types/issue-62326-parameter-out-of-range.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-62326-parameter-out-of-range.rs rename to tests/ui/generic-associated-types/issue-62326-parameter-out-of-range.rs diff --git a/src/test/ui/generic-associated-types/issue-67424.rs b/tests/ui/generic-associated-types/issue-67424.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-67424.rs rename to tests/ui/generic-associated-types/issue-67424.rs diff --git a/src/test/ui/generic-associated-types/issue-67510-pass.base.stderr b/tests/ui/generic-associated-types/issue-67510-pass.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-67510-pass.base.stderr rename to tests/ui/generic-associated-types/issue-67510-pass.base.stderr diff --git a/src/test/ui/generic-associated-types/issue-67510-pass.rs b/tests/ui/generic-associated-types/issue-67510-pass.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-67510-pass.rs rename to tests/ui/generic-associated-types/issue-67510-pass.rs diff --git a/src/test/ui/generic-associated-types/issue-67510.rs b/tests/ui/generic-associated-types/issue-67510.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-67510.rs rename to tests/ui/generic-associated-types/issue-67510.rs diff --git a/src/test/ui/generic-associated-types/issue-67510.stderr b/tests/ui/generic-associated-types/issue-67510.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-67510.stderr rename to tests/ui/generic-associated-types/issue-67510.stderr diff --git a/src/test/ui/generic-associated-types/issue-68641-check-gat-bounds.rs b/tests/ui/generic-associated-types/issue-68641-check-gat-bounds.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68641-check-gat-bounds.rs rename to tests/ui/generic-associated-types/issue-68641-check-gat-bounds.rs diff --git a/src/test/ui/generic-associated-types/issue-68641-check-gat-bounds.stderr b/tests/ui/generic-associated-types/issue-68641-check-gat-bounds.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68641-check-gat-bounds.stderr rename to tests/ui/generic-associated-types/issue-68641-check-gat-bounds.stderr diff --git a/src/test/ui/generic-associated-types/issue-68642-broken-llvm-ir.rs b/tests/ui/generic-associated-types/issue-68642-broken-llvm-ir.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68642-broken-llvm-ir.rs rename to tests/ui/generic-associated-types/issue-68642-broken-llvm-ir.rs diff --git a/src/test/ui/generic-associated-types/issue-68642-broken-llvm-ir.stderr b/tests/ui/generic-associated-types/issue-68642-broken-llvm-ir.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68642-broken-llvm-ir.stderr rename to tests/ui/generic-associated-types/issue-68642-broken-llvm-ir.stderr diff --git a/src/test/ui/generic-associated-types/issue-68643-broken-mir.rs b/tests/ui/generic-associated-types/issue-68643-broken-mir.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68643-broken-mir.rs rename to tests/ui/generic-associated-types/issue-68643-broken-mir.rs diff --git a/src/test/ui/generic-associated-types/issue-68643-broken-mir.stderr b/tests/ui/generic-associated-types/issue-68643-broken-mir.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68643-broken-mir.stderr rename to tests/ui/generic-associated-types/issue-68643-broken-mir.stderr diff --git a/src/test/ui/generic-associated-types/issue-68644-codegen-selection.rs b/tests/ui/generic-associated-types/issue-68644-codegen-selection.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68644-codegen-selection.rs rename to tests/ui/generic-associated-types/issue-68644-codegen-selection.rs diff --git a/src/test/ui/generic-associated-types/issue-68644-codegen-selection.stderr b/tests/ui/generic-associated-types/issue-68644-codegen-selection.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68644-codegen-selection.stderr rename to tests/ui/generic-associated-types/issue-68644-codegen-selection.stderr diff --git a/src/test/ui/generic-associated-types/issue-68645-codegen-fulfillment.rs b/tests/ui/generic-associated-types/issue-68645-codegen-fulfillment.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68645-codegen-fulfillment.rs rename to tests/ui/generic-associated-types/issue-68645-codegen-fulfillment.rs diff --git a/src/test/ui/generic-associated-types/issue-68645-codegen-fulfillment.stderr b/tests/ui/generic-associated-types/issue-68645-codegen-fulfillment.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68645-codegen-fulfillment.stderr rename to tests/ui/generic-associated-types/issue-68645-codegen-fulfillment.stderr diff --git a/src/test/ui/generic-associated-types/issue-68648-1.rs b/tests/ui/generic-associated-types/issue-68648-1.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68648-1.rs rename to tests/ui/generic-associated-types/issue-68648-1.rs diff --git a/src/test/ui/generic-associated-types/issue-68648-2.rs b/tests/ui/generic-associated-types/issue-68648-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68648-2.rs rename to tests/ui/generic-associated-types/issue-68648-2.rs diff --git a/src/test/ui/generic-associated-types/issue-68648-2.stderr b/tests/ui/generic-associated-types/issue-68648-2.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68648-2.stderr rename to tests/ui/generic-associated-types/issue-68648-2.stderr diff --git a/src/test/ui/generic-associated-types/issue-68649-pass.rs b/tests/ui/generic-associated-types/issue-68649-pass.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68649-pass.rs rename to tests/ui/generic-associated-types/issue-68649-pass.rs diff --git a/src/test/ui/generic-associated-types/issue-68653.rs b/tests/ui/generic-associated-types/issue-68653.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68653.rs rename to tests/ui/generic-associated-types/issue-68653.rs diff --git a/src/test/ui/generic-associated-types/issue-68656-unsized-values.rs b/tests/ui/generic-associated-types/issue-68656-unsized-values.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-68656-unsized-values.rs rename to tests/ui/generic-associated-types/issue-68656-unsized-values.rs diff --git a/src/test/ui/generic-associated-types/issue-68656-unsized-values.stderr b/tests/ui/generic-associated-types/issue-68656-unsized-values.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-68656-unsized-values.stderr rename to tests/ui/generic-associated-types/issue-68656-unsized-values.stderr diff --git a/src/test/ui/generic-associated-types/issue-70303.rs b/tests/ui/generic-associated-types/issue-70303.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-70303.rs rename to tests/ui/generic-associated-types/issue-70303.rs diff --git a/src/test/ui/generic-associated-types/issue-70304.rs b/tests/ui/generic-associated-types/issue-70304.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-70304.rs rename to tests/ui/generic-associated-types/issue-70304.rs diff --git a/src/test/ui/generic-associated-types/issue-70304.stderr b/tests/ui/generic-associated-types/issue-70304.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-70304.stderr rename to tests/ui/generic-associated-types/issue-70304.stderr diff --git a/src/test/ui/generic-associated-types/issue-71176.rs b/tests/ui/generic-associated-types/issue-71176.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-71176.rs rename to tests/ui/generic-associated-types/issue-71176.rs diff --git a/src/test/ui/generic-associated-types/issue-71176.stderr b/tests/ui/generic-associated-types/issue-71176.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-71176.stderr rename to tests/ui/generic-associated-types/issue-71176.stderr diff --git a/src/test/ui/generic-associated-types/issue-74684-1.rs b/tests/ui/generic-associated-types/issue-74684-1.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-74684-1.rs rename to tests/ui/generic-associated-types/issue-74684-1.rs diff --git a/src/test/ui/generic-associated-types/issue-74684-1.stderr b/tests/ui/generic-associated-types/issue-74684-1.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-74684-1.stderr rename to tests/ui/generic-associated-types/issue-74684-1.stderr diff --git a/src/test/ui/generic-associated-types/issue-74684-2.rs b/tests/ui/generic-associated-types/issue-74684-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-74684-2.rs rename to tests/ui/generic-associated-types/issue-74684-2.rs diff --git a/src/test/ui/generic-associated-types/issue-74684-2.stderr b/tests/ui/generic-associated-types/issue-74684-2.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-74684-2.stderr rename to tests/ui/generic-associated-types/issue-74684-2.stderr diff --git a/src/test/ui/generic-associated-types/issue-74816.rs b/tests/ui/generic-associated-types/issue-74816.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-74816.rs rename to tests/ui/generic-associated-types/issue-74816.rs diff --git a/src/test/ui/generic-associated-types/issue-74816.stderr b/tests/ui/generic-associated-types/issue-74816.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-74816.stderr rename to tests/ui/generic-associated-types/issue-74816.stderr diff --git a/src/test/ui/generic-associated-types/issue-74824.rs b/tests/ui/generic-associated-types/issue-74824.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-74824.rs rename to tests/ui/generic-associated-types/issue-74824.rs diff --git a/src/test/ui/generic-associated-types/issue-74824.stderr b/tests/ui/generic-associated-types/issue-74824.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-74824.stderr rename to tests/ui/generic-associated-types/issue-74824.stderr diff --git a/src/test/ui/generic-associated-types/issue-76407.rs b/tests/ui/generic-associated-types/issue-76407.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-76407.rs rename to tests/ui/generic-associated-types/issue-76407.rs diff --git a/src/test/ui/generic-associated-types/issue-76535.base.stderr b/tests/ui/generic-associated-types/issue-76535.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-76535.base.stderr rename to tests/ui/generic-associated-types/issue-76535.base.stderr diff --git a/src/test/ui/generic-associated-types/issue-76535.extended.stderr b/tests/ui/generic-associated-types/issue-76535.extended.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-76535.extended.stderr rename to tests/ui/generic-associated-types/issue-76535.extended.stderr diff --git a/src/test/ui/generic-associated-types/issue-76535.rs b/tests/ui/generic-associated-types/issue-76535.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-76535.rs rename to tests/ui/generic-associated-types/issue-76535.rs diff --git a/src/test/ui/generic-associated-types/issue-76826.rs b/tests/ui/generic-associated-types/issue-76826.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-76826.rs rename to tests/ui/generic-associated-types/issue-76826.rs diff --git a/src/test/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs b/tests/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs rename to tests/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.rs diff --git a/src/test/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.stderr b/tests/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.stderr rename to tests/ui/generic-associated-types/issue-78113-lifetime-mismatch-dyn-trait-box.stderr diff --git a/src/test/ui/generic-associated-types/issue-78671.base.stderr b/tests/ui/generic-associated-types/issue-78671.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-78671.base.stderr rename to tests/ui/generic-associated-types/issue-78671.base.stderr diff --git a/src/test/ui/generic-associated-types/issue-78671.extended.stderr b/tests/ui/generic-associated-types/issue-78671.extended.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-78671.extended.stderr rename to tests/ui/generic-associated-types/issue-78671.extended.stderr diff --git a/src/test/ui/generic-associated-types/issue-78671.rs b/tests/ui/generic-associated-types/issue-78671.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-78671.rs rename to tests/ui/generic-associated-types/issue-78671.rs diff --git a/src/test/ui/generic-associated-types/issue-79422.base.stderr b/tests/ui/generic-associated-types/issue-79422.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-79422.base.stderr rename to tests/ui/generic-associated-types/issue-79422.base.stderr diff --git a/src/test/ui/generic-associated-types/issue-79422.extended.stderr b/tests/ui/generic-associated-types/issue-79422.extended.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-79422.extended.stderr rename to tests/ui/generic-associated-types/issue-79422.extended.stderr diff --git a/src/test/ui/generic-associated-types/issue-79422.rs b/tests/ui/generic-associated-types/issue-79422.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-79422.rs rename to tests/ui/generic-associated-types/issue-79422.rs diff --git a/src/test/ui/generic-associated-types/issue-79636-1.rs b/tests/ui/generic-associated-types/issue-79636-1.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-79636-1.rs rename to tests/ui/generic-associated-types/issue-79636-1.rs diff --git a/src/test/ui/generic-associated-types/issue-79636-1.stderr b/tests/ui/generic-associated-types/issue-79636-1.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-79636-1.stderr rename to tests/ui/generic-associated-types/issue-79636-1.stderr diff --git a/src/test/ui/generic-associated-types/issue-79636-2.rs b/tests/ui/generic-associated-types/issue-79636-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-79636-2.rs rename to tests/ui/generic-associated-types/issue-79636-2.rs diff --git a/src/test/ui/generic-associated-types/issue-79636-2.stderr b/tests/ui/generic-associated-types/issue-79636-2.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-79636-2.stderr rename to tests/ui/generic-associated-types/issue-79636-2.stderr diff --git a/src/test/ui/generic-associated-types/issue-80433-reduced.rs b/tests/ui/generic-associated-types/issue-80433-reduced.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-80433-reduced.rs rename to tests/ui/generic-associated-types/issue-80433-reduced.rs diff --git a/src/test/ui/generic-associated-types/issue-80433.rs b/tests/ui/generic-associated-types/issue-80433.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-80433.rs rename to tests/ui/generic-associated-types/issue-80433.rs diff --git a/src/test/ui/generic-associated-types/issue-80433.stderr b/tests/ui/generic-associated-types/issue-80433.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-80433.stderr rename to tests/ui/generic-associated-types/issue-80433.stderr diff --git a/src/test/ui/generic-associated-types/issue-81487.rs b/tests/ui/generic-associated-types/issue-81487.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-81487.rs rename to tests/ui/generic-associated-types/issue-81487.rs diff --git a/src/test/ui/generic-associated-types/issue-81712-cyclic-traits.rs b/tests/ui/generic-associated-types/issue-81712-cyclic-traits.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-81712-cyclic-traits.rs rename to tests/ui/generic-associated-types/issue-81712-cyclic-traits.rs diff --git a/src/test/ui/generic-associated-types/issue-81712-cyclic-traits.stderr b/tests/ui/generic-associated-types/issue-81712-cyclic-traits.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-81712-cyclic-traits.stderr rename to tests/ui/generic-associated-types/issue-81712-cyclic-traits.stderr diff --git a/src/test/ui/generic-associated-types/issue-81862.rs b/tests/ui/generic-associated-types/issue-81862.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-81862.rs rename to tests/ui/generic-associated-types/issue-81862.rs diff --git a/src/test/ui/generic-associated-types/issue-81862.stderr b/tests/ui/generic-associated-types/issue-81862.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-81862.stderr rename to tests/ui/generic-associated-types/issue-81862.stderr diff --git a/src/test/ui/generic-associated-types/issue-84931.rs b/tests/ui/generic-associated-types/issue-84931.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-84931.rs rename to tests/ui/generic-associated-types/issue-84931.rs diff --git a/src/test/ui/generic-associated-types/issue-84931.stderr b/tests/ui/generic-associated-types/issue-84931.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-84931.stderr rename to tests/ui/generic-associated-types/issue-84931.stderr diff --git a/src/test/ui/generic-associated-types/issue-85921.rs b/tests/ui/generic-associated-types/issue-85921.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-85921.rs rename to tests/ui/generic-associated-types/issue-85921.rs diff --git a/src/test/ui/generic-associated-types/issue-86218-2.rs b/tests/ui/generic-associated-types/issue-86218-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-86218-2.rs rename to tests/ui/generic-associated-types/issue-86218-2.rs diff --git a/src/test/ui/generic-associated-types/issue-86218.rs b/tests/ui/generic-associated-types/issue-86218.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-86218.rs rename to tests/ui/generic-associated-types/issue-86218.rs diff --git a/src/test/ui/generic-associated-types/issue-86483.rs b/tests/ui/generic-associated-types/issue-86483.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-86483.rs rename to tests/ui/generic-associated-types/issue-86483.rs diff --git a/src/test/ui/generic-associated-types/issue-86787.rs b/tests/ui/generic-associated-types/issue-86787.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-86787.rs rename to tests/ui/generic-associated-types/issue-86787.rs diff --git a/src/test/ui/generic-associated-types/issue-86787.stderr b/tests/ui/generic-associated-types/issue-86787.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-86787.stderr rename to tests/ui/generic-associated-types/issue-86787.stderr diff --git a/src/test/ui/generic-associated-types/issue-87258_a.rs b/tests/ui/generic-associated-types/issue-87258_a.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87258_a.rs rename to tests/ui/generic-associated-types/issue-87258_a.rs diff --git a/src/test/ui/generic-associated-types/issue-87258_a.stderr b/tests/ui/generic-associated-types/issue-87258_a.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-87258_a.stderr rename to tests/ui/generic-associated-types/issue-87258_a.stderr diff --git a/src/test/ui/generic-associated-types/issue-87258_b.rs b/tests/ui/generic-associated-types/issue-87258_b.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87258_b.rs rename to tests/ui/generic-associated-types/issue-87258_b.rs diff --git a/src/test/ui/generic-associated-types/issue-87258_b.stderr b/tests/ui/generic-associated-types/issue-87258_b.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-87258_b.stderr rename to tests/ui/generic-associated-types/issue-87258_b.stderr diff --git a/src/test/ui/generic-associated-types/issue-87429-2.rs b/tests/ui/generic-associated-types/issue-87429-2.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429-2.rs rename to tests/ui/generic-associated-types/issue-87429-2.rs diff --git a/src/test/ui/generic-associated-types/issue-87429-associated-type-default.rs b/tests/ui/generic-associated-types/issue-87429-associated-type-default.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429-associated-type-default.rs rename to tests/ui/generic-associated-types/issue-87429-associated-type-default.rs diff --git a/src/test/ui/generic-associated-types/issue-87429-associated-type-default.stderr b/tests/ui/generic-associated-types/issue-87429-associated-type-default.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429-associated-type-default.stderr rename to tests/ui/generic-associated-types/issue-87429-associated-type-default.stderr diff --git a/src/test/ui/generic-associated-types/issue-87429-specialization.rs b/tests/ui/generic-associated-types/issue-87429-specialization.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429-specialization.rs rename to tests/ui/generic-associated-types/issue-87429-specialization.rs diff --git a/src/test/ui/generic-associated-types/issue-87429-specialization.stderr b/tests/ui/generic-associated-types/issue-87429-specialization.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429-specialization.stderr rename to tests/ui/generic-associated-types/issue-87429-specialization.stderr diff --git a/src/test/ui/generic-associated-types/issue-87429.rs b/tests/ui/generic-associated-types/issue-87429.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87429.rs rename to tests/ui/generic-associated-types/issue-87429.rs diff --git a/src/test/ui/generic-associated-types/issue-87748.rs b/tests/ui/generic-associated-types/issue-87748.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87748.rs rename to tests/ui/generic-associated-types/issue-87748.rs diff --git a/src/test/ui/generic-associated-types/issue-87750.rs b/tests/ui/generic-associated-types/issue-87750.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-87750.rs rename to tests/ui/generic-associated-types/issue-87750.rs diff --git a/src/test/ui/generic-associated-types/issue-88287.rs b/tests/ui/generic-associated-types/issue-88287.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-88287.rs rename to tests/ui/generic-associated-types/issue-88287.rs diff --git a/src/test/ui/generic-associated-types/issue-88287.stderr b/tests/ui/generic-associated-types/issue-88287.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-88287.stderr rename to tests/ui/generic-associated-types/issue-88287.stderr diff --git a/src/test/ui/generic-associated-types/issue-88360.rs b/tests/ui/generic-associated-types/issue-88360.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-88360.rs rename to tests/ui/generic-associated-types/issue-88360.rs diff --git a/src/test/ui/generic-associated-types/issue-88360.stderr b/tests/ui/generic-associated-types/issue-88360.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-88360.stderr rename to tests/ui/generic-associated-types/issue-88360.stderr diff --git a/src/test/ui/generic-associated-types/issue-88405.rs b/tests/ui/generic-associated-types/issue-88405.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-88405.rs rename to tests/ui/generic-associated-types/issue-88405.rs diff --git a/src/test/ui/generic-associated-types/issue-88459.rs b/tests/ui/generic-associated-types/issue-88459.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-88459.rs rename to tests/ui/generic-associated-types/issue-88459.rs diff --git a/src/test/ui/generic-associated-types/issue-88595.rs b/tests/ui/generic-associated-types/issue-88595.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-88595.rs rename to tests/ui/generic-associated-types/issue-88595.rs diff --git a/src/test/ui/generic-associated-types/issue-88595.stderr b/tests/ui/generic-associated-types/issue-88595.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-88595.stderr rename to tests/ui/generic-associated-types/issue-88595.stderr diff --git a/src/test/ui/generic-associated-types/issue-89008.rs b/tests/ui/generic-associated-types/issue-89008.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-89008.rs rename to tests/ui/generic-associated-types/issue-89008.rs diff --git a/src/test/ui/generic-associated-types/issue-89352.rs b/tests/ui/generic-associated-types/issue-89352.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-89352.rs rename to tests/ui/generic-associated-types/issue-89352.rs diff --git a/src/test/ui/generic-associated-types/issue-90014.rs b/tests/ui/generic-associated-types/issue-90014.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-90014.rs rename to tests/ui/generic-associated-types/issue-90014.rs diff --git a/src/test/ui/generic-associated-types/issue-90014.stderr b/tests/ui/generic-associated-types/issue-90014.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-90014.stderr rename to tests/ui/generic-associated-types/issue-90014.stderr diff --git a/src/test/ui/generic-associated-types/issue-90729.rs b/tests/ui/generic-associated-types/issue-90729.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-90729.rs rename to tests/ui/generic-associated-types/issue-90729.rs diff --git a/src/test/ui/generic-associated-types/issue-91139.migrate.stderr b/tests/ui/generic-associated-types/issue-91139.migrate.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-91139.migrate.stderr rename to tests/ui/generic-associated-types/issue-91139.migrate.stderr diff --git a/src/test/ui/generic-associated-types/issue-91139.rs b/tests/ui/generic-associated-types/issue-91139.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-91139.rs rename to tests/ui/generic-associated-types/issue-91139.rs diff --git a/src/test/ui/generic-associated-types/issue-91139.stderr b/tests/ui/generic-associated-types/issue-91139.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-91139.stderr rename to tests/ui/generic-associated-types/issue-91139.stderr diff --git a/src/test/ui/generic-associated-types/issue-91883.rs b/tests/ui/generic-associated-types/issue-91883.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-91883.rs rename to tests/ui/generic-associated-types/issue-91883.rs diff --git a/src/test/ui/generic-associated-types/issue-91883.stderr b/tests/ui/generic-associated-types/issue-91883.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-91883.stderr rename to tests/ui/generic-associated-types/issue-91883.stderr diff --git a/src/test/ui/generic-associated-types/issue-92033.rs b/tests/ui/generic-associated-types/issue-92033.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-92033.rs rename to tests/ui/generic-associated-types/issue-92033.rs diff --git a/src/test/ui/generic-associated-types/issue-92033.stderr b/tests/ui/generic-associated-types/issue-92033.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-92033.stderr rename to tests/ui/generic-associated-types/issue-92033.stderr diff --git a/src/test/ui/generic-associated-types/issue-92096.migrate.stderr b/tests/ui/generic-associated-types/issue-92096.migrate.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-92096.migrate.stderr rename to tests/ui/generic-associated-types/issue-92096.migrate.stderr diff --git a/src/test/ui/generic-associated-types/issue-92096.rs b/tests/ui/generic-associated-types/issue-92096.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-92096.rs rename to tests/ui/generic-associated-types/issue-92096.rs diff --git a/src/test/ui/generic-associated-types/issue-92096.stderr b/tests/ui/generic-associated-types/issue-92096.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-92096.stderr rename to tests/ui/generic-associated-types/issue-92096.stderr diff --git a/src/test/ui/generic-associated-types/issue-92280.rs b/tests/ui/generic-associated-types/issue-92280.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-92280.rs rename to tests/ui/generic-associated-types/issue-92280.rs diff --git a/src/test/ui/generic-associated-types/issue-92954.rs b/tests/ui/generic-associated-types/issue-92954.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-92954.rs rename to tests/ui/generic-associated-types/issue-92954.rs diff --git a/src/test/ui/generic-associated-types/issue-93141.rs b/tests/ui/generic-associated-types/issue-93141.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93141.rs rename to tests/ui/generic-associated-types/issue-93141.rs diff --git a/src/test/ui/generic-associated-types/issue-93262.rs b/tests/ui/generic-associated-types/issue-93262.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93262.rs rename to tests/ui/generic-associated-types/issue-93262.rs diff --git a/src/test/ui/generic-associated-types/issue-93340.rs b/tests/ui/generic-associated-types/issue-93340.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93340.rs rename to tests/ui/generic-associated-types/issue-93340.rs diff --git a/src/test/ui/generic-associated-types/issue-93341.rs b/tests/ui/generic-associated-types/issue-93341.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93341.rs rename to tests/ui/generic-associated-types/issue-93341.rs diff --git a/src/test/ui/generic-associated-types/issue-93342.rs b/tests/ui/generic-associated-types/issue-93342.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93342.rs rename to tests/ui/generic-associated-types/issue-93342.rs diff --git a/src/test/ui/generic-associated-types/issue-93874.rs b/tests/ui/generic-associated-types/issue-93874.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-93874.rs rename to tests/ui/generic-associated-types/issue-93874.rs diff --git a/src/test/ui/generic-associated-types/issue-95305.rs b/tests/ui/generic-associated-types/issue-95305.rs similarity index 100% rename from src/test/ui/generic-associated-types/issue-95305.rs rename to tests/ui/generic-associated-types/issue-95305.rs diff --git a/src/test/ui/generic-associated-types/issue-95305.stderr b/tests/ui/generic-associated-types/issue-95305.stderr similarity index 100% rename from src/test/ui/generic-associated-types/issue-95305.stderr rename to tests/ui/generic-associated-types/issue-95305.stderr diff --git a/src/test/ui/generic-associated-types/iterable.rs b/tests/ui/generic-associated-types/iterable.rs similarity index 100% rename from src/test/ui/generic-associated-types/iterable.rs rename to tests/ui/generic-associated-types/iterable.rs diff --git a/src/test/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs b/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs similarity index 100% rename from src/test/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs rename to tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs diff --git a/src/test/ui/generic-associated-types/method-unsatified-assoc-type-predicate.stderr b/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.stderr similarity index 100% rename from src/test/ui/generic-associated-types/method-unsatified-assoc-type-predicate.stderr rename to tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.stderr diff --git a/src/test/ui/generic-associated-types/mismatched-where-clause-regions.rs b/tests/ui/generic-associated-types/mismatched-where-clause-regions.rs similarity index 100% rename from src/test/ui/generic-associated-types/mismatched-where-clause-regions.rs rename to tests/ui/generic-associated-types/mismatched-where-clause-regions.rs diff --git a/src/test/ui/generic-associated-types/mismatched-where-clause-regions.stderr b/tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr similarity index 100% rename from src/test/ui/generic-associated-types/mismatched-where-clause-regions.stderr rename to tests/ui/generic-associated-types/mismatched-where-clause-regions.stderr diff --git a/src/test/ui/generic-associated-types/missing-bounds.fixed b/tests/ui/generic-associated-types/missing-bounds.fixed similarity index 100% rename from src/test/ui/generic-associated-types/missing-bounds.fixed rename to tests/ui/generic-associated-types/missing-bounds.fixed diff --git a/src/test/ui/generic-associated-types/missing-bounds.rs b/tests/ui/generic-associated-types/missing-bounds.rs similarity index 100% rename from src/test/ui/generic-associated-types/missing-bounds.rs rename to tests/ui/generic-associated-types/missing-bounds.rs diff --git a/src/test/ui/generic-associated-types/missing-bounds.stderr b/tests/ui/generic-associated-types/missing-bounds.stderr similarity index 100% rename from src/test/ui/generic-associated-types/missing-bounds.stderr rename to tests/ui/generic-associated-types/missing-bounds.stderr diff --git a/src/test/ui/generic-associated-types/missing-where-clause-on-trait.rs b/tests/ui/generic-associated-types/missing-where-clause-on-trait.rs similarity index 100% rename from src/test/ui/generic-associated-types/missing-where-clause-on-trait.rs rename to tests/ui/generic-associated-types/missing-where-clause-on-trait.rs diff --git a/src/test/ui/generic-associated-types/missing-where-clause-on-trait.stderr b/tests/ui/generic-associated-types/missing-where-clause-on-trait.stderr similarity index 100% rename from src/test/ui/generic-associated-types/missing-where-clause-on-trait.stderr rename to tests/ui/generic-associated-types/missing-where-clause-on-trait.stderr diff --git a/src/test/ui/generic-associated-types/missing_lifetime_args.rs b/tests/ui/generic-associated-types/missing_lifetime_args.rs similarity index 100% rename from src/test/ui/generic-associated-types/missing_lifetime_args.rs rename to tests/ui/generic-associated-types/missing_lifetime_args.rs diff --git a/src/test/ui/generic-associated-types/missing_lifetime_args.stderr b/tests/ui/generic-associated-types/missing_lifetime_args.stderr similarity index 100% rename from src/test/ui/generic-associated-types/missing_lifetime_args.stderr rename to tests/ui/generic-associated-types/missing_lifetime_args.stderr diff --git a/src/test/ui/generic-associated-types/missing_lifetime_const.rs b/tests/ui/generic-associated-types/missing_lifetime_const.rs similarity index 100% rename from src/test/ui/generic-associated-types/missing_lifetime_const.rs rename to tests/ui/generic-associated-types/missing_lifetime_const.rs diff --git a/src/test/ui/generic-associated-types/missing_lifetime_const.stderr b/tests/ui/generic-associated-types/missing_lifetime_const.stderr similarity index 100% rename from src/test/ui/generic-associated-types/missing_lifetime_const.stderr rename to tests/ui/generic-associated-types/missing_lifetime_const.stderr diff --git a/src/test/ui/generic-associated-types/own-bound-span.rs b/tests/ui/generic-associated-types/own-bound-span.rs similarity index 100% rename from src/test/ui/generic-associated-types/own-bound-span.rs rename to tests/ui/generic-associated-types/own-bound-span.rs diff --git a/src/test/ui/generic-associated-types/own-bound-span.stderr b/tests/ui/generic-associated-types/own-bound-span.stderr similarity index 100% rename from src/test/ui/generic-associated-types/own-bound-span.stderr rename to tests/ui/generic-associated-types/own-bound-span.stderr diff --git a/src/test/ui/generic-associated-types/parameter_number_and_kind.rs b/tests/ui/generic-associated-types/parameter_number_and_kind.rs similarity index 100% rename from src/test/ui/generic-associated-types/parameter_number_and_kind.rs rename to tests/ui/generic-associated-types/parameter_number_and_kind.rs diff --git a/src/test/ui/generic-associated-types/parameter_number_and_kind.stderr b/tests/ui/generic-associated-types/parameter_number_and_kind.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parameter_number_and_kind.stderr rename to tests/ui/generic-associated-types/parameter_number_and_kind.stderr diff --git a/src/test/ui/generic-associated-types/parameter_number_and_kind_impl.rs b/tests/ui/generic-associated-types/parameter_number_and_kind_impl.rs similarity index 100% rename from src/test/ui/generic-associated-types/parameter_number_and_kind_impl.rs rename to tests/ui/generic-associated-types/parameter_number_and_kind_impl.rs diff --git a/src/test/ui/generic-associated-types/parameter_number_and_kind_impl.stderr b/tests/ui/generic-associated-types/parameter_number_and_kind_impl.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parameter_number_and_kind_impl.stderr rename to tests/ui/generic-associated-types/parameter_number_and_kind_impl.stderr diff --git a/src/test/ui/generic-associated-types/parse/in-trait-impl.rs b/tests/ui/generic-associated-types/parse/in-trait-impl.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/in-trait-impl.rs rename to tests/ui/generic-associated-types/parse/in-trait-impl.rs diff --git a/src/test/ui/generic-associated-types/parse/in-trait.rs b/tests/ui/generic-associated-types/parse/in-trait.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/in-trait.rs rename to tests/ui/generic-associated-types/parse/in-trait.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-expected-token.rs b/tests/ui/generic-associated-types/parse/trait-path-expected-token.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-expected-token.rs rename to tests/ui/generic-associated-types/parse/trait-path-expected-token.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-expected-token.stderr b/tests/ui/generic-associated-types/parse/trait-path-expected-token.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-expected-token.stderr rename to tests/ui/generic-associated-types/parse/trait-path-expected-token.stderr diff --git a/src/test/ui/generic-associated-types/parse/trait-path-expressions.rs b/tests/ui/generic-associated-types/parse/trait-path-expressions.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-expressions.rs rename to tests/ui/generic-associated-types/parse/trait-path-expressions.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-expressions.stderr b/tests/ui/generic-associated-types/parse/trait-path-expressions.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-expressions.stderr rename to tests/ui/generic-associated-types/parse/trait-path-expressions.stderr diff --git a/src/test/ui/generic-associated-types/parse/trait-path-missing-gen_arg.rs b/tests/ui/generic-associated-types/parse/trait-path-missing-gen_arg.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-missing-gen_arg.rs rename to tests/ui/generic-associated-types/parse/trait-path-missing-gen_arg.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-missing-gen_arg.stderr b/tests/ui/generic-associated-types/parse/trait-path-missing-gen_arg.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-missing-gen_arg.stderr rename to tests/ui/generic-associated-types/parse/trait-path-missing-gen_arg.stderr diff --git a/src/test/ui/generic-associated-types/parse/trait-path-segments.rs b/tests/ui/generic-associated-types/parse/trait-path-segments.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-segments.rs rename to tests/ui/generic-associated-types/parse/trait-path-segments.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-segments.stderr b/tests/ui/generic-associated-types/parse/trait-path-segments.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-segments.stderr rename to tests/ui/generic-associated-types/parse/trait-path-segments.stderr diff --git a/src/test/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs b/tests/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs rename to tests/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.stderr b/tests/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.stderr rename to tests/ui/generic-associated-types/parse/trait-path-type-error-once-implemented.stderr diff --git a/src/test/ui/generic-associated-types/parse/trait-path-types.rs b/tests/ui/generic-associated-types/parse/trait-path-types.rs similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-types.rs rename to tests/ui/generic-associated-types/parse/trait-path-types.rs diff --git a/src/test/ui/generic-associated-types/parse/trait-path-types.stderr b/tests/ui/generic-associated-types/parse/trait-path-types.stderr similarity index 100% rename from src/test/ui/generic-associated-types/parse/trait-path-types.stderr rename to tests/ui/generic-associated-types/parse/trait-path-types.stderr diff --git a/src/test/ui/generic-associated-types/pointer_family.rs b/tests/ui/generic-associated-types/pointer_family.rs similarity index 100% rename from src/test/ui/generic-associated-types/pointer_family.rs rename to tests/ui/generic-associated-types/pointer_family.rs diff --git a/src/test/ui/generic-associated-types/projection-bound-cycle-generic.rs b/tests/ui/generic-associated-types/projection-bound-cycle-generic.rs similarity index 100% rename from src/test/ui/generic-associated-types/projection-bound-cycle-generic.rs rename to tests/ui/generic-associated-types/projection-bound-cycle-generic.rs diff --git a/src/test/ui/generic-associated-types/projection-bound-cycle-generic.stderr b/tests/ui/generic-associated-types/projection-bound-cycle-generic.stderr similarity index 100% rename from src/test/ui/generic-associated-types/projection-bound-cycle-generic.stderr rename to tests/ui/generic-associated-types/projection-bound-cycle-generic.stderr diff --git a/src/test/ui/generic-associated-types/projection-bound-cycle.rs b/tests/ui/generic-associated-types/projection-bound-cycle.rs similarity index 100% rename from src/test/ui/generic-associated-types/projection-bound-cycle.rs rename to tests/ui/generic-associated-types/projection-bound-cycle.rs diff --git a/src/test/ui/generic-associated-types/projection-bound-cycle.stderr b/tests/ui/generic-associated-types/projection-bound-cycle.stderr similarity index 100% rename from src/test/ui/generic-associated-types/projection-bound-cycle.stderr rename to tests/ui/generic-associated-types/projection-bound-cycle.stderr diff --git a/src/test/ui/generic-associated-types/projection-type-lifetime-mismatch.rs b/tests/ui/generic-associated-types/projection-type-lifetime-mismatch.rs similarity index 100% rename from src/test/ui/generic-associated-types/projection-type-lifetime-mismatch.rs rename to tests/ui/generic-associated-types/projection-type-lifetime-mismatch.rs diff --git a/src/test/ui/generic-associated-types/projection-type-lifetime-mismatch.stderr b/tests/ui/generic-associated-types/projection-type-lifetime-mismatch.stderr similarity index 100% rename from src/test/ui/generic-associated-types/projection-type-lifetime-mismatch.stderr rename to tests/ui/generic-associated-types/projection-type-lifetime-mismatch.stderr diff --git a/src/test/ui/generic-associated-types/self-outlives-lint.rs b/tests/ui/generic-associated-types/self-outlives-lint.rs similarity index 100% rename from src/test/ui/generic-associated-types/self-outlives-lint.rs rename to tests/ui/generic-associated-types/self-outlives-lint.rs diff --git a/src/test/ui/generic-associated-types/self-outlives-lint.stderr b/tests/ui/generic-associated-types/self-outlives-lint.stderr similarity index 100% rename from src/test/ui/generic-associated-types/self-outlives-lint.stderr rename to tests/ui/generic-associated-types/self-outlives-lint.stderr diff --git a/src/test/ui/generic-associated-types/shadowing.rs b/tests/ui/generic-associated-types/shadowing.rs similarity index 100% rename from src/test/ui/generic-associated-types/shadowing.rs rename to tests/ui/generic-associated-types/shadowing.rs diff --git a/src/test/ui/generic-associated-types/shadowing.stderr b/tests/ui/generic-associated-types/shadowing.stderr similarity index 100% rename from src/test/ui/generic-associated-types/shadowing.stderr rename to tests/ui/generic-associated-types/shadowing.stderr diff --git a/src/test/ui/generic-associated-types/streaming_iterator.rs b/tests/ui/generic-associated-types/streaming_iterator.rs similarity index 100% rename from src/test/ui/generic-associated-types/streaming_iterator.rs rename to tests/ui/generic-associated-types/streaming_iterator.rs diff --git a/src/test/ui/generic-associated-types/trait-objects.base.stderr b/tests/ui/generic-associated-types/trait-objects.base.stderr similarity index 100% rename from src/test/ui/generic-associated-types/trait-objects.base.stderr rename to tests/ui/generic-associated-types/trait-objects.base.stderr diff --git a/src/test/ui/generic-associated-types/trait-objects.extended.stderr b/tests/ui/generic-associated-types/trait-objects.extended.stderr similarity index 100% rename from src/test/ui/generic-associated-types/trait-objects.extended.stderr rename to tests/ui/generic-associated-types/trait-objects.extended.stderr diff --git a/src/test/ui/generic-associated-types/trait-objects.rs b/tests/ui/generic-associated-types/trait-objects.rs similarity index 100% rename from src/test/ui/generic-associated-types/trait-objects.rs rename to tests/ui/generic-associated-types/trait-objects.rs diff --git a/src/test/ui/generic-associated-types/type-param-defaults.rs b/tests/ui/generic-associated-types/type-param-defaults.rs similarity index 100% rename from src/test/ui/generic-associated-types/type-param-defaults.rs rename to tests/ui/generic-associated-types/type-param-defaults.rs diff --git a/src/test/ui/generic-associated-types/type-param-defaults.stderr b/tests/ui/generic-associated-types/type-param-defaults.stderr similarity index 100% rename from src/test/ui/generic-associated-types/type-param-defaults.stderr rename to tests/ui/generic-associated-types/type-param-defaults.stderr diff --git a/src/test/ui/generic-associated-types/unsatified-item-lifetime-bound.rs b/tests/ui/generic-associated-types/unsatified-item-lifetime-bound.rs similarity index 100% rename from src/test/ui/generic-associated-types/unsatified-item-lifetime-bound.rs rename to tests/ui/generic-associated-types/unsatified-item-lifetime-bound.rs diff --git a/src/test/ui/generic-associated-types/unsatified-item-lifetime-bound.stderr b/tests/ui/generic-associated-types/unsatified-item-lifetime-bound.stderr similarity index 100% rename from src/test/ui/generic-associated-types/unsatified-item-lifetime-bound.stderr rename to tests/ui/generic-associated-types/unsatified-item-lifetime-bound.stderr diff --git a/src/test/ui/generic-associated-types/unsatisfied-outlives-bound.rs b/tests/ui/generic-associated-types/unsatisfied-outlives-bound.rs similarity index 100% rename from src/test/ui/generic-associated-types/unsatisfied-outlives-bound.rs rename to tests/ui/generic-associated-types/unsatisfied-outlives-bound.rs diff --git a/src/test/ui/generic-associated-types/unsatisfied-outlives-bound.stderr b/tests/ui/generic-associated-types/unsatisfied-outlives-bound.stderr similarity index 100% rename from src/test/ui/generic-associated-types/unsatisfied-outlives-bound.stderr rename to tests/ui/generic-associated-types/unsatisfied-outlives-bound.stderr diff --git a/src/test/ui/generic-associated-types/variance_constraints.rs b/tests/ui/generic-associated-types/variance_constraints.rs similarity index 100% rename from src/test/ui/generic-associated-types/variance_constraints.rs rename to tests/ui/generic-associated-types/variance_constraints.rs diff --git a/src/test/ui/generics/autobind.rs b/tests/ui/generics/autobind.rs similarity index 100% rename from src/test/ui/generics/autobind.rs rename to tests/ui/generics/autobind.rs diff --git a/src/test/ui/generics/auxiliary/default_type_params_xc.rs b/tests/ui/generics/auxiliary/default_type_params_xc.rs similarity index 100% rename from src/test/ui/generics/auxiliary/default_type_params_xc.rs rename to tests/ui/generics/auxiliary/default_type_params_xc.rs diff --git a/src/test/ui/generics/bad-mid-path-type-params.rs b/tests/ui/generics/bad-mid-path-type-params.rs similarity index 100% rename from src/test/ui/generics/bad-mid-path-type-params.rs rename to tests/ui/generics/bad-mid-path-type-params.rs diff --git a/src/test/ui/generics/bad-mid-path-type-params.stderr b/tests/ui/generics/bad-mid-path-type-params.stderr similarity index 100% rename from src/test/ui/generics/bad-mid-path-type-params.stderr rename to tests/ui/generics/bad-mid-path-type-params.stderr diff --git a/src/test/ui/generics/generic-alias-unique.rs b/tests/ui/generics/generic-alias-unique.rs similarity index 100% rename from src/test/ui/generics/generic-alias-unique.rs rename to tests/ui/generics/generic-alias-unique.rs diff --git a/src/test/ui/generics/generic-arg-mismatch-recover.rs b/tests/ui/generics/generic-arg-mismatch-recover.rs similarity index 100% rename from src/test/ui/generics/generic-arg-mismatch-recover.rs rename to tests/ui/generics/generic-arg-mismatch-recover.rs diff --git a/src/test/ui/generics/generic-arg-mismatch-recover.stderr b/tests/ui/generics/generic-arg-mismatch-recover.stderr similarity index 100% rename from src/test/ui/generics/generic-arg-mismatch-recover.stderr rename to tests/ui/generics/generic-arg-mismatch-recover.stderr diff --git a/src/test/ui/generics/generic-default-type-params-cross-crate.rs b/tests/ui/generics/generic-default-type-params-cross-crate.rs similarity index 100% rename from src/test/ui/generics/generic-default-type-params-cross-crate.rs rename to tests/ui/generics/generic-default-type-params-cross-crate.rs diff --git a/src/test/ui/generics/generic-default-type-params.rs b/tests/ui/generics/generic-default-type-params.rs similarity index 100% rename from src/test/ui/generics/generic-default-type-params.rs rename to tests/ui/generics/generic-default-type-params.rs diff --git a/src/test/ui/generics/generic-derived-type.rs b/tests/ui/generics/generic-derived-type.rs similarity index 100% rename from src/test/ui/generics/generic-derived-type.rs rename to tests/ui/generics/generic-derived-type.rs diff --git a/src/test/ui/generics/generic-exterior-unique.rs b/tests/ui/generics/generic-exterior-unique.rs similarity index 100% rename from src/test/ui/generics/generic-exterior-unique.rs rename to tests/ui/generics/generic-exterior-unique.rs diff --git a/src/test/ui/generics/generic-extern-lifetime.rs b/tests/ui/generics/generic-extern-lifetime.rs similarity index 100% rename from src/test/ui/generics/generic-extern-lifetime.rs rename to tests/ui/generics/generic-extern-lifetime.rs diff --git a/src/test/ui/generics/generic-extern-lifetime.stderr b/tests/ui/generics/generic-extern-lifetime.stderr similarity index 100% rename from src/test/ui/generics/generic-extern-lifetime.stderr rename to tests/ui/generics/generic-extern-lifetime.stderr diff --git a/src/test/ui/generics/generic-extern-mangle.rs b/tests/ui/generics/generic-extern-mangle.rs similarity index 100% rename from src/test/ui/generics/generic-extern-mangle.rs rename to tests/ui/generics/generic-extern-mangle.rs diff --git a/src/test/ui/generics/generic-extern.rs b/tests/ui/generics/generic-extern.rs similarity index 100% rename from src/test/ui/generics/generic-extern.rs rename to tests/ui/generics/generic-extern.rs diff --git a/src/test/ui/generics/generic-extern.stderr b/tests/ui/generics/generic-extern.stderr similarity index 100% rename from src/test/ui/generics/generic-extern.stderr rename to tests/ui/generics/generic-extern.stderr diff --git a/src/test/ui/generics/generic-fn-infer.rs b/tests/ui/generics/generic-fn-infer.rs similarity index 100% rename from src/test/ui/generics/generic-fn-infer.rs rename to tests/ui/generics/generic-fn-infer.rs diff --git a/src/test/ui/generics/generic-fn-twice.rs b/tests/ui/generics/generic-fn-twice.rs similarity index 100% rename from src/test/ui/generics/generic-fn-twice.rs rename to tests/ui/generics/generic-fn-twice.rs diff --git a/src/test/ui/generics/generic-fn-unique.rs b/tests/ui/generics/generic-fn-unique.rs similarity index 100% rename from src/test/ui/generics/generic-fn-unique.rs rename to tests/ui/generics/generic-fn-unique.rs diff --git a/src/test/ui/generics/generic-fn.rs b/tests/ui/generics/generic-fn.rs similarity index 100% rename from src/test/ui/generics/generic-fn.rs rename to tests/ui/generics/generic-fn.rs diff --git a/src/test/ui/generics/generic-function-item-where-type.rs b/tests/ui/generics/generic-function-item-where-type.rs similarity index 100% rename from src/test/ui/generics/generic-function-item-where-type.rs rename to tests/ui/generics/generic-function-item-where-type.rs diff --git a/src/test/ui/generics/generic-function-item-where-type.stderr b/tests/ui/generics/generic-function-item-where-type.stderr similarity index 100% rename from src/test/ui/generics/generic-function-item-where-type.stderr rename to tests/ui/generics/generic-function-item-where-type.stderr diff --git a/src/test/ui/generics/generic-impl-less-params-with-defaults.rs b/tests/ui/generics/generic-impl-less-params-with-defaults.rs similarity index 100% rename from src/test/ui/generics/generic-impl-less-params-with-defaults.rs rename to tests/ui/generics/generic-impl-less-params-with-defaults.rs diff --git a/src/test/ui/generics/generic-impl-less-params-with-defaults.stderr b/tests/ui/generics/generic-impl-less-params-with-defaults.stderr similarity index 100% rename from src/test/ui/generics/generic-impl-less-params-with-defaults.stderr rename to tests/ui/generics/generic-impl-less-params-with-defaults.stderr diff --git a/src/test/ui/generics/generic-impl-more-params-with-defaults.rs b/tests/ui/generics/generic-impl-more-params-with-defaults.rs similarity index 100% rename from src/test/ui/generics/generic-impl-more-params-with-defaults.rs rename to tests/ui/generics/generic-impl-more-params-with-defaults.rs diff --git a/src/test/ui/generics/generic-impl-more-params-with-defaults.stderr b/tests/ui/generics/generic-impl-more-params-with-defaults.stderr similarity index 100% rename from src/test/ui/generics/generic-impl-more-params-with-defaults.stderr rename to tests/ui/generics/generic-impl-more-params-with-defaults.stderr diff --git a/src/test/ui/generics/generic-ivec-leak.rs b/tests/ui/generics/generic-ivec-leak.rs similarity index 100% rename from src/test/ui/generics/generic-ivec-leak.rs rename to tests/ui/generics/generic-ivec-leak.rs diff --git a/src/test/ui/generics/generic-lifetime-trait-impl.rs b/tests/ui/generics/generic-lifetime-trait-impl.rs similarity index 100% rename from src/test/ui/generics/generic-lifetime-trait-impl.rs rename to tests/ui/generics/generic-lifetime-trait-impl.rs diff --git a/src/test/ui/generics/generic-lifetime-trait-impl.stderr b/tests/ui/generics/generic-lifetime-trait-impl.stderr similarity index 100% rename from src/test/ui/generics/generic-lifetime-trait-impl.stderr rename to tests/ui/generics/generic-lifetime-trait-impl.stderr diff --git a/src/test/ui/generics/generic-newtype-struct.rs b/tests/ui/generics/generic-newtype-struct.rs similarity index 100% rename from src/test/ui/generics/generic-newtype-struct.rs rename to tests/ui/generics/generic-newtype-struct.rs diff --git a/src/test/ui/generics/generic-no-mangle.fixed b/tests/ui/generics/generic-no-mangle.fixed similarity index 100% rename from src/test/ui/generics/generic-no-mangle.fixed rename to tests/ui/generics/generic-no-mangle.fixed diff --git a/src/test/ui/generics/generic-no-mangle.rs b/tests/ui/generics/generic-no-mangle.rs similarity index 100% rename from src/test/ui/generics/generic-no-mangle.rs rename to tests/ui/generics/generic-no-mangle.rs diff --git a/src/test/ui/generics/generic-no-mangle.stderr b/tests/ui/generics/generic-no-mangle.stderr similarity index 100% rename from src/test/ui/generics/generic-no-mangle.stderr rename to tests/ui/generics/generic-no-mangle.stderr diff --git a/src/test/ui/generics/generic-non-trailing-defaults.rs b/tests/ui/generics/generic-non-trailing-defaults.rs similarity index 100% rename from src/test/ui/generics/generic-non-trailing-defaults.rs rename to tests/ui/generics/generic-non-trailing-defaults.rs diff --git a/src/test/ui/generics/generic-non-trailing-defaults.stderr b/tests/ui/generics/generic-non-trailing-defaults.stderr similarity index 100% rename from src/test/ui/generics/generic-non-trailing-defaults.stderr rename to tests/ui/generics/generic-non-trailing-defaults.stderr diff --git a/src/test/ui/generics/generic-object.rs b/tests/ui/generics/generic-object.rs similarity index 100% rename from src/test/ui/generics/generic-object.rs rename to tests/ui/generics/generic-object.rs diff --git a/src/test/ui/generics/generic-param-attrs.rs b/tests/ui/generics/generic-param-attrs.rs similarity index 100% rename from src/test/ui/generics/generic-param-attrs.rs rename to tests/ui/generics/generic-param-attrs.rs diff --git a/src/test/ui/generics/generic-recursive-tag.rs b/tests/ui/generics/generic-recursive-tag.rs similarity index 100% rename from src/test/ui/generics/generic-recursive-tag.rs rename to tests/ui/generics/generic-recursive-tag.rs diff --git a/src/test/ui/generics/generic-static-methods.rs b/tests/ui/generics/generic-static-methods.rs similarity index 100% rename from src/test/ui/generics/generic-static-methods.rs rename to tests/ui/generics/generic-static-methods.rs diff --git a/src/test/ui/generics/generic-tag-corruption.rs b/tests/ui/generics/generic-tag-corruption.rs similarity index 100% rename from src/test/ui/generics/generic-tag-corruption.rs rename to tests/ui/generics/generic-tag-corruption.rs diff --git a/src/test/ui/generics/generic-tag-local.rs b/tests/ui/generics/generic-tag-local.rs similarity index 100% rename from src/test/ui/generics/generic-tag-local.rs rename to tests/ui/generics/generic-tag-local.rs diff --git a/src/test/ui/generics/generic-tag-match.rs b/tests/ui/generics/generic-tag-match.rs similarity index 100% rename from src/test/ui/generics/generic-tag-match.rs rename to tests/ui/generics/generic-tag-match.rs diff --git a/src/test/ui/generics/generic-tag-values.rs b/tests/ui/generics/generic-tag-values.rs similarity index 100% rename from src/test/ui/generics/generic-tag-values.rs rename to tests/ui/generics/generic-tag-values.rs diff --git a/src/test/ui/generics/generic-tag.rs b/tests/ui/generics/generic-tag.rs similarity index 100% rename from src/test/ui/generics/generic-tag.rs rename to tests/ui/generics/generic-tag.rs diff --git a/src/test/ui/generics/generic-temporary.rs b/tests/ui/generics/generic-temporary.rs similarity index 100% rename from src/test/ui/generics/generic-temporary.rs rename to tests/ui/generics/generic-temporary.rs diff --git a/src/test/ui/generics/generic-tup.rs b/tests/ui/generics/generic-tup.rs similarity index 100% rename from src/test/ui/generics/generic-tup.rs rename to tests/ui/generics/generic-tup.rs diff --git a/src/test/ui/generics/generic-type-less-params-with-defaults.rs b/tests/ui/generics/generic-type-less-params-with-defaults.rs similarity index 100% rename from src/test/ui/generics/generic-type-less-params-with-defaults.rs rename to tests/ui/generics/generic-type-less-params-with-defaults.rs diff --git a/src/test/ui/generics/generic-type-less-params-with-defaults.stderr b/tests/ui/generics/generic-type-less-params-with-defaults.stderr similarity index 100% rename from src/test/ui/generics/generic-type-less-params-with-defaults.stderr rename to tests/ui/generics/generic-type-less-params-with-defaults.stderr diff --git a/src/test/ui/generics/generic-type-more-params-with-defaults.rs b/tests/ui/generics/generic-type-more-params-with-defaults.rs similarity index 100% rename from src/test/ui/generics/generic-type-more-params-with-defaults.rs rename to tests/ui/generics/generic-type-more-params-with-defaults.rs diff --git a/src/test/ui/generics/generic-type-more-params-with-defaults.stderr b/tests/ui/generics/generic-type-more-params-with-defaults.stderr similarity index 100% rename from src/test/ui/generics/generic-type-more-params-with-defaults.stderr rename to tests/ui/generics/generic-type-more-params-with-defaults.stderr diff --git a/src/test/ui/generics/generic-type-params-forward-mention.rs b/tests/ui/generics/generic-type-params-forward-mention.rs similarity index 100% rename from src/test/ui/generics/generic-type-params-forward-mention.rs rename to tests/ui/generics/generic-type-params-forward-mention.rs diff --git a/src/test/ui/generics/generic-type-params-forward-mention.stderr b/tests/ui/generics/generic-type-params-forward-mention.stderr similarity index 100% rename from src/test/ui/generics/generic-type-params-forward-mention.stderr rename to tests/ui/generics/generic-type-params-forward-mention.stderr diff --git a/src/test/ui/generics/generic-type-params-name-repr.rs b/tests/ui/generics/generic-type-params-name-repr.rs similarity index 100% rename from src/test/ui/generics/generic-type-params-name-repr.rs rename to tests/ui/generics/generic-type-params-name-repr.rs diff --git a/src/test/ui/generics/generic-type-params-name-repr.stderr b/tests/ui/generics/generic-type-params-name-repr.stderr similarity index 100% rename from src/test/ui/generics/generic-type-params-name-repr.stderr rename to tests/ui/generics/generic-type-params-name-repr.stderr diff --git a/src/test/ui/generics/generic-type-synonym.rs b/tests/ui/generics/generic-type-synonym.rs similarity index 100% rename from src/test/ui/generics/generic-type-synonym.rs rename to tests/ui/generics/generic-type-synonym.rs diff --git a/src/test/ui/generics/generic-type.rs b/tests/ui/generics/generic-type.rs similarity index 100% rename from src/test/ui/generics/generic-type.rs rename to tests/ui/generics/generic-type.rs diff --git a/src/test/ui/generics/generic-unique.rs b/tests/ui/generics/generic-unique.rs similarity index 100% rename from src/test/ui/generics/generic-unique.rs rename to tests/ui/generics/generic-unique.rs diff --git a/src/test/ui/generics/issue-1112.rs b/tests/ui/generics/issue-1112.rs similarity index 100% rename from src/test/ui/generics/issue-1112.rs rename to tests/ui/generics/issue-1112.rs diff --git a/src/test/ui/generics/issue-2936.rs b/tests/ui/generics/issue-2936.rs similarity index 100% rename from src/test/ui/generics/issue-2936.rs rename to tests/ui/generics/issue-2936.rs diff --git a/src/test/ui/generics/issue-32498.rs b/tests/ui/generics/issue-32498.rs similarity index 100% rename from src/test/ui/generics/issue-32498.rs rename to tests/ui/generics/issue-32498.rs diff --git a/src/test/ui/generics/issue-333.rs b/tests/ui/generics/issue-333.rs similarity index 100% rename from src/test/ui/generics/issue-333.rs rename to tests/ui/generics/issue-333.rs diff --git a/src/test/ui/generics/issue-59508-1.rs b/tests/ui/generics/issue-59508-1.rs similarity index 100% rename from src/test/ui/generics/issue-59508-1.rs rename to tests/ui/generics/issue-59508-1.rs diff --git a/src/test/ui/generics/issue-59508-1.stderr b/tests/ui/generics/issue-59508-1.stderr similarity index 100% rename from src/test/ui/generics/issue-59508-1.stderr rename to tests/ui/generics/issue-59508-1.stderr diff --git a/src/test/ui/generics/issue-59508.fixed b/tests/ui/generics/issue-59508.fixed similarity index 100% rename from src/test/ui/generics/issue-59508.fixed rename to tests/ui/generics/issue-59508.fixed diff --git a/src/test/ui/generics/issue-59508.rs b/tests/ui/generics/issue-59508.rs similarity index 100% rename from src/test/ui/generics/issue-59508.rs rename to tests/ui/generics/issue-59508.rs diff --git a/src/test/ui/generics/issue-59508.stderr b/tests/ui/generics/issue-59508.stderr similarity index 100% rename from src/test/ui/generics/issue-59508.stderr rename to tests/ui/generics/issue-59508.stderr diff --git a/src/test/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs b/tests/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs similarity index 100% rename from src/test/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs rename to tests/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.rs diff --git a/src/test/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.stderr b/tests/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.stderr similarity index 100% rename from src/test/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.stderr rename to tests/ui/generics/issue-61631-default-type-param-can-reference-self-in-trait.stderr diff --git a/src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs b/tests/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs similarity index 100% rename from src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs rename to tests/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs diff --git a/src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr b/tests/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr similarity index 100% rename from src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr rename to tests/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr diff --git a/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs b/tests/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs similarity index 100% rename from src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs rename to tests/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.rs diff --git a/src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr b/tests/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr similarity index 100% rename from src/test/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr rename to tests/ui/generics/issue-65285-incorrect-explicit-lifetime-name-needed.stderr diff --git a/src/test/ui/generics/issue-80512-param-reordering-with-defaults.rs b/tests/ui/generics/issue-80512-param-reordering-with-defaults.rs similarity index 100% rename from src/test/ui/generics/issue-80512-param-reordering-with-defaults.rs rename to tests/ui/generics/issue-80512-param-reordering-with-defaults.rs diff --git a/src/test/ui/generics/issue-80512-param-reordering-with-defaults.stderr b/tests/ui/generics/issue-80512-param-reordering-with-defaults.stderr similarity index 100% rename from src/test/ui/generics/issue-80512-param-reordering-with-defaults.stderr rename to tests/ui/generics/issue-80512-param-reordering-with-defaults.stderr diff --git a/src/test/ui/generics/issue-94432-garbage-ice.rs b/tests/ui/generics/issue-94432-garbage-ice.rs similarity index 100% rename from src/test/ui/generics/issue-94432-garbage-ice.rs rename to tests/ui/generics/issue-94432-garbage-ice.rs diff --git a/src/test/ui/generics/issue-94923.rs b/tests/ui/generics/issue-94923.rs similarity index 100% rename from src/test/ui/generics/issue-94923.rs rename to tests/ui/generics/issue-94923.rs diff --git a/src/test/ui/generics/issue-95208-ignore-qself.fixed b/tests/ui/generics/issue-95208-ignore-qself.fixed similarity index 100% rename from src/test/ui/generics/issue-95208-ignore-qself.fixed rename to tests/ui/generics/issue-95208-ignore-qself.fixed diff --git a/src/test/ui/generics/issue-95208-ignore-qself.rs b/tests/ui/generics/issue-95208-ignore-qself.rs similarity index 100% rename from src/test/ui/generics/issue-95208-ignore-qself.rs rename to tests/ui/generics/issue-95208-ignore-qself.rs diff --git a/src/test/ui/generics/issue-95208-ignore-qself.stderr b/tests/ui/generics/issue-95208-ignore-qself.stderr similarity index 100% rename from src/test/ui/generics/issue-95208-ignore-qself.stderr rename to tests/ui/generics/issue-95208-ignore-qself.stderr diff --git a/src/test/ui/generics/issue-95208.fixed b/tests/ui/generics/issue-95208.fixed similarity index 100% rename from src/test/ui/generics/issue-95208.fixed rename to tests/ui/generics/issue-95208.fixed diff --git a/src/test/ui/generics/issue-95208.rs b/tests/ui/generics/issue-95208.rs similarity index 100% rename from src/test/ui/generics/issue-95208.rs rename to tests/ui/generics/issue-95208.rs diff --git a/src/test/ui/generics/issue-95208.stderr b/tests/ui/generics/issue-95208.stderr similarity index 100% rename from src/test/ui/generics/issue-95208.stderr rename to tests/ui/generics/issue-95208.stderr diff --git a/src/test/ui/generics/issue-98432.rs b/tests/ui/generics/issue-98432.rs similarity index 100% rename from src/test/ui/generics/issue-98432.rs rename to tests/ui/generics/issue-98432.rs diff --git a/src/test/ui/generics/issue-98432.stderr b/tests/ui/generics/issue-98432.stderr similarity index 100% rename from src/test/ui/generics/issue-98432.stderr rename to tests/ui/generics/issue-98432.stderr diff --git a/src/test/ui/generics/lifetime-before-type-params.rs b/tests/ui/generics/lifetime-before-type-params.rs similarity index 100% rename from src/test/ui/generics/lifetime-before-type-params.rs rename to tests/ui/generics/lifetime-before-type-params.rs diff --git a/src/test/ui/generics/lifetime-before-type-params.stderr b/tests/ui/generics/lifetime-before-type-params.stderr similarity index 100% rename from src/test/ui/generics/lifetime-before-type-params.stderr rename to tests/ui/generics/lifetime-before-type-params.stderr diff --git a/src/test/ui/generics/mid-path-type-params.rs b/tests/ui/generics/mid-path-type-params.rs similarity index 100% rename from src/test/ui/generics/mid-path-type-params.rs rename to tests/ui/generics/mid-path-type-params.rs diff --git a/src/test/ui/generics/param-in-ct-in-ty-param-default.rs b/tests/ui/generics/param-in-ct-in-ty-param-default.rs similarity index 100% rename from src/test/ui/generics/param-in-ct-in-ty-param-default.rs rename to tests/ui/generics/param-in-ct-in-ty-param-default.rs diff --git a/src/test/ui/generics/param-in-ct-in-ty-param-default.stderr b/tests/ui/generics/param-in-ct-in-ty-param-default.stderr similarity index 100% rename from src/test/ui/generics/param-in-ct-in-ty-param-default.stderr rename to tests/ui/generics/param-in-ct-in-ty-param-default.stderr diff --git a/src/test/ui/generics/post_monomorphization_error_backtrace.rs b/tests/ui/generics/post_monomorphization_error_backtrace.rs similarity index 100% rename from src/test/ui/generics/post_monomorphization_error_backtrace.rs rename to tests/ui/generics/post_monomorphization_error_backtrace.rs diff --git a/src/test/ui/generics/post_monomorphization_error_backtrace.stderr b/tests/ui/generics/post_monomorphization_error_backtrace.stderr similarity index 100% rename from src/test/ui/generics/post_monomorphization_error_backtrace.stderr rename to tests/ui/generics/post_monomorphization_error_backtrace.stderr diff --git a/src/test/ui/generics/single-colon-path-not-const-generics.rs b/tests/ui/generics/single-colon-path-not-const-generics.rs similarity index 100% rename from src/test/ui/generics/single-colon-path-not-const-generics.rs rename to tests/ui/generics/single-colon-path-not-const-generics.rs diff --git a/src/test/ui/generics/single-colon-path-not-const-generics.stderr b/tests/ui/generics/single-colon-path-not-const-generics.stderr similarity index 100% rename from src/test/ui/generics/single-colon-path-not-const-generics.stderr rename to tests/ui/generics/single-colon-path-not-const-generics.stderr diff --git a/src/test/ui/generics/type-params-in-for-each.rs b/tests/ui/generics/type-params-in-for-each.rs similarity index 100% rename from src/test/ui/generics/type-params-in-for-each.rs rename to tests/ui/generics/type-params-in-for-each.rs diff --git a/src/test/ui/generics/wrong-number-of-args.rs b/tests/ui/generics/wrong-number-of-args.rs similarity index 100% rename from src/test/ui/generics/wrong-number-of-args.rs rename to tests/ui/generics/wrong-number-of-args.rs diff --git a/src/test/ui/generics/wrong-number-of-args.stderr b/tests/ui/generics/wrong-number-of-args.stderr similarity index 100% rename from src/test/ui/generics/wrong-number-of-args.stderr rename to tests/ui/generics/wrong-number-of-args.stderr diff --git a/src/test/ui/global-scope.rs b/tests/ui/global-scope.rs similarity index 100% rename from src/test/ui/global-scope.rs rename to tests/ui/global-scope.rs diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.rs b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.rs rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.rs diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.stderr b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.stderr rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision.stderr diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.rs b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.rs rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.rs diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.stderr b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.stderr rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision2.stderr diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.rs b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.rs rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.rs diff --git a/src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.stderr b/tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.stderr rename to tests/ui/half-open-range-patterns/exclusive_range_pattern_syntax_collision3.stderr diff --git a/src/test/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.rs b/tests/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.rs rename to tests/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.rs diff --git a/src/test/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.stderr b/tests/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.stderr rename to tests/ui/half-open-range-patterns/feature-gate-half-open-range-patterns-in-slices.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-bad-types.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-bad-types.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-bad-types.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-bad-types.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-bad-types.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-bad-types.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-bad-types.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-bad-types.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-fail.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-pass.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-pass.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-exhaustive-pass.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-exhaustive-pass.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-dotdotdot-bad-syntax.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-inclusive-no-end.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-ref-ambiguous-interp.stderr diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-semantics.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-semantics.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-semantics.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-semantics.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-syntactic-pass.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-syntactic-pass.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-syntactic-pass.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-syntactic-pass.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.rs b/tests/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.rs rename to tests/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.rs diff --git a/src/test/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.stderr b/tests/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.stderr rename to tests/ui/half-open-range-patterns/half-open-range-pats-thir-lower-empty.stderr diff --git a/src/test/ui/half-open-range-patterns/pat-tuple-4.rs b/tests/ui/half-open-range-patterns/pat-tuple-4.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/pat-tuple-4.rs rename to tests/ui/half-open-range-patterns/pat-tuple-4.rs diff --git a/src/test/ui/half-open-range-patterns/pat-tuple-5.rs b/tests/ui/half-open-range-patterns/pat-tuple-5.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/pat-tuple-5.rs rename to tests/ui/half-open-range-patterns/pat-tuple-5.rs diff --git a/src/test/ui/half-open-range-patterns/pat-tuple-5.stderr b/tests/ui/half-open-range-patterns/pat-tuple-5.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/pat-tuple-5.stderr rename to tests/ui/half-open-range-patterns/pat-tuple-5.stderr diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions0.rs b/tests/ui/half-open-range-patterns/range_pat_interactions0.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions0.rs rename to tests/ui/half-open-range-patterns/range_pat_interactions0.rs diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions1.rs b/tests/ui/half-open-range-patterns/range_pat_interactions1.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions1.rs rename to tests/ui/half-open-range-patterns/range_pat_interactions1.rs diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions1.stderr b/tests/ui/half-open-range-patterns/range_pat_interactions1.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions1.stderr rename to tests/ui/half-open-range-patterns/range_pat_interactions1.stderr diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions2.rs b/tests/ui/half-open-range-patterns/range_pat_interactions2.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions2.rs rename to tests/ui/half-open-range-patterns/range_pat_interactions2.rs diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions2.stderr b/tests/ui/half-open-range-patterns/range_pat_interactions2.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions2.stderr rename to tests/ui/half-open-range-patterns/range_pat_interactions2.stderr diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions3.rs b/tests/ui/half-open-range-patterns/range_pat_interactions3.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions3.rs rename to tests/ui/half-open-range-patterns/range_pat_interactions3.rs diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr b/tests/ui/half-open-range-patterns/range_pat_interactions3.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr rename to tests/ui/half-open-range-patterns/range_pat_interactions3.stderr diff --git a/src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem0.rs b/tests/ui/half-open-range-patterns/slice_pattern_syntax_problem0.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem0.rs rename to tests/ui/half-open-range-patterns/slice_pattern_syntax_problem0.rs diff --git a/src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem0.stderr b/tests/ui/half-open-range-patterns/slice_pattern_syntax_problem0.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem0.stderr rename to tests/ui/half-open-range-patterns/slice_pattern_syntax_problem0.stderr diff --git a/src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem1.rs b/tests/ui/half-open-range-patterns/slice_pattern_syntax_problem1.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem1.rs rename to tests/ui/half-open-range-patterns/slice_pattern_syntax_problem1.rs diff --git a/src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem1.stderr b/tests/ui/half-open-range-patterns/slice_pattern_syntax_problem1.stderr similarity index 100% rename from src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem1.stderr rename to tests/ui/half-open-range-patterns/slice_pattern_syntax_problem1.stderr diff --git a/src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem2.rs b/tests/ui/half-open-range-patterns/slice_pattern_syntax_problem2.rs similarity index 100% rename from src/test/ui/half-open-range-patterns/slice_pattern_syntax_problem2.rs rename to tests/ui/half-open-range-patterns/slice_pattern_syntax_problem2.rs diff --git a/src/test/ui/hashmap/hashmap-capacity-overflow.rs b/tests/ui/hashmap/hashmap-capacity-overflow.rs similarity index 100% rename from src/test/ui/hashmap/hashmap-capacity-overflow.rs rename to tests/ui/hashmap/hashmap-capacity-overflow.rs diff --git a/src/test/ui/hashmap/hashmap-index-mut.rs b/tests/ui/hashmap/hashmap-index-mut.rs similarity index 100% rename from src/test/ui/hashmap/hashmap-index-mut.rs rename to tests/ui/hashmap/hashmap-index-mut.rs diff --git a/src/test/ui/hashmap/hashmap-index-mut.stderr b/tests/ui/hashmap/hashmap-index-mut.stderr similarity index 100% rename from src/test/ui/hashmap/hashmap-index-mut.stderr rename to tests/ui/hashmap/hashmap-index-mut.stderr diff --git a/src/test/ui/hashmap/hashmap-iter-value-lifetime.rs b/tests/ui/hashmap/hashmap-iter-value-lifetime.rs similarity index 100% rename from src/test/ui/hashmap/hashmap-iter-value-lifetime.rs rename to tests/ui/hashmap/hashmap-iter-value-lifetime.rs diff --git a/src/test/ui/hashmap/hashmap-iter-value-lifetime.stderr b/tests/ui/hashmap/hashmap-iter-value-lifetime.stderr similarity index 100% rename from src/test/ui/hashmap/hashmap-iter-value-lifetime.stderr rename to tests/ui/hashmap/hashmap-iter-value-lifetime.stderr diff --git a/src/test/ui/hashmap/hashmap-lifetimes.rs b/tests/ui/hashmap/hashmap-lifetimes.rs similarity index 100% rename from src/test/ui/hashmap/hashmap-lifetimes.rs rename to tests/ui/hashmap/hashmap-lifetimes.rs diff --git a/src/test/ui/hashmap/hashmap-lifetimes.stderr b/tests/ui/hashmap/hashmap-lifetimes.stderr similarity index 100% rename from src/test/ui/hashmap/hashmap-lifetimes.stderr rename to tests/ui/hashmap/hashmap-lifetimes.stderr diff --git a/src/test/ui/hashmap/hashmap-memory.rs b/tests/ui/hashmap/hashmap-memory.rs similarity index 100% rename from src/test/ui/hashmap/hashmap-memory.rs rename to tests/ui/hashmap/hashmap-memory.rs diff --git a/src/test/ui/hello.rs b/tests/ui/hello.rs similarity index 100% rename from src/test/ui/hello.rs rename to tests/ui/hello.rs diff --git a/src/test/ui/hello_world/main.rs b/tests/ui/hello_world/main.rs similarity index 100% rename from src/test/ui/hello_world/main.rs rename to tests/ui/hello_world/main.rs diff --git a/src/test/ui/higher-lifetime-bounds.rs b/tests/ui/higher-lifetime-bounds.rs similarity index 100% rename from src/test/ui/higher-lifetime-bounds.rs rename to tests/ui/higher-lifetime-bounds.rs diff --git a/src/test/ui/higher-lifetime-bounds.stderr b/tests/ui/higher-lifetime-bounds.stderr similarity index 100% rename from src/test/ui/higher-lifetime-bounds.stderr rename to tests/ui/higher-lifetime-bounds.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/complex.rs b/tests/ui/higher-rank-trait-bounds/complex.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/complex.rs rename to tests/ui/higher-rank-trait-bounds/complex.rs diff --git a/src/test/ui/higher-rank-trait-bounds/due-to-where-clause.rs b/tests/ui/higher-rank-trait-bounds/due-to-where-clause.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/due-to-where-clause.rs rename to tests/ui/higher-rank-trait-bounds/due-to-where-clause.rs diff --git a/src/test/ui/higher-rank-trait-bounds/due-to-where-clause.stderr b/tests/ui/higher-rank-trait-bounds/due-to-where-clause.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/due-to-where-clause.stderr rename to tests/ui/higher-rank-trait-bounds/due-to-where-clause.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.rs b/tests/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.rs rename to tests/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.stderr b/tests/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.stderr rename to tests/ui/higher-rank-trait-bounds/hang-on-deeply-nested-dyn.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs b/tests/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.rs b/tests/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-cache-issue-54302.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-conflate-regions.rs b/tests/ui/higher-rank-trait-bounds/hrtb-conflate-regions.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-conflate-regions.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-conflate-regions.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-conflate-regions.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-conflate-regions.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-conflate-regions.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-conflate-regions.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.rs b/tests/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-debruijn-in-receiver.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-object-types-in-closures.rs b/tests/ui/higher-rank-trait-bounds/hrtb-debruijn-object-types-in-closures.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-debruijn-object-types-in-closures.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-debruijn-object-types-in-closures.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.rs b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-fn.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.rs b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-contravariant.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-covariant.rs b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-covariant.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-covariant.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-covariant.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.rs b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-exists-forall-trait-invariant.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-fn-like-trait-object.rs b/tests/ui/higher-rank-trait-bounds/hrtb-fn-like-trait-object.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-fn-like-trait-object.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-fn-like-trait-object.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-fn-like-trait.rs b/tests/ui/higher-rank-trait-bounds/hrtb-fn-like-trait.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-fn-like-trait.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-fn-like-trait.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.rs b/tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits-transitive.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.rs b/tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-higher-ranker-supertraits.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.rs b/tests/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-identity-fn-borrows.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-just-for-static.rs b/tests/ui/higher-rank-trait-bounds/hrtb-just-for-static.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-just-for-static.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-just-for-static.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-just-for-static.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-just-for-static.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-just-for-static.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-just-for-static.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.rs b/tests/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-malformed-lifetime-generics.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs b/tests/ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-opt-in-copy.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-parse.rs b/tests/ui/higher-rank-trait-bounds/hrtb-parse.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-parse.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-parse.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.polonius.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.polonius.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.polonius.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.polonius.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.rs b/tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-perfect-forwarding.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus-where-clause.rs b/tests/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus-where-clause.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus-where-clause.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus-where-clause.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus.rs b/tests/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-precedence-of-plus.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-resolve-lifetime.rs b/tests/ui/higher-rank-trait-bounds/hrtb-resolve-lifetime.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-resolve-lifetime.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-resolve-lifetime.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-trait-object-paren-notation.rs b/tests/ui/higher-rank-trait-bounds/hrtb-trait-object-paren-notation.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-trait-object-paren-notation.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-trait-object-paren-notation.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-trait-object-passed-to-closure.rs b/tests/ui/higher-rank-trait-bounds/hrtb-trait-object-passed-to-closure.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-trait-object-passed-to-closure.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-trait-object-passed-to-closure.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-type-outlives.rs b/tests/ui/higher-rank-trait-bounds/hrtb-type-outlives.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-type-outlives.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-type-outlives.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-unboxed-closure-trait.rs b/tests/ui/higher-rank-trait-bounds/hrtb-unboxed-closure-trait.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-unboxed-closure-trait.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-unboxed-closure-trait.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs b/tests/ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs rename to tests/ui/higher-rank-trait-bounds/hrtb-wrong-kind.rs diff --git a/src/test/ui/higher-rank-trait-bounds/hrtb-wrong-kind.stderr b/tests/ui/higher-rank-trait-bounds/hrtb-wrong-kind.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/hrtb-wrong-kind.stderr rename to tests/ui/higher-rank-trait-bounds/hrtb-wrong-kind.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-100689.rs b/tests/ui/higher-rank-trait-bounds/issue-100689.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-100689.rs rename to tests/ui/higher-rank-trait-bounds/issue-100689.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-102899.rs b/tests/ui/higher-rank-trait-bounds/issue-102899.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-102899.rs rename to tests/ui/higher-rank-trait-bounds/issue-102899.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-30786.rs b/tests/ui/higher-rank-trait-bounds/issue-30786.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-30786.rs rename to tests/ui/higher-rank-trait-bounds/issue-30786.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-30786.stderr b/tests/ui/higher-rank-trait-bounds/issue-30786.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-30786.stderr rename to tests/ui/higher-rank-trait-bounds/issue-30786.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-36139-normalize-closure-sig.rs b/tests/ui/higher-rank-trait-bounds/issue-36139-normalize-closure-sig.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-36139-normalize-closure-sig.rs rename to tests/ui/higher-rank-trait-bounds/issue-36139-normalize-closure-sig.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-43623.rs b/tests/ui/higher-rank-trait-bounds/issue-43623.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-43623.rs rename to tests/ui/higher-rank-trait-bounds/issue-43623.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-46989.rs b/tests/ui/higher-rank-trait-bounds/issue-46989.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-46989.rs rename to tests/ui/higher-rank-trait-bounds/issue-46989.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-46989.stderr b/tests/ui/higher-rank-trait-bounds/issue-46989.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-46989.stderr rename to tests/ui/higher-rank-trait-bounds/issue-46989.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-57639.rs b/tests/ui/higher-rank-trait-bounds/issue-57639.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-57639.rs rename to tests/ui/higher-rank-trait-bounds/issue-57639.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-58451.rs b/tests/ui/higher-rank-trait-bounds/issue-58451.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-58451.rs rename to tests/ui/higher-rank-trait-bounds/issue-58451.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-58451.stderr b/tests/ui/higher-rank-trait-bounds/issue-58451.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-58451.stderr rename to tests/ui/higher-rank-trait-bounds/issue-58451.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-59311.rs b/tests/ui/higher-rank-trait-bounds/issue-59311.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-59311.rs rename to tests/ui/higher-rank-trait-bounds/issue-59311.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-59311.stderr b/tests/ui/higher-rank-trait-bounds/issue-59311.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-59311.stderr rename to tests/ui/higher-rank-trait-bounds/issue-59311.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-60283.rs b/tests/ui/higher-rank-trait-bounds/issue-60283.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-60283.rs rename to tests/ui/higher-rank-trait-bounds/issue-60283.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.rs b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.rs rename to tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr rename to tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/issue-88446.rs b/tests/ui/higher-rank-trait-bounds/issue-88446.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-88446.rs rename to tests/ui/higher-rank-trait-bounds/issue-88446.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs b/tests/ui/higher-rank-trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs rename to tests/ui/higher-rank-trait-bounds/issue-88586-hr-self-outlives-in-trait-def.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-90177.rs b/tests/ui/higher-rank-trait-bounds/issue-90177.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-90177.rs rename to tests/ui/higher-rank-trait-bounds/issue-90177.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-95034.rs b/tests/ui/higher-rank-trait-bounds/issue-95034.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-95034.rs rename to tests/ui/higher-rank-trait-bounds/issue-95034.rs diff --git a/src/test/ui/higher-rank-trait-bounds/issue-95230.rs b/tests/ui/higher-rank-trait-bounds/issue-95230.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/issue-95230.rs rename to tests/ui/higher-rank-trait-bounds/issue-95230.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-44005.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-44005.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-44005.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-44005.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-56556.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-56556.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-56556.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-56556.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-1.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-1.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-1.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-1.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-3.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-4.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-4.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-4.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-4.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-5.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-5.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-5.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-5.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-6.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-6.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-6.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-6.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-70120.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-70120.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-70120.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-70120.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.migrate.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.migrate.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.migrate.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.migrate.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-71955.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-74261.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-74261.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-74261.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-74261.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-76956.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-76956.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-76956.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-76956.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80706.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80706.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80706.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80706.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80956.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80956.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80956.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-80956.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-81809.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-81809.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-81809.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-81809.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-85455.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89436.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89436.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89436.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89436.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90612.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90612.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90612.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90612.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90638.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90638.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90638.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90638.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90875.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90875.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90875.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90875.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-90950.stderr diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.rs b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.rs similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.rs rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.rs diff --git a/src/test/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.stderr similarity index 100% rename from src/test/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.stderr rename to tests/ui/higher-rank-trait-bounds/normalize-under-binder/norm-before-method-resolution.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr b/tests/ui/hr-subtype/hr-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr rename to tests/ui/hr-subtype/hr-subtype.bound_a_b_ret_a_vs_bound_a_ret_a.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.bound_a_vs_free_x.stderr b/tests/ui/hr-subtype/hr-subtype.bound_a_vs_free_x.stderr similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.bound_a_vs_free_x.stderr rename to tests/ui/hr-subtype/hr-subtype.bound_a_vs_free_x.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr b/tests/ui/hr-subtype/hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr rename to tests/ui/hr-subtype/hr-subtype.bound_inv_a_b_vs_bound_inv_a.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.stderr b/tests/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.stderr similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.stderr rename to tests/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.free_x_vs_free_y.stderr b/tests/ui/hr-subtype/hr-subtype.free_x_vs_free_y.stderr similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.free_x_vs_free_y.stderr rename to tests/ui/hr-subtype/hr-subtype.free_x_vs_free_y.stderr diff --git a/src/test/ui/hr-subtype/hr-subtype.rs b/tests/ui/hr-subtype/hr-subtype.rs similarity index 100% rename from src/test/ui/hr-subtype/hr-subtype.rs rename to tests/ui/hr-subtype/hr-subtype.rs diff --git a/src/test/ui/hr-subtype/placeholder-pattern-fail.rs b/tests/ui/hr-subtype/placeholder-pattern-fail.rs similarity index 100% rename from src/test/ui/hr-subtype/placeholder-pattern-fail.rs rename to tests/ui/hr-subtype/placeholder-pattern-fail.rs diff --git a/src/test/ui/hr-subtype/placeholder-pattern-fail.stderr b/tests/ui/hr-subtype/placeholder-pattern-fail.stderr similarity index 100% rename from src/test/ui/hr-subtype/placeholder-pattern-fail.stderr rename to tests/ui/hr-subtype/placeholder-pattern-fail.stderr diff --git a/src/test/ui/hr-subtype/placeholder-pattern.rs b/tests/ui/hr-subtype/placeholder-pattern.rs similarity index 100% rename from src/test/ui/hr-subtype/placeholder-pattern.rs rename to tests/ui/hr-subtype/placeholder-pattern.rs diff --git a/src/test/ui/hr-subtype/return-static.rs b/tests/ui/hr-subtype/return-static.rs similarity index 100% rename from src/test/ui/hr-subtype/return-static.rs rename to tests/ui/hr-subtype/return-static.rs diff --git a/src/test/ui/hygiene/arguments.rs b/tests/ui/hygiene/arguments.rs similarity index 100% rename from src/test/ui/hygiene/arguments.rs rename to tests/ui/hygiene/arguments.rs diff --git a/src/test/ui/hygiene/arguments.stderr b/tests/ui/hygiene/arguments.stderr similarity index 100% rename from src/test/ui/hygiene/arguments.stderr rename to tests/ui/hygiene/arguments.stderr diff --git a/src/test/ui/hygiene/assoc_item_ctxt.rs b/tests/ui/hygiene/assoc_item_ctxt.rs similarity index 100% rename from src/test/ui/hygiene/assoc_item_ctxt.rs rename to tests/ui/hygiene/assoc_item_ctxt.rs diff --git a/src/test/ui/hygiene/assoc_item_ctxt.stderr b/tests/ui/hygiene/assoc_item_ctxt.stderr similarity index 100% rename from src/test/ui/hygiene/assoc_item_ctxt.stderr rename to tests/ui/hygiene/assoc_item_ctxt.stderr diff --git a/src/test/ui/hygiene/assoc_ty_bindings.rs b/tests/ui/hygiene/assoc_ty_bindings.rs similarity index 100% rename from src/test/ui/hygiene/assoc_ty_bindings.rs rename to tests/ui/hygiene/assoc_ty_bindings.rs diff --git a/src/test/ui/hygiene/auxiliary/codegen-attrs.rs b/tests/ui/hygiene/auxiliary/codegen-attrs.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/codegen-attrs.rs rename to tests/ui/hygiene/auxiliary/codegen-attrs.rs diff --git a/src/test/ui/hygiene/auxiliary/def-site-async-await.rs b/tests/ui/hygiene/auxiliary/def-site-async-await.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/def-site-async-await.rs rename to tests/ui/hygiene/auxiliary/def-site-async-await.rs diff --git a/src/test/ui/hygiene/auxiliary/fields.rs b/tests/ui/hygiene/auxiliary/fields.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/fields.rs rename to tests/ui/hygiene/auxiliary/fields.rs diff --git a/src/test/ui/hygiene/auxiliary/intercrate.rs b/tests/ui/hygiene/auxiliary/intercrate.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/intercrate.rs rename to tests/ui/hygiene/auxiliary/intercrate.rs diff --git a/src/test/ui/hygiene/auxiliary/legacy_interaction.rs b/tests/ui/hygiene/auxiliary/legacy_interaction.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/legacy_interaction.rs rename to tests/ui/hygiene/auxiliary/legacy_interaction.rs diff --git a/src/test/ui/hygiene/auxiliary/local_inner_macros.rs b/tests/ui/hygiene/auxiliary/local_inner_macros.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/local_inner_macros.rs rename to tests/ui/hygiene/auxiliary/local_inner_macros.rs diff --git a/src/test/ui/hygiene/auxiliary/methods.rs b/tests/ui/hygiene/auxiliary/methods.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/methods.rs rename to tests/ui/hygiene/auxiliary/methods.rs diff --git a/src/test/ui/hygiene/auxiliary/my_crate.rs b/tests/ui/hygiene/auxiliary/my_crate.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/my_crate.rs rename to tests/ui/hygiene/auxiliary/my_crate.rs diff --git a/src/test/ui/hygiene/auxiliary/needs_hygiene.rs b/tests/ui/hygiene/auxiliary/needs_hygiene.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/needs_hygiene.rs rename to tests/ui/hygiene/auxiliary/needs_hygiene.rs diff --git a/src/test/ui/hygiene/auxiliary/nested-dollar-crate.rs b/tests/ui/hygiene/auxiliary/nested-dollar-crate.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/nested-dollar-crate.rs rename to tests/ui/hygiene/auxiliary/nested-dollar-crate.rs diff --git a/src/test/ui/hygiene/auxiliary/not-libstd.rs b/tests/ui/hygiene/auxiliary/not-libstd.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/not-libstd.rs rename to tests/ui/hygiene/auxiliary/not-libstd.rs diff --git a/src/test/ui/hygiene/auxiliary/opaque-hygiene.rs b/tests/ui/hygiene/auxiliary/opaque-hygiene.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/opaque-hygiene.rs rename to tests/ui/hygiene/auxiliary/opaque-hygiene.rs diff --git a/src/test/ui/hygiene/auxiliary/pub_hygiene.rs b/tests/ui/hygiene/auxiliary/pub_hygiene.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/pub_hygiene.rs rename to tests/ui/hygiene/auxiliary/pub_hygiene.rs diff --git a/src/test/ui/hygiene/auxiliary/stdlib-prelude.rs b/tests/ui/hygiene/auxiliary/stdlib-prelude.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/stdlib-prelude.rs rename to tests/ui/hygiene/auxiliary/stdlib-prelude.rs diff --git a/src/test/ui/hygiene/auxiliary/transparent-basic.rs b/tests/ui/hygiene/auxiliary/transparent-basic.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/transparent-basic.rs rename to tests/ui/hygiene/auxiliary/transparent-basic.rs diff --git a/src/test/ui/hygiene/auxiliary/unhygienic_example.rs b/tests/ui/hygiene/auxiliary/unhygienic_example.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/unhygienic_example.rs rename to tests/ui/hygiene/auxiliary/unhygienic_example.rs diff --git a/src/test/ui/hygiene/auxiliary/use_by_macro.rs b/tests/ui/hygiene/auxiliary/use_by_macro.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/use_by_macro.rs rename to tests/ui/hygiene/auxiliary/use_by_macro.rs diff --git a/src/test/ui/hygiene/auxiliary/variants.rs b/tests/ui/hygiene/auxiliary/variants.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/variants.rs rename to tests/ui/hygiene/auxiliary/variants.rs diff --git a/src/test/ui/hygiene/auxiliary/xcrate.rs b/tests/ui/hygiene/auxiliary/xcrate.rs similarity index 100% rename from src/test/ui/hygiene/auxiliary/xcrate.rs rename to tests/ui/hygiene/auxiliary/xcrate.rs diff --git a/src/test/ui/hygiene/cross-crate-codegen-attrs.rs b/tests/ui/hygiene/cross-crate-codegen-attrs.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-codegen-attrs.rs rename to tests/ui/hygiene/cross-crate-codegen-attrs.rs diff --git a/src/test/ui/hygiene/cross-crate-define-and-use.rs b/tests/ui/hygiene/cross-crate-define-and-use.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-define-and-use.rs rename to tests/ui/hygiene/cross-crate-define-and-use.rs diff --git a/src/test/ui/hygiene/cross-crate-fields.rs b/tests/ui/hygiene/cross-crate-fields.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-fields.rs rename to tests/ui/hygiene/cross-crate-fields.rs diff --git a/src/test/ui/hygiene/cross-crate-glob-hygiene.rs b/tests/ui/hygiene/cross-crate-glob-hygiene.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-glob-hygiene.rs rename to tests/ui/hygiene/cross-crate-glob-hygiene.rs diff --git a/src/test/ui/hygiene/cross-crate-glob-hygiene.stderr b/tests/ui/hygiene/cross-crate-glob-hygiene.stderr similarity index 100% rename from src/test/ui/hygiene/cross-crate-glob-hygiene.stderr rename to tests/ui/hygiene/cross-crate-glob-hygiene.stderr diff --git a/src/test/ui/hygiene/cross-crate-methods.rs b/tests/ui/hygiene/cross-crate-methods.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-methods.rs rename to tests/ui/hygiene/cross-crate-methods.rs diff --git a/src/test/ui/hygiene/cross-crate-name-collision.rs b/tests/ui/hygiene/cross-crate-name-collision.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-name-collision.rs rename to tests/ui/hygiene/cross-crate-name-collision.rs diff --git a/src/test/ui/hygiene/cross-crate-name-hiding-2.rs b/tests/ui/hygiene/cross-crate-name-hiding-2.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-name-hiding-2.rs rename to tests/ui/hygiene/cross-crate-name-hiding-2.rs diff --git a/src/test/ui/hygiene/cross-crate-name-hiding-2.stderr b/tests/ui/hygiene/cross-crate-name-hiding-2.stderr similarity index 100% rename from src/test/ui/hygiene/cross-crate-name-hiding-2.stderr rename to tests/ui/hygiene/cross-crate-name-hiding-2.stderr diff --git a/src/test/ui/hygiene/cross-crate-name-hiding.rs b/tests/ui/hygiene/cross-crate-name-hiding.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-name-hiding.rs rename to tests/ui/hygiene/cross-crate-name-hiding.rs diff --git a/src/test/ui/hygiene/cross-crate-name-hiding.stderr b/tests/ui/hygiene/cross-crate-name-hiding.stderr similarity index 100% rename from src/test/ui/hygiene/cross-crate-name-hiding.stderr rename to tests/ui/hygiene/cross-crate-name-hiding.stderr diff --git a/src/test/ui/hygiene/cross-crate-redefine.rs b/tests/ui/hygiene/cross-crate-redefine.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-redefine.rs rename to tests/ui/hygiene/cross-crate-redefine.rs diff --git a/src/test/ui/hygiene/cross-crate-redefine.stderr b/tests/ui/hygiene/cross-crate-redefine.stderr similarity index 100% rename from src/test/ui/hygiene/cross-crate-redefine.stderr rename to tests/ui/hygiene/cross-crate-redefine.stderr diff --git a/src/test/ui/hygiene/cross-crate-variants.rs b/tests/ui/hygiene/cross-crate-variants.rs similarity index 100% rename from src/test/ui/hygiene/cross-crate-variants.rs rename to tests/ui/hygiene/cross-crate-variants.rs diff --git a/src/test/ui/hygiene/dollar-crate-modern.rs b/tests/ui/hygiene/dollar-crate-modern.rs similarity index 100% rename from src/test/ui/hygiene/dollar-crate-modern.rs rename to tests/ui/hygiene/dollar-crate-modern.rs diff --git a/src/test/ui/hygiene/duplicate_lifetimes.rs b/tests/ui/hygiene/duplicate_lifetimes.rs similarity index 100% rename from src/test/ui/hygiene/duplicate_lifetimes.rs rename to tests/ui/hygiene/duplicate_lifetimes.rs diff --git a/src/test/ui/hygiene/duplicate_lifetimes.stderr b/tests/ui/hygiene/duplicate_lifetimes.stderr similarity index 100% rename from src/test/ui/hygiene/duplicate_lifetimes.stderr rename to tests/ui/hygiene/duplicate_lifetimes.stderr diff --git a/src/test/ui/hygiene/eager-from-opaque-2.rs b/tests/ui/hygiene/eager-from-opaque-2.rs similarity index 100% rename from src/test/ui/hygiene/eager-from-opaque-2.rs rename to tests/ui/hygiene/eager-from-opaque-2.rs diff --git a/src/test/ui/hygiene/eager-from-opaque.rs b/tests/ui/hygiene/eager-from-opaque.rs similarity index 100% rename from src/test/ui/hygiene/eager-from-opaque.rs rename to tests/ui/hygiene/eager-from-opaque.rs diff --git a/src/test/ui/hygiene/expansion-info-reset.rs b/tests/ui/hygiene/expansion-info-reset.rs similarity index 100% rename from src/test/ui/hygiene/expansion-info-reset.rs rename to tests/ui/hygiene/expansion-info-reset.rs diff --git a/src/test/ui/hygiene/expansion-info-reset.stderr b/tests/ui/hygiene/expansion-info-reset.stderr similarity index 100% rename from src/test/ui/hygiene/expansion-info-reset.stderr rename to tests/ui/hygiene/expansion-info-reset.stderr diff --git a/src/test/ui/hygiene/extern-prelude-from-opaque-fail.rs b/tests/ui/hygiene/extern-prelude-from-opaque-fail.rs similarity index 100% rename from src/test/ui/hygiene/extern-prelude-from-opaque-fail.rs rename to tests/ui/hygiene/extern-prelude-from-opaque-fail.rs diff --git a/src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr b/tests/ui/hygiene/extern-prelude-from-opaque-fail.stderr similarity index 100% rename from src/test/ui/hygiene/extern-prelude-from-opaque-fail.stderr rename to tests/ui/hygiene/extern-prelude-from-opaque-fail.stderr diff --git a/src/test/ui/hygiene/fields-definition.rs b/tests/ui/hygiene/fields-definition.rs similarity index 100% rename from src/test/ui/hygiene/fields-definition.rs rename to tests/ui/hygiene/fields-definition.rs diff --git a/src/test/ui/hygiene/fields-definition.stderr b/tests/ui/hygiene/fields-definition.stderr similarity index 100% rename from src/test/ui/hygiene/fields-definition.stderr rename to tests/ui/hygiene/fields-definition.stderr diff --git a/src/test/ui/hygiene/fields-move.rs b/tests/ui/hygiene/fields-move.rs similarity index 100% rename from src/test/ui/hygiene/fields-move.rs rename to tests/ui/hygiene/fields-move.rs diff --git a/src/test/ui/hygiene/fields-move.stderr b/tests/ui/hygiene/fields-move.stderr similarity index 100% rename from src/test/ui/hygiene/fields-move.stderr rename to tests/ui/hygiene/fields-move.stderr diff --git a/src/test/ui/hygiene/fields-numeric-borrowck.rs b/tests/ui/hygiene/fields-numeric-borrowck.rs similarity index 100% rename from src/test/ui/hygiene/fields-numeric-borrowck.rs rename to tests/ui/hygiene/fields-numeric-borrowck.rs diff --git a/src/test/ui/hygiene/fields-numeric-borrowck.stderr b/tests/ui/hygiene/fields-numeric-borrowck.stderr similarity index 100% rename from src/test/ui/hygiene/fields-numeric-borrowck.stderr rename to tests/ui/hygiene/fields-numeric-borrowck.stderr diff --git a/src/test/ui/hygiene/fields.rs b/tests/ui/hygiene/fields.rs similarity index 100% rename from src/test/ui/hygiene/fields.rs rename to tests/ui/hygiene/fields.rs diff --git a/src/test/ui/hygiene/fields.stderr b/tests/ui/hygiene/fields.stderr similarity index 100% rename from src/test/ui/hygiene/fields.stderr rename to tests/ui/hygiene/fields.stderr diff --git a/src/test/ui/hygiene/for-loop.rs b/tests/ui/hygiene/for-loop.rs similarity index 100% rename from src/test/ui/hygiene/for-loop.rs rename to tests/ui/hygiene/for-loop.rs diff --git a/src/test/ui/hygiene/for-loop.stderr b/tests/ui/hygiene/for-loop.stderr similarity index 100% rename from src/test/ui/hygiene/for-loop.stderr rename to tests/ui/hygiene/for-loop.stderr diff --git a/src/test/ui/hygiene/format-args.rs b/tests/ui/hygiene/format-args.rs similarity index 100% rename from src/test/ui/hygiene/format-args.rs rename to tests/ui/hygiene/format-args.rs diff --git a/src/test/ui/hygiene/generate-mod.rs b/tests/ui/hygiene/generate-mod.rs similarity index 100% rename from src/test/ui/hygiene/generate-mod.rs rename to tests/ui/hygiene/generate-mod.rs diff --git a/src/test/ui/hygiene/generate-mod.stderr b/tests/ui/hygiene/generate-mod.stderr similarity index 100% rename from src/test/ui/hygiene/generate-mod.stderr rename to tests/ui/hygiene/generate-mod.stderr diff --git a/src/test/ui/hygiene/generic_params.rs b/tests/ui/hygiene/generic_params.rs similarity index 100% rename from src/test/ui/hygiene/generic_params.rs rename to tests/ui/hygiene/generic_params.rs diff --git a/src/test/ui/hygiene/globs.rs b/tests/ui/hygiene/globs.rs similarity index 100% rename from src/test/ui/hygiene/globs.rs rename to tests/ui/hygiene/globs.rs diff --git a/src/test/ui/hygiene/globs.stderr b/tests/ui/hygiene/globs.stderr similarity index 100% rename from src/test/ui/hygiene/globs.stderr rename to tests/ui/hygiene/globs.stderr diff --git a/src/test/ui/hygiene/hir-res-hygiene.rs b/tests/ui/hygiene/hir-res-hygiene.rs similarity index 100% rename from src/test/ui/hygiene/hir-res-hygiene.rs rename to tests/ui/hygiene/hir-res-hygiene.rs diff --git a/src/test/ui/hygiene/hygiene-dodging-1.rs b/tests/ui/hygiene/hygiene-dodging-1.rs similarity index 100% rename from src/test/ui/hygiene/hygiene-dodging-1.rs rename to tests/ui/hygiene/hygiene-dodging-1.rs diff --git a/src/test/ui/hygiene/hygiene.rs b/tests/ui/hygiene/hygiene.rs similarity index 100% rename from src/test/ui/hygiene/hygiene.rs rename to tests/ui/hygiene/hygiene.rs diff --git a/src/test/ui/hygiene/hygienic-label-1.rs b/tests/ui/hygiene/hygienic-label-1.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-label-1.rs rename to tests/ui/hygiene/hygienic-label-1.rs diff --git a/src/test/ui/hygiene/hygienic-label-1.stderr b/tests/ui/hygiene/hygienic-label-1.stderr similarity index 100% rename from src/test/ui/hygiene/hygienic-label-1.stderr rename to tests/ui/hygiene/hygienic-label-1.stderr diff --git a/src/test/ui/hygiene/hygienic-label-2.rs b/tests/ui/hygiene/hygienic-label-2.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-label-2.rs rename to tests/ui/hygiene/hygienic-label-2.rs diff --git a/src/test/ui/hygiene/hygienic-label-2.stderr b/tests/ui/hygiene/hygienic-label-2.stderr similarity index 100% rename from src/test/ui/hygiene/hygienic-label-2.stderr rename to tests/ui/hygiene/hygienic-label-2.stderr diff --git a/src/test/ui/hygiene/hygienic-label-3.rs b/tests/ui/hygiene/hygienic-label-3.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-label-3.rs rename to tests/ui/hygiene/hygienic-label-3.rs diff --git a/src/test/ui/hygiene/hygienic-label-3.stderr b/tests/ui/hygiene/hygienic-label-3.stderr similarity index 100% rename from src/test/ui/hygiene/hygienic-label-3.stderr rename to tests/ui/hygiene/hygienic-label-3.stderr diff --git a/src/test/ui/hygiene/hygienic-label-4.rs b/tests/ui/hygiene/hygienic-label-4.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-label-4.rs rename to tests/ui/hygiene/hygienic-label-4.rs diff --git a/src/test/ui/hygiene/hygienic-label-4.stderr b/tests/ui/hygiene/hygienic-label-4.stderr similarity index 100% rename from src/test/ui/hygiene/hygienic-label-4.stderr rename to tests/ui/hygiene/hygienic-label-4.stderr diff --git a/src/test/ui/hygiene/hygienic-labels-in-let.rs b/tests/ui/hygiene/hygienic-labels-in-let.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-labels-in-let.rs rename to tests/ui/hygiene/hygienic-labels-in-let.rs diff --git a/src/test/ui/hygiene/hygienic-labels.rs b/tests/ui/hygiene/hygienic-labels.rs similarity index 100% rename from src/test/ui/hygiene/hygienic-labels.rs rename to tests/ui/hygiene/hygienic-labels.rs diff --git a/src/test/ui/hygiene/impl_items-2.rs b/tests/ui/hygiene/impl_items-2.rs similarity index 100% rename from src/test/ui/hygiene/impl_items-2.rs rename to tests/ui/hygiene/impl_items-2.rs diff --git a/src/test/ui/hygiene/impl_items-2.stderr b/tests/ui/hygiene/impl_items-2.stderr similarity index 100% rename from src/test/ui/hygiene/impl_items-2.stderr rename to tests/ui/hygiene/impl_items-2.stderr diff --git a/src/test/ui/hygiene/impl_items.rs b/tests/ui/hygiene/impl_items.rs similarity index 100% rename from src/test/ui/hygiene/impl_items.rs rename to tests/ui/hygiene/impl_items.rs diff --git a/src/test/ui/hygiene/impl_items.stderr b/tests/ui/hygiene/impl_items.stderr similarity index 100% rename from src/test/ui/hygiene/impl_items.stderr rename to tests/ui/hygiene/impl_items.stderr diff --git a/src/test/ui/hygiene/intercrate.rs b/tests/ui/hygiene/intercrate.rs similarity index 100% rename from src/test/ui/hygiene/intercrate.rs rename to tests/ui/hygiene/intercrate.rs diff --git a/src/test/ui/hygiene/intercrate.stderr b/tests/ui/hygiene/intercrate.stderr similarity index 100% rename from src/test/ui/hygiene/intercrate.stderr rename to tests/ui/hygiene/intercrate.stderr diff --git a/src/test/ui/hygiene/issue-15221.rs b/tests/ui/hygiene/issue-15221.rs similarity index 100% rename from src/test/ui/hygiene/issue-15221.rs rename to tests/ui/hygiene/issue-15221.rs diff --git a/src/test/ui/hygiene/issue-32922.rs b/tests/ui/hygiene/issue-32922.rs similarity index 100% rename from src/test/ui/hygiene/issue-32922.rs rename to tests/ui/hygiene/issue-32922.rs diff --git a/src/test/ui/hygiene/issue-40847.rs b/tests/ui/hygiene/issue-40847.rs similarity index 100% rename from src/test/ui/hygiene/issue-40847.rs rename to tests/ui/hygiene/issue-40847.rs diff --git a/src/test/ui/hygiene/issue-44128.rs b/tests/ui/hygiene/issue-44128.rs similarity index 100% rename from src/test/ui/hygiene/issue-44128.rs rename to tests/ui/hygiene/issue-44128.rs diff --git a/src/test/ui/hygiene/issue-47311.rs b/tests/ui/hygiene/issue-47311.rs similarity index 100% rename from src/test/ui/hygiene/issue-47311.rs rename to tests/ui/hygiene/issue-47311.rs diff --git a/src/test/ui/hygiene/issue-47312.rs b/tests/ui/hygiene/issue-47312.rs similarity index 100% rename from src/test/ui/hygiene/issue-47312.rs rename to tests/ui/hygiene/issue-47312.rs diff --git a/src/test/ui/hygiene/issue-61574-const-parameters.rs b/tests/ui/hygiene/issue-61574-const-parameters.rs similarity index 100% rename from src/test/ui/hygiene/issue-61574-const-parameters.rs rename to tests/ui/hygiene/issue-61574-const-parameters.rs diff --git a/src/test/ui/hygiene/issue-77523-def-site-async-await.rs b/tests/ui/hygiene/issue-77523-def-site-async-await.rs similarity index 100% rename from src/test/ui/hygiene/issue-77523-def-site-async-await.rs rename to tests/ui/hygiene/issue-77523-def-site-async-await.rs diff --git a/src/test/ui/hygiene/items.rs b/tests/ui/hygiene/items.rs similarity index 100% rename from src/test/ui/hygiene/items.rs rename to tests/ui/hygiene/items.rs diff --git a/src/test/ui/hygiene/lambda-var-hygiene.rs b/tests/ui/hygiene/lambda-var-hygiene.rs similarity index 100% rename from src/test/ui/hygiene/lambda-var-hygiene.rs rename to tests/ui/hygiene/lambda-var-hygiene.rs diff --git a/src/test/ui/hygiene/legacy_interaction.rs b/tests/ui/hygiene/legacy_interaction.rs similarity index 100% rename from src/test/ui/hygiene/legacy_interaction.rs rename to tests/ui/hygiene/legacy_interaction.rs diff --git a/src/test/ui/hygiene/lexical.rs b/tests/ui/hygiene/lexical.rs similarity index 100% rename from src/test/ui/hygiene/lexical.rs rename to tests/ui/hygiene/lexical.rs diff --git a/src/test/ui/hygiene/local_inner_macros.rs b/tests/ui/hygiene/local_inner_macros.rs similarity index 100% rename from src/test/ui/hygiene/local_inner_macros.rs rename to tests/ui/hygiene/local_inner_macros.rs diff --git a/src/test/ui/hygiene/macro-metavars-legacy.rs b/tests/ui/hygiene/macro-metavars-legacy.rs similarity index 100% rename from src/test/ui/hygiene/macro-metavars-legacy.rs rename to tests/ui/hygiene/macro-metavars-legacy.rs diff --git a/src/test/ui/hygiene/macro-metavars-transparent.rs b/tests/ui/hygiene/macro-metavars-transparent.rs similarity index 100% rename from src/test/ui/hygiene/macro-metavars-transparent.rs rename to tests/ui/hygiene/macro-metavars-transparent.rs diff --git a/src/test/ui/hygiene/missing-self-diag.rs b/tests/ui/hygiene/missing-self-diag.rs similarity index 100% rename from src/test/ui/hygiene/missing-self-diag.rs rename to tests/ui/hygiene/missing-self-diag.rs diff --git a/src/test/ui/hygiene/missing-self-diag.stderr b/tests/ui/hygiene/missing-self-diag.stderr similarity index 100% rename from src/test/ui/hygiene/missing-self-diag.stderr rename to tests/ui/hygiene/missing-self-diag.stderr diff --git a/src/test/ui/hygiene/nested-dollar-crate.rs b/tests/ui/hygiene/nested-dollar-crate.rs similarity index 100% rename from src/test/ui/hygiene/nested-dollar-crate.rs rename to tests/ui/hygiene/nested-dollar-crate.rs diff --git a/src/test/ui/hygiene/nested_macro_privacy.rs b/tests/ui/hygiene/nested_macro_privacy.rs similarity index 100% rename from src/test/ui/hygiene/nested_macro_privacy.rs rename to tests/ui/hygiene/nested_macro_privacy.rs diff --git a/src/test/ui/hygiene/nested_macro_privacy.stderr b/tests/ui/hygiene/nested_macro_privacy.stderr similarity index 100% rename from src/test/ui/hygiene/nested_macro_privacy.stderr rename to tests/ui/hygiene/nested_macro_privacy.stderr diff --git a/src/test/ui/hygiene/no_implicit_prelude-2018.rs b/tests/ui/hygiene/no_implicit_prelude-2018.rs similarity index 100% rename from src/test/ui/hygiene/no_implicit_prelude-2018.rs rename to tests/ui/hygiene/no_implicit_prelude-2018.rs diff --git a/src/test/ui/hygiene/no_implicit_prelude-2018.stderr b/tests/ui/hygiene/no_implicit_prelude-2018.stderr similarity index 100% rename from src/test/ui/hygiene/no_implicit_prelude-2018.stderr rename to tests/ui/hygiene/no_implicit_prelude-2018.stderr diff --git a/src/test/ui/hygiene/no_implicit_prelude-2021.rs b/tests/ui/hygiene/no_implicit_prelude-2021.rs similarity index 100% rename from src/test/ui/hygiene/no_implicit_prelude-2021.rs rename to tests/ui/hygiene/no_implicit_prelude-2021.rs diff --git a/src/test/ui/hygiene/no_implicit_prelude.rs b/tests/ui/hygiene/no_implicit_prelude.rs similarity index 100% rename from src/test/ui/hygiene/no_implicit_prelude.rs rename to tests/ui/hygiene/no_implicit_prelude.rs diff --git a/src/test/ui/hygiene/no_implicit_prelude.stderr b/tests/ui/hygiene/no_implicit_prelude.stderr similarity index 100% rename from src/test/ui/hygiene/no_implicit_prelude.stderr rename to tests/ui/hygiene/no_implicit_prelude.stderr diff --git a/src/test/ui/hygiene/panic-location.rs b/tests/ui/hygiene/panic-location.rs similarity index 100% rename from src/test/ui/hygiene/panic-location.rs rename to tests/ui/hygiene/panic-location.rs diff --git a/src/test/ui/hygiene/panic-location.run.stderr b/tests/ui/hygiene/panic-location.run.stderr similarity index 100% rename from src/test/ui/hygiene/panic-location.run.stderr rename to tests/ui/hygiene/panic-location.run.stderr diff --git a/src/test/ui/hygiene/pattern-macro.rs b/tests/ui/hygiene/pattern-macro.rs similarity index 100% rename from src/test/ui/hygiene/pattern-macro.rs rename to tests/ui/hygiene/pattern-macro.rs diff --git a/src/test/ui/hygiene/pattern-macro.stderr b/tests/ui/hygiene/pattern-macro.stderr similarity index 100% rename from src/test/ui/hygiene/pattern-macro.stderr rename to tests/ui/hygiene/pattern-macro.stderr diff --git a/src/test/ui/hygiene/prelude-import-hygiene.rs b/tests/ui/hygiene/prelude-import-hygiene.rs similarity index 100% rename from src/test/ui/hygiene/prelude-import-hygiene.rs rename to tests/ui/hygiene/prelude-import-hygiene.rs diff --git a/src/test/ui/hygiene/privacy-early.rs b/tests/ui/hygiene/privacy-early.rs similarity index 100% rename from src/test/ui/hygiene/privacy-early.rs rename to tests/ui/hygiene/privacy-early.rs diff --git a/src/test/ui/hygiene/privacy-early.stderr b/tests/ui/hygiene/privacy-early.stderr similarity index 100% rename from src/test/ui/hygiene/privacy-early.stderr rename to tests/ui/hygiene/privacy-early.stderr diff --git a/src/test/ui/hygiene/privacy.rs b/tests/ui/hygiene/privacy.rs similarity index 100% rename from src/test/ui/hygiene/privacy.rs rename to tests/ui/hygiene/privacy.rs diff --git a/src/test/ui/hygiene/privacy.stderr b/tests/ui/hygiene/privacy.stderr similarity index 100% rename from src/test/ui/hygiene/privacy.stderr rename to tests/ui/hygiene/privacy.stderr diff --git a/src/test/ui/hygiene/rustc-macro-transparency.rs b/tests/ui/hygiene/rustc-macro-transparency.rs similarity index 100% rename from src/test/ui/hygiene/rustc-macro-transparency.rs rename to tests/ui/hygiene/rustc-macro-transparency.rs diff --git a/src/test/ui/hygiene/rustc-macro-transparency.stderr b/tests/ui/hygiene/rustc-macro-transparency.stderr similarity index 100% rename from src/test/ui/hygiene/rustc-macro-transparency.stderr rename to tests/ui/hygiene/rustc-macro-transparency.stderr diff --git a/src/test/ui/hygiene/specialization.rs b/tests/ui/hygiene/specialization.rs similarity index 100% rename from src/test/ui/hygiene/specialization.rs rename to tests/ui/hygiene/specialization.rs diff --git a/src/test/ui/hygiene/stdlib-prelude-from-opaque-early.rs b/tests/ui/hygiene/stdlib-prelude-from-opaque-early.rs similarity index 100% rename from src/test/ui/hygiene/stdlib-prelude-from-opaque-early.rs rename to tests/ui/hygiene/stdlib-prelude-from-opaque-early.rs diff --git a/src/test/ui/hygiene/stdlib-prelude-from-opaque-late.rs b/tests/ui/hygiene/stdlib-prelude-from-opaque-late.rs similarity index 100% rename from src/test/ui/hygiene/stdlib-prelude-from-opaque-late.rs rename to tests/ui/hygiene/stdlib-prelude-from-opaque-late.rs diff --git a/src/test/ui/hygiene/thread-local-not-in-prelude.rs b/tests/ui/hygiene/thread-local-not-in-prelude.rs similarity index 100% rename from src/test/ui/hygiene/thread-local-not-in-prelude.rs rename to tests/ui/hygiene/thread-local-not-in-prelude.rs diff --git a/src/test/ui/hygiene/trait_items-2.rs b/tests/ui/hygiene/trait_items-2.rs similarity index 100% rename from src/test/ui/hygiene/trait_items-2.rs rename to tests/ui/hygiene/trait_items-2.rs diff --git a/src/test/ui/hygiene/trait_items.rs b/tests/ui/hygiene/trait_items.rs similarity index 100% rename from src/test/ui/hygiene/trait_items.rs rename to tests/ui/hygiene/trait_items.rs diff --git a/src/test/ui/hygiene/trait_items.stderr b/tests/ui/hygiene/trait_items.stderr similarity index 100% rename from src/test/ui/hygiene/trait_items.stderr rename to tests/ui/hygiene/trait_items.stderr diff --git a/src/test/ui/hygiene/traits-in-scope.rs b/tests/ui/hygiene/traits-in-scope.rs similarity index 100% rename from src/test/ui/hygiene/traits-in-scope.rs rename to tests/ui/hygiene/traits-in-scope.rs diff --git a/src/test/ui/hygiene/transparent-basic.rs b/tests/ui/hygiene/transparent-basic.rs similarity index 100% rename from src/test/ui/hygiene/transparent-basic.rs rename to tests/ui/hygiene/transparent-basic.rs diff --git a/src/test/ui/hygiene/unpretty-debug.rs b/tests/ui/hygiene/unpretty-debug.rs similarity index 100% rename from src/test/ui/hygiene/unpretty-debug.rs rename to tests/ui/hygiene/unpretty-debug.rs diff --git a/src/test/ui/hygiene/unpretty-debug.stdout b/tests/ui/hygiene/unpretty-debug.stdout similarity index 100% rename from src/test/ui/hygiene/unpretty-debug.stdout rename to tests/ui/hygiene/unpretty-debug.stdout diff --git a/src/test/ui/hygiene/wrap_unhygienic_example.rs b/tests/ui/hygiene/wrap_unhygienic_example.rs similarity index 100% rename from src/test/ui/hygiene/wrap_unhygienic_example.rs rename to tests/ui/hygiene/wrap_unhygienic_example.rs diff --git a/src/test/ui/hygiene/xcrate.rs b/tests/ui/hygiene/xcrate.rs similarity index 100% rename from src/test/ui/hygiene/xcrate.rs rename to tests/ui/hygiene/xcrate.rs diff --git a/src/test/ui/illegal-sized-bound/mutability-mismatch-arg.fixed b/tests/ui/illegal-sized-bound/mutability-mismatch-arg.fixed similarity index 100% rename from src/test/ui/illegal-sized-bound/mutability-mismatch-arg.fixed rename to tests/ui/illegal-sized-bound/mutability-mismatch-arg.fixed diff --git a/src/test/ui/illegal-sized-bound/mutability-mismatch-arg.rs b/tests/ui/illegal-sized-bound/mutability-mismatch-arg.rs similarity index 100% rename from src/test/ui/illegal-sized-bound/mutability-mismatch-arg.rs rename to tests/ui/illegal-sized-bound/mutability-mismatch-arg.rs diff --git a/src/test/ui/illegal-sized-bound/mutability-mismatch-arg.stderr b/tests/ui/illegal-sized-bound/mutability-mismatch-arg.stderr similarity index 100% rename from src/test/ui/illegal-sized-bound/mutability-mismatch-arg.stderr rename to tests/ui/illegal-sized-bound/mutability-mismatch-arg.stderr diff --git a/src/test/ui/illegal-sized-bound/mutability-mismatch.rs b/tests/ui/illegal-sized-bound/mutability-mismatch.rs similarity index 100% rename from src/test/ui/illegal-sized-bound/mutability-mismatch.rs rename to tests/ui/illegal-sized-bound/mutability-mismatch.rs diff --git a/src/test/ui/illegal-sized-bound/mutability-mismatch.stderr b/tests/ui/illegal-sized-bound/mutability-mismatch.stderr similarity index 100% rename from src/test/ui/illegal-sized-bound/mutability-mismatch.stderr rename to tests/ui/illegal-sized-bound/mutability-mismatch.stderr diff --git a/src/test/ui/illegal-sized-bound/regular.rs b/tests/ui/illegal-sized-bound/regular.rs similarity index 100% rename from src/test/ui/illegal-sized-bound/regular.rs rename to tests/ui/illegal-sized-bound/regular.rs diff --git a/src/test/ui/illegal-sized-bound/regular.stderr b/tests/ui/illegal-sized-bound/regular.stderr similarity index 100% rename from src/test/ui/illegal-sized-bound/regular.stderr rename to tests/ui/illegal-sized-bound/regular.stderr diff --git a/src/test/ui/illegal-ufcs-drop.fixed b/tests/ui/illegal-ufcs-drop.fixed similarity index 100% rename from src/test/ui/illegal-ufcs-drop.fixed rename to tests/ui/illegal-ufcs-drop.fixed diff --git a/src/test/ui/illegal-ufcs-drop.rs b/tests/ui/illegal-ufcs-drop.rs similarity index 100% rename from src/test/ui/illegal-ufcs-drop.rs rename to tests/ui/illegal-ufcs-drop.rs diff --git a/src/test/ui/illegal-ufcs-drop.stderr b/tests/ui/illegal-ufcs-drop.stderr similarity index 100% rename from src/test/ui/illegal-ufcs-drop.stderr rename to tests/ui/illegal-ufcs-drop.stderr diff --git a/src/test/ui/impl-header-lifetime-elision/assoc-type.rs b/tests/ui/impl-header-lifetime-elision/assoc-type.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/assoc-type.rs rename to tests/ui/impl-header-lifetime-elision/assoc-type.rs diff --git a/src/test/ui/impl-header-lifetime-elision/assoc-type.stderr b/tests/ui/impl-header-lifetime-elision/assoc-type.stderr similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/assoc-type.stderr rename to tests/ui/impl-header-lifetime-elision/assoc-type.stderr diff --git a/src/test/ui/impl-header-lifetime-elision/constant-used-as-arraylen.rs b/tests/ui/impl-header-lifetime-elision/constant-used-as-arraylen.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/constant-used-as-arraylen.rs rename to tests/ui/impl-header-lifetime-elision/constant-used-as-arraylen.rs diff --git a/src/test/ui/impl-header-lifetime-elision/dyn-trait.rs b/tests/ui/impl-header-lifetime-elision/dyn-trait.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/dyn-trait.rs rename to tests/ui/impl-header-lifetime-elision/dyn-trait.rs diff --git a/src/test/ui/impl-header-lifetime-elision/dyn-trait.stderr b/tests/ui/impl-header-lifetime-elision/dyn-trait.stderr similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/dyn-trait.stderr rename to tests/ui/impl-header-lifetime-elision/dyn-trait.stderr diff --git a/src/test/ui/impl-header-lifetime-elision/explicit-and-elided-same-header.rs b/tests/ui/impl-header-lifetime-elision/explicit-and-elided-same-header.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/explicit-and-elided-same-header.rs rename to tests/ui/impl-header-lifetime-elision/explicit-and-elided-same-header.rs diff --git a/src/test/ui/impl-header-lifetime-elision/inherent-impl.rs b/tests/ui/impl-header-lifetime-elision/inherent-impl.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/inherent-impl.rs rename to tests/ui/impl-header-lifetime-elision/inherent-impl.rs diff --git a/src/test/ui/impl-header-lifetime-elision/path-elided.rs b/tests/ui/impl-header-lifetime-elision/path-elided.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/path-elided.rs rename to tests/ui/impl-header-lifetime-elision/path-elided.rs diff --git a/src/test/ui/impl-header-lifetime-elision/path-elided.stderr b/tests/ui/impl-header-lifetime-elision/path-elided.stderr similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/path-elided.stderr rename to tests/ui/impl-header-lifetime-elision/path-elided.stderr diff --git a/src/test/ui/impl-header-lifetime-elision/path-underscore.rs b/tests/ui/impl-header-lifetime-elision/path-underscore.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/path-underscore.rs rename to tests/ui/impl-header-lifetime-elision/path-underscore.rs diff --git a/src/test/ui/impl-header-lifetime-elision/ref-underscore.rs b/tests/ui/impl-header-lifetime-elision/ref-underscore.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/ref-underscore.rs rename to tests/ui/impl-header-lifetime-elision/ref-underscore.rs diff --git a/src/test/ui/impl-header-lifetime-elision/trait-elided.rs b/tests/ui/impl-header-lifetime-elision/trait-elided.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/trait-elided.rs rename to tests/ui/impl-header-lifetime-elision/trait-elided.rs diff --git a/src/test/ui/impl-header-lifetime-elision/trait-elided.stderr b/tests/ui/impl-header-lifetime-elision/trait-elided.stderr similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/trait-elided.stderr rename to tests/ui/impl-header-lifetime-elision/trait-elided.stderr diff --git a/src/test/ui/impl-header-lifetime-elision/trait-underscore.rs b/tests/ui/impl-header-lifetime-elision/trait-underscore.rs similarity index 100% rename from src/test/ui/impl-header-lifetime-elision/trait-underscore.rs rename to tests/ui/impl-header-lifetime-elision/trait-underscore.rs diff --git a/src/test/ui/impl-inherent-non-conflict.rs b/tests/ui/impl-inherent-non-conflict.rs similarity index 100% rename from src/test/ui/impl-inherent-non-conflict.rs rename to tests/ui/impl-inherent-non-conflict.rs diff --git a/src/test/ui/impl-not-adjacent-to-type.rs b/tests/ui/impl-not-adjacent-to-type.rs similarity index 100% rename from src/test/ui/impl-not-adjacent-to-type.rs rename to tests/ui/impl-not-adjacent-to-type.rs diff --git a/src/test/ui/impl-privacy-xc-1.rs b/tests/ui/impl-privacy-xc-1.rs similarity index 100% rename from src/test/ui/impl-privacy-xc-1.rs rename to tests/ui/impl-privacy-xc-1.rs diff --git a/src/test/ui/impl-trait/associated-impl-trait-type-generic-trait.rs b/tests/ui/impl-trait/associated-impl-trait-type-generic-trait.rs similarity index 100% rename from src/test/ui/impl-trait/associated-impl-trait-type-generic-trait.rs rename to tests/ui/impl-trait/associated-impl-trait-type-generic-trait.rs diff --git a/src/test/ui/impl-trait/associated-impl-trait-type-trivial.rs b/tests/ui/impl-trait/associated-impl-trait-type-trivial.rs similarity index 100% rename from src/test/ui/impl-trait/associated-impl-trait-type-trivial.rs rename to tests/ui/impl-trait/associated-impl-trait-type-trivial.rs diff --git a/src/test/ui/impl-trait/associated-impl-trait-type.rs b/tests/ui/impl-trait/associated-impl-trait-type.rs similarity index 100% rename from src/test/ui/impl-trait/associated-impl-trait-type.rs rename to tests/ui/impl-trait/associated-impl-trait-type.rs diff --git a/src/test/ui/impl-trait/async_scope_creep.rs b/tests/ui/impl-trait/async_scope_creep.rs similarity index 100% rename from src/test/ui/impl-trait/async_scope_creep.rs rename to tests/ui/impl-trait/async_scope_creep.rs diff --git a/src/test/ui/impl-trait/auto-trait-leak-rpass.rs b/tests/ui/impl-trait/auto-trait-leak-rpass.rs similarity index 100% rename from src/test/ui/impl-trait/auto-trait-leak-rpass.rs rename to tests/ui/impl-trait/auto-trait-leak-rpass.rs diff --git a/src/test/ui/impl-trait/auto-trait-leak.rs b/tests/ui/impl-trait/auto-trait-leak.rs similarity index 100% rename from src/test/ui/impl-trait/auto-trait-leak.rs rename to tests/ui/impl-trait/auto-trait-leak.rs diff --git a/src/test/ui/impl-trait/auto-trait-leak.stderr b/tests/ui/impl-trait/auto-trait-leak.stderr similarity index 100% rename from src/test/ui/impl-trait/auto-trait-leak.stderr rename to tests/ui/impl-trait/auto-trait-leak.stderr diff --git a/src/test/ui/impl-trait/auto-trait-leak2.rs b/tests/ui/impl-trait/auto-trait-leak2.rs similarity index 100% rename from src/test/ui/impl-trait/auto-trait-leak2.rs rename to tests/ui/impl-trait/auto-trait-leak2.rs diff --git a/src/test/ui/impl-trait/auto-trait-leak2.stderr b/tests/ui/impl-trait/auto-trait-leak2.stderr similarity index 100% rename from src/test/ui/impl-trait/auto-trait-leak2.stderr rename to tests/ui/impl-trait/auto-trait-leak2.stderr diff --git a/src/test/ui/impl-trait/auto-trait.rs b/tests/ui/impl-trait/auto-trait.rs similarity index 100% rename from src/test/ui/impl-trait/auto-trait.rs rename to tests/ui/impl-trait/auto-trait.rs diff --git a/src/test/ui/impl-trait/auto-trait.stderr b/tests/ui/impl-trait/auto-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/auto-trait.stderr rename to tests/ui/impl-trait/auto-trait.stderr diff --git a/src/test/ui/impl-trait/autoderef.rs b/tests/ui/impl-trait/autoderef.rs similarity index 100% rename from src/test/ui/impl-trait/autoderef.rs rename to tests/ui/impl-trait/autoderef.rs diff --git a/src/test/ui/impl-trait/auxiliary/extra-item.rs b/tests/ui/impl-trait/auxiliary/extra-item.rs similarity index 100% rename from src/test/ui/impl-trait/auxiliary/extra-item.rs rename to tests/ui/impl-trait/auxiliary/extra-item.rs diff --git a/src/test/ui/impl-trait/auxiliary/no_method_suggested_traits.rs b/tests/ui/impl-trait/auxiliary/no_method_suggested_traits.rs similarity index 100% rename from src/test/ui/impl-trait/auxiliary/no_method_suggested_traits.rs rename to tests/ui/impl-trait/auxiliary/no_method_suggested_traits.rs diff --git a/src/test/ui/impl-trait/auxiliary/xcrate.rs b/tests/ui/impl-trait/auxiliary/xcrate.rs similarity index 100% rename from src/test/ui/impl-trait/auxiliary/xcrate.rs rename to tests/ui/impl-trait/auxiliary/xcrate.rs diff --git a/src/test/ui/impl-trait/bound-normalization-fail.rs b/tests/ui/impl-trait/bound-normalization-fail.rs similarity index 100% rename from src/test/ui/impl-trait/bound-normalization-fail.rs rename to tests/ui/impl-trait/bound-normalization-fail.rs diff --git a/src/test/ui/impl-trait/bound-normalization-fail.stderr b/tests/ui/impl-trait/bound-normalization-fail.stderr similarity index 100% rename from src/test/ui/impl-trait/bound-normalization-fail.stderr rename to tests/ui/impl-trait/bound-normalization-fail.stderr diff --git a/src/test/ui/impl-trait/bound-normalization-pass.rs b/tests/ui/impl-trait/bound-normalization-pass.rs similarity index 100% rename from src/test/ui/impl-trait/bound-normalization-pass.rs rename to tests/ui/impl-trait/bound-normalization-pass.rs diff --git a/src/test/ui/impl-trait/bounds_regression.rs b/tests/ui/impl-trait/bounds_regression.rs similarity index 100% rename from src/test/ui/impl-trait/bounds_regression.rs rename to tests/ui/impl-trait/bounds_regression.rs diff --git a/src/test/ui/impl-trait/can-return-unconstrained-closure.rs b/tests/ui/impl-trait/can-return-unconstrained-closure.rs similarity index 100% rename from src/test/ui/impl-trait/can-return-unconstrained-closure.rs rename to tests/ui/impl-trait/can-return-unconstrained-closure.rs diff --git a/src/test/ui/impl-trait/closure-calling-parent-fn.rs b/tests/ui/impl-trait/closure-calling-parent-fn.rs similarity index 100% rename from src/test/ui/impl-trait/closure-calling-parent-fn.rs rename to tests/ui/impl-trait/closure-calling-parent-fn.rs diff --git a/src/test/ui/impl-trait/closure-in-impl-trait-arg.rs b/tests/ui/impl-trait/closure-in-impl-trait-arg.rs similarity index 100% rename from src/test/ui/impl-trait/closure-in-impl-trait-arg.rs rename to tests/ui/impl-trait/closure-in-impl-trait-arg.rs diff --git a/src/test/ui/impl-trait/closure-in-impl-trait.rs b/tests/ui/impl-trait/closure-in-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/closure-in-impl-trait.rs rename to tests/ui/impl-trait/closure-in-impl-trait.rs diff --git a/src/test/ui/impl-trait/cross-return-site-inference.rs b/tests/ui/impl-trait/cross-return-site-inference.rs similarity index 100% rename from src/test/ui/impl-trait/cross-return-site-inference.rs rename to tests/ui/impl-trait/cross-return-site-inference.rs diff --git a/src/test/ui/impl-trait/cross-return-site-inference.stderr b/tests/ui/impl-trait/cross-return-site-inference.stderr similarity index 100% rename from src/test/ui/impl-trait/cross-return-site-inference.stderr rename to tests/ui/impl-trait/cross-return-site-inference.stderr diff --git a/src/test/ui/impl-trait/deduce-signature-from-supertrait.rs b/tests/ui/impl-trait/deduce-signature-from-supertrait.rs similarity index 100% rename from src/test/ui/impl-trait/deduce-signature-from-supertrait.rs rename to tests/ui/impl-trait/deduce-signature-from-supertrait.rs diff --git a/src/test/ui/impl-trait/deprecated_annotation.rs b/tests/ui/impl-trait/deprecated_annotation.rs similarity index 100% rename from src/test/ui/impl-trait/deprecated_annotation.rs rename to tests/ui/impl-trait/deprecated_annotation.rs diff --git a/src/test/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.rs b/tests/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.rs rename to tests/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.rs diff --git a/src/test/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.stderr b/tests/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.stderr rename to tests/ui/impl-trait/diagnostics/fully-qualified-path-impl-trait.stderr diff --git a/src/test/ui/impl-trait/divergence.rs b/tests/ui/impl-trait/divergence.rs similarity index 100% rename from src/test/ui/impl-trait/divergence.rs rename to tests/ui/impl-trait/divergence.rs diff --git a/src/test/ui/impl-trait/does-not-live-long-enough.rs b/tests/ui/impl-trait/does-not-live-long-enough.rs similarity index 100% rename from src/test/ui/impl-trait/does-not-live-long-enough.rs rename to tests/ui/impl-trait/does-not-live-long-enough.rs diff --git a/src/test/ui/impl-trait/does-not-live-long-enough.stderr b/tests/ui/impl-trait/does-not-live-long-enough.stderr similarity index 100% rename from src/test/ui/impl-trait/does-not-live-long-enough.stderr rename to tests/ui/impl-trait/does-not-live-long-enough.stderr diff --git a/src/test/ui/impl-trait/dyn-trait-elided-two-inputs-assoc.rs b/tests/ui/impl-trait/dyn-trait-elided-two-inputs-assoc.rs similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-elided-two-inputs-assoc.rs rename to tests/ui/impl-trait/dyn-trait-elided-two-inputs-assoc.rs diff --git a/src/test/ui/impl-trait/dyn-trait-elided-two-inputs-param.rs b/tests/ui/impl-trait/dyn-trait-elided-two-inputs-param.rs similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-elided-two-inputs-param.rs rename to tests/ui/impl-trait/dyn-trait-elided-two-inputs-param.rs diff --git a/src/test/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs b/tests/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs rename to tests/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs diff --git a/src/test/ui/impl-trait/dyn-trait-elided-two-inputs-ref-param.rs b/tests/ui/impl-trait/dyn-trait-elided-two-inputs-ref-param.rs similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-elided-two-inputs-ref-param.rs rename to tests/ui/impl-trait/dyn-trait-elided-two-inputs-ref-param.rs diff --git a/src/test/ui/impl-trait/dyn-trait-return-should-be-impl-trait.rs b/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-return-should-be-impl-trait.rs rename to tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.rs diff --git a/src/test/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr b/tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr rename to tests/ui/impl-trait/dyn-trait-return-should-be-impl-trait.stderr diff --git a/src/test/ui/impl-trait/equal-hidden-lifetimes.rs b/tests/ui/impl-trait/equal-hidden-lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/equal-hidden-lifetimes.rs rename to tests/ui/impl-trait/equal-hidden-lifetimes.rs diff --git a/src/test/ui/impl-trait/equal-hidden-lifetimes.stderr b/tests/ui/impl-trait/equal-hidden-lifetimes.stderr similarity index 100% rename from src/test/ui/impl-trait/equal-hidden-lifetimes.stderr rename to tests/ui/impl-trait/equal-hidden-lifetimes.stderr diff --git a/src/test/ui/impl-trait/equality-rpass.rs b/tests/ui/impl-trait/equality-rpass.rs similarity index 100% rename from src/test/ui/impl-trait/equality-rpass.rs rename to tests/ui/impl-trait/equality-rpass.rs diff --git a/src/test/ui/impl-trait/equality-rpass.stderr b/tests/ui/impl-trait/equality-rpass.stderr similarity index 100% rename from src/test/ui/impl-trait/equality-rpass.stderr rename to tests/ui/impl-trait/equality-rpass.stderr diff --git a/src/test/ui/impl-trait/equality.rs b/tests/ui/impl-trait/equality.rs similarity index 100% rename from src/test/ui/impl-trait/equality.rs rename to tests/ui/impl-trait/equality.rs diff --git a/src/test/ui/impl-trait/equality.stderr b/tests/ui/impl-trait/equality.stderr similarity index 100% rename from src/test/ui/impl-trait/equality.stderr rename to tests/ui/impl-trait/equality.stderr diff --git a/src/test/ui/impl-trait/equality2.rs b/tests/ui/impl-trait/equality2.rs similarity index 100% rename from src/test/ui/impl-trait/equality2.rs rename to tests/ui/impl-trait/equality2.rs diff --git a/src/test/ui/impl-trait/equality2.stderr b/tests/ui/impl-trait/equality2.stderr similarity index 100% rename from src/test/ui/impl-trait/equality2.stderr rename to tests/ui/impl-trait/equality2.stderr diff --git a/src/test/ui/impl-trait/example-calendar.rs b/tests/ui/impl-trait/example-calendar.rs similarity index 100% rename from src/test/ui/impl-trait/example-calendar.rs rename to tests/ui/impl-trait/example-calendar.rs diff --git a/src/test/ui/impl-trait/example-st.rs b/tests/ui/impl-trait/example-st.rs similarity index 100% rename from src/test/ui/impl-trait/example-st.rs rename to tests/ui/impl-trait/example-st.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/const-args.rs b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/const-args.rs similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/const-args.rs rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/const-args.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.rs b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.rs similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.rs rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.stderr b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.stderr similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.stderr rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args-for-impl.stderr diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args.rs b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args.rs similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args.rs rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/explicit-generic-args.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/issue-87718.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.rs b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.rs similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.rs rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.rs diff --git a/src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.stderr b/tests/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.stderr similarity index 100% rename from src/test/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.stderr rename to tests/ui/impl-trait/explicit-generic-args-with-impl-trait/not-enough-args.stderr diff --git a/src/test/ui/impl-trait/extra-item.rs b/tests/ui/impl-trait/extra-item.rs similarity index 100% rename from src/test/ui/impl-trait/extra-item.rs rename to tests/ui/impl-trait/extra-item.rs diff --git a/src/test/ui/impl-trait/extra-item.stderr b/tests/ui/impl-trait/extra-item.stderr similarity index 100% rename from src/test/ui/impl-trait/extra-item.stderr rename to tests/ui/impl-trait/extra-item.stderr diff --git a/src/test/ui/impl-trait/fallback.rs b/tests/ui/impl-trait/fallback.rs similarity index 100% rename from src/test/ui/impl-trait/fallback.rs rename to tests/ui/impl-trait/fallback.rs diff --git a/src/test/ui/impl-trait/fallback_inference.rs b/tests/ui/impl-trait/fallback_inference.rs similarity index 100% rename from src/test/ui/impl-trait/fallback_inference.rs rename to tests/ui/impl-trait/fallback_inference.rs diff --git a/src/test/ui/impl-trait/fallback_inference.stderr b/tests/ui/impl-trait/fallback_inference.stderr similarity index 100% rename from src/test/ui/impl-trait/fallback_inference.stderr rename to tests/ui/impl-trait/fallback_inference.stderr diff --git a/src/test/ui/impl-trait/feature-self-return-type.rs b/tests/ui/impl-trait/feature-self-return-type.rs similarity index 100% rename from src/test/ui/impl-trait/feature-self-return-type.rs rename to tests/ui/impl-trait/feature-self-return-type.rs diff --git a/src/test/ui/impl-trait/feature-self-return-type.stderr b/tests/ui/impl-trait/feature-self-return-type.stderr similarity index 100% rename from src/test/ui/impl-trait/feature-self-return-type.stderr rename to tests/ui/impl-trait/feature-self-return-type.stderr diff --git a/src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2015.stderr b/tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2015.stderr similarity index 100% rename from src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2015.stderr rename to tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2015.stderr diff --git a/src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2021.stderr b/tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2021.stderr similarity index 100% rename from src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2021.stderr rename to tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.edition2021.stderr diff --git a/src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.rs b/tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.rs similarity index 100% rename from src/test/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.rs rename to tests/ui/impl-trait/generic-with-implicit-hrtb-without-dyn.rs diff --git a/src/test/ui/impl-trait/hidden-lifetimes.rs b/tests/ui/impl-trait/hidden-lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/hidden-lifetimes.rs rename to tests/ui/impl-trait/hidden-lifetimes.rs diff --git a/src/test/ui/impl-trait/hidden-lifetimes.stderr b/tests/ui/impl-trait/hidden-lifetimes.stderr similarity index 100% rename from src/test/ui/impl-trait/hidden-lifetimes.stderr rename to tests/ui/impl-trait/hidden-lifetimes.stderr diff --git a/src/test/ui/impl-trait/hidden-type-is-opaque-2.rs b/tests/ui/impl-trait/hidden-type-is-opaque-2.rs similarity index 100% rename from src/test/ui/impl-trait/hidden-type-is-opaque-2.rs rename to tests/ui/impl-trait/hidden-type-is-opaque-2.rs diff --git a/src/test/ui/impl-trait/hidden-type-is-opaque-2.stderr b/tests/ui/impl-trait/hidden-type-is-opaque-2.stderr similarity index 100% rename from src/test/ui/impl-trait/hidden-type-is-opaque-2.stderr rename to tests/ui/impl-trait/hidden-type-is-opaque-2.stderr diff --git a/src/test/ui/impl-trait/hidden-type-is-opaque.rs b/tests/ui/impl-trait/hidden-type-is-opaque.rs similarity index 100% rename from src/test/ui/impl-trait/hidden-type-is-opaque.rs rename to tests/ui/impl-trait/hidden-type-is-opaque.rs diff --git a/src/test/ui/impl-trait/impl-fn-hrtb-bounds-2.rs b/tests/ui/impl-trait/impl-fn-hrtb-bounds-2.rs similarity index 100% rename from src/test/ui/impl-trait/impl-fn-hrtb-bounds-2.rs rename to tests/ui/impl-trait/impl-fn-hrtb-bounds-2.rs diff --git a/src/test/ui/impl-trait/impl-fn-hrtb-bounds-2.stderr b/tests/ui/impl-trait/impl-fn-hrtb-bounds-2.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-fn-hrtb-bounds-2.stderr rename to tests/ui/impl-trait/impl-fn-hrtb-bounds-2.stderr diff --git a/src/test/ui/impl-trait/impl-fn-hrtb-bounds.rs b/tests/ui/impl-trait/impl-fn-hrtb-bounds.rs similarity index 100% rename from src/test/ui/impl-trait/impl-fn-hrtb-bounds.rs rename to tests/ui/impl-trait/impl-fn-hrtb-bounds.rs diff --git a/src/test/ui/impl-trait/impl-fn-hrtb-bounds.stderr b/tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-fn-hrtb-bounds.stderr rename to tests/ui/impl-trait/impl-fn-hrtb-bounds.stderr diff --git a/src/test/ui/impl-trait/impl-fn-parsing-ambiguities.rs b/tests/ui/impl-trait/impl-fn-parsing-ambiguities.rs similarity index 100% rename from src/test/ui/impl-trait/impl-fn-parsing-ambiguities.rs rename to tests/ui/impl-trait/impl-fn-parsing-ambiguities.rs diff --git a/src/test/ui/impl-trait/impl-fn-parsing-ambiguities.stderr b/tests/ui/impl-trait/impl-fn-parsing-ambiguities.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-fn-parsing-ambiguities.stderr rename to tests/ui/impl-trait/impl-fn-parsing-ambiguities.stderr diff --git a/src/test/ui/impl-trait/impl-fn-predefined-lifetimes.rs b/tests/ui/impl-trait/impl-fn-predefined-lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/impl-fn-predefined-lifetimes.rs rename to tests/ui/impl-trait/impl-fn-predefined-lifetimes.rs diff --git a/src/test/ui/impl-trait/impl-fn-predefined-lifetimes.stderr b/tests/ui/impl-trait/impl-fn-predefined-lifetimes.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-fn-predefined-lifetimes.stderr rename to tests/ui/impl-trait/impl-fn-predefined-lifetimes.stderr diff --git a/src/test/ui/impl-trait/impl-generic-mismatch-ab.rs b/tests/ui/impl-trait/impl-generic-mismatch-ab.rs similarity index 100% rename from src/test/ui/impl-trait/impl-generic-mismatch-ab.rs rename to tests/ui/impl-trait/impl-generic-mismatch-ab.rs diff --git a/src/test/ui/impl-trait/impl-generic-mismatch-ab.stderr b/tests/ui/impl-trait/impl-generic-mismatch-ab.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-generic-mismatch-ab.stderr rename to tests/ui/impl-trait/impl-generic-mismatch-ab.stderr diff --git a/src/test/ui/impl-trait/impl-generic-mismatch.rs b/tests/ui/impl-trait/impl-generic-mismatch.rs similarity index 100% rename from src/test/ui/impl-trait/impl-generic-mismatch.rs rename to tests/ui/impl-trait/impl-generic-mismatch.rs diff --git a/src/test/ui/impl-trait/impl-generic-mismatch.stderr b/tests/ui/impl-trait/impl-generic-mismatch.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-generic-mismatch.stderr rename to tests/ui/impl-trait/impl-generic-mismatch.stderr diff --git a/src/test/ui/impl-trait/impl-trait-in-macro.rs b/tests/ui/impl-trait/impl-trait-in-macro.rs similarity index 100% rename from src/test/ui/impl-trait/impl-trait-in-macro.rs rename to tests/ui/impl-trait/impl-trait-in-macro.rs diff --git a/src/test/ui/impl-trait/impl-trait-in-macro.stderr b/tests/ui/impl-trait/impl-trait-in-macro.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-trait-in-macro.stderr rename to tests/ui/impl-trait/impl-trait-in-macro.stderr diff --git a/src/test/ui/impl-trait/impl-trait-plus-priority.rs b/tests/ui/impl-trait/impl-trait-plus-priority.rs similarity index 100% rename from src/test/ui/impl-trait/impl-trait-plus-priority.rs rename to tests/ui/impl-trait/impl-trait-plus-priority.rs diff --git a/src/test/ui/impl-trait/impl-trait-plus-priority.stderr b/tests/ui/impl-trait/impl-trait-plus-priority.stderr similarity index 100% rename from src/test/ui/impl-trait/impl-trait-plus-priority.stderr rename to tests/ui/impl-trait/impl-trait-plus-priority.stderr diff --git a/src/test/ui/impl-trait/impl_fn_associativity.rs b/tests/ui/impl-trait/impl_fn_associativity.rs similarity index 100% rename from src/test/ui/impl-trait/impl_fn_associativity.rs rename to tests/ui/impl-trait/impl_fn_associativity.rs diff --git a/src/test/ui/impl-trait/impl_trait_projections.rs b/tests/ui/impl-trait/impl_trait_projections.rs similarity index 100% rename from src/test/ui/impl-trait/impl_trait_projections.rs rename to tests/ui/impl-trait/impl_trait_projections.rs diff --git a/src/test/ui/impl-trait/impl_trait_projections.stderr b/tests/ui/impl-trait/impl_trait_projections.stderr similarity index 100% rename from src/test/ui/impl-trait/impl_trait_projections.stderr rename to tests/ui/impl-trait/impl_trait_projections.stderr diff --git a/src/test/ui/impl-trait/in-trait/auxiliary/rpitit.rs b/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/auxiliary/rpitit.rs rename to tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs diff --git a/src/test/ui/impl-trait/in-trait/box-coerce-span-in-default.rs b/tests/ui/impl-trait/in-trait/box-coerce-span-in-default.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/box-coerce-span-in-default.rs rename to tests/ui/impl-trait/in-trait/box-coerce-span-in-default.rs diff --git a/src/test/ui/impl-trait/in-trait/box-coerce-span-in-default.stderr b/tests/ui/impl-trait/in-trait/box-coerce-span-in-default.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/box-coerce-span-in-default.stderr rename to tests/ui/impl-trait/in-trait/box-coerce-span-in-default.stderr diff --git a/src/test/ui/impl-trait/in-trait/deep-match-works.rs b/tests/ui/impl-trait/in-trait/deep-match-works.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/deep-match-works.rs rename to tests/ui/impl-trait/in-trait/deep-match-works.rs diff --git a/src/test/ui/impl-trait/in-trait/deep-match.rs b/tests/ui/impl-trait/in-trait/deep-match.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/deep-match.rs rename to tests/ui/impl-trait/in-trait/deep-match.rs diff --git a/src/test/ui/impl-trait/in-trait/deep-match.stderr b/tests/ui/impl-trait/in-trait/deep-match.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/deep-match.stderr rename to tests/ui/impl-trait/in-trait/deep-match.stderr diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err-2.rs b/tests/ui/impl-trait/in-trait/default-body-type-err-2.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body-type-err-2.rs rename to tests/ui/impl-trait/in-trait/default-body-type-err-2.rs diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err-2.stderr b/tests/ui/impl-trait/in-trait/default-body-type-err-2.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body-type-err-2.stderr rename to tests/ui/impl-trait/in-trait/default-body-type-err-2.stderr diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err.rs b/tests/ui/impl-trait/in-trait/default-body-type-err.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body-type-err.rs rename to tests/ui/impl-trait/in-trait/default-body-type-err.rs diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err.stderr b/tests/ui/impl-trait/in-trait/default-body-type-err.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body-type-err.stderr rename to tests/ui/impl-trait/in-trait/default-body-type-err.stderr diff --git a/src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs b/tests/ui/impl-trait/in-trait/default-body-with-rpit.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs rename to tests/ui/impl-trait/in-trait/default-body-with-rpit.rs diff --git a/src/test/ui/impl-trait/in-trait/default-body.rs b/tests/ui/impl-trait/in-trait/default-body.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/default-body.rs rename to tests/ui/impl-trait/in-trait/default-body.rs diff --git a/src/test/ui/impl-trait/in-trait/doesnt-satisfy.rs b/tests/ui/impl-trait/in-trait/doesnt-satisfy.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/doesnt-satisfy.rs rename to tests/ui/impl-trait/in-trait/doesnt-satisfy.rs diff --git a/src/test/ui/impl-trait/in-trait/doesnt-satisfy.stderr b/tests/ui/impl-trait/in-trait/doesnt-satisfy.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/doesnt-satisfy.stderr rename to tests/ui/impl-trait/in-trait/doesnt-satisfy.stderr diff --git a/src/test/ui/impl-trait/in-trait/early.rs b/tests/ui/impl-trait/in-trait/early.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/early.rs rename to tests/ui/impl-trait/in-trait/early.rs diff --git a/src/test/ui/impl-trait/in-trait/encode.rs b/tests/ui/impl-trait/in-trait/encode.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/encode.rs rename to tests/ui/impl-trait/in-trait/encode.rs diff --git a/src/test/ui/impl-trait/in-trait/foreign.rs b/tests/ui/impl-trait/in-trait/foreign.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/foreign.rs rename to tests/ui/impl-trait/in-trait/foreign.rs diff --git a/src/test/ui/impl-trait/in-trait/generics-mismatch.rs b/tests/ui/impl-trait/in-trait/generics-mismatch.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/generics-mismatch.rs rename to tests/ui/impl-trait/in-trait/generics-mismatch.rs diff --git a/src/test/ui/impl-trait/in-trait/generics-mismatch.stderr b/tests/ui/impl-trait/in-trait/generics-mismatch.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/generics-mismatch.stderr rename to tests/ui/impl-trait/in-trait/generics-mismatch.stderr diff --git a/src/test/ui/impl-trait/in-trait/issue-102140.rs b/tests/ui/impl-trait/in-trait/issue-102140.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/issue-102140.rs rename to tests/ui/impl-trait/in-trait/issue-102140.rs diff --git a/src/test/ui/impl-trait/in-trait/issue-102140.stderr b/tests/ui/impl-trait/in-trait/issue-102140.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/issue-102140.stderr rename to tests/ui/impl-trait/in-trait/issue-102140.stderr diff --git a/src/test/ui/impl-trait/in-trait/issue-102301.rs b/tests/ui/impl-trait/in-trait/issue-102301.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/issue-102301.rs rename to tests/ui/impl-trait/in-trait/issue-102301.rs diff --git a/src/test/ui/impl-trait/in-trait/issue-102571.rs b/tests/ui/impl-trait/in-trait/issue-102571.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/issue-102571.rs rename to tests/ui/impl-trait/in-trait/issue-102571.rs diff --git a/src/test/ui/impl-trait/in-trait/issue-102571.stderr b/tests/ui/impl-trait/in-trait/issue-102571.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/issue-102571.stderr rename to tests/ui/impl-trait/in-trait/issue-102571.stderr diff --git a/src/test/ui/impl-trait/in-trait/method-signature-matches.rs b/tests/ui/impl-trait/in-trait/method-signature-matches.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/method-signature-matches.rs rename to tests/ui/impl-trait/in-trait/method-signature-matches.rs diff --git a/src/test/ui/impl-trait/in-trait/method-signature-matches.stderr b/tests/ui/impl-trait/in-trait/method-signature-matches.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/method-signature-matches.stderr rename to tests/ui/impl-trait/in-trait/method-signature-matches.stderr diff --git a/src/test/ui/impl-trait/in-trait/nested-rpitit.rs b/tests/ui/impl-trait/in-trait/nested-rpitit.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/nested-rpitit.rs rename to tests/ui/impl-trait/in-trait/nested-rpitit.rs diff --git a/src/test/ui/impl-trait/in-trait/object-safety.rs b/tests/ui/impl-trait/in-trait/object-safety.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/object-safety.rs rename to tests/ui/impl-trait/in-trait/object-safety.rs diff --git a/src/test/ui/impl-trait/in-trait/object-safety.stderr b/tests/ui/impl-trait/in-trait/object-safety.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/object-safety.stderr rename to tests/ui/impl-trait/in-trait/object-safety.stderr diff --git a/src/test/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.rs b/tests/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.rs rename to tests/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.rs diff --git a/src/test/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.stderr b/tests/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.stderr rename to tests/ui/impl-trait/in-trait/opaque-in-impl-is-opaque.stderr diff --git a/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs b/tests/ui/impl-trait/in-trait/opaque-in-impl.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/opaque-in-impl.rs rename to tests/ui/impl-trait/in-trait/opaque-in-impl.rs diff --git a/src/test/ui/impl-trait/in-trait/reveal.rs b/tests/ui/impl-trait/in-trait/reveal.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/reveal.rs rename to tests/ui/impl-trait/in-trait/reveal.rs diff --git a/src/test/ui/impl-trait/in-trait/signature-mismatch.rs b/tests/ui/impl-trait/in-trait/signature-mismatch.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/signature-mismatch.rs rename to tests/ui/impl-trait/in-trait/signature-mismatch.rs diff --git a/src/test/ui/impl-trait/in-trait/signature-mismatch.stderr b/tests/ui/impl-trait/in-trait/signature-mismatch.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/signature-mismatch.stderr rename to tests/ui/impl-trait/in-trait/signature-mismatch.stderr diff --git a/src/test/ui/impl-trait/in-trait/specialization-broken.rs b/tests/ui/impl-trait/in-trait/specialization-broken.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/specialization-broken.rs rename to tests/ui/impl-trait/in-trait/specialization-broken.rs diff --git a/src/test/ui/impl-trait/in-trait/specialization-broken.stderr b/tests/ui/impl-trait/in-trait/specialization-broken.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/specialization-broken.stderr rename to tests/ui/impl-trait/in-trait/specialization-broken.stderr diff --git a/src/test/ui/impl-trait/in-trait/specialization-substs-remap.rs b/tests/ui/impl-trait/in-trait/specialization-substs-remap.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/specialization-substs-remap.rs rename to tests/ui/impl-trait/in-trait/specialization-substs-remap.rs diff --git a/src/test/ui/impl-trait/in-trait/success.rs b/tests/ui/impl-trait/in-trait/success.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/success.rs rename to tests/ui/impl-trait/in-trait/success.rs diff --git a/src/test/ui/impl-trait/in-trait/trait-more-generics-than-impl.rs b/tests/ui/impl-trait/in-trait/trait-more-generics-than-impl.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/trait-more-generics-than-impl.rs rename to tests/ui/impl-trait/in-trait/trait-more-generics-than-impl.rs diff --git a/src/test/ui/impl-trait/in-trait/trait-more-generics-than-impl.stderr b/tests/ui/impl-trait/in-trait/trait-more-generics-than-impl.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/trait-more-generics-than-impl.stderr rename to tests/ui/impl-trait/in-trait/trait-more-generics-than-impl.stderr diff --git a/src/test/ui/impl-trait/in-trait/wf-bounds.rs b/tests/ui/impl-trait/in-trait/wf-bounds.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/wf-bounds.rs rename to tests/ui/impl-trait/in-trait/wf-bounds.rs diff --git a/src/test/ui/impl-trait/in-trait/wf-bounds.stderr b/tests/ui/impl-trait/in-trait/wf-bounds.stderr similarity index 100% rename from src/test/ui/impl-trait/in-trait/wf-bounds.stderr rename to tests/ui/impl-trait/in-trait/wf-bounds.stderr diff --git a/src/test/ui/impl-trait/in-trait/where-clause.rs b/tests/ui/impl-trait/in-trait/where-clause.rs similarity index 100% rename from src/test/ui/impl-trait/in-trait/where-clause.rs rename to tests/ui/impl-trait/in-trait/where-clause.rs diff --git a/src/test/ui/impl-trait/issue-100075-2.rs b/tests/ui/impl-trait/issue-100075-2.rs similarity index 100% rename from src/test/ui/impl-trait/issue-100075-2.rs rename to tests/ui/impl-trait/issue-100075-2.rs diff --git a/src/test/ui/impl-trait/issue-100075-2.stderr b/tests/ui/impl-trait/issue-100075-2.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-100075-2.stderr rename to tests/ui/impl-trait/issue-100075-2.stderr diff --git a/src/test/ui/impl-trait/issue-100075.rs b/tests/ui/impl-trait/issue-100075.rs similarity index 100% rename from src/test/ui/impl-trait/issue-100075.rs rename to tests/ui/impl-trait/issue-100075.rs diff --git a/src/test/ui/impl-trait/issue-100075.stderr b/tests/ui/impl-trait/issue-100075.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-100075.stderr rename to tests/ui/impl-trait/issue-100075.stderr diff --git a/src/test/ui/impl-trait/issue-100187.rs b/tests/ui/impl-trait/issue-100187.rs similarity index 100% rename from src/test/ui/impl-trait/issue-100187.rs rename to tests/ui/impl-trait/issue-100187.rs diff --git a/src/test/ui/impl-trait/issue-102605.rs b/tests/ui/impl-trait/issue-102605.rs similarity index 100% rename from src/test/ui/impl-trait/issue-102605.rs rename to tests/ui/impl-trait/issue-102605.rs diff --git a/src/test/ui/impl-trait/issue-102605.stderr b/tests/ui/impl-trait/issue-102605.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-102605.stderr rename to tests/ui/impl-trait/issue-102605.stderr diff --git a/src/test/ui/impl-trait/issue-103181-1.rs b/tests/ui/impl-trait/issue-103181-1.rs similarity index 100% rename from src/test/ui/impl-trait/issue-103181-1.rs rename to tests/ui/impl-trait/issue-103181-1.rs diff --git a/src/test/ui/impl-trait/issue-103181-1.stderr b/tests/ui/impl-trait/issue-103181-1.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-103181-1.stderr rename to tests/ui/impl-trait/issue-103181-1.stderr diff --git a/src/test/ui/impl-trait/issue-103181-2.rs b/tests/ui/impl-trait/issue-103181-2.rs similarity index 100% rename from src/test/ui/impl-trait/issue-103181-2.rs rename to tests/ui/impl-trait/issue-103181-2.rs diff --git a/src/test/ui/impl-trait/issue-103181-2.stderr b/tests/ui/impl-trait/issue-103181-2.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-103181-2.stderr rename to tests/ui/impl-trait/issue-103181-2.stderr diff --git a/src/test/ui/impl-trait/issue-103599.rs b/tests/ui/impl-trait/issue-103599.rs similarity index 100% rename from src/test/ui/impl-trait/issue-103599.rs rename to tests/ui/impl-trait/issue-103599.rs diff --git a/src/test/ui/impl-trait/issue-103599.stderr b/tests/ui/impl-trait/issue-103599.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-103599.stderr rename to tests/ui/impl-trait/issue-103599.stderr diff --git a/src/test/ui/impl-trait/issue-35668.rs b/tests/ui/impl-trait/issue-35668.rs similarity index 100% rename from src/test/ui/impl-trait/issue-35668.rs rename to tests/ui/impl-trait/issue-35668.rs diff --git a/src/test/ui/impl-trait/issue-35668.stderr b/tests/ui/impl-trait/issue-35668.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-35668.stderr rename to tests/ui/impl-trait/issue-35668.stderr diff --git a/src/test/ui/impl-trait/issue-46959.rs b/tests/ui/impl-trait/issue-46959.rs similarity index 100% rename from src/test/ui/impl-trait/issue-46959.rs rename to tests/ui/impl-trait/issue-46959.rs diff --git a/src/test/ui/impl-trait/issue-49556.rs b/tests/ui/impl-trait/issue-49556.rs similarity index 100% rename from src/test/ui/impl-trait/issue-49556.rs rename to tests/ui/impl-trait/issue-49556.rs diff --git a/src/test/ui/impl-trait/issue-49579.rs b/tests/ui/impl-trait/issue-49579.rs similarity index 100% rename from src/test/ui/impl-trait/issue-49579.rs rename to tests/ui/impl-trait/issue-49579.rs diff --git a/src/test/ui/impl-trait/issue-49685.rs b/tests/ui/impl-trait/issue-49685.rs similarity index 100% rename from src/test/ui/impl-trait/issue-49685.rs rename to tests/ui/impl-trait/issue-49685.rs diff --git a/src/test/ui/impl-trait/issue-51185.rs b/tests/ui/impl-trait/issue-51185.rs similarity index 100% rename from src/test/ui/impl-trait/issue-51185.rs rename to tests/ui/impl-trait/issue-51185.rs diff --git a/src/test/ui/impl-trait/issue-54966.rs b/tests/ui/impl-trait/issue-54966.rs similarity index 100% rename from src/test/ui/impl-trait/issue-54966.rs rename to tests/ui/impl-trait/issue-54966.rs diff --git a/src/test/ui/impl-trait/issue-54966.stderr b/tests/ui/impl-trait/issue-54966.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-54966.stderr rename to tests/ui/impl-trait/issue-54966.stderr diff --git a/src/test/ui/impl-trait/issue-55872-1.rs b/tests/ui/impl-trait/issue-55872-1.rs similarity index 100% rename from src/test/ui/impl-trait/issue-55872-1.rs rename to tests/ui/impl-trait/issue-55872-1.rs diff --git a/src/test/ui/impl-trait/issue-55872-1.stderr b/tests/ui/impl-trait/issue-55872-1.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-55872-1.stderr rename to tests/ui/impl-trait/issue-55872-1.stderr diff --git a/src/test/ui/impl-trait/issue-55872-2.rs b/tests/ui/impl-trait/issue-55872-2.rs similarity index 100% rename from src/test/ui/impl-trait/issue-55872-2.rs rename to tests/ui/impl-trait/issue-55872-2.rs diff --git a/src/test/ui/impl-trait/issue-55872-2.stderr b/tests/ui/impl-trait/issue-55872-2.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-55872-2.stderr rename to tests/ui/impl-trait/issue-55872-2.stderr diff --git a/src/test/ui/impl-trait/issue-55872-3.rs b/tests/ui/impl-trait/issue-55872-3.rs similarity index 100% rename from src/test/ui/impl-trait/issue-55872-3.rs rename to tests/ui/impl-trait/issue-55872-3.rs diff --git a/src/test/ui/impl-trait/issue-55872-3.stderr b/tests/ui/impl-trait/issue-55872-3.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-55872-3.stderr rename to tests/ui/impl-trait/issue-55872-3.stderr diff --git a/src/test/ui/impl-trait/issue-55872.rs b/tests/ui/impl-trait/issue-55872.rs similarity index 100% rename from src/test/ui/impl-trait/issue-55872.rs rename to tests/ui/impl-trait/issue-55872.rs diff --git a/src/test/ui/impl-trait/issue-55872.stderr b/tests/ui/impl-trait/issue-55872.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-55872.stderr rename to tests/ui/impl-trait/issue-55872.stderr diff --git a/src/test/ui/impl-trait/issue-56445.rs b/tests/ui/impl-trait/issue-56445.rs similarity index 100% rename from src/test/ui/impl-trait/issue-56445.rs rename to tests/ui/impl-trait/issue-56445.rs diff --git a/src/test/ui/impl-trait/issue-68532.rs b/tests/ui/impl-trait/issue-68532.rs similarity index 100% rename from src/test/ui/impl-trait/issue-68532.rs rename to tests/ui/impl-trait/issue-68532.rs diff --git a/src/test/ui/impl-trait/issue-72911.rs b/tests/ui/impl-trait/issue-72911.rs similarity index 100% rename from src/test/ui/impl-trait/issue-72911.rs rename to tests/ui/impl-trait/issue-72911.rs diff --git a/src/test/ui/impl-trait/issue-72911.stderr b/tests/ui/impl-trait/issue-72911.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-72911.stderr rename to tests/ui/impl-trait/issue-72911.stderr diff --git a/src/test/ui/impl-trait/issue-86465.rs b/tests/ui/impl-trait/issue-86465.rs similarity index 100% rename from src/test/ui/impl-trait/issue-86465.rs rename to tests/ui/impl-trait/issue-86465.rs diff --git a/src/test/ui/impl-trait/issue-86465.stderr b/tests/ui/impl-trait/issue-86465.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-86465.stderr rename to tests/ui/impl-trait/issue-86465.stderr diff --git a/src/test/ui/impl-trait/issue-87450.rs b/tests/ui/impl-trait/issue-87450.rs similarity index 100% rename from src/test/ui/impl-trait/issue-87450.rs rename to tests/ui/impl-trait/issue-87450.rs diff --git a/src/test/ui/impl-trait/issue-87450.stderr b/tests/ui/impl-trait/issue-87450.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-87450.stderr rename to tests/ui/impl-trait/issue-87450.stderr diff --git a/src/test/ui/impl-trait/issue-99073-2.rs b/tests/ui/impl-trait/issue-99073-2.rs similarity index 100% rename from src/test/ui/impl-trait/issue-99073-2.rs rename to tests/ui/impl-trait/issue-99073-2.rs diff --git a/src/test/ui/impl-trait/issue-99073-2.stderr b/tests/ui/impl-trait/issue-99073-2.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-99073-2.stderr rename to tests/ui/impl-trait/issue-99073-2.stderr diff --git a/src/test/ui/impl-trait/issue-99073.rs b/tests/ui/impl-trait/issue-99073.rs similarity index 100% rename from src/test/ui/impl-trait/issue-99073.rs rename to tests/ui/impl-trait/issue-99073.rs diff --git a/src/test/ui/impl-trait/issue-99073.stderr b/tests/ui/impl-trait/issue-99073.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-99073.stderr rename to tests/ui/impl-trait/issue-99073.stderr diff --git a/src/test/ui/impl-trait/issue-99642-2.rs b/tests/ui/impl-trait/issue-99642-2.rs similarity index 100% rename from src/test/ui/impl-trait/issue-99642-2.rs rename to tests/ui/impl-trait/issue-99642-2.rs diff --git a/src/test/ui/impl-trait/issue-99642.rs b/tests/ui/impl-trait/issue-99642.rs similarity index 100% rename from src/test/ui/impl-trait/issue-99642.rs rename to tests/ui/impl-trait/issue-99642.rs diff --git a/src/test/ui/impl-trait/issue-99914.rs b/tests/ui/impl-trait/issue-99914.rs similarity index 100% rename from src/test/ui/impl-trait/issue-99914.rs rename to tests/ui/impl-trait/issue-99914.rs diff --git a/src/test/ui/impl-trait/issue-99914.stderr b/tests/ui/impl-trait/issue-99914.stderr similarity index 100% rename from src/test/ui/impl-trait/issue-99914.stderr rename to tests/ui/impl-trait/issue-99914.stderr diff --git a/src/test/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs b/tests/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs similarity index 100% rename from src/test/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs rename to tests/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs diff --git a/src/test/ui/impl-trait/issues/infinite-impl-trait-issue-38064.stderr b/tests/ui/impl-trait/issues/infinite-impl-trait-issue-38064.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/infinite-impl-trait-issue-38064.stderr rename to tests/ui/impl-trait/issues/infinite-impl-trait-issue-38064.stderr diff --git a/src/test/ui/impl-trait/issues/issue-104815.rs b/tests/ui/impl-trait/issues/issue-104815.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-104815.rs rename to tests/ui/impl-trait/issues/issue-104815.rs diff --git a/src/test/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs b/tests/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs rename to tests/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.rs diff --git a/src/test/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.stderr b/tests/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.stderr rename to tests/ui/impl-trait/issues/issue-21659-show-relevant-trait-impls-3.stderr diff --git a/src/test/ui/impl-trait/issues/issue-42479.rs b/tests/ui/impl-trait/issues/issue-42479.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-42479.rs rename to tests/ui/impl-trait/issues/issue-42479.rs diff --git a/src/test/ui/impl-trait/issues/issue-49376.rs b/tests/ui/impl-trait/issues/issue-49376.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-49376.rs rename to tests/ui/impl-trait/issues/issue-49376.rs diff --git a/src/test/ui/impl-trait/issues/issue-52128.rs b/tests/ui/impl-trait/issues/issue-52128.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-52128.rs rename to tests/ui/impl-trait/issues/issue-52128.rs diff --git a/src/test/ui/impl-trait/issues/issue-53457.rs b/tests/ui/impl-trait/issues/issue-53457.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-53457.rs rename to tests/ui/impl-trait/issues/issue-53457.rs diff --git a/src/test/ui/impl-trait/issues/issue-54600.rs b/tests/ui/impl-trait/issues/issue-54600.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54600.rs rename to tests/ui/impl-trait/issues/issue-54600.rs diff --git a/src/test/ui/impl-trait/issues/issue-54600.stderr b/tests/ui/impl-trait/issues/issue-54600.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54600.stderr rename to tests/ui/impl-trait/issues/issue-54600.stderr diff --git a/src/test/ui/impl-trait/issues/issue-54840.rs b/tests/ui/impl-trait/issues/issue-54840.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54840.rs rename to tests/ui/impl-trait/issues/issue-54840.rs diff --git a/src/test/ui/impl-trait/issues/issue-54840.stderr b/tests/ui/impl-trait/issues/issue-54840.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54840.stderr rename to tests/ui/impl-trait/issues/issue-54840.stderr diff --git a/src/test/ui/impl-trait/issues/issue-54895.rs b/tests/ui/impl-trait/issues/issue-54895.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54895.rs rename to tests/ui/impl-trait/issues/issue-54895.rs diff --git a/src/test/ui/impl-trait/issues/issue-54895.stderr b/tests/ui/impl-trait/issues/issue-54895.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-54895.stderr rename to tests/ui/impl-trait/issues/issue-54895.stderr diff --git a/src/test/ui/impl-trait/issues/issue-55608-captures-empty-region.rs b/tests/ui/impl-trait/issues/issue-55608-captures-empty-region.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-55608-captures-empty-region.rs rename to tests/ui/impl-trait/issues/issue-55608-captures-empty-region.rs diff --git a/src/test/ui/impl-trait/issues/issue-57464-unexpected-regions.rs b/tests/ui/impl-trait/issues/issue-57464-unexpected-regions.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57464-unexpected-regions.rs rename to tests/ui/impl-trait/issues/issue-57464-unexpected-regions.rs diff --git a/src/test/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs b/tests/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs rename to tests/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.rs diff --git a/src/test/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.stderr b/tests/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.stderr rename to tests/ui/impl-trait/issues/issue-57979-deeply-nested-impl-trait-in-assoc-proj.stderr diff --git a/src/test/ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs b/tests/ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs rename to tests/ui/impl-trait/issues/issue-57979-impl-trait-in-path.rs diff --git a/src/test/ui/impl-trait/issues/issue-57979-impl-trait-in-path.stderr b/tests/ui/impl-trait/issues/issue-57979-impl-trait-in-path.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-impl-trait-in-path.stderr rename to tests/ui/impl-trait/issues/issue-57979-impl-trait-in-path.stderr diff --git a/src/test/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs b/tests/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs rename to tests/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.rs diff --git a/src/test/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.stderr b/tests/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.stderr rename to tests/ui/impl-trait/issues/issue-57979-nested-impl-trait-in-assoc-proj.stderr diff --git a/src/test/ui/impl-trait/issues/issue-58504.rs b/tests/ui/impl-trait/issues/issue-58504.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-58504.rs rename to tests/ui/impl-trait/issues/issue-58504.rs diff --git a/src/test/ui/impl-trait/issues/issue-58504.stderr b/tests/ui/impl-trait/issues/issue-58504.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-58504.stderr rename to tests/ui/impl-trait/issues/issue-58504.stderr diff --git a/src/test/ui/impl-trait/issues/issue-58956.rs b/tests/ui/impl-trait/issues/issue-58956.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-58956.rs rename to tests/ui/impl-trait/issues/issue-58956.rs diff --git a/src/test/ui/impl-trait/issues/issue-58956.stderr b/tests/ui/impl-trait/issues/issue-58956.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-58956.stderr rename to tests/ui/impl-trait/issues/issue-58956.stderr diff --git a/src/test/ui/impl-trait/issues/issue-62742.rs b/tests/ui/impl-trait/issues/issue-62742.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-62742.rs rename to tests/ui/impl-trait/issues/issue-62742.rs diff --git a/src/test/ui/impl-trait/issues/issue-62742.stderr b/tests/ui/impl-trait/issues/issue-62742.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-62742.stderr rename to tests/ui/impl-trait/issues/issue-62742.stderr diff --git a/src/test/ui/impl-trait/issues/issue-65581.rs b/tests/ui/impl-trait/issues/issue-65581.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-65581.rs rename to tests/ui/impl-trait/issues/issue-65581.rs diff --git a/src/test/ui/impl-trait/issues/issue-67830.rs b/tests/ui/impl-trait/issues/issue-67830.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-67830.rs rename to tests/ui/impl-trait/issues/issue-67830.rs diff --git a/src/test/ui/impl-trait/issues/issue-67830.stderr b/tests/ui/impl-trait/issues/issue-67830.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-67830.stderr rename to tests/ui/impl-trait/issues/issue-67830.stderr diff --git a/src/test/ui/impl-trait/issues/issue-70877.rs b/tests/ui/impl-trait/issues/issue-70877.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-70877.rs rename to tests/ui/impl-trait/issues/issue-70877.rs diff --git a/src/test/ui/impl-trait/issues/issue-70877.stderr b/tests/ui/impl-trait/issues/issue-70877.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-70877.stderr rename to tests/ui/impl-trait/issues/issue-70877.stderr diff --git a/src/test/ui/impl-trait/issues/issue-70971.rs b/tests/ui/impl-trait/issues/issue-70971.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-70971.rs rename to tests/ui/impl-trait/issues/issue-70971.rs diff --git a/src/test/ui/impl-trait/issues/issue-70971.stderr b/tests/ui/impl-trait/issues/issue-70971.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-70971.stderr rename to tests/ui/impl-trait/issues/issue-70971.stderr diff --git a/src/test/ui/impl-trait/issues/issue-74282.rs b/tests/ui/impl-trait/issues/issue-74282.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-74282.rs rename to tests/ui/impl-trait/issues/issue-74282.rs diff --git a/src/test/ui/impl-trait/issues/issue-74282.stderr b/tests/ui/impl-trait/issues/issue-74282.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-74282.stderr rename to tests/ui/impl-trait/issues/issue-74282.stderr diff --git a/src/test/ui/impl-trait/issues/issue-77987.rs b/tests/ui/impl-trait/issues/issue-77987.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-77987.rs rename to tests/ui/impl-trait/issues/issue-77987.rs diff --git a/src/test/ui/impl-trait/issues/issue-78722.rs b/tests/ui/impl-trait/issues/issue-78722.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-78722.rs rename to tests/ui/impl-trait/issues/issue-78722.rs diff --git a/src/test/ui/impl-trait/issues/issue-78722.stderr b/tests/ui/impl-trait/issues/issue-78722.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-78722.stderr rename to tests/ui/impl-trait/issues/issue-78722.stderr diff --git a/src/test/ui/impl-trait/issues/issue-79099.rs b/tests/ui/impl-trait/issues/issue-79099.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-79099.rs rename to tests/ui/impl-trait/issues/issue-79099.rs diff --git a/src/test/ui/impl-trait/issues/issue-79099.stderr b/tests/ui/impl-trait/issues/issue-79099.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-79099.stderr rename to tests/ui/impl-trait/issues/issue-79099.stderr diff --git a/src/test/ui/impl-trait/issues/issue-82139.rs b/tests/ui/impl-trait/issues/issue-82139.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-82139.rs rename to tests/ui/impl-trait/issues/issue-82139.rs diff --git a/src/test/ui/impl-trait/issues/issue-82139.stderr b/tests/ui/impl-trait/issues/issue-82139.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-82139.stderr rename to tests/ui/impl-trait/issues/issue-82139.stderr diff --git a/src/test/ui/impl-trait/issues/issue-83919.rs b/tests/ui/impl-trait/issues/issue-83919.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-83919.rs rename to tests/ui/impl-trait/issues/issue-83919.rs diff --git a/src/test/ui/impl-trait/issues/issue-83919.stderr b/tests/ui/impl-trait/issues/issue-83919.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-83919.stderr rename to tests/ui/impl-trait/issues/issue-83919.stderr diff --git a/src/test/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs b/tests/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs rename to tests/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.rs diff --git a/src/test/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.stderr b/tests/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.stderr rename to tests/ui/impl-trait/issues/issue-83929-impl-trait-in-generic-default.stderr diff --git a/src/test/ui/impl-trait/issues/issue-84073.rs b/tests/ui/impl-trait/issues/issue-84073.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-84073.rs rename to tests/ui/impl-trait/issues/issue-84073.rs diff --git a/src/test/ui/impl-trait/issues/issue-84073.stderr b/tests/ui/impl-trait/issues/issue-84073.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-84073.stderr rename to tests/ui/impl-trait/issues/issue-84073.stderr diff --git a/src/test/ui/impl-trait/issues/issue-84919.rs b/tests/ui/impl-trait/issues/issue-84919.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-84919.rs rename to tests/ui/impl-trait/issues/issue-84919.rs diff --git a/src/test/ui/impl-trait/issues/issue-84919.stderr b/tests/ui/impl-trait/issues/issue-84919.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-84919.stderr rename to tests/ui/impl-trait/issues/issue-84919.stderr diff --git a/src/test/ui/impl-trait/issues/issue-86201.rs b/tests/ui/impl-trait/issues/issue-86201.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86201.rs rename to tests/ui/impl-trait/issues/issue-86201.rs diff --git a/src/test/ui/impl-trait/issues/issue-86642.rs b/tests/ui/impl-trait/issues/issue-86642.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86642.rs rename to tests/ui/impl-trait/issues/issue-86642.rs diff --git a/src/test/ui/impl-trait/issues/issue-86642.stderr b/tests/ui/impl-trait/issues/issue-86642.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86642.stderr rename to tests/ui/impl-trait/issues/issue-86642.stderr diff --git a/src/test/ui/impl-trait/issues/issue-86719.rs b/tests/ui/impl-trait/issues/issue-86719.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86719.rs rename to tests/ui/impl-trait/issues/issue-86719.rs diff --git a/src/test/ui/impl-trait/issues/issue-86719.stderr b/tests/ui/impl-trait/issues/issue-86719.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86719.stderr rename to tests/ui/impl-trait/issues/issue-86719.stderr diff --git a/src/test/ui/impl-trait/issues/issue-86800.rs b/tests/ui/impl-trait/issues/issue-86800.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86800.rs rename to tests/ui/impl-trait/issues/issue-86800.rs diff --git a/src/test/ui/impl-trait/issues/issue-86800.stderr b/tests/ui/impl-trait/issues/issue-86800.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-86800.stderr rename to tests/ui/impl-trait/issues/issue-86800.stderr diff --git a/src/test/ui/impl-trait/issues/issue-87295.rs b/tests/ui/impl-trait/issues/issue-87295.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-87295.rs rename to tests/ui/impl-trait/issues/issue-87295.rs diff --git a/src/test/ui/impl-trait/issues/issue-87295.stderr b/tests/ui/impl-trait/issues/issue-87295.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-87295.stderr rename to tests/ui/impl-trait/issues/issue-87295.stderr diff --git a/src/test/ui/impl-trait/issues/issue-87340.rs b/tests/ui/impl-trait/issues/issue-87340.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-87340.rs rename to tests/ui/impl-trait/issues/issue-87340.rs diff --git a/src/test/ui/impl-trait/issues/issue-87340.stderr b/tests/ui/impl-trait/issues/issue-87340.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-87340.stderr rename to tests/ui/impl-trait/issues/issue-87340.stderr diff --git a/src/test/ui/impl-trait/issues/issue-88236-2.rs b/tests/ui/impl-trait/issues/issue-88236-2.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-88236-2.rs rename to tests/ui/impl-trait/issues/issue-88236-2.rs diff --git a/src/test/ui/impl-trait/issues/issue-88236-2.stderr b/tests/ui/impl-trait/issues/issue-88236-2.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-88236-2.stderr rename to tests/ui/impl-trait/issues/issue-88236-2.stderr diff --git a/src/test/ui/impl-trait/issues/issue-88236.rs b/tests/ui/impl-trait/issues/issue-88236.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-88236.rs rename to tests/ui/impl-trait/issues/issue-88236.rs diff --git a/src/test/ui/impl-trait/issues/issue-88236.stderr b/tests/ui/impl-trait/issues/issue-88236.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-88236.stderr rename to tests/ui/impl-trait/issues/issue-88236.stderr diff --git a/src/test/ui/impl-trait/issues/issue-89312.rs b/tests/ui/impl-trait/issues/issue-89312.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-89312.rs rename to tests/ui/impl-trait/issues/issue-89312.rs diff --git a/src/test/ui/impl-trait/issues/issue-92305.rs b/tests/ui/impl-trait/issues/issue-92305.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-92305.rs rename to tests/ui/impl-trait/issues/issue-92305.rs diff --git a/src/test/ui/impl-trait/issues/issue-92305.stderr b/tests/ui/impl-trait/issues/issue-92305.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-92305.stderr rename to tests/ui/impl-trait/issues/issue-92305.stderr diff --git a/src/test/ui/impl-trait/issues/issue-93788.rs b/tests/ui/impl-trait/issues/issue-93788.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-93788.rs rename to tests/ui/impl-trait/issues/issue-93788.rs diff --git a/src/test/ui/impl-trait/issues/issue-99348-impl-compatibility.rs b/tests/ui/impl-trait/issues/issue-99348-impl-compatibility.rs similarity index 100% rename from src/test/ui/impl-trait/issues/issue-99348-impl-compatibility.rs rename to tests/ui/impl-trait/issues/issue-99348-impl-compatibility.rs diff --git a/src/test/ui/impl-trait/issues/issue-99348-impl-compatibility.stderr b/tests/ui/impl-trait/issues/issue-99348-impl-compatibility.stderr similarity index 100% rename from src/test/ui/impl-trait/issues/issue-99348-impl-compatibility.stderr rename to tests/ui/impl-trait/issues/issue-99348-impl-compatibility.stderr diff --git a/src/test/ui/impl-trait/lifetimes.rs b/tests/ui/impl-trait/lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/lifetimes.rs rename to tests/ui/impl-trait/lifetimes.rs diff --git a/src/test/ui/impl-trait/lifetimes2.rs b/tests/ui/impl-trait/lifetimes2.rs similarity index 100% rename from src/test/ui/impl-trait/lifetimes2.rs rename to tests/ui/impl-trait/lifetimes2.rs diff --git a/src/test/ui/impl-trait/method-suggestion-no-duplication.rs b/tests/ui/impl-trait/method-suggestion-no-duplication.rs similarity index 100% rename from src/test/ui/impl-trait/method-suggestion-no-duplication.rs rename to tests/ui/impl-trait/method-suggestion-no-duplication.rs diff --git a/src/test/ui/impl-trait/method-suggestion-no-duplication.stderr b/tests/ui/impl-trait/method-suggestion-no-duplication.stderr similarity index 100% rename from src/test/ui/impl-trait/method-suggestion-no-duplication.stderr rename to tests/ui/impl-trait/method-suggestion-no-duplication.stderr diff --git a/src/test/ui/impl-trait/multiple-lifetimes.rs b/tests/ui/impl-trait/multiple-lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes.rs rename to tests/ui/impl-trait/multiple-lifetimes.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling-2.rs b/tests/ui/impl-trait/multiple-lifetimes/error-handling-2.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/error-handling-2.rs rename to tests/ui/impl-trait/multiple-lifetimes/error-handling-2.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling-2.stderr b/tests/ui/impl-trait/multiple-lifetimes/error-handling-2.stderr similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/error-handling-2.stderr rename to tests/ui/impl-trait/multiple-lifetimes/error-handling-2.stderr diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr b/tests/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr rename to tests/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling.rs b/tests/ui/impl-trait/multiple-lifetimes/error-handling.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/error-handling.rs rename to tests/ui/impl-trait/multiple-lifetimes/error-handling.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr b/tests/ui/impl-trait/multiple-lifetimes/error-handling.stderr similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr rename to tests/ui/impl-trait/multiple-lifetimes/error-handling.stderr diff --git a/src/test/ui/impl-trait/multiple-lifetimes/inverse-bounds.rs b/tests/ui/impl-trait/multiple-lifetimes/inverse-bounds.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/inverse-bounds.rs rename to tests/ui/impl-trait/multiple-lifetimes/inverse-bounds.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-elided.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-elided.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-elided.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-elided.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-type-alias-impl-trait.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-type-alias-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-type-alias-impl-trait.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original-type-alias-impl-trait.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-original.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-other.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-other.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-other.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-pick-other.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.stderr b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.stderr similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.stderr rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unrelated.stderr diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.rs b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.rs similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.rs rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.rs diff --git a/src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.stderr b/tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.stderr similarity index 100% rename from src/test/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.stderr rename to tests/ui/impl-trait/multiple-lifetimes/ordinary-bounds-unsuited.stderr diff --git a/src/test/ui/impl-trait/must_outlive_least_region_or_bound.rs b/tests/ui/impl-trait/must_outlive_least_region_or_bound.rs similarity index 100% rename from src/test/ui/impl-trait/must_outlive_least_region_or_bound.rs rename to tests/ui/impl-trait/must_outlive_least_region_or_bound.rs diff --git a/src/test/ui/impl-trait/must_outlive_least_region_or_bound.stderr b/tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr similarity index 100% rename from src/test/ui/impl-trait/must_outlive_least_region_or_bound.stderr rename to tests/ui/impl-trait/must_outlive_least_region_or_bound.stderr diff --git a/src/test/ui/impl-trait/needs_least_region_or_bound.rs b/tests/ui/impl-trait/needs_least_region_or_bound.rs similarity index 100% rename from src/test/ui/impl-trait/needs_least_region_or_bound.rs rename to tests/ui/impl-trait/needs_least_region_or_bound.rs diff --git a/src/test/ui/impl-trait/negative-reasoning.rs b/tests/ui/impl-trait/negative-reasoning.rs similarity index 100% rename from src/test/ui/impl-trait/negative-reasoning.rs rename to tests/ui/impl-trait/negative-reasoning.rs diff --git a/src/test/ui/impl-trait/negative-reasoning.stderr b/tests/ui/impl-trait/negative-reasoning.stderr similarity index 100% rename from src/test/ui/impl-trait/negative-reasoning.stderr rename to tests/ui/impl-trait/negative-reasoning.stderr diff --git a/src/test/ui/impl-trait/nested-return-type.rs b/tests/ui/impl-trait/nested-return-type.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type.rs rename to tests/ui/impl-trait/nested-return-type.rs diff --git a/src/test/ui/impl-trait/nested-return-type2-tait.rs b/tests/ui/impl-trait/nested-return-type2-tait.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait.rs rename to tests/ui/impl-trait/nested-return-type2-tait.rs diff --git a/src/test/ui/impl-trait/nested-return-type2-tait.stderr b/tests/ui/impl-trait/nested-return-type2-tait.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait.stderr rename to tests/ui/impl-trait/nested-return-type2-tait.stderr diff --git a/src/test/ui/impl-trait/nested-return-type2-tait2.rs b/tests/ui/impl-trait/nested-return-type2-tait2.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait2.rs rename to tests/ui/impl-trait/nested-return-type2-tait2.rs diff --git a/src/test/ui/impl-trait/nested-return-type2-tait2.stderr b/tests/ui/impl-trait/nested-return-type2-tait2.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait2.stderr rename to tests/ui/impl-trait/nested-return-type2-tait2.stderr diff --git a/src/test/ui/impl-trait/nested-return-type2-tait3.rs b/tests/ui/impl-trait/nested-return-type2-tait3.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait3.rs rename to tests/ui/impl-trait/nested-return-type2-tait3.rs diff --git a/src/test/ui/impl-trait/nested-return-type2-tait3.stderr b/tests/ui/impl-trait/nested-return-type2-tait3.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2-tait3.stderr rename to tests/ui/impl-trait/nested-return-type2-tait3.stderr diff --git a/src/test/ui/impl-trait/nested-return-type2.rs b/tests/ui/impl-trait/nested-return-type2.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2.rs rename to tests/ui/impl-trait/nested-return-type2.rs diff --git a/src/test/ui/impl-trait/nested-return-type2.stderr b/tests/ui/impl-trait/nested-return-type2.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type2.stderr rename to tests/ui/impl-trait/nested-return-type2.stderr diff --git a/src/test/ui/impl-trait/nested-return-type3-tait.rs b/tests/ui/impl-trait/nested-return-type3-tait.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait.rs rename to tests/ui/impl-trait/nested-return-type3-tait.rs diff --git a/src/test/ui/impl-trait/nested-return-type3-tait.stderr b/tests/ui/impl-trait/nested-return-type3-tait.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait.stderr rename to tests/ui/impl-trait/nested-return-type3-tait.stderr diff --git a/src/test/ui/impl-trait/nested-return-type3-tait2.rs b/tests/ui/impl-trait/nested-return-type3-tait2.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait2.rs rename to tests/ui/impl-trait/nested-return-type3-tait2.rs diff --git a/src/test/ui/impl-trait/nested-return-type3-tait2.stderr b/tests/ui/impl-trait/nested-return-type3-tait2.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait2.stderr rename to tests/ui/impl-trait/nested-return-type3-tait2.stderr diff --git a/src/test/ui/impl-trait/nested-return-type3-tait3.rs b/tests/ui/impl-trait/nested-return-type3-tait3.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait3.rs rename to tests/ui/impl-trait/nested-return-type3-tait3.rs diff --git a/src/test/ui/impl-trait/nested-return-type3-tait3.stderr b/tests/ui/impl-trait/nested-return-type3-tait3.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3-tait3.stderr rename to tests/ui/impl-trait/nested-return-type3-tait3.stderr diff --git a/src/test/ui/impl-trait/nested-return-type3.rs b/tests/ui/impl-trait/nested-return-type3.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3.rs rename to tests/ui/impl-trait/nested-return-type3.rs diff --git a/src/test/ui/impl-trait/nested-return-type3.stderr b/tests/ui/impl-trait/nested-return-type3.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type3.stderr rename to tests/ui/impl-trait/nested-return-type3.stderr diff --git a/src/test/ui/impl-trait/nested-return-type4.rs b/tests/ui/impl-trait/nested-return-type4.rs similarity index 100% rename from src/test/ui/impl-trait/nested-return-type4.rs rename to tests/ui/impl-trait/nested-return-type4.rs diff --git a/src/test/ui/impl-trait/nested-return-type4.stderr b/tests/ui/impl-trait/nested-return-type4.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-return-type4.stderr rename to tests/ui/impl-trait/nested-return-type4.stderr diff --git a/src/test/ui/impl-trait/nested-rpit-hrtb.rs b/tests/ui/impl-trait/nested-rpit-hrtb.rs similarity index 100% rename from src/test/ui/impl-trait/nested-rpit-hrtb.rs rename to tests/ui/impl-trait/nested-rpit-hrtb.rs diff --git a/src/test/ui/impl-trait/nested-rpit-hrtb.stderr b/tests/ui/impl-trait/nested-rpit-hrtb.stderr similarity index 100% rename from src/test/ui/impl-trait/nested-rpit-hrtb.stderr rename to tests/ui/impl-trait/nested-rpit-hrtb.stderr diff --git a/src/test/ui/impl-trait/nested-rpit-with-anonymous-lifetimes.rs b/tests/ui/impl-trait/nested-rpit-with-anonymous-lifetimes.rs similarity index 100% rename from src/test/ui/impl-trait/nested-rpit-with-anonymous-lifetimes.rs rename to tests/ui/impl-trait/nested-rpit-with-anonymous-lifetimes.rs diff --git a/src/test/ui/impl-trait/nested_impl_trait.rs b/tests/ui/impl-trait/nested_impl_trait.rs similarity index 100% rename from src/test/ui/impl-trait/nested_impl_trait.rs rename to tests/ui/impl-trait/nested_impl_trait.rs diff --git a/src/test/ui/impl-trait/nested_impl_trait.stderr b/tests/ui/impl-trait/nested_impl_trait.stderr similarity index 100% rename from src/test/ui/impl-trait/nested_impl_trait.stderr rename to tests/ui/impl-trait/nested_impl_trait.stderr diff --git a/src/test/ui/impl-trait/nesting.rs b/tests/ui/impl-trait/nesting.rs similarity index 100% rename from src/test/ui/impl-trait/nesting.rs rename to tests/ui/impl-trait/nesting.rs diff --git a/src/test/ui/impl-trait/no-method-suggested-traits.rs b/tests/ui/impl-trait/no-method-suggested-traits.rs similarity index 100% rename from src/test/ui/impl-trait/no-method-suggested-traits.rs rename to tests/ui/impl-trait/no-method-suggested-traits.rs diff --git a/src/test/ui/impl-trait/no-method-suggested-traits.stderr b/tests/ui/impl-trait/no-method-suggested-traits.stderr similarity index 100% rename from src/test/ui/impl-trait/no-method-suggested-traits.stderr rename to tests/ui/impl-trait/no-method-suggested-traits.stderr diff --git a/src/test/ui/impl-trait/no-trait.rs b/tests/ui/impl-trait/no-trait.rs similarity index 100% rename from src/test/ui/impl-trait/no-trait.rs rename to tests/ui/impl-trait/no-trait.rs diff --git a/src/test/ui/impl-trait/no-trait.stderr b/tests/ui/impl-trait/no-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/no-trait.stderr rename to tests/ui/impl-trait/no-trait.stderr diff --git a/src/test/ui/impl-trait/normalize-tait-in-const.rs b/tests/ui/impl-trait/normalize-tait-in-const.rs similarity index 100% rename from src/test/ui/impl-trait/normalize-tait-in-const.rs rename to tests/ui/impl-trait/normalize-tait-in-const.rs diff --git a/src/test/ui/impl-trait/normalize-tait-in-const.stderr b/tests/ui/impl-trait/normalize-tait-in-const.stderr similarity index 100% rename from src/test/ui/impl-trait/normalize-tait-in-const.stderr rename to tests/ui/impl-trait/normalize-tait-in-const.stderr diff --git a/src/test/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.rs b/tests/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.rs similarity index 100% rename from src/test/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.rs rename to tests/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.rs diff --git a/src/test/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.stderr b/tests/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.stderr rename to tests/ui/impl-trait/object-unsafe-trait-in-return-position-dyn-trait.stderr diff --git a/src/test/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.rs b/tests/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.rs rename to tests/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.rs diff --git a/src/test/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.stderr b/tests/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.stderr rename to tests/ui/impl-trait/object-unsafe-trait-in-return-position-impl-trait.stderr diff --git a/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.rs b/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.rs similarity index 100% rename from src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.rs rename to tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.rs diff --git a/src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr b/tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr similarity index 100% rename from src/test/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr rename to tests/ui/impl-trait/point-to-type-err-cause-on-impl-trait-return.stderr diff --git a/src/test/ui/impl-trait/printing-binder.rs b/tests/ui/impl-trait/printing-binder.rs similarity index 100% rename from src/test/ui/impl-trait/printing-binder.rs rename to tests/ui/impl-trait/printing-binder.rs diff --git a/src/test/ui/impl-trait/printing-binder.stderr b/tests/ui/impl-trait/printing-binder.stderr similarity index 100% rename from src/test/ui/impl-trait/printing-binder.stderr rename to tests/ui/impl-trait/printing-binder.stderr diff --git a/src/test/ui/impl-trait/private_unused.rs b/tests/ui/impl-trait/private_unused.rs similarity index 100% rename from src/test/ui/impl-trait/private_unused.rs rename to tests/ui/impl-trait/private_unused.rs diff --git a/src/test/ui/impl-trait/projection-mismatch-in-impl-where-clause.rs b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.rs similarity index 100% rename from src/test/ui/impl-trait/projection-mismatch-in-impl-where-clause.rs rename to tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.rs diff --git a/src/test/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr similarity index 100% rename from src/test/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr rename to tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr diff --git a/src/test/ui/impl-trait/projection.rs b/tests/ui/impl-trait/projection.rs similarity index 100% rename from src/test/ui/impl-trait/projection.rs rename to tests/ui/impl-trait/projection.rs diff --git a/src/test/ui/impl-trait/question_mark.rs b/tests/ui/impl-trait/question_mark.rs similarity index 100% rename from src/test/ui/impl-trait/question_mark.rs rename to tests/ui/impl-trait/question_mark.rs diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs b/tests/ui/impl-trait/recursive-impl-trait-type-direct.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs rename to tests/ui/impl-trait/recursive-impl-trait-type-direct.rs diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs b/tests/ui/impl-trait/recursive-impl-trait-type-indirect.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs rename to tests/ui/impl-trait/recursive-impl-trait-type-indirect.rs diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr b/tests/ui/impl-trait/recursive-impl-trait-type-indirect.stderr similarity index 100% rename from src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr rename to tests/ui/impl-trait/recursive-impl-trait-type-indirect.stderr diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.rs b/tests/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.rs rename to tests/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.rs diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.stderr b/tests/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.stderr similarity index 100% rename from src/test/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.stderr rename to tests/ui/impl-trait/recursive-impl-trait-type-through-non-recursive.stderr diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.rs b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.rs rename to tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.rs diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr similarity index 100% rename from src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr rename to tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.rs b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.rs rename to tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.rs diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr similarity index 100% rename from src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr rename to tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration.rs b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.rs similarity index 100% rename from src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration.rs rename to tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.rs diff --git a/src/test/ui/impl-trait/region-escape-via-bound-contravariant-closure.rs b/tests/ui/impl-trait/region-escape-via-bound-contravariant-closure.rs similarity index 100% rename from src/test/ui/impl-trait/region-escape-via-bound-contravariant-closure.rs rename to tests/ui/impl-trait/region-escape-via-bound-contravariant-closure.rs diff --git a/src/test/ui/impl-trait/region-escape-via-bound-contravariant.rs b/tests/ui/impl-trait/region-escape-via-bound-contravariant.rs similarity index 100% rename from src/test/ui/impl-trait/region-escape-via-bound-contravariant.rs rename to tests/ui/impl-trait/region-escape-via-bound-contravariant.rs diff --git a/src/test/ui/impl-trait/region-escape-via-bound.rs b/tests/ui/impl-trait/region-escape-via-bound.rs similarity index 100% rename from src/test/ui/impl-trait/region-escape-via-bound.rs rename to tests/ui/impl-trait/region-escape-via-bound.rs diff --git a/src/test/ui/impl-trait/region-escape-via-bound.stderr b/tests/ui/impl-trait/region-escape-via-bound.stderr similarity index 100% rename from src/test/ui/impl-trait/region-escape-via-bound.stderr rename to tests/ui/impl-trait/region-escape-via-bound.stderr diff --git a/src/test/ui/impl-trait/return-position-impl-trait-minimal.rs b/tests/ui/impl-trait/return-position-impl-trait-minimal.rs similarity index 100% rename from src/test/ui/impl-trait/return-position-impl-trait-minimal.rs rename to tests/ui/impl-trait/return-position-impl-trait-minimal.rs diff --git a/src/test/ui/impl-trait/rpit-assoc-pair-with-lifetime.rs b/tests/ui/impl-trait/rpit-assoc-pair-with-lifetime.rs similarity index 100% rename from src/test/ui/impl-trait/rpit-assoc-pair-with-lifetime.rs rename to tests/ui/impl-trait/rpit-assoc-pair-with-lifetime.rs diff --git a/src/test/ui/impl-trait/rpit-not-sized.rs b/tests/ui/impl-trait/rpit-not-sized.rs similarity index 100% rename from src/test/ui/impl-trait/rpit-not-sized.rs rename to tests/ui/impl-trait/rpit-not-sized.rs diff --git a/src/test/ui/impl-trait/rpit-not-sized.stderr b/tests/ui/impl-trait/rpit-not-sized.stderr similarity index 100% rename from src/test/ui/impl-trait/rpit-not-sized.stderr rename to tests/ui/impl-trait/rpit-not-sized.stderr diff --git a/src/test/ui/impl-trait/static-return-lifetime-infered.rs b/tests/ui/impl-trait/static-return-lifetime-infered.rs similarity index 100% rename from src/test/ui/impl-trait/static-return-lifetime-infered.rs rename to tests/ui/impl-trait/static-return-lifetime-infered.rs diff --git a/src/test/ui/impl-trait/static-return-lifetime-infered.stderr b/tests/ui/impl-trait/static-return-lifetime-infered.stderr similarity index 100% rename from src/test/ui/impl-trait/static-return-lifetime-infered.stderr rename to tests/ui/impl-trait/static-return-lifetime-infered.stderr diff --git a/src/test/ui/impl-trait/suggest-calling-rpit-closure.rs b/tests/ui/impl-trait/suggest-calling-rpit-closure.rs similarity index 100% rename from src/test/ui/impl-trait/suggest-calling-rpit-closure.rs rename to tests/ui/impl-trait/suggest-calling-rpit-closure.rs diff --git a/src/test/ui/impl-trait/suggest-calling-rpit-closure.stderr b/tests/ui/impl-trait/suggest-calling-rpit-closure.stderr similarity index 100% rename from src/test/ui/impl-trait/suggest-calling-rpit-closure.stderr rename to tests/ui/impl-trait/suggest-calling-rpit-closure.stderr diff --git a/src/test/ui/impl-trait/trait_resolution.rs b/tests/ui/impl-trait/trait_resolution.rs similarity index 100% rename from src/test/ui/impl-trait/trait_resolution.rs rename to tests/ui/impl-trait/trait_resolution.rs diff --git a/src/test/ui/impl-trait/trait_type.rs b/tests/ui/impl-trait/trait_type.rs similarity index 100% rename from src/test/ui/impl-trait/trait_type.rs rename to tests/ui/impl-trait/trait_type.rs diff --git a/src/test/ui/impl-trait/trait_type.stderr b/tests/ui/impl-trait/trait_type.stderr similarity index 100% rename from src/test/ui/impl-trait/trait_type.stderr rename to tests/ui/impl-trait/trait_type.stderr diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other.rs b/tests/ui/impl-trait/two_tait_defining_each_other.rs similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other.rs rename to tests/ui/impl-trait/two_tait_defining_each_other.rs diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other.stderr b/tests/ui/impl-trait/two_tait_defining_each_other.stderr similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other.stderr rename to tests/ui/impl-trait/two_tait_defining_each_other.stderr diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other2.rs b/tests/ui/impl-trait/two_tait_defining_each_other2.rs similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other2.rs rename to tests/ui/impl-trait/two_tait_defining_each_other2.rs diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other2.stderr b/tests/ui/impl-trait/two_tait_defining_each_other2.stderr similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other2.stderr rename to tests/ui/impl-trait/two_tait_defining_each_other2.stderr diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other3.rs b/tests/ui/impl-trait/two_tait_defining_each_other3.rs similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other3.rs rename to tests/ui/impl-trait/two_tait_defining_each_other3.rs diff --git a/src/test/ui/impl-trait/two_tait_defining_each_other3.stderr b/tests/ui/impl-trait/two_tait_defining_each_other3.stderr similarity index 100% rename from src/test/ui/impl-trait/two_tait_defining_each_other3.stderr rename to tests/ui/impl-trait/two_tait_defining_each_other3.stderr diff --git a/src/test/ui/impl-trait/type-alias-generic-param.rs b/tests/ui/impl-trait/type-alias-generic-param.rs similarity index 100% rename from src/test/ui/impl-trait/type-alias-generic-param.rs rename to tests/ui/impl-trait/type-alias-generic-param.rs diff --git a/src/test/ui/impl-trait/type-alias-impl-trait-in-fn-body.rs b/tests/ui/impl-trait/type-alias-impl-trait-in-fn-body.rs similarity index 100% rename from src/test/ui/impl-trait/type-alias-impl-trait-in-fn-body.rs rename to tests/ui/impl-trait/type-alias-impl-trait-in-fn-body.rs diff --git a/src/test/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.rs b/tests/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.rs similarity index 100% rename from src/test/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.rs rename to tests/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.rs diff --git a/src/test/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.stderr b/tests/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.stderr similarity index 100% rename from src/test/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.stderr rename to tests/ui/impl-trait/type-arg-mismatch-due-to-impl-trait.stderr diff --git a/src/test/ui/impl-trait/type_parameters_captured.rs b/tests/ui/impl-trait/type_parameters_captured.rs similarity index 100% rename from src/test/ui/impl-trait/type_parameters_captured.rs rename to tests/ui/impl-trait/type_parameters_captured.rs diff --git a/src/test/ui/impl-trait/type_parameters_captured.stderr b/tests/ui/impl-trait/type_parameters_captured.stderr similarity index 100% rename from src/test/ui/impl-trait/type_parameters_captured.stderr rename to tests/ui/impl-trait/type_parameters_captured.stderr diff --git a/src/test/ui/impl-trait/unactionable_diagnostic.fixed b/tests/ui/impl-trait/unactionable_diagnostic.fixed similarity index 100% rename from src/test/ui/impl-trait/unactionable_diagnostic.fixed rename to tests/ui/impl-trait/unactionable_diagnostic.fixed diff --git a/src/test/ui/impl-trait/unactionable_diagnostic.rs b/tests/ui/impl-trait/unactionable_diagnostic.rs similarity index 100% rename from src/test/ui/impl-trait/unactionable_diagnostic.rs rename to tests/ui/impl-trait/unactionable_diagnostic.rs diff --git a/src/test/ui/impl-trait/unactionable_diagnostic.stderr b/tests/ui/impl-trait/unactionable_diagnostic.stderr similarity index 100% rename from src/test/ui/impl-trait/unactionable_diagnostic.stderr rename to tests/ui/impl-trait/unactionable_diagnostic.stderr diff --git a/src/test/ui/impl-trait/universal-mismatched-type.rs b/tests/ui/impl-trait/universal-mismatched-type.rs similarity index 100% rename from src/test/ui/impl-trait/universal-mismatched-type.rs rename to tests/ui/impl-trait/universal-mismatched-type.rs diff --git a/src/test/ui/impl-trait/universal-mismatched-type.stderr b/tests/ui/impl-trait/universal-mismatched-type.stderr similarity index 100% rename from src/test/ui/impl-trait/universal-mismatched-type.stderr rename to tests/ui/impl-trait/universal-mismatched-type.stderr diff --git a/src/test/ui/impl-trait/universal-two-impl-traits.rs b/tests/ui/impl-trait/universal-two-impl-traits.rs similarity index 100% rename from src/test/ui/impl-trait/universal-two-impl-traits.rs rename to tests/ui/impl-trait/universal-two-impl-traits.rs diff --git a/src/test/ui/impl-trait/universal-two-impl-traits.stderr b/tests/ui/impl-trait/universal-two-impl-traits.stderr similarity index 100% rename from src/test/ui/impl-trait/universal-two-impl-traits.stderr rename to tests/ui/impl-trait/universal-two-impl-traits.stderr diff --git a/src/test/ui/impl-trait/universal_hrtb_anon.rs b/tests/ui/impl-trait/universal_hrtb_anon.rs similarity index 100% rename from src/test/ui/impl-trait/universal_hrtb_anon.rs rename to tests/ui/impl-trait/universal_hrtb_anon.rs diff --git a/src/test/ui/impl-trait/universal_hrtb_named.rs b/tests/ui/impl-trait/universal_hrtb_named.rs similarity index 100% rename from src/test/ui/impl-trait/universal_hrtb_named.rs rename to tests/ui/impl-trait/universal_hrtb_named.rs diff --git a/src/test/ui/impl-trait/universal_in_adt_in_parameters.rs b/tests/ui/impl-trait/universal_in_adt_in_parameters.rs similarity index 100% rename from src/test/ui/impl-trait/universal_in_adt_in_parameters.rs rename to tests/ui/impl-trait/universal_in_adt_in_parameters.rs diff --git a/src/test/ui/impl-trait/universal_in_impl_trait_in_parameters.rs b/tests/ui/impl-trait/universal_in_impl_trait_in_parameters.rs similarity index 100% rename from src/test/ui/impl-trait/universal_in_impl_trait_in_parameters.rs rename to tests/ui/impl-trait/universal_in_impl_trait_in_parameters.rs diff --git a/src/test/ui/impl-trait/universal_in_trait_defn_parameters.rs b/tests/ui/impl-trait/universal_in_trait_defn_parameters.rs similarity index 100% rename from src/test/ui/impl-trait/universal_in_trait_defn_parameters.rs rename to tests/ui/impl-trait/universal_in_trait_defn_parameters.rs diff --git a/src/test/ui/impl-trait/universal_multiple_bounds.rs b/tests/ui/impl-trait/universal_multiple_bounds.rs similarity index 100% rename from src/test/ui/impl-trait/universal_multiple_bounds.rs rename to tests/ui/impl-trait/universal_multiple_bounds.rs diff --git a/src/test/ui/impl-trait/universal_wrong_bounds.rs b/tests/ui/impl-trait/universal_wrong_bounds.rs similarity index 100% rename from src/test/ui/impl-trait/universal_wrong_bounds.rs rename to tests/ui/impl-trait/universal_wrong_bounds.rs diff --git a/src/test/ui/impl-trait/universal_wrong_bounds.stderr b/tests/ui/impl-trait/universal_wrong_bounds.stderr similarity index 100% rename from src/test/ui/impl-trait/universal_wrong_bounds.stderr rename to tests/ui/impl-trait/universal_wrong_bounds.stderr diff --git a/src/test/ui/impl-trait/universal_wrong_hrtb.rs b/tests/ui/impl-trait/universal_wrong_hrtb.rs similarity index 100% rename from src/test/ui/impl-trait/universal_wrong_hrtb.rs rename to tests/ui/impl-trait/universal_wrong_hrtb.rs diff --git a/src/test/ui/impl-trait/universal_wrong_hrtb.stderr b/tests/ui/impl-trait/universal_wrong_hrtb.stderr similarity index 100% rename from src/test/ui/impl-trait/universal_wrong_hrtb.stderr rename to tests/ui/impl-trait/universal_wrong_hrtb.stderr diff --git a/src/test/ui/impl-trait/unsafety-checking-cycle.rs b/tests/ui/impl-trait/unsafety-checking-cycle.rs similarity index 100% rename from src/test/ui/impl-trait/unsafety-checking-cycle.rs rename to tests/ui/impl-trait/unsafety-checking-cycle.rs diff --git a/src/test/ui/impl-trait/wf-eval-order.rs b/tests/ui/impl-trait/wf-eval-order.rs similarity index 100% rename from src/test/ui/impl-trait/wf-eval-order.rs rename to tests/ui/impl-trait/wf-eval-order.rs diff --git a/src/test/ui/impl-trait/where-allowed-2.rs b/tests/ui/impl-trait/where-allowed-2.rs similarity index 100% rename from src/test/ui/impl-trait/where-allowed-2.rs rename to tests/ui/impl-trait/where-allowed-2.rs diff --git a/src/test/ui/impl-trait/where-allowed-2.stderr b/tests/ui/impl-trait/where-allowed-2.stderr similarity index 100% rename from src/test/ui/impl-trait/where-allowed-2.stderr rename to tests/ui/impl-trait/where-allowed-2.stderr diff --git a/src/test/ui/impl-trait/where-allowed.rs b/tests/ui/impl-trait/where-allowed.rs similarity index 100% rename from src/test/ui/impl-trait/where-allowed.rs rename to tests/ui/impl-trait/where-allowed.rs diff --git a/src/test/ui/impl-trait/where-allowed.stderr b/tests/ui/impl-trait/where-allowed.stderr similarity index 100% rename from src/test/ui/impl-trait/where-allowed.stderr rename to tests/ui/impl-trait/where-allowed.stderr diff --git a/src/test/ui/impl-trait/xcrate.rs b/tests/ui/impl-trait/xcrate.rs similarity index 100% rename from src/test/ui/impl-trait/xcrate.rs rename to tests/ui/impl-trait/xcrate.rs diff --git a/src/test/ui/impl-trait/xcrate_simple.rs b/tests/ui/impl-trait/xcrate_simple.rs similarity index 100% rename from src/test/ui/impl-trait/xcrate_simple.rs rename to tests/ui/impl-trait/xcrate_simple.rs diff --git a/src/test/ui/impl-unused-rps-in-assoc-type.rs b/tests/ui/impl-unused-rps-in-assoc-type.rs similarity index 100% rename from src/test/ui/impl-unused-rps-in-assoc-type.rs rename to tests/ui/impl-unused-rps-in-assoc-type.rs diff --git a/src/test/ui/impl-unused-rps-in-assoc-type.stderr b/tests/ui/impl-unused-rps-in-assoc-type.stderr similarity index 100% rename from src/test/ui/impl-unused-rps-in-assoc-type.stderr rename to tests/ui/impl-unused-rps-in-assoc-type.stderr diff --git a/src/test/ui/impl-unused-tps-inherent.rs b/tests/ui/impl-unused-tps-inherent.rs similarity index 100% rename from src/test/ui/impl-unused-tps-inherent.rs rename to tests/ui/impl-unused-tps-inherent.rs diff --git a/src/test/ui/impl-unused-tps-inherent.stderr b/tests/ui/impl-unused-tps-inherent.stderr similarity index 100% rename from src/test/ui/impl-unused-tps-inherent.stderr rename to tests/ui/impl-unused-tps-inherent.stderr diff --git a/src/test/ui/impl-unused-tps.rs b/tests/ui/impl-unused-tps.rs similarity index 100% rename from src/test/ui/impl-unused-tps.rs rename to tests/ui/impl-unused-tps.rs diff --git a/src/test/ui/impl-unused-tps.stderr b/tests/ui/impl-unused-tps.stderr similarity index 100% rename from src/test/ui/impl-unused-tps.stderr rename to tests/ui/impl-unused-tps.stderr diff --git a/src/test/ui/implicit-method-bind.rs b/tests/ui/implicit-method-bind.rs similarity index 100% rename from src/test/ui/implicit-method-bind.rs rename to tests/ui/implicit-method-bind.rs diff --git a/src/test/ui/implicit-method-bind.stderr b/tests/ui/implicit-method-bind.stderr similarity index 100% rename from src/test/ui/implicit-method-bind.stderr rename to tests/ui/implicit-method-bind.stderr diff --git a/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs b/tests/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs similarity index 100% rename from src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs rename to tests/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs diff --git a/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.stderr b/tests/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.stderr similarity index 100% rename from src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.stderr rename to tests/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.stderr diff --git a/src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs b/tests/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs similarity index 100% rename from src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs rename to tests/ui/implied-bounds/hrlt-implied-trait-bounds-guard.rs diff --git a/src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr b/tests/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr similarity index 100% rename from src/test/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr rename to tests/ui/implied-bounds/hrlt-implied-trait-bounds-guard.stderr diff --git a/src/test/ui/implied-bounds/hrlt-implied-trait-bounds-roundtrip.rs b/tests/ui/implied-bounds/hrlt-implied-trait-bounds-roundtrip.rs similarity index 100% rename from src/test/ui/implied-bounds/hrlt-implied-trait-bounds-roundtrip.rs rename to tests/ui/implied-bounds/hrlt-implied-trait-bounds-roundtrip.rs diff --git a/src/test/ui/implied-bounds/impl-header-unnormalized-types.rs b/tests/ui/implied-bounds/impl-header-unnormalized-types.rs similarity index 100% rename from src/test/ui/implied-bounds/impl-header-unnormalized-types.rs rename to tests/ui/implied-bounds/impl-header-unnormalized-types.rs diff --git a/src/test/ui/implied-bounds/impl-header-unnormalized-types.stderr b/tests/ui/implied-bounds/impl-header-unnormalized-types.stderr similarity index 100% rename from src/test/ui/implied-bounds/impl-header-unnormalized-types.stderr rename to tests/ui/implied-bounds/impl-header-unnormalized-types.stderr diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs b/tests/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs similarity index 100% rename from src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs rename to tests/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr b/tests/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr similarity index 100% rename from src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr rename to tests/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs b/tests/ui/implied-bounds/impl-implied-bounds-compatibility.rs similarity index 100% rename from src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs rename to tests/ui/implied-bounds/impl-implied-bounds-compatibility.rs diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr b/tests/ui/implied-bounds/impl-implied-bounds-compatibility.stderr similarity index 100% rename from src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr rename to tests/ui/implied-bounds/impl-implied-bounds-compatibility.stderr diff --git a/src/test/ui/implied-bounds/issue-100690.rs b/tests/ui/implied-bounds/issue-100690.rs similarity index 100% rename from src/test/ui/implied-bounds/issue-100690.rs rename to tests/ui/implied-bounds/issue-100690.rs diff --git a/src/test/ui/implied-bounds/issue-100690.stderr b/tests/ui/implied-bounds/issue-100690.stderr similarity index 100% rename from src/test/ui/implied-bounds/issue-100690.stderr rename to tests/ui/implied-bounds/issue-100690.stderr diff --git a/src/test/ui/implied-bounds/issue-101951.rs b/tests/ui/implied-bounds/issue-101951.rs similarity index 100% rename from src/test/ui/implied-bounds/issue-101951.rs rename to tests/ui/implied-bounds/issue-101951.rs diff --git a/src/test/ui/imports/absolute-paths-in-nested-use-groups.rs b/tests/ui/imports/absolute-paths-in-nested-use-groups.rs similarity index 100% rename from src/test/ui/imports/absolute-paths-in-nested-use-groups.rs rename to tests/ui/imports/absolute-paths-in-nested-use-groups.rs diff --git a/src/test/ui/imports/absolute-paths-in-nested-use-groups.stderr b/tests/ui/imports/absolute-paths-in-nested-use-groups.stderr similarity index 100% rename from src/test/ui/imports/absolute-paths-in-nested-use-groups.stderr rename to tests/ui/imports/absolute-paths-in-nested-use-groups.stderr diff --git a/src/test/ui/imports/auxiliary/gensymed.rs b/tests/ui/imports/auxiliary/gensymed.rs similarity index 100% rename from src/test/ui/imports/auxiliary/gensymed.rs rename to tests/ui/imports/auxiliary/gensymed.rs diff --git a/src/test/ui/imports/auxiliary/glob-conflict.rs b/tests/ui/imports/auxiliary/glob-conflict.rs similarity index 100% rename from src/test/ui/imports/auxiliary/glob-conflict.rs rename to tests/ui/imports/auxiliary/glob-conflict.rs diff --git a/src/test/ui/imports/auxiliary/import_crate_var.rs b/tests/ui/imports/auxiliary/import_crate_var.rs similarity index 100% rename from src/test/ui/imports/auxiliary/import_crate_var.rs rename to tests/ui/imports/auxiliary/import_crate_var.rs diff --git a/src/test/ui/imports/auxiliary/issue-36881-aux.rs b/tests/ui/imports/auxiliary/issue-36881-aux.rs similarity index 100% rename from src/test/ui/imports/auxiliary/issue-36881-aux.rs rename to tests/ui/imports/auxiliary/issue-36881-aux.rs diff --git a/src/test/ui/imports/auxiliary/issue-52891.rs b/tests/ui/imports/auxiliary/issue-52891.rs similarity index 100% rename from src/test/ui/imports/auxiliary/issue-52891.rs rename to tests/ui/imports/auxiliary/issue-52891.rs diff --git a/src/test/ui/imports/auxiliary/issue-55811.rs b/tests/ui/imports/auxiliary/issue-55811.rs similarity index 100% rename from src/test/ui/imports/auxiliary/issue-55811.rs rename to tests/ui/imports/auxiliary/issue-55811.rs diff --git a/src/test/ui/imports/auxiliary/issue-56125.rs b/tests/ui/imports/auxiliary/issue-56125.rs similarity index 100% rename from src/test/ui/imports/auxiliary/issue-56125.rs rename to tests/ui/imports/auxiliary/issue-56125.rs diff --git a/src/test/ui/imports/auxiliary/issue-59764.rs b/tests/ui/imports/auxiliary/issue-59764.rs similarity index 100% rename from src/test/ui/imports/auxiliary/issue-59764.rs rename to tests/ui/imports/auxiliary/issue-59764.rs diff --git a/src/test/ui/imports/auxiliary/overlapping_pub_trait_source.rs b/tests/ui/imports/auxiliary/overlapping_pub_trait_source.rs similarity index 100% rename from src/test/ui/imports/auxiliary/overlapping_pub_trait_source.rs rename to tests/ui/imports/auxiliary/overlapping_pub_trait_source.rs diff --git a/src/test/ui/imports/auxiliary/two_macros.rs b/tests/ui/imports/auxiliary/two_macros.rs similarity index 100% rename from src/test/ui/imports/auxiliary/two_macros.rs rename to tests/ui/imports/auxiliary/two_macros.rs diff --git a/src/test/ui/imports/auxiliary/unnamed_pub_trait_source.rs b/tests/ui/imports/auxiliary/unnamed_pub_trait_source.rs similarity index 100% rename from src/test/ui/imports/auxiliary/unnamed_pub_trait_source.rs rename to tests/ui/imports/auxiliary/unnamed_pub_trait_source.rs diff --git a/src/test/ui/imports/bad-import-in-nested.rs b/tests/ui/imports/bad-import-in-nested.rs similarity index 100% rename from src/test/ui/imports/bad-import-in-nested.rs rename to tests/ui/imports/bad-import-in-nested.rs diff --git a/src/test/ui/imports/bad-import-in-nested.stderr b/tests/ui/imports/bad-import-in-nested.stderr similarity index 100% rename from src/test/ui/imports/bad-import-in-nested.stderr rename to tests/ui/imports/bad-import-in-nested.stderr diff --git a/src/test/ui/imports/bad-import-with-rename.rs b/tests/ui/imports/bad-import-with-rename.rs similarity index 100% rename from src/test/ui/imports/bad-import-with-rename.rs rename to tests/ui/imports/bad-import-with-rename.rs diff --git a/src/test/ui/imports/bad-import-with-rename.stderr b/tests/ui/imports/bad-import-with-rename.stderr similarity index 100% rename from src/test/ui/imports/bad-import-with-rename.stderr rename to tests/ui/imports/bad-import-with-rename.stderr diff --git a/src/test/ui/imports/double-import.rs b/tests/ui/imports/double-import.rs similarity index 100% rename from src/test/ui/imports/double-import.rs rename to tests/ui/imports/double-import.rs diff --git a/src/test/ui/imports/double-import.stderr b/tests/ui/imports/double-import.stderr similarity index 100% rename from src/test/ui/imports/double-import.stderr rename to tests/ui/imports/double-import.stderr diff --git a/src/test/ui/imports/duplicate.rs b/tests/ui/imports/duplicate.rs similarity index 100% rename from src/test/ui/imports/duplicate.rs rename to tests/ui/imports/duplicate.rs diff --git a/src/test/ui/imports/duplicate.stderr b/tests/ui/imports/duplicate.stderr similarity index 100% rename from src/test/ui/imports/duplicate.stderr rename to tests/ui/imports/duplicate.stderr diff --git a/src/test/ui/imports/export-glob-imports-target.rs b/tests/ui/imports/export-glob-imports-target.rs similarity index 100% rename from src/test/ui/imports/export-glob-imports-target.rs rename to tests/ui/imports/export-glob-imports-target.rs diff --git a/src/test/ui/imports/export-multi.rs b/tests/ui/imports/export-multi.rs similarity index 100% rename from src/test/ui/imports/export-multi.rs rename to tests/ui/imports/export-multi.rs diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-fail.rs b/tests/ui/imports/extern-crate-self/extern-crate-self-fail.rs similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-fail.rs rename to tests/ui/imports/extern-crate-self/extern-crate-self-fail.rs diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-fail.stderr b/tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-fail.stderr rename to tests/ui/imports/extern-crate-self/extern-crate-self-fail.stderr diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-macro-alias.rs b/tests/ui/imports/extern-crate-self/extern-crate-self-macro-alias.rs similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-macro-alias.rs rename to tests/ui/imports/extern-crate-self/extern-crate-self-macro-alias.rs diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-macro-item.rs b/tests/ui/imports/extern-crate-self/extern-crate-self-macro-item.rs similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-macro-item.rs rename to tests/ui/imports/extern-crate-self/extern-crate-self-macro-item.rs diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-macro-self.rs b/tests/ui/imports/extern-crate-self/extern-crate-self-macro-self.rs similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-macro-self.rs rename to tests/ui/imports/extern-crate-self/extern-crate-self-macro-self.rs diff --git a/src/test/ui/imports/extern-crate-self/extern-crate-self-pass.rs b/tests/ui/imports/extern-crate-self/extern-crate-self-pass.rs similarity index 100% rename from src/test/ui/imports/extern-crate-self/extern-crate-self-pass.rs rename to tests/ui/imports/extern-crate-self/extern-crate-self-pass.rs diff --git a/src/test/ui/imports/extern-crate-used.rs b/tests/ui/imports/extern-crate-used.rs similarity index 100% rename from src/test/ui/imports/extern-crate-used.rs rename to tests/ui/imports/extern-crate-used.rs diff --git a/src/test/ui/imports/extern-crate-used.stderr b/tests/ui/imports/extern-crate-used.stderr similarity index 100% rename from src/test/ui/imports/extern-crate-used.stderr rename to tests/ui/imports/extern-crate-used.stderr diff --git a/src/test/ui/imports/extern-prelude-extern-crate-absolute-expanded.rs b/tests/ui/imports/extern-prelude-extern-crate-absolute-expanded.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-absolute-expanded.rs rename to tests/ui/imports/extern-prelude-extern-crate-absolute-expanded.rs diff --git a/src/test/ui/imports/extern-prelude-extern-crate-cfg.rs b/tests/ui/imports/extern-prelude-extern-crate-cfg.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-cfg.rs rename to tests/ui/imports/extern-prelude-extern-crate-cfg.rs diff --git a/src/test/ui/imports/extern-prelude-extern-crate-fail.rs b/tests/ui/imports/extern-prelude-extern-crate-fail.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-fail.rs rename to tests/ui/imports/extern-prelude-extern-crate-fail.rs diff --git a/src/test/ui/imports/extern-prelude-extern-crate-fail.stderr b/tests/ui/imports/extern-prelude-extern-crate-fail.stderr similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-fail.stderr rename to tests/ui/imports/extern-prelude-extern-crate-fail.stderr diff --git a/src/test/ui/imports/extern-prelude-extern-crate-pass.rs b/tests/ui/imports/extern-prelude-extern-crate-pass.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-pass.rs rename to tests/ui/imports/extern-prelude-extern-crate-pass.rs diff --git a/src/test/ui/imports/extern-prelude-extern-crate-restricted-shadowing.rs b/tests/ui/imports/extern-prelude-extern-crate-restricted-shadowing.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-restricted-shadowing.rs rename to tests/ui/imports/extern-prelude-extern-crate-restricted-shadowing.rs diff --git a/src/test/ui/imports/extern-prelude-extern-crate-restricted-shadowing.stderr b/tests/ui/imports/extern-prelude-extern-crate-restricted-shadowing.stderr similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-restricted-shadowing.stderr rename to tests/ui/imports/extern-prelude-extern-crate-restricted-shadowing.stderr diff --git a/src/test/ui/imports/extern-prelude-extern-crate-shadowing.rs b/tests/ui/imports/extern-prelude-extern-crate-shadowing.rs similarity index 100% rename from src/test/ui/imports/extern-prelude-extern-crate-shadowing.rs rename to tests/ui/imports/extern-prelude-extern-crate-shadowing.rs diff --git a/src/test/ui/imports/gensymed.rs b/tests/ui/imports/gensymed.rs similarity index 100% rename from src/test/ui/imports/gensymed.rs rename to tests/ui/imports/gensymed.rs diff --git a/src/test/ui/imports/glob-conflict-cross-crate.rs b/tests/ui/imports/glob-conflict-cross-crate.rs similarity index 100% rename from src/test/ui/imports/glob-conflict-cross-crate.rs rename to tests/ui/imports/glob-conflict-cross-crate.rs diff --git a/src/test/ui/imports/glob-conflict-cross-crate.stderr b/tests/ui/imports/glob-conflict-cross-crate.stderr similarity index 100% rename from src/test/ui/imports/glob-conflict-cross-crate.stderr rename to tests/ui/imports/glob-conflict-cross-crate.stderr diff --git a/src/test/ui/imports/glob-cycles.rs b/tests/ui/imports/glob-cycles.rs similarity index 100% rename from src/test/ui/imports/glob-cycles.rs rename to tests/ui/imports/glob-cycles.rs diff --git a/src/test/ui/imports/glob-resolve1.rs b/tests/ui/imports/glob-resolve1.rs similarity index 100% rename from src/test/ui/imports/glob-resolve1.rs rename to tests/ui/imports/glob-resolve1.rs diff --git a/src/test/ui/imports/glob-resolve1.stderr b/tests/ui/imports/glob-resolve1.stderr similarity index 100% rename from src/test/ui/imports/glob-resolve1.stderr rename to tests/ui/imports/glob-resolve1.stderr diff --git a/src/test/ui/imports/glob-shadowing.rs b/tests/ui/imports/glob-shadowing.rs similarity index 100% rename from src/test/ui/imports/glob-shadowing.rs rename to tests/ui/imports/glob-shadowing.rs diff --git a/src/test/ui/imports/glob-shadowing.stderr b/tests/ui/imports/glob-shadowing.stderr similarity index 100% rename from src/test/ui/imports/glob-shadowing.stderr rename to tests/ui/imports/glob-shadowing.stderr diff --git a/src/test/ui/imports/glob-use-std.rs b/tests/ui/imports/glob-use-std.rs similarity index 100% rename from src/test/ui/imports/glob-use-std.rs rename to tests/ui/imports/glob-use-std.rs diff --git a/src/test/ui/imports/import-crate-var.rs b/tests/ui/imports/import-crate-var.rs similarity index 100% rename from src/test/ui/imports/import-crate-var.rs rename to tests/ui/imports/import-crate-var.rs diff --git a/src/test/ui/imports/import-crate-var.stderr b/tests/ui/imports/import-crate-var.stderr similarity index 100% rename from src/test/ui/imports/import-crate-var.stderr rename to tests/ui/imports/import-crate-var.stderr diff --git a/src/test/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs b/tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs similarity index 100% rename from src/test/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs rename to tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs diff --git a/src/test/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans_macros.rs b/tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans_macros.rs similarity index 100% rename from src/test/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans_macros.rs rename to tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans_macros.rs diff --git a/src/test/ui/imports/import-crate-with-invalid-spans/main.rs b/tests/ui/imports/import-crate-with-invalid-spans/main.rs similarity index 100% rename from src/test/ui/imports/import-crate-with-invalid-spans/main.rs rename to tests/ui/imports/import-crate-with-invalid-spans/main.rs diff --git a/src/test/ui/imports/import-from-missing.rs b/tests/ui/imports/import-from-missing.rs similarity index 100% rename from src/test/ui/imports/import-from-missing.rs rename to tests/ui/imports/import-from-missing.rs diff --git a/src/test/ui/imports/import-from-missing.stderr b/tests/ui/imports/import-from-missing.stderr similarity index 100% rename from src/test/ui/imports/import-from-missing.stderr rename to tests/ui/imports/import-from-missing.stderr diff --git a/src/test/ui/imports/import-from.rs b/tests/ui/imports/import-from.rs similarity index 100% rename from src/test/ui/imports/import-from.rs rename to tests/ui/imports/import-from.rs diff --git a/src/test/ui/imports/import-glob-0-rpass.rs b/tests/ui/imports/import-glob-0-rpass.rs similarity index 100% rename from src/test/ui/imports/import-glob-0-rpass.rs rename to tests/ui/imports/import-glob-0-rpass.rs diff --git a/src/test/ui/imports/import-glob-0.rs b/tests/ui/imports/import-glob-0.rs similarity index 100% rename from src/test/ui/imports/import-glob-0.rs rename to tests/ui/imports/import-glob-0.rs diff --git a/src/test/ui/imports/import-glob-0.stderr b/tests/ui/imports/import-glob-0.stderr similarity index 100% rename from src/test/ui/imports/import-glob-0.stderr rename to tests/ui/imports/import-glob-0.stderr diff --git a/src/test/ui/imports/import-glob-1.rs b/tests/ui/imports/import-glob-1.rs similarity index 100% rename from src/test/ui/imports/import-glob-1.rs rename to tests/ui/imports/import-glob-1.rs diff --git a/src/test/ui/imports/import-glob-circular.rs b/tests/ui/imports/import-glob-circular.rs similarity index 100% rename from src/test/ui/imports/import-glob-circular.rs rename to tests/ui/imports/import-glob-circular.rs diff --git a/src/test/ui/imports/import-glob-circular.stderr b/tests/ui/imports/import-glob-circular.stderr similarity index 100% rename from src/test/ui/imports/import-glob-circular.stderr rename to tests/ui/imports/import-glob-circular.stderr diff --git a/src/test/ui/imports/import-glob-crate.rs b/tests/ui/imports/import-glob-crate.rs similarity index 100% rename from src/test/ui/imports/import-glob-crate.rs rename to tests/ui/imports/import-glob-crate.rs diff --git a/src/test/ui/imports/import-in-block.rs b/tests/ui/imports/import-in-block.rs similarity index 100% rename from src/test/ui/imports/import-in-block.rs rename to tests/ui/imports/import-in-block.rs diff --git a/src/test/ui/imports/import-loop-2.rs b/tests/ui/imports/import-loop-2.rs similarity index 100% rename from src/test/ui/imports/import-loop-2.rs rename to tests/ui/imports/import-loop-2.rs diff --git a/src/test/ui/imports/import-loop-2.stderr b/tests/ui/imports/import-loop-2.stderr similarity index 100% rename from src/test/ui/imports/import-loop-2.stderr rename to tests/ui/imports/import-loop-2.stderr diff --git a/src/test/ui/imports/import-loop.rs b/tests/ui/imports/import-loop.rs similarity index 100% rename from src/test/ui/imports/import-loop.rs rename to tests/ui/imports/import-loop.rs diff --git a/src/test/ui/imports/import-loop.stderr b/tests/ui/imports/import-loop.stderr similarity index 100% rename from src/test/ui/imports/import-loop.stderr rename to tests/ui/imports/import-loop.stderr diff --git a/src/test/ui/imports/import-prefix-macro-1.rs b/tests/ui/imports/import-prefix-macro-1.rs similarity index 100% rename from src/test/ui/imports/import-prefix-macro-1.rs rename to tests/ui/imports/import-prefix-macro-1.rs diff --git a/src/test/ui/imports/import-prefix-macro-1.stderr b/tests/ui/imports/import-prefix-macro-1.stderr similarity index 100% rename from src/test/ui/imports/import-prefix-macro-1.stderr rename to tests/ui/imports/import-prefix-macro-1.stderr diff --git a/src/test/ui/imports/import-prefix-macro-2.rs b/tests/ui/imports/import-prefix-macro-2.rs similarity index 100% rename from src/test/ui/imports/import-prefix-macro-2.rs rename to tests/ui/imports/import-prefix-macro-2.rs diff --git a/src/test/ui/imports/import-prefix-macro-2.stderr b/tests/ui/imports/import-prefix-macro-2.stderr similarity index 100% rename from src/test/ui/imports/import-prefix-macro-2.stderr rename to tests/ui/imports/import-prefix-macro-2.stderr diff --git a/src/test/ui/imports/import-prefix-macro.rs b/tests/ui/imports/import-prefix-macro.rs similarity index 100% rename from src/test/ui/imports/import-prefix-macro.rs rename to tests/ui/imports/import-prefix-macro.rs diff --git a/src/test/ui/imports/import-rename.rs b/tests/ui/imports/import-rename.rs similarity index 100% rename from src/test/ui/imports/import-rename.rs rename to tests/ui/imports/import-rename.rs diff --git a/src/test/ui/imports/import-rpass.rs b/tests/ui/imports/import-rpass.rs similarity index 100% rename from src/test/ui/imports/import-rpass.rs rename to tests/ui/imports/import-rpass.rs diff --git a/src/test/ui/imports/import-trailing-comma.rs b/tests/ui/imports/import-trailing-comma.rs similarity index 100% rename from src/test/ui/imports/import-trailing-comma.rs rename to tests/ui/imports/import-trailing-comma.rs diff --git a/src/test/ui/imports/import-trait-method.rs b/tests/ui/imports/import-trait-method.rs similarity index 100% rename from src/test/ui/imports/import-trait-method.rs rename to tests/ui/imports/import-trait-method.rs diff --git a/src/test/ui/imports/import-trait-method.stderr b/tests/ui/imports/import-trait-method.stderr similarity index 100% rename from src/test/ui/imports/import-trait-method.stderr rename to tests/ui/imports/import-trait-method.stderr diff --git a/src/test/ui/imports/import.rs b/tests/ui/imports/import.rs similarity index 100% rename from src/test/ui/imports/import.rs rename to tests/ui/imports/import.rs diff --git a/src/test/ui/imports/import.stderr b/tests/ui/imports/import.stderr similarity index 100% rename from src/test/ui/imports/import.stderr rename to tests/ui/imports/import.stderr diff --git a/src/test/ui/imports/import2-rpass.rs b/tests/ui/imports/import2-rpass.rs similarity index 100% rename from src/test/ui/imports/import2-rpass.rs rename to tests/ui/imports/import2-rpass.rs diff --git a/src/test/ui/imports/import2.rs b/tests/ui/imports/import2.rs similarity index 100% rename from src/test/ui/imports/import2.rs rename to tests/ui/imports/import2.rs diff --git a/src/test/ui/imports/import2.stderr b/tests/ui/imports/import2.stderr similarity index 100% rename from src/test/ui/imports/import2.stderr rename to tests/ui/imports/import2.stderr diff --git a/src/test/ui/imports/import3-rpass.rs b/tests/ui/imports/import3-rpass.rs similarity index 100% rename from src/test/ui/imports/import3-rpass.rs rename to tests/ui/imports/import3-rpass.rs diff --git a/src/test/ui/imports/import3.rs b/tests/ui/imports/import3.rs similarity index 100% rename from src/test/ui/imports/import3.rs rename to tests/ui/imports/import3.rs diff --git a/src/test/ui/imports/import3.stderr b/tests/ui/imports/import3.stderr similarity index 100% rename from src/test/ui/imports/import3.stderr rename to tests/ui/imports/import3.stderr diff --git a/src/test/ui/imports/import4-rpass.rs b/tests/ui/imports/import4-rpass.rs similarity index 100% rename from src/test/ui/imports/import4-rpass.rs rename to tests/ui/imports/import4-rpass.rs diff --git a/src/test/ui/imports/import4.rs b/tests/ui/imports/import4.rs similarity index 100% rename from src/test/ui/imports/import4.rs rename to tests/ui/imports/import4.rs diff --git a/src/test/ui/imports/import4.stderr b/tests/ui/imports/import4.stderr similarity index 100% rename from src/test/ui/imports/import4.stderr rename to tests/ui/imports/import4.stderr diff --git a/src/test/ui/imports/import5.rs b/tests/ui/imports/import5.rs similarity index 100% rename from src/test/ui/imports/import5.rs rename to tests/ui/imports/import5.rs diff --git a/src/test/ui/imports/import6.rs b/tests/ui/imports/import6.rs similarity index 100% rename from src/test/ui/imports/import6.rs rename to tests/ui/imports/import6.rs diff --git a/src/test/ui/imports/import7.rs b/tests/ui/imports/import7.rs similarity index 100% rename from src/test/ui/imports/import7.rs rename to tests/ui/imports/import7.rs diff --git a/src/test/ui/imports/import8.rs b/tests/ui/imports/import8.rs similarity index 100% rename from src/test/ui/imports/import8.rs rename to tests/ui/imports/import8.rs diff --git a/src/test/ui/imports/imports.rs b/tests/ui/imports/imports.rs similarity index 100% rename from src/test/ui/imports/imports.rs rename to tests/ui/imports/imports.rs diff --git a/src/test/ui/imports/inaccessible_type_aliases.rs b/tests/ui/imports/inaccessible_type_aliases.rs similarity index 100% rename from src/test/ui/imports/inaccessible_type_aliases.rs rename to tests/ui/imports/inaccessible_type_aliases.rs diff --git a/src/test/ui/imports/inaccessible_type_aliases.stderr b/tests/ui/imports/inaccessible_type_aliases.stderr similarity index 100% rename from src/test/ui/imports/inaccessible_type_aliases.stderr rename to tests/ui/imports/inaccessible_type_aliases.stderr diff --git a/src/test/ui/imports/issue-13404.rs b/tests/ui/imports/issue-13404.rs similarity index 100% rename from src/test/ui/imports/issue-13404.rs rename to tests/ui/imports/issue-13404.rs diff --git a/src/test/ui/imports/issue-13404.stderr b/tests/ui/imports/issue-13404.stderr similarity index 100% rename from src/test/ui/imports/issue-13404.stderr rename to tests/ui/imports/issue-13404.stderr diff --git a/src/test/ui/imports/issue-1697.rs b/tests/ui/imports/issue-1697.rs similarity index 100% rename from src/test/ui/imports/issue-1697.rs rename to tests/ui/imports/issue-1697.rs diff --git a/src/test/ui/imports/issue-1697.stderr b/tests/ui/imports/issue-1697.stderr similarity index 100% rename from src/test/ui/imports/issue-1697.stderr rename to tests/ui/imports/issue-1697.stderr diff --git a/src/test/ui/imports/issue-18083.rs b/tests/ui/imports/issue-18083.rs similarity index 100% rename from src/test/ui/imports/issue-18083.rs rename to tests/ui/imports/issue-18083.rs diff --git a/src/test/ui/imports/issue-19498.rs b/tests/ui/imports/issue-19498.rs similarity index 100% rename from src/test/ui/imports/issue-19498.rs rename to tests/ui/imports/issue-19498.rs diff --git a/src/test/ui/imports/issue-19498.stderr b/tests/ui/imports/issue-19498.stderr similarity index 100% rename from src/test/ui/imports/issue-19498.stderr rename to tests/ui/imports/issue-19498.stderr diff --git a/src/test/ui/imports/issue-24081.rs b/tests/ui/imports/issue-24081.rs similarity index 100% rename from src/test/ui/imports/issue-24081.rs rename to tests/ui/imports/issue-24081.rs diff --git a/src/test/ui/imports/issue-24081.stderr b/tests/ui/imports/issue-24081.stderr similarity index 100% rename from src/test/ui/imports/issue-24081.stderr rename to tests/ui/imports/issue-24081.stderr diff --git a/src/test/ui/imports/issue-24883.rs b/tests/ui/imports/issue-24883.rs similarity index 100% rename from src/test/ui/imports/issue-24883.rs rename to tests/ui/imports/issue-24883.rs diff --git a/src/test/ui/imports/issue-25396.rs b/tests/ui/imports/issue-25396.rs similarity index 100% rename from src/test/ui/imports/issue-25396.rs rename to tests/ui/imports/issue-25396.rs diff --git a/src/test/ui/imports/issue-25396.stderr b/tests/ui/imports/issue-25396.stderr similarity index 100% rename from src/test/ui/imports/issue-25396.stderr rename to tests/ui/imports/issue-25396.stderr diff --git a/src/test/ui/imports/issue-26873-multifile/A/B.rs b/tests/ui/imports/issue-26873-multifile/A/B.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/A/B.rs rename to tests/ui/imports/issue-26873-multifile/A/B.rs diff --git a/src/test/ui/imports/issue-26873-multifile/A/C.rs b/tests/ui/imports/issue-26873-multifile/A/C.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/A/C.rs rename to tests/ui/imports/issue-26873-multifile/A/C.rs diff --git a/src/test/ui/imports/issue-26873-multifile/A/mod.rs b/tests/ui/imports/issue-26873-multifile/A/mod.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/A/mod.rs rename to tests/ui/imports/issue-26873-multifile/A/mod.rs diff --git a/src/test/ui/imports/issue-26873-multifile/compiletest-ignore-dir b/tests/ui/imports/issue-26873-multifile/compiletest-ignore-dir similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/compiletest-ignore-dir rename to tests/ui/imports/issue-26873-multifile/compiletest-ignore-dir diff --git a/src/test/ui/imports/issue-26873-multifile/issue-26873-multifile.rs b/tests/ui/imports/issue-26873-multifile/issue-26873-multifile.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/issue-26873-multifile.rs rename to tests/ui/imports/issue-26873-multifile/issue-26873-multifile.rs diff --git a/src/test/ui/imports/issue-26873-multifile/issue-26873-onefile.rs b/tests/ui/imports/issue-26873-multifile/issue-26873-onefile.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/issue-26873-onefile.rs rename to tests/ui/imports/issue-26873-multifile/issue-26873-onefile.rs diff --git a/src/test/ui/imports/issue-26873-multifile/mod.rs b/tests/ui/imports/issue-26873-multifile/mod.rs similarity index 100% rename from src/test/ui/imports/issue-26873-multifile/mod.rs rename to tests/ui/imports/issue-26873-multifile/mod.rs diff --git a/src/test/ui/imports/issue-26886.rs b/tests/ui/imports/issue-26886.rs similarity index 100% rename from src/test/ui/imports/issue-26886.rs rename to tests/ui/imports/issue-26886.rs diff --git a/src/test/ui/imports/issue-26886.stderr b/tests/ui/imports/issue-26886.stderr similarity index 100% rename from src/test/ui/imports/issue-26886.stderr rename to tests/ui/imports/issue-26886.stderr diff --git a/src/test/ui/imports/issue-26930.rs b/tests/ui/imports/issue-26930.rs similarity index 100% rename from src/test/ui/imports/issue-26930.rs rename to tests/ui/imports/issue-26930.rs diff --git a/src/test/ui/imports/issue-28134.rs b/tests/ui/imports/issue-28134.rs similarity index 100% rename from src/test/ui/imports/issue-28134.rs rename to tests/ui/imports/issue-28134.rs diff --git a/src/test/ui/imports/issue-28134.stderr b/tests/ui/imports/issue-28134.stderr similarity index 100% rename from src/test/ui/imports/issue-28134.stderr rename to tests/ui/imports/issue-28134.stderr diff --git a/src/test/ui/imports/issue-28388-1.rs b/tests/ui/imports/issue-28388-1.rs similarity index 100% rename from src/test/ui/imports/issue-28388-1.rs rename to tests/ui/imports/issue-28388-1.rs diff --git a/src/test/ui/imports/issue-28388-1.stderr b/tests/ui/imports/issue-28388-1.stderr similarity index 100% rename from src/test/ui/imports/issue-28388-1.stderr rename to tests/ui/imports/issue-28388-1.stderr diff --git a/src/test/ui/imports/issue-28388-2.rs b/tests/ui/imports/issue-28388-2.rs similarity index 100% rename from src/test/ui/imports/issue-28388-2.rs rename to tests/ui/imports/issue-28388-2.rs diff --git a/src/test/ui/imports/issue-28388-2.stderr b/tests/ui/imports/issue-28388-2.stderr similarity index 100% rename from src/test/ui/imports/issue-28388-2.stderr rename to tests/ui/imports/issue-28388-2.stderr diff --git a/src/test/ui/imports/issue-2937.rs b/tests/ui/imports/issue-2937.rs similarity index 100% rename from src/test/ui/imports/issue-2937.rs rename to tests/ui/imports/issue-2937.rs diff --git a/src/test/ui/imports/issue-2937.stderr b/tests/ui/imports/issue-2937.stderr similarity index 100% rename from src/test/ui/imports/issue-2937.stderr rename to tests/ui/imports/issue-2937.stderr diff --git a/src/test/ui/imports/issue-30560.rs b/tests/ui/imports/issue-30560.rs similarity index 100% rename from src/test/ui/imports/issue-30560.rs rename to tests/ui/imports/issue-30560.rs diff --git a/src/test/ui/imports/issue-30560.stderr b/tests/ui/imports/issue-30560.stderr similarity index 100% rename from src/test/ui/imports/issue-30560.stderr rename to tests/ui/imports/issue-30560.stderr diff --git a/src/test/ui/imports/issue-31212.rs b/tests/ui/imports/issue-31212.rs similarity index 100% rename from src/test/ui/imports/issue-31212.rs rename to tests/ui/imports/issue-31212.rs diff --git a/src/test/ui/imports/issue-31212.stderr b/tests/ui/imports/issue-31212.stderr similarity index 100% rename from src/test/ui/imports/issue-31212.stderr rename to tests/ui/imports/issue-31212.stderr diff --git a/src/test/ui/imports/issue-32119.rs b/tests/ui/imports/issue-32119.rs similarity index 100% rename from src/test/ui/imports/issue-32119.rs rename to tests/ui/imports/issue-32119.rs diff --git a/src/test/ui/imports/issue-32222.rs b/tests/ui/imports/issue-32222.rs similarity index 100% rename from src/test/ui/imports/issue-32222.rs rename to tests/ui/imports/issue-32222.rs diff --git a/src/test/ui/imports/issue-32354-suggest-import-rename.fixed b/tests/ui/imports/issue-32354-suggest-import-rename.fixed similarity index 100% rename from src/test/ui/imports/issue-32354-suggest-import-rename.fixed rename to tests/ui/imports/issue-32354-suggest-import-rename.fixed diff --git a/src/test/ui/imports/issue-32354-suggest-import-rename.rs b/tests/ui/imports/issue-32354-suggest-import-rename.rs similarity index 100% rename from src/test/ui/imports/issue-32354-suggest-import-rename.rs rename to tests/ui/imports/issue-32354-suggest-import-rename.rs diff --git a/src/test/ui/imports/issue-32354-suggest-import-rename.stderr b/tests/ui/imports/issue-32354-suggest-import-rename.stderr similarity index 100% rename from src/test/ui/imports/issue-32354-suggest-import-rename.stderr rename to tests/ui/imports/issue-32354-suggest-import-rename.stderr diff --git a/src/test/ui/imports/issue-32833.rs b/tests/ui/imports/issue-32833.rs similarity index 100% rename from src/test/ui/imports/issue-32833.rs rename to tests/ui/imports/issue-32833.rs diff --git a/src/test/ui/imports/issue-32833.stderr b/tests/ui/imports/issue-32833.stderr similarity index 100% rename from src/test/ui/imports/issue-32833.stderr rename to tests/ui/imports/issue-32833.stderr diff --git a/src/test/ui/imports/issue-33464.rs b/tests/ui/imports/issue-33464.rs similarity index 100% rename from src/test/ui/imports/issue-33464.rs rename to tests/ui/imports/issue-33464.rs diff --git a/src/test/ui/imports/issue-33464.stderr b/tests/ui/imports/issue-33464.stderr similarity index 100% rename from src/test/ui/imports/issue-33464.stderr rename to tests/ui/imports/issue-33464.stderr diff --git a/src/test/ui/imports/issue-36881.rs b/tests/ui/imports/issue-36881.rs similarity index 100% rename from src/test/ui/imports/issue-36881.rs rename to tests/ui/imports/issue-36881.rs diff --git a/src/test/ui/imports/issue-36881.stderr b/tests/ui/imports/issue-36881.stderr similarity index 100% rename from src/test/ui/imports/issue-36881.stderr rename to tests/ui/imports/issue-36881.stderr diff --git a/src/test/ui/imports/issue-37887.rs b/tests/ui/imports/issue-37887.rs similarity index 100% rename from src/test/ui/imports/issue-37887.rs rename to tests/ui/imports/issue-37887.rs diff --git a/src/test/ui/imports/issue-37887.stderr b/tests/ui/imports/issue-37887.stderr similarity index 100% rename from src/test/ui/imports/issue-37887.stderr rename to tests/ui/imports/issue-37887.stderr diff --git a/src/test/ui/imports/issue-38293.rs b/tests/ui/imports/issue-38293.rs similarity index 100% rename from src/test/ui/imports/issue-38293.rs rename to tests/ui/imports/issue-38293.rs diff --git a/src/test/ui/imports/issue-38293.stderr b/tests/ui/imports/issue-38293.stderr similarity index 100% rename from src/test/ui/imports/issue-38293.stderr rename to tests/ui/imports/issue-38293.stderr diff --git a/src/test/ui/imports/issue-4366-2.rs b/tests/ui/imports/issue-4366-2.rs similarity index 100% rename from src/test/ui/imports/issue-4366-2.rs rename to tests/ui/imports/issue-4366-2.rs diff --git a/src/test/ui/imports/issue-4366-2.stderr b/tests/ui/imports/issue-4366-2.stderr similarity index 100% rename from src/test/ui/imports/issue-4366-2.stderr rename to tests/ui/imports/issue-4366-2.stderr diff --git a/src/test/ui/imports/issue-4366.rs b/tests/ui/imports/issue-4366.rs similarity index 100% rename from src/test/ui/imports/issue-4366.rs rename to tests/ui/imports/issue-4366.rs diff --git a/src/test/ui/imports/issue-4366.stderr b/tests/ui/imports/issue-4366.stderr similarity index 100% rename from src/test/ui/imports/issue-4366.stderr rename to tests/ui/imports/issue-4366.stderr diff --git a/src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.fixed b/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.fixed similarity index 100% rename from src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.fixed rename to tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.fixed diff --git a/src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs b/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs similarity index 100% rename from src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs rename to tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs diff --git a/src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr b/tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr similarity index 100% rename from src/test/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr rename to tests/ui/imports/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr diff --git a/src/test/ui/imports/issue-45829/auxiliary/issue-45829-a.rs b/tests/ui/imports/issue-45829/auxiliary/issue-45829-a.rs similarity index 100% rename from src/test/ui/imports/issue-45829/auxiliary/issue-45829-a.rs rename to tests/ui/imports/issue-45829/auxiliary/issue-45829-a.rs diff --git a/src/test/ui/imports/issue-45829/auxiliary/issue-45829-b.rs b/tests/ui/imports/issue-45829/auxiliary/issue-45829-b.rs similarity index 100% rename from src/test/ui/imports/issue-45829/auxiliary/issue-45829-b.rs rename to tests/ui/imports/issue-45829/auxiliary/issue-45829-b.rs diff --git a/src/test/ui/imports/issue-45829/import-self.rs b/tests/ui/imports/issue-45829/import-self.rs similarity index 100% rename from src/test/ui/imports/issue-45829/import-self.rs rename to tests/ui/imports/issue-45829/import-self.rs diff --git a/src/test/ui/imports/issue-45829/import-self.stderr b/tests/ui/imports/issue-45829/import-self.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/import-self.stderr rename to tests/ui/imports/issue-45829/import-self.stderr diff --git a/src/test/ui/imports/issue-45829/import-twice.rs b/tests/ui/imports/issue-45829/import-twice.rs similarity index 100% rename from src/test/ui/imports/issue-45829/import-twice.rs rename to tests/ui/imports/issue-45829/import-twice.rs diff --git a/src/test/ui/imports/issue-45829/import-twice.stderr b/tests/ui/imports/issue-45829/import-twice.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/import-twice.stderr rename to tests/ui/imports/issue-45829/import-twice.stderr diff --git a/src/test/ui/imports/issue-45829/issue-45829.rs b/tests/ui/imports/issue-45829/issue-45829.rs similarity index 100% rename from src/test/ui/imports/issue-45829/issue-45829.rs rename to tests/ui/imports/issue-45829/issue-45829.rs diff --git a/src/test/ui/imports/issue-45829/issue-45829.stderr b/tests/ui/imports/issue-45829/issue-45829.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/issue-45829.stderr rename to tests/ui/imports/issue-45829/issue-45829.stderr diff --git a/src/test/ui/imports/issue-45829/rename-extern-vs-use.rs b/tests/ui/imports/issue-45829/rename-extern-vs-use.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern-vs-use.rs rename to tests/ui/imports/issue-45829/rename-extern-vs-use.rs diff --git a/src/test/ui/imports/issue-45829/rename-extern-vs-use.stderr b/tests/ui/imports/issue-45829/rename-extern-vs-use.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern-vs-use.stderr rename to tests/ui/imports/issue-45829/rename-extern-vs-use.stderr diff --git a/src/test/ui/imports/issue-45829/rename-extern-with-tab.rs b/tests/ui/imports/issue-45829/rename-extern-with-tab.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern-with-tab.rs rename to tests/ui/imports/issue-45829/rename-extern-with-tab.rs diff --git a/src/test/ui/imports/issue-45829/rename-extern-with-tab.stderr b/tests/ui/imports/issue-45829/rename-extern-with-tab.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern-with-tab.stderr rename to tests/ui/imports/issue-45829/rename-extern-with-tab.stderr diff --git a/src/test/ui/imports/issue-45829/rename-extern.rs b/tests/ui/imports/issue-45829/rename-extern.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern.rs rename to tests/ui/imports/issue-45829/rename-extern.rs diff --git a/src/test/ui/imports/issue-45829/rename-extern.stderr b/tests/ui/imports/issue-45829/rename-extern.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-extern.stderr rename to tests/ui/imports/issue-45829/rename-extern.stderr diff --git a/src/test/ui/imports/issue-45829/rename-use-vs-extern.rs b/tests/ui/imports/issue-45829/rename-use-vs-extern.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-use-vs-extern.rs rename to tests/ui/imports/issue-45829/rename-use-vs-extern.rs diff --git a/src/test/ui/imports/issue-45829/rename-use-vs-extern.stderr b/tests/ui/imports/issue-45829/rename-use-vs-extern.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-use-vs-extern.stderr rename to tests/ui/imports/issue-45829/rename-use-vs-extern.stderr diff --git a/src/test/ui/imports/issue-45829/rename-use-with-tabs.rs b/tests/ui/imports/issue-45829/rename-use-with-tabs.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-use-with-tabs.rs rename to tests/ui/imports/issue-45829/rename-use-with-tabs.rs diff --git a/src/test/ui/imports/issue-45829/rename-use-with-tabs.stderr b/tests/ui/imports/issue-45829/rename-use-with-tabs.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-use-with-tabs.stderr rename to tests/ui/imports/issue-45829/rename-use-with-tabs.stderr diff --git a/src/test/ui/imports/issue-45829/rename-with-path.rs b/tests/ui/imports/issue-45829/rename-with-path.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename-with-path.rs rename to tests/ui/imports/issue-45829/rename-with-path.rs diff --git a/src/test/ui/imports/issue-45829/rename-with-path.stderr b/tests/ui/imports/issue-45829/rename-with-path.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename-with-path.stderr rename to tests/ui/imports/issue-45829/rename-with-path.stderr diff --git a/src/test/ui/imports/issue-45829/rename.rs b/tests/ui/imports/issue-45829/rename.rs similarity index 100% rename from src/test/ui/imports/issue-45829/rename.rs rename to tests/ui/imports/issue-45829/rename.rs diff --git a/src/test/ui/imports/issue-45829/rename.stderr b/tests/ui/imports/issue-45829/rename.stderr similarity index 100% rename from src/test/ui/imports/issue-45829/rename.stderr rename to tests/ui/imports/issue-45829/rename.stderr diff --git a/src/test/ui/imports/issue-47623.rs b/tests/ui/imports/issue-47623.rs similarity index 100% rename from src/test/ui/imports/issue-47623.rs rename to tests/ui/imports/issue-47623.rs diff --git a/src/test/ui/imports/issue-47623.stderr b/tests/ui/imports/issue-47623.stderr similarity index 100% rename from src/test/ui/imports/issue-47623.stderr rename to tests/ui/imports/issue-47623.stderr diff --git a/src/test/ui/imports/issue-4865-1.rs b/tests/ui/imports/issue-4865-1.rs similarity index 100% rename from src/test/ui/imports/issue-4865-1.rs rename to tests/ui/imports/issue-4865-1.rs diff --git a/src/test/ui/imports/issue-4865-2.rs b/tests/ui/imports/issue-4865-2.rs similarity index 100% rename from src/test/ui/imports/issue-4865-2.rs rename to tests/ui/imports/issue-4865-2.rs diff --git a/src/test/ui/imports/issue-4865-3.rs b/tests/ui/imports/issue-4865-3.rs similarity index 100% rename from src/test/ui/imports/issue-4865-3.rs rename to tests/ui/imports/issue-4865-3.rs diff --git a/src/test/ui/imports/issue-52891.fixed b/tests/ui/imports/issue-52891.fixed similarity index 100% rename from src/test/ui/imports/issue-52891.fixed rename to tests/ui/imports/issue-52891.fixed diff --git a/src/test/ui/imports/issue-52891.rs b/tests/ui/imports/issue-52891.rs similarity index 100% rename from src/test/ui/imports/issue-52891.rs rename to tests/ui/imports/issue-52891.rs diff --git a/src/test/ui/imports/issue-52891.stderr b/tests/ui/imports/issue-52891.stderr similarity index 100% rename from src/test/ui/imports/issue-52891.stderr rename to tests/ui/imports/issue-52891.stderr diff --git a/src/test/ui/imports/issue-53140.rs b/tests/ui/imports/issue-53140.rs similarity index 100% rename from src/test/ui/imports/issue-53140.rs rename to tests/ui/imports/issue-53140.rs diff --git a/src/test/ui/imports/issue-53269.rs b/tests/ui/imports/issue-53269.rs similarity index 100% rename from src/test/ui/imports/issue-53269.rs rename to tests/ui/imports/issue-53269.rs diff --git a/src/test/ui/imports/issue-53269.stderr b/tests/ui/imports/issue-53269.stderr similarity index 100% rename from src/test/ui/imports/issue-53269.stderr rename to tests/ui/imports/issue-53269.stderr diff --git a/src/test/ui/imports/issue-53512.rs b/tests/ui/imports/issue-53512.rs similarity index 100% rename from src/test/ui/imports/issue-53512.rs rename to tests/ui/imports/issue-53512.rs diff --git a/src/test/ui/imports/issue-53512.stderr b/tests/ui/imports/issue-53512.stderr similarity index 100% rename from src/test/ui/imports/issue-53512.stderr rename to tests/ui/imports/issue-53512.stderr diff --git a/src/test/ui/imports/issue-53565.rs b/tests/ui/imports/issue-53565.rs similarity index 100% rename from src/test/ui/imports/issue-53565.rs rename to tests/ui/imports/issue-53565.rs diff --git a/src/test/ui/imports/issue-53565.stderr b/tests/ui/imports/issue-53565.stderr similarity index 100% rename from src/test/ui/imports/issue-53565.stderr rename to tests/ui/imports/issue-53565.stderr diff --git a/src/test/ui/imports/issue-55457.rs b/tests/ui/imports/issue-55457.rs similarity index 100% rename from src/test/ui/imports/issue-55457.rs rename to tests/ui/imports/issue-55457.rs diff --git a/src/test/ui/imports/issue-55457.stderr b/tests/ui/imports/issue-55457.stderr similarity index 100% rename from src/test/ui/imports/issue-55457.stderr rename to tests/ui/imports/issue-55457.stderr diff --git a/src/test/ui/imports/issue-55811.rs b/tests/ui/imports/issue-55811.rs similarity index 100% rename from src/test/ui/imports/issue-55811.rs rename to tests/ui/imports/issue-55811.rs diff --git a/src/test/ui/imports/issue-55884-1.rs b/tests/ui/imports/issue-55884-1.rs similarity index 100% rename from src/test/ui/imports/issue-55884-1.rs rename to tests/ui/imports/issue-55884-1.rs diff --git a/src/test/ui/imports/issue-55884-1.stderr b/tests/ui/imports/issue-55884-1.stderr similarity index 100% rename from src/test/ui/imports/issue-55884-1.stderr rename to tests/ui/imports/issue-55884-1.stderr diff --git a/src/test/ui/imports/issue-55884-2.rs b/tests/ui/imports/issue-55884-2.rs similarity index 100% rename from src/test/ui/imports/issue-55884-2.rs rename to tests/ui/imports/issue-55884-2.rs diff --git a/src/test/ui/imports/issue-55884-2.stderr b/tests/ui/imports/issue-55884-2.stderr similarity index 100% rename from src/test/ui/imports/issue-55884-2.stderr rename to tests/ui/imports/issue-55884-2.stderr diff --git a/src/test/ui/imports/issue-56125.rs b/tests/ui/imports/issue-56125.rs similarity index 100% rename from src/test/ui/imports/issue-56125.rs rename to tests/ui/imports/issue-56125.rs diff --git a/src/test/ui/imports/issue-56125.stderr b/tests/ui/imports/issue-56125.stderr similarity index 100% rename from src/test/ui/imports/issue-56125.stderr rename to tests/ui/imports/issue-56125.stderr diff --git a/src/test/ui/imports/issue-56263.rs b/tests/ui/imports/issue-56263.rs similarity index 100% rename from src/test/ui/imports/issue-56263.rs rename to tests/ui/imports/issue-56263.rs diff --git a/src/test/ui/imports/issue-57015.rs b/tests/ui/imports/issue-57015.rs similarity index 100% rename from src/test/ui/imports/issue-57015.rs rename to tests/ui/imports/issue-57015.rs diff --git a/src/test/ui/imports/issue-57015.stderr b/tests/ui/imports/issue-57015.stderr similarity index 100% rename from src/test/ui/imports/issue-57015.stderr rename to tests/ui/imports/issue-57015.stderr diff --git a/src/test/ui/imports/issue-57539.rs b/tests/ui/imports/issue-57539.rs similarity index 100% rename from src/test/ui/imports/issue-57539.rs rename to tests/ui/imports/issue-57539.rs diff --git a/src/test/ui/imports/issue-57539.stderr b/tests/ui/imports/issue-57539.stderr similarity index 100% rename from src/test/ui/imports/issue-57539.stderr rename to tests/ui/imports/issue-57539.stderr diff --git a/src/test/ui/imports/issue-59764.rs b/tests/ui/imports/issue-59764.rs similarity index 100% rename from src/test/ui/imports/issue-59764.rs rename to tests/ui/imports/issue-59764.rs diff --git a/src/test/ui/imports/issue-59764.stderr b/tests/ui/imports/issue-59764.stderr similarity index 100% rename from src/test/ui/imports/issue-59764.stderr rename to tests/ui/imports/issue-59764.stderr diff --git a/src/test/ui/imports/issue-62767.rs b/tests/ui/imports/issue-62767.rs similarity index 100% rename from src/test/ui/imports/issue-62767.rs rename to tests/ui/imports/issue-62767.rs diff --git a/src/test/ui/imports/issue-68103.rs b/tests/ui/imports/issue-68103.rs similarity index 100% rename from src/test/ui/imports/issue-68103.rs rename to tests/ui/imports/issue-68103.rs diff --git a/src/test/ui/imports/issue-8208.rs b/tests/ui/imports/issue-8208.rs similarity index 100% rename from src/test/ui/imports/issue-8208.rs rename to tests/ui/imports/issue-8208.rs diff --git a/src/test/ui/imports/issue-8208.stderr b/tests/ui/imports/issue-8208.stderr similarity index 100% rename from src/test/ui/imports/issue-8208.stderr rename to tests/ui/imports/issue-8208.stderr diff --git a/src/test/ui/imports/issue-8640.rs b/tests/ui/imports/issue-8640.rs similarity index 100% rename from src/test/ui/imports/issue-8640.rs rename to tests/ui/imports/issue-8640.rs diff --git a/src/test/ui/imports/issue-8640.stderr b/tests/ui/imports/issue-8640.stderr similarity index 100% rename from src/test/ui/imports/issue-8640.stderr rename to tests/ui/imports/issue-8640.stderr diff --git a/src/test/ui/imports/local-modularized-tricky-fail-1.rs b/tests/ui/imports/local-modularized-tricky-fail-1.rs similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-fail-1.rs rename to tests/ui/imports/local-modularized-tricky-fail-1.rs diff --git a/src/test/ui/imports/local-modularized-tricky-fail-1.stderr b/tests/ui/imports/local-modularized-tricky-fail-1.stderr similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-fail-1.stderr rename to tests/ui/imports/local-modularized-tricky-fail-1.stderr diff --git a/src/test/ui/imports/local-modularized-tricky-fail-2.rs b/tests/ui/imports/local-modularized-tricky-fail-2.rs similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-fail-2.rs rename to tests/ui/imports/local-modularized-tricky-fail-2.rs diff --git a/src/test/ui/imports/local-modularized-tricky-fail-2.stderr b/tests/ui/imports/local-modularized-tricky-fail-2.stderr similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-fail-2.stderr rename to tests/ui/imports/local-modularized-tricky-fail-2.stderr diff --git a/src/test/ui/imports/local-modularized-tricky-pass-1.rs b/tests/ui/imports/local-modularized-tricky-pass-1.rs similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-pass-1.rs rename to tests/ui/imports/local-modularized-tricky-pass-1.rs diff --git a/src/test/ui/imports/local-modularized-tricky-pass-2.rs b/tests/ui/imports/local-modularized-tricky-pass-2.rs similarity index 100% rename from src/test/ui/imports/local-modularized-tricky-pass-2.rs rename to tests/ui/imports/local-modularized-tricky-pass-2.rs diff --git a/src/test/ui/imports/local-modularized.rs b/tests/ui/imports/local-modularized.rs similarity index 100% rename from src/test/ui/imports/local-modularized.rs rename to tests/ui/imports/local-modularized.rs diff --git a/src/test/ui/imports/macro-paths.rs b/tests/ui/imports/macro-paths.rs similarity index 100% rename from src/test/ui/imports/macro-paths.rs rename to tests/ui/imports/macro-paths.rs diff --git a/src/test/ui/imports/macro-paths.stderr b/tests/ui/imports/macro-paths.stderr similarity index 100% rename from src/test/ui/imports/macro-paths.stderr rename to tests/ui/imports/macro-paths.stderr diff --git a/src/test/ui/imports/macros.rs b/tests/ui/imports/macros.rs similarity index 100% rename from src/test/ui/imports/macros.rs rename to tests/ui/imports/macros.rs diff --git a/src/test/ui/imports/macros.stderr b/tests/ui/imports/macros.stderr similarity index 100% rename from src/test/ui/imports/macros.stderr rename to tests/ui/imports/macros.stderr diff --git a/src/test/ui/imports/no-std-inject.rs b/tests/ui/imports/no-std-inject.rs similarity index 100% rename from src/test/ui/imports/no-std-inject.rs rename to tests/ui/imports/no-std-inject.rs diff --git a/src/test/ui/imports/no-std-inject.stderr b/tests/ui/imports/no-std-inject.stderr similarity index 100% rename from src/test/ui/imports/no-std-inject.stderr rename to tests/ui/imports/no-std-inject.stderr diff --git a/src/test/ui/imports/overlapping_pub_trait.rs b/tests/ui/imports/overlapping_pub_trait.rs similarity index 100% rename from src/test/ui/imports/overlapping_pub_trait.rs rename to tests/ui/imports/overlapping_pub_trait.rs diff --git a/src/test/ui/imports/overlapping_pub_trait.stderr b/tests/ui/imports/overlapping_pub_trait.stderr similarity index 100% rename from src/test/ui/imports/overlapping_pub_trait.stderr rename to tests/ui/imports/overlapping_pub_trait.stderr diff --git a/src/test/ui/imports/reexport-star.rs b/tests/ui/imports/reexport-star.rs similarity index 100% rename from src/test/ui/imports/reexport-star.rs rename to tests/ui/imports/reexport-star.rs diff --git a/src/test/ui/imports/reexports.rs b/tests/ui/imports/reexports.rs similarity index 100% rename from src/test/ui/imports/reexports.rs rename to tests/ui/imports/reexports.rs diff --git a/src/test/ui/imports/reexports.stderr b/tests/ui/imports/reexports.stderr similarity index 100% rename from src/test/ui/imports/reexports.stderr rename to tests/ui/imports/reexports.stderr diff --git a/src/test/ui/imports/resolve_self_super_hint.rs b/tests/ui/imports/resolve_self_super_hint.rs similarity index 100% rename from src/test/ui/imports/resolve_self_super_hint.rs rename to tests/ui/imports/resolve_self_super_hint.rs diff --git a/src/test/ui/imports/resolve_self_super_hint.stderr b/tests/ui/imports/resolve_self_super_hint.stderr similarity index 100% rename from src/test/ui/imports/resolve_self_super_hint.stderr rename to tests/ui/imports/resolve_self_super_hint.stderr diff --git a/src/test/ui/imports/rfc-1560-warning-cycle.rs b/tests/ui/imports/rfc-1560-warning-cycle.rs similarity index 100% rename from src/test/ui/imports/rfc-1560-warning-cycle.rs rename to tests/ui/imports/rfc-1560-warning-cycle.rs diff --git a/src/test/ui/imports/rfc-1560-warning-cycle.stderr b/tests/ui/imports/rfc-1560-warning-cycle.stderr similarity index 100% rename from src/test/ui/imports/rfc-1560-warning-cycle.stderr rename to tests/ui/imports/rfc-1560-warning-cycle.stderr diff --git a/src/test/ui/imports/shadow_builtin_macros.rs b/tests/ui/imports/shadow_builtin_macros.rs similarity index 100% rename from src/test/ui/imports/shadow_builtin_macros.rs rename to tests/ui/imports/shadow_builtin_macros.rs diff --git a/src/test/ui/imports/shadow_builtin_macros.stderr b/tests/ui/imports/shadow_builtin_macros.stderr similarity index 100% rename from src/test/ui/imports/shadow_builtin_macros.stderr rename to tests/ui/imports/shadow_builtin_macros.stderr diff --git a/src/test/ui/imports/tool-mod-child.rs b/tests/ui/imports/tool-mod-child.rs similarity index 100% rename from src/test/ui/imports/tool-mod-child.rs rename to tests/ui/imports/tool-mod-child.rs diff --git a/src/test/ui/imports/tool-mod-child.stderr b/tests/ui/imports/tool-mod-child.stderr similarity index 100% rename from src/test/ui/imports/tool-mod-child.stderr rename to tests/ui/imports/tool-mod-child.stderr diff --git a/src/test/ui/imports/unnamed_pub_trait.rs b/tests/ui/imports/unnamed_pub_trait.rs similarity index 100% rename from src/test/ui/imports/unnamed_pub_trait.rs rename to tests/ui/imports/unnamed_pub_trait.rs diff --git a/src/test/ui/imports/unnamed_pub_trait.stderr b/tests/ui/imports/unnamed_pub_trait.stderr similarity index 100% rename from src/test/ui/imports/unnamed_pub_trait.stderr rename to tests/ui/imports/unnamed_pub_trait.stderr diff --git a/src/test/ui/imports/unresolved-imports-used.rs b/tests/ui/imports/unresolved-imports-used.rs similarity index 100% rename from src/test/ui/imports/unresolved-imports-used.rs rename to tests/ui/imports/unresolved-imports-used.rs diff --git a/src/test/ui/imports/unresolved-imports-used.stderr b/tests/ui/imports/unresolved-imports-used.stderr similarity index 100% rename from src/test/ui/imports/unresolved-imports-used.stderr rename to tests/ui/imports/unresolved-imports-used.stderr diff --git a/src/test/ui/imports/unused-import-issue-87973.fixed b/tests/ui/imports/unused-import-issue-87973.fixed similarity index 100% rename from src/test/ui/imports/unused-import-issue-87973.fixed rename to tests/ui/imports/unused-import-issue-87973.fixed diff --git a/src/test/ui/imports/unused-import-issue-87973.rs b/tests/ui/imports/unused-import-issue-87973.rs similarity index 100% rename from src/test/ui/imports/unused-import-issue-87973.rs rename to tests/ui/imports/unused-import-issue-87973.rs diff --git a/src/test/ui/imports/unused-import-issue-87973.stderr b/tests/ui/imports/unused-import-issue-87973.stderr similarity index 100% rename from src/test/ui/imports/unused-import-issue-87973.stderr rename to tests/ui/imports/unused-import-issue-87973.stderr diff --git a/src/test/ui/imports/unused-imports-in-test-mode.rs b/tests/ui/imports/unused-imports-in-test-mode.rs similarity index 100% rename from src/test/ui/imports/unused-imports-in-test-mode.rs rename to tests/ui/imports/unused-imports-in-test-mode.rs diff --git a/src/test/ui/imports/unused-imports-in-test-mode.stderr b/tests/ui/imports/unused-imports-in-test-mode.stderr similarity index 100% rename from src/test/ui/imports/unused-imports-in-test-mode.stderr rename to tests/ui/imports/unused-imports-in-test-mode.stderr diff --git a/src/test/ui/imports/unused-imports-in-test-module.rs b/tests/ui/imports/unused-imports-in-test-module.rs similarity index 100% rename from src/test/ui/imports/unused-imports-in-test-module.rs rename to tests/ui/imports/unused-imports-in-test-module.rs diff --git a/src/test/ui/imports/unused-imports-in-test-module.stderr b/tests/ui/imports/unused-imports-in-test-module.stderr similarity index 100% rename from src/test/ui/imports/unused-imports-in-test-module.stderr rename to tests/ui/imports/unused-imports-in-test-module.stderr diff --git a/src/test/ui/imports/unused-macro-use.rs b/tests/ui/imports/unused-macro-use.rs similarity index 100% rename from src/test/ui/imports/unused-macro-use.rs rename to tests/ui/imports/unused-macro-use.rs diff --git a/src/test/ui/imports/unused-macro-use.stderr b/tests/ui/imports/unused-macro-use.stderr similarity index 100% rename from src/test/ui/imports/unused-macro-use.stderr rename to tests/ui/imports/unused-macro-use.stderr diff --git a/src/test/ui/imports/unused.rs b/tests/ui/imports/unused.rs similarity index 100% rename from src/test/ui/imports/unused.rs rename to tests/ui/imports/unused.rs diff --git a/src/test/ui/imports/unused.stderr b/tests/ui/imports/unused.stderr similarity index 100% rename from src/test/ui/imports/unused.stderr rename to tests/ui/imports/unused.stderr diff --git a/src/test/ui/imports/use-mod.rs b/tests/ui/imports/use-mod.rs similarity index 100% rename from src/test/ui/imports/use-mod.rs rename to tests/ui/imports/use-mod.rs diff --git a/src/test/ui/impossible_range.fixed b/tests/ui/impossible_range.fixed similarity index 100% rename from src/test/ui/impossible_range.fixed rename to tests/ui/impossible_range.fixed diff --git a/src/test/ui/impossible_range.rs b/tests/ui/impossible_range.rs similarity index 100% rename from src/test/ui/impossible_range.rs rename to tests/ui/impossible_range.rs diff --git a/src/test/ui/impossible_range.stderr b/tests/ui/impossible_range.stderr similarity index 100% rename from src/test/ui/impossible_range.stderr rename to tests/ui/impossible_range.stderr diff --git a/src/test/ui/inc-range-pat.rs b/tests/ui/inc-range-pat.rs similarity index 100% rename from src/test/ui/inc-range-pat.rs rename to tests/ui/inc-range-pat.rs diff --git a/src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs b/tests/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs similarity index 100% rename from src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs rename to tests/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs diff --git a/src/test/ui/include-macros/data.bin b/tests/ui/include-macros/data.bin similarity index 100% rename from src/test/ui/include-macros/data.bin rename to tests/ui/include-macros/data.bin diff --git a/src/test/ui/include-macros/file.txt b/tests/ui/include-macros/file.txt similarity index 100% rename from src/test/ui/include-macros/file.txt rename to tests/ui/include-macros/file.txt diff --git a/src/test/ui/include-macros/mismatched-types.rs b/tests/ui/include-macros/mismatched-types.rs similarity index 100% rename from src/test/ui/include-macros/mismatched-types.rs rename to tests/ui/include-macros/mismatched-types.rs diff --git a/src/test/ui/include-macros/mismatched-types.stderr b/tests/ui/include-macros/mismatched-types.stderr similarity index 100% rename from src/test/ui/include-macros/mismatched-types.stderr rename to tests/ui/include-macros/mismatched-types.stderr diff --git a/src/test/ui/include-macros/normalization.rs b/tests/ui/include-macros/normalization.rs similarity index 100% rename from src/test/ui/include-macros/normalization.rs rename to tests/ui/include-macros/normalization.rs diff --git a/src/test/ui/include-macros/same-file-in-two-crates.rs b/tests/ui/include-macros/same-file-in-two-crates.rs similarity index 100% rename from src/test/ui/include-macros/same-file-in-two-crates.rs rename to tests/ui/include-macros/same-file-in-two-crates.rs diff --git a/src/test/ui/incoherent-inherent-impls/auxiliary/extern-crate.rs b/tests/ui/incoherent-inherent-impls/auxiliary/extern-crate.rs similarity index 100% rename from src/test/ui/incoherent-inherent-impls/auxiliary/extern-crate.rs rename to tests/ui/incoherent-inherent-impls/auxiliary/extern-crate.rs diff --git a/src/test/ui/incoherent-inherent-impls/needs-has-incoherent-impls.rs b/tests/ui/incoherent-inherent-impls/needs-has-incoherent-impls.rs similarity index 100% rename from src/test/ui/incoherent-inherent-impls/needs-has-incoherent-impls.rs rename to tests/ui/incoherent-inherent-impls/needs-has-incoherent-impls.rs diff --git a/src/test/ui/incoherent-inherent-impls/needs-has-incoherent-impls.stderr b/tests/ui/incoherent-inherent-impls/needs-has-incoherent-impls.stderr similarity index 100% rename from src/test/ui/incoherent-inherent-impls/needs-has-incoherent-impls.stderr rename to tests/ui/incoherent-inherent-impls/needs-has-incoherent-impls.stderr diff --git a/src/test/ui/incoherent-inherent-impls/no-attr-empty-impl.rs b/tests/ui/incoherent-inherent-impls/no-attr-empty-impl.rs similarity index 100% rename from src/test/ui/incoherent-inherent-impls/no-attr-empty-impl.rs rename to tests/ui/incoherent-inherent-impls/no-attr-empty-impl.rs diff --git a/src/test/ui/incoherent-inherent-impls/no-attr-empty-impl.stderr b/tests/ui/incoherent-inherent-impls/no-attr-empty-impl.stderr similarity index 100% rename from src/test/ui/incoherent-inherent-impls/no-attr-empty-impl.stderr rename to tests/ui/incoherent-inherent-impls/no-attr-empty-impl.stderr diff --git a/src/test/ui/index-bot.rs b/tests/ui/index-bot.rs similarity index 100% rename from src/test/ui/index-bot.rs rename to tests/ui/index-bot.rs diff --git a/src/test/ui/index-bot.stderr b/tests/ui/index-bot.stderr similarity index 100% rename from src/test/ui/index-bot.stderr rename to tests/ui/index-bot.stderr diff --git a/src/test/ui/index-help.rs b/tests/ui/index-help.rs similarity index 100% rename from src/test/ui/index-help.rs rename to tests/ui/index-help.rs diff --git a/src/test/ui/index-help.stderr b/tests/ui/index-help.stderr similarity index 100% rename from src/test/ui/index-help.stderr rename to tests/ui/index-help.stderr diff --git a/src/test/ui/index_message.rs b/tests/ui/index_message.rs similarity index 100% rename from src/test/ui/index_message.rs rename to tests/ui/index_message.rs diff --git a/src/test/ui/index_message.stderr b/tests/ui/index_message.stderr similarity index 100% rename from src/test/ui/index_message.stderr rename to tests/ui/index_message.stderr diff --git a/src/test/ui/indexing-requires-a-uint.rs b/tests/ui/indexing-requires-a-uint.rs similarity index 100% rename from src/test/ui/indexing-requires-a-uint.rs rename to tests/ui/indexing-requires-a-uint.rs diff --git a/src/test/ui/indexing-requires-a-uint.stderr b/tests/ui/indexing-requires-a-uint.stderr similarity index 100% rename from src/test/ui/indexing-requires-a-uint.stderr rename to tests/ui/indexing-requires-a-uint.stderr diff --git a/src/test/ui/infer-fn-tail-expr.rs b/tests/ui/infer-fn-tail-expr.rs similarity index 100% rename from src/test/ui/infer-fn-tail-expr.rs rename to tests/ui/infer-fn-tail-expr.rs diff --git a/src/test/ui/inference/ambiguous_type_parameter.rs b/tests/ui/inference/ambiguous_type_parameter.rs similarity index 100% rename from src/test/ui/inference/ambiguous_type_parameter.rs rename to tests/ui/inference/ambiguous_type_parameter.rs diff --git a/src/test/ui/inference/ambiguous_type_parameter.stderr b/tests/ui/inference/ambiguous_type_parameter.stderr similarity index 100% rename from src/test/ui/inference/ambiguous_type_parameter.stderr rename to tests/ui/inference/ambiguous_type_parameter.stderr diff --git a/src/test/ui/inference/auxiliary/inference_unstable_iterator.rs b/tests/ui/inference/auxiliary/inference_unstable_iterator.rs similarity index 100% rename from src/test/ui/inference/auxiliary/inference_unstable_iterator.rs rename to tests/ui/inference/auxiliary/inference_unstable_iterator.rs diff --git a/src/test/ui/inference/auxiliary/inference_unstable_itertools.rs b/tests/ui/inference/auxiliary/inference_unstable_itertools.rs similarity index 100% rename from src/test/ui/inference/auxiliary/inference_unstable_itertools.rs rename to tests/ui/inference/auxiliary/inference_unstable_itertools.rs diff --git a/src/test/ui/inference/cannot-infer-async.rs b/tests/ui/inference/cannot-infer-async.rs similarity index 100% rename from src/test/ui/inference/cannot-infer-async.rs rename to tests/ui/inference/cannot-infer-async.rs diff --git a/src/test/ui/inference/cannot-infer-async.stderr b/tests/ui/inference/cannot-infer-async.stderr similarity index 100% rename from src/test/ui/inference/cannot-infer-async.stderr rename to tests/ui/inference/cannot-infer-async.stderr diff --git a/src/test/ui/inference/cannot-infer-closure-circular.rs b/tests/ui/inference/cannot-infer-closure-circular.rs similarity index 100% rename from src/test/ui/inference/cannot-infer-closure-circular.rs rename to tests/ui/inference/cannot-infer-closure-circular.rs diff --git a/src/test/ui/inference/cannot-infer-closure-circular.stderr b/tests/ui/inference/cannot-infer-closure-circular.stderr similarity index 100% rename from src/test/ui/inference/cannot-infer-closure-circular.stderr rename to tests/ui/inference/cannot-infer-closure-circular.stderr diff --git a/src/test/ui/inference/cannot-infer-closure.rs b/tests/ui/inference/cannot-infer-closure.rs similarity index 100% rename from src/test/ui/inference/cannot-infer-closure.rs rename to tests/ui/inference/cannot-infer-closure.rs diff --git a/src/test/ui/inference/cannot-infer-closure.stderr b/tests/ui/inference/cannot-infer-closure.stderr similarity index 100% rename from src/test/ui/inference/cannot-infer-closure.stderr rename to tests/ui/inference/cannot-infer-closure.stderr diff --git a/src/test/ui/inference/cannot-infer-partial-try-return.rs b/tests/ui/inference/cannot-infer-partial-try-return.rs similarity index 100% rename from src/test/ui/inference/cannot-infer-partial-try-return.rs rename to tests/ui/inference/cannot-infer-partial-try-return.rs diff --git a/src/test/ui/inference/cannot-infer-partial-try-return.stderr b/tests/ui/inference/cannot-infer-partial-try-return.stderr similarity index 100% rename from src/test/ui/inference/cannot-infer-partial-try-return.stderr rename to tests/ui/inference/cannot-infer-partial-try-return.stderr diff --git a/src/test/ui/inference/char-as-str-multi.rs b/tests/ui/inference/char-as-str-multi.rs similarity index 100% rename from src/test/ui/inference/char-as-str-multi.rs rename to tests/ui/inference/char-as-str-multi.rs diff --git a/src/test/ui/inference/char-as-str-multi.stderr b/tests/ui/inference/char-as-str-multi.stderr similarity index 100% rename from src/test/ui/inference/char-as-str-multi.stderr rename to tests/ui/inference/char-as-str-multi.stderr diff --git a/src/test/ui/inference/char-as-str-single.fixed b/tests/ui/inference/char-as-str-single.fixed similarity index 100% rename from src/test/ui/inference/char-as-str-single.fixed rename to tests/ui/inference/char-as-str-single.fixed diff --git a/src/test/ui/inference/char-as-str-single.rs b/tests/ui/inference/char-as-str-single.rs similarity index 100% rename from src/test/ui/inference/char-as-str-single.rs rename to tests/ui/inference/char-as-str-single.rs diff --git a/src/test/ui/inference/char-as-str-single.stderr b/tests/ui/inference/char-as-str-single.stderr similarity index 100% rename from src/test/ui/inference/char-as-str-single.stderr rename to tests/ui/inference/char-as-str-single.stderr diff --git a/src/test/ui/inference/deref-suggestion.rs b/tests/ui/inference/deref-suggestion.rs similarity index 100% rename from src/test/ui/inference/deref-suggestion.rs rename to tests/ui/inference/deref-suggestion.rs diff --git a/src/test/ui/inference/deref-suggestion.stderr b/tests/ui/inference/deref-suggestion.stderr similarity index 100% rename from src/test/ui/inference/deref-suggestion.stderr rename to tests/ui/inference/deref-suggestion.stderr diff --git a/src/test/ui/inference/erase-type-params-in-label.rs b/tests/ui/inference/erase-type-params-in-label.rs similarity index 100% rename from src/test/ui/inference/erase-type-params-in-label.rs rename to tests/ui/inference/erase-type-params-in-label.rs diff --git a/src/test/ui/inference/erase-type-params-in-label.stderr b/tests/ui/inference/erase-type-params-in-label.stderr similarity index 100% rename from src/test/ui/inference/erase-type-params-in-label.stderr rename to tests/ui/inference/erase-type-params-in-label.stderr diff --git a/src/test/ui/inference/infer-binary-operand-behind-reference.rs b/tests/ui/inference/infer-binary-operand-behind-reference.rs similarity index 100% rename from src/test/ui/inference/infer-binary-operand-behind-reference.rs rename to tests/ui/inference/infer-binary-operand-behind-reference.rs diff --git a/src/test/ui/inference/inference-variable-behind-raw-pointer.rs b/tests/ui/inference/inference-variable-behind-raw-pointer.rs similarity index 100% rename from src/test/ui/inference/inference-variable-behind-raw-pointer.rs rename to tests/ui/inference/inference-variable-behind-raw-pointer.rs diff --git a/src/test/ui/inference/inference-variable-behind-raw-pointer.stderr b/tests/ui/inference/inference-variable-behind-raw-pointer.stderr similarity index 100% rename from src/test/ui/inference/inference-variable-behind-raw-pointer.stderr rename to tests/ui/inference/inference-variable-behind-raw-pointer.stderr diff --git a/src/test/ui/inference/inference_unstable.rs b/tests/ui/inference/inference_unstable.rs similarity index 100% rename from src/test/ui/inference/inference_unstable.rs rename to tests/ui/inference/inference_unstable.rs diff --git a/src/test/ui/inference/inference_unstable.stderr b/tests/ui/inference/inference_unstable.stderr similarity index 100% rename from src/test/ui/inference/inference_unstable.stderr rename to tests/ui/inference/inference_unstable.stderr diff --git a/src/test/ui/inference/inference_unstable_featured.rs b/tests/ui/inference/inference_unstable_featured.rs similarity index 100% rename from src/test/ui/inference/inference_unstable_featured.rs rename to tests/ui/inference/inference_unstable_featured.rs diff --git a/src/test/ui/inference/inference_unstable_featured.stderr b/tests/ui/inference/inference_unstable_featured.stderr similarity index 100% rename from src/test/ui/inference/inference_unstable_featured.stderr rename to tests/ui/inference/inference_unstable_featured.stderr diff --git a/src/test/ui/inference/inference_unstable_forced.rs b/tests/ui/inference/inference_unstable_forced.rs similarity index 100% rename from src/test/ui/inference/inference_unstable_forced.rs rename to tests/ui/inference/inference_unstable_forced.rs diff --git a/src/test/ui/inference/inference_unstable_forced.stderr b/tests/ui/inference/inference_unstable_forced.stderr similarity index 100% rename from src/test/ui/inference/inference_unstable_forced.stderr rename to tests/ui/inference/inference_unstable_forced.stderr diff --git a/src/test/ui/inference/issue-103587.rs b/tests/ui/inference/issue-103587.rs similarity index 100% rename from src/test/ui/inference/issue-103587.rs rename to tests/ui/inference/issue-103587.rs diff --git a/src/test/ui/inference/issue-103587.stderr b/tests/ui/inference/issue-103587.stderr similarity index 100% rename from src/test/ui/inference/issue-103587.stderr rename to tests/ui/inference/issue-103587.stderr diff --git a/src/test/ui/inference/issue-104649.rs b/tests/ui/inference/issue-104649.rs similarity index 100% rename from src/test/ui/inference/issue-104649.rs rename to tests/ui/inference/issue-104649.rs diff --git a/src/test/ui/inference/issue-104649.stderr b/tests/ui/inference/issue-104649.stderr similarity index 100% rename from src/test/ui/inference/issue-104649.stderr rename to tests/ui/inference/issue-104649.stderr diff --git a/src/test/ui/inference/issue-28935.rs b/tests/ui/inference/issue-28935.rs similarity index 100% rename from src/test/ui/inference/issue-28935.rs rename to tests/ui/inference/issue-28935.rs diff --git a/src/test/ui/inference/issue-36053.rs b/tests/ui/inference/issue-36053.rs similarity index 100% rename from src/test/ui/inference/issue-36053.rs rename to tests/ui/inference/issue-36053.rs diff --git a/src/test/ui/inference/issue-70703.rs b/tests/ui/inference/issue-70703.rs similarity index 100% rename from src/test/ui/inference/issue-70703.rs rename to tests/ui/inference/issue-70703.rs diff --git a/src/test/ui/inference/issue-71309.rs b/tests/ui/inference/issue-71309.rs similarity index 100% rename from src/test/ui/inference/issue-71309.rs rename to tests/ui/inference/issue-71309.rs diff --git a/src/test/ui/inference/issue-71309.stderr b/tests/ui/inference/issue-71309.stderr similarity index 100% rename from src/test/ui/inference/issue-71309.stderr rename to tests/ui/inference/issue-71309.stderr diff --git a/src/test/ui/inference/issue-71732.rs b/tests/ui/inference/issue-71732.rs similarity index 100% rename from src/test/ui/inference/issue-71732.rs rename to tests/ui/inference/issue-71732.rs diff --git a/src/test/ui/inference/issue-71732.stderr b/tests/ui/inference/issue-71732.stderr similarity index 100% rename from src/test/ui/inference/issue-71732.stderr rename to tests/ui/inference/issue-71732.stderr diff --git a/src/test/ui/inference/issue-72616.rs b/tests/ui/inference/issue-72616.rs similarity index 100% rename from src/test/ui/inference/issue-72616.rs rename to tests/ui/inference/issue-72616.rs diff --git a/src/test/ui/inference/issue-72616.stderr b/tests/ui/inference/issue-72616.stderr similarity index 100% rename from src/test/ui/inference/issue-72616.stderr rename to tests/ui/inference/issue-72616.stderr diff --git a/src/test/ui/inference/issue-72690.rs b/tests/ui/inference/issue-72690.rs similarity index 100% rename from src/test/ui/inference/issue-72690.rs rename to tests/ui/inference/issue-72690.rs diff --git a/src/test/ui/inference/issue-72690.stderr b/tests/ui/inference/issue-72690.stderr similarity index 100% rename from src/test/ui/inference/issue-72690.stderr rename to tests/ui/inference/issue-72690.stderr diff --git a/src/test/ui/inference/issue-80816.rs b/tests/ui/inference/issue-80816.rs similarity index 100% rename from src/test/ui/inference/issue-80816.rs rename to tests/ui/inference/issue-80816.rs diff --git a/src/test/ui/inference/issue-80816.stderr b/tests/ui/inference/issue-80816.stderr similarity index 100% rename from src/test/ui/inference/issue-80816.stderr rename to tests/ui/inference/issue-80816.stderr diff --git a/src/test/ui/inference/issue-81522.rs b/tests/ui/inference/issue-81522.rs similarity index 100% rename from src/test/ui/inference/issue-81522.rs rename to tests/ui/inference/issue-81522.rs diff --git a/src/test/ui/inference/issue-83606.rs b/tests/ui/inference/issue-83606.rs similarity index 100% rename from src/test/ui/inference/issue-83606.rs rename to tests/ui/inference/issue-83606.rs diff --git a/src/test/ui/inference/issue-83606.stderr b/tests/ui/inference/issue-83606.stderr similarity index 100% rename from src/test/ui/inference/issue-83606.stderr rename to tests/ui/inference/issue-83606.stderr diff --git a/src/test/ui/inference/issue-86162-1.rs b/tests/ui/inference/issue-86162-1.rs similarity index 100% rename from src/test/ui/inference/issue-86162-1.rs rename to tests/ui/inference/issue-86162-1.rs diff --git a/src/test/ui/inference/issue-86162-1.stderr b/tests/ui/inference/issue-86162-1.stderr similarity index 100% rename from src/test/ui/inference/issue-86162-1.stderr rename to tests/ui/inference/issue-86162-1.stderr diff --git a/src/test/ui/inference/issue-86162-2.rs b/tests/ui/inference/issue-86162-2.rs similarity index 100% rename from src/test/ui/inference/issue-86162-2.rs rename to tests/ui/inference/issue-86162-2.rs diff --git a/src/test/ui/inference/issue-86162-2.stderr b/tests/ui/inference/issue-86162-2.stderr similarity index 100% rename from src/test/ui/inference/issue-86162-2.stderr rename to tests/ui/inference/issue-86162-2.stderr diff --git a/src/test/ui/inference/lub-glb-with-unbound-infer-var.rs b/tests/ui/inference/lub-glb-with-unbound-infer-var.rs similarity index 100% rename from src/test/ui/inference/lub-glb-with-unbound-infer-var.rs rename to tests/ui/inference/lub-glb-with-unbound-infer-var.rs diff --git a/src/test/ui/inference/need_type_info/channel.rs b/tests/ui/inference/need_type_info/channel.rs similarity index 100% rename from src/test/ui/inference/need_type_info/channel.rs rename to tests/ui/inference/need_type_info/channel.rs diff --git a/src/test/ui/inference/need_type_info/channel.stderr b/tests/ui/inference/need_type_info/channel.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/channel.stderr rename to tests/ui/inference/need_type_info/channel.stderr diff --git a/src/test/ui/inference/need_type_info/concrete-impl.rs b/tests/ui/inference/need_type_info/concrete-impl.rs similarity index 100% rename from src/test/ui/inference/need_type_info/concrete-impl.rs rename to tests/ui/inference/need_type_info/concrete-impl.rs diff --git a/src/test/ui/inference/need_type_info/concrete-impl.stderr b/tests/ui/inference/need_type_info/concrete-impl.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/concrete-impl.stderr rename to tests/ui/inference/need_type_info/concrete-impl.stderr diff --git a/src/test/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.rs b/tests/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.rs similarity index 100% rename from src/test/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.rs rename to tests/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.rs diff --git a/src/test/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.stderr b/tests/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.stderr rename to tests/ui/inference/need_type_info/do-not-suggest-generic-arguments-for-turbofish.stderr diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative-enum.rs b/tests/ui/inference/need_type_info/expr-struct-type-relative-enum.rs similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative-enum.rs rename to tests/ui/inference/need_type_info/expr-struct-type-relative-enum.rs diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative-enum.stderr b/tests/ui/inference/need_type_info/expr-struct-type-relative-enum.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative-enum.stderr rename to tests/ui/inference/need_type_info/expr-struct-type-relative-enum.stderr diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative-gat.rs b/tests/ui/inference/need_type_info/expr-struct-type-relative-gat.rs similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative-gat.rs rename to tests/ui/inference/need_type_info/expr-struct-type-relative-gat.rs diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative-gat.stderr b/tests/ui/inference/need_type_info/expr-struct-type-relative-gat.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative-gat.stderr rename to tests/ui/inference/need_type_info/expr-struct-type-relative-gat.stderr diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative.rs b/tests/ui/inference/need_type_info/expr-struct-type-relative.rs similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative.rs rename to tests/ui/inference/need_type_info/expr-struct-type-relative.rs diff --git a/src/test/ui/inference/need_type_info/expr-struct-type-relative.stderr b/tests/ui/inference/need_type_info/expr-struct-type-relative.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/expr-struct-type-relative.stderr rename to tests/ui/inference/need_type_info/expr-struct-type-relative.stderr diff --git a/src/test/ui/inference/need_type_info/issue-103053.rs b/tests/ui/inference/need_type_info/issue-103053.rs similarity index 100% rename from src/test/ui/inference/need_type_info/issue-103053.rs rename to tests/ui/inference/need_type_info/issue-103053.rs diff --git a/src/test/ui/inference/need_type_info/issue-103053.stderr b/tests/ui/inference/need_type_info/issue-103053.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/issue-103053.stderr rename to tests/ui/inference/need_type_info/issue-103053.stderr diff --git a/src/test/ui/inference/need_type_info/self-ty-in-path.rs b/tests/ui/inference/need_type_info/self-ty-in-path.rs similarity index 100% rename from src/test/ui/inference/need_type_info/self-ty-in-path.rs rename to tests/ui/inference/need_type_info/self-ty-in-path.rs diff --git a/src/test/ui/inference/need_type_info/self-ty-in-path.stderr b/tests/ui/inference/need_type_info/self-ty-in-path.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/self-ty-in-path.stderr rename to tests/ui/inference/need_type_info/self-ty-in-path.stderr diff --git a/src/test/ui/inference/need_type_info/type-alias-indirect.rs b/tests/ui/inference/need_type_info/type-alias-indirect.rs similarity index 100% rename from src/test/ui/inference/need_type_info/type-alias-indirect.rs rename to tests/ui/inference/need_type_info/type-alias-indirect.rs diff --git a/src/test/ui/inference/need_type_info/type-alias-indirect.stderr b/tests/ui/inference/need_type_info/type-alias-indirect.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/type-alias-indirect.stderr rename to tests/ui/inference/need_type_info/type-alias-indirect.stderr diff --git a/src/test/ui/inference/need_type_info/type-alias.rs b/tests/ui/inference/need_type_info/type-alias.rs similarity index 100% rename from src/test/ui/inference/need_type_info/type-alias.rs rename to tests/ui/inference/need_type_info/type-alias.rs diff --git a/src/test/ui/inference/need_type_info/type-alias.stderr b/tests/ui/inference/need_type_info/type-alias.stderr similarity index 100% rename from src/test/ui/inference/need_type_info/type-alias.stderr rename to tests/ui/inference/need_type_info/type-alias.stderr diff --git a/src/test/ui/inference/newlambdas-ret-infer.rs b/tests/ui/inference/newlambdas-ret-infer.rs similarity index 100% rename from src/test/ui/inference/newlambdas-ret-infer.rs rename to tests/ui/inference/newlambdas-ret-infer.rs diff --git a/src/test/ui/inference/newlambdas-ret-infer2.rs b/tests/ui/inference/newlambdas-ret-infer2.rs similarity index 100% rename from src/test/ui/inference/newlambdas-ret-infer2.rs rename to tests/ui/inference/newlambdas-ret-infer2.rs diff --git a/src/test/ui/inference/question-mark-type-infer.rs b/tests/ui/inference/question-mark-type-infer.rs similarity index 100% rename from src/test/ui/inference/question-mark-type-infer.rs rename to tests/ui/inference/question-mark-type-infer.rs diff --git a/src/test/ui/inference/question-mark-type-infer.stderr b/tests/ui/inference/question-mark-type-infer.stderr similarity index 100% rename from src/test/ui/inference/question-mark-type-infer.stderr rename to tests/ui/inference/question-mark-type-infer.stderr diff --git a/src/test/ui/inference/range-type-infer.rs b/tests/ui/inference/range-type-infer.rs similarity index 100% rename from src/test/ui/inference/range-type-infer.rs rename to tests/ui/inference/range-type-infer.rs diff --git a/src/test/ui/inference/simple-infer.rs b/tests/ui/inference/simple-infer.rs similarity index 100% rename from src/test/ui/inference/simple-infer.rs rename to tests/ui/inference/simple-infer.rs diff --git a/src/test/ui/inference/str-as-char.fixed b/tests/ui/inference/str-as-char.fixed similarity index 100% rename from src/test/ui/inference/str-as-char.fixed rename to tests/ui/inference/str-as-char.fixed diff --git a/src/test/ui/inference/str-as-char.rs b/tests/ui/inference/str-as-char.rs similarity index 100% rename from src/test/ui/inference/str-as-char.rs rename to tests/ui/inference/str-as-char.rs diff --git a/src/test/ui/inference/str-as-char.stderr b/tests/ui/inference/str-as-char.stderr similarity index 100% rename from src/test/ui/inference/str-as-char.stderr rename to tests/ui/inference/str-as-char.stderr diff --git a/src/test/ui/inference/tutorial-suffix-inference-test.rs b/tests/ui/inference/tutorial-suffix-inference-test.rs similarity index 100% rename from src/test/ui/inference/tutorial-suffix-inference-test.rs rename to tests/ui/inference/tutorial-suffix-inference-test.rs diff --git a/src/test/ui/inference/tutorial-suffix-inference-test.stderr b/tests/ui/inference/tutorial-suffix-inference-test.stderr similarity index 100% rename from src/test/ui/inference/tutorial-suffix-inference-test.stderr rename to tests/ui/inference/tutorial-suffix-inference-test.stderr diff --git a/src/test/ui/inference/type-infer-generalize-ty-var.rs b/tests/ui/inference/type-infer-generalize-ty-var.rs similarity index 100% rename from src/test/ui/inference/type-infer-generalize-ty-var.rs rename to tests/ui/inference/type-infer-generalize-ty-var.rs diff --git a/src/test/ui/infinite/infinite-autoderef.rs b/tests/ui/infinite/infinite-autoderef.rs similarity index 100% rename from src/test/ui/infinite/infinite-autoderef.rs rename to tests/ui/infinite/infinite-autoderef.rs diff --git a/src/test/ui/infinite/infinite-autoderef.stderr b/tests/ui/infinite/infinite-autoderef.stderr similarity index 100% rename from src/test/ui/infinite/infinite-autoderef.stderr rename to tests/ui/infinite/infinite-autoderef.stderr diff --git a/src/test/ui/infinite/infinite-instantiation.polonius.stderr b/tests/ui/infinite/infinite-instantiation.polonius.stderr similarity index 100% rename from src/test/ui/infinite/infinite-instantiation.polonius.stderr rename to tests/ui/infinite/infinite-instantiation.polonius.stderr diff --git a/src/test/ui/infinite/infinite-instantiation.rs b/tests/ui/infinite/infinite-instantiation.rs similarity index 100% rename from src/test/ui/infinite/infinite-instantiation.rs rename to tests/ui/infinite/infinite-instantiation.rs diff --git a/src/test/ui/infinite/infinite-instantiation.stderr b/tests/ui/infinite/infinite-instantiation.stderr similarity index 100% rename from src/test/ui/infinite/infinite-instantiation.stderr rename to tests/ui/infinite/infinite-instantiation.stderr diff --git a/src/test/ui/infinite/infinite-macro-expansion.rs b/tests/ui/infinite/infinite-macro-expansion.rs similarity index 100% rename from src/test/ui/infinite/infinite-macro-expansion.rs rename to tests/ui/infinite/infinite-macro-expansion.rs diff --git a/src/test/ui/infinite/infinite-macro-expansion.stderr b/tests/ui/infinite/infinite-macro-expansion.stderr similarity index 100% rename from src/test/ui/infinite/infinite-macro-expansion.stderr rename to tests/ui/infinite/infinite-macro-expansion.stderr diff --git a/src/test/ui/infinite/infinite-recursion-const-fn.rs b/tests/ui/infinite/infinite-recursion-const-fn.rs similarity index 100% rename from src/test/ui/infinite/infinite-recursion-const-fn.rs rename to tests/ui/infinite/infinite-recursion-const-fn.rs diff --git a/src/test/ui/infinite/infinite-recursion-const-fn.stderr b/tests/ui/infinite/infinite-recursion-const-fn.stderr similarity index 100% rename from src/test/ui/infinite/infinite-recursion-const-fn.stderr rename to tests/ui/infinite/infinite-recursion-const-fn.stderr diff --git a/src/test/ui/infinite/infinite-struct.rs b/tests/ui/infinite/infinite-struct.rs similarity index 100% rename from src/test/ui/infinite/infinite-struct.rs rename to tests/ui/infinite/infinite-struct.rs diff --git a/src/test/ui/infinite/infinite-struct.stderr b/tests/ui/infinite/infinite-struct.stderr similarity index 100% rename from src/test/ui/infinite/infinite-struct.stderr rename to tests/ui/infinite/infinite-struct.stderr diff --git a/src/test/ui/infinite/infinite-tag-type-recursion.rs b/tests/ui/infinite/infinite-tag-type-recursion.rs similarity index 100% rename from src/test/ui/infinite/infinite-tag-type-recursion.rs rename to tests/ui/infinite/infinite-tag-type-recursion.rs diff --git a/src/test/ui/infinite/infinite-tag-type-recursion.stderr b/tests/ui/infinite/infinite-tag-type-recursion.stderr similarity index 100% rename from src/test/ui/infinite/infinite-tag-type-recursion.stderr rename to tests/ui/infinite/infinite-tag-type-recursion.stderr diff --git a/src/test/ui/infinite/infinite-trait-alias-recursion.rs b/tests/ui/infinite/infinite-trait-alias-recursion.rs similarity index 100% rename from src/test/ui/infinite/infinite-trait-alias-recursion.rs rename to tests/ui/infinite/infinite-trait-alias-recursion.rs diff --git a/src/test/ui/infinite/infinite-trait-alias-recursion.stderr b/tests/ui/infinite/infinite-trait-alias-recursion.stderr similarity index 100% rename from src/test/ui/infinite/infinite-trait-alias-recursion.stderr rename to tests/ui/infinite/infinite-trait-alias-recursion.stderr diff --git a/src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs b/tests/ui/infinite/infinite-type-alias-mutual-recursion.rs similarity index 100% rename from src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs rename to tests/ui/infinite/infinite-type-alias-mutual-recursion.rs diff --git a/src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr b/tests/ui/infinite/infinite-type-alias-mutual-recursion.stderr similarity index 100% rename from src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr rename to tests/ui/infinite/infinite-type-alias-mutual-recursion.stderr diff --git a/src/test/ui/infinite/infinite-vec-type-recursion.rs b/tests/ui/infinite/infinite-vec-type-recursion.rs similarity index 100% rename from src/test/ui/infinite/infinite-vec-type-recursion.rs rename to tests/ui/infinite/infinite-vec-type-recursion.rs diff --git a/src/test/ui/infinite/infinite-vec-type-recursion.stderr b/tests/ui/infinite/infinite-vec-type-recursion.stderr similarity index 100% rename from src/test/ui/infinite/infinite-vec-type-recursion.stderr rename to tests/ui/infinite/infinite-vec-type-recursion.stderr diff --git a/src/test/ui/infinite/issue-41731-infinite-macro-print.rs b/tests/ui/infinite/issue-41731-infinite-macro-print.rs similarity index 100% rename from src/test/ui/infinite/issue-41731-infinite-macro-print.rs rename to tests/ui/infinite/issue-41731-infinite-macro-print.rs diff --git a/src/test/ui/infinite/issue-41731-infinite-macro-print.stderr b/tests/ui/infinite/issue-41731-infinite-macro-print.stderr similarity index 100% rename from src/test/ui/infinite/issue-41731-infinite-macro-print.stderr rename to tests/ui/infinite/issue-41731-infinite-macro-print.stderr diff --git a/src/test/ui/infinite/issue-41731-infinite-macro-println.rs b/tests/ui/infinite/issue-41731-infinite-macro-println.rs similarity index 100% rename from src/test/ui/infinite/issue-41731-infinite-macro-println.rs rename to tests/ui/infinite/issue-41731-infinite-macro-println.rs diff --git a/src/test/ui/infinite/issue-41731-infinite-macro-println.stderr b/tests/ui/infinite/issue-41731-infinite-macro-println.stderr similarity index 100% rename from src/test/ui/infinite/issue-41731-infinite-macro-println.stderr rename to tests/ui/infinite/issue-41731-infinite-macro-println.stderr diff --git a/src/test/ui/inherent-impls-overlap-check/auxiliary/repeat.rs b/tests/ui/inherent-impls-overlap-check/auxiliary/repeat.rs similarity index 100% rename from src/test/ui/inherent-impls-overlap-check/auxiliary/repeat.rs rename to tests/ui/inherent-impls-overlap-check/auxiliary/repeat.rs diff --git a/src/test/ui/inherent-impls-overlap-check/no-overlap.rs b/tests/ui/inherent-impls-overlap-check/no-overlap.rs similarity index 100% rename from src/test/ui/inherent-impls-overlap-check/no-overlap.rs rename to tests/ui/inherent-impls-overlap-check/no-overlap.rs diff --git a/src/test/ui/inherent-impls-overlap-check/overlap.rs b/tests/ui/inherent-impls-overlap-check/overlap.rs similarity index 100% rename from src/test/ui/inherent-impls-overlap-check/overlap.rs rename to tests/ui/inherent-impls-overlap-check/overlap.rs diff --git a/src/test/ui/inherent-impls-overlap-check/overlap.stderr b/tests/ui/inherent-impls-overlap-check/overlap.stderr similarity index 100% rename from src/test/ui/inherent-impls-overlap-check/overlap.stderr rename to tests/ui/inherent-impls-overlap-check/overlap.stderr diff --git a/src/test/ui/inherit-env.rs b/tests/ui/inherit-env.rs similarity index 100% rename from src/test/ui/inherit-env.rs rename to tests/ui/inherit-env.rs diff --git a/src/test/ui/inline-const/const-expr-array-init.rs b/tests/ui/inline-const/const-expr-array-init.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-array-init.rs rename to tests/ui/inline-const/const-expr-array-init.rs diff --git a/src/test/ui/inline-const/const-expr-basic.rs b/tests/ui/inline-const/const-expr-basic.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-basic.rs rename to tests/ui/inline-const/const-expr-basic.rs diff --git a/src/test/ui/inline-const/const-expr-generic-err.rs b/tests/ui/inline-const/const-expr-generic-err.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-generic-err.rs rename to tests/ui/inline-const/const-expr-generic-err.rs diff --git a/src/test/ui/inline-const/const-expr-generic-err.stderr b/tests/ui/inline-const/const-expr-generic-err.stderr similarity index 100% rename from src/test/ui/inline-const/const-expr-generic-err.stderr rename to tests/ui/inline-const/const-expr-generic-err.stderr diff --git a/src/test/ui/inline-const/const-expr-generic-err2.rs b/tests/ui/inline-const/const-expr-generic-err2.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-generic-err2.rs rename to tests/ui/inline-const/const-expr-generic-err2.rs diff --git a/src/test/ui/inline-const/const-expr-generic-err2.stderr b/tests/ui/inline-const/const-expr-generic-err2.stderr similarity index 100% rename from src/test/ui/inline-const/const-expr-generic-err2.stderr rename to tests/ui/inline-const/const-expr-generic-err2.stderr diff --git a/src/test/ui/inline-const/const-expr-generic.rs b/tests/ui/inline-const/const-expr-generic.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-generic.rs rename to tests/ui/inline-const/const-expr-generic.rs diff --git a/src/test/ui/inline-const/const-expr-inference.rs b/tests/ui/inline-const/const-expr-inference.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-inference.rs rename to tests/ui/inline-const/const-expr-inference.rs diff --git a/src/test/ui/inline-const/const-expr-lifetime-err.rs b/tests/ui/inline-const/const-expr-lifetime-err.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-lifetime-err.rs rename to tests/ui/inline-const/const-expr-lifetime-err.rs diff --git a/src/test/ui/inline-const/const-expr-lifetime-err.stderr b/tests/ui/inline-const/const-expr-lifetime-err.stderr similarity index 100% rename from src/test/ui/inline-const/const-expr-lifetime-err.stderr rename to tests/ui/inline-const/const-expr-lifetime-err.stderr diff --git a/src/test/ui/inline-const/const-expr-lifetime.rs b/tests/ui/inline-const/const-expr-lifetime.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-lifetime.rs rename to tests/ui/inline-const/const-expr-lifetime.rs diff --git a/src/test/ui/inline-const/const-expr-macro.rs b/tests/ui/inline-const/const-expr-macro.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-macro.rs rename to tests/ui/inline-const/const-expr-macro.rs diff --git a/src/test/ui/inline-const/const-expr-reference.rs b/tests/ui/inline-const/const-expr-reference.rs similarity index 100% rename from src/test/ui/inline-const/const-expr-reference.rs rename to tests/ui/inline-const/const-expr-reference.rs diff --git a/src/test/ui/inline-const/const-match-pat-generic.rs b/tests/ui/inline-const/const-match-pat-generic.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat-generic.rs rename to tests/ui/inline-const/const-match-pat-generic.rs diff --git a/src/test/ui/inline-const/const-match-pat-generic.stderr b/tests/ui/inline-const/const-match-pat-generic.stderr similarity index 100% rename from src/test/ui/inline-const/const-match-pat-generic.stderr rename to tests/ui/inline-const/const-match-pat-generic.stderr diff --git a/src/test/ui/inline-const/const-match-pat-inference.rs b/tests/ui/inline-const/const-match-pat-inference.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat-inference.rs rename to tests/ui/inline-const/const-match-pat-inference.rs diff --git a/src/test/ui/inline-const/const-match-pat-lifetime-err.rs b/tests/ui/inline-const/const-match-pat-lifetime-err.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat-lifetime-err.rs rename to tests/ui/inline-const/const-match-pat-lifetime-err.rs diff --git a/src/test/ui/inline-const/const-match-pat-lifetime.rs b/tests/ui/inline-const/const-match-pat-lifetime.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat-lifetime.rs rename to tests/ui/inline-const/const-match-pat-lifetime.rs diff --git a/src/test/ui/inline-const/const-match-pat-range.rs b/tests/ui/inline-const/const-match-pat-range.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat-range.rs rename to tests/ui/inline-const/const-match-pat-range.rs diff --git a/src/test/ui/inline-const/const-match-pat.rs b/tests/ui/inline-const/const-match-pat.rs similarity index 100% rename from src/test/ui/inline-const/const-match-pat.rs rename to tests/ui/inline-const/const-match-pat.rs diff --git a/src/test/ui/inline-const/expr-unsafe-err.mir.stderr b/tests/ui/inline-const/expr-unsafe-err.mir.stderr similarity index 100% rename from src/test/ui/inline-const/expr-unsafe-err.mir.stderr rename to tests/ui/inline-const/expr-unsafe-err.mir.stderr diff --git a/src/test/ui/inline-const/expr-unsafe-err.rs b/tests/ui/inline-const/expr-unsafe-err.rs similarity index 100% rename from src/test/ui/inline-const/expr-unsafe-err.rs rename to tests/ui/inline-const/expr-unsafe-err.rs diff --git a/src/test/ui/inline-const/expr-unsafe-err.thir.stderr b/tests/ui/inline-const/expr-unsafe-err.thir.stderr similarity index 100% rename from src/test/ui/inline-const/expr-unsafe-err.thir.stderr rename to tests/ui/inline-const/expr-unsafe-err.thir.stderr diff --git a/src/test/ui/inline-const/expr-unsafe.mir.stderr b/tests/ui/inline-const/expr-unsafe.mir.stderr similarity index 100% rename from src/test/ui/inline-const/expr-unsafe.mir.stderr rename to tests/ui/inline-const/expr-unsafe.mir.stderr diff --git a/src/test/ui/inline-const/expr-unsafe.rs b/tests/ui/inline-const/expr-unsafe.rs similarity index 100% rename from src/test/ui/inline-const/expr-unsafe.rs rename to tests/ui/inline-const/expr-unsafe.rs diff --git a/src/test/ui/inline-const/expr-unsafe.thir.stderr b/tests/ui/inline-const/expr-unsafe.thir.stderr similarity index 100% rename from src/test/ui/inline-const/expr-unsafe.thir.stderr rename to tests/ui/inline-const/expr-unsafe.thir.stderr diff --git a/src/test/ui/inline-const/expr-with-block-err.rs b/tests/ui/inline-const/expr-with-block-err.rs similarity index 100% rename from src/test/ui/inline-const/expr-with-block-err.rs rename to tests/ui/inline-const/expr-with-block-err.rs diff --git a/src/test/ui/inline-const/expr-with-block-err.stderr b/tests/ui/inline-const/expr-with-block-err.stderr similarity index 100% rename from src/test/ui/inline-const/expr-with-block-err.stderr rename to tests/ui/inline-const/expr-with-block-err.stderr diff --git a/src/test/ui/inline-const/expr-with-block.rs b/tests/ui/inline-const/expr-with-block.rs similarity index 100% rename from src/test/ui/inline-const/expr-with-block.rs rename to tests/ui/inline-const/expr-with-block.rs diff --git a/src/test/ui/inline-const/macro-with-const.rs b/tests/ui/inline-const/macro-with-const.rs similarity index 100% rename from src/test/ui/inline-const/macro-with-const.rs rename to tests/ui/inline-const/macro-with-const.rs diff --git a/src/test/ui/inline-const/pat-unsafe-err.rs b/tests/ui/inline-const/pat-unsafe-err.rs similarity index 100% rename from src/test/ui/inline-const/pat-unsafe-err.rs rename to tests/ui/inline-const/pat-unsafe-err.rs diff --git a/src/test/ui/inline-const/pat-unsafe.rs b/tests/ui/inline-const/pat-unsafe.rs similarity index 100% rename from src/test/ui/inline-const/pat-unsafe.rs rename to tests/ui/inline-const/pat-unsafe.rs diff --git a/src/test/ui/inline-disallow-on-variant.rs b/tests/ui/inline-disallow-on-variant.rs similarity index 100% rename from src/test/ui/inline-disallow-on-variant.rs rename to tests/ui/inline-disallow-on-variant.rs diff --git a/src/test/ui/inline-disallow-on-variant.stderr b/tests/ui/inline-disallow-on-variant.stderr similarity index 100% rename from src/test/ui/inline-disallow-on-variant.stderr rename to tests/ui/inline-disallow-on-variant.stderr diff --git a/src/test/ui/inlined-main.rs b/tests/ui/inlined-main.rs similarity index 100% rename from src/test/ui/inlined-main.rs rename to tests/ui/inlined-main.rs diff --git a/src/test/ui/inner-attrs-on-impl.rs b/tests/ui/inner-attrs-on-impl.rs similarity index 100% rename from src/test/ui/inner-attrs-on-impl.rs rename to tests/ui/inner-attrs-on-impl.rs diff --git a/src/test/ui/inner-module.rs b/tests/ui/inner-module.rs similarity index 100% rename from src/test/ui/inner-module.rs rename to tests/ui/inner-module.rs diff --git a/src/test/ui/inner-static-type-parameter.rs b/tests/ui/inner-static-type-parameter.rs similarity index 100% rename from src/test/ui/inner-static-type-parameter.rs rename to tests/ui/inner-static-type-parameter.rs diff --git a/src/test/ui/inner-static-type-parameter.stderr b/tests/ui/inner-static-type-parameter.stderr similarity index 100% rename from src/test/ui/inner-static-type-parameter.stderr rename to tests/ui/inner-static-type-parameter.stderr diff --git a/src/test/ui/inner-static.rs b/tests/ui/inner-static.rs similarity index 100% rename from src/test/ui/inner-static.rs rename to tests/ui/inner-static.rs diff --git a/src/test/ui/integral-indexing.rs b/tests/ui/integral-indexing.rs similarity index 100% rename from src/test/ui/integral-indexing.rs rename to tests/ui/integral-indexing.rs diff --git a/src/test/ui/integral-indexing.stderr b/tests/ui/integral-indexing.stderr similarity index 100% rename from src/test/ui/integral-indexing.stderr rename to tests/ui/integral-indexing.stderr diff --git a/src/test/ui/integral-variable-unification-error.rs b/tests/ui/integral-variable-unification-error.rs similarity index 100% rename from src/test/ui/integral-variable-unification-error.rs rename to tests/ui/integral-variable-unification-error.rs diff --git a/src/test/ui/integral-variable-unification-error.stderr b/tests/ui/integral-variable-unification-error.stderr similarity index 100% rename from src/test/ui/integral-variable-unification-error.stderr rename to tests/ui/integral-variable-unification-error.stderr diff --git a/src/test/ui/interior-mutability/interior-mutability.rs b/tests/ui/interior-mutability/interior-mutability.rs similarity index 100% rename from src/test/ui/interior-mutability/interior-mutability.rs rename to tests/ui/interior-mutability/interior-mutability.rs diff --git a/src/test/ui/interior-mutability/interior-mutability.stderr b/tests/ui/interior-mutability/interior-mutability.stderr similarity index 100% rename from src/test/ui/interior-mutability/interior-mutability.stderr rename to tests/ui/interior-mutability/interior-mutability.stderr diff --git a/src/test/ui/internal/auxiliary/internal_unstable.rs b/tests/ui/internal/auxiliary/internal_unstable.rs similarity index 100% rename from src/test/ui/internal/auxiliary/internal_unstable.rs rename to tests/ui/internal/auxiliary/internal_unstable.rs diff --git a/src/test/ui/internal/internal-unstable-const.rs b/tests/ui/internal/internal-unstable-const.rs similarity index 100% rename from src/test/ui/internal/internal-unstable-const.rs rename to tests/ui/internal/internal-unstable-const.rs diff --git a/src/test/ui/internal/internal-unstable-const.stderr b/tests/ui/internal/internal-unstable-const.stderr similarity index 100% rename from src/test/ui/internal/internal-unstable-const.stderr rename to tests/ui/internal/internal-unstable-const.stderr diff --git a/src/test/ui/internal/internal-unstable-noallow.rs b/tests/ui/internal/internal-unstable-noallow.rs similarity index 100% rename from src/test/ui/internal/internal-unstable-noallow.rs rename to tests/ui/internal/internal-unstable-noallow.rs diff --git a/src/test/ui/internal/internal-unstable-noallow.stderr b/tests/ui/internal/internal-unstable-noallow.stderr similarity index 100% rename from src/test/ui/internal/internal-unstable-noallow.stderr rename to tests/ui/internal/internal-unstable-noallow.stderr diff --git a/src/test/ui/internal/internal-unstable-thread-local.rs b/tests/ui/internal/internal-unstable-thread-local.rs similarity index 100% rename from src/test/ui/internal/internal-unstable-thread-local.rs rename to tests/ui/internal/internal-unstable-thread-local.rs diff --git a/src/test/ui/internal/internal-unstable-thread-local.stderr b/tests/ui/internal/internal-unstable-thread-local.stderr similarity index 100% rename from src/test/ui/internal/internal-unstable-thread-local.stderr rename to tests/ui/internal/internal-unstable-thread-local.stderr diff --git a/src/test/ui/internal/internal-unstable.rs b/tests/ui/internal/internal-unstable.rs similarity index 100% rename from src/test/ui/internal/internal-unstable.rs rename to tests/ui/internal/internal-unstable.rs diff --git a/src/test/ui/internal/internal-unstable.stderr b/tests/ui/internal/internal-unstable.stderr similarity index 100% rename from src/test/ui/internal/internal-unstable.stderr rename to tests/ui/internal/internal-unstable.stderr diff --git a/src/test/ui/intrinsics-always-extern.rs b/tests/ui/intrinsics-always-extern.rs similarity index 100% rename from src/test/ui/intrinsics-always-extern.rs rename to tests/ui/intrinsics-always-extern.rs diff --git a/src/test/ui/intrinsics-always-extern.stderr b/tests/ui/intrinsics-always-extern.stderr similarity index 100% rename from src/test/ui/intrinsics-always-extern.stderr rename to tests/ui/intrinsics-always-extern.stderr diff --git a/src/test/ui/intrinsics/auxiliary/cci_intrinsic.rs b/tests/ui/intrinsics/auxiliary/cci_intrinsic.rs similarity index 100% rename from src/test/ui/intrinsics/auxiliary/cci_intrinsic.rs rename to tests/ui/intrinsics/auxiliary/cci_intrinsic.rs diff --git a/src/test/ui/intrinsics/bad-intrinsic-monomorphization.rs b/tests/ui/intrinsics/bad-intrinsic-monomorphization.rs similarity index 100% rename from src/test/ui/intrinsics/bad-intrinsic-monomorphization.rs rename to tests/ui/intrinsics/bad-intrinsic-monomorphization.rs diff --git a/src/test/ui/intrinsics/bad-intrinsic-monomorphization.stderr b/tests/ui/intrinsics/bad-intrinsic-monomorphization.stderr similarity index 100% rename from src/test/ui/intrinsics/bad-intrinsic-monomorphization.stderr rename to tests/ui/intrinsics/bad-intrinsic-monomorphization.stderr diff --git a/src/test/ui/intrinsics/const-eval-select-backtrace-std.rs b/tests/ui/intrinsics/const-eval-select-backtrace-std.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-backtrace-std.rs rename to tests/ui/intrinsics/const-eval-select-backtrace-std.rs diff --git a/src/test/ui/intrinsics/const-eval-select-backtrace-std.run.stderr b/tests/ui/intrinsics/const-eval-select-backtrace-std.run.stderr similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-backtrace-std.run.stderr rename to tests/ui/intrinsics/const-eval-select-backtrace-std.run.stderr diff --git a/src/test/ui/intrinsics/const-eval-select-backtrace.rs b/tests/ui/intrinsics/const-eval-select-backtrace.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-backtrace.rs rename to tests/ui/intrinsics/const-eval-select-backtrace.rs diff --git a/src/test/ui/intrinsics/const-eval-select-backtrace.run.stderr b/tests/ui/intrinsics/const-eval-select-backtrace.run.stderr similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-backtrace.run.stderr rename to tests/ui/intrinsics/const-eval-select-backtrace.run.stderr diff --git a/src/test/ui/intrinsics/const-eval-select-bad.rs b/tests/ui/intrinsics/const-eval-select-bad.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-bad.rs rename to tests/ui/intrinsics/const-eval-select-bad.rs diff --git a/src/test/ui/intrinsics/const-eval-select-bad.stderr b/tests/ui/intrinsics/const-eval-select-bad.stderr similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-bad.stderr rename to tests/ui/intrinsics/const-eval-select-bad.stderr diff --git a/src/test/ui/intrinsics/const-eval-select-stability.rs b/tests/ui/intrinsics/const-eval-select-stability.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-stability.rs rename to tests/ui/intrinsics/const-eval-select-stability.rs diff --git a/src/test/ui/intrinsics/const-eval-select-stability.stderr b/tests/ui/intrinsics/const-eval-select-stability.stderr similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-stability.stderr rename to tests/ui/intrinsics/const-eval-select-stability.stderr diff --git a/src/test/ui/intrinsics/const-eval-select-x86_64.rs b/tests/ui/intrinsics/const-eval-select-x86_64.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select-x86_64.rs rename to tests/ui/intrinsics/const-eval-select-x86_64.rs diff --git a/src/test/ui/intrinsics/const-eval-select.rs b/tests/ui/intrinsics/const-eval-select.rs similarity index 100% rename from src/test/ui/intrinsics/const-eval-select.rs rename to tests/ui/intrinsics/const-eval-select.rs diff --git a/src/test/ui/intrinsics/intrinsic-alignment.rs b/tests/ui/intrinsics/intrinsic-alignment.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-alignment.rs rename to tests/ui/intrinsics/intrinsic-alignment.rs diff --git a/src/test/ui/intrinsics/intrinsic-assume.rs b/tests/ui/intrinsics/intrinsic-assume.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-assume.rs rename to tests/ui/intrinsics/intrinsic-assume.rs diff --git a/src/test/ui/intrinsics/intrinsic-atomics-cc.rs b/tests/ui/intrinsics/intrinsic-atomics-cc.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-atomics-cc.rs rename to tests/ui/intrinsics/intrinsic-atomics-cc.rs diff --git a/src/test/ui/intrinsics/intrinsic-atomics.rs b/tests/ui/intrinsics/intrinsic-atomics.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-atomics.rs rename to tests/ui/intrinsics/intrinsic-atomics.rs diff --git a/src/test/ui/intrinsics/intrinsic-nearby.rs b/tests/ui/intrinsics/intrinsic-nearby.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-nearby.rs rename to tests/ui/intrinsics/intrinsic-nearby.rs diff --git a/src/test/ui/intrinsics/intrinsic-raw_eq-const-padding.rs b/tests/ui/intrinsics/intrinsic-raw_eq-const-padding.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-raw_eq-const-padding.rs rename to tests/ui/intrinsics/intrinsic-raw_eq-const-padding.rs diff --git a/src/test/ui/intrinsics/intrinsic-raw_eq-const-padding.stderr b/tests/ui/intrinsics/intrinsic-raw_eq-const-padding.stderr similarity index 100% rename from src/test/ui/intrinsics/intrinsic-raw_eq-const-padding.stderr rename to tests/ui/intrinsics/intrinsic-raw_eq-const-padding.stderr diff --git a/src/test/ui/intrinsics/intrinsic-raw_eq-const.rs b/tests/ui/intrinsics/intrinsic-raw_eq-const.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-raw_eq-const.rs rename to tests/ui/intrinsics/intrinsic-raw_eq-const.rs diff --git a/src/test/ui/intrinsics/intrinsic-unreachable.rs b/tests/ui/intrinsics/intrinsic-unreachable.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-unreachable.rs rename to tests/ui/intrinsics/intrinsic-unreachable.rs diff --git a/src/test/ui/intrinsics/intrinsic-volatile.rs b/tests/ui/intrinsics/intrinsic-volatile.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsic-volatile.rs rename to tests/ui/intrinsics/intrinsic-volatile.rs diff --git a/src/test/ui/intrinsics/intrinsics-integer.rs b/tests/ui/intrinsics/intrinsics-integer.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsics-integer.rs rename to tests/ui/intrinsics/intrinsics-integer.rs diff --git a/src/test/ui/intrinsics/intrinsics-math.rs b/tests/ui/intrinsics/intrinsics-math.rs similarity index 100% rename from src/test/ui/intrinsics/intrinsics-math.rs rename to tests/ui/intrinsics/intrinsics-math.rs diff --git a/src/test/ui/intrinsics/issue-28575.mir.stderr b/tests/ui/intrinsics/issue-28575.mir.stderr similarity index 100% rename from src/test/ui/intrinsics/issue-28575.mir.stderr rename to tests/ui/intrinsics/issue-28575.mir.stderr diff --git a/src/test/ui/intrinsics/issue-28575.rs b/tests/ui/intrinsics/issue-28575.rs similarity index 100% rename from src/test/ui/intrinsics/issue-28575.rs rename to tests/ui/intrinsics/issue-28575.rs diff --git a/src/test/ui/intrinsics/issue-28575.thir.stderr b/tests/ui/intrinsics/issue-28575.thir.stderr similarity index 100% rename from src/test/ui/intrinsics/issue-28575.thir.stderr rename to tests/ui/intrinsics/issue-28575.thir.stderr diff --git a/src/test/ui/intrinsics/issue-84297-reifying-copy.rs b/tests/ui/intrinsics/issue-84297-reifying-copy.rs similarity index 100% rename from src/test/ui/intrinsics/issue-84297-reifying-copy.rs rename to tests/ui/intrinsics/issue-84297-reifying-copy.rs diff --git a/src/test/ui/intrinsics/non-integer-atomic.rs b/tests/ui/intrinsics/non-integer-atomic.rs similarity index 100% rename from src/test/ui/intrinsics/non-integer-atomic.rs rename to tests/ui/intrinsics/non-integer-atomic.rs diff --git a/src/test/ui/intrinsics/non-integer-atomic.stderr b/tests/ui/intrinsics/non-integer-atomic.stderr similarity index 100% rename from src/test/ui/intrinsics/non-integer-atomic.stderr rename to tests/ui/intrinsics/non-integer-atomic.stderr diff --git a/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs b/tests/ui/intrinsics/panic-uninitialized-zeroed.rs similarity index 100% rename from src/test/ui/intrinsics/panic-uninitialized-zeroed.rs rename to tests/ui/intrinsics/panic-uninitialized-zeroed.rs diff --git a/src/test/ui/intrinsics/safe-intrinsic-mismatch.rs b/tests/ui/intrinsics/safe-intrinsic-mismatch.rs similarity index 100% rename from src/test/ui/intrinsics/safe-intrinsic-mismatch.rs rename to tests/ui/intrinsics/safe-intrinsic-mismatch.rs diff --git a/src/test/ui/intrinsics/safe-intrinsic-mismatch.stderr b/tests/ui/intrinsics/safe-intrinsic-mismatch.stderr similarity index 100% rename from src/test/ui/intrinsics/safe-intrinsic-mismatch.stderr rename to tests/ui/intrinsics/safe-intrinsic-mismatch.stderr diff --git a/src/test/ui/intrinsics/unchecked_math_unsafe.mir.stderr b/tests/ui/intrinsics/unchecked_math_unsafe.mir.stderr similarity index 100% rename from src/test/ui/intrinsics/unchecked_math_unsafe.mir.stderr rename to tests/ui/intrinsics/unchecked_math_unsafe.mir.stderr diff --git a/src/test/ui/intrinsics/unchecked_math_unsafe.rs b/tests/ui/intrinsics/unchecked_math_unsafe.rs similarity index 100% rename from src/test/ui/intrinsics/unchecked_math_unsafe.rs rename to tests/ui/intrinsics/unchecked_math_unsafe.rs diff --git a/src/test/ui/intrinsics/unchecked_math_unsafe.thir.stderr b/tests/ui/intrinsics/unchecked_math_unsafe.thir.stderr similarity index 100% rename from src/test/ui/intrinsics/unchecked_math_unsafe.thir.stderr rename to tests/ui/intrinsics/unchecked_math_unsafe.thir.stderr diff --git a/src/test/ui/intrinsics/unchecked_math_unstable.rs b/tests/ui/intrinsics/unchecked_math_unstable.rs similarity index 100% rename from src/test/ui/intrinsics/unchecked_math_unstable.rs rename to tests/ui/intrinsics/unchecked_math_unstable.rs diff --git a/src/test/ui/intrinsics/unchecked_math_unstable.stderr b/tests/ui/intrinsics/unchecked_math_unstable.stderr similarity index 100% rename from src/test/ui/intrinsics/unchecked_math_unstable.stderr rename to tests/ui/intrinsics/unchecked_math_unstable.stderr diff --git a/src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADFLAGS.stderr b/tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADFLAGS.stderr similarity index 100% rename from src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADFLAGS.stderr rename to tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADFLAGS.stderr diff --git a/src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADTARGET.stderr b/tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADTARGET.stderr similarity index 100% rename from src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADTARGET.stderr rename to tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.BADTARGET.stderr diff --git a/src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.rs b/tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.rs similarity index 100% rename from src/test/ui/invalid-compile-flags/branch-protection-missing-pac-ret.rs rename to tests/ui/invalid-compile-flags/branch-protection-missing-pac-ret.rs diff --git a/src/test/ui/invalid-compile-flags/codegen-option-without-group.rs b/tests/ui/invalid-compile-flags/codegen-option-without-group.rs similarity index 100% rename from src/test/ui/invalid-compile-flags/codegen-option-without-group.rs rename to tests/ui/invalid-compile-flags/codegen-option-without-group.rs diff --git a/src/test/ui/invalid-compile-flags/codegen-option-without-group.stderr b/tests/ui/invalid-compile-flags/codegen-option-without-group.stderr similarity index 100% rename from src/test/ui/invalid-compile-flags/codegen-option-without-group.stderr rename to tests/ui/invalid-compile-flags/codegen-option-without-group.stderr diff --git a/src/test/ui/invalid-compile-flags/debug-option-without-group.rs b/tests/ui/invalid-compile-flags/debug-option-without-group.rs similarity index 100% rename from src/test/ui/invalid-compile-flags/debug-option-without-group.rs rename to tests/ui/invalid-compile-flags/debug-option-without-group.rs diff --git a/src/test/ui/invalid-compile-flags/debug-option-without-group.stderr b/tests/ui/invalid-compile-flags/debug-option-without-group.stderr similarity index 100% rename from src/test/ui/invalid-compile-flags/debug-option-without-group.stderr rename to tests/ui/invalid-compile-flags/debug-option-without-group.stderr diff --git a/src/test/ui/invalid-module-declaration/auxiliary/foo/bar.rs b/tests/ui/invalid-module-declaration/auxiliary/foo/bar.rs similarity index 100% rename from src/test/ui/invalid-module-declaration/auxiliary/foo/bar.rs rename to tests/ui/invalid-module-declaration/auxiliary/foo/bar.rs diff --git a/src/test/ui/invalid-module-declaration/auxiliary/foo/mod.rs b/tests/ui/invalid-module-declaration/auxiliary/foo/mod.rs similarity index 100% rename from src/test/ui/invalid-module-declaration/auxiliary/foo/mod.rs rename to tests/ui/invalid-module-declaration/auxiliary/foo/mod.rs diff --git a/src/test/ui/invalid-module-declaration/invalid-module-declaration.rs b/tests/ui/invalid-module-declaration/invalid-module-declaration.rs similarity index 100% rename from src/test/ui/invalid-module-declaration/invalid-module-declaration.rs rename to tests/ui/invalid-module-declaration/invalid-module-declaration.rs diff --git a/src/test/ui/invalid-module-declaration/invalid-module-declaration.stderr b/tests/ui/invalid-module-declaration/invalid-module-declaration.stderr similarity index 100% rename from src/test/ui/invalid-module-declaration/invalid-module-declaration.stderr rename to tests/ui/invalid-module-declaration/invalid-module-declaration.stderr diff --git a/src/test/ui/invalid-self-argument/bare-fn-start.rs b/tests/ui/invalid-self-argument/bare-fn-start.rs similarity index 100% rename from src/test/ui/invalid-self-argument/bare-fn-start.rs rename to tests/ui/invalid-self-argument/bare-fn-start.rs diff --git a/src/test/ui/invalid-self-argument/bare-fn-start.stderr b/tests/ui/invalid-self-argument/bare-fn-start.stderr similarity index 100% rename from src/test/ui/invalid-self-argument/bare-fn-start.stderr rename to tests/ui/invalid-self-argument/bare-fn-start.stderr diff --git a/src/test/ui/invalid-self-argument/bare-fn.rs b/tests/ui/invalid-self-argument/bare-fn.rs similarity index 100% rename from src/test/ui/invalid-self-argument/bare-fn.rs rename to tests/ui/invalid-self-argument/bare-fn.rs diff --git a/src/test/ui/invalid-self-argument/bare-fn.stderr b/tests/ui/invalid-self-argument/bare-fn.stderr similarity index 100% rename from src/test/ui/invalid-self-argument/bare-fn.stderr rename to tests/ui/invalid-self-argument/bare-fn.stderr diff --git a/src/test/ui/invalid-self-argument/trait-fn.rs b/tests/ui/invalid-self-argument/trait-fn.rs similarity index 100% rename from src/test/ui/invalid-self-argument/trait-fn.rs rename to tests/ui/invalid-self-argument/trait-fn.rs diff --git a/src/test/ui/invalid-self-argument/trait-fn.stderr b/tests/ui/invalid-self-argument/trait-fn.stderr similarity index 100% rename from src/test/ui/invalid-self-argument/trait-fn.stderr rename to tests/ui/invalid-self-argument/trait-fn.stderr diff --git a/src/test/ui/invalid/invalid-crate-type-macro.rs b/tests/ui/invalid/invalid-crate-type-macro.rs similarity index 100% rename from src/test/ui/invalid/invalid-crate-type-macro.rs rename to tests/ui/invalid/invalid-crate-type-macro.rs diff --git a/src/test/ui/invalid/invalid-crate-type-macro.stderr b/tests/ui/invalid/invalid-crate-type-macro.stderr similarity index 100% rename from src/test/ui/invalid/invalid-crate-type-macro.stderr rename to tests/ui/invalid/invalid-crate-type-macro.stderr diff --git a/src/test/ui/invalid/invalid-crate-type.rs b/tests/ui/invalid/invalid-crate-type.rs similarity index 100% rename from src/test/ui/invalid/invalid-crate-type.rs rename to tests/ui/invalid/invalid-crate-type.rs diff --git a/src/test/ui/invalid/invalid-crate-type.stderr b/tests/ui/invalid/invalid-crate-type.stderr similarity index 100% rename from src/test/ui/invalid/invalid-crate-type.stderr rename to tests/ui/invalid/invalid-crate-type.stderr diff --git a/src/test/ui/invalid/invalid-debugger-visualizer-option.rs b/tests/ui/invalid/invalid-debugger-visualizer-option.rs similarity index 100% rename from src/test/ui/invalid/invalid-debugger-visualizer-option.rs rename to tests/ui/invalid/invalid-debugger-visualizer-option.rs diff --git a/src/test/ui/invalid/invalid-debugger-visualizer-option.stderr b/tests/ui/invalid/invalid-debugger-visualizer-option.stderr similarity index 100% rename from src/test/ui/invalid/invalid-debugger-visualizer-option.stderr rename to tests/ui/invalid/invalid-debugger-visualizer-option.stderr diff --git a/src/test/ui/invalid/invalid-debugger-visualizer-target.rs b/tests/ui/invalid/invalid-debugger-visualizer-target.rs similarity index 100% rename from src/test/ui/invalid/invalid-debugger-visualizer-target.rs rename to tests/ui/invalid/invalid-debugger-visualizer-target.rs diff --git a/src/test/ui/invalid/invalid-debugger-visualizer-target.stderr b/tests/ui/invalid/invalid-debugger-visualizer-target.stderr similarity index 100% rename from src/test/ui/invalid/invalid-debugger-visualizer-target.stderr rename to tests/ui/invalid/invalid-debugger-visualizer-target.stderr diff --git a/src/test/ui/invalid/invalid-inline.rs b/tests/ui/invalid/invalid-inline.rs similarity index 100% rename from src/test/ui/invalid/invalid-inline.rs rename to tests/ui/invalid/invalid-inline.rs diff --git a/src/test/ui/invalid/invalid-inline.stderr b/tests/ui/invalid/invalid-inline.stderr similarity index 100% rename from src/test/ui/invalid/invalid-inline.stderr rename to tests/ui/invalid/invalid-inline.stderr diff --git a/src/test/ui/invalid/invalid-llvm-passes.rs b/tests/ui/invalid/invalid-llvm-passes.rs similarity index 100% rename from src/test/ui/invalid/invalid-llvm-passes.rs rename to tests/ui/invalid/invalid-llvm-passes.rs diff --git a/src/test/ui/invalid/invalid-llvm-passes.stderr b/tests/ui/invalid/invalid-llvm-passes.stderr similarity index 100% rename from src/test/ui/invalid/invalid-llvm-passes.stderr rename to tests/ui/invalid/invalid-llvm-passes.stderr diff --git a/src/test/ui/invalid/invalid-macro-matcher.rs b/tests/ui/invalid/invalid-macro-matcher.rs similarity index 100% rename from src/test/ui/invalid/invalid-macro-matcher.rs rename to tests/ui/invalid/invalid-macro-matcher.rs diff --git a/src/test/ui/invalid/invalid-macro-matcher.stderr b/tests/ui/invalid/invalid-macro-matcher.stderr similarity index 100% rename from src/test/ui/invalid/invalid-macro-matcher.stderr rename to tests/ui/invalid/invalid-macro-matcher.stderr diff --git a/src/test/ui/invalid/invalid-no-sanitize.rs b/tests/ui/invalid/invalid-no-sanitize.rs similarity index 100% rename from src/test/ui/invalid/invalid-no-sanitize.rs rename to tests/ui/invalid/invalid-no-sanitize.rs diff --git a/src/test/ui/invalid/invalid-no-sanitize.stderr b/tests/ui/invalid/invalid-no-sanitize.stderr similarity index 100% rename from src/test/ui/invalid/invalid-no-sanitize.stderr rename to tests/ui/invalid/invalid-no-sanitize.stderr diff --git a/src/test/ui/invalid/invalid-path-in-const.rs b/tests/ui/invalid/invalid-path-in-const.rs similarity index 100% rename from src/test/ui/invalid/invalid-path-in-const.rs rename to tests/ui/invalid/invalid-path-in-const.rs diff --git a/src/test/ui/invalid/invalid-path-in-const.stderr b/tests/ui/invalid/invalid-path-in-const.stderr similarity index 100% rename from src/test/ui/invalid/invalid-path-in-const.stderr rename to tests/ui/invalid/invalid-path-in-const.stderr diff --git a/src/test/ui/invalid/invalid-plugin-attr.rs b/tests/ui/invalid/invalid-plugin-attr.rs similarity index 100% rename from src/test/ui/invalid/invalid-plugin-attr.rs rename to tests/ui/invalid/invalid-plugin-attr.rs diff --git a/src/test/ui/invalid/invalid-plugin-attr.stderr b/tests/ui/invalid/invalid-plugin-attr.stderr similarity index 100% rename from src/test/ui/invalid/invalid-plugin-attr.stderr rename to tests/ui/invalid/invalid-plugin-attr.stderr diff --git a/src/test/ui/invalid/invalid-rustc_legacy_const_generics-arguments.rs b/tests/ui/invalid/invalid-rustc_legacy_const_generics-arguments.rs similarity index 100% rename from src/test/ui/invalid/invalid-rustc_legacy_const_generics-arguments.rs rename to tests/ui/invalid/invalid-rustc_legacy_const_generics-arguments.rs diff --git a/src/test/ui/invalid/invalid-rustc_legacy_const_generics-arguments.stderr b/tests/ui/invalid/invalid-rustc_legacy_const_generics-arguments.stderr similarity index 100% rename from src/test/ui/invalid/invalid-rustc_legacy_const_generics-arguments.stderr rename to tests/ui/invalid/invalid-rustc_legacy_const_generics-arguments.stderr diff --git a/src/test/ui/invalid/invalid_rustc_layout_scalar_valid_range.rs b/tests/ui/invalid/invalid_rustc_layout_scalar_valid_range.rs similarity index 100% rename from src/test/ui/invalid/invalid_rustc_layout_scalar_valid_range.rs rename to tests/ui/invalid/invalid_rustc_layout_scalar_valid_range.rs diff --git a/src/test/ui/invalid/invalid_rustc_layout_scalar_valid_range.stderr b/tests/ui/invalid/invalid_rustc_layout_scalar_valid_range.stderr similarity index 100% rename from src/test/ui/invalid/invalid_rustc_layout_scalar_valid_range.stderr rename to tests/ui/invalid/invalid_rustc_layout_scalar_valid_range.stderr diff --git a/src/test/ui/invalid_crate_type_syntax.rs b/tests/ui/invalid_crate_type_syntax.rs similarity index 100% rename from src/test/ui/invalid_crate_type_syntax.rs rename to tests/ui/invalid_crate_type_syntax.rs diff --git a/src/test/ui/invalid_crate_type_syntax.stderr b/tests/ui/invalid_crate_type_syntax.stderr similarity index 100% rename from src/test/ui/invalid_crate_type_syntax.stderr rename to tests/ui/invalid_crate_type_syntax.stderr diff --git a/src/test/ui/invalid_dispatch_from_dyn_impls.rs b/tests/ui/invalid_dispatch_from_dyn_impls.rs similarity index 100% rename from src/test/ui/invalid_dispatch_from_dyn_impls.rs rename to tests/ui/invalid_dispatch_from_dyn_impls.rs diff --git a/src/test/ui/invalid_dispatch_from_dyn_impls.stderr b/tests/ui/invalid_dispatch_from_dyn_impls.stderr similarity index 100% rename from src/test/ui/invalid_dispatch_from_dyn_impls.stderr rename to tests/ui/invalid_dispatch_from_dyn_impls.stderr diff --git a/src/test/ui/issue-76387-llvm-miscompile.rs b/tests/ui/issue-76387-llvm-miscompile.rs similarity index 100% rename from src/test/ui/issue-76387-llvm-miscompile.rs rename to tests/ui/issue-76387-llvm-miscompile.rs diff --git a/src/test/ui/issue-94866.rs b/tests/ui/issue-94866.rs similarity index 100% rename from src/test/ui/issue-94866.rs rename to tests/ui/issue-94866.rs diff --git a/src/test/ui/issue-94866.stderr b/tests/ui/issue-94866.stderr similarity index 100% rename from src/test/ui/issue-94866.stderr rename to tests/ui/issue-94866.stderr diff --git a/src/test/ui/issues-71798.rs b/tests/ui/issues-71798.rs similarity index 100% rename from src/test/ui/issues-71798.rs rename to tests/ui/issues-71798.rs diff --git a/src/test/ui/issues-71798.stderr b/tests/ui/issues-71798.stderr similarity index 100% rename from src/test/ui/issues-71798.stderr rename to tests/ui/issues-71798.stderr diff --git a/src/test/ui/issues/.gitattributes b/tests/ui/issues/.gitattributes similarity index 100% rename from src/test/ui/issues/.gitattributes rename to tests/ui/issues/.gitattributes diff --git a/src/test/ui/issues/auxiliary/cgu_test.rs b/tests/ui/issues/auxiliary/cgu_test.rs similarity index 100% rename from src/test/ui/issues/auxiliary/cgu_test.rs rename to tests/ui/issues/auxiliary/cgu_test.rs diff --git a/src/test/ui/issues/auxiliary/cgu_test_a.rs b/tests/ui/issues/auxiliary/cgu_test_a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/cgu_test_a.rs rename to tests/ui/issues/auxiliary/cgu_test_a.rs diff --git a/src/test/ui/issues/auxiliary/cgu_test_b.rs b/tests/ui/issues/auxiliary/cgu_test_b.rs similarity index 100% rename from src/test/ui/issues/auxiliary/cgu_test_b.rs rename to tests/ui/issues/auxiliary/cgu_test_b.rs diff --git a/src/test/ui/issues/auxiliary/i8.rs b/tests/ui/issues/auxiliary/i8.rs similarity index 100% rename from src/test/ui/issues/auxiliary/i8.rs rename to tests/ui/issues/auxiliary/i8.rs diff --git a/src/test/ui/issues/auxiliary/iss.rs b/tests/ui/issues/auxiliary/iss.rs similarity index 100% rename from src/test/ui/issues/auxiliary/iss.rs rename to tests/ui/issues/auxiliary/iss.rs diff --git a/src/test/ui/issues/auxiliary/issue-11224.rs b/tests/ui/issues/auxiliary/issue-11224.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-11224.rs rename to tests/ui/issues/auxiliary/issue-11224.rs diff --git a/src/test/ui/issues/auxiliary/issue-11508.rs b/tests/ui/issues/auxiliary/issue-11508.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-11508.rs rename to tests/ui/issues/auxiliary/issue-11508.rs diff --git a/src/test/ui/issues/auxiliary/issue-11529.rs b/tests/ui/issues/auxiliary/issue-11529.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-11529.rs rename to tests/ui/issues/auxiliary/issue-11529.rs diff --git a/src/test/ui/issues/auxiliary/issue-11680.rs b/tests/ui/issues/auxiliary/issue-11680.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-11680.rs rename to tests/ui/issues/auxiliary/issue-11680.rs diff --git a/src/test/ui/issues/auxiliary/issue-12133-dylib.rs b/tests/ui/issues/auxiliary/issue-12133-dylib.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12133-dylib.rs rename to tests/ui/issues/auxiliary/issue-12133-dylib.rs diff --git a/src/test/ui/issues/auxiliary/issue-12133-dylib2.rs b/tests/ui/issues/auxiliary/issue-12133-dylib2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12133-dylib2.rs rename to tests/ui/issues/auxiliary/issue-12133-dylib2.rs diff --git a/src/test/ui/issues/auxiliary/issue-12133-rlib.rs b/tests/ui/issues/auxiliary/issue-12133-rlib.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12133-rlib.rs rename to tests/ui/issues/auxiliary/issue-12133-rlib.rs diff --git a/src/test/ui/issues/auxiliary/issue-12612-1.rs b/tests/ui/issues/auxiliary/issue-12612-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12612-1.rs rename to tests/ui/issues/auxiliary/issue-12612-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-12612-2.rs b/tests/ui/issues/auxiliary/issue-12612-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12612-2.rs rename to tests/ui/issues/auxiliary/issue-12612-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-12660-aux.rs b/tests/ui/issues/auxiliary/issue-12660-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-12660-aux.rs rename to tests/ui/issues/auxiliary/issue-12660-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-13507.rs b/tests/ui/issues/auxiliary/issue-13507.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13507.rs rename to tests/ui/issues/auxiliary/issue-13507.rs diff --git a/src/test/ui/issues/auxiliary/issue-13620-1.rs b/tests/ui/issues/auxiliary/issue-13620-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13620-1.rs rename to tests/ui/issues/auxiliary/issue-13620-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-13620-2.rs b/tests/ui/issues/auxiliary/issue-13620-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13620-2.rs rename to tests/ui/issues/auxiliary/issue-13620-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-13872-1.rs b/tests/ui/issues/auxiliary/issue-13872-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13872-1.rs rename to tests/ui/issues/auxiliary/issue-13872-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-13872-2.rs b/tests/ui/issues/auxiliary/issue-13872-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13872-2.rs rename to tests/ui/issues/auxiliary/issue-13872-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-13872-3.rs b/tests/ui/issues/auxiliary/issue-13872-3.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-13872-3.rs rename to tests/ui/issues/auxiliary/issue-13872-3.rs diff --git a/src/test/ui/issues/auxiliary/issue-14344-1.rs b/tests/ui/issues/auxiliary/issue-14344-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-14344-1.rs rename to tests/ui/issues/auxiliary/issue-14344-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-14344-2.rs b/tests/ui/issues/auxiliary/issue-14344-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-14344-2.rs rename to tests/ui/issues/auxiliary/issue-14344-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-14421.rs b/tests/ui/issues/auxiliary/issue-14421.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-14421.rs rename to tests/ui/issues/auxiliary/issue-14421.rs diff --git a/src/test/ui/issues/auxiliary/issue-14422.rs b/tests/ui/issues/auxiliary/issue-14422.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-14422.rs rename to tests/ui/issues/auxiliary/issue-14422.rs diff --git a/src/test/ui/issues/auxiliary/issue-15562.rs b/tests/ui/issues/auxiliary/issue-15562.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-15562.rs rename to tests/ui/issues/auxiliary/issue-15562.rs diff --git a/src/test/ui/issues/auxiliary/issue-16643.rs b/tests/ui/issues/auxiliary/issue-16643.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-16643.rs rename to tests/ui/issues/auxiliary/issue-16643.rs diff --git a/src/test/ui/issues/auxiliary/issue-16725.rs b/tests/ui/issues/auxiliary/issue-16725.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-16725.rs rename to tests/ui/issues/auxiliary/issue-16725.rs diff --git a/src/test/ui/issues/auxiliary/issue-17662.rs b/tests/ui/issues/auxiliary/issue-17662.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-17662.rs rename to tests/ui/issues/auxiliary/issue-17662.rs diff --git a/src/test/ui/issues/auxiliary/issue-18501.rs b/tests/ui/issues/auxiliary/issue-18501.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-18501.rs rename to tests/ui/issues/auxiliary/issue-18501.rs diff --git a/src/test/ui/issues/auxiliary/issue-18514.rs b/tests/ui/issues/auxiliary/issue-18514.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-18514.rs rename to tests/ui/issues/auxiliary/issue-18514.rs diff --git a/src/test/ui/issues/auxiliary/issue-18711.rs b/tests/ui/issues/auxiliary/issue-18711.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-18711.rs rename to tests/ui/issues/auxiliary/issue-18711.rs diff --git a/src/test/ui/issues/auxiliary/issue-18913-1.rs b/tests/ui/issues/auxiliary/issue-18913-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-18913-1.rs rename to tests/ui/issues/auxiliary/issue-18913-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-18913-2.rs b/tests/ui/issues/auxiliary/issue-18913-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-18913-2.rs rename to tests/ui/issues/auxiliary/issue-18913-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-1920.rs b/tests/ui/issues/auxiliary/issue-1920.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-1920.rs rename to tests/ui/issues/auxiliary/issue-1920.rs diff --git a/src/test/ui/issues/auxiliary/issue-19293.rs b/tests/ui/issues/auxiliary/issue-19293.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-19293.rs rename to tests/ui/issues/auxiliary/issue-19293.rs diff --git a/src/test/ui/issues/auxiliary/issue-19340-1.rs b/tests/ui/issues/auxiliary/issue-19340-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-19340-1.rs rename to tests/ui/issues/auxiliary/issue-19340-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-20389.rs b/tests/ui/issues/auxiliary/issue-20389.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-20389.rs rename to tests/ui/issues/auxiliary/issue-20389.rs diff --git a/src/test/ui/issues/auxiliary/issue-21202.rs b/tests/ui/issues/auxiliary/issue-21202.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-21202.rs rename to tests/ui/issues/auxiliary/issue-21202.rs diff --git a/src/test/ui/issues/auxiliary/issue-2170-lib.rs b/tests/ui/issues/auxiliary/issue-2170-lib.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2170-lib.rs rename to tests/ui/issues/auxiliary/issue-2170-lib.rs diff --git a/src/test/ui/issues/auxiliary/issue-2316-a.rs b/tests/ui/issues/auxiliary/issue-2316-a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2316-a.rs rename to tests/ui/issues/auxiliary/issue-2316-a.rs diff --git a/src/test/ui/issues/auxiliary/issue-2316-b.rs b/tests/ui/issues/auxiliary/issue-2316-b.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2316-b.rs rename to tests/ui/issues/auxiliary/issue-2316-b.rs diff --git a/src/test/ui/issues/auxiliary/issue-2380.rs b/tests/ui/issues/auxiliary/issue-2380.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2380.rs rename to tests/ui/issues/auxiliary/issue-2380.rs diff --git a/src/test/ui/issues/auxiliary/issue-2414-a.rs b/tests/ui/issues/auxiliary/issue-2414-a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2414-a.rs rename to tests/ui/issues/auxiliary/issue-2414-a.rs diff --git a/src/test/ui/issues/auxiliary/issue-2414-b.rs b/tests/ui/issues/auxiliary/issue-2414-b.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2414-b.rs rename to tests/ui/issues/auxiliary/issue-2414-b.rs diff --git a/src/test/ui/issues/auxiliary/issue-2472-b.rs b/tests/ui/issues/auxiliary/issue-2472-b.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2472-b.rs rename to tests/ui/issues/auxiliary/issue-2472-b.rs diff --git a/src/test/ui/issues/auxiliary/issue-25185-1.rs b/tests/ui/issues/auxiliary/issue-25185-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-25185-1.rs rename to tests/ui/issues/auxiliary/issue-25185-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-25185-2.rs b/tests/ui/issues/auxiliary/issue-25185-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-25185-2.rs rename to tests/ui/issues/auxiliary/issue-25185-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-2526.rs b/tests/ui/issues/auxiliary/issue-2526.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2526.rs rename to tests/ui/issues/auxiliary/issue-2526.rs diff --git a/src/test/ui/issues/auxiliary/issue-25467.rs b/tests/ui/issues/auxiliary/issue-25467.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-25467.rs rename to tests/ui/issues/auxiliary/issue-25467.rs diff --git a/src/test/ui/issues/auxiliary/issue-2631-a.rs b/tests/ui/issues/auxiliary/issue-2631-a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2631-a.rs rename to tests/ui/issues/auxiliary/issue-2631-a.rs diff --git a/src/test/ui/issues/auxiliary/issue-2723-a.rs b/tests/ui/issues/auxiliary/issue-2723-a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-2723-a.rs rename to tests/ui/issues/auxiliary/issue-2723-a.rs diff --git a/src/test/ui/issues/auxiliary/issue-29181.rs b/tests/ui/issues/auxiliary/issue-29181.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-29181.rs rename to tests/ui/issues/auxiliary/issue-29181.rs diff --git a/src/test/ui/issues/auxiliary/issue-29265.rs b/tests/ui/issues/auxiliary/issue-29265.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-29265.rs rename to tests/ui/issues/auxiliary/issue-29265.rs diff --git a/src/test/ui/issues/auxiliary/issue-29485.rs b/tests/ui/issues/auxiliary/issue-29485.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-29485.rs rename to tests/ui/issues/auxiliary/issue-29485.rs diff --git a/src/test/ui/issues/auxiliary/issue-3012-1.rs b/tests/ui/issues/auxiliary/issue-3012-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-3012-1.rs rename to tests/ui/issues/auxiliary/issue-3012-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-30123-aux.rs b/tests/ui/issues/auxiliary/issue-30123-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-30123-aux.rs rename to tests/ui/issues/auxiliary/issue-30123-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-3136-a.rc b/tests/ui/issues/auxiliary/issue-3136-a.rc similarity index 100% rename from src/test/ui/issues/auxiliary/issue-3136-a.rc rename to tests/ui/issues/auxiliary/issue-3136-a.rc diff --git a/src/test/ui/issues/auxiliary/issue-3136-a.rs b/tests/ui/issues/auxiliary/issue-3136-a.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-3136-a.rs rename to tests/ui/issues/auxiliary/issue-3136-a.rs diff --git a/src/test/ui/issues/auxiliary/issue-31702-1.rs b/tests/ui/issues/auxiliary/issue-31702-1.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-31702-1.rs rename to tests/ui/issues/auxiliary/issue-31702-1.rs diff --git a/src/test/ui/issues/auxiliary/issue-31702-2.rs b/tests/ui/issues/auxiliary/issue-31702-2.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-31702-2.rs rename to tests/ui/issues/auxiliary/issue-31702-2.rs diff --git a/src/test/ui/issues/auxiliary/issue-34796-aux.rs b/tests/ui/issues/auxiliary/issue-34796-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-34796-aux.rs rename to tests/ui/issues/auxiliary/issue-34796-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-36954.rs b/tests/ui/issues/auxiliary/issue-36954.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-36954.rs rename to tests/ui/issues/auxiliary/issue-36954.rs diff --git a/src/test/ui/issues/auxiliary/issue-38190.rs b/tests/ui/issues/auxiliary/issue-38190.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-38190.rs rename to tests/ui/issues/auxiliary/issue-38190.rs diff --git a/src/test/ui/issues/auxiliary/issue-38226-aux.rs b/tests/ui/issues/auxiliary/issue-38226-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-38226-aux.rs rename to tests/ui/issues/auxiliary/issue-38226-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-3979-traits.rs b/tests/ui/issues/auxiliary/issue-3979-traits.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-3979-traits.rs rename to tests/ui/issues/auxiliary/issue-3979-traits.rs diff --git a/src/test/ui/issues/auxiliary/issue-41053.rs b/tests/ui/issues/auxiliary/issue-41053.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-41053.rs rename to tests/ui/issues/auxiliary/issue-41053.rs diff --git a/src/test/ui/issues/auxiliary/issue-41394.rs b/tests/ui/issues/auxiliary/issue-41394.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-41394.rs rename to tests/ui/issues/auxiliary/issue-41394.rs diff --git a/src/test/ui/issues/auxiliary/issue-41549.rs b/tests/ui/issues/auxiliary/issue-41549.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-41549.rs rename to tests/ui/issues/auxiliary/issue-41549.rs diff --git a/src/test/ui/issues/auxiliary/issue-42007-s.rs b/tests/ui/issues/auxiliary/issue-42007-s.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-42007-s.rs rename to tests/ui/issues/auxiliary/issue-42007-s.rs diff --git a/src/test/ui/issues/auxiliary/issue-4208-cc.rs b/tests/ui/issues/auxiliary/issue-4208-cc.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-4208-cc.rs rename to tests/ui/issues/auxiliary/issue-4208-cc.rs diff --git a/src/test/ui/issues/auxiliary/issue-4545.rs b/tests/ui/issues/auxiliary/issue-4545.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-4545.rs rename to tests/ui/issues/auxiliary/issue-4545.rs diff --git a/src/test/ui/issues/auxiliary/issue-48984-aux.rs b/tests/ui/issues/auxiliary/issue-48984-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-48984-aux.rs rename to tests/ui/issues/auxiliary/issue-48984-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-49544.rs b/tests/ui/issues/auxiliary/issue-49544.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-49544.rs rename to tests/ui/issues/auxiliary/issue-49544.rs diff --git a/src/test/ui/issues/auxiliary/issue-51798.rs b/tests/ui/issues/auxiliary/issue-51798.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-51798.rs rename to tests/ui/issues/auxiliary/issue-51798.rs diff --git a/src/test/ui/issues/auxiliary/issue-52489.rs b/tests/ui/issues/auxiliary/issue-52489.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-52489.rs rename to tests/ui/issues/auxiliary/issue-52489.rs diff --git a/src/test/ui/issues/auxiliary/issue-5518.rs b/tests/ui/issues/auxiliary/issue-5518.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-5518.rs rename to tests/ui/issues/auxiliary/issue-5518.rs diff --git a/src/test/ui/issues/auxiliary/issue-5521.rs b/tests/ui/issues/auxiliary/issue-5521.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-5521.rs rename to tests/ui/issues/auxiliary/issue-5521.rs diff --git a/src/test/ui/issues/auxiliary/issue-56943.rs b/tests/ui/issues/auxiliary/issue-56943.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-56943.rs rename to tests/ui/issues/auxiliary/issue-56943.rs diff --git a/src/test/ui/issues/auxiliary/issue-57271-lib.rs b/tests/ui/issues/auxiliary/issue-57271-lib.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-57271-lib.rs rename to tests/ui/issues/auxiliary/issue-57271-lib.rs diff --git a/src/test/ui/issues/auxiliary/issue-5844-aux.rs b/tests/ui/issues/auxiliary/issue-5844-aux.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-5844-aux.rs rename to tests/ui/issues/auxiliary/issue-5844-aux.rs diff --git a/src/test/ui/issues/auxiliary/issue-7178.rs b/tests/ui/issues/auxiliary/issue-7178.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-7178.rs rename to tests/ui/issues/auxiliary/issue-7178.rs diff --git a/src/test/ui/issues/auxiliary/issue-73112.rs b/tests/ui/issues/auxiliary/issue-73112.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-73112.rs rename to tests/ui/issues/auxiliary/issue-73112.rs diff --git a/src/test/ui/issues/auxiliary/issue-7899.rs b/tests/ui/issues/auxiliary/issue-7899.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-7899.rs rename to tests/ui/issues/auxiliary/issue-7899.rs diff --git a/src/test/ui/issues/auxiliary/issue-8044.rs b/tests/ui/issues/auxiliary/issue-8044.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-8044.rs rename to tests/ui/issues/auxiliary/issue-8044.rs diff --git a/src/test/ui/issues/auxiliary/issue-8259.rs b/tests/ui/issues/auxiliary/issue-8259.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-8259.rs rename to tests/ui/issues/auxiliary/issue-8259.rs diff --git a/src/test/ui/issues/auxiliary/issue-8401.rs b/tests/ui/issues/auxiliary/issue-8401.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-8401.rs rename to tests/ui/issues/auxiliary/issue-8401.rs diff --git a/src/test/ui/issues/auxiliary/issue-9123.rs b/tests/ui/issues/auxiliary/issue-9123.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-9123.rs rename to tests/ui/issues/auxiliary/issue-9123.rs diff --git a/src/test/ui/issues/auxiliary/issue-9155.rs b/tests/ui/issues/auxiliary/issue-9155.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-9155.rs rename to tests/ui/issues/auxiliary/issue-9155.rs diff --git a/src/test/ui/issues/auxiliary/issue-9188.rs b/tests/ui/issues/auxiliary/issue-9188.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-9188.rs rename to tests/ui/issues/auxiliary/issue-9188.rs diff --git a/src/test/ui/issues/auxiliary/issue-9906.rs b/tests/ui/issues/auxiliary/issue-9906.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-9906.rs rename to tests/ui/issues/auxiliary/issue-9906.rs diff --git a/src/test/ui/issues/auxiliary/issue-9968.rs b/tests/ui/issues/auxiliary/issue-9968.rs similarity index 100% rename from src/test/ui/issues/auxiliary/issue-9968.rs rename to tests/ui/issues/auxiliary/issue-9968.rs diff --git a/src/test/ui/issues/auxiliary/private-trait-xc.rs b/tests/ui/issues/auxiliary/private-trait-xc.rs similarity index 100% rename from src/test/ui/issues/auxiliary/private-trait-xc.rs rename to tests/ui/issues/auxiliary/private-trait-xc.rs diff --git a/src/test/ui/issues/auxiliary/reexported-trait.rs b/tests/ui/issues/auxiliary/reexported-trait.rs similarity index 100% rename from src/test/ui/issues/auxiliary/reexported-trait.rs rename to tests/ui/issues/auxiliary/reexported-trait.rs diff --git a/src/test/ui/issues/issue-100605.rs b/tests/ui/issues/issue-100605.rs similarity index 100% rename from src/test/ui/issues/issue-100605.rs rename to tests/ui/issues/issue-100605.rs diff --git a/src/test/ui/issues/issue-100605.stderr b/tests/ui/issues/issue-100605.stderr similarity index 100% rename from src/test/ui/issues/issue-100605.stderr rename to tests/ui/issues/issue-100605.stderr diff --git a/src/test/ui/issues/issue-10228.rs b/tests/ui/issues/issue-10228.rs similarity index 100% rename from src/test/ui/issues/issue-10228.rs rename to tests/ui/issues/issue-10228.rs diff --git a/src/test/ui/issues/issue-10291.rs b/tests/ui/issues/issue-10291.rs similarity index 100% rename from src/test/ui/issues/issue-10291.rs rename to tests/ui/issues/issue-10291.rs diff --git a/src/test/ui/issues/issue-10291.stderr b/tests/ui/issues/issue-10291.stderr similarity index 100% rename from src/test/ui/issues/issue-10291.stderr rename to tests/ui/issues/issue-10291.stderr diff --git a/src/test/ui/issues/issue-102964.rs b/tests/ui/issues/issue-102964.rs similarity index 100% rename from src/test/ui/issues/issue-102964.rs rename to tests/ui/issues/issue-102964.rs diff --git a/src/test/ui/issues/issue-102964.stderr b/tests/ui/issues/issue-102964.stderr similarity index 100% rename from src/test/ui/issues/issue-102964.stderr rename to tests/ui/issues/issue-102964.stderr diff --git a/src/test/ui/issues/issue-10396.rs b/tests/ui/issues/issue-10396.rs similarity index 100% rename from src/test/ui/issues/issue-10396.rs rename to tests/ui/issues/issue-10396.rs diff --git a/src/test/ui/issues/issue-10412.rs b/tests/ui/issues/issue-10412.rs similarity index 100% rename from src/test/ui/issues/issue-10412.rs rename to tests/ui/issues/issue-10412.rs diff --git a/src/test/ui/issues/issue-10412.stderr b/tests/ui/issues/issue-10412.stderr similarity index 100% rename from src/test/ui/issues/issue-10412.stderr rename to tests/ui/issues/issue-10412.stderr diff --git a/src/test/ui/issues/issue-10436.rs b/tests/ui/issues/issue-10436.rs similarity index 100% rename from src/test/ui/issues/issue-10436.rs rename to tests/ui/issues/issue-10436.rs diff --git a/src/test/ui/issues/issue-10456.rs b/tests/ui/issues/issue-10456.rs similarity index 100% rename from src/test/ui/issues/issue-10456.rs rename to tests/ui/issues/issue-10456.rs diff --git a/src/test/ui/issues/issue-10465.rs b/tests/ui/issues/issue-10465.rs similarity index 100% rename from src/test/ui/issues/issue-10465.rs rename to tests/ui/issues/issue-10465.rs diff --git a/src/test/ui/issues/issue-10465.stderr b/tests/ui/issues/issue-10465.stderr similarity index 100% rename from src/test/ui/issues/issue-10465.stderr rename to tests/ui/issues/issue-10465.stderr diff --git a/src/test/ui/issues/issue-10545.rs b/tests/ui/issues/issue-10545.rs similarity index 100% rename from src/test/ui/issues/issue-10545.rs rename to tests/ui/issues/issue-10545.rs diff --git a/src/test/ui/issues/issue-10545.stderr b/tests/ui/issues/issue-10545.stderr similarity index 100% rename from src/test/ui/issues/issue-10545.stderr rename to tests/ui/issues/issue-10545.stderr diff --git a/src/test/ui/issues/issue-10638.rs b/tests/ui/issues/issue-10638.rs similarity index 100% rename from src/test/ui/issues/issue-10638.rs rename to tests/ui/issues/issue-10638.rs diff --git a/src/test/ui/issues/issue-10656.rs b/tests/ui/issues/issue-10656.rs similarity index 100% rename from src/test/ui/issues/issue-10656.rs rename to tests/ui/issues/issue-10656.rs diff --git a/src/test/ui/issues/issue-10656.stderr b/tests/ui/issues/issue-10656.stderr similarity index 100% rename from src/test/ui/issues/issue-10656.stderr rename to tests/ui/issues/issue-10656.stderr diff --git a/src/test/ui/issues/issue-10682.rs b/tests/ui/issues/issue-10682.rs similarity index 100% rename from src/test/ui/issues/issue-10682.rs rename to tests/ui/issues/issue-10682.rs diff --git a/src/test/ui/issues/issue-10683.rs b/tests/ui/issues/issue-10683.rs similarity index 100% rename from src/test/ui/issues/issue-10683.rs rename to tests/ui/issues/issue-10683.rs diff --git a/src/test/ui/issues/issue-10718.rs b/tests/ui/issues/issue-10718.rs similarity index 100% rename from src/test/ui/issues/issue-10718.rs rename to tests/ui/issues/issue-10718.rs diff --git a/src/test/ui/issues/issue-10734.rs b/tests/ui/issues/issue-10734.rs similarity index 100% rename from src/test/ui/issues/issue-10734.rs rename to tests/ui/issues/issue-10734.rs diff --git a/src/test/ui/issues/issue-10764.rs b/tests/ui/issues/issue-10764.rs similarity index 100% rename from src/test/ui/issues/issue-10764.rs rename to tests/ui/issues/issue-10764.rs diff --git a/src/test/ui/issues/issue-10764.stderr b/tests/ui/issues/issue-10764.stderr similarity index 100% rename from src/test/ui/issues/issue-10764.stderr rename to tests/ui/issues/issue-10764.stderr diff --git a/src/test/ui/issues/issue-10767.rs b/tests/ui/issues/issue-10767.rs similarity index 100% rename from src/test/ui/issues/issue-10767.rs rename to tests/ui/issues/issue-10767.rs diff --git a/src/test/ui/issues/issue-10802.rs b/tests/ui/issues/issue-10802.rs similarity index 100% rename from src/test/ui/issues/issue-10802.rs rename to tests/ui/issues/issue-10802.rs diff --git a/src/test/ui/issues/issue-10806.rs b/tests/ui/issues/issue-10806.rs similarity index 100% rename from src/test/ui/issues/issue-10806.rs rename to tests/ui/issues/issue-10806.rs diff --git a/src/test/ui/issues/issue-10853.rs b/tests/ui/issues/issue-10853.rs similarity index 100% rename from src/test/ui/issues/issue-10853.rs rename to tests/ui/issues/issue-10853.rs diff --git a/src/test/ui/issues/issue-10877.rs b/tests/ui/issues/issue-10877.rs similarity index 100% rename from src/test/ui/issues/issue-10877.rs rename to tests/ui/issues/issue-10877.rs diff --git a/src/test/ui/issues/issue-10877.stderr b/tests/ui/issues/issue-10877.stderr similarity index 100% rename from src/test/ui/issues/issue-10877.stderr rename to tests/ui/issues/issue-10877.stderr diff --git a/src/test/ui/issues/issue-10902.rs b/tests/ui/issues/issue-10902.rs similarity index 100% rename from src/test/ui/issues/issue-10902.rs rename to tests/ui/issues/issue-10902.rs diff --git a/src/test/ui/issues/issue-11004.rs b/tests/ui/issues/issue-11004.rs similarity index 100% rename from src/test/ui/issues/issue-11004.rs rename to tests/ui/issues/issue-11004.rs diff --git a/src/test/ui/issues/issue-11004.stderr b/tests/ui/issues/issue-11004.stderr similarity index 100% rename from src/test/ui/issues/issue-11004.stderr rename to tests/ui/issues/issue-11004.stderr diff --git a/src/test/ui/issues/issue-11047.rs b/tests/ui/issues/issue-11047.rs similarity index 100% rename from src/test/ui/issues/issue-11047.rs rename to tests/ui/issues/issue-11047.rs diff --git a/src/test/ui/issues/issue-11085.rs b/tests/ui/issues/issue-11085.rs similarity index 100% rename from src/test/ui/issues/issue-11085.rs rename to tests/ui/issues/issue-11085.rs diff --git a/src/test/ui/issues/issue-11192.rs b/tests/ui/issues/issue-11192.rs similarity index 100% rename from src/test/ui/issues/issue-11192.rs rename to tests/ui/issues/issue-11192.rs diff --git a/src/test/ui/issues/issue-11192.stderr b/tests/ui/issues/issue-11192.stderr similarity index 100% rename from src/test/ui/issues/issue-11192.stderr rename to tests/ui/issues/issue-11192.stderr diff --git a/src/test/ui/issues/issue-11205.rs b/tests/ui/issues/issue-11205.rs similarity index 100% rename from src/test/ui/issues/issue-11205.rs rename to tests/ui/issues/issue-11205.rs diff --git a/src/test/ui/issues/issue-11224.rs b/tests/ui/issues/issue-11224.rs similarity index 100% rename from src/test/ui/issues/issue-11224.rs rename to tests/ui/issues/issue-11224.rs diff --git a/src/test/ui/issues/issue-11267.rs b/tests/ui/issues/issue-11267.rs similarity index 100% rename from src/test/ui/issues/issue-11267.rs rename to tests/ui/issues/issue-11267.rs diff --git a/src/test/ui/issues/issue-11374.rs b/tests/ui/issues/issue-11374.rs similarity index 100% rename from src/test/ui/issues/issue-11374.rs rename to tests/ui/issues/issue-11374.rs diff --git a/src/test/ui/issues/issue-11374.stderr b/tests/ui/issues/issue-11374.stderr similarity index 100% rename from src/test/ui/issues/issue-11374.stderr rename to tests/ui/issues/issue-11374.stderr diff --git a/src/test/ui/issues/issue-11382.rs b/tests/ui/issues/issue-11382.rs similarity index 100% rename from src/test/ui/issues/issue-11382.rs rename to tests/ui/issues/issue-11382.rs diff --git a/src/test/ui/issues/issue-11384.rs b/tests/ui/issues/issue-11384.rs similarity index 100% rename from src/test/ui/issues/issue-11384.rs rename to tests/ui/issues/issue-11384.rs diff --git a/src/test/ui/issues/issue-11508.rs b/tests/ui/issues/issue-11508.rs similarity index 100% rename from src/test/ui/issues/issue-11508.rs rename to tests/ui/issues/issue-11508.rs diff --git a/src/test/ui/issues/issue-11515.rs b/tests/ui/issues/issue-11515.rs similarity index 100% rename from src/test/ui/issues/issue-11515.rs rename to tests/ui/issues/issue-11515.rs diff --git a/src/test/ui/issues/issue-11515.stderr b/tests/ui/issues/issue-11515.stderr similarity index 100% rename from src/test/ui/issues/issue-11515.stderr rename to tests/ui/issues/issue-11515.stderr diff --git a/src/test/ui/issues/issue-11529.rs b/tests/ui/issues/issue-11529.rs similarity index 100% rename from src/test/ui/issues/issue-11529.rs rename to tests/ui/issues/issue-11529.rs diff --git a/src/test/ui/issues/issue-11552.rs b/tests/ui/issues/issue-11552.rs similarity index 100% rename from src/test/ui/issues/issue-11552.rs rename to tests/ui/issues/issue-11552.rs diff --git a/src/test/ui/issues/issue-11592.rs b/tests/ui/issues/issue-11592.rs similarity index 100% rename from src/test/ui/issues/issue-11592.rs rename to tests/ui/issues/issue-11592.rs diff --git a/src/test/ui/issues/issue-11593.rs b/tests/ui/issues/issue-11593.rs similarity index 100% rename from src/test/ui/issues/issue-11593.rs rename to tests/ui/issues/issue-11593.rs diff --git a/src/test/ui/issues/issue-11593.stderr b/tests/ui/issues/issue-11593.stderr similarity index 100% rename from src/test/ui/issues/issue-11593.stderr rename to tests/ui/issues/issue-11593.stderr diff --git a/src/test/ui/issues/issue-11677.rs b/tests/ui/issues/issue-11677.rs similarity index 100% rename from src/test/ui/issues/issue-11677.rs rename to tests/ui/issues/issue-11677.rs diff --git a/src/test/ui/issues/issue-11680.rs b/tests/ui/issues/issue-11680.rs similarity index 100% rename from src/test/ui/issues/issue-11680.rs rename to tests/ui/issues/issue-11680.rs diff --git a/src/test/ui/issues/issue-11680.stderr b/tests/ui/issues/issue-11680.stderr similarity index 100% rename from src/test/ui/issues/issue-11680.stderr rename to tests/ui/issues/issue-11680.stderr diff --git a/src/test/ui/issues/issue-11681.rs b/tests/ui/issues/issue-11681.rs similarity index 100% rename from src/test/ui/issues/issue-11681.rs rename to tests/ui/issues/issue-11681.rs diff --git a/src/test/ui/issues/issue-11681.stderr b/tests/ui/issues/issue-11681.stderr similarity index 100% rename from src/test/ui/issues/issue-11681.stderr rename to tests/ui/issues/issue-11681.stderr diff --git a/src/test/ui/issues/issue-11692-1.rs b/tests/ui/issues/issue-11692-1.rs similarity index 100% rename from src/test/ui/issues/issue-11692-1.rs rename to tests/ui/issues/issue-11692-1.rs diff --git a/src/test/ui/issues/issue-11692-1.stderr b/tests/ui/issues/issue-11692-1.stderr similarity index 100% rename from src/test/ui/issues/issue-11692-1.stderr rename to tests/ui/issues/issue-11692-1.stderr diff --git a/src/test/ui/issues/issue-11692-2.rs b/tests/ui/issues/issue-11692-2.rs similarity index 100% rename from src/test/ui/issues/issue-11692-2.rs rename to tests/ui/issues/issue-11692-2.rs diff --git a/src/test/ui/issues/issue-11692-2.stderr b/tests/ui/issues/issue-11692-2.stderr similarity index 100% rename from src/test/ui/issues/issue-11692-2.stderr rename to tests/ui/issues/issue-11692-2.stderr diff --git a/src/test/ui/issues/issue-11709.rs b/tests/ui/issues/issue-11709.rs similarity index 100% rename from src/test/ui/issues/issue-11709.rs rename to tests/ui/issues/issue-11709.rs diff --git a/src/test/ui/issues/issue-11740.rs b/tests/ui/issues/issue-11740.rs similarity index 100% rename from src/test/ui/issues/issue-11740.rs rename to tests/ui/issues/issue-11740.rs diff --git a/src/test/ui/issues/issue-11771.rs b/tests/ui/issues/issue-11771.rs similarity index 100% rename from src/test/ui/issues/issue-11771.rs rename to tests/ui/issues/issue-11771.rs diff --git a/src/test/ui/issues/issue-11771.stderr b/tests/ui/issues/issue-11771.stderr similarity index 100% rename from src/test/ui/issues/issue-11771.stderr rename to tests/ui/issues/issue-11771.stderr diff --git a/src/test/ui/issues/issue-11820.rs b/tests/ui/issues/issue-11820.rs similarity index 100% rename from src/test/ui/issues/issue-11820.rs rename to tests/ui/issues/issue-11820.rs diff --git a/src/test/ui/issues/issue-11844.rs b/tests/ui/issues/issue-11844.rs similarity index 100% rename from src/test/ui/issues/issue-11844.rs rename to tests/ui/issues/issue-11844.rs diff --git a/src/test/ui/issues/issue-11844.stderr b/tests/ui/issues/issue-11844.stderr similarity index 100% rename from src/test/ui/issues/issue-11844.stderr rename to tests/ui/issues/issue-11844.stderr diff --git a/src/test/ui/issues/issue-11869.rs b/tests/ui/issues/issue-11869.rs similarity index 100% rename from src/test/ui/issues/issue-11869.rs rename to tests/ui/issues/issue-11869.rs diff --git a/src/test/ui/issues/issue-11873.rs b/tests/ui/issues/issue-11873.rs similarity index 100% rename from src/test/ui/issues/issue-11873.rs rename to tests/ui/issues/issue-11873.rs diff --git a/src/test/ui/issues/issue-11873.stderr b/tests/ui/issues/issue-11873.stderr similarity index 100% rename from src/test/ui/issues/issue-11873.stderr rename to tests/ui/issues/issue-11873.stderr diff --git a/src/test/ui/issues/issue-11958.rs b/tests/ui/issues/issue-11958.rs similarity index 100% rename from src/test/ui/issues/issue-11958.rs rename to tests/ui/issues/issue-11958.rs diff --git a/src/test/ui/issues/issue-11958.stderr b/tests/ui/issues/issue-11958.stderr similarity index 100% rename from src/test/ui/issues/issue-11958.stderr rename to tests/ui/issues/issue-11958.stderr diff --git a/src/test/ui/issues/issue-12028.rs b/tests/ui/issues/issue-12028.rs similarity index 100% rename from src/test/ui/issues/issue-12028.rs rename to tests/ui/issues/issue-12028.rs diff --git a/src/test/ui/issues/issue-12028.stderr b/tests/ui/issues/issue-12028.stderr similarity index 100% rename from src/test/ui/issues/issue-12028.stderr rename to tests/ui/issues/issue-12028.stderr diff --git a/src/test/ui/issues/issue-12033.rs b/tests/ui/issues/issue-12033.rs similarity index 100% rename from src/test/ui/issues/issue-12033.rs rename to tests/ui/issues/issue-12033.rs diff --git a/src/test/ui/issues/issue-12041.rs b/tests/ui/issues/issue-12041.rs similarity index 100% rename from src/test/ui/issues/issue-12041.rs rename to tests/ui/issues/issue-12041.rs diff --git a/src/test/ui/issues/issue-12041.stderr b/tests/ui/issues/issue-12041.stderr similarity index 100% rename from src/test/ui/issues/issue-12041.stderr rename to tests/ui/issues/issue-12041.stderr diff --git a/src/test/ui/issues/issue-12127.rs b/tests/ui/issues/issue-12127.rs similarity index 100% rename from src/test/ui/issues/issue-12127.rs rename to tests/ui/issues/issue-12127.rs diff --git a/src/test/ui/issues/issue-12127.stderr b/tests/ui/issues/issue-12127.stderr similarity index 100% rename from src/test/ui/issues/issue-12127.stderr rename to tests/ui/issues/issue-12127.stderr diff --git a/src/test/ui/issues/issue-12133-1.rs b/tests/ui/issues/issue-12133-1.rs similarity index 100% rename from src/test/ui/issues/issue-12133-1.rs rename to tests/ui/issues/issue-12133-1.rs diff --git a/src/test/ui/issues/issue-12133-2.rs b/tests/ui/issues/issue-12133-2.rs similarity index 100% rename from src/test/ui/issues/issue-12133-2.rs rename to tests/ui/issues/issue-12133-2.rs diff --git a/src/test/ui/issues/issue-12133-3.rs b/tests/ui/issues/issue-12133-3.rs similarity index 100% rename from src/test/ui/issues/issue-12133-3.rs rename to tests/ui/issues/issue-12133-3.rs diff --git a/src/test/ui/issues/issue-12187-1.rs b/tests/ui/issues/issue-12187-1.rs similarity index 100% rename from src/test/ui/issues/issue-12187-1.rs rename to tests/ui/issues/issue-12187-1.rs diff --git a/src/test/ui/issues/issue-12187-1.stderr b/tests/ui/issues/issue-12187-1.stderr similarity index 100% rename from src/test/ui/issues/issue-12187-1.stderr rename to tests/ui/issues/issue-12187-1.stderr diff --git a/src/test/ui/issues/issue-12187-2.rs b/tests/ui/issues/issue-12187-2.rs similarity index 100% rename from src/test/ui/issues/issue-12187-2.rs rename to tests/ui/issues/issue-12187-2.rs diff --git a/src/test/ui/issues/issue-12187-2.stderr b/tests/ui/issues/issue-12187-2.stderr similarity index 100% rename from src/test/ui/issues/issue-12187-2.stderr rename to tests/ui/issues/issue-12187-2.stderr diff --git a/src/test/ui/issues/issue-12285.rs b/tests/ui/issues/issue-12285.rs similarity index 100% rename from src/test/ui/issues/issue-12285.rs rename to tests/ui/issues/issue-12285.rs diff --git a/src/test/ui/issues/issue-1251.rs b/tests/ui/issues/issue-1251.rs similarity index 100% rename from src/test/ui/issues/issue-1251.rs rename to tests/ui/issues/issue-1251.rs diff --git a/src/test/ui/issues/issue-12511.rs b/tests/ui/issues/issue-12511.rs similarity index 100% rename from src/test/ui/issues/issue-12511.rs rename to tests/ui/issues/issue-12511.rs diff --git a/src/test/ui/issues/issue-12511.stderr b/tests/ui/issues/issue-12511.stderr similarity index 100% rename from src/test/ui/issues/issue-12511.stderr rename to tests/ui/issues/issue-12511.stderr diff --git a/src/test/ui/issues/issue-12567.rs b/tests/ui/issues/issue-12567.rs similarity index 100% rename from src/test/ui/issues/issue-12567.rs rename to tests/ui/issues/issue-12567.rs diff --git a/src/test/ui/issues/issue-12567.stderr b/tests/ui/issues/issue-12567.stderr similarity index 100% rename from src/test/ui/issues/issue-12567.stderr rename to tests/ui/issues/issue-12567.stderr diff --git a/src/test/ui/issues/issue-1257.rs b/tests/ui/issues/issue-1257.rs similarity index 100% rename from src/test/ui/issues/issue-1257.rs rename to tests/ui/issues/issue-1257.rs diff --git a/src/test/ui/issues/issue-12612.rs b/tests/ui/issues/issue-12612.rs similarity index 100% rename from src/test/ui/issues/issue-12612.rs rename to tests/ui/issues/issue-12612.rs diff --git a/src/test/ui/issues/issue-12660.rs b/tests/ui/issues/issue-12660.rs similarity index 100% rename from src/test/ui/issues/issue-12660.rs rename to tests/ui/issues/issue-12660.rs diff --git a/src/test/ui/issues/issue-12677.rs b/tests/ui/issues/issue-12677.rs similarity index 100% rename from src/test/ui/issues/issue-12677.rs rename to tests/ui/issues/issue-12677.rs diff --git a/src/test/ui/issues/issue-12699.rs b/tests/ui/issues/issue-12699.rs similarity index 100% rename from src/test/ui/issues/issue-12699.rs rename to tests/ui/issues/issue-12699.rs diff --git a/src/test/ui/issues/issue-12729.rs b/tests/ui/issues/issue-12729.rs similarity index 100% rename from src/test/ui/issues/issue-12729.rs rename to tests/ui/issues/issue-12729.rs diff --git a/src/test/ui/issues/issue-12744.rs b/tests/ui/issues/issue-12744.rs similarity index 100% rename from src/test/ui/issues/issue-12744.rs rename to tests/ui/issues/issue-12744.rs diff --git a/src/test/ui/issues/issue-12860.rs b/tests/ui/issues/issue-12860.rs similarity index 100% rename from src/test/ui/issues/issue-12860.rs rename to tests/ui/issues/issue-12860.rs diff --git a/src/test/ui/issues/issue-12863.rs b/tests/ui/issues/issue-12863.rs similarity index 100% rename from src/test/ui/issues/issue-12863.rs rename to tests/ui/issues/issue-12863.rs diff --git a/src/test/ui/issues/issue-12863.stderr b/tests/ui/issues/issue-12863.stderr similarity index 100% rename from src/test/ui/issues/issue-12863.stderr rename to tests/ui/issues/issue-12863.stderr diff --git a/src/test/ui/issues/issue-12909.rs b/tests/ui/issues/issue-12909.rs similarity index 100% rename from src/test/ui/issues/issue-12909.rs rename to tests/ui/issues/issue-12909.rs diff --git a/src/test/ui/issues/issue-12920.rs b/tests/ui/issues/issue-12920.rs similarity index 100% rename from src/test/ui/issues/issue-12920.rs rename to tests/ui/issues/issue-12920.rs diff --git a/src/test/ui/issues/issue-12997-1.rs b/tests/ui/issues/issue-12997-1.rs similarity index 100% rename from src/test/ui/issues/issue-12997-1.rs rename to tests/ui/issues/issue-12997-1.rs diff --git a/src/test/ui/issues/issue-12997-1.stderr b/tests/ui/issues/issue-12997-1.stderr similarity index 100% rename from src/test/ui/issues/issue-12997-1.stderr rename to tests/ui/issues/issue-12997-1.stderr diff --git a/src/test/ui/issues/issue-12997-2.rs b/tests/ui/issues/issue-12997-2.rs similarity index 100% rename from src/test/ui/issues/issue-12997-2.rs rename to tests/ui/issues/issue-12997-2.rs diff --git a/src/test/ui/issues/issue-12997-2.stderr b/tests/ui/issues/issue-12997-2.stderr similarity index 100% rename from src/test/ui/issues/issue-12997-2.stderr rename to tests/ui/issues/issue-12997-2.stderr diff --git a/src/test/ui/issues/issue-13027.rs b/tests/ui/issues/issue-13027.rs similarity index 100% rename from src/test/ui/issues/issue-13027.rs rename to tests/ui/issues/issue-13027.rs diff --git a/src/test/ui/issues/issue-13033.rs b/tests/ui/issues/issue-13033.rs similarity index 100% rename from src/test/ui/issues/issue-13033.rs rename to tests/ui/issues/issue-13033.rs diff --git a/src/test/ui/issues/issue-13033.stderr b/tests/ui/issues/issue-13033.stderr similarity index 100% rename from src/test/ui/issues/issue-13033.stderr rename to tests/ui/issues/issue-13033.stderr diff --git a/src/test/ui/issues/issue-13058.rs b/tests/ui/issues/issue-13058.rs similarity index 100% rename from src/test/ui/issues/issue-13058.rs rename to tests/ui/issues/issue-13058.rs diff --git a/src/test/ui/issues/issue-13058.stderr b/tests/ui/issues/issue-13058.stderr similarity index 100% rename from src/test/ui/issues/issue-13058.stderr rename to tests/ui/issues/issue-13058.stderr diff --git a/src/test/ui/issues/issue-13105.rs b/tests/ui/issues/issue-13105.rs similarity index 100% rename from src/test/ui/issues/issue-13105.rs rename to tests/ui/issues/issue-13105.rs diff --git a/src/test/ui/issues/issue-13167.rs b/tests/ui/issues/issue-13167.rs similarity index 100% rename from src/test/ui/issues/issue-13167.rs rename to tests/ui/issues/issue-13167.rs diff --git a/src/test/ui/issues/issue-13202.rs b/tests/ui/issues/issue-13202.rs similarity index 100% rename from src/test/ui/issues/issue-13202.rs rename to tests/ui/issues/issue-13202.rs diff --git a/src/test/ui/issues/issue-13204.rs b/tests/ui/issues/issue-13204.rs similarity index 100% rename from src/test/ui/issues/issue-13204.rs rename to tests/ui/issues/issue-13204.rs diff --git a/src/test/ui/issues/issue-13214.rs b/tests/ui/issues/issue-13214.rs similarity index 100% rename from src/test/ui/issues/issue-13214.rs rename to tests/ui/issues/issue-13214.rs diff --git a/src/test/ui/issues/issue-13259-windows-tcb-trash.rs b/tests/ui/issues/issue-13259-windows-tcb-trash.rs similarity index 100% rename from src/test/ui/issues/issue-13259-windows-tcb-trash.rs rename to tests/ui/issues/issue-13259-windows-tcb-trash.rs diff --git a/src/test/ui/issues/issue-13264.rs b/tests/ui/issues/issue-13264.rs similarity index 100% rename from src/test/ui/issues/issue-13264.rs rename to tests/ui/issues/issue-13264.rs diff --git a/src/test/ui/issues/issue-13323.rs b/tests/ui/issues/issue-13323.rs similarity index 100% rename from src/test/ui/issues/issue-13323.rs rename to tests/ui/issues/issue-13323.rs diff --git a/src/test/ui/issues/issue-13359.rs b/tests/ui/issues/issue-13359.rs similarity index 100% rename from src/test/ui/issues/issue-13359.rs rename to tests/ui/issues/issue-13359.rs diff --git a/src/test/ui/issues/issue-13359.stderr b/tests/ui/issues/issue-13359.stderr similarity index 100% rename from src/test/ui/issues/issue-13359.stderr rename to tests/ui/issues/issue-13359.stderr diff --git a/src/test/ui/issues/issue-13405.rs b/tests/ui/issues/issue-13405.rs similarity index 100% rename from src/test/ui/issues/issue-13405.rs rename to tests/ui/issues/issue-13405.rs diff --git a/src/test/ui/issues/issue-13407.rs b/tests/ui/issues/issue-13407.rs similarity index 100% rename from src/test/ui/issues/issue-13407.rs rename to tests/ui/issues/issue-13407.rs diff --git a/src/test/ui/issues/issue-13407.stderr b/tests/ui/issues/issue-13407.stderr similarity index 100% rename from src/test/ui/issues/issue-13407.stderr rename to tests/ui/issues/issue-13407.stderr diff --git a/src/test/ui/issues/issue-13434.rs b/tests/ui/issues/issue-13434.rs similarity index 100% rename from src/test/ui/issues/issue-13434.rs rename to tests/ui/issues/issue-13434.rs diff --git a/src/test/ui/issues/issue-13446.rs b/tests/ui/issues/issue-13446.rs similarity index 100% rename from src/test/ui/issues/issue-13446.rs rename to tests/ui/issues/issue-13446.rs diff --git a/src/test/ui/issues/issue-13446.stderr b/tests/ui/issues/issue-13446.stderr similarity index 100% rename from src/test/ui/issues/issue-13446.stderr rename to tests/ui/issues/issue-13446.stderr diff --git a/src/test/ui/issues/issue-13466.rs b/tests/ui/issues/issue-13466.rs similarity index 100% rename from src/test/ui/issues/issue-13466.rs rename to tests/ui/issues/issue-13466.rs diff --git a/src/test/ui/issues/issue-13466.stderr b/tests/ui/issues/issue-13466.stderr similarity index 100% rename from src/test/ui/issues/issue-13466.stderr rename to tests/ui/issues/issue-13466.stderr diff --git a/src/test/ui/issues/issue-13482-2.rs b/tests/ui/issues/issue-13482-2.rs similarity index 100% rename from src/test/ui/issues/issue-13482-2.rs rename to tests/ui/issues/issue-13482-2.rs diff --git a/src/test/ui/issues/issue-13482-2.stderr b/tests/ui/issues/issue-13482-2.stderr similarity index 100% rename from src/test/ui/issues/issue-13482-2.stderr rename to tests/ui/issues/issue-13482-2.stderr diff --git a/src/test/ui/issues/issue-13482.rs b/tests/ui/issues/issue-13482.rs similarity index 100% rename from src/test/ui/issues/issue-13482.rs rename to tests/ui/issues/issue-13482.rs diff --git a/src/test/ui/issues/issue-13482.stderr b/tests/ui/issues/issue-13482.stderr similarity index 100% rename from src/test/ui/issues/issue-13482.stderr rename to tests/ui/issues/issue-13482.stderr diff --git a/src/test/ui/issues/issue-13497-2.rs b/tests/ui/issues/issue-13497-2.rs similarity index 100% rename from src/test/ui/issues/issue-13497-2.rs rename to tests/ui/issues/issue-13497-2.rs diff --git a/src/test/ui/issues/issue-13497-2.stderr b/tests/ui/issues/issue-13497-2.stderr similarity index 100% rename from src/test/ui/issues/issue-13497-2.stderr rename to tests/ui/issues/issue-13497-2.stderr diff --git a/src/test/ui/issues/issue-13497.rs b/tests/ui/issues/issue-13497.rs similarity index 100% rename from src/test/ui/issues/issue-13497.rs rename to tests/ui/issues/issue-13497.rs diff --git a/src/test/ui/issues/issue-13497.stderr b/tests/ui/issues/issue-13497.stderr similarity index 100% rename from src/test/ui/issues/issue-13497.stderr rename to tests/ui/issues/issue-13497.stderr diff --git a/src/test/ui/issues/issue-13507-2.rs b/tests/ui/issues/issue-13507-2.rs similarity index 100% rename from src/test/ui/issues/issue-13507-2.rs rename to tests/ui/issues/issue-13507-2.rs diff --git a/src/test/ui/issues/issue-1362.rs b/tests/ui/issues/issue-1362.rs similarity index 100% rename from src/test/ui/issues/issue-1362.rs rename to tests/ui/issues/issue-1362.rs diff --git a/src/test/ui/issues/issue-1362.stderr b/tests/ui/issues/issue-1362.stderr similarity index 100% rename from src/test/ui/issues/issue-1362.stderr rename to tests/ui/issues/issue-1362.stderr diff --git a/src/test/ui/issues/issue-13620.rs b/tests/ui/issues/issue-13620.rs similarity index 100% rename from src/test/ui/issues/issue-13620.rs rename to tests/ui/issues/issue-13620.rs diff --git a/src/test/ui/issues/issue-13665.rs b/tests/ui/issues/issue-13665.rs similarity index 100% rename from src/test/ui/issues/issue-13665.rs rename to tests/ui/issues/issue-13665.rs diff --git a/src/test/ui/issues/issue-13703.rs b/tests/ui/issues/issue-13703.rs similarity index 100% rename from src/test/ui/issues/issue-13703.rs rename to tests/ui/issues/issue-13703.rs diff --git a/src/test/ui/issues/issue-13763.rs b/tests/ui/issues/issue-13763.rs similarity index 100% rename from src/test/ui/issues/issue-13763.rs rename to tests/ui/issues/issue-13763.rs diff --git a/src/test/ui/issues/issue-13775.rs b/tests/ui/issues/issue-13775.rs similarity index 100% rename from src/test/ui/issues/issue-13775.rs rename to tests/ui/issues/issue-13775.rs diff --git a/src/test/ui/issues/issue-13808.rs b/tests/ui/issues/issue-13808.rs similarity index 100% rename from src/test/ui/issues/issue-13808.rs rename to tests/ui/issues/issue-13808.rs diff --git a/src/test/ui/issues/issue-13847.rs b/tests/ui/issues/issue-13847.rs similarity index 100% rename from src/test/ui/issues/issue-13847.rs rename to tests/ui/issues/issue-13847.rs diff --git a/src/test/ui/issues/issue-13847.stderr b/tests/ui/issues/issue-13847.stderr similarity index 100% rename from src/test/ui/issues/issue-13847.stderr rename to tests/ui/issues/issue-13847.stderr diff --git a/src/test/ui/issues/issue-13867.rs b/tests/ui/issues/issue-13867.rs similarity index 100% rename from src/test/ui/issues/issue-13867.rs rename to tests/ui/issues/issue-13867.rs diff --git a/src/test/ui/issues/issue-13872.rs b/tests/ui/issues/issue-13872.rs similarity index 100% rename from src/test/ui/issues/issue-13872.rs rename to tests/ui/issues/issue-13872.rs diff --git a/src/test/ui/issues/issue-14082.rs b/tests/ui/issues/issue-14082.rs similarity index 100% rename from src/test/ui/issues/issue-14082.rs rename to tests/ui/issues/issue-14082.rs diff --git a/src/test/ui/issues/issue-14091-2.rs b/tests/ui/issues/issue-14091-2.rs similarity index 100% rename from src/test/ui/issues/issue-14091-2.rs rename to tests/ui/issues/issue-14091-2.rs diff --git a/src/test/ui/issues/issue-14091-2.stderr b/tests/ui/issues/issue-14091-2.stderr similarity index 100% rename from src/test/ui/issues/issue-14091-2.stderr rename to tests/ui/issues/issue-14091-2.stderr diff --git a/src/test/ui/issues/issue-14091.rs b/tests/ui/issues/issue-14091.rs similarity index 100% rename from src/test/ui/issues/issue-14091.rs rename to tests/ui/issues/issue-14091.rs diff --git a/src/test/ui/issues/issue-14091.stderr b/tests/ui/issues/issue-14091.stderr similarity index 100% rename from src/test/ui/issues/issue-14091.stderr rename to tests/ui/issues/issue-14091.stderr diff --git a/src/test/ui/issues/issue-14092.rs b/tests/ui/issues/issue-14092.rs similarity index 100% rename from src/test/ui/issues/issue-14092.rs rename to tests/ui/issues/issue-14092.rs diff --git a/src/test/ui/issues/issue-14092.stderr b/tests/ui/issues/issue-14092.stderr similarity index 100% rename from src/test/ui/issues/issue-14092.stderr rename to tests/ui/issues/issue-14092.stderr diff --git a/src/test/ui/issues/issue-14229.rs b/tests/ui/issues/issue-14229.rs similarity index 100% rename from src/test/ui/issues/issue-14229.rs rename to tests/ui/issues/issue-14229.rs diff --git a/src/test/ui/issues/issue-14254.rs b/tests/ui/issues/issue-14254.rs similarity index 100% rename from src/test/ui/issues/issue-14254.rs rename to tests/ui/issues/issue-14254.rs diff --git a/src/test/ui/issues/issue-14285.rs b/tests/ui/issues/issue-14285.rs similarity index 100% rename from src/test/ui/issues/issue-14285.rs rename to tests/ui/issues/issue-14285.rs diff --git a/src/test/ui/issues/issue-14285.stderr b/tests/ui/issues/issue-14285.stderr similarity index 100% rename from src/test/ui/issues/issue-14285.stderr rename to tests/ui/issues/issue-14285.stderr diff --git a/src/test/ui/issues/issue-14308.rs b/tests/ui/issues/issue-14308.rs similarity index 100% rename from src/test/ui/issues/issue-14308.rs rename to tests/ui/issues/issue-14308.rs diff --git a/src/test/ui/issues/issue-14330.rs b/tests/ui/issues/issue-14330.rs similarity index 100% rename from src/test/ui/issues/issue-14330.rs rename to tests/ui/issues/issue-14330.rs diff --git a/src/test/ui/issues/issue-14344.rs b/tests/ui/issues/issue-14344.rs similarity index 100% rename from src/test/ui/issues/issue-14344.rs rename to tests/ui/issues/issue-14344.rs diff --git a/src/test/ui/issues/issue-14366.rs b/tests/ui/issues/issue-14366.rs similarity index 100% rename from src/test/ui/issues/issue-14366.rs rename to tests/ui/issues/issue-14366.rs diff --git a/src/test/ui/issues/issue-14366.stderr b/tests/ui/issues/issue-14366.stderr similarity index 100% rename from src/test/ui/issues/issue-14366.stderr rename to tests/ui/issues/issue-14366.stderr diff --git a/src/test/ui/issues/issue-14382.rs b/tests/ui/issues/issue-14382.rs similarity index 100% rename from src/test/ui/issues/issue-14382.rs rename to tests/ui/issues/issue-14382.rs diff --git a/src/test/ui/issues/issue-14393.rs b/tests/ui/issues/issue-14393.rs similarity index 100% rename from src/test/ui/issues/issue-14393.rs rename to tests/ui/issues/issue-14393.rs diff --git a/src/test/ui/issues/issue-14399.rs b/tests/ui/issues/issue-14399.rs similarity index 100% rename from src/test/ui/issues/issue-14399.rs rename to tests/ui/issues/issue-14399.rs diff --git a/src/test/ui/issues/issue-14421.rs b/tests/ui/issues/issue-14421.rs similarity index 100% rename from src/test/ui/issues/issue-14421.rs rename to tests/ui/issues/issue-14421.rs diff --git a/src/test/ui/issues/issue-14422.rs b/tests/ui/issues/issue-14422.rs similarity index 100% rename from src/test/ui/issues/issue-14422.rs rename to tests/ui/issues/issue-14422.rs diff --git a/src/test/ui/issues/issue-1448-2.rs b/tests/ui/issues/issue-1448-2.rs similarity index 100% rename from src/test/ui/issues/issue-1448-2.rs rename to tests/ui/issues/issue-1448-2.rs diff --git a/src/test/ui/issues/issue-1448-2.stderr b/tests/ui/issues/issue-1448-2.stderr similarity index 100% rename from src/test/ui/issues/issue-1448-2.stderr rename to tests/ui/issues/issue-1448-2.stderr diff --git a/src/test/ui/issues/issue-1451.rs b/tests/ui/issues/issue-1451.rs similarity index 100% rename from src/test/ui/issues/issue-1451.rs rename to tests/ui/issues/issue-1451.rs diff --git a/src/test/ui/issues/issue-14541.rs b/tests/ui/issues/issue-14541.rs similarity index 100% rename from src/test/ui/issues/issue-14541.rs rename to tests/ui/issues/issue-14541.rs diff --git a/src/test/ui/issues/issue-14541.stderr b/tests/ui/issues/issue-14541.stderr similarity index 100% rename from src/test/ui/issues/issue-14541.stderr rename to tests/ui/issues/issue-14541.stderr diff --git a/src/test/ui/issues/issue-1460.rs b/tests/ui/issues/issue-1460.rs similarity index 100% rename from src/test/ui/issues/issue-1460.rs rename to tests/ui/issues/issue-1460.rs diff --git a/src/test/ui/issues/issue-1460.stderr b/tests/ui/issues/issue-1460.stderr similarity index 100% rename from src/test/ui/issues/issue-1460.stderr rename to tests/ui/issues/issue-1460.stderr diff --git a/src/test/ui/issues/issue-14721.rs b/tests/ui/issues/issue-14721.rs similarity index 100% rename from src/test/ui/issues/issue-14721.rs rename to tests/ui/issues/issue-14721.rs diff --git a/src/test/ui/issues/issue-14721.stderr b/tests/ui/issues/issue-14721.stderr similarity index 100% rename from src/test/ui/issues/issue-14721.stderr rename to tests/ui/issues/issue-14721.stderr diff --git a/src/test/ui/issues/issue-1476.rs b/tests/ui/issues/issue-1476.rs similarity index 100% rename from src/test/ui/issues/issue-1476.rs rename to tests/ui/issues/issue-1476.rs diff --git a/src/test/ui/issues/issue-1476.stderr b/tests/ui/issues/issue-1476.stderr similarity index 100% rename from src/test/ui/issues/issue-1476.stderr rename to tests/ui/issues/issue-1476.stderr diff --git a/src/test/ui/issues/issue-14821.rs b/tests/ui/issues/issue-14821.rs similarity index 100% rename from src/test/ui/issues/issue-14821.rs rename to tests/ui/issues/issue-14821.rs diff --git a/src/test/ui/issues/issue-14845.rs b/tests/ui/issues/issue-14845.rs similarity index 100% rename from src/test/ui/issues/issue-14845.rs rename to tests/ui/issues/issue-14845.rs diff --git a/src/test/ui/issues/issue-14845.stderr b/tests/ui/issues/issue-14845.stderr similarity index 100% rename from src/test/ui/issues/issue-14845.stderr rename to tests/ui/issues/issue-14845.stderr diff --git a/src/test/ui/issues/issue-14853.rs b/tests/ui/issues/issue-14853.rs similarity index 100% rename from src/test/ui/issues/issue-14853.rs rename to tests/ui/issues/issue-14853.rs diff --git a/src/test/ui/issues/issue-14853.stderr b/tests/ui/issues/issue-14853.stderr similarity index 100% rename from src/test/ui/issues/issue-14853.stderr rename to tests/ui/issues/issue-14853.stderr diff --git a/src/test/ui/issues/issue-14865.rs b/tests/ui/issues/issue-14865.rs similarity index 100% rename from src/test/ui/issues/issue-14865.rs rename to tests/ui/issues/issue-14865.rs diff --git a/src/test/ui/issues/issue-14875.rs b/tests/ui/issues/issue-14875.rs similarity index 100% rename from src/test/ui/issues/issue-14875.rs rename to tests/ui/issues/issue-14875.rs diff --git a/src/test/ui/issues/issue-14901.rs b/tests/ui/issues/issue-14901.rs similarity index 100% rename from src/test/ui/issues/issue-14901.rs rename to tests/ui/issues/issue-14901.rs diff --git a/src/test/ui/issues/issue-14915.rs b/tests/ui/issues/issue-14915.rs similarity index 100% rename from src/test/ui/issues/issue-14915.rs rename to tests/ui/issues/issue-14915.rs diff --git a/src/test/ui/issues/issue-14915.stderr b/tests/ui/issues/issue-14915.stderr similarity index 100% rename from src/test/ui/issues/issue-14915.stderr rename to tests/ui/issues/issue-14915.stderr diff --git a/src/test/ui/issues/issue-14919.rs b/tests/ui/issues/issue-14919.rs similarity index 100% rename from src/test/ui/issues/issue-14919.rs rename to tests/ui/issues/issue-14919.rs diff --git a/src/test/ui/issues/issue-14959.rs b/tests/ui/issues/issue-14959.rs similarity index 100% rename from src/test/ui/issues/issue-14959.rs rename to tests/ui/issues/issue-14959.rs diff --git a/src/test/ui/issues/issue-15034.rs b/tests/ui/issues/issue-15034.rs similarity index 100% rename from src/test/ui/issues/issue-15034.rs rename to tests/ui/issues/issue-15034.rs diff --git a/src/test/ui/issues/issue-15034.stderr b/tests/ui/issues/issue-15034.stderr similarity index 100% rename from src/test/ui/issues/issue-15034.stderr rename to tests/ui/issues/issue-15034.stderr diff --git a/src/test/ui/issues/issue-15043.rs b/tests/ui/issues/issue-15043.rs similarity index 100% rename from src/test/ui/issues/issue-15043.rs rename to tests/ui/issues/issue-15043.rs diff --git a/src/test/ui/issues/issue-15063.rs b/tests/ui/issues/issue-15063.rs similarity index 100% rename from src/test/ui/issues/issue-15063.rs rename to tests/ui/issues/issue-15063.rs diff --git a/src/test/ui/issues/issue-15094.rs b/tests/ui/issues/issue-15094.rs similarity index 100% rename from src/test/ui/issues/issue-15094.rs rename to tests/ui/issues/issue-15094.rs diff --git a/src/test/ui/issues/issue-15094.stderr b/tests/ui/issues/issue-15094.stderr similarity index 100% rename from src/test/ui/issues/issue-15094.stderr rename to tests/ui/issues/issue-15094.stderr diff --git a/src/test/ui/issues/issue-15104.rs b/tests/ui/issues/issue-15104.rs similarity index 100% rename from src/test/ui/issues/issue-15104.rs rename to tests/ui/issues/issue-15104.rs diff --git a/src/test/ui/issues/issue-15129-rpass.rs b/tests/ui/issues/issue-15129-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-15129-rpass.rs rename to tests/ui/issues/issue-15129-rpass.rs diff --git a/src/test/ui/issues/issue-15155.rs b/tests/ui/issues/issue-15155.rs similarity index 100% rename from src/test/ui/issues/issue-15155.rs rename to tests/ui/issues/issue-15155.rs diff --git a/src/test/ui/issues/issue-15167.rs b/tests/ui/issues/issue-15167.rs similarity index 100% rename from src/test/ui/issues/issue-15167.rs rename to tests/ui/issues/issue-15167.rs diff --git a/src/test/ui/issues/issue-15167.stderr b/tests/ui/issues/issue-15167.stderr similarity index 100% rename from src/test/ui/issues/issue-15167.stderr rename to tests/ui/issues/issue-15167.stderr diff --git a/src/test/ui/issues/issue-15189.rs b/tests/ui/issues/issue-15189.rs similarity index 100% rename from src/test/ui/issues/issue-15189.rs rename to tests/ui/issues/issue-15189.rs diff --git a/src/test/ui/issues/issue-15207.rs b/tests/ui/issues/issue-15207.rs similarity index 100% rename from src/test/ui/issues/issue-15207.rs rename to tests/ui/issues/issue-15207.rs diff --git a/src/test/ui/issues/issue-15207.stderr b/tests/ui/issues/issue-15207.stderr similarity index 100% rename from src/test/ui/issues/issue-15207.stderr rename to tests/ui/issues/issue-15207.stderr diff --git a/src/test/ui/issues/issue-15260.rs b/tests/ui/issues/issue-15260.rs similarity index 100% rename from src/test/ui/issues/issue-15260.rs rename to tests/ui/issues/issue-15260.rs diff --git a/src/test/ui/issues/issue-15260.stderr b/tests/ui/issues/issue-15260.stderr similarity index 100% rename from src/test/ui/issues/issue-15260.stderr rename to tests/ui/issues/issue-15260.stderr diff --git a/src/test/ui/issues/issue-15381.rs b/tests/ui/issues/issue-15381.rs similarity index 100% rename from src/test/ui/issues/issue-15381.rs rename to tests/ui/issues/issue-15381.rs diff --git a/src/test/ui/issues/issue-15381.stderr b/tests/ui/issues/issue-15381.stderr similarity index 100% rename from src/test/ui/issues/issue-15381.stderr rename to tests/ui/issues/issue-15381.stderr diff --git a/src/test/ui/issues/issue-15444.rs b/tests/ui/issues/issue-15444.rs similarity index 100% rename from src/test/ui/issues/issue-15444.rs rename to tests/ui/issues/issue-15444.rs diff --git a/src/test/ui/issues/issue-15523-big.rs b/tests/ui/issues/issue-15523-big.rs similarity index 100% rename from src/test/ui/issues/issue-15523-big.rs rename to tests/ui/issues/issue-15523-big.rs diff --git a/src/test/ui/issues/issue-15523.rs b/tests/ui/issues/issue-15523.rs similarity index 100% rename from src/test/ui/issues/issue-15523.rs rename to tests/ui/issues/issue-15523.rs diff --git a/src/test/ui/issues/issue-15562.rs b/tests/ui/issues/issue-15562.rs similarity index 100% rename from src/test/ui/issues/issue-15562.rs rename to tests/ui/issues/issue-15562.rs diff --git a/src/test/ui/issues/issue-15571.rs b/tests/ui/issues/issue-15571.rs similarity index 100% rename from src/test/ui/issues/issue-15571.rs rename to tests/ui/issues/issue-15571.rs diff --git a/src/test/ui/issues/issue-15673.rs b/tests/ui/issues/issue-15673.rs similarity index 100% rename from src/test/ui/issues/issue-15673.rs rename to tests/ui/issues/issue-15673.rs diff --git a/src/test/ui/issues/issue-15689-1.rs b/tests/ui/issues/issue-15689-1.rs similarity index 100% rename from src/test/ui/issues/issue-15689-1.rs rename to tests/ui/issues/issue-15689-1.rs diff --git a/src/test/ui/issues/issue-15689-2.rs b/tests/ui/issues/issue-15689-2.rs similarity index 100% rename from src/test/ui/issues/issue-15689-2.rs rename to tests/ui/issues/issue-15689-2.rs diff --git a/src/test/ui/issues/issue-15734.rs b/tests/ui/issues/issue-15734.rs similarity index 100% rename from src/test/ui/issues/issue-15734.rs rename to tests/ui/issues/issue-15734.rs diff --git a/src/test/ui/issues/issue-15735.rs b/tests/ui/issues/issue-15735.rs similarity index 100% rename from src/test/ui/issues/issue-15735.rs rename to tests/ui/issues/issue-15735.rs diff --git a/src/test/ui/issues/issue-15756.rs b/tests/ui/issues/issue-15756.rs similarity index 100% rename from src/test/ui/issues/issue-15756.rs rename to tests/ui/issues/issue-15756.rs diff --git a/src/test/ui/issues/issue-15756.stderr b/tests/ui/issues/issue-15756.stderr similarity index 100% rename from src/test/ui/issues/issue-15756.stderr rename to tests/ui/issues/issue-15756.stderr diff --git a/src/test/ui/issues/issue-15763.rs b/tests/ui/issues/issue-15763.rs similarity index 100% rename from src/test/ui/issues/issue-15763.rs rename to tests/ui/issues/issue-15763.rs diff --git a/src/test/ui/issues/issue-15774.rs b/tests/ui/issues/issue-15774.rs similarity index 100% rename from src/test/ui/issues/issue-15774.rs rename to tests/ui/issues/issue-15774.rs diff --git a/src/test/ui/issues/issue-15783.rs b/tests/ui/issues/issue-15783.rs similarity index 100% rename from src/test/ui/issues/issue-15783.rs rename to tests/ui/issues/issue-15783.rs diff --git a/src/test/ui/issues/issue-15783.stderr b/tests/ui/issues/issue-15783.stderr similarity index 100% rename from src/test/ui/issues/issue-15783.stderr rename to tests/ui/issues/issue-15783.stderr diff --git a/src/test/ui/issues/issue-15793.rs b/tests/ui/issues/issue-15793.rs similarity index 100% rename from src/test/ui/issues/issue-15793.rs rename to tests/ui/issues/issue-15793.rs diff --git a/src/test/ui/issues/issue-15858.rs b/tests/ui/issues/issue-15858.rs similarity index 100% rename from src/test/ui/issues/issue-15858.rs rename to tests/ui/issues/issue-15858.rs diff --git a/src/test/ui/issues/issue-15896.rs b/tests/ui/issues/issue-15896.rs similarity index 100% rename from src/test/ui/issues/issue-15896.rs rename to tests/ui/issues/issue-15896.rs diff --git a/src/test/ui/issues/issue-15896.stderr b/tests/ui/issues/issue-15896.stderr similarity index 100% rename from src/test/ui/issues/issue-15896.stderr rename to tests/ui/issues/issue-15896.stderr diff --git a/src/test/ui/issues/issue-15965.rs b/tests/ui/issues/issue-15965.rs similarity index 100% rename from src/test/ui/issues/issue-15965.rs rename to tests/ui/issues/issue-15965.rs diff --git a/src/test/ui/issues/issue-15965.stderr b/tests/ui/issues/issue-15965.stderr similarity index 100% rename from src/test/ui/issues/issue-15965.stderr rename to tests/ui/issues/issue-15965.stderr diff --git a/src/test/ui/issues/issue-16048.rs b/tests/ui/issues/issue-16048.rs similarity index 100% rename from src/test/ui/issues/issue-16048.rs rename to tests/ui/issues/issue-16048.rs diff --git a/src/test/ui/issues/issue-16048.stderr b/tests/ui/issues/issue-16048.stderr similarity index 100% rename from src/test/ui/issues/issue-16048.stderr rename to tests/ui/issues/issue-16048.stderr diff --git a/src/test/ui/issues/issue-16149.rs b/tests/ui/issues/issue-16149.rs similarity index 100% rename from src/test/ui/issues/issue-16149.rs rename to tests/ui/issues/issue-16149.rs diff --git a/src/test/ui/issues/issue-16149.stderr b/tests/ui/issues/issue-16149.stderr similarity index 100% rename from src/test/ui/issues/issue-16149.stderr rename to tests/ui/issues/issue-16149.stderr diff --git a/src/test/ui/issues/issue-16151.rs b/tests/ui/issues/issue-16151.rs similarity index 100% rename from src/test/ui/issues/issue-16151.rs rename to tests/ui/issues/issue-16151.rs diff --git a/src/test/ui/issues/issue-16250.rs b/tests/ui/issues/issue-16250.rs similarity index 100% rename from src/test/ui/issues/issue-16250.rs rename to tests/ui/issues/issue-16250.rs diff --git a/src/test/ui/issues/issue-16250.stderr b/tests/ui/issues/issue-16250.stderr similarity index 100% rename from src/test/ui/issues/issue-16250.stderr rename to tests/ui/issues/issue-16250.stderr diff --git a/src/test/ui/issues/issue-16256.rs b/tests/ui/issues/issue-16256.rs similarity index 100% rename from src/test/ui/issues/issue-16256.rs rename to tests/ui/issues/issue-16256.rs diff --git a/src/test/ui/issues/issue-16256.stderr b/tests/ui/issues/issue-16256.stderr similarity index 100% rename from src/test/ui/issues/issue-16256.stderr rename to tests/ui/issues/issue-16256.stderr diff --git a/src/test/ui/issues/issue-16278.rs b/tests/ui/issues/issue-16278.rs similarity index 100% rename from src/test/ui/issues/issue-16278.rs rename to tests/ui/issues/issue-16278.rs diff --git a/src/test/ui/issues/issue-16338.rs b/tests/ui/issues/issue-16338.rs similarity index 100% rename from src/test/ui/issues/issue-16338.rs rename to tests/ui/issues/issue-16338.rs diff --git a/src/test/ui/issues/issue-16338.stderr b/tests/ui/issues/issue-16338.stderr similarity index 100% rename from src/test/ui/issues/issue-16338.stderr rename to tests/ui/issues/issue-16338.stderr diff --git a/src/test/ui/issues/issue-16401.rs b/tests/ui/issues/issue-16401.rs similarity index 100% rename from src/test/ui/issues/issue-16401.rs rename to tests/ui/issues/issue-16401.rs diff --git a/src/test/ui/issues/issue-16401.stderr b/tests/ui/issues/issue-16401.stderr similarity index 100% rename from src/test/ui/issues/issue-16401.stderr rename to tests/ui/issues/issue-16401.stderr diff --git a/src/test/ui/issues/issue-16441.rs b/tests/ui/issues/issue-16441.rs similarity index 100% rename from src/test/ui/issues/issue-16441.rs rename to tests/ui/issues/issue-16441.rs diff --git a/src/test/ui/issues/issue-16452.rs b/tests/ui/issues/issue-16452.rs similarity index 100% rename from src/test/ui/issues/issue-16452.rs rename to tests/ui/issues/issue-16452.rs diff --git a/src/test/ui/issues/issue-16492.rs b/tests/ui/issues/issue-16492.rs similarity index 100% rename from src/test/ui/issues/issue-16492.rs rename to tests/ui/issues/issue-16492.rs diff --git a/src/test/ui/issues/issue-16530.rs b/tests/ui/issues/issue-16530.rs similarity index 100% rename from src/test/ui/issues/issue-16530.rs rename to tests/ui/issues/issue-16530.rs diff --git a/src/test/ui/issues/issue-16538.mir.stderr b/tests/ui/issues/issue-16538.mir.stderr similarity index 100% rename from src/test/ui/issues/issue-16538.mir.stderr rename to tests/ui/issues/issue-16538.mir.stderr diff --git a/src/test/ui/issues/issue-16538.rs b/tests/ui/issues/issue-16538.rs similarity index 100% rename from src/test/ui/issues/issue-16538.rs rename to tests/ui/issues/issue-16538.rs diff --git a/src/test/ui/issues/issue-16538.thir.stderr b/tests/ui/issues/issue-16538.thir.stderr similarity index 100% rename from src/test/ui/issues/issue-16538.thir.stderr rename to tests/ui/issues/issue-16538.thir.stderr diff --git a/src/test/ui/issues/issue-16560.rs b/tests/ui/issues/issue-16560.rs similarity index 100% rename from src/test/ui/issues/issue-16560.rs rename to tests/ui/issues/issue-16560.rs diff --git a/src/test/ui/issues/issue-16562.rs b/tests/ui/issues/issue-16562.rs similarity index 100% rename from src/test/ui/issues/issue-16562.rs rename to tests/ui/issues/issue-16562.rs diff --git a/src/test/ui/issues/issue-16562.stderr b/tests/ui/issues/issue-16562.stderr similarity index 100% rename from src/test/ui/issues/issue-16562.stderr rename to tests/ui/issues/issue-16562.stderr diff --git a/src/test/ui/issues/issue-16596.rs b/tests/ui/issues/issue-16596.rs similarity index 100% rename from src/test/ui/issues/issue-16596.rs rename to tests/ui/issues/issue-16596.rs diff --git a/src/test/ui/issues/issue-1660.rs b/tests/ui/issues/issue-1660.rs similarity index 100% rename from src/test/ui/issues/issue-1660.rs rename to tests/ui/issues/issue-1660.rs diff --git a/src/test/ui/issues/issue-16643.rs b/tests/ui/issues/issue-16643.rs similarity index 100% rename from src/test/ui/issues/issue-16643.rs rename to tests/ui/issues/issue-16643.rs diff --git a/src/test/ui/issues/issue-16648.rs b/tests/ui/issues/issue-16648.rs similarity index 100% rename from src/test/ui/issues/issue-16648.rs rename to tests/ui/issues/issue-16648.rs diff --git a/src/test/ui/issues/issue-16668.rs b/tests/ui/issues/issue-16668.rs similarity index 100% rename from src/test/ui/issues/issue-16668.rs rename to tests/ui/issues/issue-16668.rs diff --git a/src/test/ui/issues/issue-16671.rs b/tests/ui/issues/issue-16671.rs similarity index 100% rename from src/test/ui/issues/issue-16671.rs rename to tests/ui/issues/issue-16671.rs diff --git a/src/test/ui/issues/issue-16683.rs b/tests/ui/issues/issue-16683.rs similarity index 100% rename from src/test/ui/issues/issue-16683.rs rename to tests/ui/issues/issue-16683.rs diff --git a/src/test/ui/issues/issue-16683.stderr b/tests/ui/issues/issue-16683.stderr similarity index 100% rename from src/test/ui/issues/issue-16683.stderr rename to tests/ui/issues/issue-16683.stderr diff --git a/src/test/ui/issues/issue-16725.rs b/tests/ui/issues/issue-16725.rs similarity index 100% rename from src/test/ui/issues/issue-16725.rs rename to tests/ui/issues/issue-16725.rs diff --git a/src/test/ui/issues/issue-16725.stderr b/tests/ui/issues/issue-16725.stderr similarity index 100% rename from src/test/ui/issues/issue-16725.stderr rename to tests/ui/issues/issue-16725.stderr diff --git a/src/test/ui/issues/issue-16739.rs b/tests/ui/issues/issue-16739.rs similarity index 100% rename from src/test/ui/issues/issue-16739.rs rename to tests/ui/issues/issue-16739.rs diff --git a/src/test/ui/issues/issue-16745.rs b/tests/ui/issues/issue-16745.rs similarity index 100% rename from src/test/ui/issues/issue-16745.rs rename to tests/ui/issues/issue-16745.rs diff --git a/src/test/ui/issues/issue-16774.rs b/tests/ui/issues/issue-16774.rs similarity index 100% rename from src/test/ui/issues/issue-16774.rs rename to tests/ui/issues/issue-16774.rs diff --git a/src/test/ui/issues/issue-16783.rs b/tests/ui/issues/issue-16783.rs similarity index 100% rename from src/test/ui/issues/issue-16783.rs rename to tests/ui/issues/issue-16783.rs diff --git a/src/test/ui/issues/issue-16819.rs b/tests/ui/issues/issue-16819.rs similarity index 100% rename from src/test/ui/issues/issue-16819.rs rename to tests/ui/issues/issue-16819.rs diff --git a/src/test/ui/issues/issue-16922-rpass.rs b/tests/ui/issues/issue-16922-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-16922-rpass.rs rename to tests/ui/issues/issue-16922-rpass.rs diff --git a/src/test/ui/issues/issue-16922.rs b/tests/ui/issues/issue-16922.rs similarity index 100% rename from src/test/ui/issues/issue-16922.rs rename to tests/ui/issues/issue-16922.rs diff --git a/src/test/ui/issues/issue-16922.stderr b/tests/ui/issues/issue-16922.stderr similarity index 100% rename from src/test/ui/issues/issue-16922.stderr rename to tests/ui/issues/issue-16922.stderr diff --git a/src/test/ui/issues/issue-16939.rs b/tests/ui/issues/issue-16939.rs similarity index 100% rename from src/test/ui/issues/issue-16939.rs rename to tests/ui/issues/issue-16939.rs diff --git a/src/test/ui/issues/issue-16939.stderr b/tests/ui/issues/issue-16939.stderr similarity index 100% rename from src/test/ui/issues/issue-16939.stderr rename to tests/ui/issues/issue-16939.stderr diff --git a/src/test/ui/issues/issue-1696.rs b/tests/ui/issues/issue-1696.rs similarity index 100% rename from src/test/ui/issues/issue-1696.rs rename to tests/ui/issues/issue-1696.rs diff --git a/src/test/ui/issues/issue-16966.rs b/tests/ui/issues/issue-16966.rs similarity index 100% rename from src/test/ui/issues/issue-16966.rs rename to tests/ui/issues/issue-16966.rs diff --git a/src/test/ui/issues/issue-16966.stderr b/tests/ui/issues/issue-16966.stderr similarity index 100% rename from src/test/ui/issues/issue-16966.stderr rename to tests/ui/issues/issue-16966.stderr diff --git a/src/test/ui/issues/issue-16994.rs b/tests/ui/issues/issue-16994.rs similarity index 100% rename from src/test/ui/issues/issue-16994.rs rename to tests/ui/issues/issue-16994.rs diff --git a/src/test/ui/issues/issue-17001.rs b/tests/ui/issues/issue-17001.rs similarity index 100% rename from src/test/ui/issues/issue-17001.rs rename to tests/ui/issues/issue-17001.rs diff --git a/src/test/ui/issues/issue-17001.stderr b/tests/ui/issues/issue-17001.stderr similarity index 100% rename from src/test/ui/issues/issue-17001.stderr rename to tests/ui/issues/issue-17001.stderr diff --git a/src/test/ui/issues/issue-17033.rs b/tests/ui/issues/issue-17033.rs similarity index 100% rename from src/test/ui/issues/issue-17033.rs rename to tests/ui/issues/issue-17033.rs diff --git a/src/test/ui/issues/issue-17033.stderr b/tests/ui/issues/issue-17033.stderr similarity index 100% rename from src/test/ui/issues/issue-17033.stderr rename to tests/ui/issues/issue-17033.stderr diff --git a/src/test/ui/issues/issue-17068.rs b/tests/ui/issues/issue-17068.rs similarity index 100% rename from src/test/ui/issues/issue-17068.rs rename to tests/ui/issues/issue-17068.rs diff --git a/src/test/ui/issues/issue-17121.rs b/tests/ui/issues/issue-17121.rs similarity index 100% rename from src/test/ui/issues/issue-17121.rs rename to tests/ui/issues/issue-17121.rs diff --git a/src/test/ui/issues/issue-17216.rs b/tests/ui/issues/issue-17216.rs similarity index 100% rename from src/test/ui/issues/issue-17216.rs rename to tests/ui/issues/issue-17216.rs diff --git a/src/test/ui/issues/issue-17252.rs b/tests/ui/issues/issue-17252.rs similarity index 100% rename from src/test/ui/issues/issue-17252.rs rename to tests/ui/issues/issue-17252.rs diff --git a/src/test/ui/issues/issue-17252.stderr b/tests/ui/issues/issue-17252.stderr similarity index 100% rename from src/test/ui/issues/issue-17252.stderr rename to tests/ui/issues/issue-17252.stderr diff --git a/src/test/ui/issues/issue-17302.rs b/tests/ui/issues/issue-17302.rs similarity index 100% rename from src/test/ui/issues/issue-17302.rs rename to tests/ui/issues/issue-17302.rs diff --git a/src/test/ui/issues/issue-17322.rs b/tests/ui/issues/issue-17322.rs similarity index 100% rename from src/test/ui/issues/issue-17322.rs rename to tests/ui/issues/issue-17322.rs diff --git a/src/test/ui/issues/issue-17336.rs b/tests/ui/issues/issue-17336.rs similarity index 100% rename from src/test/ui/issues/issue-17336.rs rename to tests/ui/issues/issue-17336.rs diff --git a/src/test/ui/issues/issue-17337.rs b/tests/ui/issues/issue-17337.rs similarity index 100% rename from src/test/ui/issues/issue-17337.rs rename to tests/ui/issues/issue-17337.rs diff --git a/src/test/ui/issues/issue-17337.stderr b/tests/ui/issues/issue-17337.stderr similarity index 100% rename from src/test/ui/issues/issue-17337.stderr rename to tests/ui/issues/issue-17337.stderr diff --git a/src/test/ui/issues/issue-17351.rs b/tests/ui/issues/issue-17351.rs similarity index 100% rename from src/test/ui/issues/issue-17351.rs rename to tests/ui/issues/issue-17351.rs diff --git a/src/test/ui/issues/issue-17361.rs b/tests/ui/issues/issue-17361.rs similarity index 100% rename from src/test/ui/issues/issue-17361.rs rename to tests/ui/issues/issue-17361.rs diff --git a/src/test/ui/issues/issue-17373.rs b/tests/ui/issues/issue-17373.rs similarity index 100% rename from src/test/ui/issues/issue-17373.rs rename to tests/ui/issues/issue-17373.rs diff --git a/src/test/ui/issues/issue-17373.stderr b/tests/ui/issues/issue-17373.stderr similarity index 100% rename from src/test/ui/issues/issue-17373.stderr rename to tests/ui/issues/issue-17373.stderr diff --git a/src/test/ui/issues/issue-17385.rs b/tests/ui/issues/issue-17385.rs similarity index 100% rename from src/test/ui/issues/issue-17385.rs rename to tests/ui/issues/issue-17385.rs diff --git a/src/test/ui/issues/issue-17385.stderr b/tests/ui/issues/issue-17385.stderr similarity index 100% rename from src/test/ui/issues/issue-17385.stderr rename to tests/ui/issues/issue-17385.stderr diff --git a/src/test/ui/issues/issue-17405.rs b/tests/ui/issues/issue-17405.rs similarity index 100% rename from src/test/ui/issues/issue-17405.rs rename to tests/ui/issues/issue-17405.rs diff --git a/src/test/ui/issues/issue-17405.stderr b/tests/ui/issues/issue-17405.stderr similarity index 100% rename from src/test/ui/issues/issue-17405.stderr rename to tests/ui/issues/issue-17405.stderr diff --git a/src/test/ui/issues/issue-17431-1.rs b/tests/ui/issues/issue-17431-1.rs similarity index 100% rename from src/test/ui/issues/issue-17431-1.rs rename to tests/ui/issues/issue-17431-1.rs diff --git a/src/test/ui/issues/issue-17431-1.stderr b/tests/ui/issues/issue-17431-1.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-1.stderr rename to tests/ui/issues/issue-17431-1.stderr diff --git a/src/test/ui/issues/issue-17431-2.rs b/tests/ui/issues/issue-17431-2.rs similarity index 100% rename from src/test/ui/issues/issue-17431-2.rs rename to tests/ui/issues/issue-17431-2.rs diff --git a/src/test/ui/issues/issue-17431-2.stderr b/tests/ui/issues/issue-17431-2.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-2.stderr rename to tests/ui/issues/issue-17431-2.stderr diff --git a/src/test/ui/issues/issue-17431-3.rs b/tests/ui/issues/issue-17431-3.rs similarity index 100% rename from src/test/ui/issues/issue-17431-3.rs rename to tests/ui/issues/issue-17431-3.rs diff --git a/src/test/ui/issues/issue-17431-3.stderr b/tests/ui/issues/issue-17431-3.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-3.stderr rename to tests/ui/issues/issue-17431-3.stderr diff --git a/src/test/ui/issues/issue-17431-4.rs b/tests/ui/issues/issue-17431-4.rs similarity index 100% rename from src/test/ui/issues/issue-17431-4.rs rename to tests/ui/issues/issue-17431-4.rs diff --git a/src/test/ui/issues/issue-17431-4.stderr b/tests/ui/issues/issue-17431-4.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-4.stderr rename to tests/ui/issues/issue-17431-4.stderr diff --git a/src/test/ui/issues/issue-17431-5.rs b/tests/ui/issues/issue-17431-5.rs similarity index 100% rename from src/test/ui/issues/issue-17431-5.rs rename to tests/ui/issues/issue-17431-5.rs diff --git a/src/test/ui/issues/issue-17431-5.stderr b/tests/ui/issues/issue-17431-5.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-5.stderr rename to tests/ui/issues/issue-17431-5.stderr diff --git a/src/test/ui/issues/issue-17431-6.rs b/tests/ui/issues/issue-17431-6.rs similarity index 100% rename from src/test/ui/issues/issue-17431-6.rs rename to tests/ui/issues/issue-17431-6.rs diff --git a/src/test/ui/issues/issue-17431-6.stderr b/tests/ui/issues/issue-17431-6.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-6.stderr rename to tests/ui/issues/issue-17431-6.stderr diff --git a/src/test/ui/issues/issue-17431-7.rs b/tests/ui/issues/issue-17431-7.rs similarity index 100% rename from src/test/ui/issues/issue-17431-7.rs rename to tests/ui/issues/issue-17431-7.rs diff --git a/src/test/ui/issues/issue-17431-7.stderr b/tests/ui/issues/issue-17431-7.stderr similarity index 100% rename from src/test/ui/issues/issue-17431-7.stderr rename to tests/ui/issues/issue-17431-7.stderr diff --git a/src/test/ui/issues/issue-17441.rs b/tests/ui/issues/issue-17441.rs similarity index 100% rename from src/test/ui/issues/issue-17441.rs rename to tests/ui/issues/issue-17441.rs diff --git a/src/test/ui/issues/issue-17441.stderr b/tests/ui/issues/issue-17441.stderr similarity index 100% rename from src/test/ui/issues/issue-17441.stderr rename to tests/ui/issues/issue-17441.stderr diff --git a/src/test/ui/issues/issue-17450.rs b/tests/ui/issues/issue-17450.rs similarity index 100% rename from src/test/ui/issues/issue-17450.rs rename to tests/ui/issues/issue-17450.rs diff --git a/src/test/ui/issues/issue-17503.rs b/tests/ui/issues/issue-17503.rs similarity index 100% rename from src/test/ui/issues/issue-17503.rs rename to tests/ui/issues/issue-17503.rs diff --git a/src/test/ui/issues/issue-17546.rs b/tests/ui/issues/issue-17546.rs similarity index 100% rename from src/test/ui/issues/issue-17546.rs rename to tests/ui/issues/issue-17546.rs diff --git a/src/test/ui/issues/issue-17546.stderr b/tests/ui/issues/issue-17546.stderr similarity index 100% rename from src/test/ui/issues/issue-17546.stderr rename to tests/ui/issues/issue-17546.stderr diff --git a/src/test/ui/issues/issue-17551.rs b/tests/ui/issues/issue-17551.rs similarity index 100% rename from src/test/ui/issues/issue-17551.rs rename to tests/ui/issues/issue-17551.rs diff --git a/src/test/ui/issues/issue-17551.stderr b/tests/ui/issues/issue-17551.stderr similarity index 100% rename from src/test/ui/issues/issue-17551.stderr rename to tests/ui/issues/issue-17551.stderr diff --git a/src/test/ui/issues/issue-17651.rs b/tests/ui/issues/issue-17651.rs similarity index 100% rename from src/test/ui/issues/issue-17651.rs rename to tests/ui/issues/issue-17651.rs diff --git a/src/test/ui/issues/issue-17651.stderr b/tests/ui/issues/issue-17651.stderr similarity index 100% rename from src/test/ui/issues/issue-17651.stderr rename to tests/ui/issues/issue-17651.stderr diff --git a/src/test/ui/issues/issue-17662.rs b/tests/ui/issues/issue-17662.rs similarity index 100% rename from src/test/ui/issues/issue-17662.rs rename to tests/ui/issues/issue-17662.rs diff --git a/src/test/ui/issues/issue-17732.rs b/tests/ui/issues/issue-17732.rs similarity index 100% rename from src/test/ui/issues/issue-17732.rs rename to tests/ui/issues/issue-17732.rs diff --git a/src/test/ui/issues/issue-17734.rs b/tests/ui/issues/issue-17734.rs similarity index 100% rename from src/test/ui/issues/issue-17734.rs rename to tests/ui/issues/issue-17734.rs diff --git a/src/test/ui/issues/issue-17740.rs b/tests/ui/issues/issue-17740.rs similarity index 100% rename from src/test/ui/issues/issue-17740.rs rename to tests/ui/issues/issue-17740.rs diff --git a/src/test/ui/issues/issue-17740.stderr b/tests/ui/issues/issue-17740.stderr similarity index 100% rename from src/test/ui/issues/issue-17740.stderr rename to tests/ui/issues/issue-17740.stderr diff --git a/src/test/ui/issues/issue-17746.rs b/tests/ui/issues/issue-17746.rs similarity index 100% rename from src/test/ui/issues/issue-17746.rs rename to tests/ui/issues/issue-17746.rs diff --git a/src/test/ui/issues/issue-17758.rs b/tests/ui/issues/issue-17758.rs similarity index 100% rename from src/test/ui/issues/issue-17758.rs rename to tests/ui/issues/issue-17758.rs diff --git a/src/test/ui/issues/issue-17758.stderr b/tests/ui/issues/issue-17758.stderr similarity index 100% rename from src/test/ui/issues/issue-17758.stderr rename to tests/ui/issues/issue-17758.stderr diff --git a/src/test/ui/issues/issue-17771.rs b/tests/ui/issues/issue-17771.rs similarity index 100% rename from src/test/ui/issues/issue-17771.rs rename to tests/ui/issues/issue-17771.rs diff --git a/src/test/ui/issues/issue-17800.rs b/tests/ui/issues/issue-17800.rs similarity index 100% rename from src/test/ui/issues/issue-17800.rs rename to tests/ui/issues/issue-17800.rs diff --git a/src/test/ui/issues/issue-17800.stderr b/tests/ui/issues/issue-17800.stderr similarity index 100% rename from src/test/ui/issues/issue-17800.stderr rename to tests/ui/issues/issue-17800.stderr diff --git a/src/test/ui/issues/issue-17816.rs b/tests/ui/issues/issue-17816.rs similarity index 100% rename from src/test/ui/issues/issue-17816.rs rename to tests/ui/issues/issue-17816.rs diff --git a/src/test/ui/issues/issue-17877.rs b/tests/ui/issues/issue-17877.rs similarity index 100% rename from src/test/ui/issues/issue-17877.rs rename to tests/ui/issues/issue-17877.rs diff --git a/src/test/ui/issues/issue-17897.rs b/tests/ui/issues/issue-17897.rs similarity index 100% rename from src/test/ui/issues/issue-17897.rs rename to tests/ui/issues/issue-17897.rs diff --git a/src/test/ui/issues/issue-17904-2.rs b/tests/ui/issues/issue-17904-2.rs similarity index 100% rename from src/test/ui/issues/issue-17904-2.rs rename to tests/ui/issues/issue-17904-2.rs diff --git a/src/test/ui/issues/issue-17904-2.stderr b/tests/ui/issues/issue-17904-2.stderr similarity index 100% rename from src/test/ui/issues/issue-17904-2.stderr rename to tests/ui/issues/issue-17904-2.stderr diff --git a/src/test/ui/issues/issue-17904.rs b/tests/ui/issues/issue-17904.rs similarity index 100% rename from src/test/ui/issues/issue-17904.rs rename to tests/ui/issues/issue-17904.rs diff --git a/src/test/ui/issues/issue-17905-2.rs b/tests/ui/issues/issue-17905-2.rs similarity index 100% rename from src/test/ui/issues/issue-17905-2.rs rename to tests/ui/issues/issue-17905-2.rs diff --git a/src/test/ui/issues/issue-17905-2.stderr b/tests/ui/issues/issue-17905-2.stderr similarity index 100% rename from src/test/ui/issues/issue-17905-2.stderr rename to tests/ui/issues/issue-17905-2.stderr diff --git a/src/test/ui/issues/issue-17905.rs b/tests/ui/issues/issue-17905.rs similarity index 100% rename from src/test/ui/issues/issue-17905.rs rename to tests/ui/issues/issue-17905.rs diff --git a/src/test/ui/issues/issue-17933.rs b/tests/ui/issues/issue-17933.rs similarity index 100% rename from src/test/ui/issues/issue-17933.rs rename to tests/ui/issues/issue-17933.rs diff --git a/src/test/ui/issues/issue-17933.stderr b/tests/ui/issues/issue-17933.stderr similarity index 100% rename from src/test/ui/issues/issue-17933.stderr rename to tests/ui/issues/issue-17933.stderr diff --git a/src/test/ui/issues/issue-17954.rs b/tests/ui/issues/issue-17954.rs similarity index 100% rename from src/test/ui/issues/issue-17954.rs rename to tests/ui/issues/issue-17954.rs diff --git a/src/test/ui/issues/issue-17954.stderr b/tests/ui/issues/issue-17954.stderr similarity index 100% rename from src/test/ui/issues/issue-17954.stderr rename to tests/ui/issues/issue-17954.stderr diff --git a/src/test/ui/issues/issue-17959.rs b/tests/ui/issues/issue-17959.rs similarity index 100% rename from src/test/ui/issues/issue-17959.rs rename to tests/ui/issues/issue-17959.rs diff --git a/src/test/ui/issues/issue-17959.stderr b/tests/ui/issues/issue-17959.stderr similarity index 100% rename from src/test/ui/issues/issue-17959.stderr rename to tests/ui/issues/issue-17959.stderr diff --git a/src/test/ui/issues/issue-17994.rs b/tests/ui/issues/issue-17994.rs similarity index 100% rename from src/test/ui/issues/issue-17994.rs rename to tests/ui/issues/issue-17994.rs diff --git a/src/test/ui/issues/issue-17994.stderr b/tests/ui/issues/issue-17994.stderr similarity index 100% rename from src/test/ui/issues/issue-17994.stderr rename to tests/ui/issues/issue-17994.stderr diff --git a/src/test/ui/issues/issue-17999.rs b/tests/ui/issues/issue-17999.rs similarity index 100% rename from src/test/ui/issues/issue-17999.rs rename to tests/ui/issues/issue-17999.rs diff --git a/src/test/ui/issues/issue-17999.stderr b/tests/ui/issues/issue-17999.stderr similarity index 100% rename from src/test/ui/issues/issue-17999.stderr rename to tests/ui/issues/issue-17999.stderr diff --git a/src/test/ui/issues/issue-18058.rs b/tests/ui/issues/issue-18058.rs similarity index 100% rename from src/test/ui/issues/issue-18058.rs rename to tests/ui/issues/issue-18058.rs diff --git a/src/test/ui/issues/issue-18058.stderr b/tests/ui/issues/issue-18058.stderr similarity index 100% rename from src/test/ui/issues/issue-18058.stderr rename to tests/ui/issues/issue-18058.stderr diff --git a/src/test/ui/issues/issue-18088.rs b/tests/ui/issues/issue-18088.rs similarity index 100% rename from src/test/ui/issues/issue-18088.rs rename to tests/ui/issues/issue-18088.rs diff --git a/src/test/ui/issues/issue-18107.rs b/tests/ui/issues/issue-18107.rs similarity index 100% rename from src/test/ui/issues/issue-18107.rs rename to tests/ui/issues/issue-18107.rs diff --git a/src/test/ui/issues/issue-18107.stderr b/tests/ui/issues/issue-18107.stderr similarity index 100% rename from src/test/ui/issues/issue-18107.stderr rename to tests/ui/issues/issue-18107.stderr diff --git a/src/test/ui/issues/issue-18110.rs b/tests/ui/issues/issue-18110.rs similarity index 100% rename from src/test/ui/issues/issue-18110.rs rename to tests/ui/issues/issue-18110.rs diff --git a/src/test/ui/issues/issue-18119.rs b/tests/ui/issues/issue-18119.rs similarity index 100% rename from src/test/ui/issues/issue-18119.rs rename to tests/ui/issues/issue-18119.rs diff --git a/src/test/ui/issues/issue-18119.stderr b/tests/ui/issues/issue-18119.stderr similarity index 100% rename from src/test/ui/issues/issue-18119.stderr rename to tests/ui/issues/issue-18119.stderr diff --git a/src/test/ui/issues/issue-18159.rs b/tests/ui/issues/issue-18159.rs similarity index 100% rename from src/test/ui/issues/issue-18159.rs rename to tests/ui/issues/issue-18159.rs diff --git a/src/test/ui/issues/issue-18159.stderr b/tests/ui/issues/issue-18159.stderr similarity index 100% rename from src/test/ui/issues/issue-18159.stderr rename to tests/ui/issues/issue-18159.stderr diff --git a/src/test/ui/issues/issue-18173.rs b/tests/ui/issues/issue-18173.rs similarity index 100% rename from src/test/ui/issues/issue-18173.rs rename to tests/ui/issues/issue-18173.rs diff --git a/src/test/ui/issues/issue-18183.rs b/tests/ui/issues/issue-18183.rs similarity index 100% rename from src/test/ui/issues/issue-18183.rs rename to tests/ui/issues/issue-18183.rs diff --git a/src/test/ui/issues/issue-18183.stderr b/tests/ui/issues/issue-18183.stderr similarity index 100% rename from src/test/ui/issues/issue-18183.stderr rename to tests/ui/issues/issue-18183.stderr diff --git a/src/test/ui/issues/issue-18188.rs b/tests/ui/issues/issue-18188.rs similarity index 100% rename from src/test/ui/issues/issue-18188.rs rename to tests/ui/issues/issue-18188.rs diff --git a/src/test/ui/issues/issue-1821.rs b/tests/ui/issues/issue-1821.rs similarity index 100% rename from src/test/ui/issues/issue-1821.rs rename to tests/ui/issues/issue-1821.rs diff --git a/src/test/ui/issues/issue-18232.rs b/tests/ui/issues/issue-18232.rs similarity index 100% rename from src/test/ui/issues/issue-18232.rs rename to tests/ui/issues/issue-18232.rs diff --git a/src/test/ui/issues/issue-18352.rs b/tests/ui/issues/issue-18352.rs similarity index 100% rename from src/test/ui/issues/issue-18352.rs rename to tests/ui/issues/issue-18352.rs diff --git a/src/test/ui/issues/issue-18353.rs b/tests/ui/issues/issue-18353.rs similarity index 100% rename from src/test/ui/issues/issue-18353.rs rename to tests/ui/issues/issue-18353.rs diff --git a/src/test/ui/issues/issue-18389.rs b/tests/ui/issues/issue-18389.rs similarity index 100% rename from src/test/ui/issues/issue-18389.rs rename to tests/ui/issues/issue-18389.rs diff --git a/src/test/ui/issues/issue-18389.stderr b/tests/ui/issues/issue-18389.stderr similarity index 100% rename from src/test/ui/issues/issue-18389.stderr rename to tests/ui/issues/issue-18389.stderr diff --git a/src/test/ui/issues/issue-18423.rs b/tests/ui/issues/issue-18423.rs similarity index 100% rename from src/test/ui/issues/issue-18423.rs rename to tests/ui/issues/issue-18423.rs diff --git a/src/test/ui/issues/issue-18423.stderr b/tests/ui/issues/issue-18423.stderr similarity index 100% rename from src/test/ui/issues/issue-18423.stderr rename to tests/ui/issues/issue-18423.stderr diff --git a/src/test/ui/issues/issue-18446-2.rs b/tests/ui/issues/issue-18446-2.rs similarity index 100% rename from src/test/ui/issues/issue-18446-2.rs rename to tests/ui/issues/issue-18446-2.rs diff --git a/src/test/ui/issues/issue-18446.rs b/tests/ui/issues/issue-18446.rs similarity index 100% rename from src/test/ui/issues/issue-18446.rs rename to tests/ui/issues/issue-18446.rs diff --git a/src/test/ui/issues/issue-18446.stderr b/tests/ui/issues/issue-18446.stderr similarity index 100% rename from src/test/ui/issues/issue-18446.stderr rename to tests/ui/issues/issue-18446.stderr diff --git a/src/test/ui/issues/issue-18464.rs b/tests/ui/issues/issue-18464.rs similarity index 100% rename from src/test/ui/issues/issue-18464.rs rename to tests/ui/issues/issue-18464.rs diff --git a/src/test/ui/issues/issue-18501.rs b/tests/ui/issues/issue-18501.rs similarity index 100% rename from src/test/ui/issues/issue-18501.rs rename to tests/ui/issues/issue-18501.rs diff --git a/src/test/ui/issues/issue-18514.rs b/tests/ui/issues/issue-18514.rs similarity index 100% rename from src/test/ui/issues/issue-18514.rs rename to tests/ui/issues/issue-18514.rs diff --git a/src/test/ui/issues/issue-18532.rs b/tests/ui/issues/issue-18532.rs similarity index 100% rename from src/test/ui/issues/issue-18532.rs rename to tests/ui/issues/issue-18532.rs diff --git a/src/test/ui/issues/issue-18532.stderr b/tests/ui/issues/issue-18532.stderr similarity index 100% rename from src/test/ui/issues/issue-18532.stderr rename to tests/ui/issues/issue-18532.stderr diff --git a/src/test/ui/issues/issue-18539.rs b/tests/ui/issues/issue-18539.rs similarity index 100% rename from src/test/ui/issues/issue-18539.rs rename to tests/ui/issues/issue-18539.rs diff --git a/src/test/ui/issues/issue-18566.rs b/tests/ui/issues/issue-18566.rs similarity index 100% rename from src/test/ui/issues/issue-18566.rs rename to tests/ui/issues/issue-18566.rs diff --git a/src/test/ui/issues/issue-18566.stderr b/tests/ui/issues/issue-18566.stderr similarity index 100% rename from src/test/ui/issues/issue-18566.stderr rename to tests/ui/issues/issue-18566.stderr diff --git a/src/test/ui/issues/issue-18576.rs b/tests/ui/issues/issue-18576.rs similarity index 100% rename from src/test/ui/issues/issue-18576.rs rename to tests/ui/issues/issue-18576.rs diff --git a/src/test/ui/issues/issue-18611.rs b/tests/ui/issues/issue-18611.rs similarity index 100% rename from src/test/ui/issues/issue-18611.rs rename to tests/ui/issues/issue-18611.rs diff --git a/src/test/ui/issues/issue-18611.stderr b/tests/ui/issues/issue-18611.stderr similarity index 100% rename from src/test/ui/issues/issue-18611.stderr rename to tests/ui/issues/issue-18611.stderr diff --git a/src/test/ui/issues/issue-18685.rs b/tests/ui/issues/issue-18685.rs similarity index 100% rename from src/test/ui/issues/issue-18685.rs rename to tests/ui/issues/issue-18685.rs diff --git a/src/test/ui/issues/issue-1871.rs b/tests/ui/issues/issue-1871.rs similarity index 100% rename from src/test/ui/issues/issue-1871.rs rename to tests/ui/issues/issue-1871.rs diff --git a/src/test/ui/issues/issue-1871.stderr b/tests/ui/issues/issue-1871.stderr similarity index 100% rename from src/test/ui/issues/issue-1871.stderr rename to tests/ui/issues/issue-1871.stderr diff --git a/src/test/ui/issues/issue-18711.rs b/tests/ui/issues/issue-18711.rs similarity index 100% rename from src/test/ui/issues/issue-18711.rs rename to tests/ui/issues/issue-18711.rs diff --git a/src/test/ui/issues/issue-18738.rs b/tests/ui/issues/issue-18738.rs similarity index 100% rename from src/test/ui/issues/issue-18738.rs rename to tests/ui/issues/issue-18738.rs diff --git a/src/test/ui/issues/issue-18767.rs b/tests/ui/issues/issue-18767.rs similarity index 100% rename from src/test/ui/issues/issue-18767.rs rename to tests/ui/issues/issue-18767.rs diff --git a/src/test/ui/issues/issue-18783.rs b/tests/ui/issues/issue-18783.rs similarity index 100% rename from src/test/ui/issues/issue-18783.rs rename to tests/ui/issues/issue-18783.rs diff --git a/src/test/ui/issues/issue-18783.stderr b/tests/ui/issues/issue-18783.stderr similarity index 100% rename from src/test/ui/issues/issue-18783.stderr rename to tests/ui/issues/issue-18783.stderr diff --git a/src/test/ui/issues/issue-18804/auxiliary/lib.rs b/tests/ui/issues/issue-18804/auxiliary/lib.rs similarity index 100% rename from src/test/ui/issues/issue-18804/auxiliary/lib.rs rename to tests/ui/issues/issue-18804/auxiliary/lib.rs diff --git a/src/test/ui/issues/issue-18804/main.rs b/tests/ui/issues/issue-18804/main.rs similarity index 100% rename from src/test/ui/issues/issue-18804/main.rs rename to tests/ui/issues/issue-18804/main.rs diff --git a/src/test/ui/issues/issue-18809.rs b/tests/ui/issues/issue-18809.rs similarity index 100% rename from src/test/ui/issues/issue-18809.rs rename to tests/ui/issues/issue-18809.rs diff --git a/src/test/ui/issues/issue-18819.rs b/tests/ui/issues/issue-18819.rs similarity index 100% rename from src/test/ui/issues/issue-18819.rs rename to tests/ui/issues/issue-18819.rs diff --git a/src/test/ui/issues/issue-18819.stderr b/tests/ui/issues/issue-18819.stderr similarity index 100% rename from src/test/ui/issues/issue-18819.stderr rename to tests/ui/issues/issue-18819.stderr diff --git a/src/test/ui/issues/issue-18845.rs b/tests/ui/issues/issue-18845.rs similarity index 100% rename from src/test/ui/issues/issue-18845.rs rename to tests/ui/issues/issue-18845.rs diff --git a/src/test/ui/issues/issue-18859.rs b/tests/ui/issues/issue-18859.rs similarity index 100% rename from src/test/ui/issues/issue-18859.rs rename to tests/ui/issues/issue-18859.rs diff --git a/src/test/ui/issues/issue-18906.rs b/tests/ui/issues/issue-18906.rs similarity index 100% rename from src/test/ui/issues/issue-18906.rs rename to tests/ui/issues/issue-18906.rs diff --git a/src/test/ui/issues/issue-18913.rs b/tests/ui/issues/issue-18913.rs similarity index 100% rename from src/test/ui/issues/issue-18913.rs rename to tests/ui/issues/issue-18913.rs diff --git a/src/test/ui/issues/issue-18919.rs b/tests/ui/issues/issue-18919.rs similarity index 100% rename from src/test/ui/issues/issue-18919.rs rename to tests/ui/issues/issue-18919.rs diff --git a/src/test/ui/issues/issue-18919.stderr b/tests/ui/issues/issue-18919.stderr similarity index 100% rename from src/test/ui/issues/issue-18919.stderr rename to tests/ui/issues/issue-18919.stderr diff --git a/src/test/ui/issues/issue-18952.rs b/tests/ui/issues/issue-18952.rs similarity index 100% rename from src/test/ui/issues/issue-18952.rs rename to tests/ui/issues/issue-18952.rs diff --git a/src/test/ui/issues/issue-18959.rs b/tests/ui/issues/issue-18959.rs similarity index 100% rename from src/test/ui/issues/issue-18959.rs rename to tests/ui/issues/issue-18959.rs diff --git a/src/test/ui/issues/issue-18959.stderr b/tests/ui/issues/issue-18959.stderr similarity index 100% rename from src/test/ui/issues/issue-18959.stderr rename to tests/ui/issues/issue-18959.stderr diff --git a/src/test/ui/issues/issue-18988.rs b/tests/ui/issues/issue-18988.rs similarity index 100% rename from src/test/ui/issues/issue-18988.rs rename to tests/ui/issues/issue-18988.rs diff --git a/src/test/ui/issues/issue-1900.rs b/tests/ui/issues/issue-1900.rs similarity index 100% rename from src/test/ui/issues/issue-1900.rs rename to tests/ui/issues/issue-1900.rs diff --git a/src/test/ui/issues/issue-1900.stderr b/tests/ui/issues/issue-1900.stderr similarity index 100% rename from src/test/ui/issues/issue-1900.stderr rename to tests/ui/issues/issue-1900.stderr diff --git a/src/test/ui/issues/issue-19001.rs b/tests/ui/issues/issue-19001.rs similarity index 100% rename from src/test/ui/issues/issue-19001.rs rename to tests/ui/issues/issue-19001.rs diff --git a/src/test/ui/issues/issue-19037.rs b/tests/ui/issues/issue-19037.rs similarity index 100% rename from src/test/ui/issues/issue-19037.rs rename to tests/ui/issues/issue-19037.rs diff --git a/src/test/ui/issues/issue-19086.rs b/tests/ui/issues/issue-19086.rs similarity index 100% rename from src/test/ui/issues/issue-19086.rs rename to tests/ui/issues/issue-19086.rs diff --git a/src/test/ui/issues/issue-19086.stderr b/tests/ui/issues/issue-19086.stderr similarity index 100% rename from src/test/ui/issues/issue-19086.stderr rename to tests/ui/issues/issue-19086.stderr diff --git a/src/test/ui/issues/issue-19097.rs b/tests/ui/issues/issue-19097.rs similarity index 100% rename from src/test/ui/issues/issue-19097.rs rename to tests/ui/issues/issue-19097.rs diff --git a/src/test/ui/issues/issue-19098.rs b/tests/ui/issues/issue-19098.rs similarity index 100% rename from src/test/ui/issues/issue-19098.rs rename to tests/ui/issues/issue-19098.rs diff --git a/src/test/ui/issues/issue-19100.fixed b/tests/ui/issues/issue-19100.fixed similarity index 100% rename from src/test/ui/issues/issue-19100.fixed rename to tests/ui/issues/issue-19100.fixed diff --git a/src/test/ui/issues/issue-19100.rs b/tests/ui/issues/issue-19100.rs similarity index 100% rename from src/test/ui/issues/issue-19100.rs rename to tests/ui/issues/issue-19100.rs diff --git a/src/test/ui/issues/issue-19100.stderr b/tests/ui/issues/issue-19100.stderr similarity index 100% rename from src/test/ui/issues/issue-19100.stderr rename to tests/ui/issues/issue-19100.stderr diff --git a/src/test/ui/issues/issue-19102.rs b/tests/ui/issues/issue-19102.rs similarity index 100% rename from src/test/ui/issues/issue-19102.rs rename to tests/ui/issues/issue-19102.rs diff --git a/src/test/ui/issues/issue-19127.rs b/tests/ui/issues/issue-19127.rs similarity index 100% rename from src/test/ui/issues/issue-19127.rs rename to tests/ui/issues/issue-19127.rs diff --git a/src/test/ui/issues/issue-19129-1.rs b/tests/ui/issues/issue-19129-1.rs similarity index 100% rename from src/test/ui/issues/issue-19129-1.rs rename to tests/ui/issues/issue-19129-1.rs diff --git a/src/test/ui/issues/issue-19129-2.rs b/tests/ui/issues/issue-19129-2.rs similarity index 100% rename from src/test/ui/issues/issue-19129-2.rs rename to tests/ui/issues/issue-19129-2.rs diff --git a/src/test/ui/issues/issue-19135.rs b/tests/ui/issues/issue-19135.rs similarity index 100% rename from src/test/ui/issues/issue-19135.rs rename to tests/ui/issues/issue-19135.rs diff --git a/src/test/ui/issues/issue-1920-1.rs b/tests/ui/issues/issue-1920-1.rs similarity index 100% rename from src/test/ui/issues/issue-1920-1.rs rename to tests/ui/issues/issue-1920-1.rs diff --git a/src/test/ui/issues/issue-1920-1.stderr b/tests/ui/issues/issue-1920-1.stderr similarity index 100% rename from src/test/ui/issues/issue-1920-1.stderr rename to tests/ui/issues/issue-1920-1.stderr diff --git a/src/test/ui/issues/issue-1920-2.rs b/tests/ui/issues/issue-1920-2.rs similarity index 100% rename from src/test/ui/issues/issue-1920-2.rs rename to tests/ui/issues/issue-1920-2.rs diff --git a/src/test/ui/issues/issue-1920-2.stderr b/tests/ui/issues/issue-1920-2.stderr similarity index 100% rename from src/test/ui/issues/issue-1920-2.stderr rename to tests/ui/issues/issue-1920-2.stderr diff --git a/src/test/ui/issues/issue-1920-3.rs b/tests/ui/issues/issue-1920-3.rs similarity index 100% rename from src/test/ui/issues/issue-1920-3.rs rename to tests/ui/issues/issue-1920-3.rs diff --git a/src/test/ui/issues/issue-1920-3.stderr b/tests/ui/issues/issue-1920-3.stderr similarity index 100% rename from src/test/ui/issues/issue-1920-3.stderr rename to tests/ui/issues/issue-1920-3.stderr diff --git a/src/test/ui/issues/issue-19244-1.rs b/tests/ui/issues/issue-19244-1.rs similarity index 100% rename from src/test/ui/issues/issue-19244-1.rs rename to tests/ui/issues/issue-19244-1.rs diff --git a/src/test/ui/issues/issue-19244-1.stderr b/tests/ui/issues/issue-19244-1.stderr similarity index 100% rename from src/test/ui/issues/issue-19244-1.stderr rename to tests/ui/issues/issue-19244-1.stderr diff --git a/src/test/ui/issues/issue-19244-2.rs b/tests/ui/issues/issue-19244-2.rs similarity index 100% rename from src/test/ui/issues/issue-19244-2.rs rename to tests/ui/issues/issue-19244-2.rs diff --git a/src/test/ui/issues/issue-19244-2.stderr b/tests/ui/issues/issue-19244-2.stderr similarity index 100% rename from src/test/ui/issues/issue-19244-2.stderr rename to tests/ui/issues/issue-19244-2.stderr diff --git a/src/test/ui/issues/issue-19293.rs b/tests/ui/issues/issue-19293.rs similarity index 100% rename from src/test/ui/issues/issue-19293.rs rename to tests/ui/issues/issue-19293.rs diff --git a/src/test/ui/issues/issue-19340-1.rs b/tests/ui/issues/issue-19340-1.rs similarity index 100% rename from src/test/ui/issues/issue-19340-1.rs rename to tests/ui/issues/issue-19340-1.rs diff --git a/src/test/ui/issues/issue-19340-2.rs b/tests/ui/issues/issue-19340-2.rs similarity index 100% rename from src/test/ui/issues/issue-19340-2.rs rename to tests/ui/issues/issue-19340-2.rs diff --git a/src/test/ui/issues/issue-19367.rs b/tests/ui/issues/issue-19367.rs similarity index 100% rename from src/test/ui/issues/issue-19367.rs rename to tests/ui/issues/issue-19367.rs diff --git a/src/test/ui/issues/issue-19380.rs b/tests/ui/issues/issue-19380.rs similarity index 100% rename from src/test/ui/issues/issue-19380.rs rename to tests/ui/issues/issue-19380.rs diff --git a/src/test/ui/issues/issue-19380.stderr b/tests/ui/issues/issue-19380.stderr similarity index 100% rename from src/test/ui/issues/issue-19380.stderr rename to tests/ui/issues/issue-19380.stderr diff --git a/src/test/ui/issues/issue-19398.rs b/tests/ui/issues/issue-19398.rs similarity index 100% rename from src/test/ui/issues/issue-19398.rs rename to tests/ui/issues/issue-19398.rs diff --git a/src/test/ui/issues/issue-19404.rs b/tests/ui/issues/issue-19404.rs similarity index 100% rename from src/test/ui/issues/issue-19404.rs rename to tests/ui/issues/issue-19404.rs diff --git a/src/test/ui/issues/issue-19479.rs b/tests/ui/issues/issue-19479.rs similarity index 100% rename from src/test/ui/issues/issue-19479.rs rename to tests/ui/issues/issue-19479.rs diff --git a/src/test/ui/issues/issue-19482.rs b/tests/ui/issues/issue-19482.rs similarity index 100% rename from src/test/ui/issues/issue-19482.rs rename to tests/ui/issues/issue-19482.rs diff --git a/src/test/ui/issues/issue-19482.stderr b/tests/ui/issues/issue-19482.stderr similarity index 100% rename from src/test/ui/issues/issue-19482.stderr rename to tests/ui/issues/issue-19482.stderr diff --git a/src/test/ui/issues/issue-19499.rs b/tests/ui/issues/issue-19499.rs similarity index 100% rename from src/test/ui/issues/issue-19499.rs rename to tests/ui/issues/issue-19499.rs diff --git a/src/test/ui/issues/issue-19521.rs b/tests/ui/issues/issue-19521.rs similarity index 100% rename from src/test/ui/issues/issue-19521.rs rename to tests/ui/issues/issue-19521.rs diff --git a/src/test/ui/issues/issue-19521.stderr b/tests/ui/issues/issue-19521.stderr similarity index 100% rename from src/test/ui/issues/issue-19521.stderr rename to tests/ui/issues/issue-19521.stderr diff --git a/src/test/ui/issues/issue-19601.rs b/tests/ui/issues/issue-19601.rs similarity index 100% rename from src/test/ui/issues/issue-19601.rs rename to tests/ui/issues/issue-19601.rs diff --git a/src/test/ui/issues/issue-1962.fixed b/tests/ui/issues/issue-1962.fixed similarity index 100% rename from src/test/ui/issues/issue-1962.fixed rename to tests/ui/issues/issue-1962.fixed diff --git a/src/test/ui/issues/issue-1962.rs b/tests/ui/issues/issue-1962.rs similarity index 100% rename from src/test/ui/issues/issue-1962.rs rename to tests/ui/issues/issue-1962.rs diff --git a/src/test/ui/issues/issue-1962.stderr b/tests/ui/issues/issue-1962.stderr similarity index 100% rename from src/test/ui/issues/issue-1962.stderr rename to tests/ui/issues/issue-1962.stderr diff --git a/src/test/ui/issues/issue-19631.rs b/tests/ui/issues/issue-19631.rs similarity index 100% rename from src/test/ui/issues/issue-19631.rs rename to tests/ui/issues/issue-19631.rs diff --git a/src/test/ui/issues/issue-19632.rs b/tests/ui/issues/issue-19632.rs similarity index 100% rename from src/test/ui/issues/issue-19632.rs rename to tests/ui/issues/issue-19632.rs diff --git a/src/test/ui/issues/issue-19692.rs b/tests/ui/issues/issue-19692.rs similarity index 100% rename from src/test/ui/issues/issue-19692.rs rename to tests/ui/issues/issue-19692.rs diff --git a/src/test/ui/issues/issue-19692.stderr b/tests/ui/issues/issue-19692.stderr similarity index 100% rename from src/test/ui/issues/issue-19692.stderr rename to tests/ui/issues/issue-19692.stderr diff --git a/src/test/ui/issues/issue-19707.rs b/tests/ui/issues/issue-19707.rs similarity index 100% rename from src/test/ui/issues/issue-19707.rs rename to tests/ui/issues/issue-19707.rs diff --git a/src/test/ui/issues/issue-19707.stderr b/tests/ui/issues/issue-19707.stderr similarity index 100% rename from src/test/ui/issues/issue-19707.stderr rename to tests/ui/issues/issue-19707.stderr diff --git a/src/test/ui/issues/issue-19734.rs b/tests/ui/issues/issue-19734.rs similarity index 100% rename from src/test/ui/issues/issue-19734.rs rename to tests/ui/issues/issue-19734.rs diff --git a/src/test/ui/issues/issue-19734.stderr b/tests/ui/issues/issue-19734.stderr similarity index 100% rename from src/test/ui/issues/issue-19734.stderr rename to tests/ui/issues/issue-19734.stderr diff --git a/src/test/ui/issues/issue-1974.rs b/tests/ui/issues/issue-1974.rs similarity index 100% rename from src/test/ui/issues/issue-1974.rs rename to tests/ui/issues/issue-1974.rs diff --git a/src/test/ui/issues/issue-19811-escape-unicode.rs b/tests/ui/issues/issue-19811-escape-unicode.rs similarity index 100% rename from src/test/ui/issues/issue-19811-escape-unicode.rs rename to tests/ui/issues/issue-19811-escape-unicode.rs diff --git a/src/test/ui/issues/issue-19850.rs b/tests/ui/issues/issue-19850.rs similarity index 100% rename from src/test/ui/issues/issue-19850.rs rename to tests/ui/issues/issue-19850.rs diff --git a/src/test/ui/issues/issue-19922.rs b/tests/ui/issues/issue-19922.rs similarity index 100% rename from src/test/ui/issues/issue-19922.rs rename to tests/ui/issues/issue-19922.rs diff --git a/src/test/ui/issues/issue-19922.stderr b/tests/ui/issues/issue-19922.stderr similarity index 100% rename from src/test/ui/issues/issue-19922.stderr rename to tests/ui/issues/issue-19922.stderr diff --git a/src/test/ui/issues/issue-19982.rs b/tests/ui/issues/issue-19982.rs similarity index 100% rename from src/test/ui/issues/issue-19982.rs rename to tests/ui/issues/issue-19982.rs diff --git a/src/test/ui/issues/issue-19991.rs b/tests/ui/issues/issue-19991.rs similarity index 100% rename from src/test/ui/issues/issue-19991.rs rename to tests/ui/issues/issue-19991.rs diff --git a/src/test/ui/issues/issue-19991.stderr b/tests/ui/issues/issue-19991.stderr similarity index 100% rename from src/test/ui/issues/issue-19991.stderr rename to tests/ui/issues/issue-19991.stderr diff --git a/src/test/ui/issues/issue-20009.rs b/tests/ui/issues/issue-20009.rs similarity index 100% rename from src/test/ui/issues/issue-20009.rs rename to tests/ui/issues/issue-20009.rs diff --git a/src/test/ui/issues/issue-20055-box-trait.rs b/tests/ui/issues/issue-20055-box-trait.rs similarity index 100% rename from src/test/ui/issues/issue-20055-box-trait.rs rename to tests/ui/issues/issue-20055-box-trait.rs diff --git a/src/test/ui/issues/issue-20055-box-unsized-array.rs b/tests/ui/issues/issue-20055-box-unsized-array.rs similarity index 100% rename from src/test/ui/issues/issue-20055-box-unsized-array.rs rename to tests/ui/issues/issue-20055-box-unsized-array.rs diff --git a/src/test/ui/issues/issue-20162.rs b/tests/ui/issues/issue-20162.rs similarity index 100% rename from src/test/ui/issues/issue-20162.rs rename to tests/ui/issues/issue-20162.rs diff --git a/src/test/ui/issues/issue-20162.stderr b/tests/ui/issues/issue-20162.stderr similarity index 100% rename from src/test/ui/issues/issue-20162.stderr rename to tests/ui/issues/issue-20162.stderr diff --git a/src/test/ui/issues/issue-20174.rs b/tests/ui/issues/issue-20174.rs similarity index 100% rename from src/test/ui/issues/issue-20174.rs rename to tests/ui/issues/issue-20174.rs diff --git a/src/test/ui/issues/issue-20186.rs b/tests/ui/issues/issue-20186.rs similarity index 100% rename from src/test/ui/issues/issue-20186.rs rename to tests/ui/issues/issue-20186.rs diff --git a/src/test/ui/issues/issue-20225.rs b/tests/ui/issues/issue-20225.rs similarity index 100% rename from src/test/ui/issues/issue-20225.rs rename to tests/ui/issues/issue-20225.rs diff --git a/src/test/ui/issues/issue-20225.stderr b/tests/ui/issues/issue-20225.stderr similarity index 100% rename from src/test/ui/issues/issue-20225.stderr rename to tests/ui/issues/issue-20225.stderr diff --git a/src/test/ui/issues/issue-20261.rs b/tests/ui/issues/issue-20261.rs similarity index 100% rename from src/test/ui/issues/issue-20261.rs rename to tests/ui/issues/issue-20261.rs diff --git a/src/test/ui/issues/issue-20261.stderr b/tests/ui/issues/issue-20261.stderr similarity index 100% rename from src/test/ui/issues/issue-20261.stderr rename to tests/ui/issues/issue-20261.stderr diff --git a/src/test/ui/issues/issue-20313-rpass.rs b/tests/ui/issues/issue-20313-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-20313-rpass.rs rename to tests/ui/issues/issue-20313-rpass.rs diff --git a/src/test/ui/issues/issue-20313.rs b/tests/ui/issues/issue-20313.rs similarity index 100% rename from src/test/ui/issues/issue-20313.rs rename to tests/ui/issues/issue-20313.rs diff --git a/src/test/ui/issues/issue-20313.stderr b/tests/ui/issues/issue-20313.stderr similarity index 100% rename from src/test/ui/issues/issue-20313.stderr rename to tests/ui/issues/issue-20313.stderr diff --git a/src/test/ui/issues/issue-20389.rs b/tests/ui/issues/issue-20389.rs similarity index 100% rename from src/test/ui/issues/issue-20389.rs rename to tests/ui/issues/issue-20389.rs diff --git a/src/test/ui/issues/issue-20396.rs b/tests/ui/issues/issue-20396.rs similarity index 100% rename from src/test/ui/issues/issue-20396.rs rename to tests/ui/issues/issue-20396.rs diff --git a/src/test/ui/issues/issue-20413.rs b/tests/ui/issues/issue-20413.rs similarity index 100% rename from src/test/ui/issues/issue-20413.rs rename to tests/ui/issues/issue-20413.rs diff --git a/src/test/ui/issues/issue-20413.stderr b/tests/ui/issues/issue-20413.stderr similarity index 100% rename from src/test/ui/issues/issue-20413.stderr rename to tests/ui/issues/issue-20413.stderr diff --git a/src/test/ui/issues/issue-20414.rs b/tests/ui/issues/issue-20414.rs similarity index 100% rename from src/test/ui/issues/issue-20414.rs rename to tests/ui/issues/issue-20414.rs diff --git a/src/test/ui/issues/issue-20427.rs b/tests/ui/issues/issue-20427.rs similarity index 100% rename from src/test/ui/issues/issue-20427.rs rename to tests/ui/issues/issue-20427.rs diff --git a/src/test/ui/issues/issue-20433.rs b/tests/ui/issues/issue-20433.rs similarity index 100% rename from src/test/ui/issues/issue-20433.rs rename to tests/ui/issues/issue-20433.rs diff --git a/src/test/ui/issues/issue-20433.stderr b/tests/ui/issues/issue-20433.stderr similarity index 100% rename from src/test/ui/issues/issue-20433.stderr rename to tests/ui/issues/issue-20433.stderr diff --git a/src/test/ui/issues/issue-20454.rs b/tests/ui/issues/issue-20454.rs similarity index 100% rename from src/test/ui/issues/issue-20454.rs rename to tests/ui/issues/issue-20454.rs diff --git a/src/test/ui/issues/issue-20544.rs b/tests/ui/issues/issue-20544.rs similarity index 100% rename from src/test/ui/issues/issue-20544.rs rename to tests/ui/issues/issue-20544.rs diff --git a/src/test/ui/issues/issue-20575.rs b/tests/ui/issues/issue-20575.rs similarity index 100% rename from src/test/ui/issues/issue-20575.rs rename to tests/ui/issues/issue-20575.rs diff --git a/src/test/ui/issues/issue-20605.rs b/tests/ui/issues/issue-20605.rs similarity index 100% rename from src/test/ui/issues/issue-20605.rs rename to tests/ui/issues/issue-20605.rs diff --git a/src/test/ui/issues/issue-20605.stderr b/tests/ui/issues/issue-20605.stderr similarity index 100% rename from src/test/ui/issues/issue-20605.stderr rename to tests/ui/issues/issue-20605.stderr diff --git a/src/test/ui/issues/issue-20616.rs b/tests/ui/issues/issue-20616.rs similarity index 100% rename from src/test/ui/issues/issue-20616.rs rename to tests/ui/issues/issue-20616.rs diff --git a/src/test/ui/issues/issue-2063-resource.rs b/tests/ui/issues/issue-2063-resource.rs similarity index 100% rename from src/test/ui/issues/issue-2063-resource.rs rename to tests/ui/issues/issue-2063-resource.rs diff --git a/src/test/ui/issues/issue-2063.rs b/tests/ui/issues/issue-2063.rs similarity index 100% rename from src/test/ui/issues/issue-2063.rs rename to tests/ui/issues/issue-2063.rs diff --git a/src/test/ui/issues/issue-20644.rs b/tests/ui/issues/issue-20644.rs similarity index 100% rename from src/test/ui/issues/issue-20644.rs rename to tests/ui/issues/issue-20644.rs diff --git a/src/test/ui/issues/issue-20676.rs b/tests/ui/issues/issue-20676.rs similarity index 100% rename from src/test/ui/issues/issue-20676.rs rename to tests/ui/issues/issue-20676.rs diff --git a/src/test/ui/issues/issue-20714.rs b/tests/ui/issues/issue-20714.rs similarity index 100% rename from src/test/ui/issues/issue-20714.rs rename to tests/ui/issues/issue-20714.rs diff --git a/src/test/ui/issues/issue-20714.stderr b/tests/ui/issues/issue-20714.stderr similarity index 100% rename from src/test/ui/issues/issue-20714.stderr rename to tests/ui/issues/issue-20714.stderr diff --git a/src/test/ui/issues/issue-2074.rs b/tests/ui/issues/issue-2074.rs similarity index 100% rename from src/test/ui/issues/issue-2074.rs rename to tests/ui/issues/issue-2074.rs diff --git a/src/test/ui/issues/issue-20763-1.rs b/tests/ui/issues/issue-20763-1.rs similarity index 100% rename from src/test/ui/issues/issue-20763-1.rs rename to tests/ui/issues/issue-20763-1.rs diff --git a/src/test/ui/issues/issue-20763-2.rs b/tests/ui/issues/issue-20763-2.rs similarity index 100% rename from src/test/ui/issues/issue-20763-2.rs rename to tests/ui/issues/issue-20763-2.rs diff --git a/src/test/ui/issues/issue-20772.rs b/tests/ui/issues/issue-20772.rs similarity index 100% rename from src/test/ui/issues/issue-20772.rs rename to tests/ui/issues/issue-20772.rs diff --git a/src/test/ui/issues/issue-20772.stderr b/tests/ui/issues/issue-20772.stderr similarity index 100% rename from src/test/ui/issues/issue-20772.stderr rename to tests/ui/issues/issue-20772.stderr diff --git a/src/test/ui/issues/issue-20797.rs b/tests/ui/issues/issue-20797.rs similarity index 100% rename from src/test/ui/issues/issue-20797.rs rename to tests/ui/issues/issue-20797.rs diff --git a/src/test/ui/issues/issue-20803.rs b/tests/ui/issues/issue-20803.rs similarity index 100% rename from src/test/ui/issues/issue-20803.rs rename to tests/ui/issues/issue-20803.rs diff --git a/src/test/ui/issues/issue-20831-debruijn.rs b/tests/ui/issues/issue-20831-debruijn.rs similarity index 100% rename from src/test/ui/issues/issue-20831-debruijn.rs rename to tests/ui/issues/issue-20831-debruijn.rs diff --git a/src/test/ui/issues/issue-20831-debruijn.stderr b/tests/ui/issues/issue-20831-debruijn.stderr similarity index 100% rename from src/test/ui/issues/issue-20831-debruijn.stderr rename to tests/ui/issues/issue-20831-debruijn.stderr diff --git a/src/test/ui/issues/issue-20847.rs b/tests/ui/issues/issue-20847.rs similarity index 100% rename from src/test/ui/issues/issue-20847.rs rename to tests/ui/issues/issue-20847.rs diff --git a/src/test/ui/issues/issue-20939.rs b/tests/ui/issues/issue-20939.rs similarity index 100% rename from src/test/ui/issues/issue-20939.rs rename to tests/ui/issues/issue-20939.rs diff --git a/src/test/ui/issues/issue-20939.stderr b/tests/ui/issues/issue-20939.stderr similarity index 100% rename from src/test/ui/issues/issue-20939.stderr rename to tests/ui/issues/issue-20939.stderr diff --git a/src/test/ui/issues/issue-20953.rs b/tests/ui/issues/issue-20953.rs similarity index 100% rename from src/test/ui/issues/issue-20953.rs rename to tests/ui/issues/issue-20953.rs diff --git a/src/test/ui/issues/issue-20971.rs b/tests/ui/issues/issue-20971.rs similarity index 100% rename from src/test/ui/issues/issue-20971.rs rename to tests/ui/issues/issue-20971.rs diff --git a/src/test/ui/issues/issue-21033.rs b/tests/ui/issues/issue-21033.rs similarity index 100% rename from src/test/ui/issues/issue-21033.rs rename to tests/ui/issues/issue-21033.rs diff --git a/src/test/ui/issues/issue-21140.rs b/tests/ui/issues/issue-21140.rs similarity index 100% rename from src/test/ui/issues/issue-21140.rs rename to tests/ui/issues/issue-21140.rs diff --git a/src/test/ui/issues/issue-21160.rs b/tests/ui/issues/issue-21160.rs similarity index 100% rename from src/test/ui/issues/issue-21160.rs rename to tests/ui/issues/issue-21160.rs diff --git a/src/test/ui/issues/issue-21160.stderr b/tests/ui/issues/issue-21160.stderr similarity index 100% rename from src/test/ui/issues/issue-21160.stderr rename to tests/ui/issues/issue-21160.stderr diff --git a/src/test/ui/issues/issue-21174-2.rs b/tests/ui/issues/issue-21174-2.rs similarity index 100% rename from src/test/ui/issues/issue-21174-2.rs rename to tests/ui/issues/issue-21174-2.rs diff --git a/src/test/ui/issues/issue-21174.rs b/tests/ui/issues/issue-21174.rs similarity index 100% rename from src/test/ui/issues/issue-21174.rs rename to tests/ui/issues/issue-21174.rs diff --git a/src/test/ui/issues/issue-21174.stderr b/tests/ui/issues/issue-21174.stderr similarity index 100% rename from src/test/ui/issues/issue-21174.stderr rename to tests/ui/issues/issue-21174.stderr diff --git a/src/test/ui/issues/issue-21177.rs b/tests/ui/issues/issue-21177.rs similarity index 100% rename from src/test/ui/issues/issue-21177.rs rename to tests/ui/issues/issue-21177.rs diff --git a/src/test/ui/issues/issue-21177.stderr b/tests/ui/issues/issue-21177.stderr similarity index 100% rename from src/test/ui/issues/issue-21177.stderr rename to tests/ui/issues/issue-21177.stderr diff --git a/src/test/ui/issues/issue-21202.rs b/tests/ui/issues/issue-21202.rs similarity index 100% rename from src/test/ui/issues/issue-21202.rs rename to tests/ui/issues/issue-21202.rs diff --git a/src/test/ui/issues/issue-21202.stderr b/tests/ui/issues/issue-21202.stderr similarity index 100% rename from src/test/ui/issues/issue-21202.stderr rename to tests/ui/issues/issue-21202.stderr diff --git a/src/test/ui/issues/issue-21245.rs b/tests/ui/issues/issue-21245.rs similarity index 100% rename from src/test/ui/issues/issue-21245.rs rename to tests/ui/issues/issue-21245.rs diff --git a/src/test/ui/issues/issue-21291.rs b/tests/ui/issues/issue-21291.rs similarity index 100% rename from src/test/ui/issues/issue-21291.rs rename to tests/ui/issues/issue-21291.rs diff --git a/src/test/ui/issues/issue-21306.rs b/tests/ui/issues/issue-21306.rs similarity index 100% rename from src/test/ui/issues/issue-21306.rs rename to tests/ui/issues/issue-21306.rs diff --git a/src/test/ui/issues/issue-21332.rs b/tests/ui/issues/issue-21332.rs similarity index 100% rename from src/test/ui/issues/issue-21332.rs rename to tests/ui/issues/issue-21332.rs diff --git a/src/test/ui/issues/issue-21332.stderr b/tests/ui/issues/issue-21332.stderr similarity index 100% rename from src/test/ui/issues/issue-21332.stderr rename to tests/ui/issues/issue-21332.stderr diff --git a/src/test/ui/issues/issue-21361.rs b/tests/ui/issues/issue-21361.rs similarity index 100% rename from src/test/ui/issues/issue-21361.rs rename to tests/ui/issues/issue-21361.rs diff --git a/src/test/ui/issues/issue-21384.rs b/tests/ui/issues/issue-21384.rs similarity index 100% rename from src/test/ui/issues/issue-21384.rs rename to tests/ui/issues/issue-21384.rs diff --git a/src/test/ui/issues/issue-21400.rs b/tests/ui/issues/issue-21400.rs similarity index 100% rename from src/test/ui/issues/issue-21400.rs rename to tests/ui/issues/issue-21400.rs diff --git a/src/test/ui/issues/issue-21402.rs b/tests/ui/issues/issue-21402.rs similarity index 100% rename from src/test/ui/issues/issue-21402.rs rename to tests/ui/issues/issue-21402.rs diff --git a/src/test/ui/issues/issue-21449.rs b/tests/ui/issues/issue-21449.rs similarity index 100% rename from src/test/ui/issues/issue-21449.rs rename to tests/ui/issues/issue-21449.rs diff --git a/src/test/ui/issues/issue-21449.stderr b/tests/ui/issues/issue-21449.stderr similarity index 100% rename from src/test/ui/issues/issue-21449.stderr rename to tests/ui/issues/issue-21449.stderr diff --git a/src/test/ui/issues/issue-2150.rs b/tests/ui/issues/issue-2150.rs similarity index 100% rename from src/test/ui/issues/issue-2150.rs rename to tests/ui/issues/issue-2150.rs diff --git a/src/test/ui/issues/issue-2150.stderr b/tests/ui/issues/issue-2150.stderr similarity index 100% rename from src/test/ui/issues/issue-2150.stderr rename to tests/ui/issues/issue-2150.stderr diff --git a/src/test/ui/issues/issue-2151.rs b/tests/ui/issues/issue-2151.rs similarity index 100% rename from src/test/ui/issues/issue-2151.rs rename to tests/ui/issues/issue-2151.rs diff --git a/src/test/ui/issues/issue-2151.stderr b/tests/ui/issues/issue-2151.stderr similarity index 100% rename from src/test/ui/issues/issue-2151.stderr rename to tests/ui/issues/issue-2151.stderr diff --git a/src/test/ui/issues/issue-21546.rs b/tests/ui/issues/issue-21546.rs similarity index 100% rename from src/test/ui/issues/issue-21546.rs rename to tests/ui/issues/issue-21546.rs diff --git a/src/test/ui/issues/issue-21546.stderr b/tests/ui/issues/issue-21546.stderr similarity index 100% rename from src/test/ui/issues/issue-21546.stderr rename to tests/ui/issues/issue-21546.stderr diff --git a/src/test/ui/issues/issue-21554.rs b/tests/ui/issues/issue-21554.rs similarity index 100% rename from src/test/ui/issues/issue-21554.rs rename to tests/ui/issues/issue-21554.rs diff --git a/src/test/ui/issues/issue-21554.stderr b/tests/ui/issues/issue-21554.stderr similarity index 100% rename from src/test/ui/issues/issue-21554.stderr rename to tests/ui/issues/issue-21554.stderr diff --git a/src/test/ui/issues/issue-21596.rs b/tests/ui/issues/issue-21596.rs similarity index 100% rename from src/test/ui/issues/issue-21596.rs rename to tests/ui/issues/issue-21596.rs diff --git a/src/test/ui/issues/issue-21596.stderr b/tests/ui/issues/issue-21596.stderr similarity index 100% rename from src/test/ui/issues/issue-21596.stderr rename to tests/ui/issues/issue-21596.stderr diff --git a/src/test/ui/issues/issue-21600.rs b/tests/ui/issues/issue-21600.rs similarity index 100% rename from src/test/ui/issues/issue-21600.rs rename to tests/ui/issues/issue-21600.rs diff --git a/src/test/ui/issues/issue-21600.stderr b/tests/ui/issues/issue-21600.stderr similarity index 100% rename from src/test/ui/issues/issue-21600.stderr rename to tests/ui/issues/issue-21600.stderr diff --git a/src/test/ui/issues/issue-21622.rs b/tests/ui/issues/issue-21622.rs similarity index 100% rename from src/test/ui/issues/issue-21622.rs rename to tests/ui/issues/issue-21622.rs diff --git a/src/test/ui/issues/issue-21634.rs b/tests/ui/issues/issue-21634.rs similarity index 100% rename from src/test/ui/issues/issue-21634.rs rename to tests/ui/issues/issue-21634.rs diff --git a/src/test/ui/issues/issue-21655.rs b/tests/ui/issues/issue-21655.rs similarity index 100% rename from src/test/ui/issues/issue-21655.rs rename to tests/ui/issues/issue-21655.rs diff --git a/src/test/ui/issues/issue-2170-exe.rs b/tests/ui/issues/issue-2170-exe.rs similarity index 100% rename from src/test/ui/issues/issue-2170-exe.rs rename to tests/ui/issues/issue-2170-exe.rs diff --git a/src/test/ui/issues/issue-21701.rs b/tests/ui/issues/issue-21701.rs similarity index 100% rename from src/test/ui/issues/issue-21701.rs rename to tests/ui/issues/issue-21701.rs diff --git a/src/test/ui/issues/issue-21701.stderr b/tests/ui/issues/issue-21701.stderr similarity index 100% rename from src/test/ui/issues/issue-21701.stderr rename to tests/ui/issues/issue-21701.stderr diff --git a/src/test/ui/issues/issue-21763.rs b/tests/ui/issues/issue-21763.rs similarity index 100% rename from src/test/ui/issues/issue-21763.rs rename to tests/ui/issues/issue-21763.rs diff --git a/src/test/ui/issues/issue-21763.stderr b/tests/ui/issues/issue-21763.stderr similarity index 100% rename from src/test/ui/issues/issue-21763.stderr rename to tests/ui/issues/issue-21763.stderr diff --git a/src/test/ui/issues/issue-21837.rs b/tests/ui/issues/issue-21837.rs similarity index 100% rename from src/test/ui/issues/issue-21837.rs rename to tests/ui/issues/issue-21837.rs diff --git a/src/test/ui/issues/issue-21837.stderr b/tests/ui/issues/issue-21837.stderr similarity index 100% rename from src/test/ui/issues/issue-21837.stderr rename to tests/ui/issues/issue-21837.stderr diff --git a/src/test/ui/issues/issue-21891.rs b/tests/ui/issues/issue-21891.rs similarity index 100% rename from src/test/ui/issues/issue-21891.rs rename to tests/ui/issues/issue-21891.rs diff --git a/src/test/ui/issues/issue-2190-1.rs b/tests/ui/issues/issue-2190-1.rs similarity index 100% rename from src/test/ui/issues/issue-2190-1.rs rename to tests/ui/issues/issue-2190-1.rs diff --git a/src/test/ui/issues/issue-21909.rs b/tests/ui/issues/issue-21909.rs similarity index 100% rename from src/test/ui/issues/issue-21909.rs rename to tests/ui/issues/issue-21909.rs diff --git a/src/test/ui/issues/issue-21922.rs b/tests/ui/issues/issue-21922.rs similarity index 100% rename from src/test/ui/issues/issue-21922.rs rename to tests/ui/issues/issue-21922.rs diff --git a/src/test/ui/issues/issue-21946.rs b/tests/ui/issues/issue-21946.rs similarity index 100% rename from src/test/ui/issues/issue-21946.rs rename to tests/ui/issues/issue-21946.rs diff --git a/src/test/ui/issues/issue-21946.stderr b/tests/ui/issues/issue-21946.stderr similarity index 100% rename from src/test/ui/issues/issue-21946.stderr rename to tests/ui/issues/issue-21946.stderr diff --git a/src/test/ui/issues/issue-21950.rs b/tests/ui/issues/issue-21950.rs similarity index 100% rename from src/test/ui/issues/issue-21950.rs rename to tests/ui/issues/issue-21950.rs diff --git a/src/test/ui/issues/issue-21950.stderr b/tests/ui/issues/issue-21950.stderr similarity index 100% rename from src/test/ui/issues/issue-21950.stderr rename to tests/ui/issues/issue-21950.stderr diff --git a/src/test/ui/issues/issue-21974.rs b/tests/ui/issues/issue-21974.rs similarity index 100% rename from src/test/ui/issues/issue-21974.rs rename to tests/ui/issues/issue-21974.rs diff --git a/src/test/ui/issues/issue-21974.stderr b/tests/ui/issues/issue-21974.stderr similarity index 100% rename from src/test/ui/issues/issue-21974.stderr rename to tests/ui/issues/issue-21974.stderr diff --git a/src/test/ui/issues/issue-22008.rs b/tests/ui/issues/issue-22008.rs similarity index 100% rename from src/test/ui/issues/issue-22008.rs rename to tests/ui/issues/issue-22008.rs diff --git a/src/test/ui/issues/issue-22034.rs b/tests/ui/issues/issue-22034.rs similarity index 100% rename from src/test/ui/issues/issue-22034.rs rename to tests/ui/issues/issue-22034.rs diff --git a/src/test/ui/issues/issue-22034.stderr b/tests/ui/issues/issue-22034.stderr similarity index 100% rename from src/test/ui/issues/issue-22034.stderr rename to tests/ui/issues/issue-22034.stderr diff --git a/src/test/ui/issues/issue-22036.rs b/tests/ui/issues/issue-22036.rs similarity index 100% rename from src/test/ui/issues/issue-22036.rs rename to tests/ui/issues/issue-22036.rs diff --git a/src/test/ui/issues/issue-2214.rs b/tests/ui/issues/issue-2214.rs similarity index 100% rename from src/test/ui/issues/issue-2214.rs rename to tests/ui/issues/issue-2214.rs diff --git a/src/test/ui/issues/issue-22258.rs b/tests/ui/issues/issue-22258.rs similarity index 100% rename from src/test/ui/issues/issue-22258.rs rename to tests/ui/issues/issue-22258.rs diff --git a/src/test/ui/issues/issue-22289.rs b/tests/ui/issues/issue-22289.rs similarity index 100% rename from src/test/ui/issues/issue-22289.rs rename to tests/ui/issues/issue-22289.rs diff --git a/src/test/ui/issues/issue-22289.stderr b/tests/ui/issues/issue-22289.stderr similarity index 100% rename from src/test/ui/issues/issue-22289.stderr rename to tests/ui/issues/issue-22289.stderr diff --git a/src/test/ui/issues/issue-22312.rs b/tests/ui/issues/issue-22312.rs similarity index 100% rename from src/test/ui/issues/issue-22312.rs rename to tests/ui/issues/issue-22312.rs diff --git a/src/test/ui/issues/issue-22312.stderr b/tests/ui/issues/issue-22312.stderr similarity index 100% rename from src/test/ui/issues/issue-22312.stderr rename to tests/ui/issues/issue-22312.stderr diff --git a/src/test/ui/issues/issue-22346.rs b/tests/ui/issues/issue-22346.rs similarity index 100% rename from src/test/ui/issues/issue-22346.rs rename to tests/ui/issues/issue-22346.rs diff --git a/src/test/ui/issues/issue-22356.rs b/tests/ui/issues/issue-22356.rs similarity index 100% rename from src/test/ui/issues/issue-22356.rs rename to tests/ui/issues/issue-22356.rs diff --git a/src/test/ui/issues/issue-22370.rs b/tests/ui/issues/issue-22370.rs similarity index 100% rename from src/test/ui/issues/issue-22370.rs rename to tests/ui/issues/issue-22370.rs diff --git a/src/test/ui/issues/issue-22370.stderr b/tests/ui/issues/issue-22370.stderr similarity index 100% rename from src/test/ui/issues/issue-22370.stderr rename to tests/ui/issues/issue-22370.stderr diff --git a/src/test/ui/issues/issue-22384.rs b/tests/ui/issues/issue-22384.rs similarity index 100% rename from src/test/ui/issues/issue-22384.rs rename to tests/ui/issues/issue-22384.rs diff --git a/src/test/ui/issues/issue-22384.stderr b/tests/ui/issues/issue-22384.stderr similarity index 100% rename from src/test/ui/issues/issue-22384.stderr rename to tests/ui/issues/issue-22384.stderr diff --git a/src/test/ui/issues/issue-22403.rs b/tests/ui/issues/issue-22403.rs similarity index 100% rename from src/test/ui/issues/issue-22403.rs rename to tests/ui/issues/issue-22403.rs diff --git a/src/test/ui/issues/issue-22426.rs b/tests/ui/issues/issue-22426.rs similarity index 100% rename from src/test/ui/issues/issue-22426.rs rename to tests/ui/issues/issue-22426.rs diff --git a/src/test/ui/issues/issue-22434.rs b/tests/ui/issues/issue-22434.rs similarity index 100% rename from src/test/ui/issues/issue-22434.rs rename to tests/ui/issues/issue-22434.rs diff --git a/src/test/ui/issues/issue-22434.stderr b/tests/ui/issues/issue-22434.stderr similarity index 100% rename from src/test/ui/issues/issue-22434.stderr rename to tests/ui/issues/issue-22434.stderr diff --git a/src/test/ui/issues/issue-22468.rs b/tests/ui/issues/issue-22468.rs similarity index 100% rename from src/test/ui/issues/issue-22468.rs rename to tests/ui/issues/issue-22468.rs diff --git a/src/test/ui/issues/issue-22468.stderr b/tests/ui/issues/issue-22468.stderr similarity index 100% rename from src/test/ui/issues/issue-22468.stderr rename to tests/ui/issues/issue-22468.stderr diff --git a/src/test/ui/issues/issue-22471.rs b/tests/ui/issues/issue-22471.rs similarity index 100% rename from src/test/ui/issues/issue-22471.rs rename to tests/ui/issues/issue-22471.rs diff --git a/src/test/ui/issues/issue-22536-copy-mustnt-zero.rs b/tests/ui/issues/issue-22536-copy-mustnt-zero.rs similarity index 100% rename from src/test/ui/issues/issue-22536-copy-mustnt-zero.rs rename to tests/ui/issues/issue-22536-copy-mustnt-zero.rs diff --git a/src/test/ui/issues/issue-22577.rs b/tests/ui/issues/issue-22577.rs similarity index 100% rename from src/test/ui/issues/issue-22577.rs rename to tests/ui/issues/issue-22577.rs diff --git a/src/test/ui/issues/issue-22599.rs b/tests/ui/issues/issue-22599.rs similarity index 100% rename from src/test/ui/issues/issue-22599.rs rename to tests/ui/issues/issue-22599.rs diff --git a/src/test/ui/issues/issue-22599.stderr b/tests/ui/issues/issue-22599.stderr similarity index 100% rename from src/test/ui/issues/issue-22599.stderr rename to tests/ui/issues/issue-22599.stderr diff --git a/src/test/ui/issues/issue-22603.rs b/tests/ui/issues/issue-22603.rs similarity index 100% rename from src/test/ui/issues/issue-22603.rs rename to tests/ui/issues/issue-22603.rs diff --git a/src/test/ui/issues/issue-22629.rs b/tests/ui/issues/issue-22629.rs similarity index 100% rename from src/test/ui/issues/issue-22629.rs rename to tests/ui/issues/issue-22629.rs diff --git a/src/test/ui/issues/issue-22638.polonius.stderr b/tests/ui/issues/issue-22638.polonius.stderr similarity index 100% rename from src/test/ui/issues/issue-22638.polonius.stderr rename to tests/ui/issues/issue-22638.polonius.stderr diff --git a/src/test/ui/issues/issue-22638.rs b/tests/ui/issues/issue-22638.rs similarity index 100% rename from src/test/ui/issues/issue-22638.rs rename to tests/ui/issues/issue-22638.rs diff --git a/src/test/ui/issues/issue-22638.stderr b/tests/ui/issues/issue-22638.stderr similarity index 100% rename from src/test/ui/issues/issue-22638.stderr rename to tests/ui/issues/issue-22638.stderr diff --git a/src/test/ui/issues/issue-22644.rs b/tests/ui/issues/issue-22644.rs similarity index 100% rename from src/test/ui/issues/issue-22644.rs rename to tests/ui/issues/issue-22644.rs diff --git a/src/test/ui/issues/issue-22644.stderr b/tests/ui/issues/issue-22644.stderr similarity index 100% rename from src/test/ui/issues/issue-22644.stderr rename to tests/ui/issues/issue-22644.stderr diff --git a/src/test/ui/issues/issue-22673.rs b/tests/ui/issues/issue-22673.rs similarity index 100% rename from src/test/ui/issues/issue-22673.rs rename to tests/ui/issues/issue-22673.rs diff --git a/src/test/ui/issues/issue-22684.rs b/tests/ui/issues/issue-22684.rs similarity index 100% rename from src/test/ui/issues/issue-22684.rs rename to tests/ui/issues/issue-22684.rs diff --git a/src/test/ui/issues/issue-22684.stderr b/tests/ui/issues/issue-22684.stderr similarity index 100% rename from src/test/ui/issues/issue-22684.stderr rename to tests/ui/issues/issue-22684.stderr diff --git a/src/test/ui/issues/issue-22706.rs b/tests/ui/issues/issue-22706.rs similarity index 100% rename from src/test/ui/issues/issue-22706.rs rename to tests/ui/issues/issue-22706.rs diff --git a/src/test/ui/issues/issue-22706.stderr b/tests/ui/issues/issue-22706.stderr similarity index 100% rename from src/test/ui/issues/issue-22706.stderr rename to tests/ui/issues/issue-22706.stderr diff --git a/src/test/ui/issues/issue-22777.rs b/tests/ui/issues/issue-22777.rs similarity index 100% rename from src/test/ui/issues/issue-22777.rs rename to tests/ui/issues/issue-22777.rs diff --git a/src/test/ui/issues/issue-22781.rs b/tests/ui/issues/issue-22781.rs similarity index 100% rename from src/test/ui/issues/issue-22781.rs rename to tests/ui/issues/issue-22781.rs diff --git a/src/test/ui/issues/issue-22789.rs b/tests/ui/issues/issue-22789.rs similarity index 100% rename from src/test/ui/issues/issue-22789.rs rename to tests/ui/issues/issue-22789.rs diff --git a/src/test/ui/issues/issue-2281-part1.rs b/tests/ui/issues/issue-2281-part1.rs similarity index 100% rename from src/test/ui/issues/issue-2281-part1.rs rename to tests/ui/issues/issue-2281-part1.rs diff --git a/src/test/ui/issues/issue-2281-part1.stderr b/tests/ui/issues/issue-2281-part1.stderr similarity index 100% rename from src/test/ui/issues/issue-2281-part1.stderr rename to tests/ui/issues/issue-2281-part1.stderr diff --git a/src/test/ui/issues/issue-22814.rs b/tests/ui/issues/issue-22814.rs similarity index 100% rename from src/test/ui/issues/issue-22814.rs rename to tests/ui/issues/issue-22814.rs diff --git a/src/test/ui/issues/issue-2284.rs b/tests/ui/issues/issue-2284.rs similarity index 100% rename from src/test/ui/issues/issue-2284.rs rename to tests/ui/issues/issue-2284.rs diff --git a/src/test/ui/issues/issue-22864-1.rs b/tests/ui/issues/issue-22864-1.rs similarity index 100% rename from src/test/ui/issues/issue-22864-1.rs rename to tests/ui/issues/issue-22864-1.rs diff --git a/src/test/ui/issues/issue-22864-2.rs b/tests/ui/issues/issue-22864-2.rs similarity index 100% rename from src/test/ui/issues/issue-22864-2.rs rename to tests/ui/issues/issue-22864-2.rs diff --git a/src/test/ui/issues/issue-22872.rs b/tests/ui/issues/issue-22872.rs similarity index 100% rename from src/test/ui/issues/issue-22872.rs rename to tests/ui/issues/issue-22872.rs diff --git a/src/test/ui/issues/issue-22872.stderr b/tests/ui/issues/issue-22872.stderr similarity index 100% rename from src/test/ui/issues/issue-22872.stderr rename to tests/ui/issues/issue-22872.stderr diff --git a/src/test/ui/issues/issue-22874.rs b/tests/ui/issues/issue-22874.rs similarity index 100% rename from src/test/ui/issues/issue-22874.rs rename to tests/ui/issues/issue-22874.rs diff --git a/src/test/ui/issues/issue-22874.stderr b/tests/ui/issues/issue-22874.stderr similarity index 100% rename from src/test/ui/issues/issue-22874.stderr rename to tests/ui/issues/issue-22874.stderr diff --git a/src/test/ui/issues/issue-2288.rs b/tests/ui/issues/issue-2288.rs similarity index 100% rename from src/test/ui/issues/issue-2288.rs rename to tests/ui/issues/issue-2288.rs diff --git a/src/test/ui/issues/issue-22886.rs b/tests/ui/issues/issue-22886.rs similarity index 100% rename from src/test/ui/issues/issue-22886.rs rename to tests/ui/issues/issue-22886.rs diff --git a/src/test/ui/issues/issue-22886.stderr b/tests/ui/issues/issue-22886.stderr similarity index 100% rename from src/test/ui/issues/issue-22886.stderr rename to tests/ui/issues/issue-22886.stderr diff --git a/src/test/ui/issues/issue-22894.rs b/tests/ui/issues/issue-22894.rs similarity index 100% rename from src/test/ui/issues/issue-22894.rs rename to tests/ui/issues/issue-22894.rs diff --git a/src/test/ui/issues/issue-22933-1.rs b/tests/ui/issues/issue-22933-1.rs similarity index 100% rename from src/test/ui/issues/issue-22933-1.rs rename to tests/ui/issues/issue-22933-1.rs diff --git a/src/test/ui/issues/issue-22933-2.rs b/tests/ui/issues/issue-22933-2.rs similarity index 100% rename from src/test/ui/issues/issue-22933-2.rs rename to tests/ui/issues/issue-22933-2.rs diff --git a/src/test/ui/issues/issue-22933-2.stderr b/tests/ui/issues/issue-22933-2.stderr similarity index 100% rename from src/test/ui/issues/issue-22933-2.stderr rename to tests/ui/issues/issue-22933-2.stderr diff --git a/src/test/ui/issues/issue-22992-2.rs b/tests/ui/issues/issue-22992-2.rs similarity index 100% rename from src/test/ui/issues/issue-22992-2.rs rename to tests/ui/issues/issue-22992-2.rs diff --git a/src/test/ui/issues/issue-22992.rs b/tests/ui/issues/issue-22992.rs similarity index 100% rename from src/test/ui/issues/issue-22992.rs rename to tests/ui/issues/issue-22992.rs diff --git a/src/test/ui/issues/issue-23024.rs b/tests/ui/issues/issue-23024.rs similarity index 100% rename from src/test/ui/issues/issue-23024.rs rename to tests/ui/issues/issue-23024.rs diff --git a/src/test/ui/issues/issue-23024.stderr b/tests/ui/issues/issue-23024.stderr similarity index 100% rename from src/test/ui/issues/issue-23024.stderr rename to tests/ui/issues/issue-23024.stderr diff --git a/src/test/ui/issues/issue-23036.rs b/tests/ui/issues/issue-23036.rs similarity index 100% rename from src/test/ui/issues/issue-23036.rs rename to tests/ui/issues/issue-23036.rs diff --git a/src/test/ui/issues/issue-23041.rs b/tests/ui/issues/issue-23041.rs similarity index 100% rename from src/test/ui/issues/issue-23041.rs rename to tests/ui/issues/issue-23041.rs diff --git a/src/test/ui/issues/issue-23041.stderr b/tests/ui/issues/issue-23041.stderr similarity index 100% rename from src/test/ui/issues/issue-23041.stderr rename to tests/ui/issues/issue-23041.stderr diff --git a/src/test/ui/issues/issue-23046.rs b/tests/ui/issues/issue-23046.rs similarity index 100% rename from src/test/ui/issues/issue-23046.rs rename to tests/ui/issues/issue-23046.rs diff --git a/src/test/ui/issues/issue-23046.stderr b/tests/ui/issues/issue-23046.stderr similarity index 100% rename from src/test/ui/issues/issue-23046.stderr rename to tests/ui/issues/issue-23046.stderr diff --git a/src/test/ui/issues/issue-23073.rs b/tests/ui/issues/issue-23073.rs similarity index 100% rename from src/test/ui/issues/issue-23073.rs rename to tests/ui/issues/issue-23073.rs diff --git a/src/test/ui/issues/issue-23073.stderr b/tests/ui/issues/issue-23073.stderr similarity index 100% rename from src/test/ui/issues/issue-23073.stderr rename to tests/ui/issues/issue-23073.stderr diff --git a/src/test/ui/issues/issue-2311-2.rs b/tests/ui/issues/issue-2311-2.rs similarity index 100% rename from src/test/ui/issues/issue-2311-2.rs rename to tests/ui/issues/issue-2311-2.rs diff --git a/src/test/ui/issues/issue-2311.rs b/tests/ui/issues/issue-2311.rs similarity index 100% rename from src/test/ui/issues/issue-2311.rs rename to tests/ui/issues/issue-2311.rs diff --git a/src/test/ui/issues/issue-2312.rs b/tests/ui/issues/issue-2312.rs similarity index 100% rename from src/test/ui/issues/issue-2312.rs rename to tests/ui/issues/issue-2312.rs diff --git a/src/test/ui/issues/issue-23122-1.rs b/tests/ui/issues/issue-23122-1.rs similarity index 100% rename from src/test/ui/issues/issue-23122-1.rs rename to tests/ui/issues/issue-23122-1.rs diff --git a/src/test/ui/issues/issue-23122-1.stderr b/tests/ui/issues/issue-23122-1.stderr similarity index 100% rename from src/test/ui/issues/issue-23122-1.stderr rename to tests/ui/issues/issue-23122-1.stderr diff --git a/src/test/ui/issues/issue-23122-2.rs b/tests/ui/issues/issue-23122-2.rs similarity index 100% rename from src/test/ui/issues/issue-23122-2.rs rename to tests/ui/issues/issue-23122-2.rs diff --git a/src/test/ui/issues/issue-23122-2.stderr b/tests/ui/issues/issue-23122-2.stderr similarity index 100% rename from src/test/ui/issues/issue-23122-2.stderr rename to tests/ui/issues/issue-23122-2.stderr diff --git a/src/test/ui/issues/issue-2316-c.rs b/tests/ui/issues/issue-2316-c.rs similarity index 100% rename from src/test/ui/issues/issue-2316-c.rs rename to tests/ui/issues/issue-2316-c.rs diff --git a/src/test/ui/issues/issue-23173.rs b/tests/ui/issues/issue-23173.rs similarity index 100% rename from src/test/ui/issues/issue-23173.rs rename to tests/ui/issues/issue-23173.rs diff --git a/src/test/ui/issues/issue-23173.stderr b/tests/ui/issues/issue-23173.stderr similarity index 100% rename from src/test/ui/issues/issue-23173.stderr rename to tests/ui/issues/issue-23173.stderr diff --git a/src/test/ui/issues/issue-23189.rs b/tests/ui/issues/issue-23189.rs similarity index 100% rename from src/test/ui/issues/issue-23189.rs rename to tests/ui/issues/issue-23189.rs diff --git a/src/test/ui/issues/issue-23189.stderr b/tests/ui/issues/issue-23189.stderr similarity index 100% rename from src/test/ui/issues/issue-23189.stderr rename to tests/ui/issues/issue-23189.stderr diff --git a/src/test/ui/issues/issue-23217.rs b/tests/ui/issues/issue-23217.rs similarity index 100% rename from src/test/ui/issues/issue-23217.rs rename to tests/ui/issues/issue-23217.rs diff --git a/src/test/ui/issues/issue-23217.stderr b/tests/ui/issues/issue-23217.stderr similarity index 100% rename from src/test/ui/issues/issue-23217.stderr rename to tests/ui/issues/issue-23217.stderr diff --git a/src/test/ui/issues/issue-23253.rs b/tests/ui/issues/issue-23253.rs similarity index 100% rename from src/test/ui/issues/issue-23253.rs rename to tests/ui/issues/issue-23253.rs diff --git a/src/test/ui/issues/issue-23253.stderr b/tests/ui/issues/issue-23253.stderr similarity index 100% rename from src/test/ui/issues/issue-23253.stderr rename to tests/ui/issues/issue-23253.stderr diff --git a/src/test/ui/issues/issue-23261.rs b/tests/ui/issues/issue-23261.rs similarity index 100% rename from src/test/ui/issues/issue-23261.rs rename to tests/ui/issues/issue-23261.rs diff --git a/src/test/ui/issues/issue-23281.rs b/tests/ui/issues/issue-23281.rs similarity index 100% rename from src/test/ui/issues/issue-23281.rs rename to tests/ui/issues/issue-23281.rs diff --git a/src/test/ui/issues/issue-23281.stderr b/tests/ui/issues/issue-23281.stderr similarity index 100% rename from src/test/ui/issues/issue-23281.stderr rename to tests/ui/issues/issue-23281.stderr diff --git a/src/test/ui/issues/issue-23302-1.rs b/tests/ui/issues/issue-23302-1.rs similarity index 100% rename from src/test/ui/issues/issue-23302-1.rs rename to tests/ui/issues/issue-23302-1.rs diff --git a/src/test/ui/issues/issue-23302-1.stderr b/tests/ui/issues/issue-23302-1.stderr similarity index 100% rename from src/test/ui/issues/issue-23302-1.stderr rename to tests/ui/issues/issue-23302-1.stderr diff --git a/src/test/ui/issues/issue-23302-2.rs b/tests/ui/issues/issue-23302-2.rs similarity index 100% rename from src/test/ui/issues/issue-23302-2.rs rename to tests/ui/issues/issue-23302-2.rs diff --git a/src/test/ui/issues/issue-23302-2.stderr b/tests/ui/issues/issue-23302-2.stderr similarity index 100% rename from src/test/ui/issues/issue-23302-2.stderr rename to tests/ui/issues/issue-23302-2.stderr diff --git a/src/test/ui/issues/issue-23302-3.rs b/tests/ui/issues/issue-23302-3.rs similarity index 100% rename from src/test/ui/issues/issue-23302-3.rs rename to tests/ui/issues/issue-23302-3.rs diff --git a/src/test/ui/issues/issue-23302-3.stderr b/tests/ui/issues/issue-23302-3.stderr similarity index 100% rename from src/test/ui/issues/issue-23302-3.stderr rename to tests/ui/issues/issue-23302-3.stderr diff --git a/src/test/ui/issues/issue-23304-1.rs b/tests/ui/issues/issue-23304-1.rs similarity index 100% rename from src/test/ui/issues/issue-23304-1.rs rename to tests/ui/issues/issue-23304-1.rs diff --git a/src/test/ui/issues/issue-23304-2.rs b/tests/ui/issues/issue-23304-2.rs similarity index 100% rename from src/test/ui/issues/issue-23304-2.rs rename to tests/ui/issues/issue-23304-2.rs diff --git a/src/test/ui/issues/issue-23311.rs b/tests/ui/issues/issue-23311.rs similarity index 100% rename from src/test/ui/issues/issue-23311.rs rename to tests/ui/issues/issue-23311.rs diff --git a/src/test/ui/issues/issue-23336.rs b/tests/ui/issues/issue-23336.rs similarity index 100% rename from src/test/ui/issues/issue-23336.rs rename to tests/ui/issues/issue-23336.rs diff --git a/src/test/ui/issues/issue-23354-2.rs b/tests/ui/issues/issue-23354-2.rs similarity index 100% rename from src/test/ui/issues/issue-23354-2.rs rename to tests/ui/issues/issue-23354-2.rs diff --git a/src/test/ui/issues/issue-23354.rs b/tests/ui/issues/issue-23354.rs similarity index 100% rename from src/test/ui/issues/issue-23354.rs rename to tests/ui/issues/issue-23354.rs diff --git a/src/test/ui/issues/issue-23406.rs b/tests/ui/issues/issue-23406.rs similarity index 100% rename from src/test/ui/issues/issue-23406.rs rename to tests/ui/issues/issue-23406.rs diff --git a/src/test/ui/issues/issue-23433.rs b/tests/ui/issues/issue-23433.rs similarity index 100% rename from src/test/ui/issues/issue-23433.rs rename to tests/ui/issues/issue-23433.rs diff --git a/src/test/ui/issues/issue-23442.rs b/tests/ui/issues/issue-23442.rs similarity index 100% rename from src/test/ui/issues/issue-23442.rs rename to tests/ui/issues/issue-23442.rs diff --git a/src/test/ui/issues/issue-23477.rs b/tests/ui/issues/issue-23477.rs similarity index 100% rename from src/test/ui/issues/issue-23477.rs rename to tests/ui/issues/issue-23477.rs diff --git a/src/test/ui/issues/issue-23485.rs b/tests/ui/issues/issue-23485.rs similarity index 100% rename from src/test/ui/issues/issue-23485.rs rename to tests/ui/issues/issue-23485.rs diff --git a/src/test/ui/issues/issue-23491.rs b/tests/ui/issues/issue-23491.rs similarity index 100% rename from src/test/ui/issues/issue-23491.rs rename to tests/ui/issues/issue-23491.rs diff --git a/src/test/ui/issues/issue-23543.rs b/tests/ui/issues/issue-23543.rs similarity index 100% rename from src/test/ui/issues/issue-23543.rs rename to tests/ui/issues/issue-23543.rs diff --git a/src/test/ui/issues/issue-23543.stderr b/tests/ui/issues/issue-23543.stderr similarity index 100% rename from src/test/ui/issues/issue-23543.stderr rename to tests/ui/issues/issue-23543.stderr diff --git a/src/test/ui/issues/issue-23544.rs b/tests/ui/issues/issue-23544.rs similarity index 100% rename from src/test/ui/issues/issue-23544.rs rename to tests/ui/issues/issue-23544.rs diff --git a/src/test/ui/issues/issue-23544.stderr b/tests/ui/issues/issue-23544.stderr similarity index 100% rename from src/test/ui/issues/issue-23544.stderr rename to tests/ui/issues/issue-23544.stderr diff --git a/src/test/ui/issues/issue-23550.rs b/tests/ui/issues/issue-23550.rs similarity index 100% rename from src/test/ui/issues/issue-23550.rs rename to tests/ui/issues/issue-23550.rs diff --git a/src/test/ui/issues/issue-23589.rs b/tests/ui/issues/issue-23589.rs similarity index 100% rename from src/test/ui/issues/issue-23589.rs rename to tests/ui/issues/issue-23589.rs diff --git a/src/test/ui/issues/issue-23589.stderr b/tests/ui/issues/issue-23589.stderr similarity index 100% rename from src/test/ui/issues/issue-23589.stderr rename to tests/ui/issues/issue-23589.stderr diff --git a/src/test/ui/issues/issue-23611-enum-swap-in-drop.rs b/tests/ui/issues/issue-23611-enum-swap-in-drop.rs similarity index 100% rename from src/test/ui/issues/issue-23611-enum-swap-in-drop.rs rename to tests/ui/issues/issue-23611-enum-swap-in-drop.rs diff --git a/src/test/ui/issues/issue-23649-1.rs b/tests/ui/issues/issue-23649-1.rs similarity index 100% rename from src/test/ui/issues/issue-23649-1.rs rename to tests/ui/issues/issue-23649-1.rs diff --git a/src/test/ui/issues/issue-23649-2.rs b/tests/ui/issues/issue-23649-2.rs similarity index 100% rename from src/test/ui/issues/issue-23649-2.rs rename to tests/ui/issues/issue-23649-2.rs diff --git a/src/test/ui/issues/issue-23649-3.rs b/tests/ui/issues/issue-23649-3.rs similarity index 100% rename from src/test/ui/issues/issue-23649-3.rs rename to tests/ui/issues/issue-23649-3.rs diff --git a/src/test/ui/issues/issue-23699.rs b/tests/ui/issues/issue-23699.rs similarity index 100% rename from src/test/ui/issues/issue-23699.rs rename to tests/ui/issues/issue-23699.rs diff --git a/src/test/ui/issues/issue-23781.rs b/tests/ui/issues/issue-23781.rs similarity index 100% rename from src/test/ui/issues/issue-23781.rs rename to tests/ui/issues/issue-23781.rs diff --git a/src/test/ui/issues/issue-2380-b.rs b/tests/ui/issues/issue-2380-b.rs similarity index 100% rename from src/test/ui/issues/issue-2380-b.rs rename to tests/ui/issues/issue-2380-b.rs diff --git a/src/test/ui/issues/issue-23808.rs b/tests/ui/issues/issue-23808.rs similarity index 100% rename from src/test/ui/issues/issue-23808.rs rename to tests/ui/issues/issue-23808.rs diff --git a/src/test/ui/issues/issue-2383.rs b/tests/ui/issues/issue-2383.rs similarity index 100% rename from src/test/ui/issues/issue-2383.rs rename to tests/ui/issues/issue-2383.rs diff --git a/src/test/ui/issues/issue-23891.rs b/tests/ui/issues/issue-23891.rs similarity index 100% rename from src/test/ui/issues/issue-23891.rs rename to tests/ui/issues/issue-23891.rs diff --git a/src/test/ui/issues/issue-23898.rs b/tests/ui/issues/issue-23898.rs similarity index 100% rename from src/test/ui/issues/issue-23898.rs rename to tests/ui/issues/issue-23898.rs diff --git a/src/test/ui/issues/issue-23958.rs b/tests/ui/issues/issue-23958.rs similarity index 100% rename from src/test/ui/issues/issue-23958.rs rename to tests/ui/issues/issue-23958.rs diff --git a/src/test/ui/issues/issue-23966.rs b/tests/ui/issues/issue-23966.rs similarity index 100% rename from src/test/ui/issues/issue-23966.rs rename to tests/ui/issues/issue-23966.rs diff --git a/src/test/ui/issues/issue-23966.stderr b/tests/ui/issues/issue-23966.stderr similarity index 100% rename from src/test/ui/issues/issue-23966.stderr rename to tests/ui/issues/issue-23966.stderr diff --git a/src/test/ui/issues/issue-23992.rs b/tests/ui/issues/issue-23992.rs similarity index 100% rename from src/test/ui/issues/issue-23992.rs rename to tests/ui/issues/issue-23992.rs diff --git a/src/test/ui/issues/issue-24013.rs b/tests/ui/issues/issue-24013.rs similarity index 100% rename from src/test/ui/issues/issue-24013.rs rename to tests/ui/issues/issue-24013.rs diff --git a/src/test/ui/issues/issue-24013.stderr b/tests/ui/issues/issue-24013.stderr similarity index 100% rename from src/test/ui/issues/issue-24013.stderr rename to tests/ui/issues/issue-24013.stderr diff --git a/src/test/ui/issues/issue-24036.rs b/tests/ui/issues/issue-24036.rs similarity index 100% rename from src/test/ui/issues/issue-24036.rs rename to tests/ui/issues/issue-24036.rs diff --git a/src/test/ui/issues/issue-24036.stderr b/tests/ui/issues/issue-24036.stderr similarity index 100% rename from src/test/ui/issues/issue-24036.stderr rename to tests/ui/issues/issue-24036.stderr diff --git a/src/test/ui/issues/issue-24086.rs b/tests/ui/issues/issue-24086.rs similarity index 100% rename from src/test/ui/issues/issue-24086.rs rename to tests/ui/issues/issue-24086.rs diff --git a/src/test/ui/issues/issue-2414-c.rs b/tests/ui/issues/issue-2414-c.rs similarity index 100% rename from src/test/ui/issues/issue-2414-c.rs rename to tests/ui/issues/issue-2414-c.rs diff --git a/src/test/ui/issues/issue-24161.rs b/tests/ui/issues/issue-24161.rs similarity index 100% rename from src/test/ui/issues/issue-24161.rs rename to tests/ui/issues/issue-24161.rs diff --git a/src/test/ui/issues/issue-24227.rs b/tests/ui/issues/issue-24227.rs similarity index 100% rename from src/test/ui/issues/issue-24227.rs rename to tests/ui/issues/issue-24227.rs diff --git a/src/test/ui/issues/issue-2428.rs b/tests/ui/issues/issue-2428.rs similarity index 100% rename from src/test/ui/issues/issue-2428.rs rename to tests/ui/issues/issue-2428.rs diff --git a/src/test/ui/issues/issue-24308.rs b/tests/ui/issues/issue-24308.rs similarity index 100% rename from src/test/ui/issues/issue-24308.rs rename to tests/ui/issues/issue-24308.rs diff --git a/src/test/ui/issues/issue-24322.rs b/tests/ui/issues/issue-24322.rs similarity index 100% rename from src/test/ui/issues/issue-24322.rs rename to tests/ui/issues/issue-24322.rs diff --git a/src/test/ui/issues/issue-24322.stderr b/tests/ui/issues/issue-24322.stderr similarity index 100% rename from src/test/ui/issues/issue-24322.stderr rename to tests/ui/issues/issue-24322.stderr diff --git a/src/test/ui/issues/issue-24352.rs b/tests/ui/issues/issue-24352.rs similarity index 100% rename from src/test/ui/issues/issue-24352.rs rename to tests/ui/issues/issue-24352.rs diff --git a/src/test/ui/issues/issue-24352.stderr b/tests/ui/issues/issue-24352.stderr similarity index 100% rename from src/test/ui/issues/issue-24352.stderr rename to tests/ui/issues/issue-24352.stderr diff --git a/src/test/ui/issues/issue-24353.rs b/tests/ui/issues/issue-24353.rs similarity index 100% rename from src/test/ui/issues/issue-24353.rs rename to tests/ui/issues/issue-24353.rs diff --git a/src/test/ui/issues/issue-24357.rs b/tests/ui/issues/issue-24357.rs similarity index 100% rename from src/test/ui/issues/issue-24357.rs rename to tests/ui/issues/issue-24357.rs diff --git a/src/test/ui/issues/issue-24357.stderr b/tests/ui/issues/issue-24357.stderr similarity index 100% rename from src/test/ui/issues/issue-24357.stderr rename to tests/ui/issues/issue-24357.stderr diff --git a/src/test/ui/issues/issue-24363.rs b/tests/ui/issues/issue-24363.rs similarity index 100% rename from src/test/ui/issues/issue-24363.rs rename to tests/ui/issues/issue-24363.rs diff --git a/src/test/ui/issues/issue-24363.stderr b/tests/ui/issues/issue-24363.stderr similarity index 100% rename from src/test/ui/issues/issue-24363.stderr rename to tests/ui/issues/issue-24363.stderr diff --git a/src/test/ui/issues/issue-24365.rs b/tests/ui/issues/issue-24365.rs similarity index 100% rename from src/test/ui/issues/issue-24365.rs rename to tests/ui/issues/issue-24365.rs diff --git a/src/test/ui/issues/issue-24365.stderr b/tests/ui/issues/issue-24365.stderr similarity index 100% rename from src/test/ui/issues/issue-24365.stderr rename to tests/ui/issues/issue-24365.stderr diff --git a/src/test/ui/issues/issue-24389.rs b/tests/ui/issues/issue-24389.rs similarity index 100% rename from src/test/ui/issues/issue-24389.rs rename to tests/ui/issues/issue-24389.rs diff --git a/src/test/ui/issues/issue-24424.rs b/tests/ui/issues/issue-24424.rs similarity index 100% rename from src/test/ui/issues/issue-24424.rs rename to tests/ui/issues/issue-24424.rs diff --git a/src/test/ui/issues/issue-24424.stderr b/tests/ui/issues/issue-24424.stderr similarity index 100% rename from src/test/ui/issues/issue-24424.stderr rename to tests/ui/issues/issue-24424.stderr diff --git a/src/test/ui/issues/issue-24434.rs b/tests/ui/issues/issue-24434.rs similarity index 100% rename from src/test/ui/issues/issue-24434.rs rename to tests/ui/issues/issue-24434.rs diff --git a/src/test/ui/issues/issue-24446.rs b/tests/ui/issues/issue-24446.rs similarity index 100% rename from src/test/ui/issues/issue-24446.rs rename to tests/ui/issues/issue-24446.rs diff --git a/src/test/ui/issues/issue-24446.stderr b/tests/ui/issues/issue-24446.stderr similarity index 100% rename from src/test/ui/issues/issue-24446.stderr rename to tests/ui/issues/issue-24446.stderr diff --git a/src/test/ui/issues/issue-2445-b.rs b/tests/ui/issues/issue-2445-b.rs similarity index 100% rename from src/test/ui/issues/issue-2445-b.rs rename to tests/ui/issues/issue-2445-b.rs diff --git a/src/test/ui/issues/issue-2445.rs b/tests/ui/issues/issue-2445.rs similarity index 100% rename from src/test/ui/issues/issue-2445.rs rename to tests/ui/issues/issue-2445.rs diff --git a/src/test/ui/issues/issue-24533.rs b/tests/ui/issues/issue-24533.rs similarity index 100% rename from src/test/ui/issues/issue-24533.rs rename to tests/ui/issues/issue-24533.rs diff --git a/src/test/ui/issues/issue-24589.rs b/tests/ui/issues/issue-24589.rs similarity index 100% rename from src/test/ui/issues/issue-24589.rs rename to tests/ui/issues/issue-24589.rs diff --git a/src/test/ui/issues/issue-2463.rs b/tests/ui/issues/issue-2463.rs similarity index 100% rename from src/test/ui/issues/issue-2463.rs rename to tests/ui/issues/issue-2463.rs diff --git a/src/test/ui/issues/issue-24682.rs b/tests/ui/issues/issue-24682.rs similarity index 100% rename from src/test/ui/issues/issue-24682.rs rename to tests/ui/issues/issue-24682.rs diff --git a/src/test/ui/issues/issue-24682.stderr b/tests/ui/issues/issue-24682.stderr similarity index 100% rename from src/test/ui/issues/issue-24682.stderr rename to tests/ui/issues/issue-24682.stderr diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs b/tests/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs similarity index 100% rename from src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs rename to tests/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs b/tests/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs similarity index 100% rename from src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs rename to tests/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/main.rs b/tests/ui/issues/issue-24687-embed-debuginfo/main.rs similarity index 100% rename from src/test/ui/issues/issue-24687-embed-debuginfo/main.rs rename to tests/ui/issues/issue-24687-embed-debuginfo/main.rs diff --git a/src/test/ui/issues/issue-2470-bounds-check-overflow.rs b/tests/ui/issues/issue-2470-bounds-check-overflow.rs similarity index 100% rename from src/test/ui/issues/issue-2470-bounds-check-overflow.rs rename to tests/ui/issues/issue-2470-bounds-check-overflow.rs diff --git a/src/test/ui/issues/issue-2472.rs b/tests/ui/issues/issue-2472.rs similarity index 100% rename from src/test/ui/issues/issue-2472.rs rename to tests/ui/issues/issue-2472.rs diff --git a/src/test/ui/issues/issue-24779.rs b/tests/ui/issues/issue-24779.rs similarity index 100% rename from src/test/ui/issues/issue-24779.rs rename to tests/ui/issues/issue-24779.rs diff --git a/src/test/ui/issues/issue-24819.rs b/tests/ui/issues/issue-24819.rs similarity index 100% rename from src/test/ui/issues/issue-24819.rs rename to tests/ui/issues/issue-24819.rs diff --git a/src/test/ui/issues/issue-24819.stderr b/tests/ui/issues/issue-24819.stderr similarity index 100% rename from src/test/ui/issues/issue-24819.stderr rename to tests/ui/issues/issue-24819.stderr diff --git a/src/test/ui/issues/issue-2487-a.rs b/tests/ui/issues/issue-2487-a.rs similarity index 100% rename from src/test/ui/issues/issue-2487-a.rs rename to tests/ui/issues/issue-2487-a.rs diff --git a/src/test/ui/issues/issue-24945-repeat-dash-opts.rs b/tests/ui/issues/issue-24945-repeat-dash-opts.rs similarity index 100% rename from src/test/ui/issues/issue-24945-repeat-dash-opts.rs rename to tests/ui/issues/issue-24945-repeat-dash-opts.rs diff --git a/src/test/ui/issues/issue-24947.rs b/tests/ui/issues/issue-24947.rs similarity index 100% rename from src/test/ui/issues/issue-24947.rs rename to tests/ui/issues/issue-24947.rs diff --git a/src/test/ui/issues/issue-24954.rs b/tests/ui/issues/issue-24954.rs similarity index 100% rename from src/test/ui/issues/issue-24954.rs rename to tests/ui/issues/issue-24954.rs diff --git a/src/test/ui/issues/issue-2502.rs b/tests/ui/issues/issue-2502.rs similarity index 100% rename from src/test/ui/issues/issue-2502.rs rename to tests/ui/issues/issue-2502.rs diff --git a/src/test/ui/issues/issue-25076.rs b/tests/ui/issues/issue-25076.rs similarity index 100% rename from src/test/ui/issues/issue-25076.rs rename to tests/ui/issues/issue-25076.rs diff --git a/src/test/ui/issues/issue-25076.stderr b/tests/ui/issues/issue-25076.stderr similarity index 100% rename from src/test/ui/issues/issue-25076.stderr rename to tests/ui/issues/issue-25076.stderr diff --git a/src/test/ui/issues/issue-25089.rs b/tests/ui/issues/issue-25089.rs similarity index 100% rename from src/test/ui/issues/issue-25089.rs rename to tests/ui/issues/issue-25089.rs diff --git a/src/test/ui/issues/issue-25145.rs b/tests/ui/issues/issue-25145.rs similarity index 100% rename from src/test/ui/issues/issue-25145.rs rename to tests/ui/issues/issue-25145.rs diff --git a/src/test/ui/issues/issue-25180.rs b/tests/ui/issues/issue-25180.rs similarity index 100% rename from src/test/ui/issues/issue-25180.rs rename to tests/ui/issues/issue-25180.rs diff --git a/src/test/ui/issues/issue-25185.rs b/tests/ui/issues/issue-25185.rs similarity index 100% rename from src/test/ui/issues/issue-25185.rs rename to tests/ui/issues/issue-25185.rs diff --git a/src/test/ui/issues/issue-2526-a.rs b/tests/ui/issues/issue-2526-a.rs similarity index 100% rename from src/test/ui/issues/issue-2526-a.rs rename to tests/ui/issues/issue-2526-a.rs diff --git a/src/test/ui/issues/issue-25279.rs b/tests/ui/issues/issue-25279.rs similarity index 100% rename from src/test/ui/issues/issue-25279.rs rename to tests/ui/issues/issue-25279.rs diff --git a/src/test/ui/issues/issue-25343.rs b/tests/ui/issues/issue-25343.rs similarity index 100% rename from src/test/ui/issues/issue-25343.rs rename to tests/ui/issues/issue-25343.rs diff --git a/src/test/ui/issues/issue-25368.rs b/tests/ui/issues/issue-25368.rs similarity index 100% rename from src/test/ui/issues/issue-25368.rs rename to tests/ui/issues/issue-25368.rs diff --git a/src/test/ui/issues/issue-25368.stderr b/tests/ui/issues/issue-25368.stderr similarity index 100% rename from src/test/ui/issues/issue-25368.stderr rename to tests/ui/issues/issue-25368.stderr diff --git a/src/test/ui/issues/issue-25386.rs b/tests/ui/issues/issue-25386.rs similarity index 100% rename from src/test/ui/issues/issue-25386.rs rename to tests/ui/issues/issue-25386.rs diff --git a/src/test/ui/issues/issue-25386.stderr b/tests/ui/issues/issue-25386.stderr similarity index 100% rename from src/test/ui/issues/issue-25386.stderr rename to tests/ui/issues/issue-25386.stderr diff --git a/src/test/ui/issues/issue-25394.rs b/tests/ui/issues/issue-25394.rs similarity index 100% rename from src/test/ui/issues/issue-25394.rs rename to tests/ui/issues/issue-25394.rs diff --git a/src/test/ui/issues/issue-25439.rs b/tests/ui/issues/issue-25439.rs similarity index 100% rename from src/test/ui/issues/issue-25439.rs rename to tests/ui/issues/issue-25439.rs diff --git a/src/test/ui/issues/issue-25439.stderr b/tests/ui/issues/issue-25439.stderr similarity index 100% rename from src/test/ui/issues/issue-25439.stderr rename to tests/ui/issues/issue-25439.stderr diff --git a/src/test/ui/issues/issue-25467.rs b/tests/ui/issues/issue-25467.rs similarity index 100% rename from src/test/ui/issues/issue-25467.rs rename to tests/ui/issues/issue-25467.rs diff --git a/src/test/ui/issues/issue-25497.rs b/tests/ui/issues/issue-25497.rs similarity index 100% rename from src/test/ui/issues/issue-25497.rs rename to tests/ui/issues/issue-25497.rs diff --git a/src/test/ui/issues/issue-2550.rs b/tests/ui/issues/issue-2550.rs similarity index 100% rename from src/test/ui/issues/issue-2550.rs rename to tests/ui/issues/issue-2550.rs diff --git a/src/test/ui/issues/issue-25515.rs b/tests/ui/issues/issue-25515.rs similarity index 100% rename from src/test/ui/issues/issue-25515.rs rename to tests/ui/issues/issue-25515.rs diff --git a/src/test/ui/issues/issue-25549-multiple-drop.rs b/tests/ui/issues/issue-25549-multiple-drop.rs similarity index 100% rename from src/test/ui/issues/issue-25549-multiple-drop.rs rename to tests/ui/issues/issue-25549-multiple-drop.rs diff --git a/src/test/ui/issues/issue-25579.rs b/tests/ui/issues/issue-25579.rs similarity index 100% rename from src/test/ui/issues/issue-25579.rs rename to tests/ui/issues/issue-25579.rs diff --git a/src/test/ui/issues/issue-25679.rs b/tests/ui/issues/issue-25679.rs similarity index 100% rename from src/test/ui/issues/issue-25679.rs rename to tests/ui/issues/issue-25679.rs diff --git a/src/test/ui/issues/issue-25693.rs b/tests/ui/issues/issue-25693.rs similarity index 100% rename from src/test/ui/issues/issue-25693.rs rename to tests/ui/issues/issue-25693.rs diff --git a/src/test/ui/issues/issue-25746-bool-transmute.rs b/tests/ui/issues/issue-25746-bool-transmute.rs similarity index 100% rename from src/test/ui/issues/issue-25746-bool-transmute.rs rename to tests/ui/issues/issue-25746-bool-transmute.rs diff --git a/src/test/ui/issues/issue-25757.rs b/tests/ui/issues/issue-25757.rs similarity index 100% rename from src/test/ui/issues/issue-25757.rs rename to tests/ui/issues/issue-25757.rs diff --git a/src/test/ui/issues/issue-25810.rs b/tests/ui/issues/issue-25810.rs similarity index 100% rename from src/test/ui/issues/issue-25810.rs rename to tests/ui/issues/issue-25810.rs diff --git a/src/test/ui/issues/issue-2590.rs b/tests/ui/issues/issue-2590.rs similarity index 100% rename from src/test/ui/issues/issue-2590.rs rename to tests/ui/issues/issue-2590.rs diff --git a/src/test/ui/issues/issue-2590.stderr b/tests/ui/issues/issue-2590.stderr similarity index 100% rename from src/test/ui/issues/issue-2590.stderr rename to tests/ui/issues/issue-2590.stderr diff --git a/src/test/ui/issues/issue-25901.rs b/tests/ui/issues/issue-25901.rs similarity index 100% rename from src/test/ui/issues/issue-25901.rs rename to tests/ui/issues/issue-25901.rs diff --git a/src/test/ui/issues/issue-25901.stderr b/tests/ui/issues/issue-25901.stderr similarity index 100% rename from src/test/ui/issues/issue-25901.stderr rename to tests/ui/issues/issue-25901.stderr diff --git a/src/test/ui/issues/issue-26056.rs b/tests/ui/issues/issue-26056.rs similarity index 100% rename from src/test/ui/issues/issue-26056.rs rename to tests/ui/issues/issue-26056.rs diff --git a/src/test/ui/issues/issue-26056.stderr b/tests/ui/issues/issue-26056.stderr similarity index 100% rename from src/test/ui/issues/issue-26056.stderr rename to tests/ui/issues/issue-26056.stderr diff --git a/src/test/ui/issues/issue-26093.rs b/tests/ui/issues/issue-26093.rs similarity index 100% rename from src/test/ui/issues/issue-26093.rs rename to tests/ui/issues/issue-26093.rs diff --git a/src/test/ui/issues/issue-26093.stderr b/tests/ui/issues/issue-26093.stderr similarity index 100% rename from src/test/ui/issues/issue-26093.stderr rename to tests/ui/issues/issue-26093.stderr diff --git a/src/test/ui/issues/issue-26094.rs b/tests/ui/issues/issue-26094.rs similarity index 100% rename from src/test/ui/issues/issue-26094.rs rename to tests/ui/issues/issue-26094.rs diff --git a/src/test/ui/issues/issue-26094.stderr b/tests/ui/issues/issue-26094.stderr similarity index 100% rename from src/test/ui/issues/issue-26094.stderr rename to tests/ui/issues/issue-26094.stderr diff --git a/src/test/ui/issues/issue-26095.rs b/tests/ui/issues/issue-26095.rs similarity index 100% rename from src/test/ui/issues/issue-26095.rs rename to tests/ui/issues/issue-26095.rs diff --git a/src/test/ui/issues/issue-2611-3.rs b/tests/ui/issues/issue-2611-3.rs similarity index 100% rename from src/test/ui/issues/issue-2611-3.rs rename to tests/ui/issues/issue-2611-3.rs diff --git a/src/test/ui/issues/issue-26127.rs b/tests/ui/issues/issue-26127.rs similarity index 100% rename from src/test/ui/issues/issue-26127.rs rename to tests/ui/issues/issue-26127.rs diff --git a/src/test/ui/issues/issue-26186.rs b/tests/ui/issues/issue-26186.rs similarity index 100% rename from src/test/ui/issues/issue-26186.rs rename to tests/ui/issues/issue-26186.rs diff --git a/src/test/ui/issues/issue-26205.rs b/tests/ui/issues/issue-26205.rs similarity index 100% rename from src/test/ui/issues/issue-26205.rs rename to tests/ui/issues/issue-26205.rs diff --git a/src/test/ui/issues/issue-26217.rs b/tests/ui/issues/issue-26217.rs similarity index 100% rename from src/test/ui/issues/issue-26217.rs rename to tests/ui/issues/issue-26217.rs diff --git a/src/test/ui/issues/issue-26217.stderr b/tests/ui/issues/issue-26217.stderr similarity index 100% rename from src/test/ui/issues/issue-26217.stderr rename to tests/ui/issues/issue-26217.stderr diff --git a/src/test/ui/issues/issue-26237.rs b/tests/ui/issues/issue-26237.rs similarity index 100% rename from src/test/ui/issues/issue-26237.rs rename to tests/ui/issues/issue-26237.rs diff --git a/src/test/ui/issues/issue-26237.stderr b/tests/ui/issues/issue-26237.stderr similarity index 100% rename from src/test/ui/issues/issue-26237.stderr rename to tests/ui/issues/issue-26237.stderr diff --git a/src/test/ui/issues/issue-26262.rs b/tests/ui/issues/issue-26262.rs similarity index 100% rename from src/test/ui/issues/issue-26262.rs rename to tests/ui/issues/issue-26262.rs diff --git a/src/test/ui/issues/issue-26262.stderr b/tests/ui/issues/issue-26262.stderr similarity index 100% rename from src/test/ui/issues/issue-26262.stderr rename to tests/ui/issues/issue-26262.stderr diff --git a/src/test/ui/issues/issue-2631-b.rs b/tests/ui/issues/issue-2631-b.rs similarity index 100% rename from src/test/ui/issues/issue-2631-b.rs rename to tests/ui/issues/issue-2631-b.rs diff --git a/src/test/ui/issues/issue-2642.rs b/tests/ui/issues/issue-2642.rs similarity index 100% rename from src/test/ui/issues/issue-2642.rs rename to tests/ui/issues/issue-2642.rs diff --git a/src/test/ui/issues/issue-26468.rs b/tests/ui/issues/issue-26468.rs similarity index 100% rename from src/test/ui/issues/issue-26468.rs rename to tests/ui/issues/issue-26468.rs diff --git a/src/test/ui/issues/issue-26472.rs b/tests/ui/issues/issue-26472.rs similarity index 100% rename from src/test/ui/issues/issue-26472.rs rename to tests/ui/issues/issue-26472.rs diff --git a/src/test/ui/issues/issue-26472.stderr b/tests/ui/issues/issue-26472.stderr similarity index 100% rename from src/test/ui/issues/issue-26472.stderr rename to tests/ui/issues/issue-26472.stderr diff --git a/src/test/ui/issues/issue-26484.rs b/tests/ui/issues/issue-26484.rs similarity index 100% rename from src/test/ui/issues/issue-26484.rs rename to tests/ui/issues/issue-26484.rs diff --git a/src/test/ui/issues/issue-26614.rs b/tests/ui/issues/issue-26614.rs similarity index 100% rename from src/test/ui/issues/issue-26614.rs rename to tests/ui/issues/issue-26614.rs diff --git a/src/test/ui/issues/issue-26619.rs b/tests/ui/issues/issue-26619.rs similarity index 100% rename from src/test/ui/issues/issue-26619.rs rename to tests/ui/issues/issue-26619.rs diff --git a/src/test/ui/issues/issue-26619.stderr b/tests/ui/issues/issue-26619.stderr similarity index 100% rename from src/test/ui/issues/issue-26619.stderr rename to tests/ui/issues/issue-26619.stderr diff --git a/src/test/ui/issues/issue-26641.rs b/tests/ui/issues/issue-26641.rs similarity index 100% rename from src/test/ui/issues/issue-26641.rs rename to tests/ui/issues/issue-26641.rs diff --git a/src/test/ui/issues/issue-26646.rs b/tests/ui/issues/issue-26646.rs similarity index 100% rename from src/test/ui/issues/issue-26646.rs rename to tests/ui/issues/issue-26646.rs diff --git a/src/test/ui/issues/issue-26655.rs b/tests/ui/issues/issue-26655.rs similarity index 100% rename from src/test/ui/issues/issue-26655.rs rename to tests/ui/issues/issue-26655.rs diff --git a/src/test/ui/issues/issue-26709.rs b/tests/ui/issues/issue-26709.rs similarity index 100% rename from src/test/ui/issues/issue-26709.rs rename to tests/ui/issues/issue-26709.rs diff --git a/src/test/ui/issues/issue-26802.rs b/tests/ui/issues/issue-26802.rs similarity index 100% rename from src/test/ui/issues/issue-26802.rs rename to tests/ui/issues/issue-26802.rs diff --git a/src/test/ui/issues/issue-26805.rs b/tests/ui/issues/issue-26805.rs similarity index 100% rename from src/test/ui/issues/issue-26805.rs rename to tests/ui/issues/issue-26805.rs diff --git a/src/test/ui/issues/issue-26812.rs b/tests/ui/issues/issue-26812.rs similarity index 100% rename from src/test/ui/issues/issue-26812.rs rename to tests/ui/issues/issue-26812.rs diff --git a/src/test/ui/issues/issue-26812.stderr b/tests/ui/issues/issue-26812.stderr similarity index 100% rename from src/test/ui/issues/issue-26812.stderr rename to tests/ui/issues/issue-26812.stderr diff --git a/src/test/ui/issues/issue-26905-rpass.rs b/tests/ui/issues/issue-26905-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-26905-rpass.rs rename to tests/ui/issues/issue-26905-rpass.rs diff --git a/src/test/ui/issues/issue-26905.rs b/tests/ui/issues/issue-26905.rs similarity index 100% rename from src/test/ui/issues/issue-26905.rs rename to tests/ui/issues/issue-26905.rs diff --git a/src/test/ui/issues/issue-26905.stderr b/tests/ui/issues/issue-26905.stderr similarity index 100% rename from src/test/ui/issues/issue-26905.stderr rename to tests/ui/issues/issue-26905.stderr diff --git a/src/test/ui/issues/issue-26948.rs b/tests/ui/issues/issue-26948.rs similarity index 100% rename from src/test/ui/issues/issue-26948.rs rename to tests/ui/issues/issue-26948.rs diff --git a/src/test/ui/issues/issue-26948.stderr b/tests/ui/issues/issue-26948.stderr similarity index 100% rename from src/test/ui/issues/issue-26948.stderr rename to tests/ui/issues/issue-26948.stderr diff --git a/src/test/ui/issues/issue-26997.rs b/tests/ui/issues/issue-26997.rs similarity index 100% rename from src/test/ui/issues/issue-26997.rs rename to tests/ui/issues/issue-26997.rs diff --git a/src/test/ui/issues/issue-27008.rs b/tests/ui/issues/issue-27008.rs similarity index 100% rename from src/test/ui/issues/issue-27008.rs rename to tests/ui/issues/issue-27008.rs diff --git a/src/test/ui/issues/issue-27008.stderr b/tests/ui/issues/issue-27008.stderr similarity index 100% rename from src/test/ui/issues/issue-27008.stderr rename to tests/ui/issues/issue-27008.stderr diff --git a/src/test/ui/issues/issue-27033.rs b/tests/ui/issues/issue-27033.rs similarity index 100% rename from src/test/ui/issues/issue-27033.rs rename to tests/ui/issues/issue-27033.rs diff --git a/src/test/ui/issues/issue-27033.stderr b/tests/ui/issues/issue-27033.stderr similarity index 100% rename from src/test/ui/issues/issue-27033.stderr rename to tests/ui/issues/issue-27033.stderr diff --git a/src/test/ui/issues/issue-27042.rs b/tests/ui/issues/issue-27042.rs similarity index 100% rename from src/test/ui/issues/issue-27042.rs rename to tests/ui/issues/issue-27042.rs diff --git a/src/test/ui/issues/issue-27042.stderr b/tests/ui/issues/issue-27042.stderr similarity index 100% rename from src/test/ui/issues/issue-27042.stderr rename to tests/ui/issues/issue-27042.stderr diff --git a/src/test/ui/issues/issue-27054-primitive-binary-ops.rs b/tests/ui/issues/issue-27054-primitive-binary-ops.rs similarity index 100% rename from src/test/ui/issues/issue-27054-primitive-binary-ops.rs rename to tests/ui/issues/issue-27054-primitive-binary-ops.rs diff --git a/src/test/ui/issues/issue-27078.rs b/tests/ui/issues/issue-27078.rs similarity index 100% rename from src/test/ui/issues/issue-27078.rs rename to tests/ui/issues/issue-27078.rs diff --git a/src/test/ui/issues/issue-27078.stderr b/tests/ui/issues/issue-27078.stderr similarity index 100% rename from src/test/ui/issues/issue-27078.stderr rename to tests/ui/issues/issue-27078.stderr diff --git a/src/test/ui/issues/issue-2708.rs b/tests/ui/issues/issue-2708.rs similarity index 100% rename from src/test/ui/issues/issue-2708.rs rename to tests/ui/issues/issue-2708.rs diff --git a/src/test/ui/issues/issue-27105.rs b/tests/ui/issues/issue-27105.rs similarity index 100% rename from src/test/ui/issues/issue-27105.rs rename to tests/ui/issues/issue-27105.rs diff --git a/src/test/ui/issues/issue-2723-b.rs b/tests/ui/issues/issue-2723-b.rs similarity index 100% rename from src/test/ui/issues/issue-2723-b.rs rename to tests/ui/issues/issue-2723-b.rs diff --git a/src/test/ui/issues/issue-27240.rs b/tests/ui/issues/issue-27240.rs similarity index 100% rename from src/test/ui/issues/issue-27240.rs rename to tests/ui/issues/issue-27240.rs diff --git a/src/test/ui/issues/issue-27268.rs b/tests/ui/issues/issue-27268.rs similarity index 100% rename from src/test/ui/issues/issue-27268.rs rename to tests/ui/issues/issue-27268.rs diff --git a/src/test/ui/issues/issue-27281.rs b/tests/ui/issues/issue-27281.rs similarity index 100% rename from src/test/ui/issues/issue-27281.rs rename to tests/ui/issues/issue-27281.rs diff --git a/src/test/ui/issues/issue-27340.rs b/tests/ui/issues/issue-27340.rs similarity index 100% rename from src/test/ui/issues/issue-27340.rs rename to tests/ui/issues/issue-27340.rs diff --git a/src/test/ui/issues/issue-27340.stderr b/tests/ui/issues/issue-27340.stderr similarity index 100% rename from src/test/ui/issues/issue-27340.stderr rename to tests/ui/issues/issue-27340.stderr diff --git a/src/test/ui/issues/issue-2735-2.rs b/tests/ui/issues/issue-2735-2.rs similarity index 100% rename from src/test/ui/issues/issue-2735-2.rs rename to tests/ui/issues/issue-2735-2.rs diff --git a/src/test/ui/issues/issue-2735-3.rs b/tests/ui/issues/issue-2735-3.rs similarity index 100% rename from src/test/ui/issues/issue-2735-3.rs rename to tests/ui/issues/issue-2735-3.rs diff --git a/src/test/ui/issues/issue-2735.rs b/tests/ui/issues/issue-2735.rs similarity index 100% rename from src/test/ui/issues/issue-2735.rs rename to tests/ui/issues/issue-2735.rs diff --git a/src/test/ui/issues/issue-27401-dropflag-reinit.rs b/tests/ui/issues/issue-27401-dropflag-reinit.rs similarity index 100% rename from src/test/ui/issues/issue-27401-dropflag-reinit.rs rename to tests/ui/issues/issue-27401-dropflag-reinit.rs diff --git a/src/test/ui/issues/issue-27433.fixed b/tests/ui/issues/issue-27433.fixed similarity index 100% rename from src/test/ui/issues/issue-27433.fixed rename to tests/ui/issues/issue-27433.fixed diff --git a/src/test/ui/issues/issue-27433.rs b/tests/ui/issues/issue-27433.rs similarity index 100% rename from src/test/ui/issues/issue-27433.rs rename to tests/ui/issues/issue-27433.rs diff --git a/src/test/ui/issues/issue-27433.stderr b/tests/ui/issues/issue-27433.stderr similarity index 100% rename from src/test/ui/issues/issue-27433.stderr rename to tests/ui/issues/issue-27433.stderr diff --git a/src/test/ui/issues/issue-2748-a.rs b/tests/ui/issues/issue-2748-a.rs similarity index 100% rename from src/test/ui/issues/issue-2748-a.rs rename to tests/ui/issues/issue-2748-a.rs diff --git a/src/test/ui/issues/issue-27583.rs b/tests/ui/issues/issue-27583.rs similarity index 100% rename from src/test/ui/issues/issue-27583.rs rename to tests/ui/issues/issue-27583.rs diff --git a/src/test/ui/issues/issue-27592.rs b/tests/ui/issues/issue-27592.rs similarity index 100% rename from src/test/ui/issues/issue-27592.rs rename to tests/ui/issues/issue-27592.rs diff --git a/src/test/ui/issues/issue-27592.stderr b/tests/ui/issues/issue-27592.stderr similarity index 100% rename from src/test/ui/issues/issue-27592.stderr rename to tests/ui/issues/issue-27592.stderr diff --git a/src/test/ui/issues/issue-2761.rs b/tests/ui/issues/issue-2761.rs similarity index 100% rename from src/test/ui/issues/issue-2761.rs rename to tests/ui/issues/issue-2761.rs diff --git a/src/test/ui/issues/issue-27639.rs b/tests/ui/issues/issue-27639.rs similarity index 100% rename from src/test/ui/issues/issue-27639.rs rename to tests/ui/issues/issue-27639.rs diff --git a/src/test/ui/issues/issue-27697.rs b/tests/ui/issues/issue-27697.rs similarity index 100% rename from src/test/ui/issues/issue-27697.rs rename to tests/ui/issues/issue-27697.rs diff --git a/src/test/ui/issues/issue-27815.rs b/tests/ui/issues/issue-27815.rs similarity index 100% rename from src/test/ui/issues/issue-27815.rs rename to tests/ui/issues/issue-27815.rs diff --git a/src/test/ui/issues/issue-27815.stderr b/tests/ui/issues/issue-27815.stderr similarity index 100% rename from src/test/ui/issues/issue-27815.stderr rename to tests/ui/issues/issue-27815.stderr diff --git a/src/test/ui/issues/issue-27842.rs b/tests/ui/issues/issue-27842.rs similarity index 100% rename from src/test/ui/issues/issue-27842.rs rename to tests/ui/issues/issue-27842.rs diff --git a/src/test/ui/issues/issue-27842.stderr b/tests/ui/issues/issue-27842.stderr similarity index 100% rename from src/test/ui/issues/issue-27842.stderr rename to tests/ui/issues/issue-27842.stderr diff --git a/src/test/ui/issues/issue-27859.rs b/tests/ui/issues/issue-27859.rs similarity index 100% rename from src/test/ui/issues/issue-27859.rs rename to tests/ui/issues/issue-27859.rs diff --git a/src/test/ui/issues/issue-27889.rs b/tests/ui/issues/issue-27889.rs similarity index 100% rename from src/test/ui/issues/issue-27889.rs rename to tests/ui/issues/issue-27889.rs diff --git a/src/test/ui/issues/issue-27901.rs b/tests/ui/issues/issue-27901.rs similarity index 100% rename from src/test/ui/issues/issue-27901.rs rename to tests/ui/issues/issue-27901.rs diff --git a/src/test/ui/issues/issue-27942.rs b/tests/ui/issues/issue-27942.rs similarity index 100% rename from src/test/ui/issues/issue-27942.rs rename to tests/ui/issues/issue-27942.rs diff --git a/src/test/ui/issues/issue-27942.stderr b/tests/ui/issues/issue-27942.stderr similarity index 100% rename from src/test/ui/issues/issue-27942.stderr rename to tests/ui/issues/issue-27942.stderr diff --git a/src/test/ui/issues/issue-27949.rs b/tests/ui/issues/issue-27949.rs similarity index 100% rename from src/test/ui/issues/issue-27949.rs rename to tests/ui/issues/issue-27949.rs diff --git a/src/test/ui/issues/issue-27997.rs b/tests/ui/issues/issue-27997.rs similarity index 100% rename from src/test/ui/issues/issue-27997.rs rename to tests/ui/issues/issue-27997.rs diff --git a/src/test/ui/issues/issue-2804-2.rs b/tests/ui/issues/issue-2804-2.rs similarity index 100% rename from src/test/ui/issues/issue-2804-2.rs rename to tests/ui/issues/issue-2804-2.rs diff --git a/src/test/ui/issues/issue-28105.rs b/tests/ui/issues/issue-28105.rs similarity index 100% rename from src/test/ui/issues/issue-28105.rs rename to tests/ui/issues/issue-28105.rs diff --git a/src/test/ui/issues/issue-28105.stderr b/tests/ui/issues/issue-28105.stderr similarity index 100% rename from src/test/ui/issues/issue-28105.stderr rename to tests/ui/issues/issue-28105.stderr diff --git a/src/test/ui/issues/issue-28109.rs b/tests/ui/issues/issue-28109.rs similarity index 100% rename from src/test/ui/issues/issue-28109.rs rename to tests/ui/issues/issue-28109.rs diff --git a/src/test/ui/issues/issue-28109.stderr b/tests/ui/issues/issue-28109.stderr similarity index 100% rename from src/test/ui/issues/issue-28109.stderr rename to tests/ui/issues/issue-28109.stderr diff --git a/src/test/ui/issues/issue-28181.rs b/tests/ui/issues/issue-28181.rs similarity index 100% rename from src/test/ui/issues/issue-28181.rs rename to tests/ui/issues/issue-28181.rs diff --git a/src/test/ui/issues/issue-2823.rs b/tests/ui/issues/issue-2823.rs similarity index 100% rename from src/test/ui/issues/issue-2823.rs rename to tests/ui/issues/issue-2823.rs diff --git a/src/test/ui/issues/issue-2823.stderr b/tests/ui/issues/issue-2823.stderr similarity index 100% rename from src/test/ui/issues/issue-2823.stderr rename to tests/ui/issues/issue-2823.stderr diff --git a/src/test/ui/issues/issue-28279.rs b/tests/ui/issues/issue-28279.rs similarity index 100% rename from src/test/ui/issues/issue-28279.rs rename to tests/ui/issues/issue-28279.rs diff --git a/src/test/ui/issues/issue-28344.rs b/tests/ui/issues/issue-28344.rs similarity index 100% rename from src/test/ui/issues/issue-28344.rs rename to tests/ui/issues/issue-28344.rs diff --git a/src/test/ui/issues/issue-28344.stderr b/tests/ui/issues/issue-28344.stderr similarity index 100% rename from src/test/ui/issues/issue-28344.stderr rename to tests/ui/issues/issue-28344.stderr diff --git a/src/test/ui/issues/issue-28433.rs b/tests/ui/issues/issue-28433.rs similarity index 100% rename from src/test/ui/issues/issue-28433.rs rename to tests/ui/issues/issue-28433.rs diff --git a/src/test/ui/issues/issue-28433.stderr b/tests/ui/issues/issue-28433.stderr similarity index 100% rename from src/test/ui/issues/issue-28433.stderr rename to tests/ui/issues/issue-28433.stderr diff --git a/src/test/ui/issues/issue-28472.rs b/tests/ui/issues/issue-28472.rs similarity index 100% rename from src/test/ui/issues/issue-28472.rs rename to tests/ui/issues/issue-28472.rs diff --git a/src/test/ui/issues/issue-28472.stderr b/tests/ui/issues/issue-28472.stderr similarity index 100% rename from src/test/ui/issues/issue-28472.stderr rename to tests/ui/issues/issue-28472.stderr diff --git a/src/test/ui/issues/issue-2848.rs b/tests/ui/issues/issue-2848.rs similarity index 100% rename from src/test/ui/issues/issue-2848.rs rename to tests/ui/issues/issue-2848.rs diff --git a/src/test/ui/issues/issue-2848.stderr b/tests/ui/issues/issue-2848.stderr similarity index 100% rename from src/test/ui/issues/issue-2848.stderr rename to tests/ui/issues/issue-2848.stderr diff --git a/src/test/ui/issues/issue-2849.rs b/tests/ui/issues/issue-2849.rs similarity index 100% rename from src/test/ui/issues/issue-2849.rs rename to tests/ui/issues/issue-2849.rs diff --git a/src/test/ui/issues/issue-2849.stderr b/tests/ui/issues/issue-2849.stderr similarity index 100% rename from src/test/ui/issues/issue-2849.stderr rename to tests/ui/issues/issue-2849.stderr diff --git a/src/test/ui/issues/issue-28498-must-work-ex1.rs b/tests/ui/issues/issue-28498-must-work-ex1.rs similarity index 100% rename from src/test/ui/issues/issue-28498-must-work-ex1.rs rename to tests/ui/issues/issue-28498-must-work-ex1.rs diff --git a/src/test/ui/issues/issue-28498-must-work-ex2.rs b/tests/ui/issues/issue-28498-must-work-ex2.rs similarity index 100% rename from src/test/ui/issues/issue-28498-must-work-ex2.rs rename to tests/ui/issues/issue-28498-must-work-ex2.rs diff --git a/src/test/ui/issues/issue-28498-ugeh-ex1.rs b/tests/ui/issues/issue-28498-ugeh-ex1.rs similarity index 100% rename from src/test/ui/issues/issue-28498-ugeh-ex1.rs rename to tests/ui/issues/issue-28498-ugeh-ex1.rs diff --git a/src/test/ui/issues/issue-28550.rs b/tests/ui/issues/issue-28550.rs similarity index 100% rename from src/test/ui/issues/issue-28550.rs rename to tests/ui/issues/issue-28550.rs diff --git a/src/test/ui/issues/issue-28561.rs b/tests/ui/issues/issue-28561.rs similarity index 100% rename from src/test/ui/issues/issue-28561.rs rename to tests/ui/issues/issue-28561.rs diff --git a/src/test/ui/issues/issue-28568.rs b/tests/ui/issues/issue-28568.rs similarity index 100% rename from src/test/ui/issues/issue-28568.rs rename to tests/ui/issues/issue-28568.rs diff --git a/src/test/ui/issues/issue-28568.stderr b/tests/ui/issues/issue-28568.stderr similarity index 100% rename from src/test/ui/issues/issue-28568.stderr rename to tests/ui/issues/issue-28568.stderr diff --git a/src/test/ui/issues/issue-28586.rs b/tests/ui/issues/issue-28586.rs similarity index 100% rename from src/test/ui/issues/issue-28586.rs rename to tests/ui/issues/issue-28586.rs diff --git a/src/test/ui/issues/issue-28586.stderr b/tests/ui/issues/issue-28586.stderr similarity index 100% rename from src/test/ui/issues/issue-28586.stderr rename to tests/ui/issues/issue-28586.stderr diff --git a/src/test/ui/issues/issue-28600.rs b/tests/ui/issues/issue-28600.rs similarity index 100% rename from src/test/ui/issues/issue-28600.rs rename to tests/ui/issues/issue-28600.rs diff --git a/src/test/ui/issues/issue-28625.rs b/tests/ui/issues/issue-28625.rs similarity index 100% rename from src/test/ui/issues/issue-28625.rs rename to tests/ui/issues/issue-28625.rs diff --git a/src/test/ui/issues/issue-28625.stderr b/tests/ui/issues/issue-28625.stderr similarity index 100% rename from src/test/ui/issues/issue-28625.stderr rename to tests/ui/issues/issue-28625.stderr diff --git a/src/test/ui/issues/issue-28776.mir.stderr b/tests/ui/issues/issue-28776.mir.stderr similarity index 100% rename from src/test/ui/issues/issue-28776.mir.stderr rename to tests/ui/issues/issue-28776.mir.stderr diff --git a/src/test/ui/issues/issue-28776.rs b/tests/ui/issues/issue-28776.rs similarity index 100% rename from src/test/ui/issues/issue-28776.rs rename to tests/ui/issues/issue-28776.rs diff --git a/src/test/ui/issues/issue-28776.thir.stderr b/tests/ui/issues/issue-28776.thir.stderr similarity index 100% rename from src/test/ui/issues/issue-28776.thir.stderr rename to tests/ui/issues/issue-28776.thir.stderr diff --git a/src/test/ui/issues/issue-28777.rs b/tests/ui/issues/issue-28777.rs similarity index 100% rename from src/test/ui/issues/issue-28777.rs rename to tests/ui/issues/issue-28777.rs diff --git a/src/test/ui/issues/issue-28822.rs b/tests/ui/issues/issue-28822.rs similarity index 100% rename from src/test/ui/issues/issue-28822.rs rename to tests/ui/issues/issue-28822.rs diff --git a/src/test/ui/issues/issue-28828.rs b/tests/ui/issues/issue-28828.rs similarity index 100% rename from src/test/ui/issues/issue-28828.rs rename to tests/ui/issues/issue-28828.rs diff --git a/src/test/ui/issues/issue-28839.rs b/tests/ui/issues/issue-28839.rs similarity index 100% rename from src/test/ui/issues/issue-28839.rs rename to tests/ui/issues/issue-28839.rs diff --git a/src/test/ui/issues/issue-28936.rs b/tests/ui/issues/issue-28936.rs similarity index 100% rename from src/test/ui/issues/issue-28936.rs rename to tests/ui/issues/issue-28936.rs diff --git a/src/test/ui/issues/issue-2895.rs b/tests/ui/issues/issue-2895.rs similarity index 100% rename from src/test/ui/issues/issue-2895.rs rename to tests/ui/issues/issue-2895.rs diff --git a/src/test/ui/issues/issue-28971.rs b/tests/ui/issues/issue-28971.rs similarity index 100% rename from src/test/ui/issues/issue-28971.rs rename to tests/ui/issues/issue-28971.rs diff --git a/src/test/ui/issues/issue-28971.stderr b/tests/ui/issues/issue-28971.stderr similarity index 100% rename from src/test/ui/issues/issue-28971.stderr rename to tests/ui/issues/issue-28971.stderr diff --git a/src/test/ui/issues/issue-28983.rs b/tests/ui/issues/issue-28983.rs similarity index 100% rename from src/test/ui/issues/issue-28983.rs rename to tests/ui/issues/issue-28983.rs diff --git a/src/test/ui/issues/issue-28992-empty.rs b/tests/ui/issues/issue-28992-empty.rs similarity index 100% rename from src/test/ui/issues/issue-28992-empty.rs rename to tests/ui/issues/issue-28992-empty.rs diff --git a/src/test/ui/issues/issue-28992-empty.stderr b/tests/ui/issues/issue-28992-empty.stderr similarity index 100% rename from src/test/ui/issues/issue-28992-empty.stderr rename to tests/ui/issues/issue-28992-empty.stderr diff --git a/src/test/ui/issues/issue-28999.rs b/tests/ui/issues/issue-28999.rs similarity index 100% rename from src/test/ui/issues/issue-28999.rs rename to tests/ui/issues/issue-28999.rs diff --git a/src/test/ui/issues/issue-29030.rs b/tests/ui/issues/issue-29030.rs similarity index 100% rename from src/test/ui/issues/issue-29030.rs rename to tests/ui/issues/issue-29030.rs diff --git a/src/test/ui/issues/issue-29037.rs b/tests/ui/issues/issue-29037.rs similarity index 100% rename from src/test/ui/issues/issue-29037.rs rename to tests/ui/issues/issue-29037.rs diff --git a/src/test/ui/issues/issue-2904.rs b/tests/ui/issues/issue-2904.rs similarity index 100% rename from src/test/ui/issues/issue-2904.rs rename to tests/ui/issues/issue-2904.rs diff --git a/src/test/ui/issues/issue-29048.rs b/tests/ui/issues/issue-29048.rs similarity index 100% rename from src/test/ui/issues/issue-29048.rs rename to tests/ui/issues/issue-29048.rs diff --git a/src/test/ui/issues/issue-29053.rs b/tests/ui/issues/issue-29053.rs similarity index 100% rename from src/test/ui/issues/issue-29053.rs rename to tests/ui/issues/issue-29053.rs diff --git a/src/test/ui/issues/issue-29071-2.rs b/tests/ui/issues/issue-29071-2.rs similarity index 100% rename from src/test/ui/issues/issue-29071-2.rs rename to tests/ui/issues/issue-29071-2.rs diff --git a/src/test/ui/issues/issue-29071.rs b/tests/ui/issues/issue-29071.rs similarity index 100% rename from src/test/ui/issues/issue-29071.rs rename to tests/ui/issues/issue-29071.rs diff --git a/src/test/ui/issues/issue-29092.rs b/tests/ui/issues/issue-29092.rs similarity index 100% rename from src/test/ui/issues/issue-29092.rs rename to tests/ui/issues/issue-29092.rs diff --git a/src/test/ui/issues/issue-29147-rpass.rs b/tests/ui/issues/issue-29147-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-29147-rpass.rs rename to tests/ui/issues/issue-29147-rpass.rs diff --git a/src/test/ui/issues/issue-29147.rs b/tests/ui/issues/issue-29147.rs similarity index 100% rename from src/test/ui/issues/issue-29147.rs rename to tests/ui/issues/issue-29147.rs diff --git a/src/test/ui/issues/issue-29147.stderr b/tests/ui/issues/issue-29147.stderr similarity index 100% rename from src/test/ui/issues/issue-29147.stderr rename to tests/ui/issues/issue-29147.stderr diff --git a/src/test/ui/issues/issue-29181.rs b/tests/ui/issues/issue-29181.rs similarity index 100% rename from src/test/ui/issues/issue-29181.rs rename to tests/ui/issues/issue-29181.rs diff --git a/src/test/ui/issues/issue-29181.stderr b/tests/ui/issues/issue-29181.stderr similarity index 100% rename from src/test/ui/issues/issue-29181.stderr rename to tests/ui/issues/issue-29181.stderr diff --git a/src/test/ui/issues/issue-29265.rs b/tests/ui/issues/issue-29265.rs similarity index 100% rename from src/test/ui/issues/issue-29265.rs rename to tests/ui/issues/issue-29265.rs diff --git a/src/test/ui/issues/issue-29276.rs b/tests/ui/issues/issue-29276.rs similarity index 100% rename from src/test/ui/issues/issue-29276.rs rename to tests/ui/issues/issue-29276.rs diff --git a/src/test/ui/issues/issue-2935.rs b/tests/ui/issues/issue-2935.rs similarity index 100% rename from src/test/ui/issues/issue-2935.rs rename to tests/ui/issues/issue-2935.rs diff --git a/src/test/ui/issues/issue-29466.rs b/tests/ui/issues/issue-29466.rs similarity index 100% rename from src/test/ui/issues/issue-29466.rs rename to tests/ui/issues/issue-29466.rs diff --git a/src/test/ui/issues/issue-29485.rs b/tests/ui/issues/issue-29485.rs similarity index 100% rename from src/test/ui/issues/issue-29485.rs rename to tests/ui/issues/issue-29485.rs diff --git a/src/test/ui/issues/issue-2951.rs b/tests/ui/issues/issue-2951.rs similarity index 100% rename from src/test/ui/issues/issue-2951.rs rename to tests/ui/issues/issue-2951.rs diff --git a/src/test/ui/issues/issue-2951.stderr b/tests/ui/issues/issue-2951.stderr similarity index 100% rename from src/test/ui/issues/issue-2951.stderr rename to tests/ui/issues/issue-2951.stderr diff --git a/src/test/ui/issues/issue-29516.rs b/tests/ui/issues/issue-29516.rs similarity index 100% rename from src/test/ui/issues/issue-29516.rs rename to tests/ui/issues/issue-29516.rs diff --git a/src/test/ui/issues/issue-29522.rs b/tests/ui/issues/issue-29522.rs similarity index 100% rename from src/test/ui/issues/issue-29522.rs rename to tests/ui/issues/issue-29522.rs diff --git a/src/test/ui/issues/issue-29540.rs b/tests/ui/issues/issue-29540.rs similarity index 100% rename from src/test/ui/issues/issue-29540.rs rename to tests/ui/issues/issue-29540.rs diff --git a/src/test/ui/issues/issue-29663.rs b/tests/ui/issues/issue-29663.rs similarity index 100% rename from src/test/ui/issues/issue-29663.rs rename to tests/ui/issues/issue-29663.rs diff --git a/src/test/ui/issues/issue-29668.rs b/tests/ui/issues/issue-29668.rs similarity index 100% rename from src/test/ui/issues/issue-29668.rs rename to tests/ui/issues/issue-29668.rs diff --git a/src/test/ui/issues/issue-29710.rs b/tests/ui/issues/issue-29710.rs similarity index 100% rename from src/test/ui/issues/issue-29710.rs rename to tests/ui/issues/issue-29710.rs diff --git a/src/test/ui/issues/issue-29723.rs b/tests/ui/issues/issue-29723.rs similarity index 100% rename from src/test/ui/issues/issue-29723.rs rename to tests/ui/issues/issue-29723.rs diff --git a/src/test/ui/issues/issue-29723.stderr b/tests/ui/issues/issue-29723.stderr similarity index 100% rename from src/test/ui/issues/issue-29723.stderr rename to tests/ui/issues/issue-29723.stderr diff --git a/src/test/ui/issues/issue-29740.rs b/tests/ui/issues/issue-29740.rs similarity index 100% rename from src/test/ui/issues/issue-29740.rs rename to tests/ui/issues/issue-29740.rs diff --git a/src/test/ui/issues/issue-29743.rs b/tests/ui/issues/issue-29743.rs similarity index 100% rename from src/test/ui/issues/issue-29743.rs rename to tests/ui/issues/issue-29743.rs diff --git a/src/test/ui/issues/issue-29746.rs b/tests/ui/issues/issue-29746.rs similarity index 100% rename from src/test/ui/issues/issue-29746.rs rename to tests/ui/issues/issue-29746.rs diff --git a/src/test/ui/issues/issue-29798.rs b/tests/ui/issues/issue-29798.rs similarity index 100% rename from src/test/ui/issues/issue-29798.rs rename to tests/ui/issues/issue-29798.rs diff --git a/src/test/ui/issues/issue-29821.rs b/tests/ui/issues/issue-29821.rs similarity index 100% rename from src/test/ui/issues/issue-29821.rs rename to tests/ui/issues/issue-29821.rs diff --git a/src/test/ui/issues/issue-29857.rs b/tests/ui/issues/issue-29857.rs similarity index 100% rename from src/test/ui/issues/issue-29857.rs rename to tests/ui/issues/issue-29857.rs diff --git a/src/test/ui/issues/issue-29861.rs b/tests/ui/issues/issue-29861.rs similarity index 100% rename from src/test/ui/issues/issue-29861.rs rename to tests/ui/issues/issue-29861.rs diff --git a/src/test/ui/issues/issue-29861.stderr b/tests/ui/issues/issue-29861.stderr similarity index 100% rename from src/test/ui/issues/issue-29861.stderr rename to tests/ui/issues/issue-29861.stderr diff --git a/src/test/ui/issues/issue-2989.rs b/tests/ui/issues/issue-2989.rs similarity index 100% rename from src/test/ui/issues/issue-2989.rs rename to tests/ui/issues/issue-2989.rs diff --git a/src/test/ui/issues/issue-29948.rs b/tests/ui/issues/issue-29948.rs similarity index 100% rename from src/test/ui/issues/issue-29948.rs rename to tests/ui/issues/issue-29948.rs diff --git a/src/test/ui/issues/issue-2995.rs b/tests/ui/issues/issue-2995.rs similarity index 100% rename from src/test/ui/issues/issue-2995.rs rename to tests/ui/issues/issue-2995.rs diff --git a/src/test/ui/issues/issue-2995.stderr b/tests/ui/issues/issue-2995.stderr similarity index 100% rename from src/test/ui/issues/issue-2995.stderr rename to tests/ui/issues/issue-2995.stderr diff --git a/src/test/ui/issues/issue-30007.rs b/tests/ui/issues/issue-30007.rs similarity index 100% rename from src/test/ui/issues/issue-30007.rs rename to tests/ui/issues/issue-30007.rs diff --git a/src/test/ui/issues/issue-30007.stderr b/tests/ui/issues/issue-30007.stderr similarity index 100% rename from src/test/ui/issues/issue-30007.stderr rename to tests/ui/issues/issue-30007.stderr diff --git a/src/test/ui/issues/issue-30018-panic.rs b/tests/ui/issues/issue-30018-panic.rs similarity index 100% rename from src/test/ui/issues/issue-30018-panic.rs rename to tests/ui/issues/issue-30018-panic.rs diff --git a/src/test/ui/issues/issue-3008-1.rs b/tests/ui/issues/issue-3008-1.rs similarity index 100% rename from src/test/ui/issues/issue-3008-1.rs rename to tests/ui/issues/issue-3008-1.rs diff --git a/src/test/ui/issues/issue-3008-1.stderr b/tests/ui/issues/issue-3008-1.stderr similarity index 100% rename from src/test/ui/issues/issue-3008-1.stderr rename to tests/ui/issues/issue-3008-1.stderr diff --git a/src/test/ui/issues/issue-3008-2.rs b/tests/ui/issues/issue-3008-2.rs similarity index 100% rename from src/test/ui/issues/issue-3008-2.rs rename to tests/ui/issues/issue-3008-2.rs diff --git a/src/test/ui/issues/issue-3008-2.stderr b/tests/ui/issues/issue-3008-2.stderr similarity index 100% rename from src/test/ui/issues/issue-3008-2.stderr rename to tests/ui/issues/issue-3008-2.stderr diff --git a/src/test/ui/issues/issue-3008-3.rs b/tests/ui/issues/issue-3008-3.rs similarity index 100% rename from src/test/ui/issues/issue-3008-3.rs rename to tests/ui/issues/issue-3008-3.rs diff --git a/src/test/ui/issues/issue-3008-3.stderr b/tests/ui/issues/issue-3008-3.stderr similarity index 100% rename from src/test/ui/issues/issue-3008-3.stderr rename to tests/ui/issues/issue-3008-3.stderr diff --git a/src/test/ui/issues/issue-30081.rs b/tests/ui/issues/issue-30081.rs similarity index 100% rename from src/test/ui/issues/issue-30081.rs rename to tests/ui/issues/issue-30081.rs diff --git a/src/test/ui/issues/issue-3012-2.rs b/tests/ui/issues/issue-3012-2.rs similarity index 100% rename from src/test/ui/issues/issue-3012-2.rs rename to tests/ui/issues/issue-3012-2.rs diff --git a/src/test/ui/issues/issue-30123.rs b/tests/ui/issues/issue-30123.rs similarity index 100% rename from src/test/ui/issues/issue-30123.rs rename to tests/ui/issues/issue-30123.rs diff --git a/src/test/ui/issues/issue-30123.stderr b/tests/ui/issues/issue-30123.stderr similarity index 100% rename from src/test/ui/issues/issue-30123.stderr rename to tests/ui/issues/issue-30123.stderr diff --git a/src/test/ui/issues/issue-3021-b.rs b/tests/ui/issues/issue-3021-b.rs similarity index 100% rename from src/test/ui/issues/issue-3021-b.rs rename to tests/ui/issues/issue-3021-b.rs diff --git a/src/test/ui/issues/issue-3021-b.stderr b/tests/ui/issues/issue-3021-b.stderr similarity index 100% rename from src/test/ui/issues/issue-3021-b.stderr rename to tests/ui/issues/issue-3021-b.stderr diff --git a/src/test/ui/issues/issue-3021-d.rs b/tests/ui/issues/issue-3021-d.rs similarity index 100% rename from src/test/ui/issues/issue-3021-d.rs rename to tests/ui/issues/issue-3021-d.rs diff --git a/src/test/ui/issues/issue-3021-d.stderr b/tests/ui/issues/issue-3021-d.stderr similarity index 100% rename from src/test/ui/issues/issue-3021-d.stderr rename to tests/ui/issues/issue-3021-d.stderr diff --git a/src/test/ui/issues/issue-30236.rs b/tests/ui/issues/issue-30236.rs similarity index 100% rename from src/test/ui/issues/issue-30236.rs rename to tests/ui/issues/issue-30236.rs diff --git a/src/test/ui/issues/issue-30236.stderr b/tests/ui/issues/issue-30236.stderr similarity index 100% rename from src/test/ui/issues/issue-30236.stderr rename to tests/ui/issues/issue-30236.stderr diff --git a/src/test/ui/issues/issue-30255.rs b/tests/ui/issues/issue-30255.rs similarity index 100% rename from src/test/ui/issues/issue-30255.rs rename to tests/ui/issues/issue-30255.rs diff --git a/src/test/ui/issues/issue-30255.stderr b/tests/ui/issues/issue-30255.stderr similarity index 100% rename from src/test/ui/issues/issue-30255.stderr rename to tests/ui/issues/issue-30255.stderr diff --git a/src/test/ui/issues/issue-3026.rs b/tests/ui/issues/issue-3026.rs similarity index 100% rename from src/test/ui/issues/issue-3026.rs rename to tests/ui/issues/issue-3026.rs diff --git a/src/test/ui/issues/issue-3029.rs b/tests/ui/issues/issue-3029.rs similarity index 100% rename from src/test/ui/issues/issue-3029.rs rename to tests/ui/issues/issue-3029.rs diff --git a/src/test/ui/issues/issue-3037.rs b/tests/ui/issues/issue-3037.rs similarity index 100% rename from src/test/ui/issues/issue-3037.rs rename to tests/ui/issues/issue-3037.rs diff --git a/src/test/ui/issues/issue-30371.rs b/tests/ui/issues/issue-30371.rs similarity index 100% rename from src/test/ui/issues/issue-30371.rs rename to tests/ui/issues/issue-30371.rs diff --git a/src/test/ui/issues/issue-3038.rs b/tests/ui/issues/issue-3038.rs similarity index 100% rename from src/test/ui/issues/issue-3038.rs rename to tests/ui/issues/issue-3038.rs diff --git a/src/test/ui/issues/issue-3038.stderr b/tests/ui/issues/issue-3038.stderr similarity index 100% rename from src/test/ui/issues/issue-3038.stderr rename to tests/ui/issues/issue-3038.stderr diff --git a/src/test/ui/issues/issue-30380.rs b/tests/ui/issues/issue-30380.rs similarity index 100% rename from src/test/ui/issues/issue-30380.rs rename to tests/ui/issues/issue-30380.rs diff --git a/src/test/ui/issues/issue-30438-a.rs b/tests/ui/issues/issue-30438-a.rs similarity index 100% rename from src/test/ui/issues/issue-30438-a.rs rename to tests/ui/issues/issue-30438-a.rs diff --git a/src/test/ui/issues/issue-30438-a.stderr b/tests/ui/issues/issue-30438-a.stderr similarity index 100% rename from src/test/ui/issues/issue-30438-a.stderr rename to tests/ui/issues/issue-30438-a.stderr diff --git a/src/test/ui/issues/issue-30438-b.rs b/tests/ui/issues/issue-30438-b.rs similarity index 100% rename from src/test/ui/issues/issue-30438-b.rs rename to tests/ui/issues/issue-30438-b.rs diff --git a/src/test/ui/issues/issue-30438-b.stderr b/tests/ui/issues/issue-30438-b.stderr similarity index 100% rename from src/test/ui/issues/issue-30438-b.stderr rename to tests/ui/issues/issue-30438-b.stderr diff --git a/src/test/ui/issues/issue-30438-c.rs b/tests/ui/issues/issue-30438-c.rs similarity index 100% rename from src/test/ui/issues/issue-30438-c.rs rename to tests/ui/issues/issue-30438-c.rs diff --git a/src/test/ui/issues/issue-30438-c.stderr b/tests/ui/issues/issue-30438-c.stderr similarity index 100% rename from src/test/ui/issues/issue-30438-c.stderr rename to tests/ui/issues/issue-30438-c.stderr diff --git a/src/test/ui/issues/issue-30490.rs b/tests/ui/issues/issue-30490.rs similarity index 100% rename from src/test/ui/issues/issue-30490.rs rename to tests/ui/issues/issue-30490.rs diff --git a/src/test/ui/issues/issue-3052.rs b/tests/ui/issues/issue-3052.rs similarity index 100% rename from src/test/ui/issues/issue-3052.rs rename to tests/ui/issues/issue-3052.rs diff --git a/src/test/ui/issues/issue-30530.rs b/tests/ui/issues/issue-30530.rs similarity index 100% rename from src/test/ui/issues/issue-30530.rs rename to tests/ui/issues/issue-30530.rs diff --git a/src/test/ui/issues/issue-30589.rs b/tests/ui/issues/issue-30589.rs similarity index 100% rename from src/test/ui/issues/issue-30589.rs rename to tests/ui/issues/issue-30589.rs diff --git a/src/test/ui/issues/issue-30589.stderr b/tests/ui/issues/issue-30589.stderr similarity index 100% rename from src/test/ui/issues/issue-30589.stderr rename to tests/ui/issues/issue-30589.stderr diff --git a/src/test/ui/issues/issue-30615.rs b/tests/ui/issues/issue-30615.rs similarity index 100% rename from src/test/ui/issues/issue-30615.rs rename to tests/ui/issues/issue-30615.rs diff --git a/src/test/ui/issues/issue-30756.rs b/tests/ui/issues/issue-30756.rs similarity index 100% rename from src/test/ui/issues/issue-30756.rs rename to tests/ui/issues/issue-30756.rs diff --git a/src/test/ui/issues/issue-30891.rs b/tests/ui/issues/issue-30891.rs similarity index 100% rename from src/test/ui/issues/issue-30891.rs rename to tests/ui/issues/issue-30891.rs diff --git a/src/test/ui/issues/issue-3091.rs b/tests/ui/issues/issue-3091.rs similarity index 100% rename from src/test/ui/issues/issue-3091.rs rename to tests/ui/issues/issue-3091.rs diff --git a/src/test/ui/issues/issue-3099-a.rs b/tests/ui/issues/issue-3099-a.rs similarity index 100% rename from src/test/ui/issues/issue-3099-a.rs rename to tests/ui/issues/issue-3099-a.rs diff --git a/src/test/ui/issues/issue-3099-a.stderr b/tests/ui/issues/issue-3099-a.stderr similarity index 100% rename from src/test/ui/issues/issue-3099-a.stderr rename to tests/ui/issues/issue-3099-a.stderr diff --git a/src/test/ui/issues/issue-3099-b.rs b/tests/ui/issues/issue-3099-b.rs similarity index 100% rename from src/test/ui/issues/issue-3099-b.rs rename to tests/ui/issues/issue-3099-b.rs diff --git a/src/test/ui/issues/issue-3099-b.stderr b/tests/ui/issues/issue-3099-b.stderr similarity index 100% rename from src/test/ui/issues/issue-3099-b.stderr rename to tests/ui/issues/issue-3099-b.stderr diff --git a/src/test/ui/issues/issue-3099.rs b/tests/ui/issues/issue-3099.rs similarity index 100% rename from src/test/ui/issues/issue-3099.rs rename to tests/ui/issues/issue-3099.rs diff --git a/src/test/ui/issues/issue-3099.stderr b/tests/ui/issues/issue-3099.stderr similarity index 100% rename from src/test/ui/issues/issue-3099.stderr rename to tests/ui/issues/issue-3099.stderr diff --git a/src/test/ui/issues/issue-31011.rs b/tests/ui/issues/issue-31011.rs similarity index 100% rename from src/test/ui/issues/issue-31011.rs rename to tests/ui/issues/issue-31011.rs diff --git a/src/test/ui/issues/issue-31011.stderr b/tests/ui/issues/issue-31011.stderr similarity index 100% rename from src/test/ui/issues/issue-31011.stderr rename to tests/ui/issues/issue-31011.stderr diff --git a/src/test/ui/issues/issue-3109.rs b/tests/ui/issues/issue-3109.rs similarity index 100% rename from src/test/ui/issues/issue-3109.rs rename to tests/ui/issues/issue-3109.rs diff --git a/src/test/ui/issues/issue-3121.rs b/tests/ui/issues/issue-3121.rs similarity index 100% rename from src/test/ui/issues/issue-3121.rs rename to tests/ui/issues/issue-3121.rs diff --git a/src/test/ui/issues/issue-31260.rs b/tests/ui/issues/issue-31260.rs similarity index 100% rename from src/test/ui/issues/issue-31260.rs rename to tests/ui/issues/issue-31260.rs diff --git a/src/test/ui/issues/issue-31267-additional.rs b/tests/ui/issues/issue-31267-additional.rs similarity index 100% rename from src/test/ui/issues/issue-31267-additional.rs rename to tests/ui/issues/issue-31267-additional.rs diff --git a/src/test/ui/issues/issue-31267.rs b/tests/ui/issues/issue-31267.rs similarity index 100% rename from src/test/ui/issues/issue-31267.rs rename to tests/ui/issues/issue-31267.rs diff --git a/src/test/ui/issues/issue-31299.rs b/tests/ui/issues/issue-31299.rs similarity index 100% rename from src/test/ui/issues/issue-31299.rs rename to tests/ui/issues/issue-31299.rs diff --git a/src/test/ui/issues/issue-3136-b.rs b/tests/ui/issues/issue-3136-b.rs similarity index 100% rename from src/test/ui/issues/issue-3136-b.rs rename to tests/ui/issues/issue-3136-b.rs diff --git a/src/test/ui/issues/issue-3149.rs b/tests/ui/issues/issue-3149.rs similarity index 100% rename from src/test/ui/issues/issue-3149.rs rename to tests/ui/issues/issue-3149.rs diff --git a/src/test/ui/issues/issue-31511.rs b/tests/ui/issues/issue-31511.rs similarity index 100% rename from src/test/ui/issues/issue-31511.rs rename to tests/ui/issues/issue-31511.rs diff --git a/src/test/ui/issues/issue-31511.stderr b/tests/ui/issues/issue-31511.stderr similarity index 100% rename from src/test/ui/issues/issue-31511.stderr rename to tests/ui/issues/issue-31511.stderr diff --git a/src/test/ui/issues/issue-3154.rs b/tests/ui/issues/issue-3154.rs similarity index 100% rename from src/test/ui/issues/issue-3154.rs rename to tests/ui/issues/issue-3154.rs diff --git a/src/test/ui/issues/issue-3154.stderr b/tests/ui/issues/issue-3154.stderr similarity index 100% rename from src/test/ui/issues/issue-3154.stderr rename to tests/ui/issues/issue-3154.stderr diff --git a/src/test/ui/issues/issue-31702.rs b/tests/ui/issues/issue-31702.rs similarity index 100% rename from src/test/ui/issues/issue-31702.rs rename to tests/ui/issues/issue-31702.rs diff --git a/src/test/ui/issues/issue-31769.rs b/tests/ui/issues/issue-31769.rs similarity index 100% rename from src/test/ui/issues/issue-31769.rs rename to tests/ui/issues/issue-31769.rs diff --git a/src/test/ui/issues/issue-31769.stderr b/tests/ui/issues/issue-31769.stderr similarity index 100% rename from src/test/ui/issues/issue-31769.stderr rename to tests/ui/issues/issue-31769.stderr diff --git a/src/test/ui/issues/issue-31776.rs b/tests/ui/issues/issue-31776.rs similarity index 100% rename from src/test/ui/issues/issue-31776.rs rename to tests/ui/issues/issue-31776.rs diff --git a/src/test/ui/issues/issue-31910.rs b/tests/ui/issues/issue-31910.rs similarity index 100% rename from src/test/ui/issues/issue-31910.rs rename to tests/ui/issues/issue-31910.rs diff --git a/src/test/ui/issues/issue-31910.stderr b/tests/ui/issues/issue-31910.stderr similarity index 100% rename from src/test/ui/issues/issue-31910.stderr rename to tests/ui/issues/issue-31910.stderr diff --git a/src/test/ui/issues/issue-32004.rs b/tests/ui/issues/issue-32004.rs similarity index 100% rename from src/test/ui/issues/issue-32004.rs rename to tests/ui/issues/issue-32004.rs diff --git a/src/test/ui/issues/issue-32004.stderr b/tests/ui/issues/issue-32004.stderr similarity index 100% rename from src/test/ui/issues/issue-32004.stderr rename to tests/ui/issues/issue-32004.stderr diff --git a/src/test/ui/issues/issue-32008.rs b/tests/ui/issues/issue-32008.rs similarity index 100% rename from src/test/ui/issues/issue-32008.rs rename to tests/ui/issues/issue-32008.rs diff --git a/src/test/ui/issues/issue-32086.rs b/tests/ui/issues/issue-32086.rs similarity index 100% rename from src/test/ui/issues/issue-32086.rs rename to tests/ui/issues/issue-32086.rs diff --git a/src/test/ui/issues/issue-32086.stderr b/tests/ui/issues/issue-32086.stderr similarity index 100% rename from src/test/ui/issues/issue-32086.stderr rename to tests/ui/issues/issue-32086.stderr diff --git a/src/test/ui/issues/issue-32122-1.fixed b/tests/ui/issues/issue-32122-1.fixed similarity index 100% rename from src/test/ui/issues/issue-32122-1.fixed rename to tests/ui/issues/issue-32122-1.fixed diff --git a/src/test/ui/issues/issue-32122-1.rs b/tests/ui/issues/issue-32122-1.rs similarity index 100% rename from src/test/ui/issues/issue-32122-1.rs rename to tests/ui/issues/issue-32122-1.rs diff --git a/src/test/ui/issues/issue-32122-1.stderr b/tests/ui/issues/issue-32122-1.stderr similarity index 100% rename from src/test/ui/issues/issue-32122-1.stderr rename to tests/ui/issues/issue-32122-1.stderr diff --git a/src/test/ui/issues/issue-32122-2.fixed b/tests/ui/issues/issue-32122-2.fixed similarity index 100% rename from src/test/ui/issues/issue-32122-2.fixed rename to tests/ui/issues/issue-32122-2.fixed diff --git a/src/test/ui/issues/issue-32122-2.rs b/tests/ui/issues/issue-32122-2.rs similarity index 100% rename from src/test/ui/issues/issue-32122-2.rs rename to tests/ui/issues/issue-32122-2.rs diff --git a/src/test/ui/issues/issue-32122-2.stderr b/tests/ui/issues/issue-32122-2.stderr similarity index 100% rename from src/test/ui/issues/issue-32122-2.stderr rename to tests/ui/issues/issue-32122-2.stderr diff --git a/src/test/ui/issues/issue-3214.rs b/tests/ui/issues/issue-3214.rs similarity index 100% rename from src/test/ui/issues/issue-3214.rs rename to tests/ui/issues/issue-3214.rs diff --git a/src/test/ui/issues/issue-3214.stderr b/tests/ui/issues/issue-3214.stderr similarity index 100% rename from src/test/ui/issues/issue-3214.stderr rename to tests/ui/issues/issue-3214.stderr diff --git a/src/test/ui/issues/issue-3220.rs b/tests/ui/issues/issue-3220.rs similarity index 100% rename from src/test/ui/issues/issue-3220.rs rename to tests/ui/issues/issue-3220.rs diff --git a/src/test/ui/issues/issue-32292.rs b/tests/ui/issues/issue-32292.rs similarity index 100% rename from src/test/ui/issues/issue-32292.rs rename to tests/ui/issues/issue-32292.rs diff --git a/src/test/ui/issues/issue-32323.rs b/tests/ui/issues/issue-32323.rs similarity index 100% rename from src/test/ui/issues/issue-32323.rs rename to tests/ui/issues/issue-32323.rs diff --git a/src/test/ui/issues/issue-32323.stderr b/tests/ui/issues/issue-32323.stderr similarity index 100% rename from src/test/ui/issues/issue-32323.stderr rename to tests/ui/issues/issue-32323.stderr diff --git a/src/test/ui/issues/issue-32324.rs b/tests/ui/issues/issue-32324.rs similarity index 100% rename from src/test/ui/issues/issue-32324.rs rename to tests/ui/issues/issue-32324.rs diff --git a/src/test/ui/issues/issue-32326.rs b/tests/ui/issues/issue-32326.rs similarity index 100% rename from src/test/ui/issues/issue-32326.rs rename to tests/ui/issues/issue-32326.rs diff --git a/src/test/ui/issues/issue-32326.stderr b/tests/ui/issues/issue-32326.stderr similarity index 100% rename from src/test/ui/issues/issue-32326.stderr rename to tests/ui/issues/issue-32326.stderr diff --git a/src/test/ui/issues/issue-32377.rs b/tests/ui/issues/issue-32377.rs similarity index 100% rename from src/test/ui/issues/issue-32377.rs rename to tests/ui/issues/issue-32377.rs diff --git a/src/test/ui/issues/issue-32377.stderr b/tests/ui/issues/issue-32377.stderr similarity index 100% rename from src/test/ui/issues/issue-32377.stderr rename to tests/ui/issues/issue-32377.stderr diff --git a/src/test/ui/issues/issue-32389.rs b/tests/ui/issues/issue-32389.rs similarity index 100% rename from src/test/ui/issues/issue-32389.rs rename to tests/ui/issues/issue-32389.rs diff --git a/src/test/ui/issues/issue-32518.rs b/tests/ui/issues/issue-32518.rs similarity index 100% rename from src/test/ui/issues/issue-32518.rs rename to tests/ui/issues/issue-32518.rs diff --git a/src/test/ui/issues/issue-32655.rs b/tests/ui/issues/issue-32655.rs similarity index 100% rename from src/test/ui/issues/issue-32655.rs rename to tests/ui/issues/issue-32655.rs diff --git a/src/test/ui/issues/issue-32655.stderr b/tests/ui/issues/issue-32655.stderr similarity index 100% rename from src/test/ui/issues/issue-32655.stderr rename to tests/ui/issues/issue-32655.stderr diff --git a/src/test/ui/issues/issue-32709.rs b/tests/ui/issues/issue-32709.rs similarity index 100% rename from src/test/ui/issues/issue-32709.rs rename to tests/ui/issues/issue-32709.rs diff --git a/src/test/ui/issues/issue-32709.stderr b/tests/ui/issues/issue-32709.stderr similarity index 100% rename from src/test/ui/issues/issue-32709.stderr rename to tests/ui/issues/issue-32709.stderr diff --git a/src/test/ui/issues/issue-32782.rs b/tests/ui/issues/issue-32782.rs similarity index 100% rename from src/test/ui/issues/issue-32782.rs rename to tests/ui/issues/issue-32782.rs diff --git a/src/test/ui/issues/issue-32782.stderr b/tests/ui/issues/issue-32782.stderr similarity index 100% rename from src/test/ui/issues/issue-32782.stderr rename to tests/ui/issues/issue-32782.stderr diff --git a/src/test/ui/issues/issue-32797.rs b/tests/ui/issues/issue-32797.rs similarity index 100% rename from src/test/ui/issues/issue-32797.rs rename to tests/ui/issues/issue-32797.rs diff --git a/src/test/ui/issues/issue-32805.rs b/tests/ui/issues/issue-32805.rs similarity index 100% rename from src/test/ui/issues/issue-32805.rs rename to tests/ui/issues/issue-32805.rs diff --git a/src/test/ui/issues/issue-3290.rs b/tests/ui/issues/issue-3290.rs similarity index 100% rename from src/test/ui/issues/issue-3290.rs rename to tests/ui/issues/issue-3290.rs diff --git a/src/test/ui/issues/issue-32950.rs b/tests/ui/issues/issue-32950.rs similarity index 100% rename from src/test/ui/issues/issue-32950.rs rename to tests/ui/issues/issue-32950.rs diff --git a/src/test/ui/issues/issue-32950.stderr b/tests/ui/issues/issue-32950.stderr similarity index 100% rename from src/test/ui/issues/issue-32950.stderr rename to tests/ui/issues/issue-32950.stderr diff --git a/src/test/ui/issues/issue-32995-2.rs b/tests/ui/issues/issue-32995-2.rs similarity index 100% rename from src/test/ui/issues/issue-32995-2.rs rename to tests/ui/issues/issue-32995-2.rs diff --git a/src/test/ui/issues/issue-32995-2.stderr b/tests/ui/issues/issue-32995-2.stderr similarity index 100% rename from src/test/ui/issues/issue-32995-2.stderr rename to tests/ui/issues/issue-32995-2.stderr diff --git a/src/test/ui/issues/issue-32995.rs b/tests/ui/issues/issue-32995.rs similarity index 100% rename from src/test/ui/issues/issue-32995.rs rename to tests/ui/issues/issue-32995.rs diff --git a/src/test/ui/issues/issue-32995.stderr b/tests/ui/issues/issue-32995.stderr similarity index 100% rename from src/test/ui/issues/issue-32995.stderr rename to tests/ui/issues/issue-32995.stderr diff --git a/src/test/ui/issues/issue-33096.rs b/tests/ui/issues/issue-33096.rs similarity index 100% rename from src/test/ui/issues/issue-33096.rs rename to tests/ui/issues/issue-33096.rs diff --git a/src/test/ui/issues/issue-33187.rs b/tests/ui/issues/issue-33187.rs similarity index 100% rename from src/test/ui/issues/issue-33187.rs rename to tests/ui/issues/issue-33187.rs diff --git a/src/test/ui/issues/issue-33202.rs b/tests/ui/issues/issue-33202.rs similarity index 100% rename from src/test/ui/issues/issue-33202.rs rename to tests/ui/issues/issue-33202.rs diff --git a/src/test/ui/issues/issue-33241.rs b/tests/ui/issues/issue-33241.rs similarity index 100% rename from src/test/ui/issues/issue-33241.rs rename to tests/ui/issues/issue-33241.rs diff --git a/src/test/ui/issues/issue-33287.rs b/tests/ui/issues/issue-33287.rs similarity index 100% rename from src/test/ui/issues/issue-33287.rs rename to tests/ui/issues/issue-33287.rs diff --git a/src/test/ui/issues/issue-33293.rs b/tests/ui/issues/issue-33293.rs similarity index 100% rename from src/test/ui/issues/issue-33293.rs rename to tests/ui/issues/issue-33293.rs diff --git a/src/test/ui/issues/issue-33293.stderr b/tests/ui/issues/issue-33293.stderr similarity index 100% rename from src/test/ui/issues/issue-33293.stderr rename to tests/ui/issues/issue-33293.stderr diff --git a/src/test/ui/issues/issue-33387.rs b/tests/ui/issues/issue-33387.rs similarity index 100% rename from src/test/ui/issues/issue-33387.rs rename to tests/ui/issues/issue-33387.rs diff --git a/src/test/ui/issues/issue-3344.rs b/tests/ui/issues/issue-3344.rs similarity index 100% rename from src/test/ui/issues/issue-3344.rs rename to tests/ui/issues/issue-3344.rs diff --git a/src/test/ui/issues/issue-3344.stderr b/tests/ui/issues/issue-3344.stderr similarity index 100% rename from src/test/ui/issues/issue-3344.stderr rename to tests/ui/issues/issue-3344.stderr diff --git a/src/test/ui/issues/issue-33461.rs b/tests/ui/issues/issue-33461.rs similarity index 100% rename from src/test/ui/issues/issue-33461.rs rename to tests/ui/issues/issue-33461.rs diff --git a/src/test/ui/issues/issue-33504.rs b/tests/ui/issues/issue-33504.rs similarity index 100% rename from src/test/ui/issues/issue-33504.rs rename to tests/ui/issues/issue-33504.rs diff --git a/src/test/ui/issues/issue-33504.stderr b/tests/ui/issues/issue-33504.stderr similarity index 100% rename from src/test/ui/issues/issue-33504.stderr rename to tests/ui/issues/issue-33504.stderr diff --git a/src/test/ui/issues/issue-33525.rs b/tests/ui/issues/issue-33525.rs similarity index 100% rename from src/test/ui/issues/issue-33525.rs rename to tests/ui/issues/issue-33525.rs diff --git a/src/test/ui/issues/issue-33525.stderr b/tests/ui/issues/issue-33525.stderr similarity index 100% rename from src/test/ui/issues/issue-33525.stderr rename to tests/ui/issues/issue-33525.stderr diff --git a/src/test/ui/issues/issue-33571.rs b/tests/ui/issues/issue-33571.rs similarity index 100% rename from src/test/ui/issues/issue-33571.rs rename to tests/ui/issues/issue-33571.rs diff --git a/src/test/ui/issues/issue-33571.stderr b/tests/ui/issues/issue-33571.stderr similarity index 100% rename from src/test/ui/issues/issue-33571.stderr rename to tests/ui/issues/issue-33571.stderr diff --git a/src/test/ui/issues/issue-33687.rs b/tests/ui/issues/issue-33687.rs similarity index 100% rename from src/test/ui/issues/issue-33687.rs rename to tests/ui/issues/issue-33687.rs diff --git a/src/test/ui/issues/issue-33770.rs b/tests/ui/issues/issue-33770.rs similarity index 100% rename from src/test/ui/issues/issue-33770.rs rename to tests/ui/issues/issue-33770.rs diff --git a/src/test/ui/issues/issue-3389.rs b/tests/ui/issues/issue-3389.rs similarity index 100% rename from src/test/ui/issues/issue-3389.rs rename to tests/ui/issues/issue-3389.rs diff --git a/src/test/ui/issues/issue-33903.rs b/tests/ui/issues/issue-33903.rs similarity index 100% rename from src/test/ui/issues/issue-33903.rs rename to tests/ui/issues/issue-33903.rs diff --git a/src/test/ui/issues/issue-33941.rs b/tests/ui/issues/issue-33941.rs similarity index 100% rename from src/test/ui/issues/issue-33941.rs rename to tests/ui/issues/issue-33941.rs diff --git a/src/test/ui/issues/issue-33941.stderr b/tests/ui/issues/issue-33941.stderr similarity index 100% rename from src/test/ui/issues/issue-33941.stderr rename to tests/ui/issues/issue-33941.stderr diff --git a/src/test/ui/issues/issue-33992.rs b/tests/ui/issues/issue-33992.rs similarity index 100% rename from src/test/ui/issues/issue-33992.rs rename to tests/ui/issues/issue-33992.rs diff --git a/src/test/ui/issues/issue-34047.rs b/tests/ui/issues/issue-34047.rs similarity index 100% rename from src/test/ui/issues/issue-34047.rs rename to tests/ui/issues/issue-34047.rs diff --git a/src/test/ui/issues/issue-34047.stderr b/tests/ui/issues/issue-34047.stderr similarity index 100% rename from src/test/ui/issues/issue-34047.stderr rename to tests/ui/issues/issue-34047.stderr diff --git a/src/test/ui/issues/issue-34074.rs b/tests/ui/issues/issue-34074.rs similarity index 100% rename from src/test/ui/issues/issue-34074.rs rename to tests/ui/issues/issue-34074.rs diff --git a/src/test/ui/issues/issue-34209.rs b/tests/ui/issues/issue-34209.rs similarity index 100% rename from src/test/ui/issues/issue-34209.rs rename to tests/ui/issues/issue-34209.rs diff --git a/src/test/ui/issues/issue-34209.stderr b/tests/ui/issues/issue-34209.stderr similarity index 100% rename from src/test/ui/issues/issue-34209.stderr rename to tests/ui/issues/issue-34209.stderr diff --git a/src/test/ui/issues/issue-34229.rs b/tests/ui/issues/issue-34229.rs similarity index 100% rename from src/test/ui/issues/issue-34229.rs rename to tests/ui/issues/issue-34229.rs diff --git a/src/test/ui/issues/issue-34229.stderr b/tests/ui/issues/issue-34229.stderr similarity index 100% rename from src/test/ui/issues/issue-34229.stderr rename to tests/ui/issues/issue-34229.stderr diff --git a/src/test/ui/issues/issue-3424.rs b/tests/ui/issues/issue-3424.rs similarity index 100% rename from src/test/ui/issues/issue-3424.rs rename to tests/ui/issues/issue-3424.rs diff --git a/src/test/ui/issues/issue-3429.rs b/tests/ui/issues/issue-3429.rs similarity index 100% rename from src/test/ui/issues/issue-3429.rs rename to tests/ui/issues/issue-3429.rs diff --git a/src/test/ui/issues/issue-34334.rs b/tests/ui/issues/issue-34334.rs similarity index 100% rename from src/test/ui/issues/issue-34334.rs rename to tests/ui/issues/issue-34334.rs diff --git a/src/test/ui/issues/issue-34334.stderr b/tests/ui/issues/issue-34334.stderr similarity index 100% rename from src/test/ui/issues/issue-34334.stderr rename to tests/ui/issues/issue-34334.stderr diff --git a/src/test/ui/issues/issue-34349.rs b/tests/ui/issues/issue-34349.rs similarity index 100% rename from src/test/ui/issues/issue-34349.rs rename to tests/ui/issues/issue-34349.rs diff --git a/src/test/ui/issues/issue-34349.stderr b/tests/ui/issues/issue-34349.stderr similarity index 100% rename from src/test/ui/issues/issue-34349.stderr rename to tests/ui/issues/issue-34349.stderr diff --git a/src/test/ui/issues/issue-34373.rs b/tests/ui/issues/issue-34373.rs similarity index 100% rename from src/test/ui/issues/issue-34373.rs rename to tests/ui/issues/issue-34373.rs diff --git a/src/test/ui/issues/issue-34373.stderr b/tests/ui/issues/issue-34373.stderr similarity index 100% rename from src/test/ui/issues/issue-34373.stderr rename to tests/ui/issues/issue-34373.stderr diff --git a/src/test/ui/issues/issue-34418.rs b/tests/ui/issues/issue-34418.rs similarity index 100% rename from src/test/ui/issues/issue-34418.rs rename to tests/ui/issues/issue-34418.rs diff --git a/src/test/ui/issues/issue-34427.rs b/tests/ui/issues/issue-34427.rs similarity index 100% rename from src/test/ui/issues/issue-34427.rs rename to tests/ui/issues/issue-34427.rs diff --git a/src/test/ui/issues/issue-3447.rs b/tests/ui/issues/issue-3447.rs similarity index 100% rename from src/test/ui/issues/issue-3447.rs rename to tests/ui/issues/issue-3447.rs diff --git a/src/test/ui/issues/issue-34503.rs b/tests/ui/issues/issue-34503.rs similarity index 100% rename from src/test/ui/issues/issue-34503.rs rename to tests/ui/issues/issue-34503.rs diff --git a/src/test/ui/issues/issue-34569.rs b/tests/ui/issues/issue-34569.rs similarity index 100% rename from src/test/ui/issues/issue-34569.rs rename to tests/ui/issues/issue-34569.rs diff --git a/src/test/ui/issues/issue-34571.rs b/tests/ui/issues/issue-34571.rs similarity index 100% rename from src/test/ui/issues/issue-34571.rs rename to tests/ui/issues/issue-34571.rs diff --git a/src/test/ui/issues/issue-34721.fixed b/tests/ui/issues/issue-34721.fixed similarity index 100% rename from src/test/ui/issues/issue-34721.fixed rename to tests/ui/issues/issue-34721.fixed diff --git a/src/test/ui/issues/issue-34721.rs b/tests/ui/issues/issue-34721.rs similarity index 100% rename from src/test/ui/issues/issue-34721.rs rename to tests/ui/issues/issue-34721.rs diff --git a/src/test/ui/issues/issue-34721.stderr b/tests/ui/issues/issue-34721.stderr similarity index 100% rename from src/test/ui/issues/issue-34721.stderr rename to tests/ui/issues/issue-34721.stderr diff --git a/src/test/ui/issues/issue-34751.rs b/tests/ui/issues/issue-34751.rs similarity index 100% rename from src/test/ui/issues/issue-34751.rs rename to tests/ui/issues/issue-34751.rs diff --git a/src/test/ui/issues/issue-3477.rs b/tests/ui/issues/issue-3477.rs similarity index 100% rename from src/test/ui/issues/issue-3477.rs rename to tests/ui/issues/issue-3477.rs diff --git a/src/test/ui/issues/issue-3477.stderr b/tests/ui/issues/issue-3477.stderr similarity index 100% rename from src/test/ui/issues/issue-3477.stderr rename to tests/ui/issues/issue-3477.stderr diff --git a/src/test/ui/issues/issue-34780.rs b/tests/ui/issues/issue-34780.rs similarity index 100% rename from src/test/ui/issues/issue-34780.rs rename to tests/ui/issues/issue-34780.rs diff --git a/src/test/ui/issues/issue-34796.rs b/tests/ui/issues/issue-34796.rs similarity index 100% rename from src/test/ui/issues/issue-34796.rs rename to tests/ui/issues/issue-34796.rs diff --git a/src/test/ui/issues/issue-34839.rs b/tests/ui/issues/issue-34839.rs similarity index 100% rename from src/test/ui/issues/issue-34839.rs rename to tests/ui/issues/issue-34839.rs diff --git a/src/test/ui/issues/issue-34932.rs b/tests/ui/issues/issue-34932.rs similarity index 100% rename from src/test/ui/issues/issue-34932.rs rename to tests/ui/issues/issue-34932.rs diff --git a/src/test/ui/issues/issue-3500.rs b/tests/ui/issues/issue-3500.rs similarity index 100% rename from src/test/ui/issues/issue-3500.rs rename to tests/ui/issues/issue-3500.rs diff --git a/src/test/ui/issues/issue-35139.rs b/tests/ui/issues/issue-35139.rs similarity index 100% rename from src/test/ui/issues/issue-35139.rs rename to tests/ui/issues/issue-35139.rs diff --git a/src/test/ui/issues/issue-35139.stderr b/tests/ui/issues/issue-35139.stderr similarity index 100% rename from src/test/ui/issues/issue-35139.stderr rename to tests/ui/issues/issue-35139.stderr diff --git a/src/test/ui/issues/issue-3521-2.fixed b/tests/ui/issues/issue-3521-2.fixed similarity index 100% rename from src/test/ui/issues/issue-3521-2.fixed rename to tests/ui/issues/issue-3521-2.fixed diff --git a/src/test/ui/issues/issue-3521-2.rs b/tests/ui/issues/issue-3521-2.rs similarity index 100% rename from src/test/ui/issues/issue-3521-2.rs rename to tests/ui/issues/issue-3521-2.rs diff --git a/src/test/ui/issues/issue-3521-2.stderr b/tests/ui/issues/issue-3521-2.stderr similarity index 100% rename from src/test/ui/issues/issue-3521-2.stderr rename to tests/ui/issues/issue-3521-2.stderr diff --git a/src/test/ui/issues/issue-35241.rs b/tests/ui/issues/issue-35241.rs similarity index 100% rename from src/test/ui/issues/issue-35241.rs rename to tests/ui/issues/issue-35241.rs diff --git a/src/test/ui/issues/issue-35241.stderr b/tests/ui/issues/issue-35241.stderr similarity index 100% rename from src/test/ui/issues/issue-35241.stderr rename to tests/ui/issues/issue-35241.stderr diff --git a/src/test/ui/issues/issue-35423.rs b/tests/ui/issues/issue-35423.rs similarity index 100% rename from src/test/ui/issues/issue-35423.rs rename to tests/ui/issues/issue-35423.rs diff --git a/src/test/ui/issues/issue-3556.rs b/tests/ui/issues/issue-3556.rs similarity index 100% rename from src/test/ui/issues/issue-3556.rs rename to tests/ui/issues/issue-3556.rs diff --git a/src/test/ui/issues/issue-35570.rs b/tests/ui/issues/issue-35570.rs similarity index 100% rename from src/test/ui/issues/issue-35570.rs rename to tests/ui/issues/issue-35570.rs diff --git a/src/test/ui/issues/issue-35570.stderr b/tests/ui/issues/issue-35570.stderr similarity index 100% rename from src/test/ui/issues/issue-35570.stderr rename to tests/ui/issues/issue-35570.stderr diff --git a/src/test/ui/issues/issue-3559.rs b/tests/ui/issues/issue-3559.rs similarity index 100% rename from src/test/ui/issues/issue-3559.rs rename to tests/ui/issues/issue-3559.rs diff --git a/src/test/ui/issues/issue-35600.rs b/tests/ui/issues/issue-35600.rs similarity index 100% rename from src/test/ui/issues/issue-35600.rs rename to tests/ui/issues/issue-35600.rs diff --git a/src/test/ui/issues/issue-3563-3.rs b/tests/ui/issues/issue-3563-3.rs similarity index 100% rename from src/test/ui/issues/issue-3563-3.rs rename to tests/ui/issues/issue-3563-3.rs diff --git a/src/test/ui/issues/issue-3574.rs b/tests/ui/issues/issue-3574.rs similarity index 100% rename from src/test/ui/issues/issue-3574.rs rename to tests/ui/issues/issue-3574.rs diff --git a/src/test/ui/issues/issue-35815.rs b/tests/ui/issues/issue-35815.rs similarity index 100% rename from src/test/ui/issues/issue-35815.rs rename to tests/ui/issues/issue-35815.rs diff --git a/src/test/ui/issues/issue-35976.rs b/tests/ui/issues/issue-35976.rs similarity index 100% rename from src/test/ui/issues/issue-35976.rs rename to tests/ui/issues/issue-35976.rs diff --git a/src/test/ui/issues/issue-35976.unimported.stderr b/tests/ui/issues/issue-35976.unimported.stderr similarity index 100% rename from src/test/ui/issues/issue-35976.unimported.stderr rename to tests/ui/issues/issue-35976.unimported.stderr diff --git a/src/test/ui/issues/issue-35988.rs b/tests/ui/issues/issue-35988.rs similarity index 100% rename from src/test/ui/issues/issue-35988.rs rename to tests/ui/issues/issue-35988.rs diff --git a/src/test/ui/issues/issue-35988.stderr b/tests/ui/issues/issue-35988.stderr similarity index 100% rename from src/test/ui/issues/issue-35988.stderr rename to tests/ui/issues/issue-35988.stderr diff --git a/src/test/ui/issues/issue-36023.rs b/tests/ui/issues/issue-36023.rs similarity index 100% rename from src/test/ui/issues/issue-36023.rs rename to tests/ui/issues/issue-36023.rs diff --git a/src/test/ui/issues/issue-36036-associated-type-layout.rs b/tests/ui/issues/issue-36036-associated-type-layout.rs similarity index 100% rename from src/test/ui/issues/issue-36036-associated-type-layout.rs rename to tests/ui/issues/issue-36036-associated-type-layout.rs diff --git a/src/test/ui/issues/issue-36075.rs b/tests/ui/issues/issue-36075.rs similarity index 100% rename from src/test/ui/issues/issue-36075.rs rename to tests/ui/issues/issue-36075.rs diff --git a/src/test/ui/issues/issue-3609.rs b/tests/ui/issues/issue-3609.rs similarity index 100% rename from src/test/ui/issues/issue-3609.rs rename to tests/ui/issues/issue-3609.rs diff --git a/src/test/ui/issues/issue-36116.rs b/tests/ui/issues/issue-36116.rs similarity index 100% rename from src/test/ui/issues/issue-36116.rs rename to tests/ui/issues/issue-36116.rs diff --git a/src/test/ui/issues/issue-36260.rs b/tests/ui/issues/issue-36260.rs similarity index 100% rename from src/test/ui/issues/issue-36260.rs rename to tests/ui/issues/issue-36260.rs diff --git a/src/test/ui/issues/issue-36278-prefix-nesting.rs b/tests/ui/issues/issue-36278-prefix-nesting.rs similarity index 100% rename from src/test/ui/issues/issue-36278-prefix-nesting.rs rename to tests/ui/issues/issue-36278-prefix-nesting.rs diff --git a/src/test/ui/issues/issue-36299.rs b/tests/ui/issues/issue-36299.rs similarity index 100% rename from src/test/ui/issues/issue-36299.rs rename to tests/ui/issues/issue-36299.rs diff --git a/src/test/ui/issues/issue-36299.stderr b/tests/ui/issues/issue-36299.stderr similarity index 100% rename from src/test/ui/issues/issue-36299.stderr rename to tests/ui/issues/issue-36299.stderr diff --git a/src/test/ui/issues/issue-36379.rs b/tests/ui/issues/issue-36379.rs similarity index 100% rename from src/test/ui/issues/issue-36379.rs rename to tests/ui/issues/issue-36379.rs diff --git a/src/test/ui/issues/issue-36400.rs b/tests/ui/issues/issue-36400.rs similarity index 100% rename from src/test/ui/issues/issue-36400.rs rename to tests/ui/issues/issue-36400.rs diff --git a/src/test/ui/issues/issue-36400.stderr b/tests/ui/issues/issue-36400.stderr similarity index 100% rename from src/test/ui/issues/issue-36400.stderr rename to tests/ui/issues/issue-36400.stderr diff --git a/src/test/ui/issues/issue-36401.rs b/tests/ui/issues/issue-36401.rs similarity index 100% rename from src/test/ui/issues/issue-36401.rs rename to tests/ui/issues/issue-36401.rs diff --git a/src/test/ui/issues/issue-36474.rs b/tests/ui/issues/issue-36474.rs similarity index 100% rename from src/test/ui/issues/issue-36474.rs rename to tests/ui/issues/issue-36474.rs diff --git a/src/test/ui/issues/issue-3656.rs b/tests/ui/issues/issue-3656.rs similarity index 100% rename from src/test/ui/issues/issue-3656.rs rename to tests/ui/issues/issue-3656.rs diff --git a/src/test/ui/issues/issue-3668-2.fixed b/tests/ui/issues/issue-3668-2.fixed similarity index 100% rename from src/test/ui/issues/issue-3668-2.fixed rename to tests/ui/issues/issue-3668-2.fixed diff --git a/src/test/ui/issues/issue-3668-2.rs b/tests/ui/issues/issue-3668-2.rs similarity index 100% rename from src/test/ui/issues/issue-3668-2.rs rename to tests/ui/issues/issue-3668-2.rs diff --git a/src/test/ui/issues/issue-3668-2.stderr b/tests/ui/issues/issue-3668-2.stderr similarity index 100% rename from src/test/ui/issues/issue-3668-2.stderr rename to tests/ui/issues/issue-3668-2.stderr diff --git a/src/test/ui/issues/issue-3668.rs b/tests/ui/issues/issue-3668.rs similarity index 100% rename from src/test/ui/issues/issue-3668.rs rename to tests/ui/issues/issue-3668.rs diff --git a/src/test/ui/issues/issue-3668.stderr b/tests/ui/issues/issue-3668.stderr similarity index 100% rename from src/test/ui/issues/issue-3668.stderr rename to tests/ui/issues/issue-3668.stderr diff --git a/src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs b/tests/ui/issues/issue-36744-bitcast-args-if-needed.rs similarity index 100% rename from src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs rename to tests/ui/issues/issue-36744-bitcast-args-if-needed.rs diff --git a/src/test/ui/issues/issue-36744-without-calls.rs b/tests/ui/issues/issue-36744-without-calls.rs similarity index 100% rename from src/test/ui/issues/issue-36744-without-calls.rs rename to tests/ui/issues/issue-36744-without-calls.rs diff --git a/src/test/ui/issues/issue-36786-resolve-call.rs b/tests/ui/issues/issue-36786-resolve-call.rs similarity index 100% rename from src/test/ui/issues/issue-36786-resolve-call.rs rename to tests/ui/issues/issue-36786-resolve-call.rs diff --git a/src/test/ui/issues/issue-36792.rs b/tests/ui/issues/issue-36792.rs similarity index 100% rename from src/test/ui/issues/issue-36792.rs rename to tests/ui/issues/issue-36792.rs diff --git a/src/test/ui/issues/issue-3680.rs b/tests/ui/issues/issue-3680.rs similarity index 100% rename from src/test/ui/issues/issue-3680.rs rename to tests/ui/issues/issue-3680.rs diff --git a/src/test/ui/issues/issue-3680.stderr b/tests/ui/issues/issue-3680.stderr similarity index 100% rename from src/test/ui/issues/issue-3680.stderr rename to tests/ui/issues/issue-3680.stderr diff --git a/src/test/ui/issues/issue-36816.rs b/tests/ui/issues/issue-36816.rs similarity index 100% rename from src/test/ui/issues/issue-36816.rs rename to tests/ui/issues/issue-36816.rs diff --git a/src/test/ui/issues/issue-36836.rs b/tests/ui/issues/issue-36836.rs similarity index 100% rename from src/test/ui/issues/issue-36836.rs rename to tests/ui/issues/issue-36836.rs diff --git a/src/test/ui/issues/issue-36836.stderr b/tests/ui/issues/issue-36836.stderr similarity index 100% rename from src/test/ui/issues/issue-36836.stderr rename to tests/ui/issues/issue-36836.stderr diff --git a/src/test/ui/issues/issue-36839.rs b/tests/ui/issues/issue-36839.rs similarity index 100% rename from src/test/ui/issues/issue-36839.rs rename to tests/ui/issues/issue-36839.rs diff --git a/src/test/ui/issues/issue-36856.rs b/tests/ui/issues/issue-36856.rs similarity index 100% rename from src/test/ui/issues/issue-36856.rs rename to tests/ui/issues/issue-36856.rs diff --git a/src/test/ui/issues/issue-36936.rs b/tests/ui/issues/issue-36936.rs similarity index 100% rename from src/test/ui/issues/issue-36936.rs rename to tests/ui/issues/issue-36936.rs diff --git a/src/test/ui/issues/issue-36954.rs b/tests/ui/issues/issue-36954.rs similarity index 100% rename from src/test/ui/issues/issue-36954.rs rename to tests/ui/issues/issue-36954.rs diff --git a/src/test/ui/issues/issue-3702-2.rs b/tests/ui/issues/issue-3702-2.rs similarity index 100% rename from src/test/ui/issues/issue-3702-2.rs rename to tests/ui/issues/issue-3702-2.rs diff --git a/src/test/ui/issues/issue-3702-2.stderr b/tests/ui/issues/issue-3702-2.stderr similarity index 100% rename from src/test/ui/issues/issue-3702-2.stderr rename to tests/ui/issues/issue-3702-2.stderr diff --git a/src/test/ui/issues/issue-3702.rs b/tests/ui/issues/issue-3702.rs similarity index 100% rename from src/test/ui/issues/issue-3702.rs rename to tests/ui/issues/issue-3702.rs diff --git a/src/test/ui/issues/issue-37051.rs b/tests/ui/issues/issue-37051.rs similarity index 100% rename from src/test/ui/issues/issue-37051.rs rename to tests/ui/issues/issue-37051.rs diff --git a/src/test/ui/issues/issue-3707.rs b/tests/ui/issues/issue-3707.rs similarity index 100% rename from src/test/ui/issues/issue-3707.rs rename to tests/ui/issues/issue-3707.rs diff --git a/src/test/ui/issues/issue-3707.stderr b/tests/ui/issues/issue-3707.stderr similarity index 100% rename from src/test/ui/issues/issue-3707.stderr rename to tests/ui/issues/issue-3707.stderr diff --git a/src/test/ui/issues/issue-37109.rs b/tests/ui/issues/issue-37109.rs similarity index 100% rename from src/test/ui/issues/issue-37109.rs rename to tests/ui/issues/issue-37109.rs diff --git a/src/test/ui/issues/issue-37131.rs b/tests/ui/issues/issue-37131.rs similarity index 100% rename from src/test/ui/issues/issue-37131.rs rename to tests/ui/issues/issue-37131.rs diff --git a/src/test/ui/issues/issue-37131.stderr b/tests/ui/issues/issue-37131.stderr similarity index 100% rename from src/test/ui/issues/issue-37131.stderr rename to tests/ui/issues/issue-37131.stderr diff --git a/src/test/ui/issues/issue-37291/auxiliary/lib.rs b/tests/ui/issues/issue-37291/auxiliary/lib.rs similarity index 100% rename from src/test/ui/issues/issue-37291/auxiliary/lib.rs rename to tests/ui/issues/issue-37291/auxiliary/lib.rs diff --git a/src/test/ui/issues/issue-37291/main.rs b/tests/ui/issues/issue-37291/main.rs similarity index 100% rename from src/test/ui/issues/issue-37291/main.rs rename to tests/ui/issues/issue-37291/main.rs diff --git a/src/test/ui/issues/issue-37311-type-length-limit/issue-37311.polonius.stderr b/tests/ui/issues/issue-37311-type-length-limit/issue-37311.polonius.stderr similarity index 100% rename from src/test/ui/issues/issue-37311-type-length-limit/issue-37311.polonius.stderr rename to tests/ui/issues/issue-37311-type-length-limit/issue-37311.polonius.stderr diff --git a/src/test/ui/issues/issue-37311-type-length-limit/issue-37311.rs b/tests/ui/issues/issue-37311-type-length-limit/issue-37311.rs similarity index 100% rename from src/test/ui/issues/issue-37311-type-length-limit/issue-37311.rs rename to tests/ui/issues/issue-37311-type-length-limit/issue-37311.rs diff --git a/src/test/ui/issues/issue-37311-type-length-limit/issue-37311.stderr b/tests/ui/issues/issue-37311-type-length-limit/issue-37311.stderr similarity index 100% rename from src/test/ui/issues/issue-37311-type-length-limit/issue-37311.stderr rename to tests/ui/issues/issue-37311-type-length-limit/issue-37311.stderr diff --git a/src/test/ui/issues/issue-3743.rs b/tests/ui/issues/issue-3743.rs similarity index 100% rename from src/test/ui/issues/issue-3743.rs rename to tests/ui/issues/issue-3743.rs diff --git a/src/test/ui/issues/issue-37510.rs b/tests/ui/issues/issue-37510.rs similarity index 100% rename from src/test/ui/issues/issue-37510.rs rename to tests/ui/issues/issue-37510.rs diff --git a/src/test/ui/issues/issue-3753.rs b/tests/ui/issues/issue-3753.rs similarity index 100% rename from src/test/ui/issues/issue-3753.rs rename to tests/ui/issues/issue-3753.rs diff --git a/src/test/ui/issues/issue-37534.rs b/tests/ui/issues/issue-37534.rs similarity index 100% rename from src/test/ui/issues/issue-37534.rs rename to tests/ui/issues/issue-37534.rs diff --git a/src/test/ui/issues/issue-37534.stderr b/tests/ui/issues/issue-37534.stderr similarity index 100% rename from src/test/ui/issues/issue-37534.stderr rename to tests/ui/issues/issue-37534.stderr diff --git a/src/test/ui/issues/issue-37576.rs b/tests/ui/issues/issue-37576.rs similarity index 100% rename from src/test/ui/issues/issue-37576.rs rename to tests/ui/issues/issue-37576.rs diff --git a/src/test/ui/issues/issue-37576.stderr b/tests/ui/issues/issue-37576.stderr similarity index 100% rename from src/test/ui/issues/issue-37576.stderr rename to tests/ui/issues/issue-37576.stderr diff --git a/src/test/ui/issues/issue-37598.rs b/tests/ui/issues/issue-37598.rs similarity index 100% rename from src/test/ui/issues/issue-37598.rs rename to tests/ui/issues/issue-37598.rs diff --git a/src/test/ui/issues/issue-3763.rs b/tests/ui/issues/issue-3763.rs similarity index 100% rename from src/test/ui/issues/issue-3763.rs rename to tests/ui/issues/issue-3763.rs diff --git a/src/test/ui/issues/issue-3763.stderr b/tests/ui/issues/issue-3763.stderr similarity index 100% rename from src/test/ui/issues/issue-3763.stderr rename to tests/ui/issues/issue-3763.stderr diff --git a/src/test/ui/issues/issue-37665.rs b/tests/ui/issues/issue-37665.rs similarity index 100% rename from src/test/ui/issues/issue-37665.rs rename to tests/ui/issues/issue-37665.rs diff --git a/src/test/ui/issues/issue-37665.stderr b/tests/ui/issues/issue-37665.stderr similarity index 100% rename from src/test/ui/issues/issue-37665.stderr rename to tests/ui/issues/issue-37665.stderr diff --git a/src/test/ui/issues/issue-37686.rs b/tests/ui/issues/issue-37686.rs similarity index 100% rename from src/test/ui/issues/issue-37686.rs rename to tests/ui/issues/issue-37686.rs diff --git a/src/test/ui/issues/issue-37725.rs b/tests/ui/issues/issue-37725.rs similarity index 100% rename from src/test/ui/issues/issue-37725.rs rename to tests/ui/issues/issue-37725.rs diff --git a/src/test/ui/issues/issue-37733.rs b/tests/ui/issues/issue-37733.rs similarity index 100% rename from src/test/ui/issues/issue-37733.rs rename to tests/ui/issues/issue-37733.rs diff --git a/src/test/ui/issues/issue-3779.rs b/tests/ui/issues/issue-3779.rs similarity index 100% rename from src/test/ui/issues/issue-3779.rs rename to tests/ui/issues/issue-3779.rs diff --git a/src/test/ui/issues/issue-3779.stderr b/tests/ui/issues/issue-3779.stderr similarity index 100% rename from src/test/ui/issues/issue-3779.stderr rename to tests/ui/issues/issue-3779.stderr diff --git a/src/test/ui/issues/issue-37884.rs b/tests/ui/issues/issue-37884.rs similarity index 100% rename from src/test/ui/issues/issue-37884.rs rename to tests/ui/issues/issue-37884.rs diff --git a/src/test/ui/issues/issue-37884.stderr b/tests/ui/issues/issue-37884.stderr similarity index 100% rename from src/test/ui/issues/issue-37884.stderr rename to tests/ui/issues/issue-37884.stderr diff --git a/src/test/ui/issues/issue-3794.rs b/tests/ui/issues/issue-3794.rs similarity index 100% rename from src/test/ui/issues/issue-3794.rs rename to tests/ui/issues/issue-3794.rs diff --git a/src/test/ui/issues/issue-38160.rs b/tests/ui/issues/issue-38160.rs similarity index 100% rename from src/test/ui/issues/issue-38160.rs rename to tests/ui/issues/issue-38160.rs diff --git a/src/test/ui/issues/issue-38190.rs b/tests/ui/issues/issue-38190.rs similarity index 100% rename from src/test/ui/issues/issue-38190.rs rename to tests/ui/issues/issue-38190.rs diff --git a/src/test/ui/issues/issue-38226.rs b/tests/ui/issues/issue-38226.rs similarity index 100% rename from src/test/ui/issues/issue-38226.rs rename to tests/ui/issues/issue-38226.rs diff --git a/src/test/ui/issues/issue-38381.rs b/tests/ui/issues/issue-38381.rs similarity index 100% rename from src/test/ui/issues/issue-38381.rs rename to tests/ui/issues/issue-38381.rs diff --git a/src/test/ui/issues/issue-38412.rs b/tests/ui/issues/issue-38412.rs similarity index 100% rename from src/test/ui/issues/issue-38412.rs rename to tests/ui/issues/issue-38412.rs diff --git a/src/test/ui/issues/issue-38412.stderr b/tests/ui/issues/issue-38412.stderr similarity index 100% rename from src/test/ui/issues/issue-38412.stderr rename to tests/ui/issues/issue-38412.stderr diff --git a/src/test/ui/issues/issue-38437.rs b/tests/ui/issues/issue-38437.rs similarity index 100% rename from src/test/ui/issues/issue-38437.rs rename to tests/ui/issues/issue-38437.rs diff --git a/src/test/ui/issues/issue-38458.rs b/tests/ui/issues/issue-38458.rs similarity index 100% rename from src/test/ui/issues/issue-38458.rs rename to tests/ui/issues/issue-38458.rs diff --git a/src/test/ui/issues/issue-38458.stderr b/tests/ui/issues/issue-38458.stderr similarity index 100% rename from src/test/ui/issues/issue-38458.stderr rename to tests/ui/issues/issue-38458.stderr diff --git a/src/test/ui/issues/issue-3847.rs b/tests/ui/issues/issue-3847.rs similarity index 100% rename from src/test/ui/issues/issue-3847.rs rename to tests/ui/issues/issue-3847.rs diff --git a/src/test/ui/issues/issue-38556.rs b/tests/ui/issues/issue-38556.rs similarity index 100% rename from src/test/ui/issues/issue-38556.rs rename to tests/ui/issues/issue-38556.rs diff --git a/src/test/ui/issues/issue-38727.rs b/tests/ui/issues/issue-38727.rs similarity index 100% rename from src/test/ui/issues/issue-38727.rs rename to tests/ui/issues/issue-38727.rs diff --git a/src/test/ui/issues/issue-3874.rs b/tests/ui/issues/issue-3874.rs similarity index 100% rename from src/test/ui/issues/issue-3874.rs rename to tests/ui/issues/issue-3874.rs diff --git a/src/test/ui/issues/issue-38763.rs b/tests/ui/issues/issue-38763.rs similarity index 100% rename from src/test/ui/issues/issue-38763.rs rename to tests/ui/issues/issue-38763.rs diff --git a/src/test/ui/issues/issue-3878.rs b/tests/ui/issues/issue-3878.rs similarity index 100% rename from src/test/ui/issues/issue-3878.rs rename to tests/ui/issues/issue-3878.rs diff --git a/src/test/ui/issues/issue-38821.rs b/tests/ui/issues/issue-38821.rs similarity index 100% rename from src/test/ui/issues/issue-38821.rs rename to tests/ui/issues/issue-38821.rs diff --git a/src/test/ui/issues/issue-38821.stderr b/tests/ui/issues/issue-38821.stderr similarity index 100% rename from src/test/ui/issues/issue-38821.stderr rename to tests/ui/issues/issue-38821.stderr diff --git a/src/test/ui/issues/issue-38857.rs b/tests/ui/issues/issue-38857.rs similarity index 100% rename from src/test/ui/issues/issue-38857.rs rename to tests/ui/issues/issue-38857.rs diff --git a/src/test/ui/issues/issue-38857.stderr b/tests/ui/issues/issue-38857.stderr similarity index 100% rename from src/test/ui/issues/issue-38857.stderr rename to tests/ui/issues/issue-38857.stderr diff --git a/src/test/ui/issues/issue-38875/auxiliary/issue-38875-b.rs b/tests/ui/issues/issue-38875/auxiliary/issue-38875-b.rs similarity index 100% rename from src/test/ui/issues/issue-38875/auxiliary/issue-38875-b.rs rename to tests/ui/issues/issue-38875/auxiliary/issue-38875-b.rs diff --git a/src/test/ui/issues/issue-38875/issue-38875.rs b/tests/ui/issues/issue-38875/issue-38875.rs similarity index 100% rename from src/test/ui/issues/issue-38875/issue-38875.rs rename to tests/ui/issues/issue-38875/issue-38875.rs diff --git a/src/test/ui/issues/issue-3888-2.rs b/tests/ui/issues/issue-3888-2.rs similarity index 100% rename from src/test/ui/issues/issue-3888-2.rs rename to tests/ui/issues/issue-3888-2.rs diff --git a/src/test/ui/issues/issue-38919.rs b/tests/ui/issues/issue-38919.rs similarity index 100% rename from src/test/ui/issues/issue-38919.rs rename to tests/ui/issues/issue-38919.rs diff --git a/src/test/ui/issues/issue-38919.stderr b/tests/ui/issues/issue-38919.stderr similarity index 100% rename from src/test/ui/issues/issue-38919.stderr rename to tests/ui/issues/issue-38919.stderr diff --git a/src/test/ui/issues/issue-38942.rs b/tests/ui/issues/issue-38942.rs similarity index 100% rename from src/test/ui/issues/issue-38942.rs rename to tests/ui/issues/issue-38942.rs diff --git a/src/test/ui/issues/issue-3895.rs b/tests/ui/issues/issue-3895.rs similarity index 100% rename from src/test/ui/issues/issue-3895.rs rename to tests/ui/issues/issue-3895.rs diff --git a/src/test/ui/issues/issue-38954.rs b/tests/ui/issues/issue-38954.rs similarity index 100% rename from src/test/ui/issues/issue-38954.rs rename to tests/ui/issues/issue-38954.rs diff --git a/src/test/ui/issues/issue-38954.stderr b/tests/ui/issues/issue-38954.stderr similarity index 100% rename from src/test/ui/issues/issue-38954.stderr rename to tests/ui/issues/issue-38954.stderr diff --git a/src/test/ui/issues/issue-38987.rs b/tests/ui/issues/issue-38987.rs similarity index 100% rename from src/test/ui/issues/issue-38987.rs rename to tests/ui/issues/issue-38987.rs diff --git a/src/test/ui/issues/issue-39089.rs b/tests/ui/issues/issue-39089.rs similarity index 100% rename from src/test/ui/issues/issue-39089.rs rename to tests/ui/issues/issue-39089.rs diff --git a/src/test/ui/issues/issue-39175.rs b/tests/ui/issues/issue-39175.rs similarity index 100% rename from src/test/ui/issues/issue-39175.rs rename to tests/ui/issues/issue-39175.rs diff --git a/src/test/ui/issues/issue-39175.stderr b/tests/ui/issues/issue-39175.stderr similarity index 100% rename from src/test/ui/issues/issue-39175.stderr rename to tests/ui/issues/issue-39175.stderr diff --git a/src/test/ui/issues/issue-39211.rs b/tests/ui/issues/issue-39211.rs similarity index 100% rename from src/test/ui/issues/issue-39211.rs rename to tests/ui/issues/issue-39211.rs diff --git a/src/test/ui/issues/issue-39211.stderr b/tests/ui/issues/issue-39211.stderr similarity index 100% rename from src/test/ui/issues/issue-39211.stderr rename to tests/ui/issues/issue-39211.stderr diff --git a/src/test/ui/issues/issue-39292.rs b/tests/ui/issues/issue-39292.rs similarity index 100% rename from src/test/ui/issues/issue-39292.rs rename to tests/ui/issues/issue-39292.rs diff --git a/src/test/ui/issues/issue-39367.rs b/tests/ui/issues/issue-39367.rs similarity index 100% rename from src/test/ui/issues/issue-39367.rs rename to tests/ui/issues/issue-39367.rs diff --git a/src/test/ui/issues/issue-39467.rs b/tests/ui/issues/issue-39467.rs similarity index 100% rename from src/test/ui/issues/issue-39467.rs rename to tests/ui/issues/issue-39467.rs diff --git a/src/test/ui/issues/issue-39548.rs b/tests/ui/issues/issue-39548.rs similarity index 100% rename from src/test/ui/issues/issue-39548.rs rename to tests/ui/issues/issue-39548.rs diff --git a/src/test/ui/issues/issue-39687.rs b/tests/ui/issues/issue-39687.rs similarity index 100% rename from src/test/ui/issues/issue-39687.rs rename to tests/ui/issues/issue-39687.rs diff --git a/src/test/ui/issues/issue-39687.stderr b/tests/ui/issues/issue-39687.stderr similarity index 100% rename from src/test/ui/issues/issue-39687.stderr rename to tests/ui/issues/issue-39687.stderr diff --git a/src/test/ui/issues/issue-39709.rs b/tests/ui/issues/issue-39709.rs similarity index 100% rename from src/test/ui/issues/issue-39709.rs rename to tests/ui/issues/issue-39709.rs diff --git a/src/test/ui/issues/issue-3979-2.rs b/tests/ui/issues/issue-3979-2.rs similarity index 100% rename from src/test/ui/issues/issue-3979-2.rs rename to tests/ui/issues/issue-3979-2.rs diff --git a/src/test/ui/issues/issue-3979-generics.rs b/tests/ui/issues/issue-3979-generics.rs similarity index 100% rename from src/test/ui/issues/issue-3979-generics.rs rename to tests/ui/issues/issue-3979-generics.rs diff --git a/src/test/ui/issues/issue-3979-xcrate.rs b/tests/ui/issues/issue-3979-xcrate.rs similarity index 100% rename from src/test/ui/issues/issue-3979-xcrate.rs rename to tests/ui/issues/issue-3979-xcrate.rs diff --git a/src/test/ui/issues/issue-3979.rs b/tests/ui/issues/issue-3979.rs similarity index 100% rename from src/test/ui/issues/issue-3979.rs rename to tests/ui/issues/issue-3979.rs diff --git a/src/test/ui/issues/issue-39808.rs b/tests/ui/issues/issue-39808.rs similarity index 100% rename from src/test/ui/issues/issue-39808.rs rename to tests/ui/issues/issue-39808.rs diff --git a/src/test/ui/issues/issue-39827.rs b/tests/ui/issues/issue-39827.rs similarity index 100% rename from src/test/ui/issues/issue-39827.rs rename to tests/ui/issues/issue-39827.rs diff --git a/src/test/ui/issues/issue-39848.rs b/tests/ui/issues/issue-39848.rs similarity index 100% rename from src/test/ui/issues/issue-39848.rs rename to tests/ui/issues/issue-39848.rs diff --git a/src/test/ui/issues/issue-39848.stderr b/tests/ui/issues/issue-39848.stderr similarity index 100% rename from src/test/ui/issues/issue-39848.stderr rename to tests/ui/issues/issue-39848.stderr diff --git a/src/test/ui/issues/issue-3991.rs b/tests/ui/issues/issue-3991.rs similarity index 100% rename from src/test/ui/issues/issue-3991.rs rename to tests/ui/issues/issue-3991.rs diff --git a/src/test/ui/issues/issue-3993.rs b/tests/ui/issues/issue-3993.rs similarity index 100% rename from src/test/ui/issues/issue-3993.rs rename to tests/ui/issues/issue-3993.rs diff --git a/src/test/ui/issues/issue-3993.stderr b/tests/ui/issues/issue-3993.stderr similarity index 100% rename from src/test/ui/issues/issue-3993.stderr rename to tests/ui/issues/issue-3993.stderr diff --git a/src/test/ui/issues/issue-39970.rs b/tests/ui/issues/issue-39970.rs similarity index 100% rename from src/test/ui/issues/issue-39970.rs rename to tests/ui/issues/issue-39970.rs diff --git a/src/test/ui/issues/issue-39970.stderr b/tests/ui/issues/issue-39970.stderr similarity index 100% rename from src/test/ui/issues/issue-39970.stderr rename to tests/ui/issues/issue-39970.stderr diff --git a/src/test/ui/issues/issue-39984.rs b/tests/ui/issues/issue-39984.rs similarity index 100% rename from src/test/ui/issues/issue-39984.rs rename to tests/ui/issues/issue-39984.rs diff --git a/src/test/ui/issues/issue-40000.rs b/tests/ui/issues/issue-40000.rs similarity index 100% rename from src/test/ui/issues/issue-40000.rs rename to tests/ui/issues/issue-40000.rs diff --git a/src/test/ui/issues/issue-40000.stderr b/tests/ui/issues/issue-40000.stderr similarity index 100% rename from src/test/ui/issues/issue-40000.stderr rename to tests/ui/issues/issue-40000.stderr diff --git a/src/test/ui/issues/issue-40003.rs b/tests/ui/issues/issue-40003.rs similarity index 100% rename from src/test/ui/issues/issue-40003.rs rename to tests/ui/issues/issue-40003.rs diff --git a/src/test/ui/issues/issue-40085.rs b/tests/ui/issues/issue-40085.rs similarity index 100% rename from src/test/ui/issues/issue-40085.rs rename to tests/ui/issues/issue-40085.rs diff --git a/src/test/ui/issues/issue-40136.rs b/tests/ui/issues/issue-40136.rs similarity index 100% rename from src/test/ui/issues/issue-40136.rs rename to tests/ui/issues/issue-40136.rs diff --git a/src/test/ui/issues/issue-40235.rs b/tests/ui/issues/issue-40235.rs similarity index 100% rename from src/test/ui/issues/issue-40235.rs rename to tests/ui/issues/issue-40235.rs diff --git a/src/test/ui/issues/issue-4025.rs b/tests/ui/issues/issue-4025.rs similarity index 100% rename from src/test/ui/issues/issue-4025.rs rename to tests/ui/issues/issue-4025.rs diff --git a/src/test/ui/issues/issue-40288-2.rs b/tests/ui/issues/issue-40288-2.rs similarity index 100% rename from src/test/ui/issues/issue-40288-2.rs rename to tests/ui/issues/issue-40288-2.rs diff --git a/src/test/ui/issues/issue-40288-2.stderr b/tests/ui/issues/issue-40288-2.stderr similarity index 100% rename from src/test/ui/issues/issue-40288-2.stderr rename to tests/ui/issues/issue-40288-2.stderr diff --git a/src/test/ui/issues/issue-40288.rs b/tests/ui/issues/issue-40288.rs similarity index 100% rename from src/test/ui/issues/issue-40288.rs rename to tests/ui/issues/issue-40288.rs diff --git a/src/test/ui/issues/issue-40288.stderr b/tests/ui/issues/issue-40288.stderr similarity index 100% rename from src/test/ui/issues/issue-40288.stderr rename to tests/ui/issues/issue-40288.stderr diff --git a/src/test/ui/issues/issue-40350.rs b/tests/ui/issues/issue-40350.rs similarity index 100% rename from src/test/ui/issues/issue-40350.rs rename to tests/ui/issues/issue-40350.rs diff --git a/src/test/ui/issues/issue-40402-ref-hints/issue-40402-1.rs b/tests/ui/issues/issue-40402-ref-hints/issue-40402-1.rs similarity index 100% rename from src/test/ui/issues/issue-40402-ref-hints/issue-40402-1.rs rename to tests/ui/issues/issue-40402-ref-hints/issue-40402-1.rs diff --git a/src/test/ui/issues/issue-40402-ref-hints/issue-40402-1.stderr b/tests/ui/issues/issue-40402-ref-hints/issue-40402-1.stderr similarity index 100% rename from src/test/ui/issues/issue-40402-ref-hints/issue-40402-1.stderr rename to tests/ui/issues/issue-40402-ref-hints/issue-40402-1.stderr diff --git a/src/test/ui/issues/issue-40402-ref-hints/issue-40402-2.rs b/tests/ui/issues/issue-40402-ref-hints/issue-40402-2.rs similarity index 100% rename from src/test/ui/issues/issue-40402-ref-hints/issue-40402-2.rs rename to tests/ui/issues/issue-40402-ref-hints/issue-40402-2.rs diff --git a/src/test/ui/issues/issue-40402-ref-hints/issue-40402-2.stderr b/tests/ui/issues/issue-40402-ref-hints/issue-40402-2.stderr similarity index 100% rename from src/test/ui/issues/issue-40402-ref-hints/issue-40402-2.stderr rename to tests/ui/issues/issue-40402-ref-hints/issue-40402-2.stderr diff --git a/src/test/ui/issues/issue-40408.rs b/tests/ui/issues/issue-40408.rs similarity index 100% rename from src/test/ui/issues/issue-40408.rs rename to tests/ui/issues/issue-40408.rs diff --git a/src/test/ui/issues/issue-40510-1.migrate.stderr b/tests/ui/issues/issue-40510-1.migrate.stderr similarity index 100% rename from src/test/ui/issues/issue-40510-1.migrate.stderr rename to tests/ui/issues/issue-40510-1.migrate.stderr diff --git a/src/test/ui/issues/issue-40510-1.rs b/tests/ui/issues/issue-40510-1.rs similarity index 100% rename from src/test/ui/issues/issue-40510-1.rs rename to tests/ui/issues/issue-40510-1.rs diff --git a/src/test/ui/issues/issue-40510-1.stderr b/tests/ui/issues/issue-40510-1.stderr similarity index 100% rename from src/test/ui/issues/issue-40510-1.stderr rename to tests/ui/issues/issue-40510-1.stderr diff --git a/src/test/ui/issues/issue-40510-2.rs b/tests/ui/issues/issue-40510-2.rs similarity index 100% rename from src/test/ui/issues/issue-40510-2.rs rename to tests/ui/issues/issue-40510-2.rs diff --git a/src/test/ui/issues/issue-40510-3.migrate.stderr b/tests/ui/issues/issue-40510-3.migrate.stderr similarity index 100% rename from src/test/ui/issues/issue-40510-3.migrate.stderr rename to tests/ui/issues/issue-40510-3.migrate.stderr diff --git a/src/test/ui/issues/issue-40510-3.rs b/tests/ui/issues/issue-40510-3.rs similarity index 100% rename from src/test/ui/issues/issue-40510-3.rs rename to tests/ui/issues/issue-40510-3.rs diff --git a/src/test/ui/issues/issue-40510-3.stderr b/tests/ui/issues/issue-40510-3.stderr similarity index 100% rename from src/test/ui/issues/issue-40510-3.stderr rename to tests/ui/issues/issue-40510-3.stderr diff --git a/src/test/ui/issues/issue-40510-4.rs b/tests/ui/issues/issue-40510-4.rs similarity index 100% rename from src/test/ui/issues/issue-40510-4.rs rename to tests/ui/issues/issue-40510-4.rs diff --git a/src/test/ui/issues/issue-40610.rs b/tests/ui/issues/issue-40610.rs similarity index 100% rename from src/test/ui/issues/issue-40610.rs rename to tests/ui/issues/issue-40610.rs diff --git a/src/test/ui/issues/issue-40610.stderr b/tests/ui/issues/issue-40610.stderr similarity index 100% rename from src/test/ui/issues/issue-40610.stderr rename to tests/ui/issues/issue-40610.stderr diff --git a/src/test/ui/issues/issue-40749.rs b/tests/ui/issues/issue-40749.rs similarity index 100% rename from src/test/ui/issues/issue-40749.rs rename to tests/ui/issues/issue-40749.rs diff --git a/src/test/ui/issues/issue-40749.stderr b/tests/ui/issues/issue-40749.stderr similarity index 100% rename from src/test/ui/issues/issue-40749.stderr rename to tests/ui/issues/issue-40749.stderr diff --git a/src/test/ui/issues/issue-40782.fixed b/tests/ui/issues/issue-40782.fixed similarity index 100% rename from src/test/ui/issues/issue-40782.fixed rename to tests/ui/issues/issue-40782.fixed diff --git a/src/test/ui/issues/issue-40782.rs b/tests/ui/issues/issue-40782.rs similarity index 100% rename from src/test/ui/issues/issue-40782.rs rename to tests/ui/issues/issue-40782.rs diff --git a/src/test/ui/issues/issue-40782.stderr b/tests/ui/issues/issue-40782.stderr similarity index 100% rename from src/test/ui/issues/issue-40782.stderr rename to tests/ui/issues/issue-40782.stderr diff --git a/src/test/ui/issues/issue-40827.rs b/tests/ui/issues/issue-40827.rs similarity index 100% rename from src/test/ui/issues/issue-40827.rs rename to tests/ui/issues/issue-40827.rs diff --git a/src/test/ui/issues/issue-40827.stderr b/tests/ui/issues/issue-40827.stderr similarity index 100% rename from src/test/ui/issues/issue-40827.stderr rename to tests/ui/issues/issue-40827.stderr diff --git a/src/test/ui/issues/issue-40845.rs b/tests/ui/issues/issue-40845.rs similarity index 100% rename from src/test/ui/issues/issue-40845.rs rename to tests/ui/issues/issue-40845.rs diff --git a/src/test/ui/issues/issue-40845.stderr b/tests/ui/issues/issue-40845.stderr similarity index 100% rename from src/test/ui/issues/issue-40845.stderr rename to tests/ui/issues/issue-40845.stderr diff --git a/src/test/ui/issues/issue-40861.rs b/tests/ui/issues/issue-40861.rs similarity index 100% rename from src/test/ui/issues/issue-40861.rs rename to tests/ui/issues/issue-40861.rs diff --git a/src/test/ui/issues/issue-40861.stderr b/tests/ui/issues/issue-40861.stderr similarity index 100% rename from src/test/ui/issues/issue-40861.stderr rename to tests/ui/issues/issue-40861.stderr diff --git a/src/test/ui/issues/issue-40883.rs b/tests/ui/issues/issue-40883.rs similarity index 100% rename from src/test/ui/issues/issue-40883.rs rename to tests/ui/issues/issue-40883.rs diff --git a/src/test/ui/issues/issue-40951.rs b/tests/ui/issues/issue-40951.rs similarity index 100% rename from src/test/ui/issues/issue-40951.rs rename to tests/ui/issues/issue-40951.rs diff --git a/src/test/ui/issues/issue-41053.rs b/tests/ui/issues/issue-41053.rs similarity index 100% rename from src/test/ui/issues/issue-41053.rs rename to tests/ui/issues/issue-41053.rs diff --git a/src/test/ui/issues/issue-41139.rs b/tests/ui/issues/issue-41139.rs similarity index 100% rename from src/test/ui/issues/issue-41139.rs rename to tests/ui/issues/issue-41139.rs diff --git a/src/test/ui/issues/issue-41139.stderr b/tests/ui/issues/issue-41139.stderr similarity index 100% rename from src/test/ui/issues/issue-41139.stderr rename to tests/ui/issues/issue-41139.stderr diff --git a/src/test/ui/issues/issue-41213.rs b/tests/ui/issues/issue-41213.rs similarity index 100% rename from src/test/ui/issues/issue-41213.rs rename to tests/ui/issues/issue-41213.rs diff --git a/src/test/ui/issues/issue-41229-ref-str.rs b/tests/ui/issues/issue-41229-ref-str.rs similarity index 100% rename from src/test/ui/issues/issue-41229-ref-str.rs rename to tests/ui/issues/issue-41229-ref-str.rs diff --git a/src/test/ui/issues/issue-41229-ref-str.stderr b/tests/ui/issues/issue-41229-ref-str.stderr similarity index 100% rename from src/test/ui/issues/issue-41229-ref-str.stderr rename to tests/ui/issues/issue-41229-ref-str.stderr diff --git a/src/test/ui/issues/issue-41272.rs b/tests/ui/issues/issue-41272.rs similarity index 100% rename from src/test/ui/issues/issue-41272.rs rename to tests/ui/issues/issue-41272.rs diff --git a/src/test/ui/issues/issue-41298.rs b/tests/ui/issues/issue-41298.rs similarity index 100% rename from src/test/ui/issues/issue-41298.rs rename to tests/ui/issues/issue-41298.rs diff --git a/src/test/ui/issues/issue-41394-rpass.rs b/tests/ui/issues/issue-41394-rpass.rs similarity index 100% rename from src/test/ui/issues/issue-41394-rpass.rs rename to tests/ui/issues/issue-41394-rpass.rs diff --git a/src/test/ui/issues/issue-41394.rs b/tests/ui/issues/issue-41394.rs similarity index 100% rename from src/test/ui/issues/issue-41394.rs rename to tests/ui/issues/issue-41394.rs diff --git a/src/test/ui/issues/issue-41394.stderr b/tests/ui/issues/issue-41394.stderr similarity index 100% rename from src/test/ui/issues/issue-41394.stderr rename to tests/ui/issues/issue-41394.stderr diff --git a/src/test/ui/issues/issue-41479.rs b/tests/ui/issues/issue-41479.rs similarity index 100% rename from src/test/ui/issues/issue-41479.rs rename to tests/ui/issues/issue-41479.rs diff --git a/src/test/ui/issues/issue-41498.rs b/tests/ui/issues/issue-41498.rs similarity index 100% rename from src/test/ui/issues/issue-41498.rs rename to tests/ui/issues/issue-41498.rs diff --git a/src/test/ui/issues/issue-41549.rs b/tests/ui/issues/issue-41549.rs similarity index 100% rename from src/test/ui/issues/issue-41549.rs rename to tests/ui/issues/issue-41549.rs diff --git a/src/test/ui/issues/issue-41549.stderr b/tests/ui/issues/issue-41549.stderr similarity index 100% rename from src/test/ui/issues/issue-41549.stderr rename to tests/ui/issues/issue-41549.stderr diff --git a/src/test/ui/issues/issue-41604.rs b/tests/ui/issues/issue-41604.rs similarity index 100% rename from src/test/ui/issues/issue-41604.rs rename to tests/ui/issues/issue-41604.rs diff --git a/src/test/ui/issues/issue-41628.rs b/tests/ui/issues/issue-41628.rs similarity index 100% rename from src/test/ui/issues/issue-41628.rs rename to tests/ui/issues/issue-41628.rs diff --git a/src/test/ui/issues/issue-41652/auxiliary/issue-41652-b.rs b/tests/ui/issues/issue-41652/auxiliary/issue-41652-b.rs similarity index 100% rename from src/test/ui/issues/issue-41652/auxiliary/issue-41652-b.rs rename to tests/ui/issues/issue-41652/auxiliary/issue-41652-b.rs diff --git a/src/test/ui/issues/issue-41652/issue-41652.rs b/tests/ui/issues/issue-41652/issue-41652.rs similarity index 100% rename from src/test/ui/issues/issue-41652/issue-41652.rs rename to tests/ui/issues/issue-41652/issue-41652.rs diff --git a/src/test/ui/issues/issue-41652/issue-41652.stderr b/tests/ui/issues/issue-41652/issue-41652.stderr similarity index 100% rename from src/test/ui/issues/issue-41652/issue-41652.stderr rename to tests/ui/issues/issue-41652/issue-41652.stderr diff --git a/src/test/ui/issues/issue-41677.rs b/tests/ui/issues/issue-41677.rs similarity index 100% rename from src/test/ui/issues/issue-41677.rs rename to tests/ui/issues/issue-41677.rs diff --git a/src/test/ui/issues/issue-41696.rs b/tests/ui/issues/issue-41696.rs similarity index 100% rename from src/test/ui/issues/issue-41696.rs rename to tests/ui/issues/issue-41696.rs diff --git a/src/test/ui/issues/issue-41726.rs b/tests/ui/issues/issue-41726.rs similarity index 100% rename from src/test/ui/issues/issue-41726.rs rename to tests/ui/issues/issue-41726.rs diff --git a/src/test/ui/issues/issue-41726.stderr b/tests/ui/issues/issue-41726.stderr similarity index 100% rename from src/test/ui/issues/issue-41726.stderr rename to tests/ui/issues/issue-41726.stderr diff --git a/src/test/ui/issues/issue-41742.rs b/tests/ui/issues/issue-41742.rs similarity index 100% rename from src/test/ui/issues/issue-41742.rs rename to tests/ui/issues/issue-41742.rs diff --git a/src/test/ui/issues/issue-41742.stderr b/tests/ui/issues/issue-41742.stderr similarity index 100% rename from src/test/ui/issues/issue-41742.stderr rename to tests/ui/issues/issue-41742.stderr diff --git a/src/test/ui/issues/issue-41744.rs b/tests/ui/issues/issue-41744.rs similarity index 100% rename from src/test/ui/issues/issue-41744.rs rename to tests/ui/issues/issue-41744.rs diff --git a/src/test/ui/issues/issue-41849-variance-req.rs b/tests/ui/issues/issue-41849-variance-req.rs similarity index 100% rename from src/test/ui/issues/issue-41849-variance-req.rs rename to tests/ui/issues/issue-41849-variance-req.rs diff --git a/src/test/ui/issues/issue-41880.rs b/tests/ui/issues/issue-41880.rs similarity index 100% rename from src/test/ui/issues/issue-41880.rs rename to tests/ui/issues/issue-41880.rs diff --git a/src/test/ui/issues/issue-41880.stderr b/tests/ui/issues/issue-41880.stderr similarity index 100% rename from src/test/ui/issues/issue-41880.stderr rename to tests/ui/issues/issue-41880.stderr diff --git a/src/test/ui/issues/issue-41888.rs b/tests/ui/issues/issue-41888.rs similarity index 100% rename from src/test/ui/issues/issue-41888.rs rename to tests/ui/issues/issue-41888.rs diff --git a/src/test/ui/issues/issue-41936-variance-coerce-unsized-cycle.rs b/tests/ui/issues/issue-41936-variance-coerce-unsized-cycle.rs similarity index 100% rename from src/test/ui/issues/issue-41936-variance-coerce-unsized-cycle.rs rename to tests/ui/issues/issue-41936-variance-coerce-unsized-cycle.rs diff --git a/src/test/ui/issues/issue-41974.rs b/tests/ui/issues/issue-41974.rs similarity index 100% rename from src/test/ui/issues/issue-41974.rs rename to tests/ui/issues/issue-41974.rs diff --git a/src/test/ui/issues/issue-41974.stderr b/tests/ui/issues/issue-41974.stderr similarity index 100% rename from src/test/ui/issues/issue-41974.stderr rename to tests/ui/issues/issue-41974.stderr diff --git a/src/test/ui/issues/issue-41998.rs b/tests/ui/issues/issue-41998.rs similarity index 100% rename from src/test/ui/issues/issue-41998.rs rename to tests/ui/issues/issue-41998.rs diff --git a/src/test/ui/issues/issue-42007.rs b/tests/ui/issues/issue-42007.rs similarity index 100% rename from src/test/ui/issues/issue-42007.rs rename to tests/ui/issues/issue-42007.rs diff --git a/src/test/ui/issues/issue-4208.rs b/tests/ui/issues/issue-4208.rs similarity index 100% rename from src/test/ui/issues/issue-4208.rs rename to tests/ui/issues/issue-4208.rs diff --git a/src/test/ui/issues/issue-42106.rs b/tests/ui/issues/issue-42106.rs similarity index 100% rename from src/test/ui/issues/issue-42106.rs rename to tests/ui/issues/issue-42106.rs diff --git a/src/test/ui/issues/issue-42106.stderr b/tests/ui/issues/issue-42106.stderr similarity index 100% rename from src/test/ui/issues/issue-42106.stderr rename to tests/ui/issues/issue-42106.stderr diff --git a/src/test/ui/issues/issue-42148.rs b/tests/ui/issues/issue-42148.rs similarity index 100% rename from src/test/ui/issues/issue-42148.rs rename to tests/ui/issues/issue-42148.rs diff --git a/src/test/ui/issues/issue-42210.rs b/tests/ui/issues/issue-42210.rs similarity index 100% rename from src/test/ui/issues/issue-42210.rs rename to tests/ui/issues/issue-42210.rs diff --git a/src/test/ui/issues/issue-4228.rs b/tests/ui/issues/issue-4228.rs similarity index 100% rename from src/test/ui/issues/issue-4228.rs rename to tests/ui/issues/issue-4228.rs diff --git a/src/test/ui/issues/issue-42312.rs b/tests/ui/issues/issue-42312.rs similarity index 100% rename from src/test/ui/issues/issue-42312.rs rename to tests/ui/issues/issue-42312.rs diff --git a/src/test/ui/issues/issue-42312.stderr b/tests/ui/issues/issue-42312.stderr similarity index 100% rename from src/test/ui/issues/issue-42312.stderr rename to tests/ui/issues/issue-42312.stderr diff --git a/src/test/ui/issues/issue-42453.rs b/tests/ui/issues/issue-42453.rs similarity index 100% rename from src/test/ui/issues/issue-42453.rs rename to tests/ui/issues/issue-42453.rs diff --git a/src/test/ui/issues/issue-42467.rs b/tests/ui/issues/issue-42467.rs similarity index 100% rename from src/test/ui/issues/issue-42467.rs rename to tests/ui/issues/issue-42467.rs diff --git a/src/test/ui/issues/issue-4252.rs b/tests/ui/issues/issue-4252.rs similarity index 100% rename from src/test/ui/issues/issue-4252.rs rename to tests/ui/issues/issue-4252.rs diff --git a/src/test/ui/issues/issue-42552.rs b/tests/ui/issues/issue-42552.rs similarity index 100% rename from src/test/ui/issues/issue-42552.rs rename to tests/ui/issues/issue-42552.rs diff --git a/src/test/ui/issues/issue-4265.rs b/tests/ui/issues/issue-4265.rs similarity index 100% rename from src/test/ui/issues/issue-4265.rs rename to tests/ui/issues/issue-4265.rs diff --git a/src/test/ui/issues/issue-4265.stderr b/tests/ui/issues/issue-4265.stderr similarity index 100% rename from src/test/ui/issues/issue-4265.stderr rename to tests/ui/issues/issue-4265.stderr diff --git a/src/test/ui/issues/issue-42755.rs b/tests/ui/issues/issue-42755.rs similarity index 100% rename from src/test/ui/issues/issue-42755.rs rename to tests/ui/issues/issue-42755.rs diff --git a/src/test/ui/issues/issue-42755.stderr b/tests/ui/issues/issue-42755.stderr similarity index 100% rename from src/test/ui/issues/issue-42755.stderr rename to tests/ui/issues/issue-42755.stderr diff --git a/src/test/ui/issues/issue-42796.rs b/tests/ui/issues/issue-42796.rs similarity index 100% rename from src/test/ui/issues/issue-42796.rs rename to tests/ui/issues/issue-42796.rs diff --git a/src/test/ui/issues/issue-42796.stderr b/tests/ui/issues/issue-42796.stderr similarity index 100% rename from src/test/ui/issues/issue-42796.stderr rename to tests/ui/issues/issue-42796.stderr diff --git a/src/test/ui/issues/issue-42880.rs b/tests/ui/issues/issue-42880.rs similarity index 100% rename from src/test/ui/issues/issue-42880.rs rename to tests/ui/issues/issue-42880.rs diff --git a/src/test/ui/issues/issue-42880.stderr b/tests/ui/issues/issue-42880.stderr similarity index 100% rename from src/test/ui/issues/issue-42880.stderr rename to tests/ui/issues/issue-42880.stderr diff --git a/src/test/ui/issues/issue-42956.rs b/tests/ui/issues/issue-42956.rs similarity index 100% rename from src/test/ui/issues/issue-42956.rs rename to tests/ui/issues/issue-42956.rs diff --git a/src/test/ui/issues/issue-43057.rs b/tests/ui/issues/issue-43057.rs similarity index 100% rename from src/test/ui/issues/issue-43057.rs rename to tests/ui/issues/issue-43057.rs diff --git a/src/test/ui/issues/issue-43162.rs b/tests/ui/issues/issue-43162.rs similarity index 100% rename from src/test/ui/issues/issue-43162.rs rename to tests/ui/issues/issue-43162.rs diff --git a/src/test/ui/issues/issue-43162.stderr b/tests/ui/issues/issue-43162.stderr similarity index 100% rename from src/test/ui/issues/issue-43162.stderr rename to tests/ui/issues/issue-43162.stderr diff --git a/src/test/ui/issues/issue-43205.rs b/tests/ui/issues/issue-43205.rs similarity index 100% rename from src/test/ui/issues/issue-43205.rs rename to tests/ui/issues/issue-43205.rs diff --git a/src/test/ui/issues/issue-43250.rs b/tests/ui/issues/issue-43250.rs similarity index 100% rename from src/test/ui/issues/issue-43250.rs rename to tests/ui/issues/issue-43250.rs diff --git a/src/test/ui/issues/issue-43250.stderr b/tests/ui/issues/issue-43250.stderr similarity index 100% rename from src/test/ui/issues/issue-43250.stderr rename to tests/ui/issues/issue-43250.stderr diff --git a/src/test/ui/issues/issue-43291.rs b/tests/ui/issues/issue-43291.rs similarity index 100% rename from src/test/ui/issues/issue-43291.rs rename to tests/ui/issues/issue-43291.rs diff --git a/src/test/ui/issues/issue-4333.rs b/tests/ui/issues/issue-4333.rs similarity index 100% rename from src/test/ui/issues/issue-4333.rs rename to tests/ui/issues/issue-4333.rs diff --git a/src/test/ui/issues/issue-4335.rs b/tests/ui/issues/issue-4335.rs similarity index 100% rename from src/test/ui/issues/issue-4335.rs rename to tests/ui/issues/issue-4335.rs diff --git a/src/test/ui/issues/issue-4335.stderr b/tests/ui/issues/issue-4335.stderr similarity index 100% rename from src/test/ui/issues/issue-4335.stderr rename to tests/ui/issues/issue-4335.stderr diff --git a/src/test/ui/issues/issue-43355.rs b/tests/ui/issues/issue-43355.rs similarity index 100% rename from src/test/ui/issues/issue-43355.rs rename to tests/ui/issues/issue-43355.rs diff --git a/src/test/ui/issues/issue-43355.stderr b/tests/ui/issues/issue-43355.stderr similarity index 100% rename from src/test/ui/issues/issue-43355.stderr rename to tests/ui/issues/issue-43355.stderr diff --git a/src/test/ui/issues/issue-43357.rs b/tests/ui/issues/issue-43357.rs similarity index 100% rename from src/test/ui/issues/issue-43357.rs rename to tests/ui/issues/issue-43357.rs diff --git a/src/test/ui/issues/issue-43420-no-over-suggest.rs b/tests/ui/issues/issue-43420-no-over-suggest.rs similarity index 100% rename from src/test/ui/issues/issue-43420-no-over-suggest.rs rename to tests/ui/issues/issue-43420-no-over-suggest.rs diff --git a/src/test/ui/issues/issue-43420-no-over-suggest.stderr b/tests/ui/issues/issue-43420-no-over-suggest.stderr similarity index 100% rename from src/test/ui/issues/issue-43420-no-over-suggest.stderr rename to tests/ui/issues/issue-43420-no-over-suggest.stderr diff --git a/src/test/ui/issues/issue-43424.rs b/tests/ui/issues/issue-43424.rs similarity index 100% rename from src/test/ui/issues/issue-43424.rs rename to tests/ui/issues/issue-43424.rs diff --git a/src/test/ui/issues/issue-43424.stderr b/tests/ui/issues/issue-43424.stderr similarity index 100% rename from src/test/ui/issues/issue-43424.stderr rename to tests/ui/issues/issue-43424.stderr diff --git a/src/test/ui/issues/issue-43431.rs b/tests/ui/issues/issue-43431.rs similarity index 100% rename from src/test/ui/issues/issue-43431.rs rename to tests/ui/issues/issue-43431.rs diff --git a/src/test/ui/issues/issue-43431.stderr b/tests/ui/issues/issue-43431.stderr similarity index 100% rename from src/test/ui/issues/issue-43431.stderr rename to tests/ui/issues/issue-43431.stderr diff --git a/src/test/ui/issues/issue-43483.rs b/tests/ui/issues/issue-43483.rs similarity index 100% rename from src/test/ui/issues/issue-43483.rs rename to tests/ui/issues/issue-43483.rs diff --git a/src/test/ui/issues/issue-43692.rs b/tests/ui/issues/issue-43692.rs similarity index 100% rename from src/test/ui/issues/issue-43692.rs rename to tests/ui/issues/issue-43692.rs diff --git a/src/test/ui/issues/issue-43806.rs b/tests/ui/issues/issue-43806.rs similarity index 100% rename from src/test/ui/issues/issue-43806.rs rename to tests/ui/issues/issue-43806.rs diff --git a/src/test/ui/issues/issue-43853.rs b/tests/ui/issues/issue-43853.rs similarity index 100% rename from src/test/ui/issues/issue-43853.rs rename to tests/ui/issues/issue-43853.rs diff --git a/src/test/ui/issues/issue-4387.rs b/tests/ui/issues/issue-4387.rs similarity index 100% rename from src/test/ui/issues/issue-4387.rs rename to tests/ui/issues/issue-4387.rs diff --git a/src/test/ui/issues/issue-43910.rs b/tests/ui/issues/issue-43910.rs similarity index 100% rename from src/test/ui/issues/issue-43910.rs rename to tests/ui/issues/issue-43910.rs diff --git a/src/test/ui/issues/issue-43923.rs b/tests/ui/issues/issue-43923.rs similarity index 100% rename from src/test/ui/issues/issue-43923.rs rename to tests/ui/issues/issue-43923.rs diff --git a/src/test/ui/issues/issue-43925.rs b/tests/ui/issues/issue-43925.rs similarity index 100% rename from src/test/ui/issues/issue-43925.rs rename to tests/ui/issues/issue-43925.rs diff --git a/src/test/ui/issues/issue-43925.stderr b/tests/ui/issues/issue-43925.stderr similarity index 100% rename from src/test/ui/issues/issue-43925.stderr rename to tests/ui/issues/issue-43925.stderr diff --git a/src/test/ui/issues/issue-43926.rs b/tests/ui/issues/issue-43926.rs similarity index 100% rename from src/test/ui/issues/issue-43926.rs rename to tests/ui/issues/issue-43926.rs diff --git a/src/test/ui/issues/issue-43926.stderr b/tests/ui/issues/issue-43926.stderr similarity index 100% rename from src/test/ui/issues/issue-43926.stderr rename to tests/ui/issues/issue-43926.stderr diff --git a/src/test/ui/issues/issue-43988.rs b/tests/ui/issues/issue-43988.rs similarity index 100% rename from src/test/ui/issues/issue-43988.rs rename to tests/ui/issues/issue-43988.rs diff --git a/src/test/ui/issues/issue-43988.stderr b/tests/ui/issues/issue-43988.stderr similarity index 100% rename from src/test/ui/issues/issue-43988.stderr rename to tests/ui/issues/issue-43988.stderr diff --git a/src/test/ui/issues/issue-44023.rs b/tests/ui/issues/issue-44023.rs similarity index 100% rename from src/test/ui/issues/issue-44023.rs rename to tests/ui/issues/issue-44023.rs diff --git a/src/test/ui/issues/issue-44023.stderr b/tests/ui/issues/issue-44023.stderr similarity index 100% rename from src/test/ui/issues/issue-44023.stderr rename to tests/ui/issues/issue-44023.stderr diff --git a/src/test/ui/issues/issue-44056.rs b/tests/ui/issues/issue-44056.rs similarity index 100% rename from src/test/ui/issues/issue-44056.rs rename to tests/ui/issues/issue-44056.rs diff --git a/src/test/ui/issues/issue-44078.rs b/tests/ui/issues/issue-44078.rs similarity index 100% rename from src/test/ui/issues/issue-44078.rs rename to tests/ui/issues/issue-44078.rs diff --git a/src/test/ui/issues/issue-44078.stderr b/tests/ui/issues/issue-44078.stderr similarity index 100% rename from src/test/ui/issues/issue-44078.stderr rename to tests/ui/issues/issue-44078.stderr diff --git a/src/test/ui/issues/issue-44216-add-instant.rs b/tests/ui/issues/issue-44216-add-instant.rs similarity index 100% rename from src/test/ui/issues/issue-44216-add-instant.rs rename to tests/ui/issues/issue-44216-add-instant.rs diff --git a/src/test/ui/issues/issue-44216-add-system-time.rs b/tests/ui/issues/issue-44216-add-system-time.rs similarity index 100% rename from src/test/ui/issues/issue-44216-add-system-time.rs rename to tests/ui/issues/issue-44216-add-system-time.rs diff --git a/src/test/ui/issues/issue-44216-sub-instant.rs b/tests/ui/issues/issue-44216-sub-instant.rs similarity index 100% rename from src/test/ui/issues/issue-44216-sub-instant.rs rename to tests/ui/issues/issue-44216-sub-instant.rs diff --git a/src/test/ui/issues/issue-44216-sub-system-time.rs b/tests/ui/issues/issue-44216-sub-system-time.rs similarity index 100% rename from src/test/ui/issues/issue-44216-sub-system-time.rs rename to tests/ui/issues/issue-44216-sub-system-time.rs diff --git a/src/test/ui/issues/issue-44239.fixed b/tests/ui/issues/issue-44239.fixed similarity index 100% rename from src/test/ui/issues/issue-44239.fixed rename to tests/ui/issues/issue-44239.fixed diff --git a/src/test/ui/issues/issue-44239.rs b/tests/ui/issues/issue-44239.rs similarity index 100% rename from src/test/ui/issues/issue-44239.rs rename to tests/ui/issues/issue-44239.rs diff --git a/src/test/ui/issues/issue-44239.stderr b/tests/ui/issues/issue-44239.stderr similarity index 100% rename from src/test/ui/issues/issue-44239.stderr rename to tests/ui/issues/issue-44239.stderr diff --git a/src/test/ui/issues/issue-44247.rs b/tests/ui/issues/issue-44247.rs similarity index 100% rename from src/test/ui/issues/issue-44247.rs rename to tests/ui/issues/issue-44247.rs diff --git a/src/test/ui/issues/issue-44255.rs b/tests/ui/issues/issue-44255.rs similarity index 100% rename from src/test/ui/issues/issue-44255.rs rename to tests/ui/issues/issue-44255.rs diff --git a/src/test/ui/issues/issue-44405.rs b/tests/ui/issues/issue-44405.rs similarity index 100% rename from src/test/ui/issues/issue-44405.rs rename to tests/ui/issues/issue-44405.rs diff --git a/src/test/ui/issues/issue-44405.stderr b/tests/ui/issues/issue-44405.stderr similarity index 100% rename from src/test/ui/issues/issue-44405.stderr rename to tests/ui/issues/issue-44405.stderr diff --git a/src/test/ui/issues/issue-4464.rs b/tests/ui/issues/issue-4464.rs similarity index 100% rename from src/test/ui/issues/issue-4464.rs rename to tests/ui/issues/issue-4464.rs diff --git a/src/test/ui/issues/issue-44730.rs b/tests/ui/issues/issue-44730.rs similarity index 100% rename from src/test/ui/issues/issue-44730.rs rename to tests/ui/issues/issue-44730.rs diff --git a/src/test/ui/issues/issue-44851.rs b/tests/ui/issues/issue-44851.rs similarity index 100% rename from src/test/ui/issues/issue-44851.rs rename to tests/ui/issues/issue-44851.rs diff --git a/src/test/ui/issues/issue-4517.rs b/tests/ui/issues/issue-4517.rs similarity index 100% rename from src/test/ui/issues/issue-4517.rs rename to tests/ui/issues/issue-4517.rs diff --git a/src/test/ui/issues/issue-4517.stderr b/tests/ui/issues/issue-4517.stderr similarity index 100% rename from src/test/ui/issues/issue-4517.stderr rename to tests/ui/issues/issue-4517.stderr diff --git a/src/test/ui/issues/issue-4541.rs b/tests/ui/issues/issue-4541.rs similarity index 100% rename from src/test/ui/issues/issue-4541.rs rename to tests/ui/issues/issue-4541.rs diff --git a/src/test/ui/issues/issue-4542.rs b/tests/ui/issues/issue-4542.rs similarity index 100% rename from src/test/ui/issues/issue-4542.rs rename to tests/ui/issues/issue-4542.rs diff --git a/src/test/ui/issues/issue-45425.rs b/tests/ui/issues/issue-45425.rs similarity index 100% rename from src/test/ui/issues/issue-45425.rs rename to tests/ui/issues/issue-45425.rs diff --git a/src/test/ui/issues/issue-4545.rs b/tests/ui/issues/issue-4545.rs similarity index 100% rename from src/test/ui/issues/issue-4545.rs rename to tests/ui/issues/issue-4545.rs diff --git a/src/test/ui/issues/issue-45510.rs b/tests/ui/issues/issue-45510.rs similarity index 100% rename from src/test/ui/issues/issue-45510.rs rename to tests/ui/issues/issue-45510.rs diff --git a/src/test/ui/issues/issue-45562.fixed b/tests/ui/issues/issue-45562.fixed similarity index 100% rename from src/test/ui/issues/issue-45562.fixed rename to tests/ui/issues/issue-45562.fixed diff --git a/src/test/ui/issues/issue-45562.rs b/tests/ui/issues/issue-45562.rs similarity index 100% rename from src/test/ui/issues/issue-45562.rs rename to tests/ui/issues/issue-45562.rs diff --git a/src/test/ui/issues/issue-45562.stderr b/tests/ui/issues/issue-45562.stderr similarity index 100% rename from src/test/ui/issues/issue-45562.stderr rename to tests/ui/issues/issue-45562.stderr diff --git a/src/test/ui/issues/issue-45697-1.rs b/tests/ui/issues/issue-45697-1.rs similarity index 100% rename from src/test/ui/issues/issue-45697-1.rs rename to tests/ui/issues/issue-45697-1.rs diff --git a/src/test/ui/issues/issue-45697-1.stderr b/tests/ui/issues/issue-45697-1.stderr similarity index 100% rename from src/test/ui/issues/issue-45697-1.stderr rename to tests/ui/issues/issue-45697-1.stderr diff --git a/src/test/ui/issues/issue-45697.rs b/tests/ui/issues/issue-45697.rs similarity index 100% rename from src/test/ui/issues/issue-45697.rs rename to tests/ui/issues/issue-45697.rs diff --git a/src/test/ui/issues/issue-45697.stderr b/tests/ui/issues/issue-45697.stderr similarity index 100% rename from src/test/ui/issues/issue-45697.stderr rename to tests/ui/issues/issue-45697.stderr diff --git a/src/test/ui/issues/issue-45730.rs b/tests/ui/issues/issue-45730.rs similarity index 100% rename from src/test/ui/issues/issue-45730.rs rename to tests/ui/issues/issue-45730.rs diff --git a/src/test/ui/issues/issue-45730.stderr b/tests/ui/issues/issue-45730.stderr similarity index 100% rename from src/test/ui/issues/issue-45730.stderr rename to tests/ui/issues/issue-45730.stderr diff --git a/src/test/ui/issues/issue-45731.rs b/tests/ui/issues/issue-45731.rs similarity index 100% rename from src/test/ui/issues/issue-45731.rs rename to tests/ui/issues/issue-45731.rs diff --git a/src/test/ui/issues/issue-45801.rs b/tests/ui/issues/issue-45801.rs similarity index 100% rename from src/test/ui/issues/issue-45801.rs rename to tests/ui/issues/issue-45801.rs diff --git a/src/test/ui/issues/issue-45801.stderr b/tests/ui/issues/issue-45801.stderr similarity index 100% rename from src/test/ui/issues/issue-45801.stderr rename to tests/ui/issues/issue-45801.stderr diff --git a/src/test/ui/issues/issue-45965.rs b/tests/ui/issues/issue-45965.rs similarity index 100% rename from src/test/ui/issues/issue-45965.rs rename to tests/ui/issues/issue-45965.rs diff --git a/src/test/ui/issues/issue-45965.stderr b/tests/ui/issues/issue-45965.stderr similarity index 100% rename from src/test/ui/issues/issue-45965.stderr rename to tests/ui/issues/issue-45965.stderr diff --git a/src/test/ui/issues/issue-46069.rs b/tests/ui/issues/issue-46069.rs similarity index 100% rename from src/test/ui/issues/issue-46069.rs rename to tests/ui/issues/issue-46069.rs diff --git a/src/test/ui/issues/issue-46101.rs b/tests/ui/issues/issue-46101.rs similarity index 100% rename from src/test/ui/issues/issue-46101.rs rename to tests/ui/issues/issue-46101.rs diff --git a/src/test/ui/issues/issue-46101.stderr b/tests/ui/issues/issue-46101.stderr similarity index 100% rename from src/test/ui/issues/issue-46101.stderr rename to tests/ui/issues/issue-46101.stderr diff --git a/src/test/ui/issues/issue-46302.rs b/tests/ui/issues/issue-46302.rs similarity index 100% rename from src/test/ui/issues/issue-46302.rs rename to tests/ui/issues/issue-46302.rs diff --git a/src/test/ui/issues/issue-46302.stderr b/tests/ui/issues/issue-46302.stderr similarity index 100% rename from src/test/ui/issues/issue-46302.stderr rename to tests/ui/issues/issue-46302.stderr diff --git a/src/test/ui/issues/issue-46311.rs b/tests/ui/issues/issue-46311.rs similarity index 100% rename from src/test/ui/issues/issue-46311.rs rename to tests/ui/issues/issue-46311.rs diff --git a/src/test/ui/issues/issue-46311.stderr b/tests/ui/issues/issue-46311.stderr similarity index 100% rename from src/test/ui/issues/issue-46311.stderr rename to tests/ui/issues/issue-46311.stderr diff --git a/src/test/ui/issues/issue-46332.rs b/tests/ui/issues/issue-46332.rs similarity index 100% rename from src/test/ui/issues/issue-46332.rs rename to tests/ui/issues/issue-46332.rs diff --git a/src/test/ui/issues/issue-46332.stderr b/tests/ui/issues/issue-46332.stderr similarity index 100% rename from src/test/ui/issues/issue-46332.stderr rename to tests/ui/issues/issue-46332.stderr diff --git a/src/test/ui/issues/issue-46438.rs b/tests/ui/issues/issue-46438.rs similarity index 100% rename from src/test/ui/issues/issue-46438.rs rename to tests/ui/issues/issue-46438.rs diff --git a/src/test/ui/issues/issue-46438.stderr b/tests/ui/issues/issue-46438.stderr similarity index 100% rename from src/test/ui/issues/issue-46438.stderr rename to tests/ui/issues/issue-46438.stderr diff --git a/src/test/ui/issues/issue-46471-1.rs b/tests/ui/issues/issue-46471-1.rs similarity index 100% rename from src/test/ui/issues/issue-46471-1.rs rename to tests/ui/issues/issue-46471-1.rs diff --git a/src/test/ui/issues/issue-46471-1.stderr b/tests/ui/issues/issue-46471-1.stderr similarity index 100% rename from src/test/ui/issues/issue-46471-1.stderr rename to tests/ui/issues/issue-46471-1.stderr diff --git a/src/test/ui/issues/issue-46472.rs b/tests/ui/issues/issue-46472.rs similarity index 100% rename from src/test/ui/issues/issue-46472.rs rename to tests/ui/issues/issue-46472.rs diff --git a/src/test/ui/issues/issue-46472.stderr b/tests/ui/issues/issue-46472.stderr similarity index 100% rename from src/test/ui/issues/issue-46472.stderr rename to tests/ui/issues/issue-46472.stderr diff --git a/src/test/ui/issues/issue-46604.rs b/tests/ui/issues/issue-46604.rs similarity index 100% rename from src/test/ui/issues/issue-46604.rs rename to tests/ui/issues/issue-46604.rs diff --git a/src/test/ui/issues/issue-46604.stderr b/tests/ui/issues/issue-46604.stderr similarity index 100% rename from src/test/ui/issues/issue-46604.stderr rename to tests/ui/issues/issue-46604.stderr diff --git a/src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.fixed b/tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.fixed similarity index 100% rename from src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.fixed rename to tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.fixed diff --git a/src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs b/tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs similarity index 100% rename from src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs rename to tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs diff --git a/src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.stderr b/tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.stderr similarity index 100% rename from src/test/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.stderr rename to tests/ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.stderr diff --git a/src/test/ui/issues/issue-46771.rs b/tests/ui/issues/issue-46771.rs similarity index 100% rename from src/test/ui/issues/issue-46771.rs rename to tests/ui/issues/issue-46771.rs diff --git a/src/test/ui/issues/issue-46771.stderr b/tests/ui/issues/issue-46771.stderr similarity index 100% rename from src/test/ui/issues/issue-46771.stderr rename to tests/ui/issues/issue-46771.stderr diff --git a/src/test/ui/issues/issue-46855.rs b/tests/ui/issues/issue-46855.rs similarity index 100% rename from src/test/ui/issues/issue-46855.rs rename to tests/ui/issues/issue-46855.rs diff --git a/src/test/ui/issues/issue-46964.rs b/tests/ui/issues/issue-46964.rs similarity index 100% rename from src/test/ui/issues/issue-46964.rs rename to tests/ui/issues/issue-46964.rs diff --git a/src/test/ui/issues/issue-46983.rs b/tests/ui/issues/issue-46983.rs similarity index 100% rename from src/test/ui/issues/issue-46983.rs rename to tests/ui/issues/issue-46983.rs diff --git a/src/test/ui/issues/issue-46983.stderr b/tests/ui/issues/issue-46983.stderr similarity index 100% rename from src/test/ui/issues/issue-46983.stderr rename to tests/ui/issues/issue-46983.stderr diff --git a/src/test/ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs b/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs similarity index 100% rename from src/test/ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs rename to tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs diff --git a/src/test/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr b/tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr similarity index 100% rename from src/test/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr rename to tests/ui/issues/issue-47073-zero-padded-tuple-struct-indices.stderr diff --git a/src/test/ui/issues/issue-47094.rs b/tests/ui/issues/issue-47094.rs similarity index 100% rename from src/test/ui/issues/issue-47094.rs rename to tests/ui/issues/issue-47094.rs diff --git a/src/test/ui/issues/issue-47094.stderr b/tests/ui/issues/issue-47094.stderr similarity index 100% rename from src/test/ui/issues/issue-47094.stderr rename to tests/ui/issues/issue-47094.stderr diff --git a/src/test/ui/issues/issue-47184.rs b/tests/ui/issues/issue-47184.rs similarity index 100% rename from src/test/ui/issues/issue-47184.rs rename to tests/ui/issues/issue-47184.rs diff --git a/src/test/ui/issues/issue-47184.stderr b/tests/ui/issues/issue-47184.stderr similarity index 100% rename from src/test/ui/issues/issue-47184.stderr rename to tests/ui/issues/issue-47184.stderr diff --git a/src/test/ui/issues/issue-47309.rs b/tests/ui/issues/issue-47309.rs similarity index 100% rename from src/test/ui/issues/issue-47309.rs rename to tests/ui/issues/issue-47309.rs diff --git a/src/test/ui/issues/issue-4734.rs b/tests/ui/issues/issue-4734.rs similarity index 100% rename from src/test/ui/issues/issue-4734.rs rename to tests/ui/issues/issue-4734.rs diff --git a/src/test/ui/issues/issue-4735.rs b/tests/ui/issues/issue-4735.rs similarity index 100% rename from src/test/ui/issues/issue-4735.rs rename to tests/ui/issues/issue-4735.rs diff --git a/src/test/ui/issues/issue-4736.rs b/tests/ui/issues/issue-4736.rs similarity index 100% rename from src/test/ui/issues/issue-4736.rs rename to tests/ui/issues/issue-4736.rs diff --git a/src/test/ui/issues/issue-4736.stderr b/tests/ui/issues/issue-4736.stderr similarity index 100% rename from src/test/ui/issues/issue-4736.stderr rename to tests/ui/issues/issue-4736.stderr diff --git a/src/test/ui/issues/issue-47364.rs b/tests/ui/issues/issue-47364.rs similarity index 100% rename from src/test/ui/issues/issue-47364.rs rename to tests/ui/issues/issue-47364.rs diff --git a/src/test/ui/issues/issue-47377.rs b/tests/ui/issues/issue-47377.rs similarity index 100% rename from src/test/ui/issues/issue-47377.rs rename to tests/ui/issues/issue-47377.rs diff --git a/src/test/ui/issues/issue-47377.stderr b/tests/ui/issues/issue-47377.stderr similarity index 100% rename from src/test/ui/issues/issue-47377.stderr rename to tests/ui/issues/issue-47377.stderr diff --git a/src/test/ui/issues/issue-47380.rs b/tests/ui/issues/issue-47380.rs similarity index 100% rename from src/test/ui/issues/issue-47380.rs rename to tests/ui/issues/issue-47380.rs diff --git a/src/test/ui/issues/issue-47380.stderr b/tests/ui/issues/issue-47380.stderr similarity index 100% rename from src/test/ui/issues/issue-47380.stderr rename to tests/ui/issues/issue-47380.stderr diff --git a/src/test/ui/issues/issue-47486.rs b/tests/ui/issues/issue-47486.rs similarity index 100% rename from src/test/ui/issues/issue-47486.rs rename to tests/ui/issues/issue-47486.rs diff --git a/src/test/ui/issues/issue-47486.stderr b/tests/ui/issues/issue-47486.stderr similarity index 100% rename from src/test/ui/issues/issue-47486.stderr rename to tests/ui/issues/issue-47486.stderr diff --git a/src/test/ui/issues/issue-4759-1.rs b/tests/ui/issues/issue-4759-1.rs similarity index 100% rename from src/test/ui/issues/issue-4759-1.rs rename to tests/ui/issues/issue-4759-1.rs diff --git a/src/test/ui/issues/issue-4759.rs b/tests/ui/issues/issue-4759.rs similarity index 100% rename from src/test/ui/issues/issue-4759.rs rename to tests/ui/issues/issue-4759.rs diff --git a/src/test/ui/issues/issue-47638.rs b/tests/ui/issues/issue-47638.rs similarity index 100% rename from src/test/ui/issues/issue-47638.rs rename to tests/ui/issues/issue-47638.rs diff --git a/src/test/ui/issues/issue-47646.rs b/tests/ui/issues/issue-47646.rs similarity index 100% rename from src/test/ui/issues/issue-47646.rs rename to tests/ui/issues/issue-47646.rs diff --git a/src/test/ui/issues/issue-47646.stderr b/tests/ui/issues/issue-47646.stderr similarity index 100% rename from src/test/ui/issues/issue-47646.stderr rename to tests/ui/issues/issue-47646.stderr diff --git a/src/test/ui/issues/issue-47673.rs b/tests/ui/issues/issue-47673.rs similarity index 100% rename from src/test/ui/issues/issue-47673.rs rename to tests/ui/issues/issue-47673.rs diff --git a/src/test/ui/issues/issue-47703-1.rs b/tests/ui/issues/issue-47703-1.rs similarity index 100% rename from src/test/ui/issues/issue-47703-1.rs rename to tests/ui/issues/issue-47703-1.rs diff --git a/src/test/ui/issues/issue-47703-tuple.rs b/tests/ui/issues/issue-47703-tuple.rs similarity index 100% rename from src/test/ui/issues/issue-47703-tuple.rs rename to tests/ui/issues/issue-47703-tuple.rs diff --git a/src/test/ui/issues/issue-47703.rs b/tests/ui/issues/issue-47703.rs similarity index 100% rename from src/test/ui/issues/issue-47703.rs rename to tests/ui/issues/issue-47703.rs diff --git a/src/test/ui/issues/issue-47715.rs b/tests/ui/issues/issue-47715.rs similarity index 100% rename from src/test/ui/issues/issue-47715.rs rename to tests/ui/issues/issue-47715.rs diff --git a/src/test/ui/issues/issue-47715.stderr b/tests/ui/issues/issue-47715.stderr similarity index 100% rename from src/test/ui/issues/issue-47715.stderr rename to tests/ui/issues/issue-47715.stderr diff --git a/src/test/ui/issues/issue-47722.rs b/tests/ui/issues/issue-47722.rs similarity index 100% rename from src/test/ui/issues/issue-47722.rs rename to tests/ui/issues/issue-47722.rs diff --git a/src/test/ui/issues/issue-47725.rs b/tests/ui/issues/issue-47725.rs similarity index 100% rename from src/test/ui/issues/issue-47725.rs rename to tests/ui/issues/issue-47725.rs diff --git a/src/test/ui/issues/issue-47725.stderr b/tests/ui/issues/issue-47725.stderr similarity index 100% rename from src/test/ui/issues/issue-47725.stderr rename to tests/ui/issues/issue-47725.stderr diff --git a/src/test/ui/issues/issue-48006.rs b/tests/ui/issues/issue-48006.rs similarity index 100% rename from src/test/ui/issues/issue-48006.rs rename to tests/ui/issues/issue-48006.rs diff --git a/src/test/ui/issues/issue-48131.mir.stderr b/tests/ui/issues/issue-48131.mir.stderr similarity index 100% rename from src/test/ui/issues/issue-48131.mir.stderr rename to tests/ui/issues/issue-48131.mir.stderr diff --git a/src/test/ui/issues/issue-48131.rs b/tests/ui/issues/issue-48131.rs similarity index 100% rename from src/test/ui/issues/issue-48131.rs rename to tests/ui/issues/issue-48131.rs diff --git a/src/test/ui/issues/issue-48131.thir.stderr b/tests/ui/issues/issue-48131.thir.stderr similarity index 100% rename from src/test/ui/issues/issue-48131.thir.stderr rename to tests/ui/issues/issue-48131.thir.stderr diff --git a/src/test/ui/issues/issue-48132.rs b/tests/ui/issues/issue-48132.rs similarity index 100% rename from src/test/ui/issues/issue-48132.rs rename to tests/ui/issues/issue-48132.rs diff --git a/src/test/ui/issues/issue-48159.rs b/tests/ui/issues/issue-48159.rs similarity index 100% rename from src/test/ui/issues/issue-48159.rs rename to tests/ui/issues/issue-48159.rs diff --git a/src/test/ui/issues/issue-48179.rs b/tests/ui/issues/issue-48179.rs similarity index 100% rename from src/test/ui/issues/issue-48179.rs rename to tests/ui/issues/issue-48179.rs diff --git a/src/test/ui/issues/issue-48276.rs b/tests/ui/issues/issue-48276.rs similarity index 100% rename from src/test/ui/issues/issue-48276.rs rename to tests/ui/issues/issue-48276.rs diff --git a/src/test/ui/issues/issue-48276.stderr b/tests/ui/issues/issue-48276.stderr similarity index 100% rename from src/test/ui/issues/issue-48276.stderr rename to tests/ui/issues/issue-48276.stderr diff --git a/src/test/ui/issues/issue-4830.rs b/tests/ui/issues/issue-4830.rs similarity index 100% rename from src/test/ui/issues/issue-4830.rs rename to tests/ui/issues/issue-4830.rs diff --git a/src/test/ui/issues/issue-48364.rs b/tests/ui/issues/issue-48364.rs similarity index 100% rename from src/test/ui/issues/issue-48364.rs rename to tests/ui/issues/issue-48364.rs diff --git a/src/test/ui/issues/issue-48364.stderr b/tests/ui/issues/issue-48364.stderr similarity index 100% rename from src/test/ui/issues/issue-48364.stderr rename to tests/ui/issues/issue-48364.stderr diff --git a/src/test/ui/issues/issue-48728.rs b/tests/ui/issues/issue-48728.rs similarity index 100% rename from src/test/ui/issues/issue-48728.rs rename to tests/ui/issues/issue-48728.rs diff --git a/src/test/ui/issues/issue-48728.stderr b/tests/ui/issues/issue-48728.stderr similarity index 100% rename from src/test/ui/issues/issue-48728.stderr rename to tests/ui/issues/issue-48728.stderr diff --git a/src/test/ui/issues/issue-4875.rs b/tests/ui/issues/issue-4875.rs similarity index 100% rename from src/test/ui/issues/issue-4875.rs rename to tests/ui/issues/issue-4875.rs diff --git a/src/test/ui/issues/issue-48838.rs b/tests/ui/issues/issue-48838.rs similarity index 100% rename from src/test/ui/issues/issue-48838.rs rename to tests/ui/issues/issue-48838.rs diff --git a/src/test/ui/issues/issue-48838.stderr b/tests/ui/issues/issue-48838.stderr similarity index 100% rename from src/test/ui/issues/issue-48838.stderr rename to tests/ui/issues/issue-48838.stderr diff --git a/src/test/ui/issues/issue-48984.rs b/tests/ui/issues/issue-48984.rs similarity index 100% rename from src/test/ui/issues/issue-48984.rs rename to tests/ui/issues/issue-48984.rs diff --git a/src/test/ui/issues/issue-49298.rs b/tests/ui/issues/issue-49298.rs similarity index 100% rename from src/test/ui/issues/issue-49298.rs rename to tests/ui/issues/issue-49298.rs diff --git a/src/test/ui/issues/issue-4935.rs b/tests/ui/issues/issue-4935.rs similarity index 100% rename from src/test/ui/issues/issue-4935.rs rename to tests/ui/issues/issue-4935.rs diff --git a/src/test/ui/issues/issue-4935.stderr b/tests/ui/issues/issue-4935.stderr similarity index 100% rename from src/test/ui/issues/issue-4935.stderr rename to tests/ui/issues/issue-4935.stderr diff --git a/src/test/ui/issues/issue-49544.rs b/tests/ui/issues/issue-49544.rs similarity index 100% rename from src/test/ui/issues/issue-49544.rs rename to tests/ui/issues/issue-49544.rs diff --git a/src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs b/tests/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs similarity index 100% rename from src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs rename to tests/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs diff --git a/src/test/ui/issues/issue-49632.rs b/tests/ui/issues/issue-49632.rs similarity index 100% rename from src/test/ui/issues/issue-49632.rs rename to tests/ui/issues/issue-49632.rs diff --git a/src/test/ui/issues/issue-4968.rs b/tests/ui/issues/issue-4968.rs similarity index 100% rename from src/test/ui/issues/issue-4968.rs rename to tests/ui/issues/issue-4968.rs diff --git a/src/test/ui/issues/issue-4968.stderr b/tests/ui/issues/issue-4968.stderr similarity index 100% rename from src/test/ui/issues/issue-4968.stderr rename to tests/ui/issues/issue-4968.stderr diff --git a/src/test/ui/issues/issue-4972.rs b/tests/ui/issues/issue-4972.rs similarity index 100% rename from src/test/ui/issues/issue-4972.rs rename to tests/ui/issues/issue-4972.rs diff --git a/src/test/ui/issues/issue-4972.stderr b/tests/ui/issues/issue-4972.stderr similarity index 100% rename from src/test/ui/issues/issue-4972.stderr rename to tests/ui/issues/issue-4972.stderr diff --git a/src/test/ui/issues/issue-49824.rs b/tests/ui/issues/issue-49824.rs similarity index 100% rename from src/test/ui/issues/issue-49824.rs rename to tests/ui/issues/issue-49824.rs diff --git a/src/test/ui/issues/issue-49824.stderr b/tests/ui/issues/issue-49824.stderr similarity index 100% rename from src/test/ui/issues/issue-49824.stderr rename to tests/ui/issues/issue-49824.stderr diff --git a/src/test/ui/issues/issue-49851/compiler-builtins-error.rs b/tests/ui/issues/issue-49851/compiler-builtins-error.rs similarity index 100% rename from src/test/ui/issues/issue-49851/compiler-builtins-error.rs rename to tests/ui/issues/issue-49851/compiler-builtins-error.rs diff --git a/src/test/ui/issues/issue-49851/compiler-builtins-error.stderr b/tests/ui/issues/issue-49851/compiler-builtins-error.stderr similarity index 100% rename from src/test/ui/issues/issue-49851/compiler-builtins-error.stderr rename to tests/ui/issues/issue-49851/compiler-builtins-error.stderr diff --git a/src/test/ui/issues/issue-49854.rs b/tests/ui/issues/issue-49854.rs similarity index 100% rename from src/test/ui/issues/issue-49854.rs rename to tests/ui/issues/issue-49854.rs diff --git a/src/test/ui/issues/issue-49919.rs b/tests/ui/issues/issue-49919.rs similarity index 100% rename from src/test/ui/issues/issue-49919.rs rename to tests/ui/issues/issue-49919.rs diff --git a/src/test/ui/issues/issue-49919.stderr b/tests/ui/issues/issue-49919.stderr similarity index 100% rename from src/test/ui/issues/issue-49919.stderr rename to tests/ui/issues/issue-49919.stderr diff --git a/src/test/ui/issues/issue-49934-errors.rs b/tests/ui/issues/issue-49934-errors.rs similarity index 100% rename from src/test/ui/issues/issue-49934-errors.rs rename to tests/ui/issues/issue-49934-errors.rs diff --git a/src/test/ui/issues/issue-49934-errors.stderr b/tests/ui/issues/issue-49934-errors.stderr similarity index 100% rename from src/test/ui/issues/issue-49934-errors.stderr rename to tests/ui/issues/issue-49934-errors.stderr diff --git a/src/test/ui/issues/issue-49934.rs b/tests/ui/issues/issue-49934.rs similarity index 100% rename from src/test/ui/issues/issue-49934.rs rename to tests/ui/issues/issue-49934.rs diff --git a/src/test/ui/issues/issue-49934.stderr b/tests/ui/issues/issue-49934.stderr similarity index 100% rename from src/test/ui/issues/issue-49934.stderr rename to tests/ui/issues/issue-49934.stderr diff --git a/src/test/ui/issues/issue-49955.rs b/tests/ui/issues/issue-49955.rs similarity index 100% rename from src/test/ui/issues/issue-49955.rs rename to tests/ui/issues/issue-49955.rs diff --git a/src/test/ui/issues/issue-49973.rs b/tests/ui/issues/issue-49973.rs similarity index 100% rename from src/test/ui/issues/issue-49973.rs rename to tests/ui/issues/issue-49973.rs diff --git a/src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs b/tests/ui/issues/issue-5008-borrowed-traitobject-method-call.rs similarity index 100% rename from src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs rename to tests/ui/issues/issue-5008-borrowed-traitobject-method-call.rs diff --git a/src/test/ui/issues/issue-50187.rs b/tests/ui/issues/issue-50187.rs similarity index 100% rename from src/test/ui/issues/issue-50187.rs rename to tests/ui/issues/issue-50187.rs diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref.rs b/tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref.rs similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref.rs rename to tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref.rs diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref.stderr b/tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref.stderr similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref.stderr rename to tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref.stderr diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.rs b/tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.rs similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.rs rename to tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.rs diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.stderr b/tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.stderr similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.stderr rename to tests/ui/issues/issue-50264-inner-deref-trait/option-as_deref_mut.stderr diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref.rs b/tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref.rs similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref.rs rename to tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref.rs diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref.stderr b/tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref.stderr similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref.stderr rename to tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref.stderr diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.rs b/tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.rs similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.rs rename to tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.rs diff --git a/src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.stderr b/tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.stderr similarity index 100% rename from src/test/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.stderr rename to tests/ui/issues/issue-50264-inner-deref-trait/result-as_deref_mut.stderr diff --git a/src/test/ui/issues/issue-50403.rs b/tests/ui/issues/issue-50403.rs similarity index 100% rename from src/test/ui/issues/issue-50403.rs rename to tests/ui/issues/issue-50403.rs diff --git a/src/test/ui/issues/issue-50403.stderr b/tests/ui/issues/issue-50403.stderr similarity index 100% rename from src/test/ui/issues/issue-50403.stderr rename to tests/ui/issues/issue-50403.stderr diff --git a/src/test/ui/issues/issue-50411.rs b/tests/ui/issues/issue-50411.rs similarity index 100% rename from src/test/ui/issues/issue-50411.rs rename to tests/ui/issues/issue-50411.rs diff --git a/src/test/ui/issues/issue-50415.rs b/tests/ui/issues/issue-50415.rs similarity index 100% rename from src/test/ui/issues/issue-50415.rs rename to tests/ui/issues/issue-50415.rs diff --git a/src/test/ui/issues/issue-50442.rs b/tests/ui/issues/issue-50442.rs similarity index 100% rename from src/test/ui/issues/issue-50442.rs rename to tests/ui/issues/issue-50442.rs diff --git a/src/test/ui/issues/issue-50471.rs b/tests/ui/issues/issue-50471.rs similarity index 100% rename from src/test/ui/issues/issue-50471.rs rename to tests/ui/issues/issue-50471.rs diff --git a/src/test/ui/issues/issue-50518.rs b/tests/ui/issues/issue-50518.rs similarity index 100% rename from src/test/ui/issues/issue-50518.rs rename to tests/ui/issues/issue-50518.rs diff --git a/src/test/ui/issues/issue-50571.fixed b/tests/ui/issues/issue-50571.fixed similarity index 100% rename from src/test/ui/issues/issue-50571.fixed rename to tests/ui/issues/issue-50571.fixed diff --git a/src/test/ui/issues/issue-50571.rs b/tests/ui/issues/issue-50571.rs similarity index 100% rename from src/test/ui/issues/issue-50571.rs rename to tests/ui/issues/issue-50571.rs diff --git a/src/test/ui/issues/issue-50571.stderr b/tests/ui/issues/issue-50571.stderr similarity index 100% rename from src/test/ui/issues/issue-50571.stderr rename to tests/ui/issues/issue-50571.stderr diff --git a/src/test/ui/issues/issue-50576.rs b/tests/ui/issues/issue-50576.rs similarity index 100% rename from src/test/ui/issues/issue-50576.rs rename to tests/ui/issues/issue-50576.rs diff --git a/src/test/ui/issues/issue-50576.stderr b/tests/ui/issues/issue-50576.stderr similarity index 100% rename from src/test/ui/issues/issue-50576.stderr rename to tests/ui/issues/issue-50576.stderr diff --git a/src/test/ui/issues/issue-50581.rs b/tests/ui/issues/issue-50581.rs similarity index 100% rename from src/test/ui/issues/issue-50581.rs rename to tests/ui/issues/issue-50581.rs diff --git a/src/test/ui/issues/issue-50581.stderr b/tests/ui/issues/issue-50581.stderr similarity index 100% rename from src/test/ui/issues/issue-50581.stderr rename to tests/ui/issues/issue-50581.stderr diff --git a/src/test/ui/issues/issue-50582.rs b/tests/ui/issues/issue-50582.rs similarity index 100% rename from src/test/ui/issues/issue-50582.rs rename to tests/ui/issues/issue-50582.rs diff --git a/src/test/ui/issues/issue-50582.stderr b/tests/ui/issues/issue-50582.stderr similarity index 100% rename from src/test/ui/issues/issue-50582.stderr rename to tests/ui/issues/issue-50582.stderr diff --git a/src/test/ui/issues/issue-50585.rs b/tests/ui/issues/issue-50585.rs similarity index 100% rename from src/test/ui/issues/issue-50585.rs rename to tests/ui/issues/issue-50585.rs diff --git a/src/test/ui/issues/issue-50585.stderr b/tests/ui/issues/issue-50585.stderr similarity index 100% rename from src/test/ui/issues/issue-50585.stderr rename to tests/ui/issues/issue-50585.stderr diff --git a/src/test/ui/issues/issue-50600.rs b/tests/ui/issues/issue-50600.rs similarity index 100% rename from src/test/ui/issues/issue-50600.rs rename to tests/ui/issues/issue-50600.rs diff --git a/src/test/ui/issues/issue-50600.stderr b/tests/ui/issues/issue-50600.stderr similarity index 100% rename from src/test/ui/issues/issue-50600.stderr rename to tests/ui/issues/issue-50600.stderr diff --git a/src/test/ui/issues/issue-50618.rs b/tests/ui/issues/issue-50618.rs similarity index 100% rename from src/test/ui/issues/issue-50618.rs rename to tests/ui/issues/issue-50618.rs diff --git a/src/test/ui/issues/issue-50618.stderr b/tests/ui/issues/issue-50618.stderr similarity index 100% rename from src/test/ui/issues/issue-50618.stderr rename to tests/ui/issues/issue-50618.stderr diff --git a/src/test/ui/issues/issue-5062.rs b/tests/ui/issues/issue-5062.rs similarity index 100% rename from src/test/ui/issues/issue-5062.rs rename to tests/ui/issues/issue-5062.rs diff --git a/src/test/ui/issues/issue-5062.stderr b/tests/ui/issues/issue-5062.stderr similarity index 100% rename from src/test/ui/issues/issue-5062.stderr rename to tests/ui/issues/issue-5062.stderr diff --git a/src/test/ui/issues/issue-5067.rs b/tests/ui/issues/issue-5067.rs similarity index 100% rename from src/test/ui/issues/issue-5067.rs rename to tests/ui/issues/issue-5067.rs diff --git a/src/test/ui/issues/issue-5067.stderr b/tests/ui/issues/issue-5067.stderr similarity index 100% rename from src/test/ui/issues/issue-5067.stderr rename to tests/ui/issues/issue-5067.stderr diff --git a/src/test/ui/issues/issue-50688.rs b/tests/ui/issues/issue-50688.rs similarity index 100% rename from src/test/ui/issues/issue-50688.rs rename to tests/ui/issues/issue-50688.rs diff --git a/src/test/ui/issues/issue-50688.stderr b/tests/ui/issues/issue-50688.stderr similarity index 100% rename from src/test/ui/issues/issue-50688.stderr rename to tests/ui/issues/issue-50688.stderr diff --git a/src/test/ui/issues/issue-50689.rs b/tests/ui/issues/issue-50689.rs similarity index 100% rename from src/test/ui/issues/issue-50689.rs rename to tests/ui/issues/issue-50689.rs diff --git a/src/test/ui/issues/issue-50714-1.rs b/tests/ui/issues/issue-50714-1.rs similarity index 100% rename from src/test/ui/issues/issue-50714-1.rs rename to tests/ui/issues/issue-50714-1.rs diff --git a/src/test/ui/issues/issue-50714-1.stderr b/tests/ui/issues/issue-50714-1.stderr similarity index 100% rename from src/test/ui/issues/issue-50714-1.stderr rename to tests/ui/issues/issue-50714-1.stderr diff --git a/src/test/ui/issues/issue-50714.rs b/tests/ui/issues/issue-50714.rs similarity index 100% rename from src/test/ui/issues/issue-50714.rs rename to tests/ui/issues/issue-50714.rs diff --git a/src/test/ui/issues/issue-50714.stderr b/tests/ui/issues/issue-50714.stderr similarity index 100% rename from src/test/ui/issues/issue-50714.stderr rename to tests/ui/issues/issue-50714.stderr diff --git a/src/test/ui/issues/issue-50761.rs b/tests/ui/issues/issue-50761.rs similarity index 100% rename from src/test/ui/issues/issue-50761.rs rename to tests/ui/issues/issue-50761.rs diff --git a/src/test/ui/issues/issue-50781.rs b/tests/ui/issues/issue-50781.rs similarity index 100% rename from src/test/ui/issues/issue-50781.rs rename to tests/ui/issues/issue-50781.rs diff --git a/src/test/ui/issues/issue-50781.stderr b/tests/ui/issues/issue-50781.stderr similarity index 100% rename from src/test/ui/issues/issue-50781.stderr rename to tests/ui/issues/issue-50781.stderr diff --git a/src/test/ui/issues/issue-50802.rs b/tests/ui/issues/issue-50802.rs similarity index 100% rename from src/test/ui/issues/issue-50802.rs rename to tests/ui/issues/issue-50802.rs diff --git a/src/test/ui/issues/issue-50802.stderr b/tests/ui/issues/issue-50802.stderr similarity index 100% rename from src/test/ui/issues/issue-50802.stderr rename to tests/ui/issues/issue-50802.stderr diff --git a/src/test/ui/issues/issue-50811.rs b/tests/ui/issues/issue-50811.rs similarity index 100% rename from src/test/ui/issues/issue-50811.rs rename to tests/ui/issues/issue-50811.rs diff --git a/src/test/ui/issues/issue-50825-1.rs b/tests/ui/issues/issue-50825-1.rs similarity index 100% rename from src/test/ui/issues/issue-50825-1.rs rename to tests/ui/issues/issue-50825-1.rs diff --git a/src/test/ui/issues/issue-50825.rs b/tests/ui/issues/issue-50825.rs similarity index 100% rename from src/test/ui/issues/issue-50825.rs rename to tests/ui/issues/issue-50825.rs diff --git a/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs b/tests/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs similarity index 100% rename from src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs rename to tests/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs diff --git a/src/test/ui/issues/issue-50865-private-impl-trait/main.rs b/tests/ui/issues/issue-50865-private-impl-trait/main.rs similarity index 100% rename from src/test/ui/issues/issue-50865-private-impl-trait/main.rs rename to tests/ui/issues/issue-50865-private-impl-trait/main.rs diff --git a/src/test/ui/issues/issue-5100.rs b/tests/ui/issues/issue-5100.rs similarity index 100% rename from src/test/ui/issues/issue-5100.rs rename to tests/ui/issues/issue-5100.rs diff --git a/src/test/ui/issues/issue-5100.stderr b/tests/ui/issues/issue-5100.stderr similarity index 100% rename from src/test/ui/issues/issue-5100.stderr rename to tests/ui/issues/issue-5100.stderr diff --git a/src/test/ui/issues/issue-51022.rs b/tests/ui/issues/issue-51022.rs similarity index 100% rename from src/test/ui/issues/issue-51022.rs rename to tests/ui/issues/issue-51022.rs diff --git a/src/test/ui/issues/issue-51022.stderr b/tests/ui/issues/issue-51022.stderr similarity index 100% rename from src/test/ui/issues/issue-51022.stderr rename to tests/ui/issues/issue-51022.stderr diff --git a/src/test/ui/issues/issue-51044.rs b/tests/ui/issues/issue-51044.rs similarity index 100% rename from src/test/ui/issues/issue-51044.rs rename to tests/ui/issues/issue-51044.rs diff --git a/src/test/ui/issues/issue-51102.rs b/tests/ui/issues/issue-51102.rs similarity index 100% rename from src/test/ui/issues/issue-51102.rs rename to tests/ui/issues/issue-51102.rs diff --git a/src/test/ui/issues/issue-51102.stderr b/tests/ui/issues/issue-51102.stderr similarity index 100% rename from src/test/ui/issues/issue-51102.stderr rename to tests/ui/issues/issue-51102.stderr diff --git a/src/test/ui/issues/issue-51116.rs b/tests/ui/issues/issue-51116.rs similarity index 100% rename from src/test/ui/issues/issue-51116.rs rename to tests/ui/issues/issue-51116.rs diff --git a/src/test/ui/issues/issue-51116.stderr b/tests/ui/issues/issue-51116.stderr similarity index 100% rename from src/test/ui/issues/issue-51116.stderr rename to tests/ui/issues/issue-51116.stderr diff --git a/src/test/ui/issues/issue-51154.rs b/tests/ui/issues/issue-51154.rs similarity index 100% rename from src/test/ui/issues/issue-51154.rs rename to tests/ui/issues/issue-51154.rs diff --git a/src/test/ui/issues/issue-51154.stderr b/tests/ui/issues/issue-51154.stderr similarity index 100% rename from src/test/ui/issues/issue-51154.stderr rename to tests/ui/issues/issue-51154.stderr diff --git a/src/test/ui/issues/issue-51515.rs b/tests/ui/issues/issue-51515.rs similarity index 100% rename from src/test/ui/issues/issue-51515.rs rename to tests/ui/issues/issue-51515.rs diff --git a/src/test/ui/issues/issue-51515.stderr b/tests/ui/issues/issue-51515.stderr similarity index 100% rename from src/test/ui/issues/issue-51515.stderr rename to tests/ui/issues/issue-51515.stderr diff --git a/src/test/ui/issues/issue-5153.rs b/tests/ui/issues/issue-5153.rs similarity index 100% rename from src/test/ui/issues/issue-5153.rs rename to tests/ui/issues/issue-5153.rs diff --git a/src/test/ui/issues/issue-5153.stderr b/tests/ui/issues/issue-5153.stderr similarity index 100% rename from src/test/ui/issues/issue-5153.stderr rename to tests/ui/issues/issue-5153.stderr diff --git a/src/test/ui/issues/issue-51632-try-desugar-incompatible-types.rs b/tests/ui/issues/issue-51632-try-desugar-incompatible-types.rs similarity index 100% rename from src/test/ui/issues/issue-51632-try-desugar-incompatible-types.rs rename to tests/ui/issues/issue-51632-try-desugar-incompatible-types.rs diff --git a/src/test/ui/issues/issue-51632-try-desugar-incompatible-types.stderr b/tests/ui/issues/issue-51632-try-desugar-incompatible-types.stderr similarity index 100% rename from src/test/ui/issues/issue-51632-try-desugar-incompatible-types.stderr rename to tests/ui/issues/issue-51632-try-desugar-incompatible-types.stderr diff --git a/src/test/ui/issues/issue-51655.rs b/tests/ui/issues/issue-51655.rs similarity index 100% rename from src/test/ui/issues/issue-51655.rs rename to tests/ui/issues/issue-51655.rs diff --git a/src/test/ui/issues/issue-51714.rs b/tests/ui/issues/issue-51714.rs similarity index 100% rename from src/test/ui/issues/issue-51714.rs rename to tests/ui/issues/issue-51714.rs diff --git a/src/test/ui/issues/issue-51714.stderr b/tests/ui/issues/issue-51714.stderr similarity index 100% rename from src/test/ui/issues/issue-51714.stderr rename to tests/ui/issues/issue-51714.stderr diff --git a/src/test/ui/issues/issue-51798.rs b/tests/ui/issues/issue-51798.rs similarity index 100% rename from src/test/ui/issues/issue-51798.rs rename to tests/ui/issues/issue-51798.rs diff --git a/src/test/ui/issues/issue-51874.rs b/tests/ui/issues/issue-51874.rs similarity index 100% rename from src/test/ui/issues/issue-51874.rs rename to tests/ui/issues/issue-51874.rs diff --git a/src/test/ui/issues/issue-51874.stderr b/tests/ui/issues/issue-51874.stderr similarity index 100% rename from src/test/ui/issues/issue-51874.stderr rename to tests/ui/issues/issue-51874.stderr diff --git a/src/test/ui/issues/issue-51907.rs b/tests/ui/issues/issue-51907.rs similarity index 100% rename from src/test/ui/issues/issue-51907.rs rename to tests/ui/issues/issue-51907.rs diff --git a/src/test/ui/issues/issue-5192.rs b/tests/ui/issues/issue-5192.rs similarity index 100% rename from src/test/ui/issues/issue-5192.rs rename to tests/ui/issues/issue-5192.rs diff --git a/src/test/ui/issues/issue-51947.rs b/tests/ui/issues/issue-51947.rs similarity index 100% rename from src/test/ui/issues/issue-51947.rs rename to tests/ui/issues/issue-51947.rs diff --git a/src/test/ui/issues/issue-52049.rs b/tests/ui/issues/issue-52049.rs similarity index 100% rename from src/test/ui/issues/issue-52049.rs rename to tests/ui/issues/issue-52049.rs diff --git a/src/test/ui/issues/issue-52049.stderr b/tests/ui/issues/issue-52049.stderr similarity index 100% rename from src/test/ui/issues/issue-52049.stderr rename to tests/ui/issues/issue-52049.stderr diff --git a/src/test/ui/issues/issue-52126-assign-op-invariance.rs b/tests/ui/issues/issue-52126-assign-op-invariance.rs similarity index 100% rename from src/test/ui/issues/issue-52126-assign-op-invariance.rs rename to tests/ui/issues/issue-52126-assign-op-invariance.rs diff --git a/src/test/ui/issues/issue-52126-assign-op-invariance.stderr b/tests/ui/issues/issue-52126-assign-op-invariance.stderr similarity index 100% rename from src/test/ui/issues/issue-52126-assign-op-invariance.stderr rename to tests/ui/issues/issue-52126-assign-op-invariance.stderr diff --git a/src/test/ui/issues/issue-52140/auxiliary/some_crate.rs b/tests/ui/issues/issue-52140/auxiliary/some_crate.rs similarity index 100% rename from src/test/ui/issues/issue-52140/auxiliary/some_crate.rs rename to tests/ui/issues/issue-52140/auxiliary/some_crate.rs diff --git a/src/test/ui/issues/issue-52140/main.rs b/tests/ui/issues/issue-52140/main.rs similarity index 100% rename from src/test/ui/issues/issue-52140/main.rs rename to tests/ui/issues/issue-52140/main.rs diff --git a/src/test/ui/issues/issue-52141/auxiliary/some_crate.rs b/tests/ui/issues/issue-52141/auxiliary/some_crate.rs similarity index 100% rename from src/test/ui/issues/issue-52141/auxiliary/some_crate.rs rename to tests/ui/issues/issue-52141/auxiliary/some_crate.rs diff --git a/src/test/ui/issues/issue-52141/main.rs b/tests/ui/issues/issue-52141/main.rs similarity index 100% rename from src/test/ui/issues/issue-52141/main.rs rename to tests/ui/issues/issue-52141/main.rs diff --git a/src/test/ui/issues/issue-52262.rs b/tests/ui/issues/issue-52262.rs similarity index 100% rename from src/test/ui/issues/issue-52262.rs rename to tests/ui/issues/issue-52262.rs diff --git a/src/test/ui/issues/issue-52262.stderr b/tests/ui/issues/issue-52262.stderr similarity index 100% rename from src/test/ui/issues/issue-52262.stderr rename to tests/ui/issues/issue-52262.stderr diff --git a/src/test/ui/issues/issue-5239-1.rs b/tests/ui/issues/issue-5239-1.rs similarity index 100% rename from src/test/ui/issues/issue-5239-1.rs rename to tests/ui/issues/issue-5239-1.rs diff --git a/src/test/ui/issues/issue-5239-1.stderr b/tests/ui/issues/issue-5239-1.stderr similarity index 100% rename from src/test/ui/issues/issue-5239-1.stderr rename to tests/ui/issues/issue-5239-1.stderr diff --git a/src/test/ui/issues/issue-5239-2.rs b/tests/ui/issues/issue-5239-2.rs similarity index 100% rename from src/test/ui/issues/issue-5239-2.rs rename to tests/ui/issues/issue-5239-2.rs diff --git a/src/test/ui/issues/issue-52489.rs b/tests/ui/issues/issue-52489.rs similarity index 100% rename from src/test/ui/issues/issue-52489.rs rename to tests/ui/issues/issue-52489.rs diff --git a/src/test/ui/issues/issue-52489.stderr b/tests/ui/issues/issue-52489.stderr similarity index 100% rename from src/test/ui/issues/issue-52489.stderr rename to tests/ui/issues/issue-52489.stderr diff --git a/src/test/ui/issues/issue-52533.rs b/tests/ui/issues/issue-52533.rs similarity index 100% rename from src/test/ui/issues/issue-52533.rs rename to tests/ui/issues/issue-52533.rs diff --git a/src/test/ui/issues/issue-52533.stderr b/tests/ui/issues/issue-52533.stderr similarity index 100% rename from src/test/ui/issues/issue-52533.stderr rename to tests/ui/issues/issue-52533.stderr diff --git a/src/test/ui/issues/issue-52705/auxiliary/png2.rs b/tests/ui/issues/issue-52705/auxiliary/png2.rs similarity index 100% rename from src/test/ui/issues/issue-52705/auxiliary/png2.rs rename to tests/ui/issues/issue-52705/auxiliary/png2.rs diff --git a/src/test/ui/issues/issue-52705/main.rs b/tests/ui/issues/issue-52705/main.rs similarity index 100% rename from src/test/ui/issues/issue-52705/main.rs rename to tests/ui/issues/issue-52705/main.rs diff --git a/src/test/ui/issues/issue-52717.rs b/tests/ui/issues/issue-52717.rs similarity index 100% rename from src/test/ui/issues/issue-52717.rs rename to tests/ui/issues/issue-52717.rs diff --git a/src/test/ui/issues/issue-52717.stderr b/tests/ui/issues/issue-52717.stderr similarity index 100% rename from src/test/ui/issues/issue-52717.stderr rename to tests/ui/issues/issue-52717.stderr diff --git a/src/test/ui/issues/issue-5280.rs b/tests/ui/issues/issue-5280.rs similarity index 100% rename from src/test/ui/issues/issue-5280.rs rename to tests/ui/issues/issue-5280.rs diff --git a/src/test/ui/issues/issue-5315.rs b/tests/ui/issues/issue-5315.rs similarity index 100% rename from src/test/ui/issues/issue-5315.rs rename to tests/ui/issues/issue-5315.rs diff --git a/src/test/ui/issues/issue-5321-immediates-with-bare-self.rs b/tests/ui/issues/issue-5321-immediates-with-bare-self.rs similarity index 100% rename from src/test/ui/issues/issue-5321-immediates-with-bare-self.rs rename to tests/ui/issues/issue-5321-immediates-with-bare-self.rs diff --git a/src/test/ui/issues/issue-53251.rs b/tests/ui/issues/issue-53251.rs similarity index 100% rename from src/test/ui/issues/issue-53251.rs rename to tests/ui/issues/issue-53251.rs diff --git a/src/test/ui/issues/issue-53251.stderr b/tests/ui/issues/issue-53251.stderr similarity index 100% rename from src/test/ui/issues/issue-53251.stderr rename to tests/ui/issues/issue-53251.stderr diff --git a/src/test/ui/issues/issue-53275.rs b/tests/ui/issues/issue-53275.rs similarity index 100% rename from src/test/ui/issues/issue-53275.rs rename to tests/ui/issues/issue-53275.rs diff --git a/src/test/ui/issues/issue-53300.rs b/tests/ui/issues/issue-53300.rs similarity index 100% rename from src/test/ui/issues/issue-53300.rs rename to tests/ui/issues/issue-53300.rs diff --git a/src/test/ui/issues/issue-53300.stderr b/tests/ui/issues/issue-53300.stderr similarity index 100% rename from src/test/ui/issues/issue-53300.stderr rename to tests/ui/issues/issue-53300.stderr diff --git a/src/test/ui/issues/issue-53333.rs b/tests/ui/issues/issue-53333.rs similarity index 100% rename from src/test/ui/issues/issue-53333.rs rename to tests/ui/issues/issue-53333.rs diff --git a/src/test/ui/issues/issue-53348.rs b/tests/ui/issues/issue-53348.rs similarity index 100% rename from src/test/ui/issues/issue-53348.rs rename to tests/ui/issues/issue-53348.rs diff --git a/src/test/ui/issues/issue-53348.stderr b/tests/ui/issues/issue-53348.stderr similarity index 100% rename from src/test/ui/issues/issue-53348.stderr rename to tests/ui/issues/issue-53348.stderr diff --git a/src/test/ui/issues/issue-53419.rs b/tests/ui/issues/issue-53419.rs similarity index 100% rename from src/test/ui/issues/issue-53419.rs rename to tests/ui/issues/issue-53419.rs diff --git a/src/test/ui/issues/issue-53498.rs b/tests/ui/issues/issue-53498.rs similarity index 100% rename from src/test/ui/issues/issue-53498.rs rename to tests/ui/issues/issue-53498.rs diff --git a/src/test/ui/issues/issue-53498.stderr b/tests/ui/issues/issue-53498.stderr similarity index 100% rename from src/test/ui/issues/issue-53498.stderr rename to tests/ui/issues/issue-53498.stderr diff --git a/src/test/ui/issues/issue-53568.rs b/tests/ui/issues/issue-53568.rs similarity index 100% rename from src/test/ui/issues/issue-53568.rs rename to tests/ui/issues/issue-53568.rs diff --git a/src/test/ui/issues/issue-5358-1.rs b/tests/ui/issues/issue-5358-1.rs similarity index 100% rename from src/test/ui/issues/issue-5358-1.rs rename to tests/ui/issues/issue-5358-1.rs diff --git a/src/test/ui/issues/issue-5358-1.stderr b/tests/ui/issues/issue-5358-1.stderr similarity index 100% rename from src/test/ui/issues/issue-5358-1.stderr rename to tests/ui/issues/issue-5358-1.stderr diff --git a/src/test/ui/issues/issue-53712.rs b/tests/ui/issues/issue-53712.rs similarity index 100% rename from src/test/ui/issues/issue-53712.rs rename to tests/ui/issues/issue-53712.rs diff --git a/src/test/ui/issues/issue-53712.stderr b/tests/ui/issues/issue-53712.stderr similarity index 100% rename from src/test/ui/issues/issue-53712.stderr rename to tests/ui/issues/issue-53712.stderr diff --git a/src/test/ui/issues/issue-53728.rs b/tests/ui/issues/issue-53728.rs similarity index 100% rename from src/test/ui/issues/issue-53728.rs rename to tests/ui/issues/issue-53728.rs diff --git a/src/test/ui/issues/issue-53843.rs b/tests/ui/issues/issue-53843.rs similarity index 100% rename from src/test/ui/issues/issue-53843.rs rename to tests/ui/issues/issue-53843.rs diff --git a/src/test/ui/issues/issue-54044.rs b/tests/ui/issues/issue-54044.rs similarity index 100% rename from src/test/ui/issues/issue-54044.rs rename to tests/ui/issues/issue-54044.rs diff --git a/src/test/ui/issues/issue-54044.stderr b/tests/ui/issues/issue-54044.stderr similarity index 100% rename from src/test/ui/issues/issue-54044.stderr rename to tests/ui/issues/issue-54044.stderr diff --git a/src/test/ui/issues/issue-54062.rs b/tests/ui/issues/issue-54062.rs similarity index 100% rename from src/test/ui/issues/issue-54062.rs rename to tests/ui/issues/issue-54062.rs diff --git a/src/test/ui/issues/issue-54062.stderr b/tests/ui/issues/issue-54062.stderr similarity index 100% rename from src/test/ui/issues/issue-54062.stderr rename to tests/ui/issues/issue-54062.stderr diff --git a/src/test/ui/issues/issue-54094.rs b/tests/ui/issues/issue-54094.rs similarity index 100% rename from src/test/ui/issues/issue-54094.rs rename to tests/ui/issues/issue-54094.rs diff --git a/src/test/ui/issues/issue-54302-cases.rs b/tests/ui/issues/issue-54302-cases.rs similarity index 100% rename from src/test/ui/issues/issue-54302-cases.rs rename to tests/ui/issues/issue-54302-cases.rs diff --git a/src/test/ui/issues/issue-54302-cases.stderr b/tests/ui/issues/issue-54302-cases.stderr similarity index 100% rename from src/test/ui/issues/issue-54302-cases.stderr rename to tests/ui/issues/issue-54302-cases.stderr diff --git a/src/test/ui/issues/issue-54302.rs b/tests/ui/issues/issue-54302.rs similarity index 100% rename from src/test/ui/issues/issue-54302.rs rename to tests/ui/issues/issue-54302.rs diff --git a/src/test/ui/issues/issue-54302.stderr b/tests/ui/issues/issue-54302.stderr similarity index 100% rename from src/test/ui/issues/issue-54302.stderr rename to tests/ui/issues/issue-54302.stderr diff --git a/src/test/ui/issues/issue-5439.rs b/tests/ui/issues/issue-5439.rs similarity index 100% rename from src/test/ui/issues/issue-5439.rs rename to tests/ui/issues/issue-5439.rs diff --git a/src/test/ui/issues/issue-5439.stderr b/tests/ui/issues/issue-5439.stderr similarity index 100% rename from src/test/ui/issues/issue-5439.stderr rename to tests/ui/issues/issue-5439.stderr diff --git a/src/test/ui/issues/issue-54410.rs b/tests/ui/issues/issue-54410.rs similarity index 100% rename from src/test/ui/issues/issue-54410.rs rename to tests/ui/issues/issue-54410.rs diff --git a/src/test/ui/issues/issue-54410.stderr b/tests/ui/issues/issue-54410.stderr similarity index 100% rename from src/test/ui/issues/issue-54410.stderr rename to tests/ui/issues/issue-54410.stderr diff --git a/src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs b/tests/ui/issues/issue-54462-mutable-noalias-correctness.rs similarity index 100% rename from src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs rename to tests/ui/issues/issue-54462-mutable-noalias-correctness.rs diff --git a/src/test/ui/issues/issue-54477-reduced-2.rs b/tests/ui/issues/issue-54477-reduced-2.rs similarity index 100% rename from src/test/ui/issues/issue-54477-reduced-2.rs rename to tests/ui/issues/issue-54477-reduced-2.rs diff --git a/src/test/ui/issues/issue-54582.rs b/tests/ui/issues/issue-54582.rs similarity index 100% rename from src/test/ui/issues/issue-54582.rs rename to tests/ui/issues/issue-54582.rs diff --git a/src/test/ui/issues/issue-54696.rs b/tests/ui/issues/issue-54696.rs similarity index 100% rename from src/test/ui/issues/issue-54696.rs rename to tests/ui/issues/issue-54696.rs diff --git a/src/test/ui/issues/issue-5518.rs b/tests/ui/issues/issue-5518.rs similarity index 100% rename from src/test/ui/issues/issue-5518.rs rename to tests/ui/issues/issue-5518.rs diff --git a/src/test/ui/issues/issue-5521.rs b/tests/ui/issues/issue-5521.rs similarity index 100% rename from src/test/ui/issues/issue-5521.rs rename to tests/ui/issues/issue-5521.rs diff --git a/src/test/ui/issues/issue-55376.rs b/tests/ui/issues/issue-55376.rs similarity index 100% rename from src/test/ui/issues/issue-55376.rs rename to tests/ui/issues/issue-55376.rs diff --git a/src/test/ui/issues/issue-55380.rs b/tests/ui/issues/issue-55380.rs similarity index 100% rename from src/test/ui/issues/issue-55380.rs rename to tests/ui/issues/issue-55380.rs diff --git a/src/test/ui/issues/issue-55380.stderr b/tests/ui/issues/issue-55380.stderr similarity index 100% rename from src/test/ui/issues/issue-55380.stderr rename to tests/ui/issues/issue-55380.stderr diff --git a/src/test/ui/issues/issue-5550.rs b/tests/ui/issues/issue-5550.rs similarity index 100% rename from src/test/ui/issues/issue-5550.rs rename to tests/ui/issues/issue-5550.rs diff --git a/src/test/ui/issues/issue-5554.rs b/tests/ui/issues/issue-5554.rs similarity index 100% rename from src/test/ui/issues/issue-5554.rs rename to tests/ui/issues/issue-5554.rs diff --git a/src/test/ui/issues/issue-55587.rs b/tests/ui/issues/issue-55587.rs similarity index 100% rename from src/test/ui/issues/issue-55587.rs rename to tests/ui/issues/issue-55587.rs diff --git a/src/test/ui/issues/issue-55587.stderr b/tests/ui/issues/issue-55587.stderr similarity index 100% rename from src/test/ui/issues/issue-55587.stderr rename to tests/ui/issues/issue-55587.stderr diff --git a/src/test/ui/issues/issue-5572.rs b/tests/ui/issues/issue-5572.rs similarity index 100% rename from src/test/ui/issues/issue-5572.rs rename to tests/ui/issues/issue-5572.rs diff --git a/src/test/ui/issues/issue-55731.rs b/tests/ui/issues/issue-55731.rs similarity index 100% rename from src/test/ui/issues/issue-55731.rs rename to tests/ui/issues/issue-55731.rs diff --git a/src/test/ui/issues/issue-55731.stderr b/tests/ui/issues/issue-55731.stderr similarity index 100% rename from src/test/ui/issues/issue-55731.stderr rename to tests/ui/issues/issue-55731.stderr diff --git a/src/test/ui/issues/issue-56128.rs b/tests/ui/issues/issue-56128.rs similarity index 100% rename from src/test/ui/issues/issue-56128.rs rename to tests/ui/issues/issue-56128.rs diff --git a/src/test/ui/issues/issue-56175.rs b/tests/ui/issues/issue-56175.rs similarity index 100% rename from src/test/ui/issues/issue-56175.rs rename to tests/ui/issues/issue-56175.rs diff --git a/src/test/ui/issues/issue-56175.stderr b/tests/ui/issues/issue-56175.stderr similarity index 100% rename from src/test/ui/issues/issue-56175.stderr rename to tests/ui/issues/issue-56175.stderr diff --git a/src/test/ui/issues/issue-56199.rs b/tests/ui/issues/issue-56199.rs similarity index 100% rename from src/test/ui/issues/issue-56199.rs rename to tests/ui/issues/issue-56199.rs diff --git a/src/test/ui/issues/issue-56199.stderr b/tests/ui/issues/issue-56199.stderr similarity index 100% rename from src/test/ui/issues/issue-56199.stderr rename to tests/ui/issues/issue-56199.stderr diff --git a/src/test/ui/issues/issue-56229.rs b/tests/ui/issues/issue-56229.rs similarity index 100% rename from src/test/ui/issues/issue-56229.rs rename to tests/ui/issues/issue-56229.rs diff --git a/src/test/ui/issues/issue-56237.rs b/tests/ui/issues/issue-56237.rs similarity index 100% rename from src/test/ui/issues/issue-56237.rs rename to tests/ui/issues/issue-56237.rs diff --git a/src/test/ui/issues/issue-5666.rs b/tests/ui/issues/issue-5666.rs similarity index 100% rename from src/test/ui/issues/issue-5666.rs rename to tests/ui/issues/issue-5666.rs diff --git a/src/test/ui/issues/issue-56806.rs b/tests/ui/issues/issue-56806.rs similarity index 100% rename from src/test/ui/issues/issue-56806.rs rename to tests/ui/issues/issue-56806.rs diff --git a/src/test/ui/issues/issue-56806.stderr b/tests/ui/issues/issue-56806.stderr similarity index 100% rename from src/test/ui/issues/issue-56806.stderr rename to tests/ui/issues/issue-56806.stderr diff --git a/src/test/ui/issues/issue-56835.rs b/tests/ui/issues/issue-56835.rs similarity index 100% rename from src/test/ui/issues/issue-56835.rs rename to tests/ui/issues/issue-56835.rs diff --git a/src/test/ui/issues/issue-56835.stderr b/tests/ui/issues/issue-56835.stderr similarity index 100% rename from src/test/ui/issues/issue-56835.stderr rename to tests/ui/issues/issue-56835.stderr diff --git a/src/test/ui/issues/issue-56870.rs b/tests/ui/issues/issue-56870.rs similarity index 100% rename from src/test/ui/issues/issue-56870.rs rename to tests/ui/issues/issue-56870.rs diff --git a/src/test/ui/issues/issue-5688.rs b/tests/ui/issues/issue-5688.rs similarity index 100% rename from src/test/ui/issues/issue-5688.rs rename to tests/ui/issues/issue-5688.rs diff --git a/src/test/ui/issues/issue-56943.rs b/tests/ui/issues/issue-56943.rs similarity index 100% rename from src/test/ui/issues/issue-56943.rs rename to tests/ui/issues/issue-56943.rs diff --git a/src/test/ui/issues/issue-56943.stderr b/tests/ui/issues/issue-56943.stderr similarity index 100% rename from src/test/ui/issues/issue-56943.stderr rename to tests/ui/issues/issue-56943.stderr diff --git a/src/test/ui/issues/issue-5708.rs b/tests/ui/issues/issue-5708.rs similarity index 100% rename from src/test/ui/issues/issue-5708.rs rename to tests/ui/issues/issue-5708.rs diff --git a/src/test/ui/issues/issue-57156.rs b/tests/ui/issues/issue-57156.rs similarity index 100% rename from src/test/ui/issues/issue-57156.rs rename to tests/ui/issues/issue-57156.rs diff --git a/src/test/ui/issues/issue-57162.rs b/tests/ui/issues/issue-57162.rs similarity index 100% rename from src/test/ui/issues/issue-57162.rs rename to tests/ui/issues/issue-57162.rs diff --git a/src/test/ui/issues/issue-5718.rs b/tests/ui/issues/issue-5718.rs similarity index 100% rename from src/test/ui/issues/issue-5718.rs rename to tests/ui/issues/issue-5718.rs diff --git a/src/test/ui/issues/issue-57198-pass.rs b/tests/ui/issues/issue-57198-pass.rs similarity index 100% rename from src/test/ui/issues/issue-57198-pass.rs rename to tests/ui/issues/issue-57198-pass.rs diff --git a/src/test/ui/issues/issue-57271.rs b/tests/ui/issues/issue-57271.rs similarity index 100% rename from src/test/ui/issues/issue-57271.rs rename to tests/ui/issues/issue-57271.rs diff --git a/src/test/ui/issues/issue-57271.stderr b/tests/ui/issues/issue-57271.stderr similarity index 100% rename from src/test/ui/issues/issue-57271.stderr rename to tests/ui/issues/issue-57271.stderr diff --git a/src/test/ui/issues/issue-57362-1.rs b/tests/ui/issues/issue-57362-1.rs similarity index 100% rename from src/test/ui/issues/issue-57362-1.rs rename to tests/ui/issues/issue-57362-1.rs diff --git a/src/test/ui/issues/issue-57362-1.stderr b/tests/ui/issues/issue-57362-1.stderr similarity index 100% rename from src/test/ui/issues/issue-57362-1.stderr rename to tests/ui/issues/issue-57362-1.stderr diff --git a/src/test/ui/issues/issue-57362-2.rs b/tests/ui/issues/issue-57362-2.rs similarity index 100% rename from src/test/ui/issues/issue-57362-2.rs rename to tests/ui/issues/issue-57362-2.rs diff --git a/src/test/ui/issues/issue-57362-2.stderr b/tests/ui/issues/issue-57362-2.stderr similarity index 100% rename from src/test/ui/issues/issue-57362-2.stderr rename to tests/ui/issues/issue-57362-2.stderr diff --git a/src/test/ui/issues/issue-57399-self-return-impl-trait.rs b/tests/ui/issues/issue-57399-self-return-impl-trait.rs similarity index 100% rename from src/test/ui/issues/issue-57399-self-return-impl-trait.rs rename to tests/ui/issues/issue-57399-self-return-impl-trait.rs diff --git a/src/test/ui/issues/issue-5741.rs b/tests/ui/issues/issue-5741.rs similarity index 100% rename from src/test/ui/issues/issue-5741.rs rename to tests/ui/issues/issue-5741.rs diff --git a/src/test/ui/issues/issue-5754.rs b/tests/ui/issues/issue-5754.rs similarity index 100% rename from src/test/ui/issues/issue-5754.rs rename to tests/ui/issues/issue-5754.rs diff --git a/src/test/ui/issues/issue-57741-1.rs b/tests/ui/issues/issue-57741-1.rs similarity index 100% rename from src/test/ui/issues/issue-57741-1.rs rename to tests/ui/issues/issue-57741-1.rs diff --git a/src/test/ui/issues/issue-57741-1.stderr b/tests/ui/issues/issue-57741-1.stderr similarity index 100% rename from src/test/ui/issues/issue-57741-1.stderr rename to tests/ui/issues/issue-57741-1.stderr diff --git a/src/test/ui/issues/issue-57741.fixed b/tests/ui/issues/issue-57741.fixed similarity index 100% rename from src/test/ui/issues/issue-57741.fixed rename to tests/ui/issues/issue-57741.fixed diff --git a/src/test/ui/issues/issue-57741.rs b/tests/ui/issues/issue-57741.rs similarity index 100% rename from src/test/ui/issues/issue-57741.rs rename to tests/ui/issues/issue-57741.rs diff --git a/src/test/ui/issues/issue-57741.stderr b/tests/ui/issues/issue-57741.stderr similarity index 100% rename from src/test/ui/issues/issue-57741.stderr rename to tests/ui/issues/issue-57741.stderr diff --git a/src/test/ui/issues/issue-57781.rs b/tests/ui/issues/issue-57781.rs similarity index 100% rename from src/test/ui/issues/issue-57781.rs rename to tests/ui/issues/issue-57781.rs diff --git a/src/test/ui/issues/issue-57924.rs b/tests/ui/issues/issue-57924.rs similarity index 100% rename from src/test/ui/issues/issue-57924.rs rename to tests/ui/issues/issue-57924.rs diff --git a/src/test/ui/issues/issue-57924.stderr b/tests/ui/issues/issue-57924.stderr similarity index 100% rename from src/test/ui/issues/issue-57924.stderr rename to tests/ui/issues/issue-57924.stderr diff --git a/src/test/ui/issues/issue-58212.rs b/tests/ui/issues/issue-58212.rs similarity index 100% rename from src/test/ui/issues/issue-58212.rs rename to tests/ui/issues/issue-58212.rs diff --git a/src/test/ui/issues/issue-58344.rs b/tests/ui/issues/issue-58344.rs similarity index 100% rename from src/test/ui/issues/issue-58344.rs rename to tests/ui/issues/issue-58344.rs diff --git a/src/test/ui/issues/issue-58375-monomorphize-default-impls.rs b/tests/ui/issues/issue-58375-monomorphize-default-impls.rs similarity index 100% rename from src/test/ui/issues/issue-58375-monomorphize-default-impls.rs rename to tests/ui/issues/issue-58375-monomorphize-default-impls.rs diff --git a/src/test/ui/issues/issue-5844.mir.stderr b/tests/ui/issues/issue-5844.mir.stderr similarity index 100% rename from src/test/ui/issues/issue-5844.mir.stderr rename to tests/ui/issues/issue-5844.mir.stderr diff --git a/src/test/ui/issues/issue-5844.rs b/tests/ui/issues/issue-5844.rs similarity index 100% rename from src/test/ui/issues/issue-5844.rs rename to tests/ui/issues/issue-5844.rs diff --git a/src/test/ui/issues/issue-5844.thir.stderr b/tests/ui/issues/issue-5844.thir.stderr similarity index 100% rename from src/test/ui/issues/issue-5844.thir.stderr rename to tests/ui/issues/issue-5844.thir.stderr diff --git a/src/test/ui/issues/issue-58463.rs b/tests/ui/issues/issue-58463.rs similarity index 100% rename from src/test/ui/issues/issue-58463.rs rename to tests/ui/issues/issue-58463.rs diff --git a/src/test/ui/issues/issue-58712.rs b/tests/ui/issues/issue-58712.rs similarity index 100% rename from src/test/ui/issues/issue-58712.rs rename to tests/ui/issues/issue-58712.rs diff --git a/src/test/ui/issues/issue-58712.stderr b/tests/ui/issues/issue-58712.stderr similarity index 100% rename from src/test/ui/issues/issue-58712.stderr rename to tests/ui/issues/issue-58712.stderr diff --git a/src/test/ui/issues/issue-58734.rs b/tests/ui/issues/issue-58734.rs similarity index 100% rename from src/test/ui/issues/issue-58734.rs rename to tests/ui/issues/issue-58734.rs diff --git a/src/test/ui/issues/issue-58734.stderr b/tests/ui/issues/issue-58734.stderr similarity index 100% rename from src/test/ui/issues/issue-58734.stderr rename to tests/ui/issues/issue-58734.stderr diff --git a/src/test/ui/issues/issue-5883.rs b/tests/ui/issues/issue-5883.rs similarity index 100% rename from src/test/ui/issues/issue-5883.rs rename to tests/ui/issues/issue-5883.rs diff --git a/src/test/ui/issues/issue-5883.stderr b/tests/ui/issues/issue-5883.stderr similarity index 100% rename from src/test/ui/issues/issue-5883.stderr rename to tests/ui/issues/issue-5883.stderr diff --git a/src/test/ui/issues/issue-5884.rs b/tests/ui/issues/issue-5884.rs similarity index 100% rename from src/test/ui/issues/issue-5884.rs rename to tests/ui/issues/issue-5884.rs diff --git a/src/test/ui/issues/issue-58857.rs b/tests/ui/issues/issue-58857.rs similarity index 100% rename from src/test/ui/issues/issue-58857.rs rename to tests/ui/issues/issue-58857.rs diff --git a/src/test/ui/issues/issue-58857.stderr b/tests/ui/issues/issue-58857.stderr similarity index 100% rename from src/test/ui/issues/issue-58857.stderr rename to tests/ui/issues/issue-58857.stderr diff --git a/src/test/ui/issues/issue-5900.rs b/tests/ui/issues/issue-5900.rs similarity index 100% rename from src/test/ui/issues/issue-5900.rs rename to tests/ui/issues/issue-5900.rs diff --git a/src/test/ui/issues/issue-59020.rs b/tests/ui/issues/issue-59020.rs similarity index 100% rename from src/test/ui/issues/issue-59020.rs rename to tests/ui/issues/issue-59020.rs diff --git a/src/test/ui/issues/issue-5917.rs b/tests/ui/issues/issue-5917.rs similarity index 100% rename from src/test/ui/issues/issue-5917.rs rename to tests/ui/issues/issue-5917.rs diff --git a/src/test/ui/issues/issue-59326.rs b/tests/ui/issues/issue-59326.rs similarity index 100% rename from src/test/ui/issues/issue-59326.rs rename to tests/ui/issues/issue-59326.rs diff --git a/src/test/ui/issues/issue-59488.rs b/tests/ui/issues/issue-59488.rs similarity index 100% rename from src/test/ui/issues/issue-59488.rs rename to tests/ui/issues/issue-59488.rs diff --git a/src/test/ui/issues/issue-59488.stderr b/tests/ui/issues/issue-59488.stderr similarity index 100% rename from src/test/ui/issues/issue-59488.stderr rename to tests/ui/issues/issue-59488.stderr diff --git a/src/test/ui/issues/issue-59494.rs b/tests/ui/issues/issue-59494.rs similarity index 100% rename from src/test/ui/issues/issue-59494.rs rename to tests/ui/issues/issue-59494.rs diff --git a/src/test/ui/issues/issue-59494.stderr b/tests/ui/issues/issue-59494.stderr similarity index 100% rename from src/test/ui/issues/issue-59494.stderr rename to tests/ui/issues/issue-59494.stderr diff --git a/src/test/ui/issues/issue-5950.rs b/tests/ui/issues/issue-5950.rs similarity index 100% rename from src/test/ui/issues/issue-5950.rs rename to tests/ui/issues/issue-5950.rs diff --git a/src/test/ui/issues/issue-59756.fixed b/tests/ui/issues/issue-59756.fixed similarity index 100% rename from src/test/ui/issues/issue-59756.fixed rename to tests/ui/issues/issue-59756.fixed diff --git a/src/test/ui/issues/issue-59756.rs b/tests/ui/issues/issue-59756.rs similarity index 100% rename from src/test/ui/issues/issue-59756.rs rename to tests/ui/issues/issue-59756.rs diff --git a/src/test/ui/issues/issue-59756.stderr b/tests/ui/issues/issue-59756.stderr similarity index 100% rename from src/test/ui/issues/issue-59756.stderr rename to tests/ui/issues/issue-59756.stderr diff --git a/src/test/ui/issues/issue-5988.rs b/tests/ui/issues/issue-5988.rs similarity index 100% rename from src/test/ui/issues/issue-5988.rs rename to tests/ui/issues/issue-5988.rs diff --git a/src/test/ui/issues/issue-5997-enum.rs b/tests/ui/issues/issue-5997-enum.rs similarity index 100% rename from src/test/ui/issues/issue-5997-enum.rs rename to tests/ui/issues/issue-5997-enum.rs diff --git a/src/test/ui/issues/issue-5997-enum.stderr b/tests/ui/issues/issue-5997-enum.stderr similarity index 100% rename from src/test/ui/issues/issue-5997-enum.stderr rename to tests/ui/issues/issue-5997-enum.stderr diff --git a/src/test/ui/issues/issue-5997-struct.rs b/tests/ui/issues/issue-5997-struct.rs similarity index 100% rename from src/test/ui/issues/issue-5997-struct.rs rename to tests/ui/issues/issue-5997-struct.rs diff --git a/src/test/ui/issues/issue-5997-struct.stderr b/tests/ui/issues/issue-5997-struct.stderr similarity index 100% rename from src/test/ui/issues/issue-5997-struct.stderr rename to tests/ui/issues/issue-5997-struct.stderr diff --git a/src/test/ui/issues/issue-5997.rs b/tests/ui/issues/issue-5997.rs similarity index 100% rename from src/test/ui/issues/issue-5997.rs rename to tests/ui/issues/issue-5997.rs diff --git a/src/test/ui/issues/issue-60218.rs b/tests/ui/issues/issue-60218.rs similarity index 100% rename from src/test/ui/issues/issue-60218.rs rename to tests/ui/issues/issue-60218.rs diff --git a/src/test/ui/issues/issue-60218.stderr b/tests/ui/issues/issue-60218.stderr similarity index 100% rename from src/test/ui/issues/issue-60218.stderr rename to tests/ui/issues/issue-60218.stderr diff --git a/src/test/ui/issues/issue-60622.rs b/tests/ui/issues/issue-60622.rs similarity index 100% rename from src/test/ui/issues/issue-60622.rs rename to tests/ui/issues/issue-60622.rs diff --git a/src/test/ui/issues/issue-60622.stderr b/tests/ui/issues/issue-60622.stderr similarity index 100% rename from src/test/ui/issues/issue-60622.stderr rename to tests/ui/issues/issue-60622.stderr diff --git a/src/test/ui/issues/issue-60989.rs b/tests/ui/issues/issue-60989.rs similarity index 100% rename from src/test/ui/issues/issue-60989.rs rename to tests/ui/issues/issue-60989.rs diff --git a/src/test/ui/issues/issue-60989.stderr b/tests/ui/issues/issue-60989.stderr similarity index 100% rename from src/test/ui/issues/issue-60989.stderr rename to tests/ui/issues/issue-60989.stderr diff --git a/src/test/ui/issues/issue-61106.rs b/tests/ui/issues/issue-61106.rs similarity index 100% rename from src/test/ui/issues/issue-61106.rs rename to tests/ui/issues/issue-61106.rs diff --git a/src/test/ui/issues/issue-61106.stderr b/tests/ui/issues/issue-61106.stderr similarity index 100% rename from src/test/ui/issues/issue-61106.stderr rename to tests/ui/issues/issue-61106.stderr diff --git a/src/test/ui/issues/issue-61108.rs b/tests/ui/issues/issue-61108.rs similarity index 100% rename from src/test/ui/issues/issue-61108.rs rename to tests/ui/issues/issue-61108.rs diff --git a/src/test/ui/issues/issue-61108.stderr b/tests/ui/issues/issue-61108.stderr similarity index 100% rename from src/test/ui/issues/issue-61108.stderr rename to tests/ui/issues/issue-61108.stderr diff --git a/src/test/ui/issues/issue-6117.rs b/tests/ui/issues/issue-6117.rs similarity index 100% rename from src/test/ui/issues/issue-6117.rs rename to tests/ui/issues/issue-6117.rs diff --git a/src/test/ui/issues/issue-6130.rs b/tests/ui/issues/issue-6130.rs similarity index 100% rename from src/test/ui/issues/issue-6130.rs rename to tests/ui/issues/issue-6130.rs diff --git a/src/test/ui/issues/issue-61475.rs b/tests/ui/issues/issue-61475.rs similarity index 100% rename from src/test/ui/issues/issue-61475.rs rename to tests/ui/issues/issue-61475.rs diff --git a/src/test/ui/issues/issue-6153.rs b/tests/ui/issues/issue-6153.rs similarity index 100% rename from src/test/ui/issues/issue-6153.rs rename to tests/ui/issues/issue-6153.rs diff --git a/src/test/ui/issues/issue-61623.rs b/tests/ui/issues/issue-61623.rs similarity index 100% rename from src/test/ui/issues/issue-61623.rs rename to tests/ui/issues/issue-61623.rs diff --git a/src/test/ui/issues/issue-61623.stderr b/tests/ui/issues/issue-61623.stderr similarity index 100% rename from src/test/ui/issues/issue-61623.stderr rename to tests/ui/issues/issue-61623.stderr diff --git a/src/test/ui/issues/issue-61696.rs b/tests/ui/issues/issue-61696.rs similarity index 100% rename from src/test/ui/issues/issue-61696.rs rename to tests/ui/issues/issue-61696.rs diff --git a/src/test/ui/issues/issue-61894.rs b/tests/ui/issues/issue-61894.rs similarity index 100% rename from src/test/ui/issues/issue-61894.rs rename to tests/ui/issues/issue-61894.rs diff --git a/src/test/ui/issues/issue-62375.rs b/tests/ui/issues/issue-62375.rs similarity index 100% rename from src/test/ui/issues/issue-62375.rs rename to tests/ui/issues/issue-62375.rs diff --git a/src/test/ui/issues/issue-62375.stderr b/tests/ui/issues/issue-62375.stderr similarity index 100% rename from src/test/ui/issues/issue-62375.stderr rename to tests/ui/issues/issue-62375.stderr diff --git a/src/test/ui/issues/issue-62480.rs b/tests/ui/issues/issue-62480.rs similarity index 100% rename from src/test/ui/issues/issue-62480.rs rename to tests/ui/issues/issue-62480.rs diff --git a/src/test/ui/issues/issue-62480.stderr b/tests/ui/issues/issue-62480.stderr similarity index 100% rename from src/test/ui/issues/issue-62480.stderr rename to tests/ui/issues/issue-62480.stderr diff --git a/src/test/ui/issues/issue-6318.rs b/tests/ui/issues/issue-6318.rs similarity index 100% rename from src/test/ui/issues/issue-6318.rs rename to tests/ui/issues/issue-6318.rs diff --git a/src/test/ui/issues/issue-6344-let.rs b/tests/ui/issues/issue-6344-let.rs similarity index 100% rename from src/test/ui/issues/issue-6344-let.rs rename to tests/ui/issues/issue-6344-let.rs diff --git a/src/test/ui/issues/issue-6344-match.rs b/tests/ui/issues/issue-6344-match.rs similarity index 100% rename from src/test/ui/issues/issue-6344-match.rs rename to tests/ui/issues/issue-6344-match.rs diff --git a/src/test/ui/issues/issue-63983.rs b/tests/ui/issues/issue-63983.rs similarity index 100% rename from src/test/ui/issues/issue-63983.rs rename to tests/ui/issues/issue-63983.rs diff --git a/src/test/ui/issues/issue-63983.stderr b/tests/ui/issues/issue-63983.stderr similarity index 100% rename from src/test/ui/issues/issue-63983.stderr rename to tests/ui/issues/issue-63983.stderr diff --git a/src/test/ui/issues/issue-64430.rs b/tests/ui/issues/issue-64430.rs similarity index 100% rename from src/test/ui/issues/issue-64430.rs rename to tests/ui/issues/issue-64430.rs diff --git a/src/test/ui/issues/issue-64430.stderr b/tests/ui/issues/issue-64430.stderr similarity index 100% rename from src/test/ui/issues/issue-64430.stderr rename to tests/ui/issues/issue-64430.stderr diff --git a/src/test/ui/issues/issue-64559.rs b/tests/ui/issues/issue-64559.rs similarity index 100% rename from src/test/ui/issues/issue-64559.rs rename to tests/ui/issues/issue-64559.rs diff --git a/src/test/ui/issues/issue-64559.stderr b/tests/ui/issues/issue-64559.stderr similarity index 100% rename from src/test/ui/issues/issue-64559.stderr rename to tests/ui/issues/issue-64559.stderr diff --git a/src/test/ui/issues/issue-6458-1.rs b/tests/ui/issues/issue-6458-1.rs similarity index 100% rename from src/test/ui/issues/issue-6458-1.rs rename to tests/ui/issues/issue-6458-1.rs diff --git a/src/test/ui/issues/issue-6458-2.rs b/tests/ui/issues/issue-6458-2.rs similarity index 100% rename from src/test/ui/issues/issue-6458-2.rs rename to tests/ui/issues/issue-6458-2.rs diff --git a/src/test/ui/issues/issue-6458-2.stderr b/tests/ui/issues/issue-6458-2.stderr similarity index 100% rename from src/test/ui/issues/issue-6458-2.stderr rename to tests/ui/issues/issue-6458-2.stderr diff --git a/src/test/ui/issues/issue-6458-3.rs b/tests/ui/issues/issue-6458-3.rs similarity index 100% rename from src/test/ui/issues/issue-6458-3.rs rename to tests/ui/issues/issue-6458-3.rs diff --git a/src/test/ui/issues/issue-6458-3.stderr b/tests/ui/issues/issue-6458-3.stderr similarity index 100% rename from src/test/ui/issues/issue-6458-3.stderr rename to tests/ui/issues/issue-6458-3.stderr diff --git a/src/test/ui/issues/issue-6458-4.rs b/tests/ui/issues/issue-6458-4.rs similarity index 100% rename from src/test/ui/issues/issue-6458-4.rs rename to tests/ui/issues/issue-6458-4.rs diff --git a/src/test/ui/issues/issue-6458-4.stderr b/tests/ui/issues/issue-6458-4.stderr similarity index 100% rename from src/test/ui/issues/issue-6458-4.stderr rename to tests/ui/issues/issue-6458-4.stderr diff --git a/src/test/ui/issues/issue-6458.rs b/tests/ui/issues/issue-6458.rs similarity index 100% rename from src/test/ui/issues/issue-6458.rs rename to tests/ui/issues/issue-6458.rs diff --git a/src/test/ui/issues/issue-6458.stderr b/tests/ui/issues/issue-6458.stderr similarity index 100% rename from src/test/ui/issues/issue-6458.stderr rename to tests/ui/issues/issue-6458.stderr diff --git a/src/test/ui/issues/issue-64593.rs b/tests/ui/issues/issue-64593.rs similarity index 100% rename from src/test/ui/issues/issue-64593.rs rename to tests/ui/issues/issue-64593.rs diff --git a/src/test/ui/issues/issue-64792-bad-unicode-ctor.rs b/tests/ui/issues/issue-64792-bad-unicode-ctor.rs similarity index 100% rename from src/test/ui/issues/issue-64792-bad-unicode-ctor.rs rename to tests/ui/issues/issue-64792-bad-unicode-ctor.rs diff --git a/src/test/ui/issues/issue-64792-bad-unicode-ctor.stderr b/tests/ui/issues/issue-64792-bad-unicode-ctor.stderr similarity index 100% rename from src/test/ui/issues/issue-64792-bad-unicode-ctor.stderr rename to tests/ui/issues/issue-64792-bad-unicode-ctor.stderr diff --git a/src/test/ui/issues/issue-65131.rs b/tests/ui/issues/issue-65131.rs similarity index 100% rename from src/test/ui/issues/issue-65131.rs rename to tests/ui/issues/issue-65131.rs diff --git a/src/test/ui/issues/issue-65131.stderr b/tests/ui/issues/issue-65131.stderr similarity index 100% rename from src/test/ui/issues/issue-65131.stderr rename to tests/ui/issues/issue-65131.stderr diff --git a/src/test/ui/issues/issue-65230.rs b/tests/ui/issues/issue-65230.rs similarity index 100% rename from src/test/ui/issues/issue-65230.rs rename to tests/ui/issues/issue-65230.rs diff --git a/src/test/ui/issues/issue-65230.stderr b/tests/ui/issues/issue-65230.stderr similarity index 100% rename from src/test/ui/issues/issue-65230.stderr rename to tests/ui/issues/issue-65230.stderr diff --git a/src/test/ui/issues/issue-65462.rs b/tests/ui/issues/issue-65462.rs similarity index 100% rename from src/test/ui/issues/issue-65462.rs rename to tests/ui/issues/issue-65462.rs diff --git a/src/test/ui/issues/issue-6557.rs b/tests/ui/issues/issue-6557.rs similarity index 100% rename from src/test/ui/issues/issue-6557.rs rename to tests/ui/issues/issue-6557.rs diff --git a/src/test/ui/issues/issue-65634-raw-ident-suggestion.rs b/tests/ui/issues/issue-65634-raw-ident-suggestion.rs similarity index 100% rename from src/test/ui/issues/issue-65634-raw-ident-suggestion.rs rename to tests/ui/issues/issue-65634-raw-ident-suggestion.rs diff --git a/src/test/ui/issues/issue-65634-raw-ident-suggestion.stderr b/tests/ui/issues/issue-65634-raw-ident-suggestion.stderr similarity index 100% rename from src/test/ui/issues/issue-65634-raw-ident-suggestion.stderr rename to tests/ui/issues/issue-65634-raw-ident-suggestion.stderr diff --git a/src/test/ui/issues/issue-6596-2.rs b/tests/ui/issues/issue-6596-2.rs similarity index 100% rename from src/test/ui/issues/issue-6596-2.rs rename to tests/ui/issues/issue-6596-2.rs diff --git a/src/test/ui/issues/issue-6596-2.stderr b/tests/ui/issues/issue-6596-2.stderr similarity index 100% rename from src/test/ui/issues/issue-6596-2.stderr rename to tests/ui/issues/issue-6596-2.stderr diff --git a/src/test/ui/issues/issue-66308.rs b/tests/ui/issues/issue-66308.rs similarity index 100% rename from src/test/ui/issues/issue-66308.rs rename to tests/ui/issues/issue-66308.rs diff --git a/src/test/ui/issues/issue-66353.rs b/tests/ui/issues/issue-66353.rs similarity index 100% rename from src/test/ui/issues/issue-66353.rs rename to tests/ui/issues/issue-66353.rs diff --git a/src/test/ui/issues/issue-66353.stderr b/tests/ui/issues/issue-66353.stderr similarity index 100% rename from src/test/ui/issues/issue-66353.stderr rename to tests/ui/issues/issue-66353.stderr diff --git a/src/test/ui/issues/issue-6642.rs b/tests/ui/issues/issue-6642.rs similarity index 100% rename from src/test/ui/issues/issue-6642.rs rename to tests/ui/issues/issue-6642.rs diff --git a/src/test/ui/issues/issue-6642.stderr b/tests/ui/issues/issue-6642.stderr similarity index 100% rename from src/test/ui/issues/issue-6642.stderr rename to tests/ui/issues/issue-6642.stderr diff --git a/src/test/ui/issues/issue-66667-function-cmp-cycle.rs b/tests/ui/issues/issue-66667-function-cmp-cycle.rs similarity index 100% rename from src/test/ui/issues/issue-66667-function-cmp-cycle.rs rename to tests/ui/issues/issue-66667-function-cmp-cycle.rs diff --git a/src/test/ui/issues/issue-66667-function-cmp-cycle.stderr b/tests/ui/issues/issue-66667-function-cmp-cycle.stderr similarity index 100% rename from src/test/ui/issues/issue-66667-function-cmp-cycle.stderr rename to tests/ui/issues/issue-66667-function-cmp-cycle.stderr diff --git a/src/test/ui/issues/issue-66702-break-outside-loop-val.rs b/tests/ui/issues/issue-66702-break-outside-loop-val.rs similarity index 100% rename from src/test/ui/issues/issue-66702-break-outside-loop-val.rs rename to tests/ui/issues/issue-66702-break-outside-loop-val.rs diff --git a/src/test/ui/issues/issue-66702-break-outside-loop-val.stderr b/tests/ui/issues/issue-66702-break-outside-loop-val.stderr similarity index 100% rename from src/test/ui/issues/issue-66702-break-outside-loop-val.stderr rename to tests/ui/issues/issue-66702-break-outside-loop-val.stderr diff --git a/src/test/ui/issues/issue-66706.rs b/tests/ui/issues/issue-66706.rs similarity index 100% rename from src/test/ui/issues/issue-66706.rs rename to tests/ui/issues/issue-66706.rs diff --git a/src/test/ui/issues/issue-66706.stderr b/tests/ui/issues/issue-66706.stderr similarity index 100% rename from src/test/ui/issues/issue-66706.stderr rename to tests/ui/issues/issue-66706.stderr diff --git a/src/test/ui/issues/issue-66768.rs b/tests/ui/issues/issue-66768.rs similarity index 100% rename from src/test/ui/issues/issue-66768.rs rename to tests/ui/issues/issue-66768.rs diff --git a/src/test/ui/issues/issue-66923-show-error-for-correct-call.rs b/tests/ui/issues/issue-66923-show-error-for-correct-call.rs similarity index 100% rename from src/test/ui/issues/issue-66923-show-error-for-correct-call.rs rename to tests/ui/issues/issue-66923-show-error-for-correct-call.rs diff --git a/src/test/ui/issues/issue-66923-show-error-for-correct-call.stderr b/tests/ui/issues/issue-66923-show-error-for-correct-call.stderr similarity index 100% rename from src/test/ui/issues/issue-66923-show-error-for-correct-call.stderr rename to tests/ui/issues/issue-66923-show-error-for-correct-call.stderr diff --git a/src/test/ui/issues/issue-67039-unsound-pin-partialeq.rs b/tests/ui/issues/issue-67039-unsound-pin-partialeq.rs similarity index 100% rename from src/test/ui/issues/issue-67039-unsound-pin-partialeq.rs rename to tests/ui/issues/issue-67039-unsound-pin-partialeq.rs diff --git a/src/test/ui/issues/issue-67039-unsound-pin-partialeq.stderr b/tests/ui/issues/issue-67039-unsound-pin-partialeq.stderr similarity index 100% rename from src/test/ui/issues/issue-67039-unsound-pin-partialeq.stderr rename to tests/ui/issues/issue-67039-unsound-pin-partialeq.stderr diff --git a/src/test/ui/issues/issue-6738.rs b/tests/ui/issues/issue-6738.rs similarity index 100% rename from src/test/ui/issues/issue-6738.rs rename to tests/ui/issues/issue-6738.rs diff --git a/src/test/ui/issues/issue-6738.stderr b/tests/ui/issues/issue-6738.stderr similarity index 100% rename from src/test/ui/issues/issue-6738.stderr rename to tests/ui/issues/issue-6738.stderr diff --git a/src/test/ui/issues/issue-67535.rs b/tests/ui/issues/issue-67535.rs similarity index 100% rename from src/test/ui/issues/issue-67535.rs rename to tests/ui/issues/issue-67535.rs diff --git a/src/test/ui/issues/issue-67535.stderr b/tests/ui/issues/issue-67535.stderr similarity index 100% rename from src/test/ui/issues/issue-67535.stderr rename to tests/ui/issues/issue-67535.stderr diff --git a/src/test/ui/issues/issue-67552.polonius.stderr b/tests/ui/issues/issue-67552.polonius.stderr similarity index 100% rename from src/test/ui/issues/issue-67552.polonius.stderr rename to tests/ui/issues/issue-67552.polonius.stderr diff --git a/src/test/ui/issues/issue-67552.rs b/tests/ui/issues/issue-67552.rs similarity index 100% rename from src/test/ui/issues/issue-67552.rs rename to tests/ui/issues/issue-67552.rs diff --git a/src/test/ui/issues/issue-67552.stderr b/tests/ui/issues/issue-67552.stderr similarity index 100% rename from src/test/ui/issues/issue-67552.stderr rename to tests/ui/issues/issue-67552.stderr diff --git a/src/test/ui/issues/issue-68010-large-zst-consts.rs b/tests/ui/issues/issue-68010-large-zst-consts.rs similarity index 100% rename from src/test/ui/issues/issue-68010-large-zst-consts.rs rename to tests/ui/issues/issue-68010-large-zst-consts.rs diff --git a/src/test/ui/issues/issue-68696-catch-during-unwind.rs b/tests/ui/issues/issue-68696-catch-during-unwind.rs similarity index 100% rename from src/test/ui/issues/issue-68696-catch-during-unwind.rs rename to tests/ui/issues/issue-68696-catch-during-unwind.rs diff --git a/src/test/ui/issues/issue-6892.rs b/tests/ui/issues/issue-6892.rs similarity index 100% rename from src/test/ui/issues/issue-6892.rs rename to tests/ui/issues/issue-6892.rs diff --git a/src/test/ui/issues/issue-68951.rs b/tests/ui/issues/issue-68951.rs similarity index 100% rename from src/test/ui/issues/issue-68951.rs rename to tests/ui/issues/issue-68951.rs diff --git a/src/test/ui/issues/issue-6898.rs b/tests/ui/issues/issue-6898.rs similarity index 100% rename from src/test/ui/issues/issue-6898.rs rename to tests/ui/issues/issue-6898.rs diff --git a/src/test/ui/issues/issue-69130.rs b/tests/ui/issues/issue-69130.rs similarity index 100% rename from src/test/ui/issues/issue-69130.rs rename to tests/ui/issues/issue-69130.rs diff --git a/src/test/ui/issues/issue-69130.stderr b/tests/ui/issues/issue-69130.stderr similarity index 100% rename from src/test/ui/issues/issue-69130.stderr rename to tests/ui/issues/issue-69130.stderr diff --git a/src/test/ui/issues/issue-6919.rs b/tests/ui/issues/issue-6919.rs similarity index 100% rename from src/test/ui/issues/issue-6919.rs rename to tests/ui/issues/issue-6919.rs diff --git a/src/test/ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs b/tests/ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs similarity index 100% rename from src/test/ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs rename to tests/ui/issues/issue-69225-SCEVAddExpr-wrap-flag.rs diff --git a/src/test/ui/issues/issue-69225-layout-repeated-checked-add.rs b/tests/ui/issues/issue-69225-layout-repeated-checked-add.rs similarity index 100% rename from src/test/ui/issues/issue-69225-layout-repeated-checked-add.rs rename to tests/ui/issues/issue-69225-layout-repeated-checked-add.rs diff --git a/src/test/ui/issues/issue-69306.rs b/tests/ui/issues/issue-69306.rs similarity index 100% rename from src/test/ui/issues/issue-69306.rs rename to tests/ui/issues/issue-69306.rs diff --git a/src/test/ui/issues/issue-69306.stderr b/tests/ui/issues/issue-69306.stderr similarity index 100% rename from src/test/ui/issues/issue-69306.stderr rename to tests/ui/issues/issue-69306.stderr diff --git a/src/test/ui/issues/issue-6936.rs b/tests/ui/issues/issue-6936.rs similarity index 100% rename from src/test/ui/issues/issue-6936.rs rename to tests/ui/issues/issue-6936.rs diff --git a/src/test/ui/issues/issue-6936.stderr b/tests/ui/issues/issue-6936.stderr similarity index 100% rename from src/test/ui/issues/issue-6936.stderr rename to tests/ui/issues/issue-6936.stderr diff --git a/src/test/ui/issues/issue-69396-const-no-type-in-macro.rs b/tests/ui/issues/issue-69396-const-no-type-in-macro.rs similarity index 100% rename from src/test/ui/issues/issue-69396-const-no-type-in-macro.rs rename to tests/ui/issues/issue-69396-const-no-type-in-macro.rs diff --git a/src/test/ui/issues/issue-69396-const-no-type-in-macro.stderr b/tests/ui/issues/issue-69396-const-no-type-in-macro.stderr similarity index 100% rename from src/test/ui/issues/issue-69396-const-no-type-in-macro.stderr rename to tests/ui/issues/issue-69396-const-no-type-in-macro.stderr diff --git a/src/test/ui/issues/issue-69455.rs b/tests/ui/issues/issue-69455.rs similarity index 100% rename from src/test/ui/issues/issue-69455.rs rename to tests/ui/issues/issue-69455.rs diff --git a/src/test/ui/issues/issue-69455.stderr b/tests/ui/issues/issue-69455.stderr similarity index 100% rename from src/test/ui/issues/issue-69455.stderr rename to tests/ui/issues/issue-69455.stderr diff --git a/src/test/ui/issues/issue-69602-type-err-during-codegen-ice.rs b/tests/ui/issues/issue-69602-type-err-during-codegen-ice.rs similarity index 100% rename from src/test/ui/issues/issue-69602-type-err-during-codegen-ice.rs rename to tests/ui/issues/issue-69602-type-err-during-codegen-ice.rs diff --git a/src/test/ui/issues/issue-69602-type-err-during-codegen-ice.stderr b/tests/ui/issues/issue-69602-type-err-during-codegen-ice.stderr similarity index 100% rename from src/test/ui/issues/issue-69602-type-err-during-codegen-ice.stderr rename to tests/ui/issues/issue-69602-type-err-during-codegen-ice.stderr diff --git a/src/test/ui/issues/issue-69683.rs b/tests/ui/issues/issue-69683.rs similarity index 100% rename from src/test/ui/issues/issue-69683.rs rename to tests/ui/issues/issue-69683.rs diff --git a/src/test/ui/issues/issue-69683.stderr b/tests/ui/issues/issue-69683.stderr similarity index 100% rename from src/test/ui/issues/issue-69683.stderr rename to tests/ui/issues/issue-69683.stderr diff --git a/src/test/ui/issues/issue-70093.rs b/tests/ui/issues/issue-70093.rs similarity index 100% rename from src/test/ui/issues/issue-70093.rs rename to tests/ui/issues/issue-70093.rs diff --git a/src/test/ui/issues/issue-7012.rs b/tests/ui/issues/issue-7012.rs similarity index 100% rename from src/test/ui/issues/issue-7012.rs rename to tests/ui/issues/issue-7012.rs diff --git a/src/test/ui/issues/issue-70381.rs b/tests/ui/issues/issue-70381.rs similarity index 100% rename from src/test/ui/issues/issue-70381.rs rename to tests/ui/issues/issue-70381.rs diff --git a/src/test/ui/issues/issue-70381.stderr b/tests/ui/issues/issue-70381.stderr similarity index 100% rename from src/test/ui/issues/issue-70381.stderr rename to tests/ui/issues/issue-70381.stderr diff --git a/src/test/ui/issues/issue-7044.rs b/tests/ui/issues/issue-7044.rs similarity index 100% rename from src/test/ui/issues/issue-7044.rs rename to tests/ui/issues/issue-7044.rs diff --git a/src/test/ui/issues/issue-7044.stderr b/tests/ui/issues/issue-7044.stderr similarity index 100% rename from src/test/ui/issues/issue-7044.stderr rename to tests/ui/issues/issue-7044.stderr diff --git a/src/test/ui/issues/issue-7061.rs b/tests/ui/issues/issue-7061.rs similarity index 100% rename from src/test/ui/issues/issue-7061.rs rename to tests/ui/issues/issue-7061.rs diff --git a/src/test/ui/issues/issue-7061.stderr b/tests/ui/issues/issue-7061.stderr similarity index 100% rename from src/test/ui/issues/issue-7061.stderr rename to tests/ui/issues/issue-7061.stderr diff --git a/src/test/ui/issues/issue-70673.rs b/tests/ui/issues/issue-70673.rs similarity index 100% rename from src/test/ui/issues/issue-70673.rs rename to tests/ui/issues/issue-70673.rs diff --git a/src/test/ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs b/tests/ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs similarity index 100% rename from src/test/ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs rename to tests/ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs diff --git a/src/test/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr b/tests/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr similarity index 100% rename from src/test/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr rename to tests/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr diff --git a/src/test/ui/issues/issue-70746.rs b/tests/ui/issues/issue-70746.rs similarity index 100% rename from src/test/ui/issues/issue-70746.rs rename to tests/ui/issues/issue-70746.rs diff --git a/src/test/ui/issues/issue-7092.rs b/tests/ui/issues/issue-7092.rs similarity index 100% rename from src/test/ui/issues/issue-7092.rs rename to tests/ui/issues/issue-7092.rs diff --git a/src/test/ui/issues/issue-7092.stderr b/tests/ui/issues/issue-7092.stderr similarity index 100% rename from src/test/ui/issues/issue-7092.stderr rename to tests/ui/issues/issue-7092.stderr diff --git a/src/test/ui/issues/issue-71406.rs b/tests/ui/issues/issue-71406.rs similarity index 100% rename from src/test/ui/issues/issue-71406.rs rename to tests/ui/issues/issue-71406.rs diff --git a/src/test/ui/issues/issue-71406.stderr b/tests/ui/issues/issue-71406.stderr similarity index 100% rename from src/test/ui/issues/issue-71406.stderr rename to tests/ui/issues/issue-71406.stderr diff --git a/src/test/ui/issues/issue-71584.rs b/tests/ui/issues/issue-71584.rs similarity index 100% rename from src/test/ui/issues/issue-71584.rs rename to tests/ui/issues/issue-71584.rs diff --git a/src/test/ui/issues/issue-71584.stderr b/tests/ui/issues/issue-71584.stderr similarity index 100% rename from src/test/ui/issues/issue-71584.stderr rename to tests/ui/issues/issue-71584.stderr diff --git a/src/test/ui/issues/issue-71676-1.fixed b/tests/ui/issues/issue-71676-1.fixed similarity index 100% rename from src/test/ui/issues/issue-71676-1.fixed rename to tests/ui/issues/issue-71676-1.fixed diff --git a/src/test/ui/issues/issue-71676-1.rs b/tests/ui/issues/issue-71676-1.rs similarity index 100% rename from src/test/ui/issues/issue-71676-1.rs rename to tests/ui/issues/issue-71676-1.rs diff --git a/src/test/ui/issues/issue-71676-1.stderr b/tests/ui/issues/issue-71676-1.stderr similarity index 100% rename from src/test/ui/issues/issue-71676-1.stderr rename to tests/ui/issues/issue-71676-1.stderr diff --git a/src/test/ui/issues/issue-71676-2.rs b/tests/ui/issues/issue-71676-2.rs similarity index 100% rename from src/test/ui/issues/issue-71676-2.rs rename to tests/ui/issues/issue-71676-2.rs diff --git a/src/test/ui/issues/issue-71676-2.stderr b/tests/ui/issues/issue-71676-2.stderr similarity index 100% rename from src/test/ui/issues/issue-71676-2.stderr rename to tests/ui/issues/issue-71676-2.stderr diff --git a/src/test/ui/issues/issue-7178.rs b/tests/ui/issues/issue-7178.rs similarity index 100% rename from src/test/ui/issues/issue-7178.rs rename to tests/ui/issues/issue-7178.rs diff --git a/src/test/ui/issues/issue-72002.rs b/tests/ui/issues/issue-72002.rs similarity index 100% rename from src/test/ui/issues/issue-72002.rs rename to tests/ui/issues/issue-72002.rs diff --git a/src/test/ui/issues/issue-72076.rs b/tests/ui/issues/issue-72076.rs similarity index 100% rename from src/test/ui/issues/issue-72076.rs rename to tests/ui/issues/issue-72076.rs diff --git a/src/test/ui/issues/issue-72076.stderr b/tests/ui/issues/issue-72076.stderr similarity index 100% rename from src/test/ui/issues/issue-72076.stderr rename to tests/ui/issues/issue-72076.stderr diff --git a/src/test/ui/issues/issue-72278.rs b/tests/ui/issues/issue-72278.rs similarity index 100% rename from src/test/ui/issues/issue-72278.rs rename to tests/ui/issues/issue-72278.rs diff --git a/src/test/ui/issues/issue-72278.stderr b/tests/ui/issues/issue-72278.stderr similarity index 100% rename from src/test/ui/issues/issue-72278.stderr rename to tests/ui/issues/issue-72278.stderr diff --git a/src/test/ui/issues/issue-7246.rs b/tests/ui/issues/issue-7246.rs similarity index 100% rename from src/test/ui/issues/issue-7246.rs rename to tests/ui/issues/issue-7246.rs diff --git a/src/test/ui/issues/issue-7246.stderr b/tests/ui/issues/issue-7246.stderr similarity index 100% rename from src/test/ui/issues/issue-7246.stderr rename to tests/ui/issues/issue-7246.stderr diff --git a/src/test/ui/issues/issue-7268.rs b/tests/ui/issues/issue-7268.rs similarity index 100% rename from src/test/ui/issues/issue-7268.rs rename to tests/ui/issues/issue-7268.rs diff --git a/src/test/ui/issues/issue-72839-error-overflow.rs b/tests/ui/issues/issue-72839-error-overflow.rs similarity index 100% rename from src/test/ui/issues/issue-72839-error-overflow.rs rename to tests/ui/issues/issue-72839-error-overflow.rs diff --git a/src/test/ui/issues/issue-72839-error-overflow.stderr b/tests/ui/issues/issue-72839-error-overflow.stderr similarity index 100% rename from src/test/ui/issues/issue-72839-error-overflow.stderr rename to tests/ui/issues/issue-72839-error-overflow.stderr diff --git a/src/test/ui/issues/issue-72933-match-stack-overflow.rs b/tests/ui/issues/issue-72933-match-stack-overflow.rs similarity index 100% rename from src/test/ui/issues/issue-72933-match-stack-overflow.rs rename to tests/ui/issues/issue-72933-match-stack-overflow.rs diff --git a/src/test/ui/issues/issue-73112.rs b/tests/ui/issues/issue-73112.rs similarity index 100% rename from src/test/ui/issues/issue-73112.rs rename to tests/ui/issues/issue-73112.rs diff --git a/src/test/ui/issues/issue-73112.stderr b/tests/ui/issues/issue-73112.stderr similarity index 100% rename from src/test/ui/issues/issue-73112.stderr rename to tests/ui/issues/issue-73112.stderr diff --git a/src/test/ui/issues/issue-73229.rs b/tests/ui/issues/issue-73229.rs similarity index 100% rename from src/test/ui/issues/issue-73229.rs rename to tests/ui/issues/issue-73229.rs diff --git a/src/test/ui/issues/issue-7344.rs b/tests/ui/issues/issue-7344.rs similarity index 100% rename from src/test/ui/issues/issue-7344.rs rename to tests/ui/issues/issue-7344.rs diff --git a/src/test/ui/issues/issue-7364.rs b/tests/ui/issues/issue-7364.rs similarity index 100% rename from src/test/ui/issues/issue-7364.rs rename to tests/ui/issues/issue-7364.rs diff --git a/src/test/ui/issues/issue-7364.stderr b/tests/ui/issues/issue-7364.stderr similarity index 100% rename from src/test/ui/issues/issue-7364.stderr rename to tests/ui/issues/issue-7364.stderr diff --git a/src/test/ui/issues/issue-74082.rs b/tests/ui/issues/issue-74082.rs similarity index 100% rename from src/test/ui/issues/issue-74082.rs rename to tests/ui/issues/issue-74082.rs diff --git a/src/test/ui/issues/issue-74082.stderr b/tests/ui/issues/issue-74082.stderr similarity index 100% rename from src/test/ui/issues/issue-74082.stderr rename to tests/ui/issues/issue-74082.stderr diff --git a/src/test/ui/issues/issue-74236/auxiliary/dep.rs b/tests/ui/issues/issue-74236/auxiliary/dep.rs similarity index 100% rename from src/test/ui/issues/issue-74236/auxiliary/dep.rs rename to tests/ui/issues/issue-74236/auxiliary/dep.rs diff --git a/src/test/ui/issues/issue-74236/main.rs b/tests/ui/issues/issue-74236/main.rs similarity index 100% rename from src/test/ui/issues/issue-74236/main.rs rename to tests/ui/issues/issue-74236/main.rs diff --git a/src/test/ui/issues/issue-74236/main.stderr b/tests/ui/issues/issue-74236/main.stderr similarity index 100% rename from src/test/ui/issues/issue-74236/main.stderr rename to tests/ui/issues/issue-74236/main.stderr diff --git a/src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs b/tests/ui/issues/issue-74564-if-expr-stack-overflow.rs similarity index 100% rename from src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs rename to tests/ui/issues/issue-74564-if-expr-stack-overflow.rs diff --git a/src/test/ui/issues/issue-7519-match-unit-in-arg.rs b/tests/ui/issues/issue-7519-match-unit-in-arg.rs similarity index 100% rename from src/test/ui/issues/issue-7519-match-unit-in-arg.rs rename to tests/ui/issues/issue-7519-match-unit-in-arg.rs diff --git a/src/test/ui/issues/issue-75283.rs b/tests/ui/issues/issue-75283.rs similarity index 100% rename from src/test/ui/issues/issue-75283.rs rename to tests/ui/issues/issue-75283.rs diff --git a/src/test/ui/issues/issue-75283.stderr b/tests/ui/issues/issue-75283.stderr similarity index 100% rename from src/test/ui/issues/issue-75283.stderr rename to tests/ui/issues/issue-75283.stderr diff --git a/src/test/ui/issues/issue-75307.rs b/tests/ui/issues/issue-75307.rs similarity index 100% rename from src/test/ui/issues/issue-75307.rs rename to tests/ui/issues/issue-75307.rs diff --git a/src/test/ui/issues/issue-75307.stderr b/tests/ui/issues/issue-75307.stderr similarity index 100% rename from src/test/ui/issues/issue-75307.stderr rename to tests/ui/issues/issue-75307.stderr diff --git a/src/test/ui/issues/issue-7563.rs b/tests/ui/issues/issue-7563.rs similarity index 100% rename from src/test/ui/issues/issue-7563.rs rename to tests/ui/issues/issue-7563.rs diff --git a/src/test/ui/issues/issue-75704.rs b/tests/ui/issues/issue-75704.rs similarity index 100% rename from src/test/ui/issues/issue-75704.rs rename to tests/ui/issues/issue-75704.rs diff --git a/src/test/ui/issues/issue-7575.rs b/tests/ui/issues/issue-7575.rs similarity index 100% rename from src/test/ui/issues/issue-7575.rs rename to tests/ui/issues/issue-7575.rs diff --git a/src/test/ui/issues/issue-75777.rs b/tests/ui/issues/issue-75777.rs similarity index 100% rename from src/test/ui/issues/issue-75777.rs rename to tests/ui/issues/issue-75777.rs diff --git a/src/test/ui/issues/issue-75777.stderr b/tests/ui/issues/issue-75777.stderr similarity index 100% rename from src/test/ui/issues/issue-75777.stderr rename to tests/ui/issues/issue-75777.stderr diff --git a/src/test/ui/issues/issue-76042.rs b/tests/ui/issues/issue-76042.rs similarity index 100% rename from src/test/ui/issues/issue-76042.rs rename to tests/ui/issues/issue-76042.rs diff --git a/src/test/ui/issues/issue-7607-1.rs b/tests/ui/issues/issue-7607-1.rs similarity index 100% rename from src/test/ui/issues/issue-7607-1.rs rename to tests/ui/issues/issue-7607-1.rs diff --git a/src/test/ui/issues/issue-7607-1.stderr b/tests/ui/issues/issue-7607-1.stderr similarity index 100% rename from src/test/ui/issues/issue-7607-1.stderr rename to tests/ui/issues/issue-7607-1.stderr diff --git a/src/test/ui/issues/issue-7607-2.rs b/tests/ui/issues/issue-7607-2.rs similarity index 100% rename from src/test/ui/issues/issue-7607-2.rs rename to tests/ui/issues/issue-7607-2.rs diff --git a/src/test/ui/issues/issue-76077-1.fixed b/tests/ui/issues/issue-76077-1.fixed similarity index 100% rename from src/test/ui/issues/issue-76077-1.fixed rename to tests/ui/issues/issue-76077-1.fixed diff --git a/src/test/ui/issues/issue-76077-1.rs b/tests/ui/issues/issue-76077-1.rs similarity index 100% rename from src/test/ui/issues/issue-76077-1.rs rename to tests/ui/issues/issue-76077-1.rs diff --git a/src/test/ui/issues/issue-76077-1.stderr b/tests/ui/issues/issue-76077-1.stderr similarity index 100% rename from src/test/ui/issues/issue-76077-1.stderr rename to tests/ui/issues/issue-76077-1.stderr diff --git a/src/test/ui/issues/issue-76077.rs b/tests/ui/issues/issue-76077.rs similarity index 100% rename from src/test/ui/issues/issue-76077.rs rename to tests/ui/issues/issue-76077.rs diff --git a/src/test/ui/issues/issue-76077.stderr b/tests/ui/issues/issue-76077.stderr similarity index 100% rename from src/test/ui/issues/issue-76077.stderr rename to tests/ui/issues/issue-76077.stderr diff --git a/src/test/ui/issues/issue-76191.rs b/tests/ui/issues/issue-76191.rs similarity index 100% rename from src/test/ui/issues/issue-76191.rs rename to tests/ui/issues/issue-76191.rs diff --git a/src/test/ui/issues/issue-76191.stderr b/tests/ui/issues/issue-76191.stderr similarity index 100% rename from src/test/ui/issues/issue-76191.stderr rename to tests/ui/issues/issue-76191.stderr diff --git a/src/test/ui/issues/issue-7660.rs b/tests/ui/issues/issue-7660.rs similarity index 100% rename from src/test/ui/issues/issue-7660.rs rename to tests/ui/issues/issue-7660.rs diff --git a/src/test/ui/issues/issue-7663.rs b/tests/ui/issues/issue-7663.rs similarity index 100% rename from src/test/ui/issues/issue-7663.rs rename to tests/ui/issues/issue-7663.rs diff --git a/src/test/ui/issues/issue-7673-cast-generically-implemented-trait.rs b/tests/ui/issues/issue-7673-cast-generically-implemented-trait.rs similarity index 100% rename from src/test/ui/issues/issue-7673-cast-generically-implemented-trait.rs rename to tests/ui/issues/issue-7673-cast-generically-implemented-trait.rs diff --git a/src/test/ui/issues/issue-77218/issue-77218-2.fixed b/tests/ui/issues/issue-77218/issue-77218-2.fixed similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218-2.fixed rename to tests/ui/issues/issue-77218/issue-77218-2.fixed diff --git a/src/test/ui/issues/issue-77218/issue-77218-2.rs b/tests/ui/issues/issue-77218/issue-77218-2.rs similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218-2.rs rename to tests/ui/issues/issue-77218/issue-77218-2.rs diff --git a/src/test/ui/issues/issue-77218/issue-77218-2.stderr b/tests/ui/issues/issue-77218/issue-77218-2.stderr similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218-2.stderr rename to tests/ui/issues/issue-77218/issue-77218-2.stderr diff --git a/src/test/ui/issues/issue-77218/issue-77218.fixed b/tests/ui/issues/issue-77218/issue-77218.fixed similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218.fixed rename to tests/ui/issues/issue-77218/issue-77218.fixed diff --git a/src/test/ui/issues/issue-77218/issue-77218.rs b/tests/ui/issues/issue-77218/issue-77218.rs similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218.rs rename to tests/ui/issues/issue-77218/issue-77218.rs diff --git a/src/test/ui/issues/issue-77218/issue-77218.stderr b/tests/ui/issues/issue-77218/issue-77218.stderr similarity index 100% rename from src/test/ui/issues/issue-77218/issue-77218.stderr rename to tests/ui/issues/issue-77218/issue-77218.stderr diff --git a/src/test/ui/issues/issue-7784.rs b/tests/ui/issues/issue-7784.rs similarity index 100% rename from src/test/ui/issues/issue-7784.rs rename to tests/ui/issues/issue-7784.rs diff --git a/src/test/ui/issues/issue-77919.rs b/tests/ui/issues/issue-77919.rs similarity index 100% rename from src/test/ui/issues/issue-77919.rs rename to tests/ui/issues/issue-77919.rs diff --git a/src/test/ui/issues/issue-77919.stderr b/tests/ui/issues/issue-77919.stderr similarity index 100% rename from src/test/ui/issues/issue-77919.stderr rename to tests/ui/issues/issue-77919.stderr diff --git a/src/test/ui/issues/issue-78115.rs b/tests/ui/issues/issue-78115.rs similarity index 100% rename from src/test/ui/issues/issue-78115.rs rename to tests/ui/issues/issue-78115.rs diff --git a/src/test/ui/issues/issue-7813.rs b/tests/ui/issues/issue-7813.rs similarity index 100% rename from src/test/ui/issues/issue-7813.rs rename to tests/ui/issues/issue-7813.rs diff --git a/src/test/ui/issues/issue-7813.stderr b/tests/ui/issues/issue-7813.stderr similarity index 100% rename from src/test/ui/issues/issue-7813.stderr rename to tests/ui/issues/issue-7813.stderr diff --git a/src/test/ui/issues/issue-78192.rs b/tests/ui/issues/issue-78192.rs similarity index 100% rename from src/test/ui/issues/issue-78192.rs rename to tests/ui/issues/issue-78192.rs diff --git a/src/test/ui/issues/issue-78622.rs b/tests/ui/issues/issue-78622.rs similarity index 100% rename from src/test/ui/issues/issue-78622.rs rename to tests/ui/issues/issue-78622.rs diff --git a/src/test/ui/issues/issue-78622.stderr b/tests/ui/issues/issue-78622.stderr similarity index 100% rename from src/test/ui/issues/issue-78622.stderr rename to tests/ui/issues/issue-78622.stderr diff --git a/src/test/ui/issues/issue-7867.rs b/tests/ui/issues/issue-7867.rs similarity index 100% rename from src/test/ui/issues/issue-7867.rs rename to tests/ui/issues/issue-7867.rs diff --git a/src/test/ui/issues/issue-7867.stderr b/tests/ui/issues/issue-7867.stderr similarity index 100% rename from src/test/ui/issues/issue-7867.stderr rename to tests/ui/issues/issue-7867.stderr diff --git a/src/test/ui/issues/issue-78957.rs b/tests/ui/issues/issue-78957.rs similarity index 100% rename from src/test/ui/issues/issue-78957.rs rename to tests/ui/issues/issue-78957.rs diff --git a/src/test/ui/issues/issue-78957.stderr b/tests/ui/issues/issue-78957.stderr similarity index 100% rename from src/test/ui/issues/issue-78957.stderr rename to tests/ui/issues/issue-78957.stderr diff --git a/src/test/ui/issues/issue-7899.rs b/tests/ui/issues/issue-7899.rs similarity index 100% rename from src/test/ui/issues/issue-7899.rs rename to tests/ui/issues/issue-7899.rs diff --git a/src/test/ui/issues/issue-7911.rs b/tests/ui/issues/issue-7911.rs similarity index 100% rename from src/test/ui/issues/issue-7911.rs rename to tests/ui/issues/issue-7911.rs diff --git a/src/test/ui/issues/issue-7950.rs b/tests/ui/issues/issue-7950.rs similarity index 100% rename from src/test/ui/issues/issue-7950.rs rename to tests/ui/issues/issue-7950.rs diff --git a/src/test/ui/issues/issue-7950.stderr b/tests/ui/issues/issue-7950.stderr similarity index 100% rename from src/test/ui/issues/issue-7950.stderr rename to tests/ui/issues/issue-7950.stderr diff --git a/src/test/ui/issues/issue-7970a.rs b/tests/ui/issues/issue-7970a.rs similarity index 100% rename from src/test/ui/issues/issue-7970a.rs rename to tests/ui/issues/issue-7970a.rs diff --git a/src/test/ui/issues/issue-7970a.stderr b/tests/ui/issues/issue-7970a.stderr similarity index 100% rename from src/test/ui/issues/issue-7970a.stderr rename to tests/ui/issues/issue-7970a.stderr diff --git a/src/test/ui/issues/issue-8044.rs b/tests/ui/issues/issue-8044.rs similarity index 100% rename from src/test/ui/issues/issue-8044.rs rename to tests/ui/issues/issue-8044.rs diff --git a/src/test/ui/issues/issue-80607.rs b/tests/ui/issues/issue-80607.rs similarity index 100% rename from src/test/ui/issues/issue-80607.rs rename to tests/ui/issues/issue-80607.rs diff --git a/src/test/ui/issues/issue-80607.stderr b/tests/ui/issues/issue-80607.stderr similarity index 100% rename from src/test/ui/issues/issue-80607.stderr rename to tests/ui/issues/issue-80607.stderr diff --git a/src/test/ui/issues/issue-81584.fixed b/tests/ui/issues/issue-81584.fixed similarity index 100% rename from src/test/ui/issues/issue-81584.fixed rename to tests/ui/issues/issue-81584.fixed diff --git a/src/test/ui/issues/issue-81584.rs b/tests/ui/issues/issue-81584.rs similarity index 100% rename from src/test/ui/issues/issue-81584.rs rename to tests/ui/issues/issue-81584.rs diff --git a/src/test/ui/issues/issue-81584.stderr b/tests/ui/issues/issue-81584.stderr similarity index 100% rename from src/test/ui/issues/issue-81584.stderr rename to tests/ui/issues/issue-81584.stderr diff --git a/src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs b/tests/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs similarity index 100% rename from src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs rename to tests/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs diff --git a/src/test/ui/issues/issue-81918.rs b/tests/ui/issues/issue-81918.rs similarity index 100% rename from src/test/ui/issues/issue-81918.rs rename to tests/ui/issues/issue-81918.rs diff --git a/src/test/ui/issues/issue-8248.rs b/tests/ui/issues/issue-8248.rs similarity index 100% rename from src/test/ui/issues/issue-8248.rs rename to tests/ui/issues/issue-8248.rs diff --git a/src/test/ui/issues/issue-8249.rs b/tests/ui/issues/issue-8249.rs similarity index 100% rename from src/test/ui/issues/issue-8249.rs rename to tests/ui/issues/issue-8249.rs diff --git a/src/test/ui/issues/issue-8259.rs b/tests/ui/issues/issue-8259.rs similarity index 100% rename from src/test/ui/issues/issue-8259.rs rename to tests/ui/issues/issue-8259.rs diff --git a/src/test/ui/issues/issue-82833-slice-miscompile.rs b/tests/ui/issues/issue-82833-slice-miscompile.rs similarity index 100% rename from src/test/ui/issues/issue-82833-slice-miscompile.rs rename to tests/ui/issues/issue-82833-slice-miscompile.rs diff --git a/src/test/ui/issues/issue-83048.rs b/tests/ui/issues/issue-83048.rs similarity index 100% rename from src/test/ui/issues/issue-83048.rs rename to tests/ui/issues/issue-83048.rs diff --git a/src/test/ui/issues/issue-83048.stderr b/tests/ui/issues/issue-83048.stderr similarity index 100% rename from src/test/ui/issues/issue-83048.stderr rename to tests/ui/issues/issue-83048.stderr diff --git a/src/test/ui/issues/issue-83190.rs b/tests/ui/issues/issue-83190.rs similarity index 100% rename from src/test/ui/issues/issue-83190.rs rename to tests/ui/issues/issue-83190.rs diff --git a/src/test/ui/issues/issue-8391.rs b/tests/ui/issues/issue-8391.rs similarity index 100% rename from src/test/ui/issues/issue-8391.rs rename to tests/ui/issues/issue-8391.rs diff --git a/src/test/ui/issues/issue-83924.fixed b/tests/ui/issues/issue-83924.fixed similarity index 100% rename from src/test/ui/issues/issue-83924.fixed rename to tests/ui/issues/issue-83924.fixed diff --git a/src/test/ui/issues/issue-83924.rs b/tests/ui/issues/issue-83924.rs similarity index 100% rename from src/test/ui/issues/issue-83924.rs rename to tests/ui/issues/issue-83924.rs diff --git a/src/test/ui/issues/issue-83924.stderr b/tests/ui/issues/issue-83924.stderr similarity index 100% rename from src/test/ui/issues/issue-83924.stderr rename to tests/ui/issues/issue-83924.stderr diff --git a/src/test/ui/issues/issue-8398.rs b/tests/ui/issues/issue-8398.rs similarity index 100% rename from src/test/ui/issues/issue-8398.rs rename to tests/ui/issues/issue-8398.rs diff --git a/src/test/ui/issues/issue-8401.rs b/tests/ui/issues/issue-8401.rs similarity index 100% rename from src/test/ui/issues/issue-8401.rs rename to tests/ui/issues/issue-8401.rs diff --git a/src/test/ui/issues/issue-8498.rs b/tests/ui/issues/issue-8498.rs similarity index 100% rename from src/test/ui/issues/issue-8498.rs rename to tests/ui/issues/issue-8498.rs diff --git a/src/test/ui/issues/issue-8506.rs b/tests/ui/issues/issue-8506.rs similarity index 100% rename from src/test/ui/issues/issue-8506.rs rename to tests/ui/issues/issue-8506.rs diff --git a/src/test/ui/issues/issue-8521.rs b/tests/ui/issues/issue-8521.rs similarity index 100% rename from src/test/ui/issues/issue-8521.rs rename to tests/ui/issues/issue-8521.rs diff --git a/src/test/ui/issues/issue-85461.rs b/tests/ui/issues/issue-85461.rs similarity index 100% rename from src/test/ui/issues/issue-85461.rs rename to tests/ui/issues/issue-85461.rs diff --git a/src/test/ui/issues/issue-8578.rs b/tests/ui/issues/issue-8578.rs similarity index 100% rename from src/test/ui/issues/issue-8578.rs rename to tests/ui/issues/issue-8578.rs diff --git a/src/test/ui/issues/issue-86756.rs b/tests/ui/issues/issue-86756.rs similarity index 100% rename from src/test/ui/issues/issue-86756.rs rename to tests/ui/issues/issue-86756.rs diff --git a/src/test/ui/issues/issue-86756.stderr b/tests/ui/issues/issue-86756.stderr similarity index 100% rename from src/test/ui/issues/issue-86756.stderr rename to tests/ui/issues/issue-86756.stderr diff --git a/src/test/ui/issues/issue-868.rs b/tests/ui/issues/issue-868.rs similarity index 100% rename from src/test/ui/issues/issue-868.rs rename to tests/ui/issues/issue-868.rs diff --git a/src/test/ui/issues/issue-87199.rs b/tests/ui/issues/issue-87199.rs similarity index 100% rename from src/test/ui/issues/issue-87199.rs rename to tests/ui/issues/issue-87199.rs diff --git a/src/test/ui/issues/issue-87199.stderr b/tests/ui/issues/issue-87199.stderr similarity index 100% rename from src/test/ui/issues/issue-87199.stderr rename to tests/ui/issues/issue-87199.stderr diff --git a/src/test/ui/issues/issue-8727.polonius.stderr b/tests/ui/issues/issue-8727.polonius.stderr similarity index 100% rename from src/test/ui/issues/issue-8727.polonius.stderr rename to tests/ui/issues/issue-8727.polonius.stderr diff --git a/src/test/ui/issues/issue-8727.rs b/tests/ui/issues/issue-8727.rs similarity index 100% rename from src/test/ui/issues/issue-8727.rs rename to tests/ui/issues/issue-8727.rs diff --git a/src/test/ui/issues/issue-8727.stderr b/tests/ui/issues/issue-8727.stderr similarity index 100% rename from src/test/ui/issues/issue-8727.stderr rename to tests/ui/issues/issue-8727.stderr diff --git a/src/test/ui/issues/issue-87490.rs b/tests/ui/issues/issue-87490.rs similarity index 100% rename from src/test/ui/issues/issue-87490.rs rename to tests/ui/issues/issue-87490.rs diff --git a/src/test/ui/issues/issue-87490.stderr b/tests/ui/issues/issue-87490.stderr similarity index 100% rename from src/test/ui/issues/issue-87490.stderr rename to tests/ui/issues/issue-87490.stderr diff --git a/src/test/ui/issues/issue-8761.rs b/tests/ui/issues/issue-8761.rs similarity index 100% rename from src/test/ui/issues/issue-8761.rs rename to tests/ui/issues/issue-8761.rs diff --git a/src/test/ui/issues/issue-8761.stderr b/tests/ui/issues/issue-8761.stderr similarity index 100% rename from src/test/ui/issues/issue-8761.stderr rename to tests/ui/issues/issue-8761.stderr diff --git a/src/test/ui/issues/issue-8767.rs b/tests/ui/issues/issue-8767.rs similarity index 100% rename from src/test/ui/issues/issue-8767.rs rename to tests/ui/issues/issue-8767.rs diff --git a/src/test/ui/issues/issue-8767.stderr b/tests/ui/issues/issue-8767.stderr similarity index 100% rename from src/test/ui/issues/issue-8767.stderr rename to tests/ui/issues/issue-8767.stderr diff --git a/src/test/ui/issues/issue-87707.rs b/tests/ui/issues/issue-87707.rs similarity index 100% rename from src/test/ui/issues/issue-87707.rs rename to tests/ui/issues/issue-87707.rs diff --git a/src/test/ui/issues/issue-87707.run.stderr b/tests/ui/issues/issue-87707.run.stderr similarity index 100% rename from src/test/ui/issues/issue-87707.run.stderr rename to tests/ui/issues/issue-87707.run.stderr diff --git a/src/test/ui/issues/issue-8783.rs b/tests/ui/issues/issue-8783.rs similarity index 100% rename from src/test/ui/issues/issue-8783.rs rename to tests/ui/issues/issue-8783.rs diff --git a/src/test/ui/issues/issue-88150.rs b/tests/ui/issues/issue-88150.rs similarity index 100% rename from src/test/ui/issues/issue-88150.rs rename to tests/ui/issues/issue-88150.rs diff --git a/src/test/ui/issues/issue-8860.rs b/tests/ui/issues/issue-8860.rs similarity index 100% rename from src/test/ui/issues/issue-8860.rs rename to tests/ui/issues/issue-8860.rs diff --git a/src/test/ui/issues/issue-8898.rs b/tests/ui/issues/issue-8898.rs similarity index 100% rename from src/test/ui/issues/issue-8898.rs rename to tests/ui/issues/issue-8898.rs diff --git a/src/test/ui/issues/issue-9047.rs b/tests/ui/issues/issue-9047.rs similarity index 100% rename from src/test/ui/issues/issue-9047.rs rename to tests/ui/issues/issue-9047.rs diff --git a/src/test/ui/issues/issue-9110.rs b/tests/ui/issues/issue-9110.rs similarity index 100% rename from src/test/ui/issues/issue-9110.rs rename to tests/ui/issues/issue-9110.rs diff --git a/src/test/ui/issues/issue-9123.rs b/tests/ui/issues/issue-9123.rs similarity index 100% rename from src/test/ui/issues/issue-9123.rs rename to tests/ui/issues/issue-9123.rs diff --git a/src/test/ui/issues/issue-9129.rs b/tests/ui/issues/issue-9129.rs similarity index 100% rename from src/test/ui/issues/issue-9129.rs rename to tests/ui/issues/issue-9129.rs diff --git a/src/test/ui/issues/issue-91489.rs b/tests/ui/issues/issue-91489.rs similarity index 100% rename from src/test/ui/issues/issue-91489.rs rename to tests/ui/issues/issue-91489.rs diff --git a/src/test/ui/issues/issue-9155.rs b/tests/ui/issues/issue-9155.rs similarity index 100% rename from src/test/ui/issues/issue-9155.rs rename to tests/ui/issues/issue-9155.rs diff --git a/src/test/ui/issues/issue-9188.rs b/tests/ui/issues/issue-9188.rs similarity index 100% rename from src/test/ui/issues/issue-9188.rs rename to tests/ui/issues/issue-9188.rs diff --git a/src/test/ui/issues/issue-9243.rs b/tests/ui/issues/issue-9243.rs similarity index 100% rename from src/test/ui/issues/issue-9243.rs rename to tests/ui/issues/issue-9243.rs diff --git a/src/test/ui/issues/issue-9249.rs b/tests/ui/issues/issue-9249.rs similarity index 100% rename from src/test/ui/issues/issue-9249.rs rename to tests/ui/issues/issue-9249.rs diff --git a/src/test/ui/issues/issue-9259.rs b/tests/ui/issues/issue-9259.rs similarity index 100% rename from src/test/ui/issues/issue-9259.rs rename to tests/ui/issues/issue-9259.rs diff --git a/src/test/ui/issues/issue-9382.rs b/tests/ui/issues/issue-9382.rs similarity index 100% rename from src/test/ui/issues/issue-9382.rs rename to tests/ui/issues/issue-9382.rs diff --git a/src/test/ui/issues/issue-9446.rs b/tests/ui/issues/issue-9446.rs similarity index 100% rename from src/test/ui/issues/issue-9446.rs rename to tests/ui/issues/issue-9446.rs diff --git a/src/test/ui/issues/issue-948.rs b/tests/ui/issues/issue-948.rs similarity index 100% rename from src/test/ui/issues/issue-948.rs rename to tests/ui/issues/issue-948.rs diff --git a/src/test/ui/issues/issue-9575.rs b/tests/ui/issues/issue-9575.rs similarity index 100% rename from src/test/ui/issues/issue-9575.rs rename to tests/ui/issues/issue-9575.rs diff --git a/src/test/ui/issues/issue-9575.stderr b/tests/ui/issues/issue-9575.stderr similarity index 100% rename from src/test/ui/issues/issue-9575.stderr rename to tests/ui/issues/issue-9575.stderr diff --git a/src/test/ui/issues/issue-9719.rs b/tests/ui/issues/issue-9719.rs similarity index 100% rename from src/test/ui/issues/issue-9719.rs rename to tests/ui/issues/issue-9719.rs diff --git a/src/test/ui/issues/issue-9725.rs b/tests/ui/issues/issue-9725.rs similarity index 100% rename from src/test/ui/issues/issue-9725.rs rename to tests/ui/issues/issue-9725.rs diff --git a/src/test/ui/issues/issue-9725.stderr b/tests/ui/issues/issue-9725.stderr similarity index 100% rename from src/test/ui/issues/issue-9725.stderr rename to tests/ui/issues/issue-9725.stderr diff --git a/src/test/ui/issues/issue-9737.rs b/tests/ui/issues/issue-9737.rs similarity index 100% rename from src/test/ui/issues/issue-9737.rs rename to tests/ui/issues/issue-9737.rs diff --git a/src/test/ui/issues/issue-979.rs b/tests/ui/issues/issue-979.rs similarity index 100% rename from src/test/ui/issues/issue-979.rs rename to tests/ui/issues/issue-979.rs diff --git a/src/test/ui/issues/issue-9814.rs b/tests/ui/issues/issue-9814.rs similarity index 100% rename from src/test/ui/issues/issue-9814.rs rename to tests/ui/issues/issue-9814.rs diff --git a/src/test/ui/issues/issue-9814.stderr b/tests/ui/issues/issue-9814.stderr similarity index 100% rename from src/test/ui/issues/issue-9814.stderr rename to tests/ui/issues/issue-9814.stderr diff --git a/src/test/ui/issues/issue-98299.rs b/tests/ui/issues/issue-98299.rs similarity index 100% rename from src/test/ui/issues/issue-98299.rs rename to tests/ui/issues/issue-98299.rs diff --git a/src/test/ui/issues/issue-98299.stderr b/tests/ui/issues/issue-98299.stderr similarity index 100% rename from src/test/ui/issues/issue-98299.stderr rename to tests/ui/issues/issue-98299.stderr diff --git a/src/test/ui/issues/issue-9837.rs b/tests/ui/issues/issue-9837.rs similarity index 100% rename from src/test/ui/issues/issue-9837.rs rename to tests/ui/issues/issue-9837.rs diff --git a/src/test/ui/issues/issue-9906.rs b/tests/ui/issues/issue-9906.rs similarity index 100% rename from src/test/ui/issues/issue-9906.rs rename to tests/ui/issues/issue-9906.rs diff --git a/src/test/ui/issues/issue-9918.rs b/tests/ui/issues/issue-9918.rs similarity index 100% rename from src/test/ui/issues/issue-9918.rs rename to tests/ui/issues/issue-9918.rs diff --git a/src/test/ui/issues/issue-9942.rs b/tests/ui/issues/issue-9942.rs similarity index 100% rename from src/test/ui/issues/issue-9942.rs rename to tests/ui/issues/issue-9942.rs diff --git a/src/test/ui/issues/issue-9951.rs b/tests/ui/issues/issue-9951.rs similarity index 100% rename from src/test/ui/issues/issue-9951.rs rename to tests/ui/issues/issue-9951.rs diff --git a/src/test/ui/issues/issue-9968.rs b/tests/ui/issues/issue-9968.rs similarity index 100% rename from src/test/ui/issues/issue-9968.rs rename to tests/ui/issues/issue-9968.rs diff --git a/src/test/ui/issues/issue-99838.rs b/tests/ui/issues/issue-99838.rs similarity index 100% rename from src/test/ui/issues/issue-99838.rs rename to tests/ui/issues/issue-99838.rs diff --git a/src/test/ui/issues/issue-pr29383.rs b/tests/ui/issues/issue-pr29383.rs similarity index 100% rename from src/test/ui/issues/issue-pr29383.rs rename to tests/ui/issues/issue-pr29383.rs diff --git a/src/test/ui/issues/issue-pr29383.stderr b/tests/ui/issues/issue-pr29383.stderr similarity index 100% rename from src/test/ui/issues/issue-pr29383.stderr rename to tests/ui/issues/issue-pr29383.stderr diff --git a/src/test/ui/item-name-overload.rs b/tests/ui/item-name-overload.rs similarity index 100% rename from src/test/ui/item-name-overload.rs rename to tests/ui/item-name-overload.rs diff --git a/src/test/ui/iterators/array-of-ranges.rs b/tests/ui/iterators/array-of-ranges.rs similarity index 100% rename from src/test/ui/iterators/array-of-ranges.rs rename to tests/ui/iterators/array-of-ranges.rs diff --git a/src/test/ui/iterators/array.rs b/tests/ui/iterators/array.rs similarity index 100% rename from src/test/ui/iterators/array.rs rename to tests/ui/iterators/array.rs diff --git a/src/test/ui/iterators/bound.rs b/tests/ui/iterators/bound.rs similarity index 100% rename from src/test/ui/iterators/bound.rs rename to tests/ui/iterators/bound.rs diff --git a/src/test/ui/iterators/bound.stderr b/tests/ui/iterators/bound.stderr similarity index 100% rename from src/test/ui/iterators/bound.stderr rename to tests/ui/iterators/bound.stderr diff --git a/src/test/ui/iterators/collect-into-array.rs b/tests/ui/iterators/collect-into-array.rs similarity index 100% rename from src/test/ui/iterators/collect-into-array.rs rename to tests/ui/iterators/collect-into-array.rs diff --git a/src/test/ui/iterators/collect-into-array.stderr b/tests/ui/iterators/collect-into-array.stderr similarity index 100% rename from src/test/ui/iterators/collect-into-array.stderr rename to tests/ui/iterators/collect-into-array.stderr diff --git a/src/test/ui/iterators/collect-into-slice.rs b/tests/ui/iterators/collect-into-slice.rs similarity index 100% rename from src/test/ui/iterators/collect-into-slice.rs rename to tests/ui/iterators/collect-into-slice.rs diff --git a/src/test/ui/iterators/collect-into-slice.stderr b/tests/ui/iterators/collect-into-slice.stderr similarity index 100% rename from src/test/ui/iterators/collect-into-slice.stderr rename to tests/ui/iterators/collect-into-slice.stderr diff --git a/src/test/ui/iterators/integral.rs b/tests/ui/iterators/integral.rs similarity index 100% rename from src/test/ui/iterators/integral.rs rename to tests/ui/iterators/integral.rs diff --git a/src/test/ui/iterators/integral.stderr b/tests/ui/iterators/integral.stderr similarity index 100% rename from src/test/ui/iterators/integral.stderr rename to tests/ui/iterators/integral.stderr diff --git a/src/test/ui/iterators/into-iter-on-arrays-2018.rs b/tests/ui/iterators/into-iter-on-arrays-2018.rs similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-2018.rs rename to tests/ui/iterators/into-iter-on-arrays-2018.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-2018.stderr b/tests/ui/iterators/into-iter-on-arrays-2018.stderr similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-2018.stderr rename to tests/ui/iterators/into-iter-on-arrays-2018.stderr diff --git a/src/test/ui/iterators/into-iter-on-arrays-2021.rs b/tests/ui/iterators/into-iter-on-arrays-2021.rs similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-2021.rs rename to tests/ui/iterators/into-iter-on-arrays-2021.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.fixed b/tests/ui/iterators/into-iter-on-arrays-lint.fixed similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-lint.fixed rename to tests/ui/iterators/into-iter-on-arrays-lint.fixed diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.rs b/tests/ui/iterators/into-iter-on-arrays-lint.rs similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-lint.rs rename to tests/ui/iterators/into-iter-on-arrays-lint.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.stderr b/tests/ui/iterators/into-iter-on-arrays-lint.stderr similarity index 100% rename from src/test/ui/iterators/into-iter-on-arrays-lint.stderr rename to tests/ui/iterators/into-iter-on-arrays-lint.stderr diff --git a/src/test/ui/iterators/into-iterator-type-inference-shift.rs b/tests/ui/iterators/into-iterator-type-inference-shift.rs similarity index 100% rename from src/test/ui/iterators/into-iterator-type-inference-shift.rs rename to tests/ui/iterators/into-iterator-type-inference-shift.rs diff --git a/src/test/ui/iterators/invalid-iterator-chain.rs b/tests/ui/iterators/invalid-iterator-chain.rs similarity index 100% rename from src/test/ui/iterators/invalid-iterator-chain.rs rename to tests/ui/iterators/invalid-iterator-chain.rs diff --git a/src/test/ui/iterators/invalid-iterator-chain.stderr b/tests/ui/iterators/invalid-iterator-chain.stderr similarity index 100% rename from src/test/ui/iterators/invalid-iterator-chain.stderr rename to tests/ui/iterators/invalid-iterator-chain.stderr diff --git a/src/test/ui/iterators/issue-28098.rs b/tests/ui/iterators/issue-28098.rs similarity index 100% rename from src/test/ui/iterators/issue-28098.rs rename to tests/ui/iterators/issue-28098.rs diff --git a/src/test/ui/iterators/issue-28098.stderr b/tests/ui/iterators/issue-28098.stderr similarity index 100% rename from src/test/ui/iterators/issue-28098.stderr rename to tests/ui/iterators/issue-28098.stderr diff --git a/src/test/ui/iterators/issue-58952-filter-type-length.rs b/tests/ui/iterators/issue-58952-filter-type-length.rs similarity index 100% rename from src/test/ui/iterators/issue-58952-filter-type-length.rs rename to tests/ui/iterators/issue-58952-filter-type-length.rs diff --git a/src/test/ui/iterators/iter-cloned-type-inference.rs b/tests/ui/iterators/iter-cloned-type-inference.rs similarity index 100% rename from src/test/ui/iterators/iter-cloned-type-inference.rs rename to tests/ui/iterators/iter-cloned-type-inference.rs diff --git a/src/test/ui/iterators/iter-count-overflow-debug.rs b/tests/ui/iterators/iter-count-overflow-debug.rs similarity index 100% rename from src/test/ui/iterators/iter-count-overflow-debug.rs rename to tests/ui/iterators/iter-count-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-count-overflow-ndebug.rs b/tests/ui/iterators/iter-count-overflow-ndebug.rs similarity index 100% rename from src/test/ui/iterators/iter-count-overflow-ndebug.rs rename to tests/ui/iterators/iter-count-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-map-fold-type-length.rs b/tests/ui/iterators/iter-map-fold-type-length.rs similarity index 100% rename from src/test/ui/iterators/iter-map-fold-type-length.rs rename to tests/ui/iterators/iter-map-fold-type-length.rs diff --git a/src/test/ui/iterators/iter-position-overflow-debug.rs b/tests/ui/iterators/iter-position-overflow-debug.rs similarity index 100% rename from src/test/ui/iterators/iter-position-overflow-debug.rs rename to tests/ui/iterators/iter-position-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-position-overflow-ndebug.rs b/tests/ui/iterators/iter-position-overflow-ndebug.rs similarity index 100% rename from src/test/ui/iterators/iter-position-overflow-ndebug.rs rename to tests/ui/iterators/iter-position-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-range.rs b/tests/ui/iterators/iter-range.rs similarity index 100% rename from src/test/ui/iterators/iter-range.rs rename to tests/ui/iterators/iter-range.rs diff --git a/src/test/ui/iterators/iter-step-overflow-debug.rs b/tests/ui/iterators/iter-step-overflow-debug.rs similarity index 100% rename from src/test/ui/iterators/iter-step-overflow-debug.rs rename to tests/ui/iterators/iter-step-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-step-overflow-ndebug.rs b/tests/ui/iterators/iter-step-overflow-ndebug.rs similarity index 100% rename from src/test/ui/iterators/iter-step-overflow-ndebug.rs rename to tests/ui/iterators/iter-step-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-debug.rs b/tests/ui/iterators/iter-sum-overflow-debug.rs similarity index 100% rename from src/test/ui/iterators/iter-sum-overflow-debug.rs rename to tests/ui/iterators/iter-sum-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-ndebug.rs b/tests/ui/iterators/iter-sum-overflow-ndebug.rs similarity index 100% rename from src/test/ui/iterators/iter-sum-overflow-ndebug.rs rename to tests/ui/iterators/iter-sum-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs b/tests/ui/iterators/iter-sum-overflow-overflow-checks.rs similarity index 100% rename from src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs rename to tests/ui/iterators/iter-sum-overflow-overflow-checks.rs diff --git a/src/test/ui/iterators/ranges.rs b/tests/ui/iterators/ranges.rs similarity index 100% rename from src/test/ui/iterators/ranges.rs rename to tests/ui/iterators/ranges.rs diff --git a/src/test/ui/iterators/ranges.stderr b/tests/ui/iterators/ranges.stderr similarity index 100% rename from src/test/ui/iterators/ranges.stderr rename to tests/ui/iterators/ranges.stderr diff --git a/src/test/ui/iterators/rsplit-clone.rs b/tests/ui/iterators/rsplit-clone.rs similarity index 100% rename from src/test/ui/iterators/rsplit-clone.rs rename to tests/ui/iterators/rsplit-clone.rs diff --git a/src/test/ui/iterators/skip-count-overflow.rs b/tests/ui/iterators/skip-count-overflow.rs similarity index 100% rename from src/test/ui/iterators/skip-count-overflow.rs rename to tests/ui/iterators/skip-count-overflow.rs diff --git a/src/test/ui/iterators/string.rs b/tests/ui/iterators/string.rs similarity index 100% rename from src/test/ui/iterators/string.rs rename to tests/ui/iterators/string.rs diff --git a/src/test/ui/iterators/string.stderr b/tests/ui/iterators/string.stderr similarity index 100% rename from src/test/ui/iterators/string.stderr rename to tests/ui/iterators/string.stderr diff --git a/src/test/ui/iterators/vec-on-unimplemented.rs b/tests/ui/iterators/vec-on-unimplemented.rs similarity index 100% rename from src/test/ui/iterators/vec-on-unimplemented.rs rename to tests/ui/iterators/vec-on-unimplemented.rs diff --git a/src/test/ui/iterators/vec-on-unimplemented.stderr b/tests/ui/iterators/vec-on-unimplemented.stderr similarity index 100% rename from src/test/ui/iterators/vec-on-unimplemented.stderr rename to tests/ui/iterators/vec-on-unimplemented.stderr diff --git a/src/test/ui/json/json-and-color.rs b/tests/ui/json/json-and-color.rs similarity index 100% rename from src/test/ui/json/json-and-color.rs rename to tests/ui/json/json-and-color.rs diff --git a/src/test/ui/json/json-and-color.stderr b/tests/ui/json/json-and-color.stderr similarity index 100% rename from src/test/ui/json/json-and-color.stderr rename to tests/ui/json/json-and-color.stderr diff --git a/src/test/ui/json/json-and-error-format.rs b/tests/ui/json/json-and-error-format.rs similarity index 100% rename from src/test/ui/json/json-and-error-format.rs rename to tests/ui/json/json-and-error-format.rs diff --git a/src/test/ui/json/json-and-error-format.stderr b/tests/ui/json/json-and-error-format.stderr similarity index 100% rename from src/test/ui/json/json-and-error-format.stderr rename to tests/ui/json/json-and-error-format.stderr diff --git a/src/test/ui/json/json-bom-plus-crlf-multifile-aux.rs b/tests/ui/json/json-bom-plus-crlf-multifile-aux.rs similarity index 100% rename from src/test/ui/json/json-bom-plus-crlf-multifile-aux.rs rename to tests/ui/json/json-bom-plus-crlf-multifile-aux.rs diff --git a/src/test/ui/json/json-bom-plus-crlf-multifile.rs b/tests/ui/json/json-bom-plus-crlf-multifile.rs similarity index 100% rename from src/test/ui/json/json-bom-plus-crlf-multifile.rs rename to tests/ui/json/json-bom-plus-crlf-multifile.rs diff --git a/src/test/ui/json/json-bom-plus-crlf-multifile.stderr b/tests/ui/json/json-bom-plus-crlf-multifile.stderr similarity index 100% rename from src/test/ui/json/json-bom-plus-crlf-multifile.stderr rename to tests/ui/json/json-bom-plus-crlf-multifile.stderr diff --git a/src/test/ui/json/json-bom-plus-crlf.rs b/tests/ui/json/json-bom-plus-crlf.rs similarity index 100% rename from src/test/ui/json/json-bom-plus-crlf.rs rename to tests/ui/json/json-bom-plus-crlf.rs diff --git a/src/test/ui/json/json-bom-plus-crlf.stderr b/tests/ui/json/json-bom-plus-crlf.stderr similarity index 100% rename from src/test/ui/json/json-bom-plus-crlf.stderr rename to tests/ui/json/json-bom-plus-crlf.stderr diff --git a/src/test/ui/json/json-invalid.rs b/tests/ui/json/json-invalid.rs similarity index 100% rename from src/test/ui/json/json-invalid.rs rename to tests/ui/json/json-invalid.rs diff --git a/src/test/ui/json/json-invalid.stderr b/tests/ui/json/json-invalid.stderr similarity index 100% rename from src/test/ui/json/json-invalid.stderr rename to tests/ui/json/json-invalid.stderr diff --git a/src/test/ui/json/json-multiple.polonius.stderr b/tests/ui/json/json-multiple.polonius.stderr similarity index 100% rename from src/test/ui/json/json-multiple.polonius.stderr rename to tests/ui/json/json-multiple.polonius.stderr diff --git a/src/test/ui/json/json-multiple.rs b/tests/ui/json/json-multiple.rs similarity index 100% rename from src/test/ui/json/json-multiple.rs rename to tests/ui/json/json-multiple.rs diff --git a/src/test/ui/json/json-multiple.stderr b/tests/ui/json/json-multiple.stderr similarity index 100% rename from src/test/ui/json/json-multiple.stderr rename to tests/ui/json/json-multiple.stderr diff --git a/src/test/ui/json/json-options.polonius.stderr b/tests/ui/json/json-options.polonius.stderr similarity index 100% rename from src/test/ui/json/json-options.polonius.stderr rename to tests/ui/json/json-options.polonius.stderr diff --git a/src/test/ui/json/json-options.rs b/tests/ui/json/json-options.rs similarity index 100% rename from src/test/ui/json/json-options.rs rename to tests/ui/json/json-options.rs diff --git a/src/test/ui/json/json-options.stderr b/tests/ui/json/json-options.stderr similarity index 100% rename from src/test/ui/json/json-options.stderr rename to tests/ui/json/json-options.stderr diff --git a/src/test/ui/json/json-short.rs b/tests/ui/json/json-short.rs similarity index 100% rename from src/test/ui/json/json-short.rs rename to tests/ui/json/json-short.rs diff --git a/src/test/ui/json/json-short.stderr b/tests/ui/json/json-short.stderr similarity index 100% rename from src/test/ui/json/json-short.stderr rename to tests/ui/json/json-short.stderr diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-expr.rs b/tests/ui/keyword/extern/keyword-extern-as-identifier-expr.rs similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-expr.rs rename to tests/ui/keyword/extern/keyword-extern-as-identifier-expr.rs diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-expr.stderr b/tests/ui/keyword/extern/keyword-extern-as-identifier-expr.stderr similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-expr.stderr rename to tests/ui/keyword/extern/keyword-extern-as-identifier-expr.stderr diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.rs b/tests/ui/keyword/extern/keyword-extern-as-identifier-pat.rs similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.rs rename to tests/ui/keyword/extern/keyword-extern-as-identifier-pat.rs diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr b/tests/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr rename to tests/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-type.rs b/tests/ui/keyword/extern/keyword-extern-as-identifier-type.rs similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-type.rs rename to tests/ui/keyword/extern/keyword-extern-as-identifier-type.rs diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-type.stderr b/tests/ui/keyword/extern/keyword-extern-as-identifier-type.stderr similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-type.stderr rename to tests/ui/keyword/extern/keyword-extern-as-identifier-type.stderr diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.rs b/tests/ui/keyword/extern/keyword-extern-as-identifier-use.rs similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-use.rs rename to tests/ui/keyword/extern/keyword-extern-as-identifier-use.rs diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr b/tests/ui/keyword/extern/keyword-extern-as-identifier-use.stderr similarity index 100% rename from src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr rename to tests/ui/keyword/extern/keyword-extern-as-identifier-use.stderr diff --git a/src/test/ui/keyword/keyword-false-as-identifier.rs b/tests/ui/keyword/keyword-false-as-identifier.rs similarity index 100% rename from src/test/ui/keyword/keyword-false-as-identifier.rs rename to tests/ui/keyword/keyword-false-as-identifier.rs diff --git a/src/test/ui/keyword/keyword-false-as-identifier.stderr b/tests/ui/keyword/keyword-false-as-identifier.stderr similarity index 100% rename from src/test/ui/keyword/keyword-false-as-identifier.stderr rename to tests/ui/keyword/keyword-false-as-identifier.stderr diff --git a/src/test/ui/keyword/keyword-self-as-identifier.rs b/tests/ui/keyword/keyword-self-as-identifier.rs similarity index 100% rename from src/test/ui/keyword/keyword-self-as-identifier.rs rename to tests/ui/keyword/keyword-self-as-identifier.rs diff --git a/src/test/ui/keyword/keyword-self-as-identifier.stderr b/tests/ui/keyword/keyword-self-as-identifier.stderr similarity index 100% rename from src/test/ui/keyword/keyword-self-as-identifier.stderr rename to tests/ui/keyword/keyword-self-as-identifier.stderr diff --git a/src/test/ui/keyword/keyword-self-as-type-param.rs b/tests/ui/keyword/keyword-self-as-type-param.rs similarity index 100% rename from src/test/ui/keyword/keyword-self-as-type-param.rs rename to tests/ui/keyword/keyword-self-as-type-param.rs diff --git a/src/test/ui/keyword/keyword-self-as-type-param.stderr b/tests/ui/keyword/keyword-self-as-type-param.stderr similarity index 100% rename from src/test/ui/keyword/keyword-self-as-type-param.stderr rename to tests/ui/keyword/keyword-self-as-type-param.stderr diff --git a/src/test/ui/keyword/keyword-super-as-identifier.rs b/tests/ui/keyword/keyword-super-as-identifier.rs similarity index 100% rename from src/test/ui/keyword/keyword-super-as-identifier.rs rename to tests/ui/keyword/keyword-super-as-identifier.rs diff --git a/src/test/ui/keyword/keyword-super-as-identifier.stderr b/tests/ui/keyword/keyword-super-as-identifier.stderr similarity index 100% rename from src/test/ui/keyword/keyword-super-as-identifier.stderr rename to tests/ui/keyword/keyword-super-as-identifier.stderr diff --git a/src/test/ui/keyword/keyword-super.rs b/tests/ui/keyword/keyword-super.rs similarity index 100% rename from src/test/ui/keyword/keyword-super.rs rename to tests/ui/keyword/keyword-super.rs diff --git a/src/test/ui/keyword/keyword-super.stderr b/tests/ui/keyword/keyword-super.stderr similarity index 100% rename from src/test/ui/keyword/keyword-super.stderr rename to tests/ui/keyword/keyword-super.stderr diff --git a/src/test/ui/keyword/keyword-true-as-identifier.rs b/tests/ui/keyword/keyword-true-as-identifier.rs similarity index 100% rename from src/test/ui/keyword/keyword-true-as-identifier.rs rename to tests/ui/keyword/keyword-true-as-identifier.rs diff --git a/src/test/ui/keyword/keyword-true-as-identifier.stderr b/tests/ui/keyword/keyword-true-as-identifier.stderr similarity index 100% rename from src/test/ui/keyword/keyword-true-as-identifier.stderr rename to tests/ui/keyword/keyword-true-as-identifier.stderr diff --git a/src/test/ui/kindck/kindck-copy.rs b/tests/ui/kindck/kindck-copy.rs similarity index 100% rename from src/test/ui/kindck/kindck-copy.rs rename to tests/ui/kindck/kindck-copy.rs diff --git a/src/test/ui/kindck/kindck-copy.stderr b/tests/ui/kindck/kindck-copy.stderr similarity index 100% rename from src/test/ui/kindck/kindck-copy.stderr rename to tests/ui/kindck/kindck-copy.stderr diff --git a/src/test/ui/kindck/kindck-impl-type-params-2.rs b/tests/ui/kindck/kindck-impl-type-params-2.rs similarity index 100% rename from src/test/ui/kindck/kindck-impl-type-params-2.rs rename to tests/ui/kindck/kindck-impl-type-params-2.rs diff --git a/src/test/ui/kindck/kindck-impl-type-params-2.stderr b/tests/ui/kindck/kindck-impl-type-params-2.stderr similarity index 100% rename from src/test/ui/kindck/kindck-impl-type-params-2.stderr rename to tests/ui/kindck/kindck-impl-type-params-2.stderr diff --git a/src/test/ui/kindck/kindck-impl-type-params.rs b/tests/ui/kindck/kindck-impl-type-params.rs similarity index 100% rename from src/test/ui/kindck/kindck-impl-type-params.rs rename to tests/ui/kindck/kindck-impl-type-params.rs diff --git a/src/test/ui/kindck/kindck-impl-type-params.stderr b/tests/ui/kindck/kindck-impl-type-params.stderr similarity index 100% rename from src/test/ui/kindck/kindck-impl-type-params.stderr rename to tests/ui/kindck/kindck-impl-type-params.stderr diff --git a/src/test/ui/kindck/kindck-inherited-copy-bound.curr.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr similarity index 100% rename from src/test/ui/kindck/kindck-inherited-copy-bound.curr.stderr rename to tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr diff --git a/src/test/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr rename to tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr diff --git a/src/test/ui/kindck/kindck-inherited-copy-bound.rs b/tests/ui/kindck/kindck-inherited-copy-bound.rs similarity index 100% rename from src/test/ui/kindck/kindck-inherited-copy-bound.rs rename to tests/ui/kindck/kindck-inherited-copy-bound.rs diff --git a/src/test/ui/kindck/kindck-nonsendable-1.rs b/tests/ui/kindck/kindck-nonsendable-1.rs similarity index 100% rename from src/test/ui/kindck/kindck-nonsendable-1.rs rename to tests/ui/kindck/kindck-nonsendable-1.rs diff --git a/src/test/ui/kindck/kindck-nonsendable-1.stderr b/tests/ui/kindck/kindck-nonsendable-1.stderr similarity index 100% rename from src/test/ui/kindck/kindck-nonsendable-1.stderr rename to tests/ui/kindck/kindck-nonsendable-1.stderr diff --git a/src/test/ui/kindck/kindck-send-object.rs b/tests/ui/kindck/kindck-send-object.rs similarity index 100% rename from src/test/ui/kindck/kindck-send-object.rs rename to tests/ui/kindck/kindck-send-object.rs diff --git a/src/test/ui/kindck/kindck-send-object.stderr b/tests/ui/kindck/kindck-send-object.stderr similarity index 100% rename from src/test/ui/kindck/kindck-send-object.stderr rename to tests/ui/kindck/kindck-send-object.stderr diff --git a/src/test/ui/kindck/kindck-send-object1.rs b/tests/ui/kindck/kindck-send-object1.rs similarity index 100% rename from src/test/ui/kindck/kindck-send-object1.rs rename to tests/ui/kindck/kindck-send-object1.rs diff --git a/src/test/ui/kindck/kindck-send-object1.stderr b/tests/ui/kindck/kindck-send-object1.stderr similarity index 100% rename from src/test/ui/kindck/kindck-send-object1.stderr rename to tests/ui/kindck/kindck-send-object1.stderr diff --git a/src/test/ui/kindck/kindck-send-object2.rs b/tests/ui/kindck/kindck-send-object2.rs similarity index 100% rename from src/test/ui/kindck/kindck-send-object2.rs rename to tests/ui/kindck/kindck-send-object2.rs diff --git a/src/test/ui/kindck/kindck-send-object2.stderr b/tests/ui/kindck/kindck-send-object2.stderr similarity index 100% rename from src/test/ui/kindck/kindck-send-object2.stderr rename to tests/ui/kindck/kindck-send-object2.stderr diff --git a/src/test/ui/kindck/kindck-send-owned.rs b/tests/ui/kindck/kindck-send-owned.rs similarity index 100% rename from src/test/ui/kindck/kindck-send-owned.rs rename to tests/ui/kindck/kindck-send-owned.rs diff --git a/src/test/ui/kindck/kindck-send-owned.stderr b/tests/ui/kindck/kindck-send-owned.stderr similarity index 100% rename from src/test/ui/kindck/kindck-send-owned.stderr rename to tests/ui/kindck/kindck-send-owned.stderr diff --git a/src/test/ui/kindck/kindck-send-unsafe.rs b/tests/ui/kindck/kindck-send-unsafe.rs similarity index 100% rename from src/test/ui/kindck/kindck-send-unsafe.rs rename to tests/ui/kindck/kindck-send-unsafe.rs diff --git a/src/test/ui/kindck/kindck-send-unsafe.rs~rust-lang_master b/tests/ui/kindck/kindck-send-unsafe.rs~rust-lang_master similarity index 100% rename from src/test/ui/kindck/kindck-send-unsafe.rs~rust-lang_master rename to tests/ui/kindck/kindck-send-unsafe.rs~rust-lang_master diff --git a/src/test/ui/kindck/kindck-send-unsafe.stderr b/tests/ui/kindck/kindck-send-unsafe.stderr similarity index 100% rename from src/test/ui/kindck/kindck-send-unsafe.stderr rename to tests/ui/kindck/kindck-send-unsafe.stderr diff --git a/src/test/ui/kinds-in-metadata.rs b/tests/ui/kinds-in-metadata.rs similarity index 100% rename from src/test/ui/kinds-in-metadata.rs rename to tests/ui/kinds-in-metadata.rs diff --git a/src/test/ui/kinds-of-primitive-impl.rs b/tests/ui/kinds-of-primitive-impl.rs similarity index 100% rename from src/test/ui/kinds-of-primitive-impl.rs rename to tests/ui/kinds-of-primitive-impl.rs diff --git a/src/test/ui/kinds-of-primitive-impl.stderr b/tests/ui/kinds-of-primitive-impl.stderr similarity index 100% rename from src/test/ui/kinds-of-primitive-impl.stderr rename to tests/ui/kinds-of-primitive-impl.stderr diff --git a/src/test/ui/label/label-beginning-with-underscore.rs b/tests/ui/label/label-beginning-with-underscore.rs similarity index 100% rename from src/test/ui/label/label-beginning-with-underscore.rs rename to tests/ui/label/label-beginning-with-underscore.rs diff --git a/src/test/ui/label/label-static.rs b/tests/ui/label/label-static.rs similarity index 100% rename from src/test/ui/label/label-static.rs rename to tests/ui/label/label-static.rs diff --git a/src/test/ui/label/label-static.stderr b/tests/ui/label/label-static.stderr similarity index 100% rename from src/test/ui/label/label-static.stderr rename to tests/ui/label/label-static.stderr diff --git a/src/test/ui/label/label-underscore.rs b/tests/ui/label/label-underscore.rs similarity index 100% rename from src/test/ui/label/label-underscore.rs rename to tests/ui/label/label-underscore.rs diff --git a/src/test/ui/label/label-underscore.stderr b/tests/ui/label/label-underscore.stderr similarity index 100% rename from src/test/ui/label/label-underscore.stderr rename to tests/ui/label/label-underscore.stderr diff --git a/src/test/ui/label/label_break_value_continue.rs b/tests/ui/label/label_break_value_continue.rs similarity index 100% rename from src/test/ui/label/label_break_value_continue.rs rename to tests/ui/label/label_break_value_continue.rs diff --git a/src/test/ui/label/label_break_value_continue.stderr b/tests/ui/label/label_break_value_continue.stderr similarity index 100% rename from src/test/ui/label/label_break_value_continue.stderr rename to tests/ui/label/label_break_value_continue.stderr diff --git a/src/test/ui/label/label_break_value_desugared_break.rs b/tests/ui/label/label_break_value_desugared_break.rs similarity index 100% rename from src/test/ui/label/label_break_value_desugared_break.rs rename to tests/ui/label/label_break_value_desugared_break.rs diff --git a/src/test/ui/label/label_break_value_illegal_uses.fixed b/tests/ui/label/label_break_value_illegal_uses.fixed similarity index 100% rename from src/test/ui/label/label_break_value_illegal_uses.fixed rename to tests/ui/label/label_break_value_illegal_uses.fixed diff --git a/src/test/ui/label/label_break_value_illegal_uses.rs b/tests/ui/label/label_break_value_illegal_uses.rs similarity index 100% rename from src/test/ui/label/label_break_value_illegal_uses.rs rename to tests/ui/label/label_break_value_illegal_uses.rs diff --git a/src/test/ui/label/label_break_value_illegal_uses.stderr b/tests/ui/label/label_break_value_illegal_uses.stderr similarity index 100% rename from src/test/ui/label/label_break_value_illegal_uses.stderr rename to tests/ui/label/label_break_value_illegal_uses.stderr diff --git a/src/test/ui/label/label_break_value_unlabeled_break.rs b/tests/ui/label/label_break_value_unlabeled_break.rs similarity index 100% rename from src/test/ui/label/label_break_value_unlabeled_break.rs rename to tests/ui/label/label_break_value_unlabeled_break.rs diff --git a/src/test/ui/label/label_break_value_unlabeled_break.stderr b/tests/ui/label/label_break_value_unlabeled_break.stderr similarity index 100% rename from src/test/ui/label/label_break_value_unlabeled_break.stderr rename to tests/ui/label/label_break_value_unlabeled_break.stderr diff --git a/src/test/ui/label/label_misspelled.rs b/tests/ui/label/label_misspelled.rs similarity index 100% rename from src/test/ui/label/label_misspelled.rs rename to tests/ui/label/label_misspelled.rs diff --git a/src/test/ui/label/label_misspelled.stderr b/tests/ui/label/label_misspelled.stderr similarity index 100% rename from src/test/ui/label/label_misspelled.stderr rename to tests/ui/label/label_misspelled.stderr diff --git a/src/test/ui/label/label_misspelled_2.rs b/tests/ui/label/label_misspelled_2.rs similarity index 100% rename from src/test/ui/label/label_misspelled_2.rs rename to tests/ui/label/label_misspelled_2.rs diff --git a/src/test/ui/label/label_misspelled_2.stderr b/tests/ui/label/label_misspelled_2.stderr similarity index 100% rename from src/test/ui/label/label_misspelled_2.stderr rename to tests/ui/label/label_misspelled_2.stderr diff --git a/src/test/ui/lambda-infer-unresolved.rs b/tests/ui/lambda-infer-unresolved.rs similarity index 100% rename from src/test/ui/lambda-infer-unresolved.rs rename to tests/ui/lambda-infer-unresolved.rs diff --git a/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs b/tests/ui/lang-items/fn-fn_mut-call-ill-formed.rs similarity index 100% rename from src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs rename to tests/ui/lang-items/fn-fn_mut-call-ill-formed.rs diff --git a/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.stderr b/tests/ui/lang-items/fn-fn_mut-call-ill-formed.stderr similarity index 100% rename from src/test/ui/lang-items/fn-fn_mut-call-ill-formed.stderr rename to tests/ui/lang-items/fn-fn_mut-call-ill-formed.stderr diff --git a/src/test/ui/lang-items/issue-19660.rs b/tests/ui/lang-items/issue-19660.rs similarity index 100% rename from src/test/ui/lang-items/issue-19660.rs rename to tests/ui/lang-items/issue-19660.rs diff --git a/src/test/ui/lang-items/issue-19660.stderr b/tests/ui/lang-items/issue-19660.stderr similarity index 100% rename from src/test/ui/lang-items/issue-19660.stderr rename to tests/ui/lang-items/issue-19660.stderr diff --git a/src/test/ui/lang-items/issue-31076.rs b/tests/ui/lang-items/issue-31076.rs similarity index 100% rename from src/test/ui/lang-items/issue-31076.rs rename to tests/ui/lang-items/issue-31076.rs diff --git a/src/test/ui/lang-items/issue-31076.stderr b/tests/ui/lang-items/issue-31076.stderr similarity index 100% rename from src/test/ui/lang-items/issue-31076.stderr rename to tests/ui/lang-items/issue-31076.stderr diff --git a/src/test/ui/lang-items/issue-83471.rs b/tests/ui/lang-items/issue-83471.rs similarity index 100% rename from src/test/ui/lang-items/issue-83471.rs rename to tests/ui/lang-items/issue-83471.rs diff --git a/src/test/ui/lang-items/issue-83471.stderr b/tests/ui/lang-items/issue-83471.stderr similarity index 100% rename from src/test/ui/lang-items/issue-83471.stderr rename to tests/ui/lang-items/issue-83471.stderr diff --git a/src/test/ui/lang-items/issue-86238.rs b/tests/ui/lang-items/issue-86238.rs similarity index 100% rename from src/test/ui/lang-items/issue-86238.rs rename to tests/ui/lang-items/issue-86238.rs diff --git a/src/test/ui/lang-items/issue-86238.stderr b/tests/ui/lang-items/issue-86238.stderr similarity index 100% rename from src/test/ui/lang-items/issue-86238.stderr rename to tests/ui/lang-items/issue-86238.stderr diff --git a/src/test/ui/lang-items/issue-87573.rs b/tests/ui/lang-items/issue-87573.rs similarity index 100% rename from src/test/ui/lang-items/issue-87573.rs rename to tests/ui/lang-items/issue-87573.rs diff --git a/src/test/ui/lang-items/issue-87573.stderr b/tests/ui/lang-items/issue-87573.stderr similarity index 100% rename from src/test/ui/lang-items/issue-87573.stderr rename to tests/ui/lang-items/issue-87573.stderr diff --git a/src/test/ui/lang-items/lang-item-generic-requirements.rs b/tests/ui/lang-items/lang-item-generic-requirements.rs similarity index 100% rename from src/test/ui/lang-items/lang-item-generic-requirements.rs rename to tests/ui/lang-items/lang-item-generic-requirements.rs diff --git a/src/test/ui/lang-items/lang-item-generic-requirements.stderr b/tests/ui/lang-items/lang-item-generic-requirements.stderr similarity index 100% rename from src/test/ui/lang-items/lang-item-generic-requirements.stderr rename to tests/ui/lang-items/lang-item-generic-requirements.stderr diff --git a/src/test/ui/lang-items/lang-item-missing-generator.rs b/tests/ui/lang-items/lang-item-missing-generator.rs similarity index 100% rename from src/test/ui/lang-items/lang-item-missing-generator.rs rename to tests/ui/lang-items/lang-item-missing-generator.rs diff --git a/src/test/ui/lang-items/lang-item-missing-generator.stderr b/tests/ui/lang-items/lang-item-missing-generator.stderr similarity index 100% rename from src/test/ui/lang-items/lang-item-missing-generator.stderr rename to tests/ui/lang-items/lang-item-missing-generator.stderr diff --git a/src/test/ui/lang-items/lang-item-missing.rs b/tests/ui/lang-items/lang-item-missing.rs similarity index 100% rename from src/test/ui/lang-items/lang-item-missing.rs rename to tests/ui/lang-items/lang-item-missing.rs diff --git a/src/test/ui/lang-items/lang-item-missing.stderr b/tests/ui/lang-items/lang-item-missing.stderr similarity index 100% rename from src/test/ui/lang-items/lang-item-missing.stderr rename to tests/ui/lang-items/lang-item-missing.stderr diff --git a/src/test/ui/lang-items/missing-clone-for-suggestion.rs b/tests/ui/lang-items/missing-clone-for-suggestion.rs similarity index 100% rename from src/test/ui/lang-items/missing-clone-for-suggestion.rs rename to tests/ui/lang-items/missing-clone-for-suggestion.rs diff --git a/src/test/ui/lang-items/missing-clone-for-suggestion.stderr b/tests/ui/lang-items/missing-clone-for-suggestion.stderr similarity index 100% rename from src/test/ui/lang-items/missing-clone-for-suggestion.stderr rename to tests/ui/lang-items/missing-clone-for-suggestion.stderr diff --git a/src/test/ui/lang-items/no_owned_box_lang_item.rs b/tests/ui/lang-items/no_owned_box_lang_item.rs similarity index 100% rename from src/test/ui/lang-items/no_owned_box_lang_item.rs rename to tests/ui/lang-items/no_owned_box_lang_item.rs diff --git a/src/test/ui/lang-items/no_owned_box_lang_item.stderr b/tests/ui/lang-items/no_owned_box_lang_item.stderr similarity index 100% rename from src/test/ui/lang-items/no_owned_box_lang_item.stderr rename to tests/ui/lang-items/no_owned_box_lang_item.stderr diff --git a/src/test/ui/lang-items/required-lang-item.rs b/tests/ui/lang-items/required-lang-item.rs similarity index 100% rename from src/test/ui/lang-items/required-lang-item.rs rename to tests/ui/lang-items/required-lang-item.rs diff --git a/src/test/ui/lang-items/required-lang-item.stderr b/tests/ui/lang-items/required-lang-item.stderr similarity index 100% rename from src/test/ui/lang-items/required-lang-item.stderr rename to tests/ui/lang-items/required-lang-item.stderr diff --git a/src/test/ui/last-use-in-block.rs b/tests/ui/last-use-in-block.rs similarity index 100% rename from src/test/ui/last-use-in-block.rs rename to tests/ui/last-use-in-block.rs diff --git a/src/test/ui/last-use-in-cap-clause.rs b/tests/ui/last-use-in-cap-clause.rs similarity index 100% rename from src/test/ui/last-use-in-cap-clause.rs rename to tests/ui/last-use-in-cap-clause.rs diff --git a/src/test/ui/last-use-is-capture.rs b/tests/ui/last-use-is-capture.rs similarity index 100% rename from src/test/ui/last-use-is-capture.rs rename to tests/ui/last-use-is-capture.rs diff --git a/src/test/ui/late-bound-lifetimes/auxiliary/upstream_alias.rs b/tests/ui/late-bound-lifetimes/auxiliary/upstream_alias.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/auxiliary/upstream_alias.rs rename to tests/ui/late-bound-lifetimes/auxiliary/upstream_alias.rs diff --git a/src/test/ui/late-bound-lifetimes/cross_crate_alias.rs b/tests/ui/late-bound-lifetimes/cross_crate_alias.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/cross_crate_alias.rs rename to tests/ui/late-bound-lifetimes/cross_crate_alias.rs diff --git a/src/test/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs b/tests/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs rename to tests/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs diff --git a/src/test/ui/late-bound-lifetimes/issue-36381.rs b/tests/ui/late-bound-lifetimes/issue-36381.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/issue-36381.rs rename to tests/ui/late-bound-lifetimes/issue-36381.rs diff --git a/src/test/ui/late-bound-lifetimes/issue-47511.rs b/tests/ui/late-bound-lifetimes/issue-47511.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/issue-47511.rs rename to tests/ui/late-bound-lifetimes/issue-47511.rs diff --git a/src/test/ui/late-bound-lifetimes/late_bound_through_alias.rs b/tests/ui/late-bound-lifetimes/late_bound_through_alias.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/late_bound_through_alias.rs rename to tests/ui/late-bound-lifetimes/late_bound_through_alias.rs diff --git a/src/test/ui/late-bound-lifetimes/mismatched_arg_count.rs b/tests/ui/late-bound-lifetimes/mismatched_arg_count.rs similarity index 100% rename from src/test/ui/late-bound-lifetimes/mismatched_arg_count.rs rename to tests/ui/late-bound-lifetimes/mismatched_arg_count.rs diff --git a/src/test/ui/late-bound-lifetimes/mismatched_arg_count.stderr b/tests/ui/late-bound-lifetimes/mismatched_arg_count.stderr similarity index 100% rename from src/test/ui/late-bound-lifetimes/mismatched_arg_count.stderr rename to tests/ui/late-bound-lifetimes/mismatched_arg_count.stderr diff --git a/src/test/ui/layout/big-type-no-err.rs b/tests/ui/layout/big-type-no-err.rs similarity index 100% rename from src/test/ui/layout/big-type-no-err.rs rename to tests/ui/layout/big-type-no-err.rs diff --git a/src/test/ui/layout/debug.rs b/tests/ui/layout/debug.rs similarity index 100% rename from src/test/ui/layout/debug.rs rename to tests/ui/layout/debug.rs diff --git a/src/test/ui/layout/debug.stderr b/tests/ui/layout/debug.stderr similarity index 100% rename from src/test/ui/layout/debug.stderr rename to tests/ui/layout/debug.stderr diff --git a/src/test/ui/layout/hexagon-enum.rs b/tests/ui/layout/hexagon-enum.rs similarity index 100% rename from src/test/ui/layout/hexagon-enum.rs rename to tests/ui/layout/hexagon-enum.rs diff --git a/src/test/ui/layout/hexagon-enum.stderr b/tests/ui/layout/hexagon-enum.stderr similarity index 100% rename from src/test/ui/layout/hexagon-enum.stderr rename to tests/ui/layout/hexagon-enum.stderr diff --git a/src/test/ui/layout/homogeneous-aggr-zero-sized-c-struct.rs b/tests/ui/layout/homogeneous-aggr-zero-sized-c-struct.rs similarity index 100% rename from src/test/ui/layout/homogeneous-aggr-zero-sized-c-struct.rs rename to tests/ui/layout/homogeneous-aggr-zero-sized-c-struct.rs diff --git a/src/test/ui/layout/homogeneous-aggr-zero-sized-c-struct.stderr b/tests/ui/layout/homogeneous-aggr-zero-sized-c-struct.stderr similarity index 100% rename from src/test/ui/layout/homogeneous-aggr-zero-sized-c-struct.stderr rename to tests/ui/layout/homogeneous-aggr-zero-sized-c-struct.stderr diff --git a/src/test/ui/layout/homogeneous-aggr-zero-sized-repr-rust.rs b/tests/ui/layout/homogeneous-aggr-zero-sized-repr-rust.rs similarity index 100% rename from src/test/ui/layout/homogeneous-aggr-zero-sized-repr-rust.rs rename to tests/ui/layout/homogeneous-aggr-zero-sized-repr-rust.rs diff --git a/src/test/ui/layout/homogeneous-aggr-zero-sized-repr-rust.stderr b/tests/ui/layout/homogeneous-aggr-zero-sized-repr-rust.stderr similarity index 100% rename from src/test/ui/layout/homogeneous-aggr-zero-sized-repr-rust.stderr rename to tests/ui/layout/homogeneous-aggr-zero-sized-repr-rust.stderr diff --git a/src/test/ui/layout/issue-60431-unsized-tail-behind-projection.rs b/tests/ui/layout/issue-60431-unsized-tail-behind-projection.rs similarity index 100% rename from src/test/ui/layout/issue-60431-unsized-tail-behind-projection.rs rename to tests/ui/layout/issue-60431-unsized-tail-behind-projection.rs diff --git a/src/test/ui/layout/issue-84108.rs b/tests/ui/layout/issue-84108.rs similarity index 100% rename from src/test/ui/layout/issue-84108.rs rename to tests/ui/layout/issue-84108.rs diff --git a/src/test/ui/layout/issue-84108.stderr b/tests/ui/layout/issue-84108.stderr similarity index 100% rename from src/test/ui/layout/issue-84108.stderr rename to tests/ui/layout/issue-84108.stderr diff --git a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs b/tests/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs similarity index 100% rename from src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs rename to tests/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.rs diff --git a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr b/tests/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr similarity index 100% rename from src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr rename to tests/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr diff --git a/src/test/ui/layout/issue-96185-overaligned-enum.rs b/tests/ui/layout/issue-96185-overaligned-enum.rs similarity index 100% rename from src/test/ui/layout/issue-96185-overaligned-enum.rs rename to tests/ui/layout/issue-96185-overaligned-enum.rs diff --git a/src/test/ui/layout/issue-96185-overaligned-enum.stderr b/tests/ui/layout/issue-96185-overaligned-enum.stderr similarity index 100% rename from src/test/ui/layout/issue-96185-overaligned-enum.stderr rename to tests/ui/layout/issue-96185-overaligned-enum.stderr diff --git a/src/test/ui/layout/thin-meta-implies-thin-ptr.rs b/tests/ui/layout/thin-meta-implies-thin-ptr.rs similarity index 100% rename from src/test/ui/layout/thin-meta-implies-thin-ptr.rs rename to tests/ui/layout/thin-meta-implies-thin-ptr.rs diff --git a/src/test/ui/layout/thumb-enum.rs b/tests/ui/layout/thumb-enum.rs similarity index 100% rename from src/test/ui/layout/thumb-enum.rs rename to tests/ui/layout/thumb-enum.rs diff --git a/src/test/ui/layout/thumb-enum.stderr b/tests/ui/layout/thumb-enum.stderr similarity index 100% rename from src/test/ui/layout/thumb-enum.stderr rename to tests/ui/layout/thumb-enum.stderr diff --git a/src/test/ui/layout/unsafe-cell-hides-niche.rs b/tests/ui/layout/unsafe-cell-hides-niche.rs similarity index 100% rename from src/test/ui/layout/unsafe-cell-hides-niche.rs rename to tests/ui/layout/unsafe-cell-hides-niche.rs diff --git a/src/test/ui/layout/valid_range_oob.rs b/tests/ui/layout/valid_range_oob.rs similarity index 100% rename from src/test/ui/layout/valid_range_oob.rs rename to tests/ui/layout/valid_range_oob.rs diff --git a/src/test/ui/layout/valid_range_oob.stderr b/tests/ui/layout/valid_range_oob.stderr similarity index 100% rename from src/test/ui/layout/valid_range_oob.stderr rename to tests/ui/layout/valid_range_oob.stderr diff --git a/src/test/ui/layout/zero-sized-array-enum-niche.rs b/tests/ui/layout/zero-sized-array-enum-niche.rs similarity index 100% rename from src/test/ui/layout/zero-sized-array-enum-niche.rs rename to tests/ui/layout/zero-sized-array-enum-niche.rs diff --git a/src/test/ui/layout/zero-sized-array-enum-niche.stderr b/tests/ui/layout/zero-sized-array-enum-niche.stderr similarity index 100% rename from src/test/ui/layout/zero-sized-array-enum-niche.stderr rename to tests/ui/layout/zero-sized-array-enum-niche.stderr diff --git a/src/test/ui/layout/zero-sized-array-union.rs b/tests/ui/layout/zero-sized-array-union.rs similarity index 100% rename from src/test/ui/layout/zero-sized-array-union.rs rename to tests/ui/layout/zero-sized-array-union.rs diff --git a/src/test/ui/layout/zero-sized-array-union.stderr b/tests/ui/layout/zero-sized-array-union.stderr similarity index 100% rename from src/test/ui/layout/zero-sized-array-union.stderr rename to tests/ui/layout/zero-sized-array-union.stderr diff --git a/src/test/ui/lazy-and-or.rs b/tests/ui/lazy-and-or.rs similarity index 100% rename from src/test/ui/lazy-and-or.rs rename to tests/ui/lazy-and-or.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/branches.rs b/tests/ui/lazy-type-alias-impl-trait/branches.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/branches.rs rename to tests/ui/lazy-type-alias-impl-trait/branches.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/branches.stderr b/tests/ui/lazy-type-alias-impl-trait/branches.stderr similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/branches.stderr rename to tests/ui/lazy-type-alias-impl-trait/branches.stderr diff --git a/src/test/ui/lazy-type-alias-impl-trait/branches2.rs b/tests/ui/lazy-type-alias-impl-trait/branches2.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/branches2.rs rename to tests/ui/lazy-type-alias-impl-trait/branches2.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/branches3.rs b/tests/ui/lazy-type-alias-impl-trait/branches3.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/branches3.rs rename to tests/ui/lazy-type-alias-impl-trait/branches3.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/branches3.stderr b/tests/ui/lazy-type-alias-impl-trait/branches3.stderr similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/branches3.stderr rename to tests/ui/lazy-type-alias-impl-trait/branches3.stderr diff --git a/src/test/ui/lazy-type-alias-impl-trait/freeze_cycle.rs b/tests/ui/lazy-type-alias-impl-trait/freeze_cycle.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/freeze_cycle.rs rename to tests/ui/lazy-type-alias-impl-trait/freeze_cycle.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/infer_cross_function.rs b/tests/ui/lazy-type-alias-impl-trait/infer_cross_function.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/infer_cross_function.rs rename to tests/ui/lazy-type-alias-impl-trait/infer_cross_function.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/lifetime_inference.rs b/tests/ui/lazy-type-alias-impl-trait/lifetime_inference.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/lifetime_inference.rs rename to tests/ui/lazy-type-alias-impl-trait/lifetime_inference.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/nested.rs b/tests/ui/lazy-type-alias-impl-trait/nested.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/nested.rs rename to tests/ui/lazy-type-alias-impl-trait/nested.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/opaque_vs_opaque.rs b/tests/ui/lazy-type-alias-impl-trait/opaque_vs_opaque.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/opaque_vs_opaque.rs rename to tests/ui/lazy-type-alias-impl-trait/opaque_vs_opaque.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion.rs b/tests/ui/lazy-type-alias-impl-trait/recursion.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion.rs rename to tests/ui/lazy-type-alias-impl-trait/recursion.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion2.rs b/tests/ui/lazy-type-alias-impl-trait/recursion2.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion2.rs rename to tests/ui/lazy-type-alias-impl-trait/recursion2.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion3.rs b/tests/ui/lazy-type-alias-impl-trait/recursion3.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion3.rs rename to tests/ui/lazy-type-alias-impl-trait/recursion3.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion3.stderr b/tests/ui/lazy-type-alias-impl-trait/recursion3.stderr similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion3.stderr rename to tests/ui/lazy-type-alias-impl-trait/recursion3.stderr diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion4.rs b/tests/ui/lazy-type-alias-impl-trait/recursion4.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion4.rs rename to tests/ui/lazy-type-alias-impl-trait/recursion4.rs diff --git a/src/test/ui/lazy-type-alias-impl-trait/recursion4.stderr b/tests/ui/lazy-type-alias-impl-trait/recursion4.stderr similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/recursion4.stderr rename to tests/ui/lazy-type-alias-impl-trait/recursion4.stderr diff --git a/src/test/ui/lazy-type-alias-impl-trait/unsized_sized_opaque.rs b/tests/ui/lazy-type-alias-impl-trait/unsized_sized_opaque.rs similarity index 100% rename from src/test/ui/lazy-type-alias-impl-trait/unsized_sized_opaque.rs rename to tests/ui/lazy-type-alias-impl-trait/unsized_sized_opaque.rs diff --git a/src/test/ui/let-else/const-fn.rs b/tests/ui/let-else/const-fn.rs similarity index 100% rename from src/test/ui/let-else/const-fn.rs rename to tests/ui/let-else/const-fn.rs diff --git a/src/test/ui/let-else/issue-100103.rs b/tests/ui/let-else/issue-100103.rs similarity index 100% rename from src/test/ui/let-else/issue-100103.rs rename to tests/ui/let-else/issue-100103.rs diff --git a/src/test/ui/let-else/issue-102317.rs b/tests/ui/let-else/issue-102317.rs similarity index 100% rename from src/test/ui/let-else/issue-102317.rs rename to tests/ui/let-else/issue-102317.rs diff --git a/src/test/ui/let-else/issue-94176.rs b/tests/ui/let-else/issue-94176.rs similarity index 100% rename from src/test/ui/let-else/issue-94176.rs rename to tests/ui/let-else/issue-94176.rs diff --git a/src/test/ui/let-else/issue-94176.stderr b/tests/ui/let-else/issue-94176.stderr similarity index 100% rename from src/test/ui/let-else/issue-94176.stderr rename to tests/ui/let-else/issue-94176.stderr diff --git a/src/test/ui/let-else/issue-99975.rs b/tests/ui/let-else/issue-99975.rs similarity index 100% rename from src/test/ui/let-else/issue-99975.rs rename to tests/ui/let-else/issue-99975.rs diff --git a/src/test/ui/let-else/let-else-allow-in-expr.rs b/tests/ui/let-else/let-else-allow-in-expr.rs similarity index 100% rename from src/test/ui/let-else/let-else-allow-in-expr.rs rename to tests/ui/let-else/let-else-allow-in-expr.rs diff --git a/src/test/ui/let-else/let-else-allow-in-expr.stderr b/tests/ui/let-else/let-else-allow-in-expr.stderr similarity index 100% rename from src/test/ui/let-else/let-else-allow-in-expr.stderr rename to tests/ui/let-else/let-else-allow-in-expr.stderr diff --git a/src/test/ui/let-else/let-else-allow-unused.rs b/tests/ui/let-else/let-else-allow-unused.rs similarity index 100% rename from src/test/ui/let-else/let-else-allow-unused.rs rename to tests/ui/let-else/let-else-allow-unused.rs diff --git a/src/test/ui/let-else/let-else-allow-unused.stderr b/tests/ui/let-else/let-else-allow-unused.stderr similarity index 100% rename from src/test/ui/let-else/let-else-allow-unused.stderr rename to tests/ui/let-else/let-else-allow-unused.stderr diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs b/tests/ui/let-else/let-else-binding-explicit-mut-annotated.rs similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut-annotated.rs rename to tests/ui/let-else/let-else-binding-explicit-mut-annotated.rs diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr b/tests/ui/let-else/let-else-binding-explicit-mut-annotated.stderr similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut-annotated.stderr rename to tests/ui/let-else/let-else-binding-explicit-mut-annotated.stderr diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs b/tests/ui/let-else/let-else-binding-explicit-mut-borrow.rs similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut-borrow.rs rename to tests/ui/let-else/let-else-binding-explicit-mut-borrow.rs diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr b/tests/ui/let-else/let-else-binding-explicit-mut-borrow.stderr similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut-borrow.stderr rename to tests/ui/let-else/let-else-binding-explicit-mut-borrow.stderr diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs b/tests/ui/let-else/let-else-binding-explicit-mut-pass.rs similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut-pass.rs rename to tests/ui/let-else/let-else-binding-explicit-mut-pass.rs diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut.rs b/tests/ui/let-else/let-else-binding-explicit-mut.rs similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut.rs rename to tests/ui/let-else/let-else-binding-explicit-mut.rs diff --git a/src/test/ui/let-else/let-else-binding-explicit-mut.stderr b/tests/ui/let-else/let-else-binding-explicit-mut.stderr similarity index 100% rename from src/test/ui/let-else/let-else-binding-explicit-mut.stderr rename to tests/ui/let-else/let-else-binding-explicit-mut.stderr diff --git a/src/test/ui/let-else/let-else-binding-immutable.rs b/tests/ui/let-else/let-else-binding-immutable.rs similarity index 100% rename from src/test/ui/let-else/let-else-binding-immutable.rs rename to tests/ui/let-else/let-else-binding-immutable.rs diff --git a/src/test/ui/let-else/let-else-binding-immutable.stderr b/tests/ui/let-else/let-else-binding-immutable.stderr similarity index 100% rename from src/test/ui/let-else/let-else-binding-immutable.stderr rename to tests/ui/let-else/let-else-binding-immutable.stderr diff --git a/src/test/ui/let-else/let-else-bindings.rs b/tests/ui/let-else/let-else-bindings.rs similarity index 100% rename from src/test/ui/let-else/let-else-bindings.rs rename to tests/ui/let-else/let-else-bindings.rs diff --git a/src/test/ui/let-else/let-else-bool-binop-init.fixed b/tests/ui/let-else/let-else-bool-binop-init.fixed similarity index 100% rename from src/test/ui/let-else/let-else-bool-binop-init.fixed rename to tests/ui/let-else/let-else-bool-binop-init.fixed diff --git a/src/test/ui/let-else/let-else-bool-binop-init.rs b/tests/ui/let-else/let-else-bool-binop-init.rs similarity index 100% rename from src/test/ui/let-else/let-else-bool-binop-init.rs rename to tests/ui/let-else/let-else-bool-binop-init.rs diff --git a/src/test/ui/let-else/let-else-bool-binop-init.stderr b/tests/ui/let-else/let-else-bool-binop-init.stderr similarity index 100% rename from src/test/ui/let-else/let-else-bool-binop-init.stderr rename to tests/ui/let-else/let-else-bool-binop-init.stderr diff --git a/src/test/ui/let-else/let-else-brace-before-else.fixed b/tests/ui/let-else/let-else-brace-before-else.fixed similarity index 100% rename from src/test/ui/let-else/let-else-brace-before-else.fixed rename to tests/ui/let-else/let-else-brace-before-else.fixed diff --git a/src/test/ui/let-else/let-else-brace-before-else.rs b/tests/ui/let-else/let-else-brace-before-else.rs similarity index 100% rename from src/test/ui/let-else/let-else-brace-before-else.rs rename to tests/ui/let-else/let-else-brace-before-else.rs diff --git a/src/test/ui/let-else/let-else-brace-before-else.stderr b/tests/ui/let-else/let-else-brace-before-else.stderr similarity index 100% rename from src/test/ui/let-else/let-else-brace-before-else.stderr rename to tests/ui/let-else/let-else-brace-before-else.stderr diff --git a/src/test/ui/let-else/let-else-check.rs b/tests/ui/let-else/let-else-check.rs similarity index 100% rename from src/test/ui/let-else/let-else-check.rs rename to tests/ui/let-else/let-else-check.rs diff --git a/src/test/ui/let-else/let-else-check.stderr b/tests/ui/let-else/let-else-check.stderr similarity index 100% rename from src/test/ui/let-else/let-else-check.stderr rename to tests/ui/let-else/let-else-check.stderr diff --git a/src/test/ui/let-else/let-else-deref-coercion-annotated.rs b/tests/ui/let-else/let-else-deref-coercion-annotated.rs similarity index 100% rename from src/test/ui/let-else/let-else-deref-coercion-annotated.rs rename to tests/ui/let-else/let-else-deref-coercion-annotated.rs diff --git a/src/test/ui/let-else/let-else-deref-coercion.rs b/tests/ui/let-else/let-else-deref-coercion.rs similarity index 100% rename from src/test/ui/let-else/let-else-deref-coercion.rs rename to tests/ui/let-else/let-else-deref-coercion.rs diff --git a/src/test/ui/let-else/let-else-deref-coercion.stderr b/tests/ui/let-else/let-else-deref-coercion.stderr similarity index 100% rename from src/test/ui/let-else/let-else-deref-coercion.stderr rename to tests/ui/let-else/let-else-deref-coercion.stderr diff --git a/src/test/ui/let-else/let-else-destructuring.rs b/tests/ui/let-else/let-else-destructuring.rs similarity index 100% rename from src/test/ui/let-else/let-else-destructuring.rs rename to tests/ui/let-else/let-else-destructuring.rs diff --git a/src/test/ui/let-else/let-else-destructuring.stderr b/tests/ui/let-else/let-else-destructuring.stderr similarity index 100% rename from src/test/ui/let-else/let-else-destructuring.stderr rename to tests/ui/let-else/let-else-destructuring.stderr diff --git a/src/test/ui/let-else/let-else-drop-order.rs b/tests/ui/let-else/let-else-drop-order.rs similarity index 100% rename from src/test/ui/let-else/let-else-drop-order.rs rename to tests/ui/let-else/let-else-drop-order.rs diff --git a/src/test/ui/let-else/let-else-drop-order.run.stdout b/tests/ui/let-else/let-else-drop-order.run.stdout similarity index 100% rename from src/test/ui/let-else/let-else-drop-order.run.stdout rename to tests/ui/let-else/let-else-drop-order.run.stdout diff --git a/src/test/ui/let-else/let-else-if.rs b/tests/ui/let-else/let-else-if.rs similarity index 100% rename from src/test/ui/let-else/let-else-if.rs rename to tests/ui/let-else/let-else-if.rs diff --git a/src/test/ui/let-else/let-else-if.stderr b/tests/ui/let-else/let-else-if.stderr similarity index 100% rename from src/test/ui/let-else/let-else-if.stderr rename to tests/ui/let-else/let-else-if.stderr diff --git a/src/test/ui/let-else/let-else-irrefutable.rs b/tests/ui/let-else/let-else-irrefutable.rs similarity index 100% rename from src/test/ui/let-else/let-else-irrefutable.rs rename to tests/ui/let-else/let-else-irrefutable.rs diff --git a/src/test/ui/let-else/let-else-irrefutable.stderr b/tests/ui/let-else/let-else-irrefutable.stderr similarity index 100% rename from src/test/ui/let-else/let-else-irrefutable.stderr rename to tests/ui/let-else/let-else-irrefutable.stderr diff --git a/src/test/ui/let-else/let-else-missing-semicolon.rs b/tests/ui/let-else/let-else-missing-semicolon.rs similarity index 100% rename from src/test/ui/let-else/let-else-missing-semicolon.rs rename to tests/ui/let-else/let-else-missing-semicolon.rs diff --git a/src/test/ui/let-else/let-else-missing-semicolon.stderr b/tests/ui/let-else/let-else-missing-semicolon.stderr similarity index 100% rename from src/test/ui/let-else/let-else-missing-semicolon.stderr rename to tests/ui/let-else/let-else-missing-semicolon.stderr diff --git a/src/test/ui/let-else/let-else-no-double-error.rs b/tests/ui/let-else/let-else-no-double-error.rs similarity index 100% rename from src/test/ui/let-else/let-else-no-double-error.rs rename to tests/ui/let-else/let-else-no-double-error.rs diff --git a/src/test/ui/let-else/let-else-no-double-error.stderr b/tests/ui/let-else/let-else-no-double-error.stderr similarity index 100% rename from src/test/ui/let-else/let-else-no-double-error.stderr rename to tests/ui/let-else/let-else-no-double-error.stderr diff --git a/src/test/ui/let-else/let-else-non-copy.rs b/tests/ui/let-else/let-else-non-copy.rs similarity index 100% rename from src/test/ui/let-else/let-else-non-copy.rs rename to tests/ui/let-else/let-else-non-copy.rs diff --git a/src/test/ui/let-else/let-else-non-diverging.rs b/tests/ui/let-else/let-else-non-diverging.rs similarity index 100% rename from src/test/ui/let-else/let-else-non-diverging.rs rename to tests/ui/let-else/let-else-non-diverging.rs diff --git a/src/test/ui/let-else/let-else-non-diverging.stderr b/tests/ui/let-else/let-else-non-diverging.stderr similarity index 100% rename from src/test/ui/let-else/let-else-non-diverging.stderr rename to tests/ui/let-else/let-else-non-diverging.stderr diff --git a/src/test/ui/let-else/let-else-ref-bindings-pass.rs b/tests/ui/let-else/let-else-ref-bindings-pass.rs similarity index 100% rename from src/test/ui/let-else/let-else-ref-bindings-pass.rs rename to tests/ui/let-else/let-else-ref-bindings-pass.rs diff --git a/src/test/ui/let-else/let-else-ref-bindings.rs b/tests/ui/let-else/let-else-ref-bindings.rs similarity index 100% rename from src/test/ui/let-else/let-else-ref-bindings.rs rename to tests/ui/let-else/let-else-ref-bindings.rs diff --git a/src/test/ui/let-else/let-else-ref-bindings.stderr b/tests/ui/let-else/let-else-ref-bindings.stderr similarity index 100% rename from src/test/ui/let-else/let-else-ref-bindings.stderr rename to tests/ui/let-else/let-else-ref-bindings.stderr diff --git a/src/test/ui/let-else/let-else-run-pass.rs b/tests/ui/let-else/let-else-run-pass.rs similarity index 100% rename from src/test/ui/let-else/let-else-run-pass.rs rename to tests/ui/let-else/let-else-run-pass.rs diff --git a/src/test/ui/let-else/let-else-scope.rs b/tests/ui/let-else/let-else-scope.rs similarity index 100% rename from src/test/ui/let-else/let-else-scope.rs rename to tests/ui/let-else/let-else-scope.rs diff --git a/src/test/ui/let-else/let-else-scope.stderr b/tests/ui/let-else/let-else-scope.stderr similarity index 100% rename from src/test/ui/let-else/let-else-scope.stderr rename to tests/ui/let-else/let-else-scope.stderr diff --git a/src/test/ui/let-else/let-else-slicing-error.rs b/tests/ui/let-else/let-else-slicing-error.rs similarity index 100% rename from src/test/ui/let-else/let-else-slicing-error.rs rename to tests/ui/let-else/let-else-slicing-error.rs diff --git a/src/test/ui/let-else/let-else-slicing-error.stderr b/tests/ui/let-else/let-else-slicing-error.stderr similarity index 100% rename from src/test/ui/let-else/let-else-slicing-error.stderr rename to tests/ui/let-else/let-else-slicing-error.stderr diff --git a/src/test/ui/let-else/let-else-source-expr-nomove-pass.rs b/tests/ui/let-else/let-else-source-expr-nomove-pass.rs similarity index 100% rename from src/test/ui/let-else/let-else-source-expr-nomove-pass.rs rename to tests/ui/let-else/let-else-source-expr-nomove-pass.rs diff --git a/src/test/ui/let-else/let-else-temp-borrowck.rs b/tests/ui/let-else/let-else-temp-borrowck.rs similarity index 100% rename from src/test/ui/let-else/let-else-temp-borrowck.rs rename to tests/ui/let-else/let-else-temp-borrowck.rs diff --git a/src/test/ui/let-else/let-else-temporary-lifetime.rs b/tests/ui/let-else/let-else-temporary-lifetime.rs similarity index 100% rename from src/test/ui/let-else/let-else-temporary-lifetime.rs rename to tests/ui/let-else/let-else-temporary-lifetime.rs diff --git a/src/test/ui/let-else/let-else-then-diverge.rs b/tests/ui/let-else/let-else-then-diverge.rs similarity index 100% rename from src/test/ui/let-else/let-else-then-diverge.rs rename to tests/ui/let-else/let-else-then-diverge.rs diff --git a/src/test/ui/let-else/let-else-then-diverge.stderr b/tests/ui/let-else/let-else-then-diverge.stderr similarity index 100% rename from src/test/ui/let-else/let-else-then-diverge.stderr rename to tests/ui/let-else/let-else-then-diverge.stderr diff --git a/src/test/ui/let-else/let-else.rs b/tests/ui/let-else/let-else.rs similarity index 100% rename from src/test/ui/let-else/let-else.rs rename to tests/ui/let-else/let-else.rs diff --git a/src/test/ui/lexer/error-stage.rs b/tests/ui/lexer/error-stage.rs similarity index 100% rename from src/test/ui/lexer/error-stage.rs rename to tests/ui/lexer/error-stage.rs diff --git a/src/test/ui/lexer/error-stage.stderr b/tests/ui/lexer/error-stage.stderr similarity index 100% rename from src/test/ui/lexer/error-stage.stderr rename to tests/ui/lexer/error-stage.stderr diff --git a/src/test/ui/lexer/lex-bad-binary-literal.rs b/tests/ui/lexer/lex-bad-binary-literal.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-binary-literal.rs rename to tests/ui/lexer/lex-bad-binary-literal.rs diff --git a/src/test/ui/lexer/lex-bad-binary-literal.stderr b/tests/ui/lexer/lex-bad-binary-literal.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-binary-literal.stderr rename to tests/ui/lexer/lex-bad-binary-literal.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-1.rs b/tests/ui/lexer/lex-bad-char-literals-1.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-1.rs rename to tests/ui/lexer/lex-bad-char-literals-1.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-1.stderr b/tests/ui/lexer/lex-bad-char-literals-1.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-1.stderr rename to tests/ui/lexer/lex-bad-char-literals-1.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-2.rs b/tests/ui/lexer/lex-bad-char-literals-2.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-2.rs rename to tests/ui/lexer/lex-bad-char-literals-2.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-2.stderr b/tests/ui/lexer/lex-bad-char-literals-2.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-2.stderr rename to tests/ui/lexer/lex-bad-char-literals-2.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-3.rs b/tests/ui/lexer/lex-bad-char-literals-3.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-3.rs rename to tests/ui/lexer/lex-bad-char-literals-3.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-3.stderr b/tests/ui/lexer/lex-bad-char-literals-3.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-3.stderr rename to tests/ui/lexer/lex-bad-char-literals-3.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-4.rs b/tests/ui/lexer/lex-bad-char-literals-4.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-4.rs rename to tests/ui/lexer/lex-bad-char-literals-4.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-4.stderr b/tests/ui/lexer/lex-bad-char-literals-4.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-4.stderr rename to tests/ui/lexer/lex-bad-char-literals-4.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-5.rs b/tests/ui/lexer/lex-bad-char-literals-5.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-5.rs rename to tests/ui/lexer/lex-bad-char-literals-5.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-5.stderr b/tests/ui/lexer/lex-bad-char-literals-5.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-5.stderr rename to tests/ui/lexer/lex-bad-char-literals-5.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-6.rs b/tests/ui/lexer/lex-bad-char-literals-6.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-6.rs rename to tests/ui/lexer/lex-bad-char-literals-6.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-6.stderr b/tests/ui/lexer/lex-bad-char-literals-6.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-6.stderr rename to tests/ui/lexer/lex-bad-char-literals-6.stderr diff --git a/src/test/ui/lexer/lex-bad-char-literals-7.rs b/tests/ui/lexer/lex-bad-char-literals-7.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-7.rs rename to tests/ui/lexer/lex-bad-char-literals-7.rs diff --git a/src/test/ui/lexer/lex-bad-char-literals-7.stderr b/tests/ui/lexer/lex-bad-char-literals-7.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-char-literals-7.stderr rename to tests/ui/lexer/lex-bad-char-literals-7.stderr diff --git a/src/test/ui/lexer/lex-bad-numeric-literals.rs b/tests/ui/lexer/lex-bad-numeric-literals.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-numeric-literals.rs rename to tests/ui/lexer/lex-bad-numeric-literals.rs diff --git a/src/test/ui/lexer/lex-bad-numeric-literals.stderr b/tests/ui/lexer/lex-bad-numeric-literals.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-numeric-literals.stderr rename to tests/ui/lexer/lex-bad-numeric-literals.stderr diff --git a/src/test/ui/lexer/lex-bad-octal-literal.rs b/tests/ui/lexer/lex-bad-octal-literal.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-octal-literal.rs rename to tests/ui/lexer/lex-bad-octal-literal.rs diff --git a/src/test/ui/lexer/lex-bad-octal-literal.stderr b/tests/ui/lexer/lex-bad-octal-literal.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-octal-literal.stderr rename to tests/ui/lexer/lex-bad-octal-literal.stderr diff --git a/src/test/ui/lexer/lex-bad-token.rs b/tests/ui/lexer/lex-bad-token.rs similarity index 100% rename from src/test/ui/lexer/lex-bad-token.rs rename to tests/ui/lexer/lex-bad-token.rs diff --git a/src/test/ui/lexer/lex-bad-token.stderr b/tests/ui/lexer/lex-bad-token.stderr similarity index 100% rename from src/test/ui/lexer/lex-bad-token.stderr rename to tests/ui/lexer/lex-bad-token.stderr diff --git a/src/test/ui/lexer/lex-bare-cr-nondoc-comment.rs b/tests/ui/lexer/lex-bare-cr-nondoc-comment.rs similarity index 100% rename from src/test/ui/lexer/lex-bare-cr-nondoc-comment.rs rename to tests/ui/lexer/lex-bare-cr-nondoc-comment.rs diff --git a/src/test/ui/lexer/lex-bare-cr-string-literal-doc-comment.rs b/tests/ui/lexer/lex-bare-cr-string-literal-doc-comment.rs similarity index 100% rename from src/test/ui/lexer/lex-bare-cr-string-literal-doc-comment.rs rename to tests/ui/lexer/lex-bare-cr-string-literal-doc-comment.rs diff --git a/src/test/ui/lexer/lex-bare-cr-string-literal-doc-comment.stderr b/tests/ui/lexer/lex-bare-cr-string-literal-doc-comment.stderr similarity index 100% rename from src/test/ui/lexer/lex-bare-cr-string-literal-doc-comment.stderr rename to tests/ui/lexer/lex-bare-cr-string-literal-doc-comment.stderr diff --git a/src/test/ui/lexer/lex-emoji-identifiers.rs b/tests/ui/lexer/lex-emoji-identifiers.rs similarity index 100% rename from src/test/ui/lexer/lex-emoji-identifiers.rs rename to tests/ui/lexer/lex-emoji-identifiers.rs diff --git a/src/test/ui/lexer/lex-emoji-identifiers.stderr b/tests/ui/lexer/lex-emoji-identifiers.stderr similarity index 100% rename from src/test/ui/lexer/lex-emoji-identifiers.stderr rename to tests/ui/lexer/lex-emoji-identifiers.stderr diff --git a/src/test/ui/lexer/lex-stray-backslash.rs b/tests/ui/lexer/lex-stray-backslash.rs similarity index 100% rename from src/test/ui/lexer/lex-stray-backslash.rs rename to tests/ui/lexer/lex-stray-backslash.rs diff --git a/src/test/ui/lexer/lex-stray-backslash.stderr b/tests/ui/lexer/lex-stray-backslash.stderr similarity index 100% rename from src/test/ui/lexer/lex-stray-backslash.stderr rename to tests/ui/lexer/lex-stray-backslash.stderr diff --git a/src/test/ui/lexer/lexer-crlf-line-endings-string-literal-doc-comment.rs b/tests/ui/lexer/lexer-crlf-line-endings-string-literal-doc-comment.rs similarity index 100% rename from src/test/ui/lexer/lexer-crlf-line-endings-string-literal-doc-comment.rs rename to tests/ui/lexer/lexer-crlf-line-endings-string-literal-doc-comment.rs diff --git a/src/test/ui/lexical-scopes.rs b/tests/ui/lexical-scopes.rs similarity index 100% rename from src/test/ui/lexical-scopes.rs rename to tests/ui/lexical-scopes.rs diff --git a/src/test/ui/lexical-scopes.stderr b/tests/ui/lexical-scopes.stderr similarity index 100% rename from src/test/ui/lexical-scopes.stderr rename to tests/ui/lexical-scopes.stderr diff --git a/src/test/ui/lexical-scoping.rs b/tests/ui/lexical-scoping.rs similarity index 100% rename from src/test/ui/lexical-scoping.rs rename to tests/ui/lexical-scoping.rs diff --git a/src/test/ui/lifetimes/auxiliary/issue-91763-aux.rs b/tests/ui/lifetimes/auxiliary/issue-91763-aux.rs similarity index 100% rename from src/test/ui/lifetimes/auxiliary/issue-91763-aux.rs rename to tests/ui/lifetimes/auxiliary/issue-91763-aux.rs diff --git a/src/test/ui/lifetimes/auxiliary/lifetime_bound_will_change_warning_lib.rs b/tests/ui/lifetimes/auxiliary/lifetime_bound_will_change_warning_lib.rs similarity index 100% rename from src/test/ui/lifetimes/auxiliary/lifetime_bound_will_change_warning_lib.rs rename to tests/ui/lifetimes/auxiliary/lifetime_bound_will_change_warning_lib.rs diff --git a/src/test/ui/lifetimes/bare-trait-object-borrowck.rs b/tests/ui/lifetimes/bare-trait-object-borrowck.rs similarity index 100% rename from src/test/ui/lifetimes/bare-trait-object-borrowck.rs rename to tests/ui/lifetimes/bare-trait-object-borrowck.rs diff --git a/src/test/ui/lifetimes/bare-trait-object.rs b/tests/ui/lifetimes/bare-trait-object.rs similarity index 100% rename from src/test/ui/lifetimes/bare-trait-object.rs rename to tests/ui/lifetimes/bare-trait-object.rs diff --git a/src/test/ui/lifetimes/borrowck-let-suggestion.rs b/tests/ui/lifetimes/borrowck-let-suggestion.rs similarity index 100% rename from src/test/ui/lifetimes/borrowck-let-suggestion.rs rename to tests/ui/lifetimes/borrowck-let-suggestion.rs diff --git a/src/test/ui/lifetimes/borrowck-let-suggestion.stderr b/tests/ui/lifetimes/borrowck-let-suggestion.stderr similarity index 100% rename from src/test/ui/lifetimes/borrowck-let-suggestion.stderr rename to tests/ui/lifetimes/borrowck-let-suggestion.stderr diff --git a/src/test/ui/lifetimes/conflicting-bounds.rs b/tests/ui/lifetimes/conflicting-bounds.rs similarity index 100% rename from src/test/ui/lifetimes/conflicting-bounds.rs rename to tests/ui/lifetimes/conflicting-bounds.rs diff --git a/src/test/ui/lifetimes/conflicting-bounds.stderr b/tests/ui/lifetimes/conflicting-bounds.stderr similarity index 100% rename from src/test/ui/lifetimes/conflicting-bounds.stderr rename to tests/ui/lifetimes/conflicting-bounds.stderr diff --git a/src/test/ui/lifetimes/copy_modulo_regions.rs b/tests/ui/lifetimes/copy_modulo_regions.rs similarity index 100% rename from src/test/ui/lifetimes/copy_modulo_regions.rs rename to tests/ui/lifetimes/copy_modulo_regions.rs diff --git a/src/test/ui/lifetimes/copy_modulo_regions.stderr b/tests/ui/lifetimes/copy_modulo_regions.stderr similarity index 100% rename from src/test/ui/lifetimes/copy_modulo_regions.stderr rename to tests/ui/lifetimes/copy_modulo_regions.stderr diff --git a/src/test/ui/lifetimes/elided-lifetime-in-param-pat.rs b/tests/ui/lifetimes/elided-lifetime-in-param-pat.rs similarity index 100% rename from src/test/ui/lifetimes/elided-lifetime-in-param-pat.rs rename to tests/ui/lifetimes/elided-lifetime-in-param-pat.rs diff --git a/src/test/ui/lifetimes/elided-lifetime-in-path-in-impl-Fn.rs b/tests/ui/lifetimes/elided-lifetime-in-path-in-impl-Fn.rs similarity index 100% rename from src/test/ui/lifetimes/elided-lifetime-in-path-in-impl-Fn.rs rename to tests/ui/lifetimes/elided-lifetime-in-path-in-impl-Fn.rs diff --git a/src/test/ui/lifetimes/elided-lifetime-in-path-in-pat.rs b/tests/ui/lifetimes/elided-lifetime-in-path-in-pat.rs similarity index 100% rename from src/test/ui/lifetimes/elided-lifetime-in-path-in-pat.rs rename to tests/ui/lifetimes/elided-lifetime-in-path-in-pat.rs diff --git a/src/test/ui/lifetimes/elided-lifetime-in-path-in-type-relative-expression.rs b/tests/ui/lifetimes/elided-lifetime-in-path-in-type-relative-expression.rs similarity index 100% rename from src/test/ui/lifetimes/elided-lifetime-in-path-in-type-relative-expression.rs rename to tests/ui/lifetimes/elided-lifetime-in-path-in-type-relative-expression.rs diff --git a/src/test/ui/lifetimes/fullwidth-ampersand.rs b/tests/ui/lifetimes/fullwidth-ampersand.rs similarity index 100% rename from src/test/ui/lifetimes/fullwidth-ampersand.rs rename to tests/ui/lifetimes/fullwidth-ampersand.rs diff --git a/src/test/ui/lifetimes/fullwidth-ampersand.stderr b/tests/ui/lifetimes/fullwidth-ampersand.stderr similarity index 100% rename from src/test/ui/lifetimes/fullwidth-ampersand.stderr rename to tests/ui/lifetimes/fullwidth-ampersand.stderr diff --git a/src/test/ui/lifetimes/issue-105227.fixed b/tests/ui/lifetimes/issue-105227.fixed similarity index 100% rename from src/test/ui/lifetimes/issue-105227.fixed rename to tests/ui/lifetimes/issue-105227.fixed diff --git a/src/test/ui/lifetimes/issue-105227.rs b/tests/ui/lifetimes/issue-105227.rs similarity index 100% rename from src/test/ui/lifetimes/issue-105227.rs rename to tests/ui/lifetimes/issue-105227.rs diff --git a/src/test/ui/lifetimes/issue-105227.stderr b/tests/ui/lifetimes/issue-105227.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-105227.stderr rename to tests/ui/lifetimes/issue-105227.stderr diff --git a/src/test/ui/lifetimes/issue-17728.rs b/tests/ui/lifetimes/issue-17728.rs similarity index 100% rename from src/test/ui/lifetimes/issue-17728.rs rename to tests/ui/lifetimes/issue-17728.rs diff --git a/src/test/ui/lifetimes/issue-17728.stderr b/tests/ui/lifetimes/issue-17728.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-17728.stderr rename to tests/ui/lifetimes/issue-17728.stderr diff --git a/src/test/ui/lifetimes/issue-26638.rs b/tests/ui/lifetimes/issue-26638.rs similarity index 100% rename from src/test/ui/lifetimes/issue-26638.rs rename to tests/ui/lifetimes/issue-26638.rs diff --git a/src/test/ui/lifetimes/issue-26638.stderr b/tests/ui/lifetimes/issue-26638.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-26638.stderr rename to tests/ui/lifetimes/issue-26638.stderr diff --git a/src/test/ui/lifetimes/issue-34979.rs b/tests/ui/lifetimes/issue-34979.rs similarity index 100% rename from src/test/ui/lifetimes/issue-34979.rs rename to tests/ui/lifetimes/issue-34979.rs diff --git a/src/test/ui/lifetimes/issue-34979.stderr b/tests/ui/lifetimes/issue-34979.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-34979.stderr rename to tests/ui/lifetimes/issue-34979.stderr diff --git a/src/test/ui/lifetimes/issue-54378.rs b/tests/ui/lifetimes/issue-54378.rs similarity index 100% rename from src/test/ui/lifetimes/issue-54378.rs rename to tests/ui/lifetimes/issue-54378.rs diff --git a/src/test/ui/lifetimes/issue-55796.rs b/tests/ui/lifetimes/issue-55796.rs similarity index 100% rename from src/test/ui/lifetimes/issue-55796.rs rename to tests/ui/lifetimes/issue-55796.rs diff --git a/src/test/ui/lifetimes/issue-55796.stderr b/tests/ui/lifetimes/issue-55796.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-55796.stderr rename to tests/ui/lifetimes/issue-55796.stderr diff --git a/src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs b/tests/ui/lifetimes/issue-64173-unused-lifetimes.rs similarity index 100% rename from src/test/ui/lifetimes/issue-64173-unused-lifetimes.rs rename to tests/ui/lifetimes/issue-64173-unused-lifetimes.rs diff --git a/src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr b/tests/ui/lifetimes/issue-64173-unused-lifetimes.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-64173-unused-lifetimes.stderr rename to tests/ui/lifetimes/issue-64173-unused-lifetimes.stderr diff --git a/src/test/ui/lifetimes/issue-67498.rs b/tests/ui/lifetimes/issue-67498.rs similarity index 100% rename from src/test/ui/lifetimes/issue-67498.rs rename to tests/ui/lifetimes/issue-67498.rs diff --git a/src/test/ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs b/tests/ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs similarity index 100% rename from src/test/ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs rename to tests/ui/lifetimes/issue-70917-lifetimes-in-fn-def.rs diff --git a/src/test/ui/lifetimes/issue-76168-hr-outlives-2.rs b/tests/ui/lifetimes/issue-76168-hr-outlives-2.rs similarity index 100% rename from src/test/ui/lifetimes/issue-76168-hr-outlives-2.rs rename to tests/ui/lifetimes/issue-76168-hr-outlives-2.rs diff --git a/src/test/ui/lifetimes/issue-76168-hr-outlives.rs b/tests/ui/lifetimes/issue-76168-hr-outlives.rs similarity index 100% rename from src/test/ui/lifetimes/issue-76168-hr-outlives.rs rename to tests/ui/lifetimes/issue-76168-hr-outlives.rs diff --git a/src/test/ui/lifetimes/issue-77175.rs b/tests/ui/lifetimes/issue-77175.rs similarity index 100% rename from src/test/ui/lifetimes/issue-77175.rs rename to tests/ui/lifetimes/issue-77175.rs diff --git a/src/test/ui/lifetimes/issue-79187-2.rs b/tests/ui/lifetimes/issue-79187-2.rs similarity index 100% rename from src/test/ui/lifetimes/issue-79187-2.rs rename to tests/ui/lifetimes/issue-79187-2.rs diff --git a/src/test/ui/lifetimes/issue-79187-2.stderr b/tests/ui/lifetimes/issue-79187-2.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-79187-2.stderr rename to tests/ui/lifetimes/issue-79187-2.stderr diff --git a/src/test/ui/lifetimes/issue-79187.rs b/tests/ui/lifetimes/issue-79187.rs similarity index 100% rename from src/test/ui/lifetimes/issue-79187.rs rename to tests/ui/lifetimes/issue-79187.rs diff --git a/src/test/ui/lifetimes/issue-79187.stderr b/tests/ui/lifetimes/issue-79187.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-79187.stderr rename to tests/ui/lifetimes/issue-79187.stderr diff --git a/src/test/ui/lifetimes/issue-83737-binders-across-types.rs b/tests/ui/lifetimes/issue-83737-binders-across-types.rs similarity index 100% rename from src/test/ui/lifetimes/issue-83737-binders-across-types.rs rename to tests/ui/lifetimes/issue-83737-binders-across-types.rs diff --git a/src/test/ui/lifetimes/issue-83737-erasing-bound-vars.rs b/tests/ui/lifetimes/issue-83737-erasing-bound-vars.rs similarity index 100% rename from src/test/ui/lifetimes/issue-83737-erasing-bound-vars.rs rename to tests/ui/lifetimes/issue-83737-erasing-bound-vars.rs diff --git a/src/test/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs b/tests/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs similarity index 100% rename from src/test/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs rename to tests/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.rs diff --git a/src/test/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.stderr b/tests/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.stderr rename to tests/ui/lifetimes/issue-83753-invalid-associated-type-supertrait-hrtb.stderr diff --git a/src/test/ui/lifetimes/issue-83907-invalid-fn-like-path.rs b/tests/ui/lifetimes/issue-83907-invalid-fn-like-path.rs similarity index 100% rename from src/test/ui/lifetimes/issue-83907-invalid-fn-like-path.rs rename to tests/ui/lifetimes/issue-83907-invalid-fn-like-path.rs diff --git a/src/test/ui/lifetimes/issue-83907-invalid-fn-like-path.stderr b/tests/ui/lifetimes/issue-83907-invalid-fn-like-path.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-83907-invalid-fn-like-path.stderr rename to tests/ui/lifetimes/issue-83907-invalid-fn-like-path.stderr diff --git a/src/test/ui/lifetimes/issue-84398.rs b/tests/ui/lifetimes/issue-84398.rs similarity index 100% rename from src/test/ui/lifetimes/issue-84398.rs rename to tests/ui/lifetimes/issue-84398.rs diff --git a/src/test/ui/lifetimes/issue-84604.rs b/tests/ui/lifetimes/issue-84604.rs similarity index 100% rename from src/test/ui/lifetimes/issue-84604.rs rename to tests/ui/lifetimes/issue-84604.rs diff --git a/src/test/ui/lifetimes/issue-90170-elision-mismatch.fixed b/tests/ui/lifetimes/issue-90170-elision-mismatch.fixed similarity index 100% rename from src/test/ui/lifetimes/issue-90170-elision-mismatch.fixed rename to tests/ui/lifetimes/issue-90170-elision-mismatch.fixed diff --git a/src/test/ui/lifetimes/issue-90170-elision-mismatch.rs b/tests/ui/lifetimes/issue-90170-elision-mismatch.rs similarity index 100% rename from src/test/ui/lifetimes/issue-90170-elision-mismatch.rs rename to tests/ui/lifetimes/issue-90170-elision-mismatch.rs diff --git a/src/test/ui/lifetimes/issue-90170-elision-mismatch.stderr b/tests/ui/lifetimes/issue-90170-elision-mismatch.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-90170-elision-mismatch.stderr rename to tests/ui/lifetimes/issue-90170-elision-mismatch.stderr diff --git a/src/test/ui/lifetimes/issue-90600-expected-return-static-indirect.rs b/tests/ui/lifetimes/issue-90600-expected-return-static-indirect.rs similarity index 100% rename from src/test/ui/lifetimes/issue-90600-expected-return-static-indirect.rs rename to tests/ui/lifetimes/issue-90600-expected-return-static-indirect.rs diff --git a/src/test/ui/lifetimes/issue-90600-expected-return-static-indirect.stderr b/tests/ui/lifetimes/issue-90600-expected-return-static-indirect.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-90600-expected-return-static-indirect.stderr rename to tests/ui/lifetimes/issue-90600-expected-return-static-indirect.stderr diff --git a/src/test/ui/lifetimes/issue-91763.rs b/tests/ui/lifetimes/issue-91763.rs similarity index 100% rename from src/test/ui/lifetimes/issue-91763.rs rename to tests/ui/lifetimes/issue-91763.rs diff --git a/src/test/ui/lifetimes/issue-91763.stderr b/tests/ui/lifetimes/issue-91763.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-91763.stderr rename to tests/ui/lifetimes/issue-91763.stderr diff --git a/src/test/ui/lifetimes/issue-95023.rs b/tests/ui/lifetimes/issue-95023.rs similarity index 100% rename from src/test/ui/lifetimes/issue-95023.rs rename to tests/ui/lifetimes/issue-95023.rs diff --git a/src/test/ui/lifetimes/issue-95023.stderr b/tests/ui/lifetimes/issue-95023.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-95023.stderr rename to tests/ui/lifetimes/issue-95023.stderr diff --git a/src/test/ui/lifetimes/issue-97193.rs b/tests/ui/lifetimes/issue-97193.rs similarity index 100% rename from src/test/ui/lifetimes/issue-97193.rs rename to tests/ui/lifetimes/issue-97193.rs diff --git a/src/test/ui/lifetimes/issue-97193.stderr b/tests/ui/lifetimes/issue-97193.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-97193.stderr rename to tests/ui/lifetimes/issue-97193.stderr diff --git a/src/test/ui/lifetimes/issue-97194.rs b/tests/ui/lifetimes/issue-97194.rs similarity index 100% rename from src/test/ui/lifetimes/issue-97194.rs rename to tests/ui/lifetimes/issue-97194.rs diff --git a/src/test/ui/lifetimes/issue-97194.stderr b/tests/ui/lifetimes/issue-97194.stderr similarity index 100% rename from src/test/ui/lifetimes/issue-97194.stderr rename to tests/ui/lifetimes/issue-97194.stderr diff --git a/src/test/ui/lifetimes/lifetime-bound-will-change-warning.rs b/tests/ui/lifetimes/lifetime-bound-will-change-warning.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-bound-will-change-warning.rs rename to tests/ui/lifetimes/lifetime-bound-will-change-warning.rs diff --git a/src/test/ui/lifetimes/lifetime-bound-will-change-warning.stderr b/tests/ui/lifetimes/lifetime-bound-will-change-warning.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-bound-will-change-warning.stderr rename to tests/ui/lifetimes/lifetime-bound-will-change-warning.stderr diff --git a/src/test/ui/lifetimes/lifetime-doesnt-live-long-enough.rs b/tests/ui/lifetimes/lifetime-doesnt-live-long-enough.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-doesnt-live-long-enough.rs rename to tests/ui/lifetimes/lifetime-doesnt-live-long-enough.rs diff --git a/src/test/ui/lifetimes/lifetime-doesnt-live-long-enough.stderr b/tests/ui/lifetimes/lifetime-doesnt-live-long-enough.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-doesnt-live-long-enough.stderr rename to tests/ui/lifetimes/lifetime-doesnt-live-long-enough.stderr diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs b/tests/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs rename to tests/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr b/tests/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr rename to tests/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-trait.rs b/tests/ui/lifetimes/lifetime-elision-return-type-trait.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-elision-return-type-trait.rs rename to tests/ui/lifetimes/lifetime-elision-return-type-trait.rs diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-trait.stderr b/tests/ui/lifetimes/lifetime-elision-return-type-trait.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-elision-return-type-trait.stderr rename to tests/ui/lifetimes/lifetime-elision-return-type-trait.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.rs b/tests/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.rs rename to tests/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.stderr b/tests/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.stderr rename to tests/ui/lifetimes/lifetime-errors/42701_one_named_and_one_anonymous.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-early-bound-in-struct.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.rs b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.rs rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.stderr b/tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.rs b/tests/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.rs rename to tests/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.stderr b/tests/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.stderr rename to tests/ui/lifetimes/lifetime-errors/ex1b-return-no-names-if-else.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.rs b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.rs b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.rs rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.rs b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.rs rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.stderr b/tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.rs b/tests/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.rs rename to tests/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.stderr b/tests/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.rs b/tests/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.rs rename to tests/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.stderr b/tests/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.rs b/tests/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.rs b/tests/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.rs b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.rs rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.stderr b/tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.stderr rename to tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/issue_74400.rs b/tests/ui/lifetimes/lifetime-errors/issue_74400.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/issue_74400.rs rename to tests/ui/lifetimes/lifetime-errors/issue_74400.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/issue_74400.stderr b/tests/ui/lifetimes/lifetime-errors/issue_74400.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/issue_74400.stderr rename to tests/ui/lifetimes/lifetime-errors/issue_74400.stderr diff --git a/src/test/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.rs b/tests/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.rs rename to tests/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.rs diff --git a/src/test/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.stderr b/tests/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.stderr rename to tests/ui/lifetimes/lifetime-errors/liveness-assign-imm-local-notes.stderr diff --git a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs b/tests/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs rename to tests/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.rs diff --git a/src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr b/tests/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr rename to tests/ui/lifetimes/lifetime-mismatch-between-trait-and-impl.stderr diff --git a/src/test/ui/lifetimes/lifetime-no-keyword.rs b/tests/ui/lifetimes/lifetime-no-keyword.rs similarity index 100% rename from src/test/ui/lifetimes/lifetime-no-keyword.rs rename to tests/ui/lifetimes/lifetime-no-keyword.rs diff --git a/src/test/ui/lifetimes/lifetime-no-keyword.stderr b/tests/ui/lifetimes/lifetime-no-keyword.stderr similarity index 100% rename from src/test/ui/lifetimes/lifetime-no-keyword.stderr rename to tests/ui/lifetimes/lifetime-no-keyword.stderr diff --git a/src/test/ui/lifetimes/missing-lifetime-in-alias.rs b/tests/ui/lifetimes/missing-lifetime-in-alias.rs similarity index 100% rename from src/test/ui/lifetimes/missing-lifetime-in-alias.rs rename to tests/ui/lifetimes/missing-lifetime-in-alias.rs diff --git a/src/test/ui/lifetimes/missing-lifetime-in-alias.stderr b/tests/ui/lifetimes/missing-lifetime-in-alias.stderr similarity index 100% rename from src/test/ui/lifetimes/missing-lifetime-in-alias.stderr rename to tests/ui/lifetimes/missing-lifetime-in-alias.stderr diff --git a/src/test/ui/lifetimes/nested-binder-print.rs b/tests/ui/lifetimes/nested-binder-print.rs similarity index 100% rename from src/test/ui/lifetimes/nested-binder-print.rs rename to tests/ui/lifetimes/nested-binder-print.rs diff --git a/src/test/ui/lifetimes/nested-binder-print.stderr b/tests/ui/lifetimes/nested-binder-print.stderr similarity index 100% rename from src/test/ui/lifetimes/nested-binder-print.stderr rename to tests/ui/lifetimes/nested-binder-print.stderr diff --git a/src/test/ui/lifetimes/nested.rs b/tests/ui/lifetimes/nested.rs similarity index 100% rename from src/test/ui/lifetimes/nested.rs rename to tests/ui/lifetimes/nested.rs diff --git a/src/test/ui/lifetimes/re-empty-in-error.rs b/tests/ui/lifetimes/re-empty-in-error.rs similarity index 100% rename from src/test/ui/lifetimes/re-empty-in-error.rs rename to tests/ui/lifetimes/re-empty-in-error.rs diff --git a/src/test/ui/lifetimes/re-empty-in-error.stderr b/tests/ui/lifetimes/re-empty-in-error.stderr similarity index 100% rename from src/test/ui/lifetimes/re-empty-in-error.stderr rename to tests/ui/lifetimes/re-empty-in-error.stderr diff --git a/src/test/ui/lifetimes/shadow.rs b/tests/ui/lifetimes/shadow.rs similarity index 100% rename from src/test/ui/lifetimes/shadow.rs rename to tests/ui/lifetimes/shadow.rs diff --git a/src/test/ui/lifetimes/shadow.stderr b/tests/ui/lifetimes/shadow.stderr similarity index 100% rename from src/test/ui/lifetimes/shadow.stderr rename to tests/ui/lifetimes/shadow.stderr diff --git a/src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs similarity index 100% rename from src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs rename to tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs diff --git a/src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr similarity index 100% rename from src/test/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr rename to tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr diff --git a/src/test/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.rs b/tests/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.rs similarity index 100% rename from src/test/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.rs rename to tests/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.rs diff --git a/src/test/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.stderr b/tests/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.stderr similarity index 100% rename from src/test/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.stderr rename to tests/ui/lifetimes/undeclared-lifetime-used-in-debug-macro-issue-70152.stderr diff --git a/src/test/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.rs b/tests/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.rs similarity index 100% rename from src/test/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.rs rename to tests/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.rs diff --git a/src/test/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.stderr b/tests/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.stderr similarity index 100% rename from src/test/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.stderr rename to tests/ui/lifetimes/unnamed-closure-doesnt-life-long-enough-issue-67634.stderr diff --git a/src/test/ui/lifetimes/unusual-rib-combinations.rs b/tests/ui/lifetimes/unusual-rib-combinations.rs similarity index 100% rename from src/test/ui/lifetimes/unusual-rib-combinations.rs rename to tests/ui/lifetimes/unusual-rib-combinations.rs diff --git a/src/test/ui/lifetimes/unusual-rib-combinations.stderr b/tests/ui/lifetimes/unusual-rib-combinations.stderr similarity index 100% rename from src/test/ui/lifetimes/unusual-rib-combinations.stderr rename to tests/ui/lifetimes/unusual-rib-combinations.stderr diff --git a/src/test/ui/limits/huge-array-simple-32.rs b/tests/ui/limits/huge-array-simple-32.rs similarity index 100% rename from src/test/ui/limits/huge-array-simple-32.rs rename to tests/ui/limits/huge-array-simple-32.rs diff --git a/src/test/ui/limits/huge-array-simple-32.stderr b/tests/ui/limits/huge-array-simple-32.stderr similarity index 100% rename from src/test/ui/limits/huge-array-simple-32.stderr rename to tests/ui/limits/huge-array-simple-32.stderr diff --git a/src/test/ui/limits/huge-array-simple-64.rs b/tests/ui/limits/huge-array-simple-64.rs similarity index 100% rename from src/test/ui/limits/huge-array-simple-64.rs rename to tests/ui/limits/huge-array-simple-64.rs diff --git a/src/test/ui/limits/huge-array-simple-64.stderr b/tests/ui/limits/huge-array-simple-64.stderr similarity index 100% rename from src/test/ui/limits/huge-array-simple-64.stderr rename to tests/ui/limits/huge-array-simple-64.stderr diff --git a/src/test/ui/limits/huge-array.rs b/tests/ui/limits/huge-array.rs similarity index 100% rename from src/test/ui/limits/huge-array.rs rename to tests/ui/limits/huge-array.rs diff --git a/src/test/ui/limits/huge-array.stderr b/tests/ui/limits/huge-array.stderr similarity index 100% rename from src/test/ui/limits/huge-array.stderr rename to tests/ui/limits/huge-array.stderr diff --git a/src/test/ui/limits/huge-enum.rs b/tests/ui/limits/huge-enum.rs similarity index 100% rename from src/test/ui/limits/huge-enum.rs rename to tests/ui/limits/huge-enum.rs diff --git a/src/test/ui/limits/huge-enum.stderr b/tests/ui/limits/huge-enum.stderr similarity index 100% rename from src/test/ui/limits/huge-enum.stderr rename to tests/ui/limits/huge-enum.stderr diff --git a/src/test/ui/limits/huge-struct.rs b/tests/ui/limits/huge-struct.rs similarity index 100% rename from src/test/ui/limits/huge-struct.rs rename to tests/ui/limits/huge-struct.rs diff --git a/src/test/ui/limits/huge-struct.stderr b/tests/ui/limits/huge-struct.stderr similarity index 100% rename from src/test/ui/limits/huge-struct.stderr rename to tests/ui/limits/huge-struct.stderr diff --git a/src/test/ui/limits/issue-15919-32.rs b/tests/ui/limits/issue-15919-32.rs similarity index 100% rename from src/test/ui/limits/issue-15919-32.rs rename to tests/ui/limits/issue-15919-32.rs diff --git a/src/test/ui/limits/issue-15919-32.stderr b/tests/ui/limits/issue-15919-32.stderr similarity index 100% rename from src/test/ui/limits/issue-15919-32.stderr rename to tests/ui/limits/issue-15919-32.stderr diff --git a/src/test/ui/limits/issue-15919-64.rs b/tests/ui/limits/issue-15919-64.rs similarity index 100% rename from src/test/ui/limits/issue-15919-64.rs rename to tests/ui/limits/issue-15919-64.rs diff --git a/src/test/ui/limits/issue-15919-64.stderr b/tests/ui/limits/issue-15919-64.stderr similarity index 100% rename from src/test/ui/limits/issue-15919-64.stderr rename to tests/ui/limits/issue-15919-64.stderr diff --git a/src/test/ui/limits/issue-17913.rs b/tests/ui/limits/issue-17913.rs similarity index 100% rename from src/test/ui/limits/issue-17913.rs rename to tests/ui/limits/issue-17913.rs diff --git a/src/test/ui/limits/issue-17913.stderr b/tests/ui/limits/issue-17913.stderr similarity index 100% rename from src/test/ui/limits/issue-17913.stderr rename to tests/ui/limits/issue-17913.stderr diff --git a/src/test/ui/limits/issue-55878.rs b/tests/ui/limits/issue-55878.rs similarity index 100% rename from src/test/ui/limits/issue-55878.rs rename to tests/ui/limits/issue-55878.rs diff --git a/src/test/ui/limits/issue-55878.stderr b/tests/ui/limits/issue-55878.stderr similarity index 100% rename from src/test/ui/limits/issue-55878.stderr rename to tests/ui/limits/issue-55878.stderr diff --git a/src/test/ui/limits/issue-56762.rs b/tests/ui/limits/issue-56762.rs similarity index 100% rename from src/test/ui/limits/issue-56762.rs rename to tests/ui/limits/issue-56762.rs diff --git a/src/test/ui/limits/issue-56762.stderr b/tests/ui/limits/issue-56762.stderr similarity index 100% rename from src/test/ui/limits/issue-56762.stderr rename to tests/ui/limits/issue-56762.stderr diff --git a/src/test/ui/limits/issue-69485-var-size-diffs-too-large.rs b/tests/ui/limits/issue-69485-var-size-diffs-too-large.rs similarity index 100% rename from src/test/ui/limits/issue-69485-var-size-diffs-too-large.rs rename to tests/ui/limits/issue-69485-var-size-diffs-too-large.rs diff --git a/src/test/ui/limits/issue-69485-var-size-diffs-too-large.stderr b/tests/ui/limits/issue-69485-var-size-diffs-too-large.stderr similarity index 100% rename from src/test/ui/limits/issue-69485-var-size-diffs-too-large.stderr rename to tests/ui/limits/issue-69485-var-size-diffs-too-large.stderr diff --git a/src/test/ui/limits/issue-75158-64.rs b/tests/ui/limits/issue-75158-64.rs similarity index 100% rename from src/test/ui/limits/issue-75158-64.rs rename to tests/ui/limits/issue-75158-64.rs diff --git a/src/test/ui/limits/issue-75158-64.stderr b/tests/ui/limits/issue-75158-64.stderr similarity index 100% rename from src/test/ui/limits/issue-75158-64.stderr rename to tests/ui/limits/issue-75158-64.stderr diff --git a/src/test/ui/link-section.rs b/tests/ui/link-section.rs similarity index 100% rename from src/test/ui/link-section.rs rename to tests/ui/link-section.rs diff --git a/src/test/ui/linkage-attr/auxiliary/def_colliding_external.rs b/tests/ui/linkage-attr/auxiliary/def_colliding_external.rs similarity index 100% rename from src/test/ui/linkage-attr/auxiliary/def_colliding_external.rs rename to tests/ui/linkage-attr/auxiliary/def_colliding_external.rs diff --git a/src/test/ui/linkage-attr/auxiliary/def_external.rs b/tests/ui/linkage-attr/auxiliary/def_external.rs similarity index 100% rename from src/test/ui/linkage-attr/auxiliary/def_external.rs rename to tests/ui/linkage-attr/auxiliary/def_external.rs diff --git a/src/test/ui/linkage-attr/auxiliary/link-cfg-works-transitive-dylib.rs b/tests/ui/linkage-attr/auxiliary/link-cfg-works-transitive-dylib.rs similarity index 100% rename from src/test/ui/linkage-attr/auxiliary/link-cfg-works-transitive-dylib.rs rename to tests/ui/linkage-attr/auxiliary/link-cfg-works-transitive-dylib.rs diff --git a/src/test/ui/linkage-attr/auxiliary/link-cfg-works-transitive-rlib.rs b/tests/ui/linkage-attr/auxiliary/link-cfg-works-transitive-rlib.rs similarity index 100% rename from src/test/ui/linkage-attr/auxiliary/link-cfg-works-transitive-rlib.rs rename to tests/ui/linkage-attr/auxiliary/link-cfg-works-transitive-rlib.rs diff --git a/src/test/ui/linkage-attr/auxiliary/linkage1.rs b/tests/ui/linkage-attr/auxiliary/linkage1.rs similarity index 100% rename from src/test/ui/linkage-attr/auxiliary/linkage1.rs rename to tests/ui/linkage-attr/auxiliary/linkage1.rs diff --git a/src/test/ui/linkage-attr/issue-10755.rs b/tests/ui/linkage-attr/issue-10755.rs similarity index 100% rename from src/test/ui/linkage-attr/issue-10755.rs rename to tests/ui/linkage-attr/issue-10755.rs diff --git a/src/test/ui/linkage-attr/link-attr-validation-early.rs b/tests/ui/linkage-attr/link-attr-validation-early.rs similarity index 100% rename from src/test/ui/linkage-attr/link-attr-validation-early.rs rename to tests/ui/linkage-attr/link-attr-validation-early.rs diff --git a/src/test/ui/linkage-attr/link-attr-validation-early.stderr b/tests/ui/linkage-attr/link-attr-validation-early.stderr similarity index 100% rename from src/test/ui/linkage-attr/link-attr-validation-early.stderr rename to tests/ui/linkage-attr/link-attr-validation-early.stderr diff --git a/src/test/ui/linkage-attr/link-attr-validation-late.rs b/tests/ui/linkage-attr/link-attr-validation-late.rs similarity index 100% rename from src/test/ui/linkage-attr/link-attr-validation-late.rs rename to tests/ui/linkage-attr/link-attr-validation-late.rs diff --git a/src/test/ui/linkage-attr/link-attr-validation-late.stderr b/tests/ui/linkage-attr/link-attr-validation-late.stderr similarity index 100% rename from src/test/ui/linkage-attr/link-attr-validation-late.stderr rename to tests/ui/linkage-attr/link-attr-validation-late.stderr diff --git a/src/test/ui/linkage-attr/link-cfg-works.rs b/tests/ui/linkage-attr/link-cfg-works.rs similarity index 100% rename from src/test/ui/linkage-attr/link-cfg-works.rs rename to tests/ui/linkage-attr/link-cfg-works.rs diff --git a/src/test/ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs b/tests/ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs rename to tests/ui/linkage-attr/linkage-detect-extern-generated-name-collision.rs diff --git a/src/test/ui/linkage-attr/linkage-detect-extern-generated-name-collision.stderr b/tests/ui/linkage-attr/linkage-detect-extern-generated-name-collision.stderr similarity index 100% rename from src/test/ui/linkage-attr/linkage-detect-extern-generated-name-collision.stderr rename to tests/ui/linkage-attr/linkage-detect-extern-generated-name-collision.stderr diff --git a/src/test/ui/linkage-attr/linkage-detect-local-generated-name-collision.rs b/tests/ui/linkage-attr/linkage-detect-local-generated-name-collision.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage-detect-local-generated-name-collision.rs rename to tests/ui/linkage-attr/linkage-detect-local-generated-name-collision.rs diff --git a/src/test/ui/linkage-attr/linkage-detect-local-generated-name-collision.stderr b/tests/ui/linkage-attr/linkage-detect-local-generated-name-collision.stderr similarity index 100% rename from src/test/ui/linkage-attr/linkage-detect-local-generated-name-collision.stderr rename to tests/ui/linkage-attr/linkage-detect-local-generated-name-collision.stderr diff --git a/src/test/ui/linkage-attr/linkage-import.rs b/tests/ui/linkage-attr/linkage-import.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage-import.rs rename to tests/ui/linkage-attr/linkage-import.rs diff --git a/src/test/ui/linkage-attr/linkage1.rs b/tests/ui/linkage-attr/linkage1.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage1.rs rename to tests/ui/linkage-attr/linkage1.rs diff --git a/src/test/ui/linkage-attr/linkage2.rs b/tests/ui/linkage-attr/linkage2.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage2.rs rename to tests/ui/linkage-attr/linkage2.rs diff --git a/src/test/ui/linkage-attr/linkage2.stderr b/tests/ui/linkage-attr/linkage2.stderr similarity index 100% rename from src/test/ui/linkage-attr/linkage2.stderr rename to tests/ui/linkage-attr/linkage2.stderr diff --git a/src/test/ui/linkage-attr/linkage3.rs b/tests/ui/linkage-attr/linkage3.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage3.rs rename to tests/ui/linkage-attr/linkage3.rs diff --git a/src/test/ui/linkage-attr/linkage3.stderr b/tests/ui/linkage-attr/linkage3.stderr similarity index 100% rename from src/test/ui/linkage-attr/linkage3.stderr rename to tests/ui/linkage-attr/linkage3.stderr diff --git a/src/test/ui/linkage-attr/linkage4.rs b/tests/ui/linkage-attr/linkage4.rs similarity index 100% rename from src/test/ui/linkage-attr/linkage4.rs rename to tests/ui/linkage-attr/linkage4.rs diff --git a/src/test/ui/linkage-attr/linkage4.stderr b/tests/ui/linkage-attr/linkage4.stderr similarity index 100% rename from src/test/ui/linkage-attr/linkage4.stderr rename to tests/ui/linkage-attr/linkage4.stderr diff --git a/src/test/ui/lint-unknown-lints-at-crate-level.rs b/tests/ui/lint-unknown-lints-at-crate-level.rs similarity index 100% rename from src/test/ui/lint-unknown-lints-at-crate-level.rs rename to tests/ui/lint-unknown-lints-at-crate-level.rs diff --git a/src/test/ui/lint/auxiliary/add-impl.rs b/tests/ui/lint/auxiliary/add-impl.rs similarity index 100% rename from src/test/ui/lint/auxiliary/add-impl.rs rename to tests/ui/lint/auxiliary/add-impl.rs diff --git a/src/test/ui/lint/auxiliary/external_extern_fn.rs b/tests/ui/lint/auxiliary/external_extern_fn.rs similarity index 100% rename from src/test/ui/lint/auxiliary/external_extern_fn.rs rename to tests/ui/lint/auxiliary/external_extern_fn.rs diff --git a/src/test/ui/lint/auxiliary/inherited_stability.rs b/tests/ui/lint/auxiliary/inherited_stability.rs similarity index 100% rename from src/test/ui/lint/auxiliary/inherited_stability.rs rename to tests/ui/lint/auxiliary/inherited_stability.rs diff --git a/src/test/ui/lint/auxiliary/lint_output_format.rs b/tests/ui/lint/auxiliary/lint_output_format.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_output_format.rs rename to tests/ui/lint/auxiliary/lint_output_format.rs diff --git a/src/test/ui/lint/auxiliary/lint_stability.rs b/tests/ui/lint/auxiliary/lint_stability.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_stability.rs rename to tests/ui/lint/auxiliary/lint_stability.rs diff --git a/src/test/ui/lint/auxiliary/lint_stability_fields.rs b/tests/ui/lint/auxiliary/lint_stability_fields.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_stability_fields.rs rename to tests/ui/lint/auxiliary/lint_stability_fields.rs diff --git a/src/test/ui/lint/auxiliary/lints-in-foreign-macros.rs b/tests/ui/lint/auxiliary/lints-in-foreign-macros.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lints-in-foreign-macros.rs rename to tests/ui/lint/auxiliary/lints-in-foreign-macros.rs diff --git a/src/test/ui/lint/auxiliary/stability-cfg2.rs b/tests/ui/lint/auxiliary/stability-cfg2.rs similarity index 100% rename from src/test/ui/lint/auxiliary/stability-cfg2.rs rename to tests/ui/lint/auxiliary/stability-cfg2.rs diff --git a/src/test/ui/lint/auxiliary/stability_cfg1.rs b/tests/ui/lint/auxiliary/stability_cfg1.rs similarity index 100% rename from src/test/ui/lint/auxiliary/stability_cfg1.rs rename to tests/ui/lint/auxiliary/stability_cfg1.rs diff --git a/src/test/ui/lint/auxiliary/stability_cfg2.rs b/tests/ui/lint/auxiliary/stability_cfg2.rs similarity index 100% rename from src/test/ui/lint/auxiliary/stability_cfg2.rs rename to tests/ui/lint/auxiliary/stability_cfg2.rs diff --git a/src/test/ui/lint/auxiliary/trivial-cast-ice.rs b/tests/ui/lint/auxiliary/trivial-cast-ice.rs similarity index 100% rename from src/test/ui/lint/auxiliary/trivial-cast-ice.rs rename to tests/ui/lint/auxiliary/trivial-cast-ice.rs diff --git a/src/test/ui/lint/auxiliary/unaligned_references_external_crate.rs b/tests/ui/lint/auxiliary/unaligned_references_external_crate.rs similarity index 100% rename from src/test/ui/lint/auxiliary/unaligned_references_external_crate.rs rename to tests/ui/lint/auxiliary/unaligned_references_external_crate.rs diff --git a/src/test/ui/lint/bad-lint-cap.rs b/tests/ui/lint/bad-lint-cap.rs similarity index 100% rename from src/test/ui/lint/bad-lint-cap.rs rename to tests/ui/lint/bad-lint-cap.rs diff --git a/src/test/ui/lint/bad-lint-cap.stderr b/tests/ui/lint/bad-lint-cap.stderr similarity index 100% rename from src/test/ui/lint/bad-lint-cap.stderr rename to tests/ui/lint/bad-lint-cap.stderr diff --git a/src/test/ui/lint/bad-lint-cap2.rs b/tests/ui/lint/bad-lint-cap2.rs similarity index 100% rename from src/test/ui/lint/bad-lint-cap2.rs rename to tests/ui/lint/bad-lint-cap2.rs diff --git a/src/test/ui/lint/bad-lint-cap2.stderr b/tests/ui/lint/bad-lint-cap2.stderr similarity index 100% rename from src/test/ui/lint/bad-lint-cap2.stderr rename to tests/ui/lint/bad-lint-cap2.stderr diff --git a/src/test/ui/lint/bad-lint-cap3.rs b/tests/ui/lint/bad-lint-cap3.rs similarity index 100% rename from src/test/ui/lint/bad-lint-cap3.rs rename to tests/ui/lint/bad-lint-cap3.rs diff --git a/src/test/ui/lint/bad-lint-cap3.stderr b/tests/ui/lint/bad-lint-cap3.stderr similarity index 100% rename from src/test/ui/lint/bad-lint-cap3.stderr rename to tests/ui/lint/bad-lint-cap3.stderr diff --git a/src/test/ui/lint/bare-trait-objects-path.rs b/tests/ui/lint/bare-trait-objects-path.rs similarity index 100% rename from src/test/ui/lint/bare-trait-objects-path.rs rename to tests/ui/lint/bare-trait-objects-path.rs diff --git a/src/test/ui/lint/bare-trait-objects-path.stderr b/tests/ui/lint/bare-trait-objects-path.stderr similarity index 100% rename from src/test/ui/lint/bare-trait-objects-path.stderr rename to tests/ui/lint/bare-trait-objects-path.stderr diff --git a/src/test/ui/lint/clashing-extern-fn-recursion.rs b/tests/ui/lint/clashing-extern-fn-recursion.rs similarity index 100% rename from src/test/ui/lint/clashing-extern-fn-recursion.rs rename to tests/ui/lint/clashing-extern-fn-recursion.rs diff --git a/src/test/ui/lint/clashing-extern-fn-wasm.rs b/tests/ui/lint/clashing-extern-fn-wasm.rs similarity index 100% rename from src/test/ui/lint/clashing-extern-fn-wasm.rs rename to tests/ui/lint/clashing-extern-fn-wasm.rs diff --git a/src/test/ui/lint/clashing-extern-fn.rs b/tests/ui/lint/clashing-extern-fn.rs similarity index 100% rename from src/test/ui/lint/clashing-extern-fn.rs rename to tests/ui/lint/clashing-extern-fn.rs diff --git a/src/test/ui/lint/clashing-extern-fn.stderr b/tests/ui/lint/clashing-extern-fn.stderr similarity index 100% rename from src/test/ui/lint/clashing-extern-fn.stderr rename to tests/ui/lint/clashing-extern-fn.stderr diff --git a/src/test/ui/lint/cli-lint-override.forbid_warn.stderr b/tests/ui/lint/cli-lint-override.forbid_warn.stderr similarity index 100% rename from src/test/ui/lint/cli-lint-override.forbid_warn.stderr rename to tests/ui/lint/cli-lint-override.forbid_warn.stderr diff --git a/src/test/ui/lint/cli-lint-override.force_warn_deny.stderr b/tests/ui/lint/cli-lint-override.force_warn_deny.stderr similarity index 100% rename from src/test/ui/lint/cli-lint-override.force_warn_deny.stderr rename to tests/ui/lint/cli-lint-override.force_warn_deny.stderr diff --git a/src/test/ui/lint/cli-lint-override.rs b/tests/ui/lint/cli-lint-override.rs similarity index 100% rename from src/test/ui/lint/cli-lint-override.rs rename to tests/ui/lint/cli-lint-override.rs diff --git a/src/test/ui/lint/cli-lint-override.warn_deny.stderr b/tests/ui/lint/cli-lint-override.warn_deny.stderr similarity index 100% rename from src/test/ui/lint/cli-lint-override.warn_deny.stderr rename to tests/ui/lint/cli-lint-override.warn_deny.stderr diff --git a/src/test/ui/lint/cli-unknown-force-warn.rs b/tests/ui/lint/cli-unknown-force-warn.rs similarity index 100% rename from src/test/ui/lint/cli-unknown-force-warn.rs rename to tests/ui/lint/cli-unknown-force-warn.rs diff --git a/src/test/ui/lint/cli-unknown-force-warn.stderr b/tests/ui/lint/cli-unknown-force-warn.stderr similarity index 100% rename from src/test/ui/lint/cli-unknown-force-warn.stderr rename to tests/ui/lint/cli-unknown-force-warn.stderr diff --git a/src/test/ui/lint/command-line-lint-group-allow.rs b/tests/ui/lint/command-line-lint-group-allow.rs similarity index 100% rename from src/test/ui/lint/command-line-lint-group-allow.rs rename to tests/ui/lint/command-line-lint-group-allow.rs diff --git a/src/test/ui/lint/command-line-lint-group-deny.rs b/tests/ui/lint/command-line-lint-group-deny.rs similarity index 100% rename from src/test/ui/lint/command-line-lint-group-deny.rs rename to tests/ui/lint/command-line-lint-group-deny.rs diff --git a/src/test/ui/lint/command-line-lint-group-deny.stderr b/tests/ui/lint/command-line-lint-group-deny.stderr similarity index 100% rename from src/test/ui/lint/command-line-lint-group-deny.stderr rename to tests/ui/lint/command-line-lint-group-deny.stderr diff --git a/src/test/ui/lint/command-line-lint-group-forbid.rs b/tests/ui/lint/command-line-lint-group-forbid.rs similarity index 100% rename from src/test/ui/lint/command-line-lint-group-forbid.rs rename to tests/ui/lint/command-line-lint-group-forbid.rs diff --git a/src/test/ui/lint/command-line-lint-group-forbid.stderr b/tests/ui/lint/command-line-lint-group-forbid.stderr similarity index 100% rename from src/test/ui/lint/command-line-lint-group-forbid.stderr rename to tests/ui/lint/command-line-lint-group-forbid.stderr diff --git a/src/test/ui/lint/command-line-lint-group-warn.rs b/tests/ui/lint/command-line-lint-group-warn.rs similarity index 100% rename from src/test/ui/lint/command-line-lint-group-warn.rs rename to tests/ui/lint/command-line-lint-group-warn.rs diff --git a/src/test/ui/lint/command-line-lint-group-warn.stderr b/tests/ui/lint/command-line-lint-group-warn.stderr similarity index 100% rename from src/test/ui/lint/command-line-lint-group-warn.stderr rename to tests/ui/lint/command-line-lint-group-warn.stderr diff --git a/src/test/ui/lint/command-line-register-lint-tool.rs b/tests/ui/lint/command-line-register-lint-tool.rs similarity index 100% rename from src/test/ui/lint/command-line-register-lint-tool.rs rename to tests/ui/lint/command-line-register-lint-tool.rs diff --git a/src/test/ui/lint/command-line-register-unknown-lint-tool.rs b/tests/ui/lint/command-line-register-unknown-lint-tool.rs similarity index 100% rename from src/test/ui/lint/command-line-register-unknown-lint-tool.rs rename to tests/ui/lint/command-line-register-unknown-lint-tool.rs diff --git a/src/test/ui/lint/command-line-register-unknown-lint-tool.stderr b/tests/ui/lint/command-line-register-unknown-lint-tool.stderr similarity index 100% rename from src/test/ui/lint/command-line-register-unknown-lint-tool.stderr rename to tests/ui/lint/command-line-register-unknown-lint-tool.stderr diff --git a/src/test/ui/lint/crate_level_only_lint.rs b/tests/ui/lint/crate_level_only_lint.rs similarity index 100% rename from src/test/ui/lint/crate_level_only_lint.rs rename to tests/ui/lint/crate_level_only_lint.rs diff --git a/src/test/ui/lint/crate_level_only_lint.stderr b/tests/ui/lint/crate_level_only_lint.stderr similarity index 100% rename from src/test/ui/lint/crate_level_only_lint.stderr rename to tests/ui/lint/crate_level_only_lint.stderr diff --git a/src/test/ui/lint/dead-code/alias-in-pat.rs b/tests/ui/lint/dead-code/alias-in-pat.rs similarity index 100% rename from src/test/ui/lint/dead-code/alias-in-pat.rs rename to tests/ui/lint/dead-code/alias-in-pat.rs diff --git a/src/test/ui/lint/dead-code/anon-const-in-pat.rs b/tests/ui/lint/dead-code/anon-const-in-pat.rs similarity index 100% rename from src/test/ui/lint/dead-code/anon-const-in-pat.rs rename to tests/ui/lint/dead-code/anon-const-in-pat.rs diff --git a/src/test/ui/lint/dead-code/associated-type.rs b/tests/ui/lint/dead-code/associated-type.rs similarity index 100% rename from src/test/ui/lint/dead-code/associated-type.rs rename to tests/ui/lint/dead-code/associated-type.rs diff --git a/src/test/ui/lint/dead-code/basic.rs b/tests/ui/lint/dead-code/basic.rs similarity index 100% rename from src/test/ui/lint/dead-code/basic.rs rename to tests/ui/lint/dead-code/basic.rs diff --git a/src/test/ui/lint/dead-code/basic.stderr b/tests/ui/lint/dead-code/basic.stderr similarity index 100% rename from src/test/ui/lint/dead-code/basic.stderr rename to tests/ui/lint/dead-code/basic.stderr diff --git a/src/test/ui/lint/dead-code/closure-bang.rs b/tests/ui/lint/dead-code/closure-bang.rs similarity index 100% rename from src/test/ui/lint/dead-code/closure-bang.rs rename to tests/ui/lint/dead-code/closure-bang.rs diff --git a/src/test/ui/lint/dead-code/const-and-self.rs b/tests/ui/lint/dead-code/const-and-self.rs similarity index 100% rename from src/test/ui/lint/dead-code/const-and-self.rs rename to tests/ui/lint/dead-code/const-and-self.rs diff --git a/src/test/ui/lint/dead-code/const-and-self.stderr b/tests/ui/lint/dead-code/const-and-self.stderr similarity index 100% rename from src/test/ui/lint/dead-code/const-and-self.stderr rename to tests/ui/lint/dead-code/const-and-self.stderr diff --git a/src/test/ui/lint/dead-code/empty-unused-enum.rs b/tests/ui/lint/dead-code/empty-unused-enum.rs similarity index 100% rename from src/test/ui/lint/dead-code/empty-unused-enum.rs rename to tests/ui/lint/dead-code/empty-unused-enum.rs diff --git a/src/test/ui/lint/dead-code/empty-unused-enum.stderr b/tests/ui/lint/dead-code/empty-unused-enum.stderr similarity index 100% rename from src/test/ui/lint/dead-code/empty-unused-enum.stderr rename to tests/ui/lint/dead-code/empty-unused-enum.stderr diff --git a/src/test/ui/lint/dead-code/empty-unused-public-enum.rs b/tests/ui/lint/dead-code/empty-unused-public-enum.rs similarity index 100% rename from src/test/ui/lint/dead-code/empty-unused-public-enum.rs rename to tests/ui/lint/dead-code/empty-unused-public-enum.rs diff --git a/src/test/ui/lint/dead-code/enum-variants.rs b/tests/ui/lint/dead-code/enum-variants.rs similarity index 100% rename from src/test/ui/lint/dead-code/enum-variants.rs rename to tests/ui/lint/dead-code/enum-variants.rs diff --git a/src/test/ui/lint/dead-code/impl-trait.rs b/tests/ui/lint/dead-code/impl-trait.rs similarity index 100% rename from src/test/ui/lint/dead-code/impl-trait.rs rename to tests/ui/lint/dead-code/impl-trait.rs diff --git a/src/test/ui/lint/dead-code/impl-trait.stderr b/tests/ui/lint/dead-code/impl-trait.stderr similarity index 100% rename from src/test/ui/lint/dead-code/impl-trait.stderr rename to tests/ui/lint/dead-code/impl-trait.stderr diff --git a/src/test/ui/lint/dead-code/issue-68408-false-positive.rs b/tests/ui/lint/dead-code/issue-68408-false-positive.rs similarity index 100% rename from src/test/ui/lint/dead-code/issue-68408-false-positive.rs rename to tests/ui/lint/dead-code/issue-68408-false-positive.rs diff --git a/src/test/ui/lint/dead-code/issue-85071-2.rs b/tests/ui/lint/dead-code/issue-85071-2.rs similarity index 100% rename from src/test/ui/lint/dead-code/issue-85071-2.rs rename to tests/ui/lint/dead-code/issue-85071-2.rs diff --git a/src/test/ui/lint/dead-code/issue-85071-2.stderr b/tests/ui/lint/dead-code/issue-85071-2.stderr similarity index 100% rename from src/test/ui/lint/dead-code/issue-85071-2.stderr rename to tests/ui/lint/dead-code/issue-85071-2.stderr diff --git a/src/test/ui/lint/dead-code/issue-85071.rs b/tests/ui/lint/dead-code/issue-85071.rs similarity index 100% rename from src/test/ui/lint/dead-code/issue-85071.rs rename to tests/ui/lint/dead-code/issue-85071.rs diff --git a/src/test/ui/lint/dead-code/issue-85071.stderr b/tests/ui/lint/dead-code/issue-85071.stderr similarity index 100% rename from src/test/ui/lint/dead-code/issue-85071.stderr rename to tests/ui/lint/dead-code/issue-85071.stderr diff --git a/src/test/ui/lint/dead-code/issue-85255.rs b/tests/ui/lint/dead-code/issue-85255.rs similarity index 100% rename from src/test/ui/lint/dead-code/issue-85255.rs rename to tests/ui/lint/dead-code/issue-85255.rs diff --git a/src/test/ui/lint/dead-code/issue-85255.stderr b/tests/ui/lint/dead-code/issue-85255.stderr similarity index 100% rename from src/test/ui/lint/dead-code/issue-85255.stderr rename to tests/ui/lint/dead-code/issue-85255.stderr diff --git a/src/test/ui/lint/dead-code/leading-underscore.rs b/tests/ui/lint/dead-code/leading-underscore.rs similarity index 100% rename from src/test/ui/lint/dead-code/leading-underscore.rs rename to tests/ui/lint/dead-code/leading-underscore.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-1.rs b/tests/ui/lint/dead-code/lint-dead-code-1.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-1.rs rename to tests/ui/lint/dead-code/lint-dead-code-1.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-1.stderr b/tests/ui/lint/dead-code/lint-dead-code-1.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-1.stderr rename to tests/ui/lint/dead-code/lint-dead-code-1.stderr diff --git a/src/test/ui/lint/dead-code/lint-dead-code-2.rs b/tests/ui/lint/dead-code/lint-dead-code-2.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-2.rs rename to tests/ui/lint/dead-code/lint-dead-code-2.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-2.stderr b/tests/ui/lint/dead-code/lint-dead-code-2.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-2.stderr rename to tests/ui/lint/dead-code/lint-dead-code-2.stderr diff --git a/src/test/ui/lint/dead-code/lint-dead-code-3.rs b/tests/ui/lint/dead-code/lint-dead-code-3.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-3.rs rename to tests/ui/lint/dead-code/lint-dead-code-3.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-3.stderr b/tests/ui/lint/dead-code/lint-dead-code-3.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-3.stderr rename to tests/ui/lint/dead-code/lint-dead-code-3.stderr diff --git a/src/test/ui/lint/dead-code/lint-dead-code-4.rs b/tests/ui/lint/dead-code/lint-dead-code-4.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-4.rs rename to tests/ui/lint/dead-code/lint-dead-code-4.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-4.stderr b/tests/ui/lint/dead-code/lint-dead-code-4.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-4.stderr rename to tests/ui/lint/dead-code/lint-dead-code-4.stderr diff --git a/src/test/ui/lint/dead-code/lint-dead-code-5.rs b/tests/ui/lint/dead-code/lint-dead-code-5.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-5.rs rename to tests/ui/lint/dead-code/lint-dead-code-5.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-5.stderr b/tests/ui/lint/dead-code/lint-dead-code-5.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-5.stderr rename to tests/ui/lint/dead-code/lint-dead-code-5.stderr diff --git a/src/test/ui/lint/dead-code/lint-dead-code-6.rs b/tests/ui/lint/dead-code/lint-dead-code-6.rs similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-6.rs rename to tests/ui/lint/dead-code/lint-dead-code-6.rs diff --git a/src/test/ui/lint/dead-code/lint-dead-code-6.stderr b/tests/ui/lint/dead-code/lint-dead-code-6.stderr similarity index 100% rename from src/test/ui/lint/dead-code/lint-dead-code-6.stderr rename to tests/ui/lint/dead-code/lint-dead-code-6.stderr diff --git a/src/test/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.rs b/tests/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.rs similarity index 100% rename from src/test/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.rs rename to tests/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.rs diff --git a/src/test/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.stderr b/tests/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.stderr similarity index 100% rename from src/test/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.stderr rename to tests/ui/lint/dead-code/multiple-dead-codes-in-the-same-struct.stderr diff --git a/src/test/ui/lint/dead-code/newline-span.rs b/tests/ui/lint/dead-code/newline-span.rs similarity index 100% rename from src/test/ui/lint/dead-code/newline-span.rs rename to tests/ui/lint/dead-code/newline-span.rs diff --git a/src/test/ui/lint/dead-code/newline-span.stderr b/tests/ui/lint/dead-code/newline-span.stderr similarity index 100% rename from src/test/ui/lint/dead-code/newline-span.stderr rename to tests/ui/lint/dead-code/newline-span.stderr diff --git a/src/test/ui/lint/dead-code/self-assign.rs b/tests/ui/lint/dead-code/self-assign.rs similarity index 100% rename from src/test/ui/lint/dead-code/self-assign.rs rename to tests/ui/lint/dead-code/self-assign.rs diff --git a/src/test/ui/lint/dead-code/self-assign.stderr b/tests/ui/lint/dead-code/self-assign.stderr similarity index 100% rename from src/test/ui/lint/dead-code/self-assign.stderr rename to tests/ui/lint/dead-code/self-assign.stderr diff --git a/src/test/ui/lint/dead-code/trait-impl.rs b/tests/ui/lint/dead-code/trait-impl.rs similarity index 100% rename from src/test/ui/lint/dead-code/trait-impl.rs rename to tests/ui/lint/dead-code/trait-impl.rs diff --git a/src/test/ui/lint/dead-code/tuple-struct-field.rs b/tests/ui/lint/dead-code/tuple-struct-field.rs similarity index 100% rename from src/test/ui/lint/dead-code/tuple-struct-field.rs rename to tests/ui/lint/dead-code/tuple-struct-field.rs diff --git a/src/test/ui/lint/dead-code/tuple-struct-field.stderr b/tests/ui/lint/dead-code/tuple-struct-field.stderr similarity index 100% rename from src/test/ui/lint/dead-code/tuple-struct-field.stderr rename to tests/ui/lint/dead-code/tuple-struct-field.stderr diff --git a/src/test/ui/lint/dead-code/type-alias.rs b/tests/ui/lint/dead-code/type-alias.rs similarity index 100% rename from src/test/ui/lint/dead-code/type-alias.rs rename to tests/ui/lint/dead-code/type-alias.rs diff --git a/src/test/ui/lint/dead-code/type-alias.stderr b/tests/ui/lint/dead-code/type-alias.stderr similarity index 100% rename from src/test/ui/lint/dead-code/type-alias.stderr rename to tests/ui/lint/dead-code/type-alias.stderr diff --git a/src/test/ui/lint/dead-code/type-in-foreign.rs b/tests/ui/lint/dead-code/type-in-foreign.rs similarity index 100% rename from src/test/ui/lint/dead-code/type-in-foreign.rs rename to tests/ui/lint/dead-code/type-in-foreign.rs diff --git a/src/test/ui/lint/dead-code/unused-enum.rs b/tests/ui/lint/dead-code/unused-enum.rs similarity index 100% rename from src/test/ui/lint/dead-code/unused-enum.rs rename to tests/ui/lint/dead-code/unused-enum.rs diff --git a/src/test/ui/lint/dead-code/unused-enum.stderr b/tests/ui/lint/dead-code/unused-enum.stderr similarity index 100% rename from src/test/ui/lint/dead-code/unused-enum.stderr rename to tests/ui/lint/dead-code/unused-enum.stderr diff --git a/src/test/ui/lint/dead-code/unused-struct-variant.rs b/tests/ui/lint/dead-code/unused-struct-variant.rs similarity index 100% rename from src/test/ui/lint/dead-code/unused-struct-variant.rs rename to tests/ui/lint/dead-code/unused-struct-variant.rs diff --git a/src/test/ui/lint/dead-code/unused-struct-variant.stderr b/tests/ui/lint/dead-code/unused-struct-variant.stderr similarity index 100% rename from src/test/ui/lint/dead-code/unused-struct-variant.stderr rename to tests/ui/lint/dead-code/unused-struct-variant.stderr diff --git a/src/test/ui/lint/dead-code/unused-variant-pub.rs b/tests/ui/lint/dead-code/unused-variant-pub.rs similarity index 100% rename from src/test/ui/lint/dead-code/unused-variant-pub.rs rename to tests/ui/lint/dead-code/unused-variant-pub.rs diff --git a/src/test/ui/lint/dead-code/unused-variant.rs b/tests/ui/lint/dead-code/unused-variant.rs similarity index 100% rename from src/test/ui/lint/dead-code/unused-variant.rs rename to tests/ui/lint/dead-code/unused-variant.rs diff --git a/src/test/ui/lint/dead-code/unused-variant.stderr b/tests/ui/lint/dead-code/unused-variant.stderr similarity index 100% rename from src/test/ui/lint/dead-code/unused-variant.stderr rename to tests/ui/lint/dead-code/unused-variant.stderr diff --git a/src/test/ui/lint/dead-code/with-core-crate.rs b/tests/ui/lint/dead-code/with-core-crate.rs similarity index 100% rename from src/test/ui/lint/dead-code/with-core-crate.rs rename to tests/ui/lint/dead-code/with-core-crate.rs diff --git a/src/test/ui/lint/dead-code/with-core-crate.stderr b/tests/ui/lint/dead-code/with-core-crate.stderr similarity index 100% rename from src/test/ui/lint/dead-code/with-core-crate.stderr rename to tests/ui/lint/dead-code/with-core-crate.stderr diff --git a/src/test/ui/lint/dead-code/with-impl.rs b/tests/ui/lint/dead-code/with-impl.rs similarity index 100% rename from src/test/ui/lint/dead-code/with-impl.rs rename to tests/ui/lint/dead-code/with-impl.rs diff --git a/src/test/ui/lint/deny-overflowing-literals.rs b/tests/ui/lint/deny-overflowing-literals.rs similarity index 100% rename from src/test/ui/lint/deny-overflowing-literals.rs rename to tests/ui/lint/deny-overflowing-literals.rs diff --git a/src/test/ui/lint/deny-overflowing-literals.stderr b/tests/ui/lint/deny-overflowing-literals.stderr similarity index 100% rename from src/test/ui/lint/deny-overflowing-literals.stderr rename to tests/ui/lint/deny-overflowing-literals.stderr diff --git a/src/test/ui/lint/empty-lint-attributes.rs b/tests/ui/lint/empty-lint-attributes.rs similarity index 100% rename from src/test/ui/lint/empty-lint-attributes.rs rename to tests/ui/lint/empty-lint-attributes.rs diff --git a/src/test/ui/lint/enable-unstable-lib-feature.rs b/tests/ui/lint/enable-unstable-lib-feature.rs similarity index 100% rename from src/test/ui/lint/enable-unstable-lib-feature.rs rename to tests/ui/lint/enable-unstable-lib-feature.rs diff --git a/src/test/ui/lint/enable-unstable-lib-feature.stderr b/tests/ui/lint/enable-unstable-lib-feature.stderr similarity index 100% rename from src/test/ui/lint/enable-unstable-lib-feature.stderr rename to tests/ui/lint/enable-unstable-lib-feature.stderr diff --git a/src/test/ui/lint/expansion-time-include.rs b/tests/ui/lint/expansion-time-include.rs similarity index 100% rename from src/test/ui/lint/expansion-time-include.rs rename to tests/ui/lint/expansion-time-include.rs diff --git a/src/test/ui/lint/expansion-time.rs b/tests/ui/lint/expansion-time.rs similarity index 100% rename from src/test/ui/lint/expansion-time.rs rename to tests/ui/lint/expansion-time.rs diff --git a/src/test/ui/lint/expansion-time.stderr b/tests/ui/lint/expansion-time.stderr similarity index 100% rename from src/test/ui/lint/expansion-time.stderr rename to tests/ui/lint/expansion-time.stderr diff --git a/src/test/ui/lint/expr_attr_paren_order.rs b/tests/ui/lint/expr_attr_paren_order.rs similarity index 100% rename from src/test/ui/lint/expr_attr_paren_order.rs rename to tests/ui/lint/expr_attr_paren_order.rs diff --git a/src/test/ui/lint/expr_attr_paren_order.stderr b/tests/ui/lint/expr_attr_paren_order.stderr similarity index 100% rename from src/test/ui/lint/expr_attr_paren_order.stderr rename to tests/ui/lint/expr_attr_paren_order.stderr diff --git a/src/test/ui/lint/fn_must_use.rs b/tests/ui/lint/fn_must_use.rs similarity index 100% rename from src/test/ui/lint/fn_must_use.rs rename to tests/ui/lint/fn_must_use.rs diff --git a/src/test/ui/lint/fn_must_use.stderr b/tests/ui/lint/fn_must_use.stderr similarity index 100% rename from src/test/ui/lint/fn_must_use.stderr rename to tests/ui/lint/fn_must_use.stderr diff --git a/src/test/ui/lint/for_loop_over_fallibles.rs b/tests/ui/lint/for_loop_over_fallibles.rs similarity index 100% rename from src/test/ui/lint/for_loop_over_fallibles.rs rename to tests/ui/lint/for_loop_over_fallibles.rs diff --git a/src/test/ui/lint/for_loop_over_fallibles.stderr b/tests/ui/lint/for_loop_over_fallibles.stderr similarity index 100% rename from src/test/ui/lint/for_loop_over_fallibles.stderr rename to tests/ui/lint/for_loop_over_fallibles.stderr diff --git a/src/test/ui/lint/forbid-error-capped.rs b/tests/ui/lint/forbid-error-capped.rs similarity index 100% rename from src/test/ui/lint/forbid-error-capped.rs rename to tests/ui/lint/forbid-error-capped.rs diff --git a/src/test/ui/lint/forbid-group-group-1.rs b/tests/ui/lint/forbid-group-group-1.rs similarity index 100% rename from src/test/ui/lint/forbid-group-group-1.rs rename to tests/ui/lint/forbid-group-group-1.rs diff --git a/src/test/ui/lint/forbid-group-group-1.stderr b/tests/ui/lint/forbid-group-group-1.stderr similarity index 100% rename from src/test/ui/lint/forbid-group-group-1.stderr rename to tests/ui/lint/forbid-group-group-1.stderr diff --git a/src/test/ui/lint/forbid-group-group-2.rs b/tests/ui/lint/forbid-group-group-2.rs similarity index 100% rename from src/test/ui/lint/forbid-group-group-2.rs rename to tests/ui/lint/forbid-group-group-2.rs diff --git a/src/test/ui/lint/forbid-group-group-2.stderr b/tests/ui/lint/forbid-group-group-2.stderr similarity index 100% rename from src/test/ui/lint/forbid-group-group-2.stderr rename to tests/ui/lint/forbid-group-group-2.stderr diff --git a/src/test/ui/lint/forbid-group-member.rs b/tests/ui/lint/forbid-group-member.rs similarity index 100% rename from src/test/ui/lint/forbid-group-member.rs rename to tests/ui/lint/forbid-group-member.rs diff --git a/src/test/ui/lint/forbid-group-member.stderr b/tests/ui/lint/forbid-group-member.stderr similarity index 100% rename from src/test/ui/lint/forbid-group-member.stderr rename to tests/ui/lint/forbid-group-member.stderr diff --git a/src/test/ui/lint/forbid-member-group.rs b/tests/ui/lint/forbid-member-group.rs similarity index 100% rename from src/test/ui/lint/forbid-member-group.rs rename to tests/ui/lint/forbid-member-group.rs diff --git a/src/test/ui/lint/forbid-member-group.stderr b/tests/ui/lint/forbid-member-group.stderr similarity index 100% rename from src/test/ui/lint/forbid-member-group.stderr rename to tests/ui/lint/forbid-member-group.stderr diff --git a/src/test/ui/lint/force-warn/allow-warnings.rs b/tests/ui/lint/force-warn/allow-warnings.rs similarity index 100% rename from src/test/ui/lint/force-warn/allow-warnings.rs rename to tests/ui/lint/force-warn/allow-warnings.rs diff --git a/src/test/ui/lint/force-warn/allow-warnings.stderr b/tests/ui/lint/force-warn/allow-warnings.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allow-warnings.stderr rename to tests/ui/lint/force-warn/allow-warnings.stderr diff --git a/src/test/ui/lint/force-warn/allowed-by-default-lint.rs b/tests/ui/lint/force-warn/allowed-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/allowed-by-default-lint.rs rename to tests/ui/lint/force-warn/allowed-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/allowed-by-default-lint.stderr b/tests/ui/lint/force-warn/allowed-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allowed-by-default-lint.stderr rename to tests/ui/lint/force-warn/allowed-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/allowed-cli-deny-by-default-lint.rs b/tests/ui/lint/force-warn/allowed-cli-deny-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/allowed-cli-deny-by-default-lint.rs rename to tests/ui/lint/force-warn/allowed-cli-deny-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/allowed-cli-deny-by-default-lint.stderr b/tests/ui/lint/force-warn/allowed-cli-deny-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allowed-cli-deny-by-default-lint.stderr rename to tests/ui/lint/force-warn/allowed-cli-deny-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/allowed-deny-by-default-lint.rs b/tests/ui/lint/force-warn/allowed-deny-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/allowed-deny-by-default-lint.rs rename to tests/ui/lint/force-warn/allowed-deny-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/allowed-deny-by-default-lint.stderr b/tests/ui/lint/force-warn/allowed-deny-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allowed-deny-by-default-lint.stderr rename to tests/ui/lint/force-warn/allowed-deny-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/allowed-group-warn-by-default-lint.rs b/tests/ui/lint/force-warn/allowed-group-warn-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/allowed-group-warn-by-default-lint.rs rename to tests/ui/lint/force-warn/allowed-group-warn-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/allowed-group-warn-by-default-lint.stderr b/tests/ui/lint/force-warn/allowed-group-warn-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allowed-group-warn-by-default-lint.stderr rename to tests/ui/lint/force-warn/allowed-group-warn-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/allowed-warn-by-default-lint.rs b/tests/ui/lint/force-warn/allowed-warn-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/allowed-warn-by-default-lint.rs rename to tests/ui/lint/force-warn/allowed-warn-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/allowed-warn-by-default-lint.stderr b/tests/ui/lint/force-warn/allowed-warn-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/allowed-warn-by-default-lint.stderr rename to tests/ui/lint/force-warn/allowed-warn-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/cap-lints-allow.rs b/tests/ui/lint/force-warn/cap-lints-allow.rs similarity index 100% rename from src/test/ui/lint/force-warn/cap-lints-allow.rs rename to tests/ui/lint/force-warn/cap-lints-allow.rs diff --git a/src/test/ui/lint/force-warn/cap-lints-allow.stderr b/tests/ui/lint/force-warn/cap-lints-allow.stderr similarity index 100% rename from src/test/ui/lint/force-warn/cap-lints-allow.stderr rename to tests/ui/lint/force-warn/cap-lints-allow.stderr diff --git a/src/test/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.rs b/tests/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.rs rename to tests/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.stderr b/tests/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.stderr rename to tests/ui/lint/force-warn/cap-lints-warn-allowed-warn-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/deny-by-default-lint.rs b/tests/ui/lint/force-warn/deny-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/deny-by-default-lint.rs rename to tests/ui/lint/force-warn/deny-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/deny-by-default-lint.stderr b/tests/ui/lint/force-warn/deny-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/deny-by-default-lint.stderr rename to tests/ui/lint/force-warn/deny-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/lint-group-allow-warnings.rs b/tests/ui/lint/force-warn/lint-group-allow-warnings.rs similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allow-warnings.rs rename to tests/ui/lint/force-warn/lint-group-allow-warnings.rs diff --git a/src/test/ui/lint/force-warn/lint-group-allow-warnings.stderr b/tests/ui/lint/force-warn/lint-group-allow-warnings.stderr similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allow-warnings.stderr rename to tests/ui/lint/force-warn/lint-group-allow-warnings.stderr diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.rs b/tests/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.rs rename to tests/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.stderr b/tests/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.stderr rename to tests/ui/lint/force-warn/lint-group-allowed-cli-warn-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-lint-group.rs b/tests/ui/lint/force-warn/lint-group-allowed-lint-group.rs similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-lint-group.rs rename to tests/ui/lint/force-warn/lint-group-allowed-lint-group.rs diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-lint-group.stderr b/tests/ui/lint/force-warn/lint-group-allowed-lint-group.stderr similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-lint-group.stderr rename to tests/ui/lint/force-warn/lint-group-allowed-lint-group.stderr diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.rs b/tests/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.rs similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.rs rename to tests/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.rs diff --git a/src/test/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.stderr b/tests/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.stderr similarity index 100% rename from src/test/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.stderr rename to tests/ui/lint/force-warn/lint-group-allowed-warn-by-default-lint.stderr diff --git a/src/test/ui/lint/force-warn/warn-by-default-lint-two-modules.rs b/tests/ui/lint/force-warn/warn-by-default-lint-two-modules.rs similarity index 100% rename from src/test/ui/lint/force-warn/warn-by-default-lint-two-modules.rs rename to tests/ui/lint/force-warn/warn-by-default-lint-two-modules.rs diff --git a/src/test/ui/lint/force-warn/warn-by-default-lint-two-modules.stderr b/tests/ui/lint/force-warn/warn-by-default-lint-two-modules.stderr similarity index 100% rename from src/test/ui/lint/force-warn/warn-by-default-lint-two-modules.stderr rename to tests/ui/lint/force-warn/warn-by-default-lint-two-modules.stderr diff --git a/src/test/ui/lint/force-warn/warnings-lint-group.rs b/tests/ui/lint/force-warn/warnings-lint-group.rs similarity index 100% rename from src/test/ui/lint/force-warn/warnings-lint-group.rs rename to tests/ui/lint/force-warn/warnings-lint-group.rs diff --git a/src/test/ui/lint/force-warn/warnings-lint-group.stderr b/tests/ui/lint/force-warn/warnings-lint-group.stderr similarity index 100% rename from src/test/ui/lint/force-warn/warnings-lint-group.stderr rename to tests/ui/lint/force-warn/warnings-lint-group.stderr diff --git a/src/test/ui/lint/function-item-references.rs b/tests/ui/lint/function-item-references.rs similarity index 100% rename from src/test/ui/lint/function-item-references.rs rename to tests/ui/lint/function-item-references.rs diff --git a/src/test/ui/lint/function-item-references.stderr b/tests/ui/lint/function-item-references.stderr similarity index 100% rename from src/test/ui/lint/function-item-references.stderr rename to tests/ui/lint/function-item-references.stderr diff --git a/src/test/ui/lint/future-incompat-test.rs b/tests/ui/lint/future-incompat-test.rs similarity index 100% rename from src/test/ui/lint/future-incompat-test.rs rename to tests/ui/lint/future-incompat-test.rs diff --git a/src/test/ui/lint/future-incompat-test.stderr b/tests/ui/lint/future-incompat-test.stderr similarity index 100% rename from src/test/ui/lint/future-incompat-test.stderr rename to tests/ui/lint/future-incompat-test.stderr diff --git a/src/test/ui/lint/inclusive-range-pattern-syntax.fixed b/tests/ui/lint/inclusive-range-pattern-syntax.fixed similarity index 100% rename from src/test/ui/lint/inclusive-range-pattern-syntax.fixed rename to tests/ui/lint/inclusive-range-pattern-syntax.fixed diff --git a/src/test/ui/lint/inclusive-range-pattern-syntax.rs b/tests/ui/lint/inclusive-range-pattern-syntax.rs similarity index 100% rename from src/test/ui/lint/inclusive-range-pattern-syntax.rs rename to tests/ui/lint/inclusive-range-pattern-syntax.rs diff --git a/src/test/ui/lint/inclusive-range-pattern-syntax.stderr b/tests/ui/lint/inclusive-range-pattern-syntax.stderr similarity index 100% rename from src/test/ui/lint/inclusive-range-pattern-syntax.stderr rename to tests/ui/lint/inclusive-range-pattern-syntax.stderr diff --git a/src/test/ui/lint/inert-attr-macro.rs b/tests/ui/lint/inert-attr-macro.rs similarity index 100% rename from src/test/ui/lint/inert-attr-macro.rs rename to tests/ui/lint/inert-attr-macro.rs diff --git a/src/test/ui/lint/inert-attr-macro.stderr b/tests/ui/lint/inert-attr-macro.stderr similarity index 100% rename from src/test/ui/lint/inert-attr-macro.stderr rename to tests/ui/lint/inert-attr-macro.stderr diff --git a/src/test/ui/lint/inline-trait-and-foreign-items.rs b/tests/ui/lint/inline-trait-and-foreign-items.rs similarity index 100% rename from src/test/ui/lint/inline-trait-and-foreign-items.rs rename to tests/ui/lint/inline-trait-and-foreign-items.rs diff --git a/src/test/ui/lint/inline-trait-and-foreign-items.stderr b/tests/ui/lint/inline-trait-and-foreign-items.stderr similarity index 100% rename from src/test/ui/lint/inline-trait-and-foreign-items.stderr rename to tests/ui/lint/inline-trait-and-foreign-items.stderr diff --git a/src/test/ui/lint/invalid_value.rs b/tests/ui/lint/invalid_value.rs similarity index 100% rename from src/test/ui/lint/invalid_value.rs rename to tests/ui/lint/invalid_value.rs diff --git a/src/test/ui/lint/invalid_value.stderr b/tests/ui/lint/invalid_value.stderr similarity index 100% rename from src/test/ui/lint/invalid_value.stderr rename to tests/ui/lint/invalid_value.stderr diff --git a/src/test/ui/lint/issue-101284.rs b/tests/ui/lint/issue-101284.rs similarity index 100% rename from src/test/ui/lint/issue-101284.rs rename to tests/ui/lint/issue-101284.rs diff --git a/src/test/ui/lint/issue-102705.rs b/tests/ui/lint/issue-102705.rs similarity index 100% rename from src/test/ui/lint/issue-102705.rs rename to tests/ui/lint/issue-102705.rs diff --git a/src/test/ui/lint/issue-103317.fixed b/tests/ui/lint/issue-103317.fixed similarity index 100% rename from src/test/ui/lint/issue-103317.fixed rename to tests/ui/lint/issue-103317.fixed diff --git a/src/test/ui/lint/issue-103317.rs b/tests/ui/lint/issue-103317.rs similarity index 100% rename from src/test/ui/lint/issue-103317.rs rename to tests/ui/lint/issue-103317.rs diff --git a/src/test/ui/lint/issue-103317.stderr b/tests/ui/lint/issue-103317.stderr similarity index 100% rename from src/test/ui/lint/issue-103317.stderr rename to tests/ui/lint/issue-103317.stderr diff --git a/src/test/ui/lint/issue-103435-extra-parentheses.fixed b/tests/ui/lint/issue-103435-extra-parentheses.fixed similarity index 100% rename from src/test/ui/lint/issue-103435-extra-parentheses.fixed rename to tests/ui/lint/issue-103435-extra-parentheses.fixed diff --git a/src/test/ui/lint/issue-103435-extra-parentheses.rs b/tests/ui/lint/issue-103435-extra-parentheses.rs similarity index 100% rename from src/test/ui/lint/issue-103435-extra-parentheses.rs rename to tests/ui/lint/issue-103435-extra-parentheses.rs diff --git a/src/test/ui/lint/issue-103435-extra-parentheses.stderr b/tests/ui/lint/issue-103435-extra-parentheses.stderr similarity index 100% rename from src/test/ui/lint/issue-103435-extra-parentheses.stderr rename to tests/ui/lint/issue-103435-extra-parentheses.stderr diff --git a/src/test/ui/lint/issue-104392.rs b/tests/ui/lint/issue-104392.rs similarity index 100% rename from src/test/ui/lint/issue-104392.rs rename to tests/ui/lint/issue-104392.rs diff --git a/src/test/ui/lint/issue-104392.stderr b/tests/ui/lint/issue-104392.stderr similarity index 100% rename from src/test/ui/lint/issue-104392.stderr rename to tests/ui/lint/issue-104392.stderr diff --git a/src/test/ui/lint/issue-104897.rs b/tests/ui/lint/issue-104897.rs similarity index 100% rename from src/test/ui/lint/issue-104897.rs rename to tests/ui/lint/issue-104897.rs diff --git a/src/test/ui/lint/issue-104897.stderr b/tests/ui/lint/issue-104897.stderr similarity index 100% rename from src/test/ui/lint/issue-104897.stderr rename to tests/ui/lint/issue-104897.stderr diff --git a/src/test/ui/lint/issue-14309.rs b/tests/ui/lint/issue-14309.rs similarity index 100% rename from src/test/ui/lint/issue-14309.rs rename to tests/ui/lint/issue-14309.rs diff --git a/src/test/ui/lint/issue-14309.stderr b/tests/ui/lint/issue-14309.stderr similarity index 100% rename from src/test/ui/lint/issue-14309.stderr rename to tests/ui/lint/issue-14309.stderr diff --git a/src/test/ui/lint/issue-14837.rs b/tests/ui/lint/issue-14837.rs similarity index 100% rename from src/test/ui/lint/issue-14837.rs rename to tests/ui/lint/issue-14837.rs diff --git a/src/test/ui/lint/issue-17718-const-naming.rs b/tests/ui/lint/issue-17718-const-naming.rs similarity index 100% rename from src/test/ui/lint/issue-17718-const-naming.rs rename to tests/ui/lint/issue-17718-const-naming.rs diff --git a/src/test/ui/lint/issue-17718-const-naming.stderr b/tests/ui/lint/issue-17718-const-naming.stderr similarity index 100% rename from src/test/ui/lint/issue-17718-const-naming.stderr rename to tests/ui/lint/issue-17718-const-naming.stderr diff --git a/src/test/ui/lint/issue-1866.rs b/tests/ui/lint/issue-1866.rs similarity index 100% rename from src/test/ui/lint/issue-1866.rs rename to tests/ui/lint/issue-1866.rs diff --git a/src/test/ui/lint/issue-1866.stderr b/tests/ui/lint/issue-1866.stderr similarity index 100% rename from src/test/ui/lint/issue-1866.stderr rename to tests/ui/lint/issue-1866.stderr diff --git a/src/test/ui/lint/issue-20343.rs b/tests/ui/lint/issue-20343.rs similarity index 100% rename from src/test/ui/lint/issue-20343.rs rename to tests/ui/lint/issue-20343.rs diff --git a/src/test/ui/lint/issue-30302.rs b/tests/ui/lint/issue-30302.rs similarity index 100% rename from src/test/ui/lint/issue-30302.rs rename to tests/ui/lint/issue-30302.rs diff --git a/src/test/ui/lint/issue-30302.stderr b/tests/ui/lint/issue-30302.stderr similarity index 100% rename from src/test/ui/lint/issue-30302.stderr rename to tests/ui/lint/issue-30302.stderr diff --git a/src/test/ui/lint/issue-31924-non-snake-ffi.rs b/tests/ui/lint/issue-31924-non-snake-ffi.rs similarity index 100% rename from src/test/ui/lint/issue-31924-non-snake-ffi.rs rename to tests/ui/lint/issue-31924-non-snake-ffi.rs diff --git a/src/test/ui/lint/issue-34798.rs b/tests/ui/lint/issue-34798.rs similarity index 100% rename from src/test/ui/lint/issue-34798.rs rename to tests/ui/lint/issue-34798.rs diff --git a/src/test/ui/lint/issue-35075.rs b/tests/ui/lint/issue-35075.rs similarity index 100% rename from src/test/ui/lint/issue-35075.rs rename to tests/ui/lint/issue-35075.rs diff --git a/src/test/ui/lint/issue-35075.stderr b/tests/ui/lint/issue-35075.stderr similarity index 100% rename from src/test/ui/lint/issue-35075.stderr rename to tests/ui/lint/issue-35075.stderr diff --git a/src/test/ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs b/tests/ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs similarity index 100% rename from src/test/ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs rename to tests/ui/lint/issue-47775-nested-macro-unnecessary-parens-arg.rs diff --git a/src/test/ui/lint/issue-54099-camel-case-underscore-types.rs b/tests/ui/lint/issue-54099-camel-case-underscore-types.rs similarity index 100% rename from src/test/ui/lint/issue-54099-camel-case-underscore-types.rs rename to tests/ui/lint/issue-54099-camel-case-underscore-types.rs diff --git a/src/test/ui/lint/issue-57410-1.rs b/tests/ui/lint/issue-57410-1.rs similarity index 100% rename from src/test/ui/lint/issue-57410-1.rs rename to tests/ui/lint/issue-57410-1.rs diff --git a/src/test/ui/lint/issue-57410.rs b/tests/ui/lint/issue-57410.rs similarity index 100% rename from src/test/ui/lint/issue-57410.rs rename to tests/ui/lint/issue-57410.rs diff --git a/src/test/ui/lint/issue-63364.rs b/tests/ui/lint/issue-63364.rs similarity index 100% rename from src/test/ui/lint/issue-63364.rs rename to tests/ui/lint/issue-63364.rs diff --git a/src/test/ui/lint/issue-63364.stderr b/tests/ui/lint/issue-63364.stderr similarity index 100% rename from src/test/ui/lint/issue-63364.stderr rename to tests/ui/lint/issue-63364.stderr diff --git a/src/test/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs b/tests/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs similarity index 100% rename from src/test/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs rename to tests/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.rs diff --git a/src/test/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.stderr b/tests/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.stderr similarity index 100% rename from src/test/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.stderr rename to tests/ui/lint/issue-66362-no-snake-case-warning-for-field-puns.stderr diff --git a/src/test/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs b/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs similarity index 100% rename from src/test/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs rename to tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs diff --git a/src/test/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr b/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr similarity index 100% rename from src/test/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr rename to tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr diff --git a/src/test/ui/lint/issue-79546-fuel-ice.rs b/tests/ui/lint/issue-79546-fuel-ice.rs similarity index 100% rename from src/test/ui/lint/issue-79546-fuel-ice.rs rename to tests/ui/lint/issue-79546-fuel-ice.rs diff --git a/src/test/ui/lint/issue-79744.rs b/tests/ui/lint/issue-79744.rs similarity index 100% rename from src/test/ui/lint/issue-79744.rs rename to tests/ui/lint/issue-79744.rs diff --git a/src/test/ui/lint/issue-79744.stderr b/tests/ui/lint/issue-79744.stderr similarity index 100% rename from src/test/ui/lint/issue-79744.stderr rename to tests/ui/lint/issue-79744.stderr diff --git a/src/test/ui/lint/issue-80988.rs b/tests/ui/lint/issue-80988.rs similarity index 100% rename from src/test/ui/lint/issue-80988.rs rename to tests/ui/lint/issue-80988.rs diff --git a/src/test/ui/lint/issue-80988.stderr b/tests/ui/lint/issue-80988.stderr similarity index 100% rename from src/test/ui/lint/issue-80988.stderr rename to tests/ui/lint/issue-80988.stderr diff --git a/src/test/ui/lint/issue-81218.rs b/tests/ui/lint/issue-81218.rs similarity index 100% rename from src/test/ui/lint/issue-81218.rs rename to tests/ui/lint/issue-81218.rs diff --git a/src/test/ui/lint/issue-83477.rs b/tests/ui/lint/issue-83477.rs similarity index 100% rename from src/test/ui/lint/issue-83477.rs rename to tests/ui/lint/issue-83477.rs diff --git a/src/test/ui/lint/issue-83477.stderr b/tests/ui/lint/issue-83477.stderr similarity index 100% rename from src/test/ui/lint/issue-83477.stderr rename to tests/ui/lint/issue-83477.stderr diff --git a/src/test/ui/lint/issue-86600-lint-twice.rs b/tests/ui/lint/issue-86600-lint-twice.rs similarity index 100% rename from src/test/ui/lint/issue-86600-lint-twice.rs rename to tests/ui/lint/issue-86600-lint-twice.rs diff --git a/src/test/ui/lint/issue-86600-lint-twice.stderr b/tests/ui/lint/issue-86600-lint-twice.stderr similarity index 100% rename from src/test/ui/lint/issue-86600-lint-twice.stderr rename to tests/ui/lint/issue-86600-lint-twice.stderr diff --git a/src/test/ui/lint/issue-87274-paren-parent.rs b/tests/ui/lint/issue-87274-paren-parent.rs similarity index 100% rename from src/test/ui/lint/issue-87274-paren-parent.rs rename to tests/ui/lint/issue-87274-paren-parent.rs diff --git a/src/test/ui/lint/issue-87274-paren-parent.stderr b/tests/ui/lint/issue-87274-paren-parent.stderr similarity index 100% rename from src/test/ui/lint/issue-87274-paren-parent.stderr rename to tests/ui/lint/issue-87274-paren-parent.stderr diff --git a/src/test/ui/lint/issue-89469.rs b/tests/ui/lint/issue-89469.rs similarity index 100% rename from src/test/ui/lint/issue-89469.rs rename to tests/ui/lint/issue-89469.rs diff --git a/src/test/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs b/tests/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs similarity index 100% rename from src/test/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs rename to tests/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs diff --git a/src/test/ui/lint/issue-97094.rs b/tests/ui/lint/issue-97094.rs similarity index 100% rename from src/test/ui/lint/issue-97094.rs rename to tests/ui/lint/issue-97094.rs diff --git a/src/test/ui/lint/issue-97094.stderr b/tests/ui/lint/issue-97094.stderr similarity index 100% rename from src/test/ui/lint/issue-97094.stderr rename to tests/ui/lint/issue-97094.stderr diff --git a/src/test/ui/lint/issue-99387.rs b/tests/ui/lint/issue-99387.rs similarity index 100% rename from src/test/ui/lint/issue-99387.rs rename to tests/ui/lint/issue-99387.rs diff --git a/src/test/ui/lint/known-tool-in-submodule/root.rs b/tests/ui/lint/known-tool-in-submodule/root.rs similarity index 100% rename from src/test/ui/lint/known-tool-in-submodule/root.rs rename to tests/ui/lint/known-tool-in-submodule/root.rs diff --git a/src/test/ui/lint/known-tool-in-submodule/submodule.rs b/tests/ui/lint/known-tool-in-submodule/submodule.rs similarity index 100% rename from src/test/ui/lint/known-tool-in-submodule/submodule.rs rename to tests/ui/lint/known-tool-in-submodule/submodule.rs diff --git a/src/test/ui/lint/let_underscore/let_underscore_drop.rs b/tests/ui/lint/let_underscore/let_underscore_drop.rs similarity index 100% rename from src/test/ui/lint/let_underscore/let_underscore_drop.rs rename to tests/ui/lint/let_underscore/let_underscore_drop.rs diff --git a/src/test/ui/lint/let_underscore/let_underscore_drop.stderr b/tests/ui/lint/let_underscore/let_underscore_drop.stderr similarity index 100% rename from src/test/ui/lint/let_underscore/let_underscore_drop.stderr rename to tests/ui/lint/let_underscore/let_underscore_drop.stderr diff --git a/src/test/ui/lint/let_underscore/let_underscore_lock.rs b/tests/ui/lint/let_underscore/let_underscore_lock.rs similarity index 100% rename from src/test/ui/lint/let_underscore/let_underscore_lock.rs rename to tests/ui/lint/let_underscore/let_underscore_lock.rs diff --git a/src/test/ui/lint/let_underscore/let_underscore_lock.stderr b/tests/ui/lint/let_underscore/let_underscore_lock.stderr similarity index 100% rename from src/test/ui/lint/let_underscore/let_underscore_lock.stderr rename to tests/ui/lint/let_underscore/let_underscore_lock.stderr diff --git a/src/test/ui/lint/lint-attr-everywhere-early.rs b/tests/ui/lint/lint-attr-everywhere-early.rs similarity index 100% rename from src/test/ui/lint/lint-attr-everywhere-early.rs rename to tests/ui/lint/lint-attr-everywhere-early.rs diff --git a/src/test/ui/lint/lint-attr-everywhere-early.stderr b/tests/ui/lint/lint-attr-everywhere-early.stderr similarity index 100% rename from src/test/ui/lint/lint-attr-everywhere-early.stderr rename to tests/ui/lint/lint-attr-everywhere-early.stderr diff --git a/src/test/ui/lint/lint-attr-everywhere-late.rs b/tests/ui/lint/lint-attr-everywhere-late.rs similarity index 100% rename from src/test/ui/lint/lint-attr-everywhere-late.rs rename to tests/ui/lint/lint-attr-everywhere-late.rs diff --git a/src/test/ui/lint/lint-attr-everywhere-late.stderr b/tests/ui/lint/lint-attr-everywhere-late.stderr similarity index 100% rename from src/test/ui/lint/lint-attr-everywhere-late.stderr rename to tests/ui/lint/lint-attr-everywhere-late.stderr diff --git a/src/test/ui/lint/lint-attr-non-item-node.rs b/tests/ui/lint/lint-attr-non-item-node.rs similarity index 100% rename from src/test/ui/lint/lint-attr-non-item-node.rs rename to tests/ui/lint/lint-attr-non-item-node.rs diff --git a/src/test/ui/lint/lint-attr-non-item-node.stderr b/tests/ui/lint/lint-attr-non-item-node.stderr similarity index 100% rename from src/test/ui/lint/lint-attr-non-item-node.stderr rename to tests/ui/lint/lint-attr-non-item-node.stderr diff --git a/src/test/ui/lint/lint-cap.rs b/tests/ui/lint/lint-cap.rs similarity index 100% rename from src/test/ui/lint/lint-cap.rs rename to tests/ui/lint/lint-cap.rs diff --git a/src/test/ui/lint/lint-change-warnings.rs b/tests/ui/lint/lint-change-warnings.rs similarity index 100% rename from src/test/ui/lint/lint-change-warnings.rs rename to tests/ui/lint/lint-change-warnings.rs diff --git a/src/test/ui/lint/lint-change-warnings.stderr b/tests/ui/lint/lint-change-warnings.stderr similarity index 100% rename from src/test/ui/lint/lint-change-warnings.stderr rename to tests/ui/lint/lint-change-warnings.stderr diff --git a/src/test/ui/lint/lint-const-item-mutation.rs b/tests/ui/lint/lint-const-item-mutation.rs similarity index 100% rename from src/test/ui/lint/lint-const-item-mutation.rs rename to tests/ui/lint/lint-const-item-mutation.rs diff --git a/src/test/ui/lint/lint-const-item-mutation.stderr b/tests/ui/lint/lint-const-item-mutation.stderr similarity index 100% rename from src/test/ui/lint/lint-const-item-mutation.stderr rename to tests/ui/lint/lint-const-item-mutation.stderr diff --git a/src/test/ui/lint/lint-ctypes-66202.rs b/tests/ui/lint/lint-ctypes-66202.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-66202.rs rename to tests/ui/lint/lint-ctypes-66202.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-1.rs b/tests/ui/lint/lint-ctypes-73249-1.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-1.rs rename to tests/ui/lint/lint-ctypes-73249-1.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-2.rs b/tests/ui/lint/lint-ctypes-73249-2.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-2.rs rename to tests/ui/lint/lint-ctypes-73249-2.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-2.stderr b/tests/ui/lint/lint-ctypes-73249-2.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-2.stderr rename to tests/ui/lint/lint-ctypes-73249-2.stderr diff --git a/src/test/ui/lint/lint-ctypes-73249-3.rs b/tests/ui/lint/lint-ctypes-73249-3.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-3.rs rename to tests/ui/lint/lint-ctypes-73249-3.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-3.stderr b/tests/ui/lint/lint-ctypes-73249-3.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-3.stderr rename to tests/ui/lint/lint-ctypes-73249-3.stderr diff --git a/src/test/ui/lint/lint-ctypes-73249-4.rs b/tests/ui/lint/lint-ctypes-73249-4.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-4.rs rename to tests/ui/lint/lint-ctypes-73249-4.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-5.rs b/tests/ui/lint/lint-ctypes-73249-5.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-5.rs rename to tests/ui/lint/lint-ctypes-73249-5.rs diff --git a/src/test/ui/lint/lint-ctypes-73249-5.stderr b/tests/ui/lint/lint-ctypes-73249-5.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249-5.stderr rename to tests/ui/lint/lint-ctypes-73249-5.stderr diff --git a/src/test/ui/lint/lint-ctypes-73249.rs b/tests/ui/lint/lint-ctypes-73249.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73249.rs rename to tests/ui/lint/lint-ctypes-73249.rs diff --git a/src/test/ui/lint/lint-ctypes-73251-1.rs b/tests/ui/lint/lint-ctypes-73251-1.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73251-1.rs rename to tests/ui/lint/lint-ctypes-73251-1.rs diff --git a/src/test/ui/lint/lint-ctypes-73251-1.stderr b/tests/ui/lint/lint-ctypes-73251-1.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-73251-1.stderr rename to tests/ui/lint/lint-ctypes-73251-1.stderr diff --git a/src/test/ui/lint/lint-ctypes-73251-2.rs b/tests/ui/lint/lint-ctypes-73251-2.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73251-2.rs rename to tests/ui/lint/lint-ctypes-73251-2.rs diff --git a/src/test/ui/lint/lint-ctypes-73251-2.stderr b/tests/ui/lint/lint-ctypes-73251-2.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-73251-2.stderr rename to tests/ui/lint/lint-ctypes-73251-2.stderr diff --git a/src/test/ui/lint/lint-ctypes-73251.rs b/tests/ui/lint/lint-ctypes-73251.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73251.rs rename to tests/ui/lint/lint-ctypes-73251.rs diff --git a/src/test/ui/lint/lint-ctypes-73747.rs b/tests/ui/lint/lint-ctypes-73747.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-73747.rs rename to tests/ui/lint/lint-ctypes-73747.rs diff --git a/src/test/ui/lint/lint-ctypes-enum.rs b/tests/ui/lint/lint-ctypes-enum.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-enum.rs rename to tests/ui/lint/lint-ctypes-enum.rs diff --git a/src/test/ui/lint/lint-ctypes-enum.stderr b/tests/ui/lint/lint-ctypes-enum.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-enum.stderr rename to tests/ui/lint/lint-ctypes-enum.stderr diff --git a/src/test/ui/lint/lint-ctypes-fn.rs b/tests/ui/lint/lint-ctypes-fn.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes-fn.rs rename to tests/ui/lint/lint-ctypes-fn.rs diff --git a/src/test/ui/lint/lint-ctypes-fn.stderr b/tests/ui/lint/lint-ctypes-fn.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes-fn.stderr rename to tests/ui/lint/lint-ctypes-fn.stderr diff --git a/src/test/ui/lint/lint-ctypes.rs b/tests/ui/lint/lint-ctypes.rs similarity index 100% rename from src/test/ui/lint/lint-ctypes.rs rename to tests/ui/lint/lint-ctypes.rs diff --git a/src/test/ui/lint/lint-ctypes.stderr b/tests/ui/lint/lint-ctypes.stderr similarity index 100% rename from src/test/ui/lint/lint-ctypes.stderr rename to tests/ui/lint/lint-ctypes.stderr diff --git a/src/test/ui/lint/lint-deref-nullptr.rs b/tests/ui/lint/lint-deref-nullptr.rs similarity index 100% rename from src/test/ui/lint/lint-deref-nullptr.rs rename to tests/ui/lint/lint-deref-nullptr.rs diff --git a/src/test/ui/lint/lint-deref-nullptr.stderr b/tests/ui/lint/lint-deref-nullptr.stderr similarity index 100% rename from src/test/ui/lint/lint-deref-nullptr.stderr rename to tests/ui/lint/lint-deref-nullptr.stderr diff --git a/src/test/ui/lint/lint-directives-on-use-items-issue-10534.rs b/tests/ui/lint/lint-directives-on-use-items-issue-10534.rs similarity index 100% rename from src/test/ui/lint/lint-directives-on-use-items-issue-10534.rs rename to tests/ui/lint/lint-directives-on-use-items-issue-10534.rs diff --git a/src/test/ui/lint/lint-directives-on-use-items-issue-10534.stderr b/tests/ui/lint/lint-directives-on-use-items-issue-10534.stderr similarity index 100% rename from src/test/ui/lint/lint-directives-on-use-items-issue-10534.stderr rename to tests/ui/lint/lint-directives-on-use-items-issue-10534.stderr diff --git a/src/test/ui/lint/lint-enum-intrinsics-non-enums.rs b/tests/ui/lint/lint-enum-intrinsics-non-enums.rs similarity index 100% rename from src/test/ui/lint/lint-enum-intrinsics-non-enums.rs rename to tests/ui/lint/lint-enum-intrinsics-non-enums.rs diff --git a/src/test/ui/lint/lint-enum-intrinsics-non-enums.stderr b/tests/ui/lint/lint-enum-intrinsics-non-enums.stderr similarity index 100% rename from src/test/ui/lint/lint-enum-intrinsics-non-enums.stderr rename to tests/ui/lint/lint-enum-intrinsics-non-enums.stderr diff --git a/src/test/ui/lint/lint-exceeding-bitshifts.noopt.stderr b/tests/ui/lint/lint-exceeding-bitshifts.noopt.stderr similarity index 100% rename from src/test/ui/lint/lint-exceeding-bitshifts.noopt.stderr rename to tests/ui/lint/lint-exceeding-bitshifts.noopt.stderr diff --git a/src/test/ui/lint/lint-exceeding-bitshifts.opt.stderr b/tests/ui/lint/lint-exceeding-bitshifts.opt.stderr similarity index 100% rename from src/test/ui/lint/lint-exceeding-bitshifts.opt.stderr rename to tests/ui/lint/lint-exceeding-bitshifts.opt.stderr diff --git a/src/test/ui/lint/lint-exceeding-bitshifts.opt_with_overflow_checks.stderr b/tests/ui/lint/lint-exceeding-bitshifts.opt_with_overflow_checks.stderr similarity index 100% rename from src/test/ui/lint/lint-exceeding-bitshifts.opt_with_overflow_checks.stderr rename to tests/ui/lint/lint-exceeding-bitshifts.opt_with_overflow_checks.stderr diff --git a/src/test/ui/lint/lint-exceeding-bitshifts.rs b/tests/ui/lint/lint-exceeding-bitshifts.rs similarity index 100% rename from src/test/ui/lint/lint-exceeding-bitshifts.rs rename to tests/ui/lint/lint-exceeding-bitshifts.rs diff --git a/src/test/ui/lint/lint-expr-stmt-attrs-for-early-lints.rs b/tests/ui/lint/lint-expr-stmt-attrs-for-early-lints.rs similarity index 100% rename from src/test/ui/lint/lint-expr-stmt-attrs-for-early-lints.rs rename to tests/ui/lint/lint-expr-stmt-attrs-for-early-lints.rs diff --git a/src/test/ui/lint/lint-forbid-attr.rs b/tests/ui/lint/lint-forbid-attr.rs similarity index 100% rename from src/test/ui/lint/lint-forbid-attr.rs rename to tests/ui/lint/lint-forbid-attr.rs diff --git a/src/test/ui/lint/lint-forbid-attr.stderr b/tests/ui/lint/lint-forbid-attr.stderr similarity index 100% rename from src/test/ui/lint/lint-forbid-attr.stderr rename to tests/ui/lint/lint-forbid-attr.stderr diff --git a/src/test/ui/lint/lint-forbid-cmdline.rs b/tests/ui/lint/lint-forbid-cmdline.rs similarity index 100% rename from src/test/ui/lint/lint-forbid-cmdline.rs rename to tests/ui/lint/lint-forbid-cmdline.rs diff --git a/src/test/ui/lint/lint-forbid-cmdline.stderr b/tests/ui/lint/lint-forbid-cmdline.stderr similarity index 100% rename from src/test/ui/lint/lint-forbid-cmdline.stderr rename to tests/ui/lint/lint-forbid-cmdline.stderr diff --git a/src/test/ui/lint/lint-forbid-internal-unsafe.rs b/tests/ui/lint/lint-forbid-internal-unsafe.rs similarity index 100% rename from src/test/ui/lint/lint-forbid-internal-unsafe.rs rename to tests/ui/lint/lint-forbid-internal-unsafe.rs diff --git a/src/test/ui/lint/lint-forbid-internal-unsafe.stderr b/tests/ui/lint/lint-forbid-internal-unsafe.stderr similarity index 100% rename from src/test/ui/lint/lint-forbid-internal-unsafe.stderr rename to tests/ui/lint/lint-forbid-internal-unsafe.stderr diff --git a/src/test/ui/lint/lint-group-nonstandard-style.rs b/tests/ui/lint/lint-group-nonstandard-style.rs similarity index 100% rename from src/test/ui/lint/lint-group-nonstandard-style.rs rename to tests/ui/lint/lint-group-nonstandard-style.rs diff --git a/src/test/ui/lint/lint-group-nonstandard-style.stderr b/tests/ui/lint/lint-group-nonstandard-style.stderr similarity index 100% rename from src/test/ui/lint/lint-group-nonstandard-style.stderr rename to tests/ui/lint/lint-group-nonstandard-style.stderr diff --git a/src/test/ui/lint/lint-impl-fn.rs b/tests/ui/lint/lint-impl-fn.rs similarity index 100% rename from src/test/ui/lint/lint-impl-fn.rs rename to tests/ui/lint/lint-impl-fn.rs diff --git a/src/test/ui/lint/lint-impl-fn.stderr b/tests/ui/lint/lint-impl-fn.stderr similarity index 100% rename from src/test/ui/lint/lint-impl-fn.stderr rename to tests/ui/lint/lint-impl-fn.stderr diff --git a/src/test/ui/lint/lint-incoherent-auto-trait-objects.rs b/tests/ui/lint/lint-incoherent-auto-trait-objects.rs similarity index 100% rename from src/test/ui/lint/lint-incoherent-auto-trait-objects.rs rename to tests/ui/lint/lint-incoherent-auto-trait-objects.rs diff --git a/src/test/ui/lint/lint-incoherent-auto-trait-objects.stderr b/tests/ui/lint/lint-incoherent-auto-trait-objects.stderr similarity index 100% rename from src/test/ui/lint/lint-incoherent-auto-trait-objects.stderr rename to tests/ui/lint/lint-incoherent-auto-trait-objects.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-bool.rs b/tests/ui/lint/lint-invalid-atomic-ordering-bool.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-bool.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-bool.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-bool.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-bool.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-bool.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-bool.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-exchange-weak.rs b/tests/ui/lint/lint-invalid-atomic-ordering-exchange-weak.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-exchange-weak.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-exchange-weak.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-exchange-weak.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-exchange-weak.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-exchange-weak.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-exchange-weak.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-exchange.rs b/tests/ui/lint/lint-invalid-atomic-ordering-exchange.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-exchange.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-exchange.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-exchange.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-exchange.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-exchange.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-exchange.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-false-positive.rs b/tests/ui/lint/lint-invalid-atomic-ordering-false-positive.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-false-positive.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-false-positive.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-fence.rs b/tests/ui/lint/lint-invalid-atomic-ordering-fence.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-fence.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-fence.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-fence.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-fence.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-fence.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-fence.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs b/tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-fetch-update.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-fetch-update.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-int.rs b/tests/ui/lint/lint-invalid-atomic-ordering-int.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-int.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-int.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-int.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-int.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-int.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-int.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-ptr.rs b/tests/ui/lint/lint-invalid-atomic-ordering-ptr.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-ptr.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-ptr.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-ptr.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-ptr.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-ptr.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-ptr.stderr diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-uint.rs b/tests/ui/lint/lint-invalid-atomic-ordering-uint.rs similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-uint.rs rename to tests/ui/lint/lint-invalid-atomic-ordering-uint.rs diff --git a/src/test/ui/lint/lint-invalid-atomic-ordering-uint.stderr b/tests/ui/lint/lint-invalid-atomic-ordering-uint.stderr similarity index 100% rename from src/test/ui/lint/lint-invalid-atomic-ordering-uint.stderr rename to tests/ui/lint/lint-invalid-atomic-ordering-uint.stderr diff --git a/src/test/ui/lint/lint-level-macro-def-mod.rs b/tests/ui/lint/lint-level-macro-def-mod.rs similarity index 100% rename from src/test/ui/lint/lint-level-macro-def-mod.rs rename to tests/ui/lint/lint-level-macro-def-mod.rs diff --git a/src/test/ui/lint/lint-level-macro-def.rs b/tests/ui/lint/lint-level-macro-def.rs similarity index 100% rename from src/test/ui/lint/lint-level-macro-def.rs rename to tests/ui/lint/lint-level-macro-def.rs diff --git a/src/test/ui/lint/lint-lowercase-static-const-pattern-rename.rs b/tests/ui/lint/lint-lowercase-static-const-pattern-rename.rs similarity index 100% rename from src/test/ui/lint/lint-lowercase-static-const-pattern-rename.rs rename to tests/ui/lint/lint-lowercase-static-const-pattern-rename.rs diff --git a/src/test/ui/lint/lint-lowercase-static-const-pattern.rs b/tests/ui/lint/lint-lowercase-static-const-pattern.rs similarity index 100% rename from src/test/ui/lint/lint-lowercase-static-const-pattern.rs rename to tests/ui/lint/lint-lowercase-static-const-pattern.rs diff --git a/src/test/ui/lint/lint-lowercase-static-const-pattern.stderr b/tests/ui/lint/lint-lowercase-static-const-pattern.stderr similarity index 100% rename from src/test/ui/lint/lint-lowercase-static-const-pattern.stderr rename to tests/ui/lint/lint-lowercase-static-const-pattern.stderr diff --git a/src/test/ui/lint/lint-malformed.rs b/tests/ui/lint/lint-malformed.rs similarity index 100% rename from src/test/ui/lint/lint-malformed.rs rename to tests/ui/lint/lint-malformed.rs diff --git a/src/test/ui/lint/lint-malformed.stderr b/tests/ui/lint/lint-malformed.stderr similarity index 100% rename from src/test/ui/lint/lint-malformed.stderr rename to tests/ui/lint/lint-malformed.stderr diff --git a/src/test/ui/lint/lint-match-arms.rs b/tests/ui/lint/lint-match-arms.rs similarity index 100% rename from src/test/ui/lint/lint-match-arms.rs rename to tests/ui/lint/lint-match-arms.rs diff --git a/src/test/ui/lint/lint-match-arms.stderr b/tests/ui/lint/lint-match-arms.stderr similarity index 100% rename from src/test/ui/lint/lint-match-arms.stderr rename to tests/ui/lint/lint-match-arms.stderr diff --git a/src/test/ui/lint/lint-misplaced-attr.rs b/tests/ui/lint/lint-misplaced-attr.rs similarity index 100% rename from src/test/ui/lint/lint-misplaced-attr.rs rename to tests/ui/lint/lint-misplaced-attr.rs diff --git a/src/test/ui/lint/lint-misplaced-attr.stderr b/tests/ui/lint/lint-misplaced-attr.stderr similarity index 100% rename from src/test/ui/lint/lint-misplaced-attr.stderr rename to tests/ui/lint/lint-misplaced-attr.stderr diff --git a/src/test/ui/lint/lint-missing-copy-implementations-allow.rs b/tests/ui/lint/lint-missing-copy-implementations-allow.rs similarity index 100% rename from src/test/ui/lint/lint-missing-copy-implementations-allow.rs rename to tests/ui/lint/lint-missing-copy-implementations-allow.rs diff --git a/src/test/ui/lint/lint-missing-copy-implementations.rs b/tests/ui/lint/lint-missing-copy-implementations.rs similarity index 100% rename from src/test/ui/lint/lint-missing-copy-implementations.rs rename to tests/ui/lint/lint-missing-copy-implementations.rs diff --git a/src/test/ui/lint/lint-missing-copy-implementations.stderr b/tests/ui/lint/lint-missing-copy-implementations.stderr similarity index 100% rename from src/test/ui/lint/lint-missing-copy-implementations.stderr rename to tests/ui/lint/lint-missing-copy-implementations.stderr diff --git a/src/test/ui/lint/lint-missing-doc.rs b/tests/ui/lint/lint-missing-doc.rs similarity index 100% rename from src/test/ui/lint/lint-missing-doc.rs rename to tests/ui/lint/lint-missing-doc.rs diff --git a/src/test/ui/lint/lint-missing-doc.stderr b/tests/ui/lint/lint-missing-doc.stderr similarity index 100% rename from src/test/ui/lint/lint-missing-doc.stderr rename to tests/ui/lint/lint-missing-doc.stderr diff --git a/src/test/ui/lint/lint-non-camel-case-types.rs b/tests/ui/lint/lint-non-camel-case-types.rs similarity index 100% rename from src/test/ui/lint/lint-non-camel-case-types.rs rename to tests/ui/lint/lint-non-camel-case-types.rs diff --git a/src/test/ui/lint/lint-non-camel-case-types.stderr b/tests/ui/lint/lint-non-camel-case-types.stderr similarity index 100% rename from src/test/ui/lint/lint-non-camel-case-types.stderr rename to tests/ui/lint/lint-non-camel-case-types.stderr diff --git a/src/test/ui/lint/lint-non-camel-case-variant.rs b/tests/ui/lint/lint-non-camel-case-variant.rs similarity index 100% rename from src/test/ui/lint/lint-non-camel-case-variant.rs rename to tests/ui/lint/lint-non-camel-case-variant.rs diff --git a/src/test/ui/lint/lint-non-camel-case-with-trailing-underscores.rs b/tests/ui/lint/lint-non-camel-case-with-trailing-underscores.rs similarity index 100% rename from src/test/ui/lint/lint-non-camel-case-with-trailing-underscores.rs rename to tests/ui/lint/lint-non-camel-case-with-trailing-underscores.rs diff --git a/src/test/ui/lint/lint-non-snake-case-crate-2.rs b/tests/ui/lint/lint-non-snake-case-crate-2.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-crate-2.rs rename to tests/ui/lint/lint-non-snake-case-crate-2.rs diff --git a/src/test/ui/lint/lint-non-snake-case-crate-2.stderr b/tests/ui/lint/lint-non-snake-case-crate-2.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-crate-2.stderr rename to tests/ui/lint/lint-non-snake-case-crate-2.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-crate.rs b/tests/ui/lint/lint-non-snake-case-crate.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-crate.rs rename to tests/ui/lint/lint-non-snake-case-crate.rs diff --git a/src/test/ui/lint/lint-non-snake-case-crate.stderr b/tests/ui/lint/lint-non-snake-case-crate.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-crate.stderr rename to tests/ui/lint/lint-non-snake-case-crate.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-functions.rs b/tests/ui/lint/lint-non-snake-case-functions.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-functions.rs rename to tests/ui/lint/lint-non-snake-case-functions.rs diff --git a/src/test/ui/lint/lint-non-snake-case-functions.stderr b/tests/ui/lint/lint-non-snake-case-functions.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-functions.stderr rename to tests/ui/lint/lint-non-snake-case-functions.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.rs b/tests/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.rs rename to tests/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.rs diff --git a/src/test/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.stderr b/tests/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.stderr rename to tests/ui/lint/lint-non-snake-case-identifiers-suggestion-reserved.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-lifetimes.rs b/tests/ui/lint/lint-non-snake-case-lifetimes.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-lifetimes.rs rename to tests/ui/lint/lint-non-snake-case-lifetimes.rs diff --git a/src/test/ui/lint/lint-non-snake-case-lifetimes.stderr b/tests/ui/lint/lint-non-snake-case-lifetimes.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-lifetimes.stderr rename to tests/ui/lint/lint-non-snake-case-lifetimes.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-modules.rs b/tests/ui/lint/lint-non-snake-case-modules.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-modules.rs rename to tests/ui/lint/lint-non-snake-case-modules.rs diff --git a/src/test/ui/lint/lint-non-snake-case-modules.stderr b/tests/ui/lint/lint-non-snake-case-modules.stderr similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-modules.stderr rename to tests/ui/lint/lint-non-snake-case-modules.stderr diff --git a/src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs b/tests/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs similarity index 100% rename from src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs rename to tests/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs diff --git a/src/test/ui/lint/lint-non-uppercase-associated-const.rs b/tests/ui/lint/lint-non-uppercase-associated-const.rs similarity index 100% rename from src/test/ui/lint/lint-non-uppercase-associated-const.rs rename to tests/ui/lint/lint-non-uppercase-associated-const.rs diff --git a/src/test/ui/lint/lint-non-uppercase-associated-const.stderr b/tests/ui/lint/lint-non-uppercase-associated-const.stderr similarity index 100% rename from src/test/ui/lint/lint-non-uppercase-associated-const.stderr rename to tests/ui/lint/lint-non-uppercase-associated-const.stderr diff --git a/src/test/ui/lint/lint-non-uppercase-statics.rs b/tests/ui/lint/lint-non-uppercase-statics.rs similarity index 100% rename from src/test/ui/lint/lint-non-uppercase-statics.rs rename to tests/ui/lint/lint-non-uppercase-statics.rs diff --git a/src/test/ui/lint/lint-non-uppercase-statics.stderr b/tests/ui/lint/lint-non-uppercase-statics.stderr similarity index 100% rename from src/test/ui/lint/lint-non-uppercase-statics.stderr rename to tests/ui/lint/lint-non-uppercase-statics.stderr diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs b/tests/ui/lint/lint-nonstandard-style-unicode-1.rs similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-1.rs rename to tests/ui/lint/lint-nonstandard-style-unicode-1.rs diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr b/tests/ui/lint/lint-nonstandard-style-unicode-1.stderr similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr rename to tests/ui/lint/lint-nonstandard-style-unicode-1.stderr diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs b/tests/ui/lint/lint-nonstandard-style-unicode-2.rs similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-2.rs rename to tests/ui/lint/lint-nonstandard-style-unicode-2.rs diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr b/tests/ui/lint/lint-nonstandard-style-unicode-2.stderr similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr rename to tests/ui/lint/lint-nonstandard-style-unicode-2.stderr diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs b/tests/ui/lint/lint-nonstandard-style-unicode-3.rs similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-3.rs rename to tests/ui/lint/lint-nonstandard-style-unicode-3.rs diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr b/tests/ui/lint/lint-nonstandard-style-unicode-3.stderr similarity index 100% rename from src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr rename to tests/ui/lint/lint-nonstandard-style-unicode-3.stderr diff --git a/src/test/ui/lint/lint-output-format-2.rs b/tests/ui/lint/lint-output-format-2.rs similarity index 100% rename from src/test/ui/lint/lint-output-format-2.rs rename to tests/ui/lint/lint-output-format-2.rs diff --git a/src/test/ui/lint/lint-output-format-2.stderr b/tests/ui/lint/lint-output-format-2.stderr similarity index 100% rename from src/test/ui/lint/lint-output-format-2.stderr rename to tests/ui/lint/lint-output-format-2.stderr diff --git a/src/test/ui/lint/lint-output-format.rs b/tests/ui/lint/lint-output-format.rs similarity index 100% rename from src/test/ui/lint/lint-output-format.rs rename to tests/ui/lint/lint-output-format.rs diff --git a/src/test/ui/lint/lint-output-format.stderr b/tests/ui/lint/lint-output-format.stderr similarity index 100% rename from src/test/ui/lint/lint-output-format.stderr rename to tests/ui/lint/lint-output-format.stderr diff --git a/src/test/ui/lint/lint-owned-heap-memory.rs b/tests/ui/lint/lint-owned-heap-memory.rs similarity index 100% rename from src/test/ui/lint/lint-owned-heap-memory.rs rename to tests/ui/lint/lint-owned-heap-memory.rs diff --git a/src/test/ui/lint/lint-owned-heap-memory.stderr b/tests/ui/lint/lint-owned-heap-memory.stderr similarity index 100% rename from src/test/ui/lint/lint-owned-heap-memory.stderr rename to tests/ui/lint/lint-owned-heap-memory.stderr diff --git a/src/test/ui/lint/lint-pre-expansion-extern-module.rs b/tests/ui/lint/lint-pre-expansion-extern-module.rs similarity index 100% rename from src/test/ui/lint/lint-pre-expansion-extern-module.rs rename to tests/ui/lint/lint-pre-expansion-extern-module.rs diff --git a/src/test/ui/lint/lint-pre-expansion-extern-module.stderr b/tests/ui/lint/lint-pre-expansion-extern-module.stderr similarity index 100% rename from src/test/ui/lint/lint-pre-expansion-extern-module.stderr rename to tests/ui/lint/lint-pre-expansion-extern-module.stderr diff --git a/src/test/ui/lint/lint-pub-unreachable-for-nested-glob.rs b/tests/ui/lint/lint-pub-unreachable-for-nested-glob.rs similarity index 100% rename from src/test/ui/lint/lint-pub-unreachable-for-nested-glob.rs rename to tests/ui/lint/lint-pub-unreachable-for-nested-glob.rs diff --git a/src/test/ui/lint/lint-qualification.rs b/tests/ui/lint/lint-qualification.rs similarity index 100% rename from src/test/ui/lint/lint-qualification.rs rename to tests/ui/lint/lint-qualification.rs diff --git a/src/test/ui/lint/lint-qualification.stderr b/tests/ui/lint/lint-qualification.stderr similarity index 100% rename from src/test/ui/lint/lint-qualification.stderr rename to tests/ui/lint/lint-qualification.stderr diff --git a/src/test/ui/lint/lint-range-endpoint-overflow.rs b/tests/ui/lint/lint-range-endpoint-overflow.rs similarity index 100% rename from src/test/ui/lint/lint-range-endpoint-overflow.rs rename to tests/ui/lint/lint-range-endpoint-overflow.rs diff --git a/src/test/ui/lint/lint-range-endpoint-overflow.stderr b/tests/ui/lint/lint-range-endpoint-overflow.stderr similarity index 100% rename from src/test/ui/lint/lint-range-endpoint-overflow.stderr rename to tests/ui/lint/lint-range-endpoint-overflow.stderr diff --git a/src/test/ui/lint/lint-removed-allow.rs b/tests/ui/lint/lint-removed-allow.rs similarity index 100% rename from src/test/ui/lint/lint-removed-allow.rs rename to tests/ui/lint/lint-removed-allow.rs diff --git a/src/test/ui/lint/lint-removed-allow.stderr b/tests/ui/lint/lint-removed-allow.stderr similarity index 100% rename from src/test/ui/lint/lint-removed-allow.stderr rename to tests/ui/lint/lint-removed-allow.stderr diff --git a/src/test/ui/lint/lint-removed-cmdline.rs b/tests/ui/lint/lint-removed-cmdline.rs similarity index 100% rename from src/test/ui/lint/lint-removed-cmdline.rs rename to tests/ui/lint/lint-removed-cmdline.rs diff --git a/src/test/ui/lint/lint-removed-cmdline.stderr b/tests/ui/lint/lint-removed-cmdline.stderr similarity index 100% rename from src/test/ui/lint/lint-removed-cmdline.stderr rename to tests/ui/lint/lint-removed-cmdline.stderr diff --git a/src/test/ui/lint/lint-removed.rs b/tests/ui/lint/lint-removed.rs similarity index 100% rename from src/test/ui/lint/lint-removed.rs rename to tests/ui/lint/lint-removed.rs diff --git a/src/test/ui/lint/lint-removed.stderr b/tests/ui/lint/lint-removed.stderr similarity index 100% rename from src/test/ui/lint/lint-removed.stderr rename to tests/ui/lint/lint-removed.stderr diff --git a/src/test/ui/lint/lint-renamed-allow.rs b/tests/ui/lint/lint-renamed-allow.rs similarity index 100% rename from src/test/ui/lint/lint-renamed-allow.rs rename to tests/ui/lint/lint-renamed-allow.rs diff --git a/src/test/ui/lint/lint-renamed-allow.stderr b/tests/ui/lint/lint-renamed-allow.stderr similarity index 100% rename from src/test/ui/lint/lint-renamed-allow.stderr rename to tests/ui/lint/lint-renamed-allow.stderr diff --git a/src/test/ui/lint/lint-renamed-cmdline.rs b/tests/ui/lint/lint-renamed-cmdline.rs similarity index 100% rename from src/test/ui/lint/lint-renamed-cmdline.rs rename to tests/ui/lint/lint-renamed-cmdline.rs diff --git a/src/test/ui/lint/lint-renamed-cmdline.stderr b/tests/ui/lint/lint-renamed-cmdline.stderr similarity index 100% rename from src/test/ui/lint/lint-renamed-cmdline.stderr rename to tests/ui/lint/lint-renamed-cmdline.stderr diff --git a/src/test/ui/lint/lint-renamed.rs b/tests/ui/lint/lint-renamed.rs similarity index 100% rename from src/test/ui/lint/lint-renamed.rs rename to tests/ui/lint/lint-renamed.rs diff --git a/src/test/ui/lint/lint-renamed.stderr b/tests/ui/lint/lint-renamed.stderr similarity index 100% rename from src/test/ui/lint/lint-renamed.stderr rename to tests/ui/lint/lint-renamed.stderr diff --git a/src/test/ui/lint/lint-shorthand-field.fixed b/tests/ui/lint/lint-shorthand-field.fixed similarity index 100% rename from src/test/ui/lint/lint-shorthand-field.fixed rename to tests/ui/lint/lint-shorthand-field.fixed diff --git a/src/test/ui/lint/lint-shorthand-field.rs b/tests/ui/lint/lint-shorthand-field.rs similarity index 100% rename from src/test/ui/lint/lint-shorthand-field.rs rename to tests/ui/lint/lint-shorthand-field.rs diff --git a/src/test/ui/lint/lint-shorthand-field.stderr b/tests/ui/lint/lint-shorthand-field.stderr similarity index 100% rename from src/test/ui/lint/lint-shorthand-field.stderr rename to tests/ui/lint/lint-shorthand-field.stderr diff --git a/src/test/ui/lint/lint-stability-2.rs b/tests/ui/lint/lint-stability-2.rs similarity index 100% rename from src/test/ui/lint/lint-stability-2.rs rename to tests/ui/lint/lint-stability-2.rs diff --git a/src/test/ui/lint/lint-stability-2.stderr b/tests/ui/lint/lint-stability-2.stderr similarity index 100% rename from src/test/ui/lint/lint-stability-2.stderr rename to tests/ui/lint/lint-stability-2.stderr diff --git a/src/test/ui/lint/lint-stability-deprecated.rs b/tests/ui/lint/lint-stability-deprecated.rs similarity index 100% rename from src/test/ui/lint/lint-stability-deprecated.rs rename to tests/ui/lint/lint-stability-deprecated.rs diff --git a/src/test/ui/lint/lint-stability-deprecated.stderr b/tests/ui/lint/lint-stability-deprecated.stderr similarity index 100% rename from src/test/ui/lint/lint-stability-deprecated.stderr rename to tests/ui/lint/lint-stability-deprecated.stderr diff --git a/src/test/ui/lint/lint-stability-fields-deprecated.rs b/tests/ui/lint/lint-stability-fields-deprecated.rs similarity index 100% rename from src/test/ui/lint/lint-stability-fields-deprecated.rs rename to tests/ui/lint/lint-stability-fields-deprecated.rs diff --git a/src/test/ui/lint/lint-stability-fields-deprecated.stderr b/tests/ui/lint/lint-stability-fields-deprecated.stderr similarity index 100% rename from src/test/ui/lint/lint-stability-fields-deprecated.stderr rename to tests/ui/lint/lint-stability-fields-deprecated.stderr diff --git a/src/test/ui/lint/lint-stability-fields.rs b/tests/ui/lint/lint-stability-fields.rs similarity index 100% rename from src/test/ui/lint/lint-stability-fields.rs rename to tests/ui/lint/lint-stability-fields.rs diff --git a/src/test/ui/lint/lint-stability-fields.stderr b/tests/ui/lint/lint-stability-fields.stderr similarity index 100% rename from src/test/ui/lint/lint-stability-fields.stderr rename to tests/ui/lint/lint-stability-fields.stderr diff --git a/src/test/ui/lint/lint-stability.rs b/tests/ui/lint/lint-stability.rs similarity index 100% rename from src/test/ui/lint/lint-stability.rs rename to tests/ui/lint/lint-stability.rs diff --git a/src/test/ui/lint/lint-stability.stderr b/tests/ui/lint/lint-stability.stderr similarity index 100% rename from src/test/ui/lint/lint-stability.stderr rename to tests/ui/lint/lint-stability.stderr diff --git a/src/test/ui/lint/lint-stability2.rs b/tests/ui/lint/lint-stability2.rs similarity index 100% rename from src/test/ui/lint/lint-stability2.rs rename to tests/ui/lint/lint-stability2.rs diff --git a/src/test/ui/lint/lint-stability2.stderr b/tests/ui/lint/lint-stability2.stderr similarity index 100% rename from src/test/ui/lint/lint-stability2.stderr rename to tests/ui/lint/lint-stability2.stderr diff --git a/src/test/ui/lint/lint-stability3.rs b/tests/ui/lint/lint-stability3.rs similarity index 100% rename from src/test/ui/lint/lint-stability3.rs rename to tests/ui/lint/lint-stability3.rs diff --git a/src/test/ui/lint/lint-stability3.stderr b/tests/ui/lint/lint-stability3.stderr similarity index 100% rename from src/test/ui/lint/lint-stability3.stderr rename to tests/ui/lint/lint-stability3.stderr diff --git a/src/test/ui/lint/lint-strict-provenance-fuzzy-casts.rs b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.rs similarity index 100% rename from src/test/ui/lint/lint-strict-provenance-fuzzy-casts.rs rename to tests/ui/lint/lint-strict-provenance-fuzzy-casts.rs diff --git a/src/test/ui/lint/lint-strict-provenance-fuzzy-casts.stderr b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr similarity index 100% rename from src/test/ui/lint/lint-strict-provenance-fuzzy-casts.stderr rename to tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr diff --git a/src/test/ui/lint/lint-strict-provenance-lossy-casts.rs b/tests/ui/lint/lint-strict-provenance-lossy-casts.rs similarity index 100% rename from src/test/ui/lint/lint-strict-provenance-lossy-casts.rs rename to tests/ui/lint/lint-strict-provenance-lossy-casts.rs diff --git a/src/test/ui/lint/lint-strict-provenance-lossy-casts.stderr b/tests/ui/lint/lint-strict-provenance-lossy-casts.stderr similarity index 100% rename from src/test/ui/lint/lint-strict-provenance-lossy-casts.stderr rename to tests/ui/lint/lint-strict-provenance-lossy-casts.stderr diff --git a/src/test/ui/lint/lint-temporary-cstring-as-param.rs b/tests/ui/lint/lint-temporary-cstring-as-param.rs similarity index 100% rename from src/test/ui/lint/lint-temporary-cstring-as-param.rs rename to tests/ui/lint/lint-temporary-cstring-as-param.rs diff --git a/src/test/ui/lint/lint-temporary-cstring-as-param.stderr b/tests/ui/lint/lint-temporary-cstring-as-param.stderr similarity index 100% rename from src/test/ui/lint/lint-temporary-cstring-as-param.stderr rename to tests/ui/lint/lint-temporary-cstring-as-param.stderr diff --git a/src/test/ui/lint/lint-temporary-cstring-as-ptr.rs b/tests/ui/lint/lint-temporary-cstring-as-ptr.rs similarity index 100% rename from src/test/ui/lint/lint-temporary-cstring-as-ptr.rs rename to tests/ui/lint/lint-temporary-cstring-as-ptr.rs diff --git a/src/test/ui/lint/lint-temporary-cstring-as-ptr.stderr b/tests/ui/lint/lint-temporary-cstring-as-ptr.stderr similarity index 100% rename from src/test/ui/lint/lint-temporary-cstring-as-ptr.stderr rename to tests/ui/lint/lint-temporary-cstring-as-ptr.stderr diff --git a/src/test/ui/lint/lint-type-limits.rs b/tests/ui/lint/lint-type-limits.rs similarity index 100% rename from src/test/ui/lint/lint-type-limits.rs rename to tests/ui/lint/lint-type-limits.rs diff --git a/src/test/ui/lint/lint-type-limits.stderr b/tests/ui/lint/lint-type-limits.stderr similarity index 100% rename from src/test/ui/lint/lint-type-limits.stderr rename to tests/ui/lint/lint-type-limits.stderr diff --git a/src/test/ui/lint/lint-type-limits2.rs b/tests/ui/lint/lint-type-limits2.rs similarity index 100% rename from src/test/ui/lint/lint-type-limits2.rs rename to tests/ui/lint/lint-type-limits2.rs diff --git a/src/test/ui/lint/lint-type-limits2.stderr b/tests/ui/lint/lint-type-limits2.stderr similarity index 100% rename from src/test/ui/lint/lint-type-limits2.stderr rename to tests/ui/lint/lint-type-limits2.stderr diff --git a/src/test/ui/lint/lint-type-limits3.rs b/tests/ui/lint/lint-type-limits3.rs similarity index 100% rename from src/test/ui/lint/lint-type-limits3.rs rename to tests/ui/lint/lint-type-limits3.rs diff --git a/src/test/ui/lint/lint-type-limits3.stderr b/tests/ui/lint/lint-type-limits3.stderr similarity index 100% rename from src/test/ui/lint/lint-type-limits3.stderr rename to tests/ui/lint/lint-type-limits3.stderr diff --git a/src/test/ui/lint/lint-type-overflow.rs b/tests/ui/lint/lint-type-overflow.rs similarity index 100% rename from src/test/ui/lint/lint-type-overflow.rs rename to tests/ui/lint/lint-type-overflow.rs diff --git a/src/test/ui/lint/lint-type-overflow.stderr b/tests/ui/lint/lint-type-overflow.stderr similarity index 100% rename from src/test/ui/lint/lint-type-overflow.stderr rename to tests/ui/lint/lint-type-overflow.stderr diff --git a/src/test/ui/lint/lint-type-overflow2.rs b/tests/ui/lint/lint-type-overflow2.rs similarity index 100% rename from src/test/ui/lint/lint-type-overflow2.rs rename to tests/ui/lint/lint-type-overflow2.rs diff --git a/src/test/ui/lint/lint-type-overflow2.stderr b/tests/ui/lint/lint-type-overflow2.stderr similarity index 100% rename from src/test/ui/lint/lint-type-overflow2.stderr rename to tests/ui/lint/lint-type-overflow2.stderr diff --git a/src/test/ui/lint/lint-unconditional-recursion.rs b/tests/ui/lint/lint-unconditional-recursion.rs similarity index 100% rename from src/test/ui/lint/lint-unconditional-recursion.rs rename to tests/ui/lint/lint-unconditional-recursion.rs diff --git a/src/test/ui/lint/lint-unconditional-recursion.stderr b/tests/ui/lint/lint-unconditional-recursion.stderr similarity index 100% rename from src/test/ui/lint/lint-unconditional-recursion.stderr rename to tests/ui/lint/lint-unconditional-recursion.stderr diff --git a/src/test/ui/lint/lint-unexported-no-mangle.rs b/tests/ui/lint/lint-unexported-no-mangle.rs similarity index 100% rename from src/test/ui/lint/lint-unexported-no-mangle.rs rename to tests/ui/lint/lint-unexported-no-mangle.rs diff --git a/src/test/ui/lint/lint-unexported-no-mangle.stderr b/tests/ui/lint/lint-unexported-no-mangle.stderr similarity index 100% rename from src/test/ui/lint/lint-unexported-no-mangle.stderr rename to tests/ui/lint/lint-unexported-no-mangle.stderr diff --git a/src/test/ui/lint/lint-unknown-feature-default.rs b/tests/ui/lint/lint-unknown-feature-default.rs similarity index 100% rename from src/test/ui/lint/lint-unknown-feature-default.rs rename to tests/ui/lint/lint-unknown-feature-default.rs diff --git a/src/test/ui/lint/lint-unknown-feature.rs b/tests/ui/lint/lint-unknown-feature.rs similarity index 100% rename from src/test/ui/lint/lint-unknown-feature.rs rename to tests/ui/lint/lint-unknown-feature.rs diff --git a/src/test/ui/lint/lint-unknown-lint-cmdline.rs b/tests/ui/lint/lint-unknown-lint-cmdline.rs similarity index 100% rename from src/test/ui/lint/lint-unknown-lint-cmdline.rs rename to tests/ui/lint/lint-unknown-lint-cmdline.rs diff --git a/src/test/ui/lint/lint-unknown-lint-cmdline.stderr b/tests/ui/lint/lint-unknown-lint-cmdline.stderr similarity index 100% rename from src/test/ui/lint/lint-unknown-lint-cmdline.stderr rename to tests/ui/lint/lint-unknown-lint-cmdline.stderr diff --git a/src/test/ui/lint/lint-unknown-lint.rs b/tests/ui/lint/lint-unknown-lint.rs similarity index 100% rename from src/test/ui/lint/lint-unknown-lint.rs rename to tests/ui/lint/lint-unknown-lint.rs diff --git a/src/test/ui/lint/lint-unknown-lint.stderr b/tests/ui/lint/lint-unknown-lint.stderr similarity index 100% rename from src/test/ui/lint/lint-unknown-lint.stderr rename to tests/ui/lint/lint-unknown-lint.stderr diff --git a/src/test/ui/lint/lint-unnecessary-import-braces.rs b/tests/ui/lint/lint-unnecessary-import-braces.rs similarity index 100% rename from src/test/ui/lint/lint-unnecessary-import-braces.rs rename to tests/ui/lint/lint-unnecessary-import-braces.rs diff --git a/src/test/ui/lint/lint-unnecessary-import-braces.stderr b/tests/ui/lint/lint-unnecessary-import-braces.stderr similarity index 100% rename from src/test/ui/lint/lint-unnecessary-import-braces.stderr rename to tests/ui/lint/lint-unnecessary-import-braces.stderr diff --git a/src/test/ui/lint/lint-unnecessary-parens.fixed b/tests/ui/lint/lint-unnecessary-parens.fixed similarity index 100% rename from src/test/ui/lint/lint-unnecessary-parens.fixed rename to tests/ui/lint/lint-unnecessary-parens.fixed diff --git a/src/test/ui/lint/lint-unnecessary-parens.rs b/tests/ui/lint/lint-unnecessary-parens.rs similarity index 100% rename from src/test/ui/lint/lint-unnecessary-parens.rs rename to tests/ui/lint/lint-unnecessary-parens.rs diff --git a/src/test/ui/lint/lint-unnecessary-parens.stderr b/tests/ui/lint/lint-unnecessary-parens.stderr similarity index 100% rename from src/test/ui/lint/lint-unnecessary-parens.stderr rename to tests/ui/lint/lint-unnecessary-parens.stderr diff --git a/src/test/ui/lint/lint-unsafe-code.rs b/tests/ui/lint/lint-unsafe-code.rs similarity index 100% rename from src/test/ui/lint/lint-unsafe-code.rs rename to tests/ui/lint/lint-unsafe-code.rs diff --git a/src/test/ui/lint/lint-unsafe-code.stderr b/tests/ui/lint/lint-unsafe-code.stderr similarity index 100% rename from src/test/ui/lint/lint-unsafe-code.stderr rename to tests/ui/lint/lint-unsafe-code.stderr diff --git a/src/test/ui/lint/lint-uppercase-variables.rs b/tests/ui/lint/lint-uppercase-variables.rs similarity index 100% rename from src/test/ui/lint/lint-uppercase-variables.rs rename to tests/ui/lint/lint-uppercase-variables.rs diff --git a/src/test/ui/lint/lint-uppercase-variables.stderr b/tests/ui/lint/lint-uppercase-variables.stderr similarity index 100% rename from src/test/ui/lint/lint-uppercase-variables.stderr rename to tests/ui/lint/lint-uppercase-variables.stderr diff --git a/src/test/ui/lint/lint_pre_expansion_extern_module_aux.rs b/tests/ui/lint/lint_pre_expansion_extern_module_aux.rs similarity index 100% rename from src/test/ui/lint/lint_pre_expansion_extern_module_aux.rs rename to tests/ui/lint/lint_pre_expansion_extern_module_aux.rs diff --git a/src/test/ui/lint/lints-in-foreign-macros.rs b/tests/ui/lint/lints-in-foreign-macros.rs similarity index 100% rename from src/test/ui/lint/lints-in-foreign-macros.rs rename to tests/ui/lint/lints-in-foreign-macros.rs diff --git a/src/test/ui/lint/lints-in-foreign-macros.stderr b/tests/ui/lint/lints-in-foreign-macros.stderr similarity index 100% rename from src/test/ui/lint/lints-in-foreign-macros.stderr rename to tests/ui/lint/lints-in-foreign-macros.stderr diff --git a/src/test/ui/lint/missing-doc-private-macro.rs b/tests/ui/lint/missing-doc-private-macro.rs similarity index 100% rename from src/test/ui/lint/missing-doc-private-macro.rs rename to tests/ui/lint/missing-doc-private-macro.rs diff --git a/src/test/ui/lint/missing-doc-private-macro.stderr b/tests/ui/lint/missing-doc-private-macro.stderr similarity index 100% rename from src/test/ui/lint/missing-doc-private-macro.stderr rename to tests/ui/lint/missing-doc-private-macro.stderr diff --git a/src/test/ui/lint/must_not_suspend/boxed.rs b/tests/ui/lint/must_not_suspend/boxed.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/boxed.rs rename to tests/ui/lint/must_not_suspend/boxed.rs diff --git a/src/test/ui/lint/must_not_suspend/boxed.stderr b/tests/ui/lint/must_not_suspend/boxed.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/boxed.stderr rename to tests/ui/lint/must_not_suspend/boxed.stderr diff --git a/src/test/ui/lint/must_not_suspend/dedup.rs b/tests/ui/lint/must_not_suspend/dedup.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/dedup.rs rename to tests/ui/lint/must_not_suspend/dedup.rs diff --git a/src/test/ui/lint/must_not_suspend/dedup.stderr b/tests/ui/lint/must_not_suspend/dedup.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/dedup.stderr rename to tests/ui/lint/must_not_suspend/dedup.stderr diff --git a/src/test/ui/lint/must_not_suspend/feature-gate-must_not_suspend.rs b/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/feature-gate-must_not_suspend.rs rename to tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.rs diff --git a/src/test/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr b/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr rename to tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr diff --git a/src/test/ui/lint/must_not_suspend/gated.rs b/tests/ui/lint/must_not_suspend/gated.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/gated.rs rename to tests/ui/lint/must_not_suspend/gated.rs diff --git a/src/test/ui/lint/must_not_suspend/gated.stderr b/tests/ui/lint/must_not_suspend/gated.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/gated.stderr rename to tests/ui/lint/must_not_suspend/gated.stderr diff --git a/src/test/ui/lint/must_not_suspend/generic.rs b/tests/ui/lint/must_not_suspend/generic.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/generic.rs rename to tests/ui/lint/must_not_suspend/generic.rs diff --git a/src/test/ui/lint/must_not_suspend/handled.rs b/tests/ui/lint/must_not_suspend/handled.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/handled.rs rename to tests/ui/lint/must_not_suspend/handled.rs diff --git a/src/test/ui/lint/must_not_suspend/issue-89562.rs b/tests/ui/lint/must_not_suspend/issue-89562.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/issue-89562.rs rename to tests/ui/lint/must_not_suspend/issue-89562.rs diff --git a/src/test/ui/lint/must_not_suspend/mutex.rs b/tests/ui/lint/must_not_suspend/mutex.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/mutex.rs rename to tests/ui/lint/must_not_suspend/mutex.rs diff --git a/src/test/ui/lint/must_not_suspend/mutex.stderr b/tests/ui/lint/must_not_suspend/mutex.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/mutex.stderr rename to tests/ui/lint/must_not_suspend/mutex.stderr diff --git a/src/test/ui/lint/must_not_suspend/other_items.rs b/tests/ui/lint/must_not_suspend/other_items.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/other_items.rs rename to tests/ui/lint/must_not_suspend/other_items.rs diff --git a/src/test/ui/lint/must_not_suspend/other_items.stderr b/tests/ui/lint/must_not_suspend/other_items.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/other_items.stderr rename to tests/ui/lint/must_not_suspend/other_items.stderr diff --git a/src/test/ui/lint/must_not_suspend/ref-drop-tracking.rs b/tests/ui/lint/must_not_suspend/ref-drop-tracking.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/ref-drop-tracking.rs rename to tests/ui/lint/must_not_suspend/ref-drop-tracking.rs diff --git a/src/test/ui/lint/must_not_suspend/ref-drop-tracking.stderr b/tests/ui/lint/must_not_suspend/ref-drop-tracking.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/ref-drop-tracking.stderr rename to tests/ui/lint/must_not_suspend/ref-drop-tracking.stderr diff --git a/src/test/ui/lint/must_not_suspend/ref.drop_tracking.stderr b/tests/ui/lint/must_not_suspend/ref.drop_tracking.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/ref.drop_tracking.stderr rename to tests/ui/lint/must_not_suspend/ref.drop_tracking.stderr diff --git a/src/test/ui/lint/must_not_suspend/ref.no_drop_tracking.stderr b/tests/ui/lint/must_not_suspend/ref.no_drop_tracking.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/ref.no_drop_tracking.stderr rename to tests/ui/lint/must_not_suspend/ref.no_drop_tracking.stderr diff --git a/src/test/ui/lint/must_not_suspend/ref.rs b/tests/ui/lint/must_not_suspend/ref.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/ref.rs rename to tests/ui/lint/must_not_suspend/ref.rs diff --git a/src/test/ui/lint/must_not_suspend/return.rs b/tests/ui/lint/must_not_suspend/return.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/return.rs rename to tests/ui/lint/must_not_suspend/return.rs diff --git a/src/test/ui/lint/must_not_suspend/return.stderr b/tests/ui/lint/must_not_suspend/return.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/return.stderr rename to tests/ui/lint/must_not_suspend/return.stderr diff --git a/src/test/ui/lint/must_not_suspend/trait.rs b/tests/ui/lint/must_not_suspend/trait.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/trait.rs rename to tests/ui/lint/must_not_suspend/trait.rs diff --git a/src/test/ui/lint/must_not_suspend/trait.stderr b/tests/ui/lint/must_not_suspend/trait.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/trait.stderr rename to tests/ui/lint/must_not_suspend/trait.stderr diff --git a/src/test/ui/lint/must_not_suspend/tuple-mismatch.rs b/tests/ui/lint/must_not_suspend/tuple-mismatch.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/tuple-mismatch.rs rename to tests/ui/lint/must_not_suspend/tuple-mismatch.rs diff --git a/src/test/ui/lint/must_not_suspend/tuple-mismatch.stderr b/tests/ui/lint/must_not_suspend/tuple-mismatch.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/tuple-mismatch.stderr rename to tests/ui/lint/must_not_suspend/tuple-mismatch.stderr diff --git a/src/test/ui/lint/must_not_suspend/unit.rs b/tests/ui/lint/must_not_suspend/unit.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/unit.rs rename to tests/ui/lint/must_not_suspend/unit.rs diff --git a/src/test/ui/lint/must_not_suspend/unit.stderr b/tests/ui/lint/must_not_suspend/unit.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/unit.stderr rename to tests/ui/lint/must_not_suspend/unit.stderr diff --git a/src/test/ui/lint/must_not_suspend/warn.rs b/tests/ui/lint/must_not_suspend/warn.rs similarity index 100% rename from src/test/ui/lint/must_not_suspend/warn.rs rename to tests/ui/lint/must_not_suspend/warn.rs diff --git a/src/test/ui/lint/must_not_suspend/warn.stderr b/tests/ui/lint/must_not_suspend/warn.stderr similarity index 100% rename from src/test/ui/lint/must_not_suspend/warn.stderr rename to tests/ui/lint/must_not_suspend/warn.stderr diff --git a/src/test/ui/lint/no-coverage.rs b/tests/ui/lint/no-coverage.rs similarity index 100% rename from src/test/ui/lint/no-coverage.rs rename to tests/ui/lint/no-coverage.rs diff --git a/src/test/ui/lint/no-coverage.stderr b/tests/ui/lint/no-coverage.stderr similarity index 100% rename from src/test/ui/lint/no-coverage.stderr rename to tests/ui/lint/no-coverage.stderr diff --git a/src/test/ui/lint/noop-method-call.rs b/tests/ui/lint/noop-method-call.rs similarity index 100% rename from src/test/ui/lint/noop-method-call.rs rename to tests/ui/lint/noop-method-call.rs diff --git a/src/test/ui/lint/noop-method-call.stderr b/tests/ui/lint/noop-method-call.stderr similarity index 100% rename from src/test/ui/lint/noop-method-call.stderr rename to tests/ui/lint/noop-method-call.stderr diff --git a/src/test/ui/lint/not_found.rs b/tests/ui/lint/not_found.rs similarity index 100% rename from src/test/ui/lint/not_found.rs rename to tests/ui/lint/not_found.rs diff --git a/src/test/ui/lint/not_found.stderr b/tests/ui/lint/not_found.stderr similarity index 100% rename from src/test/ui/lint/not_found.stderr rename to tests/ui/lint/not_found.stderr diff --git a/src/test/ui/lint/opaque-ty-ffi-normalization-cycle.rs b/tests/ui/lint/opaque-ty-ffi-normalization-cycle.rs similarity index 100% rename from src/test/ui/lint/opaque-ty-ffi-normalization-cycle.rs rename to tests/ui/lint/opaque-ty-ffi-normalization-cycle.rs diff --git a/src/test/ui/lint/opaque-ty-ffi-normalization-cycle.stderr b/tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr similarity index 100% rename from src/test/ui/lint/opaque-ty-ffi-normalization-cycle.stderr rename to tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr diff --git a/src/test/ui/lint/opaque-ty-ffi-unsafe.rs b/tests/ui/lint/opaque-ty-ffi-unsafe.rs similarity index 100% rename from src/test/ui/lint/opaque-ty-ffi-unsafe.rs rename to tests/ui/lint/opaque-ty-ffi-unsafe.rs diff --git a/src/test/ui/lint/opaque-ty-ffi-unsafe.stderr b/tests/ui/lint/opaque-ty-ffi-unsafe.stderr similarity index 100% rename from src/test/ui/lint/opaque-ty-ffi-unsafe.stderr rename to tests/ui/lint/opaque-ty-ffi-unsafe.stderr diff --git a/src/test/ui/lint/outer-forbid.rs b/tests/ui/lint/outer-forbid.rs similarity index 100% rename from src/test/ui/lint/outer-forbid.rs rename to tests/ui/lint/outer-forbid.rs diff --git a/src/test/ui/lint/outer-forbid.stderr b/tests/ui/lint/outer-forbid.stderr similarity index 100% rename from src/test/ui/lint/outer-forbid.stderr rename to tests/ui/lint/outer-forbid.stderr diff --git a/src/test/ui/lint/reasons-erroneous.rs b/tests/ui/lint/reasons-erroneous.rs similarity index 100% rename from src/test/ui/lint/reasons-erroneous.rs rename to tests/ui/lint/reasons-erroneous.rs diff --git a/src/test/ui/lint/reasons-erroneous.stderr b/tests/ui/lint/reasons-erroneous.stderr similarity index 100% rename from src/test/ui/lint/reasons-erroneous.stderr rename to tests/ui/lint/reasons-erroneous.stderr diff --git a/src/test/ui/lint/reasons-forbidden.rs b/tests/ui/lint/reasons-forbidden.rs similarity index 100% rename from src/test/ui/lint/reasons-forbidden.rs rename to tests/ui/lint/reasons-forbidden.rs diff --git a/src/test/ui/lint/reasons-forbidden.stderr b/tests/ui/lint/reasons-forbidden.stderr similarity index 100% rename from src/test/ui/lint/reasons-forbidden.stderr rename to tests/ui/lint/reasons-forbidden.stderr diff --git a/src/test/ui/lint/reasons.rs b/tests/ui/lint/reasons.rs similarity index 100% rename from src/test/ui/lint/reasons.rs rename to tests/ui/lint/reasons.rs diff --git a/src/test/ui/lint/reasons.stderr b/tests/ui/lint/reasons.stderr similarity index 100% rename from src/test/ui/lint/reasons.stderr rename to tests/ui/lint/reasons.stderr diff --git a/src/test/ui/lint/recommend-literal.rs b/tests/ui/lint/recommend-literal.rs similarity index 100% rename from src/test/ui/lint/recommend-literal.rs rename to tests/ui/lint/recommend-literal.rs diff --git a/src/test/ui/lint/recommend-literal.stderr b/tests/ui/lint/recommend-literal.stderr similarity index 100% rename from src/test/ui/lint/recommend-literal.stderr rename to tests/ui/lint/recommend-literal.stderr diff --git a/src/test/ui/lint/redundant-semicolon/auxiliary/redundant-semi-proc-macro-def.rs b/tests/ui/lint/redundant-semicolon/auxiliary/redundant-semi-proc-macro-def.rs similarity index 100% rename from src/test/ui/lint/redundant-semicolon/auxiliary/redundant-semi-proc-macro-def.rs rename to tests/ui/lint/redundant-semicolon/auxiliary/redundant-semi-proc-macro-def.rs diff --git a/src/test/ui/lint/redundant-semicolon/item-stmt-semi.rs b/tests/ui/lint/redundant-semicolon/item-stmt-semi.rs similarity index 100% rename from src/test/ui/lint/redundant-semicolon/item-stmt-semi.rs rename to tests/ui/lint/redundant-semicolon/item-stmt-semi.rs diff --git a/src/test/ui/lint/redundant-semicolon/item-stmt-semi.stderr b/tests/ui/lint/redundant-semicolon/item-stmt-semi.stderr similarity index 100% rename from src/test/ui/lint/redundant-semicolon/item-stmt-semi.stderr rename to tests/ui/lint/redundant-semicolon/item-stmt-semi.stderr diff --git a/src/test/ui/lint/redundant-semicolon/redundant-semi-proc-macro.rs b/tests/ui/lint/redundant-semicolon/redundant-semi-proc-macro.rs similarity index 100% rename from src/test/ui/lint/redundant-semicolon/redundant-semi-proc-macro.rs rename to tests/ui/lint/redundant-semicolon/redundant-semi-proc-macro.rs diff --git a/src/test/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr b/tests/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr similarity index 100% rename from src/test/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr rename to tests/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr diff --git a/src/test/ui/lint/register-tool-lint.rs b/tests/ui/lint/register-tool-lint.rs similarity index 100% rename from src/test/ui/lint/register-tool-lint.rs rename to tests/ui/lint/register-tool-lint.rs diff --git a/src/test/ui/lint/register-tool-lint.stderr b/tests/ui/lint/register-tool-lint.stderr similarity index 100% rename from src/test/ui/lint/register-tool-lint.stderr rename to tests/ui/lint/register-tool-lint.stderr diff --git a/src/test/ui/lint/renamed-lints-still-apply.rs b/tests/ui/lint/renamed-lints-still-apply.rs similarity index 100% rename from src/test/ui/lint/renamed-lints-still-apply.rs rename to tests/ui/lint/renamed-lints-still-apply.rs diff --git a/src/test/ui/lint/renamed-lints-still-apply.stderr b/tests/ui/lint/renamed-lints-still-apply.stderr similarity index 100% rename from src/test/ui/lint/renamed-lints-still-apply.stderr rename to tests/ui/lint/renamed-lints-still-apply.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs b/tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs rename to tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs b/tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs rename to tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs rename to tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr rename to tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs rename to tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr rename to tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs rename to tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr rename to tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs rename to tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr rename to tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs rename to tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs rename to tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs rename to tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr rename to tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs rename to tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr rename to tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr diff --git a/src/test/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs rename to tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs diff --git a/src/test/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout similarity index 100% rename from src/test/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout rename to tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr b/tests/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr similarity index 100% rename from src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr rename to tests/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr diff --git a/src/test/ui/lint/rustdoc-group.rs b/tests/ui/lint/rustdoc-group.rs similarity index 100% rename from src/test/ui/lint/rustdoc-group.rs rename to tests/ui/lint/rustdoc-group.rs diff --git a/src/test/ui/lint/rustdoc-group.stderr b/tests/ui/lint/rustdoc-group.stderr similarity index 100% rename from src/test/ui/lint/rustdoc-group.stderr rename to tests/ui/lint/rustdoc-group.stderr diff --git a/src/test/ui/lint/rustdoc-renamed.rs b/tests/ui/lint/rustdoc-renamed.rs similarity index 100% rename from src/test/ui/lint/rustdoc-renamed.rs rename to tests/ui/lint/rustdoc-renamed.rs diff --git a/src/test/ui/lint/rustdoc-renamed.stderr b/tests/ui/lint/rustdoc-renamed.stderr similarity index 100% rename from src/test/ui/lint/rustdoc-renamed.stderr rename to tests/ui/lint/rustdoc-renamed.stderr diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/auxiliary/foreign-crate.rs b/tests/ui/lint/semicolon-in-expressions-from-macros/auxiliary/foreign-crate.rs similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/auxiliary/foreign-crate.rs rename to tests/ui/lint/semicolon-in-expressions-from-macros/auxiliary/foreign-crate.rs diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/foreign-crate.rs b/tests/ui/lint/semicolon-in-expressions-from-macros/foreign-crate.rs similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/foreign-crate.rs rename to tests/ui/lint/semicolon-in-expressions-from-macros/foreign-crate.rs diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs b/tests/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs rename to tests/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr b/tests/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr rename to tests/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.stderr diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.rs b/tests/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.rs similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.rs rename to tests/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.rs diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.stderr b/tests/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.stderr similarity index 100% rename from src/test/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.stderr rename to tests/ui/lint/semicolon-in-expressions-from-macros/warn-semicolon-in-expressions-from-macros.stderr diff --git a/src/test/ui/lint/special-upper-lower-cases.rs b/tests/ui/lint/special-upper-lower-cases.rs similarity index 100% rename from src/test/ui/lint/special-upper-lower-cases.rs rename to tests/ui/lint/special-upper-lower-cases.rs diff --git a/src/test/ui/lint/special-upper-lower-cases.stderr b/tests/ui/lint/special-upper-lower-cases.stderr similarity index 100% rename from src/test/ui/lint/special-upper-lower-cases.stderr rename to tests/ui/lint/special-upper-lower-cases.stderr diff --git a/src/test/ui/lint/suggestions.fixed b/tests/ui/lint/suggestions.fixed similarity index 100% rename from src/test/ui/lint/suggestions.fixed rename to tests/ui/lint/suggestions.fixed diff --git a/src/test/ui/lint/suggestions.rs b/tests/ui/lint/suggestions.rs similarity index 100% rename from src/test/ui/lint/suggestions.rs rename to tests/ui/lint/suggestions.rs diff --git a/src/test/ui/lint/suggestions.stderr b/tests/ui/lint/suggestions.stderr similarity index 100% rename from src/test/ui/lint/suggestions.stderr rename to tests/ui/lint/suggestions.stderr diff --git a/src/test/ui/lint/test-allow-dead-extern-static-no-warning.rs b/tests/ui/lint/test-allow-dead-extern-static-no-warning.rs similarity index 100% rename from src/test/ui/lint/test-allow-dead-extern-static-no-warning.rs rename to tests/ui/lint/test-allow-dead-extern-static-no-warning.rs diff --git a/src/test/ui/lint/test-inner-fn.rs b/tests/ui/lint/test-inner-fn.rs similarity index 100% rename from src/test/ui/lint/test-inner-fn.rs rename to tests/ui/lint/test-inner-fn.rs diff --git a/src/test/ui/lint/test-inner-fn.stderr b/tests/ui/lint/test-inner-fn.stderr similarity index 100% rename from src/test/ui/lint/test-inner-fn.stderr rename to tests/ui/lint/test-inner-fn.stderr diff --git a/src/test/ui/lint/trivial-cast-ice.rs b/tests/ui/lint/trivial-cast-ice.rs similarity index 100% rename from src/test/ui/lint/trivial-cast-ice.rs rename to tests/ui/lint/trivial-cast-ice.rs diff --git a/src/test/ui/lint/trivial-casts-featuring-type-ascription.rs b/tests/ui/lint/trivial-casts-featuring-type-ascription.rs similarity index 100% rename from src/test/ui/lint/trivial-casts-featuring-type-ascription.rs rename to tests/ui/lint/trivial-casts-featuring-type-ascription.rs diff --git a/src/test/ui/lint/trivial-casts-featuring-type-ascription.stderr b/tests/ui/lint/trivial-casts-featuring-type-ascription.stderr similarity index 100% rename from src/test/ui/lint/trivial-casts-featuring-type-ascription.stderr rename to tests/ui/lint/trivial-casts-featuring-type-ascription.stderr diff --git a/src/test/ui/lint/trivial-casts.rs b/tests/ui/lint/trivial-casts.rs similarity index 100% rename from src/test/ui/lint/trivial-casts.rs rename to tests/ui/lint/trivial-casts.rs diff --git a/src/test/ui/lint/trivial-casts.stderr b/tests/ui/lint/trivial-casts.stderr similarity index 100% rename from src/test/ui/lint/trivial-casts.stderr rename to tests/ui/lint/trivial-casts.stderr diff --git a/src/test/ui/lint/trivial_casts.rs b/tests/ui/lint/trivial_casts.rs similarity index 100% rename from src/test/ui/lint/trivial_casts.rs rename to tests/ui/lint/trivial_casts.rs diff --git a/src/test/ui/lint/trivial_casts.stderr b/tests/ui/lint/trivial_casts.stderr similarity index 100% rename from src/test/ui/lint/trivial_casts.stderr rename to tests/ui/lint/trivial_casts.stderr diff --git a/src/test/ui/lint/type-overflow.rs b/tests/ui/lint/type-overflow.rs similarity index 100% rename from src/test/ui/lint/type-overflow.rs rename to tests/ui/lint/type-overflow.rs diff --git a/src/test/ui/lint/type-overflow.stderr b/tests/ui/lint/type-overflow.stderr similarity index 100% rename from src/test/ui/lint/type-overflow.stderr rename to tests/ui/lint/type-overflow.stderr diff --git a/src/test/ui/lint/unaligned_references.rs b/tests/ui/lint/unaligned_references.rs similarity index 100% rename from src/test/ui/lint/unaligned_references.rs rename to tests/ui/lint/unaligned_references.rs diff --git a/src/test/ui/lint/unaligned_references.stderr b/tests/ui/lint/unaligned_references.stderr similarity index 100% rename from src/test/ui/lint/unaligned_references.stderr rename to tests/ui/lint/unaligned_references.stderr diff --git a/src/test/ui/lint/unaligned_references_external_macro.rs b/tests/ui/lint/unaligned_references_external_macro.rs similarity index 100% rename from src/test/ui/lint/unaligned_references_external_macro.rs rename to tests/ui/lint/unaligned_references_external_macro.rs diff --git a/src/test/ui/lint/unaligned_references_external_macro.stderr b/tests/ui/lint/unaligned_references_external_macro.stderr similarity index 100% rename from src/test/ui/lint/unaligned_references_external_macro.stderr rename to tests/ui/lint/unaligned_references_external_macro.stderr diff --git a/src/test/ui/lint/unnecessary-extern-crate.rs b/tests/ui/lint/unnecessary-extern-crate.rs similarity index 100% rename from src/test/ui/lint/unnecessary-extern-crate.rs rename to tests/ui/lint/unnecessary-extern-crate.rs diff --git a/src/test/ui/lint/unnecessary-extern-crate.stderr b/tests/ui/lint/unnecessary-extern-crate.stderr similarity index 100% rename from src/test/ui/lint/unnecessary-extern-crate.stderr rename to tests/ui/lint/unnecessary-extern-crate.stderr diff --git a/src/test/ui/lint/unreachable-async-fn.rs b/tests/ui/lint/unreachable-async-fn.rs similarity index 100% rename from src/test/ui/lint/unreachable-async-fn.rs rename to tests/ui/lint/unreachable-async-fn.rs diff --git a/src/test/ui/lint/unreachable_pub.rs b/tests/ui/lint/unreachable_pub.rs similarity index 100% rename from src/test/ui/lint/unreachable_pub.rs rename to tests/ui/lint/unreachable_pub.rs diff --git a/src/test/ui/lint/unreachable_pub.stderr b/tests/ui/lint/unreachable_pub.stderr similarity index 100% rename from src/test/ui/lint/unreachable_pub.stderr rename to tests/ui/lint/unreachable_pub.stderr diff --git a/src/test/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs b/tests/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs similarity index 100% rename from src/test/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs rename to tests/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs diff --git a/src/test/ui/lint/unsafe_code/forge_unsafe_block.rs b/tests/ui/lint/unsafe_code/forge_unsafe_block.rs similarity index 100% rename from src/test/ui/lint/unsafe_code/forge_unsafe_block.rs rename to tests/ui/lint/unsafe_code/forge_unsafe_block.rs diff --git a/src/test/ui/lint/unused-borrows.rs b/tests/ui/lint/unused-borrows.rs similarity index 100% rename from src/test/ui/lint/unused-borrows.rs rename to tests/ui/lint/unused-borrows.rs diff --git a/src/test/ui/lint/unused-borrows.stderr b/tests/ui/lint/unused-borrows.stderr similarity index 100% rename from src/test/ui/lint/unused-borrows.stderr rename to tests/ui/lint/unused-borrows.stderr diff --git a/src/test/ui/lint/unused-braces-while-let-with-mutable-value.rs b/tests/ui/lint/unused-braces-while-let-with-mutable-value.rs similarity index 100% rename from src/test/ui/lint/unused-braces-while-let-with-mutable-value.rs rename to tests/ui/lint/unused-braces-while-let-with-mutable-value.rs diff --git a/src/test/ui/lint/unused-qualification-in-derive-expansion.rs b/tests/ui/lint/unused-qualification-in-derive-expansion.rs similarity index 100% rename from src/test/ui/lint/unused-qualification-in-derive-expansion.rs rename to tests/ui/lint/unused-qualification-in-derive-expansion.rs diff --git a/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs b/tests/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs similarity index 100% rename from src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs rename to tests/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs diff --git a/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs b/tests/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs similarity index 100% rename from src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs rename to tests/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs diff --git a/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs b/tests/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs similarity index 100% rename from src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs rename to tests/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs diff --git a/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs b/tests/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs similarity index 100% rename from src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs rename to tests/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs diff --git a/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs b/tests/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs similarity index 100% rename from src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs rename to tests/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs diff --git a/src/test/ui/lint/unused/issue-104397.rs b/tests/ui/lint/unused/issue-104397.rs similarity index 100% rename from src/test/ui/lint/unused/issue-104397.rs rename to tests/ui/lint/unused/issue-104397.rs diff --git a/src/test/ui/lint/unused/issue-30730.rs b/tests/ui/lint/unused/issue-30730.rs similarity index 100% rename from src/test/ui/lint/unused/issue-30730.rs rename to tests/ui/lint/unused/issue-30730.rs diff --git a/src/test/ui/lint/unused/issue-30730.stderr b/tests/ui/lint/unused/issue-30730.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-30730.stderr rename to tests/ui/lint/unused/issue-30730.stderr diff --git a/src/test/ui/lint/unused/issue-46576.rs b/tests/ui/lint/unused/issue-46576.rs similarity index 100% rename from src/test/ui/lint/unused/issue-46576.rs rename to tests/ui/lint/unused/issue-46576.rs diff --git a/src/test/ui/lint/unused/issue-46576.stderr b/tests/ui/lint/unused/issue-46576.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-46576.stderr rename to tests/ui/lint/unused/issue-46576.stderr diff --git a/src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs b/tests/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs similarity index 100% rename from src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs rename to tests/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs diff --git a/src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr b/tests/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr rename to tests/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr diff --git a/src/test/ui/lint/unused/issue-54180-unused-ref-field.fixed b/tests/ui/lint/unused/issue-54180-unused-ref-field.fixed similarity index 100% rename from src/test/ui/lint/unused/issue-54180-unused-ref-field.fixed rename to tests/ui/lint/unused/issue-54180-unused-ref-field.fixed diff --git a/src/test/ui/lint/unused/issue-54180-unused-ref-field.rs b/tests/ui/lint/unused/issue-54180-unused-ref-field.rs similarity index 100% rename from src/test/ui/lint/unused/issue-54180-unused-ref-field.rs rename to tests/ui/lint/unused/issue-54180-unused-ref-field.rs diff --git a/src/test/ui/lint/unused/issue-54180-unused-ref-field.stderr b/tests/ui/lint/unused/issue-54180-unused-ref-field.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-54180-unused-ref-field.stderr rename to tests/ui/lint/unused/issue-54180-unused-ref-field.stderr diff --git a/src/test/ui/lint/unused/issue-54538-unused-parens-lint.fixed b/tests/ui/lint/unused/issue-54538-unused-parens-lint.fixed similarity index 100% rename from src/test/ui/lint/unused/issue-54538-unused-parens-lint.fixed rename to tests/ui/lint/unused/issue-54538-unused-parens-lint.fixed diff --git a/src/test/ui/lint/unused/issue-54538-unused-parens-lint.rs b/tests/ui/lint/unused/issue-54538-unused-parens-lint.rs similarity index 100% rename from src/test/ui/lint/unused/issue-54538-unused-parens-lint.rs rename to tests/ui/lint/unused/issue-54538-unused-parens-lint.rs diff --git a/src/test/ui/lint/unused/issue-54538-unused-parens-lint.stderr b/tests/ui/lint/unused/issue-54538-unused-parens-lint.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-54538-unused-parens-lint.stderr rename to tests/ui/lint/unused/issue-54538-unused-parens-lint.stderr diff --git a/src/test/ui/lint/unused/issue-59896.rs b/tests/ui/lint/unused/issue-59896.rs similarity index 100% rename from src/test/ui/lint/unused/issue-59896.rs rename to tests/ui/lint/unused/issue-59896.rs diff --git a/src/test/ui/lint/unused/issue-59896.stderr b/tests/ui/lint/unused/issue-59896.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-59896.stderr rename to tests/ui/lint/unused/issue-59896.stderr diff --git a/src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs b/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs similarity index 100% rename from src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs rename to tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs diff --git a/src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr b/tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr rename to tests/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr diff --git a/src/test/ui/lint/unused/issue-70041.rs b/tests/ui/lint/unused/issue-70041.rs similarity index 100% rename from src/test/ui/lint/unused/issue-70041.rs rename to tests/ui/lint/unused/issue-70041.rs diff --git a/src/test/ui/lint/unused/issue-70041.stderr b/tests/ui/lint/unused/issue-70041.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-70041.stderr rename to tests/ui/lint/unused/issue-70041.stderr diff --git a/src/test/ui/lint/unused/issue-71290-unused-paren-binop.rs b/tests/ui/lint/unused/issue-71290-unused-paren-binop.rs similarity index 100% rename from src/test/ui/lint/unused/issue-71290-unused-paren-binop.rs rename to tests/ui/lint/unused/issue-71290-unused-paren-binop.rs diff --git a/src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs b/tests/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs similarity index 100% rename from src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs rename to tests/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs diff --git a/src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr b/tests/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr rename to tests/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr diff --git a/src/test/ui/lint/unused/issue-81314-unused-span-ident.fixed b/tests/ui/lint/unused/issue-81314-unused-span-ident.fixed similarity index 100% rename from src/test/ui/lint/unused/issue-81314-unused-span-ident.fixed rename to tests/ui/lint/unused/issue-81314-unused-span-ident.fixed diff --git a/src/test/ui/lint/unused/issue-81314-unused-span-ident.rs b/tests/ui/lint/unused/issue-81314-unused-span-ident.rs similarity index 100% rename from src/test/ui/lint/unused/issue-81314-unused-span-ident.rs rename to tests/ui/lint/unused/issue-81314-unused-span-ident.rs diff --git a/src/test/ui/lint/unused/issue-81314-unused-span-ident.stderr b/tests/ui/lint/unused/issue-81314-unused-span-ident.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-81314-unused-span-ident.stderr rename to tests/ui/lint/unused/issue-81314-unused-span-ident.stderr diff --git a/src/test/ui/lint/unused/issue-85913.rs b/tests/ui/lint/unused/issue-85913.rs similarity index 100% rename from src/test/ui/lint/unused/issue-85913.rs rename to tests/ui/lint/unused/issue-85913.rs diff --git a/src/test/ui/lint/unused/issue-85913.stderr b/tests/ui/lint/unused/issue-85913.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-85913.stderr rename to tests/ui/lint/unused/issue-85913.stderr diff --git a/src/test/ui/lint/unused/issue-88519-unused-paren.rs b/tests/ui/lint/unused/issue-88519-unused-paren.rs similarity index 100% rename from src/test/ui/lint/unused/issue-88519-unused-paren.rs rename to tests/ui/lint/unused/issue-88519-unused-paren.rs diff --git a/src/test/ui/lint/unused/issue-90807-unused-paren-error.rs b/tests/ui/lint/unused/issue-90807-unused-paren-error.rs similarity index 100% rename from src/test/ui/lint/unused/issue-90807-unused-paren-error.rs rename to tests/ui/lint/unused/issue-90807-unused-paren-error.rs diff --git a/src/test/ui/lint/unused/issue-90807-unused-paren-error.stderr b/tests/ui/lint/unused/issue-90807-unused-paren-error.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-90807-unused-paren-error.stderr rename to tests/ui/lint/unused/issue-90807-unused-paren-error.stderr diff --git a/src/test/ui/lint/unused/issue-90807-unused-paren.rs b/tests/ui/lint/unused/issue-90807-unused-paren.rs similarity index 100% rename from src/test/ui/lint/unused/issue-90807-unused-paren.rs rename to tests/ui/lint/unused/issue-90807-unused-paren.rs diff --git a/src/test/ui/lint/unused/issue-92751.rs b/tests/ui/lint/unused/issue-92751.rs similarity index 100% rename from src/test/ui/lint/unused/issue-92751.rs rename to tests/ui/lint/unused/issue-92751.rs diff --git a/src/test/ui/lint/unused/issue-92751.stderr b/tests/ui/lint/unused/issue-92751.stderr similarity index 100% rename from src/test/ui/lint/unused/issue-92751.stderr rename to tests/ui/lint/unused/issue-92751.stderr diff --git a/src/test/ui/lint/unused/lint-unused-extern-crate.rs b/tests/ui/lint/unused/lint-unused-extern-crate.rs similarity index 100% rename from src/test/ui/lint/unused/lint-unused-extern-crate.rs rename to tests/ui/lint/unused/lint-unused-extern-crate.rs diff --git a/src/test/ui/lint/unused/lint-unused-extern-crate.stderr b/tests/ui/lint/unused/lint-unused-extern-crate.stderr similarity index 100% rename from src/test/ui/lint/unused/lint-unused-extern-crate.stderr rename to tests/ui/lint/unused/lint-unused-extern-crate.stderr diff --git a/src/test/ui/lint/unused/lint-unused-imports.rs b/tests/ui/lint/unused/lint-unused-imports.rs similarity index 100% rename from src/test/ui/lint/unused/lint-unused-imports.rs rename to tests/ui/lint/unused/lint-unused-imports.rs diff --git a/src/test/ui/lint/unused/lint-unused-imports.stderr b/tests/ui/lint/unused/lint-unused-imports.stderr similarity index 100% rename from src/test/ui/lint/unused/lint-unused-imports.stderr rename to tests/ui/lint/unused/lint-unused-imports.stderr diff --git a/src/test/ui/lint/unused/lint-unused-mut-self.fixed b/tests/ui/lint/unused/lint-unused-mut-self.fixed similarity index 100% rename from src/test/ui/lint/unused/lint-unused-mut-self.fixed rename to tests/ui/lint/unused/lint-unused-mut-self.fixed diff --git a/src/test/ui/lint/unused/lint-unused-mut-self.rs b/tests/ui/lint/unused/lint-unused-mut-self.rs similarity index 100% rename from src/test/ui/lint/unused/lint-unused-mut-self.rs rename to tests/ui/lint/unused/lint-unused-mut-self.rs diff --git a/src/test/ui/lint/unused/lint-unused-mut-self.stderr b/tests/ui/lint/unused/lint-unused-mut-self.stderr similarity index 100% rename from src/test/ui/lint/unused/lint-unused-mut-self.stderr rename to tests/ui/lint/unused/lint-unused-mut-self.stderr diff --git a/src/test/ui/lint/unused/lint-unused-mut-variables.rs b/tests/ui/lint/unused/lint-unused-mut-variables.rs similarity index 100% rename from src/test/ui/lint/unused/lint-unused-mut-variables.rs rename to tests/ui/lint/unused/lint-unused-mut-variables.rs diff --git a/src/test/ui/lint/unused/lint-unused-mut-variables.stderr b/tests/ui/lint/unused/lint-unused-mut-variables.stderr similarity index 100% rename from src/test/ui/lint/unused/lint-unused-mut-variables.stderr rename to tests/ui/lint/unused/lint-unused-mut-variables.stderr diff --git a/src/test/ui/lint/unused/lint-unused-variables.rs b/tests/ui/lint/unused/lint-unused-variables.rs similarity index 100% rename from src/test/ui/lint/unused/lint-unused-variables.rs rename to tests/ui/lint/unused/lint-unused-variables.rs diff --git a/src/test/ui/lint/unused/lint-unused-variables.stderr b/tests/ui/lint/unused/lint-unused-variables.stderr similarity index 100% rename from src/test/ui/lint/unused/lint-unused-variables.stderr rename to tests/ui/lint/unused/lint-unused-variables.stderr diff --git a/src/test/ui/lint/unused/must-use-box-from-raw.rs b/tests/ui/lint/unused/must-use-box-from-raw.rs similarity index 100% rename from src/test/ui/lint/unused/must-use-box-from-raw.rs rename to tests/ui/lint/unused/must-use-box-from-raw.rs diff --git a/src/test/ui/lint/unused/must-use-box-from-raw.stderr b/tests/ui/lint/unused/must-use-box-from-raw.stderr similarity index 100% rename from src/test/ui/lint/unused/must-use-box-from-raw.stderr rename to tests/ui/lint/unused/must-use-box-from-raw.stderr diff --git a/src/test/ui/lint/unused/must-use-ops.rs b/tests/ui/lint/unused/must-use-ops.rs similarity index 100% rename from src/test/ui/lint/unused/must-use-ops.rs rename to tests/ui/lint/unused/must-use-ops.rs diff --git a/src/test/ui/lint/unused/must-use-ops.stderr b/tests/ui/lint/unused/must-use-ops.stderr similarity index 100% rename from src/test/ui/lint/unused/must-use-ops.stderr rename to tests/ui/lint/unused/must-use-ops.stderr diff --git a/src/test/ui/lint/unused/must_use-array.rs b/tests/ui/lint/unused/must_use-array.rs similarity index 100% rename from src/test/ui/lint/unused/must_use-array.rs rename to tests/ui/lint/unused/must_use-array.rs diff --git a/src/test/ui/lint/unused/must_use-array.stderr b/tests/ui/lint/unused/must_use-array.stderr similarity index 100% rename from src/test/ui/lint/unused/must_use-array.stderr rename to tests/ui/lint/unused/must_use-array.stderr diff --git a/src/test/ui/lint/unused/must_use-in-stdlib-traits.rs b/tests/ui/lint/unused/must_use-in-stdlib-traits.rs similarity index 100% rename from src/test/ui/lint/unused/must_use-in-stdlib-traits.rs rename to tests/ui/lint/unused/must_use-in-stdlib-traits.rs diff --git a/src/test/ui/lint/unused/must_use-in-stdlib-traits.stderr b/tests/ui/lint/unused/must_use-in-stdlib-traits.stderr similarity index 100% rename from src/test/ui/lint/unused/must_use-in-stdlib-traits.stderr rename to tests/ui/lint/unused/must_use-in-stdlib-traits.stderr diff --git a/src/test/ui/lint/unused/must_use-trait.rs b/tests/ui/lint/unused/must_use-trait.rs similarity index 100% rename from src/test/ui/lint/unused/must_use-trait.rs rename to tests/ui/lint/unused/must_use-trait.rs diff --git a/src/test/ui/lint/unused/must_use-trait.stderr b/tests/ui/lint/unused/must_use-trait.stderr similarity index 100% rename from src/test/ui/lint/unused/must_use-trait.stderr rename to tests/ui/lint/unused/must_use-trait.stderr diff --git a/src/test/ui/lint/unused/must_use-tuple.rs b/tests/ui/lint/unused/must_use-tuple.rs similarity index 100% rename from src/test/ui/lint/unused/must_use-tuple.rs rename to tests/ui/lint/unused/must_use-tuple.rs diff --git a/src/test/ui/lint/unused/must_use-tuple.stderr b/tests/ui/lint/unused/must_use-tuple.stderr similarity index 100% rename from src/test/ui/lint/unused/must_use-tuple.stderr rename to tests/ui/lint/unused/must_use-tuple.stderr diff --git a/src/test/ui/lint/unused/must_use-unit.rs b/tests/ui/lint/unused/must_use-unit.rs similarity index 100% rename from src/test/ui/lint/unused/must_use-unit.rs rename to tests/ui/lint/unused/must_use-unit.rs diff --git a/src/test/ui/lint/unused/must_use-unit.stderr b/tests/ui/lint/unused/must_use-unit.stderr similarity index 100% rename from src/test/ui/lint/unused/must_use-unit.stderr rename to tests/ui/lint/unused/must_use-unit.stderr diff --git a/src/test/ui/lint/unused/no-unused-parens-return-block.rs b/tests/ui/lint/unused/no-unused-parens-return-block.rs similarity index 100% rename from src/test/ui/lint/unused/no-unused-parens-return-block.rs rename to tests/ui/lint/unused/no-unused-parens-return-block.rs diff --git a/src/test/ui/lint/unused/unused-async.rs b/tests/ui/lint/unused/unused-async.rs similarity index 100% rename from src/test/ui/lint/unused/unused-async.rs rename to tests/ui/lint/unused/unused-async.rs diff --git a/src/test/ui/lint/unused/unused-async.stderr b/tests/ui/lint/unused/unused-async.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-async.stderr rename to tests/ui/lint/unused/unused-async.stderr diff --git a/src/test/ui/lint/unused/unused-attr-duplicate.rs b/tests/ui/lint/unused/unused-attr-duplicate.rs similarity index 100% rename from src/test/ui/lint/unused/unused-attr-duplicate.rs rename to tests/ui/lint/unused/unused-attr-duplicate.rs diff --git a/src/test/ui/lint/unused/unused-attr-duplicate.stderr b/tests/ui/lint/unused/unused-attr-duplicate.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-attr-duplicate.stderr rename to tests/ui/lint/unused/unused-attr-duplicate.stderr diff --git a/src/test/ui/lint/unused/unused-attr-macro-rules.rs b/tests/ui/lint/unused/unused-attr-macro-rules.rs similarity index 100% rename from src/test/ui/lint/unused/unused-attr-macro-rules.rs rename to tests/ui/lint/unused/unused-attr-macro-rules.rs diff --git a/src/test/ui/lint/unused/unused-attr-macro-rules.stderr b/tests/ui/lint/unused/unused-attr-macro-rules.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-attr-macro-rules.stderr rename to tests/ui/lint/unused/unused-attr-macro-rules.stderr diff --git a/src/test/ui/lint/unused/unused-closure.rs b/tests/ui/lint/unused/unused-closure.rs similarity index 100% rename from src/test/ui/lint/unused/unused-closure.rs rename to tests/ui/lint/unused/unused-closure.rs diff --git a/src/test/ui/lint/unused/unused-closure.stderr b/tests/ui/lint/unused/unused-closure.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-closure.stderr rename to tests/ui/lint/unused/unused-closure.stderr diff --git a/src/test/ui/lint/unused/unused-doc-comments-edge-cases.rs b/tests/ui/lint/unused/unused-doc-comments-edge-cases.rs similarity index 100% rename from src/test/ui/lint/unused/unused-doc-comments-edge-cases.rs rename to tests/ui/lint/unused/unused-doc-comments-edge-cases.rs diff --git a/src/test/ui/lint/unused/unused-doc-comments-edge-cases.stderr b/tests/ui/lint/unused/unused-doc-comments-edge-cases.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-doc-comments-edge-cases.stderr rename to tests/ui/lint/unused/unused-doc-comments-edge-cases.stderr diff --git a/src/test/ui/lint/unused/unused-doc-comments-for-macros.rs b/tests/ui/lint/unused/unused-doc-comments-for-macros.rs similarity index 100% rename from src/test/ui/lint/unused/unused-doc-comments-for-macros.rs rename to tests/ui/lint/unused/unused-doc-comments-for-macros.rs diff --git a/src/test/ui/lint/unused/unused-doc-comments-for-macros.stderr b/tests/ui/lint/unused/unused-doc-comments-for-macros.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-doc-comments-for-macros.stderr rename to tests/ui/lint/unused/unused-doc-comments-for-macros.stderr diff --git a/src/test/ui/lint/unused/unused-macro-rules-compile-error.rs b/tests/ui/lint/unused/unused-macro-rules-compile-error.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-compile-error.rs rename to tests/ui/lint/unused/unused-macro-rules-compile-error.rs diff --git a/src/test/ui/lint/unused/unused-macro-rules-compile-error.stderr b/tests/ui/lint/unused/unused-macro-rules-compile-error.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-compile-error.stderr rename to tests/ui/lint/unused/unused-macro-rules-compile-error.stderr diff --git a/src/test/ui/lint/unused/unused-macro-rules-decl.rs b/tests/ui/lint/unused/unused-macro-rules-decl.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-decl.rs rename to tests/ui/lint/unused/unused-macro-rules-decl.rs diff --git a/src/test/ui/lint/unused/unused-macro-rules-decl.stderr b/tests/ui/lint/unused/unused-macro-rules-decl.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-decl.stderr rename to tests/ui/lint/unused/unused-macro-rules-decl.stderr diff --git a/src/test/ui/lint/unused/unused-macro-rules-malformed-rule.rs b/tests/ui/lint/unused/unused-macro-rules-malformed-rule.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-malformed-rule.rs rename to tests/ui/lint/unused/unused-macro-rules-malformed-rule.rs diff --git a/src/test/ui/lint/unused/unused-macro-rules-malformed-rule.stderr b/tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules-malformed-rule.stderr rename to tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr diff --git a/src/test/ui/lint/unused/unused-macro-rules.rs b/tests/ui/lint/unused/unused-macro-rules.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules.rs rename to tests/ui/lint/unused/unused-macro-rules.rs diff --git a/src/test/ui/lint/unused/unused-macro-rules.stderr b/tests/ui/lint/unused/unused-macro-rules.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-rules.stderr rename to tests/ui/lint/unused/unused-macro-rules.stderr diff --git a/src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.rs b/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.rs rename to tests/ui/lint/unused/unused-macro-with-bad-frag-spec.rs diff --git a/src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr b/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr rename to tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr diff --git a/src/test/ui/lint/unused/unused-macro-with-follow-violation.rs b/tests/ui/lint/unused/unused-macro-with-follow-violation.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macro-with-follow-violation.rs rename to tests/ui/lint/unused/unused-macro-with-follow-violation.rs diff --git a/src/test/ui/lint/unused/unused-macro-with-follow-violation.stderr b/tests/ui/lint/unused/unused-macro-with-follow-violation.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macro-with-follow-violation.stderr rename to tests/ui/lint/unused/unused-macro-with-follow-violation.stderr diff --git a/src/test/ui/lint/unused/unused-macros-decl.rs b/tests/ui/lint/unused/unused-macros-decl.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macros-decl.rs rename to tests/ui/lint/unused/unused-macros-decl.rs diff --git a/src/test/ui/lint/unused/unused-macros-decl.stderr b/tests/ui/lint/unused/unused-macros-decl.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macros-decl.stderr rename to tests/ui/lint/unused/unused-macros-decl.stderr diff --git a/src/test/ui/lint/unused/unused-macros-malformed-rule.rs b/tests/ui/lint/unused/unused-macros-malformed-rule.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macros-malformed-rule.rs rename to tests/ui/lint/unused/unused-macros-malformed-rule.rs diff --git a/src/test/ui/lint/unused/unused-macros-malformed-rule.stderr b/tests/ui/lint/unused/unused-macros-malformed-rule.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macros-malformed-rule.stderr rename to tests/ui/lint/unused/unused-macros-malformed-rule.stderr diff --git a/src/test/ui/lint/unused/unused-macros.rs b/tests/ui/lint/unused/unused-macros.rs similarity index 100% rename from src/test/ui/lint/unused/unused-macros.rs rename to tests/ui/lint/unused/unused-macros.rs diff --git a/src/test/ui/lint/unused/unused-macros.stderr b/tests/ui/lint/unused/unused-macros.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-macros.stderr rename to tests/ui/lint/unused/unused-macros.stderr diff --git a/src/test/ui/lint/unused/unused-mut-warning-captured-var.fixed b/tests/ui/lint/unused/unused-mut-warning-captured-var.fixed similarity index 100% rename from src/test/ui/lint/unused/unused-mut-warning-captured-var.fixed rename to tests/ui/lint/unused/unused-mut-warning-captured-var.fixed diff --git a/src/test/ui/lint/unused/unused-mut-warning-captured-var.rs b/tests/ui/lint/unused/unused-mut-warning-captured-var.rs similarity index 100% rename from src/test/ui/lint/unused/unused-mut-warning-captured-var.rs rename to tests/ui/lint/unused/unused-mut-warning-captured-var.rs diff --git a/src/test/ui/lint/unused/unused-mut-warning-captured-var.stderr b/tests/ui/lint/unused/unused-mut-warning-captured-var.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-mut-warning-captured-var.stderr rename to tests/ui/lint/unused/unused-mut-warning-captured-var.stderr diff --git a/src/test/ui/lint/unused/unused-result.rs b/tests/ui/lint/unused/unused-result.rs similarity index 100% rename from src/test/ui/lint/unused/unused-result.rs rename to tests/ui/lint/unused/unused-result.rs diff --git a/src/test/ui/lint/unused/unused-result.stderr b/tests/ui/lint/unused/unused-result.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-result.stderr rename to tests/ui/lint/unused/unused-result.stderr diff --git a/src/test/ui/lint/unused/unused-supertrait.rs b/tests/ui/lint/unused/unused-supertrait.rs similarity index 100% rename from src/test/ui/lint/unused/unused-supertrait.rs rename to tests/ui/lint/unused/unused-supertrait.rs diff --git a/src/test/ui/lint/unused/unused-supertrait.stderr b/tests/ui/lint/unused/unused-supertrait.stderr similarity index 100% rename from src/test/ui/lint/unused/unused-supertrait.stderr rename to tests/ui/lint/unused/unused-supertrait.stderr diff --git a/src/test/ui/lint/unused/unused_attributes-must_use.rs b/tests/ui/lint/unused/unused_attributes-must_use.rs similarity index 100% rename from src/test/ui/lint/unused/unused_attributes-must_use.rs rename to tests/ui/lint/unused/unused_attributes-must_use.rs diff --git a/src/test/ui/lint/unused/unused_attributes-must_use.stderr b/tests/ui/lint/unused/unused_attributes-must_use.stderr similarity index 100% rename from src/test/ui/lint/unused/unused_attributes-must_use.stderr rename to tests/ui/lint/unused/unused_attributes-must_use.stderr diff --git a/src/test/ui/lint/unused/useless-comment.rs b/tests/ui/lint/unused/useless-comment.rs similarity index 100% rename from src/test/ui/lint/unused/useless-comment.rs rename to tests/ui/lint/unused/useless-comment.rs diff --git a/src/test/ui/lint/unused/useless-comment.stderr b/tests/ui/lint/unused/useless-comment.stderr similarity index 100% rename from src/test/ui/lint/unused/useless-comment.stderr rename to tests/ui/lint/unused/useless-comment.stderr diff --git a/src/test/ui/lint/unused_braces.fixed b/tests/ui/lint/unused_braces.fixed similarity index 100% rename from src/test/ui/lint/unused_braces.fixed rename to tests/ui/lint/unused_braces.fixed diff --git a/src/test/ui/lint/unused_braces.rs b/tests/ui/lint/unused_braces.rs similarity index 100% rename from src/test/ui/lint/unused_braces.rs rename to tests/ui/lint/unused_braces.rs diff --git a/src/test/ui/lint/unused_braces.stderr b/tests/ui/lint/unused_braces.stderr similarity index 100% rename from src/test/ui/lint/unused_braces.stderr rename to tests/ui/lint/unused_braces.stderr diff --git a/src/test/ui/lint/unused_braces_borrow.fixed b/tests/ui/lint/unused_braces_borrow.fixed similarity index 100% rename from src/test/ui/lint/unused_braces_borrow.fixed rename to tests/ui/lint/unused_braces_borrow.fixed diff --git a/src/test/ui/lint/unused_braces_borrow.rs b/tests/ui/lint/unused_braces_borrow.rs similarity index 100% rename from src/test/ui/lint/unused_braces_borrow.rs rename to tests/ui/lint/unused_braces_borrow.rs diff --git a/src/test/ui/lint/unused_braces_borrow.stderr b/tests/ui/lint/unused_braces_borrow.stderr similarity index 100% rename from src/test/ui/lint/unused_braces_borrow.stderr rename to tests/ui/lint/unused_braces_borrow.stderr diff --git a/src/test/ui/lint/unused_braces_macro.rs b/tests/ui/lint/unused_braces_macro.rs similarity index 100% rename from src/test/ui/lint/unused_braces_macro.rs rename to tests/ui/lint/unused_braces_macro.rs diff --git a/src/test/ui/lint/unused_import_warning_issue_45268.rs b/tests/ui/lint/unused_import_warning_issue_45268.rs similarity index 100% rename from src/test/ui/lint/unused_import_warning_issue_45268.rs rename to tests/ui/lint/unused_import_warning_issue_45268.rs diff --git a/src/test/ui/lint/unused_import_warning_issue_45268.stderr b/tests/ui/lint/unused_import_warning_issue_45268.stderr similarity index 100% rename from src/test/ui/lint/unused_import_warning_issue_45268.stderr rename to tests/ui/lint/unused_import_warning_issue_45268.stderr diff --git a/src/test/ui/lint/unused_labels.rs b/tests/ui/lint/unused_labels.rs similarity index 100% rename from src/test/ui/lint/unused_labels.rs rename to tests/ui/lint/unused_labels.rs diff --git a/src/test/ui/lint/unused_labels.stderr b/tests/ui/lint/unused_labels.stderr similarity index 100% rename from src/test/ui/lint/unused_labels.stderr rename to tests/ui/lint/unused_labels.stderr diff --git a/src/test/ui/lint/unused_parens_json_suggestion.fixed b/tests/ui/lint/unused_parens_json_suggestion.fixed similarity index 100% rename from src/test/ui/lint/unused_parens_json_suggestion.fixed rename to tests/ui/lint/unused_parens_json_suggestion.fixed diff --git a/src/test/ui/lint/unused_parens_json_suggestion.rs b/tests/ui/lint/unused_parens_json_suggestion.rs similarity index 100% rename from src/test/ui/lint/unused_parens_json_suggestion.rs rename to tests/ui/lint/unused_parens_json_suggestion.rs diff --git a/src/test/ui/lint/unused_parens_json_suggestion.stderr b/tests/ui/lint/unused_parens_json_suggestion.stderr similarity index 100% rename from src/test/ui/lint/unused_parens_json_suggestion.stderr rename to tests/ui/lint/unused_parens_json_suggestion.stderr diff --git a/src/test/ui/lint/unused_parens_multibyte_recovery.rs b/tests/ui/lint/unused_parens_multibyte_recovery.rs similarity index 100% rename from src/test/ui/lint/unused_parens_multibyte_recovery.rs rename to tests/ui/lint/unused_parens_multibyte_recovery.rs diff --git a/src/test/ui/lint/unused_parens_multibyte_recovery.stderr b/tests/ui/lint/unused_parens_multibyte_recovery.stderr similarity index 100% rename from src/test/ui/lint/unused_parens_multibyte_recovery.stderr rename to tests/ui/lint/unused_parens_multibyte_recovery.stderr diff --git a/src/test/ui/lint/unused_parens_remove_json_suggestion.fixed b/tests/ui/lint/unused_parens_remove_json_suggestion.fixed similarity index 100% rename from src/test/ui/lint/unused_parens_remove_json_suggestion.fixed rename to tests/ui/lint/unused_parens_remove_json_suggestion.fixed diff --git a/src/test/ui/lint/unused_parens_remove_json_suggestion.rs b/tests/ui/lint/unused_parens_remove_json_suggestion.rs similarity index 100% rename from src/test/ui/lint/unused_parens_remove_json_suggestion.rs rename to tests/ui/lint/unused_parens_remove_json_suggestion.rs diff --git a/src/test/ui/lint/unused_parens_remove_json_suggestion.stderr b/tests/ui/lint/unused_parens_remove_json_suggestion.stderr similarity index 100% rename from src/test/ui/lint/unused_parens_remove_json_suggestion.stderr rename to tests/ui/lint/unused_parens_remove_json_suggestion.stderr diff --git a/src/test/ui/lint/unused_variables-issue-82488.fixed b/tests/ui/lint/unused_variables-issue-82488.fixed similarity index 100% rename from src/test/ui/lint/unused_variables-issue-82488.fixed rename to tests/ui/lint/unused_variables-issue-82488.fixed diff --git a/src/test/ui/lint/unused_variables-issue-82488.rs b/tests/ui/lint/unused_variables-issue-82488.rs similarity index 100% rename from src/test/ui/lint/unused_variables-issue-82488.rs rename to tests/ui/lint/unused_variables-issue-82488.rs diff --git a/src/test/ui/lint/unused_variables-issue-82488.stderr b/tests/ui/lint/unused_variables-issue-82488.stderr similarity index 100% rename from src/test/ui/lint/unused_variables-issue-82488.stderr rename to tests/ui/lint/unused_variables-issue-82488.stderr diff --git a/src/test/ui/lint/use-redundant.rs b/tests/ui/lint/use-redundant.rs similarity index 100% rename from src/test/ui/lint/use-redundant.rs rename to tests/ui/lint/use-redundant.rs diff --git a/src/test/ui/lint/use-redundant.stderr b/tests/ui/lint/use-redundant.stderr similarity index 100% rename from src/test/ui/lint/use-redundant.stderr rename to tests/ui/lint/use-redundant.stderr diff --git a/src/test/ui/lint/use_suggestion_json.rs b/tests/ui/lint/use_suggestion_json.rs similarity index 100% rename from src/test/ui/lint/use_suggestion_json.rs rename to tests/ui/lint/use_suggestion_json.rs diff --git a/src/test/ui/lint/use_suggestion_json.stderr b/tests/ui/lint/use_suggestion_json.stderr similarity index 100% rename from src/test/ui/lint/use_suggestion_json.stderr rename to tests/ui/lint/use_suggestion_json.stderr diff --git a/src/test/ui/lint/warn-ctypes-inhibit.rs b/tests/ui/lint/warn-ctypes-inhibit.rs similarity index 100% rename from src/test/ui/lint/warn-ctypes-inhibit.rs rename to tests/ui/lint/warn-ctypes-inhibit.rs diff --git a/src/test/ui/lint/warn-path-statement.rs b/tests/ui/lint/warn-path-statement.rs similarity index 100% rename from src/test/ui/lint/warn-path-statement.rs rename to tests/ui/lint/warn-path-statement.rs diff --git a/src/test/ui/lint/warn-path-statement.stderr b/tests/ui/lint/warn-path-statement.stderr similarity index 100% rename from src/test/ui/lint/warn-path-statement.stderr rename to tests/ui/lint/warn-path-statement.stderr diff --git a/src/test/ui/lint/warn-unused-inline-on-fn-prototypes.rs b/tests/ui/lint/warn-unused-inline-on-fn-prototypes.rs similarity index 100% rename from src/test/ui/lint/warn-unused-inline-on-fn-prototypes.rs rename to tests/ui/lint/warn-unused-inline-on-fn-prototypes.rs diff --git a/src/test/ui/lint/warn-unused-inline-on-fn-prototypes.stderr b/tests/ui/lint/warn-unused-inline-on-fn-prototypes.stderr similarity index 100% rename from src/test/ui/lint/warn-unused-inline-on-fn-prototypes.stderr rename to tests/ui/lint/warn-unused-inline-on-fn-prototypes.stderr diff --git a/src/test/ui/list.rs b/tests/ui/list.rs similarity index 100% rename from src/test/ui/list.rs rename to tests/ui/list.rs diff --git a/src/test/ui/liveness/liveness-asm.rs b/tests/ui/liveness/liveness-asm.rs similarity index 100% rename from src/test/ui/liveness/liveness-asm.rs rename to tests/ui/liveness/liveness-asm.rs diff --git a/src/test/ui/liveness/liveness-asm.stderr b/tests/ui/liveness/liveness-asm.stderr similarity index 100% rename from src/test/ui/liveness/liveness-asm.stderr rename to tests/ui/liveness/liveness-asm.stderr diff --git a/src/test/ui/liveness/liveness-assign-imm-local-after-ret.rs b/tests/ui/liveness/liveness-assign-imm-local-after-ret.rs similarity index 100% rename from src/test/ui/liveness/liveness-assign-imm-local-after-ret.rs rename to tests/ui/liveness/liveness-assign-imm-local-after-ret.rs diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.rs b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.rs similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.rs rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.rs diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.stderr b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.stderr similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.stderr rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-loop.stderr diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.rs b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.rs similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.rs rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.rs diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.stderr b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.stderr similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.stderr rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-in-op-eq.stderr diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.rs b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.rs similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.rs rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.rs diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.stderr b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.stderr similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.stderr rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-drop.stderr diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.rs b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.rs similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.rs rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.rs diff --git a/src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.stderr b/tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.stderr similarity index 100% rename from src/test/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.stderr rename to tests/ui/liveness/liveness-assign/liveness-assign-imm-local-with-init.stderr diff --git a/src/test/ui/liveness/liveness-closure-require-ret.rs b/tests/ui/liveness/liveness-closure-require-ret.rs similarity index 100% rename from src/test/ui/liveness/liveness-closure-require-ret.rs rename to tests/ui/liveness/liveness-closure-require-ret.rs diff --git a/src/test/ui/liveness/liveness-closure-require-ret.stderr b/tests/ui/liveness/liveness-closure-require-ret.stderr similarity index 100% rename from src/test/ui/liveness/liveness-closure-require-ret.stderr rename to tests/ui/liveness/liveness-closure-require-ret.stderr diff --git a/src/test/ui/liveness/liveness-consts.rs b/tests/ui/liveness/liveness-consts.rs similarity index 100% rename from src/test/ui/liveness/liveness-consts.rs rename to tests/ui/liveness/liveness-consts.rs diff --git a/src/test/ui/liveness/liveness-consts.stderr b/tests/ui/liveness/liveness-consts.stderr similarity index 100% rename from src/test/ui/liveness/liveness-consts.stderr rename to tests/ui/liveness/liveness-consts.stderr diff --git a/src/test/ui/liveness/liveness-dead.rs b/tests/ui/liveness/liveness-dead.rs similarity index 100% rename from src/test/ui/liveness/liveness-dead.rs rename to tests/ui/liveness/liveness-dead.rs diff --git a/src/test/ui/liveness/liveness-dead.stderr b/tests/ui/liveness/liveness-dead.stderr similarity index 100% rename from src/test/ui/liveness/liveness-dead.stderr rename to tests/ui/liveness/liveness-dead.stderr diff --git a/src/test/ui/liveness/liveness-derive.rs b/tests/ui/liveness/liveness-derive.rs similarity index 100% rename from src/test/ui/liveness/liveness-derive.rs rename to tests/ui/liveness/liveness-derive.rs diff --git a/src/test/ui/liveness/liveness-derive.stderr b/tests/ui/liveness/liveness-derive.stderr similarity index 100% rename from src/test/ui/liveness/liveness-derive.stderr rename to tests/ui/liveness/liveness-derive.stderr diff --git a/src/test/ui/liveness/liveness-forgot-ret.rs b/tests/ui/liveness/liveness-forgot-ret.rs similarity index 100% rename from src/test/ui/liveness/liveness-forgot-ret.rs rename to tests/ui/liveness/liveness-forgot-ret.rs diff --git a/src/test/ui/liveness/liveness-forgot-ret.stderr b/tests/ui/liveness/liveness-forgot-ret.stderr similarity index 100% rename from src/test/ui/liveness/liveness-forgot-ret.stderr rename to tests/ui/liveness/liveness-forgot-ret.stderr diff --git a/src/test/ui/liveness/liveness-issue-2163.rs b/tests/ui/liveness/liveness-issue-2163.rs similarity index 100% rename from src/test/ui/liveness/liveness-issue-2163.rs rename to tests/ui/liveness/liveness-issue-2163.rs diff --git a/src/test/ui/liveness/liveness-issue-2163.stderr b/tests/ui/liveness/liveness-issue-2163.stderr similarity index 100% rename from src/test/ui/liveness/liveness-issue-2163.stderr rename to tests/ui/liveness/liveness-issue-2163.stderr diff --git a/src/test/ui/liveness/liveness-missing-ret2.rs b/tests/ui/liveness/liveness-missing-ret2.rs similarity index 100% rename from src/test/ui/liveness/liveness-missing-ret2.rs rename to tests/ui/liveness/liveness-missing-ret2.rs diff --git a/src/test/ui/liveness/liveness-missing-ret2.stderr b/tests/ui/liveness/liveness-missing-ret2.stderr similarity index 100% rename from src/test/ui/liveness/liveness-missing-ret2.stderr rename to tests/ui/liveness/liveness-missing-ret2.stderr diff --git a/src/test/ui/liveness/liveness-move-call-arg.rs b/tests/ui/liveness/liveness-move-call-arg.rs similarity index 100% rename from src/test/ui/liveness/liveness-move-call-arg.rs rename to tests/ui/liveness/liveness-move-call-arg.rs diff --git a/src/test/ui/liveness/liveness-move-call-arg.stderr b/tests/ui/liveness/liveness-move-call-arg.stderr similarity index 100% rename from src/test/ui/liveness/liveness-move-call-arg.stderr rename to tests/ui/liveness/liveness-move-call-arg.stderr diff --git a/src/test/ui/liveness/liveness-move-in-loop.rs b/tests/ui/liveness/liveness-move-in-loop.rs similarity index 100% rename from src/test/ui/liveness/liveness-move-in-loop.rs rename to tests/ui/liveness/liveness-move-in-loop.rs diff --git a/src/test/ui/liveness/liveness-move-in-loop.stderr b/tests/ui/liveness/liveness-move-in-loop.stderr similarity index 100% rename from src/test/ui/liveness/liveness-move-in-loop.stderr rename to tests/ui/liveness/liveness-move-in-loop.stderr diff --git a/src/test/ui/liveness/liveness-move-in-while.rs b/tests/ui/liveness/liveness-move-in-while.rs similarity index 100% rename from src/test/ui/liveness/liveness-move-in-while.rs rename to tests/ui/liveness/liveness-move-in-while.rs diff --git a/src/test/ui/liveness/liveness-move-in-while.stderr b/tests/ui/liveness/liveness-move-in-while.stderr similarity index 100% rename from src/test/ui/liveness/liveness-move-in-while.stderr rename to tests/ui/liveness/liveness-move-in-while.stderr diff --git a/src/test/ui/liveness/liveness-return-last-stmt-semi.rs b/tests/ui/liveness/liveness-return-last-stmt-semi.rs similarity index 100% rename from src/test/ui/liveness/liveness-return-last-stmt-semi.rs rename to tests/ui/liveness/liveness-return-last-stmt-semi.rs diff --git a/src/test/ui/liveness/liveness-return-last-stmt-semi.stderr b/tests/ui/liveness/liveness-return-last-stmt-semi.stderr similarity index 100% rename from src/test/ui/liveness/liveness-return-last-stmt-semi.stderr rename to tests/ui/liveness/liveness-return-last-stmt-semi.stderr diff --git a/src/test/ui/liveness/liveness-unused.rs b/tests/ui/liveness/liveness-unused.rs similarity index 100% rename from src/test/ui/liveness/liveness-unused.rs rename to tests/ui/liveness/liveness-unused.rs diff --git a/src/test/ui/liveness/liveness-unused.stderr b/tests/ui/liveness/liveness-unused.stderr similarity index 100% rename from src/test/ui/liveness/liveness-unused.stderr rename to tests/ui/liveness/liveness-unused.stderr diff --git a/src/test/ui/liveness/liveness-upvars.rs b/tests/ui/liveness/liveness-upvars.rs similarity index 100% rename from src/test/ui/liveness/liveness-upvars.rs rename to tests/ui/liveness/liveness-upvars.rs diff --git a/src/test/ui/liveness/liveness-upvars.stderr b/tests/ui/liveness/liveness-upvars.stderr similarity index 100% rename from src/test/ui/liveness/liveness-upvars.stderr rename to tests/ui/liveness/liveness-upvars.stderr diff --git a/src/test/ui/liveness/liveness-use-after-move.rs b/tests/ui/liveness/liveness-use-after-move.rs similarity index 100% rename from src/test/ui/liveness/liveness-use-after-move.rs rename to tests/ui/liveness/liveness-use-after-move.rs diff --git a/src/test/ui/liveness/liveness-use-after-move.stderr b/tests/ui/liveness/liveness-use-after-move.stderr similarity index 100% rename from src/test/ui/liveness/liveness-use-after-move.stderr rename to tests/ui/liveness/liveness-use-after-move.stderr diff --git a/src/test/ui/liveness/liveness-use-after-send.rs b/tests/ui/liveness/liveness-use-after-send.rs similarity index 100% rename from src/test/ui/liveness/liveness-use-after-send.rs rename to tests/ui/liveness/liveness-use-after-send.rs diff --git a/src/test/ui/liveness/liveness-use-after-send.stderr b/tests/ui/liveness/liveness-use-after-send.stderr similarity index 100% rename from src/test/ui/liveness/liveness-use-after-send.stderr rename to tests/ui/liveness/liveness-use-after-send.stderr diff --git a/src/test/ui/log-err-phi.rs b/tests/ui/log-err-phi.rs similarity index 100% rename from src/test/ui/log-err-phi.rs rename to tests/ui/log-err-phi.rs diff --git a/src/test/ui/log-knows-the-names-of-variants.rs b/tests/ui/log-knows-the-names-of-variants.rs similarity index 100% rename from src/test/ui/log-knows-the-names-of-variants.rs rename to tests/ui/log-knows-the-names-of-variants.rs diff --git a/src/test/ui/log-poly.rs b/tests/ui/log-poly.rs similarity index 100% rename from src/test/ui/log-poly.rs rename to tests/ui/log-poly.rs diff --git a/src/test/ui/logging-only-prints-once.rs b/tests/ui/logging-only-prints-once.rs similarity index 100% rename from src/test/ui/logging-only-prints-once.rs rename to tests/ui/logging-only-prints-once.rs diff --git a/src/test/ui/loops/for-each-loop-panic.rs b/tests/ui/loops/for-each-loop-panic.rs similarity index 100% rename from src/test/ui/loops/for-each-loop-panic.rs rename to tests/ui/loops/for-each-loop-panic.rs diff --git a/src/test/ui/loops/issue-82916.rs b/tests/ui/loops/issue-82916.rs similarity index 100% rename from src/test/ui/loops/issue-82916.rs rename to tests/ui/loops/issue-82916.rs diff --git a/src/test/ui/loops/issue-82916.stderr b/tests/ui/loops/issue-82916.stderr similarity index 100% rename from src/test/ui/loops/issue-82916.stderr rename to tests/ui/loops/issue-82916.stderr diff --git a/src/test/ui/loops/loop-break-unsize.rs b/tests/ui/loops/loop-break-unsize.rs similarity index 100% rename from src/test/ui/loops/loop-break-unsize.rs rename to tests/ui/loops/loop-break-unsize.rs diff --git a/src/test/ui/loops/loop-break-value-no-repeat.rs b/tests/ui/loops/loop-break-value-no-repeat.rs similarity index 100% rename from src/test/ui/loops/loop-break-value-no-repeat.rs rename to tests/ui/loops/loop-break-value-no-repeat.rs diff --git a/src/test/ui/loops/loop-break-value-no-repeat.stderr b/tests/ui/loops/loop-break-value-no-repeat.stderr similarity index 100% rename from src/test/ui/loops/loop-break-value-no-repeat.stderr rename to tests/ui/loops/loop-break-value-no-repeat.stderr diff --git a/src/test/ui/loops/loop-break-value.rs b/tests/ui/loops/loop-break-value.rs similarity index 100% rename from src/test/ui/loops/loop-break-value.rs rename to tests/ui/loops/loop-break-value.rs diff --git a/src/test/ui/loops/loop-break-value.stderr b/tests/ui/loops/loop-break-value.stderr similarity index 100% rename from src/test/ui/loops/loop-break-value.stderr rename to tests/ui/loops/loop-break-value.stderr diff --git a/src/test/ui/loops/loop-labeled-break-value.rs b/tests/ui/loops/loop-labeled-break-value.rs similarity index 100% rename from src/test/ui/loops/loop-labeled-break-value.rs rename to tests/ui/loops/loop-labeled-break-value.rs diff --git a/src/test/ui/loops/loop-labeled-break-value.stderr b/tests/ui/loops/loop-labeled-break-value.stderr similarity index 100% rename from src/test/ui/loops/loop-labeled-break-value.stderr rename to tests/ui/loops/loop-labeled-break-value.stderr diff --git a/src/test/ui/loops/loop-no-implicit-break.rs b/tests/ui/loops/loop-no-implicit-break.rs similarity index 100% rename from src/test/ui/loops/loop-no-implicit-break.rs rename to tests/ui/loops/loop-no-implicit-break.rs diff --git a/src/test/ui/loops/loop-no-implicit-break.stderr b/tests/ui/loops/loop-no-implicit-break.stderr similarity index 100% rename from src/test/ui/loops/loop-no-implicit-break.stderr rename to tests/ui/loops/loop-no-implicit-break.stderr diff --git a/src/test/ui/loops/loop-proper-liveness.rs b/tests/ui/loops/loop-proper-liveness.rs similarity index 100% rename from src/test/ui/loops/loop-proper-liveness.rs rename to tests/ui/loops/loop-proper-liveness.rs diff --git a/src/test/ui/loops/loop-proper-liveness.stderr b/tests/ui/loops/loop-proper-liveness.stderr similarity index 100% rename from src/test/ui/loops/loop-proper-liveness.stderr rename to tests/ui/loops/loop-proper-liveness.stderr diff --git a/src/test/ui/loops/loop-properly-diverging-2.rs b/tests/ui/loops/loop-properly-diverging-2.rs similarity index 100% rename from src/test/ui/loops/loop-properly-diverging-2.rs rename to tests/ui/loops/loop-properly-diverging-2.rs diff --git a/src/test/ui/loops/loop-properly-diverging-2.stderr b/tests/ui/loops/loop-properly-diverging-2.stderr similarity index 100% rename from src/test/ui/loops/loop-properly-diverging-2.stderr rename to tests/ui/loops/loop-properly-diverging-2.stderr diff --git a/src/test/ui/loud_ui.rs b/tests/ui/loud_ui.rs similarity index 100% rename from src/test/ui/loud_ui.rs rename to tests/ui/loud_ui.rs diff --git a/src/test/ui/lowering/issue-96847.rs b/tests/ui/lowering/issue-96847.rs similarity index 100% rename from src/test/ui/lowering/issue-96847.rs rename to tests/ui/lowering/issue-96847.rs diff --git a/src/test/ui/lto/all-crates.rs b/tests/ui/lto/all-crates.rs similarity index 100% rename from src/test/ui/lto/all-crates.rs rename to tests/ui/lto/all-crates.rs diff --git a/src/test/ui/lto/auxiliary/debuginfo-lto-aux.rs b/tests/ui/lto/auxiliary/debuginfo-lto-aux.rs similarity index 100% rename from src/test/ui/lto/auxiliary/debuginfo-lto-aux.rs rename to tests/ui/lto/auxiliary/debuginfo-lto-aux.rs diff --git a/src/test/ui/lto/auxiliary/dylib.rs b/tests/ui/lto/auxiliary/dylib.rs similarity index 100% rename from src/test/ui/lto/auxiliary/dylib.rs rename to tests/ui/lto/auxiliary/dylib.rs diff --git a/src/test/ui/lto/auxiliary/lto-duplicate-symbols1.rs b/tests/ui/lto/auxiliary/lto-duplicate-symbols1.rs similarity index 100% rename from src/test/ui/lto/auxiliary/lto-duplicate-symbols1.rs rename to tests/ui/lto/auxiliary/lto-duplicate-symbols1.rs diff --git a/src/test/ui/lto/auxiliary/lto-duplicate-symbols2.rs b/tests/ui/lto/auxiliary/lto-duplicate-symbols2.rs similarity index 100% rename from src/test/ui/lto/auxiliary/lto-duplicate-symbols2.rs rename to tests/ui/lto/auxiliary/lto-duplicate-symbols2.rs diff --git a/src/test/ui/lto/auxiliary/lto-rustc-loads-linker-plugin.rs b/tests/ui/lto/auxiliary/lto-rustc-loads-linker-plugin.rs similarity index 100% rename from src/test/ui/lto/auxiliary/lto-rustc-loads-linker-plugin.rs rename to tests/ui/lto/auxiliary/lto-rustc-loads-linker-plugin.rs diff --git a/src/test/ui/lto/auxiliary/msvc-imp-present.rs b/tests/ui/lto/auxiliary/msvc-imp-present.rs similarity index 100% rename from src/test/ui/lto/auxiliary/msvc-imp-present.rs rename to tests/ui/lto/auxiliary/msvc-imp-present.rs diff --git a/src/test/ui/lto/auxiliary/thin-lto-inlines-aux.rs b/tests/ui/lto/auxiliary/thin-lto-inlines-aux.rs similarity index 100% rename from src/test/ui/lto/auxiliary/thin-lto-inlines-aux.rs rename to tests/ui/lto/auxiliary/thin-lto-inlines-aux.rs diff --git a/src/test/ui/lto/auxiliary/thinlto-dylib.rs b/tests/ui/lto/auxiliary/thinlto-dylib.rs similarity index 100% rename from src/test/ui/lto/auxiliary/thinlto-dylib.rs rename to tests/ui/lto/auxiliary/thinlto-dylib.rs diff --git a/src/test/ui/lto/debuginfo-lto.rs b/tests/ui/lto/debuginfo-lto.rs similarity index 100% rename from src/test/ui/lto/debuginfo-lto.rs rename to tests/ui/lto/debuginfo-lto.rs diff --git a/src/test/ui/lto/dylib-works.rs b/tests/ui/lto/dylib-works.rs similarity index 100% rename from src/test/ui/lto/dylib-works.rs rename to tests/ui/lto/dylib-works.rs diff --git a/src/test/ui/lto/fat-lto.rs b/tests/ui/lto/fat-lto.rs similarity index 100% rename from src/test/ui/lto/fat-lto.rs rename to tests/ui/lto/fat-lto.rs diff --git a/src/test/ui/lto/issue-100772.rs b/tests/ui/lto/issue-100772.rs similarity index 100% rename from src/test/ui/lto/issue-100772.rs rename to tests/ui/lto/issue-100772.rs diff --git a/src/test/ui/lto/issue-105637.rs b/tests/ui/lto/issue-105637.rs similarity index 100% rename from src/test/ui/lto/issue-105637.rs rename to tests/ui/lto/issue-105637.rs diff --git a/src/test/ui/lto/issue-105637.run.stderr b/tests/ui/lto/issue-105637.run.stderr similarity index 100% rename from src/test/ui/lto/issue-105637.run.stderr rename to tests/ui/lto/issue-105637.run.stderr diff --git a/src/test/ui/lto/issue-11154.rs b/tests/ui/lto/issue-11154.rs similarity index 100% rename from src/test/ui/lto/issue-11154.rs rename to tests/ui/lto/issue-11154.rs diff --git a/src/test/ui/lto/issue-11154.stderr b/tests/ui/lto/issue-11154.stderr similarity index 100% rename from src/test/ui/lto/issue-11154.stderr rename to tests/ui/lto/issue-11154.stderr diff --git a/src/test/ui/lto/lto-and-no-bitcode-in-rlib.rs b/tests/ui/lto/lto-and-no-bitcode-in-rlib.rs similarity index 100% rename from src/test/ui/lto/lto-and-no-bitcode-in-rlib.rs rename to tests/ui/lto/lto-and-no-bitcode-in-rlib.rs diff --git a/src/test/ui/lto/lto-and-no-bitcode-in-rlib.stderr b/tests/ui/lto/lto-and-no-bitcode-in-rlib.stderr similarity index 100% rename from src/test/ui/lto/lto-and-no-bitcode-in-rlib.stderr rename to tests/ui/lto/lto-and-no-bitcode-in-rlib.stderr diff --git a/src/test/ui/lto/lto-duplicate-symbols.rs b/tests/ui/lto/lto-duplicate-symbols.rs similarity index 100% rename from src/test/ui/lto/lto-duplicate-symbols.rs rename to tests/ui/lto/lto-duplicate-symbols.rs diff --git a/src/test/ui/lto/lto-duplicate-symbols.stderr b/tests/ui/lto/lto-duplicate-symbols.stderr similarity index 100% rename from src/test/ui/lto/lto-duplicate-symbols.stderr rename to tests/ui/lto/lto-duplicate-symbols.stderr diff --git a/src/test/ui/lto/lto-many-codegen-units.rs b/tests/ui/lto/lto-many-codegen-units.rs similarity index 100% rename from src/test/ui/lto/lto-many-codegen-units.rs rename to tests/ui/lto/lto-many-codegen-units.rs diff --git a/src/test/ui/lto/lto-opt-level-s.rs b/tests/ui/lto/lto-opt-level-s.rs similarity index 100% rename from src/test/ui/lto/lto-opt-level-s.rs rename to tests/ui/lto/lto-opt-level-s.rs diff --git a/src/test/ui/lto/lto-opt-level-z.rs b/tests/ui/lto/lto-opt-level-z.rs similarity index 100% rename from src/test/ui/lto/lto-opt-level-z.rs rename to tests/ui/lto/lto-opt-level-z.rs diff --git a/src/test/ui/lto/lto-rustc-loads-linker-plugin.rs b/tests/ui/lto/lto-rustc-loads-linker-plugin.rs similarity index 100% rename from src/test/ui/lto/lto-rustc-loads-linker-plugin.rs rename to tests/ui/lto/lto-rustc-loads-linker-plugin.rs diff --git a/src/test/ui/lto/lto-still-runs-thread-dtors.rs b/tests/ui/lto/lto-still-runs-thread-dtors.rs similarity index 100% rename from src/test/ui/lto/lto-still-runs-thread-dtors.rs rename to tests/ui/lto/lto-still-runs-thread-dtors.rs diff --git a/src/test/ui/lto/lto-thin-rustc-loads-linker-plugin.rs b/tests/ui/lto/lto-thin-rustc-loads-linker-plugin.rs similarity index 100% rename from src/test/ui/lto/lto-thin-rustc-loads-linker-plugin.rs rename to tests/ui/lto/lto-thin-rustc-loads-linker-plugin.rs diff --git a/src/test/ui/lto/msvc-imp-present.rs b/tests/ui/lto/msvc-imp-present.rs similarity index 100% rename from src/test/ui/lto/msvc-imp-present.rs rename to tests/ui/lto/msvc-imp-present.rs diff --git a/src/test/ui/lto/thin-lto-global-allocator.rs b/tests/ui/lto/thin-lto-global-allocator.rs similarity index 100% rename from src/test/ui/lto/thin-lto-global-allocator.rs rename to tests/ui/lto/thin-lto-global-allocator.rs diff --git a/src/test/ui/lto/thin-lto-inlines.rs b/tests/ui/lto/thin-lto-inlines.rs similarity index 100% rename from src/test/ui/lto/thin-lto-inlines.rs rename to tests/ui/lto/thin-lto-inlines.rs diff --git a/src/test/ui/lto/thin-lto-inlines2.rs b/tests/ui/lto/thin-lto-inlines2.rs similarity index 100% rename from src/test/ui/lto/thin-lto-inlines2.rs rename to tests/ui/lto/thin-lto-inlines2.rs diff --git a/src/test/ui/lto/weak-works.rs b/tests/ui/lto/weak-works.rs similarity index 100% rename from src/test/ui/lto/weak-works.rs rename to tests/ui/lto/weak-works.rs diff --git a/src/test/ui/lub-glb/empty-binder-future-compat.rs b/tests/ui/lub-glb/empty-binder-future-compat.rs similarity index 100% rename from src/test/ui/lub-glb/empty-binder-future-compat.rs rename to tests/ui/lub-glb/empty-binder-future-compat.rs diff --git a/src/test/ui/lub-glb/empty-binders-err.rs b/tests/ui/lub-glb/empty-binders-err.rs similarity index 100% rename from src/test/ui/lub-glb/empty-binders-err.rs rename to tests/ui/lub-glb/empty-binders-err.rs diff --git a/src/test/ui/lub-glb/empty-binders-err.stderr b/tests/ui/lub-glb/empty-binders-err.stderr similarity index 100% rename from src/test/ui/lub-glb/empty-binders-err.stderr rename to tests/ui/lub-glb/empty-binders-err.stderr diff --git a/src/test/ui/lub-glb/empty-binders.rs b/tests/ui/lub-glb/empty-binders.rs similarity index 100% rename from src/test/ui/lub-glb/empty-binders.rs rename to tests/ui/lub-glb/empty-binders.rs diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-eq.rs b/tests/ui/lub-glb/old-lub-glb-hr-eq.rs similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-eq.rs rename to tests/ui/lub-glb/old-lub-glb-hr-eq.rs diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr b/tests/ui/lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr rename to tests/ui/lub-glb/old-lub-glb-hr-noteq1.baseleak.stderr diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr b/tests/ui/lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr rename to tests/ui/lub-glb/old-lub-glb-hr-noteq1.basenoleak.stderr diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr b/tests/ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr rename to tests/ui/lub-glb/old-lub-glb-hr-noteq1.leak.stderr diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr b/tests/ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr rename to tests/ui/lub-glb/old-lub-glb-hr-noteq1.noleak.stderr diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.rs b/tests/ui/lub-glb/old-lub-glb-hr-noteq1.rs similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq1.rs rename to tests/ui/lub-glb/old-lub-glb-hr-noteq1.rs diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr b/tests/ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr rename to tests/ui/lub-glb/old-lub-glb-hr-noteq2.leak.stderr diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq2.rs b/tests/ui/lub-glb/old-lub-glb-hr-noteq2.rs similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-hr-noteq2.rs rename to tests/ui/lub-glb/old-lub-glb-hr-noteq2.rs diff --git a/src/test/ui/lub-glb/old-lub-glb-object.rs b/tests/ui/lub-glb/old-lub-glb-object.rs similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-object.rs rename to tests/ui/lub-glb/old-lub-glb-object.rs diff --git a/src/test/ui/lub-glb/old-lub-glb-object.stderr b/tests/ui/lub-glb/old-lub-glb-object.stderr similarity index 100% rename from src/test/ui/lub-glb/old-lub-glb-object.stderr rename to tests/ui/lub-glb/old-lub-glb-object.stderr diff --git a/src/test/ui/macro-quote-test.rs b/tests/ui/macro-quote-test.rs similarity index 100% rename from src/test/ui/macro-quote-test.rs rename to tests/ui/macro-quote-test.rs diff --git a/src/test/ui/macro_backtrace/auxiliary/ping.rs b/tests/ui/macro_backtrace/auxiliary/ping.rs similarity index 100% rename from src/test/ui/macro_backtrace/auxiliary/ping.rs rename to tests/ui/macro_backtrace/auxiliary/ping.rs diff --git a/src/test/ui/macro_backtrace/main.-Zmacro-backtrace.stderr b/tests/ui/macro_backtrace/main.-Zmacro-backtrace.stderr similarity index 100% rename from src/test/ui/macro_backtrace/main.-Zmacro-backtrace.stderr rename to tests/ui/macro_backtrace/main.-Zmacro-backtrace.stderr diff --git a/src/test/ui/macro_backtrace/main.default.stderr b/tests/ui/macro_backtrace/main.default.stderr similarity index 100% rename from src/test/ui/macro_backtrace/main.default.stderr rename to tests/ui/macro_backtrace/main.default.stderr diff --git a/src/test/ui/macro_backtrace/main.rs b/tests/ui/macro_backtrace/main.rs similarity index 100% rename from src/test/ui/macro_backtrace/main.rs rename to tests/ui/macro_backtrace/main.rs diff --git a/src/test/ui/macros/ambiguity-legacy-vs-modern.rs b/tests/ui/macros/ambiguity-legacy-vs-modern.rs similarity index 100% rename from src/test/ui/macros/ambiguity-legacy-vs-modern.rs rename to tests/ui/macros/ambiguity-legacy-vs-modern.rs diff --git a/src/test/ui/macros/ambiguity-legacy-vs-modern.stderr b/tests/ui/macros/ambiguity-legacy-vs-modern.stderr similarity index 100% rename from src/test/ui/macros/ambiguity-legacy-vs-modern.stderr rename to tests/ui/macros/ambiguity-legacy-vs-modern.stderr diff --git a/src/test/ui/macros/assert-as-macro.rs b/tests/ui/macros/assert-as-macro.rs similarity index 100% rename from src/test/ui/macros/assert-as-macro.rs rename to tests/ui/macros/assert-as-macro.rs diff --git a/src/test/ui/macros/assert-eq-macro-msg.rs b/tests/ui/macros/assert-eq-macro-msg.rs similarity index 100% rename from src/test/ui/macros/assert-eq-macro-msg.rs rename to tests/ui/macros/assert-eq-macro-msg.rs diff --git a/src/test/ui/macros/assert-eq-macro-panic.rs b/tests/ui/macros/assert-eq-macro-panic.rs similarity index 100% rename from src/test/ui/macros/assert-eq-macro-panic.rs rename to tests/ui/macros/assert-eq-macro-panic.rs diff --git a/src/test/ui/macros/assert-eq-macro-success.rs b/tests/ui/macros/assert-eq-macro-success.rs similarity index 100% rename from src/test/ui/macros/assert-eq-macro-success.rs rename to tests/ui/macros/assert-eq-macro-success.rs diff --git a/src/test/ui/macros/assert-eq-macro-unsized.rs b/tests/ui/macros/assert-eq-macro-unsized.rs similarity index 100% rename from src/test/ui/macros/assert-eq-macro-unsized.rs rename to tests/ui/macros/assert-eq-macro-unsized.rs diff --git a/src/test/ui/macros/assert-format-lazy.rs b/tests/ui/macros/assert-format-lazy.rs similarity index 100% rename from src/test/ui/macros/assert-format-lazy.rs rename to tests/ui/macros/assert-format-lazy.rs diff --git a/src/test/ui/macros/assert-macro-explicit.rs b/tests/ui/macros/assert-macro-explicit.rs similarity index 100% rename from src/test/ui/macros/assert-macro-explicit.rs rename to tests/ui/macros/assert-macro-explicit.rs diff --git a/src/test/ui/macros/assert-macro-fmt.rs b/tests/ui/macros/assert-macro-fmt.rs similarity index 100% rename from src/test/ui/macros/assert-macro-fmt.rs rename to tests/ui/macros/assert-macro-fmt.rs diff --git a/src/test/ui/macros/assert-macro-owned.rs b/tests/ui/macros/assert-macro-owned.rs similarity index 100% rename from src/test/ui/macros/assert-macro-owned.rs rename to tests/ui/macros/assert-macro-owned.rs diff --git a/src/test/ui/macros/assert-macro-static.rs b/tests/ui/macros/assert-macro-static.rs similarity index 100% rename from src/test/ui/macros/assert-macro-static.rs rename to tests/ui/macros/assert-macro-static.rs diff --git a/src/test/ui/macros/assert-matches-macro-msg.rs b/tests/ui/macros/assert-matches-macro-msg.rs similarity index 100% rename from src/test/ui/macros/assert-matches-macro-msg.rs rename to tests/ui/macros/assert-matches-macro-msg.rs diff --git a/src/test/ui/macros/assert-ne-macro-msg.rs b/tests/ui/macros/assert-ne-macro-msg.rs similarity index 100% rename from src/test/ui/macros/assert-ne-macro-msg.rs rename to tests/ui/macros/assert-ne-macro-msg.rs diff --git a/src/test/ui/macros/assert-ne-macro-panic.rs b/tests/ui/macros/assert-ne-macro-panic.rs similarity index 100% rename from src/test/ui/macros/assert-ne-macro-panic.rs rename to tests/ui/macros/assert-ne-macro-panic.rs diff --git a/src/test/ui/macros/assert-ne-macro-success.rs b/tests/ui/macros/assert-ne-macro-success.rs similarity index 100% rename from src/test/ui/macros/assert-ne-macro-success.rs rename to tests/ui/macros/assert-ne-macro-success.rs diff --git a/src/test/ui/macros/assert-ne-macro-unsized.rs b/tests/ui/macros/assert-ne-macro-unsized.rs similarity index 100% rename from src/test/ui/macros/assert-ne-macro-unsized.rs rename to tests/ui/macros/assert-ne-macro-unsized.rs diff --git a/src/test/ui/macros/assert-trailing-junk.rs b/tests/ui/macros/assert-trailing-junk.rs similarity index 100% rename from src/test/ui/macros/assert-trailing-junk.rs rename to tests/ui/macros/assert-trailing-junk.rs diff --git a/src/test/ui/macros/assert-trailing-junk.with-generic-asset.stderr b/tests/ui/macros/assert-trailing-junk.with-generic-asset.stderr similarity index 100% rename from src/test/ui/macros/assert-trailing-junk.with-generic-asset.stderr rename to tests/ui/macros/assert-trailing-junk.with-generic-asset.stderr diff --git a/src/test/ui/macros/assert-trailing-junk.without-generic-asset.stderr b/tests/ui/macros/assert-trailing-junk.without-generic-asset.stderr similarity index 100% rename from src/test/ui/macros/assert-trailing-junk.without-generic-asset.stderr rename to tests/ui/macros/assert-trailing-junk.without-generic-asset.stderr diff --git a/src/test/ui/macros/assert.rs b/tests/ui/macros/assert.rs similarity index 100% rename from src/test/ui/macros/assert.rs rename to tests/ui/macros/assert.rs diff --git a/src/test/ui/macros/assert.with-generic-asset.stderr b/tests/ui/macros/assert.with-generic-asset.stderr similarity index 100% rename from src/test/ui/macros/assert.with-generic-asset.stderr rename to tests/ui/macros/assert.with-generic-asset.stderr diff --git a/src/test/ui/macros/assert.without-generic-asset.stderr b/tests/ui/macros/assert.without-generic-asset.stderr similarity index 100% rename from src/test/ui/macros/assert.without-generic-asset.stderr rename to tests/ui/macros/assert.without-generic-asset.stderr diff --git a/src/test/ui/macros/attr-empty-expr.rs b/tests/ui/macros/attr-empty-expr.rs similarity index 100% rename from src/test/ui/macros/attr-empty-expr.rs rename to tests/ui/macros/attr-empty-expr.rs diff --git a/src/test/ui/macros/attr-empty-expr.stderr b/tests/ui/macros/attr-empty-expr.stderr similarity index 100% rename from src/test/ui/macros/attr-empty-expr.stderr rename to tests/ui/macros/attr-empty-expr.stderr diff --git a/src/test/ui/macros/attr-from-macro.rs b/tests/ui/macros/attr-from-macro.rs similarity index 100% rename from src/test/ui/macros/attr-from-macro.rs rename to tests/ui/macros/attr-from-macro.rs diff --git a/src/test/ui/macros/auxiliary/attr-from-macro.rs b/tests/ui/macros/auxiliary/attr-from-macro.rs similarity index 100% rename from src/test/ui/macros/auxiliary/attr-from-macro.rs rename to tests/ui/macros/auxiliary/attr-from-macro.rs diff --git a/src/test/ui/macros/auxiliary/define-macro.rs b/tests/ui/macros/auxiliary/define-macro.rs similarity index 100% rename from src/test/ui/macros/auxiliary/define-macro.rs rename to tests/ui/macros/auxiliary/define-macro.rs diff --git a/src/test/ui/macros/auxiliary/deprecated-macros.rs b/tests/ui/macros/auxiliary/deprecated-macros.rs similarity index 100% rename from src/test/ui/macros/auxiliary/deprecated-macros.rs rename to tests/ui/macros/auxiliary/deprecated-macros.rs diff --git a/src/test/ui/macros/auxiliary/dollar-crate-nested-encoding.rs b/tests/ui/macros/auxiliary/dollar-crate-nested-encoding.rs similarity index 100% rename from src/test/ui/macros/auxiliary/dollar-crate-nested-encoding.rs rename to tests/ui/macros/auxiliary/dollar-crate-nested-encoding.rs diff --git a/src/test/ui/macros/auxiliary/foreign-crate-macro-pat.rs b/tests/ui/macros/auxiliary/foreign-crate-macro-pat.rs similarity index 100% rename from src/test/ui/macros/auxiliary/foreign-crate-macro-pat.rs rename to tests/ui/macros/auxiliary/foreign-crate-macro-pat.rs diff --git a/src/test/ui/macros/auxiliary/issue-100199.rs b/tests/ui/macros/auxiliary/issue-100199.rs similarity index 100% rename from src/test/ui/macros/auxiliary/issue-100199.rs rename to tests/ui/macros/auxiliary/issue-100199.rs diff --git a/src/test/ui/macros/auxiliary/issue-19163.rs b/tests/ui/macros/auxiliary/issue-19163.rs similarity index 100% rename from src/test/ui/macros/auxiliary/issue-19163.rs rename to tests/ui/macros/auxiliary/issue-19163.rs diff --git a/src/test/ui/macros/auxiliary/issue-40469.rs b/tests/ui/macros/auxiliary/issue-40469.rs similarity index 100% rename from src/test/ui/macros/auxiliary/issue-40469.rs rename to tests/ui/macros/auxiliary/issue-40469.rs diff --git a/src/test/ui/macros/auxiliary/issue-75982.rs b/tests/ui/macros/auxiliary/issue-75982.rs similarity index 100% rename from src/test/ui/macros/auxiliary/issue-75982.rs rename to tests/ui/macros/auxiliary/issue-75982.rs diff --git a/src/test/ui/macros/auxiliary/macro-comma-support.rs b/tests/ui/macros/auxiliary/macro-comma-support.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro-comma-support.rs rename to tests/ui/macros/auxiliary/macro-comma-support.rs diff --git a/src/test/ui/macros/auxiliary/macro-def-site-super.rs b/tests/ui/macros/auxiliary/macro-def-site-super.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro-def-site-super.rs rename to tests/ui/macros/auxiliary/macro-def-site-super.rs diff --git a/src/test/ui/macros/auxiliary/macro-in-other-crate.rs b/tests/ui/macros/auxiliary/macro-in-other-crate.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro-in-other-crate.rs rename to tests/ui/macros/auxiliary/macro-in-other-crate.rs diff --git a/src/test/ui/macros/auxiliary/macro-include-items-expr.rs b/tests/ui/macros/auxiliary/macro-include-items-expr.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro-include-items-expr.rs rename to tests/ui/macros/auxiliary/macro-include-items-expr.rs diff --git a/src/test/ui/macros/auxiliary/macro-include-items-item.rs b/tests/ui/macros/auxiliary/macro-include-items-item.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro-include-items-item.rs rename to tests/ui/macros/auxiliary/macro-include-items-item.rs diff --git a/src/test/ui/macros/auxiliary/macro_crate_def_only.rs b/tests/ui/macros/auxiliary/macro_crate_def_only.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro_crate_def_only.rs rename to tests/ui/macros/auxiliary/macro_crate_def_only.rs diff --git a/src/test/ui/macros/auxiliary/macro_crate_nonterminal.rs b/tests/ui/macros/auxiliary/macro_crate_nonterminal.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro_crate_nonterminal.rs rename to tests/ui/macros/auxiliary/macro_crate_nonterminal.rs diff --git a/src/test/ui/macros/auxiliary/macro_export_inner_module.rs b/tests/ui/macros/auxiliary/macro_export_inner_module.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro_export_inner_module.rs rename to tests/ui/macros/auxiliary/macro_export_inner_module.rs diff --git a/src/test/ui/macros/auxiliary/macro_with_super_1.rs b/tests/ui/macros/auxiliary/macro_with_super_1.rs similarity index 100% rename from src/test/ui/macros/auxiliary/macro_with_super_1.rs rename to tests/ui/macros/auxiliary/macro_with_super_1.rs diff --git a/src/test/ui/macros/auxiliary/or-pattern.rs b/tests/ui/macros/auxiliary/or-pattern.rs similarity index 100% rename from src/test/ui/macros/auxiliary/or-pattern.rs rename to tests/ui/macros/auxiliary/or-pattern.rs diff --git a/src/test/ui/macros/auxiliary/proc_macro_def.rs b/tests/ui/macros/auxiliary/proc_macro_def.rs similarity index 100% rename from src/test/ui/macros/auxiliary/proc_macro_def.rs rename to tests/ui/macros/auxiliary/proc_macro_def.rs diff --git a/src/test/ui/macros/auxiliary/proc_macro_sequence.rs b/tests/ui/macros/auxiliary/proc_macro_sequence.rs similarity index 100% rename from src/test/ui/macros/auxiliary/proc_macro_sequence.rs rename to tests/ui/macros/auxiliary/proc_macro_sequence.rs diff --git a/src/test/ui/macros/auxiliary/two_macros-rpass.rs b/tests/ui/macros/auxiliary/two_macros-rpass.rs similarity index 100% rename from src/test/ui/macros/auxiliary/two_macros-rpass.rs rename to tests/ui/macros/auxiliary/two_macros-rpass.rs diff --git a/src/test/ui/macros/auxiliary/two_macros.rs b/tests/ui/macros/auxiliary/two_macros.rs similarity index 100% rename from src/test/ui/macros/auxiliary/two_macros.rs rename to tests/ui/macros/auxiliary/two_macros.rs diff --git a/src/test/ui/macros/auxiliary/unstable-macros.rs b/tests/ui/macros/auxiliary/unstable-macros.rs similarity index 100% rename from src/test/ui/macros/auxiliary/unstable-macros.rs rename to tests/ui/macros/auxiliary/unstable-macros.rs diff --git a/src/test/ui/macros/auxiliary/use-macro-self.rs b/tests/ui/macros/auxiliary/use-macro-self.rs similarity index 100% rename from src/test/ui/macros/auxiliary/use-macro-self.rs rename to tests/ui/macros/auxiliary/use-macro-self.rs diff --git a/src/test/ui/macros/bad-concat.rs b/tests/ui/macros/bad-concat.rs similarity index 100% rename from src/test/ui/macros/bad-concat.rs rename to tests/ui/macros/bad-concat.rs diff --git a/src/test/ui/macros/bad-concat.stderr b/tests/ui/macros/bad-concat.stderr similarity index 100% rename from src/test/ui/macros/bad-concat.stderr rename to tests/ui/macros/bad-concat.stderr diff --git a/src/test/ui/macros/bad_hello.rs b/tests/ui/macros/bad_hello.rs similarity index 100% rename from src/test/ui/macros/bad_hello.rs rename to tests/ui/macros/bad_hello.rs diff --git a/src/test/ui/macros/bad_hello.stderr b/tests/ui/macros/bad_hello.stderr similarity index 100% rename from src/test/ui/macros/bad_hello.stderr rename to tests/ui/macros/bad_hello.stderr diff --git a/src/test/ui/macros/bang-after-name.fixed b/tests/ui/macros/bang-after-name.fixed similarity index 100% rename from src/test/ui/macros/bang-after-name.fixed rename to tests/ui/macros/bang-after-name.fixed diff --git a/src/test/ui/macros/bang-after-name.rs b/tests/ui/macros/bang-after-name.rs similarity index 100% rename from src/test/ui/macros/bang-after-name.rs rename to tests/ui/macros/bang-after-name.rs diff --git a/src/test/ui/macros/bang-after-name.stderr b/tests/ui/macros/bang-after-name.stderr similarity index 100% rename from src/test/ui/macros/bang-after-name.stderr rename to tests/ui/macros/bang-after-name.stderr diff --git a/src/test/ui/macros/best-failure.rs b/tests/ui/macros/best-failure.rs similarity index 100% rename from src/test/ui/macros/best-failure.rs rename to tests/ui/macros/best-failure.rs diff --git a/src/test/ui/macros/best-failure.stderr b/tests/ui/macros/best-failure.stderr similarity index 100% rename from src/test/ui/macros/best-failure.stderr rename to tests/ui/macros/best-failure.stderr diff --git a/src/test/ui/macros/builtin-prelude-no-accidents.rs b/tests/ui/macros/builtin-prelude-no-accidents.rs similarity index 100% rename from src/test/ui/macros/builtin-prelude-no-accidents.rs rename to tests/ui/macros/builtin-prelude-no-accidents.rs diff --git a/src/test/ui/macros/builtin-prelude-no-accidents.stderr b/tests/ui/macros/builtin-prelude-no-accidents.stderr similarity index 100% rename from src/test/ui/macros/builtin-prelude-no-accidents.stderr rename to tests/ui/macros/builtin-prelude-no-accidents.stderr diff --git a/src/test/ui/macros/builtin-std-paths-fail.rs b/tests/ui/macros/builtin-std-paths-fail.rs similarity index 100% rename from src/test/ui/macros/builtin-std-paths-fail.rs rename to tests/ui/macros/builtin-std-paths-fail.rs diff --git a/src/test/ui/macros/builtin-std-paths-fail.stderr b/tests/ui/macros/builtin-std-paths-fail.stderr similarity index 100% rename from src/test/ui/macros/builtin-std-paths-fail.stderr rename to tests/ui/macros/builtin-std-paths-fail.stderr diff --git a/src/test/ui/macros/builtin-std-paths.rs b/tests/ui/macros/builtin-std-paths.rs similarity index 100% rename from src/test/ui/macros/builtin-std-paths.rs rename to tests/ui/macros/builtin-std-paths.rs diff --git a/src/test/ui/macros/cfg.rs b/tests/ui/macros/cfg.rs similarity index 100% rename from src/test/ui/macros/cfg.rs rename to tests/ui/macros/cfg.rs diff --git a/src/test/ui/macros/cfg.stderr b/tests/ui/macros/cfg.stderr similarity index 100% rename from src/test/ui/macros/cfg.stderr rename to tests/ui/macros/cfg.stderr diff --git a/src/test/ui/macros/colorful-write-macros.rs b/tests/ui/macros/colorful-write-macros.rs similarity index 100% rename from src/test/ui/macros/colorful-write-macros.rs rename to tests/ui/macros/colorful-write-macros.rs diff --git a/src/test/ui/macros/concat-bytes-error.rs b/tests/ui/macros/concat-bytes-error.rs similarity index 100% rename from src/test/ui/macros/concat-bytes-error.rs rename to tests/ui/macros/concat-bytes-error.rs diff --git a/src/test/ui/macros/concat-bytes-error.stderr b/tests/ui/macros/concat-bytes-error.stderr similarity index 100% rename from src/test/ui/macros/concat-bytes-error.stderr rename to tests/ui/macros/concat-bytes-error.stderr diff --git a/src/test/ui/macros/concat-bytes.rs b/tests/ui/macros/concat-bytes.rs similarity index 100% rename from src/test/ui/macros/concat-bytes.rs rename to tests/ui/macros/concat-bytes.rs diff --git a/src/test/ui/macros/concat-rpass.rs b/tests/ui/macros/concat-rpass.rs similarity index 100% rename from src/test/ui/macros/concat-rpass.rs rename to tests/ui/macros/concat-rpass.rs diff --git a/src/test/ui/macros/concat.rs b/tests/ui/macros/concat.rs similarity index 100% rename from src/test/ui/macros/concat.rs rename to tests/ui/macros/concat.rs diff --git a/src/test/ui/macros/concat.stderr b/tests/ui/macros/concat.stderr similarity index 100% rename from src/test/ui/macros/concat.stderr rename to tests/ui/macros/concat.stderr diff --git a/src/test/ui/macros/conditional-debug-macro-on.rs b/tests/ui/macros/conditional-debug-macro-on.rs similarity index 100% rename from src/test/ui/macros/conditional-debug-macro-on.rs rename to tests/ui/macros/conditional-debug-macro-on.rs diff --git a/src/test/ui/macros/cross-crate-pat-span.rs b/tests/ui/macros/cross-crate-pat-span.rs similarity index 100% rename from src/test/ui/macros/cross-crate-pat-span.rs rename to tests/ui/macros/cross-crate-pat-span.rs diff --git a/src/test/ui/macros/derive-in-eager-expansion-hang.rs b/tests/ui/macros/derive-in-eager-expansion-hang.rs similarity index 100% rename from src/test/ui/macros/derive-in-eager-expansion-hang.rs rename to tests/ui/macros/derive-in-eager-expansion-hang.rs diff --git a/src/test/ui/macros/derive-in-eager-expansion-hang.stderr b/tests/ui/macros/derive-in-eager-expansion-hang.stderr similarity index 100% rename from src/test/ui/macros/derive-in-eager-expansion-hang.stderr rename to tests/ui/macros/derive-in-eager-expansion-hang.stderr diff --git a/src/test/ui/macros/die-macro-2.rs b/tests/ui/macros/die-macro-2.rs similarity index 100% rename from src/test/ui/macros/die-macro-2.rs rename to tests/ui/macros/die-macro-2.rs diff --git a/src/test/ui/macros/die-macro-expr.rs b/tests/ui/macros/die-macro-expr.rs similarity index 100% rename from src/test/ui/macros/die-macro-expr.rs rename to tests/ui/macros/die-macro-expr.rs diff --git a/src/test/ui/macros/die-macro-pure.rs b/tests/ui/macros/die-macro-pure.rs similarity index 100% rename from src/test/ui/macros/die-macro-pure.rs rename to tests/ui/macros/die-macro-pure.rs diff --git a/src/test/ui/macros/die-macro.rs b/tests/ui/macros/die-macro.rs similarity index 100% rename from src/test/ui/macros/die-macro.rs rename to tests/ui/macros/die-macro.rs diff --git a/src/test/ui/macros/doc-comment.rs b/tests/ui/macros/doc-comment.rs similarity index 100% rename from src/test/ui/macros/doc-comment.rs rename to tests/ui/macros/doc-comment.rs diff --git a/src/test/ui/macros/dollar-crate-nested-encoding.rs b/tests/ui/macros/dollar-crate-nested-encoding.rs similarity index 100% rename from src/test/ui/macros/dollar-crate-nested-encoding.rs rename to tests/ui/macros/dollar-crate-nested-encoding.rs diff --git a/src/test/ui/macros/duplicate-builtin.rs b/tests/ui/macros/duplicate-builtin.rs similarity index 100% rename from src/test/ui/macros/duplicate-builtin.rs rename to tests/ui/macros/duplicate-builtin.rs diff --git a/src/test/ui/macros/duplicate-builtin.stderr b/tests/ui/macros/duplicate-builtin.stderr similarity index 100% rename from src/test/ui/macros/duplicate-builtin.stderr rename to tests/ui/macros/duplicate-builtin.stderr diff --git a/src/test/ui/macros/edition-macro-pats.rs b/tests/ui/macros/edition-macro-pats.rs similarity index 100% rename from src/test/ui/macros/edition-macro-pats.rs rename to tests/ui/macros/edition-macro-pats.rs diff --git a/src/test/ui/macros/empty-trailing-stmt.rs b/tests/ui/macros/empty-trailing-stmt.rs similarity index 100% rename from src/test/ui/macros/empty-trailing-stmt.rs rename to tests/ui/macros/empty-trailing-stmt.rs diff --git a/src/test/ui/macros/empty-trailing-stmt.stderr b/tests/ui/macros/empty-trailing-stmt.stderr similarity index 100% rename from src/test/ui/macros/empty-trailing-stmt.stderr rename to tests/ui/macros/empty-trailing-stmt.stderr diff --git a/src/test/ui/macros/format-args-temporaries-async.rs b/tests/ui/macros/format-args-temporaries-async.rs similarity index 100% rename from src/test/ui/macros/format-args-temporaries-async.rs rename to tests/ui/macros/format-args-temporaries-async.rs diff --git a/src/test/ui/macros/format-args-temporaries-in-write.rs b/tests/ui/macros/format-args-temporaries-in-write.rs similarity index 100% rename from src/test/ui/macros/format-args-temporaries-in-write.rs rename to tests/ui/macros/format-args-temporaries-in-write.rs diff --git a/src/test/ui/macros/format-args-temporaries-in-write.stderr b/tests/ui/macros/format-args-temporaries-in-write.stderr similarity index 100% rename from src/test/ui/macros/format-args-temporaries-in-write.stderr rename to tests/ui/macros/format-args-temporaries-in-write.stderr diff --git a/src/test/ui/macros/format-args-temporaries.rs b/tests/ui/macros/format-args-temporaries.rs similarity index 100% rename from src/test/ui/macros/format-args-temporaries.rs rename to tests/ui/macros/format-args-temporaries.rs diff --git a/src/test/ui/macros/format-foreign.rs b/tests/ui/macros/format-foreign.rs similarity index 100% rename from src/test/ui/macros/format-foreign.rs rename to tests/ui/macros/format-foreign.rs diff --git a/src/test/ui/macros/format-foreign.stderr b/tests/ui/macros/format-foreign.stderr similarity index 100% rename from src/test/ui/macros/format-foreign.stderr rename to tests/ui/macros/format-foreign.stderr diff --git a/src/test/ui/macros/format-parse-errors.rs b/tests/ui/macros/format-parse-errors.rs similarity index 100% rename from src/test/ui/macros/format-parse-errors.rs rename to tests/ui/macros/format-parse-errors.rs diff --git a/src/test/ui/macros/format-parse-errors.stderr b/tests/ui/macros/format-parse-errors.stderr similarity index 100% rename from src/test/ui/macros/format-parse-errors.stderr rename to tests/ui/macros/format-parse-errors.stderr diff --git a/src/test/ui/macros/format-unused-lables.rs b/tests/ui/macros/format-unused-lables.rs similarity index 100% rename from src/test/ui/macros/format-unused-lables.rs rename to tests/ui/macros/format-unused-lables.rs diff --git a/src/test/ui/macros/format-unused-lables.stderr b/tests/ui/macros/format-unused-lables.stderr similarity index 100% rename from src/test/ui/macros/format-unused-lables.stderr rename to tests/ui/macros/format-unused-lables.stderr diff --git a/src/test/ui/macros/global-asm.rs b/tests/ui/macros/global-asm.rs similarity index 100% rename from src/test/ui/macros/global-asm.rs rename to tests/ui/macros/global-asm.rs diff --git a/src/test/ui/macros/global-asm.stderr b/tests/ui/macros/global-asm.stderr similarity index 100% rename from src/test/ui/macros/global-asm.stderr rename to tests/ui/macros/global-asm.stderr diff --git a/src/test/ui/macros/html-literals.rs b/tests/ui/macros/html-literals.rs similarity index 100% rename from src/test/ui/macros/html-literals.rs rename to tests/ui/macros/html-literals.rs diff --git a/src/test/ui/macros/include-single-expr-helper-1.rs b/tests/ui/macros/include-single-expr-helper-1.rs similarity index 100% rename from src/test/ui/macros/include-single-expr-helper-1.rs rename to tests/ui/macros/include-single-expr-helper-1.rs diff --git a/src/test/ui/macros/include-single-expr-helper.rs b/tests/ui/macros/include-single-expr-helper.rs similarity index 100% rename from src/test/ui/macros/include-single-expr-helper.rs rename to tests/ui/macros/include-single-expr-helper.rs diff --git a/src/test/ui/macros/include-single-expr.rs b/tests/ui/macros/include-single-expr.rs similarity index 100% rename from src/test/ui/macros/include-single-expr.rs rename to tests/ui/macros/include-single-expr.rs diff --git a/src/test/ui/macros/include-single-expr.stderr b/tests/ui/macros/include-single-expr.stderr similarity index 100% rename from src/test/ui/macros/include-single-expr.stderr rename to tests/ui/macros/include-single-expr.stderr diff --git a/src/test/ui/macros/issue-100199.rs b/tests/ui/macros/issue-100199.rs similarity index 100% rename from src/test/ui/macros/issue-100199.rs rename to tests/ui/macros/issue-100199.rs diff --git a/src/test/ui/macros/issue-100199.stderr b/tests/ui/macros/issue-100199.stderr similarity index 100% rename from src/test/ui/macros/issue-100199.stderr rename to tests/ui/macros/issue-100199.stderr diff --git a/src/test/ui/macros/issue-102878.rs b/tests/ui/macros/issue-102878.rs similarity index 100% rename from src/test/ui/macros/issue-102878.rs rename to tests/ui/macros/issue-102878.rs diff --git a/src/test/ui/macros/issue-102878.stderr b/tests/ui/macros/issue-102878.stderr similarity index 100% rename from src/test/ui/macros/issue-102878.stderr rename to tests/ui/macros/issue-102878.stderr diff --git a/src/test/ui/macros/issue-103529.rs b/tests/ui/macros/issue-103529.rs similarity index 100% rename from src/test/ui/macros/issue-103529.rs rename to tests/ui/macros/issue-103529.rs diff --git a/src/test/ui/macros/issue-103529.stderr b/tests/ui/macros/issue-103529.stderr similarity index 100% rename from src/test/ui/macros/issue-103529.stderr rename to tests/ui/macros/issue-103529.stderr diff --git a/src/test/ui/macros/issue-104769-concat_bytes-invalid-literal.rs b/tests/ui/macros/issue-104769-concat_bytes-invalid-literal.rs similarity index 100% rename from src/test/ui/macros/issue-104769-concat_bytes-invalid-literal.rs rename to tests/ui/macros/issue-104769-concat_bytes-invalid-literal.rs diff --git a/src/test/ui/macros/issue-104769-concat_bytes-invalid-literal.stderr b/tests/ui/macros/issue-104769-concat_bytes-invalid-literal.stderr similarity index 100% rename from src/test/ui/macros/issue-104769-concat_bytes-invalid-literal.stderr rename to tests/ui/macros/issue-104769-concat_bytes-invalid-literal.stderr diff --git a/src/test/ui/macros/issue-105011.rs b/tests/ui/macros/issue-105011.rs similarity index 100% rename from src/test/ui/macros/issue-105011.rs rename to tests/ui/macros/issue-105011.rs diff --git a/src/test/ui/macros/issue-105011.stderr b/tests/ui/macros/issue-105011.stderr similarity index 100% rename from src/test/ui/macros/issue-105011.stderr rename to tests/ui/macros/issue-105011.stderr diff --git a/src/test/ui/macros/issue-10536.rs b/tests/ui/macros/issue-10536.rs similarity index 100% rename from src/test/ui/macros/issue-10536.rs rename to tests/ui/macros/issue-10536.rs diff --git a/src/test/ui/macros/issue-10536.stderr b/tests/ui/macros/issue-10536.stderr similarity index 100% rename from src/test/ui/macros/issue-10536.stderr rename to tests/ui/macros/issue-10536.stderr diff --git a/src/test/ui/macros/issue-16098.rs b/tests/ui/macros/issue-16098.rs similarity index 100% rename from src/test/ui/macros/issue-16098.rs rename to tests/ui/macros/issue-16098.rs diff --git a/src/test/ui/macros/issue-16098.stderr b/tests/ui/macros/issue-16098.stderr similarity index 100% rename from src/test/ui/macros/issue-16098.stderr rename to tests/ui/macros/issue-16098.stderr diff --git a/src/test/ui/macros/issue-19163.rs b/tests/ui/macros/issue-19163.rs similarity index 100% rename from src/test/ui/macros/issue-19163.rs rename to tests/ui/macros/issue-19163.rs diff --git a/src/test/ui/macros/issue-19163.stderr b/tests/ui/macros/issue-19163.stderr similarity index 100% rename from src/test/ui/macros/issue-19163.stderr rename to tests/ui/macros/issue-19163.stderr diff --git a/src/test/ui/macros/issue-21356.rs b/tests/ui/macros/issue-21356.rs similarity index 100% rename from src/test/ui/macros/issue-21356.rs rename to tests/ui/macros/issue-21356.rs diff --git a/src/test/ui/macros/issue-21356.stderr b/tests/ui/macros/issue-21356.stderr similarity index 100% rename from src/test/ui/macros/issue-21356.stderr rename to tests/ui/macros/issue-21356.stderr diff --git a/src/test/ui/macros/issue-22463.rs b/tests/ui/macros/issue-22463.rs similarity index 100% rename from src/test/ui/macros/issue-22463.rs rename to tests/ui/macros/issue-22463.rs diff --git a/src/test/ui/macros/issue-25274.rs b/tests/ui/macros/issue-25274.rs similarity index 100% rename from src/test/ui/macros/issue-25274.rs rename to tests/ui/macros/issue-25274.rs diff --git a/src/test/ui/macros/issue-25385.rs b/tests/ui/macros/issue-25385.rs similarity index 100% rename from src/test/ui/macros/issue-25385.rs rename to tests/ui/macros/issue-25385.rs diff --git a/src/test/ui/macros/issue-25385.stderr b/tests/ui/macros/issue-25385.stderr similarity index 100% rename from src/test/ui/macros/issue-25385.stderr rename to tests/ui/macros/issue-25385.stderr diff --git a/src/test/ui/macros/issue-26322.rs b/tests/ui/macros/issue-26322.rs similarity index 100% rename from src/test/ui/macros/issue-26322.rs rename to tests/ui/macros/issue-26322.rs diff --git a/src/test/ui/macros/issue-29084.rs b/tests/ui/macros/issue-29084.rs similarity index 100% rename from src/test/ui/macros/issue-29084.rs rename to tests/ui/macros/issue-29084.rs diff --git a/src/test/ui/macros/issue-29084.stderr b/tests/ui/macros/issue-29084.stderr similarity index 100% rename from src/test/ui/macros/issue-29084.stderr rename to tests/ui/macros/issue-29084.stderr diff --git a/src/test/ui/macros/issue-30143.rs b/tests/ui/macros/issue-30143.rs similarity index 100% rename from src/test/ui/macros/issue-30143.rs rename to tests/ui/macros/issue-30143.rs diff --git a/src/test/ui/macros/issue-30143.stderr b/tests/ui/macros/issue-30143.stderr similarity index 100% rename from src/test/ui/macros/issue-30143.stderr rename to tests/ui/macros/issue-30143.stderr diff --git a/src/test/ui/macros/issue-33185.rs b/tests/ui/macros/issue-33185.rs similarity index 100% rename from src/test/ui/macros/issue-33185.rs rename to tests/ui/macros/issue-33185.rs diff --git a/src/test/ui/macros/issue-34171.rs b/tests/ui/macros/issue-34171.rs similarity index 100% rename from src/test/ui/macros/issue-34171.rs rename to tests/ui/macros/issue-34171.rs diff --git a/src/test/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs b/tests/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs similarity index 100% rename from src/test/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs rename to tests/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.rs diff --git a/src/test/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.stderr b/tests/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.stderr similarity index 100% rename from src/test/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.stderr rename to tests/ui/macros/issue-34421-mac-expr-bad-stmt-good-add-semi.stderr diff --git a/src/test/ui/macros/issue-35450.rs b/tests/ui/macros/issue-35450.rs similarity index 100% rename from src/test/ui/macros/issue-35450.rs rename to tests/ui/macros/issue-35450.rs diff --git a/src/test/ui/macros/issue-35450.stderr b/tests/ui/macros/issue-35450.stderr similarity index 100% rename from src/test/ui/macros/issue-35450.stderr rename to tests/ui/macros/issue-35450.stderr diff --git a/src/test/ui/macros/issue-37175.rs b/tests/ui/macros/issue-37175.rs similarity index 100% rename from src/test/ui/macros/issue-37175.rs rename to tests/ui/macros/issue-37175.rs diff --git a/src/test/ui/macros/issue-38715.rs b/tests/ui/macros/issue-38715.rs similarity index 100% rename from src/test/ui/macros/issue-38715.rs rename to tests/ui/macros/issue-38715.rs diff --git a/src/test/ui/macros/issue-38715.stderr b/tests/ui/macros/issue-38715.stderr similarity index 100% rename from src/test/ui/macros/issue-38715.stderr rename to tests/ui/macros/issue-38715.stderr diff --git a/src/test/ui/macros/issue-39388.rs b/tests/ui/macros/issue-39388.rs similarity index 100% rename from src/test/ui/macros/issue-39388.rs rename to tests/ui/macros/issue-39388.rs diff --git a/src/test/ui/macros/issue-39388.stderr b/tests/ui/macros/issue-39388.stderr similarity index 100% rename from src/test/ui/macros/issue-39388.stderr rename to tests/ui/macros/issue-39388.stderr diff --git a/src/test/ui/macros/issue-39404.rs b/tests/ui/macros/issue-39404.rs similarity index 100% rename from src/test/ui/macros/issue-39404.rs rename to tests/ui/macros/issue-39404.rs diff --git a/src/test/ui/macros/issue-39404.stderr b/tests/ui/macros/issue-39404.stderr similarity index 100% rename from src/test/ui/macros/issue-39404.stderr rename to tests/ui/macros/issue-39404.stderr diff --git a/src/test/ui/macros/issue-40469.rs b/tests/ui/macros/issue-40469.rs similarity index 100% rename from src/test/ui/macros/issue-40469.rs rename to tests/ui/macros/issue-40469.rs diff --git a/src/test/ui/macros/issue-40770.rs b/tests/ui/macros/issue-40770.rs similarity index 100% rename from src/test/ui/macros/issue-40770.rs rename to tests/ui/macros/issue-40770.rs diff --git a/src/test/ui/macros/issue-41776.rs b/tests/ui/macros/issue-41776.rs similarity index 100% rename from src/test/ui/macros/issue-41776.rs rename to tests/ui/macros/issue-41776.rs diff --git a/src/test/ui/macros/issue-41776.stderr b/tests/ui/macros/issue-41776.stderr similarity index 100% rename from src/test/ui/macros/issue-41776.stderr rename to tests/ui/macros/issue-41776.stderr diff --git a/src/test/ui/macros/issue-41803.rs b/tests/ui/macros/issue-41803.rs similarity index 100% rename from src/test/ui/macros/issue-41803.rs rename to tests/ui/macros/issue-41803.rs diff --git a/src/test/ui/macros/issue-42954.fixed b/tests/ui/macros/issue-42954.fixed similarity index 100% rename from src/test/ui/macros/issue-42954.fixed rename to tests/ui/macros/issue-42954.fixed diff --git a/src/test/ui/macros/issue-42954.rs b/tests/ui/macros/issue-42954.rs similarity index 100% rename from src/test/ui/macros/issue-42954.rs rename to tests/ui/macros/issue-42954.rs diff --git a/src/test/ui/macros/issue-42954.stderr b/tests/ui/macros/issue-42954.stderr similarity index 100% rename from src/test/ui/macros/issue-42954.stderr rename to tests/ui/macros/issue-42954.stderr diff --git a/src/test/ui/macros/issue-44127.rs b/tests/ui/macros/issue-44127.rs similarity index 100% rename from src/test/ui/macros/issue-44127.rs rename to tests/ui/macros/issue-44127.rs diff --git a/src/test/ui/macros/issue-5060.rs b/tests/ui/macros/issue-5060.rs similarity index 100% rename from src/test/ui/macros/issue-5060.rs rename to tests/ui/macros/issue-5060.rs diff --git a/src/test/ui/macros/issue-51848.rs b/tests/ui/macros/issue-51848.rs similarity index 100% rename from src/test/ui/macros/issue-51848.rs rename to tests/ui/macros/issue-51848.rs diff --git a/src/test/ui/macros/issue-51848.stderr b/tests/ui/macros/issue-51848.stderr similarity index 100% rename from src/test/ui/macros/issue-51848.stderr rename to tests/ui/macros/issue-51848.stderr diff --git a/src/test/ui/macros/issue-52169.rs b/tests/ui/macros/issue-52169.rs similarity index 100% rename from src/test/ui/macros/issue-52169.rs rename to tests/ui/macros/issue-52169.rs diff --git a/src/test/ui/macros/issue-54441.rs b/tests/ui/macros/issue-54441.rs similarity index 100% rename from src/test/ui/macros/issue-54441.rs rename to tests/ui/macros/issue-54441.rs diff --git a/src/test/ui/macros/issue-54441.stderr b/tests/ui/macros/issue-54441.stderr similarity index 100% rename from src/test/ui/macros/issue-54441.stderr rename to tests/ui/macros/issue-54441.stderr diff --git a/src/test/ui/macros/issue-57597.rs b/tests/ui/macros/issue-57597.rs similarity index 100% rename from src/test/ui/macros/issue-57597.rs rename to tests/ui/macros/issue-57597.rs diff --git a/src/test/ui/macros/issue-57597.stderr b/tests/ui/macros/issue-57597.stderr similarity index 100% rename from src/test/ui/macros/issue-57597.stderr rename to tests/ui/macros/issue-57597.stderr diff --git a/src/test/ui/macros/issue-58490.rs b/tests/ui/macros/issue-58490.rs similarity index 100% rename from src/test/ui/macros/issue-58490.rs rename to tests/ui/macros/issue-58490.rs diff --git a/src/test/ui/macros/issue-58490.stderr b/tests/ui/macros/issue-58490.stderr similarity index 100% rename from src/test/ui/macros/issue-58490.stderr rename to tests/ui/macros/issue-58490.stderr diff --git a/src/test/ui/macros/issue-61033-1.rs b/tests/ui/macros/issue-61033-1.rs similarity index 100% rename from src/test/ui/macros/issue-61033-1.rs rename to tests/ui/macros/issue-61033-1.rs diff --git a/src/test/ui/macros/issue-61033-1.stderr b/tests/ui/macros/issue-61033-1.stderr similarity index 100% rename from src/test/ui/macros/issue-61033-1.stderr rename to tests/ui/macros/issue-61033-1.stderr diff --git a/src/test/ui/macros/issue-61033-2.rs b/tests/ui/macros/issue-61033-2.rs similarity index 100% rename from src/test/ui/macros/issue-61033-2.rs rename to tests/ui/macros/issue-61033-2.rs diff --git a/src/test/ui/macros/issue-61033-2.stderr b/tests/ui/macros/issue-61033-2.stderr similarity index 100% rename from src/test/ui/macros/issue-61033-2.stderr rename to tests/ui/macros/issue-61033-2.stderr diff --git a/src/test/ui/macros/issue-61053-different-kleene.rs b/tests/ui/macros/issue-61053-different-kleene.rs similarity index 100% rename from src/test/ui/macros/issue-61053-different-kleene.rs rename to tests/ui/macros/issue-61053-different-kleene.rs diff --git a/src/test/ui/macros/issue-61053-different-kleene.stderr b/tests/ui/macros/issue-61053-different-kleene.stderr similarity index 100% rename from src/test/ui/macros/issue-61053-different-kleene.stderr rename to tests/ui/macros/issue-61053-different-kleene.stderr diff --git a/src/test/ui/macros/issue-61053-duplicate-binder.rs b/tests/ui/macros/issue-61053-duplicate-binder.rs similarity index 100% rename from src/test/ui/macros/issue-61053-duplicate-binder.rs rename to tests/ui/macros/issue-61053-duplicate-binder.rs diff --git a/src/test/ui/macros/issue-61053-duplicate-binder.stderr b/tests/ui/macros/issue-61053-duplicate-binder.stderr similarity index 100% rename from src/test/ui/macros/issue-61053-duplicate-binder.stderr rename to tests/ui/macros/issue-61053-duplicate-binder.stderr diff --git a/src/test/ui/macros/issue-61053-missing-repetition.rs b/tests/ui/macros/issue-61053-missing-repetition.rs similarity index 100% rename from src/test/ui/macros/issue-61053-missing-repetition.rs rename to tests/ui/macros/issue-61053-missing-repetition.rs diff --git a/src/test/ui/macros/issue-61053-missing-repetition.stderr b/tests/ui/macros/issue-61053-missing-repetition.stderr similarity index 100% rename from src/test/ui/macros/issue-61053-missing-repetition.stderr rename to tests/ui/macros/issue-61053-missing-repetition.stderr diff --git a/src/test/ui/macros/issue-61053-unbound.rs b/tests/ui/macros/issue-61053-unbound.rs similarity index 100% rename from src/test/ui/macros/issue-61053-unbound.rs rename to tests/ui/macros/issue-61053-unbound.rs diff --git a/src/test/ui/macros/issue-61053-unbound.stderr b/tests/ui/macros/issue-61053-unbound.stderr similarity index 100% rename from src/test/ui/macros/issue-61053-unbound.stderr rename to tests/ui/macros/issue-61053-unbound.stderr diff --git a/src/test/ui/macros/issue-63102.rs b/tests/ui/macros/issue-63102.rs similarity index 100% rename from src/test/ui/macros/issue-63102.rs rename to tests/ui/macros/issue-63102.rs diff --git a/src/test/ui/macros/issue-6596-1.rs b/tests/ui/macros/issue-6596-1.rs similarity index 100% rename from src/test/ui/macros/issue-6596-1.rs rename to tests/ui/macros/issue-6596-1.rs diff --git a/src/test/ui/macros/issue-6596-1.stderr b/tests/ui/macros/issue-6596-1.stderr similarity index 100% rename from src/test/ui/macros/issue-6596-1.stderr rename to tests/ui/macros/issue-6596-1.stderr diff --git a/src/test/ui/macros/issue-68058.rs b/tests/ui/macros/issue-68058.rs similarity index 100% rename from src/test/ui/macros/issue-68058.rs rename to tests/ui/macros/issue-68058.rs diff --git a/src/test/ui/macros/issue-68060.rs b/tests/ui/macros/issue-68060.rs similarity index 100% rename from src/test/ui/macros/issue-68060.rs rename to tests/ui/macros/issue-68060.rs diff --git a/src/test/ui/macros/issue-68060.stderr b/tests/ui/macros/issue-68060.stderr similarity index 100% rename from src/test/ui/macros/issue-68060.stderr rename to tests/ui/macros/issue-68060.stderr diff --git a/src/test/ui/macros/issue-69838-dir/bar.rs b/tests/ui/macros/issue-69838-dir/bar.rs similarity index 100% rename from src/test/ui/macros/issue-69838-dir/bar.rs rename to tests/ui/macros/issue-69838-dir/bar.rs diff --git a/src/test/ui/macros/issue-69838-dir/included.rs b/tests/ui/macros/issue-69838-dir/included.rs similarity index 100% rename from src/test/ui/macros/issue-69838-dir/included.rs rename to tests/ui/macros/issue-69838-dir/included.rs diff --git a/src/test/ui/macros/issue-69838-mods-relative-to-included-path.rs b/tests/ui/macros/issue-69838-mods-relative-to-included-path.rs similarity index 100% rename from src/test/ui/macros/issue-69838-mods-relative-to-included-path.rs rename to tests/ui/macros/issue-69838-mods-relative-to-included-path.rs diff --git a/src/test/ui/macros/issue-70446.rs b/tests/ui/macros/issue-70446.rs similarity index 100% rename from src/test/ui/macros/issue-70446.rs rename to tests/ui/macros/issue-70446.rs diff --git a/src/test/ui/macros/issue-75982-foreign-macro-weird-mod.rs b/tests/ui/macros/issue-75982-foreign-macro-weird-mod.rs similarity index 100% rename from src/test/ui/macros/issue-75982-foreign-macro-weird-mod.rs rename to tests/ui/macros/issue-75982-foreign-macro-weird-mod.rs diff --git a/src/test/ui/macros/issue-77475.rs b/tests/ui/macros/issue-77475.rs similarity index 100% rename from src/test/ui/macros/issue-77475.rs rename to tests/ui/macros/issue-77475.rs diff --git a/src/test/ui/macros/issue-78325-inconsistent-resolution.rs b/tests/ui/macros/issue-78325-inconsistent-resolution.rs similarity index 100% rename from src/test/ui/macros/issue-78325-inconsistent-resolution.rs rename to tests/ui/macros/issue-78325-inconsistent-resolution.rs diff --git a/src/test/ui/macros/issue-78325-inconsistent-resolution.stderr b/tests/ui/macros/issue-78325-inconsistent-resolution.stderr similarity index 100% rename from src/test/ui/macros/issue-78325-inconsistent-resolution.stderr rename to tests/ui/macros/issue-78325-inconsistent-resolution.stderr diff --git a/src/test/ui/macros/issue-78333.rs b/tests/ui/macros/issue-78333.rs similarity index 100% rename from src/test/ui/macros/issue-78333.rs rename to tests/ui/macros/issue-78333.rs diff --git a/src/test/ui/macros/issue-78892-substitution-in-statement-attr.rs b/tests/ui/macros/issue-78892-substitution-in-statement-attr.rs similarity index 100% rename from src/test/ui/macros/issue-78892-substitution-in-statement-attr.rs rename to tests/ui/macros/issue-78892-substitution-in-statement-attr.rs diff --git a/src/test/ui/macros/issue-81006.rs b/tests/ui/macros/issue-81006.rs similarity index 100% rename from src/test/ui/macros/issue-81006.rs rename to tests/ui/macros/issue-81006.rs diff --git a/src/test/ui/macros/issue-81006.stderr b/tests/ui/macros/issue-81006.stderr similarity index 100% rename from src/test/ui/macros/issue-81006.stderr rename to tests/ui/macros/issue-81006.stderr diff --git a/src/test/ui/macros/issue-83340.rs b/tests/ui/macros/issue-83340.rs similarity index 100% rename from src/test/ui/macros/issue-83340.rs rename to tests/ui/macros/issue-83340.rs diff --git a/src/test/ui/macros/issue-83340.stderr b/tests/ui/macros/issue-83340.stderr similarity index 100% rename from src/test/ui/macros/issue-83340.stderr rename to tests/ui/macros/issue-83340.stderr diff --git a/src/test/ui/macros/issue-83344.rs b/tests/ui/macros/issue-83344.rs similarity index 100% rename from src/test/ui/macros/issue-83344.rs rename to tests/ui/macros/issue-83344.rs diff --git a/src/test/ui/macros/issue-83344.stderr b/tests/ui/macros/issue-83344.stderr similarity index 100% rename from src/test/ui/macros/issue-83344.stderr rename to tests/ui/macros/issue-83344.stderr diff --git a/src/test/ui/macros/issue-84195-lint-anon-const.rs b/tests/ui/macros/issue-84195-lint-anon-const.rs similarity index 100% rename from src/test/ui/macros/issue-84195-lint-anon-const.rs rename to tests/ui/macros/issue-84195-lint-anon-const.rs diff --git a/src/test/ui/macros/issue-84195-lint-anon-const.stderr b/tests/ui/macros/issue-84195-lint-anon-const.stderr similarity index 100% rename from src/test/ui/macros/issue-84195-lint-anon-const.stderr rename to tests/ui/macros/issue-84195-lint-anon-const.stderr diff --git a/src/test/ui/macros/issue-84429-matches-edition.rs b/tests/ui/macros/issue-84429-matches-edition.rs similarity index 100% rename from src/test/ui/macros/issue-84429-matches-edition.rs rename to tests/ui/macros/issue-84429-matches-edition.rs diff --git a/src/test/ui/macros/issue-84632-eager-expansion-recursion-limit.rs b/tests/ui/macros/issue-84632-eager-expansion-recursion-limit.rs similarity index 100% rename from src/test/ui/macros/issue-84632-eager-expansion-recursion-limit.rs rename to tests/ui/macros/issue-84632-eager-expansion-recursion-limit.rs diff --git a/src/test/ui/macros/issue-84632-eager-expansion-recursion-limit.stderr b/tests/ui/macros/issue-84632-eager-expansion-recursion-limit.stderr similarity index 100% rename from src/test/ui/macros/issue-84632-eager-expansion-recursion-limit.stderr rename to tests/ui/macros/issue-84632-eager-expansion-recursion-limit.stderr diff --git a/src/test/ui/macros/issue-86082-option-env-invalid-char.rs b/tests/ui/macros/issue-86082-option-env-invalid-char.rs similarity index 100% rename from src/test/ui/macros/issue-86082-option-env-invalid-char.rs rename to tests/ui/macros/issue-86082-option-env-invalid-char.rs diff --git a/src/test/ui/macros/issue-86865.rs b/tests/ui/macros/issue-86865.rs similarity index 100% rename from src/test/ui/macros/issue-86865.rs rename to tests/ui/macros/issue-86865.rs diff --git a/src/test/ui/macros/issue-86865.stderr b/tests/ui/macros/issue-86865.stderr similarity index 100% rename from src/test/ui/macros/issue-86865.stderr rename to tests/ui/macros/issue-86865.stderr diff --git a/src/test/ui/macros/issue-8709.rs b/tests/ui/macros/issue-8709.rs similarity index 100% rename from src/test/ui/macros/issue-8709.rs rename to tests/ui/macros/issue-8709.rs diff --git a/src/test/ui/macros/issue-87877.rs b/tests/ui/macros/issue-87877.rs similarity index 100% rename from src/test/ui/macros/issue-87877.rs rename to tests/ui/macros/issue-87877.rs diff --git a/src/test/ui/macros/issue-88206.rs b/tests/ui/macros/issue-88206.rs similarity index 100% rename from src/test/ui/macros/issue-88206.rs rename to tests/ui/macros/issue-88206.rs diff --git a/src/test/ui/macros/issue-88206.stderr b/tests/ui/macros/issue-88206.stderr similarity index 100% rename from src/test/ui/macros/issue-88206.stderr rename to tests/ui/macros/issue-88206.stderr diff --git a/src/test/ui/macros/issue-88228.rs b/tests/ui/macros/issue-88228.rs similarity index 100% rename from src/test/ui/macros/issue-88228.rs rename to tests/ui/macros/issue-88228.rs diff --git a/src/test/ui/macros/issue-88228.stderr b/tests/ui/macros/issue-88228.stderr similarity index 100% rename from src/test/ui/macros/issue-88228.stderr rename to tests/ui/macros/issue-88228.stderr diff --git a/src/test/ui/macros/issue-8851.rs b/tests/ui/macros/issue-8851.rs similarity index 100% rename from src/test/ui/macros/issue-8851.rs rename to tests/ui/macros/issue-8851.rs diff --git a/src/test/ui/macros/issue-92267.rs b/tests/ui/macros/issue-92267.rs similarity index 100% rename from src/test/ui/macros/issue-92267.rs rename to tests/ui/macros/issue-92267.rs diff --git a/src/test/ui/macros/issue-92267.stderr b/tests/ui/macros/issue-92267.stderr similarity index 100% rename from src/test/ui/macros/issue-92267.stderr rename to tests/ui/macros/issue-92267.stderr diff --git a/src/test/ui/macros/issue-95267.rs b/tests/ui/macros/issue-95267.rs similarity index 100% rename from src/test/ui/macros/issue-95267.rs rename to tests/ui/macros/issue-95267.rs diff --git a/src/test/ui/macros/issue-95533.rs b/tests/ui/macros/issue-95533.rs similarity index 100% rename from src/test/ui/macros/issue-95533.rs rename to tests/ui/macros/issue-95533.rs diff --git a/src/test/ui/macros/issue-98466-allow.rs b/tests/ui/macros/issue-98466-allow.rs similarity index 100% rename from src/test/ui/macros/issue-98466-allow.rs rename to tests/ui/macros/issue-98466-allow.rs diff --git a/src/test/ui/macros/issue-98466.fixed b/tests/ui/macros/issue-98466.fixed similarity index 100% rename from src/test/ui/macros/issue-98466.fixed rename to tests/ui/macros/issue-98466.fixed diff --git a/src/test/ui/macros/issue-98466.rs b/tests/ui/macros/issue-98466.rs similarity index 100% rename from src/test/ui/macros/issue-98466.rs rename to tests/ui/macros/issue-98466.rs diff --git a/src/test/ui/macros/issue-98466.stderr b/tests/ui/macros/issue-98466.stderr similarity index 100% rename from src/test/ui/macros/issue-98466.stderr rename to tests/ui/macros/issue-98466.stderr diff --git a/src/test/ui/macros/issue-99261.rs b/tests/ui/macros/issue-99261.rs similarity index 100% rename from src/test/ui/macros/issue-99261.rs rename to tests/ui/macros/issue-99261.rs diff --git a/src/test/ui/macros/issue-99265.fixed b/tests/ui/macros/issue-99265.fixed similarity index 100% rename from src/test/ui/macros/issue-99265.fixed rename to tests/ui/macros/issue-99265.fixed diff --git a/src/test/ui/macros/issue-99265.rs b/tests/ui/macros/issue-99265.rs similarity index 100% rename from src/test/ui/macros/issue-99265.rs rename to tests/ui/macros/issue-99265.rs diff --git a/src/test/ui/macros/issue-99265.stderr b/tests/ui/macros/issue-99265.stderr similarity index 100% rename from src/test/ui/macros/issue-99265.stderr rename to tests/ui/macros/issue-99265.stderr diff --git a/src/test/ui/macros/issue-99907.fixed b/tests/ui/macros/issue-99907.fixed similarity index 100% rename from src/test/ui/macros/issue-99907.fixed rename to tests/ui/macros/issue-99907.fixed diff --git a/src/test/ui/macros/issue-99907.rs b/tests/ui/macros/issue-99907.rs similarity index 100% rename from src/test/ui/macros/issue-99907.rs rename to tests/ui/macros/issue-99907.rs diff --git a/src/test/ui/macros/issue-99907.stderr b/tests/ui/macros/issue-99907.stderr similarity index 100% rename from src/test/ui/macros/issue-99907.stderr rename to tests/ui/macros/issue-99907.stderr diff --git a/src/test/ui/macros/lint-trailing-macro-call.rs b/tests/ui/macros/lint-trailing-macro-call.rs similarity index 100% rename from src/test/ui/macros/lint-trailing-macro-call.rs rename to tests/ui/macros/lint-trailing-macro-call.rs diff --git a/src/test/ui/macros/lint-trailing-macro-call.stderr b/tests/ui/macros/lint-trailing-macro-call.stderr similarity index 100% rename from src/test/ui/macros/lint-trailing-macro-call.stderr rename to tests/ui/macros/lint-trailing-macro-call.stderr diff --git a/src/test/ui/macros/local-ambiguity-multiple-parsing-options.rs b/tests/ui/macros/local-ambiguity-multiple-parsing-options.rs similarity index 100% rename from src/test/ui/macros/local-ambiguity-multiple-parsing-options.rs rename to tests/ui/macros/local-ambiguity-multiple-parsing-options.rs diff --git a/src/test/ui/macros/local-ambiguity-multiple-parsing-options.stderr b/tests/ui/macros/local-ambiguity-multiple-parsing-options.stderr similarity index 100% rename from src/test/ui/macros/local-ambiguity-multiple-parsing-options.stderr rename to tests/ui/macros/local-ambiguity-multiple-parsing-options.stderr diff --git a/src/test/ui/macros/log_syntax-trace_macros-macro-locations.rs b/tests/ui/macros/log_syntax-trace_macros-macro-locations.rs similarity index 100% rename from src/test/ui/macros/log_syntax-trace_macros-macro-locations.rs rename to tests/ui/macros/log_syntax-trace_macros-macro-locations.rs diff --git a/src/test/ui/macros/log_syntax-trace_macros-macro-locations.stdout b/tests/ui/macros/log_syntax-trace_macros-macro-locations.stdout similarity index 100% rename from src/test/ui/macros/log_syntax-trace_macros-macro-locations.stdout rename to tests/ui/macros/log_syntax-trace_macros-macro-locations.stdout diff --git a/src/test/ui/macros/macro-2.rs b/tests/ui/macros/macro-2.rs similarity index 100% rename from src/test/ui/macros/macro-2.rs rename to tests/ui/macros/macro-2.rs diff --git a/src/test/ui/macros/macro-as-fn-body.rs b/tests/ui/macros/macro-as-fn-body.rs similarity index 100% rename from src/test/ui/macros/macro-as-fn-body.rs rename to tests/ui/macros/macro-as-fn-body.rs diff --git a/src/test/ui/macros/macro-at-most-once-rep-2015-rpass.rs b/tests/ui/macros/macro-at-most-once-rep-2015-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2015-rpass.rs rename to tests/ui/macros/macro-at-most-once-rep-2015-rpass.rs diff --git a/src/test/ui/macros/macro-at-most-once-rep-2015.rs b/tests/ui/macros/macro-at-most-once-rep-2015.rs similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2015.rs rename to tests/ui/macros/macro-at-most-once-rep-2015.rs diff --git a/src/test/ui/macros/macro-at-most-once-rep-2015.stderr b/tests/ui/macros/macro-at-most-once-rep-2015.stderr similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2015.stderr rename to tests/ui/macros/macro-at-most-once-rep-2015.stderr diff --git a/src/test/ui/macros/macro-at-most-once-rep-2018-rpass.rs b/tests/ui/macros/macro-at-most-once-rep-2018-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2018-rpass.rs rename to tests/ui/macros/macro-at-most-once-rep-2018-rpass.rs diff --git a/src/test/ui/macros/macro-at-most-once-rep-2018.rs b/tests/ui/macros/macro-at-most-once-rep-2018.rs similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2018.rs rename to tests/ui/macros/macro-at-most-once-rep-2018.rs diff --git a/src/test/ui/macros/macro-at-most-once-rep-2018.stderr b/tests/ui/macros/macro-at-most-once-rep-2018.stderr similarity index 100% rename from src/test/ui/macros/macro-at-most-once-rep-2018.stderr rename to tests/ui/macros/macro-at-most-once-rep-2018.stderr diff --git a/src/test/ui/macros/macro-attribute-expansion.rs b/tests/ui/macros/macro-attribute-expansion.rs similarity index 100% rename from src/test/ui/macros/macro-attribute-expansion.rs rename to tests/ui/macros/macro-attribute-expansion.rs diff --git a/src/test/ui/macros/macro-attribute.rs b/tests/ui/macros/macro-attribute.rs similarity index 100% rename from src/test/ui/macros/macro-attribute.rs rename to tests/ui/macros/macro-attribute.rs diff --git a/src/test/ui/macros/macro-attribute.stderr b/tests/ui/macros/macro-attribute.stderr similarity index 100% rename from src/test/ui/macros/macro-attribute.stderr rename to tests/ui/macros/macro-attribute.stderr diff --git a/src/test/ui/macros/macro-attributes.rs b/tests/ui/macros/macro-attributes.rs similarity index 100% rename from src/test/ui/macros/macro-attributes.rs rename to tests/ui/macros/macro-attributes.rs diff --git a/src/test/ui/macros/macro-backtrace-invalid-internals.rs b/tests/ui/macros/macro-backtrace-invalid-internals.rs similarity index 100% rename from src/test/ui/macros/macro-backtrace-invalid-internals.rs rename to tests/ui/macros/macro-backtrace-invalid-internals.rs diff --git a/src/test/ui/macros/macro-backtrace-invalid-internals.stderr b/tests/ui/macros/macro-backtrace-invalid-internals.stderr similarity index 100% rename from src/test/ui/macros/macro-backtrace-invalid-internals.stderr rename to tests/ui/macros/macro-backtrace-invalid-internals.stderr diff --git a/src/test/ui/macros/macro-backtrace-nested.rs b/tests/ui/macros/macro-backtrace-nested.rs similarity index 100% rename from src/test/ui/macros/macro-backtrace-nested.rs rename to tests/ui/macros/macro-backtrace-nested.rs diff --git a/src/test/ui/macros/macro-backtrace-nested.stderr b/tests/ui/macros/macro-backtrace-nested.stderr similarity index 100% rename from src/test/ui/macros/macro-backtrace-nested.stderr rename to tests/ui/macros/macro-backtrace-nested.stderr diff --git a/src/test/ui/macros/macro-backtrace-println.rs b/tests/ui/macros/macro-backtrace-println.rs similarity index 100% rename from src/test/ui/macros/macro-backtrace-println.rs rename to tests/ui/macros/macro-backtrace-println.rs diff --git a/src/test/ui/macros/macro-backtrace-println.stderr b/tests/ui/macros/macro-backtrace-println.stderr similarity index 100% rename from src/test/ui/macros/macro-backtrace-println.stderr rename to tests/ui/macros/macro-backtrace-println.stderr diff --git a/src/test/ui/macros/macro-block-nonterminal.rs b/tests/ui/macros/macro-block-nonterminal.rs similarity index 100% rename from src/test/ui/macros/macro-block-nonterminal.rs rename to tests/ui/macros/macro-block-nonterminal.rs diff --git a/src/test/ui/macros/macro-comma-behavior-rpass.rs b/tests/ui/macros/macro-comma-behavior-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-comma-behavior-rpass.rs rename to tests/ui/macros/macro-comma-behavior-rpass.rs diff --git a/src/test/ui/macros/macro-comma-behavior.core.stderr b/tests/ui/macros/macro-comma-behavior.core.stderr similarity index 100% rename from src/test/ui/macros/macro-comma-behavior.core.stderr rename to tests/ui/macros/macro-comma-behavior.core.stderr diff --git a/src/test/ui/macros/macro-comma-behavior.rs b/tests/ui/macros/macro-comma-behavior.rs similarity index 100% rename from src/test/ui/macros/macro-comma-behavior.rs rename to tests/ui/macros/macro-comma-behavior.rs diff --git a/src/test/ui/macros/macro-comma-behavior.std.stderr b/tests/ui/macros/macro-comma-behavior.std.stderr similarity index 100% rename from src/test/ui/macros/macro-comma-behavior.std.stderr rename to tests/ui/macros/macro-comma-behavior.std.stderr diff --git a/src/test/ui/macros/macro-comma-support-rpass.rs b/tests/ui/macros/macro-comma-support-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-comma-support-rpass.rs rename to tests/ui/macros/macro-comma-support-rpass.rs diff --git a/src/test/ui/macros/macro-comma-support.rs b/tests/ui/macros/macro-comma-support.rs similarity index 100% rename from src/test/ui/macros/macro-comma-support.rs rename to tests/ui/macros/macro-comma-support.rs diff --git a/src/test/ui/macros/macro-comma-support.stderr b/tests/ui/macros/macro-comma-support.stderr similarity index 100% rename from src/test/ui/macros/macro-comma-support.stderr rename to tests/ui/macros/macro-comma-support.stderr diff --git a/src/test/ui/macros/macro-context.rs b/tests/ui/macros/macro-context.rs similarity index 100% rename from src/test/ui/macros/macro-context.rs rename to tests/ui/macros/macro-context.rs diff --git a/src/test/ui/macros/macro-context.stderr b/tests/ui/macros/macro-context.stderr similarity index 100% rename from src/test/ui/macros/macro-context.stderr rename to tests/ui/macros/macro-context.stderr diff --git a/src/test/ui/macros/macro-crate-def-only.rs b/tests/ui/macros/macro-crate-def-only.rs similarity index 100% rename from src/test/ui/macros/macro-crate-def-only.rs rename to tests/ui/macros/macro-crate-def-only.rs diff --git a/src/test/ui/macros/macro-crate-nonterminal-non-root.rs b/tests/ui/macros/macro-crate-nonterminal-non-root.rs similarity index 100% rename from src/test/ui/macros/macro-crate-nonterminal-non-root.rs rename to tests/ui/macros/macro-crate-nonterminal-non-root.rs diff --git a/src/test/ui/macros/macro-crate-nonterminal-non-root.stderr b/tests/ui/macros/macro-crate-nonterminal-non-root.stderr similarity index 100% rename from src/test/ui/macros/macro-crate-nonterminal-non-root.stderr rename to tests/ui/macros/macro-crate-nonterminal-non-root.stderr diff --git a/src/test/ui/macros/macro-crate-nonterminal-renamed.rs b/tests/ui/macros/macro-crate-nonterminal-renamed.rs similarity index 100% rename from src/test/ui/macros/macro-crate-nonterminal-renamed.rs rename to tests/ui/macros/macro-crate-nonterminal-renamed.rs diff --git a/src/test/ui/macros/macro-crate-nonterminal.rs b/tests/ui/macros/macro-crate-nonterminal.rs similarity index 100% rename from src/test/ui/macros/macro-crate-nonterminal.rs rename to tests/ui/macros/macro-crate-nonterminal.rs diff --git a/src/test/ui/macros/macro-crate-use.rs b/tests/ui/macros/macro-crate-use.rs similarity index 100% rename from src/test/ui/macros/macro-crate-use.rs rename to tests/ui/macros/macro-crate-use.rs diff --git a/src/test/ui/macros/macro-deep_expansion.rs b/tests/ui/macros/macro-deep_expansion.rs similarity index 100% rename from src/test/ui/macros/macro-deep_expansion.rs rename to tests/ui/macros/macro-deep_expansion.rs diff --git a/src/test/ui/macros/macro-def-site-super.rs b/tests/ui/macros/macro-def-site-super.rs similarity index 100% rename from src/test/ui/macros/macro-def-site-super.rs rename to tests/ui/macros/macro-def-site-super.rs diff --git a/src/test/ui/macros/macro-delimiter-significance.rs b/tests/ui/macros/macro-delimiter-significance.rs similarity index 100% rename from src/test/ui/macros/macro-delimiter-significance.rs rename to tests/ui/macros/macro-delimiter-significance.rs diff --git a/src/test/ui/macros/macro-deprecation.rs b/tests/ui/macros/macro-deprecation.rs similarity index 100% rename from src/test/ui/macros/macro-deprecation.rs rename to tests/ui/macros/macro-deprecation.rs diff --git a/src/test/ui/macros/macro-deprecation.stderr b/tests/ui/macros/macro-deprecation.stderr similarity index 100% rename from src/test/ui/macros/macro-deprecation.stderr rename to tests/ui/macros/macro-deprecation.stderr diff --git a/src/test/ui/macros/macro-doc-comments.rs b/tests/ui/macros/macro-doc-comments.rs similarity index 100% rename from src/test/ui/macros/macro-doc-comments.rs rename to tests/ui/macros/macro-doc-comments.rs diff --git a/src/test/ui/macros/macro-doc-escapes.rs b/tests/ui/macros/macro-doc-escapes.rs similarity index 100% rename from src/test/ui/macros/macro-doc-escapes.rs rename to tests/ui/macros/macro-doc-escapes.rs diff --git a/src/test/ui/macros/macro-doc-raw-str-hashes.rs b/tests/ui/macros/macro-doc-raw-str-hashes.rs similarity index 100% rename from src/test/ui/macros/macro-doc-raw-str-hashes.rs rename to tests/ui/macros/macro-doc-raw-str-hashes.rs diff --git a/src/test/ui/macros/macro-error.rs b/tests/ui/macros/macro-error.rs similarity index 100% rename from src/test/ui/macros/macro-error.rs rename to tests/ui/macros/macro-error.rs diff --git a/src/test/ui/macros/macro-error.stderr b/tests/ui/macros/macro-error.stderr similarity index 100% rename from src/test/ui/macros/macro-error.stderr rename to tests/ui/macros/macro-error.stderr diff --git a/src/test/ui/macros/macro-expanded-include/file.txt b/tests/ui/macros/macro-expanded-include/file.txt similarity index 100% rename from src/test/ui/macros/macro-expanded-include/file.txt rename to tests/ui/macros/macro-expanded-include/file.txt diff --git a/src/test/ui/macros/macro-expanded-include/foo/mod.rs b/tests/ui/macros/macro-expanded-include/foo/mod.rs similarity index 100% rename from src/test/ui/macros/macro-expanded-include/foo/mod.rs rename to tests/ui/macros/macro-expanded-include/foo/mod.rs diff --git a/src/test/ui/macros/macro-expanded-include/test.rs b/tests/ui/macros/macro-expanded-include/test.rs similarity index 100% rename from src/test/ui/macros/macro-expanded-include/test.rs rename to tests/ui/macros/macro-expanded-include/test.rs diff --git a/src/test/ui/macros/macro-expansion-tests.rs b/tests/ui/macros/macro-expansion-tests.rs similarity index 100% rename from src/test/ui/macros/macro-expansion-tests.rs rename to tests/ui/macros/macro-expansion-tests.rs diff --git a/src/test/ui/macros/macro-expansion-tests.stderr b/tests/ui/macros/macro-expansion-tests.stderr similarity index 100% rename from src/test/ui/macros/macro-expansion-tests.stderr rename to tests/ui/macros/macro-expansion-tests.stderr diff --git a/src/test/ui/macros/macro-export-inner-module.rs b/tests/ui/macros/macro-export-inner-module.rs similarity index 100% rename from src/test/ui/macros/macro-export-inner-module.rs rename to tests/ui/macros/macro-export-inner-module.rs diff --git a/src/test/ui/macros/macro-first-set.rs b/tests/ui/macros/macro-first-set.rs similarity index 100% rename from src/test/ui/macros/macro-first-set.rs rename to tests/ui/macros/macro-first-set.rs diff --git a/src/test/ui/macros/macro-follow-rpass.rs b/tests/ui/macros/macro-follow-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-follow-rpass.rs rename to tests/ui/macros/macro-follow-rpass.rs diff --git a/src/test/ui/macros/macro-follow.rs b/tests/ui/macros/macro-follow.rs similarity index 100% rename from src/test/ui/macros/macro-follow.rs rename to tests/ui/macros/macro-follow.rs diff --git a/src/test/ui/macros/macro-follow.stderr b/tests/ui/macros/macro-follow.stderr similarity index 100% rename from src/test/ui/macros/macro-follow.stderr rename to tests/ui/macros/macro-follow.stderr diff --git a/src/test/ui/macros/macro-followed-by-seq-bad.rs b/tests/ui/macros/macro-followed-by-seq-bad.rs similarity index 100% rename from src/test/ui/macros/macro-followed-by-seq-bad.rs rename to tests/ui/macros/macro-followed-by-seq-bad.rs diff --git a/src/test/ui/macros/macro-followed-by-seq-bad.stderr b/tests/ui/macros/macro-followed-by-seq-bad.stderr similarity index 100% rename from src/test/ui/macros/macro-followed-by-seq-bad.stderr rename to tests/ui/macros/macro-followed-by-seq-bad.stderr diff --git a/src/test/ui/macros/macro-followed-by-seq.rs b/tests/ui/macros/macro-followed-by-seq.rs similarity index 100% rename from src/test/ui/macros/macro-followed-by-seq.rs rename to tests/ui/macros/macro-followed-by-seq.rs diff --git a/src/test/ui/macros/macro-in-expression-context-2.rs b/tests/ui/macros/macro-in-expression-context-2.rs similarity index 100% rename from src/test/ui/macros/macro-in-expression-context-2.rs rename to tests/ui/macros/macro-in-expression-context-2.rs diff --git a/src/test/ui/macros/macro-in-expression-context-2.stderr b/tests/ui/macros/macro-in-expression-context-2.stderr similarity index 100% rename from src/test/ui/macros/macro-in-expression-context-2.stderr rename to tests/ui/macros/macro-in-expression-context-2.stderr diff --git a/src/test/ui/macros/macro-in-expression-context.fixed b/tests/ui/macros/macro-in-expression-context.fixed similarity index 100% rename from src/test/ui/macros/macro-in-expression-context.fixed rename to tests/ui/macros/macro-in-expression-context.fixed diff --git a/src/test/ui/macros/macro-in-expression-context.rs b/tests/ui/macros/macro-in-expression-context.rs similarity index 100% rename from src/test/ui/macros/macro-in-expression-context.rs rename to tests/ui/macros/macro-in-expression-context.rs diff --git a/src/test/ui/macros/macro-in-expression-context.stderr b/tests/ui/macros/macro-in-expression-context.stderr similarity index 100% rename from src/test/ui/macros/macro-in-expression-context.stderr rename to tests/ui/macros/macro-in-expression-context.stderr diff --git a/src/test/ui/macros/macro-in-fn.rs b/tests/ui/macros/macro-in-fn.rs similarity index 100% rename from src/test/ui/macros/macro-in-fn.rs rename to tests/ui/macros/macro-in-fn.rs diff --git a/src/test/ui/macros/macro-include-items.rs b/tests/ui/macros/macro-include-items.rs similarity index 100% rename from src/test/ui/macros/macro-include-items.rs rename to tests/ui/macros/macro-include-items.rs diff --git a/src/test/ui/macros/macro-inner-attributes.rs b/tests/ui/macros/macro-inner-attributes.rs similarity index 100% rename from src/test/ui/macros/macro-inner-attributes.rs rename to tests/ui/macros/macro-inner-attributes.rs diff --git a/src/test/ui/macros/macro-inner-attributes.stderr b/tests/ui/macros/macro-inner-attributes.stderr similarity index 100% rename from src/test/ui/macros/macro-inner-attributes.stderr rename to tests/ui/macros/macro-inner-attributes.stderr diff --git a/src/test/ui/macros/macro-input-future-proofing.rs b/tests/ui/macros/macro-input-future-proofing.rs similarity index 100% rename from src/test/ui/macros/macro-input-future-proofing.rs rename to tests/ui/macros/macro-input-future-proofing.rs diff --git a/src/test/ui/macros/macro-input-future-proofing.stderr b/tests/ui/macros/macro-input-future-proofing.stderr similarity index 100% rename from src/test/ui/macros/macro-input-future-proofing.stderr rename to tests/ui/macros/macro-input-future-proofing.stderr diff --git a/src/test/ui/macros/macro-interpolation.rs b/tests/ui/macros/macro-interpolation.rs similarity index 100% rename from src/test/ui/macros/macro-interpolation.rs rename to tests/ui/macros/macro-interpolation.rs diff --git a/src/test/ui/macros/macro-invalid-fragment-spec.rs b/tests/ui/macros/macro-invalid-fragment-spec.rs similarity index 100% rename from src/test/ui/macros/macro-invalid-fragment-spec.rs rename to tests/ui/macros/macro-invalid-fragment-spec.rs diff --git a/src/test/ui/macros/macro-invalid-fragment-spec.stderr b/tests/ui/macros/macro-invalid-fragment-spec.stderr similarity index 100% rename from src/test/ui/macros/macro-invalid-fragment-spec.stderr rename to tests/ui/macros/macro-invalid-fragment-spec.stderr diff --git a/src/test/ui/macros/macro-invocation-in-count-expr-fixed-array-type.rs b/tests/ui/macros/macro-invocation-in-count-expr-fixed-array-type.rs similarity index 100% rename from src/test/ui/macros/macro-invocation-in-count-expr-fixed-array-type.rs rename to tests/ui/macros/macro-invocation-in-count-expr-fixed-array-type.rs diff --git a/src/test/ui/macros/macro-lifetime-used-with-bound.rs b/tests/ui/macros/macro-lifetime-used-with-bound.rs similarity index 100% rename from src/test/ui/macros/macro-lifetime-used-with-bound.rs rename to tests/ui/macros/macro-lifetime-used-with-bound.rs diff --git a/src/test/ui/macros/macro-lifetime-used-with-labels.rs b/tests/ui/macros/macro-lifetime-used-with-labels.rs similarity index 100% rename from src/test/ui/macros/macro-lifetime-used-with-labels.rs rename to tests/ui/macros/macro-lifetime-used-with-labels.rs diff --git a/src/test/ui/macros/macro-lifetime-used-with-static.rs b/tests/ui/macros/macro-lifetime-used-with-static.rs similarity index 100% rename from src/test/ui/macros/macro-lifetime-used-with-static.rs rename to tests/ui/macros/macro-lifetime-used-with-static.rs diff --git a/src/test/ui/macros/macro-lifetime.rs b/tests/ui/macros/macro-lifetime.rs similarity index 100% rename from src/test/ui/macros/macro-lifetime.rs rename to tests/ui/macros/macro-lifetime.rs diff --git a/src/test/ui/macros/macro-literal.rs b/tests/ui/macros/macro-literal.rs similarity index 100% rename from src/test/ui/macros/macro-literal.rs rename to tests/ui/macros/macro-literal.rs diff --git a/src/test/ui/macros/macro-local-data-key-priv.rs b/tests/ui/macros/macro-local-data-key-priv.rs similarity index 100% rename from src/test/ui/macros/macro-local-data-key-priv.rs rename to tests/ui/macros/macro-local-data-key-priv.rs diff --git a/src/test/ui/macros/macro-local-data-key-priv.stderr b/tests/ui/macros/macro-local-data-key-priv.stderr similarity index 100% rename from src/test/ui/macros/macro-local-data-key-priv.stderr rename to tests/ui/macros/macro-local-data-key-priv.stderr diff --git a/src/test/ui/macros/macro-match-nonterminal.rs b/tests/ui/macros/macro-match-nonterminal.rs similarity index 100% rename from src/test/ui/macros/macro-match-nonterminal.rs rename to tests/ui/macros/macro-match-nonterminal.rs diff --git a/src/test/ui/macros/macro-match-nonterminal.stderr b/tests/ui/macros/macro-match-nonterminal.stderr similarity index 100% rename from src/test/ui/macros/macro-match-nonterminal.stderr rename to tests/ui/macros/macro-match-nonterminal.stderr diff --git a/src/test/ui/macros/macro-meta-items-modern.rs b/tests/ui/macros/macro-meta-items-modern.rs similarity index 100% rename from src/test/ui/macros/macro-meta-items-modern.rs rename to tests/ui/macros/macro-meta-items-modern.rs diff --git a/src/test/ui/macros/macro-meta-items.rs b/tests/ui/macros/macro-meta-items.rs similarity index 100% rename from src/test/ui/macros/macro-meta-items.rs rename to tests/ui/macros/macro-meta-items.rs diff --git a/src/test/ui/macros/macro-method-issue-4621.rs b/tests/ui/macros/macro-method-issue-4621.rs similarity index 100% rename from src/test/ui/macros/macro-method-issue-4621.rs rename to tests/ui/macros/macro-method-issue-4621.rs diff --git a/src/test/ui/macros/macro-missing-delimiters.rs b/tests/ui/macros/macro-missing-delimiters.rs similarity index 100% rename from src/test/ui/macros/macro-missing-delimiters.rs rename to tests/ui/macros/macro-missing-delimiters.rs diff --git a/src/test/ui/macros/macro-missing-delimiters.stderr b/tests/ui/macros/macro-missing-delimiters.stderr similarity index 100% rename from src/test/ui/macros/macro-missing-delimiters.stderr rename to tests/ui/macros/macro-missing-delimiters.stderr diff --git a/src/test/ui/macros/macro-missing-fragment-deduplication.rs b/tests/ui/macros/macro-missing-fragment-deduplication.rs similarity index 100% rename from src/test/ui/macros/macro-missing-fragment-deduplication.rs rename to tests/ui/macros/macro-missing-fragment-deduplication.rs diff --git a/src/test/ui/macros/macro-missing-fragment-deduplication.stderr b/tests/ui/macros/macro-missing-fragment-deduplication.stderr similarity index 100% rename from src/test/ui/macros/macro-missing-fragment-deduplication.stderr rename to tests/ui/macros/macro-missing-fragment-deduplication.stderr diff --git a/src/test/ui/macros/macro-missing-fragment.rs b/tests/ui/macros/macro-missing-fragment.rs similarity index 100% rename from src/test/ui/macros/macro-missing-fragment.rs rename to tests/ui/macros/macro-missing-fragment.rs diff --git a/src/test/ui/macros/macro-missing-fragment.stderr b/tests/ui/macros/macro-missing-fragment.stderr similarity index 100% rename from src/test/ui/macros/macro-missing-fragment.stderr rename to tests/ui/macros/macro-missing-fragment.stderr diff --git a/src/test/ui/macros/macro-multiple-items.rs b/tests/ui/macros/macro-multiple-items.rs similarity index 100% rename from src/test/ui/macros/macro-multiple-items.rs rename to tests/ui/macros/macro-multiple-items.rs diff --git a/src/test/ui/macros/macro-multiple-matcher-bindings.rs b/tests/ui/macros/macro-multiple-matcher-bindings.rs similarity index 100% rename from src/test/ui/macros/macro-multiple-matcher-bindings.rs rename to tests/ui/macros/macro-multiple-matcher-bindings.rs diff --git a/src/test/ui/macros/macro-multiple-matcher-bindings.stderr b/tests/ui/macros/macro-multiple-matcher-bindings.stderr similarity index 100% rename from src/test/ui/macros/macro-multiple-matcher-bindings.stderr rename to tests/ui/macros/macro-multiple-matcher-bindings.stderr diff --git a/src/test/ui/macros/macro-name-typo.rs b/tests/ui/macros/macro-name-typo.rs similarity index 100% rename from src/test/ui/macros/macro-name-typo.rs rename to tests/ui/macros/macro-name-typo.rs diff --git a/src/test/ui/macros/macro-name-typo.stderr b/tests/ui/macros/macro-name-typo.stderr similarity index 100% rename from src/test/ui/macros/macro-name-typo.stderr rename to tests/ui/macros/macro-name-typo.stderr diff --git a/src/test/ui/macros/macro-named-default.rs b/tests/ui/macros/macro-named-default.rs similarity index 100% rename from src/test/ui/macros/macro-named-default.rs rename to tests/ui/macros/macro-named-default.rs diff --git a/src/test/ui/macros/macro-nested_definition_issue-31946.rs b/tests/ui/macros/macro-nested_definition_issue-31946.rs similarity index 100% rename from src/test/ui/macros/macro-nested_definition_issue-31946.rs rename to tests/ui/macros/macro-nested_definition_issue-31946.rs diff --git a/src/test/ui/macros/macro-nested_expr.rs b/tests/ui/macros/macro-nested_expr.rs similarity index 100% rename from src/test/ui/macros/macro-nested_expr.rs rename to tests/ui/macros/macro-nested_expr.rs diff --git a/src/test/ui/macros/macro-nested_stmt_macros.rs b/tests/ui/macros/macro-nested_stmt_macros.rs similarity index 100% rename from src/test/ui/macros/macro-nested_stmt_macros.rs rename to tests/ui/macros/macro-nested_stmt_macros.rs diff --git a/src/test/ui/macros/macro-non-lifetime.rs b/tests/ui/macros/macro-non-lifetime.rs similarity index 100% rename from src/test/ui/macros/macro-non-lifetime.rs rename to tests/ui/macros/macro-non-lifetime.rs diff --git a/src/test/ui/macros/macro-non-lifetime.stderr b/tests/ui/macros/macro-non-lifetime.stderr similarity index 100% rename from src/test/ui/macros/macro-non-lifetime.stderr rename to tests/ui/macros/macro-non-lifetime.stderr diff --git a/src/test/ui/macros/macro-nt-list.rs b/tests/ui/macros/macro-nt-list.rs similarity index 100% rename from src/test/ui/macros/macro-nt-list.rs rename to tests/ui/macros/macro-nt-list.rs diff --git a/src/test/ui/macros/macro-of-higher-order.rs b/tests/ui/macros/macro-of-higher-order.rs similarity index 100% rename from src/test/ui/macros/macro-of-higher-order.rs rename to tests/ui/macros/macro-of-higher-order.rs diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.fixed b/tests/ui/macros/macro-or-patterns-back-compat.fixed similarity index 100% rename from src/test/ui/macros/macro-or-patterns-back-compat.fixed rename to tests/ui/macros/macro-or-patterns-back-compat.fixed diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.rs b/tests/ui/macros/macro-or-patterns-back-compat.rs similarity index 100% rename from src/test/ui/macros/macro-or-patterns-back-compat.rs rename to tests/ui/macros/macro-or-patterns-back-compat.rs diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.stderr b/tests/ui/macros/macro-or-patterns-back-compat.stderr similarity index 100% rename from src/test/ui/macros/macro-or-patterns-back-compat.stderr rename to tests/ui/macros/macro-or-patterns-back-compat.stderr diff --git a/src/test/ui/macros/macro-outer-attributes.rs b/tests/ui/macros/macro-outer-attributes.rs similarity index 100% rename from src/test/ui/macros/macro-outer-attributes.rs rename to tests/ui/macros/macro-outer-attributes.rs diff --git a/src/test/ui/macros/macro-outer-attributes.stderr b/tests/ui/macros/macro-outer-attributes.stderr similarity index 100% rename from src/test/ui/macros/macro-outer-attributes.stderr rename to tests/ui/macros/macro-outer-attributes.stderr diff --git a/src/test/ui/macros/macro-parameter-span.rs b/tests/ui/macros/macro-parameter-span.rs similarity index 100% rename from src/test/ui/macros/macro-parameter-span.rs rename to tests/ui/macros/macro-parameter-span.rs diff --git a/src/test/ui/macros/macro-parameter-span.stderr b/tests/ui/macros/macro-parameter-span.stderr similarity index 100% rename from src/test/ui/macros/macro-parameter-span.stderr rename to tests/ui/macros/macro-parameter-span.stderr diff --git a/src/test/ui/macros/macro-pat-follow-2018.rs b/tests/ui/macros/macro-pat-follow-2018.rs similarity index 100% rename from src/test/ui/macros/macro-pat-follow-2018.rs rename to tests/ui/macros/macro-pat-follow-2018.rs diff --git a/src/test/ui/macros/macro-pat-follow.rs b/tests/ui/macros/macro-pat-follow.rs similarity index 100% rename from src/test/ui/macros/macro-pat-follow.rs rename to tests/ui/macros/macro-pat-follow.rs diff --git a/src/test/ui/macros/macro-pat-neg-lit.rs b/tests/ui/macros/macro-pat-neg-lit.rs similarity index 100% rename from src/test/ui/macros/macro-pat-neg-lit.rs rename to tests/ui/macros/macro-pat-neg-lit.rs diff --git a/src/test/ui/macros/macro-pat-pattern-followed-by-or-in-2021.rs b/tests/ui/macros/macro-pat-pattern-followed-by-or-in-2021.rs similarity index 100% rename from src/test/ui/macros/macro-pat-pattern-followed-by-or-in-2021.rs rename to tests/ui/macros/macro-pat-pattern-followed-by-or-in-2021.rs diff --git a/src/test/ui/macros/macro-pat-pattern-followed-by-or-in-2021.stderr b/tests/ui/macros/macro-pat-pattern-followed-by-or-in-2021.stderr similarity index 100% rename from src/test/ui/macros/macro-pat-pattern-followed-by-or-in-2021.stderr rename to tests/ui/macros/macro-pat-pattern-followed-by-or-in-2021.stderr diff --git a/src/test/ui/macros/macro-pat-pattern-followed-by-or.rs b/tests/ui/macros/macro-pat-pattern-followed-by-or.rs similarity index 100% rename from src/test/ui/macros/macro-pat-pattern-followed-by-or.rs rename to tests/ui/macros/macro-pat-pattern-followed-by-or.rs diff --git a/src/test/ui/macros/macro-pat.rs b/tests/ui/macros/macro-pat.rs similarity index 100% rename from src/test/ui/macros/macro-pat.rs rename to tests/ui/macros/macro-pat.rs diff --git a/src/test/ui/macros/macro-pat2021-pattern-followed-by-or.rs b/tests/ui/macros/macro-pat2021-pattern-followed-by-or.rs similarity index 100% rename from src/test/ui/macros/macro-pat2021-pattern-followed-by-or.rs rename to tests/ui/macros/macro-pat2021-pattern-followed-by-or.rs diff --git a/src/test/ui/macros/macro-pat2021-pattern-followed-by-or.stderr b/tests/ui/macros/macro-pat2021-pattern-followed-by-or.stderr similarity index 100% rename from src/test/ui/macros/macro-pat2021-pattern-followed-by-or.stderr rename to tests/ui/macros/macro-pat2021-pattern-followed-by-or.stderr diff --git a/src/test/ui/macros/macro-path-prelude-fail-1.rs b/tests/ui/macros/macro-path-prelude-fail-1.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-1.rs rename to tests/ui/macros/macro-path-prelude-fail-1.rs diff --git a/src/test/ui/macros/macro-path-prelude-fail-1.stderr b/tests/ui/macros/macro-path-prelude-fail-1.stderr similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-1.stderr rename to tests/ui/macros/macro-path-prelude-fail-1.stderr diff --git a/src/test/ui/macros/macro-path-prelude-fail-2.rs b/tests/ui/macros/macro-path-prelude-fail-2.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-2.rs rename to tests/ui/macros/macro-path-prelude-fail-2.rs diff --git a/src/test/ui/macros/macro-path-prelude-fail-2.stderr b/tests/ui/macros/macro-path-prelude-fail-2.stderr similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-2.stderr rename to tests/ui/macros/macro-path-prelude-fail-2.stderr diff --git a/src/test/ui/macros/macro-path-prelude-fail-3.rs b/tests/ui/macros/macro-path-prelude-fail-3.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-3.rs rename to tests/ui/macros/macro-path-prelude-fail-3.rs diff --git a/src/test/ui/macros/macro-path-prelude-fail-3.stderr b/tests/ui/macros/macro-path-prelude-fail-3.stderr similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-3.stderr rename to tests/ui/macros/macro-path-prelude-fail-3.stderr diff --git a/src/test/ui/macros/macro-path-prelude-fail-4.rs b/tests/ui/macros/macro-path-prelude-fail-4.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-4.rs rename to tests/ui/macros/macro-path-prelude-fail-4.rs diff --git a/src/test/ui/macros/macro-path-prelude-fail-4.stderr b/tests/ui/macros/macro-path-prelude-fail-4.stderr similarity index 100% rename from src/test/ui/macros/macro-path-prelude-fail-4.stderr rename to tests/ui/macros/macro-path-prelude-fail-4.stderr diff --git a/src/test/ui/macros/macro-path-prelude-pass.rs b/tests/ui/macros/macro-path-prelude-pass.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-pass.rs rename to tests/ui/macros/macro-path-prelude-pass.rs diff --git a/src/test/ui/macros/macro-path-prelude-shadowing.rs b/tests/ui/macros/macro-path-prelude-shadowing.rs similarity index 100% rename from src/test/ui/macros/macro-path-prelude-shadowing.rs rename to tests/ui/macros/macro-path-prelude-shadowing.rs diff --git a/src/test/ui/macros/macro-path-prelude-shadowing.stderr b/tests/ui/macros/macro-path-prelude-shadowing.stderr similarity index 100% rename from src/test/ui/macros/macro-path-prelude-shadowing.stderr rename to tests/ui/macros/macro-path-prelude-shadowing.stderr diff --git a/src/test/ui/macros/macro-path.rs b/tests/ui/macros/macro-path.rs similarity index 100% rename from src/test/ui/macros/macro-path.rs rename to tests/ui/macros/macro-path.rs diff --git a/src/test/ui/macros/macro-pub-matcher.rs b/tests/ui/macros/macro-pub-matcher.rs similarity index 100% rename from src/test/ui/macros/macro-pub-matcher.rs rename to tests/ui/macros/macro-pub-matcher.rs diff --git a/src/test/ui/macros/macro-reexport-removed.rs b/tests/ui/macros/macro-reexport-removed.rs similarity index 100% rename from src/test/ui/macros/macro-reexport-removed.rs rename to tests/ui/macros/macro-reexport-removed.rs diff --git a/src/test/ui/macros/macro-reexport-removed.stderr b/tests/ui/macros/macro-reexport-removed.stderr similarity index 100% rename from src/test/ui/macros/macro-reexport-removed.stderr rename to tests/ui/macros/macro-reexport-removed.stderr diff --git a/src/test/ui/macros/macro-seq-followed-by-seq.rs b/tests/ui/macros/macro-seq-followed-by-seq.rs similarity index 100% rename from src/test/ui/macros/macro-seq-followed-by-seq.rs rename to tests/ui/macros/macro-seq-followed-by-seq.rs diff --git a/src/test/ui/macros/macro-shadowing-relaxed.rs b/tests/ui/macros/macro-shadowing-relaxed.rs similarity index 100% rename from src/test/ui/macros/macro-shadowing-relaxed.rs rename to tests/ui/macros/macro-shadowing-relaxed.rs diff --git a/src/test/ui/macros/macro-shadowing.rs b/tests/ui/macros/macro-shadowing.rs similarity index 100% rename from src/test/ui/macros/macro-shadowing.rs rename to tests/ui/macros/macro-shadowing.rs diff --git a/src/test/ui/macros/macro-shadowing.stderr b/tests/ui/macros/macro-shadowing.stderr similarity index 100% rename from src/test/ui/macros/macro-shadowing.stderr rename to tests/ui/macros/macro-shadowing.stderr diff --git a/src/test/ui/macros/macro-stability-rpass.rs b/tests/ui/macros/macro-stability-rpass.rs similarity index 100% rename from src/test/ui/macros/macro-stability-rpass.rs rename to tests/ui/macros/macro-stability-rpass.rs diff --git a/src/test/ui/macros/macro-stability.rs b/tests/ui/macros/macro-stability.rs similarity index 100% rename from src/test/ui/macros/macro-stability.rs rename to tests/ui/macros/macro-stability.rs diff --git a/src/test/ui/macros/macro-stability.stderr b/tests/ui/macros/macro-stability.stderr similarity index 100% rename from src/test/ui/macros/macro-stability.stderr rename to tests/ui/macros/macro-stability.stderr diff --git a/src/test/ui/macros/macro-stmt-matchers.rs b/tests/ui/macros/macro-stmt-matchers.rs similarity index 100% rename from src/test/ui/macros/macro-stmt-matchers.rs rename to tests/ui/macros/macro-stmt-matchers.rs diff --git a/src/test/ui/macros/macro-stmt.rs b/tests/ui/macros/macro-stmt.rs similarity index 100% rename from src/test/ui/macros/macro-stmt.rs rename to tests/ui/macros/macro-stmt.rs diff --git a/src/test/ui/macros/macro-stmt_macro_in_expr_macro.rs b/tests/ui/macros/macro-stmt_macro_in_expr_macro.rs similarity index 100% rename from src/test/ui/macros/macro-stmt_macro_in_expr_macro.rs rename to tests/ui/macros/macro-stmt_macro_in_expr_macro.rs diff --git a/src/test/ui/macros/macro-tt-followed-by-seq.rs b/tests/ui/macros/macro-tt-followed-by-seq.rs similarity index 100% rename from src/test/ui/macros/macro-tt-followed-by-seq.rs rename to tests/ui/macros/macro-tt-followed-by-seq.rs diff --git a/src/test/ui/macros/macro-tt-matchers.rs b/tests/ui/macros/macro-tt-matchers.rs similarity index 100% rename from src/test/ui/macros/macro-tt-matchers.rs rename to tests/ui/macros/macro-tt-matchers.rs diff --git a/src/test/ui/macros/macro-use-all-and-none.rs b/tests/ui/macros/macro-use-all-and-none.rs similarity index 100% rename from src/test/ui/macros/macro-use-all-and-none.rs rename to tests/ui/macros/macro-use-all-and-none.rs diff --git a/src/test/ui/macros/macro-use-all-and-none.stderr b/tests/ui/macros/macro-use-all-and-none.stderr similarity index 100% rename from src/test/ui/macros/macro-use-all-and-none.stderr rename to tests/ui/macros/macro-use-all-and-none.stderr diff --git a/src/test/ui/macros/macro-use-all.rs b/tests/ui/macros/macro-use-all.rs similarity index 100% rename from src/test/ui/macros/macro-use-all.rs rename to tests/ui/macros/macro-use-all.rs diff --git a/src/test/ui/macros/macro-use-bad-args-1.rs b/tests/ui/macros/macro-use-bad-args-1.rs similarity index 100% rename from src/test/ui/macros/macro-use-bad-args-1.rs rename to tests/ui/macros/macro-use-bad-args-1.rs diff --git a/src/test/ui/macros/macro-use-bad-args-1.stderr b/tests/ui/macros/macro-use-bad-args-1.stderr similarity index 100% rename from src/test/ui/macros/macro-use-bad-args-1.stderr rename to tests/ui/macros/macro-use-bad-args-1.stderr diff --git a/src/test/ui/macros/macro-use-bad-args-2.rs b/tests/ui/macros/macro-use-bad-args-2.rs similarity index 100% rename from src/test/ui/macros/macro-use-bad-args-2.rs rename to tests/ui/macros/macro-use-bad-args-2.rs diff --git a/src/test/ui/macros/macro-use-bad-args-2.stderr b/tests/ui/macros/macro-use-bad-args-2.stderr similarity index 100% rename from src/test/ui/macros/macro-use-bad-args-2.stderr rename to tests/ui/macros/macro-use-bad-args-2.stderr diff --git a/src/test/ui/macros/macro-use-both.rs b/tests/ui/macros/macro-use-both.rs similarity index 100% rename from src/test/ui/macros/macro-use-both.rs rename to tests/ui/macros/macro-use-both.rs diff --git a/src/test/ui/macros/macro-use-one.rs b/tests/ui/macros/macro-use-one.rs similarity index 100% rename from src/test/ui/macros/macro-use-one.rs rename to tests/ui/macros/macro-use-one.rs diff --git a/src/test/ui/macros/macro-use-scope.rs b/tests/ui/macros/macro-use-scope.rs similarity index 100% rename from src/test/ui/macros/macro-use-scope.rs rename to tests/ui/macros/macro-use-scope.rs diff --git a/src/test/ui/macros/macro-use-undef.rs b/tests/ui/macros/macro-use-undef.rs similarity index 100% rename from src/test/ui/macros/macro-use-undef.rs rename to tests/ui/macros/macro-use-undef.rs diff --git a/src/test/ui/macros/macro-use-undef.stderr b/tests/ui/macros/macro-use-undef.stderr similarity index 100% rename from src/test/ui/macros/macro-use-undef.stderr rename to tests/ui/macros/macro-use-undef.stderr diff --git a/src/test/ui/macros/macro-use-wrong-name.rs b/tests/ui/macros/macro-use-wrong-name.rs similarity index 100% rename from src/test/ui/macros/macro-use-wrong-name.rs rename to tests/ui/macros/macro-use-wrong-name.rs diff --git a/src/test/ui/macros/macro-use-wrong-name.stderr b/tests/ui/macros/macro-use-wrong-name.stderr similarity index 100% rename from src/test/ui/macros/macro-use-wrong-name.stderr rename to tests/ui/macros/macro-use-wrong-name.stderr diff --git a/src/test/ui/macros/macro-with-attrs1.rs b/tests/ui/macros/macro-with-attrs1.rs similarity index 100% rename from src/test/ui/macros/macro-with-attrs1.rs rename to tests/ui/macros/macro-with-attrs1.rs diff --git a/src/test/ui/macros/macro-with-attrs2.rs b/tests/ui/macros/macro-with-attrs2.rs similarity index 100% rename from src/test/ui/macros/macro-with-attrs2.rs rename to tests/ui/macros/macro-with-attrs2.rs diff --git a/src/test/ui/macros/macro-with-braces-in-expr-position.rs b/tests/ui/macros/macro-with-braces-in-expr-position.rs similarity index 100% rename from src/test/ui/macros/macro-with-braces-in-expr-position.rs rename to tests/ui/macros/macro-with-braces-in-expr-position.rs diff --git a/src/test/ui/macros/macro_path_as_generic_bound.rs b/tests/ui/macros/macro_path_as_generic_bound.rs similarity index 100% rename from src/test/ui/macros/macro_path_as_generic_bound.rs rename to tests/ui/macros/macro_path_as_generic_bound.rs diff --git a/src/test/ui/macros/macro_path_as_generic_bound.stderr b/tests/ui/macros/macro_path_as_generic_bound.stderr similarity index 100% rename from src/test/ui/macros/macro_path_as_generic_bound.stderr rename to tests/ui/macros/macro_path_as_generic_bound.stderr diff --git a/src/test/ui/macros/macro_rules-unmatchable-literals.rs b/tests/ui/macros/macro_rules-unmatchable-literals.rs similarity index 100% rename from src/test/ui/macros/macro_rules-unmatchable-literals.rs rename to tests/ui/macros/macro_rules-unmatchable-literals.rs diff --git a/src/test/ui/macros/macro_rules-unmatchable-literals.stderr b/tests/ui/macros/macro_rules-unmatchable-literals.stderr similarity index 100% rename from src/test/ui/macros/macro_rules-unmatchable-literals.stderr rename to tests/ui/macros/macro_rules-unmatchable-literals.stderr diff --git a/src/test/ui/macros/macro_undefined.rs b/tests/ui/macros/macro_undefined.rs similarity index 100% rename from src/test/ui/macros/macro_undefined.rs rename to tests/ui/macros/macro_undefined.rs diff --git a/src/test/ui/macros/macro_undefined.stderr b/tests/ui/macros/macro_undefined.stderr similarity index 100% rename from src/test/ui/macros/macro_undefined.stderr rename to tests/ui/macros/macro_undefined.stderr diff --git a/src/test/ui/macros/macro_with_super_2.rs b/tests/ui/macros/macro_with_super_2.rs similarity index 100% rename from src/test/ui/macros/macro_with_super_2.rs rename to tests/ui/macros/macro_with_super_2.rs diff --git a/src/test/ui/macros/macros-in-extern.rs b/tests/ui/macros/macros-in-extern.rs similarity index 100% rename from src/test/ui/macros/macros-in-extern.rs rename to tests/ui/macros/macros-in-extern.rs diff --git a/src/test/ui/macros/macros-nonfatal-errors.rs b/tests/ui/macros/macros-nonfatal-errors.rs similarity index 100% rename from src/test/ui/macros/macros-nonfatal-errors.rs rename to tests/ui/macros/macros-nonfatal-errors.rs diff --git a/src/test/ui/macros/macros-nonfatal-errors.stderr b/tests/ui/macros/macros-nonfatal-errors.stderr similarity index 100% rename from src/test/ui/macros/macros-nonfatal-errors.stderr rename to tests/ui/macros/macros-nonfatal-errors.stderr diff --git a/src/test/ui/macros/malformed_macro_lhs.rs b/tests/ui/macros/malformed_macro_lhs.rs similarity index 100% rename from src/test/ui/macros/malformed_macro_lhs.rs rename to tests/ui/macros/malformed_macro_lhs.rs diff --git a/src/test/ui/macros/malformed_macro_lhs.stderr b/tests/ui/macros/malformed_macro_lhs.stderr similarity index 100% rename from src/test/ui/macros/malformed_macro_lhs.stderr rename to tests/ui/macros/malformed_macro_lhs.stderr diff --git a/src/test/ui/macros/meta-item-absolute-path.rs b/tests/ui/macros/meta-item-absolute-path.rs similarity index 100% rename from src/test/ui/macros/meta-item-absolute-path.rs rename to tests/ui/macros/meta-item-absolute-path.rs diff --git a/src/test/ui/macros/meta-item-absolute-path.stderr b/tests/ui/macros/meta-item-absolute-path.stderr similarity index 100% rename from src/test/ui/macros/meta-item-absolute-path.stderr rename to tests/ui/macros/meta-item-absolute-path.stderr diff --git a/src/test/ui/macros/meta-variable-depth-outside-repeat.rs b/tests/ui/macros/meta-variable-depth-outside-repeat.rs similarity index 100% rename from src/test/ui/macros/meta-variable-depth-outside-repeat.rs rename to tests/ui/macros/meta-variable-depth-outside-repeat.rs diff --git a/src/test/ui/macros/meta-variable-depth-outside-repeat.stderr b/tests/ui/macros/meta-variable-depth-outside-repeat.stderr similarity index 100% rename from src/test/ui/macros/meta-variable-depth-outside-repeat.stderr rename to tests/ui/macros/meta-variable-depth-outside-repeat.stderr diff --git a/src/test/ui/macros/meta-variable-misuse.rs b/tests/ui/macros/meta-variable-misuse.rs similarity index 100% rename from src/test/ui/macros/meta-variable-misuse.rs rename to tests/ui/macros/meta-variable-misuse.rs diff --git a/src/test/ui/macros/missing-bang-in-decl.fixed b/tests/ui/macros/missing-bang-in-decl.fixed similarity index 100% rename from src/test/ui/macros/missing-bang-in-decl.fixed rename to tests/ui/macros/missing-bang-in-decl.fixed diff --git a/src/test/ui/macros/missing-bang-in-decl.rs b/tests/ui/macros/missing-bang-in-decl.rs similarity index 100% rename from src/test/ui/macros/missing-bang-in-decl.rs rename to tests/ui/macros/missing-bang-in-decl.rs diff --git a/src/test/ui/macros/missing-bang-in-decl.stderr b/tests/ui/macros/missing-bang-in-decl.stderr similarity index 100% rename from src/test/ui/macros/missing-bang-in-decl.stderr rename to tests/ui/macros/missing-bang-in-decl.stderr diff --git a/src/test/ui/macros/missing-comma.rs b/tests/ui/macros/missing-comma.rs similarity index 100% rename from src/test/ui/macros/missing-comma.rs rename to tests/ui/macros/missing-comma.rs diff --git a/src/test/ui/macros/missing-comma.stderr b/tests/ui/macros/missing-comma.stderr similarity index 100% rename from src/test/ui/macros/missing-comma.stderr rename to tests/ui/macros/missing-comma.stderr diff --git a/src/test/ui/macros/must-use-in-macro-55516.rs b/tests/ui/macros/must-use-in-macro-55516.rs similarity index 100% rename from src/test/ui/macros/must-use-in-macro-55516.rs rename to tests/ui/macros/must-use-in-macro-55516.rs diff --git a/src/test/ui/macros/must-use-in-macro-55516.stderr b/tests/ui/macros/must-use-in-macro-55516.stderr similarity index 100% rename from src/test/ui/macros/must-use-in-macro-55516.stderr rename to tests/ui/macros/must-use-in-macro-55516.stderr diff --git a/src/test/ui/macros/no-std-macros.rs b/tests/ui/macros/no-std-macros.rs similarity index 100% rename from src/test/ui/macros/no-std-macros.rs rename to tests/ui/macros/no-std-macros.rs diff --git a/src/test/ui/macros/none-delim-lookahead.rs b/tests/ui/macros/none-delim-lookahead.rs similarity index 100% rename from src/test/ui/macros/none-delim-lookahead.rs rename to tests/ui/macros/none-delim-lookahead.rs diff --git a/src/test/ui/macros/nonterminal-matching.rs b/tests/ui/macros/nonterminal-matching.rs similarity index 100% rename from src/test/ui/macros/nonterminal-matching.rs rename to tests/ui/macros/nonterminal-matching.rs diff --git a/src/test/ui/macros/nonterminal-matching.stderr b/tests/ui/macros/nonterminal-matching.stderr similarity index 100% rename from src/test/ui/macros/nonterminal-matching.stderr rename to tests/ui/macros/nonterminal-matching.stderr diff --git a/src/test/ui/macros/not-utf8.bin b/tests/ui/macros/not-utf8.bin similarity index 100% rename from src/test/ui/macros/not-utf8.bin rename to tests/ui/macros/not-utf8.bin diff --git a/src/test/ui/macros/not-utf8.rs b/tests/ui/macros/not-utf8.rs similarity index 100% rename from src/test/ui/macros/not-utf8.rs rename to tests/ui/macros/not-utf8.rs diff --git a/src/test/ui/macros/not-utf8.stderr b/tests/ui/macros/not-utf8.stderr similarity index 100% rename from src/test/ui/macros/not-utf8.stderr rename to tests/ui/macros/not-utf8.stderr diff --git a/src/test/ui/macros/out-of-order-shadowing.rs b/tests/ui/macros/out-of-order-shadowing.rs similarity index 100% rename from src/test/ui/macros/out-of-order-shadowing.rs rename to tests/ui/macros/out-of-order-shadowing.rs diff --git a/src/test/ui/macros/out-of-order-shadowing.stderr b/tests/ui/macros/out-of-order-shadowing.stderr similarity index 100% rename from src/test/ui/macros/out-of-order-shadowing.stderr rename to tests/ui/macros/out-of-order-shadowing.stderr diff --git a/src/test/ui/macros/parse-complex-macro-invoc-op.rs b/tests/ui/macros/parse-complex-macro-invoc-op.rs similarity index 100% rename from src/test/ui/macros/parse-complex-macro-invoc-op.rs rename to tests/ui/macros/parse-complex-macro-invoc-op.rs diff --git a/src/test/ui/macros/paths-in-macro-invocations.rs b/tests/ui/macros/paths-in-macro-invocations.rs similarity index 100% rename from src/test/ui/macros/paths-in-macro-invocations.rs rename to tests/ui/macros/paths-in-macro-invocations.rs diff --git a/src/test/ui/macros/proc_macro.rs b/tests/ui/macros/proc_macro.rs similarity index 100% rename from src/test/ui/macros/proc_macro.rs rename to tests/ui/macros/proc_macro.rs diff --git a/src/test/ui/macros/pub-item-inside-macro.rs b/tests/ui/macros/pub-item-inside-macro.rs similarity index 100% rename from src/test/ui/macros/pub-item-inside-macro.rs rename to tests/ui/macros/pub-item-inside-macro.rs diff --git a/src/test/ui/macros/pub-method-inside-macro.rs b/tests/ui/macros/pub-method-inside-macro.rs similarity index 100% rename from src/test/ui/macros/pub-method-inside-macro.rs rename to tests/ui/macros/pub-method-inside-macro.rs diff --git a/src/test/ui/macros/recovery-allowed.rs b/tests/ui/macros/recovery-allowed.rs similarity index 100% rename from src/test/ui/macros/recovery-allowed.rs rename to tests/ui/macros/recovery-allowed.rs diff --git a/src/test/ui/macros/recovery-allowed.stderr b/tests/ui/macros/recovery-allowed.stderr similarity index 100% rename from src/test/ui/macros/recovery-allowed.stderr rename to tests/ui/macros/recovery-allowed.stderr diff --git a/src/test/ui/macros/recovery-forbidden.rs b/tests/ui/macros/recovery-forbidden.rs similarity index 100% rename from src/test/ui/macros/recovery-forbidden.rs rename to tests/ui/macros/recovery-forbidden.rs diff --git a/src/test/ui/macros/restricted-shadowing-legacy.rs b/tests/ui/macros/restricted-shadowing-legacy.rs similarity index 100% rename from src/test/ui/macros/restricted-shadowing-legacy.rs rename to tests/ui/macros/restricted-shadowing-legacy.rs diff --git a/src/test/ui/macros/restricted-shadowing-legacy.stderr b/tests/ui/macros/restricted-shadowing-legacy.stderr similarity index 100% rename from src/test/ui/macros/restricted-shadowing-legacy.stderr rename to tests/ui/macros/restricted-shadowing-legacy.stderr diff --git a/src/test/ui/macros/restricted-shadowing-modern.rs b/tests/ui/macros/restricted-shadowing-modern.rs similarity index 100% rename from src/test/ui/macros/restricted-shadowing-modern.rs rename to tests/ui/macros/restricted-shadowing-modern.rs diff --git a/src/test/ui/macros/restricted-shadowing-modern.stderr b/tests/ui/macros/restricted-shadowing-modern.stderr similarity index 100% rename from src/test/ui/macros/restricted-shadowing-modern.stderr rename to tests/ui/macros/restricted-shadowing-modern.stderr diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/all-not-available-cases.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/all-not-available-cases.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/all-not-available-cases.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/all-not-available-cases.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/assert-with-custom-errors-does-not-create-unnecessary-code.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/assert-with-custom-errors-does-not-create-unnecessary-code.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/assert-with-custom-errors-does-not-create-unnecessary-code.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/assert-with-custom-errors-does-not-create-unnecessary-code.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/assert-without-captures-does-not-create-unnecessary-code.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/assert-without-captures-does-not-create-unnecessary-code.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/assert-without-captures-does-not-create-unnecessary-code.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/assert-without-captures-does-not-create-unnecessary-code.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/auxiliary/common.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/auxiliary/common.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/auxiliary/common.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/auxiliary/common.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/feature-gate-generic_assert.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/feature-gate-generic_assert.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/feature-gate-generic_assert.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/feature-gate-generic_assert.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.rs b/tests/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.rs similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.rs rename to tests/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.rs diff --git a/src/test/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.stdout b/tests/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.stdout similarity index 100% rename from src/test/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.stdout rename to tests/ui/macros/rfc-2011-nicer-assert-messages/non-consuming-methods-have-optimized-codegen.stdout diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/count-and-length-are-distinct.rs b/tests/ui/macros/rfc-3086-metavar-expr/count-and-length-are-distinct.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/count-and-length-are-distinct.rs rename to tests/ui/macros/rfc-3086-metavar-expr/count-and-length-are-distinct.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/dollar-dollar-has-correct-behavior.rs b/tests/ui/macros/rfc-3086-metavar-expr/dollar-dollar-has-correct-behavior.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/dollar-dollar-has-correct-behavior.rs rename to tests/ui/macros/rfc-3086-metavar-expr/dollar-dollar-has-correct-behavior.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/feature-gate-macro_metavar_expr.rs b/tests/ui/macros/rfc-3086-metavar-expr/feature-gate-macro_metavar_expr.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/feature-gate-macro_metavar_expr.rs rename to tests/ui/macros/rfc-3086-metavar-expr/feature-gate-macro_metavar_expr.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/macro-expansion.rs b/tests/ui/macros/rfc-3086-metavar-expr/macro-expansion.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/macro-expansion.rs rename to tests/ui/macros/rfc-3086-metavar-expr/macro-expansion.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.rs b/tests/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.rs rename to tests/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.stderr b/tests/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.stderr similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.stderr rename to tests/ui/macros/rfc-3086-metavar-expr/out-of-bounds-arguments.stderr diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/required-feature.rs b/tests/ui/macros/rfc-3086-metavar-expr/required-feature.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/required-feature.rs rename to tests/ui/macros/rfc-3086-metavar-expr/required-feature.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/required-feature.stderr b/tests/ui/macros/rfc-3086-metavar-expr/required-feature.stderr similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/required-feature.stderr rename to tests/ui/macros/rfc-3086-metavar-expr/required-feature.stderr diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/syntax-errors.rs b/tests/ui/macros/rfc-3086-metavar-expr/syntax-errors.rs similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/syntax-errors.rs rename to tests/ui/macros/rfc-3086-metavar-expr/syntax-errors.rs diff --git a/src/test/ui/macros/rfc-3086-metavar-expr/syntax-errors.stderr b/tests/ui/macros/rfc-3086-metavar-expr/syntax-errors.stderr similarity index 100% rename from src/test/ui/macros/rfc-3086-metavar-expr/syntax-errors.stderr rename to tests/ui/macros/rfc-3086-metavar-expr/syntax-errors.stderr diff --git a/src/test/ui/macros/same-sequence-span.rs b/tests/ui/macros/same-sequence-span.rs similarity index 100% rename from src/test/ui/macros/same-sequence-span.rs rename to tests/ui/macros/same-sequence-span.rs diff --git a/src/test/ui/macros/same-sequence-span.stderr b/tests/ui/macros/same-sequence-span.stderr similarity index 100% rename from src/test/ui/macros/same-sequence-span.stderr rename to tests/ui/macros/same-sequence-span.stderr diff --git a/src/test/ui/macros/semi-after-macro-ty.rs b/tests/ui/macros/semi-after-macro-ty.rs similarity index 100% rename from src/test/ui/macros/semi-after-macro-ty.rs rename to tests/ui/macros/semi-after-macro-ty.rs diff --git a/src/test/ui/macros/span-covering-argument-1.rs b/tests/ui/macros/span-covering-argument-1.rs similarity index 100% rename from src/test/ui/macros/span-covering-argument-1.rs rename to tests/ui/macros/span-covering-argument-1.rs diff --git a/src/test/ui/macros/span-covering-argument-1.stderr b/tests/ui/macros/span-covering-argument-1.stderr similarity index 100% rename from src/test/ui/macros/span-covering-argument-1.stderr rename to tests/ui/macros/span-covering-argument-1.stderr diff --git a/src/test/ui/macros/stmt_expr_attr_macro_parse.rs b/tests/ui/macros/stmt_expr_attr_macro_parse.rs similarity index 100% rename from src/test/ui/macros/stmt_expr_attr_macro_parse.rs rename to tests/ui/macros/stmt_expr_attr_macro_parse.rs diff --git a/src/test/ui/macros/stringify.rs b/tests/ui/macros/stringify.rs similarity index 100% rename from src/test/ui/macros/stringify.rs rename to tests/ui/macros/stringify.rs diff --git a/src/test/ui/macros/syntax-error-recovery.rs b/tests/ui/macros/syntax-error-recovery.rs similarity index 100% rename from src/test/ui/macros/syntax-error-recovery.rs rename to tests/ui/macros/syntax-error-recovery.rs diff --git a/src/test/ui/macros/syntax-error-recovery.stderr b/tests/ui/macros/syntax-error-recovery.stderr similarity index 100% rename from src/test/ui/macros/syntax-error-recovery.stderr rename to tests/ui/macros/syntax-error-recovery.stderr diff --git a/src/test/ui/macros/syntax-extension-cfg.rs b/tests/ui/macros/syntax-extension-cfg.rs similarity index 100% rename from src/test/ui/macros/syntax-extension-cfg.rs rename to tests/ui/macros/syntax-extension-cfg.rs diff --git a/src/test/ui/macros/syntax-extension-source-utils-files/includeme.fragment b/tests/ui/macros/syntax-extension-source-utils-files/includeme.fragment similarity index 100% rename from src/test/ui/macros/syntax-extension-source-utils-files/includeme.fragment rename to tests/ui/macros/syntax-extension-source-utils-files/includeme.fragment diff --git a/src/test/ui/macros/syntax-extension-source-utils.rs b/tests/ui/macros/syntax-extension-source-utils.rs similarity index 100% rename from src/test/ui/macros/syntax-extension-source-utils.rs rename to tests/ui/macros/syntax-extension-source-utils.rs diff --git a/src/test/ui/macros/trace-macro.rs b/tests/ui/macros/trace-macro.rs similarity index 100% rename from src/test/ui/macros/trace-macro.rs rename to tests/ui/macros/trace-macro.rs diff --git a/src/test/ui/macros/trace-macro.stderr b/tests/ui/macros/trace-macro.stderr similarity index 100% rename from src/test/ui/macros/trace-macro.stderr rename to tests/ui/macros/trace-macro.stderr diff --git a/src/test/ui/macros/trace_faulty_macros.rs b/tests/ui/macros/trace_faulty_macros.rs similarity index 100% rename from src/test/ui/macros/trace_faulty_macros.rs rename to tests/ui/macros/trace_faulty_macros.rs diff --git a/src/test/ui/macros/trace_faulty_macros.stderr b/tests/ui/macros/trace_faulty_macros.stderr similarity index 100% rename from src/test/ui/macros/trace_faulty_macros.stderr rename to tests/ui/macros/trace_faulty_macros.stderr diff --git a/src/test/ui/macros/trace_macros-format.rs b/tests/ui/macros/trace_macros-format.rs similarity index 100% rename from src/test/ui/macros/trace_macros-format.rs rename to tests/ui/macros/trace_macros-format.rs diff --git a/src/test/ui/macros/trace_macros-format.stderr b/tests/ui/macros/trace_macros-format.stderr similarity index 100% rename from src/test/ui/macros/trace_macros-format.stderr rename to tests/ui/macros/trace_macros-format.stderr diff --git a/src/test/ui/macros/try-macro.rs b/tests/ui/macros/try-macro.rs similarity index 100% rename from src/test/ui/macros/try-macro.rs rename to tests/ui/macros/try-macro.rs diff --git a/src/test/ui/macros/two-macro-use.rs b/tests/ui/macros/two-macro-use.rs similarity index 100% rename from src/test/ui/macros/two-macro-use.rs rename to tests/ui/macros/two-macro-use.rs diff --git a/src/test/ui/macros/type-macros-hlist.rs b/tests/ui/macros/type-macros-hlist.rs similarity index 100% rename from src/test/ui/macros/type-macros-hlist.rs rename to tests/ui/macros/type-macros-hlist.rs diff --git a/src/test/ui/macros/type-macros-simple.rs b/tests/ui/macros/type-macros-simple.rs similarity index 100% rename from src/test/ui/macros/type-macros-simple.rs rename to tests/ui/macros/type-macros-simple.rs diff --git a/src/test/ui/macros/typeck-macro-interaction-issue-8852.rs b/tests/ui/macros/typeck-macro-interaction-issue-8852.rs similarity index 100% rename from src/test/ui/macros/typeck-macro-interaction-issue-8852.rs rename to tests/ui/macros/typeck-macro-interaction-issue-8852.rs diff --git a/src/test/ui/macros/unimplemented-macro-panic.rs b/tests/ui/macros/unimplemented-macro-panic.rs similarity index 100% rename from src/test/ui/macros/unimplemented-macro-panic.rs rename to tests/ui/macros/unimplemented-macro-panic.rs diff --git a/src/test/ui/macros/unknown-builtin.rs b/tests/ui/macros/unknown-builtin.rs similarity index 100% rename from src/test/ui/macros/unknown-builtin.rs rename to tests/ui/macros/unknown-builtin.rs diff --git a/src/test/ui/macros/unknown-builtin.stderr b/tests/ui/macros/unknown-builtin.stderr similarity index 100% rename from src/test/ui/macros/unknown-builtin.stderr rename to tests/ui/macros/unknown-builtin.stderr diff --git a/src/test/ui/macros/unreachable-arg.edition_2021.stderr b/tests/ui/macros/unreachable-arg.edition_2021.stderr similarity index 100% rename from src/test/ui/macros/unreachable-arg.edition_2021.stderr rename to tests/ui/macros/unreachable-arg.edition_2021.stderr diff --git a/src/test/ui/macros/unreachable-arg.rs b/tests/ui/macros/unreachable-arg.rs similarity index 100% rename from src/test/ui/macros/unreachable-arg.rs rename to tests/ui/macros/unreachable-arg.rs diff --git a/src/test/ui/macros/unreachable-fmt-msg.rs b/tests/ui/macros/unreachable-fmt-msg.rs similarity index 100% rename from src/test/ui/macros/unreachable-fmt-msg.rs rename to tests/ui/macros/unreachable-fmt-msg.rs diff --git a/src/test/ui/macros/unreachable-format-arg.rs b/tests/ui/macros/unreachable-format-arg.rs similarity index 100% rename from src/test/ui/macros/unreachable-format-arg.rs rename to tests/ui/macros/unreachable-format-arg.rs diff --git a/src/test/ui/macros/unreachable-format-args.edition_2015.stderr b/tests/ui/macros/unreachable-format-args.edition_2015.stderr similarity index 100% rename from src/test/ui/macros/unreachable-format-args.edition_2015.stderr rename to tests/ui/macros/unreachable-format-args.edition_2015.stderr diff --git a/src/test/ui/macros/unreachable-format-args.rs b/tests/ui/macros/unreachable-format-args.rs similarity index 100% rename from src/test/ui/macros/unreachable-format-args.rs rename to tests/ui/macros/unreachable-format-args.rs diff --git a/src/test/ui/macros/unreachable-macro-panic.rs b/tests/ui/macros/unreachable-macro-panic.rs similarity index 100% rename from src/test/ui/macros/unreachable-macro-panic.rs rename to tests/ui/macros/unreachable-macro-panic.rs diff --git a/src/test/ui/macros/unreachable-static-msg.rs b/tests/ui/macros/unreachable-static-msg.rs similarity index 100% rename from src/test/ui/macros/unreachable-static-msg.rs rename to tests/ui/macros/unreachable-static-msg.rs diff --git a/src/test/ui/macros/unreachable.rs b/tests/ui/macros/unreachable.rs similarity index 100% rename from src/test/ui/macros/unreachable.rs rename to tests/ui/macros/unreachable.rs diff --git a/src/test/ui/macros/use-macro-self.rs b/tests/ui/macros/use-macro-self.rs similarity index 100% rename from src/test/ui/macros/use-macro-self.rs rename to tests/ui/macros/use-macro-self.rs diff --git a/src/test/ui/macros/vec-macro-in-pattern.rs b/tests/ui/macros/vec-macro-in-pattern.rs similarity index 100% rename from src/test/ui/macros/vec-macro-in-pattern.rs rename to tests/ui/macros/vec-macro-in-pattern.rs diff --git a/src/test/ui/macros/vec-macro-in-pattern.stderr b/tests/ui/macros/vec-macro-in-pattern.stderr similarity index 100% rename from src/test/ui/macros/vec-macro-in-pattern.stderr rename to tests/ui/macros/vec-macro-in-pattern.stderr diff --git a/src/test/ui/main-wrong-location.rs b/tests/ui/main-wrong-location.rs similarity index 100% rename from src/test/ui/main-wrong-location.rs rename to tests/ui/main-wrong-location.rs diff --git a/src/test/ui/main-wrong-location.stderr b/tests/ui/main-wrong-location.stderr similarity index 100% rename from src/test/ui/main-wrong-location.stderr rename to tests/ui/main-wrong-location.stderr diff --git a/src/test/ui/main-wrong-type.rs b/tests/ui/main-wrong-type.rs similarity index 100% rename from src/test/ui/main-wrong-type.rs rename to tests/ui/main-wrong-type.rs diff --git a/src/test/ui/main-wrong-type.stderr b/tests/ui/main-wrong-type.stderr similarity index 100% rename from src/test/ui/main-wrong-type.stderr rename to tests/ui/main-wrong-type.stderr diff --git a/src/test/ui/malformed/issue-69341-malformed-derive-inert.rs b/tests/ui/malformed/issue-69341-malformed-derive-inert.rs similarity index 100% rename from src/test/ui/malformed/issue-69341-malformed-derive-inert.rs rename to tests/ui/malformed/issue-69341-malformed-derive-inert.rs diff --git a/src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr b/tests/ui/malformed/issue-69341-malformed-derive-inert.stderr similarity index 100% rename from src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr rename to tests/ui/malformed/issue-69341-malformed-derive-inert.stderr diff --git a/src/test/ui/malformed/malformed-derive-entry.rs b/tests/ui/malformed/malformed-derive-entry.rs similarity index 100% rename from src/test/ui/malformed/malformed-derive-entry.rs rename to tests/ui/malformed/malformed-derive-entry.rs diff --git a/src/test/ui/malformed/malformed-derive-entry.stderr b/tests/ui/malformed/malformed-derive-entry.stderr similarity index 100% rename from src/test/ui/malformed/malformed-derive-entry.stderr rename to tests/ui/malformed/malformed-derive-entry.stderr diff --git a/src/test/ui/malformed/malformed-interpolated.rs b/tests/ui/malformed/malformed-interpolated.rs similarity index 100% rename from src/test/ui/malformed/malformed-interpolated.rs rename to tests/ui/malformed/malformed-interpolated.rs diff --git a/src/test/ui/malformed/malformed-interpolated.stderr b/tests/ui/malformed/malformed-interpolated.stderr similarity index 100% rename from src/test/ui/malformed/malformed-interpolated.stderr rename to tests/ui/malformed/malformed-interpolated.stderr diff --git a/src/test/ui/malformed/malformed-meta-delim.rs b/tests/ui/malformed/malformed-meta-delim.rs similarity index 100% rename from src/test/ui/malformed/malformed-meta-delim.rs rename to tests/ui/malformed/malformed-meta-delim.rs diff --git a/src/test/ui/malformed/malformed-meta-delim.stderr b/tests/ui/malformed/malformed-meta-delim.stderr similarity index 100% rename from src/test/ui/malformed/malformed-meta-delim.stderr rename to tests/ui/malformed/malformed-meta-delim.stderr diff --git a/src/test/ui/malformed/malformed-plugin-1.rs b/tests/ui/malformed/malformed-plugin-1.rs similarity index 100% rename from src/test/ui/malformed/malformed-plugin-1.rs rename to tests/ui/malformed/malformed-plugin-1.rs diff --git a/src/test/ui/malformed/malformed-plugin-1.stderr b/tests/ui/malformed/malformed-plugin-1.stderr similarity index 100% rename from src/test/ui/malformed/malformed-plugin-1.stderr rename to tests/ui/malformed/malformed-plugin-1.stderr diff --git a/src/test/ui/malformed/malformed-plugin-2.rs b/tests/ui/malformed/malformed-plugin-2.rs similarity index 100% rename from src/test/ui/malformed/malformed-plugin-2.rs rename to tests/ui/malformed/malformed-plugin-2.rs diff --git a/src/test/ui/malformed/malformed-plugin-2.stderr b/tests/ui/malformed/malformed-plugin-2.stderr similarity index 100% rename from src/test/ui/malformed/malformed-plugin-2.stderr rename to tests/ui/malformed/malformed-plugin-2.stderr diff --git a/src/test/ui/malformed/malformed-plugin-3.rs b/tests/ui/malformed/malformed-plugin-3.rs similarity index 100% rename from src/test/ui/malformed/malformed-plugin-3.rs rename to tests/ui/malformed/malformed-plugin-3.rs diff --git a/src/test/ui/malformed/malformed-plugin-3.stderr b/tests/ui/malformed/malformed-plugin-3.stderr similarity index 100% rename from src/test/ui/malformed/malformed-plugin-3.stderr rename to tests/ui/malformed/malformed-plugin-3.stderr diff --git a/src/test/ui/malformed/malformed-regressions.rs b/tests/ui/malformed/malformed-regressions.rs similarity index 100% rename from src/test/ui/malformed/malformed-regressions.rs rename to tests/ui/malformed/malformed-regressions.rs diff --git a/src/test/ui/malformed/malformed-regressions.stderr b/tests/ui/malformed/malformed-regressions.stderr similarity index 100% rename from src/test/ui/malformed/malformed-regressions.stderr rename to tests/ui/malformed/malformed-regressions.stderr diff --git a/src/test/ui/malformed/malformed-special-attrs.rs b/tests/ui/malformed/malformed-special-attrs.rs similarity index 100% rename from src/test/ui/malformed/malformed-special-attrs.rs rename to tests/ui/malformed/malformed-special-attrs.rs diff --git a/src/test/ui/malformed/malformed-special-attrs.stderr b/tests/ui/malformed/malformed-special-attrs.stderr similarity index 100% rename from src/test/ui/malformed/malformed-special-attrs.stderr rename to tests/ui/malformed/malformed-special-attrs.stderr diff --git a/src/test/ui/manual/manual-link-bad-form.rs b/tests/ui/manual/manual-link-bad-form.rs similarity index 100% rename from src/test/ui/manual/manual-link-bad-form.rs rename to tests/ui/manual/manual-link-bad-form.rs diff --git a/src/test/ui/manual/manual-link-bad-form.stderr b/tests/ui/manual/manual-link-bad-form.stderr similarity index 100% rename from src/test/ui/manual/manual-link-bad-form.stderr rename to tests/ui/manual/manual-link-bad-form.stderr diff --git a/src/test/ui/manual/manual-link-bad-kind.rs b/tests/ui/manual/manual-link-bad-kind.rs similarity index 100% rename from src/test/ui/manual/manual-link-bad-kind.rs rename to tests/ui/manual/manual-link-bad-kind.rs diff --git a/src/test/ui/manual/manual-link-bad-kind.stderr b/tests/ui/manual/manual-link-bad-kind.stderr similarity index 100% rename from src/test/ui/manual/manual-link-bad-kind.stderr rename to tests/ui/manual/manual-link-bad-kind.stderr diff --git a/src/test/ui/manual/manual-link-bad-search-path.rs b/tests/ui/manual/manual-link-bad-search-path.rs similarity index 100% rename from src/test/ui/manual/manual-link-bad-search-path.rs rename to tests/ui/manual/manual-link-bad-search-path.rs diff --git a/src/test/ui/manual/manual-link-bad-search-path.stderr b/tests/ui/manual/manual-link-bad-search-path.stderr similarity index 100% rename from src/test/ui/manual/manual-link-bad-search-path.stderr rename to tests/ui/manual/manual-link-bad-search-path.stderr diff --git a/src/test/ui/manual/manual-link-framework.rs b/tests/ui/manual/manual-link-framework.rs similarity index 100% rename from src/test/ui/manual/manual-link-framework.rs rename to tests/ui/manual/manual-link-framework.rs diff --git a/src/test/ui/manual/manual-link-framework.stderr b/tests/ui/manual/manual-link-framework.stderr similarity index 100% rename from src/test/ui/manual/manual-link-framework.stderr rename to tests/ui/manual/manual-link-framework.stderr diff --git a/src/test/ui/manual/manual-link-unsupported-kind.rs b/tests/ui/manual/manual-link-unsupported-kind.rs similarity index 100% rename from src/test/ui/manual/manual-link-unsupported-kind.rs rename to tests/ui/manual/manual-link-unsupported-kind.rs diff --git a/src/test/ui/manual/manual-link-unsupported-kind.stderr b/tests/ui/manual/manual-link-unsupported-kind.stderr similarity index 100% rename from src/test/ui/manual/manual-link-unsupported-kind.stderr rename to tests/ui/manual/manual-link-unsupported-kind.stderr diff --git a/src/test/ui/marker_trait_attr/issue-61651-type-mismatch.rs b/tests/ui/marker_trait_attr/issue-61651-type-mismatch.rs similarity index 100% rename from src/test/ui/marker_trait_attr/issue-61651-type-mismatch.rs rename to tests/ui/marker_trait_attr/issue-61651-type-mismatch.rs diff --git a/src/test/ui/marker_trait_attr/marker-attribute-on-non-trait.rs b/tests/ui/marker_trait_attr/marker-attribute-on-non-trait.rs similarity index 100% rename from src/test/ui/marker_trait_attr/marker-attribute-on-non-trait.rs rename to tests/ui/marker_trait_attr/marker-attribute-on-non-trait.rs diff --git a/src/test/ui/marker_trait_attr/marker-attribute-on-non-trait.stderr b/tests/ui/marker_trait_attr/marker-attribute-on-non-trait.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/marker-attribute-on-non-trait.stderr rename to tests/ui/marker_trait_attr/marker-attribute-on-non-trait.stderr diff --git a/src/test/ui/marker_trait_attr/marker-attribute-with-values.rs b/tests/ui/marker_trait_attr/marker-attribute-with-values.rs similarity index 100% rename from src/test/ui/marker_trait_attr/marker-attribute-with-values.rs rename to tests/ui/marker_trait_attr/marker-attribute-with-values.rs diff --git a/src/test/ui/marker_trait_attr/marker-attribute-with-values.stderr b/tests/ui/marker_trait_attr/marker-attribute-with-values.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/marker-attribute-with-values.stderr rename to tests/ui/marker_trait_attr/marker-attribute-with-values.stderr diff --git a/src/test/ui/marker_trait_attr/marker-trait-with-associated-items.rs b/tests/ui/marker_trait_attr/marker-trait-with-associated-items.rs similarity index 100% rename from src/test/ui/marker_trait_attr/marker-trait-with-associated-items.rs rename to tests/ui/marker_trait_attr/marker-trait-with-associated-items.rs diff --git a/src/test/ui/marker_trait_attr/marker-trait-with-associated-items.stderr b/tests/ui/marker_trait_attr/marker-trait-with-associated-items.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/marker-trait-with-associated-items.stderr rename to tests/ui/marker_trait_attr/marker-trait-with-associated-items.stderr diff --git a/src/test/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.rs b/tests/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.rs rename to tests/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.rs diff --git a/src/test/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.stderr b/tests/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.stderr rename to tests/ui/marker_trait_attr/overlap-doesnt-conflict-with-specialization.stderr diff --git a/src/test/ui/marker_trait_attr/overlap-marker-trait-with-static-lifetime.rs b/tests/ui/marker_trait_attr/overlap-marker-trait-with-static-lifetime.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-marker-trait-with-static-lifetime.rs rename to tests/ui/marker_trait_attr/overlap-marker-trait-with-static-lifetime.rs diff --git a/src/test/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.rs b/tests/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.rs rename to tests/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.rs diff --git a/src/test/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.stderr b/tests/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.stderr rename to tests/ui/marker_trait_attr/overlap-marker-trait-with-underscore-lifetime.stderr diff --git a/src/test/ui/marker_trait_attr/overlap-marker-trait.rs b/tests/ui/marker_trait_attr/overlap-marker-trait.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-marker-trait.rs rename to tests/ui/marker_trait_attr/overlap-marker-trait.rs diff --git a/src/test/ui/marker_trait_attr/overlap-marker-trait.stderr b/tests/ui/marker_trait_attr/overlap-marker-trait.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-marker-trait.stderr rename to tests/ui/marker_trait_attr/overlap-marker-trait.stderr diff --git a/src/test/ui/marker_trait_attr/overlap-permitted-for-annotated-marker-traits.rs b/tests/ui/marker_trait_attr/overlap-permitted-for-annotated-marker-traits.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlap-permitted-for-annotated-marker-traits.rs rename to tests/ui/marker_trait_attr/overlap-permitted-for-annotated-marker-traits.rs diff --git a/src/test/ui/marker_trait_attr/overlapping-impl-1-modulo-regions.rs b/tests/ui/marker_trait_attr/overlapping-impl-1-modulo-regions.rs similarity index 100% rename from src/test/ui/marker_trait_attr/overlapping-impl-1-modulo-regions.rs rename to tests/ui/marker_trait_attr/overlapping-impl-1-modulo-regions.rs diff --git a/src/test/ui/marker_trait_attr/override-item-on-marker-trait.rs b/tests/ui/marker_trait_attr/override-item-on-marker-trait.rs similarity index 100% rename from src/test/ui/marker_trait_attr/override-item-on-marker-trait.rs rename to tests/ui/marker_trait_attr/override-item-on-marker-trait.rs diff --git a/src/test/ui/marker_trait_attr/override-item-on-marker-trait.stderr b/tests/ui/marker_trait_attr/override-item-on-marker-trait.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/override-item-on-marker-trait.stderr rename to tests/ui/marker_trait_attr/override-item-on-marker-trait.stderr diff --git a/src/test/ui/marker_trait_attr/region-overlap.rs b/tests/ui/marker_trait_attr/region-overlap.rs similarity index 100% rename from src/test/ui/marker_trait_attr/region-overlap.rs rename to tests/ui/marker_trait_attr/region-overlap.rs diff --git a/src/test/ui/marker_trait_attr/region-overlap.stderr b/tests/ui/marker_trait_attr/region-overlap.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/region-overlap.stderr rename to tests/ui/marker_trait_attr/region-overlap.stderr diff --git a/src/test/ui/marker_trait_attr/unsound-overlap.rs b/tests/ui/marker_trait_attr/unsound-overlap.rs similarity index 100% rename from src/test/ui/marker_trait_attr/unsound-overlap.rs rename to tests/ui/marker_trait_attr/unsound-overlap.rs diff --git a/src/test/ui/marker_trait_attr/unsound-overlap.stderr b/tests/ui/marker_trait_attr/unsound-overlap.stderr similarity index 100% rename from src/test/ui/marker_trait_attr/unsound-overlap.stderr rename to tests/ui/marker_trait_attr/unsound-overlap.stderr diff --git a/src/test/ui/match/auxiliary/match_non_exhaustive_lib.rs b/tests/ui/match/auxiliary/match_non_exhaustive_lib.rs similarity index 100% rename from src/test/ui/match/auxiliary/match_non_exhaustive_lib.rs rename to tests/ui/match/auxiliary/match_non_exhaustive_lib.rs diff --git a/src/test/ui/match/const_non_normal_zst_ref_pattern.rs b/tests/ui/match/const_non_normal_zst_ref_pattern.rs similarity index 100% rename from src/test/ui/match/const_non_normal_zst_ref_pattern.rs rename to tests/ui/match/const_non_normal_zst_ref_pattern.rs diff --git a/src/test/ui/match/expr-match-panic-fn.rs b/tests/ui/match/expr-match-panic-fn.rs similarity index 100% rename from src/test/ui/match/expr-match-panic-fn.rs rename to tests/ui/match/expr-match-panic-fn.rs diff --git a/src/test/ui/match/expr-match-panic.rs b/tests/ui/match/expr-match-panic.rs similarity index 100% rename from src/test/ui/match/expr-match-panic.rs rename to tests/ui/match/expr-match-panic.rs diff --git a/src/test/ui/match/expr_before_ident_pat.rs b/tests/ui/match/expr_before_ident_pat.rs similarity index 100% rename from src/test/ui/match/expr_before_ident_pat.rs rename to tests/ui/match/expr_before_ident_pat.rs diff --git a/src/test/ui/match/expr_before_ident_pat.stderr b/tests/ui/match/expr_before_ident_pat.stderr similarity index 100% rename from src/test/ui/match/expr_before_ident_pat.stderr rename to tests/ui/match/expr_before_ident_pat.stderr diff --git a/src/test/ui/match/guards.rs b/tests/ui/match/guards.rs similarity index 100% rename from src/test/ui/match/guards.rs rename to tests/ui/match/guards.rs diff --git a/src/test/ui/match/issue-11319.rs b/tests/ui/match/issue-11319.rs similarity index 100% rename from src/test/ui/match/issue-11319.rs rename to tests/ui/match/issue-11319.rs diff --git a/src/test/ui/match/issue-11319.stderr b/tests/ui/match/issue-11319.stderr similarity index 100% rename from src/test/ui/match/issue-11319.stderr rename to tests/ui/match/issue-11319.stderr diff --git a/src/test/ui/match/issue-11940.rs b/tests/ui/match/issue-11940.rs similarity index 100% rename from src/test/ui/match/issue-11940.rs rename to tests/ui/match/issue-11940.rs diff --git a/src/test/ui/match/issue-12552.rs b/tests/ui/match/issue-12552.rs similarity index 100% rename from src/test/ui/match/issue-12552.rs rename to tests/ui/match/issue-12552.rs diff --git a/src/test/ui/match/issue-12552.stderr b/tests/ui/match/issue-12552.stderr similarity index 100% rename from src/test/ui/match/issue-12552.stderr rename to tests/ui/match/issue-12552.stderr diff --git a/src/test/ui/match/issue-18060.rs b/tests/ui/match/issue-18060.rs similarity index 100% rename from src/test/ui/match/issue-18060.rs rename to tests/ui/match/issue-18060.rs diff --git a/src/test/ui/match/issue-26251.rs b/tests/ui/match/issue-26251.rs similarity index 100% rename from src/test/ui/match/issue-26251.rs rename to tests/ui/match/issue-26251.rs diff --git a/src/test/ui/match/issue-26996.rs b/tests/ui/match/issue-26996.rs similarity index 100% rename from src/test/ui/match/issue-26996.rs rename to tests/ui/match/issue-26996.rs diff --git a/src/test/ui/match/issue-27021.rs b/tests/ui/match/issue-27021.rs similarity index 100% rename from src/test/ui/match/issue-27021.rs rename to tests/ui/match/issue-27021.rs diff --git a/src/test/ui/match/issue-33498.rs b/tests/ui/match/issue-33498.rs similarity index 100% rename from src/test/ui/match/issue-33498.rs rename to tests/ui/match/issue-33498.rs diff --git a/src/test/ui/match/issue-41255.rs b/tests/ui/match/issue-41255.rs similarity index 100% rename from src/test/ui/match/issue-41255.rs rename to tests/ui/match/issue-41255.rs diff --git a/src/test/ui/match/issue-41255.stderr b/tests/ui/match/issue-41255.stderr similarity index 100% rename from src/test/ui/match/issue-41255.stderr rename to tests/ui/match/issue-41255.stderr diff --git a/src/test/ui/match/issue-42679.rs b/tests/ui/match/issue-42679.rs similarity index 100% rename from src/test/ui/match/issue-42679.rs rename to tests/ui/match/issue-42679.rs diff --git a/src/test/ui/match/issue-46920-byte-array-patterns.rs b/tests/ui/match/issue-46920-byte-array-patterns.rs similarity index 100% rename from src/test/ui/match/issue-46920-byte-array-patterns.rs rename to tests/ui/match/issue-46920-byte-array-patterns.rs diff --git a/src/test/ui/match/issue-5530.rs b/tests/ui/match/issue-5530.rs similarity index 100% rename from src/test/ui/match/issue-5530.rs rename to tests/ui/match/issue-5530.rs diff --git a/src/test/ui/match/issue-56685.rs b/tests/ui/match/issue-56685.rs similarity index 100% rename from src/test/ui/match/issue-56685.rs rename to tests/ui/match/issue-56685.rs diff --git a/src/test/ui/match/issue-56685.stderr b/tests/ui/match/issue-56685.stderr similarity index 100% rename from src/test/ui/match/issue-56685.stderr rename to tests/ui/match/issue-56685.stderr diff --git a/src/test/ui/match/issue-70972-dyn-trait.rs b/tests/ui/match/issue-70972-dyn-trait.rs similarity index 100% rename from src/test/ui/match/issue-70972-dyn-trait.rs rename to tests/ui/match/issue-70972-dyn-trait.rs diff --git a/src/test/ui/match/issue-70972-dyn-trait.stderr b/tests/ui/match/issue-70972-dyn-trait.stderr similarity index 100% rename from src/test/ui/match/issue-70972-dyn-trait.stderr rename to tests/ui/match/issue-70972-dyn-trait.stderr diff --git a/src/test/ui/match/issue-72680.rs b/tests/ui/match/issue-72680.rs similarity index 100% rename from src/test/ui/match/issue-72680.rs rename to tests/ui/match/issue-72680.rs diff --git a/src/test/ui/match/issue-72896.rs b/tests/ui/match/issue-72896.rs similarity index 100% rename from src/test/ui/match/issue-72896.rs rename to tests/ui/match/issue-72896.rs diff --git a/src/test/ui/match/issue-74050-end-span.rs b/tests/ui/match/issue-74050-end-span.rs similarity index 100% rename from src/test/ui/match/issue-74050-end-span.rs rename to tests/ui/match/issue-74050-end-span.rs diff --git a/src/test/ui/match/issue-74050-end-span.stderr b/tests/ui/match/issue-74050-end-span.stderr similarity index 100% rename from src/test/ui/match/issue-74050-end-span.stderr rename to tests/ui/match/issue-74050-end-span.stderr diff --git a/src/test/ui/match/issue-82392.rs b/tests/ui/match/issue-82392.rs similarity index 100% rename from src/test/ui/match/issue-82392.rs rename to tests/ui/match/issue-82392.rs diff --git a/src/test/ui/match/issue-82392.stdout b/tests/ui/match/issue-82392.stdout similarity index 100% rename from src/test/ui/match/issue-82392.stdout rename to tests/ui/match/issue-82392.stdout diff --git a/src/test/ui/match/issue-82866.rs b/tests/ui/match/issue-82866.rs similarity index 100% rename from src/test/ui/match/issue-82866.rs rename to tests/ui/match/issue-82866.rs diff --git a/src/test/ui/match/issue-82866.stderr b/tests/ui/match/issue-82866.stderr similarity index 100% rename from src/test/ui/match/issue-82866.stderr rename to tests/ui/match/issue-82866.stderr diff --git a/src/test/ui/match/issue-84434.rs b/tests/ui/match/issue-84434.rs similarity index 100% rename from src/test/ui/match/issue-84434.rs rename to tests/ui/match/issue-84434.rs diff --git a/src/test/ui/match/issue-91058.rs b/tests/ui/match/issue-91058.rs similarity index 100% rename from src/test/ui/match/issue-91058.rs rename to tests/ui/match/issue-91058.rs diff --git a/src/test/ui/match/issue-91058.stderr b/tests/ui/match/issue-91058.stderr similarity index 100% rename from src/test/ui/match/issue-91058.stderr rename to tests/ui/match/issue-91058.stderr diff --git a/src/test/ui/match/issue-92100.rs b/tests/ui/match/issue-92100.rs similarity index 100% rename from src/test/ui/match/issue-92100.rs rename to tests/ui/match/issue-92100.rs diff --git a/src/test/ui/match/issue-92100.stderr b/tests/ui/match/issue-92100.stderr similarity index 100% rename from src/test/ui/match/issue-92100.stderr rename to tests/ui/match/issue-92100.stderr diff --git a/src/test/ui/match/match-arm-resolving-to-never.rs b/tests/ui/match/match-arm-resolving-to-never.rs similarity index 100% rename from src/test/ui/match/match-arm-resolving-to-never.rs rename to tests/ui/match/match-arm-resolving-to-never.rs diff --git a/src/test/ui/match/match-arm-resolving-to-never.stderr b/tests/ui/match/match-arm-resolving-to-never.stderr similarity index 100% rename from src/test/ui/match/match-arm-resolving-to-never.stderr rename to tests/ui/match/match-arm-resolving-to-never.stderr diff --git a/src/test/ui/match/match-bot-panic.rs b/tests/ui/match/match-bot-panic.rs similarity index 100% rename from src/test/ui/match/match-bot-panic.rs rename to tests/ui/match/match-bot-panic.rs diff --git a/src/test/ui/match/match-disc-bot.rs b/tests/ui/match/match-disc-bot.rs similarity index 100% rename from src/test/ui/match/match-disc-bot.rs rename to tests/ui/match/match-disc-bot.rs diff --git a/src/test/ui/match/match-fn-call.rs b/tests/ui/match/match-fn-call.rs similarity index 100% rename from src/test/ui/match/match-fn-call.rs rename to tests/ui/match/match-fn-call.rs diff --git a/src/test/ui/match/match-fn-call.stderr b/tests/ui/match/match-fn-call.stderr similarity index 100% rename from src/test/ui/match/match-fn-call.stderr rename to tests/ui/match/match-fn-call.stderr diff --git a/src/test/ui/match/match-ill-type2.rs b/tests/ui/match/match-ill-type2.rs similarity index 100% rename from src/test/ui/match/match-ill-type2.rs rename to tests/ui/match/match-ill-type2.rs diff --git a/src/test/ui/match/match-ill-type2.stderr b/tests/ui/match/match-ill-type2.stderr similarity index 100% rename from src/test/ui/match/match-ill-type2.stderr rename to tests/ui/match/match-ill-type2.stderr diff --git a/src/test/ui/match/match-incompat-type-semi.rs b/tests/ui/match/match-incompat-type-semi.rs similarity index 100% rename from src/test/ui/match/match-incompat-type-semi.rs rename to tests/ui/match/match-incompat-type-semi.rs diff --git a/src/test/ui/match/match-incompat-type-semi.stderr b/tests/ui/match/match-incompat-type-semi.stderr similarity index 100% rename from src/test/ui/match/match-incompat-type-semi.stderr rename to tests/ui/match/match-incompat-type-semi.stderr diff --git a/src/test/ui/match/match-join.rs b/tests/ui/match/match-join.rs similarity index 100% rename from src/test/ui/match/match-join.rs rename to tests/ui/match/match-join.rs diff --git a/src/test/ui/match/match-join.stderr b/tests/ui/match/match-join.stderr similarity index 100% rename from src/test/ui/match/match-join.stderr rename to tests/ui/match/match-join.stderr diff --git a/src/test/ui/match/match-no-arms-unreachable-after.rs b/tests/ui/match/match-no-arms-unreachable-after.rs similarity index 100% rename from src/test/ui/match/match-no-arms-unreachable-after.rs rename to tests/ui/match/match-no-arms-unreachable-after.rs diff --git a/src/test/ui/match/match-no-arms-unreachable-after.stderr b/tests/ui/match/match-no-arms-unreachable-after.stderr similarity index 100% rename from src/test/ui/match/match-no-arms-unreachable-after.stderr rename to tests/ui/match/match-no-arms-unreachable-after.stderr diff --git a/src/test/ui/match/match-on-negative-integer-ranges.rs b/tests/ui/match/match-on-negative-integer-ranges.rs similarity index 100% rename from src/test/ui/match/match-on-negative-integer-ranges.rs rename to tests/ui/match/match-on-negative-integer-ranges.rs diff --git a/src/test/ui/match/match-pattern-field-mismatch-2.rs b/tests/ui/match/match-pattern-field-mismatch-2.rs similarity index 100% rename from src/test/ui/match/match-pattern-field-mismatch-2.rs rename to tests/ui/match/match-pattern-field-mismatch-2.rs diff --git a/src/test/ui/match/match-pattern-field-mismatch-2.stderr b/tests/ui/match/match-pattern-field-mismatch-2.stderr similarity index 100% rename from src/test/ui/match/match-pattern-field-mismatch-2.stderr rename to tests/ui/match/match-pattern-field-mismatch-2.stderr diff --git a/src/test/ui/match/match-pattern-field-mismatch.rs b/tests/ui/match/match-pattern-field-mismatch.rs similarity index 100% rename from src/test/ui/match/match-pattern-field-mismatch.rs rename to tests/ui/match/match-pattern-field-mismatch.rs diff --git a/src/test/ui/match/match-pattern-field-mismatch.stderr b/tests/ui/match/match-pattern-field-mismatch.stderr similarity index 100% rename from src/test/ui/match/match-pattern-field-mismatch.stderr rename to tests/ui/match/match-pattern-field-mismatch.stderr diff --git a/src/test/ui/match/match-range-fail-2.rs b/tests/ui/match/match-range-fail-2.rs similarity index 100% rename from src/test/ui/match/match-range-fail-2.rs rename to tests/ui/match/match-range-fail-2.rs diff --git a/src/test/ui/match/match-range-fail-2.stderr b/tests/ui/match/match-range-fail-2.stderr similarity index 100% rename from src/test/ui/match/match-range-fail-2.stderr rename to tests/ui/match/match-range-fail-2.stderr diff --git a/src/test/ui/match/match-range-fail.rs b/tests/ui/match/match-range-fail.rs similarity index 100% rename from src/test/ui/match/match-range-fail.rs rename to tests/ui/match/match-range-fail.rs diff --git a/src/test/ui/match/match-range-fail.stderr b/tests/ui/match/match-range-fail.stderr similarity index 100% rename from src/test/ui/match/match-range-fail.stderr rename to tests/ui/match/match-range-fail.stderr diff --git a/src/test/ui/match/match-ref-mut-invariance.rs b/tests/ui/match/match-ref-mut-invariance.rs similarity index 100% rename from src/test/ui/match/match-ref-mut-invariance.rs rename to tests/ui/match/match-ref-mut-invariance.rs diff --git a/src/test/ui/match/match-ref-mut-invariance.stderr b/tests/ui/match/match-ref-mut-invariance.stderr similarity index 100% rename from src/test/ui/match/match-ref-mut-invariance.stderr rename to tests/ui/match/match-ref-mut-invariance.stderr diff --git a/src/test/ui/match/match-ref-mut-let-invariance.rs b/tests/ui/match/match-ref-mut-let-invariance.rs similarity index 100% rename from src/test/ui/match/match-ref-mut-let-invariance.rs rename to tests/ui/match/match-ref-mut-let-invariance.rs diff --git a/src/test/ui/match/match-ref-mut-let-invariance.stderr b/tests/ui/match/match-ref-mut-let-invariance.stderr similarity index 100% rename from src/test/ui/match/match-ref-mut-let-invariance.stderr rename to tests/ui/match/match-ref-mut-let-invariance.stderr diff --git a/src/test/ui/match/match-ref-mut-stability.rs b/tests/ui/match/match-ref-mut-stability.rs similarity index 100% rename from src/test/ui/match/match-ref-mut-stability.rs rename to tests/ui/match/match-ref-mut-stability.rs diff --git a/src/test/ui/match/match-struct.rs b/tests/ui/match/match-struct.rs similarity index 100% rename from src/test/ui/match/match-struct.rs rename to tests/ui/match/match-struct.rs diff --git a/src/test/ui/match/match-struct.stderr b/tests/ui/match/match-struct.stderr similarity index 100% rename from src/test/ui/match/match-struct.stderr rename to tests/ui/match/match-struct.stderr diff --git a/src/test/ui/match/match-tag-nullary.rs b/tests/ui/match/match-tag-nullary.rs similarity index 100% rename from src/test/ui/match/match-tag-nullary.rs rename to tests/ui/match/match-tag-nullary.rs diff --git a/src/test/ui/match/match-tag-nullary.stderr b/tests/ui/match/match-tag-nullary.stderr similarity index 100% rename from src/test/ui/match/match-tag-nullary.stderr rename to tests/ui/match/match-tag-nullary.stderr diff --git a/src/test/ui/match/match-tag-unary.rs b/tests/ui/match/match-tag-unary.rs similarity index 100% rename from src/test/ui/match/match-tag-unary.rs rename to tests/ui/match/match-tag-unary.rs diff --git a/src/test/ui/match/match-tag-unary.stderr b/tests/ui/match/match-tag-unary.stderr similarity index 100% rename from src/test/ui/match/match-tag-unary.stderr rename to tests/ui/match/match-tag-unary.stderr diff --git a/src/test/ui/match/match-type-err-first-arm.rs b/tests/ui/match/match-type-err-first-arm.rs similarity index 100% rename from src/test/ui/match/match-type-err-first-arm.rs rename to tests/ui/match/match-type-err-first-arm.rs diff --git a/src/test/ui/match/match-type-err-first-arm.stderr b/tests/ui/match/match-type-err-first-arm.stderr similarity index 100% rename from src/test/ui/match/match-type-err-first-arm.stderr rename to tests/ui/match/match-type-err-first-arm.stderr diff --git a/src/test/ui/match/match-unresolved-one-arm.rs b/tests/ui/match/match-unresolved-one-arm.rs similarity index 100% rename from src/test/ui/match/match-unresolved-one-arm.rs rename to tests/ui/match/match-unresolved-one-arm.rs diff --git a/src/test/ui/match/match-unresolved-one-arm.stderr b/tests/ui/match/match-unresolved-one-arm.stderr similarity index 100% rename from src/test/ui/match/match-unresolved-one-arm.stderr rename to tests/ui/match/match-unresolved-one-arm.stderr diff --git a/src/test/ui/match/match-vec-mismatch-2.rs b/tests/ui/match/match-vec-mismatch-2.rs similarity index 100% rename from src/test/ui/match/match-vec-mismatch-2.rs rename to tests/ui/match/match-vec-mismatch-2.rs diff --git a/src/test/ui/match/match-vec-mismatch-2.stderr b/tests/ui/match/match-vec-mismatch-2.stderr similarity index 100% rename from src/test/ui/match/match-vec-mismatch-2.stderr rename to tests/ui/match/match-vec-mismatch-2.stderr diff --git a/src/test/ui/match/match-wildcards.rs b/tests/ui/match/match-wildcards.rs similarity index 100% rename from src/test/ui/match/match-wildcards.rs rename to tests/ui/match/match-wildcards.rs diff --git a/src/test/ui/match/match_non_exhaustive.rs b/tests/ui/match/match_non_exhaustive.rs similarity index 100% rename from src/test/ui/match/match_non_exhaustive.rs rename to tests/ui/match/match_non_exhaustive.rs diff --git a/src/test/ui/match/match_non_exhaustive.stderr b/tests/ui/match/match_non_exhaustive.stderr similarity index 100% rename from src/test/ui/match/match_non_exhaustive.stderr rename to tests/ui/match/match_non_exhaustive.stderr diff --git a/src/test/ui/match/pattern-deref-miscompile.rs b/tests/ui/match/pattern-deref-miscompile.rs similarity index 100% rename from src/test/ui/match/pattern-deref-miscompile.rs rename to tests/ui/match/pattern-deref-miscompile.rs diff --git a/src/test/ui/match/single-line.rs b/tests/ui/match/single-line.rs similarity index 100% rename from src/test/ui/match/single-line.rs rename to tests/ui/match/single-line.rs diff --git a/src/test/ui/match/single-line.stderr b/tests/ui/match/single-line.stderr similarity index 100% rename from src/test/ui/match/single-line.stderr rename to tests/ui/match/single-line.stderr diff --git a/src/test/ui/max-min-classes.rs b/tests/ui/max-min-classes.rs similarity index 100% rename from src/test/ui/max-min-classes.rs rename to tests/ui/max-min-classes.rs diff --git a/src/test/ui/maximal_mir_to_hir_coverage.rs b/tests/ui/maximal_mir_to_hir_coverage.rs similarity index 100% rename from src/test/ui/maximal_mir_to_hir_coverage.rs rename to tests/ui/maximal_mir_to_hir_coverage.rs diff --git a/src/test/ui/maybe-bounds.rs b/tests/ui/maybe-bounds.rs similarity index 100% rename from src/test/ui/maybe-bounds.rs rename to tests/ui/maybe-bounds.rs diff --git a/src/test/ui/maybe-bounds.stderr b/tests/ui/maybe-bounds.stderr similarity index 100% rename from src/test/ui/maybe-bounds.stderr rename to tests/ui/maybe-bounds.stderr diff --git a/src/test/ui/meta/auxiliary/env.rs b/tests/ui/meta/auxiliary/env.rs similarity index 100% rename from src/test/ui/meta/auxiliary/env.rs rename to tests/ui/meta/auxiliary/env.rs diff --git a/src/test/ui/meta/expected-error-correct-rev.a.stderr b/tests/ui/meta/expected-error-correct-rev.a.stderr similarity index 100% rename from src/test/ui/meta/expected-error-correct-rev.a.stderr rename to tests/ui/meta/expected-error-correct-rev.a.stderr diff --git a/src/test/ui/meta/expected-error-correct-rev.rs b/tests/ui/meta/expected-error-correct-rev.rs similarity index 100% rename from src/test/ui/meta/expected-error-correct-rev.rs rename to tests/ui/meta/expected-error-correct-rev.rs diff --git a/src/test/ui/meta/meta-expected-error-wrong-rev.a.stderr b/tests/ui/meta/meta-expected-error-wrong-rev.a.stderr similarity index 100% rename from src/test/ui/meta/meta-expected-error-wrong-rev.a.stderr rename to tests/ui/meta/meta-expected-error-wrong-rev.a.stderr diff --git a/src/test/ui/meta/meta-expected-error-wrong-rev.rs b/tests/ui/meta/meta-expected-error-wrong-rev.rs similarity index 100% rename from src/test/ui/meta/meta-expected-error-wrong-rev.rs rename to tests/ui/meta/meta-expected-error-wrong-rev.rs diff --git a/src/test/ui/meta/revision-bad.rs b/tests/ui/meta/revision-bad.rs similarity index 100% rename from src/test/ui/meta/revision-bad.rs rename to tests/ui/meta/revision-bad.rs diff --git a/src/test/ui/meta/revision-ok.rs b/tests/ui/meta/revision-ok.rs similarity index 100% rename from src/test/ui/meta/revision-ok.rs rename to tests/ui/meta/revision-ok.rs diff --git a/src/test/ui/meta/rustc-env.rs b/tests/ui/meta/rustc-env.rs similarity index 100% rename from src/test/ui/meta/rustc-env.rs rename to tests/ui/meta/rustc-env.rs diff --git a/src/test/ui/methods/assign-to-method.rs b/tests/ui/methods/assign-to-method.rs similarity index 100% rename from src/test/ui/methods/assign-to-method.rs rename to tests/ui/methods/assign-to-method.rs diff --git a/src/test/ui/methods/assign-to-method.stderr b/tests/ui/methods/assign-to-method.stderr similarity index 100% rename from src/test/ui/methods/assign-to-method.stderr rename to tests/ui/methods/assign-to-method.stderr diff --git a/src/test/ui/methods/auxiliary/ambig_impl_2_lib.rs b/tests/ui/methods/auxiliary/ambig_impl_2_lib.rs similarity index 100% rename from src/test/ui/methods/auxiliary/ambig_impl_2_lib.rs rename to tests/ui/methods/auxiliary/ambig_impl_2_lib.rs diff --git a/src/test/ui/methods/auxiliary/macro-in-other-crate.rs b/tests/ui/methods/auxiliary/macro-in-other-crate.rs similarity index 100% rename from src/test/ui/methods/auxiliary/macro-in-other-crate.rs rename to tests/ui/methods/auxiliary/macro-in-other-crate.rs diff --git a/src/test/ui/methods/auxiliary/method_self_arg1.rs b/tests/ui/methods/auxiliary/method_self_arg1.rs similarity index 100% rename from src/test/ui/methods/auxiliary/method_self_arg1.rs rename to tests/ui/methods/auxiliary/method_self_arg1.rs diff --git a/src/test/ui/methods/auxiliary/method_self_arg2.rs b/tests/ui/methods/auxiliary/method_self_arg2.rs similarity index 100% rename from src/test/ui/methods/auxiliary/method_self_arg2.rs rename to tests/ui/methods/auxiliary/method_self_arg2.rs diff --git a/src/test/ui/methods/field-method-suggestion-using-return-ty.rs b/tests/ui/methods/field-method-suggestion-using-return-ty.rs similarity index 100% rename from src/test/ui/methods/field-method-suggestion-using-return-ty.rs rename to tests/ui/methods/field-method-suggestion-using-return-ty.rs diff --git a/src/test/ui/methods/field-method-suggestion-using-return-ty.stderr b/tests/ui/methods/field-method-suggestion-using-return-ty.stderr similarity index 100% rename from src/test/ui/methods/field-method-suggestion-using-return-ty.stderr rename to tests/ui/methods/field-method-suggestion-using-return-ty.stderr diff --git a/src/test/ui/methods/issues/issue-105732.rs b/tests/ui/methods/issues/issue-105732.rs similarity index 100% rename from src/test/ui/methods/issues/issue-105732.rs rename to tests/ui/methods/issues/issue-105732.rs diff --git a/src/test/ui/methods/issues/issue-105732.stderr b/tests/ui/methods/issues/issue-105732.stderr similarity index 100% rename from src/test/ui/methods/issues/issue-105732.stderr rename to tests/ui/methods/issues/issue-105732.stderr diff --git a/src/test/ui/methods/issues/issue-61525.rs b/tests/ui/methods/issues/issue-61525.rs similarity index 100% rename from src/test/ui/methods/issues/issue-61525.rs rename to tests/ui/methods/issues/issue-61525.rs diff --git a/src/test/ui/methods/issues/issue-61525.stderr b/tests/ui/methods/issues/issue-61525.stderr similarity index 100% rename from src/test/ui/methods/issues/issue-61525.stderr rename to tests/ui/methods/issues/issue-61525.stderr diff --git a/src/test/ui/methods/issues/issue-84495.rs b/tests/ui/methods/issues/issue-84495.rs similarity index 100% rename from src/test/ui/methods/issues/issue-84495.rs rename to tests/ui/methods/issues/issue-84495.rs diff --git a/src/test/ui/methods/issues/issue-84495.stderr b/tests/ui/methods/issues/issue-84495.stderr similarity index 100% rename from src/test/ui/methods/issues/issue-84495.stderr rename to tests/ui/methods/issues/issue-84495.stderr diff --git a/src/test/ui/methods/issues/issue-90315.rs b/tests/ui/methods/issues/issue-90315.rs similarity index 100% rename from src/test/ui/methods/issues/issue-90315.rs rename to tests/ui/methods/issues/issue-90315.rs diff --git a/src/test/ui/methods/issues/issue-90315.stderr b/tests/ui/methods/issues/issue-90315.stderr similarity index 100% rename from src/test/ui/methods/issues/issue-90315.stderr rename to tests/ui/methods/issues/issue-90315.stderr diff --git a/src/test/ui/methods/issues/issue-94581.rs b/tests/ui/methods/issues/issue-94581.rs similarity index 100% rename from src/test/ui/methods/issues/issue-94581.rs rename to tests/ui/methods/issues/issue-94581.rs diff --git a/src/test/ui/methods/issues/issue-94581.stderr b/tests/ui/methods/issues/issue-94581.stderr similarity index 100% rename from src/test/ui/methods/issues/issue-94581.stderr rename to tests/ui/methods/issues/issue-94581.stderr diff --git a/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.rs b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.rs similarity index 100% rename from src/test/ui/methods/method-ambig-one-trait-unknown-int-type.rs rename to tests/ui/methods/method-ambig-one-trait-unknown-int-type.rs diff --git a/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr rename to tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr diff --git a/src/test/ui/methods/method-ambig-two-traits-cross-crate.rs b/tests/ui/methods/method-ambig-two-traits-cross-crate.rs similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-cross-crate.rs rename to tests/ui/methods/method-ambig-two-traits-cross-crate.rs diff --git a/src/test/ui/methods/method-ambig-two-traits-cross-crate.stderr b/tests/ui/methods/method-ambig-two-traits-cross-crate.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-cross-crate.stderr rename to tests/ui/methods/method-ambig-two-traits-cross-crate.stderr diff --git a/src/test/ui/methods/method-ambig-two-traits-from-bounds.rs b/tests/ui/methods/method-ambig-two-traits-from-bounds.rs similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-bounds.rs rename to tests/ui/methods/method-ambig-two-traits-from-bounds.rs diff --git a/src/test/ui/methods/method-ambig-two-traits-from-bounds.stderr b/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-bounds.stderr rename to tests/ui/methods/method-ambig-two-traits-from-bounds.stderr diff --git a/src/test/ui/methods/method-ambig-two-traits-from-impls.rs b/tests/ui/methods/method-ambig-two-traits-from-impls.rs similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-impls.rs rename to tests/ui/methods/method-ambig-two-traits-from-impls.rs diff --git a/src/test/ui/methods/method-ambig-two-traits-from-impls.stderr b/tests/ui/methods/method-ambig-two-traits-from-impls.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-impls.stderr rename to tests/ui/methods/method-ambig-two-traits-from-impls.stderr diff --git a/src/test/ui/methods/method-ambig-two-traits-from-impls2.rs b/tests/ui/methods/method-ambig-two-traits-from-impls2.rs similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-impls2.rs rename to tests/ui/methods/method-ambig-two-traits-from-impls2.rs diff --git a/src/test/ui/methods/method-ambig-two-traits-from-impls2.stderr b/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-from-impls2.stderr rename to tests/ui/methods/method-ambig-two-traits-from-impls2.stderr diff --git a/src/test/ui/methods/method-ambig-two-traits-with-default-method.rs b/tests/ui/methods/method-ambig-two-traits-with-default-method.rs similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-with-default-method.rs rename to tests/ui/methods/method-ambig-two-traits-with-default-method.rs diff --git a/src/test/ui/methods/method-ambig-two-traits-with-default-method.stderr b/tests/ui/methods/method-ambig-two-traits-with-default-method.stderr similarity index 100% rename from src/test/ui/methods/method-ambig-two-traits-with-default-method.stderr rename to tests/ui/methods/method-ambig-two-traits-with-default-method.stderr diff --git a/src/test/ui/methods/method-argument-inference-associated-type.rs b/tests/ui/methods/method-argument-inference-associated-type.rs similarity index 100% rename from src/test/ui/methods/method-argument-inference-associated-type.rs rename to tests/ui/methods/method-argument-inference-associated-type.rs diff --git a/src/test/ui/methods/method-call-err-msg.rs b/tests/ui/methods/method-call-err-msg.rs similarity index 100% rename from src/test/ui/methods/method-call-err-msg.rs rename to tests/ui/methods/method-call-err-msg.rs diff --git a/src/test/ui/methods/method-call-err-msg.stderr b/tests/ui/methods/method-call-err-msg.stderr similarity index 100% rename from src/test/ui/methods/method-call-err-msg.stderr rename to tests/ui/methods/method-call-err-msg.stderr diff --git a/src/test/ui/methods/method-call-lifetime-args-fail.rs b/tests/ui/methods/method-call-lifetime-args-fail.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-fail.rs rename to tests/ui/methods/method-call-lifetime-args-fail.rs diff --git a/src/test/ui/methods/method-call-lifetime-args-fail.stderr b/tests/ui/methods/method-call-lifetime-args-fail.stderr similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-fail.stderr rename to tests/ui/methods/method-call-lifetime-args-fail.stderr diff --git a/src/test/ui/methods/method-call-lifetime-args-lint-fail.rs b/tests/ui/methods/method-call-lifetime-args-lint-fail.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-lint-fail.rs rename to tests/ui/methods/method-call-lifetime-args-lint-fail.rs diff --git a/src/test/ui/methods/method-call-lifetime-args-lint-fail.stderr b/tests/ui/methods/method-call-lifetime-args-lint-fail.stderr similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-lint-fail.stderr rename to tests/ui/methods/method-call-lifetime-args-lint-fail.stderr diff --git a/src/test/ui/methods/method-call-lifetime-args-lint.rs b/tests/ui/methods/method-call-lifetime-args-lint.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-lint.rs rename to tests/ui/methods/method-call-lifetime-args-lint.rs diff --git a/src/test/ui/methods/method-call-lifetime-args-lint.stderr b/tests/ui/methods/method-call-lifetime-args-lint.stderr similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-lint.stderr rename to tests/ui/methods/method-call-lifetime-args-lint.stderr diff --git a/src/test/ui/methods/method-call-lifetime-args-subst-index.rs b/tests/ui/methods/method-call-lifetime-args-subst-index.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-subst-index.rs rename to tests/ui/methods/method-call-lifetime-args-subst-index.rs diff --git a/src/test/ui/methods/method-call-lifetime-args-unresolved.rs b/tests/ui/methods/method-call-lifetime-args-unresolved.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-unresolved.rs rename to tests/ui/methods/method-call-lifetime-args-unresolved.rs diff --git a/src/test/ui/methods/method-call-lifetime-args-unresolved.stderr b/tests/ui/methods/method-call-lifetime-args-unresolved.stderr similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args-unresolved.stderr rename to tests/ui/methods/method-call-lifetime-args-unresolved.stderr diff --git a/src/test/ui/methods/method-call-lifetime-args.rs b/tests/ui/methods/method-call-lifetime-args.rs similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args.rs rename to tests/ui/methods/method-call-lifetime-args.rs diff --git a/src/test/ui/methods/method-call-lifetime-args.stderr b/tests/ui/methods/method-call-lifetime-args.stderr similarity index 100% rename from src/test/ui/methods/method-call-lifetime-args.stderr rename to tests/ui/methods/method-call-lifetime-args.stderr diff --git a/src/test/ui/methods/method-call-type-binding.rs b/tests/ui/methods/method-call-type-binding.rs similarity index 100% rename from src/test/ui/methods/method-call-type-binding.rs rename to tests/ui/methods/method-call-type-binding.rs diff --git a/src/test/ui/methods/method-call-type-binding.stderr b/tests/ui/methods/method-call-type-binding.stderr similarity index 100% rename from src/test/ui/methods/method-call-type-binding.stderr rename to tests/ui/methods/method-call-type-binding.stderr diff --git a/src/test/ui/methods/method-deref-to-same-trait-object-with-separate-params.rs b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.rs similarity index 100% rename from src/test/ui/methods/method-deref-to-same-trait-object-with-separate-params.rs rename to tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.rs diff --git a/src/test/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr similarity index 100% rename from src/test/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr rename to tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr diff --git a/src/test/ui/methods/method-early-bound-lifetimes-on-self.rs b/tests/ui/methods/method-early-bound-lifetimes-on-self.rs similarity index 100% rename from src/test/ui/methods/method-early-bound-lifetimes-on-self.rs rename to tests/ui/methods/method-early-bound-lifetimes-on-self.rs diff --git a/src/test/ui/methods/method-lookup-order.rs b/tests/ui/methods/method-lookup-order.rs similarity index 100% rename from src/test/ui/methods/method-lookup-order.rs rename to tests/ui/methods/method-lookup-order.rs diff --git a/src/test/ui/methods/method-macro-backtrace.rs b/tests/ui/methods/method-macro-backtrace.rs similarity index 100% rename from src/test/ui/methods/method-macro-backtrace.rs rename to tests/ui/methods/method-macro-backtrace.rs diff --git a/src/test/ui/methods/method-macro-backtrace.stderr b/tests/ui/methods/method-macro-backtrace.stderr similarity index 100% rename from src/test/ui/methods/method-macro-backtrace.stderr rename to tests/ui/methods/method-macro-backtrace.stderr diff --git a/src/test/ui/methods/method-missing-call.rs b/tests/ui/methods/method-missing-call.rs similarity index 100% rename from src/test/ui/methods/method-missing-call.rs rename to tests/ui/methods/method-missing-call.rs diff --git a/src/test/ui/methods/method-missing-call.stderr b/tests/ui/methods/method-missing-call.stderr similarity index 100% rename from src/test/ui/methods/method-missing-call.stderr rename to tests/ui/methods/method-missing-call.stderr diff --git a/src/test/ui/methods/method-mut-self-modifies-mut-slice-lvalue.rs b/tests/ui/methods/method-mut-self-modifies-mut-slice-lvalue.rs similarity index 100% rename from src/test/ui/methods/method-mut-self-modifies-mut-slice-lvalue.rs rename to tests/ui/methods/method-mut-self-modifies-mut-slice-lvalue.rs diff --git a/src/test/ui/methods/method-normalize-bounds-issue-20604.rs b/tests/ui/methods/method-normalize-bounds-issue-20604.rs similarity index 100% rename from src/test/ui/methods/method-normalize-bounds-issue-20604.rs rename to tests/ui/methods/method-normalize-bounds-issue-20604.rs diff --git a/src/test/ui/methods/method-not-found-generic-arg-elision.rs b/tests/ui/methods/method-not-found-generic-arg-elision.rs similarity index 100% rename from src/test/ui/methods/method-not-found-generic-arg-elision.rs rename to tests/ui/methods/method-not-found-generic-arg-elision.rs diff --git a/src/test/ui/methods/method-not-found-generic-arg-elision.stderr b/tests/ui/methods/method-not-found-generic-arg-elision.stderr similarity index 100% rename from src/test/ui/methods/method-not-found-generic-arg-elision.stderr rename to tests/ui/methods/method-not-found-generic-arg-elision.stderr diff --git a/src/test/ui/methods/method-on-ambiguous-numeric-type.rs b/tests/ui/methods/method-on-ambiguous-numeric-type.rs similarity index 100% rename from src/test/ui/methods/method-on-ambiguous-numeric-type.rs rename to tests/ui/methods/method-on-ambiguous-numeric-type.rs diff --git a/src/test/ui/methods/method-on-ambiguous-numeric-type.stderr b/tests/ui/methods/method-on-ambiguous-numeric-type.stderr similarity index 100% rename from src/test/ui/methods/method-on-ambiguous-numeric-type.stderr rename to tests/ui/methods/method-on-ambiguous-numeric-type.stderr diff --git a/src/test/ui/methods/method-path-in-pattern.rs b/tests/ui/methods/method-path-in-pattern.rs similarity index 100% rename from src/test/ui/methods/method-path-in-pattern.rs rename to tests/ui/methods/method-path-in-pattern.rs diff --git a/src/test/ui/methods/method-path-in-pattern.stderr b/tests/ui/methods/method-path-in-pattern.stderr similarity index 100% rename from src/test/ui/methods/method-path-in-pattern.stderr rename to tests/ui/methods/method-path-in-pattern.stderr diff --git a/src/test/ui/methods/method-probe-no-guessing-dyn-trait.rs b/tests/ui/methods/method-probe-no-guessing-dyn-trait.rs similarity index 100% rename from src/test/ui/methods/method-probe-no-guessing-dyn-trait.rs rename to tests/ui/methods/method-probe-no-guessing-dyn-trait.rs diff --git a/src/test/ui/methods/method-projection.rs b/tests/ui/methods/method-projection.rs similarity index 100% rename from src/test/ui/methods/method-projection.rs rename to tests/ui/methods/method-projection.rs diff --git a/src/test/ui/methods/method-recursive-blanket-impl.rs b/tests/ui/methods/method-recursive-blanket-impl.rs similarity index 100% rename from src/test/ui/methods/method-recursive-blanket-impl.rs rename to tests/ui/methods/method-recursive-blanket-impl.rs diff --git a/src/test/ui/methods/method-resolvable-path-in-pattern.rs b/tests/ui/methods/method-resolvable-path-in-pattern.rs similarity index 100% rename from src/test/ui/methods/method-resolvable-path-in-pattern.rs rename to tests/ui/methods/method-resolvable-path-in-pattern.rs diff --git a/src/test/ui/methods/method-resolvable-path-in-pattern.stderr b/tests/ui/methods/method-resolvable-path-in-pattern.stderr similarity index 100% rename from src/test/ui/methods/method-resolvable-path-in-pattern.stderr rename to tests/ui/methods/method-resolvable-path-in-pattern.stderr diff --git a/src/test/ui/methods/method-self-arg-1.rs b/tests/ui/methods/method-self-arg-1.rs similarity index 100% rename from src/test/ui/methods/method-self-arg-1.rs rename to tests/ui/methods/method-self-arg-1.rs diff --git a/src/test/ui/methods/method-self-arg-1.stderr b/tests/ui/methods/method-self-arg-1.stderr similarity index 100% rename from src/test/ui/methods/method-self-arg-1.stderr rename to tests/ui/methods/method-self-arg-1.stderr diff --git a/src/test/ui/methods/method-self-arg-2.rs b/tests/ui/methods/method-self-arg-2.rs similarity index 100% rename from src/test/ui/methods/method-self-arg-2.rs rename to tests/ui/methods/method-self-arg-2.rs diff --git a/src/test/ui/methods/method-self-arg-2.stderr b/tests/ui/methods/method-self-arg-2.stderr similarity index 100% rename from src/test/ui/methods/method-self-arg-2.stderr rename to tests/ui/methods/method-self-arg-2.stderr diff --git a/src/test/ui/methods/method-self-arg-aux1.rs b/tests/ui/methods/method-self-arg-aux1.rs similarity index 100% rename from src/test/ui/methods/method-self-arg-aux1.rs rename to tests/ui/methods/method-self-arg-aux1.rs diff --git a/src/test/ui/methods/method-self-arg-aux2.rs b/tests/ui/methods/method-self-arg-aux2.rs similarity index 100% rename from src/test/ui/methods/method-self-arg-aux2.rs rename to tests/ui/methods/method-self-arg-aux2.rs diff --git a/src/test/ui/methods/method-self-arg-trait.rs b/tests/ui/methods/method-self-arg-trait.rs similarity index 100% rename from src/test/ui/methods/method-self-arg-trait.rs rename to tests/ui/methods/method-self-arg-trait.rs diff --git a/src/test/ui/methods/method-self-arg.rs b/tests/ui/methods/method-self-arg.rs similarity index 100% rename from src/test/ui/methods/method-self-arg.rs rename to tests/ui/methods/method-self-arg.rs diff --git a/src/test/ui/methods/method-trait-object-with-hrtb.rs b/tests/ui/methods/method-trait-object-with-hrtb.rs similarity index 100% rename from src/test/ui/methods/method-trait-object-with-hrtb.rs rename to tests/ui/methods/method-trait-object-with-hrtb.rs diff --git a/src/test/ui/methods/method-two-trait-defer-resolution-1.rs b/tests/ui/methods/method-two-trait-defer-resolution-1.rs similarity index 100% rename from src/test/ui/methods/method-two-trait-defer-resolution-1.rs rename to tests/ui/methods/method-two-trait-defer-resolution-1.rs diff --git a/src/test/ui/methods/method-two-trait-defer-resolution-2.rs b/tests/ui/methods/method-two-trait-defer-resolution-2.rs similarity index 100% rename from src/test/ui/methods/method-two-trait-defer-resolution-2.rs rename to tests/ui/methods/method-two-trait-defer-resolution-2.rs diff --git a/src/test/ui/methods/method-two-traits-distinguished-via-where-clause.rs b/tests/ui/methods/method-two-traits-distinguished-via-where-clause.rs similarity index 100% rename from src/test/ui/methods/method-two-traits-distinguished-via-where-clause.rs rename to tests/ui/methods/method-two-traits-distinguished-via-where-clause.rs diff --git a/src/test/ui/methods/method-where-clause.rs b/tests/ui/methods/method-where-clause.rs similarity index 100% rename from src/test/ui/methods/method-where-clause.rs rename to tests/ui/methods/method-where-clause.rs diff --git a/src/test/ui/minus-string.rs b/tests/ui/minus-string.rs similarity index 100% rename from src/test/ui/minus-string.rs rename to tests/ui/minus-string.rs diff --git a/src/test/ui/minus-string.stderr b/tests/ui/minus-string.stderr similarity index 100% rename from src/test/ui/minus-string.stderr rename to tests/ui/minus-string.stderr diff --git a/src/test/ui/mir-dataflow/README.md b/tests/ui/mir-dataflow/README.md similarity index 100% rename from src/test/ui/mir-dataflow/README.md rename to tests/ui/mir-dataflow/README.md diff --git a/src/test/ui/mir-dataflow/def-inits-1.rs b/tests/ui/mir-dataflow/def-inits-1.rs similarity index 100% rename from src/test/ui/mir-dataflow/def-inits-1.rs rename to tests/ui/mir-dataflow/def-inits-1.rs diff --git a/src/test/ui/mir-dataflow/def-inits-1.stderr b/tests/ui/mir-dataflow/def-inits-1.stderr similarity index 100% rename from src/test/ui/mir-dataflow/def-inits-1.stderr rename to tests/ui/mir-dataflow/def-inits-1.stderr diff --git a/src/test/ui/mir-dataflow/inits-1.rs b/tests/ui/mir-dataflow/inits-1.rs similarity index 100% rename from src/test/ui/mir-dataflow/inits-1.rs rename to tests/ui/mir-dataflow/inits-1.rs diff --git a/src/test/ui/mir-dataflow/inits-1.stderr b/tests/ui/mir-dataflow/inits-1.stderr similarity index 100% rename from src/test/ui/mir-dataflow/inits-1.stderr rename to tests/ui/mir-dataflow/inits-1.stderr diff --git a/src/test/ui/mir-dataflow/liveness-enum.rs b/tests/ui/mir-dataflow/liveness-enum.rs similarity index 100% rename from src/test/ui/mir-dataflow/liveness-enum.rs rename to tests/ui/mir-dataflow/liveness-enum.rs diff --git a/src/test/ui/mir-dataflow/liveness-enum.stderr b/tests/ui/mir-dataflow/liveness-enum.stderr similarity index 100% rename from src/test/ui/mir-dataflow/liveness-enum.stderr rename to tests/ui/mir-dataflow/liveness-enum.stderr diff --git a/src/test/ui/mir-dataflow/liveness-projection.rs b/tests/ui/mir-dataflow/liveness-projection.rs similarity index 100% rename from src/test/ui/mir-dataflow/liveness-projection.rs rename to tests/ui/mir-dataflow/liveness-projection.rs diff --git a/src/test/ui/mir-dataflow/liveness-projection.stderr b/tests/ui/mir-dataflow/liveness-projection.stderr similarity index 100% rename from src/test/ui/mir-dataflow/liveness-projection.stderr rename to tests/ui/mir-dataflow/liveness-projection.stderr diff --git a/src/test/ui/mir-dataflow/liveness-ptr.rs b/tests/ui/mir-dataflow/liveness-ptr.rs similarity index 100% rename from src/test/ui/mir-dataflow/liveness-ptr.rs rename to tests/ui/mir-dataflow/liveness-ptr.rs diff --git a/src/test/ui/mir-dataflow/liveness-ptr.stderr b/tests/ui/mir-dataflow/liveness-ptr.stderr similarity index 100% rename from src/test/ui/mir-dataflow/liveness-ptr.stderr rename to tests/ui/mir-dataflow/liveness-ptr.stderr diff --git a/src/test/ui/mir-dataflow/uninits-1.rs b/tests/ui/mir-dataflow/uninits-1.rs similarity index 100% rename from src/test/ui/mir-dataflow/uninits-1.rs rename to tests/ui/mir-dataflow/uninits-1.rs diff --git a/src/test/ui/mir-dataflow/uninits-1.stderr b/tests/ui/mir-dataflow/uninits-1.stderr similarity index 100% rename from src/test/ui/mir-dataflow/uninits-1.stderr rename to tests/ui/mir-dataflow/uninits-1.stderr diff --git a/src/test/ui/mir-dataflow/uninits-2.rs b/tests/ui/mir-dataflow/uninits-2.rs similarity index 100% rename from src/test/ui/mir-dataflow/uninits-2.rs rename to tests/ui/mir-dataflow/uninits-2.rs diff --git a/src/test/ui/mir-dataflow/uninits-2.stderr b/tests/ui/mir-dataflow/uninits-2.stderr similarity index 100% rename from src/test/ui/mir-dataflow/uninits-2.stderr rename to tests/ui/mir-dataflow/uninits-2.stderr diff --git a/src/test/ui/mir-unpretty.rs b/tests/ui/mir-unpretty.rs similarity index 100% rename from src/test/ui/mir-unpretty.rs rename to tests/ui/mir-unpretty.rs diff --git a/src/test/ui/mir-unpretty.stderr b/tests/ui/mir-unpretty.stderr similarity index 100% rename from src/test/ui/mir-unpretty.stderr rename to tests/ui/mir-unpretty.stderr diff --git a/src/test/ui/mir/auxiliary/issue_76375_aux.rs b/tests/ui/mir/auxiliary/issue_76375_aux.rs similarity index 100% rename from src/test/ui/mir/auxiliary/issue_76375_aux.rs rename to tests/ui/mir/auxiliary/issue_76375_aux.rs diff --git a/src/test/ui/mir/auxiliary/mir_external_refs.rs b/tests/ui/mir/auxiliary/mir_external_refs.rs similarity index 100% rename from src/test/ui/mir/auxiliary/mir_external_refs.rs rename to tests/ui/mir/auxiliary/mir_external_refs.rs diff --git a/src/test/ui/mir/drop-elaboration-after-borrowck-error.rs b/tests/ui/mir/drop-elaboration-after-borrowck-error.rs similarity index 100% rename from src/test/ui/mir/drop-elaboration-after-borrowck-error.rs rename to tests/ui/mir/drop-elaboration-after-borrowck-error.rs diff --git a/src/test/ui/mir/drop-elaboration-after-borrowck-error.stderr b/tests/ui/mir/drop-elaboration-after-borrowck-error.stderr similarity index 100% rename from src/test/ui/mir/drop-elaboration-after-borrowck-error.stderr rename to tests/ui/mir/drop-elaboration-after-borrowck-error.stderr diff --git a/src/test/ui/mir/important-higher-ranked-regions.rs b/tests/ui/mir/important-higher-ranked-regions.rs similarity index 100% rename from src/test/ui/mir/important-higher-ranked-regions.rs rename to tests/ui/mir/important-higher-ranked-regions.rs diff --git a/src/test/ui/mir/issue-101844.rs b/tests/ui/mir/issue-101844.rs similarity index 100% rename from src/test/ui/mir/issue-101844.rs rename to tests/ui/mir/issue-101844.rs diff --git a/src/test/ui/mir/issue-102389.rs b/tests/ui/mir/issue-102389.rs similarity index 100% rename from src/test/ui/mir/issue-102389.rs rename to tests/ui/mir/issue-102389.rs diff --git a/src/test/ui/mir/issue-102389.stderr b/tests/ui/mir/issue-102389.stderr similarity index 100% rename from src/test/ui/mir/issue-102389.stderr rename to tests/ui/mir/issue-102389.stderr diff --git a/src/test/ui/mir/issue-105809.rs b/tests/ui/mir/issue-105809.rs similarity index 100% rename from src/test/ui/mir/issue-105809.rs rename to tests/ui/mir/issue-105809.rs diff --git a/src/test/ui/mir/issue-106062.rs b/tests/ui/mir/issue-106062.rs similarity index 100% rename from src/test/ui/mir/issue-106062.rs rename to tests/ui/mir/issue-106062.rs diff --git a/src/test/ui/mir/issue-106062.stderr b/tests/ui/mir/issue-106062.stderr similarity index 100% rename from src/test/ui/mir/issue-106062.stderr rename to tests/ui/mir/issue-106062.stderr diff --git a/src/test/ui/mir/issue-29227.rs b/tests/ui/mir/issue-29227.rs similarity index 100% rename from src/test/ui/mir/issue-29227.rs rename to tests/ui/mir/issue-29227.rs diff --git a/src/test/ui/mir/issue-46845.rs b/tests/ui/mir/issue-46845.rs similarity index 100% rename from src/test/ui/mir/issue-46845.rs rename to tests/ui/mir/issue-46845.rs diff --git a/src/test/ui/mir/issue-60390.rs b/tests/ui/mir/issue-60390.rs similarity index 100% rename from src/test/ui/mir/issue-60390.rs rename to tests/ui/mir/issue-60390.rs diff --git a/src/test/ui/mir/issue-66851.rs b/tests/ui/mir/issue-66851.rs similarity index 100% rename from src/test/ui/mir/issue-66851.rs rename to tests/ui/mir/issue-66851.rs diff --git a/src/test/ui/mir/issue-66930.rs b/tests/ui/mir/issue-66930.rs similarity index 100% rename from src/test/ui/mir/issue-66930.rs rename to tests/ui/mir/issue-66930.rs diff --git a/src/test/ui/mir/issue-67639-normalization-ice.rs b/tests/ui/mir/issue-67639-normalization-ice.rs similarity index 100% rename from src/test/ui/mir/issue-67639-normalization-ice.rs rename to tests/ui/mir/issue-67639-normalization-ice.rs diff --git a/src/test/ui/mir/issue-67710-inline-projection.rs b/tests/ui/mir/issue-67710-inline-projection.rs similarity index 100% rename from src/test/ui/mir/issue-67710-inline-projection.rs rename to tests/ui/mir/issue-67710-inline-projection.rs diff --git a/src/test/ui/mir/issue-67947.rs b/tests/ui/mir/issue-67947.rs similarity index 100% rename from src/test/ui/mir/issue-67947.rs rename to tests/ui/mir/issue-67947.rs diff --git a/src/test/ui/mir/issue-67947.stderr b/tests/ui/mir/issue-67947.stderr similarity index 100% rename from src/test/ui/mir/issue-67947.stderr rename to tests/ui/mir/issue-67947.stderr diff --git a/src/test/ui/mir/issue-68841.rs b/tests/ui/mir/issue-68841.rs similarity index 100% rename from src/test/ui/mir/issue-68841.rs rename to tests/ui/mir/issue-68841.rs diff --git a/src/test/ui/mir/issue-71793-inline-args-storage.rs b/tests/ui/mir/issue-71793-inline-args-storage.rs similarity index 100% rename from src/test/ui/mir/issue-71793-inline-args-storage.rs rename to tests/ui/mir/issue-71793-inline-args-storage.rs diff --git a/src/test/ui/mir/issue-73914.rs b/tests/ui/mir/issue-73914.rs similarity index 100% rename from src/test/ui/mir/issue-73914.rs rename to tests/ui/mir/issue-73914.rs diff --git a/src/test/ui/mir/issue-74739.rs b/tests/ui/mir/issue-74739.rs similarity index 100% rename from src/test/ui/mir/issue-74739.rs rename to tests/ui/mir/issue-74739.rs diff --git a/src/test/ui/mir/issue-75053.rs b/tests/ui/mir/issue-75053.rs similarity index 100% rename from src/test/ui/mir/issue-75053.rs rename to tests/ui/mir/issue-75053.rs diff --git a/src/test/ui/mir/issue-75053.stderr b/tests/ui/mir/issue-75053.stderr similarity index 100% rename from src/test/ui/mir/issue-75053.stderr rename to tests/ui/mir/issue-75053.stderr diff --git a/src/test/ui/mir/issue-75419-validation-impl-trait.rs b/tests/ui/mir/issue-75419-validation-impl-trait.rs similarity index 100% rename from src/test/ui/mir/issue-75419-validation-impl-trait.rs rename to tests/ui/mir/issue-75419-validation-impl-trait.rs diff --git a/src/test/ui/mir/issue-76248.rs b/tests/ui/mir/issue-76248.rs similarity index 100% rename from src/test/ui/mir/issue-76248.rs rename to tests/ui/mir/issue-76248.rs diff --git a/src/test/ui/mir/issue-76375.rs b/tests/ui/mir/issue-76375.rs similarity index 100% rename from src/test/ui/mir/issue-76375.rs rename to tests/ui/mir/issue-76375.rs diff --git a/src/test/ui/mir/issue-76740-copy-propagation.rs b/tests/ui/mir/issue-76740-copy-propagation.rs similarity index 100% rename from src/test/ui/mir/issue-76740-copy-propagation.rs rename to tests/ui/mir/issue-76740-copy-propagation.rs diff --git a/src/test/ui/mir/issue-76803-branches-not-same.rs b/tests/ui/mir/issue-76803-branches-not-same.rs similarity index 100% rename from src/test/ui/mir/issue-76803-branches-not-same.rs rename to tests/ui/mir/issue-76803-branches-not-same.rs diff --git a/src/test/ui/mir/issue-77002.rs b/tests/ui/mir/issue-77002.rs similarity index 100% rename from src/test/ui/mir/issue-77002.rs rename to tests/ui/mir/issue-77002.rs diff --git a/src/test/ui/mir/issue-77359-simplify-arm-identity.rs b/tests/ui/mir/issue-77359-simplify-arm-identity.rs similarity index 100% rename from src/test/ui/mir/issue-77359-simplify-arm-identity.rs rename to tests/ui/mir/issue-77359-simplify-arm-identity.rs diff --git a/src/test/ui/mir/issue-77911.rs b/tests/ui/mir/issue-77911.rs similarity index 100% rename from src/test/ui/mir/issue-77911.rs rename to tests/ui/mir/issue-77911.rs diff --git a/src/test/ui/mir/issue-78496.rs b/tests/ui/mir/issue-78496.rs similarity index 100% rename from src/test/ui/mir/issue-78496.rs rename to tests/ui/mir/issue-78496.rs diff --git a/src/test/ui/mir/issue-80949.rs b/tests/ui/mir/issue-80949.rs similarity index 100% rename from src/test/ui/mir/issue-80949.rs rename to tests/ui/mir/issue-80949.rs diff --git a/src/test/ui/mir/issue-83499-input-output-iteration-ice.rs b/tests/ui/mir/issue-83499-input-output-iteration-ice.rs similarity index 100% rename from src/test/ui/mir/issue-83499-input-output-iteration-ice.rs rename to tests/ui/mir/issue-83499-input-output-iteration-ice.rs diff --git a/src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr b/tests/ui/mir/issue-83499-input-output-iteration-ice.stderr similarity index 100% rename from src/test/ui/mir/issue-83499-input-output-iteration-ice.stderr rename to tests/ui/mir/issue-83499-input-output-iteration-ice.stderr diff --git a/src/test/ui/mir/issue-89485.rs b/tests/ui/mir/issue-89485.rs similarity index 100% rename from src/test/ui/mir/issue-89485.rs rename to tests/ui/mir/issue-89485.rs diff --git a/src/test/ui/mir/issue-91745.rs b/tests/ui/mir/issue-91745.rs similarity index 100% rename from src/test/ui/mir/issue-91745.rs rename to tests/ui/mir/issue-91745.rs diff --git a/src/test/ui/mir/issue-92893.rs b/tests/ui/mir/issue-92893.rs similarity index 100% rename from src/test/ui/mir/issue-92893.rs rename to tests/ui/mir/issue-92893.rs diff --git a/src/test/ui/mir/issue-92893.stderr b/tests/ui/mir/issue-92893.stderr similarity index 100% rename from src/test/ui/mir/issue-92893.stderr rename to tests/ui/mir/issue-92893.stderr diff --git a/src/test/ui/mir/issue-99852.rs b/tests/ui/mir/issue-99852.rs similarity index 100% rename from src/test/ui/mir/issue-99852.rs rename to tests/ui/mir/issue-99852.rs diff --git a/src/test/ui/mir/issue-99866.rs b/tests/ui/mir/issue-99866.rs similarity index 100% rename from src/test/ui/mir/issue-99866.rs rename to tests/ui/mir/issue-99866.rs diff --git a/src/test/ui/mir/issue66339.rs b/tests/ui/mir/issue66339.rs similarity index 100% rename from src/test/ui/mir/issue66339.rs rename to tests/ui/mir/issue66339.rs diff --git a/src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs b/tests/ui/mir/mir-inlining/array-clone-with-generic-size.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs rename to tests/ui/mir/mir-inlining/array-clone-with-generic-size.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-100550-unnormalized-projection.rs b/tests/ui/mir/mir-inlining/ice-issue-100550-unnormalized-projection.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-100550-unnormalized-projection.rs rename to tests/ui/mir/mir-inlining/ice-issue-100550-unnormalized-projection.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-45493.rs b/tests/ui/mir/mir-inlining/ice-issue-45493.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-45493.rs rename to tests/ui/mir/mir-inlining/ice-issue-45493.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-45885.rs b/tests/ui/mir/mir-inlining/ice-issue-45885.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-45885.rs rename to tests/ui/mir/mir-inlining/ice-issue-45885.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-68347.rs b/tests/ui/mir/mir-inlining/ice-issue-68347.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-68347.rs rename to tests/ui/mir/mir-inlining/ice-issue-68347.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs b/tests/ui/mir/mir-inlining/ice-issue-77306-1.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs rename to tests/ui/mir/mir-inlining/ice-issue-77306-1.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs b/tests/ui/mir/mir-inlining/ice-issue-77306-2.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs rename to tests/ui/mir/mir-inlining/ice-issue-77306-2.rs diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77564.rs b/tests/ui/mir/mir-inlining/ice-issue-77564.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/ice-issue-77564.rs rename to tests/ui/mir/mir-inlining/ice-issue-77564.rs diff --git a/src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs b/tests/ui/mir/mir-inlining/no-trait-method-issue-40473.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs rename to tests/ui/mir/mir-inlining/no-trait-method-issue-40473.rs diff --git a/src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs b/tests/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs similarity index 100% rename from src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs rename to tests/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs diff --git a/src/test/ui/mir/mir-typeck-normalize-fn-sig.rs b/tests/ui/mir/mir-typeck-normalize-fn-sig.rs similarity index 100% rename from src/test/ui/mir/mir-typeck-normalize-fn-sig.rs rename to tests/ui/mir/mir-typeck-normalize-fn-sig.rs diff --git a/src/test/ui/mir/mir_adt_construction.rs b/tests/ui/mir/mir_adt_construction.rs similarity index 100% rename from src/test/ui/mir/mir_adt_construction.rs rename to tests/ui/mir/mir_adt_construction.rs diff --git a/src/test/ui/mir/mir_ascription_coercion.rs b/tests/ui/mir/mir_ascription_coercion.rs similarity index 100% rename from src/test/ui/mir/mir_ascription_coercion.rs rename to tests/ui/mir/mir_ascription_coercion.rs diff --git a/src/test/ui/mir/mir_assign_eval_order.rs b/tests/ui/mir/mir_assign_eval_order.rs similarity index 100% rename from src/test/ui/mir/mir_assign_eval_order.rs rename to tests/ui/mir/mir_assign_eval_order.rs diff --git a/src/test/ui/mir/mir_augmented_assignments.rs b/tests/ui/mir/mir_augmented_assignments.rs similarity index 100% rename from src/test/ui/mir/mir_augmented_assignments.rs rename to tests/ui/mir/mir_augmented_assignments.rs diff --git a/src/test/ui/mir/mir_autoderef.rs b/tests/ui/mir/mir_autoderef.rs similarity index 100% rename from src/test/ui/mir/mir_autoderef.rs rename to tests/ui/mir/mir_autoderef.rs diff --git a/src/test/ui/mir/mir_boxing.rs b/tests/ui/mir/mir_boxing.rs similarity index 100% rename from src/test/ui/mir/mir_boxing.rs rename to tests/ui/mir/mir_boxing.rs diff --git a/src/test/ui/mir/mir_build_match_comparisons.rs b/tests/ui/mir/mir_build_match_comparisons.rs similarity index 100% rename from src/test/ui/mir/mir_build_match_comparisons.rs rename to tests/ui/mir/mir_build_match_comparisons.rs diff --git a/src/test/ui/mir/mir_call_with_associated_type.rs b/tests/ui/mir/mir_call_with_associated_type.rs similarity index 100% rename from src/test/ui/mir/mir_call_with_associated_type.rs rename to tests/ui/mir/mir_call_with_associated_type.rs diff --git a/src/test/ui/mir/mir_calls_to_shims.rs b/tests/ui/mir/mir_calls_to_shims.rs similarity index 100% rename from src/test/ui/mir/mir_calls_to_shims.rs rename to tests/ui/mir/mir_calls_to_shims.rs diff --git a/src/test/ui/mir/mir_cast_fn_ret.rs b/tests/ui/mir/mir_cast_fn_ret.rs similarity index 100% rename from src/test/ui/mir/mir_cast_fn_ret.rs rename to tests/ui/mir/mir_cast_fn_ret.rs diff --git a/src/test/ui/mir/mir_codegen_array.rs b/tests/ui/mir/mir_codegen_array.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_array.rs rename to tests/ui/mir/mir_codegen_array.rs diff --git a/src/test/ui/mir/mir_codegen_array_2.rs b/tests/ui/mir/mir_codegen_array_2.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_array_2.rs rename to tests/ui/mir/mir_codegen_array_2.rs diff --git a/src/test/ui/mir/mir_codegen_call_converging.rs b/tests/ui/mir/mir_codegen_call_converging.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_call_converging.rs rename to tests/ui/mir/mir_codegen_call_converging.rs diff --git a/src/test/ui/mir/mir_codegen_calls.rs b/tests/ui/mir/mir_codegen_calls.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_calls.rs rename to tests/ui/mir/mir_codegen_calls.rs diff --git a/src/test/ui/mir/mir_codegen_calls_converging_drops.rs b/tests/ui/mir/mir_codegen_calls_converging_drops.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_calls_converging_drops.rs rename to tests/ui/mir/mir_codegen_calls_converging_drops.rs diff --git a/src/test/ui/mir/mir_codegen_calls_converging_drops_2.rs b/tests/ui/mir/mir_codegen_calls_converging_drops_2.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_calls_converging_drops_2.rs rename to tests/ui/mir/mir_codegen_calls_converging_drops_2.rs diff --git a/src/test/ui/mir/mir_codegen_calls_diverging.rs b/tests/ui/mir/mir_codegen_calls_diverging.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_calls_diverging.rs rename to tests/ui/mir/mir_codegen_calls_diverging.rs diff --git a/src/test/ui/mir/mir_codegen_calls_diverging_drops.rs b/tests/ui/mir/mir_codegen_calls_diverging_drops.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_calls_diverging_drops.rs rename to tests/ui/mir/mir_codegen_calls_diverging_drops.rs diff --git a/src/test/ui/mir/mir_codegen_critical_edge.rs b/tests/ui/mir/mir_codegen_critical_edge.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_critical_edge.rs rename to tests/ui/mir/mir_codegen_critical_edge.rs diff --git a/src/test/ui/mir/mir_codegen_spike1.rs b/tests/ui/mir/mir_codegen_spike1.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_spike1.rs rename to tests/ui/mir/mir_codegen_spike1.rs diff --git a/src/test/ui/mir/mir_codegen_switch.rs b/tests/ui/mir/mir_codegen_switch.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_switch.rs rename to tests/ui/mir/mir_codegen_switch.rs diff --git a/src/test/ui/mir/mir_codegen_switchint.rs b/tests/ui/mir/mir_codegen_switchint.rs similarity index 100% rename from src/test/ui/mir/mir_codegen_switchint.rs rename to tests/ui/mir/mir_codegen_switchint.rs diff --git a/src/test/ui/mir/mir_coercion_casts.rs b/tests/ui/mir/mir_coercion_casts.rs similarity index 100% rename from src/test/ui/mir/mir_coercion_casts.rs rename to tests/ui/mir/mir_coercion_casts.rs diff --git a/src/test/ui/mir/mir_coercions.rs b/tests/ui/mir/mir_coercions.rs similarity index 100% rename from src/test/ui/mir/mir_coercions.rs rename to tests/ui/mir/mir_coercions.rs diff --git a/src/test/ui/mir/mir_const_prop_identity.rs b/tests/ui/mir/mir_const_prop_identity.rs similarity index 100% rename from src/test/ui/mir/mir_const_prop_identity.rs rename to tests/ui/mir/mir_const_prop_identity.rs diff --git a/src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs b/tests/ui/mir/mir_const_prop_tuple_field_reorder.rs similarity index 100% rename from src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs rename to tests/ui/mir/mir_const_prop_tuple_field_reorder.rs diff --git a/src/test/ui/mir/mir_constval_adts.rs b/tests/ui/mir/mir_constval_adts.rs similarity index 100% rename from src/test/ui/mir/mir_constval_adts.rs rename to tests/ui/mir/mir_constval_adts.rs diff --git a/src/test/ui/mir/mir_detects_invalid_ops.rs b/tests/ui/mir/mir_detects_invalid_ops.rs similarity index 100% rename from src/test/ui/mir/mir_detects_invalid_ops.rs rename to tests/ui/mir/mir_detects_invalid_ops.rs diff --git a/src/test/ui/mir/mir_detects_invalid_ops.stderr b/tests/ui/mir/mir_detects_invalid_ops.stderr similarity index 100% rename from src/test/ui/mir/mir_detects_invalid_ops.stderr rename to tests/ui/mir/mir_detects_invalid_ops.stderr diff --git a/src/test/ui/mir/mir_drop_order.rs b/tests/ui/mir/mir_drop_order.rs similarity index 100% rename from src/test/ui/mir/mir_drop_order.rs rename to tests/ui/mir/mir_drop_order.rs diff --git a/src/test/ui/mir/mir_drop_panics.rs b/tests/ui/mir/mir_drop_panics.rs similarity index 100% rename from src/test/ui/mir/mir_drop_panics.rs rename to tests/ui/mir/mir_drop_panics.rs diff --git a/src/test/ui/mir/mir_dynamic_drops_1.rs b/tests/ui/mir/mir_dynamic_drops_1.rs similarity index 100% rename from src/test/ui/mir/mir_dynamic_drops_1.rs rename to tests/ui/mir/mir_dynamic_drops_1.rs diff --git a/src/test/ui/mir/mir_dynamic_drops_2.rs b/tests/ui/mir/mir_dynamic_drops_2.rs similarity index 100% rename from src/test/ui/mir/mir_dynamic_drops_2.rs rename to tests/ui/mir/mir_dynamic_drops_2.rs diff --git a/src/test/ui/mir/mir_dynamic_drops_3.rs b/tests/ui/mir/mir_dynamic_drops_3.rs similarity index 100% rename from src/test/ui/mir/mir_dynamic_drops_3.rs rename to tests/ui/mir/mir_dynamic_drops_3.rs diff --git a/src/test/ui/mir/mir_early_return_scope.rs b/tests/ui/mir/mir_early_return_scope.rs similarity index 100% rename from src/test/ui/mir/mir_early_return_scope.rs rename to tests/ui/mir/mir_early_return_scope.rs diff --git a/src/test/ui/mir/mir_fat_ptr.rs b/tests/ui/mir/mir_fat_ptr.rs similarity index 100% rename from src/test/ui/mir/mir_fat_ptr.rs rename to tests/ui/mir/mir_fat_ptr.rs diff --git a/src/test/ui/mir/mir_fat_ptr_drop.rs b/tests/ui/mir/mir_fat_ptr_drop.rs similarity index 100% rename from src/test/ui/mir/mir_fat_ptr_drop.rs rename to tests/ui/mir/mir_fat_ptr_drop.rs diff --git a/src/test/ui/mir/mir_heavy_promoted.rs b/tests/ui/mir/mir_heavy_promoted.rs similarity index 100% rename from src/test/ui/mir/mir_heavy_promoted.rs rename to tests/ui/mir/mir_heavy_promoted.rs diff --git a/src/test/ui/mir/mir_indexing_oob_1.rs b/tests/ui/mir/mir_indexing_oob_1.rs similarity index 100% rename from src/test/ui/mir/mir_indexing_oob_1.rs rename to tests/ui/mir/mir_indexing_oob_1.rs diff --git a/src/test/ui/mir/mir_indexing_oob_2.rs b/tests/ui/mir/mir_indexing_oob_2.rs similarity index 100% rename from src/test/ui/mir/mir_indexing_oob_2.rs rename to tests/ui/mir/mir_indexing_oob_2.rs diff --git a/src/test/ui/mir/mir_indexing_oob_3.rs b/tests/ui/mir/mir_indexing_oob_3.rs similarity index 100% rename from src/test/ui/mir/mir_indexing_oob_3.rs rename to tests/ui/mir/mir_indexing_oob_3.rs diff --git a/src/test/ui/mir/mir_let_chains_drop_order.rs b/tests/ui/mir/mir_let_chains_drop_order.rs similarity index 100% rename from src/test/ui/mir/mir_let_chains_drop_order.rs rename to tests/ui/mir/mir_let_chains_drop_order.rs diff --git a/src/test/ui/mir/mir_match_arm_guard.rs b/tests/ui/mir/mir_match_arm_guard.rs similarity index 100% rename from src/test/ui/mir/mir_match_arm_guard.rs rename to tests/ui/mir/mir_match_arm_guard.rs diff --git a/src/test/ui/mir/mir_match_test.rs b/tests/ui/mir/mir_match_test.rs similarity index 100% rename from src/test/ui/mir/mir_match_test.rs rename to tests/ui/mir/mir_match_test.rs diff --git a/src/test/ui/mir/mir_misc_casts.rs b/tests/ui/mir/mir_misc_casts.rs similarity index 100% rename from src/test/ui/mir/mir_misc_casts.rs rename to tests/ui/mir/mir_misc_casts.rs diff --git a/src/test/ui/mir/mir_overflow_off.rs b/tests/ui/mir/mir_overflow_off.rs similarity index 100% rename from src/test/ui/mir/mir_overflow_off.rs rename to tests/ui/mir/mir_overflow_off.rs diff --git a/src/test/ui/mir/mir_raw_fat_ptr.rs b/tests/ui/mir/mir_raw_fat_ptr.rs similarity index 100% rename from src/test/ui/mir/mir_raw_fat_ptr.rs rename to tests/ui/mir/mir_raw_fat_ptr.rs diff --git a/src/test/ui/mir/mir_refs_correct.rs b/tests/ui/mir/mir_refs_correct.rs similarity index 100% rename from src/test/ui/mir/mir_refs_correct.rs rename to tests/ui/mir/mir_refs_correct.rs diff --git a/src/test/ui/mir/mir_small_agg_arg.rs b/tests/ui/mir/mir_small_agg_arg.rs similarity index 100% rename from src/test/ui/mir/mir_small_agg_arg.rs rename to tests/ui/mir/mir_small_agg_arg.rs diff --git a/src/test/ui/mir/mir_static_subtype.rs b/tests/ui/mir/mir_static_subtype.rs similarity index 100% rename from src/test/ui/mir/mir_static_subtype.rs rename to tests/ui/mir/mir_static_subtype.rs diff --git a/src/test/ui/mir/mir_struct_with_assoc_ty.rs b/tests/ui/mir/mir_struct_with_assoc_ty.rs similarity index 100% rename from src/test/ui/mir/mir_struct_with_assoc_ty.rs rename to tests/ui/mir/mir_struct_with_assoc_ty.rs diff --git a/src/test/ui/mir/mir_temp_promotions.rs b/tests/ui/mir/mir_temp_promotions.rs similarity index 100% rename from src/test/ui/mir/mir_temp_promotions.rs rename to tests/ui/mir/mir_temp_promotions.rs diff --git a/src/test/ui/mir/mir_void_return.rs b/tests/ui/mir/mir_void_return.rs similarity index 100% rename from src/test/ui/mir/mir_void_return.rs rename to tests/ui/mir/mir_void_return.rs diff --git a/src/test/ui/mir/mir_void_return_2.rs b/tests/ui/mir/mir_void_return_2.rs similarity index 100% rename from src/test/ui/mir/mir_void_return_2.rs rename to tests/ui/mir/mir_void_return_2.rs diff --git a/src/test/ui/mir/remove-zsts-query-cycle.rs b/tests/ui/mir/remove-zsts-query-cycle.rs similarity index 100% rename from src/test/ui/mir/remove-zsts-query-cycle.rs rename to tests/ui/mir/remove-zsts-query-cycle.rs diff --git a/src/test/ui/mir/simplify-branch-same.rs b/tests/ui/mir/simplify-branch-same.rs similarity index 100% rename from src/test/ui/mir/simplify-branch-same.rs rename to tests/ui/mir/simplify-branch-same.rs diff --git a/src/test/ui/mir/ssa-analysis-regression-50041.rs b/tests/ui/mir/ssa-analysis-regression-50041.rs similarity index 100% rename from src/test/ui/mir/ssa-analysis-regression-50041.rs rename to tests/ui/mir/ssa-analysis-regression-50041.rs diff --git a/src/test/ui/mir/thir-constparam-temp.rs b/tests/ui/mir/thir-constparam-temp.rs similarity index 100% rename from src/test/ui/mir/thir-constparam-temp.rs rename to tests/ui/mir/thir-constparam-temp.rs diff --git a/src/test/ui/mir/thir-constparam-temp.stderr b/tests/ui/mir/thir-constparam-temp.stderr similarity index 100% rename from src/test/ui/mir/thir-constparam-temp.stderr rename to tests/ui/mir/thir-constparam-temp.stderr diff --git a/src/test/ui/mir/validate/issue-95978-validator-lifetime-comparison.rs b/tests/ui/mir/validate/issue-95978-validator-lifetime-comparison.rs similarity index 100% rename from src/test/ui/mir/validate/issue-95978-validator-lifetime-comparison.rs rename to tests/ui/mir/validate/issue-95978-validator-lifetime-comparison.rs diff --git a/src/test/ui/mir/validate/needs-reveal-all.rs b/tests/ui/mir/validate/needs-reveal-all.rs similarity index 100% rename from src/test/ui/mir/validate/needs-reveal-all.rs rename to tests/ui/mir/validate/needs-reveal-all.rs diff --git a/src/test/ui/mismatched_types/E0053.rs b/tests/ui/mismatched_types/E0053.rs similarity index 100% rename from src/test/ui/mismatched_types/E0053.rs rename to tests/ui/mismatched_types/E0053.rs diff --git a/src/test/ui/mismatched_types/E0053.stderr b/tests/ui/mismatched_types/E0053.stderr similarity index 100% rename from src/test/ui/mismatched_types/E0053.stderr rename to tests/ui/mismatched_types/E0053.stderr diff --git a/src/test/ui/mismatched_types/E0409.rs b/tests/ui/mismatched_types/E0409.rs similarity index 100% rename from src/test/ui/mismatched_types/E0409.rs rename to tests/ui/mismatched_types/E0409.rs diff --git a/src/test/ui/mismatched_types/E0409.stderr b/tests/ui/mismatched_types/E0409.stderr similarity index 100% rename from src/test/ui/mismatched_types/E0409.stderr rename to tests/ui/mismatched_types/E0409.stderr diff --git a/src/test/ui/mismatched_types/E0631.rs b/tests/ui/mismatched_types/E0631.rs similarity index 100% rename from src/test/ui/mismatched_types/E0631.rs rename to tests/ui/mismatched_types/E0631.rs diff --git a/src/test/ui/mismatched_types/E0631.stderr b/tests/ui/mismatched_types/E0631.stderr similarity index 100% rename from src/test/ui/mismatched_types/E0631.stderr rename to tests/ui/mismatched_types/E0631.stderr diff --git a/src/test/ui/mismatched_types/abridged.rs b/tests/ui/mismatched_types/abridged.rs similarity index 100% rename from src/test/ui/mismatched_types/abridged.rs rename to tests/ui/mismatched_types/abridged.rs diff --git a/src/test/ui/mismatched_types/abridged.stderr b/tests/ui/mismatched_types/abridged.stderr similarity index 100% rename from src/test/ui/mismatched_types/abridged.stderr rename to tests/ui/mismatched_types/abridged.stderr diff --git a/src/test/ui/mismatched_types/assignment-operator-unimplemented.rs b/tests/ui/mismatched_types/assignment-operator-unimplemented.rs similarity index 100% rename from src/test/ui/mismatched_types/assignment-operator-unimplemented.rs rename to tests/ui/mismatched_types/assignment-operator-unimplemented.rs diff --git a/src/test/ui/mismatched_types/assignment-operator-unimplemented.stderr b/tests/ui/mismatched_types/assignment-operator-unimplemented.stderr similarity index 100% rename from src/test/ui/mismatched_types/assignment-operator-unimplemented.stderr rename to tests/ui/mismatched_types/assignment-operator-unimplemented.stderr diff --git a/src/test/ui/mismatched_types/binops.rs b/tests/ui/mismatched_types/binops.rs similarity index 100% rename from src/test/ui/mismatched_types/binops.rs rename to tests/ui/mismatched_types/binops.rs diff --git a/src/test/ui/mismatched_types/binops.stderr b/tests/ui/mismatched_types/binops.stderr similarity index 100% rename from src/test/ui/mismatched_types/binops.stderr rename to tests/ui/mismatched_types/binops.stderr diff --git a/src/test/ui/mismatched_types/cast-rfc0401.rs b/tests/ui/mismatched_types/cast-rfc0401.rs similarity index 100% rename from src/test/ui/mismatched_types/cast-rfc0401.rs rename to tests/ui/mismatched_types/cast-rfc0401.rs diff --git a/src/test/ui/mismatched_types/cast-rfc0401.stderr b/tests/ui/mismatched_types/cast-rfc0401.stderr similarity index 100% rename from src/test/ui/mismatched_types/cast-rfc0401.stderr rename to tests/ui/mismatched_types/cast-rfc0401.stderr diff --git a/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.fixed b/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.fixed similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.fixed rename to tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.fixed diff --git a/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.rs b/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.rs similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.rs rename to tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.rs diff --git a/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr b/tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr rename to tests/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr diff --git a/src/test/ui/mismatched_types/closure-arg-count.rs b/tests/ui/mismatched_types/closure-arg-count.rs similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-count.rs rename to tests/ui/mismatched_types/closure-arg-count.rs diff --git a/src/test/ui/mismatched_types/closure-arg-count.stderr b/tests/ui/mismatched_types/closure-arg-count.stderr similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-count.stderr rename to tests/ui/mismatched_types/closure-arg-count.stderr diff --git a/src/test/ui/mismatched_types/closure-arg-type-mismatch.rs b/tests/ui/mismatched_types/closure-arg-type-mismatch.rs similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-type-mismatch.rs rename to tests/ui/mismatched_types/closure-arg-type-mismatch.rs diff --git a/src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr b/tests/ui/mismatched_types/closure-arg-type-mismatch.stderr similarity index 100% rename from src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr rename to tests/ui/mismatched_types/closure-arg-type-mismatch.stderr diff --git a/src/test/ui/mismatched_types/closure-mismatch.rs b/tests/ui/mismatched_types/closure-mismatch.rs similarity index 100% rename from src/test/ui/mismatched_types/closure-mismatch.rs rename to tests/ui/mismatched_types/closure-mismatch.rs diff --git a/src/test/ui/mismatched_types/closure-mismatch.stderr b/tests/ui/mismatched_types/closure-mismatch.stderr similarity index 100% rename from src/test/ui/mismatched_types/closure-mismatch.stderr rename to tests/ui/mismatched_types/closure-mismatch.stderr diff --git a/src/test/ui/mismatched_types/const-fn-in-trait.rs b/tests/ui/mismatched_types/const-fn-in-trait.rs similarity index 100% rename from src/test/ui/mismatched_types/const-fn-in-trait.rs rename to tests/ui/mismatched_types/const-fn-in-trait.rs diff --git a/src/test/ui/mismatched_types/const-fn-in-trait.stderr b/tests/ui/mismatched_types/const-fn-in-trait.stderr similarity index 100% rename from src/test/ui/mismatched_types/const-fn-in-trait.stderr rename to tests/ui/mismatched_types/const-fn-in-trait.stderr diff --git a/src/test/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.rs b/tests/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.rs similarity index 100% rename from src/test/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.rs rename to tests/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.rs diff --git a/src/test/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.stderr b/tests/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.stderr similarity index 100% rename from src/test/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.stderr rename to tests/ui/mismatched_types/do-not-suggest-boxed-trait-objects-instead-of-impl-trait.stderr diff --git a/src/test/ui/mismatched_types/dont-point-return-on-E0308.rs b/tests/ui/mismatched_types/dont-point-return-on-E0308.rs similarity index 100% rename from src/test/ui/mismatched_types/dont-point-return-on-E0308.rs rename to tests/ui/mismatched_types/dont-point-return-on-E0308.rs diff --git a/src/test/ui/mismatched_types/dont-point-return-on-E0308.stderr b/tests/ui/mismatched_types/dont-point-return-on-E0308.stderr similarity index 100% rename from src/test/ui/mismatched_types/dont-point-return-on-E0308.stderr rename to tests/ui/mismatched_types/dont-point-return-on-E0308.stderr diff --git a/src/test/ui/mismatched_types/float-literal-inference-restrictions.rs b/tests/ui/mismatched_types/float-literal-inference-restrictions.rs similarity index 100% rename from src/test/ui/mismatched_types/float-literal-inference-restrictions.rs rename to tests/ui/mismatched_types/float-literal-inference-restrictions.rs diff --git a/src/test/ui/mismatched_types/float-literal-inference-restrictions.stderr b/tests/ui/mismatched_types/float-literal-inference-restrictions.stderr similarity index 100% rename from src/test/ui/mismatched_types/float-literal-inference-restrictions.stderr rename to tests/ui/mismatched_types/float-literal-inference-restrictions.stderr diff --git a/src/test/ui/mismatched_types/fn-variance-1.rs b/tests/ui/mismatched_types/fn-variance-1.rs similarity index 100% rename from src/test/ui/mismatched_types/fn-variance-1.rs rename to tests/ui/mismatched_types/fn-variance-1.rs diff --git a/src/test/ui/mismatched_types/fn-variance-1.stderr b/tests/ui/mismatched_types/fn-variance-1.stderr similarity index 100% rename from src/test/ui/mismatched_types/fn-variance-1.stderr rename to tests/ui/mismatched_types/fn-variance-1.stderr diff --git a/src/test/ui/mismatched_types/for-loop-has-unit-body.rs b/tests/ui/mismatched_types/for-loop-has-unit-body.rs similarity index 100% rename from src/test/ui/mismatched_types/for-loop-has-unit-body.rs rename to tests/ui/mismatched_types/for-loop-has-unit-body.rs diff --git a/src/test/ui/mismatched_types/for-loop-has-unit-body.stderr b/tests/ui/mismatched_types/for-loop-has-unit-body.stderr similarity index 100% rename from src/test/ui/mismatched_types/for-loop-has-unit-body.stderr rename to tests/ui/mismatched_types/for-loop-has-unit-body.stderr diff --git a/src/test/ui/mismatched_types/issue-106182.fixed b/tests/ui/mismatched_types/issue-106182.fixed similarity index 100% rename from src/test/ui/mismatched_types/issue-106182.fixed rename to tests/ui/mismatched_types/issue-106182.fixed diff --git a/src/test/ui/mismatched_types/issue-106182.rs b/tests/ui/mismatched_types/issue-106182.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-106182.rs rename to tests/ui/mismatched_types/issue-106182.rs diff --git a/src/test/ui/mismatched_types/issue-106182.stderr b/tests/ui/mismatched_types/issue-106182.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-106182.stderr rename to tests/ui/mismatched_types/issue-106182.stderr diff --git a/src/test/ui/mismatched_types/issue-19109.rs b/tests/ui/mismatched_types/issue-19109.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-19109.rs rename to tests/ui/mismatched_types/issue-19109.rs diff --git a/src/test/ui/mismatched_types/issue-19109.stderr b/tests/ui/mismatched_types/issue-19109.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-19109.stderr rename to tests/ui/mismatched_types/issue-19109.stderr diff --git a/src/test/ui/mismatched_types/issue-26480.rs b/tests/ui/mismatched_types/issue-26480.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-26480.rs rename to tests/ui/mismatched_types/issue-26480.rs diff --git a/src/test/ui/mismatched_types/issue-26480.stderr b/tests/ui/mismatched_types/issue-26480.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-26480.stderr rename to tests/ui/mismatched_types/issue-26480.stderr diff --git a/src/test/ui/mismatched_types/issue-35030.rs b/tests/ui/mismatched_types/issue-35030.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-35030.rs rename to tests/ui/mismatched_types/issue-35030.rs diff --git a/src/test/ui/mismatched_types/issue-35030.stderr b/tests/ui/mismatched_types/issue-35030.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-35030.stderr rename to tests/ui/mismatched_types/issue-35030.stderr diff --git a/src/test/ui/mismatched_types/issue-36053-2.rs b/tests/ui/mismatched_types/issue-36053-2.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-36053-2.rs rename to tests/ui/mismatched_types/issue-36053-2.rs diff --git a/src/test/ui/mismatched_types/issue-36053-2.stderr b/tests/ui/mismatched_types/issue-36053-2.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-36053-2.stderr rename to tests/ui/mismatched_types/issue-36053-2.stderr diff --git a/src/test/ui/mismatched_types/issue-38371-unfixable.rs b/tests/ui/mismatched_types/issue-38371-unfixable.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-38371-unfixable.rs rename to tests/ui/mismatched_types/issue-38371-unfixable.rs diff --git a/src/test/ui/mismatched_types/issue-38371-unfixable.stderr b/tests/ui/mismatched_types/issue-38371-unfixable.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-38371-unfixable.stderr rename to tests/ui/mismatched_types/issue-38371-unfixable.stderr diff --git a/src/test/ui/mismatched_types/issue-38371.fixed b/tests/ui/mismatched_types/issue-38371.fixed similarity index 100% rename from src/test/ui/mismatched_types/issue-38371.fixed rename to tests/ui/mismatched_types/issue-38371.fixed diff --git a/src/test/ui/mismatched_types/issue-38371.rs b/tests/ui/mismatched_types/issue-38371.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-38371.rs rename to tests/ui/mismatched_types/issue-38371.rs diff --git a/src/test/ui/mismatched_types/issue-38371.stderr b/tests/ui/mismatched_types/issue-38371.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-38371.stderr rename to tests/ui/mismatched_types/issue-38371.stderr diff --git a/src/test/ui/mismatched_types/issue-47706-trait.rs b/tests/ui/mismatched_types/issue-47706-trait.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-47706-trait.rs rename to tests/ui/mismatched_types/issue-47706-trait.rs diff --git a/src/test/ui/mismatched_types/issue-47706-trait.stderr b/tests/ui/mismatched_types/issue-47706-trait.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-47706-trait.stderr rename to tests/ui/mismatched_types/issue-47706-trait.stderr diff --git a/src/test/ui/mismatched_types/issue-47706.rs b/tests/ui/mismatched_types/issue-47706.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-47706.rs rename to tests/ui/mismatched_types/issue-47706.rs diff --git a/src/test/ui/mismatched_types/issue-47706.stderr b/tests/ui/mismatched_types/issue-47706.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-47706.stderr rename to tests/ui/mismatched_types/issue-47706.stderr diff --git a/src/test/ui/mismatched_types/issue-74918-missing-lifetime.rs b/tests/ui/mismatched_types/issue-74918-missing-lifetime.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-74918-missing-lifetime.rs rename to tests/ui/mismatched_types/issue-74918-missing-lifetime.rs diff --git a/src/test/ui/mismatched_types/issue-74918-missing-lifetime.stderr b/tests/ui/mismatched_types/issue-74918-missing-lifetime.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-74918-missing-lifetime.stderr rename to tests/ui/mismatched_types/issue-74918-missing-lifetime.stderr diff --git a/src/test/ui/mismatched_types/issue-75361-mismatched-impl.rs b/tests/ui/mismatched_types/issue-75361-mismatched-impl.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-75361-mismatched-impl.rs rename to tests/ui/mismatched_types/issue-75361-mismatched-impl.rs diff --git a/src/test/ui/mismatched_types/issue-75361-mismatched-impl.stderr b/tests/ui/mismatched_types/issue-75361-mismatched-impl.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-75361-mismatched-impl.stderr rename to tests/ui/mismatched_types/issue-75361-mismatched-impl.stderr diff --git a/src/test/ui/mismatched_types/issue-84976.rs b/tests/ui/mismatched_types/issue-84976.rs similarity index 100% rename from src/test/ui/mismatched_types/issue-84976.rs rename to tests/ui/mismatched_types/issue-84976.rs diff --git a/src/test/ui/mismatched_types/issue-84976.stderr b/tests/ui/mismatched_types/issue-84976.stderr similarity index 100% rename from src/test/ui/mismatched_types/issue-84976.stderr rename to tests/ui/mismatched_types/issue-84976.stderr diff --git a/src/test/ui/mismatched_types/main.rs b/tests/ui/mismatched_types/main.rs similarity index 100% rename from src/test/ui/mismatched_types/main.rs rename to tests/ui/mismatched_types/main.rs diff --git a/src/test/ui/mismatched_types/main.stderr b/tests/ui/mismatched_types/main.stderr similarity index 100% rename from src/test/ui/mismatched_types/main.stderr rename to tests/ui/mismatched_types/main.stderr diff --git a/src/test/ui/mismatched_types/method-help-unsatisfied-bound.rs b/tests/ui/mismatched_types/method-help-unsatisfied-bound.rs similarity index 100% rename from src/test/ui/mismatched_types/method-help-unsatisfied-bound.rs rename to tests/ui/mismatched_types/method-help-unsatisfied-bound.rs diff --git a/src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr b/tests/ui/mismatched_types/method-help-unsatisfied-bound.stderr similarity index 100% rename from src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr rename to tests/ui/mismatched_types/method-help-unsatisfied-bound.stderr diff --git a/src/test/ui/mismatched_types/non_zero_assigned_something.rs b/tests/ui/mismatched_types/non_zero_assigned_something.rs similarity index 100% rename from src/test/ui/mismatched_types/non_zero_assigned_something.rs rename to tests/ui/mismatched_types/non_zero_assigned_something.rs diff --git a/src/test/ui/mismatched_types/non_zero_assigned_something.stderr b/tests/ui/mismatched_types/non_zero_assigned_something.stderr similarity index 100% rename from src/test/ui/mismatched_types/non_zero_assigned_something.stderr rename to tests/ui/mismatched_types/non_zero_assigned_something.stderr diff --git a/src/test/ui/mismatched_types/normalize-fn-sig.rs b/tests/ui/mismatched_types/normalize-fn-sig.rs similarity index 100% rename from src/test/ui/mismatched_types/normalize-fn-sig.rs rename to tests/ui/mismatched_types/normalize-fn-sig.rs diff --git a/src/test/ui/mismatched_types/normalize-fn-sig.stderr b/tests/ui/mismatched_types/normalize-fn-sig.stderr similarity index 100% rename from src/test/ui/mismatched_types/normalize-fn-sig.stderr rename to tests/ui/mismatched_types/normalize-fn-sig.stderr diff --git a/src/test/ui/mismatched_types/numeric-literal-cast.rs b/tests/ui/mismatched_types/numeric-literal-cast.rs similarity index 100% rename from src/test/ui/mismatched_types/numeric-literal-cast.rs rename to tests/ui/mismatched_types/numeric-literal-cast.rs diff --git a/src/test/ui/mismatched_types/numeric-literal-cast.stderr b/tests/ui/mismatched_types/numeric-literal-cast.stderr similarity index 100% rename from src/test/ui/mismatched_types/numeric-literal-cast.stderr rename to tests/ui/mismatched_types/numeric-literal-cast.stderr diff --git a/src/test/ui/mismatched_types/overloaded-calls-bad.rs b/tests/ui/mismatched_types/overloaded-calls-bad.rs similarity index 100% rename from src/test/ui/mismatched_types/overloaded-calls-bad.rs rename to tests/ui/mismatched_types/overloaded-calls-bad.rs diff --git a/src/test/ui/mismatched_types/overloaded-calls-bad.stderr b/tests/ui/mismatched_types/overloaded-calls-bad.stderr similarity index 100% rename from src/test/ui/mismatched_types/overloaded-calls-bad.stderr rename to tests/ui/mismatched_types/overloaded-calls-bad.stderr diff --git a/src/test/ui/mismatched_types/recovered-block.rs b/tests/ui/mismatched_types/recovered-block.rs similarity index 100% rename from src/test/ui/mismatched_types/recovered-block.rs rename to tests/ui/mismatched_types/recovered-block.rs diff --git a/src/test/ui/mismatched_types/recovered-block.stderr b/tests/ui/mismatched_types/recovered-block.stderr similarity index 100% rename from src/test/ui/mismatched_types/recovered-block.stderr rename to tests/ui/mismatched_types/recovered-block.stderr diff --git a/src/test/ui/mismatched_types/ref-pat-suggestions.fixed b/tests/ui/mismatched_types/ref-pat-suggestions.fixed similarity index 100% rename from src/test/ui/mismatched_types/ref-pat-suggestions.fixed rename to tests/ui/mismatched_types/ref-pat-suggestions.fixed diff --git a/src/test/ui/mismatched_types/ref-pat-suggestions.rs b/tests/ui/mismatched_types/ref-pat-suggestions.rs similarity index 100% rename from src/test/ui/mismatched_types/ref-pat-suggestions.rs rename to tests/ui/mismatched_types/ref-pat-suggestions.rs diff --git a/src/test/ui/mismatched_types/ref-pat-suggestions.stderr b/tests/ui/mismatched_types/ref-pat-suggestions.stderr similarity index 100% rename from src/test/ui/mismatched_types/ref-pat-suggestions.stderr rename to tests/ui/mismatched_types/ref-pat-suggestions.stderr diff --git a/src/test/ui/mismatched_types/show_module.rs b/tests/ui/mismatched_types/show_module.rs similarity index 100% rename from src/test/ui/mismatched_types/show_module.rs rename to tests/ui/mismatched_types/show_module.rs diff --git a/src/test/ui/mismatched_types/show_module.stderr b/tests/ui/mismatched_types/show_module.stderr similarity index 100% rename from src/test/ui/mismatched_types/show_module.stderr rename to tests/ui/mismatched_types/show_module.stderr diff --git a/src/test/ui/mismatched_types/similar_paths.rs b/tests/ui/mismatched_types/similar_paths.rs similarity index 100% rename from src/test/ui/mismatched_types/similar_paths.rs rename to tests/ui/mismatched_types/similar_paths.rs diff --git a/src/test/ui/mismatched_types/similar_paths.stderr b/tests/ui/mismatched_types/similar_paths.stderr similarity index 100% rename from src/test/ui/mismatched_types/similar_paths.stderr rename to tests/ui/mismatched_types/similar_paths.stderr diff --git a/src/test/ui/mismatched_types/similar_paths_primitive.rs b/tests/ui/mismatched_types/similar_paths_primitive.rs similarity index 100% rename from src/test/ui/mismatched_types/similar_paths_primitive.rs rename to tests/ui/mismatched_types/similar_paths_primitive.rs diff --git a/src/test/ui/mismatched_types/similar_paths_primitive.stderr b/tests/ui/mismatched_types/similar_paths_primitive.stderr similarity index 100% rename from src/test/ui/mismatched_types/similar_paths_primitive.stderr rename to tests/ui/mismatched_types/similar_paths_primitive.stderr diff --git a/src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.fixed b/tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.fixed similarity index 100% rename from src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.fixed rename to tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.fixed diff --git a/src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.rs b/tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.rs similarity index 100% rename from src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.rs rename to tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.rs diff --git a/src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.stderr b/tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.stderr similarity index 100% rename from src/test/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.stderr rename to tests/ui/mismatched_types/suggest-adding-or-removing-ref-for-binding-pattern.stderr diff --git a/src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.fixed b/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.fixed similarity index 100% rename from src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.fixed rename to tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.fixed diff --git a/src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.rs b/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.rs similarity index 100% rename from src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.rs rename to tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.rs diff --git a/src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr b/tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr similarity index 100% rename from src/test/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr rename to tests/ui/mismatched_types/suggest-boxed-trait-objects-instead-of-impl-trait.stderr diff --git a/src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.fixed b/tests/ui/mismatched_types/suggest-removing-tuple-struct-field.fixed similarity index 100% rename from src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.fixed rename to tests/ui/mismatched_types/suggest-removing-tuple-struct-field.fixed diff --git a/src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.rs b/tests/ui/mismatched_types/suggest-removing-tuple-struct-field.rs similarity index 100% rename from src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.rs rename to tests/ui/mismatched_types/suggest-removing-tuple-struct-field.rs diff --git a/src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.stderr b/tests/ui/mismatched_types/suggest-removing-tuple-struct-field.stderr similarity index 100% rename from src/test/ui/mismatched_types/suggest-removing-tuple-struct-field.stderr rename to tests/ui/mismatched_types/suggest-removing-tuple-struct-field.stderr diff --git a/src/test/ui/mismatched_types/trait-bounds-cant-coerce.rs b/tests/ui/mismatched_types/trait-bounds-cant-coerce.rs similarity index 100% rename from src/test/ui/mismatched_types/trait-bounds-cant-coerce.rs rename to tests/ui/mismatched_types/trait-bounds-cant-coerce.rs diff --git a/src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr b/tests/ui/mismatched_types/trait-bounds-cant-coerce.stderr similarity index 100% rename from src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr rename to tests/ui/mismatched_types/trait-bounds-cant-coerce.stderr diff --git a/src/test/ui/mismatched_types/trait-impl-fn-incompatibility.rs b/tests/ui/mismatched_types/trait-impl-fn-incompatibility.rs similarity index 100% rename from src/test/ui/mismatched_types/trait-impl-fn-incompatibility.rs rename to tests/ui/mismatched_types/trait-impl-fn-incompatibility.rs diff --git a/src/test/ui/mismatched_types/trait-impl-fn-incompatibility.stderr b/tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr similarity index 100% rename from src/test/ui/mismatched_types/trait-impl-fn-incompatibility.stderr rename to tests/ui/mismatched_types/trait-impl-fn-incompatibility.stderr diff --git a/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.rs b/tests/ui/mismatched_types/unboxed-closures-vtable-mismatch.rs similarity index 100% rename from src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.rs rename to tests/ui/mismatched_types/unboxed-closures-vtable-mismatch.rs diff --git a/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr b/tests/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr similarity index 100% rename from src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr rename to tests/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr diff --git a/src/test/ui/mismatched_types/wrap-suggestion-privacy.rs b/tests/ui/mismatched_types/wrap-suggestion-privacy.rs similarity index 100% rename from src/test/ui/mismatched_types/wrap-suggestion-privacy.rs rename to tests/ui/mismatched_types/wrap-suggestion-privacy.rs diff --git a/src/test/ui/mismatched_types/wrap-suggestion-privacy.stderr b/tests/ui/mismatched_types/wrap-suggestion-privacy.stderr similarity index 100% rename from src/test/ui/mismatched_types/wrap-suggestion-privacy.stderr rename to tests/ui/mismatched_types/wrap-suggestion-privacy.stderr diff --git a/src/test/ui/missing-trait-bounds/auxiliary/issue-69725.rs b/tests/ui/missing-trait-bounds/auxiliary/issue-69725.rs similarity index 100% rename from src/test/ui/missing-trait-bounds/auxiliary/issue-69725.rs rename to tests/ui/missing-trait-bounds/auxiliary/issue-69725.rs diff --git a/src/test/ui/missing-trait-bounds/issue-35677.fixed b/tests/ui/missing-trait-bounds/issue-35677.fixed similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-35677.fixed rename to tests/ui/missing-trait-bounds/issue-35677.fixed diff --git a/src/test/ui/missing-trait-bounds/issue-35677.rs b/tests/ui/missing-trait-bounds/issue-35677.rs similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-35677.rs rename to tests/ui/missing-trait-bounds/issue-35677.rs diff --git a/src/test/ui/missing-trait-bounds/issue-35677.stderr b/tests/ui/missing-trait-bounds/issue-35677.stderr similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-35677.stderr rename to tests/ui/missing-trait-bounds/issue-35677.stderr diff --git a/src/test/ui/missing-trait-bounds/issue-69725.fixed b/tests/ui/missing-trait-bounds/issue-69725.fixed similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-69725.fixed rename to tests/ui/missing-trait-bounds/issue-69725.fixed diff --git a/src/test/ui/missing-trait-bounds/issue-69725.rs b/tests/ui/missing-trait-bounds/issue-69725.rs similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-69725.rs rename to tests/ui/missing-trait-bounds/issue-69725.rs diff --git a/src/test/ui/missing-trait-bounds/issue-69725.stderr b/tests/ui/missing-trait-bounds/issue-69725.stderr similarity index 100% rename from src/test/ui/missing-trait-bounds/issue-69725.stderr rename to tests/ui/missing-trait-bounds/issue-69725.stderr diff --git a/src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.fixed b/tests/ui/missing-trait-bounds/missing-trait-bound-for-op.fixed similarity index 100% rename from src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.fixed rename to tests/ui/missing-trait-bounds/missing-trait-bound-for-op.fixed diff --git a/src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.rs b/tests/ui/missing-trait-bounds/missing-trait-bound-for-op.rs similarity index 100% rename from src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.rs rename to tests/ui/missing-trait-bounds/missing-trait-bound-for-op.rs diff --git a/src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.stderr b/tests/ui/missing-trait-bounds/missing-trait-bound-for-op.stderr similarity index 100% rename from src/test/ui/missing-trait-bounds/missing-trait-bound-for-op.stderr rename to tests/ui/missing-trait-bounds/missing-trait-bound-for-op.stderr diff --git a/src/test/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.rs b/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.rs similarity index 100% rename from src/test/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.rs rename to tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.rs diff --git a/src/test/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr b/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr similarity index 100% rename from src/test/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr rename to tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr diff --git a/src/test/ui/missing/auxiliary/two_macros.rs b/tests/ui/missing/auxiliary/two_macros.rs similarity index 100% rename from src/test/ui/missing/auxiliary/two_macros.rs rename to tests/ui/missing/auxiliary/two_macros.rs diff --git a/src/test/ui/missing/missing-allocator.rs b/tests/ui/missing/missing-allocator.rs similarity index 100% rename from src/test/ui/missing/missing-allocator.rs rename to tests/ui/missing/missing-allocator.rs diff --git a/src/test/ui/missing/missing-allocator.stderr b/tests/ui/missing/missing-allocator.stderr similarity index 100% rename from src/test/ui/missing/missing-allocator.stderr rename to tests/ui/missing/missing-allocator.stderr diff --git a/src/test/ui/missing/missing-block-hint.rs b/tests/ui/missing/missing-block-hint.rs similarity index 100% rename from src/test/ui/missing/missing-block-hint.rs rename to tests/ui/missing/missing-block-hint.rs diff --git a/src/test/ui/missing/missing-block-hint.stderr b/tests/ui/missing/missing-block-hint.stderr similarity index 100% rename from src/test/ui/missing/missing-block-hint.stderr rename to tests/ui/missing/missing-block-hint.stderr diff --git a/src/test/ui/missing/missing-comma-in-match.fixed b/tests/ui/missing/missing-comma-in-match.fixed similarity index 100% rename from src/test/ui/missing/missing-comma-in-match.fixed rename to tests/ui/missing/missing-comma-in-match.fixed diff --git a/src/test/ui/missing/missing-comma-in-match.rs b/tests/ui/missing/missing-comma-in-match.rs similarity index 100% rename from src/test/ui/missing/missing-comma-in-match.rs rename to tests/ui/missing/missing-comma-in-match.rs diff --git a/src/test/ui/missing/missing-comma-in-match.stderr b/tests/ui/missing/missing-comma-in-match.stderr similarity index 100% rename from src/test/ui/missing/missing-comma-in-match.stderr rename to tests/ui/missing/missing-comma-in-match.stderr diff --git a/src/test/ui/missing/missing-derivable-attr.rs b/tests/ui/missing/missing-derivable-attr.rs similarity index 100% rename from src/test/ui/missing/missing-derivable-attr.rs rename to tests/ui/missing/missing-derivable-attr.rs diff --git a/src/test/ui/missing/missing-derivable-attr.stderr b/tests/ui/missing/missing-derivable-attr.stderr similarity index 100% rename from src/test/ui/missing/missing-derivable-attr.stderr rename to tests/ui/missing/missing-derivable-attr.stderr diff --git a/src/test/ui/missing/missing-fields-in-struct-pattern.rs b/tests/ui/missing/missing-fields-in-struct-pattern.rs similarity index 100% rename from src/test/ui/missing/missing-fields-in-struct-pattern.rs rename to tests/ui/missing/missing-fields-in-struct-pattern.rs diff --git a/src/test/ui/missing/missing-fields-in-struct-pattern.stderr b/tests/ui/missing/missing-fields-in-struct-pattern.stderr similarity index 100% rename from src/test/ui/missing/missing-fields-in-struct-pattern.stderr rename to tests/ui/missing/missing-fields-in-struct-pattern.stderr diff --git a/src/test/ui/missing/missing-items/auxiliary/m1.rs b/tests/ui/missing/missing-items/auxiliary/m1.rs similarity index 100% rename from src/test/ui/missing/missing-items/auxiliary/m1.rs rename to tests/ui/missing/missing-items/auxiliary/m1.rs diff --git a/src/test/ui/missing/missing-items/m2.rs b/tests/ui/missing/missing-items/m2.rs similarity index 100% rename from src/test/ui/missing/missing-items/m2.rs rename to tests/ui/missing/missing-items/m2.rs diff --git a/src/test/ui/missing/missing-items/m2.stderr b/tests/ui/missing/missing-items/m2.stderr similarity index 100% rename from src/test/ui/missing/missing-items/m2.stderr rename to tests/ui/missing/missing-items/m2.stderr diff --git a/src/test/ui/missing/missing-items/missing-type-parameter.rs b/tests/ui/missing/missing-items/missing-type-parameter.rs similarity index 100% rename from src/test/ui/missing/missing-items/missing-type-parameter.rs rename to tests/ui/missing/missing-items/missing-type-parameter.rs diff --git a/src/test/ui/missing/missing-items/missing-type-parameter.stderr b/tests/ui/missing/missing-items/missing-type-parameter.stderr similarity index 100% rename from src/test/ui/missing/missing-items/missing-type-parameter.stderr rename to tests/ui/missing/missing-items/missing-type-parameter.stderr diff --git a/src/test/ui/missing/missing-items/missing-type-parameter2.rs b/tests/ui/missing/missing-items/missing-type-parameter2.rs similarity index 100% rename from src/test/ui/missing/missing-items/missing-type-parameter2.rs rename to tests/ui/missing/missing-items/missing-type-parameter2.rs diff --git a/src/test/ui/missing/missing-items/missing-type-parameter2.stderr b/tests/ui/missing/missing-items/missing-type-parameter2.stderr similarity index 100% rename from src/test/ui/missing/missing-items/missing-type-parameter2.stderr rename to tests/ui/missing/missing-items/missing-type-parameter2.stderr diff --git a/src/test/ui/missing/missing-macro-use.rs b/tests/ui/missing/missing-macro-use.rs similarity index 100% rename from src/test/ui/missing/missing-macro-use.rs rename to tests/ui/missing/missing-macro-use.rs diff --git a/src/test/ui/missing/missing-macro-use.stderr b/tests/ui/missing/missing-macro-use.stderr similarity index 100% rename from src/test/ui/missing/missing-macro-use.stderr rename to tests/ui/missing/missing-macro-use.stderr diff --git a/src/test/ui/missing/missing-main.rs b/tests/ui/missing/missing-main.rs similarity index 100% rename from src/test/ui/missing/missing-main.rs rename to tests/ui/missing/missing-main.rs diff --git a/src/test/ui/missing/missing-main.stderr b/tests/ui/missing/missing-main.stderr similarity index 100% rename from src/test/ui/missing/missing-main.stderr rename to tests/ui/missing/missing-main.stderr diff --git a/src/test/ui/missing/missing-return.rs b/tests/ui/missing/missing-return.rs similarity index 100% rename from src/test/ui/missing/missing-return.rs rename to tests/ui/missing/missing-return.rs diff --git a/src/test/ui/missing/missing-return.stderr b/tests/ui/missing/missing-return.stderr similarity index 100% rename from src/test/ui/missing/missing-return.stderr rename to tests/ui/missing/missing-return.stderr diff --git a/src/test/ui/missing/missing-stability.rs b/tests/ui/missing/missing-stability.rs similarity index 100% rename from src/test/ui/missing/missing-stability.rs rename to tests/ui/missing/missing-stability.rs diff --git a/src/test/ui/missing/missing-stability.stderr b/tests/ui/missing/missing-stability.stderr similarity index 100% rename from src/test/ui/missing/missing-stability.stderr rename to tests/ui/missing/missing-stability.stderr diff --git a/src/test/ui/missing_debug_impls.rs b/tests/ui/missing_debug_impls.rs similarity index 100% rename from src/test/ui/missing_debug_impls.rs rename to tests/ui/missing_debug_impls.rs diff --git a/src/test/ui/missing_debug_impls.stderr b/tests/ui/missing_debug_impls.stderr similarity index 100% rename from src/test/ui/missing_debug_impls.stderr rename to tests/ui/missing_debug_impls.stderr diff --git a/src/test/ui/missing_non_modrs_mod/foo.rs b/tests/ui/missing_non_modrs_mod/foo.rs similarity index 100% rename from src/test/ui/missing_non_modrs_mod/foo.rs rename to tests/ui/missing_non_modrs_mod/foo.rs diff --git a/src/test/ui/missing_non_modrs_mod/foo_inline.rs b/tests/ui/missing_non_modrs_mod/foo_inline.rs similarity index 100% rename from src/test/ui/missing_non_modrs_mod/foo_inline.rs rename to tests/ui/missing_non_modrs_mod/foo_inline.rs diff --git a/src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs b/tests/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs similarity index 100% rename from src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs rename to tests/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs diff --git a/src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod.stderr b/tests/ui/missing_non_modrs_mod/missing_non_modrs_mod.stderr similarity index 100% rename from src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod.stderr rename to tests/ui/missing_non_modrs_mod/missing_non_modrs_mod.stderr diff --git a/src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.rs b/tests/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.rs similarity index 100% rename from src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.rs rename to tests/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.rs diff --git a/src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.stderr b/tests/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.stderr similarity index 100% rename from src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.stderr rename to tests/ui/missing_non_modrs_mod/missing_non_modrs_mod_inline.stderr diff --git a/src/test/ui/mod-subitem-as-enum-variant.rs b/tests/ui/mod-subitem-as-enum-variant.rs similarity index 100% rename from src/test/ui/mod-subitem-as-enum-variant.rs rename to tests/ui/mod-subitem-as-enum-variant.rs diff --git a/src/test/ui/mod-subitem-as-enum-variant.stderr b/tests/ui/mod-subitem-as-enum-variant.stderr similarity index 100% rename from src/test/ui/mod-subitem-as-enum-variant.stderr rename to tests/ui/mod-subitem-as-enum-variant.stderr diff --git a/src/test/ui/module-macro_use-arguments.rs b/tests/ui/module-macro_use-arguments.rs similarity index 100% rename from src/test/ui/module-macro_use-arguments.rs rename to tests/ui/module-macro_use-arguments.rs diff --git a/src/test/ui/module-macro_use-arguments.stderr b/tests/ui/module-macro_use-arguments.stderr similarity index 100% rename from src/test/ui/module-macro_use-arguments.stderr rename to tests/ui/module-macro_use-arguments.stderr diff --git a/src/test/ui/modules/auxiliary/dummy_lib.rs b/tests/ui/modules/auxiliary/dummy_lib.rs similarity index 100% rename from src/test/ui/modules/auxiliary/dummy_lib.rs rename to tests/ui/modules/auxiliary/dummy_lib.rs diff --git a/src/test/ui/modules/auxiliary/two_macros_2.rs b/tests/ui/modules/auxiliary/two_macros_2.rs similarity index 100% rename from src/test/ui/modules/auxiliary/two_macros_2.rs rename to tests/ui/modules/auxiliary/two_macros_2.rs diff --git a/src/test/ui/modules/issue-56411-aux.rs b/tests/ui/modules/issue-56411-aux.rs similarity index 100% rename from src/test/ui/modules/issue-56411-aux.rs rename to tests/ui/modules/issue-56411-aux.rs diff --git a/src/test/ui/modules/issue-56411.rs b/tests/ui/modules/issue-56411.rs similarity index 100% rename from src/test/ui/modules/issue-56411.rs rename to tests/ui/modules/issue-56411.rs diff --git a/src/test/ui/modules/issue-56411.stderr b/tests/ui/modules/issue-56411.stderr similarity index 100% rename from src/test/ui/modules/issue-56411.stderr rename to tests/ui/modules/issue-56411.stderr diff --git a/src/test/ui/modules/mod-inside-fn.rs b/tests/ui/modules/mod-inside-fn.rs similarity index 100% rename from src/test/ui/modules/mod-inside-fn.rs rename to tests/ui/modules/mod-inside-fn.rs diff --git a/src/test/ui/modules/mod-view-items.rs b/tests/ui/modules/mod-view-items.rs similarity index 100% rename from src/test/ui/modules/mod-view-items.rs rename to tests/ui/modules/mod-view-items.rs diff --git a/src/test/ui/modules/mod_dir_implicit.rs b/tests/ui/modules/mod_dir_implicit.rs similarity index 100% rename from src/test/ui/modules/mod_dir_implicit.rs rename to tests/ui/modules/mod_dir_implicit.rs diff --git a/src/test/ui/modules/mod_dir_implicit_aux/compiletest-ignore-dir b/tests/ui/modules/mod_dir_implicit_aux/compiletest-ignore-dir similarity index 100% rename from src/test/ui/modules/mod_dir_implicit_aux/compiletest-ignore-dir rename to tests/ui/modules/mod_dir_implicit_aux/compiletest-ignore-dir diff --git a/src/test/ui/modules/mod_dir_implicit_aux/mod.rs b/tests/ui/modules/mod_dir_implicit_aux/mod.rs similarity index 100% rename from src/test/ui/modules/mod_dir_implicit_aux/mod.rs rename to tests/ui/modules/mod_dir_implicit_aux/mod.rs diff --git a/src/test/ui/modules/mod_dir_path.rs b/tests/ui/modules/mod_dir_path.rs similarity index 100% rename from src/test/ui/modules/mod_dir_path.rs rename to tests/ui/modules/mod_dir_path.rs diff --git a/src/test/ui/modules/mod_dir_path2.rs b/tests/ui/modules/mod_dir_path2.rs similarity index 100% rename from src/test/ui/modules/mod_dir_path2.rs rename to tests/ui/modules/mod_dir_path2.rs diff --git a/src/test/ui/modules/mod_dir_path3.rs b/tests/ui/modules/mod_dir_path3.rs similarity index 100% rename from src/test/ui/modules/mod_dir_path3.rs rename to tests/ui/modules/mod_dir_path3.rs diff --git a/src/test/ui/modules/mod_dir_path_multi.rs b/tests/ui/modules/mod_dir_path_multi.rs similarity index 100% rename from src/test/ui/modules/mod_dir_path_multi.rs rename to tests/ui/modules/mod_dir_path_multi.rs diff --git a/src/test/ui/modules/mod_dir_recursive.rs b/tests/ui/modules/mod_dir_recursive.rs similarity index 100% rename from src/test/ui/modules/mod_dir_recursive.rs rename to tests/ui/modules/mod_dir_recursive.rs diff --git a/src/test/ui/modules/mod_dir_simple.rs b/tests/ui/modules/mod_dir_simple.rs similarity index 100% rename from src/test/ui/modules/mod_dir_simple.rs rename to tests/ui/modules/mod_dir_simple.rs diff --git a/src/test/ui/modules/mod_dir_simple/compiletest-ignore-dir b/tests/ui/modules/mod_dir_simple/compiletest-ignore-dir similarity index 100% rename from src/test/ui/modules/mod_dir_simple/compiletest-ignore-dir rename to tests/ui/modules/mod_dir_simple/compiletest-ignore-dir diff --git a/src/test/ui/modules/mod_dir_simple/load_another_mod.rs b/tests/ui/modules/mod_dir_simple/load_another_mod.rs similarity index 100% rename from src/test/ui/modules/mod_dir_simple/load_another_mod.rs rename to tests/ui/modules/mod_dir_simple/load_another_mod.rs diff --git a/src/test/ui/modules/mod_dir_simple/test.rs b/tests/ui/modules/mod_dir_simple/test.rs similarity index 100% rename from src/test/ui/modules/mod_dir_simple/test.rs rename to tests/ui/modules/mod_dir_simple/test.rs diff --git a/src/test/ui/modules/mod_file.rs b/tests/ui/modules/mod_file.rs similarity index 100% rename from src/test/ui/modules/mod_file.rs rename to tests/ui/modules/mod_file.rs diff --git a/src/test/ui/modules/mod_file_aux.rs b/tests/ui/modules/mod_file_aux.rs similarity index 100% rename from src/test/ui/modules/mod_file_aux.rs rename to tests/ui/modules/mod_file_aux.rs diff --git a/src/test/ui/modules/mod_file_with_path_attr.rs b/tests/ui/modules/mod_file_with_path_attr.rs similarity index 100% rename from src/test/ui/modules/mod_file_with_path_attr.rs rename to tests/ui/modules/mod_file_with_path_attr.rs diff --git a/src/test/ui/modules/module-polymorphism3-files/compiletest-ignore-dir b/tests/ui/modules/module-polymorphism3-files/compiletest-ignore-dir similarity index 100% rename from src/test/ui/modules/module-polymorphism3-files/compiletest-ignore-dir rename to tests/ui/modules/module-polymorphism3-files/compiletest-ignore-dir diff --git a/src/test/ui/modules/module-polymorphism3-files/float-template/inst_f32.rs b/tests/ui/modules/module-polymorphism3-files/float-template/inst_f32.rs similarity index 100% rename from src/test/ui/modules/module-polymorphism3-files/float-template/inst_f32.rs rename to tests/ui/modules/module-polymorphism3-files/float-template/inst_f32.rs diff --git a/src/test/ui/modules/module-polymorphism3-files/float-template/inst_f64.rs b/tests/ui/modules/module-polymorphism3-files/float-template/inst_f64.rs similarity index 100% rename from src/test/ui/modules/module-polymorphism3-files/float-template/inst_f64.rs rename to tests/ui/modules/module-polymorphism3-files/float-template/inst_f64.rs diff --git a/src/test/ui/modules/module-polymorphism3-files/float-template/inst_float.rs b/tests/ui/modules/module-polymorphism3-files/float-template/inst_float.rs similarity index 100% rename from src/test/ui/modules/module-polymorphism3-files/float-template/inst_float.rs rename to tests/ui/modules/module-polymorphism3-files/float-template/inst_float.rs diff --git a/src/test/ui/modules/path-invalid-form.rs b/tests/ui/modules/path-invalid-form.rs similarity index 100% rename from src/test/ui/modules/path-invalid-form.rs rename to tests/ui/modules/path-invalid-form.rs diff --git a/src/test/ui/modules/path-invalid-form.stderr b/tests/ui/modules/path-invalid-form.stderr similarity index 100% rename from src/test/ui/modules/path-invalid-form.stderr rename to tests/ui/modules/path-invalid-form.stderr diff --git a/src/test/ui/modules/path-macro.rs b/tests/ui/modules/path-macro.rs similarity index 100% rename from src/test/ui/modules/path-macro.rs rename to tests/ui/modules/path-macro.rs diff --git a/src/test/ui/modules/path-macro.stderr b/tests/ui/modules/path-macro.stderr similarity index 100% rename from src/test/ui/modules/path-macro.stderr rename to tests/ui/modules/path-macro.stderr diff --git a/src/test/ui/modules/path-no-file-name.rs b/tests/ui/modules/path-no-file-name.rs similarity index 100% rename from src/test/ui/modules/path-no-file-name.rs rename to tests/ui/modules/path-no-file-name.rs diff --git a/src/test/ui/modules/path-no-file-name.stderr b/tests/ui/modules/path-no-file-name.stderr similarity index 100% rename from src/test/ui/modules/path-no-file-name.stderr rename to tests/ui/modules/path-no-file-name.stderr diff --git a/src/test/ui/modules/special_module_name.rs b/tests/ui/modules/special_module_name.rs similarity index 100% rename from src/test/ui/modules/special_module_name.rs rename to tests/ui/modules/special_module_name.rs diff --git a/src/test/ui/modules/special_module_name.stderr b/tests/ui/modules/special_module_name.stderr similarity index 100% rename from src/test/ui/modules/special_module_name.stderr rename to tests/ui/modules/special_module_name.stderr diff --git a/src/test/ui/modules/special_module_name_ignore.rs b/tests/ui/modules/special_module_name_ignore.rs similarity index 100% rename from src/test/ui/modules/special_module_name_ignore.rs rename to tests/ui/modules/special_module_name_ignore.rs diff --git a/src/test/ui/modules_and_files_visibility/mod_file_aux.rs b/tests/ui/modules_and_files_visibility/mod_file_aux.rs similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_aux.rs rename to tests/ui/modules_and_files_visibility/mod_file_aux.rs diff --git a/src/test/ui/modules_and_files_visibility/mod_file_correct_spans.rs b/tests/ui/modules_and_files_visibility/mod_file_correct_spans.rs similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_correct_spans.rs rename to tests/ui/modules_and_files_visibility/mod_file_correct_spans.rs diff --git a/src/test/ui/modules_and_files_visibility/mod_file_correct_spans.stderr b/tests/ui/modules_and_files_visibility/mod_file_correct_spans.stderr similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_correct_spans.stderr rename to tests/ui/modules_and_files_visibility/mod_file_correct_spans.stderr diff --git a/src/test/ui/modules_and_files_visibility/mod_file_disambig.rs b/tests/ui/modules_and_files_visibility/mod_file_disambig.rs similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_disambig.rs rename to tests/ui/modules_and_files_visibility/mod_file_disambig.rs diff --git a/src/test/ui/modules_and_files_visibility/mod_file_disambig.stderr b/tests/ui/modules_and_files_visibility/mod_file_disambig.stderr similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_disambig.stderr rename to tests/ui/modules_and_files_visibility/mod_file_disambig.stderr diff --git a/src/test/ui/modules_and_files_visibility/mod_file_disambig_aux.rs b/tests/ui/modules_and_files_visibility/mod_file_disambig_aux.rs similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_disambig_aux.rs rename to tests/ui/modules_and_files_visibility/mod_file_disambig_aux.rs diff --git a/src/test/ui/modules_and_files_visibility/mod_file_disambig_aux/mod.rs b/tests/ui/modules_and_files_visibility/mod_file_disambig_aux/mod.rs similarity index 100% rename from src/test/ui/modules_and_files_visibility/mod_file_disambig_aux/mod.rs rename to tests/ui/modules_and_files_visibility/mod_file_disambig_aux/mod.rs diff --git a/src/test/ui/monomorphize-abi-alignment.rs b/tests/ui/monomorphize-abi-alignment.rs similarity index 100% rename from src/test/ui/monomorphize-abi-alignment.rs rename to tests/ui/monomorphize-abi-alignment.rs diff --git a/src/test/ui/moves/borrow-closures-instead-of-move.rs b/tests/ui/moves/borrow-closures-instead-of-move.rs similarity index 100% rename from src/test/ui/moves/borrow-closures-instead-of-move.rs rename to tests/ui/moves/borrow-closures-instead-of-move.rs diff --git a/src/test/ui/moves/borrow-closures-instead-of-move.stderr b/tests/ui/moves/borrow-closures-instead-of-move.stderr similarity index 100% rename from src/test/ui/moves/borrow-closures-instead-of-move.stderr rename to tests/ui/moves/borrow-closures-instead-of-move.stderr diff --git a/src/test/ui/moves/issue-46099-move-in-macro.rs b/tests/ui/moves/issue-46099-move-in-macro.rs similarity index 100% rename from src/test/ui/moves/issue-46099-move-in-macro.rs rename to tests/ui/moves/issue-46099-move-in-macro.rs diff --git a/src/test/ui/moves/issue-46099-move-in-macro.stderr b/tests/ui/moves/issue-46099-move-in-macro.stderr similarity index 100% rename from src/test/ui/moves/issue-46099-move-in-macro.stderr rename to tests/ui/moves/issue-46099-move-in-macro.stderr diff --git a/src/test/ui/moves/issue-72649-uninit-in-loop.rs b/tests/ui/moves/issue-72649-uninit-in-loop.rs similarity index 100% rename from src/test/ui/moves/issue-72649-uninit-in-loop.rs rename to tests/ui/moves/issue-72649-uninit-in-loop.rs diff --git a/src/test/ui/moves/issue-72649-uninit-in-loop.stderr b/tests/ui/moves/issue-72649-uninit-in-loop.stderr similarity index 100% rename from src/test/ui/moves/issue-72649-uninit-in-loop.stderr rename to tests/ui/moves/issue-72649-uninit-in-loop.stderr diff --git a/src/test/ui/moves/issue-75904-move-closure-loop.rs b/tests/ui/moves/issue-75904-move-closure-loop.rs similarity index 100% rename from src/test/ui/moves/issue-75904-move-closure-loop.rs rename to tests/ui/moves/issue-75904-move-closure-loop.rs diff --git a/src/test/ui/moves/issue-75904-move-closure-loop.stderr b/tests/ui/moves/issue-75904-move-closure-loop.stderr similarity index 100% rename from src/test/ui/moves/issue-75904-move-closure-loop.stderr rename to tests/ui/moves/issue-75904-move-closure-loop.stderr diff --git a/src/test/ui/moves/issue-99470-move-out-of-some.rs b/tests/ui/moves/issue-99470-move-out-of-some.rs similarity index 100% rename from src/test/ui/moves/issue-99470-move-out-of-some.rs rename to tests/ui/moves/issue-99470-move-out-of-some.rs diff --git a/src/test/ui/moves/issue-99470-move-out-of-some.stderr b/tests/ui/moves/issue-99470-move-out-of-some.stderr similarity index 100% rename from src/test/ui/moves/issue-99470-move-out-of-some.stderr rename to tests/ui/moves/issue-99470-move-out-of-some.stderr diff --git a/src/test/ui/moves/move-1-unique.rs b/tests/ui/moves/move-1-unique.rs similarity index 100% rename from src/test/ui/moves/move-1-unique.rs rename to tests/ui/moves/move-1-unique.rs diff --git a/src/test/ui/moves/move-2-unique.rs b/tests/ui/moves/move-2-unique.rs similarity index 100% rename from src/test/ui/moves/move-2-unique.rs rename to tests/ui/moves/move-2-unique.rs diff --git a/src/test/ui/moves/move-2.rs b/tests/ui/moves/move-2.rs similarity index 100% rename from src/test/ui/moves/move-2.rs rename to tests/ui/moves/move-2.rs diff --git a/src/test/ui/moves/move-3-unique.rs b/tests/ui/moves/move-3-unique.rs similarity index 100% rename from src/test/ui/moves/move-3-unique.rs rename to tests/ui/moves/move-3-unique.rs diff --git a/src/test/ui/moves/move-4-unique.rs b/tests/ui/moves/move-4-unique.rs similarity index 100% rename from src/test/ui/moves/move-4-unique.rs rename to tests/ui/moves/move-4-unique.rs diff --git a/src/test/ui/moves/move-4.rs b/tests/ui/moves/move-4.rs similarity index 100% rename from src/test/ui/moves/move-4.rs rename to tests/ui/moves/move-4.rs diff --git a/src/test/ui/moves/move-arg-2-unique.rs b/tests/ui/moves/move-arg-2-unique.rs similarity index 100% rename from src/test/ui/moves/move-arg-2-unique.rs rename to tests/ui/moves/move-arg-2-unique.rs diff --git a/src/test/ui/moves/move-arg-2.rs b/tests/ui/moves/move-arg-2.rs similarity index 100% rename from src/test/ui/moves/move-arg-2.rs rename to tests/ui/moves/move-arg-2.rs diff --git a/src/test/ui/moves/move-arg.rs b/tests/ui/moves/move-arg.rs similarity index 100% rename from src/test/ui/moves/move-arg.rs rename to tests/ui/moves/move-arg.rs diff --git a/src/test/ui/moves/move-deref-coercion.rs b/tests/ui/moves/move-deref-coercion.rs similarity index 100% rename from src/test/ui/moves/move-deref-coercion.rs rename to tests/ui/moves/move-deref-coercion.rs diff --git a/src/test/ui/moves/move-deref-coercion.stderr b/tests/ui/moves/move-deref-coercion.stderr similarity index 100% rename from src/test/ui/moves/move-deref-coercion.stderr rename to tests/ui/moves/move-deref-coercion.stderr diff --git a/src/test/ui/moves/move-fn-self-receiver.rs b/tests/ui/moves/move-fn-self-receiver.rs similarity index 100% rename from src/test/ui/moves/move-fn-self-receiver.rs rename to tests/ui/moves/move-fn-self-receiver.rs diff --git a/src/test/ui/moves/move-fn-self-receiver.stderr b/tests/ui/moves/move-fn-self-receiver.stderr similarity index 100% rename from src/test/ui/moves/move-fn-self-receiver.stderr rename to tests/ui/moves/move-fn-self-receiver.stderr diff --git a/src/test/ui/moves/move-guard-same-consts.rs b/tests/ui/moves/move-guard-same-consts.rs similarity index 100% rename from src/test/ui/moves/move-guard-same-consts.rs rename to tests/ui/moves/move-guard-same-consts.rs diff --git a/src/test/ui/moves/move-guard-same-consts.stderr b/tests/ui/moves/move-guard-same-consts.stderr similarity index 100% rename from src/test/ui/moves/move-guard-same-consts.stderr rename to tests/ui/moves/move-guard-same-consts.stderr diff --git a/src/test/ui/moves/move-in-guard-1.rs b/tests/ui/moves/move-in-guard-1.rs similarity index 100% rename from src/test/ui/moves/move-in-guard-1.rs rename to tests/ui/moves/move-in-guard-1.rs diff --git a/src/test/ui/moves/move-in-guard-1.stderr b/tests/ui/moves/move-in-guard-1.stderr similarity index 100% rename from src/test/ui/moves/move-in-guard-1.stderr rename to tests/ui/moves/move-in-guard-1.stderr diff --git a/src/test/ui/moves/move-in-guard-2.rs b/tests/ui/moves/move-in-guard-2.rs similarity index 100% rename from src/test/ui/moves/move-in-guard-2.rs rename to tests/ui/moves/move-in-guard-2.rs diff --git a/src/test/ui/moves/move-in-guard-2.stderr b/tests/ui/moves/move-in-guard-2.stderr similarity index 100% rename from src/test/ui/moves/move-in-guard-2.stderr rename to tests/ui/moves/move-in-guard-2.stderr diff --git a/src/test/ui/moves/move-into-dead-array-1.rs b/tests/ui/moves/move-into-dead-array-1.rs similarity index 100% rename from src/test/ui/moves/move-into-dead-array-1.rs rename to tests/ui/moves/move-into-dead-array-1.rs diff --git a/src/test/ui/moves/move-into-dead-array-1.stderr b/tests/ui/moves/move-into-dead-array-1.stderr similarity index 100% rename from src/test/ui/moves/move-into-dead-array-1.stderr rename to tests/ui/moves/move-into-dead-array-1.stderr diff --git a/src/test/ui/moves/move-into-dead-array-2.rs b/tests/ui/moves/move-into-dead-array-2.rs similarity index 100% rename from src/test/ui/moves/move-into-dead-array-2.rs rename to tests/ui/moves/move-into-dead-array-2.rs diff --git a/src/test/ui/moves/move-into-dead-array-2.stderr b/tests/ui/moves/move-into-dead-array-2.stderr similarity index 100% rename from src/test/ui/moves/move-into-dead-array-2.stderr rename to tests/ui/moves/move-into-dead-array-2.stderr diff --git a/src/test/ui/moves/move-nullary-fn.rs b/tests/ui/moves/move-nullary-fn.rs similarity index 100% rename from src/test/ui/moves/move-nullary-fn.rs rename to tests/ui/moves/move-nullary-fn.rs diff --git a/src/test/ui/moves/move-of-addr-of-mut.rs b/tests/ui/moves/move-of-addr-of-mut.rs similarity index 100% rename from src/test/ui/moves/move-of-addr-of-mut.rs rename to tests/ui/moves/move-of-addr-of-mut.rs diff --git a/src/test/ui/moves/move-of-addr-of-mut.stderr b/tests/ui/moves/move-of-addr-of-mut.stderr similarity index 100% rename from src/test/ui/moves/move-of-addr-of-mut.stderr rename to tests/ui/moves/move-of-addr-of-mut.stderr diff --git a/src/test/ui/moves/move-out-of-array-1.rs b/tests/ui/moves/move-out-of-array-1.rs similarity index 100% rename from src/test/ui/moves/move-out-of-array-1.rs rename to tests/ui/moves/move-out-of-array-1.rs diff --git a/src/test/ui/moves/move-out-of-array-1.stderr b/tests/ui/moves/move-out-of-array-1.stderr similarity index 100% rename from src/test/ui/moves/move-out-of-array-1.stderr rename to tests/ui/moves/move-out-of-array-1.stderr diff --git a/src/test/ui/moves/move-out-of-array-ref.rs b/tests/ui/moves/move-out-of-array-ref.rs similarity index 100% rename from src/test/ui/moves/move-out-of-array-ref.rs rename to tests/ui/moves/move-out-of-array-ref.rs diff --git a/src/test/ui/moves/move-out-of-array-ref.stderr b/tests/ui/moves/move-out-of-array-ref.stderr similarity index 100% rename from src/test/ui/moves/move-out-of-array-ref.stderr rename to tests/ui/moves/move-out-of-array-ref.stderr diff --git a/src/test/ui/moves/move-out-of-field.rs b/tests/ui/moves/move-out-of-field.rs similarity index 100% rename from src/test/ui/moves/move-out-of-field.rs rename to tests/ui/moves/move-out-of-field.rs diff --git a/src/test/ui/moves/move-out-of-slice-1.rs b/tests/ui/moves/move-out-of-slice-1.rs similarity index 100% rename from src/test/ui/moves/move-out-of-slice-1.rs rename to tests/ui/moves/move-out-of-slice-1.rs diff --git a/src/test/ui/moves/move-out-of-slice-1.stderr b/tests/ui/moves/move-out-of-slice-1.stderr similarity index 100% rename from src/test/ui/moves/move-out-of-slice-1.stderr rename to tests/ui/moves/move-out-of-slice-1.stderr diff --git a/src/test/ui/moves/move-out-of-slice-2.rs b/tests/ui/moves/move-out-of-slice-2.rs similarity index 100% rename from src/test/ui/moves/move-out-of-slice-2.rs rename to tests/ui/moves/move-out-of-slice-2.rs diff --git a/src/test/ui/moves/move-out-of-slice-2.stderr b/tests/ui/moves/move-out-of-slice-2.stderr similarity index 100% rename from src/test/ui/moves/move-out-of-slice-2.stderr rename to tests/ui/moves/move-out-of-slice-2.stderr diff --git a/src/test/ui/moves/move-out-of-tuple-field.rs b/tests/ui/moves/move-out-of-tuple-field.rs similarity index 100% rename from src/test/ui/moves/move-out-of-tuple-field.rs rename to tests/ui/moves/move-out-of-tuple-field.rs diff --git a/src/test/ui/moves/move-out-of-tuple-field.stderr b/tests/ui/moves/move-out-of-tuple-field.stderr similarity index 100% rename from src/test/ui/moves/move-out-of-tuple-field.stderr rename to tests/ui/moves/move-out-of-tuple-field.stderr diff --git a/src/test/ui/moves/move-scalar.rs b/tests/ui/moves/move-scalar.rs similarity index 100% rename from src/test/ui/moves/move-scalar.rs rename to tests/ui/moves/move-scalar.rs diff --git a/src/test/ui/moves/moves-based-on-type-access-to-field.rs b/tests/ui/moves/moves-based-on-type-access-to-field.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-access-to-field.rs rename to tests/ui/moves/moves-based-on-type-access-to-field.rs diff --git a/src/test/ui/moves/moves-based-on-type-access-to-field.stderr b/tests/ui/moves/moves-based-on-type-access-to-field.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-access-to-field.stderr rename to tests/ui/moves/moves-based-on-type-access-to-field.stderr diff --git a/src/test/ui/moves/moves-based-on-type-block-bad.rs b/tests/ui/moves/moves-based-on-type-block-bad.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-block-bad.rs rename to tests/ui/moves/moves-based-on-type-block-bad.rs diff --git a/src/test/ui/moves/moves-based-on-type-block-bad.stderr b/tests/ui/moves/moves-based-on-type-block-bad.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-block-bad.stderr rename to tests/ui/moves/moves-based-on-type-block-bad.stderr diff --git a/src/test/ui/moves/moves-based-on-type-capture-clause-bad.rs b/tests/ui/moves/moves-based-on-type-capture-clause-bad.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-capture-clause-bad.rs rename to tests/ui/moves/moves-based-on-type-capture-clause-bad.rs diff --git a/src/test/ui/moves/moves-based-on-type-capture-clause-bad.stderr b/tests/ui/moves/moves-based-on-type-capture-clause-bad.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-capture-clause-bad.stderr rename to tests/ui/moves/moves-based-on-type-capture-clause-bad.stderr diff --git a/src/test/ui/moves/moves-based-on-type-capture-clause.rs b/tests/ui/moves/moves-based-on-type-capture-clause.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-capture-clause.rs rename to tests/ui/moves/moves-based-on-type-capture-clause.rs diff --git a/src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs b/tests/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs rename to tests/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs diff --git a/src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.stderr b/tests/ui/moves/moves-based-on-type-cyclic-types-issue-4821.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.stderr rename to tests/ui/moves/moves-based-on-type-cyclic-types-issue-4821.stderr diff --git a/src/test/ui/moves/moves-based-on-type-distribute-copy-over-paren.rs b/tests/ui/moves/moves-based-on-type-distribute-copy-over-paren.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-distribute-copy-over-paren.rs rename to tests/ui/moves/moves-based-on-type-distribute-copy-over-paren.rs diff --git a/src/test/ui/moves/moves-based-on-type-distribute-copy-over-paren.stderr b/tests/ui/moves/moves-based-on-type-distribute-copy-over-paren.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-distribute-copy-over-paren.stderr rename to tests/ui/moves/moves-based-on-type-distribute-copy-over-paren.stderr diff --git a/src/test/ui/moves/moves-based-on-type-exprs.rs b/tests/ui/moves/moves-based-on-type-exprs.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-exprs.rs rename to tests/ui/moves/moves-based-on-type-exprs.rs diff --git a/src/test/ui/moves/moves-based-on-type-exprs.stderr b/tests/ui/moves/moves-based-on-type-exprs.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-exprs.stderr rename to tests/ui/moves/moves-based-on-type-exprs.stderr diff --git a/src/test/ui/moves/moves-based-on-type-match-bindings.rs b/tests/ui/moves/moves-based-on-type-match-bindings.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-match-bindings.rs rename to tests/ui/moves/moves-based-on-type-match-bindings.rs diff --git a/src/test/ui/moves/moves-based-on-type-match-bindings.stderr b/tests/ui/moves/moves-based-on-type-match-bindings.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-match-bindings.stderr rename to tests/ui/moves/moves-based-on-type-match-bindings.stderr diff --git a/src/test/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.rs b/tests/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.rs rename to tests/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.rs diff --git a/src/test/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.stderr b/tests/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.stderr rename to tests/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.stderr diff --git a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs b/tests/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs rename to tests/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs diff --git a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.stderr b/tests/ui/moves/moves-based-on-type-no-recursive-stack-closure.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.stderr rename to tests/ui/moves/moves-based-on-type-no-recursive-stack-closure.stderr diff --git a/src/test/ui/moves/moves-based-on-type-tuple.rs b/tests/ui/moves/moves-based-on-type-tuple.rs similarity index 100% rename from src/test/ui/moves/moves-based-on-type-tuple.rs rename to tests/ui/moves/moves-based-on-type-tuple.rs diff --git a/src/test/ui/moves/moves-based-on-type-tuple.stderr b/tests/ui/moves/moves-based-on-type-tuple.stderr similarity index 100% rename from src/test/ui/moves/moves-based-on-type-tuple.stderr rename to tests/ui/moves/moves-based-on-type-tuple.stderr diff --git a/src/test/ui/moves/moves-sru-moved-field.rs b/tests/ui/moves/moves-sru-moved-field.rs similarity index 100% rename from src/test/ui/moves/moves-sru-moved-field.rs rename to tests/ui/moves/moves-sru-moved-field.rs diff --git a/src/test/ui/moves/moves-sru-moved-field.stderr b/tests/ui/moves/moves-sru-moved-field.stderr similarity index 100% rename from src/test/ui/moves/moves-sru-moved-field.stderr rename to tests/ui/moves/moves-sru-moved-field.stderr diff --git a/src/test/ui/moves/pin-mut-reborrow.fixed b/tests/ui/moves/pin-mut-reborrow.fixed similarity index 100% rename from src/test/ui/moves/pin-mut-reborrow.fixed rename to tests/ui/moves/pin-mut-reborrow.fixed diff --git a/src/test/ui/moves/pin-mut-reborrow.rs b/tests/ui/moves/pin-mut-reborrow.rs similarity index 100% rename from src/test/ui/moves/pin-mut-reborrow.rs rename to tests/ui/moves/pin-mut-reborrow.rs diff --git a/src/test/ui/moves/pin-mut-reborrow.stderr b/tests/ui/moves/pin-mut-reborrow.stderr similarity index 100% rename from src/test/ui/moves/pin-mut-reborrow.stderr rename to tests/ui/moves/pin-mut-reborrow.stderr diff --git a/src/test/ui/moves/suggest-clone.fixed b/tests/ui/moves/suggest-clone.fixed similarity index 100% rename from src/test/ui/moves/suggest-clone.fixed rename to tests/ui/moves/suggest-clone.fixed diff --git a/src/test/ui/moves/suggest-clone.rs b/tests/ui/moves/suggest-clone.rs similarity index 100% rename from src/test/ui/moves/suggest-clone.rs rename to tests/ui/moves/suggest-clone.rs diff --git a/src/test/ui/moves/suggest-clone.stderr b/tests/ui/moves/suggest-clone.stderr similarity index 100% rename from src/test/ui/moves/suggest-clone.stderr rename to tests/ui/moves/suggest-clone.stderr diff --git a/src/test/ui/moves/use_of_moved_value_clone_suggestions.rs b/tests/ui/moves/use_of_moved_value_clone_suggestions.rs similarity index 100% rename from src/test/ui/moves/use_of_moved_value_clone_suggestions.rs rename to tests/ui/moves/use_of_moved_value_clone_suggestions.rs diff --git a/src/test/ui/moves/use_of_moved_value_clone_suggestions.stderr b/tests/ui/moves/use_of_moved_value_clone_suggestions.stderr similarity index 100% rename from src/test/ui/moves/use_of_moved_value_clone_suggestions.stderr rename to tests/ui/moves/use_of_moved_value_clone_suggestions.stderr diff --git a/src/test/ui/moves/use_of_moved_value_copy_suggestions.fixed b/tests/ui/moves/use_of_moved_value_copy_suggestions.fixed similarity index 100% rename from src/test/ui/moves/use_of_moved_value_copy_suggestions.fixed rename to tests/ui/moves/use_of_moved_value_copy_suggestions.fixed diff --git a/src/test/ui/moves/use_of_moved_value_copy_suggestions.rs b/tests/ui/moves/use_of_moved_value_copy_suggestions.rs similarity index 100% rename from src/test/ui/moves/use_of_moved_value_copy_suggestions.rs rename to tests/ui/moves/use_of_moved_value_copy_suggestions.rs diff --git a/src/test/ui/moves/use_of_moved_value_copy_suggestions.stderr b/tests/ui/moves/use_of_moved_value_copy_suggestions.stderr similarity index 100% rename from src/test/ui/moves/use_of_moved_value_copy_suggestions.stderr rename to tests/ui/moves/use_of_moved_value_copy_suggestions.stderr diff --git a/src/test/ui/msvc-data-only.rs b/tests/ui/msvc-data-only.rs similarity index 100% rename from src/test/ui/msvc-data-only.rs rename to tests/ui/msvc-data-only.rs diff --git a/src/test/ui/multibyte.rs b/tests/ui/multibyte.rs similarity index 100% rename from src/test/ui/multibyte.rs rename to tests/ui/multibyte.rs diff --git a/src/test/ui/multiline-comment.rs b/tests/ui/multiline-comment.rs similarity index 100% rename from src/test/ui/multiline-comment.rs rename to tests/ui/multiline-comment.rs diff --git a/src/test/ui/mut-function-arguments.rs b/tests/ui/mut-function-arguments.rs similarity index 100% rename from src/test/ui/mut-function-arguments.rs rename to tests/ui/mut-function-arguments.rs diff --git a/src/test/ui/mut/mut-cant-alias.rs b/tests/ui/mut/mut-cant-alias.rs similarity index 100% rename from src/test/ui/mut/mut-cant-alias.rs rename to tests/ui/mut/mut-cant-alias.rs diff --git a/src/test/ui/mut/mut-cant-alias.stderr b/tests/ui/mut/mut-cant-alias.stderr similarity index 100% rename from src/test/ui/mut/mut-cant-alias.stderr rename to tests/ui/mut/mut-cant-alias.stderr diff --git a/src/test/ui/mut/mut-cross-borrowing.rs b/tests/ui/mut/mut-cross-borrowing.rs similarity index 100% rename from src/test/ui/mut/mut-cross-borrowing.rs rename to tests/ui/mut/mut-cross-borrowing.rs diff --git a/src/test/ui/mut/mut-cross-borrowing.stderr b/tests/ui/mut/mut-cross-borrowing.stderr similarity index 100% rename from src/test/ui/mut/mut-cross-borrowing.stderr rename to tests/ui/mut/mut-cross-borrowing.stderr diff --git a/src/test/ui/mut/mut-pattern-internal-mutability.rs b/tests/ui/mut/mut-pattern-internal-mutability.rs similarity index 100% rename from src/test/ui/mut/mut-pattern-internal-mutability.rs rename to tests/ui/mut/mut-pattern-internal-mutability.rs diff --git a/src/test/ui/mut/mut-pattern-internal-mutability.stderr b/tests/ui/mut/mut-pattern-internal-mutability.stderr similarity index 100% rename from src/test/ui/mut/mut-pattern-internal-mutability.stderr rename to tests/ui/mut/mut-pattern-internal-mutability.stderr diff --git a/src/test/ui/mut/mut-pattern-mismatched.rs b/tests/ui/mut/mut-pattern-mismatched.rs similarity index 100% rename from src/test/ui/mut/mut-pattern-mismatched.rs rename to tests/ui/mut/mut-pattern-mismatched.rs diff --git a/src/test/ui/mut/mut-pattern-mismatched.stderr b/tests/ui/mut/mut-pattern-mismatched.stderr similarity index 100% rename from src/test/ui/mut/mut-pattern-mismatched.stderr rename to tests/ui/mut/mut-pattern-mismatched.stderr diff --git a/src/test/ui/mut/mut-ref.rs b/tests/ui/mut/mut-ref.rs similarity index 100% rename from src/test/ui/mut/mut-ref.rs rename to tests/ui/mut/mut-ref.rs diff --git a/src/test/ui/mut/mut-ref.stderr b/tests/ui/mut/mut-ref.stderr similarity index 100% rename from src/test/ui/mut/mut-ref.stderr rename to tests/ui/mut/mut-ref.stderr diff --git a/src/test/ui/mut/mut-suggestion.rs b/tests/ui/mut/mut-suggestion.rs similarity index 100% rename from src/test/ui/mut/mut-suggestion.rs rename to tests/ui/mut/mut-suggestion.rs diff --git a/src/test/ui/mut/mut-suggestion.stderr b/tests/ui/mut/mut-suggestion.stderr similarity index 100% rename from src/test/ui/mut/mut-suggestion.stderr rename to tests/ui/mut/mut-suggestion.stderr diff --git a/src/test/ui/mut/mutable-class-fields-2.rs b/tests/ui/mut/mutable-class-fields-2.rs similarity index 100% rename from src/test/ui/mut/mutable-class-fields-2.rs rename to tests/ui/mut/mutable-class-fields-2.rs diff --git a/src/test/ui/mut/mutable-class-fields-2.stderr b/tests/ui/mut/mutable-class-fields-2.stderr similarity index 100% rename from src/test/ui/mut/mutable-class-fields-2.stderr rename to tests/ui/mut/mutable-class-fields-2.stderr diff --git a/src/test/ui/mut/mutable-class-fields.rs b/tests/ui/mut/mutable-class-fields.rs similarity index 100% rename from src/test/ui/mut/mutable-class-fields.rs rename to tests/ui/mut/mutable-class-fields.rs diff --git a/src/test/ui/mut/mutable-class-fields.stderr b/tests/ui/mut/mutable-class-fields.stderr similarity index 100% rename from src/test/ui/mut/mutable-class-fields.stderr rename to tests/ui/mut/mutable-class-fields.stderr diff --git a/src/test/ui/mut/mutable-enum-indirect.rs b/tests/ui/mut/mutable-enum-indirect.rs similarity index 100% rename from src/test/ui/mut/mutable-enum-indirect.rs rename to tests/ui/mut/mutable-enum-indirect.rs diff --git a/src/test/ui/mut/mutable-enum-indirect.stderr b/tests/ui/mut/mutable-enum-indirect.stderr similarity index 100% rename from src/test/ui/mut/mutable-enum-indirect.stderr rename to tests/ui/mut/mutable-enum-indirect.stderr diff --git a/src/test/ui/mut/no-mut-lint-for-desugared-mut.rs b/tests/ui/mut/no-mut-lint-for-desugared-mut.rs similarity index 100% rename from src/test/ui/mut/no-mut-lint-for-desugared-mut.rs rename to tests/ui/mut/no-mut-lint-for-desugared-mut.rs diff --git a/src/test/ui/mutexguard-sync.rs b/tests/ui/mutexguard-sync.rs similarity index 100% rename from src/test/ui/mutexguard-sync.rs rename to tests/ui/mutexguard-sync.rs diff --git a/src/test/ui/mutexguard-sync.stderr b/tests/ui/mutexguard-sync.stderr similarity index 100% rename from src/test/ui/mutexguard-sync.stderr rename to tests/ui/mutexguard-sync.stderr diff --git a/src/test/ui/mutual-recursion-group.rs b/tests/ui/mutual-recursion-group.rs similarity index 100% rename from src/test/ui/mutual-recursion-group.rs rename to tests/ui/mutual-recursion-group.rs diff --git a/src/test/ui/namespace/auxiliary/namespace-mix.rs b/tests/ui/namespace/auxiliary/namespace-mix.rs similarity index 100% rename from src/test/ui/namespace/auxiliary/namespace-mix.rs rename to tests/ui/namespace/auxiliary/namespace-mix.rs diff --git a/src/test/ui/namespace/auxiliary/namespaced_enums.rs b/tests/ui/namespace/auxiliary/namespaced_enums.rs similarity index 100% rename from src/test/ui/namespace/auxiliary/namespaced_enums.rs rename to tests/ui/namespace/auxiliary/namespaced_enums.rs diff --git a/src/test/ui/namespace/namespace-mix.rs b/tests/ui/namespace/namespace-mix.rs similarity index 100% rename from src/test/ui/namespace/namespace-mix.rs rename to tests/ui/namespace/namespace-mix.rs diff --git a/src/test/ui/namespace/namespace-mix.stderr b/tests/ui/namespace/namespace-mix.stderr similarity index 100% rename from src/test/ui/namespace/namespace-mix.stderr rename to tests/ui/namespace/namespace-mix.stderr diff --git a/src/test/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.rs b/tests/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.rs similarity index 100% rename from src/test/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.rs rename to tests/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.rs diff --git a/src/test/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.stderr b/tests/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.stderr similarity index 100% rename from src/test/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.stderr rename to tests/ui/namespace/namespaced-enum-glob-import-no-impls-xcrate.stderr diff --git a/src/test/ui/namespace/namespaced-enum-glob-import-no-impls.rs b/tests/ui/namespace/namespaced-enum-glob-import-no-impls.rs similarity index 100% rename from src/test/ui/namespace/namespaced-enum-glob-import-no-impls.rs rename to tests/ui/namespace/namespaced-enum-glob-import-no-impls.rs diff --git a/src/test/ui/namespace/namespaced-enum-glob-import-no-impls.stderr b/tests/ui/namespace/namespaced-enum-glob-import-no-impls.stderr similarity index 100% rename from src/test/ui/namespace/namespaced-enum-glob-import-no-impls.stderr rename to tests/ui/namespace/namespaced-enum-glob-import-no-impls.stderr diff --git a/src/test/ui/native-library-link-flags/empty-kind-1.rs b/tests/ui/native-library-link-flags/empty-kind-1.rs similarity index 100% rename from src/test/ui/native-library-link-flags/empty-kind-1.rs rename to tests/ui/native-library-link-flags/empty-kind-1.rs diff --git a/src/test/ui/native-library-link-flags/empty-kind-1.stderr b/tests/ui/native-library-link-flags/empty-kind-1.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/empty-kind-1.stderr rename to tests/ui/native-library-link-flags/empty-kind-1.stderr diff --git a/src/test/ui/native-library-link-flags/empty-kind-2.rs b/tests/ui/native-library-link-flags/empty-kind-2.rs similarity index 100% rename from src/test/ui/native-library-link-flags/empty-kind-2.rs rename to tests/ui/native-library-link-flags/empty-kind-2.rs diff --git a/src/test/ui/native-library-link-flags/empty-kind-2.stderr b/tests/ui/native-library-link-flags/empty-kind-2.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/empty-kind-2.stderr rename to tests/ui/native-library-link-flags/empty-kind-2.stderr diff --git a/src/test/ui/native-library-link-flags/link-arg-error.rs b/tests/ui/native-library-link-flags/link-arg-error.rs similarity index 100% rename from src/test/ui/native-library-link-flags/link-arg-error.rs rename to tests/ui/native-library-link-flags/link-arg-error.rs diff --git a/src/test/ui/native-library-link-flags/link-arg-error.stderr b/tests/ui/native-library-link-flags/link-arg-error.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/link-arg-error.stderr rename to tests/ui/native-library-link-flags/link-arg-error.stderr diff --git a/src/test/ui/native-library-link-flags/link-arg-from-rs.rs b/tests/ui/native-library-link-flags/link-arg-from-rs.rs similarity index 100% rename from src/test/ui/native-library-link-flags/link-arg-from-rs.rs rename to tests/ui/native-library-link-flags/link-arg-from-rs.rs diff --git a/src/test/ui/native-library-link-flags/link-arg-from-rs.stderr b/tests/ui/native-library-link-flags/link-arg-from-rs.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/link-arg-from-rs.stderr rename to tests/ui/native-library-link-flags/link-arg-from-rs.stderr diff --git a/src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.rs b/tests/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.rs similarity index 100% rename from src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.rs rename to tests/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.rs diff --git a/src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.stderr b/tests/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.stderr rename to tests/ui/native-library-link-flags/mix-bundle-and-whole-archive-link-attr.stderr diff --git a/src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive.rs b/tests/ui/native-library-link-flags/mix-bundle-and-whole-archive.rs similarity index 100% rename from src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive.rs rename to tests/ui/native-library-link-flags/mix-bundle-and-whole-archive.rs diff --git a/src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive.stderr b/tests/ui/native-library-link-flags/mix-bundle-and-whole-archive.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/mix-bundle-and-whole-archive.stderr rename to tests/ui/native-library-link-flags/mix-bundle-and-whole-archive.stderr diff --git a/src/test/ui/native-library-link-flags/modifiers-override-2.rs b/tests/ui/native-library-link-flags/modifiers-override-2.rs similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override-2.rs rename to tests/ui/native-library-link-flags/modifiers-override-2.rs diff --git a/src/test/ui/native-library-link-flags/modifiers-override-2.stderr b/tests/ui/native-library-link-flags/modifiers-override-2.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override-2.stderr rename to tests/ui/native-library-link-flags/modifiers-override-2.stderr diff --git a/src/test/ui/native-library-link-flags/modifiers-override-3.rs b/tests/ui/native-library-link-flags/modifiers-override-3.rs similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override-3.rs rename to tests/ui/native-library-link-flags/modifiers-override-3.rs diff --git a/src/test/ui/native-library-link-flags/modifiers-override-3.stderr b/tests/ui/native-library-link-flags/modifiers-override-3.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override-3.stderr rename to tests/ui/native-library-link-flags/modifiers-override-3.stderr diff --git a/src/test/ui/native-library-link-flags/modifiers-override.rs b/tests/ui/native-library-link-flags/modifiers-override.rs similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override.rs rename to tests/ui/native-library-link-flags/modifiers-override.rs diff --git a/src/test/ui/native-library-link-flags/modifiers-override.stderr b/tests/ui/native-library-link-flags/modifiers-override.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/modifiers-override.stderr rename to tests/ui/native-library-link-flags/modifiers-override.stderr diff --git a/src/test/ui/native-library-link-flags/suggest-libname-only-1.rs b/tests/ui/native-library-link-flags/suggest-libname-only-1.rs similarity index 100% rename from src/test/ui/native-library-link-flags/suggest-libname-only-1.rs rename to tests/ui/native-library-link-flags/suggest-libname-only-1.rs diff --git a/src/test/ui/native-library-link-flags/suggest-libname-only-1.stderr b/tests/ui/native-library-link-flags/suggest-libname-only-1.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/suggest-libname-only-1.stderr rename to tests/ui/native-library-link-flags/suggest-libname-only-1.stderr diff --git a/src/test/ui/native-library-link-flags/suggest-libname-only-2.rs b/tests/ui/native-library-link-flags/suggest-libname-only-2.rs similarity index 100% rename from src/test/ui/native-library-link-flags/suggest-libname-only-2.rs rename to tests/ui/native-library-link-flags/suggest-libname-only-2.rs diff --git a/src/test/ui/native-library-link-flags/suggest-libname-only-2.stderr b/tests/ui/native-library-link-flags/suggest-libname-only-2.stderr similarity index 100% rename from src/test/ui/native-library-link-flags/suggest-libname-only-2.stderr rename to tests/ui/native-library-link-flags/suggest-libname-only-2.stderr diff --git a/src/test/ui/nested-block-comment.rs b/tests/ui/nested-block-comment.rs similarity index 100% rename from src/test/ui/nested-block-comment.rs rename to tests/ui/nested-block-comment.rs diff --git a/src/test/ui/nested-cfg-attrs.rs b/tests/ui/nested-cfg-attrs.rs similarity index 100% rename from src/test/ui/nested-cfg-attrs.rs rename to tests/ui/nested-cfg-attrs.rs diff --git a/src/test/ui/nested-cfg-attrs.stderr b/tests/ui/nested-cfg-attrs.stderr similarity index 100% rename from src/test/ui/nested-cfg-attrs.stderr rename to tests/ui/nested-cfg-attrs.stderr diff --git a/src/test/ui/nested-class.rs b/tests/ui/nested-class.rs similarity index 100% rename from src/test/ui/nested-class.rs rename to tests/ui/nested-class.rs diff --git a/src/test/ui/nested-ty-params.rs b/tests/ui/nested-ty-params.rs similarity index 100% rename from src/test/ui/nested-ty-params.rs rename to tests/ui/nested-ty-params.rs diff --git a/src/test/ui/nested-ty-params.stderr b/tests/ui/nested-ty-params.stderr similarity index 100% rename from src/test/ui/nested-ty-params.stderr rename to tests/ui/nested-ty-params.stderr diff --git a/src/test/ui/never_type/adjust_never.rs b/tests/ui/never_type/adjust_never.rs similarity index 100% rename from src/test/ui/never_type/adjust_never.rs rename to tests/ui/never_type/adjust_never.rs diff --git a/src/test/ui/never_type/auto-traits.rs b/tests/ui/never_type/auto-traits.rs similarity index 100% rename from src/test/ui/never_type/auto-traits.rs rename to tests/ui/never_type/auto-traits.rs diff --git a/src/test/ui/never_type/call-fn-never-arg-wrong-type.rs b/tests/ui/never_type/call-fn-never-arg-wrong-type.rs similarity index 100% rename from src/test/ui/never_type/call-fn-never-arg-wrong-type.rs rename to tests/ui/never_type/call-fn-never-arg-wrong-type.rs diff --git a/src/test/ui/never_type/call-fn-never-arg-wrong-type.stderr b/tests/ui/never_type/call-fn-never-arg-wrong-type.stderr similarity index 100% rename from src/test/ui/never_type/call-fn-never-arg-wrong-type.stderr rename to tests/ui/never_type/call-fn-never-arg-wrong-type.stderr diff --git a/src/test/ui/never_type/call-fn-never-arg.rs b/tests/ui/never_type/call-fn-never-arg.rs similarity index 100% rename from src/test/ui/never_type/call-fn-never-arg.rs rename to tests/ui/never_type/call-fn-never-arg.rs diff --git a/src/test/ui/never_type/cast-never.rs b/tests/ui/never_type/cast-never.rs similarity index 100% rename from src/test/ui/never_type/cast-never.rs rename to tests/ui/never_type/cast-never.rs diff --git a/src/test/ui/never_type/defaulted-never-note.fallback.stderr b/tests/ui/never_type/defaulted-never-note.fallback.stderr similarity index 100% rename from src/test/ui/never_type/defaulted-never-note.fallback.stderr rename to tests/ui/never_type/defaulted-never-note.fallback.stderr diff --git a/src/test/ui/never_type/defaulted-never-note.rs b/tests/ui/never_type/defaulted-never-note.rs similarity index 100% rename from src/test/ui/never_type/defaulted-never-note.rs rename to tests/ui/never_type/defaulted-never-note.rs diff --git a/src/test/ui/never_type/dispatch_from_dyn_zst.rs b/tests/ui/never_type/dispatch_from_dyn_zst.rs similarity index 100% rename from src/test/ui/never_type/dispatch_from_dyn_zst.rs rename to tests/ui/never_type/dispatch_from_dyn_zst.rs diff --git a/src/test/ui/never_type/diverging-fallback-control-flow.rs b/tests/ui/never_type/diverging-fallback-control-flow.rs similarity index 100% rename from src/test/ui/never_type/diverging-fallback-control-flow.rs rename to tests/ui/never_type/diverging-fallback-control-flow.rs diff --git a/src/test/ui/never_type/diverging-fallback-no-leak.fallback.stderr b/tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr similarity index 100% rename from src/test/ui/never_type/diverging-fallback-no-leak.fallback.stderr rename to tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr diff --git a/src/test/ui/never_type/diverging-fallback-no-leak.rs b/tests/ui/never_type/diverging-fallback-no-leak.rs similarity index 100% rename from src/test/ui/never_type/diverging-fallback-no-leak.rs rename to tests/ui/never_type/diverging-fallback-no-leak.rs diff --git a/src/test/ui/never_type/diverging-fallback-unconstrained-return.rs b/tests/ui/never_type/diverging-fallback-unconstrained-return.rs similarity index 100% rename from src/test/ui/never_type/diverging-fallback-unconstrained-return.rs rename to tests/ui/never_type/diverging-fallback-unconstrained-return.rs diff --git a/src/test/ui/never_type/diverging-tuple-parts-39485.rs b/tests/ui/never_type/diverging-tuple-parts-39485.rs similarity index 100% rename from src/test/ui/never_type/diverging-tuple-parts-39485.rs rename to tests/ui/never_type/diverging-tuple-parts-39485.rs diff --git a/src/test/ui/never_type/diverging-tuple-parts-39485.stderr b/tests/ui/never_type/diverging-tuple-parts-39485.stderr similarity index 100% rename from src/test/ui/never_type/diverging-tuple-parts-39485.stderr rename to tests/ui/never_type/diverging-tuple-parts-39485.stderr diff --git a/src/test/ui/never_type/exhaustive_patterns.rs b/tests/ui/never_type/exhaustive_patterns.rs similarity index 100% rename from src/test/ui/never_type/exhaustive_patterns.rs rename to tests/ui/never_type/exhaustive_patterns.rs diff --git a/src/test/ui/never_type/exhaustive_patterns.stderr b/tests/ui/never_type/exhaustive_patterns.stderr similarity index 100% rename from src/test/ui/never_type/exhaustive_patterns.stderr rename to tests/ui/never_type/exhaustive_patterns.stderr diff --git a/src/test/ui/never_type/expr-empty-ret.rs b/tests/ui/never_type/expr-empty-ret.rs similarity index 100% rename from src/test/ui/never_type/expr-empty-ret.rs rename to tests/ui/never_type/expr-empty-ret.rs diff --git a/src/test/ui/never_type/fallback-closure-ret.rs b/tests/ui/never_type/fallback-closure-ret.rs similarity index 100% rename from src/test/ui/never_type/fallback-closure-ret.rs rename to tests/ui/never_type/fallback-closure-ret.rs diff --git a/src/test/ui/never_type/fallback-closure-wrap.fallback.stderr b/tests/ui/never_type/fallback-closure-wrap.fallback.stderr similarity index 100% rename from src/test/ui/never_type/fallback-closure-wrap.fallback.stderr rename to tests/ui/never_type/fallback-closure-wrap.fallback.stderr diff --git a/src/test/ui/never_type/fallback-closure-wrap.rs b/tests/ui/never_type/fallback-closure-wrap.rs similarity index 100% rename from src/test/ui/never_type/fallback-closure-wrap.rs rename to tests/ui/never_type/fallback-closure-wrap.rs diff --git a/src/test/ui/never_type/feature-gate-never_type_fallback.rs b/tests/ui/never_type/feature-gate-never_type_fallback.rs similarity index 100% rename from src/test/ui/never_type/feature-gate-never_type_fallback.rs rename to tests/ui/never_type/feature-gate-never_type_fallback.rs diff --git a/src/test/ui/never_type/feature-gate-never_type_fallback.stderr b/tests/ui/never_type/feature-gate-never_type_fallback.stderr similarity index 100% rename from src/test/ui/never_type/feature-gate-never_type_fallback.stderr rename to tests/ui/never_type/feature-gate-never_type_fallback.stderr diff --git a/src/test/ui/never_type/impl-for-never.rs b/tests/ui/never_type/impl-for-never.rs similarity index 100% rename from src/test/ui/never_type/impl-for-never.rs rename to tests/ui/never_type/impl-for-never.rs diff --git a/src/test/ui/never_type/impl_trait_fallback.rs b/tests/ui/never_type/impl_trait_fallback.rs similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback.rs rename to tests/ui/never_type/impl_trait_fallback.rs diff --git a/src/test/ui/never_type/impl_trait_fallback2.rs b/tests/ui/never_type/impl_trait_fallback2.rs similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback2.rs rename to tests/ui/never_type/impl_trait_fallback2.rs diff --git a/src/test/ui/never_type/impl_trait_fallback2.stderr b/tests/ui/never_type/impl_trait_fallback2.stderr similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback2.stderr rename to tests/ui/never_type/impl_trait_fallback2.stderr diff --git a/src/test/ui/never_type/impl_trait_fallback3.rs b/tests/ui/never_type/impl_trait_fallback3.rs similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback3.rs rename to tests/ui/never_type/impl_trait_fallback3.rs diff --git a/src/test/ui/never_type/impl_trait_fallback3.stderr b/tests/ui/never_type/impl_trait_fallback3.stderr similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback3.stderr rename to tests/ui/never_type/impl_trait_fallback3.stderr diff --git a/src/test/ui/never_type/impl_trait_fallback4.rs b/tests/ui/never_type/impl_trait_fallback4.rs similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback4.rs rename to tests/ui/never_type/impl_trait_fallback4.rs diff --git a/src/test/ui/never_type/impl_trait_fallback4.stderr b/tests/ui/never_type/impl_trait_fallback4.stderr similarity index 100% rename from src/test/ui/never_type/impl_trait_fallback4.stderr rename to tests/ui/never_type/impl_trait_fallback4.stderr diff --git a/src/test/ui/never_type/issue-10176.rs b/tests/ui/never_type/issue-10176.rs similarity index 100% rename from src/test/ui/never_type/issue-10176.rs rename to tests/ui/never_type/issue-10176.rs diff --git a/src/test/ui/never_type/issue-10176.stderr b/tests/ui/never_type/issue-10176.stderr similarity index 100% rename from src/test/ui/never_type/issue-10176.stderr rename to tests/ui/never_type/issue-10176.stderr diff --git a/src/test/ui/never_type/issue-13352.rs b/tests/ui/never_type/issue-13352.rs similarity index 100% rename from src/test/ui/never_type/issue-13352.rs rename to tests/ui/never_type/issue-13352.rs diff --git a/src/test/ui/never_type/issue-13352.stderr b/tests/ui/never_type/issue-13352.stderr similarity index 100% rename from src/test/ui/never_type/issue-13352.stderr rename to tests/ui/never_type/issue-13352.stderr diff --git a/src/test/ui/never_type/issue-2149.rs b/tests/ui/never_type/issue-2149.rs similarity index 100% rename from src/test/ui/never_type/issue-2149.rs rename to tests/ui/never_type/issue-2149.rs diff --git a/src/test/ui/never_type/issue-2149.stderr b/tests/ui/never_type/issue-2149.stderr similarity index 100% rename from src/test/ui/never_type/issue-2149.stderr rename to tests/ui/never_type/issue-2149.stderr diff --git a/src/test/ui/never_type/issue-44402.rs b/tests/ui/never_type/issue-44402.rs similarity index 100% rename from src/test/ui/never_type/issue-44402.rs rename to tests/ui/never_type/issue-44402.rs diff --git a/src/test/ui/never_type/issue-51506.rs b/tests/ui/never_type/issue-51506.rs similarity index 100% rename from src/test/ui/never_type/issue-51506.rs rename to tests/ui/never_type/issue-51506.rs diff --git a/src/test/ui/never_type/issue-51506.stderr b/tests/ui/never_type/issue-51506.stderr similarity index 100% rename from src/test/ui/never_type/issue-51506.stderr rename to tests/ui/never_type/issue-51506.stderr diff --git a/src/test/ui/never_type/issue-52443.rs b/tests/ui/never_type/issue-52443.rs similarity index 100% rename from src/test/ui/never_type/issue-52443.rs rename to tests/ui/never_type/issue-52443.rs diff --git a/src/test/ui/never_type/issue-52443.stderr b/tests/ui/never_type/issue-52443.stderr similarity index 100% rename from src/test/ui/never_type/issue-52443.stderr rename to tests/ui/never_type/issue-52443.stderr diff --git a/src/test/ui/never_type/issue-5500-1.rs b/tests/ui/never_type/issue-5500-1.rs similarity index 100% rename from src/test/ui/never_type/issue-5500-1.rs rename to tests/ui/never_type/issue-5500-1.rs diff --git a/src/test/ui/never_type/issue-96335.rs b/tests/ui/never_type/issue-96335.rs similarity index 100% rename from src/test/ui/never_type/issue-96335.rs rename to tests/ui/never_type/issue-96335.rs diff --git a/src/test/ui/never_type/issue-96335.stderr b/tests/ui/never_type/issue-96335.stderr similarity index 100% rename from src/test/ui/never_type/issue-96335.stderr rename to tests/ui/never_type/issue-96335.stderr diff --git a/src/test/ui/never_type/never-assign-dead-code.rs b/tests/ui/never_type/never-assign-dead-code.rs similarity index 100% rename from src/test/ui/never_type/never-assign-dead-code.rs rename to tests/ui/never_type/never-assign-dead-code.rs diff --git a/src/test/ui/never_type/never-assign-dead-code.stderr b/tests/ui/never_type/never-assign-dead-code.stderr similarity index 100% rename from src/test/ui/never_type/never-assign-dead-code.stderr rename to tests/ui/never_type/never-assign-dead-code.stderr diff --git a/src/test/ui/never_type/never-assign-wrong-type.rs b/tests/ui/never_type/never-assign-wrong-type.rs similarity index 100% rename from src/test/ui/never_type/never-assign-wrong-type.rs rename to tests/ui/never_type/never-assign-wrong-type.rs diff --git a/src/test/ui/never_type/never-assign-wrong-type.stderr b/tests/ui/never_type/never-assign-wrong-type.stderr similarity index 100% rename from src/test/ui/never_type/never-assign-wrong-type.stderr rename to tests/ui/never_type/never-assign-wrong-type.stderr diff --git a/src/test/ui/never_type/never-associated-type.rs b/tests/ui/never_type/never-associated-type.rs similarity index 100% rename from src/test/ui/never_type/never-associated-type.rs rename to tests/ui/never_type/never-associated-type.rs diff --git a/src/test/ui/never_type/never-from-impl-is-reserved.rs b/tests/ui/never_type/never-from-impl-is-reserved.rs similarity index 100% rename from src/test/ui/never_type/never-from-impl-is-reserved.rs rename to tests/ui/never_type/never-from-impl-is-reserved.rs diff --git a/src/test/ui/never_type/never-from-impl-is-reserved.stderr b/tests/ui/never_type/never-from-impl-is-reserved.stderr similarity index 100% rename from src/test/ui/never_type/never-from-impl-is-reserved.stderr rename to tests/ui/never_type/never-from-impl-is-reserved.stderr diff --git a/src/test/ui/never_type/never-result.rs b/tests/ui/never_type/never-result.rs similarity index 100% rename from src/test/ui/never_type/never-result.rs rename to tests/ui/never_type/never-result.rs diff --git a/src/test/ui/never_type/never-type-arg.rs b/tests/ui/never_type/never-type-arg.rs similarity index 100% rename from src/test/ui/never_type/never-type-arg.rs rename to tests/ui/never_type/never-type-arg.rs diff --git a/src/test/ui/never_type/never-type-rvalues.rs b/tests/ui/never_type/never-type-rvalues.rs similarity index 100% rename from src/test/ui/never_type/never-type-rvalues.rs rename to tests/ui/never_type/never-type-rvalues.rs diff --git a/src/test/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr b/tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr similarity index 100% rename from src/test/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr rename to tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr diff --git a/src/test/ui/never_type/never-value-fallback-issue-66757.rs b/tests/ui/never_type/never-value-fallback-issue-66757.rs similarity index 100% rename from src/test/ui/never_type/never-value-fallback-issue-66757.rs rename to tests/ui/never_type/never-value-fallback-issue-66757.rs diff --git a/src/test/ui/never_type/never_coercions.rs b/tests/ui/never_type/never_coercions.rs similarity index 100% rename from src/test/ui/never_type/never_coercions.rs rename to tests/ui/never_type/never_coercions.rs diff --git a/src/test/ui/never_type/never_transmute_never.rs b/tests/ui/never_type/never_transmute_never.rs similarity index 100% rename from src/test/ui/never_type/never_transmute_never.rs rename to tests/ui/never_type/never_transmute_never.rs diff --git a/src/test/ui/never_type/return-never-coerce.rs b/tests/ui/never_type/return-never-coerce.rs similarity index 100% rename from src/test/ui/never_type/return-never-coerce.rs rename to tests/ui/never_type/return-never-coerce.rs diff --git a/src/test/ui/never_type/try_from.rs b/tests/ui/never_type/try_from.rs similarity index 100% rename from src/test/ui/never_type/try_from.rs rename to tests/ui/never_type/try_from.rs diff --git a/src/test/ui/new-impl-syntax.rs b/tests/ui/new-impl-syntax.rs similarity index 100% rename from src/test/ui/new-impl-syntax.rs rename to tests/ui/new-impl-syntax.rs diff --git a/src/test/ui/new-import-syntax.rs b/tests/ui/new-import-syntax.rs similarity index 100% rename from src/test/ui/new-import-syntax.rs rename to tests/ui/new-import-syntax.rs diff --git a/src/test/ui/new-style-constants.rs b/tests/ui/new-style-constants.rs similarity index 100% rename from src/test/ui/new-style-constants.rs rename to tests/ui/new-style-constants.rs diff --git a/src/test/ui/new-unicode-escapes.rs b/tests/ui/new-unicode-escapes.rs similarity index 100% rename from src/test/ui/new-unicode-escapes.rs rename to tests/ui/new-unicode-escapes.rs diff --git a/src/test/ui/new-unsafe-pointers.rs b/tests/ui/new-unsafe-pointers.rs similarity index 100% rename from src/test/ui/new-unsafe-pointers.rs rename to tests/ui/new-unsafe-pointers.rs diff --git a/src/test/ui/newlambdas.rs b/tests/ui/newlambdas.rs similarity index 100% rename from src/test/ui/newlambdas.rs rename to tests/ui/newlambdas.rs diff --git a/src/test/ui/newtype-polymorphic.rs b/tests/ui/newtype-polymorphic.rs similarity index 100% rename from src/test/ui/newtype-polymorphic.rs rename to tests/ui/newtype-polymorphic.rs diff --git a/src/test/ui/newtype.rs b/tests/ui/newtype.rs similarity index 100% rename from src/test/ui/newtype.rs rename to tests/ui/newtype.rs diff --git a/src/test/ui/nll/assign-while-to-immutable.rs b/tests/ui/nll/assign-while-to-immutable.rs similarity index 100% rename from src/test/ui/nll/assign-while-to-immutable.rs rename to tests/ui/nll/assign-while-to-immutable.rs diff --git a/src/test/ui/nll/borrow-use-issue-46875.rs b/tests/ui/nll/borrow-use-issue-46875.rs similarity index 100% rename from src/test/ui/nll/borrow-use-issue-46875.rs rename to tests/ui/nll/borrow-use-issue-46875.rs diff --git a/src/test/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.rs b/tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.rs similarity index 100% rename from src/test/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.rs rename to tests/ui/nll/borrowck-thread-local-static-mut-borrow-outlives-fn.rs diff --git a/src/test/ui/nll/borrowed-local-error.rs b/tests/ui/nll/borrowed-local-error.rs similarity index 100% rename from src/test/ui/nll/borrowed-local-error.rs rename to tests/ui/nll/borrowed-local-error.rs diff --git a/src/test/ui/nll/borrowed-local-error.stderr b/tests/ui/nll/borrowed-local-error.stderr similarity index 100% rename from src/test/ui/nll/borrowed-local-error.stderr rename to tests/ui/nll/borrowed-local-error.stderr diff --git a/src/test/ui/nll/borrowed-match-issue-45045.rs b/tests/ui/nll/borrowed-match-issue-45045.rs similarity index 100% rename from src/test/ui/nll/borrowed-match-issue-45045.rs rename to tests/ui/nll/borrowed-match-issue-45045.rs diff --git a/src/test/ui/nll/borrowed-match-issue-45045.stderr b/tests/ui/nll/borrowed-match-issue-45045.stderr similarity index 100% rename from src/test/ui/nll/borrowed-match-issue-45045.stderr rename to tests/ui/nll/borrowed-match-issue-45045.stderr diff --git a/src/test/ui/nll/borrowed-referent-issue-38899.rs b/tests/ui/nll/borrowed-referent-issue-38899.rs similarity index 100% rename from src/test/ui/nll/borrowed-referent-issue-38899.rs rename to tests/ui/nll/borrowed-referent-issue-38899.rs diff --git a/src/test/ui/nll/borrowed-referent-issue-38899.stderr b/tests/ui/nll/borrowed-referent-issue-38899.stderr similarity index 100% rename from src/test/ui/nll/borrowed-referent-issue-38899.stderr rename to tests/ui/nll/borrowed-referent-issue-38899.stderr diff --git a/src/test/ui/nll/borrowed-temporary-error.rs b/tests/ui/nll/borrowed-temporary-error.rs similarity index 100% rename from src/test/ui/nll/borrowed-temporary-error.rs rename to tests/ui/nll/borrowed-temporary-error.rs diff --git a/src/test/ui/nll/borrowed-temporary-error.stderr b/tests/ui/nll/borrowed-temporary-error.stderr similarity index 100% rename from src/test/ui/nll/borrowed-temporary-error.stderr rename to tests/ui/nll/borrowed-temporary-error.stderr diff --git a/src/test/ui/nll/borrowed-universal-error-2.rs b/tests/ui/nll/borrowed-universal-error-2.rs similarity index 100% rename from src/test/ui/nll/borrowed-universal-error-2.rs rename to tests/ui/nll/borrowed-universal-error-2.rs diff --git a/src/test/ui/nll/borrowed-universal-error-2.stderr b/tests/ui/nll/borrowed-universal-error-2.stderr similarity index 100% rename from src/test/ui/nll/borrowed-universal-error-2.stderr rename to tests/ui/nll/borrowed-universal-error-2.stderr diff --git a/src/test/ui/nll/borrowed-universal-error.rs b/tests/ui/nll/borrowed-universal-error.rs similarity index 100% rename from src/test/ui/nll/borrowed-universal-error.rs rename to tests/ui/nll/borrowed-universal-error.rs diff --git a/src/test/ui/nll/borrowed-universal-error.stderr b/tests/ui/nll/borrowed-universal-error.stderr similarity index 100% rename from src/test/ui/nll/borrowed-universal-error.stderr rename to tests/ui/nll/borrowed-universal-error.stderr diff --git a/src/test/ui/nll/cannot-move-block-spans.rs b/tests/ui/nll/cannot-move-block-spans.rs similarity index 100% rename from src/test/ui/nll/cannot-move-block-spans.rs rename to tests/ui/nll/cannot-move-block-spans.rs diff --git a/src/test/ui/nll/cannot-move-block-spans.stderr b/tests/ui/nll/cannot-move-block-spans.stderr similarity index 100% rename from src/test/ui/nll/cannot-move-block-spans.stderr rename to tests/ui/nll/cannot-move-block-spans.stderr diff --git a/src/test/ui/nll/capture-mut-ref.fixed b/tests/ui/nll/capture-mut-ref.fixed similarity index 100% rename from src/test/ui/nll/capture-mut-ref.fixed rename to tests/ui/nll/capture-mut-ref.fixed diff --git a/src/test/ui/nll/capture-mut-ref.rs b/tests/ui/nll/capture-mut-ref.rs similarity index 100% rename from src/test/ui/nll/capture-mut-ref.rs rename to tests/ui/nll/capture-mut-ref.rs diff --git a/src/test/ui/nll/capture-mut-ref.stderr b/tests/ui/nll/capture-mut-ref.stderr similarity index 100% rename from src/test/ui/nll/capture-mut-ref.stderr rename to tests/ui/nll/capture-mut-ref.stderr diff --git a/src/test/ui/nll/capture-ref-in-struct.rs b/tests/ui/nll/capture-ref-in-struct.rs similarity index 100% rename from src/test/ui/nll/capture-ref-in-struct.rs rename to tests/ui/nll/capture-ref-in-struct.rs diff --git a/src/test/ui/nll/capture-ref-in-struct.stderr b/tests/ui/nll/capture-ref-in-struct.stderr similarity index 100% rename from src/test/ui/nll/capture-ref-in-struct.stderr rename to tests/ui/nll/capture-ref-in-struct.stderr diff --git a/src/test/ui/nll/closure-access-spans.rs b/tests/ui/nll/closure-access-spans.rs similarity index 100% rename from src/test/ui/nll/closure-access-spans.rs rename to tests/ui/nll/closure-access-spans.rs diff --git a/src/test/ui/nll/closure-access-spans.stderr b/tests/ui/nll/closure-access-spans.stderr similarity index 100% rename from src/test/ui/nll/closure-access-spans.stderr rename to tests/ui/nll/closure-access-spans.stderr diff --git a/src/test/ui/nll/closure-borrow-spans.rs b/tests/ui/nll/closure-borrow-spans.rs similarity index 100% rename from src/test/ui/nll/closure-borrow-spans.rs rename to tests/ui/nll/closure-borrow-spans.rs diff --git a/src/test/ui/nll/closure-borrow-spans.stderr b/tests/ui/nll/closure-borrow-spans.stderr similarity index 100% rename from src/test/ui/nll/closure-borrow-spans.stderr rename to tests/ui/nll/closure-borrow-spans.stderr diff --git a/src/test/ui/nll/closure-captures.rs b/tests/ui/nll/closure-captures.rs similarity index 100% rename from src/test/ui/nll/closure-captures.rs rename to tests/ui/nll/closure-captures.rs diff --git a/src/test/ui/nll/closure-captures.stderr b/tests/ui/nll/closure-captures.stderr similarity index 100% rename from src/test/ui/nll/closure-captures.stderr rename to tests/ui/nll/closure-captures.stderr diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs b/tests/ui/nll/closure-malformed-projection-input-issue-102800.rs similarity index 100% rename from src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs rename to tests/ui/nll/closure-malformed-projection-input-issue-102800.rs diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr b/tests/ui/nll/closure-malformed-projection-input-issue-102800.stderr similarity index 100% rename from src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr rename to tests/ui/nll/closure-malformed-projection-input-issue-102800.stderr diff --git a/src/test/ui/nll/closure-move-spans.rs b/tests/ui/nll/closure-move-spans.rs similarity index 100% rename from src/test/ui/nll/closure-move-spans.rs rename to tests/ui/nll/closure-move-spans.rs diff --git a/src/test/ui/nll/closure-move-spans.stderr b/tests/ui/nll/closure-move-spans.stderr similarity index 100% rename from src/test/ui/nll/closure-move-spans.stderr rename to tests/ui/nll/closure-move-spans.stderr diff --git a/src/test/ui/nll/closure-requirements/escape-argument-callee.rs b/tests/ui/nll/closure-requirements/escape-argument-callee.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-argument-callee.rs rename to tests/ui/nll/closure-requirements/escape-argument-callee.rs diff --git a/src/test/ui/nll/closure-requirements/escape-argument-callee.stderr b/tests/ui/nll/closure-requirements/escape-argument-callee.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-argument-callee.stderr rename to tests/ui/nll/closure-requirements/escape-argument-callee.stderr diff --git a/src/test/ui/nll/closure-requirements/escape-argument.rs b/tests/ui/nll/closure-requirements/escape-argument.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-argument.rs rename to tests/ui/nll/closure-requirements/escape-argument.rs diff --git a/src/test/ui/nll/closure-requirements/escape-argument.stderr b/tests/ui/nll/closure-requirements/escape-argument.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-argument.stderr rename to tests/ui/nll/closure-requirements/escape-argument.stderr diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-nested.rs b/tests/ui/nll/closure-requirements/escape-upvar-nested.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-upvar-nested.rs rename to tests/ui/nll/closure-requirements/escape-upvar-nested.rs diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-nested.stderr b/tests/ui/nll/closure-requirements/escape-upvar-nested.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-upvar-nested.stderr rename to tests/ui/nll/closure-requirements/escape-upvar-nested.stderr diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-ref.rs b/tests/ui/nll/closure-requirements/escape-upvar-ref.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-upvar-ref.rs rename to tests/ui/nll/closure-requirements/escape-upvar-ref.rs diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-ref.stderr b/tests/ui/nll/closure-requirements/escape-upvar-ref.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/escape-upvar-ref.stderr rename to tests/ui/nll/closure-requirements/escape-upvar-ref.stderr diff --git a/src/test/ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs b/tests/ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs rename to tests/ui/nll/closure-requirements/issue-58127-mutliple-requirements.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs b/tests/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs b/tests/ui/nll/closure-requirements/propagate-approximated-ref.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-ref.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-ref.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-ref.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-val.rs b/tests/ui/nll/closure-requirements/propagate-approximated-val.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-val.rs rename to tests/ui/nll/closure-requirements/propagate-approximated-val.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr b/tests/ui/nll/closure-requirements/propagate-approximated-val.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr rename to tests/ui/nll/closure-requirements/propagate-approximated-val.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs b/tests/ui/nll/closure-requirements/propagate-despite-same-free-region.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs rename to tests/ui/nll/closure-requirements/propagate-despite-same-free-region.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr b/tests/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr rename to tests/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs b/tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs rename to tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr b/tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr rename to tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs b/tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs rename to tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr b/tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr rename to tests/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs b/tests/ui/nll/closure-requirements/propagate-from-trait-match.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs rename to tests/ui/nll/closure-requirements/propagate-from-trait-match.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr b/tests/ui/nll/closure-requirements/propagate-from-trait-match.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr rename to tests/ui/nll/closure-requirements/propagate-from-trait-match.stderr diff --git a/src/test/ui/nll/closure-requirements/propagate-multiple-requirements.rs b/tests/ui/nll/closure-requirements/propagate-multiple-requirements.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-multiple-requirements.rs rename to tests/ui/nll/closure-requirements/propagate-multiple-requirements.rs diff --git a/src/test/ui/nll/closure-requirements/propagate-multiple-requirements.stderr b/tests/ui/nll/closure-requirements/propagate-multiple-requirements.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/propagate-multiple-requirements.stderr rename to tests/ui/nll/closure-requirements/propagate-multiple-requirements.stderr diff --git a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs b/tests/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs rename to tests/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs diff --git a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr b/tests/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr rename to tests/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr diff --git a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs b/tests/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs rename to tests/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs diff --git a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr b/tests/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr rename to tests/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs b/tests/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs rename to tests/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr b/tests/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr rename to tests/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs b/tests/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs rename to tests/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs diff --git a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs b/tests/ui/nll/closure-requirements/return-wrong-bound-region.rs similarity index 100% rename from src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs rename to tests/ui/nll/closure-requirements/return-wrong-bound-region.rs diff --git a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr b/tests/ui/nll/closure-requirements/return-wrong-bound-region.stderr similarity index 100% rename from src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr rename to tests/ui/nll/closure-requirements/return-wrong-bound-region.stderr diff --git a/src/test/ui/nll/closure-use-spans.rs b/tests/ui/nll/closure-use-spans.rs similarity index 100% rename from src/test/ui/nll/closure-use-spans.rs rename to tests/ui/nll/closure-use-spans.rs diff --git a/src/test/ui/nll/closure-use-spans.stderr b/tests/ui/nll/closure-use-spans.stderr similarity index 100% rename from src/test/ui/nll/closure-use-spans.stderr rename to tests/ui/nll/closure-use-spans.stderr diff --git a/src/test/ui/nll/closures-in-loops.rs b/tests/ui/nll/closures-in-loops.rs similarity index 100% rename from src/test/ui/nll/closures-in-loops.rs rename to tests/ui/nll/closures-in-loops.rs diff --git a/src/test/ui/nll/closures-in-loops.stderr b/tests/ui/nll/closures-in-loops.stderr similarity index 100% rename from src/test/ui/nll/closures-in-loops.stderr rename to tests/ui/nll/closures-in-loops.stderr diff --git a/src/test/ui/nll/constant-thread-locals-issue-47053.rs b/tests/ui/nll/constant-thread-locals-issue-47053.rs similarity index 100% rename from src/test/ui/nll/constant-thread-locals-issue-47053.rs rename to tests/ui/nll/constant-thread-locals-issue-47053.rs diff --git a/src/test/ui/nll/constant-thread-locals-issue-47053.stderr b/tests/ui/nll/constant-thread-locals-issue-47053.stderr similarity index 100% rename from src/test/ui/nll/constant-thread-locals-issue-47053.stderr rename to tests/ui/nll/constant-thread-locals-issue-47053.stderr diff --git a/src/test/ui/nll/constant.rs b/tests/ui/nll/constant.rs similarity index 100% rename from src/test/ui/nll/constant.rs rename to tests/ui/nll/constant.rs diff --git a/src/test/ui/nll/continue-after-missing-main.rs b/tests/ui/nll/continue-after-missing-main.rs similarity index 100% rename from src/test/ui/nll/continue-after-missing-main.rs rename to tests/ui/nll/continue-after-missing-main.rs diff --git a/src/test/ui/nll/continue-after-missing-main.stderr b/tests/ui/nll/continue-after-missing-main.stderr similarity index 100% rename from src/test/ui/nll/continue-after-missing-main.stderr rename to tests/ui/nll/continue-after-missing-main.stderr diff --git a/src/test/ui/nll/decl-macro-illegal-copy.rs b/tests/ui/nll/decl-macro-illegal-copy.rs similarity index 100% rename from src/test/ui/nll/decl-macro-illegal-copy.rs rename to tests/ui/nll/decl-macro-illegal-copy.rs diff --git a/src/test/ui/nll/decl-macro-illegal-copy.stderr b/tests/ui/nll/decl-macro-illegal-copy.stderr similarity index 100% rename from src/test/ui/nll/decl-macro-illegal-copy.stderr rename to tests/ui/nll/decl-macro-illegal-copy.stderr diff --git a/src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.rs b/tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.rs similarity index 100% rename from src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.rs rename to tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.rs diff --git a/src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.stderr b/tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.stderr similarity index 100% rename from src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.stderr rename to tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy-proj.stderr diff --git a/src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs b/tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs similarity index 100% rename from src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs rename to tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy.rs diff --git a/src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy.stderr b/tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy.stderr similarity index 100% rename from src/test/ui/nll/do-not-ignore-lifetime-bounds-in-copy.stderr rename to tests/ui/nll/do-not-ignore-lifetime-bounds-in-copy.stderr diff --git a/src/test/ui/nll/dont-print-desugared.rs b/tests/ui/nll/dont-print-desugared.rs similarity index 100% rename from src/test/ui/nll/dont-print-desugared.rs rename to tests/ui/nll/dont-print-desugared.rs diff --git a/src/test/ui/nll/dont-print-desugared.stderr b/tests/ui/nll/dont-print-desugared.stderr similarity index 100% rename from src/test/ui/nll/dont-print-desugared.stderr rename to tests/ui/nll/dont-print-desugared.stderr diff --git a/src/test/ui/nll/drop-may-dangle.rs b/tests/ui/nll/drop-may-dangle.rs similarity index 100% rename from src/test/ui/nll/drop-may-dangle.rs rename to tests/ui/nll/drop-may-dangle.rs diff --git a/src/test/ui/nll/drop-no-may-dangle.rs b/tests/ui/nll/drop-no-may-dangle.rs similarity index 100% rename from src/test/ui/nll/drop-no-may-dangle.rs rename to tests/ui/nll/drop-no-may-dangle.rs diff --git a/src/test/ui/nll/drop-no-may-dangle.stderr b/tests/ui/nll/drop-no-may-dangle.stderr similarity index 100% rename from src/test/ui/nll/drop-no-may-dangle.stderr rename to tests/ui/nll/drop-no-may-dangle.stderr diff --git a/src/test/ui/nll/empty-type-predicate-2.rs b/tests/ui/nll/empty-type-predicate-2.rs similarity index 100% rename from src/test/ui/nll/empty-type-predicate-2.rs rename to tests/ui/nll/empty-type-predicate-2.rs diff --git a/src/test/ui/nll/empty-type-predicate.rs b/tests/ui/nll/empty-type-predicate.rs similarity index 100% rename from src/test/ui/nll/empty-type-predicate.rs rename to tests/ui/nll/empty-type-predicate.rs diff --git a/src/test/ui/nll/enum-drop-access.rs b/tests/ui/nll/enum-drop-access.rs similarity index 100% rename from src/test/ui/nll/enum-drop-access.rs rename to tests/ui/nll/enum-drop-access.rs diff --git a/src/test/ui/nll/enum-drop-access.stderr b/tests/ui/nll/enum-drop-access.stderr similarity index 100% rename from src/test/ui/nll/enum-drop-access.stderr rename to tests/ui/nll/enum-drop-access.stderr diff --git a/src/test/ui/nll/extra-unused-mut.rs b/tests/ui/nll/extra-unused-mut.rs similarity index 100% rename from src/test/ui/nll/extra-unused-mut.rs rename to tests/ui/nll/extra-unused-mut.rs diff --git a/src/test/ui/nll/generator-distinct-lifetime.rs b/tests/ui/nll/generator-distinct-lifetime.rs similarity index 100% rename from src/test/ui/nll/generator-distinct-lifetime.rs rename to tests/ui/nll/generator-distinct-lifetime.rs diff --git a/src/test/ui/nll/generator-upvar-mutability.rs b/tests/ui/nll/generator-upvar-mutability.rs similarity index 100% rename from src/test/ui/nll/generator-upvar-mutability.rs rename to tests/ui/nll/generator-upvar-mutability.rs diff --git a/src/test/ui/nll/generator-upvar-mutability.stderr b/tests/ui/nll/generator-upvar-mutability.stderr similarity index 100% rename from src/test/ui/nll/generator-upvar-mutability.stderr rename to tests/ui/nll/generator-upvar-mutability.stderr diff --git a/src/test/ui/nll/get_default.polonius.stderr b/tests/ui/nll/get_default.polonius.stderr similarity index 100% rename from src/test/ui/nll/get_default.polonius.stderr rename to tests/ui/nll/get_default.polonius.stderr diff --git a/src/test/ui/nll/get_default.rs b/tests/ui/nll/get_default.rs similarity index 100% rename from src/test/ui/nll/get_default.rs rename to tests/ui/nll/get_default.rs diff --git a/src/test/ui/nll/get_default.stderr b/tests/ui/nll/get_default.stderr similarity index 100% rename from src/test/ui/nll/get_default.stderr rename to tests/ui/nll/get_default.stderr diff --git a/src/test/ui/nll/guarantor-issue-46974.rs b/tests/ui/nll/guarantor-issue-46974.rs similarity index 100% rename from src/test/ui/nll/guarantor-issue-46974.rs rename to tests/ui/nll/guarantor-issue-46974.rs diff --git a/src/test/ui/nll/guarantor-issue-46974.stderr b/tests/ui/nll/guarantor-issue-46974.stderr similarity index 100% rename from src/test/ui/nll/guarantor-issue-46974.stderr rename to tests/ui/nll/guarantor-issue-46974.stderr diff --git a/src/test/ui/nll/issue-16223.rs b/tests/ui/nll/issue-16223.rs similarity index 100% rename from src/test/ui/nll/issue-16223.rs rename to tests/ui/nll/issue-16223.rs diff --git a/src/test/ui/nll/issue-21114-ebfull.rs b/tests/ui/nll/issue-21114-ebfull.rs similarity index 100% rename from src/test/ui/nll/issue-21114-ebfull.rs rename to tests/ui/nll/issue-21114-ebfull.rs diff --git a/src/test/ui/nll/issue-21114-kixunil.rs b/tests/ui/nll/issue-21114-kixunil.rs similarity index 100% rename from src/test/ui/nll/issue-21114-kixunil.rs rename to tests/ui/nll/issue-21114-kixunil.rs diff --git a/src/test/ui/nll/issue-21232-partial-init-and-erroneous-use.rs b/tests/ui/nll/issue-21232-partial-init-and-erroneous-use.rs similarity index 100% rename from src/test/ui/nll/issue-21232-partial-init-and-erroneous-use.rs rename to tests/ui/nll/issue-21232-partial-init-and-erroneous-use.rs diff --git a/src/test/ui/nll/issue-21232-partial-init-and-erroneous-use.stderr b/tests/ui/nll/issue-21232-partial-init-and-erroneous-use.stderr similarity index 100% rename from src/test/ui/nll/issue-21232-partial-init-and-erroneous-use.stderr rename to tests/ui/nll/issue-21232-partial-init-and-erroneous-use.stderr diff --git a/src/test/ui/nll/issue-21232-partial-init-and-use.rs b/tests/ui/nll/issue-21232-partial-init-and-use.rs similarity index 100% rename from src/test/ui/nll/issue-21232-partial-init-and-use.rs rename to tests/ui/nll/issue-21232-partial-init-and-use.rs diff --git a/src/test/ui/nll/issue-21232-partial-init-and-use.stderr b/tests/ui/nll/issue-21232-partial-init-and-use.stderr similarity index 100% rename from src/test/ui/nll/issue-21232-partial-init-and-use.stderr rename to tests/ui/nll/issue-21232-partial-init-and-use.stderr diff --git a/src/test/ui/nll/issue-22323-temp-destruction.rs b/tests/ui/nll/issue-22323-temp-destruction.rs similarity index 100% rename from src/test/ui/nll/issue-22323-temp-destruction.rs rename to tests/ui/nll/issue-22323-temp-destruction.rs diff --git a/src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs b/tests/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs similarity index 100% rename from src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs rename to tests/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs diff --git a/src/test/ui/nll/issue-27282-move-match-input-into-guard.rs b/tests/ui/nll/issue-27282-move-match-input-into-guard.rs similarity index 100% rename from src/test/ui/nll/issue-27282-move-match-input-into-guard.rs rename to tests/ui/nll/issue-27282-move-match-input-into-guard.rs diff --git a/src/test/ui/nll/issue-27282-move-match-input-into-guard.stderr b/tests/ui/nll/issue-27282-move-match-input-into-guard.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-move-match-input-into-guard.stderr rename to tests/ui/nll/issue-27282-move-match-input-into-guard.stderr diff --git a/src/test/ui/nll/issue-27282-move-ref-mut-into-guard.rs b/tests/ui/nll/issue-27282-move-ref-mut-into-guard.rs similarity index 100% rename from src/test/ui/nll/issue-27282-move-ref-mut-into-guard.rs rename to tests/ui/nll/issue-27282-move-ref-mut-into-guard.rs diff --git a/src/test/ui/nll/issue-27282-move-ref-mut-into-guard.stderr b/tests/ui/nll/issue-27282-move-ref-mut-into-guard.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-move-ref-mut-into-guard.stderr rename to tests/ui/nll/issue-27282-move-ref-mut-into-guard.stderr diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-1.rs b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-1.rs similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-1.rs rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-1.rs diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-1.stderr b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-1.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-1.stderr rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-1.stderr diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-2.rs b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-2.rs similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-2.rs rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-2.rs diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-2.stderr b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-2.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-2.stderr rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-2.stderr diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-3.rs b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-3.rs similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-3.rs rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-3.rs diff --git a/src/test/ui/nll/issue-27282-mutate-before-diverging-arm-3.stderr b/tests/ui/nll/issue-27282-mutate-before-diverging-arm-3.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-mutate-before-diverging-arm-3.stderr rename to tests/ui/nll/issue-27282-mutate-before-diverging-arm-3.stderr diff --git a/src/test/ui/nll/issue-27282-mutation-in-guard.rs b/tests/ui/nll/issue-27282-mutation-in-guard.rs similarity index 100% rename from src/test/ui/nll/issue-27282-mutation-in-guard.rs rename to tests/ui/nll/issue-27282-mutation-in-guard.rs diff --git a/src/test/ui/nll/issue-27282-mutation-in-guard.stderr b/tests/ui/nll/issue-27282-mutation-in-guard.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-mutation-in-guard.stderr rename to tests/ui/nll/issue-27282-mutation-in-guard.stderr diff --git a/src/test/ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs b/tests/ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs similarity index 100% rename from src/test/ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs rename to tests/ui/nll/issue-27282-reborrow-ref-mut-in-guard.rs diff --git a/src/test/ui/nll/issue-27282-reborrow-ref-mut-in-guard.stderr b/tests/ui/nll/issue-27282-reborrow-ref-mut-in-guard.stderr similarity index 100% rename from src/test/ui/nll/issue-27282-reborrow-ref-mut-in-guard.stderr rename to tests/ui/nll/issue-27282-reborrow-ref-mut-in-guard.stderr diff --git a/src/test/ui/nll/issue-27868.rs b/tests/ui/nll/issue-27868.rs similarity index 100% rename from src/test/ui/nll/issue-27868.rs rename to tests/ui/nll/issue-27868.rs diff --git a/src/test/ui/nll/issue-27868.stderr b/tests/ui/nll/issue-27868.stderr similarity index 100% rename from src/test/ui/nll/issue-27868.stderr rename to tests/ui/nll/issue-27868.stderr diff --git a/src/test/ui/nll/issue-30104.rs b/tests/ui/nll/issue-30104.rs similarity index 100% rename from src/test/ui/nll/issue-30104.rs rename to tests/ui/nll/issue-30104.rs diff --git a/src/test/ui/nll/issue-31567.rs b/tests/ui/nll/issue-31567.rs similarity index 100% rename from src/test/ui/nll/issue-31567.rs rename to tests/ui/nll/issue-31567.rs diff --git a/src/test/ui/nll/issue-31567.stderr b/tests/ui/nll/issue-31567.stderr similarity index 100% rename from src/test/ui/nll/issue-31567.stderr rename to tests/ui/nll/issue-31567.stderr diff --git a/src/test/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs b/tests/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs similarity index 100% rename from src/test/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs rename to tests/ui/nll/issue-32382-index-assoc-type-with-lifetime.rs diff --git a/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs b/tests/ui/nll/issue-42574-diagnostic-in-nested-closure.rs similarity index 100% rename from src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.rs rename to tests/ui/nll/issue-42574-diagnostic-in-nested-closure.rs diff --git a/src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr b/tests/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr similarity index 100% rename from src/test/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr rename to tests/ui/nll/issue-42574-diagnostic-in-nested-closure.stderr diff --git a/src/test/ui/nll/issue-43058.rs b/tests/ui/nll/issue-43058.rs similarity index 100% rename from src/test/ui/nll/issue-43058.rs rename to tests/ui/nll/issue-43058.rs diff --git a/src/test/ui/nll/issue-45157.rs b/tests/ui/nll/issue-45157.rs similarity index 100% rename from src/test/ui/nll/issue-45157.rs rename to tests/ui/nll/issue-45157.rs diff --git a/src/test/ui/nll/issue-45157.stderr b/tests/ui/nll/issue-45157.stderr similarity index 100% rename from src/test/ui/nll/issue-45157.stderr rename to tests/ui/nll/issue-45157.stderr diff --git a/src/test/ui/nll/issue-45696-long-live-borrows-in-boxes.rs b/tests/ui/nll/issue-45696-long-live-borrows-in-boxes.rs similarity index 100% rename from src/test/ui/nll/issue-45696-long-live-borrows-in-boxes.rs rename to tests/ui/nll/issue-45696-long-live-borrows-in-boxes.rs diff --git a/src/test/ui/nll/issue-45696-no-variant-box-recur.rs b/tests/ui/nll/issue-45696-no-variant-box-recur.rs similarity index 100% rename from src/test/ui/nll/issue-45696-no-variant-box-recur.rs rename to tests/ui/nll/issue-45696-no-variant-box-recur.rs diff --git a/src/test/ui/nll/issue-45696-scribble-on-boxed-borrow.rs b/tests/ui/nll/issue-45696-scribble-on-boxed-borrow.rs similarity index 100% rename from src/test/ui/nll/issue-45696-scribble-on-boxed-borrow.rs rename to tests/ui/nll/issue-45696-scribble-on-boxed-borrow.rs diff --git a/src/test/ui/nll/issue-45696-scribble-on-boxed-borrow.stderr b/tests/ui/nll/issue-45696-scribble-on-boxed-borrow.stderr similarity index 100% rename from src/test/ui/nll/issue-45696-scribble-on-boxed-borrow.stderr rename to tests/ui/nll/issue-45696-scribble-on-boxed-borrow.stderr diff --git a/src/test/ui/nll/issue-46023.rs b/tests/ui/nll/issue-46023.rs similarity index 100% rename from src/test/ui/nll/issue-46023.rs rename to tests/ui/nll/issue-46023.rs diff --git a/src/test/ui/nll/issue-46023.stderr b/tests/ui/nll/issue-46023.stderr similarity index 100% rename from src/test/ui/nll/issue-46023.stderr rename to tests/ui/nll/issue-46023.stderr diff --git a/src/test/ui/nll/issue-46036.rs b/tests/ui/nll/issue-46036.rs similarity index 100% rename from src/test/ui/nll/issue-46036.rs rename to tests/ui/nll/issue-46036.rs diff --git a/src/test/ui/nll/issue-46036.stderr b/tests/ui/nll/issue-46036.stderr similarity index 100% rename from src/test/ui/nll/issue-46036.stderr rename to tests/ui/nll/issue-46036.stderr diff --git a/src/test/ui/nll/issue-46589.rs b/tests/ui/nll/issue-46589.rs similarity index 100% rename from src/test/ui/nll/issue-46589.rs rename to tests/ui/nll/issue-46589.rs diff --git a/src/test/ui/nll/issue-46589.stderr b/tests/ui/nll/issue-46589.stderr similarity index 100% rename from src/test/ui/nll/issue-46589.stderr rename to tests/ui/nll/issue-46589.stderr diff --git a/src/test/ui/nll/issue-47022.rs b/tests/ui/nll/issue-47022.rs similarity index 100% rename from src/test/ui/nll/issue-47022.rs rename to tests/ui/nll/issue-47022.rs diff --git a/src/test/ui/nll/issue-47153-generic-const.rs b/tests/ui/nll/issue-47153-generic-const.rs similarity index 100% rename from src/test/ui/nll/issue-47153-generic-const.rs rename to tests/ui/nll/issue-47153-generic-const.rs diff --git a/src/test/ui/nll/issue-47388.rs b/tests/ui/nll/issue-47388.rs similarity index 100% rename from src/test/ui/nll/issue-47388.rs rename to tests/ui/nll/issue-47388.rs diff --git a/src/test/ui/nll/issue-47388.stderr b/tests/ui/nll/issue-47388.stderr similarity index 100% rename from src/test/ui/nll/issue-47388.stderr rename to tests/ui/nll/issue-47388.stderr diff --git a/src/test/ui/nll/issue-47470.rs b/tests/ui/nll/issue-47470.rs similarity index 100% rename from src/test/ui/nll/issue-47470.rs rename to tests/ui/nll/issue-47470.rs diff --git a/src/test/ui/nll/issue-47470.stderr b/tests/ui/nll/issue-47470.stderr similarity index 100% rename from src/test/ui/nll/issue-47470.stderr rename to tests/ui/nll/issue-47470.stderr diff --git a/src/test/ui/nll/issue-47589.rs b/tests/ui/nll/issue-47589.rs similarity index 100% rename from src/test/ui/nll/issue-47589.rs rename to tests/ui/nll/issue-47589.rs diff --git a/src/test/ui/nll/issue-48070.rs b/tests/ui/nll/issue-48070.rs similarity index 100% rename from src/test/ui/nll/issue-48070.rs rename to tests/ui/nll/issue-48070.rs diff --git a/src/test/ui/nll/issue-48238.rs b/tests/ui/nll/issue-48238.rs similarity index 100% rename from src/test/ui/nll/issue-48238.rs rename to tests/ui/nll/issue-48238.rs diff --git a/src/test/ui/nll/issue-48238.stderr b/tests/ui/nll/issue-48238.stderr similarity index 100% rename from src/test/ui/nll/issue-48238.stderr rename to tests/ui/nll/issue-48238.stderr diff --git a/src/test/ui/nll/issue-48623-closure.rs b/tests/ui/nll/issue-48623-closure.rs similarity index 100% rename from src/test/ui/nll/issue-48623-closure.rs rename to tests/ui/nll/issue-48623-closure.rs diff --git a/src/test/ui/nll/issue-48623-generator.rs b/tests/ui/nll/issue-48623-generator.rs similarity index 100% rename from src/test/ui/nll/issue-48623-generator.rs rename to tests/ui/nll/issue-48623-generator.rs diff --git a/src/test/ui/nll/issue-48623-generator.stderr b/tests/ui/nll/issue-48623-generator.stderr similarity index 100% rename from src/test/ui/nll/issue-48623-generator.stderr rename to tests/ui/nll/issue-48623-generator.stderr diff --git a/src/test/ui/nll/issue-48697.rs b/tests/ui/nll/issue-48697.rs similarity index 100% rename from src/test/ui/nll/issue-48697.rs rename to tests/ui/nll/issue-48697.rs diff --git a/src/test/ui/nll/issue-48697.stderr b/tests/ui/nll/issue-48697.stderr similarity index 100% rename from src/test/ui/nll/issue-48697.stderr rename to tests/ui/nll/issue-48697.stderr diff --git a/src/test/ui/nll/issue-48803.rs b/tests/ui/nll/issue-48803.rs similarity index 100% rename from src/test/ui/nll/issue-48803.rs rename to tests/ui/nll/issue-48803.rs diff --git a/src/test/ui/nll/issue-48803.stderr b/tests/ui/nll/issue-48803.stderr similarity index 100% rename from src/test/ui/nll/issue-48803.stderr rename to tests/ui/nll/issue-48803.stderr diff --git a/src/test/ui/nll/issue-50343.rs b/tests/ui/nll/issue-50343.rs similarity index 100% rename from src/test/ui/nll/issue-50343.rs rename to tests/ui/nll/issue-50343.rs diff --git a/src/test/ui/nll/issue-50461-used-mut-from-moves.rs b/tests/ui/nll/issue-50461-used-mut-from-moves.rs similarity index 100% rename from src/test/ui/nll/issue-50461-used-mut-from-moves.rs rename to tests/ui/nll/issue-50461-used-mut-from-moves.rs diff --git a/src/test/ui/nll/issue-50716-1.rs b/tests/ui/nll/issue-50716-1.rs similarity index 100% rename from src/test/ui/nll/issue-50716-1.rs rename to tests/ui/nll/issue-50716-1.rs diff --git a/src/test/ui/nll/issue-50716.rs b/tests/ui/nll/issue-50716.rs similarity index 100% rename from src/test/ui/nll/issue-50716.rs rename to tests/ui/nll/issue-50716.rs diff --git a/src/test/ui/nll/issue-50716.stderr b/tests/ui/nll/issue-50716.stderr similarity index 100% rename from src/test/ui/nll/issue-50716.stderr rename to tests/ui/nll/issue-50716.stderr diff --git a/src/test/ui/nll/issue-51191.rs b/tests/ui/nll/issue-51191.rs similarity index 100% rename from src/test/ui/nll/issue-51191.rs rename to tests/ui/nll/issue-51191.rs diff --git a/src/test/ui/nll/issue-51191.stderr b/tests/ui/nll/issue-51191.stderr similarity index 100% rename from src/test/ui/nll/issue-51191.stderr rename to tests/ui/nll/issue-51191.stderr diff --git a/src/test/ui/nll/issue-51244.rs b/tests/ui/nll/issue-51244.rs similarity index 100% rename from src/test/ui/nll/issue-51244.rs rename to tests/ui/nll/issue-51244.rs diff --git a/src/test/ui/nll/issue-51244.stderr b/tests/ui/nll/issue-51244.stderr similarity index 100% rename from src/test/ui/nll/issue-51244.stderr rename to tests/ui/nll/issue-51244.stderr diff --git a/src/test/ui/nll/issue-51268.rs b/tests/ui/nll/issue-51268.rs similarity index 100% rename from src/test/ui/nll/issue-51268.rs rename to tests/ui/nll/issue-51268.rs diff --git a/src/test/ui/nll/issue-51268.stderr b/tests/ui/nll/issue-51268.stderr similarity index 100% rename from src/test/ui/nll/issue-51268.stderr rename to tests/ui/nll/issue-51268.stderr diff --git a/src/test/ui/nll/issue-51345-2.rs b/tests/ui/nll/issue-51345-2.rs similarity index 100% rename from src/test/ui/nll/issue-51345-2.rs rename to tests/ui/nll/issue-51345-2.rs diff --git a/src/test/ui/nll/issue-51351.rs b/tests/ui/nll/issue-51351.rs similarity index 100% rename from src/test/ui/nll/issue-51351.rs rename to tests/ui/nll/issue-51351.rs diff --git a/src/test/ui/nll/issue-51512.rs b/tests/ui/nll/issue-51512.rs similarity index 100% rename from src/test/ui/nll/issue-51512.rs rename to tests/ui/nll/issue-51512.rs diff --git a/src/test/ui/nll/issue-51512.stderr b/tests/ui/nll/issue-51512.stderr similarity index 100% rename from src/test/ui/nll/issue-51512.stderr rename to tests/ui/nll/issue-51512.stderr diff --git a/src/test/ui/nll/issue-51770.rs b/tests/ui/nll/issue-51770.rs similarity index 100% rename from src/test/ui/nll/issue-51770.rs rename to tests/ui/nll/issue-51770.rs diff --git a/src/test/ui/nll/issue-52057.rs b/tests/ui/nll/issue-52057.rs similarity index 100% rename from src/test/ui/nll/issue-52057.rs rename to tests/ui/nll/issue-52057.rs diff --git a/src/test/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs b/tests/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs similarity index 100% rename from src/test/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs rename to tests/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.rs diff --git a/src/test/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.stderr b/tests/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.stderr similarity index 100% rename from src/test/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.stderr rename to tests/ui/nll/issue-52059-report-when-borrow-and-drop-conflict.stderr diff --git a/src/test/ui/nll/issue-52078.rs b/tests/ui/nll/issue-52078.rs similarity index 100% rename from src/test/ui/nll/issue-52078.rs rename to tests/ui/nll/issue-52078.rs diff --git a/src/test/ui/nll/issue-52086.rs b/tests/ui/nll/issue-52086.rs similarity index 100% rename from src/test/ui/nll/issue-52086.rs rename to tests/ui/nll/issue-52086.rs diff --git a/src/test/ui/nll/issue-52086.stderr b/tests/ui/nll/issue-52086.stderr similarity index 100% rename from src/test/ui/nll/issue-52086.stderr rename to tests/ui/nll/issue-52086.stderr diff --git a/src/test/ui/nll/issue-52113.rs b/tests/ui/nll/issue-52113.rs similarity index 100% rename from src/test/ui/nll/issue-52113.rs rename to tests/ui/nll/issue-52113.rs diff --git a/src/test/ui/nll/issue-52113.stderr b/tests/ui/nll/issue-52113.stderr similarity index 100% rename from src/test/ui/nll/issue-52113.stderr rename to tests/ui/nll/issue-52113.stderr diff --git a/src/test/ui/nll/issue-52213.rs b/tests/ui/nll/issue-52213.rs similarity index 100% rename from src/test/ui/nll/issue-52213.rs rename to tests/ui/nll/issue-52213.rs diff --git a/src/test/ui/nll/issue-52213.stderr b/tests/ui/nll/issue-52213.stderr similarity index 100% rename from src/test/ui/nll/issue-52213.stderr rename to tests/ui/nll/issue-52213.stderr diff --git a/src/test/ui/nll/issue-52533-1.rs b/tests/ui/nll/issue-52533-1.rs similarity index 100% rename from src/test/ui/nll/issue-52533-1.rs rename to tests/ui/nll/issue-52533-1.rs diff --git a/src/test/ui/nll/issue-52533-1.stderr b/tests/ui/nll/issue-52533-1.stderr similarity index 100% rename from src/test/ui/nll/issue-52533-1.stderr rename to tests/ui/nll/issue-52533-1.stderr diff --git a/src/test/ui/nll/issue-52534-1.rs b/tests/ui/nll/issue-52534-1.rs similarity index 100% rename from src/test/ui/nll/issue-52534-1.rs rename to tests/ui/nll/issue-52534-1.rs diff --git a/src/test/ui/nll/issue-52534-1.stderr b/tests/ui/nll/issue-52534-1.stderr similarity index 100% rename from src/test/ui/nll/issue-52534-1.stderr rename to tests/ui/nll/issue-52534-1.stderr diff --git a/src/test/ui/nll/issue-52534-2.rs b/tests/ui/nll/issue-52534-2.rs similarity index 100% rename from src/test/ui/nll/issue-52534-2.rs rename to tests/ui/nll/issue-52534-2.rs diff --git a/src/test/ui/nll/issue-52534-2.stderr b/tests/ui/nll/issue-52534-2.stderr similarity index 100% rename from src/test/ui/nll/issue-52534-2.stderr rename to tests/ui/nll/issue-52534-2.stderr diff --git a/src/test/ui/nll/issue-52534.rs b/tests/ui/nll/issue-52534.rs similarity index 100% rename from src/test/ui/nll/issue-52534.rs rename to tests/ui/nll/issue-52534.rs diff --git a/src/test/ui/nll/issue-52534.stderr b/tests/ui/nll/issue-52534.stderr similarity index 100% rename from src/test/ui/nll/issue-52534.stderr rename to tests/ui/nll/issue-52534.stderr diff --git a/src/test/ui/nll/issue-52663-span-decl-captured-variable.rs b/tests/ui/nll/issue-52663-span-decl-captured-variable.rs similarity index 100% rename from src/test/ui/nll/issue-52663-span-decl-captured-variable.rs rename to tests/ui/nll/issue-52663-span-decl-captured-variable.rs diff --git a/src/test/ui/nll/issue-52663-span-decl-captured-variable.stderr b/tests/ui/nll/issue-52663-span-decl-captured-variable.stderr similarity index 100% rename from src/test/ui/nll/issue-52663-span-decl-captured-variable.stderr rename to tests/ui/nll/issue-52663-span-decl-captured-variable.stderr diff --git a/src/test/ui/nll/issue-52663-trait-object.rs b/tests/ui/nll/issue-52663-trait-object.rs similarity index 100% rename from src/test/ui/nll/issue-52663-trait-object.rs rename to tests/ui/nll/issue-52663-trait-object.rs diff --git a/src/test/ui/nll/issue-52663-trait-object.stderr b/tests/ui/nll/issue-52663-trait-object.stderr similarity index 100% rename from src/test/ui/nll/issue-52663-trait-object.stderr rename to tests/ui/nll/issue-52663-trait-object.stderr diff --git a/src/test/ui/nll/issue-52669.rs b/tests/ui/nll/issue-52669.rs similarity index 100% rename from src/test/ui/nll/issue-52669.rs rename to tests/ui/nll/issue-52669.rs diff --git a/src/test/ui/nll/issue-52669.stderr b/tests/ui/nll/issue-52669.stderr similarity index 100% rename from src/test/ui/nll/issue-52669.stderr rename to tests/ui/nll/issue-52669.stderr diff --git a/src/test/ui/nll/issue-52742.rs b/tests/ui/nll/issue-52742.rs similarity index 100% rename from src/test/ui/nll/issue-52742.rs rename to tests/ui/nll/issue-52742.rs diff --git a/src/test/ui/nll/issue-52742.stderr b/tests/ui/nll/issue-52742.stderr similarity index 100% rename from src/test/ui/nll/issue-52742.stderr rename to tests/ui/nll/issue-52742.stderr diff --git a/src/test/ui/nll/issue-52992.rs b/tests/ui/nll/issue-52992.rs similarity index 100% rename from src/test/ui/nll/issue-52992.rs rename to tests/ui/nll/issue-52992.rs diff --git a/src/test/ui/nll/issue-53040.rs b/tests/ui/nll/issue-53040.rs similarity index 100% rename from src/test/ui/nll/issue-53040.rs rename to tests/ui/nll/issue-53040.rs diff --git a/src/test/ui/nll/issue-53040.stderr b/tests/ui/nll/issue-53040.stderr similarity index 100% rename from src/test/ui/nll/issue-53040.stderr rename to tests/ui/nll/issue-53040.stderr diff --git a/src/test/ui/nll/issue-53119.rs b/tests/ui/nll/issue-53119.rs similarity index 100% rename from src/test/ui/nll/issue-53119.rs rename to tests/ui/nll/issue-53119.rs diff --git a/src/test/ui/nll/issue-53123-raw-pointer-cast.rs b/tests/ui/nll/issue-53123-raw-pointer-cast.rs similarity index 100% rename from src/test/ui/nll/issue-53123-raw-pointer-cast.rs rename to tests/ui/nll/issue-53123-raw-pointer-cast.rs diff --git a/src/test/ui/nll/issue-53570.rs b/tests/ui/nll/issue-53570.rs similarity index 100% rename from src/test/ui/nll/issue-53570.rs rename to tests/ui/nll/issue-53570.rs diff --git a/src/test/ui/nll/issue-53773.rs b/tests/ui/nll/issue-53773.rs similarity index 100% rename from src/test/ui/nll/issue-53773.rs rename to tests/ui/nll/issue-53773.rs diff --git a/src/test/ui/nll/issue-53773.stderr b/tests/ui/nll/issue-53773.stderr similarity index 100% rename from src/test/ui/nll/issue-53773.stderr rename to tests/ui/nll/issue-53773.stderr diff --git a/src/test/ui/nll/issue-53807.rs b/tests/ui/nll/issue-53807.rs similarity index 100% rename from src/test/ui/nll/issue-53807.rs rename to tests/ui/nll/issue-53807.rs diff --git a/src/test/ui/nll/issue-53807.stderr b/tests/ui/nll/issue-53807.stderr similarity index 100% rename from src/test/ui/nll/issue-53807.stderr rename to tests/ui/nll/issue-53807.stderr diff --git a/src/test/ui/nll/issue-54189.rs b/tests/ui/nll/issue-54189.rs similarity index 100% rename from src/test/ui/nll/issue-54189.rs rename to tests/ui/nll/issue-54189.rs diff --git a/src/test/ui/nll/issue-54189.stderr b/tests/ui/nll/issue-54189.stderr similarity index 100% rename from src/test/ui/nll/issue-54189.stderr rename to tests/ui/nll/issue-54189.stderr diff --git a/src/test/ui/nll/issue-54382-use-span-of-tail-of-block.rs b/tests/ui/nll/issue-54382-use-span-of-tail-of-block.rs similarity index 100% rename from src/test/ui/nll/issue-54382-use-span-of-tail-of-block.rs rename to tests/ui/nll/issue-54382-use-span-of-tail-of-block.rs diff --git a/src/test/ui/nll/issue-54382-use-span-of-tail-of-block.stderr b/tests/ui/nll/issue-54382-use-span-of-tail-of-block.stderr similarity index 100% rename from src/test/ui/nll/issue-54382-use-span-of-tail-of-block.stderr rename to tests/ui/nll/issue-54382-use-span-of-tail-of-block.stderr diff --git a/src/test/ui/nll/issue-54556-niconii.rs b/tests/ui/nll/issue-54556-niconii.rs similarity index 100% rename from src/test/ui/nll/issue-54556-niconii.rs rename to tests/ui/nll/issue-54556-niconii.rs diff --git a/src/test/ui/nll/issue-54556-niconii.stderr b/tests/ui/nll/issue-54556-niconii.stderr similarity index 100% rename from src/test/ui/nll/issue-54556-niconii.stderr rename to tests/ui/nll/issue-54556-niconii.stderr diff --git a/src/test/ui/nll/issue-54556-stephaneyfx.rs b/tests/ui/nll/issue-54556-stephaneyfx.rs similarity index 100% rename from src/test/ui/nll/issue-54556-stephaneyfx.rs rename to tests/ui/nll/issue-54556-stephaneyfx.rs diff --git a/src/test/ui/nll/issue-54556-stephaneyfx.stderr b/tests/ui/nll/issue-54556-stephaneyfx.stderr similarity index 100% rename from src/test/ui/nll/issue-54556-stephaneyfx.stderr rename to tests/ui/nll/issue-54556-stephaneyfx.stderr diff --git a/src/test/ui/nll/issue-54556-temps-in-tail-diagnostic.rs b/tests/ui/nll/issue-54556-temps-in-tail-diagnostic.rs similarity index 100% rename from src/test/ui/nll/issue-54556-temps-in-tail-diagnostic.rs rename to tests/ui/nll/issue-54556-temps-in-tail-diagnostic.rs diff --git a/src/test/ui/nll/issue-54556-temps-in-tail-diagnostic.stderr b/tests/ui/nll/issue-54556-temps-in-tail-diagnostic.stderr similarity index 100% rename from src/test/ui/nll/issue-54556-temps-in-tail-diagnostic.stderr rename to tests/ui/nll/issue-54556-temps-in-tail-diagnostic.stderr diff --git a/src/test/ui/nll/issue-54556-used-vs-unused-tails.rs b/tests/ui/nll/issue-54556-used-vs-unused-tails.rs similarity index 100% rename from src/test/ui/nll/issue-54556-used-vs-unused-tails.rs rename to tests/ui/nll/issue-54556-used-vs-unused-tails.rs diff --git a/src/test/ui/nll/issue-54556-used-vs-unused-tails.stderr b/tests/ui/nll/issue-54556-used-vs-unused-tails.stderr similarity index 100% rename from src/test/ui/nll/issue-54556-used-vs-unused-tails.stderr rename to tests/ui/nll/issue-54556-used-vs-unused-tails.stderr diff --git a/src/test/ui/nll/issue-54556-wrap-it-up.rs b/tests/ui/nll/issue-54556-wrap-it-up.rs similarity index 100% rename from src/test/ui/nll/issue-54556-wrap-it-up.rs rename to tests/ui/nll/issue-54556-wrap-it-up.rs diff --git a/src/test/ui/nll/issue-54556-wrap-it-up.stderr b/tests/ui/nll/issue-54556-wrap-it-up.stderr similarity index 100% rename from src/test/ui/nll/issue-54556-wrap-it-up.stderr rename to tests/ui/nll/issue-54556-wrap-it-up.stderr diff --git a/src/test/ui/nll/issue-54779-anon-static-lifetime.rs b/tests/ui/nll/issue-54779-anon-static-lifetime.rs similarity index 100% rename from src/test/ui/nll/issue-54779-anon-static-lifetime.rs rename to tests/ui/nll/issue-54779-anon-static-lifetime.rs diff --git a/src/test/ui/nll/issue-54779-anon-static-lifetime.stderr b/tests/ui/nll/issue-54779-anon-static-lifetime.stderr similarity index 100% rename from src/test/ui/nll/issue-54779-anon-static-lifetime.stderr rename to tests/ui/nll/issue-54779-anon-static-lifetime.stderr diff --git a/src/test/ui/nll/issue-54943-3.rs b/tests/ui/nll/issue-54943-3.rs similarity index 100% rename from src/test/ui/nll/issue-54943-3.rs rename to tests/ui/nll/issue-54943-3.rs diff --git a/src/test/ui/nll/issue-54943.rs b/tests/ui/nll/issue-54943.rs similarity index 100% rename from src/test/ui/nll/issue-54943.rs rename to tests/ui/nll/issue-54943.rs diff --git a/src/test/ui/nll/issue-54943.stderr b/tests/ui/nll/issue-54943.stderr similarity index 100% rename from src/test/ui/nll/issue-54943.stderr rename to tests/ui/nll/issue-54943.stderr diff --git a/src/test/ui/nll/issue-55288.rs b/tests/ui/nll/issue-55288.rs similarity index 100% rename from src/test/ui/nll/issue-55288.rs rename to tests/ui/nll/issue-55288.rs diff --git a/src/test/ui/nll/issue-55344.rs b/tests/ui/nll/issue-55344.rs similarity index 100% rename from src/test/ui/nll/issue-55344.rs rename to tests/ui/nll/issue-55344.rs diff --git a/src/test/ui/nll/issue-55394.rs b/tests/ui/nll/issue-55394.rs similarity index 100% rename from src/test/ui/nll/issue-55394.rs rename to tests/ui/nll/issue-55394.rs diff --git a/src/test/ui/nll/issue-55394.stderr b/tests/ui/nll/issue-55394.stderr similarity index 100% rename from src/test/ui/nll/issue-55394.stderr rename to tests/ui/nll/issue-55394.stderr diff --git a/src/test/ui/nll/issue-55401.rs b/tests/ui/nll/issue-55401.rs similarity index 100% rename from src/test/ui/nll/issue-55401.rs rename to tests/ui/nll/issue-55401.rs diff --git a/src/test/ui/nll/issue-55401.stderr b/tests/ui/nll/issue-55401.stderr similarity index 100% rename from src/test/ui/nll/issue-55401.stderr rename to tests/ui/nll/issue-55401.stderr diff --git a/src/test/ui/nll/issue-55511.rs b/tests/ui/nll/issue-55511.rs similarity index 100% rename from src/test/ui/nll/issue-55511.rs rename to tests/ui/nll/issue-55511.rs diff --git a/src/test/ui/nll/issue-55511.stderr b/tests/ui/nll/issue-55511.stderr similarity index 100% rename from src/test/ui/nll/issue-55511.stderr rename to tests/ui/nll/issue-55511.stderr diff --git a/src/test/ui/nll/issue-55651.rs b/tests/ui/nll/issue-55651.rs similarity index 100% rename from src/test/ui/nll/issue-55651.rs rename to tests/ui/nll/issue-55651.rs diff --git a/src/test/ui/nll/issue-55825-const-fn.rs b/tests/ui/nll/issue-55825-const-fn.rs similarity index 100% rename from src/test/ui/nll/issue-55825-const-fn.rs rename to tests/ui/nll/issue-55825-const-fn.rs diff --git a/src/test/ui/nll/issue-55850.rs b/tests/ui/nll/issue-55850.rs similarity index 100% rename from src/test/ui/nll/issue-55850.rs rename to tests/ui/nll/issue-55850.rs diff --git a/src/test/ui/nll/issue-55850.stderr b/tests/ui/nll/issue-55850.stderr similarity index 100% rename from src/test/ui/nll/issue-55850.stderr rename to tests/ui/nll/issue-55850.stderr diff --git a/src/test/ui/nll/issue-57100.rs b/tests/ui/nll/issue-57100.rs similarity index 100% rename from src/test/ui/nll/issue-57100.rs rename to tests/ui/nll/issue-57100.rs diff --git a/src/test/ui/nll/issue-57100.stderr b/tests/ui/nll/issue-57100.stderr similarity index 100% rename from src/test/ui/nll/issue-57100.stderr rename to tests/ui/nll/issue-57100.stderr diff --git a/src/test/ui/nll/issue-57265-return-type-wf-check.rs b/tests/ui/nll/issue-57265-return-type-wf-check.rs similarity index 100% rename from src/test/ui/nll/issue-57265-return-type-wf-check.rs rename to tests/ui/nll/issue-57265-return-type-wf-check.rs diff --git a/src/test/ui/nll/issue-57265-return-type-wf-check.stderr b/tests/ui/nll/issue-57265-return-type-wf-check.stderr similarity index 100% rename from src/test/ui/nll/issue-57265-return-type-wf-check.stderr rename to tests/ui/nll/issue-57265-return-type-wf-check.stderr diff --git a/src/test/ui/nll/issue-57280-1-flipped.rs b/tests/ui/nll/issue-57280-1-flipped.rs similarity index 100% rename from src/test/ui/nll/issue-57280-1-flipped.rs rename to tests/ui/nll/issue-57280-1-flipped.rs diff --git a/src/test/ui/nll/issue-57280-1-flipped.stderr b/tests/ui/nll/issue-57280-1-flipped.stderr similarity index 100% rename from src/test/ui/nll/issue-57280-1-flipped.stderr rename to tests/ui/nll/issue-57280-1-flipped.stderr diff --git a/src/test/ui/nll/issue-57280-1.rs b/tests/ui/nll/issue-57280-1.rs similarity index 100% rename from src/test/ui/nll/issue-57280-1.rs rename to tests/ui/nll/issue-57280-1.rs diff --git a/src/test/ui/nll/issue-57280.rs b/tests/ui/nll/issue-57280.rs similarity index 100% rename from src/test/ui/nll/issue-57280.rs rename to tests/ui/nll/issue-57280.rs diff --git a/src/test/ui/nll/issue-57642-higher-ranked-subtype.rs b/tests/ui/nll/issue-57642-higher-ranked-subtype.rs similarity index 100% rename from src/test/ui/nll/issue-57642-higher-ranked-subtype.rs rename to tests/ui/nll/issue-57642-higher-ranked-subtype.rs diff --git a/src/test/ui/nll/issue-57642-higher-ranked-subtype.stderr b/tests/ui/nll/issue-57642-higher-ranked-subtype.stderr similarity index 100% rename from src/test/ui/nll/issue-57642-higher-ranked-subtype.stderr rename to tests/ui/nll/issue-57642-higher-ranked-subtype.stderr diff --git a/src/test/ui/nll/issue-57843.rs b/tests/ui/nll/issue-57843.rs similarity index 100% rename from src/test/ui/nll/issue-57843.rs rename to tests/ui/nll/issue-57843.rs diff --git a/src/test/ui/nll/issue-57843.stderr b/tests/ui/nll/issue-57843.stderr similarity index 100% rename from src/test/ui/nll/issue-57843.stderr rename to tests/ui/nll/issue-57843.stderr diff --git a/src/test/ui/nll/issue-57960.rs b/tests/ui/nll/issue-57960.rs similarity index 100% rename from src/test/ui/nll/issue-57960.rs rename to tests/ui/nll/issue-57960.rs diff --git a/src/test/ui/nll/issue-57989.rs b/tests/ui/nll/issue-57989.rs similarity index 100% rename from src/test/ui/nll/issue-57989.rs rename to tests/ui/nll/issue-57989.rs diff --git a/src/test/ui/nll/issue-57989.stderr b/tests/ui/nll/issue-57989.stderr similarity index 100% rename from src/test/ui/nll/issue-57989.stderr rename to tests/ui/nll/issue-57989.stderr diff --git a/src/test/ui/nll/issue-58053.rs b/tests/ui/nll/issue-58053.rs similarity index 100% rename from src/test/ui/nll/issue-58053.rs rename to tests/ui/nll/issue-58053.rs diff --git a/src/test/ui/nll/issue-58053.stderr b/tests/ui/nll/issue-58053.stderr similarity index 100% rename from src/test/ui/nll/issue-58053.stderr rename to tests/ui/nll/issue-58053.stderr diff --git a/src/test/ui/nll/issue-58299.rs b/tests/ui/nll/issue-58299.rs similarity index 100% rename from src/test/ui/nll/issue-58299.rs rename to tests/ui/nll/issue-58299.rs diff --git a/src/test/ui/nll/issue-58299.stderr b/tests/ui/nll/issue-58299.stderr similarity index 100% rename from src/test/ui/nll/issue-58299.stderr rename to tests/ui/nll/issue-58299.stderr diff --git a/src/test/ui/nll/issue-61311-normalize.rs b/tests/ui/nll/issue-61311-normalize.rs similarity index 100% rename from src/test/ui/nll/issue-61311-normalize.rs rename to tests/ui/nll/issue-61311-normalize.rs diff --git a/src/test/ui/nll/issue-61320-normalize.rs b/tests/ui/nll/issue-61320-normalize.rs similarity index 100% rename from src/test/ui/nll/issue-61320-normalize.rs rename to tests/ui/nll/issue-61320-normalize.rs diff --git a/src/test/ui/nll/issue-61424.fixed b/tests/ui/nll/issue-61424.fixed similarity index 100% rename from src/test/ui/nll/issue-61424.fixed rename to tests/ui/nll/issue-61424.fixed diff --git a/src/test/ui/nll/issue-61424.rs b/tests/ui/nll/issue-61424.rs similarity index 100% rename from src/test/ui/nll/issue-61424.rs rename to tests/ui/nll/issue-61424.rs diff --git a/src/test/ui/nll/issue-61424.stderr b/tests/ui/nll/issue-61424.stderr similarity index 100% rename from src/test/ui/nll/issue-61424.stderr rename to tests/ui/nll/issue-61424.stderr diff --git a/src/test/ui/nll/issue-62007-assign-const-index.rs b/tests/ui/nll/issue-62007-assign-const-index.rs similarity index 100% rename from src/test/ui/nll/issue-62007-assign-const-index.rs rename to tests/ui/nll/issue-62007-assign-const-index.rs diff --git a/src/test/ui/nll/issue-62007-assign-const-index.stderr b/tests/ui/nll/issue-62007-assign-const-index.stderr similarity index 100% rename from src/test/ui/nll/issue-62007-assign-const-index.stderr rename to tests/ui/nll/issue-62007-assign-const-index.stderr diff --git a/src/test/ui/nll/issue-62007-assign-differing-fields.rs b/tests/ui/nll/issue-62007-assign-differing-fields.rs similarity index 100% rename from src/test/ui/nll/issue-62007-assign-differing-fields.rs rename to tests/ui/nll/issue-62007-assign-differing-fields.rs diff --git a/src/test/ui/nll/issue-62007-assign-differing-fields.stderr b/tests/ui/nll/issue-62007-assign-differing-fields.stderr similarity index 100% rename from src/test/ui/nll/issue-62007-assign-differing-fields.stderr rename to tests/ui/nll/issue-62007-assign-differing-fields.stderr diff --git a/src/test/ui/nll/issue-63154-normalize.rs b/tests/ui/nll/issue-63154-normalize.rs similarity index 100% rename from src/test/ui/nll/issue-63154-normalize.rs rename to tests/ui/nll/issue-63154-normalize.rs diff --git a/src/test/ui/nll/issue-67007-escaping-data.rs b/tests/ui/nll/issue-67007-escaping-data.rs similarity index 100% rename from src/test/ui/nll/issue-67007-escaping-data.rs rename to tests/ui/nll/issue-67007-escaping-data.rs diff --git a/src/test/ui/nll/issue-67007-escaping-data.stderr b/tests/ui/nll/issue-67007-escaping-data.stderr similarity index 100% rename from src/test/ui/nll/issue-67007-escaping-data.stderr rename to tests/ui/nll/issue-67007-escaping-data.stderr diff --git a/src/test/ui/nll/issue-68550.rs b/tests/ui/nll/issue-68550.rs similarity index 100% rename from src/test/ui/nll/issue-68550.rs rename to tests/ui/nll/issue-68550.rs diff --git a/src/test/ui/nll/issue-68550.stderr b/tests/ui/nll/issue-68550.stderr similarity index 100% rename from src/test/ui/nll/issue-68550.stderr rename to tests/ui/nll/issue-68550.stderr diff --git a/src/test/ui/nll/issue-69114-static-mut-ty.rs b/tests/ui/nll/issue-69114-static-mut-ty.rs similarity index 100% rename from src/test/ui/nll/issue-69114-static-mut-ty.rs rename to tests/ui/nll/issue-69114-static-mut-ty.rs diff --git a/src/test/ui/nll/issue-69114-static-mut-ty.stderr b/tests/ui/nll/issue-69114-static-mut-ty.stderr similarity index 100% rename from src/test/ui/nll/issue-69114-static-mut-ty.stderr rename to tests/ui/nll/issue-69114-static-mut-ty.stderr diff --git a/src/test/ui/nll/issue-69114-static-ty.rs b/tests/ui/nll/issue-69114-static-ty.rs similarity index 100% rename from src/test/ui/nll/issue-69114-static-ty.rs rename to tests/ui/nll/issue-69114-static-ty.rs diff --git a/src/test/ui/nll/issue-69114-static-ty.stderr b/tests/ui/nll/issue-69114-static-ty.stderr similarity index 100% rename from src/test/ui/nll/issue-69114-static-ty.stderr rename to tests/ui/nll/issue-69114-static-ty.stderr diff --git a/src/test/ui/nll/issue-73159-rpit-static.rs b/tests/ui/nll/issue-73159-rpit-static.rs similarity index 100% rename from src/test/ui/nll/issue-73159-rpit-static.rs rename to tests/ui/nll/issue-73159-rpit-static.rs diff --git a/src/test/ui/nll/issue-73159-rpit-static.stderr b/tests/ui/nll/issue-73159-rpit-static.stderr similarity index 100% rename from src/test/ui/nll/issue-73159-rpit-static.stderr rename to tests/ui/nll/issue-73159-rpit-static.stderr diff --git a/src/test/ui/nll/issue-78561.rs b/tests/ui/nll/issue-78561.rs similarity index 100% rename from src/test/ui/nll/issue-78561.rs rename to tests/ui/nll/issue-78561.rs diff --git a/src/test/ui/nll/issue-95272.rs b/tests/ui/nll/issue-95272.rs similarity index 100% rename from src/test/ui/nll/issue-95272.rs rename to tests/ui/nll/issue-95272.rs diff --git a/src/test/ui/nll/issue-95272.stderr b/tests/ui/nll/issue-95272.stderr similarity index 100% rename from src/test/ui/nll/issue-95272.stderr rename to tests/ui/nll/issue-95272.stderr diff --git a/src/test/ui/nll/issue-97997.rs b/tests/ui/nll/issue-97997.rs similarity index 100% rename from src/test/ui/nll/issue-97997.rs rename to tests/ui/nll/issue-97997.rs diff --git a/src/test/ui/nll/issue-97997.stderr b/tests/ui/nll/issue-97997.stderr similarity index 100% rename from src/test/ui/nll/issue-97997.stderr rename to tests/ui/nll/issue-97997.stderr diff --git a/src/test/ui/nll/issue-98170.rs b/tests/ui/nll/issue-98170.rs similarity index 100% rename from src/test/ui/nll/issue-98170.rs rename to tests/ui/nll/issue-98170.rs diff --git a/src/test/ui/nll/issue-98170.stderr b/tests/ui/nll/issue-98170.stderr similarity index 100% rename from src/test/ui/nll/issue-98170.stderr rename to tests/ui/nll/issue-98170.stderr diff --git a/src/test/ui/nll/issue-98589-closures-relate-named-regions.rs b/tests/ui/nll/issue-98589-closures-relate-named-regions.rs similarity index 100% rename from src/test/ui/nll/issue-98589-closures-relate-named-regions.rs rename to tests/ui/nll/issue-98589-closures-relate-named-regions.rs diff --git a/src/test/ui/nll/issue-98589-closures-relate-named-regions.stderr b/tests/ui/nll/issue-98589-closures-relate-named-regions.stderr similarity index 100% rename from src/test/ui/nll/issue-98589-closures-relate-named-regions.stderr rename to tests/ui/nll/issue-98589-closures-relate-named-regions.stderr diff --git a/src/test/ui/nll/issue-98693.rs b/tests/ui/nll/issue-98693.rs similarity index 100% rename from src/test/ui/nll/issue-98693.rs rename to tests/ui/nll/issue-98693.rs diff --git a/src/test/ui/nll/issue-98693.stderr b/tests/ui/nll/issue-98693.stderr similarity index 100% rename from src/test/ui/nll/issue-98693.stderr rename to tests/ui/nll/issue-98693.stderr diff --git a/src/test/ui/nll/lint-no-err.rs b/tests/ui/nll/lint-no-err.rs similarity index 100% rename from src/test/ui/nll/lint-no-err.rs rename to tests/ui/nll/lint-no-err.rs diff --git a/src/test/ui/nll/loan_ends_mid_block_pair.rs b/tests/ui/nll/loan_ends_mid_block_pair.rs similarity index 100% rename from src/test/ui/nll/loan_ends_mid_block_pair.rs rename to tests/ui/nll/loan_ends_mid_block_pair.rs diff --git a/src/test/ui/nll/loan_ends_mid_block_pair.stderr b/tests/ui/nll/loan_ends_mid_block_pair.stderr similarity index 100% rename from src/test/ui/nll/loan_ends_mid_block_pair.stderr rename to tests/ui/nll/loan_ends_mid_block_pair.stderr diff --git a/src/test/ui/nll/loan_ends_mid_block_vec.rs b/tests/ui/nll/loan_ends_mid_block_vec.rs similarity index 100% rename from src/test/ui/nll/loan_ends_mid_block_vec.rs rename to tests/ui/nll/loan_ends_mid_block_vec.rs diff --git a/src/test/ui/nll/loan_ends_mid_block_vec.stderr b/tests/ui/nll/loan_ends_mid_block_vec.stderr similarity index 100% rename from src/test/ui/nll/loan_ends_mid_block_vec.stderr rename to tests/ui/nll/loan_ends_mid_block_vec.stderr diff --git a/src/test/ui/nll/local-outlives-static-via-hrtb.rs b/tests/ui/nll/local-outlives-static-via-hrtb.rs similarity index 100% rename from src/test/ui/nll/local-outlives-static-via-hrtb.rs rename to tests/ui/nll/local-outlives-static-via-hrtb.rs diff --git a/src/test/ui/nll/local-outlives-static-via-hrtb.stderr b/tests/ui/nll/local-outlives-static-via-hrtb.stderr similarity index 100% rename from src/test/ui/nll/local-outlives-static-via-hrtb.stderr rename to tests/ui/nll/local-outlives-static-via-hrtb.stderr diff --git a/src/test/ui/nll/lub-if.rs b/tests/ui/nll/lub-if.rs similarity index 100% rename from src/test/ui/nll/lub-if.rs rename to tests/ui/nll/lub-if.rs diff --git a/src/test/ui/nll/lub-if.stderr b/tests/ui/nll/lub-if.stderr similarity index 100% rename from src/test/ui/nll/lub-if.stderr rename to tests/ui/nll/lub-if.stderr diff --git a/src/test/ui/nll/lub-match.rs b/tests/ui/nll/lub-match.rs similarity index 100% rename from src/test/ui/nll/lub-match.rs rename to tests/ui/nll/lub-match.rs diff --git a/src/test/ui/nll/lub-match.stderr b/tests/ui/nll/lub-match.stderr similarity index 100% rename from src/test/ui/nll/lub-match.stderr rename to tests/ui/nll/lub-match.stderr diff --git a/src/test/ui/nll/match-cfg-fake-edges.rs b/tests/ui/nll/match-cfg-fake-edges.rs similarity index 100% rename from src/test/ui/nll/match-cfg-fake-edges.rs rename to tests/ui/nll/match-cfg-fake-edges.rs diff --git a/src/test/ui/nll/match-cfg-fake-edges.stderr b/tests/ui/nll/match-cfg-fake-edges.stderr similarity index 100% rename from src/test/ui/nll/match-cfg-fake-edges.stderr rename to tests/ui/nll/match-cfg-fake-edges.stderr diff --git a/src/test/ui/nll/match-cfg-fake-edges2.rs b/tests/ui/nll/match-cfg-fake-edges2.rs similarity index 100% rename from src/test/ui/nll/match-cfg-fake-edges2.rs rename to tests/ui/nll/match-cfg-fake-edges2.rs diff --git a/src/test/ui/nll/match-cfg-fake-edges2.stderr b/tests/ui/nll/match-cfg-fake-edges2.stderr similarity index 100% rename from src/test/ui/nll/match-cfg-fake-edges2.stderr rename to tests/ui/nll/match-cfg-fake-edges2.stderr diff --git a/src/test/ui/nll/match-guards-always-borrow.rs b/tests/ui/nll/match-guards-always-borrow.rs similarity index 100% rename from src/test/ui/nll/match-guards-always-borrow.rs rename to tests/ui/nll/match-guards-always-borrow.rs diff --git a/src/test/ui/nll/match-guards-always-borrow.stderr b/tests/ui/nll/match-guards-always-borrow.stderr similarity index 100% rename from src/test/ui/nll/match-guards-always-borrow.stderr rename to tests/ui/nll/match-guards-always-borrow.stderr diff --git a/src/test/ui/nll/match-guards-partially-borrow.rs b/tests/ui/nll/match-guards-partially-borrow.rs similarity index 100% rename from src/test/ui/nll/match-guards-partially-borrow.rs rename to tests/ui/nll/match-guards-partially-borrow.rs diff --git a/src/test/ui/nll/match-guards-partially-borrow.stderr b/tests/ui/nll/match-guards-partially-borrow.stderr similarity index 100% rename from src/test/ui/nll/match-guards-partially-borrow.stderr rename to tests/ui/nll/match-guards-partially-borrow.stderr diff --git a/src/test/ui/nll/match-on-borrowed.rs b/tests/ui/nll/match-on-borrowed.rs similarity index 100% rename from src/test/ui/nll/match-on-borrowed.rs rename to tests/ui/nll/match-on-borrowed.rs diff --git a/src/test/ui/nll/match-on-borrowed.stderr b/tests/ui/nll/match-on-borrowed.stderr similarity index 100% rename from src/test/ui/nll/match-on-borrowed.stderr rename to tests/ui/nll/match-on-borrowed.stderr diff --git a/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs b/tests/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs rename to tests/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs diff --git a/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.stderr b/tests/ui/nll/maybe-initialized-drop-implicit-fragment-drop.stderr similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.stderr rename to tests/ui/nll/maybe-initialized-drop-implicit-fragment-drop.stderr diff --git a/src/test/ui/nll/maybe-initialized-drop-uninitialized.rs b/tests/ui/nll/maybe-initialized-drop-uninitialized.rs similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-uninitialized.rs rename to tests/ui/nll/maybe-initialized-drop-uninitialized.rs diff --git a/src/test/ui/nll/maybe-initialized-drop-with-fragment.rs b/tests/ui/nll/maybe-initialized-drop-with-fragment.rs similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-with-fragment.rs rename to tests/ui/nll/maybe-initialized-drop-with-fragment.rs diff --git a/src/test/ui/nll/maybe-initialized-drop-with-fragment.stderr b/tests/ui/nll/maybe-initialized-drop-with-fragment.stderr similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-with-fragment.stderr rename to tests/ui/nll/maybe-initialized-drop-with-fragment.stderr diff --git a/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs b/tests/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs rename to tests/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs diff --git a/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.stderr b/tests/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.stderr similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.stderr rename to tests/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.stderr diff --git a/src/test/ui/nll/maybe-initialized-drop.rs b/tests/ui/nll/maybe-initialized-drop.rs similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop.rs rename to tests/ui/nll/maybe-initialized-drop.rs diff --git a/src/test/ui/nll/maybe-initialized-drop.stderr b/tests/ui/nll/maybe-initialized-drop.stderr similarity index 100% rename from src/test/ui/nll/maybe-initialized-drop.stderr rename to tests/ui/nll/maybe-initialized-drop.stderr diff --git a/src/test/ui/nll/mir_check_cast_closure.rs b/tests/ui/nll/mir_check_cast_closure.rs similarity index 100% rename from src/test/ui/nll/mir_check_cast_closure.rs rename to tests/ui/nll/mir_check_cast_closure.rs diff --git a/src/test/ui/nll/mir_check_cast_closure.stderr b/tests/ui/nll/mir_check_cast_closure.stderr similarity index 100% rename from src/test/ui/nll/mir_check_cast_closure.stderr rename to tests/ui/nll/mir_check_cast_closure.stderr diff --git a/src/test/ui/nll/mir_check_cast_reify.rs b/tests/ui/nll/mir_check_cast_reify.rs similarity index 100% rename from src/test/ui/nll/mir_check_cast_reify.rs rename to tests/ui/nll/mir_check_cast_reify.rs diff --git a/src/test/ui/nll/mir_check_cast_reify.stderr b/tests/ui/nll/mir_check_cast_reify.stderr similarity index 100% rename from src/test/ui/nll/mir_check_cast_reify.stderr rename to tests/ui/nll/mir_check_cast_reify.stderr diff --git a/src/test/ui/nll/mir_check_cast_unsafe_fn.rs b/tests/ui/nll/mir_check_cast_unsafe_fn.rs similarity index 100% rename from src/test/ui/nll/mir_check_cast_unsafe_fn.rs rename to tests/ui/nll/mir_check_cast_unsafe_fn.rs diff --git a/src/test/ui/nll/mir_check_cast_unsafe_fn.stderr b/tests/ui/nll/mir_check_cast_unsafe_fn.stderr similarity index 100% rename from src/test/ui/nll/mir_check_cast_unsafe_fn.stderr rename to tests/ui/nll/mir_check_cast_unsafe_fn.stderr diff --git a/src/test/ui/nll/mir_check_cast_unsize.rs b/tests/ui/nll/mir_check_cast_unsize.rs similarity index 100% rename from src/test/ui/nll/mir_check_cast_unsize.rs rename to tests/ui/nll/mir_check_cast_unsize.rs diff --git a/src/test/ui/nll/mir_check_cast_unsize.stderr b/tests/ui/nll/mir_check_cast_unsize.stderr similarity index 100% rename from src/test/ui/nll/mir_check_cast_unsize.stderr rename to tests/ui/nll/mir_check_cast_unsize.stderr diff --git a/src/test/ui/nll/move-errors.rs b/tests/ui/nll/move-errors.rs similarity index 100% rename from src/test/ui/nll/move-errors.rs rename to tests/ui/nll/move-errors.rs diff --git a/src/test/ui/nll/move-errors.stderr b/tests/ui/nll/move-errors.stderr similarity index 100% rename from src/test/ui/nll/move-errors.stderr rename to tests/ui/nll/move-errors.stderr diff --git a/src/test/ui/nll/move-subpaths-moves-root.rs b/tests/ui/nll/move-subpaths-moves-root.rs similarity index 100% rename from src/test/ui/nll/move-subpaths-moves-root.rs rename to tests/ui/nll/move-subpaths-moves-root.rs diff --git a/src/test/ui/nll/move-subpaths-moves-root.stderr b/tests/ui/nll/move-subpaths-moves-root.stderr similarity index 100% rename from src/test/ui/nll/move-subpaths-moves-root.stderr rename to tests/ui/nll/move-subpaths-moves-root.stderr diff --git a/src/test/ui/nll/mutating_references.rs b/tests/ui/nll/mutating_references.rs similarity index 100% rename from src/test/ui/nll/mutating_references.rs rename to tests/ui/nll/mutating_references.rs diff --git a/src/test/ui/nll/normalization-bounds-error.rs b/tests/ui/nll/normalization-bounds-error.rs similarity index 100% rename from src/test/ui/nll/normalization-bounds-error.rs rename to tests/ui/nll/normalization-bounds-error.rs diff --git a/src/test/ui/nll/normalization-bounds-error.stderr b/tests/ui/nll/normalization-bounds-error.stderr similarity index 100% rename from src/test/ui/nll/normalization-bounds-error.stderr rename to tests/ui/nll/normalization-bounds-error.stderr diff --git a/src/test/ui/nll/normalization-bounds.rs b/tests/ui/nll/normalization-bounds.rs similarity index 100% rename from src/test/ui/nll/normalization-bounds.rs rename to tests/ui/nll/normalization-bounds.rs diff --git a/src/test/ui/nll/outlives-suggestion-more.rs b/tests/ui/nll/outlives-suggestion-more.rs similarity index 100% rename from src/test/ui/nll/outlives-suggestion-more.rs rename to tests/ui/nll/outlives-suggestion-more.rs diff --git a/src/test/ui/nll/outlives-suggestion-more.stderr b/tests/ui/nll/outlives-suggestion-more.stderr similarity index 100% rename from src/test/ui/nll/outlives-suggestion-more.stderr rename to tests/ui/nll/outlives-suggestion-more.stderr diff --git a/src/test/ui/nll/outlives-suggestion-simple.polonius.stderr b/tests/ui/nll/outlives-suggestion-simple.polonius.stderr similarity index 100% rename from src/test/ui/nll/outlives-suggestion-simple.polonius.stderr rename to tests/ui/nll/outlives-suggestion-simple.polonius.stderr diff --git a/src/test/ui/nll/outlives-suggestion-simple.rs b/tests/ui/nll/outlives-suggestion-simple.rs similarity index 100% rename from src/test/ui/nll/outlives-suggestion-simple.rs rename to tests/ui/nll/outlives-suggestion-simple.rs diff --git a/src/test/ui/nll/outlives-suggestion-simple.stderr b/tests/ui/nll/outlives-suggestion-simple.stderr similarity index 100% rename from src/test/ui/nll/outlives-suggestion-simple.stderr rename to tests/ui/nll/outlives-suggestion-simple.stderr diff --git a/src/test/ui/nll/polonius/assignment-kills-loans.rs b/tests/ui/nll/polonius/assignment-kills-loans.rs similarity index 100% rename from src/test/ui/nll/polonius/assignment-kills-loans.rs rename to tests/ui/nll/polonius/assignment-kills-loans.rs diff --git a/src/test/ui/nll/polonius/assignment-to-differing-field.rs b/tests/ui/nll/polonius/assignment-to-differing-field.rs similarity index 100% rename from src/test/ui/nll/polonius/assignment-to-differing-field.rs rename to tests/ui/nll/polonius/assignment-to-differing-field.rs diff --git a/src/test/ui/nll/polonius/assignment-to-differing-field.stderr b/tests/ui/nll/polonius/assignment-to-differing-field.stderr similarity index 100% rename from src/test/ui/nll/polonius/assignment-to-differing-field.stderr rename to tests/ui/nll/polonius/assignment-to-differing-field.stderr diff --git a/src/test/ui/nll/polonius/call-kills-loans.rs b/tests/ui/nll/polonius/call-kills-loans.rs similarity index 100% rename from src/test/ui/nll/polonius/call-kills-loans.rs rename to tests/ui/nll/polonius/call-kills-loans.rs diff --git a/src/test/ui/nll/polonius/issue-46589.rs b/tests/ui/nll/polonius/issue-46589.rs similarity index 100% rename from src/test/ui/nll/polonius/issue-46589.rs rename to tests/ui/nll/polonius/issue-46589.rs diff --git a/src/test/ui/nll/polonius/polonius-smoke-test.rs b/tests/ui/nll/polonius/polonius-smoke-test.rs similarity index 100% rename from src/test/ui/nll/polonius/polonius-smoke-test.rs rename to tests/ui/nll/polonius/polonius-smoke-test.rs diff --git a/src/test/ui/nll/polonius/polonius-smoke-test.stderr b/tests/ui/nll/polonius/polonius-smoke-test.stderr similarity index 100% rename from src/test/ui/nll/polonius/polonius-smoke-test.stderr rename to tests/ui/nll/polonius/polonius-smoke-test.stderr diff --git a/src/test/ui/nll/polonius/storagedead-kills-loans.rs b/tests/ui/nll/polonius/storagedead-kills-loans.rs similarity index 100% rename from src/test/ui/nll/polonius/storagedead-kills-loans.rs rename to tests/ui/nll/polonius/storagedead-kills-loans.rs diff --git a/src/test/ui/nll/polonius/subset-relations.rs b/tests/ui/nll/polonius/subset-relations.rs similarity index 100% rename from src/test/ui/nll/polonius/subset-relations.rs rename to tests/ui/nll/polonius/subset-relations.rs diff --git a/src/test/ui/nll/polonius/subset-relations.stderr b/tests/ui/nll/polonius/subset-relations.stderr similarity index 100% rename from src/test/ui/nll/polonius/subset-relations.stderr rename to tests/ui/nll/polonius/subset-relations.stderr diff --git a/src/test/ui/nll/process_or_insert_default.rs b/tests/ui/nll/process_or_insert_default.rs similarity index 100% rename from src/test/ui/nll/process_or_insert_default.rs rename to tests/ui/nll/process_or_insert_default.rs diff --git a/src/test/ui/nll/projection-return.rs b/tests/ui/nll/projection-return.rs similarity index 100% rename from src/test/ui/nll/projection-return.rs rename to tests/ui/nll/projection-return.rs diff --git a/src/test/ui/nll/promotable-mutable-zst-doesnt-conflict.rs b/tests/ui/nll/promotable-mutable-zst-doesnt-conflict.rs similarity index 100% rename from src/test/ui/nll/promotable-mutable-zst-doesnt-conflict.rs rename to tests/ui/nll/promotable-mutable-zst-doesnt-conflict.rs diff --git a/src/test/ui/nll/promoted-bounds.rs b/tests/ui/nll/promoted-bounds.rs similarity index 100% rename from src/test/ui/nll/promoted-bounds.rs rename to tests/ui/nll/promoted-bounds.rs diff --git a/src/test/ui/nll/promoted-bounds.stderr b/tests/ui/nll/promoted-bounds.stderr similarity index 100% rename from src/test/ui/nll/promoted-bounds.stderr rename to tests/ui/nll/promoted-bounds.stderr diff --git a/src/test/ui/nll/promoted-closure-pair.rs b/tests/ui/nll/promoted-closure-pair.rs similarity index 100% rename from src/test/ui/nll/promoted-closure-pair.rs rename to tests/ui/nll/promoted-closure-pair.rs diff --git a/src/test/ui/nll/promoted-closure-pair.stderr b/tests/ui/nll/promoted-closure-pair.stderr similarity index 100% rename from src/test/ui/nll/promoted-closure-pair.stderr rename to tests/ui/nll/promoted-closure-pair.stderr diff --git a/src/test/ui/nll/promoted-liveness.rs b/tests/ui/nll/promoted-liveness.rs similarity index 100% rename from src/test/ui/nll/promoted-liveness.rs rename to tests/ui/nll/promoted-liveness.rs diff --git a/src/test/ui/nll/rc-loop.rs b/tests/ui/nll/rc-loop.rs similarity index 100% rename from src/test/ui/nll/rc-loop.rs rename to tests/ui/nll/rc-loop.rs diff --git a/src/test/ui/nll/ref-suggestion.rs b/tests/ui/nll/ref-suggestion.rs similarity index 100% rename from src/test/ui/nll/ref-suggestion.rs rename to tests/ui/nll/ref-suggestion.rs diff --git a/src/test/ui/nll/ref-suggestion.stderr b/tests/ui/nll/ref-suggestion.stderr similarity index 100% rename from src/test/ui/nll/ref-suggestion.stderr rename to tests/ui/nll/ref-suggestion.stderr diff --git a/src/test/ui/nll/reference-carried-through-struct-field.rs b/tests/ui/nll/reference-carried-through-struct-field.rs similarity index 100% rename from src/test/ui/nll/reference-carried-through-struct-field.rs rename to tests/ui/nll/reference-carried-through-struct-field.rs diff --git a/src/test/ui/nll/reference-carried-through-struct-field.stderr b/tests/ui/nll/reference-carried-through-struct-field.stderr similarity index 100% rename from src/test/ui/nll/reference-carried-through-struct-field.stderr rename to tests/ui/nll/reference-carried-through-struct-field.stderr diff --git a/src/test/ui/nll/region-ends-after-if-condition.rs b/tests/ui/nll/region-ends-after-if-condition.rs similarity index 100% rename from src/test/ui/nll/region-ends-after-if-condition.rs rename to tests/ui/nll/region-ends-after-if-condition.rs diff --git a/src/test/ui/nll/region-ends-after-if-condition.stderr b/tests/ui/nll/region-ends-after-if-condition.stderr similarity index 100% rename from src/test/ui/nll/region-ends-after-if-condition.stderr rename to tests/ui/nll/region-ends-after-if-condition.stderr diff --git a/src/test/ui/nll/relate_tys/fn-subtype.rs b/tests/ui/nll/relate_tys/fn-subtype.rs similarity index 100% rename from src/test/ui/nll/relate_tys/fn-subtype.rs rename to tests/ui/nll/relate_tys/fn-subtype.rs diff --git a/src/test/ui/nll/relate_tys/fn-subtype.stderr b/tests/ui/nll/relate_tys/fn-subtype.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/fn-subtype.stderr rename to tests/ui/nll/relate_tys/fn-subtype.stderr diff --git a/src/test/ui/nll/relate_tys/hr-fn-aaa-as-aba.rs b/tests/ui/nll/relate_tys/hr-fn-aaa-as-aba.rs similarity index 100% rename from src/test/ui/nll/relate_tys/hr-fn-aaa-as-aba.rs rename to tests/ui/nll/relate_tys/hr-fn-aaa-as-aba.rs diff --git a/src/test/ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr b/tests/ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr rename to tests/ui/nll/relate_tys/hr-fn-aaa-as-aba.stderr diff --git a/src/test/ui/nll/relate_tys/hr-fn-aau-eq-abu.rs b/tests/ui/nll/relate_tys/hr-fn-aau-eq-abu.rs similarity index 100% rename from src/test/ui/nll/relate_tys/hr-fn-aau-eq-abu.rs rename to tests/ui/nll/relate_tys/hr-fn-aau-eq-abu.rs diff --git a/src/test/ui/nll/relate_tys/hr-fn-aba-as-aaa.rs b/tests/ui/nll/relate_tys/hr-fn-aba-as-aaa.rs similarity index 100% rename from src/test/ui/nll/relate_tys/hr-fn-aba-as-aaa.rs rename to tests/ui/nll/relate_tys/hr-fn-aba-as-aaa.rs diff --git a/src/test/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.rs b/tests/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.rs similarity index 100% rename from src/test/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.rs rename to tests/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.rs diff --git a/src/test/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.stderr b/tests/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.stderr rename to tests/ui/nll/relate_tys/impl-fn-ignore-binder-via-bottom.stderr diff --git a/src/test/ui/nll/relate_tys/issue-48071.rs b/tests/ui/nll/relate_tys/issue-48071.rs similarity index 100% rename from src/test/ui/nll/relate_tys/issue-48071.rs rename to tests/ui/nll/relate_tys/issue-48071.rs diff --git a/src/test/ui/nll/relate_tys/opaque-hrtb.rs b/tests/ui/nll/relate_tys/opaque-hrtb.rs similarity index 100% rename from src/test/ui/nll/relate_tys/opaque-hrtb.rs rename to tests/ui/nll/relate_tys/opaque-hrtb.rs diff --git a/src/test/ui/nll/relate_tys/opaque-hrtb.stderr b/tests/ui/nll/relate_tys/opaque-hrtb.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/opaque-hrtb.stderr rename to tests/ui/nll/relate_tys/opaque-hrtb.stderr diff --git a/src/test/ui/nll/relate_tys/trait-hrtb.rs b/tests/ui/nll/relate_tys/trait-hrtb.rs similarity index 100% rename from src/test/ui/nll/relate_tys/trait-hrtb.rs rename to tests/ui/nll/relate_tys/trait-hrtb.rs diff --git a/src/test/ui/nll/relate_tys/trait-hrtb.stderr b/tests/ui/nll/relate_tys/trait-hrtb.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/trait-hrtb.stderr rename to tests/ui/nll/relate_tys/trait-hrtb.stderr diff --git a/src/test/ui/nll/relate_tys/universe-violation.rs b/tests/ui/nll/relate_tys/universe-violation.rs similarity index 100% rename from src/test/ui/nll/relate_tys/universe-violation.rs rename to tests/ui/nll/relate_tys/universe-violation.rs diff --git a/src/test/ui/nll/relate_tys/universe-violation.stderr b/tests/ui/nll/relate_tys/universe-violation.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/universe-violation.stderr rename to tests/ui/nll/relate_tys/universe-violation.stderr diff --git a/src/test/ui/nll/relate_tys/var-appears-twice.rs b/tests/ui/nll/relate_tys/var-appears-twice.rs similarity index 100% rename from src/test/ui/nll/relate_tys/var-appears-twice.rs rename to tests/ui/nll/relate_tys/var-appears-twice.rs diff --git a/src/test/ui/nll/relate_tys/var-appears-twice.stderr b/tests/ui/nll/relate_tys/var-appears-twice.stderr similarity index 100% rename from src/test/ui/nll/relate_tys/var-appears-twice.stderr rename to tests/ui/nll/relate_tys/var-appears-twice.stderr diff --git a/src/test/ui/nll/return-ref-mut-issue-46557.rs b/tests/ui/nll/return-ref-mut-issue-46557.rs similarity index 100% rename from src/test/ui/nll/return-ref-mut-issue-46557.rs rename to tests/ui/nll/return-ref-mut-issue-46557.rs diff --git a/src/test/ui/nll/return-ref-mut-issue-46557.stderr b/tests/ui/nll/return-ref-mut-issue-46557.stderr similarity index 100% rename from src/test/ui/nll/return-ref-mut-issue-46557.stderr rename to tests/ui/nll/return-ref-mut-issue-46557.stderr diff --git a/src/test/ui/nll/return_from_loop.rs b/tests/ui/nll/return_from_loop.rs similarity index 100% rename from src/test/ui/nll/return_from_loop.rs rename to tests/ui/nll/return_from_loop.rs diff --git a/src/test/ui/nll/return_from_loop.stderr b/tests/ui/nll/return_from_loop.stderr similarity index 100% rename from src/test/ui/nll/return_from_loop.stderr rename to tests/ui/nll/return_from_loop.stderr diff --git a/src/test/ui/nll/self-assign-ref-mut.rs b/tests/ui/nll/self-assign-ref-mut.rs similarity index 100% rename from src/test/ui/nll/self-assign-ref-mut.rs rename to tests/ui/nll/self-assign-ref-mut.rs diff --git a/src/test/ui/nll/snocat-regression.rs b/tests/ui/nll/snocat-regression.rs similarity index 100% rename from src/test/ui/nll/snocat-regression.rs rename to tests/ui/nll/snocat-regression.rs diff --git a/src/test/ui/nll/snocat-regression.stderr b/tests/ui/nll/snocat-regression.stderr similarity index 100% rename from src/test/ui/nll/snocat-regression.stderr rename to tests/ui/nll/snocat-regression.stderr diff --git a/src/test/ui/nll/trait-associated-constant.rs b/tests/ui/nll/trait-associated-constant.rs similarity index 100% rename from src/test/ui/nll/trait-associated-constant.rs rename to tests/ui/nll/trait-associated-constant.rs diff --git a/src/test/ui/nll/trait-associated-constant.stderr b/tests/ui/nll/trait-associated-constant.stderr similarity index 100% rename from src/test/ui/nll/trait-associated-constant.stderr rename to tests/ui/nll/trait-associated-constant.stderr diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.rs b/tests/ui/nll/ty-outlives/impl-trait-captures.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/impl-trait-captures.rs rename to tests/ui/nll/ty-outlives/impl-trait-captures.rs diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr b/tests/ui/nll/ty-outlives/impl-trait-captures.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/impl-trait-captures.stderr rename to tests/ui/nll/ty-outlives/impl-trait-captures.stderr diff --git a/src/test/ui/nll/ty-outlives/impl-trait-outlives.rs b/tests/ui/nll/ty-outlives/impl-trait-outlives.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/impl-trait-outlives.rs rename to tests/ui/nll/ty-outlives/impl-trait-outlives.rs diff --git a/src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr b/tests/ui/nll/ty-outlives/impl-trait-outlives.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr rename to tests/ui/nll/ty-outlives/impl-trait-outlives.stderr diff --git a/src/test/ui/nll/ty-outlives/issue-53789-1.rs b/tests/ui/nll/ty-outlives/issue-53789-1.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/issue-53789-1.rs rename to tests/ui/nll/ty-outlives/issue-53789-1.rs diff --git a/src/test/ui/nll/ty-outlives/issue-53789-2.rs b/tests/ui/nll/ty-outlives/issue-53789-2.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/issue-53789-2.rs rename to tests/ui/nll/ty-outlives/issue-53789-2.rs diff --git a/src/test/ui/nll/ty-outlives/issue-55756.rs b/tests/ui/nll/ty-outlives/issue-55756.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/issue-55756.rs rename to tests/ui/nll/ty-outlives/issue-55756.rs diff --git a/src/test/ui/nll/ty-outlives/projection-body.rs b/tests/ui/nll/ty-outlives/projection-body.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-body.rs rename to tests/ui/nll/ty-outlives/projection-body.rs diff --git a/src/test/ui/nll/ty-outlives/projection-implied-bounds.rs b/tests/ui/nll/ty-outlives/projection-implied-bounds.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-implied-bounds.rs rename to tests/ui/nll/ty-outlives/projection-implied-bounds.rs diff --git a/src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr b/tests/ui/nll/ty-outlives/projection-implied-bounds.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr rename to tests/ui/nll/ty-outlives/projection-implied-bounds.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs b/tests/ui/nll/ty-outlives/projection-no-regions-closure.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs rename to tests/ui/nll/ty-outlives/projection-no-regions-closure.rs diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr b/tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr rename to tests/ui/nll/ty-outlives/projection-no-regions-closure.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs b/tests/ui/nll/ty-outlives/projection-no-regions-fn.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs rename to tests/ui/nll/ty-outlives/projection-no-regions-fn.rs diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr b/tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr rename to tests/ui/nll/ty-outlives/projection-no-regions-fn.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-closure.rs b/tests/ui/nll/ty-outlives/projection-one-region-closure.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-closure.rs rename to tests/ui/nll/ty-outlives/projection-one-region-closure.rs diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr b/tests/ui/nll/ty-outlives/projection-one-region-closure.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr rename to tests/ui/nll/ty-outlives/projection-one-region-closure.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs b/tests/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs rename to tests/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr b/tests/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr rename to tests/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs b/tests/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs rename to tests/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.stderr b/tests/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.stderr rename to tests/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs b/tests/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs rename to tests/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs diff --git a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr b/tests/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr rename to tests/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.rs b/tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.rs rename to tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.rs diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.stderr b/tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.stderr rename to tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-bound.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.rs b/tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.rs rename to tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.rs diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.stderr b/tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.stderr rename to tests/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env.rs b/tests/ui/nll/ty-outlives/projection-where-clause-env.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-env.rs rename to tests/ui/nll/ty-outlives/projection-where-clause-env.rs diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-none.rs b/tests/ui/nll/ty-outlives/projection-where-clause-none.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-none.rs rename to tests/ui/nll/ty-outlives/projection-where-clause-none.rs diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-none.stderr b/tests/ui/nll/ty-outlives/projection-where-clause-none.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-none.stderr rename to tests/ui/nll/ty-outlives/projection-where-clause-none.stderr diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-trait.rs b/tests/ui/nll/ty-outlives/projection-where-clause-trait.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/projection-where-clause-trait.rs rename to tests/ui/nll/ty-outlives/projection-where-clause-trait.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs b/tests/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs rename to tests/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr b/tests/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr rename to tests/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs b/tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs rename to tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr b/tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr rename to tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs b/tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs rename to tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr b/tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr rename to tests/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn-body.rs b/tests/ui/nll/ty-outlives/ty-param-fn-body.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-fn-body.rs rename to tests/ui/nll/ty-outlives/ty-param-fn-body.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr b/tests/ui/nll/ty-outlives/ty-param-fn-body.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr rename to tests/ui/nll/ty-outlives/ty-param-fn-body.stderr diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn.rs b/tests/ui/nll/ty-outlives/ty-param-fn.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-fn.rs rename to tests/ui/nll/ty-outlives/ty-param-fn.rs diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn.stderr b/tests/ui/nll/ty-outlives/ty-param-fn.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-fn.stderr rename to tests/ui/nll/ty-outlives/ty-param-fn.stderr diff --git a/src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs b/tests/ui/nll/ty-outlives/ty-param-implied-bounds.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs rename to tests/ui/nll/ty-outlives/ty-param-implied-bounds.rs diff --git a/src/test/ui/nll/ty-outlives/wf-unreachable.rs b/tests/ui/nll/ty-outlives/wf-unreachable.rs similarity index 100% rename from src/test/ui/nll/ty-outlives/wf-unreachable.rs rename to tests/ui/nll/ty-outlives/wf-unreachable.rs diff --git a/src/test/ui/nll/ty-outlives/wf-unreachable.stderr b/tests/ui/nll/ty-outlives/wf-unreachable.stderr similarity index 100% rename from src/test/ui/nll/ty-outlives/wf-unreachable.stderr rename to tests/ui/nll/ty-outlives/wf-unreachable.stderr diff --git a/src/test/ui/nll/type-alias-free-regions.rs b/tests/ui/nll/type-alias-free-regions.rs similarity index 100% rename from src/test/ui/nll/type-alias-free-regions.rs rename to tests/ui/nll/type-alias-free-regions.rs diff --git a/src/test/ui/nll/type-alias-free-regions.stderr b/tests/ui/nll/type-alias-free-regions.stderr similarity index 100% rename from src/test/ui/nll/type-alias-free-regions.stderr rename to tests/ui/nll/type-alias-free-regions.stderr diff --git a/src/test/ui/nll/type-check-pointer-coercions.rs b/tests/ui/nll/type-check-pointer-coercions.rs similarity index 100% rename from src/test/ui/nll/type-check-pointer-coercions.rs rename to tests/ui/nll/type-check-pointer-coercions.rs diff --git a/src/test/ui/nll/type-check-pointer-coercions.stderr b/tests/ui/nll/type-check-pointer-coercions.stderr similarity index 100% rename from src/test/ui/nll/type-check-pointer-coercions.stderr rename to tests/ui/nll/type-check-pointer-coercions.stderr diff --git a/src/test/ui/nll/type-check-pointer-comparisons.rs b/tests/ui/nll/type-check-pointer-comparisons.rs similarity index 100% rename from src/test/ui/nll/type-check-pointer-comparisons.rs rename to tests/ui/nll/type-check-pointer-comparisons.rs diff --git a/src/test/ui/nll/type-check-pointer-comparisons.stderr b/tests/ui/nll/type-check-pointer-comparisons.stderr similarity index 100% rename from src/test/ui/nll/type-check-pointer-comparisons.stderr rename to tests/ui/nll/type-check-pointer-comparisons.stderr diff --git a/src/test/ui/nll/type-test-universe.rs b/tests/ui/nll/type-test-universe.rs similarity index 100% rename from src/test/ui/nll/type-test-universe.rs rename to tests/ui/nll/type-test-universe.rs diff --git a/src/test/ui/nll/type-test-universe.stderr b/tests/ui/nll/type-test-universe.stderr similarity index 100% rename from src/test/ui/nll/type-test-universe.stderr rename to tests/ui/nll/type-test-universe.stderr diff --git a/src/test/ui/nll/unused-mut-issue-50343.fixed b/tests/ui/nll/unused-mut-issue-50343.fixed similarity index 100% rename from src/test/ui/nll/unused-mut-issue-50343.fixed rename to tests/ui/nll/unused-mut-issue-50343.fixed diff --git a/src/test/ui/nll/unused-mut-issue-50343.rs b/tests/ui/nll/unused-mut-issue-50343.rs similarity index 100% rename from src/test/ui/nll/unused-mut-issue-50343.rs rename to tests/ui/nll/unused-mut-issue-50343.rs diff --git a/src/test/ui/nll/unused-mut-issue-50343.stderr b/tests/ui/nll/unused-mut-issue-50343.stderr similarity index 100% rename from src/test/ui/nll/unused-mut-issue-50343.stderr rename to tests/ui/nll/unused-mut-issue-50343.stderr diff --git a/src/test/ui/nll/user-annotations/adt-brace-enums.rs b/tests/ui/nll/user-annotations/adt-brace-enums.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-brace-enums.rs rename to tests/ui/nll/user-annotations/adt-brace-enums.rs diff --git a/src/test/ui/nll/user-annotations/adt-brace-enums.stderr b/tests/ui/nll/user-annotations/adt-brace-enums.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-brace-enums.stderr rename to tests/ui/nll/user-annotations/adt-brace-enums.stderr diff --git a/src/test/ui/nll/user-annotations/adt-brace-structs.rs b/tests/ui/nll/user-annotations/adt-brace-structs.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-brace-structs.rs rename to tests/ui/nll/user-annotations/adt-brace-structs.rs diff --git a/src/test/ui/nll/user-annotations/adt-brace-structs.stderr b/tests/ui/nll/user-annotations/adt-brace-structs.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-brace-structs.stderr rename to tests/ui/nll/user-annotations/adt-brace-structs.stderr diff --git a/src/test/ui/nll/user-annotations/adt-nullary-enums.rs b/tests/ui/nll/user-annotations/adt-nullary-enums.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-nullary-enums.rs rename to tests/ui/nll/user-annotations/adt-nullary-enums.rs diff --git a/src/test/ui/nll/user-annotations/adt-nullary-enums.stderr b/tests/ui/nll/user-annotations/adt-nullary-enums.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-nullary-enums.stderr rename to tests/ui/nll/user-annotations/adt-nullary-enums.stderr diff --git a/src/test/ui/nll/user-annotations/adt-tuple-enums.rs b/tests/ui/nll/user-annotations/adt-tuple-enums.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-enums.rs rename to tests/ui/nll/user-annotations/adt-tuple-enums.rs diff --git a/src/test/ui/nll/user-annotations/adt-tuple-enums.stderr b/tests/ui/nll/user-annotations/adt-tuple-enums.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-enums.stderr rename to tests/ui/nll/user-annotations/adt-tuple-enums.stderr diff --git a/src/test/ui/nll/user-annotations/adt-tuple-struct-calls.rs b/tests/ui/nll/user-annotations/adt-tuple-struct-calls.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-struct-calls.rs rename to tests/ui/nll/user-annotations/adt-tuple-struct-calls.rs diff --git a/src/test/ui/nll/user-annotations/adt-tuple-struct-calls.stderr b/tests/ui/nll/user-annotations/adt-tuple-struct-calls.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-struct-calls.stderr rename to tests/ui/nll/user-annotations/adt-tuple-struct-calls.stderr diff --git a/src/test/ui/nll/user-annotations/adt-tuple-struct.rs b/tests/ui/nll/user-annotations/adt-tuple-struct.rs similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-struct.rs rename to tests/ui/nll/user-annotations/adt-tuple-struct.rs diff --git a/src/test/ui/nll/user-annotations/adt-tuple-struct.stderr b/tests/ui/nll/user-annotations/adt-tuple-struct.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/adt-tuple-struct.stderr rename to tests/ui/nll/user-annotations/adt-tuple-struct.stderr diff --git a/src/test/ui/nll/user-annotations/ascribed-type-wf.rs b/tests/ui/nll/user-annotations/ascribed-type-wf.rs similarity index 100% rename from src/test/ui/nll/user-annotations/ascribed-type-wf.rs rename to tests/ui/nll/user-annotations/ascribed-type-wf.rs diff --git a/src/test/ui/nll/user-annotations/ascribed-type-wf.stderr b/tests/ui/nll/user-annotations/ascribed-type-wf.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/ascribed-type-wf.stderr rename to tests/ui/nll/user-annotations/ascribed-type-wf.stderr diff --git a/src/test/ui/nll/user-annotations/cast_static_lifetime.rs b/tests/ui/nll/user-annotations/cast_static_lifetime.rs similarity index 100% rename from src/test/ui/nll/user-annotations/cast_static_lifetime.rs rename to tests/ui/nll/user-annotations/cast_static_lifetime.rs diff --git a/src/test/ui/nll/user-annotations/cast_static_lifetime.stderr b/tests/ui/nll/user-annotations/cast_static_lifetime.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/cast_static_lifetime.stderr rename to tests/ui/nll/user-annotations/cast_static_lifetime.stderr diff --git a/src/test/ui/nll/user-annotations/closure-sig.rs b/tests/ui/nll/user-annotations/closure-sig.rs similarity index 100% rename from src/test/ui/nll/user-annotations/closure-sig.rs rename to tests/ui/nll/user-annotations/closure-sig.rs diff --git a/src/test/ui/nll/user-annotations/closure-substs.polonius.stderr b/tests/ui/nll/user-annotations/closure-substs.polonius.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/closure-substs.polonius.stderr rename to tests/ui/nll/user-annotations/closure-substs.polonius.stderr diff --git a/src/test/ui/nll/user-annotations/closure-substs.rs b/tests/ui/nll/user-annotations/closure-substs.rs similarity index 100% rename from src/test/ui/nll/user-annotations/closure-substs.rs rename to tests/ui/nll/user-annotations/closure-substs.rs diff --git a/src/test/ui/nll/user-annotations/closure-substs.stderr b/tests/ui/nll/user-annotations/closure-substs.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/closure-substs.stderr rename to tests/ui/nll/user-annotations/closure-substs.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-inherent-1.rs b/tests/ui/nll/user-annotations/constant-in-expr-inherent-1.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-inherent-1.rs rename to tests/ui/nll/user-annotations/constant-in-expr-inherent-1.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-inherent-1.stderr b/tests/ui/nll/user-annotations/constant-in-expr-inherent-1.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-inherent-1.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-inherent-1.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-inherent-2.rs b/tests/ui/nll/user-annotations/constant-in-expr-inherent-2.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-inherent-2.rs rename to tests/ui/nll/user-annotations/constant-in-expr-inherent-2.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-inherent-2.stderr b/tests/ui/nll/user-annotations/constant-in-expr-inherent-2.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-inherent-2.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-inherent-2.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-normalize.rs b/tests/ui/nll/user-annotations/constant-in-expr-normalize.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-normalize.rs rename to tests/ui/nll/user-annotations/constant-in-expr-normalize.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-normalize.stderr b/tests/ui/nll/user-annotations/constant-in-expr-normalize.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-normalize.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-normalize.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-1.rs b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-1.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-1.rs rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-1.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-1.stderr b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-1.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-1.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-1.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-2.rs b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-2.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-2.rs rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-2.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-2.stderr b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-2.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-2.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-2.stderr diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-3.rs b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-3.rs similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-3.rs rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-3.rs diff --git a/src/test/ui/nll/user-annotations/constant-in-expr-trait-item-3.stderr b/tests/ui/nll/user-annotations/constant-in-expr-trait-item-3.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/constant-in-expr-trait-item-3.stderr rename to tests/ui/nll/user-annotations/constant-in-expr-trait-item-3.stderr diff --git a/src/test/ui/nll/user-annotations/downcast-infer.rs b/tests/ui/nll/user-annotations/downcast-infer.rs similarity index 100% rename from src/test/ui/nll/user-annotations/downcast-infer.rs rename to tests/ui/nll/user-annotations/downcast-infer.rs diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs b/tests/ui/nll/user-annotations/dump-adt-brace-struct.rs similarity index 100% rename from src/test/ui/nll/user-annotations/dump-adt-brace-struct.rs rename to tests/ui/nll/user-annotations/dump-adt-brace-struct.rs diff --git a/src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr b/tests/ui/nll/user-annotations/dump-adt-brace-struct.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/dump-adt-brace-struct.stderr rename to tests/ui/nll/user-annotations/dump-adt-brace-struct.stderr diff --git a/src/test/ui/nll/user-annotations/dump-fn-method.rs b/tests/ui/nll/user-annotations/dump-fn-method.rs similarity index 100% rename from src/test/ui/nll/user-annotations/dump-fn-method.rs rename to tests/ui/nll/user-annotations/dump-fn-method.rs diff --git a/src/test/ui/nll/user-annotations/dump-fn-method.stderr b/tests/ui/nll/user-annotations/dump-fn-method.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/dump-fn-method.stderr rename to tests/ui/nll/user-annotations/dump-fn-method.stderr diff --git a/src/test/ui/nll/user-annotations/fns.rs b/tests/ui/nll/user-annotations/fns.rs similarity index 100% rename from src/test/ui/nll/user-annotations/fns.rs rename to tests/ui/nll/user-annotations/fns.rs diff --git a/src/test/ui/nll/user-annotations/fns.stderr b/tests/ui/nll/user-annotations/fns.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/fns.stderr rename to tests/ui/nll/user-annotations/fns.stderr diff --git a/src/test/ui/nll/user-annotations/inherent-associated-constants.rs b/tests/ui/nll/user-annotations/inherent-associated-constants.rs similarity index 100% rename from src/test/ui/nll/user-annotations/inherent-associated-constants.rs rename to tests/ui/nll/user-annotations/inherent-associated-constants.rs diff --git a/src/test/ui/nll/user-annotations/inherent-associated-constants.stderr b/tests/ui/nll/user-annotations/inherent-associated-constants.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/inherent-associated-constants.stderr rename to tests/ui/nll/user-annotations/inherent-associated-constants.stderr diff --git a/src/test/ui/nll/user-annotations/issue-54124.rs b/tests/ui/nll/user-annotations/issue-54124.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-54124.rs rename to tests/ui/nll/user-annotations/issue-54124.rs diff --git a/src/test/ui/nll/user-annotations/issue-54124.stderr b/tests/ui/nll/user-annotations/issue-54124.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/issue-54124.stderr rename to tests/ui/nll/user-annotations/issue-54124.stderr diff --git a/src/test/ui/nll/user-annotations/issue-54570-bootstrapping.rs b/tests/ui/nll/user-annotations/issue-54570-bootstrapping.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-54570-bootstrapping.rs rename to tests/ui/nll/user-annotations/issue-54570-bootstrapping.rs diff --git a/src/test/ui/nll/user-annotations/issue-55219.rs b/tests/ui/nll/user-annotations/issue-55219.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-55219.rs rename to tests/ui/nll/user-annotations/issue-55219.rs diff --git a/src/test/ui/nll/user-annotations/issue-55241.rs b/tests/ui/nll/user-annotations/issue-55241.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-55241.rs rename to tests/ui/nll/user-annotations/issue-55241.rs diff --git a/src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs b/tests/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs rename to tests/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.rs diff --git a/src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.stderr b/tests/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.stderr rename to tests/ui/nll/user-annotations/issue-55748-pat-types-constrain-bindings.stderr diff --git a/src/test/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs b/tests/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs similarity index 100% rename from src/test/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs rename to tests/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.rs diff --git a/src/test/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.stderr b/tests/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.stderr rename to tests/ui/nll/user-annotations/issue-57731-ascibed-coupled-types.stderr diff --git a/src/test/ui/nll/user-annotations/method-call.rs b/tests/ui/nll/user-annotations/method-call.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-call.rs rename to tests/ui/nll/user-annotations/method-call.rs diff --git a/src/test/ui/nll/user-annotations/method-call.stderr b/tests/ui/nll/user-annotations/method-call.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-call.stderr rename to tests/ui/nll/user-annotations/method-call.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-1.rs b/tests/ui/nll/user-annotations/method-ufcs-1.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-1.rs rename to tests/ui/nll/user-annotations/method-ufcs-1.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-1.stderr b/tests/ui/nll/user-annotations/method-ufcs-1.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-1.stderr rename to tests/ui/nll/user-annotations/method-ufcs-1.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-2.rs b/tests/ui/nll/user-annotations/method-ufcs-2.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-2.rs rename to tests/ui/nll/user-annotations/method-ufcs-2.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-2.stderr b/tests/ui/nll/user-annotations/method-ufcs-2.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-2.stderr rename to tests/ui/nll/user-annotations/method-ufcs-2.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-3.rs b/tests/ui/nll/user-annotations/method-ufcs-3.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-3.rs rename to tests/ui/nll/user-annotations/method-ufcs-3.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-3.stderr b/tests/ui/nll/user-annotations/method-ufcs-3.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-3.stderr rename to tests/ui/nll/user-annotations/method-ufcs-3.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-1.rs b/tests/ui/nll/user-annotations/method-ufcs-inherent-1.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-1.rs rename to tests/ui/nll/user-annotations/method-ufcs-inherent-1.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-1.stderr b/tests/ui/nll/user-annotations/method-ufcs-inherent-1.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-1.stderr rename to tests/ui/nll/user-annotations/method-ufcs-inherent-1.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-2.rs b/tests/ui/nll/user-annotations/method-ufcs-inherent-2.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-2.rs rename to tests/ui/nll/user-annotations/method-ufcs-inherent-2.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-2.stderr b/tests/ui/nll/user-annotations/method-ufcs-inherent-2.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-2.stderr rename to tests/ui/nll/user-annotations/method-ufcs-inherent-2.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-3.rs b/tests/ui/nll/user-annotations/method-ufcs-inherent-3.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-3.rs rename to tests/ui/nll/user-annotations/method-ufcs-inherent-3.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-3.stderr b/tests/ui/nll/user-annotations/method-ufcs-inherent-3.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-3.stderr rename to tests/ui/nll/user-annotations/method-ufcs-inherent-3.stderr diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-4.rs b/tests/ui/nll/user-annotations/method-ufcs-inherent-4.rs similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-4.rs rename to tests/ui/nll/user-annotations/method-ufcs-inherent-4.rs diff --git a/src/test/ui/nll/user-annotations/method-ufcs-inherent-4.stderr b/tests/ui/nll/user-annotations/method-ufcs-inherent-4.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/method-ufcs-inherent-4.stderr rename to tests/ui/nll/user-annotations/method-ufcs-inherent-4.stderr diff --git a/src/test/ui/nll/user-annotations/normalization-2.rs b/tests/ui/nll/user-annotations/normalization-2.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-2.rs rename to tests/ui/nll/user-annotations/normalization-2.rs diff --git a/src/test/ui/nll/user-annotations/normalization-2.stderr b/tests/ui/nll/user-annotations/normalization-2.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-2.stderr rename to tests/ui/nll/user-annotations/normalization-2.stderr diff --git a/src/test/ui/nll/user-annotations/normalization-default.rs b/tests/ui/nll/user-annotations/normalization-default.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-default.rs rename to tests/ui/nll/user-annotations/normalization-default.rs diff --git a/src/test/ui/nll/user-annotations/normalization-default.stderr b/tests/ui/nll/user-annotations/normalization-default.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-default.stderr rename to tests/ui/nll/user-annotations/normalization-default.stderr diff --git a/src/test/ui/nll/user-annotations/normalization-infer.rs b/tests/ui/nll/user-annotations/normalization-infer.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-infer.rs rename to tests/ui/nll/user-annotations/normalization-infer.rs diff --git a/src/test/ui/nll/user-annotations/normalization-infer.stderr b/tests/ui/nll/user-annotations/normalization-infer.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-infer.stderr rename to tests/ui/nll/user-annotations/normalization-infer.stderr diff --git a/src/test/ui/nll/user-annotations/normalization-self.rs b/tests/ui/nll/user-annotations/normalization-self.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-self.rs rename to tests/ui/nll/user-annotations/normalization-self.rs diff --git a/src/test/ui/nll/user-annotations/normalization-self.stderr b/tests/ui/nll/user-annotations/normalization-self.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/normalization-self.stderr rename to tests/ui/nll/user-annotations/normalization-self.stderr diff --git a/src/test/ui/nll/user-annotations/normalization.rs b/tests/ui/nll/user-annotations/normalization.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalization.rs rename to tests/ui/nll/user-annotations/normalization.rs diff --git a/src/test/ui/nll/user-annotations/normalization.stderr b/tests/ui/nll/user-annotations/normalization.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/normalization.stderr rename to tests/ui/nll/user-annotations/normalization.stderr diff --git a/src/test/ui/nll/user-annotations/normalize-self-ty.rs b/tests/ui/nll/user-annotations/normalize-self-ty.rs similarity index 100% rename from src/test/ui/nll/user-annotations/normalize-self-ty.rs rename to tests/ui/nll/user-annotations/normalize-self-ty.rs diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.rs b/tests/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.rs similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.rs rename to tests/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.rs diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.stderr b/tests/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.stderr rename to tests/ui/nll/user-annotations/pattern_substs_on_brace_enum_variant.stderr diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_brace_struct.rs b/tests/ui/nll/user-annotations/pattern_substs_on_brace_struct.rs similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_brace_struct.rs rename to tests/ui/nll/user-annotations/pattern_substs_on_brace_struct.rs diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_brace_struct.stderr b/tests/ui/nll/user-annotations/pattern_substs_on_brace_struct.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_brace_struct.stderr rename to tests/ui/nll/user-annotations/pattern_substs_on_brace_struct.stderr diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.rs b/tests/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.rs similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.rs rename to tests/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.rs diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.stderr b/tests/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.stderr rename to tests/ui/nll/user-annotations/pattern_substs_on_tuple_enum_variant.stderr diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_tuple_struct.rs b/tests/ui/nll/user-annotations/pattern_substs_on_tuple_struct.rs similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_tuple_struct.rs rename to tests/ui/nll/user-annotations/pattern_substs_on_tuple_struct.rs diff --git a/src/test/ui/nll/user-annotations/pattern_substs_on_tuple_struct.stderr b/tests/ui/nll/user-annotations/pattern_substs_on_tuple_struct.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/pattern_substs_on_tuple_struct.stderr rename to tests/ui/nll/user-annotations/pattern_substs_on_tuple_struct.stderr diff --git a/src/test/ui/nll/user-annotations/patterns.rs b/tests/ui/nll/user-annotations/patterns.rs similarity index 100% rename from src/test/ui/nll/user-annotations/patterns.rs rename to tests/ui/nll/user-annotations/patterns.rs diff --git a/src/test/ui/nll/user-annotations/patterns.stderr b/tests/ui/nll/user-annotations/patterns.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/patterns.stderr rename to tests/ui/nll/user-annotations/patterns.stderr diff --git a/src/test/ui/nll/user-annotations/promoted-annotation.rs b/tests/ui/nll/user-annotations/promoted-annotation.rs similarity index 100% rename from src/test/ui/nll/user-annotations/promoted-annotation.rs rename to tests/ui/nll/user-annotations/promoted-annotation.rs diff --git a/src/test/ui/nll/user-annotations/promoted-annotation.stderr b/tests/ui/nll/user-annotations/promoted-annotation.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/promoted-annotation.stderr rename to tests/ui/nll/user-annotations/promoted-annotation.stderr diff --git a/src/test/ui/nll/user-annotations/type-annotation-with-hrtb.rs b/tests/ui/nll/user-annotations/type-annotation-with-hrtb.rs similarity index 100% rename from src/test/ui/nll/user-annotations/type-annotation-with-hrtb.rs rename to tests/ui/nll/user-annotations/type-annotation-with-hrtb.rs diff --git a/src/test/ui/nll/user-annotations/type_ascription_static_lifetime.rs b/tests/ui/nll/user-annotations/type_ascription_static_lifetime.rs similarity index 100% rename from src/test/ui/nll/user-annotations/type_ascription_static_lifetime.rs rename to tests/ui/nll/user-annotations/type_ascription_static_lifetime.rs diff --git a/src/test/ui/nll/user-annotations/type_ascription_static_lifetime.stderr b/tests/ui/nll/user-annotations/type_ascription_static_lifetime.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/type_ascription_static_lifetime.stderr rename to tests/ui/nll/user-annotations/type_ascription_static_lifetime.stderr diff --git a/src/test/ui/nll/user-annotations/wf-self-type.rs b/tests/ui/nll/user-annotations/wf-self-type.rs similarity index 100% rename from src/test/ui/nll/user-annotations/wf-self-type.rs rename to tests/ui/nll/user-annotations/wf-self-type.rs diff --git a/src/test/ui/nll/user-annotations/wf-self-type.stderr b/tests/ui/nll/user-annotations/wf-self-type.stderr similarity index 100% rename from src/test/ui/nll/user-annotations/wf-self-type.stderr rename to tests/ui/nll/user-annotations/wf-self-type.stderr diff --git a/src/test/ui/nll/vimwiki-core-regression.rs b/tests/ui/nll/vimwiki-core-regression.rs similarity index 100% rename from src/test/ui/nll/vimwiki-core-regression.rs rename to tests/ui/nll/vimwiki-core-regression.rs diff --git a/src/test/ui/nll/where_clauses_in_functions.rs b/tests/ui/nll/where_clauses_in_functions.rs similarity index 100% rename from src/test/ui/nll/where_clauses_in_functions.rs rename to tests/ui/nll/where_clauses_in_functions.rs diff --git a/src/test/ui/nll/where_clauses_in_functions.stderr b/tests/ui/nll/where_clauses_in_functions.stderr similarity index 100% rename from src/test/ui/nll/where_clauses_in_functions.stderr rename to tests/ui/nll/where_clauses_in_functions.stderr diff --git a/src/test/ui/nll/where_clauses_in_structs.rs b/tests/ui/nll/where_clauses_in_structs.rs similarity index 100% rename from src/test/ui/nll/where_clauses_in_structs.rs rename to tests/ui/nll/where_clauses_in_structs.rs diff --git a/src/test/ui/nll/where_clauses_in_structs.stderr b/tests/ui/nll/where_clauses_in_structs.stderr similarity index 100% rename from src/test/ui/nll/where_clauses_in_structs.stderr rename to tests/ui/nll/where_clauses_in_structs.stderr diff --git a/src/test/ui/no-capture-arc.rs b/tests/ui/no-capture-arc.rs similarity index 100% rename from src/test/ui/no-capture-arc.rs rename to tests/ui/no-capture-arc.rs diff --git a/src/test/ui/no-capture-arc.stderr b/tests/ui/no-capture-arc.stderr similarity index 100% rename from src/test/ui/no-capture-arc.stderr rename to tests/ui/no-capture-arc.stderr diff --git a/src/test/ui/no-core-1.rs b/tests/ui/no-core-1.rs similarity index 100% rename from src/test/ui/no-core-1.rs rename to tests/ui/no-core-1.rs diff --git a/src/test/ui/no-core-2.rs b/tests/ui/no-core-2.rs similarity index 100% rename from src/test/ui/no-core-2.rs rename to tests/ui/no-core-2.rs diff --git a/src/test/ui/no-link-unknown-crate.rs b/tests/ui/no-link-unknown-crate.rs similarity index 100% rename from src/test/ui/no-link-unknown-crate.rs rename to tests/ui/no-link-unknown-crate.rs diff --git a/src/test/ui/no-link-unknown-crate.stderr b/tests/ui/no-link-unknown-crate.stderr similarity index 100% rename from src/test/ui/no-link-unknown-crate.stderr rename to tests/ui/no-link-unknown-crate.stderr diff --git a/src/test/ui/no-patterns-in-args-2.rs b/tests/ui/no-patterns-in-args-2.rs similarity index 100% rename from src/test/ui/no-patterns-in-args-2.rs rename to tests/ui/no-patterns-in-args-2.rs diff --git a/src/test/ui/no-patterns-in-args-2.stderr b/tests/ui/no-patterns-in-args-2.stderr similarity index 100% rename from src/test/ui/no-patterns-in-args-2.stderr rename to tests/ui/no-patterns-in-args-2.stderr diff --git a/src/test/ui/no-patterns-in-args-macro.rs b/tests/ui/no-patterns-in-args-macro.rs similarity index 100% rename from src/test/ui/no-patterns-in-args-macro.rs rename to tests/ui/no-patterns-in-args-macro.rs diff --git a/src/test/ui/no-patterns-in-args-macro.stderr b/tests/ui/no-patterns-in-args-macro.stderr similarity index 100% rename from src/test/ui/no-patterns-in-args-macro.stderr rename to tests/ui/no-patterns-in-args-macro.stderr diff --git a/src/test/ui/no-patterns-in-args.rs b/tests/ui/no-patterns-in-args.rs similarity index 100% rename from src/test/ui/no-patterns-in-args.rs rename to tests/ui/no-patterns-in-args.rs diff --git a/src/test/ui/no-patterns-in-args.stderr b/tests/ui/no-patterns-in-args.stderr similarity index 100% rename from src/test/ui/no-patterns-in-args.stderr rename to tests/ui/no-patterns-in-args.stderr diff --git a/src/test/ui/no-reuse-move-arc.rs b/tests/ui/no-reuse-move-arc.rs similarity index 100% rename from src/test/ui/no-reuse-move-arc.rs rename to tests/ui/no-reuse-move-arc.rs diff --git a/src/test/ui/no-reuse-move-arc.stderr b/tests/ui/no-reuse-move-arc.stderr similarity index 100% rename from src/test/ui/no-reuse-move-arc.stderr rename to tests/ui/no-reuse-move-arc.stderr diff --git a/src/test/ui/no-send-res-ports.rs b/tests/ui/no-send-res-ports.rs similarity index 100% rename from src/test/ui/no-send-res-ports.rs rename to tests/ui/no-send-res-ports.rs diff --git a/src/test/ui/no-send-res-ports.stderr b/tests/ui/no-send-res-ports.stderr similarity index 100% rename from src/test/ui/no-send-res-ports.stderr rename to tests/ui/no-send-res-ports.stderr diff --git a/src/test/ui/no-warn-on-field-replace-issue-34101.rs b/tests/ui/no-warn-on-field-replace-issue-34101.rs similarity index 100% rename from src/test/ui/no-warn-on-field-replace-issue-34101.rs rename to tests/ui/no-warn-on-field-replace-issue-34101.rs diff --git a/src/test/ui/no_crate_type.rs b/tests/ui/no_crate_type.rs similarity index 100% rename from src/test/ui/no_crate_type.rs rename to tests/ui/no_crate_type.rs diff --git a/src/test/ui/no_crate_type.stderr b/tests/ui/no_crate_type.stderr similarity index 100% rename from src/test/ui/no_crate_type.stderr rename to tests/ui/no_crate_type.stderr diff --git a/src/test/ui/no_send-enum.rs b/tests/ui/no_send-enum.rs similarity index 100% rename from src/test/ui/no_send-enum.rs rename to tests/ui/no_send-enum.rs diff --git a/src/test/ui/no_send-enum.stderr b/tests/ui/no_send-enum.stderr similarity index 100% rename from src/test/ui/no_send-enum.stderr rename to tests/ui/no_send-enum.stderr diff --git a/src/test/ui/no_send-rc.rs b/tests/ui/no_send-rc.rs similarity index 100% rename from src/test/ui/no_send-rc.rs rename to tests/ui/no_send-rc.rs diff --git a/src/test/ui/no_send-rc.stderr b/tests/ui/no_send-rc.stderr similarity index 100% rename from src/test/ui/no_send-rc.stderr rename to tests/ui/no_send-rc.stderr diff --git a/src/test/ui/no_share-enum.rs b/tests/ui/no_share-enum.rs similarity index 100% rename from src/test/ui/no_share-enum.rs rename to tests/ui/no_share-enum.rs diff --git a/src/test/ui/no_share-enum.stderr b/tests/ui/no_share-enum.stderr similarity index 100% rename from src/test/ui/no_share-enum.stderr rename to tests/ui/no_share-enum.stderr diff --git a/src/test/ui/no_share-struct.rs b/tests/ui/no_share-struct.rs similarity index 100% rename from src/test/ui/no_share-struct.rs rename to tests/ui/no_share-struct.rs diff --git a/src/test/ui/no_share-struct.stderr b/tests/ui/no_share-struct.stderr similarity index 100% rename from src/test/ui/no_share-struct.stderr rename to tests/ui/no_share-struct.stderr diff --git a/src/test/ui/noexporttypeexe.rs b/tests/ui/noexporttypeexe.rs similarity index 100% rename from src/test/ui/noexporttypeexe.rs rename to tests/ui/noexporttypeexe.rs diff --git a/src/test/ui/noexporttypeexe.stderr b/tests/ui/noexporttypeexe.stderr similarity index 100% rename from src/test/ui/noexporttypeexe.stderr rename to tests/ui/noexporttypeexe.stderr diff --git a/src/test/ui/non-constant-expr-for-arr-len.rs b/tests/ui/non-constant-expr-for-arr-len.rs similarity index 100% rename from src/test/ui/non-constant-expr-for-arr-len.rs rename to tests/ui/non-constant-expr-for-arr-len.rs diff --git a/src/test/ui/non-constant-expr-for-arr-len.stderr b/tests/ui/non-constant-expr-for-arr-len.stderr similarity index 100% rename from src/test/ui/non-constant-expr-for-arr-len.stderr rename to tests/ui/non-constant-expr-for-arr-len.stderr diff --git a/src/test/ui/non-copyable-void.rs b/tests/ui/non-copyable-void.rs similarity index 100% rename from src/test/ui/non-copyable-void.rs rename to tests/ui/non-copyable-void.rs diff --git a/src/test/ui/non-copyable-void.stderr b/tests/ui/non-copyable-void.stderr similarity index 100% rename from src/test/ui/non-copyable-void.stderr rename to tests/ui/non-copyable-void.stderr diff --git a/src/test/ui/non-fmt-panic.fixed b/tests/ui/non-fmt-panic.fixed similarity index 100% rename from src/test/ui/non-fmt-panic.fixed rename to tests/ui/non-fmt-panic.fixed diff --git a/src/test/ui/non-fmt-panic.rs b/tests/ui/non-fmt-panic.rs similarity index 100% rename from src/test/ui/non-fmt-panic.rs rename to tests/ui/non-fmt-panic.rs diff --git a/src/test/ui/non-fmt-panic.stderr b/tests/ui/non-fmt-panic.stderr similarity index 100% rename from src/test/ui/non-fmt-panic.stderr rename to tests/ui/non-fmt-panic.stderr diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.rs b/tests/ui/non-ice-error-on-worker-io-fail.rs similarity index 100% rename from src/test/ui/non-ice-error-on-worker-io-fail.rs rename to tests/ui/non-ice-error-on-worker-io-fail.rs diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.stderr b/tests/ui/non-ice-error-on-worker-io-fail.stderr similarity index 100% rename from src/test/ui/non-ice-error-on-worker-io-fail.stderr rename to tests/ui/non-ice-error-on-worker-io-fail.stderr diff --git a/src/test/ui/non_modrs_mods/foors_mod.rs b/tests/ui/non_modrs_mods/foors_mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod.rs rename to tests/ui/non_modrs_mods/foors_mod.rs diff --git a/src/test/ui/non_modrs_mods/foors_mod/compiletest-ignore-dir b/tests/ui/non_modrs_mods/foors_mod/compiletest-ignore-dir similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/compiletest-ignore-dir rename to tests/ui/non_modrs_mods/foors_mod/compiletest-ignore-dir diff --git a/src/test/ui/non_modrs_mods/foors_mod/inline/somename.rs b/tests/ui/non_modrs_mods/foors_mod/inline/somename.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/inline/somename.rs rename to tests/ui/non_modrs_mods/foors_mod/inline/somename.rs diff --git a/src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs b/tests/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs rename to tests/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs diff --git a/src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs b/tests/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs rename to tests/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs diff --git a/src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs b/tests/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs rename to tests/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs diff --git a/src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs b/tests/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs rename to tests/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/compiletest-ignore-dir b/tests/ui/non_modrs_mods/modrs_mod/compiletest-ignore-dir similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/compiletest-ignore-dir rename to tests/ui/non_modrs_mods/modrs_mod/compiletest-ignore-dir diff --git a/src/test/ui/non_modrs_mods/modrs_mod/inline/somename.rs b/tests/ui/non_modrs_mods/modrs_mod/inline/somename.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/inline/somename.rs rename to tests/ui/non_modrs_mods/modrs_mod/inline/somename.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs b/tests/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs rename to tests/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs b/tests/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs rename to tests/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs b/tests/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs rename to tests/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs b/tests/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs rename to tests/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs diff --git a/src/test/ui/non_modrs_mods/modrs_mod/mod.rs b/tests/ui/non_modrs_mods/modrs_mod/mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/modrs_mod/mod.rs rename to tests/ui/non_modrs_mods/modrs_mod/mod.rs diff --git a/src/test/ui/non_modrs_mods/non_modrs_mods.rs b/tests/ui/non_modrs_mods/non_modrs_mods.rs similarity index 100% rename from src/test/ui/non_modrs_mods/non_modrs_mods.rs rename to tests/ui/non_modrs_mods/non_modrs_mods.rs diff --git a/src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/arbitrary_name.rs b/tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/arbitrary_name.rs similarity index 100% rename from src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/arbitrary_name.rs rename to tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/arbitrary_name.rs diff --git a/src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/compiletest-ignore-dir b/tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/compiletest-ignore-dir similarity index 100% rename from src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/compiletest-ignore-dir rename to tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/compiletest-ignore-dir diff --git a/src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/innest.rs b/tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/innest.rs similarity index 100% rename from src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/innest.rs rename to tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/innest.rs diff --git a/src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs b/tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs rename to tests/ui/non_modrs_mods/some_crazy_attr_mod_dir/inner_modrs_mod/mod.rs diff --git a/src/test/ui/non_modrs_mods_and_inline_mods/non_modrs_mods_and_inline_mods.rs b/tests/ui/non_modrs_mods_and_inline_mods/non_modrs_mods_and_inline_mods.rs similarity index 100% rename from src/test/ui/non_modrs_mods_and_inline_mods/non_modrs_mods_and_inline_mods.rs rename to tests/ui/non_modrs_mods_and_inline_mods/non_modrs_mods_and_inline_mods.rs diff --git a/src/test/ui/non_modrs_mods_and_inline_mods/x.rs b/tests/ui/non_modrs_mods_and_inline_mods/x.rs similarity index 100% rename from src/test/ui/non_modrs_mods_and_inline_mods/x.rs rename to tests/ui/non_modrs_mods_and_inline_mods/x.rs diff --git a/src/test/ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs b/tests/ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs similarity index 100% rename from src/test/ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs rename to tests/ui/non_modrs_mods_and_inline_mods/x/y/z/mod.rs diff --git a/src/test/ui/noncopyable-class.rs b/tests/ui/noncopyable-class.rs similarity index 100% rename from src/test/ui/noncopyable-class.rs rename to tests/ui/noncopyable-class.rs diff --git a/src/test/ui/noncopyable-class.stderr b/tests/ui/noncopyable-class.stderr similarity index 100% rename from src/test/ui/noncopyable-class.stderr rename to tests/ui/noncopyable-class.stderr diff --git a/src/test/ui/nonscalar-cast.fixed b/tests/ui/nonscalar-cast.fixed similarity index 100% rename from src/test/ui/nonscalar-cast.fixed rename to tests/ui/nonscalar-cast.fixed diff --git a/src/test/ui/nonscalar-cast.rs b/tests/ui/nonscalar-cast.rs similarity index 100% rename from src/test/ui/nonscalar-cast.rs rename to tests/ui/nonscalar-cast.rs diff --git a/src/test/ui/nonscalar-cast.stderr b/tests/ui/nonscalar-cast.stderr similarity index 100% rename from src/test/ui/nonscalar-cast.stderr rename to tests/ui/nonscalar-cast.stderr diff --git a/src/test/ui/not-clone-closure.rs b/tests/ui/not-clone-closure.rs similarity index 100% rename from src/test/ui/not-clone-closure.rs rename to tests/ui/not-clone-closure.rs diff --git a/src/test/ui/not-clone-closure.stderr b/tests/ui/not-clone-closure.stderr similarity index 100% rename from src/test/ui/not-clone-closure.stderr rename to tests/ui/not-clone-closure.stderr diff --git a/src/test/ui/not-copy-closure.rs b/tests/ui/not-copy-closure.rs similarity index 100% rename from src/test/ui/not-copy-closure.rs rename to tests/ui/not-copy-closure.rs diff --git a/src/test/ui/not-copy-closure.stderr b/tests/ui/not-copy-closure.stderr similarity index 100% rename from src/test/ui/not-copy-closure.stderr rename to tests/ui/not-copy-closure.stderr diff --git a/src/test/ui/not-enough-arguments.rs b/tests/ui/not-enough-arguments.rs similarity index 100% rename from src/test/ui/not-enough-arguments.rs rename to tests/ui/not-enough-arguments.rs diff --git a/src/test/ui/not-enough-arguments.stderr b/tests/ui/not-enough-arguments.stderr similarity index 100% rename from src/test/ui/not-enough-arguments.stderr rename to tests/ui/not-enough-arguments.stderr diff --git a/src/test/ui/not-panic/not-panic-safe-2.rs b/tests/ui/not-panic/not-panic-safe-2.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-2.rs rename to tests/ui/not-panic/not-panic-safe-2.rs diff --git a/src/test/ui/not-panic/not-panic-safe-2.stderr b/tests/ui/not-panic/not-panic-safe-2.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-2.stderr rename to tests/ui/not-panic/not-panic-safe-2.stderr diff --git a/src/test/ui/not-panic/not-panic-safe-3.rs b/tests/ui/not-panic/not-panic-safe-3.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-3.rs rename to tests/ui/not-panic/not-panic-safe-3.rs diff --git a/src/test/ui/not-panic/not-panic-safe-3.stderr b/tests/ui/not-panic/not-panic-safe-3.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-3.stderr rename to tests/ui/not-panic/not-panic-safe-3.stderr diff --git a/src/test/ui/not-panic/not-panic-safe-4.rs b/tests/ui/not-panic/not-panic-safe-4.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-4.rs rename to tests/ui/not-panic/not-panic-safe-4.rs diff --git a/src/test/ui/not-panic/not-panic-safe-4.stderr b/tests/ui/not-panic/not-panic-safe-4.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-4.stderr rename to tests/ui/not-panic/not-panic-safe-4.stderr diff --git a/src/test/ui/not-panic/not-panic-safe-5.rs b/tests/ui/not-panic/not-panic-safe-5.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-5.rs rename to tests/ui/not-panic/not-panic-safe-5.rs diff --git a/src/test/ui/not-panic/not-panic-safe-5.stderr b/tests/ui/not-panic/not-panic-safe-5.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-5.stderr rename to tests/ui/not-panic/not-panic-safe-5.stderr diff --git a/src/test/ui/not-panic/not-panic-safe-6.rs b/tests/ui/not-panic/not-panic-safe-6.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-6.rs rename to tests/ui/not-panic/not-panic-safe-6.rs diff --git a/src/test/ui/not-panic/not-panic-safe-6.stderr b/tests/ui/not-panic/not-panic-safe-6.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe-6.stderr rename to tests/ui/not-panic/not-panic-safe-6.stderr diff --git a/src/test/ui/not-panic/not-panic-safe.rs b/tests/ui/not-panic/not-panic-safe.rs similarity index 100% rename from src/test/ui/not-panic/not-panic-safe.rs rename to tests/ui/not-panic/not-panic-safe.rs diff --git a/src/test/ui/not-panic/not-panic-safe.stderr b/tests/ui/not-panic/not-panic-safe.stderr similarity index 100% rename from src/test/ui/not-panic/not-panic-safe.stderr rename to tests/ui/not-panic/not-panic-safe.stderr diff --git a/src/test/ui/nul-characters.rs b/tests/ui/nul-characters.rs similarity index 100% rename from src/test/ui/nul-characters.rs rename to tests/ui/nul-characters.rs diff --git a/src/test/ui/nullable-pointer-iotareduction.rs b/tests/ui/nullable-pointer-iotareduction.rs similarity index 100% rename from src/test/ui/nullable-pointer-iotareduction.rs rename to tests/ui/nullable-pointer-iotareduction.rs diff --git a/src/test/ui/nullable-pointer-size.rs b/tests/ui/nullable-pointer-size.rs similarity index 100% rename from src/test/ui/nullable-pointer-size.rs rename to tests/ui/nullable-pointer-size.rs diff --git a/src/test/ui/numbers-arithmetic/arith-unsigned.rs b/tests/ui/numbers-arithmetic/arith-unsigned.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/arith-unsigned.rs rename to tests/ui/numbers-arithmetic/arith-unsigned.rs diff --git a/src/test/ui/numbers-arithmetic/div-mod.rs b/tests/ui/numbers-arithmetic/div-mod.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/div-mod.rs rename to tests/ui/numbers-arithmetic/div-mod.rs diff --git a/src/test/ui/numbers-arithmetic/divide-by-zero.rs b/tests/ui/numbers-arithmetic/divide-by-zero.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/divide-by-zero.rs rename to tests/ui/numbers-arithmetic/divide-by-zero.rs diff --git a/src/test/ui/numbers-arithmetic/float-int-invalid-const-cast.rs b/tests/ui/numbers-arithmetic/float-int-invalid-const-cast.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float-int-invalid-const-cast.rs rename to tests/ui/numbers-arithmetic/float-int-invalid-const-cast.rs diff --git a/src/test/ui/numbers-arithmetic/float-literal-inference.rs b/tests/ui/numbers-arithmetic/float-literal-inference.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float-literal-inference.rs rename to tests/ui/numbers-arithmetic/float-literal-inference.rs diff --git a/src/test/ui/numbers-arithmetic/float-nan.rs b/tests/ui/numbers-arithmetic/float-nan.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float-nan.rs rename to tests/ui/numbers-arithmetic/float-nan.rs diff --git a/src/test/ui/numbers-arithmetic/float-signature.rs b/tests/ui/numbers-arithmetic/float-signature.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float-signature.rs rename to tests/ui/numbers-arithmetic/float-signature.rs diff --git a/src/test/ui/numbers-arithmetic/float.rs b/tests/ui/numbers-arithmetic/float.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float.rs rename to tests/ui/numbers-arithmetic/float.rs diff --git a/src/test/ui/numbers-arithmetic/float2.rs b/tests/ui/numbers-arithmetic/float2.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float2.rs rename to tests/ui/numbers-arithmetic/float2.rs diff --git a/src/test/ui/numbers-arithmetic/float_math.rs b/tests/ui/numbers-arithmetic/float_math.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/float_math.rs rename to tests/ui/numbers-arithmetic/float_math.rs diff --git a/src/test/ui/numbers-arithmetic/floatlits.rs b/tests/ui/numbers-arithmetic/floatlits.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/floatlits.rs rename to tests/ui/numbers-arithmetic/floatlits.rs diff --git a/src/test/ui/numbers-arithmetic/i128.rs b/tests/ui/numbers-arithmetic/i128.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/i128.rs rename to tests/ui/numbers-arithmetic/i128.rs diff --git a/src/test/ui/numbers-arithmetic/i32-sub.rs b/tests/ui/numbers-arithmetic/i32-sub.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/i32-sub.rs rename to tests/ui/numbers-arithmetic/i32-sub.rs diff --git a/src/test/ui/numbers-arithmetic/i8-incr.rs b/tests/ui/numbers-arithmetic/i8-incr.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/i8-incr.rs rename to tests/ui/numbers-arithmetic/i8-incr.rs diff --git a/src/test/ui/numbers-arithmetic/int-abs-overflow.rs b/tests/ui/numbers-arithmetic/int-abs-overflow.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/int-abs-overflow.rs rename to tests/ui/numbers-arithmetic/int-abs-overflow.rs diff --git a/src/test/ui/numbers-arithmetic/int.rs b/tests/ui/numbers-arithmetic/int.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/int.rs rename to tests/ui/numbers-arithmetic/int.rs diff --git a/src/test/ui/numbers-arithmetic/integer-literal-radix.rs b/tests/ui/numbers-arithmetic/integer-literal-radix.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/integer-literal-radix.rs rename to tests/ui/numbers-arithmetic/integer-literal-radix.rs diff --git a/src/test/ui/numbers-arithmetic/integer-literal-suffix-inference-2.rs b/tests/ui/numbers-arithmetic/integer-literal-suffix-inference-2.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/integer-literal-suffix-inference-2.rs rename to tests/ui/numbers-arithmetic/integer-literal-suffix-inference-2.rs diff --git a/src/test/ui/numbers-arithmetic/integer-literal-suffix-inference-3.rs b/tests/ui/numbers-arithmetic/integer-literal-suffix-inference-3.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/integer-literal-suffix-inference-3.rs rename to tests/ui/numbers-arithmetic/integer-literal-suffix-inference-3.rs diff --git a/src/test/ui/numbers-arithmetic/integer-literal-suffix-inference.rs b/tests/ui/numbers-arithmetic/integer-literal-suffix-inference.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/integer-literal-suffix-inference.rs rename to tests/ui/numbers-arithmetic/integer-literal-suffix-inference.rs diff --git a/src/test/ui/numbers-arithmetic/issue-8460-const.noopt.stderr b/tests/ui/numbers-arithmetic/issue-8460-const.noopt.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/issue-8460-const.noopt.stderr rename to tests/ui/numbers-arithmetic/issue-8460-const.noopt.stderr diff --git a/src/test/ui/numbers-arithmetic/issue-8460-const.opt.stderr b/tests/ui/numbers-arithmetic/issue-8460-const.opt.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/issue-8460-const.opt.stderr rename to tests/ui/numbers-arithmetic/issue-8460-const.opt.stderr diff --git a/src/test/ui/numbers-arithmetic/issue-8460-const.opt_with_overflow_checks.stderr b/tests/ui/numbers-arithmetic/issue-8460-const.opt_with_overflow_checks.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/issue-8460-const.opt_with_overflow_checks.stderr rename to tests/ui/numbers-arithmetic/issue-8460-const.opt_with_overflow_checks.stderr diff --git a/src/test/ui/numbers-arithmetic/issue-8460-const.rs b/tests/ui/numbers-arithmetic/issue-8460-const.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/issue-8460-const.rs rename to tests/ui/numbers-arithmetic/issue-8460-const.rs diff --git a/src/test/ui/numbers-arithmetic/issue-8460.rs b/tests/ui/numbers-arithmetic/issue-8460.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/issue-8460.rs rename to tests/ui/numbers-arithmetic/issue-8460.rs diff --git a/src/test/ui/numbers-arithmetic/mod-zero.rs b/tests/ui/numbers-arithmetic/mod-zero.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/mod-zero.rs rename to tests/ui/numbers-arithmetic/mod-zero.rs diff --git a/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs b/tests/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs rename to tests/ui/numbers-arithmetic/next-power-of-two-overflow-debug.rs diff --git a/src/test/ui/numbers-arithmetic/next-power-of-two-overflow-ndebug.rs b/tests/ui/numbers-arithmetic/next-power-of-two-overflow-ndebug.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/next-power-of-two-overflow-ndebug.rs rename to tests/ui/numbers-arithmetic/next-power-of-two-overflow-ndebug.rs diff --git a/src/test/ui/numbers-arithmetic/not-suggest-float-literal.rs b/tests/ui/numbers-arithmetic/not-suggest-float-literal.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/not-suggest-float-literal.rs rename to tests/ui/numbers-arithmetic/not-suggest-float-literal.rs diff --git a/src/test/ui/numbers-arithmetic/not-suggest-float-literal.stderr b/tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/not-suggest-float-literal.stderr rename to tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr diff --git a/src/test/ui/numbers-arithmetic/num-wrapping.rs b/tests/ui/numbers-arithmetic/num-wrapping.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/num-wrapping.rs rename to tests/ui/numbers-arithmetic/num-wrapping.rs diff --git a/src/test/ui/numbers-arithmetic/numeric-method-autoexport.rs b/tests/ui/numbers-arithmetic/numeric-method-autoexport.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/numeric-method-autoexport.rs rename to tests/ui/numbers-arithmetic/numeric-method-autoexport.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-add.rs b/tests/ui/numbers-arithmetic/overflowing-add.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-add.rs rename to tests/ui/numbers-arithmetic/overflowing-add.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-1.rs b/tests/ui/numbers-arithmetic/overflowing-lsh-1.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-1.rs rename to tests/ui/numbers-arithmetic/overflowing-lsh-1.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-1.stderr b/tests/ui/numbers-arithmetic/overflowing-lsh-1.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-1.stderr rename to tests/ui/numbers-arithmetic/overflowing-lsh-1.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-2.rs b/tests/ui/numbers-arithmetic/overflowing-lsh-2.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-2.rs rename to tests/ui/numbers-arithmetic/overflowing-lsh-2.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-2.stderr b/tests/ui/numbers-arithmetic/overflowing-lsh-2.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-2.stderr rename to tests/ui/numbers-arithmetic/overflowing-lsh-2.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-3.rs b/tests/ui/numbers-arithmetic/overflowing-lsh-3.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-3.rs rename to tests/ui/numbers-arithmetic/overflowing-lsh-3.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-3.stderr b/tests/ui/numbers-arithmetic/overflowing-lsh-3.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-3.stderr rename to tests/ui/numbers-arithmetic/overflowing-lsh-3.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-4.rs b/tests/ui/numbers-arithmetic/overflowing-lsh-4.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-4.rs rename to tests/ui/numbers-arithmetic/overflowing-lsh-4.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-lsh-4.stderr b/tests/ui/numbers-arithmetic/overflowing-lsh-4.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-lsh-4.stderr rename to tests/ui/numbers-arithmetic/overflowing-lsh-4.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-mul.rs b/tests/ui/numbers-arithmetic/overflowing-mul.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-mul.rs rename to tests/ui/numbers-arithmetic/overflowing-mul.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-neg.rs b/tests/ui/numbers-arithmetic/overflowing-neg.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-neg.rs rename to tests/ui/numbers-arithmetic/overflowing-neg.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-pow-signed.rs b/tests/ui/numbers-arithmetic/overflowing-pow-signed.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-pow-signed.rs rename to tests/ui/numbers-arithmetic/overflowing-pow-signed.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-pow-unsigned.rs b/tests/ui/numbers-arithmetic/overflowing-pow-unsigned.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-pow-unsigned.rs rename to tests/ui/numbers-arithmetic/overflowing-pow-unsigned.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-1.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-1.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-1.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-1.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-1.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-1.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-1.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-1.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-2.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-2.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-2.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-2.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-2.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-2.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-2.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-2.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-3.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-3.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-3.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-3.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-3.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-3.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-3.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-3.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-4.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-4.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-4.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-4.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-4.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-4.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-4.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-4.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-5.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-5.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-5.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-5.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-5.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-5.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-5.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-5.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-6.rs b/tests/ui/numbers-arithmetic/overflowing-rsh-6.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-6.rs rename to tests/ui/numbers-arithmetic/overflowing-rsh-6.rs diff --git a/src/test/ui/numbers-arithmetic/overflowing-rsh-6.stderr b/tests/ui/numbers-arithmetic/overflowing-rsh-6.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-rsh-6.stderr rename to tests/ui/numbers-arithmetic/overflowing-rsh-6.stderr diff --git a/src/test/ui/numbers-arithmetic/overflowing-sub.rs b/tests/ui/numbers-arithmetic/overflowing-sub.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/overflowing-sub.rs rename to tests/ui/numbers-arithmetic/overflowing-sub.rs diff --git a/src/test/ui/numbers-arithmetic/promoted_overflow.rs b/tests/ui/numbers-arithmetic/promoted_overflow.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/promoted_overflow.rs rename to tests/ui/numbers-arithmetic/promoted_overflow.rs diff --git a/src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs b/tests/ui/numbers-arithmetic/promoted_overflow_opt.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/promoted_overflow_opt.rs rename to tests/ui/numbers-arithmetic/promoted_overflow_opt.rs diff --git a/src/test/ui/numbers-arithmetic/saturating-float-casts-impl.rs b/tests/ui/numbers-arithmetic/saturating-float-casts-impl.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/saturating-float-casts-impl.rs rename to tests/ui/numbers-arithmetic/saturating-float-casts-impl.rs diff --git a/src/test/ui/numbers-arithmetic/saturating-float-casts-wasm.rs b/tests/ui/numbers-arithmetic/saturating-float-casts-wasm.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/saturating-float-casts-wasm.rs rename to tests/ui/numbers-arithmetic/saturating-float-casts-wasm.rs diff --git a/src/test/ui/numbers-arithmetic/saturating-float-casts.rs b/tests/ui/numbers-arithmetic/saturating-float-casts.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/saturating-float-casts.rs rename to tests/ui/numbers-arithmetic/saturating-float-casts.rs diff --git a/src/test/ui/numbers-arithmetic/shift-near-oflo.rs b/tests/ui/numbers-arithmetic/shift-near-oflo.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/shift-near-oflo.rs rename to tests/ui/numbers-arithmetic/shift-near-oflo.rs diff --git a/src/test/ui/numbers-arithmetic/shift-various-types.rs b/tests/ui/numbers-arithmetic/shift-various-types.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/shift-various-types.rs rename to tests/ui/numbers-arithmetic/shift-various-types.rs diff --git a/src/test/ui/numbers-arithmetic/shift.rs b/tests/ui/numbers-arithmetic/shift.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/shift.rs rename to tests/ui/numbers-arithmetic/shift.rs diff --git a/src/test/ui/numbers-arithmetic/signed-shift-const-eval.rs b/tests/ui/numbers-arithmetic/signed-shift-const-eval.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/signed-shift-const-eval.rs rename to tests/ui/numbers-arithmetic/signed-shift-const-eval.rs diff --git a/src/test/ui/numbers-arithmetic/suggest-float-literal.fixed b/tests/ui/numbers-arithmetic/suggest-float-literal.fixed similarity index 100% rename from src/test/ui/numbers-arithmetic/suggest-float-literal.fixed rename to tests/ui/numbers-arithmetic/suggest-float-literal.fixed diff --git a/src/test/ui/numbers-arithmetic/suggest-float-literal.rs b/tests/ui/numbers-arithmetic/suggest-float-literal.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/suggest-float-literal.rs rename to tests/ui/numbers-arithmetic/suggest-float-literal.rs diff --git a/src/test/ui/numbers-arithmetic/suggest-float-literal.stderr b/tests/ui/numbers-arithmetic/suggest-float-literal.stderr similarity index 100% rename from src/test/ui/numbers-arithmetic/suggest-float-literal.stderr rename to tests/ui/numbers-arithmetic/suggest-float-literal.stderr diff --git a/src/test/ui/numbers-arithmetic/u128-as-f32.rs b/tests/ui/numbers-arithmetic/u128-as-f32.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/u128-as-f32.rs rename to tests/ui/numbers-arithmetic/u128-as-f32.rs diff --git a/src/test/ui/numbers-arithmetic/u128.rs b/tests/ui/numbers-arithmetic/u128.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/u128.rs rename to tests/ui/numbers-arithmetic/u128.rs diff --git a/src/test/ui/numbers-arithmetic/u32-decr.rs b/tests/ui/numbers-arithmetic/u32-decr.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/u32-decr.rs rename to tests/ui/numbers-arithmetic/u32-decr.rs diff --git a/src/test/ui/numbers-arithmetic/u8-incr-decr.rs b/tests/ui/numbers-arithmetic/u8-incr-decr.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/u8-incr-decr.rs rename to tests/ui/numbers-arithmetic/u8-incr-decr.rs diff --git a/src/test/ui/numbers-arithmetic/u8-incr.rs b/tests/ui/numbers-arithmetic/u8-incr.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/u8-incr.rs rename to tests/ui/numbers-arithmetic/u8-incr.rs diff --git a/src/test/ui/numbers-arithmetic/uint.rs b/tests/ui/numbers-arithmetic/uint.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/uint.rs rename to tests/ui/numbers-arithmetic/uint.rs diff --git a/src/test/ui/numbers-arithmetic/unary-minus-suffix-inference.rs b/tests/ui/numbers-arithmetic/unary-minus-suffix-inference.rs similarity index 100% rename from src/test/ui/numbers-arithmetic/unary-minus-suffix-inference.rs rename to tests/ui/numbers-arithmetic/unary-minus-suffix-inference.rs diff --git a/src/test/ui/numeric/const-scope.rs b/tests/ui/numeric/const-scope.rs similarity index 100% rename from src/test/ui/numeric/const-scope.rs rename to tests/ui/numeric/const-scope.rs diff --git a/src/test/ui/numeric/const-scope.stderr b/tests/ui/numeric/const-scope.stderr similarity index 100% rename from src/test/ui/numeric/const-scope.stderr rename to tests/ui/numeric/const-scope.stderr diff --git a/src/test/ui/numeric/integer-literal-suffix-inference.rs b/tests/ui/numeric/integer-literal-suffix-inference.rs similarity index 100% rename from src/test/ui/numeric/integer-literal-suffix-inference.rs rename to tests/ui/numeric/integer-literal-suffix-inference.rs diff --git a/src/test/ui/numeric/integer-literal-suffix-inference.stderr b/tests/ui/numeric/integer-literal-suffix-inference.stderr similarity index 100% rename from src/test/ui/numeric/integer-literal-suffix-inference.stderr rename to tests/ui/numeric/integer-literal-suffix-inference.stderr diff --git a/src/test/ui/numeric/len.rs b/tests/ui/numeric/len.rs similarity index 100% rename from src/test/ui/numeric/len.rs rename to tests/ui/numeric/len.rs diff --git a/src/test/ui/numeric/len.stderr b/tests/ui/numeric/len.stderr similarity index 100% rename from src/test/ui/numeric/len.stderr rename to tests/ui/numeric/len.stderr diff --git a/src/test/ui/numeric/numeric-cast-2.rs b/tests/ui/numeric/numeric-cast-2.rs similarity index 100% rename from src/test/ui/numeric/numeric-cast-2.rs rename to tests/ui/numeric/numeric-cast-2.rs diff --git a/src/test/ui/numeric/numeric-cast-2.stderr b/tests/ui/numeric/numeric-cast-2.stderr similarity index 100% rename from src/test/ui/numeric/numeric-cast-2.stderr rename to tests/ui/numeric/numeric-cast-2.stderr diff --git a/src/test/ui/numeric/numeric-cast-binop.fixed b/tests/ui/numeric/numeric-cast-binop.fixed similarity index 100% rename from src/test/ui/numeric/numeric-cast-binop.fixed rename to tests/ui/numeric/numeric-cast-binop.fixed diff --git a/src/test/ui/numeric/numeric-cast-binop.rs b/tests/ui/numeric/numeric-cast-binop.rs similarity index 100% rename from src/test/ui/numeric/numeric-cast-binop.rs rename to tests/ui/numeric/numeric-cast-binop.rs diff --git a/src/test/ui/numeric/numeric-cast-binop.stderr b/tests/ui/numeric/numeric-cast-binop.stderr similarity index 100% rename from src/test/ui/numeric/numeric-cast-binop.stderr rename to tests/ui/numeric/numeric-cast-binop.stderr diff --git a/src/test/ui/numeric/numeric-cast-no-fix.rs b/tests/ui/numeric/numeric-cast-no-fix.rs similarity index 100% rename from src/test/ui/numeric/numeric-cast-no-fix.rs rename to tests/ui/numeric/numeric-cast-no-fix.rs diff --git a/src/test/ui/numeric/numeric-cast-no-fix.stderr b/tests/ui/numeric/numeric-cast-no-fix.stderr similarity index 100% rename from src/test/ui/numeric/numeric-cast-no-fix.stderr rename to tests/ui/numeric/numeric-cast-no-fix.stderr diff --git a/src/test/ui/numeric/numeric-cast-without-suggestion.rs b/tests/ui/numeric/numeric-cast-without-suggestion.rs similarity index 100% rename from src/test/ui/numeric/numeric-cast-without-suggestion.rs rename to tests/ui/numeric/numeric-cast-without-suggestion.rs diff --git a/src/test/ui/numeric/numeric-cast-without-suggestion.stderr b/tests/ui/numeric/numeric-cast-without-suggestion.stderr similarity index 100% rename from src/test/ui/numeric/numeric-cast-without-suggestion.stderr rename to tests/ui/numeric/numeric-cast-without-suggestion.stderr diff --git a/src/test/ui/numeric/numeric-cast.fixed b/tests/ui/numeric/numeric-cast.fixed similarity index 100% rename from src/test/ui/numeric/numeric-cast.fixed rename to tests/ui/numeric/numeric-cast.fixed diff --git a/src/test/ui/numeric/numeric-cast.rs b/tests/ui/numeric/numeric-cast.rs similarity index 100% rename from src/test/ui/numeric/numeric-cast.rs rename to tests/ui/numeric/numeric-cast.rs diff --git a/src/test/ui/numeric/numeric-cast.stderr b/tests/ui/numeric/numeric-cast.stderr similarity index 100% rename from src/test/ui/numeric/numeric-cast.stderr rename to tests/ui/numeric/numeric-cast.stderr diff --git a/src/test/ui/numeric/numeric-fields.rs b/tests/ui/numeric/numeric-fields.rs similarity index 100% rename from src/test/ui/numeric/numeric-fields.rs rename to tests/ui/numeric/numeric-fields.rs diff --git a/src/test/ui/numeric/numeric-fields.stderr b/tests/ui/numeric/numeric-fields.stderr similarity index 100% rename from src/test/ui/numeric/numeric-fields.stderr rename to tests/ui/numeric/numeric-fields.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i32.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i32.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i32.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i64.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i64.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-i64.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-isize.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-isize.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-isize.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u32.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u32.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u32.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u64.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u64.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-u64.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix-usize.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix-usize.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix-usize.stderr diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix.fixed b/tests/ui/numeric/numeric-suffix/numeric-suffix.fixed similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix.fixed rename to tests/ui/numeric/numeric-suffix/numeric-suffix.fixed diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix.rs b/tests/ui/numeric/numeric-suffix/numeric-suffix.rs similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix.rs rename to tests/ui/numeric/numeric-suffix/numeric-suffix.rs diff --git a/src/test/ui/numeric/numeric-suffix/numeric-suffix.stderr b/tests/ui/numeric/numeric-suffix/numeric-suffix.stderr similarity index 100% rename from src/test/ui/numeric/numeric-suffix/numeric-suffix.stderr rename to tests/ui/numeric/numeric-suffix/numeric-suffix.stderr diff --git a/src/test/ui/numeric/uppercase-base-prefix-invalid-no-fix.rs b/tests/ui/numeric/uppercase-base-prefix-invalid-no-fix.rs similarity index 100% rename from src/test/ui/numeric/uppercase-base-prefix-invalid-no-fix.rs rename to tests/ui/numeric/uppercase-base-prefix-invalid-no-fix.rs diff --git a/src/test/ui/numeric/uppercase-base-prefix-invalid-no-fix.stderr b/tests/ui/numeric/uppercase-base-prefix-invalid-no-fix.stderr similarity index 100% rename from src/test/ui/numeric/uppercase-base-prefix-invalid-no-fix.stderr rename to tests/ui/numeric/uppercase-base-prefix-invalid-no-fix.stderr diff --git a/src/test/ui/numeric/uppercase-base-prefix.fixed b/tests/ui/numeric/uppercase-base-prefix.fixed similarity index 100% rename from src/test/ui/numeric/uppercase-base-prefix.fixed rename to tests/ui/numeric/uppercase-base-prefix.fixed diff --git a/src/test/ui/numeric/uppercase-base-prefix.rs b/tests/ui/numeric/uppercase-base-prefix.rs similarity index 100% rename from src/test/ui/numeric/uppercase-base-prefix.rs rename to tests/ui/numeric/uppercase-base-prefix.rs diff --git a/src/test/ui/numeric/uppercase-base-prefix.stderr b/tests/ui/numeric/uppercase-base-prefix.stderr similarity index 100% rename from src/test/ui/numeric/uppercase-base-prefix.stderr rename to tests/ui/numeric/uppercase-base-prefix.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-ambiguous.rs b/tests/ui/object-lifetime/object-lifetime-default-ambiguous.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-ambiguous.rs rename to tests/ui/object-lifetime/object-lifetime-default-ambiguous.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-ambiguous.stderr b/tests/ui/object-lifetime/object-lifetime-default-ambiguous.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-ambiguous.stderr rename to tests/ui/object-lifetime/object-lifetime-default-ambiguous.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-default-to-static.rs b/tests/ui/object-lifetime/object-lifetime-default-default-to-static.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-default-to-static.rs rename to tests/ui/object-lifetime/object-lifetime-default-default-to-static.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs b/tests/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs rename to tests/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-elision.rs b/tests/ui/object-lifetime/object-lifetime-default-elision.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-elision.rs rename to tests/ui/object-lifetime/object-lifetime-default-elision.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-elision.stderr b/tests/ui/object-lifetime/object-lifetime-default-elision.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-elision.stderr rename to tests/ui/object-lifetime/object-lifetime-default-elision.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-box-error.rs b/tests/ui/object-lifetime/object-lifetime-default-from-box-error.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-box-error.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-box-error.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-box-error.stderr b/tests/ui/object-lifetime/object-lifetime-default-from-box-error.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-box-error.stderr rename to tests/ui/object-lifetime/object-lifetime-default-from-box-error.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-ref-struct.rs b/tests/ui/object-lifetime/object-lifetime-default-from-ref-struct.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-ref-struct.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-ref-struct.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.stderr b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.stderr rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-box.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-box.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-mut.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-mut.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-mut.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-mut.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.stderr b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.stderr rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr-struct.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr.rs b/tests/ui/object-lifetime/object-lifetime-default-from-rptr.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-from-rptr.rs rename to tests/ui/object-lifetime/object-lifetime-default-from-rptr.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-inferred.rs b/tests/ui/object-lifetime/object-lifetime-default-inferred.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-inferred.rs rename to tests/ui/object-lifetime/object-lifetime-default-inferred.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-mybox.rs b/tests/ui/object-lifetime/object-lifetime-default-mybox.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-mybox.rs rename to tests/ui/object-lifetime/object-lifetime-default-mybox.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default-mybox.stderr b/tests/ui/object-lifetime/object-lifetime-default-mybox.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default-mybox.stderr rename to tests/ui/object-lifetime/object-lifetime-default-mybox.stderr diff --git a/src/test/ui/object-lifetime/object-lifetime-default.rs b/tests/ui/object-lifetime/object-lifetime-default.rs similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default.rs rename to tests/ui/object-lifetime/object-lifetime-default.rs diff --git a/src/test/ui/object-lifetime/object-lifetime-default.stderr b/tests/ui/object-lifetime/object-lifetime-default.stderr similarity index 100% rename from src/test/ui/object-lifetime/object-lifetime-default.stderr rename to tests/ui/object-lifetime/object-lifetime-default.stderr diff --git a/src/test/ui/object-pointer-types.rs b/tests/ui/object-pointer-types.rs similarity index 100% rename from src/test/ui/object-pointer-types.rs rename to tests/ui/object-pointer-types.rs diff --git a/src/test/ui/object-pointer-types.stderr b/tests/ui/object-pointer-types.stderr similarity index 100% rename from src/test/ui/object-pointer-types.stderr rename to tests/ui/object-pointer-types.stderr diff --git a/src/test/ui/object-safety/issue-102762.rs b/tests/ui/object-safety/issue-102762.rs similarity index 100% rename from src/test/ui/object-safety/issue-102762.rs rename to tests/ui/object-safety/issue-102762.rs diff --git a/src/test/ui/object-safety/issue-102762.stderr b/tests/ui/object-safety/issue-102762.stderr similarity index 100% rename from src/test/ui/object-safety/issue-102762.stderr rename to tests/ui/object-safety/issue-102762.stderr diff --git a/src/test/ui/object-safety/issue-102933.rs b/tests/ui/object-safety/issue-102933.rs similarity index 100% rename from src/test/ui/object-safety/issue-102933.rs rename to tests/ui/object-safety/issue-102933.rs diff --git a/src/test/ui/object-safety/issue-106247.rs b/tests/ui/object-safety/issue-106247.rs similarity index 100% rename from src/test/ui/object-safety/issue-106247.rs rename to tests/ui/object-safety/issue-106247.rs diff --git a/src/test/ui/object-safety/issue-19538.rs b/tests/ui/object-safety/issue-19538.rs similarity index 100% rename from src/test/ui/object-safety/issue-19538.rs rename to tests/ui/object-safety/issue-19538.rs diff --git a/src/test/ui/object-safety/issue-19538.stderr b/tests/ui/object-safety/issue-19538.stderr similarity index 100% rename from src/test/ui/object-safety/issue-19538.stderr rename to tests/ui/object-safety/issue-19538.stderr diff --git a/src/test/ui/object-safety/object-safety-associated-consts.curr.stderr b/tests/ui/object-safety/object-safety-associated-consts.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-associated-consts.curr.stderr rename to tests/ui/object-safety/object-safety-associated-consts.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-associated-consts.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-associated-consts.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-associated-consts.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-associated-consts.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-associated-consts.rs b/tests/ui/object-safety/object-safety-associated-consts.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-associated-consts.rs rename to tests/ui/object-safety/object-safety-associated-consts.rs diff --git a/src/test/ui/object-safety/object-safety-bounds.rs b/tests/ui/object-safety/object-safety-bounds.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-bounds.rs rename to tests/ui/object-safety/object-safety-bounds.rs diff --git a/src/test/ui/object-safety/object-safety-bounds.stderr b/tests/ui/object-safety/object-safety-bounds.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-bounds.stderr rename to tests/ui/object-safety/object-safety-bounds.stderr diff --git a/src/test/ui/object-safety/object-safety-by-value-self-use.rs b/tests/ui/object-safety/object-safety-by-value-self-use.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-by-value-self-use.rs rename to tests/ui/object-safety/object-safety-by-value-self-use.rs diff --git a/src/test/ui/object-safety/object-safety-by-value-self-use.stderr b/tests/ui/object-safety/object-safety-by-value-self-use.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-by-value-self-use.stderr rename to tests/ui/object-safety/object-safety-by-value-self-use.stderr diff --git a/src/test/ui/object-safety/object-safety-by-value-self.rs b/tests/ui/object-safety/object-safety-by-value-self.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-by-value-self.rs rename to tests/ui/object-safety/object-safety-by-value-self.rs diff --git a/src/test/ui/object-safety/object-safety-generics.curr.stderr b/tests/ui/object-safety/object-safety-generics.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-generics.curr.stderr rename to tests/ui/object-safety/object-safety-generics.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-generics.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-generics.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-generics.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-generics.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-generics.rs b/tests/ui/object-safety/object-safety-generics.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-generics.rs rename to tests/ui/object-safety/object-safety-generics.rs diff --git a/src/test/ui/object-safety/object-safety-issue-22040.rs b/tests/ui/object-safety/object-safety-issue-22040.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-issue-22040.rs rename to tests/ui/object-safety/object-safety-issue-22040.rs diff --git a/src/test/ui/object-safety/object-safety-issue-22040.stderr b/tests/ui/object-safety/object-safety-issue-22040.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-issue-22040.stderr rename to tests/ui/object-safety/object-safety-issue-22040.stderr diff --git a/src/test/ui/object-safety/object-safety-mentions-Self.curr.stderr b/tests/ui/object-safety/object-safety-mentions-Self.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-mentions-Self.curr.stderr rename to tests/ui/object-safety/object-safety-mentions-Self.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-mentions-Self.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-mentions-Self.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-mentions-Self.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-mentions-Self.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-mentions-Self.rs b/tests/ui/object-safety/object-safety-mentions-Self.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-mentions-Self.rs rename to tests/ui/object-safety/object-safety-mentions-Self.rs diff --git a/src/test/ui/object-safety/object-safety-no-static.curr.stderr b/tests/ui/object-safety/object-safety-no-static.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-no-static.curr.stderr rename to tests/ui/object-safety/object-safety-no-static.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-no-static.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-no-static.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-no-static.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-no-static.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-no-static.rs b/tests/ui/object-safety/object-safety-no-static.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-no-static.rs rename to tests/ui/object-safety/object-safety-no-static.rs diff --git a/src/test/ui/object-safety/object-safety-phantom-fn.rs b/tests/ui/object-safety/object-safety-phantom-fn.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-phantom-fn.rs rename to tests/ui/object-safety/object-safety-phantom-fn.rs diff --git a/src/test/ui/object-safety/object-safety-sized-2.curr.stderr b/tests/ui/object-safety/object-safety-sized-2.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-sized-2.curr.stderr rename to tests/ui/object-safety/object-safety-sized-2.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-sized-2.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-sized-2.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-sized-2.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-sized-2.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-sized-2.rs b/tests/ui/object-safety/object-safety-sized-2.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-sized-2.rs rename to tests/ui/object-safety/object-safety-sized-2.rs diff --git a/src/test/ui/object-safety/object-safety-sized.curr.stderr b/tests/ui/object-safety/object-safety-sized.curr.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-sized.curr.stderr rename to tests/ui/object-safety/object-safety-sized.curr.stderr diff --git a/src/test/ui/object-safety/object-safety-sized.object_safe_for_dispatch.stderr b/tests/ui/object-safety/object-safety-sized.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-sized.object_safe_for_dispatch.stderr rename to tests/ui/object-safety/object-safety-sized.object_safe_for_dispatch.stderr diff --git a/src/test/ui/object-safety/object-safety-sized.rs b/tests/ui/object-safety/object-safety-sized.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-sized.rs rename to tests/ui/object-safety/object-safety-sized.rs diff --git a/src/test/ui/object-safety/object-safety-supertrait-mentions-GAT.rs b/tests/ui/object-safety/object-safety-supertrait-mentions-GAT.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-supertrait-mentions-GAT.rs rename to tests/ui/object-safety/object-safety-supertrait-mentions-GAT.rs diff --git a/src/test/ui/object-safety/object-safety-supertrait-mentions-GAT.stderr b/tests/ui/object-safety/object-safety-supertrait-mentions-GAT.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-supertrait-mentions-GAT.stderr rename to tests/ui/object-safety/object-safety-supertrait-mentions-GAT.stderr diff --git a/src/test/ui/object-safety/object-safety-supertrait-mentions-Self.rs b/tests/ui/object-safety/object-safety-supertrait-mentions-Self.rs similarity index 100% rename from src/test/ui/object-safety/object-safety-supertrait-mentions-Self.rs rename to tests/ui/object-safety/object-safety-supertrait-mentions-Self.rs diff --git a/src/test/ui/object-safety/object-safety-supertrait-mentions-Self.stderr b/tests/ui/object-safety/object-safety-supertrait-mentions-Self.stderr similarity index 100% rename from src/test/ui/object-safety/object-safety-supertrait-mentions-Self.stderr rename to tests/ui/object-safety/object-safety-supertrait-mentions-Self.stderr diff --git a/src/test/ui/objects-coerce-freeze-borrored.rs b/tests/ui/objects-coerce-freeze-borrored.rs similarity index 100% rename from src/test/ui/objects-coerce-freeze-borrored.rs rename to tests/ui/objects-coerce-freeze-borrored.rs diff --git a/src/test/ui/obsolete-in-place/bad.rs b/tests/ui/obsolete-in-place/bad.rs similarity index 100% rename from src/test/ui/obsolete-in-place/bad.rs rename to tests/ui/obsolete-in-place/bad.rs diff --git a/src/test/ui/obsolete-in-place/bad.stderr b/tests/ui/obsolete-in-place/bad.stderr similarity index 100% rename from src/test/ui/obsolete-in-place/bad.stderr rename to tests/ui/obsolete-in-place/bad.stderr diff --git a/src/test/ui/occurs-check-2.rs b/tests/ui/occurs-check-2.rs similarity index 100% rename from src/test/ui/occurs-check-2.rs rename to tests/ui/occurs-check-2.rs diff --git a/src/test/ui/occurs-check-2.stderr b/tests/ui/occurs-check-2.stderr similarity index 100% rename from src/test/ui/occurs-check-2.stderr rename to tests/ui/occurs-check-2.stderr diff --git a/src/test/ui/occurs-check-3.rs b/tests/ui/occurs-check-3.rs similarity index 100% rename from src/test/ui/occurs-check-3.rs rename to tests/ui/occurs-check-3.rs diff --git a/src/test/ui/occurs-check-3.stderr b/tests/ui/occurs-check-3.stderr similarity index 100% rename from src/test/ui/occurs-check-3.stderr rename to tests/ui/occurs-check-3.stderr diff --git a/src/test/ui/occurs-check.rs b/tests/ui/occurs-check.rs similarity index 100% rename from src/test/ui/occurs-check.rs rename to tests/ui/occurs-check.rs diff --git a/src/test/ui/occurs-check.stderr b/tests/ui/occurs-check.stderr similarity index 100% rename from src/test/ui/occurs-check.stderr rename to tests/ui/occurs-check.stderr diff --git a/src/test/ui/on-unimplemented/auxiliary/no_debug.rs b/tests/ui/on-unimplemented/auxiliary/no_debug.rs similarity index 100% rename from src/test/ui/on-unimplemented/auxiliary/no_debug.rs rename to tests/ui/on-unimplemented/auxiliary/no_debug.rs diff --git a/src/test/ui/on-unimplemented/bad-annotation.rs b/tests/ui/on-unimplemented/bad-annotation.rs similarity index 100% rename from src/test/ui/on-unimplemented/bad-annotation.rs rename to tests/ui/on-unimplemented/bad-annotation.rs diff --git a/src/test/ui/on-unimplemented/bad-annotation.stderr b/tests/ui/on-unimplemented/bad-annotation.stderr similarity index 100% rename from src/test/ui/on-unimplemented/bad-annotation.stderr rename to tests/ui/on-unimplemented/bad-annotation.stderr diff --git a/src/test/ui/on-unimplemented/expected-comma-found-token.rs b/tests/ui/on-unimplemented/expected-comma-found-token.rs similarity index 100% rename from src/test/ui/on-unimplemented/expected-comma-found-token.rs rename to tests/ui/on-unimplemented/expected-comma-found-token.rs diff --git a/src/test/ui/on-unimplemented/expected-comma-found-token.stderr b/tests/ui/on-unimplemented/expected-comma-found-token.stderr similarity index 100% rename from src/test/ui/on-unimplemented/expected-comma-found-token.stderr rename to tests/ui/on-unimplemented/expected-comma-found-token.stderr diff --git a/src/test/ui/on-unimplemented/feature-gate-on-unimplemented.rs b/tests/ui/on-unimplemented/feature-gate-on-unimplemented.rs similarity index 100% rename from src/test/ui/on-unimplemented/feature-gate-on-unimplemented.rs rename to tests/ui/on-unimplemented/feature-gate-on-unimplemented.rs diff --git a/src/test/ui/on-unimplemented/feature-gate-on-unimplemented.stderr b/tests/ui/on-unimplemented/feature-gate-on-unimplemented.stderr similarity index 100% rename from src/test/ui/on-unimplemented/feature-gate-on-unimplemented.stderr rename to tests/ui/on-unimplemented/feature-gate-on-unimplemented.stderr diff --git a/src/test/ui/on-unimplemented/impl-substs.rs b/tests/ui/on-unimplemented/impl-substs.rs similarity index 100% rename from src/test/ui/on-unimplemented/impl-substs.rs rename to tests/ui/on-unimplemented/impl-substs.rs diff --git a/src/test/ui/on-unimplemented/impl-substs.stderr b/tests/ui/on-unimplemented/impl-substs.stderr similarity index 100% rename from src/test/ui/on-unimplemented/impl-substs.stderr rename to tests/ui/on-unimplemented/impl-substs.stderr diff --git a/src/test/ui/on-unimplemented/issue-104140.rs b/tests/ui/on-unimplemented/issue-104140.rs similarity index 100% rename from src/test/ui/on-unimplemented/issue-104140.rs rename to tests/ui/on-unimplemented/issue-104140.rs diff --git a/src/test/ui/on-unimplemented/issue-104140.stderr b/tests/ui/on-unimplemented/issue-104140.stderr similarity index 100% rename from src/test/ui/on-unimplemented/issue-104140.stderr rename to tests/ui/on-unimplemented/issue-104140.stderr diff --git a/src/test/ui/on-unimplemented/multiple-impls.rs b/tests/ui/on-unimplemented/multiple-impls.rs similarity index 100% rename from src/test/ui/on-unimplemented/multiple-impls.rs rename to tests/ui/on-unimplemented/multiple-impls.rs diff --git a/src/test/ui/on-unimplemented/multiple-impls.stderr b/tests/ui/on-unimplemented/multiple-impls.stderr similarity index 100% rename from src/test/ui/on-unimplemented/multiple-impls.stderr rename to tests/ui/on-unimplemented/multiple-impls.stderr diff --git a/src/test/ui/on-unimplemented/no-debug.rs b/tests/ui/on-unimplemented/no-debug.rs similarity index 100% rename from src/test/ui/on-unimplemented/no-debug.rs rename to tests/ui/on-unimplemented/no-debug.rs diff --git a/src/test/ui/on-unimplemented/no-debug.stderr b/tests/ui/on-unimplemented/no-debug.stderr similarity index 100% rename from src/test/ui/on-unimplemented/no-debug.stderr rename to tests/ui/on-unimplemented/no-debug.stderr diff --git a/src/test/ui/on-unimplemented/on-impl.rs b/tests/ui/on-unimplemented/on-impl.rs similarity index 100% rename from src/test/ui/on-unimplemented/on-impl.rs rename to tests/ui/on-unimplemented/on-impl.rs diff --git a/src/test/ui/on-unimplemented/on-impl.stderr b/tests/ui/on-unimplemented/on-impl.stderr similarity index 100% rename from src/test/ui/on-unimplemented/on-impl.stderr rename to tests/ui/on-unimplemented/on-impl.stderr diff --git a/src/test/ui/on-unimplemented/on-trait.rs b/tests/ui/on-unimplemented/on-trait.rs similarity index 100% rename from src/test/ui/on-unimplemented/on-trait.rs rename to tests/ui/on-unimplemented/on-trait.rs diff --git a/src/test/ui/on-unimplemented/on-trait.stderr b/tests/ui/on-unimplemented/on-trait.stderr similarity index 100% rename from src/test/ui/on-unimplemented/on-trait.stderr rename to tests/ui/on-unimplemented/on-trait.stderr diff --git a/src/test/ui/on-unimplemented/parent-label.rs b/tests/ui/on-unimplemented/parent-label.rs similarity index 100% rename from src/test/ui/on-unimplemented/parent-label.rs rename to tests/ui/on-unimplemented/parent-label.rs diff --git a/src/test/ui/on-unimplemented/parent-label.stderr b/tests/ui/on-unimplemented/parent-label.stderr similarity index 100% rename from src/test/ui/on-unimplemented/parent-label.stderr rename to tests/ui/on-unimplemented/parent-label.stderr diff --git a/src/test/ui/on-unimplemented/slice-index.rs b/tests/ui/on-unimplemented/slice-index.rs similarity index 100% rename from src/test/ui/on-unimplemented/slice-index.rs rename to tests/ui/on-unimplemented/slice-index.rs diff --git a/src/test/ui/on-unimplemented/slice-index.stderr b/tests/ui/on-unimplemented/slice-index.stderr similarity index 100% rename from src/test/ui/on-unimplemented/slice-index.stderr rename to tests/ui/on-unimplemented/slice-index.stderr diff --git a/src/test/ui/on-unimplemented/sum.rs b/tests/ui/on-unimplemented/sum.rs similarity index 100% rename from src/test/ui/on-unimplemented/sum.rs rename to tests/ui/on-unimplemented/sum.rs diff --git a/src/test/ui/on-unimplemented/sum.stderr b/tests/ui/on-unimplemented/sum.stderr similarity index 100% rename from src/test/ui/on-unimplemented/sum.stderr rename to tests/ui/on-unimplemented/sum.stderr diff --git a/src/test/ui/once-cant-call-twice-on-heap.rs b/tests/ui/once-cant-call-twice-on-heap.rs similarity index 100% rename from src/test/ui/once-cant-call-twice-on-heap.rs rename to tests/ui/once-cant-call-twice-on-heap.rs diff --git a/src/test/ui/once-cant-call-twice-on-heap.stderr b/tests/ui/once-cant-call-twice-on-heap.stderr similarity index 100% rename from src/test/ui/once-cant-call-twice-on-heap.stderr rename to tests/ui/once-cant-call-twice-on-heap.stderr diff --git a/src/test/ui/oom_unwind.rs b/tests/ui/oom_unwind.rs similarity index 100% rename from src/test/ui/oom_unwind.rs rename to tests/ui/oom_unwind.rs diff --git a/src/test/ui/op-assign-builtins-by-ref.rs b/tests/ui/op-assign-builtins-by-ref.rs similarity index 100% rename from src/test/ui/op-assign-builtins-by-ref.rs rename to tests/ui/op-assign-builtins-by-ref.rs diff --git a/src/test/ui/opeq.rs b/tests/ui/opeq.rs similarity index 100% rename from src/test/ui/opeq.rs rename to tests/ui/opeq.rs diff --git a/src/test/ui/operator-recovery/less-than-greater-than.rs b/tests/ui/operator-recovery/less-than-greater-than.rs similarity index 100% rename from src/test/ui/operator-recovery/less-than-greater-than.rs rename to tests/ui/operator-recovery/less-than-greater-than.rs diff --git a/src/test/ui/operator-recovery/less-than-greater-than.stderr b/tests/ui/operator-recovery/less-than-greater-than.stderr similarity index 100% rename from src/test/ui/operator-recovery/less-than-greater-than.stderr rename to tests/ui/operator-recovery/less-than-greater-than.stderr diff --git a/src/test/ui/operator-recovery/spaceship.rs b/tests/ui/operator-recovery/spaceship.rs similarity index 100% rename from src/test/ui/operator-recovery/spaceship.rs rename to tests/ui/operator-recovery/spaceship.rs diff --git a/src/test/ui/operator-recovery/spaceship.stderr b/tests/ui/operator-recovery/spaceship.stderr similarity index 100% rename from src/test/ui/operator-recovery/spaceship.stderr rename to tests/ui/operator-recovery/spaceship.stderr diff --git a/src/test/ui/opt-in-copy.rs b/tests/ui/opt-in-copy.rs similarity index 100% rename from src/test/ui/opt-in-copy.rs rename to tests/ui/opt-in-copy.rs diff --git a/src/test/ui/opt-in-copy.stderr b/tests/ui/opt-in-copy.stderr similarity index 100% rename from src/test/ui/opt-in-copy.stderr rename to tests/ui/opt-in-copy.stderr diff --git a/src/test/ui/optimization-fuel-0.rs b/tests/ui/optimization-fuel-0.rs similarity index 100% rename from src/test/ui/optimization-fuel-0.rs rename to tests/ui/optimization-fuel-0.rs diff --git a/src/test/ui/optimization-fuel-0.stderr b/tests/ui/optimization-fuel-0.stderr similarity index 100% rename from src/test/ui/optimization-fuel-0.stderr rename to tests/ui/optimization-fuel-0.stderr diff --git a/src/test/ui/optimization-fuel-1.rs b/tests/ui/optimization-fuel-1.rs similarity index 100% rename from src/test/ui/optimization-fuel-1.rs rename to tests/ui/optimization-fuel-1.rs diff --git a/src/test/ui/optimization-fuel-1.stderr b/tests/ui/optimization-fuel-1.stderr similarity index 100% rename from src/test/ui/optimization-fuel-1.stderr rename to tests/ui/optimization-fuel-1.stderr diff --git a/src/test/ui/optimization-remark.rs b/tests/ui/optimization-remark.rs similarity index 100% rename from src/test/ui/optimization-remark.rs rename to tests/ui/optimization-remark.rs diff --git a/src/test/ui/or-patterns/already-bound-name.rs b/tests/ui/or-patterns/already-bound-name.rs similarity index 100% rename from src/test/ui/or-patterns/already-bound-name.rs rename to tests/ui/or-patterns/already-bound-name.rs diff --git a/src/test/ui/or-patterns/already-bound-name.stderr b/tests/ui/or-patterns/already-bound-name.stderr similarity index 100% rename from src/test/ui/or-patterns/already-bound-name.stderr rename to tests/ui/or-patterns/already-bound-name.stderr diff --git a/src/test/ui/or-patterns/basic-switch.rs b/tests/ui/or-patterns/basic-switch.rs similarity index 100% rename from src/test/ui/or-patterns/basic-switch.rs rename to tests/ui/or-patterns/basic-switch.rs diff --git a/src/test/ui/or-patterns/basic-switchint.rs b/tests/ui/or-patterns/basic-switchint.rs similarity index 100% rename from src/test/ui/or-patterns/basic-switchint.rs rename to tests/ui/or-patterns/basic-switchint.rs diff --git a/src/test/ui/or-patterns/bindings-runpass-1.rs b/tests/ui/or-patterns/bindings-runpass-1.rs similarity index 100% rename from src/test/ui/or-patterns/bindings-runpass-1.rs rename to tests/ui/or-patterns/bindings-runpass-1.rs diff --git a/src/test/ui/or-patterns/bindings-runpass-2.rs b/tests/ui/or-patterns/bindings-runpass-2.rs similarity index 100% rename from src/test/ui/or-patterns/bindings-runpass-2.rs rename to tests/ui/or-patterns/bindings-runpass-2.rs diff --git a/src/test/ui/or-patterns/box-patterns.rs b/tests/ui/or-patterns/box-patterns.rs similarity index 100% rename from src/test/ui/or-patterns/box-patterns.rs rename to tests/ui/or-patterns/box-patterns.rs diff --git a/src/test/ui/or-patterns/consistent-bindings.rs b/tests/ui/or-patterns/consistent-bindings.rs similarity index 100% rename from src/test/ui/or-patterns/consistent-bindings.rs rename to tests/ui/or-patterns/consistent-bindings.rs diff --git a/src/test/ui/or-patterns/const-fn.rs b/tests/ui/or-patterns/const-fn.rs similarity index 100% rename from src/test/ui/or-patterns/const-fn.rs rename to tests/ui/or-patterns/const-fn.rs diff --git a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs b/tests/ui/or-patterns/exhaustiveness-non-exhaustive.rs similarity index 100% rename from src/test/ui/or-patterns/exhaustiveness-non-exhaustive.rs rename to tests/ui/or-patterns/exhaustiveness-non-exhaustive.rs diff --git a/src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr b/tests/ui/or-patterns/exhaustiveness-non-exhaustive.stderr similarity index 100% rename from src/test/ui/or-patterns/exhaustiveness-non-exhaustive.stderr rename to tests/ui/or-patterns/exhaustiveness-non-exhaustive.stderr diff --git a/src/test/ui/or-patterns/exhaustiveness-pass.rs b/tests/ui/or-patterns/exhaustiveness-pass.rs similarity index 100% rename from src/test/ui/or-patterns/exhaustiveness-pass.rs rename to tests/ui/or-patterns/exhaustiveness-pass.rs diff --git a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs b/tests/ui/or-patterns/exhaustiveness-unreachable-pattern.rs similarity index 100% rename from src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs rename to tests/ui/or-patterns/exhaustiveness-unreachable-pattern.rs diff --git a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr b/tests/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr similarity index 100% rename from src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr rename to tests/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr diff --git a/src/test/ui/or-patterns/fn-param-wrap-parens.fixed b/tests/ui/or-patterns/fn-param-wrap-parens.fixed similarity index 100% rename from src/test/ui/or-patterns/fn-param-wrap-parens.fixed rename to tests/ui/or-patterns/fn-param-wrap-parens.fixed diff --git a/src/test/ui/or-patterns/fn-param-wrap-parens.rs b/tests/ui/or-patterns/fn-param-wrap-parens.rs similarity index 100% rename from src/test/ui/or-patterns/fn-param-wrap-parens.rs rename to tests/ui/or-patterns/fn-param-wrap-parens.rs diff --git a/src/test/ui/or-patterns/fn-param-wrap-parens.stderr b/tests/ui/or-patterns/fn-param-wrap-parens.stderr similarity index 100% rename from src/test/ui/or-patterns/fn-param-wrap-parens.stderr rename to tests/ui/or-patterns/fn-param-wrap-parens.stderr diff --git a/src/test/ui/or-patterns/for-loop.rs b/tests/ui/or-patterns/for-loop.rs similarity index 100% rename from src/test/ui/or-patterns/for-loop.rs rename to tests/ui/or-patterns/for-loop.rs diff --git a/src/test/ui/or-patterns/if-let-while-let.rs b/tests/ui/or-patterns/if-let-while-let.rs similarity index 100% rename from src/test/ui/or-patterns/if-let-while-let.rs rename to tests/ui/or-patterns/if-let-while-let.rs diff --git a/src/test/ui/or-patterns/inconsistent-modes.rs b/tests/ui/or-patterns/inconsistent-modes.rs similarity index 100% rename from src/test/ui/or-patterns/inconsistent-modes.rs rename to tests/ui/or-patterns/inconsistent-modes.rs diff --git a/src/test/ui/or-patterns/inconsistent-modes.stderr b/tests/ui/or-patterns/inconsistent-modes.stderr similarity index 100% rename from src/test/ui/or-patterns/inconsistent-modes.stderr rename to tests/ui/or-patterns/inconsistent-modes.stderr diff --git a/src/test/ui/or-patterns/inner-or-pat.or3.stderr b/tests/ui/or-patterns/inner-or-pat.or3.stderr similarity index 100% rename from src/test/ui/or-patterns/inner-or-pat.or3.stderr rename to tests/ui/or-patterns/inner-or-pat.or3.stderr diff --git a/src/test/ui/or-patterns/inner-or-pat.or4.stderr b/tests/ui/or-patterns/inner-or-pat.or4.stderr similarity index 100% rename from src/test/ui/or-patterns/inner-or-pat.or4.stderr rename to tests/ui/or-patterns/inner-or-pat.or4.stderr diff --git a/src/test/ui/or-patterns/inner-or-pat.rs b/tests/ui/or-patterns/inner-or-pat.rs similarity index 100% rename from src/test/ui/or-patterns/inner-or-pat.rs rename to tests/ui/or-patterns/inner-or-pat.rs diff --git a/src/test/ui/or-patterns/issue-64879-trailing-before-guard.rs b/tests/ui/or-patterns/issue-64879-trailing-before-guard.rs similarity index 100% rename from src/test/ui/or-patterns/issue-64879-trailing-before-guard.rs rename to tests/ui/or-patterns/issue-64879-trailing-before-guard.rs diff --git a/src/test/ui/or-patterns/issue-64879-trailing-before-guard.stderr b/tests/ui/or-patterns/issue-64879-trailing-before-guard.stderr similarity index 100% rename from src/test/ui/or-patterns/issue-64879-trailing-before-guard.stderr rename to tests/ui/or-patterns/issue-64879-trailing-before-guard.stderr diff --git a/src/test/ui/or-patterns/issue-67514-irrefutable-param.rs b/tests/ui/or-patterns/issue-67514-irrefutable-param.rs similarity index 100% rename from src/test/ui/or-patterns/issue-67514-irrefutable-param.rs rename to tests/ui/or-patterns/issue-67514-irrefutable-param.rs diff --git a/src/test/ui/or-patterns/issue-68785-irrefutable-param-with-at.rs b/tests/ui/or-patterns/issue-68785-irrefutable-param-with-at.rs similarity index 100% rename from src/test/ui/or-patterns/issue-68785-irrefutable-param-with-at.rs rename to tests/ui/or-patterns/issue-68785-irrefutable-param-with-at.rs diff --git a/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs b/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs similarity index 100% rename from src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs rename to tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs diff --git a/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr b/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr similarity index 100% rename from src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr rename to tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr diff --git a/src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs b/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs similarity index 100% rename from src/test/ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs rename to tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier.rs diff --git a/src/test/ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs b/tests/ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs similarity index 100% rename from src/test/ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs rename to tests/ui/or-patterns/issue-70413-no-unreachable-pat-and-guard.rs diff --git a/src/test/ui/or-patterns/let-pattern.rs b/tests/ui/or-patterns/let-pattern.rs similarity index 100% rename from src/test/ui/or-patterns/let-pattern.rs rename to tests/ui/or-patterns/let-pattern.rs diff --git a/src/test/ui/or-patterns/macro-pat.rs b/tests/ui/or-patterns/macro-pat.rs similarity index 100% rename from src/test/ui/or-patterns/macro-pat.rs rename to tests/ui/or-patterns/macro-pat.rs diff --git a/src/test/ui/or-patterns/mismatched-bindings-async-fn.rs b/tests/ui/or-patterns/mismatched-bindings-async-fn.rs similarity index 100% rename from src/test/ui/or-patterns/mismatched-bindings-async-fn.rs rename to tests/ui/or-patterns/mismatched-bindings-async-fn.rs diff --git a/src/test/ui/or-patterns/mismatched-bindings-async-fn.stderr b/tests/ui/or-patterns/mismatched-bindings-async-fn.stderr similarity index 100% rename from src/test/ui/or-patterns/mismatched-bindings-async-fn.stderr rename to tests/ui/or-patterns/mismatched-bindings-async-fn.stderr diff --git a/src/test/ui/or-patterns/missing-bindings.rs b/tests/ui/or-patterns/missing-bindings.rs similarity index 100% rename from src/test/ui/or-patterns/missing-bindings.rs rename to tests/ui/or-patterns/missing-bindings.rs diff --git a/src/test/ui/or-patterns/missing-bindings.stderr b/tests/ui/or-patterns/missing-bindings.stderr similarity index 100% rename from src/test/ui/or-patterns/missing-bindings.stderr rename to tests/ui/or-patterns/missing-bindings.stderr diff --git a/src/test/ui/or-patterns/mix-with-wild.rs b/tests/ui/or-patterns/mix-with-wild.rs similarity index 100% rename from src/test/ui/or-patterns/mix-with-wild.rs rename to tests/ui/or-patterns/mix-with-wild.rs diff --git a/src/test/ui/or-patterns/multiple-pattern-typo.rs b/tests/ui/or-patterns/multiple-pattern-typo.rs similarity index 100% rename from src/test/ui/or-patterns/multiple-pattern-typo.rs rename to tests/ui/or-patterns/multiple-pattern-typo.rs diff --git a/src/test/ui/or-patterns/multiple-pattern-typo.stderr b/tests/ui/or-patterns/multiple-pattern-typo.stderr similarity index 100% rename from src/test/ui/or-patterns/multiple-pattern-typo.stderr rename to tests/ui/or-patterns/multiple-pattern-typo.stderr diff --git a/src/test/ui/or-patterns/nested-undelimited-precedence.rs b/tests/ui/or-patterns/nested-undelimited-precedence.rs similarity index 100% rename from src/test/ui/or-patterns/nested-undelimited-precedence.rs rename to tests/ui/or-patterns/nested-undelimited-precedence.rs diff --git a/src/test/ui/or-patterns/nested-undelimited-precedence.stderr b/tests/ui/or-patterns/nested-undelimited-precedence.stderr similarity index 100% rename from src/test/ui/or-patterns/nested-undelimited-precedence.stderr rename to tests/ui/or-patterns/nested-undelimited-precedence.stderr diff --git a/src/test/ui/or-patterns/or-patterns-binding-type-mismatch.rs b/tests/ui/or-patterns/or-patterns-binding-type-mismatch.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-binding-type-mismatch.rs rename to tests/ui/or-patterns/or-patterns-binding-type-mismatch.rs diff --git a/src/test/ui/or-patterns/or-patterns-binding-type-mismatch.stderr b/tests/ui/or-patterns/or-patterns-binding-type-mismatch.stderr similarity index 100% rename from src/test/ui/or-patterns/or-patterns-binding-type-mismatch.stderr rename to tests/ui/or-patterns/or-patterns-binding-type-mismatch.stderr diff --git a/src/test/ui/or-patterns/or-patterns-default-binding-modes.rs b/tests/ui/or-patterns/or-patterns-default-binding-modes.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-default-binding-modes.rs rename to tests/ui/or-patterns/or-patterns-default-binding-modes.rs diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-fail-2018.rs b/tests/ui/or-patterns/or-patterns-syntactic-fail-2018.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-fail-2018.rs rename to tests/ui/or-patterns/or-patterns-syntactic-fail-2018.rs diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-fail-2018.stderr b/tests/ui/or-patterns/or-patterns-syntactic-fail-2018.stderr similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-fail-2018.stderr rename to tests/ui/or-patterns/or-patterns-syntactic-fail-2018.stderr diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-fail.rs b/tests/ui/or-patterns/or-patterns-syntactic-fail.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-fail.rs rename to tests/ui/or-patterns/or-patterns-syntactic-fail.rs diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-fail.stderr b/tests/ui/or-patterns/or-patterns-syntactic-fail.stderr similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-fail.stderr rename to tests/ui/or-patterns/or-patterns-syntactic-fail.stderr diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-pass-2021.rs b/tests/ui/or-patterns/or-patterns-syntactic-pass-2021.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-pass-2021.rs rename to tests/ui/or-patterns/or-patterns-syntactic-pass-2021.rs diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-pass.rs b/tests/ui/or-patterns/or-patterns-syntactic-pass.rs similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-pass.rs rename to tests/ui/or-patterns/or-patterns-syntactic-pass.rs diff --git a/src/test/ui/or-patterns/or-patterns-syntactic-pass.stderr b/tests/ui/or-patterns/or-patterns-syntactic-pass.stderr similarity index 100% rename from src/test/ui/or-patterns/or-patterns-syntactic-pass.stderr rename to tests/ui/or-patterns/or-patterns-syntactic-pass.stderr diff --git a/src/test/ui/or-patterns/remove-leading-vert.fixed b/tests/ui/or-patterns/remove-leading-vert.fixed similarity index 100% rename from src/test/ui/or-patterns/remove-leading-vert.fixed rename to tests/ui/or-patterns/remove-leading-vert.fixed diff --git a/src/test/ui/or-patterns/remove-leading-vert.rs b/tests/ui/or-patterns/remove-leading-vert.rs similarity index 100% rename from src/test/ui/or-patterns/remove-leading-vert.rs rename to tests/ui/or-patterns/remove-leading-vert.rs diff --git a/src/test/ui/or-patterns/remove-leading-vert.stderr b/tests/ui/or-patterns/remove-leading-vert.stderr similarity index 100% rename from src/test/ui/or-patterns/remove-leading-vert.stderr rename to tests/ui/or-patterns/remove-leading-vert.stderr diff --git a/src/test/ui/or-patterns/search-via-bindings.rs b/tests/ui/or-patterns/search-via-bindings.rs similarity index 100% rename from src/test/ui/or-patterns/search-via-bindings.rs rename to tests/ui/or-patterns/search-via-bindings.rs diff --git a/src/test/ui/or-patterns/slice-patterns.rs b/tests/ui/or-patterns/slice-patterns.rs similarity index 100% rename from src/test/ui/or-patterns/slice-patterns.rs rename to tests/ui/or-patterns/slice-patterns.rs diff --git a/src/test/ui/or-patterns/struct-like.rs b/tests/ui/or-patterns/struct-like.rs similarity index 100% rename from src/test/ui/or-patterns/struct-like.rs rename to tests/ui/or-patterns/struct-like.rs diff --git a/src/test/ui/or-patterns/while-parsing-this-or-pattern.rs b/tests/ui/or-patterns/while-parsing-this-or-pattern.rs similarity index 100% rename from src/test/ui/or-patterns/while-parsing-this-or-pattern.rs rename to tests/ui/or-patterns/while-parsing-this-or-pattern.rs diff --git a/src/test/ui/or-patterns/while-parsing-this-or-pattern.stderr b/tests/ui/or-patterns/while-parsing-this-or-pattern.stderr similarity index 100% rename from src/test/ui/or-patterns/while-parsing-this-or-pattern.stderr rename to tests/ui/or-patterns/while-parsing-this-or-pattern.stderr diff --git a/src/test/ui/order-dependent-cast-inference.rs b/tests/ui/order-dependent-cast-inference.rs similarity index 100% rename from src/test/ui/order-dependent-cast-inference.rs rename to tests/ui/order-dependent-cast-inference.rs diff --git a/src/test/ui/order-dependent-cast-inference.stderr b/tests/ui/order-dependent-cast-inference.stderr similarity index 100% rename from src/test/ui/order-dependent-cast-inference.stderr rename to tests/ui/order-dependent-cast-inference.stderr diff --git a/src/test/ui/orphan-check-diagnostics.rs b/tests/ui/orphan-check-diagnostics.rs similarity index 100% rename from src/test/ui/orphan-check-diagnostics.rs rename to tests/ui/orphan-check-diagnostics.rs diff --git a/src/test/ui/orphan-check-diagnostics.stderr b/tests/ui/orphan-check-diagnostics.stderr similarity index 100% rename from src/test/ui/orphan-check-diagnostics.stderr rename to tests/ui/orphan-check-diagnostics.stderr diff --git a/src/test/ui/osx-frameworks.rs b/tests/ui/osx-frameworks.rs similarity index 100% rename from src/test/ui/osx-frameworks.rs rename to tests/ui/osx-frameworks.rs diff --git a/src/test/ui/osx-frameworks.stderr b/tests/ui/osx-frameworks.stderr similarity index 100% rename from src/test/ui/osx-frameworks.stderr rename to tests/ui/osx-frameworks.stderr diff --git a/src/test/ui/out-pointer-aliasing.rs b/tests/ui/out-pointer-aliasing.rs similarity index 100% rename from src/test/ui/out-pointer-aliasing.rs rename to tests/ui/out-pointer-aliasing.rs diff --git a/src/test/ui/output-slot-variants.rs b/tests/ui/output-slot-variants.rs similarity index 100% rename from src/test/ui/output-slot-variants.rs rename to tests/ui/output-slot-variants.rs diff --git a/src/test/ui/output-type-mismatch.rs b/tests/ui/output-type-mismatch.rs similarity index 100% rename from src/test/ui/output-type-mismatch.rs rename to tests/ui/output-type-mismatch.rs diff --git a/src/test/ui/output-type-mismatch.stderr b/tests/ui/output-type-mismatch.stderr similarity index 100% rename from src/test/ui/output-type-mismatch.stderr rename to tests/ui/output-type-mismatch.stderr diff --git a/src/test/ui/over-constrained-vregs.rs b/tests/ui/over-constrained-vregs.rs similarity index 100% rename from src/test/ui/over-constrained-vregs.rs rename to tests/ui/over-constrained-vregs.rs diff --git a/src/test/ui/overloaded/auxiliary/overloaded_autoderef_xc.rs b/tests/ui/overloaded/auxiliary/overloaded_autoderef_xc.rs similarity index 100% rename from src/test/ui/overloaded/auxiliary/overloaded_autoderef_xc.rs rename to tests/ui/overloaded/auxiliary/overloaded_autoderef_xc.rs diff --git a/src/test/ui/overloaded/fixup-deref-mut.rs b/tests/ui/overloaded/fixup-deref-mut.rs similarity index 100% rename from src/test/ui/overloaded/fixup-deref-mut.rs rename to tests/ui/overloaded/fixup-deref-mut.rs diff --git a/src/test/ui/overloaded/issue-14958.rs b/tests/ui/overloaded/issue-14958.rs similarity index 100% rename from src/test/ui/overloaded/issue-14958.rs rename to tests/ui/overloaded/issue-14958.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef-count.rs b/tests/ui/overloaded/overloaded-autoderef-count.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef-count.rs rename to tests/ui/overloaded/overloaded-autoderef-count.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef-indexing.rs b/tests/ui/overloaded/overloaded-autoderef-indexing.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef-indexing.rs rename to tests/ui/overloaded/overloaded-autoderef-indexing.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef-order.rs b/tests/ui/overloaded/overloaded-autoderef-order.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef-order.rs rename to tests/ui/overloaded/overloaded-autoderef-order.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef-vtable.rs b/tests/ui/overloaded/overloaded-autoderef-vtable.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef-vtable.rs rename to tests/ui/overloaded/overloaded-autoderef-vtable.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef-xcrate.rs b/tests/ui/overloaded/overloaded-autoderef-xcrate.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef-xcrate.rs rename to tests/ui/overloaded/overloaded-autoderef-xcrate.rs diff --git a/src/test/ui/overloaded/overloaded-autoderef.rs b/tests/ui/overloaded/overloaded-autoderef.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-autoderef.rs rename to tests/ui/overloaded/overloaded-autoderef.rs diff --git a/src/test/ui/overloaded/overloaded-calls-nontuple.rs b/tests/ui/overloaded/overloaded-calls-nontuple.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-nontuple.rs rename to tests/ui/overloaded/overloaded-calls-nontuple.rs diff --git a/src/test/ui/overloaded/overloaded-calls-nontuple.stderr b/tests/ui/overloaded/overloaded-calls-nontuple.stderr similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-nontuple.stderr rename to tests/ui/overloaded/overloaded-calls-nontuple.stderr diff --git a/src/test/ui/overloaded/overloaded-calls-object-one-arg.rs b/tests/ui/overloaded/overloaded-calls-object-one-arg.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-object-one-arg.rs rename to tests/ui/overloaded/overloaded-calls-object-one-arg.rs diff --git a/src/test/ui/overloaded/overloaded-calls-object-two-args.rs b/tests/ui/overloaded/overloaded-calls-object-two-args.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-object-two-args.rs rename to tests/ui/overloaded/overloaded-calls-object-two-args.rs diff --git a/src/test/ui/overloaded/overloaded-calls-object-zero-args.rs b/tests/ui/overloaded/overloaded-calls-object-zero-args.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-object-zero-args.rs rename to tests/ui/overloaded/overloaded-calls-object-zero-args.rs diff --git a/src/test/ui/overloaded/overloaded-calls-param-vtables.rs b/tests/ui/overloaded/overloaded-calls-param-vtables.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-param-vtables.rs rename to tests/ui/overloaded/overloaded-calls-param-vtables.rs diff --git a/src/test/ui/overloaded/overloaded-calls-simple.rs b/tests/ui/overloaded/overloaded-calls-simple.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-simple.rs rename to tests/ui/overloaded/overloaded-calls-simple.rs diff --git a/src/test/ui/overloaded/overloaded-calls-zero-args.rs b/tests/ui/overloaded/overloaded-calls-zero-args.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-calls-zero-args.rs rename to tests/ui/overloaded/overloaded-calls-zero-args.rs diff --git a/src/test/ui/overloaded/overloaded-deref-count.rs b/tests/ui/overloaded/overloaded-deref-count.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-deref-count.rs rename to tests/ui/overloaded/overloaded-deref-count.rs diff --git a/src/test/ui/overloaded/overloaded-deref.rs b/tests/ui/overloaded/overloaded-deref.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-deref.rs rename to tests/ui/overloaded/overloaded-deref.rs diff --git a/src/test/ui/overloaded/overloaded-index-assoc-list.rs b/tests/ui/overloaded/overloaded-index-assoc-list.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-index-assoc-list.rs rename to tests/ui/overloaded/overloaded-index-assoc-list.rs diff --git a/src/test/ui/overloaded/overloaded-index-autoderef.rs b/tests/ui/overloaded/overloaded-index-autoderef.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-index-autoderef.rs rename to tests/ui/overloaded/overloaded-index-autoderef.rs diff --git a/src/test/ui/overloaded/overloaded-index-in-field.rs b/tests/ui/overloaded/overloaded-index-in-field.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-index-in-field.rs rename to tests/ui/overloaded/overloaded-index-in-field.rs diff --git a/src/test/ui/overloaded/overloaded-index.rs b/tests/ui/overloaded/overloaded-index.rs similarity index 100% rename from src/test/ui/overloaded/overloaded-index.rs rename to tests/ui/overloaded/overloaded-index.rs diff --git a/src/test/ui/overloaded/overloaded_deref_with_ref_pattern.rs b/tests/ui/overloaded/overloaded_deref_with_ref_pattern.rs similarity index 100% rename from src/test/ui/overloaded/overloaded_deref_with_ref_pattern.rs rename to tests/ui/overloaded/overloaded_deref_with_ref_pattern.rs diff --git a/src/test/ui/overloaded/overloaded_deref_with_ref_pattern_issue15609.rs b/tests/ui/overloaded/overloaded_deref_with_ref_pattern_issue15609.rs similarity index 100% rename from src/test/ui/overloaded/overloaded_deref_with_ref_pattern_issue15609.rs rename to tests/ui/overloaded/overloaded_deref_with_ref_pattern_issue15609.rs diff --git a/src/test/ui/packed-struct/packed-struct-generic-transmute.rs b/tests/ui/packed-struct/packed-struct-generic-transmute.rs similarity index 100% rename from src/test/ui/packed-struct/packed-struct-generic-transmute.rs rename to tests/ui/packed-struct/packed-struct-generic-transmute.rs diff --git a/src/test/ui/packed-struct/packed-struct-generic-transmute.stderr b/tests/ui/packed-struct/packed-struct-generic-transmute.stderr similarity index 100% rename from src/test/ui/packed-struct/packed-struct-generic-transmute.stderr rename to tests/ui/packed-struct/packed-struct-generic-transmute.stderr diff --git a/src/test/ui/packed-struct/packed-struct-transmute.rs b/tests/ui/packed-struct/packed-struct-transmute.rs similarity index 100% rename from src/test/ui/packed-struct/packed-struct-transmute.rs rename to tests/ui/packed-struct/packed-struct-transmute.rs diff --git a/src/test/ui/packed-struct/packed-struct-transmute.stderr b/tests/ui/packed-struct/packed-struct-transmute.stderr similarity index 100% rename from src/test/ui/packed-struct/packed-struct-transmute.stderr rename to tests/ui/packed-struct/packed-struct-transmute.stderr diff --git a/src/test/ui/packed/auxiliary/packed.rs b/tests/ui/packed/auxiliary/packed.rs similarity index 100% rename from src/test/ui/packed/auxiliary/packed.rs rename to tests/ui/packed/auxiliary/packed.rs diff --git a/src/test/ui/packed/issue-27060-2.rs b/tests/ui/packed/issue-27060-2.rs similarity index 100% rename from src/test/ui/packed/issue-27060-2.rs rename to tests/ui/packed/issue-27060-2.rs diff --git a/src/test/ui/packed/issue-27060-2.stderr b/tests/ui/packed/issue-27060-2.stderr similarity index 100% rename from src/test/ui/packed/issue-27060-2.stderr rename to tests/ui/packed/issue-27060-2.stderr diff --git a/src/test/ui/packed/issue-27060-rpass.rs b/tests/ui/packed/issue-27060-rpass.rs similarity index 100% rename from src/test/ui/packed/issue-27060-rpass.rs rename to tests/ui/packed/issue-27060-rpass.rs diff --git a/src/test/ui/packed/issue-27060-rpass.stderr b/tests/ui/packed/issue-27060-rpass.stderr similarity index 100% rename from src/test/ui/packed/issue-27060-rpass.stderr rename to tests/ui/packed/issue-27060-rpass.stderr diff --git a/src/test/ui/packed/issue-27060.rs b/tests/ui/packed/issue-27060.rs similarity index 100% rename from src/test/ui/packed/issue-27060.rs rename to tests/ui/packed/issue-27060.rs diff --git a/src/test/ui/packed/issue-27060.stderr b/tests/ui/packed/issue-27060.stderr similarity index 100% rename from src/test/ui/packed/issue-27060.stderr rename to tests/ui/packed/issue-27060.stderr diff --git a/src/test/ui/packed/issue-46152.rs b/tests/ui/packed/issue-46152.rs similarity index 100% rename from src/test/ui/packed/issue-46152.rs rename to tests/ui/packed/issue-46152.rs diff --git a/src/test/ui/packed/packed-struct-address-of-element.rs b/tests/ui/packed/packed-struct-address-of-element.rs similarity index 100% rename from src/test/ui/packed/packed-struct-address-of-element.rs rename to tests/ui/packed/packed-struct-address-of-element.rs diff --git a/src/test/ui/packed/packed-struct-borrow-element-64bit.rs b/tests/ui/packed/packed-struct-borrow-element-64bit.rs similarity index 100% rename from src/test/ui/packed/packed-struct-borrow-element-64bit.rs rename to tests/ui/packed/packed-struct-borrow-element-64bit.rs diff --git a/src/test/ui/packed/packed-struct-borrow-element-64bit.stderr b/tests/ui/packed/packed-struct-borrow-element-64bit.stderr similarity index 100% rename from src/test/ui/packed/packed-struct-borrow-element-64bit.stderr rename to tests/ui/packed/packed-struct-borrow-element-64bit.stderr diff --git a/src/test/ui/packed/packed-struct-borrow-element.rs b/tests/ui/packed/packed-struct-borrow-element.rs similarity index 100% rename from src/test/ui/packed/packed-struct-borrow-element.rs rename to tests/ui/packed/packed-struct-borrow-element.rs diff --git a/src/test/ui/packed/packed-struct-borrow-element.stderr b/tests/ui/packed/packed-struct-borrow-element.stderr similarity index 100% rename from src/test/ui/packed/packed-struct-borrow-element.stderr rename to tests/ui/packed/packed-struct-borrow-element.stderr diff --git a/src/test/ui/packed/packed-struct-drop-aligned.rs b/tests/ui/packed/packed-struct-drop-aligned.rs similarity index 100% rename from src/test/ui/packed/packed-struct-drop-aligned.rs rename to tests/ui/packed/packed-struct-drop-aligned.rs diff --git a/src/test/ui/packed/packed-struct-generic-layout.rs b/tests/ui/packed/packed-struct-generic-layout.rs similarity index 100% rename from src/test/ui/packed/packed-struct-generic-layout.rs rename to tests/ui/packed/packed-struct-generic-layout.rs diff --git a/src/test/ui/packed/packed-struct-generic-size.rs b/tests/ui/packed/packed-struct-generic-size.rs similarity index 100% rename from src/test/ui/packed/packed-struct-generic-size.rs rename to tests/ui/packed/packed-struct-generic-size.rs diff --git a/src/test/ui/packed/packed-struct-layout.rs b/tests/ui/packed/packed-struct-layout.rs similarity index 100% rename from src/test/ui/packed/packed-struct-layout.rs rename to tests/ui/packed/packed-struct-layout.rs diff --git a/src/test/ui/packed/packed-struct-match.rs b/tests/ui/packed/packed-struct-match.rs similarity index 100% rename from src/test/ui/packed/packed-struct-match.rs rename to tests/ui/packed/packed-struct-match.rs diff --git a/src/test/ui/packed/packed-struct-optimized-enum.rs b/tests/ui/packed/packed-struct-optimized-enum.rs similarity index 100% rename from src/test/ui/packed/packed-struct-optimized-enum.rs rename to tests/ui/packed/packed-struct-optimized-enum.rs diff --git a/src/test/ui/packed/packed-struct-size-xc.rs b/tests/ui/packed/packed-struct-size-xc.rs similarity index 100% rename from src/test/ui/packed/packed-struct-size-xc.rs rename to tests/ui/packed/packed-struct-size-xc.rs diff --git a/src/test/ui/packed/packed-struct-size.rs b/tests/ui/packed/packed-struct-size.rs similarity index 100% rename from src/test/ui/packed/packed-struct-size.rs rename to tests/ui/packed/packed-struct-size.rs diff --git a/src/test/ui/packed/packed-struct-vec.rs b/tests/ui/packed/packed-struct-vec.rs similarity index 100% rename from src/test/ui/packed/packed-struct-vec.rs rename to tests/ui/packed/packed-struct-vec.rs diff --git a/src/test/ui/packed/packed-tuple-struct-layout.rs b/tests/ui/packed/packed-tuple-struct-layout.rs similarity index 100% rename from src/test/ui/packed/packed-tuple-struct-layout.rs rename to tests/ui/packed/packed-tuple-struct-layout.rs diff --git a/src/test/ui/packed/packed-tuple-struct-size.rs b/tests/ui/packed/packed-tuple-struct-size.rs similarity index 100% rename from src/test/ui/packed/packed-tuple-struct-size.rs rename to tests/ui/packed/packed-tuple-struct-size.rs diff --git a/src/test/ui/packed/packed-with-inference-vars-issue-61402.rs b/tests/ui/packed/packed-with-inference-vars-issue-61402.rs similarity index 100% rename from src/test/ui/packed/packed-with-inference-vars-issue-61402.rs rename to tests/ui/packed/packed-with-inference-vars-issue-61402.rs diff --git a/src/test/ui/panic-handler/auxiliary/some-panic-impl.rs b/tests/ui/panic-handler/auxiliary/some-panic-impl.rs similarity index 100% rename from src/test/ui/panic-handler/auxiliary/some-panic-impl.rs rename to tests/ui/panic-handler/auxiliary/some-panic-impl.rs diff --git a/src/test/ui/panic-handler/auxiliary/weak-lang-items.rs b/tests/ui/panic-handler/auxiliary/weak-lang-items.rs similarity index 100% rename from src/test/ui/panic-handler/auxiliary/weak-lang-items.rs rename to tests/ui/panic-handler/auxiliary/weak-lang-items.rs diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-1.rs b/tests/ui/panic-handler/panic-handler-bad-signature-1.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-1.rs rename to tests/ui/panic-handler/panic-handler-bad-signature-1.rs diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-1.stderr b/tests/ui/panic-handler/panic-handler-bad-signature-1.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-1.stderr rename to tests/ui/panic-handler/panic-handler-bad-signature-1.stderr diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-2.rs b/tests/ui/panic-handler/panic-handler-bad-signature-2.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-2.rs rename to tests/ui/panic-handler/panic-handler-bad-signature-2.rs diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-2.stderr b/tests/ui/panic-handler/panic-handler-bad-signature-2.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-2.stderr rename to tests/ui/panic-handler/panic-handler-bad-signature-2.stderr diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-3.rs b/tests/ui/panic-handler/panic-handler-bad-signature-3.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-3.rs rename to tests/ui/panic-handler/panic-handler-bad-signature-3.rs diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-3.stderr b/tests/ui/panic-handler/panic-handler-bad-signature-3.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-3.stderr rename to tests/ui/panic-handler/panic-handler-bad-signature-3.stderr diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-4.rs b/tests/ui/panic-handler/panic-handler-bad-signature-4.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-4.rs rename to tests/ui/panic-handler/panic-handler-bad-signature-4.rs diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-4.stderr b/tests/ui/panic-handler/panic-handler-bad-signature-4.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-bad-signature-4.stderr rename to tests/ui/panic-handler/panic-handler-bad-signature-4.stderr diff --git a/src/test/ui/panic-handler/panic-handler-duplicate.rs b/tests/ui/panic-handler/panic-handler-duplicate.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-duplicate.rs rename to tests/ui/panic-handler/panic-handler-duplicate.rs diff --git a/src/test/ui/panic-handler/panic-handler-duplicate.stderr b/tests/ui/panic-handler/panic-handler-duplicate.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-duplicate.stderr rename to tests/ui/panic-handler/panic-handler-duplicate.stderr diff --git a/src/test/ui/panic-handler/panic-handler-missing.rs b/tests/ui/panic-handler/panic-handler-missing.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-missing.rs rename to tests/ui/panic-handler/panic-handler-missing.rs diff --git a/src/test/ui/panic-handler/panic-handler-requires-panic-info.rs b/tests/ui/panic-handler/panic-handler-requires-panic-info.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-requires-panic-info.rs rename to tests/ui/panic-handler/panic-handler-requires-panic-info.rs diff --git a/src/test/ui/panic-handler/panic-handler-requires-panic-info.stderr b/tests/ui/panic-handler/panic-handler-requires-panic-info.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-requires-panic-info.stderr rename to tests/ui/panic-handler/panic-handler-requires-panic-info.stderr diff --git a/src/test/ui/panic-handler/panic-handler-std.rs b/tests/ui/panic-handler/panic-handler-std.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-std.rs rename to tests/ui/panic-handler/panic-handler-std.rs diff --git a/src/test/ui/panic-handler/panic-handler-std.stderr b/tests/ui/panic-handler/panic-handler-std.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-std.stderr rename to tests/ui/panic-handler/panic-handler-std.stderr diff --git a/src/test/ui/panic-handler/panic-handler-twice.rs b/tests/ui/panic-handler/panic-handler-twice.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-twice.rs rename to tests/ui/panic-handler/panic-handler-twice.rs diff --git a/src/test/ui/panic-handler/panic-handler-wrong-location.rs b/tests/ui/panic-handler/panic-handler-wrong-location.rs similarity index 100% rename from src/test/ui/panic-handler/panic-handler-wrong-location.rs rename to tests/ui/panic-handler/panic-handler-wrong-location.rs diff --git a/src/test/ui/panic-handler/panic-handler-wrong-location.stderr b/tests/ui/panic-handler/panic-handler-wrong-location.stderr similarity index 100% rename from src/test/ui/panic-handler/panic-handler-wrong-location.stderr rename to tests/ui/panic-handler/panic-handler-wrong-location.stderr diff --git a/src/test/ui/panic-handler/weak-lang-item-2.rs b/tests/ui/panic-handler/weak-lang-item-2.rs similarity index 100% rename from src/test/ui/panic-handler/weak-lang-item-2.rs rename to tests/ui/panic-handler/weak-lang-item-2.rs diff --git a/src/test/ui/panic-handler/weak-lang-item.rs b/tests/ui/panic-handler/weak-lang-item.rs similarity index 100% rename from src/test/ui/panic-handler/weak-lang-item.rs rename to tests/ui/panic-handler/weak-lang-item.rs diff --git a/src/test/ui/panic-handler/weak-lang-item.stderr b/tests/ui/panic-handler/weak-lang-item.stderr similarity index 100% rename from src/test/ui/panic-handler/weak-lang-item.stderr rename to tests/ui/panic-handler/weak-lang-item.stderr diff --git a/src/test/ui/panic-runtime/abort-link-to-unwind-dylib.rs b/tests/ui/panic-runtime/abort-link-to-unwind-dylib.rs similarity index 100% rename from src/test/ui/panic-runtime/abort-link-to-unwind-dylib.rs rename to tests/ui/panic-runtime/abort-link-to-unwind-dylib.rs diff --git a/src/test/ui/panic-runtime/abort-link-to-unwind-dylib.stderr b/tests/ui/panic-runtime/abort-link-to-unwind-dylib.stderr similarity index 100% rename from src/test/ui/panic-runtime/abort-link-to-unwind-dylib.stderr rename to tests/ui/panic-runtime/abort-link-to-unwind-dylib.stderr diff --git a/src/test/ui/panic-runtime/abort-link-to-unwinding-crates.rs b/tests/ui/panic-runtime/abort-link-to-unwinding-crates.rs similarity index 100% rename from src/test/ui/panic-runtime/abort-link-to-unwinding-crates.rs rename to tests/ui/panic-runtime/abort-link-to-unwinding-crates.rs diff --git a/src/test/ui/panic-runtime/abort.rs b/tests/ui/panic-runtime/abort.rs similarity index 100% rename from src/test/ui/panic-runtime/abort.rs rename to tests/ui/panic-runtime/abort.rs diff --git a/src/test/ui/panic-runtime/auxiliary/depends.rs b/tests/ui/panic-runtime/auxiliary/depends.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/depends.rs rename to tests/ui/panic-runtime/auxiliary/depends.rs diff --git a/src/test/ui/panic-runtime/auxiliary/exit-success-if-unwind.rs b/tests/ui/panic-runtime/auxiliary/exit-success-if-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/exit-success-if-unwind.rs rename to tests/ui/panic-runtime/auxiliary/exit-success-if-unwind.rs diff --git a/src/test/ui/panic-runtime/auxiliary/needs-abort.rs b/tests/ui/panic-runtime/auxiliary/needs-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/needs-abort.rs rename to tests/ui/panic-runtime/auxiliary/needs-abort.rs diff --git a/src/test/ui/panic-runtime/auxiliary/needs-panic-runtime.rs b/tests/ui/panic-runtime/auxiliary/needs-panic-runtime.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/needs-panic-runtime.rs rename to tests/ui/panic-runtime/auxiliary/needs-panic-runtime.rs diff --git a/src/test/ui/panic-runtime/auxiliary/needs-unwind.rs b/tests/ui/panic-runtime/auxiliary/needs-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/needs-unwind.rs rename to tests/ui/panic-runtime/auxiliary/needs-unwind.rs diff --git a/src/test/ui/panic-runtime/auxiliary/panic-runtime-abort.rs b/tests/ui/panic-runtime/auxiliary/panic-runtime-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/panic-runtime-abort.rs rename to tests/ui/panic-runtime/auxiliary/panic-runtime-abort.rs diff --git a/src/test/ui/panic-runtime/auxiliary/panic-runtime-lang-items.rs b/tests/ui/panic-runtime/auxiliary/panic-runtime-lang-items.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/panic-runtime-lang-items.rs rename to tests/ui/panic-runtime/auxiliary/panic-runtime-lang-items.rs diff --git a/src/test/ui/panic-runtime/auxiliary/panic-runtime-unwind.rs b/tests/ui/panic-runtime/auxiliary/panic-runtime-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/panic-runtime-unwind.rs rename to tests/ui/panic-runtime/auxiliary/panic-runtime-unwind.rs diff --git a/src/test/ui/panic-runtime/auxiliary/panic-runtime-unwind2.rs b/tests/ui/panic-runtime/auxiliary/panic-runtime-unwind2.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/panic-runtime-unwind2.rs rename to tests/ui/panic-runtime/auxiliary/panic-runtime-unwind2.rs diff --git a/src/test/ui/panic-runtime/auxiliary/wants-panic-runtime-abort.rs b/tests/ui/panic-runtime/auxiliary/wants-panic-runtime-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/wants-panic-runtime-abort.rs rename to tests/ui/panic-runtime/auxiliary/wants-panic-runtime-abort.rs diff --git a/src/test/ui/panic-runtime/auxiliary/wants-panic-runtime-unwind.rs b/tests/ui/panic-runtime/auxiliary/wants-panic-runtime-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/auxiliary/wants-panic-runtime-unwind.rs rename to tests/ui/panic-runtime/auxiliary/wants-panic-runtime-unwind.rs diff --git a/src/test/ui/panic-runtime/bad-panic-flag1.rs b/tests/ui/panic-runtime/bad-panic-flag1.rs similarity index 100% rename from src/test/ui/panic-runtime/bad-panic-flag1.rs rename to tests/ui/panic-runtime/bad-panic-flag1.rs diff --git a/src/test/ui/panic-runtime/bad-panic-flag1.stderr b/tests/ui/panic-runtime/bad-panic-flag1.stderr similarity index 100% rename from src/test/ui/panic-runtime/bad-panic-flag1.stderr rename to tests/ui/panic-runtime/bad-panic-flag1.stderr diff --git a/src/test/ui/panic-runtime/bad-panic-flag2.rs b/tests/ui/panic-runtime/bad-panic-flag2.rs similarity index 100% rename from src/test/ui/panic-runtime/bad-panic-flag2.rs rename to tests/ui/panic-runtime/bad-panic-flag2.rs diff --git a/src/test/ui/panic-runtime/bad-panic-flag2.stderr b/tests/ui/panic-runtime/bad-panic-flag2.stderr similarity index 100% rename from src/test/ui/panic-runtime/bad-panic-flag2.stderr rename to tests/ui/panic-runtime/bad-panic-flag2.stderr diff --git a/src/test/ui/panic-runtime/incompatible-type.rs b/tests/ui/panic-runtime/incompatible-type.rs similarity index 100% rename from src/test/ui/panic-runtime/incompatible-type.rs rename to tests/ui/panic-runtime/incompatible-type.rs diff --git a/src/test/ui/panic-runtime/link-to-abort.rs b/tests/ui/panic-runtime/link-to-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/link-to-abort.rs rename to tests/ui/panic-runtime/link-to-abort.rs diff --git a/src/test/ui/panic-runtime/link-to-unwind.rs b/tests/ui/panic-runtime/link-to-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/link-to-unwind.rs rename to tests/ui/panic-runtime/link-to-unwind.rs diff --git a/src/test/ui/panic-runtime/lto-abort.rs b/tests/ui/panic-runtime/lto-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/lto-abort.rs rename to tests/ui/panic-runtime/lto-abort.rs diff --git a/src/test/ui/panic-runtime/lto-unwind.rs b/tests/ui/panic-runtime/lto-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/lto-unwind.rs rename to tests/ui/panic-runtime/lto-unwind.rs diff --git a/src/test/ui/panic-runtime/need-abort-got-unwind.rs b/tests/ui/panic-runtime/need-abort-got-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/need-abort-got-unwind.rs rename to tests/ui/panic-runtime/need-abort-got-unwind.rs diff --git a/src/test/ui/panic-runtime/need-abort-got-unwind.stderr b/tests/ui/panic-runtime/need-abort-got-unwind.stderr similarity index 100% rename from src/test/ui/panic-runtime/need-abort-got-unwind.stderr rename to tests/ui/panic-runtime/need-abort-got-unwind.stderr diff --git a/src/test/ui/panic-runtime/need-unwind-got-abort.rs b/tests/ui/panic-runtime/need-unwind-got-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/need-unwind-got-abort.rs rename to tests/ui/panic-runtime/need-unwind-got-abort.rs diff --git a/src/test/ui/panic-runtime/need-unwind-got-abort.stderr b/tests/ui/panic-runtime/need-unwind-got-abort.stderr similarity index 100% rename from src/test/ui/panic-runtime/need-unwind-got-abort.stderr rename to tests/ui/panic-runtime/need-unwind-got-abort.stderr diff --git a/src/test/ui/panic-runtime/needs-gate.rs b/tests/ui/panic-runtime/needs-gate.rs similarity index 100% rename from src/test/ui/panic-runtime/needs-gate.rs rename to tests/ui/panic-runtime/needs-gate.rs diff --git a/src/test/ui/panic-runtime/needs-gate.stderr b/tests/ui/panic-runtime/needs-gate.stderr similarity index 100% rename from src/test/ui/panic-runtime/needs-gate.stderr rename to tests/ui/panic-runtime/needs-gate.stderr diff --git a/src/test/ui/panic-runtime/runtime-depend-on-needs-runtime.rs b/tests/ui/panic-runtime/runtime-depend-on-needs-runtime.rs similarity index 100% rename from src/test/ui/panic-runtime/runtime-depend-on-needs-runtime.rs rename to tests/ui/panic-runtime/runtime-depend-on-needs-runtime.rs diff --git a/src/test/ui/panic-runtime/transitive-link-a-bunch.rs b/tests/ui/panic-runtime/transitive-link-a-bunch.rs similarity index 100% rename from src/test/ui/panic-runtime/transitive-link-a-bunch.rs rename to tests/ui/panic-runtime/transitive-link-a-bunch.rs diff --git a/src/test/ui/panic-runtime/transitive-link-a-bunch.stderr b/tests/ui/panic-runtime/transitive-link-a-bunch.stderr similarity index 100% rename from src/test/ui/panic-runtime/transitive-link-a-bunch.stderr rename to tests/ui/panic-runtime/transitive-link-a-bunch.stderr diff --git a/src/test/ui/panic-runtime/two-panic-runtimes.rs b/tests/ui/panic-runtime/two-panic-runtimes.rs similarity index 100% rename from src/test/ui/panic-runtime/two-panic-runtimes.rs rename to tests/ui/panic-runtime/two-panic-runtimes.rs diff --git a/src/test/ui/panic-runtime/unwind-interleaved.rs b/tests/ui/panic-runtime/unwind-interleaved.rs similarity index 100% rename from src/test/ui/panic-runtime/unwind-interleaved.rs rename to tests/ui/panic-runtime/unwind-interleaved.rs diff --git a/src/test/ui/panic-runtime/unwind-rec.rs b/tests/ui/panic-runtime/unwind-rec.rs similarity index 100% rename from src/test/ui/panic-runtime/unwind-rec.rs rename to tests/ui/panic-runtime/unwind-rec.rs diff --git a/src/test/ui/panic-runtime/unwind-rec2.rs b/tests/ui/panic-runtime/unwind-rec2.rs similarity index 100% rename from src/test/ui/panic-runtime/unwind-rec2.rs rename to tests/ui/panic-runtime/unwind-rec2.rs diff --git a/src/test/ui/panic-runtime/unwind-tables-target-required.rs b/tests/ui/panic-runtime/unwind-tables-target-required.rs similarity index 100% rename from src/test/ui/panic-runtime/unwind-tables-target-required.rs rename to tests/ui/panic-runtime/unwind-tables-target-required.rs diff --git a/src/test/ui/panic-runtime/unwind-unique.rs b/tests/ui/panic-runtime/unwind-unique.rs similarity index 100% rename from src/test/ui/panic-runtime/unwind-unique.rs rename to tests/ui/panic-runtime/unwind-unique.rs diff --git a/src/test/ui/panic-runtime/want-abort-got-unwind.rs b/tests/ui/panic-runtime/want-abort-got-unwind.rs similarity index 100% rename from src/test/ui/panic-runtime/want-abort-got-unwind.rs rename to tests/ui/panic-runtime/want-abort-got-unwind.rs diff --git a/src/test/ui/panic-runtime/want-abort-got-unwind2.rs b/tests/ui/panic-runtime/want-abort-got-unwind2.rs similarity index 100% rename from src/test/ui/panic-runtime/want-abort-got-unwind2.rs rename to tests/ui/panic-runtime/want-abort-got-unwind2.rs diff --git a/src/test/ui/panic-runtime/want-unwind-got-abort.rs b/tests/ui/panic-runtime/want-unwind-got-abort.rs similarity index 100% rename from src/test/ui/panic-runtime/want-unwind-got-abort.rs rename to tests/ui/panic-runtime/want-unwind-got-abort.rs diff --git a/src/test/ui/panic-runtime/want-unwind-got-abort.stderr b/tests/ui/panic-runtime/want-unwind-got-abort.stderr similarity index 100% rename from src/test/ui/panic-runtime/want-unwind-got-abort.stderr rename to tests/ui/panic-runtime/want-unwind-got-abort.stderr diff --git a/src/test/ui/panic-runtime/want-unwind-got-abort2.rs b/tests/ui/panic-runtime/want-unwind-got-abort2.rs similarity index 100% rename from src/test/ui/panic-runtime/want-unwind-got-abort2.rs rename to tests/ui/panic-runtime/want-unwind-got-abort2.rs diff --git a/src/test/ui/panic-runtime/want-unwind-got-abort2.stderr b/tests/ui/panic-runtime/want-unwind-got-abort2.stderr similarity index 100% rename from src/test/ui/panic-runtime/want-unwind-got-abort2.stderr rename to tests/ui/panic-runtime/want-unwind-got-abort2.stderr diff --git a/src/test/ui/panic-while-printing.rs b/tests/ui/panic-while-printing.rs similarity index 100% rename from src/test/ui/panic-while-printing.rs rename to tests/ui/panic-while-printing.rs diff --git a/src/test/ui/panic_implementation-closures.rs b/tests/ui/panic_implementation-closures.rs similarity index 100% rename from src/test/ui/panic_implementation-closures.rs rename to tests/ui/panic_implementation-closures.rs diff --git a/src/test/ui/panics/abort-on-panic.rs b/tests/ui/panics/abort-on-panic.rs similarity index 100% rename from src/test/ui/panics/abort-on-panic.rs rename to tests/ui/panics/abort-on-panic.rs diff --git a/src/test/ui/panics/args-panic.rs b/tests/ui/panics/args-panic.rs similarity index 100% rename from src/test/ui/panics/args-panic.rs rename to tests/ui/panics/args-panic.rs diff --git a/src/test/ui/panics/default-backtrace-ice.rs b/tests/ui/panics/default-backtrace-ice.rs similarity index 100% rename from src/test/ui/panics/default-backtrace-ice.rs rename to tests/ui/panics/default-backtrace-ice.rs diff --git a/src/test/ui/panics/default-backtrace-ice.stderr b/tests/ui/panics/default-backtrace-ice.stderr similarity index 100% rename from src/test/ui/panics/default-backtrace-ice.stderr rename to tests/ui/panics/default-backtrace-ice.stderr diff --git a/src/test/ui/panics/doublepanic.rs b/tests/ui/panics/doublepanic.rs similarity index 100% rename from src/test/ui/panics/doublepanic.rs rename to tests/ui/panics/doublepanic.rs diff --git a/src/test/ui/panics/explicit-panic-msg.rs b/tests/ui/panics/explicit-panic-msg.rs similarity index 100% rename from src/test/ui/panics/explicit-panic-msg.rs rename to tests/ui/panics/explicit-panic-msg.rs diff --git a/src/test/ui/panics/explicit-panic.rs b/tests/ui/panics/explicit-panic.rs similarity index 100% rename from src/test/ui/panics/explicit-panic.rs rename to tests/ui/panics/explicit-panic.rs diff --git a/src/test/ui/panics/fmt-panic.rs b/tests/ui/panics/fmt-panic.rs similarity index 100% rename from src/test/ui/panics/fmt-panic.rs rename to tests/ui/panics/fmt-panic.rs diff --git a/src/test/ui/panics/issue-47429-short-backtraces.legacy.run.stderr b/tests/ui/panics/issue-47429-short-backtraces.legacy.run.stderr similarity index 100% rename from src/test/ui/panics/issue-47429-short-backtraces.legacy.run.stderr rename to tests/ui/panics/issue-47429-short-backtraces.legacy.run.stderr diff --git a/src/test/ui/panics/issue-47429-short-backtraces.rs b/tests/ui/panics/issue-47429-short-backtraces.rs similarity index 100% rename from src/test/ui/panics/issue-47429-short-backtraces.rs rename to tests/ui/panics/issue-47429-short-backtraces.rs diff --git a/src/test/ui/panics/issue-47429-short-backtraces.v0.run.stderr b/tests/ui/panics/issue-47429-short-backtraces.v0.run.stderr similarity index 100% rename from src/test/ui/panics/issue-47429-short-backtraces.v0.run.stderr rename to tests/ui/panics/issue-47429-short-backtraces.v0.run.stderr diff --git a/src/test/ui/panics/location-detail-panic-no-column.rs b/tests/ui/panics/location-detail-panic-no-column.rs similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-column.rs rename to tests/ui/panics/location-detail-panic-no-column.rs diff --git a/src/test/ui/panics/location-detail-panic-no-column.run.stderr b/tests/ui/panics/location-detail-panic-no-column.run.stderr similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-column.run.stderr rename to tests/ui/panics/location-detail-panic-no-column.run.stderr diff --git a/src/test/ui/panics/location-detail-panic-no-file.rs b/tests/ui/panics/location-detail-panic-no-file.rs similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-file.rs rename to tests/ui/panics/location-detail-panic-no-file.rs diff --git a/src/test/ui/panics/location-detail-panic-no-file.run.stderr b/tests/ui/panics/location-detail-panic-no-file.run.stderr similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-file.run.stderr rename to tests/ui/panics/location-detail-panic-no-file.run.stderr diff --git a/src/test/ui/panics/location-detail-panic-no-line.rs b/tests/ui/panics/location-detail-panic-no-line.rs similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-line.rs rename to tests/ui/panics/location-detail-panic-no-line.rs diff --git a/src/test/ui/panics/location-detail-panic-no-line.run.stderr b/tests/ui/panics/location-detail-panic-no-line.run.stderr similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-line.run.stderr rename to tests/ui/panics/location-detail-panic-no-line.run.stderr diff --git a/src/test/ui/panics/location-detail-panic-no-location-info.rs b/tests/ui/panics/location-detail-panic-no-location-info.rs similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-location-info.rs rename to tests/ui/panics/location-detail-panic-no-location-info.rs diff --git a/src/test/ui/panics/location-detail-panic-no-location-info.run.stderr b/tests/ui/panics/location-detail-panic-no-location-info.run.stderr similarity index 100% rename from src/test/ui/panics/location-detail-panic-no-location-info.run.stderr rename to tests/ui/panics/location-detail-panic-no-location-info.run.stderr diff --git a/src/test/ui/panics/location-detail-unwrap-no-file.rs b/tests/ui/panics/location-detail-unwrap-no-file.rs similarity index 100% rename from src/test/ui/panics/location-detail-unwrap-no-file.rs rename to tests/ui/panics/location-detail-unwrap-no-file.rs diff --git a/src/test/ui/panics/location-detail-unwrap-no-file.run.stderr b/tests/ui/panics/location-detail-unwrap-no-file.run.stderr similarity index 100% rename from src/test/ui/panics/location-detail-unwrap-no-file.run.stderr rename to tests/ui/panics/location-detail-unwrap-no-file.run.stderr diff --git a/src/test/ui/panics/main-panic.rs b/tests/ui/panics/main-panic.rs similarity index 100% rename from src/test/ui/panics/main-panic.rs rename to tests/ui/panics/main-panic.rs diff --git a/src/test/ui/panics/panic-2021.rs b/tests/ui/panics/panic-2021.rs similarity index 100% rename from src/test/ui/panics/panic-2021.rs rename to tests/ui/panics/panic-2021.rs diff --git a/src/test/ui/panics/panic-2021.stderr b/tests/ui/panics/panic-2021.stderr similarity index 100% rename from src/test/ui/panics/panic-2021.stderr rename to tests/ui/panics/panic-2021.stderr diff --git a/src/test/ui/panics/panic-arg.rs b/tests/ui/panics/panic-arg.rs similarity index 100% rename from src/test/ui/panics/panic-arg.rs rename to tests/ui/panics/panic-arg.rs diff --git a/src/test/ui/panics/panic-handler-chain-update-hook.rs b/tests/ui/panics/panic-handler-chain-update-hook.rs similarity index 100% rename from src/test/ui/panics/panic-handler-chain-update-hook.rs rename to tests/ui/panics/panic-handler-chain-update-hook.rs diff --git a/src/test/ui/panics/panic-handler-chain.rs b/tests/ui/panics/panic-handler-chain.rs similarity index 100% rename from src/test/ui/panics/panic-handler-chain.rs rename to tests/ui/panics/panic-handler-chain.rs diff --git a/src/test/ui/panics/panic-handler-flail-wildly.rs b/tests/ui/panics/panic-handler-flail-wildly.rs similarity index 100% rename from src/test/ui/panics/panic-handler-flail-wildly.rs rename to tests/ui/panics/panic-handler-flail-wildly.rs diff --git a/src/test/ui/panics/panic-handler-set-twice.rs b/tests/ui/panics/panic-handler-set-twice.rs similarity index 100% rename from src/test/ui/panics/panic-handler-set-twice.rs rename to tests/ui/panics/panic-handler-set-twice.rs diff --git a/src/test/ui/panics/panic-in-dtor-drops-fields.rs b/tests/ui/panics/panic-in-dtor-drops-fields.rs similarity index 100% rename from src/test/ui/panics/panic-in-dtor-drops-fields.rs rename to tests/ui/panics/panic-in-dtor-drops-fields.rs diff --git a/src/test/ui/panics/panic-macro-any-wrapped.rs b/tests/ui/panics/panic-macro-any-wrapped.rs similarity index 100% rename from src/test/ui/panics/panic-macro-any-wrapped.rs rename to tests/ui/panics/panic-macro-any-wrapped.rs diff --git a/src/test/ui/panics/panic-macro-any.rs b/tests/ui/panics/panic-macro-any.rs similarity index 100% rename from src/test/ui/panics/panic-macro-any.rs rename to tests/ui/panics/panic-macro-any.rs diff --git a/src/test/ui/panics/panic-macro-explicit.rs b/tests/ui/panics/panic-macro-explicit.rs similarity index 100% rename from src/test/ui/panics/panic-macro-explicit.rs rename to tests/ui/panics/panic-macro-explicit.rs diff --git a/src/test/ui/panics/panic-macro-fmt.rs b/tests/ui/panics/panic-macro-fmt.rs similarity index 100% rename from src/test/ui/panics/panic-macro-fmt.rs rename to tests/ui/panics/panic-macro-fmt.rs diff --git a/src/test/ui/panics/panic-macro-owned.rs b/tests/ui/panics/panic-macro-owned.rs similarity index 100% rename from src/test/ui/panics/panic-macro-owned.rs rename to tests/ui/panics/panic-macro-owned.rs diff --git a/src/test/ui/panics/panic-macro-static.rs b/tests/ui/panics/panic-macro-static.rs similarity index 100% rename from src/test/ui/panics/panic-macro-static.rs rename to tests/ui/panics/panic-macro-static.rs diff --git a/src/test/ui/panics/panic-main.rs b/tests/ui/panics/panic-main.rs similarity index 100% rename from src/test/ui/panics/panic-main.rs rename to tests/ui/panics/panic-main.rs diff --git a/src/test/ui/panics/panic-parens.rs b/tests/ui/panics/panic-parens.rs similarity index 100% rename from src/test/ui/panics/panic-parens.rs rename to tests/ui/panics/panic-parens.rs diff --git a/src/test/ui/panics/panic-recover-propagate.rs b/tests/ui/panics/panic-recover-propagate.rs similarity index 100% rename from src/test/ui/panics/panic-recover-propagate.rs rename to tests/ui/panics/panic-recover-propagate.rs diff --git a/src/test/ui/panics/panic-set-handler.rs b/tests/ui/panics/panic-set-handler.rs similarity index 100% rename from src/test/ui/panics/panic-set-handler.rs rename to tests/ui/panics/panic-set-handler.rs diff --git a/src/test/ui/panics/panic-set-unset-handler.rs b/tests/ui/panics/panic-set-unset-handler.rs similarity index 100% rename from src/test/ui/panics/panic-set-unset-handler.rs rename to tests/ui/panics/panic-set-unset-handler.rs diff --git a/src/test/ui/panics/panic-short-backtrace-windows-x86_64.rs b/tests/ui/panics/panic-short-backtrace-windows-x86_64.rs similarity index 100% rename from src/test/ui/panics/panic-short-backtrace-windows-x86_64.rs rename to tests/ui/panics/panic-short-backtrace-windows-x86_64.rs diff --git a/src/test/ui/panics/panic-short-backtrace-windows-x86_64.run.stderr b/tests/ui/panics/panic-short-backtrace-windows-x86_64.run.stderr similarity index 100% rename from src/test/ui/panics/panic-short-backtrace-windows-x86_64.run.stderr rename to tests/ui/panics/panic-short-backtrace-windows-x86_64.run.stderr diff --git a/src/test/ui/panics/panic-take-handler-nop.rs b/tests/ui/panics/panic-take-handler-nop.rs similarity index 100% rename from src/test/ui/panics/panic-take-handler-nop.rs rename to tests/ui/panics/panic-take-handler-nop.rs diff --git a/src/test/ui/panics/panic-task-name-none.rs b/tests/ui/panics/panic-task-name-none.rs similarity index 100% rename from src/test/ui/panics/panic-task-name-none.rs rename to tests/ui/panics/panic-task-name-none.rs diff --git a/src/test/ui/panics/panic-task-name-owned.rs b/tests/ui/panics/panic-task-name-owned.rs similarity index 100% rename from src/test/ui/panics/panic-task-name-owned.rs rename to tests/ui/panics/panic-task-name-owned.rs diff --git a/src/test/ui/panics/panic.rs b/tests/ui/panics/panic.rs similarity index 100% rename from src/test/ui/panics/panic.rs rename to tests/ui/panics/panic.rs diff --git a/src/test/ui/panics/result-get-panic.rs b/tests/ui/panics/result-get-panic.rs similarity index 100% rename from src/test/ui/panics/result-get-panic.rs rename to tests/ui/panics/result-get-panic.rs diff --git a/src/test/ui/panics/runtime-switch.legacy.run.stderr b/tests/ui/panics/runtime-switch.legacy.run.stderr similarity index 100% rename from src/test/ui/panics/runtime-switch.legacy.run.stderr rename to tests/ui/panics/runtime-switch.legacy.run.stderr diff --git a/src/test/ui/panics/runtime-switch.rs b/tests/ui/panics/runtime-switch.rs similarity index 100% rename from src/test/ui/panics/runtime-switch.rs rename to tests/ui/panics/runtime-switch.rs diff --git a/src/test/ui/panics/runtime-switch.v0.run.stderr b/tests/ui/panics/runtime-switch.v0.run.stderr similarity index 100% rename from src/test/ui/panics/runtime-switch.v0.run.stderr rename to tests/ui/panics/runtime-switch.v0.run.stderr diff --git a/src/test/ui/panics/test-panic.rs b/tests/ui/panics/test-panic.rs similarity index 100% rename from src/test/ui/panics/test-panic.rs rename to tests/ui/panics/test-panic.rs diff --git a/src/test/ui/panics/test-should-fail-bad-message.rs b/tests/ui/panics/test-should-fail-bad-message.rs similarity index 100% rename from src/test/ui/panics/test-should-fail-bad-message.rs rename to tests/ui/panics/test-should-fail-bad-message.rs diff --git a/src/test/ui/panics/test-should-panic-bad-message.rs b/tests/ui/panics/test-should-panic-bad-message.rs similarity index 100% rename from src/test/ui/panics/test-should-panic-bad-message.rs rename to tests/ui/panics/test-should-panic-bad-message.rs diff --git a/src/test/ui/panics/test-should-panic-no-message.rs b/tests/ui/panics/test-should-panic-no-message.rs similarity index 100% rename from src/test/ui/panics/test-should-panic-no-message.rs rename to tests/ui/panics/test-should-panic-no-message.rs diff --git a/src/test/ui/panics/unique-panic.rs b/tests/ui/panics/unique-panic.rs similarity index 100% rename from src/test/ui/panics/unique-panic.rs rename to tests/ui/panics/unique-panic.rs diff --git a/src/test/ui/panics/while-body-panics.rs b/tests/ui/panics/while-body-panics.rs similarity index 100% rename from src/test/ui/panics/while-body-panics.rs rename to tests/ui/panics/while-body-panics.rs diff --git a/src/test/ui/panics/while-panic.rs b/tests/ui/panics/while-panic.rs similarity index 100% rename from src/test/ui/panics/while-panic.rs rename to tests/ui/panics/while-panic.rs diff --git a/src/test/ui/paren-span.rs b/tests/ui/paren-span.rs similarity index 100% rename from src/test/ui/paren-span.rs rename to tests/ui/paren-span.rs diff --git a/src/test/ui/paren-span.stderr b/tests/ui/paren-span.stderr similarity index 100% rename from src/test/ui/paren-span.stderr rename to tests/ui/paren-span.stderr diff --git a/src/test/ui/parser/ascii-only-character-escape.rs b/tests/ui/parser/ascii-only-character-escape.rs similarity index 100% rename from src/test/ui/parser/ascii-only-character-escape.rs rename to tests/ui/parser/ascii-only-character-escape.rs diff --git a/src/test/ui/parser/ascii-only-character-escape.stderr b/tests/ui/parser/ascii-only-character-escape.stderr similarity index 100% rename from src/test/ui/parser/ascii-only-character-escape.stderr rename to tests/ui/parser/ascii-only-character-escape.stderr diff --git a/src/test/ui/parser/assoc-const-underscore-semantic-fail.rs b/tests/ui/parser/assoc-const-underscore-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/assoc-const-underscore-semantic-fail.rs rename to tests/ui/parser/assoc-const-underscore-semantic-fail.rs diff --git a/src/test/ui/parser/assoc-const-underscore-semantic-fail.stderr b/tests/ui/parser/assoc-const-underscore-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/assoc-const-underscore-semantic-fail.stderr rename to tests/ui/parser/assoc-const-underscore-semantic-fail.stderr diff --git a/src/test/ui/parser/assoc-const-underscore-syntactic-pass.rs b/tests/ui/parser/assoc-const-underscore-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/assoc-const-underscore-syntactic-pass.rs rename to tests/ui/parser/assoc-const-underscore-syntactic-pass.rs diff --git a/src/test/ui/parser/assoc-oddities-1.rs b/tests/ui/parser/assoc-oddities-1.rs similarity index 100% rename from src/test/ui/parser/assoc-oddities-1.rs rename to tests/ui/parser/assoc-oddities-1.rs diff --git a/src/test/ui/parser/assoc-oddities-1.stderr b/tests/ui/parser/assoc-oddities-1.stderr similarity index 100% rename from src/test/ui/parser/assoc-oddities-1.stderr rename to tests/ui/parser/assoc-oddities-1.stderr diff --git a/src/test/ui/parser/assoc-oddities-2.rs b/tests/ui/parser/assoc-oddities-2.rs similarity index 100% rename from src/test/ui/parser/assoc-oddities-2.rs rename to tests/ui/parser/assoc-oddities-2.rs diff --git a/src/test/ui/parser/assoc-oddities-2.stderr b/tests/ui/parser/assoc-oddities-2.stderr similarity index 100% rename from src/test/ui/parser/assoc-oddities-2.stderr rename to tests/ui/parser/assoc-oddities-2.stderr diff --git a/src/test/ui/parser/assoc-static-semantic-fail.rs b/tests/ui/parser/assoc-static-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/assoc-static-semantic-fail.rs rename to tests/ui/parser/assoc-static-semantic-fail.rs diff --git a/src/test/ui/parser/assoc-static-semantic-fail.stderr b/tests/ui/parser/assoc-static-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/assoc-static-semantic-fail.stderr rename to tests/ui/parser/assoc-static-semantic-fail.stderr diff --git a/src/test/ui/parser/assoc-static-syntactic-fail.rs b/tests/ui/parser/assoc-static-syntactic-fail.rs similarity index 100% rename from src/test/ui/parser/assoc-static-syntactic-fail.rs rename to tests/ui/parser/assoc-static-syntactic-fail.rs diff --git a/src/test/ui/parser/assoc-static-syntactic-fail.stderr b/tests/ui/parser/assoc-static-syntactic-fail.stderr similarity index 100% rename from src/test/ui/parser/assoc-static-syntactic-fail.stderr rename to tests/ui/parser/assoc-static-syntactic-fail.stderr diff --git a/src/test/ui/parser/assoc-type-in-type-arg.rs b/tests/ui/parser/assoc-type-in-type-arg.rs similarity index 100% rename from src/test/ui/parser/assoc-type-in-type-arg.rs rename to tests/ui/parser/assoc-type-in-type-arg.rs diff --git a/src/test/ui/parser/assoc-type-in-type-arg.stderr b/tests/ui/parser/assoc-type-in-type-arg.stderr similarity index 100% rename from src/test/ui/parser/assoc-type-in-type-arg.stderr rename to tests/ui/parser/assoc-type-in-type-arg.stderr diff --git a/src/test/ui/parser/associated-types-project-from-hrtb-explicit.rs b/tests/ui/parser/associated-types-project-from-hrtb-explicit.rs similarity index 100% rename from src/test/ui/parser/associated-types-project-from-hrtb-explicit.rs rename to tests/ui/parser/associated-types-project-from-hrtb-explicit.rs diff --git a/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr b/tests/ui/parser/associated-types-project-from-hrtb-explicit.stderr similarity index 100% rename from src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr rename to tests/ui/parser/associated-types-project-from-hrtb-explicit.stderr diff --git a/src/test/ui/parser/attr-bad-meta-2.rs b/tests/ui/parser/attr-bad-meta-2.rs similarity index 100% rename from src/test/ui/parser/attr-bad-meta-2.rs rename to tests/ui/parser/attr-bad-meta-2.rs diff --git a/src/test/ui/parser/attr-bad-meta-2.stderr b/tests/ui/parser/attr-bad-meta-2.stderr similarity index 100% rename from src/test/ui/parser/attr-bad-meta-2.stderr rename to tests/ui/parser/attr-bad-meta-2.stderr diff --git a/src/test/ui/parser/attr-bad-meta-3.rs b/tests/ui/parser/attr-bad-meta-3.rs similarity index 100% rename from src/test/ui/parser/attr-bad-meta-3.rs rename to tests/ui/parser/attr-bad-meta-3.rs diff --git a/src/test/ui/parser/attr-bad-meta-3.stderr b/tests/ui/parser/attr-bad-meta-3.stderr similarity index 100% rename from src/test/ui/parser/attr-bad-meta-3.stderr rename to tests/ui/parser/attr-bad-meta-3.stderr diff --git a/src/test/ui/parser/attr-bad-meta.rs b/tests/ui/parser/attr-bad-meta.rs similarity index 100% rename from src/test/ui/parser/attr-bad-meta.rs rename to tests/ui/parser/attr-bad-meta.rs diff --git a/src/test/ui/parser/attr-bad-meta.stderr b/tests/ui/parser/attr-bad-meta.stderr similarity index 100% rename from src/test/ui/parser/attr-bad-meta.stderr rename to tests/ui/parser/attr-bad-meta.stderr diff --git a/src/test/ui/parser/attr-before-eof.rs b/tests/ui/parser/attr-before-eof.rs similarity index 100% rename from src/test/ui/parser/attr-before-eof.rs rename to tests/ui/parser/attr-before-eof.rs diff --git a/src/test/ui/parser/attr-before-eof.stderr b/tests/ui/parser/attr-before-eof.stderr similarity index 100% rename from src/test/ui/parser/attr-before-eof.stderr rename to tests/ui/parser/attr-before-eof.stderr diff --git a/src/test/ui/parser/attr-dangling-in-fn.rs b/tests/ui/parser/attr-dangling-in-fn.rs similarity index 100% rename from src/test/ui/parser/attr-dangling-in-fn.rs rename to tests/ui/parser/attr-dangling-in-fn.rs diff --git a/src/test/ui/parser/attr-dangling-in-fn.stderr b/tests/ui/parser/attr-dangling-in-fn.stderr similarity index 100% rename from src/test/ui/parser/attr-dangling-in-fn.stderr rename to tests/ui/parser/attr-dangling-in-fn.stderr diff --git a/src/test/ui/parser/attr-dangling-in-mod.rs b/tests/ui/parser/attr-dangling-in-mod.rs similarity index 100% rename from src/test/ui/parser/attr-dangling-in-mod.rs rename to tests/ui/parser/attr-dangling-in-mod.rs diff --git a/src/test/ui/parser/attr-dangling-in-mod.stderr b/tests/ui/parser/attr-dangling-in-mod.stderr similarity index 100% rename from src/test/ui/parser/attr-dangling-in-mod.stderr rename to tests/ui/parser/attr-dangling-in-mod.stderr diff --git a/src/test/ui/parser/attr-stmt-expr-attr-bad.rs b/tests/ui/parser/attr-stmt-expr-attr-bad.rs similarity index 100% rename from src/test/ui/parser/attr-stmt-expr-attr-bad.rs rename to tests/ui/parser/attr-stmt-expr-attr-bad.rs diff --git a/src/test/ui/parser/attr-stmt-expr-attr-bad.stderr b/tests/ui/parser/attr-stmt-expr-attr-bad.stderr similarity index 100% rename from src/test/ui/parser/attr-stmt-expr-attr-bad.stderr rename to tests/ui/parser/attr-stmt-expr-attr-bad.stderr diff --git a/src/test/ui/parser/attr-with-a-semicolon.rs b/tests/ui/parser/attr-with-a-semicolon.rs similarity index 100% rename from src/test/ui/parser/attr-with-a-semicolon.rs rename to tests/ui/parser/attr-with-a-semicolon.rs diff --git a/src/test/ui/parser/attr-with-a-semicolon.stderr b/tests/ui/parser/attr-with-a-semicolon.stderr similarity index 100% rename from src/test/ui/parser/attr-with-a-semicolon.stderr rename to tests/ui/parser/attr-with-a-semicolon.stderr diff --git a/src/test/ui/parser/attr.rs b/tests/ui/parser/attr.rs similarity index 100% rename from src/test/ui/parser/attr.rs rename to tests/ui/parser/attr.rs diff --git a/src/test/ui/parser/attr.stderr b/tests/ui/parser/attr.stderr similarity index 100% rename from src/test/ui/parser/attr.stderr rename to tests/ui/parser/attr.stderr diff --git a/src/test/ui/parser/attribute-with-no-generics-in-parameter-list.rs b/tests/ui/parser/attribute-with-no-generics-in-parameter-list.rs similarity index 100% rename from src/test/ui/parser/attribute-with-no-generics-in-parameter-list.rs rename to tests/ui/parser/attribute-with-no-generics-in-parameter-list.rs diff --git a/src/test/ui/parser/attribute-with-no-generics-in-parameter-list.stderr b/tests/ui/parser/attribute-with-no-generics-in-parameter-list.stderr similarity index 100% rename from src/test/ui/parser/attribute-with-no-generics-in-parameter-list.stderr rename to tests/ui/parser/attribute-with-no-generics-in-parameter-list.stderr diff --git a/src/test/ui/parser/attrs-after-extern-mod.rs b/tests/ui/parser/attrs-after-extern-mod.rs similarity index 100% rename from src/test/ui/parser/attrs-after-extern-mod.rs rename to tests/ui/parser/attrs-after-extern-mod.rs diff --git a/src/test/ui/parser/attrs-after-extern-mod.stderr b/tests/ui/parser/attrs-after-extern-mod.stderr similarity index 100% rename from src/test/ui/parser/attrs-after-extern-mod.stderr rename to tests/ui/parser/attrs-after-extern-mod.stderr diff --git a/src/test/ui/parser/bad-char-literals.rs b/tests/ui/parser/bad-char-literals.rs similarity index 100% rename from src/test/ui/parser/bad-char-literals.rs rename to tests/ui/parser/bad-char-literals.rs diff --git a/src/test/ui/parser/bad-char-literals.stderr b/tests/ui/parser/bad-char-literals.stderr similarity index 100% rename from src/test/ui/parser/bad-char-literals.stderr rename to tests/ui/parser/bad-char-literals.stderr diff --git a/src/test/ui/parser/bad-crate-name.rs b/tests/ui/parser/bad-crate-name.rs similarity index 100% rename from src/test/ui/parser/bad-crate-name.rs rename to tests/ui/parser/bad-crate-name.rs diff --git a/src/test/ui/parser/bad-crate-name.stderr b/tests/ui/parser/bad-crate-name.stderr similarity index 100% rename from src/test/ui/parser/bad-crate-name.stderr rename to tests/ui/parser/bad-crate-name.stderr diff --git a/src/test/ui/parser/bad-escape-suggest-raw-string.rs b/tests/ui/parser/bad-escape-suggest-raw-string.rs similarity index 100% rename from src/test/ui/parser/bad-escape-suggest-raw-string.rs rename to tests/ui/parser/bad-escape-suggest-raw-string.rs diff --git a/src/test/ui/parser/bad-escape-suggest-raw-string.stderr b/tests/ui/parser/bad-escape-suggest-raw-string.stderr similarity index 100% rename from src/test/ui/parser/bad-escape-suggest-raw-string.stderr rename to tests/ui/parser/bad-escape-suggest-raw-string.stderr diff --git a/src/test/ui/parser/bad-fn-ptr-qualifier.fixed b/tests/ui/parser/bad-fn-ptr-qualifier.fixed similarity index 100% rename from src/test/ui/parser/bad-fn-ptr-qualifier.fixed rename to tests/ui/parser/bad-fn-ptr-qualifier.fixed diff --git a/src/test/ui/parser/bad-fn-ptr-qualifier.rs b/tests/ui/parser/bad-fn-ptr-qualifier.rs similarity index 100% rename from src/test/ui/parser/bad-fn-ptr-qualifier.rs rename to tests/ui/parser/bad-fn-ptr-qualifier.rs diff --git a/src/test/ui/parser/bad-fn-ptr-qualifier.stderr b/tests/ui/parser/bad-fn-ptr-qualifier.stderr similarity index 100% rename from src/test/ui/parser/bad-fn-ptr-qualifier.stderr rename to tests/ui/parser/bad-fn-ptr-qualifier.stderr diff --git a/src/test/ui/parser/bad-if-statements.rs b/tests/ui/parser/bad-if-statements.rs similarity index 100% rename from src/test/ui/parser/bad-if-statements.rs rename to tests/ui/parser/bad-if-statements.rs diff --git a/src/test/ui/parser/bad-if-statements.stderr b/tests/ui/parser/bad-if-statements.stderr similarity index 100% rename from src/test/ui/parser/bad-if-statements.stderr rename to tests/ui/parser/bad-if-statements.stderr diff --git a/src/test/ui/parser/bad-interpolated-block.rs b/tests/ui/parser/bad-interpolated-block.rs similarity index 100% rename from src/test/ui/parser/bad-interpolated-block.rs rename to tests/ui/parser/bad-interpolated-block.rs diff --git a/src/test/ui/parser/bad-interpolated-block.stderr b/tests/ui/parser/bad-interpolated-block.stderr similarity index 100% rename from src/test/ui/parser/bad-interpolated-block.stderr rename to tests/ui/parser/bad-interpolated-block.stderr diff --git a/src/test/ui/parser/bad-let-as-field.rs b/tests/ui/parser/bad-let-as-field.rs similarity index 100% rename from src/test/ui/parser/bad-let-as-field.rs rename to tests/ui/parser/bad-let-as-field.rs diff --git a/src/test/ui/parser/bad-let-as-field.stderr b/tests/ui/parser/bad-let-as-field.stderr similarity index 100% rename from src/test/ui/parser/bad-let-as-field.stderr rename to tests/ui/parser/bad-let-as-field.stderr diff --git a/src/test/ui/parser/bad-lit-suffixes.rs b/tests/ui/parser/bad-lit-suffixes.rs similarity index 100% rename from src/test/ui/parser/bad-lit-suffixes.rs rename to tests/ui/parser/bad-lit-suffixes.rs diff --git a/src/test/ui/parser/bad-lit-suffixes.stderr b/tests/ui/parser/bad-lit-suffixes.stderr similarity index 100% rename from src/test/ui/parser/bad-lit-suffixes.stderr rename to tests/ui/parser/bad-lit-suffixes.stderr diff --git a/src/test/ui/parser/bad-match.rs b/tests/ui/parser/bad-match.rs similarity index 100% rename from src/test/ui/parser/bad-match.rs rename to tests/ui/parser/bad-match.rs diff --git a/src/test/ui/parser/bad-match.stderr b/tests/ui/parser/bad-match.stderr similarity index 100% rename from src/test/ui/parser/bad-match.stderr rename to tests/ui/parser/bad-match.stderr diff --git a/src/test/ui/parser/bad-name.rs b/tests/ui/parser/bad-name.rs similarity index 100% rename from src/test/ui/parser/bad-name.rs rename to tests/ui/parser/bad-name.rs diff --git a/src/test/ui/parser/bad-name.stderr b/tests/ui/parser/bad-name.stderr similarity index 100% rename from src/test/ui/parser/bad-name.stderr rename to tests/ui/parser/bad-name.stderr diff --git a/src/test/ui/parser/bad-pointer-type.rs b/tests/ui/parser/bad-pointer-type.rs similarity index 100% rename from src/test/ui/parser/bad-pointer-type.rs rename to tests/ui/parser/bad-pointer-type.rs diff --git a/src/test/ui/parser/bad-pointer-type.stderr b/tests/ui/parser/bad-pointer-type.stderr similarity index 100% rename from src/test/ui/parser/bad-pointer-type.stderr rename to tests/ui/parser/bad-pointer-type.stderr diff --git a/src/test/ui/parser/bad-struct-following-where.rs b/tests/ui/parser/bad-struct-following-where.rs similarity index 100% rename from src/test/ui/parser/bad-struct-following-where.rs rename to tests/ui/parser/bad-struct-following-where.rs diff --git a/src/test/ui/parser/bad-struct-following-where.stderr b/tests/ui/parser/bad-struct-following-where.stderr similarity index 100% rename from src/test/ui/parser/bad-struct-following-where.stderr rename to tests/ui/parser/bad-struct-following-where.stderr diff --git a/src/test/ui/parser/bad-value-ident-false.rs b/tests/ui/parser/bad-value-ident-false.rs similarity index 100% rename from src/test/ui/parser/bad-value-ident-false.rs rename to tests/ui/parser/bad-value-ident-false.rs diff --git a/src/test/ui/parser/bad-value-ident-false.stderr b/tests/ui/parser/bad-value-ident-false.stderr similarity index 100% rename from src/test/ui/parser/bad-value-ident-false.stderr rename to tests/ui/parser/bad-value-ident-false.stderr diff --git a/src/test/ui/parser/bad-value-ident-true.rs b/tests/ui/parser/bad-value-ident-true.rs similarity index 100% rename from src/test/ui/parser/bad-value-ident-true.rs rename to tests/ui/parser/bad-value-ident-true.rs diff --git a/src/test/ui/parser/bad-value-ident-true.stderr b/tests/ui/parser/bad-value-ident-true.stderr similarity index 100% rename from src/test/ui/parser/bad-value-ident-true.stderr rename to tests/ui/parser/bad-value-ident-true.stderr diff --git a/src/test/ui/parser/bare-struct-body.rs b/tests/ui/parser/bare-struct-body.rs similarity index 100% rename from src/test/ui/parser/bare-struct-body.rs rename to tests/ui/parser/bare-struct-body.rs diff --git a/src/test/ui/parser/bare-struct-body.stderr b/tests/ui/parser/bare-struct-body.stderr similarity index 100% rename from src/test/ui/parser/bare-struct-body.stderr rename to tests/ui/parser/bare-struct-body.stderr diff --git a/src/test/ui/parser/bastion-of-the-turbofish.rs b/tests/ui/parser/bastion-of-the-turbofish.rs similarity index 100% rename from src/test/ui/parser/bastion-of-the-turbofish.rs rename to tests/ui/parser/bastion-of-the-turbofish.rs diff --git a/src/test/ui/parser/better-expected.rs b/tests/ui/parser/better-expected.rs similarity index 100% rename from src/test/ui/parser/better-expected.rs rename to tests/ui/parser/better-expected.rs diff --git a/src/test/ui/parser/better-expected.stderr b/tests/ui/parser/better-expected.stderr similarity index 100% rename from src/test/ui/parser/better-expected.stderr rename to tests/ui/parser/better-expected.stderr diff --git a/src/test/ui/parser/bind-struct-early-modifiers.rs b/tests/ui/parser/bind-struct-early-modifiers.rs similarity index 100% rename from src/test/ui/parser/bind-struct-early-modifiers.rs rename to tests/ui/parser/bind-struct-early-modifiers.rs diff --git a/src/test/ui/parser/bind-struct-early-modifiers.stderr b/tests/ui/parser/bind-struct-early-modifiers.stderr similarity index 100% rename from src/test/ui/parser/bind-struct-early-modifiers.stderr rename to tests/ui/parser/bind-struct-early-modifiers.stderr diff --git a/src/test/ui/parser/block-no-opening-brace.rs b/tests/ui/parser/block-no-opening-brace.rs similarity index 100% rename from src/test/ui/parser/block-no-opening-brace.rs rename to tests/ui/parser/block-no-opening-brace.rs diff --git a/src/test/ui/parser/block-no-opening-brace.stderr b/tests/ui/parser/block-no-opening-brace.stderr similarity index 100% rename from src/test/ui/parser/block-no-opening-brace.stderr rename to tests/ui/parser/block-no-opening-brace.stderr diff --git a/src/test/ui/parser/bound-single-question-mark.rs b/tests/ui/parser/bound-single-question-mark.rs similarity index 100% rename from src/test/ui/parser/bound-single-question-mark.rs rename to tests/ui/parser/bound-single-question-mark.rs diff --git a/src/test/ui/parser/bound-single-question-mark.stderr b/tests/ui/parser/bound-single-question-mark.stderr similarity index 100% rename from src/test/ui/parser/bound-single-question-mark.stderr rename to tests/ui/parser/bound-single-question-mark.stderr diff --git a/src/test/ui/parser/bounds-lifetime-1.rs b/tests/ui/parser/bounds-lifetime-1.rs similarity index 100% rename from src/test/ui/parser/bounds-lifetime-1.rs rename to tests/ui/parser/bounds-lifetime-1.rs diff --git a/src/test/ui/parser/bounds-lifetime-1.stderr b/tests/ui/parser/bounds-lifetime-1.stderr similarity index 100% rename from src/test/ui/parser/bounds-lifetime-1.stderr rename to tests/ui/parser/bounds-lifetime-1.stderr diff --git a/src/test/ui/parser/bounds-lifetime-2.rs b/tests/ui/parser/bounds-lifetime-2.rs similarity index 100% rename from src/test/ui/parser/bounds-lifetime-2.rs rename to tests/ui/parser/bounds-lifetime-2.rs diff --git a/src/test/ui/parser/bounds-lifetime-2.stderr b/tests/ui/parser/bounds-lifetime-2.stderr similarity index 100% rename from src/test/ui/parser/bounds-lifetime-2.stderr rename to tests/ui/parser/bounds-lifetime-2.stderr diff --git a/src/test/ui/parser/bounds-lifetime-where-1.rs b/tests/ui/parser/bounds-lifetime-where-1.rs similarity index 100% rename from src/test/ui/parser/bounds-lifetime-where-1.rs rename to tests/ui/parser/bounds-lifetime-where-1.rs diff --git a/src/test/ui/parser/bounds-lifetime-where-1.stderr b/tests/ui/parser/bounds-lifetime-where-1.stderr similarity index 100% rename from src/test/ui/parser/bounds-lifetime-where-1.stderr rename to tests/ui/parser/bounds-lifetime-where-1.stderr diff --git a/src/test/ui/parser/bounds-lifetime-where.rs b/tests/ui/parser/bounds-lifetime-where.rs similarity index 100% rename from src/test/ui/parser/bounds-lifetime-where.rs rename to tests/ui/parser/bounds-lifetime-where.rs diff --git a/src/test/ui/parser/bounds-lifetime-where.stderr b/tests/ui/parser/bounds-lifetime-where.stderr similarity index 100% rename from src/test/ui/parser/bounds-lifetime-where.stderr rename to tests/ui/parser/bounds-lifetime-where.stderr diff --git a/src/test/ui/parser/bounds-lifetime.rs b/tests/ui/parser/bounds-lifetime.rs similarity index 100% rename from src/test/ui/parser/bounds-lifetime.rs rename to tests/ui/parser/bounds-lifetime.rs diff --git a/src/test/ui/parser/bounds-lifetime.stderr b/tests/ui/parser/bounds-lifetime.stderr similarity index 100% rename from src/test/ui/parser/bounds-lifetime.stderr rename to tests/ui/parser/bounds-lifetime.stderr diff --git a/src/test/ui/parser/bounds-obj-parens.rs b/tests/ui/parser/bounds-obj-parens.rs similarity index 100% rename from src/test/ui/parser/bounds-obj-parens.rs rename to tests/ui/parser/bounds-obj-parens.rs diff --git a/src/test/ui/parser/bounds-type-where.rs b/tests/ui/parser/bounds-type-where.rs similarity index 100% rename from src/test/ui/parser/bounds-type-where.rs rename to tests/ui/parser/bounds-type-where.rs diff --git a/src/test/ui/parser/bounds-type-where.stderr b/tests/ui/parser/bounds-type-where.stderr similarity index 100% rename from src/test/ui/parser/bounds-type-where.stderr rename to tests/ui/parser/bounds-type-where.stderr diff --git a/src/test/ui/parser/bounds-type.rs b/tests/ui/parser/bounds-type.rs similarity index 100% rename from src/test/ui/parser/bounds-type.rs rename to tests/ui/parser/bounds-type.rs diff --git a/src/test/ui/parser/bounds-type.stderr b/tests/ui/parser/bounds-type.stderr similarity index 100% rename from src/test/ui/parser/bounds-type.stderr rename to tests/ui/parser/bounds-type.stderr diff --git a/src/test/ui/parser/byte-literals.rs b/tests/ui/parser/byte-literals.rs similarity index 100% rename from src/test/ui/parser/byte-literals.rs rename to tests/ui/parser/byte-literals.rs diff --git a/src/test/ui/parser/byte-literals.stderr b/tests/ui/parser/byte-literals.stderr similarity index 100% rename from src/test/ui/parser/byte-literals.stderr rename to tests/ui/parser/byte-literals.stderr diff --git a/src/test/ui/parser/byte-string-literals.rs b/tests/ui/parser/byte-string-literals.rs similarity index 100% rename from src/test/ui/parser/byte-string-literals.rs rename to tests/ui/parser/byte-string-literals.rs diff --git a/src/test/ui/parser/byte-string-literals.stderr b/tests/ui/parser/byte-string-literals.stderr similarity index 100% rename from src/test/ui/parser/byte-string-literals.stderr rename to tests/ui/parser/byte-string-literals.stderr diff --git a/src/test/ui/parser/can-begin-expr-check.rs b/tests/ui/parser/can-begin-expr-check.rs similarity index 100% rename from src/test/ui/parser/can-begin-expr-check.rs rename to tests/ui/parser/can-begin-expr-check.rs diff --git a/src/test/ui/parser/can-begin-expr-check.stderr b/tests/ui/parser/can-begin-expr-check.stderr similarity index 100% rename from src/test/ui/parser/can-begin-expr-check.stderr rename to tests/ui/parser/can-begin-expr-check.stderr diff --git a/src/test/ui/parser/chained-comparison-suggestion.rs b/tests/ui/parser/chained-comparison-suggestion.rs similarity index 100% rename from src/test/ui/parser/chained-comparison-suggestion.rs rename to tests/ui/parser/chained-comparison-suggestion.rs diff --git a/src/test/ui/parser/chained-comparison-suggestion.stderr b/tests/ui/parser/chained-comparison-suggestion.stderr similarity index 100% rename from src/test/ui/parser/chained-comparison-suggestion.stderr rename to tests/ui/parser/chained-comparison-suggestion.stderr diff --git a/src/test/ui/parser/char/whitespace-character-literal.rs b/tests/ui/parser/char/whitespace-character-literal.rs similarity index 100% rename from src/test/ui/parser/char/whitespace-character-literal.rs rename to tests/ui/parser/char/whitespace-character-literal.rs diff --git a/src/test/ui/parser/char/whitespace-character-literal.stderr b/tests/ui/parser/char/whitespace-character-literal.stderr similarity index 100% rename from src/test/ui/parser/char/whitespace-character-literal.stderr rename to tests/ui/parser/char/whitespace-character-literal.stderr diff --git a/src/test/ui/parser/circular_modules_hello.rs b/tests/ui/parser/circular_modules_hello.rs similarity index 100% rename from src/test/ui/parser/circular_modules_hello.rs rename to tests/ui/parser/circular_modules_hello.rs diff --git a/src/test/ui/parser/circular_modules_main.rs b/tests/ui/parser/circular_modules_main.rs similarity index 100% rename from src/test/ui/parser/circular_modules_main.rs rename to tests/ui/parser/circular_modules_main.rs diff --git a/src/test/ui/parser/circular_modules_main.stderr b/tests/ui/parser/circular_modules_main.stderr similarity index 100% rename from src/test/ui/parser/circular_modules_main.stderr rename to tests/ui/parser/circular_modules_main.stderr diff --git a/src/test/ui/parser/class-implements-bad-trait.rs b/tests/ui/parser/class-implements-bad-trait.rs similarity index 100% rename from src/test/ui/parser/class-implements-bad-trait.rs rename to tests/ui/parser/class-implements-bad-trait.rs diff --git a/src/test/ui/parser/class-implements-bad-trait.stderr b/tests/ui/parser/class-implements-bad-trait.stderr similarity index 100% rename from src/test/ui/parser/class-implements-bad-trait.stderr rename to tests/ui/parser/class-implements-bad-trait.stderr diff --git a/src/test/ui/parser/closure-return-syntax.rs b/tests/ui/parser/closure-return-syntax.rs similarity index 100% rename from src/test/ui/parser/closure-return-syntax.rs rename to tests/ui/parser/closure-return-syntax.rs diff --git a/src/test/ui/parser/closure-return-syntax.stderr b/tests/ui/parser/closure-return-syntax.stderr similarity index 100% rename from src/test/ui/parser/closure-return-syntax.stderr rename to tests/ui/parser/closure-return-syntax.stderr diff --git a/src/test/ui/parser/column-offset-1-based.rs b/tests/ui/parser/column-offset-1-based.rs similarity index 100% rename from src/test/ui/parser/column-offset-1-based.rs rename to tests/ui/parser/column-offset-1-based.rs diff --git a/src/test/ui/parser/column-offset-1-based.stderr b/tests/ui/parser/column-offset-1-based.stderr similarity index 100% rename from src/test/ui/parser/column-offset-1-based.stderr rename to tests/ui/parser/column-offset-1-based.stderr diff --git a/src/test/ui/parser/const-param-decl-on-type-instead-of-impl.rs b/tests/ui/parser/const-param-decl-on-type-instead-of-impl.rs similarity index 100% rename from src/test/ui/parser/const-param-decl-on-type-instead-of-impl.rs rename to tests/ui/parser/const-param-decl-on-type-instead-of-impl.rs diff --git a/src/test/ui/parser/const-param-decl-on-type-instead-of-impl.stderr b/tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr similarity index 100% rename from src/test/ui/parser/const-param-decl-on-type-instead-of-impl.stderr rename to tests/ui/parser/const-param-decl-on-type-instead-of-impl.stderr diff --git a/src/test/ui/parser/constraints-before-generic-args-syntactic-pass.rs b/tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/constraints-before-generic-args-syntactic-pass.rs rename to tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs diff --git a/src/test/ui/parser/constraints-before-generic-args-syntactic-pass.stderr b/tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr similarity index 100% rename from src/test/ui/parser/constraints-before-generic-args-syntactic-pass.stderr rename to tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr diff --git a/src/test/ui/parser/default-on-wrong-item-kind.rs b/tests/ui/parser/default-on-wrong-item-kind.rs similarity index 100% rename from src/test/ui/parser/default-on-wrong-item-kind.rs rename to tests/ui/parser/default-on-wrong-item-kind.rs diff --git a/src/test/ui/parser/default-on-wrong-item-kind.stderr b/tests/ui/parser/default-on-wrong-item-kind.stderr similarity index 100% rename from src/test/ui/parser/default-on-wrong-item-kind.stderr rename to tests/ui/parser/default-on-wrong-item-kind.stderr diff --git a/src/test/ui/parser/default-unmatched-assoc.rs b/tests/ui/parser/default-unmatched-assoc.rs similarity index 100% rename from src/test/ui/parser/default-unmatched-assoc.rs rename to tests/ui/parser/default-unmatched-assoc.rs diff --git a/src/test/ui/parser/default-unmatched-assoc.stderr b/tests/ui/parser/default-unmatched-assoc.stderr similarity index 100% rename from src/test/ui/parser/default-unmatched-assoc.stderr rename to tests/ui/parser/default-unmatched-assoc.stderr diff --git a/src/test/ui/parser/default-unmatched-extern.rs b/tests/ui/parser/default-unmatched-extern.rs similarity index 100% rename from src/test/ui/parser/default-unmatched-extern.rs rename to tests/ui/parser/default-unmatched-extern.rs diff --git a/src/test/ui/parser/default-unmatched-extern.stderr b/tests/ui/parser/default-unmatched-extern.stderr similarity index 100% rename from src/test/ui/parser/default-unmatched-extern.stderr rename to tests/ui/parser/default-unmatched-extern.stderr diff --git a/src/test/ui/parser/default-unmatched.rs b/tests/ui/parser/default-unmatched.rs similarity index 100% rename from src/test/ui/parser/default-unmatched.rs rename to tests/ui/parser/default-unmatched.rs diff --git a/src/test/ui/parser/default-unmatched.stderr b/tests/ui/parser/default-unmatched.stderr similarity index 100% rename from src/test/ui/parser/default-unmatched.stderr rename to tests/ui/parser/default-unmatched.stderr diff --git a/src/test/ui/parser/default.rs b/tests/ui/parser/default.rs similarity index 100% rename from src/test/ui/parser/default.rs rename to tests/ui/parser/default.rs diff --git a/src/test/ui/parser/default.stderr b/tests/ui/parser/default.stderr similarity index 100% rename from src/test/ui/parser/default.stderr rename to tests/ui/parser/default.stderr diff --git a/src/test/ui/parser/diff-markers/enum-2.rs b/tests/ui/parser/diff-markers/enum-2.rs similarity index 100% rename from src/test/ui/parser/diff-markers/enum-2.rs rename to tests/ui/parser/diff-markers/enum-2.rs diff --git a/src/test/ui/parser/diff-markers/enum-2.stderr b/tests/ui/parser/diff-markers/enum-2.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/enum-2.stderr rename to tests/ui/parser/diff-markers/enum-2.stderr diff --git a/src/test/ui/parser/diff-markers/enum.rs b/tests/ui/parser/diff-markers/enum.rs similarity index 100% rename from src/test/ui/parser/diff-markers/enum.rs rename to tests/ui/parser/diff-markers/enum.rs diff --git a/src/test/ui/parser/diff-markers/enum.stderr b/tests/ui/parser/diff-markers/enum.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/enum.stderr rename to tests/ui/parser/diff-markers/enum.stderr diff --git a/src/test/ui/parser/diff-markers/fn-arg.rs b/tests/ui/parser/diff-markers/fn-arg.rs similarity index 100% rename from src/test/ui/parser/diff-markers/fn-arg.rs rename to tests/ui/parser/diff-markers/fn-arg.rs diff --git a/src/test/ui/parser/diff-markers/fn-arg.stderr b/tests/ui/parser/diff-markers/fn-arg.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/fn-arg.stderr rename to tests/ui/parser/diff-markers/fn-arg.stderr diff --git a/src/test/ui/parser/diff-markers/item-with-attr.rs b/tests/ui/parser/diff-markers/item-with-attr.rs similarity index 100% rename from src/test/ui/parser/diff-markers/item-with-attr.rs rename to tests/ui/parser/diff-markers/item-with-attr.rs diff --git a/src/test/ui/parser/diff-markers/item-with-attr.stderr b/tests/ui/parser/diff-markers/item-with-attr.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/item-with-attr.stderr rename to tests/ui/parser/diff-markers/item-with-attr.stderr diff --git a/src/test/ui/parser/diff-markers/item.rs b/tests/ui/parser/diff-markers/item.rs similarity index 100% rename from src/test/ui/parser/diff-markers/item.rs rename to tests/ui/parser/diff-markers/item.rs diff --git a/src/test/ui/parser/diff-markers/item.stderr b/tests/ui/parser/diff-markers/item.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/item.stderr rename to tests/ui/parser/diff-markers/item.stderr diff --git a/src/test/ui/parser/diff-markers/statement.rs b/tests/ui/parser/diff-markers/statement.rs similarity index 100% rename from src/test/ui/parser/diff-markers/statement.rs rename to tests/ui/parser/diff-markers/statement.rs diff --git a/src/test/ui/parser/diff-markers/statement.stderr b/tests/ui/parser/diff-markers/statement.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/statement.stderr rename to tests/ui/parser/diff-markers/statement.stderr diff --git a/src/test/ui/parser/diff-markers/struct-expr.rs b/tests/ui/parser/diff-markers/struct-expr.rs similarity index 100% rename from src/test/ui/parser/diff-markers/struct-expr.rs rename to tests/ui/parser/diff-markers/struct-expr.rs diff --git a/src/test/ui/parser/diff-markers/struct-expr.stderr b/tests/ui/parser/diff-markers/struct-expr.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/struct-expr.stderr rename to tests/ui/parser/diff-markers/struct-expr.stderr diff --git a/src/test/ui/parser/diff-markers/struct.rs b/tests/ui/parser/diff-markers/struct.rs similarity index 100% rename from src/test/ui/parser/diff-markers/struct.rs rename to tests/ui/parser/diff-markers/struct.rs diff --git a/src/test/ui/parser/diff-markers/struct.stderr b/tests/ui/parser/diff-markers/struct.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/struct.stderr rename to tests/ui/parser/diff-markers/struct.stderr diff --git a/src/test/ui/parser/diff-markers/trait-item.rs b/tests/ui/parser/diff-markers/trait-item.rs similarity index 100% rename from src/test/ui/parser/diff-markers/trait-item.rs rename to tests/ui/parser/diff-markers/trait-item.rs diff --git a/src/test/ui/parser/diff-markers/trait-item.stderr b/tests/ui/parser/diff-markers/trait-item.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/trait-item.stderr rename to tests/ui/parser/diff-markers/trait-item.stderr diff --git a/src/test/ui/parser/diff-markers/tuple-struct.rs b/tests/ui/parser/diff-markers/tuple-struct.rs similarity index 100% rename from src/test/ui/parser/diff-markers/tuple-struct.rs rename to tests/ui/parser/diff-markers/tuple-struct.rs diff --git a/src/test/ui/parser/diff-markers/tuple-struct.stderr b/tests/ui/parser/diff-markers/tuple-struct.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/tuple-struct.stderr rename to tests/ui/parser/diff-markers/tuple-struct.stderr diff --git a/src/test/ui/parser/diff-markers/use-statement.rs b/tests/ui/parser/diff-markers/use-statement.rs similarity index 100% rename from src/test/ui/parser/diff-markers/use-statement.rs rename to tests/ui/parser/diff-markers/use-statement.rs diff --git a/src/test/ui/parser/diff-markers/use-statement.stderr b/tests/ui/parser/diff-markers/use-statement.stderr similarity index 100% rename from src/test/ui/parser/diff-markers/use-statement.stderr rename to tests/ui/parser/diff-markers/use-statement.stderr diff --git a/src/test/ui/parser/do-catch-suggests-try.rs b/tests/ui/parser/do-catch-suggests-try.rs similarity index 100% rename from src/test/ui/parser/do-catch-suggests-try.rs rename to tests/ui/parser/do-catch-suggests-try.rs diff --git a/src/test/ui/parser/do-catch-suggests-try.stderr b/tests/ui/parser/do-catch-suggests-try.stderr similarity index 100% rename from src/test/ui/parser/do-catch-suggests-try.stderr rename to tests/ui/parser/do-catch-suggests-try.stderr diff --git a/src/test/ui/parser/do-not-suggest-semicolon-before-array.rs b/tests/ui/parser/do-not-suggest-semicolon-before-array.rs similarity index 100% rename from src/test/ui/parser/do-not-suggest-semicolon-before-array.rs rename to tests/ui/parser/do-not-suggest-semicolon-before-array.rs diff --git a/src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr b/tests/ui/parser/do-not-suggest-semicolon-before-array.stderr similarity index 100% rename from src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr rename to tests/ui/parser/do-not-suggest-semicolon-before-array.stderr diff --git a/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs b/tests/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs similarity index 100% rename from src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs rename to tests/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs diff --git a/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr b/tests/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr similarity index 100% rename from src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr rename to tests/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr diff --git a/src/test/ui/parser/doc-after-struct-field.rs b/tests/ui/parser/doc-after-struct-field.rs similarity index 100% rename from src/test/ui/parser/doc-after-struct-field.rs rename to tests/ui/parser/doc-after-struct-field.rs diff --git a/src/test/ui/parser/doc-after-struct-field.stderr b/tests/ui/parser/doc-after-struct-field.stderr similarity index 100% rename from src/test/ui/parser/doc-after-struct-field.stderr rename to tests/ui/parser/doc-after-struct-field.stderr diff --git a/src/test/ui/parser/doc-before-attr.rs b/tests/ui/parser/doc-before-attr.rs similarity index 100% rename from src/test/ui/parser/doc-before-attr.rs rename to tests/ui/parser/doc-before-attr.rs diff --git a/src/test/ui/parser/doc-before-attr.stderr b/tests/ui/parser/doc-before-attr.stderr similarity index 100% rename from src/test/ui/parser/doc-before-attr.stderr rename to tests/ui/parser/doc-before-attr.stderr diff --git a/src/test/ui/parser/doc-before-eof.rs b/tests/ui/parser/doc-before-eof.rs similarity index 100% rename from src/test/ui/parser/doc-before-eof.rs rename to tests/ui/parser/doc-before-eof.rs diff --git a/src/test/ui/parser/doc-before-eof.stderr b/tests/ui/parser/doc-before-eof.stderr similarity index 100% rename from src/test/ui/parser/doc-before-eof.stderr rename to tests/ui/parser/doc-before-eof.stderr diff --git a/src/test/ui/parser/doc-before-extern-rbrace.rs b/tests/ui/parser/doc-before-extern-rbrace.rs similarity index 100% rename from src/test/ui/parser/doc-before-extern-rbrace.rs rename to tests/ui/parser/doc-before-extern-rbrace.rs diff --git a/src/test/ui/parser/doc-before-extern-rbrace.stderr b/tests/ui/parser/doc-before-extern-rbrace.stderr similarity index 100% rename from src/test/ui/parser/doc-before-extern-rbrace.stderr rename to tests/ui/parser/doc-before-extern-rbrace.stderr diff --git a/src/test/ui/parser/doc-before-fn-rbrace.rs b/tests/ui/parser/doc-before-fn-rbrace.rs similarity index 100% rename from src/test/ui/parser/doc-before-fn-rbrace.rs rename to tests/ui/parser/doc-before-fn-rbrace.rs diff --git a/src/test/ui/parser/doc-before-fn-rbrace.stderr b/tests/ui/parser/doc-before-fn-rbrace.stderr similarity index 100% rename from src/test/ui/parser/doc-before-fn-rbrace.stderr rename to tests/ui/parser/doc-before-fn-rbrace.stderr diff --git a/src/test/ui/parser/doc-before-identifier.rs b/tests/ui/parser/doc-before-identifier.rs similarity index 100% rename from src/test/ui/parser/doc-before-identifier.rs rename to tests/ui/parser/doc-before-identifier.rs diff --git a/src/test/ui/parser/doc-before-identifier.stderr b/tests/ui/parser/doc-before-identifier.stderr similarity index 100% rename from src/test/ui/parser/doc-before-identifier.stderr rename to tests/ui/parser/doc-before-identifier.stderr diff --git a/src/test/ui/parser/doc-before-mod-rbrace.rs b/tests/ui/parser/doc-before-mod-rbrace.rs similarity index 100% rename from src/test/ui/parser/doc-before-mod-rbrace.rs rename to tests/ui/parser/doc-before-mod-rbrace.rs diff --git a/src/test/ui/parser/doc-before-mod-rbrace.stderr b/tests/ui/parser/doc-before-mod-rbrace.stderr similarity index 100% rename from src/test/ui/parser/doc-before-mod-rbrace.stderr rename to tests/ui/parser/doc-before-mod-rbrace.stderr diff --git a/src/test/ui/parser/doc-before-rbrace.rs b/tests/ui/parser/doc-before-rbrace.rs similarity index 100% rename from src/test/ui/parser/doc-before-rbrace.rs rename to tests/ui/parser/doc-before-rbrace.rs diff --git a/src/test/ui/parser/doc-before-rbrace.stderr b/tests/ui/parser/doc-before-rbrace.stderr similarity index 100% rename from src/test/ui/parser/doc-before-rbrace.stderr rename to tests/ui/parser/doc-before-rbrace.stderr diff --git a/src/test/ui/parser/doc-before-semi.rs b/tests/ui/parser/doc-before-semi.rs similarity index 100% rename from src/test/ui/parser/doc-before-semi.rs rename to tests/ui/parser/doc-before-semi.rs diff --git a/src/test/ui/parser/doc-before-semi.stderr b/tests/ui/parser/doc-before-semi.stderr similarity index 100% rename from src/test/ui/parser/doc-before-semi.stderr rename to tests/ui/parser/doc-before-semi.stderr diff --git a/src/test/ui/parser/doc-before-struct-rbrace-1.rs b/tests/ui/parser/doc-before-struct-rbrace-1.rs similarity index 100% rename from src/test/ui/parser/doc-before-struct-rbrace-1.rs rename to tests/ui/parser/doc-before-struct-rbrace-1.rs diff --git a/src/test/ui/parser/doc-before-struct-rbrace-1.stderr b/tests/ui/parser/doc-before-struct-rbrace-1.stderr similarity index 100% rename from src/test/ui/parser/doc-before-struct-rbrace-1.stderr rename to tests/ui/parser/doc-before-struct-rbrace-1.stderr diff --git a/src/test/ui/parser/doc-before-struct-rbrace-2.rs b/tests/ui/parser/doc-before-struct-rbrace-2.rs similarity index 100% rename from src/test/ui/parser/doc-before-struct-rbrace-2.rs rename to tests/ui/parser/doc-before-struct-rbrace-2.rs diff --git a/src/test/ui/parser/doc-before-struct-rbrace-2.stderr b/tests/ui/parser/doc-before-struct-rbrace-2.stderr similarity index 100% rename from src/test/ui/parser/doc-before-struct-rbrace-2.stderr rename to tests/ui/parser/doc-before-struct-rbrace-2.stderr diff --git a/src/test/ui/parser/doc-comment-in-if-statement.rs b/tests/ui/parser/doc-comment-in-if-statement.rs similarity index 100% rename from src/test/ui/parser/doc-comment-in-if-statement.rs rename to tests/ui/parser/doc-comment-in-if-statement.rs diff --git a/src/test/ui/parser/doc-comment-in-if-statement.stderr b/tests/ui/parser/doc-comment-in-if-statement.stderr similarity index 100% rename from src/test/ui/parser/doc-comment-in-if-statement.stderr rename to tests/ui/parser/doc-comment-in-if-statement.stderr diff --git a/src/test/ui/parser/doc-comment-in-stmt.rs b/tests/ui/parser/doc-comment-in-stmt.rs similarity index 100% rename from src/test/ui/parser/doc-comment-in-stmt.rs rename to tests/ui/parser/doc-comment-in-stmt.rs diff --git a/src/test/ui/parser/doc-comment-in-stmt.stderr b/tests/ui/parser/doc-comment-in-stmt.stderr similarity index 100% rename from src/test/ui/parser/doc-comment-in-stmt.stderr rename to tests/ui/parser/doc-comment-in-stmt.stderr diff --git a/src/test/ui/parser/doc-inside-trait-item.rs b/tests/ui/parser/doc-inside-trait-item.rs similarity index 100% rename from src/test/ui/parser/doc-inside-trait-item.rs rename to tests/ui/parser/doc-inside-trait-item.rs diff --git a/src/test/ui/parser/doc-inside-trait-item.stderr b/tests/ui/parser/doc-inside-trait-item.stderr similarity index 100% rename from src/test/ui/parser/doc-inside-trait-item.stderr rename to tests/ui/parser/doc-inside-trait-item.stderr diff --git a/src/test/ui/parser/dotdotdot-expr.rs b/tests/ui/parser/dotdotdot-expr.rs similarity index 100% rename from src/test/ui/parser/dotdotdot-expr.rs rename to tests/ui/parser/dotdotdot-expr.rs diff --git a/src/test/ui/parser/dotdotdot-expr.stderr b/tests/ui/parser/dotdotdot-expr.stderr similarity index 100% rename from src/test/ui/parser/dotdotdot-expr.stderr rename to tests/ui/parser/dotdotdot-expr.stderr diff --git a/src/test/ui/parser/double-pointer.rs b/tests/ui/parser/double-pointer.rs similarity index 100% rename from src/test/ui/parser/double-pointer.rs rename to tests/ui/parser/double-pointer.rs diff --git a/src/test/ui/parser/double-pointer.stderr b/tests/ui/parser/double-pointer.stderr similarity index 100% rename from src/test/ui/parser/double-pointer.stderr rename to tests/ui/parser/double-pointer.stderr diff --git a/src/test/ui/parser/duplicate-visibility.rs b/tests/ui/parser/duplicate-visibility.rs similarity index 100% rename from src/test/ui/parser/duplicate-visibility.rs rename to tests/ui/parser/duplicate-visibility.rs diff --git a/src/test/ui/parser/duplicate-visibility.stderr b/tests/ui/parser/duplicate-visibility.stderr similarity index 100% rename from src/test/ui/parser/duplicate-visibility.stderr rename to tests/ui/parser/duplicate-visibility.stderr diff --git a/src/test/ui/parser/duplicate-where-clauses.rs b/tests/ui/parser/duplicate-where-clauses.rs similarity index 100% rename from src/test/ui/parser/duplicate-where-clauses.rs rename to tests/ui/parser/duplicate-where-clauses.rs diff --git a/src/test/ui/parser/duplicate-where-clauses.stderr b/tests/ui/parser/duplicate-where-clauses.stderr similarity index 100% rename from src/test/ui/parser/duplicate-where-clauses.stderr rename to tests/ui/parser/duplicate-where-clauses.stderr diff --git a/src/test/ui/parser/dyn-trait-compatibility.rs b/tests/ui/parser/dyn-trait-compatibility.rs similarity index 100% rename from src/test/ui/parser/dyn-trait-compatibility.rs rename to tests/ui/parser/dyn-trait-compatibility.rs diff --git a/src/test/ui/parser/dyn-trait-compatibility.stderr b/tests/ui/parser/dyn-trait-compatibility.stderr similarity index 100% rename from src/test/ui/parser/dyn-trait-compatibility.stderr rename to tests/ui/parser/dyn-trait-compatibility.stderr diff --git a/src/test/ui/parser/else-no-if.rs b/tests/ui/parser/else-no-if.rs similarity index 100% rename from src/test/ui/parser/else-no-if.rs rename to tests/ui/parser/else-no-if.rs diff --git a/src/test/ui/parser/else-no-if.stderr b/tests/ui/parser/else-no-if.stderr similarity index 100% rename from src/test/ui/parser/else-no-if.stderr rename to tests/ui/parser/else-no-if.stderr diff --git a/src/test/ui/parser/emoji-identifiers.rs b/tests/ui/parser/emoji-identifiers.rs similarity index 100% rename from src/test/ui/parser/emoji-identifiers.rs rename to tests/ui/parser/emoji-identifiers.rs diff --git a/src/test/ui/parser/emoji-identifiers.stderr b/tests/ui/parser/emoji-identifiers.stderr similarity index 100% rename from src/test/ui/parser/emoji-identifiers.stderr rename to tests/ui/parser/emoji-identifiers.stderr diff --git a/src/test/ui/parser/empty-impl-semicolon.rs b/tests/ui/parser/empty-impl-semicolon.rs similarity index 100% rename from src/test/ui/parser/empty-impl-semicolon.rs rename to tests/ui/parser/empty-impl-semicolon.rs diff --git a/src/test/ui/parser/empty-impl-semicolon.stderr b/tests/ui/parser/empty-impl-semicolon.stderr similarity index 100% rename from src/test/ui/parser/empty-impl-semicolon.stderr rename to tests/ui/parser/empty-impl-semicolon.stderr diff --git a/src/test/ui/parser/expr-as-stmt-2.rs b/tests/ui/parser/expr-as-stmt-2.rs similarity index 100% rename from src/test/ui/parser/expr-as-stmt-2.rs rename to tests/ui/parser/expr-as-stmt-2.rs diff --git a/src/test/ui/parser/expr-as-stmt-2.stderr b/tests/ui/parser/expr-as-stmt-2.stderr similarity index 100% rename from src/test/ui/parser/expr-as-stmt-2.stderr rename to tests/ui/parser/expr-as-stmt-2.stderr diff --git a/src/test/ui/parser/expr-as-stmt.fixed b/tests/ui/parser/expr-as-stmt.fixed similarity index 100% rename from src/test/ui/parser/expr-as-stmt.fixed rename to tests/ui/parser/expr-as-stmt.fixed diff --git a/src/test/ui/parser/expr-as-stmt.rs b/tests/ui/parser/expr-as-stmt.rs similarity index 100% rename from src/test/ui/parser/expr-as-stmt.rs rename to tests/ui/parser/expr-as-stmt.rs diff --git a/src/test/ui/parser/expr-as-stmt.stderr b/tests/ui/parser/expr-as-stmt.stderr similarity index 100% rename from src/test/ui/parser/expr-as-stmt.stderr rename to tests/ui/parser/expr-as-stmt.stderr diff --git a/src/test/ui/parser/extern-abi-from-mac-literal-frag.rs b/tests/ui/parser/extern-abi-from-mac-literal-frag.rs similarity index 100% rename from src/test/ui/parser/extern-abi-from-mac-literal-frag.rs rename to tests/ui/parser/extern-abi-from-mac-literal-frag.rs diff --git a/src/test/ui/parser/extern-abi-raw-strings.rs b/tests/ui/parser/extern-abi-raw-strings.rs similarity index 100% rename from src/test/ui/parser/extern-abi-raw-strings.rs rename to tests/ui/parser/extern-abi-raw-strings.rs diff --git a/src/test/ui/parser/extern-abi-string-escaping.rs b/tests/ui/parser/extern-abi-string-escaping.rs similarity index 100% rename from src/test/ui/parser/extern-abi-string-escaping.rs rename to tests/ui/parser/extern-abi-string-escaping.rs diff --git a/src/test/ui/parser/extern-abi-syntactic.rs b/tests/ui/parser/extern-abi-syntactic.rs similarity index 100% rename from src/test/ui/parser/extern-abi-syntactic.rs rename to tests/ui/parser/extern-abi-syntactic.rs diff --git a/src/test/ui/parser/extern-crate-async.rs b/tests/ui/parser/extern-crate-async.rs similarity index 100% rename from src/test/ui/parser/extern-crate-async.rs rename to tests/ui/parser/extern-crate-async.rs diff --git a/src/test/ui/parser/extern-crate-unexpected-token.rs b/tests/ui/parser/extern-crate-unexpected-token.rs similarity index 100% rename from src/test/ui/parser/extern-crate-unexpected-token.rs rename to tests/ui/parser/extern-crate-unexpected-token.rs diff --git a/src/test/ui/parser/extern-crate-unexpected-token.stderr b/tests/ui/parser/extern-crate-unexpected-token.stderr similarity index 100% rename from src/test/ui/parser/extern-crate-unexpected-token.stderr rename to tests/ui/parser/extern-crate-unexpected-token.stderr diff --git a/src/test/ui/parser/extern-expected-fn-or-brace.rs b/tests/ui/parser/extern-expected-fn-or-brace.rs similarity index 100% rename from src/test/ui/parser/extern-expected-fn-or-brace.rs rename to tests/ui/parser/extern-expected-fn-or-brace.rs diff --git a/src/test/ui/parser/extern-expected-fn-or-brace.stderr b/tests/ui/parser/extern-expected-fn-or-brace.stderr similarity index 100% rename from src/test/ui/parser/extern-expected-fn-or-brace.stderr rename to tests/ui/parser/extern-expected-fn-or-brace.stderr diff --git a/src/test/ui/parser/extern-foreign-crate.rs b/tests/ui/parser/extern-foreign-crate.rs similarity index 100% rename from src/test/ui/parser/extern-foreign-crate.rs rename to tests/ui/parser/extern-foreign-crate.rs diff --git a/src/test/ui/parser/extern-foreign-crate.stderr b/tests/ui/parser/extern-foreign-crate.stderr similarity index 100% rename from src/test/ui/parser/extern-foreign-crate.stderr rename to tests/ui/parser/extern-foreign-crate.stderr diff --git a/src/test/ui/parser/extern-no-fn.rs b/tests/ui/parser/extern-no-fn.rs similarity index 100% rename from src/test/ui/parser/extern-no-fn.rs rename to tests/ui/parser/extern-no-fn.rs diff --git a/src/test/ui/parser/extern-no-fn.stderr b/tests/ui/parser/extern-no-fn.stderr similarity index 100% rename from src/test/ui/parser/extern-no-fn.stderr rename to tests/ui/parser/extern-no-fn.stderr diff --git a/src/test/ui/parser/float-field-interpolated.rs b/tests/ui/parser/float-field-interpolated.rs similarity index 100% rename from src/test/ui/parser/float-field-interpolated.rs rename to tests/ui/parser/float-field-interpolated.rs diff --git a/src/test/ui/parser/float-field-interpolated.stderr b/tests/ui/parser/float-field-interpolated.stderr similarity index 100% rename from src/test/ui/parser/float-field-interpolated.stderr rename to tests/ui/parser/float-field-interpolated.stderr diff --git a/src/test/ui/parser/float-field.rs b/tests/ui/parser/float-field.rs similarity index 100% rename from src/test/ui/parser/float-field.rs rename to tests/ui/parser/float-field.rs diff --git a/src/test/ui/parser/float-field.stderr b/tests/ui/parser/float-field.stderr similarity index 100% rename from src/test/ui/parser/float-field.stderr rename to tests/ui/parser/float-field.stderr diff --git a/src/test/ui/parser/float-literals.rs b/tests/ui/parser/float-literals.rs similarity index 100% rename from src/test/ui/parser/float-literals.rs rename to tests/ui/parser/float-literals.rs diff --git a/src/test/ui/parser/fn-arg-doc-comment.rs b/tests/ui/parser/fn-arg-doc-comment.rs similarity index 100% rename from src/test/ui/parser/fn-arg-doc-comment.rs rename to tests/ui/parser/fn-arg-doc-comment.rs diff --git a/src/test/ui/parser/fn-arg-doc-comment.stderr b/tests/ui/parser/fn-arg-doc-comment.stderr similarity index 100% rename from src/test/ui/parser/fn-arg-doc-comment.stderr rename to tests/ui/parser/fn-arg-doc-comment.stderr diff --git a/src/test/ui/parser/fn-body-eq-expr-semi.rs b/tests/ui/parser/fn-body-eq-expr-semi.rs similarity index 100% rename from src/test/ui/parser/fn-body-eq-expr-semi.rs rename to tests/ui/parser/fn-body-eq-expr-semi.rs diff --git a/src/test/ui/parser/fn-body-eq-expr-semi.stderr b/tests/ui/parser/fn-body-eq-expr-semi.stderr similarity index 100% rename from src/test/ui/parser/fn-body-eq-expr-semi.stderr rename to tests/ui/parser/fn-body-eq-expr-semi.stderr diff --git a/src/test/ui/parser/fn-body-optional-semantic-fail.rs b/tests/ui/parser/fn-body-optional-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/fn-body-optional-semantic-fail.rs rename to tests/ui/parser/fn-body-optional-semantic-fail.rs diff --git a/src/test/ui/parser/fn-body-optional-semantic-fail.stderr b/tests/ui/parser/fn-body-optional-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/fn-body-optional-semantic-fail.stderr rename to tests/ui/parser/fn-body-optional-semantic-fail.stderr diff --git a/src/test/ui/parser/fn-body-optional-syntactic-pass.rs b/tests/ui/parser/fn-body-optional-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/fn-body-optional-syntactic-pass.rs rename to tests/ui/parser/fn-body-optional-syntactic-pass.rs diff --git a/src/test/ui/parser/fn-colon-return-type.rs b/tests/ui/parser/fn-colon-return-type.rs similarity index 100% rename from src/test/ui/parser/fn-colon-return-type.rs rename to tests/ui/parser/fn-colon-return-type.rs diff --git a/src/test/ui/parser/fn-colon-return-type.stderr b/tests/ui/parser/fn-colon-return-type.stderr similarity index 100% rename from src/test/ui/parser/fn-colon-return-type.stderr rename to tests/ui/parser/fn-colon-return-type.stderr diff --git a/src/test/ui/parser/fn-defined-using-def.rs b/tests/ui/parser/fn-defined-using-def.rs similarity index 100% rename from src/test/ui/parser/fn-defined-using-def.rs rename to tests/ui/parser/fn-defined-using-def.rs diff --git a/src/test/ui/parser/fn-defined-using-def.stderr b/tests/ui/parser/fn-defined-using-def.stderr similarity index 100% rename from src/test/ui/parser/fn-defined-using-def.stderr rename to tests/ui/parser/fn-defined-using-def.stderr diff --git a/src/test/ui/parser/fn-defined-using-fun.rs b/tests/ui/parser/fn-defined-using-fun.rs similarity index 100% rename from src/test/ui/parser/fn-defined-using-fun.rs rename to tests/ui/parser/fn-defined-using-fun.rs diff --git a/src/test/ui/parser/fn-defined-using-fun.stderr b/tests/ui/parser/fn-defined-using-fun.stderr similarity index 100% rename from src/test/ui/parser/fn-defined-using-fun.stderr rename to tests/ui/parser/fn-defined-using-fun.stderr diff --git a/src/test/ui/parser/fn-defined-using-func.rs b/tests/ui/parser/fn-defined-using-func.rs similarity index 100% rename from src/test/ui/parser/fn-defined-using-func.rs rename to tests/ui/parser/fn-defined-using-func.rs diff --git a/src/test/ui/parser/fn-defined-using-func.stderr b/tests/ui/parser/fn-defined-using-func.stderr similarity index 100% rename from src/test/ui/parser/fn-defined-using-func.stderr rename to tests/ui/parser/fn-defined-using-func.stderr diff --git a/src/test/ui/parser/fn-defined-using-function.rs b/tests/ui/parser/fn-defined-using-function.rs similarity index 100% rename from src/test/ui/parser/fn-defined-using-function.rs rename to tests/ui/parser/fn-defined-using-function.rs diff --git a/src/test/ui/parser/fn-defined-using-function.stderr b/tests/ui/parser/fn-defined-using-function.stderr similarity index 100% rename from src/test/ui/parser/fn-defined-using-function.stderr rename to tests/ui/parser/fn-defined-using-function.stderr diff --git a/src/test/ui/parser/fn-field-parse-error-ice.rs b/tests/ui/parser/fn-field-parse-error-ice.rs similarity index 100% rename from src/test/ui/parser/fn-field-parse-error-ice.rs rename to tests/ui/parser/fn-field-parse-error-ice.rs diff --git a/src/test/ui/parser/fn-field-parse-error-ice.stderr b/tests/ui/parser/fn-field-parse-error-ice.stderr similarity index 100% rename from src/test/ui/parser/fn-field-parse-error-ice.stderr rename to tests/ui/parser/fn-field-parse-error-ice.stderr diff --git a/src/test/ui/parser/fn-header-semantic-fail.rs b/tests/ui/parser/fn-header-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/fn-header-semantic-fail.rs rename to tests/ui/parser/fn-header-semantic-fail.rs diff --git a/src/test/ui/parser/fn-header-semantic-fail.stderr b/tests/ui/parser/fn-header-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/fn-header-semantic-fail.stderr rename to tests/ui/parser/fn-header-semantic-fail.stderr diff --git a/src/test/ui/parser/fn-header-syntactic-pass.rs b/tests/ui/parser/fn-header-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/fn-header-syntactic-pass.rs rename to tests/ui/parser/fn-header-syntactic-pass.rs diff --git a/src/test/ui/parser/fn-returns-fn-pointer.rs b/tests/ui/parser/fn-returns-fn-pointer.rs similarity index 100% rename from src/test/ui/parser/fn-returns-fn-pointer.rs rename to tests/ui/parser/fn-returns-fn-pointer.rs diff --git a/src/test/ui/parser/foreign-const-semantic-fail.rs b/tests/ui/parser/foreign-const-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/foreign-const-semantic-fail.rs rename to tests/ui/parser/foreign-const-semantic-fail.rs diff --git a/src/test/ui/parser/foreign-const-semantic-fail.stderr b/tests/ui/parser/foreign-const-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/foreign-const-semantic-fail.stderr rename to tests/ui/parser/foreign-const-semantic-fail.stderr diff --git a/src/test/ui/parser/foreign-const-syntactic-fail.rs b/tests/ui/parser/foreign-const-syntactic-fail.rs similarity index 100% rename from src/test/ui/parser/foreign-const-syntactic-fail.rs rename to tests/ui/parser/foreign-const-syntactic-fail.rs diff --git a/src/test/ui/parser/foreign-const-syntactic-fail.stderr b/tests/ui/parser/foreign-const-syntactic-fail.stderr similarity index 100% rename from src/test/ui/parser/foreign-const-syntactic-fail.stderr rename to tests/ui/parser/foreign-const-syntactic-fail.stderr diff --git a/src/test/ui/parser/foreign-static-semantic-fail.rs b/tests/ui/parser/foreign-static-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/foreign-static-semantic-fail.rs rename to tests/ui/parser/foreign-static-semantic-fail.rs diff --git a/src/test/ui/parser/foreign-static-semantic-fail.stderr b/tests/ui/parser/foreign-static-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/foreign-static-semantic-fail.stderr rename to tests/ui/parser/foreign-static-semantic-fail.stderr diff --git a/src/test/ui/parser/foreign-static-syntactic-pass.rs b/tests/ui/parser/foreign-static-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/foreign-static-syntactic-pass.rs rename to tests/ui/parser/foreign-static-syntactic-pass.rs diff --git a/src/test/ui/parser/foreign-ty-semantic-fail.rs b/tests/ui/parser/foreign-ty-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/foreign-ty-semantic-fail.rs rename to tests/ui/parser/foreign-ty-semantic-fail.rs diff --git a/src/test/ui/parser/foreign-ty-semantic-fail.stderr b/tests/ui/parser/foreign-ty-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/foreign-ty-semantic-fail.stderr rename to tests/ui/parser/foreign-ty-semantic-fail.stderr diff --git a/src/test/ui/parser/foreign-ty-syntactic-pass.rs b/tests/ui/parser/foreign-ty-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/foreign-ty-syntactic-pass.rs rename to tests/ui/parser/foreign-ty-syntactic-pass.rs diff --git a/src/test/ui/parser/if-block-unreachable-expr.rs b/tests/ui/parser/if-block-unreachable-expr.rs similarity index 100% rename from src/test/ui/parser/if-block-unreachable-expr.rs rename to tests/ui/parser/if-block-unreachable-expr.rs diff --git a/src/test/ui/parser/if-in-in.fixed b/tests/ui/parser/if-in-in.fixed similarity index 100% rename from src/test/ui/parser/if-in-in.fixed rename to tests/ui/parser/if-in-in.fixed diff --git a/src/test/ui/parser/if-in-in.rs b/tests/ui/parser/if-in-in.rs similarity index 100% rename from src/test/ui/parser/if-in-in.rs rename to tests/ui/parser/if-in-in.rs diff --git a/src/test/ui/parser/if-in-in.stderr b/tests/ui/parser/if-in-in.stderr similarity index 100% rename from src/test/ui/parser/if-in-in.stderr rename to tests/ui/parser/if-in-in.stderr diff --git a/src/test/ui/parser/impl-item-const-pass.rs b/tests/ui/parser/impl-item-const-pass.rs similarity index 100% rename from src/test/ui/parser/impl-item-const-pass.rs rename to tests/ui/parser/impl-item-const-pass.rs diff --git a/src/test/ui/parser/impl-item-const-semantic-fail.rs b/tests/ui/parser/impl-item-const-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/impl-item-const-semantic-fail.rs rename to tests/ui/parser/impl-item-const-semantic-fail.rs diff --git a/src/test/ui/parser/impl-item-const-semantic-fail.stderr b/tests/ui/parser/impl-item-const-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/impl-item-const-semantic-fail.stderr rename to tests/ui/parser/impl-item-const-semantic-fail.stderr diff --git a/src/test/ui/parser/impl-item-fn-no-body-pass.rs b/tests/ui/parser/impl-item-fn-no-body-pass.rs similarity index 100% rename from src/test/ui/parser/impl-item-fn-no-body-pass.rs rename to tests/ui/parser/impl-item-fn-no-body-pass.rs diff --git a/src/test/ui/parser/impl-item-fn-no-body-semantic-fail.rs b/tests/ui/parser/impl-item-fn-no-body-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/impl-item-fn-no-body-semantic-fail.rs rename to tests/ui/parser/impl-item-fn-no-body-semantic-fail.rs diff --git a/src/test/ui/parser/impl-item-fn-no-body-semantic-fail.stderr b/tests/ui/parser/impl-item-fn-no-body-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/impl-item-fn-no-body-semantic-fail.stderr rename to tests/ui/parser/impl-item-fn-no-body-semantic-fail.stderr diff --git a/src/test/ui/parser/impl-item-type-no-body-pass.rs b/tests/ui/parser/impl-item-type-no-body-pass.rs similarity index 100% rename from src/test/ui/parser/impl-item-type-no-body-pass.rs rename to tests/ui/parser/impl-item-type-no-body-pass.rs diff --git a/src/test/ui/parser/impl-item-type-no-body-semantic-fail.rs b/tests/ui/parser/impl-item-type-no-body-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/impl-item-type-no-body-semantic-fail.rs rename to tests/ui/parser/impl-item-type-no-body-semantic-fail.rs diff --git a/src/test/ui/parser/impl-item-type-no-body-semantic-fail.stderr b/tests/ui/parser/impl-item-type-no-body-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/impl-item-type-no-body-semantic-fail.stderr rename to tests/ui/parser/impl-item-type-no-body-semantic-fail.stderr diff --git a/src/test/ui/parser/impl-parsing.rs b/tests/ui/parser/impl-parsing.rs similarity index 100% rename from src/test/ui/parser/impl-parsing.rs rename to tests/ui/parser/impl-parsing.rs diff --git a/src/test/ui/parser/impl-parsing.stderr b/tests/ui/parser/impl-parsing.stderr similarity index 100% rename from src/test/ui/parser/impl-parsing.stderr rename to tests/ui/parser/impl-parsing.stderr diff --git a/src/test/ui/parser/impl-qpath.rs b/tests/ui/parser/impl-qpath.rs similarity index 100% rename from src/test/ui/parser/impl-qpath.rs rename to tests/ui/parser/impl-qpath.rs diff --git a/src/test/ui/parser/import-from-path.rs b/tests/ui/parser/import-from-path.rs similarity index 100% rename from src/test/ui/parser/import-from-path.rs rename to tests/ui/parser/import-from-path.rs diff --git a/src/test/ui/parser/import-from-path.stderr b/tests/ui/parser/import-from-path.stderr similarity index 100% rename from src/test/ui/parser/import-from-path.stderr rename to tests/ui/parser/import-from-path.stderr diff --git a/src/test/ui/parser/import-from-rename.rs b/tests/ui/parser/import-from-rename.rs similarity index 100% rename from src/test/ui/parser/import-from-rename.rs rename to tests/ui/parser/import-from-rename.rs diff --git a/src/test/ui/parser/import-from-rename.stderr b/tests/ui/parser/import-from-rename.stderr similarity index 100% rename from src/test/ui/parser/import-from-rename.stderr rename to tests/ui/parser/import-from-rename.stderr diff --git a/src/test/ui/parser/import-glob-path.rs b/tests/ui/parser/import-glob-path.rs similarity index 100% rename from src/test/ui/parser/import-glob-path.rs rename to tests/ui/parser/import-glob-path.rs diff --git a/src/test/ui/parser/import-glob-path.stderr b/tests/ui/parser/import-glob-path.stderr similarity index 100% rename from src/test/ui/parser/import-glob-path.stderr rename to tests/ui/parser/import-glob-path.stderr diff --git a/src/test/ui/parser/import-glob-rename.rs b/tests/ui/parser/import-glob-rename.rs similarity index 100% rename from src/test/ui/parser/import-glob-rename.rs rename to tests/ui/parser/import-glob-rename.rs diff --git a/src/test/ui/parser/import-glob-rename.stderr b/tests/ui/parser/import-glob-rename.stderr similarity index 100% rename from src/test/ui/parser/import-glob-rename.stderr rename to tests/ui/parser/import-glob-rename.stderr diff --git a/src/test/ui/parser/increment-autofix-2.fixed b/tests/ui/parser/increment-autofix-2.fixed similarity index 100% rename from src/test/ui/parser/increment-autofix-2.fixed rename to tests/ui/parser/increment-autofix-2.fixed diff --git a/src/test/ui/parser/increment-autofix-2.rs b/tests/ui/parser/increment-autofix-2.rs similarity index 100% rename from src/test/ui/parser/increment-autofix-2.rs rename to tests/ui/parser/increment-autofix-2.rs diff --git a/src/test/ui/parser/increment-autofix-2.stderr b/tests/ui/parser/increment-autofix-2.stderr similarity index 100% rename from src/test/ui/parser/increment-autofix-2.stderr rename to tests/ui/parser/increment-autofix-2.stderr diff --git a/src/test/ui/parser/increment-autofix.fixed b/tests/ui/parser/increment-autofix.fixed similarity index 100% rename from src/test/ui/parser/increment-autofix.fixed rename to tests/ui/parser/increment-autofix.fixed diff --git a/src/test/ui/parser/increment-autofix.rs b/tests/ui/parser/increment-autofix.rs similarity index 100% rename from src/test/ui/parser/increment-autofix.rs rename to tests/ui/parser/increment-autofix.rs diff --git a/src/test/ui/parser/increment-autofix.stderr b/tests/ui/parser/increment-autofix.stderr similarity index 100% rename from src/test/ui/parser/increment-autofix.stderr rename to tests/ui/parser/increment-autofix.stderr diff --git a/src/test/ui/parser/inner-attr-after-doc-comment.rs b/tests/ui/parser/inner-attr-after-doc-comment.rs similarity index 100% rename from src/test/ui/parser/inner-attr-after-doc-comment.rs rename to tests/ui/parser/inner-attr-after-doc-comment.rs diff --git a/src/test/ui/parser/inner-attr-after-doc-comment.stderr b/tests/ui/parser/inner-attr-after-doc-comment.stderr similarity index 100% rename from src/test/ui/parser/inner-attr-after-doc-comment.stderr rename to tests/ui/parser/inner-attr-after-doc-comment.stderr diff --git a/src/test/ui/parser/inner-attr-in-trait-def.rs b/tests/ui/parser/inner-attr-in-trait-def.rs similarity index 100% rename from src/test/ui/parser/inner-attr-in-trait-def.rs rename to tests/ui/parser/inner-attr-in-trait-def.rs diff --git a/src/test/ui/parser/inner-attr.rs b/tests/ui/parser/inner-attr.rs similarity index 100% rename from src/test/ui/parser/inner-attr.rs rename to tests/ui/parser/inner-attr.rs diff --git a/src/test/ui/parser/inner-attr.stderr b/tests/ui/parser/inner-attr.stderr similarity index 100% rename from src/test/ui/parser/inner-attr.stderr rename to tests/ui/parser/inner-attr.stderr diff --git a/src/test/ui/parser/int-literal-too-large-span.rs b/tests/ui/parser/int-literal-too-large-span.rs similarity index 100% rename from src/test/ui/parser/int-literal-too-large-span.rs rename to tests/ui/parser/int-literal-too-large-span.rs diff --git a/src/test/ui/parser/int-literal-too-large-span.stderr b/tests/ui/parser/int-literal-too-large-span.stderr similarity index 100% rename from src/test/ui/parser/int-literal-too-large-span.stderr rename to tests/ui/parser/int-literal-too-large-span.stderr diff --git a/src/test/ui/parser/intersection-patterns-1.fixed b/tests/ui/parser/intersection-patterns-1.fixed similarity index 100% rename from src/test/ui/parser/intersection-patterns-1.fixed rename to tests/ui/parser/intersection-patterns-1.fixed diff --git a/src/test/ui/parser/intersection-patterns-1.rs b/tests/ui/parser/intersection-patterns-1.rs similarity index 100% rename from src/test/ui/parser/intersection-patterns-1.rs rename to tests/ui/parser/intersection-patterns-1.rs diff --git a/src/test/ui/parser/intersection-patterns-1.stderr b/tests/ui/parser/intersection-patterns-1.stderr similarity index 100% rename from src/test/ui/parser/intersection-patterns-1.stderr rename to tests/ui/parser/intersection-patterns-1.stderr diff --git a/src/test/ui/parser/intersection-patterns-2.rs b/tests/ui/parser/intersection-patterns-2.rs similarity index 100% rename from src/test/ui/parser/intersection-patterns-2.rs rename to tests/ui/parser/intersection-patterns-2.rs diff --git a/src/test/ui/parser/intersection-patterns-2.stderr b/tests/ui/parser/intersection-patterns-2.stderr similarity index 100% rename from src/test/ui/parser/intersection-patterns-2.stderr rename to tests/ui/parser/intersection-patterns-2.stderr diff --git a/src/test/ui/parser/inverted-parameters.rs b/tests/ui/parser/inverted-parameters.rs similarity index 100% rename from src/test/ui/parser/inverted-parameters.rs rename to tests/ui/parser/inverted-parameters.rs diff --git a/src/test/ui/parser/inverted-parameters.stderr b/tests/ui/parser/inverted-parameters.stderr similarity index 100% rename from src/test/ui/parser/inverted-parameters.stderr rename to tests/ui/parser/inverted-parameters.stderr diff --git a/src/test/ui/parser/issue-100197-mut-let.fixed b/tests/ui/parser/issue-100197-mut-let.fixed similarity index 100% rename from src/test/ui/parser/issue-100197-mut-let.fixed rename to tests/ui/parser/issue-100197-mut-let.fixed diff --git a/src/test/ui/parser/issue-100197-mut-let.rs b/tests/ui/parser/issue-100197-mut-let.rs similarity index 100% rename from src/test/ui/parser/issue-100197-mut-let.rs rename to tests/ui/parser/issue-100197-mut-let.rs diff --git a/src/test/ui/parser/issue-100197-mut-let.stderr b/tests/ui/parser/issue-100197-mut-let.stderr similarity index 100% rename from src/test/ui/parser/issue-100197-mut-let.stderr rename to tests/ui/parser/issue-100197-mut-let.stderr diff --git a/src/test/ui/parser/issue-101477-enum.fixed b/tests/ui/parser/issue-101477-enum.fixed similarity index 100% rename from src/test/ui/parser/issue-101477-enum.fixed rename to tests/ui/parser/issue-101477-enum.fixed diff --git a/src/test/ui/parser/issue-101477-enum.rs b/tests/ui/parser/issue-101477-enum.rs similarity index 100% rename from src/test/ui/parser/issue-101477-enum.rs rename to tests/ui/parser/issue-101477-enum.rs diff --git a/src/test/ui/parser/issue-101477-enum.stderr b/tests/ui/parser/issue-101477-enum.stderr similarity index 100% rename from src/test/ui/parser/issue-101477-enum.stderr rename to tests/ui/parser/issue-101477-enum.stderr diff --git a/src/test/ui/parser/issue-101477-let.fixed b/tests/ui/parser/issue-101477-let.fixed similarity index 100% rename from src/test/ui/parser/issue-101477-let.fixed rename to tests/ui/parser/issue-101477-let.fixed diff --git a/src/test/ui/parser/issue-101477-let.rs b/tests/ui/parser/issue-101477-let.rs similarity index 100% rename from src/test/ui/parser/issue-101477-let.rs rename to tests/ui/parser/issue-101477-let.rs diff --git a/src/test/ui/parser/issue-101477-let.stderr b/tests/ui/parser/issue-101477-let.stderr similarity index 100% rename from src/test/ui/parser/issue-101477-let.stderr rename to tests/ui/parser/issue-101477-let.stderr diff --git a/src/test/ui/parser/issue-102806.rs b/tests/ui/parser/issue-102806.rs similarity index 100% rename from src/test/ui/parser/issue-102806.rs rename to tests/ui/parser/issue-102806.rs diff --git a/src/test/ui/parser/issue-102806.stderr b/tests/ui/parser/issue-102806.stderr similarity index 100% rename from src/test/ui/parser/issue-102806.stderr rename to tests/ui/parser/issue-102806.stderr diff --git a/src/test/ui/parser/issue-103143.rs b/tests/ui/parser/issue-103143.rs similarity index 100% rename from src/test/ui/parser/issue-103143.rs rename to tests/ui/parser/issue-103143.rs diff --git a/src/test/ui/parser/issue-103143.stderr b/tests/ui/parser/issue-103143.stderr similarity index 100% rename from src/test/ui/parser/issue-103143.stderr rename to tests/ui/parser/issue-103143.stderr diff --git a/src/test/ui/parser/issue-103381.fixed b/tests/ui/parser/issue-103381.fixed similarity index 100% rename from src/test/ui/parser/issue-103381.fixed rename to tests/ui/parser/issue-103381.fixed diff --git a/src/test/ui/parser/issue-103381.rs b/tests/ui/parser/issue-103381.rs similarity index 100% rename from src/test/ui/parser/issue-103381.rs rename to tests/ui/parser/issue-103381.rs diff --git a/src/test/ui/parser/issue-103381.stderr b/tests/ui/parser/issue-103381.stderr similarity index 100% rename from src/test/ui/parser/issue-103381.stderr rename to tests/ui/parser/issue-103381.stderr diff --git a/src/test/ui/parser/issue-103425.rs b/tests/ui/parser/issue-103425.rs similarity index 100% rename from src/test/ui/parser/issue-103425.rs rename to tests/ui/parser/issue-103425.rs diff --git a/src/test/ui/parser/issue-103425.stderr b/tests/ui/parser/issue-103425.stderr similarity index 100% rename from src/test/ui/parser/issue-103425.stderr rename to tests/ui/parser/issue-103425.stderr diff --git a/src/test/ui/parser/issue-103451.rs b/tests/ui/parser/issue-103451.rs similarity index 100% rename from src/test/ui/parser/issue-103451.rs rename to tests/ui/parser/issue-103451.rs diff --git a/src/test/ui/parser/issue-103451.stderr b/tests/ui/parser/issue-103451.stderr similarity index 100% rename from src/test/ui/parser/issue-103451.stderr rename to tests/ui/parser/issue-103451.stderr diff --git a/src/test/ui/parser/issue-103748-ICE-wrong-braces.rs b/tests/ui/parser/issue-103748-ICE-wrong-braces.rs similarity index 100% rename from src/test/ui/parser/issue-103748-ICE-wrong-braces.rs rename to tests/ui/parser/issue-103748-ICE-wrong-braces.rs diff --git a/src/test/ui/parser/issue-103748-ICE-wrong-braces.stderr b/tests/ui/parser/issue-103748-ICE-wrong-braces.stderr similarity index 100% rename from src/test/ui/parser/issue-103748-ICE-wrong-braces.stderr rename to tests/ui/parser/issue-103748-ICE-wrong-braces.stderr diff --git a/src/test/ui/parser/issue-103869.rs b/tests/ui/parser/issue-103869.rs similarity index 100% rename from src/test/ui/parser/issue-103869.rs rename to tests/ui/parser/issue-103869.rs diff --git a/src/test/ui/parser/issue-103869.stderr b/tests/ui/parser/issue-103869.stderr similarity index 100% rename from src/test/ui/parser/issue-103869.stderr rename to tests/ui/parser/issue-103869.stderr diff --git a/src/test/ui/parser/issue-104620.rs b/tests/ui/parser/issue-104620.rs similarity index 100% rename from src/test/ui/parser/issue-104620.rs rename to tests/ui/parser/issue-104620.rs diff --git a/src/test/ui/parser/issue-104620.stderr b/tests/ui/parser/issue-104620.stderr similarity index 100% rename from src/test/ui/parser/issue-104620.stderr rename to tests/ui/parser/issue-104620.stderr diff --git a/src/test/ui/parser/issue-104867-inc-dec-2.rs b/tests/ui/parser/issue-104867-inc-dec-2.rs similarity index 100% rename from src/test/ui/parser/issue-104867-inc-dec-2.rs rename to tests/ui/parser/issue-104867-inc-dec-2.rs diff --git a/src/test/ui/parser/issue-104867-inc-dec-2.stderr b/tests/ui/parser/issue-104867-inc-dec-2.stderr similarity index 100% rename from src/test/ui/parser/issue-104867-inc-dec-2.stderr rename to tests/ui/parser/issue-104867-inc-dec-2.stderr diff --git a/src/test/ui/parser/issue-104867-inc-dec.rs b/tests/ui/parser/issue-104867-inc-dec.rs similarity index 100% rename from src/test/ui/parser/issue-104867-inc-dec.rs rename to tests/ui/parser/issue-104867-inc-dec.rs diff --git a/src/test/ui/parser/issue-104867-inc-dec.stderr b/tests/ui/parser/issue-104867-inc-dec.stderr similarity index 100% rename from src/test/ui/parser/issue-104867-inc-dec.stderr rename to tests/ui/parser/issue-104867-inc-dec.stderr diff --git a/src/test/ui/parser/issue-105366.fixed b/tests/ui/parser/issue-105366.fixed similarity index 100% rename from src/test/ui/parser/issue-105366.fixed rename to tests/ui/parser/issue-105366.fixed diff --git a/src/test/ui/parser/issue-105366.rs b/tests/ui/parser/issue-105366.rs similarity index 100% rename from src/test/ui/parser/issue-105366.rs rename to tests/ui/parser/issue-105366.rs diff --git a/src/test/ui/parser/issue-105366.stderr b/tests/ui/parser/issue-105366.stderr similarity index 100% rename from src/test/ui/parser/issue-105366.stderr rename to tests/ui/parser/issue-105366.stderr diff --git a/src/test/ui/parser/issue-105634.rs b/tests/ui/parser/issue-105634.rs similarity index 100% rename from src/test/ui/parser/issue-105634.rs rename to tests/ui/parser/issue-105634.rs diff --git a/src/test/ui/parser/issue-17718-parse-const.rs b/tests/ui/parser/issue-17718-parse-const.rs similarity index 100% rename from src/test/ui/parser/issue-17718-parse-const.rs rename to tests/ui/parser/issue-17718-parse-const.rs diff --git a/src/test/ui/parser/issue-39616.rs b/tests/ui/parser/issue-39616.rs similarity index 100% rename from src/test/ui/parser/issue-39616.rs rename to tests/ui/parser/issue-39616.rs diff --git a/src/test/ui/parser/issue-39616.stderr b/tests/ui/parser/issue-39616.stderr similarity index 100% rename from src/test/ui/parser/issue-39616.stderr rename to tests/ui/parser/issue-39616.stderr diff --git a/src/test/ui/parser/issue-49257.rs b/tests/ui/parser/issue-49257.rs similarity index 100% rename from src/test/ui/parser/issue-49257.rs rename to tests/ui/parser/issue-49257.rs diff --git a/src/test/ui/parser/issue-49257.stderr b/tests/ui/parser/issue-49257.stderr similarity index 100% rename from src/test/ui/parser/issue-49257.stderr rename to tests/ui/parser/issue-49257.stderr diff --git a/src/test/ui/parser/issue-61858.rs b/tests/ui/parser/issue-61858.rs similarity index 100% rename from src/test/ui/parser/issue-61858.rs rename to tests/ui/parser/issue-61858.rs diff --git a/src/test/ui/parser/issue-61858.stderr b/tests/ui/parser/issue-61858.stderr similarity index 100% rename from src/test/ui/parser/issue-61858.stderr rename to tests/ui/parser/issue-61858.stderr diff --git a/src/test/ui/parser/issue-68091-unicode-ident-after-if.rs b/tests/ui/parser/issue-68091-unicode-ident-after-if.rs similarity index 100% rename from src/test/ui/parser/issue-68091-unicode-ident-after-if.rs rename to tests/ui/parser/issue-68091-unicode-ident-after-if.rs diff --git a/src/test/ui/parser/issue-68091-unicode-ident-after-if.stderr b/tests/ui/parser/issue-68091-unicode-ident-after-if.stderr similarity index 100% rename from src/test/ui/parser/issue-68091-unicode-ident-after-if.stderr rename to tests/ui/parser/issue-68091-unicode-ident-after-if.stderr diff --git a/src/test/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.rs b/tests/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.rs similarity index 100% rename from src/test/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.rs rename to tests/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.rs diff --git a/src/test/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.stderr b/tests/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.stderr similarity index 100% rename from src/test/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.stderr rename to tests/ui/parser/issue-68092-unicode-ident-after-incomplete-expr.stderr diff --git a/src/test/ui/parser/issue-81804.rs b/tests/ui/parser/issue-81804.rs similarity index 100% rename from src/test/ui/parser/issue-81804.rs rename to tests/ui/parser/issue-81804.rs diff --git a/src/test/ui/parser/issue-81804.stderr b/tests/ui/parser/issue-81804.stderr similarity index 100% rename from src/test/ui/parser/issue-81804.stderr rename to tests/ui/parser/issue-81804.stderr diff --git a/src/test/ui/parser/issue-81827.rs b/tests/ui/parser/issue-81827.rs similarity index 100% rename from src/test/ui/parser/issue-81827.rs rename to tests/ui/parser/issue-81827.rs diff --git a/src/test/ui/parser/issue-81827.stderr b/tests/ui/parser/issue-81827.stderr similarity index 100% rename from src/test/ui/parser/issue-81827.stderr rename to tests/ui/parser/issue-81827.stderr diff --git a/src/test/ui/parser/issue-87694-duplicated-pub.rs b/tests/ui/parser/issue-87694-duplicated-pub.rs similarity index 100% rename from src/test/ui/parser/issue-87694-duplicated-pub.rs rename to tests/ui/parser/issue-87694-duplicated-pub.rs diff --git a/src/test/ui/parser/issue-87694-duplicated-pub.stderr b/tests/ui/parser/issue-87694-duplicated-pub.stderr similarity index 100% rename from src/test/ui/parser/issue-87694-duplicated-pub.stderr rename to tests/ui/parser/issue-87694-duplicated-pub.stderr diff --git a/src/test/ui/parser/issue-87694-misplaced-pub.rs b/tests/ui/parser/issue-87694-misplaced-pub.rs similarity index 100% rename from src/test/ui/parser/issue-87694-misplaced-pub.rs rename to tests/ui/parser/issue-87694-misplaced-pub.rs diff --git a/src/test/ui/parser/issue-87694-misplaced-pub.stderr b/tests/ui/parser/issue-87694-misplaced-pub.stderr similarity index 100% rename from src/test/ui/parser/issue-87694-misplaced-pub.stderr rename to tests/ui/parser/issue-87694-misplaced-pub.stderr diff --git a/src/test/ui/parser/issue-90728.rs b/tests/ui/parser/issue-90728.rs similarity index 100% rename from src/test/ui/parser/issue-90728.rs rename to tests/ui/parser/issue-90728.rs diff --git a/src/test/ui/parser/issue-90728.stderr b/tests/ui/parser/issue-90728.stderr similarity index 100% rename from src/test/ui/parser/issue-90728.stderr rename to tests/ui/parser/issue-90728.stderr diff --git a/src/test/ui/parser/issue-91421.rs b/tests/ui/parser/issue-91421.rs similarity index 100% rename from src/test/ui/parser/issue-91421.rs rename to tests/ui/parser/issue-91421.rs diff --git a/src/test/ui/parser/issue-91421.stderr b/tests/ui/parser/issue-91421.stderr similarity index 100% rename from src/test/ui/parser/issue-91421.stderr rename to tests/ui/parser/issue-91421.stderr diff --git a/src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.fixed b/tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.fixed similarity index 100% rename from src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.fixed rename to tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.fixed diff --git a/src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.rs b/tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.rs similarity index 100% rename from src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.rs rename to tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.rs diff --git a/src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.stderr b/tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.stderr similarity index 100% rename from src/test/ui/parser/issue-99625-enum-struct-mutually-exclusive.stderr rename to tests/ui/parser/issue-99625-enum-struct-mutually-exclusive.stderr diff --git a/src/test/ui/parser/issue-99910-const-let-mutually-exclusive.fixed b/tests/ui/parser/issue-99910-const-let-mutually-exclusive.fixed similarity index 100% rename from src/test/ui/parser/issue-99910-const-let-mutually-exclusive.fixed rename to tests/ui/parser/issue-99910-const-let-mutually-exclusive.fixed diff --git a/src/test/ui/parser/issue-99910-const-let-mutually-exclusive.rs b/tests/ui/parser/issue-99910-const-let-mutually-exclusive.rs similarity index 100% rename from src/test/ui/parser/issue-99910-const-let-mutually-exclusive.rs rename to tests/ui/parser/issue-99910-const-let-mutually-exclusive.rs diff --git a/src/test/ui/parser/issue-99910-const-let-mutually-exclusive.stderr b/tests/ui/parser/issue-99910-const-let-mutually-exclusive.stderr similarity index 100% rename from src/test/ui/parser/issue-99910-const-let-mutually-exclusive.stderr rename to tests/ui/parser/issue-99910-const-let-mutually-exclusive.stderr diff --git a/src/test/ui/parser/issues/auxiliary/issue-21146-inc.rs b/tests/ui/parser/issues/auxiliary/issue-21146-inc.rs similarity index 100% rename from src/test/ui/parser/issues/auxiliary/issue-21146-inc.rs rename to tests/ui/parser/issues/auxiliary/issue-21146-inc.rs diff --git a/src/test/ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs b/tests/ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs similarity index 100% rename from src/test/ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs rename to tests/ui/parser/issues/auxiliary/issue-89971-outer-attr-following-inner-attr-ice.rs diff --git a/src/test/ui/parser/issues/auxiliary/issue-94340-inc.rs b/tests/ui/parser/issues/auxiliary/issue-94340-inc.rs similarity index 100% rename from src/test/ui/parser/issues/auxiliary/issue-94340-inc.rs rename to tests/ui/parser/issues/auxiliary/issue-94340-inc.rs diff --git a/src/test/ui/parser/issues/issue-101540.rs b/tests/ui/parser/issues/issue-101540.rs similarity index 100% rename from src/test/ui/parser/issues/issue-101540.rs rename to tests/ui/parser/issues/issue-101540.rs diff --git a/src/test/ui/parser/issues/issue-101540.stderr b/tests/ui/parser/issues/issue-101540.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-101540.stderr rename to tests/ui/parser/issues/issue-101540.stderr diff --git a/src/test/ui/parser/issues/issue-102182-impl-trait-recover.rs b/tests/ui/parser/issues/issue-102182-impl-trait-recover.rs similarity index 100% rename from src/test/ui/parser/issues/issue-102182-impl-trait-recover.rs rename to tests/ui/parser/issues/issue-102182-impl-trait-recover.rs diff --git a/src/test/ui/parser/issues/issue-102182-impl-trait-recover.stderr b/tests/ui/parser/issues/issue-102182-impl-trait-recover.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-102182-impl-trait-recover.stderr rename to tests/ui/parser/issues/issue-102182-impl-trait-recover.stderr diff --git a/src/test/ui/parser/issues/issue-10392-2.fixed b/tests/ui/parser/issues/issue-10392-2.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-10392-2.fixed rename to tests/ui/parser/issues/issue-10392-2.fixed diff --git a/src/test/ui/parser/issues/issue-10392-2.rs b/tests/ui/parser/issues/issue-10392-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-10392-2.rs rename to tests/ui/parser/issues/issue-10392-2.rs diff --git a/src/test/ui/parser/issues/issue-10392-2.stderr b/tests/ui/parser/issues/issue-10392-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-10392-2.stderr rename to tests/ui/parser/issues/issue-10392-2.stderr diff --git a/src/test/ui/parser/issues/issue-10392.rs b/tests/ui/parser/issues/issue-10392.rs similarity index 100% rename from src/test/ui/parser/issues/issue-10392.rs rename to tests/ui/parser/issues/issue-10392.rs diff --git a/src/test/ui/parser/issues/issue-10392.stderr b/tests/ui/parser/issues/issue-10392.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-10392.stderr rename to tests/ui/parser/issues/issue-10392.stderr diff --git a/src/test/ui/parser/issues/issue-104088.rs b/tests/ui/parser/issues/issue-104088.rs similarity index 100% rename from src/test/ui/parser/issues/issue-104088.rs rename to tests/ui/parser/issues/issue-104088.rs diff --git a/src/test/ui/parser/issues/issue-104088.stderr b/tests/ui/parser/issues/issue-104088.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-104088.stderr rename to tests/ui/parser/issues/issue-104088.stderr diff --git a/src/test/ui/parser/issues/issue-10636-1.rs b/tests/ui/parser/issues/issue-10636-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-10636-1.rs rename to tests/ui/parser/issues/issue-10636-1.rs diff --git a/src/test/ui/parser/issues/issue-10636-1.stderr b/tests/ui/parser/issues/issue-10636-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-10636-1.stderr rename to tests/ui/parser/issues/issue-10636-1.stderr diff --git a/src/test/ui/parser/issues/issue-10636-2.rs b/tests/ui/parser/issues/issue-10636-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-10636-2.rs rename to tests/ui/parser/issues/issue-10636-2.rs diff --git a/src/test/ui/parser/issues/issue-10636-2.stderr b/tests/ui/parser/issues/issue-10636-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-10636-2.stderr rename to tests/ui/parser/issues/issue-10636-2.stderr diff --git a/src/test/ui/parser/issues/issue-13483.rs b/tests/ui/parser/issues/issue-13483.rs similarity index 100% rename from src/test/ui/parser/issues/issue-13483.rs rename to tests/ui/parser/issues/issue-13483.rs diff --git a/src/test/ui/parser/issues/issue-13483.stderr b/tests/ui/parser/issues/issue-13483.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-13483.stderr rename to tests/ui/parser/issues/issue-13483.stderr diff --git a/src/test/ui/parser/issues/issue-14303-fncall.full.stderr b/tests/ui/parser/issues/issue-14303-fncall.full.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-14303-fncall.full.stderr rename to tests/ui/parser/issues/issue-14303-fncall.full.stderr diff --git a/src/test/ui/parser/issues/issue-14303-fncall.generic_arg.stderr b/tests/ui/parser/issues/issue-14303-fncall.generic_arg.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-14303-fncall.generic_arg.stderr rename to tests/ui/parser/issues/issue-14303-fncall.generic_arg.stderr diff --git a/src/test/ui/parser/issues/issue-14303-fncall.rs b/tests/ui/parser/issues/issue-14303-fncall.rs similarity index 100% rename from src/test/ui/parser/issues/issue-14303-fncall.rs rename to tests/ui/parser/issues/issue-14303-fncall.rs diff --git a/src/test/ui/parser/issues/issue-14303.rs b/tests/ui/parser/issues/issue-14303.rs similarity index 100% rename from src/test/ui/parser/issues/issue-14303.rs rename to tests/ui/parser/issues/issue-14303.rs diff --git a/src/test/ui/parser/issues/issue-14303.stderr b/tests/ui/parser/issues/issue-14303.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-14303.stderr rename to tests/ui/parser/issues/issue-14303.stderr diff --git a/src/test/ui/parser/issues/issue-15914.rs b/tests/ui/parser/issues/issue-15914.rs similarity index 100% rename from src/test/ui/parser/issues/issue-15914.rs rename to tests/ui/parser/issues/issue-15914.rs diff --git a/src/test/ui/parser/issues/issue-15914.stderr b/tests/ui/parser/issues/issue-15914.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-15914.stderr rename to tests/ui/parser/issues/issue-15914.stderr diff --git a/src/test/ui/parser/issues/issue-15980.rs b/tests/ui/parser/issues/issue-15980.rs similarity index 100% rename from src/test/ui/parser/issues/issue-15980.rs rename to tests/ui/parser/issues/issue-15980.rs diff --git a/src/test/ui/parser/issues/issue-15980.stderr b/tests/ui/parser/issues/issue-15980.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-15980.stderr rename to tests/ui/parser/issues/issue-15980.stderr diff --git a/src/test/ui/parser/issues/issue-1655.rs b/tests/ui/parser/issues/issue-1655.rs similarity index 100% rename from src/test/ui/parser/issues/issue-1655.rs rename to tests/ui/parser/issues/issue-1655.rs diff --git a/src/test/ui/parser/issues/issue-1655.stderr b/tests/ui/parser/issues/issue-1655.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-1655.stderr rename to tests/ui/parser/issues/issue-1655.stderr diff --git a/src/test/ui/parser/issues/issue-17718-const-mut.rs b/tests/ui/parser/issues/issue-17718-const-mut.rs similarity index 100% rename from src/test/ui/parser/issues/issue-17718-const-mut.rs rename to tests/ui/parser/issues/issue-17718-const-mut.rs diff --git a/src/test/ui/parser/issues/issue-17718-const-mut.stderr b/tests/ui/parser/issues/issue-17718-const-mut.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-17718-const-mut.stderr rename to tests/ui/parser/issues/issue-17718-const-mut.stderr diff --git a/src/test/ui/parser/issues/issue-17904-2.rs b/tests/ui/parser/issues/issue-17904-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-17904-2.rs rename to tests/ui/parser/issues/issue-17904-2.rs diff --git a/src/test/ui/parser/issues/issue-17904-2.stderr b/tests/ui/parser/issues/issue-17904-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-17904-2.stderr rename to tests/ui/parser/issues/issue-17904-2.stderr diff --git a/src/test/ui/parser/issues/issue-17904.rs b/tests/ui/parser/issues/issue-17904.rs similarity index 100% rename from src/test/ui/parser/issues/issue-17904.rs rename to tests/ui/parser/issues/issue-17904.rs diff --git a/src/test/ui/parser/issues/issue-17904.stderr b/tests/ui/parser/issues/issue-17904.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-17904.stderr rename to tests/ui/parser/issues/issue-17904.stderr diff --git a/src/test/ui/parser/issues/issue-1802-1.rs b/tests/ui/parser/issues/issue-1802-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-1802-1.rs rename to tests/ui/parser/issues/issue-1802-1.rs diff --git a/src/test/ui/parser/issues/issue-1802-1.stderr b/tests/ui/parser/issues/issue-1802-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-1802-1.stderr rename to tests/ui/parser/issues/issue-1802-1.stderr diff --git a/src/test/ui/parser/issues/issue-1802-2.rs b/tests/ui/parser/issues/issue-1802-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-1802-2.rs rename to tests/ui/parser/issues/issue-1802-2.rs diff --git a/src/test/ui/parser/issues/issue-1802-2.stderr b/tests/ui/parser/issues/issue-1802-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-1802-2.stderr rename to tests/ui/parser/issues/issue-1802-2.stderr diff --git a/src/test/ui/parser/issues/issue-19096.rs b/tests/ui/parser/issues/issue-19096.rs similarity index 100% rename from src/test/ui/parser/issues/issue-19096.rs rename to tests/ui/parser/issues/issue-19096.rs diff --git a/src/test/ui/parser/issues/issue-19096.stderr b/tests/ui/parser/issues/issue-19096.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-19096.stderr rename to tests/ui/parser/issues/issue-19096.stderr diff --git a/src/test/ui/parser/issues/issue-19398.rs b/tests/ui/parser/issues/issue-19398.rs similarity index 100% rename from src/test/ui/parser/issues/issue-19398.rs rename to tests/ui/parser/issues/issue-19398.rs diff --git a/src/test/ui/parser/issues/issue-19398.stderr b/tests/ui/parser/issues/issue-19398.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-19398.stderr rename to tests/ui/parser/issues/issue-19398.stderr diff --git a/src/test/ui/parser/issues/issue-20616-1.rs b/tests/ui/parser/issues/issue-20616-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-1.rs rename to tests/ui/parser/issues/issue-20616-1.rs diff --git a/src/test/ui/parser/issues/issue-20616-1.stderr b/tests/ui/parser/issues/issue-20616-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-1.stderr rename to tests/ui/parser/issues/issue-20616-1.stderr diff --git a/src/test/ui/parser/issues/issue-20616-2.rs b/tests/ui/parser/issues/issue-20616-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-2.rs rename to tests/ui/parser/issues/issue-20616-2.rs diff --git a/src/test/ui/parser/issues/issue-20616-2.stderr b/tests/ui/parser/issues/issue-20616-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-2.stderr rename to tests/ui/parser/issues/issue-20616-2.stderr diff --git a/src/test/ui/parser/issues/issue-20616-3.rs b/tests/ui/parser/issues/issue-20616-3.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-3.rs rename to tests/ui/parser/issues/issue-20616-3.rs diff --git a/src/test/ui/parser/issues/issue-20616-3.stderr b/tests/ui/parser/issues/issue-20616-3.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-3.stderr rename to tests/ui/parser/issues/issue-20616-3.stderr diff --git a/src/test/ui/parser/issues/issue-20616-4.rs b/tests/ui/parser/issues/issue-20616-4.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-4.rs rename to tests/ui/parser/issues/issue-20616-4.rs diff --git a/src/test/ui/parser/issues/issue-20616-4.stderr b/tests/ui/parser/issues/issue-20616-4.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-4.stderr rename to tests/ui/parser/issues/issue-20616-4.stderr diff --git a/src/test/ui/parser/issues/issue-20616-5.rs b/tests/ui/parser/issues/issue-20616-5.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-5.rs rename to tests/ui/parser/issues/issue-20616-5.rs diff --git a/src/test/ui/parser/issues/issue-20616-5.stderr b/tests/ui/parser/issues/issue-20616-5.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-5.stderr rename to tests/ui/parser/issues/issue-20616-5.stderr diff --git a/src/test/ui/parser/issues/issue-20616-6.rs b/tests/ui/parser/issues/issue-20616-6.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-6.rs rename to tests/ui/parser/issues/issue-20616-6.rs diff --git a/src/test/ui/parser/issues/issue-20616-6.stderr b/tests/ui/parser/issues/issue-20616-6.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-6.stderr rename to tests/ui/parser/issues/issue-20616-6.stderr diff --git a/src/test/ui/parser/issues/issue-20616-7.rs b/tests/ui/parser/issues/issue-20616-7.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-7.rs rename to tests/ui/parser/issues/issue-20616-7.rs diff --git a/src/test/ui/parser/issues/issue-20616-7.stderr b/tests/ui/parser/issues/issue-20616-7.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-7.stderr rename to tests/ui/parser/issues/issue-20616-7.stderr diff --git a/src/test/ui/parser/issues/issue-20616-8.rs b/tests/ui/parser/issues/issue-20616-8.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-8.rs rename to tests/ui/parser/issues/issue-20616-8.rs diff --git a/src/test/ui/parser/issues/issue-20616-8.stderr b/tests/ui/parser/issues/issue-20616-8.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-8.stderr rename to tests/ui/parser/issues/issue-20616-8.stderr diff --git a/src/test/ui/parser/issues/issue-20616-9.rs b/tests/ui/parser/issues/issue-20616-9.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20616-9.rs rename to tests/ui/parser/issues/issue-20616-9.rs diff --git a/src/test/ui/parser/issues/issue-20616-9.stderr b/tests/ui/parser/issues/issue-20616-9.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20616-9.stderr rename to tests/ui/parser/issues/issue-20616-9.stderr diff --git a/src/test/ui/parser/issues/issue-20711-2.rs b/tests/ui/parser/issues/issue-20711-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20711-2.rs rename to tests/ui/parser/issues/issue-20711-2.rs diff --git a/src/test/ui/parser/issues/issue-20711-2.stderr b/tests/ui/parser/issues/issue-20711-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20711-2.stderr rename to tests/ui/parser/issues/issue-20711-2.stderr diff --git a/src/test/ui/parser/issues/issue-20711.rs b/tests/ui/parser/issues/issue-20711.rs similarity index 100% rename from src/test/ui/parser/issues/issue-20711.rs rename to tests/ui/parser/issues/issue-20711.rs diff --git a/src/test/ui/parser/issues/issue-20711.stderr b/tests/ui/parser/issues/issue-20711.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-20711.stderr rename to tests/ui/parser/issues/issue-20711.stderr diff --git a/src/test/ui/parser/issues/issue-21146.rs b/tests/ui/parser/issues/issue-21146.rs similarity index 100% rename from src/test/ui/parser/issues/issue-21146.rs rename to tests/ui/parser/issues/issue-21146.rs diff --git a/src/test/ui/parser/issues/issue-21146.stderr b/tests/ui/parser/issues/issue-21146.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-21146.stderr rename to tests/ui/parser/issues/issue-21146.stderr diff --git a/src/test/ui/parser/issues/issue-21153.rs b/tests/ui/parser/issues/issue-21153.rs similarity index 100% rename from src/test/ui/parser/issues/issue-21153.rs rename to tests/ui/parser/issues/issue-21153.rs diff --git a/src/test/ui/parser/issues/issue-21153.stderr b/tests/ui/parser/issues/issue-21153.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-21153.stderr rename to tests/ui/parser/issues/issue-21153.stderr diff --git a/src/test/ui/parser/issues/issue-21475.rs b/tests/ui/parser/issues/issue-21475.rs similarity index 100% rename from src/test/ui/parser/issues/issue-21475.rs rename to tests/ui/parser/issues/issue-21475.rs diff --git a/src/test/ui/parser/issues/issue-22647.rs b/tests/ui/parser/issues/issue-22647.rs similarity index 100% rename from src/test/ui/parser/issues/issue-22647.rs rename to tests/ui/parser/issues/issue-22647.rs diff --git a/src/test/ui/parser/issues/issue-22647.stderr b/tests/ui/parser/issues/issue-22647.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-22647.stderr rename to tests/ui/parser/issues/issue-22647.stderr diff --git a/src/test/ui/parser/issues/issue-22712.rs b/tests/ui/parser/issues/issue-22712.rs similarity index 100% rename from src/test/ui/parser/issues/issue-22712.rs rename to tests/ui/parser/issues/issue-22712.rs diff --git a/src/test/ui/parser/issues/issue-22712.stderr b/tests/ui/parser/issues/issue-22712.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-22712.stderr rename to tests/ui/parser/issues/issue-22712.stderr diff --git a/src/test/ui/parser/issues/issue-2354-1.rs b/tests/ui/parser/issues/issue-2354-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-2354-1.rs rename to tests/ui/parser/issues/issue-2354-1.rs diff --git a/src/test/ui/parser/issues/issue-2354-1.stderr b/tests/ui/parser/issues/issue-2354-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-2354-1.stderr rename to tests/ui/parser/issues/issue-2354-1.stderr diff --git a/src/test/ui/parser/issues/issue-2354.rs b/tests/ui/parser/issues/issue-2354.rs similarity index 100% rename from src/test/ui/parser/issues/issue-2354.rs rename to tests/ui/parser/issues/issue-2354.rs diff --git a/src/test/ui/parser/issues/issue-2354.stderr b/tests/ui/parser/issues/issue-2354.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-2354.stderr rename to tests/ui/parser/issues/issue-2354.stderr diff --git a/src/test/ui/parser/issues/issue-23620-invalid-escapes.rs b/tests/ui/parser/issues/issue-23620-invalid-escapes.rs similarity index 100% rename from src/test/ui/parser/issues/issue-23620-invalid-escapes.rs rename to tests/ui/parser/issues/issue-23620-invalid-escapes.rs diff --git a/src/test/ui/parser/issues/issue-23620-invalid-escapes.stderr b/tests/ui/parser/issues/issue-23620-invalid-escapes.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-23620-invalid-escapes.stderr rename to tests/ui/parser/issues/issue-23620-invalid-escapes.stderr diff --git a/src/test/ui/parser/issues/issue-24197.rs b/tests/ui/parser/issues/issue-24197.rs similarity index 100% rename from src/test/ui/parser/issues/issue-24197.rs rename to tests/ui/parser/issues/issue-24197.rs diff --git a/src/test/ui/parser/issues/issue-24197.stderr b/tests/ui/parser/issues/issue-24197.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-24197.stderr rename to tests/ui/parser/issues/issue-24197.stderr diff --git a/src/test/ui/parser/issues/issue-24375.rs b/tests/ui/parser/issues/issue-24375.rs similarity index 100% rename from src/test/ui/parser/issues/issue-24375.rs rename to tests/ui/parser/issues/issue-24375.rs diff --git a/src/test/ui/parser/issues/issue-24375.stderr b/tests/ui/parser/issues/issue-24375.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-24375.stderr rename to tests/ui/parser/issues/issue-24375.stderr diff --git a/src/test/ui/parser/issues/issue-24780.rs b/tests/ui/parser/issues/issue-24780.rs similarity index 100% rename from src/test/ui/parser/issues/issue-24780.rs rename to tests/ui/parser/issues/issue-24780.rs diff --git a/src/test/ui/parser/issues/issue-24780.stderr b/tests/ui/parser/issues/issue-24780.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-24780.stderr rename to tests/ui/parser/issues/issue-24780.stderr diff --git a/src/test/ui/parser/issues/issue-27255.rs b/tests/ui/parser/issues/issue-27255.rs similarity index 100% rename from src/test/ui/parser/issues/issue-27255.rs rename to tests/ui/parser/issues/issue-27255.rs diff --git a/src/test/ui/parser/issues/issue-27255.stderr b/tests/ui/parser/issues/issue-27255.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-27255.stderr rename to tests/ui/parser/issues/issue-27255.stderr diff --git a/src/test/ui/parser/issues/issue-30318.fixed b/tests/ui/parser/issues/issue-30318.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-30318.fixed rename to tests/ui/parser/issues/issue-30318.fixed diff --git a/src/test/ui/parser/issues/issue-30318.rs b/tests/ui/parser/issues/issue-30318.rs similarity index 100% rename from src/test/ui/parser/issues/issue-30318.rs rename to tests/ui/parser/issues/issue-30318.rs diff --git a/src/test/ui/parser/issues/issue-30318.stderr b/tests/ui/parser/issues/issue-30318.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-30318.stderr rename to tests/ui/parser/issues/issue-30318.stderr diff --git a/src/test/ui/parser/issues/issue-3036.fixed b/tests/ui/parser/issues/issue-3036.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-3036.fixed rename to tests/ui/parser/issues/issue-3036.fixed diff --git a/src/test/ui/parser/issues/issue-3036.rs b/tests/ui/parser/issues/issue-3036.rs similarity index 100% rename from src/test/ui/parser/issues/issue-3036.rs rename to tests/ui/parser/issues/issue-3036.rs diff --git a/src/test/ui/parser/issues/issue-3036.stderr b/tests/ui/parser/issues/issue-3036.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-3036.stderr rename to tests/ui/parser/issues/issue-3036.stderr diff --git a/src/test/ui/parser/issues/issue-31804.rs b/tests/ui/parser/issues/issue-31804.rs similarity index 100% rename from src/test/ui/parser/issues/issue-31804.rs rename to tests/ui/parser/issues/issue-31804.rs diff --git a/src/test/ui/parser/issues/issue-31804.stderr b/tests/ui/parser/issues/issue-31804.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-31804.stderr rename to tests/ui/parser/issues/issue-31804.stderr diff --git a/src/test/ui/parser/issues/issue-32214.rs b/tests/ui/parser/issues/issue-32214.rs similarity index 100% rename from src/test/ui/parser/issues/issue-32214.rs rename to tests/ui/parser/issues/issue-32214.rs diff --git a/src/test/ui/parser/issues/issue-32214.stderr b/tests/ui/parser/issues/issue-32214.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-32214.stderr rename to tests/ui/parser/issues/issue-32214.stderr diff --git a/src/test/ui/parser/issues/issue-32446.rs b/tests/ui/parser/issues/issue-32446.rs similarity index 100% rename from src/test/ui/parser/issues/issue-32446.rs rename to tests/ui/parser/issues/issue-32446.rs diff --git a/src/test/ui/parser/issues/issue-32446.stderr b/tests/ui/parser/issues/issue-32446.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-32446.stderr rename to tests/ui/parser/issues/issue-32446.stderr diff --git a/src/test/ui/parser/issues/issue-32501.rs b/tests/ui/parser/issues/issue-32501.rs similarity index 100% rename from src/test/ui/parser/issues/issue-32501.rs rename to tests/ui/parser/issues/issue-32501.rs diff --git a/src/test/ui/parser/issues/issue-32501.stderr b/tests/ui/parser/issues/issue-32501.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-32501.stderr rename to tests/ui/parser/issues/issue-32501.stderr diff --git a/src/test/ui/parser/issues/issue-32505.rs b/tests/ui/parser/issues/issue-32505.rs similarity index 100% rename from src/test/ui/parser/issues/issue-32505.rs rename to tests/ui/parser/issues/issue-32505.rs diff --git a/src/test/ui/parser/issues/issue-32505.stderr b/tests/ui/parser/issues/issue-32505.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-32505.stderr rename to tests/ui/parser/issues/issue-32505.stderr diff --git a/src/test/ui/parser/issues/issue-33262.rs b/tests/ui/parser/issues/issue-33262.rs similarity index 100% rename from src/test/ui/parser/issues/issue-33262.rs rename to tests/ui/parser/issues/issue-33262.rs diff --git a/src/test/ui/parser/issues/issue-33262.stderr b/tests/ui/parser/issues/issue-33262.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-33262.stderr rename to tests/ui/parser/issues/issue-33262.stderr diff --git a/src/test/ui/parser/issues/issue-33413.rs b/tests/ui/parser/issues/issue-33413.rs similarity index 100% rename from src/test/ui/parser/issues/issue-33413.rs rename to tests/ui/parser/issues/issue-33413.rs diff --git a/src/test/ui/parser/issues/issue-33413.stderr b/tests/ui/parser/issues/issue-33413.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-33413.stderr rename to tests/ui/parser/issues/issue-33413.stderr diff --git a/src/test/ui/parser/issues/issue-33418.fixed b/tests/ui/parser/issues/issue-33418.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-33418.fixed rename to tests/ui/parser/issues/issue-33418.fixed diff --git a/src/test/ui/parser/issues/issue-33418.rs b/tests/ui/parser/issues/issue-33418.rs similarity index 100% rename from src/test/ui/parser/issues/issue-33418.rs rename to tests/ui/parser/issues/issue-33418.rs diff --git a/src/test/ui/parser/issues/issue-33418.stderr b/tests/ui/parser/issues/issue-33418.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-33418.stderr rename to tests/ui/parser/issues/issue-33418.stderr diff --git a/src/test/ui/parser/issues/issue-33455.rs b/tests/ui/parser/issues/issue-33455.rs similarity index 100% rename from src/test/ui/parser/issues/issue-33455.rs rename to tests/ui/parser/issues/issue-33455.rs diff --git a/src/test/ui/parser/issues/issue-33455.stderr b/tests/ui/parser/issues/issue-33455.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-33455.stderr rename to tests/ui/parser/issues/issue-33455.stderr diff --git a/src/test/ui/parser/issues/issue-34222-1.rs b/tests/ui/parser/issues/issue-34222-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-34222-1.rs rename to tests/ui/parser/issues/issue-34222-1.rs diff --git a/src/test/ui/parser/issues/issue-34222-1.stderr b/tests/ui/parser/issues/issue-34222-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-34222-1.stderr rename to tests/ui/parser/issues/issue-34222-1.stderr diff --git a/src/test/ui/parser/issues/issue-34255-1.rs b/tests/ui/parser/issues/issue-34255-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-34255-1.rs rename to tests/ui/parser/issues/issue-34255-1.rs diff --git a/src/test/ui/parser/issues/issue-34255-1.stderr b/tests/ui/parser/issues/issue-34255-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-34255-1.stderr rename to tests/ui/parser/issues/issue-34255-1.stderr diff --git a/src/test/ui/parser/issues/issue-35813-postfix-after-cast.rs b/tests/ui/parser/issues/issue-35813-postfix-after-cast.rs similarity index 100% rename from src/test/ui/parser/issues/issue-35813-postfix-after-cast.rs rename to tests/ui/parser/issues/issue-35813-postfix-after-cast.rs diff --git a/src/test/ui/parser/issues/issue-35813-postfix-after-cast.stderr b/tests/ui/parser/issues/issue-35813-postfix-after-cast.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-35813-postfix-after-cast.stderr rename to tests/ui/parser/issues/issue-35813-postfix-after-cast.stderr diff --git a/src/test/ui/parser/issues/issue-41155.rs b/tests/ui/parser/issues/issue-41155.rs similarity index 100% rename from src/test/ui/parser/issues/issue-41155.rs rename to tests/ui/parser/issues/issue-41155.rs diff --git a/src/test/ui/parser/issues/issue-41155.stderr b/tests/ui/parser/issues/issue-41155.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-41155.stderr rename to tests/ui/parser/issues/issue-41155.stderr diff --git a/src/test/ui/parser/issues/issue-43196.rs b/tests/ui/parser/issues/issue-43196.rs similarity index 100% rename from src/test/ui/parser/issues/issue-43196.rs rename to tests/ui/parser/issues/issue-43196.rs diff --git a/src/test/ui/parser/issues/issue-43196.stderr b/tests/ui/parser/issues/issue-43196.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-43196.stderr rename to tests/ui/parser/issues/issue-43196.stderr diff --git a/src/test/ui/parser/issues/issue-43692.rs b/tests/ui/parser/issues/issue-43692.rs similarity index 100% rename from src/test/ui/parser/issues/issue-43692.rs rename to tests/ui/parser/issues/issue-43692.rs diff --git a/src/test/ui/parser/issues/issue-43692.stderr b/tests/ui/parser/issues/issue-43692.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-43692.stderr rename to tests/ui/parser/issues/issue-43692.stderr diff --git a/src/test/ui/parser/issues/issue-44021.rs b/tests/ui/parser/issues/issue-44021.rs similarity index 100% rename from src/test/ui/parser/issues/issue-44021.rs rename to tests/ui/parser/issues/issue-44021.rs diff --git a/src/test/ui/parser/issues/issue-44021.stderr b/tests/ui/parser/issues/issue-44021.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-44021.stderr rename to tests/ui/parser/issues/issue-44021.stderr diff --git a/src/test/ui/parser/issues/issue-44406.rs b/tests/ui/parser/issues/issue-44406.rs similarity index 100% rename from src/test/ui/parser/issues/issue-44406.rs rename to tests/ui/parser/issues/issue-44406.rs diff --git a/src/test/ui/parser/issues/issue-44406.stderr b/tests/ui/parser/issues/issue-44406.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-44406.stderr rename to tests/ui/parser/issues/issue-44406.stderr diff --git a/src/test/ui/parser/issues/issue-45296.rs b/tests/ui/parser/issues/issue-45296.rs similarity index 100% rename from src/test/ui/parser/issues/issue-45296.rs rename to tests/ui/parser/issues/issue-45296.rs diff --git a/src/test/ui/parser/issues/issue-45296.stderr b/tests/ui/parser/issues/issue-45296.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-45296.stderr rename to tests/ui/parser/issues/issue-45296.stderr diff --git a/src/test/ui/parser/issues/issue-46186.fixed b/tests/ui/parser/issues/issue-46186.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-46186.fixed rename to tests/ui/parser/issues/issue-46186.fixed diff --git a/src/test/ui/parser/issues/issue-46186.rs b/tests/ui/parser/issues/issue-46186.rs similarity index 100% rename from src/test/ui/parser/issues/issue-46186.rs rename to tests/ui/parser/issues/issue-46186.rs diff --git a/src/test/ui/parser/issues/issue-46186.stderr b/tests/ui/parser/issues/issue-46186.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-46186.stderr rename to tests/ui/parser/issues/issue-46186.stderr diff --git a/src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs b/tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs similarity index 100% rename from src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs rename to tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.rs diff --git a/src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.stderr b/tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.stderr rename to tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items-bad-variants.stderr diff --git a/src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs b/tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs similarity index 100% rename from src/test/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs rename to tests/ui/parser/issues/issue-48137-macros-cannot-interpolate-impl-items.rs diff --git a/src/test/ui/parser/issues/issue-48508-aux.rs b/tests/ui/parser/issues/issue-48508-aux.rs similarity index 100% rename from src/test/ui/parser/issues/issue-48508-aux.rs rename to tests/ui/parser/issues/issue-48508-aux.rs diff --git a/src/test/ui/parser/issues/issue-48508.rs b/tests/ui/parser/issues/issue-48508.rs similarity index 100% rename from src/test/ui/parser/issues/issue-48508.rs rename to tests/ui/parser/issues/issue-48508.rs diff --git a/src/test/ui/parser/issues/issue-48636.fixed b/tests/ui/parser/issues/issue-48636.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-48636.fixed rename to tests/ui/parser/issues/issue-48636.fixed diff --git a/src/test/ui/parser/issues/issue-48636.rs b/tests/ui/parser/issues/issue-48636.rs similarity index 100% rename from src/test/ui/parser/issues/issue-48636.rs rename to tests/ui/parser/issues/issue-48636.rs diff --git a/src/test/ui/parser/issues/issue-48636.stderr b/tests/ui/parser/issues/issue-48636.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-48636.stderr rename to tests/ui/parser/issues/issue-48636.stderr diff --git a/src/test/ui/parser/issues/issue-49040.rs b/tests/ui/parser/issues/issue-49040.rs similarity index 100% rename from src/test/ui/parser/issues/issue-49040.rs rename to tests/ui/parser/issues/issue-49040.rs diff --git a/src/test/ui/parser/issues/issue-49040.stderr b/tests/ui/parser/issues/issue-49040.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-49040.stderr rename to tests/ui/parser/issues/issue-49040.stderr diff --git a/src/test/ui/parser/issues/issue-51602.rs b/tests/ui/parser/issues/issue-51602.rs similarity index 100% rename from src/test/ui/parser/issues/issue-51602.rs rename to tests/ui/parser/issues/issue-51602.rs diff --git a/src/test/ui/parser/issues/issue-51602.stderr b/tests/ui/parser/issues/issue-51602.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-51602.stderr rename to tests/ui/parser/issues/issue-51602.stderr diff --git a/src/test/ui/parser/issues/issue-52496.rs b/tests/ui/parser/issues/issue-52496.rs similarity index 100% rename from src/test/ui/parser/issues/issue-52496.rs rename to tests/ui/parser/issues/issue-52496.rs diff --git a/src/test/ui/parser/issues/issue-52496.stderr b/tests/ui/parser/issues/issue-52496.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-52496.stderr rename to tests/ui/parser/issues/issue-52496.stderr diff --git a/src/test/ui/parser/issues/issue-54521-1.rs b/tests/ui/parser/issues/issue-54521-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-54521-1.rs rename to tests/ui/parser/issues/issue-54521-1.rs diff --git a/src/test/ui/parser/issues/issue-54521-2.fixed b/tests/ui/parser/issues/issue-54521-2.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-54521-2.fixed rename to tests/ui/parser/issues/issue-54521-2.fixed diff --git a/src/test/ui/parser/issues/issue-54521-2.rs b/tests/ui/parser/issues/issue-54521-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-54521-2.rs rename to tests/ui/parser/issues/issue-54521-2.rs diff --git a/src/test/ui/parser/issues/issue-54521-2.stderr b/tests/ui/parser/issues/issue-54521-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-54521-2.stderr rename to tests/ui/parser/issues/issue-54521-2.stderr diff --git a/src/test/ui/parser/issues/issue-54521-3.fixed b/tests/ui/parser/issues/issue-54521-3.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-54521-3.fixed rename to tests/ui/parser/issues/issue-54521-3.fixed diff --git a/src/test/ui/parser/issues/issue-54521-3.rs b/tests/ui/parser/issues/issue-54521-3.rs similarity index 100% rename from src/test/ui/parser/issues/issue-54521-3.rs rename to tests/ui/parser/issues/issue-54521-3.rs diff --git a/src/test/ui/parser/issues/issue-54521-3.stderr b/tests/ui/parser/issues/issue-54521-3.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-54521-3.stderr rename to tests/ui/parser/issues/issue-54521-3.stderr diff --git a/src/test/ui/parser/issues/issue-5544-a.rs b/tests/ui/parser/issues/issue-5544-a.rs similarity index 100% rename from src/test/ui/parser/issues/issue-5544-a.rs rename to tests/ui/parser/issues/issue-5544-a.rs diff --git a/src/test/ui/parser/issues/issue-5544-a.stderr b/tests/ui/parser/issues/issue-5544-a.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-5544-a.stderr rename to tests/ui/parser/issues/issue-5544-a.stderr diff --git a/src/test/ui/parser/issues/issue-5544-b.rs b/tests/ui/parser/issues/issue-5544-b.rs similarity index 100% rename from src/test/ui/parser/issues/issue-5544-b.rs rename to tests/ui/parser/issues/issue-5544-b.rs diff --git a/src/test/ui/parser/issues/issue-5544-b.stderr b/tests/ui/parser/issues/issue-5544-b.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-5544-b.stderr rename to tests/ui/parser/issues/issue-5544-b.stderr diff --git a/src/test/ui/parser/issues/issue-56031.rs b/tests/ui/parser/issues/issue-56031.rs similarity index 100% rename from src/test/ui/parser/issues/issue-56031.rs rename to tests/ui/parser/issues/issue-56031.rs diff --git a/src/test/ui/parser/issues/issue-56031.stderr b/tests/ui/parser/issues/issue-56031.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-56031.stderr rename to tests/ui/parser/issues/issue-56031.stderr diff --git a/src/test/ui/parser/issues/issue-57198.rs b/tests/ui/parser/issues/issue-57198.rs similarity index 100% rename from src/test/ui/parser/issues/issue-57198.rs rename to tests/ui/parser/issues/issue-57198.rs diff --git a/src/test/ui/parser/issues/issue-57198.stderr b/tests/ui/parser/issues/issue-57198.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-57198.stderr rename to tests/ui/parser/issues/issue-57198.stderr diff --git a/src/test/ui/parser/issues/issue-57684.fixed b/tests/ui/parser/issues/issue-57684.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-57684.fixed rename to tests/ui/parser/issues/issue-57684.fixed diff --git a/src/test/ui/parser/issues/issue-57684.rs b/tests/ui/parser/issues/issue-57684.rs similarity index 100% rename from src/test/ui/parser/issues/issue-57684.rs rename to tests/ui/parser/issues/issue-57684.rs diff --git a/src/test/ui/parser/issues/issue-57684.stderr b/tests/ui/parser/issues/issue-57684.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-57684.stderr rename to tests/ui/parser/issues/issue-57684.stderr diff --git a/src/test/ui/parser/issues/issue-57819.fixed b/tests/ui/parser/issues/issue-57819.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-57819.fixed rename to tests/ui/parser/issues/issue-57819.fixed diff --git a/src/test/ui/parser/issues/issue-57819.rs b/tests/ui/parser/issues/issue-57819.rs similarity index 100% rename from src/test/ui/parser/issues/issue-57819.rs rename to tests/ui/parser/issues/issue-57819.rs diff --git a/src/test/ui/parser/issues/issue-57819.stderr b/tests/ui/parser/issues/issue-57819.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-57819.stderr rename to tests/ui/parser/issues/issue-57819.stderr diff --git a/src/test/ui/parser/issues/issue-5806.rs b/tests/ui/parser/issues/issue-5806.rs similarity index 100% rename from src/test/ui/parser/issues/issue-5806.rs rename to tests/ui/parser/issues/issue-5806.rs diff --git a/src/test/ui/parser/issues/issue-5806.stderr b/tests/ui/parser/issues/issue-5806.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-5806.stderr rename to tests/ui/parser/issues/issue-5806.stderr diff --git a/src/test/ui/parser/issues/issue-58094-missing-right-square-bracket.rs b/tests/ui/parser/issues/issue-58094-missing-right-square-bracket.rs similarity index 100% rename from src/test/ui/parser/issues/issue-58094-missing-right-square-bracket.rs rename to tests/ui/parser/issues/issue-58094-missing-right-square-bracket.rs diff --git a/src/test/ui/parser/issues/issue-58094-missing-right-square-bracket.stderr b/tests/ui/parser/issues/issue-58094-missing-right-square-bracket.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-58094-missing-right-square-bracket.stderr rename to tests/ui/parser/issues/issue-58094-missing-right-square-bracket.stderr diff --git a/src/test/ui/parser/issues/issue-58856-1.rs b/tests/ui/parser/issues/issue-58856-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-58856-1.rs rename to tests/ui/parser/issues/issue-58856-1.rs diff --git a/src/test/ui/parser/issues/issue-58856-1.stderr b/tests/ui/parser/issues/issue-58856-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-58856-1.stderr rename to tests/ui/parser/issues/issue-58856-1.stderr diff --git a/src/test/ui/parser/issues/issue-58856-2.rs b/tests/ui/parser/issues/issue-58856-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-58856-2.rs rename to tests/ui/parser/issues/issue-58856-2.rs diff --git a/src/test/ui/parser/issues/issue-58856-2.stderr b/tests/ui/parser/issues/issue-58856-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-58856-2.stderr rename to tests/ui/parser/issues/issue-58856-2.stderr diff --git a/src/test/ui/parser/issues/issue-59418.rs b/tests/ui/parser/issues/issue-59418.rs similarity index 100% rename from src/test/ui/parser/issues/issue-59418.rs rename to tests/ui/parser/issues/issue-59418.rs diff --git a/src/test/ui/parser/issues/issue-59418.stderr b/tests/ui/parser/issues/issue-59418.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-59418.stderr rename to tests/ui/parser/issues/issue-59418.stderr diff --git a/src/test/ui/parser/issues/issue-60075.rs b/tests/ui/parser/issues/issue-60075.rs similarity index 100% rename from src/test/ui/parser/issues/issue-60075.rs rename to tests/ui/parser/issues/issue-60075.rs diff --git a/src/test/ui/parser/issues/issue-60075.stderr b/tests/ui/parser/issues/issue-60075.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-60075.stderr rename to tests/ui/parser/issues/issue-60075.stderr diff --git a/src/test/ui/parser/issues/issue-62524.rs b/tests/ui/parser/issues/issue-62524.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62524.rs rename to tests/ui/parser/issues/issue-62524.rs diff --git a/src/test/ui/parser/issues/issue-62524.stderr b/tests/ui/parser/issues/issue-62524.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62524.stderr rename to tests/ui/parser/issues/issue-62524.stderr diff --git a/src/test/ui/parser/issues/issue-62546.rs b/tests/ui/parser/issues/issue-62546.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62546.rs rename to tests/ui/parser/issues/issue-62546.rs diff --git a/src/test/ui/parser/issues/issue-62546.stderr b/tests/ui/parser/issues/issue-62546.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62546.stderr rename to tests/ui/parser/issues/issue-62546.stderr diff --git a/src/test/ui/parser/issues/issue-62554.rs b/tests/ui/parser/issues/issue-62554.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62554.rs rename to tests/ui/parser/issues/issue-62554.rs diff --git a/src/test/ui/parser/issues/issue-62554.stderr b/tests/ui/parser/issues/issue-62554.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62554.stderr rename to tests/ui/parser/issues/issue-62554.stderr diff --git a/src/test/ui/parser/issues/issue-62660.rs b/tests/ui/parser/issues/issue-62660.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62660.rs rename to tests/ui/parser/issues/issue-62660.rs diff --git a/src/test/ui/parser/issues/issue-62660.stderr b/tests/ui/parser/issues/issue-62660.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62660.stderr rename to tests/ui/parser/issues/issue-62660.stderr diff --git a/src/test/ui/parser/issues/issue-62881.rs b/tests/ui/parser/issues/issue-62881.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62881.rs rename to tests/ui/parser/issues/issue-62881.rs diff --git a/src/test/ui/parser/issues/issue-62881.stderr b/tests/ui/parser/issues/issue-62881.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62881.stderr rename to tests/ui/parser/issues/issue-62881.stderr diff --git a/src/test/ui/parser/issues/issue-62894.rs b/tests/ui/parser/issues/issue-62894.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62894.rs rename to tests/ui/parser/issues/issue-62894.rs diff --git a/src/test/ui/parser/issues/issue-62894.stderr b/tests/ui/parser/issues/issue-62894.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62894.stderr rename to tests/ui/parser/issues/issue-62894.stderr diff --git a/src/test/ui/parser/issues/issue-62895.rs b/tests/ui/parser/issues/issue-62895.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62895.rs rename to tests/ui/parser/issues/issue-62895.rs diff --git a/src/test/ui/parser/issues/issue-62895.stderr b/tests/ui/parser/issues/issue-62895.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62895.stderr rename to tests/ui/parser/issues/issue-62895.stderr diff --git a/src/test/ui/parser/issues/issue-62913.rs b/tests/ui/parser/issues/issue-62913.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62913.rs rename to tests/ui/parser/issues/issue-62913.rs diff --git a/src/test/ui/parser/issues/issue-62913.stderr b/tests/ui/parser/issues/issue-62913.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62913.stderr rename to tests/ui/parser/issues/issue-62913.stderr diff --git a/src/test/ui/parser/issues/issue-62973.rs b/tests/ui/parser/issues/issue-62973.rs similarity index 100% rename from src/test/ui/parser/issues/issue-62973.rs rename to tests/ui/parser/issues/issue-62973.rs diff --git a/src/test/ui/parser/issues/issue-62973.stderr b/tests/ui/parser/issues/issue-62973.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-62973.stderr rename to tests/ui/parser/issues/issue-62973.stderr diff --git a/src/test/ui/parser/issues/issue-63115-range-pat-interpolated.rs b/tests/ui/parser/issues/issue-63115-range-pat-interpolated.rs similarity index 100% rename from src/test/ui/parser/issues/issue-63115-range-pat-interpolated.rs rename to tests/ui/parser/issues/issue-63115-range-pat-interpolated.rs diff --git a/src/test/ui/parser/issues/issue-63116.rs b/tests/ui/parser/issues/issue-63116.rs similarity index 100% rename from src/test/ui/parser/issues/issue-63116.rs rename to tests/ui/parser/issues/issue-63116.rs diff --git a/src/test/ui/parser/issues/issue-63116.stderr b/tests/ui/parser/issues/issue-63116.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-63116.stderr rename to tests/ui/parser/issues/issue-63116.stderr diff --git a/src/test/ui/parser/issues/issue-63135.rs b/tests/ui/parser/issues/issue-63135.rs similarity index 100% rename from src/test/ui/parser/issues/issue-63135.rs rename to tests/ui/parser/issues/issue-63135.rs diff --git a/src/test/ui/parser/issues/issue-63135.stderr b/tests/ui/parser/issues/issue-63135.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-63135.stderr rename to tests/ui/parser/issues/issue-63135.stderr diff --git a/src/test/ui/parser/issues/issue-64732.rs b/tests/ui/parser/issues/issue-64732.rs similarity index 100% rename from src/test/ui/parser/issues/issue-64732.rs rename to tests/ui/parser/issues/issue-64732.rs diff --git a/src/test/ui/parser/issues/issue-64732.stderr b/tests/ui/parser/issues/issue-64732.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-64732.stderr rename to tests/ui/parser/issues/issue-64732.stderr diff --git a/src/test/ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs b/tests/ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs similarity index 100% rename from src/test/ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs rename to tests/ui/parser/issues/issue-65041-empty-vis-matcher-in-enum.rs diff --git a/src/test/ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs b/tests/ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs similarity index 100% rename from src/test/ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs rename to tests/ui/parser/issues/issue-65041-empty-vis-matcher-in-trait.rs diff --git a/src/test/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs b/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs similarity index 100% rename from src/test/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs rename to tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.rs diff --git a/src/test/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr b/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr rename to tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr diff --git a/src/test/ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs b/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs similarity index 100% rename from src/test/ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs rename to tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.rs diff --git a/src/test/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr b/tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr rename to tests/ui/parser/issues/issue-65257-invalid-var-decl-recovery.stderr diff --git a/src/test/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs b/tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs similarity index 100% rename from src/test/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs rename to tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs diff --git a/src/test/ui/parser/issues/issue-6610.rs b/tests/ui/parser/issues/issue-6610.rs similarity index 100% rename from src/test/ui/parser/issues/issue-6610.rs rename to tests/ui/parser/issues/issue-6610.rs diff --git a/src/test/ui/parser/issues/issue-6610.stderr b/tests/ui/parser/issues/issue-6610.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-6610.stderr rename to tests/ui/parser/issues/issue-6610.stderr diff --git a/src/test/ui/parser/issues/issue-66357-unexpected-unreachable.rs b/tests/ui/parser/issues/issue-66357-unexpected-unreachable.rs similarity index 100% rename from src/test/ui/parser/issues/issue-66357-unexpected-unreachable.rs rename to tests/ui/parser/issues/issue-66357-unexpected-unreachable.rs diff --git a/src/test/ui/parser/issues/issue-66357-unexpected-unreachable.stderr b/tests/ui/parser/issues/issue-66357-unexpected-unreachable.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-66357-unexpected-unreachable.stderr rename to tests/ui/parser/issues/issue-66357-unexpected-unreachable.stderr diff --git a/src/test/ui/parser/issues/issue-66473.rs b/tests/ui/parser/issues/issue-66473.rs similarity index 100% rename from src/test/ui/parser/issues/issue-66473.rs rename to tests/ui/parser/issues/issue-66473.rs diff --git a/src/test/ui/parser/issues/issue-66473.stderr b/tests/ui/parser/issues/issue-66473.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-66473.stderr rename to tests/ui/parser/issues/issue-66473.stderr diff --git a/src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.fixed b/tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.fixed rename to tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.fixed diff --git a/src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs b/tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs similarity index 100% rename from src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs rename to tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.rs diff --git a/src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.stderr b/tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.stderr rename to tests/ui/parser/issues/issue-67146-negative-outlives-bound-syntactic-fail.stderr diff --git a/src/test/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs b/tests/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs similarity index 100% rename from src/test/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs rename to tests/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.rs diff --git a/src/test/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.stderr b/tests/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.stderr rename to tests/ui/parser/issues/issue-67377-invalid-syntax-in-enum-discriminant.stderr diff --git a/src/test/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs b/tests/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs rename to tests/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.rs diff --git a/src/test/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.stderr b/tests/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.stderr rename to tests/ui/parser/issues/issue-68000-unicode-ident-after-missing-comma.stderr diff --git a/src/test/ui/parser/issues/issue-68629.rs b/tests/ui/parser/issues/issue-68629.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68629.rs rename to tests/ui/parser/issues/issue-68629.rs diff --git a/src/test/ui/parser/issues/issue-68629.stderr b/tests/ui/parser/issues/issue-68629.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-68629.stderr rename to tests/ui/parser/issues/issue-68629.stderr diff --git a/src/test/ui/parser/issues/issue-68730.rs b/tests/ui/parser/issues/issue-68730.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68730.rs rename to tests/ui/parser/issues/issue-68730.rs diff --git a/src/test/ui/parser/issues/issue-68730.stderr b/tests/ui/parser/issues/issue-68730.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-68730.stderr rename to tests/ui/parser/issues/issue-68730.stderr diff --git a/src/test/ui/parser/issues/issue-68788-in-trait-item-propagation.rs b/tests/ui/parser/issues/issue-68788-in-trait-item-propagation.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68788-in-trait-item-propagation.rs rename to tests/ui/parser/issues/issue-68788-in-trait-item-propagation.rs diff --git a/src/test/ui/parser/issues/issue-68890-2.rs b/tests/ui/parser/issues/issue-68890-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68890-2.rs rename to tests/ui/parser/issues/issue-68890-2.rs diff --git a/src/test/ui/parser/issues/issue-68890-2.stderr b/tests/ui/parser/issues/issue-68890-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-68890-2.stderr rename to tests/ui/parser/issues/issue-68890-2.stderr diff --git a/src/test/ui/parser/issues/issue-68890.rs b/tests/ui/parser/issues/issue-68890.rs similarity index 100% rename from src/test/ui/parser/issues/issue-68890.rs rename to tests/ui/parser/issues/issue-68890.rs diff --git a/src/test/ui/parser/issues/issue-68890.stderr b/tests/ui/parser/issues/issue-68890.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-68890.stderr rename to tests/ui/parser/issues/issue-68890.stderr diff --git a/src/test/ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs b/tests/ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs rename to tests/ui/parser/issues/issue-70050-ntliteral-accepts-negated-lit.rs diff --git a/src/test/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs b/tests/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs rename to tests/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.rs diff --git a/src/test/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.stderr b/tests/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.stderr rename to tests/ui/parser/issues/issue-70388-recover-dotdotdot-rest-pat.stderr diff --git a/src/test/ui/parser/issues/issue-70388-without-witness.fixed b/tests/ui/parser/issues/issue-70388-without-witness.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-70388-without-witness.fixed rename to tests/ui/parser/issues/issue-70388-without-witness.fixed diff --git a/src/test/ui/parser/issues/issue-70388-without-witness.rs b/tests/ui/parser/issues/issue-70388-without-witness.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70388-without-witness.rs rename to tests/ui/parser/issues/issue-70388-without-witness.rs diff --git a/src/test/ui/parser/issues/issue-70388-without-witness.stderr b/tests/ui/parser/issues/issue-70388-without-witness.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70388-without-witness.stderr rename to tests/ui/parser/issues/issue-70388-without-witness.stderr diff --git a/src/test/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs b/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs rename to tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.rs diff --git a/src/test/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr b/tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr rename to tests/ui/parser/issues/issue-70549-resolve-after-recovered-self-ctor.stderr diff --git a/src/test/ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs b/tests/ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs rename to tests/ui/parser/issues/issue-70552-ascription-in-parens-after-call.rs diff --git a/src/test/ui/parser/issues/issue-70552-ascription-in-parens-after-call.stderr b/tests/ui/parser/issues/issue-70552-ascription-in-parens-after-call.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70552-ascription-in-parens-after-call.stderr rename to tests/ui/parser/issues/issue-70552-ascription-in-parens-after-call.stderr diff --git a/src/test/ui/parser/issues/issue-70583-block-is-empty-1.rs b/tests/ui/parser/issues/issue-70583-block-is-empty-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70583-block-is-empty-1.rs rename to tests/ui/parser/issues/issue-70583-block-is-empty-1.rs diff --git a/src/test/ui/parser/issues/issue-70583-block-is-empty-1.stderr b/tests/ui/parser/issues/issue-70583-block-is-empty-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70583-block-is-empty-1.stderr rename to tests/ui/parser/issues/issue-70583-block-is-empty-1.stderr diff --git a/src/test/ui/parser/issues/issue-70583-block-is-empty-2.rs b/tests/ui/parser/issues/issue-70583-block-is-empty-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-70583-block-is-empty-2.rs rename to tests/ui/parser/issues/issue-70583-block-is-empty-2.rs diff --git a/src/test/ui/parser/issues/issue-70583-block-is-empty-2.stderr b/tests/ui/parser/issues/issue-70583-block-is-empty-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-70583-block-is-empty-2.stderr rename to tests/ui/parser/issues/issue-70583-block-is-empty-2.stderr diff --git a/src/test/ui/parser/issues/issue-7222.rs b/tests/ui/parser/issues/issue-7222.rs similarity index 100% rename from src/test/ui/parser/issues/issue-7222.rs rename to tests/ui/parser/issues/issue-7222.rs diff --git a/src/test/ui/parser/issues/issue-72253.rs b/tests/ui/parser/issues/issue-72253.rs similarity index 100% rename from src/test/ui/parser/issues/issue-72253.rs rename to tests/ui/parser/issues/issue-72253.rs diff --git a/src/test/ui/parser/issues/issue-72253.stderr b/tests/ui/parser/issues/issue-72253.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-72253.stderr rename to tests/ui/parser/issues/issue-72253.stderr diff --git a/src/test/ui/parser/issues/issue-72373.rs b/tests/ui/parser/issues/issue-72373.rs similarity index 100% rename from src/test/ui/parser/issues/issue-72373.rs rename to tests/ui/parser/issues/issue-72373.rs diff --git a/src/test/ui/parser/issues/issue-72373.stderr b/tests/ui/parser/issues/issue-72373.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-72373.stderr rename to tests/ui/parser/issues/issue-72373.stderr diff --git a/src/test/ui/parser/issues/issue-73568-lifetime-after-mut.rs b/tests/ui/parser/issues/issue-73568-lifetime-after-mut.rs similarity index 100% rename from src/test/ui/parser/issues/issue-73568-lifetime-after-mut.rs rename to tests/ui/parser/issues/issue-73568-lifetime-after-mut.rs diff --git a/src/test/ui/parser/issues/issue-73568-lifetime-after-mut.stderr b/tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-73568-lifetime-after-mut.stderr rename to tests/ui/parser/issues/issue-73568-lifetime-after-mut.stderr diff --git a/src/test/ui/parser/issues/issue-75599.rs b/tests/ui/parser/issues/issue-75599.rs similarity index 100% rename from src/test/ui/parser/issues/issue-75599.rs rename to tests/ui/parser/issues/issue-75599.rs diff --git a/src/test/ui/parser/issues/issue-76437-async.rs b/tests/ui/parser/issues/issue-76437-async.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-async.rs rename to tests/ui/parser/issues/issue-76437-async.rs diff --git a/src/test/ui/parser/issues/issue-76437-async.stderr b/tests/ui/parser/issues/issue-76437-async.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-async.stderr rename to tests/ui/parser/issues/issue-76437-async.stderr diff --git a/src/test/ui/parser/issues/issue-76437-const-async-unsafe.rs b/tests/ui/parser/issues/issue-76437-const-async-unsafe.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const-async-unsafe.rs rename to tests/ui/parser/issues/issue-76437-const-async-unsafe.rs diff --git a/src/test/ui/parser/issues/issue-76437-const-async-unsafe.stderr b/tests/ui/parser/issues/issue-76437-const-async-unsafe.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const-async-unsafe.stderr rename to tests/ui/parser/issues/issue-76437-const-async-unsafe.stderr diff --git a/src/test/ui/parser/issues/issue-76437-const-async.rs b/tests/ui/parser/issues/issue-76437-const-async.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const-async.rs rename to tests/ui/parser/issues/issue-76437-const-async.rs diff --git a/src/test/ui/parser/issues/issue-76437-const-async.stderr b/tests/ui/parser/issues/issue-76437-const-async.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const-async.stderr rename to tests/ui/parser/issues/issue-76437-const-async.stderr diff --git a/src/test/ui/parser/issues/issue-76437-const.rs b/tests/ui/parser/issues/issue-76437-const.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const.rs rename to tests/ui/parser/issues/issue-76437-const.rs diff --git a/src/test/ui/parser/issues/issue-76437-const.stderr b/tests/ui/parser/issues/issue-76437-const.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-const.stderr rename to tests/ui/parser/issues/issue-76437-const.stderr diff --git a/src/test/ui/parser/issues/issue-76437-pub-crate-unsafe.rs b/tests/ui/parser/issues/issue-76437-pub-crate-unsafe.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-pub-crate-unsafe.rs rename to tests/ui/parser/issues/issue-76437-pub-crate-unsafe.rs diff --git a/src/test/ui/parser/issues/issue-76437-pub-crate-unsafe.stderr b/tests/ui/parser/issues/issue-76437-pub-crate-unsafe.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-pub-crate-unsafe.stderr rename to tests/ui/parser/issues/issue-76437-pub-crate-unsafe.stderr diff --git a/src/test/ui/parser/issues/issue-76437-unsafe.rs b/tests/ui/parser/issues/issue-76437-unsafe.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76437-unsafe.rs rename to tests/ui/parser/issues/issue-76437-unsafe.rs diff --git a/src/test/ui/parser/issues/issue-76437-unsafe.stderr b/tests/ui/parser/issues/issue-76437-unsafe.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76437-unsafe.stderr rename to tests/ui/parser/issues/issue-76437-unsafe.stderr diff --git a/src/test/ui/parser/issues/issue-76597.fixed b/tests/ui/parser/issues/issue-76597.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-76597.fixed rename to tests/ui/parser/issues/issue-76597.fixed diff --git a/src/test/ui/parser/issues/issue-76597.rs b/tests/ui/parser/issues/issue-76597.rs similarity index 100% rename from src/test/ui/parser/issues/issue-76597.rs rename to tests/ui/parser/issues/issue-76597.rs diff --git a/src/test/ui/parser/issues/issue-76597.stderr b/tests/ui/parser/issues/issue-76597.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-76597.stderr rename to tests/ui/parser/issues/issue-76597.stderr diff --git a/src/test/ui/parser/issues/issue-7970b.rs b/tests/ui/parser/issues/issue-7970b.rs similarity index 100% rename from src/test/ui/parser/issues/issue-7970b.rs rename to tests/ui/parser/issues/issue-7970b.rs diff --git a/src/test/ui/parser/issues/issue-7970b.stderr b/tests/ui/parser/issues/issue-7970b.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-7970b.stderr rename to tests/ui/parser/issues/issue-7970b.stderr diff --git a/src/test/ui/parser/issues/issue-81806.rs b/tests/ui/parser/issues/issue-81806.rs similarity index 100% rename from src/test/ui/parser/issues/issue-81806.rs rename to tests/ui/parser/issues/issue-81806.rs diff --git a/src/test/ui/parser/issues/issue-81806.stderr b/tests/ui/parser/issues/issue-81806.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-81806.stderr rename to tests/ui/parser/issues/issue-81806.stderr diff --git a/src/test/ui/parser/issues/issue-83639.rs b/tests/ui/parser/issues/issue-83639.rs similarity index 100% rename from src/test/ui/parser/issues/issue-83639.rs rename to tests/ui/parser/issues/issue-83639.rs diff --git a/src/test/ui/parser/issues/issue-83639.stderr b/tests/ui/parser/issues/issue-83639.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-83639.stderr rename to tests/ui/parser/issues/issue-83639.stderr diff --git a/src/test/ui/parser/issues/issue-84104.rs b/tests/ui/parser/issues/issue-84104.rs similarity index 100% rename from src/test/ui/parser/issues/issue-84104.rs rename to tests/ui/parser/issues/issue-84104.rs diff --git a/src/test/ui/parser/issues/issue-84104.stderr b/tests/ui/parser/issues/issue-84104.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-84104.stderr rename to tests/ui/parser/issues/issue-84104.stderr diff --git a/src/test/ui/parser/issues/issue-84117.rs b/tests/ui/parser/issues/issue-84117.rs similarity index 100% rename from src/test/ui/parser/issues/issue-84117.rs rename to tests/ui/parser/issues/issue-84117.rs diff --git a/src/test/ui/parser/issues/issue-84117.stderr b/tests/ui/parser/issues/issue-84117.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-84117.stderr rename to tests/ui/parser/issues/issue-84117.stderr diff --git a/src/test/ui/parser/issues/issue-84148-1.rs b/tests/ui/parser/issues/issue-84148-1.rs similarity index 100% rename from src/test/ui/parser/issues/issue-84148-1.rs rename to tests/ui/parser/issues/issue-84148-1.rs diff --git a/src/test/ui/parser/issues/issue-84148-1.stderr b/tests/ui/parser/issues/issue-84148-1.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-84148-1.stderr rename to tests/ui/parser/issues/issue-84148-1.stderr diff --git a/src/test/ui/parser/issues/issue-84148-2.rs b/tests/ui/parser/issues/issue-84148-2.rs similarity index 100% rename from src/test/ui/parser/issues/issue-84148-2.rs rename to tests/ui/parser/issues/issue-84148-2.rs diff --git a/src/test/ui/parser/issues/issue-84148-2.stderr b/tests/ui/parser/issues/issue-84148-2.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-84148-2.stderr rename to tests/ui/parser/issues/issue-84148-2.stderr diff --git a/src/test/ui/parser/issues/issue-8537.rs b/tests/ui/parser/issues/issue-8537.rs similarity index 100% rename from src/test/ui/parser/issues/issue-8537.rs rename to tests/ui/parser/issues/issue-8537.rs diff --git a/src/test/ui/parser/issues/issue-8537.stderr b/tests/ui/parser/issues/issue-8537.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-8537.stderr rename to tests/ui/parser/issues/issue-8537.stderr diff --git a/src/test/ui/parser/issues/issue-86895.rs b/tests/ui/parser/issues/issue-86895.rs similarity index 100% rename from src/test/ui/parser/issues/issue-86895.rs rename to tests/ui/parser/issues/issue-86895.rs diff --git a/src/test/ui/parser/issues/issue-86895.stderr b/tests/ui/parser/issues/issue-86895.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-86895.stderr rename to tests/ui/parser/issues/issue-86895.stderr diff --git a/src/test/ui/parser/issues/issue-87086-colon-path-sep.rs b/tests/ui/parser/issues/issue-87086-colon-path-sep.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87086-colon-path-sep.rs rename to tests/ui/parser/issues/issue-87086-colon-path-sep.rs diff --git a/src/test/ui/parser/issues/issue-87086-colon-path-sep.stderr b/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87086-colon-path-sep.stderr rename to tests/ui/parser/issues/issue-87086-colon-path-sep.stderr diff --git a/src/test/ui/parser/issues/issue-87197-missing-semicolon.fixed b/tests/ui/parser/issues/issue-87197-missing-semicolon.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-87197-missing-semicolon.fixed rename to tests/ui/parser/issues/issue-87197-missing-semicolon.fixed diff --git a/src/test/ui/parser/issues/issue-87197-missing-semicolon.rs b/tests/ui/parser/issues/issue-87197-missing-semicolon.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87197-missing-semicolon.rs rename to tests/ui/parser/issues/issue-87197-missing-semicolon.rs diff --git a/src/test/ui/parser/issues/issue-87197-missing-semicolon.stderr b/tests/ui/parser/issues/issue-87197-missing-semicolon.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87197-missing-semicolon.stderr rename to tests/ui/parser/issues/issue-87197-missing-semicolon.stderr diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/const-async-const.rs b/tests/ui/parser/issues/issue-87217-keyword-order/const-async-const.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/const-async-const.rs rename to tests/ui/parser/issues/issue-87217-keyword-order/const-async-const.rs diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/const-async-const.stderr b/tests/ui/parser/issues/issue-87217-keyword-order/const-async-const.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/const-async-const.stderr rename to tests/ui/parser/issues/issue-87217-keyword-order/const-async-const.stderr diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.rs b/tests/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.rs rename to tests/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.rs diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.stderr b/tests/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.stderr rename to tests/ui/parser/issues/issue-87217-keyword-order/several-kw-jump.stderr diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-async.rs b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-async.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-async.rs rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-async.rs diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-async.stderr b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-async.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-async.stderr rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-async.stderr diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-const.rs b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-const.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-const.rs rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-const.rs diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-const.stderr b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-const.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-const.stderr rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-const.stderr diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.rs b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.rs rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.rs diff --git a/src/test/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.stderr b/tests/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.stderr rename to tests/ui/parser/issues/issue-87217-keyword-order/wrong-unsafe.stderr diff --git a/src/test/ui/parser/issues/issue-87635.rs b/tests/ui/parser/issues/issue-87635.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87635.rs rename to tests/ui/parser/issues/issue-87635.rs diff --git a/src/test/ui/parser/issues/issue-87635.stderr b/tests/ui/parser/issues/issue-87635.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87635.stderr rename to tests/ui/parser/issues/issue-87635.stderr diff --git a/src/test/ui/parser/issues/issue-87812-path.rs b/tests/ui/parser/issues/issue-87812-path.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87812-path.rs rename to tests/ui/parser/issues/issue-87812-path.rs diff --git a/src/test/ui/parser/issues/issue-87812-path.stderr b/tests/ui/parser/issues/issue-87812-path.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87812-path.stderr rename to tests/ui/parser/issues/issue-87812-path.stderr diff --git a/src/test/ui/parser/issues/issue-87812.rs b/tests/ui/parser/issues/issue-87812.rs similarity index 100% rename from src/test/ui/parser/issues/issue-87812.rs rename to tests/ui/parser/issues/issue-87812.rs diff --git a/src/test/ui/parser/issues/issue-87812.stderr b/tests/ui/parser/issues/issue-87812.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-87812.stderr rename to tests/ui/parser/issues/issue-87812.stderr diff --git a/src/test/ui/parser/issues/issue-88276-unary-plus.fixed b/tests/ui/parser/issues/issue-88276-unary-plus.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-88276-unary-plus.fixed rename to tests/ui/parser/issues/issue-88276-unary-plus.fixed diff --git a/src/test/ui/parser/issues/issue-88276-unary-plus.rs b/tests/ui/parser/issues/issue-88276-unary-plus.rs similarity index 100% rename from src/test/ui/parser/issues/issue-88276-unary-plus.rs rename to tests/ui/parser/issues/issue-88276-unary-plus.rs diff --git a/src/test/ui/parser/issues/issue-88276-unary-plus.stderr b/tests/ui/parser/issues/issue-88276-unary-plus.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-88276-unary-plus.stderr rename to tests/ui/parser/issues/issue-88276-unary-plus.stderr diff --git a/src/test/ui/parser/issues/issue-88583-union-as-ident.rs b/tests/ui/parser/issues/issue-88583-union-as-ident.rs similarity index 100% rename from src/test/ui/parser/issues/issue-88583-union-as-ident.rs rename to tests/ui/parser/issues/issue-88583-union-as-ident.rs diff --git a/src/test/ui/parser/issues/issue-88770.rs b/tests/ui/parser/issues/issue-88770.rs similarity index 100% rename from src/test/ui/parser/issues/issue-88770.rs rename to tests/ui/parser/issues/issue-88770.rs diff --git a/src/test/ui/parser/issues/issue-88770.stderr b/tests/ui/parser/issues/issue-88770.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-88770.stderr rename to tests/ui/parser/issues/issue-88770.stderr diff --git a/src/test/ui/parser/issues/issue-88818.rs b/tests/ui/parser/issues/issue-88818.rs similarity index 100% rename from src/test/ui/parser/issues/issue-88818.rs rename to tests/ui/parser/issues/issue-88818.rs diff --git a/src/test/ui/parser/issues/issue-88818.stderr b/tests/ui/parser/issues/issue-88818.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-88818.stderr rename to tests/ui/parser/issues/issue-88818.stderr diff --git a/src/test/ui/parser/issues/issue-89388.rs b/tests/ui/parser/issues/issue-89388.rs similarity index 100% rename from src/test/ui/parser/issues/issue-89388.rs rename to tests/ui/parser/issues/issue-89388.rs diff --git a/src/test/ui/parser/issues/issue-89388.stderr b/tests/ui/parser/issues/issue-89388.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-89388.stderr rename to tests/ui/parser/issues/issue-89388.stderr diff --git a/src/test/ui/parser/issues/issue-89396.fixed b/tests/ui/parser/issues/issue-89396.fixed similarity index 100% rename from src/test/ui/parser/issues/issue-89396.fixed rename to tests/ui/parser/issues/issue-89396.fixed diff --git a/src/test/ui/parser/issues/issue-89396.rs b/tests/ui/parser/issues/issue-89396.rs similarity index 100% rename from src/test/ui/parser/issues/issue-89396.rs rename to tests/ui/parser/issues/issue-89396.rs diff --git a/src/test/ui/parser/issues/issue-89396.stderr b/tests/ui/parser/issues/issue-89396.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-89396.stderr rename to tests/ui/parser/issues/issue-89396.stderr diff --git a/src/test/ui/parser/issues/issue-89574.rs b/tests/ui/parser/issues/issue-89574.rs similarity index 100% rename from src/test/ui/parser/issues/issue-89574.rs rename to tests/ui/parser/issues/issue-89574.rs diff --git a/src/test/ui/parser/issues/issue-89574.stderr b/tests/ui/parser/issues/issue-89574.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-89574.stderr rename to tests/ui/parser/issues/issue-89574.stderr diff --git a/src/test/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs b/tests/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs similarity index 100% rename from src/test/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs rename to tests/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.rs diff --git a/src/test/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.stderr b/tests/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.stderr rename to tests/ui/parser/issues/issue-89971-outer-attr-following-inner-attr-ice.stderr diff --git a/src/test/ui/parser/issues/issue-90993.rs b/tests/ui/parser/issues/issue-90993.rs similarity index 100% rename from src/test/ui/parser/issues/issue-90993.rs rename to tests/ui/parser/issues/issue-90993.rs diff --git a/src/test/ui/parser/issues/issue-90993.stderr b/tests/ui/parser/issues/issue-90993.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-90993.stderr rename to tests/ui/parser/issues/issue-90993.stderr diff --git a/src/test/ui/parser/issues/issue-91461.rs b/tests/ui/parser/issues/issue-91461.rs similarity index 100% rename from src/test/ui/parser/issues/issue-91461.rs rename to tests/ui/parser/issues/issue-91461.rs diff --git a/src/test/ui/parser/issues/issue-91461.stderr b/tests/ui/parser/issues/issue-91461.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-91461.stderr rename to tests/ui/parser/issues/issue-91461.stderr diff --git a/src/test/ui/parser/issues/issue-93282.rs b/tests/ui/parser/issues/issue-93282.rs similarity index 100% rename from src/test/ui/parser/issues/issue-93282.rs rename to tests/ui/parser/issues/issue-93282.rs diff --git a/src/test/ui/parser/issues/issue-93282.stderr b/tests/ui/parser/issues/issue-93282.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-93282.stderr rename to tests/ui/parser/issues/issue-93282.stderr diff --git a/src/test/ui/parser/issues/issue-93867.rs b/tests/ui/parser/issues/issue-93867.rs similarity index 100% rename from src/test/ui/parser/issues/issue-93867.rs rename to tests/ui/parser/issues/issue-93867.rs diff --git a/src/test/ui/parser/issues/issue-93867.stderr b/tests/ui/parser/issues/issue-93867.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-93867.stderr rename to tests/ui/parser/issues/issue-93867.stderr diff --git a/src/test/ui/parser/issues/issue-94340.rs b/tests/ui/parser/issues/issue-94340.rs similarity index 100% rename from src/test/ui/parser/issues/issue-94340.rs rename to tests/ui/parser/issues/issue-94340.rs diff --git a/src/test/ui/parser/issues/issue-94340.stderr b/tests/ui/parser/issues/issue-94340.stderr similarity index 100% rename from src/test/ui/parser/issues/issue-94340.stderr rename to tests/ui/parser/issues/issue-94340.stderr diff --git a/src/test/ui/parser/item-free-const-no-body-semantic-fail.rs b/tests/ui/parser/item-free-const-no-body-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/item-free-const-no-body-semantic-fail.rs rename to tests/ui/parser/item-free-const-no-body-semantic-fail.rs diff --git a/src/test/ui/parser/item-free-const-no-body-semantic-fail.stderr b/tests/ui/parser/item-free-const-no-body-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/item-free-const-no-body-semantic-fail.stderr rename to tests/ui/parser/item-free-const-no-body-semantic-fail.stderr diff --git a/src/test/ui/parser/item-free-const-no-body-syntactic-pass.rs b/tests/ui/parser/item-free-const-no-body-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/item-free-const-no-body-syntactic-pass.rs rename to tests/ui/parser/item-free-const-no-body-syntactic-pass.rs diff --git a/src/test/ui/parser/item-free-static-no-body-semantic-fail.rs b/tests/ui/parser/item-free-static-no-body-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/item-free-static-no-body-semantic-fail.rs rename to tests/ui/parser/item-free-static-no-body-semantic-fail.rs diff --git a/src/test/ui/parser/item-free-static-no-body-semantic-fail.stderr b/tests/ui/parser/item-free-static-no-body-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/item-free-static-no-body-semantic-fail.stderr rename to tests/ui/parser/item-free-static-no-body-semantic-fail.stderr diff --git a/src/test/ui/parser/item-free-static-no-body-syntactic-pass.rs b/tests/ui/parser/item-free-static-no-body-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/item-free-static-no-body-syntactic-pass.rs rename to tests/ui/parser/item-free-static-no-body-syntactic-pass.rs diff --git a/src/test/ui/parser/item-free-type-bounds-semantic-fail.rs b/tests/ui/parser/item-free-type-bounds-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/item-free-type-bounds-semantic-fail.rs rename to tests/ui/parser/item-free-type-bounds-semantic-fail.rs diff --git a/src/test/ui/parser/item-free-type-bounds-semantic-fail.stderr b/tests/ui/parser/item-free-type-bounds-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/item-free-type-bounds-semantic-fail.stderr rename to tests/ui/parser/item-free-type-bounds-semantic-fail.stderr diff --git a/src/test/ui/parser/item-free-type-bounds-syntactic-pass.rs b/tests/ui/parser/item-free-type-bounds-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/item-free-type-bounds-syntactic-pass.rs rename to tests/ui/parser/item-free-type-bounds-syntactic-pass.rs diff --git a/src/test/ui/parser/item-kw-case-mismatch.fixed b/tests/ui/parser/item-kw-case-mismatch.fixed similarity index 100% rename from src/test/ui/parser/item-kw-case-mismatch.fixed rename to tests/ui/parser/item-kw-case-mismatch.fixed diff --git a/src/test/ui/parser/item-kw-case-mismatch.rs b/tests/ui/parser/item-kw-case-mismatch.rs similarity index 100% rename from src/test/ui/parser/item-kw-case-mismatch.rs rename to tests/ui/parser/item-kw-case-mismatch.rs diff --git a/src/test/ui/parser/item-kw-case-mismatch.stderr b/tests/ui/parser/item-kw-case-mismatch.stderr similarity index 100% rename from src/test/ui/parser/item-kw-case-mismatch.stderr rename to tests/ui/parser/item-kw-case-mismatch.stderr diff --git a/src/test/ui/parser/item-needs-block.rs b/tests/ui/parser/item-needs-block.rs similarity index 100% rename from src/test/ui/parser/item-needs-block.rs rename to tests/ui/parser/item-needs-block.rs diff --git a/src/test/ui/parser/item-needs-block.stderr b/tests/ui/parser/item-needs-block.stderr similarity index 100% rename from src/test/ui/parser/item-needs-block.stderr rename to tests/ui/parser/item-needs-block.stderr diff --git a/src/test/ui/parser/keyword-abstract.rs b/tests/ui/parser/keyword-abstract.rs similarity index 100% rename from src/test/ui/parser/keyword-abstract.rs rename to tests/ui/parser/keyword-abstract.rs diff --git a/src/test/ui/parser/keyword-abstract.stderr b/tests/ui/parser/keyword-abstract.stderr similarity index 100% rename from src/test/ui/parser/keyword-abstract.stderr rename to tests/ui/parser/keyword-abstract.stderr diff --git a/src/test/ui/parser/keyword-as-as-identifier.rs b/tests/ui/parser/keyword-as-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-as-as-identifier.rs rename to tests/ui/parser/keyword-as-as-identifier.rs diff --git a/src/test/ui/parser/keyword-as-as-identifier.stderr b/tests/ui/parser/keyword-as-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-as-as-identifier.stderr rename to tests/ui/parser/keyword-as-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-box-as-identifier.rs b/tests/ui/parser/keyword-box-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-box-as-identifier.rs rename to tests/ui/parser/keyword-box-as-identifier.rs diff --git a/src/test/ui/parser/keyword-box-as-identifier.stderr b/tests/ui/parser/keyword-box-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-box-as-identifier.stderr rename to tests/ui/parser/keyword-box-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-break-as-identifier.rs b/tests/ui/parser/keyword-break-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-break-as-identifier.rs rename to tests/ui/parser/keyword-break-as-identifier.rs diff --git a/src/test/ui/parser/keyword-break-as-identifier.stderr b/tests/ui/parser/keyword-break-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-break-as-identifier.stderr rename to tests/ui/parser/keyword-break-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-const-as-identifier.rs b/tests/ui/parser/keyword-const-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-const-as-identifier.rs rename to tests/ui/parser/keyword-const-as-identifier.rs diff --git a/src/test/ui/parser/keyword-const-as-identifier.stderr b/tests/ui/parser/keyword-const-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-const-as-identifier.stderr rename to tests/ui/parser/keyword-const-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-continue-as-identifier.rs b/tests/ui/parser/keyword-continue-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-continue-as-identifier.rs rename to tests/ui/parser/keyword-continue-as-identifier.rs diff --git a/src/test/ui/parser/keyword-continue-as-identifier.stderr b/tests/ui/parser/keyword-continue-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-continue-as-identifier.stderr rename to tests/ui/parser/keyword-continue-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-else-as-identifier.rs b/tests/ui/parser/keyword-else-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-else-as-identifier.rs rename to tests/ui/parser/keyword-else-as-identifier.rs diff --git a/src/test/ui/parser/keyword-else-as-identifier.stderr b/tests/ui/parser/keyword-else-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-else-as-identifier.stderr rename to tests/ui/parser/keyword-else-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-enum-as-identifier.rs b/tests/ui/parser/keyword-enum-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-enum-as-identifier.rs rename to tests/ui/parser/keyword-enum-as-identifier.rs diff --git a/src/test/ui/parser/keyword-enum-as-identifier.stderr b/tests/ui/parser/keyword-enum-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-enum-as-identifier.stderr rename to tests/ui/parser/keyword-enum-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-final.rs b/tests/ui/parser/keyword-final.rs similarity index 100% rename from src/test/ui/parser/keyword-final.rs rename to tests/ui/parser/keyword-final.rs diff --git a/src/test/ui/parser/keyword-final.stderr b/tests/ui/parser/keyword-final.stderr similarity index 100% rename from src/test/ui/parser/keyword-final.stderr rename to tests/ui/parser/keyword-final.stderr diff --git a/src/test/ui/parser/keyword-fn-as-identifier.rs b/tests/ui/parser/keyword-fn-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-fn-as-identifier.rs rename to tests/ui/parser/keyword-fn-as-identifier.rs diff --git a/src/test/ui/parser/keyword-fn-as-identifier.stderr b/tests/ui/parser/keyword-fn-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-fn-as-identifier.stderr rename to tests/ui/parser/keyword-fn-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-for-as-identifier.rs b/tests/ui/parser/keyword-for-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-for-as-identifier.rs rename to tests/ui/parser/keyword-for-as-identifier.rs diff --git a/src/test/ui/parser/keyword-for-as-identifier.stderr b/tests/ui/parser/keyword-for-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-for-as-identifier.stderr rename to tests/ui/parser/keyword-for-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-if-as-identifier.rs b/tests/ui/parser/keyword-if-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-if-as-identifier.rs rename to tests/ui/parser/keyword-if-as-identifier.rs diff --git a/src/test/ui/parser/keyword-if-as-identifier.stderr b/tests/ui/parser/keyword-if-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-if-as-identifier.stderr rename to tests/ui/parser/keyword-if-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-impl-as-identifier.rs b/tests/ui/parser/keyword-impl-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-impl-as-identifier.rs rename to tests/ui/parser/keyword-impl-as-identifier.rs diff --git a/src/test/ui/parser/keyword-impl-as-identifier.stderr b/tests/ui/parser/keyword-impl-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-impl-as-identifier.stderr rename to tests/ui/parser/keyword-impl-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-in-as-identifier.rs b/tests/ui/parser/keyword-in-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-in-as-identifier.rs rename to tests/ui/parser/keyword-in-as-identifier.rs diff --git a/src/test/ui/parser/keyword-in-as-identifier.stderr b/tests/ui/parser/keyword-in-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-in-as-identifier.stderr rename to tests/ui/parser/keyword-in-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-let-as-identifier.rs b/tests/ui/parser/keyword-let-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-let-as-identifier.rs rename to tests/ui/parser/keyword-let-as-identifier.rs diff --git a/src/test/ui/parser/keyword-let-as-identifier.stderr b/tests/ui/parser/keyword-let-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-let-as-identifier.stderr rename to tests/ui/parser/keyword-let-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-loop-as-identifier.rs b/tests/ui/parser/keyword-loop-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-loop-as-identifier.rs rename to tests/ui/parser/keyword-loop-as-identifier.rs diff --git a/src/test/ui/parser/keyword-loop-as-identifier.stderr b/tests/ui/parser/keyword-loop-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-loop-as-identifier.stderr rename to tests/ui/parser/keyword-loop-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-match-as-identifier.rs b/tests/ui/parser/keyword-match-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-match-as-identifier.rs rename to tests/ui/parser/keyword-match-as-identifier.rs diff --git a/src/test/ui/parser/keyword-match-as-identifier.stderr b/tests/ui/parser/keyword-match-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-match-as-identifier.stderr rename to tests/ui/parser/keyword-match-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-mod-as-identifier.rs b/tests/ui/parser/keyword-mod-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-mod-as-identifier.rs rename to tests/ui/parser/keyword-mod-as-identifier.rs diff --git a/src/test/ui/parser/keyword-mod-as-identifier.stderr b/tests/ui/parser/keyword-mod-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-mod-as-identifier.stderr rename to tests/ui/parser/keyword-mod-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-move-as-identifier.rs b/tests/ui/parser/keyword-move-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-move-as-identifier.rs rename to tests/ui/parser/keyword-move-as-identifier.rs diff --git a/src/test/ui/parser/keyword-move-as-identifier.stderr b/tests/ui/parser/keyword-move-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-move-as-identifier.stderr rename to tests/ui/parser/keyword-move-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-mut-as-identifier.rs b/tests/ui/parser/keyword-mut-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-mut-as-identifier.rs rename to tests/ui/parser/keyword-mut-as-identifier.rs diff --git a/src/test/ui/parser/keyword-mut-as-identifier.stderr b/tests/ui/parser/keyword-mut-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-mut-as-identifier.stderr rename to tests/ui/parser/keyword-mut-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-override.rs b/tests/ui/parser/keyword-override.rs similarity index 100% rename from src/test/ui/parser/keyword-override.rs rename to tests/ui/parser/keyword-override.rs diff --git a/src/test/ui/parser/keyword-override.stderr b/tests/ui/parser/keyword-override.stderr similarity index 100% rename from src/test/ui/parser/keyword-override.stderr rename to tests/ui/parser/keyword-override.stderr diff --git a/src/test/ui/parser/keyword-pub-as-identifier.rs b/tests/ui/parser/keyword-pub-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-pub-as-identifier.rs rename to tests/ui/parser/keyword-pub-as-identifier.rs diff --git a/src/test/ui/parser/keyword-pub-as-identifier.stderr b/tests/ui/parser/keyword-pub-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-pub-as-identifier.stderr rename to tests/ui/parser/keyword-pub-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-ref-as-identifier.rs b/tests/ui/parser/keyword-ref-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-ref-as-identifier.rs rename to tests/ui/parser/keyword-ref-as-identifier.rs diff --git a/src/test/ui/parser/keyword-ref-as-identifier.stderr b/tests/ui/parser/keyword-ref-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-ref-as-identifier.stderr rename to tests/ui/parser/keyword-ref-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-return-as-identifier.rs b/tests/ui/parser/keyword-return-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-return-as-identifier.rs rename to tests/ui/parser/keyword-return-as-identifier.rs diff --git a/src/test/ui/parser/keyword-return-as-identifier.stderr b/tests/ui/parser/keyword-return-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-return-as-identifier.stderr rename to tests/ui/parser/keyword-return-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-static-as-identifier.rs b/tests/ui/parser/keyword-static-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-static-as-identifier.rs rename to tests/ui/parser/keyword-static-as-identifier.rs diff --git a/src/test/ui/parser/keyword-static-as-identifier.stderr b/tests/ui/parser/keyword-static-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-static-as-identifier.stderr rename to tests/ui/parser/keyword-static-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-struct-as-identifier.rs b/tests/ui/parser/keyword-struct-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-struct-as-identifier.rs rename to tests/ui/parser/keyword-struct-as-identifier.rs diff --git a/src/test/ui/parser/keyword-struct-as-identifier.stderr b/tests/ui/parser/keyword-struct-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-struct-as-identifier.stderr rename to tests/ui/parser/keyword-struct-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-trait-as-identifier.rs b/tests/ui/parser/keyword-trait-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-trait-as-identifier.rs rename to tests/ui/parser/keyword-trait-as-identifier.rs diff --git a/src/test/ui/parser/keyword-trait-as-identifier.stderr b/tests/ui/parser/keyword-trait-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-trait-as-identifier.stderr rename to tests/ui/parser/keyword-trait-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-try-as-identifier-edition2018.rs b/tests/ui/parser/keyword-try-as-identifier-edition2018.rs similarity index 100% rename from src/test/ui/parser/keyword-try-as-identifier-edition2018.rs rename to tests/ui/parser/keyword-try-as-identifier-edition2018.rs diff --git a/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr b/tests/ui/parser/keyword-try-as-identifier-edition2018.stderr similarity index 100% rename from src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr rename to tests/ui/parser/keyword-try-as-identifier-edition2018.stderr diff --git a/src/test/ui/parser/keyword-type-as-identifier.rs b/tests/ui/parser/keyword-type-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-type-as-identifier.rs rename to tests/ui/parser/keyword-type-as-identifier.rs diff --git a/src/test/ui/parser/keyword-type-as-identifier.stderr b/tests/ui/parser/keyword-type-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-type-as-identifier.stderr rename to tests/ui/parser/keyword-type-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-typeof.rs b/tests/ui/parser/keyword-typeof.rs similarity index 100% rename from src/test/ui/parser/keyword-typeof.rs rename to tests/ui/parser/keyword-typeof.rs diff --git a/src/test/ui/parser/keyword-typeof.stderr b/tests/ui/parser/keyword-typeof.stderr similarity index 100% rename from src/test/ui/parser/keyword-typeof.stderr rename to tests/ui/parser/keyword-typeof.stderr diff --git a/src/test/ui/parser/keyword-unsafe-as-identifier.rs b/tests/ui/parser/keyword-unsafe-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-unsafe-as-identifier.rs rename to tests/ui/parser/keyword-unsafe-as-identifier.rs diff --git a/src/test/ui/parser/keyword-unsafe-as-identifier.stderr b/tests/ui/parser/keyword-unsafe-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-unsafe-as-identifier.stderr rename to tests/ui/parser/keyword-unsafe-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-use-as-identifier.rs b/tests/ui/parser/keyword-use-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-use-as-identifier.rs rename to tests/ui/parser/keyword-use-as-identifier.rs diff --git a/src/test/ui/parser/keyword-use-as-identifier.stderr b/tests/ui/parser/keyword-use-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-use-as-identifier.stderr rename to tests/ui/parser/keyword-use-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-where-as-identifier.rs b/tests/ui/parser/keyword-where-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-where-as-identifier.rs rename to tests/ui/parser/keyword-where-as-identifier.rs diff --git a/src/test/ui/parser/keyword-where-as-identifier.stderr b/tests/ui/parser/keyword-where-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-where-as-identifier.stderr rename to tests/ui/parser/keyword-where-as-identifier.stderr diff --git a/src/test/ui/parser/keyword-while-as-identifier.rs b/tests/ui/parser/keyword-while-as-identifier.rs similarity index 100% rename from src/test/ui/parser/keyword-while-as-identifier.rs rename to tests/ui/parser/keyword-while-as-identifier.rs diff --git a/src/test/ui/parser/keyword-while-as-identifier.stderr b/tests/ui/parser/keyword-while-as-identifier.stderr similarity index 100% rename from src/test/ui/parser/keyword-while-as-identifier.stderr rename to tests/ui/parser/keyword-while-as-identifier.stderr diff --git a/src/test/ui/parser/keyword.rs b/tests/ui/parser/keyword.rs similarity index 100% rename from src/test/ui/parser/keyword.rs rename to tests/ui/parser/keyword.rs diff --git a/src/test/ui/parser/keyword.stderr b/tests/ui/parser/keyword.stderr similarity index 100% rename from src/test/ui/parser/keyword.stderr rename to tests/ui/parser/keyword.stderr diff --git a/src/test/ui/parser/keywords-followed-by-double-colon.rs b/tests/ui/parser/keywords-followed-by-double-colon.rs similarity index 100% rename from src/test/ui/parser/keywords-followed-by-double-colon.rs rename to tests/ui/parser/keywords-followed-by-double-colon.rs diff --git a/src/test/ui/parser/keywords-followed-by-double-colon.stderr b/tests/ui/parser/keywords-followed-by-double-colon.stderr similarity index 100% rename from src/test/ui/parser/keywords-followed-by-double-colon.stderr rename to tests/ui/parser/keywords-followed-by-double-colon.stderr diff --git a/src/test/ui/parser/kw-in-trait-bounds.rs b/tests/ui/parser/kw-in-trait-bounds.rs similarity index 100% rename from src/test/ui/parser/kw-in-trait-bounds.rs rename to tests/ui/parser/kw-in-trait-bounds.rs diff --git a/src/test/ui/parser/kw-in-trait-bounds.stderr b/tests/ui/parser/kw-in-trait-bounds.stderr similarity index 100% rename from src/test/ui/parser/kw-in-trait-bounds.stderr rename to tests/ui/parser/kw-in-trait-bounds.stderr diff --git a/src/test/ui/parser/label-after-block-like.rs b/tests/ui/parser/label-after-block-like.rs similarity index 100% rename from src/test/ui/parser/label-after-block-like.rs rename to tests/ui/parser/label-after-block-like.rs diff --git a/src/test/ui/parser/label-after-block-like.stderr b/tests/ui/parser/label-after-block-like.stderr similarity index 100% rename from src/test/ui/parser/label-after-block-like.stderr rename to tests/ui/parser/label-after-block-like.stderr diff --git a/src/test/ui/parser/label-is-actually-char.rs b/tests/ui/parser/label-is-actually-char.rs similarity index 100% rename from src/test/ui/parser/label-is-actually-char.rs rename to tests/ui/parser/label-is-actually-char.rs diff --git a/src/test/ui/parser/label-is-actually-char.stderr b/tests/ui/parser/label-is-actually-char.stderr similarity index 100% rename from src/test/ui/parser/label-is-actually-char.stderr rename to tests/ui/parser/label-is-actually-char.stderr diff --git a/src/test/ui/parser/labeled-no-colon-expr.rs b/tests/ui/parser/labeled-no-colon-expr.rs similarity index 100% rename from src/test/ui/parser/labeled-no-colon-expr.rs rename to tests/ui/parser/labeled-no-colon-expr.rs diff --git a/src/test/ui/parser/labeled-no-colon-expr.stderr b/tests/ui/parser/labeled-no-colon-expr.stderr similarity index 100% rename from src/test/ui/parser/labeled-no-colon-expr.stderr rename to tests/ui/parser/labeled-no-colon-expr.stderr diff --git a/src/test/ui/parser/let-binop.fixed b/tests/ui/parser/let-binop.fixed similarity index 100% rename from src/test/ui/parser/let-binop.fixed rename to tests/ui/parser/let-binop.fixed diff --git a/src/test/ui/parser/let-binop.rs b/tests/ui/parser/let-binop.rs similarity index 100% rename from src/test/ui/parser/let-binop.rs rename to tests/ui/parser/let-binop.rs diff --git a/src/test/ui/parser/let-binop.stderr b/tests/ui/parser/let-binop.stderr similarity index 100% rename from src/test/ui/parser/let-binop.stderr rename to tests/ui/parser/let-binop.stderr diff --git a/src/test/ui/parser/lifetime-in-pattern-recover.rs b/tests/ui/parser/lifetime-in-pattern-recover.rs similarity index 100% rename from src/test/ui/parser/lifetime-in-pattern-recover.rs rename to tests/ui/parser/lifetime-in-pattern-recover.rs diff --git a/src/test/ui/parser/lifetime-in-pattern-recover.stderr b/tests/ui/parser/lifetime-in-pattern-recover.stderr similarity index 100% rename from src/test/ui/parser/lifetime-in-pattern-recover.stderr rename to tests/ui/parser/lifetime-in-pattern-recover.stderr diff --git a/src/test/ui/parser/lifetime-in-pattern.rs b/tests/ui/parser/lifetime-in-pattern.rs similarity index 100% rename from src/test/ui/parser/lifetime-in-pattern.rs rename to tests/ui/parser/lifetime-in-pattern.rs diff --git a/src/test/ui/parser/lifetime-in-pattern.stderr b/tests/ui/parser/lifetime-in-pattern.stderr similarity index 100% rename from src/test/ui/parser/lifetime-in-pattern.stderr rename to tests/ui/parser/lifetime-in-pattern.stderr diff --git a/src/test/ui/parser/lifetime-semicolon.fixed b/tests/ui/parser/lifetime-semicolon.fixed similarity index 100% rename from src/test/ui/parser/lifetime-semicolon.fixed rename to tests/ui/parser/lifetime-semicolon.fixed diff --git a/src/test/ui/parser/lifetime-semicolon.rs b/tests/ui/parser/lifetime-semicolon.rs similarity index 100% rename from src/test/ui/parser/lifetime-semicolon.rs rename to tests/ui/parser/lifetime-semicolon.rs diff --git a/src/test/ui/parser/lifetime-semicolon.stderr b/tests/ui/parser/lifetime-semicolon.stderr similarity index 100% rename from src/test/ui/parser/lifetime-semicolon.stderr rename to tests/ui/parser/lifetime-semicolon.stderr diff --git a/src/test/ui/parser/lifetime_starts_expressions.rs b/tests/ui/parser/lifetime_starts_expressions.rs similarity index 100% rename from src/test/ui/parser/lifetime_starts_expressions.rs rename to tests/ui/parser/lifetime_starts_expressions.rs diff --git a/src/test/ui/parser/lifetime_starts_expressions.stderr b/tests/ui/parser/lifetime_starts_expressions.stderr similarity index 100% rename from src/test/ui/parser/lifetime_starts_expressions.stderr rename to tests/ui/parser/lifetime_starts_expressions.stderr diff --git a/src/test/ui/parser/macro-bad-delimiter-ident.rs b/tests/ui/parser/macro-bad-delimiter-ident.rs similarity index 100% rename from src/test/ui/parser/macro-bad-delimiter-ident.rs rename to tests/ui/parser/macro-bad-delimiter-ident.rs diff --git a/src/test/ui/parser/macro-bad-delimiter-ident.stderr b/tests/ui/parser/macro-bad-delimiter-ident.stderr similarity index 100% rename from src/test/ui/parser/macro-bad-delimiter-ident.stderr rename to tests/ui/parser/macro-bad-delimiter-ident.stderr diff --git a/src/test/ui/parser/macro-braces-dot-question.rs b/tests/ui/parser/macro-braces-dot-question.rs similarity index 100% rename from src/test/ui/parser/macro-braces-dot-question.rs rename to tests/ui/parser/macro-braces-dot-question.rs diff --git a/src/test/ui/parser/macro-keyword.rs b/tests/ui/parser/macro-keyword.rs similarity index 100% rename from src/test/ui/parser/macro-keyword.rs rename to tests/ui/parser/macro-keyword.rs diff --git a/src/test/ui/parser/macro-keyword.stderr b/tests/ui/parser/macro-keyword.stderr similarity index 100% rename from src/test/ui/parser/macro-keyword.stderr rename to tests/ui/parser/macro-keyword.stderr diff --git a/src/test/ui/parser/macro-mismatched-delim-brace-paren.rs b/tests/ui/parser/macro-mismatched-delim-brace-paren.rs similarity index 100% rename from src/test/ui/parser/macro-mismatched-delim-brace-paren.rs rename to tests/ui/parser/macro-mismatched-delim-brace-paren.rs diff --git a/src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr b/tests/ui/parser/macro-mismatched-delim-brace-paren.stderr similarity index 100% rename from src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr rename to tests/ui/parser/macro-mismatched-delim-brace-paren.stderr diff --git a/src/test/ui/parser/macro-mismatched-delim-paren-brace.rs b/tests/ui/parser/macro-mismatched-delim-paren-brace.rs similarity index 100% rename from src/test/ui/parser/macro-mismatched-delim-paren-brace.rs rename to tests/ui/parser/macro-mismatched-delim-paren-brace.rs diff --git a/src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr b/tests/ui/parser/macro-mismatched-delim-paren-brace.stderr similarity index 100% rename from src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr rename to tests/ui/parser/macro-mismatched-delim-paren-brace.stderr diff --git a/src/test/ui/parser/macro/bad-macro-argument.rs b/tests/ui/parser/macro/bad-macro-argument.rs similarity index 100% rename from src/test/ui/parser/macro/bad-macro-argument.rs rename to tests/ui/parser/macro/bad-macro-argument.rs diff --git a/src/test/ui/parser/macro/bad-macro-argument.stderr b/tests/ui/parser/macro/bad-macro-argument.stderr similarity index 100% rename from src/test/ui/parser/macro/bad-macro-argument.stderr rename to tests/ui/parser/macro/bad-macro-argument.stderr diff --git a/src/test/ui/parser/macro/issue-33569.rs b/tests/ui/parser/macro/issue-33569.rs similarity index 100% rename from src/test/ui/parser/macro/issue-33569.rs rename to tests/ui/parser/macro/issue-33569.rs diff --git a/src/test/ui/parser/macro/issue-33569.stderr b/tests/ui/parser/macro/issue-33569.stderr similarity index 100% rename from src/test/ui/parser/macro/issue-33569.stderr rename to tests/ui/parser/macro/issue-33569.stderr diff --git a/src/test/ui/parser/macro/issue-37113.rs b/tests/ui/parser/macro/issue-37113.rs similarity index 100% rename from src/test/ui/parser/macro/issue-37113.rs rename to tests/ui/parser/macro/issue-37113.rs diff --git a/src/test/ui/parser/macro/issue-37113.stderr b/tests/ui/parser/macro/issue-37113.stderr similarity index 100% rename from src/test/ui/parser/macro/issue-37113.stderr rename to tests/ui/parser/macro/issue-37113.stderr diff --git a/src/test/ui/parser/macro/issue-37234.rs b/tests/ui/parser/macro/issue-37234.rs similarity index 100% rename from src/test/ui/parser/macro/issue-37234.rs rename to tests/ui/parser/macro/issue-37234.rs diff --git a/src/test/ui/parser/macro/issue-37234.stderr b/tests/ui/parser/macro/issue-37234.stderr similarity index 100% rename from src/test/ui/parser/macro/issue-37234.stderr rename to tests/ui/parser/macro/issue-37234.stderr diff --git a/src/test/ui/parser/macro/literals-are-validated-before-expansion.rs b/tests/ui/parser/macro/literals-are-validated-before-expansion.rs similarity index 100% rename from src/test/ui/parser/macro/literals-are-validated-before-expansion.rs rename to tests/ui/parser/macro/literals-are-validated-before-expansion.rs diff --git a/src/test/ui/parser/macro/literals-are-validated-before-expansion.stderr b/tests/ui/parser/macro/literals-are-validated-before-expansion.stderr similarity index 100% rename from src/test/ui/parser/macro/literals-are-validated-before-expansion.stderr rename to tests/ui/parser/macro/literals-are-validated-before-expansion.stderr diff --git a/src/test/ui/parser/macro/macro-doc-comments-1.rs b/tests/ui/parser/macro/macro-doc-comments-1.rs similarity index 100% rename from src/test/ui/parser/macro/macro-doc-comments-1.rs rename to tests/ui/parser/macro/macro-doc-comments-1.rs diff --git a/src/test/ui/parser/macro/macro-doc-comments-1.stderr b/tests/ui/parser/macro/macro-doc-comments-1.stderr similarity index 100% rename from src/test/ui/parser/macro/macro-doc-comments-1.stderr rename to tests/ui/parser/macro/macro-doc-comments-1.stderr diff --git a/src/test/ui/parser/macro/macro-doc-comments-2.rs b/tests/ui/parser/macro/macro-doc-comments-2.rs similarity index 100% rename from src/test/ui/parser/macro/macro-doc-comments-2.rs rename to tests/ui/parser/macro/macro-doc-comments-2.rs diff --git a/src/test/ui/parser/macro/macro-doc-comments-2.stderr b/tests/ui/parser/macro/macro-doc-comments-2.stderr similarity index 100% rename from src/test/ui/parser/macro/macro-doc-comments-2.stderr rename to tests/ui/parser/macro/macro-doc-comments-2.stderr diff --git a/src/test/ui/parser/macro/macro-incomplete-parse.rs b/tests/ui/parser/macro/macro-incomplete-parse.rs similarity index 100% rename from src/test/ui/parser/macro/macro-incomplete-parse.rs rename to tests/ui/parser/macro/macro-incomplete-parse.rs diff --git a/src/test/ui/parser/macro/macro-incomplete-parse.stderr b/tests/ui/parser/macro/macro-incomplete-parse.stderr similarity index 100% rename from src/test/ui/parser/macro/macro-incomplete-parse.stderr rename to tests/ui/parser/macro/macro-incomplete-parse.stderr diff --git a/src/test/ui/parser/macro/macro-repeat.rs b/tests/ui/parser/macro/macro-repeat.rs similarity index 100% rename from src/test/ui/parser/macro/macro-repeat.rs rename to tests/ui/parser/macro/macro-repeat.rs diff --git a/src/test/ui/parser/macro/macro-repeat.stderr b/tests/ui/parser/macro/macro-repeat.stderr similarity index 100% rename from src/test/ui/parser/macro/macro-repeat.stderr rename to tests/ui/parser/macro/macro-repeat.stderr diff --git a/src/test/ui/parser/macro/pub-item-macro.rs b/tests/ui/parser/macro/pub-item-macro.rs similarity index 100% rename from src/test/ui/parser/macro/pub-item-macro.rs rename to tests/ui/parser/macro/pub-item-macro.rs diff --git a/src/test/ui/parser/macro/pub-item-macro.stderr b/tests/ui/parser/macro/pub-item-macro.stderr similarity index 100% rename from src/test/ui/parser/macro/pub-item-macro.stderr rename to tests/ui/parser/macro/pub-item-macro.stderr diff --git a/src/test/ui/parser/macro/trait-non-item-macros.rs b/tests/ui/parser/macro/trait-non-item-macros.rs similarity index 100% rename from src/test/ui/parser/macro/trait-non-item-macros.rs rename to tests/ui/parser/macro/trait-non-item-macros.rs diff --git a/src/test/ui/parser/macro/trait-non-item-macros.stderr b/tests/ui/parser/macro/trait-non-item-macros.stderr similarity index 100% rename from src/test/ui/parser/macro/trait-non-item-macros.stderr rename to tests/ui/parser/macro/trait-non-item-macros.stderr diff --git a/src/test/ui/parser/macro/trait-object-macro-matcher.rs b/tests/ui/parser/macro/trait-object-macro-matcher.rs similarity index 100% rename from src/test/ui/parser/macro/trait-object-macro-matcher.rs rename to tests/ui/parser/macro/trait-object-macro-matcher.rs diff --git a/src/test/ui/parser/macro/trait-object-macro-matcher.stderr b/tests/ui/parser/macro/trait-object-macro-matcher.stderr similarity index 100% rename from src/test/ui/parser/macro/trait-object-macro-matcher.stderr rename to tests/ui/parser/macro/trait-object-macro-matcher.stderr diff --git a/src/test/ui/parser/macros-no-semicolon-items.rs b/tests/ui/parser/macros-no-semicolon-items.rs similarity index 100% rename from src/test/ui/parser/macros-no-semicolon-items.rs rename to tests/ui/parser/macros-no-semicolon-items.rs diff --git a/src/test/ui/parser/macros-no-semicolon-items.stderr b/tests/ui/parser/macros-no-semicolon-items.stderr similarity index 100% rename from src/test/ui/parser/macros-no-semicolon-items.stderr rename to tests/ui/parser/macros-no-semicolon-items.stderr diff --git a/src/test/ui/parser/macros-no-semicolon.rs b/tests/ui/parser/macros-no-semicolon.rs similarity index 100% rename from src/test/ui/parser/macros-no-semicolon.rs rename to tests/ui/parser/macros-no-semicolon.rs diff --git a/src/test/ui/parser/macros-no-semicolon.stderr b/tests/ui/parser/macros-no-semicolon.stderr similarity index 100% rename from src/test/ui/parser/macros-no-semicolon.stderr rename to tests/ui/parser/macros-no-semicolon.stderr diff --git a/src/test/ui/parser/match-arm-without-braces.rs b/tests/ui/parser/match-arm-without-braces.rs similarity index 100% rename from src/test/ui/parser/match-arm-without-braces.rs rename to tests/ui/parser/match-arm-without-braces.rs diff --git a/src/test/ui/parser/match-arm-without-braces.stderr b/tests/ui/parser/match-arm-without-braces.stderr similarity index 100% rename from src/test/ui/parser/match-arm-without-braces.stderr rename to tests/ui/parser/match-arm-without-braces.stderr diff --git a/src/test/ui/parser/match-arrows-block-then-binop.rs b/tests/ui/parser/match-arrows-block-then-binop.rs similarity index 100% rename from src/test/ui/parser/match-arrows-block-then-binop.rs rename to tests/ui/parser/match-arrows-block-then-binop.rs diff --git a/src/test/ui/parser/match-arrows-block-then-binop.stderr b/tests/ui/parser/match-arrows-block-then-binop.stderr similarity index 100% rename from src/test/ui/parser/match-arrows-block-then-binop.stderr rename to tests/ui/parser/match-arrows-block-then-binop.stderr diff --git a/src/test/ui/parser/match-refactor-to-expr.fixed b/tests/ui/parser/match-refactor-to-expr.fixed similarity index 100% rename from src/test/ui/parser/match-refactor-to-expr.fixed rename to tests/ui/parser/match-refactor-to-expr.fixed diff --git a/src/test/ui/parser/match-refactor-to-expr.rs b/tests/ui/parser/match-refactor-to-expr.rs similarity index 100% rename from src/test/ui/parser/match-refactor-to-expr.rs rename to tests/ui/parser/match-refactor-to-expr.rs diff --git a/src/test/ui/parser/match-refactor-to-expr.stderr b/tests/ui/parser/match-refactor-to-expr.stderr similarity index 100% rename from src/test/ui/parser/match-refactor-to-expr.stderr rename to tests/ui/parser/match-refactor-to-expr.stderr diff --git a/src/test/ui/parser/mbe_missing_right_paren.rs b/tests/ui/parser/mbe_missing_right_paren.rs similarity index 100% rename from src/test/ui/parser/mbe_missing_right_paren.rs rename to tests/ui/parser/mbe_missing_right_paren.rs diff --git a/src/test/ui/parser/mbe_missing_right_paren.stderr b/tests/ui/parser/mbe_missing_right_paren.stderr similarity index 100% rename from src/test/ui/parser/mbe_missing_right_paren.stderr rename to tests/ui/parser/mbe_missing_right_paren.stderr diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.rs b/tests/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.rs similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.rs rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.rs diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.stderr b/tests/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.stderr similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.stderr rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-impl-trait.stderr diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-struct.rs b/tests/ui/parser/mismatched-braces/missing-close-brace-in-struct.rs similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-struct.rs rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-struct.rs diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-struct.stderr b/tests/ui/parser/mismatched-braces/missing-close-brace-in-struct.stderr similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-struct.stderr rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-struct.stderr diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-trait.rs b/tests/ui/parser/mismatched-braces/missing-close-brace-in-trait.rs similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-trait.rs rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-trait.rs diff --git a/src/test/ui/parser/mismatched-braces/missing-close-brace-in-trait.stderr b/tests/ui/parser/mismatched-braces/missing-close-brace-in-trait.stderr similarity index 100% rename from src/test/ui/parser/mismatched-braces/missing-close-brace-in-trait.stderr rename to tests/ui/parser/mismatched-braces/missing-close-brace-in-trait.stderr diff --git a/src/test/ui/parser/mismatched-delim-brace-empty-block.rs b/tests/ui/parser/mismatched-delim-brace-empty-block.rs similarity index 100% rename from src/test/ui/parser/mismatched-delim-brace-empty-block.rs rename to tests/ui/parser/mismatched-delim-brace-empty-block.rs diff --git a/src/test/ui/parser/mismatched-delim-brace-empty-block.stderr b/tests/ui/parser/mismatched-delim-brace-empty-block.stderr similarity index 100% rename from src/test/ui/parser/mismatched-delim-brace-empty-block.stderr rename to tests/ui/parser/mismatched-delim-brace-empty-block.stderr diff --git a/src/test/ui/parser/missing-closing-angle-bracket-eq-constraint.rs b/tests/ui/parser/missing-closing-angle-bracket-eq-constraint.rs similarity index 100% rename from src/test/ui/parser/missing-closing-angle-bracket-eq-constraint.rs rename to tests/ui/parser/missing-closing-angle-bracket-eq-constraint.rs diff --git a/src/test/ui/parser/missing-closing-angle-bracket-eq-constraint.stderr b/tests/ui/parser/missing-closing-angle-bracket-eq-constraint.stderr similarity index 100% rename from src/test/ui/parser/missing-closing-angle-bracket-eq-constraint.stderr rename to tests/ui/parser/missing-closing-angle-bracket-eq-constraint.stderr diff --git a/src/test/ui/parser/missing-closing-angle-bracket-struct-field-ty.rs b/tests/ui/parser/missing-closing-angle-bracket-struct-field-ty.rs similarity index 100% rename from src/test/ui/parser/missing-closing-angle-bracket-struct-field-ty.rs rename to tests/ui/parser/missing-closing-angle-bracket-struct-field-ty.rs diff --git a/src/test/ui/parser/missing-closing-angle-bracket-struct-field-ty.stderr b/tests/ui/parser/missing-closing-angle-bracket-struct-field-ty.stderr similarity index 100% rename from src/test/ui/parser/missing-closing-angle-bracket-struct-field-ty.stderr rename to tests/ui/parser/missing-closing-angle-bracket-struct-field-ty.stderr diff --git a/src/test/ui/parser/missing-semicolon.rs b/tests/ui/parser/missing-semicolon.rs similarity index 100% rename from src/test/ui/parser/missing-semicolon.rs rename to tests/ui/parser/missing-semicolon.rs diff --git a/src/test/ui/parser/missing-semicolon.stderr b/tests/ui/parser/missing-semicolon.stderr similarity index 100% rename from src/test/ui/parser/missing-semicolon.stderr rename to tests/ui/parser/missing-semicolon.stderr diff --git a/src/test/ui/parser/missing_right_paren.rs b/tests/ui/parser/missing_right_paren.rs similarity index 100% rename from src/test/ui/parser/missing_right_paren.rs rename to tests/ui/parser/missing_right_paren.rs diff --git a/src/test/ui/parser/missing_right_paren.stderr b/tests/ui/parser/missing_right_paren.stderr similarity index 100% rename from src/test/ui/parser/missing_right_paren.stderr rename to tests/ui/parser/missing_right_paren.stderr diff --git a/src/test/ui/parser/misspelled-macro-rules.fixed b/tests/ui/parser/misspelled-macro-rules.fixed similarity index 100% rename from src/test/ui/parser/misspelled-macro-rules.fixed rename to tests/ui/parser/misspelled-macro-rules.fixed diff --git a/src/test/ui/parser/misspelled-macro-rules.rs b/tests/ui/parser/misspelled-macro-rules.rs similarity index 100% rename from src/test/ui/parser/misspelled-macro-rules.rs rename to tests/ui/parser/misspelled-macro-rules.rs diff --git a/src/test/ui/parser/misspelled-macro-rules.stderr b/tests/ui/parser/misspelled-macro-rules.stderr similarity index 100% rename from src/test/ui/parser/misspelled-macro-rules.stderr rename to tests/ui/parser/misspelled-macro-rules.stderr diff --git a/src/test/ui/parser/mod_file_not_exist.rs b/tests/ui/parser/mod_file_not_exist.rs similarity index 100% rename from src/test/ui/parser/mod_file_not_exist.rs rename to tests/ui/parser/mod_file_not_exist.rs diff --git a/src/test/ui/parser/mod_file_not_exist.stderr b/tests/ui/parser/mod_file_not_exist.stderr similarity index 100% rename from src/test/ui/parser/mod_file_not_exist.stderr rename to tests/ui/parser/mod_file_not_exist.stderr diff --git a/src/test/ui/parser/mod_file_not_exist_windows.rs b/tests/ui/parser/mod_file_not_exist_windows.rs similarity index 100% rename from src/test/ui/parser/mod_file_not_exist_windows.rs rename to tests/ui/parser/mod_file_not_exist_windows.rs diff --git a/src/test/ui/parser/mod_file_not_exist_windows.stderr b/tests/ui/parser/mod_file_not_exist_windows.stderr similarity index 100% rename from src/test/ui/parser/mod_file_not_exist_windows.stderr rename to tests/ui/parser/mod_file_not_exist_windows.stderr diff --git a/src/test/ui/parser/mod_file_with_path_attr.rs b/tests/ui/parser/mod_file_with_path_attr.rs similarity index 100% rename from src/test/ui/parser/mod_file_with_path_attr.rs rename to tests/ui/parser/mod_file_with_path_attr.rs diff --git a/src/test/ui/parser/mod_file_with_path_attr.stderr b/tests/ui/parser/mod_file_with_path_attr.stderr similarity index 100% rename from src/test/ui/parser/mod_file_with_path_attr.stderr rename to tests/ui/parser/mod_file_with_path_attr.stderr diff --git a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs b/tests/ui/parser/multibyte-char-use-seperator-issue-80134.rs similarity index 100% rename from src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs rename to tests/ui/parser/multibyte-char-use-seperator-issue-80134.rs diff --git a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr b/tests/ui/parser/multibyte-char-use-seperator-issue-80134.stderr similarity index 100% rename from src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr rename to tests/ui/parser/multibyte-char-use-seperator-issue-80134.stderr diff --git a/src/test/ui/parser/multiline-comment-line-tracking.rs b/tests/ui/parser/multiline-comment-line-tracking.rs similarity index 100% rename from src/test/ui/parser/multiline-comment-line-tracking.rs rename to tests/ui/parser/multiline-comment-line-tracking.rs diff --git a/src/test/ui/parser/multiline-comment-line-tracking.stderr b/tests/ui/parser/multiline-comment-line-tracking.stderr similarity index 100% rename from src/test/ui/parser/multiline-comment-line-tracking.stderr rename to tests/ui/parser/multiline-comment-line-tracking.stderr diff --git a/src/test/ui/parser/multitrait.rs b/tests/ui/parser/multitrait.rs similarity index 100% rename from src/test/ui/parser/multitrait.rs rename to tests/ui/parser/multitrait.rs diff --git a/src/test/ui/parser/multitrait.stderr b/tests/ui/parser/multitrait.stderr similarity index 100% rename from src/test/ui/parser/multitrait.stderr rename to tests/ui/parser/multitrait.stderr diff --git a/src/test/ui/parser/mut-patterns.rs b/tests/ui/parser/mut-patterns.rs similarity index 100% rename from src/test/ui/parser/mut-patterns.rs rename to tests/ui/parser/mut-patterns.rs diff --git a/src/test/ui/parser/mut-patterns.stderr b/tests/ui/parser/mut-patterns.stderr similarity index 100% rename from src/test/ui/parser/mut-patterns.stderr rename to tests/ui/parser/mut-patterns.stderr diff --git a/src/test/ui/parser/nested-bad-turbofish.rs b/tests/ui/parser/nested-bad-turbofish.rs similarity index 100% rename from src/test/ui/parser/nested-bad-turbofish.rs rename to tests/ui/parser/nested-bad-turbofish.rs diff --git a/src/test/ui/parser/nested-bad-turbofish.stderr b/tests/ui/parser/nested-bad-turbofish.stderr similarity index 100% rename from src/test/ui/parser/nested-bad-turbofish.stderr rename to tests/ui/parser/nested-bad-turbofish.stderr diff --git a/src/test/ui/parser/nested-missing-closing-angle-bracket.rs b/tests/ui/parser/nested-missing-closing-angle-bracket.rs similarity index 100% rename from src/test/ui/parser/nested-missing-closing-angle-bracket.rs rename to tests/ui/parser/nested-missing-closing-angle-bracket.rs diff --git a/src/test/ui/parser/nested-missing-closing-angle-bracket.stderr b/tests/ui/parser/nested-missing-closing-angle-bracket.stderr similarity index 100% rename from src/test/ui/parser/nested-missing-closing-angle-bracket.stderr rename to tests/ui/parser/nested-missing-closing-angle-bracket.stderr diff --git a/src/test/ui/parser/new-unicode-escapes-1.rs b/tests/ui/parser/new-unicode-escapes-1.rs similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-1.rs rename to tests/ui/parser/new-unicode-escapes-1.rs diff --git a/src/test/ui/parser/new-unicode-escapes-1.stderr b/tests/ui/parser/new-unicode-escapes-1.stderr similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-1.stderr rename to tests/ui/parser/new-unicode-escapes-1.stderr diff --git a/src/test/ui/parser/new-unicode-escapes-2.rs b/tests/ui/parser/new-unicode-escapes-2.rs similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-2.rs rename to tests/ui/parser/new-unicode-escapes-2.rs diff --git a/src/test/ui/parser/new-unicode-escapes-2.stderr b/tests/ui/parser/new-unicode-escapes-2.stderr similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-2.stderr rename to tests/ui/parser/new-unicode-escapes-2.stderr diff --git a/src/test/ui/parser/new-unicode-escapes-3.rs b/tests/ui/parser/new-unicode-escapes-3.rs similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-3.rs rename to tests/ui/parser/new-unicode-escapes-3.rs diff --git a/src/test/ui/parser/new-unicode-escapes-3.stderr b/tests/ui/parser/new-unicode-escapes-3.stderr similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-3.stderr rename to tests/ui/parser/new-unicode-escapes-3.stderr diff --git a/src/test/ui/parser/new-unicode-escapes-4.rs b/tests/ui/parser/new-unicode-escapes-4.rs similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-4.rs rename to tests/ui/parser/new-unicode-escapes-4.rs diff --git a/src/test/ui/parser/new-unicode-escapes-4.stderr b/tests/ui/parser/new-unicode-escapes-4.stderr similarity index 100% rename from src/test/ui/parser/new-unicode-escapes-4.stderr rename to tests/ui/parser/new-unicode-escapes-4.stderr diff --git a/src/test/ui/parser/no-binary-float-literal.rs b/tests/ui/parser/no-binary-float-literal.rs similarity index 100% rename from src/test/ui/parser/no-binary-float-literal.rs rename to tests/ui/parser/no-binary-float-literal.rs diff --git a/src/test/ui/parser/no-binary-float-literal.stderr b/tests/ui/parser/no-binary-float-literal.stderr similarity index 100% rename from src/test/ui/parser/no-binary-float-literal.stderr rename to tests/ui/parser/no-binary-float-literal.stderr diff --git a/src/test/ui/parser/no-const-fn-in-extern-block.rs b/tests/ui/parser/no-const-fn-in-extern-block.rs similarity index 100% rename from src/test/ui/parser/no-const-fn-in-extern-block.rs rename to tests/ui/parser/no-const-fn-in-extern-block.rs diff --git a/src/test/ui/parser/no-const-fn-in-extern-block.stderr b/tests/ui/parser/no-const-fn-in-extern-block.stderr similarity index 100% rename from src/test/ui/parser/no-const-fn-in-extern-block.stderr rename to tests/ui/parser/no-const-fn-in-extern-block.stderr diff --git a/src/test/ui/parser/no-hex-float-literal.rs b/tests/ui/parser/no-hex-float-literal.rs similarity index 100% rename from src/test/ui/parser/no-hex-float-literal.rs rename to tests/ui/parser/no-hex-float-literal.rs diff --git a/src/test/ui/parser/no-hex-float-literal.stderr b/tests/ui/parser/no-hex-float-literal.stderr similarity index 100% rename from src/test/ui/parser/no-hex-float-literal.stderr rename to tests/ui/parser/no-hex-float-literal.stderr diff --git a/src/test/ui/parser/no-unsafe-self.rs b/tests/ui/parser/no-unsafe-self.rs similarity index 100% rename from src/test/ui/parser/no-unsafe-self.rs rename to tests/ui/parser/no-unsafe-self.rs diff --git a/src/test/ui/parser/no-unsafe-self.stderr b/tests/ui/parser/no-unsafe-self.stderr similarity index 100% rename from src/test/ui/parser/no-unsafe-self.stderr rename to tests/ui/parser/no-unsafe-self.stderr diff --git a/src/test/ui/parser/not-a-pred.rs b/tests/ui/parser/not-a-pred.rs similarity index 100% rename from src/test/ui/parser/not-a-pred.rs rename to tests/ui/parser/not-a-pred.rs diff --git a/src/test/ui/parser/not-a-pred.stderr b/tests/ui/parser/not-a-pred.stderr similarity index 100% rename from src/test/ui/parser/not-a-pred.stderr rename to tests/ui/parser/not-a-pred.stderr diff --git a/src/test/ui/parser/nt-parsing-has-recovery.rs b/tests/ui/parser/nt-parsing-has-recovery.rs similarity index 100% rename from src/test/ui/parser/nt-parsing-has-recovery.rs rename to tests/ui/parser/nt-parsing-has-recovery.rs diff --git a/src/test/ui/parser/nt-parsing-has-recovery.stderr b/tests/ui/parser/nt-parsing-has-recovery.stderr similarity index 100% rename from src/test/ui/parser/nt-parsing-has-recovery.stderr rename to tests/ui/parser/nt-parsing-has-recovery.stderr diff --git a/src/test/ui/parser/numeric-lifetime.rs b/tests/ui/parser/numeric-lifetime.rs similarity index 100% rename from src/test/ui/parser/numeric-lifetime.rs rename to tests/ui/parser/numeric-lifetime.rs diff --git a/src/test/ui/parser/numeric-lifetime.stderr b/tests/ui/parser/numeric-lifetime.stderr similarity index 100% rename from src/test/ui/parser/numeric-lifetime.stderr rename to tests/ui/parser/numeric-lifetime.stderr diff --git a/src/test/ui/parser/obsolete-syntax-impl-for-dotdot.rs b/tests/ui/parser/obsolete-syntax-impl-for-dotdot.rs similarity index 100% rename from src/test/ui/parser/obsolete-syntax-impl-for-dotdot.rs rename to tests/ui/parser/obsolete-syntax-impl-for-dotdot.rs diff --git a/src/test/ui/parser/obsolete-syntax-impl-for-dotdot.stderr b/tests/ui/parser/obsolete-syntax-impl-for-dotdot.stderr similarity index 100% rename from src/test/ui/parser/obsolete-syntax-impl-for-dotdot.stderr rename to tests/ui/parser/obsolete-syntax-impl-for-dotdot.stderr diff --git a/src/test/ui/parser/old-suffixes-are-really-forbidden.rs b/tests/ui/parser/old-suffixes-are-really-forbidden.rs similarity index 100% rename from src/test/ui/parser/old-suffixes-are-really-forbidden.rs rename to tests/ui/parser/old-suffixes-are-really-forbidden.rs diff --git a/src/test/ui/parser/old-suffixes-are-really-forbidden.stderr b/tests/ui/parser/old-suffixes-are-really-forbidden.stderr similarity index 100% rename from src/test/ui/parser/old-suffixes-are-really-forbidden.stderr rename to tests/ui/parser/old-suffixes-are-really-forbidden.stderr diff --git a/src/test/ui/parser/omitted-arg-in-item-fn.rs b/tests/ui/parser/omitted-arg-in-item-fn.rs similarity index 100% rename from src/test/ui/parser/omitted-arg-in-item-fn.rs rename to tests/ui/parser/omitted-arg-in-item-fn.rs diff --git a/src/test/ui/parser/omitted-arg-in-item-fn.stderr b/tests/ui/parser/omitted-arg-in-item-fn.stderr similarity index 100% rename from src/test/ui/parser/omitted-arg-in-item-fn.stderr rename to tests/ui/parser/omitted-arg-in-item-fn.stderr diff --git a/src/test/ui/parser/operator-associativity.rs b/tests/ui/parser/operator-associativity.rs similarity index 100% rename from src/test/ui/parser/operator-associativity.rs rename to tests/ui/parser/operator-associativity.rs diff --git a/src/test/ui/parser/paamayim-nekudotayim.rs b/tests/ui/parser/paamayim-nekudotayim.rs similarity index 100% rename from src/test/ui/parser/paamayim-nekudotayim.rs rename to tests/ui/parser/paamayim-nekudotayim.rs diff --git a/src/test/ui/parser/paamayim-nekudotayim.stderr b/tests/ui/parser/paamayim-nekudotayim.stderr similarity index 100% rename from src/test/ui/parser/paamayim-nekudotayim.stderr rename to tests/ui/parser/paamayim-nekudotayim.stderr diff --git a/src/test/ui/parser/parse-assoc-type-lt.rs b/tests/ui/parser/parse-assoc-type-lt.rs similarity index 100% rename from src/test/ui/parser/parse-assoc-type-lt.rs rename to tests/ui/parser/parse-assoc-type-lt.rs diff --git a/src/test/ui/parser/parse-error-correct.rs b/tests/ui/parser/parse-error-correct.rs similarity index 100% rename from src/test/ui/parser/parse-error-correct.rs rename to tests/ui/parser/parse-error-correct.rs diff --git a/src/test/ui/parser/parse-error-correct.stderr b/tests/ui/parser/parse-error-correct.stderr similarity index 100% rename from src/test/ui/parser/parse-error-correct.stderr rename to tests/ui/parser/parse-error-correct.stderr diff --git a/src/test/ui/parser/parse-panic.rs b/tests/ui/parser/parse-panic.rs similarity index 100% rename from src/test/ui/parser/parse-panic.rs rename to tests/ui/parser/parse-panic.rs diff --git a/src/test/ui/parser/parser-recovery-1.rs b/tests/ui/parser/parser-recovery-1.rs similarity index 100% rename from src/test/ui/parser/parser-recovery-1.rs rename to tests/ui/parser/parser-recovery-1.rs diff --git a/src/test/ui/parser/parser-recovery-1.stderr b/tests/ui/parser/parser-recovery-1.stderr similarity index 100% rename from src/test/ui/parser/parser-recovery-1.stderr rename to tests/ui/parser/parser-recovery-1.stderr diff --git a/src/test/ui/parser/parser-recovery-2.rs b/tests/ui/parser/parser-recovery-2.rs similarity index 100% rename from src/test/ui/parser/parser-recovery-2.rs rename to tests/ui/parser/parser-recovery-2.rs diff --git a/src/test/ui/parser/parser-recovery-2.stderr b/tests/ui/parser/parser-recovery-2.stderr similarity index 100% rename from src/test/ui/parser/parser-recovery-2.stderr rename to tests/ui/parser/parser-recovery-2.stderr diff --git a/src/test/ui/parser/parser-unicode-whitespace.rs b/tests/ui/parser/parser-unicode-whitespace.rs similarity index 100% rename from src/test/ui/parser/parser-unicode-whitespace.rs rename to tests/ui/parser/parser-unicode-whitespace.rs diff --git a/src/test/ui/parser/pat-lt-bracket-1.rs b/tests/ui/parser/pat-lt-bracket-1.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-1.rs rename to tests/ui/parser/pat-lt-bracket-1.rs diff --git a/src/test/ui/parser/pat-lt-bracket-1.stderr b/tests/ui/parser/pat-lt-bracket-1.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-1.stderr rename to tests/ui/parser/pat-lt-bracket-1.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-2.rs b/tests/ui/parser/pat-lt-bracket-2.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-2.rs rename to tests/ui/parser/pat-lt-bracket-2.rs diff --git a/src/test/ui/parser/pat-lt-bracket-2.stderr b/tests/ui/parser/pat-lt-bracket-2.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-2.stderr rename to tests/ui/parser/pat-lt-bracket-2.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-3.rs b/tests/ui/parser/pat-lt-bracket-3.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-3.rs rename to tests/ui/parser/pat-lt-bracket-3.rs diff --git a/src/test/ui/parser/pat-lt-bracket-3.stderr b/tests/ui/parser/pat-lt-bracket-3.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-3.stderr rename to tests/ui/parser/pat-lt-bracket-3.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-4.rs b/tests/ui/parser/pat-lt-bracket-4.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-4.rs rename to tests/ui/parser/pat-lt-bracket-4.rs diff --git a/src/test/ui/parser/pat-lt-bracket-4.stderr b/tests/ui/parser/pat-lt-bracket-4.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-4.stderr rename to tests/ui/parser/pat-lt-bracket-4.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-5.rs b/tests/ui/parser/pat-lt-bracket-5.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-5.rs rename to tests/ui/parser/pat-lt-bracket-5.rs diff --git a/src/test/ui/parser/pat-lt-bracket-5.stderr b/tests/ui/parser/pat-lt-bracket-5.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-5.stderr rename to tests/ui/parser/pat-lt-bracket-5.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-6.rs b/tests/ui/parser/pat-lt-bracket-6.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-6.rs rename to tests/ui/parser/pat-lt-bracket-6.rs diff --git a/src/test/ui/parser/pat-lt-bracket-6.stderr b/tests/ui/parser/pat-lt-bracket-6.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-6.stderr rename to tests/ui/parser/pat-lt-bracket-6.stderr diff --git a/src/test/ui/parser/pat-lt-bracket-7.rs b/tests/ui/parser/pat-lt-bracket-7.rs similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-7.rs rename to tests/ui/parser/pat-lt-bracket-7.rs diff --git a/src/test/ui/parser/pat-lt-bracket-7.stderr b/tests/ui/parser/pat-lt-bracket-7.stderr similarity index 100% rename from src/test/ui/parser/pat-lt-bracket-7.stderr rename to tests/ui/parser/pat-lt-bracket-7.stderr diff --git a/src/test/ui/parser/pat-ranges-1.rs b/tests/ui/parser/pat-ranges-1.rs similarity index 100% rename from src/test/ui/parser/pat-ranges-1.rs rename to tests/ui/parser/pat-ranges-1.rs diff --git a/src/test/ui/parser/pat-ranges-1.stderr b/tests/ui/parser/pat-ranges-1.stderr similarity index 100% rename from src/test/ui/parser/pat-ranges-1.stderr rename to tests/ui/parser/pat-ranges-1.stderr diff --git a/src/test/ui/parser/pat-ranges-2.rs b/tests/ui/parser/pat-ranges-2.rs similarity index 100% rename from src/test/ui/parser/pat-ranges-2.rs rename to tests/ui/parser/pat-ranges-2.rs diff --git a/src/test/ui/parser/pat-ranges-2.stderr b/tests/ui/parser/pat-ranges-2.stderr similarity index 100% rename from src/test/ui/parser/pat-ranges-2.stderr rename to tests/ui/parser/pat-ranges-2.stderr diff --git a/src/test/ui/parser/pat-ranges-3.rs b/tests/ui/parser/pat-ranges-3.rs similarity index 100% rename from src/test/ui/parser/pat-ranges-3.rs rename to tests/ui/parser/pat-ranges-3.rs diff --git a/src/test/ui/parser/pat-ranges-3.stderr b/tests/ui/parser/pat-ranges-3.stderr similarity index 100% rename from src/test/ui/parser/pat-ranges-3.stderr rename to tests/ui/parser/pat-ranges-3.stderr diff --git a/src/test/ui/parser/pat-ranges-4.rs b/tests/ui/parser/pat-ranges-4.rs similarity index 100% rename from src/test/ui/parser/pat-ranges-4.rs rename to tests/ui/parser/pat-ranges-4.rs diff --git a/src/test/ui/parser/pat-ranges-4.stderr b/tests/ui/parser/pat-ranges-4.stderr similarity index 100% rename from src/test/ui/parser/pat-ranges-4.stderr rename to tests/ui/parser/pat-ranges-4.stderr diff --git a/src/test/ui/parser/pat-ref-enum.rs b/tests/ui/parser/pat-ref-enum.rs similarity index 100% rename from src/test/ui/parser/pat-ref-enum.rs rename to tests/ui/parser/pat-ref-enum.rs diff --git a/src/test/ui/parser/pat-ref-enum.stderr b/tests/ui/parser/pat-ref-enum.stderr similarity index 100% rename from src/test/ui/parser/pat-ref-enum.stderr rename to tests/ui/parser/pat-ref-enum.stderr diff --git a/src/test/ui/parser/pat-tuple-1.rs b/tests/ui/parser/pat-tuple-1.rs similarity index 100% rename from src/test/ui/parser/pat-tuple-1.rs rename to tests/ui/parser/pat-tuple-1.rs diff --git a/src/test/ui/parser/pat-tuple-1.stderr b/tests/ui/parser/pat-tuple-1.stderr similarity index 100% rename from src/test/ui/parser/pat-tuple-1.stderr rename to tests/ui/parser/pat-tuple-1.stderr diff --git a/src/test/ui/parser/pat-tuple-2.rs b/tests/ui/parser/pat-tuple-2.rs similarity index 100% rename from src/test/ui/parser/pat-tuple-2.rs rename to tests/ui/parser/pat-tuple-2.rs diff --git a/src/test/ui/parser/pat-tuple-3.rs b/tests/ui/parser/pat-tuple-3.rs similarity index 100% rename from src/test/ui/parser/pat-tuple-3.rs rename to tests/ui/parser/pat-tuple-3.rs diff --git a/src/test/ui/parser/pat-tuple-3.stderr b/tests/ui/parser/pat-tuple-3.stderr similarity index 100% rename from src/test/ui/parser/pat-tuple-3.stderr rename to tests/ui/parser/pat-tuple-3.stderr diff --git a/src/test/ui/parser/pub-method-macro.rs b/tests/ui/parser/pub-method-macro.rs similarity index 100% rename from src/test/ui/parser/pub-method-macro.rs rename to tests/ui/parser/pub-method-macro.rs diff --git a/src/test/ui/parser/pub-method-macro.stderr b/tests/ui/parser/pub-method-macro.stderr similarity index 100% rename from src/test/ui/parser/pub-method-macro.stderr rename to tests/ui/parser/pub-method-macro.stderr diff --git a/src/test/ui/parser/public-instead-of-pub-1.fixed b/tests/ui/parser/public-instead-of-pub-1.fixed similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-1.fixed rename to tests/ui/parser/public-instead-of-pub-1.fixed diff --git a/src/test/ui/parser/public-instead-of-pub-1.rs b/tests/ui/parser/public-instead-of-pub-1.rs similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-1.rs rename to tests/ui/parser/public-instead-of-pub-1.rs diff --git a/src/test/ui/parser/public-instead-of-pub-1.stderr b/tests/ui/parser/public-instead-of-pub-1.stderr similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-1.stderr rename to tests/ui/parser/public-instead-of-pub-1.stderr diff --git a/src/test/ui/parser/public-instead-of-pub-2.rs b/tests/ui/parser/public-instead-of-pub-2.rs similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-2.rs rename to tests/ui/parser/public-instead-of-pub-2.rs diff --git a/src/test/ui/parser/public-instead-of-pub-2.stderr b/tests/ui/parser/public-instead-of-pub-2.stderr similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-2.stderr rename to tests/ui/parser/public-instead-of-pub-2.stderr diff --git a/src/test/ui/parser/public-instead-of-pub-3.fixed b/tests/ui/parser/public-instead-of-pub-3.fixed similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-3.fixed rename to tests/ui/parser/public-instead-of-pub-3.fixed diff --git a/src/test/ui/parser/public-instead-of-pub-3.rs b/tests/ui/parser/public-instead-of-pub-3.rs similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-3.rs rename to tests/ui/parser/public-instead-of-pub-3.rs diff --git a/src/test/ui/parser/public-instead-of-pub-3.stderr b/tests/ui/parser/public-instead-of-pub-3.stderr similarity index 100% rename from src/test/ui/parser/public-instead-of-pub-3.stderr rename to tests/ui/parser/public-instead-of-pub-3.stderr diff --git a/src/test/ui/parser/public-instead-of-pub.fixed b/tests/ui/parser/public-instead-of-pub.fixed similarity index 100% rename from src/test/ui/parser/public-instead-of-pub.fixed rename to tests/ui/parser/public-instead-of-pub.fixed diff --git a/src/test/ui/parser/public-instead-of-pub.rs b/tests/ui/parser/public-instead-of-pub.rs similarity index 100% rename from src/test/ui/parser/public-instead-of-pub.rs rename to tests/ui/parser/public-instead-of-pub.rs diff --git a/src/test/ui/parser/public-instead-of-pub.stderr b/tests/ui/parser/public-instead-of-pub.stderr similarity index 100% rename from src/test/ui/parser/public-instead-of-pub.stderr rename to tests/ui/parser/public-instead-of-pub.stderr diff --git a/src/test/ui/parser/qualified-path-in-turbofish.fixed b/tests/ui/parser/qualified-path-in-turbofish.fixed similarity index 100% rename from src/test/ui/parser/qualified-path-in-turbofish.fixed rename to tests/ui/parser/qualified-path-in-turbofish.fixed diff --git a/src/test/ui/parser/qualified-path-in-turbofish.rs b/tests/ui/parser/qualified-path-in-turbofish.rs similarity index 100% rename from src/test/ui/parser/qualified-path-in-turbofish.rs rename to tests/ui/parser/qualified-path-in-turbofish.rs diff --git a/src/test/ui/parser/qualified-path-in-turbofish.stderr b/tests/ui/parser/qualified-path-in-turbofish.stderr similarity index 100% rename from src/test/ui/parser/qualified-path-in-turbofish.stderr rename to tests/ui/parser/qualified-path-in-turbofish.stderr diff --git a/src/test/ui/parser/range-3.rs b/tests/ui/parser/range-3.rs similarity index 100% rename from src/test/ui/parser/range-3.rs rename to tests/ui/parser/range-3.rs diff --git a/src/test/ui/parser/range-3.stderr b/tests/ui/parser/range-3.stderr similarity index 100% rename from src/test/ui/parser/range-3.stderr rename to tests/ui/parser/range-3.stderr diff --git a/src/test/ui/parser/range-4.rs b/tests/ui/parser/range-4.rs similarity index 100% rename from src/test/ui/parser/range-4.rs rename to tests/ui/parser/range-4.rs diff --git a/src/test/ui/parser/range-4.stderr b/tests/ui/parser/range-4.stderr similarity index 100% rename from src/test/ui/parser/range-4.stderr rename to tests/ui/parser/range-4.stderr diff --git a/src/test/ui/parser/range-inclusive-extra-equals.rs b/tests/ui/parser/range-inclusive-extra-equals.rs similarity index 100% rename from src/test/ui/parser/range-inclusive-extra-equals.rs rename to tests/ui/parser/range-inclusive-extra-equals.rs diff --git a/src/test/ui/parser/range-inclusive-extra-equals.stderr b/tests/ui/parser/range-inclusive-extra-equals.stderr similarity index 100% rename from src/test/ui/parser/range-inclusive-extra-equals.stderr rename to tests/ui/parser/range-inclusive-extra-equals.stderr diff --git a/src/test/ui/parser/range_inclusive.fixed b/tests/ui/parser/range_inclusive.fixed similarity index 100% rename from src/test/ui/parser/range_inclusive.fixed rename to tests/ui/parser/range_inclusive.fixed diff --git a/src/test/ui/parser/range_inclusive.rs b/tests/ui/parser/range_inclusive.rs similarity index 100% rename from src/test/ui/parser/range_inclusive.rs rename to tests/ui/parser/range_inclusive.rs diff --git a/src/test/ui/parser/range_inclusive.stderr b/tests/ui/parser/range_inclusive.stderr similarity index 100% rename from src/test/ui/parser/range_inclusive.stderr rename to tests/ui/parser/range_inclusive.stderr diff --git a/src/test/ui/parser/range_inclusive_dotdotdot.rs b/tests/ui/parser/range_inclusive_dotdotdot.rs similarity index 100% rename from src/test/ui/parser/range_inclusive_dotdotdot.rs rename to tests/ui/parser/range_inclusive_dotdotdot.rs diff --git a/src/test/ui/parser/range_inclusive_dotdotdot.stderr b/tests/ui/parser/range_inclusive_dotdotdot.stderr similarity index 100% rename from src/test/ui/parser/range_inclusive_dotdotdot.stderr rename to tests/ui/parser/range_inclusive_dotdotdot.stderr diff --git a/src/test/ui/parser/ranges-precedence.rs b/tests/ui/parser/ranges-precedence.rs similarity index 100% rename from src/test/ui/parser/ranges-precedence.rs rename to tests/ui/parser/ranges-precedence.rs diff --git a/src/test/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs similarity index 100% rename from src/test/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs rename to tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs diff --git a/src/test/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr similarity index 100% rename from src/test/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr rename to tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr diff --git a/src/test/ui/parser/raw/raw-byte-string-eof.rs b/tests/ui/parser/raw/raw-byte-string-eof.rs similarity index 100% rename from src/test/ui/parser/raw/raw-byte-string-eof.rs rename to tests/ui/parser/raw/raw-byte-string-eof.rs diff --git a/src/test/ui/parser/raw/raw-byte-string-eof.stderr b/tests/ui/parser/raw/raw-byte-string-eof.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-byte-string-eof.stderr rename to tests/ui/parser/raw/raw-byte-string-eof.stderr diff --git a/src/test/ui/parser/raw/raw-byte-string-literals.rs b/tests/ui/parser/raw/raw-byte-string-literals.rs similarity index 100% rename from src/test/ui/parser/raw/raw-byte-string-literals.rs rename to tests/ui/parser/raw/raw-byte-string-literals.rs diff --git a/src/test/ui/parser/raw/raw-byte-string-literals.stderr b/tests/ui/parser/raw/raw-byte-string-literals.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-byte-string-literals.stderr rename to tests/ui/parser/raw/raw-byte-string-literals.stderr diff --git a/src/test/ui/parser/raw/raw-literal-keywords.rs b/tests/ui/parser/raw/raw-literal-keywords.rs similarity index 100% rename from src/test/ui/parser/raw/raw-literal-keywords.rs rename to tests/ui/parser/raw/raw-literal-keywords.rs diff --git a/src/test/ui/parser/raw/raw-literal-keywords.stderr b/tests/ui/parser/raw/raw-literal-keywords.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-literal-keywords.stderr rename to tests/ui/parser/raw/raw-literal-keywords.stderr diff --git a/src/test/ui/parser/raw/raw-literal-self.rs b/tests/ui/parser/raw/raw-literal-self.rs similarity index 100% rename from src/test/ui/parser/raw/raw-literal-self.rs rename to tests/ui/parser/raw/raw-literal-self.rs diff --git a/src/test/ui/parser/raw/raw-literal-self.stderr b/tests/ui/parser/raw/raw-literal-self.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-literal-self.stderr rename to tests/ui/parser/raw/raw-literal-self.stderr diff --git a/src/test/ui/parser/raw/raw-literal-underscore.rs b/tests/ui/parser/raw/raw-literal-underscore.rs similarity index 100% rename from src/test/ui/parser/raw/raw-literal-underscore.rs rename to tests/ui/parser/raw/raw-literal-underscore.rs diff --git a/src/test/ui/parser/raw/raw-literal-underscore.stderr b/tests/ui/parser/raw/raw-literal-underscore.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-literal-underscore.stderr rename to tests/ui/parser/raw/raw-literal-underscore.stderr diff --git a/src/test/ui/parser/raw/raw-str-delim.rs b/tests/ui/parser/raw/raw-str-delim.rs similarity index 100% rename from src/test/ui/parser/raw/raw-str-delim.rs rename to tests/ui/parser/raw/raw-str-delim.rs diff --git a/src/test/ui/parser/raw/raw-str-delim.stderr b/tests/ui/parser/raw/raw-str-delim.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-str-delim.stderr rename to tests/ui/parser/raw/raw-str-delim.stderr diff --git a/src/test/ui/parser/raw/raw-str-in-macro-call.rs b/tests/ui/parser/raw/raw-str-in-macro-call.rs similarity index 100% rename from src/test/ui/parser/raw/raw-str-in-macro-call.rs rename to tests/ui/parser/raw/raw-str-in-macro-call.rs diff --git a/src/test/ui/parser/raw/raw-str-unbalanced.rs b/tests/ui/parser/raw/raw-str-unbalanced.rs similarity index 100% rename from src/test/ui/parser/raw/raw-str-unbalanced.rs rename to tests/ui/parser/raw/raw-str-unbalanced.rs diff --git a/src/test/ui/parser/raw/raw-str-unbalanced.stderr b/tests/ui/parser/raw/raw-str-unbalanced.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-str-unbalanced.stderr rename to tests/ui/parser/raw/raw-str-unbalanced.stderr diff --git a/src/test/ui/parser/raw/raw-str-unterminated.rs b/tests/ui/parser/raw/raw-str-unterminated.rs similarity index 100% rename from src/test/ui/parser/raw/raw-str-unterminated.rs rename to tests/ui/parser/raw/raw-str-unterminated.rs diff --git a/src/test/ui/parser/raw/raw-str-unterminated.stderr b/tests/ui/parser/raw/raw-str-unterminated.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-str-unterminated.stderr rename to tests/ui/parser/raw/raw-str-unterminated.stderr diff --git a/src/test/ui/parser/raw/raw-string-2.rs b/tests/ui/parser/raw/raw-string-2.rs similarity index 100% rename from src/test/ui/parser/raw/raw-string-2.rs rename to tests/ui/parser/raw/raw-string-2.rs diff --git a/src/test/ui/parser/raw/raw-string-2.stderr b/tests/ui/parser/raw/raw-string-2.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-string-2.stderr rename to tests/ui/parser/raw/raw-string-2.stderr diff --git a/src/test/ui/parser/raw/raw-string.rs b/tests/ui/parser/raw/raw-string.rs similarity index 100% rename from src/test/ui/parser/raw/raw-string.rs rename to tests/ui/parser/raw/raw-string.rs diff --git a/src/test/ui/parser/raw/raw-string.stderr b/tests/ui/parser/raw/raw-string.stderr similarity index 100% rename from src/test/ui/parser/raw/raw-string.stderr rename to tests/ui/parser/raw/raw-string.stderr diff --git a/src/test/ui/parser/recover-assoc-const-constraint.rs b/tests/ui/parser/recover-assoc-const-constraint.rs similarity index 100% rename from src/test/ui/parser/recover-assoc-const-constraint.rs rename to tests/ui/parser/recover-assoc-const-constraint.rs diff --git a/src/test/ui/parser/recover-assoc-const-constraint.stderr b/tests/ui/parser/recover-assoc-const-constraint.stderr similarity index 100% rename from src/test/ui/parser/recover-assoc-const-constraint.stderr rename to tests/ui/parser/recover-assoc-const-constraint.stderr diff --git a/src/test/ui/parser/recover-assoc-eq-missing-term.rs b/tests/ui/parser/recover-assoc-eq-missing-term.rs similarity index 100% rename from src/test/ui/parser/recover-assoc-eq-missing-term.rs rename to tests/ui/parser/recover-assoc-eq-missing-term.rs diff --git a/src/test/ui/parser/recover-assoc-eq-missing-term.stderr b/tests/ui/parser/recover-assoc-eq-missing-term.stderr similarity index 100% rename from src/test/ui/parser/recover-assoc-eq-missing-term.stderr rename to tests/ui/parser/recover-assoc-eq-missing-term.stderr diff --git a/src/test/ui/parser/recover-assoc-lifetime-constraint.rs b/tests/ui/parser/recover-assoc-lifetime-constraint.rs similarity index 100% rename from src/test/ui/parser/recover-assoc-lifetime-constraint.rs rename to tests/ui/parser/recover-assoc-lifetime-constraint.rs diff --git a/src/test/ui/parser/recover-assoc-lifetime-constraint.stderr b/tests/ui/parser/recover-assoc-lifetime-constraint.stderr similarity index 100% rename from src/test/ui/parser/recover-assoc-lifetime-constraint.stderr rename to tests/ui/parser/recover-assoc-lifetime-constraint.stderr diff --git a/src/test/ui/parser/recover-const-async-fn-ptr.rs b/tests/ui/parser/recover-const-async-fn-ptr.rs similarity index 100% rename from src/test/ui/parser/recover-const-async-fn-ptr.rs rename to tests/ui/parser/recover-const-async-fn-ptr.rs diff --git a/src/test/ui/parser/recover-const-async-fn-ptr.stderr b/tests/ui/parser/recover-const-async-fn-ptr.stderr similarity index 100% rename from src/test/ui/parser/recover-const-async-fn-ptr.stderr rename to tests/ui/parser/recover-const-async-fn-ptr.stderr diff --git a/src/test/ui/parser/recover-enum.rs b/tests/ui/parser/recover-enum.rs similarity index 100% rename from src/test/ui/parser/recover-enum.rs rename to tests/ui/parser/recover-enum.rs diff --git a/src/test/ui/parser/recover-enum.stderr b/tests/ui/parser/recover-enum.stderr similarity index 100% rename from src/test/ui/parser/recover-enum.stderr rename to tests/ui/parser/recover-enum.stderr diff --git a/src/test/ui/parser/recover-enum2.rs b/tests/ui/parser/recover-enum2.rs similarity index 100% rename from src/test/ui/parser/recover-enum2.rs rename to tests/ui/parser/recover-enum2.rs diff --git a/src/test/ui/parser/recover-enum2.stderr b/tests/ui/parser/recover-enum2.stderr similarity index 100% rename from src/test/ui/parser/recover-enum2.stderr rename to tests/ui/parser/recover-enum2.stderr diff --git a/src/test/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs b/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs similarity index 100% rename from src/test/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs rename to tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs diff --git a/src/test/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr b/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr similarity index 100% rename from src/test/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr rename to tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr diff --git a/src/test/ui/parser/recover-field-extra-angle-brackets.rs b/tests/ui/parser/recover-field-extra-angle-brackets.rs similarity index 100% rename from src/test/ui/parser/recover-field-extra-angle-brackets.rs rename to tests/ui/parser/recover-field-extra-angle-brackets.rs diff --git a/src/test/ui/parser/recover-field-extra-angle-brackets.stderr b/tests/ui/parser/recover-field-extra-angle-brackets.stderr similarity index 100% rename from src/test/ui/parser/recover-field-extra-angle-brackets.stderr rename to tests/ui/parser/recover-field-extra-angle-brackets.stderr diff --git a/src/test/ui/parser/recover-field-semi.rs b/tests/ui/parser/recover-field-semi.rs similarity index 100% rename from src/test/ui/parser/recover-field-semi.rs rename to tests/ui/parser/recover-field-semi.rs diff --git a/src/test/ui/parser/recover-field-semi.stderr b/tests/ui/parser/recover-field-semi.stderr similarity index 100% rename from src/test/ui/parser/recover-field-semi.stderr rename to tests/ui/parser/recover-field-semi.stderr diff --git a/src/test/ui/parser/recover-fn-ptr-with-generics.rs b/tests/ui/parser/recover-fn-ptr-with-generics.rs similarity index 100% rename from src/test/ui/parser/recover-fn-ptr-with-generics.rs rename to tests/ui/parser/recover-fn-ptr-with-generics.rs diff --git a/src/test/ui/parser/recover-fn-ptr-with-generics.stderr b/tests/ui/parser/recover-fn-ptr-with-generics.stderr similarity index 100% rename from src/test/ui/parser/recover-fn-ptr-with-generics.stderr rename to tests/ui/parser/recover-fn-ptr-with-generics.stderr diff --git a/src/test/ui/parser/recover-fn-trait-from-fn-kw.rs b/tests/ui/parser/recover-fn-trait-from-fn-kw.rs similarity index 100% rename from src/test/ui/parser/recover-fn-trait-from-fn-kw.rs rename to tests/ui/parser/recover-fn-trait-from-fn-kw.rs diff --git a/src/test/ui/parser/recover-fn-trait-from-fn-kw.stderr b/tests/ui/parser/recover-fn-trait-from-fn-kw.stderr similarity index 100% rename from src/test/ui/parser/recover-fn-trait-from-fn-kw.stderr rename to tests/ui/parser/recover-fn-trait-from-fn-kw.stderr diff --git a/src/test/ui/parser/recover-for-loop-parens-around-head.rs b/tests/ui/parser/recover-for-loop-parens-around-head.rs similarity index 100% rename from src/test/ui/parser/recover-for-loop-parens-around-head.rs rename to tests/ui/parser/recover-for-loop-parens-around-head.rs diff --git a/src/test/ui/parser/recover-for-loop-parens-around-head.stderr b/tests/ui/parser/recover-for-loop-parens-around-head.stderr similarity index 100% rename from src/test/ui/parser/recover-for-loop-parens-around-head.stderr rename to tests/ui/parser/recover-for-loop-parens-around-head.stderr diff --git a/src/test/ui/parser/recover-from-bad-variant.rs b/tests/ui/parser/recover-from-bad-variant.rs similarity index 100% rename from src/test/ui/parser/recover-from-bad-variant.rs rename to tests/ui/parser/recover-from-bad-variant.rs diff --git a/src/test/ui/parser/recover-from-bad-variant.stderr b/tests/ui/parser/recover-from-bad-variant.stderr similarity index 100% rename from src/test/ui/parser/recover-from-bad-variant.stderr rename to tests/ui/parser/recover-from-bad-variant.stderr diff --git a/src/test/ui/parser/recover-from-homoglyph.rs b/tests/ui/parser/recover-from-homoglyph.rs similarity index 100% rename from src/test/ui/parser/recover-from-homoglyph.rs rename to tests/ui/parser/recover-from-homoglyph.rs diff --git a/src/test/ui/parser/recover-from-homoglyph.stderr b/tests/ui/parser/recover-from-homoglyph.stderr similarity index 100% rename from src/test/ui/parser/recover-from-homoglyph.stderr rename to tests/ui/parser/recover-from-homoglyph.stderr diff --git a/src/test/ui/parser/recover-labeled-non-block-expr.fixed b/tests/ui/parser/recover-labeled-non-block-expr.fixed similarity index 100% rename from src/test/ui/parser/recover-labeled-non-block-expr.fixed rename to tests/ui/parser/recover-labeled-non-block-expr.fixed diff --git a/src/test/ui/parser/recover-labeled-non-block-expr.rs b/tests/ui/parser/recover-labeled-non-block-expr.rs similarity index 100% rename from src/test/ui/parser/recover-labeled-non-block-expr.rs rename to tests/ui/parser/recover-labeled-non-block-expr.rs diff --git a/src/test/ui/parser/recover-labeled-non-block-expr.stderr b/tests/ui/parser/recover-labeled-non-block-expr.stderr similarity index 100% rename from src/test/ui/parser/recover-labeled-non-block-expr.stderr rename to tests/ui/parser/recover-labeled-non-block-expr.stderr diff --git a/src/test/ui/parser/recover-missing-semi-before-item.fixed b/tests/ui/parser/recover-missing-semi-before-item.fixed similarity index 100% rename from src/test/ui/parser/recover-missing-semi-before-item.fixed rename to tests/ui/parser/recover-missing-semi-before-item.fixed diff --git a/src/test/ui/parser/recover-missing-semi-before-item.rs b/tests/ui/parser/recover-missing-semi-before-item.rs similarity index 100% rename from src/test/ui/parser/recover-missing-semi-before-item.rs rename to tests/ui/parser/recover-missing-semi-before-item.rs diff --git a/src/test/ui/parser/recover-missing-semi-before-item.stderr b/tests/ui/parser/recover-missing-semi-before-item.stderr similarity index 100% rename from src/test/ui/parser/recover-missing-semi-before-item.stderr rename to tests/ui/parser/recover-missing-semi-before-item.stderr diff --git a/src/test/ui/parser/recover-missing-semi.rs b/tests/ui/parser/recover-missing-semi.rs similarity index 100% rename from src/test/ui/parser/recover-missing-semi.rs rename to tests/ui/parser/recover-missing-semi.rs diff --git a/src/test/ui/parser/recover-missing-semi.stderr b/tests/ui/parser/recover-missing-semi.stderr similarity index 100% rename from src/test/ui/parser/recover-missing-semi.stderr rename to tests/ui/parser/recover-missing-semi.stderr diff --git a/src/test/ui/parser/recover-quantified-closure.rs b/tests/ui/parser/recover-quantified-closure.rs similarity index 100% rename from src/test/ui/parser/recover-quantified-closure.rs rename to tests/ui/parser/recover-quantified-closure.rs diff --git a/src/test/ui/parser/recover-quantified-closure.stderr b/tests/ui/parser/recover-quantified-closure.stderr similarity index 100% rename from src/test/ui/parser/recover-quantified-closure.stderr rename to tests/ui/parser/recover-quantified-closure.stderr diff --git a/src/test/ui/parser/recover-range-pats.rs b/tests/ui/parser/recover-range-pats.rs similarity index 100% rename from src/test/ui/parser/recover-range-pats.rs rename to tests/ui/parser/recover-range-pats.rs diff --git a/src/test/ui/parser/recover-range-pats.stderr b/tests/ui/parser/recover-range-pats.stderr similarity index 100% rename from src/test/ui/parser/recover-range-pats.stderr rename to tests/ui/parser/recover-range-pats.stderr diff --git a/src/test/ui/parser/recover-ref-dyn-mut.rs b/tests/ui/parser/recover-ref-dyn-mut.rs similarity index 100% rename from src/test/ui/parser/recover-ref-dyn-mut.rs rename to tests/ui/parser/recover-ref-dyn-mut.rs diff --git a/src/test/ui/parser/recover-ref-dyn-mut.stderr b/tests/ui/parser/recover-ref-dyn-mut.stderr similarity index 100% rename from src/test/ui/parser/recover-ref-dyn-mut.stderr rename to tests/ui/parser/recover-ref-dyn-mut.stderr diff --git a/src/test/ui/parser/recover-struct.rs b/tests/ui/parser/recover-struct.rs similarity index 100% rename from src/test/ui/parser/recover-struct.rs rename to tests/ui/parser/recover-struct.rs diff --git a/src/test/ui/parser/recover-struct.stderr b/tests/ui/parser/recover-struct.stderr similarity index 100% rename from src/test/ui/parser/recover-struct.stderr rename to tests/ui/parser/recover-struct.stderr diff --git a/src/test/ui/parser/recover-tuple-pat.rs b/tests/ui/parser/recover-tuple-pat.rs similarity index 100% rename from src/test/ui/parser/recover-tuple-pat.rs rename to tests/ui/parser/recover-tuple-pat.rs diff --git a/src/test/ui/parser/recover-tuple-pat.stderr b/tests/ui/parser/recover-tuple-pat.stderr similarity index 100% rename from src/test/ui/parser/recover-tuple-pat.stderr rename to tests/ui/parser/recover-tuple-pat.stderr diff --git a/src/test/ui/parser/recover-tuple.rs b/tests/ui/parser/recover-tuple.rs similarity index 100% rename from src/test/ui/parser/recover-tuple.rs rename to tests/ui/parser/recover-tuple.rs diff --git a/src/test/ui/parser/recover-tuple.stderr b/tests/ui/parser/recover-tuple.stderr similarity index 100% rename from src/test/ui/parser/recover-tuple.stderr rename to tests/ui/parser/recover-tuple.stderr diff --git a/src/test/ui/parser/recovered-struct-variant.rs b/tests/ui/parser/recovered-struct-variant.rs similarity index 100% rename from src/test/ui/parser/recovered-struct-variant.rs rename to tests/ui/parser/recovered-struct-variant.rs diff --git a/src/test/ui/parser/recovered-struct-variant.stderr b/tests/ui/parser/recovered-struct-variant.stderr similarity index 100% rename from src/test/ui/parser/recovered-struct-variant.stderr rename to tests/ui/parser/recovered-struct-variant.stderr diff --git a/src/test/ui/parser/regions-out-of-scope-slice.rs b/tests/ui/parser/regions-out-of-scope-slice.rs similarity index 100% rename from src/test/ui/parser/regions-out-of-scope-slice.rs rename to tests/ui/parser/regions-out-of-scope-slice.rs diff --git a/src/test/ui/parser/regions-out-of-scope-slice.stderr b/tests/ui/parser/regions-out-of-scope-slice.stderr similarity index 100% rename from src/test/ui/parser/regions-out-of-scope-slice.stderr rename to tests/ui/parser/regions-out-of-scope-slice.stderr diff --git a/src/test/ui/parser/removed-syntax-closure-lifetime.rs b/tests/ui/parser/removed-syntax-closure-lifetime.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-closure-lifetime.rs rename to tests/ui/parser/removed-syntax-closure-lifetime.rs diff --git a/src/test/ui/parser/removed-syntax-closure-lifetime.stderr b/tests/ui/parser/removed-syntax-closure-lifetime.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-closure-lifetime.stderr rename to tests/ui/parser/removed-syntax-closure-lifetime.stderr diff --git a/src/test/ui/parser/removed-syntax-enum-newtype.rs b/tests/ui/parser/removed-syntax-enum-newtype.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-enum-newtype.rs rename to tests/ui/parser/removed-syntax-enum-newtype.rs diff --git a/src/test/ui/parser/removed-syntax-enum-newtype.stderr b/tests/ui/parser/removed-syntax-enum-newtype.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-enum-newtype.stderr rename to tests/ui/parser/removed-syntax-enum-newtype.stderr diff --git a/src/test/ui/parser/removed-syntax-field-let-2.rs b/tests/ui/parser/removed-syntax-field-let-2.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-field-let-2.rs rename to tests/ui/parser/removed-syntax-field-let-2.rs diff --git a/src/test/ui/parser/removed-syntax-field-let-2.stderr b/tests/ui/parser/removed-syntax-field-let-2.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-field-let-2.stderr rename to tests/ui/parser/removed-syntax-field-let-2.stderr diff --git a/src/test/ui/parser/removed-syntax-field-let.rs b/tests/ui/parser/removed-syntax-field-let.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-field-let.rs rename to tests/ui/parser/removed-syntax-field-let.rs diff --git a/src/test/ui/parser/removed-syntax-field-let.stderr b/tests/ui/parser/removed-syntax-field-let.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-field-let.stderr rename to tests/ui/parser/removed-syntax-field-let.stderr diff --git a/src/test/ui/parser/removed-syntax-field-semicolon.rs b/tests/ui/parser/removed-syntax-field-semicolon.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-field-semicolon.rs rename to tests/ui/parser/removed-syntax-field-semicolon.rs diff --git a/src/test/ui/parser/removed-syntax-field-semicolon.stderr b/tests/ui/parser/removed-syntax-field-semicolon.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-field-semicolon.stderr rename to tests/ui/parser/removed-syntax-field-semicolon.stderr diff --git a/src/test/ui/parser/removed-syntax-fixed-vec.rs b/tests/ui/parser/removed-syntax-fixed-vec.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-fixed-vec.rs rename to tests/ui/parser/removed-syntax-fixed-vec.rs diff --git a/src/test/ui/parser/removed-syntax-fixed-vec.stderr b/tests/ui/parser/removed-syntax-fixed-vec.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-fixed-vec.stderr rename to tests/ui/parser/removed-syntax-fixed-vec.stderr diff --git a/src/test/ui/parser/removed-syntax-fn-sigil.rs b/tests/ui/parser/removed-syntax-fn-sigil.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-fn-sigil.rs rename to tests/ui/parser/removed-syntax-fn-sigil.rs diff --git a/src/test/ui/parser/removed-syntax-fn-sigil.stderr b/tests/ui/parser/removed-syntax-fn-sigil.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-fn-sigil.stderr rename to tests/ui/parser/removed-syntax-fn-sigil.stderr diff --git a/src/test/ui/parser/removed-syntax-mode.rs b/tests/ui/parser/removed-syntax-mode.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-mode.rs rename to tests/ui/parser/removed-syntax-mode.rs diff --git a/src/test/ui/parser/removed-syntax-mode.stderr b/tests/ui/parser/removed-syntax-mode.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-mode.stderr rename to tests/ui/parser/removed-syntax-mode.stderr diff --git a/src/test/ui/parser/removed-syntax-mut-vec-expr.rs b/tests/ui/parser/removed-syntax-mut-vec-expr.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-mut-vec-expr.rs rename to tests/ui/parser/removed-syntax-mut-vec-expr.rs diff --git a/src/test/ui/parser/removed-syntax-mut-vec-expr.stderr b/tests/ui/parser/removed-syntax-mut-vec-expr.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-mut-vec-expr.stderr rename to tests/ui/parser/removed-syntax-mut-vec-expr.stderr diff --git a/src/test/ui/parser/removed-syntax-mut-vec-ty.rs b/tests/ui/parser/removed-syntax-mut-vec-ty.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-mut-vec-ty.rs rename to tests/ui/parser/removed-syntax-mut-vec-ty.rs diff --git a/src/test/ui/parser/removed-syntax-mut-vec-ty.stderr b/tests/ui/parser/removed-syntax-mut-vec-ty.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-mut-vec-ty.stderr rename to tests/ui/parser/removed-syntax-mut-vec-ty.stderr diff --git a/src/test/ui/parser/removed-syntax-ptr-lifetime.rs b/tests/ui/parser/removed-syntax-ptr-lifetime.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-ptr-lifetime.rs rename to tests/ui/parser/removed-syntax-ptr-lifetime.rs diff --git a/src/test/ui/parser/removed-syntax-ptr-lifetime.stderr b/tests/ui/parser/removed-syntax-ptr-lifetime.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-ptr-lifetime.stderr rename to tests/ui/parser/removed-syntax-ptr-lifetime.stderr diff --git a/src/test/ui/parser/removed-syntax-record.rs b/tests/ui/parser/removed-syntax-record.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-record.rs rename to tests/ui/parser/removed-syntax-record.rs diff --git a/src/test/ui/parser/removed-syntax-record.stderr b/tests/ui/parser/removed-syntax-record.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-record.stderr rename to tests/ui/parser/removed-syntax-record.stderr diff --git a/src/test/ui/parser/removed-syntax-static-fn.rs b/tests/ui/parser/removed-syntax-static-fn.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-static-fn.rs rename to tests/ui/parser/removed-syntax-static-fn.rs diff --git a/src/test/ui/parser/removed-syntax-static-fn.stderr b/tests/ui/parser/removed-syntax-static-fn.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-static-fn.stderr rename to tests/ui/parser/removed-syntax-static-fn.stderr diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-expr.rs b/tests/ui/parser/removed-syntax-uniq-mut-expr.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-uniq-mut-expr.rs rename to tests/ui/parser/removed-syntax-uniq-mut-expr.rs diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr b/tests/ui/parser/removed-syntax-uniq-mut-expr.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr rename to tests/ui/parser/removed-syntax-uniq-mut-expr.stderr diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-ty.rs b/tests/ui/parser/removed-syntax-uniq-mut-ty.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-uniq-mut-ty.rs rename to tests/ui/parser/removed-syntax-uniq-mut-ty.rs diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr b/tests/ui/parser/removed-syntax-uniq-mut-ty.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr rename to tests/ui/parser/removed-syntax-uniq-mut-ty.stderr diff --git a/src/test/ui/parser/removed-syntax-with-1.rs b/tests/ui/parser/removed-syntax-with-1.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-with-1.rs rename to tests/ui/parser/removed-syntax-with-1.rs diff --git a/src/test/ui/parser/removed-syntax-with-1.stderr b/tests/ui/parser/removed-syntax-with-1.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-with-1.stderr rename to tests/ui/parser/removed-syntax-with-1.stderr diff --git a/src/test/ui/parser/removed-syntax-with-2.rs b/tests/ui/parser/removed-syntax-with-2.rs similarity index 100% rename from src/test/ui/parser/removed-syntax-with-2.rs rename to tests/ui/parser/removed-syntax-with-2.rs diff --git a/src/test/ui/parser/removed-syntax-with-2.stderr b/tests/ui/parser/removed-syntax-with-2.stderr similarity index 100% rename from src/test/ui/parser/removed-syntax-with-2.stderr rename to tests/ui/parser/removed-syntax-with-2.stderr diff --git a/src/test/ui/parser/require-parens-for-chained-comparison.rs b/tests/ui/parser/require-parens-for-chained-comparison.rs similarity index 100% rename from src/test/ui/parser/require-parens-for-chained-comparison.rs rename to tests/ui/parser/require-parens-for-chained-comparison.rs diff --git a/src/test/ui/parser/require-parens-for-chained-comparison.stderr b/tests/ui/parser/require-parens-for-chained-comparison.stderr similarity index 100% rename from src/test/ui/parser/require-parens-for-chained-comparison.stderr rename to tests/ui/parser/require-parens-for-chained-comparison.stderr diff --git a/src/test/ui/parser/self-in-function-arg.rs b/tests/ui/parser/self-in-function-arg.rs similarity index 100% rename from src/test/ui/parser/self-in-function-arg.rs rename to tests/ui/parser/self-in-function-arg.rs diff --git a/src/test/ui/parser/self-in-function-arg.stderr b/tests/ui/parser/self-in-function-arg.stderr similarity index 100% rename from src/test/ui/parser/self-in-function-arg.stderr rename to tests/ui/parser/self-in-function-arg.stderr diff --git a/src/test/ui/parser/self-param-semantic-fail.rs b/tests/ui/parser/self-param-semantic-fail.rs similarity index 100% rename from src/test/ui/parser/self-param-semantic-fail.rs rename to tests/ui/parser/self-param-semantic-fail.rs diff --git a/src/test/ui/parser/self-param-semantic-fail.stderr b/tests/ui/parser/self-param-semantic-fail.stderr similarity index 100% rename from src/test/ui/parser/self-param-semantic-fail.stderr rename to tests/ui/parser/self-param-semantic-fail.stderr diff --git a/src/test/ui/parser/self-param-syntactic-pass.rs b/tests/ui/parser/self-param-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/self-param-syntactic-pass.rs rename to tests/ui/parser/self-param-syntactic-pass.rs diff --git a/src/test/ui/parser/semi-after-closure-in-macro.rs b/tests/ui/parser/semi-after-closure-in-macro.rs similarity index 100% rename from src/test/ui/parser/semi-after-closure-in-macro.rs rename to tests/ui/parser/semi-after-closure-in-macro.rs diff --git a/src/test/ui/parser/several-carriage-returns-in-doc-comment.rs b/tests/ui/parser/several-carriage-returns-in-doc-comment.rs similarity index 100% rename from src/test/ui/parser/several-carriage-returns-in-doc-comment.rs rename to tests/ui/parser/several-carriage-returns-in-doc-comment.rs diff --git a/src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr b/tests/ui/parser/several-carriage-returns-in-doc-comment.stderr similarity index 100% rename from src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr rename to tests/ui/parser/several-carriage-returns-in-doc-comment.stderr diff --git a/src/test/ui/parser/shebang/issue-71471-ignore-tidy.rs b/tests/ui/parser/shebang/issue-71471-ignore-tidy.rs similarity index 100% rename from src/test/ui/parser/shebang/issue-71471-ignore-tidy.rs rename to tests/ui/parser/shebang/issue-71471-ignore-tidy.rs diff --git a/src/test/ui/parser/shebang/issue-71471-ignore-tidy.stderr b/tests/ui/parser/shebang/issue-71471-ignore-tidy.stderr similarity index 100% rename from src/test/ui/parser/shebang/issue-71471-ignore-tidy.stderr rename to tests/ui/parser/shebang/issue-71471-ignore-tidy.stderr diff --git a/src/test/ui/parser/shebang/multiline-attrib.rs b/tests/ui/parser/shebang/multiline-attrib.rs similarity index 100% rename from src/test/ui/parser/shebang/multiline-attrib.rs rename to tests/ui/parser/shebang/multiline-attrib.rs diff --git a/src/test/ui/parser/shebang/regular-attrib.rs b/tests/ui/parser/shebang/regular-attrib.rs similarity index 100% rename from src/test/ui/parser/shebang/regular-attrib.rs rename to tests/ui/parser/shebang/regular-attrib.rs diff --git a/src/test/ui/parser/shebang/shebang-and-attrib.rs b/tests/ui/parser/shebang/shebang-and-attrib.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-and-attrib.rs rename to tests/ui/parser/shebang/shebang-and-attrib.rs diff --git a/src/test/ui/parser/shebang/shebang-comment.rs b/tests/ui/parser/shebang/shebang-comment.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-comment.rs rename to tests/ui/parser/shebang/shebang-comment.rs diff --git a/src/test/ui/parser/shebang/shebang-doc-comment.rs b/tests/ui/parser/shebang/shebang-doc-comment.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-doc-comment.rs rename to tests/ui/parser/shebang/shebang-doc-comment.rs diff --git a/src/test/ui/parser/shebang/shebang-doc-comment.stderr b/tests/ui/parser/shebang/shebang-doc-comment.stderr similarity index 100% rename from src/test/ui/parser/shebang/shebang-doc-comment.stderr rename to tests/ui/parser/shebang/shebang-doc-comment.stderr diff --git a/src/test/ui/parser/shebang/shebang-empty.rs b/tests/ui/parser/shebang/shebang-empty.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-empty.rs rename to tests/ui/parser/shebang/shebang-empty.rs diff --git a/src/test/ui/parser/shebang/shebang-must-start-file.rs b/tests/ui/parser/shebang/shebang-must-start-file.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-must-start-file.rs rename to tests/ui/parser/shebang/shebang-must-start-file.rs diff --git a/src/test/ui/parser/shebang/shebang-must-start-file.stderr b/tests/ui/parser/shebang/shebang-must-start-file.stderr similarity index 100% rename from src/test/ui/parser/shebang/shebang-must-start-file.stderr rename to tests/ui/parser/shebang/shebang-must-start-file.stderr diff --git a/src/test/ui/parser/shebang/shebang-space.rs b/tests/ui/parser/shebang/shebang-space.rs similarity index 100% rename from src/test/ui/parser/shebang/shebang-space.rs rename to tests/ui/parser/shebang/shebang-space.rs diff --git a/src/test/ui/parser/shebang/sneaky-attrib.rs b/tests/ui/parser/shebang/sneaky-attrib.rs similarity index 100% rename from src/test/ui/parser/shebang/sneaky-attrib.rs rename to tests/ui/parser/shebang/sneaky-attrib.rs diff --git a/src/test/ui/parser/shebang/valid-shebang.rs b/tests/ui/parser/shebang/valid-shebang.rs similarity index 100% rename from src/test/ui/parser/shebang/valid-shebang.rs rename to tests/ui/parser/shebang/valid-shebang.rs diff --git a/src/test/ui/parser/similar-tokens.rs b/tests/ui/parser/similar-tokens.rs similarity index 100% rename from src/test/ui/parser/similar-tokens.rs rename to tests/ui/parser/similar-tokens.rs diff --git a/src/test/ui/parser/similar-tokens.stderr b/tests/ui/parser/similar-tokens.stderr similarity index 100% rename from src/test/ui/parser/similar-tokens.stderr rename to tests/ui/parser/similar-tokens.stderr diff --git a/src/test/ui/parser/slowparse-bstring.rs b/tests/ui/parser/slowparse-bstring.rs similarity index 100% rename from src/test/ui/parser/slowparse-bstring.rs rename to tests/ui/parser/slowparse-bstring.rs diff --git a/src/test/ui/parser/slowparse-string.rs b/tests/ui/parser/slowparse-string.rs similarity index 100% rename from src/test/ui/parser/slowparse-string.rs rename to tests/ui/parser/slowparse-string.rs diff --git a/src/test/ui/parser/stmt_expr_attrs_placement.rs b/tests/ui/parser/stmt_expr_attrs_placement.rs similarity index 100% rename from src/test/ui/parser/stmt_expr_attrs_placement.rs rename to tests/ui/parser/stmt_expr_attrs_placement.rs diff --git a/src/test/ui/parser/stmt_expr_attrs_placement.stderr b/tests/ui/parser/stmt_expr_attrs_placement.stderr similarity index 100% rename from src/test/ui/parser/stmt_expr_attrs_placement.stderr rename to tests/ui/parser/stmt_expr_attrs_placement.stderr diff --git a/src/test/ui/parser/stripped-nested-outline-mod-pass.rs b/tests/ui/parser/stripped-nested-outline-mod-pass.rs similarity index 100% rename from src/test/ui/parser/stripped-nested-outline-mod-pass.rs rename to tests/ui/parser/stripped-nested-outline-mod-pass.rs diff --git a/src/test/ui/parser/struct-default-values-and-missing-field-separator.fixed b/tests/ui/parser/struct-default-values-and-missing-field-separator.fixed similarity index 100% rename from src/test/ui/parser/struct-default-values-and-missing-field-separator.fixed rename to tests/ui/parser/struct-default-values-and-missing-field-separator.fixed diff --git a/src/test/ui/parser/struct-default-values-and-missing-field-separator.rs b/tests/ui/parser/struct-default-values-and-missing-field-separator.rs similarity index 100% rename from src/test/ui/parser/struct-default-values-and-missing-field-separator.rs rename to tests/ui/parser/struct-default-values-and-missing-field-separator.rs diff --git a/src/test/ui/parser/struct-default-values-and-missing-field-separator.stderr b/tests/ui/parser/struct-default-values-and-missing-field-separator.stderr similarity index 100% rename from src/test/ui/parser/struct-default-values-and-missing-field-separator.stderr rename to tests/ui/parser/struct-default-values-and-missing-field-separator.stderr diff --git a/src/test/ui/parser/struct-field-numeric-shorthand.rs b/tests/ui/parser/struct-field-numeric-shorthand.rs similarity index 100% rename from src/test/ui/parser/struct-field-numeric-shorthand.rs rename to tests/ui/parser/struct-field-numeric-shorthand.rs diff --git a/src/test/ui/parser/struct-field-numeric-shorthand.stderr b/tests/ui/parser/struct-field-numeric-shorthand.stderr similarity index 100% rename from src/test/ui/parser/struct-field-numeric-shorthand.stderr rename to tests/ui/parser/struct-field-numeric-shorthand.stderr diff --git a/src/test/ui/parser/struct-filed-with-attr.fixed b/tests/ui/parser/struct-filed-with-attr.fixed similarity index 100% rename from src/test/ui/parser/struct-filed-with-attr.fixed rename to tests/ui/parser/struct-filed-with-attr.fixed diff --git a/src/test/ui/parser/struct-filed-with-attr.rs b/tests/ui/parser/struct-filed-with-attr.rs similarity index 100% rename from src/test/ui/parser/struct-filed-with-attr.rs rename to tests/ui/parser/struct-filed-with-attr.rs diff --git a/src/test/ui/parser/struct-filed-with-attr.stderr b/tests/ui/parser/struct-filed-with-attr.stderr similarity index 100% rename from src/test/ui/parser/struct-filed-with-attr.stderr rename to tests/ui/parser/struct-filed-with-attr.stderr diff --git a/src/test/ui/parser/struct-literal-in-for.rs b/tests/ui/parser/struct-literal-in-for.rs similarity index 100% rename from src/test/ui/parser/struct-literal-in-for.rs rename to tests/ui/parser/struct-literal-in-for.rs diff --git a/src/test/ui/parser/struct-literal-in-for.stderr b/tests/ui/parser/struct-literal-in-for.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-in-for.stderr rename to tests/ui/parser/struct-literal-in-for.stderr diff --git a/src/test/ui/parser/struct-literal-in-if.rs b/tests/ui/parser/struct-literal-in-if.rs similarity index 100% rename from src/test/ui/parser/struct-literal-in-if.rs rename to tests/ui/parser/struct-literal-in-if.rs diff --git a/src/test/ui/parser/struct-literal-in-if.stderr b/tests/ui/parser/struct-literal-in-if.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-in-if.stderr rename to tests/ui/parser/struct-literal-in-if.stderr diff --git a/src/test/ui/parser/struct-literal-in-match-discriminant.rs b/tests/ui/parser/struct-literal-in-match-discriminant.rs similarity index 100% rename from src/test/ui/parser/struct-literal-in-match-discriminant.rs rename to tests/ui/parser/struct-literal-in-match-discriminant.rs diff --git a/src/test/ui/parser/struct-literal-in-match-discriminant.stderr b/tests/ui/parser/struct-literal-in-match-discriminant.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-in-match-discriminant.stderr rename to tests/ui/parser/struct-literal-in-match-discriminant.stderr diff --git a/src/test/ui/parser/struct-literal-in-match-guard.rs b/tests/ui/parser/struct-literal-in-match-guard.rs similarity index 100% rename from src/test/ui/parser/struct-literal-in-match-guard.rs rename to tests/ui/parser/struct-literal-in-match-guard.rs diff --git a/src/test/ui/parser/struct-literal-in-while.rs b/tests/ui/parser/struct-literal-in-while.rs similarity index 100% rename from src/test/ui/parser/struct-literal-in-while.rs rename to tests/ui/parser/struct-literal-in-while.rs diff --git a/src/test/ui/parser/struct-literal-in-while.stderr b/tests/ui/parser/struct-literal-in-while.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-in-while.stderr rename to tests/ui/parser/struct-literal-in-while.stderr diff --git a/src/test/ui/parser/struct-literal-restrictions-in-lamda.rs b/tests/ui/parser/struct-literal-restrictions-in-lamda.rs similarity index 100% rename from src/test/ui/parser/struct-literal-restrictions-in-lamda.rs rename to tests/ui/parser/struct-literal-restrictions-in-lamda.rs diff --git a/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr b/tests/ui/parser/struct-literal-restrictions-in-lamda.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr rename to tests/ui/parser/struct-literal-restrictions-in-lamda.stderr diff --git a/src/test/ui/parser/struct-literal-variant-in-if.rs b/tests/ui/parser/struct-literal-variant-in-if.rs similarity index 100% rename from src/test/ui/parser/struct-literal-variant-in-if.rs rename to tests/ui/parser/struct-literal-variant-in-if.rs diff --git a/src/test/ui/parser/struct-literal-variant-in-if.stderr b/tests/ui/parser/struct-literal-variant-in-if.stderr similarity index 100% rename from src/test/ui/parser/struct-literal-variant-in-if.stderr rename to tests/ui/parser/struct-literal-variant-in-if.stderr diff --git a/src/test/ui/parser/suggest-assoc-const.fixed b/tests/ui/parser/suggest-assoc-const.fixed similarity index 100% rename from src/test/ui/parser/suggest-assoc-const.fixed rename to tests/ui/parser/suggest-assoc-const.fixed diff --git a/src/test/ui/parser/suggest-assoc-const.rs b/tests/ui/parser/suggest-assoc-const.rs similarity index 100% rename from src/test/ui/parser/suggest-assoc-const.rs rename to tests/ui/parser/suggest-assoc-const.rs diff --git a/src/test/ui/parser/suggest-assoc-const.stderr b/tests/ui/parser/suggest-assoc-const.stderr similarity index 100% rename from src/test/ui/parser/suggest-assoc-const.stderr rename to tests/ui/parser/suggest-assoc-const.stderr diff --git a/src/test/ui/parser/suggest-const-for-global-var.rs b/tests/ui/parser/suggest-const-for-global-var.rs similarity index 100% rename from src/test/ui/parser/suggest-const-for-global-var.rs rename to tests/ui/parser/suggest-const-for-global-var.rs diff --git a/src/test/ui/parser/suggest-const-for-global-var.stderr b/tests/ui/parser/suggest-const-for-global-var.stderr similarity index 100% rename from src/test/ui/parser/suggest-const-for-global-var.stderr rename to tests/ui/parser/suggest-const-for-global-var.stderr diff --git a/src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.fixed b/tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.fixed similarity index 100% rename from src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.fixed rename to tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.fixed diff --git a/src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.rs b/tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.rs similarity index 100% rename from src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.rs rename to tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.rs diff --git a/src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.stderr b/tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.stderr similarity index 100% rename from src/test/ui/parser/suggest-removing-semicolon-after-impl-trait-items.stderr rename to tests/ui/parser/suggest-removing-semicolon-after-impl-trait-items.stderr diff --git a/src/test/ui/parser/suggest-semi-in-array.rs b/tests/ui/parser/suggest-semi-in-array.rs similarity index 100% rename from src/test/ui/parser/suggest-semi-in-array.rs rename to tests/ui/parser/suggest-semi-in-array.rs diff --git a/src/test/ui/parser/suggest-semi-in-array.stderr b/tests/ui/parser/suggest-semi-in-array.stderr similarity index 100% rename from src/test/ui/parser/suggest-semi-in-array.stderr rename to tests/ui/parser/suggest-semi-in-array.stderr diff --git a/src/test/ui/parser/suggest-semicolon-before-array.fixed b/tests/ui/parser/suggest-semicolon-before-array.fixed similarity index 100% rename from src/test/ui/parser/suggest-semicolon-before-array.fixed rename to tests/ui/parser/suggest-semicolon-before-array.fixed diff --git a/src/test/ui/parser/suggest-semicolon-before-array.rs b/tests/ui/parser/suggest-semicolon-before-array.rs similarity index 100% rename from src/test/ui/parser/suggest-semicolon-before-array.rs rename to tests/ui/parser/suggest-semicolon-before-array.rs diff --git a/src/test/ui/parser/suggest-semicolon-before-array.stderr b/tests/ui/parser/suggest-semicolon-before-array.stderr similarity index 100% rename from src/test/ui/parser/suggest-semicolon-before-array.stderr rename to tests/ui/parser/suggest-semicolon-before-array.stderr diff --git a/src/test/ui/parser/trailing-carriage-return-in-string.rs b/tests/ui/parser/trailing-carriage-return-in-string.rs similarity index 100% rename from src/test/ui/parser/trailing-carriage-return-in-string.rs rename to tests/ui/parser/trailing-carriage-return-in-string.rs diff --git a/src/test/ui/parser/trailing-carriage-return-in-string.stderr b/tests/ui/parser/trailing-carriage-return-in-string.stderr similarity index 100% rename from src/test/ui/parser/trailing-carriage-return-in-string.stderr rename to tests/ui/parser/trailing-carriage-return-in-string.stderr diff --git a/src/test/ui/parser/trailing-plus-in-bounds.rs b/tests/ui/parser/trailing-plus-in-bounds.rs similarity index 100% rename from src/test/ui/parser/trailing-plus-in-bounds.rs rename to tests/ui/parser/trailing-plus-in-bounds.rs diff --git a/src/test/ui/parser/trailing-question-in-macro-type.rs b/tests/ui/parser/trailing-question-in-macro-type.rs similarity index 100% rename from src/test/ui/parser/trailing-question-in-macro-type.rs rename to tests/ui/parser/trailing-question-in-macro-type.rs diff --git a/src/test/ui/parser/trailing-question-in-macro-type.stderr b/tests/ui/parser/trailing-question-in-macro-type.stderr similarity index 100% rename from src/test/ui/parser/trailing-question-in-macro-type.stderr rename to tests/ui/parser/trailing-question-in-macro-type.stderr diff --git a/src/test/ui/parser/trailing-question-in-type.fixed b/tests/ui/parser/trailing-question-in-type.fixed similarity index 100% rename from src/test/ui/parser/trailing-question-in-type.fixed rename to tests/ui/parser/trailing-question-in-type.fixed diff --git a/src/test/ui/parser/trailing-question-in-type.rs b/tests/ui/parser/trailing-question-in-type.rs similarity index 100% rename from src/test/ui/parser/trailing-question-in-type.rs rename to tests/ui/parser/trailing-question-in-type.rs diff --git a/src/test/ui/parser/trailing-question-in-type.stderr b/tests/ui/parser/trailing-question-in-type.stderr similarity index 100% rename from src/test/ui/parser/trailing-question-in-type.stderr rename to tests/ui/parser/trailing-question-in-type.stderr diff --git a/src/test/ui/parser/trait-bounds-not-on-impl.rs b/tests/ui/parser/trait-bounds-not-on-impl.rs similarity index 100% rename from src/test/ui/parser/trait-bounds-not-on-impl.rs rename to tests/ui/parser/trait-bounds-not-on-impl.rs diff --git a/src/test/ui/parser/trait-bounds-not-on-impl.stderr b/tests/ui/parser/trait-bounds-not-on-impl.stderr similarity index 100% rename from src/test/ui/parser/trait-bounds-not-on-impl.stderr rename to tests/ui/parser/trait-bounds-not-on-impl.stderr diff --git a/src/test/ui/parser/trait-item-with-defaultness-fail-semantic.rs b/tests/ui/parser/trait-item-with-defaultness-fail-semantic.rs similarity index 100% rename from src/test/ui/parser/trait-item-with-defaultness-fail-semantic.rs rename to tests/ui/parser/trait-item-with-defaultness-fail-semantic.rs diff --git a/src/test/ui/parser/trait-item-with-defaultness-fail-semantic.stderr b/tests/ui/parser/trait-item-with-defaultness-fail-semantic.stderr similarity index 100% rename from src/test/ui/parser/trait-item-with-defaultness-fail-semantic.stderr rename to tests/ui/parser/trait-item-with-defaultness-fail-semantic.stderr diff --git a/src/test/ui/parser/trait-item-with-defaultness-pass.rs b/tests/ui/parser/trait-item-with-defaultness-pass.rs similarity index 100% rename from src/test/ui/parser/trait-item-with-defaultness-pass.rs rename to tests/ui/parser/trait-item-with-defaultness-pass.rs diff --git a/src/test/ui/parser/trait-object-bad-parens.rs b/tests/ui/parser/trait-object-bad-parens.rs similarity index 100% rename from src/test/ui/parser/trait-object-bad-parens.rs rename to tests/ui/parser/trait-object-bad-parens.rs diff --git a/src/test/ui/parser/trait-object-bad-parens.stderr b/tests/ui/parser/trait-object-bad-parens.stderr similarity index 100% rename from src/test/ui/parser/trait-object-bad-parens.stderr rename to tests/ui/parser/trait-object-bad-parens.stderr diff --git a/src/test/ui/parser/trait-object-delimiters.rs b/tests/ui/parser/trait-object-delimiters.rs similarity index 100% rename from src/test/ui/parser/trait-object-delimiters.rs rename to tests/ui/parser/trait-object-delimiters.rs diff --git a/src/test/ui/parser/trait-object-delimiters.stderr b/tests/ui/parser/trait-object-delimiters.stderr similarity index 100% rename from src/test/ui/parser/trait-object-delimiters.stderr rename to tests/ui/parser/trait-object-delimiters.stderr diff --git a/src/test/ui/parser/trait-object-lifetime-parens.rs b/tests/ui/parser/trait-object-lifetime-parens.rs similarity index 100% rename from src/test/ui/parser/trait-object-lifetime-parens.rs rename to tests/ui/parser/trait-object-lifetime-parens.rs diff --git a/src/test/ui/parser/trait-object-lifetime-parens.stderr b/tests/ui/parser/trait-object-lifetime-parens.stderr similarity index 100% rename from src/test/ui/parser/trait-object-lifetime-parens.stderr rename to tests/ui/parser/trait-object-lifetime-parens.stderr diff --git a/src/test/ui/parser/trait-object-polytrait-priority.rs b/tests/ui/parser/trait-object-polytrait-priority.rs similarity index 100% rename from src/test/ui/parser/trait-object-polytrait-priority.rs rename to tests/ui/parser/trait-object-polytrait-priority.rs diff --git a/src/test/ui/parser/trait-object-polytrait-priority.stderr b/tests/ui/parser/trait-object-polytrait-priority.stderr similarity index 100% rename from src/test/ui/parser/trait-object-polytrait-priority.stderr rename to tests/ui/parser/trait-object-polytrait-priority.stderr diff --git a/src/test/ui/parser/trait-object-trait-parens.rs b/tests/ui/parser/trait-object-trait-parens.rs similarity index 100% rename from src/test/ui/parser/trait-object-trait-parens.rs rename to tests/ui/parser/trait-object-trait-parens.rs diff --git a/src/test/ui/parser/trait-object-trait-parens.stderr b/tests/ui/parser/trait-object-trait-parens.stderr similarity index 100% rename from src/test/ui/parser/trait-object-trait-parens.stderr rename to tests/ui/parser/trait-object-trait-parens.stderr diff --git a/src/test/ui/parser/trait-plusequal-splitting.rs b/tests/ui/parser/trait-plusequal-splitting.rs similarity index 100% rename from src/test/ui/parser/trait-plusequal-splitting.rs rename to tests/ui/parser/trait-plusequal-splitting.rs diff --git a/src/test/ui/parser/trait-pub-assoc-const.rs b/tests/ui/parser/trait-pub-assoc-const.rs similarity index 100% rename from src/test/ui/parser/trait-pub-assoc-const.rs rename to tests/ui/parser/trait-pub-assoc-const.rs diff --git a/src/test/ui/parser/trait-pub-assoc-const.stderr b/tests/ui/parser/trait-pub-assoc-const.stderr similarity index 100% rename from src/test/ui/parser/trait-pub-assoc-const.stderr rename to tests/ui/parser/trait-pub-assoc-const.stderr diff --git a/src/test/ui/parser/trait-pub-assoc-ty.rs b/tests/ui/parser/trait-pub-assoc-ty.rs similarity index 100% rename from src/test/ui/parser/trait-pub-assoc-ty.rs rename to tests/ui/parser/trait-pub-assoc-ty.rs diff --git a/src/test/ui/parser/trait-pub-assoc-ty.stderr b/tests/ui/parser/trait-pub-assoc-ty.stderr similarity index 100% rename from src/test/ui/parser/trait-pub-assoc-ty.stderr rename to tests/ui/parser/trait-pub-assoc-ty.stderr diff --git a/src/test/ui/parser/trait-pub-method.rs b/tests/ui/parser/trait-pub-method.rs similarity index 100% rename from src/test/ui/parser/trait-pub-method.rs rename to tests/ui/parser/trait-pub-method.rs diff --git a/src/test/ui/parser/trait-pub-method.stderr b/tests/ui/parser/trait-pub-method.stderr similarity index 100% rename from src/test/ui/parser/trait-pub-method.stderr rename to tests/ui/parser/trait-pub-method.stderr diff --git a/src/test/ui/parser/type-alias-where-fixable.fixed b/tests/ui/parser/type-alias-where-fixable.fixed similarity index 100% rename from src/test/ui/parser/type-alias-where-fixable.fixed rename to tests/ui/parser/type-alias-where-fixable.fixed diff --git a/src/test/ui/parser/type-alias-where-fixable.rs b/tests/ui/parser/type-alias-where-fixable.rs similarity index 100% rename from src/test/ui/parser/type-alias-where-fixable.rs rename to tests/ui/parser/type-alias-where-fixable.rs diff --git a/src/test/ui/parser/type-alias-where-fixable.stderr b/tests/ui/parser/type-alias-where-fixable.stderr similarity index 100% rename from src/test/ui/parser/type-alias-where-fixable.stderr rename to tests/ui/parser/type-alias-where-fixable.stderr diff --git a/src/test/ui/parser/type-alias-where.rs b/tests/ui/parser/type-alias-where.rs similarity index 100% rename from src/test/ui/parser/type-alias-where.rs rename to tests/ui/parser/type-alias-where.rs diff --git a/src/test/ui/parser/type-alias-where.stderr b/tests/ui/parser/type-alias-where.stderr similarity index 100% rename from src/test/ui/parser/type-alias-where.stderr rename to tests/ui/parser/type-alias-where.stderr diff --git a/src/test/ui/parser/type-parameters-in-field-exprs.rs b/tests/ui/parser/type-parameters-in-field-exprs.rs similarity index 100% rename from src/test/ui/parser/type-parameters-in-field-exprs.rs rename to tests/ui/parser/type-parameters-in-field-exprs.rs diff --git a/src/test/ui/parser/type-parameters-in-field-exprs.stderr b/tests/ui/parser/type-parameters-in-field-exprs.stderr similarity index 100% rename from src/test/ui/parser/type-parameters-in-field-exprs.stderr rename to tests/ui/parser/type-parameters-in-field-exprs.stderr diff --git a/src/test/ui/parser/unbalanced-doublequote.rs b/tests/ui/parser/unbalanced-doublequote.rs similarity index 100% rename from src/test/ui/parser/unbalanced-doublequote.rs rename to tests/ui/parser/unbalanced-doublequote.rs diff --git a/src/test/ui/parser/unbalanced-doublequote.stderr b/tests/ui/parser/unbalanced-doublequote.stderr similarity index 100% rename from src/test/ui/parser/unbalanced-doublequote.stderr rename to tests/ui/parser/unbalanced-doublequote.stderr diff --git a/src/test/ui/parser/unclosed-braces.rs b/tests/ui/parser/unclosed-braces.rs similarity index 100% rename from src/test/ui/parser/unclosed-braces.rs rename to tests/ui/parser/unclosed-braces.rs diff --git a/src/test/ui/parser/unclosed-braces.stderr b/tests/ui/parser/unclosed-braces.stderr similarity index 100% rename from src/test/ui/parser/unclosed-braces.stderr rename to tests/ui/parser/unclosed-braces.stderr diff --git a/src/test/ui/parser/unclosed-delimiter-in-dep.rs b/tests/ui/parser/unclosed-delimiter-in-dep.rs similarity index 100% rename from src/test/ui/parser/unclosed-delimiter-in-dep.rs rename to tests/ui/parser/unclosed-delimiter-in-dep.rs diff --git a/src/test/ui/parser/unclosed-delimiter-in-dep.stderr b/tests/ui/parser/unclosed-delimiter-in-dep.stderr similarity index 100% rename from src/test/ui/parser/unclosed-delimiter-in-dep.stderr rename to tests/ui/parser/unclosed-delimiter-in-dep.stderr diff --git a/src/test/ui/parser/unclosed_delim_mod.rs b/tests/ui/parser/unclosed_delim_mod.rs similarity index 100% rename from src/test/ui/parser/unclosed_delim_mod.rs rename to tests/ui/parser/unclosed_delim_mod.rs diff --git a/src/test/ui/parser/unclosed_delim_mod.stderr b/tests/ui/parser/unclosed_delim_mod.stderr similarity index 100% rename from src/test/ui/parser/unclosed_delim_mod.stderr rename to tests/ui/parser/unclosed_delim_mod.stderr diff --git a/src/test/ui/parser/underscore-suffix-for-float.rs b/tests/ui/parser/underscore-suffix-for-float.rs similarity index 100% rename from src/test/ui/parser/underscore-suffix-for-float.rs rename to tests/ui/parser/underscore-suffix-for-float.rs diff --git a/src/test/ui/parser/underscore-suffix-for-float.stderr b/tests/ui/parser/underscore-suffix-for-float.stderr similarity index 100% rename from src/test/ui/parser/underscore-suffix-for-float.stderr rename to tests/ui/parser/underscore-suffix-for-float.stderr diff --git a/src/test/ui/parser/underscore-suffix-for-string.rs b/tests/ui/parser/underscore-suffix-for-string.rs similarity index 100% rename from src/test/ui/parser/underscore-suffix-for-string.rs rename to tests/ui/parser/underscore-suffix-for-string.rs diff --git a/src/test/ui/parser/underscore-suffix-for-string.stderr b/tests/ui/parser/underscore-suffix-for-string.stderr similarity index 100% rename from src/test/ui/parser/underscore-suffix-for-string.stderr rename to tests/ui/parser/underscore-suffix-for-string.stderr diff --git a/src/test/ui/parser/underscore_item_not_const.rs b/tests/ui/parser/underscore_item_not_const.rs similarity index 100% rename from src/test/ui/parser/underscore_item_not_const.rs rename to tests/ui/parser/underscore_item_not_const.rs diff --git a/src/test/ui/parser/underscore_item_not_const.stderr b/tests/ui/parser/underscore_item_not_const.stderr similarity index 100% rename from src/test/ui/parser/underscore_item_not_const.stderr rename to tests/ui/parser/underscore_item_not_const.stderr diff --git a/src/test/ui/parser/unicode-character-literal.fixed b/tests/ui/parser/unicode-character-literal.fixed similarity index 100% rename from src/test/ui/parser/unicode-character-literal.fixed rename to tests/ui/parser/unicode-character-literal.fixed diff --git a/src/test/ui/parser/unicode-character-literal.rs b/tests/ui/parser/unicode-character-literal.rs similarity index 100% rename from src/test/ui/parser/unicode-character-literal.rs rename to tests/ui/parser/unicode-character-literal.rs diff --git a/src/test/ui/parser/unicode-character-literal.stderr b/tests/ui/parser/unicode-character-literal.stderr similarity index 100% rename from src/test/ui/parser/unicode-character-literal.stderr rename to tests/ui/parser/unicode-character-literal.stderr diff --git a/src/test/ui/parser/unicode-chars.rs b/tests/ui/parser/unicode-chars.rs similarity index 100% rename from src/test/ui/parser/unicode-chars.rs rename to tests/ui/parser/unicode-chars.rs diff --git a/src/test/ui/parser/unicode-chars.stderr b/tests/ui/parser/unicode-chars.stderr similarity index 100% rename from src/test/ui/parser/unicode-chars.stderr rename to tests/ui/parser/unicode-chars.stderr diff --git a/src/test/ui/parser/unicode-control-codepoints.rs b/tests/ui/parser/unicode-control-codepoints.rs similarity index 100% rename from src/test/ui/parser/unicode-control-codepoints.rs rename to tests/ui/parser/unicode-control-codepoints.rs diff --git a/src/test/ui/parser/unicode-control-codepoints.stderr b/tests/ui/parser/unicode-control-codepoints.stderr similarity index 100% rename from src/test/ui/parser/unicode-control-codepoints.stderr rename to tests/ui/parser/unicode-control-codepoints.stderr diff --git a/src/test/ui/parser/unicode-quote-chars.rs b/tests/ui/parser/unicode-quote-chars.rs similarity index 100% rename from src/test/ui/parser/unicode-quote-chars.rs rename to tests/ui/parser/unicode-quote-chars.rs diff --git a/src/test/ui/parser/unicode-quote-chars.stderr b/tests/ui/parser/unicode-quote-chars.stderr similarity index 100% rename from src/test/ui/parser/unicode-quote-chars.stderr rename to tests/ui/parser/unicode-quote-chars.stderr diff --git a/src/test/ui/parser/unmatched-delimiter-at-end-of-file.rs b/tests/ui/parser/unmatched-delimiter-at-end-of-file.rs similarity index 100% rename from src/test/ui/parser/unmatched-delimiter-at-end-of-file.rs rename to tests/ui/parser/unmatched-delimiter-at-end-of-file.rs diff --git a/src/test/ui/parser/unmatched-delimiter-at-end-of-file.stderr b/tests/ui/parser/unmatched-delimiter-at-end-of-file.stderr similarity index 100% rename from src/test/ui/parser/unmatched-delimiter-at-end-of-file.stderr rename to tests/ui/parser/unmatched-delimiter-at-end-of-file.stderr diff --git a/src/test/ui/parser/unmatched-langle-1.rs b/tests/ui/parser/unmatched-langle-1.rs similarity index 100% rename from src/test/ui/parser/unmatched-langle-1.rs rename to tests/ui/parser/unmatched-langle-1.rs diff --git a/src/test/ui/parser/unmatched-langle-1.stderr b/tests/ui/parser/unmatched-langle-1.stderr similarity index 100% rename from src/test/ui/parser/unmatched-langle-1.stderr rename to tests/ui/parser/unmatched-langle-1.stderr diff --git a/src/test/ui/parser/unmatched-langle-2.rs b/tests/ui/parser/unmatched-langle-2.rs similarity index 100% rename from src/test/ui/parser/unmatched-langle-2.rs rename to tests/ui/parser/unmatched-langle-2.rs diff --git a/src/test/ui/parser/unmatched-langle-2.stderr b/tests/ui/parser/unmatched-langle-2.stderr similarity index 100% rename from src/test/ui/parser/unmatched-langle-2.stderr rename to tests/ui/parser/unmatched-langle-2.stderr diff --git a/src/test/ui/parser/unnecessary-let.rs b/tests/ui/parser/unnecessary-let.rs similarity index 100% rename from src/test/ui/parser/unnecessary-let.rs rename to tests/ui/parser/unnecessary-let.rs diff --git a/src/test/ui/parser/unnecessary-let.stderr b/tests/ui/parser/unnecessary-let.stderr similarity index 100% rename from src/test/ui/parser/unnecessary-let.stderr rename to tests/ui/parser/unnecessary-let.stderr diff --git a/src/test/ui/parser/unsafe-foreign-mod-2.rs b/tests/ui/parser/unsafe-foreign-mod-2.rs similarity index 100% rename from src/test/ui/parser/unsafe-foreign-mod-2.rs rename to tests/ui/parser/unsafe-foreign-mod-2.rs diff --git a/src/test/ui/parser/unsafe-foreign-mod-2.stderr b/tests/ui/parser/unsafe-foreign-mod-2.stderr similarity index 100% rename from src/test/ui/parser/unsafe-foreign-mod-2.stderr rename to tests/ui/parser/unsafe-foreign-mod-2.stderr diff --git a/src/test/ui/parser/unsafe-foreign-mod.rs b/tests/ui/parser/unsafe-foreign-mod.rs similarity index 100% rename from src/test/ui/parser/unsafe-foreign-mod.rs rename to tests/ui/parser/unsafe-foreign-mod.rs diff --git a/src/test/ui/parser/unsafe-foreign-mod.stderr b/tests/ui/parser/unsafe-foreign-mod.stderr similarity index 100% rename from src/test/ui/parser/unsafe-foreign-mod.stderr rename to tests/ui/parser/unsafe-foreign-mod.stderr diff --git a/src/test/ui/parser/unsafe-mod.rs b/tests/ui/parser/unsafe-mod.rs similarity index 100% rename from src/test/ui/parser/unsafe-mod.rs rename to tests/ui/parser/unsafe-mod.rs diff --git a/src/test/ui/parser/unsafe-mod.stderr b/tests/ui/parser/unsafe-mod.stderr similarity index 100% rename from src/test/ui/parser/unsafe-mod.stderr rename to tests/ui/parser/unsafe-mod.stderr diff --git a/src/test/ui/parser/unsized.rs b/tests/ui/parser/unsized.rs similarity index 100% rename from src/test/ui/parser/unsized.rs rename to tests/ui/parser/unsized.rs diff --git a/src/test/ui/parser/unsized.stderr b/tests/ui/parser/unsized.stderr similarity index 100% rename from src/test/ui/parser/unsized.stderr rename to tests/ui/parser/unsized.stderr diff --git a/src/test/ui/parser/unsized2.rs b/tests/ui/parser/unsized2.rs similarity index 100% rename from src/test/ui/parser/unsized2.rs rename to tests/ui/parser/unsized2.rs diff --git a/src/test/ui/parser/unsized2.stderr b/tests/ui/parser/unsized2.stderr similarity index 100% rename from src/test/ui/parser/unsized2.stderr rename to tests/ui/parser/unsized2.stderr diff --git a/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.rs b/tests/ui/parser/use-as-where-use-ends-with-mod-sep.rs similarity index 100% rename from src/test/ui/parser/use-as-where-use-ends-with-mod-sep.rs rename to tests/ui/parser/use-as-where-use-ends-with-mod-sep.rs diff --git a/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr b/tests/ui/parser/use-as-where-use-ends-with-mod-sep.stderr similarity index 100% rename from src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr rename to tests/ui/parser/use-as-where-use-ends-with-mod-sep.stderr diff --git a/src/test/ui/parser/use-colon-as-mod-sep.rs b/tests/ui/parser/use-colon-as-mod-sep.rs similarity index 100% rename from src/test/ui/parser/use-colon-as-mod-sep.rs rename to tests/ui/parser/use-colon-as-mod-sep.rs diff --git a/src/test/ui/parser/use-colon-as-mod-sep.stderr b/tests/ui/parser/use-colon-as-mod-sep.stderr similarity index 100% rename from src/test/ui/parser/use-colon-as-mod-sep.stderr rename to tests/ui/parser/use-colon-as-mod-sep.stderr diff --git a/src/test/ui/parser/use-ends-with-mod-sep.rs b/tests/ui/parser/use-ends-with-mod-sep.rs similarity index 100% rename from src/test/ui/parser/use-ends-with-mod-sep.rs rename to tests/ui/parser/use-ends-with-mod-sep.rs diff --git a/src/test/ui/parser/use-ends-with-mod-sep.stderr b/tests/ui/parser/use-ends-with-mod-sep.stderr similarity index 100% rename from src/test/ui/parser/use-ends-with-mod-sep.stderr rename to tests/ui/parser/use-ends-with-mod-sep.stderr diff --git a/src/test/ui/parser/use-unclosed-brace.rs b/tests/ui/parser/use-unclosed-brace.rs similarity index 100% rename from src/test/ui/parser/use-unclosed-brace.rs rename to tests/ui/parser/use-unclosed-brace.rs diff --git a/src/test/ui/parser/use-unclosed-brace.stderr b/tests/ui/parser/use-unclosed-brace.stderr similarity index 100% rename from src/test/ui/parser/use-unclosed-brace.stderr rename to tests/ui/parser/use-unclosed-brace.stderr diff --git a/src/test/ui/parser/utf16-be-without-bom.rs b/tests/ui/parser/utf16-be-without-bom.rs similarity index 100% rename from src/test/ui/parser/utf16-be-without-bom.rs rename to tests/ui/parser/utf16-be-without-bom.rs diff --git a/src/test/ui/parser/utf16-be-without-bom.stderr b/tests/ui/parser/utf16-be-without-bom.stderr similarity index 100% rename from src/test/ui/parser/utf16-be-without-bom.stderr rename to tests/ui/parser/utf16-be-without-bom.stderr diff --git a/src/test/ui/parser/utf16-le-without-bom.rs b/tests/ui/parser/utf16-le-without-bom.rs similarity index 100% rename from src/test/ui/parser/utf16-le-without-bom.rs rename to tests/ui/parser/utf16-le-without-bom.rs diff --git a/src/test/ui/parser/utf16-le-without-bom.stderr b/tests/ui/parser/utf16-le-without-bom.stderr similarity index 100% rename from src/test/ui/parser/utf16-le-without-bom.stderr rename to tests/ui/parser/utf16-le-without-bom.stderr diff --git a/src/test/ui/parser/utf8_idents-rpass.rs b/tests/ui/parser/utf8_idents-rpass.rs similarity index 100% rename from src/test/ui/parser/utf8_idents-rpass.rs rename to tests/ui/parser/utf8_idents-rpass.rs diff --git a/src/test/ui/parser/variadic-ffi-nested-syntactic-fail.rs b/tests/ui/parser/variadic-ffi-nested-syntactic-fail.rs similarity index 100% rename from src/test/ui/parser/variadic-ffi-nested-syntactic-fail.rs rename to tests/ui/parser/variadic-ffi-nested-syntactic-fail.rs diff --git a/src/test/ui/parser/variadic-ffi-nested-syntactic-fail.stderr b/tests/ui/parser/variadic-ffi-nested-syntactic-fail.stderr similarity index 100% rename from src/test/ui/parser/variadic-ffi-nested-syntactic-fail.stderr rename to tests/ui/parser/variadic-ffi-nested-syntactic-fail.stderr diff --git a/src/test/ui/parser/variadic-ffi-semantic-restrictions.rs b/tests/ui/parser/variadic-ffi-semantic-restrictions.rs similarity index 100% rename from src/test/ui/parser/variadic-ffi-semantic-restrictions.rs rename to tests/ui/parser/variadic-ffi-semantic-restrictions.rs diff --git a/src/test/ui/parser/variadic-ffi-semantic-restrictions.stderr b/tests/ui/parser/variadic-ffi-semantic-restrictions.stderr similarity index 100% rename from src/test/ui/parser/variadic-ffi-semantic-restrictions.stderr rename to tests/ui/parser/variadic-ffi-semantic-restrictions.stderr diff --git a/src/test/ui/parser/variadic-ffi-syntactic-pass.rs b/tests/ui/parser/variadic-ffi-syntactic-pass.rs similarity index 100% rename from src/test/ui/parser/variadic-ffi-syntactic-pass.rs rename to tests/ui/parser/variadic-ffi-syntactic-pass.rs diff --git a/src/test/ui/parser/virtual-structs.rs b/tests/ui/parser/virtual-structs.rs similarity index 100% rename from src/test/ui/parser/virtual-structs.rs rename to tests/ui/parser/virtual-structs.rs diff --git a/src/test/ui/parser/virtual-structs.stderr b/tests/ui/parser/virtual-structs.stderr similarity index 100% rename from src/test/ui/parser/virtual-structs.stderr rename to tests/ui/parser/virtual-structs.stderr diff --git a/src/test/ui/parser/where-clauses-no-bounds-or-predicates.rs b/tests/ui/parser/where-clauses-no-bounds-or-predicates.rs similarity index 100% rename from src/test/ui/parser/where-clauses-no-bounds-or-predicates.rs rename to tests/ui/parser/where-clauses-no-bounds-or-predicates.rs diff --git a/src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr b/tests/ui/parser/where-clauses-no-bounds-or-predicates.stderr similarity index 100% rename from src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr rename to tests/ui/parser/where-clauses-no-bounds-or-predicates.stderr diff --git a/src/test/ui/parser/where_with_bound.rs b/tests/ui/parser/where_with_bound.rs similarity index 100% rename from src/test/ui/parser/where_with_bound.rs rename to tests/ui/parser/where_with_bound.rs diff --git a/src/test/ui/parser/where_with_bound.stderr b/tests/ui/parser/where_with_bound.stderr similarity index 100% rename from src/test/ui/parser/where_with_bound.stderr rename to tests/ui/parser/where_with_bound.stderr diff --git a/src/test/ui/parser/while-if-let-without-body.rs b/tests/ui/parser/while-if-let-without-body.rs similarity index 100% rename from src/test/ui/parser/while-if-let-without-body.rs rename to tests/ui/parser/while-if-let-without-body.rs diff --git a/src/test/ui/parser/while-if-let-without-body.stderr b/tests/ui/parser/while-if-let-without-body.stderr similarity index 100% rename from src/test/ui/parser/while-if-let-without-body.stderr rename to tests/ui/parser/while-if-let-without-body.stderr diff --git a/src/test/ui/parser/wrong-escape-of-curly-braces.rs b/tests/ui/parser/wrong-escape-of-curly-braces.rs similarity index 100% rename from src/test/ui/parser/wrong-escape-of-curly-braces.rs rename to tests/ui/parser/wrong-escape-of-curly-braces.rs diff --git a/src/test/ui/parser/wrong-escape-of-curly-braces.stderr b/tests/ui/parser/wrong-escape-of-curly-braces.stderr similarity index 100% rename from src/test/ui/parser/wrong-escape-of-curly-braces.stderr rename to tests/ui/parser/wrong-escape-of-curly-braces.stderr diff --git a/src/test/ui/partialeq_help.rs b/tests/ui/partialeq_help.rs similarity index 100% rename from src/test/ui/partialeq_help.rs rename to tests/ui/partialeq_help.rs diff --git a/src/test/ui/partialeq_help.stderr b/tests/ui/partialeq_help.stderr similarity index 100% rename from src/test/ui/partialeq_help.stderr rename to tests/ui/partialeq_help.stderr diff --git a/src/test/ui/path-lookahead.fixed b/tests/ui/path-lookahead.fixed similarity index 100% rename from src/test/ui/path-lookahead.fixed rename to tests/ui/path-lookahead.fixed diff --git a/src/test/ui/path-lookahead.rs b/tests/ui/path-lookahead.rs similarity index 100% rename from src/test/ui/path-lookahead.rs rename to tests/ui/path-lookahead.rs diff --git a/src/test/ui/path-lookahead.stderr b/tests/ui/path-lookahead.stderr similarity index 100% rename from src/test/ui/path-lookahead.stderr rename to tests/ui/path-lookahead.stderr diff --git a/src/test/ui/path.rs b/tests/ui/path.rs similarity index 100% rename from src/test/ui/path.rs rename to tests/ui/path.rs diff --git a/src/test/ui/paths-containing-nul.rs b/tests/ui/paths-containing-nul.rs similarity index 100% rename from src/test/ui/paths-containing-nul.rs rename to tests/ui/paths-containing-nul.rs diff --git a/src/test/ui/pattern/auxiliary/declarations-for-tuple-field-count-errors.rs b/tests/ui/pattern/auxiliary/declarations-for-tuple-field-count-errors.rs similarity index 100% rename from src/test/ui/pattern/auxiliary/declarations-for-tuple-field-count-errors.rs rename to tests/ui/pattern/auxiliary/declarations-for-tuple-field-count-errors.rs diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-copy.rs b/tests/ui/pattern/bindings-after-at/bind-by-copy.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/bind-by-copy.rs rename to tests/ui/pattern/bindings-after-at/bind-by-copy.rs diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.rs b/tests/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.rs rename to tests/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.rs diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr b/tests/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr rename to tests/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.rs b/tests/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.rs rename to tests/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.rs diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.stderr b/tests/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.stderr rename to tests/ui/pattern/bindings-after-at/bind-by-move-no-subbindings-fun-param.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-move-and-move.rs b/tests/ui/pattern/bindings-after-at/borrowck-move-and-move.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-move-and-move.rs rename to tests/ui/pattern/bindings-after-at/borrowck-move-and-move.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-move-and-move.stderr b/tests/ui/pattern/bindings-after-at/borrowck-move-and-move.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-move-and-move.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-move-and-move.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box-pass.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box-pass.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box-pass.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box-pass.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-at-and-box.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-copy-bindings-in-at.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-copy-bindings-in-at.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-copy-bindings-in-at.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-copy-bindings-in-at.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-both-sides.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-both-sides.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-both-sides.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-ref-both-sides.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.rs b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.rs rename to tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.rs diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr rename to tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr diff --git a/src/test/ui/pattern/bindings-after-at/box-patterns.rs b/tests/ui/pattern/bindings-after-at/box-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/box-patterns.rs rename to tests/ui/pattern/bindings-after-at/box-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/copy-and-move-mixed.rs b/tests/ui/pattern/bindings-after-at/copy-and-move-mixed.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/copy-and-move-mixed.rs rename to tests/ui/pattern/bindings-after-at/copy-and-move-mixed.rs diff --git a/src/test/ui/pattern/bindings-after-at/copy-and-move-mixed.stderr b/tests/ui/pattern/bindings-after-at/copy-and-move-mixed.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/copy-and-move-mixed.stderr rename to tests/ui/pattern/bindings-after-at/copy-and-move-mixed.stderr diff --git a/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.rs b/tests/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.rs rename to tests/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.rs diff --git a/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr b/tests/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr rename to tests/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr diff --git a/src/test/ui/pattern/bindings-after-at/nested-binding-mode-lint.rs b/tests/ui/pattern/bindings-after-at/nested-binding-mode-lint.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-binding-mode-lint.rs rename to tests/ui/pattern/bindings-after-at/nested-binding-mode-lint.rs diff --git a/src/test/ui/pattern/bindings-after-at/nested-binding-modes-mut.rs b/tests/ui/pattern/bindings-after-at/nested-binding-modes-mut.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-binding-modes-mut.rs rename to tests/ui/pattern/bindings-after-at/nested-binding-modes-mut.rs diff --git a/src/test/ui/pattern/bindings-after-at/nested-binding-modes-mut.stderr b/tests/ui/pattern/bindings-after-at/nested-binding-modes-mut.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-binding-modes-mut.stderr rename to tests/ui/pattern/bindings-after-at/nested-binding-modes-mut.stderr diff --git a/src/test/ui/pattern/bindings-after-at/nested-binding-modes-ref.rs b/tests/ui/pattern/bindings-after-at/nested-binding-modes-ref.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-binding-modes-ref.rs rename to tests/ui/pattern/bindings-after-at/nested-binding-modes-ref.rs diff --git a/src/test/ui/pattern/bindings-after-at/nested-binding-modes-ref.stderr b/tests/ui/pattern/bindings-after-at/nested-binding-modes-ref.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-binding-modes-ref.stderr rename to tests/ui/pattern/bindings-after-at/nested-binding-modes-ref.stderr diff --git a/src/test/ui/pattern/bindings-after-at/nested-patterns.rs b/tests/ui/pattern/bindings-after-at/nested-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-patterns.rs rename to tests/ui/pattern/bindings-after-at/nested-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.rs b/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.rs rename to tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.rs diff --git a/src/test/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr b/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr rename to tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr diff --git a/src/test/ui/pattern/bindings-after-at/or-patterns-box-patterns.rs b/tests/ui/pattern/bindings-after-at/or-patterns-box-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/or-patterns-box-patterns.rs rename to tests/ui/pattern/bindings-after-at/or-patterns-box-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs b/tests/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs rename to tests/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/or-patterns.rs b/tests/ui/pattern/bindings-after-at/or-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/or-patterns.rs rename to tests/ui/pattern/bindings-after-at/or-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/pat-at-same-name-both.rs b/tests/ui/pattern/bindings-after-at/pat-at-same-name-both.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/pat-at-same-name-both.rs rename to tests/ui/pattern/bindings-after-at/pat-at-same-name-both.rs diff --git a/src/test/ui/pattern/bindings-after-at/pat-at-same-name-both.stderr b/tests/ui/pattern/bindings-after-at/pat-at-same-name-both.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/pat-at-same-name-both.stderr rename to tests/ui/pattern/bindings-after-at/pat-at-same-name-both.stderr diff --git a/src/test/ui/pattern/bindings-after-at/slice-patterns.rs b/tests/ui/pattern/bindings-after-at/slice-patterns.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/slice-patterns.rs rename to tests/ui/pattern/bindings-after-at/slice-patterns.rs diff --git a/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs b/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs similarity index 100% rename from src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs rename to tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs diff --git a/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr b/tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr similarity index 100% rename from src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr rename to tests/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr diff --git a/src/test/ui/pattern/for-loop-bad-item.rs b/tests/ui/pattern/for-loop-bad-item.rs similarity index 100% rename from src/test/ui/pattern/for-loop-bad-item.rs rename to tests/ui/pattern/for-loop-bad-item.rs diff --git a/src/test/ui/pattern/for-loop-bad-item.stderr b/tests/ui/pattern/for-loop-bad-item.stderr similarity index 100% rename from src/test/ui/pattern/for-loop-bad-item.stderr rename to tests/ui/pattern/for-loop-bad-item.stderr diff --git a/src/test/ui/pattern/ignore-all-the-things.rs b/tests/ui/pattern/ignore-all-the-things.rs similarity index 100% rename from src/test/ui/pattern/ignore-all-the-things.rs rename to tests/ui/pattern/ignore-all-the-things.rs diff --git a/src/test/ui/pattern/integer-range-binding.rs b/tests/ui/pattern/integer-range-binding.rs similarity index 100% rename from src/test/ui/pattern/integer-range-binding.rs rename to tests/ui/pattern/integer-range-binding.rs diff --git a/src/test/ui/pattern/issue-10392.rs b/tests/ui/pattern/issue-10392.rs similarity index 100% rename from src/test/ui/pattern/issue-10392.rs rename to tests/ui/pattern/issue-10392.rs diff --git a/src/test/ui/pattern/issue-11577.rs b/tests/ui/pattern/issue-11577.rs similarity index 100% rename from src/test/ui/pattern/issue-11577.rs rename to tests/ui/pattern/issue-11577.rs diff --git a/src/test/ui/pattern/issue-12582.rs b/tests/ui/pattern/issue-12582.rs similarity index 100% rename from src/test/ui/pattern/issue-12582.rs rename to tests/ui/pattern/issue-12582.rs diff --git a/src/test/ui/pattern/issue-14221.rs b/tests/ui/pattern/issue-14221.rs similarity index 100% rename from src/test/ui/pattern/issue-14221.rs rename to tests/ui/pattern/issue-14221.rs diff --git a/src/test/ui/pattern/issue-14221.stderr b/tests/ui/pattern/issue-14221.stderr similarity index 100% rename from src/test/ui/pattern/issue-14221.stderr rename to tests/ui/pattern/issue-14221.stderr diff --git a/src/test/ui/pattern/issue-15080.rs b/tests/ui/pattern/issue-15080.rs similarity index 100% rename from src/test/ui/pattern/issue-15080.rs rename to tests/ui/pattern/issue-15080.rs diff --git a/src/test/ui/pattern/issue-17718-patterns.rs b/tests/ui/pattern/issue-17718-patterns.rs similarity index 100% rename from src/test/ui/pattern/issue-17718-patterns.rs rename to tests/ui/pattern/issue-17718-patterns.rs diff --git a/src/test/ui/pattern/issue-17718-patterns.stderr b/tests/ui/pattern/issue-17718-patterns.stderr similarity index 100% rename from src/test/ui/pattern/issue-17718-patterns.stderr rename to tests/ui/pattern/issue-17718-patterns.stderr diff --git a/src/test/ui/pattern/issue-22546.rs b/tests/ui/pattern/issue-22546.rs similarity index 100% rename from src/test/ui/pattern/issue-22546.rs rename to tests/ui/pattern/issue-22546.rs diff --git a/src/test/ui/pattern/issue-27320.rs b/tests/ui/pattern/issue-27320.rs similarity index 100% rename from src/test/ui/pattern/issue-27320.rs rename to tests/ui/pattern/issue-27320.rs diff --git a/src/test/ui/pattern/issue-52240.rs b/tests/ui/pattern/issue-52240.rs similarity index 100% rename from src/test/ui/pattern/issue-52240.rs rename to tests/ui/pattern/issue-52240.rs diff --git a/src/test/ui/pattern/issue-52240.stderr b/tests/ui/pattern/issue-52240.stderr similarity index 100% rename from src/test/ui/pattern/issue-52240.stderr rename to tests/ui/pattern/issue-52240.stderr diff --git a/src/test/ui/pattern/issue-6449.rs b/tests/ui/pattern/issue-6449.rs similarity index 100% rename from src/test/ui/pattern/issue-6449.rs rename to tests/ui/pattern/issue-6449.rs diff --git a/src/test/ui/pattern/issue-66270-pat-struct-parser-recovery.rs b/tests/ui/pattern/issue-66270-pat-struct-parser-recovery.rs similarity index 100% rename from src/test/ui/pattern/issue-66270-pat-struct-parser-recovery.rs rename to tests/ui/pattern/issue-66270-pat-struct-parser-recovery.rs diff --git a/src/test/ui/pattern/issue-66270-pat-struct-parser-recovery.stderr b/tests/ui/pattern/issue-66270-pat-struct-parser-recovery.stderr similarity index 100% rename from src/test/ui/pattern/issue-66270-pat-struct-parser-recovery.stderr rename to tests/ui/pattern/issue-66270-pat-struct-parser-recovery.stderr diff --git a/src/test/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs b/tests/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs similarity index 100% rename from src/test/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs rename to tests/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.rs diff --git a/src/test/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr b/tests/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr similarity index 100% rename from src/test/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr rename to tests/ui/pattern/issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr diff --git a/src/test/ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs b/tests/ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs similarity index 100% rename from src/test/ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs rename to tests/ui/pattern/issue-67776-match-same-name-enum-variant-refs.rs diff --git a/src/test/ui/pattern/issue-67776-match-same-name-enum-variant-refs.stderr b/tests/ui/pattern/issue-67776-match-same-name-enum-variant-refs.stderr similarity index 100% rename from src/test/ui/pattern/issue-67776-match-same-name-enum-variant-refs.stderr rename to tests/ui/pattern/issue-67776-match-same-name-enum-variant-refs.stderr diff --git a/src/test/ui/pattern/issue-68393-let-pat-assoc-constant.rs b/tests/ui/pattern/issue-68393-let-pat-assoc-constant.rs similarity index 100% rename from src/test/ui/pattern/issue-68393-let-pat-assoc-constant.rs rename to tests/ui/pattern/issue-68393-let-pat-assoc-constant.rs diff --git a/src/test/ui/pattern/issue-68393-let-pat-assoc-constant.stderr b/tests/ui/pattern/issue-68393-let-pat-assoc-constant.stderr similarity index 100% rename from src/test/ui/pattern/issue-68393-let-pat-assoc-constant.stderr rename to tests/ui/pattern/issue-68393-let-pat-assoc-constant.stderr diff --git a/src/test/ui/pattern/issue-72565.rs b/tests/ui/pattern/issue-72565.rs similarity index 100% rename from src/test/ui/pattern/issue-72565.rs rename to tests/ui/pattern/issue-72565.rs diff --git a/src/test/ui/pattern/issue-72565.stderr b/tests/ui/pattern/issue-72565.stderr similarity index 100% rename from src/test/ui/pattern/issue-72565.stderr rename to tests/ui/pattern/issue-72565.stderr diff --git a/src/test/ui/pattern/issue-72574-1.rs b/tests/ui/pattern/issue-72574-1.rs similarity index 100% rename from src/test/ui/pattern/issue-72574-1.rs rename to tests/ui/pattern/issue-72574-1.rs diff --git a/src/test/ui/pattern/issue-72574-1.stderr b/tests/ui/pattern/issue-72574-1.stderr similarity index 100% rename from src/test/ui/pattern/issue-72574-1.stderr rename to tests/ui/pattern/issue-72574-1.stderr diff --git a/src/test/ui/pattern/issue-72574-2.rs b/tests/ui/pattern/issue-72574-2.rs similarity index 100% rename from src/test/ui/pattern/issue-72574-2.rs rename to tests/ui/pattern/issue-72574-2.rs diff --git a/src/test/ui/pattern/issue-72574-2.stderr b/tests/ui/pattern/issue-72574-2.stderr similarity index 100% rename from src/test/ui/pattern/issue-72574-2.stderr rename to tests/ui/pattern/issue-72574-2.stderr diff --git a/src/test/ui/pattern/issue-74539.rs b/tests/ui/pattern/issue-74539.rs similarity index 100% rename from src/test/ui/pattern/issue-74539.rs rename to tests/ui/pattern/issue-74539.rs diff --git a/src/test/ui/pattern/issue-74539.stderr b/tests/ui/pattern/issue-74539.stderr similarity index 100% rename from src/test/ui/pattern/issue-74539.stderr rename to tests/ui/pattern/issue-74539.stderr diff --git a/src/test/ui/pattern/issue-74702.rs b/tests/ui/pattern/issue-74702.rs similarity index 100% rename from src/test/ui/pattern/issue-74702.rs rename to tests/ui/pattern/issue-74702.rs diff --git a/src/test/ui/pattern/issue-74702.stderr b/tests/ui/pattern/issue-74702.stderr similarity index 100% rename from src/test/ui/pattern/issue-74702.stderr rename to tests/ui/pattern/issue-74702.stderr diff --git a/src/test/ui/pattern/issue-74954.rs b/tests/ui/pattern/issue-74954.rs similarity index 100% rename from src/test/ui/pattern/issue-74954.rs rename to tests/ui/pattern/issue-74954.rs diff --git a/src/test/ui/pattern/issue-80186-mut-binding-help-suggestion.rs b/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.rs similarity index 100% rename from src/test/ui/pattern/issue-80186-mut-binding-help-suggestion.rs rename to tests/ui/pattern/issue-80186-mut-binding-help-suggestion.rs diff --git a/src/test/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr b/tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr similarity index 100% rename from src/test/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr rename to tests/ui/pattern/issue-80186-mut-binding-help-suggestion.stderr diff --git a/src/test/ui/pattern/issue-8351-1.rs b/tests/ui/pattern/issue-8351-1.rs similarity index 100% rename from src/test/ui/pattern/issue-8351-1.rs rename to tests/ui/pattern/issue-8351-1.rs diff --git a/src/test/ui/pattern/issue-8351-2.rs b/tests/ui/pattern/issue-8351-2.rs similarity index 100% rename from src/test/ui/pattern/issue-8351-2.rs rename to tests/ui/pattern/issue-8351-2.rs diff --git a/src/test/ui/pattern/issue-88074-pat-range-type-inference-err.rs b/tests/ui/pattern/issue-88074-pat-range-type-inference-err.rs similarity index 100% rename from src/test/ui/pattern/issue-88074-pat-range-type-inference-err.rs rename to tests/ui/pattern/issue-88074-pat-range-type-inference-err.rs diff --git a/src/test/ui/pattern/issue-88074-pat-range-type-inference-err.stderr b/tests/ui/pattern/issue-88074-pat-range-type-inference-err.stderr similarity index 100% rename from src/test/ui/pattern/issue-88074-pat-range-type-inference-err.stderr rename to tests/ui/pattern/issue-88074-pat-range-type-inference-err.stderr diff --git a/src/test/ui/pattern/issue-88074-pat-range-type-inference.rs b/tests/ui/pattern/issue-88074-pat-range-type-inference.rs similarity index 100% rename from src/test/ui/pattern/issue-88074-pat-range-type-inference.rs rename to tests/ui/pattern/issue-88074-pat-range-type-inference.rs diff --git a/src/test/ui/pattern/issue-92074-macro-ice.rs b/tests/ui/pattern/issue-92074-macro-ice.rs similarity index 100% rename from src/test/ui/pattern/issue-92074-macro-ice.rs rename to tests/ui/pattern/issue-92074-macro-ice.rs diff --git a/src/test/ui/pattern/issue-92074-macro-ice.stderr b/tests/ui/pattern/issue-92074-macro-ice.stderr similarity index 100% rename from src/test/ui/pattern/issue-92074-macro-ice.stderr rename to tests/ui/pattern/issue-92074-macro-ice.stderr diff --git a/src/test/ui/pattern/issue-95878.rs b/tests/ui/pattern/issue-95878.rs similarity index 100% rename from src/test/ui/pattern/issue-95878.rs rename to tests/ui/pattern/issue-95878.rs diff --git a/src/test/ui/pattern/issue-95878.stderr b/tests/ui/pattern/issue-95878.stderr similarity index 100% rename from src/test/ui/pattern/issue-95878.stderr rename to tests/ui/pattern/issue-95878.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern-pass.rs b/tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern-pass.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern-pass.rs rename to tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern-pass.rs diff --git a/src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs b/tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs rename to tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs diff --git a/src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr b/tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr rename to tests/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/by-move-sub-pat-unreachable.rs b/tests/ui/pattern/move-ref-patterns/by-move-sub-pat-unreachable.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/by-move-sub-pat-unreachable.rs rename to tests/ui/pattern/move-ref-patterns/by-move-sub-pat-unreachable.rs diff --git a/src/test/ui/pattern/move-ref-patterns/issue-53840.rs b/tests/ui/pattern/move-ref-patterns/issue-53840.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/issue-53840.rs rename to tests/ui/pattern/move-ref-patterns/issue-53840.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.stderr b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.stderr similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.stderr rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-inside.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-pass.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-pass.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-pass.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures-pass.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.stderr b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.stderr similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.stderr rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-closure-captures.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.fixed b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.fixed similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.fixed rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.fixed diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.stderr b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.stderr similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.stderr rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes-fixable.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.rs diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.stderr b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.stderr similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.stderr rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-default-binding-modes.stderr diff --git a/src/test/ui/pattern/move-ref-patterns/move-ref-patterns-dynamic-semantics.rs b/tests/ui/pattern/move-ref-patterns/move-ref-patterns-dynamic-semantics.rs similarity index 100% rename from src/test/ui/pattern/move-ref-patterns/move-ref-patterns-dynamic-semantics.rs rename to tests/ui/pattern/move-ref-patterns/move-ref-patterns-dynamic-semantics.rs diff --git a/src/test/ui/pattern/non-constant-in-const-path.rs b/tests/ui/pattern/non-constant-in-const-path.rs similarity index 100% rename from src/test/ui/pattern/non-constant-in-const-path.rs rename to tests/ui/pattern/non-constant-in-const-path.rs diff --git a/src/test/ui/pattern/non-constant-in-const-path.stderr b/tests/ui/pattern/non-constant-in-const-path.stderr similarity index 100% rename from src/test/ui/pattern/non-constant-in-const-path.stderr rename to tests/ui/pattern/non-constant-in-const-path.stderr diff --git a/src/test/ui/pattern/non-structural-match-types.rs b/tests/ui/pattern/non-structural-match-types.rs similarity index 100% rename from src/test/ui/pattern/non-structural-match-types.rs rename to tests/ui/pattern/non-structural-match-types.rs diff --git a/src/test/ui/pattern/non-structural-match-types.stderr b/tests/ui/pattern/non-structural-match-types.stderr similarity index 100% rename from src/test/ui/pattern/non-structural-match-types.stderr rename to tests/ui/pattern/non-structural-match-types.stderr diff --git a/src/test/ui/pattern/pat-shadow-in-nested-binding.rs b/tests/ui/pattern/pat-shadow-in-nested-binding.rs similarity index 100% rename from src/test/ui/pattern/pat-shadow-in-nested-binding.rs rename to tests/ui/pattern/pat-shadow-in-nested-binding.rs diff --git a/src/test/ui/pattern/pat-shadow-in-nested-binding.stderr b/tests/ui/pattern/pat-shadow-in-nested-binding.stderr similarity index 100% rename from src/test/ui/pattern/pat-shadow-in-nested-binding.stderr rename to tests/ui/pattern/pat-shadow-in-nested-binding.stderr diff --git a/src/test/ui/pattern/pat-struct-field-expr-has-type.rs b/tests/ui/pattern/pat-struct-field-expr-has-type.rs similarity index 100% rename from src/test/ui/pattern/pat-struct-field-expr-has-type.rs rename to tests/ui/pattern/pat-struct-field-expr-has-type.rs diff --git a/src/test/ui/pattern/pat-struct-field-expr-has-type.stderr b/tests/ui/pattern/pat-struct-field-expr-has-type.stderr similarity index 100% rename from src/test/ui/pattern/pat-struct-field-expr-has-type.stderr rename to tests/ui/pattern/pat-struct-field-expr-has-type.stderr diff --git a/src/test/ui/pattern/pat-tuple-bad-type.rs b/tests/ui/pattern/pat-tuple-bad-type.rs similarity index 100% rename from src/test/ui/pattern/pat-tuple-bad-type.rs rename to tests/ui/pattern/pat-tuple-bad-type.rs diff --git a/src/test/ui/pattern/pat-tuple-bad-type.stderr b/tests/ui/pattern/pat-tuple-bad-type.stderr similarity index 100% rename from src/test/ui/pattern/pat-tuple-bad-type.stderr rename to tests/ui/pattern/pat-tuple-bad-type.stderr diff --git a/src/test/ui/pattern/pat-tuple-field-count-cross.rs b/tests/ui/pattern/pat-tuple-field-count-cross.rs similarity index 100% rename from src/test/ui/pattern/pat-tuple-field-count-cross.rs rename to tests/ui/pattern/pat-tuple-field-count-cross.rs diff --git a/src/test/ui/pattern/pat-tuple-field-count-cross.stderr b/tests/ui/pattern/pat-tuple-field-count-cross.stderr similarity index 100% rename from src/test/ui/pattern/pat-tuple-field-count-cross.stderr rename to tests/ui/pattern/pat-tuple-field-count-cross.stderr diff --git a/src/test/ui/pattern/pat-tuple-overfield.rs b/tests/ui/pattern/pat-tuple-overfield.rs similarity index 100% rename from src/test/ui/pattern/pat-tuple-overfield.rs rename to tests/ui/pattern/pat-tuple-overfield.rs diff --git a/src/test/ui/pattern/pat-tuple-overfield.stderr b/tests/ui/pattern/pat-tuple-overfield.stderr similarity index 100% rename from src/test/ui/pattern/pat-tuple-overfield.stderr rename to tests/ui/pattern/pat-tuple-overfield.stderr diff --git a/src/test/ui/pattern/pat-tuple-underfield.rs b/tests/ui/pattern/pat-tuple-underfield.rs similarity index 100% rename from src/test/ui/pattern/pat-tuple-underfield.rs rename to tests/ui/pattern/pat-tuple-underfield.rs diff --git a/src/test/ui/pattern/pat-tuple-underfield.stderr b/tests/ui/pattern/pat-tuple-underfield.stderr similarity index 100% rename from src/test/ui/pattern/pat-tuple-underfield.stderr rename to tests/ui/pattern/pat-tuple-underfield.stderr diff --git a/src/test/ui/pattern/pat-type-err-formal-param.rs b/tests/ui/pattern/pat-type-err-formal-param.rs similarity index 100% rename from src/test/ui/pattern/pat-type-err-formal-param.rs rename to tests/ui/pattern/pat-type-err-formal-param.rs diff --git a/src/test/ui/pattern/pat-type-err-formal-param.stderr b/tests/ui/pattern/pat-type-err-formal-param.stderr similarity index 100% rename from src/test/ui/pattern/pat-type-err-formal-param.stderr rename to tests/ui/pattern/pat-type-err-formal-param.stderr diff --git a/src/test/ui/pattern/pat-type-err-let-stmt.rs b/tests/ui/pattern/pat-type-err-let-stmt.rs similarity index 100% rename from src/test/ui/pattern/pat-type-err-let-stmt.rs rename to tests/ui/pattern/pat-type-err-let-stmt.rs diff --git a/src/test/ui/pattern/pat-type-err-let-stmt.stderr b/tests/ui/pattern/pat-type-err-let-stmt.stderr similarity index 100% rename from src/test/ui/pattern/pat-type-err-let-stmt.stderr rename to tests/ui/pattern/pat-type-err-let-stmt.stderr diff --git a/src/test/ui/pattern/patkind-litrange-no-expr.rs b/tests/ui/pattern/patkind-litrange-no-expr.rs similarity index 100% rename from src/test/ui/pattern/patkind-litrange-no-expr.rs rename to tests/ui/pattern/patkind-litrange-no-expr.rs diff --git a/src/test/ui/pattern/patkind-litrange-no-expr.stderr b/tests/ui/pattern/patkind-litrange-no-expr.stderr similarity index 100% rename from src/test/ui/pattern/patkind-litrange-no-expr.stderr rename to tests/ui/pattern/patkind-litrange-no-expr.stderr diff --git a/src/test/ui/pattern/pattern-binding-disambiguation.rs b/tests/ui/pattern/pattern-binding-disambiguation.rs similarity index 100% rename from src/test/ui/pattern/pattern-binding-disambiguation.rs rename to tests/ui/pattern/pattern-binding-disambiguation.rs diff --git a/src/test/ui/pattern/pattern-binding-disambiguation.stderr b/tests/ui/pattern/pattern-binding-disambiguation.stderr similarity index 100% rename from src/test/ui/pattern/pattern-binding-disambiguation.stderr rename to tests/ui/pattern/pattern-binding-disambiguation.stderr diff --git a/src/test/ui/pattern/pattern-error-continue.rs b/tests/ui/pattern/pattern-error-continue.rs similarity index 100% rename from src/test/ui/pattern/pattern-error-continue.rs rename to tests/ui/pattern/pattern-error-continue.rs diff --git a/src/test/ui/pattern/pattern-error-continue.stderr b/tests/ui/pattern/pattern-error-continue.stderr similarity index 100% rename from src/test/ui/pattern/pattern-error-continue.stderr rename to tests/ui/pattern/pattern-error-continue.stderr diff --git a/src/test/ui/pattern/pattern-ident-path-generics.rs b/tests/ui/pattern/pattern-ident-path-generics.rs similarity index 100% rename from src/test/ui/pattern/pattern-ident-path-generics.rs rename to tests/ui/pattern/pattern-ident-path-generics.rs diff --git a/src/test/ui/pattern/pattern-ident-path-generics.stderr b/tests/ui/pattern/pattern-ident-path-generics.stderr similarity index 100% rename from src/test/ui/pattern/pattern-ident-path-generics.stderr rename to tests/ui/pattern/pattern-ident-path-generics.stderr diff --git a/src/test/ui/pattern/pattern-tyvar-2.rs b/tests/ui/pattern/pattern-tyvar-2.rs similarity index 100% rename from src/test/ui/pattern/pattern-tyvar-2.rs rename to tests/ui/pattern/pattern-tyvar-2.rs diff --git a/src/test/ui/pattern/pattern-tyvar-2.stderr b/tests/ui/pattern/pattern-tyvar-2.stderr similarity index 100% rename from src/test/ui/pattern/pattern-tyvar-2.stderr rename to tests/ui/pattern/pattern-tyvar-2.stderr diff --git a/src/test/ui/pattern/pattern-tyvar.rs b/tests/ui/pattern/pattern-tyvar.rs similarity index 100% rename from src/test/ui/pattern/pattern-tyvar.rs rename to tests/ui/pattern/pattern-tyvar.rs diff --git a/src/test/ui/pattern/pattern-tyvar.stderr b/tests/ui/pattern/pattern-tyvar.stderr similarity index 100% rename from src/test/ui/pattern/pattern-tyvar.stderr rename to tests/ui/pattern/pattern-tyvar.stderr diff --git a/src/test/ui/pattern/rest-pat-semantic-disallowed.rs b/tests/ui/pattern/rest-pat-semantic-disallowed.rs similarity index 100% rename from src/test/ui/pattern/rest-pat-semantic-disallowed.rs rename to tests/ui/pattern/rest-pat-semantic-disallowed.rs diff --git a/src/test/ui/pattern/rest-pat-semantic-disallowed.stderr b/tests/ui/pattern/rest-pat-semantic-disallowed.stderr similarity index 100% rename from src/test/ui/pattern/rest-pat-semantic-disallowed.stderr rename to tests/ui/pattern/rest-pat-semantic-disallowed.stderr diff --git a/src/test/ui/pattern/rest-pat-syntactic.rs b/tests/ui/pattern/rest-pat-syntactic.rs similarity index 100% rename from src/test/ui/pattern/rest-pat-syntactic.rs rename to tests/ui/pattern/rest-pat-syntactic.rs diff --git a/src/test/ui/pattern/rest-pat-syntactic.stderr b/tests/ui/pattern/rest-pat-syntactic.stderr similarity index 100% rename from src/test/ui/pattern/rest-pat-syntactic.stderr rename to tests/ui/pattern/rest-pat-syntactic.stderr diff --git a/src/test/ui/pattern/size-and-align.rs b/tests/ui/pattern/size-and-align.rs similarity index 100% rename from src/test/ui/pattern/size-and-align.rs rename to tests/ui/pattern/size-and-align.rs diff --git a/src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.fixed b/tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.fixed similarity index 100% rename from src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.fixed rename to tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.fixed diff --git a/src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.rs b/tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.rs similarity index 100% rename from src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.rs rename to tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.rs diff --git a/src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.stderr b/tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.stderr similarity index 100% rename from src/test/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.stderr rename to tests/ui/pattern/suggest-adding-appropriate-missing-pattern-excluding-comments.stderr diff --git a/src/test/ui/pattern/usefulness/always-inhabited-union-ref.rs b/tests/ui/pattern/usefulness/always-inhabited-union-ref.rs similarity index 100% rename from src/test/ui/pattern/usefulness/always-inhabited-union-ref.rs rename to tests/ui/pattern/usefulness/always-inhabited-union-ref.rs diff --git a/src/test/ui/pattern/usefulness/always-inhabited-union-ref.stderr b/tests/ui/pattern/usefulness/always-inhabited-union-ref.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/always-inhabited-union-ref.stderr rename to tests/ui/pattern/usefulness/always-inhabited-union-ref.stderr diff --git a/src/test/ui/pattern/usefulness/auxiliary/empty.rs b/tests/ui/pattern/usefulness/auxiliary/empty.rs similarity index 100% rename from src/test/ui/pattern/usefulness/auxiliary/empty.rs rename to tests/ui/pattern/usefulness/auxiliary/empty.rs diff --git a/src/test/ui/pattern/usefulness/auxiliary/hidden.rs b/tests/ui/pattern/usefulness/auxiliary/hidden.rs similarity index 100% rename from src/test/ui/pattern/usefulness/auxiliary/hidden.rs rename to tests/ui/pattern/usefulness/auxiliary/hidden.rs diff --git a/src/test/ui/pattern/usefulness/auxiliary/unstable.rs b/tests/ui/pattern/usefulness/auxiliary/unstable.rs similarity index 100% rename from src/test/ui/pattern/usefulness/auxiliary/unstable.rs rename to tests/ui/pattern/usefulness/auxiliary/unstable.rs diff --git a/src/test/ui/pattern/usefulness/const-partial_eq-fallback-ice.rs b/tests/ui/pattern/usefulness/const-partial_eq-fallback-ice.rs similarity index 100% rename from src/test/ui/pattern/usefulness/const-partial_eq-fallback-ice.rs rename to tests/ui/pattern/usefulness/const-partial_eq-fallback-ice.rs diff --git a/src/test/ui/pattern/usefulness/const-partial_eq-fallback-ice.stderr b/tests/ui/pattern/usefulness/const-partial_eq-fallback-ice.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/const-partial_eq-fallback-ice.stderr rename to tests/ui/pattern/usefulness/const-partial_eq-fallback-ice.stderr diff --git a/src/test/ui/pattern/usefulness/const-pat-ice.rs b/tests/ui/pattern/usefulness/const-pat-ice.rs similarity index 100% rename from src/test/ui/pattern/usefulness/const-pat-ice.rs rename to tests/ui/pattern/usefulness/const-pat-ice.rs diff --git a/src/test/ui/pattern/usefulness/const-private-fields.rs b/tests/ui/pattern/usefulness/const-private-fields.rs similarity index 100% rename from src/test/ui/pattern/usefulness/const-private-fields.rs rename to tests/ui/pattern/usefulness/const-private-fields.rs diff --git a/src/test/ui/pattern/usefulness/consts-opaque.rs b/tests/ui/pattern/usefulness/consts-opaque.rs similarity index 100% rename from src/test/ui/pattern/usefulness/consts-opaque.rs rename to tests/ui/pattern/usefulness/consts-opaque.rs diff --git a/src/test/ui/pattern/usefulness/consts-opaque.stderr b/tests/ui/pattern/usefulness/consts-opaque.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/consts-opaque.stderr rename to tests/ui/pattern/usefulness/consts-opaque.stderr diff --git a/src/test/ui/pattern/usefulness/deny-irrefutable-let-patterns.rs b/tests/ui/pattern/usefulness/deny-irrefutable-let-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/deny-irrefutable-let-patterns.rs rename to tests/ui/pattern/usefulness/deny-irrefutable-let-patterns.rs diff --git a/src/test/ui/pattern/usefulness/deny-irrefutable-let-patterns.stderr b/tests/ui/pattern/usefulness/deny-irrefutable-let-patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/deny-irrefutable-let-patterns.stderr rename to tests/ui/pattern/usefulness/deny-irrefutable-let-patterns.stderr diff --git a/src/test/ui/pattern/usefulness/doc-hidden-fields.rs b/tests/ui/pattern/usefulness/doc-hidden-fields.rs similarity index 100% rename from src/test/ui/pattern/usefulness/doc-hidden-fields.rs rename to tests/ui/pattern/usefulness/doc-hidden-fields.rs diff --git a/src/test/ui/pattern/usefulness/doc-hidden-fields.stderr b/tests/ui/pattern/usefulness/doc-hidden-fields.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/doc-hidden-fields.stderr rename to tests/ui/pattern/usefulness/doc-hidden-fields.stderr diff --git a/src/test/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs b/tests/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs similarity index 100% rename from src/test/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs rename to tests/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs diff --git a/src/test/ui/pattern/usefulness/doc-hidden-non-exhaustive.stderr b/tests/ui/pattern/usefulness/doc-hidden-non-exhaustive.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/doc-hidden-non-exhaustive.stderr rename to tests/ui/pattern/usefulness/doc-hidden-non-exhaustive.stderr diff --git a/src/test/ui/pattern/usefulness/empty-match.exhaustive_patterns.stderr b/tests/ui/pattern/usefulness/empty-match.exhaustive_patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/empty-match.exhaustive_patterns.stderr rename to tests/ui/pattern/usefulness/empty-match.exhaustive_patterns.stderr diff --git a/src/test/ui/pattern/usefulness/empty-match.normal.stderr b/tests/ui/pattern/usefulness/empty-match.normal.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/empty-match.normal.stderr rename to tests/ui/pattern/usefulness/empty-match.normal.stderr diff --git a/src/test/ui/pattern/usefulness/empty-match.rs b/tests/ui/pattern/usefulness/empty-match.rs similarity index 100% rename from src/test/ui/pattern/usefulness/empty-match.rs rename to tests/ui/pattern/usefulness/empty-match.rs diff --git a/src/test/ui/pattern/usefulness/floats.rs b/tests/ui/pattern/usefulness/floats.rs similarity index 100% rename from src/test/ui/pattern/usefulness/floats.rs rename to tests/ui/pattern/usefulness/floats.rs diff --git a/src/test/ui/pattern/usefulness/floats.stderr b/tests/ui/pattern/usefulness/floats.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/floats.stderr rename to tests/ui/pattern/usefulness/floats.stderr diff --git a/src/test/ui/pattern/usefulness/guards.rs b/tests/ui/pattern/usefulness/guards.rs similarity index 100% rename from src/test/ui/pattern/usefulness/guards.rs rename to tests/ui/pattern/usefulness/guards.rs diff --git a/src/test/ui/pattern/usefulness/guards.stderr b/tests/ui/pattern/usefulness/guards.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/guards.stderr rename to tests/ui/pattern/usefulness/guards.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/exhaustiveness.rs b/tests/ui/pattern/usefulness/integer-ranges/exhaustiveness.rs similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/exhaustiveness.rs rename to tests/ui/pattern/usefulness/integer-ranges/exhaustiveness.rs diff --git a/src/test/ui/pattern/usefulness/integer-ranges/exhaustiveness.stderr b/tests/ui/pattern/usefulness/integer-ranges/exhaustiveness.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/exhaustiveness.stderr rename to tests/ui/pattern/usefulness/integer-ranges/exhaustiveness.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs rename to tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.rs diff --git a/src/test/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr rename to tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.allow.stderr b/tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.allow.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.allow.stderr rename to tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.allow.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.deny.stderr b/tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.deny.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.deny.stderr rename to tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.deny.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.rs b/tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.rs similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/pointer-sized-int.rs rename to tests/ui/pattern/usefulness/integer-ranges/pointer-sized-int.rs diff --git a/src/test/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.rs b/tests/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.rs similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.rs rename to tests/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.rs diff --git a/src/test/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.stderr b/tests/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.stderr rename to tests/ui/pattern/usefulness/integer-ranges/precise_pointer_matching-message.stderr diff --git a/src/test/ui/pattern/usefulness/integer-ranges/reachability.rs b/tests/ui/pattern/usefulness/integer-ranges/reachability.rs similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/reachability.rs rename to tests/ui/pattern/usefulness/integer-ranges/reachability.rs diff --git a/src/test/ui/pattern/usefulness/integer-ranges/reachability.stderr b/tests/ui/pattern/usefulness/integer-ranges/reachability.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/integer-ranges/reachability.stderr rename to tests/ui/pattern/usefulness/integer-ranges/reachability.stderr diff --git a/src/test/ui/pattern/usefulness/irrefutable-let-patterns.rs b/tests/ui/pattern/usefulness/irrefutable-let-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/irrefutable-let-patterns.rs rename to tests/ui/pattern/usefulness/irrefutable-let-patterns.rs diff --git a/src/test/ui/pattern/usefulness/irrefutable-unit.rs b/tests/ui/pattern/usefulness/irrefutable-unit.rs similarity index 100% rename from src/test/ui/pattern/usefulness/irrefutable-unit.rs rename to tests/ui/pattern/usefulness/irrefutable-unit.rs diff --git a/src/test/ui/pattern/usefulness/issue-12116.rs b/tests/ui/pattern/usefulness/issue-12116.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-12116.rs rename to tests/ui/pattern/usefulness/issue-12116.rs diff --git a/src/test/ui/pattern/usefulness/issue-12116.stderr b/tests/ui/pattern/usefulness/issue-12116.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-12116.stderr rename to tests/ui/pattern/usefulness/issue-12116.stderr diff --git a/src/test/ui/pattern/usefulness/issue-12369.rs b/tests/ui/pattern/usefulness/issue-12369.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-12369.rs rename to tests/ui/pattern/usefulness/issue-12369.rs diff --git a/src/test/ui/pattern/usefulness/issue-12369.stderr b/tests/ui/pattern/usefulness/issue-12369.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-12369.stderr rename to tests/ui/pattern/usefulness/issue-12369.stderr diff --git a/src/test/ui/pattern/usefulness/issue-13727.rs b/tests/ui/pattern/usefulness/issue-13727.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-13727.rs rename to tests/ui/pattern/usefulness/issue-13727.rs diff --git a/src/test/ui/pattern/usefulness/issue-13727.stderr b/tests/ui/pattern/usefulness/issue-13727.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-13727.stderr rename to tests/ui/pattern/usefulness/issue-13727.stderr diff --git a/src/test/ui/pattern/usefulness/issue-15129.rs b/tests/ui/pattern/usefulness/issue-15129.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-15129.rs rename to tests/ui/pattern/usefulness/issue-15129.rs diff --git a/src/test/ui/pattern/usefulness/issue-15129.stderr b/tests/ui/pattern/usefulness/issue-15129.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-15129.stderr rename to tests/ui/pattern/usefulness/issue-15129.stderr diff --git a/src/test/ui/pattern/usefulness/issue-2111.rs b/tests/ui/pattern/usefulness/issue-2111.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-2111.rs rename to tests/ui/pattern/usefulness/issue-2111.rs diff --git a/src/test/ui/pattern/usefulness/issue-2111.stderr b/tests/ui/pattern/usefulness/issue-2111.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-2111.stderr rename to tests/ui/pattern/usefulness/issue-2111.stderr diff --git a/src/test/ui/pattern/usefulness/issue-30240-b.rs b/tests/ui/pattern/usefulness/issue-30240-b.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-30240-b.rs rename to tests/ui/pattern/usefulness/issue-30240-b.rs diff --git a/src/test/ui/pattern/usefulness/issue-30240-b.stderr b/tests/ui/pattern/usefulness/issue-30240-b.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-30240-b.stderr rename to tests/ui/pattern/usefulness/issue-30240-b.stderr diff --git a/src/test/ui/pattern/usefulness/issue-30240-rpass.rs b/tests/ui/pattern/usefulness/issue-30240-rpass.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-30240-rpass.rs rename to tests/ui/pattern/usefulness/issue-30240-rpass.rs diff --git a/src/test/ui/pattern/usefulness/issue-30240.rs b/tests/ui/pattern/usefulness/issue-30240.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-30240.rs rename to tests/ui/pattern/usefulness/issue-30240.rs diff --git a/src/test/ui/pattern/usefulness/issue-30240.stderr b/tests/ui/pattern/usefulness/issue-30240.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-30240.stderr rename to tests/ui/pattern/usefulness/issue-30240.stderr diff --git a/src/test/ui/pattern/usefulness/issue-3096-1.rs b/tests/ui/pattern/usefulness/issue-3096-1.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3096-1.rs rename to tests/ui/pattern/usefulness/issue-3096-1.rs diff --git a/src/test/ui/pattern/usefulness/issue-3096-1.stderr b/tests/ui/pattern/usefulness/issue-3096-1.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3096-1.stderr rename to tests/ui/pattern/usefulness/issue-3096-1.stderr diff --git a/src/test/ui/pattern/usefulness/issue-3096-2.rs b/tests/ui/pattern/usefulness/issue-3096-2.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3096-2.rs rename to tests/ui/pattern/usefulness/issue-3096-2.rs diff --git a/src/test/ui/pattern/usefulness/issue-3096-2.stderr b/tests/ui/pattern/usefulness/issue-3096-2.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3096-2.stderr rename to tests/ui/pattern/usefulness/issue-3096-2.stderr diff --git a/src/test/ui/pattern/usefulness/issue-31221.rs b/tests/ui/pattern/usefulness/issue-31221.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-31221.rs rename to tests/ui/pattern/usefulness/issue-31221.rs diff --git a/src/test/ui/pattern/usefulness/issue-31221.stderr b/tests/ui/pattern/usefulness/issue-31221.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-31221.stderr rename to tests/ui/pattern/usefulness/issue-31221.stderr diff --git a/src/test/ui/pattern/usefulness/issue-31561.rs b/tests/ui/pattern/usefulness/issue-31561.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-31561.rs rename to tests/ui/pattern/usefulness/issue-31561.rs diff --git a/src/test/ui/pattern/usefulness/issue-31561.stderr b/tests/ui/pattern/usefulness/issue-31561.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-31561.stderr rename to tests/ui/pattern/usefulness/issue-31561.stderr diff --git a/src/test/ui/pattern/usefulness/issue-35609.rs b/tests/ui/pattern/usefulness/issue-35609.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-35609.rs rename to tests/ui/pattern/usefulness/issue-35609.rs diff --git a/src/test/ui/pattern/usefulness/issue-35609.stderr b/tests/ui/pattern/usefulness/issue-35609.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-35609.stderr rename to tests/ui/pattern/usefulness/issue-35609.stderr diff --git a/src/test/ui/pattern/usefulness/issue-3601.rs b/tests/ui/pattern/usefulness/issue-3601.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3601.rs rename to tests/ui/pattern/usefulness/issue-3601.rs diff --git a/src/test/ui/pattern/usefulness/issue-3601.stderr b/tests/ui/pattern/usefulness/issue-3601.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-3601.stderr rename to tests/ui/pattern/usefulness/issue-3601.stderr diff --git a/src/test/ui/pattern/usefulness/issue-39362.rs b/tests/ui/pattern/usefulness/issue-39362.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-39362.rs rename to tests/ui/pattern/usefulness/issue-39362.rs diff --git a/src/test/ui/pattern/usefulness/issue-39362.stderr b/tests/ui/pattern/usefulness/issue-39362.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-39362.stderr rename to tests/ui/pattern/usefulness/issue-39362.stderr diff --git a/src/test/ui/pattern/usefulness/issue-40221.rs b/tests/ui/pattern/usefulness/issue-40221.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-40221.rs rename to tests/ui/pattern/usefulness/issue-40221.rs diff --git a/src/test/ui/pattern/usefulness/issue-40221.stderr b/tests/ui/pattern/usefulness/issue-40221.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-40221.stderr rename to tests/ui/pattern/usefulness/issue-40221.stderr diff --git a/src/test/ui/pattern/usefulness/issue-4321.rs b/tests/ui/pattern/usefulness/issue-4321.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-4321.rs rename to tests/ui/pattern/usefulness/issue-4321.rs diff --git a/src/test/ui/pattern/usefulness/issue-4321.stderr b/tests/ui/pattern/usefulness/issue-4321.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-4321.stderr rename to tests/ui/pattern/usefulness/issue-4321.stderr diff --git a/src/test/ui/pattern/usefulness/issue-50900.rs b/tests/ui/pattern/usefulness/issue-50900.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-50900.rs rename to tests/ui/pattern/usefulness/issue-50900.rs diff --git a/src/test/ui/pattern/usefulness/issue-50900.stderr b/tests/ui/pattern/usefulness/issue-50900.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-50900.stderr rename to tests/ui/pattern/usefulness/issue-50900.stderr diff --git a/src/test/ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs b/tests/ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs rename to tests/ui/pattern/usefulness/issue-53820-slice-pattern-large-array.rs diff --git a/src/test/ui/pattern/usefulness/issue-56379.rs b/tests/ui/pattern/usefulness/issue-56379.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-56379.rs rename to tests/ui/pattern/usefulness/issue-56379.rs diff --git a/src/test/ui/pattern/usefulness/issue-56379.stderr b/tests/ui/pattern/usefulness/issue-56379.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-56379.stderr rename to tests/ui/pattern/usefulness/issue-56379.stderr diff --git a/src/test/ui/pattern/usefulness/issue-57472.rs b/tests/ui/pattern/usefulness/issue-57472.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-57472.rs rename to tests/ui/pattern/usefulness/issue-57472.rs diff --git a/src/test/ui/pattern/usefulness/issue-57472.stderr b/tests/ui/pattern/usefulness/issue-57472.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-57472.stderr rename to tests/ui/pattern/usefulness/issue-57472.stderr diff --git a/src/test/ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs b/tests/ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs rename to tests/ui/pattern/usefulness/issue-65413-constants-and-slices-exhaustiveness.rs diff --git a/src/test/ui/pattern/usefulness/issue-66501.rs b/tests/ui/pattern/usefulness/issue-66501.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-66501.rs rename to tests/ui/pattern/usefulness/issue-66501.rs diff --git a/src/test/ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs b/tests/ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs rename to tests/ui/pattern/usefulness/issue-71930-type-of-match-scrutinee.rs diff --git a/src/test/ui/pattern/usefulness/issue-72377.rs b/tests/ui/pattern/usefulness/issue-72377.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-72377.rs rename to tests/ui/pattern/usefulness/issue-72377.rs diff --git a/src/test/ui/pattern/usefulness/issue-72377.stderr b/tests/ui/pattern/usefulness/issue-72377.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-72377.stderr rename to tests/ui/pattern/usefulness/issue-72377.stderr diff --git a/src/test/ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs b/tests/ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs rename to tests/ui/pattern/usefulness/issue-72476-and-89393-associated-type.rs diff --git a/src/test/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs b/tests/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs rename to tests/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.rs diff --git a/src/test/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.stderr b/tests/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.stderr rename to tests/ui/pattern/usefulness/issue-78123-non-exhaustive-reference.stderr diff --git a/src/test/ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs b/tests/ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs rename to tests/ui/pattern/usefulness/issue-78549-ref-pat-and-str.rs diff --git a/src/test/ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs b/tests/ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs rename to tests/ui/pattern/usefulness/issue-80501-or-pat-and-macro.rs diff --git a/src/test/ui/pattern/usefulness/issue-82772-match-box-as-struct.rs b/tests/ui/pattern/usefulness/issue-82772-match-box-as-struct.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-82772-match-box-as-struct.rs rename to tests/ui/pattern/usefulness/issue-82772-match-box-as-struct.rs diff --git a/src/test/ui/pattern/usefulness/issue-82772-match-box-as-struct.stderr b/tests/ui/pattern/usefulness/issue-82772-match-box-as-struct.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/issue-82772-match-box-as-struct.stderr rename to tests/ui/pattern/usefulness/issue-82772-match-box-as-struct.stderr diff --git a/src/test/ui/pattern/usefulness/issue-88747.rs b/tests/ui/pattern/usefulness/issue-88747.rs similarity index 100% rename from src/test/ui/pattern/usefulness/issue-88747.rs rename to tests/ui/pattern/usefulness/issue-88747.rs diff --git a/src/test/ui/pattern/usefulness/match-arm-statics-2.rs b/tests/ui/pattern/usefulness/match-arm-statics-2.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-arm-statics-2.rs rename to tests/ui/pattern/usefulness/match-arm-statics-2.rs diff --git a/src/test/ui/pattern/usefulness/match-arm-statics-2.stderr b/tests/ui/pattern/usefulness/match-arm-statics-2.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-arm-statics-2.stderr rename to tests/ui/pattern/usefulness/match-arm-statics-2.stderr diff --git a/src/test/ui/pattern/usefulness/match-arm-statics.rs b/tests/ui/pattern/usefulness/match-arm-statics.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-arm-statics.rs rename to tests/ui/pattern/usefulness/match-arm-statics.rs diff --git a/src/test/ui/pattern/usefulness/match-arm-statics.stderr b/tests/ui/pattern/usefulness/match-arm-statics.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-arm-statics.stderr rename to tests/ui/pattern/usefulness/match-arm-statics.stderr diff --git a/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.rs b/tests/ui/pattern/usefulness/match-byte-array-patterns-2.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-byte-array-patterns-2.rs rename to tests/ui/pattern/usefulness/match-byte-array-patterns-2.rs diff --git a/src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr b/tests/ui/pattern/usefulness/match-byte-array-patterns-2.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-byte-array-patterns-2.stderr rename to tests/ui/pattern/usefulness/match-byte-array-patterns-2.stderr diff --git a/src/test/ui/pattern/usefulness/match-byte-array-patterns.rs b/tests/ui/pattern/usefulness/match-byte-array-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-byte-array-patterns.rs rename to tests/ui/pattern/usefulness/match-byte-array-patterns.rs diff --git a/src/test/ui/pattern/usefulness/match-byte-array-patterns.stderr b/tests/ui/pattern/usefulness/match-byte-array-patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-byte-array-patterns.stderr rename to tests/ui/pattern/usefulness/match-byte-array-patterns.stderr diff --git a/src/test/ui/pattern/usefulness/match-non-exhaustive.rs b/tests/ui/pattern/usefulness/match-non-exhaustive.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-non-exhaustive.rs rename to tests/ui/pattern/usefulness/match-non-exhaustive.rs diff --git a/src/test/ui/pattern/usefulness/match-non-exhaustive.stderr b/tests/ui/pattern/usefulness/match-non-exhaustive.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-non-exhaustive.stderr rename to tests/ui/pattern/usefulness/match-non-exhaustive.stderr diff --git a/src/test/ui/pattern/usefulness/match-privately-empty.rs b/tests/ui/pattern/usefulness/match-privately-empty.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-privately-empty.rs rename to tests/ui/pattern/usefulness/match-privately-empty.rs diff --git a/src/test/ui/pattern/usefulness/match-privately-empty.stderr b/tests/ui/pattern/usefulness/match-privately-empty.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-privately-empty.stderr rename to tests/ui/pattern/usefulness/match-privately-empty.stderr diff --git a/src/test/ui/pattern/usefulness/match-ref-ice.rs b/tests/ui/pattern/usefulness/match-ref-ice.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-ref-ice.rs rename to tests/ui/pattern/usefulness/match-ref-ice.rs diff --git a/src/test/ui/pattern/usefulness/match-ref-ice.stderr b/tests/ui/pattern/usefulness/match-ref-ice.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-ref-ice.stderr rename to tests/ui/pattern/usefulness/match-ref-ice.stderr diff --git a/src/test/ui/pattern/usefulness/match-slice-patterns.rs b/tests/ui/pattern/usefulness/match-slice-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-slice-patterns.rs rename to tests/ui/pattern/usefulness/match-slice-patterns.rs diff --git a/src/test/ui/pattern/usefulness/match-slice-patterns.stderr b/tests/ui/pattern/usefulness/match-slice-patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-slice-patterns.stderr rename to tests/ui/pattern/usefulness/match-slice-patterns.stderr diff --git a/src/test/ui/pattern/usefulness/match-vec-fixed.rs b/tests/ui/pattern/usefulness/match-vec-fixed.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-vec-fixed.rs rename to tests/ui/pattern/usefulness/match-vec-fixed.rs diff --git a/src/test/ui/pattern/usefulness/match-vec-fixed.stderr b/tests/ui/pattern/usefulness/match-vec-fixed.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-vec-fixed.stderr rename to tests/ui/pattern/usefulness/match-vec-fixed.stderr diff --git a/src/test/ui/pattern/usefulness/match-vec-unreachable.rs b/tests/ui/pattern/usefulness/match-vec-unreachable.rs similarity index 100% rename from src/test/ui/pattern/usefulness/match-vec-unreachable.rs rename to tests/ui/pattern/usefulness/match-vec-unreachable.rs diff --git a/src/test/ui/pattern/usefulness/match-vec-unreachable.stderr b/tests/ui/pattern/usefulness/match-vec-unreachable.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/match-vec-unreachable.stderr rename to tests/ui/pattern/usefulness/match-vec-unreachable.stderr diff --git a/src/test/ui/pattern/usefulness/nested-exhaustive-match.rs b/tests/ui/pattern/usefulness/nested-exhaustive-match.rs similarity index 100% rename from src/test/ui/pattern/usefulness/nested-exhaustive-match.rs rename to tests/ui/pattern/usefulness/nested-exhaustive-match.rs diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-defined-here.rs b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-defined-here.rs rename to tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-defined-here.stderr b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-defined-here.stderr rename to tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match-nested.rs b/tests/ui/pattern/usefulness/non-exhaustive-match-nested.rs similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-match-nested.rs rename to tests/ui/pattern/usefulness/non-exhaustive-match-nested.rs diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match-nested.stderr b/tests/ui/pattern/usefulness/non-exhaustive-match-nested.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-match-nested.stderr rename to tests/ui/pattern/usefulness/non-exhaustive-match-nested.stderr diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match.rs b/tests/ui/pattern/usefulness/non-exhaustive-match.rs similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-match.rs rename to tests/ui/pattern/usefulness/non-exhaustive-match.rs diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-match.stderr b/tests/ui/pattern/usefulness/non-exhaustive-match.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-match.stderr rename to tests/ui/pattern/usefulness/non-exhaustive-match.stderr diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-pattern-witness.rs b/tests/ui/pattern/usefulness/non-exhaustive-pattern-witness.rs similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-pattern-witness.rs rename to tests/ui/pattern/usefulness/non-exhaustive-pattern-witness.rs diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-pattern-witness.stderr b/tests/ui/pattern/usefulness/non-exhaustive-pattern-witness.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/non-exhaustive-pattern-witness.stderr rename to tests/ui/pattern/usefulness/non-exhaustive-pattern-witness.stderr diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs b/tests/ui/pattern/usefulness/refutable-pattern-errors.rs similarity index 100% rename from src/test/ui/pattern/usefulness/refutable-pattern-errors.rs rename to tests/ui/pattern/usefulness/refutable-pattern-errors.rs diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr b/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr rename to tests/ui/pattern/usefulness/refutable-pattern-errors.stderr diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs similarity index 100% rename from src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs rename to tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr rename to tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const-2.rs b/tests/ui/pattern/usefulness/slice-pattern-const-2.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const-2.rs rename to tests/ui/pattern/usefulness/slice-pattern-const-2.rs diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const-2.stderr b/tests/ui/pattern/usefulness/slice-pattern-const-2.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const-2.stderr rename to tests/ui/pattern/usefulness/slice-pattern-const-2.stderr diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const-3.rs b/tests/ui/pattern/usefulness/slice-pattern-const-3.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const-3.rs rename to tests/ui/pattern/usefulness/slice-pattern-const-3.rs diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const-3.stderr b/tests/ui/pattern/usefulness/slice-pattern-const-3.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const-3.stderr rename to tests/ui/pattern/usefulness/slice-pattern-const-3.stderr diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const.rs b/tests/ui/pattern/usefulness/slice-pattern-const.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const.rs rename to tests/ui/pattern/usefulness/slice-pattern-const.rs diff --git a/src/test/ui/pattern/usefulness/slice-pattern-const.stderr b/tests/ui/pattern/usefulness/slice-pattern-const.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/slice-pattern-const.stderr rename to tests/ui/pattern/usefulness/slice-pattern-const.stderr diff --git a/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs b/tests/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs rename to tests/ui/pattern/usefulness/slice-patterns-exhaustiveness.rs diff --git a/src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr b/tests/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr rename to tests/ui/pattern/usefulness/slice-patterns-exhaustiveness.stderr diff --git a/src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs b/tests/ui/pattern/usefulness/slice-patterns-irrefutable.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-patterns-irrefutable.rs rename to tests/ui/pattern/usefulness/slice-patterns-irrefutable.rs diff --git a/src/test/ui/pattern/usefulness/slice-patterns-reachability.rs b/tests/ui/pattern/usefulness/slice-patterns-reachability.rs similarity index 100% rename from src/test/ui/pattern/usefulness/slice-patterns-reachability.rs rename to tests/ui/pattern/usefulness/slice-patterns-reachability.rs diff --git a/src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr b/tests/ui/pattern/usefulness/slice-patterns-reachability.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/slice-patterns-reachability.stderr rename to tests/ui/pattern/usefulness/slice-patterns-reachability.stderr diff --git a/src/test/ui/pattern/usefulness/stable-gated-fields.rs b/tests/ui/pattern/usefulness/stable-gated-fields.rs similarity index 100% rename from src/test/ui/pattern/usefulness/stable-gated-fields.rs rename to tests/ui/pattern/usefulness/stable-gated-fields.rs diff --git a/src/test/ui/pattern/usefulness/stable-gated-fields.stderr b/tests/ui/pattern/usefulness/stable-gated-fields.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/stable-gated-fields.stderr rename to tests/ui/pattern/usefulness/stable-gated-fields.stderr diff --git a/src/test/ui/pattern/usefulness/stable-gated-patterns.rs b/tests/ui/pattern/usefulness/stable-gated-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/stable-gated-patterns.rs rename to tests/ui/pattern/usefulness/stable-gated-patterns.rs diff --git a/src/test/ui/pattern/usefulness/stable-gated-patterns.stderr b/tests/ui/pattern/usefulness/stable-gated-patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/stable-gated-patterns.stderr rename to tests/ui/pattern/usefulness/stable-gated-patterns.stderr diff --git a/src/test/ui/pattern/usefulness/struct-like-enum-nonexhaustive.rs b/tests/ui/pattern/usefulness/struct-like-enum-nonexhaustive.rs similarity index 100% rename from src/test/ui/pattern/usefulness/struct-like-enum-nonexhaustive.rs rename to tests/ui/pattern/usefulness/struct-like-enum-nonexhaustive.rs diff --git a/src/test/ui/pattern/usefulness/struct-like-enum-nonexhaustive.stderr b/tests/ui/pattern/usefulness/struct-like-enum-nonexhaustive.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/struct-like-enum-nonexhaustive.stderr rename to tests/ui/pattern/usefulness/struct-like-enum-nonexhaustive.stderr diff --git a/src/test/ui/pattern/usefulness/struct-pattern-match-useless.rs b/tests/ui/pattern/usefulness/struct-pattern-match-useless.rs similarity index 100% rename from src/test/ui/pattern/usefulness/struct-pattern-match-useless.rs rename to tests/ui/pattern/usefulness/struct-pattern-match-useless.rs diff --git a/src/test/ui/pattern/usefulness/struct-pattern-match-useless.stderr b/tests/ui/pattern/usefulness/struct-pattern-match-useless.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/struct-pattern-match-useless.stderr rename to tests/ui/pattern/usefulness/struct-pattern-match-useless.stderr diff --git a/src/test/ui/pattern/usefulness/top-level-alternation.rs b/tests/ui/pattern/usefulness/top-level-alternation.rs similarity index 100% rename from src/test/ui/pattern/usefulness/top-level-alternation.rs rename to tests/ui/pattern/usefulness/top-level-alternation.rs diff --git a/src/test/ui/pattern/usefulness/top-level-alternation.stderr b/tests/ui/pattern/usefulness/top-level-alternation.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/top-level-alternation.stderr rename to tests/ui/pattern/usefulness/top-level-alternation.stderr diff --git a/src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.rs b/tests/ui/pattern/usefulness/tuple-struct-nonexhaustive.rs similarity index 100% rename from src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.rs rename to tests/ui/pattern/usefulness/tuple-struct-nonexhaustive.rs diff --git a/src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr b/tests/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr rename to tests/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr diff --git a/src/test/ui/pattern/usefulness/type_polymorphic_byte_str_literals.rs b/tests/ui/pattern/usefulness/type_polymorphic_byte_str_literals.rs similarity index 100% rename from src/test/ui/pattern/usefulness/type_polymorphic_byte_str_literals.rs rename to tests/ui/pattern/usefulness/type_polymorphic_byte_str_literals.rs diff --git a/src/test/ui/pattern/usefulness/type_polymorphic_byte_str_literals.stderr b/tests/ui/pattern/usefulness/type_polymorphic_byte_str_literals.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/type_polymorphic_byte_str_literals.stderr rename to tests/ui/pattern/usefulness/type_polymorphic_byte_str_literals.stderr diff --git a/src/test/ui/pattern/usefulness/uninhabited.rs b/tests/ui/pattern/usefulness/uninhabited.rs similarity index 100% rename from src/test/ui/pattern/usefulness/uninhabited.rs rename to tests/ui/pattern/usefulness/uninhabited.rs diff --git a/src/test/ui/pattern/usefulness/unstable-gated-fields.rs b/tests/ui/pattern/usefulness/unstable-gated-fields.rs similarity index 100% rename from src/test/ui/pattern/usefulness/unstable-gated-fields.rs rename to tests/ui/pattern/usefulness/unstable-gated-fields.rs diff --git a/src/test/ui/pattern/usefulness/unstable-gated-fields.stderr b/tests/ui/pattern/usefulness/unstable-gated-fields.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/unstable-gated-fields.stderr rename to tests/ui/pattern/usefulness/unstable-gated-fields.stderr diff --git a/src/test/ui/pattern/usefulness/unstable-gated-patterns.rs b/tests/ui/pattern/usefulness/unstable-gated-patterns.rs similarity index 100% rename from src/test/ui/pattern/usefulness/unstable-gated-patterns.rs rename to tests/ui/pattern/usefulness/unstable-gated-patterns.rs diff --git a/src/test/ui/pattern/usefulness/unstable-gated-patterns.stderr b/tests/ui/pattern/usefulness/unstable-gated-patterns.stderr similarity index 100% rename from src/test/ui/pattern/usefulness/unstable-gated-patterns.stderr rename to tests/ui/pattern/usefulness/unstable-gated-patterns.stderr diff --git a/src/test/ui/phantom-auto-trait.rs b/tests/ui/phantom-auto-trait.rs similarity index 100% rename from src/test/ui/phantom-auto-trait.rs rename to tests/ui/phantom-auto-trait.rs diff --git a/src/test/ui/phantom-auto-trait.stderr b/tests/ui/phantom-auto-trait.stderr similarity index 100% rename from src/test/ui/phantom-auto-trait.stderr rename to tests/ui/phantom-auto-trait.stderr diff --git a/src/test/ui/pin-macro/cant_access_internals.rs b/tests/ui/pin-macro/cant_access_internals.rs similarity index 100% rename from src/test/ui/pin-macro/cant_access_internals.rs rename to tests/ui/pin-macro/cant_access_internals.rs diff --git a/src/test/ui/pin-macro/cant_access_internals.stderr b/tests/ui/pin-macro/cant_access_internals.stderr similarity index 100% rename from src/test/ui/pin-macro/cant_access_internals.stderr rename to tests/ui/pin-macro/cant_access_internals.stderr diff --git a/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs similarity index 100% rename from src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs rename to tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs diff --git a/src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr similarity index 100% rename from src/test/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr rename to tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr diff --git a/src/test/ui/point-to-type-err-cause-on-impl-trait-return-2.rs b/tests/ui/point-to-type-err-cause-on-impl-trait-return-2.rs similarity index 100% rename from src/test/ui/point-to-type-err-cause-on-impl-trait-return-2.rs rename to tests/ui/point-to-type-err-cause-on-impl-trait-return-2.rs diff --git a/src/test/ui/point-to-type-err-cause-on-impl-trait-return-2.stderr b/tests/ui/point-to-type-err-cause-on-impl-trait-return-2.stderr similarity index 100% rename from src/test/ui/point-to-type-err-cause-on-impl-trait-return-2.stderr rename to tests/ui/point-to-type-err-cause-on-impl-trait-return-2.stderr diff --git a/src/test/ui/polymorphization/closure_in_upvar/fn.rs b/tests/ui/polymorphization/closure_in_upvar/fn.rs similarity index 100% rename from src/test/ui/polymorphization/closure_in_upvar/fn.rs rename to tests/ui/polymorphization/closure_in_upvar/fn.rs diff --git a/src/test/ui/polymorphization/closure_in_upvar/fnmut.rs b/tests/ui/polymorphization/closure_in_upvar/fnmut.rs similarity index 100% rename from src/test/ui/polymorphization/closure_in_upvar/fnmut.rs rename to tests/ui/polymorphization/closure_in_upvar/fnmut.rs diff --git a/src/test/ui/polymorphization/closure_in_upvar/fnonce.rs b/tests/ui/polymorphization/closure_in_upvar/fnonce.rs similarity index 100% rename from src/test/ui/polymorphization/closure_in_upvar/fnonce.rs rename to tests/ui/polymorphization/closure_in_upvar/fnonce.rs diff --git a/src/test/ui/polymorphization/closure_in_upvar/other.rs b/tests/ui/polymorphization/closure_in_upvar/other.rs similarity index 100% rename from src/test/ui/polymorphization/closure_in_upvar/other.rs rename to tests/ui/polymorphization/closure_in_upvar/other.rs diff --git a/src/test/ui/polymorphization/const_parameters/closures.rs b/tests/ui/polymorphization/const_parameters/closures.rs similarity index 100% rename from src/test/ui/polymorphization/const_parameters/closures.rs rename to tests/ui/polymorphization/const_parameters/closures.rs diff --git a/src/test/ui/polymorphization/const_parameters/closures.stderr b/tests/ui/polymorphization/const_parameters/closures.stderr similarity index 100% rename from src/test/ui/polymorphization/const_parameters/closures.stderr rename to tests/ui/polymorphization/const_parameters/closures.stderr diff --git a/src/test/ui/polymorphization/const_parameters/functions.rs b/tests/ui/polymorphization/const_parameters/functions.rs similarity index 100% rename from src/test/ui/polymorphization/const_parameters/functions.rs rename to tests/ui/polymorphization/const_parameters/functions.rs diff --git a/src/test/ui/polymorphization/const_parameters/functions.stderr b/tests/ui/polymorphization/const_parameters/functions.stderr similarity index 100% rename from src/test/ui/polymorphization/const_parameters/functions.stderr rename to tests/ui/polymorphization/const_parameters/functions.stderr diff --git a/src/test/ui/polymorphization/drop_shims/simple.rs b/tests/ui/polymorphization/drop_shims/simple.rs similarity index 100% rename from src/test/ui/polymorphization/drop_shims/simple.rs rename to tests/ui/polymorphization/drop_shims/simple.rs diff --git a/src/test/ui/polymorphization/drop_shims/transitive.rs b/tests/ui/polymorphization/drop_shims/transitive.rs similarity index 100% rename from src/test/ui/polymorphization/drop_shims/transitive.rs rename to tests/ui/polymorphization/drop_shims/transitive.rs diff --git a/src/test/ui/polymorphization/generators.rs b/tests/ui/polymorphization/generators.rs similarity index 100% rename from src/test/ui/polymorphization/generators.rs rename to tests/ui/polymorphization/generators.rs diff --git a/src/test/ui/polymorphization/generators.stderr b/tests/ui/polymorphization/generators.stderr similarity index 100% rename from src/test/ui/polymorphization/generators.stderr rename to tests/ui/polymorphization/generators.stderr diff --git a/src/test/ui/polymorphization/issue-74614.rs b/tests/ui/polymorphization/issue-74614.rs similarity index 100% rename from src/test/ui/polymorphization/issue-74614.rs rename to tests/ui/polymorphization/issue-74614.rs diff --git a/src/test/ui/polymorphization/issue-74636.rs b/tests/ui/polymorphization/issue-74636.rs similarity index 100% rename from src/test/ui/polymorphization/issue-74636.rs rename to tests/ui/polymorphization/issue-74636.rs diff --git a/src/test/ui/polymorphization/lifetimes.rs b/tests/ui/polymorphization/lifetimes.rs similarity index 100% rename from src/test/ui/polymorphization/lifetimes.rs rename to tests/ui/polymorphization/lifetimes.rs diff --git a/src/test/ui/polymorphization/lifetimes.stderr b/tests/ui/polymorphization/lifetimes.stderr similarity index 100% rename from src/test/ui/polymorphization/lifetimes.stderr rename to tests/ui/polymorphization/lifetimes.stderr diff --git a/src/test/ui/polymorphization/normalized_sig_types.rs b/tests/ui/polymorphization/normalized_sig_types.rs similarity index 100% rename from src/test/ui/polymorphization/normalized_sig_types.rs rename to tests/ui/polymorphization/normalized_sig_types.rs diff --git a/src/test/ui/polymorphization/predicates.rs b/tests/ui/polymorphization/predicates.rs similarity index 100% rename from src/test/ui/polymorphization/predicates.rs rename to tests/ui/polymorphization/predicates.rs diff --git a/src/test/ui/polymorphization/predicates.stderr b/tests/ui/polymorphization/predicates.stderr similarity index 100% rename from src/test/ui/polymorphization/predicates.stderr rename to tests/ui/polymorphization/predicates.stderr diff --git a/src/test/ui/polymorphization/promoted-function-1.rs b/tests/ui/polymorphization/promoted-function-1.rs similarity index 100% rename from src/test/ui/polymorphization/promoted-function-1.rs rename to tests/ui/polymorphization/promoted-function-1.rs diff --git a/src/test/ui/polymorphization/promoted-function-1.stderr b/tests/ui/polymorphization/promoted-function-1.stderr similarity index 100% rename from src/test/ui/polymorphization/promoted-function-1.stderr rename to tests/ui/polymorphization/promoted-function-1.stderr diff --git a/src/test/ui/polymorphization/promoted-function-2.rs b/tests/ui/polymorphization/promoted-function-2.rs similarity index 100% rename from src/test/ui/polymorphization/promoted-function-2.rs rename to tests/ui/polymorphization/promoted-function-2.rs diff --git a/src/test/ui/polymorphization/promoted-function-2.stderr b/tests/ui/polymorphization/promoted-function-2.stderr similarity index 100% rename from src/test/ui/polymorphization/promoted-function-2.stderr rename to tests/ui/polymorphization/promoted-function-2.stderr diff --git a/src/test/ui/polymorphization/promoted-function-3.rs b/tests/ui/polymorphization/promoted-function-3.rs similarity index 100% rename from src/test/ui/polymorphization/promoted-function-3.rs rename to tests/ui/polymorphization/promoted-function-3.rs diff --git a/src/test/ui/polymorphization/promoted-function.rs b/tests/ui/polymorphization/promoted-function.rs similarity index 100% rename from src/test/ui/polymorphization/promoted-function.rs rename to tests/ui/polymorphization/promoted-function.rs diff --git a/src/test/ui/polymorphization/symbol-ambiguity.rs b/tests/ui/polymorphization/symbol-ambiguity.rs similarity index 100% rename from src/test/ui/polymorphization/symbol-ambiguity.rs rename to tests/ui/polymorphization/symbol-ambiguity.rs diff --git a/src/test/ui/polymorphization/too-many-generic-params.rs b/tests/ui/polymorphization/too-many-generic-params.rs similarity index 100% rename from src/test/ui/polymorphization/too-many-generic-params.rs rename to tests/ui/polymorphization/too-many-generic-params.rs diff --git a/src/test/ui/polymorphization/type_parameters/closures.rs b/tests/ui/polymorphization/type_parameters/closures.rs similarity index 100% rename from src/test/ui/polymorphization/type_parameters/closures.rs rename to tests/ui/polymorphization/type_parameters/closures.rs diff --git a/src/test/ui/polymorphization/type_parameters/closures.stderr b/tests/ui/polymorphization/type_parameters/closures.stderr similarity index 100% rename from src/test/ui/polymorphization/type_parameters/closures.stderr rename to tests/ui/polymorphization/type_parameters/closures.stderr diff --git a/src/test/ui/polymorphization/type_parameters/functions.rs b/tests/ui/polymorphization/type_parameters/functions.rs similarity index 100% rename from src/test/ui/polymorphization/type_parameters/functions.rs rename to tests/ui/polymorphization/type_parameters/functions.rs diff --git a/src/test/ui/polymorphization/type_parameters/functions.stderr b/tests/ui/polymorphization/type_parameters/functions.stderr similarity index 100% rename from src/test/ui/polymorphization/type_parameters/functions.stderr rename to tests/ui/polymorphization/type_parameters/functions.stderr diff --git a/src/test/ui/polymorphization/unsized_cast.rs b/tests/ui/polymorphization/unsized_cast.rs similarity index 100% rename from src/test/ui/polymorphization/unsized_cast.rs rename to tests/ui/polymorphization/unsized_cast.rs diff --git a/src/test/ui/polymorphization/unsized_cast.stderr b/tests/ui/polymorphization/unsized_cast.stderr similarity index 100% rename from src/test/ui/polymorphization/unsized_cast.stderr rename to tests/ui/polymorphization/unsized_cast.stderr diff --git a/src/test/ui/pptypedef.rs b/tests/ui/pptypedef.rs similarity index 100% rename from src/test/ui/pptypedef.rs rename to tests/ui/pptypedef.rs diff --git a/src/test/ui/pptypedef.stderr b/tests/ui/pptypedef.stderr similarity index 100% rename from src/test/ui/pptypedef.stderr rename to tests/ui/pptypedef.stderr diff --git a/src/test/ui/primitive-binop-lhs-mut.rs b/tests/ui/primitive-binop-lhs-mut.rs similarity index 100% rename from src/test/ui/primitive-binop-lhs-mut.rs rename to tests/ui/primitive-binop-lhs-mut.rs diff --git a/src/test/ui/print-fuel/print-fuel.rs b/tests/ui/print-fuel/print-fuel.rs similarity index 100% rename from src/test/ui/print-fuel/print-fuel.rs rename to tests/ui/print-fuel/print-fuel.rs diff --git a/src/test/ui/print-fuel/print-fuel.stderr b/tests/ui/print-fuel/print-fuel.stderr similarity index 100% rename from src/test/ui/print-fuel/print-fuel.stderr rename to tests/ui/print-fuel/print-fuel.stderr diff --git a/src/test/ui/print-stdout-eprint-stderr.rs b/tests/ui/print-stdout-eprint-stderr.rs similarity index 100% rename from src/test/ui/print-stdout-eprint-stderr.rs rename to tests/ui/print-stdout-eprint-stderr.rs diff --git a/src/test/ui/print_type_sizes/anonymous.rs b/tests/ui/print_type_sizes/anonymous.rs similarity index 100% rename from src/test/ui/print_type_sizes/anonymous.rs rename to tests/ui/print_type_sizes/anonymous.rs diff --git a/src/test/ui/print_type_sizes/async.rs b/tests/ui/print_type_sizes/async.rs similarity index 100% rename from src/test/ui/print_type_sizes/async.rs rename to tests/ui/print_type_sizes/async.rs diff --git a/src/test/ui/print_type_sizes/async.stdout b/tests/ui/print_type_sizes/async.stdout similarity index 100% rename from src/test/ui/print_type_sizes/async.stdout rename to tests/ui/print_type_sizes/async.stdout diff --git a/src/test/ui/print_type_sizes/generator.rs b/tests/ui/print_type_sizes/generator.rs similarity index 100% rename from src/test/ui/print_type_sizes/generator.rs rename to tests/ui/print_type_sizes/generator.rs diff --git a/src/test/ui/print_type_sizes/generator.stdout b/tests/ui/print_type_sizes/generator.stdout similarity index 100% rename from src/test/ui/print_type_sizes/generator.stdout rename to tests/ui/print_type_sizes/generator.stdout diff --git a/src/test/ui/print_type_sizes/generator_discr_placement.rs b/tests/ui/print_type_sizes/generator_discr_placement.rs similarity index 100% rename from src/test/ui/print_type_sizes/generator_discr_placement.rs rename to tests/ui/print_type_sizes/generator_discr_placement.rs diff --git a/src/test/ui/print_type_sizes/generator_discr_placement.stdout b/tests/ui/print_type_sizes/generator_discr_placement.stdout similarity index 100% rename from src/test/ui/print_type_sizes/generator_discr_placement.stdout rename to tests/ui/print_type_sizes/generator_discr_placement.stdout diff --git a/src/test/ui/print_type_sizes/generics.rs b/tests/ui/print_type_sizes/generics.rs similarity index 100% rename from src/test/ui/print_type_sizes/generics.rs rename to tests/ui/print_type_sizes/generics.rs diff --git a/src/test/ui/print_type_sizes/generics.stdout b/tests/ui/print_type_sizes/generics.stdout similarity index 100% rename from src/test/ui/print_type_sizes/generics.stdout rename to tests/ui/print_type_sizes/generics.stdout diff --git a/src/test/ui/print_type_sizes/multiple_types.rs b/tests/ui/print_type_sizes/multiple_types.rs similarity index 100% rename from src/test/ui/print_type_sizes/multiple_types.rs rename to tests/ui/print_type_sizes/multiple_types.rs diff --git a/src/test/ui/print_type_sizes/multiple_types.stdout b/tests/ui/print_type_sizes/multiple_types.stdout similarity index 100% rename from src/test/ui/print_type_sizes/multiple_types.stdout rename to tests/ui/print_type_sizes/multiple_types.stdout diff --git a/src/test/ui/print_type_sizes/niche-filling.rs b/tests/ui/print_type_sizes/niche-filling.rs similarity index 100% rename from src/test/ui/print_type_sizes/niche-filling.rs rename to tests/ui/print_type_sizes/niche-filling.rs diff --git a/src/test/ui/print_type_sizes/niche-filling.stdout b/tests/ui/print_type_sizes/niche-filling.stdout similarity index 100% rename from src/test/ui/print_type_sizes/niche-filling.stdout rename to tests/ui/print_type_sizes/niche-filling.stdout diff --git a/src/test/ui/print_type_sizes/no_duplicates.rs b/tests/ui/print_type_sizes/no_duplicates.rs similarity index 100% rename from src/test/ui/print_type_sizes/no_duplicates.rs rename to tests/ui/print_type_sizes/no_duplicates.rs diff --git a/src/test/ui/print_type_sizes/no_duplicates.stdout b/tests/ui/print_type_sizes/no_duplicates.stdout similarity index 100% rename from src/test/ui/print_type_sizes/no_duplicates.stdout rename to tests/ui/print_type_sizes/no_duplicates.stdout diff --git a/src/test/ui/print_type_sizes/packed.rs b/tests/ui/print_type_sizes/packed.rs similarity index 100% rename from src/test/ui/print_type_sizes/packed.rs rename to tests/ui/print_type_sizes/packed.rs diff --git a/src/test/ui/print_type_sizes/packed.stdout b/tests/ui/print_type_sizes/packed.stdout similarity index 100% rename from src/test/ui/print_type_sizes/packed.stdout rename to tests/ui/print_type_sizes/packed.stdout diff --git a/src/test/ui/print_type_sizes/padding.rs b/tests/ui/print_type_sizes/padding.rs similarity index 100% rename from src/test/ui/print_type_sizes/padding.rs rename to tests/ui/print_type_sizes/padding.rs diff --git a/src/test/ui/print_type_sizes/padding.stdout b/tests/ui/print_type_sizes/padding.stdout similarity index 100% rename from src/test/ui/print_type_sizes/padding.stdout rename to tests/ui/print_type_sizes/padding.stdout diff --git a/src/test/ui/print_type_sizes/repr-align.rs b/tests/ui/print_type_sizes/repr-align.rs similarity index 100% rename from src/test/ui/print_type_sizes/repr-align.rs rename to tests/ui/print_type_sizes/repr-align.rs diff --git a/src/test/ui/print_type_sizes/repr-align.stdout b/tests/ui/print_type_sizes/repr-align.stdout similarity index 100% rename from src/test/ui/print_type_sizes/repr-align.stdout rename to tests/ui/print_type_sizes/repr-align.stdout diff --git a/src/test/ui/print_type_sizes/repr_int_c.rs b/tests/ui/print_type_sizes/repr_int_c.rs similarity index 100% rename from src/test/ui/print_type_sizes/repr_int_c.rs rename to tests/ui/print_type_sizes/repr_int_c.rs diff --git a/src/test/ui/print_type_sizes/repr_int_c.stdout b/tests/ui/print_type_sizes/repr_int_c.stdout similarity index 100% rename from src/test/ui/print_type_sizes/repr_int_c.stdout rename to tests/ui/print_type_sizes/repr_int_c.stdout diff --git a/src/test/ui/print_type_sizes/uninhabited.rs b/tests/ui/print_type_sizes/uninhabited.rs similarity index 100% rename from src/test/ui/print_type_sizes/uninhabited.rs rename to tests/ui/print_type_sizes/uninhabited.rs diff --git a/src/test/ui/print_type_sizes/uninhabited.stdout b/tests/ui/print_type_sizes/uninhabited.stdout similarity index 100% rename from src/test/ui/print_type_sizes/uninhabited.stdout rename to tests/ui/print_type_sizes/uninhabited.stdout diff --git a/src/test/ui/print_type_sizes/variants.rs b/tests/ui/print_type_sizes/variants.rs similarity index 100% rename from src/test/ui/print_type_sizes/variants.rs rename to tests/ui/print_type_sizes/variants.rs diff --git a/src/test/ui/print_type_sizes/variants.stdout b/tests/ui/print_type_sizes/variants.stdout similarity index 100% rename from src/test/ui/print_type_sizes/variants.stdout rename to tests/ui/print_type_sizes/variants.stdout diff --git a/src/test/ui/print_type_sizes/zero-sized-fields.rs b/tests/ui/print_type_sizes/zero-sized-fields.rs similarity index 100% rename from src/test/ui/print_type_sizes/zero-sized-fields.rs rename to tests/ui/print_type_sizes/zero-sized-fields.rs diff --git a/src/test/ui/print_type_sizes/zero-sized-fields.stdout b/tests/ui/print_type_sizes/zero-sized-fields.stdout similarity index 100% rename from src/test/ui/print_type_sizes/zero-sized-fields.stdout rename to tests/ui/print_type_sizes/zero-sized-fields.stdout diff --git a/src/test/ui/privacy/associated-item-privacy-inherent.rs b/tests/ui/privacy/associated-item-privacy-inherent.rs similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-inherent.rs rename to tests/ui/privacy/associated-item-privacy-inherent.rs diff --git a/src/test/ui/privacy/associated-item-privacy-inherent.stderr b/tests/ui/privacy/associated-item-privacy-inherent.stderr similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-inherent.stderr rename to tests/ui/privacy/associated-item-privacy-inherent.stderr diff --git a/src/test/ui/privacy/associated-item-privacy-trait.rs b/tests/ui/privacy/associated-item-privacy-trait.rs similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-trait.rs rename to tests/ui/privacy/associated-item-privacy-trait.rs diff --git a/src/test/ui/privacy/associated-item-privacy-trait.stderr b/tests/ui/privacy/associated-item-privacy-trait.stderr similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-trait.stderr rename to tests/ui/privacy/associated-item-privacy-trait.stderr diff --git a/src/test/ui/privacy/associated-item-privacy-type-binding.rs b/tests/ui/privacy/associated-item-privacy-type-binding.rs similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-type-binding.rs rename to tests/ui/privacy/associated-item-privacy-type-binding.rs diff --git a/src/test/ui/privacy/associated-item-privacy-type-binding.stderr b/tests/ui/privacy/associated-item-privacy-type-binding.stderr similarity index 100% rename from src/test/ui/privacy/associated-item-privacy-type-binding.stderr rename to tests/ui/privacy/associated-item-privacy-type-binding.stderr diff --git a/src/test/ui/privacy/auxiliary/cci_class.rs b/tests/ui/privacy/auxiliary/cci_class.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/cci_class.rs rename to tests/ui/privacy/auxiliary/cci_class.rs diff --git a/src/test/ui/privacy/auxiliary/cci_class_5.rs b/tests/ui/privacy/auxiliary/cci_class_5.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/cci_class_5.rs rename to tests/ui/privacy/auxiliary/cci_class_5.rs diff --git a/src/test/ui/privacy/auxiliary/ctor_aux.rs b/tests/ui/privacy/auxiliary/ctor_aux.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/ctor_aux.rs rename to tests/ui/privacy/auxiliary/ctor_aux.rs diff --git a/src/test/ui/privacy/auxiliary/impl_privacy_xc_2.rs b/tests/ui/privacy/auxiliary/impl_privacy_xc_2.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/impl_privacy_xc_2.rs rename to tests/ui/privacy/auxiliary/impl_privacy_xc_2.rs diff --git a/src/test/ui/privacy/auxiliary/issue-17718-const-privacy.rs b/tests/ui/privacy/auxiliary/issue-17718-const-privacy.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/issue-17718-const-privacy.rs rename to tests/ui/privacy/auxiliary/issue-17718-const-privacy.rs diff --git a/src/test/ui/privacy/auxiliary/issue-57264-1.rs b/tests/ui/privacy/auxiliary/issue-57264-1.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/issue-57264-1.rs rename to tests/ui/privacy/auxiliary/issue-57264-1.rs diff --git a/src/test/ui/privacy/auxiliary/issue-57264-2.rs b/tests/ui/privacy/auxiliary/issue-57264-2.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/issue-57264-2.rs rename to tests/ui/privacy/auxiliary/issue-57264-2.rs diff --git a/src/test/ui/privacy/auxiliary/issue-75907.rs b/tests/ui/privacy/auxiliary/issue-75907.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/issue-75907.rs rename to tests/ui/privacy/auxiliary/issue-75907.rs diff --git a/src/test/ui/privacy/auxiliary/issue-92755.rs b/tests/ui/privacy/auxiliary/issue-92755.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/issue-92755.rs rename to tests/ui/privacy/auxiliary/issue-92755.rs diff --git a/src/test/ui/privacy/auxiliary/priv-impl-prim-ty.rs b/tests/ui/privacy/auxiliary/priv-impl-prim-ty.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/priv-impl-prim-ty.rs rename to tests/ui/privacy/auxiliary/priv-impl-prim-ty.rs diff --git a/src/test/ui/privacy/auxiliary/privacy_reexport.rs b/tests/ui/privacy/auxiliary/privacy_reexport.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/privacy_reexport.rs rename to tests/ui/privacy/auxiliary/privacy_reexport.rs diff --git a/src/test/ui/privacy/auxiliary/privacy_tuple_struct.rs b/tests/ui/privacy/auxiliary/privacy_tuple_struct.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/privacy_tuple_struct.rs rename to tests/ui/privacy/auxiliary/privacy_tuple_struct.rs diff --git a/src/test/ui/privacy/auxiliary/private-inferred-type.rs b/tests/ui/privacy/auxiliary/private-inferred-type.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/private-inferred-type.rs rename to tests/ui/privacy/auxiliary/private-inferred-type.rs diff --git a/src/test/ui/privacy/auxiliary/pub_use_mods_xcrate.rs b/tests/ui/privacy/auxiliary/pub_use_mods_xcrate.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/pub_use_mods_xcrate.rs rename to tests/ui/privacy/auxiliary/pub_use_mods_xcrate.rs diff --git a/src/test/ui/privacy/auxiliary/pub_use_xcrate1.rs b/tests/ui/privacy/auxiliary/pub_use_xcrate1.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/pub_use_xcrate1.rs rename to tests/ui/privacy/auxiliary/pub_use_xcrate1.rs diff --git a/src/test/ui/privacy/auxiliary/pub_use_xcrate2.rs b/tests/ui/privacy/auxiliary/pub_use_xcrate2.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/pub_use_xcrate2.rs rename to tests/ui/privacy/auxiliary/pub_use_xcrate2.rs diff --git a/src/test/ui/privacy/auxiliary/reachable-unnameable-items.rs b/tests/ui/privacy/auxiliary/reachable-unnameable-items.rs similarity index 100% rename from src/test/ui/privacy/auxiliary/reachable-unnameable-items.rs rename to tests/ui/privacy/auxiliary/reachable-unnameable-items.rs diff --git a/src/test/ui/privacy/crate-private-reexport.rs b/tests/ui/privacy/crate-private-reexport.rs similarity index 100% rename from src/test/ui/privacy/crate-private-reexport.rs rename to tests/ui/privacy/crate-private-reexport.rs diff --git a/src/test/ui/privacy/crate-private-reexport.stderr b/tests/ui/privacy/crate-private-reexport.stderr similarity index 100% rename from src/test/ui/privacy/crate-private-reexport.stderr rename to tests/ui/privacy/crate-private-reexport.stderr diff --git a/src/test/ui/privacy/ctor.rs b/tests/ui/privacy/ctor.rs similarity index 100% rename from src/test/ui/privacy/ctor.rs rename to tests/ui/privacy/ctor.rs diff --git a/src/test/ui/privacy/decl-macro.rs b/tests/ui/privacy/decl-macro.rs similarity index 100% rename from src/test/ui/privacy/decl-macro.rs rename to tests/ui/privacy/decl-macro.rs diff --git a/src/test/ui/privacy/decl-macro.stderr b/tests/ui/privacy/decl-macro.stderr similarity index 100% rename from src/test/ui/privacy/decl-macro.stderr rename to tests/ui/privacy/decl-macro.stderr diff --git a/src/test/ui/privacy/effective_visibilities.rs b/tests/ui/privacy/effective_visibilities.rs similarity index 100% rename from src/test/ui/privacy/effective_visibilities.rs rename to tests/ui/privacy/effective_visibilities.rs diff --git a/src/test/ui/privacy/effective_visibilities.stderr b/tests/ui/privacy/effective_visibilities.stderr similarity index 100% rename from src/test/ui/privacy/effective_visibilities.stderr rename to tests/ui/privacy/effective_visibilities.stderr diff --git a/src/test/ui/privacy/effective_visibilities_glob.rs b/tests/ui/privacy/effective_visibilities_glob.rs similarity index 100% rename from src/test/ui/privacy/effective_visibilities_glob.rs rename to tests/ui/privacy/effective_visibilities_glob.rs diff --git a/src/test/ui/privacy/effective_visibilities_glob.stderr b/tests/ui/privacy/effective_visibilities_glob.stderr similarity index 100% rename from src/test/ui/privacy/effective_visibilities_glob.stderr rename to tests/ui/privacy/effective_visibilities_glob.stderr diff --git a/src/test/ui/privacy/effective_visibilities_invariants.rs b/tests/ui/privacy/effective_visibilities_invariants.rs similarity index 100% rename from src/test/ui/privacy/effective_visibilities_invariants.rs rename to tests/ui/privacy/effective_visibilities_invariants.rs diff --git a/src/test/ui/privacy/effective_visibilities_invariants.stderr b/tests/ui/privacy/effective_visibilities_invariants.stderr similarity index 100% rename from src/test/ui/privacy/effective_visibilities_invariants.stderr rename to tests/ui/privacy/effective_visibilities_invariants.stderr diff --git a/src/test/ui/privacy/export-tag-variant.rs b/tests/ui/privacy/export-tag-variant.rs similarity index 100% rename from src/test/ui/privacy/export-tag-variant.rs rename to tests/ui/privacy/export-tag-variant.rs diff --git a/src/test/ui/privacy/export-tag-variant.stderr b/tests/ui/privacy/export-tag-variant.stderr similarity index 100% rename from src/test/ui/privacy/export-tag-variant.stderr rename to tests/ui/privacy/export-tag-variant.stderr diff --git a/src/test/ui/privacy/impl-privacy-xc-2.rs b/tests/ui/privacy/impl-privacy-xc-2.rs similarity index 100% rename from src/test/ui/privacy/impl-privacy-xc-2.rs rename to tests/ui/privacy/impl-privacy-xc-2.rs diff --git a/src/test/ui/privacy/issue-13641.rs b/tests/ui/privacy/issue-13641.rs similarity index 100% rename from src/test/ui/privacy/issue-13641.rs rename to tests/ui/privacy/issue-13641.rs diff --git a/src/test/ui/privacy/issue-13641.stderr b/tests/ui/privacy/issue-13641.stderr similarity index 100% rename from src/test/ui/privacy/issue-13641.stderr rename to tests/ui/privacy/issue-13641.stderr diff --git a/src/test/ui/privacy/issue-17718-const-privacy.rs b/tests/ui/privacy/issue-17718-const-privacy.rs similarity index 100% rename from src/test/ui/privacy/issue-17718-const-privacy.rs rename to tests/ui/privacy/issue-17718-const-privacy.rs diff --git a/src/test/ui/privacy/issue-17718-const-privacy.stderr b/tests/ui/privacy/issue-17718-const-privacy.stderr similarity index 100% rename from src/test/ui/privacy/issue-17718-const-privacy.stderr rename to tests/ui/privacy/issue-17718-const-privacy.stderr diff --git a/src/test/ui/privacy/issue-29161.rs b/tests/ui/privacy/issue-29161.rs similarity index 100% rename from src/test/ui/privacy/issue-29161.rs rename to tests/ui/privacy/issue-29161.rs diff --git a/src/test/ui/privacy/issue-29161.stderr b/tests/ui/privacy/issue-29161.stderr similarity index 100% rename from src/test/ui/privacy/issue-29161.stderr rename to tests/ui/privacy/issue-29161.stderr diff --git a/src/test/ui/privacy/issue-30079.rs b/tests/ui/privacy/issue-30079.rs similarity index 100% rename from src/test/ui/privacy/issue-30079.rs rename to tests/ui/privacy/issue-30079.rs diff --git a/src/test/ui/privacy/issue-30079.stderr b/tests/ui/privacy/issue-30079.stderr similarity index 100% rename from src/test/ui/privacy/issue-30079.stderr rename to tests/ui/privacy/issue-30079.stderr diff --git a/src/test/ui/privacy/issue-46209-private-enum-variant-reexport.rs b/tests/ui/privacy/issue-46209-private-enum-variant-reexport.rs similarity index 100% rename from src/test/ui/privacy/issue-46209-private-enum-variant-reexport.rs rename to tests/ui/privacy/issue-46209-private-enum-variant-reexport.rs diff --git a/src/test/ui/privacy/issue-46209-private-enum-variant-reexport.stderr b/tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr similarity index 100% rename from src/test/ui/privacy/issue-46209-private-enum-variant-reexport.stderr rename to tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr diff --git a/src/test/ui/privacy/issue-57264-1.rs b/tests/ui/privacy/issue-57264-1.rs similarity index 100% rename from src/test/ui/privacy/issue-57264-1.rs rename to tests/ui/privacy/issue-57264-1.rs diff --git a/src/test/ui/privacy/issue-57264-2.rs b/tests/ui/privacy/issue-57264-2.rs similarity index 100% rename from src/test/ui/privacy/issue-57264-2.rs rename to tests/ui/privacy/issue-57264-2.rs diff --git a/src/test/ui/privacy/issue-75062-fieldless-tuple-struct.rs b/tests/ui/privacy/issue-75062-fieldless-tuple-struct.rs similarity index 100% rename from src/test/ui/privacy/issue-75062-fieldless-tuple-struct.rs rename to tests/ui/privacy/issue-75062-fieldless-tuple-struct.rs diff --git a/src/test/ui/privacy/issue-75062-fieldless-tuple-struct.stderr b/tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr similarity index 100% rename from src/test/ui/privacy/issue-75062-fieldless-tuple-struct.stderr rename to tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr diff --git a/src/test/ui/privacy/issue-75906.rs b/tests/ui/privacy/issue-75906.rs similarity index 100% rename from src/test/ui/privacy/issue-75906.rs rename to tests/ui/privacy/issue-75906.rs diff --git a/src/test/ui/privacy/issue-75906.stderr b/tests/ui/privacy/issue-75906.stderr similarity index 100% rename from src/test/ui/privacy/issue-75906.stderr rename to tests/ui/privacy/issue-75906.stderr diff --git a/src/test/ui/privacy/issue-75907.rs b/tests/ui/privacy/issue-75907.rs similarity index 100% rename from src/test/ui/privacy/issue-75907.rs rename to tests/ui/privacy/issue-75907.rs diff --git a/src/test/ui/privacy/issue-75907.stderr b/tests/ui/privacy/issue-75907.stderr similarity index 100% rename from src/test/ui/privacy/issue-75907.stderr rename to tests/ui/privacy/issue-75907.stderr diff --git a/src/test/ui/privacy/issue-75907_b.rs b/tests/ui/privacy/issue-75907_b.rs similarity index 100% rename from src/test/ui/privacy/issue-75907_b.rs rename to tests/ui/privacy/issue-75907_b.rs diff --git a/src/test/ui/privacy/issue-75907_b.stderr b/tests/ui/privacy/issue-75907_b.stderr similarity index 100% rename from src/test/ui/privacy/issue-75907_b.stderr rename to tests/ui/privacy/issue-75907_b.stderr diff --git a/src/test/ui/privacy/issue-79593.rs b/tests/ui/privacy/issue-79593.rs similarity index 100% rename from src/test/ui/privacy/issue-79593.rs rename to tests/ui/privacy/issue-79593.rs diff --git a/src/test/ui/privacy/issue-79593.stderr b/tests/ui/privacy/issue-79593.stderr similarity index 100% rename from src/test/ui/privacy/issue-79593.stderr rename to tests/ui/privacy/issue-79593.stderr diff --git a/src/test/ui/privacy/issue-92755.rs b/tests/ui/privacy/issue-92755.rs similarity index 100% rename from src/test/ui/privacy/issue-92755.rs rename to tests/ui/privacy/issue-92755.rs diff --git a/src/test/ui/privacy/legacy-ctor-visibility.rs b/tests/ui/privacy/legacy-ctor-visibility.rs similarity index 100% rename from src/test/ui/privacy/legacy-ctor-visibility.rs rename to tests/ui/privacy/legacy-ctor-visibility.rs diff --git a/src/test/ui/privacy/legacy-ctor-visibility.stderr b/tests/ui/privacy/legacy-ctor-visibility.stderr similarity index 100% rename from src/test/ui/privacy/legacy-ctor-visibility.stderr rename to tests/ui/privacy/legacy-ctor-visibility.stderr diff --git a/src/test/ui/privacy/macro-private-reexport.rs b/tests/ui/privacy/macro-private-reexport.rs similarity index 100% rename from src/test/ui/privacy/macro-private-reexport.rs rename to tests/ui/privacy/macro-private-reexport.rs diff --git a/src/test/ui/privacy/macro-private-reexport.stderr b/tests/ui/privacy/macro-private-reexport.stderr similarity index 100% rename from src/test/ui/privacy/macro-private-reexport.stderr rename to tests/ui/privacy/macro-private-reexport.stderr diff --git a/src/test/ui/privacy/priv-impl-prim-ty.rs b/tests/ui/privacy/priv-impl-prim-ty.rs similarity index 100% rename from src/test/ui/privacy/priv-impl-prim-ty.rs rename to tests/ui/privacy/priv-impl-prim-ty.rs diff --git a/src/test/ui/privacy/priv-in-bad-locations.rs b/tests/ui/privacy/priv-in-bad-locations.rs similarity index 100% rename from src/test/ui/privacy/priv-in-bad-locations.rs rename to tests/ui/privacy/priv-in-bad-locations.rs diff --git a/src/test/ui/privacy/priv-in-bad-locations.stderr b/tests/ui/privacy/priv-in-bad-locations.stderr similarity index 100% rename from src/test/ui/privacy/priv-in-bad-locations.stderr rename to tests/ui/privacy/priv-in-bad-locations.stderr diff --git a/src/test/ui/privacy/privacy-in-paths.rs b/tests/ui/privacy/privacy-in-paths.rs similarity index 100% rename from src/test/ui/privacy/privacy-in-paths.rs rename to tests/ui/privacy/privacy-in-paths.rs diff --git a/src/test/ui/privacy/privacy-in-paths.stderr b/tests/ui/privacy/privacy-in-paths.stderr similarity index 100% rename from src/test/ui/privacy/privacy-in-paths.stderr rename to tests/ui/privacy/privacy-in-paths.stderr diff --git a/src/test/ui/privacy/privacy-ns.rs b/tests/ui/privacy/privacy-ns.rs similarity index 100% rename from src/test/ui/privacy/privacy-ns.rs rename to tests/ui/privacy/privacy-ns.rs diff --git a/src/test/ui/privacy/privacy-ns1.rs b/tests/ui/privacy/privacy-ns1.rs similarity index 100% rename from src/test/ui/privacy/privacy-ns1.rs rename to tests/ui/privacy/privacy-ns1.rs diff --git a/src/test/ui/privacy/privacy-ns1.stderr b/tests/ui/privacy/privacy-ns1.stderr similarity index 100% rename from src/test/ui/privacy/privacy-ns1.stderr rename to tests/ui/privacy/privacy-ns1.stderr diff --git a/src/test/ui/privacy/privacy-ns2.rs b/tests/ui/privacy/privacy-ns2.rs similarity index 100% rename from src/test/ui/privacy/privacy-ns2.rs rename to tests/ui/privacy/privacy-ns2.rs diff --git a/src/test/ui/privacy/privacy-ns2.stderr b/tests/ui/privacy/privacy-ns2.stderr similarity index 100% rename from src/test/ui/privacy/privacy-ns2.stderr rename to tests/ui/privacy/privacy-ns2.stderr diff --git a/src/test/ui/privacy/privacy-reexport.rs b/tests/ui/privacy/privacy-reexport.rs similarity index 100% rename from src/test/ui/privacy/privacy-reexport.rs rename to tests/ui/privacy/privacy-reexport.rs diff --git a/src/test/ui/privacy/privacy-sanity.rs b/tests/ui/privacy/privacy-sanity.rs similarity index 100% rename from src/test/ui/privacy/privacy-sanity.rs rename to tests/ui/privacy/privacy-sanity.rs diff --git a/src/test/ui/privacy/privacy-sanity.stderr b/tests/ui/privacy/privacy-sanity.stderr similarity index 100% rename from src/test/ui/privacy/privacy-sanity.stderr rename to tests/ui/privacy/privacy-sanity.stderr diff --git a/src/test/ui/privacy/privacy-ufcs.rs b/tests/ui/privacy/privacy-ufcs.rs similarity index 100% rename from src/test/ui/privacy/privacy-ufcs.rs rename to tests/ui/privacy/privacy-ufcs.rs diff --git a/src/test/ui/privacy/privacy-ufcs.stderr b/tests/ui/privacy/privacy-ufcs.stderr similarity index 100% rename from src/test/ui/privacy/privacy-ufcs.stderr rename to tests/ui/privacy/privacy-ufcs.stderr diff --git a/src/test/ui/privacy/privacy1-rpass.rs b/tests/ui/privacy/privacy1-rpass.rs similarity index 100% rename from src/test/ui/privacy/privacy1-rpass.rs rename to tests/ui/privacy/privacy1-rpass.rs diff --git a/src/test/ui/privacy/privacy1.rs b/tests/ui/privacy/privacy1.rs similarity index 100% rename from src/test/ui/privacy/privacy1.rs rename to tests/ui/privacy/privacy1.rs diff --git a/src/test/ui/privacy/privacy1.stderr b/tests/ui/privacy/privacy1.stderr similarity index 100% rename from src/test/ui/privacy/privacy1.stderr rename to tests/ui/privacy/privacy1.stderr diff --git a/src/test/ui/privacy/privacy2.rs b/tests/ui/privacy/privacy2.rs similarity index 100% rename from src/test/ui/privacy/privacy2.rs rename to tests/ui/privacy/privacy2.rs diff --git a/src/test/ui/privacy/privacy2.stderr b/tests/ui/privacy/privacy2.stderr similarity index 100% rename from src/test/ui/privacy/privacy2.stderr rename to tests/ui/privacy/privacy2.stderr diff --git a/src/test/ui/privacy/privacy3.rs b/tests/ui/privacy/privacy3.rs similarity index 100% rename from src/test/ui/privacy/privacy3.rs rename to tests/ui/privacy/privacy3.rs diff --git a/src/test/ui/privacy/privacy3.stderr b/tests/ui/privacy/privacy3.stderr similarity index 100% rename from src/test/ui/privacy/privacy3.stderr rename to tests/ui/privacy/privacy3.stderr diff --git a/src/test/ui/privacy/privacy4.rs b/tests/ui/privacy/privacy4.rs similarity index 100% rename from src/test/ui/privacy/privacy4.rs rename to tests/ui/privacy/privacy4.rs diff --git a/src/test/ui/privacy/privacy4.stderr b/tests/ui/privacy/privacy4.stderr similarity index 100% rename from src/test/ui/privacy/privacy4.stderr rename to tests/ui/privacy/privacy4.stderr diff --git a/src/test/ui/privacy/privacy5.rs b/tests/ui/privacy/privacy5.rs similarity index 100% rename from src/test/ui/privacy/privacy5.rs rename to tests/ui/privacy/privacy5.rs diff --git a/src/test/ui/privacy/privacy5.stderr b/tests/ui/privacy/privacy5.stderr similarity index 100% rename from src/test/ui/privacy/privacy5.stderr rename to tests/ui/privacy/privacy5.stderr diff --git a/src/test/ui/privacy/private-class-field.rs b/tests/ui/privacy/private-class-field.rs similarity index 100% rename from src/test/ui/privacy/private-class-field.rs rename to tests/ui/privacy/private-class-field.rs diff --git a/src/test/ui/privacy/private-field-ty-err.rs b/tests/ui/privacy/private-field-ty-err.rs similarity index 100% rename from src/test/ui/privacy/private-field-ty-err.rs rename to tests/ui/privacy/private-field-ty-err.rs diff --git a/src/test/ui/privacy/private-field-ty-err.stderr b/tests/ui/privacy/private-field-ty-err.stderr similarity index 100% rename from src/test/ui/privacy/private-field-ty-err.stderr rename to tests/ui/privacy/private-field-ty-err.stderr diff --git a/src/test/ui/privacy/private-impl-method.rs b/tests/ui/privacy/private-impl-method.rs similarity index 100% rename from src/test/ui/privacy/private-impl-method.rs rename to tests/ui/privacy/private-impl-method.rs diff --git a/src/test/ui/privacy/private-impl-method.stderr b/tests/ui/privacy/private-impl-method.stderr similarity index 100% rename from src/test/ui/privacy/private-impl-method.stderr rename to tests/ui/privacy/private-impl-method.stderr diff --git a/src/test/ui/privacy/private-in-public-assoc-ty.rs b/tests/ui/privacy/private-in-public-assoc-ty.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-assoc-ty.rs rename to tests/ui/privacy/private-in-public-assoc-ty.rs diff --git a/src/test/ui/privacy/private-in-public-assoc-ty.stderr b/tests/ui/privacy/private-in-public-assoc-ty.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-assoc-ty.stderr rename to tests/ui/privacy/private-in-public-assoc-ty.stderr diff --git a/src/test/ui/privacy/private-in-public-expr-pat.rs b/tests/ui/privacy/private-in-public-expr-pat.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-expr-pat.rs rename to tests/ui/privacy/private-in-public-expr-pat.rs diff --git a/src/test/ui/privacy/private-in-public-ill-formed.rs b/tests/ui/privacy/private-in-public-ill-formed.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-ill-formed.rs rename to tests/ui/privacy/private-in-public-ill-formed.rs diff --git a/src/test/ui/privacy/private-in-public-ill-formed.stderr b/tests/ui/privacy/private-in-public-ill-formed.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-ill-formed.stderr rename to tests/ui/privacy/private-in-public-ill-formed.stderr diff --git a/src/test/ui/privacy/private-in-public-lint.rs b/tests/ui/privacy/private-in-public-lint.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-lint.rs rename to tests/ui/privacy/private-in-public-lint.rs diff --git a/src/test/ui/privacy/private-in-public-lint.stderr b/tests/ui/privacy/private-in-public-lint.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-lint.stderr rename to tests/ui/privacy/private-in-public-lint.stderr diff --git a/src/test/ui/privacy/private-in-public-non-principal-2.rs b/tests/ui/privacy/private-in-public-non-principal-2.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-non-principal-2.rs rename to tests/ui/privacy/private-in-public-non-principal-2.rs diff --git a/src/test/ui/privacy/private-in-public-non-principal-2.stderr b/tests/ui/privacy/private-in-public-non-principal-2.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-non-principal-2.stderr rename to tests/ui/privacy/private-in-public-non-principal-2.stderr diff --git a/src/test/ui/privacy/private-in-public-non-principal.rs b/tests/ui/privacy/private-in-public-non-principal.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-non-principal.rs rename to tests/ui/privacy/private-in-public-non-principal.rs diff --git a/src/test/ui/privacy/private-in-public-non-principal.stderr b/tests/ui/privacy/private-in-public-non-principal.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-non-principal.stderr rename to tests/ui/privacy/private-in-public-non-principal.stderr diff --git a/src/test/ui/privacy/private-in-public-type-alias-impl-trait.rs b/tests/ui/privacy/private-in-public-type-alias-impl-trait.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-type-alias-impl-trait.rs rename to tests/ui/privacy/private-in-public-type-alias-impl-trait.rs diff --git a/src/test/ui/privacy/private-in-public-warn.rs b/tests/ui/privacy/private-in-public-warn.rs similarity index 100% rename from src/test/ui/privacy/private-in-public-warn.rs rename to tests/ui/privacy/private-in-public-warn.rs diff --git a/src/test/ui/privacy/private-in-public-warn.stderr b/tests/ui/privacy/private-in-public-warn.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public-warn.stderr rename to tests/ui/privacy/private-in-public-warn.stderr diff --git a/src/test/ui/privacy/private-in-public.rs b/tests/ui/privacy/private-in-public.rs similarity index 100% rename from src/test/ui/privacy/private-in-public.rs rename to tests/ui/privacy/private-in-public.rs diff --git a/src/test/ui/privacy/private-in-public.stderr b/tests/ui/privacy/private-in-public.stderr similarity index 100% rename from src/test/ui/privacy/private-in-public.stderr rename to tests/ui/privacy/private-in-public.stderr diff --git a/src/test/ui/privacy/private-inferred-type-1.rs b/tests/ui/privacy/private-inferred-type-1.rs similarity index 100% rename from src/test/ui/privacy/private-inferred-type-1.rs rename to tests/ui/privacy/private-inferred-type-1.rs diff --git a/src/test/ui/privacy/private-inferred-type-1.stderr b/tests/ui/privacy/private-inferred-type-1.stderr similarity index 100% rename from src/test/ui/privacy/private-inferred-type-1.stderr rename to tests/ui/privacy/private-inferred-type-1.stderr diff --git a/src/test/ui/privacy/private-inferred-type-2.rs b/tests/ui/privacy/private-inferred-type-2.rs similarity index 100% rename from src/test/ui/privacy/private-inferred-type-2.rs rename to tests/ui/privacy/private-inferred-type-2.rs diff --git a/src/test/ui/privacy/private-inferred-type-2.stderr b/tests/ui/privacy/private-inferred-type-2.stderr similarity index 100% rename from src/test/ui/privacy/private-inferred-type-2.stderr rename to tests/ui/privacy/private-inferred-type-2.stderr diff --git a/src/test/ui/privacy/private-inferred-type-3.rs b/tests/ui/privacy/private-inferred-type-3.rs similarity index 100% rename from src/test/ui/privacy/private-inferred-type-3.rs rename to tests/ui/privacy/private-inferred-type-3.rs diff --git a/src/test/ui/privacy/private-inferred-type-3.stderr b/tests/ui/privacy/private-inferred-type-3.stderr similarity index 100% rename from src/test/ui/privacy/private-inferred-type-3.stderr rename to tests/ui/privacy/private-inferred-type-3.stderr diff --git a/src/test/ui/privacy/private-inferred-type.rs b/tests/ui/privacy/private-inferred-type.rs similarity index 100% rename from src/test/ui/privacy/private-inferred-type.rs rename to tests/ui/privacy/private-inferred-type.rs diff --git a/src/test/ui/privacy/private-inferred-type.stderr b/tests/ui/privacy/private-inferred-type.stderr similarity index 100% rename from src/test/ui/privacy/private-inferred-type.stderr rename to tests/ui/privacy/private-inferred-type.stderr diff --git a/src/test/ui/privacy/private-item-simple.rs b/tests/ui/privacy/private-item-simple.rs similarity index 100% rename from src/test/ui/privacy/private-item-simple.rs rename to tests/ui/privacy/private-item-simple.rs diff --git a/src/test/ui/privacy/private-item-simple.stderr b/tests/ui/privacy/private-item-simple.stderr similarity index 100% rename from src/test/ui/privacy/private-item-simple.stderr rename to tests/ui/privacy/private-item-simple.stderr diff --git a/src/test/ui/privacy/private-method-cross-crate.rs b/tests/ui/privacy/private-method-cross-crate.rs similarity index 100% rename from src/test/ui/privacy/private-method-cross-crate.rs rename to tests/ui/privacy/private-method-cross-crate.rs diff --git a/src/test/ui/privacy/private-method-cross-crate.stderr b/tests/ui/privacy/private-method-cross-crate.stderr similarity index 100% rename from src/test/ui/privacy/private-method-cross-crate.stderr rename to tests/ui/privacy/private-method-cross-crate.stderr diff --git a/src/test/ui/privacy/private-method-inherited.rs b/tests/ui/privacy/private-method-inherited.rs similarity index 100% rename from src/test/ui/privacy/private-method-inherited.rs rename to tests/ui/privacy/private-method-inherited.rs diff --git a/src/test/ui/privacy/private-method-inherited.stderr b/tests/ui/privacy/private-method-inherited.stderr similarity index 100% rename from src/test/ui/privacy/private-method-inherited.stderr rename to tests/ui/privacy/private-method-inherited.stderr diff --git a/src/test/ui/privacy/private-method-rpass.rs b/tests/ui/privacy/private-method-rpass.rs similarity index 100% rename from src/test/ui/privacy/private-method-rpass.rs rename to tests/ui/privacy/private-method-rpass.rs diff --git a/src/test/ui/privacy/private-method.rs b/tests/ui/privacy/private-method.rs similarity index 100% rename from src/test/ui/privacy/private-method.rs rename to tests/ui/privacy/private-method.rs diff --git a/src/test/ui/privacy/private-method.stderr b/tests/ui/privacy/private-method.stderr similarity index 100% rename from src/test/ui/privacy/private-method.stderr rename to tests/ui/privacy/private-method.stderr diff --git a/src/test/ui/privacy/private-struct-field-cross-crate.rs b/tests/ui/privacy/private-struct-field-cross-crate.rs similarity index 100% rename from src/test/ui/privacy/private-struct-field-cross-crate.rs rename to tests/ui/privacy/private-struct-field-cross-crate.rs diff --git a/src/test/ui/privacy/private-struct-field-cross-crate.stderr b/tests/ui/privacy/private-struct-field-cross-crate.stderr similarity index 100% rename from src/test/ui/privacy/private-struct-field-cross-crate.stderr rename to tests/ui/privacy/private-struct-field-cross-crate.stderr diff --git a/src/test/ui/privacy/private-struct-field-ctor.rs b/tests/ui/privacy/private-struct-field-ctor.rs similarity index 100% rename from src/test/ui/privacy/private-struct-field-ctor.rs rename to tests/ui/privacy/private-struct-field-ctor.rs diff --git a/src/test/ui/privacy/private-struct-field-ctor.stderr b/tests/ui/privacy/private-struct-field-ctor.stderr similarity index 100% rename from src/test/ui/privacy/private-struct-field-ctor.stderr rename to tests/ui/privacy/private-struct-field-ctor.stderr diff --git a/src/test/ui/privacy/private-struct-field-pattern.rs b/tests/ui/privacy/private-struct-field-pattern.rs similarity index 100% rename from src/test/ui/privacy/private-struct-field-pattern.rs rename to tests/ui/privacy/private-struct-field-pattern.rs diff --git a/src/test/ui/privacy/private-struct-field-pattern.stderr b/tests/ui/privacy/private-struct-field-pattern.stderr similarity index 100% rename from src/test/ui/privacy/private-struct-field-pattern.stderr rename to tests/ui/privacy/private-struct-field-pattern.stderr diff --git a/src/test/ui/privacy/private-struct-field.rs b/tests/ui/privacy/private-struct-field.rs similarity index 100% rename from src/test/ui/privacy/private-struct-field.rs rename to tests/ui/privacy/private-struct-field.rs diff --git a/src/test/ui/privacy/private-struct-field.stderr b/tests/ui/privacy/private-struct-field.stderr similarity index 100% rename from src/test/ui/privacy/private-struct-field.stderr rename to tests/ui/privacy/private-struct-field.stderr diff --git a/src/test/ui/privacy/private-type-in-interface.rs b/tests/ui/privacy/private-type-in-interface.rs similarity index 100% rename from src/test/ui/privacy/private-type-in-interface.rs rename to tests/ui/privacy/private-type-in-interface.rs diff --git a/src/test/ui/privacy/private-type-in-interface.stderr b/tests/ui/privacy/private-type-in-interface.stderr similarity index 100% rename from src/test/ui/privacy/private-type-in-interface.stderr rename to tests/ui/privacy/private-type-in-interface.stderr diff --git a/src/test/ui/privacy/private-variant-reexport.rs b/tests/ui/privacy/private-variant-reexport.rs similarity index 100% rename from src/test/ui/privacy/private-variant-reexport.rs rename to tests/ui/privacy/private-variant-reexport.rs diff --git a/src/test/ui/privacy/private-variant-reexport.stderr b/tests/ui/privacy/private-variant-reexport.stderr similarity index 100% rename from src/test/ui/privacy/private-variant-reexport.stderr rename to tests/ui/privacy/private-variant-reexport.stderr diff --git a/src/test/ui/privacy/pub-extern-privacy.rs b/tests/ui/privacy/pub-extern-privacy.rs similarity index 100% rename from src/test/ui/privacy/pub-extern-privacy.rs rename to tests/ui/privacy/pub-extern-privacy.rs diff --git a/src/test/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs b/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs similarity index 100% rename from src/test/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs rename to tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs diff --git a/src/test/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs b/tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs similarity index 100% rename from src/test/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs rename to tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs diff --git a/src/test/ui/privacy/pub-priv-dep/pub-priv1.rs b/tests/ui/privacy/pub-priv-dep/pub-priv1.rs similarity index 100% rename from src/test/ui/privacy/pub-priv-dep/pub-priv1.rs rename to tests/ui/privacy/pub-priv-dep/pub-priv1.rs diff --git a/src/test/ui/privacy/pub-priv-dep/pub-priv1.stderr b/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr similarity index 100% rename from src/test/ui/privacy/pub-priv-dep/pub-priv1.stderr rename to tests/ui/privacy/pub-priv-dep/pub-priv1.stderr diff --git a/src/test/ui/privacy/pub-priv-dep/std-pub.rs b/tests/ui/privacy/pub-priv-dep/std-pub.rs similarity index 100% rename from src/test/ui/privacy/pub-priv-dep/std-pub.rs rename to tests/ui/privacy/pub-priv-dep/std-pub.rs diff --git a/src/test/ui/privacy/pub-use-xcrate.rs b/tests/ui/privacy/pub-use-xcrate.rs similarity index 100% rename from src/test/ui/privacy/pub-use-xcrate.rs rename to tests/ui/privacy/pub-use-xcrate.rs diff --git a/src/test/ui/privacy/pub_use_mods_xcrate_exe.rs b/tests/ui/privacy/pub_use_mods_xcrate_exe.rs similarity index 100% rename from src/test/ui/privacy/pub_use_mods_xcrate_exe.rs rename to tests/ui/privacy/pub_use_mods_xcrate_exe.rs diff --git a/src/test/ui/privacy/reachable-unnameable-items.rs b/tests/ui/privacy/reachable-unnameable-items.rs similarity index 100% rename from src/test/ui/privacy/reachable-unnameable-items.rs rename to tests/ui/privacy/reachable-unnameable-items.rs diff --git a/src/test/ui/privacy/restricted/auxiliary/pub_restricted.rs b/tests/ui/privacy/restricted/auxiliary/pub_restricted.rs similarity index 100% rename from src/test/ui/privacy/restricted/auxiliary/pub_restricted.rs rename to tests/ui/privacy/restricted/auxiliary/pub_restricted.rs diff --git a/src/test/ui/privacy/restricted/lookup-ignores-private.rs b/tests/ui/privacy/restricted/lookup-ignores-private.rs similarity index 100% rename from src/test/ui/privacy/restricted/lookup-ignores-private.rs rename to tests/ui/privacy/restricted/lookup-ignores-private.rs diff --git a/src/test/ui/privacy/restricted/private-in-public.rs b/tests/ui/privacy/restricted/private-in-public.rs similarity index 100% rename from src/test/ui/privacy/restricted/private-in-public.rs rename to tests/ui/privacy/restricted/private-in-public.rs diff --git a/src/test/ui/privacy/restricted/private-in-public.stderr b/tests/ui/privacy/restricted/private-in-public.stderr similarity index 100% rename from src/test/ui/privacy/restricted/private-in-public.stderr rename to tests/ui/privacy/restricted/private-in-public.stderr diff --git a/src/test/ui/privacy/restricted/relative-2018.rs b/tests/ui/privacy/restricted/relative-2018.rs similarity index 100% rename from src/test/ui/privacy/restricted/relative-2018.rs rename to tests/ui/privacy/restricted/relative-2018.rs diff --git a/src/test/ui/privacy/restricted/relative-2018.stderr b/tests/ui/privacy/restricted/relative-2018.stderr similarity index 100% rename from src/test/ui/privacy/restricted/relative-2018.stderr rename to tests/ui/privacy/restricted/relative-2018.stderr diff --git a/src/test/ui/privacy/restricted/struct-literal-field.rs b/tests/ui/privacy/restricted/struct-literal-field.rs similarity index 100% rename from src/test/ui/privacy/restricted/struct-literal-field.rs rename to tests/ui/privacy/restricted/struct-literal-field.rs diff --git a/src/test/ui/privacy/restricted/struct-literal-field.stderr b/tests/ui/privacy/restricted/struct-literal-field.stderr similarity index 100% rename from src/test/ui/privacy/restricted/struct-literal-field.stderr rename to tests/ui/privacy/restricted/struct-literal-field.stderr diff --git a/src/test/ui/privacy/restricted/test.rs b/tests/ui/privacy/restricted/test.rs similarity index 100% rename from src/test/ui/privacy/restricted/test.rs rename to tests/ui/privacy/restricted/test.rs diff --git a/src/test/ui/privacy/restricted/test.stderr b/tests/ui/privacy/restricted/test.stderr similarity index 100% rename from src/test/ui/privacy/restricted/test.stderr rename to tests/ui/privacy/restricted/test.stderr diff --git a/src/test/ui/privacy/union-field-privacy-1.rs b/tests/ui/privacy/union-field-privacy-1.rs similarity index 100% rename from src/test/ui/privacy/union-field-privacy-1.rs rename to tests/ui/privacy/union-field-privacy-1.rs diff --git a/src/test/ui/privacy/union-field-privacy-1.stderr b/tests/ui/privacy/union-field-privacy-1.stderr similarity index 100% rename from src/test/ui/privacy/union-field-privacy-1.stderr rename to tests/ui/privacy/union-field-privacy-1.stderr diff --git a/src/test/ui/privacy/union-field-privacy-2.rs b/tests/ui/privacy/union-field-privacy-2.rs similarity index 100% rename from src/test/ui/privacy/union-field-privacy-2.rs rename to tests/ui/privacy/union-field-privacy-2.rs diff --git a/src/test/ui/privacy/union-field-privacy-2.stderr b/tests/ui/privacy/union-field-privacy-2.stderr similarity index 100% rename from src/test/ui/privacy/union-field-privacy-2.stderr rename to tests/ui/privacy/union-field-privacy-2.stderr diff --git a/src/test/ui/privacy/useless-pub.rs b/tests/ui/privacy/useless-pub.rs similarity index 100% rename from src/test/ui/privacy/useless-pub.rs rename to tests/ui/privacy/useless-pub.rs diff --git a/src/test/ui/privacy/useless-pub.stderr b/tests/ui/privacy/useless-pub.stderr similarity index 100% rename from src/test/ui/privacy/useless-pub.stderr rename to tests/ui/privacy/useless-pub.stderr diff --git a/src/test/ui/privacy/where-priv-type.rs b/tests/ui/privacy/where-priv-type.rs similarity index 100% rename from src/test/ui/privacy/where-priv-type.rs rename to tests/ui/privacy/where-priv-type.rs diff --git a/src/test/ui/privacy/where-priv-type.stderr b/tests/ui/privacy/where-priv-type.stderr similarity index 100% rename from src/test/ui/privacy/where-priv-type.stderr rename to tests/ui/privacy/where-priv-type.stderr diff --git a/src/test/ui/privacy/where-pub-type-impls-priv-trait.rs b/tests/ui/privacy/where-pub-type-impls-priv-trait.rs similarity index 100% rename from src/test/ui/privacy/where-pub-type-impls-priv-trait.rs rename to tests/ui/privacy/where-pub-type-impls-priv-trait.rs diff --git a/src/test/ui/privacy/where-pub-type-impls-priv-trait.stderr b/tests/ui/privacy/where-pub-type-impls-priv-trait.stderr similarity index 100% rename from src/test/ui/privacy/where-pub-type-impls-priv-trait.stderr rename to tests/ui/privacy/where-pub-type-impls-priv-trait.stderr diff --git a/src/test/ui/proc-macro/add-impl.rs b/tests/ui/proc-macro/add-impl.rs similarity index 100% rename from src/test/ui/proc-macro/add-impl.rs rename to tests/ui/proc-macro/add-impl.rs diff --git a/src/test/ui/proc-macro/allowed-attr-stmt-expr.rs b/tests/ui/proc-macro/allowed-attr-stmt-expr.rs similarity index 100% rename from src/test/ui/proc-macro/allowed-attr-stmt-expr.rs rename to tests/ui/proc-macro/allowed-attr-stmt-expr.rs diff --git a/src/test/ui/proc-macro/allowed-attr-stmt-expr.stdout b/tests/ui/proc-macro/allowed-attr-stmt-expr.stdout similarity index 100% rename from src/test/ui/proc-macro/allowed-attr-stmt-expr.stdout rename to tests/ui/proc-macro/allowed-attr-stmt-expr.stdout diff --git a/src/test/ui/proc-macro/ambiguous-builtin-attrs-test.rs b/tests/ui/proc-macro/ambiguous-builtin-attrs-test.rs similarity index 100% rename from src/test/ui/proc-macro/ambiguous-builtin-attrs-test.rs rename to tests/ui/proc-macro/ambiguous-builtin-attrs-test.rs diff --git a/src/test/ui/proc-macro/ambiguous-builtin-attrs-test.stderr b/tests/ui/proc-macro/ambiguous-builtin-attrs-test.stderr similarity index 100% rename from src/test/ui/proc-macro/ambiguous-builtin-attrs-test.stderr rename to tests/ui/proc-macro/ambiguous-builtin-attrs-test.stderr diff --git a/src/test/ui/proc-macro/ambiguous-builtin-attrs.rs b/tests/ui/proc-macro/ambiguous-builtin-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/ambiguous-builtin-attrs.rs rename to tests/ui/proc-macro/ambiguous-builtin-attrs.rs diff --git a/src/test/ui/proc-macro/ambiguous-builtin-attrs.stderr b/tests/ui/proc-macro/ambiguous-builtin-attrs.stderr similarity index 100% rename from src/test/ui/proc-macro/ambiguous-builtin-attrs.stderr rename to tests/ui/proc-macro/ambiguous-builtin-attrs.stderr diff --git a/src/test/ui/proc-macro/amputate-span.fixed b/tests/ui/proc-macro/amputate-span.fixed similarity index 100% rename from src/test/ui/proc-macro/amputate-span.fixed rename to tests/ui/proc-macro/amputate-span.fixed diff --git a/src/test/ui/proc-macro/amputate-span.rs b/tests/ui/proc-macro/amputate-span.rs similarity index 100% rename from src/test/ui/proc-macro/amputate-span.rs rename to tests/ui/proc-macro/amputate-span.rs diff --git a/src/test/ui/proc-macro/amputate-span.stderr b/tests/ui/proc-macro/amputate-span.stderr similarity index 100% rename from src/test/ui/proc-macro/amputate-span.stderr rename to tests/ui/proc-macro/amputate-span.stderr diff --git a/src/test/ui/proc-macro/append-impl.rs b/tests/ui/proc-macro/append-impl.rs similarity index 100% rename from src/test/ui/proc-macro/append-impl.rs rename to tests/ui/proc-macro/append-impl.rs diff --git a/src/test/ui/proc-macro/attr-args.rs b/tests/ui/proc-macro/attr-args.rs similarity index 100% rename from src/test/ui/proc-macro/attr-args.rs rename to tests/ui/proc-macro/attr-args.rs diff --git a/src/test/ui/proc-macro/attr-cfg.rs b/tests/ui/proc-macro/attr-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/attr-cfg.rs rename to tests/ui/proc-macro/attr-cfg.rs diff --git a/src/test/ui/proc-macro/attr-complex-fn.rs b/tests/ui/proc-macro/attr-complex-fn.rs similarity index 100% rename from src/test/ui/proc-macro/attr-complex-fn.rs rename to tests/ui/proc-macro/attr-complex-fn.rs diff --git a/src/test/ui/proc-macro/attr-complex-fn.stdout b/tests/ui/proc-macro/attr-complex-fn.stdout similarity index 100% rename from src/test/ui/proc-macro/attr-complex-fn.stdout rename to tests/ui/proc-macro/attr-complex-fn.stdout diff --git a/src/test/ui/proc-macro/attr-invalid-exprs.rs b/tests/ui/proc-macro/attr-invalid-exprs.rs similarity index 100% rename from src/test/ui/proc-macro/attr-invalid-exprs.rs rename to tests/ui/proc-macro/attr-invalid-exprs.rs diff --git a/src/test/ui/proc-macro/attr-invalid-exprs.stderr b/tests/ui/proc-macro/attr-invalid-exprs.stderr similarity index 100% rename from src/test/ui/proc-macro/attr-invalid-exprs.stderr rename to tests/ui/proc-macro/attr-invalid-exprs.stderr diff --git a/src/test/ui/proc-macro/attr-on-trait.rs b/tests/ui/proc-macro/attr-on-trait.rs similarity index 100% rename from src/test/ui/proc-macro/attr-on-trait.rs rename to tests/ui/proc-macro/attr-on-trait.rs diff --git a/src/test/ui/proc-macro/attr-stmt-expr-rpass.rs b/tests/ui/proc-macro/attr-stmt-expr-rpass.rs similarity index 100% rename from src/test/ui/proc-macro/attr-stmt-expr-rpass.rs rename to tests/ui/proc-macro/attr-stmt-expr-rpass.rs diff --git a/src/test/ui/proc-macro/attr-stmt-expr.rs b/tests/ui/proc-macro/attr-stmt-expr.rs similarity index 100% rename from src/test/ui/proc-macro/attr-stmt-expr.rs rename to tests/ui/proc-macro/attr-stmt-expr.rs diff --git a/src/test/ui/proc-macro/attr-stmt-expr.stderr b/tests/ui/proc-macro/attr-stmt-expr.stderr similarity index 100% rename from src/test/ui/proc-macro/attr-stmt-expr.stderr rename to tests/ui/proc-macro/attr-stmt-expr.stderr diff --git a/src/test/ui/proc-macro/attr-stmt-expr.stdout b/tests/ui/proc-macro/attr-stmt-expr.stdout similarity index 100% rename from src/test/ui/proc-macro/attr-stmt-expr.stdout rename to tests/ui/proc-macro/attr-stmt-expr.stdout diff --git a/src/test/ui/proc-macro/attribute-after-derive.rs b/tests/ui/proc-macro/attribute-after-derive.rs similarity index 100% rename from src/test/ui/proc-macro/attribute-after-derive.rs rename to tests/ui/proc-macro/attribute-after-derive.rs diff --git a/src/test/ui/proc-macro/attribute-after-derive.stdout b/tests/ui/proc-macro/attribute-after-derive.stdout similarity index 100% rename from src/test/ui/proc-macro/attribute-after-derive.stdout rename to tests/ui/proc-macro/attribute-after-derive.stdout diff --git a/src/test/ui/proc-macro/attribute-spans-preserved.rs b/tests/ui/proc-macro/attribute-spans-preserved.rs similarity index 100% rename from src/test/ui/proc-macro/attribute-spans-preserved.rs rename to tests/ui/proc-macro/attribute-spans-preserved.rs diff --git a/src/test/ui/proc-macro/attribute-spans-preserved.stderr b/tests/ui/proc-macro/attribute-spans-preserved.stderr similarity index 100% rename from src/test/ui/proc-macro/attribute-spans-preserved.stderr rename to tests/ui/proc-macro/attribute-spans-preserved.stderr diff --git a/src/test/ui/proc-macro/attribute-spans-preserved.stdout b/tests/ui/proc-macro/attribute-spans-preserved.stdout similarity index 100% rename from src/test/ui/proc-macro/attribute-spans-preserved.stdout rename to tests/ui/proc-macro/attribute-spans-preserved.stdout diff --git a/src/test/ui/proc-macro/attribute-with-error.rs b/tests/ui/proc-macro/attribute-with-error.rs similarity index 100% rename from src/test/ui/proc-macro/attribute-with-error.rs rename to tests/ui/proc-macro/attribute-with-error.rs diff --git a/src/test/ui/proc-macro/attribute-with-error.stderr b/tests/ui/proc-macro/attribute-with-error.stderr similarity index 100% rename from src/test/ui/proc-macro/attribute-with-error.stderr rename to tests/ui/proc-macro/attribute-with-error.stderr diff --git a/src/test/ui/proc-macro/attribute.rs b/tests/ui/proc-macro/attribute.rs similarity index 100% rename from src/test/ui/proc-macro/attribute.rs rename to tests/ui/proc-macro/attribute.rs diff --git a/src/test/ui/proc-macro/attribute.stderr b/tests/ui/proc-macro/attribute.stderr similarity index 100% rename from src/test/ui/proc-macro/attribute.stderr rename to tests/ui/proc-macro/attribute.stderr diff --git a/src/test/ui/proc-macro/attributes-included.rs b/tests/ui/proc-macro/attributes-included.rs similarity index 100% rename from src/test/ui/proc-macro/attributes-included.rs rename to tests/ui/proc-macro/attributes-included.rs diff --git a/src/test/ui/proc-macro/attributes-included.stderr b/tests/ui/proc-macro/attributes-included.stderr similarity index 100% rename from src/test/ui/proc-macro/attributes-included.stderr rename to tests/ui/proc-macro/attributes-included.stderr diff --git a/src/test/ui/proc-macro/attributes-on-definitions.rs b/tests/ui/proc-macro/attributes-on-definitions.rs similarity index 100% rename from src/test/ui/proc-macro/attributes-on-definitions.rs rename to tests/ui/proc-macro/attributes-on-definitions.rs diff --git a/src/test/ui/proc-macro/attributes-on-definitions.stderr b/tests/ui/proc-macro/attributes-on-definitions.stderr similarity index 100% rename from src/test/ui/proc-macro/attributes-on-definitions.stderr rename to tests/ui/proc-macro/attributes-on-definitions.stderr diff --git a/src/test/ui/proc-macro/attributes-on-modules-fail.rs b/tests/ui/proc-macro/attributes-on-modules-fail.rs similarity index 100% rename from src/test/ui/proc-macro/attributes-on-modules-fail.rs rename to tests/ui/proc-macro/attributes-on-modules-fail.rs diff --git a/src/test/ui/proc-macro/attributes-on-modules-fail.stderr b/tests/ui/proc-macro/attributes-on-modules-fail.stderr similarity index 100% rename from src/test/ui/proc-macro/attributes-on-modules-fail.stderr rename to tests/ui/proc-macro/attributes-on-modules-fail.stderr diff --git a/src/test/ui/proc-macro/attributes-on-modules.rs b/tests/ui/proc-macro/attributes-on-modules.rs similarity index 100% rename from src/test/ui/proc-macro/attributes-on-modules.rs rename to tests/ui/proc-macro/attributes-on-modules.rs diff --git a/src/test/ui/proc-macro/auxiliary/add-impl.rs b/tests/ui/proc-macro/auxiliary/add-impl.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/add-impl.rs rename to tests/ui/proc-macro/auxiliary/add-impl.rs diff --git a/src/test/ui/proc-macro/auxiliary/amputate-span.rs b/tests/ui/proc-macro/auxiliary/amputate-span.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/amputate-span.rs rename to tests/ui/proc-macro/auxiliary/amputate-span.rs diff --git a/src/test/ui/proc-macro/auxiliary/api/cmp.rs b/tests/ui/proc-macro/auxiliary/api/cmp.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/api/cmp.rs rename to tests/ui/proc-macro/auxiliary/api/cmp.rs diff --git a/src/test/ui/proc-macro/auxiliary/api/mod.rs b/tests/ui/proc-macro/auxiliary/api/mod.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/api/mod.rs rename to tests/ui/proc-macro/auxiliary/api/mod.rs diff --git a/src/test/ui/proc-macro/auxiliary/api/parse.rs b/tests/ui/proc-macro/auxiliary/api/parse.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/api/parse.rs rename to tests/ui/proc-macro/auxiliary/api/parse.rs diff --git a/src/test/ui/proc-macro/auxiliary/append-impl.rs b/tests/ui/proc-macro/auxiliary/append-impl.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/append-impl.rs rename to tests/ui/proc-macro/auxiliary/append-impl.rs diff --git a/src/test/ui/proc-macro/auxiliary/assert-span-pos.rs b/tests/ui/proc-macro/auxiliary/assert-span-pos.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/assert-span-pos.rs rename to tests/ui/proc-macro/auxiliary/assert-span-pos.rs diff --git a/src/test/ui/proc-macro/auxiliary/attr-args.rs b/tests/ui/proc-macro/auxiliary/attr-args.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attr-args.rs rename to tests/ui/proc-macro/auxiliary/attr-args.rs diff --git a/src/test/ui/proc-macro/auxiliary/attr-cfg.rs b/tests/ui/proc-macro/auxiliary/attr-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attr-cfg.rs rename to tests/ui/proc-macro/auxiliary/attr-cfg.rs diff --git a/src/test/ui/proc-macro/auxiliary/attr-on-trait.rs b/tests/ui/proc-macro/auxiliary/attr-on-trait.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attr-on-trait.rs rename to tests/ui/proc-macro/auxiliary/attr-on-trait.rs diff --git a/src/test/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs b/tests/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs rename to tests/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs diff --git a/src/test/ui/proc-macro/auxiliary/attr-stmt-expr.rs b/tests/ui/proc-macro/auxiliary/attr-stmt-expr.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attr-stmt-expr.rs rename to tests/ui/proc-macro/auxiliary/attr-stmt-expr.rs diff --git a/src/test/ui/proc-macro/auxiliary/attribute-spans-preserved.rs b/tests/ui/proc-macro/auxiliary/attribute-spans-preserved.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attribute-spans-preserved.rs rename to tests/ui/proc-macro/auxiliary/attribute-spans-preserved.rs diff --git a/src/test/ui/proc-macro/auxiliary/attributes-included.rs b/tests/ui/proc-macro/auxiliary/attributes-included.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attributes-included.rs rename to tests/ui/proc-macro/auxiliary/attributes-included.rs diff --git a/src/test/ui/proc-macro/auxiliary/attributes-on-definitions.rs b/tests/ui/proc-macro/auxiliary/attributes-on-definitions.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/attributes-on-definitions.rs rename to tests/ui/proc-macro/auxiliary/attributes-on-definitions.rs diff --git a/src/test/ui/proc-macro/auxiliary/bang-macro.rs b/tests/ui/proc-macro/auxiliary/bang-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/bang-macro.rs rename to tests/ui/proc-macro/auxiliary/bang-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/bang_proc_macro2.rs b/tests/ui/proc-macro/auxiliary/bang_proc_macro2.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/bang_proc_macro2.rs rename to tests/ui/proc-macro/auxiliary/bang_proc_macro2.rs diff --git a/src/test/ui/proc-macro/auxiliary/builtin-attrs.rs b/tests/ui/proc-macro/auxiliary/builtin-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/builtin-attrs.rs rename to tests/ui/proc-macro/auxiliary/builtin-attrs.rs diff --git a/src/test/ui/proc-macro/auxiliary/call-deprecated.rs b/tests/ui/proc-macro/auxiliary/call-deprecated.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/call-deprecated.rs rename to tests/ui/proc-macro/auxiliary/call-deprecated.rs diff --git a/src/test/ui/proc-macro/auxiliary/call-site.rs b/tests/ui/proc-macro/auxiliary/call-site.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/call-site.rs rename to tests/ui/proc-macro/auxiliary/call-site.rs diff --git a/src/test/ui/proc-macro/auxiliary/cond_plugin.rs b/tests/ui/proc-macro/auxiliary/cond_plugin.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/cond_plugin.rs rename to tests/ui/proc-macro/auxiliary/cond_plugin.rs diff --git a/src/test/ui/proc-macro/auxiliary/count_compound_ops.rs b/tests/ui/proc-macro/auxiliary/count_compound_ops.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/count_compound_ops.rs rename to tests/ui/proc-macro/auxiliary/count_compound_ops.rs diff --git a/src/test/ui/proc-macro/auxiliary/custom-attr-only-one-derive.rs b/tests/ui/proc-macro/auxiliary/custom-attr-only-one-derive.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/custom-attr-only-one-derive.rs rename to tests/ui/proc-macro/auxiliary/custom-attr-only-one-derive.rs diff --git a/src/test/ui/proc-macro/auxiliary/custom-quote.rs b/tests/ui/proc-macro/auxiliary/custom-quote.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/custom-quote.rs rename to tests/ui/proc-macro/auxiliary/custom-quote.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-a.rs b/tests/ui/proc-macro/auxiliary/derive-a.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-a.rs rename to tests/ui/proc-macro/auxiliary/derive-a.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-atob.rs b/tests/ui/proc-macro/auxiliary/derive-atob.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-atob.rs rename to tests/ui/proc-macro/auxiliary/derive-atob.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-attr-cfg.rs b/tests/ui/proc-macro/auxiliary/derive-attr-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-attr-cfg.rs rename to tests/ui/proc-macro/auxiliary/derive-attr-cfg.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-b-rpass.rs b/tests/ui/proc-macro/auxiliary/derive-b-rpass.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-b-rpass.rs rename to tests/ui/proc-macro/auxiliary/derive-b-rpass.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-b.rs b/tests/ui/proc-macro/auxiliary/derive-b.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-b.rs rename to tests/ui/proc-macro/auxiliary/derive-b.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-bad.rs b/tests/ui/proc-macro/auxiliary/derive-bad.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-bad.rs rename to tests/ui/proc-macro/auxiliary/derive-bad.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-clona.rs b/tests/ui/proc-macro/auxiliary/derive-clona.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-clona.rs rename to tests/ui/proc-macro/auxiliary/derive-clona.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-ctod.rs b/tests/ui/proc-macro/auxiliary/derive-ctod.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-ctod.rs rename to tests/ui/proc-macro/auxiliary/derive-ctod.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-foo.rs b/tests/ui/proc-macro/auxiliary/derive-foo.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-foo.rs rename to tests/ui/proc-macro/auxiliary/derive-foo.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-helper-shadowed-2.rs b/tests/ui/proc-macro/auxiliary/derive-helper-shadowed-2.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-helper-shadowed-2.rs rename to tests/ui/proc-macro/auxiliary/derive-helper-shadowed-2.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-helper-shadowing-2.rs b/tests/ui/proc-macro/auxiliary/derive-helper-shadowing-2.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-helper-shadowing-2.rs rename to tests/ui/proc-macro/auxiliary/derive-helper-shadowing-2.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-helper-shadowing.rs b/tests/ui/proc-macro/auxiliary/derive-helper-shadowing.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-helper-shadowing.rs rename to tests/ui/proc-macro/auxiliary/derive-helper-shadowing.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-nothing.rs b/tests/ui/proc-macro/auxiliary/derive-nothing.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-nothing.rs rename to tests/ui/proc-macro/auxiliary/derive-nothing.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-same-struct.rs b/tests/ui/proc-macro/auxiliary/derive-same-struct.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-same-struct.rs rename to tests/ui/proc-macro/auxiliary/derive-same-struct.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-two-attrs.rs b/tests/ui/proc-macro/auxiliary/derive-two-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-two-attrs.rs rename to tests/ui/proc-macro/auxiliary/derive-two-attrs.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-union.rs b/tests/ui/proc-macro/auxiliary/derive-union.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-union.rs rename to tests/ui/proc-macro/auxiliary/derive-union.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-unstable-2.rs b/tests/ui/proc-macro/auxiliary/derive-unstable-2.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-unstable-2.rs rename to tests/ui/proc-macro/auxiliary/derive-unstable-2.rs diff --git a/src/test/ui/proc-macro/auxiliary/derive-unstable.rs b/tests/ui/proc-macro/auxiliary/derive-unstable.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/derive-unstable.rs rename to tests/ui/proc-macro/auxiliary/derive-unstable.rs diff --git a/src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs b/tests/ui/proc-macro/auxiliary/dollar-crate-external.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs rename to tests/ui/proc-macro/auxiliary/dollar-crate-external.rs diff --git a/src/test/ui/proc-macro/auxiliary/double.rs b/tests/ui/proc-macro/auxiliary/double.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/double.rs rename to tests/ui/proc-macro/auxiliary/double.rs diff --git a/src/test/ui/proc-macro/auxiliary/duplicate.rs b/tests/ui/proc-macro/auxiliary/duplicate.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/duplicate.rs rename to tests/ui/proc-macro/auxiliary/duplicate.rs diff --git a/src/test/ui/proc-macro/auxiliary/edition-imports-2015.rs b/tests/ui/proc-macro/auxiliary/edition-imports-2015.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/edition-imports-2015.rs rename to tests/ui/proc-macro/auxiliary/edition-imports-2015.rs diff --git a/src/test/ui/proc-macro/auxiliary/empty-crate.rs b/tests/ui/proc-macro/auxiliary/empty-crate.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/empty-crate.rs rename to tests/ui/proc-macro/auxiliary/empty-crate.rs diff --git a/src/test/ui/proc-macro/auxiliary/expand-expr.rs b/tests/ui/proc-macro/auxiliary/expand-expr.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/expand-expr.rs rename to tests/ui/proc-macro/auxiliary/expand-expr.rs diff --git a/src/test/ui/proc-macro/auxiliary/expand-with-a-macro.rs b/tests/ui/proc-macro/auxiliary/expand-with-a-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/expand-with-a-macro.rs rename to tests/ui/proc-macro/auxiliary/expand-with-a-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/external-crate-var.rs b/tests/ui/proc-macro/auxiliary/external-crate-var.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/external-crate-var.rs rename to tests/ui/proc-macro/auxiliary/external-crate-var.rs diff --git a/src/test/ui/proc-macro/auxiliary/first-second.rs b/tests/ui/proc-macro/auxiliary/first-second.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/first-second.rs rename to tests/ui/proc-macro/auxiliary/first-second.rs diff --git a/src/test/ui/proc-macro/auxiliary/gen-lifetime-token.rs b/tests/ui/proc-macro/auxiliary/gen-lifetime-token.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/gen-lifetime-token.rs rename to tests/ui/proc-macro/auxiliary/gen-lifetime-token.rs diff --git a/src/test/ui/proc-macro/auxiliary/gen-macro-rules-hygiene.rs b/tests/ui/proc-macro/auxiliary/gen-macro-rules-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/gen-macro-rules-hygiene.rs rename to tests/ui/proc-macro/auxiliary/gen-macro-rules-hygiene.rs diff --git a/src/test/ui/proc-macro/auxiliary/gen-macro-rules.rs b/tests/ui/proc-macro/auxiliary/gen-macro-rules.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/gen-macro-rules.rs rename to tests/ui/proc-macro/auxiliary/gen-macro-rules.rs diff --git a/src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs b/tests/ui/proc-macro/auxiliary/generate-dollar-ident.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs rename to tests/ui/proc-macro/auxiliary/generate-dollar-ident.rs diff --git a/src/test/ui/proc-macro/auxiliary/generate-mod.rs b/tests/ui/proc-macro/auxiliary/generate-mod.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/generate-mod.rs rename to tests/ui/proc-macro/auxiliary/generate-mod.rs diff --git a/src/test/ui/proc-macro/auxiliary/hygiene_example.rs b/tests/ui/proc-macro/auxiliary/hygiene_example.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/hygiene_example.rs rename to tests/ui/proc-macro/auxiliary/hygiene_example.rs diff --git a/src/test/ui/proc-macro/auxiliary/hygiene_example_codegen.rs b/tests/ui/proc-macro/auxiliary/hygiene_example_codegen.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/hygiene_example_codegen.rs rename to tests/ui/proc-macro/auxiliary/hygiene_example_codegen.rs diff --git a/src/test/ui/proc-macro/auxiliary/included-file.txt b/tests/ui/proc-macro/auxiliary/included-file.txt similarity index 100% rename from src/test/ui/proc-macro/auxiliary/included-file.txt rename to tests/ui/proc-macro/auxiliary/included-file.txt diff --git a/src/test/ui/proc-macro/auxiliary/invalid-punct-ident.rs b/tests/ui/proc-macro/auxiliary/invalid-punct-ident.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/invalid-punct-ident.rs rename to tests/ui/proc-macro/auxiliary/invalid-punct-ident.rs diff --git a/src/test/ui/proc-macro/auxiliary/is-available.rs b/tests/ui/proc-macro/auxiliary/is-available.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/is-available.rs rename to tests/ui/proc-macro/auxiliary/is-available.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-104884.rs b/tests/ui/proc-macro/auxiliary/issue-104884.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-104884.rs rename to tests/ui/proc-macro/auxiliary/issue-104884.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-38586.rs b/tests/ui/proc-macro/auxiliary/issue-38586.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-38586.rs rename to tests/ui/proc-macro/auxiliary/issue-38586.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-39889.rs b/tests/ui/proc-macro/auxiliary/issue-39889.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-39889.rs rename to tests/ui/proc-macro/auxiliary/issue-39889.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-42708.rs b/tests/ui/proc-macro/auxiliary/issue-42708.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-42708.rs rename to tests/ui/proc-macro/auxiliary/issue-42708.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-50061.rs b/tests/ui/proc-macro/auxiliary/issue-50061.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-50061.rs rename to tests/ui/proc-macro/auxiliary/issue-50061.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-50493.rs b/tests/ui/proc-macro/auxiliary/issue-50493.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-50493.rs rename to tests/ui/proc-macro/auxiliary/issue-50493.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-59191.rs b/tests/ui/proc-macro/auxiliary/issue-59191.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-59191.rs rename to tests/ui/proc-macro/auxiliary/issue-59191.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-66286.rs b/tests/ui/proc-macro/auxiliary/issue-66286.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-66286.rs rename to tests/ui/proc-macro/auxiliary/issue-66286.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-75801.rs b/tests/ui/proc-macro/auxiliary/issue-75801.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-75801.rs rename to tests/ui/proc-macro/auxiliary/issue-75801.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-79242.rs b/tests/ui/proc-macro/auxiliary/issue-79242.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-79242.rs rename to tests/ui/proc-macro/auxiliary/issue-79242.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-79825.rs b/tests/ui/proc-macro/auxiliary/issue-79825.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-79825.rs rename to tests/ui/proc-macro/auxiliary/issue-79825.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-83510.rs b/tests/ui/proc-macro/auxiliary/issue-83510.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-83510.rs rename to tests/ui/proc-macro/auxiliary/issue-83510.rs diff --git a/src/test/ui/proc-macro/auxiliary/issue-91800-macro.rs b/tests/ui/proc-macro/auxiliary/issue-91800-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/issue-91800-macro.rs rename to tests/ui/proc-macro/auxiliary/issue-91800-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/lifetimes-rpass.rs b/tests/ui/proc-macro/auxiliary/lifetimes-rpass.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/lifetimes-rpass.rs rename to tests/ui/proc-macro/auxiliary/lifetimes-rpass.rs diff --git a/src/test/ui/proc-macro/auxiliary/lifetimes.rs b/tests/ui/proc-macro/auxiliary/lifetimes.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/lifetimes.rs rename to tests/ui/proc-macro/auxiliary/lifetimes.rs diff --git a/src/test/ui/proc-macro/auxiliary/macro-only-syntax.rs b/tests/ui/proc-macro/auxiliary/macro-only-syntax.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/macro-only-syntax.rs rename to tests/ui/proc-macro/auxiliary/macro-only-syntax.rs diff --git a/src/test/ui/proc-macro/auxiliary/make-macro.rs b/tests/ui/proc-macro/auxiliary/make-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/make-macro.rs rename to tests/ui/proc-macro/auxiliary/make-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/meta-delim.rs b/tests/ui/proc-macro/auxiliary/meta-delim.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/meta-delim.rs rename to tests/ui/proc-macro/auxiliary/meta-delim.rs diff --git a/src/test/ui/proc-macro/auxiliary/meta-macro.rs b/tests/ui/proc-macro/auxiliary/meta-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/meta-macro.rs rename to tests/ui/proc-macro/auxiliary/meta-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/mixed-site-span.rs b/tests/ui/proc-macro/auxiliary/mixed-site-span.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/mixed-site-span.rs rename to tests/ui/proc-macro/auxiliary/mixed-site-span.rs diff --git a/src/test/ui/proc-macro/auxiliary/modify-ast.rs b/tests/ui/proc-macro/auxiliary/modify-ast.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/modify-ast.rs rename to tests/ui/proc-macro/auxiliary/modify-ast.rs diff --git a/src/test/ui/proc-macro/auxiliary/multiple-derives.rs b/tests/ui/proc-macro/auxiliary/multiple-derives.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/multiple-derives.rs rename to tests/ui/proc-macro/auxiliary/multiple-derives.rs diff --git a/src/test/ui/proc-macro/auxiliary/multispan.rs b/tests/ui/proc-macro/auxiliary/multispan.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/multispan.rs rename to tests/ui/proc-macro/auxiliary/multispan.rs diff --git a/src/test/ui/proc-macro/auxiliary/negative-token.rs b/tests/ui/proc-macro/auxiliary/negative-token.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/negative-token.rs rename to tests/ui/proc-macro/auxiliary/negative-token.rs diff --git a/src/test/ui/proc-macro/auxiliary/nested-macro-rules.rs b/tests/ui/proc-macro/auxiliary/nested-macro-rules.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/nested-macro-rules.rs rename to tests/ui/proc-macro/auxiliary/nested-macro-rules.rs diff --git a/src/test/ui/proc-macro/auxiliary/nonterminal-recollect-attr.rs b/tests/ui/proc-macro/auxiliary/nonterminal-recollect-attr.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/nonterminal-recollect-attr.rs rename to tests/ui/proc-macro/auxiliary/nonterminal-recollect-attr.rs diff --git a/src/test/ui/proc-macro/auxiliary/not-joint.rs b/tests/ui/proc-macro/auxiliary/not-joint.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/not-joint.rs rename to tests/ui/proc-macro/auxiliary/not-joint.rs diff --git a/src/test/ui/proc-macro/auxiliary/parent-source-spans.rs b/tests/ui/proc-macro/auxiliary/parent-source-spans.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/parent-source-spans.rs rename to tests/ui/proc-macro/auxiliary/parent-source-spans.rs diff --git a/src/test/ui/proc-macro/auxiliary/proc-macro-panic.rs b/tests/ui/proc-macro/auxiliary/proc-macro-panic.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/proc-macro-panic.rs rename to tests/ui/proc-macro/auxiliary/proc-macro-panic.rs diff --git a/src/test/ui/proc-macro/auxiliary/raw-ident.rs b/tests/ui/proc-macro/auxiliary/raw-ident.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/raw-ident.rs rename to tests/ui/proc-macro/auxiliary/raw-ident.rs diff --git a/src/test/ui/proc-macro/auxiliary/re-export.rs b/tests/ui/proc-macro/auxiliary/re-export.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/re-export.rs rename to tests/ui/proc-macro/auxiliary/re-export.rs diff --git a/src/test/ui/proc-macro/auxiliary/recollect.rs b/tests/ui/proc-macro/auxiliary/recollect.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/recollect.rs rename to tests/ui/proc-macro/auxiliary/recollect.rs diff --git a/src/test/ui/proc-macro/auxiliary/resolved-located-at.rs b/tests/ui/proc-macro/auxiliary/resolved-located-at.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/resolved-located-at.rs rename to tests/ui/proc-macro/auxiliary/resolved-located-at.rs diff --git a/src/test/ui/proc-macro/auxiliary/span-api-tests.rs b/tests/ui/proc-macro/auxiliary/span-api-tests.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/span-api-tests.rs rename to tests/ui/proc-macro/auxiliary/span-api-tests.rs diff --git a/src/test/ui/proc-macro/auxiliary/span-from-proc-macro.rs b/tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/span-from-proc-macro.rs rename to tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs diff --git a/src/test/ui/proc-macro/auxiliary/span-test-macros.rs b/tests/ui/proc-macro/auxiliary/span-test-macros.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/span-test-macros.rs rename to tests/ui/proc-macro/auxiliary/span-test-macros.rs diff --git a/src/test/ui/proc-macro/auxiliary/subspan.rs b/tests/ui/proc-macro/auxiliary/subspan.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/subspan.rs rename to tests/ui/proc-macro/auxiliary/subspan.rs diff --git a/src/test/ui/proc-macro/auxiliary/test-macros.rs b/tests/ui/proc-macro/auxiliary/test-macros.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/test-macros.rs rename to tests/ui/proc-macro/auxiliary/test-macros.rs diff --git a/src/test/ui/proc-macro/auxiliary/three-equals.rs b/tests/ui/proc-macro/auxiliary/three-equals.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/three-equals.rs rename to tests/ui/proc-macro/auxiliary/three-equals.rs diff --git a/src/test/ui/proc-macro/auxiliary/weird-hygiene.rs b/tests/ui/proc-macro/auxiliary/weird-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/auxiliary/weird-hygiene.rs rename to tests/ui/proc-macro/auxiliary/weird-hygiene.rs diff --git a/src/test/ui/proc-macro/bang-macro.rs b/tests/ui/proc-macro/bang-macro.rs similarity index 100% rename from src/test/ui/proc-macro/bang-macro.rs rename to tests/ui/proc-macro/bang-macro.rs diff --git a/src/test/ui/proc-macro/break-token-spans.rs b/tests/ui/proc-macro/break-token-spans.rs similarity index 100% rename from src/test/ui/proc-macro/break-token-spans.rs rename to tests/ui/proc-macro/break-token-spans.rs diff --git a/src/test/ui/proc-macro/break-token-spans.stderr b/tests/ui/proc-macro/break-token-spans.stderr similarity index 100% rename from src/test/ui/proc-macro/break-token-spans.stderr rename to tests/ui/proc-macro/break-token-spans.stderr diff --git a/src/test/ui/proc-macro/call-deprecated.rs b/tests/ui/proc-macro/call-deprecated.rs similarity index 100% rename from src/test/ui/proc-macro/call-deprecated.rs rename to tests/ui/proc-macro/call-deprecated.rs diff --git a/src/test/ui/proc-macro/call-deprecated.stderr b/tests/ui/proc-macro/call-deprecated.stderr similarity index 100% rename from src/test/ui/proc-macro/call-deprecated.stderr rename to tests/ui/proc-macro/call-deprecated.stderr diff --git a/src/test/ui/proc-macro/call-site.rs b/tests/ui/proc-macro/call-site.rs similarity index 100% rename from src/test/ui/proc-macro/call-site.rs rename to tests/ui/proc-macro/call-site.rs diff --git a/src/test/ui/proc-macro/capture-macro-rules-invoke.rs b/tests/ui/proc-macro/capture-macro-rules-invoke.rs similarity index 100% rename from src/test/ui/proc-macro/capture-macro-rules-invoke.rs rename to tests/ui/proc-macro/capture-macro-rules-invoke.rs diff --git a/src/test/ui/proc-macro/capture-macro-rules-invoke.stdout b/tests/ui/proc-macro/capture-macro-rules-invoke.stdout similarity index 100% rename from src/test/ui/proc-macro/capture-macro-rules-invoke.stdout rename to tests/ui/proc-macro/capture-macro-rules-invoke.stdout diff --git a/src/test/ui/proc-macro/capture-unglued-token.rs b/tests/ui/proc-macro/capture-unglued-token.rs similarity index 100% rename from src/test/ui/proc-macro/capture-unglued-token.rs rename to tests/ui/proc-macro/capture-unglued-token.rs diff --git a/src/test/ui/proc-macro/capture-unglued-token.stdout b/tests/ui/proc-macro/capture-unglued-token.stdout similarity index 100% rename from src/test/ui/proc-macro/capture-unglued-token.stdout rename to tests/ui/proc-macro/capture-unglued-token.stdout diff --git a/src/test/ui/proc-macro/cfg-eval-fail.rs b/tests/ui/proc-macro/cfg-eval-fail.rs similarity index 100% rename from src/test/ui/proc-macro/cfg-eval-fail.rs rename to tests/ui/proc-macro/cfg-eval-fail.rs diff --git a/src/test/ui/proc-macro/cfg-eval-fail.stderr b/tests/ui/proc-macro/cfg-eval-fail.stderr similarity index 100% rename from src/test/ui/proc-macro/cfg-eval-fail.stderr rename to tests/ui/proc-macro/cfg-eval-fail.stderr diff --git a/src/test/ui/proc-macro/cfg-eval-inner.rs b/tests/ui/proc-macro/cfg-eval-inner.rs similarity index 100% rename from src/test/ui/proc-macro/cfg-eval-inner.rs rename to tests/ui/proc-macro/cfg-eval-inner.rs diff --git a/src/test/ui/proc-macro/cfg-eval-inner.stdout b/tests/ui/proc-macro/cfg-eval-inner.stdout similarity index 100% rename from src/test/ui/proc-macro/cfg-eval-inner.stdout rename to tests/ui/proc-macro/cfg-eval-inner.stdout diff --git a/src/test/ui/proc-macro/cfg-eval.rs b/tests/ui/proc-macro/cfg-eval.rs similarity index 100% rename from src/test/ui/proc-macro/cfg-eval.rs rename to tests/ui/proc-macro/cfg-eval.rs diff --git a/src/test/ui/proc-macro/cfg-eval.stdout b/tests/ui/proc-macro/cfg-eval.stdout similarity index 100% rename from src/test/ui/proc-macro/cfg-eval.stdout rename to tests/ui/proc-macro/cfg-eval.stdout diff --git a/src/test/ui/proc-macro/count_compound_ops.rs b/tests/ui/proc-macro/count_compound_ops.rs similarity index 100% rename from src/test/ui/proc-macro/count_compound_ops.rs rename to tests/ui/proc-macro/count_compound_ops.rs diff --git a/src/test/ui/proc-macro/crate-attrs-multiple.rs b/tests/ui/proc-macro/crate-attrs-multiple.rs similarity index 100% rename from src/test/ui/proc-macro/crate-attrs-multiple.rs rename to tests/ui/proc-macro/crate-attrs-multiple.rs diff --git a/src/test/ui/proc-macro/crate-var.rs b/tests/ui/proc-macro/crate-var.rs similarity index 100% rename from src/test/ui/proc-macro/crate-var.rs rename to tests/ui/proc-macro/crate-var.rs diff --git a/src/test/ui/proc-macro/crt-static.rs b/tests/ui/proc-macro/crt-static.rs similarity index 100% rename from src/test/ui/proc-macro/crt-static.rs rename to tests/ui/proc-macro/crt-static.rs diff --git a/src/test/ui/proc-macro/custom-attr-only-one-derive.rs b/tests/ui/proc-macro/custom-attr-only-one-derive.rs similarity index 100% rename from src/test/ui/proc-macro/custom-attr-only-one-derive.rs rename to tests/ui/proc-macro/custom-attr-only-one-derive.rs diff --git a/src/test/ui/proc-macro/debug/auxiliary/macro-dump-debug.rs b/tests/ui/proc-macro/debug/auxiliary/macro-dump-debug.rs similarity index 100% rename from src/test/ui/proc-macro/debug/auxiliary/macro-dump-debug.rs rename to tests/ui/proc-macro/debug/auxiliary/macro-dump-debug.rs diff --git a/src/test/ui/proc-macro/debug/dump-debug-span-debug.rs b/tests/ui/proc-macro/debug/dump-debug-span-debug.rs similarity index 100% rename from src/test/ui/proc-macro/debug/dump-debug-span-debug.rs rename to tests/ui/proc-macro/debug/dump-debug-span-debug.rs diff --git a/src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr b/tests/ui/proc-macro/debug/dump-debug-span-debug.stderr similarity index 100% rename from src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr rename to tests/ui/proc-macro/debug/dump-debug-span-debug.stderr diff --git a/src/test/ui/proc-macro/debug/dump-debug.rs b/tests/ui/proc-macro/debug/dump-debug.rs similarity index 100% rename from src/test/ui/proc-macro/debug/dump-debug.rs rename to tests/ui/proc-macro/debug/dump-debug.rs diff --git a/src/test/ui/proc-macro/debug/dump-debug.stderr b/tests/ui/proc-macro/debug/dump-debug.stderr similarity index 100% rename from src/test/ui/proc-macro/debug/dump-debug.stderr rename to tests/ui/proc-macro/debug/dump-debug.stderr diff --git a/src/test/ui/proc-macro/define-two.rs b/tests/ui/proc-macro/define-two.rs similarity index 100% rename from src/test/ui/proc-macro/define-two.rs rename to tests/ui/proc-macro/define-two.rs diff --git a/src/test/ui/proc-macro/define-two.stderr b/tests/ui/proc-macro/define-two.stderr similarity index 100% rename from src/test/ui/proc-macro/define-two.stderr rename to tests/ui/proc-macro/define-two.stderr diff --git a/src/test/ui/proc-macro/derive-attr-cfg.rs b/tests/ui/proc-macro/derive-attr-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/derive-attr-cfg.rs rename to tests/ui/proc-macro/derive-attr-cfg.rs diff --git a/src/test/ui/proc-macro/derive-b.rs b/tests/ui/proc-macro/derive-b.rs similarity index 100% rename from src/test/ui/proc-macro/derive-b.rs rename to tests/ui/proc-macro/derive-b.rs diff --git a/src/test/ui/proc-macro/derive-bad.rs b/tests/ui/proc-macro/derive-bad.rs similarity index 100% rename from src/test/ui/proc-macro/derive-bad.rs rename to tests/ui/proc-macro/derive-bad.rs diff --git a/src/test/ui/proc-macro/derive-bad.stderr b/tests/ui/proc-macro/derive-bad.stderr similarity index 100% rename from src/test/ui/proc-macro/derive-bad.stderr rename to tests/ui/proc-macro/derive-bad.stderr diff --git a/src/test/ui/proc-macro/derive-expand-order.rs b/tests/ui/proc-macro/derive-expand-order.rs similarity index 100% rename from src/test/ui/proc-macro/derive-expand-order.rs rename to tests/ui/proc-macro/derive-expand-order.rs diff --git a/src/test/ui/proc-macro/derive-expand-order.stdout b/tests/ui/proc-macro/derive-expand-order.stdout similarity index 100% rename from src/test/ui/proc-macro/derive-expand-order.stdout rename to tests/ui/proc-macro/derive-expand-order.stdout diff --git a/src/test/ui/proc-macro/derive-helper-configured.rs b/tests/ui/proc-macro/derive-helper-configured.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-configured.rs rename to tests/ui/proc-macro/derive-helper-configured.rs diff --git a/src/test/ui/proc-macro/derive-helper-legacy-limits.rs b/tests/ui/proc-macro/derive-helper-legacy-limits.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-legacy-limits.rs rename to tests/ui/proc-macro/derive-helper-legacy-limits.rs diff --git a/src/test/ui/proc-macro/derive-helper-legacy-limits.stderr b/tests/ui/proc-macro/derive-helper-legacy-limits.stderr similarity index 100% rename from src/test/ui/proc-macro/derive-helper-legacy-limits.stderr rename to tests/ui/proc-macro/derive-helper-legacy-limits.stderr diff --git a/src/test/ui/proc-macro/derive-helper-legacy-spurious.rs b/tests/ui/proc-macro/derive-helper-legacy-spurious.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-legacy-spurious.rs rename to tests/ui/proc-macro/derive-helper-legacy-spurious.rs diff --git a/src/test/ui/proc-macro/derive-helper-legacy-spurious.stderr b/tests/ui/proc-macro/derive-helper-legacy-spurious.stderr similarity index 100% rename from src/test/ui/proc-macro/derive-helper-legacy-spurious.stderr rename to tests/ui/proc-macro/derive-helper-legacy-spurious.stderr diff --git a/src/test/ui/proc-macro/derive-helper-shadowed.rs b/tests/ui/proc-macro/derive-helper-shadowed.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-shadowed.rs rename to tests/ui/proc-macro/derive-helper-shadowed.rs diff --git a/src/test/ui/proc-macro/derive-helper-shadowing-2.rs b/tests/ui/proc-macro/derive-helper-shadowing-2.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-shadowing-2.rs rename to tests/ui/proc-macro/derive-helper-shadowing-2.rs diff --git a/src/test/ui/proc-macro/derive-helper-shadowing.rs b/tests/ui/proc-macro/derive-helper-shadowing.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-shadowing.rs rename to tests/ui/proc-macro/derive-helper-shadowing.rs diff --git a/src/test/ui/proc-macro/derive-helper-shadowing.stderr b/tests/ui/proc-macro/derive-helper-shadowing.stderr similarity index 100% rename from src/test/ui/proc-macro/derive-helper-shadowing.stderr rename to tests/ui/proc-macro/derive-helper-shadowing.stderr diff --git a/src/test/ui/proc-macro/derive-helper-vs-legacy.rs b/tests/ui/proc-macro/derive-helper-vs-legacy.rs similarity index 100% rename from src/test/ui/proc-macro/derive-helper-vs-legacy.rs rename to tests/ui/proc-macro/derive-helper-vs-legacy.rs diff --git a/src/test/ui/proc-macro/derive-in-mod.rs b/tests/ui/proc-macro/derive-in-mod.rs similarity index 100% rename from src/test/ui/proc-macro/derive-in-mod.rs rename to tests/ui/proc-macro/derive-in-mod.rs diff --git a/src/test/ui/proc-macro/derive-multiple-with-packed.rs b/tests/ui/proc-macro/derive-multiple-with-packed.rs similarity index 100% rename from src/test/ui/proc-macro/derive-multiple-with-packed.rs rename to tests/ui/proc-macro/derive-multiple-with-packed.rs diff --git a/src/test/ui/proc-macro/derive-same-struct.rs b/tests/ui/proc-macro/derive-same-struct.rs similarity index 100% rename from src/test/ui/proc-macro/derive-same-struct.rs rename to tests/ui/proc-macro/derive-same-struct.rs diff --git a/src/test/ui/proc-macro/derive-same-struct.stdout b/tests/ui/proc-macro/derive-same-struct.stdout similarity index 100% rename from src/test/ui/proc-macro/derive-same-struct.stdout rename to tests/ui/proc-macro/derive-same-struct.stdout diff --git a/src/test/ui/proc-macro/derive-still-gated.rs b/tests/ui/proc-macro/derive-still-gated.rs similarity index 100% rename from src/test/ui/proc-macro/derive-still-gated.rs rename to tests/ui/proc-macro/derive-still-gated.rs diff --git a/src/test/ui/proc-macro/derive-still-gated.stderr b/tests/ui/proc-macro/derive-still-gated.stderr similarity index 100% rename from src/test/ui/proc-macro/derive-still-gated.stderr rename to tests/ui/proc-macro/derive-still-gated.stderr diff --git a/src/test/ui/proc-macro/derive-test.rs b/tests/ui/proc-macro/derive-test.rs similarity index 100% rename from src/test/ui/proc-macro/derive-test.rs rename to tests/ui/proc-macro/derive-test.rs diff --git a/src/test/ui/proc-macro/derive-two-attrs.rs b/tests/ui/proc-macro/derive-two-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/derive-two-attrs.rs rename to tests/ui/proc-macro/derive-two-attrs.rs diff --git a/src/test/ui/proc-macro/derive-union.rs b/tests/ui/proc-macro/derive-union.rs similarity index 100% rename from src/test/ui/proc-macro/derive-union.rs rename to tests/ui/proc-macro/derive-union.rs diff --git a/src/test/ui/proc-macro/disappearing-resolution.rs b/tests/ui/proc-macro/disappearing-resolution.rs similarity index 100% rename from src/test/ui/proc-macro/disappearing-resolution.rs rename to tests/ui/proc-macro/disappearing-resolution.rs diff --git a/src/test/ui/proc-macro/disappearing-resolution.stderr b/tests/ui/proc-macro/disappearing-resolution.stderr similarity index 100% rename from src/test/ui/proc-macro/disappearing-resolution.stderr rename to tests/ui/proc-macro/disappearing-resolution.stderr diff --git a/src/test/ui/proc-macro/doc-comment-preserved.rs b/tests/ui/proc-macro/doc-comment-preserved.rs similarity index 100% rename from src/test/ui/proc-macro/doc-comment-preserved.rs rename to tests/ui/proc-macro/doc-comment-preserved.rs diff --git a/src/test/ui/proc-macro/doc-comment-preserved.stdout b/tests/ui/proc-macro/doc-comment-preserved.stdout similarity index 100% rename from src/test/ui/proc-macro/doc-comment-preserved.stdout rename to tests/ui/proc-macro/doc-comment-preserved.stdout diff --git a/src/test/ui/proc-macro/dollar-crate-issue-101211.rs b/tests/ui/proc-macro/dollar-crate-issue-101211.rs similarity index 100% rename from src/test/ui/proc-macro/dollar-crate-issue-101211.rs rename to tests/ui/proc-macro/dollar-crate-issue-101211.rs diff --git a/src/test/ui/proc-macro/dollar-crate-issue-57089.rs b/tests/ui/proc-macro/dollar-crate-issue-57089.rs similarity index 100% rename from src/test/ui/proc-macro/dollar-crate-issue-57089.rs rename to tests/ui/proc-macro/dollar-crate-issue-57089.rs diff --git a/src/test/ui/proc-macro/dollar-crate-issue-57089.stdout b/tests/ui/proc-macro/dollar-crate-issue-57089.stdout similarity index 100% rename from src/test/ui/proc-macro/dollar-crate-issue-57089.stdout rename to tests/ui/proc-macro/dollar-crate-issue-57089.stdout diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs b/tests/ui/proc-macro/dollar-crate-issue-62325.rs similarity index 100% rename from src/test/ui/proc-macro/dollar-crate-issue-62325.rs rename to tests/ui/proc-macro/dollar-crate-issue-62325.rs diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout b/tests/ui/proc-macro/dollar-crate-issue-62325.stdout similarity index 100% rename from src/test/ui/proc-macro/dollar-crate-issue-62325.stdout rename to tests/ui/proc-macro/dollar-crate-issue-62325.stdout diff --git a/src/test/ui/proc-macro/dollar-crate.rs b/tests/ui/proc-macro/dollar-crate.rs similarity index 100% rename from src/test/ui/proc-macro/dollar-crate.rs rename to tests/ui/proc-macro/dollar-crate.rs diff --git a/src/test/ui/proc-macro/dollar-crate.stdout b/tests/ui/proc-macro/dollar-crate.stdout similarity index 100% rename from src/test/ui/proc-macro/dollar-crate.stdout rename to tests/ui/proc-macro/dollar-crate.stdout diff --git a/src/test/ui/proc-macro/edition-imports-2018.rs b/tests/ui/proc-macro/edition-imports-2018.rs similarity index 100% rename from src/test/ui/proc-macro/edition-imports-2018.rs rename to tests/ui/proc-macro/edition-imports-2018.rs diff --git a/src/test/ui/proc-macro/empty-crate.rs b/tests/ui/proc-macro/empty-crate.rs similarity index 100% rename from src/test/ui/proc-macro/empty-crate.rs rename to tests/ui/proc-macro/empty-crate.rs diff --git a/src/test/ui/proc-macro/empty-where-clause.rs b/tests/ui/proc-macro/empty-where-clause.rs similarity index 100% rename from src/test/ui/proc-macro/empty-where-clause.rs rename to tests/ui/proc-macro/empty-where-clause.rs diff --git a/src/test/ui/proc-macro/empty-where-clause.stderr b/tests/ui/proc-macro/empty-where-clause.stderr similarity index 100% rename from src/test/ui/proc-macro/empty-where-clause.stderr rename to tests/ui/proc-macro/empty-where-clause.stderr diff --git a/src/test/ui/proc-macro/expand-expr.rs b/tests/ui/proc-macro/expand-expr.rs similarity index 100% rename from src/test/ui/proc-macro/expand-expr.rs rename to tests/ui/proc-macro/expand-expr.rs diff --git a/src/test/ui/proc-macro/expand-expr.stderr b/tests/ui/proc-macro/expand-expr.stderr similarity index 100% rename from src/test/ui/proc-macro/expand-expr.stderr rename to tests/ui/proc-macro/expand-expr.stderr diff --git a/src/test/ui/proc-macro/expand-to-derive.rs b/tests/ui/proc-macro/expand-to-derive.rs similarity index 100% rename from src/test/ui/proc-macro/expand-to-derive.rs rename to tests/ui/proc-macro/expand-to-derive.rs diff --git a/src/test/ui/proc-macro/expand-to-derive.stdout b/tests/ui/proc-macro/expand-to-derive.stdout similarity index 100% rename from src/test/ui/proc-macro/expand-to-derive.stdout rename to tests/ui/proc-macro/expand-to-derive.stdout diff --git a/src/test/ui/proc-macro/expand-to-unstable.rs b/tests/ui/proc-macro/expand-to-unstable.rs similarity index 100% rename from src/test/ui/proc-macro/expand-to-unstable.rs rename to tests/ui/proc-macro/expand-to-unstable.rs diff --git a/src/test/ui/proc-macro/expand-to-unstable.stderr b/tests/ui/proc-macro/expand-to-unstable.stderr similarity index 100% rename from src/test/ui/proc-macro/expand-to-unstable.stderr rename to tests/ui/proc-macro/expand-to-unstable.stderr diff --git a/src/test/ui/proc-macro/expand-with-a-macro.rs b/tests/ui/proc-macro/expand-with-a-macro.rs similarity index 100% rename from src/test/ui/proc-macro/expand-with-a-macro.rs rename to tests/ui/proc-macro/expand-with-a-macro.rs diff --git a/src/test/ui/proc-macro/export-macro.rs b/tests/ui/proc-macro/export-macro.rs similarity index 100% rename from src/test/ui/proc-macro/export-macro.rs rename to tests/ui/proc-macro/export-macro.rs diff --git a/src/test/ui/proc-macro/export-macro.stderr b/tests/ui/proc-macro/export-macro.stderr similarity index 100% rename from src/test/ui/proc-macro/export-macro.stderr rename to tests/ui/proc-macro/export-macro.stderr diff --git a/src/test/ui/proc-macro/exports.rs b/tests/ui/proc-macro/exports.rs similarity index 100% rename from src/test/ui/proc-macro/exports.rs rename to tests/ui/proc-macro/exports.rs diff --git a/src/test/ui/proc-macro/exports.stderr b/tests/ui/proc-macro/exports.stderr similarity index 100% rename from src/test/ui/proc-macro/exports.stderr rename to tests/ui/proc-macro/exports.stderr diff --git a/src/test/ui/proc-macro/expr-stmt-nonterminal-tokens.rs b/tests/ui/proc-macro/expr-stmt-nonterminal-tokens.rs similarity index 100% rename from src/test/ui/proc-macro/expr-stmt-nonterminal-tokens.rs rename to tests/ui/proc-macro/expr-stmt-nonterminal-tokens.rs diff --git a/src/test/ui/proc-macro/expr-stmt-nonterminal-tokens.stdout b/tests/ui/proc-macro/expr-stmt-nonterminal-tokens.stdout similarity index 100% rename from src/test/ui/proc-macro/expr-stmt-nonterminal-tokens.stdout rename to tests/ui/proc-macro/expr-stmt-nonterminal-tokens.stdout diff --git a/src/test/ui/proc-macro/extern-prelude-extern-crate-proc-macro.rs b/tests/ui/proc-macro/extern-prelude-extern-crate-proc-macro.rs similarity index 100% rename from src/test/ui/proc-macro/extern-prelude-extern-crate-proc-macro.rs rename to tests/ui/proc-macro/extern-prelude-extern-crate-proc-macro.rs diff --git a/src/test/ui/proc-macro/gen-lifetime-token.rs b/tests/ui/proc-macro/gen-lifetime-token.rs similarity index 100% rename from src/test/ui/proc-macro/gen-lifetime-token.rs rename to tests/ui/proc-macro/gen-lifetime-token.rs diff --git a/src/test/ui/proc-macro/gen-macro-rules-hygiene.rs b/tests/ui/proc-macro/gen-macro-rules-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/gen-macro-rules-hygiene.rs rename to tests/ui/proc-macro/gen-macro-rules-hygiene.rs diff --git a/src/test/ui/proc-macro/gen-macro-rules-hygiene.stderr b/tests/ui/proc-macro/gen-macro-rules-hygiene.stderr similarity index 100% rename from src/test/ui/proc-macro/gen-macro-rules-hygiene.stderr rename to tests/ui/proc-macro/gen-macro-rules-hygiene.stderr diff --git a/src/test/ui/proc-macro/gen-macro-rules.rs b/tests/ui/proc-macro/gen-macro-rules.rs similarity index 100% rename from src/test/ui/proc-macro/gen-macro-rules.rs rename to tests/ui/proc-macro/gen-macro-rules.rs diff --git a/src/test/ui/proc-macro/generate-dollar-ident.rs b/tests/ui/proc-macro/generate-dollar-ident.rs similarity index 100% rename from src/test/ui/proc-macro/generate-dollar-ident.rs rename to tests/ui/proc-macro/generate-dollar-ident.rs diff --git a/src/test/ui/proc-macro/generate-mod.rs b/tests/ui/proc-macro/generate-mod.rs similarity index 100% rename from src/test/ui/proc-macro/generate-mod.rs rename to tests/ui/proc-macro/generate-mod.rs diff --git a/src/test/ui/proc-macro/generate-mod.stderr b/tests/ui/proc-macro/generate-mod.stderr similarity index 100% rename from src/test/ui/proc-macro/generate-mod.stderr rename to tests/ui/proc-macro/generate-mod.stderr diff --git a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs b/tests/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs similarity index 100% rename from src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs rename to tests/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs diff --git a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr b/tests/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr similarity index 100% rename from src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr rename to tests/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr diff --git a/src/test/ui/proc-macro/helper-attr-blocked-by-import.rs b/tests/ui/proc-macro/helper-attr-blocked-by-import.rs similarity index 100% rename from src/test/ui/proc-macro/helper-attr-blocked-by-import.rs rename to tests/ui/proc-macro/helper-attr-blocked-by-import.rs diff --git a/src/test/ui/proc-macro/hygiene_example.rs b/tests/ui/proc-macro/hygiene_example.rs similarity index 100% rename from src/test/ui/proc-macro/hygiene_example.rs rename to tests/ui/proc-macro/hygiene_example.rs diff --git a/src/test/ui/proc-macro/illegal-proc-macro-derive-use.rs b/tests/ui/proc-macro/illegal-proc-macro-derive-use.rs similarity index 100% rename from src/test/ui/proc-macro/illegal-proc-macro-derive-use.rs rename to tests/ui/proc-macro/illegal-proc-macro-derive-use.rs diff --git a/src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr b/tests/ui/proc-macro/illegal-proc-macro-derive-use.stderr similarity index 100% rename from src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr rename to tests/ui/proc-macro/illegal-proc-macro-derive-use.stderr diff --git a/src/test/ui/proc-macro/import.rs b/tests/ui/proc-macro/import.rs similarity index 100% rename from src/test/ui/proc-macro/import.rs rename to tests/ui/proc-macro/import.rs diff --git a/src/test/ui/proc-macro/import.stderr b/tests/ui/proc-macro/import.stderr similarity index 100% rename from src/test/ui/proc-macro/import.stderr rename to tests/ui/proc-macro/import.stderr diff --git a/src/test/ui/proc-macro/inert-attribute-order.rs b/tests/ui/proc-macro/inert-attribute-order.rs similarity index 100% rename from src/test/ui/proc-macro/inert-attribute-order.rs rename to tests/ui/proc-macro/inert-attribute-order.rs diff --git a/src/test/ui/proc-macro/inert-attribute-order.stdout b/tests/ui/proc-macro/inert-attribute-order.stdout similarity index 100% rename from src/test/ui/proc-macro/inert-attribute-order.stdout rename to tests/ui/proc-macro/inert-attribute-order.stdout diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.rs b/tests/ui/proc-macro/inner-attr-non-inline-mod.rs similarity index 100% rename from src/test/ui/proc-macro/inner-attr-non-inline-mod.rs rename to tests/ui/proc-macro/inner-attr-non-inline-mod.rs diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr b/tests/ui/proc-macro/inner-attr-non-inline-mod.stderr similarity index 100% rename from src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr rename to tests/ui/proc-macro/inner-attr-non-inline-mod.stderr diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout b/tests/ui/proc-macro/inner-attr-non-inline-mod.stdout similarity index 100% rename from src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout rename to tests/ui/proc-macro/inner-attr-non-inline-mod.stdout diff --git a/src/test/ui/proc-macro/inner-attrs.rs b/tests/ui/proc-macro/inner-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/inner-attrs.rs rename to tests/ui/proc-macro/inner-attrs.rs diff --git a/src/test/ui/proc-macro/inner-attrs.stderr b/tests/ui/proc-macro/inner-attrs.stderr similarity index 100% rename from src/test/ui/proc-macro/inner-attrs.stderr rename to tests/ui/proc-macro/inner-attrs.stderr diff --git a/src/test/ui/proc-macro/inner-attrs.stdout b/tests/ui/proc-macro/inner-attrs.stdout similarity index 100% rename from src/test/ui/proc-macro/inner-attrs.stdout rename to tests/ui/proc-macro/inner-attrs.stdout diff --git a/src/test/ui/proc-macro/input-interpolated.rs b/tests/ui/proc-macro/input-interpolated.rs similarity index 100% rename from src/test/ui/proc-macro/input-interpolated.rs rename to tests/ui/proc-macro/input-interpolated.rs diff --git a/src/test/ui/proc-macro/input-interpolated.stdout b/tests/ui/proc-macro/input-interpolated.stdout similarity index 100% rename from src/test/ui/proc-macro/input-interpolated.stdout rename to tests/ui/proc-macro/input-interpolated.stdout diff --git a/src/test/ui/proc-macro/invalid-attributes.rs b/tests/ui/proc-macro/invalid-attributes.rs similarity index 100% rename from src/test/ui/proc-macro/invalid-attributes.rs rename to tests/ui/proc-macro/invalid-attributes.rs diff --git a/src/test/ui/proc-macro/invalid-attributes.stderr b/tests/ui/proc-macro/invalid-attributes.stderr similarity index 100% rename from src/test/ui/proc-macro/invalid-attributes.stderr rename to tests/ui/proc-macro/invalid-attributes.stderr diff --git a/src/test/ui/proc-macro/invalid-punct-ident-1.rs b/tests/ui/proc-macro/invalid-punct-ident-1.rs similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-1.rs rename to tests/ui/proc-macro/invalid-punct-ident-1.rs diff --git a/src/test/ui/proc-macro/invalid-punct-ident-1.stderr b/tests/ui/proc-macro/invalid-punct-ident-1.stderr similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-1.stderr rename to tests/ui/proc-macro/invalid-punct-ident-1.stderr diff --git a/src/test/ui/proc-macro/invalid-punct-ident-2.rs b/tests/ui/proc-macro/invalid-punct-ident-2.rs similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-2.rs rename to tests/ui/proc-macro/invalid-punct-ident-2.rs diff --git a/src/test/ui/proc-macro/invalid-punct-ident-2.stderr b/tests/ui/proc-macro/invalid-punct-ident-2.stderr similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-2.stderr rename to tests/ui/proc-macro/invalid-punct-ident-2.stderr diff --git a/src/test/ui/proc-macro/invalid-punct-ident-3.rs b/tests/ui/proc-macro/invalid-punct-ident-3.rs similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-3.rs rename to tests/ui/proc-macro/invalid-punct-ident-3.rs diff --git a/src/test/ui/proc-macro/invalid-punct-ident-3.stderr b/tests/ui/proc-macro/invalid-punct-ident-3.stderr similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-3.stderr rename to tests/ui/proc-macro/invalid-punct-ident-3.stderr diff --git a/src/test/ui/proc-macro/invalid-punct-ident-4.rs b/tests/ui/proc-macro/invalid-punct-ident-4.rs similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-4.rs rename to tests/ui/proc-macro/invalid-punct-ident-4.rs diff --git a/src/test/ui/proc-macro/invalid-punct-ident-4.stderr b/tests/ui/proc-macro/invalid-punct-ident-4.stderr similarity index 100% rename from src/test/ui/proc-macro/invalid-punct-ident-4.stderr rename to tests/ui/proc-macro/invalid-punct-ident-4.stderr diff --git a/src/test/ui/proc-macro/is-available.rs b/tests/ui/proc-macro/is-available.rs similarity index 100% rename from src/test/ui/proc-macro/is-available.rs rename to tests/ui/proc-macro/is-available.rs diff --git a/src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs similarity index 100% rename from src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs rename to tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs diff --git a/src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr rename to tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr diff --git a/src/test/ui/proc-macro/issue-36935.rs b/tests/ui/proc-macro/issue-36935.rs similarity index 100% rename from src/test/ui/proc-macro/issue-36935.rs rename to tests/ui/proc-macro/issue-36935.rs diff --git a/src/test/ui/proc-macro/issue-36935.stderr b/tests/ui/proc-macro/issue-36935.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-36935.stderr rename to tests/ui/proc-macro/issue-36935.stderr diff --git a/src/test/ui/proc-macro/issue-37788.rs b/tests/ui/proc-macro/issue-37788.rs similarity index 100% rename from src/test/ui/proc-macro/issue-37788.rs rename to tests/ui/proc-macro/issue-37788.rs diff --git a/src/test/ui/proc-macro/issue-37788.stderr b/tests/ui/proc-macro/issue-37788.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-37788.stderr rename to tests/ui/proc-macro/issue-37788.stderr diff --git a/src/test/ui/proc-macro/issue-38586.rs b/tests/ui/proc-macro/issue-38586.rs similarity index 100% rename from src/test/ui/proc-macro/issue-38586.rs rename to tests/ui/proc-macro/issue-38586.rs diff --git a/src/test/ui/proc-macro/issue-38586.stderr b/tests/ui/proc-macro/issue-38586.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-38586.stderr rename to tests/ui/proc-macro/issue-38586.stderr diff --git a/src/test/ui/proc-macro/issue-39889.rs b/tests/ui/proc-macro/issue-39889.rs similarity index 100% rename from src/test/ui/proc-macro/issue-39889.rs rename to tests/ui/proc-macro/issue-39889.rs diff --git a/src/test/ui/proc-macro/issue-42708.rs b/tests/ui/proc-macro/issue-42708.rs similarity index 100% rename from src/test/ui/proc-macro/issue-42708.rs rename to tests/ui/proc-macro/issue-42708.rs diff --git a/src/test/ui/proc-macro/issue-50061.rs b/tests/ui/proc-macro/issue-50061.rs similarity index 100% rename from src/test/ui/proc-macro/issue-50061.rs rename to tests/ui/proc-macro/issue-50061.rs diff --git a/src/test/ui/proc-macro/issue-50493.rs b/tests/ui/proc-macro/issue-50493.rs similarity index 100% rename from src/test/ui/proc-macro/issue-50493.rs rename to tests/ui/proc-macro/issue-50493.rs diff --git a/src/test/ui/proc-macro/issue-50493.stderr b/tests/ui/proc-macro/issue-50493.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-50493.stderr rename to tests/ui/proc-macro/issue-50493.stderr diff --git a/src/test/ui/proc-macro/issue-53481.rs b/tests/ui/proc-macro/issue-53481.rs similarity index 100% rename from src/test/ui/proc-macro/issue-53481.rs rename to tests/ui/proc-macro/issue-53481.rs diff --git a/src/test/ui/proc-macro/issue-59191-replace-root-with-fn.rs b/tests/ui/proc-macro/issue-59191-replace-root-with-fn.rs similarity index 100% rename from src/test/ui/proc-macro/issue-59191-replace-root-with-fn.rs rename to tests/ui/proc-macro/issue-59191-replace-root-with-fn.rs diff --git a/src/test/ui/proc-macro/issue-59191-replace-root-with-fn.stderr b/tests/ui/proc-macro/issue-59191-replace-root-with-fn.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-59191-replace-root-with-fn.stderr rename to tests/ui/proc-macro/issue-59191-replace-root-with-fn.stderr diff --git a/src/test/ui/proc-macro/issue-66286.rs b/tests/ui/proc-macro/issue-66286.rs similarity index 100% rename from src/test/ui/proc-macro/issue-66286.rs rename to tests/ui/proc-macro/issue-66286.rs diff --git a/src/test/ui/proc-macro/issue-66286.stderr b/tests/ui/proc-macro/issue-66286.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-66286.stderr rename to tests/ui/proc-macro/issue-66286.stderr diff --git a/src/test/ui/proc-macro/issue-73933-procedural-masquerade.rs b/tests/ui/proc-macro/issue-73933-procedural-masquerade.rs similarity index 100% rename from src/test/ui/proc-macro/issue-73933-procedural-masquerade.rs rename to tests/ui/proc-macro/issue-73933-procedural-masquerade.rs diff --git a/src/test/ui/proc-macro/issue-73933-procedural-masquerade.stdout b/tests/ui/proc-macro/issue-73933-procedural-masquerade.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-73933-procedural-masquerade.stdout rename to tests/ui/proc-macro/issue-73933-procedural-masquerade.stdout diff --git a/src/test/ui/proc-macro/issue-75734-pp-paren.rs b/tests/ui/proc-macro/issue-75734-pp-paren.rs similarity index 100% rename from src/test/ui/proc-macro/issue-75734-pp-paren.rs rename to tests/ui/proc-macro/issue-75734-pp-paren.rs diff --git a/src/test/ui/proc-macro/issue-75734-pp-paren.stdout b/tests/ui/proc-macro/issue-75734-pp-paren.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-75734-pp-paren.stdout rename to tests/ui/proc-macro/issue-75734-pp-paren.stdout diff --git a/src/test/ui/proc-macro/issue-75801.rs b/tests/ui/proc-macro/issue-75801.rs similarity index 100% rename from src/test/ui/proc-macro/issue-75801.rs rename to tests/ui/proc-macro/issue-75801.rs diff --git a/src/test/ui/proc-macro/issue-75801.stderr b/tests/ui/proc-macro/issue-75801.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-75801.stderr rename to tests/ui/proc-macro/issue-75801.stderr diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.rs b/tests/ui/proc-macro/issue-75930-derive-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/issue-75930-derive-cfg.rs rename to tests/ui/proc-macro/issue-75930-derive-cfg.rs diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.stderr b/tests/ui/proc-macro/issue-75930-derive-cfg.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-75930-derive-cfg.stderr rename to tests/ui/proc-macro/issue-75930-derive-cfg.stderr diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.stdout b/tests/ui/proc-macro/issue-75930-derive-cfg.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-75930-derive-cfg.stdout rename to tests/ui/proc-macro/issue-75930-derive-cfg.stdout diff --git a/src/test/ui/proc-macro/issue-76182-leading-vert-pat.rs b/tests/ui/proc-macro/issue-76182-leading-vert-pat.rs similarity index 100% rename from src/test/ui/proc-macro/issue-76182-leading-vert-pat.rs rename to tests/ui/proc-macro/issue-76182-leading-vert-pat.rs diff --git a/src/test/ui/proc-macro/issue-76182-leading-vert-pat.stdout b/tests/ui/proc-macro/issue-76182-leading-vert-pat.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-76182-leading-vert-pat.stdout rename to tests/ui/proc-macro/issue-76182-leading-vert-pat.stdout diff --git a/src/test/ui/proc-macro/issue-76270-panic-in-libproc-macro.rs b/tests/ui/proc-macro/issue-76270-panic-in-libproc-macro.rs similarity index 100% rename from src/test/ui/proc-macro/issue-76270-panic-in-libproc-macro.rs rename to tests/ui/proc-macro/issue-76270-panic-in-libproc-macro.rs diff --git a/src/test/ui/proc-macro/issue-76270-panic-in-libproc-macro.stderr b/tests/ui/proc-macro/issue-76270-panic-in-libproc-macro.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-76270-panic-in-libproc-macro.stderr rename to tests/ui/proc-macro/issue-76270-panic-in-libproc-macro.stderr diff --git a/src/test/ui/proc-macro/issue-78675-captured-inner-attrs.rs b/tests/ui/proc-macro/issue-78675-captured-inner-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/issue-78675-captured-inner-attrs.rs rename to tests/ui/proc-macro/issue-78675-captured-inner-attrs.rs diff --git a/src/test/ui/proc-macro/issue-78675-captured-inner-attrs.stdout b/tests/ui/proc-macro/issue-78675-captured-inner-attrs.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-78675-captured-inner-attrs.stdout rename to tests/ui/proc-macro/issue-78675-captured-inner-attrs.stdout diff --git a/src/test/ui/proc-macro/issue-79148.rs b/tests/ui/proc-macro/issue-79148.rs similarity index 100% rename from src/test/ui/proc-macro/issue-79148.rs rename to tests/ui/proc-macro/issue-79148.rs diff --git a/src/test/ui/proc-macro/issue-79148.stderr b/tests/ui/proc-macro/issue-79148.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-79148.stderr rename to tests/ui/proc-macro/issue-79148.stderr diff --git a/src/test/ui/proc-macro/issue-79242-slow-retokenize-check.rs b/tests/ui/proc-macro/issue-79242-slow-retokenize-check.rs similarity index 100% rename from src/test/ui/proc-macro/issue-79242-slow-retokenize-check.rs rename to tests/ui/proc-macro/issue-79242-slow-retokenize-check.rs diff --git a/src/test/ui/proc-macro/issue-79825.rs b/tests/ui/proc-macro/issue-79825.rs similarity index 100% rename from src/test/ui/proc-macro/issue-79825.rs rename to tests/ui/proc-macro/issue-79825.rs diff --git a/src/test/ui/proc-macro/issue-80760-empty-stmt.rs b/tests/ui/proc-macro/issue-80760-empty-stmt.rs similarity index 100% rename from src/test/ui/proc-macro/issue-80760-empty-stmt.rs rename to tests/ui/proc-macro/issue-80760-empty-stmt.rs diff --git a/src/test/ui/proc-macro/issue-80760-empty-stmt.stdout b/tests/ui/proc-macro/issue-80760-empty-stmt.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-80760-empty-stmt.stdout rename to tests/ui/proc-macro/issue-80760-empty-stmt.stdout diff --git a/src/test/ui/proc-macro/issue-81007-item-attrs.rs b/tests/ui/proc-macro/issue-81007-item-attrs.rs similarity index 100% rename from src/test/ui/proc-macro/issue-81007-item-attrs.rs rename to tests/ui/proc-macro/issue-81007-item-attrs.rs diff --git a/src/test/ui/proc-macro/issue-81007-item-attrs.stdout b/tests/ui/proc-macro/issue-81007-item-attrs.stdout similarity index 100% rename from src/test/ui/proc-macro/issue-81007-item-attrs.stdout rename to tests/ui/proc-macro/issue-81007-item-attrs.stdout diff --git a/src/test/ui/proc-macro/issue-81543-item-parse-err.rs b/tests/ui/proc-macro/issue-81543-item-parse-err.rs similarity index 100% rename from src/test/ui/proc-macro/issue-81543-item-parse-err.rs rename to tests/ui/proc-macro/issue-81543-item-parse-err.rs diff --git a/src/test/ui/proc-macro/issue-81543-item-parse-err.stderr b/tests/ui/proc-macro/issue-81543-item-parse-err.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-81543-item-parse-err.stderr rename to tests/ui/proc-macro/issue-81543-item-parse-err.stderr diff --git a/src/test/ui/proc-macro/issue-81555.rs b/tests/ui/proc-macro/issue-81555.rs similarity index 100% rename from src/test/ui/proc-macro/issue-81555.rs rename to tests/ui/proc-macro/issue-81555.rs diff --git a/src/test/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs b/tests/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs similarity index 100% rename from src/test/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs rename to tests/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.rs diff --git a/src/test/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.stderr b/tests/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.stderr rename to tests/ui/proc-macro/issue-83469-global-alloc-invalid-stmt.stderr diff --git a/src/test/ui/proc-macro/issue-83510.rs b/tests/ui/proc-macro/issue-83510.rs similarity index 100% rename from src/test/ui/proc-macro/issue-83510.rs rename to tests/ui/proc-macro/issue-83510.rs diff --git a/src/test/ui/proc-macro/issue-83510.stderr b/tests/ui/proc-macro/issue-83510.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-83510.stderr rename to tests/ui/proc-macro/issue-83510.stderr diff --git a/src/test/ui/proc-macro/issue-86781-bad-inner-doc.fixed b/tests/ui/proc-macro/issue-86781-bad-inner-doc.fixed similarity index 100% rename from src/test/ui/proc-macro/issue-86781-bad-inner-doc.fixed rename to tests/ui/proc-macro/issue-86781-bad-inner-doc.fixed diff --git a/src/test/ui/proc-macro/issue-86781-bad-inner-doc.rs b/tests/ui/proc-macro/issue-86781-bad-inner-doc.rs similarity index 100% rename from src/test/ui/proc-macro/issue-86781-bad-inner-doc.rs rename to tests/ui/proc-macro/issue-86781-bad-inner-doc.rs diff --git a/src/test/ui/proc-macro/issue-86781-bad-inner-doc.stderr b/tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-86781-bad-inner-doc.stderr rename to tests/ui/proc-macro/issue-86781-bad-inner-doc.stderr diff --git a/src/test/ui/proc-macro/issue-91800.rs b/tests/ui/proc-macro/issue-91800.rs similarity index 100% rename from src/test/ui/proc-macro/issue-91800.rs rename to tests/ui/proc-macro/issue-91800.rs diff --git a/src/test/ui/proc-macro/issue-91800.stderr b/tests/ui/proc-macro/issue-91800.stderr similarity index 100% rename from src/test/ui/proc-macro/issue-91800.stderr rename to tests/ui/proc-macro/issue-91800.stderr diff --git a/src/test/ui/proc-macro/item-error.rs b/tests/ui/proc-macro/item-error.rs similarity index 100% rename from src/test/ui/proc-macro/item-error.rs rename to tests/ui/proc-macro/item-error.rs diff --git a/src/test/ui/proc-macro/item-error.stderr b/tests/ui/proc-macro/item-error.stderr similarity index 100% rename from src/test/ui/proc-macro/item-error.stderr rename to tests/ui/proc-macro/item-error.stderr diff --git a/src/test/ui/proc-macro/keep-expr-tokens.rs b/tests/ui/proc-macro/keep-expr-tokens.rs similarity index 100% rename from src/test/ui/proc-macro/keep-expr-tokens.rs rename to tests/ui/proc-macro/keep-expr-tokens.rs diff --git a/src/test/ui/proc-macro/keep-expr-tokens.stderr b/tests/ui/proc-macro/keep-expr-tokens.stderr similarity index 100% rename from src/test/ui/proc-macro/keep-expr-tokens.stderr rename to tests/ui/proc-macro/keep-expr-tokens.stderr diff --git a/src/test/ui/proc-macro/keep-expr-tokens.stdout b/tests/ui/proc-macro/keep-expr-tokens.stdout similarity index 100% rename from src/test/ui/proc-macro/keep-expr-tokens.stdout rename to tests/ui/proc-macro/keep-expr-tokens.stdout diff --git a/src/test/ui/proc-macro/lifetimes-rpass.rs b/tests/ui/proc-macro/lifetimes-rpass.rs similarity index 100% rename from src/test/ui/proc-macro/lifetimes-rpass.rs rename to tests/ui/proc-macro/lifetimes-rpass.rs diff --git a/src/test/ui/proc-macro/lifetimes.rs b/tests/ui/proc-macro/lifetimes.rs similarity index 100% rename from src/test/ui/proc-macro/lifetimes.rs rename to tests/ui/proc-macro/lifetimes.rs diff --git a/src/test/ui/proc-macro/lifetimes.stderr b/tests/ui/proc-macro/lifetimes.stderr similarity index 100% rename from src/test/ui/proc-macro/lifetimes.stderr rename to tests/ui/proc-macro/lifetimes.stderr diff --git a/src/test/ui/proc-macro/lints_in_proc_macros.rs b/tests/ui/proc-macro/lints_in_proc_macros.rs similarity index 100% rename from src/test/ui/proc-macro/lints_in_proc_macros.rs rename to tests/ui/proc-macro/lints_in_proc_macros.rs diff --git a/src/test/ui/proc-macro/lints_in_proc_macros.stderr b/tests/ui/proc-macro/lints_in_proc_macros.stderr similarity index 100% rename from src/test/ui/proc-macro/lints_in_proc_macros.stderr rename to tests/ui/proc-macro/lints_in_proc_macros.stderr diff --git a/src/test/ui/proc-macro/load-panic-backtrace.rs b/tests/ui/proc-macro/load-panic-backtrace.rs similarity index 100% rename from src/test/ui/proc-macro/load-panic-backtrace.rs rename to tests/ui/proc-macro/load-panic-backtrace.rs diff --git a/src/test/ui/proc-macro/load-panic-backtrace.stderr b/tests/ui/proc-macro/load-panic-backtrace.stderr similarity index 100% rename from src/test/ui/proc-macro/load-panic-backtrace.stderr rename to tests/ui/proc-macro/load-panic-backtrace.stderr diff --git a/src/test/ui/proc-macro/load-panic.rs b/tests/ui/proc-macro/load-panic.rs similarity index 100% rename from src/test/ui/proc-macro/load-panic.rs rename to tests/ui/proc-macro/load-panic.rs diff --git a/src/test/ui/proc-macro/load-panic.stderr b/tests/ui/proc-macro/load-panic.stderr similarity index 100% rename from src/test/ui/proc-macro/load-panic.stderr rename to tests/ui/proc-macro/load-panic.stderr diff --git a/src/test/ui/proc-macro/load-two.rs b/tests/ui/proc-macro/load-two.rs similarity index 100% rename from src/test/ui/proc-macro/load-two.rs rename to tests/ui/proc-macro/load-two.rs diff --git a/src/test/ui/proc-macro/macro-brackets.rs b/tests/ui/proc-macro/macro-brackets.rs similarity index 100% rename from src/test/ui/proc-macro/macro-brackets.rs rename to tests/ui/proc-macro/macro-brackets.rs diff --git a/src/test/ui/proc-macro/macro-brackets.stderr b/tests/ui/proc-macro/macro-brackets.stderr similarity index 100% rename from src/test/ui/proc-macro/macro-brackets.stderr rename to tests/ui/proc-macro/macro-brackets.stderr diff --git a/src/test/ui/proc-macro/macro-crate-multi-decorator.rs b/tests/ui/proc-macro/macro-crate-multi-decorator.rs similarity index 100% rename from src/test/ui/proc-macro/macro-crate-multi-decorator.rs rename to tests/ui/proc-macro/macro-crate-multi-decorator.rs diff --git a/src/test/ui/proc-macro/macro-namespace-reserved-2.rs b/tests/ui/proc-macro/macro-namespace-reserved-2.rs similarity index 100% rename from src/test/ui/proc-macro/macro-namespace-reserved-2.rs rename to tests/ui/proc-macro/macro-namespace-reserved-2.rs diff --git a/src/test/ui/proc-macro/macro-namespace-reserved-2.stderr b/tests/ui/proc-macro/macro-namespace-reserved-2.stderr similarity index 100% rename from src/test/ui/proc-macro/macro-namespace-reserved-2.stderr rename to tests/ui/proc-macro/macro-namespace-reserved-2.stderr diff --git a/src/test/ui/proc-macro/macro-namespace-reserved.rs b/tests/ui/proc-macro/macro-namespace-reserved.rs similarity index 100% rename from src/test/ui/proc-macro/macro-namespace-reserved.rs rename to tests/ui/proc-macro/macro-namespace-reserved.rs diff --git a/src/test/ui/proc-macro/macro-namespace-reserved.stderr b/tests/ui/proc-macro/macro-namespace-reserved.stderr similarity index 100% rename from src/test/ui/proc-macro/macro-namespace-reserved.stderr rename to tests/ui/proc-macro/macro-namespace-reserved.stderr diff --git a/src/test/ui/proc-macro/macro-quote-cond.rs b/tests/ui/proc-macro/macro-quote-cond.rs similarity index 100% rename from src/test/ui/proc-macro/macro-quote-cond.rs rename to tests/ui/proc-macro/macro-quote-cond.rs diff --git a/src/test/ui/proc-macro/macro-rules-derive-cfg.rs b/tests/ui/proc-macro/macro-rules-derive-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/macro-rules-derive-cfg.rs rename to tests/ui/proc-macro/macro-rules-derive-cfg.rs diff --git a/src/test/ui/proc-macro/macro-rules-derive-cfg.stdout b/tests/ui/proc-macro/macro-rules-derive-cfg.stdout similarity index 100% rename from src/test/ui/proc-macro/macro-rules-derive-cfg.stdout rename to tests/ui/proc-macro/macro-rules-derive-cfg.stdout diff --git a/src/test/ui/proc-macro/macro-rules-derive.rs b/tests/ui/proc-macro/macro-rules-derive.rs similarity index 100% rename from src/test/ui/proc-macro/macro-rules-derive.rs rename to tests/ui/proc-macro/macro-rules-derive.rs diff --git a/src/test/ui/proc-macro/macro-rules-derive.stderr b/tests/ui/proc-macro/macro-rules-derive.stderr similarity index 100% rename from src/test/ui/proc-macro/macro-rules-derive.stderr rename to tests/ui/proc-macro/macro-rules-derive.stderr diff --git a/src/test/ui/proc-macro/macro-use-attr.rs b/tests/ui/proc-macro/macro-use-attr.rs similarity index 100% rename from src/test/ui/proc-macro/macro-use-attr.rs rename to tests/ui/proc-macro/macro-use-attr.rs diff --git a/src/test/ui/proc-macro/macro-use-bang.rs b/tests/ui/proc-macro/macro-use-bang.rs similarity index 100% rename from src/test/ui/proc-macro/macro-use-bang.rs rename to tests/ui/proc-macro/macro-use-bang.rs diff --git a/src/test/ui/proc-macro/macros-in-extern-derive.rs b/tests/ui/proc-macro/macros-in-extern-derive.rs similarity index 100% rename from src/test/ui/proc-macro/macros-in-extern-derive.rs rename to tests/ui/proc-macro/macros-in-extern-derive.rs diff --git a/src/test/ui/proc-macro/macros-in-extern-derive.stderr b/tests/ui/proc-macro/macros-in-extern-derive.stderr similarity index 100% rename from src/test/ui/proc-macro/macros-in-extern-derive.stderr rename to tests/ui/proc-macro/macros-in-extern-derive.stderr diff --git a/src/test/ui/proc-macro/macros-in-extern.rs b/tests/ui/proc-macro/macros-in-extern.rs similarity index 100% rename from src/test/ui/proc-macro/macros-in-extern.rs rename to tests/ui/proc-macro/macros-in-extern.rs diff --git a/src/test/ui/proc-macro/macros-in-type.rs b/tests/ui/proc-macro/macros-in-type.rs similarity index 100% rename from src/test/ui/proc-macro/macros-in-type.rs rename to tests/ui/proc-macro/macros-in-type.rs diff --git a/src/test/ui/proc-macro/meta-delim.rs b/tests/ui/proc-macro/meta-delim.rs similarity index 100% rename from src/test/ui/proc-macro/meta-delim.rs rename to tests/ui/proc-macro/meta-delim.rs diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.rs b/tests/ui/proc-macro/meta-macro-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/meta-macro-hygiene.rs rename to tests/ui/proc-macro/meta-macro-hygiene.rs diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.stdout b/tests/ui/proc-macro/meta-macro-hygiene.stdout similarity index 100% rename from src/test/ui/proc-macro/meta-macro-hygiene.stdout rename to tests/ui/proc-macro/meta-macro-hygiene.stdout diff --git a/src/test/ui/proc-macro/meta-macro.rs b/tests/ui/proc-macro/meta-macro.rs similarity index 100% rename from src/test/ui/proc-macro/meta-macro.rs rename to tests/ui/proc-macro/meta-macro.rs diff --git a/src/test/ui/proc-macro/meta-macro.stdout b/tests/ui/proc-macro/meta-macro.stdout similarity index 100% rename from src/test/ui/proc-macro/meta-macro.stdout rename to tests/ui/proc-macro/meta-macro.stdout diff --git a/src/test/ui/proc-macro/mixed-site-span.rs b/tests/ui/proc-macro/mixed-site-span.rs similarity index 100% rename from src/test/ui/proc-macro/mixed-site-span.rs rename to tests/ui/proc-macro/mixed-site-span.rs diff --git a/src/test/ui/proc-macro/mixed-site-span.stderr b/tests/ui/proc-macro/mixed-site-span.stderr similarity index 100% rename from src/test/ui/proc-macro/mixed-site-span.stderr rename to tests/ui/proc-macro/mixed-site-span.stderr diff --git a/src/test/ui/proc-macro/modify-ast.rs b/tests/ui/proc-macro/modify-ast.rs similarity index 100% rename from src/test/ui/proc-macro/modify-ast.rs rename to tests/ui/proc-macro/modify-ast.rs diff --git a/src/test/ui/proc-macro/module.rs b/tests/ui/proc-macro/module.rs similarity index 100% rename from src/test/ui/proc-macro/module.rs rename to tests/ui/proc-macro/module.rs diff --git a/src/test/ui/proc-macro/module_with_attrs.rs b/tests/ui/proc-macro/module_with_attrs.rs similarity index 100% rename from src/test/ui/proc-macro/module_with_attrs.rs rename to tests/ui/proc-macro/module_with_attrs.rs diff --git a/src/test/ui/proc-macro/multispan.rs b/tests/ui/proc-macro/multispan.rs similarity index 100% rename from src/test/ui/proc-macro/multispan.rs rename to tests/ui/proc-macro/multispan.rs diff --git a/src/test/ui/proc-macro/multispan.stderr b/tests/ui/proc-macro/multispan.stderr similarity index 100% rename from src/test/ui/proc-macro/multispan.stderr rename to tests/ui/proc-macro/multispan.stderr diff --git a/src/test/ui/proc-macro/negative-token.rs b/tests/ui/proc-macro/negative-token.rs similarity index 100% rename from src/test/ui/proc-macro/negative-token.rs rename to tests/ui/proc-macro/negative-token.rs diff --git a/src/test/ui/proc-macro/nested-derive-cfg.rs b/tests/ui/proc-macro/nested-derive-cfg.rs similarity index 100% rename from src/test/ui/proc-macro/nested-derive-cfg.rs rename to tests/ui/proc-macro/nested-derive-cfg.rs diff --git a/src/test/ui/proc-macro/nested-derive-cfg.stdout b/tests/ui/proc-macro/nested-derive-cfg.stdout similarity index 100% rename from src/test/ui/proc-macro/nested-derive-cfg.stdout rename to tests/ui/proc-macro/nested-derive-cfg.stdout diff --git a/src/test/ui/proc-macro/nested-item-spans.rs b/tests/ui/proc-macro/nested-item-spans.rs similarity index 100% rename from src/test/ui/proc-macro/nested-item-spans.rs rename to tests/ui/proc-macro/nested-item-spans.rs diff --git a/src/test/ui/proc-macro/nested-item-spans.stderr b/tests/ui/proc-macro/nested-item-spans.stderr similarity index 100% rename from src/test/ui/proc-macro/nested-item-spans.stderr rename to tests/ui/proc-macro/nested-item-spans.stderr diff --git a/src/test/ui/proc-macro/nested-macro-rules.rs b/tests/ui/proc-macro/nested-macro-rules.rs similarity index 100% rename from src/test/ui/proc-macro/nested-macro-rules.rs rename to tests/ui/proc-macro/nested-macro-rules.rs diff --git a/src/test/ui/proc-macro/nested-macro-rules.stdout b/tests/ui/proc-macro/nested-macro-rules.stdout similarity index 100% rename from src/test/ui/proc-macro/nested-macro-rules.stdout rename to tests/ui/proc-macro/nested-macro-rules.stdout diff --git a/src/test/ui/proc-macro/nested-nonterminal-tokens.rs b/tests/ui/proc-macro/nested-nonterminal-tokens.rs similarity index 100% rename from src/test/ui/proc-macro/nested-nonterminal-tokens.rs rename to tests/ui/proc-macro/nested-nonterminal-tokens.rs diff --git a/src/test/ui/proc-macro/nested-nonterminal-tokens.stdout b/tests/ui/proc-macro/nested-nonterminal-tokens.stdout similarity index 100% rename from src/test/ui/proc-macro/nested-nonterminal-tokens.stdout rename to tests/ui/proc-macro/nested-nonterminal-tokens.stdout diff --git a/src/test/ui/proc-macro/no-macro-use-attr.rs b/tests/ui/proc-macro/no-macro-use-attr.rs similarity index 100% rename from src/test/ui/proc-macro/no-macro-use-attr.rs rename to tests/ui/proc-macro/no-macro-use-attr.rs diff --git a/src/test/ui/proc-macro/no-macro-use-attr.stderr b/tests/ui/proc-macro/no-macro-use-attr.stderr similarity index 100% rename from src/test/ui/proc-macro/no-macro-use-attr.stderr rename to tests/ui/proc-macro/no-macro-use-attr.stderr diff --git a/src/test/ui/proc-macro/no-missing-docs.rs b/tests/ui/proc-macro/no-missing-docs.rs similarity index 100% rename from src/test/ui/proc-macro/no-missing-docs.rs rename to tests/ui/proc-macro/no-missing-docs.rs diff --git a/src/test/ui/proc-macro/nodelim-groups.rs b/tests/ui/proc-macro/nodelim-groups.rs similarity index 100% rename from src/test/ui/proc-macro/nodelim-groups.rs rename to tests/ui/proc-macro/nodelim-groups.rs diff --git a/src/test/ui/proc-macro/nodelim-groups.stdout b/tests/ui/proc-macro/nodelim-groups.stdout similarity index 100% rename from src/test/ui/proc-macro/nodelim-groups.stdout rename to tests/ui/proc-macro/nodelim-groups.stdout diff --git a/src/test/ui/proc-macro/non-root.rs b/tests/ui/proc-macro/non-root.rs similarity index 100% rename from src/test/ui/proc-macro/non-root.rs rename to tests/ui/proc-macro/non-root.rs diff --git a/src/test/ui/proc-macro/non-root.stderr b/tests/ui/proc-macro/non-root.stderr similarity index 100% rename from src/test/ui/proc-macro/non-root.stderr rename to tests/ui/proc-macro/non-root.stderr diff --git a/src/test/ui/proc-macro/nonterminal-expansion.rs b/tests/ui/proc-macro/nonterminal-expansion.rs similarity index 100% rename from src/test/ui/proc-macro/nonterminal-expansion.rs rename to tests/ui/proc-macro/nonterminal-expansion.rs diff --git a/src/test/ui/proc-macro/nonterminal-expansion.stdout b/tests/ui/proc-macro/nonterminal-expansion.stdout similarity index 100% rename from src/test/ui/proc-macro/nonterminal-expansion.stdout rename to tests/ui/proc-macro/nonterminal-expansion.stdout diff --git a/src/test/ui/proc-macro/nonterminal-recollect-attr.rs b/tests/ui/proc-macro/nonterminal-recollect-attr.rs similarity index 100% rename from src/test/ui/proc-macro/nonterminal-recollect-attr.rs rename to tests/ui/proc-macro/nonterminal-recollect-attr.rs diff --git a/src/test/ui/proc-macro/nonterminal-recollect-attr.stdout b/tests/ui/proc-macro/nonterminal-recollect-attr.stdout similarity index 100% rename from src/test/ui/proc-macro/nonterminal-recollect-attr.stdout rename to tests/ui/proc-macro/nonterminal-recollect-attr.stdout diff --git a/src/test/ui/proc-macro/nonterminal-token-hygiene.rs b/tests/ui/proc-macro/nonterminal-token-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/nonterminal-token-hygiene.rs rename to tests/ui/proc-macro/nonterminal-token-hygiene.rs diff --git a/src/test/ui/proc-macro/nonterminal-token-hygiene.stdout b/tests/ui/proc-macro/nonterminal-token-hygiene.stdout similarity index 100% rename from src/test/ui/proc-macro/nonterminal-token-hygiene.stdout rename to tests/ui/proc-macro/nonterminal-token-hygiene.stdout diff --git a/src/test/ui/proc-macro/not-joint.rs b/tests/ui/proc-macro/not-joint.rs similarity index 100% rename from src/test/ui/proc-macro/not-joint.rs rename to tests/ui/proc-macro/not-joint.rs diff --git a/src/test/ui/proc-macro/out-of-line-mod.rs b/tests/ui/proc-macro/out-of-line-mod.rs similarity index 100% rename from src/test/ui/proc-macro/out-of-line-mod.rs rename to tests/ui/proc-macro/out-of-line-mod.rs diff --git a/src/test/ui/proc-macro/outer/inner.rs b/tests/ui/proc-macro/outer/inner.rs similarity index 100% rename from src/test/ui/proc-macro/outer/inner.rs rename to tests/ui/proc-macro/outer/inner.rs diff --git a/src/test/ui/proc-macro/parent-source-spans.rs b/tests/ui/proc-macro/parent-source-spans.rs similarity index 100% rename from src/test/ui/proc-macro/parent-source-spans.rs rename to tests/ui/proc-macro/parent-source-spans.rs diff --git a/src/test/ui/proc-macro/parent-source-spans.stderr b/tests/ui/proc-macro/parent-source-spans.stderr similarity index 100% rename from src/test/ui/proc-macro/parent-source-spans.stderr rename to tests/ui/proc-macro/parent-source-spans.stderr diff --git a/src/test/ui/proc-macro/pretty-print-hack-hide.rs b/tests/ui/proc-macro/pretty-print-hack-hide.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack-hide.rs rename to tests/ui/proc-macro/pretty-print-hack-hide.rs diff --git a/src/test/ui/proc-macro/pretty-print-hack-hide.stdout b/tests/ui/proc-macro/pretty-print-hack-hide.stdout similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack-hide.stdout rename to tests/ui/proc-macro/pretty-print-hack-hide.stdout diff --git a/src/test/ui/proc-macro/pretty-print-hack-show.rs b/tests/ui/proc-macro/pretty-print-hack-show.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack-show.rs rename to tests/ui/proc-macro/pretty-print-hack-show.rs diff --git a/src/test/ui/proc-macro/pretty-print-hack-show.stderr b/tests/ui/proc-macro/pretty-print-hack-show.stderr similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack-show.stderr rename to tests/ui/proc-macro/pretty-print-hack-show.stderr diff --git a/src/test/ui/proc-macro/pretty-print-hack-show.stdout b/tests/ui/proc-macro/pretty-print-hack-show.stdout similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack-show.stdout rename to tests/ui/proc-macro/pretty-print-hack-show.stdout diff --git a/src/test/ui/proc-macro/pretty-print-hack/allsorts-rental-0.5.6/src/lib.rs b/tests/ui/proc-macro/pretty-print-hack/allsorts-rental-0.5.6/src/lib.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack/allsorts-rental-0.5.6/src/lib.rs rename to tests/ui/proc-macro/pretty-print-hack/allsorts-rental-0.5.6/src/lib.rs diff --git a/src/test/ui/proc-macro/pretty-print-hack/rental-0.5.5/src/lib.rs b/tests/ui/proc-macro/pretty-print-hack/rental-0.5.5/src/lib.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack/rental-0.5.5/src/lib.rs rename to tests/ui/proc-macro/pretty-print-hack/rental-0.5.5/src/lib.rs diff --git a/src/test/ui/proc-macro/pretty-print-hack/rental-0.5.6/src/lib.rs b/tests/ui/proc-macro/pretty-print-hack/rental-0.5.6/src/lib.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-hack/rental-0.5.6/src/lib.rs rename to tests/ui/proc-macro/pretty-print-hack/rental-0.5.6/src/lib.rs diff --git a/src/test/ui/proc-macro/pretty-print-tts.rs b/tests/ui/proc-macro/pretty-print-tts.rs similarity index 100% rename from src/test/ui/proc-macro/pretty-print-tts.rs rename to tests/ui/proc-macro/pretty-print-tts.rs diff --git a/src/test/ui/proc-macro/pretty-print-tts.stdout b/tests/ui/proc-macro/pretty-print-tts.stdout similarity index 100% rename from src/test/ui/proc-macro/pretty-print-tts.stdout rename to tests/ui/proc-macro/pretty-print-tts.stdout diff --git a/src/test/ui/proc-macro/proc-macro-attributes.rs b/tests/ui/proc-macro/proc-macro-attributes.rs similarity index 100% rename from src/test/ui/proc-macro/proc-macro-attributes.rs rename to tests/ui/proc-macro/proc-macro-attributes.rs diff --git a/src/test/ui/proc-macro/proc-macro-attributes.stderr b/tests/ui/proc-macro/proc-macro-attributes.stderr similarity index 100% rename from src/test/ui/proc-macro/proc-macro-attributes.stderr rename to tests/ui/proc-macro/proc-macro-attributes.stderr diff --git a/src/test/ui/proc-macro/proc-macro-deprecated-attr.rs b/tests/ui/proc-macro/proc-macro-deprecated-attr.rs similarity index 100% rename from src/test/ui/proc-macro/proc-macro-deprecated-attr.rs rename to tests/ui/proc-macro/proc-macro-deprecated-attr.rs diff --git a/src/test/ui/proc-macro/proc-macro-gates.rs b/tests/ui/proc-macro/proc-macro-gates.rs similarity index 100% rename from src/test/ui/proc-macro/proc-macro-gates.rs rename to tests/ui/proc-macro/proc-macro-gates.rs diff --git a/src/test/ui/proc-macro/proc-macro-gates.stderr b/tests/ui/proc-macro/proc-macro-gates.stderr similarity index 100% rename from src/test/ui/proc-macro/proc-macro-gates.stderr rename to tests/ui/proc-macro/proc-macro-gates.stderr diff --git a/src/test/ui/proc-macro/proc-macro-gates2.rs b/tests/ui/proc-macro/proc-macro-gates2.rs similarity index 100% rename from src/test/ui/proc-macro/proc-macro-gates2.rs rename to tests/ui/proc-macro/proc-macro-gates2.rs diff --git a/src/test/ui/proc-macro/proc-macro-gates2.stderr b/tests/ui/proc-macro/proc-macro-gates2.stderr similarity index 100% rename from src/test/ui/proc-macro/proc-macro-gates2.stderr rename to tests/ui/proc-macro/proc-macro-gates2.stderr diff --git a/src/test/ui/proc-macro/pub-at-crate-root.rs b/tests/ui/proc-macro/pub-at-crate-root.rs similarity index 100% rename from src/test/ui/proc-macro/pub-at-crate-root.rs rename to tests/ui/proc-macro/pub-at-crate-root.rs diff --git a/src/test/ui/proc-macro/pub-at-crate-root.stderr b/tests/ui/proc-macro/pub-at-crate-root.stderr similarity index 100% rename from src/test/ui/proc-macro/pub-at-crate-root.stderr rename to tests/ui/proc-macro/pub-at-crate-root.stderr diff --git a/src/test/ui/proc-macro/quote-debug.rs b/tests/ui/proc-macro/quote-debug.rs similarity index 100% rename from src/test/ui/proc-macro/quote-debug.rs rename to tests/ui/proc-macro/quote-debug.rs diff --git a/src/test/ui/proc-macro/quote-debug.stdout b/tests/ui/proc-macro/quote-debug.stdout similarity index 100% rename from src/test/ui/proc-macro/quote-debug.stdout rename to tests/ui/proc-macro/quote-debug.stdout diff --git a/src/test/ui/proc-macro/raw-ident.rs b/tests/ui/proc-macro/raw-ident.rs similarity index 100% rename from src/test/ui/proc-macro/raw-ident.rs rename to tests/ui/proc-macro/raw-ident.rs diff --git a/src/test/ui/proc-macro/raw-ident.stderr b/tests/ui/proc-macro/raw-ident.stderr similarity index 100% rename from src/test/ui/proc-macro/raw-ident.stderr rename to tests/ui/proc-macro/raw-ident.stderr diff --git a/src/test/ui/proc-macro/reserved-macro-names.rs b/tests/ui/proc-macro/reserved-macro-names.rs similarity index 100% rename from src/test/ui/proc-macro/reserved-macro-names.rs rename to tests/ui/proc-macro/reserved-macro-names.rs diff --git a/src/test/ui/proc-macro/reserved-macro-names.stderr b/tests/ui/proc-macro/reserved-macro-names.stderr similarity index 100% rename from src/test/ui/proc-macro/reserved-macro-names.stderr rename to tests/ui/proc-macro/reserved-macro-names.stderr diff --git a/src/test/ui/proc-macro/resolve-error.rs b/tests/ui/proc-macro/resolve-error.rs similarity index 100% rename from src/test/ui/proc-macro/resolve-error.rs rename to tests/ui/proc-macro/resolve-error.rs diff --git a/src/test/ui/proc-macro/resolve-error.stderr b/tests/ui/proc-macro/resolve-error.stderr similarity index 100% rename from src/test/ui/proc-macro/resolve-error.stderr rename to tests/ui/proc-macro/resolve-error.stderr diff --git a/src/test/ui/proc-macro/resolved-located-at.rs b/tests/ui/proc-macro/resolved-located-at.rs similarity index 100% rename from src/test/ui/proc-macro/resolved-located-at.rs rename to tests/ui/proc-macro/resolved-located-at.rs diff --git a/src/test/ui/proc-macro/resolved-located-at.stderr b/tests/ui/proc-macro/resolved-located-at.stderr similarity index 100% rename from src/test/ui/proc-macro/resolved-located-at.stderr rename to tests/ui/proc-macro/resolved-located-at.stderr diff --git a/src/test/ui/proc-macro/shadow.rs b/tests/ui/proc-macro/shadow.rs similarity index 100% rename from src/test/ui/proc-macro/shadow.rs rename to tests/ui/proc-macro/shadow.rs diff --git a/src/test/ui/proc-macro/shadow.stderr b/tests/ui/proc-macro/shadow.stderr similarity index 100% rename from src/test/ui/proc-macro/shadow.stderr rename to tests/ui/proc-macro/shadow.stderr diff --git a/src/test/ui/proc-macro/signature.rs b/tests/ui/proc-macro/signature.rs similarity index 100% rename from src/test/ui/proc-macro/signature.rs rename to tests/ui/proc-macro/signature.rs diff --git a/src/test/ui/proc-macro/signature.stderr b/tests/ui/proc-macro/signature.stderr similarity index 100% rename from src/test/ui/proc-macro/signature.stderr rename to tests/ui/proc-macro/signature.stderr diff --git a/src/test/ui/proc-macro/smoke.rs b/tests/ui/proc-macro/smoke.rs similarity index 100% rename from src/test/ui/proc-macro/smoke.rs rename to tests/ui/proc-macro/smoke.rs diff --git a/src/test/ui/proc-macro/span-absolute-posititions.rs b/tests/ui/proc-macro/span-absolute-posititions.rs similarity index 100% rename from src/test/ui/proc-macro/span-absolute-posititions.rs rename to tests/ui/proc-macro/span-absolute-posititions.rs diff --git a/src/test/ui/proc-macro/span-absolute-posititions.stderr b/tests/ui/proc-macro/span-absolute-posititions.stderr similarity index 100% rename from src/test/ui/proc-macro/span-absolute-posititions.stderr rename to tests/ui/proc-macro/span-absolute-posititions.stderr diff --git a/src/test/ui/proc-macro/span-api-tests.rs b/tests/ui/proc-macro/span-api-tests.rs similarity index 100% rename from src/test/ui/proc-macro/span-api-tests.rs rename to tests/ui/proc-macro/span-api-tests.rs diff --git a/src/test/ui/proc-macro/span-from-proc-macro.rs b/tests/ui/proc-macro/span-from-proc-macro.rs similarity index 100% rename from src/test/ui/proc-macro/span-from-proc-macro.rs rename to tests/ui/proc-macro/span-from-proc-macro.rs diff --git a/src/test/ui/proc-macro/span-from-proc-macro.stderr b/tests/ui/proc-macro/span-from-proc-macro.stderr similarity index 100% rename from src/test/ui/proc-macro/span-from-proc-macro.stderr rename to tests/ui/proc-macro/span-from-proc-macro.stderr diff --git a/src/test/ui/proc-macro/span-preservation.rs b/tests/ui/proc-macro/span-preservation.rs similarity index 100% rename from src/test/ui/proc-macro/span-preservation.rs rename to tests/ui/proc-macro/span-preservation.rs diff --git a/src/test/ui/proc-macro/span-preservation.stderr b/tests/ui/proc-macro/span-preservation.stderr similarity index 100% rename from src/test/ui/proc-macro/span-preservation.stderr rename to tests/ui/proc-macro/span-preservation.stderr diff --git a/src/test/ui/proc-macro/struct-field-macro.rs b/tests/ui/proc-macro/struct-field-macro.rs similarity index 100% rename from src/test/ui/proc-macro/struct-field-macro.rs rename to tests/ui/proc-macro/struct-field-macro.rs diff --git a/src/test/ui/proc-macro/subspan.rs b/tests/ui/proc-macro/subspan.rs similarity index 100% rename from src/test/ui/proc-macro/subspan.rs rename to tests/ui/proc-macro/subspan.rs diff --git a/src/test/ui/proc-macro/subspan.stderr b/tests/ui/proc-macro/subspan.stderr similarity index 100% rename from src/test/ui/proc-macro/subspan.stderr rename to tests/ui/proc-macro/subspan.stderr diff --git a/src/test/ui/proc-macro/test.rs b/tests/ui/proc-macro/test.rs similarity index 100% rename from src/test/ui/proc-macro/test.rs rename to tests/ui/proc-macro/test.rs diff --git a/src/test/ui/proc-macro/three-equals.rs b/tests/ui/proc-macro/three-equals.rs similarity index 100% rename from src/test/ui/proc-macro/three-equals.rs rename to tests/ui/proc-macro/three-equals.rs diff --git a/src/test/ui/proc-macro/three-equals.stderr b/tests/ui/proc-macro/three-equals.stderr similarity index 100% rename from src/test/ui/proc-macro/three-equals.stderr rename to tests/ui/proc-macro/three-equals.stderr diff --git a/src/test/ui/proc-macro/trailing-plus.rs b/tests/ui/proc-macro/trailing-plus.rs similarity index 100% rename from src/test/ui/proc-macro/trailing-plus.rs rename to tests/ui/proc-macro/trailing-plus.rs diff --git a/src/test/ui/proc-macro/trailing-plus.stdout b/tests/ui/proc-macro/trailing-plus.stdout similarity index 100% rename from src/test/ui/proc-macro/trailing-plus.stdout rename to tests/ui/proc-macro/trailing-plus.stdout diff --git a/src/test/ui/proc-macro/trait-fn-args-2015.rs b/tests/ui/proc-macro/trait-fn-args-2015.rs similarity index 100% rename from src/test/ui/proc-macro/trait-fn-args-2015.rs rename to tests/ui/proc-macro/trait-fn-args-2015.rs diff --git a/src/test/ui/proc-macro/two-crate-types-1.rs b/tests/ui/proc-macro/two-crate-types-1.rs similarity index 100% rename from src/test/ui/proc-macro/two-crate-types-1.rs rename to tests/ui/proc-macro/two-crate-types-1.rs diff --git a/src/test/ui/proc-macro/two-crate-types-1.stderr b/tests/ui/proc-macro/two-crate-types-1.stderr similarity index 100% rename from src/test/ui/proc-macro/two-crate-types-1.stderr rename to tests/ui/proc-macro/two-crate-types-1.stderr diff --git a/src/test/ui/proc-macro/two-crate-types-2.rs b/tests/ui/proc-macro/two-crate-types-2.rs similarity index 100% rename from src/test/ui/proc-macro/two-crate-types-2.rs rename to tests/ui/proc-macro/two-crate-types-2.rs diff --git a/src/test/ui/proc-macro/two-crate-types-2.stderr b/tests/ui/proc-macro/two-crate-types-2.stderr similarity index 100% rename from src/test/ui/proc-macro/two-crate-types-2.stderr rename to tests/ui/proc-macro/two-crate-types-2.stderr diff --git a/src/test/ui/proc-macro/unsafe-foreign-mod.rs b/tests/ui/proc-macro/unsafe-foreign-mod.rs similarity index 100% rename from src/test/ui/proc-macro/unsafe-foreign-mod.rs rename to tests/ui/proc-macro/unsafe-foreign-mod.rs diff --git a/src/test/ui/proc-macro/unsafe-mod.rs b/tests/ui/proc-macro/unsafe-mod.rs similarity index 100% rename from src/test/ui/proc-macro/unsafe-mod.rs rename to tests/ui/proc-macro/unsafe-mod.rs diff --git a/src/test/ui/proc-macro/visibility-path.rs b/tests/ui/proc-macro/visibility-path.rs similarity index 100% rename from src/test/ui/proc-macro/visibility-path.rs rename to tests/ui/proc-macro/visibility-path.rs diff --git a/src/test/ui/proc-macro/visibility-path.stderr b/tests/ui/proc-macro/visibility-path.stderr similarity index 100% rename from src/test/ui/proc-macro/visibility-path.stderr rename to tests/ui/proc-macro/visibility-path.stderr diff --git a/src/test/ui/proc-macro/weird-braces.rs b/tests/ui/proc-macro/weird-braces.rs similarity index 100% rename from src/test/ui/proc-macro/weird-braces.rs rename to tests/ui/proc-macro/weird-braces.rs diff --git a/src/test/ui/proc-macro/weird-braces.stdout b/tests/ui/proc-macro/weird-braces.stdout similarity index 100% rename from src/test/ui/proc-macro/weird-braces.stdout rename to tests/ui/proc-macro/weird-braces.stdout diff --git a/src/test/ui/proc-macro/weird-hygiene.rs b/tests/ui/proc-macro/weird-hygiene.rs similarity index 100% rename from src/test/ui/proc-macro/weird-hygiene.rs rename to tests/ui/proc-macro/weird-hygiene.rs diff --git a/src/test/ui/proc-macro/weird-hygiene.stderr b/tests/ui/proc-macro/weird-hygiene.stderr similarity index 100% rename from src/test/ui/proc-macro/weird-hygiene.stderr rename to tests/ui/proc-macro/weird-hygiene.stderr diff --git a/src/test/ui/process-termination/process-termination-blocking-io.rs b/tests/ui/process-termination/process-termination-blocking-io.rs similarity index 100% rename from src/test/ui/process-termination/process-termination-blocking-io.rs rename to tests/ui/process-termination/process-termination-blocking-io.rs diff --git a/src/test/ui/process-termination/process-termination-simple.rs b/tests/ui/process-termination/process-termination-simple.rs similarity index 100% rename from src/test/ui/process-termination/process-termination-simple.rs rename to tests/ui/process-termination/process-termination-simple.rs diff --git a/src/test/ui/process/core-run-destroy.rs b/tests/ui/process/core-run-destroy.rs similarity index 100% rename from src/test/ui/process/core-run-destroy.rs rename to tests/ui/process/core-run-destroy.rs diff --git a/src/test/ui/process/fds-are-cloexec.rs b/tests/ui/process/fds-are-cloexec.rs similarity index 100% rename from src/test/ui/process/fds-are-cloexec.rs rename to tests/ui/process/fds-are-cloexec.rs diff --git a/src/test/ui/process/issue-13304.rs b/tests/ui/process/issue-13304.rs similarity index 100% rename from src/test/ui/process/issue-13304.rs rename to tests/ui/process/issue-13304.rs diff --git a/src/test/ui/process/issue-14456.rs b/tests/ui/process/issue-14456.rs similarity index 100% rename from src/test/ui/process/issue-14456.rs rename to tests/ui/process/issue-14456.rs diff --git a/src/test/ui/process/issue-14940.rs b/tests/ui/process/issue-14940.rs similarity index 100% rename from src/test/ui/process/issue-14940.rs rename to tests/ui/process/issue-14940.rs diff --git a/src/test/ui/process/issue-16272.rs b/tests/ui/process/issue-16272.rs similarity index 100% rename from src/test/ui/process/issue-16272.rs rename to tests/ui/process/issue-16272.rs diff --git a/src/test/ui/process/issue-20091.rs b/tests/ui/process/issue-20091.rs similarity index 100% rename from src/test/ui/process/issue-20091.rs rename to tests/ui/process/issue-20091.rs diff --git a/src/test/ui/process/multi-panic.rs b/tests/ui/process/multi-panic.rs similarity index 100% rename from src/test/ui/process/multi-panic.rs rename to tests/ui/process/multi-panic.rs diff --git a/src/test/ui/process/no-stdio.rs b/tests/ui/process/no-stdio.rs similarity index 100% rename from src/test/ui/process/no-stdio.rs rename to tests/ui/process/no-stdio.rs diff --git a/src/test/ui/process/nofile-limit.rs b/tests/ui/process/nofile-limit.rs similarity index 100% rename from src/test/ui/process/nofile-limit.rs rename to tests/ui/process/nofile-limit.rs diff --git a/src/test/ui/process/process-envs.rs b/tests/ui/process/process-envs.rs similarity index 100% rename from src/test/ui/process/process-envs.rs rename to tests/ui/process/process-envs.rs diff --git a/src/test/ui/process/process-exit.rs b/tests/ui/process/process-exit.rs similarity index 100% rename from src/test/ui/process/process-exit.rs rename to tests/ui/process/process-exit.rs diff --git a/src/test/ui/process/process-panic-after-fork.rs b/tests/ui/process/process-panic-after-fork.rs similarity index 100% rename from src/test/ui/process/process-panic-after-fork.rs rename to tests/ui/process/process-panic-after-fork.rs diff --git a/src/test/ui/process/process-remove-from-env.rs b/tests/ui/process/process-remove-from-env.rs similarity index 100% rename from src/test/ui/process/process-remove-from-env.rs rename to tests/ui/process/process-remove-from-env.rs diff --git a/src/test/ui/process/process-sigpipe.rs b/tests/ui/process/process-sigpipe.rs similarity index 100% rename from src/test/ui/process/process-sigpipe.rs rename to tests/ui/process/process-sigpipe.rs diff --git a/src/test/ui/process/process-spawn-nonexistent.rs b/tests/ui/process/process-spawn-nonexistent.rs similarity index 100% rename from src/test/ui/process/process-spawn-nonexistent.rs rename to tests/ui/process/process-spawn-nonexistent.rs diff --git a/src/test/ui/process/process-spawn-with-unicode-params.rs b/tests/ui/process/process-spawn-with-unicode-params.rs similarity index 100% rename from src/test/ui/process/process-spawn-with-unicode-params.rs rename to tests/ui/process/process-spawn-with-unicode-params.rs diff --git a/src/test/ui/process/process-status-inherits-stdin.rs b/tests/ui/process/process-status-inherits-stdin.rs similarity index 100% rename from src/test/ui/process/process-status-inherits-stdin.rs rename to tests/ui/process/process-status-inherits-stdin.rs diff --git a/src/test/ui/process/signal-exit-status.rs b/tests/ui/process/signal-exit-status.rs similarity index 100% rename from src/test/ui/process/signal-exit-status.rs rename to tests/ui/process/signal-exit-status.rs diff --git a/src/test/ui/process/sigpipe-should-be-ignored.rs b/tests/ui/process/sigpipe-should-be-ignored.rs similarity index 100% rename from src/test/ui/process/sigpipe-should-be-ignored.rs rename to tests/ui/process/sigpipe-should-be-ignored.rs diff --git a/src/test/ui/process/tls-exit-status.rs b/tests/ui/process/tls-exit-status.rs similarity index 100% rename from src/test/ui/process/tls-exit-status.rs rename to tests/ui/process/tls-exit-status.rs diff --git a/src/test/ui/process/try-wait.rs b/tests/ui/process/try-wait.rs similarity index 100% rename from src/test/ui/process/try-wait.rs rename to tests/ui/process/try-wait.rs diff --git a/src/test/ui/project-cache-issue-31849.rs b/tests/ui/project-cache-issue-31849.rs similarity index 100% rename from src/test/ui/project-cache-issue-31849.rs rename to tests/ui/project-cache-issue-31849.rs diff --git a/src/test/ui/ptr-coercion-rpass.rs b/tests/ui/ptr-coercion-rpass.rs similarity index 100% rename from src/test/ui/ptr-coercion-rpass.rs rename to tests/ui/ptr-coercion-rpass.rs diff --git a/src/test/ui/ptr-coercion.rs b/tests/ui/ptr-coercion.rs similarity index 100% rename from src/test/ui/ptr-coercion.rs rename to tests/ui/ptr-coercion.rs diff --git a/src/test/ui/ptr-coercion.stderr b/tests/ui/ptr-coercion.stderr similarity index 100% rename from src/test/ui/ptr-coercion.stderr rename to tests/ui/ptr-coercion.stderr diff --git a/src/test/ui/ptr_ops/issue-80309-safe.rs b/tests/ui/ptr_ops/issue-80309-safe.rs similarity index 100% rename from src/test/ui/ptr_ops/issue-80309-safe.rs rename to tests/ui/ptr_ops/issue-80309-safe.rs diff --git a/src/test/ui/ptr_ops/issue-80309.rs b/tests/ui/ptr_ops/issue-80309.rs similarity index 100% rename from src/test/ui/ptr_ops/issue-80309.rs rename to tests/ui/ptr_ops/issue-80309.rs diff --git a/src/test/ui/pub/issue-33174-restricted-type-in-public-interface.rs b/tests/ui/pub/issue-33174-restricted-type-in-public-interface.rs similarity index 100% rename from src/test/ui/pub/issue-33174-restricted-type-in-public-interface.rs rename to tests/ui/pub/issue-33174-restricted-type-in-public-interface.rs diff --git a/src/test/ui/pub/issue-33174-restricted-type-in-public-interface.stderr b/tests/ui/pub/issue-33174-restricted-type-in-public-interface.stderr similarity index 100% rename from src/test/ui/pub/issue-33174-restricted-type-in-public-interface.stderr rename to tests/ui/pub/issue-33174-restricted-type-in-public-interface.stderr diff --git a/src/test/ui/pub/pub-ident-fn-2.fixed b/tests/ui/pub/pub-ident-fn-2.fixed similarity index 100% rename from src/test/ui/pub/pub-ident-fn-2.fixed rename to tests/ui/pub/pub-ident-fn-2.fixed diff --git a/src/test/ui/pub/pub-ident-fn-2.rs b/tests/ui/pub/pub-ident-fn-2.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-2.rs rename to tests/ui/pub/pub-ident-fn-2.rs diff --git a/src/test/ui/pub/pub-ident-fn-2.stderr b/tests/ui/pub/pub-ident-fn-2.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-2.stderr rename to tests/ui/pub/pub-ident-fn-2.stderr diff --git a/src/test/ui/pub/pub-ident-fn-3.rs b/tests/ui/pub/pub-ident-fn-3.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-3.rs rename to tests/ui/pub/pub-ident-fn-3.rs diff --git a/src/test/ui/pub/pub-ident-fn-3.stderr b/tests/ui/pub/pub-ident-fn-3.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-3.stderr rename to tests/ui/pub/pub-ident-fn-3.stderr diff --git a/src/test/ui/pub/pub-ident-fn-or-struct-2.rs b/tests/ui/pub/pub-ident-fn-or-struct-2.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-or-struct-2.rs rename to tests/ui/pub/pub-ident-fn-or-struct-2.rs diff --git a/src/test/ui/pub/pub-ident-fn-or-struct-2.stderr b/tests/ui/pub/pub-ident-fn-or-struct-2.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-or-struct-2.stderr rename to tests/ui/pub/pub-ident-fn-or-struct-2.stderr diff --git a/src/test/ui/pub/pub-ident-fn-or-struct.rs b/tests/ui/pub/pub-ident-fn-or-struct.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-or-struct.rs rename to tests/ui/pub/pub-ident-fn-or-struct.rs diff --git a/src/test/ui/pub/pub-ident-fn-or-struct.stderr b/tests/ui/pub/pub-ident-fn-or-struct.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-or-struct.stderr rename to tests/ui/pub/pub-ident-fn-or-struct.stderr diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime-2.rs b/tests/ui/pub/pub-ident-fn-with-lifetime-2.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-with-lifetime-2.rs rename to tests/ui/pub/pub-ident-fn-with-lifetime-2.rs diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr b/tests/ui/pub/pub-ident-fn-with-lifetime-2.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr rename to tests/ui/pub/pub-ident-fn-with-lifetime-2.stderr diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime.fixed b/tests/ui/pub/pub-ident-fn-with-lifetime.fixed similarity index 100% rename from src/test/ui/pub/pub-ident-fn-with-lifetime.fixed rename to tests/ui/pub/pub-ident-fn-with-lifetime.fixed diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime.rs b/tests/ui/pub/pub-ident-fn-with-lifetime.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn-with-lifetime.rs rename to tests/ui/pub/pub-ident-fn-with-lifetime.rs diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime.stderr b/tests/ui/pub/pub-ident-fn-with-lifetime.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn-with-lifetime.stderr rename to tests/ui/pub/pub-ident-fn-with-lifetime.stderr diff --git a/src/test/ui/pub/pub-ident-fn.fixed b/tests/ui/pub/pub-ident-fn.fixed similarity index 100% rename from src/test/ui/pub/pub-ident-fn.fixed rename to tests/ui/pub/pub-ident-fn.fixed diff --git a/src/test/ui/pub/pub-ident-fn.rs b/tests/ui/pub/pub-ident-fn.rs similarity index 100% rename from src/test/ui/pub/pub-ident-fn.rs rename to tests/ui/pub/pub-ident-fn.rs diff --git a/src/test/ui/pub/pub-ident-fn.stderr b/tests/ui/pub/pub-ident-fn.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-fn.stderr rename to tests/ui/pub/pub-ident-fn.stderr diff --git a/src/test/ui/pub/pub-ident-struct-with-lifetime.rs b/tests/ui/pub/pub-ident-struct-with-lifetime.rs similarity index 100% rename from src/test/ui/pub/pub-ident-struct-with-lifetime.rs rename to tests/ui/pub/pub-ident-struct-with-lifetime.rs diff --git a/src/test/ui/pub/pub-ident-struct-with-lifetime.stderr b/tests/ui/pub/pub-ident-struct-with-lifetime.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-struct-with-lifetime.stderr rename to tests/ui/pub/pub-ident-struct-with-lifetime.stderr diff --git a/src/test/ui/pub/pub-ident-struct.fixed b/tests/ui/pub/pub-ident-struct.fixed similarity index 100% rename from src/test/ui/pub/pub-ident-struct.fixed rename to tests/ui/pub/pub-ident-struct.fixed diff --git a/src/test/ui/pub/pub-ident-struct.rs b/tests/ui/pub/pub-ident-struct.rs similarity index 100% rename from src/test/ui/pub/pub-ident-struct.rs rename to tests/ui/pub/pub-ident-struct.rs diff --git a/src/test/ui/pub/pub-ident-struct.stderr b/tests/ui/pub/pub-ident-struct.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-struct.stderr rename to tests/ui/pub/pub-ident-struct.stderr diff --git a/src/test/ui/pub/pub-ident-with-lifetime-incomplete.rs b/tests/ui/pub/pub-ident-with-lifetime-incomplete.rs similarity index 100% rename from src/test/ui/pub/pub-ident-with-lifetime-incomplete.rs rename to tests/ui/pub/pub-ident-with-lifetime-incomplete.rs diff --git a/src/test/ui/pub/pub-ident-with-lifetime-incomplete.stderr b/tests/ui/pub/pub-ident-with-lifetime-incomplete.stderr similarity index 100% rename from src/test/ui/pub/pub-ident-with-lifetime-incomplete.stderr rename to tests/ui/pub/pub-ident-with-lifetime-incomplete.stderr diff --git a/src/test/ui/pub/pub-reexport-priv-extern-crate.rs b/tests/ui/pub/pub-reexport-priv-extern-crate.rs similarity index 100% rename from src/test/ui/pub/pub-reexport-priv-extern-crate.rs rename to tests/ui/pub/pub-reexport-priv-extern-crate.rs diff --git a/src/test/ui/pub/pub-reexport-priv-extern-crate.stderr b/tests/ui/pub/pub-reexport-priv-extern-crate.stderr similarity index 100% rename from src/test/ui/pub/pub-reexport-priv-extern-crate.stderr rename to tests/ui/pub/pub-reexport-priv-extern-crate.stderr diff --git a/src/test/ui/pub/pub-restricted-error-fn.rs b/tests/ui/pub/pub-restricted-error-fn.rs similarity index 100% rename from src/test/ui/pub/pub-restricted-error-fn.rs rename to tests/ui/pub/pub-restricted-error-fn.rs diff --git a/src/test/ui/pub/pub-restricted-error-fn.stderr b/tests/ui/pub/pub-restricted-error-fn.stderr similarity index 100% rename from src/test/ui/pub/pub-restricted-error-fn.stderr rename to tests/ui/pub/pub-restricted-error-fn.stderr diff --git a/src/test/ui/pub/pub-restricted-error.rs b/tests/ui/pub/pub-restricted-error.rs similarity index 100% rename from src/test/ui/pub/pub-restricted-error.rs rename to tests/ui/pub/pub-restricted-error.rs diff --git a/src/test/ui/pub/pub-restricted-error.stderr b/tests/ui/pub/pub-restricted-error.stderr similarity index 100% rename from src/test/ui/pub/pub-restricted-error.stderr rename to tests/ui/pub/pub-restricted-error.stderr diff --git a/src/test/ui/pub/pub-restricted-non-path.rs b/tests/ui/pub/pub-restricted-non-path.rs similarity index 100% rename from src/test/ui/pub/pub-restricted-non-path.rs rename to tests/ui/pub/pub-restricted-non-path.rs diff --git a/src/test/ui/pub/pub-restricted-non-path.stderr b/tests/ui/pub/pub-restricted-non-path.stderr similarity index 100% rename from src/test/ui/pub/pub-restricted-non-path.stderr rename to tests/ui/pub/pub-restricted-non-path.stderr diff --git a/src/test/ui/pub/pub-restricted.rs b/tests/ui/pub/pub-restricted.rs similarity index 100% rename from src/test/ui/pub/pub-restricted.rs rename to tests/ui/pub/pub-restricted.rs diff --git a/src/test/ui/pub/pub-restricted.stderr b/tests/ui/pub/pub-restricted.stderr similarity index 100% rename from src/test/ui/pub/pub-restricted.stderr rename to tests/ui/pub/pub-restricted.stderr diff --git a/src/test/ui/qualified/qualified-path-params-2.rs b/tests/ui/qualified/qualified-path-params-2.rs similarity index 100% rename from src/test/ui/qualified/qualified-path-params-2.rs rename to tests/ui/qualified/qualified-path-params-2.rs diff --git a/src/test/ui/qualified/qualified-path-params-2.stderr b/tests/ui/qualified/qualified-path-params-2.stderr similarity index 100% rename from src/test/ui/qualified/qualified-path-params-2.stderr rename to tests/ui/qualified/qualified-path-params-2.stderr diff --git a/src/test/ui/qualified/qualified-path-params.rs b/tests/ui/qualified/qualified-path-params.rs similarity index 100% rename from src/test/ui/qualified/qualified-path-params.rs rename to tests/ui/qualified/qualified-path-params.rs diff --git a/src/test/ui/qualified/qualified-path-params.stderr b/tests/ui/qualified/qualified-path-params.stderr similarity index 100% rename from src/test/ui/qualified/qualified-path-params.stderr rename to tests/ui/qualified/qualified-path-params.stderr diff --git a/src/test/ui/query-system/fn-sig-cycle-arity.rs b/tests/ui/query-system/fn-sig-cycle-arity.rs similarity index 100% rename from src/test/ui/query-system/fn-sig-cycle-arity.rs rename to tests/ui/query-system/fn-sig-cycle-arity.rs diff --git a/src/test/ui/query-system/fn-sig-cycle-arity.stderr b/tests/ui/query-system/fn-sig-cycle-arity.stderr similarity index 100% rename from src/test/ui/query-system/fn-sig-cycle-arity.stderr rename to tests/ui/query-system/fn-sig-cycle-arity.stderr diff --git a/src/test/ui/query-system/issue-83479.rs b/tests/ui/query-system/issue-83479.rs similarity index 100% rename from src/test/ui/query-system/issue-83479.rs rename to tests/ui/query-system/issue-83479.rs diff --git a/src/test/ui/query-system/issue-83479.stderr b/tests/ui/query-system/issue-83479.stderr similarity index 100% rename from src/test/ui/query-system/issue-83479.stderr rename to tests/ui/query-system/issue-83479.stderr diff --git a/src/test/ui/query-system/query_depth.rs b/tests/ui/query-system/query_depth.rs similarity index 100% rename from src/test/ui/query-system/query_depth.rs rename to tests/ui/query-system/query_depth.rs diff --git a/src/test/ui/query-system/query_depth.stderr b/tests/ui/query-system/query_depth.stderr similarity index 100% rename from src/test/ui/query-system/query_depth.stderr rename to tests/ui/query-system/query_depth.stderr diff --git a/src/test/ui/query-visibility.rs b/tests/ui/query-visibility.rs similarity index 100% rename from src/test/ui/query-visibility.rs rename to tests/ui/query-visibility.rs diff --git a/src/test/ui/range/exclusive-range-patterns-2021.rs b/tests/ui/range/exclusive-range-patterns-2021.rs similarity index 100% rename from src/test/ui/range/exclusive-range-patterns-2021.rs rename to tests/ui/range/exclusive-range-patterns-2021.rs diff --git a/src/test/ui/range/exclusive-range-patterns-2021.stderr b/tests/ui/range/exclusive-range-patterns-2021.stderr similarity index 100% rename from src/test/ui/range/exclusive-range-patterns-2021.stderr rename to tests/ui/range/exclusive-range-patterns-2021.stderr diff --git a/src/test/ui/range/issue-54505-no-literals.fixed b/tests/ui/range/issue-54505-no-literals.fixed similarity index 100% rename from src/test/ui/range/issue-54505-no-literals.fixed rename to tests/ui/range/issue-54505-no-literals.fixed diff --git a/src/test/ui/range/issue-54505-no-literals.rs b/tests/ui/range/issue-54505-no-literals.rs similarity index 100% rename from src/test/ui/range/issue-54505-no-literals.rs rename to tests/ui/range/issue-54505-no-literals.rs diff --git a/src/test/ui/range/issue-54505-no-literals.stderr b/tests/ui/range/issue-54505-no-literals.stderr similarity index 100% rename from src/test/ui/range/issue-54505-no-literals.stderr rename to tests/ui/range/issue-54505-no-literals.stderr diff --git a/src/test/ui/range/issue-54505-no-std.rs b/tests/ui/range/issue-54505-no-std.rs similarity index 100% rename from src/test/ui/range/issue-54505-no-std.rs rename to tests/ui/range/issue-54505-no-std.rs diff --git a/src/test/ui/range/issue-54505-no-std.stderr b/tests/ui/range/issue-54505-no-std.stderr similarity index 100% rename from src/test/ui/range/issue-54505-no-std.stderr rename to tests/ui/range/issue-54505-no-std.stderr diff --git a/src/test/ui/range/issue-54505.fixed b/tests/ui/range/issue-54505.fixed similarity index 100% rename from src/test/ui/range/issue-54505.fixed rename to tests/ui/range/issue-54505.fixed diff --git a/src/test/ui/range/issue-54505.rs b/tests/ui/range/issue-54505.rs similarity index 100% rename from src/test/ui/range/issue-54505.rs rename to tests/ui/range/issue-54505.rs diff --git a/src/test/ui/range/issue-54505.stderr b/tests/ui/range/issue-54505.stderr similarity index 100% rename from src/test/ui/range/issue-54505.stderr rename to tests/ui/range/issue-54505.stderr diff --git a/src/test/ui/range/issue-73553-misinterp-range-literal.rs b/tests/ui/range/issue-73553-misinterp-range-literal.rs similarity index 100% rename from src/test/ui/range/issue-73553-misinterp-range-literal.rs rename to tests/ui/range/issue-73553-misinterp-range-literal.rs diff --git a/src/test/ui/range/issue-73553-misinterp-range-literal.stderr b/tests/ui/range/issue-73553-misinterp-range-literal.stderr similarity index 100% rename from src/test/ui/range/issue-73553-misinterp-range-literal.stderr rename to tests/ui/range/issue-73553-misinterp-range-literal.stderr diff --git a/src/test/ui/range/range-1.rs b/tests/ui/range/range-1.rs similarity index 100% rename from src/test/ui/range/range-1.rs rename to tests/ui/range/range-1.rs diff --git a/src/test/ui/range/range-1.stderr b/tests/ui/range/range-1.stderr similarity index 100% rename from src/test/ui/range/range-1.stderr rename to tests/ui/range/range-1.stderr diff --git a/src/test/ui/range/range-inclusive-pattern-precedence.fixed b/tests/ui/range/range-inclusive-pattern-precedence.fixed similarity index 100% rename from src/test/ui/range/range-inclusive-pattern-precedence.fixed rename to tests/ui/range/range-inclusive-pattern-precedence.fixed diff --git a/src/test/ui/range/range-inclusive-pattern-precedence.rs b/tests/ui/range/range-inclusive-pattern-precedence.rs similarity index 100% rename from src/test/ui/range/range-inclusive-pattern-precedence.rs rename to tests/ui/range/range-inclusive-pattern-precedence.rs diff --git a/src/test/ui/range/range-inclusive-pattern-precedence.stderr b/tests/ui/range/range-inclusive-pattern-precedence.stderr similarity index 100% rename from src/test/ui/range/range-inclusive-pattern-precedence.stderr rename to tests/ui/range/range-inclusive-pattern-precedence.stderr diff --git a/src/test/ui/range/range-inclusive-pattern-precedence2.rs b/tests/ui/range/range-inclusive-pattern-precedence2.rs similarity index 100% rename from src/test/ui/range/range-inclusive-pattern-precedence2.rs rename to tests/ui/range/range-inclusive-pattern-precedence2.rs diff --git a/src/test/ui/range/range-inclusive-pattern-precedence2.stderr b/tests/ui/range/range-inclusive-pattern-precedence2.stderr similarity index 100% rename from src/test/ui/range/range-inclusive-pattern-precedence2.stderr rename to tests/ui/range/range-inclusive-pattern-precedence2.stderr diff --git a/src/test/ui/range/range_traits-1.rs b/tests/ui/range/range_traits-1.rs similarity index 100% rename from src/test/ui/range/range_traits-1.rs rename to tests/ui/range/range_traits-1.rs diff --git a/src/test/ui/range/range_traits-1.stderr b/tests/ui/range/range_traits-1.stderr similarity index 100% rename from src/test/ui/range/range_traits-1.stderr rename to tests/ui/range/range_traits-1.stderr diff --git a/src/test/ui/range/range_traits-2.rs b/tests/ui/range/range_traits-2.rs similarity index 100% rename from src/test/ui/range/range_traits-2.rs rename to tests/ui/range/range_traits-2.rs diff --git a/src/test/ui/range/range_traits-2.stderr b/tests/ui/range/range_traits-2.stderr similarity index 100% rename from src/test/ui/range/range_traits-2.stderr rename to tests/ui/range/range_traits-2.stderr diff --git a/src/test/ui/range/range_traits-3.rs b/tests/ui/range/range_traits-3.rs similarity index 100% rename from src/test/ui/range/range_traits-3.rs rename to tests/ui/range/range_traits-3.rs diff --git a/src/test/ui/range/range_traits-3.stderr b/tests/ui/range/range_traits-3.stderr similarity index 100% rename from src/test/ui/range/range_traits-3.stderr rename to tests/ui/range/range_traits-3.stderr diff --git a/src/test/ui/range/range_traits-4.rs b/tests/ui/range/range_traits-4.rs similarity index 100% rename from src/test/ui/range/range_traits-4.rs rename to tests/ui/range/range_traits-4.rs diff --git a/src/test/ui/range/range_traits-5.rs b/tests/ui/range/range_traits-5.rs similarity index 100% rename from src/test/ui/range/range_traits-5.rs rename to tests/ui/range/range_traits-5.rs diff --git a/src/test/ui/range/range_traits-6.rs b/tests/ui/range/range_traits-6.rs similarity index 100% rename from src/test/ui/range/range_traits-6.rs rename to tests/ui/range/range_traits-6.rs diff --git a/src/test/ui/range/range_traits-6.stderr b/tests/ui/range/range_traits-6.stderr similarity index 100% rename from src/test/ui/range/range_traits-6.stderr rename to tests/ui/range/range_traits-6.stderr diff --git a/src/test/ui/range/range_traits-7.rs b/tests/ui/range/range_traits-7.rs similarity index 100% rename from src/test/ui/range/range_traits-7.rs rename to tests/ui/range/range_traits-7.rs diff --git a/src/test/ui/range_inclusive.rs b/tests/ui/range_inclusive.rs similarity index 100% rename from src/test/ui/range_inclusive.rs rename to tests/ui/range_inclusive.rs diff --git a/src/test/ui/raw-ref-op/feature-raw-ref-op.rs b/tests/ui/raw-ref-op/feature-raw-ref-op.rs similarity index 100% rename from src/test/ui/raw-ref-op/feature-raw-ref-op.rs rename to tests/ui/raw-ref-op/feature-raw-ref-op.rs diff --git a/src/test/ui/raw-ref-op/feature-raw-ref-op.stderr b/tests/ui/raw-ref-op/feature-raw-ref-op.stderr similarity index 100% rename from src/test/ui/raw-ref-op/feature-raw-ref-op.stderr rename to tests/ui/raw-ref-op/feature-raw-ref-op.stderr diff --git a/src/test/ui/raw-ref-op/raw-ref-op.rs b/tests/ui/raw-ref-op/raw-ref-op.rs similarity index 100% rename from src/test/ui/raw-ref-op/raw-ref-op.rs rename to tests/ui/raw-ref-op/raw-ref-op.rs diff --git a/src/test/ui/raw-ref-op/raw-ref-temp-deref.rs b/tests/ui/raw-ref-op/raw-ref-temp-deref.rs similarity index 100% rename from src/test/ui/raw-ref-op/raw-ref-temp-deref.rs rename to tests/ui/raw-ref-op/raw-ref-temp-deref.rs diff --git a/src/test/ui/raw-ref-op/raw-ref-temp.rs b/tests/ui/raw-ref-op/raw-ref-temp.rs similarity index 100% rename from src/test/ui/raw-ref-op/raw-ref-temp.rs rename to tests/ui/raw-ref-op/raw-ref-temp.rs diff --git a/src/test/ui/raw-ref-op/raw-ref-temp.stderr b/tests/ui/raw-ref-op/raw-ref-temp.stderr similarity index 100% rename from src/test/ui/raw-ref-op/raw-ref-temp.stderr rename to tests/ui/raw-ref-op/raw-ref-temp.stderr diff --git a/src/test/ui/raw-ref-op/unusual_locations.rs b/tests/ui/raw-ref-op/unusual_locations.rs similarity index 100% rename from src/test/ui/raw-ref-op/unusual_locations.rs rename to tests/ui/raw-ref-op/unusual_locations.rs diff --git a/src/test/ui/raw-str.rs b/tests/ui/raw-str.rs similarity index 100% rename from src/test/ui/raw-str.rs rename to tests/ui/raw-str.rs diff --git a/src/test/ui/reachable-unnameable-type-alias.rs b/tests/ui/reachable-unnameable-type-alias.rs similarity index 100% rename from src/test/ui/reachable-unnameable-type-alias.rs rename to tests/ui/reachable-unnameable-type-alias.rs diff --git a/src/test/ui/reachable/README.md b/tests/ui/reachable/README.md similarity index 100% rename from src/test/ui/reachable/README.md rename to tests/ui/reachable/README.md diff --git a/src/test/ui/reachable/auxiliary/issue-11225-1.rs b/tests/ui/reachable/auxiliary/issue-11225-1.rs similarity index 100% rename from src/test/ui/reachable/auxiliary/issue-11225-1.rs rename to tests/ui/reachable/auxiliary/issue-11225-1.rs diff --git a/src/test/ui/reachable/auxiliary/issue-11225-2.rs b/tests/ui/reachable/auxiliary/issue-11225-2.rs similarity index 100% rename from src/test/ui/reachable/auxiliary/issue-11225-2.rs rename to tests/ui/reachable/auxiliary/issue-11225-2.rs diff --git a/src/test/ui/reachable/auxiliary/issue-11225-3.rs b/tests/ui/reachable/auxiliary/issue-11225-3.rs similarity index 100% rename from src/test/ui/reachable/auxiliary/issue-11225-3.rs rename to tests/ui/reachable/auxiliary/issue-11225-3.rs diff --git a/src/test/ui/reachable/auxiliary/unreachable_variant.rs b/tests/ui/reachable/auxiliary/unreachable_variant.rs similarity index 100% rename from src/test/ui/reachable/auxiliary/unreachable_variant.rs rename to tests/ui/reachable/auxiliary/unreachable_variant.rs diff --git a/src/test/ui/reachable/expr_add.rs b/tests/ui/reachable/expr_add.rs similarity index 100% rename from src/test/ui/reachable/expr_add.rs rename to tests/ui/reachable/expr_add.rs diff --git a/src/test/ui/reachable/expr_add.stderr b/tests/ui/reachable/expr_add.stderr similarity index 100% rename from src/test/ui/reachable/expr_add.stderr rename to tests/ui/reachable/expr_add.stderr diff --git a/src/test/ui/reachable/expr_again.rs b/tests/ui/reachable/expr_again.rs similarity index 100% rename from src/test/ui/reachable/expr_again.rs rename to tests/ui/reachable/expr_again.rs diff --git a/src/test/ui/reachable/expr_again.stderr b/tests/ui/reachable/expr_again.stderr similarity index 100% rename from src/test/ui/reachable/expr_again.stderr rename to tests/ui/reachable/expr_again.stderr diff --git a/src/test/ui/reachable/expr_andand.rs b/tests/ui/reachable/expr_andand.rs similarity index 100% rename from src/test/ui/reachable/expr_andand.rs rename to tests/ui/reachable/expr_andand.rs diff --git a/src/test/ui/reachable/expr_array.rs b/tests/ui/reachable/expr_array.rs similarity index 100% rename from src/test/ui/reachable/expr_array.rs rename to tests/ui/reachable/expr_array.rs diff --git a/src/test/ui/reachable/expr_array.stderr b/tests/ui/reachable/expr_array.stderr similarity index 100% rename from src/test/ui/reachable/expr_array.stderr rename to tests/ui/reachable/expr_array.stderr diff --git a/src/test/ui/reachable/expr_assign.rs b/tests/ui/reachable/expr_assign.rs similarity index 100% rename from src/test/ui/reachable/expr_assign.rs rename to tests/ui/reachable/expr_assign.rs diff --git a/src/test/ui/reachable/expr_assign.stderr b/tests/ui/reachable/expr_assign.stderr similarity index 100% rename from src/test/ui/reachable/expr_assign.stderr rename to tests/ui/reachable/expr_assign.stderr diff --git a/src/test/ui/reachable/expr_block.rs b/tests/ui/reachable/expr_block.rs similarity index 100% rename from src/test/ui/reachable/expr_block.rs rename to tests/ui/reachable/expr_block.rs diff --git a/src/test/ui/reachable/expr_block.stderr b/tests/ui/reachable/expr_block.stderr similarity index 100% rename from src/test/ui/reachable/expr_block.stderr rename to tests/ui/reachable/expr_block.stderr diff --git a/src/test/ui/reachable/expr_box.rs b/tests/ui/reachable/expr_box.rs similarity index 100% rename from src/test/ui/reachable/expr_box.rs rename to tests/ui/reachable/expr_box.rs diff --git a/src/test/ui/reachable/expr_box.stderr b/tests/ui/reachable/expr_box.stderr similarity index 100% rename from src/test/ui/reachable/expr_box.stderr rename to tests/ui/reachable/expr_box.stderr diff --git a/src/test/ui/reachable/expr_call.rs b/tests/ui/reachable/expr_call.rs similarity index 100% rename from src/test/ui/reachable/expr_call.rs rename to tests/ui/reachable/expr_call.rs diff --git a/src/test/ui/reachable/expr_call.stderr b/tests/ui/reachable/expr_call.stderr similarity index 100% rename from src/test/ui/reachable/expr_call.stderr rename to tests/ui/reachable/expr_call.stderr diff --git a/src/test/ui/reachable/expr_cast.rs b/tests/ui/reachable/expr_cast.rs similarity index 100% rename from src/test/ui/reachable/expr_cast.rs rename to tests/ui/reachable/expr_cast.rs diff --git a/src/test/ui/reachable/expr_cast.stderr b/tests/ui/reachable/expr_cast.stderr similarity index 100% rename from src/test/ui/reachable/expr_cast.stderr rename to tests/ui/reachable/expr_cast.stderr diff --git a/src/test/ui/reachable/expr_if.rs b/tests/ui/reachable/expr_if.rs similarity index 100% rename from src/test/ui/reachable/expr_if.rs rename to tests/ui/reachable/expr_if.rs diff --git a/src/test/ui/reachable/expr_if.stderr b/tests/ui/reachable/expr_if.stderr similarity index 100% rename from src/test/ui/reachable/expr_if.stderr rename to tests/ui/reachable/expr_if.stderr diff --git a/src/test/ui/reachable/expr_loop.rs b/tests/ui/reachable/expr_loop.rs similarity index 100% rename from src/test/ui/reachable/expr_loop.rs rename to tests/ui/reachable/expr_loop.rs diff --git a/src/test/ui/reachable/expr_loop.stderr b/tests/ui/reachable/expr_loop.stderr similarity index 100% rename from src/test/ui/reachable/expr_loop.stderr rename to tests/ui/reachable/expr_loop.stderr diff --git a/src/test/ui/reachable/expr_match.rs b/tests/ui/reachable/expr_match.rs similarity index 100% rename from src/test/ui/reachable/expr_match.rs rename to tests/ui/reachable/expr_match.rs diff --git a/src/test/ui/reachable/expr_match.stderr b/tests/ui/reachable/expr_match.stderr similarity index 100% rename from src/test/ui/reachable/expr_match.stderr rename to tests/ui/reachable/expr_match.stderr diff --git a/src/test/ui/reachable/expr_method.rs b/tests/ui/reachable/expr_method.rs similarity index 100% rename from src/test/ui/reachable/expr_method.rs rename to tests/ui/reachable/expr_method.rs diff --git a/src/test/ui/reachable/expr_method.stderr b/tests/ui/reachable/expr_method.stderr similarity index 100% rename from src/test/ui/reachable/expr_method.stderr rename to tests/ui/reachable/expr_method.stderr diff --git a/src/test/ui/reachable/expr_oror.rs b/tests/ui/reachable/expr_oror.rs similarity index 100% rename from src/test/ui/reachable/expr_oror.rs rename to tests/ui/reachable/expr_oror.rs diff --git a/src/test/ui/reachable/expr_repeat.rs b/tests/ui/reachable/expr_repeat.rs similarity index 100% rename from src/test/ui/reachable/expr_repeat.rs rename to tests/ui/reachable/expr_repeat.rs diff --git a/src/test/ui/reachable/expr_repeat.stderr b/tests/ui/reachable/expr_repeat.stderr similarity index 100% rename from src/test/ui/reachable/expr_repeat.stderr rename to tests/ui/reachable/expr_repeat.stderr diff --git a/src/test/ui/reachable/expr_return.rs b/tests/ui/reachable/expr_return.rs similarity index 100% rename from src/test/ui/reachable/expr_return.rs rename to tests/ui/reachable/expr_return.rs diff --git a/src/test/ui/reachable/expr_return.stderr b/tests/ui/reachable/expr_return.stderr similarity index 100% rename from src/test/ui/reachable/expr_return.stderr rename to tests/ui/reachable/expr_return.stderr diff --git a/src/test/ui/reachable/expr_return_in_macro.rs b/tests/ui/reachable/expr_return_in_macro.rs similarity index 100% rename from src/test/ui/reachable/expr_return_in_macro.rs rename to tests/ui/reachable/expr_return_in_macro.rs diff --git a/src/test/ui/reachable/expr_return_in_macro.stderr b/tests/ui/reachable/expr_return_in_macro.stderr similarity index 100% rename from src/test/ui/reachable/expr_return_in_macro.stderr rename to tests/ui/reachable/expr_return_in_macro.stderr diff --git a/src/test/ui/reachable/expr_struct.rs b/tests/ui/reachable/expr_struct.rs similarity index 100% rename from src/test/ui/reachable/expr_struct.rs rename to tests/ui/reachable/expr_struct.rs diff --git a/src/test/ui/reachable/expr_struct.stderr b/tests/ui/reachable/expr_struct.stderr similarity index 100% rename from src/test/ui/reachable/expr_struct.stderr rename to tests/ui/reachable/expr_struct.stderr diff --git a/src/test/ui/reachable/expr_tup.rs b/tests/ui/reachable/expr_tup.rs similarity index 100% rename from src/test/ui/reachable/expr_tup.rs rename to tests/ui/reachable/expr_tup.rs diff --git a/src/test/ui/reachable/expr_tup.stderr b/tests/ui/reachable/expr_tup.stderr similarity index 100% rename from src/test/ui/reachable/expr_tup.stderr rename to tests/ui/reachable/expr_tup.stderr diff --git a/src/test/ui/reachable/expr_type.rs b/tests/ui/reachable/expr_type.rs similarity index 100% rename from src/test/ui/reachable/expr_type.rs rename to tests/ui/reachable/expr_type.rs diff --git a/src/test/ui/reachable/expr_type.stderr b/tests/ui/reachable/expr_type.stderr similarity index 100% rename from src/test/ui/reachable/expr_type.stderr rename to tests/ui/reachable/expr_type.stderr diff --git a/src/test/ui/reachable/expr_unary.rs b/tests/ui/reachable/expr_unary.rs similarity index 100% rename from src/test/ui/reachable/expr_unary.rs rename to tests/ui/reachable/expr_unary.rs diff --git a/src/test/ui/reachable/expr_unary.stderr b/tests/ui/reachable/expr_unary.stderr similarity index 100% rename from src/test/ui/reachable/expr_unary.stderr rename to tests/ui/reachable/expr_unary.stderr diff --git a/src/test/ui/reachable/expr_while.rs b/tests/ui/reachable/expr_while.rs similarity index 100% rename from src/test/ui/reachable/expr_while.rs rename to tests/ui/reachable/expr_while.rs diff --git a/src/test/ui/reachable/expr_while.stderr b/tests/ui/reachable/expr_while.stderr similarity index 100% rename from src/test/ui/reachable/expr_while.stderr rename to tests/ui/reachable/expr_while.stderr diff --git a/src/test/ui/reachable/issue-11225-1.rs b/tests/ui/reachable/issue-11225-1.rs similarity index 100% rename from src/test/ui/reachable/issue-11225-1.rs rename to tests/ui/reachable/issue-11225-1.rs diff --git a/src/test/ui/reachable/issue-11225-2.rs b/tests/ui/reachable/issue-11225-2.rs similarity index 100% rename from src/test/ui/reachable/issue-11225-2.rs rename to tests/ui/reachable/issue-11225-2.rs diff --git a/src/test/ui/reachable/issue-11225-3.rs b/tests/ui/reachable/issue-11225-3.rs similarity index 100% rename from src/test/ui/reachable/issue-11225-3.rs rename to tests/ui/reachable/issue-11225-3.rs diff --git a/src/test/ui/reachable/unreachable-arm.rs b/tests/ui/reachable/unreachable-arm.rs similarity index 100% rename from src/test/ui/reachable/unreachable-arm.rs rename to tests/ui/reachable/unreachable-arm.rs diff --git a/src/test/ui/reachable/unreachable-arm.stderr b/tests/ui/reachable/unreachable-arm.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-arm.stderr rename to tests/ui/reachable/unreachable-arm.stderr diff --git a/src/test/ui/reachable/unreachable-code-ret.rs b/tests/ui/reachable/unreachable-code-ret.rs similarity index 100% rename from src/test/ui/reachable/unreachable-code-ret.rs rename to tests/ui/reachable/unreachable-code-ret.rs diff --git a/src/test/ui/reachable/unreachable-code-ret.stderr b/tests/ui/reachable/unreachable-code-ret.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-code-ret.stderr rename to tests/ui/reachable/unreachable-code-ret.stderr diff --git a/src/test/ui/reachable/unreachable-code.rs b/tests/ui/reachable/unreachable-code.rs similarity index 100% rename from src/test/ui/reachable/unreachable-code.rs rename to tests/ui/reachable/unreachable-code.rs diff --git a/src/test/ui/reachable/unreachable-code.stderr b/tests/ui/reachable/unreachable-code.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-code.stderr rename to tests/ui/reachable/unreachable-code.stderr diff --git a/src/test/ui/reachable/unreachable-in-call.rs b/tests/ui/reachable/unreachable-in-call.rs similarity index 100% rename from src/test/ui/reachable/unreachable-in-call.rs rename to tests/ui/reachable/unreachable-in-call.rs diff --git a/src/test/ui/reachable/unreachable-in-call.stderr b/tests/ui/reachable/unreachable-in-call.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-in-call.stderr rename to tests/ui/reachable/unreachable-in-call.stderr diff --git a/src/test/ui/reachable/unreachable-loop-patterns.rs b/tests/ui/reachable/unreachable-loop-patterns.rs similarity index 100% rename from src/test/ui/reachable/unreachable-loop-patterns.rs rename to tests/ui/reachable/unreachable-loop-patterns.rs diff --git a/src/test/ui/reachable/unreachable-loop-patterns.stderr b/tests/ui/reachable/unreachable-loop-patterns.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-loop-patterns.stderr rename to tests/ui/reachable/unreachable-loop-patterns.stderr diff --git a/src/test/ui/reachable/unreachable-try-pattern.rs b/tests/ui/reachable/unreachable-try-pattern.rs similarity index 100% rename from src/test/ui/reachable/unreachable-try-pattern.rs rename to tests/ui/reachable/unreachable-try-pattern.rs diff --git a/src/test/ui/reachable/unreachable-try-pattern.stderr b/tests/ui/reachable/unreachable-try-pattern.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-try-pattern.stderr rename to tests/ui/reachable/unreachable-try-pattern.stderr diff --git a/src/test/ui/reachable/unreachable-variant.rs b/tests/ui/reachable/unreachable-variant.rs similarity index 100% rename from src/test/ui/reachable/unreachable-variant.rs rename to tests/ui/reachable/unreachable-variant.rs diff --git a/src/test/ui/reachable/unreachable-variant.stderr b/tests/ui/reachable/unreachable-variant.stderr similarity index 100% rename from src/test/ui/reachable/unreachable-variant.stderr rename to tests/ui/reachable/unreachable-variant.stderr diff --git a/src/test/ui/reachable/unwarned-match-on-never.rs b/tests/ui/reachable/unwarned-match-on-never.rs similarity index 100% rename from src/test/ui/reachable/unwarned-match-on-never.rs rename to tests/ui/reachable/unwarned-match-on-never.rs diff --git a/src/test/ui/reachable/unwarned-match-on-never.stderr b/tests/ui/reachable/unwarned-match-on-never.stderr similarity index 100% rename from src/test/ui/reachable/unwarned-match-on-never.stderr rename to tests/ui/reachable/unwarned-match-on-never.stderr diff --git a/src/test/ui/realloc-16687.rs b/tests/ui/realloc-16687.rs similarity index 100% rename from src/test/ui/realloc-16687.rs rename to tests/ui/realloc-16687.rs diff --git a/src/test/ui/reassign-ref-mut.rs b/tests/ui/reassign-ref-mut.rs similarity index 100% rename from src/test/ui/reassign-ref-mut.rs rename to tests/ui/reassign-ref-mut.rs diff --git a/src/test/ui/reassign-ref-mut.stderr b/tests/ui/reassign-ref-mut.stderr similarity index 100% rename from src/test/ui/reassign-ref-mut.stderr rename to tests/ui/reassign-ref-mut.stderr diff --git a/src/test/ui/recursion/auxiliary/recursive_reexports.rs b/tests/ui/recursion/auxiliary/recursive_reexports.rs similarity index 100% rename from src/test/ui/recursion/auxiliary/recursive_reexports.rs rename to tests/ui/recursion/auxiliary/recursive_reexports.rs diff --git a/src/test/ui/recursion/instantiable.rs b/tests/ui/recursion/instantiable.rs similarity index 100% rename from src/test/ui/recursion/instantiable.rs rename to tests/ui/recursion/instantiable.rs diff --git a/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs b/tests/ui/recursion/issue-26548-recursion-via-normalize.rs similarity index 100% rename from src/test/ui/recursion/issue-26548-recursion-via-normalize.rs rename to tests/ui/recursion/issue-26548-recursion-via-normalize.rs diff --git a/src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr b/tests/ui/recursion/issue-26548-recursion-via-normalize.stderr similarity index 100% rename from src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr rename to tests/ui/recursion/issue-26548-recursion-via-normalize.stderr diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr b/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr similarity index 100% rename from src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr rename to tests/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs b/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs similarity index 100% rename from src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs rename to tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr b/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr similarity index 100% rename from src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr rename to tests/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr diff --git a/src/test/ui/recursion/issue-83150.rs b/tests/ui/recursion/issue-83150.rs similarity index 100% rename from src/test/ui/recursion/issue-83150.rs rename to tests/ui/recursion/issue-83150.rs diff --git a/src/test/ui/recursion/issue-83150.stderr b/tests/ui/recursion/issue-83150.stderr similarity index 100% rename from src/test/ui/recursion/issue-83150.stderr rename to tests/ui/recursion/issue-83150.stderr diff --git a/src/test/ui/recursion/issue-86784.rs b/tests/ui/recursion/issue-86784.rs similarity index 100% rename from src/test/ui/recursion/issue-86784.rs rename to tests/ui/recursion/issue-86784.rs diff --git a/src/test/ui/recursion/issue-95134.rs b/tests/ui/recursion/issue-95134.rs similarity index 100% rename from src/test/ui/recursion/issue-95134.rs rename to tests/ui/recursion/issue-95134.rs diff --git a/src/test/ui/recursion/recursion.polonius.stderr b/tests/ui/recursion/recursion.polonius.stderr similarity index 100% rename from src/test/ui/recursion/recursion.polonius.stderr rename to tests/ui/recursion/recursion.polonius.stderr diff --git a/src/test/ui/recursion/recursion.rs b/tests/ui/recursion/recursion.rs similarity index 100% rename from src/test/ui/recursion/recursion.rs rename to tests/ui/recursion/recursion.rs diff --git a/src/test/ui/recursion/recursion.stderr b/tests/ui/recursion/recursion.stderr similarity index 100% rename from src/test/ui/recursion/recursion.stderr rename to tests/ui/recursion/recursion.stderr diff --git a/src/test/ui/recursion/recursive-enum.rs b/tests/ui/recursion/recursive-enum.rs similarity index 100% rename from src/test/ui/recursion/recursive-enum.rs rename to tests/ui/recursion/recursive-enum.rs diff --git a/src/test/ui/recursion/recursive-enum.stderr b/tests/ui/recursion/recursive-enum.stderr similarity index 100% rename from src/test/ui/recursion/recursive-enum.stderr rename to tests/ui/recursion/recursive-enum.stderr diff --git a/src/test/ui/recursion/recursive-reexports.rs b/tests/ui/recursion/recursive-reexports.rs similarity index 100% rename from src/test/ui/recursion/recursive-reexports.rs rename to tests/ui/recursion/recursive-reexports.rs diff --git a/src/test/ui/recursion/recursive-reexports.stderr b/tests/ui/recursion/recursive-reexports.stderr similarity index 100% rename from src/test/ui/recursion/recursive-reexports.stderr rename to tests/ui/recursion/recursive-reexports.stderr diff --git a/src/test/ui/recursion/recursive-requirements.rs b/tests/ui/recursion/recursive-requirements.rs similarity index 100% rename from src/test/ui/recursion/recursive-requirements.rs rename to tests/ui/recursion/recursive-requirements.rs diff --git a/src/test/ui/recursion/recursive-requirements.stderr b/tests/ui/recursion/recursive-requirements.stderr similarity index 100% rename from src/test/ui/recursion/recursive-requirements.stderr rename to tests/ui/recursion/recursive-requirements.stderr diff --git a/src/test/ui/recursion/recursive-static-definition.rs b/tests/ui/recursion/recursive-static-definition.rs similarity index 100% rename from src/test/ui/recursion/recursive-static-definition.rs rename to tests/ui/recursion/recursive-static-definition.rs diff --git a/src/test/ui/recursion/recursive-static-definition.stderr b/tests/ui/recursion/recursive-static-definition.stderr similarity index 100% rename from src/test/ui/recursion/recursive-static-definition.stderr rename to tests/ui/recursion/recursive-static-definition.stderr diff --git a/src/test/ui/recursion/recursive-types-are-not-uninhabited.rs b/tests/ui/recursion/recursive-types-are-not-uninhabited.rs similarity index 100% rename from src/test/ui/recursion/recursive-types-are-not-uninhabited.rs rename to tests/ui/recursion/recursive-types-are-not-uninhabited.rs diff --git a/src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr b/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr similarity index 100% rename from src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr rename to tests/ui/recursion/recursive-types-are-not-uninhabited.stderr diff --git a/src/test/ui/recursion_limit/empty.rs b/tests/ui/recursion_limit/empty.rs similarity index 100% rename from src/test/ui/recursion_limit/empty.rs rename to tests/ui/recursion_limit/empty.rs diff --git a/src/test/ui/recursion_limit/empty.stderr b/tests/ui/recursion_limit/empty.stderr similarity index 100% rename from src/test/ui/recursion_limit/empty.stderr rename to tests/ui/recursion_limit/empty.stderr diff --git a/src/test/ui/recursion_limit/invalid_digit.rs b/tests/ui/recursion_limit/invalid_digit.rs similarity index 100% rename from src/test/ui/recursion_limit/invalid_digit.rs rename to tests/ui/recursion_limit/invalid_digit.rs diff --git a/src/test/ui/recursion_limit/invalid_digit.stderr b/tests/ui/recursion_limit/invalid_digit.stderr similarity index 100% rename from src/test/ui/recursion_limit/invalid_digit.stderr rename to tests/ui/recursion_limit/invalid_digit.stderr diff --git a/src/test/ui/recursion_limit/invalid_digit_type.rs b/tests/ui/recursion_limit/invalid_digit_type.rs similarity index 100% rename from src/test/ui/recursion_limit/invalid_digit_type.rs rename to tests/ui/recursion_limit/invalid_digit_type.rs diff --git a/src/test/ui/recursion_limit/invalid_digit_type.stderr b/tests/ui/recursion_limit/invalid_digit_type.stderr similarity index 100% rename from src/test/ui/recursion_limit/invalid_digit_type.stderr rename to tests/ui/recursion_limit/invalid_digit_type.stderr diff --git a/src/test/ui/recursion_limit/invalid_macro.rs b/tests/ui/recursion_limit/invalid_macro.rs similarity index 100% rename from src/test/ui/recursion_limit/invalid_macro.rs rename to tests/ui/recursion_limit/invalid_macro.rs diff --git a/src/test/ui/recursion_limit/invalid_macro.stderr b/tests/ui/recursion_limit/invalid_macro.stderr similarity index 100% rename from src/test/ui/recursion_limit/invalid_macro.stderr rename to tests/ui/recursion_limit/invalid_macro.stderr diff --git a/src/test/ui/recursion_limit/no-value.rs b/tests/ui/recursion_limit/no-value.rs similarity index 100% rename from src/test/ui/recursion_limit/no-value.rs rename to tests/ui/recursion_limit/no-value.rs diff --git a/src/test/ui/recursion_limit/no-value.stderr b/tests/ui/recursion_limit/no-value.stderr similarity index 100% rename from src/test/ui/recursion_limit/no-value.stderr rename to tests/ui/recursion_limit/no-value.stderr diff --git a/src/test/ui/recursion_limit/overflow.rs b/tests/ui/recursion_limit/overflow.rs similarity index 100% rename from src/test/ui/recursion_limit/overflow.rs rename to tests/ui/recursion_limit/overflow.rs diff --git a/src/test/ui/recursion_limit/overflow.stderr b/tests/ui/recursion_limit/overflow.stderr similarity index 100% rename from src/test/ui/recursion_limit/overflow.stderr rename to tests/ui/recursion_limit/overflow.stderr diff --git a/src/test/ui/recursion_limit/zero-overflow.rs b/tests/ui/recursion_limit/zero-overflow.rs similarity index 100% rename from src/test/ui/recursion_limit/zero-overflow.rs rename to tests/ui/recursion_limit/zero-overflow.rs diff --git a/src/test/ui/recursion_limit/zero-overflow.stderr b/tests/ui/recursion_limit/zero-overflow.stderr similarity index 100% rename from src/test/ui/recursion_limit/zero-overflow.stderr rename to tests/ui/recursion_limit/zero-overflow.stderr diff --git a/src/test/ui/recursion_limit/zero.rs b/tests/ui/recursion_limit/zero.rs similarity index 100% rename from src/test/ui/recursion_limit/zero.rs rename to tests/ui/recursion_limit/zero.rs diff --git a/src/test/ui/recursion_limit/zero.stderr b/tests/ui/recursion_limit/zero.stderr similarity index 100% rename from src/test/ui/recursion_limit/zero.stderr rename to tests/ui/recursion_limit/zero.stderr diff --git a/src/test/ui/reexport-test-harness-main.rs b/tests/ui/reexport-test-harness-main.rs similarity index 100% rename from src/test/ui/reexport-test-harness-main.rs rename to tests/ui/reexport-test-harness-main.rs diff --git a/src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs b/tests/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs similarity index 100% rename from src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs rename to tests/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs diff --git a/src/test/ui/regions/closure-in-projection-issue-97405.rs b/tests/ui/regions/closure-in-projection-issue-97405.rs similarity index 100% rename from src/test/ui/regions/closure-in-projection-issue-97405.rs rename to tests/ui/regions/closure-in-projection-issue-97405.rs diff --git a/src/test/ui/regions/closure-in-projection-issue-97405.stderr b/tests/ui/regions/closure-in-projection-issue-97405.stderr similarity index 100% rename from src/test/ui/regions/closure-in-projection-issue-97405.stderr rename to tests/ui/regions/closure-in-projection-issue-97405.stderr diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs b/tests/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs similarity index 100% rename from src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs rename to tests/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr b/tests/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr similarity index 100% rename from src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr rename to tests/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.rs b/tests/ui/regions/forall-wf-ref-reflexive.rs similarity index 100% rename from src/test/ui/regions/forall-wf-ref-reflexive.rs rename to tests/ui/regions/forall-wf-ref-reflexive.rs diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.stderr b/tests/ui/regions/forall-wf-ref-reflexive.stderr similarity index 100% rename from src/test/ui/regions/forall-wf-ref-reflexive.stderr rename to tests/ui/regions/forall-wf-ref-reflexive.stderr diff --git a/src/test/ui/regions/forall-wf-reflexive.rs b/tests/ui/regions/forall-wf-reflexive.rs similarity index 100% rename from src/test/ui/regions/forall-wf-reflexive.rs rename to tests/ui/regions/forall-wf-reflexive.rs diff --git a/src/test/ui/regions/init-res-into-things.rs b/tests/ui/regions/init-res-into-things.rs similarity index 100% rename from src/test/ui/regions/init-res-into-things.rs rename to tests/ui/regions/init-res-into-things.rs diff --git a/src/test/ui/regions/issue-101280.rs b/tests/ui/regions/issue-101280.rs similarity index 100% rename from src/test/ui/regions/issue-101280.rs rename to tests/ui/regions/issue-101280.rs diff --git a/src/test/ui/regions/issue-101280.stderr b/tests/ui/regions/issue-101280.stderr similarity index 100% rename from src/test/ui/regions/issue-101280.stderr rename to tests/ui/regions/issue-101280.stderr diff --git a/src/test/ui/regions/issue-102374.rs b/tests/ui/regions/issue-102374.rs similarity index 100% rename from src/test/ui/regions/issue-102374.rs rename to tests/ui/regions/issue-102374.rs diff --git a/src/test/ui/regions/issue-102374.stderr b/tests/ui/regions/issue-102374.stderr similarity index 100% rename from src/test/ui/regions/issue-102374.stderr rename to tests/ui/regions/issue-102374.stderr diff --git a/src/test/ui/regions/issue-102392.rs b/tests/ui/regions/issue-102392.rs similarity index 100% rename from src/test/ui/regions/issue-102392.rs rename to tests/ui/regions/issue-102392.rs diff --git a/src/test/ui/regions/issue-102392.stderr b/tests/ui/regions/issue-102392.stderr similarity index 100% rename from src/test/ui/regions/issue-102392.stderr rename to tests/ui/regions/issue-102392.stderr diff --git a/src/test/ui/regions/issue-11612.rs b/tests/ui/regions/issue-11612.rs similarity index 100% rename from src/test/ui/regions/issue-11612.rs rename to tests/ui/regions/issue-11612.rs diff --git a/src/test/ui/regions/issue-12470.rs b/tests/ui/regions/issue-12470.rs similarity index 100% rename from src/test/ui/regions/issue-12470.rs rename to tests/ui/regions/issue-12470.rs diff --git a/src/test/ui/regions/issue-12470.stderr b/tests/ui/regions/issue-12470.stderr similarity index 100% rename from src/test/ui/regions/issue-12470.stderr rename to tests/ui/regions/issue-12470.stderr diff --git a/src/test/ui/regions/issue-21520.rs b/tests/ui/regions/issue-21520.rs similarity index 100% rename from src/test/ui/regions/issue-21520.rs rename to tests/ui/regions/issue-21520.rs diff --git a/src/test/ui/regions/issue-24085.rs b/tests/ui/regions/issue-24085.rs similarity index 100% rename from src/test/ui/regions/issue-24085.rs rename to tests/ui/regions/issue-24085.rs diff --git a/src/test/ui/regions/issue-26448-1.rs b/tests/ui/regions/issue-26448-1.rs similarity index 100% rename from src/test/ui/regions/issue-26448-1.rs rename to tests/ui/regions/issue-26448-1.rs diff --git a/src/test/ui/regions/issue-26448-2.rs b/tests/ui/regions/issue-26448-2.rs similarity index 100% rename from src/test/ui/regions/issue-26448-2.rs rename to tests/ui/regions/issue-26448-2.rs diff --git a/src/test/ui/regions/issue-26448-3.rs b/tests/ui/regions/issue-26448-3.rs similarity index 100% rename from src/test/ui/regions/issue-26448-3.rs rename to tests/ui/regions/issue-26448-3.rs diff --git a/src/test/ui/regions/issue-2718.rs b/tests/ui/regions/issue-2718.rs similarity index 100% rename from src/test/ui/regions/issue-2718.rs rename to tests/ui/regions/issue-2718.rs diff --git a/src/test/ui/regions/issue-28848.rs b/tests/ui/regions/issue-28848.rs similarity index 100% rename from src/test/ui/regions/issue-28848.rs rename to tests/ui/regions/issue-28848.rs diff --git a/src/test/ui/regions/issue-28848.stderr b/tests/ui/regions/issue-28848.stderr similarity index 100% rename from src/test/ui/regions/issue-28848.stderr rename to tests/ui/regions/issue-28848.stderr diff --git a/src/test/ui/regions/issue-5243.rs b/tests/ui/regions/issue-5243.rs similarity index 100% rename from src/test/ui/regions/issue-5243.rs rename to tests/ui/regions/issue-5243.rs diff --git a/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs b/tests/ui/regions/issue-56537-closure-uses-region-from-container.rs similarity index 100% rename from src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs rename to tests/ui/regions/issue-56537-closure-uses-region-from-container.rs diff --git a/src/test/ui/regions/issue-6157.rs b/tests/ui/regions/issue-6157.rs similarity index 100% rename from src/test/ui/regions/issue-6157.rs rename to tests/ui/regions/issue-6157.rs diff --git a/src/test/ui/regions/issue-72051-member-region-hang.rs b/tests/ui/regions/issue-72051-member-region-hang.rs similarity index 100% rename from src/test/ui/regions/issue-72051-member-region-hang.rs rename to tests/ui/regions/issue-72051-member-region-hang.rs diff --git a/src/test/ui/regions/issue-78262.base.stderr b/tests/ui/regions/issue-78262.base.stderr similarity index 100% rename from src/test/ui/regions/issue-78262.base.stderr rename to tests/ui/regions/issue-78262.base.stderr diff --git a/src/test/ui/regions/issue-78262.polonius.stderr b/tests/ui/regions/issue-78262.polonius.stderr similarity index 100% rename from src/test/ui/regions/issue-78262.polonius.stderr rename to tests/ui/regions/issue-78262.polonius.stderr diff --git a/src/test/ui/regions/issue-78262.rs b/tests/ui/regions/issue-78262.rs similarity index 100% rename from src/test/ui/regions/issue-78262.rs rename to tests/ui/regions/issue-78262.rs diff --git a/src/test/ui/regions/outlives-with-missing.rs b/tests/ui/regions/outlives-with-missing.rs similarity index 100% rename from src/test/ui/regions/outlives-with-missing.rs rename to tests/ui/regions/outlives-with-missing.rs diff --git a/src/test/ui/regions/outlives-with-missing.stderr b/tests/ui/regions/outlives-with-missing.stderr similarity index 100% rename from src/test/ui/regions/outlives-with-missing.stderr rename to tests/ui/regions/outlives-with-missing.stderr diff --git a/src/test/ui/regions/owned-implies-static.rs b/tests/ui/regions/owned-implies-static.rs similarity index 100% rename from src/test/ui/regions/owned-implies-static.rs rename to tests/ui/regions/owned-implies-static.rs diff --git a/src/test/ui/regions/rcvr-borrowed-to-region.rs b/tests/ui/regions/rcvr-borrowed-to-region.rs similarity index 100% rename from src/test/ui/regions/rcvr-borrowed-to-region.rs rename to tests/ui/regions/rcvr-borrowed-to-region.rs diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-big.rs b/tests/ui/regions/region-borrow-params-issue-29793-big.rs similarity index 100% rename from src/test/ui/regions/region-borrow-params-issue-29793-big.rs rename to tests/ui/regions/region-borrow-params-issue-29793-big.rs diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-big.stderr b/tests/ui/regions/region-borrow-params-issue-29793-big.stderr similarity index 100% rename from src/test/ui/regions/region-borrow-params-issue-29793-big.stderr rename to tests/ui/regions/region-borrow-params-issue-29793-big.stderr diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-small.rs b/tests/ui/regions/region-borrow-params-issue-29793-small.rs similarity index 100% rename from src/test/ui/regions/region-borrow-params-issue-29793-small.rs rename to tests/ui/regions/region-borrow-params-issue-29793-small.rs diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-small.stderr b/tests/ui/regions/region-borrow-params-issue-29793-small.stderr similarity index 100% rename from src/test/ui/regions/region-borrow-params-issue-29793-small.stderr rename to tests/ui/regions/region-borrow-params-issue-29793-small.stderr diff --git a/src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs b/tests/ui/regions/region-bound-extra-bound-in-inherent-impl.rs similarity index 100% rename from src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs rename to tests/ui/regions/region-bound-extra-bound-in-inherent-impl.rs diff --git a/src/test/ui/regions/region-bound-on-closure-outlives-call.rs b/tests/ui/regions/region-bound-on-closure-outlives-call.rs similarity index 100% rename from src/test/ui/regions/region-bound-on-closure-outlives-call.rs rename to tests/ui/regions/region-bound-on-closure-outlives-call.rs diff --git a/src/test/ui/regions/region-bound-on-closure-outlives-call.stderr b/tests/ui/regions/region-bound-on-closure-outlives-call.stderr similarity index 100% rename from src/test/ui/regions/region-bound-on-closure-outlives-call.stderr rename to tests/ui/regions/region-bound-on-closure-outlives-call.stderr diff --git a/src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs b/tests/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs similarity index 100% rename from src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs rename to tests/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs diff --git a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs b/tests/ui/regions/region-bounds-on-objects-and-type-parameters.rs similarity index 100% rename from src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs rename to tests/ui/regions/region-bounds-on-objects-and-type-parameters.rs diff --git a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr b/tests/ui/regions/region-bounds-on-objects-and-type-parameters.stderr similarity index 100% rename from src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr rename to tests/ui/regions/region-bounds-on-objects-and-type-parameters.stderr diff --git a/src/test/ui/regions/region-invariant-static-error-reporting.rs b/tests/ui/regions/region-invariant-static-error-reporting.rs similarity index 100% rename from src/test/ui/regions/region-invariant-static-error-reporting.rs rename to tests/ui/regions/region-invariant-static-error-reporting.rs diff --git a/src/test/ui/regions/region-invariant-static-error-reporting.stderr b/tests/ui/regions/region-invariant-static-error-reporting.stderr similarity index 100% rename from src/test/ui/regions/region-invariant-static-error-reporting.stderr rename to tests/ui/regions/region-invariant-static-error-reporting.stderr diff --git a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs b/tests/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs similarity index 100% rename from src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs rename to tests/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs diff --git a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr b/tests/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr similarity index 100% rename from src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr rename to tests/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr diff --git a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs b/tests/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs similarity index 100% rename from src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs rename to tests/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs diff --git a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr b/tests/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr similarity index 100% rename from src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr rename to tests/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr diff --git a/src/test/ui/regions/region-object-lifetime-1.rs b/tests/ui/regions/region-object-lifetime-1.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-1.rs rename to tests/ui/regions/region-object-lifetime-1.rs diff --git a/src/test/ui/regions/region-object-lifetime-2.rs b/tests/ui/regions/region-object-lifetime-2.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-2.rs rename to tests/ui/regions/region-object-lifetime-2.rs diff --git a/src/test/ui/regions/region-object-lifetime-2.stderr b/tests/ui/regions/region-object-lifetime-2.stderr similarity index 100% rename from src/test/ui/regions/region-object-lifetime-2.stderr rename to tests/ui/regions/region-object-lifetime-2.stderr diff --git a/src/test/ui/regions/region-object-lifetime-3.rs b/tests/ui/regions/region-object-lifetime-3.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-3.rs rename to tests/ui/regions/region-object-lifetime-3.rs diff --git a/src/test/ui/regions/region-object-lifetime-4.rs b/tests/ui/regions/region-object-lifetime-4.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-4.rs rename to tests/ui/regions/region-object-lifetime-4.rs diff --git a/src/test/ui/regions/region-object-lifetime-4.stderr b/tests/ui/regions/region-object-lifetime-4.stderr similarity index 100% rename from src/test/ui/regions/region-object-lifetime-4.stderr rename to tests/ui/regions/region-object-lifetime-4.stderr diff --git a/src/test/ui/regions/region-object-lifetime-5.rs b/tests/ui/regions/region-object-lifetime-5.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-5.rs rename to tests/ui/regions/region-object-lifetime-5.rs diff --git a/src/test/ui/regions/region-object-lifetime-5.stderr b/tests/ui/regions/region-object-lifetime-5.stderr similarity index 100% rename from src/test/ui/regions/region-object-lifetime-5.stderr rename to tests/ui/regions/region-object-lifetime-5.stderr diff --git a/src/test/ui/regions/region-object-lifetime-in-coercion.rs b/tests/ui/regions/region-object-lifetime-in-coercion.rs similarity index 100% rename from src/test/ui/regions/region-object-lifetime-in-coercion.rs rename to tests/ui/regions/region-object-lifetime-in-coercion.rs diff --git a/src/test/ui/regions/region-object-lifetime-in-coercion.stderr b/tests/ui/regions/region-object-lifetime-in-coercion.stderr similarity index 100% rename from src/test/ui/regions/region-object-lifetime-in-coercion.stderr rename to tests/ui/regions/region-object-lifetime-in-coercion.stderr diff --git a/src/test/ui/regions/regions-addr-of-arg.rs b/tests/ui/regions/regions-addr-of-arg.rs similarity index 100% rename from src/test/ui/regions/regions-addr-of-arg.rs rename to tests/ui/regions/regions-addr-of-arg.rs diff --git a/src/test/ui/regions/regions-addr-of-arg.stderr b/tests/ui/regions/regions-addr-of-arg.stderr similarity index 100% rename from src/test/ui/regions/regions-addr-of-arg.stderr rename to tests/ui/regions/regions-addr-of-arg.stderr diff --git a/src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs b/tests/ui/regions/regions-addr-of-interior-of-unique-box.rs similarity index 100% rename from src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs rename to tests/ui/regions/regions-addr-of-interior-of-unique-box.rs diff --git a/src/test/ui/regions/regions-addr-of-ret.rs b/tests/ui/regions/regions-addr-of-ret.rs similarity index 100% rename from src/test/ui/regions/regions-addr-of-ret.rs rename to tests/ui/regions/regions-addr-of-ret.rs diff --git a/src/test/ui/regions/regions-addr-of-self.rs b/tests/ui/regions/regions-addr-of-self.rs similarity index 100% rename from src/test/ui/regions/regions-addr-of-self.rs rename to tests/ui/regions/regions-addr-of-self.rs diff --git a/src/test/ui/regions/regions-addr-of-self.stderr b/tests/ui/regions/regions-addr-of-self.stderr similarity index 100% rename from src/test/ui/regions/regions-addr-of-self.stderr rename to tests/ui/regions/regions-addr-of-self.stderr diff --git a/src/test/ui/regions/regions-addr-of-upvar-self.rs b/tests/ui/regions/regions-addr-of-upvar-self.rs similarity index 100% rename from src/test/ui/regions/regions-addr-of-upvar-self.rs rename to tests/ui/regions/regions-addr-of-upvar-self.rs diff --git a/src/test/ui/regions/regions-addr-of-upvar-self.stderr b/tests/ui/regions/regions-addr-of-upvar-self.stderr similarity index 100% rename from src/test/ui/regions/regions-addr-of-upvar-self.stderr rename to tests/ui/regions/regions-addr-of-upvar-self.stderr diff --git a/src/test/ui/regions/regions-adjusted-lvalue-op.rs b/tests/ui/regions/regions-adjusted-lvalue-op.rs similarity index 100% rename from src/test/ui/regions/regions-adjusted-lvalue-op.rs rename to tests/ui/regions/regions-adjusted-lvalue-op.rs diff --git a/src/test/ui/regions/regions-adjusted-lvalue-op.stderr b/tests/ui/regions/regions-adjusted-lvalue-op.stderr similarity index 100% rename from src/test/ui/regions/regions-adjusted-lvalue-op.stderr rename to tests/ui/regions/regions-adjusted-lvalue-op.stderr diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs b/tests/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs similarity index 100% rename from src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs rename to tests/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr b/tests/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr similarity index 100% rename from src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr rename to tests/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr diff --git a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs b/tests/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs similarity index 100% rename from src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs rename to tests/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs diff --git a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr b/tests/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr similarity index 100% rename from src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr rename to tests/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr diff --git a/src/test/ui/regions/regions-assoc-type-region-bound.rs b/tests/ui/regions/regions-assoc-type-region-bound.rs similarity index 100% rename from src/test/ui/regions/regions-assoc-type-region-bound.rs rename to tests/ui/regions/regions-assoc-type-region-bound.rs diff --git a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs b/tests/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs similarity index 100% rename from src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs rename to tests/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs diff --git a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr b/tests/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr similarity index 100% rename from src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr rename to tests/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr diff --git a/src/test/ui/regions/regions-assoc-type-static-bound.rs b/tests/ui/regions/regions-assoc-type-static-bound.rs similarity index 100% rename from src/test/ui/regions/regions-assoc-type-static-bound.rs rename to tests/ui/regions/regions-assoc-type-static-bound.rs diff --git a/src/test/ui/regions/regions-borrow-at.rs b/tests/ui/regions/regions-borrow-at.rs similarity index 100% rename from src/test/ui/regions/regions-borrow-at.rs rename to tests/ui/regions/regions-borrow-at.rs diff --git a/src/test/ui/regions/regions-borrow-evec-fixed.rs b/tests/ui/regions/regions-borrow-evec-fixed.rs similarity index 100% rename from src/test/ui/regions/regions-borrow-evec-fixed.rs rename to tests/ui/regions/regions-borrow-evec-fixed.rs diff --git a/src/test/ui/regions/regions-borrow-evec-uniq.rs b/tests/ui/regions/regions-borrow-evec-uniq.rs similarity index 100% rename from src/test/ui/regions/regions-borrow-evec-uniq.rs rename to tests/ui/regions/regions-borrow-evec-uniq.rs diff --git a/src/test/ui/regions/regions-borrow-uniq.rs b/tests/ui/regions/regions-borrow-uniq.rs similarity index 100% rename from src/test/ui/regions/regions-borrow-uniq.rs rename to tests/ui/regions/regions-borrow-uniq.rs diff --git a/src/test/ui/regions/regions-bot.rs b/tests/ui/regions/regions-bot.rs similarity index 100% rename from src/test/ui/regions/regions-bot.rs rename to tests/ui/regions/regions-bot.rs diff --git a/src/test/ui/regions/regions-bound-lists-feature-gate-2.rs b/tests/ui/regions/regions-bound-lists-feature-gate-2.rs similarity index 100% rename from src/test/ui/regions/regions-bound-lists-feature-gate-2.rs rename to tests/ui/regions/regions-bound-lists-feature-gate-2.rs diff --git a/src/test/ui/regions/regions-bound-lists-feature-gate.rs b/tests/ui/regions/regions-bound-lists-feature-gate.rs similarity index 100% rename from src/test/ui/regions/regions-bound-lists-feature-gate.rs rename to tests/ui/regions/regions-bound-lists-feature-gate.rs diff --git a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs b/tests/ui/regions/regions-bounded-by-trait-requiring-static.rs similarity index 100% rename from src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs rename to tests/ui/regions/regions-bounded-by-trait-requiring-static.rs diff --git a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr b/tests/ui/regions/regions-bounded-by-trait-requiring-static.stderr similarity index 100% rename from src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr rename to tests/ui/regions/regions-bounded-by-trait-requiring-static.stderr diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs b/tests/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs rename to tests/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr b/tests/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr rename to tests/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs b/tests/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs rename to tests/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr b/tests/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr rename to tests/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters.rs b/tests/ui/regions/regions-bounded-method-type-parameters.rs similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters.rs rename to tests/ui/regions/regions-bounded-method-type-parameters.rs diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters.stderr b/tests/ui/regions/regions-bounded-method-type-parameters.stderr similarity index 100% rename from src/test/ui/regions/regions-bounded-method-type-parameters.stderr rename to tests/ui/regions/regions-bounded-method-type-parameters.stderr diff --git a/src/test/ui/regions/regions-bounds.rs b/tests/ui/regions/regions-bounds.rs similarity index 100% rename from src/test/ui/regions/regions-bounds.rs rename to tests/ui/regions/regions-bounds.rs diff --git a/src/test/ui/regions/regions-bounds.stderr b/tests/ui/regions/regions-bounds.stderr similarity index 100% rename from src/test/ui/regions/regions-bounds.stderr rename to tests/ui/regions/regions-bounds.stderr diff --git a/src/test/ui/regions/regions-close-associated-type-into-object.rs b/tests/ui/regions/regions-close-associated-type-into-object.rs similarity index 100% rename from src/test/ui/regions/regions-close-associated-type-into-object.rs rename to tests/ui/regions/regions-close-associated-type-into-object.rs diff --git a/src/test/ui/regions/regions-close-associated-type-into-object.stderr b/tests/ui/regions/regions-close-associated-type-into-object.stderr similarity index 100% rename from src/test/ui/regions/regions-close-associated-type-into-object.stderr rename to tests/ui/regions/regions-close-associated-type-into-object.stderr diff --git a/src/test/ui/regions/regions-close-object-into-object-1.rs b/tests/ui/regions/regions-close-object-into-object-1.rs similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-1.rs rename to tests/ui/regions/regions-close-object-into-object-1.rs diff --git a/src/test/ui/regions/regions-close-object-into-object-1.stderr b/tests/ui/regions/regions-close-object-into-object-1.stderr similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-1.stderr rename to tests/ui/regions/regions-close-object-into-object-1.stderr diff --git a/src/test/ui/regions/regions-close-object-into-object-2.rs b/tests/ui/regions/regions-close-object-into-object-2.rs similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-2.rs rename to tests/ui/regions/regions-close-object-into-object-2.rs diff --git a/src/test/ui/regions/regions-close-object-into-object-2.stderr b/tests/ui/regions/regions-close-object-into-object-2.stderr similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-2.stderr rename to tests/ui/regions/regions-close-object-into-object-2.stderr diff --git a/src/test/ui/regions/regions-close-object-into-object-3.rs b/tests/ui/regions/regions-close-object-into-object-3.rs similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-3.rs rename to tests/ui/regions/regions-close-object-into-object-3.rs diff --git a/src/test/ui/regions/regions-close-object-into-object-3.stderr b/tests/ui/regions/regions-close-object-into-object-3.stderr similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-3.stderr rename to tests/ui/regions/regions-close-object-into-object-3.stderr diff --git a/src/test/ui/regions/regions-close-object-into-object-4.rs b/tests/ui/regions/regions-close-object-into-object-4.rs similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-4.rs rename to tests/ui/regions/regions-close-object-into-object-4.rs diff --git a/src/test/ui/regions/regions-close-object-into-object-4.stderr b/tests/ui/regions/regions-close-object-into-object-4.stderr similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-4.stderr rename to tests/ui/regions/regions-close-object-into-object-4.stderr diff --git a/src/test/ui/regions/regions-close-object-into-object-5.rs b/tests/ui/regions/regions-close-object-into-object-5.rs similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-5.rs rename to tests/ui/regions/regions-close-object-into-object-5.rs diff --git a/src/test/ui/regions/regions-close-object-into-object-5.stderr b/tests/ui/regions/regions-close-object-into-object-5.stderr similarity index 100% rename from src/test/ui/regions/regions-close-object-into-object-5.stderr rename to tests/ui/regions/regions-close-object-into-object-5.stderr diff --git a/src/test/ui/regions/regions-close-over-type-parameter-1.rs b/tests/ui/regions/regions-close-over-type-parameter-1.rs similarity index 100% rename from src/test/ui/regions/regions-close-over-type-parameter-1.rs rename to tests/ui/regions/regions-close-over-type-parameter-1.rs diff --git a/src/test/ui/regions/regions-close-over-type-parameter-1.stderr b/tests/ui/regions/regions-close-over-type-parameter-1.stderr similarity index 100% rename from src/test/ui/regions/regions-close-over-type-parameter-1.stderr rename to tests/ui/regions/regions-close-over-type-parameter-1.stderr diff --git a/src/test/ui/regions/regions-close-over-type-parameter-multiple.rs b/tests/ui/regions/regions-close-over-type-parameter-multiple.rs similarity index 100% rename from src/test/ui/regions/regions-close-over-type-parameter-multiple.rs rename to tests/ui/regions/regions-close-over-type-parameter-multiple.rs diff --git a/src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr b/tests/ui/regions/regions-close-over-type-parameter-multiple.stderr similarity index 100% rename from src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr rename to tests/ui/regions/regions-close-over-type-parameter-multiple.stderr diff --git a/src/test/ui/regions/regions-close-over-type-parameter-successfully.rs b/tests/ui/regions/regions-close-over-type-parameter-successfully.rs similarity index 100% rename from src/test/ui/regions/regions-close-over-type-parameter-successfully.rs rename to tests/ui/regions/regions-close-over-type-parameter-successfully.rs diff --git a/src/test/ui/regions/regions-close-param-into-object.rs b/tests/ui/regions/regions-close-param-into-object.rs similarity index 100% rename from src/test/ui/regions/regions-close-param-into-object.rs rename to tests/ui/regions/regions-close-param-into-object.rs diff --git a/src/test/ui/regions/regions-close-param-into-object.stderr b/tests/ui/regions/regions-close-param-into-object.stderr similarity index 100% rename from src/test/ui/regions/regions-close-param-into-object.stderr rename to tests/ui/regions/regions-close-param-into-object.stderr diff --git a/src/test/ui/regions/regions-copy-closure.rs b/tests/ui/regions/regions-copy-closure.rs similarity index 100% rename from src/test/ui/regions/regions-copy-closure.rs rename to tests/ui/regions/regions-copy-closure.rs diff --git a/src/test/ui/regions/regions-creating-enums.rs b/tests/ui/regions/regions-creating-enums.rs similarity index 100% rename from src/test/ui/regions/regions-creating-enums.rs rename to tests/ui/regions/regions-creating-enums.rs diff --git a/src/test/ui/regions/regions-creating-enums.stderr b/tests/ui/regions/regions-creating-enums.stderr similarity index 100% rename from src/test/ui/regions/regions-creating-enums.stderr rename to tests/ui/regions/regions-creating-enums.stderr diff --git a/src/test/ui/regions/regions-creating-enums2.rs b/tests/ui/regions/regions-creating-enums2.rs similarity index 100% rename from src/test/ui/regions/regions-creating-enums2.rs rename to tests/ui/regions/regions-creating-enums2.rs diff --git a/src/test/ui/regions/regions-creating-enums3.rs b/tests/ui/regions/regions-creating-enums3.rs similarity index 100% rename from src/test/ui/regions/regions-creating-enums3.rs rename to tests/ui/regions/regions-creating-enums3.rs diff --git a/src/test/ui/regions/regions-creating-enums3.stderr b/tests/ui/regions/regions-creating-enums3.stderr similarity index 100% rename from src/test/ui/regions/regions-creating-enums3.stderr rename to tests/ui/regions/regions-creating-enums3.stderr diff --git a/src/test/ui/regions/regions-creating-enums4.rs b/tests/ui/regions/regions-creating-enums4.rs similarity index 100% rename from src/test/ui/regions/regions-creating-enums4.rs rename to tests/ui/regions/regions-creating-enums4.rs diff --git a/src/test/ui/regions/regions-creating-enums4.stderr b/tests/ui/regions/regions-creating-enums4.stderr similarity index 100% rename from src/test/ui/regions/regions-creating-enums4.stderr rename to tests/ui/regions/regions-creating-enums4.stderr diff --git a/src/test/ui/regions/regions-creating-enums5.rs b/tests/ui/regions/regions-creating-enums5.rs similarity index 100% rename from src/test/ui/regions/regions-creating-enums5.rs rename to tests/ui/regions/regions-creating-enums5.rs diff --git a/src/test/ui/regions/regions-debruijn-of-object.rs b/tests/ui/regions/regions-debruijn-of-object.rs similarity index 100% rename from src/test/ui/regions/regions-debruijn-of-object.rs rename to tests/ui/regions/regions-debruijn-of-object.rs diff --git a/src/test/ui/regions/regions-dependent-addr-of.rs b/tests/ui/regions/regions-dependent-addr-of.rs similarity index 100% rename from src/test/ui/regions/regions-dependent-addr-of.rs rename to tests/ui/regions/regions-dependent-addr-of.rs diff --git a/src/test/ui/regions/regions-dependent-autofn.rs b/tests/ui/regions/regions-dependent-autofn.rs similarity index 100% rename from src/test/ui/regions/regions-dependent-autofn.rs rename to tests/ui/regions/regions-dependent-autofn.rs diff --git a/src/test/ui/regions/regions-dependent-autoslice.rs b/tests/ui/regions/regions-dependent-autoslice.rs similarity index 100% rename from src/test/ui/regions/regions-dependent-autoslice.rs rename to tests/ui/regions/regions-dependent-autoslice.rs diff --git a/src/test/ui/regions/regions-dependent-let-ref.rs b/tests/ui/regions/regions-dependent-let-ref.rs similarity index 100% rename from src/test/ui/regions/regions-dependent-let-ref.rs rename to tests/ui/regions/regions-dependent-let-ref.rs diff --git a/src/test/ui/regions/regions-early-bound-error-method.rs b/tests/ui/regions/regions-early-bound-error-method.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-error-method.rs rename to tests/ui/regions/regions-early-bound-error-method.rs diff --git a/src/test/ui/regions/regions-early-bound-error-method.stderr b/tests/ui/regions/regions-early-bound-error-method.stderr similarity index 100% rename from src/test/ui/regions/regions-early-bound-error-method.stderr rename to tests/ui/regions/regions-early-bound-error-method.stderr diff --git a/src/test/ui/regions/regions-early-bound-error.rs b/tests/ui/regions/regions-early-bound-error.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-error.rs rename to tests/ui/regions/regions-early-bound-error.rs diff --git a/src/test/ui/regions/regions-early-bound-error.stderr b/tests/ui/regions/regions-early-bound-error.stderr similarity index 100% rename from src/test/ui/regions/regions-early-bound-error.stderr rename to tests/ui/regions/regions-early-bound-error.stderr diff --git a/src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs b/tests/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs rename to tests/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs diff --git a/src/test/ui/regions/regions-early-bound-trait-param.rs b/tests/ui/regions/regions-early-bound-trait-param.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-trait-param.rs rename to tests/ui/regions/regions-early-bound-trait-param.rs diff --git a/src/test/ui/regions/regions-early-bound-used-in-bound-method.rs b/tests/ui/regions/regions-early-bound-used-in-bound-method.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-used-in-bound-method.rs rename to tests/ui/regions/regions-early-bound-used-in-bound-method.rs diff --git a/src/test/ui/regions/regions-early-bound-used-in-bound.rs b/tests/ui/regions/regions-early-bound-used-in-bound.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-used-in-bound.rs rename to tests/ui/regions/regions-early-bound-used-in-bound.rs diff --git a/src/test/ui/regions/regions-early-bound-used-in-type-param.rs b/tests/ui/regions/regions-early-bound-used-in-type-param.rs similarity index 100% rename from src/test/ui/regions/regions-early-bound-used-in-type-param.rs rename to tests/ui/regions/regions-early-bound-used-in-type-param.rs diff --git a/src/test/ui/regions/regions-escape-into-other-fn.rs b/tests/ui/regions/regions-escape-into-other-fn.rs similarity index 100% rename from src/test/ui/regions/regions-escape-into-other-fn.rs rename to tests/ui/regions/regions-escape-into-other-fn.rs diff --git a/src/test/ui/regions/regions-escape-method.rs b/tests/ui/regions/regions-escape-method.rs similarity index 100% rename from src/test/ui/regions/regions-escape-method.rs rename to tests/ui/regions/regions-escape-method.rs diff --git a/src/test/ui/regions/regions-escape-method.stderr b/tests/ui/regions/regions-escape-method.stderr similarity index 100% rename from src/test/ui/regions/regions-escape-method.stderr rename to tests/ui/regions/regions-escape-method.stderr diff --git a/src/test/ui/regions/regions-escape-via-trait-or-not.rs b/tests/ui/regions/regions-escape-via-trait-or-not.rs similarity index 100% rename from src/test/ui/regions/regions-escape-via-trait-or-not.rs rename to tests/ui/regions/regions-escape-via-trait-or-not.rs diff --git a/src/test/ui/regions/regions-escape-via-trait-or-not.stderr b/tests/ui/regions/regions-escape-via-trait-or-not.stderr similarity index 100% rename from src/test/ui/regions/regions-escape-via-trait-or-not.stderr rename to tests/ui/regions/regions-escape-via-trait-or-not.stderr diff --git a/src/test/ui/regions/regions-expl-self.rs b/tests/ui/regions/regions-expl-self.rs similarity index 100% rename from src/test/ui/regions/regions-expl-self.rs rename to tests/ui/regions/regions-expl-self.rs diff --git a/src/test/ui/regions/regions-fn-subtyping-2.rs b/tests/ui/regions/regions-fn-subtyping-2.rs similarity index 100% rename from src/test/ui/regions/regions-fn-subtyping-2.rs rename to tests/ui/regions/regions-fn-subtyping-2.rs diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs b/tests/ui/regions/regions-fn-subtyping-return-static-fail.rs similarity index 100% rename from src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs rename to tests/ui/regions/regions-fn-subtyping-return-static-fail.rs diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr b/tests/ui/regions/regions-fn-subtyping-return-static-fail.stderr similarity index 100% rename from src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr rename to tests/ui/regions/regions-fn-subtyping-return-static-fail.stderr diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static.rs b/tests/ui/regions/regions-fn-subtyping-return-static.rs similarity index 100% rename from src/test/ui/regions/regions-fn-subtyping-return-static.rs rename to tests/ui/regions/regions-fn-subtyping-return-static.rs diff --git a/src/test/ui/regions/regions-fn-subtyping.rs b/tests/ui/regions/regions-fn-subtyping.rs similarity index 100% rename from src/test/ui/regions/regions-fn-subtyping.rs rename to tests/ui/regions/regions-fn-subtyping.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-callee-4.rs b/tests/ui/regions/regions-free-region-ordering-callee-4.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-callee-4.rs rename to tests/ui/regions/regions-free-region-ordering-callee-4.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-callee-4.stderr b/tests/ui/regions/regions-free-region-ordering-callee-4.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-callee-4.stderr rename to tests/ui/regions/regions-free-region-ordering-callee-4.stderr diff --git a/src/test/ui/regions/regions-free-region-ordering-callee.rs b/tests/ui/regions/regions-free-region-ordering-callee.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-callee.rs rename to tests/ui/regions/regions-free-region-ordering-callee.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-callee.stderr b/tests/ui/regions/regions-free-region-ordering-callee.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-callee.stderr rename to tests/ui/regions/regions-free-region-ordering-callee.stderr diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.rs b/tests/ui/regions/regions-free-region-ordering-caller.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-caller.rs rename to tests/ui/regions/regions-free-region-ordering-caller.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.stderr b/tests/ui/regions/regions-free-region-ordering-caller.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-caller.stderr rename to tests/ui/regions/regions-free-region-ordering-caller.stderr diff --git a/src/test/ui/regions/regions-free-region-ordering-caller1.rs b/tests/ui/regions/regions-free-region-ordering-caller1.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-caller1.rs rename to tests/ui/regions/regions-free-region-ordering-caller1.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-caller1.stderr b/tests/ui/regions/regions-free-region-ordering-caller1.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-caller1.stderr rename to tests/ui/regions/regions-free-region-ordering-caller1.stderr diff --git a/src/test/ui/regions/regions-free-region-ordering-incorrect.rs b/tests/ui/regions/regions-free-region-ordering-incorrect.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-incorrect.rs rename to tests/ui/regions/regions-free-region-ordering-incorrect.rs diff --git a/src/test/ui/regions/regions-free-region-ordering-incorrect.stderr b/tests/ui/regions/regions-free-region-ordering-incorrect.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-ordering-incorrect.stderr rename to tests/ui/regions/regions-free-region-ordering-incorrect.stderr diff --git a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs b/tests/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs similarity index 100% rename from src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs rename to tests/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs diff --git a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr b/tests/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr similarity index 100% rename from src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr rename to tests/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr diff --git a/src/test/ui/regions/regions-glb-free-free.rs b/tests/ui/regions/regions-glb-free-free.rs similarity index 100% rename from src/test/ui/regions/regions-glb-free-free.rs rename to tests/ui/regions/regions-glb-free-free.rs diff --git a/src/test/ui/regions/regions-glb-free-free.stderr b/tests/ui/regions/regions-glb-free-free.stderr similarity index 100% rename from src/test/ui/regions/regions-glb-free-free.stderr rename to tests/ui/regions/regions-glb-free-free.stderr diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs b/tests/ui/regions/regions-implied-bounds-projection-gap-1.rs similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs rename to tests/ui/regions/regions-implied-bounds-projection-gap-1.rs diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr b/tests/ui/regions/regions-implied-bounds-projection-gap-1.stderr similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr rename to tests/ui/regions/regions-implied-bounds-projection-gap-1.stderr diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs b/tests/ui/regions/regions-implied-bounds-projection-gap-2.rs similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs rename to tests/ui/regions/regions-implied-bounds-projection-gap-2.rs diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs b/tests/ui/regions/regions-implied-bounds-projection-gap-3.rs similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs rename to tests/ui/regions/regions-implied-bounds-projection-gap-3.rs diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs b/tests/ui/regions/regions-implied-bounds-projection-gap-4.rs similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs rename to tests/ui/regions/regions-implied-bounds-projection-gap-4.rs diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs b/tests/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs rename to tests/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr b/tests/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr similarity index 100% rename from src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr rename to tests/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr diff --git a/src/test/ui/regions/regions-in-enums-anon.rs b/tests/ui/regions/regions-in-enums-anon.rs similarity index 100% rename from src/test/ui/regions/regions-in-enums-anon.rs rename to tests/ui/regions/regions-in-enums-anon.rs diff --git a/src/test/ui/regions/regions-in-enums-anon.stderr b/tests/ui/regions/regions-in-enums-anon.stderr similarity index 100% rename from src/test/ui/regions/regions-in-enums-anon.stderr rename to tests/ui/regions/regions-in-enums-anon.stderr diff --git a/src/test/ui/regions/regions-in-enums.rs b/tests/ui/regions/regions-in-enums.rs similarity index 100% rename from src/test/ui/regions/regions-in-enums.rs rename to tests/ui/regions/regions-in-enums.rs diff --git a/src/test/ui/regions/regions-in-enums.stderr b/tests/ui/regions/regions-in-enums.stderr similarity index 100% rename from src/test/ui/regions/regions-in-enums.stderr rename to tests/ui/regions/regions-in-enums.stderr diff --git a/src/test/ui/regions/regions-in-structs-anon.rs b/tests/ui/regions/regions-in-structs-anon.rs similarity index 100% rename from src/test/ui/regions/regions-in-structs-anon.rs rename to tests/ui/regions/regions-in-structs-anon.rs diff --git a/src/test/ui/regions/regions-in-structs-anon.stderr b/tests/ui/regions/regions-in-structs-anon.stderr similarity index 100% rename from src/test/ui/regions/regions-in-structs-anon.stderr rename to tests/ui/regions/regions-in-structs-anon.stderr diff --git a/src/test/ui/regions/regions-in-structs.rs b/tests/ui/regions/regions-in-structs.rs similarity index 100% rename from src/test/ui/regions/regions-in-structs.rs rename to tests/ui/regions/regions-in-structs.rs diff --git a/src/test/ui/regions/regions-in-structs.stderr b/tests/ui/regions/regions-in-structs.stderr similarity index 100% rename from src/test/ui/regions/regions-in-structs.stderr rename to tests/ui/regions/regions-in-structs.stderr diff --git a/src/test/ui/regions/regions-infer-at-fn-not-param.rs b/tests/ui/regions/regions-infer-at-fn-not-param.rs similarity index 100% rename from src/test/ui/regions/regions-infer-at-fn-not-param.rs rename to tests/ui/regions/regions-infer-at-fn-not-param.rs diff --git a/src/test/ui/regions/regions-infer-at-fn-not-param.stderr b/tests/ui/regions/regions-infer-at-fn-not-param.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-at-fn-not-param.stderr rename to tests/ui/regions/regions-infer-at-fn-not-param.stderr diff --git a/src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs b/tests/ui/regions/regions-infer-borrow-scope-addr-of.rs similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs rename to tests/ui/regions/regions-infer-borrow-scope-addr-of.rs diff --git a/src/test/ui/regions/regions-infer-borrow-scope-too-big.rs b/tests/ui/regions/regions-infer-borrow-scope-too-big.rs similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope-too-big.rs rename to tests/ui/regions/regions-infer-borrow-scope-too-big.rs diff --git a/src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr b/tests/ui/regions/regions-infer-borrow-scope-too-big.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr rename to tests/ui/regions/regions-infer-borrow-scope-too-big.stderr diff --git a/src/test/ui/regions/regions-infer-borrow-scope-view.rs b/tests/ui/regions/regions-infer-borrow-scope-view.rs similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope-view.rs rename to tests/ui/regions/regions-infer-borrow-scope-view.rs diff --git a/src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs b/tests/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs rename to tests/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs diff --git a/src/test/ui/regions/regions-infer-borrow-scope.rs b/tests/ui/regions/regions-infer-borrow-scope.rs similarity index 100% rename from src/test/ui/regions/regions-infer-borrow-scope.rs rename to tests/ui/regions/regions-infer-borrow-scope.rs diff --git a/src/test/ui/regions/regions-infer-bound-from-trait-self.rs b/tests/ui/regions/regions-infer-bound-from-trait-self.rs similarity index 100% rename from src/test/ui/regions/regions-infer-bound-from-trait-self.rs rename to tests/ui/regions/regions-infer-bound-from-trait-self.rs diff --git a/src/test/ui/regions/regions-infer-bound-from-trait-self.stderr b/tests/ui/regions/regions-infer-bound-from-trait-self.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-bound-from-trait-self.stderr rename to tests/ui/regions/regions-infer-bound-from-trait-self.stderr diff --git a/src/test/ui/regions/regions-infer-bound-from-trait.rs b/tests/ui/regions/regions-infer-bound-from-trait.rs similarity index 100% rename from src/test/ui/regions/regions-infer-bound-from-trait.rs rename to tests/ui/regions/regions-infer-bound-from-trait.rs diff --git a/src/test/ui/regions/regions-infer-bound-from-trait.stderr b/tests/ui/regions/regions-infer-bound-from-trait.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-bound-from-trait.stderr rename to tests/ui/regions/regions-infer-bound-from-trait.stderr diff --git a/src/test/ui/regions/regions-infer-call-2.rs b/tests/ui/regions/regions-infer-call-2.rs similarity index 100% rename from src/test/ui/regions/regions-infer-call-2.rs rename to tests/ui/regions/regions-infer-call-2.rs diff --git a/src/test/ui/regions/regions-infer-call-3.rs b/tests/ui/regions/regions-infer-call-3.rs similarity index 100% rename from src/test/ui/regions/regions-infer-call-3.rs rename to tests/ui/regions/regions-infer-call-3.rs diff --git a/src/test/ui/regions/regions-infer-call-3.stderr b/tests/ui/regions/regions-infer-call-3.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-call-3.stderr rename to tests/ui/regions/regions-infer-call-3.stderr diff --git a/src/test/ui/regions/regions-infer-call.rs b/tests/ui/regions/regions-infer-call.rs similarity index 100% rename from src/test/ui/regions/regions-infer-call.rs rename to tests/ui/regions/regions-infer-call.rs diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs b/tests/ui/regions/regions-infer-contravariance-due-to-decl.rs similarity index 100% rename from src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs rename to tests/ui/regions/regions-infer-contravariance-due-to-decl.rs diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr b/tests/ui/regions/regions-infer-contravariance-due-to-decl.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr rename to tests/ui/regions/regions-infer-contravariance-due-to-decl.stderr diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs b/tests/ui/regions/regions-infer-contravariance-due-to-ret.rs similarity index 100% rename from src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs rename to tests/ui/regions/regions-infer-contravariance-due-to-ret.rs diff --git a/src/test/ui/regions/regions-infer-covariance-due-to-decl.rs b/tests/ui/regions/regions-infer-covariance-due-to-decl.rs similarity index 100% rename from src/test/ui/regions/regions-infer-covariance-due-to-decl.rs rename to tests/ui/regions/regions-infer-covariance-due-to-decl.rs diff --git a/src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr b/tests/ui/regions/regions-infer-covariance-due-to-decl.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr rename to tests/ui/regions/regions-infer-covariance-due-to-decl.stderr diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-decl.rs b/tests/ui/regions/regions-infer-invariance-due-to-decl.rs similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-decl.rs rename to tests/ui/regions/regions-infer-invariance-due-to-decl.rs diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr b/tests/ui/regions/regions-infer-invariance-due-to-decl.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr rename to tests/ui/regions/regions-infer-invariance-due-to-decl.stderr diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs b/tests/ui/regions/regions-infer-invariance-due-to-mutability-3.rs similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs rename to tests/ui/regions/regions-infer-invariance-due-to-mutability-3.rs diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr b/tests/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr rename to tests/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs b/tests/ui/regions/regions-infer-invariance-due-to-mutability-4.rs similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs rename to tests/ui/regions/regions-infer-invariance-due-to-mutability-4.rs diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr b/tests/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr rename to tests/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr diff --git a/src/test/ui/regions/regions-infer-not-param.rs b/tests/ui/regions/regions-infer-not-param.rs similarity index 100% rename from src/test/ui/regions/regions-infer-not-param.rs rename to tests/ui/regions/regions-infer-not-param.rs diff --git a/src/test/ui/regions/regions-infer-not-param.stderr b/tests/ui/regions/regions-infer-not-param.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-not-param.stderr rename to tests/ui/regions/regions-infer-not-param.stderr diff --git a/src/test/ui/regions/regions-infer-paramd-indirect.rs b/tests/ui/regions/regions-infer-paramd-indirect.rs similarity index 100% rename from src/test/ui/regions/regions-infer-paramd-indirect.rs rename to tests/ui/regions/regions-infer-paramd-indirect.rs diff --git a/src/test/ui/regions/regions-infer-paramd-indirect.stderr b/tests/ui/regions/regions-infer-paramd-indirect.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-paramd-indirect.stderr rename to tests/ui/regions/regions-infer-paramd-indirect.stderr diff --git a/src/test/ui/regions/regions-infer-proc-static-upvar.rs b/tests/ui/regions/regions-infer-proc-static-upvar.rs similarity index 100% rename from src/test/ui/regions/regions-infer-proc-static-upvar.rs rename to tests/ui/regions/regions-infer-proc-static-upvar.rs diff --git a/src/test/ui/regions/regions-infer-proc-static-upvar.stderr b/tests/ui/regions/regions-infer-proc-static-upvar.stderr similarity index 100% rename from src/test/ui/regions/regions-infer-proc-static-upvar.stderr rename to tests/ui/regions/regions-infer-proc-static-upvar.stderr diff --git a/src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs b/tests/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs similarity index 100% rename from src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs rename to tests/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs diff --git a/src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs b/tests/ui/regions/regions-infer-region-in-fn-but-not-type.rs similarity index 100% rename from src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs rename to tests/ui/regions/regions-infer-region-in-fn-but-not-type.rs diff --git a/src/test/ui/regions/regions-infer-static-from-proc.rs b/tests/ui/regions/regions-infer-static-from-proc.rs similarity index 100% rename from src/test/ui/regions/regions-infer-static-from-proc.rs rename to tests/ui/regions/regions-infer-static-from-proc.rs diff --git a/src/test/ui/regions/regions-issue-21422.rs b/tests/ui/regions/regions-issue-21422.rs similarity index 100% rename from src/test/ui/regions/regions-issue-21422.rs rename to tests/ui/regions/regions-issue-21422.rs diff --git a/src/test/ui/regions/regions-issue-22246.rs b/tests/ui/regions/regions-issue-22246.rs similarity index 100% rename from src/test/ui/regions/regions-issue-22246.rs rename to tests/ui/regions/regions-issue-22246.rs diff --git a/src/test/ui/regions/regions-lifetime-bounds-on-fns.rs b/tests/ui/regions/regions-lifetime-bounds-on-fns.rs similarity index 100% rename from src/test/ui/regions/regions-lifetime-bounds-on-fns.rs rename to tests/ui/regions/regions-lifetime-bounds-on-fns.rs diff --git a/src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr b/tests/ui/regions/regions-lifetime-bounds-on-fns.stderr similarity index 100% rename from src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr rename to tests/ui/regions/regions-lifetime-bounds-on-fns.stderr diff --git a/src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs b/tests/ui/regions/regions-lifetime-nonfree-late-bound.rs similarity index 100% rename from src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs rename to tests/ui/regions/regions-lifetime-nonfree-late-bound.rs diff --git a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs b/tests/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs similarity index 100% rename from src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs rename to tests/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs diff --git a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr b/tests/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr similarity index 100% rename from src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr rename to tests/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr diff --git a/src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs b/tests/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs similarity index 100% rename from src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs rename to tests/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs diff --git a/src/test/ui/regions/regions-link-fn-args.rs b/tests/ui/regions/regions-link-fn-args.rs similarity index 100% rename from src/test/ui/regions/regions-link-fn-args.rs rename to tests/ui/regions/regions-link-fn-args.rs diff --git a/src/test/ui/regions/regions-lub-ref-ref-rc.rs b/tests/ui/regions/regions-lub-ref-ref-rc.rs similarity index 100% rename from src/test/ui/regions/regions-lub-ref-ref-rc.rs rename to tests/ui/regions/regions-lub-ref-ref-rc.rs diff --git a/src/test/ui/regions/regions-mock-codegen.rs b/tests/ui/regions/regions-mock-codegen.rs similarity index 100% rename from src/test/ui/regions/regions-mock-codegen.rs rename to tests/ui/regions/regions-mock-codegen.rs diff --git a/src/test/ui/regions/regions-name-duplicated.rs b/tests/ui/regions/regions-name-duplicated.rs similarity index 100% rename from src/test/ui/regions/regions-name-duplicated.rs rename to tests/ui/regions/regions-name-duplicated.rs diff --git a/src/test/ui/regions/regions-name-duplicated.stderr b/tests/ui/regions/regions-name-duplicated.stderr similarity index 100% rename from src/test/ui/regions/regions-name-duplicated.stderr rename to tests/ui/regions/regions-name-duplicated.stderr diff --git a/src/test/ui/regions/regions-name-static.rs b/tests/ui/regions/regions-name-static.rs similarity index 100% rename from src/test/ui/regions/regions-name-static.rs rename to tests/ui/regions/regions-name-static.rs diff --git a/src/test/ui/regions/regions-name-static.stderr b/tests/ui/regions/regions-name-static.stderr similarity index 100% rename from src/test/ui/regions/regions-name-static.stderr rename to tests/ui/regions/regions-name-static.stderr diff --git a/src/test/ui/regions/regions-name-undeclared.rs b/tests/ui/regions/regions-name-undeclared.rs similarity index 100% rename from src/test/ui/regions/regions-name-undeclared.rs rename to tests/ui/regions/regions-name-undeclared.rs diff --git a/src/test/ui/regions/regions-name-undeclared.stderr b/tests/ui/regions/regions-name-undeclared.stderr similarity index 100% rename from src/test/ui/regions/regions-name-undeclared.stderr rename to tests/ui/regions/regions-name-undeclared.stderr diff --git a/src/test/ui/regions/regions-nested-fns-2.rs b/tests/ui/regions/regions-nested-fns-2.rs similarity index 100% rename from src/test/ui/regions/regions-nested-fns-2.rs rename to tests/ui/regions/regions-nested-fns-2.rs diff --git a/src/test/ui/regions/regions-nested-fns-2.stderr b/tests/ui/regions/regions-nested-fns-2.stderr similarity index 100% rename from src/test/ui/regions/regions-nested-fns-2.stderr rename to tests/ui/regions/regions-nested-fns-2.stderr diff --git a/src/test/ui/regions/regions-nested-fns.rs b/tests/ui/regions/regions-nested-fns.rs similarity index 100% rename from src/test/ui/regions/regions-nested-fns.rs rename to tests/ui/regions/regions-nested-fns.rs diff --git a/src/test/ui/regions/regions-nested-fns.stderr b/tests/ui/regions/regions-nested-fns.stderr similarity index 100% rename from src/test/ui/regions/regions-nested-fns.stderr rename to tests/ui/regions/regions-nested-fns.stderr diff --git a/src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs b/tests/ui/regions/regions-no-bound-in-argument-cleanup.rs similarity index 100% rename from src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs rename to tests/ui/regions/regions-no-bound-in-argument-cleanup.rs diff --git a/src/test/ui/regions/regions-no-variance-from-fn-generics.rs b/tests/ui/regions/regions-no-variance-from-fn-generics.rs similarity index 100% rename from src/test/ui/regions/regions-no-variance-from-fn-generics.rs rename to tests/ui/regions/regions-no-variance-from-fn-generics.rs diff --git a/src/test/ui/regions/regions-normalize-in-where-clause-list.rs b/tests/ui/regions/regions-normalize-in-where-clause-list.rs similarity index 100% rename from src/test/ui/regions/regions-normalize-in-where-clause-list.rs rename to tests/ui/regions/regions-normalize-in-where-clause-list.rs diff --git a/src/test/ui/regions/regions-normalize-in-where-clause-list.stderr b/tests/ui/regions/regions-normalize-in-where-clause-list.stderr similarity index 100% rename from src/test/ui/regions/regions-normalize-in-where-clause-list.stderr rename to tests/ui/regions/regions-normalize-in-where-clause-list.stderr diff --git a/src/test/ui/regions/regions-nullary-variant.rs b/tests/ui/regions/regions-nullary-variant.rs similarity index 100% rename from src/test/ui/regions/regions-nullary-variant.rs rename to tests/ui/regions/regions-nullary-variant.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs b/tests/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs rename to tests/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs b/tests/ui/regions/regions-outlives-nominal-type-enum-region.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs rename to tests/ui/regions/regions-outlives-nominal-type-enum-region.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs b/tests/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs rename to tests/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs b/tests/ui/regions/regions-outlives-nominal-type-enum-type.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs rename to tests/ui/regions/regions-outlives-nominal-type-enum-type.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs b/tests/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs rename to tests/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs b/tests/ui/regions/regions-outlives-nominal-type-struct-region.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs rename to tests/ui/regions/regions-outlives-nominal-type-struct-region.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs b/tests/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs rename to tests/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs b/tests/ui/regions/regions-outlives-nominal-type-struct-type.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs rename to tests/ui/regions/regions-outlives-nominal-type-struct-type.rs diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.rs b/tests/ui/regions/regions-outlives-projection-container-hrtb.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container-hrtb.rs rename to tests/ui/regions/regions-outlives-projection-container-hrtb.rs diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr b/tests/ui/regions/regions-outlives-projection-container-hrtb.stderr similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr rename to tests/ui/regions/regions-outlives-projection-container-hrtb.stderr diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.rs b/tests/ui/regions/regions-outlives-projection-container-wc.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container-wc.rs rename to tests/ui/regions/regions-outlives-projection-container-wc.rs diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr b/tests/ui/regions/regions-outlives-projection-container-wc.stderr similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container-wc.stderr rename to tests/ui/regions/regions-outlives-projection-container-wc.stderr diff --git a/src/test/ui/regions/regions-outlives-projection-container.rs b/tests/ui/regions/regions-outlives-projection-container.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container.rs rename to tests/ui/regions/regions-outlives-projection-container.rs diff --git a/src/test/ui/regions/regions-outlives-projection-container.stderr b/tests/ui/regions/regions-outlives-projection-container.stderr similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-container.stderr rename to tests/ui/regions/regions-outlives-projection-container.stderr diff --git a/src/test/ui/regions/regions-outlives-projection-hrtype.rs b/tests/ui/regions/regions-outlives-projection-hrtype.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-hrtype.rs rename to tests/ui/regions/regions-outlives-projection-hrtype.rs diff --git a/src/test/ui/regions/regions-outlives-projection-trait-def.rs b/tests/ui/regions/regions-outlives-projection-trait-def.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-projection-trait-def.rs rename to tests/ui/regions/regions-outlives-projection-trait-def.rs diff --git a/src/test/ui/regions/regions-outlives-scalar.rs b/tests/ui/regions/regions-outlives-scalar.rs similarity index 100% rename from src/test/ui/regions/regions-outlives-scalar.rs rename to tests/ui/regions/regions-outlives-scalar.rs diff --git a/src/test/ui/regions/regions-params.rs b/tests/ui/regions/regions-params.rs similarity index 100% rename from src/test/ui/regions/regions-params.rs rename to tests/ui/regions/regions-params.rs diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19552.rs b/tests/ui/regions/regions-pattern-typing-issue-19552.rs similarity index 100% rename from src/test/ui/regions/regions-pattern-typing-issue-19552.rs rename to tests/ui/regions/regions-pattern-typing-issue-19552.rs diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19552.stderr b/tests/ui/regions/regions-pattern-typing-issue-19552.stderr similarity index 100% rename from src/test/ui/regions/regions-pattern-typing-issue-19552.stderr rename to tests/ui/regions/regions-pattern-typing-issue-19552.stderr diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19997.rs b/tests/ui/regions/regions-pattern-typing-issue-19997.rs similarity index 100% rename from src/test/ui/regions/regions-pattern-typing-issue-19997.rs rename to tests/ui/regions/regions-pattern-typing-issue-19997.rs diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19997.stderr b/tests/ui/regions/regions-pattern-typing-issue-19997.stderr similarity index 100% rename from src/test/ui/regions/regions-pattern-typing-issue-19997.stderr rename to tests/ui/regions/regions-pattern-typing-issue-19997.stderr diff --git a/src/test/ui/regions/regions-proc-bound-capture.rs b/tests/ui/regions/regions-proc-bound-capture.rs similarity index 100% rename from src/test/ui/regions/regions-proc-bound-capture.rs rename to tests/ui/regions/regions-proc-bound-capture.rs diff --git a/src/test/ui/regions/regions-proc-bound-capture.stderr b/tests/ui/regions/regions-proc-bound-capture.stderr similarity index 100% rename from src/test/ui/regions/regions-proc-bound-capture.stderr rename to tests/ui/regions/regions-proc-bound-capture.stderr diff --git a/src/test/ui/regions/regions-reassign-let-bound-pointer.rs b/tests/ui/regions/regions-reassign-let-bound-pointer.rs similarity index 100% rename from src/test/ui/regions/regions-reassign-let-bound-pointer.rs rename to tests/ui/regions/regions-reassign-let-bound-pointer.rs diff --git a/src/test/ui/regions/regions-reassign-match-bound-pointer.rs b/tests/ui/regions/regions-reassign-match-bound-pointer.rs similarity index 100% rename from src/test/ui/regions/regions-reassign-match-bound-pointer.rs rename to tests/ui/regions/regions-reassign-match-bound-pointer.rs diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs similarity index 100% rename from src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs rename to tests/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr similarity index 100% rename from src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr rename to tests/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs similarity index 100% rename from src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs rename to tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr similarity index 100% rename from src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr rename to tests/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr diff --git a/src/test/ui/regions/regions-ref-in-fn-arg.rs b/tests/ui/regions/regions-ref-in-fn-arg.rs similarity index 100% rename from src/test/ui/regions/regions-ref-in-fn-arg.rs rename to tests/ui/regions/regions-ref-in-fn-arg.rs diff --git a/src/test/ui/regions/regions-ref-in-fn-arg.stderr b/tests/ui/regions/regions-ref-in-fn-arg.stderr similarity index 100% rename from src/test/ui/regions/regions-ref-in-fn-arg.stderr rename to tests/ui/regions/regions-ref-in-fn-arg.stderr diff --git a/src/test/ui/regions/regions-refcell.rs b/tests/ui/regions/regions-refcell.rs similarity index 100% rename from src/test/ui/regions/regions-refcell.rs rename to tests/ui/regions/regions-refcell.rs diff --git a/src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs b/tests/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs similarity index 100% rename from src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs rename to tests/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs diff --git a/src/test/ui/regions/regions-ret-borrowed-1.rs b/tests/ui/regions/regions-ret-borrowed-1.rs similarity index 100% rename from src/test/ui/regions/regions-ret-borrowed-1.rs rename to tests/ui/regions/regions-ret-borrowed-1.rs diff --git a/src/test/ui/regions/regions-ret-borrowed-1.stderr b/tests/ui/regions/regions-ret-borrowed-1.stderr similarity index 100% rename from src/test/ui/regions/regions-ret-borrowed-1.stderr rename to tests/ui/regions/regions-ret-borrowed-1.stderr diff --git a/src/test/ui/regions/regions-ret-borrowed.rs b/tests/ui/regions/regions-ret-borrowed.rs similarity index 100% rename from src/test/ui/regions/regions-ret-borrowed.rs rename to tests/ui/regions/regions-ret-borrowed.rs diff --git a/src/test/ui/regions/regions-ret-borrowed.stderr b/tests/ui/regions/regions-ret-borrowed.stderr similarity index 100% rename from src/test/ui/regions/regions-ret-borrowed.stderr rename to tests/ui/regions/regions-ret-borrowed.stderr diff --git a/src/test/ui/regions/regions-ret.rs b/tests/ui/regions/regions-ret.rs similarity index 100% rename from src/test/ui/regions/regions-ret.rs rename to tests/ui/regions/regions-ret.rs diff --git a/src/test/ui/regions/regions-ret.stderr b/tests/ui/regions/regions-ret.stderr similarity index 100% rename from src/test/ui/regions/regions-ret.stderr rename to tests/ui/regions/regions-ret.stderr diff --git a/src/test/ui/regions/regions-return-interior-of-option.rs b/tests/ui/regions/regions-return-interior-of-option.rs similarity index 100% rename from src/test/ui/regions/regions-return-interior-of-option.rs rename to tests/ui/regions/regions-return-interior-of-option.rs diff --git a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs b/tests/ui/regions/regions-return-ref-to-upvar-issue-17403.rs similarity index 100% rename from src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs rename to tests/ui/regions/regions-return-ref-to-upvar-issue-17403.rs diff --git a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr b/tests/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr similarity index 100% rename from src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr rename to tests/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr diff --git a/src/test/ui/regions/regions-return-stack-allocated-vec.rs b/tests/ui/regions/regions-return-stack-allocated-vec.rs similarity index 100% rename from src/test/ui/regions/regions-return-stack-allocated-vec.rs rename to tests/ui/regions/regions-return-stack-allocated-vec.rs diff --git a/src/test/ui/regions/regions-return-stack-allocated-vec.stderr b/tests/ui/regions/regions-return-stack-allocated-vec.stderr similarity index 100% rename from src/test/ui/regions/regions-return-stack-allocated-vec.stderr rename to tests/ui/regions/regions-return-stack-allocated-vec.stderr diff --git a/src/test/ui/regions/regions-scope-chain-example.rs b/tests/ui/regions/regions-scope-chain-example.rs similarity index 100% rename from src/test/ui/regions/regions-scope-chain-example.rs rename to tests/ui/regions/regions-scope-chain-example.rs diff --git a/src/test/ui/regions/regions-self-impls.rs b/tests/ui/regions/regions-self-impls.rs similarity index 100% rename from src/test/ui/regions/regions-self-impls.rs rename to tests/ui/regions/regions-self-impls.rs diff --git a/src/test/ui/regions/regions-self-in-enums.rs b/tests/ui/regions/regions-self-in-enums.rs similarity index 100% rename from src/test/ui/regions/regions-self-in-enums.rs rename to tests/ui/regions/regions-self-in-enums.rs diff --git a/src/test/ui/regions/regions-simple.rs b/tests/ui/regions/regions-simple.rs similarity index 100% rename from src/test/ui/regions/regions-simple.rs rename to tests/ui/regions/regions-simple.rs diff --git a/src/test/ui/regions/regions-static-bound-rpass.rs b/tests/ui/regions/regions-static-bound-rpass.rs similarity index 100% rename from src/test/ui/regions/regions-static-bound-rpass.rs rename to tests/ui/regions/regions-static-bound-rpass.rs diff --git a/src/test/ui/regions/regions-static-bound-rpass.stderr b/tests/ui/regions/regions-static-bound-rpass.stderr similarity index 100% rename from src/test/ui/regions/regions-static-bound-rpass.stderr rename to tests/ui/regions/regions-static-bound-rpass.stderr diff --git a/src/test/ui/regions/regions-static-bound.rs b/tests/ui/regions/regions-static-bound.rs similarity index 100% rename from src/test/ui/regions/regions-static-bound.rs rename to tests/ui/regions/regions-static-bound.rs diff --git a/src/test/ui/regions/regions-static-bound.stderr b/tests/ui/regions/regions-static-bound.stderr similarity index 100% rename from src/test/ui/regions/regions-static-bound.stderr rename to tests/ui/regions/regions-static-bound.stderr diff --git a/src/test/ui/regions/regions-static-closure.rs b/tests/ui/regions/regions-static-closure.rs similarity index 100% rename from src/test/ui/regions/regions-static-closure.rs rename to tests/ui/regions/regions-static-closure.rs diff --git a/src/test/ui/regions/regions-steal-closure.rs b/tests/ui/regions/regions-steal-closure.rs similarity index 100% rename from src/test/ui/regions/regions-steal-closure.rs rename to tests/ui/regions/regions-steal-closure.rs diff --git a/src/test/ui/regions/regions-steal-closure.stderr b/tests/ui/regions/regions-steal-closure.stderr similarity index 100% rename from src/test/ui/regions/regions-steal-closure.stderr rename to tests/ui/regions/regions-steal-closure.stderr diff --git a/src/test/ui/regions/regions-trait-1.rs b/tests/ui/regions/regions-trait-1.rs similarity index 100% rename from src/test/ui/regions/regions-trait-1.rs rename to tests/ui/regions/regions-trait-1.rs diff --git a/src/test/ui/regions/regions-trait-object-1.rs b/tests/ui/regions/regions-trait-object-1.rs similarity index 100% rename from src/test/ui/regions/regions-trait-object-1.rs rename to tests/ui/regions/regions-trait-object-1.rs diff --git a/src/test/ui/regions/regions-trait-object-subtyping.rs b/tests/ui/regions/regions-trait-object-subtyping.rs similarity index 100% rename from src/test/ui/regions/regions-trait-object-subtyping.rs rename to tests/ui/regions/regions-trait-object-subtyping.rs diff --git a/src/test/ui/regions/regions-trait-object-subtyping.stderr b/tests/ui/regions/regions-trait-object-subtyping.stderr similarity index 100% rename from src/test/ui/regions/regions-trait-object-subtyping.stderr rename to tests/ui/regions/regions-trait-object-subtyping.stderr diff --git a/src/test/ui/regions/regions-trait-variance.rs b/tests/ui/regions/regions-trait-variance.rs similarity index 100% rename from src/test/ui/regions/regions-trait-variance.rs rename to tests/ui/regions/regions-trait-variance.rs diff --git a/src/test/ui/regions/regions-trait-variance.stderr b/tests/ui/regions/regions-trait-variance.stderr similarity index 100% rename from src/test/ui/regions/regions-trait-variance.stderr rename to tests/ui/regions/regions-trait-variance.stderr diff --git a/src/test/ui/regions/regions-undeclared.rs b/tests/ui/regions/regions-undeclared.rs similarity index 100% rename from src/test/ui/regions/regions-undeclared.rs rename to tests/ui/regions/regions-undeclared.rs diff --git a/src/test/ui/regions/regions-undeclared.stderr b/tests/ui/regions/regions-undeclared.stderr similarity index 100% rename from src/test/ui/regions/regions-undeclared.stderr rename to tests/ui/regions/regions-undeclared.stderr diff --git a/src/test/ui/regions/regions-var-type-out-of-scope.rs b/tests/ui/regions/regions-var-type-out-of-scope.rs similarity index 100% rename from src/test/ui/regions/regions-var-type-out-of-scope.rs rename to tests/ui/regions/regions-var-type-out-of-scope.rs diff --git a/src/test/ui/regions/regions-var-type-out-of-scope.stderr b/tests/ui/regions/regions-var-type-out-of-scope.stderr similarity index 100% rename from src/test/ui/regions/regions-var-type-out-of-scope.stderr rename to tests/ui/regions/regions-var-type-out-of-scope.stderr diff --git a/src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs b/tests/ui/regions/regions-variance-contravariant-use-contravariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs rename to tests/ui/regions/regions-variance-contravariant-use-contravariant.rs diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs b/tests/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs similarity index 100% rename from src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs rename to tests/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr b/tests/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr similarity index 100% rename from src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr rename to tests/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant.rs b/tests/ui/regions/regions-variance-contravariant-use-covariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-contravariant-use-covariant.rs rename to tests/ui/regions/regions-variance-contravariant-use-covariant.rs diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr b/tests/ui/regions/regions-variance-contravariant-use-covariant.stderr similarity index 100% rename from src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr rename to tests/ui/regions/regions-variance-contravariant-use-covariant.stderr diff --git a/src/test/ui/regions/regions-variance-covariant-use-contravariant.rs b/tests/ui/regions/regions-variance-covariant-use-contravariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-covariant-use-contravariant.rs rename to tests/ui/regions/regions-variance-covariant-use-contravariant.rs diff --git a/src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr b/tests/ui/regions/regions-variance-covariant-use-contravariant.stderr similarity index 100% rename from src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr rename to tests/ui/regions/regions-variance-covariant-use-contravariant.stderr diff --git a/src/test/ui/regions/regions-variance-covariant-use-covariant.rs b/tests/ui/regions/regions-variance-covariant-use-covariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-covariant-use-covariant.rs rename to tests/ui/regions/regions-variance-covariant-use-covariant.rs diff --git a/src/test/ui/regions/regions-variance-invariant-use-contravariant.rs b/tests/ui/regions/regions-variance-invariant-use-contravariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-invariant-use-contravariant.rs rename to tests/ui/regions/regions-variance-invariant-use-contravariant.rs diff --git a/src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr b/tests/ui/regions/regions-variance-invariant-use-contravariant.stderr similarity index 100% rename from src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr rename to tests/ui/regions/regions-variance-invariant-use-contravariant.stderr diff --git a/src/test/ui/regions/regions-variance-invariant-use-covariant.rs b/tests/ui/regions/regions-variance-invariant-use-covariant.rs similarity index 100% rename from src/test/ui/regions/regions-variance-invariant-use-covariant.rs rename to tests/ui/regions/regions-variance-invariant-use-covariant.rs diff --git a/src/test/ui/regions/regions-variance-invariant-use-covariant.stderr b/tests/ui/regions/regions-variance-invariant-use-covariant.stderr similarity index 100% rename from src/test/ui/regions/regions-variance-invariant-use-covariant.stderr rename to tests/ui/regions/regions-variance-invariant-use-covariant.stderr diff --git a/src/test/ui/regions/regions-wf-trait-object.rs b/tests/ui/regions/regions-wf-trait-object.rs similarity index 100% rename from src/test/ui/regions/regions-wf-trait-object.rs rename to tests/ui/regions/regions-wf-trait-object.rs diff --git a/src/test/ui/regions/regions-wf-trait-object.stderr b/tests/ui/regions/regions-wf-trait-object.stderr similarity index 100% rename from src/test/ui/regions/regions-wf-trait-object.stderr rename to tests/ui/regions/regions-wf-trait-object.stderr diff --git a/src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs b/tests/ui/regions/type-param-outlives-reempty-issue-74429-2.rs similarity index 100% rename from src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs rename to tests/ui/regions/type-param-outlives-reempty-issue-74429-2.rs diff --git a/src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs b/tests/ui/regions/type-param-outlives-reempty-issue-74429.rs similarity index 100% rename from src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs rename to tests/ui/regions/type-param-outlives-reempty-issue-74429.rs diff --git a/src/test/ui/regions/wf-bound-region-in-object-type.rs b/tests/ui/regions/wf-bound-region-in-object-type.rs similarity index 100% rename from src/test/ui/regions/wf-bound-region-in-object-type.rs rename to tests/ui/regions/wf-bound-region-in-object-type.rs diff --git a/src/test/ui/reify-intrinsic.rs b/tests/ui/reify-intrinsic.rs similarity index 100% rename from src/test/ui/reify-intrinsic.rs rename to tests/ui/reify-intrinsic.rs diff --git a/src/test/ui/reify-intrinsic.stderr b/tests/ui/reify-intrinsic.stderr similarity index 100% rename from src/test/ui/reify-intrinsic.stderr rename to tests/ui/reify-intrinsic.stderr diff --git a/src/test/ui/remap-path-prefix.rs b/tests/ui/remap-path-prefix.rs similarity index 100% rename from src/test/ui/remap-path-prefix.rs rename to tests/ui/remap-path-prefix.rs diff --git a/src/test/ui/remap-path-prefix.stderr b/tests/ui/remap-path-prefix.stderr similarity index 100% rename from src/test/ui/remap-path-prefix.stderr rename to tests/ui/remap-path-prefix.stderr diff --git a/src/test/ui/removing-extern-crate.fixed b/tests/ui/removing-extern-crate.fixed similarity index 100% rename from src/test/ui/removing-extern-crate.fixed rename to tests/ui/removing-extern-crate.fixed diff --git a/src/test/ui/removing-extern-crate.rs b/tests/ui/removing-extern-crate.rs similarity index 100% rename from src/test/ui/removing-extern-crate.rs rename to tests/ui/removing-extern-crate.rs diff --git a/src/test/ui/removing-extern-crate.stderr b/tests/ui/removing-extern-crate.stderr similarity index 100% rename from src/test/ui/removing-extern-crate.stderr rename to tests/ui/removing-extern-crate.stderr diff --git a/src/test/ui/repeat-expr/infer.rs b/tests/ui/repeat-expr/infer.rs similarity index 100% rename from src/test/ui/repeat-expr/infer.rs rename to tests/ui/repeat-expr/infer.rs diff --git a/src/test/ui/repeat-expr/repeat-expr-in-static.rs b/tests/ui/repeat-expr/repeat-expr-in-static.rs similarity index 100% rename from src/test/ui/repeat-expr/repeat-expr-in-static.rs rename to tests/ui/repeat-expr/repeat-expr-in-static.rs diff --git a/src/test/ui/repeat-expr/repeat-to-run-dtor-twice.rs b/tests/ui/repeat-expr/repeat-to-run-dtor-twice.rs similarity index 100% rename from src/test/ui/repeat-expr/repeat-to-run-dtor-twice.rs rename to tests/ui/repeat-expr/repeat-to-run-dtor-twice.rs diff --git a/src/test/ui/repeat-expr/repeat-to-run-dtor-twice.stderr b/tests/ui/repeat-expr/repeat-to-run-dtor-twice.stderr similarity index 100% rename from src/test/ui/repeat-expr/repeat-to-run-dtor-twice.stderr rename to tests/ui/repeat-expr/repeat-to-run-dtor-twice.stderr diff --git a/src/test/ui/repeat-expr/repeat_count.rs b/tests/ui/repeat-expr/repeat_count.rs similarity index 100% rename from src/test/ui/repeat-expr/repeat_count.rs rename to tests/ui/repeat-expr/repeat_count.rs diff --git a/src/test/ui/repeat-expr/repeat_count.stderr b/tests/ui/repeat-expr/repeat_count.stderr similarity index 100% rename from src/test/ui/repeat-expr/repeat_count.stderr rename to tests/ui/repeat-expr/repeat_count.stderr diff --git a/src/test/ui/repr/align-with-extern-c-fn.rs b/tests/ui/repr/align-with-extern-c-fn.rs similarity index 100% rename from src/test/ui/repr/align-with-extern-c-fn.rs rename to tests/ui/repr/align-with-extern-c-fn.rs diff --git a/src/test/ui/repr/aligned_enum_cast.rs b/tests/ui/repr/aligned_enum_cast.rs similarity index 100% rename from src/test/ui/repr/aligned_enum_cast.rs rename to tests/ui/repr/aligned_enum_cast.rs diff --git a/src/test/ui/repr/attr-usage-repr.rs b/tests/ui/repr/attr-usage-repr.rs similarity index 100% rename from src/test/ui/repr/attr-usage-repr.rs rename to tests/ui/repr/attr-usage-repr.rs diff --git a/src/test/ui/repr/attr-usage-repr.stderr b/tests/ui/repr/attr-usage-repr.stderr similarity index 100% rename from src/test/ui/repr/attr-usage-repr.stderr rename to tests/ui/repr/attr-usage-repr.stderr diff --git a/src/test/ui/repr/auxiliary/repr-transparent-non-exhaustive.rs b/tests/ui/repr/auxiliary/repr-transparent-non-exhaustive.rs similarity index 100% rename from src/test/ui/repr/auxiliary/repr-transparent-non-exhaustive.rs rename to tests/ui/repr/auxiliary/repr-transparent-non-exhaustive.rs diff --git a/src/test/ui/repr/invalid_repr_list_help.rs b/tests/ui/repr/invalid_repr_list_help.rs similarity index 100% rename from src/test/ui/repr/invalid_repr_list_help.rs rename to tests/ui/repr/invalid_repr_list_help.rs diff --git a/src/test/ui/repr/invalid_repr_list_help.stderr b/tests/ui/repr/invalid_repr_list_help.stderr similarity index 100% rename from src/test/ui/repr/invalid_repr_list_help.stderr rename to tests/ui/repr/invalid_repr_list_help.stderr diff --git a/src/test/ui/repr/issue-83505-repr-simd.rs b/tests/ui/repr/issue-83505-repr-simd.rs similarity index 100% rename from src/test/ui/repr/issue-83505-repr-simd.rs rename to tests/ui/repr/issue-83505-repr-simd.rs diff --git a/src/test/ui/repr/issue-83505-repr-simd.stderr b/tests/ui/repr/issue-83505-repr-simd.stderr similarity index 100% rename from src/test/ui/repr/issue-83505-repr-simd.stderr rename to tests/ui/repr/issue-83505-repr-simd.stderr diff --git a/src/test/ui/repr/issue-83921-ice.rs b/tests/ui/repr/issue-83921-ice.rs similarity index 100% rename from src/test/ui/repr/issue-83921-ice.rs rename to tests/ui/repr/issue-83921-ice.rs diff --git a/src/test/ui/repr/issue-83921-ice.stderr b/tests/ui/repr/issue-83921-ice.stderr similarity index 100% rename from src/test/ui/repr/issue-83921-ice.stderr rename to tests/ui/repr/issue-83921-ice.stderr diff --git a/src/test/ui/repr/repr-align-assign.fixed b/tests/ui/repr/repr-align-assign.fixed similarity index 100% rename from src/test/ui/repr/repr-align-assign.fixed rename to tests/ui/repr/repr-align-assign.fixed diff --git a/src/test/ui/repr/repr-align-assign.rs b/tests/ui/repr/repr-align-assign.rs similarity index 100% rename from src/test/ui/repr/repr-align-assign.rs rename to tests/ui/repr/repr-align-assign.rs diff --git a/src/test/ui/repr/repr-align-assign.stderr b/tests/ui/repr/repr-align-assign.stderr similarity index 100% rename from src/test/ui/repr/repr-align-assign.stderr rename to tests/ui/repr/repr-align-assign.stderr diff --git a/src/test/ui/repr/repr-align.rs b/tests/ui/repr/repr-align.rs similarity index 100% rename from src/test/ui/repr/repr-align.rs rename to tests/ui/repr/repr-align.rs diff --git a/src/test/ui/repr/repr-align.stderr b/tests/ui/repr/repr-align.stderr similarity index 100% rename from src/test/ui/repr/repr-align.stderr rename to tests/ui/repr/repr-align.stderr diff --git a/src/test/ui/repr/repr-disallow-on-variant.rs b/tests/ui/repr/repr-disallow-on-variant.rs similarity index 100% rename from src/test/ui/repr/repr-disallow-on-variant.rs rename to tests/ui/repr/repr-disallow-on-variant.rs diff --git a/src/test/ui/repr/repr-disallow-on-variant.stderr b/tests/ui/repr/repr-disallow-on-variant.stderr similarity index 100% rename from src/test/ui/repr/repr-disallow-on-variant.stderr rename to tests/ui/repr/repr-disallow-on-variant.stderr diff --git a/src/test/ui/repr/repr-packed-contains-align.rs b/tests/ui/repr/repr-packed-contains-align.rs similarity index 100% rename from src/test/ui/repr/repr-packed-contains-align.rs rename to tests/ui/repr/repr-packed-contains-align.rs diff --git a/src/test/ui/repr/repr-packed-contains-align.stderr b/tests/ui/repr/repr-packed-contains-align.stderr similarity index 100% rename from src/test/ui/repr/repr-packed-contains-align.stderr rename to tests/ui/repr/repr-packed-contains-align.stderr diff --git a/src/test/ui/repr/repr-transparent-issue-87496.rs b/tests/ui/repr/repr-transparent-issue-87496.rs similarity index 100% rename from src/test/ui/repr/repr-transparent-issue-87496.rs rename to tests/ui/repr/repr-transparent-issue-87496.rs diff --git a/src/test/ui/repr/repr-transparent-issue-87496.stderr b/tests/ui/repr/repr-transparent-issue-87496.stderr similarity index 100% rename from src/test/ui/repr/repr-transparent-issue-87496.stderr rename to tests/ui/repr/repr-transparent-issue-87496.stderr diff --git a/src/test/ui/repr/repr-transparent-non-exhaustive.rs b/tests/ui/repr/repr-transparent-non-exhaustive.rs similarity index 100% rename from src/test/ui/repr/repr-transparent-non-exhaustive.rs rename to tests/ui/repr/repr-transparent-non-exhaustive.rs diff --git a/src/test/ui/repr/repr-transparent-non-exhaustive.stderr b/tests/ui/repr/repr-transparent-non-exhaustive.stderr similarity index 100% rename from src/test/ui/repr/repr-transparent-non-exhaustive.stderr rename to tests/ui/repr/repr-transparent-non-exhaustive.stderr diff --git a/src/test/ui/repr/repr-transparent-other-items.rs b/tests/ui/repr/repr-transparent-other-items.rs similarity index 100% rename from src/test/ui/repr/repr-transparent-other-items.rs rename to tests/ui/repr/repr-transparent-other-items.rs diff --git a/src/test/ui/repr/repr-transparent-other-items.stderr b/tests/ui/repr/repr-transparent-other-items.stderr similarity index 100% rename from src/test/ui/repr/repr-transparent-other-items.stderr rename to tests/ui/repr/repr-transparent-other-items.stderr diff --git a/src/test/ui/repr/repr-transparent-other-reprs.rs b/tests/ui/repr/repr-transparent-other-reprs.rs similarity index 100% rename from src/test/ui/repr/repr-transparent-other-reprs.rs rename to tests/ui/repr/repr-transparent-other-reprs.rs diff --git a/src/test/ui/repr/repr-transparent-other-reprs.stderr b/tests/ui/repr/repr-transparent-other-reprs.stderr similarity index 100% rename from src/test/ui/repr/repr-transparent-other-reprs.stderr rename to tests/ui/repr/repr-transparent-other-reprs.stderr diff --git a/src/test/ui/repr/repr-transparent.rs b/tests/ui/repr/repr-transparent.rs similarity index 100% rename from src/test/ui/repr/repr-transparent.rs rename to tests/ui/repr/repr-transparent.rs diff --git a/src/test/ui/repr/repr-transparent.stderr b/tests/ui/repr/repr-transparent.stderr similarity index 100% rename from src/test/ui/repr/repr-transparent.stderr rename to tests/ui/repr/repr-transparent.stderr diff --git a/src/test/ui/repr/repr.rs b/tests/ui/repr/repr.rs similarity index 100% rename from src/test/ui/repr/repr.rs rename to tests/ui/repr/repr.rs diff --git a/src/test/ui/repr/repr.stderr b/tests/ui/repr/repr.stderr similarity index 100% rename from src/test/ui/repr/repr.stderr rename to tests/ui/repr/repr.stderr diff --git a/src/test/ui/repr/repr_c_int_align.rs b/tests/ui/repr/repr_c_int_align.rs similarity index 100% rename from src/test/ui/repr/repr_c_int_align.rs rename to tests/ui/repr/repr_c_int_align.rs diff --git a/src/test/ui/repr/transparent-enum-too-many-variants.rs b/tests/ui/repr/transparent-enum-too-many-variants.rs similarity index 100% rename from src/test/ui/repr/transparent-enum-too-many-variants.rs rename to tests/ui/repr/transparent-enum-too-many-variants.rs diff --git a/src/test/ui/repr/transparent-enum-too-many-variants.stderr b/tests/ui/repr/transparent-enum-too-many-variants.stderr similarity index 100% rename from src/test/ui/repr/transparent-enum-too-many-variants.stderr rename to tests/ui/repr/transparent-enum-too-many-variants.stderr diff --git a/src/test/ui/reserved/reserved-attr-on-macro.rs b/tests/ui/reserved/reserved-attr-on-macro.rs similarity index 100% rename from src/test/ui/reserved/reserved-attr-on-macro.rs rename to tests/ui/reserved/reserved-attr-on-macro.rs diff --git a/src/test/ui/reserved/reserved-attr-on-macro.stderr b/tests/ui/reserved/reserved-attr-on-macro.stderr similarity index 100% rename from src/test/ui/reserved/reserved-attr-on-macro.stderr rename to tests/ui/reserved/reserved-attr-on-macro.stderr diff --git a/src/test/ui/reserved/reserved-become.rs b/tests/ui/reserved/reserved-become.rs similarity index 100% rename from src/test/ui/reserved/reserved-become.rs rename to tests/ui/reserved/reserved-become.rs diff --git a/src/test/ui/reserved/reserved-become.stderr b/tests/ui/reserved/reserved-become.stderr similarity index 100% rename from src/test/ui/reserved/reserved-become.stderr rename to tests/ui/reserved/reserved-become.stderr diff --git a/src/test/ui/resolve/associated-fn-called-as-fn.rs b/tests/ui/resolve/associated-fn-called-as-fn.rs similarity index 100% rename from src/test/ui/resolve/associated-fn-called-as-fn.rs rename to tests/ui/resolve/associated-fn-called-as-fn.rs diff --git a/src/test/ui/resolve/associated-fn-called-as-fn.stderr b/tests/ui/resolve/associated-fn-called-as-fn.stderr similarity index 100% rename from src/test/ui/resolve/associated-fn-called-as-fn.stderr rename to tests/ui/resolve/associated-fn-called-as-fn.stderr diff --git a/src/test/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo.rs b/tests/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo.rs rename to tests/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo.rs diff --git a/src/test/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo2.rs b/tests/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo2.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo2.rs rename to tests/ui/resolve/auxiliary/blind-item-mixed-crate-use-item-foo2.rs diff --git a/src/test/ui/resolve/auxiliary/extern-prelude-vec.rs b/tests/ui/resolve/auxiliary/extern-prelude-vec.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/extern-prelude-vec.rs rename to tests/ui/resolve/auxiliary/extern-prelude-vec.rs diff --git a/src/test/ui/resolve/auxiliary/extern-prelude.rs b/tests/ui/resolve/auxiliary/extern-prelude.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/extern-prelude.rs rename to tests/ui/resolve/auxiliary/extern-prelude.rs diff --git a/src/test/ui/resolve/auxiliary/issue-19452-aux.rs b/tests/ui/resolve/auxiliary/issue-19452-aux.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-19452-aux.rs rename to tests/ui/resolve/auxiliary/issue-19452-aux.rs diff --git a/src/test/ui/resolve/auxiliary/issue-21221-3.rs b/tests/ui/resolve/auxiliary/issue-21221-3.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-21221-3.rs rename to tests/ui/resolve/auxiliary/issue-21221-3.rs diff --git a/src/test/ui/resolve/auxiliary/issue-21221-4.rs b/tests/ui/resolve/auxiliary/issue-21221-4.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-21221-4.rs rename to tests/ui/resolve/auxiliary/issue-21221-4.rs diff --git a/src/test/ui/resolve/auxiliary/issue-30535.rs b/tests/ui/resolve/auxiliary/issue-30535.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-30535.rs rename to tests/ui/resolve/auxiliary/issue-30535.rs diff --git a/src/test/ui/resolve/auxiliary/issue-3907.rs b/tests/ui/resolve/auxiliary/issue-3907.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-3907.rs rename to tests/ui/resolve/auxiliary/issue-3907.rs diff --git a/src/test/ui/resolve/auxiliary/issue-80079.rs b/tests/ui/resolve/auxiliary/issue-80079.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/issue-80079.rs rename to tests/ui/resolve/auxiliary/issue-80079.rs diff --git a/src/test/ui/resolve/auxiliary/namespaced_enums.rs b/tests/ui/resolve/auxiliary/namespaced_enums.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/namespaced_enums.rs rename to tests/ui/resolve/auxiliary/namespaced_enums.rs diff --git a/src/test/ui/resolve/auxiliary/privacy-struct-ctor.rs b/tests/ui/resolve/auxiliary/privacy-struct-ctor.rs similarity index 100% rename from src/test/ui/resolve/auxiliary/privacy-struct-ctor.rs rename to tests/ui/resolve/auxiliary/privacy-struct-ctor.rs diff --git a/src/test/ui/resolve/bad-env-capture.rs b/tests/ui/resolve/bad-env-capture.rs similarity index 100% rename from src/test/ui/resolve/bad-env-capture.rs rename to tests/ui/resolve/bad-env-capture.rs diff --git a/src/test/ui/resolve/bad-env-capture.stderr b/tests/ui/resolve/bad-env-capture.stderr similarity index 100% rename from src/test/ui/resolve/bad-env-capture.stderr rename to tests/ui/resolve/bad-env-capture.stderr diff --git a/src/test/ui/resolve/bad-env-capture2.rs b/tests/ui/resolve/bad-env-capture2.rs similarity index 100% rename from src/test/ui/resolve/bad-env-capture2.rs rename to tests/ui/resolve/bad-env-capture2.rs diff --git a/src/test/ui/resolve/bad-env-capture2.stderr b/tests/ui/resolve/bad-env-capture2.stderr similarity index 100% rename from src/test/ui/resolve/bad-env-capture2.stderr rename to tests/ui/resolve/bad-env-capture2.stderr diff --git a/src/test/ui/resolve/bad-env-capture3.rs b/tests/ui/resolve/bad-env-capture3.rs similarity index 100% rename from src/test/ui/resolve/bad-env-capture3.rs rename to tests/ui/resolve/bad-env-capture3.rs diff --git a/src/test/ui/resolve/bad-env-capture3.stderr b/tests/ui/resolve/bad-env-capture3.stderr similarity index 100% rename from src/test/ui/resolve/bad-env-capture3.stderr rename to tests/ui/resolve/bad-env-capture3.stderr diff --git a/src/test/ui/resolve/bad-expr-path.rs b/tests/ui/resolve/bad-expr-path.rs similarity index 100% rename from src/test/ui/resolve/bad-expr-path.rs rename to tests/ui/resolve/bad-expr-path.rs diff --git a/src/test/ui/resolve/bad-expr-path.stderr b/tests/ui/resolve/bad-expr-path.stderr similarity index 100% rename from src/test/ui/resolve/bad-expr-path.stderr rename to tests/ui/resolve/bad-expr-path.stderr diff --git a/src/test/ui/resolve/bad-expr-path2.rs b/tests/ui/resolve/bad-expr-path2.rs similarity index 100% rename from src/test/ui/resolve/bad-expr-path2.rs rename to tests/ui/resolve/bad-expr-path2.rs diff --git a/src/test/ui/resolve/bad-expr-path2.stderr b/tests/ui/resolve/bad-expr-path2.stderr similarity index 100% rename from src/test/ui/resolve/bad-expr-path2.stderr rename to tests/ui/resolve/bad-expr-path2.stderr diff --git a/src/test/ui/resolve/bad-module.rs b/tests/ui/resolve/bad-module.rs similarity index 100% rename from src/test/ui/resolve/bad-module.rs rename to tests/ui/resolve/bad-module.rs diff --git a/src/test/ui/resolve/bad-module.stderr b/tests/ui/resolve/bad-module.stderr similarity index 100% rename from src/test/ui/resolve/bad-module.stderr rename to tests/ui/resolve/bad-module.stderr diff --git a/src/test/ui/resolve/bad-type-env-capture.rs b/tests/ui/resolve/bad-type-env-capture.rs similarity index 100% rename from src/test/ui/resolve/bad-type-env-capture.rs rename to tests/ui/resolve/bad-type-env-capture.rs diff --git a/src/test/ui/resolve/bad-type-env-capture.stderr b/tests/ui/resolve/bad-type-env-capture.stderr similarity index 100% rename from src/test/ui/resolve/bad-type-env-capture.stderr rename to tests/ui/resolve/bad-type-env-capture.stderr diff --git a/src/test/ui/resolve/blind-item-local-shadow.rs b/tests/ui/resolve/blind-item-local-shadow.rs similarity index 100% rename from src/test/ui/resolve/blind-item-local-shadow.rs rename to tests/ui/resolve/blind-item-local-shadow.rs diff --git a/src/test/ui/resolve/blind-item-mixed-crate-use-item.rs b/tests/ui/resolve/blind-item-mixed-crate-use-item.rs similarity index 100% rename from src/test/ui/resolve/blind-item-mixed-crate-use-item.rs rename to tests/ui/resolve/blind-item-mixed-crate-use-item.rs diff --git a/src/test/ui/resolve/blind-item-mixed-use-item.rs b/tests/ui/resolve/blind-item-mixed-use-item.rs similarity index 100% rename from src/test/ui/resolve/blind-item-mixed-use-item.rs rename to tests/ui/resolve/blind-item-mixed-use-item.rs diff --git a/src/test/ui/resolve/block-with-trait-parent.rs b/tests/ui/resolve/block-with-trait-parent.rs similarity index 100% rename from src/test/ui/resolve/block-with-trait-parent.rs rename to tests/ui/resolve/block-with-trait-parent.rs diff --git a/src/test/ui/resolve/crate-called-as-function.rs b/tests/ui/resolve/crate-called-as-function.rs similarity index 100% rename from src/test/ui/resolve/crate-called-as-function.rs rename to tests/ui/resolve/crate-called-as-function.rs diff --git a/src/test/ui/resolve/crate-called-as-function.stderr b/tests/ui/resolve/crate-called-as-function.stderr similarity index 100% rename from src/test/ui/resolve/crate-called-as-function.stderr rename to tests/ui/resolve/crate-called-as-function.stderr diff --git a/src/test/ui/resolve/crate-in-paths.rs b/tests/ui/resolve/crate-in-paths.rs similarity index 100% rename from src/test/ui/resolve/crate-in-paths.rs rename to tests/ui/resolve/crate-in-paths.rs diff --git a/src/test/ui/resolve/crate-in-paths.stderr b/tests/ui/resolve/crate-in-paths.stderr similarity index 100% rename from src/test/ui/resolve/crate-in-paths.stderr rename to tests/ui/resolve/crate-in-paths.stderr diff --git a/src/test/ui/resolve/editions-crate-root-2015.rs b/tests/ui/resolve/editions-crate-root-2015.rs similarity index 100% rename from src/test/ui/resolve/editions-crate-root-2015.rs rename to tests/ui/resolve/editions-crate-root-2015.rs diff --git a/src/test/ui/resolve/editions-crate-root-2015.stderr b/tests/ui/resolve/editions-crate-root-2015.stderr similarity index 100% rename from src/test/ui/resolve/editions-crate-root-2015.stderr rename to tests/ui/resolve/editions-crate-root-2015.stderr diff --git a/src/test/ui/resolve/editions-crate-root-2018.rs b/tests/ui/resolve/editions-crate-root-2018.rs similarity index 100% rename from src/test/ui/resolve/editions-crate-root-2018.rs rename to tests/ui/resolve/editions-crate-root-2018.rs diff --git a/src/test/ui/resolve/editions-crate-root-2018.stderr b/tests/ui/resolve/editions-crate-root-2018.stderr similarity index 100% rename from src/test/ui/resolve/editions-crate-root-2018.stderr rename to tests/ui/resolve/editions-crate-root-2018.stderr diff --git a/src/test/ui/resolve/enums-are-namespaced-xc.rs b/tests/ui/resolve/enums-are-namespaced-xc.rs similarity index 100% rename from src/test/ui/resolve/enums-are-namespaced-xc.rs rename to tests/ui/resolve/enums-are-namespaced-xc.rs diff --git a/src/test/ui/resolve/enums-are-namespaced-xc.stderr b/tests/ui/resolve/enums-are-namespaced-xc.stderr similarity index 100% rename from src/test/ui/resolve/enums-are-namespaced-xc.stderr rename to tests/ui/resolve/enums-are-namespaced-xc.stderr diff --git a/src/test/ui/resolve/enums-pats-not-idents.rs b/tests/ui/resolve/enums-pats-not-idents.rs similarity index 100% rename from src/test/ui/resolve/enums-pats-not-idents.rs rename to tests/ui/resolve/enums-pats-not-idents.rs diff --git a/src/test/ui/resolve/enums-pats-not-idents.stderr b/tests/ui/resolve/enums-pats-not-idents.stderr similarity index 100% rename from src/test/ui/resolve/enums-pats-not-idents.stderr rename to tests/ui/resolve/enums-pats-not-idents.stderr diff --git a/src/test/ui/resolve/export-fully-qualified.rs b/tests/ui/resolve/export-fully-qualified.rs similarity index 100% rename from src/test/ui/resolve/export-fully-qualified.rs rename to tests/ui/resolve/export-fully-qualified.rs diff --git a/src/test/ui/resolve/export-fully-qualified.stderr b/tests/ui/resolve/export-fully-qualified.stderr similarity index 100% rename from src/test/ui/resolve/export-fully-qualified.stderr rename to tests/ui/resolve/export-fully-qualified.stderr diff --git a/src/test/ui/resolve/extern-prelude-fail.rs b/tests/ui/resolve/extern-prelude-fail.rs similarity index 100% rename from src/test/ui/resolve/extern-prelude-fail.rs rename to tests/ui/resolve/extern-prelude-fail.rs diff --git a/src/test/ui/resolve/extern-prelude-fail.stderr b/tests/ui/resolve/extern-prelude-fail.stderr similarity index 100% rename from src/test/ui/resolve/extern-prelude-fail.stderr rename to tests/ui/resolve/extern-prelude-fail.stderr diff --git a/src/test/ui/resolve/extern-prelude.rs b/tests/ui/resolve/extern-prelude.rs similarity index 100% rename from src/test/ui/resolve/extern-prelude.rs rename to tests/ui/resolve/extern-prelude.rs diff --git a/src/test/ui/resolve/filter-intrinsics.rs b/tests/ui/resolve/filter-intrinsics.rs similarity index 100% rename from src/test/ui/resolve/filter-intrinsics.rs rename to tests/ui/resolve/filter-intrinsics.rs diff --git a/src/test/ui/resolve/filter-intrinsics.stderr b/tests/ui/resolve/filter-intrinsics.stderr similarity index 100% rename from src/test/ui/resolve/filter-intrinsics.stderr rename to tests/ui/resolve/filter-intrinsics.stderr diff --git a/src/test/ui/resolve/impl-items-vis-unresolved.rs b/tests/ui/resolve/impl-items-vis-unresolved.rs similarity index 100% rename from src/test/ui/resolve/impl-items-vis-unresolved.rs rename to tests/ui/resolve/impl-items-vis-unresolved.rs diff --git a/src/test/ui/resolve/impl-items-vis-unresolved.stderr b/tests/ui/resolve/impl-items-vis-unresolved.stderr similarity index 100% rename from src/test/ui/resolve/impl-items-vis-unresolved.stderr rename to tests/ui/resolve/impl-items-vis-unresolved.stderr diff --git a/src/test/ui/resolve/issue-100365.rs b/tests/ui/resolve/issue-100365.rs similarity index 100% rename from src/test/ui/resolve/issue-100365.rs rename to tests/ui/resolve/issue-100365.rs diff --git a/src/test/ui/resolve/issue-100365.stderr b/tests/ui/resolve/issue-100365.stderr similarity index 100% rename from src/test/ui/resolve/issue-100365.stderr rename to tests/ui/resolve/issue-100365.stderr diff --git a/src/test/ui/resolve/issue-101749-2.rs b/tests/ui/resolve/issue-101749-2.rs similarity index 100% rename from src/test/ui/resolve/issue-101749-2.rs rename to tests/ui/resolve/issue-101749-2.rs diff --git a/src/test/ui/resolve/issue-101749-2.stderr b/tests/ui/resolve/issue-101749-2.stderr similarity index 100% rename from src/test/ui/resolve/issue-101749-2.stderr rename to tests/ui/resolve/issue-101749-2.stderr diff --git a/src/test/ui/resolve/issue-101749.fixed b/tests/ui/resolve/issue-101749.fixed similarity index 100% rename from src/test/ui/resolve/issue-101749.fixed rename to tests/ui/resolve/issue-101749.fixed diff --git a/src/test/ui/resolve/issue-101749.rs b/tests/ui/resolve/issue-101749.rs similarity index 100% rename from src/test/ui/resolve/issue-101749.rs rename to tests/ui/resolve/issue-101749.rs diff --git a/src/test/ui/resolve/issue-101749.stderr b/tests/ui/resolve/issue-101749.stderr similarity index 100% rename from src/test/ui/resolve/issue-101749.stderr rename to tests/ui/resolve/issue-101749.stderr diff --git a/src/test/ui/resolve/issue-10200.rs b/tests/ui/resolve/issue-10200.rs similarity index 100% rename from src/test/ui/resolve/issue-10200.rs rename to tests/ui/resolve/issue-10200.rs diff --git a/src/test/ui/resolve/issue-10200.stderr b/tests/ui/resolve/issue-10200.stderr similarity index 100% rename from src/test/ui/resolve/issue-10200.stderr rename to tests/ui/resolve/issue-10200.stderr diff --git a/src/test/ui/resolve/issue-102946.rs b/tests/ui/resolve/issue-102946.rs similarity index 100% rename from src/test/ui/resolve/issue-102946.rs rename to tests/ui/resolve/issue-102946.rs diff --git a/src/test/ui/resolve/issue-102946.stderr b/tests/ui/resolve/issue-102946.stderr similarity index 100% rename from src/test/ui/resolve/issue-102946.stderr rename to tests/ui/resolve/issue-102946.stderr diff --git a/src/test/ui/resolve/issue-103202.rs b/tests/ui/resolve/issue-103202.rs similarity index 100% rename from src/test/ui/resolve/issue-103202.rs rename to tests/ui/resolve/issue-103202.rs diff --git a/src/test/ui/resolve/issue-103202.stderr b/tests/ui/resolve/issue-103202.stderr similarity index 100% rename from src/test/ui/resolve/issue-103202.stderr rename to tests/ui/resolve/issue-103202.stderr diff --git a/src/test/ui/resolve/issue-103474.rs b/tests/ui/resolve/issue-103474.rs similarity index 100% rename from src/test/ui/resolve/issue-103474.rs rename to tests/ui/resolve/issue-103474.rs diff --git a/src/test/ui/resolve/issue-103474.stderr b/tests/ui/resolve/issue-103474.stderr similarity index 100% rename from src/test/ui/resolve/issue-103474.stderr rename to tests/ui/resolve/issue-103474.stderr diff --git a/src/test/ui/resolve/issue-104700-inner_scope.rs b/tests/ui/resolve/issue-104700-inner_scope.rs similarity index 100% rename from src/test/ui/resolve/issue-104700-inner_scope.rs rename to tests/ui/resolve/issue-104700-inner_scope.rs diff --git a/src/test/ui/resolve/issue-104700-inner_scope.stderr b/tests/ui/resolve/issue-104700-inner_scope.stderr similarity index 100% rename from src/test/ui/resolve/issue-104700-inner_scope.stderr rename to tests/ui/resolve/issue-104700-inner_scope.stderr diff --git a/src/test/ui/resolve/issue-105069.rs b/tests/ui/resolve/issue-105069.rs similarity index 100% rename from src/test/ui/resolve/issue-105069.rs rename to tests/ui/resolve/issue-105069.rs diff --git a/src/test/ui/resolve/issue-105069.stderr b/tests/ui/resolve/issue-105069.stderr similarity index 100% rename from src/test/ui/resolve/issue-105069.stderr rename to tests/ui/resolve/issue-105069.stderr diff --git a/src/test/ui/resolve/issue-12796.rs b/tests/ui/resolve/issue-12796.rs similarity index 100% rename from src/test/ui/resolve/issue-12796.rs rename to tests/ui/resolve/issue-12796.rs diff --git a/src/test/ui/resolve/issue-12796.stderr b/tests/ui/resolve/issue-12796.stderr similarity index 100% rename from src/test/ui/resolve/issue-12796.stderr rename to tests/ui/resolve/issue-12796.stderr diff --git a/src/test/ui/resolve/issue-14254.rs b/tests/ui/resolve/issue-14254.rs similarity index 100% rename from src/test/ui/resolve/issue-14254.rs rename to tests/ui/resolve/issue-14254.rs diff --git a/src/test/ui/resolve/issue-14254.stderr b/tests/ui/resolve/issue-14254.stderr similarity index 100% rename from src/test/ui/resolve/issue-14254.stderr rename to tests/ui/resolve/issue-14254.stderr diff --git a/src/test/ui/resolve/issue-16058.rs b/tests/ui/resolve/issue-16058.rs similarity index 100% rename from src/test/ui/resolve/issue-16058.rs rename to tests/ui/resolve/issue-16058.rs diff --git a/src/test/ui/resolve/issue-16058.stderr b/tests/ui/resolve/issue-16058.stderr similarity index 100% rename from src/test/ui/resolve/issue-16058.stderr rename to tests/ui/resolve/issue-16058.stderr diff --git a/src/test/ui/resolve/issue-17518.rs b/tests/ui/resolve/issue-17518.rs similarity index 100% rename from src/test/ui/resolve/issue-17518.rs rename to tests/ui/resolve/issue-17518.rs diff --git a/src/test/ui/resolve/issue-17518.stderr b/tests/ui/resolve/issue-17518.stderr similarity index 100% rename from src/test/ui/resolve/issue-17518.stderr rename to tests/ui/resolve/issue-17518.stderr diff --git a/src/test/ui/resolve/issue-18252.rs b/tests/ui/resolve/issue-18252.rs similarity index 100% rename from src/test/ui/resolve/issue-18252.rs rename to tests/ui/resolve/issue-18252.rs diff --git a/src/test/ui/resolve/issue-18252.stderr b/tests/ui/resolve/issue-18252.stderr similarity index 100% rename from src/test/ui/resolve/issue-18252.stderr rename to tests/ui/resolve/issue-18252.stderr diff --git a/src/test/ui/resolve/issue-19452.rs b/tests/ui/resolve/issue-19452.rs similarity index 100% rename from src/test/ui/resolve/issue-19452.rs rename to tests/ui/resolve/issue-19452.rs diff --git a/src/test/ui/resolve/issue-19452.stderr b/tests/ui/resolve/issue-19452.stderr similarity index 100% rename from src/test/ui/resolve/issue-19452.stderr rename to tests/ui/resolve/issue-19452.stderr diff --git a/src/test/ui/resolve/issue-21221-1.rs b/tests/ui/resolve/issue-21221-1.rs similarity index 100% rename from src/test/ui/resolve/issue-21221-1.rs rename to tests/ui/resolve/issue-21221-1.rs diff --git a/src/test/ui/resolve/issue-21221-1.stderr b/tests/ui/resolve/issue-21221-1.stderr similarity index 100% rename from src/test/ui/resolve/issue-21221-1.stderr rename to tests/ui/resolve/issue-21221-1.stderr diff --git a/src/test/ui/resolve/issue-21221-2.rs b/tests/ui/resolve/issue-21221-2.rs similarity index 100% rename from src/test/ui/resolve/issue-21221-2.rs rename to tests/ui/resolve/issue-21221-2.rs diff --git a/src/test/ui/resolve/issue-21221-2.stderr b/tests/ui/resolve/issue-21221-2.stderr similarity index 100% rename from src/test/ui/resolve/issue-21221-2.stderr rename to tests/ui/resolve/issue-21221-2.stderr diff --git a/src/test/ui/resolve/issue-21221-3.rs b/tests/ui/resolve/issue-21221-3.rs similarity index 100% rename from src/test/ui/resolve/issue-21221-3.rs rename to tests/ui/resolve/issue-21221-3.rs diff --git a/src/test/ui/resolve/issue-21221-3.stderr b/tests/ui/resolve/issue-21221-3.stderr similarity index 100% rename from src/test/ui/resolve/issue-21221-3.stderr rename to tests/ui/resolve/issue-21221-3.stderr diff --git a/src/test/ui/resolve/issue-21221-4.rs b/tests/ui/resolve/issue-21221-4.rs similarity index 100% rename from src/test/ui/resolve/issue-21221-4.rs rename to tests/ui/resolve/issue-21221-4.rs diff --git a/src/test/ui/resolve/issue-21221-4.stderr b/tests/ui/resolve/issue-21221-4.stderr similarity index 100% rename from src/test/ui/resolve/issue-21221-4.stderr rename to tests/ui/resolve/issue-21221-4.stderr diff --git a/src/test/ui/resolve/issue-22692.rs b/tests/ui/resolve/issue-22692.rs similarity index 100% rename from src/test/ui/resolve/issue-22692.rs rename to tests/ui/resolve/issue-22692.rs diff --git a/src/test/ui/resolve/issue-22692.stderr b/tests/ui/resolve/issue-22692.stderr similarity index 100% rename from src/test/ui/resolve/issue-22692.stderr rename to tests/ui/resolve/issue-22692.stderr diff --git a/src/test/ui/resolve/issue-2330.rs b/tests/ui/resolve/issue-2330.rs similarity index 100% rename from src/test/ui/resolve/issue-2330.rs rename to tests/ui/resolve/issue-2330.rs diff --git a/src/test/ui/resolve/issue-2330.stderr b/tests/ui/resolve/issue-2330.stderr similarity index 100% rename from src/test/ui/resolve/issue-2330.stderr rename to tests/ui/resolve/issue-2330.stderr diff --git a/src/test/ui/resolve/issue-23305.rs b/tests/ui/resolve/issue-23305.rs similarity index 100% rename from src/test/ui/resolve/issue-23305.rs rename to tests/ui/resolve/issue-23305.rs diff --git a/src/test/ui/resolve/issue-23305.stderr b/tests/ui/resolve/issue-23305.stderr similarity index 100% rename from src/test/ui/resolve/issue-23305.stderr rename to tests/ui/resolve/issue-23305.stderr diff --git a/src/test/ui/resolve/issue-2356.rs b/tests/ui/resolve/issue-2356.rs similarity index 100% rename from src/test/ui/resolve/issue-2356.rs rename to tests/ui/resolve/issue-2356.rs diff --git a/src/test/ui/resolve/issue-2356.stderr b/tests/ui/resolve/issue-2356.stderr similarity index 100% rename from src/test/ui/resolve/issue-2356.stderr rename to tests/ui/resolve/issue-2356.stderr diff --git a/src/test/ui/resolve/issue-23716.rs b/tests/ui/resolve/issue-23716.rs similarity index 100% rename from src/test/ui/resolve/issue-23716.rs rename to tests/ui/resolve/issue-23716.rs diff --git a/src/test/ui/resolve/issue-23716.stderr b/tests/ui/resolve/issue-23716.stderr similarity index 100% rename from src/test/ui/resolve/issue-23716.stderr rename to tests/ui/resolve/issue-23716.stderr diff --git a/src/test/ui/resolve/issue-24968.rs b/tests/ui/resolve/issue-24968.rs similarity index 100% rename from src/test/ui/resolve/issue-24968.rs rename to tests/ui/resolve/issue-24968.rs diff --git a/src/test/ui/resolve/issue-24968.stderr b/tests/ui/resolve/issue-24968.stderr similarity index 100% rename from src/test/ui/resolve/issue-24968.stderr rename to tests/ui/resolve/issue-24968.stderr diff --git a/src/test/ui/resolve/issue-26545.rs b/tests/ui/resolve/issue-26545.rs similarity index 100% rename from src/test/ui/resolve/issue-26545.rs rename to tests/ui/resolve/issue-26545.rs diff --git a/src/test/ui/resolve/issue-26545.stderr b/tests/ui/resolve/issue-26545.stderr similarity index 100% rename from src/test/ui/resolve/issue-26545.stderr rename to tests/ui/resolve/issue-26545.stderr diff --git a/src/test/ui/resolve/issue-3021-c.rs b/tests/ui/resolve/issue-3021-c.rs similarity index 100% rename from src/test/ui/resolve/issue-3021-c.rs rename to tests/ui/resolve/issue-3021-c.rs diff --git a/src/test/ui/resolve/issue-3021-c.stderr b/tests/ui/resolve/issue-3021-c.stderr similarity index 100% rename from src/test/ui/resolve/issue-3021-c.stderr rename to tests/ui/resolve/issue-3021-c.stderr diff --git a/src/test/ui/resolve/issue-3021.rs b/tests/ui/resolve/issue-3021.rs similarity index 100% rename from src/test/ui/resolve/issue-3021.rs rename to tests/ui/resolve/issue-3021.rs diff --git a/src/test/ui/resolve/issue-3021.stderr b/tests/ui/resolve/issue-3021.stderr similarity index 100% rename from src/test/ui/resolve/issue-3021.stderr rename to tests/ui/resolve/issue-3021.stderr diff --git a/src/test/ui/resolve/issue-30535.rs b/tests/ui/resolve/issue-30535.rs similarity index 100% rename from src/test/ui/resolve/issue-30535.rs rename to tests/ui/resolve/issue-30535.rs diff --git a/src/test/ui/resolve/issue-30535.stderr b/tests/ui/resolve/issue-30535.stderr similarity index 100% rename from src/test/ui/resolve/issue-30535.stderr rename to tests/ui/resolve/issue-30535.stderr diff --git a/src/test/ui/resolve/issue-31845.rs b/tests/ui/resolve/issue-31845.rs similarity index 100% rename from src/test/ui/resolve/issue-31845.rs rename to tests/ui/resolve/issue-31845.rs diff --git a/src/test/ui/resolve/issue-31845.stderr b/tests/ui/resolve/issue-31845.stderr similarity index 100% rename from src/test/ui/resolve/issue-31845.stderr rename to tests/ui/resolve/issue-31845.stderr diff --git a/src/test/ui/resolve/issue-33876.rs b/tests/ui/resolve/issue-33876.rs similarity index 100% rename from src/test/ui/resolve/issue-33876.rs rename to tests/ui/resolve/issue-33876.rs diff --git a/src/test/ui/resolve/issue-33876.stderr b/tests/ui/resolve/issue-33876.stderr similarity index 100% rename from src/test/ui/resolve/issue-33876.stderr rename to tests/ui/resolve/issue-33876.stderr diff --git a/src/test/ui/resolve/issue-35675.rs b/tests/ui/resolve/issue-35675.rs similarity index 100% rename from src/test/ui/resolve/issue-35675.rs rename to tests/ui/resolve/issue-35675.rs diff --git a/src/test/ui/resolve/issue-35675.stderr b/tests/ui/resolve/issue-35675.stderr similarity index 100% rename from src/test/ui/resolve/issue-35675.stderr rename to tests/ui/resolve/issue-35675.stderr diff --git a/src/test/ui/resolve/issue-3907-2.rs b/tests/ui/resolve/issue-3907-2.rs similarity index 100% rename from src/test/ui/resolve/issue-3907-2.rs rename to tests/ui/resolve/issue-3907-2.rs diff --git a/src/test/ui/resolve/issue-3907-2.stderr b/tests/ui/resolve/issue-3907-2.stderr similarity index 100% rename from src/test/ui/resolve/issue-3907-2.stderr rename to tests/ui/resolve/issue-3907-2.stderr diff --git a/src/test/ui/resolve/issue-3907.rs b/tests/ui/resolve/issue-3907.rs similarity index 100% rename from src/test/ui/resolve/issue-3907.rs rename to tests/ui/resolve/issue-3907.rs diff --git a/src/test/ui/resolve/issue-3907.stderr b/tests/ui/resolve/issue-3907.stderr similarity index 100% rename from src/test/ui/resolve/issue-3907.stderr rename to tests/ui/resolve/issue-3907.stderr diff --git a/src/test/ui/resolve/issue-39226.rs b/tests/ui/resolve/issue-39226.rs similarity index 100% rename from src/test/ui/resolve/issue-39226.rs rename to tests/ui/resolve/issue-39226.rs diff --git a/src/test/ui/resolve/issue-39226.stderr b/tests/ui/resolve/issue-39226.stderr similarity index 100% rename from src/test/ui/resolve/issue-39226.stderr rename to tests/ui/resolve/issue-39226.stderr diff --git a/src/test/ui/resolve/issue-39559-2.rs b/tests/ui/resolve/issue-39559-2.rs similarity index 100% rename from src/test/ui/resolve/issue-39559-2.rs rename to tests/ui/resolve/issue-39559-2.rs diff --git a/src/test/ui/resolve/issue-39559-2.stderr b/tests/ui/resolve/issue-39559-2.stderr similarity index 100% rename from src/test/ui/resolve/issue-39559-2.stderr rename to tests/ui/resolve/issue-39559-2.stderr diff --git a/src/test/ui/resolve/issue-39559.rs b/tests/ui/resolve/issue-39559.rs similarity index 100% rename from src/test/ui/resolve/issue-39559.rs rename to tests/ui/resolve/issue-39559.rs diff --git a/src/test/ui/resolve/issue-39559.stderr b/tests/ui/resolve/issue-39559.stderr similarity index 100% rename from src/test/ui/resolve/issue-39559.stderr rename to tests/ui/resolve/issue-39559.stderr diff --git a/src/test/ui/resolve/issue-42944.rs b/tests/ui/resolve/issue-42944.rs similarity index 100% rename from src/test/ui/resolve/issue-42944.rs rename to tests/ui/resolve/issue-42944.rs diff --git a/src/test/ui/resolve/issue-42944.stderr b/tests/ui/resolve/issue-42944.stderr similarity index 100% rename from src/test/ui/resolve/issue-42944.stderr rename to tests/ui/resolve/issue-42944.stderr diff --git a/src/test/ui/resolve/issue-49074.rs b/tests/ui/resolve/issue-49074.rs similarity index 100% rename from src/test/ui/resolve/issue-49074.rs rename to tests/ui/resolve/issue-49074.rs diff --git a/src/test/ui/resolve/issue-49074.stderr b/tests/ui/resolve/issue-49074.stderr similarity index 100% rename from src/test/ui/resolve/issue-49074.stderr rename to tests/ui/resolve/issue-49074.stderr diff --git a/src/test/ui/resolve/issue-5035-2.rs b/tests/ui/resolve/issue-5035-2.rs similarity index 100% rename from src/test/ui/resolve/issue-5035-2.rs rename to tests/ui/resolve/issue-5035-2.rs diff --git a/src/test/ui/resolve/issue-5035-2.stderr b/tests/ui/resolve/issue-5035-2.stderr similarity index 100% rename from src/test/ui/resolve/issue-5035-2.stderr rename to tests/ui/resolve/issue-5035-2.stderr diff --git a/src/test/ui/resolve/issue-5035.rs b/tests/ui/resolve/issue-5035.rs similarity index 100% rename from src/test/ui/resolve/issue-5035.rs rename to tests/ui/resolve/issue-5035.rs diff --git a/src/test/ui/resolve/issue-5035.stderr b/tests/ui/resolve/issue-5035.stderr similarity index 100% rename from src/test/ui/resolve/issue-5035.stderr rename to tests/ui/resolve/issue-5035.stderr diff --git a/src/test/ui/resolve/issue-50599.rs b/tests/ui/resolve/issue-50599.rs similarity index 100% rename from src/test/ui/resolve/issue-50599.rs rename to tests/ui/resolve/issue-50599.rs diff --git a/src/test/ui/resolve/issue-50599.stderr b/tests/ui/resolve/issue-50599.stderr similarity index 100% rename from src/test/ui/resolve/issue-50599.stderr rename to tests/ui/resolve/issue-50599.stderr diff --git a/src/test/ui/resolve/issue-5099.rs b/tests/ui/resolve/issue-5099.rs similarity index 100% rename from src/test/ui/resolve/issue-5099.rs rename to tests/ui/resolve/issue-5099.rs diff --git a/src/test/ui/resolve/issue-5099.stderr b/tests/ui/resolve/issue-5099.stderr similarity index 100% rename from src/test/ui/resolve/issue-5099.stderr rename to tests/ui/resolve/issue-5099.stderr diff --git a/src/test/ui/resolve/issue-54379.rs b/tests/ui/resolve/issue-54379.rs similarity index 100% rename from src/test/ui/resolve/issue-54379.rs rename to tests/ui/resolve/issue-54379.rs diff --git a/src/test/ui/resolve/issue-54379.stderr b/tests/ui/resolve/issue-54379.stderr similarity index 100% rename from src/test/ui/resolve/issue-54379.stderr rename to tests/ui/resolve/issue-54379.stderr diff --git a/src/test/ui/resolve/issue-55673.rs b/tests/ui/resolve/issue-55673.rs similarity index 100% rename from src/test/ui/resolve/issue-55673.rs rename to tests/ui/resolve/issue-55673.rs diff --git a/src/test/ui/resolve/issue-55673.stderr b/tests/ui/resolve/issue-55673.stderr similarity index 100% rename from src/test/ui/resolve/issue-55673.stderr rename to tests/ui/resolve/issue-55673.stderr diff --git a/src/test/ui/resolve/issue-57523.rs b/tests/ui/resolve/issue-57523.rs similarity index 100% rename from src/test/ui/resolve/issue-57523.rs rename to tests/ui/resolve/issue-57523.rs diff --git a/src/test/ui/resolve/issue-5927.rs b/tests/ui/resolve/issue-5927.rs similarity index 100% rename from src/test/ui/resolve/issue-5927.rs rename to tests/ui/resolve/issue-5927.rs diff --git a/src/test/ui/resolve/issue-5927.stderr b/tests/ui/resolve/issue-5927.stderr similarity index 100% rename from src/test/ui/resolve/issue-5927.stderr rename to tests/ui/resolve/issue-5927.stderr diff --git a/src/test/ui/resolve/issue-60057.rs b/tests/ui/resolve/issue-60057.rs similarity index 100% rename from src/test/ui/resolve/issue-60057.rs rename to tests/ui/resolve/issue-60057.rs diff --git a/src/test/ui/resolve/issue-60057.stderr b/tests/ui/resolve/issue-60057.stderr similarity index 100% rename from src/test/ui/resolve/issue-60057.stderr rename to tests/ui/resolve/issue-60057.stderr diff --git a/src/test/ui/resolve/issue-65025-extern-static-parent-generics.rs b/tests/ui/resolve/issue-65025-extern-static-parent-generics.rs similarity index 100% rename from src/test/ui/resolve/issue-65025-extern-static-parent-generics.rs rename to tests/ui/resolve/issue-65025-extern-static-parent-generics.rs diff --git a/src/test/ui/resolve/issue-65025-extern-static-parent-generics.stderr b/tests/ui/resolve/issue-65025-extern-static-parent-generics.stderr similarity index 100% rename from src/test/ui/resolve/issue-65025-extern-static-parent-generics.stderr rename to tests/ui/resolve/issue-65025-extern-static-parent-generics.stderr diff --git a/src/test/ui/resolve/issue-65035-static-with-parent-generics.rs b/tests/ui/resolve/issue-65035-static-with-parent-generics.rs similarity index 100% rename from src/test/ui/resolve/issue-65035-static-with-parent-generics.rs rename to tests/ui/resolve/issue-65035-static-with-parent-generics.rs diff --git a/src/test/ui/resolve/issue-65035-static-with-parent-generics.stderr b/tests/ui/resolve/issue-65035-static-with-parent-generics.stderr similarity index 100% rename from src/test/ui/resolve/issue-65035-static-with-parent-generics.stderr rename to tests/ui/resolve/issue-65035-static-with-parent-generics.stderr diff --git a/src/test/ui/resolve/issue-6702.rs b/tests/ui/resolve/issue-6702.rs similarity index 100% rename from src/test/ui/resolve/issue-6702.rs rename to tests/ui/resolve/issue-6702.rs diff --git a/src/test/ui/resolve/issue-6702.stderr b/tests/ui/resolve/issue-6702.stderr similarity index 100% rename from src/test/ui/resolve/issue-6702.stderr rename to tests/ui/resolve/issue-6702.stderr diff --git a/src/test/ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs b/tests/ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs similarity index 100% rename from src/test/ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs rename to tests/ui/resolve/issue-69401-trait-fn-no-body-ty-local.rs diff --git a/src/test/ui/resolve/issue-69401-trait-fn-no-body-ty-local.stderr b/tests/ui/resolve/issue-69401-trait-fn-no-body-ty-local.stderr similarity index 100% rename from src/test/ui/resolve/issue-69401-trait-fn-no-body-ty-local.stderr rename to tests/ui/resolve/issue-69401-trait-fn-no-body-ty-local.stderr diff --git a/src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs b/tests/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs similarity index 100% rename from src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs rename to tests/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs diff --git a/src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr b/tests/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr similarity index 100% rename from src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr rename to tests/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr diff --git a/src/test/ui/resolve/issue-73427.rs b/tests/ui/resolve/issue-73427.rs similarity index 100% rename from src/test/ui/resolve/issue-73427.rs rename to tests/ui/resolve/issue-73427.rs diff --git a/src/test/ui/resolve/issue-73427.stderr b/tests/ui/resolve/issue-73427.stderr similarity index 100% rename from src/test/ui/resolve/issue-73427.stderr rename to tests/ui/resolve/issue-73427.stderr diff --git a/src/test/ui/resolve/issue-80079.rs b/tests/ui/resolve/issue-80079.rs similarity index 100% rename from src/test/ui/resolve/issue-80079.rs rename to tests/ui/resolve/issue-80079.rs diff --git a/src/test/ui/resolve/issue-80079.stderr b/tests/ui/resolve/issue-80079.stderr similarity index 100% rename from src/test/ui/resolve/issue-80079.stderr rename to tests/ui/resolve/issue-80079.stderr diff --git a/src/test/ui/resolve/issue-81508.rs b/tests/ui/resolve/issue-81508.rs similarity index 100% rename from src/test/ui/resolve/issue-81508.rs rename to tests/ui/resolve/issue-81508.rs diff --git a/src/test/ui/resolve/issue-81508.stderr b/tests/ui/resolve/issue-81508.stderr similarity index 100% rename from src/test/ui/resolve/issue-81508.stderr rename to tests/ui/resolve/issue-81508.stderr diff --git a/src/test/ui/resolve/issue-82156.rs b/tests/ui/resolve/issue-82156.rs similarity index 100% rename from src/test/ui/resolve/issue-82156.rs rename to tests/ui/resolve/issue-82156.rs diff --git a/src/test/ui/resolve/issue-82156.stderr b/tests/ui/resolve/issue-82156.stderr similarity index 100% rename from src/test/ui/resolve/issue-82156.stderr rename to tests/ui/resolve/issue-82156.stderr diff --git a/src/test/ui/resolve/issue-82865.rs b/tests/ui/resolve/issue-82865.rs similarity index 100% rename from src/test/ui/resolve/issue-82865.rs rename to tests/ui/resolve/issue-82865.rs diff --git a/src/test/ui/resolve/issue-82865.stderr b/tests/ui/resolve/issue-82865.stderr similarity index 100% rename from src/test/ui/resolve/issue-82865.stderr rename to tests/ui/resolve/issue-82865.stderr diff --git a/src/test/ui/resolve/issue-85348.rs b/tests/ui/resolve/issue-85348.rs similarity index 100% rename from src/test/ui/resolve/issue-85348.rs rename to tests/ui/resolve/issue-85348.rs diff --git a/src/test/ui/resolve/issue-85348.stderr b/tests/ui/resolve/issue-85348.stderr similarity index 100% rename from src/test/ui/resolve/issue-85348.stderr rename to tests/ui/resolve/issue-85348.stderr diff --git a/src/test/ui/resolve/issue-85671.rs b/tests/ui/resolve/issue-85671.rs similarity index 100% rename from src/test/ui/resolve/issue-85671.rs rename to tests/ui/resolve/issue-85671.rs diff --git a/src/test/ui/resolve/issue-88472.rs b/tests/ui/resolve/issue-88472.rs similarity index 100% rename from src/test/ui/resolve/issue-88472.rs rename to tests/ui/resolve/issue-88472.rs diff --git a/src/test/ui/resolve/issue-88472.stderr b/tests/ui/resolve/issue-88472.stderr similarity index 100% rename from src/test/ui/resolve/issue-88472.stderr rename to tests/ui/resolve/issue-88472.stderr diff --git a/src/test/ui/resolve/issue-90113.rs b/tests/ui/resolve/issue-90113.rs similarity index 100% rename from src/test/ui/resolve/issue-90113.rs rename to tests/ui/resolve/issue-90113.rs diff --git a/src/test/ui/resolve/issue-90113.stderr b/tests/ui/resolve/issue-90113.stderr similarity index 100% rename from src/test/ui/resolve/issue-90113.stderr rename to tests/ui/resolve/issue-90113.stderr diff --git a/src/test/ui/resolve/levenshtein.rs b/tests/ui/resolve/levenshtein.rs similarity index 100% rename from src/test/ui/resolve/levenshtein.rs rename to tests/ui/resolve/levenshtein.rs diff --git a/src/test/ui/resolve/levenshtein.stderr b/tests/ui/resolve/levenshtein.stderr similarity index 100% rename from src/test/ui/resolve/levenshtein.stderr rename to tests/ui/resolve/levenshtein.stderr diff --git a/src/test/ui/resolve/macro-determinacy-non-module.rs b/tests/ui/resolve/macro-determinacy-non-module.rs similarity index 100% rename from src/test/ui/resolve/macro-determinacy-non-module.rs rename to tests/ui/resolve/macro-determinacy-non-module.rs diff --git a/src/test/ui/resolve/missing-in-namespace.rs b/tests/ui/resolve/missing-in-namespace.rs similarity index 100% rename from src/test/ui/resolve/missing-in-namespace.rs rename to tests/ui/resolve/missing-in-namespace.rs diff --git a/src/test/ui/resolve/missing-in-namespace.stderr b/tests/ui/resolve/missing-in-namespace.stderr similarity index 100% rename from src/test/ui/resolve/missing-in-namespace.stderr rename to tests/ui/resolve/missing-in-namespace.stderr diff --git a/src/test/ui/resolve/name-clash-nullary.rs b/tests/ui/resolve/name-clash-nullary.rs similarity index 100% rename from src/test/ui/resolve/name-clash-nullary.rs rename to tests/ui/resolve/name-clash-nullary.rs diff --git a/src/test/ui/resolve/name-clash-nullary.stderr b/tests/ui/resolve/name-clash-nullary.stderr similarity index 100% rename from src/test/ui/resolve/name-clash-nullary.stderr rename to tests/ui/resolve/name-clash-nullary.stderr diff --git a/src/test/ui/resolve/name-collision-in-trait-fn-sig.rs b/tests/ui/resolve/name-collision-in-trait-fn-sig.rs similarity index 100% rename from src/test/ui/resolve/name-collision-in-trait-fn-sig.rs rename to tests/ui/resolve/name-collision-in-trait-fn-sig.rs diff --git a/src/test/ui/resolve/no-implicit-prelude-nested.rs b/tests/ui/resolve/no-implicit-prelude-nested.rs similarity index 100% rename from src/test/ui/resolve/no-implicit-prelude-nested.rs rename to tests/ui/resolve/no-implicit-prelude-nested.rs diff --git a/src/test/ui/resolve/no-implicit-prelude-nested.stderr b/tests/ui/resolve/no-implicit-prelude-nested.stderr similarity index 100% rename from src/test/ui/resolve/no-implicit-prelude-nested.stderr rename to tests/ui/resolve/no-implicit-prelude-nested.stderr diff --git a/src/test/ui/resolve/no-implicit-prelude.rs b/tests/ui/resolve/no-implicit-prelude.rs similarity index 100% rename from src/test/ui/resolve/no-implicit-prelude.rs rename to tests/ui/resolve/no-implicit-prelude.rs diff --git a/src/test/ui/resolve/no-implicit-prelude.stderr b/tests/ui/resolve/no-implicit-prelude.stderr similarity index 100% rename from src/test/ui/resolve/no-implicit-prelude.stderr rename to tests/ui/resolve/no-implicit-prelude.stderr diff --git a/src/test/ui/resolve/no-std-1.rs b/tests/ui/resolve/no-std-1.rs similarity index 100% rename from src/test/ui/resolve/no-std-1.rs rename to tests/ui/resolve/no-std-1.rs diff --git a/src/test/ui/resolve/no-std-2.rs b/tests/ui/resolve/no-std-2.rs similarity index 100% rename from src/test/ui/resolve/no-std-2.rs rename to tests/ui/resolve/no-std-2.rs diff --git a/src/test/ui/resolve/no-std-3.rs b/tests/ui/resolve/no-std-3.rs similarity index 100% rename from src/test/ui/resolve/no-std-3.rs rename to tests/ui/resolve/no-std-3.rs diff --git a/src/test/ui/resolve/pathless-extern-ok.rs b/tests/ui/resolve/pathless-extern-ok.rs similarity index 100% rename from src/test/ui/resolve/pathless-extern-ok.rs rename to tests/ui/resolve/pathless-extern-ok.rs diff --git a/src/test/ui/resolve/point-at-type-parameter-shadowing-another-type.rs b/tests/ui/resolve/point-at-type-parameter-shadowing-another-type.rs similarity index 100% rename from src/test/ui/resolve/point-at-type-parameter-shadowing-another-type.rs rename to tests/ui/resolve/point-at-type-parameter-shadowing-another-type.rs diff --git a/src/test/ui/resolve/point-at-type-parameter-shadowing-another-type.stderr b/tests/ui/resolve/point-at-type-parameter-shadowing-another-type.stderr similarity index 100% rename from src/test/ui/resolve/point-at-type-parameter-shadowing-another-type.stderr rename to tests/ui/resolve/point-at-type-parameter-shadowing-another-type.stderr diff --git a/src/test/ui/resolve/privacy-enum-ctor.rs b/tests/ui/resolve/privacy-enum-ctor.rs similarity index 100% rename from src/test/ui/resolve/privacy-enum-ctor.rs rename to tests/ui/resolve/privacy-enum-ctor.rs diff --git a/src/test/ui/resolve/privacy-enum-ctor.stderr b/tests/ui/resolve/privacy-enum-ctor.stderr similarity index 100% rename from src/test/ui/resolve/privacy-enum-ctor.stderr rename to tests/ui/resolve/privacy-enum-ctor.stderr diff --git a/src/test/ui/resolve/privacy-struct-ctor.rs b/tests/ui/resolve/privacy-struct-ctor.rs similarity index 100% rename from src/test/ui/resolve/privacy-struct-ctor.rs rename to tests/ui/resolve/privacy-struct-ctor.rs diff --git a/src/test/ui/resolve/privacy-struct-ctor.stderr b/tests/ui/resolve/privacy-struct-ctor.stderr similarity index 100% rename from src/test/ui/resolve/privacy-struct-ctor.stderr rename to tests/ui/resolve/privacy-struct-ctor.stderr diff --git a/src/test/ui/resolve/raw-ident-in-path.rs b/tests/ui/resolve/raw-ident-in-path.rs similarity index 100% rename from src/test/ui/resolve/raw-ident-in-path.rs rename to tests/ui/resolve/raw-ident-in-path.rs diff --git a/src/test/ui/resolve/raw-ident-in-path.stderr b/tests/ui/resolve/raw-ident-in-path.stderr similarity index 100% rename from src/test/ui/resolve/raw-ident-in-path.stderr rename to tests/ui/resolve/raw-ident-in-path.stderr diff --git a/src/test/ui/resolve/resolve-assoc-suggestions.rs b/tests/ui/resolve/resolve-assoc-suggestions.rs similarity index 100% rename from src/test/ui/resolve/resolve-assoc-suggestions.rs rename to tests/ui/resolve/resolve-assoc-suggestions.rs diff --git a/src/test/ui/resolve/resolve-assoc-suggestions.stderr b/tests/ui/resolve/resolve-assoc-suggestions.stderr similarity index 100% rename from src/test/ui/resolve/resolve-assoc-suggestions.stderr rename to tests/ui/resolve/resolve-assoc-suggestions.stderr diff --git a/src/test/ui/resolve/resolve-bad-import-prefix.rs b/tests/ui/resolve/resolve-bad-import-prefix.rs similarity index 100% rename from src/test/ui/resolve/resolve-bad-import-prefix.rs rename to tests/ui/resolve/resolve-bad-import-prefix.rs diff --git a/src/test/ui/resolve/resolve-bad-import-prefix.stderr b/tests/ui/resolve/resolve-bad-import-prefix.stderr similarity index 100% rename from src/test/ui/resolve/resolve-bad-import-prefix.stderr rename to tests/ui/resolve/resolve-bad-import-prefix.stderr diff --git a/src/test/ui/resolve/resolve-bad-visibility.rs b/tests/ui/resolve/resolve-bad-visibility.rs similarity index 100% rename from src/test/ui/resolve/resolve-bad-visibility.rs rename to tests/ui/resolve/resolve-bad-visibility.rs diff --git a/src/test/ui/resolve/resolve-bad-visibility.stderr b/tests/ui/resolve/resolve-bad-visibility.stderr similarity index 100% rename from src/test/ui/resolve/resolve-bad-visibility.stderr rename to tests/ui/resolve/resolve-bad-visibility.stderr diff --git a/src/test/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.rs b/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.rs rename to tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.rs diff --git a/src/test/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr b/tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr rename to tests/ui/resolve/resolve-conflict-extern-crate-vs-extern-crate.stderr diff --git a/src/test/ui/resolve/resolve-conflict-import-vs-extern-crate.rs b/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-import-vs-extern-crate.rs rename to tests/ui/resolve/resolve-conflict-import-vs-extern-crate.rs diff --git a/src/test/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr b/tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr rename to tests/ui/resolve/resolve-conflict-import-vs-extern-crate.stderr diff --git a/src/test/ui/resolve/resolve-conflict-import-vs-import.fixed b/tests/ui/resolve/resolve-conflict-import-vs-import.fixed similarity index 100% rename from src/test/ui/resolve/resolve-conflict-import-vs-import.fixed rename to tests/ui/resolve/resolve-conflict-import-vs-import.fixed diff --git a/src/test/ui/resolve/resolve-conflict-import-vs-import.rs b/tests/ui/resolve/resolve-conflict-import-vs-import.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-import-vs-import.rs rename to tests/ui/resolve/resolve-conflict-import-vs-import.rs diff --git a/src/test/ui/resolve/resolve-conflict-import-vs-import.stderr b/tests/ui/resolve/resolve-conflict-import-vs-import.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-import-vs-import.stderr rename to tests/ui/resolve/resolve-conflict-import-vs-import.stderr diff --git a/src/test/ui/resolve/resolve-conflict-item-vs-extern-crate.rs b/tests/ui/resolve/resolve-conflict-item-vs-extern-crate.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-item-vs-extern-crate.rs rename to tests/ui/resolve/resolve-conflict-item-vs-extern-crate.rs diff --git a/src/test/ui/resolve/resolve-conflict-item-vs-extern-crate.stderr b/tests/ui/resolve/resolve-conflict-item-vs-extern-crate.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-item-vs-extern-crate.stderr rename to tests/ui/resolve/resolve-conflict-item-vs-extern-crate.stderr diff --git a/src/test/ui/resolve/resolve-conflict-item-vs-import.rs b/tests/ui/resolve/resolve-conflict-item-vs-import.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-item-vs-import.rs rename to tests/ui/resolve/resolve-conflict-item-vs-import.rs diff --git a/src/test/ui/resolve/resolve-conflict-item-vs-import.stderr b/tests/ui/resolve/resolve-conflict-item-vs-import.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-item-vs-import.stderr rename to tests/ui/resolve/resolve-conflict-item-vs-import.stderr diff --git a/src/test/ui/resolve/resolve-conflict-type-vs-import.rs b/tests/ui/resolve/resolve-conflict-type-vs-import.rs similarity index 100% rename from src/test/ui/resolve/resolve-conflict-type-vs-import.rs rename to tests/ui/resolve/resolve-conflict-type-vs-import.rs diff --git a/src/test/ui/resolve/resolve-conflict-type-vs-import.stderr b/tests/ui/resolve/resolve-conflict-type-vs-import.stderr similarity index 100% rename from src/test/ui/resolve/resolve-conflict-type-vs-import.stderr rename to tests/ui/resolve/resolve-conflict-type-vs-import.stderr diff --git a/src/test/ui/resolve/resolve-hint-macro.fixed b/tests/ui/resolve/resolve-hint-macro.fixed similarity index 100% rename from src/test/ui/resolve/resolve-hint-macro.fixed rename to tests/ui/resolve/resolve-hint-macro.fixed diff --git a/src/test/ui/resolve/resolve-hint-macro.rs b/tests/ui/resolve/resolve-hint-macro.rs similarity index 100% rename from src/test/ui/resolve/resolve-hint-macro.rs rename to tests/ui/resolve/resolve-hint-macro.rs diff --git a/src/test/ui/resolve/resolve-hint-macro.stderr b/tests/ui/resolve/resolve-hint-macro.stderr similarity index 100% rename from src/test/ui/resolve/resolve-hint-macro.stderr rename to tests/ui/resolve/resolve-hint-macro.stderr diff --git a/src/test/ui/resolve/resolve-inconsistent-binding-mode.rs b/tests/ui/resolve/resolve-inconsistent-binding-mode.rs similarity index 100% rename from src/test/ui/resolve/resolve-inconsistent-binding-mode.rs rename to tests/ui/resolve/resolve-inconsistent-binding-mode.rs diff --git a/src/test/ui/resolve/resolve-inconsistent-binding-mode.stderr b/tests/ui/resolve/resolve-inconsistent-binding-mode.stderr similarity index 100% rename from src/test/ui/resolve/resolve-inconsistent-binding-mode.stderr rename to tests/ui/resolve/resolve-inconsistent-binding-mode.stderr diff --git a/src/test/ui/resolve/resolve-inconsistent-names.rs b/tests/ui/resolve/resolve-inconsistent-names.rs similarity index 100% rename from src/test/ui/resolve/resolve-inconsistent-names.rs rename to tests/ui/resolve/resolve-inconsistent-names.rs diff --git a/src/test/ui/resolve/resolve-inconsistent-names.stderr b/tests/ui/resolve/resolve-inconsistent-names.stderr similarity index 100% rename from src/test/ui/resolve/resolve-inconsistent-names.stderr rename to tests/ui/resolve/resolve-inconsistent-names.stderr diff --git a/src/test/ui/resolve/resolve-issue-2428.rs b/tests/ui/resolve/resolve-issue-2428.rs similarity index 100% rename from src/test/ui/resolve/resolve-issue-2428.rs rename to tests/ui/resolve/resolve-issue-2428.rs diff --git a/src/test/ui/resolve/resolve-label.rs b/tests/ui/resolve/resolve-label.rs similarity index 100% rename from src/test/ui/resolve/resolve-label.rs rename to tests/ui/resolve/resolve-label.rs diff --git a/src/test/ui/resolve/resolve-label.stderr b/tests/ui/resolve/resolve-label.stderr similarity index 100% rename from src/test/ui/resolve/resolve-label.stderr rename to tests/ui/resolve/resolve-label.stderr diff --git a/src/test/ui/resolve/resolve-primitive-fallback.rs b/tests/ui/resolve/resolve-primitive-fallback.rs similarity index 100% rename from src/test/ui/resolve/resolve-primitive-fallback.rs rename to tests/ui/resolve/resolve-primitive-fallback.rs diff --git a/src/test/ui/resolve/resolve-primitive-fallback.stderr b/tests/ui/resolve/resolve-primitive-fallback.stderr similarity index 100% rename from src/test/ui/resolve/resolve-primitive-fallback.stderr rename to tests/ui/resolve/resolve-primitive-fallback.stderr diff --git a/src/test/ui/resolve/resolve-pseudo-shadowing.rs b/tests/ui/resolve/resolve-pseudo-shadowing.rs similarity index 100% rename from src/test/ui/resolve/resolve-pseudo-shadowing.rs rename to tests/ui/resolve/resolve-pseudo-shadowing.rs diff --git a/src/test/ui/resolve/resolve-self-in-impl-2.rs b/tests/ui/resolve/resolve-self-in-impl-2.rs similarity index 100% rename from src/test/ui/resolve/resolve-self-in-impl-2.rs rename to tests/ui/resolve/resolve-self-in-impl-2.rs diff --git a/src/test/ui/resolve/resolve-self-in-impl-2.stderr b/tests/ui/resolve/resolve-self-in-impl-2.stderr similarity index 100% rename from src/test/ui/resolve/resolve-self-in-impl-2.stderr rename to tests/ui/resolve/resolve-self-in-impl-2.stderr diff --git a/src/test/ui/resolve/resolve-self-in-impl.rs b/tests/ui/resolve/resolve-self-in-impl.rs similarity index 100% rename from src/test/ui/resolve/resolve-self-in-impl.rs rename to tests/ui/resolve/resolve-self-in-impl.rs diff --git a/src/test/ui/resolve/resolve-self-in-impl.stderr b/tests/ui/resolve/resolve-self-in-impl.stderr similarity index 100% rename from src/test/ui/resolve/resolve-self-in-impl.stderr rename to tests/ui/resolve/resolve-self-in-impl.stderr diff --git a/src/test/ui/resolve/resolve-speculative-adjustment.rs b/tests/ui/resolve/resolve-speculative-adjustment.rs similarity index 100% rename from src/test/ui/resolve/resolve-speculative-adjustment.rs rename to tests/ui/resolve/resolve-speculative-adjustment.rs diff --git a/src/test/ui/resolve/resolve-speculative-adjustment.stderr b/tests/ui/resolve/resolve-speculative-adjustment.stderr similarity index 100% rename from src/test/ui/resolve/resolve-speculative-adjustment.stderr rename to tests/ui/resolve/resolve-speculative-adjustment.stderr diff --git a/src/test/ui/resolve/resolve-type-param-in-item-in-trait.rs b/tests/ui/resolve/resolve-type-param-in-item-in-trait.rs similarity index 100% rename from src/test/ui/resolve/resolve-type-param-in-item-in-trait.rs rename to tests/ui/resolve/resolve-type-param-in-item-in-trait.rs diff --git a/src/test/ui/resolve/resolve-type-param-in-item-in-trait.stderr b/tests/ui/resolve/resolve-type-param-in-item-in-trait.stderr similarity index 100% rename from src/test/ui/resolve/resolve-type-param-in-item-in-trait.stderr rename to tests/ui/resolve/resolve-type-param-in-item-in-trait.stderr diff --git a/src/test/ui/resolve/resolve-unknown-trait.rs b/tests/ui/resolve/resolve-unknown-trait.rs similarity index 100% rename from src/test/ui/resolve/resolve-unknown-trait.rs rename to tests/ui/resolve/resolve-unknown-trait.rs diff --git a/src/test/ui/resolve/resolve-unknown-trait.stderr b/tests/ui/resolve/resolve-unknown-trait.stderr similarity index 100% rename from src/test/ui/resolve/resolve-unknown-trait.stderr rename to tests/ui/resolve/resolve-unknown-trait.stderr diff --git a/src/test/ui/resolve/resolve-variant-assoc-item.rs b/tests/ui/resolve/resolve-variant-assoc-item.rs similarity index 100% rename from src/test/ui/resolve/resolve-variant-assoc-item.rs rename to tests/ui/resolve/resolve-variant-assoc-item.rs diff --git a/src/test/ui/resolve/resolve-variant-assoc-item.stderr b/tests/ui/resolve/resolve-variant-assoc-item.stderr similarity index 100% rename from src/test/ui/resolve/resolve-variant-assoc-item.stderr rename to tests/ui/resolve/resolve-variant-assoc-item.stderr diff --git a/src/test/ui/resolve/shadow-const-param.rs b/tests/ui/resolve/shadow-const-param.rs similarity index 100% rename from src/test/ui/resolve/shadow-const-param.rs rename to tests/ui/resolve/shadow-const-param.rs diff --git a/src/test/ui/resolve/shadow-const-param.stderr b/tests/ui/resolve/shadow-const-param.stderr similarity index 100% rename from src/test/ui/resolve/shadow-const-param.stderr rename to tests/ui/resolve/shadow-const-param.stderr diff --git a/src/test/ui/resolve/suggest-path-for-tuple-struct.rs b/tests/ui/resolve/suggest-path-for-tuple-struct.rs similarity index 100% rename from src/test/ui/resolve/suggest-path-for-tuple-struct.rs rename to tests/ui/resolve/suggest-path-for-tuple-struct.rs diff --git a/src/test/ui/resolve/suggest-path-for-tuple-struct.stderr b/tests/ui/resolve/suggest-path-for-tuple-struct.stderr similarity index 100% rename from src/test/ui/resolve/suggest-path-for-tuple-struct.stderr rename to tests/ui/resolve/suggest-path-for-tuple-struct.stderr diff --git a/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.rs b/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.rs similarity index 100% rename from src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.rs rename to tests/ui/resolve/suggest-path-instead-of-mod-dot-item.rs diff --git a/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr b/tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr similarity index 100% rename from src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr rename to tests/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr diff --git a/src/test/ui/resolve/token-error-correct-2.rs b/tests/ui/resolve/token-error-correct-2.rs similarity index 100% rename from src/test/ui/resolve/token-error-correct-2.rs rename to tests/ui/resolve/token-error-correct-2.rs diff --git a/src/test/ui/resolve/token-error-correct-2.stderr b/tests/ui/resolve/token-error-correct-2.stderr similarity index 100% rename from src/test/ui/resolve/token-error-correct-2.stderr rename to tests/ui/resolve/token-error-correct-2.stderr diff --git a/src/test/ui/resolve/token-error-correct-3.rs b/tests/ui/resolve/token-error-correct-3.rs similarity index 100% rename from src/test/ui/resolve/token-error-correct-3.rs rename to tests/ui/resolve/token-error-correct-3.rs diff --git a/src/test/ui/resolve/token-error-correct-3.stderr b/tests/ui/resolve/token-error-correct-3.stderr similarity index 100% rename from src/test/ui/resolve/token-error-correct-3.stderr rename to tests/ui/resolve/token-error-correct-3.stderr diff --git a/src/test/ui/resolve/token-error-correct-4.fixed b/tests/ui/resolve/token-error-correct-4.fixed similarity index 100% rename from src/test/ui/resolve/token-error-correct-4.fixed rename to tests/ui/resolve/token-error-correct-4.fixed diff --git a/src/test/ui/resolve/token-error-correct-4.rs b/tests/ui/resolve/token-error-correct-4.rs similarity index 100% rename from src/test/ui/resolve/token-error-correct-4.rs rename to tests/ui/resolve/token-error-correct-4.rs diff --git a/src/test/ui/resolve/token-error-correct-4.stderr b/tests/ui/resolve/token-error-correct-4.stderr similarity index 100% rename from src/test/ui/resolve/token-error-correct-4.stderr rename to tests/ui/resolve/token-error-correct-4.stderr diff --git a/src/test/ui/resolve/token-error-correct.rs b/tests/ui/resolve/token-error-correct.rs similarity index 100% rename from src/test/ui/resolve/token-error-correct.rs rename to tests/ui/resolve/token-error-correct.rs diff --git a/src/test/ui/resolve/token-error-correct.stderr b/tests/ui/resolve/token-error-correct.stderr similarity index 100% rename from src/test/ui/resolve/token-error-correct.stderr rename to tests/ui/resolve/token-error-correct.stderr diff --git a/src/test/ui/resolve/tuple-struct-alias.rs b/tests/ui/resolve/tuple-struct-alias.rs similarity index 100% rename from src/test/ui/resolve/tuple-struct-alias.rs rename to tests/ui/resolve/tuple-struct-alias.rs diff --git a/src/test/ui/resolve/tuple-struct-alias.stderr b/tests/ui/resolve/tuple-struct-alias.stderr similarity index 100% rename from src/test/ui/resolve/tuple-struct-alias.stderr rename to tests/ui/resolve/tuple-struct-alias.stderr diff --git a/src/test/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs b/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs similarity index 100% rename from src/test/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs rename to tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.rs diff --git a/src/test/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr b/tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr similarity index 100% rename from src/test/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr rename to tests/ui/resolve/typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr diff --git a/src/test/ui/resolve/typo-suggestion-mistyped-in-path.rs b/tests/ui/resolve/typo-suggestion-mistyped-in-path.rs similarity index 100% rename from src/test/ui/resolve/typo-suggestion-mistyped-in-path.rs rename to tests/ui/resolve/typo-suggestion-mistyped-in-path.rs diff --git a/src/test/ui/resolve/typo-suggestion-mistyped-in-path.stderr b/tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr similarity index 100% rename from src/test/ui/resolve/typo-suggestion-mistyped-in-path.stderr rename to tests/ui/resolve/typo-suggestion-mistyped-in-path.stderr diff --git a/src/test/ui/resolve/typo-suggestion-named-underscore.rs b/tests/ui/resolve/typo-suggestion-named-underscore.rs similarity index 100% rename from src/test/ui/resolve/typo-suggestion-named-underscore.rs rename to tests/ui/resolve/typo-suggestion-named-underscore.rs diff --git a/src/test/ui/resolve/typo-suggestion-named-underscore.stderr b/tests/ui/resolve/typo-suggestion-named-underscore.stderr similarity index 100% rename from src/test/ui/resolve/typo-suggestion-named-underscore.stderr rename to tests/ui/resolve/typo-suggestion-named-underscore.stderr diff --git a/src/test/ui/resolve/unboxed-closure-sugar-nonexistent-trait.rs b/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.rs similarity index 100% rename from src/test/ui/resolve/unboxed-closure-sugar-nonexistent-trait.rs rename to tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.rs diff --git a/src/test/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr b/tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr similarity index 100% rename from src/test/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr rename to tests/ui/resolve/unboxed-closure-sugar-nonexistent-trait.stderr diff --git a/src/test/ui/resolve/unresolved_static_type_field.rs b/tests/ui/resolve/unresolved_static_type_field.rs similarity index 100% rename from src/test/ui/resolve/unresolved_static_type_field.rs rename to tests/ui/resolve/unresolved_static_type_field.rs diff --git a/src/test/ui/resolve/unresolved_static_type_field.stderr b/tests/ui/resolve/unresolved_static_type_field.stderr similarity index 100% rename from src/test/ui/resolve/unresolved_static_type_field.stderr rename to tests/ui/resolve/unresolved_static_type_field.stderr diff --git a/src/test/ui/resolve/use-self-in-inner-fn.rs b/tests/ui/resolve/use-self-in-inner-fn.rs similarity index 100% rename from src/test/ui/resolve/use-self-in-inner-fn.rs rename to tests/ui/resolve/use-self-in-inner-fn.rs diff --git a/src/test/ui/resolve/use-self-in-inner-fn.stderr b/tests/ui/resolve/use-self-in-inner-fn.stderr similarity index 100% rename from src/test/ui/resolve/use-self-in-inner-fn.stderr rename to tests/ui/resolve/use-self-in-inner-fn.stderr diff --git a/src/test/ui/resolve/use_suggestion.rs b/tests/ui/resolve/use_suggestion.rs similarity index 100% rename from src/test/ui/resolve/use_suggestion.rs rename to tests/ui/resolve/use_suggestion.rs diff --git a/src/test/ui/resolve/use_suggestion.stderr b/tests/ui/resolve/use_suggestion.stderr similarity index 100% rename from src/test/ui/resolve/use_suggestion.stderr rename to tests/ui/resolve/use_suggestion.stderr diff --git a/src/test/ui/resolve/use_suggestion_placement.fixed b/tests/ui/resolve/use_suggestion_placement.fixed similarity index 100% rename from src/test/ui/resolve/use_suggestion_placement.fixed rename to tests/ui/resolve/use_suggestion_placement.fixed diff --git a/src/test/ui/resolve/use_suggestion_placement.rs b/tests/ui/resolve/use_suggestion_placement.rs similarity index 100% rename from src/test/ui/resolve/use_suggestion_placement.rs rename to tests/ui/resolve/use_suggestion_placement.rs diff --git a/src/test/ui/resolve/use_suggestion_placement.stderr b/tests/ui/resolve/use_suggestion_placement.stderr similarity index 100% rename from src/test/ui/resolve/use_suggestion_placement.stderr rename to tests/ui/resolve/use_suggestion_placement.stderr diff --git a/src/test/ui/resolve/visibility-indeterminate.rs b/tests/ui/resolve/visibility-indeterminate.rs similarity index 100% rename from src/test/ui/resolve/visibility-indeterminate.rs rename to tests/ui/resolve/visibility-indeterminate.rs diff --git a/src/test/ui/resolve/visibility-indeterminate.stderr b/tests/ui/resolve/visibility-indeterminate.stderr similarity index 100% rename from src/test/ui/resolve/visibility-indeterminate.stderr rename to tests/ui/resolve/visibility-indeterminate.stderr diff --git a/src/test/ui/resource-assign-is-not-copy.rs b/tests/ui/resource-assign-is-not-copy.rs similarity index 100% rename from src/test/ui/resource-assign-is-not-copy.rs rename to tests/ui/resource-assign-is-not-copy.rs diff --git a/src/test/ui/resource-destruct.rs b/tests/ui/resource-destruct.rs similarity index 100% rename from src/test/ui/resource-destruct.rs rename to tests/ui/resource-destruct.rs diff --git a/src/test/ui/ret-bang.rs b/tests/ui/ret-bang.rs similarity index 100% rename from src/test/ui/ret-bang.rs rename to tests/ui/ret-bang.rs diff --git a/src/test/ui/ret-non-nil.rs b/tests/ui/ret-non-nil.rs similarity index 100% rename from src/test/ui/ret-non-nil.rs rename to tests/ui/ret-non-nil.rs diff --git a/src/test/ui/ret-non-nil.stderr b/tests/ui/ret-non-nil.stderr similarity index 100% rename from src/test/ui/ret-non-nil.stderr rename to tests/ui/ret-non-nil.stderr diff --git a/src/test/ui/return-disjoint-regions.rs b/tests/ui/return-disjoint-regions.rs similarity index 100% rename from src/test/ui/return-disjoint-regions.rs rename to tests/ui/return-disjoint-regions.rs diff --git a/src/test/ui/return-disjoint-regions.stderr b/tests/ui/return-disjoint-regions.stderr similarity index 100% rename from src/test/ui/return-disjoint-regions.stderr rename to tests/ui/return-disjoint-regions.stderr diff --git a/src/test/ui/return-nil.rs b/tests/ui/return-nil.rs similarity index 100% rename from src/test/ui/return-nil.rs rename to tests/ui/return-nil.rs diff --git a/src/test/ui/return/issue-64620.rs b/tests/ui/return/issue-64620.rs similarity index 100% rename from src/test/ui/return/issue-64620.rs rename to tests/ui/return/issue-64620.rs diff --git a/src/test/ui/return/issue-64620.stderr b/tests/ui/return/issue-64620.stderr similarity index 100% rename from src/test/ui/return/issue-64620.stderr rename to tests/ui/return/issue-64620.stderr diff --git a/src/test/ui/return/issue-82612-return-mutable-reference.rs b/tests/ui/return/issue-82612-return-mutable-reference.rs similarity index 100% rename from src/test/ui/return/issue-82612-return-mutable-reference.rs rename to tests/ui/return/issue-82612-return-mutable-reference.rs diff --git a/src/test/ui/return/issue-82612-return-mutable-reference.stderr b/tests/ui/return/issue-82612-return-mutable-reference.stderr similarity index 100% rename from src/test/ui/return/issue-82612-return-mutable-reference.stderr rename to tests/ui/return/issue-82612-return-mutable-reference.stderr diff --git a/src/test/ui/return/issue-86188-return-not-in-fn-body.rs b/tests/ui/return/issue-86188-return-not-in-fn-body.rs similarity index 100% rename from src/test/ui/return/issue-86188-return-not-in-fn-body.rs rename to tests/ui/return/issue-86188-return-not-in-fn-body.rs diff --git a/src/test/ui/return/issue-86188-return-not-in-fn-body.stderr b/tests/ui/return/issue-86188-return-not-in-fn-body.stderr similarity index 100% rename from src/test/ui/return/issue-86188-return-not-in-fn-body.stderr rename to tests/ui/return/issue-86188-return-not-in-fn-body.stderr diff --git a/src/test/ui/return/return-from-diverging.rs b/tests/ui/return/return-from-diverging.rs similarity index 100% rename from src/test/ui/return/return-from-diverging.rs rename to tests/ui/return/return-from-diverging.rs diff --git a/src/test/ui/return/return-from-diverging.stderr b/tests/ui/return/return-from-diverging.stderr similarity index 100% rename from src/test/ui/return/return-from-diverging.stderr rename to tests/ui/return/return-from-diverging.stderr diff --git a/src/test/ui/return/return-impl-trait-bad.rs b/tests/ui/return/return-impl-trait-bad.rs similarity index 100% rename from src/test/ui/return/return-impl-trait-bad.rs rename to tests/ui/return/return-impl-trait-bad.rs diff --git a/src/test/ui/return/return-impl-trait-bad.stderr b/tests/ui/return/return-impl-trait-bad.stderr similarity index 100% rename from src/test/ui/return/return-impl-trait-bad.stderr rename to tests/ui/return/return-impl-trait-bad.stderr diff --git a/src/test/ui/return/return-impl-trait.fixed b/tests/ui/return/return-impl-trait.fixed similarity index 100% rename from src/test/ui/return/return-impl-trait.fixed rename to tests/ui/return/return-impl-trait.fixed diff --git a/src/test/ui/return/return-impl-trait.rs b/tests/ui/return/return-impl-trait.rs similarity index 100% rename from src/test/ui/return/return-impl-trait.rs rename to tests/ui/return/return-impl-trait.rs diff --git a/src/test/ui/return/return-impl-trait.stderr b/tests/ui/return/return-impl-trait.stderr similarity index 100% rename from src/test/ui/return/return-impl-trait.stderr rename to tests/ui/return/return-impl-trait.stderr diff --git a/src/test/ui/return/return-match-array-const.rs b/tests/ui/return/return-match-array-const.rs similarity index 100% rename from src/test/ui/return/return-match-array-const.rs rename to tests/ui/return/return-match-array-const.rs diff --git a/src/test/ui/return/return-match-array-const.stderr b/tests/ui/return/return-match-array-const.stderr similarity index 100% rename from src/test/ui/return/return-match-array-const.stderr rename to tests/ui/return/return-match-array-const.stderr diff --git a/src/test/ui/return/return-type.rs b/tests/ui/return/return-type.rs similarity index 100% rename from src/test/ui/return/return-type.rs rename to tests/ui/return/return-type.rs diff --git a/src/test/ui/return/return-type.stderr b/tests/ui/return/return-type.stderr similarity index 100% rename from src/test/ui/return/return-type.stderr rename to tests/ui/return/return-type.stderr diff --git a/src/test/ui/return/return-unit-from-diverging.rs b/tests/ui/return/return-unit-from-diverging.rs similarity index 100% rename from src/test/ui/return/return-unit-from-diverging.rs rename to tests/ui/return/return-unit-from-diverging.rs diff --git a/src/test/ui/return/return-unit-from-diverging.stderr b/tests/ui/return/return-unit-from-diverging.stderr similarity index 100% rename from src/test/ui/return/return-unit-from-diverging.stderr rename to tests/ui/return/return-unit-from-diverging.stderr diff --git a/src/test/ui/return/tail-expr-as-potential-return.rs b/tests/ui/return/tail-expr-as-potential-return.rs similarity index 100% rename from src/test/ui/return/tail-expr-as-potential-return.rs rename to tests/ui/return/tail-expr-as-potential-return.rs diff --git a/src/test/ui/return/tail-expr-as-potential-return.stderr b/tests/ui/return/tail-expr-as-potential-return.stderr similarity index 100% rename from src/test/ui/return/tail-expr-as-potential-return.stderr rename to tests/ui/return/tail-expr-as-potential-return.stderr diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/bind-by-move-no-guards.rs b/tests/ui/rfc-0107-bind-by-move-pattern-guards/bind-by-move-no-guards.rs similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/bind-by-move-no-guards.rs rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/bind-by-move-no-guards.rs diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/former-E0008-now-pass.rs b/tests/ui/rfc-0107-bind-by-move-pattern-guards/former-E0008-now-pass.rs similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/former-E0008-now-pass.rs rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/former-E0008-now-pass.rs diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-basic-examples.rs b/tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-basic-examples.rs similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-basic-examples.rs rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-basic-examples.rs diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.rs b/tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.rs similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.rs rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.rs diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.stderr b/tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.stderr similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.stderr rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-across-arms.stderr diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs b/tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs diff --git a/src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.stderr b/tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.stderr similarity index 100% rename from src/test/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.stderr rename to tests/ui/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-embedded.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-embedded.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-embedded.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-embedded.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-param.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-param.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-param.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-direct-unsafe-ptr-param.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-embedded.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-embedded.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-embedded.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-embedded.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-param.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-param.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-param.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/allow-hide-behind-indirect-unsafe-ptr-param.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-use-behind-cousin-variant.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/allow-use-behind-cousin-variant.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/allow-use-behind-cousin-variant.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/allow-use-behind-cousin-variant.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-embedded.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-direct-struct-param.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-embedded.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-embedded.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-indirect-struct-param.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.no_gate.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.no_gate.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.no_gate.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.no_gate.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.with_gate.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.with_gate.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.with_gate.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/feature-gate.with_gate.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/fn-ptr-is-structurally-matchable.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/fn-ptr-is-structurally-matchable.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/fn-ptr-is-structurally-matchable.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/fn-ptr-is-structurally-matchable.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-61188-match-slice-forbidden-without-eq.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-62307-match-ref-ref-forbidden-without-eq.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-63479-match-fnptr.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/issue-6804.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-empty-array-allowed-without-eq-issue-62336.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-empty-array-allowed-without-eq-issue-62336.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-empty-array-allowed-without-eq-issue-62336.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-empty-array-allowed-without-eq-issue-62336.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-forbidden-without-eq.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-nonempty-array-forbidden-without-eq.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.rs diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.stderr b/tests/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.stderr similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.stderr rename to tests/ui/rfc-1445-restrict-constants-in-patterns/match-requires-both-partialeq-and-eq.stderr diff --git a/src/test/ui/rfc-1445-restrict-constants-in-patterns/phantom-data-is-structurally-matchable.rs b/tests/ui/rfc-1445-restrict-constants-in-patterns/phantom-data-is-structurally-matchable.rs similarity index 100% rename from src/test/ui/rfc-1445-restrict-constants-in-patterns/phantom-data-is-structurally-matchable.rs rename to tests/ui/rfc-1445-restrict-constants-in-patterns/phantom-data-is-structurally-matchable.rs diff --git a/src/test/ui/rfc-1717-dllimport/missing-link-attr.rs b/tests/ui/rfc-1717-dllimport/missing-link-attr.rs similarity index 100% rename from src/test/ui/rfc-1717-dllimport/missing-link-attr.rs rename to tests/ui/rfc-1717-dllimport/missing-link-attr.rs diff --git a/src/test/ui/rfc-1717-dllimport/missing-link-attr.stderr b/tests/ui/rfc-1717-dllimport/missing-link-attr.stderr similarity index 100% rename from src/test/ui/rfc-1717-dllimport/missing-link-attr.stderr rename to tests/ui/rfc-1717-dllimport/missing-link-attr.stderr diff --git a/src/test/ui/rfc-1717-dllimport/multiple-renames.rs b/tests/ui/rfc-1717-dllimport/multiple-renames.rs similarity index 100% rename from src/test/ui/rfc-1717-dllimport/multiple-renames.rs rename to tests/ui/rfc-1717-dllimport/multiple-renames.rs diff --git a/src/test/ui/rfc-1717-dllimport/multiple-renames.stderr b/tests/ui/rfc-1717-dllimport/multiple-renames.stderr similarity index 100% rename from src/test/ui/rfc-1717-dllimport/multiple-renames.stderr rename to tests/ui/rfc-1717-dllimport/multiple-renames.stderr diff --git a/src/test/ui/rfc-1717-dllimport/rename-modifiers.rs b/tests/ui/rfc-1717-dllimport/rename-modifiers.rs similarity index 100% rename from src/test/ui/rfc-1717-dllimport/rename-modifiers.rs rename to tests/ui/rfc-1717-dllimport/rename-modifiers.rs diff --git a/src/test/ui/rfc-1717-dllimport/rename-modifiers.stderr b/tests/ui/rfc-1717-dllimport/rename-modifiers.stderr similarity index 100% rename from src/test/ui/rfc-1717-dllimport/rename-modifiers.stderr rename to tests/ui/rfc-1717-dllimport/rename-modifiers.stderr diff --git a/src/test/ui/rfc-1717-dllimport/rename-to-empty.rs b/tests/ui/rfc-1717-dllimport/rename-to-empty.rs similarity index 100% rename from src/test/ui/rfc-1717-dllimport/rename-to-empty.rs rename to tests/ui/rfc-1717-dllimport/rename-to-empty.rs diff --git a/src/test/ui/rfc-1717-dllimport/rename-to-empty.stderr b/tests/ui/rfc-1717-dllimport/rename-to-empty.stderr similarity index 100% rename from src/test/ui/rfc-1717-dllimport/rename-to-empty.stderr rename to tests/ui/rfc-1717-dllimport/rename-to-empty.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/issue-103052-1.rs b/tests/ui/rfc-1937-termination-trait/issue-103052-1.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/issue-103052-1.rs rename to tests/ui/rfc-1937-termination-trait/issue-103052-1.rs diff --git a/src/test/ui/rfc-1937-termination-trait/issue-103052-1.stderr b/tests/ui/rfc-1937-termination-trait/issue-103052-1.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/issue-103052-1.stderr rename to tests/ui/rfc-1937-termination-trait/issue-103052-1.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/issue-103052-2.rs b/tests/ui/rfc-1937-termination-trait/issue-103052-2.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/issue-103052-2.rs rename to tests/ui/rfc-1937-termination-trait/issue-103052-2.rs diff --git a/src/test/ui/rfc-1937-termination-trait/issue-103052-2.stderr b/tests/ui/rfc-1937-termination-trait/issue-103052-2.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/issue-103052-2.stderr rename to tests/ui/rfc-1937-termination-trait/issue-103052-2.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-for-never.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-for-never.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-for-never.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-for-never.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-for-result-box-error_err.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-for-result-box-error_err.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-for-result-box-error_err.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-for-result-box-error_err.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-for-str.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-for-str.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-for-str.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-for-str.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-impl-trait.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-impl-trait.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-impl-trait.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-impl-trait.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-impl-trait.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-impl-trait.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-impl-trait.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-impl-trait.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-in-test-should-panic.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-in-test.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-in-test.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-in-test.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-in-test.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-main-i32.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-main-i32.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-main-i32.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-main-i32.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-main-i32.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-main-i32.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-main-i32.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-main-i32.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-main-wrong-type.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-not-satisfied.stderr diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.rs b/tests/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.rs similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.rs rename to tests/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.rs diff --git a/src/test/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.stderr b/tests/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.stderr similarity index 100% rename from src/test/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.stderr rename to tests/ui/rfc-1937-termination-trait/termination-trait-test-wrong-type.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.rs b/tests/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.rs rename to tests/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.stderr b/tests/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.stderr rename to tests/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/const.rs b/tests/ui/rfc-2005-default-binding-mode/const.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/const.rs rename to tests/ui/rfc-2005-default-binding-mode/const.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/const.stderr b/tests/ui/rfc-2005-default-binding-mode/const.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/const.stderr rename to tests/ui/rfc-2005-default-binding-mode/const.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/enum.rs b/tests/ui/rfc-2005-default-binding-mode/enum.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/enum.rs rename to tests/ui/rfc-2005-default-binding-mode/enum.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/enum.stderr b/tests/ui/rfc-2005-default-binding-mode/enum.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/enum.stderr rename to tests/ui/rfc-2005-default-binding-mode/enum.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.rs b/tests/ui/rfc-2005-default-binding-mode/explicit-mut.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/explicit-mut.rs rename to tests/ui/rfc-2005-default-binding-mode/explicit-mut.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr b/tests/ui/rfc-2005-default-binding-mode/explicit-mut.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr rename to tests/ui/rfc-2005-default-binding-mode/explicit-mut.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/for.rs b/tests/ui/rfc-2005-default-binding-mode/for.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/for.rs rename to tests/ui/rfc-2005-default-binding-mode/for.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/for.stderr b/tests/ui/rfc-2005-default-binding-mode/for.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/for.stderr rename to tests/ui/rfc-2005-default-binding-mode/for.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/issue-44912-or.rs b/tests/ui/rfc-2005-default-binding-mode/issue-44912-or.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/issue-44912-or.rs rename to tests/ui/rfc-2005-default-binding-mode/issue-44912-or.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/issue-44912-or.stderr b/tests/ui/rfc-2005-default-binding-mode/issue-44912-or.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/issue-44912-or.stderr rename to tests/ui/rfc-2005-default-binding-mode/issue-44912-or.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/lit.rs b/tests/ui/rfc-2005-default-binding-mode/lit.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/lit.rs rename to tests/ui/rfc-2005-default-binding-mode/lit.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/lit.stderr b/tests/ui/rfc-2005-default-binding-mode/lit.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/lit.stderr rename to tests/ui/rfc-2005-default-binding-mode/lit.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/no-double-error.rs b/tests/ui/rfc-2005-default-binding-mode/no-double-error.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/no-double-error.rs rename to tests/ui/rfc-2005-default-binding-mode/no-double-error.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr b/tests/ui/rfc-2005-default-binding-mode/no-double-error.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr rename to tests/ui/rfc-2005-default-binding-mode/no-double-error.stderr diff --git a/src/test/ui/rfc-2005-default-binding-mode/slice.rs b/tests/ui/rfc-2005-default-binding-mode/slice.rs similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/slice.rs rename to tests/ui/rfc-2005-default-binding-mode/slice.rs diff --git a/src/test/ui/rfc-2005-default-binding-mode/slice.stderr b/tests/ui/rfc-2005-default-binding-mode/slice.stderr similarity index 100% rename from src/test/ui/rfc-2005-default-binding-mode/slice.stderr rename to tests/ui/rfc-2005-default-binding-mode/slice.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/auxiliary/enums.rs b/tests/ui/rfc-2008-non-exhaustive/auxiliary/enums.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/auxiliary/enums.rs rename to tests/ui/rfc-2008-non-exhaustive/auxiliary/enums.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/auxiliary/monovariants.rs b/tests/ui/rfc-2008-non-exhaustive/auxiliary/monovariants.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/auxiliary/monovariants.rs rename to tests/ui/rfc-2008-non-exhaustive/auxiliary/monovariants.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/auxiliary/structs.rs b/tests/ui/rfc-2008-non-exhaustive/auxiliary/structs.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/auxiliary/structs.rs rename to tests/ui/rfc-2008-non-exhaustive/auxiliary/structs.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/auxiliary/unstable.rs b/tests/ui/rfc-2008-non-exhaustive/auxiliary/unstable.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/auxiliary/unstable.rs rename to tests/ui/rfc-2008-non-exhaustive/auxiliary/unstable.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/auxiliary/variants.rs b/tests/ui/rfc-2008-non-exhaustive/auxiliary/variants.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/auxiliary/variants.rs rename to tests/ui/rfc-2008-non-exhaustive/auxiliary/variants.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/borrowck-exhaustive.rs b/tests/ui/rfc-2008-non-exhaustive/borrowck-exhaustive.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/borrowck-exhaustive.rs rename to tests/ui/rfc-2008-non-exhaustive/borrowck-exhaustive.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.rs b/tests/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.rs rename to tests/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.stderr b/tests/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.stderr rename to tests/ui/rfc-2008-non-exhaustive/borrowck-non-exhaustive.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum-as-cast.rs b/tests/ui/rfc-2008-non-exhaustive/enum-as-cast.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum-as-cast.rs rename to tests/ui/rfc-2008-non-exhaustive/enum-as-cast.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum-as-cast.stderr b/tests/ui/rfc-2008-non-exhaustive/enum-as-cast.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum-as-cast.stderr rename to tests/ui/rfc-2008-non-exhaustive/enum-as-cast.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum.rs b/tests/ui/rfc-2008-non-exhaustive/enum.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum.rs rename to tests/ui/rfc-2008-non-exhaustive/enum.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum.stderr b/tests/ui/rfc-2008-non-exhaustive/enum.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum.stderr rename to tests/ui/rfc-2008-non-exhaustive/enum.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/enum_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/enum_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.rs b/tests/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.rs rename to tests/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.stderr b/tests/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.stderr rename to tests/ui/rfc-2008-non-exhaustive/enum_same_crate_empty_match.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/auxiliary/types.rs b/tests/ui/rfc-2008-non-exhaustive/improper_ctypes/auxiliary/types.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/auxiliary/types.rs rename to tests/ui/rfc-2008-non-exhaustive/improper_ctypes/auxiliary/types.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.rs b/tests/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.rs rename to tests/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.stderr b/tests/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.stderr rename to tests/ui/rfc-2008-non-exhaustive/improper_ctypes/extern_crate_improper.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/same_crate_proper.rs b/tests/ui/rfc-2008-non-exhaustive/improper_ctypes/same_crate_proper.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/improper_ctypes/same_crate_proper.rs rename to tests/ui/rfc-2008-non-exhaustive/improper_ctypes/same_crate_proper.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/invalid-attribute.rs b/tests/ui/rfc-2008-non-exhaustive/invalid-attribute.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/invalid-attribute.rs rename to tests/ui/rfc-2008-non-exhaustive/invalid-attribute.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/invalid-attribute.stderr b/tests/ui/rfc-2008-non-exhaustive/invalid-attribute.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/invalid-attribute.stderr rename to tests/ui/rfc-2008-non-exhaustive/invalid-attribute.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/omitted-patterns.rs b/tests/ui/rfc-2008-non-exhaustive/omitted-patterns.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/omitted-patterns.rs rename to tests/ui/rfc-2008-non-exhaustive/omitted-patterns.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/omitted-patterns.stderr b/tests/ui/rfc-2008-non-exhaustive/omitted-patterns.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/omitted-patterns.stderr rename to tests/ui/rfc-2008-non-exhaustive/omitted-patterns.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.rs b/tests/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.rs rename to tests/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.stderr b/tests/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.stderr rename to tests/ui/rfc-2008-non-exhaustive/stable-omitted-patterns.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/struct.rs b/tests/ui/rfc-2008-non-exhaustive/struct.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/struct.rs rename to tests/ui/rfc-2008-non-exhaustive/struct.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/struct.stderr b/tests/ui/rfc-2008-non-exhaustive/struct.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/struct.stderr rename to tests/ui/rfc-2008-non-exhaustive/struct.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/structs_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/structs_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/structs_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/structs_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/auxiliary/uninhabited.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/auxiliary/uninhabited.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/auxiliary/uninhabited.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/auxiliary/uninhabited.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/coercions_same_crate.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_same_crate.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/indirect_match_with_exhaustive_patterns_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/issue-65157-repeated-match-arm.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match_same_crate.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/match_with_exhaustive_patterns_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.stderr b/tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.stderr rename to tests/ui/rfc-2008-non-exhaustive/uninhabited/patterns_same_crate.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/variant.rs b/tests/ui/rfc-2008-non-exhaustive/variant.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/variant.rs rename to tests/ui/rfc-2008-non-exhaustive/variant.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/variant.stderr b/tests/ui/rfc-2008-non-exhaustive/variant.stderr similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/variant.stderr rename to tests/ui/rfc-2008-non-exhaustive/variant.stderr diff --git a/src/test/ui/rfc-2008-non-exhaustive/variants_fictive_visibility.rs b/tests/ui/rfc-2008-non-exhaustive/variants_fictive_visibility.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/variants_fictive_visibility.rs rename to tests/ui/rfc-2008-non-exhaustive/variants_fictive_visibility.rs diff --git a/src/test/ui/rfc-2008-non-exhaustive/variants_same_crate.rs b/tests/ui/rfc-2008-non-exhaustive/variants_same_crate.rs similarity index 100% rename from src/test/ui/rfc-2008-non-exhaustive/variants_same_crate.rs rename to tests/ui/rfc-2008-non-exhaustive/variants_same_crate.rs diff --git a/src/test/ui/rfc-2027-object-safe-for-dispatch/downcast-unsafe-trait-objects.rs b/tests/ui/rfc-2027-object-safe-for-dispatch/downcast-unsafe-trait-objects.rs similarity index 100% rename from src/test/ui/rfc-2027-object-safe-for-dispatch/downcast-unsafe-trait-objects.rs rename to tests/ui/rfc-2027-object-safe-for-dispatch/downcast-unsafe-trait-objects.rs diff --git a/src/test/ui/rfc-2027-object-safe-for-dispatch/manual-self-impl-for-unsafe-obj.rs b/tests/ui/rfc-2027-object-safe-for-dispatch/manual-self-impl-for-unsafe-obj.rs similarity index 100% rename from src/test/ui/rfc-2027-object-safe-for-dispatch/manual-self-impl-for-unsafe-obj.rs rename to tests/ui/rfc-2027-object-safe-for-dispatch/manual-self-impl-for-unsafe-obj.rs diff --git a/src/test/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs b/tests/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs similarity index 100% rename from src/test/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs rename to tests/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs diff --git a/src/test/ui/rfc-2091-track-caller/call-chain.rs b/tests/ui/rfc-2091-track-caller/call-chain.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/call-chain.rs rename to tests/ui/rfc-2091-track-caller/call-chain.rs diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs b/tests/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs rename to tests/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.stderr b/tests/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.stderr rename to tests/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.stderr diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs b/tests/ui/rfc-2091-track-caller/caller-location-intrinsic.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs rename to tests/ui/rfc-2091-track-caller/caller-location-intrinsic.rs diff --git a/src/test/ui/rfc-2091-track-caller/const-caller-location.rs b/tests/ui/rfc-2091-track-caller/const-caller-location.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/const-caller-location.rs rename to tests/ui/rfc-2091-track-caller/const-caller-location.rs diff --git a/src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs b/tests/ui/rfc-2091-track-caller/diverging-caller-location.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs rename to tests/ui/rfc-2091-track-caller/diverging-caller-location.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-odd-syntax.rs b/tests/ui/rfc-2091-track-caller/error-odd-syntax.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-odd-syntax.rs rename to tests/ui/rfc-2091-track-caller/error-odd-syntax.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-odd-syntax.stderr b/tests/ui/rfc-2091-track-caller/error-odd-syntax.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-odd-syntax.stderr rename to tests/ui/rfc-2091-track-caller/error-odd-syntax.stderr diff --git a/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.rs b/tests/ui/rfc-2091-track-caller/error-with-invalid-abi.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.rs rename to tests/ui/rfc-2091-track-caller/error-with-invalid-abi.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr b/tests/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr rename to tests/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr diff --git a/src/test/ui/rfc-2091-track-caller/error-with-main.rs b/tests/ui/rfc-2091-track-caller/error-with-main.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-main.rs rename to tests/ui/rfc-2091-track-caller/error-with-main.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-with-main.stderr b/tests/ui/rfc-2091-track-caller/error-with-main.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-main.stderr rename to tests/ui/rfc-2091-track-caller/error-with-main.stderr diff --git a/src/test/ui/rfc-2091-track-caller/error-with-naked.rs b/tests/ui/rfc-2091-track-caller/error-with-naked.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-naked.rs rename to tests/ui/rfc-2091-track-caller/error-with-naked.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-with-naked.stderr b/tests/ui/rfc-2091-track-caller/error-with-naked.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-naked.stderr rename to tests/ui/rfc-2091-track-caller/error-with-naked.stderr diff --git a/src/test/ui/rfc-2091-track-caller/error-with-start.rs b/tests/ui/rfc-2091-track-caller/error-with-start.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-start.rs rename to tests/ui/rfc-2091-track-caller/error-with-start.rs diff --git a/src/test/ui/rfc-2091-track-caller/error-with-start.stderr b/tests/ui/rfc-2091-track-caller/error-with-start.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/error-with-start.stderr rename to tests/ui/rfc-2091-track-caller/error-with-start.stderr diff --git a/src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs b/tests/ui/rfc-2091-track-caller/intrinsic-wrapper.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs rename to tests/ui/rfc-2091-track-caller/intrinsic-wrapper.rs diff --git a/src/test/ui/rfc-2091-track-caller/macro-declaration.rs b/tests/ui/rfc-2091-track-caller/macro-declaration.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/macro-declaration.rs rename to tests/ui/rfc-2091-track-caller/macro-declaration.rs diff --git a/src/test/ui/rfc-2091-track-caller/only-for-fns.rs b/tests/ui/rfc-2091-track-caller/only-for-fns.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/only-for-fns.rs rename to tests/ui/rfc-2091-track-caller/only-for-fns.rs diff --git a/src/test/ui/rfc-2091-track-caller/only-for-fns.stderr b/tests/ui/rfc-2091-track-caller/only-for-fns.stderr similarity index 100% rename from src/test/ui/rfc-2091-track-caller/only-for-fns.stderr rename to tests/ui/rfc-2091-track-caller/only-for-fns.stderr diff --git a/src/test/ui/rfc-2091-track-caller/pass.rs b/tests/ui/rfc-2091-track-caller/pass.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/pass.rs rename to tests/ui/rfc-2091-track-caller/pass.rs diff --git a/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs b/tests/ui/rfc-2091-track-caller/std-panic-locations.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/std-panic-locations.rs rename to tests/ui/rfc-2091-track-caller/std-panic-locations.rs diff --git a/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs b/tests/ui/rfc-2091-track-caller/track-caller-attribute.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs rename to tests/ui/rfc-2091-track-caller/track-caller-attribute.rs diff --git a/src/test/ui/rfc-2091-track-caller/track-caller-ffi.rs b/tests/ui/rfc-2091-track-caller/track-caller-ffi.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/track-caller-ffi.rs rename to tests/ui/rfc-2091-track-caller/track-caller-ffi.rs diff --git a/src/test/ui/rfc-2091-track-caller/tracked-closure.rs b/tests/ui/rfc-2091-track-caller/tracked-closure.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/tracked-closure.rs rename to tests/ui/rfc-2091-track-caller/tracked-closure.rs diff --git a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs b/tests/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs rename to tests/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs diff --git a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs b/tests/ui/rfc-2091-track-caller/tracked-fn-ptr.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs rename to tests/ui/rfc-2091-track-caller/tracked-fn-ptr.rs diff --git a/src/test/ui/rfc-2091-track-caller/tracked-trait-impls.rs b/tests/ui/rfc-2091-track-caller/tracked-trait-impls.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/tracked-trait-impls.rs rename to tests/ui/rfc-2091-track-caller/tracked-trait-impls.rs diff --git a/src/test/ui/rfc-2091-track-caller/tracked-trait-obj.rs b/tests/ui/rfc-2091-track-caller/tracked-trait-obj.rs similarity index 100% rename from src/test/ui/rfc-2091-track-caller/tracked-trait-obj.rs rename to tests/ui/rfc-2091-track-caller/tracked-trait-obj.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/cross-crate.rs b/tests/ui/rfc-2093-infer-outlives/cross-crate.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/cross-crate.rs rename to tests/ui/rfc-2093-infer-outlives/cross-crate.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/cross-crate.stderr b/tests/ui/rfc-2093-infer-outlives/cross-crate.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/cross-crate.stderr rename to tests/ui/rfc-2093-infer-outlives/cross-crate.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/dont-infer-static.rs b/tests/ui/rfc-2093-infer-outlives/dont-infer-static.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/dont-infer-static.rs rename to tests/ui/rfc-2093-infer-outlives/dont-infer-static.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/dont-infer-static.stderr b/tests/ui/rfc-2093-infer-outlives/dont-infer-static.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/dont-infer-static.stderr rename to tests/ui/rfc-2093-infer-outlives/dont-infer-static.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/enum.rs b/tests/ui/rfc-2093-infer-outlives/enum.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/enum.rs rename to tests/ui/rfc-2093-infer-outlives/enum.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/enum.stderr b/tests/ui/rfc-2093-infer-outlives/enum.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/enum.stderr rename to tests/ui/rfc-2093-infer-outlives/enum.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-dyn.rs b/tests/ui/rfc-2093-infer-outlives/explicit-dyn.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-dyn.rs rename to tests/ui/rfc-2093-infer-outlives/explicit-dyn.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-dyn.stderr b/tests/ui/rfc-2093-infer-outlives/explicit-dyn.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-dyn.stderr rename to tests/ui/rfc-2093-infer-outlives/explicit-dyn.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-enum.rs b/tests/ui/rfc-2093-infer-outlives/explicit-enum.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-enum.rs rename to tests/ui/rfc-2093-infer-outlives/explicit-enum.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-enum.stderr b/tests/ui/rfc-2093-infer-outlives/explicit-enum.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-enum.stderr rename to tests/ui/rfc-2093-infer-outlives/explicit-enum.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-projection.rs b/tests/ui/rfc-2093-infer-outlives/explicit-projection.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-projection.rs rename to tests/ui/rfc-2093-infer-outlives/explicit-projection.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-projection.stderr b/tests/ui/rfc-2093-infer-outlives/explicit-projection.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-projection.stderr rename to tests/ui/rfc-2093-infer-outlives/explicit-projection.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-struct.rs b/tests/ui/rfc-2093-infer-outlives/explicit-struct.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-struct.rs rename to tests/ui/rfc-2093-infer-outlives/explicit-struct.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-struct.stderr b/tests/ui/rfc-2093-infer-outlives/explicit-struct.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-struct.stderr rename to tests/ui/rfc-2093-infer-outlives/explicit-struct.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-union.rs b/tests/ui/rfc-2093-infer-outlives/explicit-union.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-union.rs rename to tests/ui/rfc-2093-infer-outlives/explicit-union.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/explicit-union.stderr b/tests/ui/rfc-2093-infer-outlives/explicit-union.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/explicit-union.stderr rename to tests/ui/rfc-2093-infer-outlives/explicit-union.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/issue-54467.rs b/tests/ui/rfc-2093-infer-outlives/issue-54467.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/issue-54467.rs rename to tests/ui/rfc-2093-infer-outlives/issue-54467.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-enum.rs b/tests/ui/rfc-2093-infer-outlives/nested-enum.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-enum.rs rename to tests/ui/rfc-2093-infer-outlives/nested-enum.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-enum.stderr b/tests/ui/rfc-2093-infer-outlives/nested-enum.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-enum.stderr rename to tests/ui/rfc-2093-infer-outlives/nested-enum.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-regions.rs b/tests/ui/rfc-2093-infer-outlives/nested-regions.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-regions.rs rename to tests/ui/rfc-2093-infer-outlives/nested-regions.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-regions.stderr b/tests/ui/rfc-2093-infer-outlives/nested-regions.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-regions.stderr rename to tests/ui/rfc-2093-infer-outlives/nested-regions.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-structs.rs b/tests/ui/rfc-2093-infer-outlives/nested-structs.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-structs.rs rename to tests/ui/rfc-2093-infer-outlives/nested-structs.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-structs.stderr b/tests/ui/rfc-2093-infer-outlives/nested-structs.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-structs.stderr rename to tests/ui/rfc-2093-infer-outlives/nested-structs.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-union.rs b/tests/ui/rfc-2093-infer-outlives/nested-union.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-union.rs rename to tests/ui/rfc-2093-infer-outlives/nested-union.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/nested-union.stderr b/tests/ui/rfc-2093-infer-outlives/nested-union.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/nested-union.stderr rename to tests/ui/rfc-2093-infer-outlives/nested-union.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/privacy.rs b/tests/ui/rfc-2093-infer-outlives/privacy.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/privacy.rs rename to tests/ui/rfc-2093-infer-outlives/privacy.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/projection.rs b/tests/ui/rfc-2093-infer-outlives/projection.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/projection.rs rename to tests/ui/rfc-2093-infer-outlives/projection.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/projection.stderr b/tests/ui/rfc-2093-infer-outlives/projection.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/projection.stderr rename to tests/ui/rfc-2093-infer-outlives/projection.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/reference.rs b/tests/ui/rfc-2093-infer-outlives/reference.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/reference.rs rename to tests/ui/rfc-2093-infer-outlives/reference.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/reference.stderr b/tests/ui/rfc-2093-infer-outlives/reference.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/reference.stderr rename to tests/ui/rfc-2093-infer-outlives/reference.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs b/tests/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs rename to tests/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr b/tests/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.rs b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.rs rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.stderr b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region-rev.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.rs b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.rs rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.stderr b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-region.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.rs b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.rs rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.stderr b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type-rev.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.rs b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.rs rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.stderr b/tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-outlives-nominal-type-type.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-struct-not-wf.rs b/tests/ui/rfc-2093-infer-outlives/regions-struct-not-wf.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-struct-not-wf.rs rename to tests/ui/rfc-2093-infer-outlives/regions-struct-not-wf.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-struct-not-wf.stderr b/tests/ui/rfc-2093-infer-outlives/regions-struct-not-wf.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/regions-struct-not-wf.stderr rename to tests/ui/rfc-2093-infer-outlives/regions-struct-not-wf.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/self-dyn.rs b/tests/ui/rfc-2093-infer-outlives/self-dyn.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/self-dyn.rs rename to tests/ui/rfc-2093-infer-outlives/self-dyn.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/self-dyn.stderr b/tests/ui/rfc-2093-infer-outlives/self-dyn.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/self-dyn.stderr rename to tests/ui/rfc-2093-infer-outlives/self-dyn.stderr diff --git a/src/test/ui/rfc-2093-infer-outlives/self-structs.rs b/tests/ui/rfc-2093-infer-outlives/self-structs.rs similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/self-structs.rs rename to tests/ui/rfc-2093-infer-outlives/self-structs.rs diff --git a/src/test/ui/rfc-2093-infer-outlives/self-structs.stderr b/tests/ui/rfc-2093-infer-outlives/self-structs.stderr similarity index 100% rename from src/test/ui/rfc-2093-infer-outlives/self-structs.stderr rename to tests/ui/rfc-2093-infer-outlives/self-structs.stderr diff --git a/src/test/ui/rfc-2126-crate-paths/crate-path-non-absolute.rs b/tests/ui/rfc-2126-crate-paths/crate-path-non-absolute.rs similarity index 100% rename from src/test/ui/rfc-2126-crate-paths/crate-path-non-absolute.rs rename to tests/ui/rfc-2126-crate-paths/crate-path-non-absolute.rs diff --git a/src/test/ui/rfc-2126-crate-paths/crate-path-non-absolute.stderr b/tests/ui/rfc-2126-crate-paths/crate-path-non-absolute.stderr similarity index 100% rename from src/test/ui/rfc-2126-crate-paths/crate-path-non-absolute.stderr rename to tests/ui/rfc-2126-crate-paths/crate-path-non-absolute.stderr diff --git a/src/test/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.rs b/tests/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.rs similarity index 100% rename from src/test/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.rs rename to tests/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.rs diff --git a/src/test/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.stderr b/tests/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.stderr similarity index 100% rename from src/test/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.stderr rename to tests/ui/rfc-2126-crate-paths/keyword-crate-as-identifier.stderr diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/auxiliary/xcrate.rs b/tests/ui/rfc-2126-extern-absolute-paths/auxiliary/xcrate.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/auxiliary/xcrate.rs rename to tests/ui/rfc-2126-extern-absolute-paths/auxiliary/xcrate.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-1.rs b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-1.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-1.rs rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-1.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-1.stderr b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-1.stderr similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-1.stderr rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-1.stderr diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-2.rs b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-2.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-2.rs rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-2.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-2.stderr b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-2.stderr similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-2.stderr rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-2.stderr diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-3.rs b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-3.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-3.rs rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-3.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/non-existent-3.stderr b/tests/ui/rfc-2126-extern-absolute-paths/non-existent-3.stderr similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/non-existent-3.stderr rename to tests/ui/rfc-2126-extern-absolute-paths/non-existent-3.stderr diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/not-allowed.rs b/tests/ui/rfc-2126-extern-absolute-paths/not-allowed.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/not-allowed.rs rename to tests/ui/rfc-2126-extern-absolute-paths/not-allowed.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/not-allowed.stderr b/tests/ui/rfc-2126-extern-absolute-paths/not-allowed.stderr similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/not-allowed.stderr rename to tests/ui/rfc-2126-extern-absolute-paths/not-allowed.stderr diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/single-segment.rs b/tests/ui/rfc-2126-extern-absolute-paths/single-segment.rs similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/single-segment.rs rename to tests/ui/rfc-2126-extern-absolute-paths/single-segment.rs diff --git a/src/test/ui/rfc-2126-extern-absolute-paths/single-segment.stderr b/tests/ui/rfc-2126-extern-absolute-paths/single-segment.stderr similarity index 100% rename from src/test/ui/rfc-2126-extern-absolute-paths/single-segment.stderr rename to tests/ui/rfc-2126-extern-absolute-paths/single-segment.stderr diff --git a/src/test/ui/rfc-2294-if-let-guard/bindings.rs b/tests/ui/rfc-2294-if-let-guard/bindings.rs similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/bindings.rs rename to tests/ui/rfc-2294-if-let-guard/bindings.rs diff --git a/src/test/ui/rfc-2294-if-let-guard/bindings.stderr b/tests/ui/rfc-2294-if-let-guard/bindings.stderr similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/bindings.stderr rename to tests/ui/rfc-2294-if-let-guard/bindings.stderr diff --git a/src/test/ui/rfc-2294-if-let-guard/feature-gate.rs b/tests/ui/rfc-2294-if-let-guard/feature-gate.rs similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/feature-gate.rs rename to tests/ui/rfc-2294-if-let-guard/feature-gate.rs diff --git a/src/test/ui/rfc-2294-if-let-guard/feature-gate.stderr b/tests/ui/rfc-2294-if-let-guard/feature-gate.stderr similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/feature-gate.stderr rename to tests/ui/rfc-2294-if-let-guard/feature-gate.stderr diff --git a/src/test/ui/rfc-2294-if-let-guard/run-pass.rs b/tests/ui/rfc-2294-if-let-guard/run-pass.rs similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/run-pass.rs rename to tests/ui/rfc-2294-if-let-guard/run-pass.rs diff --git a/src/test/ui/rfc-2294-if-let-guard/typeck.rs b/tests/ui/rfc-2294-if-let-guard/typeck.rs similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/typeck.rs rename to tests/ui/rfc-2294-if-let-guard/typeck.rs diff --git a/src/test/ui/rfc-2294-if-let-guard/typeck.stderr b/tests/ui/rfc-2294-if-let-guard/typeck.stderr similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/typeck.stderr rename to tests/ui/rfc-2294-if-let-guard/typeck.stderr diff --git a/src/test/ui/rfc-2294-if-let-guard/warns.rs b/tests/ui/rfc-2294-if-let-guard/warns.rs similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/warns.rs rename to tests/ui/rfc-2294-if-let-guard/warns.rs diff --git a/src/test/ui/rfc-2294-if-let-guard/warns.stderr b/tests/ui/rfc-2294-if-let-guard/warns.stderr similarity index 100% rename from src/test/ui/rfc-2294-if-let-guard/warns.stderr rename to tests/ui/rfc-2294-if-let-guard/warns.stderr diff --git a/src/test/ui/rfc-2306/convert-id-const-with-gate.rs b/tests/ui/rfc-2306/convert-id-const-with-gate.rs similarity index 100% rename from src/test/ui/rfc-2306/convert-id-const-with-gate.rs rename to tests/ui/rfc-2306/convert-id-const-with-gate.rs diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs b/tests/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.run.stderr b/tests/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.run.stderr similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.run.stderr rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.run.stderr diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs b/tests/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr b/tests/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.rs b/tests/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.rs similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.rs rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.rs diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.stderr b/tests/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.stderr similarity index 100% rename from src/test/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.stderr rename to tests/ui/rfc-2361-dbg-macro/dbg-macro-requires-debug.stderr diff --git a/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs similarity index 100% rename from src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs rename to tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs diff --git a/src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr similarity index 100% rename from src/test/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr rename to tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr diff --git a/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs similarity index 100% rename from src/test/ui/rfc-2397-do-not-recommend/unstable-feature.rs rename to tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs diff --git a/src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr similarity index 100% rename from src/test/ui/rfc-2397-do-not-recommend/unstable-feature.stderr rename to tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr diff --git a/src/test/ui/rfc-2457/auxiliary/mod_file_nonascii_with_path_allowed-aux.rs b/tests/ui/rfc-2457/auxiliary/mod_file_nonascii_with_path_allowed-aux.rs similarity index 100% rename from src/test/ui/rfc-2457/auxiliary/mod_file_nonascii_with_path_allowed-aux.rs rename to tests/ui/rfc-2457/auxiliary/mod_file_nonascii_with_path_allowed-aux.rs diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs b/tests/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs similarity index 100% rename from src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs rename to tests/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr b/tests/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr similarity index 100% rename from src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr rename to tests/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs b/tests/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs similarity index 100% rename from src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs rename to tests/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr b/tests/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr similarity index 100% rename from src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr rename to tests/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr diff --git a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs b/tests/ui/rfc-2457/extern_block_nonascii_forbidden.rs similarity index 100% rename from src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs rename to tests/ui/rfc-2457/extern_block_nonascii_forbidden.rs diff --git a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr b/tests/ui/rfc-2457/extern_block_nonascii_forbidden.stderr similarity index 100% rename from src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr rename to tests/ui/rfc-2457/extern_block_nonascii_forbidden.stderr diff --git a/src/test/ui/rfc-2457/idents-normalized.rs b/tests/ui/rfc-2457/idents-normalized.rs similarity index 100% rename from src/test/ui/rfc-2457/idents-normalized.rs rename to tests/ui/rfc-2457/idents-normalized.rs diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs b/tests/ui/rfc-2457/mod_file_nonascii_forbidden.rs similarity index 100% rename from src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs rename to tests/ui/rfc-2457/mod_file_nonascii_forbidden.rs diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr b/tests/ui/rfc-2457/mod_file_nonascii_forbidden.stderr similarity index 100% rename from src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr rename to tests/ui/rfc-2457/mod_file_nonascii_forbidden.stderr diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs b/tests/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs similarity index 100% rename from src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs rename to tests/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs diff --git a/src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs b/tests/ui/rfc-2457/mod_inline_nonascii_allowed.rs similarity index 100% rename from src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs rename to tests/ui/rfc-2457/mod_inline_nonascii_allowed.rs diff --git a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs b/tests/ui/rfc-2457/no_mangle_nonascii_forbidden.rs similarity index 100% rename from src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs rename to tests/ui/rfc-2457/no_mangle_nonascii_forbidden.rs diff --git a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr b/tests/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr similarity index 100% rename from src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr rename to tests/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs b/tests/ui/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs rename to tests/ui/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/ast-pretty-check.rs b/tests/ui/rfc-2497-if-let-chains/ast-pretty-check.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/ast-pretty-check.rs rename to tests/ui/rfc-2497-if-let-chains/ast-pretty-check.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/ast-pretty-check.stdout b/tests/ui/rfc-2497-if-let-chains/ast-pretty-check.stdout similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/ast-pretty-check.stdout rename to tests/ui/rfc-2497-if-let-chains/ast-pretty-check.stdout diff --git a/src/test/ui/rfc-2497-if-let-chains/chains-without-let.rs b/tests/ui/rfc-2497-if-let-chains/chains-without-let.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/chains-without-let.rs rename to tests/ui/rfc-2497-if-let-chains/chains-without-let.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/chains-without-let.stderr b/tests/ui/rfc-2497-if-let-chains/chains-without-let.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/chains-without-let.stderr rename to tests/ui/rfc-2497-if-let-chains/chains-without-let.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs b/tests/ui/rfc-2497-if-let-chains/disallowed-positions.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs rename to tests/ui/rfc-2497-if-let-chains/disallowed-positions.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr b/tests/ui/rfc-2497-if-let-chains/disallowed-positions.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr rename to tests/ui/rfc-2497-if-let-chains/disallowed-positions.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs b/tests/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs rename to tests/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.stderr b/tests/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.stderr rename to tests/ui/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/feature-gate.rs b/tests/ui/rfc-2497-if-let-chains/feature-gate.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/feature-gate.rs rename to tests/ui/rfc-2497-if-let-chains/feature-gate.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr b/tests/ui/rfc-2497-if-let-chains/feature-gate.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr rename to tests/ui/rfc-2497-if-let-chains/feature-gate.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs b/tests/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs rename to tests/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.stderr b/tests/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.stderr rename to tests/ui/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr b/tests/ui/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr rename to tests/ui/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs b/tests/ui/rfc-2497-if-let-chains/irrefutable-lets.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs rename to tests/ui/rfc-2497-if-let-chains/irrefutable-lets.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-88498.rs b/tests/ui/rfc-2497-if-let-chains/issue-88498.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-88498.rs rename to tests/ui/rfc-2497-if-let-chains/issue-88498.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-90722.rs b/tests/ui/rfc-2497-if-let-chains/issue-90722.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-90722.rs rename to tests/ui/rfc-2497-if-let-chains/issue-90722.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-92145.rs b/tests/ui/rfc-2497-if-let-chains/issue-92145.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-92145.rs rename to tests/ui/rfc-2497-if-let-chains/issue-92145.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-93150.rs b/tests/ui/rfc-2497-if-let-chains/issue-93150.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-93150.rs rename to tests/ui/rfc-2497-if-let-chains/issue-93150.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-93150.stderr b/tests/ui/rfc-2497-if-let-chains/issue-93150.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-93150.stderr rename to tests/ui/rfc-2497-if-let-chains/issue-93150.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-99938.rs b/tests/ui/rfc-2497-if-let-chains/issue-99938.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/issue-99938.rs rename to tests/ui/rfc-2497-if-let-chains/issue-99938.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/no-double-assigments.rs b/tests/ui/rfc-2497-if-let-chains/no-double-assigments.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/no-double-assigments.rs rename to tests/ui/rfc-2497-if-let-chains/no-double-assigments.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/protect-precedences.rs b/tests/ui/rfc-2497-if-let-chains/protect-precedences.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/protect-precedences.rs rename to tests/ui/rfc-2497-if-let-chains/protect-precedences.rs diff --git a/src/test/ui/rfc-2497-if-let-chains/protect-precedences.stderr b/tests/ui/rfc-2497-if-let-chains/protect-precedences.stderr similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/protect-precedences.stderr rename to tests/ui/rfc-2497-if-let-chains/protect-precedences.stderr diff --git a/src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs b/tests/ui/rfc-2497-if-let-chains/then-else-blocks.rs similarity index 100% rename from src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs rename to tests/ui/rfc-2497-if-let-chains/then-else-blocks.rs diff --git a/src/test/ui/rfc-2565-param-attrs/attr-without-param.rs b/tests/ui/rfc-2565-param-attrs/attr-without-param.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/attr-without-param.rs rename to tests/ui/rfc-2565-param-attrs/attr-without-param.rs diff --git a/src/test/ui/rfc-2565-param-attrs/attr-without-param.stderr b/tests/ui/rfc-2565-param-attrs/attr-without-param.stderr similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/attr-without-param.stderr rename to tests/ui/rfc-2565-param-attrs/attr-without-param.stderr diff --git a/src/test/ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs b/tests/ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs rename to tests/ui/rfc-2565-param-attrs/auxiliary/ident-mac.rs diff --git a/src/test/ui/rfc-2565-param-attrs/auxiliary/param-attrs.rs b/tests/ui/rfc-2565-param-attrs/auxiliary/param-attrs.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/auxiliary/param-attrs.rs rename to tests/ui/rfc-2565-param-attrs/auxiliary/param-attrs.rs diff --git a/src/test/ui/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs b/tests/ui/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs rename to tests/ui/rfc-2565-param-attrs/issue-64682-dropping-first-attrs-in-impl-fns.rs diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-2018.rs b/tests/ui/rfc-2565-param-attrs/param-attrs-2018.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-2018.rs rename to tests/ui/rfc-2565-param-attrs/param-attrs-2018.rs diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-2018.stderr b/tests/ui/rfc-2565-param-attrs/param-attrs-2018.stderr similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-2018.stderr rename to tests/ui/rfc-2565-param-attrs/param-attrs-2018.stderr diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-allowed.rs b/tests/ui/rfc-2565-param-attrs/param-attrs-allowed.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-allowed.rs rename to tests/ui/rfc-2565-param-attrs/param-attrs-allowed.rs diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs b/tests/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs rename to tests/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.stderr b/tests/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.stderr similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.stderr rename to tests/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.stderr diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.rs b/tests/ui/rfc-2565-param-attrs/param-attrs-cfg.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.rs rename to tests/ui/rfc-2565-param-attrs/param-attrs-cfg.rs diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.stderr b/tests/ui/rfc-2565-param-attrs/param-attrs-cfg.stderr similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.stderr rename to tests/ui/rfc-2565-param-attrs/param-attrs-cfg.stderr diff --git a/src/test/ui/rfc-2565-param-attrs/param-attrs-pretty.rs b/tests/ui/rfc-2565-param-attrs/param-attrs-pretty.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/param-attrs-pretty.rs rename to tests/ui/rfc-2565-param-attrs/param-attrs-pretty.rs diff --git a/src/test/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.rs b/tests/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.rs similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.rs rename to tests/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.rs diff --git a/src/test/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.stderr b/tests/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.stderr similarity index 100% rename from src/test/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.stderr rename to tests/ui/rfc-2565-param-attrs/proc-macro-cannot-be-used.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs b/tests/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs rename to tests/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr b/tests/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr rename to tests/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs b/tests/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs rename to tests/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr b/tests/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr rename to tests/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs b/tests/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs rename to tests/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr b/tests/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr rename to tests/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs b/tests/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs rename to tests/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr b/tests/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr rename to tests/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-x86-only.rs b/tests/ui/rfc-2627-raw-dylib/import-name-type-x86-only.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-x86-only.rs rename to tests/ui/rfc-2627-raw-dylib/import-name-type-x86-only.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/import-name-type-x86-only.stderr b/tests/ui/rfc-2627-raw-dylib/import-name-type-x86-only.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/import-name-type-x86-only.stderr rename to tests/ui/rfc-2627-raw-dylib/import-name-type-x86-only.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-not-foreign-fn.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-too-large.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-large.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-too-large.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-large.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-too-large.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-too-many-arguments.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.rs b/tests/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.rs rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.stderr b/tests/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.stderr rename to tests/ui/rfc-2627-raw-dylib/link-ordinal-unsupported-link-kind.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/multiple-declarations.rs b/tests/ui/rfc-2627-raw-dylib/multiple-declarations.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/multiple-declarations.rs rename to tests/ui/rfc-2627-raw-dylib/multiple-declarations.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/multiple-declarations.stderr b/tests/ui/rfc-2627-raw-dylib/multiple-declarations.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/multiple-declarations.stderr rename to tests/ui/rfc-2627-raw-dylib/multiple-declarations.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs b/tests/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs rename to tests/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.stderr b/tests/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.stderr rename to tests/ui/rfc-2627-raw-dylib/raw-dylib-windows-only.stderr diff --git a/src/test/ui/rfc-2627-raw-dylib/unsupported-abi.rs b/tests/ui/rfc-2627-raw-dylib/unsupported-abi.rs similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/unsupported-abi.rs rename to tests/ui/rfc-2627-raw-dylib/unsupported-abi.rs diff --git a/src/test/ui/rfc-2627-raw-dylib/unsupported-abi.stderr b/tests/ui/rfc-2627-raw-dylib/unsupported-abi.stderr similarity index 100% rename from src/test/ui/rfc-2627-raw-dylib/unsupported-abi.stderr rename to tests/ui/rfc-2627-raw-dylib/unsupported-abi.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs b/tests/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs rename to tests/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/assoc-type.rs b/tests/ui/rfc-2632-const-trait-impl/assoc-type.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/assoc-type.rs rename to tests/ui/rfc-2632-const-trait-impl/assoc-type.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/assoc-type.stderr b/tests/ui/rfc-2632-const-trait-impl/assoc-type.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/assoc-type.stderr rename to tests/ui/rfc-2632-const-trait-impl/assoc-type.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/attr-misuse.rs b/tests/ui/rfc-2632-const-trait-impl/attr-misuse.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/attr-misuse.rs rename to tests/ui/rfc-2632-const-trait-impl/attr-misuse.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/attr-misuse.stderr b/tests/ui/rfc-2632-const-trait-impl/attr-misuse.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/attr-misuse.stderr rename to tests/ui/rfc-2632-const-trait-impl/attr-misuse.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs b/tests/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs rename to tests/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs rename to tests/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr rename to tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs rename to tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs rename to tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs b/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs rename to tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs b/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs rename to tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs rename to tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-closures.rs b/tests/ui/rfc-2632-const-trait-impl/const-closures.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-closures.rs rename to tests/ui/rfc-2632-const-trait-impl/const-closures.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs b/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs rename to tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr b/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop-bound.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-drop-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/const-drop-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/const-drop-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-drop.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-drop.rs rename to tests/ui/rfc-2632-const-trait-impl/const-drop.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs rename to tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs rename to tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs rename to tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr rename to tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-impl-trait.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const-impl-trait.rs rename to tests/ui/rfc-2632-const-trait-impl/const-impl-trait.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs rename to tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr rename to tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs rename to tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr rename to tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs rename to tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs b/tests/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs rename to tests/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr rename to tests/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate.rs b/tests/ui/rfc-2632-const-trait-impl/cross-crate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/cross-crate.rs rename to tests/ui/rfc-2632-const-trait-impl/cross-crate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr rename to tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr rename to tests/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs rename to tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr rename to tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs rename to tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr rename to tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs rename to tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr b/tests/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr rename to tests/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/feature-gate.rs b/tests/ui/rfc-2632-const-trait-impl/feature-gate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/feature-gate.rs rename to tests/ui/rfc-2632-const-trait-impl/feature-gate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr rename to tests/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/generic-bound.rs b/tests/ui/rfc-2632-const-trait-impl/generic-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/generic-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/generic-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/hir-const-check.rs b/tests/ui/rfc-2632-const-trait-impl/hir-const-check.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/hir-const-check.rs rename to tests/ui/rfc-2632-const-trait-impl/hir-const-check.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/hir-const-check.stderr b/tests/ui/rfc-2632-const-trait-impl/hir-const-check.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/hir-const-check.stderr rename to tests/ui/rfc-2632-const-trait-impl/hir-const-check.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs b/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs rename to tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr b/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr rename to tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr rename to tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs rename to tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs b/tests/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs rename to tests/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/inherent-impl.rs b/tests/ui/rfc-2632-const-trait-impl/inherent-impl.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/inherent-impl.rs rename to tests/ui/rfc-2632-const-trait-impl/inherent-impl.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/inherent-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/inherent-impl.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/inherent-impl.stderr rename to tests/ui/rfc-2632-const-trait-impl/inherent-impl.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-100222.rs b/tests/ui/rfc-2632-const-trait-impl/issue-100222.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-100222.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-100222.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-102156.rs b/tests/ui/rfc-2632-const-trait-impl/issue-102156.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-102156.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-102156.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-102156.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-102156.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-102156.stderr rename to tests/ui/rfc-2632-const-trait-impl/issue-102156.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-102985.rs b/tests/ui/rfc-2632-const-trait-impl/issue-102985.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-102985.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-102985.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-102985.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-102985.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-102985.stderr rename to tests/ui/rfc-2632-const-trait-impl/issue-102985.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-103677.rs b/tests/ui/rfc-2632-const-trait-impl/issue-103677.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-103677.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-103677.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-79450.rs b/tests/ui/rfc-2632-const-trait-impl/issue-79450.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-79450.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-79450.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-79450.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-79450.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-79450.stderr rename to tests/ui/rfc-2632-const-trait-impl/issue-79450.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-88155.rs b/tests/ui/rfc-2632-const-trait-impl/issue-88155.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-88155.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-88155.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-88155.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-88155.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-88155.stderr rename to tests/ui/rfc-2632-const-trait-impl/issue-88155.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-90052.rs b/tests/ui/rfc-2632-const-trait-impl/issue-90052.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-90052.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-90052.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-90052.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-90052.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-90052.stderr rename to tests/ui/rfc-2632-const-trait-impl/issue-90052.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-92111.rs b/tests/ui/rfc-2632-const-trait-impl/issue-92111.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-92111.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-92111.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs b/tests/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs rename to tests/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/nested-closure.rs b/tests/ui/rfc-2632-const-trait-impl/nested-closure.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/nested-closure.rs rename to tests/ui/rfc-2632-const-trait-impl/nested-closure.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs b/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs rename to tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr rename to tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr rename to tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs rename to tests/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs rename to tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr rename to tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/specializing-constness.rs b/tests/ui/rfc-2632-const-trait-impl/specializing-constness.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specializing-constness.rs rename to tests/ui/rfc-2632-const-trait-impl/specializing-constness.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/specializing-constness.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/specializing-constness.stderr rename to tests/ui/rfc-2632-const-trait-impl/specializing-constness.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs rename to tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr rename to tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/staged-api.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/staged-api.rs rename to tests/ui/rfc-2632-const-trait-impl/staged-api.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr rename to tests/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr rename to tests/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs b/tests/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs rename to tests/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/std-impl-gate.rs b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/std-impl-gate.rs rename to tests/ui/rfc-2632-const-trait-impl/std-impl-gate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr rename to tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail.rs rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr rename to tests/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/super-traits.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/super-traits.rs rename to tests/ui/rfc-2632-const-trait-impl/super-traits.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/syntax.rs b/tests/ui/rfc-2632-const-trait-impl/syntax.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/syntax.rs rename to tests/ui/rfc-2632-const-trait-impl/syntax.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs rename to tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr rename to tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs rename to tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr rename to tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs rename to tests/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-twice.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-twice.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-twice.rs rename to tests/ui/rfc-2632-const-trait-impl/tilde-twice.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde-twice.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-twice.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde-twice.stderr rename to tests/ui/rfc-2632-const-trait-impl/tilde-twice.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs b/tests/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs rename to tests/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs b/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs rename to tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause.rs rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr rename to tests/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/without-tilde.rs b/tests/ui/rfc-2632-const-trait-impl/without-tilde.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/without-tilde.rs rename to tests/ui/rfc-2632-const-trait-impl/without-tilde.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/without-tilde.stderr b/tests/ui/rfc-2632-const-trait-impl/without-tilde.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/without-tilde.stderr rename to tests/ui/rfc-2632-const-trait-impl/without-tilde.stderr diff --git a/src/test/ui/rfcs/rfc-1014-2.rs b/tests/ui/rfcs/rfc-1014-2.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1014-2.rs rename to tests/ui/rfcs/rfc-1014-2.rs diff --git a/src/test/ui/rfcs/rfc-1014.rs b/tests/ui/rfcs/rfc-1014.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1014.rs rename to tests/ui/rfcs/rfc-1014.rs diff --git a/src/test/ui/rfcs/rfc-1789-as-cell/from-mut.rs b/tests/ui/rfcs/rfc-1789-as-cell/from-mut.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1789-as-cell/from-mut.rs rename to tests/ui/rfcs/rfc-1789-as-cell/from-mut.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-box-dyn-error.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-empty.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-empty.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-empty.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-empty.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-exitcode.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-exitcode.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-exitcode.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-exitcode.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result-box-error_ok.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result-box-error_ok.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result-box-error_ok.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result-box-error_ok.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-result.rs diff --git a/src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-str.rs b/tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-str.rs similarity index 100% rename from src/test/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-str.rs rename to tests/ui/rfcs/rfc-1937-termination-trait/termination-trait-for-str.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/box.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/box.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/box.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/box.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/constref.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/constref.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/constref.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/constref.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/enum.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/enum.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/enum.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/enum.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/for.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/for.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/for.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/for.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/general.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/general.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/general.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/general.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/lit.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/lit.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/lit.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/lit.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/range.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/range.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/range.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/range.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/ref-region.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/ref-region.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/ref-region.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/ref-region.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/reset-mode.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/reset-mode.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/reset-mode.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/reset-mode.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/slice.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/slice.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/slice.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/slice.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/struct.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/struct.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/struct.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/struct.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/tuple-struct.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/tuple-struct.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/tuple-struct.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/tuple-struct.rs diff --git a/src/test/ui/rfcs/rfc-2005-default-binding-mode/tuple.rs b/tests/ui/rfcs/rfc-2005-default-binding-mode/tuple.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2005-default-binding-mode/tuple.rs rename to tests/ui/rfcs/rfc-2005-default-binding-mode/tuple.rs diff --git a/src/test/ui/rfcs/rfc-2151-raw-identifiers/attr.rs b/tests/ui/rfcs/rfc-2151-raw-identifiers/attr.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2151-raw-identifiers/attr.rs rename to tests/ui/rfcs/rfc-2151-raw-identifiers/attr.rs diff --git a/src/test/ui/rfcs/rfc-2151-raw-identifiers/basic.rs b/tests/ui/rfcs/rfc-2151-raw-identifiers/basic.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2151-raw-identifiers/basic.rs rename to tests/ui/rfcs/rfc-2151-raw-identifiers/basic.rs diff --git a/src/test/ui/rfcs/rfc-2151-raw-identifiers/items.rs b/tests/ui/rfcs/rfc-2151-raw-identifiers/items.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2151-raw-identifiers/items.rs rename to tests/ui/rfcs/rfc-2151-raw-identifiers/items.rs diff --git a/src/test/ui/rfcs/rfc-2151-raw-identifiers/macros.rs b/tests/ui/rfcs/rfc-2151-raw-identifiers/macros.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2151-raw-identifiers/macros.rs rename to tests/ui/rfcs/rfc-2151-raw-identifiers/macros.rs diff --git a/src/test/ui/rfcs/rfc-2175-or-if-while-let/basic.rs b/tests/ui/rfcs/rfc-2175-or-if-while-let/basic.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2175-or-if-while-let/basic.rs rename to tests/ui/rfcs/rfc-2175-or-if-while-let/basic.rs diff --git a/src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs b/tests/ui/rfcs/rfc-2302-self-struct-ctor.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs rename to tests/ui/rfcs/rfc-2302-self-struct-ctor.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/check-pass.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/check-pass.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/check-pass.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/check-pass.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/closures-inherit-target_feature.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/closures-inherit-target_feature.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/closures-inherit-target_feature.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/closures-inherit-target_feature.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/feature-gate-target_feature_11.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.mir.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.mir.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.mir.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.mir.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.thir.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.thir.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.thir.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/fn-ptr.thir.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/fn-traits.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/fn-traits.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/fn-traits.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/fn-traits.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/fn-traits.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/issue-99876.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.mir.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.mir.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.mir.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.mir.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.thir.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.thir.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/safe-calls.thir.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/safe-calls.thir.stderr diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs b/tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs rename to tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs diff --git a/src/test/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr b/tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr rename to tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr diff --git a/src/test/ui/rfcs/rfc-2421-unreserve-pure-offsetof-sizeof-alignof.rs b/tests/ui/rfcs/rfc-2421-unreserve-pure-offsetof-sizeof-alignof.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2421-unreserve-pure-offsetof-sizeof-alignof.rs rename to tests/ui/rfcs/rfc-2421-unreserve-pure-offsetof-sizeof-alignof.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/coerce-in-base-expr.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/coerce-in-base-expr.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/coerce-in-base-expr.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/coerce-in-base-expr.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.stderr b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.stderr rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/feature-gate.stderr diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.stderr b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.stderr rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-92010-trait-bound-not-satisfied.stderr diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/issue-96878.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.stderr b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.stderr rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/lifetime-update.stderr diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.rs b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.rs similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.rs rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.rs diff --git a/src/test/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.stderr b/tests/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.stderr similarity index 100% rename from src/test/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.stderr rename to tests/ui/rfcs/rfc-2528-type-changing-struct-update/type-generic-update.stderr diff --git a/src/test/ui/rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs b/tests/ui/rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs similarity index 100% rename from src/test/ui/rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs rename to tests/ui/rfcs/rfc1445/eq-allows-match-on-ty-in-macro.rs diff --git a/src/test/ui/rfcs/rfc1445/eq-allows-match.rs b/tests/ui/rfcs/rfc1445/eq-allows-match.rs similarity index 100% rename from src/test/ui/rfcs/rfc1445/eq-allows-match.rs rename to tests/ui/rfcs/rfc1445/eq-allows-match.rs diff --git a/src/test/ui/rfcs/rfc1623-2.rs b/tests/ui/rfcs/rfc1623-2.rs similarity index 100% rename from src/test/ui/rfcs/rfc1623-2.rs rename to tests/ui/rfcs/rfc1623-2.rs diff --git a/src/test/ui/rfcs/rfc1623-2.stderr b/tests/ui/rfcs/rfc1623-2.stderr similarity index 100% rename from src/test/ui/rfcs/rfc1623-2.stderr rename to tests/ui/rfcs/rfc1623-2.stderr diff --git a/src/test/ui/rfcs/rfc1623-3.rs b/tests/ui/rfcs/rfc1623-3.rs similarity index 100% rename from src/test/ui/rfcs/rfc1623-3.rs rename to tests/ui/rfcs/rfc1623-3.rs diff --git a/src/test/ui/rfcs/rfc1623-3.stderr b/tests/ui/rfcs/rfc1623-3.stderr similarity index 100% rename from src/test/ui/rfcs/rfc1623-3.stderr rename to tests/ui/rfcs/rfc1623-3.stderr diff --git a/src/test/ui/rfcs/rfc1623.rs b/tests/ui/rfcs/rfc1623.rs similarity index 100% rename from src/test/ui/rfcs/rfc1623.rs rename to tests/ui/rfcs/rfc1623.rs diff --git a/src/test/ui/rfcs/rfc1717/library-override.rs b/tests/ui/rfcs/rfc1717/library-override.rs similarity index 100% rename from src/test/ui/rfcs/rfc1717/library-override.rs rename to tests/ui/rfcs/rfc1717/library-override.rs diff --git a/src/test/ui/rfcs/rfc1857-drop-order.rs b/tests/ui/rfcs/rfc1857-drop-order.rs similarity index 100% rename from src/test/ui/rfcs/rfc1857-drop-order.rs rename to tests/ui/rfcs/rfc1857-drop-order.rs diff --git a/src/test/ui/rmeta/auxiliary/rmeta-meta.rs b/tests/ui/rmeta/auxiliary/rmeta-meta.rs similarity index 100% rename from src/test/ui/rmeta/auxiliary/rmeta-meta.rs rename to tests/ui/rmeta/auxiliary/rmeta-meta.rs diff --git a/src/test/ui/rmeta/auxiliary/rmeta-rlib-rpass.rs b/tests/ui/rmeta/auxiliary/rmeta-rlib-rpass.rs similarity index 100% rename from src/test/ui/rmeta/auxiliary/rmeta-rlib-rpass.rs rename to tests/ui/rmeta/auxiliary/rmeta-rlib-rpass.rs diff --git a/src/test/ui/rmeta/auxiliary/rmeta-rlib.rs b/tests/ui/rmeta/auxiliary/rmeta-rlib.rs similarity index 100% rename from src/test/ui/rmeta/auxiliary/rmeta-rlib.rs rename to tests/ui/rmeta/auxiliary/rmeta-rlib.rs diff --git a/src/test/ui/rmeta/auxiliary/rmeta-rmeta.rs b/tests/ui/rmeta/auxiliary/rmeta-rmeta.rs similarity index 100% rename from src/test/ui/rmeta/auxiliary/rmeta-rmeta.rs rename to tests/ui/rmeta/auxiliary/rmeta-rmeta.rs diff --git a/src/test/ui/rmeta/emit-artifact-notifications.polonius.stderr b/tests/ui/rmeta/emit-artifact-notifications.polonius.stderr similarity index 100% rename from src/test/ui/rmeta/emit-artifact-notifications.polonius.stderr rename to tests/ui/rmeta/emit-artifact-notifications.polonius.stderr diff --git a/src/test/ui/rmeta/emit-artifact-notifications.rs b/tests/ui/rmeta/emit-artifact-notifications.rs similarity index 100% rename from src/test/ui/rmeta/emit-artifact-notifications.rs rename to tests/ui/rmeta/emit-artifact-notifications.rs diff --git a/src/test/ui/rmeta/emit-artifact-notifications.stderr b/tests/ui/rmeta/emit-artifact-notifications.stderr similarity index 100% rename from src/test/ui/rmeta/emit-artifact-notifications.stderr rename to tests/ui/rmeta/emit-artifact-notifications.stderr diff --git a/src/test/ui/rmeta/emit-metadata-obj.rs b/tests/ui/rmeta/emit-metadata-obj.rs similarity index 100% rename from src/test/ui/rmeta/emit-metadata-obj.rs rename to tests/ui/rmeta/emit-metadata-obj.rs diff --git a/src/test/ui/rmeta/rmeta-lib-pass.rs b/tests/ui/rmeta/rmeta-lib-pass.rs similarity index 100% rename from src/test/ui/rmeta/rmeta-lib-pass.rs rename to tests/ui/rmeta/rmeta-lib-pass.rs diff --git a/src/test/ui/rmeta/rmeta-pass.rs b/tests/ui/rmeta/rmeta-pass.rs similarity index 100% rename from src/test/ui/rmeta/rmeta-pass.rs rename to tests/ui/rmeta/rmeta-pass.rs diff --git a/src/test/ui/rmeta/rmeta-priv-warn.rs b/tests/ui/rmeta/rmeta-priv-warn.rs similarity index 100% rename from src/test/ui/rmeta/rmeta-priv-warn.rs rename to tests/ui/rmeta/rmeta-priv-warn.rs diff --git a/src/test/ui/rmeta/rmeta-rpass.rs b/tests/ui/rmeta/rmeta-rpass.rs similarity index 100% rename from src/test/ui/rmeta/rmeta-rpass.rs rename to tests/ui/rmeta/rmeta-rpass.rs diff --git a/src/test/ui/rmeta/rmeta.rs b/tests/ui/rmeta/rmeta.rs similarity index 100% rename from src/test/ui/rmeta/rmeta.rs rename to tests/ui/rmeta/rmeta.rs diff --git a/src/test/ui/rmeta/rmeta.stderr b/tests/ui/rmeta/rmeta.stderr similarity index 100% rename from src/test/ui/rmeta/rmeta.stderr rename to tests/ui/rmeta/rmeta.stderr diff --git a/src/test/ui/rmeta/rmeta_lib.rs b/tests/ui/rmeta/rmeta_lib.rs similarity index 100% rename from src/test/ui/rmeta/rmeta_lib.rs rename to tests/ui/rmeta/rmeta_lib.rs diff --git a/src/test/ui/rmeta/rmeta_lib.stderr b/tests/ui/rmeta/rmeta_lib.stderr similarity index 100% rename from src/test/ui/rmeta/rmeta_lib.stderr rename to tests/ui/rmeta/rmeta_lib.stderr diff --git a/src/test/ui/rmeta/rmeta_meta_main.rs b/tests/ui/rmeta/rmeta_meta_main.rs similarity index 100% rename from src/test/ui/rmeta/rmeta_meta_main.rs rename to tests/ui/rmeta/rmeta_meta_main.rs diff --git a/src/test/ui/rmeta/rmeta_meta_main.stderr b/tests/ui/rmeta/rmeta_meta_main.stderr similarity index 100% rename from src/test/ui/rmeta/rmeta_meta_main.stderr rename to tests/ui/rmeta/rmeta_meta_main.stderr diff --git a/src/test/ui/runtime/atomic-print.rs b/tests/ui/runtime/atomic-print.rs similarity index 100% rename from src/test/ui/runtime/atomic-print.rs rename to tests/ui/runtime/atomic-print.rs diff --git a/src/test/ui/runtime/backtrace-debuginfo-aux.rs b/tests/ui/runtime/backtrace-debuginfo-aux.rs similarity index 100% rename from src/test/ui/runtime/backtrace-debuginfo-aux.rs rename to tests/ui/runtime/backtrace-debuginfo-aux.rs diff --git a/src/test/ui/runtime/backtrace-debuginfo.rs b/tests/ui/runtime/backtrace-debuginfo.rs similarity index 100% rename from src/test/ui/runtime/backtrace-debuginfo.rs rename to tests/ui/runtime/backtrace-debuginfo.rs diff --git a/src/test/ui/runtime/native-print-no-runtime.rs b/tests/ui/runtime/native-print-no-runtime.rs similarity index 100% rename from src/test/ui/runtime/native-print-no-runtime.rs rename to tests/ui/runtime/native-print-no-runtime.rs diff --git a/src/test/ui/runtime/out-of-stack.rs b/tests/ui/runtime/out-of-stack.rs similarity index 100% rename from src/test/ui/runtime/out-of-stack.rs rename to tests/ui/runtime/out-of-stack.rs diff --git a/src/test/ui/runtime/rt-explody-panic-payloads.rs b/tests/ui/runtime/rt-explody-panic-payloads.rs similarity index 100% rename from src/test/ui/runtime/rt-explody-panic-payloads.rs rename to tests/ui/runtime/rt-explody-panic-payloads.rs diff --git a/src/test/ui/runtime/running-with-no-runtime.rs b/tests/ui/runtime/running-with-no-runtime.rs similarity index 100% rename from src/test/ui/runtime/running-with-no-runtime.rs rename to tests/ui/runtime/running-with-no-runtime.rs diff --git a/src/test/ui/runtime/signal-alternate-stack-cleanup.rs b/tests/ui/runtime/signal-alternate-stack-cleanup.rs similarity index 100% rename from src/test/ui/runtime/signal-alternate-stack-cleanup.rs rename to tests/ui/runtime/signal-alternate-stack-cleanup.rs diff --git a/src/test/ui/runtime/stdout-during-shutdown.rs b/tests/ui/runtime/stdout-during-shutdown.rs similarity index 100% rename from src/test/ui/runtime/stdout-during-shutdown.rs rename to tests/ui/runtime/stdout-during-shutdown.rs diff --git a/src/test/ui/runtime/stdout-during-shutdown.run.stdout b/tests/ui/runtime/stdout-during-shutdown.run.stdout similarity index 100% rename from src/test/ui/runtime/stdout-during-shutdown.run.stdout rename to tests/ui/runtime/stdout-during-shutdown.run.stdout diff --git a/src/test/ui/rust-2018/async-ident-allowed.rs b/tests/ui/rust-2018/async-ident-allowed.rs similarity index 100% rename from src/test/ui/rust-2018/async-ident-allowed.rs rename to tests/ui/rust-2018/async-ident-allowed.rs diff --git a/src/test/ui/rust-2018/async-ident-allowed.stderr b/tests/ui/rust-2018/async-ident-allowed.stderr similarity index 100% rename from src/test/ui/rust-2018/async-ident-allowed.stderr rename to tests/ui/rust-2018/async-ident-allowed.stderr diff --git a/src/test/ui/rust-2018/async-ident.fixed b/tests/ui/rust-2018/async-ident.fixed similarity index 100% rename from src/test/ui/rust-2018/async-ident.fixed rename to tests/ui/rust-2018/async-ident.fixed diff --git a/src/test/ui/rust-2018/async-ident.rs b/tests/ui/rust-2018/async-ident.rs similarity index 100% rename from src/test/ui/rust-2018/async-ident.rs rename to tests/ui/rust-2018/async-ident.rs diff --git a/src/test/ui/rust-2018/async-ident.stderr b/tests/ui/rust-2018/async-ident.stderr similarity index 100% rename from src/test/ui/rust-2018/async-ident.stderr rename to tests/ui/rust-2018/async-ident.stderr diff --git a/src/test/ui/rust-2018/auxiliary/baz.rs b/tests/ui/rust-2018/auxiliary/baz.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/baz.rs rename to tests/ui/rust-2018/auxiliary/baz.rs diff --git a/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs b/tests/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs rename to tests/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs diff --git a/src/test/ui/rust-2018/auxiliary/edition-lint-paths.rs b/tests/ui/rust-2018/auxiliary/edition-lint-paths.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/edition-lint-paths.rs rename to tests/ui/rust-2018/auxiliary/edition-lint-paths.rs diff --git a/src/test/ui/rust-2018/auxiliary/macro-use-warned-against.rs b/tests/ui/rust-2018/auxiliary/macro-use-warned-against.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/macro-use-warned-against.rs rename to tests/ui/rust-2018/auxiliary/macro-use-warned-against.rs diff --git a/src/test/ui/rust-2018/auxiliary/macro-use-warned-against2.rs b/tests/ui/rust-2018/auxiliary/macro-use-warned-against2.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/macro-use-warned-against2.rs rename to tests/ui/rust-2018/auxiliary/macro-use-warned-against2.rs diff --git a/src/test/ui/rust-2018/auxiliary/remove-extern-crate.rs b/tests/ui/rust-2018/auxiliary/remove-extern-crate.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/remove-extern-crate.rs rename to tests/ui/rust-2018/auxiliary/remove-extern-crate.rs diff --git a/src/test/ui/rust-2018/auxiliary/suggestions-not-always-applicable.rs b/tests/ui/rust-2018/auxiliary/suggestions-not-always-applicable.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/suggestions-not-always-applicable.rs rename to tests/ui/rust-2018/auxiliary/suggestions-not-always-applicable.rs diff --git a/src/test/ui/rust-2018/auxiliary/trait-import-suggestions.rs b/tests/ui/rust-2018/auxiliary/trait-import-suggestions.rs similarity index 100% rename from src/test/ui/rust-2018/auxiliary/trait-import-suggestions.rs rename to tests/ui/rust-2018/auxiliary/trait-import-suggestions.rs diff --git a/src/test/ui/rust-2018/dyn-keyword.fixed b/tests/ui/rust-2018/dyn-keyword.fixed similarity index 100% rename from src/test/ui/rust-2018/dyn-keyword.fixed rename to tests/ui/rust-2018/dyn-keyword.fixed diff --git a/src/test/ui/rust-2018/dyn-keyword.rs b/tests/ui/rust-2018/dyn-keyword.rs similarity index 100% rename from src/test/ui/rust-2018/dyn-keyword.rs rename to tests/ui/rust-2018/dyn-keyword.rs diff --git a/src/test/ui/rust-2018/dyn-keyword.stderr b/tests/ui/rust-2018/dyn-keyword.stderr similarity index 100% rename from src/test/ui/rust-2018/dyn-keyword.stderr rename to tests/ui/rust-2018/dyn-keyword.stderr diff --git a/src/test/ui/rust-2018/dyn-trait-compatibility.rs b/tests/ui/rust-2018/dyn-trait-compatibility.rs similarity index 100% rename from src/test/ui/rust-2018/dyn-trait-compatibility.rs rename to tests/ui/rust-2018/dyn-trait-compatibility.rs diff --git a/src/test/ui/rust-2018/dyn-trait-compatibility.stderr b/tests/ui/rust-2018/dyn-trait-compatibility.stderr similarity index 100% rename from src/test/ui/rust-2018/dyn-trait-compatibility.stderr rename to tests/ui/rust-2018/dyn-trait-compatibility.stderr diff --git a/src/test/ui/rust-2018/edition-lint-fully-qualified-paths.fixed b/tests/ui/rust-2018/edition-lint-fully-qualified-paths.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-fully-qualified-paths.fixed rename to tests/ui/rust-2018/edition-lint-fully-qualified-paths.fixed diff --git a/src/test/ui/rust-2018/edition-lint-fully-qualified-paths.rs b/tests/ui/rust-2018/edition-lint-fully-qualified-paths.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-fully-qualified-paths.rs rename to tests/ui/rust-2018/edition-lint-fully-qualified-paths.rs diff --git a/src/test/ui/rust-2018/edition-lint-fully-qualified-paths.stderr b/tests/ui/rust-2018/edition-lint-fully-qualified-paths.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-fully-qualified-paths.stderr rename to tests/ui/rust-2018/edition-lint-fully-qualified-paths.stderr diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.fixed b/tests/ui/rust-2018/edition-lint-infer-outlives-macro.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives-macro.fixed rename to tests/ui/rust-2018/edition-lint-infer-outlives-macro.fixed diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs b/tests/ui/rust-2018/edition-lint-infer-outlives-macro.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs rename to tests/ui/rust-2018/edition-lint-infer-outlives-macro.rs diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr b/tests/ui/rust-2018/edition-lint-infer-outlives-macro.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr rename to tests/ui/rust-2018/edition-lint-infer-outlives-macro.stderr diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.rs b/tests/ui/rust-2018/edition-lint-infer-outlives-multispan.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.rs rename to tests/ui/rust-2018/edition-lint-infer-outlives-multispan.rs diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr b/tests/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr rename to tests/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives.fixed b/tests/ui/rust-2018/edition-lint-infer-outlives.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives.fixed rename to tests/ui/rust-2018/edition-lint-infer-outlives.fixed diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives.rs b/tests/ui/rust-2018/edition-lint-infer-outlives.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives.rs rename to tests/ui/rust-2018/edition-lint-infer-outlives.rs diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives.stderr b/tests/ui/rust-2018/edition-lint-infer-outlives.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-infer-outlives.stderr rename to tests/ui/rust-2018/edition-lint-infer-outlives.stderr diff --git a/src/test/ui/rust-2018/edition-lint-nested-empty-paths.fixed b/tests/ui/rust-2018/edition-lint-nested-empty-paths.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-empty-paths.fixed rename to tests/ui/rust-2018/edition-lint-nested-empty-paths.fixed diff --git a/src/test/ui/rust-2018/edition-lint-nested-empty-paths.rs b/tests/ui/rust-2018/edition-lint-nested-empty-paths.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-empty-paths.rs rename to tests/ui/rust-2018/edition-lint-nested-empty-paths.rs diff --git a/src/test/ui/rust-2018/edition-lint-nested-empty-paths.stderr b/tests/ui/rust-2018/edition-lint-nested-empty-paths.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-empty-paths.stderr rename to tests/ui/rust-2018/edition-lint-nested-empty-paths.stderr diff --git a/src/test/ui/rust-2018/edition-lint-nested-paths.fixed b/tests/ui/rust-2018/edition-lint-nested-paths.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-paths.fixed rename to tests/ui/rust-2018/edition-lint-nested-paths.fixed diff --git a/src/test/ui/rust-2018/edition-lint-nested-paths.rs b/tests/ui/rust-2018/edition-lint-nested-paths.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-paths.rs rename to tests/ui/rust-2018/edition-lint-nested-paths.rs diff --git a/src/test/ui/rust-2018/edition-lint-nested-paths.stderr b/tests/ui/rust-2018/edition-lint-nested-paths.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-nested-paths.stderr rename to tests/ui/rust-2018/edition-lint-nested-paths.stderr diff --git a/src/test/ui/rust-2018/edition-lint-paths-2018.rs b/tests/ui/rust-2018/edition-lint-paths-2018.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-paths-2018.rs rename to tests/ui/rust-2018/edition-lint-paths-2018.rs diff --git a/src/test/ui/rust-2018/edition-lint-paths.fixed b/tests/ui/rust-2018/edition-lint-paths.fixed similarity index 100% rename from src/test/ui/rust-2018/edition-lint-paths.fixed rename to tests/ui/rust-2018/edition-lint-paths.fixed diff --git a/src/test/ui/rust-2018/edition-lint-paths.rs b/tests/ui/rust-2018/edition-lint-paths.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-paths.rs rename to tests/ui/rust-2018/edition-lint-paths.rs diff --git a/src/test/ui/rust-2018/edition-lint-paths.stderr b/tests/ui/rust-2018/edition-lint-paths.stderr similarity index 100% rename from src/test/ui/rust-2018/edition-lint-paths.stderr rename to tests/ui/rust-2018/edition-lint-paths.stderr diff --git a/src/test/ui/rust-2018/edition-lint-uninferable-outlives.rs b/tests/ui/rust-2018/edition-lint-uninferable-outlives.rs similarity index 100% rename from src/test/ui/rust-2018/edition-lint-uninferable-outlives.rs rename to tests/ui/rust-2018/edition-lint-uninferable-outlives.rs diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed b/tests/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed similarity index 100% rename from src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed rename to tests/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.rs b/tests/ui/rust-2018/extern-crate-idiomatic-in-2018.rs similarity index 100% rename from src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.rs rename to tests/ui/rust-2018/extern-crate-idiomatic-in-2018.rs diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr b/tests/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr similarity index 100% rename from src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr rename to tests/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic.fixed b/tests/ui/rust-2018/extern-crate-idiomatic.fixed similarity index 100% rename from src/test/ui/rust-2018/extern-crate-idiomatic.fixed rename to tests/ui/rust-2018/extern-crate-idiomatic.fixed diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic.rs b/tests/ui/rust-2018/extern-crate-idiomatic.rs similarity index 100% rename from src/test/ui/rust-2018/extern-crate-idiomatic.rs rename to tests/ui/rust-2018/extern-crate-idiomatic.rs diff --git a/src/test/ui/rust-2018/extern-crate-referenced-by-self-path.fixed b/tests/ui/rust-2018/extern-crate-referenced-by-self-path.fixed similarity index 100% rename from src/test/ui/rust-2018/extern-crate-referenced-by-self-path.fixed rename to tests/ui/rust-2018/extern-crate-referenced-by-self-path.fixed diff --git a/src/test/ui/rust-2018/extern-crate-referenced-by-self-path.rs b/tests/ui/rust-2018/extern-crate-referenced-by-self-path.rs similarity index 100% rename from src/test/ui/rust-2018/extern-crate-referenced-by-self-path.rs rename to tests/ui/rust-2018/extern-crate-referenced-by-self-path.rs diff --git a/src/test/ui/rust-2018/extern-crate-rename.fixed b/tests/ui/rust-2018/extern-crate-rename.fixed similarity index 100% rename from src/test/ui/rust-2018/extern-crate-rename.fixed rename to tests/ui/rust-2018/extern-crate-rename.fixed diff --git a/src/test/ui/rust-2018/extern-crate-rename.rs b/tests/ui/rust-2018/extern-crate-rename.rs similarity index 100% rename from src/test/ui/rust-2018/extern-crate-rename.rs rename to tests/ui/rust-2018/extern-crate-rename.rs diff --git a/src/test/ui/rust-2018/extern-crate-rename.stderr b/tests/ui/rust-2018/extern-crate-rename.stderr similarity index 100% rename from src/test/ui/rust-2018/extern-crate-rename.stderr rename to tests/ui/rust-2018/extern-crate-rename.stderr diff --git a/src/test/ui/rust-2018/extern-crate-submod.fixed b/tests/ui/rust-2018/extern-crate-submod.fixed similarity index 100% rename from src/test/ui/rust-2018/extern-crate-submod.fixed rename to tests/ui/rust-2018/extern-crate-submod.fixed diff --git a/src/test/ui/rust-2018/extern-crate-submod.rs b/tests/ui/rust-2018/extern-crate-submod.rs similarity index 100% rename from src/test/ui/rust-2018/extern-crate-submod.rs rename to tests/ui/rust-2018/extern-crate-submod.rs diff --git a/src/test/ui/rust-2018/extern-crate-submod.stderr b/tests/ui/rust-2018/extern-crate-submod.stderr similarity index 100% rename from src/test/ui/rust-2018/extern-crate-submod.stderr rename to tests/ui/rust-2018/extern-crate-submod.stderr diff --git a/src/test/ui/rust-2018/future-proofing-locals.rs b/tests/ui/rust-2018/future-proofing-locals.rs similarity index 100% rename from src/test/ui/rust-2018/future-proofing-locals.rs rename to tests/ui/rust-2018/future-proofing-locals.rs diff --git a/src/test/ui/rust-2018/future-proofing-locals.stderr b/tests/ui/rust-2018/future-proofing-locals.stderr similarity index 100% rename from src/test/ui/rust-2018/future-proofing-locals.stderr rename to tests/ui/rust-2018/future-proofing-locals.stderr diff --git a/src/test/ui/rust-2018/issue-51008-1.rs b/tests/ui/rust-2018/issue-51008-1.rs similarity index 100% rename from src/test/ui/rust-2018/issue-51008-1.rs rename to tests/ui/rust-2018/issue-51008-1.rs diff --git a/src/test/ui/rust-2018/issue-51008.rs b/tests/ui/rust-2018/issue-51008.rs similarity index 100% rename from src/test/ui/rust-2018/issue-51008.rs rename to tests/ui/rust-2018/issue-51008.rs diff --git a/src/test/ui/rust-2018/issue-52202-use-suggestions.rs b/tests/ui/rust-2018/issue-52202-use-suggestions.rs similarity index 100% rename from src/test/ui/rust-2018/issue-52202-use-suggestions.rs rename to tests/ui/rust-2018/issue-52202-use-suggestions.rs diff --git a/src/test/ui/rust-2018/issue-52202-use-suggestions.stderr b/tests/ui/rust-2018/issue-52202-use-suggestions.stderr similarity index 100% rename from src/test/ui/rust-2018/issue-52202-use-suggestions.stderr rename to tests/ui/rust-2018/issue-52202-use-suggestions.stderr diff --git a/src/test/ui/rust-2018/issue-54006.rs b/tests/ui/rust-2018/issue-54006.rs similarity index 100% rename from src/test/ui/rust-2018/issue-54006.rs rename to tests/ui/rust-2018/issue-54006.rs diff --git a/src/test/ui/rust-2018/issue-54006.stderr b/tests/ui/rust-2018/issue-54006.stderr similarity index 100% rename from src/test/ui/rust-2018/issue-54006.stderr rename to tests/ui/rust-2018/issue-54006.stderr diff --git a/src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.fixed b/tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.fixed similarity index 100% rename from src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.fixed rename to tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.fixed diff --git a/src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs b/tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs similarity index 100% rename from src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs rename to tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.rs diff --git a/src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.stderr b/tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.stderr similarity index 100% rename from src/test/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.stderr rename to tests/ui/rust-2018/issue-54400-unused-extern-crate-attr-span.stderr diff --git a/src/test/ui/rust-2018/local-path-suggestions-2015.rs b/tests/ui/rust-2018/local-path-suggestions-2015.rs similarity index 100% rename from src/test/ui/rust-2018/local-path-suggestions-2015.rs rename to tests/ui/rust-2018/local-path-suggestions-2015.rs diff --git a/src/test/ui/rust-2018/local-path-suggestions-2015.stderr b/tests/ui/rust-2018/local-path-suggestions-2015.stderr similarity index 100% rename from src/test/ui/rust-2018/local-path-suggestions-2015.stderr rename to tests/ui/rust-2018/local-path-suggestions-2015.stderr diff --git a/src/test/ui/rust-2018/local-path-suggestions-2018.rs b/tests/ui/rust-2018/local-path-suggestions-2018.rs similarity index 100% rename from src/test/ui/rust-2018/local-path-suggestions-2018.rs rename to tests/ui/rust-2018/local-path-suggestions-2018.rs diff --git a/src/test/ui/rust-2018/local-path-suggestions-2018.stderr b/tests/ui/rust-2018/local-path-suggestions-2018.stderr similarity index 100% rename from src/test/ui/rust-2018/local-path-suggestions-2018.stderr rename to tests/ui/rust-2018/local-path-suggestions-2018.stderr diff --git a/src/test/ui/rust-2018/macro-use-warned-against.rs b/tests/ui/rust-2018/macro-use-warned-against.rs similarity index 100% rename from src/test/ui/rust-2018/macro-use-warned-against.rs rename to tests/ui/rust-2018/macro-use-warned-against.rs diff --git a/src/test/ui/rust-2018/macro-use-warned-against.stderr b/tests/ui/rust-2018/macro-use-warned-against.stderr similarity index 100% rename from src/test/ui/rust-2018/macro-use-warned-against.stderr rename to tests/ui/rust-2018/macro-use-warned-against.stderr diff --git a/src/test/ui/rust-2018/proc-macro-crate-in-paths.rs b/tests/ui/rust-2018/proc-macro-crate-in-paths.rs similarity index 100% rename from src/test/ui/rust-2018/proc-macro-crate-in-paths.rs rename to tests/ui/rust-2018/proc-macro-crate-in-paths.rs diff --git a/src/test/ui/rust-2018/remove-extern-crate.fixed b/tests/ui/rust-2018/remove-extern-crate.fixed similarity index 100% rename from src/test/ui/rust-2018/remove-extern-crate.fixed rename to tests/ui/rust-2018/remove-extern-crate.fixed diff --git a/src/test/ui/rust-2018/remove-extern-crate.rs b/tests/ui/rust-2018/remove-extern-crate.rs similarity index 100% rename from src/test/ui/rust-2018/remove-extern-crate.rs rename to tests/ui/rust-2018/remove-extern-crate.rs diff --git a/src/test/ui/rust-2018/remove-extern-crate.stderr b/tests/ui/rust-2018/remove-extern-crate.stderr similarity index 100% rename from src/test/ui/rust-2018/remove-extern-crate.stderr rename to tests/ui/rust-2018/remove-extern-crate.stderr diff --git a/src/test/ui/rust-2018/suggestions-not-always-applicable.fixed b/tests/ui/rust-2018/suggestions-not-always-applicable.fixed similarity index 100% rename from src/test/ui/rust-2018/suggestions-not-always-applicable.fixed rename to tests/ui/rust-2018/suggestions-not-always-applicable.fixed diff --git a/src/test/ui/rust-2018/suggestions-not-always-applicable.rs b/tests/ui/rust-2018/suggestions-not-always-applicable.rs similarity index 100% rename from src/test/ui/rust-2018/suggestions-not-always-applicable.rs rename to tests/ui/rust-2018/suggestions-not-always-applicable.rs diff --git a/src/test/ui/rust-2018/trait-import-suggestions.rs b/tests/ui/rust-2018/trait-import-suggestions.rs similarity index 100% rename from src/test/ui/rust-2018/trait-import-suggestions.rs rename to tests/ui/rust-2018/trait-import-suggestions.rs diff --git a/src/test/ui/rust-2018/trait-import-suggestions.stderr b/tests/ui/rust-2018/trait-import-suggestions.stderr similarity index 100% rename from src/test/ui/rust-2018/trait-import-suggestions.stderr rename to tests/ui/rust-2018/trait-import-suggestions.stderr diff --git a/src/test/ui/rust-2018/try-ident.fixed b/tests/ui/rust-2018/try-ident.fixed similarity index 100% rename from src/test/ui/rust-2018/try-ident.fixed rename to tests/ui/rust-2018/try-ident.fixed diff --git a/src/test/ui/rust-2018/try-ident.rs b/tests/ui/rust-2018/try-ident.rs similarity index 100% rename from src/test/ui/rust-2018/try-ident.rs rename to tests/ui/rust-2018/try-ident.rs diff --git a/src/test/ui/rust-2018/try-ident.stderr b/tests/ui/rust-2018/try-ident.stderr similarity index 100% rename from src/test/ui/rust-2018/try-ident.stderr rename to tests/ui/rust-2018/try-ident.stderr diff --git a/src/test/ui/rust-2018/try-macro.fixed b/tests/ui/rust-2018/try-macro.fixed similarity index 100% rename from src/test/ui/rust-2018/try-macro.fixed rename to tests/ui/rust-2018/try-macro.fixed diff --git a/src/test/ui/rust-2018/try-macro.rs b/tests/ui/rust-2018/try-macro.rs similarity index 100% rename from src/test/ui/rust-2018/try-macro.rs rename to tests/ui/rust-2018/try-macro.rs diff --git a/src/test/ui/rust-2018/try-macro.stderr b/tests/ui/rust-2018/try-macro.stderr similarity index 100% rename from src/test/ui/rust-2018/try-macro.stderr rename to tests/ui/rust-2018/try-macro.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-macros-nested.rs b/tests/ui/rust-2018/uniform-paths/ambiguity-macros-nested.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-macros-nested.rs rename to tests/ui/rust-2018/uniform-paths/ambiguity-macros-nested.rs diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-macros-nested.stderr b/tests/ui/rust-2018/uniform-paths/ambiguity-macros-nested.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-macros-nested.stderr rename to tests/ui/rust-2018/uniform-paths/ambiguity-macros-nested.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-macros.rs b/tests/ui/rust-2018/uniform-paths/ambiguity-macros.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-macros.rs rename to tests/ui/rust-2018/uniform-paths/ambiguity-macros.rs diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-macros.stderr b/tests/ui/rust-2018/uniform-paths/ambiguity-macros.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-macros.stderr rename to tests/ui/rust-2018/uniform-paths/ambiguity-macros.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-nested.rs b/tests/ui/rust-2018/uniform-paths/ambiguity-nested.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-nested.rs rename to tests/ui/rust-2018/uniform-paths/ambiguity-nested.rs diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity-nested.stderr b/tests/ui/rust-2018/uniform-paths/ambiguity-nested.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity-nested.stderr rename to tests/ui/rust-2018/uniform-paths/ambiguity-nested.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity.rs b/tests/ui/rust-2018/uniform-paths/ambiguity.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity.rs rename to tests/ui/rust-2018/uniform-paths/ambiguity.rs diff --git a/src/test/ui/rust-2018/uniform-paths/ambiguity.stderr b/tests/ui/rust-2018/uniform-paths/ambiguity.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/ambiguity.stderr rename to tests/ui/rust-2018/uniform-paths/ambiguity.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/cross-crate.rs b/tests/ui/rust-2018/uniform-paths/auxiliary/cross-crate.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/auxiliary/cross-crate.rs rename to tests/ui/rust-2018/uniform-paths/auxiliary/cross-crate.rs diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs b/tests/ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs rename to tests/ui/rust-2018/uniform-paths/auxiliary/issue-55779-extern-trait.rs diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs b/tests/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs rename to tests/ui/rust-2018/uniform-paths/auxiliary/issue-56596-2.rs diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs b/tests/ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs rename to tests/ui/rust-2018/uniform-paths/auxiliary/issue-56596.rs diff --git a/src/test/ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs b/tests/ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs rename to tests/ui/rust-2018/uniform-paths/auxiliary/issue-87932-a.rs diff --git a/src/test/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.rs b/tests/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.rs rename to tests/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.rs diff --git a/src/test/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.stderr b/tests/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.stderr rename to tests/ui/rust-2018/uniform-paths/block-scoped-shadow-nested.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/block-scoped-shadow.rs b/tests/ui/rust-2018/uniform-paths/block-scoped-shadow.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/block-scoped-shadow.rs rename to tests/ui/rust-2018/uniform-paths/block-scoped-shadow.rs diff --git a/src/test/ui/rust-2018/uniform-paths/block-scoped-shadow.stderr b/tests/ui/rust-2018/uniform-paths/block-scoped-shadow.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/block-scoped-shadow.stderr rename to tests/ui/rust-2018/uniform-paths/block-scoped-shadow.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/cross-crate.rs b/tests/ui/rust-2018/uniform-paths/cross-crate.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/cross-crate.rs rename to tests/ui/rust-2018/uniform-paths/cross-crate.rs diff --git a/src/test/ui/rust-2018/uniform-paths/cross-crate.stderr b/tests/ui/rust-2018/uniform-paths/cross-crate.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/cross-crate.stderr rename to tests/ui/rust-2018/uniform-paths/cross-crate.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/deadlock.rs b/tests/ui/rust-2018/uniform-paths/deadlock.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/deadlock.rs rename to tests/ui/rust-2018/uniform-paths/deadlock.rs diff --git a/src/test/ui/rust-2018/uniform-paths/deadlock.stderr b/tests/ui/rust-2018/uniform-paths/deadlock.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/deadlock.stderr rename to tests/ui/rust-2018/uniform-paths/deadlock.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/fn-local-enum.rs b/tests/ui/rust-2018/uniform-paths/fn-local-enum.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/fn-local-enum.rs rename to tests/ui/rust-2018/uniform-paths/fn-local-enum.rs diff --git a/src/test/ui/rust-2018/uniform-paths/from-decl-macro.rs b/tests/ui/rust-2018/uniform-paths/from-decl-macro.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/from-decl-macro.rs rename to tests/ui/rust-2018/uniform-paths/from-decl-macro.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-54253.rs b/tests/ui/rust-2018/uniform-paths/issue-54253.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-54253.rs rename to tests/ui/rust-2018/uniform-paths/issue-54253.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-54253.stderr b/tests/ui/rust-2018/uniform-paths/issue-54253.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-54253.stderr rename to tests/ui/rust-2018/uniform-paths/issue-54253.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/issue-55779.rs b/tests/ui/rust-2018/uniform-paths/issue-55779.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-55779.rs rename to tests/ui/rust-2018/uniform-paths/issue-55779.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-56596-2.rs b/tests/ui/rust-2018/uniform-paths/issue-56596-2.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-56596-2.rs rename to tests/ui/rust-2018/uniform-paths/issue-56596-2.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-56596.rs b/tests/ui/rust-2018/uniform-paths/issue-56596.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-56596.rs rename to tests/ui/rust-2018/uniform-paths/issue-56596.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-56596.stderr b/tests/ui/rust-2018/uniform-paths/issue-56596.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-56596.stderr rename to tests/ui/rust-2018/uniform-paths/issue-56596.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/issue-87932.rs b/tests/ui/rust-2018/uniform-paths/issue-87932.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-87932.rs rename to tests/ui/rust-2018/uniform-paths/issue-87932.rs diff --git a/src/test/ui/rust-2018/uniform-paths/issue-87932.stderr b/tests/ui/rust-2018/uniform-paths/issue-87932.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/issue-87932.stderr rename to tests/ui/rust-2018/uniform-paths/issue-87932.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/macro-rules.rs b/tests/ui/rust-2018/uniform-paths/macro-rules.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/macro-rules.rs rename to tests/ui/rust-2018/uniform-paths/macro-rules.rs diff --git a/src/test/ui/rust-2018/uniform-paths/macro-rules.stderr b/tests/ui/rust-2018/uniform-paths/macro-rules.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/macro-rules.stderr rename to tests/ui/rust-2018/uniform-paths/macro-rules.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/prelude-fail-2.rs b/tests/ui/rust-2018/uniform-paths/prelude-fail-2.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/prelude-fail-2.rs rename to tests/ui/rust-2018/uniform-paths/prelude-fail-2.rs diff --git a/src/test/ui/rust-2018/uniform-paths/prelude-fail-2.stderr b/tests/ui/rust-2018/uniform-paths/prelude-fail-2.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/prelude-fail-2.stderr rename to tests/ui/rust-2018/uniform-paths/prelude-fail-2.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/prelude-fail.rs b/tests/ui/rust-2018/uniform-paths/prelude-fail.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/prelude-fail.rs rename to tests/ui/rust-2018/uniform-paths/prelude-fail.rs diff --git a/src/test/ui/rust-2018/uniform-paths/prelude-fail.stderr b/tests/ui/rust-2018/uniform-paths/prelude-fail.stderr similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/prelude-fail.stderr rename to tests/ui/rust-2018/uniform-paths/prelude-fail.stderr diff --git a/src/test/ui/rust-2018/uniform-paths/prelude.rs b/tests/ui/rust-2018/uniform-paths/prelude.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/prelude.rs rename to tests/ui/rust-2018/uniform-paths/prelude.rs diff --git a/src/test/ui/rust-2018/uniform-paths/redundant.rs b/tests/ui/rust-2018/uniform-paths/redundant.rs similarity index 100% rename from src/test/ui/rust-2018/uniform-paths/redundant.rs rename to tests/ui/rust-2018/uniform-paths/redundant.rs diff --git a/src/test/ui/rust-2018/unresolved-asterisk-imports.rs b/tests/ui/rust-2018/unresolved-asterisk-imports.rs similarity index 100% rename from src/test/ui/rust-2018/unresolved-asterisk-imports.rs rename to tests/ui/rust-2018/unresolved-asterisk-imports.rs diff --git a/src/test/ui/rust-2018/unresolved-asterisk-imports.stderr b/tests/ui/rust-2018/unresolved-asterisk-imports.stderr similarity index 100% rename from src/test/ui/rust-2018/unresolved-asterisk-imports.stderr rename to tests/ui/rust-2018/unresolved-asterisk-imports.stderr diff --git a/src/test/ui/rust-2021/array-into-iter-ambiguous.fixed b/tests/ui/rust-2021/array-into-iter-ambiguous.fixed similarity index 100% rename from src/test/ui/rust-2021/array-into-iter-ambiguous.fixed rename to tests/ui/rust-2021/array-into-iter-ambiguous.fixed diff --git a/src/test/ui/rust-2021/array-into-iter-ambiguous.rs b/tests/ui/rust-2021/array-into-iter-ambiguous.rs similarity index 100% rename from src/test/ui/rust-2021/array-into-iter-ambiguous.rs rename to tests/ui/rust-2021/array-into-iter-ambiguous.rs diff --git a/src/test/ui/rust-2021/array-into-iter-ambiguous.stderr b/tests/ui/rust-2021/array-into-iter-ambiguous.stderr similarity index 100% rename from src/test/ui/rust-2021/array-into-iter-ambiguous.stderr rename to tests/ui/rust-2021/array-into-iter-ambiguous.stderr diff --git a/src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs b/tests/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs similarity index 100% rename from src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs rename to tests/ui/rust-2021/auxiliary/reserved-prefixes-macro-2018.rs diff --git a/src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs b/tests/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs similarity index 100% rename from src/test/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs rename to tests/ui/rust-2021/auxiliary/reserved-prefixes-macro-2021.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic-trait.fixed b/tests/ui/rust-2021/future-prelude-collision-generic-trait.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic-trait.fixed rename to tests/ui/rust-2021/future-prelude-collision-generic-trait.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic-trait.rs b/tests/ui/rust-2021/future-prelude-collision-generic-trait.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic-trait.rs rename to tests/ui/rust-2021/future-prelude-collision-generic-trait.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic-trait.stderr b/tests/ui/rust-2021/future-prelude-collision-generic-trait.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic-trait.stderr rename to tests/ui/rust-2021/future-prelude-collision-generic-trait.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic.fixed b/tests/ui/rust-2021/future-prelude-collision-generic.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic.fixed rename to tests/ui/rust-2021/future-prelude-collision-generic.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic.rs b/tests/ui/rust-2021/future-prelude-collision-generic.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic.rs rename to tests/ui/rust-2021/future-prelude-collision-generic.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-generic.stderr b/tests/ui/rust-2021/future-prelude-collision-generic.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-generic.stderr rename to tests/ui/rust-2021/future-prelude-collision-generic.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-imported.fixed b/tests/ui/rust-2021/future-prelude-collision-imported.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-imported.fixed rename to tests/ui/rust-2021/future-prelude-collision-imported.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision-imported.rs b/tests/ui/rust-2021/future-prelude-collision-imported.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-imported.rs rename to tests/ui/rust-2021/future-prelude-collision-imported.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-imported.stderr b/tests/ui/rust-2021/future-prelude-collision-imported.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-imported.stderr rename to tests/ui/rust-2021/future-prelude-collision-imported.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-macros.fixed b/tests/ui/rust-2021/future-prelude-collision-macros.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-macros.fixed rename to tests/ui/rust-2021/future-prelude-collision-macros.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision-macros.rs b/tests/ui/rust-2021/future-prelude-collision-macros.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-macros.rs rename to tests/ui/rust-2021/future-prelude-collision-macros.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-macros.stderr b/tests/ui/rust-2021/future-prelude-collision-macros.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-macros.stderr rename to tests/ui/rust-2021/future-prelude-collision-macros.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-shadow.rs b/tests/ui/rust-2021/future-prelude-collision-shadow.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-shadow.rs rename to tests/ui/rust-2021/future-prelude-collision-shadow.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-shadow.stderr b/tests/ui/rust-2021/future-prelude-collision-shadow.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-shadow.stderr rename to tests/ui/rust-2021/future-prelude-collision-shadow.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-turbofish.fixed b/tests/ui/rust-2021/future-prelude-collision-turbofish.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-turbofish.fixed rename to tests/ui/rust-2021/future-prelude-collision-turbofish.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision-turbofish.rs b/tests/ui/rust-2021/future-prelude-collision-turbofish.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-turbofish.rs rename to tests/ui/rust-2021/future-prelude-collision-turbofish.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision-turbofish.stderr b/tests/ui/rust-2021/future-prelude-collision-turbofish.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-turbofish.stderr rename to tests/ui/rust-2021/future-prelude-collision-turbofish.stderr diff --git a/src/test/ui/rust-2021/future-prelude-collision-unneeded.rs b/tests/ui/rust-2021/future-prelude-collision-unneeded.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision-unneeded.rs rename to tests/ui/rust-2021/future-prelude-collision-unneeded.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision.fixed b/tests/ui/rust-2021/future-prelude-collision.fixed similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision.fixed rename to tests/ui/rust-2021/future-prelude-collision.fixed diff --git a/src/test/ui/rust-2021/future-prelude-collision.rs b/tests/ui/rust-2021/future-prelude-collision.rs similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision.rs rename to tests/ui/rust-2021/future-prelude-collision.rs diff --git a/src/test/ui/rust-2021/future-prelude-collision.stderr b/tests/ui/rust-2021/future-prelude-collision.stderr similarity index 100% rename from src/test/ui/rust-2021/future-prelude-collision.stderr rename to tests/ui/rust-2021/future-prelude-collision.stderr diff --git a/src/test/ui/rust-2021/generic-type-collision.fixed b/tests/ui/rust-2021/generic-type-collision.fixed similarity index 100% rename from src/test/ui/rust-2021/generic-type-collision.fixed rename to tests/ui/rust-2021/generic-type-collision.fixed diff --git a/src/test/ui/rust-2021/generic-type-collision.rs b/tests/ui/rust-2021/generic-type-collision.rs similarity index 100% rename from src/test/ui/rust-2021/generic-type-collision.rs rename to tests/ui/rust-2021/generic-type-collision.rs diff --git a/src/test/ui/rust-2021/generic-type-collision.stderr b/tests/ui/rust-2021/generic-type-collision.stderr similarity index 100% rename from src/test/ui/rust-2021/generic-type-collision.stderr rename to tests/ui/rust-2021/generic-type-collision.stderr diff --git a/src/test/ui/rust-2021/inherent-dyn-collision.fixed b/tests/ui/rust-2021/inherent-dyn-collision.fixed similarity index 100% rename from src/test/ui/rust-2021/inherent-dyn-collision.fixed rename to tests/ui/rust-2021/inherent-dyn-collision.fixed diff --git a/src/test/ui/rust-2021/inherent-dyn-collision.rs b/tests/ui/rust-2021/inherent-dyn-collision.rs similarity index 100% rename from src/test/ui/rust-2021/inherent-dyn-collision.rs rename to tests/ui/rust-2021/inherent-dyn-collision.rs diff --git a/src/test/ui/rust-2021/inherent-dyn-collision.stderr b/tests/ui/rust-2021/inherent-dyn-collision.stderr similarity index 100% rename from src/test/ui/rust-2021/inherent-dyn-collision.stderr rename to tests/ui/rust-2021/inherent-dyn-collision.stderr diff --git a/src/test/ui/rust-2021/inherent-method-collision.rs b/tests/ui/rust-2021/inherent-method-collision.rs similarity index 100% rename from src/test/ui/rust-2021/inherent-method-collision.rs rename to tests/ui/rust-2021/inherent-method-collision.rs diff --git a/src/test/ui/rust-2021/panic.rs b/tests/ui/rust-2021/panic.rs similarity index 100% rename from src/test/ui/rust-2021/panic.rs rename to tests/ui/rust-2021/panic.rs diff --git a/src/test/ui/rust-2021/panic.stderr b/tests/ui/rust-2021/panic.stderr similarity index 100% rename from src/test/ui/rust-2021/panic.stderr rename to tests/ui/rust-2021/panic.stderr diff --git a/src/test/ui/rust-2021/prelude2021.rs b/tests/ui/rust-2021/prelude2021.rs similarity index 100% rename from src/test/ui/rust-2021/prelude2021.rs rename to tests/ui/rust-2021/prelude2021.rs diff --git a/src/test/ui/rust-2021/reserved-prefixes-migration.fixed b/tests/ui/rust-2021/reserved-prefixes-migration.fixed similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-migration.fixed rename to tests/ui/rust-2021/reserved-prefixes-migration.fixed diff --git a/src/test/ui/rust-2021/reserved-prefixes-migration.rs b/tests/ui/rust-2021/reserved-prefixes-migration.rs similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-migration.rs rename to tests/ui/rust-2021/reserved-prefixes-migration.rs diff --git a/src/test/ui/rust-2021/reserved-prefixes-migration.stderr b/tests/ui/rust-2021/reserved-prefixes-migration.stderr similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-migration.stderr rename to tests/ui/rust-2021/reserved-prefixes-migration.stderr diff --git a/src/test/ui/rust-2021/reserved-prefixes-via-macro-2.rs b/tests/ui/rust-2021/reserved-prefixes-via-macro-2.rs similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-via-macro-2.rs rename to tests/ui/rust-2021/reserved-prefixes-via-macro-2.rs diff --git a/src/test/ui/rust-2021/reserved-prefixes-via-macro-2.stderr b/tests/ui/rust-2021/reserved-prefixes-via-macro-2.stderr similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-via-macro-2.stderr rename to tests/ui/rust-2021/reserved-prefixes-via-macro-2.stderr diff --git a/src/test/ui/rust-2021/reserved-prefixes-via-macro.rs b/tests/ui/rust-2021/reserved-prefixes-via-macro.rs similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes-via-macro.rs rename to tests/ui/rust-2021/reserved-prefixes-via-macro.rs diff --git a/src/test/ui/rust-2021/reserved-prefixes.rs b/tests/ui/rust-2021/reserved-prefixes.rs similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes.rs rename to tests/ui/rust-2021/reserved-prefixes.rs diff --git a/src/test/ui/rust-2021/reserved-prefixes.stderr b/tests/ui/rust-2021/reserved-prefixes.stderr similarity index 100% rename from src/test/ui/rust-2021/reserved-prefixes.stderr rename to tests/ui/rust-2021/reserved-prefixes.stderr diff --git a/src/test/ui/rustc-error.rs b/tests/ui/rustc-error.rs similarity index 100% rename from src/test/ui/rustc-error.rs rename to tests/ui/rustc-error.rs diff --git a/src/test/ui/rustc-error.stderr b/tests/ui/rustc-error.stderr similarity index 100% rename from src/test/ui/rustc-error.stderr rename to tests/ui/rustc-error.stderr diff --git a/src/test/ui/rustc-rust-log.rs b/tests/ui/rustc-rust-log.rs similarity index 100% rename from src/test/ui/rustc-rust-log.rs rename to tests/ui/rustc-rust-log.rs diff --git a/src/test/ui/rustdoc/README.md b/tests/ui/rustdoc/README.md similarity index 100% rename from src/test/ui/rustdoc/README.md rename to tests/ui/rustdoc/README.md diff --git a/src/test/ui/rustdoc/cfg-rustdoc.rs b/tests/ui/rustdoc/cfg-rustdoc.rs similarity index 100% rename from src/test/ui/rustdoc/cfg-rustdoc.rs rename to tests/ui/rustdoc/cfg-rustdoc.rs diff --git a/src/test/ui/rustdoc/cfg-rustdoc.stderr b/tests/ui/rustdoc/cfg-rustdoc.stderr similarity index 100% rename from src/test/ui/rustdoc/cfg-rustdoc.stderr rename to tests/ui/rustdoc/cfg-rustdoc.stderr diff --git a/src/test/ui/rustdoc/check-doc-alias-attr-location.rs b/tests/ui/rustdoc/check-doc-alias-attr-location.rs similarity index 100% rename from src/test/ui/rustdoc/check-doc-alias-attr-location.rs rename to tests/ui/rustdoc/check-doc-alias-attr-location.rs diff --git a/src/test/ui/rustdoc/check-doc-alias-attr-location.stderr b/tests/ui/rustdoc/check-doc-alias-attr-location.stderr similarity index 100% rename from src/test/ui/rustdoc/check-doc-alias-attr-location.stderr rename to tests/ui/rustdoc/check-doc-alias-attr-location.stderr diff --git a/src/test/ui/rustdoc/check-doc-alias-attr.rs b/tests/ui/rustdoc/check-doc-alias-attr.rs similarity index 100% rename from src/test/ui/rustdoc/check-doc-alias-attr.rs rename to tests/ui/rustdoc/check-doc-alias-attr.rs diff --git a/src/test/ui/rustdoc/check-doc-alias-attr.stderr b/tests/ui/rustdoc/check-doc-alias-attr.stderr similarity index 100% rename from src/test/ui/rustdoc/check-doc-alias-attr.stderr rename to tests/ui/rustdoc/check-doc-alias-attr.stderr diff --git a/src/test/ui/rustdoc/deny-invalid-doc-attrs.rs b/tests/ui/rustdoc/deny-invalid-doc-attrs.rs similarity index 100% rename from src/test/ui/rustdoc/deny-invalid-doc-attrs.rs rename to tests/ui/rustdoc/deny-invalid-doc-attrs.rs diff --git a/src/test/ui/rustdoc/deny-invalid-doc-attrs.stderr b/tests/ui/rustdoc/deny-invalid-doc-attrs.stderr similarity index 100% rename from src/test/ui/rustdoc/deny-invalid-doc-attrs.stderr rename to tests/ui/rustdoc/deny-invalid-doc-attrs.stderr diff --git a/src/test/ui/rustdoc/doc-alias-crate-level.rs b/tests/ui/rustdoc/doc-alias-crate-level.rs similarity index 100% rename from src/test/ui/rustdoc/doc-alias-crate-level.rs rename to tests/ui/rustdoc/doc-alias-crate-level.rs diff --git a/src/test/ui/rustdoc/doc-alias-crate-level.stderr b/tests/ui/rustdoc/doc-alias-crate-level.stderr similarity index 100% rename from src/test/ui/rustdoc/doc-alias-crate-level.stderr rename to tests/ui/rustdoc/doc-alias-crate-level.stderr diff --git a/src/test/ui/rustdoc/doc-alias-same-name.rs b/tests/ui/rustdoc/doc-alias-same-name.rs similarity index 100% rename from src/test/ui/rustdoc/doc-alias-same-name.rs rename to tests/ui/rustdoc/doc-alias-same-name.rs diff --git a/src/test/ui/rustdoc/doc-alias-same-name.stderr b/tests/ui/rustdoc/doc-alias-same-name.stderr similarity index 100% rename from src/test/ui/rustdoc/doc-alias-same-name.stderr rename to tests/ui/rustdoc/doc-alias-same-name.stderr diff --git a/src/test/ui/rustdoc/doc-inline-extern-crate.rs b/tests/ui/rustdoc/doc-inline-extern-crate.rs similarity index 100% rename from src/test/ui/rustdoc/doc-inline-extern-crate.rs rename to tests/ui/rustdoc/doc-inline-extern-crate.rs diff --git a/src/test/ui/rustdoc/doc-inline-extern-crate.stderr b/tests/ui/rustdoc/doc-inline-extern-crate.stderr similarity index 100% rename from src/test/ui/rustdoc/doc-inline-extern-crate.stderr rename to tests/ui/rustdoc/doc-inline-extern-crate.stderr diff --git a/src/test/ui/rustdoc/doc-test-attr-pass.rs b/tests/ui/rustdoc/doc-test-attr-pass.rs similarity index 100% rename from src/test/ui/rustdoc/doc-test-attr-pass.rs rename to tests/ui/rustdoc/doc-test-attr-pass.rs diff --git a/src/test/ui/rustdoc/doc-test-attr.rs b/tests/ui/rustdoc/doc-test-attr.rs similarity index 100% rename from src/test/ui/rustdoc/doc-test-attr.rs rename to tests/ui/rustdoc/doc-test-attr.rs diff --git a/src/test/ui/rustdoc/doc-test-attr.stderr b/tests/ui/rustdoc/doc-test-attr.stderr similarity index 100% rename from src/test/ui/rustdoc/doc-test-attr.stderr rename to tests/ui/rustdoc/doc-test-attr.stderr diff --git a/src/test/ui/rustdoc/doc_keyword.rs b/tests/ui/rustdoc/doc_keyword.rs similarity index 100% rename from src/test/ui/rustdoc/doc_keyword.rs rename to tests/ui/rustdoc/doc_keyword.rs diff --git a/src/test/ui/rustdoc/doc_keyword.stderr b/tests/ui/rustdoc/doc_keyword.stderr similarity index 100% rename from src/test/ui/rustdoc/doc_keyword.stderr rename to tests/ui/rustdoc/doc_keyword.stderr diff --git a/src/test/ui/rustdoc/duplicate_doc_alias.rs b/tests/ui/rustdoc/duplicate_doc_alias.rs similarity index 100% rename from src/test/ui/rustdoc/duplicate_doc_alias.rs rename to tests/ui/rustdoc/duplicate_doc_alias.rs diff --git a/src/test/ui/rustdoc/duplicate_doc_alias.stderr b/tests/ui/rustdoc/duplicate_doc_alias.stderr similarity index 100% rename from src/test/ui/rustdoc/duplicate_doc_alias.stderr rename to tests/ui/rustdoc/duplicate_doc_alias.stderr diff --git a/src/test/ui/rustdoc/feature-gate-doc_primitive.rs b/tests/ui/rustdoc/feature-gate-doc_primitive.rs similarity index 100% rename from src/test/ui/rustdoc/feature-gate-doc_primitive.rs rename to tests/ui/rustdoc/feature-gate-doc_primitive.rs diff --git a/src/test/ui/rustdoc/feature-gate-doc_primitive.stderr b/tests/ui/rustdoc/feature-gate-doc_primitive.stderr similarity index 100% rename from src/test/ui/rustdoc/feature-gate-doc_primitive.stderr rename to tests/ui/rustdoc/feature-gate-doc_primitive.stderr diff --git a/src/test/ui/rustdoc/hidden-doc-associated-item.rs b/tests/ui/rustdoc/hidden-doc-associated-item.rs similarity index 100% rename from src/test/ui/rustdoc/hidden-doc-associated-item.rs rename to tests/ui/rustdoc/hidden-doc-associated-item.rs diff --git a/src/test/ui/rustdoc/renamed-features-rustdoc_internals.rs b/tests/ui/rustdoc/renamed-features-rustdoc_internals.rs similarity index 100% rename from src/test/ui/rustdoc/renamed-features-rustdoc_internals.rs rename to tests/ui/rustdoc/renamed-features-rustdoc_internals.rs diff --git a/src/test/ui/rustdoc/renamed-features-rustdoc_internals.stderr b/tests/ui/rustdoc/renamed-features-rustdoc_internals.stderr similarity index 100% rename from src/test/ui/rustdoc/renamed-features-rustdoc_internals.stderr rename to tests/ui/rustdoc/renamed-features-rustdoc_internals.stderr diff --git a/src/test/ui/rustdoc/unterminated-doc-comment.rs b/tests/ui/rustdoc/unterminated-doc-comment.rs similarity index 100% rename from src/test/ui/rustdoc/unterminated-doc-comment.rs rename to tests/ui/rustdoc/unterminated-doc-comment.rs diff --git a/src/test/ui/rustdoc/unterminated-doc-comment.stderr b/tests/ui/rustdoc/unterminated-doc-comment.stderr similarity index 100% rename from src/test/ui/rustdoc/unterminated-doc-comment.stderr rename to tests/ui/rustdoc/unterminated-doc-comment.stderr diff --git a/src/test/ui/sanitize/address.rs b/tests/ui/sanitize/address.rs similarity index 100% rename from src/test/ui/sanitize/address.rs rename to tests/ui/sanitize/address.rs diff --git a/src/test/ui/sanitize/badfree.rs b/tests/ui/sanitize/badfree.rs similarity index 100% rename from src/test/ui/sanitize/badfree.rs rename to tests/ui/sanitize/badfree.rs diff --git a/src/test/ui/sanitize/cfg.rs b/tests/ui/sanitize/cfg.rs similarity index 100% rename from src/test/ui/sanitize/cfg.rs rename to tests/ui/sanitize/cfg.rs diff --git a/src/test/ui/sanitize/crt-static.rs b/tests/ui/sanitize/crt-static.rs similarity index 100% rename from src/test/ui/sanitize/crt-static.rs rename to tests/ui/sanitize/crt-static.rs diff --git a/src/test/ui/sanitize/crt-static.stderr b/tests/ui/sanitize/crt-static.stderr similarity index 100% rename from src/test/ui/sanitize/crt-static.stderr rename to tests/ui/sanitize/crt-static.stderr diff --git a/src/test/ui/sanitize/hwaddress.rs b/tests/ui/sanitize/hwaddress.rs similarity index 100% rename from src/test/ui/sanitize/hwaddress.rs rename to tests/ui/sanitize/hwaddress.rs diff --git a/src/test/ui/sanitize/incompatible.rs b/tests/ui/sanitize/incompatible.rs similarity index 100% rename from src/test/ui/sanitize/incompatible.rs rename to tests/ui/sanitize/incompatible.rs diff --git a/src/test/ui/sanitize/incompatible.stderr b/tests/ui/sanitize/incompatible.stderr similarity index 100% rename from src/test/ui/sanitize/incompatible.stderr rename to tests/ui/sanitize/incompatible.stderr diff --git a/src/test/ui/sanitize/inline-always.rs b/tests/ui/sanitize/inline-always.rs similarity index 100% rename from src/test/ui/sanitize/inline-always.rs rename to tests/ui/sanitize/inline-always.rs diff --git a/src/test/ui/sanitize/inline-always.stderr b/tests/ui/sanitize/inline-always.stderr similarity index 100% rename from src/test/ui/sanitize/inline-always.stderr rename to tests/ui/sanitize/inline-always.stderr diff --git a/src/test/ui/sanitize/issue-72154-lifetime-markers.rs b/tests/ui/sanitize/issue-72154-lifetime-markers.rs similarity index 100% rename from src/test/ui/sanitize/issue-72154-lifetime-markers.rs rename to tests/ui/sanitize/issue-72154-lifetime-markers.rs diff --git a/src/test/ui/sanitize/leak.rs b/tests/ui/sanitize/leak.rs similarity index 100% rename from src/test/ui/sanitize/leak.rs rename to tests/ui/sanitize/leak.rs diff --git a/src/test/ui/sanitize/memory-eager.rs b/tests/ui/sanitize/memory-eager.rs similarity index 100% rename from src/test/ui/sanitize/memory-eager.rs rename to tests/ui/sanitize/memory-eager.rs diff --git a/src/test/ui/sanitize/memory-passing.rs b/tests/ui/sanitize/memory-passing.rs similarity index 100% rename from src/test/ui/sanitize/memory-passing.rs rename to tests/ui/sanitize/memory-passing.rs diff --git a/src/test/ui/sanitize/memory.rs b/tests/ui/sanitize/memory.rs similarity index 100% rename from src/test/ui/sanitize/memory.rs rename to tests/ui/sanitize/memory.rs diff --git a/src/test/ui/sanitize/new-llvm-pass-manager-thin-lto.rs b/tests/ui/sanitize/new-llvm-pass-manager-thin-lto.rs similarity index 100% rename from src/test/ui/sanitize/new-llvm-pass-manager-thin-lto.rs rename to tests/ui/sanitize/new-llvm-pass-manager-thin-lto.rs diff --git a/src/test/ui/sanitize/thread.rs b/tests/ui/sanitize/thread.rs similarity index 100% rename from src/test/ui/sanitize/thread.rs rename to tests/ui/sanitize/thread.rs diff --git a/src/test/ui/sanitize/unsupported-target.rs b/tests/ui/sanitize/unsupported-target.rs similarity index 100% rename from src/test/ui/sanitize/unsupported-target.rs rename to tests/ui/sanitize/unsupported-target.rs diff --git a/src/test/ui/sanitize/unsupported-target.stderr b/tests/ui/sanitize/unsupported-target.stderr similarity index 100% rename from src/test/ui/sanitize/unsupported-target.stderr rename to tests/ui/sanitize/unsupported-target.stderr diff --git a/src/test/ui/sanitize/use-after-scope.rs b/tests/ui/sanitize/use-after-scope.rs similarity index 100% rename from src/test/ui/sanitize/use-after-scope.rs rename to tests/ui/sanitize/use-after-scope.rs diff --git a/src/test/ui/save-analysis/emit-notifications.polonius.stderr b/tests/ui/save-analysis/emit-notifications.polonius.stderr similarity index 100% rename from src/test/ui/save-analysis/emit-notifications.polonius.stderr rename to tests/ui/save-analysis/emit-notifications.polonius.stderr diff --git a/src/test/ui/save-analysis/emit-notifications.rs b/tests/ui/save-analysis/emit-notifications.rs similarity index 100% rename from src/test/ui/save-analysis/emit-notifications.rs rename to tests/ui/save-analysis/emit-notifications.rs diff --git a/src/test/ui/save-analysis/emit-notifications.stderr b/tests/ui/save-analysis/emit-notifications.stderr similarity index 100% rename from src/test/ui/save-analysis/emit-notifications.stderr rename to tests/ui/save-analysis/emit-notifications.stderr diff --git a/src/test/ui/save-analysis/issue-26459.rs b/tests/ui/save-analysis/issue-26459.rs similarity index 100% rename from src/test/ui/save-analysis/issue-26459.rs rename to tests/ui/save-analysis/issue-26459.rs diff --git a/src/test/ui/save-analysis/issue-26459.stderr b/tests/ui/save-analysis/issue-26459.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-26459.stderr rename to tests/ui/save-analysis/issue-26459.stderr diff --git a/src/test/ui/save-analysis/issue-37323.rs b/tests/ui/save-analysis/issue-37323.rs similarity index 100% rename from src/test/ui/save-analysis/issue-37323.rs rename to tests/ui/save-analysis/issue-37323.rs diff --git a/src/test/ui/save-analysis/issue-59134-0.rs b/tests/ui/save-analysis/issue-59134-0.rs similarity index 100% rename from src/test/ui/save-analysis/issue-59134-0.rs rename to tests/ui/save-analysis/issue-59134-0.rs diff --git a/src/test/ui/save-analysis/issue-59134-0.stderr b/tests/ui/save-analysis/issue-59134-0.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-59134-0.stderr rename to tests/ui/save-analysis/issue-59134-0.stderr diff --git a/src/test/ui/save-analysis/issue-59134-1.rs b/tests/ui/save-analysis/issue-59134-1.rs similarity index 100% rename from src/test/ui/save-analysis/issue-59134-1.rs rename to tests/ui/save-analysis/issue-59134-1.rs diff --git a/src/test/ui/save-analysis/issue-59134-1.stderr b/tests/ui/save-analysis/issue-59134-1.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-59134-1.stderr rename to tests/ui/save-analysis/issue-59134-1.stderr diff --git a/src/test/ui/save-analysis/issue-63663.rs b/tests/ui/save-analysis/issue-63663.rs similarity index 100% rename from src/test/ui/save-analysis/issue-63663.rs rename to tests/ui/save-analysis/issue-63663.rs diff --git a/src/test/ui/save-analysis/issue-64659.rs b/tests/ui/save-analysis/issue-64659.rs similarity index 100% rename from src/test/ui/save-analysis/issue-64659.rs rename to tests/ui/save-analysis/issue-64659.rs diff --git a/src/test/ui/save-analysis/issue-65411.rs b/tests/ui/save-analysis/issue-65411.rs similarity index 100% rename from src/test/ui/save-analysis/issue-65411.rs rename to tests/ui/save-analysis/issue-65411.rs diff --git a/src/test/ui/save-analysis/issue-65590.rs b/tests/ui/save-analysis/issue-65590.rs similarity index 100% rename from src/test/ui/save-analysis/issue-65590.rs rename to tests/ui/save-analysis/issue-65590.rs diff --git a/src/test/ui/save-analysis/issue-68621.rs b/tests/ui/save-analysis/issue-68621.rs similarity index 100% rename from src/test/ui/save-analysis/issue-68621.rs rename to tests/ui/save-analysis/issue-68621.rs diff --git a/src/test/ui/save-analysis/issue-68621.stderr b/tests/ui/save-analysis/issue-68621.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-68621.stderr rename to tests/ui/save-analysis/issue-68621.stderr diff --git a/src/test/ui/save-analysis/issue-72267.rs b/tests/ui/save-analysis/issue-72267.rs similarity index 100% rename from src/test/ui/save-analysis/issue-72267.rs rename to tests/ui/save-analysis/issue-72267.rs diff --git a/src/test/ui/save-analysis/issue-72267.stderr b/tests/ui/save-analysis/issue-72267.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-72267.stderr rename to tests/ui/save-analysis/issue-72267.stderr diff --git a/src/test/ui/save-analysis/issue-73020.rs b/tests/ui/save-analysis/issue-73020.rs similarity index 100% rename from src/test/ui/save-analysis/issue-73020.rs rename to tests/ui/save-analysis/issue-73020.rs diff --git a/src/test/ui/save-analysis/issue-73020.stderr b/tests/ui/save-analysis/issue-73020.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-73020.stderr rename to tests/ui/save-analysis/issue-73020.stderr diff --git a/src/test/ui/save-analysis/issue-73022.rs b/tests/ui/save-analysis/issue-73022.rs similarity index 100% rename from src/test/ui/save-analysis/issue-73022.rs rename to tests/ui/save-analysis/issue-73022.rs diff --git a/src/test/ui/save-analysis/issue-89066.rs b/tests/ui/save-analysis/issue-89066.rs similarity index 100% rename from src/test/ui/save-analysis/issue-89066.rs rename to tests/ui/save-analysis/issue-89066.rs diff --git a/src/test/ui/save-analysis/issue-89066.stderr b/tests/ui/save-analysis/issue-89066.stderr similarity index 100% rename from src/test/ui/save-analysis/issue-89066.stderr rename to tests/ui/save-analysis/issue-89066.stderr diff --git a/src/test/ui/self/arbitrary-self-types-not-object-safe.curr.stderr b/tests/ui/self/arbitrary-self-types-not-object-safe.curr.stderr similarity index 100% rename from src/test/ui/self/arbitrary-self-types-not-object-safe.curr.stderr rename to tests/ui/self/arbitrary-self-types-not-object-safe.curr.stderr diff --git a/src/test/ui/self/arbitrary-self-types-not-object-safe.object_safe_for_dispatch.stderr b/tests/ui/self/arbitrary-self-types-not-object-safe.object_safe_for_dispatch.stderr similarity index 100% rename from src/test/ui/self/arbitrary-self-types-not-object-safe.object_safe_for_dispatch.stderr rename to tests/ui/self/arbitrary-self-types-not-object-safe.object_safe_for_dispatch.stderr diff --git a/src/test/ui/self/arbitrary-self-types-not-object-safe.rs b/tests/ui/self/arbitrary-self-types-not-object-safe.rs similarity index 100% rename from src/test/ui/self/arbitrary-self-types-not-object-safe.rs rename to tests/ui/self/arbitrary-self-types-not-object-safe.rs diff --git a/src/test/ui/self/arbitrary_self_types_nested.rs b/tests/ui/self/arbitrary_self_types_nested.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_nested.rs rename to tests/ui/self/arbitrary_self_types_nested.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime-async.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime-async.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime-async.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime-async.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.stderr b/tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.stderr similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.stderr rename to tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.stderr diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.stderr b/tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.stderr similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.stderr rename to tests/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.stderr diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.stderr b/tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.stderr similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.stderr rename to tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch-async.stderr diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch.rs b/tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch.rs rename to tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch.rs diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch.stderr b/tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch.stderr similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pin_lifetime_mismatch.stderr rename to tests/ui/self/arbitrary_self_types_pin_lifetime_mismatch.stderr diff --git a/src/test/ui/self/arbitrary_self_types_pointers_and_wrappers.rs b/tests/ui/self/arbitrary_self_types_pointers_and_wrappers.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_pointers_and_wrappers.rs rename to tests/ui/self/arbitrary_self_types_pointers_and_wrappers.rs diff --git a/src/test/ui/self/arbitrary_self_types_raw_pointer_struct.rs b/tests/ui/self/arbitrary_self_types_raw_pointer_struct.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_raw_pointer_struct.rs rename to tests/ui/self/arbitrary_self_types_raw_pointer_struct.rs diff --git a/src/test/ui/self/arbitrary_self_types_raw_pointer_trait.rs b/tests/ui/self/arbitrary_self_types_raw_pointer_trait.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_raw_pointer_trait.rs rename to tests/ui/self/arbitrary_self_types_raw_pointer_trait.rs diff --git a/src/test/ui/self/arbitrary_self_types_silly.rs b/tests/ui/self/arbitrary_self_types_silly.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_silly.rs rename to tests/ui/self/arbitrary_self_types_silly.rs diff --git a/src/test/ui/self/arbitrary_self_types_stdlib_pointers.rs b/tests/ui/self/arbitrary_self_types_stdlib_pointers.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_stdlib_pointers.rs rename to tests/ui/self/arbitrary_self_types_stdlib_pointers.rs diff --git a/src/test/ui/self/arbitrary_self_types_struct.rs b/tests/ui/self/arbitrary_self_types_struct.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_struct.rs rename to tests/ui/self/arbitrary_self_types_struct.rs diff --git a/src/test/ui/self/arbitrary_self_types_trait.rs b/tests/ui/self/arbitrary_self_types_trait.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_trait.rs rename to tests/ui/self/arbitrary_self_types_trait.rs diff --git a/src/test/ui/self/arbitrary_self_types_unsized_struct.rs b/tests/ui/self/arbitrary_self_types_unsized_struct.rs similarity index 100% rename from src/test/ui/self/arbitrary_self_types_unsized_struct.rs rename to tests/ui/self/arbitrary_self_types_unsized_struct.rs diff --git a/src/test/ui/self/auxiliary/explicit_self_xcrate.rs b/tests/ui/self/auxiliary/explicit_self_xcrate.rs similarity index 100% rename from src/test/ui/self/auxiliary/explicit_self_xcrate.rs rename to tests/ui/self/auxiliary/explicit_self_xcrate.rs diff --git a/src/test/ui/self/builtin-superkinds-self-type.rs b/tests/ui/self/builtin-superkinds-self-type.rs similarity index 100% rename from src/test/ui/self/builtin-superkinds-self-type.rs rename to tests/ui/self/builtin-superkinds-self-type.rs diff --git a/src/test/ui/self/by-value-self-in-mut-slot.rs b/tests/ui/self/by-value-self-in-mut-slot.rs similarity index 100% rename from src/test/ui/self/by-value-self-in-mut-slot.rs rename to tests/ui/self/by-value-self-in-mut-slot.rs diff --git a/src/test/ui/self/class-missing-self.rs b/tests/ui/self/class-missing-self.rs similarity index 100% rename from src/test/ui/self/class-missing-self.rs rename to tests/ui/self/class-missing-self.rs diff --git a/src/test/ui/self/class-missing-self.stderr b/tests/ui/self/class-missing-self.stderr similarity index 100% rename from src/test/ui/self/class-missing-self.stderr rename to tests/ui/self/class-missing-self.stderr diff --git a/src/test/ui/self/elision/README.md b/tests/ui/self/elision/README.md similarity index 100% rename from src/test/ui/self/elision/README.md rename to tests/ui/self/elision/README.md diff --git a/src/test/ui/self/elision/alias-async.rs b/tests/ui/self/elision/alias-async.rs similarity index 100% rename from src/test/ui/self/elision/alias-async.rs rename to tests/ui/self/elision/alias-async.rs diff --git a/src/test/ui/self/elision/alias.rs b/tests/ui/self/elision/alias.rs similarity index 100% rename from src/test/ui/self/elision/alias.rs rename to tests/ui/self/elision/alias.rs diff --git a/src/test/ui/self/elision/assoc-async.rs b/tests/ui/self/elision/assoc-async.rs similarity index 100% rename from src/test/ui/self/elision/assoc-async.rs rename to tests/ui/self/elision/assoc-async.rs diff --git a/src/test/ui/self/elision/assoc.rs b/tests/ui/self/elision/assoc.rs similarity index 100% rename from src/test/ui/self/elision/assoc.rs rename to tests/ui/self/elision/assoc.rs diff --git a/src/test/ui/self/elision/lt-alias-async.rs b/tests/ui/self/elision/lt-alias-async.rs similarity index 100% rename from src/test/ui/self/elision/lt-alias-async.rs rename to tests/ui/self/elision/lt-alias-async.rs diff --git a/src/test/ui/self/elision/lt-alias.rs b/tests/ui/self/elision/lt-alias.rs similarity index 100% rename from src/test/ui/self/elision/lt-alias.rs rename to tests/ui/self/elision/lt-alias.rs diff --git a/src/test/ui/self/elision/lt-assoc-async.rs b/tests/ui/self/elision/lt-assoc-async.rs similarity index 100% rename from src/test/ui/self/elision/lt-assoc-async.rs rename to tests/ui/self/elision/lt-assoc-async.rs diff --git a/src/test/ui/self/elision/lt-assoc.rs b/tests/ui/self/elision/lt-assoc.rs similarity index 100% rename from src/test/ui/self/elision/lt-assoc.rs rename to tests/ui/self/elision/lt-assoc.rs diff --git a/src/test/ui/self/elision/lt-ref-self-async.rs b/tests/ui/self/elision/lt-ref-self-async.rs similarity index 100% rename from src/test/ui/self/elision/lt-ref-self-async.rs rename to tests/ui/self/elision/lt-ref-self-async.rs diff --git a/src/test/ui/self/elision/lt-ref-self-async.stderr b/tests/ui/self/elision/lt-ref-self-async.stderr similarity index 100% rename from src/test/ui/self/elision/lt-ref-self-async.stderr rename to tests/ui/self/elision/lt-ref-self-async.stderr diff --git a/src/test/ui/self/elision/lt-ref-self.rs b/tests/ui/self/elision/lt-ref-self.rs similarity index 100% rename from src/test/ui/self/elision/lt-ref-self.rs rename to tests/ui/self/elision/lt-ref-self.rs diff --git a/src/test/ui/self/elision/lt-ref-self.stderr b/tests/ui/self/elision/lt-ref-self.stderr similarity index 100% rename from src/test/ui/self/elision/lt-ref-self.stderr rename to tests/ui/self/elision/lt-ref-self.stderr diff --git a/src/test/ui/self/elision/lt-self-async.rs b/tests/ui/self/elision/lt-self-async.rs similarity index 100% rename from src/test/ui/self/elision/lt-self-async.rs rename to tests/ui/self/elision/lt-self-async.rs diff --git a/src/test/ui/self/elision/lt-self.rs b/tests/ui/self/elision/lt-self.rs similarity index 100% rename from src/test/ui/self/elision/lt-self.rs rename to tests/ui/self/elision/lt-self.rs diff --git a/src/test/ui/self/elision/lt-struct-async.rs b/tests/ui/self/elision/lt-struct-async.rs similarity index 100% rename from src/test/ui/self/elision/lt-struct-async.rs rename to tests/ui/self/elision/lt-struct-async.rs diff --git a/src/test/ui/self/elision/lt-struct.rs b/tests/ui/self/elision/lt-struct.rs similarity index 100% rename from src/test/ui/self/elision/lt-struct.rs rename to tests/ui/self/elision/lt-struct.rs diff --git a/src/test/ui/self/elision/multiple-ref-self-async.rs b/tests/ui/self/elision/multiple-ref-self-async.rs similarity index 100% rename from src/test/ui/self/elision/multiple-ref-self-async.rs rename to tests/ui/self/elision/multiple-ref-self-async.rs diff --git a/src/test/ui/self/elision/multiple-ref-self.rs b/tests/ui/self/elision/multiple-ref-self.rs similarity index 100% rename from src/test/ui/self/elision/multiple-ref-self.rs rename to tests/ui/self/elision/multiple-ref-self.rs diff --git a/src/test/ui/self/elision/ref-alias-async.rs b/tests/ui/self/elision/ref-alias-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-alias-async.rs rename to tests/ui/self/elision/ref-alias-async.rs diff --git a/src/test/ui/self/elision/ref-alias.rs b/tests/ui/self/elision/ref-alias.rs similarity index 100% rename from src/test/ui/self/elision/ref-alias.rs rename to tests/ui/self/elision/ref-alias.rs diff --git a/src/test/ui/self/elision/ref-assoc-async.rs b/tests/ui/self/elision/ref-assoc-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-assoc-async.rs rename to tests/ui/self/elision/ref-assoc-async.rs diff --git a/src/test/ui/self/elision/ref-assoc.rs b/tests/ui/self/elision/ref-assoc.rs similarity index 100% rename from src/test/ui/self/elision/ref-assoc.rs rename to tests/ui/self/elision/ref-assoc.rs diff --git a/src/test/ui/self/elision/ref-mut-alias-async.rs b/tests/ui/self/elision/ref-mut-alias-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-alias-async.rs rename to tests/ui/self/elision/ref-mut-alias-async.rs diff --git a/src/test/ui/self/elision/ref-mut-alias.rs b/tests/ui/self/elision/ref-mut-alias.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-alias.rs rename to tests/ui/self/elision/ref-mut-alias.rs diff --git a/src/test/ui/self/elision/ref-mut-self-async.rs b/tests/ui/self/elision/ref-mut-self-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-self-async.rs rename to tests/ui/self/elision/ref-mut-self-async.rs diff --git a/src/test/ui/self/elision/ref-mut-self-async.stderr b/tests/ui/self/elision/ref-mut-self-async.stderr similarity index 100% rename from src/test/ui/self/elision/ref-mut-self-async.stderr rename to tests/ui/self/elision/ref-mut-self-async.stderr diff --git a/src/test/ui/self/elision/ref-mut-self.rs b/tests/ui/self/elision/ref-mut-self.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-self.rs rename to tests/ui/self/elision/ref-mut-self.rs diff --git a/src/test/ui/self/elision/ref-mut-self.stderr b/tests/ui/self/elision/ref-mut-self.stderr similarity index 100% rename from src/test/ui/self/elision/ref-mut-self.stderr rename to tests/ui/self/elision/ref-mut-self.stderr diff --git a/src/test/ui/self/elision/ref-mut-struct-async.rs b/tests/ui/self/elision/ref-mut-struct-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-struct-async.rs rename to tests/ui/self/elision/ref-mut-struct-async.rs diff --git a/src/test/ui/self/elision/ref-mut-struct-async.stderr b/tests/ui/self/elision/ref-mut-struct-async.stderr similarity index 100% rename from src/test/ui/self/elision/ref-mut-struct-async.stderr rename to tests/ui/self/elision/ref-mut-struct-async.stderr diff --git a/src/test/ui/self/elision/ref-mut-struct.rs b/tests/ui/self/elision/ref-mut-struct.rs similarity index 100% rename from src/test/ui/self/elision/ref-mut-struct.rs rename to tests/ui/self/elision/ref-mut-struct.rs diff --git a/src/test/ui/self/elision/ref-mut-struct.stderr b/tests/ui/self/elision/ref-mut-struct.stderr similarity index 100% rename from src/test/ui/self/elision/ref-mut-struct.stderr rename to tests/ui/self/elision/ref-mut-struct.stderr diff --git a/src/test/ui/self/elision/ref-self-async.rs b/tests/ui/self/elision/ref-self-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-self-async.rs rename to tests/ui/self/elision/ref-self-async.rs diff --git a/src/test/ui/self/elision/ref-self-async.stderr b/tests/ui/self/elision/ref-self-async.stderr similarity index 100% rename from src/test/ui/self/elision/ref-self-async.stderr rename to tests/ui/self/elision/ref-self-async.stderr diff --git a/src/test/ui/self/elision/ref-self.rs b/tests/ui/self/elision/ref-self.rs similarity index 100% rename from src/test/ui/self/elision/ref-self.rs rename to tests/ui/self/elision/ref-self.rs diff --git a/src/test/ui/self/elision/ref-self.stderr b/tests/ui/self/elision/ref-self.stderr similarity index 100% rename from src/test/ui/self/elision/ref-self.stderr rename to tests/ui/self/elision/ref-self.stderr diff --git a/src/test/ui/self/elision/ref-struct-async.rs b/tests/ui/self/elision/ref-struct-async.rs similarity index 100% rename from src/test/ui/self/elision/ref-struct-async.rs rename to tests/ui/self/elision/ref-struct-async.rs diff --git a/src/test/ui/self/elision/ref-struct-async.stderr b/tests/ui/self/elision/ref-struct-async.stderr similarity index 100% rename from src/test/ui/self/elision/ref-struct-async.stderr rename to tests/ui/self/elision/ref-struct-async.stderr diff --git a/src/test/ui/self/elision/ref-struct.rs b/tests/ui/self/elision/ref-struct.rs similarity index 100% rename from src/test/ui/self/elision/ref-struct.rs rename to tests/ui/self/elision/ref-struct.rs diff --git a/src/test/ui/self/elision/ref-struct.stderr b/tests/ui/self/elision/ref-struct.stderr similarity index 100% rename from src/test/ui/self/elision/ref-struct.stderr rename to tests/ui/self/elision/ref-struct.stderr diff --git a/src/test/ui/self/elision/self-async.rs b/tests/ui/self/elision/self-async.rs similarity index 100% rename from src/test/ui/self/elision/self-async.rs rename to tests/ui/self/elision/self-async.rs diff --git a/src/test/ui/self/elision/self.rs b/tests/ui/self/elision/self.rs similarity index 100% rename from src/test/ui/self/elision/self.rs rename to tests/ui/self/elision/self.rs diff --git a/src/test/ui/self/elision/struct-async.rs b/tests/ui/self/elision/struct-async.rs similarity index 100% rename from src/test/ui/self/elision/struct-async.rs rename to tests/ui/self/elision/struct-async.rs diff --git a/src/test/ui/self/elision/struct.rs b/tests/ui/self/elision/struct.rs similarity index 100% rename from src/test/ui/self/elision/struct.rs rename to tests/ui/self/elision/struct.rs diff --git a/src/test/ui/self/explicit-self-closures.rs b/tests/ui/self/explicit-self-closures.rs similarity index 100% rename from src/test/ui/self/explicit-self-closures.rs rename to tests/ui/self/explicit-self-closures.rs diff --git a/src/test/ui/self/explicit-self-generic.rs b/tests/ui/self/explicit-self-generic.rs similarity index 100% rename from src/test/ui/self/explicit-self-generic.rs rename to tests/ui/self/explicit-self-generic.rs diff --git a/src/test/ui/self/explicit-self-objects-uniq.rs b/tests/ui/self/explicit-self-objects-uniq.rs similarity index 100% rename from src/test/ui/self/explicit-self-objects-uniq.rs rename to tests/ui/self/explicit-self-objects-uniq.rs diff --git a/src/test/ui/self/explicit-self.rs b/tests/ui/self/explicit-self.rs similarity index 100% rename from src/test/ui/self/explicit-self.rs rename to tests/ui/self/explicit-self.rs diff --git a/src/test/ui/self/explicit_self_xcrate_exe.rs b/tests/ui/self/explicit_self_xcrate_exe.rs similarity index 100% rename from src/test/ui/self/explicit_self_xcrate_exe.rs rename to tests/ui/self/explicit_self_xcrate_exe.rs diff --git a/src/test/ui/self/issue-61882-2.rs b/tests/ui/self/issue-61882-2.rs similarity index 100% rename from src/test/ui/self/issue-61882-2.rs rename to tests/ui/self/issue-61882-2.rs diff --git a/src/test/ui/self/issue-61882-2.stderr b/tests/ui/self/issue-61882-2.stderr similarity index 100% rename from src/test/ui/self/issue-61882-2.stderr rename to tests/ui/self/issue-61882-2.stderr diff --git a/src/test/ui/self/issue-61882.rs b/tests/ui/self/issue-61882.rs similarity index 100% rename from src/test/ui/self/issue-61882.rs rename to tests/ui/self/issue-61882.rs diff --git a/src/test/ui/self/issue-61882.stderr b/tests/ui/self/issue-61882.stderr similarity index 100% rename from src/test/ui/self/issue-61882.stderr rename to tests/ui/self/issue-61882.stderr diff --git a/src/test/ui/self/move-self.rs b/tests/ui/self/move-self.rs similarity index 100% rename from src/test/ui/self/move-self.rs rename to tests/ui/self/move-self.rs diff --git a/src/test/ui/self/object-safety-sized-self-by-value-self.rs b/tests/ui/self/object-safety-sized-self-by-value-self.rs similarity index 100% rename from src/test/ui/self/object-safety-sized-self-by-value-self.rs rename to tests/ui/self/object-safety-sized-self-by-value-self.rs diff --git a/src/test/ui/self/object-safety-sized-self-generic-method.rs b/tests/ui/self/object-safety-sized-self-generic-method.rs similarity index 100% rename from src/test/ui/self/object-safety-sized-self-generic-method.rs rename to tests/ui/self/object-safety-sized-self-generic-method.rs diff --git a/src/test/ui/self/object-safety-sized-self-return-Self.rs b/tests/ui/self/object-safety-sized-self-return-Self.rs similarity index 100% rename from src/test/ui/self/object-safety-sized-self-return-Self.rs rename to tests/ui/self/object-safety-sized-self-return-Self.rs diff --git a/src/test/ui/self/objects-owned-object-owned-method.rs b/tests/ui/self/objects-owned-object-owned-method.rs similarity index 100% rename from src/test/ui/self/objects-owned-object-owned-method.rs rename to tests/ui/self/objects-owned-object-owned-method.rs diff --git a/src/test/ui/self/point-at-arbitrary-self-type-method.rs b/tests/ui/self/point-at-arbitrary-self-type-method.rs similarity index 100% rename from src/test/ui/self/point-at-arbitrary-self-type-method.rs rename to tests/ui/self/point-at-arbitrary-self-type-method.rs diff --git a/src/test/ui/self/point-at-arbitrary-self-type-method.stderr b/tests/ui/self/point-at-arbitrary-self-type-method.stderr similarity index 100% rename from src/test/ui/self/point-at-arbitrary-self-type-method.stderr rename to tests/ui/self/point-at-arbitrary-self-type-method.stderr diff --git a/src/test/ui/self/point-at-arbitrary-self-type-trait-method.rs b/tests/ui/self/point-at-arbitrary-self-type-trait-method.rs similarity index 100% rename from src/test/ui/self/point-at-arbitrary-self-type-trait-method.rs rename to tests/ui/self/point-at-arbitrary-self-type-trait-method.rs diff --git a/src/test/ui/self/point-at-arbitrary-self-type-trait-method.stderr b/tests/ui/self/point-at-arbitrary-self-type-trait-method.stderr similarity index 100% rename from src/test/ui/self/point-at-arbitrary-self-type-trait-method.stderr rename to tests/ui/self/point-at-arbitrary-self-type-trait-method.stderr diff --git a/src/test/ui/self/self-impl-2.rs b/tests/ui/self/self-impl-2.rs similarity index 100% rename from src/test/ui/self/self-impl-2.rs rename to tests/ui/self/self-impl-2.rs diff --git a/src/test/ui/self/self-impl.rs b/tests/ui/self/self-impl.rs similarity index 100% rename from src/test/ui/self/self-impl.rs rename to tests/ui/self/self-impl.rs diff --git a/src/test/ui/self/self-impl.stderr b/tests/ui/self/self-impl.stderr similarity index 100% rename from src/test/ui/self/self-impl.stderr rename to tests/ui/self/self-impl.stderr diff --git a/src/test/ui/self/self-in-mut-slot-default-method.rs b/tests/ui/self/self-in-mut-slot-default-method.rs similarity index 100% rename from src/test/ui/self/self-in-mut-slot-default-method.rs rename to tests/ui/self/self-in-mut-slot-default-method.rs diff --git a/src/test/ui/self/self-in-mut-slot-immediate-value.rs b/tests/ui/self/self-in-mut-slot-immediate-value.rs similarity index 100% rename from src/test/ui/self/self-in-mut-slot-immediate-value.rs rename to tests/ui/self/self-in-mut-slot-immediate-value.rs diff --git a/src/test/ui/self/self-in-typedefs.rs b/tests/ui/self/self-in-typedefs.rs similarity index 100% rename from src/test/ui/self/self-in-typedefs.rs rename to tests/ui/self/self-in-typedefs.rs diff --git a/src/test/ui/self/self-infer.rs b/tests/ui/self/self-infer.rs similarity index 100% rename from src/test/ui/self/self-infer.rs rename to tests/ui/self/self-infer.rs diff --git a/src/test/ui/self/self-infer.stderr b/tests/ui/self/self-infer.stderr similarity index 100% rename from src/test/ui/self/self-infer.stderr rename to tests/ui/self/self-infer.stderr diff --git a/src/test/ui/self/self-re-assign.rs b/tests/ui/self/self-re-assign.rs similarity index 100% rename from src/test/ui/self/self-re-assign.rs rename to tests/ui/self/self-re-assign.rs diff --git a/src/test/ui/self/self-shadowing-import.rs b/tests/ui/self/self-shadowing-import.rs similarity index 100% rename from src/test/ui/self/self-shadowing-import.rs rename to tests/ui/self/self-shadowing-import.rs diff --git a/src/test/ui/self/self-type-param.rs b/tests/ui/self/self-type-param.rs similarity index 100% rename from src/test/ui/self/self-type-param.rs rename to tests/ui/self/self-type-param.rs diff --git a/src/test/ui/self/self-vs-path-ambiguity.rs b/tests/ui/self/self-vs-path-ambiguity.rs similarity index 100% rename from src/test/ui/self/self-vs-path-ambiguity.rs rename to tests/ui/self/self-vs-path-ambiguity.rs diff --git a/src/test/ui/self/self-vs-path-ambiguity.stderr b/tests/ui/self/self-vs-path-ambiguity.stderr similarity index 100% rename from src/test/ui/self/self-vs-path-ambiguity.stderr rename to tests/ui/self/self-vs-path-ambiguity.stderr diff --git a/src/test/ui/self/self_lifetime-async.rs b/tests/ui/self/self_lifetime-async.rs similarity index 100% rename from src/test/ui/self/self_lifetime-async.rs rename to tests/ui/self/self_lifetime-async.rs diff --git a/src/test/ui/self/self_lifetime.rs b/tests/ui/self/self_lifetime.rs similarity index 100% rename from src/test/ui/self/self_lifetime.rs rename to tests/ui/self/self_lifetime.rs diff --git a/src/test/ui/self/self_type_keyword-2.rs b/tests/ui/self/self_type_keyword-2.rs similarity index 100% rename from src/test/ui/self/self_type_keyword-2.rs rename to tests/ui/self/self_type_keyword-2.rs diff --git a/src/test/ui/self/self_type_keyword-2.stderr b/tests/ui/self/self_type_keyword-2.stderr similarity index 100% rename from src/test/ui/self/self_type_keyword-2.stderr rename to tests/ui/self/self_type_keyword-2.stderr diff --git a/src/test/ui/self/self_type_keyword.rs b/tests/ui/self/self_type_keyword.rs similarity index 100% rename from src/test/ui/self/self_type_keyword.rs rename to tests/ui/self/self_type_keyword.rs diff --git a/src/test/ui/self/self_type_keyword.stderr b/tests/ui/self/self_type_keyword.stderr similarity index 100% rename from src/test/ui/self/self_type_keyword.stderr rename to tests/ui/self/self_type_keyword.stderr diff --git a/src/test/ui/self/string-self-append.rs b/tests/ui/self/string-self-append.rs similarity index 100% rename from src/test/ui/self/string-self-append.rs rename to tests/ui/self/string-self-append.rs diff --git a/src/test/ui/self/suggest-self-2.rs b/tests/ui/self/suggest-self-2.rs similarity index 100% rename from src/test/ui/self/suggest-self-2.rs rename to tests/ui/self/suggest-self-2.rs diff --git a/src/test/ui/self/suggest-self-2.stderr b/tests/ui/self/suggest-self-2.stderr similarity index 100% rename from src/test/ui/self/suggest-self-2.stderr rename to tests/ui/self/suggest-self-2.stderr diff --git a/src/test/ui/self/suggest-self.rs b/tests/ui/self/suggest-self.rs similarity index 100% rename from src/test/ui/self/suggest-self.rs rename to tests/ui/self/suggest-self.rs diff --git a/src/test/ui/self/suggest-self.stderr b/tests/ui/self/suggest-self.stderr similarity index 100% rename from src/test/ui/self/suggest-self.stderr rename to tests/ui/self/suggest-self.stderr diff --git a/src/test/ui/self/ufcs-explicit-self.rs b/tests/ui/self/ufcs-explicit-self.rs similarity index 100% rename from src/test/ui/self/ufcs-explicit-self.rs rename to tests/ui/self/ufcs-explicit-self.rs diff --git a/src/test/ui/self/uniq-self-in-mut-slot.rs b/tests/ui/self/uniq-self-in-mut-slot.rs similarity index 100% rename from src/test/ui/self/uniq-self-in-mut-slot.rs rename to tests/ui/self/uniq-self-in-mut-slot.rs diff --git a/src/test/ui/self/where-for-self.rs b/tests/ui/self/where-for-self.rs similarity index 100% rename from src/test/ui/self/where-for-self.rs rename to tests/ui/self/where-for-self.rs diff --git a/src/test/ui/sepcomp/auxiliary/sepcomp-extern-lib.rs b/tests/ui/sepcomp/auxiliary/sepcomp-extern-lib.rs similarity index 100% rename from src/test/ui/sepcomp/auxiliary/sepcomp-extern-lib.rs rename to tests/ui/sepcomp/auxiliary/sepcomp-extern-lib.rs diff --git a/src/test/ui/sepcomp/auxiliary/sepcomp_cci_lib.rs b/tests/ui/sepcomp/auxiliary/sepcomp_cci_lib.rs similarity index 100% rename from src/test/ui/sepcomp/auxiliary/sepcomp_cci_lib.rs rename to tests/ui/sepcomp/auxiliary/sepcomp_cci_lib.rs diff --git a/src/test/ui/sepcomp/auxiliary/sepcomp_lib.rs b/tests/ui/sepcomp/auxiliary/sepcomp_lib.rs similarity index 100% rename from src/test/ui/sepcomp/auxiliary/sepcomp_lib.rs rename to tests/ui/sepcomp/auxiliary/sepcomp_lib.rs diff --git a/src/test/ui/sepcomp/sepcomp-cci.rs b/tests/ui/sepcomp/sepcomp-cci.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-cci.rs rename to tests/ui/sepcomp/sepcomp-cci.rs diff --git a/src/test/ui/sepcomp/sepcomp-extern.rs b/tests/ui/sepcomp/sepcomp-extern.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-extern.rs rename to tests/ui/sepcomp/sepcomp-extern.rs diff --git a/src/test/ui/sepcomp/sepcomp-fns-backwards.rs b/tests/ui/sepcomp/sepcomp-fns-backwards.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-fns-backwards.rs rename to tests/ui/sepcomp/sepcomp-fns-backwards.rs diff --git a/src/test/ui/sepcomp/sepcomp-fns.rs b/tests/ui/sepcomp/sepcomp-fns.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-fns.rs rename to tests/ui/sepcomp/sepcomp-fns.rs diff --git a/src/test/ui/sepcomp/sepcomp-lib-lto.rs b/tests/ui/sepcomp/sepcomp-lib-lto.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-lib-lto.rs rename to tests/ui/sepcomp/sepcomp-lib-lto.rs diff --git a/src/test/ui/sepcomp/sepcomp-lib.rs b/tests/ui/sepcomp/sepcomp-lib.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-lib.rs rename to tests/ui/sepcomp/sepcomp-lib.rs diff --git a/src/test/ui/sepcomp/sepcomp-statics.rs b/tests/ui/sepcomp/sepcomp-statics.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-statics.rs rename to tests/ui/sepcomp/sepcomp-statics.rs diff --git a/src/test/ui/sepcomp/sepcomp-unwind.rs b/tests/ui/sepcomp/sepcomp-unwind.rs similarity index 100% rename from src/test/ui/sepcomp/sepcomp-unwind.rs rename to tests/ui/sepcomp/sepcomp-unwind.rs diff --git a/src/test/ui/seq-args.rs b/tests/ui/seq-args.rs similarity index 100% rename from src/test/ui/seq-args.rs rename to tests/ui/seq-args.rs diff --git a/src/test/ui/seq-args.stderr b/tests/ui/seq-args.stderr similarity index 100% rename from src/test/ui/seq-args.stderr rename to tests/ui/seq-args.stderr diff --git a/src/test/ui/shadow-bool.rs b/tests/ui/shadow-bool.rs similarity index 100% rename from src/test/ui/shadow-bool.rs rename to tests/ui/shadow-bool.rs diff --git a/src/test/ui/shadowed-use-visibility.rs b/tests/ui/shadowed-use-visibility.rs similarity index 100% rename from src/test/ui/shadowed-use-visibility.rs rename to tests/ui/shadowed-use-visibility.rs diff --git a/src/test/ui/shadowed/shadowed-lifetime.rs b/tests/ui/shadowed/shadowed-lifetime.rs similarity index 100% rename from src/test/ui/shadowed/shadowed-lifetime.rs rename to tests/ui/shadowed/shadowed-lifetime.rs diff --git a/src/test/ui/shadowed/shadowed-lifetime.stderr b/tests/ui/shadowed/shadowed-lifetime.stderr similarity index 100% rename from src/test/ui/shadowed/shadowed-lifetime.stderr rename to tests/ui/shadowed/shadowed-lifetime.stderr diff --git a/src/test/ui/shadowed/shadowed-trait-methods.rs b/tests/ui/shadowed/shadowed-trait-methods.rs similarity index 100% rename from src/test/ui/shadowed/shadowed-trait-methods.rs rename to tests/ui/shadowed/shadowed-trait-methods.rs diff --git a/src/test/ui/shadowed/shadowed-trait-methods.stderr b/tests/ui/shadowed/shadowed-trait-methods.stderr similarity index 100% rename from src/test/ui/shadowed/shadowed-trait-methods.stderr rename to tests/ui/shadowed/shadowed-trait-methods.stderr diff --git a/src/test/ui/shadowed/shadowed-type-parameter.rs b/tests/ui/shadowed/shadowed-type-parameter.rs similarity index 100% rename from src/test/ui/shadowed/shadowed-type-parameter.rs rename to tests/ui/shadowed/shadowed-type-parameter.rs diff --git a/src/test/ui/shadowed/shadowed-type-parameter.stderr b/tests/ui/shadowed/shadowed-type-parameter.stderr similarity index 100% rename from src/test/ui/shadowed/shadowed-type-parameter.stderr rename to tests/ui/shadowed/shadowed-type-parameter.stderr diff --git a/src/test/ui/shadowed/shadowed-use-visibility.rs b/tests/ui/shadowed/shadowed-use-visibility.rs similarity index 100% rename from src/test/ui/shadowed/shadowed-use-visibility.rs rename to tests/ui/shadowed/shadowed-use-visibility.rs diff --git a/src/test/ui/shadowed/shadowed-use-visibility.stderr b/tests/ui/shadowed/shadowed-use-visibility.stderr similarity index 100% rename from src/test/ui/shadowed/shadowed-use-visibility.stderr rename to tests/ui/shadowed/shadowed-use-visibility.stderr diff --git a/src/test/ui/shadowed/shadowing-in-the-same-pattern.rs b/tests/ui/shadowed/shadowing-in-the-same-pattern.rs similarity index 100% rename from src/test/ui/shadowed/shadowing-in-the-same-pattern.rs rename to tests/ui/shadowed/shadowing-in-the-same-pattern.rs diff --git a/src/test/ui/shadowed/shadowing-in-the-same-pattern.stderr b/tests/ui/shadowed/shadowing-in-the-same-pattern.stderr similarity index 100% rename from src/test/ui/shadowed/shadowing-in-the-same-pattern.stderr rename to tests/ui/shadowed/shadowing-in-the-same-pattern.stderr diff --git a/src/test/ui/short-error-format.rs b/tests/ui/short-error-format.rs similarity index 100% rename from src/test/ui/short-error-format.rs rename to tests/ui/short-error-format.rs diff --git a/src/test/ui/short-error-format.stderr b/tests/ui/short-error-format.stderr similarity index 100% rename from src/test/ui/short-error-format.stderr rename to tests/ui/short-error-format.stderr diff --git a/src/test/ui/simd/array-trait.rs b/tests/ui/simd/array-trait.rs similarity index 100% rename from src/test/ui/simd/array-trait.rs rename to tests/ui/simd/array-trait.rs diff --git a/src/test/ui/simd/array-trait.stderr b/tests/ui/simd/array-trait.stderr similarity index 100% rename from src/test/ui/simd/array-trait.stderr rename to tests/ui/simd/array-trait.stderr diff --git a/src/test/ui/simd/array-type.rs b/tests/ui/simd/array-type.rs similarity index 100% rename from src/test/ui/simd/array-type.rs rename to tests/ui/simd/array-type.rs diff --git a/src/test/ui/simd/generics.rs b/tests/ui/simd/generics.rs similarity index 100% rename from src/test/ui/simd/generics.rs rename to tests/ui/simd/generics.rs diff --git a/src/test/ui/simd/intrinsic/float-math-pass.rs b/tests/ui/simd/intrinsic/float-math-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/float-math-pass.rs rename to tests/ui/simd/intrinsic/float-math-pass.rs diff --git a/src/test/ui/simd/intrinsic/float-minmax-pass.rs b/tests/ui/simd/intrinsic/float-minmax-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/float-minmax-pass.rs rename to tests/ui/simd/intrinsic/float-minmax-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-2.rs b/tests/ui/simd/intrinsic/generic-arithmetic-2.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-2.rs rename to tests/ui/simd/intrinsic/generic-arithmetic-2.rs diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-2.stderr b/tests/ui/simd/intrinsic/generic-arithmetic-2.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-2.stderr rename to tests/ui/simd/intrinsic/generic-arithmetic-2.stderr diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-pass.rs b/tests/ui/simd/intrinsic/generic-arithmetic-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-pass.rs rename to tests/ui/simd/intrinsic/generic-arithmetic-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-saturating-2.rs b/tests/ui/simd/intrinsic/generic-arithmetic-saturating-2.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-saturating-2.rs rename to tests/ui/simd/intrinsic/generic-arithmetic-saturating-2.rs diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-saturating-2.stderr b/tests/ui/simd/intrinsic/generic-arithmetic-saturating-2.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-saturating-2.stderr rename to tests/ui/simd/intrinsic/generic-arithmetic-saturating-2.stderr diff --git a/src/test/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs b/tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs rename to tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-as.rs b/tests/ui/simd/intrinsic/generic-as.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-as.rs rename to tests/ui/simd/intrinsic/generic-as.rs diff --git a/src/test/ui/simd/intrinsic/generic-bitmask-pass.rs b/tests/ui/simd/intrinsic/generic-bitmask-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-bitmask-pass.rs rename to tests/ui/simd/intrinsic/generic-bitmask-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-bitmask.rs b/tests/ui/simd/intrinsic/generic-bitmask.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-bitmask.rs rename to tests/ui/simd/intrinsic/generic-bitmask.rs diff --git a/src/test/ui/simd/intrinsic/generic-bitmask.stderr b/tests/ui/simd/intrinsic/generic-bitmask.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-bitmask.stderr rename to tests/ui/simd/intrinsic/generic-bitmask.stderr diff --git a/src/test/ui/simd/intrinsic/generic-cast-pass.rs b/tests/ui/simd/intrinsic/generic-cast-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-cast-pass.rs rename to tests/ui/simd/intrinsic/generic-cast-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-cast-pointer-width.rs b/tests/ui/simd/intrinsic/generic-cast-pointer-width.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-cast-pointer-width.rs rename to tests/ui/simd/intrinsic/generic-cast-pointer-width.rs diff --git a/src/test/ui/simd/intrinsic/generic-cast.rs b/tests/ui/simd/intrinsic/generic-cast.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-cast.rs rename to tests/ui/simd/intrinsic/generic-cast.rs diff --git a/src/test/ui/simd/intrinsic/generic-cast.stderr b/tests/ui/simd/intrinsic/generic-cast.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-cast.stderr rename to tests/ui/simd/intrinsic/generic-cast.stderr diff --git a/src/test/ui/simd/intrinsic/generic-comparison-pass.rs b/tests/ui/simd/intrinsic/generic-comparison-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-comparison-pass.rs rename to tests/ui/simd/intrinsic/generic-comparison-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-comparison.rs b/tests/ui/simd/intrinsic/generic-comparison.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-comparison.rs rename to tests/ui/simd/intrinsic/generic-comparison.rs diff --git a/src/test/ui/simd/intrinsic/generic-comparison.stderr b/tests/ui/simd/intrinsic/generic-comparison.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-comparison.stderr rename to tests/ui/simd/intrinsic/generic-comparison.stderr diff --git a/src/test/ui/simd/intrinsic/generic-elements-pass.rs b/tests/ui/simd/intrinsic/generic-elements-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-elements-pass.rs rename to tests/ui/simd/intrinsic/generic-elements-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-elements.rs b/tests/ui/simd/intrinsic/generic-elements.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-elements.rs rename to tests/ui/simd/intrinsic/generic-elements.rs diff --git a/src/test/ui/simd/intrinsic/generic-elements.stderr b/tests/ui/simd/intrinsic/generic-elements.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-elements.stderr rename to tests/ui/simd/intrinsic/generic-elements.stderr diff --git a/src/test/ui/simd/intrinsic/generic-gather-pass.rs b/tests/ui/simd/intrinsic/generic-gather-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-gather-pass.rs rename to tests/ui/simd/intrinsic/generic-gather-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-reduction-pass.rs b/tests/ui/simd/intrinsic/generic-reduction-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-reduction-pass.rs rename to tests/ui/simd/intrinsic/generic-reduction-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-reduction.rs b/tests/ui/simd/intrinsic/generic-reduction.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-reduction.rs rename to tests/ui/simd/intrinsic/generic-reduction.rs diff --git a/src/test/ui/simd/intrinsic/generic-reduction.stderr b/tests/ui/simd/intrinsic/generic-reduction.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-reduction.stderr rename to tests/ui/simd/intrinsic/generic-reduction.stderr diff --git a/src/test/ui/simd/intrinsic/generic-select-pass.rs b/tests/ui/simd/intrinsic/generic-select-pass.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-select-pass.rs rename to tests/ui/simd/intrinsic/generic-select-pass.rs diff --git a/src/test/ui/simd/intrinsic/generic-select.rs b/tests/ui/simd/intrinsic/generic-select.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-select.rs rename to tests/ui/simd/intrinsic/generic-select.rs diff --git a/src/test/ui/simd/intrinsic/generic-select.stderr b/tests/ui/simd/intrinsic/generic-select.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-select.stderr rename to tests/ui/simd/intrinsic/generic-select.stderr diff --git a/src/test/ui/simd/intrinsic/generic-shuffle.rs b/tests/ui/simd/intrinsic/generic-shuffle.rs similarity index 100% rename from src/test/ui/simd/intrinsic/generic-shuffle.rs rename to tests/ui/simd/intrinsic/generic-shuffle.rs diff --git a/src/test/ui/simd/intrinsic/generic-shuffle.stderr b/tests/ui/simd/intrinsic/generic-shuffle.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/generic-shuffle.stderr rename to tests/ui/simd/intrinsic/generic-shuffle.stderr diff --git a/src/test/ui/simd/intrinsic/inlining-issue67557-ice.rs b/tests/ui/simd/intrinsic/inlining-issue67557-ice.rs similarity index 100% rename from src/test/ui/simd/intrinsic/inlining-issue67557-ice.rs rename to tests/ui/simd/intrinsic/inlining-issue67557-ice.rs diff --git a/src/test/ui/simd/intrinsic/inlining-issue67557.rs b/tests/ui/simd/intrinsic/inlining-issue67557.rs similarity index 100% rename from src/test/ui/simd/intrinsic/inlining-issue67557.rs rename to tests/ui/simd/intrinsic/inlining-issue67557.rs diff --git a/src/test/ui/simd/intrinsic/issue-85855.rs b/tests/ui/simd/intrinsic/issue-85855.rs similarity index 100% rename from src/test/ui/simd/intrinsic/issue-85855.rs rename to tests/ui/simd/intrinsic/issue-85855.rs diff --git a/src/test/ui/simd/intrinsic/issue-85855.stderr b/tests/ui/simd/intrinsic/issue-85855.stderr similarity index 100% rename from src/test/ui/simd/intrinsic/issue-85855.stderr rename to tests/ui/simd/intrinsic/issue-85855.stderr diff --git a/src/test/ui/simd/intrinsic/ptr-cast.rs b/tests/ui/simd/intrinsic/ptr-cast.rs similarity index 100% rename from src/test/ui/simd/intrinsic/ptr-cast.rs rename to tests/ui/simd/intrinsic/ptr-cast.rs diff --git a/src/test/ui/simd/issue-17170.rs b/tests/ui/simd/issue-17170.rs similarity index 100% rename from src/test/ui/simd/issue-17170.rs rename to tests/ui/simd/issue-17170.rs diff --git a/src/test/ui/simd/issue-32947.rs b/tests/ui/simd/issue-32947.rs similarity index 100% rename from src/test/ui/simd/issue-32947.rs rename to tests/ui/simd/issue-32947.rs diff --git a/src/test/ui/simd/issue-39720.rs b/tests/ui/simd/issue-39720.rs similarity index 100% rename from src/test/ui/simd/issue-39720.rs rename to tests/ui/simd/issue-39720.rs diff --git a/src/test/ui/simd/issue-85915-simd-ptrs.rs b/tests/ui/simd/issue-85915-simd-ptrs.rs similarity index 100% rename from src/test/ui/simd/issue-85915-simd-ptrs.rs rename to tests/ui/simd/issue-85915-simd-ptrs.rs diff --git a/src/test/ui/simd/issue-89193.rs b/tests/ui/simd/issue-89193.rs similarity index 100% rename from src/test/ui/simd/issue-89193.rs rename to tests/ui/simd/issue-89193.rs diff --git a/src/test/ui/simd/libm_no_std_cant_float.rs b/tests/ui/simd/libm_no_std_cant_float.rs similarity index 100% rename from src/test/ui/simd/libm_no_std_cant_float.rs rename to tests/ui/simd/libm_no_std_cant_float.rs diff --git a/src/test/ui/simd/libm_no_std_cant_float.stderr b/tests/ui/simd/libm_no_std_cant_float.stderr similarity index 100% rename from src/test/ui/simd/libm_no_std_cant_float.stderr rename to tests/ui/simd/libm_no_std_cant_float.stderr diff --git a/src/test/ui/simd/libm_std_can_float.rs b/tests/ui/simd/libm_std_can_float.rs similarity index 100% rename from src/test/ui/simd/libm_std_can_float.rs rename to tests/ui/simd/libm_std_can_float.rs diff --git a/src/test/ui/simd/monomorphize-shuffle-index.rs b/tests/ui/simd/monomorphize-shuffle-index.rs similarity index 100% rename from src/test/ui/simd/monomorphize-shuffle-index.rs rename to tests/ui/simd/monomorphize-shuffle-index.rs diff --git a/src/test/ui/simd/portable-intrinsics-arent-exposed.rs b/tests/ui/simd/portable-intrinsics-arent-exposed.rs similarity index 100% rename from src/test/ui/simd/portable-intrinsics-arent-exposed.rs rename to tests/ui/simd/portable-intrinsics-arent-exposed.rs diff --git a/src/test/ui/simd/portable-intrinsics-arent-exposed.stderr b/tests/ui/simd/portable-intrinsics-arent-exposed.stderr similarity index 100% rename from src/test/ui/simd/portable-intrinsics-arent-exposed.stderr rename to tests/ui/simd/portable-intrinsics-arent-exposed.stderr diff --git a/src/test/ui/simd/shuffle-not-out-of-bounds.rs b/tests/ui/simd/shuffle-not-out-of-bounds.rs similarity index 100% rename from src/test/ui/simd/shuffle-not-out-of-bounds.rs rename to tests/ui/simd/shuffle-not-out-of-bounds.rs diff --git a/src/test/ui/simd/shuffle-not-out-of-bounds.stderr b/tests/ui/simd/shuffle-not-out-of-bounds.stderr similarity index 100% rename from src/test/ui/simd/shuffle-not-out-of-bounds.stderr rename to tests/ui/simd/shuffle-not-out-of-bounds.stderr diff --git a/src/test/ui/simd/shuffle.rs b/tests/ui/simd/shuffle.rs similarity index 100% rename from src/test/ui/simd/shuffle.rs rename to tests/ui/simd/shuffle.rs diff --git a/src/test/ui/simd/simd-bitmask.rs b/tests/ui/simd/simd-bitmask.rs similarity index 100% rename from src/test/ui/simd/simd-bitmask.rs rename to tests/ui/simd/simd-bitmask.rs diff --git a/src/test/ui/simd/size-align.rs b/tests/ui/simd/size-align.rs similarity index 100% rename from src/test/ui/simd/size-align.rs rename to tests/ui/simd/size-align.rs diff --git a/src/test/ui/simd/target-feature-mixup.rs b/tests/ui/simd/target-feature-mixup.rs similarity index 100% rename from src/test/ui/simd/target-feature-mixup.rs rename to tests/ui/simd/target-feature-mixup.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-empty.rs b/tests/ui/simd/type-generic-monomorphisation-empty.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-empty.rs rename to tests/ui/simd/type-generic-monomorphisation-empty.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-empty.stderr b/tests/ui/simd/type-generic-monomorphisation-empty.stderr similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-empty.stderr rename to tests/ui/simd/type-generic-monomorphisation-empty.stderr diff --git a/src/test/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs b/tests/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs rename to tests/ui/simd/type-generic-monomorphisation-extern-nonnull-ptr.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-non-primitive.rs b/tests/ui/simd/type-generic-monomorphisation-non-primitive.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-non-primitive.rs rename to tests/ui/simd/type-generic-monomorphisation-non-primitive.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-non-primitive.stderr b/tests/ui/simd/type-generic-monomorphisation-non-primitive.stderr similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-non-primitive.stderr rename to tests/ui/simd/type-generic-monomorphisation-non-primitive.stderr diff --git a/src/test/ui/simd/type-generic-monomorphisation-oversized.rs b/tests/ui/simd/type-generic-monomorphisation-oversized.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-oversized.rs rename to tests/ui/simd/type-generic-monomorphisation-oversized.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-oversized.stderr b/tests/ui/simd/type-generic-monomorphisation-oversized.stderr similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-oversized.stderr rename to tests/ui/simd/type-generic-monomorphisation-oversized.stderr diff --git a/src/test/ui/simd/type-generic-monomorphisation-power-of-two.rs b/tests/ui/simd/type-generic-monomorphisation-power-of-two.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-power-of-two.rs rename to tests/ui/simd/type-generic-monomorphisation-power-of-two.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-wide-ptr.rs b/tests/ui/simd/type-generic-monomorphisation-wide-ptr.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-wide-ptr.rs rename to tests/ui/simd/type-generic-monomorphisation-wide-ptr.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation-wide-ptr.stderr b/tests/ui/simd/type-generic-monomorphisation-wide-ptr.stderr similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation-wide-ptr.stderr rename to tests/ui/simd/type-generic-monomorphisation-wide-ptr.stderr diff --git a/src/test/ui/simd/type-generic-monomorphisation.rs b/tests/ui/simd/type-generic-monomorphisation.rs similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation.rs rename to tests/ui/simd/type-generic-monomorphisation.rs diff --git a/src/test/ui/simd/type-generic-monomorphisation.stderr b/tests/ui/simd/type-generic-monomorphisation.stderr similarity index 100% rename from src/test/ui/simd/type-generic-monomorphisation.stderr rename to tests/ui/simd/type-generic-monomorphisation.stderr diff --git a/src/test/ui/simd/type-len.rs b/tests/ui/simd/type-len.rs similarity index 100% rename from src/test/ui/simd/type-len.rs rename to tests/ui/simd/type-len.rs diff --git a/src/test/ui/simd/type-len.stderr b/tests/ui/simd/type-len.stderr similarity index 100% rename from src/test/ui/simd/type-len.stderr rename to tests/ui/simd/type-len.stderr diff --git a/src/test/ui/simd/type-wide-ptr.rs b/tests/ui/simd/type-wide-ptr.rs similarity index 100% rename from src/test/ui/simd/type-wide-ptr.rs rename to tests/ui/simd/type-wide-ptr.rs diff --git a/src/test/ui/simd/type-wide-ptr.stderr b/tests/ui/simd/type-wide-ptr.stderr similarity index 100% rename from src/test/ui/simd/type-wide-ptr.stderr rename to tests/ui/simd/type-wide-ptr.stderr diff --git a/src/test/ui/simd/wasm-simd-indirect.rs b/tests/ui/simd/wasm-simd-indirect.rs similarity index 100% rename from src/test/ui/simd/wasm-simd-indirect.rs rename to tests/ui/simd/wasm-simd-indirect.rs diff --git a/src/test/ui/simple_global_asm.rs b/tests/ui/simple_global_asm.rs similarity index 100% rename from src/test/ui/simple_global_asm.rs rename to tests/ui/simple_global_asm.rs diff --git a/src/test/ui/single-use-lifetime/derive-eq.rs b/tests/ui/single-use-lifetime/derive-eq.rs similarity index 100% rename from src/test/ui/single-use-lifetime/derive-eq.rs rename to tests/ui/single-use-lifetime/derive-eq.rs diff --git a/src/test/ui/single-use-lifetime/fn-types.rs b/tests/ui/single-use-lifetime/fn-types.rs similarity index 100% rename from src/test/ui/single-use-lifetime/fn-types.rs rename to tests/ui/single-use-lifetime/fn-types.rs diff --git a/src/test/ui/single-use-lifetime/fn-types.stderr b/tests/ui/single-use-lifetime/fn-types.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/fn-types.stderr rename to tests/ui/single-use-lifetime/fn-types.stderr diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.rs b/tests/ui/single-use-lifetime/one-use-in-fn-argument.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-fn-argument.rs rename to tests/ui/single-use-lifetime/one-use-in-fn-argument.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-fn-argument.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr rename to tests/ui/single-use-lifetime/one-use-in-fn-argument.stderr diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-return.rs b/tests/ui/single-use-lifetime/one-use-in-fn-return.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-fn-return.rs rename to tests/ui/single-use-lifetime/one-use-in-fn-return.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs rename to tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr rename to tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs rename to tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr rename to tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.rs rename to tests/ui/single-use-lifetime/one-use-in-inherent-method-return.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr rename to tests/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr diff --git a/src/test/ui/single-use-lifetime/one-use-in-struct.rs b/tests/ui/single-use-lifetime/one-use-in-struct.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-struct.rs rename to tests/ui/single-use-lifetime/one-use-in-struct.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.rs b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.rs similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.rs rename to tests/ui/single-use-lifetime/one-use-in-trait-method-argument.rs diff --git a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr rename to tests/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr diff --git a/src/test/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs b/tests/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs rename to tests/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs diff --git a/src/test/ui/single-use-lifetime/two-uses-in-fn-arguments.rs b/tests/ui/single-use-lifetime/two-uses-in-fn-arguments.rs similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-fn-arguments.rs rename to tests/ui/single-use-lifetime/two-uses-in-fn-arguments.rs diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs b/tests/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs rename to tests/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs rename to tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr rename to tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr diff --git a/src/test/ui/single-use-lifetime/two-uses-in-trait-impl.rs b/tests/ui/single-use-lifetime/two-uses-in-trait-impl.rs similarity index 100% rename from src/test/ui/single-use-lifetime/two-uses-in-trait-impl.rs rename to tests/ui/single-use-lifetime/two-uses-in-trait-impl.rs diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.fixed b/tests/ui/single-use-lifetime/zero-uses-in-fn.fixed similarity index 100% rename from src/test/ui/single-use-lifetime/zero-uses-in-fn.fixed rename to tests/ui/single-use-lifetime/zero-uses-in-fn.fixed diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.rs b/tests/ui/single-use-lifetime/zero-uses-in-fn.rs similarity index 100% rename from src/test/ui/single-use-lifetime/zero-uses-in-fn.rs rename to tests/ui/single-use-lifetime/zero-uses-in-fn.rs diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.stderr b/tests/ui/single-use-lifetime/zero-uses-in-fn.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/zero-uses-in-fn.stderr rename to tests/ui/single-use-lifetime/zero-uses-in-fn.stderr diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-impl.rs b/tests/ui/single-use-lifetime/zero-uses-in-impl.rs similarity index 100% rename from src/test/ui/single-use-lifetime/zero-uses-in-impl.rs rename to tests/ui/single-use-lifetime/zero-uses-in-impl.rs diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-impl.stderr b/tests/ui/single-use-lifetime/zero-uses-in-impl.stderr similarity index 100% rename from src/test/ui/single-use-lifetime/zero-uses-in-impl.stderr rename to tests/ui/single-use-lifetime/zero-uses-in-impl.stderr diff --git a/src/test/ui/sized-borrowed-pointer.rs b/tests/ui/sized-borrowed-pointer.rs similarity index 100% rename from src/test/ui/sized-borrowed-pointer.rs rename to tests/ui/sized-borrowed-pointer.rs diff --git a/src/test/ui/sized-cycle-note.rs b/tests/ui/sized-cycle-note.rs similarity index 100% rename from src/test/ui/sized-cycle-note.rs rename to tests/ui/sized-cycle-note.rs diff --git a/src/test/ui/sized-cycle-note.stderr b/tests/ui/sized-cycle-note.stderr similarity index 100% rename from src/test/ui/sized-cycle-note.stderr rename to tests/ui/sized-cycle-note.stderr diff --git a/src/test/ui/sized-owned-pointer.rs b/tests/ui/sized-owned-pointer.rs similarity index 100% rename from src/test/ui/sized-owned-pointer.rs rename to tests/ui/sized-owned-pointer.rs diff --git a/src/test/ui/sized/coinductive-1-gat.rs b/tests/ui/sized/coinductive-1-gat.rs similarity index 100% rename from src/test/ui/sized/coinductive-1-gat.rs rename to tests/ui/sized/coinductive-1-gat.rs diff --git a/src/test/ui/sized/coinductive-1.rs b/tests/ui/sized/coinductive-1.rs similarity index 100% rename from src/test/ui/sized/coinductive-1.rs rename to tests/ui/sized/coinductive-1.rs diff --git a/src/test/ui/sized/coinductive-2.rs b/tests/ui/sized/coinductive-2.rs similarity index 100% rename from src/test/ui/sized/coinductive-2.rs rename to tests/ui/sized/coinductive-2.rs diff --git a/src/test/ui/sized/recursive-type-1.rs b/tests/ui/sized/recursive-type-1.rs similarity index 100% rename from src/test/ui/sized/recursive-type-1.rs rename to tests/ui/sized/recursive-type-1.rs diff --git a/src/test/ui/sized/recursive-type-2.rs b/tests/ui/sized/recursive-type-2.rs similarity index 100% rename from src/test/ui/sized/recursive-type-2.rs rename to tests/ui/sized/recursive-type-2.rs diff --git a/src/test/ui/sized/recursive-type-2.stderr b/tests/ui/sized/recursive-type-2.stderr similarity index 100% rename from src/test/ui/sized/recursive-type-2.stderr rename to tests/ui/sized/recursive-type-2.stderr diff --git a/src/test/ui/slightly-nice-generic-literal-messages.rs b/tests/ui/slightly-nice-generic-literal-messages.rs similarity index 100% rename from src/test/ui/slightly-nice-generic-literal-messages.rs rename to tests/ui/slightly-nice-generic-literal-messages.rs diff --git a/src/test/ui/slightly-nice-generic-literal-messages.stderr b/tests/ui/slightly-nice-generic-literal-messages.stderr similarity index 100% rename from src/test/ui/slightly-nice-generic-literal-messages.stderr rename to tests/ui/slightly-nice-generic-literal-messages.stderr diff --git a/src/test/ui/span/E0046.rs b/tests/ui/span/E0046.rs similarity index 100% rename from src/test/ui/span/E0046.rs rename to tests/ui/span/E0046.rs diff --git a/src/test/ui/span/E0046.stderr b/tests/ui/span/E0046.stderr similarity index 100% rename from src/test/ui/span/E0046.stderr rename to tests/ui/span/E0046.stderr diff --git a/src/test/ui/span/E0072.rs b/tests/ui/span/E0072.rs similarity index 100% rename from src/test/ui/span/E0072.rs rename to tests/ui/span/E0072.rs diff --git a/src/test/ui/span/E0072.stderr b/tests/ui/span/E0072.stderr similarity index 100% rename from src/test/ui/span/E0072.stderr rename to tests/ui/span/E0072.stderr diff --git a/src/test/ui/span/E0204.rs b/tests/ui/span/E0204.rs similarity index 100% rename from src/test/ui/span/E0204.rs rename to tests/ui/span/E0204.rs diff --git a/src/test/ui/span/E0204.stderr b/tests/ui/span/E0204.stderr similarity index 100% rename from src/test/ui/span/E0204.stderr rename to tests/ui/span/E0204.stderr diff --git a/src/test/ui/span/E0493.rs b/tests/ui/span/E0493.rs similarity index 100% rename from src/test/ui/span/E0493.rs rename to tests/ui/span/E0493.rs diff --git a/src/test/ui/span/E0493.stderr b/tests/ui/span/E0493.stderr similarity index 100% rename from src/test/ui/span/E0493.stderr rename to tests/ui/span/E0493.stderr diff --git a/src/test/ui/span/E0535.rs b/tests/ui/span/E0535.rs similarity index 100% rename from src/test/ui/span/E0535.rs rename to tests/ui/span/E0535.rs diff --git a/src/test/ui/span/E0535.stderr b/tests/ui/span/E0535.stderr similarity index 100% rename from src/test/ui/span/E0535.stderr rename to tests/ui/span/E0535.stderr diff --git a/src/test/ui/span/E0536.rs b/tests/ui/span/E0536.rs similarity index 100% rename from src/test/ui/span/E0536.rs rename to tests/ui/span/E0536.rs diff --git a/src/test/ui/span/E0536.stderr b/tests/ui/span/E0536.stderr similarity index 100% rename from src/test/ui/span/E0536.stderr rename to tests/ui/span/E0536.stderr diff --git a/src/test/ui/span/E0537.rs b/tests/ui/span/E0537.rs similarity index 100% rename from src/test/ui/span/E0537.rs rename to tests/ui/span/E0537.rs diff --git a/src/test/ui/span/E0537.stderr b/tests/ui/span/E0537.stderr similarity index 100% rename from src/test/ui/span/E0537.stderr rename to tests/ui/span/E0537.stderr diff --git a/src/test/ui/span/auxiliary/transitive_dep_three.rs b/tests/ui/span/auxiliary/transitive_dep_three.rs similarity index 100% rename from src/test/ui/span/auxiliary/transitive_dep_three.rs rename to tests/ui/span/auxiliary/transitive_dep_three.rs diff --git a/src/test/ui/span/auxiliary/transitive_dep_two.rs b/tests/ui/span/auxiliary/transitive_dep_two.rs similarity index 100% rename from src/test/ui/span/auxiliary/transitive_dep_two.rs rename to tests/ui/span/auxiliary/transitive_dep_two.rs diff --git a/src/test/ui/span/borrowck-borrow-overloaded-auto-deref-mut.rs b/tests/ui/span/borrowck-borrow-overloaded-auto-deref-mut.rs similarity index 100% rename from src/test/ui/span/borrowck-borrow-overloaded-auto-deref-mut.rs rename to tests/ui/span/borrowck-borrow-overloaded-auto-deref-mut.rs diff --git a/src/test/ui/span/borrowck-borrow-overloaded-auto-deref-mut.stderr b/tests/ui/span/borrowck-borrow-overloaded-auto-deref-mut.stderr similarity index 100% rename from src/test/ui/span/borrowck-borrow-overloaded-auto-deref-mut.stderr rename to tests/ui/span/borrowck-borrow-overloaded-auto-deref-mut.stderr diff --git a/src/test/ui/span/borrowck-borrow-overloaded-deref-mut.rs b/tests/ui/span/borrowck-borrow-overloaded-deref-mut.rs similarity index 100% rename from src/test/ui/span/borrowck-borrow-overloaded-deref-mut.rs rename to tests/ui/span/borrowck-borrow-overloaded-deref-mut.rs diff --git a/src/test/ui/span/borrowck-borrow-overloaded-deref-mut.stderr b/tests/ui/span/borrowck-borrow-overloaded-deref-mut.stderr similarity index 100% rename from src/test/ui/span/borrowck-borrow-overloaded-deref-mut.stderr rename to tests/ui/span/borrowck-borrow-overloaded-deref-mut.stderr diff --git a/src/test/ui/span/borrowck-call-is-borrow-issue-12224.rs b/tests/ui/span/borrowck-call-is-borrow-issue-12224.rs similarity index 100% rename from src/test/ui/span/borrowck-call-is-borrow-issue-12224.rs rename to tests/ui/span/borrowck-call-is-borrow-issue-12224.rs diff --git a/src/test/ui/span/borrowck-call-is-borrow-issue-12224.stderr b/tests/ui/span/borrowck-call-is-borrow-issue-12224.stderr similarity index 100% rename from src/test/ui/span/borrowck-call-is-borrow-issue-12224.stderr rename to tests/ui/span/borrowck-call-is-borrow-issue-12224.stderr diff --git a/src/test/ui/span/borrowck-call-method-from-mut-aliasable.rs b/tests/ui/span/borrowck-call-method-from-mut-aliasable.rs similarity index 100% rename from src/test/ui/span/borrowck-call-method-from-mut-aliasable.rs rename to tests/ui/span/borrowck-call-method-from-mut-aliasable.rs diff --git a/src/test/ui/span/borrowck-call-method-from-mut-aliasable.stderr b/tests/ui/span/borrowck-call-method-from-mut-aliasable.stderr similarity index 100% rename from src/test/ui/span/borrowck-call-method-from-mut-aliasable.stderr rename to tests/ui/span/borrowck-call-method-from-mut-aliasable.stderr diff --git a/src/test/ui/span/borrowck-fn-in-const-b.rs b/tests/ui/span/borrowck-fn-in-const-b.rs similarity index 100% rename from src/test/ui/span/borrowck-fn-in-const-b.rs rename to tests/ui/span/borrowck-fn-in-const-b.rs diff --git a/src/test/ui/span/borrowck-fn-in-const-b.stderr b/tests/ui/span/borrowck-fn-in-const-b.stderr similarity index 100% rename from src/test/ui/span/borrowck-fn-in-const-b.stderr rename to tests/ui/span/borrowck-fn-in-const-b.stderr diff --git a/src/test/ui/span/borrowck-let-suggestion-suffixes.rs b/tests/ui/span/borrowck-let-suggestion-suffixes.rs similarity index 100% rename from src/test/ui/span/borrowck-let-suggestion-suffixes.rs rename to tests/ui/span/borrowck-let-suggestion-suffixes.rs diff --git a/src/test/ui/span/borrowck-let-suggestion-suffixes.stderr b/tests/ui/span/borrowck-let-suggestion-suffixes.stderr similarity index 100% rename from src/test/ui/span/borrowck-let-suggestion-suffixes.stderr rename to tests/ui/span/borrowck-let-suggestion-suffixes.stderr diff --git a/src/test/ui/span/borrowck-object-mutability.rs b/tests/ui/span/borrowck-object-mutability.rs similarity index 100% rename from src/test/ui/span/borrowck-object-mutability.rs rename to tests/ui/span/borrowck-object-mutability.rs diff --git a/src/test/ui/span/borrowck-object-mutability.stderr b/tests/ui/span/borrowck-object-mutability.stderr similarity index 100% rename from src/test/ui/span/borrowck-object-mutability.stderr rename to tests/ui/span/borrowck-object-mutability.stderr diff --git a/src/test/ui/span/borrowck-ref-into-rvalue.fixed b/tests/ui/span/borrowck-ref-into-rvalue.fixed similarity index 100% rename from src/test/ui/span/borrowck-ref-into-rvalue.fixed rename to tests/ui/span/borrowck-ref-into-rvalue.fixed diff --git a/src/test/ui/span/borrowck-ref-into-rvalue.rs b/tests/ui/span/borrowck-ref-into-rvalue.rs similarity index 100% rename from src/test/ui/span/borrowck-ref-into-rvalue.rs rename to tests/ui/span/borrowck-ref-into-rvalue.rs diff --git a/src/test/ui/span/borrowck-ref-into-rvalue.stderr b/tests/ui/span/borrowck-ref-into-rvalue.stderr similarity index 100% rename from src/test/ui/span/borrowck-ref-into-rvalue.stderr rename to tests/ui/span/borrowck-ref-into-rvalue.stderr diff --git a/src/test/ui/span/coerce-suggestions.rs b/tests/ui/span/coerce-suggestions.rs similarity index 100% rename from src/test/ui/span/coerce-suggestions.rs rename to tests/ui/span/coerce-suggestions.rs diff --git a/src/test/ui/span/coerce-suggestions.stderr b/tests/ui/span/coerce-suggestions.stderr similarity index 100% rename from src/test/ui/span/coerce-suggestions.stderr rename to tests/ui/span/coerce-suggestions.stderr diff --git a/src/test/ui/span/destructor-restrictions.rs b/tests/ui/span/destructor-restrictions.rs similarity index 100% rename from src/test/ui/span/destructor-restrictions.rs rename to tests/ui/span/destructor-restrictions.rs diff --git a/src/test/ui/span/destructor-restrictions.stderr b/tests/ui/span/destructor-restrictions.stderr similarity index 100% rename from src/test/ui/span/destructor-restrictions.stderr rename to tests/ui/span/destructor-restrictions.stderr diff --git a/src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.rs b/tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.rs similarity index 100% rename from src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.rs rename to tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.rs diff --git a/src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.stderr b/tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.stderr similarity index 100% rename from src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.stderr rename to tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-93117.stderr diff --git a/src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.rs b/tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.rs similarity index 100% rename from src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.rs rename to tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.rs diff --git a/src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.stderr b/tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.stderr similarity index 100% rename from src/test/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.stderr rename to tests/ui/span/drop-location-span-error-rust-2021-incompatible-closure-captures-96258.stderr diff --git a/src/test/ui/span/dropck-object-cycle.rs b/tests/ui/span/dropck-object-cycle.rs similarity index 100% rename from src/test/ui/span/dropck-object-cycle.rs rename to tests/ui/span/dropck-object-cycle.rs diff --git a/src/test/ui/span/dropck-object-cycle.stderr b/tests/ui/span/dropck-object-cycle.stderr similarity index 100% rename from src/test/ui/span/dropck-object-cycle.stderr rename to tests/ui/span/dropck-object-cycle.stderr diff --git a/src/test/ui/span/dropck_arr_cycle_checked.rs b/tests/ui/span/dropck_arr_cycle_checked.rs similarity index 100% rename from src/test/ui/span/dropck_arr_cycle_checked.rs rename to tests/ui/span/dropck_arr_cycle_checked.rs diff --git a/src/test/ui/span/dropck_arr_cycle_checked.stderr b/tests/ui/span/dropck_arr_cycle_checked.stderr similarity index 100% rename from src/test/ui/span/dropck_arr_cycle_checked.stderr rename to tests/ui/span/dropck_arr_cycle_checked.stderr diff --git a/src/test/ui/span/dropck_direct_cycle_with_drop.rs b/tests/ui/span/dropck_direct_cycle_with_drop.rs similarity index 100% rename from src/test/ui/span/dropck_direct_cycle_with_drop.rs rename to tests/ui/span/dropck_direct_cycle_with_drop.rs diff --git a/src/test/ui/span/dropck_direct_cycle_with_drop.stderr b/tests/ui/span/dropck_direct_cycle_with_drop.stderr similarity index 100% rename from src/test/ui/span/dropck_direct_cycle_with_drop.stderr rename to tests/ui/span/dropck_direct_cycle_with_drop.stderr diff --git a/src/test/ui/span/dropck_misc_variants.rs b/tests/ui/span/dropck_misc_variants.rs similarity index 100% rename from src/test/ui/span/dropck_misc_variants.rs rename to tests/ui/span/dropck_misc_variants.rs diff --git a/src/test/ui/span/dropck_misc_variants.stderr b/tests/ui/span/dropck_misc_variants.stderr similarity index 100% rename from src/test/ui/span/dropck_misc_variants.stderr rename to tests/ui/span/dropck_misc_variants.stderr diff --git a/src/test/ui/span/dropck_vec_cycle_checked.rs b/tests/ui/span/dropck_vec_cycle_checked.rs similarity index 100% rename from src/test/ui/span/dropck_vec_cycle_checked.rs rename to tests/ui/span/dropck_vec_cycle_checked.rs diff --git a/src/test/ui/span/dropck_vec_cycle_checked.stderr b/tests/ui/span/dropck_vec_cycle_checked.stderr similarity index 100% rename from src/test/ui/span/dropck_vec_cycle_checked.stderr rename to tests/ui/span/dropck_vec_cycle_checked.stderr diff --git a/src/test/ui/span/gated-features-attr-spans.rs b/tests/ui/span/gated-features-attr-spans.rs similarity index 100% rename from src/test/ui/span/gated-features-attr-spans.rs rename to tests/ui/span/gated-features-attr-spans.rs diff --git a/src/test/ui/span/gated-features-attr-spans.stderr b/tests/ui/span/gated-features-attr-spans.stderr similarity index 100% rename from src/test/ui/span/gated-features-attr-spans.stderr rename to tests/ui/span/gated-features-attr-spans.stderr diff --git a/src/test/ui/span/impl-wrong-item-for-trait.rs b/tests/ui/span/impl-wrong-item-for-trait.rs similarity index 100% rename from src/test/ui/span/impl-wrong-item-for-trait.rs rename to tests/ui/span/impl-wrong-item-for-trait.rs diff --git a/src/test/ui/span/impl-wrong-item-for-trait.stderr b/tests/ui/span/impl-wrong-item-for-trait.stderr similarity index 100% rename from src/test/ui/span/impl-wrong-item-for-trait.stderr rename to tests/ui/span/impl-wrong-item-for-trait.stderr diff --git a/src/test/ui/span/import-ty-params.rs b/tests/ui/span/import-ty-params.rs similarity index 100% rename from src/test/ui/span/import-ty-params.rs rename to tests/ui/span/import-ty-params.rs diff --git a/src/test/ui/span/import-ty-params.stderr b/tests/ui/span/import-ty-params.stderr similarity index 100% rename from src/test/ui/span/import-ty-params.stderr rename to tests/ui/span/import-ty-params.stderr diff --git a/src/test/ui/span/issue-11925.rs b/tests/ui/span/issue-11925.rs similarity index 100% rename from src/test/ui/span/issue-11925.rs rename to tests/ui/span/issue-11925.rs diff --git a/src/test/ui/span/issue-11925.stderr b/tests/ui/span/issue-11925.stderr similarity index 100% rename from src/test/ui/span/issue-11925.stderr rename to tests/ui/span/issue-11925.stderr diff --git a/src/test/ui/span/issue-15480.fixed b/tests/ui/span/issue-15480.fixed similarity index 100% rename from src/test/ui/span/issue-15480.fixed rename to tests/ui/span/issue-15480.fixed diff --git a/src/test/ui/span/issue-15480.rs b/tests/ui/span/issue-15480.rs similarity index 100% rename from src/test/ui/span/issue-15480.rs rename to tests/ui/span/issue-15480.rs diff --git a/src/test/ui/span/issue-15480.stderr b/tests/ui/span/issue-15480.stderr similarity index 100% rename from src/test/ui/span/issue-15480.stderr rename to tests/ui/span/issue-15480.stderr diff --git a/src/test/ui/span/issue-23338-locals-die-before-temps-of-body.rs b/tests/ui/span/issue-23338-locals-die-before-temps-of-body.rs similarity index 100% rename from src/test/ui/span/issue-23338-locals-die-before-temps-of-body.rs rename to tests/ui/span/issue-23338-locals-die-before-temps-of-body.rs diff --git a/src/test/ui/span/issue-23338-locals-die-before-temps-of-body.stderr b/tests/ui/span/issue-23338-locals-die-before-temps-of-body.stderr similarity index 100% rename from src/test/ui/span/issue-23338-locals-die-before-temps-of-body.stderr rename to tests/ui/span/issue-23338-locals-die-before-temps-of-body.stderr diff --git a/src/test/ui/span/issue-23729.rs b/tests/ui/span/issue-23729.rs similarity index 100% rename from src/test/ui/span/issue-23729.rs rename to tests/ui/span/issue-23729.rs diff --git a/src/test/ui/span/issue-23729.stderr b/tests/ui/span/issue-23729.stderr similarity index 100% rename from src/test/ui/span/issue-23729.stderr rename to tests/ui/span/issue-23729.stderr diff --git a/src/test/ui/span/issue-23827.rs b/tests/ui/span/issue-23827.rs similarity index 100% rename from src/test/ui/span/issue-23827.rs rename to tests/ui/span/issue-23827.rs diff --git a/src/test/ui/span/issue-23827.stderr b/tests/ui/span/issue-23827.stderr similarity index 100% rename from src/test/ui/span/issue-23827.stderr rename to tests/ui/span/issue-23827.stderr diff --git a/src/test/ui/span/issue-24356.rs b/tests/ui/span/issue-24356.rs similarity index 100% rename from src/test/ui/span/issue-24356.rs rename to tests/ui/span/issue-24356.rs diff --git a/src/test/ui/span/issue-24356.stderr b/tests/ui/span/issue-24356.stderr similarity index 100% rename from src/test/ui/span/issue-24356.stderr rename to tests/ui/span/issue-24356.stderr diff --git a/src/test/ui/span/issue-24690.rs b/tests/ui/span/issue-24690.rs similarity index 100% rename from src/test/ui/span/issue-24690.rs rename to tests/ui/span/issue-24690.rs diff --git a/src/test/ui/span/issue-24690.stderr b/tests/ui/span/issue-24690.stderr similarity index 100% rename from src/test/ui/span/issue-24690.stderr rename to tests/ui/span/issue-24690.stderr diff --git a/src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs b/tests/ui/span/issue-24805-dropck-child-has-items-via-parent.rs similarity index 100% rename from src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs rename to tests/ui/span/issue-24805-dropck-child-has-items-via-parent.rs diff --git a/src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.stderr b/tests/ui/span/issue-24805-dropck-child-has-items-via-parent.stderr similarity index 100% rename from src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.stderr rename to tests/ui/span/issue-24805-dropck-child-has-items-via-parent.stderr diff --git a/src/test/ui/span/issue-24805-dropck-trait-has-items.rs b/tests/ui/span/issue-24805-dropck-trait-has-items.rs similarity index 100% rename from src/test/ui/span/issue-24805-dropck-trait-has-items.rs rename to tests/ui/span/issue-24805-dropck-trait-has-items.rs diff --git a/src/test/ui/span/issue-24805-dropck-trait-has-items.stderr b/tests/ui/span/issue-24805-dropck-trait-has-items.stderr similarity index 100% rename from src/test/ui/span/issue-24805-dropck-trait-has-items.stderr rename to tests/ui/span/issue-24805-dropck-trait-has-items.stderr diff --git a/src/test/ui/span/issue-24895-copy-clone-dropck.rs b/tests/ui/span/issue-24895-copy-clone-dropck.rs similarity index 100% rename from src/test/ui/span/issue-24895-copy-clone-dropck.rs rename to tests/ui/span/issue-24895-copy-clone-dropck.rs diff --git a/src/test/ui/span/issue-24895-copy-clone-dropck.stderr b/tests/ui/span/issue-24895-copy-clone-dropck.stderr similarity index 100% rename from src/test/ui/span/issue-24895-copy-clone-dropck.stderr rename to tests/ui/span/issue-24895-copy-clone-dropck.stderr diff --git a/src/test/ui/span/issue-25199.rs b/tests/ui/span/issue-25199.rs similarity index 100% rename from src/test/ui/span/issue-25199.rs rename to tests/ui/span/issue-25199.rs diff --git a/src/test/ui/span/issue-25199.stderr b/tests/ui/span/issue-25199.stderr similarity index 100% rename from src/test/ui/span/issue-25199.stderr rename to tests/ui/span/issue-25199.stderr diff --git a/src/test/ui/span/issue-26656.rs b/tests/ui/span/issue-26656.rs similarity index 100% rename from src/test/ui/span/issue-26656.rs rename to tests/ui/span/issue-26656.rs diff --git a/src/test/ui/span/issue-26656.stderr b/tests/ui/span/issue-26656.stderr similarity index 100% rename from src/test/ui/span/issue-26656.stderr rename to tests/ui/span/issue-26656.stderr diff --git a/src/test/ui/span/issue-27522.rs b/tests/ui/span/issue-27522.rs similarity index 100% rename from src/test/ui/span/issue-27522.rs rename to tests/ui/span/issue-27522.rs diff --git a/src/test/ui/span/issue-27522.stderr b/tests/ui/span/issue-27522.stderr similarity index 100% rename from src/test/ui/span/issue-27522.stderr rename to tests/ui/span/issue-27522.stderr diff --git a/src/test/ui/span/issue-29106.rs b/tests/ui/span/issue-29106.rs similarity index 100% rename from src/test/ui/span/issue-29106.rs rename to tests/ui/span/issue-29106.rs diff --git a/src/test/ui/span/issue-29106.stderr b/tests/ui/span/issue-29106.stderr similarity index 100% rename from src/test/ui/span/issue-29106.stderr rename to tests/ui/span/issue-29106.stderr diff --git a/src/test/ui/span/issue-29595.rs b/tests/ui/span/issue-29595.rs similarity index 100% rename from src/test/ui/span/issue-29595.rs rename to tests/ui/span/issue-29595.rs diff --git a/src/test/ui/span/issue-29595.stderr b/tests/ui/span/issue-29595.stderr similarity index 100% rename from src/test/ui/span/issue-29595.stderr rename to tests/ui/span/issue-29595.stderr diff --git a/src/test/ui/span/issue-33884.rs b/tests/ui/span/issue-33884.rs similarity index 100% rename from src/test/ui/span/issue-33884.rs rename to tests/ui/span/issue-33884.rs diff --git a/src/test/ui/span/issue-33884.stderr b/tests/ui/span/issue-33884.stderr similarity index 100% rename from src/test/ui/span/issue-33884.stderr rename to tests/ui/span/issue-33884.stderr diff --git a/src/test/ui/span/issue-34264.rs b/tests/ui/span/issue-34264.rs similarity index 100% rename from src/test/ui/span/issue-34264.rs rename to tests/ui/span/issue-34264.rs diff --git a/src/test/ui/span/issue-34264.stderr b/tests/ui/span/issue-34264.stderr similarity index 100% rename from src/test/ui/span/issue-34264.stderr rename to tests/ui/span/issue-34264.stderr diff --git a/src/test/ui/span/issue-35987.rs b/tests/ui/span/issue-35987.rs similarity index 100% rename from src/test/ui/span/issue-35987.rs rename to tests/ui/span/issue-35987.rs diff --git a/src/test/ui/span/issue-35987.stderr b/tests/ui/span/issue-35987.stderr similarity index 100% rename from src/test/ui/span/issue-35987.stderr rename to tests/ui/span/issue-35987.stderr diff --git a/src/test/ui/span/issue-36537.rs b/tests/ui/span/issue-36537.rs similarity index 100% rename from src/test/ui/span/issue-36537.rs rename to tests/ui/span/issue-36537.rs diff --git a/src/test/ui/span/issue-36537.stderr b/tests/ui/span/issue-36537.stderr similarity index 100% rename from src/test/ui/span/issue-36537.stderr rename to tests/ui/span/issue-36537.stderr diff --git a/src/test/ui/span/issue-37767.rs b/tests/ui/span/issue-37767.rs similarity index 100% rename from src/test/ui/span/issue-37767.rs rename to tests/ui/span/issue-37767.rs diff --git a/src/test/ui/span/issue-37767.stderr b/tests/ui/span/issue-37767.stderr similarity index 100% rename from src/test/ui/span/issue-37767.stderr rename to tests/ui/span/issue-37767.stderr diff --git a/src/test/ui/span/issue-39018.rs b/tests/ui/span/issue-39018.rs similarity index 100% rename from src/test/ui/span/issue-39018.rs rename to tests/ui/span/issue-39018.rs diff --git a/src/test/ui/span/issue-39018.stderr b/tests/ui/span/issue-39018.stderr similarity index 100% rename from src/test/ui/span/issue-39018.stderr rename to tests/ui/span/issue-39018.stderr diff --git a/src/test/ui/span/issue-39698.rs b/tests/ui/span/issue-39698.rs similarity index 100% rename from src/test/ui/span/issue-39698.rs rename to tests/ui/span/issue-39698.rs diff --git a/src/test/ui/span/issue-39698.stderr b/tests/ui/span/issue-39698.stderr similarity index 100% rename from src/test/ui/span/issue-39698.stderr rename to tests/ui/span/issue-39698.stderr diff --git a/src/test/ui/span/issue-40157.rs b/tests/ui/span/issue-40157.rs similarity index 100% rename from src/test/ui/span/issue-40157.rs rename to tests/ui/span/issue-40157.rs diff --git a/src/test/ui/span/issue-40157.stderr b/tests/ui/span/issue-40157.stderr similarity index 100% rename from src/test/ui/span/issue-40157.stderr rename to tests/ui/span/issue-40157.stderr diff --git a/src/test/ui/span/issue-42234-unknown-receiver-type.full.stderr b/tests/ui/span/issue-42234-unknown-receiver-type.full.stderr similarity index 100% rename from src/test/ui/span/issue-42234-unknown-receiver-type.full.stderr rename to tests/ui/span/issue-42234-unknown-receiver-type.full.stderr diff --git a/src/test/ui/span/issue-42234-unknown-receiver-type.generic_arg.stderr b/tests/ui/span/issue-42234-unknown-receiver-type.generic_arg.stderr similarity index 100% rename from src/test/ui/span/issue-42234-unknown-receiver-type.generic_arg.stderr rename to tests/ui/span/issue-42234-unknown-receiver-type.generic_arg.stderr diff --git a/src/test/ui/span/issue-42234-unknown-receiver-type.rs b/tests/ui/span/issue-42234-unknown-receiver-type.rs similarity index 100% rename from src/test/ui/span/issue-42234-unknown-receiver-type.rs rename to tests/ui/span/issue-42234-unknown-receiver-type.rs diff --git a/src/test/ui/span/issue-43927-non-ADT-derive.rs b/tests/ui/span/issue-43927-non-ADT-derive.rs similarity index 100% rename from src/test/ui/span/issue-43927-non-ADT-derive.rs rename to tests/ui/span/issue-43927-non-ADT-derive.rs diff --git a/src/test/ui/span/issue-43927-non-ADT-derive.stderr b/tests/ui/span/issue-43927-non-ADT-derive.stderr similarity index 100% rename from src/test/ui/span/issue-43927-non-ADT-derive.stderr rename to tests/ui/span/issue-43927-non-ADT-derive.stderr diff --git a/src/test/ui/span/issue-71363.rs b/tests/ui/span/issue-71363.rs similarity index 100% rename from src/test/ui/span/issue-71363.rs rename to tests/ui/span/issue-71363.rs diff --git a/src/test/ui/span/issue-71363.stderr b/tests/ui/span/issue-71363.stderr similarity index 100% rename from src/test/ui/span/issue-71363.stderr rename to tests/ui/span/issue-71363.stderr diff --git a/src/test/ui/span/issue-81800.rs b/tests/ui/span/issue-81800.rs similarity index 100% rename from src/test/ui/span/issue-81800.rs rename to tests/ui/span/issue-81800.rs diff --git a/src/test/ui/span/issue-81800.stderr b/tests/ui/span/issue-81800.stderr similarity index 100% rename from src/test/ui/span/issue-81800.stderr rename to tests/ui/span/issue-81800.stderr diff --git a/src/test/ui/span/issue28498-reject-ex1.rs b/tests/ui/span/issue28498-reject-ex1.rs similarity index 100% rename from src/test/ui/span/issue28498-reject-ex1.rs rename to tests/ui/span/issue28498-reject-ex1.rs diff --git a/src/test/ui/span/issue28498-reject-ex1.stderr b/tests/ui/span/issue28498-reject-ex1.stderr similarity index 100% rename from src/test/ui/span/issue28498-reject-ex1.stderr rename to tests/ui/span/issue28498-reject-ex1.stderr diff --git a/src/test/ui/span/issue28498-reject-lifetime-param.rs b/tests/ui/span/issue28498-reject-lifetime-param.rs similarity index 100% rename from src/test/ui/span/issue28498-reject-lifetime-param.rs rename to tests/ui/span/issue28498-reject-lifetime-param.rs diff --git a/src/test/ui/span/issue28498-reject-lifetime-param.stderr b/tests/ui/span/issue28498-reject-lifetime-param.stderr similarity index 100% rename from src/test/ui/span/issue28498-reject-lifetime-param.stderr rename to tests/ui/span/issue28498-reject-lifetime-param.stderr diff --git a/src/test/ui/span/issue28498-reject-passed-to-fn.rs b/tests/ui/span/issue28498-reject-passed-to-fn.rs similarity index 100% rename from src/test/ui/span/issue28498-reject-passed-to-fn.rs rename to tests/ui/span/issue28498-reject-passed-to-fn.rs diff --git a/src/test/ui/span/issue28498-reject-passed-to-fn.stderr b/tests/ui/span/issue28498-reject-passed-to-fn.stderr similarity index 100% rename from src/test/ui/span/issue28498-reject-passed-to-fn.stderr rename to tests/ui/span/issue28498-reject-passed-to-fn.stderr diff --git a/src/test/ui/span/issue28498-reject-trait-bound.rs b/tests/ui/span/issue28498-reject-trait-bound.rs similarity index 100% rename from src/test/ui/span/issue28498-reject-trait-bound.rs rename to tests/ui/span/issue28498-reject-trait-bound.rs diff --git a/src/test/ui/span/issue28498-reject-trait-bound.stderr b/tests/ui/span/issue28498-reject-trait-bound.stderr similarity index 100% rename from src/test/ui/span/issue28498-reject-trait-bound.stderr rename to tests/ui/span/issue28498-reject-trait-bound.stderr diff --git a/src/test/ui/span/lint-unused-unsafe-thir.rs b/tests/ui/span/lint-unused-unsafe-thir.rs similarity index 100% rename from src/test/ui/span/lint-unused-unsafe-thir.rs rename to tests/ui/span/lint-unused-unsafe-thir.rs diff --git a/src/test/ui/span/lint-unused-unsafe-thir.stderr b/tests/ui/span/lint-unused-unsafe-thir.stderr similarity index 100% rename from src/test/ui/span/lint-unused-unsafe-thir.stderr rename to tests/ui/span/lint-unused-unsafe-thir.stderr diff --git a/src/test/ui/span/lint-unused-unsafe.mir.stderr b/tests/ui/span/lint-unused-unsafe.mir.stderr similarity index 100% rename from src/test/ui/span/lint-unused-unsafe.mir.stderr rename to tests/ui/span/lint-unused-unsafe.mir.stderr diff --git a/src/test/ui/span/lint-unused-unsafe.rs b/tests/ui/span/lint-unused-unsafe.rs similarity index 100% rename from src/test/ui/span/lint-unused-unsafe.rs rename to tests/ui/span/lint-unused-unsafe.rs diff --git a/src/test/ui/span/macro-span-replacement.rs b/tests/ui/span/macro-span-replacement.rs similarity index 100% rename from src/test/ui/span/macro-span-replacement.rs rename to tests/ui/span/macro-span-replacement.rs diff --git a/src/test/ui/span/macro-span-replacement.stderr b/tests/ui/span/macro-span-replacement.stderr similarity index 100% rename from src/test/ui/span/macro-span-replacement.stderr rename to tests/ui/span/macro-span-replacement.stderr diff --git a/src/test/ui/span/macro-ty-params.rs b/tests/ui/span/macro-ty-params.rs similarity index 100% rename from src/test/ui/span/macro-ty-params.rs rename to tests/ui/span/macro-ty-params.rs diff --git a/src/test/ui/span/macro-ty-params.stderr b/tests/ui/span/macro-ty-params.stderr similarity index 100% rename from src/test/ui/span/macro-ty-params.stderr rename to tests/ui/span/macro-ty-params.stderr diff --git a/src/test/ui/span/method-and-field-eager-resolution.rs b/tests/ui/span/method-and-field-eager-resolution.rs similarity index 100% rename from src/test/ui/span/method-and-field-eager-resolution.rs rename to tests/ui/span/method-and-field-eager-resolution.rs diff --git a/src/test/ui/span/method-and-field-eager-resolution.stderr b/tests/ui/span/method-and-field-eager-resolution.stderr similarity index 100% rename from src/test/ui/span/method-and-field-eager-resolution.stderr rename to tests/ui/span/method-and-field-eager-resolution.stderr diff --git a/src/test/ui/span/missing-unit-argument.rs b/tests/ui/span/missing-unit-argument.rs similarity index 100% rename from src/test/ui/span/missing-unit-argument.rs rename to tests/ui/span/missing-unit-argument.rs diff --git a/src/test/ui/span/missing-unit-argument.stderr b/tests/ui/span/missing-unit-argument.stderr similarity index 100% rename from src/test/ui/span/missing-unit-argument.stderr rename to tests/ui/span/missing-unit-argument.stderr diff --git a/src/test/ui/span/move-closure.rs b/tests/ui/span/move-closure.rs similarity index 100% rename from src/test/ui/span/move-closure.rs rename to tests/ui/span/move-closure.rs diff --git a/src/test/ui/span/move-closure.stderr b/tests/ui/span/move-closure.stderr similarity index 100% rename from src/test/ui/span/move-closure.stderr rename to tests/ui/span/move-closure.stderr diff --git a/src/test/ui/span/multiline-span-E0072.rs b/tests/ui/span/multiline-span-E0072.rs similarity index 100% rename from src/test/ui/span/multiline-span-E0072.rs rename to tests/ui/span/multiline-span-E0072.rs diff --git a/src/test/ui/span/multiline-span-E0072.stderr b/tests/ui/span/multiline-span-E0072.stderr similarity index 100% rename from src/test/ui/span/multiline-span-E0072.stderr rename to tests/ui/span/multiline-span-E0072.stderr diff --git a/src/test/ui/span/multiline-span-simple.rs b/tests/ui/span/multiline-span-simple.rs similarity index 100% rename from src/test/ui/span/multiline-span-simple.rs rename to tests/ui/span/multiline-span-simple.rs diff --git a/src/test/ui/span/multiline-span-simple.stderr b/tests/ui/span/multiline-span-simple.stderr similarity index 100% rename from src/test/ui/span/multiline-span-simple.stderr rename to tests/ui/span/multiline-span-simple.stderr diff --git a/src/test/ui/span/multispan-import-lint.rs b/tests/ui/span/multispan-import-lint.rs similarity index 100% rename from src/test/ui/span/multispan-import-lint.rs rename to tests/ui/span/multispan-import-lint.rs diff --git a/src/test/ui/span/multispan-import-lint.stderr b/tests/ui/span/multispan-import-lint.stderr similarity index 100% rename from src/test/ui/span/multispan-import-lint.stderr rename to tests/ui/span/multispan-import-lint.stderr diff --git a/src/test/ui/span/mut-arg-hint.rs b/tests/ui/span/mut-arg-hint.rs similarity index 100% rename from src/test/ui/span/mut-arg-hint.rs rename to tests/ui/span/mut-arg-hint.rs diff --git a/src/test/ui/span/mut-arg-hint.stderr b/tests/ui/span/mut-arg-hint.stderr similarity index 100% rename from src/test/ui/span/mut-arg-hint.stderr rename to tests/ui/span/mut-arg-hint.stderr diff --git a/src/test/ui/span/mut-ptr-cant-outlive-ref.rs b/tests/ui/span/mut-ptr-cant-outlive-ref.rs similarity index 100% rename from src/test/ui/span/mut-ptr-cant-outlive-ref.rs rename to tests/ui/span/mut-ptr-cant-outlive-ref.rs diff --git a/src/test/ui/span/mut-ptr-cant-outlive-ref.stderr b/tests/ui/span/mut-ptr-cant-outlive-ref.stderr similarity index 100% rename from src/test/ui/span/mut-ptr-cant-outlive-ref.stderr rename to tests/ui/span/mut-ptr-cant-outlive-ref.stderr diff --git a/src/test/ui/span/non-existing-module-import.rs b/tests/ui/span/non-existing-module-import.rs similarity index 100% rename from src/test/ui/span/non-existing-module-import.rs rename to tests/ui/span/non-existing-module-import.rs diff --git a/src/test/ui/span/non-existing-module-import.stderr b/tests/ui/span/non-existing-module-import.stderr similarity index 100% rename from src/test/ui/span/non-existing-module-import.stderr rename to tests/ui/span/non-existing-module-import.stderr diff --git a/src/test/ui/span/pub-struct-field.rs b/tests/ui/span/pub-struct-field.rs similarity index 100% rename from src/test/ui/span/pub-struct-field.rs rename to tests/ui/span/pub-struct-field.rs diff --git a/src/test/ui/span/pub-struct-field.stderr b/tests/ui/span/pub-struct-field.stderr similarity index 100% rename from src/test/ui/span/pub-struct-field.stderr rename to tests/ui/span/pub-struct-field.stderr diff --git a/src/test/ui/span/range-2.rs b/tests/ui/span/range-2.rs similarity index 100% rename from src/test/ui/span/range-2.rs rename to tests/ui/span/range-2.rs diff --git a/src/test/ui/span/range-2.stderr b/tests/ui/span/range-2.stderr similarity index 100% rename from src/test/ui/span/range-2.stderr rename to tests/ui/span/range-2.stderr diff --git a/src/test/ui/span/recursive-type-field.rs b/tests/ui/span/recursive-type-field.rs similarity index 100% rename from src/test/ui/span/recursive-type-field.rs rename to tests/ui/span/recursive-type-field.rs diff --git a/src/test/ui/span/recursive-type-field.stderr b/tests/ui/span/recursive-type-field.stderr similarity index 100% rename from src/test/ui/span/recursive-type-field.stderr rename to tests/ui/span/recursive-type-field.stderr diff --git a/src/test/ui/span/regionck-unboxed-closure-lifetimes.rs b/tests/ui/span/regionck-unboxed-closure-lifetimes.rs similarity index 100% rename from src/test/ui/span/regionck-unboxed-closure-lifetimes.rs rename to tests/ui/span/regionck-unboxed-closure-lifetimes.rs diff --git a/src/test/ui/span/regionck-unboxed-closure-lifetimes.stderr b/tests/ui/span/regionck-unboxed-closure-lifetimes.stderr similarity index 100% rename from src/test/ui/span/regionck-unboxed-closure-lifetimes.stderr rename to tests/ui/span/regionck-unboxed-closure-lifetimes.stderr diff --git a/src/test/ui/span/regions-close-over-borrowed-ref-in-obj.rs b/tests/ui/span/regions-close-over-borrowed-ref-in-obj.rs similarity index 100% rename from src/test/ui/span/regions-close-over-borrowed-ref-in-obj.rs rename to tests/ui/span/regions-close-over-borrowed-ref-in-obj.rs diff --git a/src/test/ui/span/regions-close-over-borrowed-ref-in-obj.stderr b/tests/ui/span/regions-close-over-borrowed-ref-in-obj.stderr similarity index 100% rename from src/test/ui/span/regions-close-over-borrowed-ref-in-obj.stderr rename to tests/ui/span/regions-close-over-borrowed-ref-in-obj.stderr diff --git a/src/test/ui/span/regions-close-over-type-parameter-2.rs b/tests/ui/span/regions-close-over-type-parameter-2.rs similarity index 100% rename from src/test/ui/span/regions-close-over-type-parameter-2.rs rename to tests/ui/span/regions-close-over-type-parameter-2.rs diff --git a/src/test/ui/span/regions-close-over-type-parameter-2.stderr b/tests/ui/span/regions-close-over-type-parameter-2.stderr similarity index 100% rename from src/test/ui/span/regions-close-over-type-parameter-2.stderr rename to tests/ui/span/regions-close-over-type-parameter-2.stderr diff --git a/src/test/ui/span/regions-escape-loop-via-variable.rs b/tests/ui/span/regions-escape-loop-via-variable.rs similarity index 100% rename from src/test/ui/span/regions-escape-loop-via-variable.rs rename to tests/ui/span/regions-escape-loop-via-variable.rs diff --git a/src/test/ui/span/regions-escape-loop-via-variable.stderr b/tests/ui/span/regions-escape-loop-via-variable.stderr similarity index 100% rename from src/test/ui/span/regions-escape-loop-via-variable.stderr rename to tests/ui/span/regions-escape-loop-via-variable.stderr diff --git a/src/test/ui/span/regions-escape-loop-via-vec.rs b/tests/ui/span/regions-escape-loop-via-vec.rs similarity index 100% rename from src/test/ui/span/regions-escape-loop-via-vec.rs rename to tests/ui/span/regions-escape-loop-via-vec.rs diff --git a/src/test/ui/span/regions-escape-loop-via-vec.stderr b/tests/ui/span/regions-escape-loop-via-vec.stderr similarity index 100% rename from src/test/ui/span/regions-escape-loop-via-vec.stderr rename to tests/ui/span/regions-escape-loop-via-vec.stderr diff --git a/src/test/ui/span/regions-infer-borrow-scope-within-loop.rs b/tests/ui/span/regions-infer-borrow-scope-within-loop.rs similarity index 100% rename from src/test/ui/span/regions-infer-borrow-scope-within-loop.rs rename to tests/ui/span/regions-infer-borrow-scope-within-loop.rs diff --git a/src/test/ui/span/regions-infer-borrow-scope-within-loop.stderr b/tests/ui/span/regions-infer-borrow-scope-within-loop.stderr similarity index 100% rename from src/test/ui/span/regions-infer-borrow-scope-within-loop.stderr rename to tests/ui/span/regions-infer-borrow-scope-within-loop.stderr diff --git a/src/test/ui/span/send-is-not-static-ensures-scoping.rs b/tests/ui/span/send-is-not-static-ensures-scoping.rs similarity index 100% rename from src/test/ui/span/send-is-not-static-ensures-scoping.rs rename to tests/ui/span/send-is-not-static-ensures-scoping.rs diff --git a/src/test/ui/span/send-is-not-static-ensures-scoping.stderr b/tests/ui/span/send-is-not-static-ensures-scoping.stderr similarity index 100% rename from src/test/ui/span/send-is-not-static-ensures-scoping.stderr rename to tests/ui/span/send-is-not-static-ensures-scoping.stderr diff --git a/src/test/ui/span/send-is-not-static-std-sync-2.rs b/tests/ui/span/send-is-not-static-std-sync-2.rs similarity index 100% rename from src/test/ui/span/send-is-not-static-std-sync-2.rs rename to tests/ui/span/send-is-not-static-std-sync-2.rs diff --git a/src/test/ui/span/send-is-not-static-std-sync-2.stderr b/tests/ui/span/send-is-not-static-std-sync-2.stderr similarity index 100% rename from src/test/ui/span/send-is-not-static-std-sync-2.stderr rename to tests/ui/span/send-is-not-static-std-sync-2.stderr diff --git a/src/test/ui/span/send-is-not-static-std-sync.rs b/tests/ui/span/send-is-not-static-std-sync.rs similarity index 100% rename from src/test/ui/span/send-is-not-static-std-sync.rs rename to tests/ui/span/send-is-not-static-std-sync.rs diff --git a/src/test/ui/span/send-is-not-static-std-sync.stderr b/tests/ui/span/send-is-not-static-std-sync.stderr similarity index 100% rename from src/test/ui/span/send-is-not-static-std-sync.stderr rename to tests/ui/span/send-is-not-static-std-sync.stderr diff --git a/src/test/ui/span/slice-borrow.rs b/tests/ui/span/slice-borrow.rs similarity index 100% rename from src/test/ui/span/slice-borrow.rs rename to tests/ui/span/slice-borrow.rs diff --git a/src/test/ui/span/slice-borrow.stderr b/tests/ui/span/slice-borrow.stderr similarity index 100% rename from src/test/ui/span/slice-borrow.stderr rename to tests/ui/span/slice-borrow.stderr diff --git a/src/test/ui/span/suggestion-non-ascii.rs b/tests/ui/span/suggestion-non-ascii.rs similarity index 100% rename from src/test/ui/span/suggestion-non-ascii.rs rename to tests/ui/span/suggestion-non-ascii.rs diff --git a/src/test/ui/span/suggestion-non-ascii.stderr b/tests/ui/span/suggestion-non-ascii.stderr similarity index 100% rename from src/test/ui/span/suggestion-non-ascii.stderr rename to tests/ui/span/suggestion-non-ascii.stderr diff --git a/src/test/ui/span/transitive-dep-span.rs b/tests/ui/span/transitive-dep-span.rs similarity index 100% rename from src/test/ui/span/transitive-dep-span.rs rename to tests/ui/span/transitive-dep-span.rs diff --git a/src/test/ui/span/transitive-dep-span.stderr b/tests/ui/span/transitive-dep-span.stderr similarity index 100% rename from src/test/ui/span/transitive-dep-span.stderr rename to tests/ui/span/transitive-dep-span.stderr diff --git a/src/test/ui/span/type-annotations-needed-expr.rs b/tests/ui/span/type-annotations-needed-expr.rs similarity index 100% rename from src/test/ui/span/type-annotations-needed-expr.rs rename to tests/ui/span/type-annotations-needed-expr.rs diff --git a/src/test/ui/span/type-annotations-needed-expr.stderr b/tests/ui/span/type-annotations-needed-expr.stderr similarity index 100% rename from src/test/ui/span/type-annotations-needed-expr.stderr rename to tests/ui/span/type-annotations-needed-expr.stderr diff --git a/src/test/ui/span/type-binding.rs b/tests/ui/span/type-binding.rs similarity index 100% rename from src/test/ui/span/type-binding.rs rename to tests/ui/span/type-binding.rs diff --git a/src/test/ui/span/type-binding.stderr b/tests/ui/span/type-binding.stderr similarity index 100% rename from src/test/ui/span/type-binding.stderr rename to tests/ui/span/type-binding.stderr diff --git a/src/test/ui/span/typo-suggestion.rs b/tests/ui/span/typo-suggestion.rs similarity index 100% rename from src/test/ui/span/typo-suggestion.rs rename to tests/ui/span/typo-suggestion.rs diff --git a/src/test/ui/span/typo-suggestion.stderr b/tests/ui/span/typo-suggestion.stderr similarity index 100% rename from src/test/ui/span/typo-suggestion.stderr rename to tests/ui/span/typo-suggestion.stderr diff --git a/src/test/ui/span/unused-warning-point-at-identifier.rs b/tests/ui/span/unused-warning-point-at-identifier.rs similarity index 100% rename from src/test/ui/span/unused-warning-point-at-identifier.rs rename to tests/ui/span/unused-warning-point-at-identifier.rs diff --git a/src/test/ui/span/unused-warning-point-at-identifier.stderr b/tests/ui/span/unused-warning-point-at-identifier.stderr similarity index 100% rename from src/test/ui/span/unused-warning-point-at-identifier.stderr rename to tests/ui/span/unused-warning-point-at-identifier.stderr diff --git a/src/test/ui/span/vec-must-not-hide-type-from-dropck.rs b/tests/ui/span/vec-must-not-hide-type-from-dropck.rs similarity index 100% rename from src/test/ui/span/vec-must-not-hide-type-from-dropck.rs rename to tests/ui/span/vec-must-not-hide-type-from-dropck.rs diff --git a/src/test/ui/span/vec-must-not-hide-type-from-dropck.stderr b/tests/ui/span/vec-must-not-hide-type-from-dropck.stderr similarity index 100% rename from src/test/ui/span/vec-must-not-hide-type-from-dropck.stderr rename to tests/ui/span/vec-must-not-hide-type-from-dropck.stderr diff --git a/src/test/ui/span/vec_refs_data_with_early_death.rs b/tests/ui/span/vec_refs_data_with_early_death.rs similarity index 100% rename from src/test/ui/span/vec_refs_data_with_early_death.rs rename to tests/ui/span/vec_refs_data_with_early_death.rs diff --git a/src/test/ui/span/vec_refs_data_with_early_death.stderr b/tests/ui/span/vec_refs_data_with_early_death.stderr similarity index 100% rename from src/test/ui/span/vec_refs_data_with_early_death.stderr rename to tests/ui/span/vec_refs_data_with_early_death.stderr diff --git a/src/test/ui/span/visibility-ty-params.rs b/tests/ui/span/visibility-ty-params.rs similarity index 100% rename from src/test/ui/span/visibility-ty-params.rs rename to tests/ui/span/visibility-ty-params.rs diff --git a/src/test/ui/span/visibility-ty-params.stderr b/tests/ui/span/visibility-ty-params.stderr similarity index 100% rename from src/test/ui/span/visibility-ty-params.stderr rename to tests/ui/span/visibility-ty-params.stderr diff --git a/src/test/ui/span/wf-method-late-bound-regions.rs b/tests/ui/span/wf-method-late-bound-regions.rs similarity index 100% rename from src/test/ui/span/wf-method-late-bound-regions.rs rename to tests/ui/span/wf-method-late-bound-regions.rs diff --git a/src/test/ui/span/wf-method-late-bound-regions.stderr b/tests/ui/span/wf-method-late-bound-regions.stderr similarity index 100% rename from src/test/ui/span/wf-method-late-bound-regions.stderr rename to tests/ui/span/wf-method-late-bound-regions.stderr diff --git a/src/test/ui/specialization/README-rpass.md b/tests/ui/specialization/README-rpass.md similarity index 100% rename from src/test/ui/specialization/README-rpass.md rename to tests/ui/specialization/README-rpass.md diff --git a/src/test/ui/specialization/README.md b/tests/ui/specialization/README.md similarity index 100% rename from src/test/ui/specialization/README.md rename to tests/ui/specialization/README.md diff --git a/src/test/ui/specialization/assoc-ty-graph-cycle.rs b/tests/ui/specialization/assoc-ty-graph-cycle.rs similarity index 100% rename from src/test/ui/specialization/assoc-ty-graph-cycle.rs rename to tests/ui/specialization/assoc-ty-graph-cycle.rs diff --git a/src/test/ui/specialization/assoc-ty-graph-cycle.stderr b/tests/ui/specialization/assoc-ty-graph-cycle.stderr similarity index 100% rename from src/test/ui/specialization/assoc-ty-graph-cycle.stderr rename to tests/ui/specialization/assoc-ty-graph-cycle.stderr diff --git a/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs b/tests/ui/specialization/auxiliary/cross_crates_defaults.rs similarity index 100% rename from src/test/ui/specialization/auxiliary/cross_crates_defaults.rs rename to tests/ui/specialization/auxiliary/cross_crates_defaults.rs diff --git a/src/test/ui/specialization/auxiliary/go_trait.rs b/tests/ui/specialization/auxiliary/go_trait.rs similarity index 100% rename from src/test/ui/specialization/auxiliary/go_trait.rs rename to tests/ui/specialization/auxiliary/go_trait.rs diff --git a/src/test/ui/specialization/auxiliary/specialization_cross_crate.rs b/tests/ui/specialization/auxiliary/specialization_cross_crate.rs similarity index 100% rename from src/test/ui/specialization/auxiliary/specialization_cross_crate.rs rename to tests/ui/specialization/auxiliary/specialization_cross_crate.rs diff --git a/src/test/ui/specialization/const_trait_impl.rs b/tests/ui/specialization/const_trait_impl.rs similarity index 100% rename from src/test/ui/specialization/const_trait_impl.rs rename to tests/ui/specialization/const_trait_impl.rs diff --git a/src/test/ui/specialization/cross-crate-defaults.rs b/tests/ui/specialization/cross-crate-defaults.rs similarity index 100% rename from src/test/ui/specialization/cross-crate-defaults.rs rename to tests/ui/specialization/cross-crate-defaults.rs diff --git a/src/test/ui/specialization/cross-crate-defaults.stderr b/tests/ui/specialization/cross-crate-defaults.stderr similarity index 100% rename from src/test/ui/specialization/cross-crate-defaults.stderr rename to tests/ui/specialization/cross-crate-defaults.stderr diff --git a/src/test/ui/specialization/default-associated-type-bound-1.rs b/tests/ui/specialization/default-associated-type-bound-1.rs similarity index 100% rename from src/test/ui/specialization/default-associated-type-bound-1.rs rename to tests/ui/specialization/default-associated-type-bound-1.rs diff --git a/src/test/ui/specialization/default-associated-type-bound-1.stderr b/tests/ui/specialization/default-associated-type-bound-1.stderr similarity index 100% rename from src/test/ui/specialization/default-associated-type-bound-1.stderr rename to tests/ui/specialization/default-associated-type-bound-1.stderr diff --git a/src/test/ui/specialization/default-associated-type-bound-2.rs b/tests/ui/specialization/default-associated-type-bound-2.rs similarity index 100% rename from src/test/ui/specialization/default-associated-type-bound-2.rs rename to tests/ui/specialization/default-associated-type-bound-2.rs diff --git a/src/test/ui/specialization/default-associated-type-bound-2.stderr b/tests/ui/specialization/default-associated-type-bound-2.stderr similarity index 100% rename from src/test/ui/specialization/default-associated-type-bound-2.stderr rename to tests/ui/specialization/default-associated-type-bound-2.stderr diff --git a/src/test/ui/specialization/default-generic-associated-type-bound.rs b/tests/ui/specialization/default-generic-associated-type-bound.rs similarity index 100% rename from src/test/ui/specialization/default-generic-associated-type-bound.rs rename to tests/ui/specialization/default-generic-associated-type-bound.rs diff --git a/src/test/ui/specialization/default-generic-associated-type-bound.stderr b/tests/ui/specialization/default-generic-associated-type-bound.stderr similarity index 100% rename from src/test/ui/specialization/default-generic-associated-type-bound.stderr rename to tests/ui/specialization/default-generic-associated-type-bound.stderr diff --git a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs b/tests/ui/specialization/defaultimpl/allowed-cross-crate.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs rename to tests/ui/specialization/defaultimpl/allowed-cross-crate.rs diff --git a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr b/tests/ui/specialization/defaultimpl/allowed-cross-crate.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr rename to tests/ui/specialization/defaultimpl/allowed-cross-crate.stderr diff --git a/src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs b/tests/ui/specialization/defaultimpl/auxiliary/go_trait.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs rename to tests/ui/specialization/defaultimpl/auxiliary/go_trait.rs diff --git a/src/test/ui/specialization/defaultimpl/out-of-order.rs b/tests/ui/specialization/defaultimpl/out-of-order.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/out-of-order.rs rename to tests/ui/specialization/defaultimpl/out-of-order.rs diff --git a/src/test/ui/specialization/defaultimpl/out-of-order.stderr b/tests/ui/specialization/defaultimpl/out-of-order.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/out-of-order.stderr rename to tests/ui/specialization/defaultimpl/out-of-order.stderr diff --git a/src/test/ui/specialization/defaultimpl/overlap-projection.rs b/tests/ui/specialization/defaultimpl/overlap-projection.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/overlap-projection.rs rename to tests/ui/specialization/defaultimpl/overlap-projection.rs diff --git a/src/test/ui/specialization/defaultimpl/overlap-projection.stderr b/tests/ui/specialization/defaultimpl/overlap-projection.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/overlap-projection.stderr rename to tests/ui/specialization/defaultimpl/overlap-projection.stderr diff --git a/src/test/ui/specialization/defaultimpl/projection.rs b/tests/ui/specialization/defaultimpl/projection.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/projection.rs rename to tests/ui/specialization/defaultimpl/projection.rs diff --git a/src/test/ui/specialization/defaultimpl/projection.stderr b/tests/ui/specialization/defaultimpl/projection.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/projection.stderr rename to tests/ui/specialization/defaultimpl/projection.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs b/tests/ui/specialization/defaultimpl/specialization-feature-gate-default.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs rename to tests/ui/specialization/defaultimpl/specialization-feature-gate-default.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr b/tests/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr rename to tests/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-no-default.rs b/tests/ui/specialization/defaultimpl/specialization-no-default.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-no-default.rs rename to tests/ui/specialization/defaultimpl/specialization-no-default.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-no-default.stderr b/tests/ui/specialization/defaultimpl/specialization-no-default.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-no-default.stderr rename to tests/ui/specialization/defaultimpl/specialization-no-default.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs b/tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs rename to tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr b/tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr rename to tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs b/tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs rename to tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr b/tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr rename to tests/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs b/tests/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs rename to tests/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr b/tests/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr rename to tests/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr diff --git a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs b/tests/ui/specialization/defaultimpl/specialization-wfcheck.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs rename to tests/ui/specialization/defaultimpl/specialization-wfcheck.rs diff --git a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr b/tests/ui/specialization/defaultimpl/specialization-wfcheck.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr rename to tests/ui/specialization/defaultimpl/specialization-wfcheck.stderr diff --git a/src/test/ui/specialization/defaultimpl/validation.rs b/tests/ui/specialization/defaultimpl/validation.rs similarity index 100% rename from src/test/ui/specialization/defaultimpl/validation.rs rename to tests/ui/specialization/defaultimpl/validation.rs diff --git a/src/test/ui/specialization/defaultimpl/validation.stderr b/tests/ui/specialization/defaultimpl/validation.stderr similarity index 100% rename from src/test/ui/specialization/defaultimpl/validation.stderr rename to tests/ui/specialization/defaultimpl/validation.stderr diff --git a/src/test/ui/specialization/issue-33017.rs b/tests/ui/specialization/issue-33017.rs similarity index 100% rename from src/test/ui/specialization/issue-33017.rs rename to tests/ui/specialization/issue-33017.rs diff --git a/src/test/ui/specialization/issue-33017.stderr b/tests/ui/specialization/issue-33017.stderr similarity index 100% rename from src/test/ui/specialization/issue-33017.stderr rename to tests/ui/specialization/issue-33017.stderr diff --git a/src/test/ui/specialization/issue-35376.rs b/tests/ui/specialization/issue-35376.rs similarity index 100% rename from src/test/ui/specialization/issue-35376.rs rename to tests/ui/specialization/issue-35376.rs diff --git a/src/test/ui/specialization/issue-35376.stderr b/tests/ui/specialization/issue-35376.stderr similarity index 100% rename from src/test/ui/specialization/issue-35376.stderr rename to tests/ui/specialization/issue-35376.stderr diff --git a/src/test/ui/specialization/issue-36804.rs b/tests/ui/specialization/issue-36804.rs similarity index 100% rename from src/test/ui/specialization/issue-36804.rs rename to tests/ui/specialization/issue-36804.rs diff --git a/src/test/ui/specialization/issue-36804.stderr b/tests/ui/specialization/issue-36804.stderr similarity index 100% rename from src/test/ui/specialization/issue-36804.stderr rename to tests/ui/specialization/issue-36804.stderr diff --git a/src/test/ui/specialization/issue-38091-2.rs b/tests/ui/specialization/issue-38091-2.rs similarity index 100% rename from src/test/ui/specialization/issue-38091-2.rs rename to tests/ui/specialization/issue-38091-2.rs diff --git a/src/test/ui/specialization/issue-38091-2.stderr b/tests/ui/specialization/issue-38091-2.stderr similarity index 100% rename from src/test/ui/specialization/issue-38091-2.stderr rename to tests/ui/specialization/issue-38091-2.stderr diff --git a/src/test/ui/specialization/issue-38091.rs b/tests/ui/specialization/issue-38091.rs similarity index 100% rename from src/test/ui/specialization/issue-38091.rs rename to tests/ui/specialization/issue-38091.rs diff --git a/src/test/ui/specialization/issue-38091.stderr b/tests/ui/specialization/issue-38091.stderr similarity index 100% rename from src/test/ui/specialization/issue-38091.stderr rename to tests/ui/specialization/issue-38091.stderr diff --git a/src/test/ui/specialization/issue-39448.rs b/tests/ui/specialization/issue-39448.rs similarity index 100% rename from src/test/ui/specialization/issue-39448.rs rename to tests/ui/specialization/issue-39448.rs diff --git a/src/test/ui/specialization/issue-39448.stderr b/tests/ui/specialization/issue-39448.stderr similarity index 100% rename from src/test/ui/specialization/issue-39448.stderr rename to tests/ui/specialization/issue-39448.stderr diff --git a/src/test/ui/specialization/issue-39618.rs b/tests/ui/specialization/issue-39618.rs similarity index 100% rename from src/test/ui/specialization/issue-39618.rs rename to tests/ui/specialization/issue-39618.rs diff --git a/src/test/ui/specialization/issue-39618.stderr b/tests/ui/specialization/issue-39618.stderr similarity index 100% rename from src/test/ui/specialization/issue-39618.stderr rename to tests/ui/specialization/issue-39618.stderr diff --git a/src/test/ui/specialization/issue-43037.current.stderr b/tests/ui/specialization/issue-43037.current.stderr similarity index 100% rename from src/test/ui/specialization/issue-43037.current.stderr rename to tests/ui/specialization/issue-43037.current.stderr diff --git a/src/test/ui/specialization/issue-43037.negative.stderr b/tests/ui/specialization/issue-43037.negative.stderr similarity index 100% rename from src/test/ui/specialization/issue-43037.negative.stderr rename to tests/ui/specialization/issue-43037.negative.stderr diff --git a/src/test/ui/specialization/issue-43037.rs b/tests/ui/specialization/issue-43037.rs similarity index 100% rename from src/test/ui/specialization/issue-43037.rs rename to tests/ui/specialization/issue-43037.rs diff --git a/src/test/ui/specialization/issue-44861.rs b/tests/ui/specialization/issue-44861.rs similarity index 100% rename from src/test/ui/specialization/issue-44861.rs rename to tests/ui/specialization/issue-44861.rs diff --git a/src/test/ui/specialization/issue-44861.stderr b/tests/ui/specialization/issue-44861.stderr similarity index 100% rename from src/test/ui/specialization/issue-44861.stderr rename to tests/ui/specialization/issue-44861.stderr diff --git a/src/test/ui/specialization/issue-45814.current.stderr b/tests/ui/specialization/issue-45814.current.stderr similarity index 100% rename from src/test/ui/specialization/issue-45814.current.stderr rename to tests/ui/specialization/issue-45814.current.stderr diff --git a/src/test/ui/specialization/issue-45814.negative.stderr b/tests/ui/specialization/issue-45814.negative.stderr similarity index 100% rename from src/test/ui/specialization/issue-45814.negative.stderr rename to tests/ui/specialization/issue-45814.negative.stderr diff --git a/src/test/ui/specialization/issue-45814.rs b/tests/ui/specialization/issue-45814.rs similarity index 100% rename from src/test/ui/specialization/issue-45814.rs rename to tests/ui/specialization/issue-45814.rs diff --git a/src/test/ui/specialization/issue-50452-fail.rs b/tests/ui/specialization/issue-50452-fail.rs similarity index 100% rename from src/test/ui/specialization/issue-50452-fail.rs rename to tests/ui/specialization/issue-50452-fail.rs diff --git a/src/test/ui/specialization/issue-50452-fail.stderr b/tests/ui/specialization/issue-50452-fail.stderr similarity index 100% rename from src/test/ui/specialization/issue-50452-fail.stderr rename to tests/ui/specialization/issue-50452-fail.stderr diff --git a/src/test/ui/specialization/issue-50452.rs b/tests/ui/specialization/issue-50452.rs similarity index 100% rename from src/test/ui/specialization/issue-50452.rs rename to tests/ui/specialization/issue-50452.rs diff --git a/src/test/ui/specialization/issue-50452.stderr b/tests/ui/specialization/issue-50452.stderr similarity index 100% rename from src/test/ui/specialization/issue-50452.stderr rename to tests/ui/specialization/issue-50452.stderr diff --git a/src/test/ui/specialization/issue-51892.rs b/tests/ui/specialization/issue-51892.rs similarity index 100% rename from src/test/ui/specialization/issue-51892.rs rename to tests/ui/specialization/issue-51892.rs diff --git a/src/test/ui/specialization/issue-51892.stderr b/tests/ui/specialization/issue-51892.stderr similarity index 100% rename from src/test/ui/specialization/issue-51892.stderr rename to tests/ui/specialization/issue-51892.stderr diff --git a/src/test/ui/specialization/issue-52050.rs b/tests/ui/specialization/issue-52050.rs similarity index 100% rename from src/test/ui/specialization/issue-52050.rs rename to tests/ui/specialization/issue-52050.rs diff --git a/src/test/ui/specialization/issue-52050.stderr b/tests/ui/specialization/issue-52050.stderr similarity index 100% rename from src/test/ui/specialization/issue-52050.stderr rename to tests/ui/specialization/issue-52050.stderr diff --git a/src/test/ui/specialization/issue-59435.rs b/tests/ui/specialization/issue-59435.rs similarity index 100% rename from src/test/ui/specialization/issue-59435.rs rename to tests/ui/specialization/issue-59435.rs diff --git a/src/test/ui/specialization/issue-59435.stderr b/tests/ui/specialization/issue-59435.stderr similarity index 100% rename from src/test/ui/specialization/issue-59435.stderr rename to tests/ui/specialization/issue-59435.stderr diff --git a/src/test/ui/specialization/issue-63716-parse-async.rs b/tests/ui/specialization/issue-63716-parse-async.rs similarity index 100% rename from src/test/ui/specialization/issue-63716-parse-async.rs rename to tests/ui/specialization/issue-63716-parse-async.rs diff --git a/src/test/ui/specialization/issue-63716-parse-async.stderr b/tests/ui/specialization/issue-63716-parse-async.stderr similarity index 100% rename from src/test/ui/specialization/issue-63716-parse-async.stderr rename to tests/ui/specialization/issue-63716-parse-async.stderr diff --git a/src/test/ui/specialization/issue-68830-spurious-diagnostics.rs b/tests/ui/specialization/issue-68830-spurious-diagnostics.rs similarity index 100% rename from src/test/ui/specialization/issue-68830-spurious-diagnostics.rs rename to tests/ui/specialization/issue-68830-spurious-diagnostics.rs diff --git a/src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr b/tests/ui/specialization/issue-68830-spurious-diagnostics.stderr similarity index 100% rename from src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr rename to tests/ui/specialization/issue-68830-spurious-diagnostics.stderr diff --git a/src/test/ui/specialization/issue-70442.rs b/tests/ui/specialization/issue-70442.rs similarity index 100% rename from src/test/ui/specialization/issue-70442.rs rename to tests/ui/specialization/issue-70442.rs diff --git a/src/test/ui/specialization/issue-70442.stderr b/tests/ui/specialization/issue-70442.stderr similarity index 100% rename from src/test/ui/specialization/issue-70442.stderr rename to tests/ui/specialization/issue-70442.stderr diff --git a/src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs b/tests/ui/specialization/min_specialization/auxiliary/specialization-trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs rename to tests/ui/specialization/min_specialization/auxiliary/specialization-trait.rs diff --git a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs b/tests/ui/specialization/min_specialization/dyn-trait-assoc-types.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs rename to tests/ui/specialization/min_specialization/dyn-trait-assoc-types.rs diff --git a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr b/tests/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr rename to tests/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs b/tests/ui/specialization/min_specialization/impl-on-nonexisting.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs rename to tests/ui/specialization/min_specialization/impl-on-nonexisting.rs diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr b/tests/ui/specialization/min_specialization/impl-on-nonexisting.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr rename to tests/ui/specialization/min_specialization/impl-on-nonexisting.stderr diff --git a/src/test/ui/specialization/min_specialization/impl_specialization_trait.rs b/tests/ui/specialization/min_specialization/impl_specialization_trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/impl_specialization_trait.rs rename to tests/ui/specialization/min_specialization/impl_specialization_trait.rs diff --git a/src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr b/tests/ui/specialization/min_specialization/impl_specialization_trait.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr rename to tests/ui/specialization/min_specialization/impl_specialization_trait.stderr diff --git a/src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs b/tests/ui/specialization/min_specialization/implcit-well-formed-bounds.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs rename to tests/ui/specialization/min_specialization/implcit-well-formed-bounds.rs diff --git a/src/test/ui/specialization/min_specialization/issue-79224.rs b/tests/ui/specialization/min_specialization/issue-79224.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/issue-79224.rs rename to tests/ui/specialization/min_specialization/issue-79224.rs diff --git a/src/test/ui/specialization/min_specialization/issue-79224.stderr b/tests/ui/specialization/min_specialization/issue-79224.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/issue-79224.stderr rename to tests/ui/specialization/min_specialization/issue-79224.stderr diff --git a/src/test/ui/specialization/min_specialization/repeated_projection_type.rs b/tests/ui/specialization/min_specialization/repeated_projection_type.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/repeated_projection_type.rs rename to tests/ui/specialization/min_specialization/repeated_projection_type.rs diff --git a/src/test/ui/specialization/min_specialization/repeated_projection_type.stderr b/tests/ui/specialization/min_specialization/repeated_projection_type.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/repeated_projection_type.stderr rename to tests/ui/specialization/min_specialization/repeated_projection_type.stderr diff --git a/src/test/ui/specialization/min_specialization/repeating_lifetimes.rs b/tests/ui/specialization/min_specialization/repeating_lifetimes.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/repeating_lifetimes.rs rename to tests/ui/specialization/min_specialization/repeating_lifetimes.rs diff --git a/src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr b/tests/ui/specialization/min_specialization/repeating_lifetimes.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr rename to tests/ui/specialization/min_specialization/repeating_lifetimes.stderr diff --git a/src/test/ui/specialization/min_specialization/repeating_param.rs b/tests/ui/specialization/min_specialization/repeating_param.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/repeating_param.rs rename to tests/ui/specialization/min_specialization/repeating_param.rs diff --git a/src/test/ui/specialization/min_specialization/repeating_param.stderr b/tests/ui/specialization/min_specialization/repeating_param.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/repeating_param.stderr rename to tests/ui/specialization/min_specialization/repeating_param.stderr diff --git a/src/test/ui/specialization/min_specialization/spec-iter.rs b/tests/ui/specialization/min_specialization/spec-iter.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/spec-iter.rs rename to tests/ui/specialization/min_specialization/spec-iter.rs diff --git a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs b/tests/ui/specialization/min_specialization/spec-marker-supertraits.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs rename to tests/ui/specialization/min_specialization/spec-marker-supertraits.rs diff --git a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr b/tests/ui/specialization/min_specialization/spec-marker-supertraits.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr rename to tests/ui/specialization/min_specialization/spec-marker-supertraits.stderr diff --git a/src/test/ui/specialization/min_specialization/spec-reference.rs b/tests/ui/specialization/min_specialization/spec-reference.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/spec-reference.rs rename to tests/ui/specialization/min_specialization/spec-reference.rs diff --git a/src/test/ui/specialization/min_specialization/specialization_marker.rs b/tests/ui/specialization/min_specialization/specialization_marker.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_marker.rs rename to tests/ui/specialization/min_specialization/specialization_marker.rs diff --git a/src/test/ui/specialization/min_specialization/specialization_marker.stderr b/tests/ui/specialization/min_specialization/specialization_marker.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_marker.stderr rename to tests/ui/specialization/min_specialization/specialization_marker.stderr diff --git a/src/test/ui/specialization/min_specialization/specialization_super_trait.rs b/tests/ui/specialization/min_specialization/specialization_super_trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_super_trait.rs rename to tests/ui/specialization/min_specialization/specialization_super_trait.rs diff --git a/src/test/ui/specialization/min_specialization/specialization_super_trait.stderr b/tests/ui/specialization/min_specialization/specialization_super_trait.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_super_trait.stderr rename to tests/ui/specialization/min_specialization/specialization_super_trait.stderr diff --git a/src/test/ui/specialization/min_specialization/specialization_trait.rs b/tests/ui/specialization/min_specialization/specialization_trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_trait.rs rename to tests/ui/specialization/min_specialization/specialization_trait.rs diff --git a/src/test/ui/specialization/min_specialization/specialization_trait.stderr b/tests/ui/specialization/min_specialization/specialization_trait.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/specialization_trait.stderr rename to tests/ui/specialization/min_specialization/specialization_trait.stderr diff --git a/src/test/ui/specialization/min_specialization/specialize_on_marker.rs b/tests/ui/specialization/min_specialization/specialize_on_marker.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_marker.rs rename to tests/ui/specialization/min_specialization/specialize_on_marker.rs diff --git a/src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs b/tests/ui/specialization/min_specialization/specialize_on_spec_trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs rename to tests/ui/specialization/min_specialization/specialize_on_spec_trait.rs diff --git a/src/test/ui/specialization/min_specialization/specialize_on_static.rs b/tests/ui/specialization/min_specialization/specialize_on_static.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_static.rs rename to tests/ui/specialization/min_specialization/specialize_on_static.rs diff --git a/src/test/ui/specialization/min_specialization/specialize_on_static.stderr b/tests/ui/specialization/min_specialization/specialize_on_static.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_static.stderr rename to tests/ui/specialization/min_specialization/specialize_on_static.stderr diff --git a/src/test/ui/specialization/min_specialization/specialize_on_trait.rs b/tests/ui/specialization/min_specialization/specialize_on_trait.rs similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_trait.rs rename to tests/ui/specialization/min_specialization/specialize_on_trait.rs diff --git a/src/test/ui/specialization/min_specialization/specialize_on_trait.stderr b/tests/ui/specialization/min_specialization/specialize_on_trait.stderr similarity index 100% rename from src/test/ui/specialization/min_specialization/specialize_on_trait.stderr rename to tests/ui/specialization/min_specialization/specialize_on_trait.stderr diff --git a/src/test/ui/specialization/non-defaulted-item-fail.rs b/tests/ui/specialization/non-defaulted-item-fail.rs similarity index 100% rename from src/test/ui/specialization/non-defaulted-item-fail.rs rename to tests/ui/specialization/non-defaulted-item-fail.rs diff --git a/src/test/ui/specialization/non-defaulted-item-fail.stderr b/tests/ui/specialization/non-defaulted-item-fail.stderr similarity index 100% rename from src/test/ui/specialization/non-defaulted-item-fail.stderr rename to tests/ui/specialization/non-defaulted-item-fail.stderr diff --git a/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs b/tests/ui/specialization/soundness/partial_eq_range_inclusive.rs similarity index 100% rename from src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs rename to tests/ui/specialization/soundness/partial_eq_range_inclusive.rs diff --git a/src/test/ui/specialization/soundness/partial_ord_slice.rs b/tests/ui/specialization/soundness/partial_ord_slice.rs similarity index 100% rename from src/test/ui/specialization/soundness/partial_ord_slice.rs rename to tests/ui/specialization/soundness/partial_ord_slice.rs diff --git a/src/test/ui/specialization/specialization-allowed-cross-crate.rs b/tests/ui/specialization/specialization-allowed-cross-crate.rs similarity index 100% rename from src/test/ui/specialization/specialization-allowed-cross-crate.rs rename to tests/ui/specialization/specialization-allowed-cross-crate.rs diff --git a/src/test/ui/specialization/specialization-allowed-cross-crate.stderr b/tests/ui/specialization/specialization-allowed-cross-crate.stderr similarity index 100% rename from src/test/ui/specialization/specialization-allowed-cross-crate.stderr rename to tests/ui/specialization/specialization-allowed-cross-crate.stderr diff --git a/src/test/ui/specialization/specialization-assoc-fns.rs b/tests/ui/specialization/specialization-assoc-fns.rs similarity index 100% rename from src/test/ui/specialization/specialization-assoc-fns.rs rename to tests/ui/specialization/specialization-assoc-fns.rs diff --git a/src/test/ui/specialization/specialization-assoc-fns.stderr b/tests/ui/specialization/specialization-assoc-fns.stderr similarity index 100% rename from src/test/ui/specialization/specialization-assoc-fns.stderr rename to tests/ui/specialization/specialization-assoc-fns.stderr diff --git a/src/test/ui/specialization/specialization-basics.rs b/tests/ui/specialization/specialization-basics.rs similarity index 100% rename from src/test/ui/specialization/specialization-basics.rs rename to tests/ui/specialization/specialization-basics.rs diff --git a/src/test/ui/specialization/specialization-basics.stderr b/tests/ui/specialization/specialization-basics.stderr similarity index 100% rename from src/test/ui/specialization/specialization-basics.stderr rename to tests/ui/specialization/specialization-basics.stderr diff --git a/src/test/ui/specialization/specialization-cross-crate-no-gate.rs b/tests/ui/specialization/specialization-cross-crate-no-gate.rs similarity index 100% rename from src/test/ui/specialization/specialization-cross-crate-no-gate.rs rename to tests/ui/specialization/specialization-cross-crate-no-gate.rs diff --git a/src/test/ui/specialization/specialization-cross-crate.rs b/tests/ui/specialization/specialization-cross-crate.rs similarity index 100% rename from src/test/ui/specialization/specialization-cross-crate.rs rename to tests/ui/specialization/specialization-cross-crate.rs diff --git a/src/test/ui/specialization/specialization-cross-crate.stderr b/tests/ui/specialization/specialization-cross-crate.stderr similarity index 100% rename from src/test/ui/specialization/specialization-cross-crate.stderr rename to tests/ui/specialization/specialization-cross-crate.stderr diff --git a/src/test/ui/specialization/specialization-default-methods.rs b/tests/ui/specialization/specialization-default-methods.rs similarity index 100% rename from src/test/ui/specialization/specialization-default-methods.rs rename to tests/ui/specialization/specialization-default-methods.rs diff --git a/src/test/ui/specialization/specialization-default-methods.stderr b/tests/ui/specialization/specialization-default-methods.stderr similarity index 100% rename from src/test/ui/specialization/specialization-default-methods.stderr rename to tests/ui/specialization/specialization-default-methods.stderr diff --git a/src/test/ui/specialization/specialization-default-projection.rs b/tests/ui/specialization/specialization-default-projection.rs similarity index 100% rename from src/test/ui/specialization/specialization-default-projection.rs rename to tests/ui/specialization/specialization-default-projection.rs diff --git a/src/test/ui/specialization/specialization-default-projection.stderr b/tests/ui/specialization/specialization-default-projection.stderr similarity index 100% rename from src/test/ui/specialization/specialization-default-projection.stderr rename to tests/ui/specialization/specialization-default-projection.stderr diff --git a/src/test/ui/specialization/specialization-default-types.rs b/tests/ui/specialization/specialization-default-types.rs similarity index 100% rename from src/test/ui/specialization/specialization-default-types.rs rename to tests/ui/specialization/specialization-default-types.rs diff --git a/src/test/ui/specialization/specialization-default-types.stderr b/tests/ui/specialization/specialization-default-types.stderr similarity index 100% rename from src/test/ui/specialization/specialization-default-types.stderr rename to tests/ui/specialization/specialization-default-types.stderr diff --git a/src/test/ui/specialization/specialization-feature-gate-default.rs b/tests/ui/specialization/specialization-feature-gate-default.rs similarity index 100% rename from src/test/ui/specialization/specialization-feature-gate-default.rs rename to tests/ui/specialization/specialization-feature-gate-default.rs diff --git a/src/test/ui/specialization/specialization-feature-gate-default.stderr b/tests/ui/specialization/specialization-feature-gate-default.stderr similarity index 100% rename from src/test/ui/specialization/specialization-feature-gate-default.stderr rename to tests/ui/specialization/specialization-feature-gate-default.stderr diff --git a/src/test/ui/specialization/specialization-feature-gate-overlap.rs b/tests/ui/specialization/specialization-feature-gate-overlap.rs similarity index 100% rename from src/test/ui/specialization/specialization-feature-gate-overlap.rs rename to tests/ui/specialization/specialization-feature-gate-overlap.rs diff --git a/src/test/ui/specialization/specialization-feature-gate-overlap.stderr b/tests/ui/specialization/specialization-feature-gate-overlap.stderr similarity index 100% rename from src/test/ui/specialization/specialization-feature-gate-overlap.stderr rename to tests/ui/specialization/specialization-feature-gate-overlap.stderr diff --git a/src/test/ui/specialization/specialization-no-default.rs b/tests/ui/specialization/specialization-no-default.rs similarity index 100% rename from src/test/ui/specialization/specialization-no-default.rs rename to tests/ui/specialization/specialization-no-default.rs diff --git a/src/test/ui/specialization/specialization-no-default.stderr b/tests/ui/specialization/specialization-no-default.stderr similarity index 100% rename from src/test/ui/specialization/specialization-no-default.stderr rename to tests/ui/specialization/specialization-no-default.stderr diff --git a/src/test/ui/specialization/specialization-on-projection.rs b/tests/ui/specialization/specialization-on-projection.rs similarity index 100% rename from src/test/ui/specialization/specialization-on-projection.rs rename to tests/ui/specialization/specialization-on-projection.rs diff --git a/src/test/ui/specialization/specialization-on-projection.stderr b/tests/ui/specialization/specialization-on-projection.stderr similarity index 100% rename from src/test/ui/specialization/specialization-on-projection.stderr rename to tests/ui/specialization/specialization-on-projection.stderr diff --git a/src/test/ui/specialization/specialization-out-of-order.rs b/tests/ui/specialization/specialization-out-of-order.rs similarity index 100% rename from src/test/ui/specialization/specialization-out-of-order.rs rename to tests/ui/specialization/specialization-out-of-order.rs diff --git a/src/test/ui/specialization/specialization-out-of-order.stderr b/tests/ui/specialization/specialization-out-of-order.stderr similarity index 100% rename from src/test/ui/specialization/specialization-out-of-order.stderr rename to tests/ui/specialization/specialization-out-of-order.stderr diff --git a/src/test/ui/specialization/specialization-overlap-hygiene.rs b/tests/ui/specialization/specialization-overlap-hygiene.rs similarity index 100% rename from src/test/ui/specialization/specialization-overlap-hygiene.rs rename to tests/ui/specialization/specialization-overlap-hygiene.rs diff --git a/src/test/ui/specialization/specialization-overlap-hygiene.stderr b/tests/ui/specialization/specialization-overlap-hygiene.stderr similarity index 100% rename from src/test/ui/specialization/specialization-overlap-hygiene.stderr rename to tests/ui/specialization/specialization-overlap-hygiene.stderr diff --git a/src/test/ui/specialization/specialization-overlap-negative.rs b/tests/ui/specialization/specialization-overlap-negative.rs similarity index 100% rename from src/test/ui/specialization/specialization-overlap-negative.rs rename to tests/ui/specialization/specialization-overlap-negative.rs diff --git a/src/test/ui/specialization/specialization-overlap-negative.stderr b/tests/ui/specialization/specialization-overlap-negative.stderr similarity index 100% rename from src/test/ui/specialization/specialization-overlap-negative.stderr rename to tests/ui/specialization/specialization-overlap-negative.stderr diff --git a/src/test/ui/specialization/specialization-overlap-projection.rs b/tests/ui/specialization/specialization-overlap-projection.rs similarity index 100% rename from src/test/ui/specialization/specialization-overlap-projection.rs rename to tests/ui/specialization/specialization-overlap-projection.rs diff --git a/src/test/ui/specialization/specialization-overlap-projection.stderr b/tests/ui/specialization/specialization-overlap-projection.stderr similarity index 100% rename from src/test/ui/specialization/specialization-overlap-projection.stderr rename to tests/ui/specialization/specialization-overlap-projection.stderr diff --git a/src/test/ui/specialization/specialization-overlap.rs b/tests/ui/specialization/specialization-overlap.rs similarity index 100% rename from src/test/ui/specialization/specialization-overlap.rs rename to tests/ui/specialization/specialization-overlap.rs diff --git a/src/test/ui/specialization/specialization-overlap.stderr b/tests/ui/specialization/specialization-overlap.stderr similarity index 100% rename from src/test/ui/specialization/specialization-overlap.stderr rename to tests/ui/specialization/specialization-overlap.stderr diff --git a/src/test/ui/specialization/specialization-polarity.rs b/tests/ui/specialization/specialization-polarity.rs similarity index 100% rename from src/test/ui/specialization/specialization-polarity.rs rename to tests/ui/specialization/specialization-polarity.rs diff --git a/src/test/ui/specialization/specialization-polarity.stderr b/tests/ui/specialization/specialization-polarity.stderr similarity index 100% rename from src/test/ui/specialization/specialization-polarity.stderr rename to tests/ui/specialization/specialization-polarity.stderr diff --git a/src/test/ui/specialization/specialization-projection-alias.rs b/tests/ui/specialization/specialization-projection-alias.rs similarity index 100% rename from src/test/ui/specialization/specialization-projection-alias.rs rename to tests/ui/specialization/specialization-projection-alias.rs diff --git a/src/test/ui/specialization/specialization-projection-alias.stderr b/tests/ui/specialization/specialization-projection-alias.stderr similarity index 100% rename from src/test/ui/specialization/specialization-projection-alias.stderr rename to tests/ui/specialization/specialization-projection-alias.stderr diff --git a/src/test/ui/specialization/specialization-projection.rs b/tests/ui/specialization/specialization-projection.rs similarity index 100% rename from src/test/ui/specialization/specialization-projection.rs rename to tests/ui/specialization/specialization-projection.rs diff --git a/src/test/ui/specialization/specialization-projection.stderr b/tests/ui/specialization/specialization-projection.stderr similarity index 100% rename from src/test/ui/specialization/specialization-projection.stderr rename to tests/ui/specialization/specialization-projection.stderr diff --git a/src/test/ui/specialization/specialization-supertraits.rs b/tests/ui/specialization/specialization-supertraits.rs similarity index 100% rename from src/test/ui/specialization/specialization-supertraits.rs rename to tests/ui/specialization/specialization-supertraits.rs diff --git a/src/test/ui/specialization/specialization-supertraits.stderr b/tests/ui/specialization/specialization-supertraits.stderr similarity index 100% rename from src/test/ui/specialization/specialization-supertraits.stderr rename to tests/ui/specialization/specialization-supertraits.stderr diff --git a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs b/tests/ui/specialization/specialization-translate-projections-with-lifetimes.rs similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs rename to tests/ui/specialization/specialization-translate-projections-with-lifetimes.rs diff --git a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr b/tests/ui/specialization/specialization-translate-projections-with-lifetimes.stderr similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr rename to tests/ui/specialization/specialization-translate-projections-with-lifetimes.stderr diff --git a/src/test/ui/specialization/specialization-translate-projections-with-params.rs b/tests/ui/specialization/specialization-translate-projections-with-params.rs similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections-with-params.rs rename to tests/ui/specialization/specialization-translate-projections-with-params.rs diff --git a/src/test/ui/specialization/specialization-translate-projections-with-params.stderr b/tests/ui/specialization/specialization-translate-projections-with-params.stderr similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections-with-params.stderr rename to tests/ui/specialization/specialization-translate-projections-with-params.stderr diff --git a/src/test/ui/specialization/specialization-translate-projections.rs b/tests/ui/specialization/specialization-translate-projections.rs similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections.rs rename to tests/ui/specialization/specialization-translate-projections.rs diff --git a/src/test/ui/specialization/specialization-translate-projections.stderr b/tests/ui/specialization/specialization-translate-projections.stderr similarity index 100% rename from src/test/ui/specialization/specialization-translate-projections.stderr rename to tests/ui/specialization/specialization-translate-projections.stderr diff --git a/src/test/ui/specialization/transmute-specialization.rs b/tests/ui/specialization/transmute-specialization.rs similarity index 100% rename from src/test/ui/specialization/transmute-specialization.rs rename to tests/ui/specialization/transmute-specialization.rs diff --git a/src/test/ui/specialization/transmute-specialization.stderr b/tests/ui/specialization/transmute-specialization.stderr similarity index 100% rename from src/test/ui/specialization/transmute-specialization.stderr rename to tests/ui/specialization/transmute-specialization.stderr diff --git a/src/test/ui/sse2.rs b/tests/ui/sse2.rs similarity index 100% rename from src/test/ui/sse2.rs rename to tests/ui/sse2.rs diff --git a/src/test/ui/stability-attribute/accidental-stable-in-unstable.rs b/tests/ui/stability-attribute/accidental-stable-in-unstable.rs similarity index 100% rename from src/test/ui/stability-attribute/accidental-stable-in-unstable.rs rename to tests/ui/stability-attribute/accidental-stable-in-unstable.rs diff --git a/src/test/ui/stability-attribute/accidental-stable-in-unstable.stderr b/tests/ui/stability-attribute/accidental-stable-in-unstable.stderr similarity index 100% rename from src/test/ui/stability-attribute/accidental-stable-in-unstable.stderr rename to tests/ui/stability-attribute/accidental-stable-in-unstable.stderr diff --git a/src/test/ui/stability-attribute/allow-unstable-reexport.rs b/tests/ui/stability-attribute/allow-unstable-reexport.rs similarity index 100% rename from src/test/ui/stability-attribute/allow-unstable-reexport.rs rename to tests/ui/stability-attribute/allow-unstable-reexport.rs diff --git a/src/test/ui/stability-attribute/allow-unstable-reexport.stderr b/tests/ui/stability-attribute/allow-unstable-reexport.stderr similarity index 100% rename from src/test/ui/stability-attribute/allow-unstable-reexport.stderr rename to tests/ui/stability-attribute/allow-unstable-reexport.stderr diff --git a/src/test/ui/stability-attribute/allowed-through-unstable.rs b/tests/ui/stability-attribute/allowed-through-unstable.rs similarity index 100% rename from src/test/ui/stability-attribute/allowed-through-unstable.rs rename to tests/ui/stability-attribute/allowed-through-unstable.rs diff --git a/src/test/ui/stability-attribute/allowed-through-unstable.stderr b/tests/ui/stability-attribute/allowed-through-unstable.stderr similarity index 100% rename from src/test/ui/stability-attribute/allowed-through-unstable.stderr rename to tests/ui/stability-attribute/allowed-through-unstable.stderr diff --git a/src/test/ui/stability-attribute/auxiliary/allowed-through-unstable-core.rs b/tests/ui/stability-attribute/auxiliary/allowed-through-unstable-core.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/allowed-through-unstable-core.rs rename to tests/ui/stability-attribute/auxiliary/allowed-through-unstable-core.rs diff --git a/src/test/ui/stability-attribute/auxiliary/ctor-stability.rs b/tests/ui/stability-attribute/auxiliary/ctor-stability.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/ctor-stability.rs rename to tests/ui/stability-attribute/auxiliary/ctor-stability.rs diff --git a/src/test/ui/stability-attribute/auxiliary/default_body.rs b/tests/ui/stability-attribute/auxiliary/default_body.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/default_body.rs rename to tests/ui/stability-attribute/auxiliary/default_body.rs diff --git a/src/test/ui/stability-attribute/auxiliary/lint-stability-reexport.rs b/tests/ui/stability-attribute/auxiliary/lint-stability-reexport.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/lint-stability-reexport.rs rename to tests/ui/stability-attribute/auxiliary/lint-stability-reexport.rs diff --git a/src/test/ui/stability-attribute/auxiliary/lint-stability.rs b/tests/ui/stability-attribute/auxiliary/lint-stability.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/lint-stability.rs rename to tests/ui/stability-attribute/auxiliary/lint-stability.rs diff --git a/src/test/ui/stability-attribute/auxiliary/stability-attribute-implies.rs b/tests/ui/stability-attribute/auxiliary/stability-attribute-implies.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/stability-attribute-implies.rs rename to tests/ui/stability-attribute/auxiliary/stability-attribute-implies.rs diff --git a/src/test/ui/stability-attribute/auxiliary/stability_attribute_issue.rs b/tests/ui/stability-attribute/auxiliary/stability_attribute_issue.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/stability_attribute_issue.rs rename to tests/ui/stability-attribute/auxiliary/stability_attribute_issue.rs diff --git a/src/test/ui/stability-attribute/auxiliary/stable-in-unstable-core.rs b/tests/ui/stability-attribute/auxiliary/stable-in-unstable-core.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/stable-in-unstable-core.rs rename to tests/ui/stability-attribute/auxiliary/stable-in-unstable-core.rs diff --git a/src/test/ui/stability-attribute/auxiliary/stable-in-unstable-std.rs b/tests/ui/stability-attribute/auxiliary/stable-in-unstable-std.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/stable-in-unstable-std.rs rename to tests/ui/stability-attribute/auxiliary/stable-in-unstable-std.rs diff --git a/src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs b/tests/ui/stability-attribute/auxiliary/unstable_generic_param.rs similarity index 100% rename from src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs rename to tests/ui/stability-attribute/auxiliary/unstable_generic_param.rs diff --git a/src/test/ui/stability-attribute/ctor-stability.rs b/tests/ui/stability-attribute/ctor-stability.rs similarity index 100% rename from src/test/ui/stability-attribute/ctor-stability.rs rename to tests/ui/stability-attribute/ctor-stability.rs diff --git a/src/test/ui/stability-attribute/default-body-stability-err.rs b/tests/ui/stability-attribute/default-body-stability-err.rs similarity index 100% rename from src/test/ui/stability-attribute/default-body-stability-err.rs rename to tests/ui/stability-attribute/default-body-stability-err.rs diff --git a/src/test/ui/stability-attribute/default-body-stability-err.stderr b/tests/ui/stability-attribute/default-body-stability-err.stderr similarity index 100% rename from src/test/ui/stability-attribute/default-body-stability-err.stderr rename to tests/ui/stability-attribute/default-body-stability-err.stderr diff --git a/src/test/ui/stability-attribute/default-body-stability-ok-enables.rs b/tests/ui/stability-attribute/default-body-stability-ok-enables.rs similarity index 100% rename from src/test/ui/stability-attribute/default-body-stability-ok-enables.rs rename to tests/ui/stability-attribute/default-body-stability-ok-enables.rs diff --git a/src/test/ui/stability-attribute/default-body-stability-ok-impls.rs b/tests/ui/stability-attribute/default-body-stability-ok-impls.rs similarity index 100% rename from src/test/ui/stability-attribute/default-body-stability-ok-impls.rs rename to tests/ui/stability-attribute/default-body-stability-ok-impls.rs diff --git a/src/test/ui/stability-attribute/generics-default-stability-trait.rs b/tests/ui/stability-attribute/generics-default-stability-trait.rs similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability-trait.rs rename to tests/ui/stability-attribute/generics-default-stability-trait.rs diff --git a/src/test/ui/stability-attribute/generics-default-stability-trait.stderr b/tests/ui/stability-attribute/generics-default-stability-trait.stderr similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability-trait.stderr rename to tests/ui/stability-attribute/generics-default-stability-trait.stderr diff --git a/src/test/ui/stability-attribute/generics-default-stability-where.rs b/tests/ui/stability-attribute/generics-default-stability-where.rs similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability-where.rs rename to tests/ui/stability-attribute/generics-default-stability-where.rs diff --git a/src/test/ui/stability-attribute/generics-default-stability-where.stderr b/tests/ui/stability-attribute/generics-default-stability-where.stderr similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability-where.stderr rename to tests/ui/stability-attribute/generics-default-stability-where.stderr diff --git a/src/test/ui/stability-attribute/generics-default-stability.rs b/tests/ui/stability-attribute/generics-default-stability.rs similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability.rs rename to tests/ui/stability-attribute/generics-default-stability.rs diff --git a/src/test/ui/stability-attribute/generics-default-stability.stderr b/tests/ui/stability-attribute/generics-default-stability.stderr similarity index 100% rename from src/test/ui/stability-attribute/generics-default-stability.stderr rename to tests/ui/stability-attribute/generics-default-stability.stderr diff --git a/src/test/ui/stability-attribute/issue-28075.rs b/tests/ui/stability-attribute/issue-28075.rs similarity index 100% rename from src/test/ui/stability-attribute/issue-28075.rs rename to tests/ui/stability-attribute/issue-28075.rs diff --git a/src/test/ui/stability-attribute/issue-28075.stderr b/tests/ui/stability-attribute/issue-28075.stderr similarity index 100% rename from src/test/ui/stability-attribute/issue-28075.stderr rename to tests/ui/stability-attribute/issue-28075.stderr diff --git a/src/test/ui/stability-attribute/issue-28388-3.rs b/tests/ui/stability-attribute/issue-28388-3.rs similarity index 100% rename from src/test/ui/stability-attribute/issue-28388-3.rs rename to tests/ui/stability-attribute/issue-28388-3.rs diff --git a/src/test/ui/stability-attribute/issue-28388-3.stderr b/tests/ui/stability-attribute/issue-28388-3.stderr similarity index 100% rename from src/test/ui/stability-attribute/issue-28388-3.stderr rename to tests/ui/stability-attribute/issue-28388-3.stderr diff --git a/src/test/ui/stability-attribute/issue-99286-stable-intrinsics.rs b/tests/ui/stability-attribute/issue-99286-stable-intrinsics.rs similarity index 100% rename from src/test/ui/stability-attribute/issue-99286-stable-intrinsics.rs rename to tests/ui/stability-attribute/issue-99286-stable-intrinsics.rs diff --git a/src/test/ui/stability-attribute/missing-const-stability.rs b/tests/ui/stability-attribute/missing-const-stability.rs similarity index 100% rename from src/test/ui/stability-attribute/missing-const-stability.rs rename to tests/ui/stability-attribute/missing-const-stability.rs diff --git a/src/test/ui/stability-attribute/missing-const-stability.stderr b/tests/ui/stability-attribute/missing-const-stability.stderr similarity index 100% rename from src/test/ui/stability-attribute/missing-const-stability.stderr rename to tests/ui/stability-attribute/missing-const-stability.stderr diff --git a/src/test/ui/stability-attribute/missing-stability-attr-at-top-level.rs b/tests/ui/stability-attribute/missing-stability-attr-at-top-level.rs similarity index 100% rename from src/test/ui/stability-attribute/missing-stability-attr-at-top-level.rs rename to tests/ui/stability-attribute/missing-stability-attr-at-top-level.rs diff --git a/src/test/ui/stability-attribute/missing-stability-attr-at-top-level.stderr b/tests/ui/stability-attribute/missing-stability-attr-at-top-level.stderr similarity index 100% rename from src/test/ui/stability-attribute/missing-stability-attr-at-top-level.stderr rename to tests/ui/stability-attribute/missing-stability-attr-at-top-level.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-missing.rs b/tests/ui/stability-attribute/stability-attribute-implies-missing.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-missing.rs rename to tests/ui/stability-attribute/stability-attribute-implies-missing.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-missing.stderr b/tests/ui/stability-attribute/stability-attribute-implies-missing.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-missing.stderr rename to tests/ui/stability-attribute/stability-attribute-implies-missing.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-no-feature.rs b/tests/ui/stability-attribute/stability-attribute-implies-no-feature.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-no-feature.rs rename to tests/ui/stability-attribute/stability-attribute-implies-no-feature.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-no-feature.stderr b/tests/ui/stability-attribute/stability-attribute-implies-no-feature.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-no-feature.stderr rename to tests/ui/stability-attribute/stability-attribute-implies-no-feature.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-using-stable.rs b/tests/ui/stability-attribute/stability-attribute-implies-using-stable.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-using-stable.rs rename to tests/ui/stability-attribute/stability-attribute-implies-using-stable.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-using-stable.stderr b/tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-using-stable.stderr rename to tests/ui/stability-attribute/stability-attribute-implies-using-stable.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-using-unstable.rs b/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-using-unstable.rs rename to tests/ui/stability-attribute/stability-attribute-implies-using-unstable.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr b/tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr rename to tests/ui/stability-attribute/stability-attribute-implies-using-unstable.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-issue-43027.rs b/tests/ui/stability-attribute/stability-attribute-issue-43027.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-issue-43027.rs rename to tests/ui/stability-attribute/stability-attribute-issue-43027.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-issue.rs b/tests/ui/stability-attribute/stability-attribute-issue.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-issue.rs rename to tests/ui/stability-attribute/stability-attribute-issue.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-issue.stderr b/tests/ui/stability-attribute/stability-attribute-issue.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-issue.stderr rename to tests/ui/stability-attribute/stability-attribute-issue.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-non-staged-force-unstable.rs b/tests/ui/stability-attribute/stability-attribute-non-staged-force-unstable.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-non-staged-force-unstable.rs rename to tests/ui/stability-attribute/stability-attribute-non-staged-force-unstable.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-non-staged-force-unstable.stderr b/tests/ui/stability-attribute/stability-attribute-non-staged-force-unstable.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-non-staged-force-unstable.stderr rename to tests/ui/stability-attribute/stability-attribute-non-staged-force-unstable.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-non-staged.rs b/tests/ui/stability-attribute/stability-attribute-non-staged.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-non-staged.rs rename to tests/ui/stability-attribute/stability-attribute-non-staged.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-non-staged.stderr b/tests/ui/stability-attribute/stability-attribute-non-staged.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-non-staged.stderr rename to tests/ui/stability-attribute/stability-attribute-non-staged.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-2.rs b/tests/ui/stability-attribute/stability-attribute-sanity-2.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-2.rs rename to tests/ui/stability-attribute/stability-attribute-sanity-2.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-2.stderr b/tests/ui/stability-attribute/stability-attribute-sanity-2.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-2.stderr rename to tests/ui/stability-attribute/stability-attribute-sanity-2.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-3.rs b/tests/ui/stability-attribute/stability-attribute-sanity-3.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-3.rs rename to tests/ui/stability-attribute/stability-attribute-sanity-3.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-3.stderr b/tests/ui/stability-attribute/stability-attribute-sanity-3.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-3.stderr rename to tests/ui/stability-attribute/stability-attribute-sanity-3.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-4.rs b/tests/ui/stability-attribute/stability-attribute-sanity-4.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-4.rs rename to tests/ui/stability-attribute/stability-attribute-sanity-4.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity-4.stderr b/tests/ui/stability-attribute/stability-attribute-sanity-4.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity-4.stderr rename to tests/ui/stability-attribute/stability-attribute-sanity-4.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity.rs b/tests/ui/stability-attribute/stability-attribute-sanity.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity.rs rename to tests/ui/stability-attribute/stability-attribute-sanity.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr b/tests/ui/stability-attribute/stability-attribute-sanity.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-sanity.stderr rename to tests/ui/stability-attribute/stability-attribute-sanity.stderr diff --git a/src/test/ui/stability-attribute/stability-attribute-trait-impl.rs b/tests/ui/stability-attribute/stability-attribute-trait-impl.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-trait-impl.rs rename to tests/ui/stability-attribute/stability-attribute-trait-impl.rs diff --git a/src/test/ui/stability-attribute/stability-attribute-trait-impl.stderr b/tests/ui/stability-attribute/stability-attribute-trait-impl.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-attribute-trait-impl.stderr rename to tests/ui/stability-attribute/stability-attribute-trait-impl.stderr diff --git a/src/test/ui/stability-attribute/stability-in-private-module.rs b/tests/ui/stability-attribute/stability-in-private-module.rs similarity index 100% rename from src/test/ui/stability-attribute/stability-in-private-module.rs rename to tests/ui/stability-attribute/stability-in-private-module.rs diff --git a/src/test/ui/stability-attribute/stability-in-private-module.stderr b/tests/ui/stability-attribute/stability-in-private-module.stderr similarity index 100% rename from src/test/ui/stability-attribute/stability-in-private-module.stderr rename to tests/ui/stability-attribute/stability-in-private-module.stderr diff --git a/src/test/ui/stability-attribute/stable-in-unstable.rs b/tests/ui/stability-attribute/stable-in-unstable.rs similarity index 100% rename from src/test/ui/stability-attribute/stable-in-unstable.rs rename to tests/ui/stability-attribute/stable-in-unstable.rs diff --git a/src/test/ui/stability-attribute/stable-in-unstable.stderr b/tests/ui/stability-attribute/stable-in-unstable.stderr similarity index 100% rename from src/test/ui/stability-attribute/stable-in-unstable.stderr rename to tests/ui/stability-attribute/stable-in-unstable.stderr diff --git a/src/test/ui/stability-attribute/suggest-vec-allocator-api.rs b/tests/ui/stability-attribute/suggest-vec-allocator-api.rs similarity index 100% rename from src/test/ui/stability-attribute/suggest-vec-allocator-api.rs rename to tests/ui/stability-attribute/suggest-vec-allocator-api.rs diff --git a/src/test/ui/stability-attribute/suggest-vec-allocator-api.stderr b/tests/ui/stability-attribute/suggest-vec-allocator-api.stderr similarity index 100% rename from src/test/ui/stability-attribute/suggest-vec-allocator-api.stderr rename to tests/ui/stability-attribute/suggest-vec-allocator-api.stderr diff --git a/src/test/ui/stable-addr-of.rs b/tests/ui/stable-addr-of.rs similarity index 100% rename from src/test/ui/stable-addr-of.rs rename to tests/ui/stable-addr-of.rs diff --git a/src/test/ui/stack-protector/warn-stack-protector-unsupported.all.stderr b/tests/ui/stack-protector/warn-stack-protector-unsupported.all.stderr similarity index 100% rename from src/test/ui/stack-protector/warn-stack-protector-unsupported.all.stderr rename to tests/ui/stack-protector/warn-stack-protector-unsupported.all.stderr diff --git a/src/test/ui/stack-protector/warn-stack-protector-unsupported.basic.stderr b/tests/ui/stack-protector/warn-stack-protector-unsupported.basic.stderr similarity index 100% rename from src/test/ui/stack-protector/warn-stack-protector-unsupported.basic.stderr rename to tests/ui/stack-protector/warn-stack-protector-unsupported.basic.stderr diff --git a/src/test/ui/stack-protector/warn-stack-protector-unsupported.rs b/tests/ui/stack-protector/warn-stack-protector-unsupported.rs similarity index 100% rename from src/test/ui/stack-protector/warn-stack-protector-unsupported.rs rename to tests/ui/stack-protector/warn-stack-protector-unsupported.rs diff --git a/src/test/ui/stack-protector/warn-stack-protector-unsupported.strong.stderr b/tests/ui/stack-protector/warn-stack-protector-unsupported.strong.stderr similarity index 100% rename from src/test/ui/stack-protector/warn-stack-protector-unsupported.strong.stderr rename to tests/ui/stack-protector/warn-stack-protector-unsupported.strong.stderr diff --git a/src/test/ui/static/auxiliary/extern-statics.rs b/tests/ui/static/auxiliary/extern-statics.rs similarity index 100% rename from src/test/ui/static/auxiliary/extern-statics.rs rename to tests/ui/static/auxiliary/extern-statics.rs diff --git a/src/test/ui/static/auxiliary/issue_24843.rs b/tests/ui/static/auxiliary/issue_24843.rs similarity index 100% rename from src/test/ui/static/auxiliary/issue_24843.rs rename to tests/ui/static/auxiliary/issue_24843.rs diff --git a/src/test/ui/static/auxiliary/nested_item.rs b/tests/ui/static/auxiliary/nested_item.rs similarity index 100% rename from src/test/ui/static/auxiliary/nested_item.rs rename to tests/ui/static/auxiliary/nested_item.rs diff --git a/src/test/ui/static/auxiliary/static-priv-by-default.rs b/tests/ui/static/auxiliary/static-priv-by-default.rs similarity index 100% rename from src/test/ui/static/auxiliary/static-priv-by-default.rs rename to tests/ui/static/auxiliary/static-priv-by-default.rs diff --git a/src/test/ui/static/auxiliary/static_priv_by_default.rs b/tests/ui/static/auxiliary/static_priv_by_default.rs similarity index 100% rename from src/test/ui/static/auxiliary/static_priv_by_default.rs rename to tests/ui/static/auxiliary/static_priv_by_default.rs diff --git a/src/test/ui/static/bad-const-type.rs b/tests/ui/static/bad-const-type.rs similarity index 100% rename from src/test/ui/static/bad-const-type.rs rename to tests/ui/static/bad-const-type.rs diff --git a/src/test/ui/static/bad-const-type.stderr b/tests/ui/static/bad-const-type.stderr similarity index 100% rename from src/test/ui/static/bad-const-type.stderr rename to tests/ui/static/bad-const-type.stderr diff --git a/src/test/ui/static/issue-18118-2.rs b/tests/ui/static/issue-18118-2.rs similarity index 100% rename from src/test/ui/static/issue-18118-2.rs rename to tests/ui/static/issue-18118-2.rs diff --git a/src/test/ui/static/issue-18118-2.stderr b/tests/ui/static/issue-18118-2.stderr similarity index 100% rename from src/test/ui/static/issue-18118-2.stderr rename to tests/ui/static/issue-18118-2.stderr diff --git a/src/test/ui/static/issue-18118.rs b/tests/ui/static/issue-18118.rs similarity index 100% rename from src/test/ui/static/issue-18118.rs rename to tests/ui/static/issue-18118.rs diff --git a/src/test/ui/static/issue-18118.stderr b/tests/ui/static/issue-18118.stderr similarity index 100% rename from src/test/ui/static/issue-18118.stderr rename to tests/ui/static/issue-18118.stderr diff --git a/src/test/ui/static/issue-24843.rs b/tests/ui/static/issue-24843.rs similarity index 100% rename from src/test/ui/static/issue-24843.rs rename to tests/ui/static/issue-24843.rs diff --git a/src/test/ui/static/issue-34194.rs b/tests/ui/static/issue-34194.rs similarity index 100% rename from src/test/ui/static/issue-34194.rs rename to tests/ui/static/issue-34194.rs diff --git a/src/test/ui/static/issue-5216.rs b/tests/ui/static/issue-5216.rs similarity index 100% rename from src/test/ui/static/issue-5216.rs rename to tests/ui/static/issue-5216.rs diff --git a/src/test/ui/static/issue-5216.stderr b/tests/ui/static/issue-5216.stderr similarity index 100% rename from src/test/ui/static/issue-5216.stderr rename to tests/ui/static/issue-5216.stderr diff --git a/src/test/ui/static/nested_item_main.rs b/tests/ui/static/nested_item_main.rs similarity index 100% rename from src/test/ui/static/nested_item_main.rs rename to tests/ui/static/nested_item_main.rs diff --git a/src/test/ui/static/refer-to-other-statics-by-value.rs b/tests/ui/static/refer-to-other-statics-by-value.rs similarity index 100% rename from src/test/ui/static/refer-to-other-statics-by-value.rs rename to tests/ui/static/refer-to-other-statics-by-value.rs diff --git a/src/test/ui/static/safe-extern-statics-mut.mir.stderr b/tests/ui/static/safe-extern-statics-mut.mir.stderr similarity index 100% rename from src/test/ui/static/safe-extern-statics-mut.mir.stderr rename to tests/ui/static/safe-extern-statics-mut.mir.stderr diff --git a/src/test/ui/static/safe-extern-statics-mut.rs b/tests/ui/static/safe-extern-statics-mut.rs similarity index 100% rename from src/test/ui/static/safe-extern-statics-mut.rs rename to tests/ui/static/safe-extern-statics-mut.rs diff --git a/src/test/ui/static/safe-extern-statics-mut.thir.stderr b/tests/ui/static/safe-extern-statics-mut.thir.stderr similarity index 100% rename from src/test/ui/static/safe-extern-statics-mut.thir.stderr rename to tests/ui/static/safe-extern-statics-mut.thir.stderr diff --git a/src/test/ui/static/safe-extern-statics.mir.stderr b/tests/ui/static/safe-extern-statics.mir.stderr similarity index 100% rename from src/test/ui/static/safe-extern-statics.mir.stderr rename to tests/ui/static/safe-extern-statics.mir.stderr diff --git a/src/test/ui/static/safe-extern-statics.rs b/tests/ui/static/safe-extern-statics.rs similarity index 100% rename from src/test/ui/static/safe-extern-statics.rs rename to tests/ui/static/safe-extern-statics.rs diff --git a/src/test/ui/static/safe-extern-statics.thir.stderr b/tests/ui/static/safe-extern-statics.thir.stderr similarity index 100% rename from src/test/ui/static/safe-extern-statics.thir.stderr rename to tests/ui/static/safe-extern-statics.thir.stderr diff --git a/src/test/ui/static/static-closures.rs b/tests/ui/static/static-closures.rs similarity index 100% rename from src/test/ui/static/static-closures.rs rename to tests/ui/static/static-closures.rs diff --git a/src/test/ui/static/static-closures.stderr b/tests/ui/static/static-closures.stderr similarity index 100% rename from src/test/ui/static/static-closures.stderr rename to tests/ui/static/static-closures.stderr diff --git a/src/test/ui/static/static-drop-scope.rs b/tests/ui/static/static-drop-scope.rs similarity index 100% rename from src/test/ui/static/static-drop-scope.rs rename to tests/ui/static/static-drop-scope.rs diff --git a/src/test/ui/static/static-drop-scope.stderr b/tests/ui/static/static-drop-scope.stderr similarity index 100% rename from src/test/ui/static/static-drop-scope.stderr rename to tests/ui/static/static-drop-scope.stderr diff --git a/src/test/ui/static/static-extern-type.rs b/tests/ui/static/static-extern-type.rs similarity index 100% rename from src/test/ui/static/static-extern-type.rs rename to tests/ui/static/static-extern-type.rs diff --git a/src/test/ui/static/static-items-cant-move.rs b/tests/ui/static/static-items-cant-move.rs similarity index 100% rename from src/test/ui/static/static-items-cant-move.rs rename to tests/ui/static/static-items-cant-move.rs diff --git a/src/test/ui/static/static-items-cant-move.stderr b/tests/ui/static/static-items-cant-move.stderr similarity index 100% rename from src/test/ui/static/static-items-cant-move.stderr rename to tests/ui/static/static-items-cant-move.stderr diff --git a/src/test/ui/static/static-lifetime-bound.rs b/tests/ui/static/static-lifetime-bound.rs similarity index 100% rename from src/test/ui/static/static-lifetime-bound.rs rename to tests/ui/static/static-lifetime-bound.rs diff --git a/src/test/ui/static/static-lifetime-bound.stderr b/tests/ui/static/static-lifetime-bound.stderr similarity index 100% rename from src/test/ui/static/static-lifetime-bound.stderr rename to tests/ui/static/static-lifetime-bound.stderr diff --git a/src/test/ui/static/static-lifetime.rs b/tests/ui/static/static-lifetime.rs similarity index 100% rename from src/test/ui/static/static-lifetime.rs rename to tests/ui/static/static-lifetime.rs diff --git a/src/test/ui/static/static-lifetime.stderr b/tests/ui/static/static-lifetime.stderr similarity index 100% rename from src/test/ui/static/static-lifetime.stderr rename to tests/ui/static/static-lifetime.stderr diff --git a/src/test/ui/static/static-method-privacy.rs b/tests/ui/static/static-method-privacy.rs similarity index 100% rename from src/test/ui/static/static-method-privacy.rs rename to tests/ui/static/static-method-privacy.rs diff --git a/src/test/ui/static/static-method-privacy.stderr b/tests/ui/static/static-method-privacy.stderr similarity index 100% rename from src/test/ui/static/static-method-privacy.stderr rename to tests/ui/static/static-method-privacy.stderr diff --git a/src/test/ui/static/static-mut-bad-types.rs b/tests/ui/static/static-mut-bad-types.rs similarity index 100% rename from src/test/ui/static/static-mut-bad-types.rs rename to tests/ui/static/static-mut-bad-types.rs diff --git a/src/test/ui/static/static-mut-bad-types.stderr b/tests/ui/static/static-mut-bad-types.stderr similarity index 100% rename from src/test/ui/static/static-mut-bad-types.stderr rename to tests/ui/static/static-mut-bad-types.stderr diff --git a/src/test/ui/static/static-mut-foreign-requires-unsafe.mir.stderr b/tests/ui/static/static-mut-foreign-requires-unsafe.mir.stderr similarity index 100% rename from src/test/ui/static/static-mut-foreign-requires-unsafe.mir.stderr rename to tests/ui/static/static-mut-foreign-requires-unsafe.mir.stderr diff --git a/src/test/ui/static/static-mut-foreign-requires-unsafe.rs b/tests/ui/static/static-mut-foreign-requires-unsafe.rs similarity index 100% rename from src/test/ui/static/static-mut-foreign-requires-unsafe.rs rename to tests/ui/static/static-mut-foreign-requires-unsafe.rs diff --git a/src/test/ui/static/static-mut-foreign-requires-unsafe.thir.stderr b/tests/ui/static/static-mut-foreign-requires-unsafe.thir.stderr similarity index 100% rename from src/test/ui/static/static-mut-foreign-requires-unsafe.thir.stderr rename to tests/ui/static/static-mut-foreign-requires-unsafe.thir.stderr diff --git a/src/test/ui/static/static-mut-not-constant.rs b/tests/ui/static/static-mut-not-constant.rs similarity index 100% rename from src/test/ui/static/static-mut-not-constant.rs rename to tests/ui/static/static-mut-not-constant.rs diff --git a/src/test/ui/static/static-mut-not-constant.stderr b/tests/ui/static/static-mut-not-constant.stderr similarity index 100% rename from src/test/ui/static/static-mut-not-constant.stderr rename to tests/ui/static/static-mut-not-constant.stderr diff --git a/src/test/ui/static/static-mut-not-pat.rs b/tests/ui/static/static-mut-not-pat.rs similarity index 100% rename from src/test/ui/static/static-mut-not-pat.rs rename to tests/ui/static/static-mut-not-pat.rs diff --git a/src/test/ui/static/static-mut-not-pat.stderr b/tests/ui/static/static-mut-not-pat.stderr similarity index 100% rename from src/test/ui/static/static-mut-not-pat.stderr rename to tests/ui/static/static-mut-not-pat.stderr diff --git a/src/test/ui/static/static-mut-requires-unsafe.mir.stderr b/tests/ui/static/static-mut-requires-unsafe.mir.stderr similarity index 100% rename from src/test/ui/static/static-mut-requires-unsafe.mir.stderr rename to tests/ui/static/static-mut-requires-unsafe.mir.stderr diff --git a/src/test/ui/static/static-mut-requires-unsafe.rs b/tests/ui/static/static-mut-requires-unsafe.rs similarity index 100% rename from src/test/ui/static/static-mut-requires-unsafe.rs rename to tests/ui/static/static-mut-requires-unsafe.rs diff --git a/src/test/ui/static/static-mut-requires-unsafe.thir.stderr b/tests/ui/static/static-mut-requires-unsafe.thir.stderr similarity index 100% rename from src/test/ui/static/static-mut-requires-unsafe.thir.stderr rename to tests/ui/static/static-mut-requires-unsafe.thir.stderr diff --git a/src/test/ui/static/static-priv-by-default2.rs b/tests/ui/static/static-priv-by-default2.rs similarity index 100% rename from src/test/ui/static/static-priv-by-default2.rs rename to tests/ui/static/static-priv-by-default2.rs diff --git a/src/test/ui/static/static-priv-by-default2.stderr b/tests/ui/static/static-priv-by-default2.stderr similarity index 100% rename from src/test/ui/static/static-priv-by-default2.stderr rename to tests/ui/static/static-priv-by-default2.stderr diff --git a/src/test/ui/static/static-reference-to-fn-1.rs b/tests/ui/static/static-reference-to-fn-1.rs similarity index 100% rename from src/test/ui/static/static-reference-to-fn-1.rs rename to tests/ui/static/static-reference-to-fn-1.rs diff --git a/src/test/ui/static/static-reference-to-fn-1.stderr b/tests/ui/static/static-reference-to-fn-1.stderr similarity index 100% rename from src/test/ui/static/static-reference-to-fn-1.stderr rename to tests/ui/static/static-reference-to-fn-1.stderr diff --git a/src/test/ui/static/static-reference-to-fn-2.rs b/tests/ui/static/static-reference-to-fn-2.rs similarity index 100% rename from src/test/ui/static/static-reference-to-fn-2.rs rename to tests/ui/static/static-reference-to-fn-2.rs diff --git a/src/test/ui/static/static-reference-to-fn-2.stderr b/tests/ui/static/static-reference-to-fn-2.stderr similarity index 100% rename from src/test/ui/static/static-reference-to-fn-2.stderr rename to tests/ui/static/static-reference-to-fn-2.stderr diff --git a/src/test/ui/static/static-region-bound.rs b/tests/ui/static/static-region-bound.rs similarity index 100% rename from src/test/ui/static/static-region-bound.rs rename to tests/ui/static/static-region-bound.rs diff --git a/src/test/ui/static/static-region-bound.stderr b/tests/ui/static/static-region-bound.stderr similarity index 100% rename from src/test/ui/static/static-region-bound.stderr rename to tests/ui/static/static-region-bound.stderr diff --git a/src/test/ui/static/static-vec-repeat-not-constant.rs b/tests/ui/static/static-vec-repeat-not-constant.rs similarity index 100% rename from src/test/ui/static/static-vec-repeat-not-constant.rs rename to tests/ui/static/static-vec-repeat-not-constant.rs diff --git a/src/test/ui/static/static-vec-repeat-not-constant.stderr b/tests/ui/static/static-vec-repeat-not-constant.stderr similarity index 100% rename from src/test/ui/static/static-vec-repeat-not-constant.stderr rename to tests/ui/static/static-vec-repeat-not-constant.stderr diff --git a/src/test/ui/static/static_sized_requirement.rs b/tests/ui/static/static_sized_requirement.rs similarity index 100% rename from src/test/ui/static/static_sized_requirement.rs rename to tests/ui/static/static_sized_requirement.rs diff --git a/src/test/ui/static/thread-local-in-ctfe.rs b/tests/ui/static/thread-local-in-ctfe.rs similarity index 100% rename from src/test/ui/static/thread-local-in-ctfe.rs rename to tests/ui/static/thread-local-in-ctfe.rs diff --git a/src/test/ui/static/thread-local-in-ctfe.stderr b/tests/ui/static/thread-local-in-ctfe.stderr similarity index 100% rename from src/test/ui/static/thread-local-in-ctfe.stderr rename to tests/ui/static/thread-local-in-ctfe.stderr diff --git a/src/test/ui/statics/auxiliary/static-function-pointer-aux.rs b/tests/ui/statics/auxiliary/static-function-pointer-aux.rs similarity index 100% rename from src/test/ui/statics/auxiliary/static-function-pointer-aux.rs rename to tests/ui/statics/auxiliary/static-function-pointer-aux.rs diff --git a/src/test/ui/statics/auxiliary/static-methods-crate.rs b/tests/ui/statics/auxiliary/static-methods-crate.rs similarity index 100% rename from src/test/ui/statics/auxiliary/static-methods-crate.rs rename to tests/ui/statics/auxiliary/static-methods-crate.rs diff --git a/src/test/ui/statics/auxiliary/static_fn_inline_xc_aux.rs b/tests/ui/statics/auxiliary/static_fn_inline_xc_aux.rs similarity index 100% rename from src/test/ui/statics/auxiliary/static_fn_inline_xc_aux.rs rename to tests/ui/statics/auxiliary/static_fn_inline_xc_aux.rs diff --git a/src/test/ui/statics/auxiliary/static_fn_trait_xc_aux.rs b/tests/ui/statics/auxiliary/static_fn_trait_xc_aux.rs similarity index 100% rename from src/test/ui/statics/auxiliary/static_fn_trait_xc_aux.rs rename to tests/ui/statics/auxiliary/static_fn_trait_xc_aux.rs diff --git a/src/test/ui/statics/auxiliary/static_mut_xc.rs b/tests/ui/statics/auxiliary/static_mut_xc.rs similarity index 100% rename from src/test/ui/statics/auxiliary/static_mut_xc.rs rename to tests/ui/statics/auxiliary/static_mut_xc.rs diff --git a/src/test/ui/statics/issue-14227.mir.stderr b/tests/ui/statics/issue-14227.mir.stderr similarity index 100% rename from src/test/ui/statics/issue-14227.mir.stderr rename to tests/ui/statics/issue-14227.mir.stderr diff --git a/src/test/ui/statics/issue-14227.rs b/tests/ui/statics/issue-14227.rs similarity index 100% rename from src/test/ui/statics/issue-14227.rs rename to tests/ui/statics/issue-14227.rs diff --git a/src/test/ui/statics/issue-14227.thir.stderr b/tests/ui/statics/issue-14227.thir.stderr similarity index 100% rename from src/test/ui/statics/issue-14227.thir.stderr rename to tests/ui/statics/issue-14227.thir.stderr diff --git a/src/test/ui/statics/issue-15261.rs b/tests/ui/statics/issue-15261.rs similarity index 100% rename from src/test/ui/statics/issue-15261.rs rename to tests/ui/statics/issue-15261.rs diff --git a/src/test/ui/statics/issue-17233.rs b/tests/ui/statics/issue-17233.rs similarity index 100% rename from src/test/ui/statics/issue-17233.rs rename to tests/ui/statics/issue-17233.rs diff --git a/src/test/ui/statics/issue-17718-static-sync.rs b/tests/ui/statics/issue-17718-static-sync.rs similarity index 100% rename from src/test/ui/statics/issue-17718-static-sync.rs rename to tests/ui/statics/issue-17718-static-sync.rs diff --git a/src/test/ui/statics/issue-17718-static-sync.stderr b/tests/ui/statics/issue-17718-static-sync.stderr similarity index 100% rename from src/test/ui/statics/issue-17718-static-sync.stderr rename to tests/ui/statics/issue-17718-static-sync.stderr diff --git a/src/test/ui/statics/issue-17718-static-unsafe-interior.rs b/tests/ui/statics/issue-17718-static-unsafe-interior.rs similarity index 100% rename from src/test/ui/statics/issue-17718-static-unsafe-interior.rs rename to tests/ui/statics/issue-17718-static-unsafe-interior.rs diff --git a/src/test/ui/statics/issue-44373-2.rs b/tests/ui/statics/issue-44373-2.rs similarity index 100% rename from src/test/ui/statics/issue-44373-2.rs rename to tests/ui/statics/issue-44373-2.rs diff --git a/src/test/ui/statics/issue-44373.rs b/tests/ui/statics/issue-44373.rs similarity index 100% rename from src/test/ui/statics/issue-44373.rs rename to tests/ui/statics/issue-44373.rs diff --git a/src/test/ui/statics/issue-44373.stderr b/tests/ui/statics/issue-44373.stderr similarity index 100% rename from src/test/ui/statics/issue-44373.stderr rename to tests/ui/statics/issue-44373.stderr diff --git a/src/test/ui/statics/issue-91050-1.rs b/tests/ui/statics/issue-91050-1.rs similarity index 100% rename from src/test/ui/statics/issue-91050-1.rs rename to tests/ui/statics/issue-91050-1.rs diff --git a/src/test/ui/statics/issue-91050-2.rs b/tests/ui/statics/issue-91050-2.rs similarity index 100% rename from src/test/ui/statics/issue-91050-2.rs rename to tests/ui/statics/issue-91050-2.rs diff --git a/src/test/ui/statics/static-fn-inline-xc.rs b/tests/ui/statics/static-fn-inline-xc.rs similarity index 100% rename from src/test/ui/statics/static-fn-inline-xc.rs rename to tests/ui/statics/static-fn-inline-xc.rs diff --git a/src/test/ui/statics/static-fn-trait-xc.rs b/tests/ui/statics/static-fn-trait-xc.rs similarity index 100% rename from src/test/ui/statics/static-fn-trait-xc.rs rename to tests/ui/statics/static-fn-trait-xc.rs diff --git a/src/test/ui/statics/static-function-pointer-xc.rs b/tests/ui/statics/static-function-pointer-xc.rs similarity index 100% rename from src/test/ui/statics/static-function-pointer-xc.rs rename to tests/ui/statics/static-function-pointer-xc.rs diff --git a/src/test/ui/statics/static-function-pointer.rs b/tests/ui/statics/static-function-pointer.rs similarity index 100% rename from src/test/ui/statics/static-function-pointer.rs rename to tests/ui/statics/static-function-pointer.rs diff --git a/src/test/ui/statics/static-impl.rs b/tests/ui/statics/static-impl.rs similarity index 100% rename from src/test/ui/statics/static-impl.rs rename to tests/ui/statics/static-impl.rs diff --git a/src/test/ui/statics/static-method-in-trait-with-tps-intracrate.rs b/tests/ui/statics/static-method-in-trait-with-tps-intracrate.rs similarity index 100% rename from src/test/ui/statics/static-method-in-trait-with-tps-intracrate.rs rename to tests/ui/statics/static-method-in-trait-with-tps-intracrate.rs diff --git a/src/test/ui/statics/static-method-xcrate.rs b/tests/ui/statics/static-method-xcrate.rs similarity index 100% rename from src/test/ui/statics/static-method-xcrate.rs rename to tests/ui/statics/static-method-xcrate.rs diff --git a/src/test/ui/statics/static-methods-in-traits.rs b/tests/ui/statics/static-methods-in-traits.rs similarity index 100% rename from src/test/ui/statics/static-methods-in-traits.rs rename to tests/ui/statics/static-methods-in-traits.rs diff --git a/src/test/ui/statics/static-methods-in-traits2.rs b/tests/ui/statics/static-methods-in-traits2.rs similarity index 100% rename from src/test/ui/statics/static-methods-in-traits2.rs rename to tests/ui/statics/static-methods-in-traits2.rs diff --git a/src/test/ui/statics/static-mut-xc.rs b/tests/ui/statics/static-mut-xc.rs similarity index 100% rename from src/test/ui/statics/static-mut-xc.rs rename to tests/ui/statics/static-mut-xc.rs diff --git a/src/test/ui/statics/static-promotion.rs b/tests/ui/statics/static-promotion.rs similarity index 100% rename from src/test/ui/statics/static-promotion.rs rename to tests/ui/statics/static-promotion.rs diff --git a/src/test/ui/statics/static-recursive.rs b/tests/ui/statics/static-recursive.rs similarity index 100% rename from src/test/ui/statics/static-recursive.rs rename to tests/ui/statics/static-recursive.rs diff --git a/src/test/ui/statics/uninhabited-static.rs b/tests/ui/statics/uninhabited-static.rs similarity index 100% rename from src/test/ui/statics/uninhabited-static.rs rename to tests/ui/statics/uninhabited-static.rs diff --git a/src/test/ui/statics/uninhabited-static.stderr b/tests/ui/statics/uninhabited-static.stderr similarity index 100% rename from src/test/ui/statics/uninhabited-static.stderr rename to tests/ui/statics/uninhabited-static.stderr diff --git a/src/test/ui/stats/hir-stats.rs b/tests/ui/stats/hir-stats.rs similarity index 100% rename from src/test/ui/stats/hir-stats.rs rename to tests/ui/stats/hir-stats.rs diff --git a/src/test/ui/stats/hir-stats.stderr b/tests/ui/stats/hir-stats.stderr similarity index 100% rename from src/test/ui/stats/hir-stats.stderr rename to tests/ui/stats/hir-stats.stderr diff --git a/src/test/ui/std-backtrace.rs b/tests/ui/std-backtrace.rs similarity index 100% rename from src/test/ui/std-backtrace.rs rename to tests/ui/std-backtrace.rs diff --git a/src/test/ui/std-uncopyable-atomics.rs b/tests/ui/std-uncopyable-atomics.rs similarity index 100% rename from src/test/ui/std-uncopyable-atomics.rs rename to tests/ui/std-uncopyable-atomics.rs diff --git a/src/test/ui/std-uncopyable-atomics.stderr b/tests/ui/std-uncopyable-atomics.stderr similarity index 100% rename from src/test/ui/std-uncopyable-atomics.stderr rename to tests/ui/std-uncopyable-atomics.stderr diff --git a/src/test/ui/stdio-is-blocking.rs b/tests/ui/stdio-is-blocking.rs similarity index 100% rename from src/test/ui/stdio-is-blocking.rs rename to tests/ui/stdio-is-blocking.rs diff --git a/src/test/ui/stdlib-unit-tests/builtin-clone.rs b/tests/ui/stdlib-unit-tests/builtin-clone.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/builtin-clone.rs rename to tests/ui/stdlib-unit-tests/builtin-clone.rs diff --git a/src/test/ui/stdlib-unit-tests/eq-multidispatch.rs b/tests/ui/stdlib-unit-tests/eq-multidispatch.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/eq-multidispatch.rs rename to tests/ui/stdlib-unit-tests/eq-multidispatch.rs diff --git a/src/test/ui/stdlib-unit-tests/issue-21058.rs b/tests/ui/stdlib-unit-tests/issue-21058.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/issue-21058.rs rename to tests/ui/stdlib-unit-tests/issue-21058.rs diff --git a/src/test/ui/stdlib-unit-tests/istr.rs b/tests/ui/stdlib-unit-tests/istr.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/istr.rs rename to tests/ui/stdlib-unit-tests/istr.rs diff --git a/src/test/ui/stdlib-unit-tests/log-knows-the-names-of-variants-in-std.rs b/tests/ui/stdlib-unit-tests/log-knows-the-names-of-variants-in-std.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/log-knows-the-names-of-variants-in-std.rs rename to tests/ui/stdlib-unit-tests/log-knows-the-names-of-variants-in-std.rs diff --git a/src/test/ui/stdlib-unit-tests/matches2021.rs b/tests/ui/stdlib-unit-tests/matches2021.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/matches2021.rs rename to tests/ui/stdlib-unit-tests/matches2021.rs diff --git a/src/test/ui/stdlib-unit-tests/minmax-stability-issue-23687.rs b/tests/ui/stdlib-unit-tests/minmax-stability-issue-23687.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/minmax-stability-issue-23687.rs rename to tests/ui/stdlib-unit-tests/minmax-stability-issue-23687.rs diff --git a/src/test/ui/stdlib-unit-tests/not-sync.rs b/tests/ui/stdlib-unit-tests/not-sync.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/not-sync.rs rename to tests/ui/stdlib-unit-tests/not-sync.rs diff --git a/src/test/ui/stdlib-unit-tests/not-sync.stderr b/tests/ui/stdlib-unit-tests/not-sync.stderr similarity index 100% rename from src/test/ui/stdlib-unit-tests/not-sync.stderr rename to tests/ui/stdlib-unit-tests/not-sync.stderr diff --git a/src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs b/tests/ui/stdlib-unit-tests/raw-fat-ptr.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs rename to tests/ui/stdlib-unit-tests/raw-fat-ptr.rs diff --git a/src/test/ui/stdlib-unit-tests/seq-compare.rs b/tests/ui/stdlib-unit-tests/seq-compare.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/seq-compare.rs rename to tests/ui/stdlib-unit-tests/seq-compare.rs diff --git a/src/test/ui/stdlib-unit-tests/volatile-fat-ptr.rs b/tests/ui/stdlib-unit-tests/volatile-fat-ptr.rs similarity index 100% rename from src/test/ui/stdlib-unit-tests/volatile-fat-ptr.rs rename to tests/ui/stdlib-unit-tests/volatile-fat-ptr.rs diff --git a/src/test/ui/stmt_expr_attrs_no_feature.rs b/tests/ui/stmt_expr_attrs_no_feature.rs similarity index 100% rename from src/test/ui/stmt_expr_attrs_no_feature.rs rename to tests/ui/stmt_expr_attrs_no_feature.rs diff --git a/src/test/ui/stmt_expr_attrs_no_feature.stderr b/tests/ui/stmt_expr_attrs_no_feature.stderr similarity index 100% rename from src/test/ui/stmt_expr_attrs_no_feature.stderr rename to tests/ui/stmt_expr_attrs_no_feature.stderr diff --git a/src/test/ui/str/str-array-assignment.rs b/tests/ui/str/str-array-assignment.rs similarity index 100% rename from src/test/ui/str/str-array-assignment.rs rename to tests/ui/str/str-array-assignment.rs diff --git a/src/test/ui/str/str-array-assignment.stderr b/tests/ui/str/str-array-assignment.stderr similarity index 100% rename from src/test/ui/str/str-array-assignment.stderr rename to tests/ui/str/str-array-assignment.stderr diff --git a/src/test/ui/str/str-as-char.fixed b/tests/ui/str/str-as-char.fixed similarity index 100% rename from src/test/ui/str/str-as-char.fixed rename to tests/ui/str/str-as-char.fixed diff --git a/src/test/ui/str/str-as-char.rs b/tests/ui/str/str-as-char.rs similarity index 100% rename from src/test/ui/str/str-as-char.rs rename to tests/ui/str/str-as-char.rs diff --git a/src/test/ui/str/str-as-char.stderr b/tests/ui/str/str-as-char.stderr similarity index 100% rename from src/test/ui/str/str-as-char.stderr rename to tests/ui/str/str-as-char.stderr diff --git a/src/test/ui/str/str-concat-on-double-ref.rs b/tests/ui/str/str-concat-on-double-ref.rs similarity index 100% rename from src/test/ui/str/str-concat-on-double-ref.rs rename to tests/ui/str/str-concat-on-double-ref.rs diff --git a/src/test/ui/str/str-concat-on-double-ref.stderr b/tests/ui/str/str-concat-on-double-ref.stderr similarity index 100% rename from src/test/ui/str/str-concat-on-double-ref.stderr rename to tests/ui/str/str-concat-on-double-ref.stderr diff --git a/src/test/ui/str/str-escape.rs b/tests/ui/str/str-escape.rs similarity index 100% rename from src/test/ui/str/str-escape.rs rename to tests/ui/str/str-escape.rs diff --git a/src/test/ui/str/str-escape.stderr b/tests/ui/str/str-escape.stderr similarity index 100% rename from src/test/ui/str/str-escape.stderr rename to tests/ui/str/str-escape.stderr diff --git a/src/test/ui/str/str-idx.rs b/tests/ui/str/str-idx.rs similarity index 100% rename from src/test/ui/str/str-idx.rs rename to tests/ui/str/str-idx.rs diff --git a/src/test/ui/str/str-idx.stderr b/tests/ui/str/str-idx.stderr similarity index 100% rename from src/test/ui/str/str-idx.stderr rename to tests/ui/str/str-idx.stderr diff --git a/src/test/ui/str/str-lit-type-mismatch.rs b/tests/ui/str/str-lit-type-mismatch.rs similarity index 100% rename from src/test/ui/str/str-lit-type-mismatch.rs rename to tests/ui/str/str-lit-type-mismatch.rs diff --git a/src/test/ui/str/str-lit-type-mismatch.stderr b/tests/ui/str/str-lit-type-mismatch.stderr similarity index 100% rename from src/test/ui/str/str-lit-type-mismatch.stderr rename to tests/ui/str/str-lit-type-mismatch.stderr diff --git a/src/test/ui/str/str-mut-idx.rs b/tests/ui/str/str-mut-idx.rs similarity index 100% rename from src/test/ui/str/str-mut-idx.rs rename to tests/ui/str/str-mut-idx.rs diff --git a/src/test/ui/str/str-mut-idx.stderr b/tests/ui/str/str-mut-idx.stderr similarity index 100% rename from src/test/ui/str/str-mut-idx.stderr rename to tests/ui/str/str-mut-idx.stderr diff --git a/src/test/ui/str/str-overrun.rs b/tests/ui/str/str-overrun.rs similarity index 100% rename from src/test/ui/str/str-overrun.rs rename to tests/ui/str/str-overrun.rs diff --git a/src/test/ui/string-box-error.rs b/tests/ui/string-box-error.rs similarity index 100% rename from src/test/ui/string-box-error.rs rename to tests/ui/string-box-error.rs diff --git a/src/test/ui/struct-ctor-mangling.rs b/tests/ui/struct-ctor-mangling.rs similarity index 100% rename from src/test/ui/struct-ctor-mangling.rs rename to tests/ui/struct-ctor-mangling.rs diff --git a/src/test/ui/structs-enums/align-enum.rs b/tests/ui/structs-enums/align-enum.rs similarity index 100% rename from src/test/ui/structs-enums/align-enum.rs rename to tests/ui/structs-enums/align-enum.rs diff --git a/src/test/ui/structs-enums/align-struct.rs b/tests/ui/structs-enums/align-struct.rs similarity index 100% rename from src/test/ui/structs-enums/align-struct.rs rename to tests/ui/structs-enums/align-struct.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class.rs b/tests/ui/structs-enums/auxiliary/cci_class.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class.rs rename to tests/ui/structs-enums/auxiliary/cci_class.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_2.rs b/tests/ui/structs-enums/auxiliary/cci_class_2.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_2.rs rename to tests/ui/structs-enums/auxiliary/cci_class_2.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_3.rs b/tests/ui/structs-enums/auxiliary/cci_class_3.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_3.rs rename to tests/ui/structs-enums/auxiliary/cci_class_3.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_4.rs b/tests/ui/structs-enums/auxiliary/cci_class_4.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_4.rs rename to tests/ui/structs-enums/auxiliary/cci_class_4.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_6.rs b/tests/ui/structs-enums/auxiliary/cci_class_6.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_6.rs rename to tests/ui/structs-enums/auxiliary/cci_class_6.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_cast.rs b/tests/ui/structs-enums/auxiliary/cci_class_cast.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_cast.rs rename to tests/ui/structs-enums/auxiliary/cci_class_cast.rs diff --git a/src/test/ui/structs-enums/auxiliary/cci_class_trait.rs b/tests/ui/structs-enums/auxiliary/cci_class_trait.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/cci_class_trait.rs rename to tests/ui/structs-enums/auxiliary/cci_class_trait.rs diff --git a/src/test/ui/structs-enums/auxiliary/empty-struct.rs b/tests/ui/structs-enums/auxiliary/empty-struct.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/empty-struct.rs rename to tests/ui/structs-enums/auxiliary/empty-struct.rs diff --git a/src/test/ui/structs-enums/auxiliary/namespaced_enum_emulate_flat.rs b/tests/ui/structs-enums/auxiliary/namespaced_enum_emulate_flat.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/namespaced_enum_emulate_flat.rs rename to tests/ui/structs-enums/auxiliary/namespaced_enum_emulate_flat.rs diff --git a/src/test/ui/structs-enums/auxiliary/namespaced_enums.rs b/tests/ui/structs-enums/auxiliary/namespaced_enums.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/namespaced_enums.rs rename to tests/ui/structs-enums/auxiliary/namespaced_enums.rs diff --git a/src/test/ui/structs-enums/auxiliary/newtype_struct_xc.rs b/tests/ui/structs-enums/auxiliary/newtype_struct_xc.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/newtype_struct_xc.rs rename to tests/ui/structs-enums/auxiliary/newtype_struct_xc.rs diff --git a/src/test/ui/structs-enums/auxiliary/struct_destructuring_cross_crate.rs b/tests/ui/structs-enums/auxiliary/struct_destructuring_cross_crate.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/struct_destructuring_cross_crate.rs rename to tests/ui/structs-enums/auxiliary/struct_destructuring_cross_crate.rs diff --git a/src/test/ui/structs-enums/auxiliary/struct_variant_xc_aux.rs b/tests/ui/structs-enums/auxiliary/struct_variant_xc_aux.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/struct_variant_xc_aux.rs rename to tests/ui/structs-enums/auxiliary/struct_variant_xc_aux.rs diff --git a/src/test/ui/structs-enums/auxiliary/xcrate_struct_aliases.rs b/tests/ui/structs-enums/auxiliary/xcrate_struct_aliases.rs similarity index 100% rename from src/test/ui/structs-enums/auxiliary/xcrate_struct_aliases.rs rename to tests/ui/structs-enums/auxiliary/xcrate_struct_aliases.rs diff --git a/src/test/ui/structs-enums/borrow-tuple-fields.rs b/tests/ui/structs-enums/borrow-tuple-fields.rs similarity index 100% rename from src/test/ui/structs-enums/borrow-tuple-fields.rs rename to tests/ui/structs-enums/borrow-tuple-fields.rs diff --git a/src/test/ui/structs-enums/class-cast-to-trait-cross-crate-2.rs b/tests/ui/structs-enums/class-cast-to-trait-cross-crate-2.rs similarity index 100% rename from src/test/ui/structs-enums/class-cast-to-trait-cross-crate-2.rs rename to tests/ui/structs-enums/class-cast-to-trait-cross-crate-2.rs diff --git a/src/test/ui/structs-enums/class-cast-to-trait-multiple-types.rs b/tests/ui/structs-enums/class-cast-to-trait-multiple-types.rs similarity index 100% rename from src/test/ui/structs-enums/class-cast-to-trait-multiple-types.rs rename to tests/ui/structs-enums/class-cast-to-trait-multiple-types.rs diff --git a/src/test/ui/structs-enums/class-cast-to-trait.rs b/tests/ui/structs-enums/class-cast-to-trait.rs similarity index 100% rename from src/test/ui/structs-enums/class-cast-to-trait.rs rename to tests/ui/structs-enums/class-cast-to-trait.rs diff --git a/src/test/ui/structs-enums/class-dtor.rs b/tests/ui/structs-enums/class-dtor.rs similarity index 100% rename from src/test/ui/structs-enums/class-dtor.rs rename to tests/ui/structs-enums/class-dtor.rs diff --git a/src/test/ui/structs-enums/class-exports.rs b/tests/ui/structs-enums/class-exports.rs similarity index 100% rename from src/test/ui/structs-enums/class-exports.rs rename to tests/ui/structs-enums/class-exports.rs diff --git a/src/test/ui/structs-enums/class-impl-very-parameterized-trait.rs b/tests/ui/structs-enums/class-impl-very-parameterized-trait.rs similarity index 100% rename from src/test/ui/structs-enums/class-impl-very-parameterized-trait.rs rename to tests/ui/structs-enums/class-impl-very-parameterized-trait.rs diff --git a/src/test/ui/structs-enums/class-implement-trait-cross-crate.rs b/tests/ui/structs-enums/class-implement-trait-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/class-implement-trait-cross-crate.rs rename to tests/ui/structs-enums/class-implement-trait-cross-crate.rs diff --git a/src/test/ui/structs-enums/class-implement-traits.rs b/tests/ui/structs-enums/class-implement-traits.rs similarity index 100% rename from src/test/ui/structs-enums/class-implement-traits.rs rename to tests/ui/structs-enums/class-implement-traits.rs diff --git a/src/test/ui/structs-enums/class-method-cross-crate.rs b/tests/ui/structs-enums/class-method-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/class-method-cross-crate.rs rename to tests/ui/structs-enums/class-method-cross-crate.rs diff --git a/src/test/ui/structs-enums/class-methods-cross-crate.rs b/tests/ui/structs-enums/class-methods-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/class-methods-cross-crate.rs rename to tests/ui/structs-enums/class-methods-cross-crate.rs diff --git a/src/test/ui/structs-enums/class-methods.rs b/tests/ui/structs-enums/class-methods.rs similarity index 100% rename from src/test/ui/structs-enums/class-methods.rs rename to tests/ui/structs-enums/class-methods.rs diff --git a/src/test/ui/structs-enums/class-poly-methods-cross-crate.rs b/tests/ui/structs-enums/class-poly-methods-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/class-poly-methods-cross-crate.rs rename to tests/ui/structs-enums/class-poly-methods-cross-crate.rs diff --git a/src/test/ui/structs-enums/class-poly-methods.rs b/tests/ui/structs-enums/class-poly-methods.rs similarity index 100% rename from src/test/ui/structs-enums/class-poly-methods.rs rename to tests/ui/structs-enums/class-poly-methods.rs diff --git a/src/test/ui/structs-enums/class-separate-impl.rs b/tests/ui/structs-enums/class-separate-impl.rs similarity index 100% rename from src/test/ui/structs-enums/class-separate-impl.rs rename to tests/ui/structs-enums/class-separate-impl.rs diff --git a/src/test/ui/structs-enums/class-str-field.rs b/tests/ui/structs-enums/class-str-field.rs similarity index 100% rename from src/test/ui/structs-enums/class-str-field.rs rename to tests/ui/structs-enums/class-str-field.rs diff --git a/src/test/ui/structs-enums/class-typarams.rs b/tests/ui/structs-enums/class-typarams.rs similarity index 100% rename from src/test/ui/structs-enums/class-typarams.rs rename to tests/ui/structs-enums/class-typarams.rs diff --git a/src/test/ui/structs-enums/classes-cross-crate.rs b/tests/ui/structs-enums/classes-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/classes-cross-crate.rs rename to tests/ui/structs-enums/classes-cross-crate.rs diff --git a/src/test/ui/structs-enums/classes-self-referential.rs b/tests/ui/structs-enums/classes-self-referential.rs similarity index 100% rename from src/test/ui/structs-enums/classes-self-referential.rs rename to tests/ui/structs-enums/classes-self-referential.rs diff --git a/src/test/ui/structs-enums/classes-simple-cross-crate.rs b/tests/ui/structs-enums/classes-simple-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/classes-simple-cross-crate.rs rename to tests/ui/structs-enums/classes-simple-cross-crate.rs diff --git a/src/test/ui/structs-enums/classes-simple-method.rs b/tests/ui/structs-enums/classes-simple-method.rs similarity index 100% rename from src/test/ui/structs-enums/classes-simple-method.rs rename to tests/ui/structs-enums/classes-simple-method.rs diff --git a/src/test/ui/structs-enums/classes-simple.rs b/tests/ui/structs-enums/classes-simple.rs similarity index 100% rename from src/test/ui/structs-enums/classes-simple.rs rename to tests/ui/structs-enums/classes-simple.rs diff --git a/src/test/ui/structs-enums/classes.rs b/tests/ui/structs-enums/classes.rs similarity index 100% rename from src/test/ui/structs-enums/classes.rs rename to tests/ui/structs-enums/classes.rs diff --git a/src/test/ui/structs-enums/codegen-tag-static-padding.rs b/tests/ui/structs-enums/codegen-tag-static-padding.rs similarity index 100% rename from src/test/ui/structs-enums/codegen-tag-static-padding.rs rename to tests/ui/structs-enums/codegen-tag-static-padding.rs diff --git a/src/test/ui/structs-enums/compare-generic-enums.rs b/tests/ui/structs-enums/compare-generic-enums.rs similarity index 100% rename from src/test/ui/structs-enums/compare-generic-enums.rs rename to tests/ui/structs-enums/compare-generic-enums.rs diff --git a/src/test/ui/structs-enums/cross-crate-newtype-struct-pat.rs b/tests/ui/structs-enums/cross-crate-newtype-struct-pat.rs similarity index 100% rename from src/test/ui/structs-enums/cross-crate-newtype-struct-pat.rs rename to tests/ui/structs-enums/cross-crate-newtype-struct-pat.rs diff --git a/src/test/ui/structs-enums/discrim-explicit-23030.rs b/tests/ui/structs-enums/discrim-explicit-23030.rs similarity index 100% rename from src/test/ui/structs-enums/discrim-explicit-23030.rs rename to tests/ui/structs-enums/discrim-explicit-23030.rs diff --git a/src/test/ui/structs-enums/empty-struct-braces.rs b/tests/ui/structs-enums/empty-struct-braces.rs similarity index 100% rename from src/test/ui/structs-enums/empty-struct-braces.rs rename to tests/ui/structs-enums/empty-struct-braces.rs diff --git a/src/test/ui/structs-enums/empty-tag.rs b/tests/ui/structs-enums/empty-tag.rs similarity index 100% rename from src/test/ui/structs-enums/empty-tag.rs rename to tests/ui/structs-enums/empty-tag.rs diff --git a/src/test/ui/structs-enums/enum-alignment.rs b/tests/ui/structs-enums/enum-alignment.rs similarity index 100% rename from src/test/ui/structs-enums/enum-alignment.rs rename to tests/ui/structs-enums/enum-alignment.rs diff --git a/src/test/ui/structs-enums/enum-clike-ffi-as-int.rs b/tests/ui/structs-enums/enum-clike-ffi-as-int.rs similarity index 100% rename from src/test/ui/structs-enums/enum-clike-ffi-as-int.rs rename to tests/ui/structs-enums/enum-clike-ffi-as-int.rs diff --git a/src/test/ui/structs-enums/enum-discr.rs b/tests/ui/structs-enums/enum-discr.rs similarity index 100% rename from src/test/ui/structs-enums/enum-discr.rs rename to tests/ui/structs-enums/enum-discr.rs diff --git a/src/test/ui/structs-enums/enum-discrim-autosizing.rs b/tests/ui/structs-enums/enum-discrim-autosizing.rs similarity index 100% rename from src/test/ui/structs-enums/enum-discrim-autosizing.rs rename to tests/ui/structs-enums/enum-discrim-autosizing.rs diff --git a/src/test/ui/structs-enums/enum-discrim-manual-sizing.rs b/tests/ui/structs-enums/enum-discrim-manual-sizing.rs similarity index 100% rename from src/test/ui/structs-enums/enum-discrim-manual-sizing.rs rename to tests/ui/structs-enums/enum-discrim-manual-sizing.rs diff --git a/src/test/ui/structs-enums/enum-discrim-range-overflow.rs b/tests/ui/structs-enums/enum-discrim-range-overflow.rs similarity index 100% rename from src/test/ui/structs-enums/enum-discrim-range-overflow.rs rename to tests/ui/structs-enums/enum-discrim-range-overflow.rs diff --git a/src/test/ui/structs-enums/enum-discrim-width-stuff.rs b/tests/ui/structs-enums/enum-discrim-width-stuff.rs similarity index 100% rename from src/test/ui/structs-enums/enum-discrim-width-stuff.rs rename to tests/ui/structs-enums/enum-discrim-width-stuff.rs diff --git a/src/test/ui/structs-enums/enum-disr-val-pretty.rs b/tests/ui/structs-enums/enum-disr-val-pretty.rs similarity index 100% rename from src/test/ui/structs-enums/enum-disr-val-pretty.rs rename to tests/ui/structs-enums/enum-disr-val-pretty.rs diff --git a/src/test/ui/structs-enums/enum-export-inheritance.rs b/tests/ui/structs-enums/enum-export-inheritance.rs similarity index 100% rename from src/test/ui/structs-enums/enum-export-inheritance.rs rename to tests/ui/structs-enums/enum-export-inheritance.rs diff --git a/src/test/ui/structs-enums/enum-layout-optimization.rs b/tests/ui/structs-enums/enum-layout-optimization.rs similarity index 100% rename from src/test/ui/structs-enums/enum-layout-optimization.rs rename to tests/ui/structs-enums/enum-layout-optimization.rs diff --git a/src/test/ui/structs-enums/enum-non-c-like-repr-c-and-int.rs b/tests/ui/structs-enums/enum-non-c-like-repr-c-and-int.rs similarity index 100% rename from src/test/ui/structs-enums/enum-non-c-like-repr-c-and-int.rs rename to tests/ui/structs-enums/enum-non-c-like-repr-c-and-int.rs diff --git a/src/test/ui/structs-enums/enum-non-c-like-repr-c.rs b/tests/ui/structs-enums/enum-non-c-like-repr-c.rs similarity index 100% rename from src/test/ui/structs-enums/enum-non-c-like-repr-c.rs rename to tests/ui/structs-enums/enum-non-c-like-repr-c.rs diff --git a/src/test/ui/structs-enums/enum-non-c-like-repr-int.rs b/tests/ui/structs-enums/enum-non-c-like-repr-int.rs similarity index 100% rename from src/test/ui/structs-enums/enum-non-c-like-repr-int.rs rename to tests/ui/structs-enums/enum-non-c-like-repr-int.rs diff --git a/src/test/ui/structs-enums/enum-null-pointer-opt.rs b/tests/ui/structs-enums/enum-null-pointer-opt.rs similarity index 100% rename from src/test/ui/structs-enums/enum-null-pointer-opt.rs rename to tests/ui/structs-enums/enum-null-pointer-opt.rs diff --git a/src/test/ui/structs-enums/enum-nullable-const-null-with-fields.rs b/tests/ui/structs-enums/enum-nullable-const-null-with-fields.rs similarity index 100% rename from src/test/ui/structs-enums/enum-nullable-const-null-with-fields.rs rename to tests/ui/structs-enums/enum-nullable-const-null-with-fields.rs diff --git a/src/test/ui/structs-enums/enum-nullable-simplifycfg-misopt.rs b/tests/ui/structs-enums/enum-nullable-simplifycfg-misopt.rs similarity index 100% rename from src/test/ui/structs-enums/enum-nullable-simplifycfg-misopt.rs rename to tests/ui/structs-enums/enum-nullable-simplifycfg-misopt.rs diff --git a/src/test/ui/structs-enums/enum-univariant-repr.rs b/tests/ui/structs-enums/enum-univariant-repr.rs similarity index 100% rename from src/test/ui/structs-enums/enum-univariant-repr.rs rename to tests/ui/structs-enums/enum-univariant-repr.rs diff --git a/src/test/ui/structs-enums/enum-variants.rs b/tests/ui/structs-enums/enum-variants.rs similarity index 100% rename from src/test/ui/structs-enums/enum-variants.rs rename to tests/ui/structs-enums/enum-variants.rs diff --git a/src/test/ui/structs-enums/enum-vec-initializer.rs b/tests/ui/structs-enums/enum-vec-initializer.rs similarity index 100% rename from src/test/ui/structs-enums/enum-vec-initializer.rs rename to tests/ui/structs-enums/enum-vec-initializer.rs diff --git a/src/test/ui/structs-enums/export-abstract-tag.rs b/tests/ui/structs-enums/export-abstract-tag.rs similarity index 100% rename from src/test/ui/structs-enums/export-abstract-tag.rs rename to tests/ui/structs-enums/export-abstract-tag.rs diff --git a/src/test/ui/structs-enums/export-tag-variant.rs b/tests/ui/structs-enums/export-tag-variant.rs similarity index 100% rename from src/test/ui/structs-enums/export-tag-variant.rs rename to tests/ui/structs-enums/export-tag-variant.rs diff --git a/src/test/ui/structs-enums/expr-if-struct.rs b/tests/ui/structs-enums/expr-if-struct.rs similarity index 100% rename from src/test/ui/structs-enums/expr-if-struct.rs rename to tests/ui/structs-enums/expr-if-struct.rs diff --git a/src/test/ui/structs-enums/expr-match-struct.rs b/tests/ui/structs-enums/expr-match-struct.rs similarity index 100% rename from src/test/ui/structs-enums/expr-match-struct.rs rename to tests/ui/structs-enums/expr-match-struct.rs diff --git a/src/test/ui/structs-enums/field-destruction-order.rs b/tests/ui/structs-enums/field-destruction-order.rs similarity index 100% rename from src/test/ui/structs-enums/field-destruction-order.rs rename to tests/ui/structs-enums/field-destruction-order.rs diff --git a/src/test/ui/structs-enums/foreign-struct.rs b/tests/ui/structs-enums/foreign-struct.rs similarity index 100% rename from src/test/ui/structs-enums/foreign-struct.rs rename to tests/ui/structs-enums/foreign-struct.rs diff --git a/src/test/ui/structs-enums/functional-struct-upd.rs b/tests/ui/structs-enums/functional-struct-upd.rs similarity index 100% rename from src/test/ui/structs-enums/functional-struct-upd.rs rename to tests/ui/structs-enums/functional-struct-upd.rs diff --git a/src/test/ui/structs-enums/issue-1701.rs b/tests/ui/structs-enums/issue-1701.rs similarity index 100% rename from src/test/ui/structs-enums/issue-1701.rs rename to tests/ui/structs-enums/issue-1701.rs diff --git a/src/test/ui/structs-enums/issue-2718-a.rs b/tests/ui/structs-enums/issue-2718-a.rs similarity index 100% rename from src/test/ui/structs-enums/issue-2718-a.rs rename to tests/ui/structs-enums/issue-2718-a.rs diff --git a/src/test/ui/structs-enums/issue-2718-a.stderr b/tests/ui/structs-enums/issue-2718-a.stderr similarity index 100% rename from src/test/ui/structs-enums/issue-2718-a.stderr rename to tests/ui/structs-enums/issue-2718-a.stderr diff --git a/src/test/ui/structs-enums/issue-38002.rs b/tests/ui/structs-enums/issue-38002.rs similarity index 100% rename from src/test/ui/structs-enums/issue-38002.rs rename to tests/ui/structs-enums/issue-38002.rs diff --git a/src/test/ui/structs-enums/issue-50731.rs b/tests/ui/structs-enums/issue-50731.rs similarity index 100% rename from src/test/ui/structs-enums/issue-50731.rs rename to tests/ui/structs-enums/issue-50731.rs diff --git a/src/test/ui/structs-enums/ivec-tag.rs b/tests/ui/structs-enums/ivec-tag.rs similarity index 100% rename from src/test/ui/structs-enums/ivec-tag.rs rename to tests/ui/structs-enums/ivec-tag.rs diff --git a/src/test/ui/structs-enums/module-qualified-struct-destructure.rs b/tests/ui/structs-enums/module-qualified-struct-destructure.rs similarity index 100% rename from src/test/ui/structs-enums/module-qualified-struct-destructure.rs rename to tests/ui/structs-enums/module-qualified-struct-destructure.rs diff --git a/src/test/ui/structs-enums/multiple-reprs.rs b/tests/ui/structs-enums/multiple-reprs.rs similarity index 100% rename from src/test/ui/structs-enums/multiple-reprs.rs rename to tests/ui/structs-enums/multiple-reprs.rs diff --git a/src/test/ui/structs-enums/namespaced-enum-emulate-flat-xc.rs b/tests/ui/structs-enums/namespaced-enum-emulate-flat-xc.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enum-emulate-flat-xc.rs rename to tests/ui/structs-enums/namespaced-enum-emulate-flat-xc.rs diff --git a/src/test/ui/structs-enums/namespaced-enum-emulate-flat.rs b/tests/ui/structs-enums/namespaced-enum-emulate-flat.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enum-emulate-flat.rs rename to tests/ui/structs-enums/namespaced-enum-emulate-flat.rs diff --git a/src/test/ui/structs-enums/namespaced-enum-glob-import-xcrate.rs b/tests/ui/structs-enums/namespaced-enum-glob-import-xcrate.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enum-glob-import-xcrate.rs rename to tests/ui/structs-enums/namespaced-enum-glob-import-xcrate.rs diff --git a/src/test/ui/structs-enums/namespaced-enum-glob-import.rs b/tests/ui/structs-enums/namespaced-enum-glob-import.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enum-glob-import.rs rename to tests/ui/structs-enums/namespaced-enum-glob-import.rs diff --git a/src/test/ui/structs-enums/namespaced-enums-xcrate.rs b/tests/ui/structs-enums/namespaced-enums-xcrate.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enums-xcrate.rs rename to tests/ui/structs-enums/namespaced-enums-xcrate.rs diff --git a/src/test/ui/structs-enums/namespaced-enums.rs b/tests/ui/structs-enums/namespaced-enums.rs similarity index 100% rename from src/test/ui/structs-enums/namespaced-enums.rs rename to tests/ui/structs-enums/namespaced-enums.rs diff --git a/src/test/ui/structs-enums/nested-enum-same-names.rs b/tests/ui/structs-enums/nested-enum-same-names.rs similarity index 100% rename from src/test/ui/structs-enums/nested-enum-same-names.rs rename to tests/ui/structs-enums/nested-enum-same-names.rs diff --git a/src/test/ui/structs-enums/newtype-struct-drop-run.rs b/tests/ui/structs-enums/newtype-struct-drop-run.rs similarity index 100% rename from src/test/ui/structs-enums/newtype-struct-drop-run.rs rename to tests/ui/structs-enums/newtype-struct-drop-run.rs diff --git a/src/test/ui/structs-enums/newtype-struct-with-dtor.rs b/tests/ui/structs-enums/newtype-struct-with-dtor.rs similarity index 100% rename from src/test/ui/structs-enums/newtype-struct-with-dtor.rs rename to tests/ui/structs-enums/newtype-struct-with-dtor.rs diff --git a/src/test/ui/structs-enums/newtype-struct-xc-2.rs b/tests/ui/structs-enums/newtype-struct-xc-2.rs similarity index 100% rename from src/test/ui/structs-enums/newtype-struct-xc-2.rs rename to tests/ui/structs-enums/newtype-struct-xc-2.rs diff --git a/src/test/ui/structs-enums/newtype-struct-xc.rs b/tests/ui/structs-enums/newtype-struct-xc.rs similarity index 100% rename from src/test/ui/structs-enums/newtype-struct-xc.rs rename to tests/ui/structs-enums/newtype-struct-xc.rs diff --git a/src/test/ui/structs-enums/nonzero-enum.rs b/tests/ui/structs-enums/nonzero-enum.rs similarity index 100% rename from src/test/ui/structs-enums/nonzero-enum.rs rename to tests/ui/structs-enums/nonzero-enum.rs diff --git a/src/test/ui/structs-enums/numeric-fields.rs b/tests/ui/structs-enums/numeric-fields.rs similarity index 100% rename from src/test/ui/structs-enums/numeric-fields.rs rename to tests/ui/structs-enums/numeric-fields.rs diff --git a/src/test/ui/structs-enums/rec-align-u32.rs b/tests/ui/structs-enums/rec-align-u32.rs similarity index 100% rename from src/test/ui/structs-enums/rec-align-u32.rs rename to tests/ui/structs-enums/rec-align-u32.rs diff --git a/src/test/ui/structs-enums/rec-align-u64.rs b/tests/ui/structs-enums/rec-align-u64.rs similarity index 100% rename from src/test/ui/structs-enums/rec-align-u64.rs rename to tests/ui/structs-enums/rec-align-u64.rs diff --git a/src/test/ui/structs-enums/rec-auto.rs b/tests/ui/structs-enums/rec-auto.rs similarity index 100% rename from src/test/ui/structs-enums/rec-auto.rs rename to tests/ui/structs-enums/rec-auto.rs diff --git a/src/test/ui/structs-enums/rec-extend.rs b/tests/ui/structs-enums/rec-extend.rs similarity index 100% rename from src/test/ui/structs-enums/rec-extend.rs rename to tests/ui/structs-enums/rec-extend.rs diff --git a/src/test/ui/structs-enums/rec-tup.rs b/tests/ui/structs-enums/rec-tup.rs similarity index 100% rename from src/test/ui/structs-enums/rec-tup.rs rename to tests/ui/structs-enums/rec-tup.rs diff --git a/src/test/ui/structs-enums/rec.rs b/tests/ui/structs-enums/rec.rs similarity index 100% rename from src/test/ui/structs-enums/rec.rs rename to tests/ui/structs-enums/rec.rs diff --git a/src/test/ui/structs-enums/record-pat.rs b/tests/ui/structs-enums/record-pat.rs similarity index 100% rename from src/test/ui/structs-enums/record-pat.rs rename to tests/ui/structs-enums/record-pat.rs diff --git a/src/test/ui/structs-enums/resource-in-struct.rs b/tests/ui/structs-enums/resource-in-struct.rs similarity index 100% rename from src/test/ui/structs-enums/resource-in-struct.rs rename to tests/ui/structs-enums/resource-in-struct.rs diff --git a/src/test/ui/structs-enums/simple-generic-tag.rs b/tests/ui/structs-enums/simple-generic-tag.rs similarity index 100% rename from src/test/ui/structs-enums/simple-generic-tag.rs rename to tests/ui/structs-enums/simple-generic-tag.rs diff --git a/src/test/ui/structs-enums/simple-match-generic-tag.rs b/tests/ui/structs-enums/simple-match-generic-tag.rs similarity index 100% rename from src/test/ui/structs-enums/simple-match-generic-tag.rs rename to tests/ui/structs-enums/simple-match-generic-tag.rs diff --git a/src/test/ui/structs-enums/small-enum-range-edge.rs b/tests/ui/structs-enums/small-enum-range-edge.rs similarity index 100% rename from src/test/ui/structs-enums/small-enum-range-edge.rs rename to tests/ui/structs-enums/small-enum-range-edge.rs diff --git a/src/test/ui/structs-enums/small-enums-with-fields.rs b/tests/ui/structs-enums/small-enums-with-fields.rs similarity index 100% rename from src/test/ui/structs-enums/small-enums-with-fields.rs rename to tests/ui/structs-enums/small-enums-with-fields.rs diff --git a/src/test/ui/structs-enums/struct-aliases-xcrate.rs b/tests/ui/structs-enums/struct-aliases-xcrate.rs similarity index 100% rename from src/test/ui/structs-enums/struct-aliases-xcrate.rs rename to tests/ui/structs-enums/struct-aliases-xcrate.rs diff --git a/src/test/ui/structs-enums/struct-aliases.rs b/tests/ui/structs-enums/struct-aliases.rs similarity index 100% rename from src/test/ui/structs-enums/struct-aliases.rs rename to tests/ui/structs-enums/struct-aliases.rs diff --git a/src/test/ui/structs-enums/struct-destructuring-cross-crate.rs b/tests/ui/structs-enums/struct-destructuring-cross-crate.rs similarity index 100% rename from src/test/ui/structs-enums/struct-destructuring-cross-crate.rs rename to tests/ui/structs-enums/struct-destructuring-cross-crate.rs diff --git a/src/test/ui/structs-enums/struct-enum-ignoring-field-with-underscore.rs b/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.rs similarity index 100% rename from src/test/ui/structs-enums/struct-enum-ignoring-field-with-underscore.rs rename to tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.rs diff --git a/src/test/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr b/tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr similarity index 100% rename from src/test/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr rename to tests/ui/structs-enums/struct-enum-ignoring-field-with-underscore.stderr diff --git a/src/test/ui/structs-enums/struct-field-shorthand.rs b/tests/ui/structs-enums/struct-field-shorthand.rs similarity index 100% rename from src/test/ui/structs-enums/struct-field-shorthand.rs rename to tests/ui/structs-enums/struct-field-shorthand.rs diff --git a/src/test/ui/structs-enums/struct-like-variant-construct.rs b/tests/ui/structs-enums/struct-like-variant-construct.rs similarity index 100% rename from src/test/ui/structs-enums/struct-like-variant-construct.rs rename to tests/ui/structs-enums/struct-like-variant-construct.rs diff --git a/src/test/ui/structs-enums/struct-like-variant-match.rs b/tests/ui/structs-enums/struct-like-variant-match.rs similarity index 100% rename from src/test/ui/structs-enums/struct-like-variant-match.rs rename to tests/ui/structs-enums/struct-like-variant-match.rs diff --git a/src/test/ui/structs-enums/struct-lit-functional-no-fields.rs b/tests/ui/structs-enums/struct-lit-functional-no-fields.rs similarity index 100% rename from src/test/ui/structs-enums/struct-lit-functional-no-fields.rs rename to tests/ui/structs-enums/struct-lit-functional-no-fields.rs diff --git a/src/test/ui/structs-enums/struct-literal-dtor.rs b/tests/ui/structs-enums/struct-literal-dtor.rs similarity index 100% rename from src/test/ui/structs-enums/struct-literal-dtor.rs rename to tests/ui/structs-enums/struct-literal-dtor.rs diff --git a/src/test/ui/structs-enums/struct-new-as-field-name.rs b/tests/ui/structs-enums/struct-new-as-field-name.rs similarity index 100% rename from src/test/ui/structs-enums/struct-new-as-field-name.rs rename to tests/ui/structs-enums/struct-new-as-field-name.rs diff --git a/src/test/ui/structs-enums/struct-order-of-eval-1.rs b/tests/ui/structs-enums/struct-order-of-eval-1.rs similarity index 100% rename from src/test/ui/structs-enums/struct-order-of-eval-1.rs rename to tests/ui/structs-enums/struct-order-of-eval-1.rs diff --git a/src/test/ui/structs-enums/struct-order-of-eval-2.rs b/tests/ui/structs-enums/struct-order-of-eval-2.rs similarity index 100% rename from src/test/ui/structs-enums/struct-order-of-eval-2.rs rename to tests/ui/structs-enums/struct-order-of-eval-2.rs diff --git a/src/test/ui/structs-enums/struct-order-of-eval-3.rs b/tests/ui/structs-enums/struct-order-of-eval-3.rs similarity index 100% rename from src/test/ui/structs-enums/struct-order-of-eval-3.rs rename to tests/ui/structs-enums/struct-order-of-eval-3.rs diff --git a/src/test/ui/structs-enums/struct-order-of-eval-4.rs b/tests/ui/structs-enums/struct-order-of-eval-4.rs similarity index 100% rename from src/test/ui/structs-enums/struct-order-of-eval-4.rs rename to tests/ui/structs-enums/struct-order-of-eval-4.rs diff --git a/src/test/ui/structs-enums/struct-partial-move-1.rs b/tests/ui/structs-enums/struct-partial-move-1.rs similarity index 100% rename from src/test/ui/structs-enums/struct-partial-move-1.rs rename to tests/ui/structs-enums/struct-partial-move-1.rs diff --git a/src/test/ui/structs-enums/struct-partial-move-2.rs b/tests/ui/structs-enums/struct-partial-move-2.rs similarity index 100% rename from src/test/ui/structs-enums/struct-partial-move-2.rs rename to tests/ui/structs-enums/struct-partial-move-2.rs diff --git a/src/test/ui/structs-enums/struct-path-associated-type.rs b/tests/ui/structs-enums/struct-path-associated-type.rs similarity index 100% rename from src/test/ui/structs-enums/struct-path-associated-type.rs rename to tests/ui/structs-enums/struct-path-associated-type.rs diff --git a/src/test/ui/structs-enums/struct-path-self.rs b/tests/ui/structs-enums/struct-path-self.rs similarity index 100% rename from src/test/ui/structs-enums/struct-path-self.rs rename to tests/ui/structs-enums/struct-path-self.rs diff --git a/src/test/ui/structs-enums/struct-pattern-matching.rs b/tests/ui/structs-enums/struct-pattern-matching.rs similarity index 100% rename from src/test/ui/structs-enums/struct-pattern-matching.rs rename to tests/ui/structs-enums/struct-pattern-matching.rs diff --git a/src/test/ui/structs-enums/struct-rec/issue-74224.rs b/tests/ui/structs-enums/struct-rec/issue-74224.rs similarity index 100% rename from src/test/ui/structs-enums/struct-rec/issue-74224.rs rename to tests/ui/structs-enums/struct-rec/issue-74224.rs diff --git a/src/test/ui/structs-enums/struct-rec/issue-74224.stderr b/tests/ui/structs-enums/struct-rec/issue-74224.stderr similarity index 100% rename from src/test/ui/structs-enums/struct-rec/issue-74224.stderr rename to tests/ui/structs-enums/struct-rec/issue-74224.stderr diff --git a/src/test/ui/structs-enums/struct-rec/issue-84611.rs b/tests/ui/structs-enums/struct-rec/issue-84611.rs similarity index 100% rename from src/test/ui/structs-enums/struct-rec/issue-84611.rs rename to tests/ui/structs-enums/struct-rec/issue-84611.rs diff --git a/src/test/ui/structs-enums/struct-rec/issue-84611.stderr b/tests/ui/structs-enums/struct-rec/issue-84611.stderr similarity index 100% rename from src/test/ui/structs-enums/struct-rec/issue-84611.stderr rename to tests/ui/structs-enums/struct-rec/issue-84611.stderr diff --git a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs b/tests/ui/structs-enums/struct-rec/mutual-struct-recursion.rs similarity index 100% rename from src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs rename to tests/ui/structs-enums/struct-rec/mutual-struct-recursion.rs diff --git a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr b/tests/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr similarity index 100% rename from src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr rename to tests/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr diff --git a/src/test/ui/structs-enums/struct-variant-field-visibility.rs b/tests/ui/structs-enums/struct-variant-field-visibility.rs similarity index 100% rename from src/test/ui/structs-enums/struct-variant-field-visibility.rs rename to tests/ui/structs-enums/struct-variant-field-visibility.rs diff --git a/src/test/ui/structs-enums/struct_variant_xc.rs b/tests/ui/structs-enums/struct_variant_xc.rs similarity index 100% rename from src/test/ui/structs-enums/struct_variant_xc.rs rename to tests/ui/structs-enums/struct_variant_xc.rs diff --git a/src/test/ui/structs-enums/struct_variant_xc_match.rs b/tests/ui/structs-enums/struct_variant_xc_match.rs similarity index 100% rename from src/test/ui/structs-enums/struct_variant_xc_match.rs rename to tests/ui/structs-enums/struct_variant_xc_match.rs diff --git a/src/test/ui/structs-enums/tag-align-dyn-u64.rs b/tests/ui/structs-enums/tag-align-dyn-u64.rs similarity index 100% rename from src/test/ui/structs-enums/tag-align-dyn-u64.rs rename to tests/ui/structs-enums/tag-align-dyn-u64.rs diff --git a/src/test/ui/structs-enums/tag-align-dyn-variants.rs b/tests/ui/structs-enums/tag-align-dyn-variants.rs similarity index 100% rename from src/test/ui/structs-enums/tag-align-dyn-variants.rs rename to tests/ui/structs-enums/tag-align-dyn-variants.rs diff --git a/src/test/ui/structs-enums/tag-align-shape.rs b/tests/ui/structs-enums/tag-align-shape.rs similarity index 100% rename from src/test/ui/structs-enums/tag-align-shape.rs rename to tests/ui/structs-enums/tag-align-shape.rs diff --git a/src/test/ui/structs-enums/tag-align-u64.rs b/tests/ui/structs-enums/tag-align-u64.rs similarity index 100% rename from src/test/ui/structs-enums/tag-align-u64.rs rename to tests/ui/structs-enums/tag-align-u64.rs diff --git a/src/test/ui/structs-enums/tag-disr-val-shape.rs b/tests/ui/structs-enums/tag-disr-val-shape.rs similarity index 100% rename from src/test/ui/structs-enums/tag-disr-val-shape.rs rename to tests/ui/structs-enums/tag-disr-val-shape.rs diff --git a/src/test/ui/structs-enums/tag-exports.rs b/tests/ui/structs-enums/tag-exports.rs similarity index 100% rename from src/test/ui/structs-enums/tag-exports.rs rename to tests/ui/structs-enums/tag-exports.rs diff --git a/src/test/ui/structs-enums/tag-in-block.rs b/tests/ui/structs-enums/tag-in-block.rs similarity index 100% rename from src/test/ui/structs-enums/tag-in-block.rs rename to tests/ui/structs-enums/tag-in-block.rs diff --git a/src/test/ui/structs-enums/tag-variant-disr-type-mismatch.rs b/tests/ui/structs-enums/tag-variant-disr-type-mismatch.rs similarity index 100% rename from src/test/ui/structs-enums/tag-variant-disr-type-mismatch.rs rename to tests/ui/structs-enums/tag-variant-disr-type-mismatch.rs diff --git a/src/test/ui/structs-enums/tag-variant-disr-val.rs b/tests/ui/structs-enums/tag-variant-disr-val.rs similarity index 100% rename from src/test/ui/structs-enums/tag-variant-disr-val.rs rename to tests/ui/structs-enums/tag-variant-disr-val.rs diff --git a/src/test/ui/structs-enums/tag.rs b/tests/ui/structs-enums/tag.rs similarity index 100% rename from src/test/ui/structs-enums/tag.rs rename to tests/ui/structs-enums/tag.rs diff --git a/src/test/ui/structs-enums/tuple-struct-construct.rs b/tests/ui/structs-enums/tuple-struct-construct.rs similarity index 100% rename from src/test/ui/structs-enums/tuple-struct-construct.rs rename to tests/ui/structs-enums/tuple-struct-construct.rs diff --git a/src/test/ui/structs-enums/tuple-struct-constructor-pointer.rs b/tests/ui/structs-enums/tuple-struct-constructor-pointer.rs similarity index 100% rename from src/test/ui/structs-enums/tuple-struct-constructor-pointer.rs rename to tests/ui/structs-enums/tuple-struct-constructor-pointer.rs diff --git a/src/test/ui/structs-enums/tuple-struct-destructuring.rs b/tests/ui/structs-enums/tuple-struct-destructuring.rs similarity index 100% rename from src/test/ui/structs-enums/tuple-struct-destructuring.rs rename to tests/ui/structs-enums/tuple-struct-destructuring.rs diff --git a/src/test/ui/structs-enums/tuple-struct-matching.rs b/tests/ui/structs-enums/tuple-struct-matching.rs similarity index 100% rename from src/test/ui/structs-enums/tuple-struct-matching.rs rename to tests/ui/structs-enums/tuple-struct-matching.rs diff --git a/src/test/ui/structs-enums/tuple-struct-trivial.rs b/tests/ui/structs-enums/tuple-struct-trivial.rs similarity index 100% rename from src/test/ui/structs-enums/tuple-struct-trivial.rs rename to tests/ui/structs-enums/tuple-struct-trivial.rs diff --git a/src/test/ui/structs-enums/type-sizes.rs b/tests/ui/structs-enums/type-sizes.rs similarity index 100% rename from src/test/ui/structs-enums/type-sizes.rs rename to tests/ui/structs-enums/type-sizes.rs diff --git a/src/test/ui/structs-enums/uninstantiable-struct.rs b/tests/ui/structs-enums/uninstantiable-struct.rs similarity index 100% rename from src/test/ui/structs-enums/uninstantiable-struct.rs rename to tests/ui/structs-enums/uninstantiable-struct.rs diff --git a/src/test/ui/structs-enums/unit-like-struct-drop-run.rs b/tests/ui/structs-enums/unit-like-struct-drop-run.rs similarity index 100% rename from src/test/ui/structs-enums/unit-like-struct-drop-run.rs rename to tests/ui/structs-enums/unit-like-struct-drop-run.rs diff --git a/src/test/ui/structs-enums/unit-like-struct.rs b/tests/ui/structs-enums/unit-like-struct.rs similarity index 100% rename from src/test/ui/structs-enums/unit-like-struct.rs rename to tests/ui/structs-enums/unit-like-struct.rs diff --git a/src/test/ui/structs-enums/variant-structs-trivial.rs b/tests/ui/structs-enums/variant-structs-trivial.rs similarity index 100% rename from src/test/ui/structs-enums/variant-structs-trivial.rs rename to tests/ui/structs-enums/variant-structs-trivial.rs diff --git a/src/test/ui/structs/auxiliary/struct_field_privacy.rs b/tests/ui/structs/auxiliary/struct_field_privacy.rs similarity index 100% rename from src/test/ui/structs/auxiliary/struct_field_privacy.rs rename to tests/ui/structs/auxiliary/struct_field_privacy.rs diff --git a/src/test/ui/structs/auxiliary/struct_variant_privacy.rs b/tests/ui/structs/auxiliary/struct_variant_privacy.rs similarity index 100% rename from src/test/ui/structs/auxiliary/struct_variant_privacy.rs rename to tests/ui/structs/auxiliary/struct_variant_privacy.rs diff --git a/src/test/ui/structs/incomplete-fn-in-struct-definition.rs b/tests/ui/structs/incomplete-fn-in-struct-definition.rs similarity index 100% rename from src/test/ui/structs/incomplete-fn-in-struct-definition.rs rename to tests/ui/structs/incomplete-fn-in-struct-definition.rs diff --git a/src/test/ui/structs/incomplete-fn-in-struct-definition.stderr b/tests/ui/structs/incomplete-fn-in-struct-definition.stderr similarity index 100% rename from src/test/ui/structs/incomplete-fn-in-struct-definition.stderr rename to tests/ui/structs/incomplete-fn-in-struct-definition.stderr diff --git a/src/test/ui/structs/issue-80853.rs b/tests/ui/structs/issue-80853.rs similarity index 100% rename from src/test/ui/structs/issue-80853.rs rename to tests/ui/structs/issue-80853.rs diff --git a/src/test/ui/structs/issue-80853.stderr b/tests/ui/structs/issue-80853.stderr similarity index 100% rename from src/test/ui/structs/issue-80853.stderr rename to tests/ui/structs/issue-80853.stderr diff --git a/src/test/ui/structs/large-records.rs b/tests/ui/structs/large-records.rs similarity index 100% rename from src/test/ui/structs/large-records.rs rename to tests/ui/structs/large-records.rs diff --git a/src/test/ui/structs/multi-line-fru-suggestion.rs b/tests/ui/structs/multi-line-fru-suggestion.rs similarity index 100% rename from src/test/ui/structs/multi-line-fru-suggestion.rs rename to tests/ui/structs/multi-line-fru-suggestion.rs diff --git a/src/test/ui/structs/multi-line-fru-suggestion.stderr b/tests/ui/structs/multi-line-fru-suggestion.stderr similarity index 100% rename from src/test/ui/structs/multi-line-fru-suggestion.stderr rename to tests/ui/structs/multi-line-fru-suggestion.stderr diff --git a/src/test/ui/structs/rhs-type.rs b/tests/ui/structs/rhs-type.rs similarity index 100% rename from src/test/ui/structs/rhs-type.rs rename to tests/ui/structs/rhs-type.rs diff --git a/src/test/ui/structs/struct-base-wrong-type.rs b/tests/ui/structs/struct-base-wrong-type.rs similarity index 100% rename from src/test/ui/structs/struct-base-wrong-type.rs rename to tests/ui/structs/struct-base-wrong-type.rs diff --git a/src/test/ui/structs/struct-base-wrong-type.stderr b/tests/ui/structs/struct-base-wrong-type.stderr similarity index 100% rename from src/test/ui/structs/struct-base-wrong-type.stderr rename to tests/ui/structs/struct-base-wrong-type.stderr diff --git a/src/test/ui/structs/struct-duplicate-comma.fixed b/tests/ui/structs/struct-duplicate-comma.fixed similarity index 100% rename from src/test/ui/structs/struct-duplicate-comma.fixed rename to tests/ui/structs/struct-duplicate-comma.fixed diff --git a/src/test/ui/structs/struct-duplicate-comma.rs b/tests/ui/structs/struct-duplicate-comma.rs similarity index 100% rename from src/test/ui/structs/struct-duplicate-comma.rs rename to tests/ui/structs/struct-duplicate-comma.rs diff --git a/src/test/ui/structs/struct-duplicate-comma.stderr b/tests/ui/structs/struct-duplicate-comma.stderr similarity index 100% rename from src/test/ui/structs/struct-duplicate-comma.stderr rename to tests/ui/structs/struct-duplicate-comma.stderr diff --git a/src/test/ui/structs/struct-field-cfg.rs b/tests/ui/structs/struct-field-cfg.rs similarity index 100% rename from src/test/ui/structs/struct-field-cfg.rs rename to tests/ui/structs/struct-field-cfg.rs diff --git a/src/test/ui/structs/struct-field-cfg.stderr b/tests/ui/structs/struct-field-cfg.stderr similarity index 100% rename from src/test/ui/structs/struct-field-cfg.stderr rename to tests/ui/structs/struct-field-cfg.stderr diff --git a/src/test/ui/structs/struct-field-init-syntax.rs b/tests/ui/structs/struct-field-init-syntax.rs similarity index 100% rename from src/test/ui/structs/struct-field-init-syntax.rs rename to tests/ui/structs/struct-field-init-syntax.rs diff --git a/src/test/ui/structs/struct-field-init-syntax.stderr b/tests/ui/structs/struct-field-init-syntax.stderr similarity index 100% rename from src/test/ui/structs/struct-field-init-syntax.stderr rename to tests/ui/structs/struct-field-init-syntax.stderr diff --git a/src/test/ui/structs/struct-field-privacy.rs b/tests/ui/structs/struct-field-privacy.rs similarity index 100% rename from src/test/ui/structs/struct-field-privacy.rs rename to tests/ui/structs/struct-field-privacy.rs diff --git a/src/test/ui/structs/struct-field-privacy.stderr b/tests/ui/structs/struct-field-privacy.stderr similarity index 100% rename from src/test/ui/structs/struct-field-privacy.stderr rename to tests/ui/structs/struct-field-privacy.stderr diff --git a/src/test/ui/structs/struct-fields-decl-dupe.rs b/tests/ui/structs/struct-fields-decl-dupe.rs similarity index 100% rename from src/test/ui/structs/struct-fields-decl-dupe.rs rename to tests/ui/structs/struct-fields-decl-dupe.rs diff --git a/src/test/ui/structs/struct-fields-decl-dupe.stderr b/tests/ui/structs/struct-fields-decl-dupe.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-decl-dupe.stderr rename to tests/ui/structs/struct-fields-decl-dupe.stderr diff --git a/src/test/ui/structs/struct-fields-dupe.rs b/tests/ui/structs/struct-fields-dupe.rs similarity index 100% rename from src/test/ui/structs/struct-fields-dupe.rs rename to tests/ui/structs/struct-fields-dupe.rs diff --git a/src/test/ui/structs/struct-fields-dupe.stderr b/tests/ui/structs/struct-fields-dupe.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-dupe.stderr rename to tests/ui/structs/struct-fields-dupe.stderr diff --git a/src/test/ui/structs/struct-fields-hints-no-dupe.rs b/tests/ui/structs/struct-fields-hints-no-dupe.rs similarity index 100% rename from src/test/ui/structs/struct-fields-hints-no-dupe.rs rename to tests/ui/structs/struct-fields-hints-no-dupe.rs diff --git a/src/test/ui/structs/struct-fields-hints-no-dupe.stderr b/tests/ui/structs/struct-fields-hints-no-dupe.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-hints-no-dupe.stderr rename to tests/ui/structs/struct-fields-hints-no-dupe.stderr diff --git a/src/test/ui/structs/struct-fields-hints.rs b/tests/ui/structs/struct-fields-hints.rs similarity index 100% rename from src/test/ui/structs/struct-fields-hints.rs rename to tests/ui/structs/struct-fields-hints.rs diff --git a/src/test/ui/structs/struct-fields-hints.stderr b/tests/ui/structs/struct-fields-hints.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-hints.stderr rename to tests/ui/structs/struct-fields-hints.stderr diff --git a/src/test/ui/structs/struct-fields-missing.rs b/tests/ui/structs/struct-fields-missing.rs similarity index 100% rename from src/test/ui/structs/struct-fields-missing.rs rename to tests/ui/structs/struct-fields-missing.rs diff --git a/src/test/ui/structs/struct-fields-missing.stderr b/tests/ui/structs/struct-fields-missing.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-missing.stderr rename to tests/ui/structs/struct-fields-missing.stderr diff --git a/src/test/ui/structs/struct-fields-shorthand-unresolved.rs b/tests/ui/structs/struct-fields-shorthand-unresolved.rs similarity index 100% rename from src/test/ui/structs/struct-fields-shorthand-unresolved.rs rename to tests/ui/structs/struct-fields-shorthand-unresolved.rs diff --git a/src/test/ui/structs/struct-fields-shorthand-unresolved.stderr b/tests/ui/structs/struct-fields-shorthand-unresolved.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-shorthand-unresolved.stderr rename to tests/ui/structs/struct-fields-shorthand-unresolved.stderr diff --git a/src/test/ui/structs/struct-fields-shorthand.rs b/tests/ui/structs/struct-fields-shorthand.rs similarity index 100% rename from src/test/ui/structs/struct-fields-shorthand.rs rename to tests/ui/structs/struct-fields-shorthand.rs diff --git a/src/test/ui/structs/struct-fields-shorthand.stderr b/tests/ui/structs/struct-fields-shorthand.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-shorthand.stderr rename to tests/ui/structs/struct-fields-shorthand.stderr diff --git a/src/test/ui/structs/struct-fields-too-many.rs b/tests/ui/structs/struct-fields-too-many.rs similarity index 100% rename from src/test/ui/structs/struct-fields-too-many.rs rename to tests/ui/structs/struct-fields-too-many.rs diff --git a/src/test/ui/structs/struct-fields-too-many.stderr b/tests/ui/structs/struct-fields-too-many.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-too-many.stderr rename to tests/ui/structs/struct-fields-too-many.stderr diff --git a/src/test/ui/structs/struct-fields-typo.rs b/tests/ui/structs/struct-fields-typo.rs similarity index 100% rename from src/test/ui/structs/struct-fields-typo.rs rename to tests/ui/structs/struct-fields-typo.rs diff --git a/src/test/ui/structs/struct-fields-typo.stderr b/tests/ui/structs/struct-fields-typo.stderr similarity index 100% rename from src/test/ui/structs/struct-fields-typo.stderr rename to tests/ui/structs/struct-fields-typo.stderr diff --git a/src/test/ui/structs/struct-fn-in-definition.rs b/tests/ui/structs/struct-fn-in-definition.rs similarity index 100% rename from src/test/ui/structs/struct-fn-in-definition.rs rename to tests/ui/structs/struct-fn-in-definition.rs diff --git a/src/test/ui/structs/struct-fn-in-definition.stderr b/tests/ui/structs/struct-fn-in-definition.stderr similarity index 100% rename from src/test/ui/structs/struct-fn-in-definition.stderr rename to tests/ui/structs/struct-fn-in-definition.stderr diff --git a/src/test/ui/structs/struct-missing-comma.fixed b/tests/ui/structs/struct-missing-comma.fixed similarity index 100% rename from src/test/ui/structs/struct-missing-comma.fixed rename to tests/ui/structs/struct-missing-comma.fixed diff --git a/src/test/ui/structs/struct-missing-comma.rs b/tests/ui/structs/struct-missing-comma.rs similarity index 100% rename from src/test/ui/structs/struct-missing-comma.rs rename to tests/ui/structs/struct-missing-comma.rs diff --git a/src/test/ui/structs/struct-missing-comma.stderr b/tests/ui/structs/struct-missing-comma.stderr similarity index 100% rename from src/test/ui/structs/struct-missing-comma.stderr rename to tests/ui/structs/struct-missing-comma.stderr diff --git a/src/test/ui/structs/struct-pat-derived-error.rs b/tests/ui/structs/struct-pat-derived-error.rs similarity index 100% rename from src/test/ui/structs/struct-pat-derived-error.rs rename to tests/ui/structs/struct-pat-derived-error.rs diff --git a/src/test/ui/structs/struct-pat-derived-error.stderr b/tests/ui/structs/struct-pat-derived-error.stderr similarity index 100% rename from src/test/ui/structs/struct-pat-derived-error.stderr rename to tests/ui/structs/struct-pat-derived-error.stderr diff --git a/src/test/ui/structs/struct-path-alias-bounds.rs b/tests/ui/structs/struct-path-alias-bounds.rs similarity index 100% rename from src/test/ui/structs/struct-path-alias-bounds.rs rename to tests/ui/structs/struct-path-alias-bounds.rs diff --git a/src/test/ui/structs/struct-path-alias-bounds.stderr b/tests/ui/structs/struct-path-alias-bounds.stderr similarity index 100% rename from src/test/ui/structs/struct-path-alias-bounds.stderr rename to tests/ui/structs/struct-path-alias-bounds.stderr diff --git a/src/test/ui/structs/struct-path-associated-type.rs b/tests/ui/structs/struct-path-associated-type.rs similarity index 100% rename from src/test/ui/structs/struct-path-associated-type.rs rename to tests/ui/structs/struct-path-associated-type.rs diff --git a/src/test/ui/structs/struct-path-associated-type.stderr b/tests/ui/structs/struct-path-associated-type.stderr similarity index 100% rename from src/test/ui/structs/struct-path-associated-type.stderr rename to tests/ui/structs/struct-path-associated-type.stderr diff --git a/src/test/ui/structs/struct-path-self-type-mismatch.rs b/tests/ui/structs/struct-path-self-type-mismatch.rs similarity index 100% rename from src/test/ui/structs/struct-path-self-type-mismatch.rs rename to tests/ui/structs/struct-path-self-type-mismatch.rs diff --git a/src/test/ui/structs/struct-path-self-type-mismatch.stderr b/tests/ui/structs/struct-path-self-type-mismatch.stderr similarity index 100% rename from src/test/ui/structs/struct-path-self-type-mismatch.stderr rename to tests/ui/structs/struct-path-self-type-mismatch.stderr diff --git a/src/test/ui/structs/struct-path-self.rs b/tests/ui/structs/struct-path-self.rs similarity index 100% rename from src/test/ui/structs/struct-path-self.rs rename to tests/ui/structs/struct-path-self.rs diff --git a/src/test/ui/structs/struct-path-self.stderr b/tests/ui/structs/struct-path-self.stderr similarity index 100% rename from src/test/ui/structs/struct-path-self.stderr rename to tests/ui/structs/struct-path-self.stderr diff --git a/src/test/ui/structs/struct-record-suggestion.fixed b/tests/ui/structs/struct-record-suggestion.fixed similarity index 100% rename from src/test/ui/structs/struct-record-suggestion.fixed rename to tests/ui/structs/struct-record-suggestion.fixed diff --git a/src/test/ui/structs/struct-record-suggestion.rs b/tests/ui/structs/struct-record-suggestion.rs similarity index 100% rename from src/test/ui/structs/struct-record-suggestion.rs rename to tests/ui/structs/struct-record-suggestion.rs diff --git a/src/test/ui/structs/struct-record-suggestion.stderr b/tests/ui/structs/struct-record-suggestion.stderr similarity index 100% rename from src/test/ui/structs/struct-record-suggestion.stderr rename to tests/ui/structs/struct-record-suggestion.stderr diff --git a/src/test/ui/structs/struct-tuple-field-names.rs b/tests/ui/structs/struct-tuple-field-names.rs similarity index 100% rename from src/test/ui/structs/struct-tuple-field-names.rs rename to tests/ui/structs/struct-tuple-field-names.rs diff --git a/src/test/ui/structs/struct-tuple-field-names.stderr b/tests/ui/structs/struct-tuple-field-names.stderr similarity index 100% rename from src/test/ui/structs/struct-tuple-field-names.stderr rename to tests/ui/structs/struct-tuple-field-names.stderr diff --git a/src/test/ui/structs/struct-variant-privacy-xc.rs b/tests/ui/structs/struct-variant-privacy-xc.rs similarity index 100% rename from src/test/ui/structs/struct-variant-privacy-xc.rs rename to tests/ui/structs/struct-variant-privacy-xc.rs diff --git a/src/test/ui/structs/struct-variant-privacy-xc.stderr b/tests/ui/structs/struct-variant-privacy-xc.stderr similarity index 100% rename from src/test/ui/structs/struct-variant-privacy-xc.stderr rename to tests/ui/structs/struct-variant-privacy-xc.stderr diff --git a/src/test/ui/structs/struct-variant-privacy.rs b/tests/ui/structs/struct-variant-privacy.rs similarity index 100% rename from src/test/ui/structs/struct-variant-privacy.rs rename to tests/ui/structs/struct-variant-privacy.rs diff --git a/src/test/ui/structs/struct-variant-privacy.stderr b/tests/ui/structs/struct-variant-privacy.stderr similarity index 100% rename from src/test/ui/structs/struct-variant-privacy.stderr rename to tests/ui/structs/struct-variant-privacy.stderr diff --git a/src/test/ui/structs/structure-constructor-type-mismatch.rs b/tests/ui/structs/structure-constructor-type-mismatch.rs similarity index 100% rename from src/test/ui/structs/structure-constructor-type-mismatch.rs rename to tests/ui/structs/structure-constructor-type-mismatch.rs diff --git a/src/test/ui/structs/structure-constructor-type-mismatch.stderr b/tests/ui/structs/structure-constructor-type-mismatch.stderr similarity index 100% rename from src/test/ui/structs/structure-constructor-type-mismatch.stderr rename to tests/ui/structs/structure-constructor-type-mismatch.stderr diff --git a/src/test/ui/structs/suggest-private-fields.rs b/tests/ui/structs/suggest-private-fields.rs similarity index 100% rename from src/test/ui/structs/suggest-private-fields.rs rename to tests/ui/structs/suggest-private-fields.rs diff --git a/src/test/ui/structs/suggest-private-fields.stderr b/tests/ui/structs/suggest-private-fields.stderr similarity index 100% rename from src/test/ui/structs/suggest-private-fields.stderr rename to tests/ui/structs/suggest-private-fields.stderr diff --git a/src/test/ui/structs/suggest-replacing-field-when-specifying-same-type.rs b/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.rs similarity index 100% rename from src/test/ui/structs/suggest-replacing-field-when-specifying-same-type.rs rename to tests/ui/structs/suggest-replacing-field-when-specifying-same-type.rs diff --git a/src/test/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr b/tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr similarity index 100% rename from src/test/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr rename to tests/ui/structs/suggest-replacing-field-when-specifying-same-type.stderr diff --git a/src/test/ui/structs/unresolved-struct-with-fru.rs b/tests/ui/structs/unresolved-struct-with-fru.rs similarity index 100% rename from src/test/ui/structs/unresolved-struct-with-fru.rs rename to tests/ui/structs/unresolved-struct-with-fru.rs diff --git a/src/test/ui/structs/unresolved-struct-with-fru.stderr b/tests/ui/structs/unresolved-struct-with-fru.stderr similarity index 100% rename from src/test/ui/structs/unresolved-struct-with-fru.stderr rename to tests/ui/structs/unresolved-struct-with-fru.stderr diff --git a/src/test/ui/suggestions/abi-typo.fixed b/tests/ui/suggestions/abi-typo.fixed similarity index 100% rename from src/test/ui/suggestions/abi-typo.fixed rename to tests/ui/suggestions/abi-typo.fixed diff --git a/src/test/ui/suggestions/abi-typo.rs b/tests/ui/suggestions/abi-typo.rs similarity index 100% rename from src/test/ui/suggestions/abi-typo.rs rename to tests/ui/suggestions/abi-typo.rs diff --git a/src/test/ui/suggestions/abi-typo.stderr b/tests/ui/suggestions/abi-typo.stderr similarity index 100% rename from src/test/ui/suggestions/abi-typo.stderr rename to tests/ui/suggestions/abi-typo.stderr diff --git a/src/test/ui/suggestions/adt-param-with-implicit-sized-bound.rs b/tests/ui/suggestions/adt-param-with-implicit-sized-bound.rs similarity index 100% rename from src/test/ui/suggestions/adt-param-with-implicit-sized-bound.rs rename to tests/ui/suggestions/adt-param-with-implicit-sized-bound.rs diff --git a/src/test/ui/suggestions/adt-param-with-implicit-sized-bound.stderr b/tests/ui/suggestions/adt-param-with-implicit-sized-bound.stderr similarity index 100% rename from src/test/ui/suggestions/adt-param-with-implicit-sized-bound.stderr rename to tests/ui/suggestions/adt-param-with-implicit-sized-bound.stderr diff --git a/src/test/ui/suggestions/args-instead-of-tuple-errors.rs b/tests/ui/suggestions/args-instead-of-tuple-errors.rs similarity index 100% rename from src/test/ui/suggestions/args-instead-of-tuple-errors.rs rename to tests/ui/suggestions/args-instead-of-tuple-errors.rs diff --git a/src/test/ui/suggestions/args-instead-of-tuple-errors.stderr b/tests/ui/suggestions/args-instead-of-tuple-errors.stderr similarity index 100% rename from src/test/ui/suggestions/args-instead-of-tuple-errors.stderr rename to tests/ui/suggestions/args-instead-of-tuple-errors.stderr diff --git a/src/test/ui/suggestions/args-instead-of-tuple.fixed b/tests/ui/suggestions/args-instead-of-tuple.fixed similarity index 100% rename from src/test/ui/suggestions/args-instead-of-tuple.fixed rename to tests/ui/suggestions/args-instead-of-tuple.fixed diff --git a/src/test/ui/suggestions/args-instead-of-tuple.rs b/tests/ui/suggestions/args-instead-of-tuple.rs similarity index 100% rename from src/test/ui/suggestions/args-instead-of-tuple.rs rename to tests/ui/suggestions/args-instead-of-tuple.rs diff --git a/src/test/ui/suggestions/args-instead-of-tuple.stderr b/tests/ui/suggestions/args-instead-of-tuple.stderr similarity index 100% rename from src/test/ui/suggestions/args-instead-of-tuple.stderr rename to tests/ui/suggestions/args-instead-of-tuple.stderr diff --git a/src/test/ui/suggestions/as-ref-2.rs b/tests/ui/suggestions/as-ref-2.rs similarity index 100% rename from src/test/ui/suggestions/as-ref-2.rs rename to tests/ui/suggestions/as-ref-2.rs diff --git a/src/test/ui/suggestions/as-ref-2.stderr b/tests/ui/suggestions/as-ref-2.stderr similarity index 100% rename from src/test/ui/suggestions/as-ref-2.stderr rename to tests/ui/suggestions/as-ref-2.stderr diff --git a/src/test/ui/suggestions/as-ref.rs b/tests/ui/suggestions/as-ref.rs similarity index 100% rename from src/test/ui/suggestions/as-ref.rs rename to tests/ui/suggestions/as-ref.rs diff --git a/src/test/ui/suggestions/as-ref.stderr b/tests/ui/suggestions/as-ref.stderr similarity index 100% rename from src/test/ui/suggestions/as-ref.stderr rename to tests/ui/suggestions/as-ref.stderr diff --git a/src/test/ui/suggestions/assoc-const-as-field.rs b/tests/ui/suggestions/assoc-const-as-field.rs similarity index 100% rename from src/test/ui/suggestions/assoc-const-as-field.rs rename to tests/ui/suggestions/assoc-const-as-field.rs diff --git a/src/test/ui/suggestions/assoc-const-as-field.stderr b/tests/ui/suggestions/assoc-const-as-field.stderr similarity index 100% rename from src/test/ui/suggestions/assoc-const-as-field.stderr rename to tests/ui/suggestions/assoc-const-as-field.stderr diff --git a/src/test/ui/suggestions/assoc-const-as-fn.rs b/tests/ui/suggestions/assoc-const-as-fn.rs similarity index 100% rename from src/test/ui/suggestions/assoc-const-as-fn.rs rename to tests/ui/suggestions/assoc-const-as-fn.rs diff --git a/src/test/ui/suggestions/assoc-const-as-fn.stderr b/tests/ui/suggestions/assoc-const-as-fn.stderr similarity index 100% rename from src/test/ui/suggestions/assoc-const-as-fn.stderr rename to tests/ui/suggestions/assoc-const-as-fn.stderr diff --git a/src/test/ui/suggestions/assoc-ct-for-assoc-method.rs b/tests/ui/suggestions/assoc-ct-for-assoc-method.rs similarity index 100% rename from src/test/ui/suggestions/assoc-ct-for-assoc-method.rs rename to tests/ui/suggestions/assoc-ct-for-assoc-method.rs diff --git a/src/test/ui/suggestions/assoc-ct-for-assoc-method.stderr b/tests/ui/suggestions/assoc-ct-for-assoc-method.stderr similarity index 100% rename from src/test/ui/suggestions/assoc-ct-for-assoc-method.stderr rename to tests/ui/suggestions/assoc-ct-for-assoc-method.stderr diff --git a/src/test/ui/suggestions/assoc-type-in-method-return.rs b/tests/ui/suggestions/assoc-type-in-method-return.rs similarity index 100% rename from src/test/ui/suggestions/assoc-type-in-method-return.rs rename to tests/ui/suggestions/assoc-type-in-method-return.rs diff --git a/src/test/ui/suggestions/assoc-type-in-method-return.stderr b/tests/ui/suggestions/assoc-type-in-method-return.stderr similarity index 100% rename from src/test/ui/suggestions/assoc-type-in-method-return.stderr rename to tests/ui/suggestions/assoc-type-in-method-return.stderr diff --git a/src/test/ui/suggestions/assoc_fn_without_self.rs b/tests/ui/suggestions/assoc_fn_without_self.rs similarity index 100% rename from src/test/ui/suggestions/assoc_fn_without_self.rs rename to tests/ui/suggestions/assoc_fn_without_self.rs diff --git a/src/test/ui/suggestions/assoc_fn_without_self.stderr b/tests/ui/suggestions/assoc_fn_without_self.stderr similarity index 100% rename from src/test/ui/suggestions/assoc_fn_without_self.stderr rename to tests/ui/suggestions/assoc_fn_without_self.stderr diff --git a/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs b/tests/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs similarity index 100% rename from src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs rename to tests/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs diff --git a/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr b/tests/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr similarity index 100% rename from src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr rename to tests/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr diff --git a/src/test/ui/suggestions/attribute-typos.rs b/tests/ui/suggestions/attribute-typos.rs similarity index 100% rename from src/test/ui/suggestions/attribute-typos.rs rename to tests/ui/suggestions/attribute-typos.rs diff --git a/src/test/ui/suggestions/attribute-typos.stderr b/tests/ui/suggestions/attribute-typos.stderr similarity index 100% rename from src/test/ui/suggestions/attribute-typos.stderr rename to tests/ui/suggestions/attribute-typos.stderr diff --git a/src/test/ui/suggestions/auxiliary/foo.rs b/tests/ui/suggestions/auxiliary/foo.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/foo.rs rename to tests/ui/suggestions/auxiliary/foo.rs diff --git a/src/test/ui/suggestions/auxiliary/issue-61963-1.rs b/tests/ui/suggestions/auxiliary/issue-61963-1.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/issue-61963-1.rs rename to tests/ui/suggestions/auxiliary/issue-61963-1.rs diff --git a/src/test/ui/suggestions/auxiliary/issue-61963.rs b/tests/ui/suggestions/auxiliary/issue-61963.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/issue-61963.rs rename to tests/ui/suggestions/auxiliary/issue-61963.rs diff --git a/src/test/ui/suggestions/auxiliary/issue-81839.rs b/tests/ui/suggestions/auxiliary/issue-81839.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/issue-81839.rs rename to tests/ui/suggestions/auxiliary/issue-81839.rs diff --git a/src/test/ui/suggestions/auxiliary/meow.rs b/tests/ui/suggestions/auxiliary/meow.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/meow.rs rename to tests/ui/suggestions/auxiliary/meow.rs diff --git a/src/test/ui/suggestions/auxiliary/not-object-safe.rs b/tests/ui/suggestions/auxiliary/not-object-safe.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/not-object-safe.rs rename to tests/ui/suggestions/auxiliary/not-object-safe.rs diff --git a/src/test/ui/suggestions/auxiliary/proc-macro-type-error.rs b/tests/ui/suggestions/auxiliary/proc-macro-type-error.rs similarity index 100% rename from src/test/ui/suggestions/auxiliary/proc-macro-type-error.rs rename to tests/ui/suggestions/auxiliary/proc-macro-type-error.rs diff --git a/src/test/ui/suggestions/bad-hex-float-lit.rs b/tests/ui/suggestions/bad-hex-float-lit.rs similarity index 100% rename from src/test/ui/suggestions/bad-hex-float-lit.rs rename to tests/ui/suggestions/bad-hex-float-lit.rs diff --git a/src/test/ui/suggestions/bad-hex-float-lit.stderr b/tests/ui/suggestions/bad-hex-float-lit.stderr similarity index 100% rename from src/test/ui/suggestions/bad-hex-float-lit.stderr rename to tests/ui/suggestions/bad-hex-float-lit.stderr diff --git a/src/test/ui/suggestions/bool_typo_err_suggest.rs b/tests/ui/suggestions/bool_typo_err_suggest.rs similarity index 100% rename from src/test/ui/suggestions/bool_typo_err_suggest.rs rename to tests/ui/suggestions/bool_typo_err_suggest.rs diff --git a/src/test/ui/suggestions/bool_typo_err_suggest.stderr b/tests/ui/suggestions/bool_typo_err_suggest.stderr similarity index 100% rename from src/test/ui/suggestions/bool_typo_err_suggest.stderr rename to tests/ui/suggestions/bool_typo_err_suggest.stderr diff --git a/src/test/ui/suggestions/borrow-for-loop-head.rs b/tests/ui/suggestions/borrow-for-loop-head.rs similarity index 100% rename from src/test/ui/suggestions/borrow-for-loop-head.rs rename to tests/ui/suggestions/borrow-for-loop-head.rs diff --git a/src/test/ui/suggestions/borrow-for-loop-head.stderr b/tests/ui/suggestions/borrow-for-loop-head.stderr similarity index 100% rename from src/test/ui/suggestions/borrow-for-loop-head.stderr rename to tests/ui/suggestions/borrow-for-loop-head.stderr diff --git a/src/test/ui/suggestions/bound-suggestions.fixed b/tests/ui/suggestions/bound-suggestions.fixed similarity index 100% rename from src/test/ui/suggestions/bound-suggestions.fixed rename to tests/ui/suggestions/bound-suggestions.fixed diff --git a/src/test/ui/suggestions/bound-suggestions.rs b/tests/ui/suggestions/bound-suggestions.rs similarity index 100% rename from src/test/ui/suggestions/bound-suggestions.rs rename to tests/ui/suggestions/bound-suggestions.rs diff --git a/src/test/ui/suggestions/bound-suggestions.stderr b/tests/ui/suggestions/bound-suggestions.stderr similarity index 100% rename from src/test/ui/suggestions/bound-suggestions.stderr rename to tests/ui/suggestions/bound-suggestions.stderr diff --git a/src/test/ui/suggestions/box-future-wrong-output.rs b/tests/ui/suggestions/box-future-wrong-output.rs similarity index 100% rename from src/test/ui/suggestions/box-future-wrong-output.rs rename to tests/ui/suggestions/box-future-wrong-output.rs diff --git a/src/test/ui/suggestions/box-future-wrong-output.stderr b/tests/ui/suggestions/box-future-wrong-output.stderr similarity index 100% rename from src/test/ui/suggestions/box-future-wrong-output.stderr rename to tests/ui/suggestions/box-future-wrong-output.stderr diff --git a/src/test/ui/suggestions/boxed-variant-field.rs b/tests/ui/suggestions/boxed-variant-field.rs similarity index 100% rename from src/test/ui/suggestions/boxed-variant-field.rs rename to tests/ui/suggestions/boxed-variant-field.rs diff --git a/src/test/ui/suggestions/boxed-variant-field.stderr b/tests/ui/suggestions/boxed-variant-field.stderr similarity index 100% rename from src/test/ui/suggestions/boxed-variant-field.stderr rename to tests/ui/suggestions/boxed-variant-field.stderr diff --git a/src/test/ui/suggestions/call-boxed.rs b/tests/ui/suggestions/call-boxed.rs similarity index 100% rename from src/test/ui/suggestions/call-boxed.rs rename to tests/ui/suggestions/call-boxed.rs diff --git a/src/test/ui/suggestions/call-boxed.stderr b/tests/ui/suggestions/call-boxed.stderr similarity index 100% rename from src/test/ui/suggestions/call-boxed.stderr rename to tests/ui/suggestions/call-boxed.stderr diff --git a/src/test/ui/suggestions/call-on-missing.rs b/tests/ui/suggestions/call-on-missing.rs similarity index 100% rename from src/test/ui/suggestions/call-on-missing.rs rename to tests/ui/suggestions/call-on-missing.rs diff --git a/src/test/ui/suggestions/call-on-missing.stderr b/tests/ui/suggestions/call-on-missing.stderr similarity index 100% rename from src/test/ui/suggestions/call-on-missing.stderr rename to tests/ui/suggestions/call-on-missing.stderr diff --git a/src/test/ui/suggestions/call-on-unimplemented-ctor.rs b/tests/ui/suggestions/call-on-unimplemented-ctor.rs similarity index 100% rename from src/test/ui/suggestions/call-on-unimplemented-ctor.rs rename to tests/ui/suggestions/call-on-unimplemented-ctor.rs diff --git a/src/test/ui/suggestions/call-on-unimplemented-ctor.stderr b/tests/ui/suggestions/call-on-unimplemented-ctor.stderr similarity index 100% rename from src/test/ui/suggestions/call-on-unimplemented-ctor.stderr rename to tests/ui/suggestions/call-on-unimplemented-ctor.stderr diff --git a/src/test/ui/suggestions/call-on-unimplemented-fn-ptr.rs b/tests/ui/suggestions/call-on-unimplemented-fn-ptr.rs similarity index 100% rename from src/test/ui/suggestions/call-on-unimplemented-fn-ptr.rs rename to tests/ui/suggestions/call-on-unimplemented-fn-ptr.rs diff --git a/src/test/ui/suggestions/call-on-unimplemented-fn-ptr.stderr b/tests/ui/suggestions/call-on-unimplemented-fn-ptr.stderr similarity index 100% rename from src/test/ui/suggestions/call-on-unimplemented-fn-ptr.stderr rename to tests/ui/suggestions/call-on-unimplemented-fn-ptr.stderr diff --git a/src/test/ui/suggestions/chain-method-call-mutation-in-place.rs b/tests/ui/suggestions/chain-method-call-mutation-in-place.rs similarity index 100% rename from src/test/ui/suggestions/chain-method-call-mutation-in-place.rs rename to tests/ui/suggestions/chain-method-call-mutation-in-place.rs diff --git a/src/test/ui/suggestions/chain-method-call-mutation-in-place.stderr b/tests/ui/suggestions/chain-method-call-mutation-in-place.stderr similarity index 100% rename from src/test/ui/suggestions/chain-method-call-mutation-in-place.stderr rename to tests/ui/suggestions/chain-method-call-mutation-in-place.stderr diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed b/tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed similarity index 100% rename from src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed rename to tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs b/tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs similarity index 100% rename from src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs rename to tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr b/tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr similarity index 100% rename from src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr rename to tests/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr diff --git a/src/test/ui/suggestions/const-in-struct-pat.rs b/tests/ui/suggestions/const-in-struct-pat.rs similarity index 100% rename from src/test/ui/suggestions/const-in-struct-pat.rs rename to tests/ui/suggestions/const-in-struct-pat.rs diff --git a/src/test/ui/suggestions/const-in-struct-pat.stderr b/tests/ui/suggestions/const-in-struct-pat.stderr similarity index 100% rename from src/test/ui/suggestions/const-in-struct-pat.stderr rename to tests/ui/suggestions/const-in-struct-pat.stderr diff --git a/src/test/ui/suggestions/const-no-type.rs b/tests/ui/suggestions/const-no-type.rs similarity index 100% rename from src/test/ui/suggestions/const-no-type.rs rename to tests/ui/suggestions/const-no-type.rs diff --git a/src/test/ui/suggestions/const-no-type.stderr b/tests/ui/suggestions/const-no-type.stderr similarity index 100% rename from src/test/ui/suggestions/const-no-type.stderr rename to tests/ui/suggestions/const-no-type.stderr diff --git a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs similarity index 100% rename from src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.rs rename to tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs diff --git a/src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr similarity index 100% rename from src/test/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr rename to tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr diff --git a/src/test/ui/suggestions/constrain-suggest-ice.rs b/tests/ui/suggestions/constrain-suggest-ice.rs similarity index 100% rename from src/test/ui/suggestions/constrain-suggest-ice.rs rename to tests/ui/suggestions/constrain-suggest-ice.rs diff --git a/src/test/ui/suggestions/constrain-suggest-ice.stderr b/tests/ui/suggestions/constrain-suggest-ice.stderr similarity index 100% rename from src/test/ui/suggestions/constrain-suggest-ice.stderr rename to tests/ui/suggestions/constrain-suggest-ice.stderr diff --git a/src/test/ui/suggestions/constrain-trait.fixed b/tests/ui/suggestions/constrain-trait.fixed similarity index 100% rename from src/test/ui/suggestions/constrain-trait.fixed rename to tests/ui/suggestions/constrain-trait.fixed diff --git a/src/test/ui/suggestions/constrain-trait.rs b/tests/ui/suggestions/constrain-trait.rs similarity index 100% rename from src/test/ui/suggestions/constrain-trait.rs rename to tests/ui/suggestions/constrain-trait.rs diff --git a/src/test/ui/suggestions/constrain-trait.stderr b/tests/ui/suggestions/constrain-trait.stderr similarity index 100% rename from src/test/ui/suggestions/constrain-trait.stderr rename to tests/ui/suggestions/constrain-trait.stderr diff --git a/src/test/ui/suggestions/copied-and-cloned.fixed b/tests/ui/suggestions/copied-and-cloned.fixed similarity index 100% rename from src/test/ui/suggestions/copied-and-cloned.fixed rename to tests/ui/suggestions/copied-and-cloned.fixed diff --git a/src/test/ui/suggestions/copied-and-cloned.rs b/tests/ui/suggestions/copied-and-cloned.rs similarity index 100% rename from src/test/ui/suggestions/copied-and-cloned.rs rename to tests/ui/suggestions/copied-and-cloned.rs diff --git a/src/test/ui/suggestions/copied-and-cloned.stderr b/tests/ui/suggestions/copied-and-cloned.stderr similarity index 100% rename from src/test/ui/suggestions/copied-and-cloned.stderr rename to tests/ui/suggestions/copied-and-cloned.stderr diff --git a/src/test/ui/suggestions/core-std-import-order-issue-83564.rs b/tests/ui/suggestions/core-std-import-order-issue-83564.rs similarity index 100% rename from src/test/ui/suggestions/core-std-import-order-issue-83564.rs rename to tests/ui/suggestions/core-std-import-order-issue-83564.rs diff --git a/src/test/ui/suggestions/core-std-import-order-issue-83564.stderr b/tests/ui/suggestions/core-std-import-order-issue-83564.stderr similarity index 100% rename from src/test/ui/suggestions/core-std-import-order-issue-83564.stderr rename to tests/ui/suggestions/core-std-import-order-issue-83564.stderr diff --git a/src/test/ui/suggestions/count2len.rs b/tests/ui/suggestions/count2len.rs similarity index 100% rename from src/test/ui/suggestions/count2len.rs rename to tests/ui/suggestions/count2len.rs diff --git a/src/test/ui/suggestions/count2len.stderr b/tests/ui/suggestions/count2len.stderr similarity index 100% rename from src/test/ui/suggestions/count2len.stderr rename to tests/ui/suggestions/count2len.stderr diff --git a/src/test/ui/suggestions/crate-or-module-typo.rs b/tests/ui/suggestions/crate-or-module-typo.rs similarity index 100% rename from src/test/ui/suggestions/crate-or-module-typo.rs rename to tests/ui/suggestions/crate-or-module-typo.rs diff --git a/src/test/ui/suggestions/crate-or-module-typo.stderr b/tests/ui/suggestions/crate-or-module-typo.stderr similarity index 100% rename from src/test/ui/suggestions/crate-or-module-typo.stderr rename to tests/ui/suggestions/crate-or-module-typo.stderr diff --git a/src/test/ui/suggestions/deref-path-method.rs b/tests/ui/suggestions/deref-path-method.rs similarity index 100% rename from src/test/ui/suggestions/deref-path-method.rs rename to tests/ui/suggestions/deref-path-method.rs diff --git a/src/test/ui/suggestions/deref-path-method.stderr b/tests/ui/suggestions/deref-path-method.stderr similarity index 100% rename from src/test/ui/suggestions/deref-path-method.stderr rename to tests/ui/suggestions/deref-path-method.stderr diff --git a/src/test/ui/suggestions/derive-clone-for-eq.fixed b/tests/ui/suggestions/derive-clone-for-eq.fixed similarity index 100% rename from src/test/ui/suggestions/derive-clone-for-eq.fixed rename to tests/ui/suggestions/derive-clone-for-eq.fixed diff --git a/src/test/ui/suggestions/derive-clone-for-eq.rs b/tests/ui/suggestions/derive-clone-for-eq.rs similarity index 100% rename from src/test/ui/suggestions/derive-clone-for-eq.rs rename to tests/ui/suggestions/derive-clone-for-eq.rs diff --git a/src/test/ui/suggestions/derive-clone-for-eq.stderr b/tests/ui/suggestions/derive-clone-for-eq.stderr similarity index 100% rename from src/test/ui/suggestions/derive-clone-for-eq.stderr rename to tests/ui/suggestions/derive-clone-for-eq.stderr diff --git a/src/test/ui/suggestions/derive-macro-missing-bounds.rs b/tests/ui/suggestions/derive-macro-missing-bounds.rs similarity index 100% rename from src/test/ui/suggestions/derive-macro-missing-bounds.rs rename to tests/ui/suggestions/derive-macro-missing-bounds.rs diff --git a/src/test/ui/suggestions/derive-macro-missing-bounds.stderr b/tests/ui/suggestions/derive-macro-missing-bounds.stderr similarity index 100% rename from src/test/ui/suggestions/derive-macro-missing-bounds.stderr rename to tests/ui/suggestions/derive-macro-missing-bounds.stderr diff --git a/src/test/ui/suggestions/derive-trait-for-method-call.rs b/tests/ui/suggestions/derive-trait-for-method-call.rs similarity index 100% rename from src/test/ui/suggestions/derive-trait-for-method-call.rs rename to tests/ui/suggestions/derive-trait-for-method-call.rs diff --git a/src/test/ui/suggestions/derive-trait-for-method-call.stderr b/tests/ui/suggestions/derive-trait-for-method-call.stderr similarity index 100% rename from src/test/ui/suggestions/derive-trait-for-method-call.stderr rename to tests/ui/suggestions/derive-trait-for-method-call.stderr diff --git a/src/test/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.rs b/tests/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.rs similarity index 100% rename from src/test/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.rs rename to tests/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.rs diff --git a/src/test/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.stderr b/tests/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.stderr similarity index 100% rename from src/test/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.stderr rename to tests/ui/suggestions/do-not-attempt-to-add-suggestions-with-no-changes.stderr diff --git a/src/test/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.rs b/tests/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.rs rename to tests/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.rs diff --git a/src/test/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.stderr b/tests/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.stderr rename to tests/ui/suggestions/dont-suggest-deref-inside-macro-issue-58298.stderr diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-child.rs b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-child.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-child.rs rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-child.rs diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-parent.rs b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-parent.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-parent.rs rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/auxiliary/hidden-parent.rs diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.rs diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.stderr b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.stderr rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-child.stderr diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.rs b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.rs rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.rs diff --git a/src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.stderr b/tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.stderr rename to tests/ui/suggestions/dont-suggest-doc-hidden-variant-for-enum/hidden-parent.stderr diff --git a/src/test/ui/suggestions/dont-suggest-pin-array-dot-set.rs b/tests/ui/suggestions/dont-suggest-pin-array-dot-set.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-pin-array-dot-set.rs rename to tests/ui/suggestions/dont-suggest-pin-array-dot-set.rs diff --git a/src/test/ui/suggestions/dont-suggest-pin-array-dot-set.stderr b/tests/ui/suggestions/dont-suggest-pin-array-dot-set.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-pin-array-dot-set.stderr rename to tests/ui/suggestions/dont-suggest-pin-array-dot-set.stderr diff --git a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs b/tests/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs rename to tests/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs diff --git a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr b/tests/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr rename to tests/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr diff --git a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs b/tests/ui/suggestions/dont-suggest-ref/move-into-closure.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs rename to tests/ui/suggestions/dont-suggest-ref/move-into-closure.rs diff --git a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr b/tests/ui/suggestions/dont-suggest-ref/move-into-closure.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr rename to tests/ui/suggestions/dont-suggest-ref/move-into-closure.stderr diff --git a/src/test/ui/suggestions/dont-suggest-ref/simple.rs b/tests/ui/suggestions/dont-suggest-ref/simple.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/simple.rs rename to tests/ui/suggestions/dont-suggest-ref/simple.rs diff --git a/src/test/ui/suggestions/dont-suggest-ref/simple.stderr b/tests/ui/suggestions/dont-suggest-ref/simple.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ref/simple.stderr rename to tests/ui/suggestions/dont-suggest-ref/simple.stderr diff --git a/src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs b/tests/ui/suggestions/dont-suggest-try_into-in-macros.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs rename to tests/ui/suggestions/dont-suggest-try_into-in-macros.rs diff --git a/src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr b/tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr rename to tests/ui/suggestions/dont-suggest-try_into-in-macros.stderr diff --git a/src/test/ui/suggestions/dont-suggest-ufcs-for-const.rs b/tests/ui/suggestions/dont-suggest-ufcs-for-const.rs similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ufcs-for-const.rs rename to tests/ui/suggestions/dont-suggest-ufcs-for-const.rs diff --git a/src/test/ui/suggestions/dont-suggest-ufcs-for-const.stderr b/tests/ui/suggestions/dont-suggest-ufcs-for-const.stderr similarity index 100% rename from src/test/ui/suggestions/dont-suggest-ufcs-for-const.stderr rename to tests/ui/suggestions/dont-suggest-ufcs-for-const.stderr diff --git a/src/test/ui/suggestions/dont-try-removing-the-field.rs b/tests/ui/suggestions/dont-try-removing-the-field.rs similarity index 100% rename from src/test/ui/suggestions/dont-try-removing-the-field.rs rename to tests/ui/suggestions/dont-try-removing-the-field.rs diff --git a/src/test/ui/suggestions/dont-try-removing-the-field.stderr b/tests/ui/suggestions/dont-try-removing-the-field.stderr similarity index 100% rename from src/test/ui/suggestions/dont-try-removing-the-field.stderr rename to tests/ui/suggestions/dont-try-removing-the-field.stderr diff --git a/src/test/ui/suggestions/dont-wrap-ambiguous-receivers.rs b/tests/ui/suggestions/dont-wrap-ambiguous-receivers.rs similarity index 100% rename from src/test/ui/suggestions/dont-wrap-ambiguous-receivers.rs rename to tests/ui/suggestions/dont-wrap-ambiguous-receivers.rs diff --git a/src/test/ui/suggestions/dont-wrap-ambiguous-receivers.stderr b/tests/ui/suggestions/dont-wrap-ambiguous-receivers.stderr similarity index 100% rename from src/test/ui/suggestions/dont-wrap-ambiguous-receivers.stderr rename to tests/ui/suggestions/dont-wrap-ambiguous-receivers.stderr diff --git a/src/test/ui/suggestions/enum-method-probe.fixed b/tests/ui/suggestions/enum-method-probe.fixed similarity index 100% rename from src/test/ui/suggestions/enum-method-probe.fixed rename to tests/ui/suggestions/enum-method-probe.fixed diff --git a/src/test/ui/suggestions/enum-method-probe.rs b/tests/ui/suggestions/enum-method-probe.rs similarity index 100% rename from src/test/ui/suggestions/enum-method-probe.rs rename to tests/ui/suggestions/enum-method-probe.rs diff --git a/src/test/ui/suggestions/enum-method-probe.stderr b/tests/ui/suggestions/enum-method-probe.stderr similarity index 100% rename from src/test/ui/suggestions/enum-method-probe.stderr rename to tests/ui/suggestions/enum-method-probe.stderr diff --git a/src/test/ui/suggestions/enum-variant-arg-mismatch.rs b/tests/ui/suggestions/enum-variant-arg-mismatch.rs similarity index 100% rename from src/test/ui/suggestions/enum-variant-arg-mismatch.rs rename to tests/ui/suggestions/enum-variant-arg-mismatch.rs diff --git a/src/test/ui/suggestions/enum-variant-arg-mismatch.stderr b/tests/ui/suggestions/enum-variant-arg-mismatch.stderr similarity index 100% rename from src/test/ui/suggestions/enum-variant-arg-mismatch.stderr rename to tests/ui/suggestions/enum-variant-arg-mismatch.stderr diff --git a/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.rs b/tests/ui/suggestions/expected-boxed-future-isnt-pinned.rs similarity index 100% rename from src/test/ui/suggestions/expected-boxed-future-isnt-pinned.rs rename to tests/ui/suggestions/expected-boxed-future-isnt-pinned.rs diff --git a/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr b/tests/ui/suggestions/expected-boxed-future-isnt-pinned.stderr similarity index 100% rename from src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr rename to tests/ui/suggestions/expected-boxed-future-isnt-pinned.stderr diff --git a/src/test/ui/suggestions/field-access-considering-privacy.rs b/tests/ui/suggestions/field-access-considering-privacy.rs similarity index 100% rename from src/test/ui/suggestions/field-access-considering-privacy.rs rename to tests/ui/suggestions/field-access-considering-privacy.rs diff --git a/src/test/ui/suggestions/field-access-considering-privacy.stderr b/tests/ui/suggestions/field-access-considering-privacy.stderr similarity index 100% rename from src/test/ui/suggestions/field-access-considering-privacy.stderr rename to tests/ui/suggestions/field-access-considering-privacy.stderr diff --git a/src/test/ui/suggestions/field-access.fixed b/tests/ui/suggestions/field-access.fixed similarity index 100% rename from src/test/ui/suggestions/field-access.fixed rename to tests/ui/suggestions/field-access.fixed diff --git a/src/test/ui/suggestions/field-access.rs b/tests/ui/suggestions/field-access.rs similarity index 100% rename from src/test/ui/suggestions/field-access.rs rename to tests/ui/suggestions/field-access.rs diff --git a/src/test/ui/suggestions/field-access.stderr b/tests/ui/suggestions/field-access.stderr similarity index 100% rename from src/test/ui/suggestions/field-access.stderr rename to tests/ui/suggestions/field-access.stderr diff --git a/src/test/ui/suggestions/field-has-method.rs b/tests/ui/suggestions/field-has-method.rs similarity index 100% rename from src/test/ui/suggestions/field-has-method.rs rename to tests/ui/suggestions/field-has-method.rs diff --git a/src/test/ui/suggestions/field-has-method.stderr b/tests/ui/suggestions/field-has-method.stderr similarity index 100% rename from src/test/ui/suggestions/field-has-method.stderr rename to tests/ui/suggestions/field-has-method.stderr diff --git a/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs b/tests/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs similarity index 100% rename from src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs rename to tests/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs diff --git a/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr b/tests/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr similarity index 100% rename from src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr rename to tests/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr diff --git a/src/test/ui/suggestions/fn-missing-lifetime-in-item.rs b/tests/ui/suggestions/fn-missing-lifetime-in-item.rs similarity index 100% rename from src/test/ui/suggestions/fn-missing-lifetime-in-item.rs rename to tests/ui/suggestions/fn-missing-lifetime-in-item.rs diff --git a/src/test/ui/suggestions/fn-missing-lifetime-in-item.stderr b/tests/ui/suggestions/fn-missing-lifetime-in-item.stderr similarity index 100% rename from src/test/ui/suggestions/fn-missing-lifetime-in-item.stderr rename to tests/ui/suggestions/fn-missing-lifetime-in-item.stderr diff --git a/src/test/ui/suggestions/fn-needing-specified-return-type-param.rs b/tests/ui/suggestions/fn-needing-specified-return-type-param.rs similarity index 100% rename from src/test/ui/suggestions/fn-needing-specified-return-type-param.rs rename to tests/ui/suggestions/fn-needing-specified-return-type-param.rs diff --git a/src/test/ui/suggestions/fn-needing-specified-return-type-param.stderr b/tests/ui/suggestions/fn-needing-specified-return-type-param.stderr similarity index 100% rename from src/test/ui/suggestions/fn-needing-specified-return-type-param.stderr rename to tests/ui/suggestions/fn-needing-specified-return-type-param.stderr diff --git a/src/test/ui/suggestions/fn-or-tuple-struct-with-underscore-args.rs b/tests/ui/suggestions/fn-or-tuple-struct-with-underscore-args.rs similarity index 100% rename from src/test/ui/suggestions/fn-or-tuple-struct-with-underscore-args.rs rename to tests/ui/suggestions/fn-or-tuple-struct-with-underscore-args.rs diff --git a/src/test/ui/suggestions/fn-or-tuple-struct-with-underscore-args.stderr b/tests/ui/suggestions/fn-or-tuple-struct-with-underscore-args.stderr similarity index 100% rename from src/test/ui/suggestions/fn-or-tuple-struct-with-underscore-args.stderr rename to tests/ui/suggestions/fn-or-tuple-struct-with-underscore-args.stderr diff --git a/src/test/ui/suggestions/fn-or-tuple-struct-without-args.rs b/tests/ui/suggestions/fn-or-tuple-struct-without-args.rs similarity index 100% rename from src/test/ui/suggestions/fn-or-tuple-struct-without-args.rs rename to tests/ui/suggestions/fn-or-tuple-struct-without-args.rs diff --git a/src/test/ui/suggestions/fn-or-tuple-struct-without-args.stderr b/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr similarity index 100% rename from src/test/ui/suggestions/fn-or-tuple-struct-without-args.stderr rename to tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr diff --git a/src/test/ui/suggestions/fn-to-method-deeply-nested.rs b/tests/ui/suggestions/fn-to-method-deeply-nested.rs similarity index 100% rename from src/test/ui/suggestions/fn-to-method-deeply-nested.rs rename to tests/ui/suggestions/fn-to-method-deeply-nested.rs diff --git a/src/test/ui/suggestions/fn-to-method-deeply-nested.stderr b/tests/ui/suggestions/fn-to-method-deeply-nested.stderr similarity index 100% rename from src/test/ui/suggestions/fn-to-method-deeply-nested.stderr rename to tests/ui/suggestions/fn-to-method-deeply-nested.stderr diff --git a/src/test/ui/suggestions/fn-to-method.rs b/tests/ui/suggestions/fn-to-method.rs similarity index 100% rename from src/test/ui/suggestions/fn-to-method.rs rename to tests/ui/suggestions/fn-to-method.rs diff --git a/src/test/ui/suggestions/fn-to-method.stderr b/tests/ui/suggestions/fn-to-method.stderr similarity index 100% rename from src/test/ui/suggestions/fn-to-method.stderr rename to tests/ui/suggestions/fn-to-method.stderr diff --git a/src/test/ui/suggestions/fn-trait-notation.fixed b/tests/ui/suggestions/fn-trait-notation.fixed similarity index 100% rename from src/test/ui/suggestions/fn-trait-notation.fixed rename to tests/ui/suggestions/fn-trait-notation.fixed diff --git a/src/test/ui/suggestions/fn-trait-notation.rs b/tests/ui/suggestions/fn-trait-notation.rs similarity index 100% rename from src/test/ui/suggestions/fn-trait-notation.rs rename to tests/ui/suggestions/fn-trait-notation.rs diff --git a/src/test/ui/suggestions/fn-trait-notation.stderr b/tests/ui/suggestions/fn-trait-notation.stderr similarity index 100% rename from src/test/ui/suggestions/fn-trait-notation.stderr rename to tests/ui/suggestions/fn-trait-notation.stderr diff --git a/src/test/ui/suggestions/for-i-in-vec.fixed b/tests/ui/suggestions/for-i-in-vec.fixed similarity index 100% rename from src/test/ui/suggestions/for-i-in-vec.fixed rename to tests/ui/suggestions/for-i-in-vec.fixed diff --git a/src/test/ui/suggestions/for-i-in-vec.rs b/tests/ui/suggestions/for-i-in-vec.rs similarity index 100% rename from src/test/ui/suggestions/for-i-in-vec.rs rename to tests/ui/suggestions/for-i-in-vec.rs diff --git a/src/test/ui/suggestions/for-i-in-vec.stderr b/tests/ui/suggestions/for-i-in-vec.stderr similarity index 100% rename from src/test/ui/suggestions/for-i-in-vec.stderr rename to tests/ui/suggestions/for-i-in-vec.stderr diff --git a/src/test/ui/suggestions/format-borrow.rs b/tests/ui/suggestions/format-borrow.rs similarity index 100% rename from src/test/ui/suggestions/format-borrow.rs rename to tests/ui/suggestions/format-borrow.rs diff --git a/src/test/ui/suggestions/format-borrow.stderr b/tests/ui/suggestions/format-borrow.stderr similarity index 100% rename from src/test/ui/suggestions/format-borrow.stderr rename to tests/ui/suggestions/format-borrow.stderr diff --git a/src/test/ui/suggestions/if-let-typo.rs b/tests/ui/suggestions/if-let-typo.rs similarity index 100% rename from src/test/ui/suggestions/if-let-typo.rs rename to tests/ui/suggestions/if-let-typo.rs diff --git a/src/test/ui/suggestions/if-let-typo.stderr b/tests/ui/suggestions/if-let-typo.stderr similarity index 100% rename from src/test/ui/suggestions/if-let-typo.stderr rename to tests/ui/suggestions/if-let-typo.stderr diff --git a/src/test/ui/suggestions/if-then-neeing-semi.rs b/tests/ui/suggestions/if-then-neeing-semi.rs similarity index 100% rename from src/test/ui/suggestions/if-then-neeing-semi.rs rename to tests/ui/suggestions/if-then-neeing-semi.rs diff --git a/src/test/ui/suggestions/if-then-neeing-semi.stderr b/tests/ui/suggestions/if-then-neeing-semi.stderr similarity index 100% rename from src/test/ui/suggestions/if-then-neeing-semi.stderr rename to tests/ui/suggestions/if-then-neeing-semi.stderr diff --git a/src/test/ui/suggestions/ignore-nested-field-binding.fixed b/tests/ui/suggestions/ignore-nested-field-binding.fixed similarity index 100% rename from src/test/ui/suggestions/ignore-nested-field-binding.fixed rename to tests/ui/suggestions/ignore-nested-field-binding.fixed diff --git a/src/test/ui/suggestions/ignore-nested-field-binding.rs b/tests/ui/suggestions/ignore-nested-field-binding.rs similarity index 100% rename from src/test/ui/suggestions/ignore-nested-field-binding.rs rename to tests/ui/suggestions/ignore-nested-field-binding.rs diff --git a/src/test/ui/suggestions/ignore-nested-field-binding.stderr b/tests/ui/suggestions/ignore-nested-field-binding.stderr similarity index 100% rename from src/test/ui/suggestions/ignore-nested-field-binding.stderr rename to tests/ui/suggestions/ignore-nested-field-binding.stderr diff --git a/src/test/ui/suggestions/imm-ref-trait-object-literal-bound-regions.rs b/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.rs similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object-literal-bound-regions.rs rename to tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.rs diff --git a/src/test/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr b/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr rename to tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr diff --git a/src/test/ui/suggestions/imm-ref-trait-object-literal.rs b/tests/ui/suggestions/imm-ref-trait-object-literal.rs similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object-literal.rs rename to tests/ui/suggestions/imm-ref-trait-object-literal.rs diff --git a/src/test/ui/suggestions/imm-ref-trait-object-literal.stderr b/tests/ui/suggestions/imm-ref-trait-object-literal.stderr similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object-literal.stderr rename to tests/ui/suggestions/imm-ref-trait-object-literal.stderr diff --git a/src/test/ui/suggestions/imm-ref-trait-object.rs b/tests/ui/suggestions/imm-ref-trait-object.rs similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object.rs rename to tests/ui/suggestions/imm-ref-trait-object.rs diff --git a/src/test/ui/suggestions/imm-ref-trait-object.stderr b/tests/ui/suggestions/imm-ref-trait-object.stderr similarity index 100% rename from src/test/ui/suggestions/imm-ref-trait-object.stderr rename to tests/ui/suggestions/imm-ref-trait-object.stderr diff --git a/src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.rs b/tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.rs similarity index 100% rename from src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.rs rename to tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.rs diff --git a/src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.stderr b/tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.stderr similarity index 100% rename from src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.stderr rename to tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound-needing-more-suggestions.stderr diff --git a/src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.rs b/tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.rs similarity index 100% rename from src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.rs rename to tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.rs diff --git a/src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.stderr b/tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.stderr similarity index 100% rename from src/test/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.stderr rename to tests/ui/suggestions/impl-on-dyn-trait-with-implicit-static-bound.stderr diff --git a/src/test/ui/suggestions/impl-trait-missing-lifetime-gated.rs b/tests/ui/suggestions/impl-trait-missing-lifetime-gated.rs similarity index 100% rename from src/test/ui/suggestions/impl-trait-missing-lifetime-gated.rs rename to tests/ui/suggestions/impl-trait-missing-lifetime-gated.rs diff --git a/src/test/ui/suggestions/impl-trait-missing-lifetime-gated.stderr b/tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr similarity index 100% rename from src/test/ui/suggestions/impl-trait-missing-lifetime-gated.stderr rename to tests/ui/suggestions/impl-trait-missing-lifetime-gated.stderr diff --git a/src/test/ui/suggestions/impl-trait-missing-lifetime.rs b/tests/ui/suggestions/impl-trait-missing-lifetime.rs similarity index 100% rename from src/test/ui/suggestions/impl-trait-missing-lifetime.rs rename to tests/ui/suggestions/impl-trait-missing-lifetime.rs diff --git a/src/test/ui/suggestions/impl-trait-missing-lifetime.stderr b/tests/ui/suggestions/impl-trait-missing-lifetime.stderr similarity index 100% rename from src/test/ui/suggestions/impl-trait-missing-lifetime.stderr rename to tests/ui/suggestions/impl-trait-missing-lifetime.stderr diff --git a/src/test/ui/suggestions/impl-trait-return-trailing-semicolon.rs b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs similarity index 100% rename from src/test/ui/suggestions/impl-trait-return-trailing-semicolon.rs rename to tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs diff --git a/src/test/ui/suggestions/impl-trait-return-trailing-semicolon.stderr b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr similarity index 100% rename from src/test/ui/suggestions/impl-trait-return-trailing-semicolon.stderr rename to tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr diff --git a/src/test/ui/suggestions/impl-trait-with-missing-bounds.rs b/tests/ui/suggestions/impl-trait-with-missing-bounds.rs similarity index 100% rename from src/test/ui/suggestions/impl-trait-with-missing-bounds.rs rename to tests/ui/suggestions/impl-trait-with-missing-bounds.rs diff --git a/src/test/ui/suggestions/impl-trait-with-missing-bounds.stderr b/tests/ui/suggestions/impl-trait-with-missing-bounds.stderr similarity index 100% rename from src/test/ui/suggestions/impl-trait-with-missing-bounds.stderr rename to tests/ui/suggestions/impl-trait-with-missing-bounds.stderr diff --git a/src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.fixed b/tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.fixed similarity index 100% rename from src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.fixed rename to tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.fixed diff --git a/src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.rs b/tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.rs similarity index 100% rename from src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.rs rename to tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.rs diff --git a/src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.stderr b/tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.stderr similarity index 100% rename from src/test/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.stderr rename to tests/ui/suggestions/impl-trait-with-missing-trait-bounds-in-arg.stderr diff --git a/src/test/ui/suggestions/import-trait-for-method-call.rs b/tests/ui/suggestions/import-trait-for-method-call.rs similarity index 100% rename from src/test/ui/suggestions/import-trait-for-method-call.rs rename to tests/ui/suggestions/import-trait-for-method-call.rs diff --git a/src/test/ui/suggestions/import-trait-for-method-call.stderr b/tests/ui/suggestions/import-trait-for-method-call.stderr similarity index 100% rename from src/test/ui/suggestions/import-trait-for-method-call.stderr rename to tests/ui/suggestions/import-trait-for-method-call.stderr diff --git a/src/test/ui/suggestions/inner_type.fixed b/tests/ui/suggestions/inner_type.fixed similarity index 100% rename from src/test/ui/suggestions/inner_type.fixed rename to tests/ui/suggestions/inner_type.fixed diff --git a/src/test/ui/suggestions/inner_type.rs b/tests/ui/suggestions/inner_type.rs similarity index 100% rename from src/test/ui/suggestions/inner_type.rs rename to tests/ui/suggestions/inner_type.rs diff --git a/src/test/ui/suggestions/inner_type.stderr b/tests/ui/suggestions/inner_type.stderr similarity index 100% rename from src/test/ui/suggestions/inner_type.stderr rename to tests/ui/suggestions/inner_type.stderr diff --git a/src/test/ui/suggestions/inner_type2.rs b/tests/ui/suggestions/inner_type2.rs similarity index 100% rename from src/test/ui/suggestions/inner_type2.rs rename to tests/ui/suggestions/inner_type2.rs diff --git a/src/test/ui/suggestions/inner_type2.stderr b/tests/ui/suggestions/inner_type2.stderr similarity index 100% rename from src/test/ui/suggestions/inner_type2.stderr rename to tests/ui/suggestions/inner_type2.stderr diff --git a/src/test/ui/suggestions/into-convert.rs b/tests/ui/suggestions/into-convert.rs similarity index 100% rename from src/test/ui/suggestions/into-convert.rs rename to tests/ui/suggestions/into-convert.rs diff --git a/src/test/ui/suggestions/into-convert.stderr b/tests/ui/suggestions/into-convert.stderr similarity index 100% rename from src/test/ui/suggestions/into-convert.stderr rename to tests/ui/suggestions/into-convert.stderr diff --git a/src/test/ui/suggestions/into-str.rs b/tests/ui/suggestions/into-str.rs similarity index 100% rename from src/test/ui/suggestions/into-str.rs rename to tests/ui/suggestions/into-str.rs diff --git a/src/test/ui/suggestions/into-str.stderr b/tests/ui/suggestions/into-str.stderr similarity index 100% rename from src/test/ui/suggestions/into-str.stderr rename to tests/ui/suggestions/into-str.stderr diff --git a/src/test/ui/suggestions/invalid-bin-op.rs b/tests/ui/suggestions/invalid-bin-op.rs similarity index 100% rename from src/test/ui/suggestions/invalid-bin-op.rs rename to tests/ui/suggestions/invalid-bin-op.rs diff --git a/src/test/ui/suggestions/invalid-bin-op.stderr b/tests/ui/suggestions/invalid-bin-op.stderr similarity index 100% rename from src/test/ui/suggestions/invalid-bin-op.stderr rename to tests/ui/suggestions/invalid-bin-op.stderr diff --git a/src/test/ui/suggestions/issue-101065.fixed b/tests/ui/suggestions/issue-101065.fixed similarity index 100% rename from src/test/ui/suggestions/issue-101065.fixed rename to tests/ui/suggestions/issue-101065.fixed diff --git a/src/test/ui/suggestions/issue-101065.rs b/tests/ui/suggestions/issue-101065.rs similarity index 100% rename from src/test/ui/suggestions/issue-101065.rs rename to tests/ui/suggestions/issue-101065.rs diff --git a/src/test/ui/suggestions/issue-101065.stderr b/tests/ui/suggestions/issue-101065.stderr similarity index 100% rename from src/test/ui/suggestions/issue-101065.stderr rename to tests/ui/suggestions/issue-101065.stderr diff --git a/src/test/ui/suggestions/issue-101421.rs b/tests/ui/suggestions/issue-101421.rs similarity index 100% rename from src/test/ui/suggestions/issue-101421.rs rename to tests/ui/suggestions/issue-101421.rs diff --git a/src/test/ui/suggestions/issue-101421.stderr b/tests/ui/suggestions/issue-101421.stderr similarity index 100% rename from src/test/ui/suggestions/issue-101421.stderr rename to tests/ui/suggestions/issue-101421.stderr diff --git a/src/test/ui/suggestions/issue-101465.rs b/tests/ui/suggestions/issue-101465.rs similarity index 100% rename from src/test/ui/suggestions/issue-101465.rs rename to tests/ui/suggestions/issue-101465.rs diff --git a/src/test/ui/suggestions/issue-101465.stderr b/tests/ui/suggestions/issue-101465.stderr similarity index 100% rename from src/test/ui/suggestions/issue-101465.stderr rename to tests/ui/suggestions/issue-101465.stderr diff --git a/src/test/ui/suggestions/issue-101623.rs b/tests/ui/suggestions/issue-101623.rs similarity index 100% rename from src/test/ui/suggestions/issue-101623.rs rename to tests/ui/suggestions/issue-101623.rs diff --git a/src/test/ui/suggestions/issue-101623.stderr b/tests/ui/suggestions/issue-101623.stderr similarity index 100% rename from src/test/ui/suggestions/issue-101623.stderr rename to tests/ui/suggestions/issue-101623.stderr diff --git a/src/test/ui/suggestions/issue-101984.rs b/tests/ui/suggestions/issue-101984.rs similarity index 100% rename from src/test/ui/suggestions/issue-101984.rs rename to tests/ui/suggestions/issue-101984.rs diff --git a/src/test/ui/suggestions/issue-101984.stderr b/tests/ui/suggestions/issue-101984.stderr similarity index 100% rename from src/test/ui/suggestions/issue-101984.stderr rename to tests/ui/suggestions/issue-101984.stderr diff --git a/src/test/ui/suggestions/issue-102354.rs b/tests/ui/suggestions/issue-102354.rs similarity index 100% rename from src/test/ui/suggestions/issue-102354.rs rename to tests/ui/suggestions/issue-102354.rs diff --git a/src/test/ui/suggestions/issue-102354.stderr b/tests/ui/suggestions/issue-102354.stderr similarity index 100% rename from src/test/ui/suggestions/issue-102354.stderr rename to tests/ui/suggestions/issue-102354.stderr diff --git a/src/test/ui/suggestions/issue-102892.rs b/tests/ui/suggestions/issue-102892.rs similarity index 100% rename from src/test/ui/suggestions/issue-102892.rs rename to tests/ui/suggestions/issue-102892.rs diff --git a/src/test/ui/suggestions/issue-102892.stderr b/tests/ui/suggestions/issue-102892.stderr similarity index 100% rename from src/test/ui/suggestions/issue-102892.stderr rename to tests/ui/suggestions/issue-102892.stderr diff --git a/src/test/ui/suggestions/issue-103112.rs b/tests/ui/suggestions/issue-103112.rs similarity index 100% rename from src/test/ui/suggestions/issue-103112.rs rename to tests/ui/suggestions/issue-103112.rs diff --git a/src/test/ui/suggestions/issue-103112.stderr b/tests/ui/suggestions/issue-103112.stderr similarity index 100% rename from src/test/ui/suggestions/issue-103112.stderr rename to tests/ui/suggestions/issue-103112.stderr diff --git a/src/test/ui/suggestions/issue-104086-suggest-let.rs b/tests/ui/suggestions/issue-104086-suggest-let.rs similarity index 100% rename from src/test/ui/suggestions/issue-104086-suggest-let.rs rename to tests/ui/suggestions/issue-104086-suggest-let.rs diff --git a/src/test/ui/suggestions/issue-104086-suggest-let.stderr b/tests/ui/suggestions/issue-104086-suggest-let.stderr similarity index 100% rename from src/test/ui/suggestions/issue-104086-suggest-let.stderr rename to tests/ui/suggestions/issue-104086-suggest-let.stderr diff --git a/src/test/ui/suggestions/issue-104287.rs b/tests/ui/suggestions/issue-104287.rs similarity index 100% rename from src/test/ui/suggestions/issue-104287.rs rename to tests/ui/suggestions/issue-104287.rs diff --git a/src/test/ui/suggestions/issue-104287.stderr b/tests/ui/suggestions/issue-104287.stderr similarity index 100% rename from src/test/ui/suggestions/issue-104287.stderr rename to tests/ui/suggestions/issue-104287.stderr diff --git a/src/test/ui/suggestions/issue-104327.rs b/tests/ui/suggestions/issue-104327.rs similarity index 100% rename from src/test/ui/suggestions/issue-104327.rs rename to tests/ui/suggestions/issue-104327.rs diff --git a/src/test/ui/suggestions/issue-104327.stderr b/tests/ui/suggestions/issue-104327.stderr similarity index 100% rename from src/test/ui/suggestions/issue-104327.stderr rename to tests/ui/suggestions/issue-104327.stderr diff --git a/src/test/ui/suggestions/issue-104328.rs b/tests/ui/suggestions/issue-104328.rs similarity index 100% rename from src/test/ui/suggestions/issue-104328.rs rename to tests/ui/suggestions/issue-104328.rs diff --git a/src/test/ui/suggestions/issue-104328.stderr b/tests/ui/suggestions/issue-104328.stderr similarity index 100% rename from src/test/ui/suggestions/issue-104328.stderr rename to tests/ui/suggestions/issue-104328.stderr diff --git a/src/test/ui/suggestions/issue-105226.rs b/tests/ui/suggestions/issue-105226.rs similarity index 100% rename from src/test/ui/suggestions/issue-105226.rs rename to tests/ui/suggestions/issue-105226.rs diff --git a/src/test/ui/suggestions/issue-105226.stderr b/tests/ui/suggestions/issue-105226.stderr similarity index 100% rename from src/test/ui/suggestions/issue-105226.stderr rename to tests/ui/suggestions/issue-105226.stderr diff --git a/src/test/ui/suggestions/issue-105494.rs b/tests/ui/suggestions/issue-105494.rs similarity index 100% rename from src/test/ui/suggestions/issue-105494.rs rename to tests/ui/suggestions/issue-105494.rs diff --git a/src/test/ui/suggestions/issue-105494.stderr b/tests/ui/suggestions/issue-105494.stderr similarity index 100% rename from src/test/ui/suggestions/issue-105494.stderr rename to tests/ui/suggestions/issue-105494.stderr diff --git a/src/test/ui/suggestions/issue-105645.rs b/tests/ui/suggestions/issue-105645.rs similarity index 100% rename from src/test/ui/suggestions/issue-105645.rs rename to tests/ui/suggestions/issue-105645.rs diff --git a/src/test/ui/suggestions/issue-105645.stderr b/tests/ui/suggestions/issue-105645.stderr similarity index 100% rename from src/test/ui/suggestions/issue-105645.stderr rename to tests/ui/suggestions/issue-105645.stderr diff --git a/src/test/ui/suggestions/issue-106443-sugg-clone-for-arg.rs b/tests/ui/suggestions/issue-106443-sugg-clone-for-arg.rs similarity index 100% rename from src/test/ui/suggestions/issue-106443-sugg-clone-for-arg.rs rename to tests/ui/suggestions/issue-106443-sugg-clone-for-arg.rs diff --git a/src/test/ui/suggestions/issue-106443-sugg-clone-for-arg.stderr b/tests/ui/suggestions/issue-106443-sugg-clone-for-arg.stderr similarity index 100% rename from src/test/ui/suggestions/issue-106443-sugg-clone-for-arg.stderr rename to tests/ui/suggestions/issue-106443-sugg-clone-for-arg.stderr diff --git a/src/test/ui/suggestions/issue-106443-sugg-clone-for-bound.rs b/tests/ui/suggestions/issue-106443-sugg-clone-for-bound.rs similarity index 100% rename from src/test/ui/suggestions/issue-106443-sugg-clone-for-bound.rs rename to tests/ui/suggestions/issue-106443-sugg-clone-for-bound.rs diff --git a/src/test/ui/suggestions/issue-106443-sugg-clone-for-bound.stderr b/tests/ui/suggestions/issue-106443-sugg-clone-for-bound.stderr similarity index 100% rename from src/test/ui/suggestions/issue-106443-sugg-clone-for-bound.stderr rename to tests/ui/suggestions/issue-106443-sugg-clone-for-bound.stderr diff --git a/src/test/ui/suggestions/issue-21673.rs b/tests/ui/suggestions/issue-21673.rs similarity index 100% rename from src/test/ui/suggestions/issue-21673.rs rename to tests/ui/suggestions/issue-21673.rs diff --git a/src/test/ui/suggestions/issue-21673.stderr b/tests/ui/suggestions/issue-21673.stderr similarity index 100% rename from src/test/ui/suggestions/issue-21673.stderr rename to tests/ui/suggestions/issue-21673.stderr diff --git a/src/test/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs b/tests/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs similarity index 100% rename from src/test/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs rename to tests/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.rs diff --git a/src/test/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.stderr b/tests/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.stderr similarity index 100% rename from src/test/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.stderr rename to tests/ui/suggestions/issue-51055-missing-semicolon-between-call-and-tuple.stderr diff --git a/src/test/ui/suggestions/issue-52820.fixed b/tests/ui/suggestions/issue-52820.fixed similarity index 100% rename from src/test/ui/suggestions/issue-52820.fixed rename to tests/ui/suggestions/issue-52820.fixed diff --git a/src/test/ui/suggestions/issue-52820.rs b/tests/ui/suggestions/issue-52820.rs similarity index 100% rename from src/test/ui/suggestions/issue-52820.rs rename to tests/ui/suggestions/issue-52820.rs diff --git a/src/test/ui/suggestions/issue-52820.stderr b/tests/ui/suggestions/issue-52820.stderr similarity index 100% rename from src/test/ui/suggestions/issue-52820.stderr rename to tests/ui/suggestions/issue-52820.stderr diff --git a/src/test/ui/suggestions/issue-53692.fixed b/tests/ui/suggestions/issue-53692.fixed similarity index 100% rename from src/test/ui/suggestions/issue-53692.fixed rename to tests/ui/suggestions/issue-53692.fixed diff --git a/src/test/ui/suggestions/issue-53692.rs b/tests/ui/suggestions/issue-53692.rs similarity index 100% rename from src/test/ui/suggestions/issue-53692.rs rename to tests/ui/suggestions/issue-53692.rs diff --git a/src/test/ui/suggestions/issue-53692.stderr b/tests/ui/suggestions/issue-53692.stderr similarity index 100% rename from src/test/ui/suggestions/issue-53692.stderr rename to tests/ui/suggestions/issue-53692.stderr diff --git a/src/test/ui/suggestions/issue-57672.rs b/tests/ui/suggestions/issue-57672.rs similarity index 100% rename from src/test/ui/suggestions/issue-57672.rs rename to tests/ui/suggestions/issue-57672.rs diff --git a/src/test/ui/suggestions/issue-59819.fixed b/tests/ui/suggestions/issue-59819.fixed similarity index 100% rename from src/test/ui/suggestions/issue-59819.fixed rename to tests/ui/suggestions/issue-59819.fixed diff --git a/src/test/ui/suggestions/issue-59819.rs b/tests/ui/suggestions/issue-59819.rs similarity index 100% rename from src/test/ui/suggestions/issue-59819.rs rename to tests/ui/suggestions/issue-59819.rs diff --git a/src/test/ui/suggestions/issue-59819.stderr b/tests/ui/suggestions/issue-59819.stderr similarity index 100% rename from src/test/ui/suggestions/issue-59819.stderr rename to tests/ui/suggestions/issue-59819.stderr diff --git a/src/test/ui/suggestions/issue-61226.fixed b/tests/ui/suggestions/issue-61226.fixed similarity index 100% rename from src/test/ui/suggestions/issue-61226.fixed rename to tests/ui/suggestions/issue-61226.fixed diff --git a/src/test/ui/suggestions/issue-61226.rs b/tests/ui/suggestions/issue-61226.rs similarity index 100% rename from src/test/ui/suggestions/issue-61226.rs rename to tests/ui/suggestions/issue-61226.rs diff --git a/src/test/ui/suggestions/issue-61226.stderr b/tests/ui/suggestions/issue-61226.stderr similarity index 100% rename from src/test/ui/suggestions/issue-61226.stderr rename to tests/ui/suggestions/issue-61226.stderr diff --git a/src/test/ui/suggestions/issue-61963.rs b/tests/ui/suggestions/issue-61963.rs similarity index 100% rename from src/test/ui/suggestions/issue-61963.rs rename to tests/ui/suggestions/issue-61963.rs diff --git a/src/test/ui/suggestions/issue-61963.stderr b/tests/ui/suggestions/issue-61963.stderr similarity index 100% rename from src/test/ui/suggestions/issue-61963.stderr rename to tests/ui/suggestions/issue-61963.stderr diff --git a/src/test/ui/suggestions/issue-62843.rs b/tests/ui/suggestions/issue-62843.rs similarity index 100% rename from src/test/ui/suggestions/issue-62843.rs rename to tests/ui/suggestions/issue-62843.rs diff --git a/src/test/ui/suggestions/issue-62843.stderr b/tests/ui/suggestions/issue-62843.stderr similarity index 100% rename from src/test/ui/suggestions/issue-62843.stderr rename to tests/ui/suggestions/issue-62843.stderr diff --git a/src/test/ui/suggestions/issue-64252-self-type.rs b/tests/ui/suggestions/issue-64252-self-type.rs similarity index 100% rename from src/test/ui/suggestions/issue-64252-self-type.rs rename to tests/ui/suggestions/issue-64252-self-type.rs diff --git a/src/test/ui/suggestions/issue-64252-self-type.stderr b/tests/ui/suggestions/issue-64252-self-type.stderr similarity index 100% rename from src/test/ui/suggestions/issue-64252-self-type.stderr rename to tests/ui/suggestions/issue-64252-self-type.stderr diff --git a/src/test/ui/suggestions/issue-66968-suggest-sorted-words.rs b/tests/ui/suggestions/issue-66968-suggest-sorted-words.rs similarity index 100% rename from src/test/ui/suggestions/issue-66968-suggest-sorted-words.rs rename to tests/ui/suggestions/issue-66968-suggest-sorted-words.rs diff --git a/src/test/ui/suggestions/issue-66968-suggest-sorted-words.stderr b/tests/ui/suggestions/issue-66968-suggest-sorted-words.stderr similarity index 100% rename from src/test/ui/suggestions/issue-66968-suggest-sorted-words.stderr rename to tests/ui/suggestions/issue-66968-suggest-sorted-words.stderr diff --git a/src/test/ui/suggestions/issue-68049-1.rs b/tests/ui/suggestions/issue-68049-1.rs similarity index 100% rename from src/test/ui/suggestions/issue-68049-1.rs rename to tests/ui/suggestions/issue-68049-1.rs diff --git a/src/test/ui/suggestions/issue-68049-1.stderr b/tests/ui/suggestions/issue-68049-1.stderr similarity index 100% rename from src/test/ui/suggestions/issue-68049-1.stderr rename to tests/ui/suggestions/issue-68049-1.stderr diff --git a/src/test/ui/suggestions/issue-68049-2.rs b/tests/ui/suggestions/issue-68049-2.rs similarity index 100% rename from src/test/ui/suggestions/issue-68049-2.rs rename to tests/ui/suggestions/issue-68049-2.rs diff --git a/src/test/ui/suggestions/issue-68049-2.stderr b/tests/ui/suggestions/issue-68049-2.stderr similarity index 100% rename from src/test/ui/suggestions/issue-68049-2.stderr rename to tests/ui/suggestions/issue-68049-2.stderr diff --git a/src/test/ui/suggestions/issue-71394-no-from-impl.rs b/tests/ui/suggestions/issue-71394-no-from-impl.rs similarity index 100% rename from src/test/ui/suggestions/issue-71394-no-from-impl.rs rename to tests/ui/suggestions/issue-71394-no-from-impl.rs diff --git a/src/test/ui/suggestions/issue-71394-no-from-impl.stderr b/tests/ui/suggestions/issue-71394-no-from-impl.stderr similarity index 100% rename from src/test/ui/suggestions/issue-71394-no-from-impl.stderr rename to tests/ui/suggestions/issue-71394-no-from-impl.stderr diff --git a/src/test/ui/suggestions/issue-72766.rs b/tests/ui/suggestions/issue-72766.rs similarity index 100% rename from src/test/ui/suggestions/issue-72766.rs rename to tests/ui/suggestions/issue-72766.rs diff --git a/src/test/ui/suggestions/issue-72766.stderr b/tests/ui/suggestions/issue-72766.stderr similarity index 100% rename from src/test/ui/suggestions/issue-72766.stderr rename to tests/ui/suggestions/issue-72766.stderr diff --git a/src/test/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs b/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs similarity index 100% rename from src/test/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs rename to tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.rs diff --git a/src/test/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr b/tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr similarity index 100% rename from src/test/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr rename to tests/ui/suggestions/issue-79843-impl-trait-with-missing-bounds-on-async-fn.stderr diff --git a/src/test/ui/suggestions/issue-81098.rs b/tests/ui/suggestions/issue-81098.rs similarity index 100% rename from src/test/ui/suggestions/issue-81098.rs rename to tests/ui/suggestions/issue-81098.rs diff --git a/src/test/ui/suggestions/issue-81098.stderr b/tests/ui/suggestions/issue-81098.stderr similarity index 100% rename from src/test/ui/suggestions/issue-81098.stderr rename to tests/ui/suggestions/issue-81098.stderr diff --git a/src/test/ui/suggestions/issue-81839.rs b/tests/ui/suggestions/issue-81839.rs similarity index 100% rename from src/test/ui/suggestions/issue-81839.rs rename to tests/ui/suggestions/issue-81839.rs diff --git a/src/test/ui/suggestions/issue-81839.stderr b/tests/ui/suggestions/issue-81839.stderr similarity index 100% rename from src/test/ui/suggestions/issue-81839.stderr rename to tests/ui/suggestions/issue-81839.stderr diff --git a/src/test/ui/suggestions/issue-82361.fixed b/tests/ui/suggestions/issue-82361.fixed similarity index 100% rename from src/test/ui/suggestions/issue-82361.fixed rename to tests/ui/suggestions/issue-82361.fixed diff --git a/src/test/ui/suggestions/issue-82361.rs b/tests/ui/suggestions/issue-82361.rs similarity index 100% rename from src/test/ui/suggestions/issue-82361.rs rename to tests/ui/suggestions/issue-82361.rs diff --git a/src/test/ui/suggestions/issue-82361.stderr b/tests/ui/suggestions/issue-82361.stderr similarity index 100% rename from src/test/ui/suggestions/issue-82361.stderr rename to tests/ui/suggestions/issue-82361.stderr diff --git a/src/test/ui/suggestions/issue-82566-1.rs b/tests/ui/suggestions/issue-82566-1.rs similarity index 100% rename from src/test/ui/suggestions/issue-82566-1.rs rename to tests/ui/suggestions/issue-82566-1.rs diff --git a/src/test/ui/suggestions/issue-82566-1.stderr b/tests/ui/suggestions/issue-82566-1.stderr similarity index 100% rename from src/test/ui/suggestions/issue-82566-1.stderr rename to tests/ui/suggestions/issue-82566-1.stderr diff --git a/src/test/ui/suggestions/issue-82566-2.rs b/tests/ui/suggestions/issue-82566-2.rs similarity index 100% rename from src/test/ui/suggestions/issue-82566-2.rs rename to tests/ui/suggestions/issue-82566-2.rs diff --git a/src/test/ui/suggestions/issue-82566-2.stderr b/tests/ui/suggestions/issue-82566-2.stderr similarity index 100% rename from src/test/ui/suggestions/issue-82566-2.stderr rename to tests/ui/suggestions/issue-82566-2.stderr diff --git a/src/test/ui/suggestions/issue-83892.fixed b/tests/ui/suggestions/issue-83892.fixed similarity index 100% rename from src/test/ui/suggestions/issue-83892.fixed rename to tests/ui/suggestions/issue-83892.fixed diff --git a/src/test/ui/suggestions/issue-83892.rs b/tests/ui/suggestions/issue-83892.rs similarity index 100% rename from src/test/ui/suggestions/issue-83892.rs rename to tests/ui/suggestions/issue-83892.rs diff --git a/src/test/ui/suggestions/issue-83892.stderr b/tests/ui/suggestions/issue-83892.stderr similarity index 100% rename from src/test/ui/suggestions/issue-83892.stderr rename to tests/ui/suggestions/issue-83892.stderr diff --git a/src/test/ui/suggestions/issue-83943.fixed b/tests/ui/suggestions/issue-83943.fixed similarity index 100% rename from src/test/ui/suggestions/issue-83943.fixed rename to tests/ui/suggestions/issue-83943.fixed diff --git a/src/test/ui/suggestions/issue-83943.rs b/tests/ui/suggestions/issue-83943.rs similarity index 100% rename from src/test/ui/suggestions/issue-83943.rs rename to tests/ui/suggestions/issue-83943.rs diff --git a/src/test/ui/suggestions/issue-83943.stderr b/tests/ui/suggestions/issue-83943.stderr similarity index 100% rename from src/test/ui/suggestions/issue-83943.stderr rename to tests/ui/suggestions/issue-83943.stderr diff --git a/src/test/ui/suggestions/issue-84592.rs b/tests/ui/suggestions/issue-84592.rs similarity index 100% rename from src/test/ui/suggestions/issue-84592.rs rename to tests/ui/suggestions/issue-84592.rs diff --git a/src/test/ui/suggestions/issue-84592.stderr b/tests/ui/suggestions/issue-84592.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84592.stderr rename to tests/ui/suggestions/issue-84592.stderr diff --git a/src/test/ui/suggestions/issue-84700.rs b/tests/ui/suggestions/issue-84700.rs similarity index 100% rename from src/test/ui/suggestions/issue-84700.rs rename to tests/ui/suggestions/issue-84700.rs diff --git a/src/test/ui/suggestions/issue-84700.stderr b/tests/ui/suggestions/issue-84700.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84700.stderr rename to tests/ui/suggestions/issue-84700.stderr diff --git a/src/test/ui/suggestions/issue-84973-2.rs b/tests/ui/suggestions/issue-84973-2.rs similarity index 100% rename from src/test/ui/suggestions/issue-84973-2.rs rename to tests/ui/suggestions/issue-84973-2.rs diff --git a/src/test/ui/suggestions/issue-84973-2.stderr b/tests/ui/suggestions/issue-84973-2.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84973-2.stderr rename to tests/ui/suggestions/issue-84973-2.stderr diff --git a/src/test/ui/suggestions/issue-84973-blacklist.rs b/tests/ui/suggestions/issue-84973-blacklist.rs similarity index 100% rename from src/test/ui/suggestions/issue-84973-blacklist.rs rename to tests/ui/suggestions/issue-84973-blacklist.rs diff --git a/src/test/ui/suggestions/issue-84973-blacklist.stderr b/tests/ui/suggestions/issue-84973-blacklist.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84973-blacklist.stderr rename to tests/ui/suggestions/issue-84973-blacklist.stderr diff --git a/src/test/ui/suggestions/issue-84973-negative.rs b/tests/ui/suggestions/issue-84973-negative.rs similarity index 100% rename from src/test/ui/suggestions/issue-84973-negative.rs rename to tests/ui/suggestions/issue-84973-negative.rs diff --git a/src/test/ui/suggestions/issue-84973-negative.stderr b/tests/ui/suggestions/issue-84973-negative.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84973-negative.stderr rename to tests/ui/suggestions/issue-84973-negative.stderr diff --git a/src/test/ui/suggestions/issue-84973.rs b/tests/ui/suggestions/issue-84973.rs similarity index 100% rename from src/test/ui/suggestions/issue-84973.rs rename to tests/ui/suggestions/issue-84973.rs diff --git a/src/test/ui/suggestions/issue-84973.stderr b/tests/ui/suggestions/issue-84973.stderr similarity index 100% rename from src/test/ui/suggestions/issue-84973.stderr rename to tests/ui/suggestions/issue-84973.stderr diff --git a/src/test/ui/suggestions/issue-85347.rs b/tests/ui/suggestions/issue-85347.rs similarity index 100% rename from src/test/ui/suggestions/issue-85347.rs rename to tests/ui/suggestions/issue-85347.rs diff --git a/src/test/ui/suggestions/issue-85347.stderr b/tests/ui/suggestions/issue-85347.stderr similarity index 100% rename from src/test/ui/suggestions/issue-85347.stderr rename to tests/ui/suggestions/issue-85347.stderr diff --git a/src/test/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs b/tests/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs similarity index 100% rename from src/test/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs rename to tests/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.rs diff --git a/src/test/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.stderr b/tests/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.stderr similarity index 100% rename from src/test/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.stderr rename to tests/ui/suggestions/issue-85943-no-suggest-unsized-indirection-in-where-clause.stderr diff --git a/src/test/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs b/tests/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs similarity index 100% rename from src/test/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs rename to tests/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.rs diff --git a/src/test/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.stderr b/tests/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.stderr similarity index 100% rename from src/test/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.stderr rename to tests/ui/suggestions/issue-85945-check-where-clause-before-suggesting-unsized.stderr diff --git a/src/test/ui/suggestions/issue-86100-tuple-paren-comma.rs b/tests/ui/suggestions/issue-86100-tuple-paren-comma.rs similarity index 100% rename from src/test/ui/suggestions/issue-86100-tuple-paren-comma.rs rename to tests/ui/suggestions/issue-86100-tuple-paren-comma.rs diff --git a/src/test/ui/suggestions/issue-86100-tuple-paren-comma.stderr b/tests/ui/suggestions/issue-86100-tuple-paren-comma.stderr similarity index 100% rename from src/test/ui/suggestions/issue-86100-tuple-paren-comma.stderr rename to tests/ui/suggestions/issue-86100-tuple-paren-comma.stderr diff --git a/src/test/ui/suggestions/issue-86667.rs b/tests/ui/suggestions/issue-86667.rs similarity index 100% rename from src/test/ui/suggestions/issue-86667.rs rename to tests/ui/suggestions/issue-86667.rs diff --git a/src/test/ui/suggestions/issue-86667.stderr b/tests/ui/suggestions/issue-86667.stderr similarity index 100% rename from src/test/ui/suggestions/issue-86667.stderr rename to tests/ui/suggestions/issue-86667.stderr diff --git a/src/test/ui/suggestions/issue-88730.rs b/tests/ui/suggestions/issue-88730.rs similarity index 100% rename from src/test/ui/suggestions/issue-88730.rs rename to tests/ui/suggestions/issue-88730.rs diff --git a/src/test/ui/suggestions/issue-88730.stderr b/tests/ui/suggestions/issue-88730.stderr similarity index 100% rename from src/test/ui/suggestions/issue-88730.stderr rename to tests/ui/suggestions/issue-88730.stderr diff --git a/src/test/ui/suggestions/issue-89064.rs b/tests/ui/suggestions/issue-89064.rs similarity index 100% rename from src/test/ui/suggestions/issue-89064.rs rename to tests/ui/suggestions/issue-89064.rs diff --git a/src/test/ui/suggestions/issue-89064.stderr b/tests/ui/suggestions/issue-89064.stderr similarity index 100% rename from src/test/ui/suggestions/issue-89064.stderr rename to tests/ui/suggestions/issue-89064.stderr diff --git a/src/test/ui/suggestions/issue-89333.rs b/tests/ui/suggestions/issue-89333.rs similarity index 100% rename from src/test/ui/suggestions/issue-89333.rs rename to tests/ui/suggestions/issue-89333.rs diff --git a/src/test/ui/suggestions/issue-89333.stderr b/tests/ui/suggestions/issue-89333.stderr similarity index 100% rename from src/test/ui/suggestions/issue-89333.stderr rename to tests/ui/suggestions/issue-89333.stderr diff --git a/src/test/ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs b/tests/ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs similarity index 100% rename from src/test/ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs rename to tests/ui/suggestions/issue-90213-expected-boxfuture-self-ice.rs diff --git a/src/test/ui/suggestions/issue-90213-expected-boxfuture-self-ice.stderr b/tests/ui/suggestions/issue-90213-expected-boxfuture-self-ice.stderr similarity index 100% rename from src/test/ui/suggestions/issue-90213-expected-boxfuture-self-ice.stderr rename to tests/ui/suggestions/issue-90213-expected-boxfuture-self-ice.stderr diff --git a/src/test/ui/suggestions/issue-90974.rs b/tests/ui/suggestions/issue-90974.rs similarity index 100% rename from src/test/ui/suggestions/issue-90974.rs rename to tests/ui/suggestions/issue-90974.rs diff --git a/src/test/ui/suggestions/issue-90974.stderr b/tests/ui/suggestions/issue-90974.stderr similarity index 100% rename from src/test/ui/suggestions/issue-90974.stderr rename to tests/ui/suggestions/issue-90974.stderr diff --git a/src/test/ui/suggestions/issue-96223.rs b/tests/ui/suggestions/issue-96223.rs similarity index 100% rename from src/test/ui/suggestions/issue-96223.rs rename to tests/ui/suggestions/issue-96223.rs diff --git a/src/test/ui/suggestions/issue-96223.stderr b/tests/ui/suggestions/issue-96223.stderr similarity index 100% rename from src/test/ui/suggestions/issue-96223.stderr rename to tests/ui/suggestions/issue-96223.stderr diff --git a/src/test/ui/suggestions/issue-96555.rs b/tests/ui/suggestions/issue-96555.rs similarity index 100% rename from src/test/ui/suggestions/issue-96555.rs rename to tests/ui/suggestions/issue-96555.rs diff --git a/src/test/ui/suggestions/issue-96555.stderr b/tests/ui/suggestions/issue-96555.stderr similarity index 100% rename from src/test/ui/suggestions/issue-96555.stderr rename to tests/ui/suggestions/issue-96555.stderr diff --git a/src/test/ui/suggestions/issue-97677.fixed b/tests/ui/suggestions/issue-97677.fixed similarity index 100% rename from src/test/ui/suggestions/issue-97677.fixed rename to tests/ui/suggestions/issue-97677.fixed diff --git a/src/test/ui/suggestions/issue-97677.rs b/tests/ui/suggestions/issue-97677.rs similarity index 100% rename from src/test/ui/suggestions/issue-97677.rs rename to tests/ui/suggestions/issue-97677.rs diff --git a/src/test/ui/suggestions/issue-97677.stderr b/tests/ui/suggestions/issue-97677.stderr similarity index 100% rename from src/test/ui/suggestions/issue-97677.stderr rename to tests/ui/suggestions/issue-97677.stderr diff --git a/src/test/ui/suggestions/issue-97704.fixed b/tests/ui/suggestions/issue-97704.fixed similarity index 100% rename from src/test/ui/suggestions/issue-97704.fixed rename to tests/ui/suggestions/issue-97704.fixed diff --git a/src/test/ui/suggestions/issue-97704.rs b/tests/ui/suggestions/issue-97704.rs similarity index 100% rename from src/test/ui/suggestions/issue-97704.rs rename to tests/ui/suggestions/issue-97704.rs diff --git a/src/test/ui/suggestions/issue-97704.stderr b/tests/ui/suggestions/issue-97704.stderr similarity index 100% rename from src/test/ui/suggestions/issue-97704.stderr rename to tests/ui/suggestions/issue-97704.stderr diff --git a/src/test/ui/suggestions/issue-97760.rs b/tests/ui/suggestions/issue-97760.rs similarity index 100% rename from src/test/ui/suggestions/issue-97760.rs rename to tests/ui/suggestions/issue-97760.rs diff --git a/src/test/ui/suggestions/issue-97760.stderr b/tests/ui/suggestions/issue-97760.stderr similarity index 100% rename from src/test/ui/suggestions/issue-97760.stderr rename to tests/ui/suggestions/issue-97760.stderr diff --git a/src/test/ui/suggestions/issue-98500.rs b/tests/ui/suggestions/issue-98500.rs similarity index 100% rename from src/test/ui/suggestions/issue-98500.rs rename to tests/ui/suggestions/issue-98500.rs diff --git a/src/test/ui/suggestions/issue-98500.stderr b/tests/ui/suggestions/issue-98500.stderr similarity index 100% rename from src/test/ui/suggestions/issue-98500.stderr rename to tests/ui/suggestions/issue-98500.stderr diff --git a/src/test/ui/suggestions/issue-99080.rs b/tests/ui/suggestions/issue-99080.rs similarity index 100% rename from src/test/ui/suggestions/issue-99080.rs rename to tests/ui/suggestions/issue-99080.rs diff --git a/src/test/ui/suggestions/issue-99080.stderr b/tests/ui/suggestions/issue-99080.stderr similarity index 100% rename from src/test/ui/suggestions/issue-99080.stderr rename to tests/ui/suggestions/issue-99080.stderr diff --git a/src/test/ui/suggestions/issue-99240-2.rs b/tests/ui/suggestions/issue-99240-2.rs similarity index 100% rename from src/test/ui/suggestions/issue-99240-2.rs rename to tests/ui/suggestions/issue-99240-2.rs diff --git a/src/test/ui/suggestions/issue-99240-2.stderr b/tests/ui/suggestions/issue-99240-2.stderr similarity index 100% rename from src/test/ui/suggestions/issue-99240-2.stderr rename to tests/ui/suggestions/issue-99240-2.stderr diff --git a/src/test/ui/suggestions/issue-99240.rs b/tests/ui/suggestions/issue-99240.rs similarity index 100% rename from src/test/ui/suggestions/issue-99240.rs rename to tests/ui/suggestions/issue-99240.rs diff --git a/src/test/ui/suggestions/issue-99240.stderr b/tests/ui/suggestions/issue-99240.stderr similarity index 100% rename from src/test/ui/suggestions/issue-99240.stderr rename to tests/ui/suggestions/issue-99240.stderr diff --git a/src/test/ui/suggestions/js-style-comparison-op-separate-eq-token.rs b/tests/ui/suggestions/js-style-comparison-op-separate-eq-token.rs similarity index 100% rename from src/test/ui/suggestions/js-style-comparison-op-separate-eq-token.rs rename to tests/ui/suggestions/js-style-comparison-op-separate-eq-token.rs diff --git a/src/test/ui/suggestions/js-style-comparison-op-separate-eq-token.stderr b/tests/ui/suggestions/js-style-comparison-op-separate-eq-token.stderr similarity index 100% rename from src/test/ui/suggestions/js-style-comparison-op-separate-eq-token.stderr rename to tests/ui/suggestions/js-style-comparison-op-separate-eq-token.stderr diff --git a/src/test/ui/suggestions/js-style-comparison-op.fixed b/tests/ui/suggestions/js-style-comparison-op.fixed similarity index 100% rename from src/test/ui/suggestions/js-style-comparison-op.fixed rename to tests/ui/suggestions/js-style-comparison-op.fixed diff --git a/src/test/ui/suggestions/js-style-comparison-op.rs b/tests/ui/suggestions/js-style-comparison-op.rs similarity index 100% rename from src/test/ui/suggestions/js-style-comparison-op.rs rename to tests/ui/suggestions/js-style-comparison-op.rs diff --git a/src/test/ui/suggestions/js-style-comparison-op.stderr b/tests/ui/suggestions/js-style-comparison-op.stderr similarity index 100% rename from src/test/ui/suggestions/js-style-comparison-op.stderr rename to tests/ui/suggestions/js-style-comparison-op.stderr diff --git a/src/test/ui/suggestions/let-binding-init-expr-as-ty.rs b/tests/ui/suggestions/let-binding-init-expr-as-ty.rs similarity index 100% rename from src/test/ui/suggestions/let-binding-init-expr-as-ty.rs rename to tests/ui/suggestions/let-binding-init-expr-as-ty.rs diff --git a/src/test/ui/suggestions/let-binding-init-expr-as-ty.stderr b/tests/ui/suggestions/let-binding-init-expr-as-ty.stderr similarity index 100% rename from src/test/ui/suggestions/let-binding-init-expr-as-ty.stderr rename to tests/ui/suggestions/let-binding-init-expr-as-ty.stderr diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.fixed b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.fixed similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.fixed rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.fixed diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.rs b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.rs similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.rs rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.rs diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.stderr similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.stderr rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-before-const.stderr diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature.rs b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.rs similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature.rs rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.rs diff --git a/src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr similarity index 100% rename from src/test/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr rename to tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr diff --git a/src/test/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.rs b/tests/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.rs similarity index 100% rename from src/test/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.rs rename to tests/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.rs diff --git a/src/test/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.stderr b/tests/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.stderr similarity index 100% rename from src/test/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.stderr rename to tests/ui/suggestions/lifetimes/trait-object-nested-in-impl-trait.stderr diff --git a/src/test/ui/suggestions/many-type-ascription.rs b/tests/ui/suggestions/many-type-ascription.rs similarity index 100% rename from src/test/ui/suggestions/many-type-ascription.rs rename to tests/ui/suggestions/many-type-ascription.rs diff --git a/src/test/ui/suggestions/many-type-ascription.stderr b/tests/ui/suggestions/many-type-ascription.stderr similarity index 100% rename from src/test/ui/suggestions/many-type-ascription.stderr rename to tests/ui/suggestions/many-type-ascription.stderr diff --git a/src/test/ui/suggestions/match-ergonomics.rs b/tests/ui/suggestions/match-ergonomics.rs similarity index 100% rename from src/test/ui/suggestions/match-ergonomics.rs rename to tests/ui/suggestions/match-ergonomics.rs diff --git a/src/test/ui/suggestions/match-ergonomics.stderr b/tests/ui/suggestions/match-ergonomics.stderr similarity index 100% rename from src/test/ui/suggestions/match-ergonomics.stderr rename to tests/ui/suggestions/match-ergonomics.stderr diff --git a/src/test/ui/suggestions/match-needing-semi.rs b/tests/ui/suggestions/match-needing-semi.rs similarity index 100% rename from src/test/ui/suggestions/match-needing-semi.rs rename to tests/ui/suggestions/match-needing-semi.rs diff --git a/src/test/ui/suggestions/match-needing-semi.stderr b/tests/ui/suggestions/match-needing-semi.stderr similarity index 100% rename from src/test/ui/suggestions/match-needing-semi.stderr rename to tests/ui/suggestions/match-needing-semi.stderr diff --git a/src/test/ui/suggestions/match-prev-arm-needing-semi.rs b/tests/ui/suggestions/match-prev-arm-needing-semi.rs similarity index 100% rename from src/test/ui/suggestions/match-prev-arm-needing-semi.rs rename to tests/ui/suggestions/match-prev-arm-needing-semi.rs diff --git a/src/test/ui/suggestions/match-prev-arm-needing-semi.stderr b/tests/ui/suggestions/match-prev-arm-needing-semi.stderr similarity index 100% rename from src/test/ui/suggestions/match-prev-arm-needing-semi.stderr rename to tests/ui/suggestions/match-prev-arm-needing-semi.stderr diff --git a/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.rs b/tests/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.rs similarity index 100% rename from src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.rs rename to tests/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.rs diff --git a/src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr b/tests/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr similarity index 100% rename from src/test/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr rename to tests/ui/suggestions/match-with-different-arm-types-as-stmt-instead-of-expr.stderr diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.fixed b/tests/ui/suggestions/method-access-to-range-literal-typo.fixed similarity index 100% rename from src/test/ui/suggestions/method-access-to-range-literal-typo.fixed rename to tests/ui/suggestions/method-access-to-range-literal-typo.fixed diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.rs b/tests/ui/suggestions/method-access-to-range-literal-typo.rs similarity index 100% rename from src/test/ui/suggestions/method-access-to-range-literal-typo.rs rename to tests/ui/suggestions/method-access-to-range-literal-typo.rs diff --git a/src/test/ui/suggestions/method-access-to-range-literal-typo.stderr b/tests/ui/suggestions/method-access-to-range-literal-typo.stderr similarity index 100% rename from src/test/ui/suggestions/method-access-to-range-literal-typo.stderr rename to tests/ui/suggestions/method-access-to-range-literal-typo.stderr diff --git a/src/test/ui/suggestions/method-missing-parentheses.rs b/tests/ui/suggestions/method-missing-parentheses.rs similarity index 100% rename from src/test/ui/suggestions/method-missing-parentheses.rs rename to tests/ui/suggestions/method-missing-parentheses.rs diff --git a/src/test/ui/suggestions/method-missing-parentheses.stderr b/tests/ui/suggestions/method-missing-parentheses.stderr similarity index 100% rename from src/test/ui/suggestions/method-missing-parentheses.stderr rename to tests/ui/suggestions/method-missing-parentheses.stderr diff --git a/src/test/ui/suggestions/mismatched-types-numeric-from.rs b/tests/ui/suggestions/mismatched-types-numeric-from.rs similarity index 100% rename from src/test/ui/suggestions/mismatched-types-numeric-from.rs rename to tests/ui/suggestions/mismatched-types-numeric-from.rs diff --git a/src/test/ui/suggestions/mismatched-types-numeric-from.stderr b/tests/ui/suggestions/mismatched-types-numeric-from.stderr similarity index 100% rename from src/test/ui/suggestions/mismatched-types-numeric-from.stderr rename to tests/ui/suggestions/mismatched-types-numeric-from.stderr diff --git a/src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.fixed b/tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.fixed similarity index 100% rename from src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.fixed rename to tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.fixed diff --git a/src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.rs b/tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.rs similarity index 100% rename from src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.rs rename to tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.rs diff --git a/src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.stderr b/tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.stderr similarity index 100% rename from src/test/ui/suggestions/missing-assoc-fn-applicable-suggestions.stderr rename to tests/ui/suggestions/missing-assoc-fn-applicable-suggestions.stderr diff --git a/src/test/ui/suggestions/missing-assoc-fn.rs b/tests/ui/suggestions/missing-assoc-fn.rs similarity index 100% rename from src/test/ui/suggestions/missing-assoc-fn.rs rename to tests/ui/suggestions/missing-assoc-fn.rs diff --git a/src/test/ui/suggestions/missing-assoc-fn.stderr b/tests/ui/suggestions/missing-assoc-fn.stderr similarity index 100% rename from src/test/ui/suggestions/missing-assoc-fn.stderr rename to tests/ui/suggestions/missing-assoc-fn.stderr diff --git a/src/test/ui/suggestions/missing-assoc-type-bound-restriction.rs b/tests/ui/suggestions/missing-assoc-type-bound-restriction.rs similarity index 100% rename from src/test/ui/suggestions/missing-assoc-type-bound-restriction.rs rename to tests/ui/suggestions/missing-assoc-type-bound-restriction.rs diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.fixed b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.fixed similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.fixed rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.fixed diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.rs b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.rs similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.rs rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.rs diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.stderr b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.stderr similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-2.stderr rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-2.stderr diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.fixed b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.fixed similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.fixed rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.fixed diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.rs b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.rs similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.rs rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.rs diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.stderr b/tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.stderr similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl-3.stderr rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl-3.stderr diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl.rs b/tests/ui/suggestions/missing-bound-in-derive-copy-impl.rs similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl.rs rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl.rs diff --git a/src/test/ui/suggestions/missing-bound-in-derive-copy-impl.stderr b/tests/ui/suggestions/missing-bound-in-derive-copy-impl.stderr similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-derive-copy-impl.stderr rename to tests/ui/suggestions/missing-bound-in-derive-copy-impl.stderr diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed b/tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs b/tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr b/tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed b/tests/ui/suggestions/missing-bound-in-manual-copy-impl.fixed similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl.fixed diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs b/tests/ui/suggestions/missing-bound-in-manual-copy-impl.rs similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl.rs diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr b/tests/ui/suggestions/missing-bound-in-manual-copy-impl.stderr similarity index 100% rename from src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr rename to tests/ui/suggestions/missing-bound-in-manual-copy-impl.stderr diff --git a/src/test/ui/suggestions/missing-lifetime-in-assoc-const-type.rs b/tests/ui/suggestions/missing-lifetime-in-assoc-const-type.rs similarity index 100% rename from src/test/ui/suggestions/missing-lifetime-in-assoc-const-type.rs rename to tests/ui/suggestions/missing-lifetime-in-assoc-const-type.rs diff --git a/src/test/ui/suggestions/missing-lifetime-in-assoc-const-type.stderr b/tests/ui/suggestions/missing-lifetime-in-assoc-const-type.stderr similarity index 100% rename from src/test/ui/suggestions/missing-lifetime-in-assoc-const-type.stderr rename to tests/ui/suggestions/missing-lifetime-in-assoc-const-type.stderr diff --git a/src/test/ui/suggestions/missing-lifetime-specifier.rs b/tests/ui/suggestions/missing-lifetime-specifier.rs similarity index 100% rename from src/test/ui/suggestions/missing-lifetime-specifier.rs rename to tests/ui/suggestions/missing-lifetime-specifier.rs diff --git a/src/test/ui/suggestions/missing-lifetime-specifier.stderr b/tests/ui/suggestions/missing-lifetime-specifier.stderr similarity index 100% rename from src/test/ui/suggestions/missing-lifetime-specifier.stderr rename to tests/ui/suggestions/missing-lifetime-specifier.stderr diff --git a/src/test/ui/suggestions/missing-lt-for-hrtb.rs b/tests/ui/suggestions/missing-lt-for-hrtb.rs similarity index 100% rename from src/test/ui/suggestions/missing-lt-for-hrtb.rs rename to tests/ui/suggestions/missing-lt-for-hrtb.rs diff --git a/src/test/ui/suggestions/missing-lt-for-hrtb.stderr b/tests/ui/suggestions/missing-lt-for-hrtb.stderr similarity index 100% rename from src/test/ui/suggestions/missing-lt-for-hrtb.stderr rename to tests/ui/suggestions/missing-lt-for-hrtb.stderr diff --git a/src/test/ui/suggestions/missing-trait-item.fixed b/tests/ui/suggestions/missing-trait-item.fixed similarity index 100% rename from src/test/ui/suggestions/missing-trait-item.fixed rename to tests/ui/suggestions/missing-trait-item.fixed diff --git a/src/test/ui/suggestions/missing-trait-item.rs b/tests/ui/suggestions/missing-trait-item.rs similarity index 100% rename from src/test/ui/suggestions/missing-trait-item.rs rename to tests/ui/suggestions/missing-trait-item.rs diff --git a/src/test/ui/suggestions/missing-trait-item.stderr b/tests/ui/suggestions/missing-trait-item.stderr similarity index 100% rename from src/test/ui/suggestions/missing-trait-item.stderr rename to tests/ui/suggestions/missing-trait-item.stderr diff --git a/src/test/ui/suggestions/missing-type-param-used-in-param.fixed b/tests/ui/suggestions/missing-type-param-used-in-param.fixed similarity index 100% rename from src/test/ui/suggestions/missing-type-param-used-in-param.fixed rename to tests/ui/suggestions/missing-type-param-used-in-param.fixed diff --git a/src/test/ui/suggestions/missing-type-param-used-in-param.rs b/tests/ui/suggestions/missing-type-param-used-in-param.rs similarity index 100% rename from src/test/ui/suggestions/missing-type-param-used-in-param.rs rename to tests/ui/suggestions/missing-type-param-used-in-param.rs diff --git a/src/test/ui/suggestions/missing-type-param-used-in-param.stderr b/tests/ui/suggestions/missing-type-param-used-in-param.stderr similarity index 100% rename from src/test/ui/suggestions/missing-type-param-used-in-param.stderr rename to tests/ui/suggestions/missing-type-param-used-in-param.stderr diff --git a/src/test/ui/suggestions/move-generic-to-trait-in-method-with-params.rs b/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.rs similarity index 100% rename from src/test/ui/suggestions/move-generic-to-trait-in-method-with-params.rs rename to tests/ui/suggestions/move-generic-to-trait-in-method-with-params.rs diff --git a/src/test/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr b/tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr similarity index 100% rename from src/test/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr rename to tests/ui/suggestions/move-generic-to-trait-in-method-with-params.stderr diff --git a/src/test/ui/suggestions/multibyte-escapes.rs b/tests/ui/suggestions/multibyte-escapes.rs similarity index 100% rename from src/test/ui/suggestions/multibyte-escapes.rs rename to tests/ui/suggestions/multibyte-escapes.rs diff --git a/src/test/ui/suggestions/multibyte-escapes.stderr b/tests/ui/suggestions/multibyte-escapes.stderr similarity index 100% rename from src/test/ui/suggestions/multibyte-escapes.stderr rename to tests/ui/suggestions/multibyte-escapes.stderr diff --git a/src/test/ui/suggestions/mut-borrow-needed-by-trait.rs b/tests/ui/suggestions/mut-borrow-needed-by-trait.rs similarity index 100% rename from src/test/ui/suggestions/mut-borrow-needed-by-trait.rs rename to tests/ui/suggestions/mut-borrow-needed-by-trait.rs diff --git a/src/test/ui/suggestions/mut-borrow-needed-by-trait.stderr b/tests/ui/suggestions/mut-borrow-needed-by-trait.stderr similarity index 100% rename from src/test/ui/suggestions/mut-borrow-needed-by-trait.stderr rename to tests/ui/suggestions/mut-borrow-needed-by-trait.stderr diff --git a/src/test/ui/suggestions/mut-ref-reassignment.rs b/tests/ui/suggestions/mut-ref-reassignment.rs similarity index 100% rename from src/test/ui/suggestions/mut-ref-reassignment.rs rename to tests/ui/suggestions/mut-ref-reassignment.rs diff --git a/src/test/ui/suggestions/mut-ref-reassignment.stderr b/tests/ui/suggestions/mut-ref-reassignment.stderr similarity index 100% rename from src/test/ui/suggestions/mut-ref-reassignment.stderr rename to tests/ui/suggestions/mut-ref-reassignment.stderr diff --git a/src/test/ui/suggestions/negative-literal-index.fixed b/tests/ui/suggestions/negative-literal-index.fixed similarity index 100% rename from src/test/ui/suggestions/negative-literal-index.fixed rename to tests/ui/suggestions/negative-literal-index.fixed diff --git a/src/test/ui/suggestions/negative-literal-index.rs b/tests/ui/suggestions/negative-literal-index.rs similarity index 100% rename from src/test/ui/suggestions/negative-literal-index.rs rename to tests/ui/suggestions/negative-literal-index.rs diff --git a/src/test/ui/suggestions/negative-literal-index.stderr b/tests/ui/suggestions/negative-literal-index.stderr similarity index 100% rename from src/test/ui/suggestions/negative-literal-index.stderr rename to tests/ui/suggestions/negative-literal-index.stderr diff --git a/src/test/ui/suggestions/nested-non-tuple-tuple-struct.rs b/tests/ui/suggestions/nested-non-tuple-tuple-struct.rs similarity index 100% rename from src/test/ui/suggestions/nested-non-tuple-tuple-struct.rs rename to tests/ui/suggestions/nested-non-tuple-tuple-struct.rs diff --git a/src/test/ui/suggestions/nested-non-tuple-tuple-struct.stderr b/tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr similarity index 100% rename from src/test/ui/suggestions/nested-non-tuple-tuple-struct.stderr rename to tests/ui/suggestions/nested-non-tuple-tuple-struct.stderr diff --git a/src/test/ui/suggestions/no-extern-crate-in-type.rs b/tests/ui/suggestions/no-extern-crate-in-type.rs similarity index 100% rename from src/test/ui/suggestions/no-extern-crate-in-type.rs rename to tests/ui/suggestions/no-extern-crate-in-type.rs diff --git a/src/test/ui/suggestions/no-extern-crate-in-type.stderr b/tests/ui/suggestions/no-extern-crate-in-type.stderr similarity index 100% rename from src/test/ui/suggestions/no-extern-crate-in-type.stderr rename to tests/ui/suggestions/no-extern-crate-in-type.stderr diff --git a/src/test/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs b/tests/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs similarity index 100% rename from src/test/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs rename to tests/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs diff --git a/src/test/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.stderr b/tests/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.stderr similarity index 100% rename from src/test/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.stderr rename to tests/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.stderr diff --git a/src/test/ui/suggestions/non-existent-field-present-in-subfield.fixed b/tests/ui/suggestions/non-existent-field-present-in-subfield.fixed similarity index 100% rename from src/test/ui/suggestions/non-existent-field-present-in-subfield.fixed rename to tests/ui/suggestions/non-existent-field-present-in-subfield.fixed diff --git a/src/test/ui/suggestions/non-existent-field-present-in-subfield.rs b/tests/ui/suggestions/non-existent-field-present-in-subfield.rs similarity index 100% rename from src/test/ui/suggestions/non-existent-field-present-in-subfield.rs rename to tests/ui/suggestions/non-existent-field-present-in-subfield.rs diff --git a/src/test/ui/suggestions/non-existent-field-present-in-subfield.stderr b/tests/ui/suggestions/non-existent-field-present-in-subfield.stderr similarity index 100% rename from src/test/ui/suggestions/non-existent-field-present-in-subfield.stderr rename to tests/ui/suggestions/non-existent-field-present-in-subfield.stderr diff --git a/src/test/ui/suggestions/object-unsafe-trait-references-self.rs b/tests/ui/suggestions/object-unsafe-trait-references-self.rs similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-references-self.rs rename to tests/ui/suggestions/object-unsafe-trait-references-self.rs diff --git a/src/test/ui/suggestions/object-unsafe-trait-references-self.stderr b/tests/ui/suggestions/object-unsafe-trait-references-self.stderr similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-references-self.stderr rename to tests/ui/suggestions/object-unsafe-trait-references-self.stderr diff --git a/src/test/ui/suggestions/object-unsafe-trait-should-use-self.rs b/tests/ui/suggestions/object-unsafe-trait-should-use-self.rs similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-should-use-self.rs rename to tests/ui/suggestions/object-unsafe-trait-should-use-self.rs diff --git a/src/test/ui/suggestions/object-unsafe-trait-should-use-self.stderr b/tests/ui/suggestions/object-unsafe-trait-should-use-self.stderr similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-should-use-self.stderr rename to tests/ui/suggestions/object-unsafe-trait-should-use-self.stderr diff --git a/src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.fixed b/tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.fixed similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.fixed rename to tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.fixed diff --git a/src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.rs b/tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.rs similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.rs rename to tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.rs diff --git a/src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.stderr b/tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.stderr similarity index 100% rename from src/test/ui/suggestions/object-unsafe-trait-should-use-where-sized.stderr rename to tests/ui/suggestions/object-unsafe-trait-should-use-where-sized.stderr diff --git a/src/test/ui/suggestions/opaque-type-error.rs b/tests/ui/suggestions/opaque-type-error.rs similarity index 100% rename from src/test/ui/suggestions/opaque-type-error.rs rename to tests/ui/suggestions/opaque-type-error.rs diff --git a/src/test/ui/suggestions/opaque-type-error.stderr b/tests/ui/suggestions/opaque-type-error.stderr similarity index 100% rename from src/test/ui/suggestions/opaque-type-error.stderr rename to tests/ui/suggestions/opaque-type-error.stderr diff --git a/src/test/ui/suggestions/option-content-move-from-tuple-match.rs b/tests/ui/suggestions/option-content-move-from-tuple-match.rs similarity index 100% rename from src/test/ui/suggestions/option-content-move-from-tuple-match.rs rename to tests/ui/suggestions/option-content-move-from-tuple-match.rs diff --git a/src/test/ui/suggestions/option-content-move-from-tuple-match.stderr b/tests/ui/suggestions/option-content-move-from-tuple-match.stderr similarity index 100% rename from src/test/ui/suggestions/option-content-move-from-tuple-match.stderr rename to tests/ui/suggestions/option-content-move-from-tuple-match.stderr diff --git a/src/test/ui/suggestions/option-content-move.rs b/tests/ui/suggestions/option-content-move.rs similarity index 100% rename from src/test/ui/suggestions/option-content-move.rs rename to tests/ui/suggestions/option-content-move.rs diff --git a/src/test/ui/suggestions/option-content-move.stderr b/tests/ui/suggestions/option-content-move.stderr similarity index 100% rename from src/test/ui/suggestions/option-content-move.stderr rename to tests/ui/suggestions/option-content-move.stderr diff --git a/src/test/ui/suggestions/option-content-move2.rs b/tests/ui/suggestions/option-content-move2.rs similarity index 100% rename from src/test/ui/suggestions/option-content-move2.rs rename to tests/ui/suggestions/option-content-move2.rs diff --git a/src/test/ui/suggestions/option-content-move2.stderr b/tests/ui/suggestions/option-content-move2.stderr similarity index 100% rename from src/test/ui/suggestions/option-content-move2.stderr rename to tests/ui/suggestions/option-content-move2.stderr diff --git a/src/test/ui/suggestions/option-to-bool.rs b/tests/ui/suggestions/option-to-bool.rs similarity index 100% rename from src/test/ui/suggestions/option-to-bool.rs rename to tests/ui/suggestions/option-to-bool.rs diff --git a/src/test/ui/suggestions/option-to-bool.stderr b/tests/ui/suggestions/option-to-bool.stderr similarity index 100% rename from src/test/ui/suggestions/option-to-bool.stderr rename to tests/ui/suggestions/option-to-bool.stderr diff --git a/src/test/ui/suggestions/parenthesized-deref-suggestion.rs b/tests/ui/suggestions/parenthesized-deref-suggestion.rs similarity index 100% rename from src/test/ui/suggestions/parenthesized-deref-suggestion.rs rename to tests/ui/suggestions/parenthesized-deref-suggestion.rs diff --git a/src/test/ui/suggestions/parenthesized-deref-suggestion.stderr b/tests/ui/suggestions/parenthesized-deref-suggestion.stderr similarity index 100% rename from src/test/ui/suggestions/parenthesized-deref-suggestion.stderr rename to tests/ui/suggestions/parenthesized-deref-suggestion.stderr diff --git a/src/test/ui/suggestions/path-by-value.rs b/tests/ui/suggestions/path-by-value.rs similarity index 100% rename from src/test/ui/suggestions/path-by-value.rs rename to tests/ui/suggestions/path-by-value.rs diff --git a/src/test/ui/suggestions/path-by-value.stderr b/tests/ui/suggestions/path-by-value.stderr similarity index 100% rename from src/test/ui/suggestions/path-by-value.stderr rename to tests/ui/suggestions/path-by-value.stderr diff --git a/src/test/ui/suggestions/path-display.rs b/tests/ui/suggestions/path-display.rs similarity index 100% rename from src/test/ui/suggestions/path-display.rs rename to tests/ui/suggestions/path-display.rs diff --git a/src/test/ui/suggestions/path-display.stderr b/tests/ui/suggestions/path-display.stderr similarity index 100% rename from src/test/ui/suggestions/path-display.stderr rename to tests/ui/suggestions/path-display.stderr diff --git a/src/test/ui/suggestions/pattern-slice-vec.fixed b/tests/ui/suggestions/pattern-slice-vec.fixed similarity index 100% rename from src/test/ui/suggestions/pattern-slice-vec.fixed rename to tests/ui/suggestions/pattern-slice-vec.fixed diff --git a/src/test/ui/suggestions/pattern-slice-vec.rs b/tests/ui/suggestions/pattern-slice-vec.rs similarity index 100% rename from src/test/ui/suggestions/pattern-slice-vec.rs rename to tests/ui/suggestions/pattern-slice-vec.rs diff --git a/src/test/ui/suggestions/pattern-slice-vec.stderr b/tests/ui/suggestions/pattern-slice-vec.stderr similarity index 100% rename from src/test/ui/suggestions/pattern-slice-vec.stderr rename to tests/ui/suggestions/pattern-slice-vec.stderr diff --git a/src/test/ui/suggestions/pattern-struct-with-slice-vec-field.rs b/tests/ui/suggestions/pattern-struct-with-slice-vec-field.rs similarity index 100% rename from src/test/ui/suggestions/pattern-struct-with-slice-vec-field.rs rename to tests/ui/suggestions/pattern-struct-with-slice-vec-field.rs diff --git a/src/test/ui/suggestions/pattern-struct-with-slice-vec-field.stderr b/tests/ui/suggestions/pattern-struct-with-slice-vec-field.stderr similarity index 100% rename from src/test/ui/suggestions/pattern-struct-with-slice-vec-field.stderr rename to tests/ui/suggestions/pattern-struct-with-slice-vec-field.stderr diff --git a/src/test/ui/suggestions/private-field.rs b/tests/ui/suggestions/private-field.rs similarity index 100% rename from src/test/ui/suggestions/private-field.rs rename to tests/ui/suggestions/private-field.rs diff --git a/src/test/ui/suggestions/private-field.stderr b/tests/ui/suggestions/private-field.stderr similarity index 100% rename from src/test/ui/suggestions/private-field.stderr rename to tests/ui/suggestions/private-field.stderr diff --git a/src/test/ui/suggestions/raw-byte-string-prefix.rs b/tests/ui/suggestions/raw-byte-string-prefix.rs similarity index 100% rename from src/test/ui/suggestions/raw-byte-string-prefix.rs rename to tests/ui/suggestions/raw-byte-string-prefix.rs diff --git a/src/test/ui/suggestions/raw-byte-string-prefix.stderr b/tests/ui/suggestions/raw-byte-string-prefix.stderr similarity index 100% rename from src/test/ui/suggestions/raw-byte-string-prefix.stderr rename to tests/ui/suggestions/raw-byte-string-prefix.stderr diff --git a/src/test/ui/suggestions/raw-name-use-suggestion.rs b/tests/ui/suggestions/raw-name-use-suggestion.rs similarity index 100% rename from src/test/ui/suggestions/raw-name-use-suggestion.rs rename to tests/ui/suggestions/raw-name-use-suggestion.rs diff --git a/src/test/ui/suggestions/raw-name-use-suggestion.stderr b/tests/ui/suggestions/raw-name-use-suggestion.stderr similarity index 100% rename from src/test/ui/suggestions/raw-name-use-suggestion.stderr rename to tests/ui/suggestions/raw-name-use-suggestion.stderr diff --git a/src/test/ui/suggestions/recover-from-semicolon-trailing-item.rs b/tests/ui/suggestions/recover-from-semicolon-trailing-item.rs similarity index 100% rename from src/test/ui/suggestions/recover-from-semicolon-trailing-item.rs rename to tests/ui/suggestions/recover-from-semicolon-trailing-item.rs diff --git a/src/test/ui/suggestions/recover-from-semicolon-trailing-item.stderr b/tests/ui/suggestions/recover-from-semicolon-trailing-item.stderr similarity index 100% rename from src/test/ui/suggestions/recover-from-semicolon-trailing-item.stderr rename to tests/ui/suggestions/recover-from-semicolon-trailing-item.stderr diff --git a/src/test/ui/suggestions/recover-invalid-float.fixed b/tests/ui/suggestions/recover-invalid-float.fixed similarity index 100% rename from src/test/ui/suggestions/recover-invalid-float.fixed rename to tests/ui/suggestions/recover-invalid-float.fixed diff --git a/src/test/ui/suggestions/recover-invalid-float.rs b/tests/ui/suggestions/recover-invalid-float.rs similarity index 100% rename from src/test/ui/suggestions/recover-invalid-float.rs rename to tests/ui/suggestions/recover-invalid-float.rs diff --git a/src/test/ui/suggestions/recover-invalid-float.stderr b/tests/ui/suggestions/recover-invalid-float.stderr similarity index 100% rename from src/test/ui/suggestions/recover-invalid-float.stderr rename to tests/ui/suggestions/recover-invalid-float.stderr diff --git a/src/test/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.rs b/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.rs similarity index 100% rename from src/test/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.rs rename to tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.rs diff --git a/src/test/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr b/tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr similarity index 100% rename from src/test/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr rename to tests/ui/suggestions/recover-missing-turbofish-surrounding-angle-braket.stderr diff --git a/src/test/ui/suggestions/ref-pattern-binding.fixed b/tests/ui/suggestions/ref-pattern-binding.fixed similarity index 100% rename from src/test/ui/suggestions/ref-pattern-binding.fixed rename to tests/ui/suggestions/ref-pattern-binding.fixed diff --git a/src/test/ui/suggestions/ref-pattern-binding.rs b/tests/ui/suggestions/ref-pattern-binding.rs similarity index 100% rename from src/test/ui/suggestions/ref-pattern-binding.rs rename to tests/ui/suggestions/ref-pattern-binding.rs diff --git a/src/test/ui/suggestions/ref-pattern-binding.stderr b/tests/ui/suggestions/ref-pattern-binding.stderr similarity index 100% rename from src/test/ui/suggestions/ref-pattern-binding.stderr rename to tests/ui/suggestions/ref-pattern-binding.stderr diff --git a/src/test/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.rs b/tests/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.rs similarity index 100% rename from src/test/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.rs rename to tests/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.rs diff --git a/src/test/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.stderr b/tests/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.stderr similarity index 100% rename from src/test/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.stderr rename to tests/ui/suggestions/removal-of-multiline-trait-bound-in-where-clause.stderr diff --git a/src/test/ui/suggestions/remove-as_str.rs b/tests/ui/suggestions/remove-as_str.rs similarity index 100% rename from src/test/ui/suggestions/remove-as_str.rs rename to tests/ui/suggestions/remove-as_str.rs diff --git a/src/test/ui/suggestions/remove-as_str.stderr b/tests/ui/suggestions/remove-as_str.stderr similarity index 100% rename from src/test/ui/suggestions/remove-as_str.stderr rename to tests/ui/suggestions/remove-as_str.stderr diff --git a/src/test/ui/suggestions/restrict-type-argument.rs b/tests/ui/suggestions/restrict-type-argument.rs similarity index 100% rename from src/test/ui/suggestions/restrict-type-argument.rs rename to tests/ui/suggestions/restrict-type-argument.rs diff --git a/src/test/ui/suggestions/restrict-type-argument.stderr b/tests/ui/suggestions/restrict-type-argument.stderr similarity index 100% rename from src/test/ui/suggestions/restrict-type-argument.stderr rename to tests/ui/suggestions/restrict-type-argument.stderr diff --git a/src/test/ui/suggestions/restrict-type-not-param.rs b/tests/ui/suggestions/restrict-type-not-param.rs similarity index 100% rename from src/test/ui/suggestions/restrict-type-not-param.rs rename to tests/ui/suggestions/restrict-type-not-param.rs diff --git a/src/test/ui/suggestions/restrict-type-not-param.stderr b/tests/ui/suggestions/restrict-type-not-param.stderr similarity index 100% rename from src/test/ui/suggestions/restrict-type-not-param.stderr rename to tests/ui/suggestions/restrict-type-not-param.stderr diff --git a/src/test/ui/suggestions/return-bindings-multi.rs b/tests/ui/suggestions/return-bindings-multi.rs similarity index 100% rename from src/test/ui/suggestions/return-bindings-multi.rs rename to tests/ui/suggestions/return-bindings-multi.rs diff --git a/src/test/ui/suggestions/return-bindings-multi.stderr b/tests/ui/suggestions/return-bindings-multi.stderr similarity index 100% rename from src/test/ui/suggestions/return-bindings-multi.stderr rename to tests/ui/suggestions/return-bindings-multi.stderr diff --git a/src/test/ui/suggestions/return-bindings.rs b/tests/ui/suggestions/return-bindings.rs similarity index 100% rename from src/test/ui/suggestions/return-bindings.rs rename to tests/ui/suggestions/return-bindings.rs diff --git a/src/test/ui/suggestions/return-bindings.stderr b/tests/ui/suggestions/return-bindings.stderr similarity index 100% rename from src/test/ui/suggestions/return-bindings.stderr rename to tests/ui/suggestions/return-bindings.stderr diff --git a/src/test/ui/suggestions/return-closures.rs b/tests/ui/suggestions/return-closures.rs similarity index 100% rename from src/test/ui/suggestions/return-closures.rs rename to tests/ui/suggestions/return-closures.rs diff --git a/src/test/ui/suggestions/return-closures.stderr b/tests/ui/suggestions/return-closures.stderr similarity index 100% rename from src/test/ui/suggestions/return-closures.stderr rename to tests/ui/suggestions/return-closures.stderr diff --git a/src/test/ui/suggestions/return-cycle-2.rs b/tests/ui/suggestions/return-cycle-2.rs similarity index 100% rename from src/test/ui/suggestions/return-cycle-2.rs rename to tests/ui/suggestions/return-cycle-2.rs diff --git a/src/test/ui/suggestions/return-cycle-2.stderr b/tests/ui/suggestions/return-cycle-2.stderr similarity index 100% rename from src/test/ui/suggestions/return-cycle-2.stderr rename to tests/ui/suggestions/return-cycle-2.stderr diff --git a/src/test/ui/suggestions/return-cycle.rs b/tests/ui/suggestions/return-cycle.rs similarity index 100% rename from src/test/ui/suggestions/return-cycle.rs rename to tests/ui/suggestions/return-cycle.rs diff --git a/src/test/ui/suggestions/return-cycle.stderr b/tests/ui/suggestions/return-cycle.stderr similarity index 100% rename from src/test/ui/suggestions/return-cycle.stderr rename to tests/ui/suggestions/return-cycle.stderr diff --git a/src/test/ui/suggestions/return-elided-lifetime.rs b/tests/ui/suggestions/return-elided-lifetime.rs similarity index 100% rename from src/test/ui/suggestions/return-elided-lifetime.rs rename to tests/ui/suggestions/return-elided-lifetime.rs diff --git a/src/test/ui/suggestions/return-elided-lifetime.stderr b/tests/ui/suggestions/return-elided-lifetime.stderr similarity index 100% rename from src/test/ui/suggestions/return-elided-lifetime.stderr rename to tests/ui/suggestions/return-elided-lifetime.stderr diff --git a/src/test/ui/suggestions/return-without-lifetime.rs b/tests/ui/suggestions/return-without-lifetime.rs similarity index 100% rename from src/test/ui/suggestions/return-without-lifetime.rs rename to tests/ui/suggestions/return-without-lifetime.rs diff --git a/src/test/ui/suggestions/return-without-lifetime.stderr b/tests/ui/suggestions/return-without-lifetime.stderr similarity index 100% rename from src/test/ui/suggestions/return-without-lifetime.stderr rename to tests/ui/suggestions/return-without-lifetime.stderr diff --git a/src/test/ui/suggestions/shadowed-lplace-method-2.rs b/tests/ui/suggestions/shadowed-lplace-method-2.rs similarity index 100% rename from src/test/ui/suggestions/shadowed-lplace-method-2.rs rename to tests/ui/suggestions/shadowed-lplace-method-2.rs diff --git a/src/test/ui/suggestions/shadowed-lplace-method-2.stderr b/tests/ui/suggestions/shadowed-lplace-method-2.stderr similarity index 100% rename from src/test/ui/suggestions/shadowed-lplace-method-2.stderr rename to tests/ui/suggestions/shadowed-lplace-method-2.stderr diff --git a/src/test/ui/suggestions/shadowed-lplace-method.fixed b/tests/ui/suggestions/shadowed-lplace-method.fixed similarity index 100% rename from src/test/ui/suggestions/shadowed-lplace-method.fixed rename to tests/ui/suggestions/shadowed-lplace-method.fixed diff --git a/src/test/ui/suggestions/shadowed-lplace-method.rs b/tests/ui/suggestions/shadowed-lplace-method.rs similarity index 100% rename from src/test/ui/suggestions/shadowed-lplace-method.rs rename to tests/ui/suggestions/shadowed-lplace-method.rs diff --git a/src/test/ui/suggestions/shadowed-lplace-method.stderr b/tests/ui/suggestions/shadowed-lplace-method.stderr similarity index 100% rename from src/test/ui/suggestions/shadowed-lplace-method.stderr rename to tests/ui/suggestions/shadowed-lplace-method.stderr diff --git a/src/test/ui/suggestions/slice-issue-87994.rs b/tests/ui/suggestions/slice-issue-87994.rs similarity index 100% rename from src/test/ui/suggestions/slice-issue-87994.rs rename to tests/ui/suggestions/slice-issue-87994.rs diff --git a/src/test/ui/suggestions/slice-issue-87994.stderr b/tests/ui/suggestions/slice-issue-87994.stderr similarity index 100% rename from src/test/ui/suggestions/slice-issue-87994.stderr rename to tests/ui/suggestions/slice-issue-87994.stderr diff --git a/src/test/ui/suggestions/struct-field-type-including-single-colon.rs b/tests/ui/suggestions/struct-field-type-including-single-colon.rs similarity index 100% rename from src/test/ui/suggestions/struct-field-type-including-single-colon.rs rename to tests/ui/suggestions/struct-field-type-including-single-colon.rs diff --git a/src/test/ui/suggestions/struct-field-type-including-single-colon.stderr b/tests/ui/suggestions/struct-field-type-including-single-colon.stderr similarity index 100% rename from src/test/ui/suggestions/struct-field-type-including-single-colon.stderr rename to tests/ui/suggestions/struct-field-type-including-single-colon.stderr diff --git a/src/test/ui/suggestions/struct-initializer-comma.fixed b/tests/ui/suggestions/struct-initializer-comma.fixed similarity index 100% rename from src/test/ui/suggestions/struct-initializer-comma.fixed rename to tests/ui/suggestions/struct-initializer-comma.fixed diff --git a/src/test/ui/suggestions/struct-initializer-comma.rs b/tests/ui/suggestions/struct-initializer-comma.rs similarity index 100% rename from src/test/ui/suggestions/struct-initializer-comma.rs rename to tests/ui/suggestions/struct-initializer-comma.rs diff --git a/src/test/ui/suggestions/struct-initializer-comma.stderr b/tests/ui/suggestions/struct-initializer-comma.stderr similarity index 100% rename from src/test/ui/suggestions/struct-initializer-comma.stderr rename to tests/ui/suggestions/struct-initializer-comma.stderr diff --git a/src/test/ui/suggestions/sugg-else-for-closure.fixed b/tests/ui/suggestions/sugg-else-for-closure.fixed similarity index 100% rename from src/test/ui/suggestions/sugg-else-for-closure.fixed rename to tests/ui/suggestions/sugg-else-for-closure.fixed diff --git a/src/test/ui/suggestions/sugg-else-for-closure.rs b/tests/ui/suggestions/sugg-else-for-closure.rs similarity index 100% rename from src/test/ui/suggestions/sugg-else-for-closure.rs rename to tests/ui/suggestions/sugg-else-for-closure.rs diff --git a/src/test/ui/suggestions/sugg-else-for-closure.stderr b/tests/ui/suggestions/sugg-else-for-closure.stderr similarity index 100% rename from src/test/ui/suggestions/sugg-else-for-closure.stderr rename to tests/ui/suggestions/sugg-else-for-closure.stderr diff --git a/src/test/ui/suggestions/sugg_with_positional_args_and_debug_fmt.rs b/tests/ui/suggestions/sugg_with_positional_args_and_debug_fmt.rs similarity index 100% rename from src/test/ui/suggestions/sugg_with_positional_args_and_debug_fmt.rs rename to tests/ui/suggestions/sugg_with_positional_args_and_debug_fmt.rs diff --git a/src/test/ui/suggestions/sugg_with_positional_args_and_debug_fmt.stderr b/tests/ui/suggestions/sugg_with_positional_args_and_debug_fmt.stderr similarity index 100% rename from src/test/ui/suggestions/sugg_with_positional_args_and_debug_fmt.stderr rename to tests/ui/suggestions/sugg_with_positional_args_and_debug_fmt.stderr diff --git a/src/test/ui/suggestions/suggest-add-self.rs b/tests/ui/suggestions/suggest-add-self.rs similarity index 100% rename from src/test/ui/suggestions/suggest-add-self.rs rename to tests/ui/suggestions/suggest-add-self.rs diff --git a/src/test/ui/suggestions/suggest-add-self.stderr b/tests/ui/suggestions/suggest-add-self.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-add-self.stderr rename to tests/ui/suggestions/suggest-add-self.stderr diff --git a/src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.fixed b/tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.fixed rename to tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.fixed diff --git a/src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.rs b/tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.rs similarity index 100% rename from src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.rs rename to tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.rs diff --git a/src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.stderr b/tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.stderr rename to tests/ui/suggestions/suggest-adding-reference-to-trait-assoc-item.stderr diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-deref.fixed b/tests/ui/suggestions/suggest-assoc-fn-call-deref.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-deref.fixed rename to tests/ui/suggestions/suggest-assoc-fn-call-deref.fixed diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-deref.rs b/tests/ui/suggestions/suggest-assoc-fn-call-deref.rs similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-deref.rs rename to tests/ui/suggestions/suggest-assoc-fn-call-deref.rs diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-deref.stderr b/tests/ui/suggestions/suggest-assoc-fn-call-deref.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-deref.stderr rename to tests/ui/suggestions/suggest-assoc-fn-call-deref.stderr diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.rs b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.rs similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.rs rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.rs diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.stderr b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.stderr rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-placeholder.stderr diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.rs b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.rs similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.rs rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.rs diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.stderr b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.stderr rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish-through-deref.stderr diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.fixed b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.fixed rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.fixed diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.rs b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.rs similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.rs rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.rs diff --git a/src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.stderr b/tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-assoc-fn-call-with-turbofish.stderr rename to tests/ui/suggestions/suggest-assoc-fn-call-with-turbofish.stderr diff --git a/src/test/ui/suggestions/suggest-blanket-impl-local-trait.rs b/tests/ui/suggestions/suggest-blanket-impl-local-trait.rs similarity index 100% rename from src/test/ui/suggestions/suggest-blanket-impl-local-trait.rs rename to tests/ui/suggestions/suggest-blanket-impl-local-trait.rs diff --git a/src/test/ui/suggestions/suggest-blanket-impl-local-trait.stderr b/tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-blanket-impl-local-trait.stderr rename to tests/ui/suggestions/suggest-blanket-impl-local-trait.stderr diff --git a/src/test/ui/suggestions/suggest-borrow-to-dyn-object.rs b/tests/ui/suggestions/suggest-borrow-to-dyn-object.rs similarity index 100% rename from src/test/ui/suggestions/suggest-borrow-to-dyn-object.rs rename to tests/ui/suggestions/suggest-borrow-to-dyn-object.rs diff --git a/src/test/ui/suggestions/suggest-borrow-to-dyn-object.stderr b/tests/ui/suggestions/suggest-borrow-to-dyn-object.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-borrow-to-dyn-object.stderr rename to tests/ui/suggestions/suggest-borrow-to-dyn-object.stderr diff --git a/src/test/ui/suggestions/suggest-box.fixed b/tests/ui/suggestions/suggest-box.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-box.fixed rename to tests/ui/suggestions/suggest-box.fixed diff --git a/src/test/ui/suggestions/suggest-box.rs b/tests/ui/suggestions/suggest-box.rs similarity index 100% rename from src/test/ui/suggestions/suggest-box.rs rename to tests/ui/suggestions/suggest-box.rs diff --git a/src/test/ui/suggestions/suggest-box.stderr b/tests/ui/suggestions/suggest-box.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-box.stderr rename to tests/ui/suggestions/suggest-box.stderr diff --git a/src/test/ui/suggestions/suggest-change-mut.rs b/tests/ui/suggestions/suggest-change-mut.rs similarity index 100% rename from src/test/ui/suggestions/suggest-change-mut.rs rename to tests/ui/suggestions/suggest-change-mut.rs diff --git a/src/test/ui/suggestions/suggest-change-mut.stderr b/tests/ui/suggestions/suggest-change-mut.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-change-mut.stderr rename to tests/ui/suggestions/suggest-change-mut.stderr diff --git a/src/test/ui/suggestions/suggest-closure-return-type-1.rs b/tests/ui/suggestions/suggest-closure-return-type-1.rs similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-1.rs rename to tests/ui/suggestions/suggest-closure-return-type-1.rs diff --git a/src/test/ui/suggestions/suggest-closure-return-type-1.stderr b/tests/ui/suggestions/suggest-closure-return-type-1.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-1.stderr rename to tests/ui/suggestions/suggest-closure-return-type-1.stderr diff --git a/src/test/ui/suggestions/suggest-closure-return-type-2.rs b/tests/ui/suggestions/suggest-closure-return-type-2.rs similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-2.rs rename to tests/ui/suggestions/suggest-closure-return-type-2.rs diff --git a/src/test/ui/suggestions/suggest-closure-return-type-2.stderr b/tests/ui/suggestions/suggest-closure-return-type-2.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-2.stderr rename to tests/ui/suggestions/suggest-closure-return-type-2.stderr diff --git a/src/test/ui/suggestions/suggest-closure-return-type-3.rs b/tests/ui/suggestions/suggest-closure-return-type-3.rs similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-3.rs rename to tests/ui/suggestions/suggest-closure-return-type-3.rs diff --git a/src/test/ui/suggestions/suggest-closure-return-type-3.stderr b/tests/ui/suggestions/suggest-closure-return-type-3.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-closure-return-type-3.stderr rename to tests/ui/suggestions/suggest-closure-return-type-3.stderr diff --git a/src/test/ui/suggestions/suggest-dereferencing-index.fixed b/tests/ui/suggestions/suggest-dereferencing-index.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-dereferencing-index.fixed rename to tests/ui/suggestions/suggest-dereferencing-index.fixed diff --git a/src/test/ui/suggestions/suggest-dereferencing-index.rs b/tests/ui/suggestions/suggest-dereferencing-index.rs similarity index 100% rename from src/test/ui/suggestions/suggest-dereferencing-index.rs rename to tests/ui/suggestions/suggest-dereferencing-index.rs diff --git a/src/test/ui/suggestions/suggest-dereferencing-index.stderr b/tests/ui/suggestions/suggest-dereferencing-index.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-dereferencing-index.stderr rename to tests/ui/suggestions/suggest-dereferencing-index.stderr diff --git a/src/test/ui/suggestions/suggest-full-enum-variant-for-local-module.rs b/tests/ui/suggestions/suggest-full-enum-variant-for-local-module.rs similarity index 100% rename from src/test/ui/suggestions/suggest-full-enum-variant-for-local-module.rs rename to tests/ui/suggestions/suggest-full-enum-variant-for-local-module.rs diff --git a/src/test/ui/suggestions/suggest-full-enum-variant-for-local-module.stderr b/tests/ui/suggestions/suggest-full-enum-variant-for-local-module.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-full-enum-variant-for-local-module.stderr rename to tests/ui/suggestions/suggest-full-enum-variant-for-local-module.stderr diff --git a/src/test/ui/suggestions/suggest-imm-mut-trait-implementations.rs b/tests/ui/suggestions/suggest-imm-mut-trait-implementations.rs similarity index 100% rename from src/test/ui/suggestions/suggest-imm-mut-trait-implementations.rs rename to tests/ui/suggestions/suggest-imm-mut-trait-implementations.rs diff --git a/src/test/ui/suggestions/suggest-imm-mut-trait-implementations.stderr b/tests/ui/suggestions/suggest-imm-mut-trait-implementations.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-imm-mut-trait-implementations.stderr rename to tests/ui/suggestions/suggest-imm-mut-trait-implementations.stderr diff --git a/src/test/ui/suggestions/suggest-impl-trait-lifetime.fixed b/tests/ui/suggestions/suggest-impl-trait-lifetime.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-impl-trait-lifetime.fixed rename to tests/ui/suggestions/suggest-impl-trait-lifetime.fixed diff --git a/src/test/ui/suggestions/suggest-impl-trait-lifetime.rs b/tests/ui/suggestions/suggest-impl-trait-lifetime.rs similarity index 100% rename from src/test/ui/suggestions/suggest-impl-trait-lifetime.rs rename to tests/ui/suggestions/suggest-impl-trait-lifetime.rs diff --git a/src/test/ui/suggestions/suggest-impl-trait-lifetime.stderr b/tests/ui/suggestions/suggest-impl-trait-lifetime.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-impl-trait-lifetime.stderr rename to tests/ui/suggestions/suggest-impl-trait-lifetime.stderr diff --git a/src/test/ui/suggestions/suggest-labels.rs b/tests/ui/suggestions/suggest-labels.rs similarity index 100% rename from src/test/ui/suggestions/suggest-labels.rs rename to tests/ui/suggestions/suggest-labels.rs diff --git a/src/test/ui/suggestions/suggest-labels.stderr b/tests/ui/suggestions/suggest-labels.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-labels.stderr rename to tests/ui/suggestions/suggest-labels.stderr diff --git a/src/test/ui/suggestions/suggest-let-for-assignment.fixed b/tests/ui/suggestions/suggest-let-for-assignment.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-let-for-assignment.fixed rename to tests/ui/suggestions/suggest-let-for-assignment.fixed diff --git a/src/test/ui/suggestions/suggest-let-for-assignment.rs b/tests/ui/suggestions/suggest-let-for-assignment.rs similarity index 100% rename from src/test/ui/suggestions/suggest-let-for-assignment.rs rename to tests/ui/suggestions/suggest-let-for-assignment.rs diff --git a/src/test/ui/suggestions/suggest-let-for-assignment.stderr b/tests/ui/suggestions/suggest-let-for-assignment.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-let-for-assignment.stderr rename to tests/ui/suggestions/suggest-let-for-assignment.stderr diff --git a/src/test/ui/suggestions/suggest-methods.rs b/tests/ui/suggestions/suggest-methods.rs similarity index 100% rename from src/test/ui/suggestions/suggest-methods.rs rename to tests/ui/suggestions/suggest-methods.rs diff --git a/src/test/ui/suggestions/suggest-methods.stderr b/tests/ui/suggestions/suggest-methods.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-methods.stderr rename to tests/ui/suggestions/suggest-methods.stderr diff --git a/src/test/ui/suggestions/suggest-move-lifetimes.rs b/tests/ui/suggestions/suggest-move-lifetimes.rs similarity index 100% rename from src/test/ui/suggestions/suggest-move-lifetimes.rs rename to tests/ui/suggestions/suggest-move-lifetimes.rs diff --git a/src/test/ui/suggestions/suggest-move-lifetimes.stderr b/tests/ui/suggestions/suggest-move-lifetimes.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-move-lifetimes.stderr rename to tests/ui/suggestions/suggest-move-lifetimes.stderr diff --git a/src/test/ui/suggestions/suggest-move-types.rs b/tests/ui/suggestions/suggest-move-types.rs similarity index 100% rename from src/test/ui/suggestions/suggest-move-types.rs rename to tests/ui/suggestions/suggest-move-types.rs diff --git a/src/test/ui/suggestions/suggest-move-types.stderr b/tests/ui/suggestions/suggest-move-types.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-move-types.stderr rename to tests/ui/suggestions/suggest-move-types.stderr diff --git a/src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.fixed b/tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.fixed rename to tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.fixed diff --git a/src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.rs b/tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.rs similarity index 100% rename from src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.rs rename to tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.rs diff --git a/src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.stderr b/tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-mut-method-for-loop-hashmap.stderr rename to tests/ui/suggestions/suggest-mut-method-for-loop-hashmap.stderr diff --git a/src/test/ui/suggestions/suggest-mut-method-for-loop.rs b/tests/ui/suggestions/suggest-mut-method-for-loop.rs similarity index 100% rename from src/test/ui/suggestions/suggest-mut-method-for-loop.rs rename to tests/ui/suggestions/suggest-mut-method-for-loop.rs diff --git a/src/test/ui/suggestions/suggest-mut-method-for-loop.stderr b/tests/ui/suggestions/suggest-mut-method-for-loop.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-mut-method-for-loop.stderr rename to tests/ui/suggestions/suggest-mut-method-for-loop.stderr diff --git a/src/test/ui/suggestions/suggest-on-bare-closure-call.rs b/tests/ui/suggestions/suggest-on-bare-closure-call.rs similarity index 100% rename from src/test/ui/suggestions/suggest-on-bare-closure-call.rs rename to tests/ui/suggestions/suggest-on-bare-closure-call.rs diff --git a/src/test/ui/suggestions/suggest-on-bare-closure-call.stderr b/tests/ui/suggestions/suggest-on-bare-closure-call.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-on-bare-closure-call.stderr rename to tests/ui/suggestions/suggest-on-bare-closure-call.stderr diff --git a/src/test/ui/suggestions/suggest-ref-macro.rs b/tests/ui/suggestions/suggest-ref-macro.rs similarity index 100% rename from src/test/ui/suggestions/suggest-ref-macro.rs rename to tests/ui/suggestions/suggest-ref-macro.rs diff --git a/src/test/ui/suggestions/suggest-ref-macro.stderr b/tests/ui/suggestions/suggest-ref-macro.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-ref-macro.stderr rename to tests/ui/suggestions/suggest-ref-macro.stderr diff --git a/src/test/ui/suggestions/suggest-ref-mut.rs b/tests/ui/suggestions/suggest-ref-mut.rs similarity index 100% rename from src/test/ui/suggestions/suggest-ref-mut.rs rename to tests/ui/suggestions/suggest-ref-mut.rs diff --git a/src/test/ui/suggestions/suggest-ref-mut.stderr b/tests/ui/suggestions/suggest-ref-mut.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-ref-mut.stderr rename to tests/ui/suggestions/suggest-ref-mut.stderr diff --git a/src/test/ui/suggestions/suggest-remove-refs-1.fixed b/tests/ui/suggestions/suggest-remove-refs-1.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-1.fixed rename to tests/ui/suggestions/suggest-remove-refs-1.fixed diff --git a/src/test/ui/suggestions/suggest-remove-refs-1.rs b/tests/ui/suggestions/suggest-remove-refs-1.rs similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-1.rs rename to tests/ui/suggestions/suggest-remove-refs-1.rs diff --git a/src/test/ui/suggestions/suggest-remove-refs-1.stderr b/tests/ui/suggestions/suggest-remove-refs-1.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-1.stderr rename to tests/ui/suggestions/suggest-remove-refs-1.stderr diff --git a/src/test/ui/suggestions/suggest-remove-refs-2.fixed b/tests/ui/suggestions/suggest-remove-refs-2.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-2.fixed rename to tests/ui/suggestions/suggest-remove-refs-2.fixed diff --git a/src/test/ui/suggestions/suggest-remove-refs-2.rs b/tests/ui/suggestions/suggest-remove-refs-2.rs similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-2.rs rename to tests/ui/suggestions/suggest-remove-refs-2.rs diff --git a/src/test/ui/suggestions/suggest-remove-refs-2.stderr b/tests/ui/suggestions/suggest-remove-refs-2.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-2.stderr rename to tests/ui/suggestions/suggest-remove-refs-2.stderr diff --git a/src/test/ui/suggestions/suggest-remove-refs-3.fixed b/tests/ui/suggestions/suggest-remove-refs-3.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-3.fixed rename to tests/ui/suggestions/suggest-remove-refs-3.fixed diff --git a/src/test/ui/suggestions/suggest-remove-refs-3.rs b/tests/ui/suggestions/suggest-remove-refs-3.rs similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-3.rs rename to tests/ui/suggestions/suggest-remove-refs-3.rs diff --git a/src/test/ui/suggestions/suggest-remove-refs-3.stderr b/tests/ui/suggestions/suggest-remove-refs-3.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-remove-refs-3.stderr rename to tests/ui/suggestions/suggest-remove-refs-3.stderr diff --git a/src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.fixed b/tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.fixed rename to tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.fixed diff --git a/src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.rs b/tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.rs similarity index 100% rename from src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.rs rename to tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.rs diff --git a/src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.stderr b/tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.stderr rename to tests/ui/suggestions/suggest-semicolon-for-fn-in-extern-block.stderr diff --git a/src/test/ui/suggestions/suggest-split-at-mut.rs b/tests/ui/suggestions/suggest-split-at-mut.rs similarity index 100% rename from src/test/ui/suggestions/suggest-split-at-mut.rs rename to tests/ui/suggestions/suggest-split-at-mut.rs diff --git a/src/test/ui/suggestions/suggest-split-at-mut.stderr b/tests/ui/suggestions/suggest-split-at-mut.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-split-at-mut.stderr rename to tests/ui/suggestions/suggest-split-at-mut.stderr diff --git a/src/test/ui/suggestions/suggest-std-when-using-type.fixed b/tests/ui/suggestions/suggest-std-when-using-type.fixed similarity index 100% rename from src/test/ui/suggestions/suggest-std-when-using-type.fixed rename to tests/ui/suggestions/suggest-std-when-using-type.fixed diff --git a/src/test/ui/suggestions/suggest-std-when-using-type.rs b/tests/ui/suggestions/suggest-std-when-using-type.rs similarity index 100% rename from src/test/ui/suggestions/suggest-std-when-using-type.rs rename to tests/ui/suggestions/suggest-std-when-using-type.rs diff --git a/src/test/ui/suggestions/suggest-std-when-using-type.stderr b/tests/ui/suggestions/suggest-std-when-using-type.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-std-when-using-type.stderr rename to tests/ui/suggestions/suggest-std-when-using-type.stderr diff --git a/src/test/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.rs b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.rs similarity index 100% rename from src/test/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.rs rename to tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.rs diff --git a/src/test/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr rename to tests/ui/suggestions/suggest-swapping-self-ty-and-trait-edition-2021.stderr diff --git a/src/test/ui/suggestions/suggest-swapping-self-ty-and-trait.rs b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.rs similarity index 100% rename from src/test/ui/suggestions/suggest-swapping-self-ty-and-trait.rs rename to tests/ui/suggestions/suggest-swapping-self-ty-and-trait.rs diff --git a/src/test/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr b/tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr rename to tests/ui/suggestions/suggest-swapping-self-ty-and-trait.stderr diff --git a/src/test/ui/suggestions/suggest-trait-items.rs b/tests/ui/suggestions/suggest-trait-items.rs similarity index 100% rename from src/test/ui/suggestions/suggest-trait-items.rs rename to tests/ui/suggestions/suggest-trait-items.rs diff --git a/src/test/ui/suggestions/suggest-trait-items.stderr b/tests/ui/suggestions/suggest-trait-items.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-trait-items.stderr rename to tests/ui/suggestions/suggest-trait-items.stderr diff --git a/src/test/ui/suggestions/suggest-tryinto-edition-change.rs b/tests/ui/suggestions/suggest-tryinto-edition-change.rs similarity index 100% rename from src/test/ui/suggestions/suggest-tryinto-edition-change.rs rename to tests/ui/suggestions/suggest-tryinto-edition-change.rs diff --git a/src/test/ui/suggestions/suggest-tryinto-edition-change.stderr b/tests/ui/suggestions/suggest-tryinto-edition-change.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-tryinto-edition-change.stderr rename to tests/ui/suggestions/suggest-tryinto-edition-change.stderr diff --git a/src/test/ui/suggestions/suggest-using-chars.rs b/tests/ui/suggestions/suggest-using-chars.rs similarity index 100% rename from src/test/ui/suggestions/suggest-using-chars.rs rename to tests/ui/suggestions/suggest-using-chars.rs diff --git a/src/test/ui/suggestions/suggest-using-chars.stderr b/tests/ui/suggestions/suggest-using-chars.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-using-chars.stderr rename to tests/ui/suggestions/suggest-using-chars.stderr diff --git a/src/test/ui/suggestions/suggest-variants.rs b/tests/ui/suggestions/suggest-variants.rs similarity index 100% rename from src/test/ui/suggestions/suggest-variants.rs rename to tests/ui/suggestions/suggest-variants.rs diff --git a/src/test/ui/suggestions/suggest-variants.stderr b/tests/ui/suggestions/suggest-variants.stderr similarity index 100% rename from src/test/ui/suggestions/suggest-variants.stderr rename to tests/ui/suggestions/suggest-variants.stderr diff --git a/src/test/ui/suggestions/suggest_print_over_printf.rs b/tests/ui/suggestions/suggest_print_over_printf.rs similarity index 100% rename from src/test/ui/suggestions/suggest_print_over_printf.rs rename to tests/ui/suggestions/suggest_print_over_printf.rs diff --git a/src/test/ui/suggestions/suggest_print_over_printf.stderr b/tests/ui/suggestions/suggest_print_over_printf.stderr similarity index 100% rename from src/test/ui/suggestions/suggest_print_over_printf.stderr rename to tests/ui/suggestions/suggest_print_over_printf.stderr diff --git a/src/test/ui/suggestions/too-many-field-suggestions.rs b/tests/ui/suggestions/too-many-field-suggestions.rs similarity index 100% rename from src/test/ui/suggestions/too-many-field-suggestions.rs rename to tests/ui/suggestions/too-many-field-suggestions.rs diff --git a/src/test/ui/suggestions/too-many-field-suggestions.stderr b/tests/ui/suggestions/too-many-field-suggestions.stderr similarity index 100% rename from src/test/ui/suggestions/too-many-field-suggestions.stderr rename to tests/ui/suggestions/too-many-field-suggestions.stderr diff --git a/src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.fixed b/tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.fixed similarity index 100% rename from src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.fixed rename to tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.fixed diff --git a/src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs b/tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs similarity index 100% rename from src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs rename to tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs diff --git a/src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.stderr b/tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.stderr similarity index 100% rename from src/test/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.stderr rename to tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.stderr diff --git a/src/test/ui/suggestions/trait-with-missing-associated-type-restriction.rs b/tests/ui/suggestions/trait-with-missing-associated-type-restriction.rs similarity index 100% rename from src/test/ui/suggestions/trait-with-missing-associated-type-restriction.rs rename to tests/ui/suggestions/trait-with-missing-associated-type-restriction.rs diff --git a/src/test/ui/suggestions/trait-with-missing-associated-type-restriction.stderr b/tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr similarity index 100% rename from src/test/ui/suggestions/trait-with-missing-associated-type-restriction.stderr rename to tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr diff --git a/src/test/ui/suggestions/try-operator-dont-suggest-semicolon.rs b/tests/ui/suggestions/try-operator-dont-suggest-semicolon.rs similarity index 100% rename from src/test/ui/suggestions/try-operator-dont-suggest-semicolon.rs rename to tests/ui/suggestions/try-operator-dont-suggest-semicolon.rs diff --git a/src/test/ui/suggestions/try-operator-dont-suggest-semicolon.stderr b/tests/ui/suggestions/try-operator-dont-suggest-semicolon.stderr similarity index 100% rename from src/test/ui/suggestions/try-operator-dont-suggest-semicolon.stderr rename to tests/ui/suggestions/try-operator-dont-suggest-semicolon.stderr diff --git a/src/test/ui/suggestions/try-removing-the-field.rs b/tests/ui/suggestions/try-removing-the-field.rs similarity index 100% rename from src/test/ui/suggestions/try-removing-the-field.rs rename to tests/ui/suggestions/try-removing-the-field.rs diff --git a/src/test/ui/suggestions/try-removing-the-field.stderr b/tests/ui/suggestions/try-removing-the-field.stderr similarity index 100% rename from src/test/ui/suggestions/try-removing-the-field.stderr rename to tests/ui/suggestions/try-removing-the-field.stderr diff --git a/src/test/ui/suggestions/type-ascription-and-other-error.rs b/tests/ui/suggestions/type-ascription-and-other-error.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-and-other-error.rs rename to tests/ui/suggestions/type-ascription-and-other-error.rs diff --git a/src/test/ui/suggestions/type-ascription-and-other-error.stderr b/tests/ui/suggestions/type-ascription-and-other-error.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-and-other-error.stderr rename to tests/ui/suggestions/type-ascription-and-other-error.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-let.rs b/tests/ui/suggestions/type-ascription-instead-of-let.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-let.rs rename to tests/ui/suggestions/type-ascription-instead-of-let.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-let.stderr b/tests/ui/suggestions/type-ascription-instead-of-let.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-let.stderr rename to tests/ui/suggestions/type-ascription-instead-of-let.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-method.fixed b/tests/ui/suggestions/type-ascription-instead-of-method.fixed similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-method.fixed rename to tests/ui/suggestions/type-ascription-instead-of-method.fixed diff --git a/src/test/ui/suggestions/type-ascription-instead-of-method.rs b/tests/ui/suggestions/type-ascription-instead-of-method.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-method.rs rename to tests/ui/suggestions/type-ascription-instead-of-method.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-method.stderr b/tests/ui/suggestions/type-ascription-instead-of-method.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-method.stderr rename to tests/ui/suggestions/type-ascription-instead-of-method.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path-2.fixed b/tests/ui/suggestions/type-ascription-instead-of-path-2.fixed similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path-2.fixed rename to tests/ui/suggestions/type-ascription-instead-of-path-2.fixed diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path-2.rs b/tests/ui/suggestions/type-ascription-instead-of-path-2.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path-2.rs rename to tests/ui/suggestions/type-ascription-instead-of-path-2.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path-2.stderr b/tests/ui/suggestions/type-ascription-instead-of-path-2.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path-2.stderr rename to tests/ui/suggestions/type-ascription-instead-of-path-2.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path-in-type.rs b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path-in-type.rs rename to tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path-in-type.stderr b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path-in-type.stderr rename to tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path.rs b/tests/ui/suggestions/type-ascription-instead-of-path.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path.rs rename to tests/ui/suggestions/type-ascription-instead-of-path.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-path.stderr b/tests/ui/suggestions/type-ascription-instead-of-path.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-path.stderr rename to tests/ui/suggestions/type-ascription-instead-of-path.stderr diff --git a/src/test/ui/suggestions/type-ascription-instead-of-variant.fixed b/tests/ui/suggestions/type-ascription-instead-of-variant.fixed similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-variant.fixed rename to tests/ui/suggestions/type-ascription-instead-of-variant.fixed diff --git a/src/test/ui/suggestions/type-ascription-instead-of-variant.rs b/tests/ui/suggestions/type-ascription-instead-of-variant.rs similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-variant.rs rename to tests/ui/suggestions/type-ascription-instead-of-variant.rs diff --git a/src/test/ui/suggestions/type-ascription-instead-of-variant.stderr b/tests/ui/suggestions/type-ascription-instead-of-variant.stderr similarity index 100% rename from src/test/ui/suggestions/type-ascription-instead-of-variant.stderr rename to tests/ui/suggestions/type-ascription-instead-of-variant.stderr diff --git a/src/test/ui/suggestions/type-mismatch-struct-field-shorthand-2.rs b/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.rs similarity index 100% rename from src/test/ui/suggestions/type-mismatch-struct-field-shorthand-2.rs rename to tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.rs diff --git a/src/test/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr b/tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr similarity index 100% rename from src/test/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr rename to tests/ui/suggestions/type-mismatch-struct-field-shorthand-2.stderr diff --git a/src/test/ui/suggestions/type-mismatch-struct-field-shorthand.fixed b/tests/ui/suggestions/type-mismatch-struct-field-shorthand.fixed similarity index 100% rename from src/test/ui/suggestions/type-mismatch-struct-field-shorthand.fixed rename to tests/ui/suggestions/type-mismatch-struct-field-shorthand.fixed diff --git a/src/test/ui/suggestions/type-mismatch-struct-field-shorthand.rs b/tests/ui/suggestions/type-mismatch-struct-field-shorthand.rs similarity index 100% rename from src/test/ui/suggestions/type-mismatch-struct-field-shorthand.rs rename to tests/ui/suggestions/type-mismatch-struct-field-shorthand.rs diff --git a/src/test/ui/suggestions/type-mismatch-struct-field-shorthand.stderr b/tests/ui/suggestions/type-mismatch-struct-field-shorthand.stderr similarity index 100% rename from src/test/ui/suggestions/type-mismatch-struct-field-shorthand.stderr rename to tests/ui/suggestions/type-mismatch-struct-field-shorthand.stderr diff --git a/src/test/ui/suggestions/type-not-found-in-adt-field.rs b/tests/ui/suggestions/type-not-found-in-adt-field.rs similarity index 100% rename from src/test/ui/suggestions/type-not-found-in-adt-field.rs rename to tests/ui/suggestions/type-not-found-in-adt-field.rs diff --git a/src/test/ui/suggestions/type-not-found-in-adt-field.stderr b/tests/ui/suggestions/type-not-found-in-adt-field.stderr similarity index 100% rename from src/test/ui/suggestions/type-not-found-in-adt-field.stderr rename to tests/ui/suggestions/type-not-found-in-adt-field.stderr diff --git a/src/test/ui/suggestions/undeclared-module-alloc.rs b/tests/ui/suggestions/undeclared-module-alloc.rs similarity index 100% rename from src/test/ui/suggestions/undeclared-module-alloc.rs rename to tests/ui/suggestions/undeclared-module-alloc.rs diff --git a/src/test/ui/suggestions/undeclared-module-alloc.stderr b/tests/ui/suggestions/undeclared-module-alloc.stderr similarity index 100% rename from src/test/ui/suggestions/undeclared-module-alloc.stderr rename to tests/ui/suggestions/undeclared-module-alloc.stderr diff --git a/src/test/ui/suggestions/unnamable-types.rs b/tests/ui/suggestions/unnamable-types.rs similarity index 100% rename from src/test/ui/suggestions/unnamable-types.rs rename to tests/ui/suggestions/unnamable-types.rs diff --git a/src/test/ui/suggestions/unnamable-types.stderr b/tests/ui/suggestions/unnamable-types.stderr similarity index 100% rename from src/test/ui/suggestions/unnamable-types.stderr rename to tests/ui/suggestions/unnamable-types.stderr diff --git a/src/test/ui/suggestions/unnecessary_dot_for_floating_point_literal.rs b/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.rs similarity index 100% rename from src/test/ui/suggestions/unnecessary_dot_for_floating_point_literal.rs rename to tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.rs diff --git a/src/test/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr b/tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr similarity index 100% rename from src/test/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr rename to tests/ui/suggestions/unnecessary_dot_for_floating_point_literal.stderr diff --git a/src/test/ui/suggestions/unsized-function-parameter.fixed b/tests/ui/suggestions/unsized-function-parameter.fixed similarity index 100% rename from src/test/ui/suggestions/unsized-function-parameter.fixed rename to tests/ui/suggestions/unsized-function-parameter.fixed diff --git a/src/test/ui/suggestions/unsized-function-parameter.rs b/tests/ui/suggestions/unsized-function-parameter.rs similarity index 100% rename from src/test/ui/suggestions/unsized-function-parameter.rs rename to tests/ui/suggestions/unsized-function-parameter.rs diff --git a/src/test/ui/suggestions/unsized-function-parameter.stderr b/tests/ui/suggestions/unsized-function-parameter.stderr similarity index 100% rename from src/test/ui/suggestions/unsized-function-parameter.stderr rename to tests/ui/suggestions/unsized-function-parameter.stderr diff --git a/src/test/ui/suggestions/unused-closure-argument.rs b/tests/ui/suggestions/unused-closure-argument.rs similarity index 100% rename from src/test/ui/suggestions/unused-closure-argument.rs rename to tests/ui/suggestions/unused-closure-argument.rs diff --git a/src/test/ui/suggestions/unused-closure-argument.stderr b/tests/ui/suggestions/unused-closure-argument.stderr similarity index 100% rename from src/test/ui/suggestions/unused-closure-argument.stderr rename to tests/ui/suggestions/unused-closure-argument.stderr diff --git a/src/test/ui/suggestions/use-placement-resolve.fixed b/tests/ui/suggestions/use-placement-resolve.fixed similarity index 100% rename from src/test/ui/suggestions/use-placement-resolve.fixed rename to tests/ui/suggestions/use-placement-resolve.fixed diff --git a/src/test/ui/suggestions/use-placement-resolve.rs b/tests/ui/suggestions/use-placement-resolve.rs similarity index 100% rename from src/test/ui/suggestions/use-placement-resolve.rs rename to tests/ui/suggestions/use-placement-resolve.rs diff --git a/src/test/ui/suggestions/use-placement-resolve.stderr b/tests/ui/suggestions/use-placement-resolve.stderr similarity index 100% rename from src/test/ui/suggestions/use-placement-resolve.stderr rename to tests/ui/suggestions/use-placement-resolve.stderr diff --git a/src/test/ui/suggestions/use-placement-typeck.fixed b/tests/ui/suggestions/use-placement-typeck.fixed similarity index 100% rename from src/test/ui/suggestions/use-placement-typeck.fixed rename to tests/ui/suggestions/use-placement-typeck.fixed diff --git a/src/test/ui/suggestions/use-placement-typeck.rs b/tests/ui/suggestions/use-placement-typeck.rs similarity index 100% rename from src/test/ui/suggestions/use-placement-typeck.rs rename to tests/ui/suggestions/use-placement-typeck.rs diff --git a/src/test/ui/suggestions/use-placement-typeck.stderr b/tests/ui/suggestions/use-placement-typeck.stderr similarity index 100% rename from src/test/ui/suggestions/use-placement-typeck.stderr rename to tests/ui/suggestions/use-placement-typeck.stderr diff --git a/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.rs b/tests/ui/suggestions/use-type-argument-instead-of-assoc-type.rs similarity index 100% rename from src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.rs rename to tests/ui/suggestions/use-type-argument-instead-of-assoc-type.rs diff --git a/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr b/tests/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr similarity index 100% rename from src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr rename to tests/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr diff --git a/src/test/ui/suggestions/while-let-typo.rs b/tests/ui/suggestions/while-let-typo.rs similarity index 100% rename from src/test/ui/suggestions/while-let-typo.rs rename to tests/ui/suggestions/while-let-typo.rs diff --git a/src/test/ui/suggestions/while-let-typo.stderr b/tests/ui/suggestions/while-let-typo.stderr similarity index 100% rename from src/test/ui/suggestions/while-let-typo.stderr rename to tests/ui/suggestions/while-let-typo.stderr diff --git a/src/test/ui/super-at-top-level.rs b/tests/ui/super-at-top-level.rs similarity index 100% rename from src/test/ui/super-at-top-level.rs rename to tests/ui/super-at-top-level.rs diff --git a/src/test/ui/super-at-top-level.stderr b/tests/ui/super-at-top-level.stderr similarity index 100% rename from src/test/ui/super-at-top-level.stderr rename to tests/ui/super-at-top-level.stderr diff --git a/src/test/ui/super-fast-paren-parsing.rs b/tests/ui/super-fast-paren-parsing.rs similarity index 100% rename from src/test/ui/super-fast-paren-parsing.rs rename to tests/ui/super-fast-paren-parsing.rs diff --git a/src/test/ui/super.rs b/tests/ui/super.rs similarity index 100% rename from src/test/ui/super.rs rename to tests/ui/super.rs diff --git a/src/test/ui/suppressed-error.rs b/tests/ui/suppressed-error.rs similarity index 100% rename from src/test/ui/suppressed-error.rs rename to tests/ui/suppressed-error.rs diff --git a/src/test/ui/suppressed-error.stderr b/tests/ui/suppressed-error.stderr similarity index 100% rename from src/test/ui/suppressed-error.stderr rename to tests/ui/suppressed-error.stderr diff --git a/src/test/ui/svh-add-nothing.rs b/tests/ui/svh-add-nothing.rs similarity index 100% rename from src/test/ui/svh-add-nothing.rs rename to tests/ui/svh-add-nothing.rs diff --git a/src/test/ui/svh/auxiliary/changing-crates-a1.rs b/tests/ui/svh/auxiliary/changing-crates-a1.rs similarity index 100% rename from src/test/ui/svh/auxiliary/changing-crates-a1.rs rename to tests/ui/svh/auxiliary/changing-crates-a1.rs diff --git a/src/test/ui/svh/auxiliary/changing-crates-a2.rs b/tests/ui/svh/auxiliary/changing-crates-a2.rs similarity index 100% rename from src/test/ui/svh/auxiliary/changing-crates-a2.rs rename to tests/ui/svh/auxiliary/changing-crates-a2.rs diff --git a/src/test/ui/svh/auxiliary/changing-crates-b.rs b/tests/ui/svh/auxiliary/changing-crates-b.rs similarity index 100% rename from src/test/ui/svh/auxiliary/changing-crates-b.rs rename to tests/ui/svh/auxiliary/changing-crates-b.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-base.rs b/tests/ui/svh/auxiliary/svh-a-base.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-base.rs rename to tests/ui/svh/auxiliary/svh-a-base.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-lit.rs b/tests/ui/svh/auxiliary/svh-a-change-lit.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-lit.rs rename to tests/ui/svh/auxiliary/svh-a-change-lit.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs b/tests/ui/svh/auxiliary/svh-a-change-significant-cfg.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs rename to tests/ui/svh/auxiliary/svh-a-change-significant-cfg.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs b/tests/ui/svh/auxiliary/svh-a-change-trait-bound.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs rename to tests/ui/svh/auxiliary/svh-a-change-trait-bound.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs b/tests/ui/svh/auxiliary/svh-a-change-type-arg.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs rename to tests/ui/svh/auxiliary/svh-a-change-type-arg.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs b/tests/ui/svh/auxiliary/svh-a-change-type-ret.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs rename to tests/ui/svh/auxiliary/svh-a-change-type-ret.rs diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-static.rs b/tests/ui/svh/auxiliary/svh-a-change-type-static.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-a-change-type-static.rs rename to tests/ui/svh/auxiliary/svh-a-change-type-static.rs diff --git a/src/test/ui/svh/auxiliary/svh-b.rs b/tests/ui/svh/auxiliary/svh-b.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-b.rs rename to tests/ui/svh/auxiliary/svh-b.rs diff --git a/src/test/ui/svh/auxiliary/svh-uta-base.rs b/tests/ui/svh/auxiliary/svh-uta-base.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-uta-base.rs rename to tests/ui/svh/auxiliary/svh-uta-base.rs diff --git a/src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs b/tests/ui/svh/auxiliary/svh-uta-change-use-trait.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs rename to tests/ui/svh/auxiliary/svh-uta-change-use-trait.rs diff --git a/src/test/ui/svh/auxiliary/svh-utb.rs b/tests/ui/svh/auxiliary/svh-utb.rs similarity index 100% rename from src/test/ui/svh/auxiliary/svh-utb.rs rename to tests/ui/svh/auxiliary/svh-utb.rs diff --git a/src/test/ui/svh/changing-crates.rs b/tests/ui/svh/changing-crates.rs similarity index 100% rename from src/test/ui/svh/changing-crates.rs rename to tests/ui/svh/changing-crates.rs diff --git a/src/test/ui/svh/changing-crates.stderr b/tests/ui/svh/changing-crates.stderr similarity index 100% rename from src/test/ui/svh/changing-crates.stderr rename to tests/ui/svh/changing-crates.stderr diff --git a/src/test/ui/svh/svh-change-lit.rs b/tests/ui/svh/svh-change-lit.rs similarity index 100% rename from src/test/ui/svh/svh-change-lit.rs rename to tests/ui/svh/svh-change-lit.rs diff --git a/src/test/ui/svh/svh-change-lit.stderr b/tests/ui/svh/svh-change-lit.stderr similarity index 100% rename from src/test/ui/svh/svh-change-lit.stderr rename to tests/ui/svh/svh-change-lit.stderr diff --git a/src/test/ui/svh/svh-change-significant-cfg.rs b/tests/ui/svh/svh-change-significant-cfg.rs similarity index 100% rename from src/test/ui/svh/svh-change-significant-cfg.rs rename to tests/ui/svh/svh-change-significant-cfg.rs diff --git a/src/test/ui/svh/svh-change-significant-cfg.stderr b/tests/ui/svh/svh-change-significant-cfg.stderr similarity index 100% rename from src/test/ui/svh/svh-change-significant-cfg.stderr rename to tests/ui/svh/svh-change-significant-cfg.stderr diff --git a/src/test/ui/svh/svh-change-trait-bound.rs b/tests/ui/svh/svh-change-trait-bound.rs similarity index 100% rename from src/test/ui/svh/svh-change-trait-bound.rs rename to tests/ui/svh/svh-change-trait-bound.rs diff --git a/src/test/ui/svh/svh-change-trait-bound.stderr b/tests/ui/svh/svh-change-trait-bound.stderr similarity index 100% rename from src/test/ui/svh/svh-change-trait-bound.stderr rename to tests/ui/svh/svh-change-trait-bound.stderr diff --git a/src/test/ui/svh/svh-change-type-arg.rs b/tests/ui/svh/svh-change-type-arg.rs similarity index 100% rename from src/test/ui/svh/svh-change-type-arg.rs rename to tests/ui/svh/svh-change-type-arg.rs diff --git a/src/test/ui/svh/svh-change-type-arg.stderr b/tests/ui/svh/svh-change-type-arg.stderr similarity index 100% rename from src/test/ui/svh/svh-change-type-arg.stderr rename to tests/ui/svh/svh-change-type-arg.stderr diff --git a/src/test/ui/svh/svh-change-type-ret.rs b/tests/ui/svh/svh-change-type-ret.rs similarity index 100% rename from src/test/ui/svh/svh-change-type-ret.rs rename to tests/ui/svh/svh-change-type-ret.rs diff --git a/src/test/ui/svh/svh-change-type-ret.stderr b/tests/ui/svh/svh-change-type-ret.stderr similarity index 100% rename from src/test/ui/svh/svh-change-type-ret.stderr rename to tests/ui/svh/svh-change-type-ret.stderr diff --git a/src/test/ui/svh/svh-change-type-static.rs b/tests/ui/svh/svh-change-type-static.rs similarity index 100% rename from src/test/ui/svh/svh-change-type-static.rs rename to tests/ui/svh/svh-change-type-static.rs diff --git a/src/test/ui/svh/svh-change-type-static.stderr b/tests/ui/svh/svh-change-type-static.stderr similarity index 100% rename from src/test/ui/svh/svh-change-type-static.stderr rename to tests/ui/svh/svh-change-type-static.stderr diff --git a/src/test/ui/svh/svh-use-trait.rs b/tests/ui/svh/svh-use-trait.rs similarity index 100% rename from src/test/ui/svh/svh-use-trait.rs rename to tests/ui/svh/svh-use-trait.rs diff --git a/src/test/ui/svh/svh-use-trait.stderr b/tests/ui/svh/svh-use-trait.stderr similarity index 100% rename from src/test/ui/svh/svh-use-trait.stderr rename to tests/ui/svh/svh-use-trait.stderr diff --git a/src/test/ui/swap-1.rs b/tests/ui/swap-1.rs similarity index 100% rename from src/test/ui/swap-1.rs rename to tests/ui/swap-1.rs diff --git a/src/test/ui/swap-overlapping.rs b/tests/ui/swap-overlapping.rs similarity index 100% rename from src/test/ui/swap-overlapping.rs rename to tests/ui/swap-overlapping.rs diff --git a/src/test/ui/switched-expectations.rs b/tests/ui/switched-expectations.rs similarity index 100% rename from src/test/ui/switched-expectations.rs rename to tests/ui/switched-expectations.rs diff --git a/src/test/ui/switched-expectations.stderr b/tests/ui/switched-expectations.stderr similarity index 100% rename from src/test/ui/switched-expectations.stderr rename to tests/ui/switched-expectations.stderr diff --git a/src/test/ui/symbol-names/basic.legacy.stderr b/tests/ui/symbol-names/basic.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/basic.legacy.stderr rename to tests/ui/symbol-names/basic.legacy.stderr diff --git a/src/test/ui/symbol-names/basic.rs b/tests/ui/symbol-names/basic.rs similarity index 100% rename from src/test/ui/symbol-names/basic.rs rename to tests/ui/symbol-names/basic.rs diff --git a/src/test/ui/symbol-names/basic.v0.stderr b/tests/ui/symbol-names/basic.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/basic.v0.stderr rename to tests/ui/symbol-names/basic.v0.stderr diff --git a/src/test/ui/symbol-names/const-generics-demangling.legacy.stderr b/tests/ui/symbol-names/const-generics-demangling.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/const-generics-demangling.legacy.stderr rename to tests/ui/symbol-names/const-generics-demangling.legacy.stderr diff --git a/src/test/ui/symbol-names/const-generics-demangling.rs b/tests/ui/symbol-names/const-generics-demangling.rs similarity index 100% rename from src/test/ui/symbol-names/const-generics-demangling.rs rename to tests/ui/symbol-names/const-generics-demangling.rs diff --git a/src/test/ui/symbol-names/const-generics-demangling.v0.stderr b/tests/ui/symbol-names/const-generics-demangling.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/const-generics-demangling.v0.stderr rename to tests/ui/symbol-names/const-generics-demangling.v0.stderr diff --git a/src/test/ui/symbol-names/const-generics-str-demangling.rs b/tests/ui/symbol-names/const-generics-str-demangling.rs similarity index 100% rename from src/test/ui/symbol-names/const-generics-str-demangling.rs rename to tests/ui/symbol-names/const-generics-str-demangling.rs diff --git a/src/test/ui/symbol-names/const-generics-str-demangling.stderr b/tests/ui/symbol-names/const-generics-str-demangling.stderr similarity index 100% rename from src/test/ui/symbol-names/const-generics-str-demangling.stderr rename to tests/ui/symbol-names/const-generics-str-demangling.stderr diff --git a/src/test/ui/symbol-names/const-generics-structural-demangling.rs b/tests/ui/symbol-names/const-generics-structural-demangling.rs similarity index 100% rename from src/test/ui/symbol-names/const-generics-structural-demangling.rs rename to tests/ui/symbol-names/const-generics-structural-demangling.rs diff --git a/src/test/ui/symbol-names/const-generics-structural-demangling.stderr b/tests/ui/symbol-names/const-generics-structural-demangling.stderr similarity index 100% rename from src/test/ui/symbol-names/const-generics-structural-demangling.stderr rename to tests/ui/symbol-names/const-generics-structural-demangling.stderr diff --git a/src/test/ui/symbol-names/const-generics.rs b/tests/ui/symbol-names/const-generics.rs similarity index 100% rename from src/test/ui/symbol-names/const-generics.rs rename to tests/ui/symbol-names/const-generics.rs diff --git a/src/test/ui/symbol-names/foreign-types.rs b/tests/ui/symbol-names/foreign-types.rs similarity index 100% rename from src/test/ui/symbol-names/foreign-types.rs rename to tests/ui/symbol-names/foreign-types.rs diff --git a/src/test/ui/symbol-names/foreign-types.stderr b/tests/ui/symbol-names/foreign-types.stderr similarity index 100% rename from src/test/ui/symbol-names/foreign-types.stderr rename to tests/ui/symbol-names/foreign-types.stderr diff --git a/src/test/ui/symbol-names/impl1.legacy.stderr b/tests/ui/symbol-names/impl1.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/impl1.legacy.stderr rename to tests/ui/symbol-names/impl1.legacy.stderr diff --git a/src/test/ui/symbol-names/impl1.rs b/tests/ui/symbol-names/impl1.rs similarity index 100% rename from src/test/ui/symbol-names/impl1.rs rename to tests/ui/symbol-names/impl1.rs diff --git a/src/test/ui/symbol-names/impl1.v0.stderr b/tests/ui/symbol-names/impl1.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/impl1.v0.stderr rename to tests/ui/symbol-names/impl1.v0.stderr diff --git a/src/test/ui/symbol-names/impl2.rs b/tests/ui/symbol-names/impl2.rs similarity index 100% rename from src/test/ui/symbol-names/impl2.rs rename to tests/ui/symbol-names/impl2.rs diff --git a/src/test/ui/symbol-names/impl2.stderr b/tests/ui/symbol-names/impl2.stderr similarity index 100% rename from src/test/ui/symbol-names/impl2.stderr rename to tests/ui/symbol-names/impl2.stderr diff --git a/src/test/ui/symbol-names/issue-53912.rs b/tests/ui/symbol-names/issue-53912.rs similarity index 100% rename from src/test/ui/symbol-names/issue-53912.rs rename to tests/ui/symbol-names/issue-53912.rs diff --git a/src/test/ui/symbol-names/issue-60925.legacy.stderr b/tests/ui/symbol-names/issue-60925.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/issue-60925.legacy.stderr rename to tests/ui/symbol-names/issue-60925.legacy.stderr diff --git a/src/test/ui/symbol-names/issue-60925.rs b/tests/ui/symbol-names/issue-60925.rs similarity index 100% rename from src/test/ui/symbol-names/issue-60925.rs rename to tests/ui/symbol-names/issue-60925.rs diff --git a/src/test/ui/symbol-names/issue-60925.v0.stderr b/tests/ui/symbol-names/issue-60925.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/issue-60925.v0.stderr rename to tests/ui/symbol-names/issue-60925.v0.stderr diff --git a/src/test/ui/symbol-names/issue-75326.legacy.stderr b/tests/ui/symbol-names/issue-75326.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/issue-75326.legacy.stderr rename to tests/ui/symbol-names/issue-75326.legacy.stderr diff --git a/src/test/ui/symbol-names/issue-75326.rs b/tests/ui/symbol-names/issue-75326.rs similarity index 100% rename from src/test/ui/symbol-names/issue-75326.rs rename to tests/ui/symbol-names/issue-75326.rs diff --git a/src/test/ui/symbol-names/issue-75326.v0.stderr b/tests/ui/symbol-names/issue-75326.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/issue-75326.v0.stderr rename to tests/ui/symbol-names/issue-75326.v0.stderr diff --git a/src/test/ui/symbol-names/issue-76365.rs b/tests/ui/symbol-names/issue-76365.rs similarity index 100% rename from src/test/ui/symbol-names/issue-76365.rs rename to tests/ui/symbol-names/issue-76365.rs diff --git a/src/test/ui/symbol-names/trait-objects.rs b/tests/ui/symbol-names/trait-objects.rs similarity index 100% rename from src/test/ui/symbol-names/trait-objects.rs rename to tests/ui/symbol-names/trait-objects.rs diff --git a/src/test/ui/symbol-names/trait-objects.v0.stderr b/tests/ui/symbol-names/trait-objects.v0.stderr similarity index 100% rename from src/test/ui/symbol-names/trait-objects.v0.stderr rename to tests/ui/symbol-names/trait-objects.v0.stderr diff --git a/src/test/ui/symbol-names/types.legacy.stderr b/tests/ui/symbol-names/types.legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/types.legacy.stderr rename to tests/ui/symbol-names/types.legacy.stderr diff --git a/src/test/ui/symbol-names/types.rs b/tests/ui/symbol-names/types.rs similarity index 100% rename from src/test/ui/symbol-names/types.rs rename to tests/ui/symbol-names/types.rs diff --git a/src/test/ui/symbol-names/types.verbose-legacy.stderr b/tests/ui/symbol-names/types.verbose-legacy.stderr similarity index 100% rename from src/test/ui/symbol-names/types.verbose-legacy.stderr rename to tests/ui/symbol-names/types.verbose-legacy.stderr diff --git a/src/test/ui/symbol-names/verbose.rs b/tests/ui/symbol-names/verbose.rs similarity index 100% rename from src/test/ui/symbol-names/verbose.rs rename to tests/ui/symbol-names/verbose.rs diff --git a/src/test/ui/symbol-names/x86-stdcall.rs b/tests/ui/symbol-names/x86-stdcall.rs similarity index 100% rename from src/test/ui/symbol-names/x86-stdcall.rs rename to tests/ui/symbol-names/x86-stdcall.rs diff --git a/src/test/ui/syntax-extension-minor.rs b/tests/ui/syntax-extension-minor.rs similarity index 100% rename from src/test/ui/syntax-extension-minor.rs rename to tests/ui/syntax-extension-minor.rs diff --git a/src/test/ui/tag-that-dare-not-speak-its-name.rs b/tests/ui/tag-that-dare-not-speak-its-name.rs similarity index 100% rename from src/test/ui/tag-that-dare-not-speak-its-name.rs rename to tests/ui/tag-that-dare-not-speak-its-name.rs diff --git a/src/test/ui/tag-that-dare-not-speak-its-name.stderr b/tests/ui/tag-that-dare-not-speak-its-name.stderr similarity index 100% rename from src/test/ui/tag-that-dare-not-speak-its-name.stderr rename to tests/ui/tag-that-dare-not-speak-its-name.stderr diff --git a/src/test/ui/tag-type-args.rs b/tests/ui/tag-type-args.rs similarity index 100% rename from src/test/ui/tag-type-args.rs rename to tests/ui/tag-type-args.rs diff --git a/src/test/ui/tag-type-args.stderr b/tests/ui/tag-type-args.stderr similarity index 100% rename from src/test/ui/tag-type-args.stderr rename to tests/ui/tag-type-args.stderr diff --git a/src/test/ui/tag-variant-cast-non-nullary.fixed b/tests/ui/tag-variant-cast-non-nullary.fixed similarity index 100% rename from src/test/ui/tag-variant-cast-non-nullary.fixed rename to tests/ui/tag-variant-cast-non-nullary.fixed diff --git a/src/test/ui/tag-variant-cast-non-nullary.rs b/tests/ui/tag-variant-cast-non-nullary.rs similarity index 100% rename from src/test/ui/tag-variant-cast-non-nullary.rs rename to tests/ui/tag-variant-cast-non-nullary.rs diff --git a/src/test/ui/tag-variant-cast-non-nullary.stderr b/tests/ui/tag-variant-cast-non-nullary.stderr similarity index 100% rename from src/test/ui/tag-variant-cast-non-nullary.stderr rename to tests/ui/tag-variant-cast-non-nullary.stderr diff --git a/src/test/ui/tail-call-arg-leak.rs b/tests/ui/tail-call-arg-leak.rs similarity index 100% rename from src/test/ui/tail-call-arg-leak.rs rename to tests/ui/tail-call-arg-leak.rs diff --git a/src/test/ui/tail-cps.rs b/tests/ui/tail-cps.rs similarity index 100% rename from src/test/ui/tail-cps.rs rename to tests/ui/tail-cps.rs diff --git a/src/test/ui/tail-typeck.rs b/tests/ui/tail-typeck.rs similarity index 100% rename from src/test/ui/tail-typeck.rs rename to tests/ui/tail-typeck.rs diff --git a/src/test/ui/tail-typeck.stderr b/tests/ui/tail-typeck.stderr similarity index 100% rename from src/test/ui/tail-typeck.stderr rename to tests/ui/tail-typeck.stderr diff --git a/src/test/ui/target-feature/aarch64-neon-works.rs b/tests/ui/target-feature/aarch64-neon-works.rs similarity index 100% rename from src/test/ui/target-feature/aarch64-neon-works.rs rename to tests/ui/target-feature/aarch64-neon-works.rs diff --git a/src/test/ui/target-feature/feature-hierarchy.rs b/tests/ui/target-feature/feature-hierarchy.rs similarity index 100% rename from src/test/ui/target-feature/feature-hierarchy.rs rename to tests/ui/target-feature/feature-hierarchy.rs diff --git a/src/test/ui/target-feature/gate.rs b/tests/ui/target-feature/gate.rs similarity index 100% rename from src/test/ui/target-feature/gate.rs rename to tests/ui/target-feature/gate.rs diff --git a/src/test/ui/target-feature/gate.stderr b/tests/ui/target-feature/gate.stderr similarity index 100% rename from src/test/ui/target-feature/gate.stderr rename to tests/ui/target-feature/gate.stderr diff --git a/src/test/ui/target-feature/invalid-attribute.rs b/tests/ui/target-feature/invalid-attribute.rs similarity index 100% rename from src/test/ui/target-feature/invalid-attribute.rs rename to tests/ui/target-feature/invalid-attribute.rs diff --git a/src/test/ui/target-feature/invalid-attribute.stderr b/tests/ui/target-feature/invalid-attribute.stderr similarity index 100% rename from src/test/ui/target-feature/invalid-attribute.stderr rename to tests/ui/target-feature/invalid-attribute.stderr diff --git a/src/test/ui/target-feature/missing-plusminus-2.rs b/tests/ui/target-feature/missing-plusminus-2.rs similarity index 100% rename from src/test/ui/target-feature/missing-plusminus-2.rs rename to tests/ui/target-feature/missing-plusminus-2.rs diff --git a/src/test/ui/target-feature/missing-plusminus-2.stderr b/tests/ui/target-feature/missing-plusminus-2.stderr similarity index 100% rename from src/test/ui/target-feature/missing-plusminus-2.stderr rename to tests/ui/target-feature/missing-plusminus-2.stderr diff --git a/src/test/ui/target-feature/missing-plusminus.rs b/tests/ui/target-feature/missing-plusminus.rs similarity index 100% rename from src/test/ui/target-feature/missing-plusminus.rs rename to tests/ui/target-feature/missing-plusminus.rs diff --git a/src/test/ui/target-feature/missing-plusminus.stderr b/tests/ui/target-feature/missing-plusminus.stderr similarity index 100% rename from src/test/ui/target-feature/missing-plusminus.stderr rename to tests/ui/target-feature/missing-plusminus.stderr diff --git a/src/test/ui/target-feature/no-llvm-leaks.rs b/tests/ui/target-feature/no-llvm-leaks.rs similarity index 100% rename from src/test/ui/target-feature/no-llvm-leaks.rs rename to tests/ui/target-feature/no-llvm-leaks.rs diff --git a/src/test/ui/target-feature/rust-specific-name-no-warnings.rs b/tests/ui/target-feature/rust-specific-name-no-warnings.rs similarity index 100% rename from src/test/ui/target-feature/rust-specific-name-no-warnings.rs rename to tests/ui/target-feature/rust-specific-name-no-warnings.rs diff --git a/src/test/ui/target-feature/similar-feature-suggestion.rs b/tests/ui/target-feature/similar-feature-suggestion.rs similarity index 100% rename from src/test/ui/target-feature/similar-feature-suggestion.rs rename to tests/ui/target-feature/similar-feature-suggestion.rs diff --git a/src/test/ui/target-feature/similar-feature-suggestion.stderr b/tests/ui/target-feature/similar-feature-suggestion.stderr similarity index 100% rename from src/test/ui/target-feature/similar-feature-suggestion.stderr rename to tests/ui/target-feature/similar-feature-suggestion.stderr diff --git a/src/test/ui/target-feature/tied-features-cli.one.stderr b/tests/ui/target-feature/tied-features-cli.one.stderr similarity index 100% rename from src/test/ui/target-feature/tied-features-cli.one.stderr rename to tests/ui/target-feature/tied-features-cli.one.stderr diff --git a/src/test/ui/target-feature/tied-features-cli.rs b/tests/ui/target-feature/tied-features-cli.rs similarity index 100% rename from src/test/ui/target-feature/tied-features-cli.rs rename to tests/ui/target-feature/tied-features-cli.rs diff --git a/src/test/ui/target-feature/tied-features-cli.three.stderr b/tests/ui/target-feature/tied-features-cli.three.stderr similarity index 100% rename from src/test/ui/target-feature/tied-features-cli.three.stderr rename to tests/ui/target-feature/tied-features-cli.three.stderr diff --git a/src/test/ui/target-feature/tied-features-cli.two.stderr b/tests/ui/target-feature/tied-features-cli.two.stderr similarity index 100% rename from src/test/ui/target-feature/tied-features-cli.two.stderr rename to tests/ui/target-feature/tied-features-cli.two.stderr diff --git a/src/test/ui/target-feature/tied-features.rs b/tests/ui/target-feature/tied-features.rs similarity index 100% rename from src/test/ui/target-feature/tied-features.rs rename to tests/ui/target-feature/tied-features.rs diff --git a/src/test/ui/target-feature/tied-features.stderr b/tests/ui/target-feature/tied-features.stderr similarity index 100% rename from src/test/ui/target-feature/tied-features.stderr rename to tests/ui/target-feature/tied-features.stderr diff --git a/src/test/ui/target-feature/wasm-safe.rs b/tests/ui/target-feature/wasm-safe.rs similarity index 100% rename from src/test/ui/target-feature/wasm-safe.rs rename to tests/ui/target-feature/wasm-safe.rs diff --git a/src/test/ui/terr-in-field.rs b/tests/ui/terr-in-field.rs similarity index 100% rename from src/test/ui/terr-in-field.rs rename to tests/ui/terr-in-field.rs diff --git a/src/test/ui/terr-in-field.stderr b/tests/ui/terr-in-field.stderr similarity index 100% rename from src/test/ui/terr-in-field.stderr rename to tests/ui/terr-in-field.stderr diff --git a/src/test/ui/terr-sorts.rs b/tests/ui/terr-sorts.rs similarity index 100% rename from src/test/ui/terr-sorts.rs rename to tests/ui/terr-sorts.rs diff --git a/src/test/ui/terr-sorts.stderr b/tests/ui/terr-sorts.stderr similarity index 100% rename from src/test/ui/terr-sorts.stderr rename to tests/ui/terr-sorts.stderr diff --git a/src/test/ui/test-attrs/auxiliary/test_macro.rs b/tests/ui/test-attrs/auxiliary/test_macro.rs similarity index 100% rename from src/test/ui/test-attrs/auxiliary/test_macro.rs rename to tests/ui/test-attrs/auxiliary/test_macro.rs diff --git a/src/test/ui/test-attrs/decl-macro-test.rs b/tests/ui/test-attrs/decl-macro-test.rs similarity index 100% rename from src/test/ui/test-attrs/decl-macro-test.rs rename to tests/ui/test-attrs/decl-macro-test.rs diff --git a/src/test/ui/test-attrs/inaccessible-test-modules.rs b/tests/ui/test-attrs/inaccessible-test-modules.rs similarity index 100% rename from src/test/ui/test-attrs/inaccessible-test-modules.rs rename to tests/ui/test-attrs/inaccessible-test-modules.rs diff --git a/src/test/ui/test-attrs/inaccessible-test-modules.stderr b/tests/ui/test-attrs/inaccessible-test-modules.stderr similarity index 100% rename from src/test/ui/test-attrs/inaccessible-test-modules.stderr rename to tests/ui/test-attrs/inaccessible-test-modules.stderr diff --git a/src/test/ui/test-attrs/issue-16597-empty.rs b/tests/ui/test-attrs/issue-16597-empty.rs similarity index 100% rename from src/test/ui/test-attrs/issue-16597-empty.rs rename to tests/ui/test-attrs/issue-16597-empty.rs diff --git a/src/test/ui/test-attrs/issue-16597.rs b/tests/ui/test-attrs/issue-16597.rs similarity index 100% rename from src/test/ui/test-attrs/issue-16597.rs rename to tests/ui/test-attrs/issue-16597.rs diff --git a/src/test/ui/test-attrs/issue-20823.rs b/tests/ui/test-attrs/issue-20823.rs similarity index 100% rename from src/test/ui/test-attrs/issue-20823.rs rename to tests/ui/test-attrs/issue-20823.rs diff --git a/src/test/ui/test-attrs/issue-36768.rs b/tests/ui/test-attrs/issue-36768.rs similarity index 100% rename from src/test/ui/test-attrs/issue-36768.rs rename to tests/ui/test-attrs/issue-36768.rs diff --git a/src/test/ui/test-attrs/issue-52557.rs b/tests/ui/test-attrs/issue-52557.rs similarity index 100% rename from src/test/ui/test-attrs/issue-52557.rs rename to tests/ui/test-attrs/issue-52557.rs diff --git a/src/test/ui/test-attrs/issue-53675-a-test-called-panic.rs b/tests/ui/test-attrs/issue-53675-a-test-called-panic.rs similarity index 100% rename from src/test/ui/test-attrs/issue-53675-a-test-called-panic.rs rename to tests/ui/test-attrs/issue-53675-a-test-called-panic.rs diff --git a/src/test/ui/test-attrs/run-unexported-tests.rs b/tests/ui/test-attrs/run-unexported-tests.rs similarity index 100% rename from src/test/ui/test-attrs/run-unexported-tests.rs rename to tests/ui/test-attrs/run-unexported-tests.rs diff --git a/src/test/ui/test-attrs/test-attr-non-associated-functions.rs b/tests/ui/test-attrs/test-attr-non-associated-functions.rs similarity index 100% rename from src/test/ui/test-attrs/test-attr-non-associated-functions.rs rename to tests/ui/test-attrs/test-attr-non-associated-functions.rs diff --git a/src/test/ui/test-attrs/test-attr-non-associated-functions.stderr b/tests/ui/test-attrs/test-attr-non-associated-functions.stderr similarity index 100% rename from src/test/ui/test-attrs/test-attr-non-associated-functions.stderr rename to tests/ui/test-attrs/test-attr-non-associated-functions.stderr diff --git a/src/test/ui/test-attrs/test-cant-be-shadowed.rs b/tests/ui/test-attrs/test-cant-be-shadowed.rs similarity index 100% rename from src/test/ui/test-attrs/test-cant-be-shadowed.rs rename to tests/ui/test-attrs/test-cant-be-shadowed.rs diff --git a/src/test/ui/test-attrs/test-filter-multiple.rs b/tests/ui/test-attrs/test-filter-multiple.rs similarity index 100% rename from src/test/ui/test-attrs/test-filter-multiple.rs rename to tests/ui/test-attrs/test-filter-multiple.rs diff --git a/src/test/ui/test-attrs/test-filter-multiple.run.stdout b/tests/ui/test-attrs/test-filter-multiple.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-filter-multiple.run.stdout rename to tests/ui/test-attrs/test-filter-multiple.run.stdout diff --git a/src/test/ui/test-attrs/test-fn-signature-verification-for-explicit-return-type.rs b/tests/ui/test-attrs/test-fn-signature-verification-for-explicit-return-type.rs similarity index 100% rename from src/test/ui/test-attrs/test-fn-signature-verification-for-explicit-return-type.rs rename to tests/ui/test-attrs/test-fn-signature-verification-for-explicit-return-type.rs diff --git a/src/test/ui/test-attrs/test-main-not-dead-attr.rs b/tests/ui/test-attrs/test-main-not-dead-attr.rs similarity index 100% rename from src/test/ui/test-attrs/test-main-not-dead-attr.rs rename to tests/ui/test-attrs/test-main-not-dead-attr.rs diff --git a/src/test/ui/test-attrs/test-main-not-dead.rs b/tests/ui/test-attrs/test-main-not-dead.rs similarity index 100% rename from src/test/ui/test-attrs/test-main-not-dead.rs rename to tests/ui/test-attrs/test-main-not-dead.rs diff --git a/src/test/ui/test-attrs/test-on-not-fn.rs b/tests/ui/test-attrs/test-on-not-fn.rs similarity index 100% rename from src/test/ui/test-attrs/test-on-not-fn.rs rename to tests/ui/test-attrs/test-on-not-fn.rs diff --git a/src/test/ui/test-attrs/test-on-not-fn.stderr b/tests/ui/test-attrs/test-on-not-fn.stderr similarity index 100% rename from src/test/ui/test-attrs/test-on-not-fn.stderr rename to tests/ui/test-attrs/test-on-not-fn.stderr diff --git a/src/test/ui/test-attrs/test-panic-abort-disabled.rs b/tests/ui/test-attrs/test-panic-abort-disabled.rs similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort-disabled.rs rename to tests/ui/test-attrs/test-panic-abort-disabled.rs diff --git a/src/test/ui/test-attrs/test-panic-abort-disabled.stderr b/tests/ui/test-attrs/test-panic-abort-disabled.stderr similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort-disabled.stderr rename to tests/ui/test-attrs/test-panic-abort-disabled.stderr diff --git a/src/test/ui/test-attrs/test-panic-abort-nocapture.rs b/tests/ui/test-attrs/test-panic-abort-nocapture.rs similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort-nocapture.rs rename to tests/ui/test-attrs/test-panic-abort-nocapture.rs diff --git a/src/test/ui/test-attrs/test-panic-abort-nocapture.run.stderr b/tests/ui/test-attrs/test-panic-abort-nocapture.run.stderr similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort-nocapture.run.stderr rename to tests/ui/test-attrs/test-panic-abort-nocapture.run.stderr diff --git a/src/test/ui/test-attrs/test-panic-abort-nocapture.run.stdout b/tests/ui/test-attrs/test-panic-abort-nocapture.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort-nocapture.run.stdout rename to tests/ui/test-attrs/test-panic-abort-nocapture.run.stdout diff --git a/src/test/ui/test-attrs/test-panic-abort.rs b/tests/ui/test-attrs/test-panic-abort.rs similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort.rs rename to tests/ui/test-attrs/test-panic-abort.rs diff --git a/src/test/ui/test-attrs/test-panic-abort.run.stdout b/tests/ui/test-attrs/test-panic-abort.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-panic-abort.run.stdout rename to tests/ui/test-attrs/test-panic-abort.run.stdout diff --git a/src/test/ui/test-attrs/test-panic-while-printing.rs b/tests/ui/test-attrs/test-panic-while-printing.rs similarity index 100% rename from src/test/ui/test-attrs/test-panic-while-printing.rs rename to tests/ui/test-attrs/test-panic-while-printing.rs diff --git a/src/test/ui/test-attrs/test-passed-wasm.rs b/tests/ui/test-attrs/test-passed-wasm.rs similarity index 100% rename from src/test/ui/test-attrs/test-passed-wasm.rs rename to tests/ui/test-attrs/test-passed-wasm.rs diff --git a/src/test/ui/test-attrs/test-passed-wasm.run.stdout b/tests/ui/test-attrs/test-passed-wasm.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-passed-wasm.run.stdout rename to tests/ui/test-attrs/test-passed-wasm.run.stdout diff --git a/src/test/ui/test-attrs/test-passed.rs b/tests/ui/test-attrs/test-passed.rs similarity index 100% rename from src/test/ui/test-attrs/test-passed.rs rename to tests/ui/test-attrs/test-passed.rs diff --git a/src/test/ui/test-attrs/test-passed.run.stdout b/tests/ui/test-attrs/test-passed.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-passed.run.stdout rename to tests/ui/test-attrs/test-passed.run.stdout diff --git a/src/test/ui/test-attrs/test-runner-hides-buried-main.rs b/tests/ui/test-attrs/test-runner-hides-buried-main.rs similarity index 100% rename from src/test/ui/test-attrs/test-runner-hides-buried-main.rs rename to tests/ui/test-attrs/test-runner-hides-buried-main.rs diff --git a/src/test/ui/test-attrs/test-runner-hides-main.rs b/tests/ui/test-attrs/test-runner-hides-main.rs similarity index 100% rename from src/test/ui/test-attrs/test-runner-hides-main.rs rename to tests/ui/test-attrs/test-runner-hides-main.rs diff --git a/src/test/ui/test-attrs/test-runner-hides-start.rs b/tests/ui/test-attrs/test-runner-hides-start.rs similarity index 100% rename from src/test/ui/test-attrs/test-runner-hides-start.rs rename to tests/ui/test-attrs/test-runner-hides-start.rs diff --git a/src/test/ui/test-attrs/test-should-fail-good-message.rs b/tests/ui/test-attrs/test-should-fail-good-message.rs similarity index 100% rename from src/test/ui/test-attrs/test-should-fail-good-message.rs rename to tests/ui/test-attrs/test-should-fail-good-message.rs diff --git a/src/test/ui/test-attrs/test-should-panic-attr.rs b/tests/ui/test-attrs/test-should-panic-attr.rs similarity index 100% rename from src/test/ui/test-attrs/test-should-panic-attr.rs rename to tests/ui/test-attrs/test-should-panic-attr.rs diff --git a/src/test/ui/test-attrs/test-should-panic-attr.stderr b/tests/ui/test-attrs/test-should-panic-attr.stderr similarity index 100% rename from src/test/ui/test-attrs/test-should-panic-attr.stderr rename to tests/ui/test-attrs/test-should-panic-attr.stderr diff --git a/src/test/ui/test-attrs/test-thread-capture.rs b/tests/ui/test-attrs/test-thread-capture.rs similarity index 100% rename from src/test/ui/test-attrs/test-thread-capture.rs rename to tests/ui/test-attrs/test-thread-capture.rs diff --git a/src/test/ui/test-attrs/test-thread-capture.run.stdout b/tests/ui/test-attrs/test-thread-capture.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-thread-capture.run.stdout rename to tests/ui/test-attrs/test-thread-capture.run.stdout diff --git a/src/test/ui/test-attrs/test-thread-nocapture.rs b/tests/ui/test-attrs/test-thread-nocapture.rs similarity index 100% rename from src/test/ui/test-attrs/test-thread-nocapture.rs rename to tests/ui/test-attrs/test-thread-nocapture.rs diff --git a/src/test/ui/test-attrs/test-thread-nocapture.run.stderr b/tests/ui/test-attrs/test-thread-nocapture.run.stderr similarity index 100% rename from src/test/ui/test-attrs/test-thread-nocapture.run.stderr rename to tests/ui/test-attrs/test-thread-nocapture.run.stderr diff --git a/src/test/ui/test-attrs/test-thread-nocapture.run.stdout b/tests/ui/test-attrs/test-thread-nocapture.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-thread-nocapture.run.stdout rename to tests/ui/test-attrs/test-thread-nocapture.run.stdout diff --git a/src/test/ui/test-attrs/test-type.rs b/tests/ui/test-attrs/test-type.rs similarity index 100% rename from src/test/ui/test-attrs/test-type.rs rename to tests/ui/test-attrs/test-type.rs diff --git a/src/test/ui/test-attrs/test-type.run.stdout b/tests/ui/test-attrs/test-type.run.stdout similarity index 100% rename from src/test/ui/test-attrs/test-type.run.stdout rename to tests/ui/test-attrs/test-type.run.stdout diff --git a/src/test/ui/test-attrs/test-vs-cfg-test.rs b/tests/ui/test-attrs/test-vs-cfg-test.rs similarity index 100% rename from src/test/ui/test-attrs/test-vs-cfg-test.rs rename to tests/ui/test-attrs/test-vs-cfg-test.rs diff --git a/src/test/ui/test-attrs/test-warns-dead-code.rs b/tests/ui/test-attrs/test-warns-dead-code.rs similarity index 100% rename from src/test/ui/test-attrs/test-warns-dead-code.rs rename to tests/ui/test-attrs/test-warns-dead-code.rs diff --git a/src/test/ui/test-attrs/test-warns-dead-code.stderr b/tests/ui/test-attrs/test-warns-dead-code.stderr similarity index 100% rename from src/test/ui/test-attrs/test-warns-dead-code.stderr rename to tests/ui/test-attrs/test-warns-dead-code.stderr diff --git a/src/test/ui/thir-tree.rs b/tests/ui/thir-tree.rs similarity index 100% rename from src/test/ui/thir-tree.rs rename to tests/ui/thir-tree.rs diff --git a/src/test/ui/thir-tree.stdout b/tests/ui/thir-tree.stdout similarity index 100% rename from src/test/ui/thir-tree.stdout rename to tests/ui/thir-tree.stdout diff --git a/src/test/ui/thread-local-mutation.rs b/tests/ui/thread-local-mutation.rs similarity index 100% rename from src/test/ui/thread-local-mutation.rs rename to tests/ui/thread-local-mutation.rs diff --git a/src/test/ui/thread-local-mutation.stderr b/tests/ui/thread-local-mutation.stderr similarity index 100% rename from src/test/ui/thread-local-mutation.stderr rename to tests/ui/thread-local-mutation.stderr diff --git a/src/test/ui/thread-local-static.rs b/tests/ui/thread-local-static.rs similarity index 100% rename from src/test/ui/thread-local-static.rs rename to tests/ui/thread-local-static.rs diff --git a/src/test/ui/thread-local-static.stderr b/tests/ui/thread-local-static.stderr similarity index 100% rename from src/test/ui/thread-local-static.stderr rename to tests/ui/thread-local-static.stderr diff --git a/src/test/ui/thread-local/name-collision.rs b/tests/ui/thread-local/name-collision.rs similarity index 100% rename from src/test/ui/thread-local/name-collision.rs rename to tests/ui/thread-local/name-collision.rs diff --git a/src/test/ui/thread-local/non-static.rs b/tests/ui/thread-local/non-static.rs similarity index 100% rename from src/test/ui/thread-local/non-static.rs rename to tests/ui/thread-local/non-static.rs diff --git a/src/test/ui/thread-local/non-static.stderr b/tests/ui/thread-local/non-static.stderr similarity index 100% rename from src/test/ui/thread-local/non-static.stderr rename to tests/ui/thread-local/non-static.stderr diff --git a/src/test/ui/thread-local/thread-local-issue-37508.rs b/tests/ui/thread-local/thread-local-issue-37508.rs similarity index 100% rename from src/test/ui/thread-local/thread-local-issue-37508.rs rename to tests/ui/thread-local/thread-local-issue-37508.rs diff --git a/src/test/ui/thread-local/tls.rs b/tests/ui/thread-local/tls.rs similarity index 100% rename from src/test/ui/thread-local/tls.rs rename to tests/ui/thread-local/tls.rs diff --git a/src/test/ui/threads-sendsync/auxiliary/thread-local-extern-static.rs b/tests/ui/threads-sendsync/auxiliary/thread-local-extern-static.rs similarity index 100% rename from src/test/ui/threads-sendsync/auxiliary/thread-local-extern-static.rs rename to tests/ui/threads-sendsync/auxiliary/thread-local-extern-static.rs diff --git a/src/test/ui/threads-sendsync/child-outlives-parent.rs b/tests/ui/threads-sendsync/child-outlives-parent.rs similarity index 100% rename from src/test/ui/threads-sendsync/child-outlives-parent.rs rename to tests/ui/threads-sendsync/child-outlives-parent.rs diff --git a/src/test/ui/threads-sendsync/clone-with-exterior.rs b/tests/ui/threads-sendsync/clone-with-exterior.rs similarity index 100% rename from src/test/ui/threads-sendsync/clone-with-exterior.rs rename to tests/ui/threads-sendsync/clone-with-exterior.rs diff --git a/src/test/ui/threads-sendsync/comm.rs b/tests/ui/threads-sendsync/comm.rs similarity index 100% rename from src/test/ui/threads-sendsync/comm.rs rename to tests/ui/threads-sendsync/comm.rs diff --git a/src/test/ui/threads-sendsync/eprint-on-tls-drop.rs b/tests/ui/threads-sendsync/eprint-on-tls-drop.rs similarity index 100% rename from src/test/ui/threads-sendsync/eprint-on-tls-drop.rs rename to tests/ui/threads-sendsync/eprint-on-tls-drop.rs diff --git a/src/test/ui/threads-sendsync/issue-24313.rs b/tests/ui/threads-sendsync/issue-24313.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-24313.rs rename to tests/ui/threads-sendsync/issue-24313.rs diff --git a/src/test/ui/threads-sendsync/issue-29488.rs b/tests/ui/threads-sendsync/issue-29488.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-29488.rs rename to tests/ui/threads-sendsync/issue-29488.rs diff --git a/src/test/ui/threads-sendsync/issue-43733-2.rs b/tests/ui/threads-sendsync/issue-43733-2.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-43733-2.rs rename to tests/ui/threads-sendsync/issue-43733-2.rs diff --git a/src/test/ui/threads-sendsync/issue-43733.mir.stderr b/tests/ui/threads-sendsync/issue-43733.mir.stderr similarity index 100% rename from src/test/ui/threads-sendsync/issue-43733.mir.stderr rename to tests/ui/threads-sendsync/issue-43733.mir.stderr diff --git a/src/test/ui/threads-sendsync/issue-43733.rs b/tests/ui/threads-sendsync/issue-43733.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-43733.rs rename to tests/ui/threads-sendsync/issue-43733.rs diff --git a/src/test/ui/threads-sendsync/issue-43733.thir.stderr b/tests/ui/threads-sendsync/issue-43733.thir.stderr similarity index 100% rename from src/test/ui/threads-sendsync/issue-43733.thir.stderr rename to tests/ui/threads-sendsync/issue-43733.thir.stderr diff --git a/src/test/ui/threads-sendsync/issue-4446.rs b/tests/ui/threads-sendsync/issue-4446.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-4446.rs rename to tests/ui/threads-sendsync/issue-4446.rs diff --git a/src/test/ui/threads-sendsync/issue-4448.rs b/tests/ui/threads-sendsync/issue-4448.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-4448.rs rename to tests/ui/threads-sendsync/issue-4448.rs diff --git a/src/test/ui/threads-sendsync/issue-8827.rs b/tests/ui/threads-sendsync/issue-8827.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-8827.rs rename to tests/ui/threads-sendsync/issue-8827.rs diff --git a/src/test/ui/threads-sendsync/issue-9396.rs b/tests/ui/threads-sendsync/issue-9396.rs similarity index 100% rename from src/test/ui/threads-sendsync/issue-9396.rs rename to tests/ui/threads-sendsync/issue-9396.rs diff --git a/src/test/ui/threads-sendsync/mpsc_stress.rs b/tests/ui/threads-sendsync/mpsc_stress.rs similarity index 100% rename from src/test/ui/threads-sendsync/mpsc_stress.rs rename to tests/ui/threads-sendsync/mpsc_stress.rs diff --git a/src/test/ui/threads-sendsync/send-is-not-static-par-for.rs b/tests/ui/threads-sendsync/send-is-not-static-par-for.rs similarity index 100% rename from src/test/ui/threads-sendsync/send-is-not-static-par-for.rs rename to tests/ui/threads-sendsync/send-is-not-static-par-for.rs diff --git a/src/test/ui/threads-sendsync/send-resource.rs b/tests/ui/threads-sendsync/send-resource.rs similarity index 100% rename from src/test/ui/threads-sendsync/send-resource.rs rename to tests/ui/threads-sendsync/send-resource.rs diff --git a/src/test/ui/threads-sendsync/send-type-inference.rs b/tests/ui/threads-sendsync/send-type-inference.rs similarity index 100% rename from src/test/ui/threads-sendsync/send-type-inference.rs rename to tests/ui/threads-sendsync/send-type-inference.rs diff --git a/src/test/ui/threads-sendsync/send_str_hashmap.rs b/tests/ui/threads-sendsync/send_str_hashmap.rs similarity index 100% rename from src/test/ui/threads-sendsync/send_str_hashmap.rs rename to tests/ui/threads-sendsync/send_str_hashmap.rs diff --git a/src/test/ui/threads-sendsync/send_str_treemap.rs b/tests/ui/threads-sendsync/send_str_treemap.rs similarity index 100% rename from src/test/ui/threads-sendsync/send_str_treemap.rs rename to tests/ui/threads-sendsync/send_str_treemap.rs diff --git a/src/test/ui/threads-sendsync/sendable-class.rs b/tests/ui/threads-sendsync/sendable-class.rs similarity index 100% rename from src/test/ui/threads-sendsync/sendable-class.rs rename to tests/ui/threads-sendsync/sendable-class.rs diff --git a/src/test/ui/threads-sendsync/sendfn-is-a-block.rs b/tests/ui/threads-sendsync/sendfn-is-a-block.rs similarity index 100% rename from src/test/ui/threads-sendsync/sendfn-is-a-block.rs rename to tests/ui/threads-sendsync/sendfn-is-a-block.rs diff --git a/src/test/ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs b/tests/ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs similarity index 100% rename from src/test/ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs rename to tests/ui/threads-sendsync/sendfn-spawn-with-fn-arg.rs diff --git a/src/test/ui/threads-sendsync/spawn-fn.rs b/tests/ui/threads-sendsync/spawn-fn.rs similarity index 100% rename from src/test/ui/threads-sendsync/spawn-fn.rs rename to tests/ui/threads-sendsync/spawn-fn.rs diff --git a/src/test/ui/threads-sendsync/spawn-types.rs b/tests/ui/threads-sendsync/spawn-types.rs similarity index 100% rename from src/test/ui/threads-sendsync/spawn-types.rs rename to tests/ui/threads-sendsync/spawn-types.rs diff --git a/src/test/ui/threads-sendsync/spawn.rs b/tests/ui/threads-sendsync/spawn.rs similarity index 100% rename from src/test/ui/threads-sendsync/spawn.rs rename to tests/ui/threads-sendsync/spawn.rs diff --git a/src/test/ui/threads-sendsync/spawn2.rs b/tests/ui/threads-sendsync/spawn2.rs similarity index 100% rename from src/test/ui/threads-sendsync/spawn2.rs rename to tests/ui/threads-sendsync/spawn2.rs diff --git a/src/test/ui/threads-sendsync/spawning-with-debug.rs b/tests/ui/threads-sendsync/spawning-with-debug.rs similarity index 100% rename from src/test/ui/threads-sendsync/spawning-with-debug.rs rename to tests/ui/threads-sendsync/spawning-with-debug.rs diff --git a/src/test/ui/threads-sendsync/std-sync-right-kind-impls.rs b/tests/ui/threads-sendsync/std-sync-right-kind-impls.rs similarity index 100% rename from src/test/ui/threads-sendsync/std-sync-right-kind-impls.rs rename to tests/ui/threads-sendsync/std-sync-right-kind-impls.rs diff --git a/src/test/ui/threads-sendsync/sync-send-atomics.rs b/tests/ui/threads-sendsync/sync-send-atomics.rs similarity index 100% rename from src/test/ui/threads-sendsync/sync-send-atomics.rs rename to tests/ui/threads-sendsync/sync-send-atomics.rs diff --git a/src/test/ui/threads-sendsync/sync-send-in-std.rs b/tests/ui/threads-sendsync/sync-send-in-std.rs similarity index 100% rename from src/test/ui/threads-sendsync/sync-send-in-std.rs rename to tests/ui/threads-sendsync/sync-send-in-std.rs diff --git a/src/test/ui/threads-sendsync/sync-send-iterators-in-libcollections.rs b/tests/ui/threads-sendsync/sync-send-iterators-in-libcollections.rs similarity index 100% rename from src/test/ui/threads-sendsync/sync-send-iterators-in-libcollections.rs rename to tests/ui/threads-sendsync/sync-send-iterators-in-libcollections.rs diff --git a/src/test/ui/threads-sendsync/sync-send-iterators-in-libcore.rs b/tests/ui/threads-sendsync/sync-send-iterators-in-libcore.rs similarity index 100% rename from src/test/ui/threads-sendsync/sync-send-iterators-in-libcore.rs rename to tests/ui/threads-sendsync/sync-send-iterators-in-libcore.rs diff --git a/src/test/ui/threads-sendsync/task-comm-0.rs b/tests/ui/threads-sendsync/task-comm-0.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-0.rs rename to tests/ui/threads-sendsync/task-comm-0.rs diff --git a/src/test/ui/threads-sendsync/task-comm-1.rs b/tests/ui/threads-sendsync/task-comm-1.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-1.rs rename to tests/ui/threads-sendsync/task-comm-1.rs diff --git a/src/test/ui/threads-sendsync/task-comm-10.rs b/tests/ui/threads-sendsync/task-comm-10.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-10.rs rename to tests/ui/threads-sendsync/task-comm-10.rs diff --git a/src/test/ui/threads-sendsync/task-comm-11.rs b/tests/ui/threads-sendsync/task-comm-11.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-11.rs rename to tests/ui/threads-sendsync/task-comm-11.rs diff --git a/src/test/ui/threads-sendsync/task-comm-12.rs b/tests/ui/threads-sendsync/task-comm-12.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-12.rs rename to tests/ui/threads-sendsync/task-comm-12.rs diff --git a/src/test/ui/threads-sendsync/task-comm-13.rs b/tests/ui/threads-sendsync/task-comm-13.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-13.rs rename to tests/ui/threads-sendsync/task-comm-13.rs diff --git a/src/test/ui/threads-sendsync/task-comm-14.rs b/tests/ui/threads-sendsync/task-comm-14.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-14.rs rename to tests/ui/threads-sendsync/task-comm-14.rs diff --git a/src/test/ui/threads-sendsync/task-comm-15.rs b/tests/ui/threads-sendsync/task-comm-15.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-15.rs rename to tests/ui/threads-sendsync/task-comm-15.rs diff --git a/src/test/ui/threads-sendsync/task-comm-16.rs b/tests/ui/threads-sendsync/task-comm-16.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-16.rs rename to tests/ui/threads-sendsync/task-comm-16.rs diff --git a/src/test/ui/threads-sendsync/task-comm-17.rs b/tests/ui/threads-sendsync/task-comm-17.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-17.rs rename to tests/ui/threads-sendsync/task-comm-17.rs diff --git a/src/test/ui/threads-sendsync/task-comm-3.rs b/tests/ui/threads-sendsync/task-comm-3.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-3.rs rename to tests/ui/threads-sendsync/task-comm-3.rs diff --git a/src/test/ui/threads-sendsync/task-comm-4.rs b/tests/ui/threads-sendsync/task-comm-4.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-4.rs rename to tests/ui/threads-sendsync/task-comm-4.rs diff --git a/src/test/ui/threads-sendsync/task-comm-5.rs b/tests/ui/threads-sendsync/task-comm-5.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-5.rs rename to tests/ui/threads-sendsync/task-comm-5.rs diff --git a/src/test/ui/threads-sendsync/task-comm-6.rs b/tests/ui/threads-sendsync/task-comm-6.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-6.rs rename to tests/ui/threads-sendsync/task-comm-6.rs diff --git a/src/test/ui/threads-sendsync/task-comm-7.rs b/tests/ui/threads-sendsync/task-comm-7.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-7.rs rename to tests/ui/threads-sendsync/task-comm-7.rs diff --git a/src/test/ui/threads-sendsync/task-comm-9.rs b/tests/ui/threads-sendsync/task-comm-9.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-9.rs rename to tests/ui/threads-sendsync/task-comm-9.rs diff --git a/src/test/ui/threads-sendsync/task-comm-chan-nil.rs b/tests/ui/threads-sendsync/task-comm-chan-nil.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-comm-chan-nil.rs rename to tests/ui/threads-sendsync/task-comm-chan-nil.rs diff --git a/src/test/ui/threads-sendsync/task-life-0.rs b/tests/ui/threads-sendsync/task-life-0.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-life-0.rs rename to tests/ui/threads-sendsync/task-life-0.rs diff --git a/src/test/ui/threads-sendsync/task-spawn-barefn.rs b/tests/ui/threads-sendsync/task-spawn-barefn.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-spawn-barefn.rs rename to tests/ui/threads-sendsync/task-spawn-barefn.rs diff --git a/src/test/ui/threads-sendsync/task-spawn-move-and-copy.rs b/tests/ui/threads-sendsync/task-spawn-move-and-copy.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-spawn-move-and-copy.rs rename to tests/ui/threads-sendsync/task-spawn-move-and-copy.rs diff --git a/src/test/ui/threads-sendsync/task-stderr.rs b/tests/ui/threads-sendsync/task-stderr.rs similarity index 100% rename from src/test/ui/threads-sendsync/task-stderr.rs rename to tests/ui/threads-sendsync/task-stderr.rs diff --git a/src/test/ui/threads-sendsync/tcp-stress.rs b/tests/ui/threads-sendsync/tcp-stress.rs similarity index 100% rename from src/test/ui/threads-sendsync/tcp-stress.rs rename to tests/ui/threads-sendsync/tcp-stress.rs diff --git a/src/test/ui/threads-sendsync/test-tasks-invalid-value.rs b/tests/ui/threads-sendsync/test-tasks-invalid-value.rs similarity index 100% rename from src/test/ui/threads-sendsync/test-tasks-invalid-value.rs rename to tests/ui/threads-sendsync/test-tasks-invalid-value.rs diff --git a/src/test/ui/threads-sendsync/thread-local-extern-static.rs b/tests/ui/threads-sendsync/thread-local-extern-static.rs similarity index 100% rename from src/test/ui/threads-sendsync/thread-local-extern-static.rs rename to tests/ui/threads-sendsync/thread-local-extern-static.rs diff --git a/src/test/ui/threads-sendsync/thread-local-syntax.rs b/tests/ui/threads-sendsync/thread-local-syntax.rs similarity index 100% rename from src/test/ui/threads-sendsync/thread-local-syntax.rs rename to tests/ui/threads-sendsync/thread-local-syntax.rs diff --git a/src/test/ui/threads-sendsync/threads.rs b/tests/ui/threads-sendsync/threads.rs similarity index 100% rename from src/test/ui/threads-sendsync/threads.rs rename to tests/ui/threads-sendsync/threads.rs diff --git a/src/test/ui/threads-sendsync/tls-dtors-are-run-in-a-static-binary.rs b/tests/ui/threads-sendsync/tls-dtors-are-run-in-a-static-binary.rs similarity index 100% rename from src/test/ui/threads-sendsync/tls-dtors-are-run-in-a-static-binary.rs rename to tests/ui/threads-sendsync/tls-dtors-are-run-in-a-static-binary.rs diff --git a/src/test/ui/threads-sendsync/tls-init-on-init.rs b/tests/ui/threads-sendsync/tls-init-on-init.rs similarity index 100% rename from src/test/ui/threads-sendsync/tls-init-on-init.rs rename to tests/ui/threads-sendsync/tls-init-on-init.rs diff --git a/src/test/ui/threads-sendsync/tls-try-with.rs b/tests/ui/threads-sendsync/tls-try-with.rs similarity index 100% rename from src/test/ui/threads-sendsync/tls-try-with.rs rename to tests/ui/threads-sendsync/tls-try-with.rs diff --git a/src/test/ui/threads-sendsync/trivial-message.rs b/tests/ui/threads-sendsync/trivial-message.rs similarity index 100% rename from src/test/ui/threads-sendsync/trivial-message.rs rename to tests/ui/threads-sendsync/trivial-message.rs diff --git a/src/test/ui/threads-sendsync/unwind-resource.rs b/tests/ui/threads-sendsync/unwind-resource.rs similarity index 100% rename from src/test/ui/threads-sendsync/unwind-resource.rs rename to tests/ui/threads-sendsync/unwind-resource.rs diff --git a/src/test/ui/threads-sendsync/yield.rs b/tests/ui/threads-sendsync/yield.rs similarity index 100% rename from src/test/ui/threads-sendsync/yield.rs rename to tests/ui/threads-sendsync/yield.rs diff --git a/src/test/ui/threads-sendsync/yield1.rs b/tests/ui/threads-sendsync/yield1.rs similarity index 100% rename from src/test/ui/threads-sendsync/yield1.rs rename to tests/ui/threads-sendsync/yield1.rs diff --git a/src/test/ui/threads-sendsync/yield2.rs b/tests/ui/threads-sendsync/yield2.rs similarity index 100% rename from src/test/ui/threads-sendsync/yield2.rs rename to tests/ui/threads-sendsync/yield2.rs diff --git a/src/test/ui/tool-attributes/diagnostic_item.rs b/tests/ui/tool-attributes/diagnostic_item.rs similarity index 100% rename from src/test/ui/tool-attributes/diagnostic_item.rs rename to tests/ui/tool-attributes/diagnostic_item.rs diff --git a/src/test/ui/tool-attributes/diagnostic_item.stderr b/tests/ui/tool-attributes/diagnostic_item.stderr similarity index 100% rename from src/test/ui/tool-attributes/diagnostic_item.stderr rename to tests/ui/tool-attributes/diagnostic_item.stderr diff --git a/src/test/ui/tool-attributes/diagnostic_item2.rs b/tests/ui/tool-attributes/diagnostic_item2.rs similarity index 100% rename from src/test/ui/tool-attributes/diagnostic_item2.rs rename to tests/ui/tool-attributes/diagnostic_item2.rs diff --git a/src/test/ui/tool-attributes/diagnostic_item3.rs b/tests/ui/tool-attributes/diagnostic_item3.rs similarity index 100% rename from src/test/ui/tool-attributes/diagnostic_item3.rs rename to tests/ui/tool-attributes/diagnostic_item3.rs diff --git a/src/test/ui/tool-attributes/tool-attributes-misplaced-1.rs b/tests/ui/tool-attributes/tool-attributes-misplaced-1.rs similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-misplaced-1.rs rename to tests/ui/tool-attributes/tool-attributes-misplaced-1.rs diff --git a/src/test/ui/tool-attributes/tool-attributes-misplaced-1.stderr b/tests/ui/tool-attributes/tool-attributes-misplaced-1.stderr similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-misplaced-1.stderr rename to tests/ui/tool-attributes/tool-attributes-misplaced-1.stderr diff --git a/src/test/ui/tool-attributes/tool-attributes-misplaced-2.rs b/tests/ui/tool-attributes/tool-attributes-misplaced-2.rs similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-misplaced-2.rs rename to tests/ui/tool-attributes/tool-attributes-misplaced-2.rs diff --git a/src/test/ui/tool-attributes/tool-attributes-misplaced-2.stderr b/tests/ui/tool-attributes/tool-attributes-misplaced-2.stderr similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-misplaced-2.stderr rename to tests/ui/tool-attributes/tool-attributes-misplaced-2.stderr diff --git a/src/test/ui/tool-attributes/tool-attributes-shadowing.rs b/tests/ui/tool-attributes/tool-attributes-shadowing.rs similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-shadowing.rs rename to tests/ui/tool-attributes/tool-attributes-shadowing.rs diff --git a/src/test/ui/tool-attributes/tool-attributes-shadowing.stderr b/tests/ui/tool-attributes/tool-attributes-shadowing.stderr similarity index 100% rename from src/test/ui/tool-attributes/tool-attributes-shadowing.stderr rename to tests/ui/tool-attributes/tool-attributes-shadowing.stderr diff --git a/src/test/ui/tool_lints-fail.rs b/tests/ui/tool_lints-fail.rs similarity index 100% rename from src/test/ui/tool_lints-fail.rs rename to tests/ui/tool_lints-fail.rs diff --git a/src/test/ui/tool_lints-fail.stderr b/tests/ui/tool_lints-fail.stderr similarity index 100% rename from src/test/ui/tool_lints-fail.stderr rename to tests/ui/tool_lints-fail.stderr diff --git a/src/test/ui/tool_lints-rpass.rs b/tests/ui/tool_lints-rpass.rs similarity index 100% rename from src/test/ui/tool_lints-rpass.rs rename to tests/ui/tool_lints-rpass.rs diff --git a/src/test/ui/tool_lints.rs b/tests/ui/tool_lints.rs similarity index 100% rename from src/test/ui/tool_lints.rs rename to tests/ui/tool_lints.rs diff --git a/src/test/ui/tool_lints.stderr b/tests/ui/tool_lints.stderr similarity index 100% rename from src/test/ui/tool_lints.stderr rename to tests/ui/tool_lints.stderr diff --git a/src/test/ui/tool_lints_2018_preview.rs b/tests/ui/tool_lints_2018_preview.rs similarity index 100% rename from src/test/ui/tool_lints_2018_preview.rs rename to tests/ui/tool_lints_2018_preview.rs diff --git a/src/test/ui/track-diagnostics/track.rs b/tests/ui/track-diagnostics/track.rs similarity index 100% rename from src/test/ui/track-diagnostics/track.rs rename to tests/ui/track-diagnostics/track.rs diff --git a/src/test/ui/track-diagnostics/track.stderr b/tests/ui/track-diagnostics/track.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track.stderr rename to tests/ui/track-diagnostics/track.stderr diff --git a/src/test/ui/track-diagnostics/track2.rs b/tests/ui/track-diagnostics/track2.rs similarity index 100% rename from src/test/ui/track-diagnostics/track2.rs rename to tests/ui/track-diagnostics/track2.rs diff --git a/src/test/ui/track-diagnostics/track2.stderr b/tests/ui/track-diagnostics/track2.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track2.stderr rename to tests/ui/track-diagnostics/track2.stderr diff --git a/src/test/ui/track-diagnostics/track3.rs b/tests/ui/track-diagnostics/track3.rs similarity index 100% rename from src/test/ui/track-diagnostics/track3.rs rename to tests/ui/track-diagnostics/track3.rs diff --git a/src/test/ui/track-diagnostics/track3.stderr b/tests/ui/track-diagnostics/track3.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track3.stderr rename to tests/ui/track-diagnostics/track3.stderr diff --git a/src/test/ui/track-diagnostics/track4.rs b/tests/ui/track-diagnostics/track4.rs similarity index 100% rename from src/test/ui/track-diagnostics/track4.rs rename to tests/ui/track-diagnostics/track4.rs diff --git a/src/test/ui/track-diagnostics/track4.stderr b/tests/ui/track-diagnostics/track4.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track4.stderr rename to tests/ui/track-diagnostics/track4.stderr diff --git a/src/test/ui/track-diagnostics/track5.rs b/tests/ui/track-diagnostics/track5.rs similarity index 100% rename from src/test/ui/track-diagnostics/track5.rs rename to tests/ui/track-diagnostics/track5.rs diff --git a/src/test/ui/track-diagnostics/track5.stderr b/tests/ui/track-diagnostics/track5.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track5.stderr rename to tests/ui/track-diagnostics/track5.stderr diff --git a/src/test/ui/track-diagnostics/track6.rs b/tests/ui/track-diagnostics/track6.rs similarity index 100% rename from src/test/ui/track-diagnostics/track6.rs rename to tests/ui/track-diagnostics/track6.rs diff --git a/src/test/ui/track-diagnostics/track6.stderr b/tests/ui/track-diagnostics/track6.stderr similarity index 100% rename from src/test/ui/track-diagnostics/track6.stderr rename to tests/ui/track-diagnostics/track6.stderr diff --git a/src/test/ui/trailing-comma.rs b/tests/ui/trailing-comma.rs similarity index 100% rename from src/test/ui/trailing-comma.rs rename to tests/ui/trailing-comma.rs diff --git a/src/test/ui/trait-bounds/impl-bound-with-references-error.rs b/tests/ui/trait-bounds/impl-bound-with-references-error.rs similarity index 100% rename from src/test/ui/trait-bounds/impl-bound-with-references-error.rs rename to tests/ui/trait-bounds/impl-bound-with-references-error.rs diff --git a/src/test/ui/trait-bounds/impl-bound-with-references-error.stderr b/tests/ui/trait-bounds/impl-bound-with-references-error.stderr similarity index 100% rename from src/test/ui/trait-bounds/impl-bound-with-references-error.stderr rename to tests/ui/trait-bounds/impl-bound-with-references-error.stderr diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.rs b/tests/ui/trait-bounds/impl-derived-implicit-sized-bound-2.rs similarity index 100% rename from src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.rs rename to tests/ui/trait-bounds/impl-derived-implicit-sized-bound-2.rs diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr b/tests/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr similarity index 100% rename from src/test/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr rename to tests/ui/trait-bounds/impl-derived-implicit-sized-bound-2.stderr diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.rs b/tests/ui/trait-bounds/impl-derived-implicit-sized-bound.rs similarity index 100% rename from src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.rs rename to tests/ui/trait-bounds/impl-derived-implicit-sized-bound.rs diff --git a/src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr b/tests/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr similarity index 100% rename from src/test/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr rename to tests/ui/trait-bounds/impl-derived-implicit-sized-bound.stderr diff --git a/src/test/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.rs b/tests/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.rs similarity index 100% rename from src/test/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.rs rename to tests/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.rs diff --git a/src/test/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.stderr b/tests/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.stderr similarity index 100% rename from src/test/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.stderr rename to tests/ui/trait-bounds/impl-missing-where-clause-lifetimes-from-trait.stderr diff --git a/src/test/ui/trait-bounds/issue-75961.rs b/tests/ui/trait-bounds/issue-75961.rs similarity index 100% rename from src/test/ui/trait-bounds/issue-75961.rs rename to tests/ui/trait-bounds/issue-75961.rs diff --git a/src/test/ui/trait-bounds/issue-93008.rs b/tests/ui/trait-bounds/issue-93008.rs similarity index 100% rename from src/test/ui/trait-bounds/issue-93008.rs rename to tests/ui/trait-bounds/issue-93008.rs diff --git a/src/test/ui/trait-bounds/issue-94680.rs b/tests/ui/trait-bounds/issue-94680.rs similarity index 100% rename from src/test/ui/trait-bounds/issue-94680.rs rename to tests/ui/trait-bounds/issue-94680.rs diff --git a/src/test/ui/trait-bounds/issue-94999.rs b/tests/ui/trait-bounds/issue-94999.rs similarity index 100% rename from src/test/ui/trait-bounds/issue-94999.rs rename to tests/ui/trait-bounds/issue-94999.rs diff --git a/src/test/ui/trait-bounds/issue-95640.rs b/tests/ui/trait-bounds/issue-95640.rs similarity index 100% rename from src/test/ui/trait-bounds/issue-95640.rs rename to tests/ui/trait-bounds/issue-95640.rs diff --git a/src/test/ui/trait-bounds/mismatch-fn-trait.rs b/tests/ui/trait-bounds/mismatch-fn-trait.rs similarity index 100% rename from src/test/ui/trait-bounds/mismatch-fn-trait.rs rename to tests/ui/trait-bounds/mismatch-fn-trait.rs diff --git a/src/test/ui/trait-bounds/mismatch-fn-trait.stderr b/tests/ui/trait-bounds/mismatch-fn-trait.stderr similarity index 100% rename from src/test/ui/trait-bounds/mismatch-fn-trait.stderr rename to tests/ui/trait-bounds/mismatch-fn-trait.stderr diff --git a/src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.fixed b/tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.fixed similarity index 100% rename from src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.fixed rename to tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.fixed diff --git a/src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.rs b/tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.rs similarity index 100% rename from src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.rs rename to tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.rs diff --git a/src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.stderr b/tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.stderr similarity index 100% rename from src/test/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.stderr rename to tests/ui/trait-bounds/shadowed-path-in-trait-bound-suggestion.stderr diff --git a/src/test/ui/trait-bounds/unsized-bound.rs b/tests/ui/trait-bounds/unsized-bound.rs similarity index 100% rename from src/test/ui/trait-bounds/unsized-bound.rs rename to tests/ui/trait-bounds/unsized-bound.rs diff --git a/src/test/ui/trait-bounds/unsized-bound.stderr b/tests/ui/trait-bounds/unsized-bound.stderr similarity index 100% rename from src/test/ui/trait-bounds/unsized-bound.stderr rename to tests/ui/trait-bounds/unsized-bound.stderr diff --git a/src/test/ui/trait-impl-bound-suggestions.fixed b/tests/ui/trait-impl-bound-suggestions.fixed similarity index 100% rename from src/test/ui/trait-impl-bound-suggestions.fixed rename to tests/ui/trait-impl-bound-suggestions.fixed diff --git a/src/test/ui/trait-impl-bound-suggestions.rs b/tests/ui/trait-impl-bound-suggestions.rs similarity index 100% rename from src/test/ui/trait-impl-bound-suggestions.rs rename to tests/ui/trait-impl-bound-suggestions.rs diff --git a/src/test/ui/trait-impl-bound-suggestions.stderr b/tests/ui/trait-impl-bound-suggestions.stderr similarity index 100% rename from src/test/ui/trait-impl-bound-suggestions.stderr rename to tests/ui/trait-impl-bound-suggestions.stderr diff --git a/src/test/ui/trait-method-number-parameters.rs b/tests/ui/trait-method-number-parameters.rs similarity index 100% rename from src/test/ui/trait-method-number-parameters.rs rename to tests/ui/trait-method-number-parameters.rs diff --git a/src/test/ui/trait-method-number-parameters.stderr b/tests/ui/trait-method-number-parameters.stderr similarity index 100% rename from src/test/ui/trait-method-number-parameters.stderr rename to tests/ui/trait-method-number-parameters.stderr diff --git a/src/test/ui/traits/alias/ambiguous.rs b/tests/ui/traits/alias/ambiguous.rs similarity index 100% rename from src/test/ui/traits/alias/ambiguous.rs rename to tests/ui/traits/alias/ambiguous.rs diff --git a/src/test/ui/traits/alias/ambiguous.stderr b/tests/ui/traits/alias/ambiguous.stderr similarity index 100% rename from src/test/ui/traits/alias/ambiguous.stderr rename to tests/ui/traits/alias/ambiguous.stderr diff --git a/src/test/ui/traits/alias/auxiliary/greeter.rs b/tests/ui/traits/alias/auxiliary/greeter.rs similarity index 100% rename from src/test/ui/traits/alias/auxiliary/greeter.rs rename to tests/ui/traits/alias/auxiliary/greeter.rs diff --git a/src/test/ui/traits/alias/auxiliary/send_sync.rs b/tests/ui/traits/alias/auxiliary/send_sync.rs similarity index 100% rename from src/test/ui/traits/alias/auxiliary/send_sync.rs rename to tests/ui/traits/alias/auxiliary/send_sync.rs diff --git a/src/test/ui/traits/alias/basic.rs b/tests/ui/traits/alias/basic.rs similarity index 100% rename from src/test/ui/traits/alias/basic.rs rename to tests/ui/traits/alias/basic.rs diff --git a/src/test/ui/traits/alias/bounds.rs b/tests/ui/traits/alias/bounds.rs similarity index 100% rename from src/test/ui/traits/alias/bounds.rs rename to tests/ui/traits/alias/bounds.rs diff --git a/src/test/ui/traits/alias/cross-crate.rs b/tests/ui/traits/alias/cross-crate.rs similarity index 100% rename from src/test/ui/traits/alias/cross-crate.rs rename to tests/ui/traits/alias/cross-crate.rs diff --git a/src/test/ui/traits/alias/cross-crate.stderr b/tests/ui/traits/alias/cross-crate.stderr similarity index 100% rename from src/test/ui/traits/alias/cross-crate.stderr rename to tests/ui/traits/alias/cross-crate.stderr diff --git a/src/test/ui/traits/alias/generic-default-in-dyn.rs b/tests/ui/traits/alias/generic-default-in-dyn.rs similarity index 100% rename from src/test/ui/traits/alias/generic-default-in-dyn.rs rename to tests/ui/traits/alias/generic-default-in-dyn.rs diff --git a/src/test/ui/traits/alias/generic-default-in-dyn.stderr b/tests/ui/traits/alias/generic-default-in-dyn.stderr similarity index 100% rename from src/test/ui/traits/alias/generic-default-in-dyn.stderr rename to tests/ui/traits/alias/generic-default-in-dyn.stderr diff --git a/src/test/ui/traits/alias/impl.rs b/tests/ui/traits/alias/impl.rs similarity index 100% rename from src/test/ui/traits/alias/impl.rs rename to tests/ui/traits/alias/impl.rs diff --git a/src/test/ui/traits/alias/impl.stderr b/tests/ui/traits/alias/impl.stderr similarity index 100% rename from src/test/ui/traits/alias/impl.stderr rename to tests/ui/traits/alias/impl.stderr diff --git a/src/test/ui/traits/alias/import-cross-crate.rs b/tests/ui/traits/alias/import-cross-crate.rs similarity index 100% rename from src/test/ui/traits/alias/import-cross-crate.rs rename to tests/ui/traits/alias/import-cross-crate.rs diff --git a/src/test/ui/traits/alias/import.rs b/tests/ui/traits/alias/import.rs similarity index 100% rename from src/test/ui/traits/alias/import.rs rename to tests/ui/traits/alias/import.rs diff --git a/src/test/ui/traits/alias/issue-60021-assoc-method-resolve.rs b/tests/ui/traits/alias/issue-60021-assoc-method-resolve.rs similarity index 100% rename from src/test/ui/traits/alias/issue-60021-assoc-method-resolve.rs rename to tests/ui/traits/alias/issue-60021-assoc-method-resolve.rs diff --git a/src/test/ui/traits/alias/issue-72415-assoc-const-resolve.rs b/tests/ui/traits/alias/issue-72415-assoc-const-resolve.rs similarity index 100% rename from src/test/ui/traits/alias/issue-72415-assoc-const-resolve.rs rename to tests/ui/traits/alias/issue-72415-assoc-const-resolve.rs diff --git a/src/test/ui/traits/alias/issue-75983.rs b/tests/ui/traits/alias/issue-75983.rs similarity index 100% rename from src/test/ui/traits/alias/issue-75983.rs rename to tests/ui/traits/alias/issue-75983.rs diff --git a/src/test/ui/traits/alias/issue-83613.rs b/tests/ui/traits/alias/issue-83613.rs similarity index 100% rename from src/test/ui/traits/alias/issue-83613.rs rename to tests/ui/traits/alias/issue-83613.rs diff --git a/src/test/ui/traits/alias/issue-83613.stderr b/tests/ui/traits/alias/issue-83613.stderr similarity index 100% rename from src/test/ui/traits/alias/issue-83613.stderr rename to tests/ui/traits/alias/issue-83613.stderr diff --git a/src/test/ui/traits/alias/maybe-bound.rs b/tests/ui/traits/alias/maybe-bound.rs similarity index 100% rename from src/test/ui/traits/alias/maybe-bound.rs rename to tests/ui/traits/alias/maybe-bound.rs diff --git a/src/test/ui/traits/alias/no-duplicates.rs b/tests/ui/traits/alias/no-duplicates.rs similarity index 100% rename from src/test/ui/traits/alias/no-duplicates.rs rename to tests/ui/traits/alias/no-duplicates.rs diff --git a/src/test/ui/traits/alias/no-duplicates.stderr b/tests/ui/traits/alias/no-duplicates.stderr similarity index 100% rename from src/test/ui/traits/alias/no-duplicates.stderr rename to tests/ui/traits/alias/no-duplicates.stderr diff --git a/src/test/ui/traits/alias/no-extra-traits.rs b/tests/ui/traits/alias/no-extra-traits.rs similarity index 100% rename from src/test/ui/traits/alias/no-extra-traits.rs rename to tests/ui/traits/alias/no-extra-traits.rs diff --git a/src/test/ui/traits/alias/no-extra-traits.stderr b/tests/ui/traits/alias/no-extra-traits.stderr similarity index 100% rename from src/test/ui/traits/alias/no-extra-traits.stderr rename to tests/ui/traits/alias/no-extra-traits.stderr diff --git a/src/test/ui/traits/alias/object-fail.rs b/tests/ui/traits/alias/object-fail.rs similarity index 100% rename from src/test/ui/traits/alias/object-fail.rs rename to tests/ui/traits/alias/object-fail.rs diff --git a/src/test/ui/traits/alias/object-fail.stderr b/tests/ui/traits/alias/object-fail.stderr similarity index 100% rename from src/test/ui/traits/alias/object-fail.stderr rename to tests/ui/traits/alias/object-fail.stderr diff --git a/src/test/ui/traits/alias/object-wf.rs b/tests/ui/traits/alias/object-wf.rs similarity index 100% rename from src/test/ui/traits/alias/object-wf.rs rename to tests/ui/traits/alias/object-wf.rs diff --git a/src/test/ui/traits/alias/object.rs b/tests/ui/traits/alias/object.rs similarity index 100% rename from src/test/ui/traits/alias/object.rs rename to tests/ui/traits/alias/object.rs diff --git a/src/test/ui/traits/alias/only-maybe-bound.rs b/tests/ui/traits/alias/only-maybe-bound.rs similarity index 100% rename from src/test/ui/traits/alias/only-maybe-bound.rs rename to tests/ui/traits/alias/only-maybe-bound.rs diff --git a/src/test/ui/traits/alias/only-maybe-bound.stderr b/tests/ui/traits/alias/only-maybe-bound.stderr similarity index 100% rename from src/test/ui/traits/alias/only-maybe-bound.stderr rename to tests/ui/traits/alias/only-maybe-bound.stderr diff --git a/src/test/ui/traits/alias/self-in-const-generics.rs b/tests/ui/traits/alias/self-in-const-generics.rs similarity index 100% rename from src/test/ui/traits/alias/self-in-const-generics.rs rename to tests/ui/traits/alias/self-in-const-generics.rs diff --git a/src/test/ui/traits/alias/self-in-const-generics.stderr b/tests/ui/traits/alias/self-in-const-generics.stderr similarity index 100% rename from src/test/ui/traits/alias/self-in-const-generics.stderr rename to tests/ui/traits/alias/self-in-const-generics.stderr diff --git a/src/test/ui/traits/alias/self-in-generics.rs b/tests/ui/traits/alias/self-in-generics.rs similarity index 100% rename from src/test/ui/traits/alias/self-in-generics.rs rename to tests/ui/traits/alias/self-in-generics.rs diff --git a/src/test/ui/traits/alias/self-in-generics.stderr b/tests/ui/traits/alias/self-in-generics.stderr similarity index 100% rename from src/test/ui/traits/alias/self-in-generics.stderr rename to tests/ui/traits/alias/self-in-generics.stderr diff --git a/src/test/ui/traits/alias/style_lint.rs b/tests/ui/traits/alias/style_lint.rs similarity index 100% rename from src/test/ui/traits/alias/style_lint.rs rename to tests/ui/traits/alias/style_lint.rs diff --git a/src/test/ui/traits/alias/style_lint.stderr b/tests/ui/traits/alias/style_lint.stderr similarity index 100% rename from src/test/ui/traits/alias/style_lint.stderr rename to tests/ui/traits/alias/style_lint.stderr diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed similarity index 100% rename from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed rename to tests/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.rs b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.rs similarity index 100% rename from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.rs rename to tests/ui/traits/alias/suggest-trait-alias-instead-of-type.rs diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr similarity index 100% rename from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr rename to tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr diff --git a/src/test/ui/traits/alias/syntax-fail.rs b/tests/ui/traits/alias/syntax-fail.rs similarity index 100% rename from src/test/ui/traits/alias/syntax-fail.rs rename to tests/ui/traits/alias/syntax-fail.rs diff --git a/src/test/ui/traits/alias/syntax-fail.stderr b/tests/ui/traits/alias/syntax-fail.stderr similarity index 100% rename from src/test/ui/traits/alias/syntax-fail.stderr rename to tests/ui/traits/alias/syntax-fail.stderr diff --git a/src/test/ui/traits/alias/syntax.rs b/tests/ui/traits/alias/syntax.rs similarity index 100% rename from src/test/ui/traits/alias/syntax.rs rename to tests/ui/traits/alias/syntax.rs diff --git a/src/test/ui/traits/alias/wf.rs b/tests/ui/traits/alias/wf.rs similarity index 100% rename from src/test/ui/traits/alias/wf.rs rename to tests/ui/traits/alias/wf.rs diff --git a/src/test/ui/traits/alias/wf.stderr b/tests/ui/traits/alias/wf.stderr similarity index 100% rename from src/test/ui/traits/alias/wf.stderr rename to tests/ui/traits/alias/wf.stderr diff --git a/src/test/ui/traits/alignment-gep-tup-like-1.rs b/tests/ui/traits/alignment-gep-tup-like-1.rs similarity index 100% rename from src/test/ui/traits/alignment-gep-tup-like-1.rs rename to tests/ui/traits/alignment-gep-tup-like-1.rs diff --git a/src/test/ui/traits/anon-static-method.rs b/tests/ui/traits/anon-static-method.rs similarity index 100% rename from src/test/ui/traits/anon-static-method.rs rename to tests/ui/traits/anon-static-method.rs diff --git a/src/test/ui/traits/anon_trait_static_method_exe.rs b/tests/ui/traits/anon_trait_static_method_exe.rs similarity index 100% rename from src/test/ui/traits/anon_trait_static_method_exe.rs rename to tests/ui/traits/anon_trait_static_method_exe.rs diff --git a/src/test/ui/traits/as-struct-constructor.rs b/tests/ui/traits/as-struct-constructor.rs similarity index 100% rename from src/test/ui/traits/as-struct-constructor.rs rename to tests/ui/traits/as-struct-constructor.rs diff --git a/src/test/ui/traits/as-struct-constructor.stderr b/tests/ui/traits/as-struct-constructor.stderr similarity index 100% rename from src/test/ui/traits/as-struct-constructor.stderr rename to tests/ui/traits/as-struct-constructor.stderr diff --git a/src/test/ui/traits/assignability-trait.rs b/tests/ui/traits/assignability-trait.rs similarity index 100% rename from src/test/ui/traits/assignability-trait.rs rename to tests/ui/traits/assignability-trait.rs diff --git a/src/test/ui/traits/assoc-type-in-superbad.rs b/tests/ui/traits/assoc-type-in-superbad.rs similarity index 100% rename from src/test/ui/traits/assoc-type-in-superbad.rs rename to tests/ui/traits/assoc-type-in-superbad.rs diff --git a/src/test/ui/traits/assoc-type-in-superbad.stderr b/tests/ui/traits/assoc-type-in-superbad.stderr similarity index 100% rename from src/test/ui/traits/assoc-type-in-superbad.stderr rename to tests/ui/traits/assoc-type-in-superbad.stderr diff --git a/src/test/ui/traits/assoc-type-in-supertrait.rs b/tests/ui/traits/assoc-type-in-supertrait.rs similarity index 100% rename from src/test/ui/traits/assoc-type-in-supertrait.rs rename to tests/ui/traits/assoc-type-in-supertrait.rs diff --git a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs rename to tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs diff --git a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr rename to tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr similarity index 100% rename from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr rename to tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr diff --git a/src/test/ui/traits/associated_type_bound/issue-51446.rs b/tests/ui/traits/associated_type_bound/issue-51446.rs similarity index 100% rename from src/test/ui/traits/associated_type_bound/issue-51446.rs rename to tests/ui/traits/associated_type_bound/issue-51446.rs diff --git a/src/test/ui/traits/astconv-cycle-between-and-type.rs b/tests/ui/traits/astconv-cycle-between-and-type.rs similarity index 100% rename from src/test/ui/traits/astconv-cycle-between-and-type.rs rename to tests/ui/traits/astconv-cycle-between-and-type.rs diff --git a/src/test/ui/traits/augmented-assignments-trait.rs b/tests/ui/traits/augmented-assignments-trait.rs similarity index 100% rename from src/test/ui/traits/augmented-assignments-trait.rs rename to tests/ui/traits/augmented-assignments-trait.rs diff --git a/src/test/ui/traits/auxiliary/anon_trait_static_method_lib.rs b/tests/ui/traits/auxiliary/anon_trait_static_method_lib.rs similarity index 100% rename from src/test/ui/traits/auxiliary/anon_trait_static_method_lib.rs rename to tests/ui/traits/auxiliary/anon_trait_static_method_lib.rs diff --git a/src/test/ui/traits/auxiliary/go_trait.rs b/tests/ui/traits/auxiliary/go_trait.rs similarity index 100% rename from src/test/ui/traits/auxiliary/go_trait.rs rename to tests/ui/traits/auxiliary/go_trait.rs diff --git a/src/test/ui/traits/auxiliary/issue_89119_intercrate_caching.rs b/tests/ui/traits/auxiliary/issue_89119_intercrate_caching.rs similarity index 100% rename from src/test/ui/traits/auxiliary/issue_89119_intercrate_caching.rs rename to tests/ui/traits/auxiliary/issue_89119_intercrate_caching.rs diff --git a/src/test/ui/traits/auxiliary/trait_safety_lib.rs b/tests/ui/traits/auxiliary/trait_safety_lib.rs similarity index 100% rename from src/test/ui/traits/auxiliary/trait_safety_lib.rs rename to tests/ui/traits/auxiliary/trait_safety_lib.rs diff --git a/src/test/ui/traits/auxiliary/traitimpl.rs b/tests/ui/traits/auxiliary/traitimpl.rs similarity index 100% rename from src/test/ui/traits/auxiliary/traitimpl.rs rename to tests/ui/traits/auxiliary/traitimpl.rs diff --git a/src/test/ui/traits/bad-method-typaram-kind.rs b/tests/ui/traits/bad-method-typaram-kind.rs similarity index 100% rename from src/test/ui/traits/bad-method-typaram-kind.rs rename to tests/ui/traits/bad-method-typaram-kind.rs diff --git a/src/test/ui/traits/bad-method-typaram-kind.stderr b/tests/ui/traits/bad-method-typaram-kind.stderr similarity index 100% rename from src/test/ui/traits/bad-method-typaram-kind.stderr rename to tests/ui/traits/bad-method-typaram-kind.stderr diff --git a/src/test/ui/traits/bad-sized.rs b/tests/ui/traits/bad-sized.rs similarity index 100% rename from src/test/ui/traits/bad-sized.rs rename to tests/ui/traits/bad-sized.rs diff --git a/src/test/ui/traits/bad-sized.stderr b/tests/ui/traits/bad-sized.stderr similarity index 100% rename from src/test/ui/traits/bad-sized.stderr rename to tests/ui/traits/bad-sized.stderr diff --git a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.rs b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.rs similarity index 100% rename from src/test/ui/traits/bound/assoc-fn-bound-root-obligation.rs rename to tests/ui/traits/bound/assoc-fn-bound-root-obligation.rs diff --git a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.stderr b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.stderr similarity index 100% rename from src/test/ui/traits/bound/assoc-fn-bound-root-obligation.stderr rename to tests/ui/traits/bound/assoc-fn-bound-root-obligation.stderr diff --git a/src/test/ui/traits/bound/auxiliary/crate_a1.rs b/tests/ui/traits/bound/auxiliary/crate_a1.rs similarity index 100% rename from src/test/ui/traits/bound/auxiliary/crate_a1.rs rename to tests/ui/traits/bound/auxiliary/crate_a1.rs diff --git a/src/test/ui/traits/bound/auxiliary/crate_a2.rs b/tests/ui/traits/bound/auxiliary/crate_a2.rs similarity index 100% rename from src/test/ui/traits/bound/auxiliary/crate_a2.rs rename to tests/ui/traits/bound/auxiliary/crate_a2.rs diff --git a/src/test/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs b/tests/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs similarity index 100% rename from src/test/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs rename to tests/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs diff --git a/src/test/ui/traits/bound/basic.rs b/tests/ui/traits/bound/basic.rs similarity index 100% rename from src/test/ui/traits/bound/basic.rs rename to tests/ui/traits/bound/basic.rs diff --git a/src/test/ui/traits/bound/generic_trait.rs b/tests/ui/traits/bound/generic_trait.rs similarity index 100% rename from src/test/ui/traits/bound/generic_trait.rs rename to tests/ui/traits/bound/generic_trait.rs diff --git a/src/test/ui/traits/bound/impl-comparison-duplicates.rs b/tests/ui/traits/bound/impl-comparison-duplicates.rs similarity index 100% rename from src/test/ui/traits/bound/impl-comparison-duplicates.rs rename to tests/ui/traits/bound/impl-comparison-duplicates.rs diff --git a/src/test/ui/traits/bound/in-arc.rs b/tests/ui/traits/bound/in-arc.rs similarity index 100% rename from src/test/ui/traits/bound/in-arc.rs rename to tests/ui/traits/bound/in-arc.rs diff --git a/src/test/ui/traits/bound/multiple.rs b/tests/ui/traits/bound/multiple.rs similarity index 100% rename from src/test/ui/traits/bound/multiple.rs rename to tests/ui/traits/bound/multiple.rs diff --git a/src/test/ui/traits/bound/not-on-bare-trait.rs b/tests/ui/traits/bound/not-on-bare-trait.rs similarity index 100% rename from src/test/ui/traits/bound/not-on-bare-trait.rs rename to tests/ui/traits/bound/not-on-bare-trait.rs diff --git a/src/test/ui/traits/bound/not-on-bare-trait.stderr b/tests/ui/traits/bound/not-on-bare-trait.stderr similarity index 100% rename from src/test/ui/traits/bound/not-on-bare-trait.stderr rename to tests/ui/traits/bound/not-on-bare-trait.stderr diff --git a/src/test/ui/traits/bound/not-on-struct.rs b/tests/ui/traits/bound/not-on-struct.rs similarity index 100% rename from src/test/ui/traits/bound/not-on-struct.rs rename to tests/ui/traits/bound/not-on-struct.rs diff --git a/src/test/ui/traits/bound/not-on-struct.stderr b/tests/ui/traits/bound/not-on-struct.stderr similarity index 100% rename from src/test/ui/traits/bound/not-on-struct.stderr rename to tests/ui/traits/bound/not-on-struct.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.rs b/tests/ui/traits/bound/on-structs-and-enums-in-fns.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-in-fns.rs rename to tests/ui/traits/bound/on-structs-and-enums-in-fns.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.stderr b/tests/ui/traits/bound/on-structs-and-enums-in-fns.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-in-fns.stderr rename to tests/ui/traits/bound/on-structs-and-enums-in-fns.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.rs b/tests/ui/traits/bound/on-structs-and-enums-in-impls.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-in-impls.rs rename to tests/ui/traits/bound/on-structs-and-enums-in-impls.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.stderr b/tests/ui/traits/bound/on-structs-and-enums-in-impls.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-in-impls.stderr rename to tests/ui/traits/bound/on-structs-and-enums-in-impls.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-locals.rs b/tests/ui/traits/bound/on-structs-and-enums-locals.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-locals.rs rename to tests/ui/traits/bound/on-structs-and-enums-locals.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-locals.stderr b/tests/ui/traits/bound/on-structs-and-enums-locals.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-locals.stderr rename to tests/ui/traits/bound/on-structs-and-enums-locals.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-rpass.rs b/tests/ui/traits/bound/on-structs-and-enums-rpass.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-rpass.rs rename to tests/ui/traits/bound/on-structs-and-enums-rpass.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-static.rs b/tests/ui/traits/bound/on-structs-and-enums-static.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-static.rs rename to tests/ui/traits/bound/on-structs-and-enums-static.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-static.stderr b/tests/ui/traits/bound/on-structs-and-enums-static.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-static.stderr rename to tests/ui/traits/bound/on-structs-and-enums-static.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc.rs b/tests/ui/traits/bound/on-structs-and-enums-xc.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-xc.rs rename to tests/ui/traits/bound/on-structs-and-enums-xc.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc.stderr b/tests/ui/traits/bound/on-structs-and-enums-xc.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-xc.stderr rename to tests/ui/traits/bound/on-structs-and-enums-xc.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc1.rs b/tests/ui/traits/bound/on-structs-and-enums-xc1.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-xc1.rs rename to tests/ui/traits/bound/on-structs-and-enums-xc1.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc1.stderr b/tests/ui/traits/bound/on-structs-and-enums-xc1.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums-xc1.stderr rename to tests/ui/traits/bound/on-structs-and-enums-xc1.stderr diff --git a/src/test/ui/traits/bound/on-structs-and-enums.rs b/tests/ui/traits/bound/on-structs-and-enums.rs similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums.rs rename to tests/ui/traits/bound/on-structs-and-enums.rs diff --git a/src/test/ui/traits/bound/on-structs-and-enums.stderr b/tests/ui/traits/bound/on-structs-and-enums.stderr similarity index 100% rename from src/test/ui/traits/bound/on-structs-and-enums.stderr rename to tests/ui/traits/bound/on-structs-and-enums.stderr diff --git a/src/test/ui/traits/bound/recursion.rs b/tests/ui/traits/bound/recursion.rs similarity index 100% rename from src/test/ui/traits/bound/recursion.rs rename to tests/ui/traits/bound/recursion.rs diff --git a/src/test/ui/traits/bound/same-crate-name.rs b/tests/ui/traits/bound/same-crate-name.rs similarity index 100% rename from src/test/ui/traits/bound/same-crate-name.rs rename to tests/ui/traits/bound/same-crate-name.rs diff --git a/src/test/ui/traits/bound/same-crate-name.stderr b/tests/ui/traits/bound/same-crate-name.stderr similarity index 100% rename from src/test/ui/traits/bound/same-crate-name.stderr rename to tests/ui/traits/bound/same-crate-name.stderr diff --git a/src/test/ui/traits/bound/sugar.rs b/tests/ui/traits/bound/sugar.rs similarity index 100% rename from src/test/ui/traits/bound/sugar.rs rename to tests/ui/traits/bound/sugar.rs diff --git a/src/test/ui/traits/bound/sugar.stderr b/tests/ui/traits/bound/sugar.stderr similarity index 100% rename from src/test/ui/traits/bound/sugar.stderr rename to tests/ui/traits/bound/sugar.stderr diff --git a/src/test/ui/traits/bug-7183-generics.rs b/tests/ui/traits/bug-7183-generics.rs similarity index 100% rename from src/test/ui/traits/bug-7183-generics.rs rename to tests/ui/traits/bug-7183-generics.rs diff --git a/src/test/ui/traits/bug-7295.rs b/tests/ui/traits/bug-7295.rs similarity index 100% rename from src/test/ui/traits/bug-7295.rs rename to tests/ui/traits/bug-7295.rs diff --git a/src/test/ui/traits/cache-issue-18209.rs b/tests/ui/traits/cache-issue-18209.rs similarity index 100% rename from src/test/ui/traits/cache-issue-18209.rs rename to tests/ui/traits/cache-issue-18209.rs diff --git a/src/test/ui/traits/cache-reached-depth-ice.rs b/tests/ui/traits/cache-reached-depth-ice.rs similarity index 100% rename from src/test/ui/traits/cache-reached-depth-ice.rs rename to tests/ui/traits/cache-reached-depth-ice.rs diff --git a/src/test/ui/traits/cache-reached-depth-ice.stderr b/tests/ui/traits/cache-reached-depth-ice.stderr similarity index 100% rename from src/test/ui/traits/cache-reached-depth-ice.stderr rename to tests/ui/traits/cache-reached-depth-ice.stderr diff --git a/src/test/ui/traits/coercion-generic-bad.rs b/tests/ui/traits/coercion-generic-bad.rs similarity index 100% rename from src/test/ui/traits/coercion-generic-bad.rs rename to tests/ui/traits/coercion-generic-bad.rs diff --git a/src/test/ui/traits/coercion-generic-bad.stderr b/tests/ui/traits/coercion-generic-bad.stderr similarity index 100% rename from src/test/ui/traits/coercion-generic-bad.stderr rename to tests/ui/traits/coercion-generic-bad.stderr diff --git a/src/test/ui/traits/coercion-generic-regions.rs b/tests/ui/traits/coercion-generic-regions.rs similarity index 100% rename from src/test/ui/traits/coercion-generic-regions.rs rename to tests/ui/traits/coercion-generic-regions.rs diff --git a/src/test/ui/traits/coercion-generic-regions.stderr b/tests/ui/traits/coercion-generic-regions.stderr similarity index 100% rename from src/test/ui/traits/coercion-generic-regions.stderr rename to tests/ui/traits/coercion-generic-regions.stderr diff --git a/src/test/ui/traits/coercion-generic.rs b/tests/ui/traits/coercion-generic.rs similarity index 100% rename from src/test/ui/traits/coercion-generic.rs rename to tests/ui/traits/coercion-generic.rs diff --git a/src/test/ui/traits/coercion.rs b/tests/ui/traits/coercion.rs similarity index 100% rename from src/test/ui/traits/coercion.rs rename to tests/ui/traits/coercion.rs diff --git a/src/test/ui/traits/composition-trivial.rs b/tests/ui/traits/composition-trivial.rs similarity index 100% rename from src/test/ui/traits/composition-trivial.rs rename to tests/ui/traits/composition-trivial.rs diff --git a/src/test/ui/traits/conditional-dispatch.rs b/tests/ui/traits/conditional-dispatch.rs similarity index 100% rename from src/test/ui/traits/conditional-dispatch.rs rename to tests/ui/traits/conditional-dispatch.rs diff --git a/src/test/ui/traits/conditional-model-fn.rs b/tests/ui/traits/conditional-model-fn.rs similarity index 100% rename from src/test/ui/traits/conditional-model-fn.rs rename to tests/ui/traits/conditional-model-fn.rs diff --git a/src/test/ui/traits/conservative_impl_trait.rs b/tests/ui/traits/conservative_impl_trait.rs similarity index 100% rename from src/test/ui/traits/conservative_impl_trait.rs rename to tests/ui/traits/conservative_impl_trait.rs diff --git a/src/test/ui/traits/copy-guessing.rs b/tests/ui/traits/copy-guessing.rs similarity index 100% rename from src/test/ui/traits/copy-guessing.rs rename to tests/ui/traits/copy-guessing.rs diff --git a/src/test/ui/traits/copy-impl-cannot-normalize.rs b/tests/ui/traits/copy-impl-cannot-normalize.rs similarity index 100% rename from src/test/ui/traits/copy-impl-cannot-normalize.rs rename to tests/ui/traits/copy-impl-cannot-normalize.rs diff --git a/src/test/ui/traits/copy-impl-cannot-normalize.stderr b/tests/ui/traits/copy-impl-cannot-normalize.stderr similarity index 100% rename from src/test/ui/traits/copy-impl-cannot-normalize.stderr rename to tests/ui/traits/copy-impl-cannot-normalize.stderr diff --git a/src/test/ui/traits/cycle-cache-err-60010.rs b/tests/ui/traits/cycle-cache-err-60010.rs similarity index 100% rename from src/test/ui/traits/cycle-cache-err-60010.rs rename to tests/ui/traits/cycle-cache-err-60010.rs diff --git a/src/test/ui/traits/cycle-cache-err-60010.stderr b/tests/ui/traits/cycle-cache-err-60010.stderr similarity index 100% rename from src/test/ui/traits/cycle-cache-err-60010.stderr rename to tests/ui/traits/cycle-cache-err-60010.stderr diff --git a/src/test/ui/traits/cycle-generic-bound.rs b/tests/ui/traits/cycle-generic-bound.rs similarity index 100% rename from src/test/ui/traits/cycle-generic-bound.rs rename to tests/ui/traits/cycle-generic-bound.rs diff --git a/src/test/ui/traits/cycle-type-trait.rs b/tests/ui/traits/cycle-type-trait.rs similarity index 100% rename from src/test/ui/traits/cycle-type-trait.rs rename to tests/ui/traits/cycle-type-trait.rs diff --git a/src/test/ui/traits/default-method/auxiliary/xc.rs b/tests/ui/traits/default-method/auxiliary/xc.rs similarity index 100% rename from src/test/ui/traits/default-method/auxiliary/xc.rs rename to tests/ui/traits/default-method/auxiliary/xc.rs diff --git a/src/test/ui/traits/default-method/auxiliary/xc_2.rs b/tests/ui/traits/default-method/auxiliary/xc_2.rs similarity index 100% rename from src/test/ui/traits/default-method/auxiliary/xc_2.rs rename to tests/ui/traits/default-method/auxiliary/xc_2.rs diff --git a/src/test/ui/traits/default-method/bound-subst.rs b/tests/ui/traits/default-method/bound-subst.rs similarity index 100% rename from src/test/ui/traits/default-method/bound-subst.rs rename to tests/ui/traits/default-method/bound-subst.rs diff --git a/src/test/ui/traits/default-method/bound-subst2.rs b/tests/ui/traits/default-method/bound-subst2.rs similarity index 100% rename from src/test/ui/traits/default-method/bound-subst2.rs rename to tests/ui/traits/default-method/bound-subst2.rs diff --git a/src/test/ui/traits/default-method/bound-subst3.rs b/tests/ui/traits/default-method/bound-subst3.rs similarity index 100% rename from src/test/ui/traits/default-method/bound-subst3.rs rename to tests/ui/traits/default-method/bound-subst3.rs diff --git a/src/test/ui/traits/default-method/bound-subst4.rs b/tests/ui/traits/default-method/bound-subst4.rs similarity index 100% rename from src/test/ui/traits/default-method/bound-subst4.rs rename to tests/ui/traits/default-method/bound-subst4.rs diff --git a/src/test/ui/traits/default-method/bound.rs b/tests/ui/traits/default-method/bound.rs similarity index 100% rename from src/test/ui/traits/default-method/bound.rs rename to tests/ui/traits/default-method/bound.rs diff --git a/src/test/ui/traits/default-method/macro.rs b/tests/ui/traits/default-method/macro.rs similarity index 100% rename from src/test/ui/traits/default-method/macro.rs rename to tests/ui/traits/default-method/macro.rs diff --git a/src/test/ui/traits/default-method/mut.rs b/tests/ui/traits/default-method/mut.rs similarity index 100% rename from src/test/ui/traits/default-method/mut.rs rename to tests/ui/traits/default-method/mut.rs diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of.rs similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of.rs rename to tests/ui/traits/default-method/rustc_must_implement_one_of.rs diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of.stderr similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of.stderr rename to tests/ui/traits/default-method/rustc_must_implement_one_of.stderr diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs rename to tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr rename to tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.rs similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.rs rename to tests/ui/traits/default-method/rustc_must_implement_one_of_gated.rs diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr rename to tests/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs rename to tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr similarity index 100% rename from src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr rename to tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr diff --git a/src/test/ui/traits/default-method/self.rs b/tests/ui/traits/default-method/self.rs similarity index 100% rename from src/test/ui/traits/default-method/self.rs rename to tests/ui/traits/default-method/self.rs diff --git a/src/test/ui/traits/default-method/supervtable.rs b/tests/ui/traits/default-method/supervtable.rs similarity index 100% rename from src/test/ui/traits/default-method/supervtable.rs rename to tests/ui/traits/default-method/supervtable.rs diff --git a/src/test/ui/traits/default-method/trivial.rs b/tests/ui/traits/default-method/trivial.rs similarity index 100% rename from src/test/ui/traits/default-method/trivial.rs rename to tests/ui/traits/default-method/trivial.rs diff --git a/src/test/ui/traits/default-method/xc-2.rs b/tests/ui/traits/default-method/xc-2.rs similarity index 100% rename from src/test/ui/traits/default-method/xc-2.rs rename to tests/ui/traits/default-method/xc-2.rs diff --git a/src/test/ui/traits/default-method/xc.rs b/tests/ui/traits/default-method/xc.rs similarity index 100% rename from src/test/ui/traits/default-method/xc.rs rename to tests/ui/traits/default-method/xc.rs diff --git a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs similarity index 100% rename from src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs rename to tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs diff --git a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr similarity index 100% rename from src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr rename to tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr diff --git a/src/test/ui/traits/duplicate-methods.rs b/tests/ui/traits/duplicate-methods.rs similarity index 100% rename from src/test/ui/traits/duplicate-methods.rs rename to tests/ui/traits/duplicate-methods.rs diff --git a/src/test/ui/traits/duplicate-methods.stderr b/tests/ui/traits/duplicate-methods.stderr similarity index 100% rename from src/test/ui/traits/duplicate-methods.stderr rename to tests/ui/traits/duplicate-methods.stderr diff --git a/src/test/ui/traits/dyn-trait.rs b/tests/ui/traits/dyn-trait.rs similarity index 100% rename from src/test/ui/traits/dyn-trait.rs rename to tests/ui/traits/dyn-trait.rs diff --git a/src/test/ui/traits/early-vtbl-resolution.rs b/tests/ui/traits/early-vtbl-resolution.rs similarity index 100% rename from src/test/ui/traits/early-vtbl-resolution.rs rename to tests/ui/traits/early-vtbl-resolution.rs diff --git a/src/test/ui/traits/elaborate-type-region.rs b/tests/ui/traits/elaborate-type-region.rs similarity index 100% rename from src/test/ui/traits/elaborate-type-region.rs rename to tests/ui/traits/elaborate-type-region.rs diff --git a/src/test/ui/traits/false-ambiguity-where-clause-builtin-bound.rs b/tests/ui/traits/false-ambiguity-where-clause-builtin-bound.rs similarity index 100% rename from src/test/ui/traits/false-ambiguity-where-clause-builtin-bound.rs rename to tests/ui/traits/false-ambiguity-where-clause-builtin-bound.rs diff --git a/src/test/ui/traits/fmt-pointer-trait.rs b/tests/ui/traits/fmt-pointer-trait.rs similarity index 100% rename from src/test/ui/traits/fmt-pointer-trait.rs rename to tests/ui/traits/fmt-pointer-trait.rs diff --git a/src/test/ui/traits/generic.rs b/tests/ui/traits/generic.rs similarity index 100% rename from src/test/ui/traits/generic.rs rename to tests/ui/traits/generic.rs diff --git a/src/test/ui/traits/impl-1.rs b/tests/ui/traits/impl-1.rs similarity index 100% rename from src/test/ui/traits/impl-1.rs rename to tests/ui/traits/impl-1.rs diff --git a/src/test/ui/traits/impl-1.stderr b/tests/ui/traits/impl-1.stderr similarity index 100% rename from src/test/ui/traits/impl-1.stderr rename to tests/ui/traits/impl-1.stderr diff --git a/src/test/ui/traits/impl-2.rs b/tests/ui/traits/impl-2.rs similarity index 100% rename from src/test/ui/traits/impl-2.rs rename to tests/ui/traits/impl-2.rs diff --git a/src/test/ui/traits/impl-bounds-checking.rs b/tests/ui/traits/impl-bounds-checking.rs similarity index 100% rename from src/test/ui/traits/impl-bounds-checking.rs rename to tests/ui/traits/impl-bounds-checking.rs diff --git a/src/test/ui/traits/impl-bounds-checking.stderr b/tests/ui/traits/impl-bounds-checking.stderr similarity index 100% rename from src/test/ui/traits/impl-bounds-checking.stderr rename to tests/ui/traits/impl-bounds-checking.stderr diff --git a/src/test/ui/traits/impl-can-not-have-untraitful-items.rs b/tests/ui/traits/impl-can-not-have-untraitful-items.rs similarity index 100% rename from src/test/ui/traits/impl-can-not-have-untraitful-items.rs rename to tests/ui/traits/impl-can-not-have-untraitful-items.rs diff --git a/src/test/ui/traits/impl-can-not-have-untraitful-items.stderr b/tests/ui/traits/impl-can-not-have-untraitful-items.stderr similarity index 100% rename from src/test/ui/traits/impl-can-not-have-untraitful-items.stderr rename to tests/ui/traits/impl-can-not-have-untraitful-items.stderr diff --git a/src/test/ui/traits/impl-different-num-params.rs b/tests/ui/traits/impl-different-num-params.rs similarity index 100% rename from src/test/ui/traits/impl-different-num-params.rs rename to tests/ui/traits/impl-different-num-params.rs diff --git a/src/test/ui/traits/impl-different-num-params.stderr b/tests/ui/traits/impl-different-num-params.stderr similarity index 100% rename from src/test/ui/traits/impl-different-num-params.stderr rename to tests/ui/traits/impl-different-num-params.stderr diff --git a/src/test/ui/traits/impl-evaluation-order.rs b/tests/ui/traits/impl-evaluation-order.rs similarity index 100% rename from src/test/ui/traits/impl-evaluation-order.rs rename to tests/ui/traits/impl-evaluation-order.rs diff --git a/src/test/ui/traits/impl-for-module.rs b/tests/ui/traits/impl-for-module.rs similarity index 100% rename from src/test/ui/traits/impl-for-module.rs rename to tests/ui/traits/impl-for-module.rs diff --git a/src/test/ui/traits/impl-for-module.stderr b/tests/ui/traits/impl-for-module.stderr similarity index 100% rename from src/test/ui/traits/impl-for-module.stderr rename to tests/ui/traits/impl-for-module.stderr diff --git a/src/test/ui/traits/impl-implicit-trait.rs b/tests/ui/traits/impl-implicit-trait.rs similarity index 100% rename from src/test/ui/traits/impl-implicit-trait.rs rename to tests/ui/traits/impl-implicit-trait.rs diff --git a/src/test/ui/traits/impl-inherent-prefer-over-trait.rs b/tests/ui/traits/impl-inherent-prefer-over-trait.rs similarity index 100% rename from src/test/ui/traits/impl-inherent-prefer-over-trait.rs rename to tests/ui/traits/impl-inherent-prefer-over-trait.rs diff --git a/src/test/ui/traits/impl-method-mismatch.rs b/tests/ui/traits/impl-method-mismatch.rs similarity index 100% rename from src/test/ui/traits/impl-method-mismatch.rs rename to tests/ui/traits/impl-method-mismatch.rs diff --git a/src/test/ui/traits/impl-method-mismatch.stderr b/tests/ui/traits/impl-method-mismatch.stderr similarity index 100% rename from src/test/ui/traits/impl-method-mismatch.stderr rename to tests/ui/traits/impl-method-mismatch.stderr diff --git a/src/test/ui/traits/impl-object-overlap-issue-23853.rs b/tests/ui/traits/impl-object-overlap-issue-23853.rs similarity index 100% rename from src/test/ui/traits/impl-object-overlap-issue-23853.rs rename to tests/ui/traits/impl-object-overlap-issue-23853.rs diff --git a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs similarity index 100% rename from src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs rename to tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs diff --git a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr similarity index 100% rename from src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr rename to tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr diff --git a/src/test/ui/traits/impl.rs b/tests/ui/traits/impl.rs similarity index 100% rename from src/test/ui/traits/impl.rs rename to tests/ui/traits/impl.rs diff --git a/src/test/ui/traits/impl_trait_as_trait_return_position.rs b/tests/ui/traits/impl_trait_as_trait_return_position.rs similarity index 100% rename from src/test/ui/traits/impl_trait_as_trait_return_position.rs rename to tests/ui/traits/impl_trait_as_trait_return_position.rs diff --git a/src/test/ui/traits/inductive-overflow/lifetime.rs b/tests/ui/traits/inductive-overflow/lifetime.rs similarity index 100% rename from src/test/ui/traits/inductive-overflow/lifetime.rs rename to tests/ui/traits/inductive-overflow/lifetime.rs diff --git a/src/test/ui/traits/inductive-overflow/lifetime.stderr b/tests/ui/traits/inductive-overflow/lifetime.stderr similarity index 100% rename from src/test/ui/traits/inductive-overflow/lifetime.stderr rename to tests/ui/traits/inductive-overflow/lifetime.stderr diff --git a/src/test/ui/traits/inductive-overflow/simultaneous.rs b/tests/ui/traits/inductive-overflow/simultaneous.rs similarity index 100% rename from src/test/ui/traits/inductive-overflow/simultaneous.rs rename to tests/ui/traits/inductive-overflow/simultaneous.rs diff --git a/src/test/ui/traits/inductive-overflow/simultaneous.stderr b/tests/ui/traits/inductive-overflow/simultaneous.stderr similarity index 100% rename from src/test/ui/traits/inductive-overflow/simultaneous.stderr rename to tests/ui/traits/inductive-overflow/simultaneous.stderr diff --git a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.rs b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.rs similarity index 100% rename from src/test/ui/traits/inductive-overflow/supertrait-auto-trait.rs rename to tests/ui/traits/inductive-overflow/supertrait-auto-trait.rs diff --git a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.stderr b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.stderr similarity index 100% rename from src/test/ui/traits/inductive-overflow/supertrait-auto-trait.stderr rename to tests/ui/traits/inductive-overflow/supertrait-auto-trait.stderr diff --git a/src/test/ui/traits/inductive-overflow/supertrait.rs b/tests/ui/traits/inductive-overflow/supertrait.rs similarity index 100% rename from src/test/ui/traits/inductive-overflow/supertrait.rs rename to tests/ui/traits/inductive-overflow/supertrait.rs diff --git a/src/test/ui/traits/inductive-overflow/supertrait.stderr b/tests/ui/traits/inductive-overflow/supertrait.stderr similarity index 100% rename from src/test/ui/traits/inductive-overflow/supertrait.stderr rename to tests/ui/traits/inductive-overflow/supertrait.stderr diff --git a/src/test/ui/traits/inductive-overflow/two-traits.rs b/tests/ui/traits/inductive-overflow/two-traits.rs similarity index 100% rename from src/test/ui/traits/inductive-overflow/two-traits.rs rename to tests/ui/traits/inductive-overflow/two-traits.rs diff --git a/src/test/ui/traits/inductive-overflow/two-traits.stderr b/tests/ui/traits/inductive-overflow/two-traits.stderr similarity index 100% rename from src/test/ui/traits/inductive-overflow/two-traits.stderr rename to tests/ui/traits/inductive-overflow/two-traits.stderr diff --git a/src/test/ui/traits/infer-from-object-issue-26952.rs b/tests/ui/traits/infer-from-object-issue-26952.rs similarity index 100% rename from src/test/ui/traits/infer-from-object-issue-26952.rs rename to tests/ui/traits/infer-from-object-issue-26952.rs diff --git a/src/test/ui/traits/inherent-method-order.rs b/tests/ui/traits/inherent-method-order.rs similarity index 100% rename from src/test/ui/traits/inherent-method-order.rs rename to tests/ui/traits/inherent-method-order.rs diff --git a/src/test/ui/traits/inheritance/auto-xc-2.rs b/tests/ui/traits/inheritance/auto-xc-2.rs similarity index 100% rename from src/test/ui/traits/inheritance/auto-xc-2.rs rename to tests/ui/traits/inheritance/auto-xc-2.rs diff --git a/src/test/ui/traits/inheritance/auto-xc.rs b/tests/ui/traits/inheritance/auto-xc.rs similarity index 100% rename from src/test/ui/traits/inheritance/auto-xc.rs rename to tests/ui/traits/inheritance/auto-xc.rs diff --git a/src/test/ui/traits/inheritance/auto.rs b/tests/ui/traits/inheritance/auto.rs similarity index 100% rename from src/test/ui/traits/inheritance/auto.rs rename to tests/ui/traits/inheritance/auto.rs diff --git a/src/test/ui/traits/inheritance/auxiliary/auto_xc.rs b/tests/ui/traits/inheritance/auxiliary/auto_xc.rs similarity index 100% rename from src/test/ui/traits/inheritance/auxiliary/auto_xc.rs rename to tests/ui/traits/inheritance/auxiliary/auto_xc.rs diff --git a/src/test/ui/traits/inheritance/auxiliary/auto_xc_2.rs b/tests/ui/traits/inheritance/auxiliary/auto_xc_2.rs similarity index 100% rename from src/test/ui/traits/inheritance/auxiliary/auto_xc_2.rs rename to tests/ui/traits/inheritance/auxiliary/auto_xc_2.rs diff --git a/src/test/ui/traits/inheritance/auxiliary/overloading_xc.rs b/tests/ui/traits/inheritance/auxiliary/overloading_xc.rs similarity index 100% rename from src/test/ui/traits/inheritance/auxiliary/overloading_xc.rs rename to tests/ui/traits/inheritance/auxiliary/overloading_xc.rs diff --git a/src/test/ui/traits/inheritance/auxiliary/xc_call.rs b/tests/ui/traits/inheritance/auxiliary/xc_call.rs similarity index 100% rename from src/test/ui/traits/inheritance/auxiliary/xc_call.rs rename to tests/ui/traits/inheritance/auxiliary/xc_call.rs diff --git a/src/test/ui/traits/inheritance/basic.rs b/tests/ui/traits/inheritance/basic.rs similarity index 100% rename from src/test/ui/traits/inheritance/basic.rs rename to tests/ui/traits/inheritance/basic.rs diff --git a/src/test/ui/traits/inheritance/call-bound-inherited.rs b/tests/ui/traits/inheritance/call-bound-inherited.rs similarity index 100% rename from src/test/ui/traits/inheritance/call-bound-inherited.rs rename to tests/ui/traits/inheritance/call-bound-inherited.rs diff --git a/src/test/ui/traits/inheritance/call-bound-inherited2.rs b/tests/ui/traits/inheritance/call-bound-inherited2.rs similarity index 100% rename from src/test/ui/traits/inheritance/call-bound-inherited2.rs rename to tests/ui/traits/inheritance/call-bound-inherited2.rs diff --git a/src/test/ui/traits/inheritance/cast-without-call-to-supertrait.rs b/tests/ui/traits/inheritance/cast-without-call-to-supertrait.rs similarity index 100% rename from src/test/ui/traits/inheritance/cast-without-call-to-supertrait.rs rename to tests/ui/traits/inheritance/cast-without-call-to-supertrait.rs diff --git a/src/test/ui/traits/inheritance/cast.rs b/tests/ui/traits/inheritance/cast.rs similarity index 100% rename from src/test/ui/traits/inheritance/cast.rs rename to tests/ui/traits/inheritance/cast.rs diff --git a/src/test/ui/traits/inheritance/cross-trait-call-xc.rs b/tests/ui/traits/inheritance/cross-trait-call-xc.rs similarity index 100% rename from src/test/ui/traits/inheritance/cross-trait-call-xc.rs rename to tests/ui/traits/inheritance/cross-trait-call-xc.rs diff --git a/src/test/ui/traits/inheritance/cross-trait-call.rs b/tests/ui/traits/inheritance/cross-trait-call.rs similarity index 100% rename from src/test/ui/traits/inheritance/cross-trait-call.rs rename to tests/ui/traits/inheritance/cross-trait-call.rs diff --git a/src/test/ui/traits/inheritance/diamond.rs b/tests/ui/traits/inheritance/diamond.rs similarity index 100% rename from src/test/ui/traits/inheritance/diamond.rs rename to tests/ui/traits/inheritance/diamond.rs diff --git a/src/test/ui/traits/inheritance/multiple-inheritors.rs b/tests/ui/traits/inheritance/multiple-inheritors.rs similarity index 100% rename from src/test/ui/traits/inheritance/multiple-inheritors.rs rename to tests/ui/traits/inheritance/multiple-inheritors.rs diff --git a/src/test/ui/traits/inheritance/multiple-params.rs b/tests/ui/traits/inheritance/multiple-params.rs similarity index 100% rename from src/test/ui/traits/inheritance/multiple-params.rs rename to tests/ui/traits/inheritance/multiple-params.rs diff --git a/src/test/ui/traits/inheritance/num.rs b/tests/ui/traits/inheritance/num.rs similarity index 100% rename from src/test/ui/traits/inheritance/num.rs rename to tests/ui/traits/inheritance/num.rs diff --git a/src/test/ui/traits/inheritance/num0.rs b/tests/ui/traits/inheritance/num0.rs similarity index 100% rename from src/test/ui/traits/inheritance/num0.rs rename to tests/ui/traits/inheritance/num0.rs diff --git a/src/test/ui/traits/inheritance/num1.rs b/tests/ui/traits/inheritance/num1.rs similarity index 100% rename from src/test/ui/traits/inheritance/num1.rs rename to tests/ui/traits/inheritance/num1.rs diff --git a/src/test/ui/traits/inheritance/num2.rs b/tests/ui/traits/inheritance/num2.rs similarity index 100% rename from src/test/ui/traits/inheritance/num2.rs rename to tests/ui/traits/inheritance/num2.rs diff --git a/src/test/ui/traits/inheritance/num3.rs b/tests/ui/traits/inheritance/num3.rs similarity index 100% rename from src/test/ui/traits/inheritance/num3.rs rename to tests/ui/traits/inheritance/num3.rs diff --git a/src/test/ui/traits/inheritance/num5.rs b/tests/ui/traits/inheritance/num5.rs similarity index 100% rename from src/test/ui/traits/inheritance/num5.rs rename to tests/ui/traits/inheritance/num5.rs diff --git a/src/test/ui/traits/inheritance/overloading-simple.rs b/tests/ui/traits/inheritance/overloading-simple.rs similarity index 100% rename from src/test/ui/traits/inheritance/overloading-simple.rs rename to tests/ui/traits/inheritance/overloading-simple.rs diff --git a/src/test/ui/traits/inheritance/overloading-xc-exe.rs b/tests/ui/traits/inheritance/overloading-xc-exe.rs similarity index 100% rename from src/test/ui/traits/inheritance/overloading-xc-exe.rs rename to tests/ui/traits/inheritance/overloading-xc-exe.rs diff --git a/src/test/ui/traits/inheritance/overloading.rs b/tests/ui/traits/inheritance/overloading.rs similarity index 100% rename from src/test/ui/traits/inheritance/overloading.rs rename to tests/ui/traits/inheritance/overloading.rs diff --git a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.rs b/tests/ui/traits/inheritance/repeated-supertrait-ambig.rs similarity index 100% rename from src/test/ui/traits/inheritance/repeated-supertrait-ambig.rs rename to tests/ui/traits/inheritance/repeated-supertrait-ambig.rs diff --git a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.stderr b/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr similarity index 100% rename from src/test/ui/traits/inheritance/repeated-supertrait-ambig.stderr rename to tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr diff --git a/src/test/ui/traits/inheritance/repeated-supertrait.rs b/tests/ui/traits/inheritance/repeated-supertrait.rs similarity index 100% rename from src/test/ui/traits/inheritance/repeated-supertrait.rs rename to tests/ui/traits/inheritance/repeated-supertrait.rs diff --git a/src/test/ui/traits/inheritance/self-in-supertype.rs b/tests/ui/traits/inheritance/self-in-supertype.rs similarity index 100% rename from src/test/ui/traits/inheritance/self-in-supertype.rs rename to tests/ui/traits/inheritance/self-in-supertype.rs diff --git a/src/test/ui/traits/inheritance/self.rs b/tests/ui/traits/inheritance/self.rs similarity index 100% rename from src/test/ui/traits/inheritance/self.rs rename to tests/ui/traits/inheritance/self.rs diff --git a/src/test/ui/traits/inheritance/simple.rs b/tests/ui/traits/inheritance/simple.rs similarity index 100% rename from src/test/ui/traits/inheritance/simple.rs rename to tests/ui/traits/inheritance/simple.rs diff --git a/src/test/ui/traits/inheritance/static.rs b/tests/ui/traits/inheritance/static.rs similarity index 100% rename from src/test/ui/traits/inheritance/static.rs rename to tests/ui/traits/inheritance/static.rs diff --git a/src/test/ui/traits/inheritance/static2.rs b/tests/ui/traits/inheritance/static2.rs similarity index 100% rename from src/test/ui/traits/inheritance/static2.rs rename to tests/ui/traits/inheritance/static2.rs diff --git a/src/test/ui/traits/inheritance/subst.rs b/tests/ui/traits/inheritance/subst.rs similarity index 100% rename from src/test/ui/traits/inheritance/subst.rs rename to tests/ui/traits/inheritance/subst.rs diff --git a/src/test/ui/traits/inheritance/subst2.rs b/tests/ui/traits/inheritance/subst2.rs similarity index 100% rename from src/test/ui/traits/inheritance/subst2.rs rename to tests/ui/traits/inheritance/subst2.rs diff --git a/src/test/ui/traits/inheritance/visibility.rs b/tests/ui/traits/inheritance/visibility.rs similarity index 100% rename from src/test/ui/traits/inheritance/visibility.rs rename to tests/ui/traits/inheritance/visibility.rs diff --git a/src/test/ui/traits/invalid_operator_trait.rs b/tests/ui/traits/invalid_operator_trait.rs similarity index 100% rename from src/test/ui/traits/invalid_operator_trait.rs rename to tests/ui/traits/invalid_operator_trait.rs diff --git a/src/test/ui/traits/invalid_operator_trait.stderr b/tests/ui/traits/invalid_operator_trait.stderr similarity index 100% rename from src/test/ui/traits/invalid_operator_trait.stderr rename to tests/ui/traits/invalid_operator_trait.stderr diff --git a/src/test/ui/traits/issue-102989.rs b/tests/ui/traits/issue-102989.rs similarity index 100% rename from src/test/ui/traits/issue-102989.rs rename to tests/ui/traits/issue-102989.rs diff --git a/src/test/ui/traits/issue-102989.stderr b/tests/ui/traits/issue-102989.stderr similarity index 100% rename from src/test/ui/traits/issue-102989.stderr rename to tests/ui/traits/issue-102989.stderr diff --git a/src/test/ui/traits/issue-104322.rs b/tests/ui/traits/issue-104322.rs similarity index 100% rename from src/test/ui/traits/issue-104322.rs rename to tests/ui/traits/issue-104322.rs diff --git a/src/test/ui/traits/issue-18400.rs b/tests/ui/traits/issue-18400.rs similarity index 100% rename from src/test/ui/traits/issue-18400.rs rename to tests/ui/traits/issue-18400.rs diff --git a/src/test/ui/traits/issue-18400.stderr b/tests/ui/traits/issue-18400.stderr similarity index 100% rename from src/test/ui/traits/issue-18400.stderr rename to tests/ui/traits/issue-18400.stderr diff --git a/src/test/ui/traits/issue-18412.rs b/tests/ui/traits/issue-18412.rs similarity index 100% rename from src/test/ui/traits/issue-18412.rs rename to tests/ui/traits/issue-18412.rs diff --git a/src/test/ui/traits/issue-20692.rs b/tests/ui/traits/issue-20692.rs similarity index 100% rename from src/test/ui/traits/issue-20692.rs rename to tests/ui/traits/issue-20692.rs diff --git a/src/test/ui/traits/issue-20692.stderr b/tests/ui/traits/issue-20692.stderr similarity index 100% rename from src/test/ui/traits/issue-20692.stderr rename to tests/ui/traits/issue-20692.stderr diff --git a/src/test/ui/traits/issue-22019.rs b/tests/ui/traits/issue-22019.rs similarity index 100% rename from src/test/ui/traits/issue-22019.rs rename to tests/ui/traits/issue-22019.rs diff --git a/src/test/ui/traits/issue-22110.rs b/tests/ui/traits/issue-22110.rs similarity index 100% rename from src/test/ui/traits/issue-22110.rs rename to tests/ui/traits/issue-22110.rs diff --git a/src/test/ui/traits/issue-22655.rs b/tests/ui/traits/issue-22655.rs similarity index 100% rename from src/test/ui/traits/issue-22655.rs rename to tests/ui/traits/issue-22655.rs diff --git a/src/test/ui/traits/issue-23003-overflow.rs b/tests/ui/traits/issue-23003-overflow.rs similarity index 100% rename from src/test/ui/traits/issue-23003-overflow.rs rename to tests/ui/traits/issue-23003-overflow.rs diff --git a/src/test/ui/traits/issue-23003.rs b/tests/ui/traits/issue-23003.rs similarity index 100% rename from src/test/ui/traits/issue-23003.rs rename to tests/ui/traits/issue-23003.rs diff --git a/src/test/ui/traits/issue-23825.rs b/tests/ui/traits/issue-23825.rs similarity index 100% rename from src/test/ui/traits/issue-23825.rs rename to tests/ui/traits/issue-23825.rs diff --git a/src/test/ui/traits/issue-24010.rs b/tests/ui/traits/issue-24010.rs similarity index 100% rename from src/test/ui/traits/issue-24010.rs rename to tests/ui/traits/issue-24010.rs diff --git a/src/test/ui/traits/issue-26339.rs b/tests/ui/traits/issue-26339.rs similarity index 100% rename from src/test/ui/traits/issue-26339.rs rename to tests/ui/traits/issue-26339.rs diff --git a/src/test/ui/traits/issue-28576.rs b/tests/ui/traits/issue-28576.rs similarity index 100% rename from src/test/ui/traits/issue-28576.rs rename to tests/ui/traits/issue-28576.rs diff --git a/src/test/ui/traits/issue-28576.stderr b/tests/ui/traits/issue-28576.stderr similarity index 100% rename from src/test/ui/traits/issue-28576.stderr rename to tests/ui/traits/issue-28576.stderr diff --git a/src/test/ui/traits/issue-32963.rs b/tests/ui/traits/issue-32963.rs similarity index 100% rename from src/test/ui/traits/issue-32963.rs rename to tests/ui/traits/issue-32963.rs diff --git a/src/test/ui/traits/issue-32963.stderr b/tests/ui/traits/issue-32963.stderr similarity index 100% rename from src/test/ui/traits/issue-32963.stderr rename to tests/ui/traits/issue-32963.stderr diff --git a/src/test/ui/traits/issue-33140-hack-boundaries.rs b/tests/ui/traits/issue-33140-hack-boundaries.rs similarity index 100% rename from src/test/ui/traits/issue-33140-hack-boundaries.rs rename to tests/ui/traits/issue-33140-hack-boundaries.rs diff --git a/src/test/ui/traits/issue-33140-hack-boundaries.stderr b/tests/ui/traits/issue-33140-hack-boundaries.stderr similarity index 100% rename from src/test/ui/traits/issue-33140-hack-boundaries.stderr rename to tests/ui/traits/issue-33140-hack-boundaries.stderr diff --git a/src/test/ui/traits/issue-33140.rs b/tests/ui/traits/issue-33140.rs similarity index 100% rename from src/test/ui/traits/issue-33140.rs rename to tests/ui/traits/issue-33140.rs diff --git a/src/test/ui/traits/issue-33140.stderr b/tests/ui/traits/issue-33140.stderr similarity index 100% rename from src/test/ui/traits/issue-33140.stderr rename to tests/ui/traits/issue-33140.stderr diff --git a/src/test/ui/traits/issue-35869.rs b/tests/ui/traits/issue-35869.rs similarity index 100% rename from src/test/ui/traits/issue-35869.rs rename to tests/ui/traits/issue-35869.rs diff --git a/src/test/ui/traits/issue-35869.stderr b/tests/ui/traits/issue-35869.stderr similarity index 100% rename from src/test/ui/traits/issue-35869.stderr rename to tests/ui/traits/issue-35869.stderr diff --git a/src/test/ui/traits/issue-3683.rs b/tests/ui/traits/issue-3683.rs similarity index 100% rename from src/test/ui/traits/issue-3683.rs rename to tests/ui/traits/issue-3683.rs diff --git a/src/test/ui/traits/issue-38033.rs b/tests/ui/traits/issue-38033.rs similarity index 100% rename from src/test/ui/traits/issue-38033.rs rename to tests/ui/traits/issue-38033.rs diff --git a/src/test/ui/traits/issue-38404.rs b/tests/ui/traits/issue-38404.rs similarity index 100% rename from src/test/ui/traits/issue-38404.rs rename to tests/ui/traits/issue-38404.rs diff --git a/src/test/ui/traits/issue-38404.stderr b/tests/ui/traits/issue-38404.stderr similarity index 100% rename from src/test/ui/traits/issue-38404.stderr rename to tests/ui/traits/issue-38404.stderr diff --git a/src/test/ui/traits/issue-38604.rs b/tests/ui/traits/issue-38604.rs similarity index 100% rename from src/test/ui/traits/issue-38604.rs rename to tests/ui/traits/issue-38604.rs diff --git a/src/test/ui/traits/issue-38604.stderr b/tests/ui/traits/issue-38604.stderr similarity index 100% rename from src/test/ui/traits/issue-38604.stderr rename to tests/ui/traits/issue-38604.stderr diff --git a/src/test/ui/traits/issue-3973.rs b/tests/ui/traits/issue-3973.rs similarity index 100% rename from src/test/ui/traits/issue-3973.rs rename to tests/ui/traits/issue-3973.rs diff --git a/src/test/ui/traits/issue-3973.stderr b/tests/ui/traits/issue-3973.stderr similarity index 100% rename from src/test/ui/traits/issue-3973.stderr rename to tests/ui/traits/issue-3973.stderr diff --git a/src/test/ui/traits/issue-4107.rs b/tests/ui/traits/issue-4107.rs similarity index 100% rename from src/test/ui/traits/issue-4107.rs rename to tests/ui/traits/issue-4107.rs diff --git a/src/test/ui/traits/issue-43132.rs b/tests/ui/traits/issue-43132.rs similarity index 100% rename from src/test/ui/traits/issue-43132.rs rename to tests/ui/traits/issue-43132.rs diff --git a/src/test/ui/traits/issue-43784-supertrait.rs b/tests/ui/traits/issue-43784-supertrait.rs similarity index 100% rename from src/test/ui/traits/issue-43784-supertrait.rs rename to tests/ui/traits/issue-43784-supertrait.rs diff --git a/src/test/ui/traits/issue-43784-supertrait.stderr b/tests/ui/traits/issue-43784-supertrait.stderr similarity index 100% rename from src/test/ui/traits/issue-43784-supertrait.stderr rename to tests/ui/traits/issue-43784-supertrait.stderr diff --git a/src/test/ui/traits/issue-50480.rs b/tests/ui/traits/issue-50480.rs similarity index 100% rename from src/test/ui/traits/issue-50480.rs rename to tests/ui/traits/issue-50480.rs diff --git a/src/test/ui/traits/issue-50480.stderr b/tests/ui/traits/issue-50480.stderr similarity index 100% rename from src/test/ui/traits/issue-50480.stderr rename to tests/ui/traits/issue-50480.stderr diff --git a/src/test/ui/traits/issue-52893.rs b/tests/ui/traits/issue-52893.rs similarity index 100% rename from src/test/ui/traits/issue-52893.rs rename to tests/ui/traits/issue-52893.rs diff --git a/src/test/ui/traits/issue-52893.stderr b/tests/ui/traits/issue-52893.stderr similarity index 100% rename from src/test/ui/traits/issue-52893.stderr rename to tests/ui/traits/issue-52893.stderr diff --git a/src/test/ui/traits/issue-56202.rs b/tests/ui/traits/issue-56202.rs similarity index 100% rename from src/test/ui/traits/issue-56202.rs rename to tests/ui/traits/issue-56202.rs diff --git a/src/test/ui/traits/issue-56488.rs b/tests/ui/traits/issue-56488.rs similarity index 100% rename from src/test/ui/traits/issue-56488.rs rename to tests/ui/traits/issue-56488.rs diff --git a/src/test/ui/traits/issue-59029-1.rs b/tests/ui/traits/issue-59029-1.rs similarity index 100% rename from src/test/ui/traits/issue-59029-1.rs rename to tests/ui/traits/issue-59029-1.rs diff --git a/src/test/ui/traits/issue-59029-1.stderr b/tests/ui/traits/issue-59029-1.stderr similarity index 100% rename from src/test/ui/traits/issue-59029-1.stderr rename to tests/ui/traits/issue-59029-1.stderr diff --git a/src/test/ui/traits/issue-59029-2.rs b/tests/ui/traits/issue-59029-2.rs similarity index 100% rename from src/test/ui/traits/issue-59029-2.rs rename to tests/ui/traits/issue-59029-2.rs diff --git a/src/test/ui/traits/issue-6128.rs b/tests/ui/traits/issue-6128.rs similarity index 100% rename from src/test/ui/traits/issue-6128.rs rename to tests/ui/traits/issue-6128.rs diff --git a/src/test/ui/traits/issue-6334.rs b/tests/ui/traits/issue-6334.rs similarity index 100% rename from src/test/ui/traits/issue-6334.rs rename to tests/ui/traits/issue-6334.rs diff --git a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.rs b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.rs similarity index 100% rename from src/test/ui/traits/issue-65284-suggest-generic-trait-bound.rs rename to tests/ui/traits/issue-65284-suggest-generic-trait-bound.rs diff --git a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.stderr b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.stderr similarity index 100% rename from src/test/ui/traits/issue-65284-suggest-generic-trait-bound.stderr rename to tests/ui/traits/issue-65284-suggest-generic-trait-bound.stderr diff --git a/src/test/ui/traits/issue-65673.rs b/tests/ui/traits/issue-65673.rs similarity index 100% rename from src/test/ui/traits/issue-65673.rs rename to tests/ui/traits/issue-65673.rs diff --git a/src/test/ui/traits/issue-65673.stderr b/tests/ui/traits/issue-65673.stderr similarity index 100% rename from src/test/ui/traits/issue-65673.stderr rename to tests/ui/traits/issue-65673.stderr diff --git a/src/test/ui/traits/issue-68295.rs b/tests/ui/traits/issue-68295.rs similarity index 100% rename from src/test/ui/traits/issue-68295.rs rename to tests/ui/traits/issue-68295.rs diff --git a/src/test/ui/traits/issue-68295.stderr b/tests/ui/traits/issue-68295.stderr similarity index 100% rename from src/test/ui/traits/issue-68295.stderr rename to tests/ui/traits/issue-68295.stderr diff --git a/src/test/ui/traits/issue-7013.rs b/tests/ui/traits/issue-7013.rs similarity index 100% rename from src/test/ui/traits/issue-7013.rs rename to tests/ui/traits/issue-7013.rs diff --git a/src/test/ui/traits/issue-7013.stderr b/tests/ui/traits/issue-7013.stderr similarity index 100% rename from src/test/ui/traits/issue-7013.stderr rename to tests/ui/traits/issue-7013.stderr diff --git a/src/test/ui/traits/issue-70944.rs b/tests/ui/traits/issue-70944.rs similarity index 100% rename from src/test/ui/traits/issue-70944.rs rename to tests/ui/traits/issue-70944.rs diff --git a/src/test/ui/traits/issue-71036.rs b/tests/ui/traits/issue-71036.rs similarity index 100% rename from src/test/ui/traits/issue-71036.rs rename to tests/ui/traits/issue-71036.rs diff --git a/src/test/ui/traits/issue-71036.stderr b/tests/ui/traits/issue-71036.stderr similarity index 100% rename from src/test/ui/traits/issue-71036.stderr rename to tests/ui/traits/issue-71036.stderr diff --git a/src/test/ui/traits/issue-71136.rs b/tests/ui/traits/issue-71136.rs similarity index 100% rename from src/test/ui/traits/issue-71136.rs rename to tests/ui/traits/issue-71136.rs diff --git a/src/test/ui/traits/issue-71136.stderr b/tests/ui/traits/issue-71136.stderr similarity index 100% rename from src/test/ui/traits/issue-71136.stderr rename to tests/ui/traits/issue-71136.stderr diff --git a/src/test/ui/traits/issue-72410.rs b/tests/ui/traits/issue-72410.rs similarity index 100% rename from src/test/ui/traits/issue-72410.rs rename to tests/ui/traits/issue-72410.rs diff --git a/src/test/ui/traits/issue-72410.stderr b/tests/ui/traits/issue-72410.stderr similarity index 100% rename from src/test/ui/traits/issue-72410.stderr rename to tests/ui/traits/issue-72410.stderr diff --git a/src/test/ui/traits/issue-72455.rs b/tests/ui/traits/issue-72455.rs similarity index 100% rename from src/test/ui/traits/issue-72455.rs rename to tests/ui/traits/issue-72455.rs diff --git a/src/test/ui/traits/issue-75627.rs b/tests/ui/traits/issue-75627.rs similarity index 100% rename from src/test/ui/traits/issue-75627.rs rename to tests/ui/traits/issue-75627.rs diff --git a/src/test/ui/traits/issue-75627.stderr b/tests/ui/traits/issue-75627.stderr similarity index 100% rename from src/test/ui/traits/issue-75627.stderr rename to tests/ui/traits/issue-75627.stderr diff --git a/src/test/ui/traits/issue-77982.rs b/tests/ui/traits/issue-77982.rs similarity index 100% rename from src/test/ui/traits/issue-77982.rs rename to tests/ui/traits/issue-77982.rs diff --git a/src/test/ui/traits/issue-77982.stderr b/tests/ui/traits/issue-77982.stderr similarity index 100% rename from src/test/ui/traits/issue-77982.stderr rename to tests/ui/traits/issue-77982.stderr diff --git a/src/test/ui/traits/issue-78372.rs b/tests/ui/traits/issue-78372.rs similarity index 100% rename from src/test/ui/traits/issue-78372.rs rename to tests/ui/traits/issue-78372.rs diff --git a/src/test/ui/traits/issue-78372.stderr b/tests/ui/traits/issue-78372.stderr similarity index 100% rename from src/test/ui/traits/issue-78372.stderr rename to tests/ui/traits/issue-78372.stderr diff --git a/src/test/ui/traits/issue-78632.rs b/tests/ui/traits/issue-78632.rs similarity index 100% rename from src/test/ui/traits/issue-78632.rs rename to tests/ui/traits/issue-78632.rs diff --git a/src/test/ui/traits/issue-79458.rs b/tests/ui/traits/issue-79458.rs similarity index 100% rename from src/test/ui/traits/issue-79458.rs rename to tests/ui/traits/issue-79458.rs diff --git a/src/test/ui/traits/issue-79458.stderr b/tests/ui/traits/issue-79458.stderr similarity index 100% rename from src/test/ui/traits/issue-79458.stderr rename to tests/ui/traits/issue-79458.stderr diff --git a/src/test/ui/traits/issue-8153.rs b/tests/ui/traits/issue-8153.rs similarity index 100% rename from src/test/ui/traits/issue-8153.rs rename to tests/ui/traits/issue-8153.rs diff --git a/src/test/ui/traits/issue-8153.stderr b/tests/ui/traits/issue-8153.stderr similarity index 100% rename from src/test/ui/traits/issue-8153.stderr rename to tests/ui/traits/issue-8153.stderr diff --git a/src/test/ui/traits/issue-82830.rs b/tests/ui/traits/issue-82830.rs similarity index 100% rename from src/test/ui/traits/issue-82830.rs rename to tests/ui/traits/issue-82830.rs diff --git a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.rs b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.rs similarity index 100% rename from src/test/ui/traits/issue-83538-tainted-cache-after-cycle.rs rename to tests/ui/traits/issue-83538-tainted-cache-after-cycle.rs diff --git a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.stderr b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.stderr similarity index 100% rename from src/test/ui/traits/issue-83538-tainted-cache-after-cycle.stderr rename to tests/ui/traits/issue-83538-tainted-cache-after-cycle.stderr diff --git a/src/test/ui/traits/issue-84399-bad-fresh-caching.rs b/tests/ui/traits/issue-84399-bad-fresh-caching.rs similarity index 100% rename from src/test/ui/traits/issue-84399-bad-fresh-caching.rs rename to tests/ui/traits/issue-84399-bad-fresh-caching.rs diff --git a/src/test/ui/traits/issue-85360-eval-obligation-ice.rs b/tests/ui/traits/issue-85360-eval-obligation-ice.rs similarity index 100% rename from src/test/ui/traits/issue-85360-eval-obligation-ice.rs rename to tests/ui/traits/issue-85360-eval-obligation-ice.rs diff --git a/src/test/ui/traits/issue-85360-eval-obligation-ice.stderr b/tests/ui/traits/issue-85360-eval-obligation-ice.stderr similarity index 100% rename from src/test/ui/traits/issue-85360-eval-obligation-ice.stderr rename to tests/ui/traits/issue-85360-eval-obligation-ice.stderr diff --git a/src/test/ui/traits/issue-85735.rs b/tests/ui/traits/issue-85735.rs similarity index 100% rename from src/test/ui/traits/issue-85735.rs rename to tests/ui/traits/issue-85735.rs diff --git a/src/test/ui/traits/issue-85735.stderr b/tests/ui/traits/issue-85735.stderr similarity index 100% rename from src/test/ui/traits/issue-85735.stderr rename to tests/ui/traits/issue-85735.stderr diff --git a/src/test/ui/traits/issue-87558.rs b/tests/ui/traits/issue-87558.rs similarity index 100% rename from src/test/ui/traits/issue-87558.rs rename to tests/ui/traits/issue-87558.rs diff --git a/src/test/ui/traits/issue-87558.stderr b/tests/ui/traits/issue-87558.stderr similarity index 100% rename from src/test/ui/traits/issue-87558.stderr rename to tests/ui/traits/issue-87558.stderr diff --git a/src/test/ui/traits/issue-89119.rs b/tests/ui/traits/issue-89119.rs similarity index 100% rename from src/test/ui/traits/issue-89119.rs rename to tests/ui/traits/issue-89119.rs diff --git a/src/test/ui/traits/issue-90195-2.rs b/tests/ui/traits/issue-90195-2.rs similarity index 100% rename from src/test/ui/traits/issue-90195-2.rs rename to tests/ui/traits/issue-90195-2.rs diff --git a/src/test/ui/traits/issue-90195.rs b/tests/ui/traits/issue-90195.rs similarity index 100% rename from src/test/ui/traits/issue-90195.rs rename to tests/ui/traits/issue-90195.rs diff --git a/src/test/ui/traits/issue-90662-projection-caching.rs b/tests/ui/traits/issue-90662-projection-caching.rs similarity index 100% rename from src/test/ui/traits/issue-90662-projection-caching.rs rename to tests/ui/traits/issue-90662-projection-caching.rs diff --git a/src/test/ui/traits/issue-91594.rs b/tests/ui/traits/issue-91594.rs similarity index 100% rename from src/test/ui/traits/issue-91594.rs rename to tests/ui/traits/issue-91594.rs diff --git a/src/test/ui/traits/issue-91594.stderr b/tests/ui/traits/issue-91594.stderr similarity index 100% rename from src/test/ui/traits/issue-91594.stderr rename to tests/ui/traits/issue-91594.stderr diff --git a/src/test/ui/traits/issue-91949-hangs-on-recursion.rs b/tests/ui/traits/issue-91949-hangs-on-recursion.rs similarity index 100% rename from src/test/ui/traits/issue-91949-hangs-on-recursion.rs rename to tests/ui/traits/issue-91949-hangs-on-recursion.rs diff --git a/src/test/ui/traits/issue-91949-hangs-on-recursion.stderr b/tests/ui/traits/issue-91949-hangs-on-recursion.stderr similarity index 100% rename from src/test/ui/traits/issue-91949-hangs-on-recursion.stderr rename to tests/ui/traits/issue-91949-hangs-on-recursion.stderr diff --git a/src/test/ui/traits/issue-92292.rs b/tests/ui/traits/issue-92292.rs similarity index 100% rename from src/test/ui/traits/issue-92292.rs rename to tests/ui/traits/issue-92292.rs diff --git a/src/test/ui/traits/issue-9394-inherited-calls.rs b/tests/ui/traits/issue-9394-inherited-calls.rs similarity index 100% rename from src/test/ui/traits/issue-9394-inherited-calls.rs rename to tests/ui/traits/issue-9394-inherited-calls.rs diff --git a/src/test/ui/traits/issue-95311.rs b/tests/ui/traits/issue-95311.rs similarity index 100% rename from src/test/ui/traits/issue-95311.rs rename to tests/ui/traits/issue-95311.rs diff --git a/src/test/ui/traits/issue-95898.rs b/tests/ui/traits/issue-95898.rs similarity index 100% rename from src/test/ui/traits/issue-95898.rs rename to tests/ui/traits/issue-95898.rs diff --git a/src/test/ui/traits/issue-95898.stderr b/tests/ui/traits/issue-95898.stderr similarity index 100% rename from src/test/ui/traits/issue-95898.stderr rename to tests/ui/traits/issue-95898.stderr diff --git a/src/test/ui/traits/issue-96664.rs b/tests/ui/traits/issue-96664.rs similarity index 100% rename from src/test/ui/traits/issue-96664.rs rename to tests/ui/traits/issue-96664.rs diff --git a/src/test/ui/traits/issue-96665.rs b/tests/ui/traits/issue-96665.rs similarity index 100% rename from src/test/ui/traits/issue-96665.rs rename to tests/ui/traits/issue-96665.rs diff --git a/src/test/ui/traits/issue-97576.rs b/tests/ui/traits/issue-97576.rs similarity index 100% rename from src/test/ui/traits/issue-97576.rs rename to tests/ui/traits/issue-97576.rs diff --git a/src/test/ui/traits/issue-97576.stderr b/tests/ui/traits/issue-97576.stderr similarity index 100% rename from src/test/ui/traits/issue-97576.stderr rename to tests/ui/traits/issue-97576.stderr diff --git a/src/test/ui/traits/issue-97695-double-trivial-bound.rs b/tests/ui/traits/issue-97695-double-trivial-bound.rs similarity index 100% rename from src/test/ui/traits/issue-97695-double-trivial-bound.rs rename to tests/ui/traits/issue-97695-double-trivial-bound.rs diff --git a/src/test/ui/traits/issue-99875.rs b/tests/ui/traits/issue-99875.rs similarity index 100% rename from src/test/ui/traits/issue-99875.rs rename to tests/ui/traits/issue-99875.rs diff --git a/src/test/ui/traits/issue-99875.stderr b/tests/ui/traits/issue-99875.stderr similarity index 100% rename from src/test/ui/traits/issue-99875.stderr rename to tests/ui/traits/issue-99875.stderr diff --git a/src/test/ui/traits/item-inside-macro.rs b/tests/ui/traits/item-inside-macro.rs similarity index 100% rename from src/test/ui/traits/item-inside-macro.rs rename to tests/ui/traits/item-inside-macro.rs diff --git a/src/test/ui/traits/item-privacy.rs b/tests/ui/traits/item-privacy.rs similarity index 100% rename from src/test/ui/traits/item-privacy.rs rename to tests/ui/traits/item-privacy.rs diff --git a/src/test/ui/traits/item-privacy.stderr b/tests/ui/traits/item-privacy.stderr similarity index 100% rename from src/test/ui/traits/item-privacy.stderr rename to tests/ui/traits/item-privacy.stderr diff --git a/src/test/ui/traits/kindck-owned-contains-1.rs b/tests/ui/traits/kindck-owned-contains-1.rs similarity index 100% rename from src/test/ui/traits/kindck-owned-contains-1.rs rename to tests/ui/traits/kindck-owned-contains-1.rs diff --git a/src/test/ui/traits/map-types.rs b/tests/ui/traits/map-types.rs similarity index 100% rename from src/test/ui/traits/map-types.rs rename to tests/ui/traits/map-types.rs diff --git a/src/test/ui/traits/map-types.stderr b/tests/ui/traits/map-types.stderr similarity index 100% rename from src/test/ui/traits/map-types.stderr rename to tests/ui/traits/map-types.stderr diff --git a/src/test/ui/traits/matching-lifetimes.rs b/tests/ui/traits/matching-lifetimes.rs similarity index 100% rename from src/test/ui/traits/matching-lifetimes.rs rename to tests/ui/traits/matching-lifetimes.rs diff --git a/src/test/ui/traits/matching-lifetimes.stderr b/tests/ui/traits/matching-lifetimes.stderr similarity index 100% rename from src/test/ui/traits/matching-lifetimes.stderr rename to tests/ui/traits/matching-lifetimes.stderr diff --git a/src/test/ui/traits/method-private.rs b/tests/ui/traits/method-private.rs similarity index 100% rename from src/test/ui/traits/method-private.rs rename to tests/ui/traits/method-private.rs diff --git a/src/test/ui/traits/method-private.stderr b/tests/ui/traits/method-private.stderr similarity index 100% rename from src/test/ui/traits/method-private.stderr rename to tests/ui/traits/method-private.stderr diff --git a/src/test/ui/traits/monad.rs b/tests/ui/traits/monad.rs similarity index 100% rename from src/test/ui/traits/monad.rs rename to tests/ui/traits/monad.rs diff --git a/src/test/ui/traits/monomorphized-callees-with-ty-params-3314.rs b/tests/ui/traits/monomorphized-callees-with-ty-params-3314.rs similarity index 100% rename from src/test/ui/traits/monomorphized-callees-with-ty-params-3314.rs rename to tests/ui/traits/monomorphized-callees-with-ty-params-3314.rs diff --git a/src/test/ui/traits/multidispatch-bad.rs b/tests/ui/traits/multidispatch-bad.rs similarity index 100% rename from src/test/ui/traits/multidispatch-bad.rs rename to tests/ui/traits/multidispatch-bad.rs diff --git a/src/test/ui/traits/multidispatch-bad.stderr b/tests/ui/traits/multidispatch-bad.stderr similarity index 100% rename from src/test/ui/traits/multidispatch-bad.stderr rename to tests/ui/traits/multidispatch-bad.stderr diff --git a/src/test/ui/traits/multidispatch-conditional-impl-not-considered.rs b/tests/ui/traits/multidispatch-conditional-impl-not-considered.rs similarity index 100% rename from src/test/ui/traits/multidispatch-conditional-impl-not-considered.rs rename to tests/ui/traits/multidispatch-conditional-impl-not-considered.rs diff --git a/src/test/ui/traits/multidispatch-convert-ambig-dest.rs b/tests/ui/traits/multidispatch-convert-ambig-dest.rs similarity index 100% rename from src/test/ui/traits/multidispatch-convert-ambig-dest.rs rename to tests/ui/traits/multidispatch-convert-ambig-dest.rs diff --git a/src/test/ui/traits/multidispatch-convert-ambig-dest.stderr b/tests/ui/traits/multidispatch-convert-ambig-dest.stderr similarity index 100% rename from src/test/ui/traits/multidispatch-convert-ambig-dest.stderr rename to tests/ui/traits/multidispatch-convert-ambig-dest.stderr diff --git a/src/test/ui/traits/multidispatch-infer-convert-target.rs b/tests/ui/traits/multidispatch-infer-convert-target.rs similarity index 100% rename from src/test/ui/traits/multidispatch-infer-convert-target.rs rename to tests/ui/traits/multidispatch-infer-convert-target.rs diff --git a/src/test/ui/traits/multidispatch1.rs b/tests/ui/traits/multidispatch1.rs similarity index 100% rename from src/test/ui/traits/multidispatch1.rs rename to tests/ui/traits/multidispatch1.rs diff --git a/src/test/ui/traits/multidispatch2.rs b/tests/ui/traits/multidispatch2.rs similarity index 100% rename from src/test/ui/traits/multidispatch2.rs rename to tests/ui/traits/multidispatch2.rs diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.rs b/tests/ui/traits/mutual-recursion-issue-75860.rs similarity index 100% rename from src/test/ui/traits/mutual-recursion-issue-75860.rs rename to tests/ui/traits/mutual-recursion-issue-75860.rs diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.stderr b/tests/ui/traits/mutual-recursion-issue-75860.stderr similarity index 100% rename from src/test/ui/traits/mutual-recursion-issue-75860.stderr rename to tests/ui/traits/mutual-recursion-issue-75860.stderr diff --git a/src/test/ui/traits/negative-impls/auxiliary/foreign_trait.rs b/tests/ui/traits/negative-impls/auxiliary/foreign_trait.rs similarity index 100% rename from src/test/ui/traits/negative-impls/auxiliary/foreign_trait.rs rename to tests/ui/traits/negative-impls/auxiliary/foreign_trait.rs diff --git a/src/test/ui/traits/negative-impls/eager-mono.rs b/tests/ui/traits/negative-impls/eager-mono.rs similarity index 100% rename from src/test/ui/traits/negative-impls/eager-mono.rs rename to tests/ui/traits/negative-impls/eager-mono.rs diff --git a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs similarity index 100% rename from src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs rename to tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs diff --git a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr rename to tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr diff --git a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.rs b/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs similarity index 100% rename from src/test/ui/traits/negative-impls/feature-gate-negative_impls.rs rename to tests/ui/traits/negative-impls/feature-gate-negative_impls.rs diff --git a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.stderr b/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/feature-gate-negative_impls.stderr rename to tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-error.rs b/tests/ui/traits/negative-impls/negated-auto-traits-error.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negated-auto-traits-error.rs rename to tests/ui/traits/negative-impls/negated-auto-traits-error.rs diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-error.stderr b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/negated-auto-traits-error.stderr rename to tests/ui/traits/negative-impls/negated-auto-traits-error.stderr diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-rpass.rs b/tests/ui/traits/negative-impls/negated-auto-traits-rpass.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negated-auto-traits-rpass.rs rename to tests/ui/traits/negative-impls/negated-auto-traits-rpass.rs diff --git a/src/test/ui/traits/negative-impls/negative-default-impls.rs b/tests/ui/traits/negative-impls/negative-default-impls.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negative-default-impls.rs rename to tests/ui/traits/negative-impls/negative-default-impls.rs diff --git a/src/test/ui/traits/negative-impls/negative-default-impls.stderr b/tests/ui/traits/negative-impls/negative-default-impls.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/negative-default-impls.stderr rename to tests/ui/traits/negative-impls/negative-default-impls.stderr diff --git a/src/test/ui/traits/negative-impls/negative-impls-basic.rs b/tests/ui/traits/negative-impls/negative-impls-basic.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negative-impls-basic.rs rename to tests/ui/traits/negative-impls/negative-impls-basic.rs diff --git a/src/test/ui/traits/negative-impls/negative-specializes-negative.rs b/tests/ui/traits/negative-impls/negative-specializes-negative.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-negative.rs rename to tests/ui/traits/negative-impls/negative-specializes-negative.rs diff --git a/src/test/ui/traits/negative-impls/negative-specializes-negative.stderr b/tests/ui/traits/negative-impls/negative-specializes-negative.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-negative.stderr rename to tests/ui/traits/negative-impls/negative-specializes-negative.stderr diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.rs b/tests/ui/traits/negative-impls/negative-specializes-positive-item.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-positive-item.rs rename to tests/ui/traits/negative-impls/negative-specializes-positive-item.rs diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.stderr b/tests/ui/traits/negative-impls/negative-specializes-positive-item.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-positive-item.stderr rename to tests/ui/traits/negative-impls/negative-specializes-positive-item.stderr diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive.rs b/tests/ui/traits/negative-impls/negative-specializes-positive.rs similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-positive.rs rename to tests/ui/traits/negative-impls/negative-specializes-positive.rs diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive.stderr b/tests/ui/traits/negative-impls/negative-specializes-positive.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/negative-specializes-positive.stderr rename to tests/ui/traits/negative-impls/negative-specializes-positive.stderr diff --git a/src/test/ui/traits/negative-impls/no-items.rs b/tests/ui/traits/negative-impls/no-items.rs similarity index 100% rename from src/test/ui/traits/negative-impls/no-items.rs rename to tests/ui/traits/negative-impls/no-items.rs diff --git a/src/test/ui/traits/negative-impls/no-items.stderr b/tests/ui/traits/negative-impls/no-items.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/no-items.stderr rename to tests/ui/traits/negative-impls/no-items.stderr diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs similarity index 100% rename from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs rename to tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr rename to tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs similarity index 100% rename from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs rename to tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr rename to tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr diff --git a/src/test/ui/traits/negative-impls/positive-specializes-negative.rs b/tests/ui/traits/negative-impls/positive-specializes-negative.rs similarity index 100% rename from src/test/ui/traits/negative-impls/positive-specializes-negative.rs rename to tests/ui/traits/negative-impls/positive-specializes-negative.rs diff --git a/src/test/ui/traits/negative-impls/positive-specializes-negative.stderr b/tests/ui/traits/negative-impls/positive-specializes-negative.stderr similarity index 100% rename from src/test/ui/traits/negative-impls/positive-specializes-negative.stderr rename to tests/ui/traits/negative-impls/positive-specializes-negative.stderr diff --git a/src/test/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs b/tests/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs similarity index 100% rename from src/test/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs rename to tests/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs diff --git a/src/test/ui/traits/no-fallback-multiple-impls.rs b/tests/ui/traits/no-fallback-multiple-impls.rs similarity index 100% rename from src/test/ui/traits/no-fallback-multiple-impls.rs rename to tests/ui/traits/no-fallback-multiple-impls.rs diff --git a/src/test/ui/traits/no-fallback-multiple-impls.stderr b/tests/ui/traits/no-fallback-multiple-impls.stderr similarity index 100% rename from src/test/ui/traits/no-fallback-multiple-impls.stderr rename to tests/ui/traits/no-fallback-multiple-impls.stderr diff --git a/src/test/ui/traits/no_send-struct.rs b/tests/ui/traits/no_send-struct.rs similarity index 100% rename from src/test/ui/traits/no_send-struct.rs rename to tests/ui/traits/no_send-struct.rs diff --git a/src/test/ui/traits/no_send-struct.stderr b/tests/ui/traits/no_send-struct.stderr similarity index 100% rename from src/test/ui/traits/no_send-struct.stderr rename to tests/ui/traits/no_send-struct.stderr diff --git a/src/test/ui/traits/normalize-supertrait.rs b/tests/ui/traits/normalize-supertrait.rs similarity index 100% rename from src/test/ui/traits/normalize-supertrait.rs rename to tests/ui/traits/normalize-supertrait.rs diff --git a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.rs b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.rs similarity index 100% rename from src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.rs rename to tests/ui/traits/not-suggest-non-existing-fully-qualified-path.rs diff --git a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr similarity index 100% rename from src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr rename to tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr diff --git a/src/test/ui/traits/object-does-not-impl-trait.rs b/tests/ui/traits/object-does-not-impl-trait.rs similarity index 100% rename from src/test/ui/traits/object-does-not-impl-trait.rs rename to tests/ui/traits/object-does-not-impl-trait.rs diff --git a/src/test/ui/traits/object-does-not-impl-trait.stderr b/tests/ui/traits/object-does-not-impl-trait.stderr similarity index 100% rename from src/test/ui/traits/object-does-not-impl-trait.stderr rename to tests/ui/traits/object-does-not-impl-trait.stderr diff --git a/src/test/ui/traits/object-one-type-two-traits.rs b/tests/ui/traits/object-one-type-two-traits.rs similarity index 100% rename from src/test/ui/traits/object-one-type-two-traits.rs rename to tests/ui/traits/object-one-type-two-traits.rs diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.rs b/tests/ui/traits/object/auto-dedup-in-impl.rs similarity index 100% rename from src/test/ui/traits/object/auto-dedup-in-impl.rs rename to tests/ui/traits/object/auto-dedup-in-impl.rs diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.stderr b/tests/ui/traits/object/auto-dedup-in-impl.stderr similarity index 100% rename from src/test/ui/traits/object/auto-dedup-in-impl.stderr rename to tests/ui/traits/object/auto-dedup-in-impl.stderr diff --git a/src/test/ui/traits/object/auto-dedup.rs b/tests/ui/traits/object/auto-dedup.rs similarity index 100% rename from src/test/ui/traits/object/auto-dedup.rs rename to tests/ui/traits/object/auto-dedup.rs diff --git a/src/test/ui/traits/object/bounds-cycle-1.rs b/tests/ui/traits/object/bounds-cycle-1.rs similarity index 100% rename from src/test/ui/traits/object/bounds-cycle-1.rs rename to tests/ui/traits/object/bounds-cycle-1.rs diff --git a/src/test/ui/traits/object/bounds-cycle-2.rs b/tests/ui/traits/object/bounds-cycle-2.rs similarity index 100% rename from src/test/ui/traits/object/bounds-cycle-2.rs rename to tests/ui/traits/object/bounds-cycle-2.rs diff --git a/src/test/ui/traits/object/bounds-cycle-3.rs b/tests/ui/traits/object/bounds-cycle-3.rs similarity index 100% rename from src/test/ui/traits/object/bounds-cycle-3.rs rename to tests/ui/traits/object/bounds-cycle-3.rs diff --git a/src/test/ui/traits/object/bounds-cycle-4.rs b/tests/ui/traits/object/bounds-cycle-4.rs similarity index 100% rename from src/test/ui/traits/object/bounds-cycle-4.rs rename to tests/ui/traits/object/bounds-cycle-4.rs diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.rs b/tests/ui/traits/object/enforce-supertrait-projection.rs similarity index 100% rename from src/test/ui/traits/object/enforce-supertrait-projection.rs rename to tests/ui/traits/object/enforce-supertrait-projection.rs diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.stderr b/tests/ui/traits/object/enforce-supertrait-projection.stderr similarity index 100% rename from src/test/ui/traits/object/enforce-supertrait-projection.stderr rename to tests/ui/traits/object/enforce-supertrait-projection.stderr diff --git a/src/test/ui/traits/object/exclusion.rs b/tests/ui/traits/object/exclusion.rs similarity index 100% rename from src/test/ui/traits/object/exclusion.rs rename to tests/ui/traits/object/exclusion.rs diff --git a/src/test/ui/traits/object/generics.rs b/tests/ui/traits/object/generics.rs similarity index 100% rename from src/test/ui/traits/object/generics.rs rename to tests/ui/traits/object/generics.rs diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.rs b/tests/ui/traits/object/issue-33140-traitobject-crate.rs similarity index 100% rename from src/test/ui/traits/object/issue-33140-traitobject-crate.rs rename to tests/ui/traits/object/issue-33140-traitobject-crate.rs diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.stderr b/tests/ui/traits/object/issue-33140-traitobject-crate.stderr similarity index 100% rename from src/test/ui/traits/object/issue-33140-traitobject-crate.stderr rename to tests/ui/traits/object/issue-33140-traitobject-crate.stderr diff --git a/src/test/ui/traits/object/issue-44454-1.rs b/tests/ui/traits/object/issue-44454-1.rs similarity index 100% rename from src/test/ui/traits/object/issue-44454-1.rs rename to tests/ui/traits/object/issue-44454-1.rs diff --git a/src/test/ui/traits/object/issue-44454-1.stderr b/tests/ui/traits/object/issue-44454-1.stderr similarity index 100% rename from src/test/ui/traits/object/issue-44454-1.stderr rename to tests/ui/traits/object/issue-44454-1.stderr diff --git a/src/test/ui/traits/object/issue-44454-2.rs b/tests/ui/traits/object/issue-44454-2.rs similarity index 100% rename from src/test/ui/traits/object/issue-44454-2.rs rename to tests/ui/traits/object/issue-44454-2.rs diff --git a/src/test/ui/traits/object/issue-44454-2.stderr b/tests/ui/traits/object/issue-44454-2.stderr similarity index 100% rename from src/test/ui/traits/object/issue-44454-2.stderr rename to tests/ui/traits/object/issue-44454-2.stderr diff --git a/src/test/ui/traits/object/issue-44454-3.rs b/tests/ui/traits/object/issue-44454-3.rs similarity index 100% rename from src/test/ui/traits/object/issue-44454-3.rs rename to tests/ui/traits/object/issue-44454-3.rs diff --git a/src/test/ui/traits/object/issue-44454-3.stderr b/tests/ui/traits/object/issue-44454-3.stderr similarity index 100% rename from src/test/ui/traits/object/issue-44454-3.stderr rename to tests/ui/traits/object/issue-44454-3.stderr diff --git a/src/test/ui/traits/object/lifetime-first.rs b/tests/ui/traits/object/lifetime-first.rs similarity index 100% rename from src/test/ui/traits/object/lifetime-first.rs rename to tests/ui/traits/object/lifetime-first.rs diff --git a/src/test/ui/traits/object/macro-matcher.rs b/tests/ui/traits/object/macro-matcher.rs similarity index 100% rename from src/test/ui/traits/object/macro-matcher.rs rename to tests/ui/traits/object/macro-matcher.rs diff --git a/src/test/ui/traits/object/macro-matcher.stderr b/tests/ui/traits/object/macro-matcher.stderr similarity index 100% rename from src/test/ui/traits/object/macro-matcher.stderr rename to tests/ui/traits/object/macro-matcher.stderr diff --git a/src/test/ui/traits/object/safety.rs b/tests/ui/traits/object/safety.rs similarity index 100% rename from src/test/ui/traits/object/safety.rs rename to tests/ui/traits/object/safety.rs diff --git a/src/test/ui/traits/object/safety.stderr b/tests/ui/traits/object/safety.stderr similarity index 100% rename from src/test/ui/traits/object/safety.stderr rename to tests/ui/traits/object/safety.stderr diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.rs b/tests/ui/traits/object/supertrait-lifetime-bound.rs similarity index 100% rename from src/test/ui/traits/object/supertrait-lifetime-bound.rs rename to tests/ui/traits/object/supertrait-lifetime-bound.rs diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.stderr b/tests/ui/traits/object/supertrait-lifetime-bound.stderr similarity index 100% rename from src/test/ui/traits/object/supertrait-lifetime-bound.stderr rename to tests/ui/traits/object/supertrait-lifetime-bound.stderr diff --git a/src/test/ui/traits/object/vs-lifetime-2.rs b/tests/ui/traits/object/vs-lifetime-2.rs similarity index 100% rename from src/test/ui/traits/object/vs-lifetime-2.rs rename to tests/ui/traits/object/vs-lifetime-2.rs diff --git a/src/test/ui/traits/object/vs-lifetime-2.stderr b/tests/ui/traits/object/vs-lifetime-2.stderr similarity index 100% rename from src/test/ui/traits/object/vs-lifetime-2.stderr rename to tests/ui/traits/object/vs-lifetime-2.stderr diff --git a/src/test/ui/traits/object/vs-lifetime.rs b/tests/ui/traits/object/vs-lifetime.rs similarity index 100% rename from src/test/ui/traits/object/vs-lifetime.rs rename to tests/ui/traits/object/vs-lifetime.rs diff --git a/src/test/ui/traits/object/vs-lifetime.stderr b/tests/ui/traits/object/vs-lifetime.stderr similarity index 100% rename from src/test/ui/traits/object/vs-lifetime.stderr rename to tests/ui/traits/object/vs-lifetime.stderr diff --git a/src/test/ui/traits/object/with-lifetime-bound.rs b/tests/ui/traits/object/with-lifetime-bound.rs similarity index 100% rename from src/test/ui/traits/object/with-lifetime-bound.rs rename to tests/ui/traits/object/with-lifetime-bound.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.rs b/tests/ui/traits/object/with-self-in-projection-output-bad.rs similarity index 100% rename from src/test/ui/traits/object/with-self-in-projection-output-bad.rs rename to tests/ui/traits/object/with-self-in-projection-output-bad.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.stderr b/tests/ui/traits/object/with-self-in-projection-output-bad.stderr similarity index 100% rename from src/test/ui/traits/object/with-self-in-projection-output-bad.stderr rename to tests/ui/traits/object/with-self-in-projection-output-bad.stderr diff --git a/src/test/ui/traits/object/with-self-in-projection-output-good.rs b/tests/ui/traits/object/with-self-in-projection-output-good.rs similarity index 100% rename from src/test/ui/traits/object/with-self-in-projection-output-good.rs rename to tests/ui/traits/object/with-self-in-projection-output-good.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs b/tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs similarity index 100% rename from src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs rename to tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs diff --git a/src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs b/tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs similarity index 100% rename from src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs rename to tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs diff --git a/src/test/ui/traits/operator-overloading-issue-52025.rs b/tests/ui/traits/operator-overloading-issue-52025.rs similarity index 100% rename from src/test/ui/traits/operator-overloading-issue-52025.rs rename to tests/ui/traits/operator-overloading-issue-52025.rs diff --git a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.rs b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.rs similarity index 100% rename from src/test/ui/traits/overlap-not-permitted-for-builtin-trait.rs rename to tests/ui/traits/overlap-not-permitted-for-builtin-trait.rs diff --git a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.stderr b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.stderr similarity index 100% rename from src/test/ui/traits/overlap-not-permitted-for-builtin-trait.stderr rename to tests/ui/traits/overlap-not-permitted-for-builtin-trait.stderr diff --git a/src/test/ui/traits/overlap-permitted-for-marker-traits.rs b/tests/ui/traits/overlap-permitted-for-marker-traits.rs similarity index 100% rename from src/test/ui/traits/overlap-permitted-for-marker-traits.rs rename to tests/ui/traits/overlap-permitted-for-marker-traits.rs diff --git a/src/test/ui/traits/param-without-lifetime-constraint.rs b/tests/ui/traits/param-without-lifetime-constraint.rs similarity index 100% rename from src/test/ui/traits/param-without-lifetime-constraint.rs rename to tests/ui/traits/param-without-lifetime-constraint.rs diff --git a/src/test/ui/traits/param-without-lifetime-constraint.stderr b/tests/ui/traits/param-without-lifetime-constraint.stderr similarity index 100% rename from src/test/ui/traits/param-without-lifetime-constraint.stderr rename to tests/ui/traits/param-without-lifetime-constraint.stderr diff --git a/src/test/ui/traits/parameterized-with-bounds.rs b/tests/ui/traits/parameterized-with-bounds.rs similarity index 100% rename from src/test/ui/traits/parameterized-with-bounds.rs rename to tests/ui/traits/parameterized-with-bounds.rs diff --git a/src/test/ui/traits/pointee-deduction.rs b/tests/ui/traits/pointee-deduction.rs similarity index 100% rename from src/test/ui/traits/pointee-deduction.rs rename to tests/ui/traits/pointee-deduction.rs diff --git a/src/test/ui/traits/pointee-tail-is-generic-errors.rs b/tests/ui/traits/pointee-tail-is-generic-errors.rs similarity index 100% rename from src/test/ui/traits/pointee-tail-is-generic-errors.rs rename to tests/ui/traits/pointee-tail-is-generic-errors.rs diff --git a/src/test/ui/traits/pointee-tail-is-generic-errors.stderr b/tests/ui/traits/pointee-tail-is-generic-errors.stderr similarity index 100% rename from src/test/ui/traits/pointee-tail-is-generic-errors.stderr rename to tests/ui/traits/pointee-tail-is-generic-errors.stderr diff --git a/src/test/ui/traits/pointee-tail-is-generic.rs b/tests/ui/traits/pointee-tail-is-generic.rs similarity index 100% rename from src/test/ui/traits/pointee-tail-is-generic.rs rename to tests/ui/traits/pointee-tail-is-generic.rs diff --git a/src/test/ui/traits/principal-less-objects.rs b/tests/ui/traits/principal-less-objects.rs similarity index 100% rename from src/test/ui/traits/principal-less-objects.rs rename to tests/ui/traits/principal-less-objects.rs diff --git a/src/test/ui/traits/privacy.rs b/tests/ui/traits/privacy.rs similarity index 100% rename from src/test/ui/traits/privacy.rs rename to tests/ui/traits/privacy.rs diff --git a/src/test/ui/traits/project-modulo-regions.rs b/tests/ui/traits/project-modulo-regions.rs similarity index 100% rename from src/test/ui/traits/project-modulo-regions.rs rename to tests/ui/traits/project-modulo-regions.rs diff --git a/src/test/ui/traits/project-modulo-regions.with_clause.stderr b/tests/ui/traits/project-modulo-regions.with_clause.stderr similarity index 100% rename from src/test/ui/traits/project-modulo-regions.with_clause.stderr rename to tests/ui/traits/project-modulo-regions.with_clause.stderr diff --git a/src/test/ui/traits/project-modulo-regions.without_clause.stderr b/tests/ui/traits/project-modulo-regions.without_clause.stderr similarity index 100% rename from src/test/ui/traits/project-modulo-regions.without_clause.stderr rename to tests/ui/traits/project-modulo-regions.without_clause.stderr diff --git a/src/test/ui/traits/region-pointer-simple.rs b/tests/ui/traits/region-pointer-simple.rs similarity index 100% rename from src/test/ui/traits/region-pointer-simple.rs rename to tests/ui/traits/region-pointer-simple.rs diff --git a/src/test/ui/traits/reservation-impl/coherence-conflict.rs b/tests/ui/traits/reservation-impl/coherence-conflict.rs similarity index 100% rename from src/test/ui/traits/reservation-impl/coherence-conflict.rs rename to tests/ui/traits/reservation-impl/coherence-conflict.rs diff --git a/src/test/ui/traits/reservation-impl/coherence-conflict.stderr b/tests/ui/traits/reservation-impl/coherence-conflict.stderr similarity index 100% rename from src/test/ui/traits/reservation-impl/coherence-conflict.stderr rename to tests/ui/traits/reservation-impl/coherence-conflict.stderr diff --git a/src/test/ui/traits/reservation-impl/no-use.rs b/tests/ui/traits/reservation-impl/no-use.rs similarity index 100% rename from src/test/ui/traits/reservation-impl/no-use.rs rename to tests/ui/traits/reservation-impl/no-use.rs diff --git a/src/test/ui/traits/reservation-impl/no-use.stderr b/tests/ui/traits/reservation-impl/no-use.stderr similarity index 100% rename from src/test/ui/traits/reservation-impl/no-use.stderr rename to tests/ui/traits/reservation-impl/no-use.stderr diff --git a/src/test/ui/traits/reservation-impl/non-lattice-ok.rs b/tests/ui/traits/reservation-impl/non-lattice-ok.rs similarity index 100% rename from src/test/ui/traits/reservation-impl/non-lattice-ok.rs rename to tests/ui/traits/reservation-impl/non-lattice-ok.rs diff --git a/src/test/ui/traits/reservation-impl/ok.rs b/tests/ui/traits/reservation-impl/ok.rs similarity index 100% rename from src/test/ui/traits/reservation-impl/ok.rs rename to tests/ui/traits/reservation-impl/ok.rs diff --git a/src/test/ui/traits/resolution-in-overloaded-op.rs b/tests/ui/traits/resolution-in-overloaded-op.rs similarity index 100% rename from src/test/ui/traits/resolution-in-overloaded-op.rs rename to tests/ui/traits/resolution-in-overloaded-op.rs diff --git a/src/test/ui/traits/resolution-in-overloaded-op.stderr b/tests/ui/traits/resolution-in-overloaded-op.stderr similarity index 100% rename from src/test/ui/traits/resolution-in-overloaded-op.stderr rename to tests/ui/traits/resolution-in-overloaded-op.stderr diff --git a/src/test/ui/traits/safety-fn-body.mir.stderr b/tests/ui/traits/safety-fn-body.mir.stderr similarity index 100% rename from src/test/ui/traits/safety-fn-body.mir.stderr rename to tests/ui/traits/safety-fn-body.mir.stderr diff --git a/src/test/ui/traits/safety-fn-body.rs b/tests/ui/traits/safety-fn-body.rs similarity index 100% rename from src/test/ui/traits/safety-fn-body.rs rename to tests/ui/traits/safety-fn-body.rs diff --git a/src/test/ui/traits/safety-fn-body.thir.stderr b/tests/ui/traits/safety-fn-body.thir.stderr similarity index 100% rename from src/test/ui/traits/safety-fn-body.thir.stderr rename to tests/ui/traits/safety-fn-body.thir.stderr diff --git a/src/test/ui/traits/safety-inherent-impl.rs b/tests/ui/traits/safety-inherent-impl.rs similarity index 100% rename from src/test/ui/traits/safety-inherent-impl.rs rename to tests/ui/traits/safety-inherent-impl.rs diff --git a/src/test/ui/traits/safety-inherent-impl.stderr b/tests/ui/traits/safety-inherent-impl.stderr similarity index 100% rename from src/test/ui/traits/safety-inherent-impl.stderr rename to tests/ui/traits/safety-inherent-impl.stderr diff --git a/src/test/ui/traits/safety-ok-cc.rs b/tests/ui/traits/safety-ok-cc.rs similarity index 100% rename from src/test/ui/traits/safety-ok-cc.rs rename to tests/ui/traits/safety-ok-cc.rs diff --git a/src/test/ui/traits/safety-ok.rs b/tests/ui/traits/safety-ok.rs similarity index 100% rename from src/test/ui/traits/safety-ok.rs rename to tests/ui/traits/safety-ok.rs diff --git a/src/test/ui/traits/safety-trait-impl-cc.rs b/tests/ui/traits/safety-trait-impl-cc.rs similarity index 100% rename from src/test/ui/traits/safety-trait-impl-cc.rs rename to tests/ui/traits/safety-trait-impl-cc.rs diff --git a/src/test/ui/traits/safety-trait-impl-cc.stderr b/tests/ui/traits/safety-trait-impl-cc.stderr similarity index 100% rename from src/test/ui/traits/safety-trait-impl-cc.stderr rename to tests/ui/traits/safety-trait-impl-cc.stderr diff --git a/src/test/ui/traits/safety-trait-impl.rs b/tests/ui/traits/safety-trait-impl.rs similarity index 100% rename from src/test/ui/traits/safety-trait-impl.rs rename to tests/ui/traits/safety-trait-impl.rs diff --git a/src/test/ui/traits/safety-trait-impl.stderr b/tests/ui/traits/safety-trait-impl.stderr similarity index 100% rename from src/test/ui/traits/safety-trait-impl.stderr rename to tests/ui/traits/safety-trait-impl.stderr diff --git a/src/test/ui/traits/self-without-lifetime-constraint.rs b/tests/ui/traits/self-without-lifetime-constraint.rs similarity index 100% rename from src/test/ui/traits/self-without-lifetime-constraint.rs rename to tests/ui/traits/self-without-lifetime-constraint.rs diff --git a/src/test/ui/traits/self-without-lifetime-constraint.stderr b/tests/ui/traits/self-without-lifetime-constraint.stderr similarity index 100% rename from src/test/ui/traits/self-without-lifetime-constraint.stderr rename to tests/ui/traits/self-without-lifetime-constraint.stderr diff --git a/src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs b/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs similarity index 100% rename from src/test/ui/traits/solver-cycles/inductive-canonical-cycle.rs rename to tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs diff --git a/src/test/ui/traits/static-method-generic-inference.rs b/tests/ui/traits/static-method-generic-inference.rs similarity index 100% rename from src/test/ui/traits/static-method-generic-inference.rs rename to tests/ui/traits/static-method-generic-inference.rs diff --git a/src/test/ui/traits/static-method-generic-inference.stderr b/tests/ui/traits/static-method-generic-inference.stderr similarity index 100% rename from src/test/ui/traits/static-method-generic-inference.stderr rename to tests/ui/traits/static-method-generic-inference.stderr diff --git a/src/test/ui/traits/static-method-overwriting.rs b/tests/ui/traits/static-method-overwriting.rs similarity index 100% rename from src/test/ui/traits/static-method-overwriting.rs rename to tests/ui/traits/static-method-overwriting.rs diff --git a/src/test/ui/traits/static-outlives-a-where-clause.rs b/tests/ui/traits/static-outlives-a-where-clause.rs similarity index 100% rename from src/test/ui/traits/static-outlives-a-where-clause.rs rename to tests/ui/traits/static-outlives-a-where-clause.rs diff --git a/src/test/ui/traits/staticness-mismatch.rs b/tests/ui/traits/staticness-mismatch.rs similarity index 100% rename from src/test/ui/traits/staticness-mismatch.rs rename to tests/ui/traits/staticness-mismatch.rs diff --git a/src/test/ui/traits/staticness-mismatch.stderr b/tests/ui/traits/staticness-mismatch.stderr similarity index 100% rename from src/test/ui/traits/staticness-mismatch.stderr rename to tests/ui/traits/staticness-mismatch.stderr diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.fixed b/tests/ui/traits/suggest-deferences/issue-39029.fixed similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-39029.fixed rename to tests/ui/traits/suggest-deferences/issue-39029.fixed diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.rs b/tests/ui/traits/suggest-deferences/issue-39029.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-39029.rs rename to tests/ui/traits/suggest-deferences/issue-39029.rs diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.stderr b/tests/ui/traits/suggest-deferences/issue-39029.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-39029.stderr rename to tests/ui/traits/suggest-deferences/issue-39029.stderr diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.fixed b/tests/ui/traits/suggest-deferences/issue-62530.fixed similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-62530.fixed rename to tests/ui/traits/suggest-deferences/issue-62530.fixed diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.rs b/tests/ui/traits/suggest-deferences/issue-62530.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-62530.rs rename to tests/ui/traits/suggest-deferences/issue-62530.rs diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.stderr b/tests/ui/traits/suggest-deferences/issue-62530.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/issue-62530.stderr rename to tests/ui/traits/suggest-deferences/issue-62530.stderr diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.fixed b/tests/ui/traits/suggest-deferences/multiple-0.fixed similarity index 100% rename from src/test/ui/traits/suggest-deferences/multiple-0.fixed rename to tests/ui/traits/suggest-deferences/multiple-0.fixed diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.rs b/tests/ui/traits/suggest-deferences/multiple-0.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/multiple-0.rs rename to tests/ui/traits/suggest-deferences/multiple-0.rs diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.stderr b/tests/ui/traits/suggest-deferences/multiple-0.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/multiple-0.stderr rename to tests/ui/traits/suggest-deferences/multiple-0.stderr diff --git a/src/test/ui/traits/suggest-deferences/multiple-1.rs b/tests/ui/traits/suggest-deferences/multiple-1.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/multiple-1.rs rename to tests/ui/traits/suggest-deferences/multiple-1.rs diff --git a/src/test/ui/traits/suggest-deferences/multiple-1.stderr b/tests/ui/traits/suggest-deferences/multiple-1.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/multiple-1.stderr rename to tests/ui/traits/suggest-deferences/multiple-1.stderr diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.fixed b/tests/ui/traits/suggest-deferences/root-obligation.fixed similarity index 100% rename from src/test/ui/traits/suggest-deferences/root-obligation.fixed rename to tests/ui/traits/suggest-deferences/root-obligation.fixed diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.rs b/tests/ui/traits/suggest-deferences/root-obligation.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/root-obligation.rs rename to tests/ui/traits/suggest-deferences/root-obligation.rs diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.stderr b/tests/ui/traits/suggest-deferences/root-obligation.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/root-obligation.stderr rename to tests/ui/traits/suggest-deferences/root-obligation.stderr diff --git a/src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed similarity index 100% rename from src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed rename to tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed diff --git a/src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs similarity index 100% rename from src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs rename to tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs diff --git a/src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr similarity index 100% rename from src/test/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr rename to tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr diff --git a/src/test/ui/traits/suggest-fully-qualified-closure.rs b/tests/ui/traits/suggest-fully-qualified-closure.rs similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-closure.rs rename to tests/ui/traits/suggest-fully-qualified-closure.rs diff --git a/src/test/ui/traits/suggest-fully-qualified-closure.stderr b/tests/ui/traits/suggest-fully-qualified-closure.stderr similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-closure.stderr rename to tests/ui/traits/suggest-fully-qualified-closure.stderr diff --git a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.rs b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.rs similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.rs rename to tests/ui/traits/suggest-fully-qualified-path-with-adjustment.rs diff --git a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr rename to tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr diff --git a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.rs b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.rs similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.rs rename to tests/ui/traits/suggest-fully-qualified-path-without-adjustment.rs diff --git a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr similarity index 100% rename from src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr rename to tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr diff --git a/src/test/ui/traits/suggest-where-clause.rs b/tests/ui/traits/suggest-where-clause.rs similarity index 100% rename from src/test/ui/traits/suggest-where-clause.rs rename to tests/ui/traits/suggest-where-clause.rs diff --git a/src/test/ui/traits/suggest-where-clause.stderr b/tests/ui/traits/suggest-where-clause.stderr similarity index 100% rename from src/test/ui/traits/suggest-where-clause.stderr rename to tests/ui/traits/suggest-where-clause.stderr diff --git a/src/test/ui/traits/superdefault-generics.rs b/tests/ui/traits/superdefault-generics.rs similarity index 100% rename from src/test/ui/traits/superdefault-generics.rs rename to tests/ui/traits/superdefault-generics.rs diff --git a/src/test/ui/traits/syntax-polarity.rs b/tests/ui/traits/syntax-polarity.rs similarity index 100% rename from src/test/ui/traits/syntax-polarity.rs rename to tests/ui/traits/syntax-polarity.rs diff --git a/src/test/ui/traits/syntax-trait-polarity.rs b/tests/ui/traits/syntax-trait-polarity.rs similarity index 100% rename from src/test/ui/traits/syntax-trait-polarity.rs rename to tests/ui/traits/syntax-trait-polarity.rs diff --git a/src/test/ui/traits/syntax-trait-polarity.stderr b/tests/ui/traits/syntax-trait-polarity.stderr similarity index 100% rename from src/test/ui/traits/syntax-trait-polarity.stderr rename to tests/ui/traits/syntax-trait-polarity.stderr diff --git a/src/test/ui/traits/test-2.rs b/tests/ui/traits/test-2.rs similarity index 100% rename from src/test/ui/traits/test-2.rs rename to tests/ui/traits/test-2.rs diff --git a/src/test/ui/traits/test-2.stderr b/tests/ui/traits/test-2.stderr similarity index 100% rename from src/test/ui/traits/test-2.stderr rename to tests/ui/traits/test-2.stderr diff --git a/src/test/ui/traits/test.rs b/tests/ui/traits/test.rs similarity index 100% rename from src/test/ui/traits/test.rs rename to tests/ui/traits/test.rs diff --git a/src/test/ui/traits/test.stderr b/tests/ui/traits/test.stderr similarity index 100% rename from src/test/ui/traits/test.stderr rename to tests/ui/traits/test.stderr diff --git a/src/test/ui/traits/to-str.rs b/tests/ui/traits/to-str.rs similarity index 100% rename from src/test/ui/traits/to-str.rs rename to tests/ui/traits/to-str.rs diff --git a/src/test/ui/traits/trait-or-new-type-instead.rs b/tests/ui/traits/trait-or-new-type-instead.rs similarity index 100% rename from src/test/ui/traits/trait-or-new-type-instead.rs rename to tests/ui/traits/trait-or-new-type-instead.rs diff --git a/src/test/ui/traits/trait-or-new-type-instead.stderr b/tests/ui/traits/trait-or-new-type-instead.stderr similarity index 100% rename from src/test/ui/traits/trait-or-new-type-instead.stderr rename to tests/ui/traits/trait-or-new-type-instead.stderr diff --git a/src/test/ui/traits/trait-upcasting/basic.rs b/tests/ui/traits/trait-upcasting/basic.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/basic.rs rename to tests/ui/traits/trait-upcasting/basic.rs diff --git a/src/test/ui/traits/trait-upcasting/correct-supertrait-substitution.rs b/tests/ui/traits/trait-upcasting/correct-supertrait-substitution.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/correct-supertrait-substitution.rs rename to tests/ui/traits/trait-upcasting/correct-supertrait-substitution.rs diff --git a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.rs b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.rs rename to tests/ui/traits/trait-upcasting/cyclic-trait-resolution.rs diff --git a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr rename to tests/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr diff --git a/src/test/ui/traits/trait-upcasting/diamond.rs b/tests/ui/traits/trait-upcasting/diamond.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/diamond.rs rename to tests/ui/traits/trait-upcasting/diamond.rs diff --git a/src/test/ui/traits/trait-upcasting/invalid-upcast.rs b/tests/ui/traits/trait-upcasting/invalid-upcast.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/invalid-upcast.rs rename to tests/ui/traits/trait-upcasting/invalid-upcast.rs diff --git a/src/test/ui/traits/trait-upcasting/invalid-upcast.stderr b/tests/ui/traits/trait-upcasting/invalid-upcast.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/invalid-upcast.stderr rename to tests/ui/traits/trait-upcasting/invalid-upcast.stderr diff --git a/src/test/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs b/tests/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs rename to tests/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs diff --git a/src/test/ui/traits/trait-upcasting/lifetime.rs b/tests/ui/traits/trait-upcasting/lifetime.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/lifetime.rs rename to tests/ui/traits/trait-upcasting/lifetime.rs diff --git a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.rs b/tests/ui/traits/trait-upcasting/migrate-lint-deny.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/migrate-lint-deny.rs rename to tests/ui/traits/trait-upcasting/migrate-lint-deny.rs diff --git a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.stderr b/tests/ui/traits/trait-upcasting/migrate-lint-deny.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/migrate-lint-deny.stderr rename to tests/ui/traits/trait-upcasting/migrate-lint-deny.stderr diff --git a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs rename to tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs diff --git a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr rename to tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr diff --git a/src/test/ui/traits/trait-upcasting/replace-vptr.rs b/tests/ui/traits/trait-upcasting/replace-vptr.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/replace-vptr.rs rename to tests/ui/traits/trait-upcasting/replace-vptr.rs diff --git a/src/test/ui/traits/trait-upcasting/struct.rs b/tests/ui/traits/trait-upcasting/struct.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/struct.rs rename to tests/ui/traits/trait-upcasting/struct.rs diff --git a/src/test/ui/traits/trait-upcasting/subtrait-method.rs b/tests/ui/traits/trait-upcasting/subtrait-method.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/subtrait-method.rs rename to tests/ui/traits/trait-upcasting/subtrait-method.rs diff --git a/src/test/ui/traits/trait-upcasting/subtrait-method.stderr b/tests/ui/traits/trait-upcasting/subtrait-method.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/subtrait-method.stderr rename to tests/ui/traits/trait-upcasting/subtrait-method.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-1.rs b/tests/ui/traits/trait-upcasting/type-checking-test-1.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-1.rs rename to tests/ui/traits/trait-upcasting/type-checking-test-1.rs diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-1.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-1.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-1.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-1.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-2.rs b/tests/ui/traits/trait-upcasting/type-checking-test-2.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-2.rs rename to tests/ui/traits/trait-upcasting/type-checking-test-2.rs diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-2.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-2.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-2.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-2.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.rs b/tests/ui/traits/trait-upcasting/type-checking-test-3.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-3.rs rename to tests/ui/traits/trait-upcasting/type-checking-test-3.rs diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-3.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-3.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-3.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.rs b/tests/ui/traits/trait-upcasting/type-checking-test-4.rs similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-4.rs rename to tests/ui/traits/trait-upcasting/type-checking-test-4.rs diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-4.stderr similarity index 100% rename from src/test/ui/traits/trait-upcasting/type-checking-test-4.stderr rename to tests/ui/traits/trait-upcasting/type-checking-test-4.stderr diff --git a/src/test/ui/traits/typeclasses-eq-example-static.rs b/tests/ui/traits/typeclasses-eq-example-static.rs similarity index 100% rename from src/test/ui/traits/typeclasses-eq-example-static.rs rename to tests/ui/traits/typeclasses-eq-example-static.rs diff --git a/src/test/ui/traits/typeclasses-eq-example.rs b/tests/ui/traits/typeclasses-eq-example.rs similarity index 100% rename from src/test/ui/traits/typeclasses-eq-example.rs rename to tests/ui/traits/typeclasses-eq-example.rs diff --git a/src/test/ui/traits/ufcs-object.rs b/tests/ui/traits/ufcs-object.rs similarity index 100% rename from src/test/ui/traits/ufcs-object.rs rename to tests/ui/traits/ufcs-object.rs diff --git a/src/test/ui/traits/unspecified-self-in-trait-ref.rs b/tests/ui/traits/unspecified-self-in-trait-ref.rs similarity index 100% rename from src/test/ui/traits/unspecified-self-in-trait-ref.rs rename to tests/ui/traits/unspecified-self-in-trait-ref.rs diff --git a/src/test/ui/traits/unspecified-self-in-trait-ref.stderr b/tests/ui/traits/unspecified-self-in-trait-ref.stderr similarity index 100% rename from src/test/ui/traits/unspecified-self-in-trait-ref.stderr rename to tests/ui/traits/unspecified-self-in-trait-ref.stderr diff --git a/src/test/ui/traits/use-before-def.rs b/tests/ui/traits/use-before-def.rs similarity index 100% rename from src/test/ui/traits/use-before-def.rs rename to tests/ui/traits/use-before-def.rs diff --git a/src/test/ui/traits/vtable-res-trait-param.rs b/tests/ui/traits/vtable-res-trait-param.rs similarity index 100% rename from src/test/ui/traits/vtable-res-trait-param.rs rename to tests/ui/traits/vtable-res-trait-param.rs diff --git a/src/test/ui/traits/vtable-res-trait-param.stderr b/tests/ui/traits/vtable-res-trait-param.stderr similarity index 100% rename from src/test/ui/traits/vtable-res-trait-param.stderr rename to tests/ui/traits/vtable-res-trait-param.stderr diff --git a/src/test/ui/traits/vtable/issue-91807.rs b/tests/ui/traits/vtable/issue-91807.rs similarity index 100% rename from src/test/ui/traits/vtable/issue-91807.rs rename to tests/ui/traits/vtable/issue-91807.rs diff --git a/src/test/ui/traits/vtable/issue-97381.rs b/tests/ui/traits/vtable/issue-97381.rs similarity index 100% rename from src/test/ui/traits/vtable/issue-97381.rs rename to tests/ui/traits/vtable/issue-97381.rs diff --git a/src/test/ui/traits/vtable/issue-97381.stderr b/tests/ui/traits/vtable/issue-97381.stderr similarity index 100% rename from src/test/ui/traits/vtable/issue-97381.stderr rename to tests/ui/traits/vtable/issue-97381.stderr diff --git a/src/test/ui/traits/vtable/vtable-diamond.rs b/tests/ui/traits/vtable/vtable-diamond.rs similarity index 100% rename from src/test/ui/traits/vtable/vtable-diamond.rs rename to tests/ui/traits/vtable/vtable-diamond.rs diff --git a/src/test/ui/traits/vtable/vtable-diamond.stderr b/tests/ui/traits/vtable/vtable-diamond.stderr similarity index 100% rename from src/test/ui/traits/vtable/vtable-diamond.stderr rename to tests/ui/traits/vtable/vtable-diamond.stderr diff --git a/src/test/ui/traits/vtable/vtable-multi-level.rs b/tests/ui/traits/vtable/vtable-multi-level.rs similarity index 100% rename from src/test/ui/traits/vtable/vtable-multi-level.rs rename to tests/ui/traits/vtable/vtable-multi-level.rs diff --git a/src/test/ui/traits/vtable/vtable-multi-level.stderr b/tests/ui/traits/vtable/vtable-multi-level.stderr similarity index 100% rename from src/test/ui/traits/vtable/vtable-multi-level.stderr rename to tests/ui/traits/vtable/vtable-multi-level.stderr diff --git a/src/test/ui/traits/vtable/vtable-multiple.rs b/tests/ui/traits/vtable/vtable-multiple.rs similarity index 100% rename from src/test/ui/traits/vtable/vtable-multiple.rs rename to tests/ui/traits/vtable/vtable-multiple.rs diff --git a/src/test/ui/traits/vtable/vtable-multiple.stderr b/tests/ui/traits/vtable/vtable-multiple.stderr similarity index 100% rename from src/test/ui/traits/vtable/vtable-multiple.stderr rename to tests/ui/traits/vtable/vtable-multiple.stderr diff --git a/src/test/ui/traits/vtable/vtable-non-object-safe.rs b/tests/ui/traits/vtable/vtable-non-object-safe.rs similarity index 100% rename from src/test/ui/traits/vtable/vtable-non-object-safe.rs rename to tests/ui/traits/vtable/vtable-non-object-safe.rs diff --git a/src/test/ui/traits/vtable/vtable-non-object-safe.stderr b/tests/ui/traits/vtable/vtable-non-object-safe.stderr similarity index 100% rename from src/test/ui/traits/vtable/vtable-non-object-safe.stderr rename to tests/ui/traits/vtable/vtable-non-object-safe.stderr diff --git a/src/test/ui/traits/vtable/vtable-vacant.rs b/tests/ui/traits/vtable/vtable-vacant.rs similarity index 100% rename from src/test/ui/traits/vtable/vtable-vacant.rs rename to tests/ui/traits/vtable/vtable-vacant.rs diff --git a/src/test/ui/traits/vtable/vtable-vacant.stderr b/tests/ui/traits/vtable/vtable-vacant.stderr similarity index 100% rename from src/test/ui/traits/vtable/vtable-vacant.stderr rename to tests/ui/traits/vtable/vtable-vacant.stderr diff --git a/src/test/ui/traits/wf-object/maybe-bound.rs b/tests/ui/traits/wf-object/maybe-bound.rs similarity index 100% rename from src/test/ui/traits/wf-object/maybe-bound.rs rename to tests/ui/traits/wf-object/maybe-bound.rs diff --git a/src/test/ui/traits/wf-object/maybe-bound.stderr b/tests/ui/traits/wf-object/maybe-bound.stderr similarity index 100% rename from src/test/ui/traits/wf-object/maybe-bound.stderr rename to tests/ui/traits/wf-object/maybe-bound.stderr diff --git a/src/test/ui/traits/wf-object/no-duplicates.rs b/tests/ui/traits/wf-object/no-duplicates.rs similarity index 100% rename from src/test/ui/traits/wf-object/no-duplicates.rs rename to tests/ui/traits/wf-object/no-duplicates.rs diff --git a/src/test/ui/traits/wf-object/no-duplicates.stderr b/tests/ui/traits/wf-object/no-duplicates.stderr similarity index 100% rename from src/test/ui/traits/wf-object/no-duplicates.stderr rename to tests/ui/traits/wf-object/no-duplicates.stderr diff --git a/src/test/ui/traits/wf-object/only-maybe-bound.rs b/tests/ui/traits/wf-object/only-maybe-bound.rs similarity index 100% rename from src/test/ui/traits/wf-object/only-maybe-bound.rs rename to tests/ui/traits/wf-object/only-maybe-bound.rs diff --git a/src/test/ui/traits/wf-object/only-maybe-bound.stderr b/tests/ui/traits/wf-object/only-maybe-bound.stderr similarity index 100% rename from src/test/ui/traits/wf-object/only-maybe-bound.stderr rename to tests/ui/traits/wf-object/only-maybe-bound.stderr diff --git a/src/test/ui/traits/wf-object/reverse-order.rs b/tests/ui/traits/wf-object/reverse-order.rs similarity index 100% rename from src/test/ui/traits/wf-object/reverse-order.rs rename to tests/ui/traits/wf-object/reverse-order.rs diff --git a/src/test/ui/traits/where-clause-vs-impl.rs b/tests/ui/traits/where-clause-vs-impl.rs similarity index 100% rename from src/test/ui/traits/where-clause-vs-impl.rs rename to tests/ui/traits/where-clause-vs-impl.rs diff --git a/src/test/ui/traits/with-bounds-default.rs b/tests/ui/traits/with-bounds-default.rs similarity index 100% rename from src/test/ui/traits/with-bounds-default.rs rename to tests/ui/traits/with-bounds-default.rs diff --git a/src/test/ui/traits/with-dst.rs b/tests/ui/traits/with-dst.rs similarity index 100% rename from src/test/ui/traits/with-dst.rs rename to tests/ui/traits/with-dst.rs diff --git a/src/test/ui/transmutability/abstraction/abstracted_assume.rs b/tests/ui/transmutability/abstraction/abstracted_assume.rs similarity index 100% rename from src/test/ui/transmutability/abstraction/abstracted_assume.rs rename to tests/ui/transmutability/abstraction/abstracted_assume.rs diff --git a/src/test/ui/transmutability/abstraction/const_generic_fn.rs b/tests/ui/transmutability/abstraction/const_generic_fn.rs similarity index 100% rename from src/test/ui/transmutability/abstraction/const_generic_fn.rs rename to tests/ui/transmutability/abstraction/const_generic_fn.rs diff --git a/src/test/ui/transmutability/arrays/issue-103783-array-length.rs b/tests/ui/transmutability/arrays/issue-103783-array-length.rs similarity index 100% rename from src/test/ui/transmutability/arrays/issue-103783-array-length.rs rename to tests/ui/transmutability/arrays/issue-103783-array-length.rs diff --git a/src/test/ui/transmutability/arrays/issue-103783-array-length.stderr b/tests/ui/transmutability/arrays/issue-103783-array-length.stderr similarity index 100% rename from src/test/ui/transmutability/arrays/issue-103783-array-length.stderr rename to tests/ui/transmutability/arrays/issue-103783-array-length.stderr diff --git a/src/test/ui/transmutability/arrays/should_have_correct_length.rs b/tests/ui/transmutability/arrays/should_have_correct_length.rs similarity index 100% rename from src/test/ui/transmutability/arrays/should_have_correct_length.rs rename to tests/ui/transmutability/arrays/should_have_correct_length.rs diff --git a/src/test/ui/transmutability/arrays/should_inherit_alignment.rs b/tests/ui/transmutability/arrays/should_inherit_alignment.rs similarity index 100% rename from src/test/ui/transmutability/arrays/should_inherit_alignment.rs rename to tests/ui/transmutability/arrays/should_inherit_alignment.rs diff --git a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs b/tests/ui/transmutability/arrays/should_require_well_defined_layout.rs similarity index 100% rename from src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs rename to tests/ui/transmutability/arrays/should_require_well_defined_layout.rs diff --git a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr b/tests/ui/transmutability/arrays/should_require_well_defined_layout.stderr similarity index 100% rename from src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr rename to tests/ui/transmutability/arrays/should_require_well_defined_layout.stderr diff --git a/src/test/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.rs b/tests/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.rs similarity index 100% rename from src/test/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.rs rename to tests/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.rs diff --git a/src/test/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.stderr b/tests/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.stderr similarity index 100% rename from src/test/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.stderr rename to tests/ui/transmutability/enums/repr/primitive_reprs_should_have_correct_length.stderr diff --git a/src/test/ui/transmutability/enums/repr/should_require_well_defined_layout.rs b/tests/ui/transmutability/enums/repr/should_require_well_defined_layout.rs similarity index 100% rename from src/test/ui/transmutability/enums/repr/should_require_well_defined_layout.rs rename to tests/ui/transmutability/enums/repr/should_require_well_defined_layout.rs diff --git a/src/test/ui/transmutability/enums/repr/should_require_well_defined_layout.stderr b/tests/ui/transmutability/enums/repr/should_require_well_defined_layout.stderr similarity index 100% rename from src/test/ui/transmutability/enums/repr/should_require_well_defined_layout.stderr rename to tests/ui/transmutability/enums/repr/should_require_well_defined_layout.stderr diff --git a/src/test/ui/transmutability/enums/should_order_correctly.rs b/tests/ui/transmutability/enums/should_order_correctly.rs similarity index 100% rename from src/test/ui/transmutability/enums/should_order_correctly.rs rename to tests/ui/transmutability/enums/should_order_correctly.rs diff --git a/src/test/ui/transmutability/enums/should_pad_variants.rs b/tests/ui/transmutability/enums/should_pad_variants.rs similarity index 100% rename from src/test/ui/transmutability/enums/should_pad_variants.rs rename to tests/ui/transmutability/enums/should_pad_variants.rs diff --git a/src/test/ui/transmutability/enums/should_pad_variants.stderr b/tests/ui/transmutability/enums/should_pad_variants.stderr similarity index 100% rename from src/test/ui/transmutability/enums/should_pad_variants.stderr rename to tests/ui/transmutability/enums/should_pad_variants.stderr diff --git a/src/test/ui/transmutability/enums/should_respect_endianness.rs b/tests/ui/transmutability/enums/should_respect_endianness.rs similarity index 100% rename from src/test/ui/transmutability/enums/should_respect_endianness.rs rename to tests/ui/transmutability/enums/should_respect_endianness.rs diff --git a/src/test/ui/transmutability/enums/should_respect_endianness.stderr b/tests/ui/transmutability/enums/should_respect_endianness.stderr similarity index 100% rename from src/test/ui/transmutability/enums/should_respect_endianness.stderr rename to tests/ui/transmutability/enums/should_respect_endianness.stderr diff --git a/src/test/ui/transmutability/issue-101739-1.rs b/tests/ui/transmutability/issue-101739-1.rs similarity index 100% rename from src/test/ui/transmutability/issue-101739-1.rs rename to tests/ui/transmutability/issue-101739-1.rs diff --git a/src/test/ui/transmutability/issue-101739-1.stderr b/tests/ui/transmutability/issue-101739-1.stderr similarity index 100% rename from src/test/ui/transmutability/issue-101739-1.stderr rename to tests/ui/transmutability/issue-101739-1.stderr diff --git a/src/test/ui/transmutability/issue-101739-2.rs b/tests/ui/transmutability/issue-101739-2.rs similarity index 100% rename from src/test/ui/transmutability/issue-101739-2.rs rename to tests/ui/transmutability/issue-101739-2.rs diff --git a/src/test/ui/transmutability/issue-101739-2.stderr b/tests/ui/transmutability/issue-101739-2.stderr similarity index 100% rename from src/test/ui/transmutability/issue-101739-2.stderr rename to tests/ui/transmutability/issue-101739-2.stderr diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs b/tests/ui/transmutability/malformed-program-gracefulness/feature-missing.rs similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs rename to tests/ui/transmutability/malformed-program-gracefulness/feature-missing.rs diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr b/tests/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr rename to tests/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_dst.rs b/tests/ui/transmutability/malformed-program-gracefulness/unknown_dst.rs similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_dst.rs rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_dst.rs diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_dst.stderr b/tests/ui/transmutability/malformed-program-gracefulness/unknown_dst.stderr similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_dst.stderr rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_dst.stderr diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_src.rs b/tests/ui/transmutability/malformed-program-gracefulness/unknown_src.rs similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_src.rs rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_src.rs diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_src.stderr b/tests/ui/transmutability/malformed-program-gracefulness/unknown_src.stderr similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_src.stderr rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_src.stderr diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_src_field.rs b/tests/ui/transmutability/malformed-program-gracefulness/unknown_src_field.rs similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_src_field.rs rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_src_field.rs diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/unknown_src_field.stderr b/tests/ui/transmutability/malformed-program-gracefulness/unknown_src_field.stderr similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/unknown_src_field.stderr rename to tests/ui/transmutability/malformed-program-gracefulness/unknown_src_field.stderr diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs b/tests/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs rename to tests/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.rs diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr b/tests/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr similarity index 100% rename from src/test/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr rename to tests/ui/transmutability/malformed-program-gracefulness/wrong-type-assume.stderr diff --git a/src/test/ui/transmutability/primitives/bool.rs b/tests/ui/transmutability/primitives/bool.rs similarity index 100% rename from src/test/ui/transmutability/primitives/bool.rs rename to tests/ui/transmutability/primitives/bool.rs diff --git a/src/test/ui/transmutability/primitives/bool.stderr b/tests/ui/transmutability/primitives/bool.stderr similarity index 100% rename from src/test/ui/transmutability/primitives/bool.stderr rename to tests/ui/transmutability/primitives/bool.stderr diff --git a/src/test/ui/transmutability/primitives/numbers.rs b/tests/ui/transmutability/primitives/numbers.rs similarity index 100% rename from src/test/ui/transmutability/primitives/numbers.rs rename to tests/ui/transmutability/primitives/numbers.rs diff --git a/src/test/ui/transmutability/primitives/numbers.stderr b/tests/ui/transmutability/primitives/numbers.stderr similarity index 100% rename from src/test/ui/transmutability/primitives/numbers.stderr rename to tests/ui/transmutability/primitives/numbers.stderr diff --git a/src/test/ui/transmutability/primitives/unit.rs b/tests/ui/transmutability/primitives/unit.rs similarity index 100% rename from src/test/ui/transmutability/primitives/unit.rs rename to tests/ui/transmutability/primitives/unit.rs diff --git a/src/test/ui/transmutability/primitives/unit.stderr b/tests/ui/transmutability/primitives/unit.stderr similarity index 100% rename from src/test/ui/transmutability/primitives/unit.stderr rename to tests/ui/transmutability/primitives/unit.stderr diff --git a/src/test/ui/transmutability/references.rs b/tests/ui/transmutability/references.rs similarity index 100% rename from src/test/ui/transmutability/references.rs rename to tests/ui/transmutability/references.rs diff --git a/src/test/ui/transmutability/references.stderr b/tests/ui/transmutability/references.stderr similarity index 100% rename from src/test/ui/transmutability/references.stderr rename to tests/ui/transmutability/references.stderr diff --git a/src/test/ui/transmutability/structs/repr/should_handle_align.rs b/tests/ui/transmutability/structs/repr/should_handle_align.rs similarity index 100% rename from src/test/ui/transmutability/structs/repr/should_handle_align.rs rename to tests/ui/transmutability/structs/repr/should_handle_align.rs diff --git a/src/test/ui/transmutability/structs/repr/should_handle_packed.rs b/tests/ui/transmutability/structs/repr/should_handle_packed.rs similarity index 100% rename from src/test/ui/transmutability/structs/repr/should_handle_packed.rs rename to tests/ui/transmutability/structs/repr/should_handle_packed.rs diff --git a/src/test/ui/transmutability/structs/repr/should_require_well_defined_layout.rs b/tests/ui/transmutability/structs/repr/should_require_well_defined_layout.rs similarity index 100% rename from src/test/ui/transmutability/structs/repr/should_require_well_defined_layout.rs rename to tests/ui/transmutability/structs/repr/should_require_well_defined_layout.rs diff --git a/src/test/ui/transmutability/structs/repr/should_require_well_defined_layout.stderr b/tests/ui/transmutability/structs/repr/should_require_well_defined_layout.stderr similarity index 100% rename from src/test/ui/transmutability/structs/repr/should_require_well_defined_layout.stderr rename to tests/ui/transmutability/structs/repr/should_require_well_defined_layout.stderr diff --git a/src/test/ui/transmutability/structs/should_order_fields_correctly.rs b/tests/ui/transmutability/structs/should_order_fields_correctly.rs similarity index 100% rename from src/test/ui/transmutability/structs/should_order_fields_correctly.rs rename to tests/ui/transmutability/structs/should_order_fields_correctly.rs diff --git a/src/test/ui/transmutability/unions/boolish.rs b/tests/ui/transmutability/unions/boolish.rs similarity index 100% rename from src/test/ui/transmutability/unions/boolish.rs rename to tests/ui/transmutability/unions/boolish.rs diff --git a/src/test/ui/transmutability/unions/repr/should_handle_align.rs b/tests/ui/transmutability/unions/repr/should_handle_align.rs similarity index 100% rename from src/test/ui/transmutability/unions/repr/should_handle_align.rs rename to tests/ui/transmutability/unions/repr/should_handle_align.rs diff --git a/src/test/ui/transmutability/unions/repr/should_handle_packed.rs b/tests/ui/transmutability/unions/repr/should_handle_packed.rs similarity index 100% rename from src/test/ui/transmutability/unions/repr/should_handle_packed.rs rename to tests/ui/transmutability/unions/repr/should_handle_packed.rs diff --git a/src/test/ui/transmutability/unions/repr/should_require_well_defined_layout.rs b/tests/ui/transmutability/unions/repr/should_require_well_defined_layout.rs similarity index 100% rename from src/test/ui/transmutability/unions/repr/should_require_well_defined_layout.rs rename to tests/ui/transmutability/unions/repr/should_require_well_defined_layout.rs diff --git a/src/test/ui/transmutability/unions/repr/should_require_well_defined_layout.stderr b/tests/ui/transmutability/unions/repr/should_require_well_defined_layout.stderr similarity index 100% rename from src/test/ui/transmutability/unions/repr/should_require_well_defined_layout.stderr rename to tests/ui/transmutability/unions/repr/should_require_well_defined_layout.stderr diff --git a/src/test/ui/transmutability/unions/should_pad_variants.rs b/tests/ui/transmutability/unions/should_pad_variants.rs similarity index 100% rename from src/test/ui/transmutability/unions/should_pad_variants.rs rename to tests/ui/transmutability/unions/should_pad_variants.rs diff --git a/src/test/ui/transmutability/unions/should_pad_variants.stderr b/tests/ui/transmutability/unions/should_pad_variants.stderr similarity index 100% rename from src/test/ui/transmutability/unions/should_pad_variants.stderr rename to tests/ui/transmutability/unions/should_pad_variants.stderr diff --git a/src/test/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs b/tests/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs similarity index 100% rename from src/test/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs rename to tests/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs diff --git a/src/test/ui/transmutability/unions/should_reject_contraction.rs b/tests/ui/transmutability/unions/should_reject_contraction.rs similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_contraction.rs rename to tests/ui/transmutability/unions/should_reject_contraction.rs diff --git a/src/test/ui/transmutability/unions/should_reject_contraction.stderr b/tests/ui/transmutability/unions/should_reject_contraction.stderr similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_contraction.stderr rename to tests/ui/transmutability/unions/should_reject_contraction.stderr diff --git a/src/test/ui/transmutability/unions/should_reject_disjoint.rs b/tests/ui/transmutability/unions/should_reject_disjoint.rs similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_disjoint.rs rename to tests/ui/transmutability/unions/should_reject_disjoint.rs diff --git a/src/test/ui/transmutability/unions/should_reject_disjoint.stderr b/tests/ui/transmutability/unions/should_reject_disjoint.stderr similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_disjoint.stderr rename to tests/ui/transmutability/unions/should_reject_disjoint.stderr diff --git a/src/test/ui/transmutability/unions/should_reject_intersecting.rs b/tests/ui/transmutability/unions/should_reject_intersecting.rs similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_intersecting.rs rename to tests/ui/transmutability/unions/should_reject_intersecting.rs diff --git a/src/test/ui/transmutability/unions/should_reject_intersecting.stderr b/tests/ui/transmutability/unions/should_reject_intersecting.stderr similarity index 100% rename from src/test/ui/transmutability/unions/should_reject_intersecting.stderr rename to tests/ui/transmutability/unions/should_reject_intersecting.stderr diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_field.rs b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_field.rs rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_field.rs diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_variant.rs b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_variant.rs similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_variant.rs rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_private_variant.rs diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_tricky_unreachable_field.rs b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_tricky_unreachable_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_tricky_unreachable_field.rs rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_tricky_unreachable_field.rs diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.rs b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.rs rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.rs diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.stderr b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.stderr rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_field.stderr diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.rs b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.rs similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.rs rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.rs diff --git a/src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.stderr b/tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.stderr rename to tests/ui/transmutability/visibility/assume/should_accept_if_dst_has_unreachable_ty.stderr diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_private_field.rs b/tests/ui/transmutability/visibility/should_accept_if_src_has_private_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_private_field.rs rename to tests/ui/transmutability/visibility/should_accept_if_src_has_private_field.rs diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_private_variant.rs b/tests/ui/transmutability/visibility/should_accept_if_src_has_private_variant.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_private_variant.rs rename to tests/ui/transmutability/visibility/should_accept_if_src_has_private_variant.rs diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.rs b/tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.rs rename to tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.rs diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.stderr b/tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.stderr rename to tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_field.stderr diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.rs b/tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.rs rename to tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.rs diff --git a/src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.stderr b/tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.stderr rename to tests/ui/transmutability/visibility/should_accept_if_src_has_unreachable_ty.stderr diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_field.rs b/tests/ui/transmutability/visibility/should_reject_if_dst_has_private_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_field.rs rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_private_field.rs diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_field.stderr b/tests/ui/transmutability/visibility/should_reject_if_dst_has_private_field.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_field.stderr rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_private_field.stderr diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.rs b/tests/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.rs rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.rs diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.stderr b/tests/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.stderr rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_private_variant.stderr diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_tricky_unreachable_field.rs b/tests/ui/transmutability/visibility/should_reject_if_dst_has_tricky_unreachable_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_tricky_unreachable_field.rs rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_tricky_unreachable_field.rs diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.rs b/tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.rs rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.rs diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.stderr b/tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.stderr rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_field.stderr diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.rs b/tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.rs similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.rs rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.rs diff --git a/src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.stderr b/tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.stderr similarity index 100% rename from src/test/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.stderr rename to tests/ui/transmutability/visibility/should_reject_if_dst_has_unreachable_ty.stderr diff --git a/src/test/ui/transmute-equal-assoc-types.rs b/tests/ui/transmute-equal-assoc-types.rs similarity index 100% rename from src/test/ui/transmute-equal-assoc-types.rs rename to tests/ui/transmute-equal-assoc-types.rs diff --git a/src/test/ui/transmute-non-immediate-to-immediate.rs b/tests/ui/transmute-non-immediate-to-immediate.rs similarity index 100% rename from src/test/ui/transmute-non-immediate-to-immediate.rs rename to tests/ui/transmute-non-immediate-to-immediate.rs diff --git a/src/test/ui/transmute/lifetimes.rs b/tests/ui/transmute/lifetimes.rs similarity index 100% rename from src/test/ui/transmute/lifetimes.rs rename to tests/ui/transmute/lifetimes.rs diff --git a/src/test/ui/transmute/main.rs b/tests/ui/transmute/main.rs similarity index 100% rename from src/test/ui/transmute/main.rs rename to tests/ui/transmute/main.rs diff --git a/src/test/ui/transmute/main.stderr b/tests/ui/transmute/main.stderr similarity index 100% rename from src/test/ui/transmute/main.stderr rename to tests/ui/transmute/main.stderr diff --git a/src/test/ui/transmute/transmute-different-sizes.rs b/tests/ui/transmute/transmute-different-sizes.rs similarity index 100% rename from src/test/ui/transmute/transmute-different-sizes.rs rename to tests/ui/transmute/transmute-different-sizes.rs diff --git a/src/test/ui/transmute/transmute-different-sizes.stderr b/tests/ui/transmute/transmute-different-sizes.stderr similarity index 100% rename from src/test/ui/transmute/transmute-different-sizes.stderr rename to tests/ui/transmute/transmute-different-sizes.stderr diff --git a/src/test/ui/transmute/transmute-fat-pointers.rs b/tests/ui/transmute/transmute-fat-pointers.rs similarity index 100% rename from src/test/ui/transmute/transmute-fat-pointers.rs rename to tests/ui/transmute/transmute-fat-pointers.rs diff --git a/src/test/ui/transmute/transmute-fat-pointers.stderr b/tests/ui/transmute/transmute-fat-pointers.stderr similarity index 100% rename from src/test/ui/transmute/transmute-fat-pointers.stderr rename to tests/ui/transmute/transmute-fat-pointers.stderr diff --git a/src/test/ui/transmute/transmute-from-fn-item-types-error.rs b/tests/ui/transmute/transmute-from-fn-item-types-error.rs similarity index 100% rename from src/test/ui/transmute/transmute-from-fn-item-types-error.rs rename to tests/ui/transmute/transmute-from-fn-item-types-error.rs diff --git a/src/test/ui/transmute/transmute-from-fn-item-types-error.stderr b/tests/ui/transmute/transmute-from-fn-item-types-error.stderr similarity index 100% rename from src/test/ui/transmute/transmute-from-fn-item-types-error.stderr rename to tests/ui/transmute/transmute-from-fn-item-types-error.stderr diff --git a/src/test/ui/transmute/transmute-impl.rs b/tests/ui/transmute/transmute-impl.rs similarity index 100% rename from src/test/ui/transmute/transmute-impl.rs rename to tests/ui/transmute/transmute-impl.rs diff --git a/src/test/ui/transmute/transmute-impl.stderr b/tests/ui/transmute/transmute-impl.stderr similarity index 100% rename from src/test/ui/transmute/transmute-impl.stderr rename to tests/ui/transmute/transmute-impl.stderr diff --git a/src/test/ui/transmute/transmute-imut-to-mut.rs b/tests/ui/transmute/transmute-imut-to-mut.rs similarity index 100% rename from src/test/ui/transmute/transmute-imut-to-mut.rs rename to tests/ui/transmute/transmute-imut-to-mut.rs diff --git a/src/test/ui/transmute/transmute-imut-to-mut.stderr b/tests/ui/transmute/transmute-imut-to-mut.stderr similarity index 100% rename from src/test/ui/transmute/transmute-imut-to-mut.stderr rename to tests/ui/transmute/transmute-imut-to-mut.stderr diff --git a/src/test/ui/transmute/transmute-padding-ice.rs b/tests/ui/transmute/transmute-padding-ice.rs similarity index 100% rename from src/test/ui/transmute/transmute-padding-ice.rs rename to tests/ui/transmute/transmute-padding-ice.rs diff --git a/src/test/ui/transmute/transmute-padding-ice.stderr b/tests/ui/transmute/transmute-padding-ice.stderr similarity index 100% rename from src/test/ui/transmute/transmute-padding-ice.stderr rename to tests/ui/transmute/transmute-padding-ice.stderr diff --git a/src/test/ui/transmute/transmute-type-parameters.rs b/tests/ui/transmute/transmute-type-parameters.rs similarity index 100% rename from src/test/ui/transmute/transmute-type-parameters.rs rename to tests/ui/transmute/transmute-type-parameters.rs diff --git a/src/test/ui/transmute/transmute-type-parameters.stderr b/tests/ui/transmute/transmute-type-parameters.stderr similarity index 100% rename from src/test/ui/transmute/transmute-type-parameters.stderr rename to tests/ui/transmute/transmute-type-parameters.stderr diff --git a/src/test/ui/treat-err-as-bug/delay_span_bug.rs b/tests/ui/treat-err-as-bug/delay_span_bug.rs similarity index 100% rename from src/test/ui/treat-err-as-bug/delay_span_bug.rs rename to tests/ui/treat-err-as-bug/delay_span_bug.rs diff --git a/src/test/ui/treat-err-as-bug/delay_span_bug.stderr b/tests/ui/treat-err-as-bug/delay_span_bug.stderr similarity index 100% rename from src/test/ui/treat-err-as-bug/delay_span_bug.stderr rename to tests/ui/treat-err-as-bug/delay_span_bug.stderr diff --git a/src/test/ui/treat-err-as-bug/err.rs b/tests/ui/treat-err-as-bug/err.rs similarity index 100% rename from src/test/ui/treat-err-as-bug/err.rs rename to tests/ui/treat-err-as-bug/err.rs diff --git a/src/test/ui/treat-err-as-bug/err.stderr b/tests/ui/treat-err-as-bug/err.stderr similarity index 100% rename from src/test/ui/treat-err-as-bug/err.stderr rename to tests/ui/treat-err-as-bug/err.stderr diff --git a/src/test/ui/trivial-bounds/issue-73021-impossible-inline.inline.stderr b/tests/ui/trivial-bounds/issue-73021-impossible-inline.inline.stderr similarity index 100% rename from src/test/ui/trivial-bounds/issue-73021-impossible-inline.inline.stderr rename to tests/ui/trivial-bounds/issue-73021-impossible-inline.inline.stderr diff --git a/src/test/ui/trivial-bounds/issue-73021-impossible-inline.no-opt.stderr b/tests/ui/trivial-bounds/issue-73021-impossible-inline.no-opt.stderr similarity index 100% rename from src/test/ui/trivial-bounds/issue-73021-impossible-inline.no-opt.stderr rename to tests/ui/trivial-bounds/issue-73021-impossible-inline.no-opt.stderr diff --git a/src/test/ui/trivial-bounds/issue-73021-impossible-inline.rs b/tests/ui/trivial-bounds/issue-73021-impossible-inline.rs similarity index 100% rename from src/test/ui/trivial-bounds/issue-73021-impossible-inline.rs rename to tests/ui/trivial-bounds/issue-73021-impossible-inline.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-associated-functions.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-associated-functions.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-associated-functions.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-associated-functions.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy-reborrow.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-copy.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-copy.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-sized.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-sized.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-sized.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-sized.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-sized.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-sized.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-sized.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-sized.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent-well-formed.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs b/tests/ui/trivial-bounds/trivial-bounds-inconsistent.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent.rs rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent.stderr b/tests/ui/trivial-bounds/trivial-bounds-inconsistent.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-inconsistent.stderr rename to tests/ui/trivial-bounds/trivial-bounds-inconsistent.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak-copy.rs b/tests/ui/trivial-bounds/trivial-bounds-leak-copy.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-leak-copy.rs rename to tests/ui/trivial-bounds/trivial-bounds-leak-copy.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak-copy.stderr b/tests/ui/trivial-bounds/trivial-bounds-leak-copy.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-leak-copy.stderr rename to tests/ui/trivial-bounds/trivial-bounds-leak-copy.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak.rs b/tests/ui/trivial-bounds/trivial-bounds-leak.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-leak.rs rename to tests/ui/trivial-bounds/trivial-bounds-leak.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak.stderr b/tests/ui/trivial-bounds/trivial-bounds-leak.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-leak.stderr rename to tests/ui/trivial-bounds/trivial-bounds-leak.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-lint.rs b/tests/ui/trivial-bounds/trivial-bounds-lint.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-lint.rs rename to tests/ui/trivial-bounds/trivial-bounds-lint.rs diff --git a/src/test/ui/trivial-bounds/trivial-bounds-lint.stderr b/tests/ui/trivial-bounds/trivial-bounds-lint.stderr similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-lint.stderr rename to tests/ui/trivial-bounds/trivial-bounds-lint.stderr diff --git a/src/test/ui/trivial-bounds/trivial-bounds-object.rs b/tests/ui/trivial-bounds/trivial-bounds-object.rs similarity index 100% rename from src/test/ui/trivial-bounds/trivial-bounds-object.rs rename to tests/ui/trivial-bounds/trivial-bounds-object.rs diff --git a/src/test/ui/trivial_casts-rpass.rs b/tests/ui/trivial_casts-rpass.rs similarity index 100% rename from src/test/ui/trivial_casts-rpass.rs rename to tests/ui/trivial_casts-rpass.rs diff --git a/src/test/ui/try-block/issue-45124.rs b/tests/ui/try-block/issue-45124.rs similarity index 100% rename from src/test/ui/try-block/issue-45124.rs rename to tests/ui/try-block/issue-45124.rs diff --git a/src/test/ui/try-block/try-block-bad-lifetime.rs b/tests/ui/try-block/try-block-bad-lifetime.rs similarity index 100% rename from src/test/ui/try-block/try-block-bad-lifetime.rs rename to tests/ui/try-block/try-block-bad-lifetime.rs diff --git a/src/test/ui/try-block/try-block-bad-lifetime.stderr b/tests/ui/try-block/try-block-bad-lifetime.stderr similarity index 100% rename from src/test/ui/try-block/try-block-bad-lifetime.stderr rename to tests/ui/try-block/try-block-bad-lifetime.stderr diff --git a/src/test/ui/try-block/try-block-bad-type.rs b/tests/ui/try-block/try-block-bad-type.rs similarity index 100% rename from src/test/ui/try-block/try-block-bad-type.rs rename to tests/ui/try-block/try-block-bad-type.rs diff --git a/src/test/ui/try-block/try-block-bad-type.stderr b/tests/ui/try-block/try-block-bad-type.stderr similarity index 100% rename from src/test/ui/try-block/try-block-bad-type.stderr rename to tests/ui/try-block/try-block-bad-type.stderr diff --git a/src/test/ui/try-block/try-block-catch.rs b/tests/ui/try-block/try-block-catch.rs similarity index 100% rename from src/test/ui/try-block/try-block-catch.rs rename to tests/ui/try-block/try-block-catch.rs diff --git a/src/test/ui/try-block/try-block-catch.stderr b/tests/ui/try-block/try-block-catch.stderr similarity index 100% rename from src/test/ui/try-block/try-block-catch.stderr rename to tests/ui/try-block/try-block-catch.stderr diff --git a/src/test/ui/try-block/try-block-in-edition2015.rs b/tests/ui/try-block/try-block-in-edition2015.rs similarity index 100% rename from src/test/ui/try-block/try-block-in-edition2015.rs rename to tests/ui/try-block/try-block-in-edition2015.rs diff --git a/src/test/ui/try-block/try-block-in-edition2015.stderr b/tests/ui/try-block/try-block-in-edition2015.stderr similarity index 100% rename from src/test/ui/try-block/try-block-in-edition2015.stderr rename to tests/ui/try-block/try-block-in-edition2015.stderr diff --git a/src/test/ui/try-block/try-block-in-match.rs b/tests/ui/try-block/try-block-in-match.rs similarity index 100% rename from src/test/ui/try-block/try-block-in-match.rs rename to tests/ui/try-block/try-block-in-match.rs diff --git a/src/test/ui/try-block/try-block-in-return.rs b/tests/ui/try-block/try-block-in-return.rs similarity index 100% rename from src/test/ui/try-block/try-block-in-return.rs rename to tests/ui/try-block/try-block-in-return.rs diff --git a/src/test/ui/try-block/try-block-in-while.rs b/tests/ui/try-block/try-block-in-while.rs similarity index 100% rename from src/test/ui/try-block/try-block-in-while.rs rename to tests/ui/try-block/try-block-in-while.rs diff --git a/src/test/ui/try-block/try-block-in-while.stderr b/tests/ui/try-block/try-block-in-while.stderr similarity index 100% rename from src/test/ui/try-block/try-block-in-while.stderr rename to tests/ui/try-block/try-block-in-while.stderr diff --git a/src/test/ui/try-block/try-block-maybe-bad-lifetime.rs b/tests/ui/try-block/try-block-maybe-bad-lifetime.rs similarity index 100% rename from src/test/ui/try-block/try-block-maybe-bad-lifetime.rs rename to tests/ui/try-block/try-block-maybe-bad-lifetime.rs diff --git a/src/test/ui/try-block/try-block-maybe-bad-lifetime.stderr b/tests/ui/try-block/try-block-maybe-bad-lifetime.stderr similarity index 100% rename from src/test/ui/try-block/try-block-maybe-bad-lifetime.stderr rename to tests/ui/try-block/try-block-maybe-bad-lifetime.stderr diff --git a/src/test/ui/try-block/try-block-opt-init.rs b/tests/ui/try-block/try-block-opt-init.rs similarity index 100% rename from src/test/ui/try-block/try-block-opt-init.rs rename to tests/ui/try-block/try-block-opt-init.rs diff --git a/src/test/ui/try-block/try-block-opt-init.stderr b/tests/ui/try-block/try-block-opt-init.stderr similarity index 100% rename from src/test/ui/try-block/try-block-opt-init.stderr rename to tests/ui/try-block/try-block-opt-init.stderr diff --git a/src/test/ui/try-block/try-block-type-error.rs b/tests/ui/try-block/try-block-type-error.rs similarity index 100% rename from src/test/ui/try-block/try-block-type-error.rs rename to tests/ui/try-block/try-block-type-error.rs diff --git a/src/test/ui/try-block/try-block-type-error.stderr b/tests/ui/try-block/try-block-type-error.stderr similarity index 100% rename from src/test/ui/try-block/try-block-type-error.stderr rename to tests/ui/try-block/try-block-type-error.stderr diff --git a/src/test/ui/try-block/try-block-unreachable-code-lint.rs b/tests/ui/try-block/try-block-unreachable-code-lint.rs similarity index 100% rename from src/test/ui/try-block/try-block-unreachable-code-lint.rs rename to tests/ui/try-block/try-block-unreachable-code-lint.rs diff --git a/src/test/ui/try-block/try-block-unreachable-code-lint.stderr b/tests/ui/try-block/try-block-unreachable-code-lint.stderr similarity index 100% rename from src/test/ui/try-block/try-block-unreachable-code-lint.stderr rename to tests/ui/try-block/try-block-unreachable-code-lint.stderr diff --git a/src/test/ui/try-block/try-block-unused-delims.fixed b/tests/ui/try-block/try-block-unused-delims.fixed similarity index 100% rename from src/test/ui/try-block/try-block-unused-delims.fixed rename to tests/ui/try-block/try-block-unused-delims.fixed diff --git a/src/test/ui/try-block/try-block-unused-delims.rs b/tests/ui/try-block/try-block-unused-delims.rs similarity index 100% rename from src/test/ui/try-block/try-block-unused-delims.rs rename to tests/ui/try-block/try-block-unused-delims.rs diff --git a/src/test/ui/try-block/try-block-unused-delims.stderr b/tests/ui/try-block/try-block-unused-delims.stderr similarity index 100% rename from src/test/ui/try-block/try-block-unused-delims.stderr rename to tests/ui/try-block/try-block-unused-delims.stderr diff --git a/src/test/ui/try-block/try-block.rs b/tests/ui/try-block/try-block.rs similarity index 100% rename from src/test/ui/try-block/try-block.rs rename to tests/ui/try-block/try-block.rs diff --git a/src/test/ui/try-block/try-is-identifier-edition2015.rs b/tests/ui/try-block/try-is-identifier-edition2015.rs similarity index 100% rename from src/test/ui/try-block/try-is-identifier-edition2015.rs rename to tests/ui/try-block/try-is-identifier-edition2015.rs diff --git a/src/test/ui/try-from-int-error-partial-eq.rs b/tests/ui/try-from-int-error-partial-eq.rs similarity index 100% rename from src/test/ui/try-from-int-error-partial-eq.rs rename to tests/ui/try-from-int-error-partial-eq.rs diff --git a/src/test/ui/try-operator-hygiene.rs b/tests/ui/try-operator-hygiene.rs similarity index 100% rename from src/test/ui/try-operator-hygiene.rs rename to tests/ui/try-operator-hygiene.rs diff --git a/src/test/ui/try-operator.rs b/tests/ui/try-operator.rs similarity index 100% rename from src/test/ui/try-operator.rs rename to tests/ui/try-operator.rs diff --git a/src/test/ui/try-trait/bad-interconversion.rs b/tests/ui/try-trait/bad-interconversion.rs similarity index 100% rename from src/test/ui/try-trait/bad-interconversion.rs rename to tests/ui/try-trait/bad-interconversion.rs diff --git a/src/test/ui/try-trait/bad-interconversion.stderr b/tests/ui/try-trait/bad-interconversion.stderr similarity index 100% rename from src/test/ui/try-trait/bad-interconversion.stderr rename to tests/ui/try-trait/bad-interconversion.stderr diff --git a/src/test/ui/try-trait/option-to-result.rs b/tests/ui/try-trait/option-to-result.rs similarity index 100% rename from src/test/ui/try-trait/option-to-result.rs rename to tests/ui/try-trait/option-to-result.rs diff --git a/src/test/ui/try-trait/option-to-result.stderr b/tests/ui/try-trait/option-to-result.stderr similarity index 100% rename from src/test/ui/try-trait/option-to-result.stderr rename to tests/ui/try-trait/option-to-result.stderr diff --git a/src/test/ui/try-trait/try-as-monad.rs b/tests/ui/try-trait/try-as-monad.rs similarity index 100% rename from src/test/ui/try-trait/try-as-monad.rs rename to tests/ui/try-trait/try-as-monad.rs diff --git a/src/test/ui/try-trait/try-on-option-diagnostics.rs b/tests/ui/try-trait/try-on-option-diagnostics.rs similarity index 100% rename from src/test/ui/try-trait/try-on-option-diagnostics.rs rename to tests/ui/try-trait/try-on-option-diagnostics.rs diff --git a/src/test/ui/try-trait/try-on-option-diagnostics.stderr b/tests/ui/try-trait/try-on-option-diagnostics.stderr similarity index 100% rename from src/test/ui/try-trait/try-on-option-diagnostics.stderr rename to tests/ui/try-trait/try-on-option-diagnostics.stderr diff --git a/src/test/ui/try-trait/try-on-option.rs b/tests/ui/try-trait/try-on-option.rs similarity index 100% rename from src/test/ui/try-trait/try-on-option.rs rename to tests/ui/try-trait/try-on-option.rs diff --git a/src/test/ui/try-trait/try-on-option.stderr b/tests/ui/try-trait/try-on-option.stderr similarity index 100% rename from src/test/ui/try-trait/try-on-option.stderr rename to tests/ui/try-trait/try-on-option.stderr diff --git a/src/test/ui/try-trait/try-operator-custom.rs b/tests/ui/try-trait/try-operator-custom.rs similarity index 100% rename from src/test/ui/try-trait/try-operator-custom.rs rename to tests/ui/try-trait/try-operator-custom.rs diff --git a/src/test/ui/try-trait/try-operator-on-main.rs b/tests/ui/try-trait/try-operator-on-main.rs similarity index 100% rename from src/test/ui/try-trait/try-operator-on-main.rs rename to tests/ui/try-trait/try-operator-on-main.rs diff --git a/src/test/ui/try-trait/try-operator-on-main.stderr b/tests/ui/try-trait/try-operator-on-main.stderr similarity index 100% rename from src/test/ui/try-trait/try-operator-on-main.stderr rename to tests/ui/try-trait/try-operator-on-main.stderr diff --git a/src/test/ui/try-trait/try-poll.rs b/tests/ui/try-trait/try-poll.rs similarity index 100% rename from src/test/ui/try-trait/try-poll.rs rename to tests/ui/try-trait/try-poll.rs diff --git a/src/test/ui/try-trait/yeet-for-option.rs b/tests/ui/try-trait/yeet-for-option.rs similarity index 100% rename from src/test/ui/try-trait/yeet-for-option.rs rename to tests/ui/try-trait/yeet-for-option.rs diff --git a/src/test/ui/try-trait/yeet-for-result.rs b/tests/ui/try-trait/yeet-for-result.rs similarity index 100% rename from src/test/ui/try-trait/yeet-for-result.rs rename to tests/ui/try-trait/yeet-for-result.rs diff --git a/src/test/ui/tuple-index.rs b/tests/ui/tuple-index.rs similarity index 100% rename from src/test/ui/tuple-index.rs rename to tests/ui/tuple-index.rs diff --git a/src/test/ui/tuple/add-tuple-within-arguments.rs b/tests/ui/tuple/add-tuple-within-arguments.rs similarity index 100% rename from src/test/ui/tuple/add-tuple-within-arguments.rs rename to tests/ui/tuple/add-tuple-within-arguments.rs diff --git a/src/test/ui/tuple/add-tuple-within-arguments.stderr b/tests/ui/tuple/add-tuple-within-arguments.stderr similarity index 100% rename from src/test/ui/tuple/add-tuple-within-arguments.stderr rename to tests/ui/tuple/add-tuple-within-arguments.stderr diff --git a/src/test/ui/tuple/array-diagnostics.rs b/tests/ui/tuple/array-diagnostics.rs similarity index 100% rename from src/test/ui/tuple/array-diagnostics.rs rename to tests/ui/tuple/array-diagnostics.rs diff --git a/src/test/ui/tuple/array-diagnostics.stderr b/tests/ui/tuple/array-diagnostics.stderr similarity index 100% rename from src/test/ui/tuple/array-diagnostics.stderr rename to tests/ui/tuple/array-diagnostics.stderr diff --git a/src/test/ui/tuple/builtin-fail.rs b/tests/ui/tuple/builtin-fail.rs similarity index 100% rename from src/test/ui/tuple/builtin-fail.rs rename to tests/ui/tuple/builtin-fail.rs diff --git a/src/test/ui/tuple/builtin-fail.stderr b/tests/ui/tuple/builtin-fail.stderr similarity index 100% rename from src/test/ui/tuple/builtin-fail.stderr rename to tests/ui/tuple/builtin-fail.stderr diff --git a/src/test/ui/tuple/builtin.rs b/tests/ui/tuple/builtin.rs similarity index 100% rename from src/test/ui/tuple/builtin.rs rename to tests/ui/tuple/builtin.rs diff --git a/src/test/ui/tuple/index-float.rs b/tests/ui/tuple/index-float.rs similarity index 100% rename from src/test/ui/tuple/index-float.rs rename to tests/ui/tuple/index-float.rs diff --git a/src/test/ui/tuple/index-invalid.rs b/tests/ui/tuple/index-invalid.rs similarity index 100% rename from src/test/ui/tuple/index-invalid.rs rename to tests/ui/tuple/index-invalid.rs diff --git a/src/test/ui/tuple/index-invalid.stderr b/tests/ui/tuple/index-invalid.stderr similarity index 100% rename from src/test/ui/tuple/index-invalid.stderr rename to tests/ui/tuple/index-invalid.stderr diff --git a/src/test/ui/tuple/indexing-in-macro.rs b/tests/ui/tuple/indexing-in-macro.rs similarity index 100% rename from src/test/ui/tuple/indexing-in-macro.rs rename to tests/ui/tuple/indexing-in-macro.rs diff --git a/src/test/ui/tuple/nested-index.rs b/tests/ui/tuple/nested-index.rs similarity index 100% rename from src/test/ui/tuple/nested-index.rs rename to tests/ui/tuple/nested-index.rs diff --git a/src/test/ui/tuple/one-tuple.rs b/tests/ui/tuple/one-tuple.rs similarity index 100% rename from src/test/ui/tuple/one-tuple.rs rename to tests/ui/tuple/one-tuple.rs diff --git a/src/test/ui/tuple/tup.rs b/tests/ui/tuple/tup.rs similarity index 100% rename from src/test/ui/tuple/tup.rs rename to tests/ui/tuple/tup.rs diff --git a/src/test/ui/tuple/tuple-arity-mismatch.rs b/tests/ui/tuple/tuple-arity-mismatch.rs similarity index 100% rename from src/test/ui/tuple/tuple-arity-mismatch.rs rename to tests/ui/tuple/tuple-arity-mismatch.rs diff --git a/src/test/ui/tuple/tuple-arity-mismatch.stderr b/tests/ui/tuple/tuple-arity-mismatch.stderr similarity index 100% rename from src/test/ui/tuple/tuple-arity-mismatch.stderr rename to tests/ui/tuple/tuple-arity-mismatch.stderr diff --git a/src/test/ui/tuple/tuple-index-fat-types.rs b/tests/ui/tuple/tuple-index-fat-types.rs similarity index 100% rename from src/test/ui/tuple/tuple-index-fat-types.rs rename to tests/ui/tuple/tuple-index-fat-types.rs diff --git a/src/test/ui/tuple/tuple-index-not-tuple.rs b/tests/ui/tuple/tuple-index-not-tuple.rs similarity index 100% rename from src/test/ui/tuple/tuple-index-not-tuple.rs rename to tests/ui/tuple/tuple-index-not-tuple.rs diff --git a/src/test/ui/tuple/tuple-index-not-tuple.stderr b/tests/ui/tuple/tuple-index-not-tuple.stderr similarity index 100% rename from src/test/ui/tuple/tuple-index-not-tuple.stderr rename to tests/ui/tuple/tuple-index-not-tuple.stderr diff --git a/src/test/ui/tuple/tuple-index-out-of-bounds.rs b/tests/ui/tuple/tuple-index-out-of-bounds.rs similarity index 100% rename from src/test/ui/tuple/tuple-index-out-of-bounds.rs rename to tests/ui/tuple/tuple-index-out-of-bounds.rs diff --git a/src/test/ui/tuple/tuple-index-out-of-bounds.stderr b/tests/ui/tuple/tuple-index-out-of-bounds.stderr similarity index 100% rename from src/test/ui/tuple/tuple-index-out-of-bounds.stderr rename to tests/ui/tuple/tuple-index-out-of-bounds.stderr diff --git a/src/test/ui/tuple/tuple-struct-fields/test.rs b/tests/ui/tuple/tuple-struct-fields/test.rs similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test.rs rename to tests/ui/tuple/tuple-struct-fields/test.rs diff --git a/src/test/ui/tuple/tuple-struct-fields/test.stderr b/tests/ui/tuple/tuple-struct-fields/test.stderr similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test.stderr rename to tests/ui/tuple/tuple-struct-fields/test.stderr diff --git a/src/test/ui/tuple/tuple-struct-fields/test2.rs b/tests/ui/tuple/tuple-struct-fields/test2.rs similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test2.rs rename to tests/ui/tuple/tuple-struct-fields/test2.rs diff --git a/src/test/ui/tuple/tuple-struct-fields/test2.stderr b/tests/ui/tuple/tuple-struct-fields/test2.stderr similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test2.stderr rename to tests/ui/tuple/tuple-struct-fields/test2.stderr diff --git a/src/test/ui/tuple/tuple-struct-fields/test3.rs b/tests/ui/tuple/tuple-struct-fields/test3.rs similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test3.rs rename to tests/ui/tuple/tuple-struct-fields/test3.rs diff --git a/src/test/ui/tuple/tuple-struct-fields/test3.stderr b/tests/ui/tuple/tuple-struct-fields/test3.stderr similarity index 100% rename from src/test/ui/tuple/tuple-struct-fields/test3.stderr rename to tests/ui/tuple/tuple-struct-fields/test3.stderr diff --git a/src/test/ui/tuple/wrong_argument_ice-2.rs b/tests/ui/tuple/wrong_argument_ice-2.rs similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-2.rs rename to tests/ui/tuple/wrong_argument_ice-2.rs diff --git a/src/test/ui/tuple/wrong_argument_ice-2.stderr b/tests/ui/tuple/wrong_argument_ice-2.stderr similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-2.stderr rename to tests/ui/tuple/wrong_argument_ice-2.stderr diff --git a/src/test/ui/tuple/wrong_argument_ice-3.rs b/tests/ui/tuple/wrong_argument_ice-3.rs similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-3.rs rename to tests/ui/tuple/wrong_argument_ice-3.rs diff --git a/src/test/ui/tuple/wrong_argument_ice-3.stderr b/tests/ui/tuple/wrong_argument_ice-3.stderr similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-3.stderr rename to tests/ui/tuple/wrong_argument_ice-3.stderr diff --git a/src/test/ui/tuple/wrong_argument_ice-4.rs b/tests/ui/tuple/wrong_argument_ice-4.rs similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-4.rs rename to tests/ui/tuple/wrong_argument_ice-4.rs diff --git a/src/test/ui/tuple/wrong_argument_ice-4.stderr b/tests/ui/tuple/wrong_argument_ice-4.stderr similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice-4.stderr rename to tests/ui/tuple/wrong_argument_ice-4.stderr diff --git a/src/test/ui/tuple/wrong_argument_ice.rs b/tests/ui/tuple/wrong_argument_ice.rs similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice.rs rename to tests/ui/tuple/wrong_argument_ice.rs diff --git a/src/test/ui/tuple/wrong_argument_ice.stderr b/tests/ui/tuple/wrong_argument_ice.stderr similarity index 100% rename from src/test/ui/tuple/wrong_argument_ice.stderr rename to tests/ui/tuple/wrong_argument_ice.stderr diff --git a/src/test/ui/tydesc-name.rs b/tests/ui/tydesc-name.rs similarity index 100% rename from src/test/ui/tydesc-name.rs rename to tests/ui/tydesc-name.rs diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-generic-args-pass.rs b/tests/ui/type-alias-enum-variants/enum-variant-generic-args-pass.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-generic-args-pass.rs rename to tests/ui/type-alias-enum-variants/enum-variant-generic-args-pass.rs diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-generic-args.rs b/tests/ui/type-alias-enum-variants/enum-variant-generic-args.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-generic-args.rs rename to tests/ui/type-alias-enum-variants/enum-variant-generic-args.rs diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-generic-args.stderr b/tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-generic-args.stderr rename to tests/ui/type-alias-enum-variants/enum-variant-generic-args.stderr diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs b/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs rename to tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr b/tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr rename to tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.stderr diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.rs b/tests/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.rs rename to tests/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.rs diff --git a/src/test/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.stderr b/tests/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.stderr rename to tests/ui/type-alias-enum-variants/enum-variant-priority-lint-ambiguous_associated_items.stderr diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.rs b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.rs rename to tests/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.rs diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.stderr b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.stderr rename to tests/ui/type-alias-enum-variants/incorrect-variant-form-through-Self-issue-58006.stderr diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs rename to tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr b/tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr rename to tests/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr diff --git a/src/test/ui/type-alias-enum-variants/issue-57866.rs b/tests/ui/type-alias-enum-variants/issue-57866.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/issue-57866.rs rename to tests/ui/type-alias-enum-variants/issue-57866.rs diff --git a/src/test/ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs b/tests/ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs rename to tests/ui/type-alias-enum-variants/issue-61801-path-pattern-can-infer.rs diff --git a/src/test/ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs b/tests/ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs rename to tests/ui/type-alias-enum-variants/issue-63151-dead-code-lint-fields-in-patterns.rs diff --git a/src/test/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.rs b/tests/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.rs rename to tests/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.rs diff --git a/src/test/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.stderr b/tests/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.stderr rename to tests/ui/type-alias-enum-variants/no-type-application-on-aliased-enum-variant.stderr diff --git a/src/test/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.rs b/tests/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.rs rename to tests/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.rs diff --git a/src/test/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.stderr b/tests/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.stderr rename to tests/ui/type-alias-enum-variants/resolve-to-enum-variant-in-type-namespace-and-error.stderr diff --git a/src/test/ui/type-alias-enum-variants/self-in-enum-definition.rs b/tests/ui/type-alias-enum-variants/self-in-enum-definition.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/self-in-enum-definition.rs rename to tests/ui/type-alias-enum-variants/self-in-enum-definition.rs diff --git a/src/test/ui/type-alias-enum-variants/self-in-enum-definition.stderr b/tests/ui/type-alias-enum-variants/self-in-enum-definition.stderr similarity index 100% rename from src/test/ui/type-alias-enum-variants/self-in-enum-definition.stderr rename to tests/ui/type-alias-enum-variants/self-in-enum-definition.stderr diff --git a/src/test/ui/type-alias-enum-variants/type-alias-enum-variants-pass.rs b/tests/ui/type-alias-enum-variants/type-alias-enum-variants-pass.rs similarity index 100% rename from src/test/ui/type-alias-enum-variants/type-alias-enum-variants-pass.rs rename to tests/ui/type-alias-enum-variants/type-alias-enum-variants-pass.rs diff --git a/src/test/ui/type-alias-impl-trait/argument-types.rs b/tests/ui/type-alias-impl-trait/argument-types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/argument-types.rs rename to tests/ui/type-alias-impl-trait/argument-types.rs diff --git a/src/test/ui/type-alias-impl-trait/assoc-projection-ice.rs b/tests/ui/type-alias-impl-trait/assoc-projection-ice.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/assoc-projection-ice.rs rename to tests/ui/type-alias-impl-trait/assoc-projection-ice.rs diff --git a/src/test/ui/type-alias-impl-trait/assoc-type-const.rs b/tests/ui/type-alias-impl-trait/assoc-type-const.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/assoc-type-const.rs rename to tests/ui/type-alias-impl-trait/assoc-type-const.rs diff --git a/src/test/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.rs b/tests/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.rs rename to tests/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.rs diff --git a/src/test/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.stderr b/tests/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.stderr rename to tests/ui/type-alias-impl-trait/assoc-type-lifetime-unconstrained.stderr diff --git a/src/test/ui/type-alias-impl-trait/assoc-type-lifetime.rs b/tests/ui/type-alias-impl-trait/assoc-type-lifetime.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/assoc-type-lifetime.rs rename to tests/ui/type-alias-impl-trait/assoc-type-lifetime.rs diff --git a/src/test/ui/type-alias-impl-trait/associated-type-alias-impl-trait.rs b/tests/ui/type-alias-impl-trait/associated-type-alias-impl-trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/associated-type-alias-impl-trait.rs rename to tests/ui/type-alias-impl-trait/associated-type-alias-impl-trait.rs diff --git a/src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs b/tests/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs rename to tests/ui/type-alias-impl-trait/associated-type-impl-trait-lifetime.rs diff --git a/src/test/ui/type-alias-impl-trait/auto-trait-leakage.rs b/tests/ui/type-alias-impl-trait/auto-trait-leakage.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auto-trait-leakage.rs rename to tests/ui/type-alias-impl-trait/auto-trait-leakage.rs diff --git a/src/test/ui/type-alias-impl-trait/auto-trait-leakage2.rs b/tests/ui/type-alias-impl-trait/auto-trait-leakage2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auto-trait-leakage2.rs rename to tests/ui/type-alias-impl-trait/auto-trait-leakage2.rs diff --git a/src/test/ui/type-alias-impl-trait/auto-trait-leakage2.stderr b/tests/ui/type-alias-impl-trait/auto-trait-leakage2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/auto-trait-leakage2.stderr rename to tests/ui/type-alias-impl-trait/auto-trait-leakage2.stderr diff --git a/src/test/ui/type-alias-impl-trait/auto-trait-leakage3.rs b/tests/ui/type-alias-impl-trait/auto-trait-leakage3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auto-trait-leakage3.rs rename to tests/ui/type-alias-impl-trait/auto-trait-leakage3.rs diff --git a/src/test/ui/type-alias-impl-trait/auto-trait-leakage3.stderr b/tests/ui/type-alias-impl-trait/auto-trait-leakage3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/auto-trait-leakage3.stderr rename to tests/ui/type-alias-impl-trait/auto-trait-leakage3.stderr diff --git a/src/test/ui/type-alias-impl-trait/auxiliary/coherence_cross_crate_trait_decl.rs b/tests/ui/type-alias-impl-trait/auxiliary/coherence_cross_crate_trait_decl.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auxiliary/coherence_cross_crate_trait_decl.rs rename to tests/ui/type-alias-impl-trait/auxiliary/coherence_cross_crate_trait_decl.rs diff --git a/src/test/ui/type-alias-impl-trait/auxiliary/collect_hidden_types.rs b/tests/ui/type-alias-impl-trait/auxiliary/collect_hidden_types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auxiliary/collect_hidden_types.rs rename to tests/ui/type-alias-impl-trait/auxiliary/collect_hidden_types.rs diff --git a/src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs b/tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs rename to tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs diff --git a/src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs b/tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs rename to tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs diff --git a/src/test/ui/type-alias-impl-trait/auxiliary/foreign-crate.rs b/tests/ui/type-alias-impl-trait/auxiliary/foreign-crate.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/auxiliary/foreign-crate.rs rename to tests/ui/type-alias-impl-trait/auxiliary/foreign-crate.rs diff --git a/src/test/ui/type-alias-impl-trait/bound_reduction.rs b/tests/ui/type-alias-impl-trait/bound_reduction.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/bound_reduction.rs rename to tests/ui/type-alias-impl-trait/bound_reduction.rs diff --git a/src/test/ui/type-alias-impl-trait/bound_reduction2.rs b/tests/ui/type-alias-impl-trait/bound_reduction2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/bound_reduction2.rs rename to tests/ui/type-alias-impl-trait/bound_reduction2.rs diff --git a/src/test/ui/type-alias-impl-trait/bound_reduction2.stderr b/tests/ui/type-alias-impl-trait/bound_reduction2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/bound_reduction2.stderr rename to tests/ui/type-alias-impl-trait/bound_reduction2.stderr diff --git a/src/test/ui/type-alias-impl-trait/bounds-are-checked-2.rs b/tests/ui/type-alias-impl-trait/bounds-are-checked-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/bounds-are-checked-2.rs rename to tests/ui/type-alias-impl-trait/bounds-are-checked-2.rs diff --git a/src/test/ui/type-alias-impl-trait/bounds-are-checked-2.stderr b/tests/ui/type-alias-impl-trait/bounds-are-checked-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/bounds-are-checked-2.stderr rename to tests/ui/type-alias-impl-trait/bounds-are-checked-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/bounds-are-checked.rs b/tests/ui/type-alias-impl-trait/bounds-are-checked.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/bounds-are-checked.rs rename to tests/ui/type-alias-impl-trait/bounds-are-checked.rs diff --git a/src/test/ui/type-alias-impl-trait/bounds-are-checked.stderr b/tests/ui/type-alias-impl-trait/bounds-are-checked.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/bounds-are-checked.stderr rename to tests/ui/type-alias-impl-trait/bounds-are-checked.stderr diff --git a/src/test/ui/type-alias-impl-trait/closure_args.rs b/tests/ui/type-alias-impl-trait/closure_args.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/closure_args.rs rename to tests/ui/type-alias-impl-trait/closure_args.rs diff --git a/src/test/ui/type-alias-impl-trait/closure_args2.rs b/tests/ui/type-alias-impl-trait/closure_args2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/closure_args2.rs rename to tests/ui/type-alias-impl-trait/closure_args2.rs diff --git a/src/test/ui/type-alias-impl-trait/closure_parent_substs.rs b/tests/ui/type-alias-impl-trait/closure_parent_substs.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/closure_parent_substs.rs rename to tests/ui/type-alias-impl-trait/closure_parent_substs.rs diff --git a/src/test/ui/type-alias-impl-trait/closure_wf_outlives.rs b/tests/ui/type-alias-impl-trait/closure_wf_outlives.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/closure_wf_outlives.rs rename to tests/ui/type-alias-impl-trait/closure_wf_outlives.rs diff --git a/src/test/ui/type-alias-impl-trait/closure_wf_outlives.stderr b/tests/ui/type-alias-impl-trait/closure_wf_outlives.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/closure_wf_outlives.stderr rename to tests/ui/type-alias-impl-trait/closure_wf_outlives.stderr diff --git a/src/test/ui/type-alias-impl-trait/closures_in_branches.rs b/tests/ui/type-alias-impl-trait/closures_in_branches.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/closures_in_branches.rs rename to tests/ui/type-alias-impl-trait/closures_in_branches.rs diff --git a/src/test/ui/type-alias-impl-trait/closures_in_branches.stderr b/tests/ui/type-alias-impl-trait/closures_in_branches.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/closures_in_branches.stderr rename to tests/ui/type-alias-impl-trait/closures_in_branches.stderr diff --git a/src/test/ui/type-alias-impl-trait/coherence.rs b/tests/ui/type-alias-impl-trait/coherence.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/coherence.rs rename to tests/ui/type-alias-impl-trait/coherence.rs diff --git a/src/test/ui/type-alias-impl-trait/coherence.stderr b/tests/ui/type-alias-impl-trait/coherence.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/coherence.stderr rename to tests/ui/type-alias-impl-trait/coherence.stderr diff --git a/src/test/ui/type-alias-impl-trait/coherence_cross_crate.rs b/tests/ui/type-alias-impl-trait/coherence_cross_crate.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/coherence_cross_crate.rs rename to tests/ui/type-alias-impl-trait/coherence_cross_crate.rs diff --git a/src/test/ui/type-alias-impl-trait/coherence_cross_crate.stderr b/tests/ui/type-alias-impl-trait/coherence_cross_crate.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/coherence_cross_crate.stderr rename to tests/ui/type-alias-impl-trait/coherence_cross_crate.stderr diff --git a/src/test/ui/type-alias-impl-trait/coherence_generalization.rs b/tests/ui/type-alias-impl-trait/coherence_generalization.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/coherence_generalization.rs rename to tests/ui/type-alias-impl-trait/coherence_generalization.rs diff --git a/src/test/ui/type-alias-impl-trait/collect_hidden_types.rs b/tests/ui/type-alias-impl-trait/collect_hidden_types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/collect_hidden_types.rs rename to tests/ui/type-alias-impl-trait/collect_hidden_types.rs diff --git a/src/test/ui/type-alias-impl-trait/constrain_inputs.rs b/tests/ui/type-alias-impl-trait/constrain_inputs.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/constrain_inputs.rs rename to tests/ui/type-alias-impl-trait/constrain_inputs.rs diff --git a/src/test/ui/type-alias-impl-trait/constrain_inputs.stderr b/tests/ui/type-alias-impl-trait/constrain_inputs.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/constrain_inputs.stderr rename to tests/ui/type-alias-impl-trait/constrain_inputs.stderr diff --git a/src/test/ui/type-alias-impl-trait/constrain_inputs_unsound.rs b/tests/ui/type-alias-impl-trait/constrain_inputs_unsound.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/constrain_inputs_unsound.rs rename to tests/ui/type-alias-impl-trait/constrain_inputs_unsound.rs diff --git a/src/test/ui/type-alias-impl-trait/constrain_inputs_unsound.stderr b/tests/ui/type-alias-impl-trait/constrain_inputs_unsound.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/constrain_inputs_unsound.stderr rename to tests/ui/type-alias-impl-trait/constrain_inputs_unsound.stderr diff --git a/src/test/ui/type-alias-impl-trait/cross_crate_ice.rs b/tests/ui/type-alias-impl-trait/cross_crate_ice.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_crate_ice.rs rename to tests/ui/type-alias-impl-trait/cross_crate_ice.rs diff --git a/src/test/ui/type-alias-impl-trait/cross_crate_ice2.rs b/tests/ui/type-alias-impl-trait/cross_crate_ice2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_crate_ice2.rs rename to tests/ui/type-alias-impl-trait/cross_crate_ice2.rs diff --git a/src/test/ui/type-alias-impl-trait/cross_inference.rs b/tests/ui/type-alias-impl-trait/cross_inference.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_inference.rs rename to tests/ui/type-alias-impl-trait/cross_inference.rs diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs b/tests/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs rename to tests/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs b/tests/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs rename to tests/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_rpit.rs b/tests/ui/type-alias-impl-trait/cross_inference_rpit.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/cross_inference_rpit.rs rename to tests/ui/type-alias-impl-trait/cross_inference_rpit.rs diff --git a/src/test/ui/type-alias-impl-trait/declared_but_never_defined.rs b/tests/ui/type-alias-impl-trait/declared_but_never_defined.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/declared_but_never_defined.rs rename to tests/ui/type-alias-impl-trait/declared_but_never_defined.rs diff --git a/src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr b/tests/ui/type-alias-impl-trait/declared_but_never_defined.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/declared_but_never_defined.stderr rename to tests/ui/type-alias-impl-trait/declared_but_never_defined.stderr diff --git a/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.rs b/tests/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.rs rename to tests/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.rs diff --git a/src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr b/tests/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr rename to tests/ui/type-alias-impl-trait/declared_but_not_defined_in_scope.stderr diff --git a/src/test/ui/type-alias-impl-trait/defining-use-submodule.rs b/tests/ui/type-alias-impl-trait/defining-use-submodule.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/defining-use-submodule.rs rename to tests/ui/type-alias-impl-trait/defining-use-submodule.rs diff --git a/src/test/ui/type-alias-impl-trait/destructuring.rs b/tests/ui/type-alias-impl-trait/destructuring.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/destructuring.rs rename to tests/ui/type-alias-impl-trait/destructuring.rs diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses.rs b/tests/ui/type-alias-impl-trait/different_defining_uses.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses.rs rename to tests/ui/type-alias-impl-trait/different_defining_uses.rs diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses.stderr b/tests/ui/type-alias-impl-trait/different_defining_uses.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses.stderr rename to tests/ui/type-alias-impl-trait/different_defining_uses.stderr diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses_never_type.rs b/tests/ui/type-alias-impl-trait/different_defining_uses_never_type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses_never_type.rs rename to tests/ui/type-alias-impl-trait/different_defining_uses_never_type.rs diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses_never_type.stderr b/tests/ui/type-alias-impl-trait/different_defining_uses_never_type.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses_never_type.stderr rename to tests/ui/type-alias-impl-trait/different_defining_uses_never_type.stderr diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses_never_type2.rs b/tests/ui/type-alias-impl-trait/different_defining_uses_never_type2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses_never_type2.rs rename to tests/ui/type-alias-impl-trait/different_defining_uses_never_type2.rs diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses_never_type3.rs b/tests/ui/type-alias-impl-trait/different_defining_uses_never_type3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses_never_type3.rs rename to tests/ui/type-alias-impl-trait/different_defining_uses_never_type3.rs diff --git a/src/test/ui/type-alias-impl-trait/different_defining_uses_never_type3.stderr b/tests/ui/type-alias-impl-trait/different_defining_uses_never_type3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_defining_uses_never_type3.stderr rename to tests/ui/type-alias-impl-trait/different_defining_uses_never_type3.stderr diff --git a/src/test/ui/type-alias-impl-trait/different_lifetimes_defining_uses.rs b/tests/ui/type-alias-impl-trait/different_lifetimes_defining_uses.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_lifetimes_defining_uses.rs rename to tests/ui/type-alias-impl-trait/different_lifetimes_defining_uses.rs diff --git a/src/test/ui/type-alias-impl-trait/different_lifetimes_defining_uses.stderr b/tests/ui/type-alias-impl-trait/different_lifetimes_defining_uses.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/different_lifetimes_defining_uses.stderr rename to tests/ui/type-alias-impl-trait/different_lifetimes_defining_uses.stderr diff --git a/src/test/ui/type-alias-impl-trait/fallback.rs b/tests/ui/type-alias-impl-trait/fallback.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/fallback.rs rename to tests/ui/type-alias-impl-trait/fallback.rs diff --git a/src/test/ui/type-alias-impl-trait/fallback.stderr b/tests/ui/type-alias-impl-trait/fallback.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/fallback.stderr rename to tests/ui/type-alias-impl-trait/fallback.stderr diff --git a/src/test/ui/type-alias-impl-trait/field-types.rs b/tests/ui/type-alias-impl-trait/field-types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/field-types.rs rename to tests/ui/type-alias-impl-trait/field-types.rs diff --git a/src/test/ui/type-alias-impl-trait/future.rs b/tests/ui/type-alias-impl-trait/future.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/future.rs rename to tests/ui/type-alias-impl-trait/future.rs diff --git a/src/test/ui/type-alias-impl-trait/future.stderr b/tests/ui/type-alias-impl-trait/future.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/future.stderr rename to tests/ui/type-alias-impl-trait/future.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_different_defining_uses.rs b/tests/ui/type-alias-impl-trait/generic_different_defining_uses.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_different_defining_uses.rs rename to tests/ui/type-alias-impl-trait/generic_different_defining_uses.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_different_defining_uses.stderr b/tests/ui/type-alias-impl-trait/generic_different_defining_uses.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_different_defining_uses.stderr rename to tests/ui/type-alias-impl-trait/generic_different_defining_uses.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use10.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use10.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use10.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use10.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use2.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use2.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use2.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use2.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use2.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use2.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use3.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use3.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use3.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use3.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use3.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use3.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use4.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use4.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use4.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use4.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use4.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use4.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use4.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use4.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use5.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use5.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use5.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use5.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use5.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use5.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use5.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use5.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use6.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use6.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use6.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use6.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use6.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use6.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use6.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use6.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use7.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use7.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use7.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use7.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use8.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use8.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use8.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use8.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use8.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use8.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use8.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use8.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use9.rs b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use9.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use9.rs rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use9.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_param_use9.stderr b/tests/ui/type-alias-impl-trait/generic_duplicate_param_use9.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_duplicate_param_use9.stderr rename to tests/ui/type-alias-impl-trait/generic_duplicate_param_use9.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_lifetime_param.rs b/tests/ui/type-alias-impl-trait/generic_lifetime_param.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_lifetime_param.rs rename to tests/ui/type-alias-impl-trait/generic_lifetime_param.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_nondefining_use.rs b/tests/ui/type-alias-impl-trait/generic_nondefining_use.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_nondefining_use.rs rename to tests/ui/type-alias-impl-trait/generic_nondefining_use.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_nondefining_use.stderr b/tests/ui/type-alias-impl-trait/generic_nondefining_use.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_nondefining_use.stderr rename to tests/ui/type-alias-impl-trait/generic_nondefining_use.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_not_used.rs b/tests/ui/type-alias-impl-trait/generic_not_used.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_not_used.rs rename to tests/ui/type-alias-impl-trait/generic_not_used.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_not_used.stderr b/tests/ui/type-alias-impl-trait/generic_not_used.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_not_used.stderr rename to tests/ui/type-alias-impl-trait/generic_not_used.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.rs b/tests/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.rs rename to tests/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr b/tests/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr rename to tests/ui/type-alias-impl-trait/generic_type_does_not_live_long_enough.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained.rs b/tests/ui/type-alias-impl-trait/generic_underconstrained.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_underconstrained.rs rename to tests/ui/type-alias-impl-trait/generic_underconstrained.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr b/tests/ui/type-alias-impl-trait/generic_underconstrained.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_underconstrained.stderr rename to tests/ui/type-alias-impl-trait/generic_underconstrained.stderr diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained2.rs b/tests/ui/type-alias-impl-trait/generic_underconstrained2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_underconstrained2.rs rename to tests/ui/type-alias-impl-trait/generic_underconstrained2.rs diff --git a/src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr b/tests/ui/type-alias-impl-trait/generic_underconstrained2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/generic_underconstrained2.stderr rename to tests/ui/type-alias-impl-trait/generic_underconstrained2.stderr diff --git a/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs b/tests/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs rename to tests/ui/type-alias-impl-trait/impl-with-unconstrained-param.rs diff --git a/src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr b/tests/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr rename to tests/ui/type-alias-impl-trait/impl-with-unconstrained-param.stderr diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_generic_tait.rs b/tests/ui/type-alias-impl-trait/impl_trait_for_generic_tait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_generic_tait.rs rename to tests/ui/type-alias-impl-trait/impl_trait_for_generic_tait.rs diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_same_tait.rs b/tests/ui/type-alias-impl-trait/impl_trait_for_same_tait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_same_tait.rs rename to tests/ui/type-alias-impl-trait/impl_trait_for_same_tait.rs diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_same_tait.stderr b/tests/ui/type-alias-impl-trait/impl_trait_for_same_tait.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_same_tait.stderr rename to tests/ui/type-alias-impl-trait/impl_trait_for_same_tait.stderr diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_tait.rs b/tests/ui/type-alias-impl-trait/impl_trait_for_tait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_tait.rs rename to tests/ui/type-alias-impl-trait/impl_trait_for_tait.rs diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound.rs b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound.rs rename to tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.rs diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr rename to tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.rs b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.rs rename to tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.rs diff --git a/src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr rename to tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds.rs b/tests/ui/type-alias-impl-trait/implied_bounds.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds.rs rename to tests/ui/type-alias-impl-trait/implied_bounds.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds.stderr b/tests/ui/type-alias-impl-trait/implied_bounds.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds.stderr rename to tests/ui/type-alias-impl-trait/implied_bounds.stderr diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds2.rs b/tests/ui/type-alias-impl-trait/implied_bounds2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds2.rs rename to tests/ui/type-alias-impl-trait/implied_bounds2.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds3.rs b/tests/ui/type-alias-impl-trait/implied_bounds3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds3.rs rename to tests/ui/type-alias-impl-trait/implied_bounds3.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds_closure.rs b/tests/ui/type-alias-impl-trait/implied_bounds_closure.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds_closure.rs rename to tests/ui/type-alias-impl-trait/implied_bounds_closure.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds_closure.stderr b/tests/ui/type-alias-impl-trait/implied_bounds_closure.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds_closure.stderr rename to tests/ui/type-alias-impl-trait/implied_bounds_closure.stderr diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds_from_types.rs b/tests/ui/type-alias-impl-trait/implied_bounds_from_types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds_from_types.rs rename to tests/ui/type-alias-impl-trait/implied_bounds_from_types.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_bounds_from_types.stderr b/tests/ui/type-alias-impl-trait/implied_bounds_from_types.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_bounds_from_types.stderr rename to tests/ui/type-alias-impl-trait/implied_bounds_from_types.stderr diff --git a/src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check.rs b/tests/ui/type-alias-impl-trait/implied_lifetime_wf_check.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check.rs rename to tests/ui/type-alias-impl-trait/implied_lifetime_wf_check.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check3.rs b/tests/ui/type-alias-impl-trait/implied_lifetime_wf_check3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check3.rs rename to tests/ui/type-alias-impl-trait/implied_lifetime_wf_check3.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check3.stderr b/tests/ui/type-alias-impl-trait/implied_lifetime_wf_check3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check3.stderr rename to tests/ui/type-alias-impl-trait/implied_lifetime_wf_check3.stderr diff --git a/src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.rs b/tests/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.rs rename to tests/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.rs diff --git a/src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.stderr b/tests/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.stderr rename to tests/ui/type-alias-impl-trait/implied_lifetime_wf_check4_static.stderr diff --git a/src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds.rs b/tests/ui/type-alias-impl-trait/imply_bounds_from_bounds.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds.rs rename to tests/ui/type-alias-impl-trait/imply_bounds_from_bounds.rs diff --git a/src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.rs b/tests/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.rs rename to tests/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.rs diff --git a/src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.stderr b/tests/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.stderr rename to tests/ui/type-alias-impl-trait/imply_bounds_from_bounds_param.stderr diff --git a/src/test/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.rs b/tests/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.rs rename to tests/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.rs diff --git a/src/test/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.stderr b/tests/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.stderr rename to tests/ui/type-alias-impl-trait/incoherent-assoc-imp-trait.stderr diff --git a/src/test/ui/type-alias-impl-trait/incomplete-inference.rs b/tests/ui/type-alias-impl-trait/incomplete-inference.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/incomplete-inference.rs rename to tests/ui/type-alias-impl-trait/incomplete-inference.rs diff --git a/src/test/ui/type-alias-impl-trait/incomplete-inference.stderr b/tests/ui/type-alias-impl-trait/incomplete-inference.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/incomplete-inference.stderr rename to tests/ui/type-alias-impl-trait/incomplete-inference.stderr diff --git a/src/test/ui/type-alias-impl-trait/inference-cycle.rs b/tests/ui/type-alias-impl-trait/inference-cycle.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/inference-cycle.rs rename to tests/ui/type-alias-impl-trait/inference-cycle.rs diff --git a/src/test/ui/type-alias-impl-trait/inference-cycle.stderr b/tests/ui/type-alias-impl-trait/inference-cycle.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/inference-cycle.stderr rename to tests/ui/type-alias-impl-trait/inference-cycle.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-101750.rs b/tests/ui/type-alias-impl-trait/issue-101750.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-101750.rs rename to tests/ui/type-alias-impl-trait/issue-101750.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs b/tests/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs rename to tests/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.stderr b/tests/ui/type-alias-impl-trait/issue-52843-closure-constrain.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.stderr rename to tests/ui/type-alias-impl-trait/issue-52843-closure-constrain.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-52843.rs b/tests/ui/type-alias-impl-trait/issue-52843.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-52843.rs rename to tests/ui/type-alias-impl-trait/issue-52843.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-52843.stderr b/tests/ui/type-alias-impl-trait/issue-52843.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-52843.stderr rename to tests/ui/type-alias-impl-trait/issue-52843.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53092-2.rs b/tests/ui/type-alias-impl-trait/issue-53092-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53092-2.rs rename to tests/ui/type-alias-impl-trait/issue-53092-2.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53092-2.stderr b/tests/ui/type-alias-impl-trait/issue-53092-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53092-2.stderr rename to tests/ui/type-alias-impl-trait/issue-53092-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53092.rs b/tests/ui/type-alias-impl-trait/issue-53092.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53092.rs rename to tests/ui/type-alias-impl-trait/issue-53092.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53092.stderr b/tests/ui/type-alias-impl-trait/issue-53092.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53092.stderr rename to tests/ui/type-alias-impl-trait/issue-53092.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.rs b/tests/ui/type-alias-impl-trait/issue-53096.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53096.rs rename to tests/ui/type-alias-impl-trait/issue-53096.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.stderr b/tests/ui/type-alias-impl-trait/issue-53096.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53096.stderr rename to tests/ui/type-alias-impl-trait/issue-53096.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53398-cyclic-types.rs b/tests/ui/type-alias-impl-trait/issue-53398-cyclic-types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53398-cyclic-types.rs rename to tests/ui/type-alias-impl-trait/issue-53398-cyclic-types.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53398-cyclic-types.stderr b/tests/ui/type-alias-impl-trait/issue-53398-cyclic-types.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53398-cyclic-types.stderr rename to tests/ui/type-alias-impl-trait/issue-53398-cyclic-types.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.rs b/tests/ui/type-alias-impl-trait/issue-53598.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53598.rs rename to tests/ui/type-alias-impl-trait/issue-53598.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.stderr b/tests/ui/type-alias-impl-trait/issue-53598.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53598.stderr rename to tests/ui/type-alias-impl-trait/issue-53598.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs b/tests/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs rename to tests/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.stderr b/tests/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.stderr rename to tests/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs b/tests/ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs rename to tests/ui/type-alias-impl-trait/issue-55099-lifetime-inference.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs b/tests/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs rename to tests/ui/type-alias-impl-trait/issue-57188-associate-impl-capture.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.rs b/tests/ui/type-alias-impl-trait/issue-57611-trait-alias.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57611-trait-alias.rs rename to tests/ui/type-alias-impl-trait/issue-57611-trait-alias.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.rs b/tests/ui/type-alias-impl-trait/issue-57700.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57700.rs rename to tests/ui/type-alias-impl-trait/issue-57700.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.stderr b/tests/ui/type-alias-impl-trait/issue-57700.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57700.stderr rename to tests/ui/type-alias-impl-trait/issue-57700.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-57807-associated-type.rs b/tests/ui/type-alias-impl-trait/issue-57807-associated-type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57807-associated-type.rs rename to tests/ui/type-alias-impl-trait/issue-57807-associated-type.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57961.rs b/tests/ui/type-alias-impl-trait/issue-57961.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57961.rs rename to tests/ui/type-alias-impl-trait/issue-57961.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-57961.stderr b/tests/ui/type-alias-impl-trait/issue-57961.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-57961.stderr rename to tests/ui/type-alias-impl-trait/issue-57961.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-58662-generator-with-lifetime.rs b/tests/ui/type-alias-impl-trait/issue-58662-generator-with-lifetime.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-58662-generator-with-lifetime.rs rename to tests/ui/type-alias-impl-trait/issue-58662-generator-with-lifetime.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-58662-simplified.rs b/tests/ui/type-alias-impl-trait/issue-58662-simplified.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-58662-simplified.rs rename to tests/ui/type-alias-impl-trait/issue-58662-simplified.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-58887.rs b/tests/ui/type-alias-impl-trait/issue-58887.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-58887.rs rename to tests/ui/type-alias-impl-trait/issue-58887.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-58951-2.rs b/tests/ui/type-alias-impl-trait/issue-58951-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-58951-2.rs rename to tests/ui/type-alias-impl-trait/issue-58951-2.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-58951.rs b/tests/ui/type-alias-impl-trait/issue-58951.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-58951.rs rename to tests/ui/type-alias-impl-trait/issue-58951.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.rs b/tests/ui/type-alias-impl-trait/issue-60371.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60371.rs rename to tests/ui/type-alias-impl-trait/issue-60371.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.stderr b/tests/ui/type-alias-impl-trait/issue-60371.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60371.stderr rename to tests/ui/type-alias-impl-trait/issue-60371.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.rs b/tests/ui/type-alias-impl-trait/issue-60407.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60407.rs rename to tests/ui/type-alias-impl-trait/issue-60407.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.stderr b/tests/ui/type-alias-impl-trait/issue-60407.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60407.stderr rename to tests/ui/type-alias-impl-trait/issue-60407.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-60564-working.rs b/tests/ui/type-alias-impl-trait/issue-60564-working.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60564-working.rs rename to tests/ui/type-alias-impl-trait/issue-60564-working.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60564.rs b/tests/ui/type-alias-impl-trait/issue-60564.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60564.rs rename to tests/ui/type-alias-impl-trait/issue-60564.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60564.stderr b/tests/ui/type-alias-impl-trait/issue-60564.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60564.stderr rename to tests/ui/type-alias-impl-trait/issue-60564.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-60662.rs b/tests/ui/type-alias-impl-trait/issue-60662.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60662.rs rename to tests/ui/type-alias-impl-trait/issue-60662.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-60662.stdout b/tests/ui/type-alias-impl-trait/issue-60662.stdout similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-60662.stdout rename to tests/ui/type-alias-impl-trait/issue-60662.stdout diff --git a/src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs b/tests/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs rename to tests/ui/type-alias-impl-trait/issue-62000-associate-impl-trait-lifetimes.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-63263-closure-return.rs b/tests/ui/type-alias-impl-trait/issue-63263-closure-return.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-63263-closure-return.rs rename to tests/ui/type-alias-impl-trait/issue-63263-closure-return.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-63279.rs b/tests/ui/type-alias-impl-trait/issue-63279.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-63279.rs rename to tests/ui/type-alias-impl-trait/issue-63279.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-63279.stderr b/tests/ui/type-alias-impl-trait/issue-63279.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-63279.stderr rename to tests/ui/type-alias-impl-trait/issue-63279.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-63355.rs b/tests/ui/type-alias-impl-trait/issue-63355.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-63355.rs rename to tests/ui/type-alias-impl-trait/issue-63355.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs b/tests/ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs rename to tests/ui/type-alias-impl-trait/issue-63677-type-alias-coherence.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-65384.rs b/tests/ui/type-alias-impl-trait/issue-65384.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-65384.rs rename to tests/ui/type-alias-impl-trait/issue-65384.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-65384.stderr b/tests/ui/type-alias-impl-trait/issue-65384.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-65384.stderr rename to tests/ui/type-alias-impl-trait/issue-65384.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs b/tests/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs rename to tests/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-65918.rs b/tests/ui/type-alias-impl-trait/issue-65918.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-65918.rs rename to tests/ui/type-alias-impl-trait/issue-65918.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-66580-closure-coherence.rs b/tests/ui/type-alias-impl-trait/issue-66580-closure-coherence.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-66580-closure-coherence.rs rename to tests/ui/type-alias-impl-trait/issue-66580-closure-coherence.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-67844-nested-opaque.rs b/tests/ui/type-alias-impl-trait/issue-67844-nested-opaque.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-67844-nested-opaque.rs rename to tests/ui/type-alias-impl-trait/issue-67844-nested-opaque.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs b/tests/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs rename to tests/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.stderr b/tests/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.stderr rename to tests/ui/type-alias-impl-trait/issue-68368-non-defining-use-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use.rs b/tests/ui/type-alias-impl-trait/issue-68368-non-defining-use.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use.rs rename to tests/ui/type-alias-impl-trait/issue-68368-non-defining-use.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use.stderr b/tests/ui/type-alias-impl-trait/issue-68368-non-defining-use.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-68368-non-defining-use.stderr rename to tests/ui/type-alias-impl-trait/issue-68368-non-defining-use.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs b/tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs rename to tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr b/tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr rename to tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-error.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs b/tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs rename to tests/ui/type-alias-impl-trait/issue-69136-inner-lifetime-resolve-ok.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-69323.rs b/tests/ui/type-alias-impl-trait/issue-69323.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-69323.rs rename to tests/ui/type-alias-impl-trait/issue-69323.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-70121.rs b/tests/ui/type-alias-impl-trait/issue-70121.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-70121.rs rename to tests/ui/type-alias-impl-trait/issue-70121.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-72793.rs b/tests/ui/type-alias-impl-trait/issue-72793.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-72793.rs rename to tests/ui/type-alias-impl-trait/issue-72793.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-74244.rs b/tests/ui/type-alias-impl-trait/issue-74244.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74244.rs rename to tests/ui/type-alias-impl-trait/issue-74244.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-74244.stderr b/tests/ui/type-alias-impl-trait/issue-74244.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74244.stderr rename to tests/ui/type-alias-impl-trait/issue-74244.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-74280.rs b/tests/ui/type-alias-impl-trait/issue-74280.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74280.rs rename to tests/ui/type-alias-impl-trait/issue-74280.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-74280.stderr b/tests/ui/type-alias-impl-trait/issue-74280.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74280.stderr rename to tests/ui/type-alias-impl-trait/issue-74280.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-74761-2.rs b/tests/ui/type-alias-impl-trait/issue-74761-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74761-2.rs rename to tests/ui/type-alias-impl-trait/issue-74761-2.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-74761-2.stderr b/tests/ui/type-alias-impl-trait/issue-74761-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74761-2.stderr rename to tests/ui/type-alias-impl-trait/issue-74761-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-74761.rs b/tests/ui/type-alias-impl-trait/issue-74761.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74761.rs rename to tests/ui/type-alias-impl-trait/issue-74761.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-74761.stderr b/tests/ui/type-alias-impl-trait/issue-74761.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-74761.stderr rename to tests/ui/type-alias-impl-trait/issue-74761.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs b/tests/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs rename to tests/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-77179.rs b/tests/ui/type-alias-impl-trait/issue-77179.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-77179.rs rename to tests/ui/type-alias-impl-trait/issue-77179.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-77179.stderr b/tests/ui/type-alias-impl-trait/issue-77179.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-77179.stderr rename to tests/ui/type-alias-impl-trait/issue-77179.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-78450.rs b/tests/ui/type-alias-impl-trait/issue-78450.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-78450.rs rename to tests/ui/type-alias-impl-trait/issue-78450.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs b/tests/ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs rename to tests/ui/type-alias-impl-trait/issue-84660-trait-impl-for-tait.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-84660-unsoundness.rs b/tests/ui/type-alias-impl-trait/issue-84660-unsoundness.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-84660-unsoundness.rs rename to tests/ui/type-alias-impl-trait/issue-84660-unsoundness.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-84660-unsoundness.stderr b/tests/ui/type-alias-impl-trait/issue-84660-unsoundness.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-84660-unsoundness.stderr rename to tests/ui/type-alias-impl-trait/issue-84660-unsoundness.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs b/tests/ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs rename to tests/ui/type-alias-impl-trait/issue-87455-static-lifetime-ice.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-89686.rs b/tests/ui/type-alias-impl-trait/issue-89686.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-89686.rs rename to tests/ui/type-alias-impl-trait/issue-89686.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-89686.stderr b/tests/ui/type-alias-impl-trait/issue-89686.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-89686.stderr rename to tests/ui/type-alias-impl-trait/issue-89686.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-89952.rs b/tests/ui/type-alias-impl-trait/issue-89952.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-89952.rs rename to tests/ui/type-alias-impl-trait/issue-89952.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-90400-1.rs b/tests/ui/type-alias-impl-trait/issue-90400-1.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-90400-1.rs rename to tests/ui/type-alias-impl-trait/issue-90400-1.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-90400-1.stderr b/tests/ui/type-alias-impl-trait/issue-90400-1.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-90400-1.stderr rename to tests/ui/type-alias-impl-trait/issue-90400-1.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-90400-2.rs b/tests/ui/type-alias-impl-trait/issue-90400-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-90400-2.rs rename to tests/ui/type-alias-impl-trait/issue-90400-2.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-90400-2.stderr b/tests/ui/type-alias-impl-trait/issue-90400-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-90400-2.stderr rename to tests/ui/type-alias-impl-trait/issue-90400-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-93411.rs b/tests/ui/type-alias-impl-trait/issue-93411.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-93411.rs rename to tests/ui/type-alias-impl-trait/issue-93411.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-94429.rs b/tests/ui/type-alias-impl-trait/issue-94429.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-94429.rs rename to tests/ui/type-alias-impl-trait/issue-94429.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-94429.stderr b/tests/ui/type-alias-impl-trait/issue-94429.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-94429.stderr rename to tests/ui/type-alias-impl-trait/issue-94429.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs b/tests/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs rename to tests/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr b/tests/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr rename to tests/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs b/tests/ui/type-alias-impl-trait/issue-96572-unconstrained.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs rename to tests/ui/type-alias-impl-trait/issue-96572-unconstrained.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-98604.rs b/tests/ui/type-alias-impl-trait/issue-98604.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-98604.rs rename to tests/ui/type-alias-impl-trait/issue-98604.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-98604.stderr b/tests/ui/type-alias-impl-trait/issue-98604.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-98604.stderr rename to tests/ui/type-alias-impl-trait/issue-98604.stderr diff --git a/src/test/ui/type-alias-impl-trait/issue-98608.rs b/tests/ui/type-alias-impl-trait/issue-98608.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-98608.rs rename to tests/ui/type-alias-impl-trait/issue-98608.rs diff --git a/src/test/ui/type-alias-impl-trait/issue-98608.stderr b/tests/ui/type-alias-impl-trait/issue-98608.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/issue-98608.stderr rename to tests/ui/type-alias-impl-trait/issue-98608.stderr diff --git a/src/test/ui/type-alias-impl-trait/missing_lifetime_bound.rs b/tests/ui/type-alias-impl-trait/missing_lifetime_bound.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/missing_lifetime_bound.rs rename to tests/ui/type-alias-impl-trait/missing_lifetime_bound.rs diff --git a/src/test/ui/type-alias-impl-trait/missing_lifetime_bound.stderr b/tests/ui/type-alias-impl-trait/missing_lifetime_bound.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/missing_lifetime_bound.stderr rename to tests/ui/type-alias-impl-trait/missing_lifetime_bound.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.stderr b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.stderr rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-infer.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.stderr b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.stderr rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-lifetimes.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-pass.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-pass.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-pass.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn-pass.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.stderr b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.stderr rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.stderr b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.stderr rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn2.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.rs b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.rs rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.rs diff --git a/src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.stderr b/tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.stderr rename to tests/ui/type-alias-impl-trait/multiple-def-uses-in-one-fn3.stderr diff --git a/src/test/ui/type-alias-impl-trait/multiple_definitions.rs b/tests/ui/type-alias-impl-trait/multiple_definitions.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/multiple_definitions.rs rename to tests/ui/type-alias-impl-trait/multiple_definitions.rs diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference.rs b/tests/ui/type-alias-impl-trait/nested-tait-inference.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference.rs rename to tests/ui/type-alias-impl-trait/nested-tait-inference.rs diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference.stderr b/tests/ui/type-alias-impl-trait/nested-tait-inference.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference.stderr rename to tests/ui/type-alias-impl-trait/nested-tait-inference.stderr diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference2.rs b/tests/ui/type-alias-impl-trait/nested-tait-inference2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference2.rs rename to tests/ui/type-alias-impl-trait/nested-tait-inference2.rs diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference2.stderr b/tests/ui/type-alias-impl-trait/nested-tait-inference2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference2.stderr rename to tests/ui/type-alias-impl-trait/nested-tait-inference2.stderr diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference3.rs b/tests/ui/type-alias-impl-trait/nested-tait-inference3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference3.rs rename to tests/ui/type-alias-impl-trait/nested-tait-inference3.rs diff --git a/src/test/ui/type-alias-impl-trait/nested-tait-inference3.stderr b/tests/ui/type-alias-impl-trait/nested-tait-inference3.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested-tait-inference3.stderr rename to tests/ui/type-alias-impl-trait/nested-tait-inference3.stderr diff --git a/src/test/ui/type-alias-impl-trait/nested.rs b/tests/ui/type-alias-impl-trait/nested.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested.rs rename to tests/ui/type-alias-impl-trait/nested.rs diff --git a/src/test/ui/type-alias-impl-trait/nested.stderr b/tests/ui/type-alias-impl-trait/nested.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested.stderr rename to tests/ui/type-alias-impl-trait/nested.stderr diff --git a/src/test/ui/type-alias-impl-trait/nested_type_alias_impl_trait.rs b/tests/ui/type-alias-impl-trait/nested_type_alias_impl_trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested_type_alias_impl_trait.rs rename to tests/ui/type-alias-impl-trait/nested_type_alias_impl_trait.rs diff --git a/src/test/ui/type-alias-impl-trait/nested_type_alias_impl_trait.stderr b/tests/ui/type-alias-impl-trait/nested_type_alias_impl_trait.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/nested_type_alias_impl_trait.stderr rename to tests/ui/type-alias-impl-trait/nested_type_alias_impl_trait.stderr diff --git a/src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.rs b/tests/ui/type-alias-impl-trait/never_reveal_concrete_type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/never_reveal_concrete_type.rs rename to tests/ui/type-alias-impl-trait/never_reveal_concrete_type.rs diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs b/tests/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs rename to tests/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr b/tests/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr rename to tests/ui/type-alias-impl-trait/no_inferrable_concrete_type.stderr diff --git a/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.rs b/tests/ui/type-alias-impl-trait/no_revealing_outside_defining_module.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.rs rename to tests/ui/type-alias-impl-trait/no_revealing_outside_defining_module.rs diff --git a/src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr b/tests/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr rename to tests/ui/type-alias-impl-trait/no_revealing_outside_defining_module.stderr diff --git a/src/test/ui/type-alias-impl-trait/not_a_defining_use.rs b/tests/ui/type-alias-impl-trait/not_a_defining_use.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/not_a_defining_use.rs rename to tests/ui/type-alias-impl-trait/not_a_defining_use.rs diff --git a/src/test/ui/type-alias-impl-trait/not_a_defining_use.stderr b/tests/ui/type-alias-impl-trait/not_a_defining_use.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/not_a_defining_use.stderr rename to tests/ui/type-alias-impl-trait/not_a_defining_use.stderr diff --git a/src/test/ui/type-alias-impl-trait/not_well_formed.rs b/tests/ui/type-alias-impl-trait/not_well_formed.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/not_well_formed.rs rename to tests/ui/type-alias-impl-trait/not_well_formed.rs diff --git a/src/test/ui/type-alias-impl-trait/not_well_formed.stderr b/tests/ui/type-alias-impl-trait/not_well_formed.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/not_well_formed.stderr rename to tests/ui/type-alias-impl-trait/not_well_formed.stderr diff --git a/src/test/ui/type-alias-impl-trait/reveal_local.rs b/tests/ui/type-alias-impl-trait/reveal_local.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/reveal_local.rs rename to tests/ui/type-alias-impl-trait/reveal_local.rs diff --git a/src/test/ui/type-alias-impl-trait/reveal_local.stderr b/tests/ui/type-alias-impl-trait/reveal_local.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/reveal_local.stderr rename to tests/ui/type-alias-impl-trait/reveal_local.stderr diff --git a/src/test/ui/type-alias-impl-trait/self-referential-2.rs b/tests/ui/type-alias-impl-trait/self-referential-2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential-2.rs rename to tests/ui/type-alias-impl-trait/self-referential-2.rs diff --git a/src/test/ui/type-alias-impl-trait/self-referential-2.stderr b/tests/ui/type-alias-impl-trait/self-referential-2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential-2.stderr rename to tests/ui/type-alias-impl-trait/self-referential-2.stderr diff --git a/src/test/ui/type-alias-impl-trait/self-referential-3.rs b/tests/ui/type-alias-impl-trait/self-referential-3.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential-3.rs rename to tests/ui/type-alias-impl-trait/self-referential-3.rs diff --git a/src/test/ui/type-alias-impl-trait/self-referential-4.rs b/tests/ui/type-alias-impl-trait/self-referential-4.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential-4.rs rename to tests/ui/type-alias-impl-trait/self-referential-4.rs diff --git a/src/test/ui/type-alias-impl-trait/self-referential-4.stderr b/tests/ui/type-alias-impl-trait/self-referential-4.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential-4.stderr rename to tests/ui/type-alias-impl-trait/self-referential-4.stderr diff --git a/src/test/ui/type-alias-impl-trait/self-referential.rs b/tests/ui/type-alias-impl-trait/self-referential.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential.rs rename to tests/ui/type-alias-impl-trait/self-referential.rs diff --git a/src/test/ui/type-alias-impl-trait/self-referential.stderr b/tests/ui/type-alias-impl-trait/self-referential.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/self-referential.stderr rename to tests/ui/type-alias-impl-trait/self-referential.stderr diff --git a/src/test/ui/type-alias-impl-trait/self_implication.rs b/tests/ui/type-alias-impl-trait/self_implication.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/self_implication.rs rename to tests/ui/type-alias-impl-trait/self_implication.rs diff --git a/src/test/ui/type-alias-impl-trait/static-const-types.rs b/tests/ui/type-alias-impl-trait/static-const-types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/static-const-types.rs rename to tests/ui/type-alias-impl-trait/static-const-types.rs diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs b/tests/ui/type-alias-impl-trait/structural-match-no-leak.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs rename to tests/ui/type-alias-impl-trait/structural-match-no-leak.rs diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.stderr b/tests/ui/type-alias-impl-trait/structural-match-no-leak.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/structural-match-no-leak.stderr rename to tests/ui/type-alias-impl-trait/structural-match-no-leak.stderr diff --git a/src/test/ui/type-alias-impl-trait/structural-match.rs b/tests/ui/type-alias-impl-trait/structural-match.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/structural-match.rs rename to tests/ui/type-alias-impl-trait/structural-match.rs diff --git a/src/test/ui/type-alias-impl-trait/structural-match.stderr b/tests/ui/type-alias-impl-trait/structural-match.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/structural-match.stderr rename to tests/ui/type-alias-impl-trait/structural-match.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-dyn.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-dyn.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-dyn.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-dyn.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-impl-trait.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-impl-trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-impl-trait.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-assoc-impl-trait.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.stderr b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.stderr rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-fn-type.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fns.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-fns.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-fns.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-fns.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-sized.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-sized.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-sized.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-sized.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-struct.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-struct.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-struct.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-struct.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-tuple.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-tuple.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-tuple.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-tuple.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.stderr b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.stderr rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-unconstrained-lifetime.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-cycle-error2.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.stderr b/tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.stderr rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait-with-no-traits.stderr diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait2.rs b/tests/ui/type-alias-impl-trait/type-alias-impl-trait2.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-impl-trait2.rs rename to tests/ui/type-alias-impl-trait/type-alias-impl-trait2.rs diff --git a/src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs b/tests/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs rename to tests/ui/type-alias-impl-trait/type-alias-nested-impl-trait.rs diff --git a/src/test/ui/type-alias-impl-trait/type_of_a_let.rs b/tests/ui/type-alias-impl-trait/type_of_a_let.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/type_of_a_let.rs rename to tests/ui/type-alias-impl-trait/type_of_a_let.rs diff --git a/src/test/ui/type-alias-impl-trait/type_of_a_let.stderr b/tests/ui/type-alias-impl-trait/type_of_a_let.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/type_of_a_let.stderr rename to tests/ui/type-alias-impl-trait/type_of_a_let.stderr diff --git a/src/test/ui/type-alias-impl-trait/unbounded_opaque_type.rs b/tests/ui/type-alias-impl-trait/unbounded_opaque_type.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/unbounded_opaque_type.rs rename to tests/ui/type-alias-impl-trait/unbounded_opaque_type.rs diff --git a/src/test/ui/type-alias-impl-trait/underconstrained_generic.rs b/tests/ui/type-alias-impl-trait/underconstrained_generic.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/underconstrained_generic.rs rename to tests/ui/type-alias-impl-trait/underconstrained_generic.rs diff --git a/src/test/ui/type-alias-impl-trait/underconstrained_generic.stderr b/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/underconstrained_generic.stderr rename to tests/ui/type-alias-impl-trait/underconstrained_generic.stderr diff --git a/src/test/ui/type-alias-impl-trait/underconstrained_lifetime.rs b/tests/ui/type-alias-impl-trait/underconstrained_lifetime.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/underconstrained_lifetime.rs rename to tests/ui/type-alias-impl-trait/underconstrained_lifetime.rs diff --git a/src/test/ui/type-alias-impl-trait/underconstrained_lifetime.stderr b/tests/ui/type-alias-impl-trait/underconstrained_lifetime.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/underconstrained_lifetime.stderr rename to tests/ui/type-alias-impl-trait/underconstrained_lifetime.stderr diff --git a/src/test/ui/type-alias-impl-trait/unused_generic_param.rs b/tests/ui/type-alias-impl-trait/unused_generic_param.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/unused_generic_param.rs rename to tests/ui/type-alias-impl-trait/unused_generic_param.rs diff --git a/src/test/ui/type-alias-impl-trait/weird-return-types.rs b/tests/ui/type-alias-impl-trait/weird-return-types.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/weird-return-types.rs rename to tests/ui/type-alias-impl-trait/weird-return-types.rs diff --git a/src/test/ui/type-alias-impl-trait/wf-check-fn-def.rs b/tests/ui/type-alias-impl-trait/wf-check-fn-def.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/wf-check-fn-def.rs rename to tests/ui/type-alias-impl-trait/wf-check-fn-def.rs diff --git a/src/test/ui/type-alias-impl-trait/wf-check-fn-def.stderr b/tests/ui/type-alias-impl-trait/wf-check-fn-def.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/wf-check-fn-def.stderr rename to tests/ui/type-alias-impl-trait/wf-check-fn-def.stderr diff --git a/src/test/ui/type-alias-impl-trait/wf-check-fn-ptrs.rs b/tests/ui/type-alias-impl-trait/wf-check-fn-ptrs.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/wf-check-fn-ptrs.rs rename to tests/ui/type-alias-impl-trait/wf-check-fn-ptrs.rs diff --git a/src/test/ui/type-alias-impl-trait/wf_check_closures.rs b/tests/ui/type-alias-impl-trait/wf_check_closures.rs similarity index 100% rename from src/test/ui/type-alias-impl-trait/wf_check_closures.rs rename to tests/ui/type-alias-impl-trait/wf_check_closures.rs diff --git a/src/test/ui/type-alias-impl-trait/wf_check_closures.stderr b/tests/ui/type-alias-impl-trait/wf_check_closures.stderr similarity index 100% rename from src/test/ui/type-alias-impl-trait/wf_check_closures.stderr rename to tests/ui/type-alias-impl-trait/wf_check_closures.stderr diff --git a/src/test/ui/type-alias/issue-14933.rs b/tests/ui/type-alias/issue-14933.rs similarity index 100% rename from src/test/ui/type-alias/issue-14933.rs rename to tests/ui/type-alias/issue-14933.rs diff --git a/src/test/ui/type-alias/issue-37515.rs b/tests/ui/type-alias/issue-37515.rs similarity index 100% rename from src/test/ui/type-alias/issue-37515.rs rename to tests/ui/type-alias/issue-37515.rs diff --git a/src/test/ui/type-alias/issue-37515.stderr b/tests/ui/type-alias/issue-37515.stderr similarity index 100% rename from src/test/ui/type-alias/issue-37515.stderr rename to tests/ui/type-alias/issue-37515.stderr diff --git a/src/test/ui/type-alias/issue-62263-self-in-atb.rs b/tests/ui/type-alias/issue-62263-self-in-atb.rs similarity index 100% rename from src/test/ui/type-alias/issue-62263-self-in-atb.rs rename to tests/ui/type-alias/issue-62263-self-in-atb.rs diff --git a/src/test/ui/type-alias/issue-62263-self-in-atb.stderr b/tests/ui/type-alias/issue-62263-self-in-atb.stderr similarity index 100% rename from src/test/ui/type-alias/issue-62263-self-in-atb.stderr rename to tests/ui/type-alias/issue-62263-self-in-atb.stderr diff --git a/src/test/ui/type-alias/issue-62305-self-assoc-ty.rs b/tests/ui/type-alias/issue-62305-self-assoc-ty.rs similarity index 100% rename from src/test/ui/type-alias/issue-62305-self-assoc-ty.rs rename to tests/ui/type-alias/issue-62305-self-assoc-ty.rs diff --git a/src/test/ui/type-alias/issue-62305-self-assoc-ty.stderr b/tests/ui/type-alias/issue-62305-self-assoc-ty.stderr similarity index 100% rename from src/test/ui/type-alias/issue-62305-self-assoc-ty.stderr rename to tests/ui/type-alias/issue-62305-self-assoc-ty.stderr diff --git a/src/test/ui/type-alias/issue-62364-self-ty-arg.rs b/tests/ui/type-alias/issue-62364-self-ty-arg.rs similarity index 100% rename from src/test/ui/type-alias/issue-62364-self-ty-arg.rs rename to tests/ui/type-alias/issue-62364-self-ty-arg.rs diff --git a/src/test/ui/type-alias/issue-62364-self-ty-arg.stderr b/tests/ui/type-alias/issue-62364-self-ty-arg.stderr similarity index 100% rename from src/test/ui/type-alias/issue-62364-self-ty-arg.stderr rename to tests/ui/type-alias/issue-62364-self-ty-arg.stderr diff --git a/src/test/ui/type-id-higher-rank-2.rs b/tests/ui/type-id-higher-rank-2.rs similarity index 100% rename from src/test/ui/type-id-higher-rank-2.rs rename to tests/ui/type-id-higher-rank-2.rs diff --git a/src/test/ui/type-inference/issue-30225.rs b/tests/ui/type-inference/issue-30225.rs similarity index 100% rename from src/test/ui/type-inference/issue-30225.rs rename to tests/ui/type-inference/issue-30225.rs diff --git a/src/test/ui/type-inference/issue-30225.stderr b/tests/ui/type-inference/issue-30225.stderr similarity index 100% rename from src/test/ui/type-inference/issue-30225.stderr rename to tests/ui/type-inference/issue-30225.stderr diff --git a/src/test/ui/type-inference/or_else-multiple-type-params.rs b/tests/ui/type-inference/or_else-multiple-type-params.rs similarity index 100% rename from src/test/ui/type-inference/or_else-multiple-type-params.rs rename to tests/ui/type-inference/or_else-multiple-type-params.rs diff --git a/src/test/ui/type-inference/or_else-multiple-type-params.stderr b/tests/ui/type-inference/or_else-multiple-type-params.stderr similarity index 100% rename from src/test/ui/type-inference/or_else-multiple-type-params.stderr rename to tests/ui/type-inference/or_else-multiple-type-params.stderr diff --git a/src/test/ui/type-inference/sort_by_key.rs b/tests/ui/type-inference/sort_by_key.rs similarity index 100% rename from src/test/ui/type-inference/sort_by_key.rs rename to tests/ui/type-inference/sort_by_key.rs diff --git a/src/test/ui/type-inference/sort_by_key.stderr b/tests/ui/type-inference/sort_by_key.stderr similarity index 100% rename from src/test/ui/type-inference/sort_by_key.stderr rename to tests/ui/type-inference/sort_by_key.stderr diff --git a/src/test/ui/type-inference/unbounded-associated-type.rs b/tests/ui/type-inference/unbounded-associated-type.rs similarity index 100% rename from src/test/ui/type-inference/unbounded-associated-type.rs rename to tests/ui/type-inference/unbounded-associated-type.rs diff --git a/src/test/ui/type-inference/unbounded-associated-type.stderr b/tests/ui/type-inference/unbounded-associated-type.stderr similarity index 100% rename from src/test/ui/type-inference/unbounded-associated-type.stderr rename to tests/ui/type-inference/unbounded-associated-type.stderr diff --git a/src/test/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.rs b/tests/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.rs similarity index 100% rename from src/test/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.rs rename to tests/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.rs diff --git a/src/test/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.stderr b/tests/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.stderr similarity index 100% rename from src/test/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.stderr rename to tests/ui/type-inference/unbounded-type-param-in-fn-with-assoc-type.stderr diff --git a/src/test/ui/type-inference/unbounded-type-param-in-fn.rs b/tests/ui/type-inference/unbounded-type-param-in-fn.rs similarity index 100% rename from src/test/ui/type-inference/unbounded-type-param-in-fn.rs rename to tests/ui/type-inference/unbounded-type-param-in-fn.rs diff --git a/src/test/ui/type-inference/unbounded-type-param-in-fn.stderr b/tests/ui/type-inference/unbounded-type-param-in-fn.stderr similarity index 100% rename from src/test/ui/type-inference/unbounded-type-param-in-fn.stderr rename to tests/ui/type-inference/unbounded-type-param-in-fn.stderr diff --git a/src/test/ui/type-namespace.rs b/tests/ui/type-namespace.rs similarity index 100% rename from src/test/ui/type-namespace.rs rename to tests/ui/type-namespace.rs diff --git a/src/test/ui/type-param-constraints.rs b/tests/ui/type-param-constraints.rs similarity index 100% rename from src/test/ui/type-param-constraints.rs rename to tests/ui/type-param-constraints.rs diff --git a/src/test/ui/type-param.rs b/tests/ui/type-param.rs similarity index 100% rename from src/test/ui/type-param.rs rename to tests/ui/type-param.rs diff --git a/src/test/ui/type-ptr.rs b/tests/ui/type-ptr.rs similarity index 100% rename from src/test/ui/type-ptr.rs rename to tests/ui/type-ptr.rs diff --git a/src/test/ui/type-use-i1-versus-i8.rs b/tests/ui/type-use-i1-versus-i8.rs similarity index 100% rename from src/test/ui/type-use-i1-versus-i8.rs rename to tests/ui/type-use-i1-versus-i8.rs diff --git a/src/test/ui/type/ascription/issue-34255-1.rs b/tests/ui/type/ascription/issue-34255-1.rs similarity index 100% rename from src/test/ui/type/ascription/issue-34255-1.rs rename to tests/ui/type/ascription/issue-34255-1.rs diff --git a/src/test/ui/type/ascription/issue-34255-1.stderr b/tests/ui/type/ascription/issue-34255-1.stderr similarity index 100% rename from src/test/ui/type/ascription/issue-34255-1.stderr rename to tests/ui/type/ascription/issue-34255-1.stderr diff --git a/src/test/ui/type/ascription/issue-47666.fixed b/tests/ui/type/ascription/issue-47666.fixed similarity index 100% rename from src/test/ui/type/ascription/issue-47666.fixed rename to tests/ui/type/ascription/issue-47666.fixed diff --git a/src/test/ui/type/ascription/issue-47666.rs b/tests/ui/type/ascription/issue-47666.rs similarity index 100% rename from src/test/ui/type/ascription/issue-47666.rs rename to tests/ui/type/ascription/issue-47666.rs diff --git a/src/test/ui/type/ascription/issue-47666.stderr b/tests/ui/type/ascription/issue-47666.stderr similarity index 100% rename from src/test/ui/type/ascription/issue-47666.stderr rename to tests/ui/type/ascription/issue-47666.stderr diff --git a/src/test/ui/type/ascription/issue-54516.fixed b/tests/ui/type/ascription/issue-54516.fixed similarity index 100% rename from src/test/ui/type/ascription/issue-54516.fixed rename to tests/ui/type/ascription/issue-54516.fixed diff --git a/src/test/ui/type/ascription/issue-54516.rs b/tests/ui/type/ascription/issue-54516.rs similarity index 100% rename from src/test/ui/type/ascription/issue-54516.rs rename to tests/ui/type/ascription/issue-54516.rs diff --git a/src/test/ui/type/ascription/issue-54516.stderr b/tests/ui/type/ascription/issue-54516.stderr similarity index 100% rename from src/test/ui/type/ascription/issue-54516.stderr rename to tests/ui/type/ascription/issue-54516.stderr diff --git a/src/test/ui/type/ascription/issue-60933.fixed b/tests/ui/type/ascription/issue-60933.fixed similarity index 100% rename from src/test/ui/type/ascription/issue-60933.fixed rename to tests/ui/type/ascription/issue-60933.fixed diff --git a/src/test/ui/type/ascription/issue-60933.rs b/tests/ui/type/ascription/issue-60933.rs similarity index 100% rename from src/test/ui/type/ascription/issue-60933.rs rename to tests/ui/type/ascription/issue-60933.rs diff --git a/src/test/ui/type/ascription/issue-60933.stderr b/tests/ui/type/ascription/issue-60933.stderr similarity index 100% rename from src/test/ui/type/ascription/issue-60933.stderr rename to tests/ui/type/ascription/issue-60933.stderr diff --git a/src/test/ui/type/auxiliary/crate_a1.rs b/tests/ui/type/auxiliary/crate_a1.rs similarity index 100% rename from src/test/ui/type/auxiliary/crate_a1.rs rename to tests/ui/type/auxiliary/crate_a1.rs diff --git a/src/test/ui/type/auxiliary/crate_a2.rs b/tests/ui/type/auxiliary/crate_a2.rs similarity index 100% rename from src/test/ui/type/auxiliary/crate_a2.rs rename to tests/ui/type/auxiliary/crate_a2.rs diff --git a/src/test/ui/type/binding-assigned-block-without-tail-expression.rs b/tests/ui/type/binding-assigned-block-without-tail-expression.rs similarity index 100% rename from src/test/ui/type/binding-assigned-block-without-tail-expression.rs rename to tests/ui/type/binding-assigned-block-without-tail-expression.rs diff --git a/src/test/ui/type/binding-assigned-block-without-tail-expression.stderr b/tests/ui/type/binding-assigned-block-without-tail-expression.stderr similarity index 100% rename from src/test/ui/type/binding-assigned-block-without-tail-expression.stderr rename to tests/ui/type/binding-assigned-block-without-tail-expression.stderr diff --git a/src/test/ui/type/closure-with-wrong-borrows.rs b/tests/ui/type/closure-with-wrong-borrows.rs similarity index 100% rename from src/test/ui/type/closure-with-wrong-borrows.rs rename to tests/ui/type/closure-with-wrong-borrows.rs diff --git a/src/test/ui/type/closure-with-wrong-borrows.stderr b/tests/ui/type/closure-with-wrong-borrows.stderr similarity index 100% rename from src/test/ui/type/closure-with-wrong-borrows.stderr rename to tests/ui/type/closure-with-wrong-borrows.stderr diff --git a/src/test/ui/type/issue-100584.rs b/tests/ui/type/issue-100584.rs similarity index 100% rename from src/test/ui/type/issue-100584.rs rename to tests/ui/type/issue-100584.rs diff --git a/src/test/ui/type/issue-100584.stderr b/tests/ui/type/issue-100584.stderr similarity index 100% rename from src/test/ui/type/issue-100584.stderr rename to tests/ui/type/issue-100584.stderr diff --git a/src/test/ui/type/issue-101866.rs b/tests/ui/type/issue-101866.rs similarity index 100% rename from src/test/ui/type/issue-101866.rs rename to tests/ui/type/issue-101866.rs diff --git a/src/test/ui/type/issue-101866.stderr b/tests/ui/type/issue-101866.stderr similarity index 100% rename from src/test/ui/type/issue-101866.stderr rename to tests/ui/type/issue-101866.stderr diff --git a/src/test/ui/type/issue-102598.rs b/tests/ui/type/issue-102598.rs similarity index 100% rename from src/test/ui/type/issue-102598.rs rename to tests/ui/type/issue-102598.rs diff --git a/src/test/ui/type/issue-102598.stderr b/tests/ui/type/issue-102598.stderr similarity index 100% rename from src/test/ui/type/issue-102598.stderr rename to tests/ui/type/issue-102598.stderr diff --git a/src/test/ui/type/issue-103271.rs b/tests/ui/type/issue-103271.rs similarity index 100% rename from src/test/ui/type/issue-103271.rs rename to tests/ui/type/issue-103271.rs diff --git a/src/test/ui/type/issue-103271.stderr b/tests/ui/type/issue-103271.stderr similarity index 100% rename from src/test/ui/type/issue-103271.stderr rename to tests/ui/type/issue-103271.stderr diff --git a/src/test/ui/type/issue-58355.rs b/tests/ui/type/issue-58355.rs similarity index 100% rename from src/test/ui/type/issue-58355.rs rename to tests/ui/type/issue-58355.rs diff --git a/src/test/ui/type/issue-58355.stderr b/tests/ui/type/issue-58355.stderr similarity index 100% rename from src/test/ui/type/issue-58355.stderr rename to tests/ui/type/issue-58355.stderr diff --git a/src/test/ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs b/tests/ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs similarity index 100% rename from src/test/ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs rename to tests/ui/type/issue-67690-type-alias-bound-diagnostic-crash.rs diff --git a/src/test/ui/type/issue-67690-type-alias-bound-diagnostic-crash.stderr b/tests/ui/type/issue-67690-type-alias-bound-diagnostic-crash.stderr similarity index 100% rename from src/test/ui/type/issue-67690-type-alias-bound-diagnostic-crash.stderr rename to tests/ui/type/issue-67690-type-alias-bound-diagnostic-crash.stderr diff --git a/src/test/ui/type/issue-91268.rs b/tests/ui/type/issue-91268.rs similarity index 100% rename from src/test/ui/type/issue-91268.rs rename to tests/ui/type/issue-91268.rs diff --git a/src/test/ui/type/issue-91268.stderr b/tests/ui/type/issue-91268.stderr similarity index 100% rename from src/test/ui/type/issue-91268.stderr rename to tests/ui/type/issue-91268.stderr diff --git a/src/test/ui/type/issue-94187-verbose-type-name.rs b/tests/ui/type/issue-94187-verbose-type-name.rs similarity index 100% rename from src/test/ui/type/issue-94187-verbose-type-name.rs rename to tests/ui/type/issue-94187-verbose-type-name.rs diff --git a/src/test/ui/type/missing-let-in-binding.fixed b/tests/ui/type/missing-let-in-binding.fixed similarity index 100% rename from src/test/ui/type/missing-let-in-binding.fixed rename to tests/ui/type/missing-let-in-binding.fixed diff --git a/src/test/ui/type/missing-let-in-binding.rs b/tests/ui/type/missing-let-in-binding.rs similarity index 100% rename from src/test/ui/type/missing-let-in-binding.rs rename to tests/ui/type/missing-let-in-binding.rs diff --git a/src/test/ui/type/missing-let-in-binding.stderr b/tests/ui/type/missing-let-in-binding.stderr similarity index 100% rename from src/test/ui/type/missing-let-in-binding.stderr rename to tests/ui/type/missing-let-in-binding.stderr diff --git a/src/test/ui/type/type-alias-bounds.rs b/tests/ui/type/type-alias-bounds.rs similarity index 100% rename from src/test/ui/type/type-alias-bounds.rs rename to tests/ui/type/type-alias-bounds.rs diff --git a/src/test/ui/type/type-alias-bounds.stderr b/tests/ui/type/type-alias-bounds.stderr similarity index 100% rename from src/test/ui/type/type-alias-bounds.stderr rename to tests/ui/type/type-alias-bounds.stderr diff --git a/src/test/ui/type/type-annotation-needed.rs b/tests/ui/type/type-annotation-needed.rs similarity index 100% rename from src/test/ui/type/type-annotation-needed.rs rename to tests/ui/type/type-annotation-needed.rs diff --git a/src/test/ui/type/type-annotation-needed.stderr b/tests/ui/type/type-annotation-needed.stderr similarity index 100% rename from src/test/ui/type/type-annotation-needed.stderr rename to tests/ui/type/type-annotation-needed.stderr diff --git a/src/test/ui/type/type-arg-out-of-scope.rs b/tests/ui/type/type-arg-out-of-scope.rs similarity index 100% rename from src/test/ui/type/type-arg-out-of-scope.rs rename to tests/ui/type/type-arg-out-of-scope.rs diff --git a/src/test/ui/type/type-arg-out-of-scope.stderr b/tests/ui/type/type-arg-out-of-scope.stderr similarity index 100% rename from src/test/ui/type/type-arg-out-of-scope.stderr rename to tests/ui/type/type-arg-out-of-scope.stderr diff --git a/src/test/ui/type/type-ascription-instead-of-initializer.rs b/tests/ui/type/type-ascription-instead-of-initializer.rs similarity index 100% rename from src/test/ui/type/type-ascription-instead-of-initializer.rs rename to tests/ui/type/type-ascription-instead-of-initializer.rs diff --git a/src/test/ui/type/type-ascription-instead-of-initializer.stderr b/tests/ui/type/type-ascription-instead-of-initializer.stderr similarity index 100% rename from src/test/ui/type/type-ascription-instead-of-initializer.stderr rename to tests/ui/type/type-ascription-instead-of-initializer.stderr diff --git a/src/test/ui/type/type-ascription-instead-of-statement-end.rs b/tests/ui/type/type-ascription-instead-of-statement-end.rs similarity index 100% rename from src/test/ui/type/type-ascription-instead-of-statement-end.rs rename to tests/ui/type/type-ascription-instead-of-statement-end.rs diff --git a/src/test/ui/type/type-ascription-instead-of-statement-end.stderr b/tests/ui/type/type-ascription-instead-of-statement-end.stderr similarity index 100% rename from src/test/ui/type/type-ascription-instead-of-statement-end.stderr rename to tests/ui/type/type-ascription-instead-of-statement-end.stderr diff --git a/src/test/ui/type/type-ascription-precedence.rs b/tests/ui/type/type-ascription-precedence.rs similarity index 100% rename from src/test/ui/type/type-ascription-precedence.rs rename to tests/ui/type/type-ascription-precedence.rs diff --git a/src/test/ui/type/type-ascription-precedence.stderr b/tests/ui/type/type-ascription-precedence.stderr similarity index 100% rename from src/test/ui/type/type-ascription-precedence.stderr rename to tests/ui/type/type-ascription-precedence.stderr diff --git a/src/test/ui/type/type-ascription-soundness.rs b/tests/ui/type/type-ascription-soundness.rs similarity index 100% rename from src/test/ui/type/type-ascription-soundness.rs rename to tests/ui/type/type-ascription-soundness.rs diff --git a/src/test/ui/type/type-ascription-soundness.stderr b/tests/ui/type/type-ascription-soundness.stderr similarity index 100% rename from src/test/ui/type/type-ascription-soundness.stderr rename to tests/ui/type/type-ascription-soundness.stderr diff --git a/src/test/ui/type/type-ascription-with-fn-call.fixed b/tests/ui/type/type-ascription-with-fn-call.fixed similarity index 100% rename from src/test/ui/type/type-ascription-with-fn-call.fixed rename to tests/ui/type/type-ascription-with-fn-call.fixed diff --git a/src/test/ui/type/type-ascription-with-fn-call.rs b/tests/ui/type/type-ascription-with-fn-call.rs similarity index 100% rename from src/test/ui/type/type-ascription-with-fn-call.rs rename to tests/ui/type/type-ascription-with-fn-call.rs diff --git a/src/test/ui/type/type-ascription-with-fn-call.stderr b/tests/ui/type/type-ascription-with-fn-call.stderr similarity index 100% rename from src/test/ui/type/type-ascription-with-fn-call.stderr rename to tests/ui/type/type-ascription-with-fn-call.stderr diff --git a/src/test/ui/type/type-ascription.rs b/tests/ui/type/type-ascription.rs similarity index 100% rename from src/test/ui/type/type-ascription.rs rename to tests/ui/type/type-ascription.rs diff --git a/src/test/ui/type/type-check-defaults.rs b/tests/ui/type/type-check-defaults.rs similarity index 100% rename from src/test/ui/type/type-check-defaults.rs rename to tests/ui/type/type-check-defaults.rs diff --git a/src/test/ui/type/type-check-defaults.stderr b/tests/ui/type/type-check-defaults.stderr similarity index 100% rename from src/test/ui/type/type-check-defaults.stderr rename to tests/ui/type/type-check-defaults.stderr diff --git a/src/test/ui/type/type-check/assignment-expected-bool.rs b/tests/ui/type/type-check/assignment-expected-bool.rs similarity index 100% rename from src/test/ui/type/type-check/assignment-expected-bool.rs rename to tests/ui/type/type-check/assignment-expected-bool.rs diff --git a/src/test/ui/type/type-check/assignment-expected-bool.stderr b/tests/ui/type/type-check/assignment-expected-bool.stderr similarity index 100% rename from src/test/ui/type/type-check/assignment-expected-bool.stderr rename to tests/ui/type/type-check/assignment-expected-bool.stderr diff --git a/src/test/ui/type/type-check/assignment-in-if.rs b/tests/ui/type/type-check/assignment-in-if.rs similarity index 100% rename from src/test/ui/type/type-check/assignment-in-if.rs rename to tests/ui/type/type-check/assignment-in-if.rs diff --git a/src/test/ui/type/type-check/assignment-in-if.stderr b/tests/ui/type/type-check/assignment-in-if.stderr similarity index 100% rename from src/test/ui/type/type-check/assignment-in-if.stderr rename to tests/ui/type/type-check/assignment-in-if.stderr diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_array.rs b/tests/ui/type/type-check/cannot_infer_local_or_array.rs similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_array.rs rename to tests/ui/type/type-check/cannot_infer_local_or_array.rs diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_array.stderr b/tests/ui/type/type-check/cannot_infer_local_or_array.stderr similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_array.stderr rename to tests/ui/type/type-check/cannot_infer_local_or_array.stderr diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_vec.rs b/tests/ui/type/type-check/cannot_infer_local_or_vec.rs similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_vec.rs rename to tests/ui/type/type-check/cannot_infer_local_or_vec.rs diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_vec.stderr b/tests/ui/type/type-check/cannot_infer_local_or_vec.stderr similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_vec.stderr rename to tests/ui/type/type-check/cannot_infer_local_or_vec.stderr diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.rs b/tests/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.rs similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.rs rename to tests/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.rs diff --git a/src/test/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.stderr b/tests/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.stderr similarity index 100% rename from src/test/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.stderr rename to tests/ui/type/type-check/cannot_infer_local_or_vec_in_tuples.stderr diff --git a/src/test/ui/type/type-check/issue-22897.rs b/tests/ui/type/type-check/issue-22897.rs similarity index 100% rename from src/test/ui/type/type-check/issue-22897.rs rename to tests/ui/type/type-check/issue-22897.rs diff --git a/src/test/ui/type/type-check/issue-22897.stderr b/tests/ui/type/type-check/issue-22897.stderr similarity index 100% rename from src/test/ui/type/type-check/issue-22897.stderr rename to tests/ui/type/type-check/issue-22897.stderr diff --git a/src/test/ui/type/type-check/issue-40294.rs b/tests/ui/type/type-check/issue-40294.rs similarity index 100% rename from src/test/ui/type/type-check/issue-40294.rs rename to tests/ui/type/type-check/issue-40294.rs diff --git a/src/test/ui/type/type-check/issue-40294.stderr b/tests/ui/type/type-check/issue-40294.stderr similarity index 100% rename from src/test/ui/type/type-check/issue-40294.stderr rename to tests/ui/type/type-check/issue-40294.stderr diff --git a/src/test/ui/type/type-check/issue-41314.rs b/tests/ui/type/type-check/issue-41314.rs similarity index 100% rename from src/test/ui/type/type-check/issue-41314.rs rename to tests/ui/type/type-check/issue-41314.rs diff --git a/src/test/ui/type/type-check/issue-41314.stderr b/tests/ui/type/type-check/issue-41314.stderr similarity index 100% rename from src/test/ui/type/type-check/issue-41314.stderr rename to tests/ui/type/type-check/issue-41314.stderr diff --git a/src/test/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs b/tests/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs similarity index 100% rename from src/test/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs rename to tests/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs diff --git a/src/test/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.stderr b/tests/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.stderr similarity index 100% rename from src/test/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.stderr rename to tests/ui/type/type-check/issue-67273-assignment-match-prior-arm-bool-expected-unit.stderr diff --git a/src/test/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs b/tests/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs similarity index 100% rename from src/test/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs rename to tests/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.rs diff --git a/src/test/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.stderr b/tests/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.stderr similarity index 100% rename from src/test/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.stderr rename to tests/ui/type/type-check/issue-88577-check-fn-with-more-than-65535-arguments.stderr diff --git a/src/test/ui/type/type-check/missing_trait_impl.rs b/tests/ui/type/type-check/missing_trait_impl.rs similarity index 100% rename from src/test/ui/type/type-check/missing_trait_impl.rs rename to tests/ui/type/type-check/missing_trait_impl.rs diff --git a/src/test/ui/type/type-check/missing_trait_impl.stderr b/tests/ui/type/type-check/missing_trait_impl.stderr similarity index 100% rename from src/test/ui/type/type-check/missing_trait_impl.stderr rename to tests/ui/type/type-check/missing_trait_impl.stderr diff --git a/src/test/ui/type/type-check/point-at-inference-2.rs b/tests/ui/type/type-check/point-at-inference-2.rs similarity index 100% rename from src/test/ui/type/type-check/point-at-inference-2.rs rename to tests/ui/type/type-check/point-at-inference-2.rs diff --git a/src/test/ui/type/type-check/point-at-inference-2.stderr b/tests/ui/type/type-check/point-at-inference-2.stderr similarity index 100% rename from src/test/ui/type/type-check/point-at-inference-2.stderr rename to tests/ui/type/type-check/point-at-inference-2.stderr diff --git a/src/test/ui/type/type-check/point-at-inference-3.fixed b/tests/ui/type/type-check/point-at-inference-3.fixed similarity index 100% rename from src/test/ui/type/type-check/point-at-inference-3.fixed rename to tests/ui/type/type-check/point-at-inference-3.fixed diff --git a/src/test/ui/type/type-check/point-at-inference-3.rs b/tests/ui/type/type-check/point-at-inference-3.rs similarity index 100% rename from src/test/ui/type/type-check/point-at-inference-3.rs rename to tests/ui/type/type-check/point-at-inference-3.rs diff --git a/src/test/ui/type/type-check/point-at-inference-3.stderr b/tests/ui/type/type-check/point-at-inference-3.stderr similarity index 100% rename from src/test/ui/type/type-check/point-at-inference-3.stderr rename to tests/ui/type/type-check/point-at-inference-3.stderr diff --git a/src/test/ui/type/type-check/point-at-inference.fixed b/tests/ui/type/type-check/point-at-inference.fixed similarity index 100% rename from src/test/ui/type/type-check/point-at-inference.fixed rename to tests/ui/type/type-check/point-at-inference.fixed diff --git a/src/test/ui/type/type-check/point-at-inference.rs b/tests/ui/type/type-check/point-at-inference.rs similarity index 100% rename from src/test/ui/type/type-check/point-at-inference.rs rename to tests/ui/type/type-check/point-at-inference.rs diff --git a/src/test/ui/type/type-check/point-at-inference.stderr b/tests/ui/type/type-check/point-at-inference.stderr similarity index 100% rename from src/test/ui/type/type-check/point-at-inference.stderr rename to tests/ui/type/type-check/point-at-inference.stderr diff --git a/src/test/ui/type/type-check/unknown_type_for_closure.rs b/tests/ui/type/type-check/unknown_type_for_closure.rs similarity index 100% rename from src/test/ui/type/type-check/unknown_type_for_closure.rs rename to tests/ui/type/type-check/unknown_type_for_closure.rs diff --git a/src/test/ui/type/type-check/unknown_type_for_closure.stderr b/tests/ui/type/type-check/unknown_type_for_closure.stderr similarity index 100% rename from src/test/ui/type/type-check/unknown_type_for_closure.stderr rename to tests/ui/type/type-check/unknown_type_for_closure.stderr diff --git a/src/test/ui/type/type-dependent-def-issue-49241.rs b/tests/ui/type/type-dependent-def-issue-49241.rs similarity index 100% rename from src/test/ui/type/type-dependent-def-issue-49241.rs rename to tests/ui/type/type-dependent-def-issue-49241.rs diff --git a/src/test/ui/type/type-dependent-def-issue-49241.stderr b/tests/ui/type/type-dependent-def-issue-49241.stderr similarity index 100% rename from src/test/ui/type/type-dependent-def-issue-49241.stderr rename to tests/ui/type/type-dependent-def-issue-49241.stderr diff --git a/src/test/ui/type/type-error-break-tail.rs b/tests/ui/type/type-error-break-tail.rs similarity index 100% rename from src/test/ui/type/type-error-break-tail.rs rename to tests/ui/type/type-error-break-tail.rs diff --git a/src/test/ui/type/type-error-break-tail.stderr b/tests/ui/type/type-error-break-tail.stderr similarity index 100% rename from src/test/ui/type/type-error-break-tail.stderr rename to tests/ui/type/type-error-break-tail.stderr diff --git a/src/test/ui/type/type-mismatch-multiple.rs b/tests/ui/type/type-mismatch-multiple.rs similarity index 100% rename from src/test/ui/type/type-mismatch-multiple.rs rename to tests/ui/type/type-mismatch-multiple.rs diff --git a/src/test/ui/type/type-mismatch-multiple.stderr b/tests/ui/type/type-mismatch-multiple.stderr similarity index 100% rename from src/test/ui/type/type-mismatch-multiple.stderr rename to tests/ui/type/type-mismatch-multiple.stderr diff --git a/src/test/ui/type/type-mismatch-same-crate-name.rs b/tests/ui/type/type-mismatch-same-crate-name.rs similarity index 100% rename from src/test/ui/type/type-mismatch-same-crate-name.rs rename to tests/ui/type/type-mismatch-same-crate-name.rs diff --git a/src/test/ui/type/type-mismatch-same-crate-name.stderr b/tests/ui/type/type-mismatch-same-crate-name.stderr similarity index 100% rename from src/test/ui/type/type-mismatch-same-crate-name.stderr rename to tests/ui/type/type-mismatch-same-crate-name.stderr diff --git a/src/test/ui/type/type-mismatch.rs b/tests/ui/type/type-mismatch.rs similarity index 100% rename from src/test/ui/type/type-mismatch.rs rename to tests/ui/type/type-mismatch.rs diff --git a/src/test/ui/type/type-mismatch.stderr b/tests/ui/type/type-mismatch.stderr similarity index 100% rename from src/test/ui/type/type-mismatch.stderr rename to tests/ui/type/type-mismatch.stderr diff --git a/src/test/ui/type/type-parameter-defaults-referencing-Self-ppaux.rs b/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.rs similarity index 100% rename from src/test/ui/type/type-parameter-defaults-referencing-Self-ppaux.rs rename to tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.rs diff --git a/src/test/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr b/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr similarity index 100% rename from src/test/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr rename to tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr diff --git a/src/test/ui/type/type-parameter-defaults-referencing-Self.rs b/tests/ui/type/type-parameter-defaults-referencing-Self.rs similarity index 100% rename from src/test/ui/type/type-parameter-defaults-referencing-Self.rs rename to tests/ui/type/type-parameter-defaults-referencing-Self.rs diff --git a/src/test/ui/type/type-parameter-defaults-referencing-Self.stderr b/tests/ui/type/type-parameter-defaults-referencing-Self.stderr similarity index 100% rename from src/test/ui/type/type-parameter-defaults-referencing-Self.stderr rename to tests/ui/type/type-parameter-defaults-referencing-Self.stderr diff --git a/src/test/ui/type/type-parameter-names.rs b/tests/ui/type/type-parameter-names.rs similarity index 100% rename from src/test/ui/type/type-parameter-names.rs rename to tests/ui/type/type-parameter-names.rs diff --git a/src/test/ui/type/type-parameter-names.stderr b/tests/ui/type/type-parameter-names.stderr similarity index 100% rename from src/test/ui/type/type-parameter-names.stderr rename to tests/ui/type/type-parameter-names.stderr diff --git a/src/test/ui/type/type-params-in-different-spaces-1.rs b/tests/ui/type/type-params-in-different-spaces-1.rs similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-1.rs rename to tests/ui/type/type-params-in-different-spaces-1.rs diff --git a/src/test/ui/type/type-params-in-different-spaces-1.stderr b/tests/ui/type/type-params-in-different-spaces-1.stderr similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-1.stderr rename to tests/ui/type/type-params-in-different-spaces-1.stderr diff --git a/src/test/ui/type/type-params-in-different-spaces-2.rs b/tests/ui/type/type-params-in-different-spaces-2.rs similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-2.rs rename to tests/ui/type/type-params-in-different-spaces-2.rs diff --git a/src/test/ui/type/type-params-in-different-spaces-2.stderr b/tests/ui/type/type-params-in-different-spaces-2.stderr similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-2.stderr rename to tests/ui/type/type-params-in-different-spaces-2.stderr diff --git a/src/test/ui/type/type-params-in-different-spaces-3.rs b/tests/ui/type/type-params-in-different-spaces-3.rs similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-3.rs rename to tests/ui/type/type-params-in-different-spaces-3.rs diff --git a/src/test/ui/type/type-params-in-different-spaces-3.stderr b/tests/ui/type/type-params-in-different-spaces-3.stderr similarity index 100% rename from src/test/ui/type/type-params-in-different-spaces-3.stderr rename to tests/ui/type/type-params-in-different-spaces-3.stderr diff --git a/src/test/ui/type/type-path-err-node-types.rs b/tests/ui/type/type-path-err-node-types.rs similarity index 100% rename from src/test/ui/type/type-path-err-node-types.rs rename to tests/ui/type/type-path-err-node-types.rs diff --git a/src/test/ui/type/type-path-err-node-types.stderr b/tests/ui/type/type-path-err-node-types.stderr similarity index 100% rename from src/test/ui/type/type-path-err-node-types.stderr rename to tests/ui/type/type-path-err-node-types.stderr diff --git a/src/test/ui/type/type-recursive-box-shadowed.rs b/tests/ui/type/type-recursive-box-shadowed.rs similarity index 100% rename from src/test/ui/type/type-recursive-box-shadowed.rs rename to tests/ui/type/type-recursive-box-shadowed.rs diff --git a/src/test/ui/type/type-recursive-box-shadowed.stderr b/tests/ui/type/type-recursive-box-shadowed.stderr similarity index 100% rename from src/test/ui/type/type-recursive-box-shadowed.stderr rename to tests/ui/type/type-recursive-box-shadowed.stderr diff --git a/src/test/ui/type/type-recursive.rs b/tests/ui/type/type-recursive.rs similarity index 100% rename from src/test/ui/type/type-recursive.rs rename to tests/ui/type/type-recursive.rs diff --git a/src/test/ui/type/type-recursive.stderr b/tests/ui/type/type-recursive.stderr similarity index 100% rename from src/test/ui/type/type-recursive.stderr rename to tests/ui/type/type-recursive.stderr diff --git a/src/test/ui/type/type-shadow.rs b/tests/ui/type/type-shadow.rs similarity index 100% rename from src/test/ui/type/type-shadow.rs rename to tests/ui/type/type-shadow.rs diff --git a/src/test/ui/type/type-shadow.stderr b/tests/ui/type/type-shadow.stderr similarity index 100% rename from src/test/ui/type/type-shadow.stderr rename to tests/ui/type/type-shadow.stderr diff --git a/src/test/ui/type/type-unsatisfiable.rs b/tests/ui/type/type-unsatisfiable.rs similarity index 100% rename from src/test/ui/type/type-unsatisfiable.rs rename to tests/ui/type/type-unsatisfiable.rs diff --git a/src/test/ui/type/type-unsatisfiable.usage.stderr b/tests/ui/type/type-unsatisfiable.usage.stderr similarity index 100% rename from src/test/ui/type/type-unsatisfiable.usage.stderr rename to tests/ui/type/type-unsatisfiable.usage.stderr diff --git a/src/test/ui/type_length_limit.polonius.stderr b/tests/ui/type_length_limit.polonius.stderr similarity index 100% rename from src/test/ui/type_length_limit.polonius.stderr rename to tests/ui/type_length_limit.polonius.stderr diff --git a/src/test/ui/type_length_limit.rs b/tests/ui/type_length_limit.rs similarity index 100% rename from src/test/ui/type_length_limit.rs rename to tests/ui/type_length_limit.rs diff --git a/src/test/ui/type_length_limit.stderr b/tests/ui/type_length_limit.stderr similarity index 100% rename from src/test/ui/type_length_limit.stderr rename to tests/ui/type_length_limit.stderr diff --git a/src/test/ui/typeck/assign-non-lval-derefmut.fixed b/tests/ui/typeck/assign-non-lval-derefmut.fixed similarity index 100% rename from src/test/ui/typeck/assign-non-lval-derefmut.fixed rename to tests/ui/typeck/assign-non-lval-derefmut.fixed diff --git a/src/test/ui/typeck/assign-non-lval-derefmut.rs b/tests/ui/typeck/assign-non-lval-derefmut.rs similarity index 100% rename from src/test/ui/typeck/assign-non-lval-derefmut.rs rename to tests/ui/typeck/assign-non-lval-derefmut.rs diff --git a/src/test/ui/typeck/assign-non-lval-derefmut.stderr b/tests/ui/typeck/assign-non-lval-derefmut.stderr similarity index 100% rename from src/test/ui/typeck/assign-non-lval-derefmut.stderr rename to tests/ui/typeck/assign-non-lval-derefmut.stderr diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.fixed b/tests/ui/typeck/assign-non-lval-mut-ref.fixed similarity index 100% rename from src/test/ui/typeck/assign-non-lval-mut-ref.fixed rename to tests/ui/typeck/assign-non-lval-mut-ref.fixed diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.rs b/tests/ui/typeck/assign-non-lval-mut-ref.rs similarity index 100% rename from src/test/ui/typeck/assign-non-lval-mut-ref.rs rename to tests/ui/typeck/assign-non-lval-mut-ref.rs diff --git a/src/test/ui/typeck/assign-non-lval-mut-ref.stderr b/tests/ui/typeck/assign-non-lval-mut-ref.stderr similarity index 100% rename from src/test/ui/typeck/assign-non-lval-mut-ref.stderr rename to tests/ui/typeck/assign-non-lval-mut-ref.stderr diff --git a/src/test/ui/typeck/assign-non-lval-needs-deref.rs b/tests/ui/typeck/assign-non-lval-needs-deref.rs similarity index 100% rename from src/test/ui/typeck/assign-non-lval-needs-deref.rs rename to tests/ui/typeck/assign-non-lval-needs-deref.rs diff --git a/src/test/ui/typeck/assign-non-lval-needs-deref.stderr b/tests/ui/typeck/assign-non-lval-needs-deref.stderr similarity index 100% rename from src/test/ui/typeck/assign-non-lval-needs-deref.stderr rename to tests/ui/typeck/assign-non-lval-needs-deref.stderr diff --git a/src/test/ui/typeck/autoderef-with-param-env-error.rs b/tests/ui/typeck/autoderef-with-param-env-error.rs similarity index 100% rename from src/test/ui/typeck/autoderef-with-param-env-error.rs rename to tests/ui/typeck/autoderef-with-param-env-error.rs diff --git a/src/test/ui/typeck/autoderef-with-param-env-error.stderr b/tests/ui/typeck/autoderef-with-param-env-error.stderr similarity index 100% rename from src/test/ui/typeck/autoderef-with-param-env-error.stderr rename to tests/ui/typeck/autoderef-with-param-env-error.stderr diff --git a/src/test/ui/typeck/auxiliary/issue-36708.rs b/tests/ui/typeck/auxiliary/issue-36708.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/issue-36708.rs rename to tests/ui/typeck/auxiliary/issue-36708.rs diff --git a/src/test/ui/typeck/auxiliary/issue-81943-lib.rs b/tests/ui/typeck/auxiliary/issue-81943-lib.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/issue-81943-lib.rs rename to tests/ui/typeck/auxiliary/issue-81943-lib.rs diff --git a/src/test/ui/typeck/auxiliary/tdticc_coherence_lib.rs b/tests/ui/typeck/auxiliary/tdticc_coherence_lib.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/tdticc_coherence_lib.rs rename to tests/ui/typeck/auxiliary/tdticc_coherence_lib.rs diff --git a/src/test/ui/typeck/auxiliary/xcrate-issue-43189-a.rs b/tests/ui/typeck/auxiliary/xcrate-issue-43189-a.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/xcrate-issue-43189-a.rs rename to tests/ui/typeck/auxiliary/xcrate-issue-43189-a.rs diff --git a/src/test/ui/typeck/auxiliary/xcrate-issue-43189-b.rs b/tests/ui/typeck/auxiliary/xcrate-issue-43189-b.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/xcrate-issue-43189-b.rs rename to tests/ui/typeck/auxiliary/xcrate-issue-43189-b.rs diff --git a/src/test/ui/typeck/auxiliary/xcrate-issue-46112-rexport-core.rs b/tests/ui/typeck/auxiliary/xcrate-issue-46112-rexport-core.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/xcrate-issue-46112-rexport-core.rs rename to tests/ui/typeck/auxiliary/xcrate-issue-46112-rexport-core.rs diff --git a/src/test/ui/typeck/auxiliary/xcrate-issue-61711-b.rs b/tests/ui/typeck/auxiliary/xcrate-issue-61711-b.rs similarity index 100% rename from src/test/ui/typeck/auxiliary/xcrate-issue-61711-b.rs rename to tests/ui/typeck/auxiliary/xcrate-issue-61711-b.rs diff --git a/src/test/ui/typeck/call-block.rs b/tests/ui/typeck/call-block.rs similarity index 100% rename from src/test/ui/typeck/call-block.rs rename to tests/ui/typeck/call-block.rs diff --git a/src/test/ui/typeck/call-block.stderr b/tests/ui/typeck/call-block.stderr similarity index 100% rename from src/test/ui/typeck/call-block.stderr rename to tests/ui/typeck/call-block.stderr diff --git a/src/test/ui/typeck/check-args-on-fn-err-2.rs b/tests/ui/typeck/check-args-on-fn-err-2.rs similarity index 100% rename from src/test/ui/typeck/check-args-on-fn-err-2.rs rename to tests/ui/typeck/check-args-on-fn-err-2.rs diff --git a/src/test/ui/typeck/check-args-on-fn-err-2.stderr b/tests/ui/typeck/check-args-on-fn-err-2.stderr similarity index 100% rename from src/test/ui/typeck/check-args-on-fn-err-2.stderr rename to tests/ui/typeck/check-args-on-fn-err-2.stderr diff --git a/src/test/ui/typeck/check-args-on-fn-err.rs b/tests/ui/typeck/check-args-on-fn-err.rs similarity index 100% rename from src/test/ui/typeck/check-args-on-fn-err.rs rename to tests/ui/typeck/check-args-on-fn-err.rs diff --git a/src/test/ui/typeck/check-args-on-fn-err.stderr b/tests/ui/typeck/check-args-on-fn-err.stderr similarity index 100% rename from src/test/ui/typeck/check-args-on-fn-err.stderr rename to tests/ui/typeck/check-args-on-fn-err.stderr diff --git a/src/test/ui/typeck/conversion-methods.rs b/tests/ui/typeck/conversion-methods.rs similarity index 100% rename from src/test/ui/typeck/conversion-methods.rs rename to tests/ui/typeck/conversion-methods.rs diff --git a/src/test/ui/typeck/conversion-methods.stderr b/tests/ui/typeck/conversion-methods.stderr similarity index 100% rename from src/test/ui/typeck/conversion-methods.stderr rename to tests/ui/typeck/conversion-methods.stderr diff --git a/src/test/ui/typeck/deref-multi.rs b/tests/ui/typeck/deref-multi.rs similarity index 100% rename from src/test/ui/typeck/deref-multi.rs rename to tests/ui/typeck/deref-multi.rs diff --git a/src/test/ui/typeck/deref-multi.stderr b/tests/ui/typeck/deref-multi.stderr similarity index 100% rename from src/test/ui/typeck/deref-multi.stderr rename to tests/ui/typeck/deref-multi.stderr diff --git a/src/test/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.rs b/tests/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.rs similarity index 100% rename from src/test/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.rs rename to tests/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.rs diff --git a/src/test/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.stderr b/tests/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.stderr similarity index 100% rename from src/test/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.stderr rename to tests/ui/typeck/do-not-suggest-adding-missing-zero-to-floating-point-number.stderr diff --git a/src/test/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.rs b/tests/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.rs similarity index 100% rename from src/test/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.rs rename to tests/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.rs diff --git a/src/test/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.stderr b/tests/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.stderr similarity index 100% rename from src/test/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.stderr rename to tests/ui/typeck/do-not-suggest-placeholder-to-const-static-without-type.stderr diff --git a/src/test/ui/typeck/explain_clone_autoref.rs b/tests/ui/typeck/explain_clone_autoref.rs similarity index 100% rename from src/test/ui/typeck/explain_clone_autoref.rs rename to tests/ui/typeck/explain_clone_autoref.rs diff --git a/src/test/ui/typeck/explain_clone_autoref.stderr b/tests/ui/typeck/explain_clone_autoref.stderr similarity index 100% rename from src/test/ui/typeck/explain_clone_autoref.stderr rename to tests/ui/typeck/explain_clone_autoref.stderr diff --git a/src/test/ui/typeck/issue-100164.fixed b/tests/ui/typeck/issue-100164.fixed similarity index 100% rename from src/test/ui/typeck/issue-100164.fixed rename to tests/ui/typeck/issue-100164.fixed diff --git a/src/test/ui/typeck/issue-100164.rs b/tests/ui/typeck/issue-100164.rs similarity index 100% rename from src/test/ui/typeck/issue-100164.rs rename to tests/ui/typeck/issue-100164.rs diff --git a/src/test/ui/typeck/issue-100164.stderr b/tests/ui/typeck/issue-100164.stderr similarity index 100% rename from src/test/ui/typeck/issue-100164.stderr rename to tests/ui/typeck/issue-100164.stderr diff --git a/src/test/ui/typeck/issue-100246.rs b/tests/ui/typeck/issue-100246.rs similarity index 100% rename from src/test/ui/typeck/issue-100246.rs rename to tests/ui/typeck/issue-100246.rs diff --git a/src/test/ui/typeck/issue-100246.stderr b/tests/ui/typeck/issue-100246.stderr similarity index 100% rename from src/test/ui/typeck/issue-100246.stderr rename to tests/ui/typeck/issue-100246.stderr diff --git a/src/test/ui/typeck/issue-100285.rs b/tests/ui/typeck/issue-100285.rs similarity index 100% rename from src/test/ui/typeck/issue-100285.rs rename to tests/ui/typeck/issue-100285.rs diff --git a/src/test/ui/typeck/issue-100285.stderr b/tests/ui/typeck/issue-100285.stderr similarity index 100% rename from src/test/ui/typeck/issue-100285.stderr rename to tests/ui/typeck/issue-100285.stderr diff --git a/src/test/ui/typeck/issue-103899.rs b/tests/ui/typeck/issue-103899.rs similarity index 100% rename from src/test/ui/typeck/issue-103899.rs rename to tests/ui/typeck/issue-103899.rs diff --git a/src/test/ui/typeck/issue-10401.rs b/tests/ui/typeck/issue-10401.rs similarity index 100% rename from src/test/ui/typeck/issue-10401.rs rename to tests/ui/typeck/issue-10401.rs diff --git a/src/test/ui/typeck/issue-10401.stderr b/tests/ui/typeck/issue-10401.stderr similarity index 100% rename from src/test/ui/typeck/issue-10401.stderr rename to tests/ui/typeck/issue-10401.stderr diff --git a/src/test/ui/typeck/issue-104510-ice.rs b/tests/ui/typeck/issue-104510-ice.rs similarity index 100% rename from src/test/ui/typeck/issue-104510-ice.rs rename to tests/ui/typeck/issue-104510-ice.rs diff --git a/src/test/ui/typeck/issue-104510-ice.stderr b/tests/ui/typeck/issue-104510-ice.stderr similarity index 100% rename from src/test/ui/typeck/issue-104510-ice.stderr rename to tests/ui/typeck/issue-104510-ice.stderr diff --git a/src/test/ui/typeck/issue-104513-ice.rs b/tests/ui/typeck/issue-104513-ice.rs similarity index 100% rename from src/test/ui/typeck/issue-104513-ice.rs rename to tests/ui/typeck/issue-104513-ice.rs diff --git a/src/test/ui/typeck/issue-104513-ice.stderr b/tests/ui/typeck/issue-104513-ice.stderr similarity index 100% rename from src/test/ui/typeck/issue-104513-ice.stderr rename to tests/ui/typeck/issue-104513-ice.stderr diff --git a/src/test/ui/typeck/issue-104582.rs b/tests/ui/typeck/issue-104582.rs similarity index 100% rename from src/test/ui/typeck/issue-104582.rs rename to tests/ui/typeck/issue-104582.rs diff --git a/src/test/ui/typeck/issue-104582.stderr b/tests/ui/typeck/issue-104582.stderr similarity index 100% rename from src/test/ui/typeck/issue-104582.stderr rename to tests/ui/typeck/issue-104582.stderr diff --git a/src/test/ui/typeck/issue-105946.rs b/tests/ui/typeck/issue-105946.rs similarity index 100% rename from src/test/ui/typeck/issue-105946.rs rename to tests/ui/typeck/issue-105946.rs diff --git a/src/test/ui/typeck/issue-105946.stderr b/tests/ui/typeck/issue-105946.stderr similarity index 100% rename from src/test/ui/typeck/issue-105946.stderr rename to tests/ui/typeck/issue-105946.stderr diff --git a/src/test/ui/typeck/issue-10969.rs b/tests/ui/typeck/issue-10969.rs similarity index 100% rename from src/test/ui/typeck/issue-10969.rs rename to tests/ui/typeck/issue-10969.rs diff --git a/src/test/ui/typeck/issue-10969.stderr b/tests/ui/typeck/issue-10969.stderr similarity index 100% rename from src/test/ui/typeck/issue-10969.stderr rename to tests/ui/typeck/issue-10969.stderr diff --git a/src/test/ui/typeck/issue-13853-2.rs b/tests/ui/typeck/issue-13853-2.rs similarity index 100% rename from src/test/ui/typeck/issue-13853-2.rs rename to tests/ui/typeck/issue-13853-2.rs diff --git a/src/test/ui/typeck/issue-13853-2.stderr b/tests/ui/typeck/issue-13853-2.stderr similarity index 100% rename from src/test/ui/typeck/issue-13853-2.stderr rename to tests/ui/typeck/issue-13853-2.stderr diff --git a/src/test/ui/typeck/issue-13853-5.rs b/tests/ui/typeck/issue-13853-5.rs similarity index 100% rename from src/test/ui/typeck/issue-13853-5.rs rename to tests/ui/typeck/issue-13853-5.rs diff --git a/src/test/ui/typeck/issue-13853-5.stderr b/tests/ui/typeck/issue-13853-5.stderr similarity index 100% rename from src/test/ui/typeck/issue-13853-5.stderr rename to tests/ui/typeck/issue-13853-5.stderr diff --git a/src/test/ui/typeck/issue-13853.rs b/tests/ui/typeck/issue-13853.rs similarity index 100% rename from src/test/ui/typeck/issue-13853.rs rename to tests/ui/typeck/issue-13853.rs diff --git a/src/test/ui/typeck/issue-13853.stderr b/tests/ui/typeck/issue-13853.stderr similarity index 100% rename from src/test/ui/typeck/issue-13853.stderr rename to tests/ui/typeck/issue-13853.stderr diff --git a/src/test/ui/typeck/issue-18937-1.rs b/tests/ui/typeck/issue-18937-1.rs similarity index 100% rename from src/test/ui/typeck/issue-18937-1.rs rename to tests/ui/typeck/issue-18937-1.rs diff --git a/src/test/ui/typeck/issue-18937.rs b/tests/ui/typeck/issue-18937.rs similarity index 100% rename from src/test/ui/typeck/issue-18937.rs rename to tests/ui/typeck/issue-18937.rs diff --git a/src/test/ui/typeck/issue-18937.stderr b/tests/ui/typeck/issue-18937.stderr similarity index 100% rename from src/test/ui/typeck/issue-18937.stderr rename to tests/ui/typeck/issue-18937.stderr diff --git a/src/test/ui/typeck/issue-22375.rs b/tests/ui/typeck/issue-22375.rs similarity index 100% rename from src/test/ui/typeck/issue-22375.rs rename to tests/ui/typeck/issue-22375.rs diff --git a/src/test/ui/typeck/issue-29124.rs b/tests/ui/typeck/issue-29124.rs similarity index 100% rename from src/test/ui/typeck/issue-29124.rs rename to tests/ui/typeck/issue-29124.rs diff --git a/src/test/ui/typeck/issue-29124.stderr b/tests/ui/typeck/issue-29124.stderr similarity index 100% rename from src/test/ui/typeck/issue-29124.stderr rename to tests/ui/typeck/issue-29124.stderr diff --git a/src/test/ui/typeck/issue-31173.rs b/tests/ui/typeck/issue-31173.rs similarity index 100% rename from src/test/ui/typeck/issue-31173.rs rename to tests/ui/typeck/issue-31173.rs diff --git a/src/test/ui/typeck/issue-31173.stderr b/tests/ui/typeck/issue-31173.stderr similarity index 100% rename from src/test/ui/typeck/issue-31173.stderr rename to tests/ui/typeck/issue-31173.stderr diff --git a/src/test/ui/typeck/issue-33575.rs b/tests/ui/typeck/issue-33575.rs similarity index 100% rename from src/test/ui/typeck/issue-33575.rs rename to tests/ui/typeck/issue-33575.rs diff --git a/src/test/ui/typeck/issue-33575.stderr b/tests/ui/typeck/issue-33575.stderr similarity index 100% rename from src/test/ui/typeck/issue-33575.stderr rename to tests/ui/typeck/issue-33575.stderr diff --git a/src/test/ui/typeck/issue-36708.rs b/tests/ui/typeck/issue-36708.rs similarity index 100% rename from src/test/ui/typeck/issue-36708.rs rename to tests/ui/typeck/issue-36708.rs diff --git a/src/test/ui/typeck/issue-36708.stderr b/tests/ui/typeck/issue-36708.stderr similarity index 100% rename from src/test/ui/typeck/issue-36708.stderr rename to tests/ui/typeck/issue-36708.stderr diff --git a/src/test/ui/typeck/issue-43189.rs b/tests/ui/typeck/issue-43189.rs similarity index 100% rename from src/test/ui/typeck/issue-43189.rs rename to tests/ui/typeck/issue-43189.rs diff --git a/src/test/ui/typeck/issue-43189.stderr b/tests/ui/typeck/issue-43189.stderr similarity index 100% rename from src/test/ui/typeck/issue-43189.stderr rename to tests/ui/typeck/issue-43189.stderr diff --git a/src/test/ui/typeck/issue-46112.rs b/tests/ui/typeck/issue-46112.rs similarity index 100% rename from src/test/ui/typeck/issue-46112.rs rename to tests/ui/typeck/issue-46112.rs diff --git a/src/test/ui/typeck/issue-46112.stderr b/tests/ui/typeck/issue-46112.stderr similarity index 100% rename from src/test/ui/typeck/issue-46112.stderr rename to tests/ui/typeck/issue-46112.stderr diff --git a/src/test/ui/typeck/issue-50687-ice-on-borrow.rs b/tests/ui/typeck/issue-50687-ice-on-borrow.rs similarity index 100% rename from src/test/ui/typeck/issue-50687-ice-on-borrow.rs rename to tests/ui/typeck/issue-50687-ice-on-borrow.rs diff --git a/src/test/ui/typeck/issue-50687-ice-on-borrow.stderr b/tests/ui/typeck/issue-50687-ice-on-borrow.stderr similarity index 100% rename from src/test/ui/typeck/issue-50687-ice-on-borrow.stderr rename to tests/ui/typeck/issue-50687-ice-on-borrow.stderr diff --git a/src/test/ui/typeck/issue-52082-type-param-shadows-existing-type.rs b/tests/ui/typeck/issue-52082-type-param-shadows-existing-type.rs similarity index 100% rename from src/test/ui/typeck/issue-52082-type-param-shadows-existing-type.rs rename to tests/ui/typeck/issue-52082-type-param-shadows-existing-type.rs diff --git a/src/test/ui/typeck/issue-52082-type-param-shadows-existing-type.stderr b/tests/ui/typeck/issue-52082-type-param-shadows-existing-type.stderr similarity index 100% rename from src/test/ui/typeck/issue-52082-type-param-shadows-existing-type.stderr rename to tests/ui/typeck/issue-52082-type-param-shadows-existing-type.stderr diff --git a/src/test/ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs b/tests/ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs similarity index 100% rename from src/test/ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs rename to tests/ui/typeck/issue-55810-must-typeck-match-pats-before-guards.rs diff --git a/src/test/ui/typeck/issue-57404.rs b/tests/ui/typeck/issue-57404.rs similarity index 100% rename from src/test/ui/typeck/issue-57404.rs rename to tests/ui/typeck/issue-57404.rs diff --git a/src/test/ui/typeck/issue-57404.stderr b/tests/ui/typeck/issue-57404.stderr similarity index 100% rename from src/test/ui/typeck/issue-57404.stderr rename to tests/ui/typeck/issue-57404.stderr diff --git a/src/test/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs b/tests/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs similarity index 100% rename from src/test/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs rename to tests/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.rs diff --git a/src/test/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.stderr b/tests/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.stderr similarity index 100% rename from src/test/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.stderr rename to tests/ui/typeck/issue-57673-ice-on-deref-of-boxed-trait.stderr diff --git a/src/test/ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs b/tests/ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs similarity index 100% rename from src/test/ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs rename to tests/ui/typeck/issue-61711-once-caused-rustc-inf-loop.rs diff --git a/src/test/ui/typeck/issue-65611.rs b/tests/ui/typeck/issue-65611.rs similarity index 100% rename from src/test/ui/typeck/issue-65611.rs rename to tests/ui/typeck/issue-65611.rs diff --git a/src/test/ui/typeck/issue-65611.stderr b/tests/ui/typeck/issue-65611.stderr similarity index 100% rename from src/test/ui/typeck/issue-65611.stderr rename to tests/ui/typeck/issue-65611.stderr diff --git a/src/test/ui/typeck/issue-67971.rs b/tests/ui/typeck/issue-67971.rs similarity index 100% rename from src/test/ui/typeck/issue-67971.rs rename to tests/ui/typeck/issue-67971.rs diff --git a/src/test/ui/typeck/issue-67971.stderr b/tests/ui/typeck/issue-67971.stderr similarity index 100% rename from src/test/ui/typeck/issue-67971.stderr rename to tests/ui/typeck/issue-67971.stderr diff --git a/src/test/ui/typeck/issue-68590-reborrow-through-derefmut.rs b/tests/ui/typeck/issue-68590-reborrow-through-derefmut.rs similarity index 100% rename from src/test/ui/typeck/issue-68590-reborrow-through-derefmut.rs rename to tests/ui/typeck/issue-68590-reborrow-through-derefmut.rs diff --git a/src/test/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs b/tests/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs similarity index 100% rename from src/test/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs rename to tests/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.rs diff --git a/src/test/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.stderr b/tests/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.stderr similarity index 100% rename from src/test/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.stderr rename to tests/ui/typeck/issue-69378-ice-on-invalid-type-node-after-recovery.stderr diff --git a/src/test/ui/typeck/issue-72225-call-fnmut-through-derefmut.rs b/tests/ui/typeck/issue-72225-call-fnmut-through-derefmut.rs similarity index 100% rename from src/test/ui/typeck/issue-72225-call-fnmut-through-derefmut.rs rename to tests/ui/typeck/issue-72225-call-fnmut-through-derefmut.rs diff --git a/src/test/ui/typeck/issue-73592-borrow_mut-through-deref.fixed b/tests/ui/typeck/issue-73592-borrow_mut-through-deref.fixed similarity index 100% rename from src/test/ui/typeck/issue-73592-borrow_mut-through-deref.fixed rename to tests/ui/typeck/issue-73592-borrow_mut-through-deref.fixed diff --git a/src/test/ui/typeck/issue-73592-borrow_mut-through-deref.rs b/tests/ui/typeck/issue-73592-borrow_mut-through-deref.rs similarity index 100% rename from src/test/ui/typeck/issue-73592-borrow_mut-through-deref.rs rename to tests/ui/typeck/issue-73592-borrow_mut-through-deref.rs diff --git a/src/test/ui/typeck/issue-73592-borrow_mut-through-deref.stderr b/tests/ui/typeck/issue-73592-borrow_mut-through-deref.stderr similarity index 100% rename from src/test/ui/typeck/issue-73592-borrow_mut-through-deref.stderr rename to tests/ui/typeck/issue-73592-borrow_mut-through-deref.stderr diff --git a/src/test/ui/typeck/issue-74086.rs b/tests/ui/typeck/issue-74086.rs similarity index 100% rename from src/test/ui/typeck/issue-74086.rs rename to tests/ui/typeck/issue-74086.rs diff --git a/src/test/ui/typeck/issue-74086.stderr b/tests/ui/typeck/issue-74086.stderr similarity index 100% rename from src/test/ui/typeck/issue-74086.stderr rename to tests/ui/typeck/issue-74086.stderr diff --git a/src/test/ui/typeck/issue-74933.rs b/tests/ui/typeck/issue-74933.rs similarity index 100% rename from src/test/ui/typeck/issue-74933.rs rename to tests/ui/typeck/issue-74933.rs diff --git a/src/test/ui/typeck/issue-75883.rs b/tests/ui/typeck/issue-75883.rs similarity index 100% rename from src/test/ui/typeck/issue-75883.rs rename to tests/ui/typeck/issue-75883.rs diff --git a/src/test/ui/typeck/issue-75883.stderr b/tests/ui/typeck/issue-75883.stderr similarity index 100% rename from src/test/ui/typeck/issue-75883.stderr rename to tests/ui/typeck/issue-75883.stderr diff --git a/src/test/ui/typeck/issue-75889.rs b/tests/ui/typeck/issue-75889.rs similarity index 100% rename from src/test/ui/typeck/issue-75889.rs rename to tests/ui/typeck/issue-75889.rs diff --git a/src/test/ui/typeck/issue-75889.stderr b/tests/ui/typeck/issue-75889.stderr similarity index 100% rename from src/test/ui/typeck/issue-75889.stderr rename to tests/ui/typeck/issue-75889.stderr diff --git a/src/test/ui/typeck/issue-79040.rs b/tests/ui/typeck/issue-79040.rs similarity index 100% rename from src/test/ui/typeck/issue-79040.rs rename to tests/ui/typeck/issue-79040.rs diff --git a/src/test/ui/typeck/issue-79040.stderr b/tests/ui/typeck/issue-79040.stderr similarity index 100% rename from src/test/ui/typeck/issue-79040.stderr rename to tests/ui/typeck/issue-79040.stderr diff --git a/src/test/ui/typeck/issue-80207-unsized-return.rs b/tests/ui/typeck/issue-80207-unsized-return.rs similarity index 100% rename from src/test/ui/typeck/issue-80207-unsized-return.rs rename to tests/ui/typeck/issue-80207-unsized-return.rs diff --git a/src/test/ui/typeck/issue-80779.rs b/tests/ui/typeck/issue-80779.rs similarity index 100% rename from src/test/ui/typeck/issue-80779.rs rename to tests/ui/typeck/issue-80779.rs diff --git a/src/test/ui/typeck/issue-80779.stderr b/tests/ui/typeck/issue-80779.stderr similarity index 100% rename from src/test/ui/typeck/issue-80779.stderr rename to tests/ui/typeck/issue-80779.stderr diff --git a/src/test/ui/typeck/issue-81293.rs b/tests/ui/typeck/issue-81293.rs similarity index 100% rename from src/test/ui/typeck/issue-81293.rs rename to tests/ui/typeck/issue-81293.rs diff --git a/src/test/ui/typeck/issue-81293.stderr b/tests/ui/typeck/issue-81293.stderr similarity index 100% rename from src/test/ui/typeck/issue-81293.stderr rename to tests/ui/typeck/issue-81293.stderr diff --git a/src/test/ui/typeck/issue-81885.rs b/tests/ui/typeck/issue-81885.rs similarity index 100% rename from src/test/ui/typeck/issue-81885.rs rename to tests/ui/typeck/issue-81885.rs diff --git a/src/test/ui/typeck/issue-81885.stderr b/tests/ui/typeck/issue-81885.stderr similarity index 100% rename from src/test/ui/typeck/issue-81885.stderr rename to tests/ui/typeck/issue-81885.stderr diff --git a/src/test/ui/typeck/issue-81943.rs b/tests/ui/typeck/issue-81943.rs similarity index 100% rename from src/test/ui/typeck/issue-81943.rs rename to tests/ui/typeck/issue-81943.rs diff --git a/src/test/ui/typeck/issue-81943.stderr b/tests/ui/typeck/issue-81943.stderr similarity index 100% rename from src/test/ui/typeck/issue-81943.stderr rename to tests/ui/typeck/issue-81943.stderr diff --git a/src/test/ui/typeck/issue-82772.rs b/tests/ui/typeck/issue-82772.rs similarity index 100% rename from src/test/ui/typeck/issue-82772.rs rename to tests/ui/typeck/issue-82772.rs diff --git a/src/test/ui/typeck/issue-82772.stderr b/tests/ui/typeck/issue-82772.stderr similarity index 100% rename from src/test/ui/typeck/issue-82772.stderr rename to tests/ui/typeck/issue-82772.stderr diff --git a/src/test/ui/typeck/issue-83621-placeholder-static-in-extern.rs b/tests/ui/typeck/issue-83621-placeholder-static-in-extern.rs similarity index 100% rename from src/test/ui/typeck/issue-83621-placeholder-static-in-extern.rs rename to tests/ui/typeck/issue-83621-placeholder-static-in-extern.rs diff --git a/src/test/ui/typeck/issue-83621-placeholder-static-in-extern.stderr b/tests/ui/typeck/issue-83621-placeholder-static-in-extern.stderr similarity index 100% rename from src/test/ui/typeck/issue-83621-placeholder-static-in-extern.stderr rename to tests/ui/typeck/issue-83621-placeholder-static-in-extern.stderr diff --git a/src/test/ui/typeck/issue-83693.rs b/tests/ui/typeck/issue-83693.rs similarity index 100% rename from src/test/ui/typeck/issue-83693.rs rename to tests/ui/typeck/issue-83693.rs diff --git a/src/test/ui/typeck/issue-83693.stderr b/tests/ui/typeck/issue-83693.stderr similarity index 100% rename from src/test/ui/typeck/issue-83693.stderr rename to tests/ui/typeck/issue-83693.stderr diff --git a/src/test/ui/typeck/issue-84160.rs b/tests/ui/typeck/issue-84160.rs similarity index 100% rename from src/test/ui/typeck/issue-84160.rs rename to tests/ui/typeck/issue-84160.rs diff --git a/src/test/ui/typeck/issue-84160.stderr b/tests/ui/typeck/issue-84160.stderr similarity index 100% rename from src/test/ui/typeck/issue-84160.stderr rename to tests/ui/typeck/issue-84160.stderr diff --git a/src/test/ui/typeck/issue-84768.rs b/tests/ui/typeck/issue-84768.rs similarity index 100% rename from src/test/ui/typeck/issue-84768.rs rename to tests/ui/typeck/issue-84768.rs diff --git a/src/test/ui/typeck/issue-84768.stderr b/tests/ui/typeck/issue-84768.stderr similarity index 100% rename from src/test/ui/typeck/issue-84768.stderr rename to tests/ui/typeck/issue-84768.stderr diff --git a/src/test/ui/typeck/issue-84831.rs b/tests/ui/typeck/issue-84831.rs similarity index 100% rename from src/test/ui/typeck/issue-84831.rs rename to tests/ui/typeck/issue-84831.rs diff --git a/src/test/ui/typeck/issue-84831.stderr b/tests/ui/typeck/issue-84831.stderr similarity index 100% rename from src/test/ui/typeck/issue-84831.stderr rename to tests/ui/typeck/issue-84831.stderr diff --git a/src/test/ui/typeck/issue-86721-return-expr-ice.rev1.stderr b/tests/ui/typeck/issue-86721-return-expr-ice.rev1.stderr similarity index 100% rename from src/test/ui/typeck/issue-86721-return-expr-ice.rev1.stderr rename to tests/ui/typeck/issue-86721-return-expr-ice.rev1.stderr diff --git a/src/test/ui/typeck/issue-86721-return-expr-ice.rev2.stderr b/tests/ui/typeck/issue-86721-return-expr-ice.rev2.stderr similarity index 100% rename from src/test/ui/typeck/issue-86721-return-expr-ice.rev2.stderr rename to tests/ui/typeck/issue-86721-return-expr-ice.rev2.stderr diff --git a/src/test/ui/typeck/issue-86721-return-expr-ice.rs b/tests/ui/typeck/issue-86721-return-expr-ice.rs similarity index 100% rename from src/test/ui/typeck/issue-86721-return-expr-ice.rs rename to tests/ui/typeck/issue-86721-return-expr-ice.rs diff --git a/src/test/ui/typeck/issue-87181/empty-tuple-method.rs b/tests/ui/typeck/issue-87181/empty-tuple-method.rs similarity index 100% rename from src/test/ui/typeck/issue-87181/empty-tuple-method.rs rename to tests/ui/typeck/issue-87181/empty-tuple-method.rs diff --git a/src/test/ui/typeck/issue-87181/empty-tuple-method.stderr b/tests/ui/typeck/issue-87181/empty-tuple-method.stderr similarity index 100% rename from src/test/ui/typeck/issue-87181/empty-tuple-method.stderr rename to tests/ui/typeck/issue-87181/empty-tuple-method.stderr diff --git a/src/test/ui/typeck/issue-87181/enum-variant.rs b/tests/ui/typeck/issue-87181/enum-variant.rs similarity index 100% rename from src/test/ui/typeck/issue-87181/enum-variant.rs rename to tests/ui/typeck/issue-87181/enum-variant.rs diff --git a/src/test/ui/typeck/issue-87181/enum-variant.stderr b/tests/ui/typeck/issue-87181/enum-variant.stderr similarity index 100% rename from src/test/ui/typeck/issue-87181/enum-variant.stderr rename to tests/ui/typeck/issue-87181/enum-variant.stderr diff --git a/src/test/ui/typeck/issue-87181/tuple-field.rs b/tests/ui/typeck/issue-87181/tuple-field.rs similarity index 100% rename from src/test/ui/typeck/issue-87181/tuple-field.rs rename to tests/ui/typeck/issue-87181/tuple-field.rs diff --git a/src/test/ui/typeck/issue-87181/tuple-field.stderr b/tests/ui/typeck/issue-87181/tuple-field.stderr similarity index 100% rename from src/test/ui/typeck/issue-87181/tuple-field.stderr rename to tests/ui/typeck/issue-87181/tuple-field.stderr diff --git a/src/test/ui/typeck/issue-87181/tuple-method.rs b/tests/ui/typeck/issue-87181/tuple-method.rs similarity index 100% rename from src/test/ui/typeck/issue-87181/tuple-method.rs rename to tests/ui/typeck/issue-87181/tuple-method.rs diff --git a/src/test/ui/typeck/issue-87181/tuple-method.stderr b/tests/ui/typeck/issue-87181/tuple-method.stderr similarity index 100% rename from src/test/ui/typeck/issue-87181/tuple-method.stderr rename to tests/ui/typeck/issue-87181/tuple-method.stderr diff --git a/src/test/ui/typeck/issue-87771-ice-assign-assign-to-bool.rs b/tests/ui/typeck/issue-87771-ice-assign-assign-to-bool.rs similarity index 100% rename from src/test/ui/typeck/issue-87771-ice-assign-assign-to-bool.rs rename to tests/ui/typeck/issue-87771-ice-assign-assign-to-bool.rs diff --git a/src/test/ui/typeck/issue-87771-ice-assign-assign-to-bool.stderr b/tests/ui/typeck/issue-87771-ice-assign-assign-to-bool.stderr similarity index 100% rename from src/test/ui/typeck/issue-87771-ice-assign-assign-to-bool.stderr rename to tests/ui/typeck/issue-87771-ice-assign-assign-to-bool.stderr diff --git a/src/test/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs b/tests/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs similarity index 100% rename from src/test/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs rename to tests/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs diff --git a/src/test/ui/typeck/issue-87872-missing-inaccessible-field-literal.stderr b/tests/ui/typeck/issue-87872-missing-inaccessible-field-literal.stderr similarity index 100% rename from src/test/ui/typeck/issue-87872-missing-inaccessible-field-literal.stderr rename to tests/ui/typeck/issue-87872-missing-inaccessible-field-literal.stderr diff --git a/src/test/ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs b/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs similarity index 100% rename from src/test/ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs rename to tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.rs diff --git a/src/test/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr b/tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr similarity index 100% rename from src/test/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr rename to tests/ui/typeck/issue-87872-missing-inaccessible-field-pattern.stderr diff --git a/src/test/ui/typeck/issue-87935-unsized-box-expr.rs b/tests/ui/typeck/issue-87935-unsized-box-expr.rs similarity index 100% rename from src/test/ui/typeck/issue-87935-unsized-box-expr.rs rename to tests/ui/typeck/issue-87935-unsized-box-expr.rs diff --git a/src/test/ui/typeck/issue-87935-unsized-box-expr.stderr b/tests/ui/typeck/issue-87935-unsized-box-expr.stderr similarity index 100% rename from src/test/ui/typeck/issue-87935-unsized-box-expr.stderr rename to tests/ui/typeck/issue-87935-unsized-box-expr.stderr diff --git a/src/test/ui/typeck/issue-88609.rs b/tests/ui/typeck/issue-88609.rs similarity index 100% rename from src/test/ui/typeck/issue-88609.rs rename to tests/ui/typeck/issue-88609.rs diff --git a/src/test/ui/typeck/issue-88643.rs b/tests/ui/typeck/issue-88643.rs similarity index 100% rename from src/test/ui/typeck/issue-88643.rs rename to tests/ui/typeck/issue-88643.rs diff --git a/src/test/ui/typeck/issue-88643.stderr b/tests/ui/typeck/issue-88643.stderr similarity index 100% rename from src/test/ui/typeck/issue-88643.stderr rename to tests/ui/typeck/issue-88643.stderr diff --git a/src/test/ui/typeck/issue-88803-call-expr-method.fixed b/tests/ui/typeck/issue-88803-call-expr-method.fixed similarity index 100% rename from src/test/ui/typeck/issue-88803-call-expr-method.fixed rename to tests/ui/typeck/issue-88803-call-expr-method.fixed diff --git a/src/test/ui/typeck/issue-88803-call-expr-method.rs b/tests/ui/typeck/issue-88803-call-expr-method.rs similarity index 100% rename from src/test/ui/typeck/issue-88803-call-expr-method.rs rename to tests/ui/typeck/issue-88803-call-expr-method.rs diff --git a/src/test/ui/typeck/issue-88803-call-expr-method.stderr b/tests/ui/typeck/issue-88803-call-expr-method.stderr similarity index 100% rename from src/test/ui/typeck/issue-88803-call-expr-method.stderr rename to tests/ui/typeck/issue-88803-call-expr-method.stderr diff --git a/src/test/ui/typeck/issue-88844.rs b/tests/ui/typeck/issue-88844.rs similarity index 100% rename from src/test/ui/typeck/issue-88844.rs rename to tests/ui/typeck/issue-88844.rs diff --git a/src/test/ui/typeck/issue-88844.stderr b/tests/ui/typeck/issue-88844.stderr similarity index 100% rename from src/test/ui/typeck/issue-88844.stderr rename to tests/ui/typeck/issue-88844.stderr diff --git a/src/test/ui/typeck/issue-89044-wrapped-expr-method.fixed b/tests/ui/typeck/issue-89044-wrapped-expr-method.fixed similarity index 100% rename from src/test/ui/typeck/issue-89044-wrapped-expr-method.fixed rename to tests/ui/typeck/issue-89044-wrapped-expr-method.fixed diff --git a/src/test/ui/typeck/issue-89044-wrapped-expr-method.rs b/tests/ui/typeck/issue-89044-wrapped-expr-method.rs similarity index 100% rename from src/test/ui/typeck/issue-89044-wrapped-expr-method.rs rename to tests/ui/typeck/issue-89044-wrapped-expr-method.rs diff --git a/src/test/ui/typeck/issue-89044-wrapped-expr-method.stderr b/tests/ui/typeck/issue-89044-wrapped-expr-method.stderr similarity index 100% rename from src/test/ui/typeck/issue-89044-wrapped-expr-method.stderr rename to tests/ui/typeck/issue-89044-wrapped-expr-method.stderr diff --git a/src/test/ui/typeck/issue-89275.rs b/tests/ui/typeck/issue-89275.rs similarity index 100% rename from src/test/ui/typeck/issue-89275.rs rename to tests/ui/typeck/issue-89275.rs diff --git a/src/test/ui/typeck/issue-89275.stderr b/tests/ui/typeck/issue-89275.stderr similarity index 100% rename from src/test/ui/typeck/issue-89275.stderr rename to tests/ui/typeck/issue-89275.stderr diff --git a/src/test/ui/typeck/issue-89806.rs b/tests/ui/typeck/issue-89806.rs similarity index 100% rename from src/test/ui/typeck/issue-89806.rs rename to tests/ui/typeck/issue-89806.rs diff --git a/src/test/ui/typeck/issue-89806.stderr b/tests/ui/typeck/issue-89806.stderr similarity index 100% rename from src/test/ui/typeck/issue-89806.stderr rename to tests/ui/typeck/issue-89806.stderr diff --git a/src/test/ui/typeck/issue-89856.rs b/tests/ui/typeck/issue-89856.rs similarity index 100% rename from src/test/ui/typeck/issue-89856.rs rename to tests/ui/typeck/issue-89856.rs diff --git a/src/test/ui/typeck/issue-89856.stderr b/tests/ui/typeck/issue-89856.stderr similarity index 100% rename from src/test/ui/typeck/issue-89856.stderr rename to tests/ui/typeck/issue-89856.stderr diff --git a/src/test/ui/typeck/issue-89935.rs b/tests/ui/typeck/issue-89935.rs similarity index 100% rename from src/test/ui/typeck/issue-89935.rs rename to tests/ui/typeck/issue-89935.rs diff --git a/src/test/ui/typeck/issue-90101.rs b/tests/ui/typeck/issue-90101.rs similarity index 100% rename from src/test/ui/typeck/issue-90101.rs rename to tests/ui/typeck/issue-90101.rs diff --git a/src/test/ui/typeck/issue-90101.stderr b/tests/ui/typeck/issue-90101.stderr similarity index 100% rename from src/test/ui/typeck/issue-90101.stderr rename to tests/ui/typeck/issue-90101.stderr diff --git a/src/test/ui/typeck/issue-90164.rs b/tests/ui/typeck/issue-90164.rs similarity index 100% rename from src/test/ui/typeck/issue-90164.rs rename to tests/ui/typeck/issue-90164.rs diff --git a/src/test/ui/typeck/issue-90164.stderr b/tests/ui/typeck/issue-90164.stderr similarity index 100% rename from src/test/ui/typeck/issue-90164.stderr rename to tests/ui/typeck/issue-90164.stderr diff --git a/src/test/ui/typeck/issue-90319.rs b/tests/ui/typeck/issue-90319.rs similarity index 100% rename from src/test/ui/typeck/issue-90319.rs rename to tests/ui/typeck/issue-90319.rs diff --git a/src/test/ui/typeck/issue-90319.stderr b/tests/ui/typeck/issue-90319.stderr similarity index 100% rename from src/test/ui/typeck/issue-90319.stderr rename to tests/ui/typeck/issue-90319.stderr diff --git a/src/test/ui/typeck/issue-90483-inaccessible-field-adjustment.rs b/tests/ui/typeck/issue-90483-inaccessible-field-adjustment.rs similarity index 100% rename from src/test/ui/typeck/issue-90483-inaccessible-field-adjustment.rs rename to tests/ui/typeck/issue-90483-inaccessible-field-adjustment.rs diff --git a/src/test/ui/typeck/issue-90483-inaccessible-field-adjustment.stderr b/tests/ui/typeck/issue-90483-inaccessible-field-adjustment.stderr similarity index 100% rename from src/test/ui/typeck/issue-90483-inaccessible-field-adjustment.stderr rename to tests/ui/typeck/issue-90483-inaccessible-field-adjustment.stderr diff --git a/src/test/ui/typeck/issue-90804-incorrect-reference-suggestion.rs b/tests/ui/typeck/issue-90804-incorrect-reference-suggestion.rs similarity index 100% rename from src/test/ui/typeck/issue-90804-incorrect-reference-suggestion.rs rename to tests/ui/typeck/issue-90804-incorrect-reference-suggestion.rs diff --git a/src/test/ui/typeck/issue-90804-incorrect-reference-suggestion.stderr b/tests/ui/typeck/issue-90804-incorrect-reference-suggestion.stderr similarity index 100% rename from src/test/ui/typeck/issue-90804-incorrect-reference-suggestion.stderr rename to tests/ui/typeck/issue-90804-incorrect-reference-suggestion.stderr diff --git a/src/test/ui/typeck/issue-91210-ptr-method.fixed b/tests/ui/typeck/issue-91210-ptr-method.fixed similarity index 100% rename from src/test/ui/typeck/issue-91210-ptr-method.fixed rename to tests/ui/typeck/issue-91210-ptr-method.fixed diff --git a/src/test/ui/typeck/issue-91210-ptr-method.rs b/tests/ui/typeck/issue-91210-ptr-method.rs similarity index 100% rename from src/test/ui/typeck/issue-91210-ptr-method.rs rename to tests/ui/typeck/issue-91210-ptr-method.rs diff --git a/src/test/ui/typeck/issue-91210-ptr-method.stderr b/tests/ui/typeck/issue-91210-ptr-method.stderr similarity index 100% rename from src/test/ui/typeck/issue-91210-ptr-method.stderr rename to tests/ui/typeck/issue-91210-ptr-method.stderr diff --git a/src/test/ui/typeck/issue-91267.rs b/tests/ui/typeck/issue-91267.rs similarity index 100% rename from src/test/ui/typeck/issue-91267.rs rename to tests/ui/typeck/issue-91267.rs diff --git a/src/test/ui/typeck/issue-91267.stderr b/tests/ui/typeck/issue-91267.stderr similarity index 100% rename from src/test/ui/typeck/issue-91267.stderr rename to tests/ui/typeck/issue-91267.stderr diff --git a/src/test/ui/typeck/issue-91328.fixed b/tests/ui/typeck/issue-91328.fixed similarity index 100% rename from src/test/ui/typeck/issue-91328.fixed rename to tests/ui/typeck/issue-91328.fixed diff --git a/src/test/ui/typeck/issue-91328.rs b/tests/ui/typeck/issue-91328.rs similarity index 100% rename from src/test/ui/typeck/issue-91328.rs rename to tests/ui/typeck/issue-91328.rs diff --git a/src/test/ui/typeck/issue-91328.stderr b/tests/ui/typeck/issue-91328.stderr similarity index 100% rename from src/test/ui/typeck/issue-91328.stderr rename to tests/ui/typeck/issue-91328.stderr diff --git a/src/test/ui/typeck/issue-91334.rs b/tests/ui/typeck/issue-91334.rs similarity index 100% rename from src/test/ui/typeck/issue-91334.rs rename to tests/ui/typeck/issue-91334.rs diff --git a/src/test/ui/typeck/issue-91334.stderr b/tests/ui/typeck/issue-91334.stderr similarity index 100% rename from src/test/ui/typeck/issue-91334.stderr rename to tests/ui/typeck/issue-91334.stderr diff --git a/src/test/ui/typeck/issue-91450-inner-ty-error.rs b/tests/ui/typeck/issue-91450-inner-ty-error.rs similarity index 100% rename from src/test/ui/typeck/issue-91450-inner-ty-error.rs rename to tests/ui/typeck/issue-91450-inner-ty-error.rs diff --git a/src/test/ui/typeck/issue-91450-inner-ty-error.stderr b/tests/ui/typeck/issue-91450-inner-ty-error.stderr similarity index 100% rename from src/test/ui/typeck/issue-91450-inner-ty-error.stderr rename to tests/ui/typeck/issue-91450-inner-ty-error.stderr diff --git a/src/test/ui/typeck/issue-91633.rs b/tests/ui/typeck/issue-91633.rs similarity index 100% rename from src/test/ui/typeck/issue-91633.rs rename to tests/ui/typeck/issue-91633.rs diff --git a/src/test/ui/typeck/issue-92481.rs b/tests/ui/typeck/issue-92481.rs similarity index 100% rename from src/test/ui/typeck/issue-92481.rs rename to tests/ui/typeck/issue-92481.rs diff --git a/src/test/ui/typeck/issue-92481.stderr b/tests/ui/typeck/issue-92481.stderr similarity index 100% rename from src/test/ui/typeck/issue-92481.stderr rename to tests/ui/typeck/issue-92481.stderr diff --git a/src/test/ui/typeck/issue-93486.rs b/tests/ui/typeck/issue-93486.rs similarity index 100% rename from src/test/ui/typeck/issue-93486.rs rename to tests/ui/typeck/issue-93486.rs diff --git a/src/test/ui/typeck/issue-93486.stderr b/tests/ui/typeck/issue-93486.stderr similarity index 100% rename from src/test/ui/typeck/issue-93486.stderr rename to tests/ui/typeck/issue-93486.stderr diff --git a/src/test/ui/typeck/issue-96530.rs b/tests/ui/typeck/issue-96530.rs similarity index 100% rename from src/test/ui/typeck/issue-96530.rs rename to tests/ui/typeck/issue-96530.rs diff --git a/src/test/ui/typeck/issue-96530.stderr b/tests/ui/typeck/issue-96530.stderr similarity index 100% rename from src/test/ui/typeck/issue-96530.stderr rename to tests/ui/typeck/issue-96530.stderr diff --git a/src/test/ui/typeck/issue-96738.rs b/tests/ui/typeck/issue-96738.rs similarity index 100% rename from src/test/ui/typeck/issue-96738.rs rename to tests/ui/typeck/issue-96738.rs diff --git a/src/test/ui/typeck/issue-96738.stderr b/tests/ui/typeck/issue-96738.stderr similarity index 100% rename from src/test/ui/typeck/issue-96738.stderr rename to tests/ui/typeck/issue-96738.stderr diff --git a/src/test/ui/typeck/issue-98260.rs b/tests/ui/typeck/issue-98260.rs similarity index 100% rename from src/test/ui/typeck/issue-98260.rs rename to tests/ui/typeck/issue-98260.rs diff --git a/src/test/ui/typeck/issue-98260.stderr b/tests/ui/typeck/issue-98260.stderr similarity index 100% rename from src/test/ui/typeck/issue-98260.stderr rename to tests/ui/typeck/issue-98260.stderr diff --git a/src/test/ui/typeck/issue-98982.rs b/tests/ui/typeck/issue-98982.rs similarity index 100% rename from src/test/ui/typeck/issue-98982.rs rename to tests/ui/typeck/issue-98982.rs diff --git a/src/test/ui/typeck/issue-98982.stderr b/tests/ui/typeck/issue-98982.stderr similarity index 100% rename from src/test/ui/typeck/issue-98982.stderr rename to tests/ui/typeck/issue-98982.stderr diff --git a/src/test/ui/typeck/missing-private-fields-in-struct-literal.rs b/tests/ui/typeck/missing-private-fields-in-struct-literal.rs similarity index 100% rename from src/test/ui/typeck/missing-private-fields-in-struct-literal.rs rename to tests/ui/typeck/missing-private-fields-in-struct-literal.rs diff --git a/src/test/ui/typeck/missing-private-fields-in-struct-literal.stderr b/tests/ui/typeck/missing-private-fields-in-struct-literal.stderr similarity index 100% rename from src/test/ui/typeck/missing-private-fields-in-struct-literal.stderr rename to tests/ui/typeck/missing-private-fields-in-struct-literal.stderr diff --git a/src/test/ui/typeck/no-type-for-node-ice.rs b/tests/ui/typeck/no-type-for-node-ice.rs similarity index 100% rename from src/test/ui/typeck/no-type-for-node-ice.rs rename to tests/ui/typeck/no-type-for-node-ice.rs diff --git a/src/test/ui/typeck/no-type-for-node-ice.stderr b/tests/ui/typeck/no-type-for-node-ice.stderr similarity index 100% rename from src/test/ui/typeck/no-type-for-node-ice.stderr rename to tests/ui/typeck/no-type-for-node-ice.stderr diff --git a/src/test/ui/typeck/nonexistent-field-not-ambiguous.rs b/tests/ui/typeck/nonexistent-field-not-ambiguous.rs similarity index 100% rename from src/test/ui/typeck/nonexistent-field-not-ambiguous.rs rename to tests/ui/typeck/nonexistent-field-not-ambiguous.rs diff --git a/src/test/ui/typeck/nonexistent-field-not-ambiguous.stderr b/tests/ui/typeck/nonexistent-field-not-ambiguous.stderr similarity index 100% rename from src/test/ui/typeck/nonexistent-field-not-ambiguous.stderr rename to tests/ui/typeck/nonexistent-field-not-ambiguous.stderr diff --git a/src/test/ui/typeck/path-to-method-sugg-unresolved-expr.rs b/tests/ui/typeck/path-to-method-sugg-unresolved-expr.rs similarity index 100% rename from src/test/ui/typeck/path-to-method-sugg-unresolved-expr.rs rename to tests/ui/typeck/path-to-method-sugg-unresolved-expr.rs diff --git a/src/test/ui/typeck/path-to-method-sugg-unresolved-expr.stderr b/tests/ui/typeck/path-to-method-sugg-unresolved-expr.stderr similarity index 100% rename from src/test/ui/typeck/path-to-method-sugg-unresolved-expr.stderr rename to tests/ui/typeck/path-to-method-sugg-unresolved-expr.stderr diff --git a/src/test/ui/typeck/point-at-type-param-in-path-expr.rs b/tests/ui/typeck/point-at-type-param-in-path-expr.rs similarity index 100% rename from src/test/ui/typeck/point-at-type-param-in-path-expr.rs rename to tests/ui/typeck/point-at-type-param-in-path-expr.rs diff --git a/src/test/ui/typeck/point-at-type-param-in-path-expr.stderr b/tests/ui/typeck/point-at-type-param-in-path-expr.stderr similarity index 100% rename from src/test/ui/typeck/point-at-type-param-in-path-expr.stderr rename to tests/ui/typeck/point-at-type-param-in-path-expr.stderr diff --git a/src/test/ui/typeck/point-at-type-parameter-definition.rs b/tests/ui/typeck/point-at-type-parameter-definition.rs similarity index 100% rename from src/test/ui/typeck/point-at-type-parameter-definition.rs rename to tests/ui/typeck/point-at-type-parameter-definition.rs diff --git a/src/test/ui/typeck/point-at-type-parameter-definition.stderr b/tests/ui/typeck/point-at-type-parameter-definition.stderr similarity index 100% rename from src/test/ui/typeck/point-at-type-parameter-definition.stderr rename to tests/ui/typeck/point-at-type-parameter-definition.stderr diff --git a/src/test/ui/typeck/prim-with-args.fixed b/tests/ui/typeck/prim-with-args.fixed similarity index 100% rename from src/test/ui/typeck/prim-with-args.fixed rename to tests/ui/typeck/prim-with-args.fixed diff --git a/src/test/ui/typeck/prim-with-args.rs b/tests/ui/typeck/prim-with-args.rs similarity index 100% rename from src/test/ui/typeck/prim-with-args.rs rename to tests/ui/typeck/prim-with-args.rs diff --git a/src/test/ui/typeck/prim-with-args.stderr b/tests/ui/typeck/prim-with-args.stderr similarity index 100% rename from src/test/ui/typeck/prim-with-args.stderr rename to tests/ui/typeck/prim-with-args.stderr diff --git a/src/test/ui/typeck/project-cache-issue-37154.rs b/tests/ui/typeck/project-cache-issue-37154.rs similarity index 100% rename from src/test/ui/typeck/project-cache-issue-37154.rs rename to tests/ui/typeck/project-cache-issue-37154.rs diff --git a/src/test/ui/typeck/quiet-type-err-let-binding.rs b/tests/ui/typeck/quiet-type-err-let-binding.rs similarity index 100% rename from src/test/ui/typeck/quiet-type-err-let-binding.rs rename to tests/ui/typeck/quiet-type-err-let-binding.rs diff --git a/src/test/ui/typeck/quiet-type-err-let-binding.stderr b/tests/ui/typeck/quiet-type-err-let-binding.stderr similarity index 100% rename from src/test/ui/typeck/quiet-type-err-let-binding.stderr rename to tests/ui/typeck/quiet-type-err-let-binding.stderr diff --git a/src/test/ui/typeck/remove-extra-argument.fixed b/tests/ui/typeck/remove-extra-argument.fixed similarity index 100% rename from src/test/ui/typeck/remove-extra-argument.fixed rename to tests/ui/typeck/remove-extra-argument.fixed diff --git a/src/test/ui/typeck/remove-extra-argument.rs b/tests/ui/typeck/remove-extra-argument.rs similarity index 100% rename from src/test/ui/typeck/remove-extra-argument.rs rename to tests/ui/typeck/remove-extra-argument.rs diff --git a/src/test/ui/typeck/remove-extra-argument.stderr b/tests/ui/typeck/remove-extra-argument.stderr similarity index 100% rename from src/test/ui/typeck/remove-extra-argument.stderr rename to tests/ui/typeck/remove-extra-argument.stderr diff --git a/src/test/ui/typeck/return_type_containing_closure.rs b/tests/ui/typeck/return_type_containing_closure.rs similarity index 100% rename from src/test/ui/typeck/return_type_containing_closure.rs rename to tests/ui/typeck/return_type_containing_closure.rs diff --git a/src/test/ui/typeck/return_type_containing_closure.stderr b/tests/ui/typeck/return_type_containing_closure.stderr similarity index 100% rename from src/test/ui/typeck/return_type_containing_closure.stderr rename to tests/ui/typeck/return_type_containing_closure.stderr diff --git a/src/test/ui/typeck/slow-lhs-suggestion.rs b/tests/ui/typeck/slow-lhs-suggestion.rs similarity index 100% rename from src/test/ui/typeck/slow-lhs-suggestion.rs rename to tests/ui/typeck/slow-lhs-suggestion.rs diff --git a/src/test/ui/typeck/slow-lhs-suggestion.stderr b/tests/ui/typeck/slow-lhs-suggestion.stderr similarity index 100% rename from src/test/ui/typeck/slow-lhs-suggestion.stderr rename to tests/ui/typeck/slow-lhs-suggestion.stderr diff --git a/src/test/ui/typeck/struct-enum-wrong-args.rs b/tests/ui/typeck/struct-enum-wrong-args.rs similarity index 100% rename from src/test/ui/typeck/struct-enum-wrong-args.rs rename to tests/ui/typeck/struct-enum-wrong-args.rs diff --git a/src/test/ui/typeck/struct-enum-wrong-args.stderr b/tests/ui/typeck/struct-enum-wrong-args.stderr similarity index 100% rename from src/test/ui/typeck/struct-enum-wrong-args.stderr rename to tests/ui/typeck/struct-enum-wrong-args.stderr diff --git a/src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.fixed b/tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.fixed similarity index 100% rename from src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.fixed rename to tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.fixed diff --git a/src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.rs b/tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.rs similarity index 100% rename from src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.rs rename to tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.rs diff --git a/src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.stderr b/tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.stderr similarity index 100% rename from src/test/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.stderr rename to tests/ui/typeck/suggest-adding-missing-zero-to-floating-point-number.stderr diff --git a/src/test/ui/typeck/type-placeholder-fn-in-const.rs b/tests/ui/typeck/type-placeholder-fn-in-const.rs similarity index 100% rename from src/test/ui/typeck/type-placeholder-fn-in-const.rs rename to tests/ui/typeck/type-placeholder-fn-in-const.rs diff --git a/src/test/ui/typeck/type-placeholder-fn-in-const.stderr b/tests/ui/typeck/type-placeholder-fn-in-const.stderr similarity index 100% rename from src/test/ui/typeck/type-placeholder-fn-in-const.stderr rename to tests/ui/typeck/type-placeholder-fn-in-const.stderr diff --git a/src/test/ui/typeck/typeck-builtin-bound-type-parameters.rs b/tests/ui/typeck/typeck-builtin-bound-type-parameters.rs similarity index 100% rename from src/test/ui/typeck/typeck-builtin-bound-type-parameters.rs rename to tests/ui/typeck/typeck-builtin-bound-type-parameters.rs diff --git a/src/test/ui/typeck/typeck-builtin-bound-type-parameters.stderr b/tests/ui/typeck/typeck-builtin-bound-type-parameters.stderr similarity index 100% rename from src/test/ui/typeck/typeck-builtin-bound-type-parameters.stderr rename to tests/ui/typeck/typeck-builtin-bound-type-parameters.stderr diff --git a/src/test/ui/typeck/typeck-cast-pointer-to-float.rs b/tests/ui/typeck/typeck-cast-pointer-to-float.rs similarity index 100% rename from src/test/ui/typeck/typeck-cast-pointer-to-float.rs rename to tests/ui/typeck/typeck-cast-pointer-to-float.rs diff --git a/src/test/ui/typeck/typeck-cast-pointer-to-float.stderr b/tests/ui/typeck/typeck-cast-pointer-to-float.stderr similarity index 100% rename from src/test/ui/typeck/typeck-cast-pointer-to-float.stderr rename to tests/ui/typeck/typeck-cast-pointer-to-float.stderr diff --git a/src/test/ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs b/tests/ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs similarity index 100% rename from src/test/ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs rename to tests/ui/typeck/typeck-closure-to-unsafe-fn-ptr.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-assoc-type.fixed b/tests/ui/typeck/typeck-default-trait-impl-assoc-type.fixed similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-assoc-type.fixed rename to tests/ui/typeck/typeck-default-trait-impl-assoc-type.fixed diff --git a/src/test/ui/typeck/typeck-default-trait-impl-assoc-type.rs b/tests/ui/typeck/typeck-default-trait-impl-assoc-type.rs similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-assoc-type.rs rename to tests/ui/typeck/typeck-default-trait-impl-assoc-type.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-assoc-type.stderr b/tests/ui/typeck/typeck-default-trait-impl-assoc-type.stderr similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-assoc-type.stderr rename to tests/ui/typeck/typeck-default-trait-impl-assoc-type.stderr diff --git a/src/test/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.rs b/tests/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.rs similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.rs rename to tests/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.stderr b/tests/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.stderr similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.stderr rename to tests/ui/typeck/typeck-default-trait-impl-cross-crate-coherence.stderr diff --git a/src/test/ui/typeck/typeck-default-trait-impl-negation-send.rs b/tests/ui/typeck/typeck-default-trait-impl-negation-send.rs similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-negation-send.rs rename to tests/ui/typeck/typeck-default-trait-impl-negation-send.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-negation-send.stderr b/tests/ui/typeck/typeck-default-trait-impl-negation-send.stderr similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-negation-send.stderr rename to tests/ui/typeck/typeck-default-trait-impl-negation-send.stderr diff --git a/src/test/ui/typeck/typeck-default-trait-impl-negation-sync.rs b/tests/ui/typeck/typeck-default-trait-impl-negation-sync.rs similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-negation-sync.rs rename to tests/ui/typeck/typeck-default-trait-impl-negation-sync.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-negation-sync.stderr b/tests/ui/typeck/typeck-default-trait-impl-negation-sync.stderr similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-negation-sync.stderr rename to tests/ui/typeck/typeck-default-trait-impl-negation-sync.stderr diff --git a/src/test/ui/typeck/typeck-default-trait-impl-send-param.rs b/tests/ui/typeck/typeck-default-trait-impl-send-param.rs similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-send-param.rs rename to tests/ui/typeck/typeck-default-trait-impl-send-param.rs diff --git a/src/test/ui/typeck/typeck-default-trait-impl-send-param.stderr b/tests/ui/typeck/typeck-default-trait-impl-send-param.stderr similarity index 100% rename from src/test/ui/typeck/typeck-default-trait-impl-send-param.stderr rename to tests/ui/typeck/typeck-default-trait-impl-send-param.stderr diff --git a/src/test/ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs b/tests/ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs similarity index 100% rename from src/test/ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs rename to tests/ui/typeck/typeck-fn-to-unsafe-fn-ptr.rs diff --git a/src/test/ui/typeck/typeck-unsafe-always-share.rs b/tests/ui/typeck/typeck-unsafe-always-share.rs similarity index 100% rename from src/test/ui/typeck/typeck-unsafe-always-share.rs rename to tests/ui/typeck/typeck-unsafe-always-share.rs diff --git a/src/test/ui/typeck/typeck-unsafe-always-share.stderr b/tests/ui/typeck/typeck-unsafe-always-share.stderr similarity index 100% rename from src/test/ui/typeck/typeck-unsafe-always-share.stderr rename to tests/ui/typeck/typeck-unsafe-always-share.stderr diff --git a/src/test/ui/typeck/typeck_type_placeholder_1.rs b/tests/ui/typeck/typeck_type_placeholder_1.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_1.rs rename to tests/ui/typeck/typeck_type_placeholder_1.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_item.rs b/tests/ui/typeck/typeck_type_placeholder_item.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_item.rs rename to tests/ui/typeck/typeck_type_placeholder_item.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_item.stderr b/tests/ui/typeck/typeck_type_placeholder_item.stderr similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_item.stderr rename to tests/ui/typeck/typeck_type_placeholder_item.stderr diff --git a/src/test/ui/typeck/typeck_type_placeholder_item_help.rs b/tests/ui/typeck/typeck_type_placeholder_item_help.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_item_help.rs rename to tests/ui/typeck/typeck_type_placeholder_item_help.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_item_help.stderr b/tests/ui/typeck/typeck_type_placeholder_item_help.stderr similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_item_help.stderr rename to tests/ui/typeck/typeck_type_placeholder_item_help.stderr diff --git a/src/test/ui/typeck/typeck_type_placeholder_lifetime_1.rs b/tests/ui/typeck/typeck_type_placeholder_lifetime_1.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_lifetime_1.rs rename to tests/ui/typeck/typeck_type_placeholder_lifetime_1.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_lifetime_1.stderr b/tests/ui/typeck/typeck_type_placeholder_lifetime_1.stderr similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_lifetime_1.stderr rename to tests/ui/typeck/typeck_type_placeholder_lifetime_1.stderr diff --git a/src/test/ui/typeck/typeck_type_placeholder_lifetime_2.rs b/tests/ui/typeck/typeck_type_placeholder_lifetime_2.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_lifetime_2.rs rename to tests/ui/typeck/typeck_type_placeholder_lifetime_2.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_lifetime_2.stderr b/tests/ui/typeck/typeck_type_placeholder_lifetime_2.stderr similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_lifetime_2.stderr rename to tests/ui/typeck/typeck_type_placeholder_lifetime_2.stderr diff --git a/src/test/ui/typeck/typeck_type_placeholder_mismatch.rs b/tests/ui/typeck/typeck_type_placeholder_mismatch.rs similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_mismatch.rs rename to tests/ui/typeck/typeck_type_placeholder_mismatch.rs diff --git a/src/test/ui/typeck/typeck_type_placeholder_mismatch.stderr b/tests/ui/typeck/typeck_type_placeholder_mismatch.stderr similarity index 100% rename from src/test/ui/typeck/typeck_type_placeholder_mismatch.stderr rename to tests/ui/typeck/typeck_type_placeholder_mismatch.stderr diff --git a/src/test/ui/typeck/ufcs-type-params.rs b/tests/ui/typeck/ufcs-type-params.rs similarity index 100% rename from src/test/ui/typeck/ufcs-type-params.rs rename to tests/ui/typeck/ufcs-type-params.rs diff --git a/src/test/ui/typeck/unify-return-ty.rs b/tests/ui/typeck/unify-return-ty.rs similarity index 100% rename from src/test/ui/typeck/unify-return-ty.rs rename to tests/ui/typeck/unify-return-ty.rs diff --git a/src/test/ui/typeck/while-loop-block-cond.rs b/tests/ui/typeck/while-loop-block-cond.rs similarity index 100% rename from src/test/ui/typeck/while-loop-block-cond.rs rename to tests/ui/typeck/while-loop-block-cond.rs diff --git a/src/test/ui/typeck/while-loop-block-cond.stderr b/tests/ui/typeck/while-loop-block-cond.stderr similarity index 100% rename from src/test/ui/typeck/while-loop-block-cond.stderr rename to tests/ui/typeck/while-loop-block-cond.stderr diff --git a/src/test/ui/typeid-intrinsic.rs b/tests/ui/typeid-intrinsic.rs similarity index 100% rename from src/test/ui/typeid-intrinsic.rs rename to tests/ui/typeid-intrinsic.rs diff --git a/src/test/ui/typeof/issue-100183.rs b/tests/ui/typeof/issue-100183.rs similarity index 100% rename from src/test/ui/typeof/issue-100183.rs rename to tests/ui/typeof/issue-100183.rs diff --git a/src/test/ui/typeof/issue-100183.stderr b/tests/ui/typeof/issue-100183.stderr similarity index 100% rename from src/test/ui/typeof/issue-100183.stderr rename to tests/ui/typeof/issue-100183.stderr diff --git a/src/test/ui/typeof/issue-29184.rs b/tests/ui/typeof/issue-29184.rs similarity index 100% rename from src/test/ui/typeof/issue-29184.rs rename to tests/ui/typeof/issue-29184.rs diff --git a/src/test/ui/typeof/issue-29184.stderr b/tests/ui/typeof/issue-29184.stderr similarity index 100% rename from src/test/ui/typeof/issue-29184.stderr rename to tests/ui/typeof/issue-29184.stderr diff --git a/src/test/ui/typeof/issue-42060.rs b/tests/ui/typeof/issue-42060.rs similarity index 100% rename from src/test/ui/typeof/issue-42060.rs rename to tests/ui/typeof/issue-42060.rs diff --git a/src/test/ui/typeof/issue-42060.stderr b/tests/ui/typeof/issue-42060.stderr similarity index 100% rename from src/test/ui/typeof/issue-42060.stderr rename to tests/ui/typeof/issue-42060.stderr diff --git a/src/test/ui/typeof/type_mismatch.rs b/tests/ui/typeof/type_mismatch.rs similarity index 100% rename from src/test/ui/typeof/type_mismatch.rs rename to tests/ui/typeof/type_mismatch.rs diff --git a/src/test/ui/typeof/type_mismatch.stderr b/tests/ui/typeof/type_mismatch.stderr similarity index 100% rename from src/test/ui/typeof/type_mismatch.stderr rename to tests/ui/typeof/type_mismatch.stderr diff --git a/src/test/ui/typestate-multi-decl.rs b/tests/ui/typestate-multi-decl.rs similarity index 100% rename from src/test/ui/typestate-multi-decl.rs rename to tests/ui/typestate-multi-decl.rs diff --git a/src/test/ui/ufcs-polymorphic-paths.rs b/tests/ui/ufcs-polymorphic-paths.rs similarity index 100% rename from src/test/ui/ufcs-polymorphic-paths.rs rename to tests/ui/ufcs-polymorphic-paths.rs diff --git a/src/test/ui/ufcs/ufcs-explicit-self-bad.rs b/tests/ui/ufcs/ufcs-explicit-self-bad.rs similarity index 100% rename from src/test/ui/ufcs/ufcs-explicit-self-bad.rs rename to tests/ui/ufcs/ufcs-explicit-self-bad.rs diff --git a/src/test/ui/ufcs/ufcs-explicit-self-bad.stderr b/tests/ui/ufcs/ufcs-explicit-self-bad.stderr similarity index 100% rename from src/test/ui/ufcs/ufcs-explicit-self-bad.stderr rename to tests/ui/ufcs/ufcs-explicit-self-bad.stderr diff --git a/src/test/ui/ufcs/ufcs-partially-resolved.rs b/tests/ui/ufcs/ufcs-partially-resolved.rs similarity index 100% rename from src/test/ui/ufcs/ufcs-partially-resolved.rs rename to tests/ui/ufcs/ufcs-partially-resolved.rs diff --git a/src/test/ui/ufcs/ufcs-partially-resolved.stderr b/tests/ui/ufcs/ufcs-partially-resolved.stderr similarity index 100% rename from src/test/ui/ufcs/ufcs-partially-resolved.stderr rename to tests/ui/ufcs/ufcs-partially-resolved.stderr diff --git a/src/test/ui/ufcs/ufcs-qpath-missing-params.rs b/tests/ui/ufcs/ufcs-qpath-missing-params.rs similarity index 100% rename from src/test/ui/ufcs/ufcs-qpath-missing-params.rs rename to tests/ui/ufcs/ufcs-qpath-missing-params.rs diff --git a/src/test/ui/ufcs/ufcs-qpath-missing-params.stderr b/tests/ui/ufcs/ufcs-qpath-missing-params.stderr similarity index 100% rename from src/test/ui/ufcs/ufcs-qpath-missing-params.stderr rename to tests/ui/ufcs/ufcs-qpath-missing-params.stderr diff --git a/src/test/ui/ufcs/ufcs-qpath-self-mismatch.rs b/tests/ui/ufcs/ufcs-qpath-self-mismatch.rs similarity index 100% rename from src/test/ui/ufcs/ufcs-qpath-self-mismatch.rs rename to tests/ui/ufcs/ufcs-qpath-self-mismatch.rs diff --git a/src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr b/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr similarity index 100% rename from src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr rename to tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr diff --git a/src/test/ui/unboxed-closures/auxiliary/unboxed-closures-cross-crate.rs b/tests/ui/unboxed-closures/auxiliary/unboxed-closures-cross-crate.rs similarity index 100% rename from src/test/ui/unboxed-closures/auxiliary/unboxed-closures-cross-crate.rs rename to tests/ui/unboxed-closures/auxiliary/unboxed-closures-cross-crate.rs diff --git a/src/test/ui/unboxed-closures/issue-18652.rs b/tests/ui/unboxed-closures/issue-18652.rs similarity index 100% rename from src/test/ui/unboxed-closures/issue-18652.rs rename to tests/ui/unboxed-closures/issue-18652.rs diff --git a/src/test/ui/unboxed-closures/issue-18661.rs b/tests/ui/unboxed-closures/issue-18661.rs similarity index 100% rename from src/test/ui/unboxed-closures/issue-18661.rs rename to tests/ui/unboxed-closures/issue-18661.rs diff --git a/src/test/ui/unboxed-closures/issue-30906.rs b/tests/ui/unboxed-closures/issue-30906.rs similarity index 100% rename from src/test/ui/unboxed-closures/issue-30906.rs rename to tests/ui/unboxed-closures/issue-30906.rs diff --git a/src/test/ui/unboxed-closures/issue-30906.stderr b/tests/ui/unboxed-closures/issue-30906.stderr similarity index 100% rename from src/test/ui/unboxed-closures/issue-30906.stderr rename to tests/ui/unboxed-closures/issue-30906.stderr diff --git a/src/test/ui/unboxed-closures/issue-53448.rs b/tests/ui/unboxed-closures/issue-53448.rs similarity index 100% rename from src/test/ui/unboxed-closures/issue-53448.rs rename to tests/ui/unboxed-closures/issue-53448.rs diff --git a/src/test/ui/unboxed-closures/non-tupled-arg-mismatch.rs b/tests/ui/unboxed-closures/non-tupled-arg-mismatch.rs similarity index 100% rename from src/test/ui/unboxed-closures/non-tupled-arg-mismatch.rs rename to tests/ui/unboxed-closures/non-tupled-arg-mismatch.rs diff --git a/src/test/ui/unboxed-closures/non-tupled-arg-mismatch.stderr b/tests/ui/unboxed-closures/non-tupled-arg-mismatch.stderr similarity index 100% rename from src/test/ui/unboxed-closures/non-tupled-arg-mismatch.stderr rename to tests/ui/unboxed-closures/non-tupled-arg-mismatch.stderr diff --git a/src/test/ui/unboxed-closures/non-tupled-call.rs b/tests/ui/unboxed-closures/non-tupled-call.rs similarity index 100% rename from src/test/ui/unboxed-closures/non-tupled-call.rs rename to tests/ui/unboxed-closures/non-tupled-call.rs diff --git a/src/test/ui/unboxed-closures/non-tupled-call.stderr b/tests/ui/unboxed-closures/non-tupled-call.stderr similarity index 100% rename from src/test/ui/unboxed-closures/non-tupled-call.stderr rename to tests/ui/unboxed-closures/non-tupled-call.stderr diff --git a/src/test/ui/unboxed-closures/type-id-higher-rank.rs b/tests/ui/unboxed-closures/type-id-higher-rank.rs similarity index 100% rename from src/test/ui/unboxed-closures/type-id-higher-rank.rs rename to tests/ui/unboxed-closures/type-id-higher-rank.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-feature-gate.rs b/tests/ui/unboxed-closures/unboxed-closure-feature-gate.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-feature-gate.rs rename to tests/ui/unboxed-closures/unboxed-closure-feature-gate.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-feature-gate.stderr b/tests/ui/unboxed-closures/unboxed-closure-feature-gate.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-feature-gate.stderr rename to tests/ui/unboxed-closures/unboxed-closure-feature-gate.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-illegal-move.rs b/tests/ui/unboxed-closures/unboxed-closure-illegal-move.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-illegal-move.rs rename to tests/ui/unboxed-closures/unboxed-closure-illegal-move.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-illegal-move.stderr b/tests/ui/unboxed-closures/unboxed-closure-illegal-move.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-illegal-move.stderr rename to tests/ui/unboxed-closures/unboxed-closure-illegal-move.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-immutable-capture.rs b/tests/ui/unboxed-closures/unboxed-closure-immutable-capture.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-immutable-capture.rs rename to tests/ui/unboxed-closures/unboxed-closure-immutable-capture.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-immutable-capture.stderr b/tests/ui/unboxed-closures/unboxed-closure-immutable-capture.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-immutable-capture.stderr rename to tests/ui/unboxed-closures/unboxed-closure-immutable-capture.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.rs b/tests/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.rs rename to tests/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.stderr b/tests/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.stderr rename to tests/ui/unboxed-closures/unboxed-closure-no-cyclic-sig.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-region.rs b/tests/ui/unboxed-closures/unboxed-closure-region.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-region.rs rename to tests/ui/unboxed-closures/unboxed-closure-region.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-region.stderr b/tests/ui/unboxed-closures/unboxed-closure-region.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-region.stderr rename to tests/ui/unboxed-closures/unboxed-closure-region.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-default.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-default.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-default.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-default.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-default.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-default.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-default.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-default.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-equiv.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-equiv.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-equiv.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-equiv.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-equiv.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-equiv.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-equiv.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-equiv.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-lifetime-elision.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-not-used-on-fn.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-region.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-region.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-region.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-region.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-region.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-region.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-region.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-region.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-1.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct-3.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-used-on-struct.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-1.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters-3.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-number-number-type-parameters.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.rs b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.rs rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.stderr b/tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.stderr rename to tests/ui/unboxed-closures/unboxed-closure-sugar-wrong-trait.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-all-traits.rs b/tests/ui/unboxed-closures/unboxed-closures-all-traits.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-all-traits.rs rename to tests/ui/unboxed-closures/unboxed-closures-all-traits.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-blanket-fn-mut.rs b/tests/ui/unboxed-closures/unboxed-closures-blanket-fn-mut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-blanket-fn-mut.rs rename to tests/ui/unboxed-closures/unboxed-closures-blanket-fn-mut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-blanket-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-blanket-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-blanket-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-blanket-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-borrow-conflict.rs b/tests/ui/unboxed-closures/unboxed-closures-borrow-conflict.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-borrow-conflict.rs rename to tests/ui/unboxed-closures/unboxed-closures-borrow-conflict.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-borrow-conflict.stderr b/tests/ui/unboxed-closures/unboxed-closures-borrow-conflict.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-borrow-conflict.stderr rename to tests/ui/unboxed-closures/unboxed-closures-borrow-conflict.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-boxed.rs b/tests/ui/unboxed-closures/unboxed-closures-boxed.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-boxed.rs rename to tests/ui/unboxed-closures/unboxed-closures-boxed.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-by-ref.rs b/tests/ui/unboxed-closures/unboxed-closures-by-ref.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-by-ref.rs rename to tests/ui/unboxed-closures/unboxed-closures-by-ref.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-call-fn-autoderef.rs b/tests/ui/unboxed-closures/unboxed-closures-call-fn-autoderef.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-call-fn-autoderef.rs rename to tests/ui/unboxed-closures/unboxed-closures-call-fn-autoderef.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-call-sugar-autoderef.rs b/tests/ui/unboxed-closures/unboxed-closures-call-sugar-autoderef.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-call-sugar-autoderef.rs rename to tests/ui/unboxed-closures/unboxed-closures-call-sugar-autoderef.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-call-sugar-object-autoderef.rs b/tests/ui/unboxed-closures/unboxed-closures-call-sugar-object-autoderef.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-call-sugar-object-autoderef.rs rename to tests/ui/unboxed-closures/unboxed-closures-call-sugar-object-autoderef.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-call-sugar-object.rs b/tests/ui/unboxed-closures/unboxed-closures-call-sugar-object.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-call-sugar-object.rs rename to tests/ui/unboxed-closures/unboxed-closures-call-sugar-object.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-counter-not-moved.rs b/tests/ui/unboxed-closures/unboxed-closures-counter-not-moved.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-counter-not-moved.rs rename to tests/ui/unboxed-closures/unboxed-closures-counter-not-moved.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-counter-not-moved.stderr b/tests/ui/unboxed-closures/unboxed-closures-counter-not-moved.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-counter-not-moved.stderr rename to tests/ui/unboxed-closures/unboxed-closures-counter-not-moved.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-cross-crate.rs b/tests/ui/unboxed-closures/unboxed-closures-cross-crate.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-cross-crate.rs rename to tests/ui/unboxed-closures/unboxed-closures-cross-crate.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-direct-sugary-call.rs b/tests/ui/unboxed-closures/unboxed-closures-direct-sugary-call.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-direct-sugary-call.rs rename to tests/ui/unboxed-closures/unboxed-closures-direct-sugary-call.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-drop.rs b/tests/ui/unboxed-closures/unboxed-closures-drop.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-drop.rs rename to tests/ui/unboxed-closures/unboxed-closures-drop.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-extern-fn-hr.rs b/tests/ui/unboxed-closures/unboxed-closures-extern-fn-hr.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-extern-fn-hr.rs rename to tests/ui/unboxed-closures/unboxed-closures-extern-fn-hr.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-extern-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-extern-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-extern-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-extern-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs b/tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs rename to tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.stderr b/tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.stderr rename to tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.rs b/tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.rs rename to tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.stderr b/tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.stderr rename to tests/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-2.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-fn-as-fnmut-and-fnonce.rs b/tests/ui/unboxed-closures/unboxed-closures-fn-as-fnmut-and-fnonce.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-fn-as-fnmut-and-fnonce.rs rename to tests/ui/unboxed-closures/unboxed-closures-fn-as-fnmut-and-fnonce.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr b/tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr rename to tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fnonce.rs b/tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fnonce.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fnonce.rs rename to tests/ui/unboxed-closures/unboxed-closures-fnmut-as-fnonce.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-generic.rs b/tests/ui/unboxed-closures/unboxed-closures-generic.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-generic.rs rename to tests/ui/unboxed-closures/unboxed-closures-generic.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-bound.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-bound.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-bound.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-bound.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-object-type.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-object-type.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-object-type.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-from-expected-object-type.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-w-bound-regs-from-expected-bound.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-w-bound-regs-from-expected-bound.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-arg-types-w-bound-regs-from-expected-bound.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-arg-types-w-bound-regs-from-expected-bound.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-explicit-call-early.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-explicit-call-early.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-explicit-call-early.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-explicit-call-early.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fn-once-move-from-projection.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-missing-mut.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move-missing-mut.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-move.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut-move.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnmut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnmut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-call-twice.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.stderr b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.stderr rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move-call-twice.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce-move.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce-move.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-fnonce.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-fnonce.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-fnonce.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-kind.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-kind.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-kind.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-kind.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-recursive-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-recursive-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-recursive-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-recursive-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-upvar.rs b/tests/ui/unboxed-closures/unboxed-closures-infer-upvar.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-infer-upvar.rs rename to tests/ui/unboxed-closures/unboxed-closures-infer-upvar.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-manual-impl.rs b/tests/ui/unboxed-closures/unboxed-closures-manual-impl.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-manual-impl.rs rename to tests/ui/unboxed-closures/unboxed-closures-manual-impl.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-monomorphization.rs b/tests/ui/unboxed-closures/unboxed-closures-monomorphization.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-monomorphization.rs rename to tests/ui/unboxed-closures/unboxed-closures-monomorphization.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-move-from-projection-issue-30046.rs b/tests/ui/unboxed-closures/unboxed-closures-move-from-projection-issue-30046.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-move-from-projection-issue-30046.rs rename to tests/ui/unboxed-closures/unboxed-closures-move-from-projection-issue-30046.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-move-mutable.rs b/tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-move-mutable.rs rename to tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-move-mutable.stderr b/tests/ui/unboxed-closures/unboxed-closures-move-mutable.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-move-mutable.stderr rename to tests/ui/unboxed-closures/unboxed-closures-move-mutable.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-move-some-upvars-in-by-ref-closure.rs b/tests/ui/unboxed-closures/unboxed-closures-move-some-upvars-in-by-ref-closure.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-move-some-upvars-in-by-ref-closure.rs rename to tests/ui/unboxed-closures/unboxed-closures-move-some-upvars-in-by-ref-closure.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-mutate-upvar.rs b/tests/ui/unboxed-closures/unboxed-closures-mutate-upvar.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-mutate-upvar.rs rename to tests/ui/unboxed-closures/unboxed-closures-mutate-upvar.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-mutate-upvar.stderr b/tests/ui/unboxed-closures/unboxed-closures-mutate-upvar.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-mutate-upvar.stderr rename to tests/ui/unboxed-closures/unboxed-closures-mutate-upvar.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.rs b/tests/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.rs rename to tests/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.stderr b/tests/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.stderr rename to tests/ui/unboxed-closures/unboxed-closures-mutated-upvar-from-fn-closure.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-prelude.rs b/tests/ui/unboxed-closures/unboxed-closures-prelude.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-prelude.rs rename to tests/ui/unboxed-closures/unboxed-closures-prelude.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.rs b/tests/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.rs rename to tests/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.stderr b/tests/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.stderr rename to tests/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-simple.rs b/tests/ui/unboxed-closures/unboxed-closures-simple.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-simple.rs rename to tests/ui/unboxed-closures/unboxed-closures-simple.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-single-word-env.rs b/tests/ui/unboxed-closures/unboxed-closures-single-word-env.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-single-word-env.rs rename to tests/ui/unboxed-closures/unboxed-closures-single-word-env.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-static-call-fn-once.rs b/tests/ui/unboxed-closures/unboxed-closures-static-call-fn-once.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-static-call-fn-once.rs rename to tests/ui/unboxed-closures/unboxed-closures-static-call-fn-once.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.rs b/tests/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.rs rename to tests/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.stderr b/tests/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.stderr rename to tests/ui/unboxed-closures/unboxed-closures-static-call-wrong-trait.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-sugar-object.rs b/tests/ui/unboxed-closures/unboxed-closures-sugar-object.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-sugar-object.rs rename to tests/ui/unboxed-closures/unboxed-closures-sugar-object.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.rs b/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.rs rename to tests/ui/unboxed-closures/unboxed-closures-type-mismatch.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr b/tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr rename to tests/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-unique-type-id.rs b/tests/ui/unboxed-closures/unboxed-closures-unique-type-id.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-unique-type-id.rs rename to tests/ui/unboxed-closures/unboxed-closures-unique-type-id.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr b/tests/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr rename to tests/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.rs b/tests/ui/unboxed-closures/unboxed-closures-wrong-abi.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.rs rename to tests/ui/unboxed-closures/unboxed-closures-wrong-abi.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr b/tests/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr rename to tests/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.rs b/tests/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.rs rename to tests/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.rs diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr b/tests/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr rename to tests/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr diff --git a/src/test/ui/unboxed-closures/unboxed-closures-zero-args.rs b/tests/ui/unboxed-closures/unboxed-closures-zero-args.rs similarity index 100% rename from src/test/ui/unboxed-closures/unboxed-closures-zero-args.rs rename to tests/ui/unboxed-closures/unboxed-closures-zero-args.rs diff --git a/src/test/ui/unconstrained-none.rs b/tests/ui/unconstrained-none.rs similarity index 100% rename from src/test/ui/unconstrained-none.rs rename to tests/ui/unconstrained-none.rs diff --git a/src/test/ui/unconstrained-none.stderr b/tests/ui/unconstrained-none.stderr similarity index 100% rename from src/test/ui/unconstrained-none.stderr rename to tests/ui/unconstrained-none.stderr diff --git a/src/test/ui/unconstrained-ref.rs b/tests/ui/unconstrained-ref.rs similarity index 100% rename from src/test/ui/unconstrained-ref.rs rename to tests/ui/unconstrained-ref.rs diff --git a/src/test/ui/unconstrained-ref.stderr b/tests/ui/unconstrained-ref.stderr similarity index 100% rename from src/test/ui/unconstrained-ref.stderr rename to tests/ui/unconstrained-ref.stderr diff --git a/src/test/ui/underscore-ident-matcher.rs b/tests/ui/underscore-ident-matcher.rs similarity index 100% rename from src/test/ui/underscore-ident-matcher.rs rename to tests/ui/underscore-ident-matcher.rs diff --git a/src/test/ui/underscore-ident-matcher.stderr b/tests/ui/underscore-ident-matcher.stderr similarity index 100% rename from src/test/ui/underscore-ident-matcher.stderr rename to tests/ui/underscore-ident-matcher.stderr diff --git a/src/test/ui/underscore-imports/auxiliary/duplicate.rs b/tests/ui/underscore-imports/auxiliary/duplicate.rs similarity index 100% rename from src/test/ui/underscore-imports/auxiliary/duplicate.rs rename to tests/ui/underscore-imports/auxiliary/duplicate.rs diff --git a/src/test/ui/underscore-imports/auxiliary/underscore-imports.rs b/tests/ui/underscore-imports/auxiliary/underscore-imports.rs similarity index 100% rename from src/test/ui/underscore-imports/auxiliary/underscore-imports.rs rename to tests/ui/underscore-imports/auxiliary/underscore-imports.rs diff --git a/src/test/ui/underscore-imports/basic.rs b/tests/ui/underscore-imports/basic.rs similarity index 100% rename from src/test/ui/underscore-imports/basic.rs rename to tests/ui/underscore-imports/basic.rs diff --git a/src/test/ui/underscore-imports/basic.stderr b/tests/ui/underscore-imports/basic.stderr similarity index 100% rename from src/test/ui/underscore-imports/basic.stderr rename to tests/ui/underscore-imports/basic.stderr diff --git a/src/test/ui/underscore-imports/cycle.rs b/tests/ui/underscore-imports/cycle.rs similarity index 100% rename from src/test/ui/underscore-imports/cycle.rs rename to tests/ui/underscore-imports/cycle.rs diff --git a/src/test/ui/underscore-imports/duplicate.rs b/tests/ui/underscore-imports/duplicate.rs similarity index 100% rename from src/test/ui/underscore-imports/duplicate.rs rename to tests/ui/underscore-imports/duplicate.rs diff --git a/src/test/ui/underscore-imports/hygiene-2.rs b/tests/ui/underscore-imports/hygiene-2.rs similarity index 100% rename from src/test/ui/underscore-imports/hygiene-2.rs rename to tests/ui/underscore-imports/hygiene-2.rs diff --git a/src/test/ui/underscore-imports/hygiene.rs b/tests/ui/underscore-imports/hygiene.rs similarity index 100% rename from src/test/ui/underscore-imports/hygiene.rs rename to tests/ui/underscore-imports/hygiene.rs diff --git a/src/test/ui/underscore-imports/intercrate.rs b/tests/ui/underscore-imports/intercrate.rs similarity index 100% rename from src/test/ui/underscore-imports/intercrate.rs rename to tests/ui/underscore-imports/intercrate.rs diff --git a/src/test/ui/underscore-imports/macro-expanded.rs b/tests/ui/underscore-imports/macro-expanded.rs similarity index 100% rename from src/test/ui/underscore-imports/macro-expanded.rs rename to tests/ui/underscore-imports/macro-expanded.rs diff --git a/src/test/ui/underscore-imports/shadow.rs b/tests/ui/underscore-imports/shadow.rs similarity index 100% rename from src/test/ui/underscore-imports/shadow.rs rename to tests/ui/underscore-imports/shadow.rs diff --git a/src/test/ui/underscore-imports/shadow.stderr b/tests/ui/underscore-imports/shadow.stderr similarity index 100% rename from src/test/ui/underscore-imports/shadow.stderr rename to tests/ui/underscore-imports/shadow.stderr diff --git a/src/test/ui/underscore-imports/unused-2018.rs b/tests/ui/underscore-imports/unused-2018.rs similarity index 100% rename from src/test/ui/underscore-imports/unused-2018.rs rename to tests/ui/underscore-imports/unused-2018.rs diff --git a/src/test/ui/underscore-imports/unused-2018.stderr b/tests/ui/underscore-imports/unused-2018.stderr similarity index 100% rename from src/test/ui/underscore-imports/unused-2018.stderr rename to tests/ui/underscore-imports/unused-2018.stderr diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore-in-struct.rs b/tests/ui/underscore-lifetime/dyn-trait-underscore-in-struct.rs similarity index 100% rename from src/test/ui/underscore-lifetime/dyn-trait-underscore-in-struct.rs rename to tests/ui/underscore-lifetime/dyn-trait-underscore-in-struct.rs diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore-in-struct.stderr b/tests/ui/underscore-lifetime/dyn-trait-underscore-in-struct.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/dyn-trait-underscore-in-struct.stderr rename to tests/ui/underscore-lifetime/dyn-trait-underscore-in-struct.stderr diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore.rs b/tests/ui/underscore-lifetime/dyn-trait-underscore.rs similarity index 100% rename from src/test/ui/underscore-lifetime/dyn-trait-underscore.rs rename to tests/ui/underscore-lifetime/dyn-trait-underscore.rs diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr b/tests/ui/underscore-lifetime/dyn-trait-underscore.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr rename to tests/ui/underscore-lifetime/dyn-trait-underscore.stderr diff --git a/src/test/ui/underscore-lifetime/in-binder.rs b/tests/ui/underscore-lifetime/in-binder.rs similarity index 100% rename from src/test/ui/underscore-lifetime/in-binder.rs rename to tests/ui/underscore-lifetime/in-binder.rs diff --git a/src/test/ui/underscore-lifetime/in-binder.stderr b/tests/ui/underscore-lifetime/in-binder.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/in-binder.stderr rename to tests/ui/underscore-lifetime/in-binder.stderr diff --git a/src/test/ui/underscore-lifetime/in-fn-return-illegal.rs b/tests/ui/underscore-lifetime/in-fn-return-illegal.rs similarity index 100% rename from src/test/ui/underscore-lifetime/in-fn-return-illegal.rs rename to tests/ui/underscore-lifetime/in-fn-return-illegal.rs diff --git a/src/test/ui/underscore-lifetime/in-fn-return-illegal.stderr b/tests/ui/underscore-lifetime/in-fn-return-illegal.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/in-fn-return-illegal.stderr rename to tests/ui/underscore-lifetime/in-fn-return-illegal.stderr diff --git a/src/test/ui/underscore-lifetime/in-struct.rs b/tests/ui/underscore-lifetime/in-struct.rs similarity index 100% rename from src/test/ui/underscore-lifetime/in-struct.rs rename to tests/ui/underscore-lifetime/in-struct.rs diff --git a/src/test/ui/underscore-lifetime/in-struct.stderr b/tests/ui/underscore-lifetime/in-struct.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/in-struct.stderr rename to tests/ui/underscore-lifetime/in-struct.stderr diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-binders.rs b/tests/ui/underscore-lifetime/underscore-lifetime-binders.rs similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-lifetime-binders.rs rename to tests/ui/underscore-lifetime/underscore-lifetime-binders.rs diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr b/tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-lifetime-binders.stderr rename to tests/ui/underscore-lifetime/underscore-lifetime-binders.stderr diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.rs b/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.rs similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.rs rename to tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.rs diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr b/tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr rename to tests/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.stderr diff --git a/src/test/ui/underscore-lifetime/underscore-outlives-bounds.rs b/tests/ui/underscore-lifetime/underscore-outlives-bounds.rs similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-outlives-bounds.rs rename to tests/ui/underscore-lifetime/underscore-outlives-bounds.rs diff --git a/src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr b/tests/ui/underscore-lifetime/underscore-outlives-bounds.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/underscore-outlives-bounds.stderr rename to tests/ui/underscore-lifetime/underscore-outlives-bounds.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rs b/tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rs similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rs rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rs diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr b/tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2015.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr b/tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-ampersand.rust2018.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rs b/tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rs similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rs rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rs diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr b/tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2015.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr b/tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr rename to tests/ui/underscore-lifetime/where-clause-inherent-impl-underscore.rust2018.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rs b/tests/ui/underscore-lifetime/where-clause-trait-impl-region.rs similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rs rename to tests/ui/underscore-lifetime/where-clause-trait-impl-region.rs diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr b/tests/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr rename to tests/ui/underscore-lifetime/where-clause-trait-impl-region.rust2015.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr b/tests/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr rename to tests/ui/underscore-lifetime/where-clause-trait-impl-region.rust2018.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rs b/tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rs similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rs rename to tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rs diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr b/tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr rename to tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2015.stderr diff --git a/src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr b/tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr rename to tests/ui/underscore-lifetime/where-clause-trait-impl-underscore.rust2018.stderr diff --git a/src/test/ui/underscore-lifetime/where-clauses.rs b/tests/ui/underscore-lifetime/where-clauses.rs similarity index 100% rename from src/test/ui/underscore-lifetime/where-clauses.rs rename to tests/ui/underscore-lifetime/where-clauses.rs diff --git a/src/test/ui/underscore-lifetime/where-clauses.stderr b/tests/ui/underscore-lifetime/where-clauses.stderr similarity index 100% rename from src/test/ui/underscore-lifetime/where-clauses.stderr rename to tests/ui/underscore-lifetime/where-clauses.stderr diff --git a/src/test/ui/underscore-lifetimes.rs b/tests/ui/underscore-lifetimes.rs similarity index 100% rename from src/test/ui/underscore-lifetimes.rs rename to tests/ui/underscore-lifetimes.rs diff --git a/src/test/ui/underscore-method-after-integer.rs b/tests/ui/underscore-method-after-integer.rs similarity index 100% rename from src/test/ui/underscore-method-after-integer.rs rename to tests/ui/underscore-method-after-integer.rs diff --git a/src/test/ui/unevaluated_fixed_size_array_len.rs b/tests/ui/unevaluated_fixed_size_array_len.rs similarity index 100% rename from src/test/ui/unevaluated_fixed_size_array_len.rs rename to tests/ui/unevaluated_fixed_size_array_len.rs diff --git a/src/test/ui/unevaluated_fixed_size_array_len.stderr b/tests/ui/unevaluated_fixed_size_array_len.stderr similarity index 100% rename from src/test/ui/unevaluated_fixed_size_array_len.stderr rename to tests/ui/unevaluated_fixed_size_array_len.stderr diff --git a/src/test/ui/uniform-paths/auxiliary/issue-53691.rs b/tests/ui/uniform-paths/auxiliary/issue-53691.rs similarity index 100% rename from src/test/ui/uniform-paths/auxiliary/issue-53691.rs rename to tests/ui/uniform-paths/auxiliary/issue-53691.rs diff --git a/src/test/ui/uniform-paths/basic-nested.rs b/tests/ui/uniform-paths/basic-nested.rs similarity index 100% rename from src/test/ui/uniform-paths/basic-nested.rs rename to tests/ui/uniform-paths/basic-nested.rs diff --git a/src/test/ui/uniform-paths/basic.rs b/tests/ui/uniform-paths/basic.rs similarity index 100% rename from src/test/ui/uniform-paths/basic.rs rename to tests/ui/uniform-paths/basic.rs diff --git a/src/test/ui/uniform-paths/issue-53691.rs b/tests/ui/uniform-paths/issue-53691.rs similarity index 100% rename from src/test/ui/uniform-paths/issue-53691.rs rename to tests/ui/uniform-paths/issue-53691.rs diff --git a/src/test/ui/uniform-paths/macros-nested.rs b/tests/ui/uniform-paths/macros-nested.rs similarity index 100% rename from src/test/ui/uniform-paths/macros-nested.rs rename to tests/ui/uniform-paths/macros-nested.rs diff --git a/src/test/ui/uniform-paths/macros.rs b/tests/ui/uniform-paths/macros.rs similarity index 100% rename from src/test/ui/uniform-paths/macros.rs rename to tests/ui/uniform-paths/macros.rs diff --git a/src/test/ui/uniform-paths/same-crate.rs b/tests/ui/uniform-paths/same-crate.rs similarity index 100% rename from src/test/ui/uniform-paths/same-crate.rs rename to tests/ui/uniform-paths/same-crate.rs diff --git a/src/test/ui/uninhabited/exhaustive-wo-nevertype-issue-51221.rs b/tests/ui/uninhabited/exhaustive-wo-nevertype-issue-51221.rs similarity index 100% rename from src/test/ui/uninhabited/exhaustive-wo-nevertype-issue-51221.rs rename to tests/ui/uninhabited/exhaustive-wo-nevertype-issue-51221.rs diff --git a/src/test/ui/uninhabited/privately-uninhabited-dead-code.rs b/tests/ui/uninhabited/privately-uninhabited-dead-code.rs similarity index 100% rename from src/test/ui/uninhabited/privately-uninhabited-dead-code.rs rename to tests/ui/uninhabited/privately-uninhabited-dead-code.rs diff --git a/src/test/ui/uninhabited/privately-uninhabited-mir-call.rs b/tests/ui/uninhabited/privately-uninhabited-mir-call.rs similarity index 100% rename from src/test/ui/uninhabited/privately-uninhabited-mir-call.rs rename to tests/ui/uninhabited/privately-uninhabited-mir-call.rs diff --git a/src/test/ui/uninhabited/privately-uninhabited-mir-call.stderr b/tests/ui/uninhabited/privately-uninhabited-mir-call.stderr similarity index 100% rename from src/test/ui/uninhabited/privately-uninhabited-mir-call.stderr rename to tests/ui/uninhabited/privately-uninhabited-mir-call.stderr diff --git a/src/test/ui/uninhabited/uninhabited-enum-cast.rs b/tests/ui/uninhabited/uninhabited-enum-cast.rs similarity index 100% rename from src/test/ui/uninhabited/uninhabited-enum-cast.rs rename to tests/ui/uninhabited/uninhabited-enum-cast.rs diff --git a/src/test/ui/uninhabited/uninhabited-irrefutable.rs b/tests/ui/uninhabited/uninhabited-irrefutable.rs similarity index 100% rename from src/test/ui/uninhabited/uninhabited-irrefutable.rs rename to tests/ui/uninhabited/uninhabited-irrefutable.rs diff --git a/src/test/ui/uninhabited/uninhabited-irrefutable.stderr b/tests/ui/uninhabited/uninhabited-irrefutable.stderr similarity index 100% rename from src/test/ui/uninhabited/uninhabited-irrefutable.stderr rename to tests/ui/uninhabited/uninhabited-irrefutable.stderr diff --git a/src/test/ui/uninhabited/uninhabited-matches-feature-gated.rs b/tests/ui/uninhabited/uninhabited-matches-feature-gated.rs similarity index 100% rename from src/test/ui/uninhabited/uninhabited-matches-feature-gated.rs rename to tests/ui/uninhabited/uninhabited-matches-feature-gated.rs diff --git a/src/test/ui/uninhabited/uninhabited-matches-feature-gated.stderr b/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr similarity index 100% rename from src/test/ui/uninhabited/uninhabited-matches-feature-gated.stderr rename to tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr diff --git a/src/test/ui/uninhabited/uninhabited-patterns.rs b/tests/ui/uninhabited/uninhabited-patterns.rs similarity index 100% rename from src/test/ui/uninhabited/uninhabited-patterns.rs rename to tests/ui/uninhabited/uninhabited-patterns.rs diff --git a/src/test/ui/uninhabited/uninhabited-patterns.stderr b/tests/ui/uninhabited/uninhabited-patterns.stderr similarity index 100% rename from src/test/ui/uninhabited/uninhabited-patterns.stderr rename to tests/ui/uninhabited/uninhabited-patterns.stderr diff --git a/src/test/ui/uninit-empty-types.rs b/tests/ui/uninit-empty-types.rs similarity index 100% rename from src/test/ui/uninit-empty-types.rs rename to tests/ui/uninit-empty-types.rs diff --git a/src/test/ui/union/auxiliary/union.rs b/tests/ui/union/auxiliary/union.rs similarity index 100% rename from src/test/ui/union/auxiliary/union.rs rename to tests/ui/union/auxiliary/union.rs diff --git a/src/test/ui/union/field_checks.rs b/tests/ui/union/field_checks.rs similarity index 100% rename from src/test/ui/union/field_checks.rs rename to tests/ui/union/field_checks.rs diff --git a/src/test/ui/union/field_checks.stderr b/tests/ui/union/field_checks.stderr similarity index 100% rename from src/test/ui/union/field_checks.stderr rename to tests/ui/union/field_checks.stderr diff --git a/src/test/ui/union/issue-41073.rs b/tests/ui/union/issue-41073.rs similarity index 100% rename from src/test/ui/union/issue-41073.rs rename to tests/ui/union/issue-41073.rs diff --git a/src/test/ui/union/issue-41073.stderr b/tests/ui/union/issue-41073.stderr similarity index 100% rename from src/test/ui/union/issue-41073.stderr rename to tests/ui/union/issue-41073.stderr diff --git a/src/test/ui/union/issue-81199.rs b/tests/ui/union/issue-81199.rs similarity index 100% rename from src/test/ui/union/issue-81199.rs rename to tests/ui/union/issue-81199.rs diff --git a/src/test/ui/union/issue-81199.stderr b/tests/ui/union/issue-81199.stderr similarity index 100% rename from src/test/ui/union/issue-81199.stderr rename to tests/ui/union/issue-81199.stderr diff --git a/src/test/ui/union/issue-99375.rs b/tests/ui/union/issue-99375.rs similarity index 100% rename from src/test/ui/union/issue-99375.rs rename to tests/ui/union/issue-99375.rs diff --git a/src/test/ui/union/union-align.rs b/tests/ui/union/union-align.rs similarity index 100% rename from src/test/ui/union/union-align.rs rename to tests/ui/union/union-align.rs diff --git a/src/test/ui/union/union-backcomp.rs b/tests/ui/union/union-backcomp.rs similarity index 100% rename from src/test/ui/union/union-backcomp.rs rename to tests/ui/union/union-backcomp.rs diff --git a/src/test/ui/union/union-basic.rs b/tests/ui/union/union-basic.rs similarity index 100% rename from src/test/ui/union/union-basic.rs rename to tests/ui/union/union-basic.rs diff --git a/src/test/ui/union/union-borrow-move-parent-sibling.mirunsafeck.stderr b/tests/ui/union/union-borrow-move-parent-sibling.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-borrow-move-parent-sibling.mirunsafeck.stderr rename to tests/ui/union/union-borrow-move-parent-sibling.mirunsafeck.stderr diff --git a/src/test/ui/union/union-borrow-move-parent-sibling.rs b/tests/ui/union/union-borrow-move-parent-sibling.rs similarity index 100% rename from src/test/ui/union/union-borrow-move-parent-sibling.rs rename to tests/ui/union/union-borrow-move-parent-sibling.rs diff --git a/src/test/ui/union/union-borrow-move-parent-sibling.thirunsafeck.stderr b/tests/ui/union/union-borrow-move-parent-sibling.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-borrow-move-parent-sibling.thirunsafeck.stderr rename to tests/ui/union/union-borrow-move-parent-sibling.thirunsafeck.stderr diff --git a/src/test/ui/union/union-const-codegen.rs b/tests/ui/union/union-const-codegen.rs similarity index 100% rename from src/test/ui/union/union-const-codegen.rs rename to tests/ui/union/union-const-codegen.rs diff --git a/src/test/ui/union/union-const-eval-field.rs b/tests/ui/union/union-const-eval-field.rs similarity index 100% rename from src/test/ui/union/union-const-eval-field.rs rename to tests/ui/union/union-const-eval-field.rs diff --git a/src/test/ui/union/union-const-eval.rs b/tests/ui/union/union-const-eval.rs similarity index 100% rename from src/test/ui/union/union-const-eval.rs rename to tests/ui/union/union-const-eval.rs diff --git a/src/test/ui/union/union-const-pat.rs b/tests/ui/union/union-const-pat.rs similarity index 100% rename from src/test/ui/union/union-const-pat.rs rename to tests/ui/union/union-const-pat.rs diff --git a/src/test/ui/union/union-const-pat.stderr b/tests/ui/union/union-const-pat.stderr similarity index 100% rename from src/test/ui/union/union-const-pat.stderr rename to tests/ui/union/union-const-pat.stderr diff --git a/src/test/ui/union/union-copy.rs b/tests/ui/union/union-copy.rs similarity index 100% rename from src/test/ui/union/union-copy.rs rename to tests/ui/union/union-copy.rs diff --git a/src/test/ui/union/union-copy.stderr b/tests/ui/union/union-copy.stderr similarity index 100% rename from src/test/ui/union/union-copy.stderr rename to tests/ui/union/union-copy.stderr diff --git a/src/test/ui/union/union-deref.mirunsafeck.stderr b/tests/ui/union/union-deref.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-deref.mirunsafeck.stderr rename to tests/ui/union/union-deref.mirunsafeck.stderr diff --git a/src/test/ui/union/union-deref.rs b/tests/ui/union/union-deref.rs similarity index 100% rename from src/test/ui/union/union-deref.rs rename to tests/ui/union/union-deref.rs diff --git a/src/test/ui/union/union-deref.thirunsafeck.stderr b/tests/ui/union/union-deref.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-deref.thirunsafeck.stderr rename to tests/ui/union/union-deref.thirunsafeck.stderr diff --git a/src/test/ui/union/union-derive-clone.mirunsafeck.stderr b/tests/ui/union/union-derive-clone.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-derive-clone.mirunsafeck.stderr rename to tests/ui/union/union-derive-clone.mirunsafeck.stderr diff --git a/src/test/ui/union/union-derive-clone.rs b/tests/ui/union/union-derive-clone.rs similarity index 100% rename from src/test/ui/union/union-derive-clone.rs rename to tests/ui/union/union-derive-clone.rs diff --git a/src/test/ui/union/union-derive-clone.thirunsafeck.stderr b/tests/ui/union/union-derive-clone.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-derive-clone.thirunsafeck.stderr rename to tests/ui/union/union-derive-clone.thirunsafeck.stderr diff --git a/src/test/ui/union/union-derive-eq.mirunsafeck.stderr b/tests/ui/union/union-derive-eq.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-derive-eq.mirunsafeck.stderr rename to tests/ui/union/union-derive-eq.mirunsafeck.stderr diff --git a/src/test/ui/union/union-derive-eq.rs b/tests/ui/union/union-derive-eq.rs similarity index 100% rename from src/test/ui/union/union-derive-eq.rs rename to tests/ui/union/union-derive-eq.rs diff --git a/src/test/ui/union/union-derive-eq.thirunsafeck.stderr b/tests/ui/union/union-derive-eq.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-derive-eq.thirunsafeck.stderr rename to tests/ui/union/union-derive-eq.thirunsafeck.stderr diff --git a/src/test/ui/union/union-derive-rpass.rs b/tests/ui/union/union-derive-rpass.rs similarity index 100% rename from src/test/ui/union/union-derive-rpass.rs rename to tests/ui/union/union-derive-rpass.rs diff --git a/src/test/ui/union/union-derive.rs b/tests/ui/union/union-derive.rs similarity index 100% rename from src/test/ui/union/union-derive.rs rename to tests/ui/union/union-derive.rs diff --git a/src/test/ui/union/union-derive.stderr b/tests/ui/union/union-derive.stderr similarity index 100% rename from src/test/ui/union/union-derive.stderr rename to tests/ui/union/union-derive.stderr diff --git a/src/test/ui/union/union-drop-assign.rs b/tests/ui/union/union-drop-assign.rs similarity index 100% rename from src/test/ui/union/union-drop-assign.rs rename to tests/ui/union/union-drop-assign.rs diff --git a/src/test/ui/union/union-drop.rs b/tests/ui/union/union-drop.rs similarity index 100% rename from src/test/ui/union/union-drop.rs rename to tests/ui/union/union-drop.rs diff --git a/src/test/ui/union/union-empty.rs b/tests/ui/union/union-empty.rs similarity index 100% rename from src/test/ui/union/union-empty.rs rename to tests/ui/union/union-empty.rs diff --git a/src/test/ui/union/union-empty.stderr b/tests/ui/union/union-empty.stderr similarity index 100% rename from src/test/ui/union/union-empty.stderr rename to tests/ui/union/union-empty.stderr diff --git a/src/test/ui/union/union-fields-1.mirunsafeck.stderr b/tests/ui/union/union-fields-1.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-fields-1.mirunsafeck.stderr rename to tests/ui/union/union-fields-1.mirunsafeck.stderr diff --git a/src/test/ui/union/union-fields-1.rs b/tests/ui/union/union-fields-1.rs similarity index 100% rename from src/test/ui/union/union-fields-1.rs rename to tests/ui/union/union-fields-1.rs diff --git a/src/test/ui/union/union-fields-1.thirunsafeck.stderr b/tests/ui/union/union-fields-1.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-fields-1.thirunsafeck.stderr rename to tests/ui/union/union-fields-1.thirunsafeck.stderr diff --git a/src/test/ui/union/union-fields-2.mirunsafeck.stderr b/tests/ui/union/union-fields-2.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-fields-2.mirunsafeck.stderr rename to tests/ui/union/union-fields-2.mirunsafeck.stderr diff --git a/src/test/ui/union/union-fields-2.rs b/tests/ui/union/union-fields-2.rs similarity index 100% rename from src/test/ui/union/union-fields-2.rs rename to tests/ui/union/union-fields-2.rs diff --git a/src/test/ui/union/union-fields-2.thirunsafeck.stderr b/tests/ui/union/union-fields-2.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-fields-2.thirunsafeck.stderr rename to tests/ui/union/union-fields-2.thirunsafeck.stderr diff --git a/src/test/ui/union/union-generic-rpass.rs b/tests/ui/union/union-generic-rpass.rs similarity index 100% rename from src/test/ui/union/union-generic-rpass.rs rename to tests/ui/union/union-generic-rpass.rs diff --git a/src/test/ui/union/union-generic.mirunsafeck.stderr b/tests/ui/union/union-generic.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-generic.mirunsafeck.stderr rename to tests/ui/union/union-generic.mirunsafeck.stderr diff --git a/src/test/ui/union/union-generic.rs b/tests/ui/union/union-generic.rs similarity index 100% rename from src/test/ui/union/union-generic.rs rename to tests/ui/union/union-generic.rs diff --git a/src/test/ui/union/union-generic.thirunsafeck.stderr b/tests/ui/union/union-generic.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-generic.thirunsafeck.stderr rename to tests/ui/union/union-generic.thirunsafeck.stderr diff --git a/src/test/ui/union/union-inherent-method.rs b/tests/ui/union/union-inherent-method.rs similarity index 100% rename from src/test/ui/union/union-inherent-method.rs rename to tests/ui/union/union-inherent-method.rs diff --git a/src/test/ui/union/union-lint-dead-code.mirunsafeck.stderr b/tests/ui/union/union-lint-dead-code.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-lint-dead-code.mirunsafeck.stderr rename to tests/ui/union/union-lint-dead-code.mirunsafeck.stderr diff --git a/src/test/ui/union/union-lint-dead-code.rs b/tests/ui/union/union-lint-dead-code.rs similarity index 100% rename from src/test/ui/union/union-lint-dead-code.rs rename to tests/ui/union/union-lint-dead-code.rs diff --git a/src/test/ui/union/union-lint-dead-code.thirunsafeck.stderr b/tests/ui/union/union-lint-dead-code.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-lint-dead-code.thirunsafeck.stderr rename to tests/ui/union/union-lint-dead-code.thirunsafeck.stderr diff --git a/src/test/ui/union/union-macro.rs b/tests/ui/union/union-macro.rs similarity index 100% rename from src/test/ui/union/union-macro.rs rename to tests/ui/union/union-macro.rs diff --git a/src/test/ui/union/union-manuallydrop-rpass.rs b/tests/ui/union/union-manuallydrop-rpass.rs similarity index 100% rename from src/test/ui/union/union-manuallydrop-rpass.rs rename to tests/ui/union/union-manuallydrop-rpass.rs diff --git a/src/test/ui/union/union-move.mirunsafeck.stderr b/tests/ui/union/union-move.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-move.mirunsafeck.stderr rename to tests/ui/union/union-move.mirunsafeck.stderr diff --git a/src/test/ui/union/union-move.rs b/tests/ui/union/union-move.rs similarity index 100% rename from src/test/ui/union/union-move.rs rename to tests/ui/union/union-move.rs diff --git a/src/test/ui/union/union-move.thirunsafeck.stderr b/tests/ui/union/union-move.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-move.thirunsafeck.stderr rename to tests/ui/union/union-move.thirunsafeck.stderr diff --git a/src/test/ui/union/union-nodrop.rs b/tests/ui/union/union-nodrop.rs similarity index 100% rename from src/test/ui/union/union-nodrop.rs rename to tests/ui/union/union-nodrop.rs diff --git a/src/test/ui/union/union-nonrepresentable.rs b/tests/ui/union/union-nonrepresentable.rs similarity index 100% rename from src/test/ui/union/union-nonrepresentable.rs rename to tests/ui/union/union-nonrepresentable.rs diff --git a/src/test/ui/union/union-nonrepresentable.stderr b/tests/ui/union/union-nonrepresentable.stderr similarity index 100% rename from src/test/ui/union/union-nonrepresentable.stderr rename to tests/ui/union/union-nonrepresentable.stderr diff --git a/src/test/ui/union/union-nonzero.rs b/tests/ui/union/union-nonzero.rs similarity index 100% rename from src/test/ui/union/union-nonzero.rs rename to tests/ui/union/union-nonzero.rs diff --git a/src/test/ui/union/union-overwrite.rs b/tests/ui/union/union-overwrite.rs similarity index 100% rename from src/test/ui/union/union-overwrite.rs rename to tests/ui/union/union-overwrite.rs diff --git a/src/test/ui/union/union-packed.rs b/tests/ui/union/union-packed.rs similarity index 100% rename from src/test/ui/union/union-packed.rs rename to tests/ui/union/union-packed.rs diff --git a/src/test/ui/union/union-pat-refutability.rs b/tests/ui/union/union-pat-refutability.rs similarity index 100% rename from src/test/ui/union/union-pat-refutability.rs rename to tests/ui/union/union-pat-refutability.rs diff --git a/src/test/ui/union/union-repr-c.rs b/tests/ui/union/union-repr-c.rs similarity index 100% rename from src/test/ui/union/union-repr-c.rs rename to tests/ui/union/union-repr-c.rs diff --git a/src/test/ui/union/union-repr-c.stderr b/tests/ui/union/union-repr-c.stderr similarity index 100% rename from src/test/ui/union/union-repr-c.stderr rename to tests/ui/union/union-repr-c.stderr diff --git a/src/test/ui/union/union-sized-field.rs b/tests/ui/union/union-sized-field.rs similarity index 100% rename from src/test/ui/union/union-sized-field.rs rename to tests/ui/union/union-sized-field.rs diff --git a/src/test/ui/union/union-sized-field.stderr b/tests/ui/union/union-sized-field.stderr similarity index 100% rename from src/test/ui/union/union-sized-field.stderr rename to tests/ui/union/union-sized-field.stderr diff --git a/src/test/ui/union/union-suggest-field.mirunsafeck.stderr b/tests/ui/union/union-suggest-field.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-suggest-field.mirunsafeck.stderr rename to tests/ui/union/union-suggest-field.mirunsafeck.stderr diff --git a/src/test/ui/union/union-suggest-field.rs b/tests/ui/union/union-suggest-field.rs similarity index 100% rename from src/test/ui/union/union-suggest-field.rs rename to tests/ui/union/union-suggest-field.rs diff --git a/src/test/ui/union/union-suggest-field.thirunsafeck.stderr b/tests/ui/union/union-suggest-field.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-suggest-field.thirunsafeck.stderr rename to tests/ui/union/union-suggest-field.thirunsafeck.stderr diff --git a/src/test/ui/union/union-trait-impl.rs b/tests/ui/union/union-trait-impl.rs similarity index 100% rename from src/test/ui/union/union-trait-impl.rs rename to tests/ui/union/union-trait-impl.rs diff --git a/src/test/ui/union/union-transmute.rs b/tests/ui/union/union-transmute.rs similarity index 100% rename from src/test/ui/union/union-transmute.rs rename to tests/ui/union/union-transmute.rs diff --git a/src/test/ui/union/union-unsafe.mir.stderr b/tests/ui/union/union-unsafe.mir.stderr similarity index 100% rename from src/test/ui/union/union-unsafe.mir.stderr rename to tests/ui/union/union-unsafe.mir.stderr diff --git a/src/test/ui/union/union-unsafe.rs b/tests/ui/union/union-unsafe.rs similarity index 100% rename from src/test/ui/union/union-unsafe.rs rename to tests/ui/union/union-unsafe.rs diff --git a/src/test/ui/union/union-unsafe.thir.stderr b/tests/ui/union/union-unsafe.thir.stderr similarity index 100% rename from src/test/ui/union/union-unsafe.thir.stderr rename to tests/ui/union/union-unsafe.thir.stderr diff --git a/src/test/ui/union/union-unsized.mirunsafeck.stderr b/tests/ui/union/union-unsized.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-unsized.mirunsafeck.stderr rename to tests/ui/union/union-unsized.mirunsafeck.stderr diff --git a/src/test/ui/union/union-unsized.rs b/tests/ui/union/union-unsized.rs similarity index 100% rename from src/test/ui/union/union-unsized.rs rename to tests/ui/union/union-unsized.rs diff --git a/src/test/ui/union/union-unsized.thirunsafeck.stderr b/tests/ui/union/union-unsized.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-unsized.thirunsafeck.stderr rename to tests/ui/union/union-unsized.thirunsafeck.stderr diff --git a/src/test/ui/union/union-with-drop-fields.mirunsafeck.stderr b/tests/ui/union/union-with-drop-fields.mirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-with-drop-fields.mirunsafeck.stderr rename to tests/ui/union/union-with-drop-fields.mirunsafeck.stderr diff --git a/src/test/ui/union/union-with-drop-fields.rs b/tests/ui/union/union-with-drop-fields.rs similarity index 100% rename from src/test/ui/union/union-with-drop-fields.rs rename to tests/ui/union/union-with-drop-fields.rs diff --git a/src/test/ui/union/union-with-drop-fields.thirunsafeck.stderr b/tests/ui/union/union-with-drop-fields.thirunsafeck.stderr similarity index 100% rename from src/test/ui/union/union-with-drop-fields.thirunsafeck.stderr rename to tests/ui/union/union-with-drop-fields.thirunsafeck.stderr diff --git a/src/test/ui/unique-object-noncopyable.rs b/tests/ui/unique-object-noncopyable.rs similarity index 100% rename from src/test/ui/unique-object-noncopyable.rs rename to tests/ui/unique-object-noncopyable.rs diff --git a/src/test/ui/unique-object-noncopyable.stderr b/tests/ui/unique-object-noncopyable.stderr similarity index 100% rename from src/test/ui/unique-object-noncopyable.stderr rename to tests/ui/unique-object-noncopyable.stderr diff --git a/src/test/ui/unique-pinned-nocopy.rs b/tests/ui/unique-pinned-nocopy.rs similarity index 100% rename from src/test/ui/unique-pinned-nocopy.rs rename to tests/ui/unique-pinned-nocopy.rs diff --git a/src/test/ui/unique-pinned-nocopy.stderr b/tests/ui/unique-pinned-nocopy.stderr similarity index 100% rename from src/test/ui/unique-pinned-nocopy.stderr rename to tests/ui/unique-pinned-nocopy.stderr diff --git a/src/test/ui/unique/unique-assign-copy.rs b/tests/ui/unique/unique-assign-copy.rs similarity index 100% rename from src/test/ui/unique/unique-assign-copy.rs rename to tests/ui/unique/unique-assign-copy.rs diff --git a/src/test/ui/unique/unique-assign-drop.rs b/tests/ui/unique/unique-assign-drop.rs similarity index 100% rename from src/test/ui/unique/unique-assign-drop.rs rename to tests/ui/unique/unique-assign-drop.rs diff --git a/src/test/ui/unique/unique-assign-generic.rs b/tests/ui/unique/unique-assign-generic.rs similarity index 100% rename from src/test/ui/unique/unique-assign-generic.rs rename to tests/ui/unique/unique-assign-generic.rs diff --git a/src/test/ui/unique/unique-assign.rs b/tests/ui/unique/unique-assign.rs similarity index 100% rename from src/test/ui/unique/unique-assign.rs rename to tests/ui/unique/unique-assign.rs diff --git a/src/test/ui/unique/unique-autoderef-field.rs b/tests/ui/unique/unique-autoderef-field.rs similarity index 100% rename from src/test/ui/unique/unique-autoderef-field.rs rename to tests/ui/unique/unique-autoderef-field.rs diff --git a/src/test/ui/unique/unique-autoderef-index.rs b/tests/ui/unique/unique-autoderef-index.rs similarity index 100% rename from src/test/ui/unique/unique-autoderef-index.rs rename to tests/ui/unique/unique-autoderef-index.rs diff --git a/src/test/ui/unique/unique-cmp.rs b/tests/ui/unique/unique-cmp.rs similarity index 100% rename from src/test/ui/unique/unique-cmp.rs rename to tests/ui/unique/unique-cmp.rs diff --git a/src/test/ui/unique/unique-containing-tag.rs b/tests/ui/unique/unique-containing-tag.rs similarity index 100% rename from src/test/ui/unique/unique-containing-tag.rs rename to tests/ui/unique/unique-containing-tag.rs diff --git a/src/test/ui/unique/unique-create.rs b/tests/ui/unique/unique-create.rs similarity index 100% rename from src/test/ui/unique/unique-create.rs rename to tests/ui/unique/unique-create.rs diff --git a/src/test/ui/unique/unique-decl-init-copy.rs b/tests/ui/unique/unique-decl-init-copy.rs similarity index 100% rename from src/test/ui/unique/unique-decl-init-copy.rs rename to tests/ui/unique/unique-decl-init-copy.rs diff --git a/src/test/ui/unique/unique-decl-init.rs b/tests/ui/unique/unique-decl-init.rs similarity index 100% rename from src/test/ui/unique/unique-decl-init.rs rename to tests/ui/unique/unique-decl-init.rs diff --git a/src/test/ui/unique/unique-decl-move.rs b/tests/ui/unique/unique-decl-move.rs similarity index 100% rename from src/test/ui/unique/unique-decl-move.rs rename to tests/ui/unique/unique-decl-move.rs diff --git a/src/test/ui/unique/unique-decl.rs b/tests/ui/unique/unique-decl.rs similarity index 100% rename from src/test/ui/unique/unique-decl.rs rename to tests/ui/unique/unique-decl.rs diff --git a/src/test/ui/unique/unique-deref.rs b/tests/ui/unique/unique-deref.rs similarity index 100% rename from src/test/ui/unique/unique-deref.rs rename to tests/ui/unique/unique-deref.rs diff --git a/src/test/ui/unique/unique-destructure.rs b/tests/ui/unique/unique-destructure.rs similarity index 100% rename from src/test/ui/unique/unique-destructure.rs rename to tests/ui/unique/unique-destructure.rs diff --git a/src/test/ui/unique/unique-drop-complex.rs b/tests/ui/unique/unique-drop-complex.rs similarity index 100% rename from src/test/ui/unique/unique-drop-complex.rs rename to tests/ui/unique/unique-drop-complex.rs diff --git a/src/test/ui/unique/unique-ffi-symbols.rs b/tests/ui/unique/unique-ffi-symbols.rs similarity index 100% rename from src/test/ui/unique/unique-ffi-symbols.rs rename to tests/ui/unique/unique-ffi-symbols.rs diff --git a/src/test/ui/unique/unique-fn-arg-move.rs b/tests/ui/unique/unique-fn-arg-move.rs similarity index 100% rename from src/test/ui/unique/unique-fn-arg-move.rs rename to tests/ui/unique/unique-fn-arg-move.rs diff --git a/src/test/ui/unique/unique-fn-arg-mut.rs b/tests/ui/unique/unique-fn-arg-mut.rs similarity index 100% rename from src/test/ui/unique/unique-fn-arg-mut.rs rename to tests/ui/unique/unique-fn-arg-mut.rs diff --git a/src/test/ui/unique/unique-fn-arg.rs b/tests/ui/unique/unique-fn-arg.rs similarity index 100% rename from src/test/ui/unique/unique-fn-arg.rs rename to tests/ui/unique/unique-fn-arg.rs diff --git a/src/test/ui/unique/unique-fn-ret.rs b/tests/ui/unique/unique-fn-ret.rs similarity index 100% rename from src/test/ui/unique/unique-fn-ret.rs rename to tests/ui/unique/unique-fn-ret.rs diff --git a/src/test/ui/unique/unique-generic-assign.rs b/tests/ui/unique/unique-generic-assign.rs similarity index 100% rename from src/test/ui/unique/unique-generic-assign.rs rename to tests/ui/unique/unique-generic-assign.rs diff --git a/src/test/ui/unique/unique-in-tag.rs b/tests/ui/unique/unique-in-tag.rs similarity index 100% rename from src/test/ui/unique/unique-in-tag.rs rename to tests/ui/unique/unique-in-tag.rs diff --git a/src/test/ui/unique/unique-in-vec-copy.rs b/tests/ui/unique/unique-in-vec-copy.rs similarity index 100% rename from src/test/ui/unique/unique-in-vec-copy.rs rename to tests/ui/unique/unique-in-vec-copy.rs diff --git a/src/test/ui/unique/unique-in-vec.rs b/tests/ui/unique/unique-in-vec.rs similarity index 100% rename from src/test/ui/unique/unique-in-vec.rs rename to tests/ui/unique/unique-in-vec.rs diff --git a/src/test/ui/unique/unique-init.rs b/tests/ui/unique/unique-init.rs similarity index 100% rename from src/test/ui/unique/unique-init.rs rename to tests/ui/unique/unique-init.rs diff --git a/src/test/ui/unique/unique-kinds.rs b/tests/ui/unique/unique-kinds.rs similarity index 100% rename from src/test/ui/unique/unique-kinds.rs rename to tests/ui/unique/unique-kinds.rs diff --git a/src/test/ui/unique/unique-log.rs b/tests/ui/unique/unique-log.rs similarity index 100% rename from src/test/ui/unique/unique-log.rs rename to tests/ui/unique/unique-log.rs diff --git a/src/test/ui/unique/unique-match-discrim.rs b/tests/ui/unique/unique-match-discrim.rs similarity index 100% rename from src/test/ui/unique/unique-match-discrim.rs rename to tests/ui/unique/unique-match-discrim.rs diff --git a/src/test/ui/unique/unique-move-drop.rs b/tests/ui/unique/unique-move-drop.rs similarity index 100% rename from src/test/ui/unique/unique-move-drop.rs rename to tests/ui/unique/unique-move-drop.rs diff --git a/src/test/ui/unique/unique-move-temp.rs b/tests/ui/unique/unique-move-temp.rs similarity index 100% rename from src/test/ui/unique/unique-move-temp.rs rename to tests/ui/unique/unique-move-temp.rs diff --git a/src/test/ui/unique/unique-move.rs b/tests/ui/unique/unique-move.rs similarity index 100% rename from src/test/ui/unique/unique-move.rs rename to tests/ui/unique/unique-move.rs diff --git a/src/test/ui/unique/unique-mutable.rs b/tests/ui/unique/unique-mutable.rs similarity index 100% rename from src/test/ui/unique/unique-mutable.rs rename to tests/ui/unique/unique-mutable.rs diff --git a/src/test/ui/unique/unique-object-move.rs b/tests/ui/unique/unique-object-move.rs similarity index 100% rename from src/test/ui/unique/unique-object-move.rs rename to tests/ui/unique/unique-object-move.rs diff --git a/src/test/ui/unique/unique-pat-2.rs b/tests/ui/unique/unique-pat-2.rs similarity index 100% rename from src/test/ui/unique/unique-pat-2.rs rename to tests/ui/unique/unique-pat-2.rs diff --git a/src/test/ui/unique/unique-pat-3.rs b/tests/ui/unique/unique-pat-3.rs similarity index 100% rename from src/test/ui/unique/unique-pat-3.rs rename to tests/ui/unique/unique-pat-3.rs diff --git a/src/test/ui/unique/unique-pat.rs b/tests/ui/unique/unique-pat.rs similarity index 100% rename from src/test/ui/unique/unique-pat.rs rename to tests/ui/unique/unique-pat.rs diff --git a/src/test/ui/unique/unique-rec.rs b/tests/ui/unique/unique-rec.rs similarity index 100% rename from src/test/ui/unique/unique-rec.rs rename to tests/ui/unique/unique-rec.rs diff --git a/src/test/ui/unique/unique-send-2.rs b/tests/ui/unique/unique-send-2.rs similarity index 100% rename from src/test/ui/unique/unique-send-2.rs rename to tests/ui/unique/unique-send-2.rs diff --git a/src/test/ui/unique/unique-send.rs b/tests/ui/unique/unique-send.rs similarity index 100% rename from src/test/ui/unique/unique-send.rs rename to tests/ui/unique/unique-send.rs diff --git a/src/test/ui/unique/unique-swap.rs b/tests/ui/unique/unique-swap.rs similarity index 100% rename from src/test/ui/unique/unique-swap.rs rename to tests/ui/unique/unique-swap.rs diff --git a/src/test/ui/unit.rs b/tests/ui/unit.rs similarity index 100% rename from src/test/ui/unit.rs rename to tests/ui/unit.rs diff --git a/src/test/ui/unknown-language-item.rs b/tests/ui/unknown-language-item.rs similarity index 100% rename from src/test/ui/unknown-language-item.rs rename to tests/ui/unknown-language-item.rs diff --git a/src/test/ui/unknown-language-item.stderr b/tests/ui/unknown-language-item.stderr similarity index 100% rename from src/test/ui/unknown-language-item.stderr rename to tests/ui/unknown-language-item.stderr diff --git a/src/test/ui/unknown-lint-tool-name.rs b/tests/ui/unknown-lint-tool-name.rs similarity index 100% rename from src/test/ui/unknown-lint-tool-name.rs rename to tests/ui/unknown-lint-tool-name.rs diff --git a/src/test/ui/unknown-lint-tool-name.stderr b/tests/ui/unknown-lint-tool-name.stderr similarity index 100% rename from src/test/ui/unknown-lint-tool-name.stderr rename to tests/ui/unknown-lint-tool-name.stderr diff --git a/src/test/ui/unknown-llvm-arg.rs b/tests/ui/unknown-llvm-arg.rs similarity index 100% rename from src/test/ui/unknown-llvm-arg.rs rename to tests/ui/unknown-llvm-arg.rs diff --git a/src/test/ui/unknown-llvm-arg.stderr b/tests/ui/unknown-llvm-arg.stderr similarity index 100% rename from src/test/ui/unknown-llvm-arg.stderr rename to tests/ui/unknown-llvm-arg.stderr diff --git a/src/test/ui/unknown-tool-name.rs b/tests/ui/unknown-tool-name.rs similarity index 100% rename from src/test/ui/unknown-tool-name.rs rename to tests/ui/unknown-tool-name.rs diff --git a/src/test/ui/unknown-tool-name.stderr b/tests/ui/unknown-tool-name.stderr similarity index 100% rename from src/test/ui/unknown-tool-name.stderr rename to tests/ui/unknown-tool-name.stderr diff --git a/src/test/ui/unknown-unstable-lints/allow-unknown-unstable-lint-command-line.rs b/tests/ui/unknown-unstable-lints/allow-unknown-unstable-lint-command-line.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/allow-unknown-unstable-lint-command-line.rs rename to tests/ui/unknown-unstable-lints/allow-unknown-unstable-lint-command-line.rs diff --git a/src/test/ui/unknown-unstable-lints/allow-unknown-unstable-lint-inline.rs b/tests/ui/unknown-unstable-lints/allow-unknown-unstable-lint-inline.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/allow-unknown-unstable-lint-inline.rs rename to tests/ui/unknown-unstable-lints/allow-unknown-unstable-lint-inline.rs diff --git a/src/test/ui/unknown-unstable-lints/deny-unstable-lint-command-line.rs b/tests/ui/unknown-unstable-lints/deny-unstable-lint-command-line.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/deny-unstable-lint-command-line.rs rename to tests/ui/unknown-unstable-lints/deny-unstable-lint-command-line.rs diff --git a/src/test/ui/unknown-unstable-lints/deny-unstable-lint-command-line.stderr b/tests/ui/unknown-unstable-lints/deny-unstable-lint-command-line.stderr similarity index 100% rename from src/test/ui/unknown-unstable-lints/deny-unstable-lint-command-line.stderr rename to tests/ui/unknown-unstable-lints/deny-unstable-lint-command-line.stderr diff --git a/src/test/ui/unknown-unstable-lints/deny-unstable-lint-inline.rs b/tests/ui/unknown-unstable-lints/deny-unstable-lint-inline.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/deny-unstable-lint-inline.rs rename to tests/ui/unknown-unstable-lints/deny-unstable-lint-inline.rs diff --git a/src/test/ui/unknown-unstable-lints/deny-unstable-lint-inline.stderr b/tests/ui/unknown-unstable-lints/deny-unstable-lint-inline.stderr similarity index 100% rename from src/test/ui/unknown-unstable-lints/deny-unstable-lint-inline.stderr rename to tests/ui/unknown-unstable-lints/deny-unstable-lint-inline.stderr diff --git a/src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.rs b/tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.rs rename to tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.rs diff --git a/src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.stderr b/tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.stderr similarity index 100% rename from src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.stderr rename to tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-command-line.stderr diff --git a/src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.rs b/tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.rs similarity index 100% rename from src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.rs rename to tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.rs diff --git a/src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.stderr b/tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.stderr similarity index 100% rename from src/test/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.stderr rename to tests/ui/unknown-unstable-lints/warn-unknown-unstable-lint-inline.stderr diff --git a/src/test/ui/unnamed_argument_mode.rs b/tests/ui/unnamed_argument_mode.rs similarity index 100% rename from src/test/ui/unnamed_argument_mode.rs rename to tests/ui/unnamed_argument_mode.rs diff --git a/src/test/ui/unop-move-semantics.rs b/tests/ui/unop-move-semantics.rs similarity index 100% rename from src/test/ui/unop-move-semantics.rs rename to tests/ui/unop-move-semantics.rs diff --git a/src/test/ui/unop-move-semantics.stderr b/tests/ui/unop-move-semantics.stderr similarity index 100% rename from src/test/ui/unop-move-semantics.stderr rename to tests/ui/unop-move-semantics.stderr diff --git a/src/test/ui/unop-neg-bool.rs b/tests/ui/unop-neg-bool.rs similarity index 100% rename from src/test/ui/unop-neg-bool.rs rename to tests/ui/unop-neg-bool.rs diff --git a/src/test/ui/unop-neg-bool.stderr b/tests/ui/unop-neg-bool.stderr similarity index 100% rename from src/test/ui/unop-neg-bool.stderr rename to tests/ui/unop-neg-bool.stderr diff --git a/src/test/ui/unpretty-expr-fn-arg.rs b/tests/ui/unpretty-expr-fn-arg.rs similarity index 100% rename from src/test/ui/unpretty-expr-fn-arg.rs rename to tests/ui/unpretty-expr-fn-arg.rs diff --git a/src/test/ui/unpretty-expr-fn-arg.stdout b/tests/ui/unpretty-expr-fn-arg.stdout similarity index 100% rename from src/test/ui/unpretty-expr-fn-arg.stdout rename to tests/ui/unpretty-expr-fn-arg.stdout diff --git a/src/test/ui/unpretty/avoid-crash.rs b/tests/ui/unpretty/avoid-crash.rs similarity index 100% rename from src/test/ui/unpretty/avoid-crash.rs rename to tests/ui/unpretty/avoid-crash.rs diff --git a/src/test/ui/unpretty/avoid-crash.stderr b/tests/ui/unpretty/avoid-crash.stderr similarity index 100% rename from src/test/ui/unpretty/avoid-crash.stderr rename to tests/ui/unpretty/avoid-crash.stderr diff --git a/src/test/ui/unpretty/bad-literal.rs b/tests/ui/unpretty/bad-literal.rs similarity index 100% rename from src/test/ui/unpretty/bad-literal.rs rename to tests/ui/unpretty/bad-literal.rs diff --git a/src/test/ui/unpretty/bad-literal.stderr b/tests/ui/unpretty/bad-literal.stderr similarity index 100% rename from src/test/ui/unpretty/bad-literal.stderr rename to tests/ui/unpretty/bad-literal.stderr diff --git a/src/test/ui/unpretty/bad-literal.stdout b/tests/ui/unpretty/bad-literal.stdout similarity index 100% rename from src/test/ui/unpretty/bad-literal.stdout rename to tests/ui/unpretty/bad-literal.stdout diff --git a/src/test/ui/unpretty/pretty-let-else.rs b/tests/ui/unpretty/pretty-let-else.rs similarity index 100% rename from src/test/ui/unpretty/pretty-let-else.rs rename to tests/ui/unpretty/pretty-let-else.rs diff --git a/src/test/ui/unpretty/pretty-let-else.stdout b/tests/ui/unpretty/pretty-let-else.stdout similarity index 100% rename from src/test/ui/unpretty/pretty-let-else.stdout rename to tests/ui/unpretty/pretty-let-else.stdout diff --git a/src/test/ui/unreachable-code-1.rs b/tests/ui/unreachable-code-1.rs similarity index 100% rename from src/test/ui/unreachable-code-1.rs rename to tests/ui/unreachable-code-1.rs diff --git a/src/test/ui/unreachable-code.rs b/tests/ui/unreachable-code.rs similarity index 100% rename from src/test/ui/unreachable-code.rs rename to tests/ui/unreachable-code.rs diff --git a/src/test/ui/unresolved/unresolved-asterisk-imports.rs b/tests/ui/unresolved/unresolved-asterisk-imports.rs similarity index 100% rename from src/test/ui/unresolved/unresolved-asterisk-imports.rs rename to tests/ui/unresolved/unresolved-asterisk-imports.rs diff --git a/src/test/ui/unresolved/unresolved-asterisk-imports.stderr b/tests/ui/unresolved/unresolved-asterisk-imports.stderr similarity index 100% rename from src/test/ui/unresolved/unresolved-asterisk-imports.stderr rename to tests/ui/unresolved/unresolved-asterisk-imports.stderr diff --git a/src/test/ui/unresolved/unresolved-candidates.rs b/tests/ui/unresolved/unresolved-candidates.rs similarity index 100% rename from src/test/ui/unresolved/unresolved-candidates.rs rename to tests/ui/unresolved/unresolved-candidates.rs diff --git a/src/test/ui/unresolved/unresolved-candidates.stderr b/tests/ui/unresolved/unresolved-candidates.stderr similarity index 100% rename from src/test/ui/unresolved/unresolved-candidates.stderr rename to tests/ui/unresolved/unresolved-candidates.stderr diff --git a/src/test/ui/unresolved/unresolved-extern-mod-suggestion.rs b/tests/ui/unresolved/unresolved-extern-mod-suggestion.rs similarity index 100% rename from src/test/ui/unresolved/unresolved-extern-mod-suggestion.rs rename to tests/ui/unresolved/unresolved-extern-mod-suggestion.rs diff --git a/src/test/ui/unresolved/unresolved-extern-mod-suggestion.stderr b/tests/ui/unresolved/unresolved-extern-mod-suggestion.stderr similarity index 100% rename from src/test/ui/unresolved/unresolved-extern-mod-suggestion.stderr rename to tests/ui/unresolved/unresolved-extern-mod-suggestion.stderr diff --git a/src/test/ui/unresolved/unresolved-import-recovery.rs b/tests/ui/unresolved/unresolved-import-recovery.rs similarity index 100% rename from src/test/ui/unresolved/unresolved-import-recovery.rs rename to tests/ui/unresolved/unresolved-import-recovery.rs diff --git a/src/test/ui/unresolved/unresolved-import-recovery.stderr b/tests/ui/unresolved/unresolved-import-recovery.stderr similarity index 100% rename from src/test/ui/unresolved/unresolved-import-recovery.stderr rename to tests/ui/unresolved/unresolved-import-recovery.stderr diff --git a/src/test/ui/unresolved/unresolved-import.rs b/tests/ui/unresolved/unresolved-import.rs similarity index 100% rename from src/test/ui/unresolved/unresolved-import.rs rename to tests/ui/unresolved/unresolved-import.rs diff --git a/src/test/ui/unresolved/unresolved-import.stderr b/tests/ui/unresolved/unresolved-import.stderr similarity index 100% rename from src/test/ui/unresolved/unresolved-import.stderr rename to tests/ui/unresolved/unresolved-import.stderr diff --git a/src/test/ui/unsafe-fn-called-from-unsafe-blk.rs b/tests/ui/unsafe-fn-called-from-unsafe-blk.rs similarity index 100% rename from src/test/ui/unsafe-fn-called-from-unsafe-blk.rs rename to tests/ui/unsafe-fn-called-from-unsafe-blk.rs diff --git a/src/test/ui/unsafe-fn-called-from-unsafe-fn.rs b/tests/ui/unsafe-fn-called-from-unsafe-fn.rs similarity index 100% rename from src/test/ui/unsafe-fn-called-from-unsafe-fn.rs rename to tests/ui/unsafe-fn-called-from-unsafe-fn.rs diff --git a/src/test/ui/unsafe-pointer-assignability.rs b/tests/ui/unsafe-pointer-assignability.rs similarity index 100% rename from src/test/ui/unsafe-pointer-assignability.rs rename to tests/ui/unsafe-pointer-assignability.rs diff --git a/src/test/ui/unsafe/access_union_field.mir.stderr b/tests/ui/unsafe/access_union_field.mir.stderr similarity index 100% rename from src/test/ui/unsafe/access_union_field.mir.stderr rename to tests/ui/unsafe/access_union_field.mir.stderr diff --git a/src/test/ui/unsafe/access_union_field.rs b/tests/ui/unsafe/access_union_field.rs similarity index 100% rename from src/test/ui/unsafe/access_union_field.rs rename to tests/ui/unsafe/access_union_field.rs diff --git a/src/test/ui/unsafe/access_union_field.thir.stderr b/tests/ui/unsafe/access_union_field.thir.stderr similarity index 100% rename from src/test/ui/unsafe/access_union_field.thir.stderr rename to tests/ui/unsafe/access_union_field.thir.stderr diff --git a/src/test/ui/unsafe/auxiliary/issue-106126.rs b/tests/ui/unsafe/auxiliary/issue-106126.rs similarity index 100% rename from src/test/ui/unsafe/auxiliary/issue-106126.rs rename to tests/ui/unsafe/auxiliary/issue-106126.rs diff --git a/src/test/ui/unsafe/inline_asm.mir.stderr b/tests/ui/unsafe/inline_asm.mir.stderr similarity index 100% rename from src/test/ui/unsafe/inline_asm.mir.stderr rename to tests/ui/unsafe/inline_asm.mir.stderr diff --git a/src/test/ui/unsafe/inline_asm.rs b/tests/ui/unsafe/inline_asm.rs similarity index 100% rename from src/test/ui/unsafe/inline_asm.rs rename to tests/ui/unsafe/inline_asm.rs diff --git a/src/test/ui/unsafe/inline_asm.thir.stderr b/tests/ui/unsafe/inline_asm.thir.stderr similarity index 100% rename from src/test/ui/unsafe/inline_asm.thir.stderr rename to tests/ui/unsafe/inline_asm.thir.stderr diff --git a/src/test/ui/unsafe/issue-106126-good-path-bug.rs b/tests/ui/unsafe/issue-106126-good-path-bug.rs similarity index 100% rename from src/test/ui/unsafe/issue-106126-good-path-bug.rs rename to tests/ui/unsafe/issue-106126-good-path-bug.rs diff --git a/src/test/ui/unsafe/issue-3080.mir.stderr b/tests/ui/unsafe/issue-3080.mir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-3080.mir.stderr rename to tests/ui/unsafe/issue-3080.mir.stderr diff --git a/src/test/ui/unsafe/issue-3080.rs b/tests/ui/unsafe/issue-3080.rs similarity index 100% rename from src/test/ui/unsafe/issue-3080.rs rename to tests/ui/unsafe/issue-3080.rs diff --git a/src/test/ui/unsafe/issue-3080.thir.stderr b/tests/ui/unsafe/issue-3080.thir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-3080.thir.stderr rename to tests/ui/unsafe/issue-3080.thir.stderr diff --git a/src/test/ui/unsafe/issue-45087-unreachable-unsafe.mir.stderr b/tests/ui/unsafe/issue-45087-unreachable-unsafe.mir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-45087-unreachable-unsafe.mir.stderr rename to tests/ui/unsafe/issue-45087-unreachable-unsafe.mir.stderr diff --git a/src/test/ui/unsafe/issue-45087-unreachable-unsafe.rs b/tests/ui/unsafe/issue-45087-unreachable-unsafe.rs similarity index 100% rename from src/test/ui/unsafe/issue-45087-unreachable-unsafe.rs rename to tests/ui/unsafe/issue-45087-unreachable-unsafe.rs diff --git a/src/test/ui/unsafe/issue-45087-unreachable-unsafe.thir.stderr b/tests/ui/unsafe/issue-45087-unreachable-unsafe.thir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-45087-unreachable-unsafe.thir.stderr rename to tests/ui/unsafe/issue-45087-unreachable-unsafe.thir.stderr diff --git a/src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.mir.stderr b/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.mir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.mir.stderr rename to tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.mir.stderr diff --git a/src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs b/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs similarity index 100% rename from src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs rename to tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs diff --git a/src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.thir.stderr b/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.thir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.thir.stderr rename to tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.thir.stderr diff --git a/src/test/ui/unsafe/issue-47412.mir.stderr b/tests/ui/unsafe/issue-47412.mir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-47412.mir.stderr rename to tests/ui/unsafe/issue-47412.mir.stderr diff --git a/src/test/ui/unsafe/issue-47412.rs b/tests/ui/unsafe/issue-47412.rs similarity index 100% rename from src/test/ui/unsafe/issue-47412.rs rename to tests/ui/unsafe/issue-47412.rs diff --git a/src/test/ui/unsafe/issue-47412.thir.stderr b/tests/ui/unsafe/issue-47412.thir.stderr similarity index 100% rename from src/test/ui/unsafe/issue-47412.thir.stderr rename to tests/ui/unsafe/issue-47412.thir.stderr diff --git a/src/test/ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs b/tests/ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs similarity index 100% rename from src/test/ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs rename to tests/ui/unsafe/issue-85435-unsafe-op-in-let-under-unsafe-under-closure.rs diff --git a/src/test/ui/unsafe/issue-87414-query-cycle.rs b/tests/ui/unsafe/issue-87414-query-cycle.rs similarity index 100% rename from src/test/ui/unsafe/issue-87414-query-cycle.rs rename to tests/ui/unsafe/issue-87414-query-cycle.rs diff --git a/src/test/ui/unsafe/ranged_ints.mir.stderr b/tests/ui/unsafe/ranged_ints.mir.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints.mir.stderr rename to tests/ui/unsafe/ranged_ints.mir.stderr diff --git a/src/test/ui/unsafe/ranged_ints.rs b/tests/ui/unsafe/ranged_ints.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints.rs rename to tests/ui/unsafe/ranged_ints.rs diff --git a/src/test/ui/unsafe/ranged_ints.thir.stderr b/tests/ui/unsafe/ranged_ints.thir.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints.thir.stderr rename to tests/ui/unsafe/ranged_ints.thir.stderr diff --git a/src/test/ui/unsafe/ranged_ints2.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints2.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints2.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints2.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints2.rs b/tests/ui/unsafe/ranged_ints2.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints2.rs rename to tests/ui/unsafe/ranged_ints2.rs diff --git a/src/test/ui/unsafe/ranged_ints2.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints2.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints2.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints2.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints2_const.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints2_const.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints2_const.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints2_const.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints2_const.rs b/tests/ui/unsafe/ranged_ints2_const.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints2_const.rs rename to tests/ui/unsafe/ranged_ints2_const.rs diff --git a/src/test/ui/unsafe/ranged_ints2_const.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints2_const.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints2_const.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints2_const.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3.rs b/tests/ui/unsafe/ranged_ints3.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints3.rs rename to tests/ui/unsafe/ranged_ints3.rs diff --git a/src/test/ui/unsafe/ranged_ints3.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3_const.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3_const.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_const.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3_const.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3_const.rs b/tests/ui/unsafe/ranged_ints3_const.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_const.rs rename to tests/ui/unsafe/ranged_ints3_const.rs diff --git a/src/test/ui/unsafe/ranged_ints3_const.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3_const.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_const.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3_const.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3_match.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3_match.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_match.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3_match.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints3_match.rs b/tests/ui/unsafe/ranged_ints3_match.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_match.rs rename to tests/ui/unsafe/ranged_ints3_match.rs diff --git a/src/test/ui/unsafe/ranged_ints3_match.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints3_match.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints3_match.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints3_match.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints4.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints4.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints4.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints4.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints4.rs b/tests/ui/unsafe/ranged_ints4.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints4.rs rename to tests/ui/unsafe/ranged_ints4.rs diff --git a/src/test/ui/unsafe/ranged_ints4.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints4.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints4.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints4.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints4_const.mirunsafeck.stderr b/tests/ui/unsafe/ranged_ints4_const.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints4_const.mirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints4_const.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints4_const.rs b/tests/ui/unsafe/ranged_ints4_const.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints4_const.rs rename to tests/ui/unsafe/ranged_ints4_const.rs diff --git a/src/test/ui/unsafe/ranged_ints4_const.thirunsafeck.stderr b/tests/ui/unsafe/ranged_ints4_const.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints4_const.thirunsafeck.stderr rename to tests/ui/unsafe/ranged_ints4_const.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/ranged_ints_const.mir.stderr b/tests/ui/unsafe/ranged_ints_const.mir.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints_const.mir.stderr rename to tests/ui/unsafe/ranged_ints_const.mir.stderr diff --git a/src/test/ui/unsafe/ranged_ints_const.rs b/tests/ui/unsafe/ranged_ints_const.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints_const.rs rename to tests/ui/unsafe/ranged_ints_const.rs diff --git a/src/test/ui/unsafe/ranged_ints_const.thir.stderr b/tests/ui/unsafe/ranged_ints_const.thir.stderr similarity index 100% rename from src/test/ui/unsafe/ranged_ints_const.thir.stderr rename to tests/ui/unsafe/ranged_ints_const.thir.stderr diff --git a/src/test/ui/unsafe/ranged_ints_macro.rs b/tests/ui/unsafe/ranged_ints_macro.rs similarity index 100% rename from src/test/ui/unsafe/ranged_ints_macro.rs rename to tests/ui/unsafe/ranged_ints_macro.rs diff --git a/src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr b/tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr similarity index 100% rename from src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr rename to tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.mir.stderr diff --git a/src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs b/tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs similarity index 100% rename from src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs rename to tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.rs diff --git a/src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr b/tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr similarity index 100% rename from src/test/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr rename to tests/ui/unsafe/rfc-2585-unsafe_op_in_unsafe_fn.thir.stderr diff --git a/src/test/ui/unsafe/union-assignop.mirunsafeck.stderr b/tests/ui/unsafe/union-assignop.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/union-assignop.mirunsafeck.stderr rename to tests/ui/unsafe/union-assignop.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/union-assignop.rs b/tests/ui/unsafe/union-assignop.rs similarity index 100% rename from src/test/ui/unsafe/union-assignop.rs rename to tests/ui/unsafe/union-assignop.rs diff --git a/src/test/ui/unsafe/union-assignop.thirunsafeck.stderr b/tests/ui/unsafe/union-assignop.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/union-assignop.thirunsafeck.stderr rename to tests/ui/unsafe/union-assignop.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/union-modification.rs b/tests/ui/unsafe/union-modification.rs similarity index 100% rename from src/test/ui/unsafe/union-modification.rs rename to tests/ui/unsafe/union-modification.rs diff --git a/src/test/ui/unsafe/union.mir.stderr b/tests/ui/unsafe/union.mir.stderr similarity index 100% rename from src/test/ui/unsafe/union.mir.stderr rename to tests/ui/unsafe/union.mir.stderr diff --git a/src/test/ui/unsafe/union.rs b/tests/ui/unsafe/union.rs similarity index 100% rename from src/test/ui/unsafe/union.rs rename to tests/ui/unsafe/union.rs diff --git a/src/test/ui/unsafe/union.thir.stderr b/tests/ui/unsafe/union.thir.stderr similarity index 100% rename from src/test/ui/unsafe/union.thir.stderr rename to tests/ui/unsafe/union.thir.stderr diff --git a/src/test/ui/unsafe/union_access_through_block.rs b/tests/ui/unsafe/union_access_through_block.rs similarity index 100% rename from src/test/ui/unsafe/union_access_through_block.rs rename to tests/ui/unsafe/union_access_through_block.rs diff --git a/src/test/ui/unsafe/union_destructure.mir.stderr b/tests/ui/unsafe/union_destructure.mir.stderr similarity index 100% rename from src/test/ui/unsafe/union_destructure.mir.stderr rename to tests/ui/unsafe/union_destructure.mir.stderr diff --git a/src/test/ui/unsafe/union_destructure.rs b/tests/ui/unsafe/union_destructure.rs similarity index 100% rename from src/test/ui/unsafe/union_destructure.rs rename to tests/ui/unsafe/union_destructure.rs diff --git a/src/test/ui/unsafe/union_wild_or_wild.rs b/tests/ui/unsafe/union_wild_or_wild.rs similarity index 100% rename from src/test/ui/unsafe/union_wild_or_wild.rs rename to tests/ui/unsafe/union_wild_or_wild.rs diff --git a/src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.mir.stderr b/tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.mir.stderr rename to tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.rs b/tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.rs rename to tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.rs diff --git a/src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.thir.stderr b/tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-around-compiler-generated-unsafe.thir.stderr rename to tests/ui/unsafe/unsafe-around-compiler-generated-unsafe.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-assign.mirunsafeck.stderr b/tests/ui/unsafe/unsafe-assign.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-assign.mirunsafeck.stderr rename to tests/ui/unsafe/unsafe-assign.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/unsafe-assign.rs b/tests/ui/unsafe/unsafe-assign.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-assign.rs rename to tests/ui/unsafe/unsafe-assign.rs diff --git a/src/test/ui/unsafe/unsafe-assign.thirunsafeck.stderr b/tests/ui/unsafe/unsafe-assign.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-assign.thirunsafeck.stderr rename to tests/ui/unsafe/unsafe-assign.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/unsafe-block-without-braces.rs b/tests/ui/unsafe/unsafe-block-without-braces.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-block-without-braces.rs rename to tests/ui/unsafe/unsafe-block-without-braces.rs diff --git a/src/test/ui/unsafe/unsafe-block-without-braces.stderr b/tests/ui/unsafe/unsafe-block-without-braces.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-block-without-braces.stderr rename to tests/ui/unsafe/unsafe-block-without-braces.stderr diff --git a/src/test/ui/unsafe/unsafe-borrow.mirunsafeck.stderr b/tests/ui/unsafe/unsafe-borrow.mirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-borrow.mirunsafeck.stderr rename to tests/ui/unsafe/unsafe-borrow.mirunsafeck.stderr diff --git a/src/test/ui/unsafe/unsafe-borrow.rs b/tests/ui/unsafe/unsafe-borrow.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-borrow.rs rename to tests/ui/unsafe/unsafe-borrow.rs diff --git a/src/test/ui/unsafe/unsafe-borrow.thirunsafeck.stderr b/tests/ui/unsafe/unsafe-borrow.thirunsafeck.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-borrow.thirunsafeck.stderr rename to tests/ui/unsafe/unsafe-borrow.thirunsafeck.stderr diff --git a/src/test/ui/unsafe/unsafe-const-fn.mir.stderr b/tests/ui/unsafe/unsafe-const-fn.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-const-fn.mir.stderr rename to tests/ui/unsafe/unsafe-const-fn.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-const-fn.rs b/tests/ui/unsafe/unsafe-const-fn.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-const-fn.rs rename to tests/ui/unsafe/unsafe-const-fn.rs diff --git a/src/test/ui/unsafe/unsafe-const-fn.thir.stderr b/tests/ui/unsafe/unsafe-const-fn.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-const-fn.thir.stderr rename to tests/ui/unsafe/unsafe-const-fn.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr b/tests/ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr rename to tests/ui/unsafe/unsafe-fn-assign-deref-ptr.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.rs b/tests/ui/unsafe/unsafe-fn-assign-deref-ptr.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.rs rename to tests/ui/unsafe/unsafe-fn-assign-deref-ptr.rs diff --git a/src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.thir.stderr b/tests/ui/unsafe/unsafe-fn-assign-deref-ptr.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-assign-deref-ptr.thir.stderr rename to tests/ui/unsafe/unsafe-fn-assign-deref-ptr.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-autoderef.rs b/tests/ui/unsafe/unsafe-fn-autoderef.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-autoderef.rs rename to tests/ui/unsafe/unsafe-fn-autoderef.rs diff --git a/src/test/ui/unsafe/unsafe-fn-autoderef.stderr b/tests/ui/unsafe/unsafe-fn-autoderef.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-autoderef.stderr rename to tests/ui/unsafe/unsafe-fn-autoderef.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-called-from-safe.mir.stderr b/tests/ui/unsafe/unsafe-fn-called-from-safe.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-called-from-safe.mir.stderr rename to tests/ui/unsafe/unsafe-fn-called-from-safe.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-called-from-safe.rs b/tests/ui/unsafe/unsafe-fn-called-from-safe.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-called-from-safe.rs rename to tests/ui/unsafe/unsafe-fn-called-from-safe.rs diff --git a/src/test/ui/unsafe/unsafe-fn-called-from-safe.thir.stderr b/tests/ui/unsafe/unsafe-fn-called-from-safe.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-called-from-safe.thir.stderr rename to tests/ui/unsafe/unsafe-fn-called-from-safe.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-deref-ptr.mir.stderr b/tests/ui/unsafe/unsafe-fn-deref-ptr.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-deref-ptr.mir.stderr rename to tests/ui/unsafe/unsafe-fn-deref-ptr.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-deref-ptr.rs b/tests/ui/unsafe/unsafe-fn-deref-ptr.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-deref-ptr.rs rename to tests/ui/unsafe/unsafe-fn-deref-ptr.rs diff --git a/src/test/ui/unsafe/unsafe-fn-deref-ptr.thir.stderr b/tests/ui/unsafe/unsafe-fn-deref-ptr.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-deref-ptr.thir.stderr rename to tests/ui/unsafe/unsafe-fn-deref-ptr.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-used-as-value.mir.stderr b/tests/ui/unsafe/unsafe-fn-used-as-value.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-used-as-value.mir.stderr rename to tests/ui/unsafe/unsafe-fn-used-as-value.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-fn-used-as-value.rs b/tests/ui/unsafe/unsafe-fn-used-as-value.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-used-as-value.rs rename to tests/ui/unsafe/unsafe-fn-used-as-value.rs diff --git a/src/test/ui/unsafe/unsafe-fn-used-as-value.thir.stderr b/tests/ui/unsafe/unsafe-fn-used-as-value.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-fn-used-as-value.thir.stderr rename to tests/ui/unsafe/unsafe-fn-used-as-value.thir.stderr diff --git a/src/test/ui/unsafe/unsafe-not-inherited.rs b/tests/ui/unsafe/unsafe-not-inherited.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-not-inherited.rs rename to tests/ui/unsafe/unsafe-not-inherited.rs diff --git a/src/test/ui/unsafe/unsafe-not-inherited.stderr b/tests/ui/unsafe/unsafe-not-inherited.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-not-inherited.stderr rename to tests/ui/unsafe/unsafe-not-inherited.stderr diff --git a/src/test/ui/unsafe/unsafe-subtyping.rs b/tests/ui/unsafe/unsafe-subtyping.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-subtyping.rs rename to tests/ui/unsafe/unsafe-subtyping.rs diff --git a/src/test/ui/unsafe/unsafe-subtyping.stderr b/tests/ui/unsafe/unsafe-subtyping.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-subtyping.stderr rename to tests/ui/unsafe/unsafe-subtyping.stderr diff --git a/src/test/ui/unsafe/unsafe-trait-impl.rs b/tests/ui/unsafe/unsafe-trait-impl.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-trait-impl.rs rename to tests/ui/unsafe/unsafe-trait-impl.rs diff --git a/src/test/ui/unsafe/unsafe-trait-impl.stderr b/tests/ui/unsafe/unsafe-trait-impl.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-trait-impl.stderr rename to tests/ui/unsafe/unsafe-trait-impl.stderr diff --git a/src/test/ui/unsafe/unsafe-unstable-const-fn.mir.stderr b/tests/ui/unsafe/unsafe-unstable-const-fn.mir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-unstable-const-fn.mir.stderr rename to tests/ui/unsafe/unsafe-unstable-const-fn.mir.stderr diff --git a/src/test/ui/unsafe/unsafe-unstable-const-fn.rs b/tests/ui/unsafe/unsafe-unstable-const-fn.rs similarity index 100% rename from src/test/ui/unsafe/unsafe-unstable-const-fn.rs rename to tests/ui/unsafe/unsafe-unstable-const-fn.rs diff --git a/src/test/ui/unsafe/unsafe-unstable-const-fn.thir.stderr b/tests/ui/unsafe/unsafe-unstable-const-fn.thir.stderr similarity index 100% rename from src/test/ui/unsafe/unsafe-unstable-const-fn.thir.stderr rename to tests/ui/unsafe/unsafe-unstable-const-fn.thir.stderr diff --git a/src/test/ui/unsigned-literal-negation.rs b/tests/ui/unsigned-literal-negation.rs similarity index 100% rename from src/test/ui/unsigned-literal-negation.rs rename to tests/ui/unsigned-literal-negation.rs diff --git a/src/test/ui/unsigned-literal-negation.stderr b/tests/ui/unsigned-literal-negation.stderr similarity index 100% rename from src/test/ui/unsigned-literal-negation.stderr rename to tests/ui/unsigned-literal-negation.stderr diff --git a/src/test/ui/unsized-locals/autoderef.rs b/tests/ui/unsized-locals/autoderef.rs similarity index 100% rename from src/test/ui/unsized-locals/autoderef.rs rename to tests/ui/unsized-locals/autoderef.rs diff --git a/src/test/ui/unsized-locals/auxiliary/ufuncs.rs b/tests/ui/unsized-locals/auxiliary/ufuncs.rs similarity index 100% rename from src/test/ui/unsized-locals/auxiliary/ufuncs.rs rename to tests/ui/unsized-locals/auxiliary/ufuncs.rs diff --git a/src/test/ui/unsized-locals/borrow-after-move.rs b/tests/ui/unsized-locals/borrow-after-move.rs similarity index 100% rename from src/test/ui/unsized-locals/borrow-after-move.rs rename to tests/ui/unsized-locals/borrow-after-move.rs diff --git a/src/test/ui/unsized-locals/borrow-after-move.stderr b/tests/ui/unsized-locals/borrow-after-move.stderr similarity index 100% rename from src/test/ui/unsized-locals/borrow-after-move.stderr rename to tests/ui/unsized-locals/borrow-after-move.stderr diff --git a/src/test/ui/unsized-locals/box-fnonce.rs b/tests/ui/unsized-locals/box-fnonce.rs similarity index 100% rename from src/test/ui/unsized-locals/box-fnonce.rs rename to tests/ui/unsized-locals/box-fnonce.rs diff --git a/src/test/ui/unsized-locals/by-value-trait-object-safety-rpass.rs b/tests/ui/unsized-locals/by-value-trait-object-safety-rpass.rs similarity index 100% rename from src/test/ui/unsized-locals/by-value-trait-object-safety-rpass.rs rename to tests/ui/unsized-locals/by-value-trait-object-safety-rpass.rs diff --git a/src/test/ui/unsized-locals/by-value-trait-object-safety-withdefault.rs b/tests/ui/unsized-locals/by-value-trait-object-safety-withdefault.rs similarity index 100% rename from src/test/ui/unsized-locals/by-value-trait-object-safety-withdefault.rs rename to tests/ui/unsized-locals/by-value-trait-object-safety-withdefault.rs diff --git a/src/test/ui/unsized-locals/by-value-trait-object-safety.rs b/tests/ui/unsized-locals/by-value-trait-object-safety.rs similarity index 100% rename from src/test/ui/unsized-locals/by-value-trait-object-safety.rs rename to tests/ui/unsized-locals/by-value-trait-object-safety.rs diff --git a/src/test/ui/unsized-locals/by-value-trait-object-safety.stderr b/tests/ui/unsized-locals/by-value-trait-object-safety.stderr similarity index 100% rename from src/test/ui/unsized-locals/by-value-trait-object-safety.stderr rename to tests/ui/unsized-locals/by-value-trait-object-safety.stderr diff --git a/src/test/ui/unsized-locals/double-move.rs b/tests/ui/unsized-locals/double-move.rs similarity index 100% rename from src/test/ui/unsized-locals/double-move.rs rename to tests/ui/unsized-locals/double-move.rs diff --git a/src/test/ui/unsized-locals/double-move.stderr b/tests/ui/unsized-locals/double-move.stderr similarity index 100% rename from src/test/ui/unsized-locals/double-move.stderr rename to tests/ui/unsized-locals/double-move.stderr diff --git a/src/test/ui/unsized-locals/issue-30276-feature-flagged.rs b/tests/ui/unsized-locals/issue-30276-feature-flagged.rs similarity index 100% rename from src/test/ui/unsized-locals/issue-30276-feature-flagged.rs rename to tests/ui/unsized-locals/issue-30276-feature-flagged.rs diff --git a/src/test/ui/unsized-locals/issue-30276-feature-flagged.stderr b/tests/ui/unsized-locals/issue-30276-feature-flagged.stderr similarity index 100% rename from src/test/ui/unsized-locals/issue-30276-feature-flagged.stderr rename to tests/ui/unsized-locals/issue-30276-feature-flagged.stderr diff --git a/src/test/ui/unsized-locals/issue-30276.rs b/tests/ui/unsized-locals/issue-30276.rs similarity index 100% rename from src/test/ui/unsized-locals/issue-30276.rs rename to tests/ui/unsized-locals/issue-30276.rs diff --git a/src/test/ui/unsized-locals/issue-30276.stderr b/tests/ui/unsized-locals/issue-30276.stderr similarity index 100% rename from src/test/ui/unsized-locals/issue-30276.stderr rename to tests/ui/unsized-locals/issue-30276.stderr diff --git a/src/test/ui/unsized-locals/issue-50940-with-feature.rs b/tests/ui/unsized-locals/issue-50940-with-feature.rs similarity index 100% rename from src/test/ui/unsized-locals/issue-50940-with-feature.rs rename to tests/ui/unsized-locals/issue-50940-with-feature.rs diff --git a/src/test/ui/unsized-locals/issue-50940-with-feature.stderr b/tests/ui/unsized-locals/issue-50940-with-feature.stderr similarity index 100% rename from src/test/ui/unsized-locals/issue-50940-with-feature.stderr rename to tests/ui/unsized-locals/issue-50940-with-feature.stderr diff --git a/src/test/ui/unsized-locals/issue-50940.rs b/tests/ui/unsized-locals/issue-50940.rs similarity index 100% rename from src/test/ui/unsized-locals/issue-50940.rs rename to tests/ui/unsized-locals/issue-50940.rs diff --git a/src/test/ui/unsized-locals/issue-50940.stderr b/tests/ui/unsized-locals/issue-50940.stderr similarity index 100% rename from src/test/ui/unsized-locals/issue-50940.stderr rename to tests/ui/unsized-locals/issue-50940.stderr diff --git a/src/test/ui/unsized-locals/reference-unsized-locals.rs b/tests/ui/unsized-locals/reference-unsized-locals.rs similarity index 100% rename from src/test/ui/unsized-locals/reference-unsized-locals.rs rename to tests/ui/unsized-locals/reference-unsized-locals.rs diff --git a/src/test/ui/unsized-locals/simple-unsized-locals.rs b/tests/ui/unsized-locals/simple-unsized-locals.rs similarity index 100% rename from src/test/ui/unsized-locals/simple-unsized-locals.rs rename to tests/ui/unsized-locals/simple-unsized-locals.rs diff --git a/src/test/ui/unsized-locals/suggest-borrow.rs b/tests/ui/unsized-locals/suggest-borrow.rs similarity index 100% rename from src/test/ui/unsized-locals/suggest-borrow.rs rename to tests/ui/unsized-locals/suggest-borrow.rs diff --git a/src/test/ui/unsized-locals/suggest-borrow.stderr b/tests/ui/unsized-locals/suggest-borrow.stderr similarity index 100% rename from src/test/ui/unsized-locals/suggest-borrow.stderr rename to tests/ui/unsized-locals/suggest-borrow.stderr diff --git a/src/test/ui/unsized-locals/unsized-exprs-rpass.rs b/tests/ui/unsized-locals/unsized-exprs-rpass.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs-rpass.rs rename to tests/ui/unsized-locals/unsized-exprs-rpass.rs diff --git a/src/test/ui/unsized-locals/unsized-exprs.rs b/tests/ui/unsized-locals/unsized-exprs.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs.rs rename to tests/ui/unsized-locals/unsized-exprs.rs diff --git a/src/test/ui/unsized-locals/unsized-exprs.stderr b/tests/ui/unsized-locals/unsized-exprs.stderr similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs.stderr rename to tests/ui/unsized-locals/unsized-exprs.stderr diff --git a/src/test/ui/unsized-locals/unsized-exprs2.rs b/tests/ui/unsized-locals/unsized-exprs2.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs2.rs rename to tests/ui/unsized-locals/unsized-exprs2.rs diff --git a/src/test/ui/unsized-locals/unsized-exprs2.stderr b/tests/ui/unsized-locals/unsized-exprs2.stderr similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs2.stderr rename to tests/ui/unsized-locals/unsized-exprs2.stderr diff --git a/src/test/ui/unsized-locals/unsized-exprs3.rs b/tests/ui/unsized-locals/unsized-exprs3.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs3.rs rename to tests/ui/unsized-locals/unsized-exprs3.rs diff --git a/src/test/ui/unsized-locals/unsized-exprs3.stderr b/tests/ui/unsized-locals/unsized-exprs3.stderr similarity index 100% rename from src/test/ui/unsized-locals/unsized-exprs3.stderr rename to tests/ui/unsized-locals/unsized-exprs3.stderr diff --git a/src/test/ui/unsized-locals/unsized-index.rs b/tests/ui/unsized-locals/unsized-index.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-index.rs rename to tests/ui/unsized-locals/unsized-index.rs diff --git a/src/test/ui/unsized-locals/unsized-locals-using-unsized-fn-params.rs b/tests/ui/unsized-locals/unsized-locals-using-unsized-fn-params.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-locals-using-unsized-fn-params.rs rename to tests/ui/unsized-locals/unsized-locals-using-unsized-fn-params.rs diff --git a/src/test/ui/unsized-locals/unsized-locals-using-unsized-fn-params.stderr b/tests/ui/unsized-locals/unsized-locals-using-unsized-fn-params.stderr similarity index 100% rename from src/test/ui/unsized-locals/unsized-locals-using-unsized-fn-params.stderr rename to tests/ui/unsized-locals/unsized-locals-using-unsized-fn-params.stderr diff --git a/src/test/ui/unsized-locals/unsized-parameters.rs b/tests/ui/unsized-locals/unsized-parameters.rs similarity index 100% rename from src/test/ui/unsized-locals/unsized-parameters.rs rename to tests/ui/unsized-locals/unsized-parameters.rs diff --git a/src/test/ui/unsized/box-instead-of-dyn-fn.rs b/tests/ui/unsized/box-instead-of-dyn-fn.rs similarity index 100% rename from src/test/ui/unsized/box-instead-of-dyn-fn.rs rename to tests/ui/unsized/box-instead-of-dyn-fn.rs diff --git a/src/test/ui/unsized/box-instead-of-dyn-fn.stderr b/tests/ui/unsized/box-instead-of-dyn-fn.stderr similarity index 100% rename from src/test/ui/unsized/box-instead-of-dyn-fn.stderr rename to tests/ui/unsized/box-instead-of-dyn-fn.stderr diff --git a/src/test/ui/unsized/issue-30355.rs b/tests/ui/unsized/issue-30355.rs similarity index 100% rename from src/test/ui/unsized/issue-30355.rs rename to tests/ui/unsized/issue-30355.rs diff --git a/src/test/ui/unsized/issue-30355.stderr b/tests/ui/unsized/issue-30355.stderr similarity index 100% rename from src/test/ui/unsized/issue-30355.stderr rename to tests/ui/unsized/issue-30355.stderr diff --git a/src/test/ui/unsized/issue-40231-1.rs b/tests/ui/unsized/issue-40231-1.rs similarity index 100% rename from src/test/ui/unsized/issue-40231-1.rs rename to tests/ui/unsized/issue-40231-1.rs diff --git a/src/test/ui/unsized/issue-40231-2.rs b/tests/ui/unsized/issue-40231-2.rs similarity index 100% rename from src/test/ui/unsized/issue-40231-2.rs rename to tests/ui/unsized/issue-40231-2.rs diff --git a/src/test/ui/unsized/issue-71659.rs b/tests/ui/unsized/issue-71659.rs similarity index 100% rename from src/test/ui/unsized/issue-71659.rs rename to tests/ui/unsized/issue-71659.rs diff --git a/src/test/ui/unsized/issue-71659.stderr b/tests/ui/unsized/issue-71659.stderr similarity index 100% rename from src/test/ui/unsized/issue-71659.stderr rename to tests/ui/unsized/issue-71659.stderr diff --git a/src/test/ui/unsized/issue-75707.rs b/tests/ui/unsized/issue-75707.rs similarity index 100% rename from src/test/ui/unsized/issue-75707.rs rename to tests/ui/unsized/issue-75707.rs diff --git a/src/test/ui/unsized/issue-75707.stderr b/tests/ui/unsized/issue-75707.stderr similarity index 100% rename from src/test/ui/unsized/issue-75707.stderr rename to tests/ui/unsized/issue-75707.stderr diff --git a/src/test/ui/unsized/issue-75899-but-gats.rs b/tests/ui/unsized/issue-75899-but-gats.rs similarity index 100% rename from src/test/ui/unsized/issue-75899-but-gats.rs rename to tests/ui/unsized/issue-75899-but-gats.rs diff --git a/src/test/ui/unsized/issue-75899.rs b/tests/ui/unsized/issue-75899.rs similarity index 100% rename from src/test/ui/unsized/issue-75899.rs rename to tests/ui/unsized/issue-75899.rs diff --git a/src/test/ui/unsized/issue-91801.rs b/tests/ui/unsized/issue-91801.rs similarity index 100% rename from src/test/ui/unsized/issue-91801.rs rename to tests/ui/unsized/issue-91801.rs diff --git a/src/test/ui/unsized/issue-91801.stderr b/tests/ui/unsized/issue-91801.stderr similarity index 100% rename from src/test/ui/unsized/issue-91801.stderr rename to tests/ui/unsized/issue-91801.stderr diff --git a/src/test/ui/unsized/issue-91803.rs b/tests/ui/unsized/issue-91803.rs similarity index 100% rename from src/test/ui/unsized/issue-91803.rs rename to tests/ui/unsized/issue-91803.rs diff --git a/src/test/ui/unsized/issue-91803.stderr b/tests/ui/unsized/issue-91803.stderr similarity index 100% rename from src/test/ui/unsized/issue-91803.stderr rename to tests/ui/unsized/issue-91803.stderr diff --git a/src/test/ui/unsized/issue-97732.rs b/tests/ui/unsized/issue-97732.rs similarity index 100% rename from src/test/ui/unsized/issue-97732.rs rename to tests/ui/unsized/issue-97732.rs diff --git a/src/test/ui/unsized/maybe-bounds-where-cpass.rs b/tests/ui/unsized/maybe-bounds-where-cpass.rs similarity index 100% rename from src/test/ui/unsized/maybe-bounds-where-cpass.rs rename to tests/ui/unsized/maybe-bounds-where-cpass.rs diff --git a/src/test/ui/unsized/maybe-bounds-where.rs b/tests/ui/unsized/maybe-bounds-where.rs similarity index 100% rename from src/test/ui/unsized/maybe-bounds-where.rs rename to tests/ui/unsized/maybe-bounds-where.rs diff --git a/src/test/ui/unsized/maybe-bounds-where.stderr b/tests/ui/unsized/maybe-bounds-where.stderr similarity index 100% rename from src/test/ui/unsized/maybe-bounds-where.stderr rename to tests/ui/unsized/maybe-bounds-where.stderr diff --git a/src/test/ui/unsized/param-mentioned-by-different-field.rs b/tests/ui/unsized/param-mentioned-by-different-field.rs similarity index 100% rename from src/test/ui/unsized/param-mentioned-by-different-field.rs rename to tests/ui/unsized/param-mentioned-by-different-field.rs diff --git a/src/test/ui/unsized/param-mentioned-by-different-field.stderr b/tests/ui/unsized/param-mentioned-by-different-field.stderr similarity index 100% rename from src/test/ui/unsized/param-mentioned-by-different-field.stderr rename to tests/ui/unsized/param-mentioned-by-different-field.stderr diff --git a/src/test/ui/unsized/return-unsized-from-trait-method.rs b/tests/ui/unsized/return-unsized-from-trait-method.rs similarity index 100% rename from src/test/ui/unsized/return-unsized-from-trait-method.rs rename to tests/ui/unsized/return-unsized-from-trait-method.rs diff --git a/src/test/ui/unsized/return-unsized-from-trait-method.stderr b/tests/ui/unsized/return-unsized-from-trait-method.stderr similarity index 100% rename from src/test/ui/unsized/return-unsized-from-trait-method.stderr rename to tests/ui/unsized/return-unsized-from-trait-method.stderr diff --git a/src/test/ui/unsized/unchanged-param.rs b/tests/ui/unsized/unchanged-param.rs similarity index 100% rename from src/test/ui/unsized/unchanged-param.rs rename to tests/ui/unsized/unchanged-param.rs diff --git a/src/test/ui/unsized/unsized-bare-typaram.rs b/tests/ui/unsized/unsized-bare-typaram.rs similarity index 100% rename from src/test/ui/unsized/unsized-bare-typaram.rs rename to tests/ui/unsized/unsized-bare-typaram.rs diff --git a/src/test/ui/unsized/unsized-bare-typaram.stderr b/tests/ui/unsized/unsized-bare-typaram.stderr similarity index 100% rename from src/test/ui/unsized/unsized-bare-typaram.stderr rename to tests/ui/unsized/unsized-bare-typaram.stderr diff --git a/src/test/ui/unsized/unsized-enum.rs b/tests/ui/unsized/unsized-enum.rs similarity index 100% rename from src/test/ui/unsized/unsized-enum.rs rename to tests/ui/unsized/unsized-enum.rs diff --git a/src/test/ui/unsized/unsized-enum.stderr b/tests/ui/unsized/unsized-enum.stderr similarity index 100% rename from src/test/ui/unsized/unsized-enum.stderr rename to tests/ui/unsized/unsized-enum.stderr diff --git a/src/test/ui/unsized/unsized-enum2.rs b/tests/ui/unsized/unsized-enum2.rs similarity index 100% rename from src/test/ui/unsized/unsized-enum2.rs rename to tests/ui/unsized/unsized-enum2.rs diff --git a/src/test/ui/unsized/unsized-enum2.stderr b/tests/ui/unsized/unsized-enum2.stderr similarity index 100% rename from src/test/ui/unsized/unsized-enum2.stderr rename to tests/ui/unsized/unsized-enum2.stderr diff --git a/src/test/ui/unsized/unsized-fn-arg.fixed b/tests/ui/unsized/unsized-fn-arg.fixed similarity index 100% rename from src/test/ui/unsized/unsized-fn-arg.fixed rename to tests/ui/unsized/unsized-fn-arg.fixed diff --git a/src/test/ui/unsized/unsized-fn-arg.rs b/tests/ui/unsized/unsized-fn-arg.rs similarity index 100% rename from src/test/ui/unsized/unsized-fn-arg.rs rename to tests/ui/unsized/unsized-fn-arg.rs diff --git a/src/test/ui/unsized/unsized-fn-arg.stderr b/tests/ui/unsized/unsized-fn-arg.stderr similarity index 100% rename from src/test/ui/unsized/unsized-fn-arg.stderr rename to tests/ui/unsized/unsized-fn-arg.stderr diff --git a/src/test/ui/unsized/unsized-fn-param.rs b/tests/ui/unsized/unsized-fn-param.rs similarity index 100% rename from src/test/ui/unsized/unsized-fn-param.rs rename to tests/ui/unsized/unsized-fn-param.rs diff --git a/src/test/ui/unsized/unsized-fn-param.stderr b/tests/ui/unsized/unsized-fn-param.stderr similarity index 100% rename from src/test/ui/unsized/unsized-fn-param.stderr rename to tests/ui/unsized/unsized-fn-param.stderr diff --git a/src/test/ui/unsized/unsized-inherent-impl-self-type.rs b/tests/ui/unsized/unsized-inherent-impl-self-type.rs similarity index 100% rename from src/test/ui/unsized/unsized-inherent-impl-self-type.rs rename to tests/ui/unsized/unsized-inherent-impl-self-type.rs diff --git a/src/test/ui/unsized/unsized-inherent-impl-self-type.stderr b/tests/ui/unsized/unsized-inherent-impl-self-type.stderr similarity index 100% rename from src/test/ui/unsized/unsized-inherent-impl-self-type.stderr rename to tests/ui/unsized/unsized-inherent-impl-self-type.stderr diff --git a/src/test/ui/unsized/unsized-struct.rs b/tests/ui/unsized/unsized-struct.rs similarity index 100% rename from src/test/ui/unsized/unsized-struct.rs rename to tests/ui/unsized/unsized-struct.rs diff --git a/src/test/ui/unsized/unsized-struct.stderr b/tests/ui/unsized/unsized-struct.stderr similarity index 100% rename from src/test/ui/unsized/unsized-struct.stderr rename to tests/ui/unsized/unsized-struct.stderr diff --git a/src/test/ui/unsized/unsized-trait-impl-self-type.rs b/tests/ui/unsized/unsized-trait-impl-self-type.rs similarity index 100% rename from src/test/ui/unsized/unsized-trait-impl-self-type.rs rename to tests/ui/unsized/unsized-trait-impl-self-type.rs diff --git a/src/test/ui/unsized/unsized-trait-impl-self-type.stderr b/tests/ui/unsized/unsized-trait-impl-self-type.stderr similarity index 100% rename from src/test/ui/unsized/unsized-trait-impl-self-type.stderr rename to tests/ui/unsized/unsized-trait-impl-self-type.stderr diff --git a/src/test/ui/unsized/unsized-trait-impl-trait-arg.rs b/tests/ui/unsized/unsized-trait-impl-trait-arg.rs similarity index 100% rename from src/test/ui/unsized/unsized-trait-impl-trait-arg.rs rename to tests/ui/unsized/unsized-trait-impl-trait-arg.rs diff --git a/src/test/ui/unsized/unsized-trait-impl-trait-arg.stderr b/tests/ui/unsized/unsized-trait-impl-trait-arg.stderr similarity index 100% rename from src/test/ui/unsized/unsized-trait-impl-trait-arg.stderr rename to tests/ui/unsized/unsized-trait-impl-trait-arg.stderr diff --git a/src/test/ui/unsized/unsized-tuple-impls.rs b/tests/ui/unsized/unsized-tuple-impls.rs similarity index 100% rename from src/test/ui/unsized/unsized-tuple-impls.rs rename to tests/ui/unsized/unsized-tuple-impls.rs diff --git a/src/test/ui/unsized/unsized.rs b/tests/ui/unsized/unsized.rs similarity index 100% rename from src/test/ui/unsized/unsized.rs rename to tests/ui/unsized/unsized.rs diff --git a/src/test/ui/unsized/unsized2.rs b/tests/ui/unsized/unsized2.rs similarity index 100% rename from src/test/ui/unsized/unsized2.rs rename to tests/ui/unsized/unsized2.rs diff --git a/src/test/ui/unsized/unsized3-rpass.rs b/tests/ui/unsized/unsized3-rpass.rs similarity index 100% rename from src/test/ui/unsized/unsized3-rpass.rs rename to tests/ui/unsized/unsized3-rpass.rs diff --git a/src/test/ui/unsized/unsized3.rs b/tests/ui/unsized/unsized3.rs similarity index 100% rename from src/test/ui/unsized/unsized3.rs rename to tests/ui/unsized/unsized3.rs diff --git a/src/test/ui/unsized/unsized3.stderr b/tests/ui/unsized/unsized3.stderr similarity index 100% rename from src/test/ui/unsized/unsized3.stderr rename to tests/ui/unsized/unsized3.stderr diff --git a/src/test/ui/unsized/unsized5.rs b/tests/ui/unsized/unsized5.rs similarity index 100% rename from src/test/ui/unsized/unsized5.rs rename to tests/ui/unsized/unsized5.rs diff --git a/src/test/ui/unsized/unsized5.stderr b/tests/ui/unsized/unsized5.stderr similarity index 100% rename from src/test/ui/unsized/unsized5.stderr rename to tests/ui/unsized/unsized5.stderr diff --git a/src/test/ui/unsized/unsized6.rs b/tests/ui/unsized/unsized6.rs similarity index 100% rename from src/test/ui/unsized/unsized6.rs rename to tests/ui/unsized/unsized6.rs diff --git a/src/test/ui/unsized/unsized6.stderr b/tests/ui/unsized/unsized6.stderr similarity index 100% rename from src/test/ui/unsized/unsized6.stderr rename to tests/ui/unsized/unsized6.stderr diff --git a/src/test/ui/unsized/unsized7.rs b/tests/ui/unsized/unsized7.rs similarity index 100% rename from src/test/ui/unsized/unsized7.rs rename to tests/ui/unsized/unsized7.rs diff --git a/src/test/ui/unsized/unsized7.stderr b/tests/ui/unsized/unsized7.stderr similarity index 100% rename from src/test/ui/unsized/unsized7.stderr rename to tests/ui/unsized/unsized7.stderr diff --git a/src/test/ui/unterminated-comment.rs b/tests/ui/unterminated-comment.rs similarity index 100% rename from src/test/ui/unterminated-comment.rs rename to tests/ui/unterminated-comment.rs diff --git a/src/test/ui/unterminated-comment.stderr b/tests/ui/unterminated-comment.stderr similarity index 100% rename from src/test/ui/unterminated-comment.stderr rename to tests/ui/unterminated-comment.stderr diff --git a/src/test/ui/unterminated-nested-comment.rs b/tests/ui/unterminated-nested-comment.rs similarity index 100% rename from src/test/ui/unterminated-nested-comment.rs rename to tests/ui/unterminated-nested-comment.rs diff --git a/src/test/ui/unterminated-nested-comment.stderr b/tests/ui/unterminated-nested-comment.stderr similarity index 100% rename from src/test/ui/unterminated-nested-comment.stderr rename to tests/ui/unterminated-nested-comment.stderr diff --git a/src/test/ui/unused-crate-deps/auxiliary/bar.rs b/tests/ui/unused-crate-deps/auxiliary/bar.rs similarity index 100% rename from src/test/ui/unused-crate-deps/auxiliary/bar.rs rename to tests/ui/unused-crate-deps/auxiliary/bar.rs diff --git a/src/test/ui/unused-crate-deps/auxiliary/foo.rs b/tests/ui/unused-crate-deps/auxiliary/foo.rs similarity index 100% rename from src/test/ui/unused-crate-deps/auxiliary/foo.rs rename to tests/ui/unused-crate-deps/auxiliary/foo.rs diff --git a/src/test/ui/unused-crate-deps/deny-attr.rs b/tests/ui/unused-crate-deps/deny-attr.rs similarity index 100% rename from src/test/ui/unused-crate-deps/deny-attr.rs rename to tests/ui/unused-crate-deps/deny-attr.rs diff --git a/src/test/ui/unused-crate-deps/deny-attr.stderr b/tests/ui/unused-crate-deps/deny-attr.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/deny-attr.stderr rename to tests/ui/unused-crate-deps/deny-attr.stderr diff --git a/src/test/ui/unused-crate-deps/deny-cmdline-json-silent.rs b/tests/ui/unused-crate-deps/deny-cmdline-json-silent.rs similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline-json-silent.rs rename to tests/ui/unused-crate-deps/deny-cmdline-json-silent.rs diff --git a/src/test/ui/unused-crate-deps/deny-cmdline-json-silent.stderr b/tests/ui/unused-crate-deps/deny-cmdline-json-silent.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline-json-silent.stderr rename to tests/ui/unused-crate-deps/deny-cmdline-json-silent.stderr diff --git a/src/test/ui/unused-crate-deps/deny-cmdline-json.rs b/tests/ui/unused-crate-deps/deny-cmdline-json.rs similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline-json.rs rename to tests/ui/unused-crate-deps/deny-cmdline-json.rs diff --git a/src/test/ui/unused-crate-deps/deny-cmdline-json.stderr b/tests/ui/unused-crate-deps/deny-cmdline-json.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline-json.stderr rename to tests/ui/unused-crate-deps/deny-cmdline-json.stderr diff --git a/src/test/ui/unused-crate-deps/deny-cmdline.rs b/tests/ui/unused-crate-deps/deny-cmdline.rs similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline.rs rename to tests/ui/unused-crate-deps/deny-cmdline.rs diff --git a/src/test/ui/unused-crate-deps/deny-cmdline.stderr b/tests/ui/unused-crate-deps/deny-cmdline.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/deny-cmdline.stderr rename to tests/ui/unused-crate-deps/deny-cmdline.stderr diff --git a/src/test/ui/unused-crate-deps/ignore-pathless-extern.rs b/tests/ui/unused-crate-deps/ignore-pathless-extern.rs similarity index 100% rename from src/test/ui/unused-crate-deps/ignore-pathless-extern.rs rename to tests/ui/unused-crate-deps/ignore-pathless-extern.rs diff --git a/src/test/ui/unused-crate-deps/libfib.rs b/tests/ui/unused-crate-deps/libfib.rs similarity index 100% rename from src/test/ui/unused-crate-deps/libfib.rs rename to tests/ui/unused-crate-deps/libfib.rs diff --git a/src/test/ui/unused-crate-deps/libfib.stderr b/tests/ui/unused-crate-deps/libfib.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/libfib.stderr rename to tests/ui/unused-crate-deps/libfib.stderr diff --git a/src/test/ui/unused-crate-deps/lint-group.rs b/tests/ui/unused-crate-deps/lint-group.rs similarity index 100% rename from src/test/ui/unused-crate-deps/lint-group.rs rename to tests/ui/unused-crate-deps/lint-group.rs diff --git a/src/test/ui/unused-crate-deps/suppress.rs b/tests/ui/unused-crate-deps/suppress.rs similarity index 100% rename from src/test/ui/unused-crate-deps/suppress.rs rename to tests/ui/unused-crate-deps/suppress.rs diff --git a/src/test/ui/unused-crate-deps/test-use-ok.rs b/tests/ui/unused-crate-deps/test-use-ok.rs similarity index 100% rename from src/test/ui/unused-crate-deps/test-use-ok.rs rename to tests/ui/unused-crate-deps/test-use-ok.rs diff --git a/src/test/ui/unused-crate-deps/test.mk b/tests/ui/unused-crate-deps/test.mk similarity index 100% rename from src/test/ui/unused-crate-deps/test.mk rename to tests/ui/unused-crate-deps/test.mk diff --git a/src/test/ui/unused-crate-deps/unused-aliases.rs b/tests/ui/unused-crate-deps/unused-aliases.rs similarity index 100% rename from src/test/ui/unused-crate-deps/unused-aliases.rs rename to tests/ui/unused-crate-deps/unused-aliases.rs diff --git a/src/test/ui/unused-crate-deps/unused-aliases.stderr b/tests/ui/unused-crate-deps/unused-aliases.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/unused-aliases.stderr rename to tests/ui/unused-crate-deps/unused-aliases.stderr diff --git a/src/test/ui/unused-crate-deps/use_extern_crate_2015.rs b/tests/ui/unused-crate-deps/use_extern_crate_2015.rs similarity index 100% rename from src/test/ui/unused-crate-deps/use_extern_crate_2015.rs rename to tests/ui/unused-crate-deps/use_extern_crate_2015.rs diff --git a/src/test/ui/unused-crate-deps/warn-attr.rs b/tests/ui/unused-crate-deps/warn-attr.rs similarity index 100% rename from src/test/ui/unused-crate-deps/warn-attr.rs rename to tests/ui/unused-crate-deps/warn-attr.rs diff --git a/src/test/ui/unused-crate-deps/warn-attr.stderr b/tests/ui/unused-crate-deps/warn-attr.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/warn-attr.stderr rename to tests/ui/unused-crate-deps/warn-attr.stderr diff --git a/src/test/ui/unused-crate-deps/warn-cmdline-json.rs b/tests/ui/unused-crate-deps/warn-cmdline-json.rs similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline-json.rs rename to tests/ui/unused-crate-deps/warn-cmdline-json.rs diff --git a/src/test/ui/unused-crate-deps/warn-cmdline-json.stderr b/tests/ui/unused-crate-deps/warn-cmdline-json.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline-json.stderr rename to tests/ui/unused-crate-deps/warn-cmdline-json.stderr diff --git a/src/test/ui/unused-crate-deps/warn-cmdline-static.rs b/tests/ui/unused-crate-deps/warn-cmdline-static.rs similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline-static.rs rename to tests/ui/unused-crate-deps/warn-cmdline-static.rs diff --git a/src/test/ui/unused-crate-deps/warn-cmdline-static.stderr b/tests/ui/unused-crate-deps/warn-cmdline-static.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline-static.stderr rename to tests/ui/unused-crate-deps/warn-cmdline-static.stderr diff --git a/src/test/ui/unused-crate-deps/warn-cmdline.rs b/tests/ui/unused-crate-deps/warn-cmdline.rs similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline.rs rename to tests/ui/unused-crate-deps/warn-cmdline.rs diff --git a/src/test/ui/unused-crate-deps/warn-cmdline.stderr b/tests/ui/unused-crate-deps/warn-cmdline.stderr similarity index 100% rename from src/test/ui/unused-crate-deps/warn-cmdline.stderr rename to tests/ui/unused-crate-deps/warn-cmdline.stderr diff --git a/src/test/ui/unused-move-capture.rs b/tests/ui/unused-move-capture.rs similarity index 100% rename from src/test/ui/unused-move-capture.rs rename to tests/ui/unused-move-capture.rs diff --git a/src/test/ui/unused-move.rs b/tests/ui/unused-move.rs similarity index 100% rename from src/test/ui/unused-move.rs rename to tests/ui/unused-move.rs diff --git a/src/test/ui/unwind-abis/feature-gate-c-unwind-enabled.rs b/tests/ui/unwind-abis/feature-gate-c-unwind-enabled.rs similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-c-unwind-enabled.rs rename to tests/ui/unwind-abis/feature-gate-c-unwind-enabled.rs diff --git a/src/test/ui/unwind-abis/feature-gate-c-unwind.rs b/tests/ui/unwind-abis/feature-gate-c-unwind.rs similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-c-unwind.rs rename to tests/ui/unwind-abis/feature-gate-c-unwind.rs diff --git a/src/test/ui/unwind-abis/feature-gate-c-unwind.stderr b/tests/ui/unwind-abis/feature-gate-c-unwind.stderr similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-c-unwind.stderr rename to tests/ui/unwind-abis/feature-gate-c-unwind.stderr diff --git a/src/test/ui/unwind-abis/feature-gate-stdcall-unwind.rs b/tests/ui/unwind-abis/feature-gate-stdcall-unwind.rs similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-stdcall-unwind.rs rename to tests/ui/unwind-abis/feature-gate-stdcall-unwind.rs diff --git a/src/test/ui/unwind-abis/feature-gate-stdcall-unwind.stderr b/tests/ui/unwind-abis/feature-gate-stdcall-unwind.stderr similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-stdcall-unwind.stderr rename to tests/ui/unwind-abis/feature-gate-stdcall-unwind.stderr diff --git a/src/test/ui/unwind-abis/feature-gate-system-unwind.rs b/tests/ui/unwind-abis/feature-gate-system-unwind.rs similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-system-unwind.rs rename to tests/ui/unwind-abis/feature-gate-system-unwind.rs diff --git a/src/test/ui/unwind-abis/feature-gate-system-unwind.stderr b/tests/ui/unwind-abis/feature-gate-system-unwind.stderr similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-system-unwind.stderr rename to tests/ui/unwind-abis/feature-gate-system-unwind.stderr diff --git a/src/test/ui/unwind-abis/feature-gate-thiscall-unwind.rs b/tests/ui/unwind-abis/feature-gate-thiscall-unwind.rs similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-thiscall-unwind.rs rename to tests/ui/unwind-abis/feature-gate-thiscall-unwind.rs diff --git a/src/test/ui/unwind-abis/feature-gate-thiscall-unwind.stderr b/tests/ui/unwind-abis/feature-gate-thiscall-unwind.stderr similarity index 100% rename from src/test/ui/unwind-abis/feature-gate-thiscall-unwind.stderr rename to tests/ui/unwind-abis/feature-gate-thiscall-unwind.stderr diff --git a/src/test/ui/unwind-abis/ffi-unwind-calls-lint.rs b/tests/ui/unwind-abis/ffi-unwind-calls-lint.rs similarity index 100% rename from src/test/ui/unwind-abis/ffi-unwind-calls-lint.rs rename to tests/ui/unwind-abis/ffi-unwind-calls-lint.rs diff --git a/src/test/ui/unwind-abis/ffi-unwind-calls-lint.stderr b/tests/ui/unwind-abis/ffi-unwind-calls-lint.stderr similarity index 100% rename from src/test/ui/unwind-abis/ffi-unwind-calls-lint.stderr rename to tests/ui/unwind-abis/ffi-unwind-calls-lint.stderr diff --git a/src/test/ui/unwind-no-uwtable.rs b/tests/ui/unwind-no-uwtable.rs similarity index 100% rename from src/test/ui/unwind-no-uwtable.rs rename to tests/ui/unwind-no-uwtable.rs diff --git a/src/test/ui/unwind-unique.rs b/tests/ui/unwind-unique.rs similarity index 100% rename from src/test/ui/unwind-unique.rs rename to tests/ui/unwind-unique.rs diff --git a/src/test/ui/use-import-export.rs b/tests/ui/use-import-export.rs similarity index 100% rename from src/test/ui/use-import-export.rs rename to tests/ui/use-import-export.rs diff --git a/src/test/ui/use-keyword-2.rs b/tests/ui/use-keyword-2.rs similarity index 100% rename from src/test/ui/use-keyword-2.rs rename to tests/ui/use-keyword-2.rs diff --git a/src/test/ui/use-module-level-int-consts.rs b/tests/ui/use-module-level-int-consts.rs similarity index 100% rename from src/test/ui/use-module-level-int-consts.rs rename to tests/ui/use-module-level-int-consts.rs diff --git a/src/test/ui/use-nested-groups.rs b/tests/ui/use-nested-groups.rs similarity index 100% rename from src/test/ui/use-nested-groups.rs rename to tests/ui/use-nested-groups.rs diff --git a/src/test/ui/use.rs b/tests/ui/use.rs similarity index 100% rename from src/test/ui/use.rs rename to tests/ui/use.rs diff --git a/src/test/ui/use/auxiliary/extern-use-primitive-type-lib.rs b/tests/ui/use/auxiliary/extern-use-primitive-type-lib.rs similarity index 100% rename from src/test/ui/use/auxiliary/extern-use-primitive-type-lib.rs rename to tests/ui/use/auxiliary/extern-use-primitive-type-lib.rs diff --git a/src/test/ui/use/auxiliary/use-from-trait-xc.rs b/tests/ui/use/auxiliary/use-from-trait-xc.rs similarity index 100% rename from src/test/ui/use/auxiliary/use-from-trait-xc.rs rename to tests/ui/use/auxiliary/use-from-trait-xc.rs diff --git a/src/test/ui/use/issue-18986.rs b/tests/ui/use/issue-18986.rs similarity index 100% rename from src/test/ui/use/issue-18986.rs rename to tests/ui/use/issue-18986.rs diff --git a/src/test/ui/use/issue-18986.stderr b/tests/ui/use/issue-18986.stderr similarity index 100% rename from src/test/ui/use/issue-18986.stderr rename to tests/ui/use/issue-18986.stderr diff --git a/src/test/ui/use/issue-60976-extern-use-primitive-type.rs b/tests/ui/use/issue-60976-extern-use-primitive-type.rs similarity index 100% rename from src/test/ui/use/issue-60976-extern-use-primitive-type.rs rename to tests/ui/use/issue-60976-extern-use-primitive-type.rs diff --git a/src/test/ui/use/use-after-move-based-on-type.rs b/tests/ui/use/use-after-move-based-on-type.rs similarity index 100% rename from src/test/ui/use/use-after-move-based-on-type.rs rename to tests/ui/use/use-after-move-based-on-type.rs diff --git a/src/test/ui/use/use-after-move-based-on-type.stderr b/tests/ui/use/use-after-move-based-on-type.stderr similarity index 100% rename from src/test/ui/use/use-after-move-based-on-type.stderr rename to tests/ui/use/use-after-move-based-on-type.stderr diff --git a/src/test/ui/use/use-after-move-implicity-coerced-object.rs b/tests/ui/use/use-after-move-implicity-coerced-object.rs similarity index 100% rename from src/test/ui/use/use-after-move-implicity-coerced-object.rs rename to tests/ui/use/use-after-move-implicity-coerced-object.rs diff --git a/src/test/ui/use/use-after-move-implicity-coerced-object.stderr b/tests/ui/use/use-after-move-implicity-coerced-object.stderr similarity index 100% rename from src/test/ui/use/use-after-move-implicity-coerced-object.stderr rename to tests/ui/use/use-after-move-implicity-coerced-object.stderr diff --git a/src/test/ui/use/use-after-move-self-based-on-type.rs b/tests/ui/use/use-after-move-self-based-on-type.rs similarity index 100% rename from src/test/ui/use/use-after-move-self-based-on-type.rs rename to tests/ui/use/use-after-move-self-based-on-type.rs diff --git a/src/test/ui/use/use-after-move-self-based-on-type.stderr b/tests/ui/use/use-after-move-self-based-on-type.stderr similarity index 100% rename from src/test/ui/use/use-after-move-self-based-on-type.stderr rename to tests/ui/use/use-after-move-self-based-on-type.stderr diff --git a/src/test/ui/use/use-after-move-self.rs b/tests/ui/use/use-after-move-self.rs similarity index 100% rename from src/test/ui/use/use-after-move-self.rs rename to tests/ui/use/use-after-move-self.rs diff --git a/src/test/ui/use/use-after-move-self.stderr b/tests/ui/use/use-after-move-self.stderr similarity index 100% rename from src/test/ui/use/use-after-move-self.stderr rename to tests/ui/use/use-after-move-self.stderr diff --git a/src/test/ui/use/use-associated-const.rs b/tests/ui/use/use-associated-const.rs similarity index 100% rename from src/test/ui/use/use-associated-const.rs rename to tests/ui/use/use-associated-const.rs diff --git a/src/test/ui/use/use-associated-const.stderr b/tests/ui/use/use-associated-const.stderr similarity index 100% rename from src/test/ui/use/use-associated-const.stderr rename to tests/ui/use/use-associated-const.stderr diff --git a/src/test/ui/use/use-crate-self.rs b/tests/ui/use/use-crate-self.rs similarity index 100% rename from src/test/ui/use/use-crate-self.rs rename to tests/ui/use/use-crate-self.rs diff --git a/src/test/ui/use/use-crate-self.stderr b/tests/ui/use/use-crate-self.stderr similarity index 100% rename from src/test/ui/use/use-crate-self.stderr rename to tests/ui/use/use-crate-self.stderr diff --git a/src/test/ui/use/use-from-trait-xc.rs b/tests/ui/use/use-from-trait-xc.rs similarity index 100% rename from src/test/ui/use/use-from-trait-xc.rs rename to tests/ui/use/use-from-trait-xc.rs diff --git a/src/test/ui/use/use-from-trait-xc.stderr b/tests/ui/use/use-from-trait-xc.stderr similarity index 100% rename from src/test/ui/use/use-from-trait-xc.stderr rename to tests/ui/use/use-from-trait-xc.stderr diff --git a/src/test/ui/use/use-from-trait.rs b/tests/ui/use/use-from-trait.rs similarity index 100% rename from src/test/ui/use/use-from-trait.rs rename to tests/ui/use/use-from-trait.rs diff --git a/src/test/ui/use/use-from-trait.stderr b/tests/ui/use/use-from-trait.stderr similarity index 100% rename from src/test/ui/use/use-from-trait.stderr rename to tests/ui/use/use-from-trait.stderr diff --git a/src/test/ui/use/use-keyword.rs b/tests/ui/use/use-keyword.rs similarity index 100% rename from src/test/ui/use/use-keyword.rs rename to tests/ui/use/use-keyword.rs diff --git a/src/test/ui/use/use-keyword.stderr b/tests/ui/use/use-keyword.stderr similarity index 100% rename from src/test/ui/use/use-keyword.stderr rename to tests/ui/use/use-keyword.stderr diff --git a/src/test/ui/use/use-meta-mismatch.rs b/tests/ui/use/use-meta-mismatch.rs similarity index 100% rename from src/test/ui/use/use-meta-mismatch.rs rename to tests/ui/use/use-meta-mismatch.rs diff --git a/src/test/ui/use/use-meta-mismatch.stderr b/tests/ui/use/use-meta-mismatch.stderr similarity index 100% rename from src/test/ui/use/use-meta-mismatch.stderr rename to tests/ui/use/use-meta-mismatch.stderr diff --git a/src/test/ui/use/use-mod.rs b/tests/ui/use/use-mod.rs similarity index 100% rename from src/test/ui/use/use-mod.rs rename to tests/ui/use/use-mod.rs diff --git a/src/test/ui/use/use-mod.stderr b/tests/ui/use/use-mod.stderr similarity index 100% rename from src/test/ui/use/use-mod.stderr rename to tests/ui/use/use-mod.stderr diff --git a/src/test/ui/use/use-mod/use-mod-2.rs b/tests/ui/use/use-mod/use-mod-2.rs similarity index 100% rename from src/test/ui/use/use-mod/use-mod-2.rs rename to tests/ui/use/use-mod/use-mod-2.rs diff --git a/src/test/ui/use/use-mod/use-mod-2.stderr b/tests/ui/use/use-mod/use-mod-2.stderr similarity index 100% rename from src/test/ui/use/use-mod/use-mod-2.stderr rename to tests/ui/use/use-mod/use-mod-2.stderr diff --git a/src/test/ui/use/use-mod/use-mod-3.rs b/tests/ui/use/use-mod/use-mod-3.rs similarity index 100% rename from src/test/ui/use/use-mod/use-mod-3.rs rename to tests/ui/use/use-mod/use-mod-3.rs diff --git a/src/test/ui/use/use-mod/use-mod-3.stderr b/tests/ui/use/use-mod/use-mod-3.stderr similarity index 100% rename from src/test/ui/use/use-mod/use-mod-3.stderr rename to tests/ui/use/use-mod/use-mod-3.stderr diff --git a/src/test/ui/use/use-mod/use-mod-4.rs b/tests/ui/use/use-mod/use-mod-4.rs similarity index 100% rename from src/test/ui/use/use-mod/use-mod-4.rs rename to tests/ui/use/use-mod/use-mod-4.rs diff --git a/src/test/ui/use/use-mod/use-mod-4.stderr b/tests/ui/use/use-mod/use-mod-4.stderr similarity index 100% rename from src/test/ui/use/use-mod/use-mod-4.stderr rename to tests/ui/use/use-mod/use-mod-4.stderr diff --git a/src/test/ui/use/use-mod/use-mod-5.rs b/tests/ui/use/use-mod/use-mod-5.rs similarity index 100% rename from src/test/ui/use/use-mod/use-mod-5.rs rename to tests/ui/use/use-mod/use-mod-5.rs diff --git a/src/test/ui/use/use-mod/use-mod-5.stderr b/tests/ui/use/use-mod/use-mod-5.stderr similarity index 100% rename from src/test/ui/use/use-mod/use-mod-5.stderr rename to tests/ui/use/use-mod/use-mod-5.stderr diff --git a/src/test/ui/use/use-mod/use-mod-6.rs b/tests/ui/use/use-mod/use-mod-6.rs similarity index 100% rename from src/test/ui/use/use-mod/use-mod-6.rs rename to tests/ui/use/use-mod/use-mod-6.rs diff --git a/src/test/ui/use/use-mod/use-mod-6.stderr b/tests/ui/use/use-mod/use-mod-6.stderr similarity index 100% rename from src/test/ui/use/use-mod/use-mod-6.stderr rename to tests/ui/use/use-mod/use-mod-6.stderr diff --git a/src/test/ui/use/use-nested-groups-error.rs b/tests/ui/use/use-nested-groups-error.rs similarity index 100% rename from src/test/ui/use/use-nested-groups-error.rs rename to tests/ui/use/use-nested-groups-error.rs diff --git a/src/test/ui/use/use-nested-groups-error.stderr b/tests/ui/use/use-nested-groups-error.stderr similarity index 100% rename from src/test/ui/use/use-nested-groups-error.stderr rename to tests/ui/use/use-nested-groups-error.stderr diff --git a/src/test/ui/use/use-nested-groups-unused-imports.rs b/tests/ui/use/use-nested-groups-unused-imports.rs similarity index 100% rename from src/test/ui/use/use-nested-groups-unused-imports.rs rename to tests/ui/use/use-nested-groups-unused-imports.rs diff --git a/src/test/ui/use/use-nested-groups-unused-imports.stderr b/tests/ui/use/use-nested-groups-unused-imports.stderr similarity index 100% rename from src/test/ui/use/use-nested-groups-unused-imports.stderr rename to tests/ui/use/use-nested-groups-unused-imports.stderr diff --git a/src/test/ui/use/use-paths-as-items.rs b/tests/ui/use/use-paths-as-items.rs similarity index 100% rename from src/test/ui/use/use-paths-as-items.rs rename to tests/ui/use/use-paths-as-items.rs diff --git a/src/test/ui/use/use-paths-as-items.stderr b/tests/ui/use/use-paths-as-items.stderr similarity index 100% rename from src/test/ui/use/use-paths-as-items.stderr rename to tests/ui/use/use-paths-as-items.stderr diff --git a/src/test/ui/use/use-self-type.rs b/tests/ui/use/use-self-type.rs similarity index 100% rename from src/test/ui/use/use-self-type.rs rename to tests/ui/use/use-self-type.rs diff --git a/src/test/ui/use/use-self-type.stderr b/tests/ui/use/use-self-type.stderr similarity index 100% rename from src/test/ui/use/use-self-type.stderr rename to tests/ui/use/use-self-type.stderr diff --git a/src/test/ui/use/use-super-global-path.rs b/tests/ui/use/use-super-global-path.rs similarity index 100% rename from src/test/ui/use/use-super-global-path.rs rename to tests/ui/use/use-super-global-path.rs diff --git a/src/test/ui/use/use-super-global-path.stderr b/tests/ui/use/use-super-global-path.stderr similarity index 100% rename from src/test/ui/use/use-super-global-path.stderr rename to tests/ui/use/use-super-global-path.stderr diff --git a/src/test/ui/used.rs b/tests/ui/used.rs similarity index 100% rename from src/test/ui/used.rs rename to tests/ui/used.rs diff --git a/src/test/ui/used.stderr b/tests/ui/used.stderr similarity index 100% rename from src/test/ui/used.stderr rename to tests/ui/used.stderr diff --git a/src/test/ui/user-defined-macro-rules.rs b/tests/ui/user-defined-macro-rules.rs similarity index 100% rename from src/test/ui/user-defined-macro-rules.rs rename to tests/ui/user-defined-macro-rules.rs diff --git a/src/test/ui/using-target-feature-unstable.rs b/tests/ui/using-target-feature-unstable.rs similarity index 100% rename from src/test/ui/using-target-feature-unstable.rs rename to tests/ui/using-target-feature-unstable.rs diff --git a/src/test/ui/usize-generic-argument-parent.rs b/tests/ui/usize-generic-argument-parent.rs similarity index 100% rename from src/test/ui/usize-generic-argument-parent.rs rename to tests/ui/usize-generic-argument-parent.rs diff --git a/src/test/ui/usize-generic-argument-parent.stderr b/tests/ui/usize-generic-argument-parent.stderr similarity index 100% rename from src/test/ui/usize-generic-argument-parent.stderr rename to tests/ui/usize-generic-argument-parent.stderr diff --git a/src/test/ui/utf8-bom.rs b/tests/ui/utf8-bom.rs similarity index 100% rename from src/test/ui/utf8-bom.rs rename to tests/ui/utf8-bom.rs diff --git a/src/test/ui/utf8_idents.rs b/tests/ui/utf8_idents.rs similarity index 100% rename from src/test/ui/utf8_idents.rs rename to tests/ui/utf8_idents.rs diff --git a/src/test/ui/variance-intersection-of-ref-and-opt-ref.rs b/tests/ui/variance-intersection-of-ref-and-opt-ref.rs similarity index 100% rename from src/test/ui/variance-intersection-of-ref-and-opt-ref.rs rename to tests/ui/variance-intersection-of-ref-and-opt-ref.rs diff --git a/src/test/ui/variance-iterators-in-libcore.rs b/tests/ui/variance-iterators-in-libcore.rs similarity index 100% rename from src/test/ui/variance-iterators-in-libcore.rs rename to tests/ui/variance-iterators-in-libcore.rs diff --git a/src/test/ui/variance/variance-associated-consts.rs b/tests/ui/variance/variance-associated-consts.rs similarity index 100% rename from src/test/ui/variance/variance-associated-consts.rs rename to tests/ui/variance/variance-associated-consts.rs diff --git a/src/test/ui/variance/variance-associated-consts.stderr b/tests/ui/variance/variance-associated-consts.stderr similarity index 100% rename from src/test/ui/variance/variance-associated-consts.stderr rename to tests/ui/variance/variance-associated-consts.stderr diff --git a/src/test/ui/variance/variance-associated-types.rs b/tests/ui/variance/variance-associated-types.rs similarity index 100% rename from src/test/ui/variance/variance-associated-types.rs rename to tests/ui/variance/variance-associated-types.rs diff --git a/src/test/ui/variance/variance-associated-types.stderr b/tests/ui/variance/variance-associated-types.stderr similarity index 100% rename from src/test/ui/variance/variance-associated-types.stderr rename to tests/ui/variance/variance-associated-types.stderr diff --git a/src/test/ui/variance/variance-associated-types2.rs b/tests/ui/variance/variance-associated-types2.rs similarity index 100% rename from src/test/ui/variance/variance-associated-types2.rs rename to tests/ui/variance/variance-associated-types2.rs diff --git a/src/test/ui/variance/variance-associated-types2.stderr b/tests/ui/variance/variance-associated-types2.stderr similarity index 100% rename from src/test/ui/variance/variance-associated-types2.stderr rename to tests/ui/variance/variance-associated-types2.stderr diff --git a/src/test/ui/variance/variance-btree-invariant-types.rs b/tests/ui/variance/variance-btree-invariant-types.rs similarity index 100% rename from src/test/ui/variance/variance-btree-invariant-types.rs rename to tests/ui/variance/variance-btree-invariant-types.rs diff --git a/src/test/ui/variance/variance-btree-invariant-types.stderr b/tests/ui/variance/variance-btree-invariant-types.stderr similarity index 100% rename from src/test/ui/variance/variance-btree-invariant-types.stderr rename to tests/ui/variance/variance-btree-invariant-types.stderr diff --git a/src/test/ui/variance/variance-cell-is-invariant.rs b/tests/ui/variance/variance-cell-is-invariant.rs similarity index 100% rename from src/test/ui/variance/variance-cell-is-invariant.rs rename to tests/ui/variance/variance-cell-is-invariant.rs diff --git a/src/test/ui/variance/variance-cell-is-invariant.stderr b/tests/ui/variance/variance-cell-is-invariant.stderr similarity index 100% rename from src/test/ui/variance/variance-cell-is-invariant.stderr rename to tests/ui/variance/variance-cell-is-invariant.stderr diff --git a/src/test/ui/variance/variance-contravariant-arg-object.rs b/tests/ui/variance/variance-contravariant-arg-object.rs similarity index 100% rename from src/test/ui/variance/variance-contravariant-arg-object.rs rename to tests/ui/variance/variance-contravariant-arg-object.rs diff --git a/src/test/ui/variance/variance-contravariant-arg-object.stderr b/tests/ui/variance/variance-contravariant-arg-object.stderr similarity index 100% rename from src/test/ui/variance/variance-contravariant-arg-object.stderr rename to tests/ui/variance/variance-contravariant-arg-object.stderr diff --git a/src/test/ui/variance/variance-contravariant-arg-trait-match.rs b/tests/ui/variance/variance-contravariant-arg-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-contravariant-arg-trait-match.rs rename to tests/ui/variance/variance-contravariant-arg-trait-match.rs diff --git a/src/test/ui/variance/variance-contravariant-arg-trait-match.stderr b/tests/ui/variance/variance-contravariant-arg-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-contravariant-arg-trait-match.stderr rename to tests/ui/variance/variance-contravariant-arg-trait-match.stderr diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.rs b/tests/ui/variance/variance-contravariant-self-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-contravariant-self-trait-match.rs rename to tests/ui/variance/variance-contravariant-self-trait-match.rs diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.stderr b/tests/ui/variance/variance-contravariant-self-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-contravariant-self-trait-match.stderr rename to tests/ui/variance/variance-contravariant-self-trait-match.stderr diff --git a/src/test/ui/variance/variance-covariant-arg-object.rs b/tests/ui/variance/variance-covariant-arg-object.rs similarity index 100% rename from src/test/ui/variance/variance-covariant-arg-object.rs rename to tests/ui/variance/variance-covariant-arg-object.rs diff --git a/src/test/ui/variance/variance-covariant-arg-object.stderr b/tests/ui/variance/variance-covariant-arg-object.stderr similarity index 100% rename from src/test/ui/variance/variance-covariant-arg-object.stderr rename to tests/ui/variance/variance-covariant-arg-object.stderr diff --git a/src/test/ui/variance/variance-covariant-arg-trait-match.rs b/tests/ui/variance/variance-covariant-arg-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-covariant-arg-trait-match.rs rename to tests/ui/variance/variance-covariant-arg-trait-match.rs diff --git a/src/test/ui/variance/variance-covariant-arg-trait-match.stderr b/tests/ui/variance/variance-covariant-arg-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-covariant-arg-trait-match.stderr rename to tests/ui/variance/variance-covariant-arg-trait-match.stderr diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.rs b/tests/ui/variance/variance-covariant-self-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-covariant-self-trait-match.rs rename to tests/ui/variance/variance-covariant-self-trait-match.rs diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.stderr b/tests/ui/variance/variance-covariant-self-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-covariant-self-trait-match.stderr rename to tests/ui/variance/variance-covariant-self-trait-match.stderr diff --git a/src/test/ui/variance/variance-invariant-arg-object.rs b/tests/ui/variance/variance-invariant-arg-object.rs similarity index 100% rename from src/test/ui/variance/variance-invariant-arg-object.rs rename to tests/ui/variance/variance-invariant-arg-object.rs diff --git a/src/test/ui/variance/variance-invariant-arg-object.stderr b/tests/ui/variance/variance-invariant-arg-object.stderr similarity index 100% rename from src/test/ui/variance/variance-invariant-arg-object.stderr rename to tests/ui/variance/variance-invariant-arg-object.stderr diff --git a/src/test/ui/variance/variance-invariant-arg-trait-match.rs b/tests/ui/variance/variance-invariant-arg-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-invariant-arg-trait-match.rs rename to tests/ui/variance/variance-invariant-arg-trait-match.rs diff --git a/src/test/ui/variance/variance-invariant-arg-trait-match.stderr b/tests/ui/variance/variance-invariant-arg-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-invariant-arg-trait-match.stderr rename to tests/ui/variance/variance-invariant-arg-trait-match.stderr diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.rs b/tests/ui/variance/variance-invariant-self-trait-match.rs similarity index 100% rename from src/test/ui/variance/variance-invariant-self-trait-match.rs rename to tests/ui/variance/variance-invariant-self-trait-match.rs diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.stderr b/tests/ui/variance/variance-invariant-self-trait-match.stderr similarity index 100% rename from src/test/ui/variance/variance-invariant-self-trait-match.stderr rename to tests/ui/variance/variance-invariant-self-trait-match.stderr diff --git a/src/test/ui/variance/variance-issue-20533.rs b/tests/ui/variance/variance-issue-20533.rs similarity index 100% rename from src/test/ui/variance/variance-issue-20533.rs rename to tests/ui/variance/variance-issue-20533.rs diff --git a/src/test/ui/variance/variance-issue-20533.stderr b/tests/ui/variance/variance-issue-20533.stderr similarity index 100% rename from src/test/ui/variance/variance-issue-20533.stderr rename to tests/ui/variance/variance-issue-20533.stderr diff --git a/src/test/ui/variance/variance-object-types.rs b/tests/ui/variance/variance-object-types.rs similarity index 100% rename from src/test/ui/variance/variance-object-types.rs rename to tests/ui/variance/variance-object-types.rs diff --git a/src/test/ui/variance/variance-object-types.stderr b/tests/ui/variance/variance-object-types.stderr similarity index 100% rename from src/test/ui/variance/variance-object-types.stderr rename to tests/ui/variance/variance-object-types.stderr diff --git a/src/test/ui/variance/variance-regions-direct.rs b/tests/ui/variance/variance-regions-direct.rs similarity index 100% rename from src/test/ui/variance/variance-regions-direct.rs rename to tests/ui/variance/variance-regions-direct.rs diff --git a/src/test/ui/variance/variance-regions-direct.stderr b/tests/ui/variance/variance-regions-direct.stderr similarity index 100% rename from src/test/ui/variance/variance-regions-direct.stderr rename to tests/ui/variance/variance-regions-direct.stderr diff --git a/src/test/ui/variance/variance-regions-indirect.rs b/tests/ui/variance/variance-regions-indirect.rs similarity index 100% rename from src/test/ui/variance/variance-regions-indirect.rs rename to tests/ui/variance/variance-regions-indirect.rs diff --git a/src/test/ui/variance/variance-regions-indirect.stderr b/tests/ui/variance/variance-regions-indirect.stderr similarity index 100% rename from src/test/ui/variance/variance-regions-indirect.stderr rename to tests/ui/variance/variance-regions-indirect.stderr diff --git a/src/test/ui/variance/variance-regions-unused-direct.rs b/tests/ui/variance/variance-regions-unused-direct.rs similarity index 100% rename from src/test/ui/variance/variance-regions-unused-direct.rs rename to tests/ui/variance/variance-regions-unused-direct.rs diff --git a/src/test/ui/variance/variance-regions-unused-direct.stderr b/tests/ui/variance/variance-regions-unused-direct.stderr similarity index 100% rename from src/test/ui/variance/variance-regions-unused-direct.stderr rename to tests/ui/variance/variance-regions-unused-direct.stderr diff --git a/src/test/ui/variance/variance-regions-unused-indirect.rs b/tests/ui/variance/variance-regions-unused-indirect.rs similarity index 100% rename from src/test/ui/variance/variance-regions-unused-indirect.rs rename to tests/ui/variance/variance-regions-unused-indirect.rs diff --git a/src/test/ui/variance/variance-regions-unused-indirect.stderr b/tests/ui/variance/variance-regions-unused-indirect.stderr similarity index 100% rename from src/test/ui/variance/variance-regions-unused-indirect.stderr rename to tests/ui/variance/variance-regions-unused-indirect.stderr diff --git a/src/test/ui/variance/variance-trait-bounds.rs b/tests/ui/variance/variance-trait-bounds.rs similarity index 100% rename from src/test/ui/variance/variance-trait-bounds.rs rename to tests/ui/variance/variance-trait-bounds.rs diff --git a/src/test/ui/variance/variance-trait-bounds.stderr b/tests/ui/variance/variance-trait-bounds.stderr similarity index 100% rename from src/test/ui/variance/variance-trait-bounds.stderr rename to tests/ui/variance/variance-trait-bounds.stderr diff --git a/src/test/ui/variance/variance-trait-matching.rs b/tests/ui/variance/variance-trait-matching.rs similarity index 100% rename from src/test/ui/variance/variance-trait-matching.rs rename to tests/ui/variance/variance-trait-matching.rs diff --git a/src/test/ui/variance/variance-trait-matching.stderr b/tests/ui/variance/variance-trait-matching.stderr similarity index 100% rename from src/test/ui/variance/variance-trait-matching.stderr rename to tests/ui/variance/variance-trait-matching.stderr diff --git a/src/test/ui/variance/variance-trait-object-bound.rs b/tests/ui/variance/variance-trait-object-bound.rs similarity index 100% rename from src/test/ui/variance/variance-trait-object-bound.rs rename to tests/ui/variance/variance-trait-object-bound.rs diff --git a/src/test/ui/variance/variance-trait-object-bound.stderr b/tests/ui/variance/variance-trait-object-bound.stderr similarity index 100% rename from src/test/ui/variance/variance-trait-object-bound.stderr rename to tests/ui/variance/variance-trait-object-bound.stderr diff --git a/src/test/ui/variance/variance-types-bounds.rs b/tests/ui/variance/variance-types-bounds.rs similarity index 100% rename from src/test/ui/variance/variance-types-bounds.rs rename to tests/ui/variance/variance-types-bounds.rs diff --git a/src/test/ui/variance/variance-types-bounds.stderr b/tests/ui/variance/variance-types-bounds.stderr similarity index 100% rename from src/test/ui/variance/variance-types-bounds.stderr rename to tests/ui/variance/variance-types-bounds.stderr diff --git a/src/test/ui/variance/variance-types.rs b/tests/ui/variance/variance-types.rs similarity index 100% rename from src/test/ui/variance/variance-types.rs rename to tests/ui/variance/variance-types.rs diff --git a/src/test/ui/variance/variance-types.stderr b/tests/ui/variance/variance-types.stderr similarity index 100% rename from src/test/ui/variance/variance-types.stderr rename to tests/ui/variance/variance-types.stderr diff --git a/src/test/ui/variance/variance-unused-region-param.rs b/tests/ui/variance/variance-unused-region-param.rs similarity index 100% rename from src/test/ui/variance/variance-unused-region-param.rs rename to tests/ui/variance/variance-unused-region-param.rs diff --git a/src/test/ui/variance/variance-unused-region-param.stderr b/tests/ui/variance/variance-unused-region-param.stderr similarity index 100% rename from src/test/ui/variance/variance-unused-region-param.stderr rename to tests/ui/variance/variance-unused-region-param.stderr diff --git a/src/test/ui/variance/variance-unused-type-param.rs b/tests/ui/variance/variance-unused-type-param.rs similarity index 100% rename from src/test/ui/variance/variance-unused-type-param.rs rename to tests/ui/variance/variance-unused-type-param.rs diff --git a/src/test/ui/variance/variance-unused-type-param.stderr b/tests/ui/variance/variance-unused-type-param.stderr similarity index 100% rename from src/test/ui/variance/variance-unused-type-param.stderr rename to tests/ui/variance/variance-unused-type-param.stderr diff --git a/src/test/ui/variance/variance-use-contravariant-struct-1.rs b/tests/ui/variance/variance-use-contravariant-struct-1.rs similarity index 100% rename from src/test/ui/variance/variance-use-contravariant-struct-1.rs rename to tests/ui/variance/variance-use-contravariant-struct-1.rs diff --git a/src/test/ui/variance/variance-use-contravariant-struct-1.stderr b/tests/ui/variance/variance-use-contravariant-struct-1.stderr similarity index 100% rename from src/test/ui/variance/variance-use-contravariant-struct-1.stderr rename to tests/ui/variance/variance-use-contravariant-struct-1.stderr diff --git a/src/test/ui/variance/variance-use-contravariant-struct-2.rs b/tests/ui/variance/variance-use-contravariant-struct-2.rs similarity index 100% rename from src/test/ui/variance/variance-use-contravariant-struct-2.rs rename to tests/ui/variance/variance-use-contravariant-struct-2.rs diff --git a/src/test/ui/variance/variance-use-covariant-struct-1.rs b/tests/ui/variance/variance-use-covariant-struct-1.rs similarity index 100% rename from src/test/ui/variance/variance-use-covariant-struct-1.rs rename to tests/ui/variance/variance-use-covariant-struct-1.rs diff --git a/src/test/ui/variance/variance-use-covariant-struct-1.stderr b/tests/ui/variance/variance-use-covariant-struct-1.stderr similarity index 100% rename from src/test/ui/variance/variance-use-covariant-struct-1.stderr rename to tests/ui/variance/variance-use-covariant-struct-1.stderr diff --git a/src/test/ui/variance/variance-use-covariant-struct-2.rs b/tests/ui/variance/variance-use-covariant-struct-2.rs similarity index 100% rename from src/test/ui/variance/variance-use-covariant-struct-2.rs rename to tests/ui/variance/variance-use-covariant-struct-2.rs diff --git a/src/test/ui/variance/variance-use-invariant-struct-1.rs b/tests/ui/variance/variance-use-invariant-struct-1.rs similarity index 100% rename from src/test/ui/variance/variance-use-invariant-struct-1.rs rename to tests/ui/variance/variance-use-invariant-struct-1.rs diff --git a/src/test/ui/variance/variance-use-invariant-struct-1.stderr b/tests/ui/variance/variance-use-invariant-struct-1.stderr similarity index 100% rename from src/test/ui/variance/variance-use-invariant-struct-1.stderr rename to tests/ui/variance/variance-use-invariant-struct-1.stderr diff --git a/src/test/ui/variants/auxiliary/variant-namespacing.rs b/tests/ui/variants/auxiliary/variant-namespacing.rs similarity index 100% rename from src/test/ui/variants/auxiliary/variant-namespacing.rs rename to tests/ui/variants/auxiliary/variant-namespacing.rs diff --git a/src/test/ui/variants/variant-namespacing.rs b/tests/ui/variants/variant-namespacing.rs similarity index 100% rename from src/test/ui/variants/variant-namespacing.rs rename to tests/ui/variants/variant-namespacing.rs diff --git a/src/test/ui/variants/variant-namespacing.stderr b/tests/ui/variants/variant-namespacing.stderr similarity index 100% rename from src/test/ui/variants/variant-namespacing.stderr rename to tests/ui/variants/variant-namespacing.stderr diff --git a/src/test/ui/variants/variant-size-differences.rs b/tests/ui/variants/variant-size-differences.rs similarity index 100% rename from src/test/ui/variants/variant-size-differences.rs rename to tests/ui/variants/variant-size-differences.rs diff --git a/src/test/ui/variants/variant-size-differences.stderr b/tests/ui/variants/variant-size-differences.stderr similarity index 100% rename from src/test/ui/variants/variant-size-differences.stderr rename to tests/ui/variants/variant-size-differences.stderr diff --git a/src/test/ui/variants/variant-used-as-type.rs b/tests/ui/variants/variant-used-as-type.rs similarity index 100% rename from src/test/ui/variants/variant-used-as-type.rs rename to tests/ui/variants/variant-used-as-type.rs diff --git a/src/test/ui/variants/variant-used-as-type.stderr b/tests/ui/variants/variant-used-as-type.stderr similarity index 100% rename from src/test/ui/variants/variant-used-as-type.stderr rename to tests/ui/variants/variant-used-as-type.stderr diff --git a/src/test/ui/wait-forked-but-failed-child.rs b/tests/ui/wait-forked-but-failed-child.rs similarity index 100% rename from src/test/ui/wait-forked-but-failed-child.rs rename to tests/ui/wait-forked-but-failed-child.rs diff --git a/src/test/ui/walk-struct-literal-with.rs b/tests/ui/walk-struct-literal-with.rs similarity index 100% rename from src/test/ui/walk-struct-literal-with.rs rename to tests/ui/walk-struct-literal-with.rs diff --git a/src/test/ui/walk-struct-literal-with.stderr b/tests/ui/walk-struct-literal-with.stderr similarity index 100% rename from src/test/ui/walk-struct-literal-with.stderr rename to tests/ui/walk-struct-literal-with.stderr diff --git a/src/test/ui/wasm-custom-section-relocations.rs b/tests/ui/wasm-custom-section-relocations.rs similarity index 100% rename from src/test/ui/wasm-custom-section-relocations.rs rename to tests/ui/wasm-custom-section-relocations.rs diff --git a/src/test/ui/wasm-custom-section-relocations.stderr b/tests/ui/wasm-custom-section-relocations.stderr similarity index 100% rename from src/test/ui/wasm-custom-section-relocations.stderr rename to tests/ui/wasm-custom-section-relocations.stderr diff --git a/src/test/ui/wasm/simd-to-array-80108.rs b/tests/ui/wasm/simd-to-array-80108.rs similarity index 100% rename from src/test/ui/wasm/simd-to-array-80108.rs rename to tests/ui/wasm/simd-to-array-80108.rs diff --git a/src/test/ui/wasm/wasm-hang-issue-76281.rs b/tests/ui/wasm/wasm-hang-issue-76281.rs similarity index 100% rename from src/test/ui/wasm/wasm-hang-issue-76281.rs rename to tests/ui/wasm/wasm-hang-issue-76281.rs diff --git a/src/test/ui/wasm/wasm-import-module.rs b/tests/ui/wasm/wasm-import-module.rs similarity index 100% rename from src/test/ui/wasm/wasm-import-module.rs rename to tests/ui/wasm/wasm-import-module.rs diff --git a/src/test/ui/wasm/wasm-import-module.stderr b/tests/ui/wasm/wasm-import-module.stderr similarity index 100% rename from src/test/ui/wasm/wasm-import-module.stderr rename to tests/ui/wasm/wasm-import-module.stderr diff --git a/src/test/ui/weak-new-uninhabited-issue-48493.rs b/tests/ui/weak-new-uninhabited-issue-48493.rs similarity index 100% rename from src/test/ui/weak-new-uninhabited-issue-48493.rs rename to tests/ui/weak-new-uninhabited-issue-48493.rs diff --git a/src/test/ui/weird-exit-code.rs b/tests/ui/weird-exit-code.rs similarity index 100% rename from src/test/ui/weird-exit-code.rs rename to tests/ui/weird-exit-code.rs diff --git a/src/test/ui/weird-exprs.rs b/tests/ui/weird-exprs.rs similarity index 100% rename from src/test/ui/weird-exprs.rs rename to tests/ui/weird-exprs.rs diff --git a/src/test/ui/wf/hir-wf-canonicalized.rs b/tests/ui/wf/hir-wf-canonicalized.rs similarity index 100% rename from src/test/ui/wf/hir-wf-canonicalized.rs rename to tests/ui/wf/hir-wf-canonicalized.rs diff --git a/src/test/ui/wf/hir-wf-canonicalized.stderr b/tests/ui/wf/hir-wf-canonicalized.stderr similarity index 100% rename from src/test/ui/wf/hir-wf-canonicalized.stderr rename to tests/ui/wf/hir-wf-canonicalized.stderr diff --git a/src/test/ui/wf/hir-wf-check-erase-regions.rs b/tests/ui/wf/hir-wf-check-erase-regions.rs similarity index 100% rename from src/test/ui/wf/hir-wf-check-erase-regions.rs rename to tests/ui/wf/hir-wf-check-erase-regions.rs diff --git a/src/test/ui/wf/hir-wf-check-erase-regions.stderr b/tests/ui/wf/hir-wf-check-erase-regions.stderr similarity index 100% rename from src/test/ui/wf/hir-wf-check-erase-regions.stderr rename to tests/ui/wf/hir-wf-check-erase-regions.stderr diff --git a/src/test/ui/wf/issue-103573.rs b/tests/ui/wf/issue-103573.rs similarity index 100% rename from src/test/ui/wf/issue-103573.rs rename to tests/ui/wf/issue-103573.rs diff --git a/src/test/ui/wf/issue-103573.stderr b/tests/ui/wf/issue-103573.stderr similarity index 100% rename from src/test/ui/wf/issue-103573.stderr rename to tests/ui/wf/issue-103573.stderr diff --git a/src/test/ui/wf/issue-48638.rs b/tests/ui/wf/issue-48638.rs similarity index 100% rename from src/test/ui/wf/issue-48638.rs rename to tests/ui/wf/issue-48638.rs diff --git a/src/test/ui/wf/issue-87495.rs b/tests/ui/wf/issue-87495.rs similarity index 100% rename from src/test/ui/wf/issue-87495.rs rename to tests/ui/wf/issue-87495.rs diff --git a/src/test/ui/wf/issue-87495.stderr b/tests/ui/wf/issue-87495.stderr similarity index 100% rename from src/test/ui/wf/issue-87495.stderr rename to tests/ui/wf/issue-87495.stderr diff --git a/src/test/ui/wf/issue-95665.rs b/tests/ui/wf/issue-95665.rs similarity index 100% rename from src/test/ui/wf/issue-95665.rs rename to tests/ui/wf/issue-95665.rs diff --git a/src/test/ui/wf/issue-95665.stderr b/tests/ui/wf/issue-95665.stderr similarity index 100% rename from src/test/ui/wf/issue-95665.stderr rename to tests/ui/wf/issue-95665.stderr diff --git a/src/test/ui/wf/issue-96810.rs b/tests/ui/wf/issue-96810.rs similarity index 100% rename from src/test/ui/wf/issue-96810.rs rename to tests/ui/wf/issue-96810.rs diff --git a/src/test/ui/wf/issue-96810.stderr b/tests/ui/wf/issue-96810.stderr similarity index 100% rename from src/test/ui/wf/issue-96810.stderr rename to tests/ui/wf/issue-96810.stderr diff --git a/src/test/ui/wf/wf-array-elem-sized.rs b/tests/ui/wf/wf-array-elem-sized.rs similarity index 100% rename from src/test/ui/wf/wf-array-elem-sized.rs rename to tests/ui/wf/wf-array-elem-sized.rs diff --git a/src/test/ui/wf/wf-array-elem-sized.stderr b/tests/ui/wf/wf-array-elem-sized.stderr similarity index 100% rename from src/test/ui/wf/wf-array-elem-sized.stderr rename to tests/ui/wf/wf-array-elem-sized.stderr diff --git a/src/test/ui/wf/wf-complex-assoc-type.rs b/tests/ui/wf/wf-complex-assoc-type.rs similarity index 100% rename from src/test/ui/wf/wf-complex-assoc-type.rs rename to tests/ui/wf/wf-complex-assoc-type.rs diff --git a/src/test/ui/wf/wf-complex-assoc-type.stderr b/tests/ui/wf/wf-complex-assoc-type.stderr similarity index 100% rename from src/test/ui/wf/wf-complex-assoc-type.stderr rename to tests/ui/wf/wf-complex-assoc-type.stderr diff --git a/src/test/ui/wf/wf-const-type.rs b/tests/ui/wf/wf-const-type.rs similarity index 100% rename from src/test/ui/wf/wf-const-type.rs rename to tests/ui/wf/wf-const-type.rs diff --git a/src/test/ui/wf/wf-const-type.stderr b/tests/ui/wf/wf-const-type.stderr similarity index 100% rename from src/test/ui/wf/wf-const-type.stderr rename to tests/ui/wf/wf-const-type.stderr diff --git a/src/test/ui/wf/wf-convert-unsafe-trait-obj-box.rs b/tests/ui/wf/wf-convert-unsafe-trait-obj-box.rs similarity index 100% rename from src/test/ui/wf/wf-convert-unsafe-trait-obj-box.rs rename to tests/ui/wf/wf-convert-unsafe-trait-obj-box.rs diff --git a/src/test/ui/wf/wf-convert-unsafe-trait-obj-box.stderr b/tests/ui/wf/wf-convert-unsafe-trait-obj-box.stderr similarity index 100% rename from src/test/ui/wf/wf-convert-unsafe-trait-obj-box.stderr rename to tests/ui/wf/wf-convert-unsafe-trait-obj-box.stderr diff --git a/src/test/ui/wf/wf-convert-unsafe-trait-obj.rs b/tests/ui/wf/wf-convert-unsafe-trait-obj.rs similarity index 100% rename from src/test/ui/wf/wf-convert-unsafe-trait-obj.rs rename to tests/ui/wf/wf-convert-unsafe-trait-obj.rs diff --git a/src/test/ui/wf/wf-convert-unsafe-trait-obj.stderr b/tests/ui/wf/wf-convert-unsafe-trait-obj.stderr similarity index 100% rename from src/test/ui/wf/wf-convert-unsafe-trait-obj.stderr rename to tests/ui/wf/wf-convert-unsafe-trait-obj.stderr diff --git a/src/test/ui/wf/wf-enum-bound.rs b/tests/ui/wf/wf-enum-bound.rs similarity index 100% rename from src/test/ui/wf/wf-enum-bound.rs rename to tests/ui/wf/wf-enum-bound.rs diff --git a/src/test/ui/wf/wf-enum-bound.stderr b/tests/ui/wf/wf-enum-bound.stderr similarity index 100% rename from src/test/ui/wf/wf-enum-bound.stderr rename to tests/ui/wf/wf-enum-bound.stderr diff --git a/src/test/ui/wf/wf-enum-fields-struct-variant.rs b/tests/ui/wf/wf-enum-fields-struct-variant.rs similarity index 100% rename from src/test/ui/wf/wf-enum-fields-struct-variant.rs rename to tests/ui/wf/wf-enum-fields-struct-variant.rs diff --git a/src/test/ui/wf/wf-enum-fields-struct-variant.stderr b/tests/ui/wf/wf-enum-fields-struct-variant.stderr similarity index 100% rename from src/test/ui/wf/wf-enum-fields-struct-variant.stderr rename to tests/ui/wf/wf-enum-fields-struct-variant.stderr diff --git a/src/test/ui/wf/wf-enum-fields.rs b/tests/ui/wf/wf-enum-fields.rs similarity index 100% rename from src/test/ui/wf/wf-enum-fields.rs rename to tests/ui/wf/wf-enum-fields.rs diff --git a/src/test/ui/wf/wf-enum-fields.stderr b/tests/ui/wf/wf-enum-fields.stderr similarity index 100% rename from src/test/ui/wf/wf-enum-fields.stderr rename to tests/ui/wf/wf-enum-fields.stderr diff --git a/src/test/ui/wf/wf-fn-where-clause.rs b/tests/ui/wf/wf-fn-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-fn-where-clause.rs rename to tests/ui/wf/wf-fn-where-clause.rs diff --git a/src/test/ui/wf/wf-fn-where-clause.stderr b/tests/ui/wf/wf-fn-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-fn-where-clause.stderr rename to tests/ui/wf/wf-fn-where-clause.stderr diff --git a/src/test/ui/wf/wf-foreign-fn-decl-ret.rs b/tests/ui/wf/wf-foreign-fn-decl-ret.rs similarity index 100% rename from src/test/ui/wf/wf-foreign-fn-decl-ret.rs rename to tests/ui/wf/wf-foreign-fn-decl-ret.rs diff --git a/src/test/ui/wf/wf-foreign-fn-decl-ret.stderr b/tests/ui/wf/wf-foreign-fn-decl-ret.stderr similarity index 100% rename from src/test/ui/wf/wf-foreign-fn-decl-ret.stderr rename to tests/ui/wf/wf-foreign-fn-decl-ret.stderr diff --git a/src/test/ui/wf/wf-impl-associated-type-region.rs b/tests/ui/wf/wf-impl-associated-type-region.rs similarity index 100% rename from src/test/ui/wf/wf-impl-associated-type-region.rs rename to tests/ui/wf/wf-impl-associated-type-region.rs diff --git a/src/test/ui/wf/wf-impl-associated-type-region.stderr b/tests/ui/wf/wf-impl-associated-type-region.stderr similarity index 100% rename from src/test/ui/wf/wf-impl-associated-type-region.stderr rename to tests/ui/wf/wf-impl-associated-type-region.stderr diff --git a/src/test/ui/wf/wf-impl-associated-type-trait.rs b/tests/ui/wf/wf-impl-associated-type-trait.rs similarity index 100% rename from src/test/ui/wf/wf-impl-associated-type-trait.rs rename to tests/ui/wf/wf-impl-associated-type-trait.rs diff --git a/src/test/ui/wf/wf-impl-associated-type-trait.stderr b/tests/ui/wf/wf-impl-associated-type-trait.stderr similarity index 100% rename from src/test/ui/wf/wf-impl-associated-type-trait.stderr rename to tests/ui/wf/wf-impl-associated-type-trait.stderr diff --git a/src/test/ui/wf/wf-impl-self-type.rs b/tests/ui/wf/wf-impl-self-type.rs similarity index 100% rename from src/test/ui/wf/wf-impl-self-type.rs rename to tests/ui/wf/wf-impl-self-type.rs diff --git a/src/test/ui/wf/wf-impl-self-type.stderr b/tests/ui/wf/wf-impl-self-type.stderr similarity index 100% rename from src/test/ui/wf/wf-impl-self-type.stderr rename to tests/ui/wf/wf-impl-self-type.stderr diff --git a/src/test/ui/wf/wf-in-fn-arg.rs b/tests/ui/wf/wf-in-fn-arg.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-arg.rs rename to tests/ui/wf/wf-in-fn-arg.rs diff --git a/src/test/ui/wf/wf-in-fn-arg.stderr b/tests/ui/wf/wf-in-fn-arg.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-arg.stderr rename to tests/ui/wf/wf-in-fn-arg.stderr diff --git a/src/test/ui/wf/wf-in-fn-ret.rs b/tests/ui/wf/wf-in-fn-ret.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-ret.rs rename to tests/ui/wf/wf-in-fn-ret.rs diff --git a/src/test/ui/wf/wf-in-fn-ret.stderr b/tests/ui/wf/wf-in-fn-ret.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-ret.stderr rename to tests/ui/wf/wf-in-fn-ret.stderr diff --git a/src/test/ui/wf/wf-in-fn-type-arg.rs b/tests/ui/wf/wf-in-fn-type-arg.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-arg.rs rename to tests/ui/wf/wf-in-fn-type-arg.rs diff --git a/src/test/ui/wf/wf-in-fn-type-arg.stderr b/tests/ui/wf/wf-in-fn-type-arg.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-arg.stderr rename to tests/ui/wf/wf-in-fn-type-arg.stderr diff --git a/src/test/ui/wf/wf-in-fn-type-ret.rs b/tests/ui/wf/wf-in-fn-type-ret.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-ret.rs rename to tests/ui/wf/wf-in-fn-type-ret.rs diff --git a/src/test/ui/wf/wf-in-fn-type-ret.stderr b/tests/ui/wf/wf-in-fn-type-ret.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-ret.stderr rename to tests/ui/wf/wf-in-fn-type-ret.stderr diff --git a/src/test/ui/wf/wf-in-fn-type-static.rs b/tests/ui/wf/wf-in-fn-type-static.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-static.rs rename to tests/ui/wf/wf-in-fn-type-static.rs diff --git a/src/test/ui/wf/wf-in-fn-type-static.stderr b/tests/ui/wf/wf-in-fn-type-static.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-type-static.stderr rename to tests/ui/wf/wf-in-fn-type-static.stderr diff --git a/src/test/ui/wf/wf-in-fn-where-clause.rs b/tests/ui/wf/wf-in-fn-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-in-fn-where-clause.rs rename to tests/ui/wf/wf-in-fn-where-clause.rs diff --git a/src/test/ui/wf/wf-in-fn-where-clause.stderr b/tests/ui/wf/wf-in-fn-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-in-fn-where-clause.stderr rename to tests/ui/wf/wf-in-fn-where-clause.stderr diff --git a/src/test/ui/wf/wf-in-foreign-fn-decls-issue-80468.rs b/tests/ui/wf/wf-in-foreign-fn-decls-issue-80468.rs similarity index 100% rename from src/test/ui/wf/wf-in-foreign-fn-decls-issue-80468.rs rename to tests/ui/wf/wf-in-foreign-fn-decls-issue-80468.rs diff --git a/src/test/ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr b/tests/ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr similarity index 100% rename from src/test/ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr rename to tests/ui/wf/wf-in-foreign-fn-decls-issue-80468.stderr diff --git a/src/test/ui/wf/wf-in-obj-type-static.rs b/tests/ui/wf/wf-in-obj-type-static.rs similarity index 100% rename from src/test/ui/wf/wf-in-obj-type-static.rs rename to tests/ui/wf/wf-in-obj-type-static.rs diff --git a/src/test/ui/wf/wf-in-obj-type-static.stderr b/tests/ui/wf/wf-in-obj-type-static.stderr similarity index 100% rename from src/test/ui/wf/wf-in-obj-type-static.stderr rename to tests/ui/wf/wf-in-obj-type-static.stderr diff --git a/src/test/ui/wf/wf-in-obj-type-trait.rs b/tests/ui/wf/wf-in-obj-type-trait.rs similarity index 100% rename from src/test/ui/wf/wf-in-obj-type-trait.rs rename to tests/ui/wf/wf-in-obj-type-trait.rs diff --git a/src/test/ui/wf/wf-in-obj-type-trait.stderr b/tests/ui/wf/wf-in-obj-type-trait.stderr similarity index 100% rename from src/test/ui/wf/wf-in-obj-type-trait.stderr rename to tests/ui/wf/wf-in-obj-type-trait.stderr diff --git a/src/test/ui/wf/wf-inherent-impl-method-where-clause.rs b/tests/ui/wf/wf-inherent-impl-method-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-inherent-impl-method-where-clause.rs rename to tests/ui/wf/wf-inherent-impl-method-where-clause.rs diff --git a/src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr b/tests/ui/wf/wf-inherent-impl-method-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr rename to tests/ui/wf/wf-inherent-impl-method-where-clause.stderr diff --git a/src/test/ui/wf/wf-inherent-impl-where-clause.rs b/tests/ui/wf/wf-inherent-impl-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-inherent-impl-where-clause.rs rename to tests/ui/wf/wf-inherent-impl-where-clause.rs diff --git a/src/test/ui/wf/wf-inherent-impl-where-clause.stderr b/tests/ui/wf/wf-inherent-impl-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-inherent-impl-where-clause.stderr rename to tests/ui/wf/wf-inherent-impl-where-clause.stderr diff --git a/src/test/ui/wf/wf-misc-methods-issue-28609.rs b/tests/ui/wf/wf-misc-methods-issue-28609.rs similarity index 100% rename from src/test/ui/wf/wf-misc-methods-issue-28609.rs rename to tests/ui/wf/wf-misc-methods-issue-28609.rs diff --git a/src/test/ui/wf/wf-misc-methods-issue-28609.stderr b/tests/ui/wf/wf-misc-methods-issue-28609.stderr similarity index 100% rename from src/test/ui/wf/wf-misc-methods-issue-28609.stderr rename to tests/ui/wf/wf-misc-methods-issue-28609.stderr diff --git a/src/test/ui/wf/wf-object-safe.rs b/tests/ui/wf/wf-object-safe.rs similarity index 100% rename from src/test/ui/wf/wf-object-safe.rs rename to tests/ui/wf/wf-object-safe.rs diff --git a/src/test/ui/wf/wf-object-safe.stderr b/tests/ui/wf/wf-object-safe.stderr similarity index 100% rename from src/test/ui/wf/wf-object-safe.stderr rename to tests/ui/wf/wf-object-safe.stderr diff --git a/src/test/ui/wf/wf-outlives-ty-in-fn-or-trait.rs b/tests/ui/wf/wf-outlives-ty-in-fn-or-trait.rs similarity index 100% rename from src/test/ui/wf/wf-outlives-ty-in-fn-or-trait.rs rename to tests/ui/wf/wf-outlives-ty-in-fn-or-trait.rs diff --git a/src/test/ui/wf/wf-outlives-ty-in-fn-or-trait.stderr b/tests/ui/wf/wf-outlives-ty-in-fn-or-trait.stderr similarity index 100% rename from src/test/ui/wf/wf-outlives-ty-in-fn-or-trait.stderr rename to tests/ui/wf/wf-outlives-ty-in-fn-or-trait.stderr diff --git a/src/test/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs b/tests/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs similarity index 100% rename from src/test/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs rename to tests/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.rs diff --git a/src/test/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.stderr b/tests/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.stderr similarity index 100% rename from src/test/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.stderr rename to tests/ui/wf/wf-packed-on-proj-of-type-as-unimpl-trait.stderr diff --git a/src/test/ui/wf/wf-static-method.rs b/tests/ui/wf/wf-static-method.rs similarity index 100% rename from src/test/ui/wf/wf-static-method.rs rename to tests/ui/wf/wf-static-method.rs diff --git a/src/test/ui/wf/wf-static-method.stderr b/tests/ui/wf/wf-static-method.stderr similarity index 100% rename from src/test/ui/wf/wf-static-method.stderr rename to tests/ui/wf/wf-static-method.stderr diff --git a/src/test/ui/wf/wf-static-type.rs b/tests/ui/wf/wf-static-type.rs similarity index 100% rename from src/test/ui/wf/wf-static-type.rs rename to tests/ui/wf/wf-static-type.rs diff --git a/src/test/ui/wf/wf-static-type.stderr b/tests/ui/wf/wf-static-type.stderr similarity index 100% rename from src/test/ui/wf/wf-static-type.stderr rename to tests/ui/wf/wf-static-type.stderr diff --git a/src/test/ui/wf/wf-struct-bound.rs b/tests/ui/wf/wf-struct-bound.rs similarity index 100% rename from src/test/ui/wf/wf-struct-bound.rs rename to tests/ui/wf/wf-struct-bound.rs diff --git a/src/test/ui/wf/wf-struct-bound.stderr b/tests/ui/wf/wf-struct-bound.stderr similarity index 100% rename from src/test/ui/wf/wf-struct-bound.stderr rename to tests/ui/wf/wf-struct-bound.stderr diff --git a/src/test/ui/wf/wf-struct-field.rs b/tests/ui/wf/wf-struct-field.rs similarity index 100% rename from src/test/ui/wf/wf-struct-field.rs rename to tests/ui/wf/wf-struct-field.rs diff --git a/src/test/ui/wf/wf-struct-field.stderr b/tests/ui/wf/wf-struct-field.stderr similarity index 100% rename from src/test/ui/wf/wf-struct-field.stderr rename to tests/ui/wf/wf-struct-field.stderr diff --git a/src/test/ui/wf/wf-trait-associated-type-bound.rs b/tests/ui/wf/wf-trait-associated-type-bound.rs similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-bound.rs rename to tests/ui/wf/wf-trait-associated-type-bound.rs diff --git a/src/test/ui/wf/wf-trait-associated-type-bound.stderr b/tests/ui/wf/wf-trait-associated-type-bound.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-bound.stderr rename to tests/ui/wf/wf-trait-associated-type-bound.stderr diff --git a/src/test/ui/wf/wf-trait-associated-type-region.rs b/tests/ui/wf/wf-trait-associated-type-region.rs similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-region.rs rename to tests/ui/wf/wf-trait-associated-type-region.rs diff --git a/src/test/ui/wf/wf-trait-associated-type-region.stderr b/tests/ui/wf/wf-trait-associated-type-region.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-region.stderr rename to tests/ui/wf/wf-trait-associated-type-region.stderr diff --git a/src/test/ui/wf/wf-trait-associated-type-trait.rs b/tests/ui/wf/wf-trait-associated-type-trait.rs similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-trait.rs rename to tests/ui/wf/wf-trait-associated-type-trait.rs diff --git a/src/test/ui/wf/wf-trait-associated-type-trait.stderr b/tests/ui/wf/wf-trait-associated-type-trait.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-associated-type-trait.stderr rename to tests/ui/wf/wf-trait-associated-type-trait.stderr diff --git a/src/test/ui/wf/wf-trait-bound.rs b/tests/ui/wf/wf-trait-bound.rs similarity index 100% rename from src/test/ui/wf/wf-trait-bound.rs rename to tests/ui/wf/wf-trait-bound.rs diff --git a/src/test/ui/wf/wf-trait-bound.stderr b/tests/ui/wf/wf-trait-bound.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-bound.stderr rename to tests/ui/wf/wf-trait-bound.stderr diff --git a/src/test/ui/wf/wf-trait-default-fn-arg.rs b/tests/ui/wf/wf-trait-default-fn-arg.rs similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-arg.rs rename to tests/ui/wf/wf-trait-default-fn-arg.rs diff --git a/src/test/ui/wf/wf-trait-default-fn-arg.stderr b/tests/ui/wf/wf-trait-default-fn-arg.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-arg.stderr rename to tests/ui/wf/wf-trait-default-fn-arg.stderr diff --git a/src/test/ui/wf/wf-trait-default-fn-ret.rs b/tests/ui/wf/wf-trait-default-fn-ret.rs similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-ret.rs rename to tests/ui/wf/wf-trait-default-fn-ret.rs diff --git a/src/test/ui/wf/wf-trait-default-fn-ret.stderr b/tests/ui/wf/wf-trait-default-fn-ret.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-ret.stderr rename to tests/ui/wf/wf-trait-default-fn-ret.stderr diff --git a/src/test/ui/wf/wf-trait-default-fn-where-clause.rs b/tests/ui/wf/wf-trait-default-fn-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-where-clause.rs rename to tests/ui/wf/wf-trait-default-fn-where-clause.rs diff --git a/src/test/ui/wf/wf-trait-default-fn-where-clause.stderr b/tests/ui/wf/wf-trait-default-fn-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-default-fn-where-clause.stderr rename to tests/ui/wf/wf-trait-default-fn-where-clause.stderr diff --git a/src/test/ui/wf/wf-trait-fn-arg.rs b/tests/ui/wf/wf-trait-fn-arg.rs similarity index 100% rename from src/test/ui/wf/wf-trait-fn-arg.rs rename to tests/ui/wf/wf-trait-fn-arg.rs diff --git a/src/test/ui/wf/wf-trait-fn-arg.stderr b/tests/ui/wf/wf-trait-fn-arg.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-fn-arg.stderr rename to tests/ui/wf/wf-trait-fn-arg.stderr diff --git a/src/test/ui/wf/wf-trait-fn-ret.rs b/tests/ui/wf/wf-trait-fn-ret.rs similarity index 100% rename from src/test/ui/wf/wf-trait-fn-ret.rs rename to tests/ui/wf/wf-trait-fn-ret.rs diff --git a/src/test/ui/wf/wf-trait-fn-ret.stderr b/tests/ui/wf/wf-trait-fn-ret.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-fn-ret.stderr rename to tests/ui/wf/wf-trait-fn-ret.stderr diff --git a/src/test/ui/wf/wf-trait-fn-where-clause.rs b/tests/ui/wf/wf-trait-fn-where-clause.rs similarity index 100% rename from src/test/ui/wf/wf-trait-fn-where-clause.rs rename to tests/ui/wf/wf-trait-fn-where-clause.rs diff --git a/src/test/ui/wf/wf-trait-fn-where-clause.stderr b/tests/ui/wf/wf-trait-fn-where-clause.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-fn-where-clause.stderr rename to tests/ui/wf/wf-trait-fn-where-clause.stderr diff --git a/src/test/ui/wf/wf-trait-superbound.rs b/tests/ui/wf/wf-trait-superbound.rs similarity index 100% rename from src/test/ui/wf/wf-trait-superbound.rs rename to tests/ui/wf/wf-trait-superbound.rs diff --git a/src/test/ui/wf/wf-trait-superbound.stderr b/tests/ui/wf/wf-trait-superbound.stderr similarity index 100% rename from src/test/ui/wf/wf-trait-superbound.stderr rename to tests/ui/wf/wf-trait-superbound.stderr diff --git a/src/test/ui/wf/wf-unsafe-trait-obj-match.rs b/tests/ui/wf/wf-unsafe-trait-obj-match.rs similarity index 100% rename from src/test/ui/wf/wf-unsafe-trait-obj-match.rs rename to tests/ui/wf/wf-unsafe-trait-obj-match.rs diff --git a/src/test/ui/wf/wf-unsafe-trait-obj-match.stderr b/tests/ui/wf/wf-unsafe-trait-obj-match.stderr similarity index 100% rename from src/test/ui/wf/wf-unsafe-trait-obj-match.stderr rename to tests/ui/wf/wf-unsafe-trait-obj-match.stderr diff --git a/src/test/ui/where-clauses/auxiliary/where_clauses_xc.rs b/tests/ui/where-clauses/auxiliary/where_clauses_xc.rs similarity index 100% rename from src/test/ui/where-clauses/auxiliary/where_clauses_xc.rs rename to tests/ui/where-clauses/auxiliary/where_clauses_xc.rs diff --git a/src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr b/tests/ui/where-clauses/higher-ranked-fn-type.quiet.stderr similarity index 100% rename from src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr rename to tests/ui/where-clauses/higher-ranked-fn-type.quiet.stderr diff --git a/src/test/ui/where-clauses/higher-ranked-fn-type.rs b/tests/ui/where-clauses/higher-ranked-fn-type.rs similarity index 100% rename from src/test/ui/where-clauses/higher-ranked-fn-type.rs rename to tests/ui/where-clauses/higher-ranked-fn-type.rs diff --git a/src/test/ui/where-clauses/higher-ranked-fn-type.verbose.stderr b/tests/ui/where-clauses/higher-ranked-fn-type.verbose.stderr similarity index 100% rename from src/test/ui/where-clauses/higher-ranked-fn-type.verbose.stderr rename to tests/ui/where-clauses/higher-ranked-fn-type.verbose.stderr diff --git a/src/test/ui/where-clauses/where-clause-bounds-inconsistency.rs b/tests/ui/where-clauses/where-clause-bounds-inconsistency.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-bounds-inconsistency.rs rename to tests/ui/where-clauses/where-clause-bounds-inconsistency.rs diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.rs b/tests/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.rs rename to tests/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.rs diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr b/tests/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr similarity index 100% rename from src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr rename to tests/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.rs b/tests/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.rs rename to tests/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.rs diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr b/tests/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr similarity index 100% rename from src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr rename to tests/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr diff --git a/src/test/ui/where-clauses/where-clause-early-bound-lifetimes.rs b/tests/ui/where-clauses/where-clause-early-bound-lifetimes.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-early-bound-lifetimes.rs rename to tests/ui/where-clauses/where-clause-early-bound-lifetimes.rs diff --git a/src/test/ui/where-clauses/where-clause-method-substituion-rpass.rs b/tests/ui/where-clauses/where-clause-method-substituion-rpass.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-method-substituion-rpass.rs rename to tests/ui/where-clauses/where-clause-method-substituion-rpass.rs diff --git a/src/test/ui/where-clauses/where-clause-method-substituion.rs b/tests/ui/where-clauses/where-clause-method-substituion.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-method-substituion.rs rename to tests/ui/where-clauses/where-clause-method-substituion.rs diff --git a/src/test/ui/where-clauses/where-clause-method-substituion.stderr b/tests/ui/where-clauses/where-clause-method-substituion.stderr similarity index 100% rename from src/test/ui/where-clauses/where-clause-method-substituion.stderr rename to tests/ui/where-clauses/where-clause-method-substituion.stderr diff --git a/src/test/ui/where-clauses/where-clause-region-outlives.rs b/tests/ui/where-clauses/where-clause-region-outlives.rs similarity index 100% rename from src/test/ui/where-clauses/where-clause-region-outlives.rs rename to tests/ui/where-clauses/where-clause-region-outlives.rs diff --git a/src/test/ui/where-clauses/where-clauses-cross-crate.rs b/tests/ui/where-clauses/where-clauses-cross-crate.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-cross-crate.rs rename to tests/ui/where-clauses/where-clauses-cross-crate.rs diff --git a/src/test/ui/where-clauses/where-clauses-lifetimes.rs b/tests/ui/where-clauses/where-clauses-lifetimes.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-lifetimes.rs rename to tests/ui/where-clauses/where-clauses-lifetimes.rs diff --git a/src/test/ui/where-clauses/where-clauses-method-unsatisfied.rs b/tests/ui/where-clauses/where-clauses-method-unsatisfied.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-method-unsatisfied.rs rename to tests/ui/where-clauses/where-clauses-method-unsatisfied.rs diff --git a/src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr b/tests/ui/where-clauses/where-clauses-method-unsatisfied.stderr similarity index 100% rename from src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr rename to tests/ui/where-clauses/where-clauses-method-unsatisfied.stderr diff --git a/src/test/ui/where-clauses/where-clauses-method.rs b/tests/ui/where-clauses/where-clauses-method.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-method.rs rename to tests/ui/where-clauses/where-clauses-method.rs diff --git a/src/test/ui/where-clauses/where-clauses-unboxed-closures.rs b/tests/ui/where-clauses/where-clauses-unboxed-closures.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-unboxed-closures.rs rename to tests/ui/where-clauses/where-clauses-unboxed-closures.rs diff --git a/src/test/ui/where-clauses/where-clauses-unsatisfied.rs b/tests/ui/where-clauses/where-clauses-unsatisfied.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses-unsatisfied.rs rename to tests/ui/where-clauses/where-clauses-unsatisfied.rs diff --git a/src/test/ui/where-clauses/where-clauses-unsatisfied.stderr b/tests/ui/where-clauses/where-clauses-unsatisfied.stderr similarity index 100% rename from src/test/ui/where-clauses/where-clauses-unsatisfied.stderr rename to tests/ui/where-clauses/where-clauses-unsatisfied.stderr diff --git a/src/test/ui/where-clauses/where-clauses.rs b/tests/ui/where-clauses/where-clauses.rs similarity index 100% rename from src/test/ui/where-clauses/where-clauses.rs rename to tests/ui/where-clauses/where-clauses.rs diff --git a/src/test/ui/where-clauses/where-equality-constraints.rs b/tests/ui/where-clauses/where-equality-constraints.rs similarity index 100% rename from src/test/ui/where-clauses/where-equality-constraints.rs rename to tests/ui/where-clauses/where-equality-constraints.rs diff --git a/src/test/ui/where-clauses/where-equality-constraints.stderr b/tests/ui/where-clauses/where-equality-constraints.stderr similarity index 100% rename from src/test/ui/where-clauses/where-equality-constraints.stderr rename to tests/ui/where-clauses/where-equality-constraints.stderr diff --git a/src/test/ui/where-clauses/where-for-self-2.rs b/tests/ui/where-clauses/where-for-self-2.rs similarity index 100% rename from src/test/ui/where-clauses/where-for-self-2.rs rename to tests/ui/where-clauses/where-for-self-2.rs diff --git a/src/test/ui/where-clauses/where-for-self-2.stderr b/tests/ui/where-clauses/where-for-self-2.stderr similarity index 100% rename from src/test/ui/where-clauses/where-for-self-2.stderr rename to tests/ui/where-clauses/where-for-self-2.stderr diff --git a/src/test/ui/where-clauses/where-for-self.rs b/tests/ui/where-clauses/where-for-self.rs similarity index 100% rename from src/test/ui/where-clauses/where-for-self.rs rename to tests/ui/where-clauses/where-for-self.rs diff --git a/src/test/ui/where-clauses/where-for-self.stderr b/tests/ui/where-clauses/where-for-self.stderr similarity index 100% rename from src/test/ui/where-clauses/where-for-self.stderr rename to tests/ui/where-clauses/where-for-self.stderr diff --git a/src/test/ui/where-clauses/where-lifetime-resolution.rs b/tests/ui/where-clauses/where-lifetime-resolution.rs similarity index 100% rename from src/test/ui/where-clauses/where-lifetime-resolution.rs rename to tests/ui/where-clauses/where-lifetime-resolution.rs diff --git a/src/test/ui/where-clauses/where-lifetime-resolution.stderr b/tests/ui/where-clauses/where-lifetime-resolution.stderr similarity index 100% rename from src/test/ui/where-clauses/where-lifetime-resolution.stderr rename to tests/ui/where-clauses/where-lifetime-resolution.stderr diff --git a/src/test/ui/while-type-error.rs b/tests/ui/while-type-error.rs similarity index 100% rename from src/test/ui/while-type-error.rs rename to tests/ui/while-type-error.rs diff --git a/src/test/ui/while-type-error.stderr b/tests/ui/while-type-error.stderr similarity index 100% rename from src/test/ui/while-type-error.stderr rename to tests/ui/while-type-error.stderr diff --git a/src/test/ui/windows-subsystem-invalid.rs b/tests/ui/windows-subsystem-invalid.rs similarity index 100% rename from src/test/ui/windows-subsystem-invalid.rs rename to tests/ui/windows-subsystem-invalid.rs diff --git a/src/test/ui/windows-subsystem-invalid.stderr b/tests/ui/windows-subsystem-invalid.stderr similarity index 100% rename from src/test/ui/windows-subsystem-invalid.stderr rename to tests/ui/windows-subsystem-invalid.stderr diff --git a/src/test/ui/write-fmt-errors.rs b/tests/ui/write-fmt-errors.rs similarity index 100% rename from src/test/ui/write-fmt-errors.rs rename to tests/ui/write-fmt-errors.rs diff --git a/src/test/ui/writing-to-immutable-vec.rs b/tests/ui/writing-to-immutable-vec.rs similarity index 100% rename from src/test/ui/writing-to-immutable-vec.rs rename to tests/ui/writing-to-immutable-vec.rs diff --git a/src/test/ui/writing-to-immutable-vec.stderr b/tests/ui/writing-to-immutable-vec.stderr similarity index 100% rename from src/test/ui/writing-to-immutable-vec.stderr rename to tests/ui/writing-to-immutable-vec.stderr diff --git a/src/test/ui/wrong-hashset-issue-42918.rs b/tests/ui/wrong-hashset-issue-42918.rs similarity index 100% rename from src/test/ui/wrong-hashset-issue-42918.rs rename to tests/ui/wrong-hashset-issue-42918.rs diff --git a/src/test/ui/wrong-mul-method-signature.rs b/tests/ui/wrong-mul-method-signature.rs similarity index 100% rename from src/test/ui/wrong-mul-method-signature.rs rename to tests/ui/wrong-mul-method-signature.rs diff --git a/src/test/ui/wrong-mul-method-signature.stderr b/tests/ui/wrong-mul-method-signature.stderr similarity index 100% rename from src/test/ui/wrong-mul-method-signature.stderr rename to tests/ui/wrong-mul-method-signature.stderr diff --git a/src/test/ui/wrong-ret-type.rs b/tests/ui/wrong-ret-type.rs similarity index 100% rename from src/test/ui/wrong-ret-type.rs rename to tests/ui/wrong-ret-type.rs diff --git a/src/test/ui/wrong-ret-type.stderr b/tests/ui/wrong-ret-type.stderr similarity index 100% rename from src/test/ui/wrong-ret-type.stderr rename to tests/ui/wrong-ret-type.stderr diff --git a/src/test/ui/xc-private-method.rs b/tests/ui/xc-private-method.rs similarity index 100% rename from src/test/ui/xc-private-method.rs rename to tests/ui/xc-private-method.rs diff --git a/src/test/ui/xc-private-method.stderr b/tests/ui/xc-private-method.stderr similarity index 100% rename from src/test/ui/xc-private-method.stderr rename to tests/ui/xc-private-method.stderr diff --git a/src/test/ui/xc-private-method2.rs b/tests/ui/xc-private-method2.rs similarity index 100% rename from src/test/ui/xc-private-method2.rs rename to tests/ui/xc-private-method2.rs diff --git a/src/test/ui/xc-private-method2.stderr b/tests/ui/xc-private-method2.stderr similarity index 100% rename from src/test/ui/xc-private-method2.stderr rename to tests/ui/xc-private-method2.stderr diff --git a/src/test/ui/xcrate/auxiliary/static_priv_by_default.rs b/tests/ui/xcrate/auxiliary/static_priv_by_default.rs similarity index 100% rename from src/test/ui/xcrate/auxiliary/static_priv_by_default.rs rename to tests/ui/xcrate/auxiliary/static_priv_by_default.rs diff --git a/src/test/ui/xcrate/auxiliary/xcrate_unit_struct.rs b/tests/ui/xcrate/auxiliary/xcrate_unit_struct.rs similarity index 100% rename from src/test/ui/xcrate/auxiliary/xcrate_unit_struct.rs rename to tests/ui/xcrate/auxiliary/xcrate_unit_struct.rs diff --git a/src/test/ui/xcrate/xcrate-private-by-default.rs b/tests/ui/xcrate/xcrate-private-by-default.rs similarity index 100% rename from src/test/ui/xcrate/xcrate-private-by-default.rs rename to tests/ui/xcrate/xcrate-private-by-default.rs diff --git a/src/test/ui/xcrate/xcrate-private-by-default.stderr b/tests/ui/xcrate/xcrate-private-by-default.stderr similarity index 100% rename from src/test/ui/xcrate/xcrate-private-by-default.stderr rename to tests/ui/xcrate/xcrate-private-by-default.stderr diff --git a/src/test/ui/xcrate/xcrate-unit-struct-2.rs b/tests/ui/xcrate/xcrate-unit-struct-2.rs similarity index 100% rename from src/test/ui/xcrate/xcrate-unit-struct-2.rs rename to tests/ui/xcrate/xcrate-unit-struct-2.rs diff --git a/src/test/ui/xcrate/xcrate-unit-struct.rs b/tests/ui/xcrate/xcrate-unit-struct.rs similarity index 100% rename from src/test/ui/xcrate/xcrate-unit-struct.rs rename to tests/ui/xcrate/xcrate-unit-struct.rs diff --git a/src/test/ui/xcrate/xcrate-unit-struct.stderr b/tests/ui/xcrate/xcrate-unit-struct.stderr similarity index 100% rename from src/test/ui/xcrate/xcrate-unit-struct.stderr rename to tests/ui/xcrate/xcrate-unit-struct.stderr diff --git a/src/test/ui/zero-sized/zero-size-type-destructors.rs b/tests/ui/zero-sized/zero-size-type-destructors.rs similarity index 100% rename from src/test/ui/zero-sized/zero-size-type-destructors.rs rename to tests/ui/zero-sized/zero-size-type-destructors.rs diff --git a/src/test/ui/zero-sized/zero-sized-binary-heap-push.rs b/tests/ui/zero-sized/zero-sized-binary-heap-push.rs similarity index 100% rename from src/test/ui/zero-sized/zero-sized-binary-heap-push.rs rename to tests/ui/zero-sized/zero-sized-binary-heap-push.rs diff --git a/src/test/ui/zero-sized/zero-sized-btreemap-insert.rs b/tests/ui/zero-sized/zero-sized-btreemap-insert.rs similarity index 100% rename from src/test/ui/zero-sized/zero-sized-btreemap-insert.rs rename to tests/ui/zero-sized/zero-sized-btreemap-insert.rs diff --git a/src/test/ui/zero-sized/zero-sized-linkedlist-push.rs b/tests/ui/zero-sized/zero-sized-linkedlist-push.rs similarity index 100% rename from src/test/ui/zero-sized/zero-sized-linkedlist-push.rs rename to tests/ui/zero-sized/zero-sized-linkedlist-push.rs diff --git a/src/test/ui/zero-sized/zero-sized-tuple-struct.rs b/tests/ui/zero-sized/zero-sized-tuple-struct.rs similarity index 100% rename from src/test/ui/zero-sized/zero-sized-tuple-struct.rs rename to tests/ui/zero-sized/zero-sized-tuple-struct.rs From 40ba0e84d53f605ccf01836e9c2d27892728ae81 Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Thu, 5 Jan 2023 09:45:44 +0100 Subject: [PATCH 399/478] Change `src/test` to `tests` in source files, fix tidy and tests --- .github/workflows/ci.yml | 4 +- .gitignore | 4 +- Cargo.toml | 2 +- compiler/rustc_ast_lowering/src/expr.rs | 4 +- compiler/rustc_borrowck/src/consumers.rs | 2 +- .../src/diagnostics/conflict_errors.rs | 2 +- .../src/region_infer/opaque_types.rs | 2 +- .../scripts/test_rustc_tests.sh | 132 +++++++++--------- compiler/rustc_codegen_gcc/test.sh | 16 +-- .../check_consts/post_drop_elaboration.rs | 2 +- .../rustc_hir_analysis/src/astconv/errors.rs | 2 +- compiler/rustc_hir_typeck/src/coercion.rs | 2 +- compiler/rustc_hir_typeck/src/demand.rs | 2 +- compiler/rustc_hir_typeck/src/fallback.rs | 2 +- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 4 +- .../src/generator_interior/mod.rs | 2 +- .../rustc_hir_typeck/src/method/confirm.rs | 2 +- compiler/rustc_hir_typeck/src/method/probe.rs | 2 +- compiler/rustc_hir_typeck/src/upvar.rs | 2 +- compiler/rustc_infer/src/infer/combine.rs | 2 +- .../src/infer/error_reporting/mod.rs | 4 +- .../src/unreachable_prop.rs | 2 +- compiler/rustc_privacy/src/lib.rs | 2 +- .../rustc_resolve/src/build_reduced_graph.rs | 2 +- .../src/traits/coherence.rs | 2 +- .../src/traits/project.rs | 2 +- .../rustc_trait_selection/src/traits/wf.rs | 4 +- compiler/rustc_ty_utils/src/abi.rs | 2 +- .../sys/unix/process/process_unix/tests.rs | 2 +- rustfmt.toml | 2 +- src/bootstrap/README.md | 4 +- src/bootstrap/builder.rs | 6 +- src/bootstrap/builder/tests.rs | 2 +- src/bootstrap/compile.rs | 2 +- src/bootstrap/configure.py | 2 +- src/bootstrap/flags.rs | 8 +- src/bootstrap/mk/Makefile.in | 4 +- src/bootstrap/native.rs | 6 +- src/bootstrap/setup.rs | 2 +- src/bootstrap/test.rs | 68 ++++----- .../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 +- .../host-x86_64/dist-various-1/Dockerfile | 2 +- src/ci/docker/host-x86_64/i686-gnu/Dockerfile | 2 +- .../host-x86_64/test-various/Dockerfile | 12 +- .../host-x86_64/x86_64-gnu-debug/Dockerfile | 2 +- .../x86_64-gnu-llvm-13-stage1/Dockerfile | 2 +- .../host-x86_64/x86_64-gnu-llvm-13/Dockerfile | 4 +- .../host-x86_64/x86_64-gnu-tools/Dockerfile | 2 +- src/ci/github-actions/ci.yml | 4 +- src/ci/scripts/should-skip-this.sh | 2 +- src/doc/rustc/src/platform-support/fuchsia.md | 4 +- .../src/compiler-flags/codegen-backend.md | 2 +- .../src/language-features/plugin.md | 2 +- src/librustdoc/html/static/css/rustdoc.css | 2 +- src/tools/clippy/tests/ui/crashes/ice-6254.rs | 2 +- src/tools/clippy/tests/ui/crashes/ice-6255.rs | 2 +- src/tools/clippy/tests/ui/crashes/ice-6256.rs | 2 +- src/tools/compiletest/src/common.rs | 2 +- src/tools/compiletest/src/main.rs | 2 +- src/tools/compiletest/src/runtest.rs | 10 +- .../macro_expansion_tests/mbe/meta_syntax.rs | 2 +- .../crates/ide-db/src/generated/lints.rs | 2 +- src/tools/rustdoc-gui/tester.js | 2 +- src/tools/rustfmt/tests/source/issue-2445.rs | 4 +- src/tools/rustfmt/tests/target/issue-2445.rs | 4 +- src/tools/tidy/src/debug_artifacts.rs | 8 +- src/tools/tidy/src/edition.rs | 5 +- src/tools/tidy/src/error_codes.rs | 8 +- src/tools/tidy/src/features.rs | 11 +- src/tools/tidy/src/main.rs | 22 ++- src/tools/tidy/src/mir_opt_tests.rs | 4 +- src/tools/tidy/src/style.rs | 9 +- src/tools/tidy/src/target_specific_tests.rs | 3 +- src/tools/tidy/src/ui_tests.rs | 8 +- src/tools/tidy/src/unit_tests.rs | 2 +- tests/assembly/target-feature-multiple.rs | 2 +- tests/codegen/match-optimized.rs | 2 +- tests/codegen/match-unoptimized.rs | 2 +- tests/codegen/target-feature-overrides.rs | 2 +- tests/mir-opt/remove_never_const.rs | 2 +- tests/pretty/block-comment-wchar.pp | 2 +- tests/pretty/block-comment-wchar.rs | 2 +- .../alloc-no-oom-handling/Makefile | 2 +- tests/run-make-fulldeps/alloc-no-rc/Makefile | 2 +- .../run-make-fulldeps/alloc-no-sync/Makefile | 2 +- .../core-no-fp-fmt-parse/Makefile | 2 +- .../obtain-borrowck/Makefile | 2 +- .../run-make/coverage/compiletest-ignore-dir | 2 +- tests/run-make/repr128-dwarf/Makefile | 2 +- tests/run-make/static-pie/Makefile | 2 +- tests/run-make/thumb-none-cortex-m/Makefile | 2 +- tests/run-make/thumb-none-qemu/Makefile | 2 +- tests/rustdoc-gui/README.md | 6 +- tests/rustdoc-ui/cfg-test.rs | 2 +- tests/rustdoc-ui/check-cfg-test.rs | 4 +- tests/rustdoc-ui/coverage/basic.stdout | 2 +- tests/rustdoc-ui/coverage/empty.stdout | 2 +- tests/rustdoc-ui/coverage/enums.stdout | 2 +- tests/rustdoc-ui/coverage/exotic.stdout | 2 +- tests/rustdoc-ui/coverage/private.stdout | 2 +- tests/rustdoc-ui/coverage/traits.stdout | 2 +- tests/rustdoc-ui/display-output.rs | 2 +- .../rustdoc-ui/doc-comment-multi-line-attr.rs | 2 +- .../doc-comment-multi-line-cfg-attr.rs | 2 +- tests/rustdoc-ui/doc-test-doctest-feature.rs | 2 +- tests/rustdoc-ui/doc-test-rustdoc-feature.rs | 2 +- .../doctest-multiline-crate-attribute.rs | 2 +- tests/rustdoc-ui/doctest-output.rs | 2 +- .../rustdoc-ui/failed-doctest-compile-fail.rs | 2 +- .../failed-doctest-extra-semicolon-on-item.rs | 2 +- .../failed-doctest-missing-codes.rs | 2 +- .../failed-doctest-output-windows.rs | 2 +- tests/rustdoc-ui/failed-doctest-output.rs | 2 +- .../rustdoc-ui/failed-doctest-should-panic.rs | 2 +- tests/rustdoc-ui/issue-80992.rs | 2 +- tests/rustdoc-ui/issue-81662-shortness.rs | 2 +- tests/rustdoc-ui/issue-91134.rs | 2 +- tests/rustdoc-ui/no-run-flag.rs | 2 +- tests/rustdoc-ui/nocapture-fail.rs | 4 +- tests/rustdoc-ui/nocapture.rs | 2 +- tests/rustdoc-ui/run-directory.rs | 2 +- tests/rustdoc-ui/test-no_std.rs | 2 +- tests/rustdoc-ui/test-type.rs | 2 +- tests/rustdoc-ui/unparseable-doc-test.rs | 2 +- .../homogenous-floats-target-feature-mixup.rs | 2 +- .../auxiliary/ver-cfg-rel.rs | 2 +- tests/ui/crate-loading/crateresolve1.rs | 2 +- tests/ui/error-codes/E0464.rs | 2 +- tests/ui/error-codes/E0711.rs | 2 +- .../closure-expected-type/README.md | 2 +- tests/ui/generator/drop-control-flow.rs | 2 +- .../print/generator-print-verbose-1.rs | 2 +- tests/ui/hashmap/hashmap-memory.rs | 2 +- tests/ui/intrinsics/intrinsic-unreachable.rs | 2 +- tests/ui/let-else/let-else-bindings.rs | 2 +- tests/ui/save-analysis/issue-89066.rs | 2 +- triagebot.toml | 18 +-- 137 files changed, 315 insertions(+), 311 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23d3e71424b2..82048f800d0e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -342,7 +342,7 @@ jobs: os: macos-12-xl - name: x86_64-apple-1 env: - SCRIPT: "./x.py --stage 2 test --exclude src/test/ui --exclude src/test/rustdoc --exclude src/test/run-make-fulldeps" + SCRIPT: "./x.py --stage 2 test --exclude tests/ui --exclude tests/rustdoc --exclude tests/run-make-fulldeps" RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false" RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 MACOSX_DEPLOYMENT_TARGET: 10.8 @@ -353,7 +353,7 @@ jobs: os: macos-12-xl - name: x86_64-apple-2 env: - SCRIPT: "./x.py --stage 2 test src/test/ui src/test/rustdoc src/test/run-make-fulldeps" + SCRIPT: "./x.py --stage 2 test tests/ui tests/rustdoc tests/run-make-fulldeps" RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false" RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 MACOSX_DEPLOYMENT_TARGET: 10.8 diff --git a/.gitignore b/.gitignore index 37972532b361..e5ca3e503130 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ Session.vim .valgrindrc .cargo # Included because it is part of the test case -!/src/test/run-make/thumb-none-qemu/example/.cargo +!/tests/run-make/thumb-none-qemu/example/.cargo ## Configuration /config.toml @@ -74,6 +74,6 @@ package-lock.json package.json ## Rustdoc GUI tests -src/test/rustdoc-gui/src/**.lock +tests/rustdoc-gui/src/**.lock # Before adding new lines, see the comment at the top. diff --git a/Cargo.toml b/Cargo.toml index ce08d4edb567..15cbb2659c9b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ exclude = [ "compiler/rustc_codegen_cranelift", "compiler/rustc_codegen_gcc", "src/bootstrap", - "src/test/rustdoc-gui", + "tests/rustdoc-gui", # HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`. "obj", # The `x` binary is a thin wrapper that calls `x.py`, which initializes diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index 3634e6e47ce1..14f082be9ba8 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -689,8 +689,8 @@ impl<'hir> LoweringContext<'_, 'hir> { // call (like the identity function), as otherwise type and lifetime // inference have a hard time figuring things out. // Without this, we would get: - // E0720 in src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs - // E0700 in src/test/ui/self/self_lifetime-async.rs + // E0720 in tests/ui/impl-trait/in-trait/default-body-with-rpit.rs + // E0700 in tests/ui/self/self_lifetime-async.rs // `future::identity_future`: let identity_future = diff --git a/compiler/rustc_borrowck/src/consumers.rs b/compiler/rustc_borrowck/src/consumers.rs index becc04bbdab0..055b281bc2e7 100644 --- a/compiler/rustc_borrowck/src/consumers.rs +++ b/compiler/rustc_borrowck/src/consumers.rs @@ -25,7 +25,7 @@ pub use super::{ /// can, for example, happen when requesting a body of a `const` function /// because they are evaluated during typechecking. The panic can be avoided /// by overriding the `mir_borrowck` query. You can find a complete example -/// that shows how to do this at `src/test/run-make/obtain-borrowck/`. +/// that shows how to do this at `tests/run-make/obtain-borrowck/`. /// /// * Polonius is highly unstable, so expect regular changes in its signature or other details. pub fn get_body_with_borrowck_facts( diff --git a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs index eda5588a4d52..6658ee89ad6f 100644 --- a/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs +++ b/compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs @@ -1737,7 +1737,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { /// We check that there's a single level of block nesting to ensure always correct /// suggestions. If we don't, then we only provide a free-form message to avoid - /// misleading users in cases like `src/test/ui/nll/borrowed-temporary-error.rs`. + /// misleading users in cases like `tests/ui/nll/borrowed-temporary-error.rs`. /// We could expand the analysis to suggest hoising all of the relevant parts of /// the users' code to make the code compile, but that could be too much. struct NestedStatementVisitor { diff --git a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs index 4fe14c7af2fa..767f9fe39c68 100644 --- a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs +++ b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs @@ -262,7 +262,7 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> { return self.tcx.ty_error(); } - // Only check this for TAIT. RPIT already supports `src/test/ui/impl-trait/nested-return-type2.rs` + // Only check this for TAIT. RPIT already supports `tests/ui/impl-trait/nested-return-type2.rs` // on stable and we'd break that. let OpaqueTyOrigin::TyAlias = origin else { return definition_ty; diff --git a/compiler/rustc_codegen_cranelift/scripts/test_rustc_tests.sh b/compiler/rustc_codegen_cranelift/scripts/test_rustc_tests.sh index 04ad77ec97ea..12ecb8cf4e17 100755 --- a/compiler/rustc_codegen_cranelift/scripts/test_rustc_tests.sh +++ b/compiler/rustc_codegen_cranelift/scripts/test_rustc_tests.sh @@ -10,118 +10,118 @@ pushd rust command -v rg >/dev/null 2>&1 || cargo install ripgrep -rm -r src/test/ui/{extern/,unsized-locals/,lto/,linkage*} || true -for test in $(rg --files-with-matches "lto|// needs-asm-support|// needs-unwind" src/test/{ui,incremental}); do +rm -r tests/ui/{extern/,unsized-locals/,lto/,linkage*} || true +for test in $(rg --files-with-matches "lto|// needs-asm-support|// needs-unwind" tests/{ui,incremental}); do rm $test done -for test in $(rg -i --files-with-matches "//(\[\w+\])?~[^\|]*\s*ERR|// error-pattern:|// build-fail|// run-fail|-Cllvm-args" src/test/ui); do +for test in $(rg -i --files-with-matches "//(\[\w+\])?~[^\|]*\s*ERR|// error-pattern:|// build-fail|// run-fail|-Cllvm-args" tests/ui); do rm $test done -git checkout -- src/test/ui/issues/auxiliary/issue-3136-a.rs # contains //~ERROR, but shouldn't be removed -git checkout -- src/test/ui/proc-macro/pretty-print-hack/ +git checkout -- tests/ui/issues/auxiliary/issue-3136-a.rs # contains //~ERROR, but shouldn't be removed +git checkout -- tests/ui/proc-macro/pretty-print-hack/ # missing features # ================ # requires stack unwinding -rm src/test/incremental/change_crate_dep_kind.rs -rm src/test/incremental/issue-80691-bad-eval-cache.rs # -Cpanic=abort causes abort instead of exit(101) +rm tests/incremental/change_crate_dep_kind.rs +rm tests/incremental/issue-80691-bad-eval-cache.rs # -Cpanic=abort causes abort instead of exit(101) # requires compiling with -Cpanic=unwind -rm -r src/test/ui/macros/rfc-2011-nicer-assert-messages/ -rm -r src/test/run-make/test-benches +rm -r tests/ui/macros/rfc-2011-nicer-assert-messages/ +rm -r tests/run-make/test-benches # vendor intrinsics -rm src/test/ui/sse2.rs # cpuid not supported, so sse2 not detected -rm src/test/ui/intrinsics/const-eval-select-x86_64.rs # requires x86_64 vendor intrinsics -rm src/test/ui/simd/array-type.rs # "Index argument for `simd_insert` is not a constant" -rm src/test/ui/simd/intrinsic/generic-bitmask-pass.rs # simd_bitmask unimplemented -rm src/test/ui/simd/intrinsic/generic-as.rs # simd_as unimplemented -rm src/test/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs # simd_saturating_add unimplemented -rm src/test/ui/simd/intrinsic/float-math-pass.rs # simd_fcos unimplemented -rm src/test/ui/simd/intrinsic/generic-gather-pass.rs # simd_gather unimplemented -rm src/test/ui/simd/intrinsic/generic-select-pass.rs # simd_select_bitmask unimplemented -rm src/test/ui/simd/issue-85915-simd-ptrs.rs # simd_gather unimplemented -rm src/test/ui/simd/issue-89193.rs # simd_gather unimplemented -rm src/test/ui/simd/simd-bitmask.rs # simd_bitmask unimplemented +rm tests/ui/sse2.rs # cpuid not supported, so sse2 not detected +rm tests/ui/intrinsics/const-eval-select-x86_64.rs # requires x86_64 vendor intrinsics +rm tests/ui/simd/array-type.rs # "Index argument for `simd_insert` is not a constant" +rm tests/ui/simd/intrinsic/generic-bitmask-pass.rs # simd_bitmask unimplemented +rm tests/ui/simd/intrinsic/generic-as.rs # simd_as unimplemented +rm tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs # simd_saturating_add unimplemented +rm tests/ui/simd/intrinsic/float-math-pass.rs # simd_fcos unimplemented +rm tests/ui/simd/intrinsic/generic-gather-pass.rs # simd_gather unimplemented +rm tests/ui/simd/intrinsic/generic-select-pass.rs # simd_select_bitmask unimplemented +rm tests/ui/simd/issue-85915-simd-ptrs.rs # simd_gather unimplemented +rm tests/ui/simd/issue-89193.rs # simd_gather unimplemented +rm tests/ui/simd/simd-bitmask.rs # simd_bitmask unimplemented # exotic linkages -rm src/test/ui/issues/issue-33992.rs # unsupported linkages -rm src/test/incremental/hashes/function_interfaces.rs # same -rm src/test/incremental/hashes/statics.rs # same +rm tests/ui/issues/issue-33992.rs # unsupported linkages +rm tests/incremental/hashes/function_interfaces.rs # same +rm tests/incremental/hashes/statics.rs # same # variadic arguments -rm src/test/ui/abi/mir/mir_codegen_calls_variadic.rs # requires float varargs -rm src/test/ui/abi/variadic-ffi.rs # requires callee side vararg support +rm tests/ui/abi/mir/mir_codegen_calls_variadic.rs # requires float varargs +rm tests/ui/abi/variadic-ffi.rs # requires callee side vararg support # unsized locals -rm -r src/test/run-pass-valgrind/unsized-locals +rm -r tests/run-pass-valgrind/unsized-locals # misc unimplemented things -rm src/test/ui/intrinsics/intrinsic-nearby.rs # unimplemented nearbyintf32 and nearbyintf64 intrinsics -rm src/test/ui/target-feature/missing-plusminus.rs # error not implemented -rm src/test/ui/fn/dyn-fn-alignment.rs # wants a 256 byte alignment -rm -r src/test/run-make/emit-named-files # requires full --emit support -rm src/test/ui/abi/stack-probes.rs # stack probes not yet implemented -rm src/test/ui/simd/intrinsic/ptr-cast.rs # simd_expose_addr intrinsic unimplemented -rm -r src/test/run-make/repr128-dwarf # debuginfo test -rm src/test/codegen-units/item-collection/asm-sym.rs # requires support for sym in asm!() +rm tests/ui/intrinsics/intrinsic-nearby.rs # unimplemented nearbyintf32 and nearbyintf64 intrinsics +rm tests/ui/target-feature/missing-plusminus.rs # error not implemented +rm tests/ui/fn/dyn-fn-alignment.rs # wants a 256 byte alignment +rm -r tests/run-make/emit-named-files # requires full --emit support +rm tests/ui/abi/stack-probes.rs # stack probes not yet implemented +rm tests/ui/simd/intrinsic/ptr-cast.rs # simd_expose_addr intrinsic unimplemented +rm -r tests/run-make/repr128-dwarf # debuginfo test +rm tests/codegen-units/item-collection/asm-sym.rs # requires support for sym in asm!() # optimization tests # ================== -rm src/test/ui/codegen/issue-28950.rs # depends on stack size optimizations -rm src/test/ui/codegen/init-large-type.rs # same -rm src/test/ui/issues/issue-40883.rs # same -rm -r src/test/run-make/fmt-write-bloat/ # tests an optimization +rm tests/ui/codegen/issue-28950.rs # depends on stack size optimizations +rm tests/ui/codegen/init-large-type.rs # same +rm tests/ui/issues/issue-40883.rs # same +rm -r tests/run-make/fmt-write-bloat/ # tests an optimization # backend specific tests # ====================== -rm src/test/incremental/thinlto/cgu_invalidated_when_import_{added,removed}.rs # requires LLVM -rm src/test/ui/abi/stack-protector.rs # requires stack protector support +rm tests/incremental/thinlto/cgu_invalidated_when_import_{added,removed}.rs # requires LLVM +rm tests/ui/abi/stack-protector.rs # requires stack protector support # giving different but possibly correct results # ============================================= -rm src/test/ui/mir/mir_misc_casts.rs # depends on deduplication of constants -rm src/test/ui/mir/mir_raw_fat_ptr.rs # same -rm src/test/ui/consts/issue-33537.rs # same -rm src/test/ui/layout/valid_range_oob.rs # different ICE message +rm tests/ui/mir/mir_misc_casts.rs # depends on deduplication of constants +rm tests/ui/mir/mir_raw_fat_ptr.rs # same +rm tests/ui/consts/issue-33537.rs # same +rm tests/ui/layout/valid_range_oob.rs # different ICE message # doesn't work due to the way the rustc test suite is invoked. # should work when using ./x.py test the way it is intended # ============================================================ -rm -r src/test/run-make/emit-shared-files # requires the rustdoc executable in dist/bin/ -rm -r src/test/run-make/unstable-flag-required # same -rm -r src/test/run-make/rustdoc-* # same -rm -r src/test/run-make/issue-88756-default-output # same -rm -r src/test/run-make/remap-path-prefix-dwarf # requires llvm-dwarfdump -rm -r src/test/ui/consts/missing_span_in_backtrace.rs # expects sysroot source to be elsewhere +rm -r tests/run-make/emit-shared-files # requires the rustdoc executable in dist/bin/ +rm -r tests/run-make/unstable-flag-required # same +rm -r tests/run-make/rustdoc-* # same +rm -r tests/run-make/issue-88756-default-output # same +rm -r tests/run-make/remap-path-prefix-dwarf # requires llvm-dwarfdump +rm -r tests/ui/consts/missing_span_in_backtrace.rs # expects sysroot source to be elsewhere # genuine bugs # ============ -rm src/test/incremental/spike-neg1.rs # errors out for some reason -rm src/test/incremental/spike-neg2.rs # same -rm src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs # gives a stackoverflow before the backend runs -rm src/test/ui/mir/ssa-analysis-regression-50041.rs # produces ICE -rm src/test/ui/type-alias-impl-trait/assoc-projection-ice.rs # produces ICE +rm tests/incremental/spike-neg1.rs # errors out for some reason +rm tests/incremental/spike-neg2.rs # same +rm tests/ui/issues/issue-74564-if-expr-stack-overflow.rs # gives a stackoverflow before the backend runs +rm tests/ui/mir/ssa-analysis-regression-50041.rs # produces ICE +rm tests/ui/type-alias-impl-trait/assoc-projection-ice.rs # produces ICE -rm src/test/ui/simd/intrinsic/generic-reduction-pass.rs # simd_reduce_add_unordered doesn't accept an accumulator for integer vectors +rm tests/ui/simd/intrinsic/generic-reduction-pass.rs # simd_reduce_add_unordered doesn't accept an accumulator for integer vectors -rm src/test/ui/runtime/out-of-stack.rs # SIGSEGV instead of SIGABRT for some reason (#1301) +rm tests/ui/runtime/out-of-stack.rs # SIGSEGV instead of SIGABRT for some reason (#1301) # bugs in the test suite # ====================== -rm src/test/ui/backtrace.rs # TODO warning -rm src/test/ui/simple_global_asm.rs # TODO add needs-asm-support -rm src/test/ui/test-attrs/test-type.rs # TODO panic message on stderr. correct stdout +rm tests/ui/backtrace.rs # TODO warning +rm tests/ui/simple_global_asm.rs # TODO add needs-asm-support +rm tests/ui/test-attrs/test-type.rs # TODO panic message on stderr. correct stdout # not sure if this is actually a bug in the test suite, but the symbol list shows the function without leading _ for some reason -rm -r src/test/run-make/native-link-modifier-bundle -rm src/test/ui/process/nofile-limit.rs # TODO some AArch64 linking issue -rm src/test/ui/dyn-star/dispatch-on-pin-mut.rs # TODO failed assertion in vtable::get_ptr_and_method_ref +rm -r tests/run-make/native-link-modifier-bundle +rm tests/ui/process/nofile-limit.rs # TODO some AArch64 linking issue +rm tests/ui/dyn-star/dispatch-on-pin-mut.rs # TODO failed assertion in vtable::get_ptr_and_method_ref -rm src/test/ui/stdio-is-blocking.rs # really slow with unoptimized libstd +rm tests/ui/stdio-is-blocking.rs # really slow with unoptimized libstd echo "[TEST] rustc test suite" -RUST_TEST_NOCAPTURE=1 COMPILETEST_FORCE_STAGE0=1 ./x.py test --stage 0 src/test/{codegen-units,run-make,run-pass-valgrind,ui,incremental} +RUST_TEST_NOCAPTURE=1 COMPILETEST_FORCE_STAGE0=1 ./x.py test --stage 0 tests/{codegen-units,run-make,run-pass-valgrind,ui,incremental} popd diff --git a/compiler/rustc_codegen_gcc/test.sh b/compiler/rustc_codegen_gcc/test.sh index 8b390f95a4b9..c5ffb763673d 100755 --- a/compiler/rustc_codegen_gcc/test.sh +++ b/compiler/rustc_codegen_gcc/test.sh @@ -253,25 +253,25 @@ rustc = "$HOME/.rustup/toolchains/$rust_toolchain-$TARGET_TRIPLE/bin/rustc" EOF rustc -V | cut -d' ' -f3 | tr -d '(' - git checkout $(rustc -V | cut -d' ' -f3 | tr -d '(') src/test + git checkout $(rustc -V | cut -d' ' -f3 | tr -d '(') tests - for test in $(rg -i --files-with-matches "//(\[\w+\])?~|// error-pattern:|// build-fail|// run-fail|-Cllvm-args" src/test/ui); do + for test in $(rg -i --files-with-matches "//(\[\w+\])?~|// error-pattern:|// build-fail|// run-fail|-Cllvm-args" tests/ui); do rm $test done - git checkout -- src/test/ui/issues/auxiliary/issue-3136-a.rs # contains //~ERROR, but shouldn't be removed + git checkout -- tests/ui/issues/auxiliary/issue-3136-a.rs # contains //~ERROR, but shouldn't be removed - rm -r src/test/ui/{abi*,extern/,panic-runtime/,panics/,unsized-locals/,proc-macro/,threads-sendsync/,thinlto/,borrowck/,test*,*lto*.rs} || true - for test in $(rg --files-with-matches "catch_unwind|should_panic|thread|lto" src/test/ui); do + rm -r tests/ui/{abi*,extern/,panic-runtime/,panics/,unsized-locals/,proc-macro/,threads-sendsync/,thinlto/,borrowck/,test*,*lto*.rs} || true + for test in $(rg --files-with-matches "catch_unwind|should_panic|thread|lto" tests/ui); do rm $test done - git checkout src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs - git checkout src/test/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs + git checkout tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice.rs + git checkout tests/ui/type-alias-impl-trait/auxiliary/cross_crate_ice2.rs RUSTC_ARGS="-Zpanic-abort-tests -Csymbol-mangling-version=v0 -Zcodegen-backend="$(pwd)"/../target/"$CHANNEL"/librustc_codegen_gcc."$dylib_ext" --sysroot "$(pwd)"/../build_sysroot/sysroot -Cpanic=abort" echo "[TEST] rustc test suite" - COMPILETEST_FORCE_STAGE0=1 ./x.py test --run always --stage 0 src/test/ui/ --rustc-args "$RUSTC_ARGS" + COMPILETEST_FORCE_STAGE0=1 ./x.py test --run always --stage 0 tests/ui/ --rustc-args "$RUSTC_ARGS" } function clean_ui_tests() { diff --git a/compiler/rustc_const_eval/src/transform/check_consts/post_drop_elaboration.rs b/compiler/rustc_const_eval/src/transform/check_consts/post_drop_elaboration.rs index d4570c598891..cf4e875c91f0 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/post_drop_elaboration.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/post_drop_elaboration.rs @@ -95,7 +95,7 @@ impl<'tcx> Visitor<'tcx> for CheckLiveDrops<'_, 'tcx> { } // Drop elaboration is not precise enough to accept code like - // `src/test/ui/consts/control-flow/drop-pass.rs`; e.g., when an `Option>` is + // `tests/ui/consts/control-flow/drop-pass.rs`; e.g., when an `Option>` is // initialized with `None` and never changed, it still emits drop glue. // Hence we additionally check the qualifs here to allow more code to pass. if self.qualifs.needs_non_const_drop(self.ccx, dropped_place.local, location) { diff --git a/compiler/rustc_hir_analysis/src/astconv/errors.rs b/compiler/rustc_hir_analysis/src/astconv/errors.rs index e6465d641f1e..5368dc0735bc 100644 --- a/compiler/rustc_hir_analysis/src/astconv/errors.rs +++ b/compiler/rustc_hir_analysis/src/astconv/errors.rs @@ -267,7 +267,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { // segments, even though `trait_ref.path.segments` is of length `1`. Work // around that bug here, even though it should be fixed elsewhere. // This would otherwise cause an invalid suggestion. For an example, look at - // `src/test/ui/issues/issue-28344.rs` where instead of the following: + // `tests/ui/issues/issue-28344.rs` where instead of the following: // // error[E0191]: the value of the associated type `Output` // (from trait `std::ops::BitXor`) must be specified diff --git a/compiler/rustc_hir_typeck/src/coercion.rs b/compiler/rustc_hir_typeck/src/coercion.rs index 9e91a3f90764..a0e086bc2610 100644 --- a/compiler/rustc_hir_typeck/src/coercion.rs +++ b/compiler/rustc_hir_typeck/src/coercion.rs @@ -13,7 +13,7 @@ //! useful for freezing mut things (that is, when the expected type is &T //! but you have &mut T) and also for avoiding the linearity //! of mut things (when the expected is &mut T and you have &mut T). See -//! the various `src/test/ui/coerce/*.rs` tests for +//! the various `tests/ui/coerce/*.rs` tests for //! examples of where this is useful. //! //! ## Subtle note diff --git a/compiler/rustc_hir_typeck/src/demand.rs b/compiler/rustc_hir_typeck/src/demand.rs index 33fc7413a679..6c128d0aa1a6 100644 --- a/compiler/rustc_hir_typeck/src/demand.rs +++ b/compiler/rustc_hir_typeck/src/demand.rs @@ -1855,7 +1855,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let mut expectation = Some(expected_ty); while let hir::ExprKind::MethodCall(_, rcvr, ..) = expr.kind { // Getting to the root receiver and asserting it is a fn call let's us ignore cases in - // `src/test/ui/methods/issues/issue-90315.stderr`. + // `tests/ui/methods/issues/issue-90315.stderr`. expr = rcvr; // If we have more than one layer of calls, then the expected ty // cannot guide the method probe. diff --git a/compiler/rustc_hir_typeck/src/fallback.rs b/compiler/rustc_hir_typeck/src/fallback.rs index ac6b0924ab57..2cc7b357c0a4 100644 --- a/compiler/rustc_hir_typeck/src/fallback.rs +++ b/compiler/rustc_hir_typeck/src/fallback.rs @@ -308,7 +308,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { if relationship.self_in_trait && relationship.output { // This case falls back to () to ensure that the code pattern in - // src/test/ui/never_type/fallback-closure-ret.rs continues to + // tests/ui/never_type/fallback-closure-ret.rs continues to // compile when never_type_fallback is enabled. // // This rule is not readily explainable from first principles, diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 594a60c70a79..47c4b7d74319 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -670,8 +670,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Note: this check is pessimistic, as the inference type could be matched with something other // than the opaque type, but then we need a new `TypeRelation` just for this specific case and // can't re-use `sup` below. - // See src/test/ui/impl-trait/hidden-type-is-opaque.rs and - // src/test/ui/impl-trait/hidden-type-is-opaque-2.rs for examples that hit this path. + // See tests/ui/impl-trait/hidden-type-is-opaque.rs and + // tests/ui/impl-trait/hidden-type-is-opaque-2.rs for examples that hit this path. if formal_ret.has_infer_types() { for ty in ret_ty.walk() { if let ty::subst::GenericArgKind::Type(ty) = ty.unpack() diff --git a/compiler/rustc_hir_typeck/src/generator_interior/mod.rs b/compiler/rustc_hir_typeck/src/generator_interior/mod.rs index e4ac91befac6..7990d95310be 100644 --- a/compiler/rustc_hir_typeck/src/generator_interior/mod.rs +++ b/compiler/rustc_hir_typeck/src/generator_interior/mod.rs @@ -448,7 +448,7 @@ impl<'a, 'tcx> Visitor<'tcx> for InteriorVisitor<'a, 'tcx> { // the yield, even if it's not borrowed or referenced after the yield. Ideally this would // *only* happen for types with observable drop, not all types which wrap them, but that // doesn't match the behavior of MIR borrowck and causes ICEs. See the FIXME comment in - // src/test/ui/generator/drop-tracking-parent-expression.rs. + // tests/ui/generator/drop-tracking-parent-expression.rs. let scope = if self.drop_ranges.is_borrowed_temporary(expr) || ty.map_or(true, |ty| { // Avoid ICEs in needs_drop. diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index a2c6e246610b..7d2ba1fd09df 100644 --- a/compiler/rustc_hir_typeck/src/method/confirm.rs +++ b/compiler/rustc_hir_typeck/src/method/confirm.rs @@ -90,7 +90,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { // If there is a `Self: Sized` bound and `Self` is a trait object, it is possible that // something which derefs to `Self` actually implements the trait and the caller // wanted to make a static dispatch on it but forgot to import the trait. - // See test `src/test/ui/issue-35976.rs`. + // See test `tests/ui/issue-35976.rs`. // // In that case, we'll error anyway, but we'll also re-run the search with all traits // in scope, and if we find another method which can be used, we'll output an diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index 02b4d5bb2fbe..5d8383170f0d 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -1713,7 +1713,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { /// probe. This will result in a pending obligation so when more type-info is available we can /// make the final decision. /// - /// Example (`src/test/ui/method-two-trait-defer-resolution-1.rs`): + /// Example (`tests/ui/method-two-trait-defer-resolution-1.rs`): /// /// ```ignore (illustrative) /// trait Foo { ... } diff --git a/compiler/rustc_hir_typeck/src/upvar.rs b/compiler/rustc_hir_typeck/src/upvar.rs index a9347991e7f9..e12a575d5acd 100644 --- a/compiler/rustc_hir_typeck/src/upvar.rs +++ b/compiler/rustc_hir_typeck/src/upvar.rs @@ -663,7 +663,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // fields of some type, the observable drop order will remain the same as it previously // was even though we're dropping each capture individually. // See https://github.com/rust-lang/project-rfc-2229/issues/42 and - // `src/test/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs`. + // `tests/ui/closures/2229_closure_analysis/preserve_field_drop_order.rs`. for (_, captures) in &mut root_var_min_capture_list { captures.sort_by(|capture1, capture2| { for (p1, p2) in capture1.place.projections.iter().zip(&capture2.place.projections) { diff --git a/compiler/rustc_infer/src/infer/combine.rs b/compiler/rustc_infer/src/infer/combine.rs index 9a1c49c1aa6a..77e38e47fcfa 100644 --- a/compiler/rustc_infer/src/infer/combine.rs +++ b/compiler/rustc_infer/src/infer/combine.rs @@ -219,7 +219,7 @@ impl<'tcx> InferCtxt<'tcx> { /// /// As `3 + 4` contains `N` in its substs, this must not succeed. /// - /// See `src/test/ui/const-generics/occurs-check/` for more examples where this is relevant. + /// See `tests/ui/const-generics/occurs-check/` for more examples where this is relevant. #[instrument(level = "debug", skip(self))] fn unify_const_variable( &self, diff --git a/compiler/rustc_infer/src/infer/error_reporting/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/mod.rs index 5c3e9a2d5ccc..66db1a2f9289 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/mod.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/mod.rs @@ -310,7 +310,7 @@ pub fn unexpected_hidden_region_diagnostic<'tcx>( // Ugh. This is a painful case: the hidden region is not one // that we can easily summarize or explain. This can happen // in a case like - // `src/test/ui/multiple-lifetimes/ordinary-bounds-unsuited.rs`: + // `tests/ui/multiple-lifetimes/ordinary-bounds-unsuited.rs`: // // ``` // fn upper_bounds<'a, 'b>(a: Ordinary<'a>, b: Ordinary<'b>) -> impl Trait<'a, 'b> { @@ -1395,7 +1395,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { /// `swap_secondary_and_primary` is used to make projection errors in particular nicer by using /// the message in `secondary_span` as the primary label, and apply the message that would /// otherwise be used for the primary label on the `secondary_span` `Span`. This applies on - /// E0271, like `src/test/ui/issues/issue-39970.stderr`. + /// E0271, like `tests/ui/issues/issue-39970.stderr`. #[instrument( level = "debug", skip(self, diag, secondary_span, swap_secondary_and_primary, prefer_label) diff --git a/compiler/rustc_mir_transform/src/unreachable_prop.rs b/compiler/rustc_mir_transform/src/unreachable_prop.rs index 06deca2fffb4..d4b1cfe43372 100644 --- a/compiler/rustc_mir_transform/src/unreachable_prop.rs +++ b/compiler/rustc_mir_transform/src/unreachable_prop.rs @@ -87,7 +87,7 @@ where // unless otherwise is unreachable, in which case deleting a normal branch causes it to be merged with // the otherwise, keeping its unreachable. // This looses information about reachability causing worse codegen. - // For example (see src/test/codegen/match-optimizes-away.rs) + // For example (see tests/codegen/match-optimizes-away.rs) // // pub enum Two { A, B } // pub fn identity(x: Two) -> Two { diff --git a/compiler/rustc_privacy/src/lib.rs b/compiler/rustc_privacy/src/lib.rs index 8fe47d862e77..564cb1baa690 100644 --- a/compiler/rustc_privacy/src/lib.rs +++ b/compiler/rustc_privacy/src/lib.rs @@ -1755,7 +1755,7 @@ impl SearchInterfaceForPrivateItemsVisitor<'_> { // clauses that the compiler inferred. We only want to // consider the ones that the user wrote. This is important // for the inferred outlives rules; see - // `src/test/ui/rfc-2093-infer-outlives/privacy.rs`. + // `tests/ui/rfc-2093-infer-outlives/privacy.rs`. self.visit_predicates(self.tcx.explicit_predicates_of(self.item_def_id)); self } diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index cf6359962686..58f6fd2b006f 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -514,7 +514,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { ModuleKind::Block => unreachable!(), }; // HACK(eddyb) unclear how good this is, but keeping `$crate` - // in `source` breaks `src/test/ui/imports/import-crate-var.rs`, + // in `source` breaks `tests/ui/imports/import-crate-var.rs`, // while the current crate doesn't have a valid `crate_name`. if crate_name != kw::Empty { // `crate_name` should not be interpreted as relative. diff --git a/compiler/rustc_trait_selection/src/traits/coherence.rs b/compiler/rustc_trait_selection/src/traits/coherence.rs index 26757965c958..258d2e2d28c9 100644 --- a/compiler/rustc_trait_selection/src/traits/coherence.rs +++ b/compiler/rustc_trait_selection/src/traits/coherence.rs @@ -749,7 +749,7 @@ impl<'tcx> TypeVisitor<'tcx> for OrphanChecker<'tcx> { /// /// This means that we can completely ignore constants during the orphan check. /// - /// See `src/test/ui/coherence/const-generics-orphan-check-ok.rs` for examples. + /// See `tests/ui/coherence/const-generics-orphan-check-ok.rs` for examples. /// /// [^1]: This might not hold for function pointers or trait objects in the future. /// As these should be quite rare as const arguments and especially rare as impl diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs index f7614997585c..81966f3fcb23 100644 --- a/compiler/rustc_trait_selection/src/traits/project.rs +++ b/compiler/rustc_trait_selection/src/traits/project.rs @@ -282,7 +282,7 @@ fn project_and_unify_type<'cx, 'tcx>( }; debug!(?normalized, ?obligations, "project_and_unify_type result"); let actual = obligation.predicate.term; - // For an example where this is necessary see src/test/ui/impl-trait/nested-return-type2.rs + // For an example where this is necessary see tests/ui/impl-trait/nested-return-type2.rs // This allows users to omit re-mentioning all bounds on an associated type and just use an // `impl Trait` for the assoc type to add more bounds. let InferOk { value: actual, obligations: new } = diff --git a/compiler/rustc_trait_selection/src/traits/wf.rs b/compiler/rustc_trait_selection/src/traits/wf.rs index 0e0a883d9f59..fec4047ff49b 100644 --- a/compiler/rustc_trait_selection/src/traits/wf.rs +++ b/compiler/rustc_trait_selection/src/traits/wf.rs @@ -232,7 +232,7 @@ fn extend_cause_with_original_assoc_item_obligation<'tcx>( // The obligation comes not from the current `impl` nor the `trait` being implemented, // but rather from a "second order" obligation, where an associated type has a // projection coming from another associated type. See - // `src/test/ui/associated-types/point-at-type-on-obligation-failure.rs` and + // `tests/ui/associated-types/point-at-type-on-obligation-failure.rs` and // `traits-assoc-type-in-supertrait-bad.rs`. if let Some(ty::Alias(ty::Projection, projection_ty)) = proj.term.ty().map(|ty| ty.kind()) && let Some(&impl_item_id) = @@ -640,7 +640,7 @@ impl<'tcx> WfPredicates<'tcx> { // hidden type that is not actually well formed and // can cause compiler crashes when the user abuses unsafe // code to procure such a closure. - // See src/test/ui/type-alias-impl-trait/wf_check_closures.rs + // See tests/ui/type-alias-impl-trait/wf_check_closures.rs let obligations = self.nominal_obligations(did, substs); self.out.extend(obligations); } diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs index d1197774fe96..dc1dd1bfaf8e 100644 --- a/compiler/rustc_ty_utils/src/abi.rs +++ b/compiler/rustc_ty_utils/src/abi.rs @@ -35,7 +35,7 @@ fn fn_sig_for_fn_abi<'tcx>( // HACK(davidtwco,eddyb): This is a workaround for polymorphization considering // parameters unused if they show up in the signature, but not in the `mir::Body` // (i.e. due to being inside a projection that got normalized, see - // `src/test/ui/polymorphization/normalized_sig_types.rs`), and codegen not keeping + // `tests/ui/polymorphization/normalized_sig_types.rs`), and codegen not keeping // track of a polymorphization `ParamEnv` to allow normalizing later. // // We normalize the `fn_sig` again after substituting at a later point. diff --git a/library/std/src/sys/unix/process/process_unix/tests.rs b/library/std/src/sys/unix/process/process_unix/tests.rs index e0e2d478fad7..4c87f633a260 100644 --- a/library/std/src/sys/unix/process/process_unix/tests.rs +++ b/library/std/src/sys/unix/process/process_unix/tests.rs @@ -3,7 +3,7 @@ use crate::panic::catch_unwind; use crate::process::Command; // Many of the other aspects of this situation, including heap alloc concurrency -// safety etc., are tested in src/test/ui/process/process-panic-after-fork.rs +// safety etc., are tested in tests/ui/process/process-panic-after-fork.rs #[test] fn exitstatus_display_tests() { diff --git a/rustfmt.toml b/rustfmt.toml index aa0d4888f082..828d492a3d19 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -13,7 +13,7 @@ ignore = [ # tests for now are not formatted, as they are sometimes pretty-printing constrained # (and generally rustfmt can move around comments in UI-testing incompatible ways) - "src/test", + "tests", # do not format submodules "library/backtrace", diff --git a/src/bootstrap/README.md b/src/bootstrap/README.md index 79c2eb31cdae..8dce9e79e16b 100644 --- a/src/bootstrap/README.md +++ b/src/bootstrap/README.md @@ -59,10 +59,10 @@ The script accepts commands, flags, and arguments to determine what to do: ./x.py test tidy # execute the UI test suite - ./x.py test src/test/ui + ./x.py test tests/ui # execute only some tests in the UI test suite - ./x.py test src/test/ui --test-args substring-of-test-name + ./x.py test tests/ui --test-args substring-of-test-name # execute tests in the standard library in stage0 ./x.py test --stage 0 library/std diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index b54bf4326219..52a83fa29c70 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -191,9 +191,9 @@ pub enum PathSet { /// A "suite" of paths. /// /// These can match as a path suffix (like `Set`), or as a prefix. For - /// example, a command-line value of `src/test/ui/abi/variadic-ffi.rs` - /// will match `src/test/ui`. A command-line value of `ui` would also - /// match `src/test/ui`. + /// example, a command-line value of `tests/ui/abi/variadic-ffi.rs` + /// will match `tests/ui`. A command-line value of `ui` would also + /// match `tests/ui`. Suite(TaskPath), } diff --git a/src/bootstrap/builder/tests.rs b/src/bootstrap/builder/tests.rs index 5f21d2b0067d..d5fcd107502e 100644 --- a/src/bootstrap/builder/tests.rs +++ b/src/bootstrap/builder/tests.rs @@ -78,7 +78,7 @@ macro_rules! rustc { #[test] fn test_valid() { // make sure multi suite paths are accepted - check_cli(["test", "src/test/ui/attr-start.rs", "src/test/ui/attr-shebang.rs"]); + check_cli(["test", "tests/ui/attr-start.rs", "tests/ui/attr-shebang.rs"]); } #[test] diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 6b211d3ec6e8..68d1db0160a2 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -1193,7 +1193,7 @@ impl Step for Sysroot { ); if builder.config.rust_remap_debuginfo { eprintln!( - "warning: some `src/test/ui` tests will fail when lacking `{}`", + "warning: some `tests/ui` tests will fail when lacking `{}`", sysroot_lib_rustlib_src_rust.display(), ); } diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index 31cc4aa57bbe..0af329e7007a 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -45,7 +45,7 @@ o("llvm-static-stdcpp", "llvm.static-libstdcpp", "statically link to libstdc++ f o("llvm-link-shared", "llvm.link-shared", "prefer shared linking to LLVM (llvm-config --link-shared)") o("rpath", "rust.rpath", "build rpaths into rustc itself") o("llvm-version-check", "llvm.version-check", "check if the LLVM version is supported, build anyway") -o("codegen-tests", "rust.codegen-tests", "run the src/test/codegen tests") +o("codegen-tests", "rust.codegen-tests", "run the tests/codegen tests") o("option-checking", None, "complain about unrecognized options in this configure script") o("ninja", "llvm.ninja", "build LLVM using the Ninja generator (for MSVC, requires building in the correct environment)") o("locked-deps", "build.locked-deps", "force Cargo.lock to be up to date") diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 2c6d201d18fb..52c3dc0bf759 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -487,13 +487,13 @@ Arguments: This subcommand accepts a number of paths to test directories that should be compiled and run. For example: - ./x.py test src/test/ui + ./x.py test tests/ui ./x.py test library/std --test-args hash_map ./x.py test library/std --stage 0 --no-doc - ./x.py test src/test/ui --bless - ./x.py test src/test/ui --compare-mode chalk + ./x.py test tests/ui --bless + ./x.py test tests/ui --compare-mode chalk - Note that `test src/test/* --stage N` does NOT depend on `build compiler/rustc --stage N`; + Note that `test tests/* --stage N` does NOT depend on `build compiler/rustc --stage N`; just like `build library/std --stage N` it tests the compiler produced by the previous stage. diff --git a/src/bootstrap/mk/Makefile.in b/src/bootstrap/mk/Makefile.in index 5b2aba9aa2dc..d54a21b9f164 100644 --- a/src/bootstrap/mk/Makefile.in +++ b/src/bootstrap/mk/Makefile.in @@ -58,7 +58,7 @@ prepare: $(Q)$(BOOTSTRAP) build --stage 2 nonexistent/path/to/trigger/cargo/metadata TESTS_IN_2 := \ - src/test/ui \ + tests/ui \ src/tools/linkchecker ## MSVC native builders @@ -72,7 +72,7 @@ ci-subset-2: ## MingW native builders TESTS_IN_MINGW_2 := \ - src/test/ui + tests/ui ci-mingw-subset-1: $(Q)$(CFG_SRC_DIR)/x test --stage 2 $(TESTS_IN_MINGW_2:%=--exclude %) diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index 89bb2b770f90..e0d1504c9c78 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -907,7 +907,7 @@ impl Step for TestHelpers { type Output = (); fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - run.path("src/test/auxiliary/rust_test_helpers.c") + run.path("tests/auxiliary/rust_test_helpers.c") } fn make_run(run: RunConfig<'_>) { @@ -929,7 +929,7 @@ impl Step for TestHelpers { self.target }; let dst = builder.test_helpers_out(target); - let src = builder.src.join("src/test/auxiliary/rust_test_helpers.c"); + let src = builder.src.join("tests/auxiliary/rust_test_helpers.c"); if up_to_date(&src, &dst.join("librust_test_helpers.a")) { return; } @@ -958,7 +958,7 @@ impl Step for TestHelpers { .opt_level(0) .warnings(false) .debug(false) - .file(builder.src.join("src/test/auxiliary/rust_test_helpers.c")) + .file(builder.src.join("tests/auxiliary/rust_test_helpers.c")) .compile("rust_test_helpers"); } } diff --git a/src/bootstrap/setup.rs b/src/bootstrap/setup.rs index ca4feac6fac7..004601cb68b1 100644 --- a/src/bootstrap/setup.rs +++ b/src/bootstrap/setup.rs @@ -144,7 +144,7 @@ pub fn setup(config: &Config, profile: Profile) { Profile::Tools => &[ "check", "build", - "test src/test/rustdoc*", + "test tests/rustdoc*", "test src/tools/clippy", "test src/tools/miri", "test src/tools/rustfmt", diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index ea906be7e3ac..159f2fba671c 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -841,7 +841,7 @@ impl Step for RustdocJSStd { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - run.suite_path("src/test/rustdoc-js-std") + run.suite_path("tests/rustdoc-js-std") } fn make_run(run: RunConfig<'_>) { @@ -860,10 +860,10 @@ impl Step for RustdocJSStd { .arg("--doc-folder") .arg(builder.doc_out(self.target)) .arg("--test-folder") - .arg(builder.src.join("src/test/rustdoc-js-std")); + .arg(builder.src.join("tests/rustdoc-js-std")); for path in &builder.paths { if let Some(p) = - util::is_valid_test_suite_arg(path, "src/test/rustdoc-js-std", builder) + util::is_valid_test_suite_arg(path, "tests/rustdoc-js-std", builder) { if !p.ends_with(".js") { eprintln!("A non-js file was given: `{}`", path.display()); @@ -879,7 +879,7 @@ impl Step for RustdocJSStd { }); builder.run(&mut command); } else { - builder.info("No nodejs found, skipping \"src/test/rustdoc-js-std\" tests"); + builder.info("No nodejs found, skipping \"tests/rustdoc-js-std\" tests"); } } } @@ -896,7 +896,7 @@ impl Step for RustdocJSNotStd { const ONLY_HOSTS: bool = true; fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { - run.suite_path("src/test/rustdoc-js") + run.suite_path("tests/rustdoc-js") } fn make_run(run: RunConfig<'_>) { @@ -911,11 +911,11 @@ impl Step for RustdocJSNotStd { target: self.target, mode: "js-doc-test", suite: "rustdoc-js", - path: "src/test/rustdoc-js", + path: "tests/rustdoc-js", compare_mode: None, }); } else { - builder.info("No nodejs found, skipping \"src/test/rustdoc-js\" tests"); + builder.info("No nodejs found, skipping \"tests/rustdoc-js\" tests"); } } } @@ -976,7 +976,7 @@ impl Step for RustdocGUI { fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { let builder = run.builder; - let run = run.suite_path("src/test/rustdoc-gui"); + let run = run.suite_path("tests/rustdoc-gui"); run.lazy_default_condition(Box::new(move || { builder.config.nodejs.is_some() && builder @@ -1025,7 +1025,7 @@ impl Step for RustdocGUI { // We remove existing folder to be sure there won't be artifacts remaining. builder.clear_if_dirty(&out_dir, &builder.rustdoc(self.compiler)); - let src_path = builder.build.src.join("src/test/rustdoc-gui/src"); + let src_path = builder.build.src.join("tests/rustdoc-gui/src"); // We generate docs for the libraries present in the rustdoc-gui's src folder. for entry in src_path.read_dir().expect("read_dir call failed") { if let Ok(entry) = entry { @@ -1064,9 +1064,9 @@ impl Step for RustdocGUI { .arg("--doc-folder") .arg(out_dir.join("doc")) .arg("--tests-folder") - .arg(builder.build.src.join("src/test/rustdoc-gui")); + .arg(builder.build.src.join("tests/rustdoc-gui")); for path in &builder.paths { - if let Some(p) = util::is_valid_test_suite_arg(path, "src/test/rustdoc-gui", builder) { + if let Some(p) = util::is_valid_test_suite_arg(path, "tests/rustdoc-gui", builder) { if !p.ends_with(".goml") { eprintln!("A non-goml file was given: `{}`", path.display()); panic!("Cannot run rustdoc-gui tests"); @@ -1308,59 +1308,51 @@ macro_rules! test_definitions { }; } -default_test!(Ui { path: "src/test/ui", mode: "ui", suite: "ui" }); +default_test!(Ui { path: "tests/ui", mode: "ui", suite: "ui" }); default_test!(RunPassValgrind { - path: "src/test/run-pass-valgrind", + path: "tests/run-pass-valgrind", mode: "run-pass-valgrind", suite: "run-pass-valgrind" }); -default_test!(MirOpt { path: "src/test/mir-opt", mode: "mir-opt", suite: "mir-opt" }); +default_test!(MirOpt { path: "tests/mir-opt", mode: "mir-opt", suite: "mir-opt" }); -default_test!(Codegen { path: "src/test/codegen", mode: "codegen", suite: "codegen" }); +default_test!(Codegen { path: "tests/codegen", mode: "codegen", suite: "codegen" }); default_test!(CodegenUnits { - path: "src/test/codegen-units", + path: "tests/codegen-units", mode: "codegen-units", suite: "codegen-units" }); -default_test!(Incremental { - path: "src/test/incremental", - mode: "incremental", - suite: "incremental" -}); +default_test!(Incremental { path: "tests/incremental", mode: "incremental", suite: "incremental" }); default_test_with_compare_mode!(Debuginfo { - path: "src/test/debuginfo", + path: "tests/debuginfo", mode: "debuginfo", suite: "debuginfo", compare_mode: "split-dwarf" }); -host_test!(UiFullDeps { path: "src/test/ui-fulldeps", mode: "ui", suite: "ui-fulldeps" }); +host_test!(UiFullDeps { path: "tests/ui-fulldeps", mode: "ui", suite: "ui-fulldeps" }); -host_test!(Rustdoc { path: "src/test/rustdoc", mode: "rustdoc", suite: "rustdoc" }); -host_test!(RustdocUi { path: "src/test/rustdoc-ui", mode: "ui", suite: "rustdoc-ui" }); +host_test!(Rustdoc { path: "tests/rustdoc", mode: "rustdoc", suite: "rustdoc" }); +host_test!(RustdocUi { path: "tests/rustdoc-ui", mode: "ui", suite: "rustdoc-ui" }); -host_test!(RustdocJson { - path: "src/test/rustdoc-json", - mode: "rustdoc-json", - suite: "rustdoc-json" -}); +host_test!(RustdocJson { path: "tests/rustdoc-json", mode: "rustdoc-json", suite: "rustdoc-json" }); -host_test!(Pretty { path: "src/test/pretty", mode: "pretty", suite: "pretty" }); +host_test!(Pretty { path: "tests/pretty", mode: "pretty", suite: "pretty" }); -default_test!(RunMake { path: "src/test/run-make", mode: "run-make", suite: "run-make" }); +default_test!(RunMake { path: "tests/run-make", mode: "run-make", suite: "run-make" }); host_test!(RunMakeFullDeps { - path: "src/test/run-make-fulldeps", + path: "tests/run-make-fulldeps", mode: "run-make", suite: "run-make-fulldeps" }); -default_test!(Assembly { path: "src/test/assembly", mode: "assembly", suite: "assembly" }); +default_test!(Assembly { path: "tests/assembly", mode: "assembly", suite: "assembly" }); #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] struct Compiletest { @@ -1472,7 +1464,7 @@ note: if you're sure you want to do this, please open an issue as to why. In the cmd.arg("--rust-demangler-path").arg(rust_demangler); } - cmd.arg("--src-base").arg(builder.src.join("src/test").join(suite)); + cmd.arg("--src-base").arg(builder.src.join("tests").join(suite)); cmd.arg("--build-base").arg(testdir(builder, compiler.host).join(suite)); cmd.arg("--sysroot-base").arg(builder.sysroot(compiler)); cmd.arg("--stage-id").arg(format!("stage{}-{}", compiler.stage, target)); @@ -1936,7 +1928,7 @@ impl Step for ErrorIndex { fn make_run(run: RunConfig<'_>) { // error_index_generator depends on librustdoc. Use the compiler that // is normally used to build rustdoc for other tests (like compiletest - // tests in src/test/rustdoc) so that it shares the same artifacts. + // tests in tests/rustdoc) so that it shares the same artifacts. let compiler = run.builder.compiler(run.builder.top_stage, run.builder.config.build); run.builder.ensure(ErrorIndex { compiler }); } @@ -2233,7 +2225,7 @@ impl Step for CrateRustdoc { builder.compiler(builder.top_stage, target) } else { // Use the previous stage compiler to reuse the artifacts that are - // created when running compiletest for src/test/rustdoc. If this used + // created when running compiletest for tests/rustdoc. If this used // `compiler`, then it would cause rustdoc to be built *again*, which // isn't really necessary. builder.compiler_for(builder.top_stage, target, target) @@ -2349,7 +2341,7 @@ impl Step for CrateRustdocJsonTypes { let target = self.host; // Use the previous stage compiler to reuse the artifacts that are - // created when running compiletest for src/test/rustdoc. If this used + // created when running compiletest for tests/rustdoc. If this used // `compiler`, then it would cause rustdoc to be built *again*, which // isn't really necessary. let compiler = builder.compiler_for(builder.top_stage, target, target); diff --git a/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile index 26eb69f2eae9..34829adf79bc 100644 --- a/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile @@ -48,7 +48,7 @@ RUN CC=gcc CFLAGS="-m32 -Wa,-mrelax-relocations=no" \ rm -rf /build # FIXME: musl really shouldn't be linking libgcc_s.so, as it's linked to glibc, -# but it's required by src/test/ui/proc-macro/crt-static.rs. Ubuntu:16.04 gcc-5 +# but it's required by tests/ui/proc-macro/crt-static.rs. Ubuntu:16.04 gcc-5 # had libgcc_s.so as a symlink to the absolute libgcc_s.so.1, but now it's an # ld-script that expects to find libgcc_s.so.1 in the library search path. # See also https://github.com/rust-lang/rust/issues/82521 diff --git a/src/ci/docker/host-x86_64/dist-various-1/Dockerfile b/src/ci/docker/host-x86_64/dist-various-1/Dockerfile index cd0f01faa1bf..4576e6d4fa25 100644 --- a/src/ci/docker/host-x86_64/dist-various-1/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-various-1/Dockerfile @@ -183,7 +183,7 @@ ENV RUST_CONFIGURE_ARGS \ --disable-docs ENV SCRIPT \ - python3 ../x.py --stage 2 test --host='' --target $RUN_MAKE_TARGETS src/test/run-make && \ + python3 ../x.py --stage 2 test --host='' --target $RUN_MAKE_TARGETS tests/run-make && \ python3 ../x.py dist --host='' --target $TARGETS # sccache diff --git a/src/ci/docker/host-x86_64/i686-gnu/Dockerfile b/src/ci/docker/host-x86_64/i686-gnu/Dockerfile index cb6559707d96..d9e58386256d 100644 --- a/src/ci/docker/host-x86_64/i686-gnu/Dockerfile +++ b/src/ci/docker/host-x86_64/i686-gnu/Dockerfile @@ -27,6 +27,6 @@ ENV RUST_CONFIGURE_ARGS --build=i686-unknown-linux-gnu # this slow job. ENV SCRIPT python3 ../x.py --stage 2 test \ --exclude src/bootstrap \ - --exclude src/test/rustdoc-js \ + --exclude tests/rustdoc-js \ --exclude src/tools/error_index_generator \ --exclude src/tools/linkchecker diff --git a/src/ci/docker/host-x86_64/test-various/Dockerfile b/src/ci/docker/host-x86_64/test-various/Dockerfile index cf4451f8b33b..930f58baf02e 100644 --- a/src/ci/docker/host-x86_64/test-various/Dockerfile +++ b/src/ci/docker/host-x86_64/test-various/Dockerfile @@ -59,16 +59,16 @@ ENV NO_OVERFLOW_CHECKS=1 ENV WASM_TARGETS=wasm32-unknown-unknown ENV WASM_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $WASM_TARGETS \ - src/test/run-make \ - src/test/ui \ - src/test/mir-opt \ - src/test/codegen-units \ + tests/run-make \ + tests/ui \ + tests/mir-opt \ + tests/codegen-units \ library/core ENV NVPTX_TARGETS=nvptx64-nvidia-cuda ENV NVPTX_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $NVPTX_TARGETS \ - src/test/run-make \ - src/test/assembly + tests/run-make \ + tests/assembly ENV MUSL_TARGETS=x86_64-unknown-linux-musl \ CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc \ diff --git a/src/ci/docker/host-x86_64/x86_64-gnu-debug/Dockerfile b/src/ci/docker/host-x86_64/x86_64-gnu-debug/Dockerfile index c2b002055a8f..735d4d4dfcfa 100644 --- a/src/ci/docker/host-x86_64/x86_64-gnu-debug/Dockerfile +++ b/src/ci/docker/host-x86_64/x86_64-gnu-debug/Dockerfile @@ -46,4 +46,4 @@ ENV RUST_CONFIGURE_ARGS \ ENV SCRIPT \ python3 ../x.py --stage 2 build && \ - python3 ../x.py --stage 2 test src/test/run-make-fulldeps --test-args clang + python3 ../x.py --stage 2 test tests/run-make-fulldeps --test-args clang diff --git a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13-stage1/Dockerfile b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13-stage1/Dockerfile index 16976a9428ef..bcbf58253b19 100644 --- a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13-stage1/Dockerfile +++ b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13-stage1/Dockerfile @@ -45,5 +45,5 @@ ENV SCRIPT python2.7 ../x.py --stage 1 test --exclude src/tools/tidy && \ # the PR is approved and tested for merging. # It will also detect tests lacking `// EMIT_MIR_FOR_EACH_BIT_WIDTH`, # despite having different output on 32-bit vs 64-bit targets. - python2.7 ../x.py --stage 1 test src/test/mir-opt \ + python2.7 ../x.py --stage 1 test tests/mir-opt \ --host='' --target=i686-unknown-linux-gnu diff --git a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13/Dockerfile b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13/Dockerfile index 06f15bd12117..9fc9e9cbffbe 100644 --- a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13/Dockerfile +++ b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-13/Dockerfile @@ -56,14 +56,14 @@ ENV SCRIPT ../x.py --stage 2 test --exclude src/tools/tidy && \ # the PR is approved and tested for merging. # It will also detect tests lacking `// EMIT_MIR_FOR_EACH_BIT_WIDTH`, # despite having different output on 32-bit vs 64-bit targets. - ../x --stage 2 test src/test/mir-opt \ + ../x --stage 2 test tests/mir-opt \ --host='' --target=i686-unknown-linux-gnu && \ # Run the UI test suite again, but in `--pass=check` mode # # This is intended to make sure that both `--pass=check` continues to # work. # - ../x.ps1 --stage 2 test src/test/ui --pass=check \ + ../x.ps1 --stage 2 test tests/ui --pass=check \ --host='' --target=i686-unknown-linux-gnu && \ # Run tidy at the very end, after all the other tests. python2.7 ../x.py --stage 2 test src/tools/tidy diff --git a/src/ci/docker/host-x86_64/x86_64-gnu-tools/Dockerfile b/src/ci/docker/host-x86_64/x86_64-gnu-tools/Dockerfile index 58c0c5db1a5d..85f2f84a44c3 100644 --- a/src/ci/docker/host-x86_64/x86_64-gnu-tools/Dockerfile +++ b/src/ci/docker/host-x86_64/x86_64-gnu-tools/Dockerfile @@ -84,5 +84,5 @@ ENV RUST_CONFIGURE_ARGS \ --save-toolstates=/tmp/toolstate/toolstates.json ENV SCRIPT /tmp/checktools.sh ../x.py && \ - NODE_PATH=`npm root -g` python3 ../x.py test src/test/rustdoc-gui --stage 2 \ + NODE_PATH=`npm root -g` python3 ../x.py test tests/rustdoc-gui --stage 2 \ --test-args "'--no-sandbox --jobs 1'" diff --git a/src/ci/github-actions/ci.yml b/src/ci/github-actions/ci.yml index d33396dcc80f..d2a9264c84a1 100644 --- a/src/ci/github-actions/ci.yml +++ b/src/ci/github-actions/ci.yml @@ -511,7 +511,7 @@ jobs: - name: x86_64-apple-1 env: &env-x86_64-apple-tests - SCRIPT: ./x.py --stage 2 test --exclude src/test/ui --exclude src/test/rustdoc --exclude src/test/run-make-fulldeps + SCRIPT: ./x.py --stage 2 test --exclude tests/ui --exclude tests/rustdoc --exclude tests/run-make-fulldeps RUST_CONFIGURE_ARGS: --build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 MACOSX_DEPLOYMENT_TARGET: 10.8 @@ -523,7 +523,7 @@ jobs: - name: x86_64-apple-2 env: - SCRIPT: ./x.py --stage 2 test src/test/ui src/test/rustdoc src/test/run-make-fulldeps + SCRIPT: ./x.py --stage 2 test tests/ui tests/rustdoc tests/run-make-fulldeps <<: *env-x86_64-apple-tests <<: *job-macos-xl diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh index a8a1899317f8..85d772253808 100755 --- a/src/ci/scripts/should-skip-this.sh +++ b/src/ci/scripts/should-skip-this.sh @@ -27,7 +27,7 @@ if [[ -n "${CI_ONLY_WHEN_SUBMODULES_CHANGED-}" ]]; then # that breaks Miri. echo "Tool subtrees were updated" elif ! (git diff --quiet "$BASE_COMMIT" -- \ - src/test/rustdoc-gui \ + tests/rustdoc-gui \ src/librustdoc \ src/ci/docker/host-x86_64/x86_64-gnu-tools/Dockerfile \ src/ci/docker/host-x86_64/x86_64-gnu-tools/browser-ui-test.version \ diff --git a/src/doc/rustc/src/platform-support/fuchsia.md b/src/doc/rustc/src/platform-support/fuchsia.md index 95c242cc161e..29e70129a62e 100644 --- a/src/doc/rustc/src/platform-support/fuchsia.md +++ b/src/doc/rustc/src/platform-support/fuchsia.md @@ -705,7 +705,7 @@ Where `${RUST_SRC_PATH}/install` is the `prefix` set in `config.toml` and Once our environment is started, we can run our tests using `x.py` as usual. The test runner script will run the compiled tests on an emulated Fuchsia device. To -run the full `src/test/ui` test suite: +run the full `tests/ui` test suite: ```sh ( \ @@ -713,7 +713,7 @@ run the full `src/test/ui` test suite: ./x.py \ --config config.toml \ --stage=2 \ - test src/test/ui \ + test tests/ui \ --target x86_64-unknown-fuchsia \ --run=always --jobs 1 \ --test-args --target-rustcflags \ diff --git a/src/doc/unstable-book/src/compiler-flags/codegen-backend.md b/src/doc/unstable-book/src/compiler-flags/codegen-backend.md index 3c0cd32fae17..67634be69931 100644 --- a/src/doc/unstable-book/src/compiler-flags/codegen-backend.md +++ b/src/doc/unstable-book/src/compiler-flags/codegen-backend.md @@ -12,7 +12,7 @@ backend. The library must be of crate type `dylib` and must contain a function named `__rustc_codegen_backend` with a signature of `fn() -> Box`. ## Example -See also the [`hotplug_codegen_backend`](https://github.com/rust-lang/rust/tree/master/src/test/run-make-fulldeps/hotplug_codegen_backend) test +See also the [`hotplug_codegen_backend`](https://github.com/rust-lang/rust/tree/master/tests/run-make-fulldeps/hotplug_codegen_backend) test for a full example. ```rust,ignore (partial-example) diff --git a/src/doc/unstable-book/src/language-features/plugin.md b/src/doc/unstable-book/src/language-features/plugin.md index 56fe9a31bfe3..dfbb468d4df9 100644 --- a/src/doc/unstable-book/src/language-features/plugin.md +++ b/src/doc/unstable-book/src/language-features/plugin.md @@ -33,7 +33,7 @@ of a library. Plugins can extend [Rust's lint infrastructure](../../reference/attributes/diagnostics.md#lint-check-attributes) with additional checks for code style, safety, etc. Now let's write a plugin -[`lint-plugin-test.rs`](https://github.com/rust-lang/rust/blob/master/src/test/ui-fulldeps/auxiliary/lint-plugin-test.rs) +[`lint-plugin-test.rs`](https://github.com/rust-lang/rust/blob/master/tests/ui-fulldeps/auxiliary/lint-plugin-test.rs) that warns about any item named `lintme`. ```rust,ignore (requires-stage-2) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 91bc63f83b62..b2fa6e82acce 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -707,7 +707,7 @@ h2.small-section-header > .anchor { /* In most contexts we use `overflow-wrap: anywhere` to ensure that we can wrap as much as needed on mobile (see - src/test/rustdoc-gui/type-declaration-overflow.goml for an example of why + tests/rustdoc-gui/type-declaration-overflow.goml for an example of why this matters). The `anywhere` value means: "Soft wrap opportunities introduced by the word break are considered when diff --git a/src/tools/clippy/tests/ui/crashes/ice-6254.rs b/src/tools/clippy/tests/ui/crashes/ice-6254.rs index a2a60a169153..8af60890390e 100644 --- a/src/tools/clippy/tests/ui/crashes/ice-6254.rs +++ b/src/tools/clippy/tests/ui/crashes/ice-6254.rs @@ -1,4 +1,4 @@ -// originally from ./src/test/ui/pattern/usefulness/consts-opaque.rs +// originally from ./tests/ui/pattern/usefulness/consts-opaque.rs // panicked at 'assertion failed: rows.iter().all(|r| r.len() == v.len())', // compiler/rustc_mir_build/src/thir/pattern/_match.rs:2030:5 diff --git a/src/tools/clippy/tests/ui/crashes/ice-6255.rs b/src/tools/clippy/tests/ui/crashes/ice-6255.rs index bd4a81d98e2e..ccde6aa2b0f7 100644 --- a/src/tools/clippy/tests/ui/crashes/ice-6255.rs +++ b/src/tools/clippy/tests/ui/crashes/ice-6255.rs @@ -1,4 +1,4 @@ -// originally from rustc ./src/test/ui/macros/issue-78325-inconsistent-resolution.rs +// originally from rustc ./tests/ui/macros/issue-78325-inconsistent-resolution.rs // inconsistent resolution for a macro macro_rules! define_other_core { diff --git a/src/tools/clippy/tests/ui/crashes/ice-6256.rs b/src/tools/clippy/tests/ui/crashes/ice-6256.rs index 67308263dadd..f9ee3e058c11 100644 --- a/src/tools/clippy/tests/ui/crashes/ice-6256.rs +++ b/src/tools/clippy/tests/ui/crashes/ice-6256.rs @@ -1,4 +1,4 @@ -// originally from rustc ./src/test/ui/regions/issue-78262.rs +// originally from rustc ./tests/ui/regions/issue-78262.rs // ICE: to get the signature of a closure, use substs.as_closure().sig() not fn_sig() #![allow(clippy::upper_case_acronyms)] diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index a4f1167bf9d1..a5f5eb447da6 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -240,7 +240,7 @@ pub struct Config { pub mode: Mode, /// The test suite (essentially which directory is running, but without the - /// directory prefix such as src/test) + /// directory prefix such as tests) pub suite: String, /// The debugger to use in debuginfo mode. Unset otherwise. diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 91c701a5ddd2..2aea30870ff5 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -774,7 +774,7 @@ fn make_test_name( revision: Option<&String>, ) -> test::TestName { // Print the name of the file, relative to the repository root. - // `src_base` looks like `/path/to/rust/src/test/ui` + // `src_base` looks like `/path/to/rust/tests/ui` let root_directory = config.src_base.parent().unwrap().parent().unwrap().parent().unwrap(); let path = testpaths.file.strip_prefix(root_directory).unwrap(); let debugger = match config.debugger { diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 7e48dd206606..a16ab11e2f97 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -2102,9 +2102,7 @@ impl<'test> TestCx<'test> { .parent() .unwrap() // chop off `ui` .parent() - .unwrap() // chop off `test` - .parent() - .unwrap(); // chop off `src` + .unwrap(); // chop off `tests` args.push(src.join("src/etc/wasm32-shim.js").display().to_string()); } @@ -2932,7 +2930,7 @@ impl<'test> TestCx<'test> { fn run_rmake_test(&self) { let cwd = env::current_dir().unwrap(); - let src_root = self.config.src_base.parent().unwrap().parent().unwrap().parent().unwrap(); + let src_root = self.config.src_base.parent().unwrap().parent().unwrap(); let src_root = cwd.join(&src_root); let tmpdir = cwd.join(self.output_base_name()); @@ -3548,8 +3546,8 @@ impl<'test> TestCx<'test> { normalize_path(parent_dir, "$DIR"); let source_bases = &[ - // Source base on the current filesystem (calculated as parent of `src/test/$suite`): - Some(self.config.src_base.parent().unwrap().parent().unwrap().parent().unwrap().into()), + // Source base on the current filesystem (calculated as parent of `tests/$suite`): + Some(self.config.src_base.parent().unwrap().parent().unwrap().into()), // Source base on the sysroot (from the src components downloaded by `download-rustc`): Some(self.config.sysroot_base.join("lib").join("rustlib").join("src").join("rust")), // Virtual `/rustc/$sha` remapped paths (if `remap-debuginfo` is enabled): diff --git a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/meta_syntax.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/meta_syntax.rs index 8aff784087c3..7e7b40044218 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/meta_syntax.rs +++ b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/mbe/meta_syntax.rs @@ -94,7 +94,7 @@ macro_rules! m2 { () => ( ${invalid()} ) } #[test] fn test_rustc_issue_57597() { - // + // check( r#" macro_rules! m0 { ($($($i:ident)?)+) => {}; } diff --git a/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs b/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs index 64dd2bb5f2d1..f0c3690962af 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs +++ b/src/tools/rust-analyzer/crates/ide-db/src/generated/lints.rs @@ -3624,7 +3624,7 @@ of a library. Plugins can extend [Rust's lint infrastructure](../../reference/attributes/diagnostics.md#lint-check-attributes) with additional checks for code style, safety, etc. Now let's write a plugin -[`lint-plugin-test.rs`](https://github.com/rust-lang/rust/blob/master/src/test/ui-fulldeps/auxiliary/lint-plugin-test.rs) +[`lint-plugin-test.rs`](https://github.com/rust-lang/rust/blob/master/tests/ui-fulldeps/auxiliary/lint-plugin-test.rs) that warns about any item named `lintme`. ```rust,ignore (requires-stage-2) diff --git a/src/tools/rustdoc-gui/tester.js b/src/tools/rustdoc-gui/tester.js index 554b2f81fa3b..2f0ca1ec3d0b 100644 --- a/src/tools/rustdoc-gui/tester.js +++ b/src/tools/rustdoc-gui/tester.js @@ -262,7 +262,7 @@ async function main(argv) { console.log(""); console.log( "`browser-ui-test` crashed unexpectedly. Please try again with adding `--test-args \ ---no-sandbox` at the end. For example: `x.py test src/test/rustdoc-gui --test-args --no-sandbox`"); +--no-sandbox` at the end. For example: `x.py test tests/rustdoc-gui --test-args --no-sandbox`"); console.log(""); } }; diff --git a/src/tools/rustfmt/tests/source/issue-2445.rs b/src/tools/rustfmt/tests/source/issue-2445.rs index 84ce6e647b83..deef429dbee0 100644 --- a/src/tools/rustfmt/tests/source/issue-2445.rs +++ b/src/tools/rustfmt/tests/source/issue-2445.rs @@ -1,6 +1,6 @@ test!(RunPassPretty { // comment - path: "src/test/run-pass/pretty", + path: "tests/run-pass/pretty", mode: "pretty", suite: "run-pass", default: false, @@ -9,7 +9,7 @@ test!(RunPassPretty { test!(RunPassPretty { // comment - path: "src/test/run-pass/pretty", + path: "tests/run-pass/pretty", mode: "pretty", suite: "run-pass", default: false, diff --git a/src/tools/rustfmt/tests/target/issue-2445.rs b/src/tools/rustfmt/tests/target/issue-2445.rs index 1bc7752fd161..463c5d495768 100644 --- a/src/tools/rustfmt/tests/target/issue-2445.rs +++ b/src/tools/rustfmt/tests/target/issue-2445.rs @@ -1,6 +1,6 @@ test!(RunPassPretty { // comment - path: "src/test/run-pass/pretty", + path: "tests/run-pass/pretty", mode: "pretty", suite: "run-pass", default: false, @@ -9,7 +9,7 @@ test!(RunPassPretty { test!(RunPassPretty { // comment - path: "src/test/run-pass/pretty", + path: "tests/run-pass/pretty", mode: "pretty", suite: "run-pass", default: false, diff --git a/src/tools/tidy/src/debug_artifacts.rs b/src/tools/tidy/src/debug_artifacts.rs index 9880a32ad0c2..0dd9c1e160ce 100644 --- a/src/tools/tidy/src/debug_artifacts.rs +++ b/src/tools/tidy/src/debug_artifacts.rs @@ -1,14 +1,12 @@ //! Tidy check to prevent creation of unnecessary debug artifacts while running tests. use crate::walk::{filter_dirs, walk}; -use std::path::{Path, PathBuf}; +use std::path::Path; const GRAPHVIZ_POSTFLOW_MSG: &str = "`borrowck_graphviz_postflow` attribute in test"; -pub fn check(path: &Path, bad: &mut bool) { - let test_dir: PathBuf = path.join("test"); - - walk(&test_dir, &mut filter_dirs, &mut |entry, contents| { +pub fn check(test_dir: &Path, bad: &mut bool) { + walk(test_dir, &mut filter_dirs, &mut |entry, contents| { let filename = entry.path(); let is_rust = filename.extension().map_or(false, |ext| ext == "rs"); if !is_rust { diff --git a/src/tools/tidy/src/edition.rs b/src/tools/tidy/src/edition.rs index 8a7c4460dc7e..8172e3d292bd 100644 --- a/src/tools/tidy/src/edition.rs +++ b/src/tools/tidy/src/edition.rs @@ -11,7 +11,10 @@ fn is_edition_2021(mut line: &str) -> bool { pub fn check(path: &Path, bad: &mut bool) { walk( path, - &mut |path| filter_dirs(path) || path.ends_with("src/test"), + &mut |path| { + filter_dirs(path) + || (path.ends_with("tests") && path.join("COMPILER_TESTS.md").exists()) + }, &mut |entry, contents| { let file = entry.path(); let filename = file.file_name().unwrap(); diff --git a/src/tools/tidy/src/error_codes.rs b/src/tools/tidy/src/error_codes.rs index 9aacc07e0ab4..ac8b5f6834c6 100644 --- a/src/tools/tidy/src/error_codes.rs +++ b/src/tools/tidy/src/error_codes.rs @@ -8,7 +8,7 @@ //! - The explanation is expected to contain a `doctest` that fails with the correct error code. (`EXEMPT_FROM_DOCTEST` *currently* bypasses this check) //! - Note that other stylistic conventions for markdown files are checked in the `style.rs` tidy check. //! -//! 3. We check that the error code has a UI test in `src/test/ui/error-codes/`. +//! 3. We check that the error code has a UI test in `tests/ui/error-codes/`. //! - We ensure that there is both a `Exxxx.rs` file and a corresponding `Exxxx.stderr` file. //! - We also ensure that the error code is used in the tests. //! - *Currently*, it is possible to opt-out of this check with the `EXEMPTED_FROM_TEST` constant. @@ -24,7 +24,7 @@ use crate::walk::{filter_dirs, walk, walk_many}; const ERROR_CODES_PATH: &str = "compiler/rustc_error_codes/src/error_codes.rs"; const ERROR_DOCS_PATH: &str = "compiler/rustc_error_codes/src/error_codes/"; -const ERROR_TESTS_PATH: &str = "src/test/ui/error-codes/"; +const ERROR_TESTS_PATH: &str = "tests/ui/error-codes/"; // Error codes that (for some reason) can't have a doctest in their explanation. Error codes are still expected to provide a code example, even if untested. const IGNORE_DOCTEST_CHECK: &[&str] = @@ -270,14 +270,14 @@ fn check_error_codes_tests( if !test_path.exists() && !IGNORE_UI_TEST_CHECK.contains(&code.as_str()) { verbose_print!( verbose, - "warning: Error code `{code}` needs to have at least one UI test in the `src/test/ui/error-codes/` directory`!" + "warning: Error code `{code}` needs to have at least one UI test in the `tests/error-codes/` directory`!" ); continue; } if IGNORE_UI_TEST_CHECK.contains(&code.as_str()) { if test_path.exists() { errors.push(format!( - "Error code `{code}` has a UI test in `src/test/ui/error-codes/{code}.rs`, it shouldn't be listed in `EXEMPTED_FROM_TEST`!" + "Error code `{code}` has a UI test in `tests/ui/error-codes/{code}.rs`, it shouldn't be listed in `EXEMPTED_FROM_TEST`!" )); } continue; diff --git a/src/tools/tidy/src/features.rs b/src/tools/tidy/src/features.rs index f10ecf5f201e..af92e6eb8637 100644 --- a/src/tools/tidy/src/features.rs +++ b/src/tools/tidy/src/features.rs @@ -82,6 +82,7 @@ pub fn collect_lib_features(base_src_path: &Path) -> Features { pub fn check( src_path: &Path, + tests_path: &Path, compiler_path: &Path, lib_path: &Path, bad: &mut bool, @@ -95,10 +96,10 @@ pub fn check( walk_many( &[ - &src_path.join("test/ui"), - &src_path.join("test/ui-fulldeps"), - &src_path.join("test/rustdoc-ui"), - &src_path.join("test/rustdoc"), + &tests_path.join("ui"), + &tests_path.join("ui-fulldeps"), + &tests_path.join("rustdoc-ui"), + &tests_path.join("rustdoc"), ], &mut filter_dirs, &mut |entry, contents| { @@ -480,7 +481,7 @@ fn map_lib_features( ) { walk( base_src_path, - &mut |path| filter_dirs(path) || path.ends_with("src/test"), + &mut |path| filter_dirs(path) || path.ends_with("tests"), &mut |entry, contents| { let file = entry.path(); let filename = file.file_name().unwrap().to_string_lossy(); diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index a5685ba7c942..2a4853b37be3 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -25,6 +25,7 @@ fn main() { .expect("concurrency must be a number"); let src_path = root_path.join("src"); + let tests_path = root_path.join("tests"); let library_path = root_path.join("library"); let compiler_path = root_path.join("compiler"); let librustdoc_path = src_path.join("librustdoc"); @@ -68,16 +69,16 @@ fn main() { } } - check!(target_specific_tests, &src_path); + check!(target_specific_tests, &tests_path); // Checks that are done on the cargo workspace. check!(deps, &root_path, &cargo); check!(extdeps, &root_path); // Checks over tests. - check!(debug_artifacts, &src_path); - check!(ui_tests, &src_path); - check!(mir_opt_tests, &src_path, bless); + check!(debug_artifacts, &tests_path); + check!(ui_tests, &tests_path); + check!(mir_opt_tests, &tests_path, bless); // Checks that only make sense for the compiler. check!(error_codes, &root_path, &[&compiler_path, &librustdoc_path], verbose); @@ -88,6 +89,7 @@ fn main() { // Checks that need to be done for both the compiler and std libraries. check!(unit_tests, &src_path); + check!(unit_tests, &tests_path); check!(unit_tests, &compiler_path); check!(unit_tests, &library_path); @@ -96,14 +98,17 @@ fn main() { } check!(style, &src_path); + check!(style, &tests_path); check!(style, &compiler_path); check!(style, &library_path); check!(edition, &src_path); check!(edition, &compiler_path); check!(edition, &library_path); + check!(edition, &tests_path); check!(alphabetical, &src_path); + check!(alphabetical, &tests_path); check!(alphabetical, &compiler_path); check!(alphabetical, &library_path); @@ -113,7 +118,14 @@ fn main() { drain_handles(&mut handles); let mut flag = false; - let r = features::check(&src_path, &compiler_path, &library_path, &mut flag, verbose); + let r = features::check( + &src_path, + &tests_path, + &compiler_path, + &library_path, + &mut flag, + verbose, + ); if flag { bad.store(true, Ordering::Relaxed); } diff --git a/src/tools/tidy/src/mir_opt_tests.rs b/src/tools/tidy/src/mir_opt_tests.rs index 018573284ea7..2a9dcac2e8d3 100644 --- a/src/tools/tidy/src/mir_opt_tests.rs +++ b/src/tools/tidy/src/mir_opt_tests.rs @@ -6,7 +6,7 @@ use std::path::{Path, PathBuf}; fn check_unused_files(path: &Path, bless: bool, bad: &mut bool) { let mut rs_files = Vec::::new(); let mut output_files = HashSet::::new(); - let files = walkdir::WalkDir::new(&path.join("test/mir-opt")).into_iter(); + let files = walkdir::WalkDir::new(&path.join("mir-opt")).into_iter(); for file in files.filter_map(Result::ok).filter(|e| e.file_type().is_file()) { let filepath = file.path(); @@ -41,7 +41,7 @@ fn check_unused_files(path: &Path, bless: bool, bad: &mut bool) { } fn check_dash_files(path: &Path, bless: bool, bad: &mut bool) { - for file in walkdir::WalkDir::new(&path.join("test/mir-opt")) + for file in walkdir::WalkDir::new(&path.join("mir-opt")) .into_iter() .filter_map(Result::ok) .filter(|e| e.file_type().is_file()) diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index b293efdc585a..5c4ba8693645 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -246,7 +246,7 @@ pub fn check(path: &Path, bad: &mut bool) { // This list should ideally be sourced from rustfmt.toml but we don't want to add a toml // parser to tidy. !file.ancestors().any(|a| { - a.ends_with("src/test") || + (a.ends_with("tests") && a.join("COMPILER_TESTS.md").exists()) || a.ends_with("src/doc/book") }); @@ -324,9 +324,10 @@ pub fn check(path: &Path, bad: &mut bool) { if trimmed.contains("dbg!") && !trimmed.starts_with("//") - && !file - .ancestors() - .any(|a| a.ends_with("src/test") || a.ends_with("library/alloc/tests")) + && !file.ancestors().any(|a| { + (a.ends_with("tests") && a.join("COMPILER_TESTS.md").exists()) + || a.ends_with("library/alloc/tests") + }) && filename != "tests.rs" { suppressible_tidy_err!( diff --git a/src/tools/tidy/src/target_specific_tests.rs b/src/tools/tidy/src/target_specific_tests.rs index 8ba25705666a..d7a157672cf5 100644 --- a/src/tools/tidy/src/target_specific_tests.rs +++ b/src/tools/tidy/src/target_specific_tests.rs @@ -35,9 +35,8 @@ struct RevisionInfo<'a> { } pub fn check(path: &Path, bad: &mut bool) { - let tests = path.join("test"); crate::walk::walk( - &tests, + path, &mut |path| path.extension().map(|p| p == "rs") == Some(false), &mut |entry, content| { let file = entry.path().display(); diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs index 166d09fa8b06..806e84025c4a 100644 --- a/src/tools/tidy/src/ui_tests.rs +++ b/src/tools/tidy/src/ui_tests.rs @@ -13,13 +13,13 @@ const ROOT_ENTRY_LIMIT: usize = 939; const ISSUES_ENTRY_LIMIT: usize = 1998; fn check_entries(path: &Path, bad: &mut bool) { - for dir in Walk::new(&path.join("test/ui")) { + for dir in Walk::new(&path.join("ui")) { if let Ok(entry) = dir { if entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false) { let dir_path = entry.path(); // Use special values for these dirs. - let is_root = path.join("test/ui") == dir_path; - let is_issues_dir = path.join("test/ui/issues") == dir_path; + let is_root = path.join("ui") == dir_path; + let is_issues_dir = path.join("ui/issues") == dir_path; let limit = if is_root { ROOT_ENTRY_LIMIT } else if is_issues_dir { @@ -53,7 +53,7 @@ fn check_entries(path: &Path, bad: &mut bool) { pub fn check(path: &Path, bad: &mut bool) { check_entries(&path, bad); - for path in &[&path.join("test/ui"), &path.join("test/ui-fulldeps")] { + for path in &[&path.join("ui"), &path.join("ui-fulldeps")] { crate::walk::walk_no_read(path, &mut |_| false, &mut |entry| { let file_path = entry.path(); if let Some(ext) = file_path.extension() { diff --git a/src/tools/tidy/src/unit_tests.rs b/src/tools/tidy/src/unit_tests.rs index 2c23b6ebc75e..27f36c855613 100644 --- a/src/tools/tidy/src/unit_tests.rs +++ b/src/tools/tidy/src/unit_tests.rs @@ -22,7 +22,7 @@ pub fn check(root_path: &Path, bad: &mut bool) { let file_name = path.file_name().unwrap_or_default(); if path.is_dir() { filter_dirs(path) - || path.ends_with("src/test") + || path.ends_with("tests") || path.ends_with("src/doc") || (file_name == "tests" || file_name == "benches") && !is_core(path) } else { diff --git a/tests/assembly/target-feature-multiple.rs b/tests/assembly/target-feature-multiple.rs index 18d896e86b21..5c5d93863d71 100644 --- a/tests/assembly/target-feature-multiple.rs +++ b/tests/assembly/target-feature-multiple.rs @@ -14,7 +14,7 @@ // > LLVM ERROR: Cannot select: 0x7f00f400c010: i32,i32,ch = X86ISD::RDSEED 0x7f00f400bfa8:2 // > In function: foo // -// See also src/test/codegen/target-feature-overrides.rs +// See also tests/codegen/target-feature-overrides.rs #![feature(no_core, lang_items, link_llvm_intrinsics, abi_unadjusted)] #![crate_type = "lib"] #![no_core] diff --git a/tests/codegen/match-optimized.rs b/tests/codegen/match-optimized.rs index 36402cc7353f..520c46a0d570 100644 --- a/tests/codegen/match-optimized.rs +++ b/tests/codegen/match-optimized.rs @@ -42,7 +42,7 @@ pub enum E2 { } // For optimized code we produce a switch with an unreachable target as the `otherwise` so LLVM -// knows the possible values. Compare with `src/test/codegen/match-unoptimized.rs`. +// knows the possible values. Compare with `tests/codegen/match-unoptimized.rs`. // CHECK-LABEL: @exhaustive_match_2 #[no_mangle] diff --git a/tests/codegen/match-unoptimized.rs b/tests/codegen/match-unoptimized.rs index be40b29e3d3e..78ea4f9b4094 100644 --- a/tests/codegen/match-unoptimized.rs +++ b/tests/codegen/match-unoptimized.rs @@ -9,7 +9,7 @@ pub enum E2 { } // For unoptimized code we produce a `br` instead of a `switch`. Compare with -// `src/test/codegen/match-optimized.rs` +// `tests/codegen/match-optimized.rs` // CHECK-LABEL: @exhaustive_match_2 #[no_mangle] diff --git a/tests/codegen/target-feature-overrides.rs b/tests/codegen/target-feature-overrides.rs index 4be77e36e760..1bebf66f0df4 100644 --- a/tests/codegen/target-feature-overrides.rs +++ b/tests/codegen/target-feature-overrides.rs @@ -4,7 +4,7 @@ // [COMPAT] compile-flags: -Ctarget-feature=+avx2,+avx // [INCOMPAT] compile-flags: -Ctarget-feature=-avx2,-avx -// See also src/test/assembly/target-feature-multiple.rs +// See also tests/assembly/target-feature-multiple.rs #![feature(no_core, lang_items)] #![crate_type = "lib"] #![no_core] diff --git a/tests/mir-opt/remove_never_const.rs b/tests/mir-opt/remove_never_const.rs index 16095cfdd7dc..160cc955534c 100644 --- a/tests/mir-opt/remove_never_const.rs +++ b/tests/mir-opt/remove_never_const.rs @@ -1,6 +1,6 @@ // This was originally a regression test for #66975 - ensure that we do not generate never typed // consts in codegen. We also have tests for this that catches the error, see -// src/test/ui/consts/const-eval/index-out-of-bounds-never-type.rs. +// tests/ui/consts/const-eval/index-out-of-bounds-never-type.rs. // Force generation of optimized mir for functions that do not reach codegen. // compile-flags: --emit mir,link diff --git a/tests/pretty/block-comment-wchar.pp b/tests/pretty/block-comment-wchar.pp index 8c8580b07c21..9d64fb4156ca 100644 --- a/tests/pretty/block-comment-wchar.pp +++ b/tests/pretty/block-comment-wchar.pp @@ -1,6 +1,6 @@ // This is meant as a test case for Issue 3961. // -// Test via: rustc -Zunpretty normal src/test/pretty/block-comment-wchar.rs +// Test via: rustc -Zunpretty normal tests/pretty/block-comment-wchar.rs // ignore-tidy-cr // ignore-tidy-tab // pp-exact:block-comment-wchar.pp diff --git a/tests/pretty/block-comment-wchar.rs b/tests/pretty/block-comment-wchar.rs index e0606e49752c..c042ea685900 100644 --- a/tests/pretty/block-comment-wchar.rs +++ b/tests/pretty/block-comment-wchar.rs @@ -1,6 +1,6 @@ // This is meant as a test case for Issue 3961. // -// Test via: rustc -Zunpretty normal src/test/pretty/block-comment-wchar.rs +// Test via: rustc -Zunpretty normal tests/pretty/block-comment-wchar.rs // ignore-tidy-cr // ignore-tidy-tab // pp-exact:block-comment-wchar.pp diff --git a/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile b/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile index 735d91bd27c5..87f74c69c793 100644 --- a/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile +++ b/tests/run-make-fulldeps/alloc-no-oom-handling/Makefile @@ -1,4 +1,4 @@ include ../tools.mk all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_global_oom_handling + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/alloc/src/lib.rs --cfg no_global_oom_handling diff --git a/tests/run-make-fulldeps/alloc-no-rc/Makefile b/tests/run-make-fulldeps/alloc-no-rc/Makefile index 5f7ae70fa026..9824b17e6c2a 100644 --- a/tests/run-make-fulldeps/alloc-no-rc/Makefile +++ b/tests/run-make-fulldeps/alloc-no-rc/Makefile @@ -1,4 +1,4 @@ include ../tools.mk all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_rc + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/alloc/src/lib.rs --cfg no_rc diff --git a/tests/run-make-fulldeps/alloc-no-sync/Makefile b/tests/run-make-fulldeps/alloc-no-sync/Makefile index 6a258a2ddfd6..04ec4c7d8bc9 100644 --- a/tests/run-make-fulldeps/alloc-no-sync/Makefile +++ b/tests/run-make-fulldeps/alloc-no-sync/Makefile @@ -1,4 +1,4 @@ include ../tools.mk all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/alloc/src/lib.rs --cfg no_sync + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/alloc/src/lib.rs --cfg no_sync diff --git a/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile b/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile index ec05ebea5558..837664d92b93 100644 --- a/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile +++ b/tests/run-make-fulldeps/core-no-fp-fmt-parse/Makefile @@ -1,4 +1,4 @@ include ../tools.mk all: - $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../../library/core/src/lib.rs --cfg no_fp_fmt_parse + $(RUSTC) --edition=2021 -Dwarnings --crate-type=rlib ../../../library/core/src/lib.rs --cfg no_fp_fmt_parse diff --git a/tests/run-make-fulldeps/obtain-borrowck/Makefile b/tests/run-make-fulldeps/obtain-borrowck/Makefile index 223993125c80..212d0f67d006 100644 --- a/tests/run-make-fulldeps/obtain-borrowck/Makefile +++ b/tests/run-make-fulldeps/obtain-borrowck/Makefile @@ -4,7 +4,7 @@ include ../tools.mk # together with the borrow checker information. # How to run this -# $ ./x.py test src/test/run-make-fulldeps/obtain-borrowck +# $ ./x.py test tests/run-make-fulldeps/obtain-borrowck DRIVER_BINARY := "$(TMPDIR)"/driver SYSROOT := $(shell $(RUSTC) --print sysroot) diff --git a/tests/run-make/coverage/compiletest-ignore-dir b/tests/run-make/coverage/compiletest-ignore-dir index b533b272d38c..470ff996098b 100644 --- a/tests/run-make/coverage/compiletest-ignore-dir +++ b/tests/run-make/coverage/compiletest-ignore-dir @@ -1,3 +1,3 @@ # Directory "coverage" supports the tests at prefix ../coverage-* -# Use ./x.py [options] test src/test/run-make/coverage to run all related tests. +# Use ./x.py [options] test tests/run-make/coverage to run all related tests. diff --git a/tests/run-make/repr128-dwarf/Makefile b/tests/run-make/repr128-dwarf/Makefile index a840e3ee6d80..2b03c22c0d0d 100644 --- a/tests/run-make/repr128-dwarf/Makefile +++ b/tests/run-make/repr128-dwarf/Makefile @@ -1,5 +1,5 @@ # ignore-windows -# This test should be replaced with one in src/test/debuginfo once GDB or LLDB support 128-bit +# This test should be replaced with one in tests/debuginfo once GDB or LLDB support 128-bit # enums. include ../../run-make-fulldeps/tools.mk diff --git a/tests/run-make/static-pie/Makefile b/tests/run-make/static-pie/Makefile index e71770636ee1..f4e6adf1b183 100644 --- a/tests/run-make/static-pie/Makefile +++ b/tests/run-make/static-pie/Makefile @@ -5,7 +5,7 @@ include ../../run-make-fulldeps/tools.mk # ignore-gnux32 # How to manually run this -# $ ./x.py test --target x86_64-unknown-linux-[musl,gnu] src/test/run-make/static-pie +# $ ./x.py test --target x86_64-unknown-linux-[musl,gnu] tests/run-make/static-pie all: test-clang test-gcc diff --git a/tests/run-make/thumb-none-cortex-m/Makefile b/tests/run-make/thumb-none-cortex-m/Makefile index aa046af95da8..3065141c08a3 100644 --- a/tests/run-make/thumb-none-cortex-m/Makefile +++ b/tests/run-make/thumb-none-cortex-m/Makefile @@ -2,7 +2,7 @@ include ../../run-make-fulldeps/tools.mk # How to run this # $ ./x.py clean -# $ ./x.py test --target thumbv6m-none-eabi,thumbv7m-none-eabi src/test/run-make +# $ ./x.py test --target thumbv6m-none-eabi,thumbv7m-none-eabi tests/run-make # Supported targets: # - thumbv6m-none-eabi (Bare Cortex-M0, M0+, M1) diff --git a/tests/run-make/thumb-none-qemu/Makefile b/tests/run-make/thumb-none-qemu/Makefile index 328758d41ba6..a1c2ba12cd06 100644 --- a/tests/run-make/thumb-none-qemu/Makefile +++ b/tests/run-make/thumb-none-qemu/Makefile @@ -4,7 +4,7 @@ include ../../run-make-fulldeps/tools.mk # How to run this # $ ./x.py clean -# $ ./x.py test --target thumbv7m-none-eabi src/test/run-make +# $ ./x.py test --target thumbv7m-none-eabi tests/run-make # For cargo setting export RUSTC := $(RUSTC_ORIGINAL) diff --git a/tests/rustdoc-gui/README.md b/tests/rustdoc-gui/README.md index d9854e2e7154..1126a72ab67e 100644 --- a/tests/rustdoc-gui/README.md +++ b/tests/rustdoc-gui/README.md @@ -11,14 +11,14 @@ You can find more information and its documentation in its [repository][browser- If you need to have more information on the tests run, you can use `--test-args`: ```bash -$ ./x.py test src/test/rustdoc-gui --stage 1 --test-args --debug +$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --debug ``` If you don't want to run in headless mode (helpful to debug sometimes), you can use `--no-headless`: ```bash -$ ./x.py test src/test/rustdoc-gui --stage 1 --test-args --no-headless +$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-headless ``` To see the supported options, use `--help`. @@ -27,7 +27,7 @@ Important to be noted: if the chromium instance crashes when you run it, you mig use `--no-sandbox` to make it work: ```bash -$ ./x.py test src/test/rustdoc-gui --stage 1 --test-args --no-sandbox +$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-sandbox ``` [browser-ui-test]: https://github.com/GuillaumeGomez/browser-UI-test/ diff --git a/tests/rustdoc-ui/cfg-test.rs b/tests/rustdoc-ui/cfg-test.rs index d4ca92585871..d40b92837355 100644 --- a/tests/rustdoc-ui/cfg-test.rs +++ b/tests/rustdoc-ui/cfg-test.rs @@ -1,6 +1,6 @@ // check-pass // compile-flags:--test --test-args --test-threads=1 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // Crates like core have doctests gated on `cfg(not(test))` so we need to make diff --git a/tests/rustdoc-ui/check-cfg-test.rs b/tests/rustdoc-ui/check-cfg-test.rs index 626cc838704b..920432276cba 100644 --- a/tests/rustdoc-ui/check-cfg-test.rs +++ b/tests/rustdoc-ui/check-cfg-test.rs @@ -1,7 +1,7 @@ // check-pass // compile-flags: --test --nocapture --check-cfg=values(feature,"test") -Z unstable-options -// normalize-stderr-test: "src/test/rustdoc-ui" -> "$$DIR" -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stderr-test: "tests/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// The doctest will produce a warning because feature invalid is unexpected diff --git a/tests/rustdoc-ui/coverage/basic.stdout b/tests/rustdoc-ui/coverage/basic.stdout index 3c602b3da4c7..545662f0f3d1 100644 --- a/tests/rustdoc-ui/coverage/basic.stdout +++ b/tests/rustdoc-ui/coverage/basic.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...est/rustdoc-ui/coverage/basic.rs | 7 | 50.0% | 0 | 0.0% | +| ...sts/rustdoc-ui/coverage/basic.rs | 7 | 50.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 7 | 50.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/coverage/empty.stdout b/tests/rustdoc-ui/coverage/empty.stdout index 890a7d56e162..d486825287b1 100644 --- a/tests/rustdoc-ui/coverage/empty.stdout +++ b/tests/rustdoc-ui/coverage/empty.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...est/rustdoc-ui/coverage/empty.rs | 0 | 0.0% | 0 | 0.0% | +| ...sts/rustdoc-ui/coverage/empty.rs | 0 | 0.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 0 | 0.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/coverage/enums.stdout b/tests/rustdoc-ui/coverage/enums.stdout index 64c012c1f66e..bb224aac8c0b 100644 --- a/tests/rustdoc-ui/coverage/enums.stdout +++ b/tests/rustdoc-ui/coverage/enums.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...est/rustdoc-ui/coverage/enums.rs | 6 | 75.0% | 0 | 0.0% | +| ...sts/rustdoc-ui/coverage/enums.rs | 6 | 75.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 6 | 75.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/coverage/exotic.stdout b/tests/rustdoc-ui/coverage/exotic.stdout index 27798b813101..bd894898cc45 100644 --- a/tests/rustdoc-ui/coverage/exotic.stdout +++ b/tests/rustdoc-ui/coverage/exotic.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...st/rustdoc-ui/coverage/exotic.rs | 3 | 100.0% | 0 | 0.0% | +| ...ts/rustdoc-ui/coverage/exotic.rs | 3 | 100.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 3 | 100.0% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/coverage/private.stdout b/tests/rustdoc-ui/coverage/private.stdout index 37a0f5187b51..b9981c7c50aa 100644 --- a/tests/rustdoc-ui/coverage/private.stdout +++ b/tests/rustdoc-ui/coverage/private.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...t/rustdoc-ui/coverage/private.rs | 4 | 57.1% | 0 | 0.0% | +| ...s/rustdoc-ui/coverage/private.rs | 4 | 57.1% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 4 | 57.1% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/coverage/traits.stdout b/tests/rustdoc-ui/coverage/traits.stdout index 5053d02090c4..0c7857cf29ce 100644 --- a/tests/rustdoc-ui/coverage/traits.stdout +++ b/tests/rustdoc-ui/coverage/traits.stdout @@ -1,7 +1,7 @@ +-------------------------------------+------------+------------+------------+------------+ | File | Documented | Percentage | Examples | Percentage | +-------------------------------------+------------+------------+------------+------------+ -| ...st/rustdoc-ui/coverage/traits.rs | 8 | 88.9% | 0 | 0.0% | +| ...ts/rustdoc-ui/coverage/traits.rs | 8 | 88.9% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ | Total | 8 | 88.9% | 0 | 0.0% | +-------------------------------------+------------+------------+------------+------------+ diff --git a/tests/rustdoc-ui/display-output.rs b/tests/rustdoc-ui/display-output.rs index ec27a9f6ba31..23bc54e3cde1 100644 --- a/tests/rustdoc-ui/display-output.rs +++ b/tests/rustdoc-ui/display-output.rs @@ -3,7 +3,7 @@ // check-pass // edition:2018 // compile-flags:--test --test-args=--show-output -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ``` diff --git a/tests/rustdoc-ui/doc-comment-multi-line-attr.rs b/tests/rustdoc-ui/doc-comment-multi-line-attr.rs index 97259f782bdd..db674e229fc0 100644 --- a/tests/rustdoc-ui/doc-comment-multi-line-attr.rs +++ b/tests/rustdoc-ui/doc-comment-multi-line-attr.rs @@ -1,6 +1,6 @@ // Regression test for #97440: Multiline inner attribute triggers ICE during doctest // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // check-pass diff --git a/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs b/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs index b2a8133c90e1..6ce3cb9fc070 100644 --- a/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs +++ b/tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs @@ -1,5 +1,5 @@ // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // check-pass diff --git a/tests/rustdoc-ui/doc-test-doctest-feature.rs b/tests/rustdoc-ui/doc-test-doctest-feature.rs index 0b79aaece8a0..88cf44e643be 100644 --- a/tests/rustdoc-ui/doc-test-doctest-feature.rs +++ b/tests/rustdoc-ui/doc-test-doctest-feature.rs @@ -1,6 +1,6 @@ // check-pass // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // Make sure `cfg(doctest)` is set when finding doctests but not inside diff --git a/tests/rustdoc-ui/doc-test-rustdoc-feature.rs b/tests/rustdoc-ui/doc-test-rustdoc-feature.rs index bf334c67ecab..dc72a4857645 100644 --- a/tests/rustdoc-ui/doc-test-rustdoc-feature.rs +++ b/tests/rustdoc-ui/doc-test-rustdoc-feature.rs @@ -1,6 +1,6 @@ // check-pass // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" #![feature(doc_cfg)] diff --git a/tests/rustdoc-ui/doctest-multiline-crate-attribute.rs b/tests/rustdoc-ui/doctest-multiline-crate-attribute.rs index a30472ac56b2..260f5a7a64f5 100644 --- a/tests/rustdoc-ui/doctest-multiline-crate-attribute.rs +++ b/tests/rustdoc-ui/doctest-multiline-crate-attribute.rs @@ -1,5 +1,5 @@ // compile-flags:--test --test-args=--test-threads=1 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // check-pass diff --git a/tests/rustdoc-ui/doctest-output.rs b/tests/rustdoc-ui/doctest-output.rs index 2670fa572010..303f76896981 100644 --- a/tests/rustdoc-ui/doctest-output.rs +++ b/tests/rustdoc-ui/doctest-output.rs @@ -1,7 +1,7 @@ // edition:2018 // aux-build:extern_macros.rs // compile-flags:--test --test-args=--test-threads=1 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // check-pass diff --git a/tests/rustdoc-ui/failed-doctest-compile-fail.rs b/tests/rustdoc-ui/failed-doctest-compile-fail.rs index 6f2ff5d703a1..4dfca600f162 100644 --- a/tests/rustdoc-ui/failed-doctest-compile-fail.rs +++ b/tests/rustdoc-ui/failed-doctest-compile-fail.rs @@ -2,7 +2,7 @@ // adapted to use that, and that normalize line can go away // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs b/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs index 16d737106ea8..03a5b9d5d842 100644 --- a/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs +++ b/tests/rustdoc-ui/failed-doctest-extra-semicolon-on-item.rs @@ -2,7 +2,7 @@ // adapted to use that, and that normalize line can go away // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/failed-doctest-missing-codes.rs b/tests/rustdoc-ui/failed-doctest-missing-codes.rs index 57b70b478e62..66a229a0c757 100644 --- a/tests/rustdoc-ui/failed-doctest-missing-codes.rs +++ b/tests/rustdoc-ui/failed-doctest-missing-codes.rs @@ -2,7 +2,7 @@ // adapted to use that, and that normalize line can go away // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/failed-doctest-output-windows.rs b/tests/rustdoc-ui/failed-doctest-output-windows.rs index 4cd9993d8d5b..456a9e68f20c 100644 --- a/tests/rustdoc-ui/failed-doctest-output-windows.rs +++ b/tests/rustdoc-ui/failed-doctest-output-windows.rs @@ -7,7 +7,7 @@ // compile-flags:--test --test-args --test-threads=1 // rustc-env:RUST_BACKTRACE=0 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/failed-doctest-output.rs b/tests/rustdoc-ui/failed-doctest-output.rs index 42de954d052b..77647f8eca95 100644 --- a/tests/rustdoc-ui/failed-doctest-output.rs +++ b/tests/rustdoc-ui/failed-doctest-output.rs @@ -7,7 +7,7 @@ // compile-flags:--test --test-args --test-threads=1 // rustc-env:RUST_BACKTRACE=0 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/failed-doctest-should-panic.rs b/tests/rustdoc-ui/failed-doctest-should-panic.rs index 2b8bb31686f2..c134f80064d5 100644 --- a/tests/rustdoc-ui/failed-doctest-should-panic.rs +++ b/tests/rustdoc-ui/failed-doctest-should-panic.rs @@ -2,7 +2,7 @@ // adapted to use that, and that normalize line can go away // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/issue-80992.rs b/tests/rustdoc-ui/issue-80992.rs index 8983439bb64d..80ff225b8791 100644 --- a/tests/rustdoc-ui/issue-80992.rs +++ b/tests/rustdoc-ui/issue-80992.rs @@ -1,6 +1,6 @@ // check-pass // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" pub fn test() -> Result<(), ()> { diff --git a/tests/rustdoc-ui/issue-81662-shortness.rs b/tests/rustdoc-ui/issue-81662-shortness.rs index 27a21a313bc5..8a90813b31d5 100644 --- a/tests/rustdoc-ui/issue-81662-shortness.rs +++ b/tests/rustdoc-ui/issue-81662-shortness.rs @@ -1,5 +1,5 @@ // compile-flags:--test --error-format=short -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 diff --git a/tests/rustdoc-ui/issue-91134.rs b/tests/rustdoc-ui/issue-91134.rs index d2ff3a252266..42703ee4d799 100644 --- a/tests/rustdoc-ui/issue-91134.rs +++ b/tests/rustdoc-ui/issue-91134.rs @@ -1,7 +1,7 @@ // compile-flags: --test --crate-name=empty_fn --extern=empty_fn --test-args=--test-threads=1 // aux-build:empty-fn.rs // check-pass -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // edition:2021 diff --git a/tests/rustdoc-ui/no-run-flag.rs b/tests/rustdoc-ui/no-run-flag.rs index da1672c4a6e7..181730eb4161 100644 --- a/tests/rustdoc-ui/no-run-flag.rs +++ b/tests/rustdoc-ui/no-run-flag.rs @@ -2,7 +2,7 @@ // check-pass // compile-flags:-Z unstable-options --test --no-run --test-args=--test-threads=1 -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ``` diff --git a/tests/rustdoc-ui/nocapture-fail.rs b/tests/rustdoc-ui/nocapture-fail.rs index 7706bd1f3e39..9a3fb592c630 100644 --- a/tests/rustdoc-ui/nocapture-fail.rs +++ b/tests/rustdoc-ui/nocapture-fail.rs @@ -1,7 +1,7 @@ // check-pass // compile-flags:--test -Zunstable-options --nocapture -// normalize-stderr-test: "src/test/rustdoc-ui" -> "$$DIR" -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stderr-test: "tests/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ```compile_fail diff --git a/tests/rustdoc-ui/nocapture.rs b/tests/rustdoc-ui/nocapture.rs index 321f5ca08ede..3eb38f2fb3b8 100644 --- a/tests/rustdoc-ui/nocapture.rs +++ b/tests/rustdoc-ui/nocapture.rs @@ -1,6 +1,6 @@ // check-pass // compile-flags:--test -Zunstable-options --nocapture -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ``` diff --git a/tests/rustdoc-ui/run-directory.rs b/tests/rustdoc-ui/run-directory.rs index 0d432c1e6996..bbceaaf824f9 100644 --- a/tests/rustdoc-ui/run-directory.rs +++ b/tests/rustdoc-ui/run-directory.rs @@ -4,7 +4,7 @@ // check-pass // [correct]compile-flags:--test --test-run-directory={{src-base}} -Zunstable-options // [incorrect]compile-flags:--test --test-run-directory={{src-base}}/coverage -Zunstable-options -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ``` diff --git a/tests/rustdoc-ui/test-no_std.rs b/tests/rustdoc-ui/test-no_std.rs index ee919985e7a9..51abf1c72176 100644 --- a/tests/rustdoc-ui/test-no_std.rs +++ b/tests/rustdoc-ui/test-no_std.rs @@ -1,5 +1,5 @@ // compile-flags:--test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // check-pass diff --git a/tests/rustdoc-ui/test-type.rs b/tests/rustdoc-ui/test-type.rs index 882da5c2503f..7f5a8f3fc415 100644 --- a/tests/rustdoc-ui/test-type.rs +++ b/tests/rustdoc-ui/test-type.rs @@ -1,6 +1,6 @@ // compile-flags: --test --test-args=--test-threads=1 // check-pass -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" /// ``` diff --git a/tests/rustdoc-ui/unparseable-doc-test.rs b/tests/rustdoc-ui/unparseable-doc-test.rs index 0cff8cd9a33a..f0a56a91bf54 100644 --- a/tests/rustdoc-ui/unparseable-doc-test.rs +++ b/tests/rustdoc-ui/unparseable-doc-test.rs @@ -1,5 +1,5 @@ // compile-flags: --test -// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR" +// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // failure-status: 101 // rustc-env: RUST_BACKTRACE=0 diff --git a/tests/ui/abi/homogenous-floats-target-feature-mixup.rs b/tests/ui/abi/homogenous-floats-target-feature-mixup.rs index d7f5e19219ed..4600bd090cc6 100644 --- a/tests/ui/abi/homogenous-floats-target-feature-mixup.rs +++ b/tests/ui/abi/homogenous-floats-target-feature-mixup.rs @@ -1,7 +1,7 @@ // This test check that even if we mixup target feature of function with homogenous floats, // the abi is sound and still produce the right answer. // -// This is basically the same test as src/test/ui/simd/target-feature-mixup.rs but for floats and +// This is basically the same test as tests/ui/simd/target-feature-mixup.rs but for floats and // without #[repr(simd)] // run-pass diff --git a/tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs b/tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs index 6787527027e3..067c620f5fe8 100644 --- a/tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs +++ b/tests/ui/cfg/assume-incomplete-release/auxiliary/ver-cfg-rel.rs @@ -8,7 +8,7 @@ use proc_macro::{TokenStream, TokenTree as Tt}; use std::str::FromStr; // String containing the current version number of the tip, i.e. "1.41.2" -static VERSION_NUMBER: &str = include_str!("../../../../../version"); +static VERSION_NUMBER: &str = include_str!("../../../../../src/version"); #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] struct Version { diff --git a/tests/ui/crate-loading/crateresolve1.rs b/tests/ui/crate-loading/crateresolve1.rs index f5477f244dd8..61a1ee263ede 100644 --- a/tests/ui/crate-loading/crateresolve1.rs +++ b/tests/ui/crate-loading/crateresolve1.rs @@ -6,7 +6,7 @@ // normalize-stderr-test: "\\\?\\" -> "" // normalize-stderr-test: "(lib)?crateresolve1-([123])\.[a-z]+" -> "libcrateresolve1-$2.somelib" -// NOTE: This test is duplicated at `src/test/ui/error-codes/E0464.rs`. +// NOTE: This test is duplicated at `tests/ui/error-codes/E0464.rs`. extern crate crateresolve1; //~^ ERROR multiple candidates for `rlib` dependency `crateresolve1` found diff --git a/tests/ui/error-codes/E0464.rs b/tests/ui/error-codes/E0464.rs index 554f1ce72d9e..47717fbd508a 100644 --- a/tests/ui/error-codes/E0464.rs +++ b/tests/ui/error-codes/E0464.rs @@ -6,7 +6,7 @@ // normalize-stderr-test: "\\\?\\" -> "" // normalize-stderr-test: "(lib)?crateresolve1-([123])\.[a-z]+" -> "libcrateresolve1-$2.somelib" -// NOTE: This test is duplicated from `src/test/ui/crate-loading/crateresolve1.rs`. +// NOTE: This test is duplicated from `tests/ui/crate-loading/crateresolve1.rs`. extern crate crateresolve1; //~^ ERROR multiple candidates for `rlib` dependency `crateresolve1` found diff --git a/tests/ui/error-codes/E0711.rs b/tests/ui/error-codes/E0711.rs index 7d2044a7da2d..7b1a217bdeca 100644 --- a/tests/ui/error-codes/E0711.rs +++ b/tests/ui/error-codes/E0711.rs @@ -1,4 +1,4 @@ -// copied from: src/test/ui/feature-gates/stability-attribute-consistency.rs +// copied from: tests/ui/feature-gates/stability-attribute-consistency.rs #![feature(staged_api)] diff --git a/tests/ui/functions-closures/closure-expected-type/README.md b/tests/ui/functions-closures/closure-expected-type/README.md index 11d2c9b7fb76..0b749040a0e3 100644 --- a/tests/ui/functions-closures/closure-expected-type/README.md +++ b/tests/ui/functions-closures/closure-expected-type/README.md @@ -5,4 +5,4 @@ inputs. This investigation was kicked off by #38714, which revealed some pretty deep flaws in the ad-hoc way that we were doing things before. -See also `src/test/ui/closure-expected-type`. +See also `tests/ui/closure-expected-type`. diff --git a/tests/ui/generator/drop-control-flow.rs b/tests/ui/generator/drop-control-flow.rs index d383680002f4..c6efda9541fb 100644 --- a/tests/ui/generator/drop-control-flow.rs +++ b/tests/ui/generator/drop-control-flow.rs @@ -18,7 +18,7 @@ impl !Send for NonSend {} fn assert_send(_: T) {} -// This test case is reduced from src/test/ui/drop/dynamic-drop-async.rs +// This test case is reduced from tests/ui/drop/dynamic-drop-async.rs fn one_armed_if(arg: bool) { let _ = || { let arr = [Ptr]; diff --git a/tests/ui/generator/print/generator-print-verbose-1.rs b/tests/ui/generator/print/generator-print-verbose-1.rs index fe0687722b0b..89124ad7289a 100644 --- a/tests/ui/generator/print/generator-print-verbose-1.rs +++ b/tests/ui/generator/print/generator-print-verbose-1.rs @@ -1,6 +1,6 @@ // compile-flags: -Zverbose -// Same as: src/test/ui/generator/issue-68112.stderr +// Same as: tests/ui/generator/issue-68112.stderr #![feature(generators, generator_trait)] diff --git a/tests/ui/hashmap/hashmap-memory.rs b/tests/ui/hashmap/hashmap-memory.rs index 2031196ab215..87f8b6ad5730 100644 --- a/tests/ui/hashmap/hashmap-memory.rs +++ b/tests/ui/hashmap/hashmap-memory.rs @@ -90,5 +90,5 @@ mod map_reduce { pub fn main() { map_reduce::map_reduce( - vec!["../src/test/run-pass/hashmap-memory.rs".to_string()]); + vec!["../tests/run-pass/hashmap-memory.rs".to_string()]); } diff --git a/tests/ui/intrinsics/intrinsic-unreachable.rs b/tests/ui/intrinsics/intrinsic-unreachable.rs index da1a32d58eac..73dd71d482ff 100644 --- a/tests/ui/intrinsics/intrinsic-unreachable.rs +++ b/tests/ui/intrinsics/intrinsic-unreachable.rs @@ -3,7 +3,7 @@ use std::intrinsics; -// See also src/test/run-make/intrinsic-unreachable. +// See also tests/run-make/intrinsic-unreachable. unsafe fn f(x: usize) -> usize { match x { diff --git a/tests/ui/let-else/let-else-bindings.rs b/tests/ui/let-else/let-else-bindings.rs index 7d2cad978fc0..53ac398b8f52 100644 --- a/tests/ui/let-else/let-else-bindings.rs +++ b/tests/ui/let-else/let-else-bindings.rs @@ -1,5 +1,5 @@ // run-pass -// adapted from src/test/ui/binding/if-let.rs +// adapted from tests/ui/binding/if-let.rs #![allow(dead_code)] diff --git a/tests/ui/save-analysis/issue-89066.rs b/tests/ui/save-analysis/issue-89066.rs index 2873f5237d4a..c65e2d73fade 100644 --- a/tests/ui/save-analysis/issue-89066.rs +++ b/tests/ui/save-analysis/issue-89066.rs @@ -1,7 +1,7 @@ // compile-flags: -Zsave-analysis // Check that this does not ICE. -// Stolen from src/test/ui/const-generics/generic_arg_infer/infer-arg-test.rs +// Stolen from tests/ui/const-generics/generic_arg_infer/infer-arg-test.rs #![feature(generic_arg_infer)] diff --git a/triagebot.toml b/triagebot.toml index bee0371d36ef..a3eec63e3689 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -120,12 +120,12 @@ trigger_files = [ "src/rustdoc-json-types", # Tests - "src/test/rustdoc", - "src/test/rustdoc-ui", - "src/test/rustdoc-gui", - "src/test/rustdoc-js", - "src/test/rustdoc-js-std", - "src/test/rustdoc-json", + "tests/rustdoc", + "tests/rustdoc-ui", + "tests/rustdoc-gui", + "tests/rustdoc-js", + "tests/rustdoc-js-std", + "tests/rustdoc-json", # Internal tooling "src/etc/htmldocck.py", @@ -143,7 +143,7 @@ exclude_labels = [ trigger_files = [ "src/librustdoc/json/", "src/rustdoc-json-types", - "src/test/rustdoc-json", + "tests/rustdoc-json", "src/tools/jsondocck", "src/tools/jsondoclint", ] @@ -154,7 +154,7 @@ trigger_files = [ "compiler", # Tests - "src/test/ui", + "tests/ui", ] exclude_labels = [ "T-*", @@ -601,7 +601,7 @@ fallback = [ "/src/llvm-project" = ["@cuviper"] "/src/rustdoc-json-types" = ["rustdoc"] "/src/stage0.json" = ["bootstrap"] -"/src/test/ui" = ["compiler"] +"/tests/ui" = ["compiler"] "/src/tools/cargo" = ["@ehuss", "@joshtriplett"] "/src/tools/compiletest" = ["bootstrap"] "/src/tools/linkchecker" = ["@ehuss"] From 5f8686ec3b598ca33b64c6e1cd31f72214b49e96 Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Thu, 5 Jan 2023 09:45:44 +0100 Subject: [PATCH 400/478] Change `src/test` to `tests` in source files, fix tidy and tests --- tests/ui/crashes/ice-6254.rs | 2 +- tests/ui/crashes/ice-6255.rs | 2 +- tests/ui/crashes/ice-6256.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/ui/crashes/ice-6254.rs b/tests/ui/crashes/ice-6254.rs index a2a60a169153..8af60890390e 100644 --- a/tests/ui/crashes/ice-6254.rs +++ b/tests/ui/crashes/ice-6254.rs @@ -1,4 +1,4 @@ -// originally from ./src/test/ui/pattern/usefulness/consts-opaque.rs +// originally from ./tests/ui/pattern/usefulness/consts-opaque.rs // panicked at 'assertion failed: rows.iter().all(|r| r.len() == v.len())', // compiler/rustc_mir_build/src/thir/pattern/_match.rs:2030:5 diff --git a/tests/ui/crashes/ice-6255.rs b/tests/ui/crashes/ice-6255.rs index bd4a81d98e2e..ccde6aa2b0f7 100644 --- a/tests/ui/crashes/ice-6255.rs +++ b/tests/ui/crashes/ice-6255.rs @@ -1,4 +1,4 @@ -// originally from rustc ./src/test/ui/macros/issue-78325-inconsistent-resolution.rs +// originally from rustc ./tests/ui/macros/issue-78325-inconsistent-resolution.rs // inconsistent resolution for a macro macro_rules! define_other_core { diff --git a/tests/ui/crashes/ice-6256.rs b/tests/ui/crashes/ice-6256.rs index 67308263dadd..f9ee3e058c11 100644 --- a/tests/ui/crashes/ice-6256.rs +++ b/tests/ui/crashes/ice-6256.rs @@ -1,4 +1,4 @@ -// originally from rustc ./src/test/ui/regions/issue-78262.rs +// originally from rustc ./tests/ui/regions/issue-78262.rs // ICE: to get the signature of a closure, use substs.as_closure().sig() not fn_sig() #![allow(clippy::upper_case_acronyms)] From d031befe7928fd218c959568c12b25c4b6e04efa Mon Sep 17 00:00:00 2001 From: Boxy Date: Wed, 11 Jan 2023 12:02:14 +0000 Subject: [PATCH 401/478] a --- triagebot.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/triagebot.toml b/triagebot.toml index bee0371d36ef..f129d433f0e1 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -249,6 +249,11 @@ trigger_files = [ [autolabel."S-waiting-on-review"] new_pr = true +[autolabel."WG-trait-system-refactor"] +trigger_files = [ + "compiler/rustc_trait_selection/solve" +] + [notify-zulip."I-prioritize"] zulip_stream = 245100 # #t-compiler/wg-prioritization/alerts topic = "#{number} {title}" @@ -344,7 +349,7 @@ cc = ["@BoxyUwU"] [mentions."compiler/rustc_trait_selection/src/solve/"] message = "Some changes occurred to the core trait solver" -cc = ["@lcnr", "@compiler-errors"] +cc = ["@rust-lang/initiative-trait-system-refactor"] [mentions."compiler/rustc_trait_selection/src/traits/engine.rs"] message = """ From cce2f5f7726875d3784988f5e54aae7f4421ba85 Mon Sep 17 00:00:00 2001 From: klensy Date: Wed, 11 Jan 2023 15:45:52 +0300 Subject: [PATCH 402/478] fix typo LocalItemId -> ItemLocalId --- compiler/rustc_hir/src/hir_id.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_hir/src/hir_id.rs b/compiler/rustc_hir/src/hir_id.rs index 3b4add0cf4d4..404abe2b068c 100644 --- a/compiler/rustc_hir/src/hir_id.rs +++ b/compiler/rustc_hir/src/hir_id.rs @@ -148,7 +148,7 @@ rustc_index::newtype_index! { /// that is, within a `hir::Item`, `hir::TraitItem`, or `hir::ImplItem`. There is no /// guarantee that the numerical value of a given `ItemLocalId` corresponds to /// the node's position within the owning item in any way, but there is a - /// guarantee that the `LocalItemId`s within an owner occupy a dense range of + /// guarantee that the `ItemLocalId`s within an owner occupy a dense range of /// integers starting at zero, so a mapping that maps all or most nodes within /// an "item-like" to something else can be implemented by a `Vec` instead of a /// tree or hash map. @@ -161,7 +161,7 @@ impl ItemLocalId { pub const INVALID: ItemLocalId = ItemLocalId::MAX; } -// Safety: Ord is implement as just comparing the LocalItemId's numerical +// Safety: Ord is implement as just comparing the ItemLocalId's numerical // values and these are not changed by (de-)serialization. unsafe impl StableOrd for ItemLocalId {} From 13eec69e1c192afcac098c8c332a4cc9990b2c1c Mon Sep 17 00:00:00 2001 From: Ben Kimock Date: Mon, 9 Jan 2023 20:56:38 -0500 Subject: [PATCH 403/478] Add a regression test for argument copies with DestinationPropagation --- tests/codegen/move-operands.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/codegen/move-operands.rs diff --git a/tests/codegen/move-operands.rs b/tests/codegen/move-operands.rs new file mode 100644 index 000000000000..6c51324a312d --- /dev/null +++ b/tests/codegen/move-operands.rs @@ -0,0 +1,12 @@ +// compile-flags: -C no-prepopulate-passes -Zmir-enable-passes=+DestinationPropagation + +#![crate_type = "lib"] + +type T = [u8; 256]; + +#[no_mangle] +pub fn f(a: T, b: fn(_: T, _: T)) { + // CHECK: call void @llvm.memcpy.{{.*}}({{i8\*|ptr}} align 1 %{{.*}}, {{i8\*|ptr}} align 1 %{{.*}}, {{.*}} 256, i1 false) + // CHECK-NOT: call void @llvm.memcpy.{{.*}}({{i8\*|ptr}} align 1 %{{.*}}, {{i8\*|ptr}} align 1 %{{.*}}, {{.*}} 256, i1 false) + b(a, a) +} From bd76d9133b62447035741e0f693de9c98893902a Mon Sep 17 00:00:00 2001 From: Andre Bogus Date: Sun, 8 Jan 2023 16:19:11 +0100 Subject: [PATCH 404/478] trim paths in `suspicious_to_owned` --- clippy_lints/src/methods/suspicious_to_owned.rs | 6 ++++-- tests/ui/suspicious_to_owned.stderr | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/clippy_lints/src/methods/suspicious_to_owned.rs b/clippy_lints/src/methods/suspicious_to_owned.rs index 15c1c618c513..fe88fa41fd91 100644 --- a/clippy_lints/src/methods/suspicious_to_owned.rs +++ b/clippy_lints/src/methods/suspicious_to_owned.rs @@ -5,7 +5,7 @@ use if_chain::if_chain; use rustc_errors::Applicability; use rustc_hir as hir; use rustc_lint::LateContext; -use rustc_middle::ty; +use rustc_middle::ty::{self, print::with_forced_trimmed_paths}; use rustc_span::sym; use super::SUSPICIOUS_TO_OWNED; @@ -24,7 +24,9 @@ pub fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr<'_>) - cx, SUSPICIOUS_TO_OWNED, expr.span, - &format!("this `to_owned` call clones the {input_type} itself and does not cause the {input_type} contents to become owned"), + &with_forced_trimmed_paths!(format!( + "this `to_owned` call clones the {input_type} itself and does not cause the {input_type} contents to become owned" + )), "consider using, depending on intent", format!("{recv_snip}.clone()` or `{recv_snip}.into_owned()"), app, diff --git a/tests/ui/suspicious_to_owned.stderr b/tests/ui/suspicious_to_owned.stderr index ae1aec34d82e..dec3f50d6f1b 100644 --- a/tests/ui/suspicious_to_owned.stderr +++ b/tests/ui/suspicious_to_owned.stderr @@ -1,4 +1,4 @@ -error: this `to_owned` call clones the std::borrow::Cow<'_, str> itself and does not cause the std::borrow::Cow<'_, str> contents to become owned +error: this `to_owned` call clones the Cow<'_, str> itself and does not cause the Cow<'_, str> contents to become owned --> $DIR/suspicious_to_owned.rs:16:13 | LL | let _ = cow.to_owned(); @@ -6,19 +6,19 @@ LL | let _ = cow.to_owned(); | = note: `-D clippy::suspicious-to-owned` implied by `-D warnings` -error: this `to_owned` call clones the std::borrow::Cow<'_, [char; 3]> itself and does not cause the std::borrow::Cow<'_, [char; 3]> contents to become owned +error: this `to_owned` call clones the Cow<'_, [char; 3]> itself and does not cause the Cow<'_, [char; 3]> contents to become owned --> $DIR/suspicious_to_owned.rs:26:13 | LL | let _ = cow.to_owned(); | ^^^^^^^^^^^^^^ help: consider using, depending on intent: `cow.clone()` or `cow.into_owned()` -error: this `to_owned` call clones the std::borrow::Cow<'_, std::vec::Vec> itself and does not cause the std::borrow::Cow<'_, std::vec::Vec> contents to become owned +error: this `to_owned` call clones the Cow<'_, Vec> itself and does not cause the Cow<'_, Vec> contents to become owned --> $DIR/suspicious_to_owned.rs:36:13 | LL | let _ = cow.to_owned(); | ^^^^^^^^^^^^^^ help: consider using, depending on intent: `cow.clone()` or `cow.into_owned()` -error: this `to_owned` call clones the std::borrow::Cow<'_, str> itself and does not cause the std::borrow::Cow<'_, str> contents to become owned +error: this `to_owned` call clones the Cow<'_, str> itself and does not cause the Cow<'_, str> contents to become owned --> $DIR/suspicious_to_owned.rs:46:13 | LL | let _ = cow.to_owned(); From 33ebe04183c569b219d6ec379727646bba78e744 Mon Sep 17 00:00:00 2001 From: Cedric Date: Wed, 11 Jan 2023 16:46:14 +0100 Subject: [PATCH 405/478] Fix some typos in code comments. --- compiler/rustc_codegen_ssa/src/back/write.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 7aadcdd22287..25dc88c535da 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -1098,7 +1098,7 @@ fn start_executing_work( // There are a few environmental pre-conditions that shape how the system // is set up: // - // - Error reporting only can happen on the main thread because that's the + // - Error reporting can only happen on the main thread because that's the // only place where we have access to the compiler `Session`. // - LLVM work can be done on any thread. // - Codegen can only happen on the main thread. @@ -1110,16 +1110,16 @@ fn start_executing_work( // Error Reporting // =============== // The error reporting restriction is handled separately from the rest: We - // set up a `SharedEmitter` the holds an open channel to the main thread. + // set up a `SharedEmitter` that holds an open channel to the main thread. // When an error occurs on any thread, the shared emitter will send the // error message to the receiver main thread (`SharedEmitterMain`). The // main thread will periodically query this error message queue and emit // any error messages it has received. It might even abort compilation if - // has received a fatal error. In this case we rely on all other threads + // it has received a fatal error. In this case we rely on all other threads // being torn down automatically with the main thread. // Since the main thread will often be busy doing codegen work, error // reporting will be somewhat delayed, since the message queue can only be - // checked in between to work packages. + // checked in between two work packages. // // Work Processing Infrastructure // ============================== @@ -1133,7 +1133,7 @@ fn start_executing_work( // thread about what work to do when, and it will spawn off LLVM worker // threads as open LLVM WorkItems become available. // - // The job of the main thread is to codegen CGUs into LLVM work package + // The job of the main thread is to codegen CGUs into LLVM work packages // (since the main thread is the only thread that can do this). The main // thread will block until it receives a message from the coordinator, upon // which it will codegen one CGU, send it to the coordinator and block @@ -1142,10 +1142,10 @@ fn start_executing_work( // // The coordinator keeps a queue of LLVM WorkItems, and when a `Token` is // available, it will spawn off a new LLVM worker thread and let it process - // that a WorkItem. When a LLVM worker thread is done with its WorkItem, + // a WorkItem. When a LLVM worker thread is done with its WorkItem, // it will just shut down, which also frees all resources associated with // the given LLVM module, and sends a message to the coordinator that the - // has been completed. + // WorkItem has been completed. // // Work Scheduling // =============== @@ -1165,7 +1165,7 @@ fn start_executing_work( // // Doing LLVM Work on the Main Thread // ---------------------------------- - // Since the main thread owns the compiler processes implicit `Token`, it is + // Since the main thread owns the compiler process's implicit `Token`, it is // wasteful to keep it blocked without doing any work. Therefore, what we do // in this case is: We spawn off an additional LLVM worker thread that helps // reduce the queue. The work it is doing corresponds to the implicit @@ -1216,7 +1216,7 @@ fn start_executing_work( // ------------------------------ // // The final job the coordinator thread is responsible for is managing LTO - // and how that works. When LTO is requested what we'll to is collect all + // and how that works. When LTO is requested what we'll do is collect all // optimized LLVM modules into a local vector on the coordinator. Once all // modules have been codegened and optimized we hand this to the `lto` // module for further optimization. The `lto` module will return back a list From 4f0c88f8bda92e16db9b59e5c585ae882dd4a086 Mon Sep 17 00:00:00 2001 From: Dmitri Gribenko Date: Wed, 11 Jan 2023 10:39:01 -0500 Subject: [PATCH 406/478] rustc_llvm: replace llvm::makeArrayRef with ArrayRef constructors. LLVM upstream has deprecated llvm::makeArrayRef and will remove it. --- .../llvm-wrapper/CoverageMappingWrapper.cpp | 11 ++++++----- compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 14 +++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp index 7da6ab71309d..03e6d2149e96 100644 --- a/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp @@ -28,8 +28,8 @@ extern "C" void LLVMRustCoverageWriteFilenamesSectionToBuffer( for (size_t i = 0; i < FilenamesLen; i++) { FilenameRefs.push_back(std::string(Filenames[i])); } - auto FilenamesWriter = coverage::CoverageFilenamesSectionWriter( - makeArrayRef(FilenameRefs)); + auto FilenamesWriter = + coverage::CoverageFilenamesSectionWriter(ArrayRef(FilenameRefs)); RawRustStringOstream OS(BufferOut); FilenamesWriter.write(OS); } @@ -45,15 +45,16 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer( // Convert from FFI representation to LLVM representation. SmallVector MappingRegions; MappingRegions.reserve(NumMappingRegions); - for (const auto &Region : makeArrayRef(RustMappingRegions, NumMappingRegions)) { + for (const auto &Region : ArrayRef( + RustMappingRegions, NumMappingRegions)) { MappingRegions.emplace_back( Region.Count, Region.FalseCount, Region.FileID, Region.ExpandedFileID, Region.LineStart, Region.ColumnStart, Region.LineEnd, Region.ColumnEnd, Region.Kind); } auto CoverageMappingWriter = coverage::CoverageMappingWriter( - makeArrayRef(VirtualFileMappingIDs, NumVirtualFileMappingIDs), - makeArrayRef(Expressions, NumExpressions), + ArrayRef(VirtualFileMappingIDs, NumVirtualFileMappingIDs), + ArrayRef(Expressions, NumExpressions), MappingRegions); RawRustStringOstream OS(BufferOut); CoverageMappingWriter.write(OS); diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index 279b69918542..8f94e8a4ab2e 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -257,7 +257,7 @@ template static inline void AddAttributes(T *t, unsigned Index, PALNew = PAL.addAttributes(t->getContext(), Index, B); #else AttrBuilder B(t->getContext()); - for (LLVMAttributeRef Attr : makeArrayRef(Attrs, AttrsLen)) + for (LLVMAttributeRef Attr : ArrayRef(Attrs, AttrsLen)) B.addAttribute(unwrap(Attr)); PALNew = PAL.addAttributesAtIndex(t->getContext(), Index, B); #endif @@ -1064,7 +1064,7 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerator( LLVMRustDIBuilderRef Builder, const char *Name, size_t NameLen, const uint64_t Value[2], unsigned SizeInBits, bool IsUnsigned) { return wrap(Builder->createEnumerator(StringRef(Name, NameLen), - APSInt(APInt(SizeInBits, makeArrayRef(Value, 2)), IsUnsigned))); + APSInt(APInt(SizeInBits, ArrayRef(Value, 2)), IsUnsigned))); } extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType( @@ -1477,7 +1477,7 @@ extern "C" void LLVMRustAddHandler(LLVMValueRef CatchSwitchRef, extern "C" OperandBundleDef *LLVMRustBuildOperandBundleDef(const char *Name, LLVMValueRef *Inputs, unsigned NumInputs) { - return new OperandBundleDef(Name, makeArrayRef(unwrap(Inputs), NumInputs)); + return new OperandBundleDef(Name, ArrayRef(unwrap(Inputs), NumInputs)); } extern "C" void LLVMRustFreeOperandBundleDef(OperandBundleDef *Bundle) { @@ -1491,8 +1491,8 @@ extern "C" LLVMValueRef LLVMRustBuildCall(LLVMBuilderRef B, LLVMTypeRef Ty, LLVM Value *Callee = unwrap(Fn); FunctionType *FTy = unwrap(Ty); return wrap(unwrap(B)->CreateCall( - FTy, Callee, makeArrayRef(unwrap(Args), NumArgs), - makeArrayRef(*OpBundles, NumOpBundles))); + FTy, Callee, ArrayRef(unwrap(Args), NumArgs), + ArrayRef(*OpBundles, NumOpBundles))); } extern "C" LLVMValueRef LLVMRustGetInstrProfIncrementIntrinsic(LLVMModuleRef M) { @@ -1537,8 +1537,8 @@ LLVMRustBuildInvoke(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn, Value *Callee = unwrap(Fn); FunctionType *FTy = unwrap(Ty); return wrap(unwrap(B)->CreateInvoke(FTy, Callee, unwrap(Then), unwrap(Catch), - makeArrayRef(unwrap(Args), NumArgs), - makeArrayRef(*OpBundles, NumOpBundles), + ArrayRef(unwrap(Args), NumArgs), + ArrayRef(*OpBundles, NumOpBundles), Name)); } From 52d534ef63294d93d3b3f711297e962396d5e0e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Mon, 9 Jan 2023 07:10:17 +0000 Subject: [PATCH 407/478] Detect out of bounds range pattern value Fix #68972. --- .../locales/en-US/mir_build.ftl | 4 ++ compiler/rustc_mir_build/src/errors.rs | 10 +++ .../rustc_mir_build/src/thir/pattern/mod.rs | 68 +++++++++++++++++-- ...range-pattern-out-of-bounds-issue-68972.rs | 13 ++++ ...e-pattern-out-of-bounds-issue-68972.stderr | 26 +++++++ 5 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 tests/ui/range/range-pattern-out-of-bounds-issue-68972.rs create mode 100644 tests/ui/range/range-pattern-out-of-bounds-issue-68972.stderr diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 60d3d3e69abb..aacaafeede69 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -206,6 +206,10 @@ mir_build_lower_range_bound_must_be_less_than_or_equal_to_upper = .label = lower bound larger than upper bound .teach_note = When matching against a range, the compiler verifies that the range is non-empty. Range patterns include both end-points, so this is equivalent to requiring the start of the range to be less than or equal to the end of the range. +mir_build_literal_in_range_out_of_bounds = + literal out of range for `{$ty}` + .label = this value doesn't fit in `{$ty}` whose maximum value is `{$max}` + mir_build_lower_range_bound_must_be_less_than_upper = lower range bound must be less than upper mir_build_leading_irrefutable_let_patterns = leading irrefutable {$count -> diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 68179001b916..233eecbd5b4e 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -493,6 +493,16 @@ pub struct LowerRangeBoundMustBeLessThanOrEqualToUpper { pub teach: Option<()>, } +#[derive(Diagnostic)] +#[diag(mir_build_literal_in_range_out_of_bounds)] +pub struct LiteralOutOfRange<'tcx> { + #[primary_span] + #[label] + pub span: Span, + pub ty: Ty<'tcx>, + pub max: u128, +} + #[derive(Diagnostic)] #[diag(mir_build_lower_range_bound_must_be_less_than_upper, code = "E0579")] pub struct LowerRangeBoundMustBeLessThanUpper { diff --git a/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index 2c775b397182..7d4353c52926 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/mod.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/mod.rs @@ -129,10 +129,20 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { hi: mir::ConstantKind<'tcx>, end: RangeEnd, span: Span, + lo_expr: Option<&hir::Expr<'tcx>>, + hi_expr: Option<&hir::Expr<'tcx>>, ) -> PatKind<'tcx> { assert_eq!(lo.ty(), ty); assert_eq!(hi.ty(), ty); let cmp = compare_const_vals(self.tcx, lo, hi, self.param_env); + let max = || { + self.tcx + .layout_of(self.param_env.with_reveal_all_normalized(self.tcx).and(ty)) + .ok() + .unwrap() + .size + .unsigned_int_max() + }; match (end, cmp) { // `x..y` where `x < y`. // Non-empty because the range includes at least `x`. @@ -141,7 +151,27 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { } // `x..y` where `x >= y`. The range is empty => error. (RangeEnd::Excluded, _) => { - self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanUpper { span }); + let mut lower_overflow = false; + let mut higher_overflow = false; + if let Some(hir::Expr { kind: hir::ExprKind::Lit(lit), .. }) = lo_expr + && let rustc_ast::ast::LitKind::Int(val, _) = lit.node + { + if lo.eval_bits(self.tcx, self.param_env, ty) != val { + lower_overflow = true; + self.tcx.sess.emit_err(LiteralOutOfRange { span: lit.span, ty, max: max() }); + } + } + if let Some(hir::Expr { kind: hir::ExprKind::Lit(lit), .. }) = hi_expr + && let rustc_ast::ast::LitKind::Int(val, _) = lit.node + { + if hi.eval_bits(self.tcx, self.param_env, ty) != val { + higher_overflow = true; + self.tcx.sess.emit_err(LiteralOutOfRange { span: lit.span, ty, max: max() }); + } + } + if !lower_overflow && !higher_overflow { + self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanUpper { span }); + } PatKind::Wild } // `x..=y` where `x == y`. @@ -152,10 +182,34 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { } // `x..=y` where `x > y` hence the range is empty => error. (RangeEnd::Included, _) => { - self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanOrEqualToUpper { - span, - teach: if self.tcx.sess.teach(&error_code!(E0030)) { Some(()) } else { None }, - }); + let mut lower_overflow = false; + let mut higher_overflow = false; + if let Some(hir::Expr { kind: hir::ExprKind::Lit(lit), .. }) = lo_expr + && let rustc_ast::ast::LitKind::Int(val, _) = lit.node + { + if lo.eval_bits(self.tcx, self.param_env, ty) != val { + lower_overflow = true; + self.tcx.sess.emit_err(LiteralOutOfRange { span: lit.span, ty, max: max() }); + } + } + if let Some(hir::Expr { kind: hir::ExprKind::Lit(lit), .. }) = hi_expr + && let rustc_ast::ast::LitKind::Int(val, _) = lit.node + { + if hi.eval_bits(self.tcx, self.param_env, ty) != val { + higher_overflow = true; + self.tcx.sess.emit_err(LiteralOutOfRange { span: lit.span, ty, max: max() }); + } + } + if !lower_overflow && !higher_overflow { + self.tcx.sess.emit_err(LowerRangeBoundMustBeLessThanOrEqualToUpper { + span, + teach: if self.tcx.sess.teach(&error_code!(E0030)) { + Some(()) + } else { + None + }, + }); + } PatKind::Wild } } @@ -201,7 +255,9 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { let (lp, hp) = (lo.as_ref().map(|(x, _)| x), hi.as_ref().map(|(x, _)| x)); let mut kind = match self.normalize_range_pattern_ends(ty, lp, hp) { - Some((lc, hc)) => self.lower_pattern_range(ty, lc, hc, end, lo_span), + Some((lc, hc)) => { + self.lower_pattern_range(ty, lc, hc, end, lo_span, lo_expr, hi_expr) + } None => { let msg = &format!( "found bad range pattern `{:?}` outside of error recovery", diff --git a/tests/ui/range/range-pattern-out-of-bounds-issue-68972.rs b/tests/ui/range/range-pattern-out-of-bounds-issue-68972.rs new file mode 100644 index 000000000000..d02caff1febd --- /dev/null +++ b/tests/ui/range/range-pattern-out-of-bounds-issue-68972.rs @@ -0,0 +1,13 @@ +#![feature(exclusive_range_pattern)] +#![allow(unreachable_patterns)] +fn main() { + match 0u8 { + 251..257 => {} + //~^ ERROR literal out of range + //~| ERROR literal out of range + 251..=256 => {} + //~^ ERROR literal out of range + //~| ERROR literal out of range + _ => {} + } +} diff --git a/tests/ui/range/range-pattern-out-of-bounds-issue-68972.stderr b/tests/ui/range/range-pattern-out-of-bounds-issue-68972.stderr new file mode 100644 index 000000000000..7b8309b9bc2a --- /dev/null +++ b/tests/ui/range/range-pattern-out-of-bounds-issue-68972.stderr @@ -0,0 +1,26 @@ +error: literal out of range for `u8` + --> $DIR/range-pattern-out-of-bounds-issue-68972.rs:5:14 + | +LL | 251..257 => {} + | ^^^ this value doesn't fit in `u8` whose maximum value is `255` + +error: literal out of range for `u8` + --> $DIR/range-pattern-out-of-bounds-issue-68972.rs:8:15 + | +LL | 251..=256 => {} + | ^^^ this value doesn't fit in `u8` whose maximum value is `255` + +error: literal out of range for `u8` + --> $DIR/range-pattern-out-of-bounds-issue-68972.rs:5:14 + | +LL | 251..257 => {} + | ^^^ this value doesn't fit in `u8` whose maximum value is `255` + +error: literal out of range for `u8` + --> $DIR/range-pattern-out-of-bounds-issue-68972.rs:8:15 + | +LL | 251..=256 => {} + | ^^^ this value doesn't fit in `u8` whose maximum value is `255` + +error: aborting due to 4 previous errors + From 531193853142a2564f1c667c9e8ca96c524a380b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Mon, 9 Jan 2023 05:29:54 +0000 Subject: [PATCH 408/478] Detect struct literal needing parentheses Fix #82051. --- .../locales/en-US/parse.ftl | 4 ++ compiler/rustc_parse/src/errors.rs | 18 +++++++++ .../rustc_parse/src/parser/diagnostics.rs | 37 +++++++++++++------ compiler/rustc_parse/src/parser/expr.rs | 2 +- compiler/rustc_parse/src/parser/item.rs | 3 +- compiler/rustc_parse/src/parser/stmt.rs | 11 +++++- ...-call-on-struct-literal-in-if-condition.rs | 13 +++++++ ...l-on-struct-literal-in-if-condition.stderr | 13 +++++++ 8 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 tests/ui/parser/method-call-on-struct-literal-in-if-condition.rs create mode 100644 tests/ui/parser/method-call-on-struct-literal-in-if-condition.stderr diff --git a/compiler/rustc_error_messages/locales/en-US/parse.ftl b/compiler/rustc_error_messages/locales/en-US/parse.ftl index 3401978caf5f..f3f00fff230a 100644 --- a/compiler/rustc_error_messages/locales/en-US/parse.ftl +++ b/compiler/rustc_error_messages/locales/en-US/parse.ftl @@ -2,6 +2,10 @@ parse_struct_literal_body_without_path = struct literal body without path .suggestion = you might have forgotten to add the struct literal inside the block +parse_struct_literal_needing_parens = + invalid struct literal + .suggestion = you might need to surround the struct literal in parentheses + parse_maybe_report_ambiguous_plus = ambiguous `+` in a type .suggestion = use parentheses to disambiguate diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs index 574591529f33..19eeb069a259 100644 --- a/compiler/rustc_parse/src/errors.rs +++ b/compiler/rustc_parse/src/errors.rs @@ -970,6 +970,24 @@ pub(crate) struct StructLiteralBodyWithoutPathSugg { pub after: Span, } +#[derive(Diagnostic)] +#[diag(parse_struct_literal_needing_parens)] +pub(crate) struct StructLiteralNeedingParens { + #[primary_span] + pub span: Span, + #[subdiagnostic] + pub sugg: StructLiteralNeedingParensSugg, +} + +#[derive(Subdiagnostic)] +#[multipart_suggestion(suggestion, applicability = "machine-applicable")] +pub(crate) struct StructLiteralNeedingParensSugg { + #[suggestion_part(code = "(")] + pub before: Span, + #[suggestion_part(code = ")")] + pub after: Span, +} + #[derive(Diagnostic)] #[diag(parse_unmatched_angle_brackets)] pub(crate) struct UnmatchedAngleBrackets { diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs index d9fa3e31db97..4c918c6702ed 100644 --- a/compiler/rustc_parse/src/parser/diagnostics.rs +++ b/compiler/rustc_parse/src/parser/diagnostics.rs @@ -12,9 +12,10 @@ use crate::errors::{ IncorrectAwait, IncorrectSemicolon, IncorrectUseOfAwait, ParenthesesInForHead, ParenthesesInForHeadSugg, PatternMethodParamWithoutBody, QuestionMarkInType, QuestionMarkInTypeSugg, SelfParamNotFirst, StructLiteralBodyWithoutPath, - StructLiteralBodyWithoutPathSugg, SuggEscapeToUseAsIdentifier, SuggRemoveComma, - UnexpectedConstInGenericParam, UnexpectedConstParamDeclaration, - UnexpectedConstParamDeclarationSugg, UnmatchedAngleBrackets, UseEqInstead, + StructLiteralBodyWithoutPathSugg, StructLiteralNeedingParens, StructLiteralNeedingParensSugg, + SuggEscapeToUseAsIdentifier, SuggRemoveComma, UnexpectedConstInGenericParam, + UnexpectedConstParamDeclaration, UnexpectedConstParamDeclarationSugg, UnmatchedAngleBrackets, + UseEqInstead, }; use crate::lexer::UnmatchedBrace; @@ -623,12 +624,15 @@ impl<'a> Parser<'a> { &mut self, lo: Span, s: BlockCheckMode, + maybe_struct_name: token::Token, + can_be_struct_literal: bool, ) -> Option>> { if self.token.is_ident() && self.look_ahead(1, |t| t == &token::Colon) { // We might be having a struct literal where people forgot to include the path: // fn foo() -> Foo { // field: value, // } + info!(?maybe_struct_name, ?self.token); let mut snapshot = self.create_snapshot_for_diagnostic(); let path = Path { segments: ThinVec::new(), @@ -648,13 +652,6 @@ impl<'a> Parser<'a> { // field: value, // } } err.delay_as_bug(); - self.sess.emit_err(StructLiteralBodyWithoutPath { - span: expr.span, - sugg: StructLiteralBodyWithoutPathSugg { - before: expr.span.shrink_to_lo(), - after: expr.span.shrink_to_hi(), - }, - }); self.restore_snapshot(snapshot); let mut tail = self.mk_block( vec![self.mk_stmt_err(expr.span)], @@ -662,7 +659,25 @@ impl<'a> Parser<'a> { lo.to(self.prev_token.span), ); tail.could_be_bare_literal = true; - Ok(tail) + if maybe_struct_name.is_ident() && can_be_struct_literal { + // Account for `if Example { a: one(), }.is_pos() {}`. + Err(self.sess.create_err(StructLiteralNeedingParens { + span: maybe_struct_name.span.to(expr.span), + sugg: StructLiteralNeedingParensSugg { + before: maybe_struct_name.span.shrink_to_lo(), + after: expr.span.shrink_to_hi(), + }, + })) + } else { + self.sess.emit_err(StructLiteralBodyWithoutPath { + span: expr.span, + sugg: StructLiteralBodyWithoutPathSugg { + before: expr.span.shrink_to_lo(), + after: expr.span.shrink_to_hi(), + }, + }); + Ok(tail) + } } (Err(err), Ok(tail)) => { // We have a block tail that contains a somehow valid type ascription expr. diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index 9f436783ceda..f5093fb02a87 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -2039,7 +2039,7 @@ impl<'a> Parser<'a> { }); } - let (attrs, blk) = self.parse_block_common(lo, blk_mode)?; + let (attrs, blk) = self.parse_block_common(lo, blk_mode, true)?; Ok(self.mk_expr_with_attrs(blk.span, ExprKind::Block(blk, opt_label), attrs)) } diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs index a958c294930e..a251e3ded2f5 100644 --- a/compiler/rustc_parse/src/parser/item.rs +++ b/compiler/rustc_parse/src/parser/item.rs @@ -2214,7 +2214,8 @@ impl<'a> Parser<'a> { *sig_hi = self.prev_token.span; (AttrVec::new(), None) } else if self.check(&token::OpenDelim(Delimiter::Brace)) || self.token.is_whole_block() { - self.parse_inner_attrs_and_block().map(|(attrs, body)| (attrs, Some(body)))? + self.parse_block_common(self.token.span, BlockCheckMode::Default, false) + .map(|(attrs, body)| (attrs, Some(body)))? } else if self.token.kind == token::Eq { // Recover `fn foo() = $expr;`. self.bump(); // `=` diff --git a/compiler/rustc_parse/src/parser/stmt.rs b/compiler/rustc_parse/src/parser/stmt.rs index 0daae457d302..1e5c28349603 100644 --- a/compiler/rustc_parse/src/parser/stmt.rs +++ b/compiler/rustc_parse/src/parser/stmt.rs @@ -498,7 +498,7 @@ impl<'a> Parser<'a> { /// Parses a block. Inner attributes are allowed. pub(super) fn parse_inner_attrs_and_block(&mut self) -> PResult<'a, (AttrVec, P)> { - self.parse_block_common(self.token.span, BlockCheckMode::Default) + self.parse_block_common(self.token.span, BlockCheckMode::Default, true) } /// Parses a block. Inner attributes are allowed. @@ -506,16 +506,23 @@ impl<'a> Parser<'a> { &mut self, lo: Span, blk_mode: BlockCheckMode, + can_be_struct_literal: bool, ) -> PResult<'a, (AttrVec, P)> { maybe_whole!(self, NtBlock, |x| (AttrVec::new(), x)); + let maybe_ident = self.prev_token.clone(); self.maybe_recover_unexpected_block_label(); if !self.eat(&token::OpenDelim(Delimiter::Brace)) { return self.error_block_no_opening_brace(); } let attrs = self.parse_inner_attributes()?; - let tail = match self.maybe_suggest_struct_literal(lo, blk_mode) { + let tail = match self.maybe_suggest_struct_literal( + lo, + blk_mode, + maybe_ident, + can_be_struct_literal, + ) { Some(tail) => tail?, None => self.parse_block_tail(lo, blk_mode, AttemptLocalParseRecovery::Yes)?, }; diff --git a/tests/ui/parser/method-call-on-struct-literal-in-if-condition.rs b/tests/ui/parser/method-call-on-struct-literal-in-if-condition.rs new file mode 100644 index 000000000000..8be7c9ee8ac3 --- /dev/null +++ b/tests/ui/parser/method-call-on-struct-literal-in-if-condition.rs @@ -0,0 +1,13 @@ +pub struct Example { a: i32 } + +impl Example { + fn is_pos(&self) -> bool { self.a > 0 } +} + +fn one() -> i32 { 1 } + +fn main() { + if Example { a: one(), }.is_pos() { //~ ERROR invalid struct literal + println!("Positive!"); + } +} diff --git a/tests/ui/parser/method-call-on-struct-literal-in-if-condition.stderr b/tests/ui/parser/method-call-on-struct-literal-in-if-condition.stderr new file mode 100644 index 000000000000..7fd7ffc94a51 --- /dev/null +++ b/tests/ui/parser/method-call-on-struct-literal-in-if-condition.stderr @@ -0,0 +1,13 @@ +error: invalid struct literal + --> $DIR/method-call-on-struct-literal-in-if-condition.rs:10:8 + | +LL | if Example { a: one(), }.is_pos() { + | ^^^^^^^^^^^^^^^^^^^^^ + | +help: you might need to surround the struct literal in parentheses + | +LL | if (Example { a: one(), }).is_pos() { + | + + + +error: aborting due to previous error + From 70ddde76dfbb03909c565b329f86e49de1f767cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Le=C3=B3n=20Orell=20Valerian=20Liehr?= Date: Fri, 6 Jan 2023 17:47:21 +0100 Subject: [PATCH 409/478] parser: recover from where clauses placed before tuple struct bodies --- .../locales/en-US/parse.ftl | 6 + compiler/rustc_parse/src/errors.rs | 24 ++++ compiler/rustc_parse/src/parser/generics.rs | 118 ++++++++++++++++-- compiler/rustc_parse/src/parser/item.rs | 14 ++- tests/ui/parser/issues/issue-17904.rs | 4 +- tests/ui/parser/issues/issue-17904.stderr | 15 ++- ...re-clause-before-tuple-struct-body-0.fixed | 15 +++ ...where-clause-before-tuple-struct-body-0.rs | 17 +++ ...e-clause-before-tuple-struct-body-0.stderr | 40 ++++++ ...where-clause-before-tuple-struct-body-1.rs | 7 ++ ...e-clause-before-tuple-struct-body-1.stderr | 23 ++++ 11 files changed, 266 insertions(+), 17 deletions(-) create mode 100644 tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed create mode 100644 tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs create mode 100644 tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr create mode 100644 tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs create mode 100644 tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr diff --git a/compiler/rustc_error_messages/locales/en-US/parse.ftl b/compiler/rustc_error_messages/locales/en-US/parse.ftl index 3401978caf5f..ecb05162f95e 100644 --- a/compiler/rustc_error_messages/locales/en-US/parse.ftl +++ b/compiler/rustc_error_messages/locales/en-US/parse.ftl @@ -368,3 +368,9 @@ parse_maybe_fn_typo_with_impl = you might have meant to write `impl` instead of parse_expected_fn_path_found_fn_keyword = expected identifier, found keyword `fn` .suggestion = use `Fn` to refer to the trait + +parse_where_clause_before_tuple_struct_body = where clauses are not allowed before tuple struct bodies + .label = unexpected where clause + .name_label = while parsing this tuple struct + .body_label = the struct body + .suggestion = move the body before the where clause diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs index 574591529f33..3fdb2177ab0e 100644 --- a/compiler/rustc_parse/src/errors.rs +++ b/compiler/rustc_parse/src/errors.rs @@ -1237,3 +1237,27 @@ pub(crate) struct ExpectedFnPathFoundFnKeyword { #[suggestion(applicability = "machine-applicable", code = "Fn", style = "verbose")] pub fn_token_span: Span, } + +#[derive(Diagnostic)] +#[diag(parse_where_clause_before_tuple_struct_body)] +pub(crate) struct WhereClauseBeforeTupleStructBody { + #[primary_span] + #[label] + pub span: Span, + #[label(name_label)] + pub name: Span, + #[label(body_label)] + pub body: Span, + #[subdiagnostic] + pub sugg: Option, +} + +#[derive(Subdiagnostic)] +#[multipart_suggestion(suggestion, applicability = "machine-applicable")] +pub(crate) struct WhereClauseBeforeTupleStructBodySugg { + #[suggestion_part(code = "{snippet}")] + pub left: Span, + pub snippet: String, + #[suggestion_part(code = "")] + pub right: Span, +} diff --git a/compiler/rustc_parse/src/parser/generics.rs b/compiler/rustc_parse/src/parser/generics.rs index fa75670b2ed8..8ba811715d80 100644 --- a/compiler/rustc_parse/src/parser/generics.rs +++ b/compiler/rustc_parse/src/parser/generics.rs @@ -1,11 +1,20 @@ +use crate::errors::{WhereClauseBeforeTupleStructBody, WhereClauseBeforeTupleStructBodySugg}; + use super::{ForceCollect, Parser, TrailingToken}; +use ast::token::Delimiter; use rustc_ast::token; use rustc_ast::{ self as ast, AttrVec, GenericBounds, GenericParam, GenericParamKind, TyKind, WhereClause, }; use rustc_errors::{Applicability, PResult}; -use rustc_span::symbol::kw; +use rustc_span::symbol::{kw, Ident}; +use rustc_span::Span; + +enum PredicateOrStructBody { + Predicate(ast::WherePredicate), + StructBody(Vec), +} impl<'a> Parser<'a> { /// Parses bounds of a lifetime parameter `BOUND + BOUND + BOUND`, possibly with trailing `+`. @@ -240,23 +249,39 @@ impl<'a> Parser<'a> { }) } - /// Parses an optional where-clause and places it in `generics`. + /// Parses an optional where-clause. /// /// ```ignore (only-for-syntax-highlight) /// where T : Trait + 'b, 'a : 'b /// ``` pub(super) fn parse_where_clause(&mut self) -> PResult<'a, WhereClause> { + self.parse_where_clause_common(None).map(|(clause, _)| clause) + } + + pub(super) fn parse_struct_where_clause( + &mut self, + struct_name: Ident, + body_insertion_point: Span, + ) -> PResult<'a, (WhereClause, Option>)> { + self.parse_where_clause_common(Some((struct_name, body_insertion_point))) + } + + fn parse_where_clause_common( + &mut self, + struct_: Option<(Ident, Span)>, + ) -> PResult<'a, (WhereClause, Option>)> { let mut where_clause = WhereClause { has_where_token: false, predicates: Vec::new(), span: self.prev_token.span.shrink_to_hi(), }; + let mut tuple_struct_body = None; if !self.eat_keyword(kw::Where) { - return Ok(where_clause); + return Ok((where_clause, None)); } where_clause.has_where_token = true; - let lo = self.prev_token.span; + let where_lo = self.prev_token.span; // We are considering adding generics to the `where` keyword as an alternative higher-rank // parameter syntax (as in `where<'a>` or `where`. To avoid that being a breaking @@ -272,7 +297,8 @@ impl<'a> Parser<'a> { } loop { - let lo = self.token.span; + let where_sp = where_lo.to(self.prev_token.span); + let pred_lo = self.token.span; if self.check_lifetime() && self.look_ahead(1, |t| !t.is_like_plus()) { let lifetime = self.expect_lifetime(); // Bounds starting with a colon are mandatory, but possibly empty. @@ -280,13 +306,21 @@ impl<'a> Parser<'a> { let bounds = self.parse_lt_param_bounds(); where_clause.predicates.push(ast::WherePredicate::RegionPredicate( ast::WhereRegionPredicate { - span: lo.to(self.prev_token.span), + span: pred_lo.to(self.prev_token.span), lifetime, bounds, }, )); } else if self.check_type() { - where_clause.predicates.push(self.parse_ty_where_predicate()?); + match self.parse_ty_where_predicate_or_recover_tuple_struct_body( + struct_, pred_lo, where_sp, + )? { + PredicateOrStructBody::Predicate(pred) => where_clause.predicates.push(pred), + PredicateOrStructBody::StructBody(body) => { + tuple_struct_body = Some(body); + break; + } + } } else { break; } @@ -297,7 +331,7 @@ impl<'a> Parser<'a> { if self.eat_keyword_noexpect(kw::Where) { let msg = "cannot define duplicate `where` clauses on an item"; let mut err = self.struct_span_err(self.token.span, msg); - err.span_label(lo, "previous `where` clause starts here"); + err.span_label(pred_lo, "previous `where` clause starts here"); err.span_suggestion_verbose( prev_token.shrink_to_hi().to(self.prev_token.span), "consider joining the two `where` clauses into one", @@ -310,8 +344,72 @@ impl<'a> Parser<'a> { } } - where_clause.span = lo.to(self.prev_token.span); - Ok(where_clause) + where_clause.span = where_lo.to(self.prev_token.span); + Ok((where_clause, tuple_struct_body)) + } + + fn parse_ty_where_predicate_or_recover_tuple_struct_body( + &mut self, + struct_: Option<(Ident, Span)>, + pred_lo: Span, + where_sp: Span, + ) -> PResult<'a, PredicateOrStructBody> { + let mut snapshot = None; + + if let Some(struct_) = struct_ + && self.may_recover() + && self.token.kind == token::OpenDelim(Delimiter::Parenthesis) + { + snapshot = Some((struct_, self.create_snapshot_for_diagnostic())); + }; + + match self.parse_ty_where_predicate() { + Ok(pred) => Ok(PredicateOrStructBody::Predicate(pred)), + Err(type_err) => { + let Some(((struct_name, body_insertion_point), mut snapshot)) = snapshot else { + return Err(type_err); + }; + + // Check if we might have encountered an out of place tuple struct body. + match snapshot.parse_tuple_struct_body() { + // Since we don't know the exact reason why we failed to parse the + // predicate (we might have stumbled upon something bogus like `(T): ?`), + // employ a simple heuristic to weed out some pathological cases: + // Look for a semicolon (strong indicator) or anything that might mark + // the end of the item (weak indicator) following the body. + Ok(body) + if matches!(snapshot.token.kind, token::Semi | token::Eof) + || snapshot.token.can_begin_item() => + { + type_err.cancel(); + + let body_sp = pred_lo.to(snapshot.prev_token.span); + let map = self.sess.source_map(); + + self.sess.emit_err(WhereClauseBeforeTupleStructBody { + span: where_sp, + name: struct_name.span, + body: body_sp, + sugg: map.span_to_snippet(body_sp).ok().map(|body| { + WhereClauseBeforeTupleStructBodySugg { + left: body_insertion_point.shrink_to_hi(), + snippet: body, + right: map.end_point(where_sp).to(body_sp), + } + }), + }); + + self.restore_snapshot(snapshot); + Ok(PredicateOrStructBody::StructBody(body)) + } + Ok(_) => Err(type_err), + Err(body_err) => { + body_err.cancel(); + Err(type_err) + } + } + } + } } fn parse_ty_where_predicate(&mut self) -> PResult<'a, ast::WherePredicate> { diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs index a958c294930e..5c6650acd8a1 100644 --- a/compiler/rustc_parse/src/parser/item.rs +++ b/compiler/rustc_parse/src/parser/item.rs @@ -1454,8 +1454,16 @@ impl<'a> Parser<'a> { // struct. let vdata = if self.token.is_keyword(kw::Where) { - generics.where_clause = self.parse_where_clause()?; - if self.eat(&token::Semi) { + let tuple_struct_body; + (generics.where_clause, tuple_struct_body) = + self.parse_struct_where_clause(class_name, generics.span)?; + + if let Some(body) = tuple_struct_body { + // If we see a misplaced tuple struct body: `struct Foo where T: Copy, (T);` + let body = VariantData::Tuple(body, DUMMY_NODE_ID); + self.expect_semi()?; + body + } else if self.eat(&token::Semi) { // If we see a: `struct Foo where T: Copy;` style decl. VariantData::Unit(DUMMY_NODE_ID) } else { @@ -1575,7 +1583,7 @@ impl<'a> Parser<'a> { Ok((fields, recovered)) } - fn parse_tuple_struct_body(&mut self) -> PResult<'a, Vec> { + pub(super) fn parse_tuple_struct_body(&mut self) -> PResult<'a, Vec> { // This is the case where we find `struct Foo(T) where T: Copy;` // Unit like structs are handled in parse_item_struct function self.parse_paren_comma_seq(|p| { diff --git a/tests/ui/parser/issues/issue-17904.rs b/tests/ui/parser/issues/issue-17904.rs index 7d6a54f4be12..020fb41c2273 100644 --- a/tests/ui/parser/issues/issue-17904.rs +++ b/tests/ui/parser/issues/issue-17904.rs @@ -1,6 +1,8 @@ +// compile-flags: -Zparse-only + struct Baz where U: Eq(U); //This is parsed as the new Fn* style parenthesis syntax. struct Baz where U: Eq(U) -> R; // Notice this parses as well. struct Baz(U) where U: Eq; // This rightfully signals no error as well. -struct Foo where T: Copy, (T); //~ ERROR expected one of `:`, `==`, or `=`, found `;` +struct Foo where T: Copy, (T); //~ ERROR where clauses are not allowed before tuple struct bodies fn main() {} diff --git a/tests/ui/parser/issues/issue-17904.stderr b/tests/ui/parser/issues/issue-17904.stderr index a3cac676189c..aa343975dcac 100644 --- a/tests/ui/parser/issues/issue-17904.stderr +++ b/tests/ui/parser/issues/issue-17904.stderr @@ -1,8 +1,17 @@ -error: expected one of `:`, `==`, or `=`, found `;` - --> $DIR/issue-17904.rs:4:33 +error: where clauses are not allowed before tuple struct bodies + --> $DIR/issue-17904.rs:6:15 | LL | struct Foo where T: Copy, (T); - | ^ expected one of `:`, `==`, or `=` + | --- ^^^^^^^^^^^^^^ --- the struct body + | | | + | | unexpected where clause + | while parsing this tuple struct + | +help: move the body before the where clause + | +LL - struct Foo where T: Copy, (T); +LL + struct Foo(T) where T: Copy; + | error: aborting due to previous error diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed new file mode 100644 index 000000000000..227c40e97c0a --- /dev/null +++ b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed @@ -0,0 +1,15 @@ +// Regression test for issues #100790 and #106439. +// run-rustfix + +pub struct Example(usize) +where + (): Sized; +//~^^^ ERROR where clauses are not allowed before tuple struct bodies + +struct _Demo(pub usize, usize) +where + (): Sized, + String: Clone; +//~^^^^ ERROR where clauses are not allowed before tuple struct bodies + +fn main() {} diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs new file mode 100644 index 000000000000..3699e6fe5723 --- /dev/null +++ b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs @@ -0,0 +1,17 @@ +// Regression test for issues #100790 and #106439. +// run-rustfix + +pub struct Example +where + (): Sized, +(usize); +//~^^^ ERROR where clauses are not allowed before tuple struct bodies + +struct _Demo +where + (): Sized, + String: Clone, +(pub usize, usize); +//~^^^^ ERROR where clauses are not allowed before tuple struct bodies + +fn main() {} diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr new file mode 100644 index 000000000000..18aa5fadb6bc --- /dev/null +++ b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr @@ -0,0 +1,40 @@ +error: where clauses are not allowed before tuple struct bodies + --> $DIR/recover-where-clause-before-tuple-struct-body-0.rs:5:1 + | +LL | pub struct Example + | ------- while parsing this tuple struct +LL | / where +LL | | (): Sized, + | |______________^ unexpected where clause +LL | (usize); + | ------- the struct body + | +help: move the body before the where clause + | +LL ~ pub struct Example(usize) +LL | where +LL ~ (): Sized; + | + +error: where clauses are not allowed before tuple struct bodies + --> $DIR/recover-where-clause-before-tuple-struct-body-0.rs:11:1 + | +LL | struct _Demo + | ----- while parsing this tuple struct +LL | / where +LL | | (): Sized, +LL | | String: Clone, + | |__________________^ unexpected where clause +LL | (pub usize, usize); + | ------------------ the struct body + | +help: move the body before the where clause + | +LL ~ struct _Demo(pub usize, usize) +LL | where +LL | (): Sized, +LL ~ String: Clone; + | + +error: aborting due to 2 previous errors + diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs new file mode 100644 index 000000000000..f515ae81e510 --- /dev/null +++ b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs @@ -0,0 +1,7 @@ +// Regression test for issues #100790 and #106439. + +// Make sure that we still show a helpful error message even if the trailing semicolon is missing. + +struct Foo where T: MyTrait, (T) +//~^ ERROR where clauses are not allowed before tuple struct bodies +//~| ERROR expected `;`, found `` diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr new file mode 100644 index 000000000000..2219c2a73163 --- /dev/null +++ b/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr @@ -0,0 +1,23 @@ +error: where clauses are not allowed before tuple struct bodies + --> $DIR/recover-where-clause-before-tuple-struct-body-1.rs:5:15 + | +LL | struct Foo where T: MyTrait, (T) + | --- ^^^^^^^^^^^^^^^^^ --- the struct body + | | | + | | unexpected where clause + | while parsing this tuple struct + | +help: move the body before the where clause + | +LL - struct Foo where T: MyTrait, (T) +LL + struct Foo(T) where T: MyTrait + | + +error: expected `;`, found `` + --> $DIR/recover-where-clause-before-tuple-struct-body-1.rs:5:35 + | +LL | struct Foo where T: MyTrait, (T) + | ^ expected `;` + +error: aborting due to 2 previous errors + From 34024adc88df9d95e2b002250d41a00c5a937234 Mon Sep 17 00:00:00 2001 From: Alex Macleod Date: Wed, 11 Jan 2023 17:25:47 +0000 Subject: [PATCH 410/478] expl_impl_clone_on_copy: ignore packed structs with type/const params --- clippy_lints/src/derive.rs | 13 +++++++++++-- tests/ui/derive.rs | 11 +++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/clippy_lints/src/derive.rs b/clippy_lints/src/derive.rs index cf3483d4c00b..df32fbd4b33e 100644 --- a/clippy_lints/src/derive.rs +++ b/clippy_lints/src/derive.rs @@ -14,8 +14,8 @@ use rustc_lint::{LateContext, LateLintPass}; use rustc_middle::hir::nested_filter; use rustc_middle::traits::Reveal; use rustc_middle::ty::{ - self, Binder, BoundConstness, Clause, GenericParamDefKind, ImplPolarity, ParamEnv, PredicateKind, TraitPredicate, - Ty, TyCtxt, + self, Binder, BoundConstness, Clause, GenericArgKind, GenericParamDefKind, ImplPolarity, ParamEnv, PredicateKind, + TraitPredicate, Ty, TyCtxt, }; use rustc_session::{declare_lint_pass, declare_tool_lint}; use rustc_span::source_map::Span; @@ -366,6 +366,15 @@ fn check_copy_clone<'tcx>(cx: &LateContext<'tcx>, item: &Item<'_>, trait_ref: &h if ty_subs.types().any(|ty| !implements_trait(cx, ty, clone_id, &[])) { return; } + // `#[repr(packed)]` structs with type/const parameters can't derive `Clone`. + // https://github.com/rust-lang/rust-clippy/issues/10188 + if ty_adt.repr().packed() + && ty_subs + .iter() + .any(|arg| matches!(arg.unpack(), GenericArgKind::Type(_) | GenericArgKind::Const(_))) + { + return; + } span_lint_and_note( cx, diff --git a/tests/ui/derive.rs b/tests/ui/derive.rs index c629c0e53537..843e1df8bc6b 100644 --- a/tests/ui/derive.rs +++ b/tests/ui/derive.rs @@ -85,4 +85,15 @@ impl Clone for GenericRef<'_, T, U> { } } +// https://github.com/rust-lang/rust-clippy/issues/10188 +#[repr(packed)] +#[derive(Copy)] +struct Packed(T); + +impl Clone for Packed { + fn clone(&self) -> Self { + *self + } +} + fn main() {} From 104ec48c649987685e385b7f64a19921403ece63 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 11 Jan 2023 03:54:46 +0000 Subject: [PATCH 411/478] Report fulfillment errors in new trait solver --- .../src/solve/fulfill.rs | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/compiler/rustc_trait_selection/src/solve/fulfill.rs b/compiler/rustc_trait_selection/src/solve/fulfill.rs index 80115d78d88d..c014d682a9aa 100644 --- a/compiler/rustc_trait_selection/src/solve/fulfill.rs +++ b/compiler/rustc_trait_selection/src/solve/fulfill.rs @@ -3,7 +3,10 @@ use std::mem; use rustc_data_structures::fx::FxHashMap; use rustc_infer::{ infer::InferCtxt, - traits::{query::NoSolution, FulfillmentError, PredicateObligation, TraitEngine}, + traits::{ + query::NoSolution, FulfillmentError, FulfillmentErrorCode, PredicateObligation, + SelectionError, TraitEngine, + }, }; use rustc_middle::ty; @@ -45,32 +48,43 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentCtxt<'tcx> { return errors; } - if self.obligations.is_empty() { - Vec::new() - } else { - unimplemented!("ambiguous obligations") - } + self.obligations + .drain(..) + .map(|obligation| FulfillmentError { + obligation: obligation.clone(), + code: FulfillmentErrorCode::CodeSelectionError(SelectionError::Unimplemented), + root_obligation: obligation, + }) + .collect() } fn select_where_possible(&mut self, infcx: &InferCtxt<'tcx>) -> Vec> { - let errors = Vec::new(); + let mut errors = Vec::new(); for i in 0.. { if !infcx.tcx.recursion_limit().value_within_limit(i) { unimplemented!("overflow") } let mut has_changed = false; - for o in mem::take(&mut self.obligations) { + for obligation in mem::take(&mut self.obligations) { let mut cx = EvalCtxt::new(infcx.tcx); - let (changed, certainty) = match cx.evaluate_goal(infcx, o.clone().into()) { + let (changed, certainty) = match cx.evaluate_goal(infcx, obligation.clone().into()) + { Ok(result) => result, - Err(NoSolution) => unimplemented!("error"), + Err(NoSolution) => { + errors.push(FulfillmentError { + obligation: obligation.clone(), + code: FulfillmentErrorCode::CodeAmbiguity, + root_obligation: obligation, + }); + continue; + } }; has_changed |= changed; match certainty { Certainty::Yes => {} - Certainty::Maybe(_) => self.obligations.push(o), + Certainty::Maybe(_) => self.obligations.push(obligation), } } From 1a993611d2f539eeea272694e5efbb30bdeff04e Mon Sep 17 00:00:00 2001 From: J Haigh Date: Wed, 11 Jan 2023 11:11:56 -0700 Subject: [PATCH 412/478] Revert "warn newer available version of the x tool" --- Cargo.lock | 21 +++++------ src/bootstrap/bootstrap.py | 3 +- src/tools/tidy/Cargo.toml | 1 - src/tools/tidy/src/lib.rs | 1 - src/tools/tidy/src/main.rs | 4 +- src/tools/tidy/src/x_version.rs | 65 --------------------------------- src/tools/x/src/main.rs | 8 ---- 7 files changed, 13 insertions(+), 90 deletions(-) delete mode 100644 src/tools/tidy/src/x_version.rs diff --git a/Cargo.lock b/Cargo.lock index 2a88152b5194..4bea3af7f3bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5034,18 +5034,18 @@ checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af" [[package]] name = "semver" -version = "1.0.14" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.152" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -5062,9 +5062,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", @@ -5082,9 +5082,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" dependencies = [ "indexmap", "itoa", @@ -5400,9 +5400,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" dependencies = [ "proc-macro2", "quote", @@ -5576,7 +5576,6 @@ dependencies = [ "lazy_static", "miropt-test-tools", "regex", - "semver", "termcolor", "walkdir", ] diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index f3998e98583e..9cf43fc7a219 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -934,7 +934,8 @@ def main(): if len(sys.argv) > 1 and sys.argv[1] == 'help': sys.argv = [sys.argv[0], '-h'] + sys.argv[2:] - help_triggered = len(sys.argv) == 1 or any(x in ["-h", "--help", "--version"] for x in sys.argv) + help_triggered = ( + '-h' in sys.argv) or ('--help' in sys.argv) or (len(sys.argv) == 1) try: bootstrap(help_triggered) if not help_triggered: diff --git a/src/tools/tidy/Cargo.toml b/src/tools/tidy/Cargo.toml index 5f5ae3a65efa..fff83a1d097b 100644 --- a/src/tools/tidy/Cargo.toml +++ b/src/tools/tidy/Cargo.toml @@ -11,7 +11,6 @@ miropt-test-tools = { path = "../miropt-test-tools" } lazy_static = "1" walkdir = "2" ignore = "0.4.18" -semver = "1.0.14" termcolor = "1.1.3" [[bin]] diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs index 15c641d748c8..bf6e2cc250f3 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -68,4 +68,3 @@ pub mod ui_tests; pub mod unit_tests; pub mod unstable_book; pub mod walk; -pub mod x_version; diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index 2a4853b37be3..e15a71422a86 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -60,7 +60,7 @@ fn main() { let handle = s.spawn(|| { let mut flag = false; - $p::check($($args, )* &mut flag); + $p::check($($args),* , &mut flag); if (flag) { bad.store(true, Ordering::Relaxed); } @@ -112,8 +112,6 @@ fn main() { check!(alphabetical, &compiler_path); check!(alphabetical, &library_path); - check!(x_version, &root_path, &cargo); - let collected = { drain_handles(&mut handles); diff --git a/src/tools/tidy/src/x_version.rs b/src/tools/tidy/src/x_version.rs deleted file mode 100644 index 5dc6a0588c32..000000000000 --- a/src/tools/tidy/src/x_version.rs +++ /dev/null @@ -1,65 +0,0 @@ -use semver::Version; -use std::io::ErrorKind; -use std::path::Path; -use std::process::{Command, Stdio}; - -pub fn check(root: &Path, cargo: &Path, bad: &mut bool) { - let result = Command::new("x").arg("--wrapper-version").stdout(Stdio::piped()).spawn(); - // This runs the command inside a temporary directory. - // This allows us to compare output of result to see if `--wrapper-version` is not a recognized argument to x. - let temp_result = Command::new("x") - .arg("--wrapper-version") - .current_dir(std::env::temp_dir()) - .stdout(Stdio::piped()) - .spawn(); - - let (child, temp_child) = match (result, temp_result) { - (Ok(child), Ok(temp_child)) => (child, temp_child), - (Err(e), _) | (_, Err(e)) => match e.kind() { - ErrorKind::NotFound => return, - _ => return tidy_error!(bad, "failed to run `x`: {}", e), - }, - }; - - let output = child.wait_with_output().unwrap(); - let temp_output = temp_child.wait_with_output().unwrap(); - - if output != temp_output { - return tidy_error!( - bad, - "Current version of x does not support the `--wrapper-version` argument\nConsider updating to the newer version of x by running `cargo install --path src/tools/x`" - ); - } - - if output.status.success() { - let version = String::from_utf8_lossy(&output.stdout); - let version = Version::parse(version.trim_end()).unwrap(); - - if let Some(expected) = get_x_wrapper_version(root, cargo) { - if version < expected { - return tidy_error!( - bad, - "Current version of x is {version}, but the latest version is {expected}\nConsider updating to the newer version of x by running `cargo install --path src/tools/x`" - ); - } - } else { - return tidy_error!( - bad, - "Unable to parse the latest version of `x` at `src/tools/x/Cargo.toml`" - ); - } - } else { - return tidy_error!(bad, "failed to check version of `x`: {}", output.status); - } -} - -// Parse latest version out of `x` Cargo.toml -fn get_x_wrapper_version(root: &Path, cargo: &Path) -> Option { - let mut cmd = cargo_metadata::MetadataCommand::new(); - cmd.cargo_path(cargo) - .manifest_path(root.join("src/tools/x/Cargo.toml")) - .no_deps() - .features(cargo_metadata::CargoOpt::AllFeatures); - let mut metadata = t!(cmd.exec()); - metadata.packages.pop().map(|x| x.version) -} diff --git a/src/tools/x/src/main.rs b/src/tools/x/src/main.rs index 01f7187851e3..f07ff43efe98 100644 --- a/src/tools/x/src/main.rs +++ b/src/tools/x/src/main.rs @@ -52,14 +52,6 @@ fn exec_or_status(command: &mut Command) -> io::Result { } fn main() { - match env::args().skip(1).next().as_deref() { - Some("--wrapper-version") => { - let version = env!("CARGO_PKG_VERSION"); - println!("{}", version); - return; - } - _ => {} - } let current = match env::current_dir() { Ok(dir) => dir, Err(err) => { From ebd33522d701c03f816f49d2e1a05d1d1078ded9 Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Wed, 11 Jan 2023 18:25:33 +0000 Subject: [PATCH 413/478] Deny having src/test exisiting in tidy --- src/tools/tidy/src/lib.rs | 1 + src/tools/tidy/src/main.rs | 1 + src/tools/tidy/src/tests_placement.rs | 15 +++++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 src/tools/tidy/src/tests_placement.rs diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs index 15c641d748c8..1eb146989e4f 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -64,6 +64,7 @@ pub mod pal; pub mod primitive_docs; pub mod style; pub mod target_specific_tests; +pub mod tests_placement; pub mod ui_tests; pub mod unit_tests; pub mod unstable_book; diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index 2a4853b37be3..79441cda64c0 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -76,6 +76,7 @@ fn main() { check!(extdeps, &root_path); // Checks over tests. + check!(tests_placement, &root_path); check!(debug_artifacts, &tests_path); check!(ui_tests, &tests_path); check!(mir_opt_tests, &tests_path, bless); diff --git a/src/tools/tidy/src/tests_placement.rs b/src/tools/tidy/src/tests_placement.rs new file mode 100644 index 000000000000..9d0057df8bcd --- /dev/null +++ b/src/tools/tidy/src/tests_placement.rs @@ -0,0 +1,15 @@ +use std::path::Path; + +const FORBIDDEN_PATH: &str = "src/test"; +const ALLOWED_PATH: &str = "tests"; + +pub fn check(root_path: impl AsRef, bad: &mut bool) { + if root_path.as_ref().join(FORBIDDEN_PATH).exists() { + tidy_error!( + bad, + "Tests have been moved, please move them from {} to {}", + root_path.as_ref().join(FORBIDDEN_PATH).display(), + root_path.as_ref().join(ALLOWED_PATH).display() + ) + } +} From 89f1555824799432118c3be1e4c0fb17854a7bbd Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 11 Jan 2023 18:58:44 +0000 Subject: [PATCH 414/478] Add `AstConv::astconv` method to remove `::` calls --- .../rustc_hir_analysis/src/astconv/mod.rs | 7 ++++ compiler/rustc_hir_analysis/src/collect.rs | 37 +++++-------------- .../src/collect/item_bounds.rs | 8 ++-- .../src/collect/predicates_of.rs | 26 ++++--------- compiler/rustc_hir_analysis/src/lib.rs | 5 +-- compiler/rustc_hir_typeck/src/coercion.rs | 4 +- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 12 +++--- .../rustc_hir_typeck/src/fn_ctxt/checks.rs | 8 ++-- compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs | 3 +- .../src/fn_ctxt/suggestions.rs | 10 ++--- compiler/rustc_hir_typeck/src/lib.rs | 4 +- .../rustc_hir_typeck/src/method/confirm.rs | 3 +- 12 files changed, 50 insertions(+), 77 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/astconv/mod.rs b/compiler/rustc_hir_analysis/src/astconv/mod.rs index 5a7957be318e..3a284aecb667 100644 --- a/compiler/rustc_hir_analysis/src/astconv/mod.rs +++ b/compiler/rustc_hir_analysis/src/astconv/mod.rs @@ -120,6 +120,13 @@ pub trait AstConv<'tcx> { fn set_tainted_by_errors(&self, e: ErrorGuaranteed); fn record_ty(&self, hir_id: hir::HirId, ty: Ty<'tcx>, span: Span); + + fn astconv(&self) -> &dyn AstConv<'tcx> + where + Self: Sized, + { + self + } } #[derive(Debug)] diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs index b7f259668a1e..cd745ee8cab6 100644 --- a/compiler/rustc_hir_analysis/src/collect.rs +++ b/compiler/rustc_hir_analysis/src/collect.rs @@ -351,7 +351,7 @@ impl<'tcx> ItemCtxt<'tcx> { } pub fn to_ty(&self, ast_ty: &hir::Ty<'_>) -> Ty<'tcx> { - >::ast_ty_to_ty(self, ast_ty) + self.astconv().ast_ty_to_ty(ast_ty) } pub fn hir_id(&self) -> hir::HirId { @@ -413,8 +413,7 @@ impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx> { poly_trait_ref: ty::PolyTraitRef<'tcx>, ) -> Ty<'tcx> { if let Some(trait_ref) = poly_trait_ref.no_bound_vars() { - let item_substs = >::create_substs_for_associated_item( - self, + let item_substs = self.astconv().create_substs_for_associated_item( span, item_def_id, item_segment, @@ -1112,8 +1111,7 @@ fn fn_sig(tcx: TyCtxt<'_>, def_id: DefId) -> ty::PolyFnSig<'_> { tcx.hir().get_parent(hir_id) && i.of_trait.is_some() { - >::ty_of_fn( - &icx, + icx.astconv().ty_of_fn( hir_id, sig.header.unsafety, sig.header.abi, @@ -1130,15 +1128,9 @@ fn fn_sig(tcx: TyCtxt<'_>, def_id: DefId) -> ty::PolyFnSig<'_> { kind: TraitItemKind::Fn(FnSig { header, decl, span: _ }, _), generics, .. - }) => >::ty_of_fn( - &icx, - hir_id, - header.unsafety, - header.abi, - decl, - Some(generics), - None, - ), + }) => { + icx.astconv().ty_of_fn(hir_id, header.unsafety, header.abi, decl, Some(generics), None) + } ForeignItem(&hir::ForeignItem { kind: ForeignItemKind::Fn(fn_decl, _, _), .. }) => { let abi = tcx.hir().get_foreign_abi(hir_id); @@ -1244,8 +1236,7 @@ fn infer_return_ty_for_fn_sig<'tcx>( ty::Binder::dummy(fn_sig) } - None => >::ty_of_fn( - icx, + None => icx.astconv().ty_of_fn( hir_id, sig.header.unsafety, sig.header.abi, @@ -1354,8 +1345,7 @@ fn impl_trait_ref(tcx: TyCtxt<'_>, def_id: DefId) -> Option> { match item.kind { hir::ItemKind::Impl(ref impl_) => impl_.of_trait.as_ref().map(|ast_trait_ref| { let selfty = tcx.type_of(def_id); - >::instantiate_mono_trait_ref( - &icx, + icx.astconv().instantiate_mono_trait_ref( ast_trait_ref, selfty, check_impl_constness(tcx, impl_.constness, ast_trait_ref), @@ -1485,15 +1475,8 @@ fn compute_sig_of_foreign_fn_decl<'tcx>( hir::Unsafety::Unsafe }; let hir_id = tcx.hir().local_def_id_to_hir_id(def_id.expect_local()); - let fty = >::ty_of_fn( - &ItemCtxt::new(tcx, def_id), - hir_id, - unsafety, - abi, - decl, - None, - None, - ); + let fty = + ItemCtxt::new(tcx, def_id).astconv().ty_of_fn(hir_id, unsafety, abi, decl, None, None); // Feature gate SIMD types in FFI, since I am not sure that the // ABIs are handled at all correctly. -huonw diff --git a/compiler/rustc_hir_analysis/src/collect/item_bounds.rs b/compiler/rustc_hir_analysis/src/collect/item_bounds.rs index 093e9560ccdf..62eef710ba48 100644 --- a/compiler/rustc_hir_analysis/src/collect/item_bounds.rs +++ b/compiler/rustc_hir_analysis/src/collect/item_bounds.rs @@ -26,9 +26,9 @@ fn associated_type_bounds<'tcx>( ); let icx = ItemCtxt::new(tcx, assoc_item_def_id); - let mut bounds = >::compute_bounds(&icx, item_ty, ast_bounds); + let mut bounds = icx.astconv().compute_bounds(item_ty, ast_bounds); // Associated types are implicitly sized unless a `?Sized` bound is found - >::add_implicitly_sized(&icx, &mut bounds, item_ty, ast_bounds, None, span); + icx.astconv().add_implicitly_sized(&mut bounds, item_ty, ast_bounds, None, span); let trait_def_id = tcx.parent(assoc_item_def_id); let trait_predicates = tcx.trait_explicit_predicates_and_bounds(trait_def_id.expect_local()); @@ -70,9 +70,9 @@ fn opaque_type_bounds<'tcx>( }; let icx = ItemCtxt::new(tcx, opaque_def_id); - let mut bounds = >::compute_bounds(&icx, item_ty, ast_bounds); + let mut bounds = icx.astconv().compute_bounds(item_ty, ast_bounds); // Opaque types are implicitly sized unless a `?Sized` bound is found - >::add_implicitly_sized(&icx, &mut bounds, item_ty, ast_bounds, None, span); + icx.astconv().add_implicitly_sized(&mut bounds, item_ty, ast_bounds, None, span); debug!(?bounds); tcx.arena.alloc_from_iter(bounds.predicates()) diff --git a/compiler/rustc_hir_analysis/src/collect/predicates_of.rs b/compiler/rustc_hir_analysis/src/collect/predicates_of.rs index 18fc43ce15cb..234253556845 100644 --- a/compiler/rustc_hir_analysis/src/collect/predicates_of.rs +++ b/compiler/rustc_hir_analysis/src/collect/predicates_of.rs @@ -162,8 +162,7 @@ fn gather_explicit_predicates_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericP let mut bounds = Bounds::default(); // Params are implicitly sized unless a `?Sized` bound is found - >::add_implicitly_sized( - &icx, + icx.astconv().add_implicitly_sized( &mut bounds, param_ty, &[], @@ -211,22 +210,16 @@ fn gather_explicit_predicates_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericP } let mut bounds = Bounds::default(); - >::add_bounds( - &icx, - ty, - bound_pred.bounds.iter(), - &mut bounds, - bound_vars, - ); + icx.astconv().add_bounds(ty, bound_pred.bounds.iter(), &mut bounds, bound_vars); predicates.extend(bounds.predicates()); } hir::WherePredicate::RegionPredicate(region_pred) => { - let r1 = >::ast_region_to_region(&icx, ®ion_pred.lifetime, None); + let r1 = icx.astconv().ast_region_to_region(®ion_pred.lifetime, None); predicates.extend(region_pred.bounds.iter().map(|bound| { let (r2, span) = match bound { hir::GenericBound::Outlives(lt) => { - (>::ast_region_to_region(&icx, lt, None), lt.ident.span) + (icx.astconv().ast_region_to_region(lt, None), lt.ident.span) } _ => bug!(), }; @@ -279,7 +272,7 @@ fn gather_explicit_predicates_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericP debug!(?lifetimes); for (arg, duplicate) in std::iter::zip(lifetimes, ast_generics.params) { let hir::GenericArg::Lifetime(arg) = arg else { bug!() }; - let orig_region = >::ast_region_to_region(&icx, &arg, None); + let orig_region = icx.astconv().ast_region_to_region(&arg, None); if !matches!(orig_region.kind(), ty::ReEarlyBound(..)) { // Only early-bound regions can point to the original generic parameter. continue; @@ -527,14 +520,9 @@ pub(super) fn super_predicates_that_define_assoc_type( // Convert the bounds that follow the colon, e.g., `Bar + Zed` in `trait Foo: Bar + Zed`. let self_param_ty = tcx.types.self_param; let superbounds1 = if let Some(assoc_name) = assoc_name { - >::compute_bounds_that_match_assoc_type( - &icx, - self_param_ty, - bounds, - assoc_name, - ) + icx.astconv().compute_bounds_that_match_assoc_type(self_param_ty, bounds, assoc_name) } else { - >::compute_bounds(&icx, self_param_ty, bounds) + icx.astconv().compute_bounds(self_param_ty, bounds) }; let superbounds1 = superbounds1.predicates(); diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs index 2058832d5fdc..4e76615ac9e4 100644 --- a/compiler/rustc_hir_analysis/src/lib.rs +++ b/compiler/rustc_hir_analysis/src/lib.rs @@ -544,7 +544,7 @@ pub fn hir_ty_to_ty<'tcx>(tcx: TyCtxt<'tcx>, hir_ty: &hir::Ty<'_>) -> Ty<'tcx> { // scope. This is derived from the enclosing item-like thing. let env_def_id = tcx.hir().get_parent_item(hir_ty.hir_id); let item_cx = self::collect::ItemCtxt::new(tcx, env_def_id.to_def_id()); - >::ast_ty_to_ty(&item_cx, hir_ty) + item_cx.astconv().ast_ty_to_ty(hir_ty) } pub fn hir_trait_to_predicates<'tcx>( @@ -558,8 +558,7 @@ pub fn hir_trait_to_predicates<'tcx>( let env_def_id = tcx.hir().get_parent_item(hir_trait.hir_ref_id); let item_cx = self::collect::ItemCtxt::new(tcx, env_def_id.to_def_id()); let mut bounds = Bounds::default(); - let _ = >::instantiate_poly_trait_ref( - &item_cx, + let _ = &item_cx.astconv().instantiate_poly_trait_ref( hir_trait, DUMMY_SP, ty::BoundConstness::NotConst, diff --git a/compiler/rustc_hir_typeck/src/coercion.rs b/compiler/rustc_hir_typeck/src/coercion.rs index a0e086bc2610..7e1c0faa453a 100644 --- a/compiler/rustc_hir_typeck/src/coercion.rs +++ b/compiler/rustc_hir_typeck/src/coercion.rs @@ -1807,7 +1807,7 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> { // Get the return type. && let hir::TyKind::OpaqueDef(..) = ty.kind { - let ty = >::ast_ty_to_ty(fcx, ty); + let ty = fcx.astconv().ast_ty_to_ty( ty); // Get the `impl Trait`'s `DefId`. if let ty::Alias(ty::Opaque, ty::AliasTy { def_id, .. }) = ty.kind() // Get the `impl Trait`'s `Item` so that we can get its trait bounds and @@ -1866,7 +1866,7 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> { fn is_return_ty_unsized<'a>(&self, fcx: &FnCtxt<'a, 'tcx>, blk_id: hir::HirId) -> bool { if let Some((fn_decl, _)) = fcx.get_fn_decl(blk_id) && let hir::FnRetTy::Return(ty) = fn_decl.output - && let ty = >::ast_ty_to_ty(fcx, ty) + && let ty = fcx.astconv().ast_ty_to_ty( ty) && let ty::Dynamic(..) = ty.kind() { return true; diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 47c4b7d74319..006e49f8bf47 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -374,7 +374,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } pub fn to_ty(&self, ast_t: &hir::Ty<'_>) -> RawTy<'tcx> { - let t = >::ast_ty_to_ty(self, ast_t); + let t = self.astconv().ast_ty_to_ty(ast_t); self.register_wf_obligation(t.into(), ast_t.span, traits::WellFormed(None)); self.handle_raw_ty(ast_t.span, t) } @@ -777,7 +777,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // to be object-safe. // We manually call `register_wf_obligation` in the success path // below. - let ty = >::ast_ty_to_ty_in_path(self, qself); + let ty = self.astconv().ast_ty_to_ty_in_path(qself); (self.handle_raw_ty(span, ty), qself, segment) } QPath::LangItem(..) => { @@ -975,8 +975,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let path_segs = match res { Res::Local(_) | Res::SelfCtor(_) => vec![], - Res::Def(kind, def_id) => >::def_ids_for_value_path_segments( - self, + Res::Def(kind, def_id) => self.astconv().def_ids_for_value_path_segments( segments, self_ty.map(|ty| ty.raw), kind, @@ -1027,8 +1026,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // errors if type parameters are provided in an inappropriate place. let generic_segs: FxHashSet<_> = path_segs.iter().map(|PathSeg(_, index)| index).collect(); - let generics_has_err = >::prohibit_generics( - self, + let generics_has_err = self.astconv().prohibit_generics( segments.iter().enumerate().filter_map(|(index, seg)| { if !generic_segs.contains(&index) || is_alias_variant_ctor { Some(seg) @@ -1177,7 +1175,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ) -> ty::GenericArg<'tcx> { match (¶m.kind, arg) { (GenericParamDefKind::Lifetime, GenericArg::Lifetime(lt)) => { - >::ast_region_to_region(self.fcx, lt, Some(param)).into() + self.fcx.astconv().ast_region_to_region(lt, Some(param)).into() } (GenericParamDefKind::Type { .. }, GenericArg::Type(ty)) => { self.fcx.to_ty(ty).raw.into() diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 5075d9b893b3..b9e13fd20092 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -1664,15 +1664,15 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { match *qpath { QPath::Resolved(ref maybe_qself, ref path) => { let self_ty = maybe_qself.as_ref().map(|qself| self.to_ty(qself).raw); - let ty = >::res_to_ty(self, self_ty, path, true); + let ty = self.astconv().res_to_ty(self_ty, path, true); (path.res, self.handle_raw_ty(path_span, ty)) } QPath::TypeRelative(ref qself, ref segment) => { let ty = self.to_ty(qself); - let result = >::associated_path_to_ty( - self, hir_id, path_span, ty.raw, qself, segment, true, - ); + let result = self + .astconv() + .associated_path_to_ty(hir_id, path_span, ty.raw, qself, segment, true); let ty = result.map(|(ty, _, _)| ty).unwrap_or_else(|_| self.tcx().ty_error()); let ty = self.handle_raw_ty(path_span, ty); let result = result.map(|(_, kind, def_id)| (kind, def_id)); diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs index 6347b9a69a00..f40314078917 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs @@ -286,8 +286,7 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { poly_trait_ref, ); - let item_substs = >::create_substs_for_associated_item( - self, + let item_substs = self.astconv().create_substs_for_associated_item( span, item_def_id, item_segment, diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 91498265259d..93c48aa6022c 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs @@ -783,7 +783,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // are not, the expectation must have been caused by something else. debug!("suggest_missing_return_type: return type {:?} node {:?}", ty, ty.kind); let span = ty.span; - let ty = >::ast_ty_to_ty(self, ty); + let ty = self.astconv().ast_ty_to_ty(ty); debug!("suggest_missing_return_type: return type {:?}", ty); debug!("suggest_missing_return_type: expected type {:?}", ty); let bound_vars = self.tcx.late_bound_vars(fn_id); @@ -854,7 +854,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { .. }) => { // FIXME: Maybe these calls to `ast_ty_to_ty` can be removed (and the ones below) - let ty = >::ast_ty_to_ty(self, bounded_ty); + let ty = self.astconv().ast_ty_to_ty(bounded_ty); Some((ty, bounds)) } _ => None, @@ -892,7 +892,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let all_bounds_str = all_matching_bounds_strs.join(" + "); let ty_param_used_in_fn_params = fn_parameters.iter().any(|param| { - let ty = >::ast_ty_to_ty(self, param); + let ty = self.astconv().ast_ty_to_ty( param); matches!(ty.kind(), ty::Param(fn_param_ty_param) if expected_ty_as_param == fn_param_ty_param) }); @@ -946,7 +946,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } if let hir::FnRetTy::Return(ty) = fn_decl.output { - let ty = >::ast_ty_to_ty(self, ty); + let ty = self.astconv().ast_ty_to_ty(ty); let bound_vars = self.tcx.late_bound_vars(fn_id); let ty = self.tcx.erase_late_bound_regions(Binder::bind_with_vars(ty, bound_vars)); let ty = match self.tcx.asyncness(fn_id.owner) { @@ -1339,7 +1339,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { hir::Path { segments: [segment], .. }, )) | hir::ExprKind::Path(QPath::TypeRelative(ty, segment)) => { - let self_ty = >::ast_ty_to_ty(self, ty); + let self_ty = self.astconv().ast_ty_to_ty(ty); if let Ok(pick) = self.probe_for_name( Mode::Path, Ident::new(capitalized_name, segment.ident.span), diff --git a/compiler/rustc_hir_typeck/src/lib.rs b/compiler/rustc_hir_typeck/src/lib.rs index 69929589541f..7ddf9eaa4d89 100644 --- a/compiler/rustc_hir_typeck/src/lib.rs +++ b/compiler/rustc_hir_typeck/src/lib.rs @@ -205,7 +205,7 @@ fn typeck_with_fallback<'tcx>( if let Some(hir::FnSig { header, decl, .. }) = fn_sig { let fn_sig = if rustc_hir_analysis::collect::get_infer_ret_ty(&decl.output).is_some() { - >::ty_of_fn(&fcx, id, header.unsafety, header.abi, decl, None, None) + fcx.astconv().ty_of_fn(id, header.unsafety, header.abi, decl, None, None) } else { tcx.fn_sig(def_id) }; @@ -220,7 +220,7 @@ fn typeck_with_fallback<'tcx>( } else { let expected_type = body_ty .and_then(|ty| match ty.kind { - hir::TyKind::Infer => Some(>::ast_ty_to_ty(&fcx, ty)), + hir::TyKind::Infer => Some(fcx.astconv().ast_ty_to_ty(ty)), _ => None, }) .unwrap_or_else(|| match tcx.hir().get(id) { diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index 7d2ba1fd09df..ff9f5bca6b5e 100644 --- a/compiler/rustc_hir_typeck/src/method/confirm.rs +++ b/compiler/rustc_hir_typeck/src/method/confirm.rs @@ -369,8 +369,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { ) -> subst::GenericArg<'tcx> { match (¶m.kind, arg) { (GenericParamDefKind::Lifetime, GenericArg::Lifetime(lt)) => { - >::ast_region_to_region(self.cfcx.fcx, lt, Some(param)) - .into() + self.cfcx.fcx.astconv().ast_region_to_region(lt, Some(param)).into() } (GenericParamDefKind::Type { .. }, GenericArg::Type(ty)) => { self.cfcx.to_ty(ty).raw.into() From d642781708801d1227bb76deca803fda43ff8b37 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 11 Jan 2023 19:07:03 +0000 Subject: [PATCH 415/478] Make selfless `dyn AstConv` methods into toplevel functions --- .../src/astconv/generics.rs | 1198 ++++++++--------- .../rustc_hir_analysis/src/astconv/mod.rs | 17 +- .../rustc_hir_typeck/src/fn_ctxt/_impl.rs | 7 +- .../rustc_hir_typeck/src/method/confirm.rs | 7 +- 4 files changed, 610 insertions(+), 619 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/astconv/generics.rs b/compiler/rustc_hir_analysis/src/astconv/generics.rs index f64d65cc6ad7..ce3682a8f2d5 100644 --- a/compiler/rustc_hir_analysis/src/astconv/generics.rs +++ b/compiler/rustc_hir_analysis/src/astconv/generics.rs @@ -1,6 +1,6 @@ use super::IsMethodCall; use crate::astconv::{ - AstConv, CreateSubstsForGenericArgsCtxt, ExplicitLateBound, GenericArgCountMismatch, + CreateSubstsForGenericArgsCtxt, ExplicitLateBound, GenericArgCountMismatch, GenericArgCountResult, GenericArgPosition, }; use crate::errors::AssocTypeBindingNotAllowed; @@ -18,642 +18,624 @@ use rustc_session::lint::builtin::LATE_BOUND_LIFETIME_ARGUMENTS; use rustc_span::{symbol::kw, Span}; use smallvec::SmallVec; -impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { - /// Report an error that a generic argument did not match the generic parameter that was - /// expected. - fn generic_arg_mismatch_err( - tcx: TyCtxt<'_>, - arg: &GenericArg<'_>, - param: &GenericParamDef, - possible_ordering_error: bool, - help: Option<&str>, - ) { - let sess = tcx.sess; - let mut err = struct_span_err!( - sess, - arg.span(), - E0747, - "{} provided when a {} was expected", - arg.descr(), - param.kind.descr(), - ); +/// Report an error that a generic argument did not match the generic parameter that was +/// expected. +fn generic_arg_mismatch_err( + tcx: TyCtxt<'_>, + arg: &GenericArg<'_>, + param: &GenericParamDef, + possible_ordering_error: bool, + help: Option<&str>, +) { + let sess = tcx.sess; + let mut err = struct_span_err!( + sess, + arg.span(), + E0747, + "{} provided when a {} was expected", + arg.descr(), + param.kind.descr(), + ); - if let GenericParamDefKind::Const { .. } = param.kind { - if matches!(arg, GenericArg::Type(hir::Ty { kind: hir::TyKind::Infer, .. })) { - err.help("const arguments cannot yet be inferred with `_`"); - if sess.is_nightly_build() { - err.help( - "add `#![feature(generic_arg_infer)]` to the crate attributes to enable", - ); - } + if let GenericParamDefKind::Const { .. } = param.kind { + if matches!(arg, GenericArg::Type(hir::Ty { kind: hir::TyKind::Infer, .. })) { + err.help("const arguments cannot yet be inferred with `_`"); + if sess.is_nightly_build() { + err.help("add `#![feature(generic_arg_infer)]` to the crate attributes to enable"); } } - - let add_braces_suggestion = |arg: &GenericArg<'_>, err: &mut Diagnostic| { - let suggestions = vec![ - (arg.span().shrink_to_lo(), String::from("{ ")), - (arg.span().shrink_to_hi(), String::from(" }")), - ]; - err.multipart_suggestion( - "if this generic argument was intended as a const parameter, \ - surround it with braces", - suggestions, - Applicability::MaybeIncorrect, - ); - }; - - // Specific suggestion set for diagnostics - match (arg, ¶m.kind) { - ( - GenericArg::Type(hir::Ty { - kind: hir::TyKind::Path(rustc_hir::QPath::Resolved(_, path)), - .. - }), - GenericParamDefKind::Const { .. }, - ) => match path.res { - Res::Err => { - add_braces_suggestion(arg, &mut err); - err.set_primary_message( - "unresolved item provided when a constant was expected", - ) - .emit(); - return; - } - Res::Def(DefKind::TyParam, src_def_id) => { - if let Some(param_local_id) = param.def_id.as_local() { - let param_name = tcx.hir().ty_param_name(param_local_id); - let param_type = tcx.type_of(param.def_id); - if param_type.is_suggestable(tcx, false) { - err.span_suggestion( - tcx.def_span(src_def_id), - "consider changing this type parameter to be a `const` generic", - format!("const {}: {}", param_name, param_type), - Applicability::MaybeIncorrect, - ); - }; - } - } - _ => add_braces_suggestion(arg, &mut err), - }, - ( - GenericArg::Type(hir::Ty { kind: hir::TyKind::Path(_), .. }), - GenericParamDefKind::Const { .. }, - ) => add_braces_suggestion(arg, &mut err), - ( - GenericArg::Type(hir::Ty { kind: hir::TyKind::Array(_, len), .. }), - GenericParamDefKind::Const { .. }, - ) if tcx.type_of(param.def_id) == tcx.types.usize => { - let snippet = sess.source_map().span_to_snippet(tcx.hir().span(len.hir_id())); - if let Ok(snippet) = snippet { - err.span_suggestion( - arg.span(), - "array type provided where a `usize` was expected, try", - format!("{{ {} }}", snippet), - Applicability::MaybeIncorrect, - ); - } - } - (GenericArg::Const(cnst), GenericParamDefKind::Type { .. }) => { - let body = tcx.hir().body(cnst.value.body); - if let rustc_hir::ExprKind::Path(rustc_hir::QPath::Resolved(_, path)) = - body.value.kind - { - if let Res::Def(DefKind::Fn { .. }, id) = path.res { - err.help(&format!( - "`{}` is a function item, not a type", - tcx.item_name(id) - )); - err.help("function item types cannot be named directly"); - } - } - } - _ => {} - } - - let kind_ord = param.kind.to_ord(); - let arg_ord = arg.to_ord(); - - // This note is only true when generic parameters are strictly ordered by their kind. - if possible_ordering_error && kind_ord.cmp(&arg_ord) != core::cmp::Ordering::Equal { - let (first, last) = if kind_ord < arg_ord { - (param.kind.descr(), arg.descr()) - } else { - (arg.descr(), param.kind.descr()) - }; - err.note(&format!("{} arguments must be provided before {} arguments", first, last)); - if let Some(help) = help { - err.help(help); - } - } - - err.emit(); } - /// Creates the relevant generic argument substitutions - /// corresponding to a set of generic parameters. This is a - /// rather complex function. Let us try to explain the role - /// of each of its parameters: - /// - /// To start, we are given the `def_id` of the thing we are - /// creating the substitutions for, and a partial set of - /// substitutions `parent_substs`. In general, the substitutions - /// for an item begin with substitutions for all the "parents" of - /// that item -- e.g., for a method it might include the - /// parameters from the impl. - /// - /// Therefore, the method begins by walking down these parents, - /// starting with the outermost parent and proceed inwards until - /// it reaches `def_id`. For each parent `P`, it will check `parent_substs` - /// first to see if the parent's substitutions are listed in there. If so, - /// we can append those and move on. Otherwise, it invokes the - /// three callback functions: - /// - /// - `args_for_def_id`: given the `DefId` `P`, supplies back the - /// generic arguments that were given to that parent from within - /// the path; so e.g., if you have `::Bar`, the `DefId` - /// might refer to the trait `Foo`, and the arguments might be - /// `[T]`. The boolean value indicates whether to infer values - /// for arguments whose values were not explicitly provided. - /// - `provided_kind`: given the generic parameter and the value from `args_for_def_id`, - /// instantiate a `GenericArg`. - /// - `inferred_kind`: if no parameter was provided, and inference is enabled, then - /// creates a suitable inference variable. - pub fn create_substs_for_generic_args<'a>( - tcx: TyCtxt<'tcx>, - def_id: DefId, - parent_substs: &[subst::GenericArg<'tcx>], - has_self: bool, - self_ty: Option>, - arg_count: &GenericArgCountResult, - ctx: &mut impl CreateSubstsForGenericArgsCtxt<'a, 'tcx>, - ) -> SubstsRef<'tcx> { - // Collect the segments of the path; we need to substitute arguments - // for parameters throughout the entire path (wherever there are - // generic parameters). - let mut parent_defs = tcx.generics_of(def_id); - let count = parent_defs.count(); - let mut stack = vec![(def_id, parent_defs)]; - while let Some(def_id) = parent_defs.parent { - parent_defs = tcx.generics_of(def_id); - stack.push((def_id, parent_defs)); + let add_braces_suggestion = |arg: &GenericArg<'_>, err: &mut Diagnostic| { + let suggestions = vec![ + (arg.span().shrink_to_lo(), String::from("{ ")), + (arg.span().shrink_to_hi(), String::from(" }")), + ]; + err.multipart_suggestion( + "if this generic argument was intended as a const parameter, \ + surround it with braces", + suggestions, + Applicability::MaybeIncorrect, + ); + }; + + // Specific suggestion set for diagnostics + match (arg, ¶m.kind) { + ( + GenericArg::Type(hir::Ty { + kind: hir::TyKind::Path(rustc_hir::QPath::Resolved(_, path)), + .. + }), + GenericParamDefKind::Const { .. }, + ) => match path.res { + Res::Err => { + add_braces_suggestion(arg, &mut err); + err.set_primary_message("unresolved item provided when a constant was expected") + .emit(); + return; + } + Res::Def(DefKind::TyParam, src_def_id) => { + if let Some(param_local_id) = param.def_id.as_local() { + let param_name = tcx.hir().ty_param_name(param_local_id); + let param_type = tcx.type_of(param.def_id); + if param_type.is_suggestable(tcx, false) { + err.span_suggestion( + tcx.def_span(src_def_id), + "consider changing this type parameter to be a `const` generic", + format!("const {}: {}", param_name, param_type), + Applicability::MaybeIncorrect, + ); + }; + } + } + _ => add_braces_suggestion(arg, &mut err), + }, + ( + GenericArg::Type(hir::Ty { kind: hir::TyKind::Path(_), .. }), + GenericParamDefKind::Const { .. }, + ) => add_braces_suggestion(arg, &mut err), + ( + GenericArg::Type(hir::Ty { kind: hir::TyKind::Array(_, len), .. }), + GenericParamDefKind::Const { .. }, + ) if tcx.type_of(param.def_id) == tcx.types.usize => { + let snippet = sess.source_map().span_to_snippet(tcx.hir().span(len.hir_id())); + if let Ok(snippet) = snippet { + err.span_suggestion( + arg.span(), + "array type provided where a `usize` was expected, try", + format!("{{ {} }}", snippet), + Applicability::MaybeIncorrect, + ); + } + } + (GenericArg::Const(cnst), GenericParamDefKind::Type { .. }) => { + let body = tcx.hir().body(cnst.value.body); + if let rustc_hir::ExprKind::Path(rustc_hir::QPath::Resolved(_, path)) = body.value.kind + { + if let Res::Def(DefKind::Fn { .. }, id) = path.res { + err.help(&format!("`{}` is a function item, not a type", tcx.item_name(id))); + err.help("function item types cannot be named directly"); + } + } + } + _ => {} + } + + let kind_ord = param.kind.to_ord(); + let arg_ord = arg.to_ord(); + + // This note is only true when generic parameters are strictly ordered by their kind. + if possible_ordering_error && kind_ord.cmp(&arg_ord) != core::cmp::Ordering::Equal { + let (first, last) = if kind_ord < arg_ord { + (param.kind.descr(), arg.descr()) + } else { + (arg.descr(), param.kind.descr()) + }; + err.note(&format!("{} arguments must be provided before {} arguments", first, last)); + if let Some(help) = help { + err.help(help); + } + } + + err.emit(); +} + +/// Creates the relevant generic argument substitutions +/// corresponding to a set of generic parameters. This is a +/// rather complex function. Let us try to explain the role +/// of each of its parameters: +/// +/// To start, we are given the `def_id` of the thing we are +/// creating the substitutions for, and a partial set of +/// substitutions `parent_substs`. In general, the substitutions +/// for an item begin with substitutions for all the "parents" of +/// that item -- e.g., for a method it might include the +/// parameters from the impl. +/// +/// Therefore, the method begins by walking down these parents, +/// starting with the outermost parent and proceed inwards until +/// it reaches `def_id`. For each parent `P`, it will check `parent_substs` +/// first to see if the parent's substitutions are listed in there. If so, +/// we can append those and move on. Otherwise, it invokes the +/// three callback functions: +/// +/// - `args_for_def_id`: given the `DefId` `P`, supplies back the +/// generic arguments that were given to that parent from within +/// the path; so e.g., if you have `::Bar`, the `DefId` +/// might refer to the trait `Foo`, and the arguments might be +/// `[T]`. The boolean value indicates whether to infer values +/// for arguments whose values were not explicitly provided. +/// - `provided_kind`: given the generic parameter and the value from `args_for_def_id`, +/// instantiate a `GenericArg`. +/// - `inferred_kind`: if no parameter was provided, and inference is enabled, then +/// creates a suitable inference variable. +pub fn create_substs_for_generic_args<'tcx, 'a>( + tcx: TyCtxt<'tcx>, + def_id: DefId, + parent_substs: &[subst::GenericArg<'tcx>], + has_self: bool, + self_ty: Option>, + arg_count: &GenericArgCountResult, + ctx: &mut impl CreateSubstsForGenericArgsCtxt<'a, 'tcx>, +) -> SubstsRef<'tcx> { + // Collect the segments of the path; we need to substitute arguments + // for parameters throughout the entire path (wherever there are + // generic parameters). + let mut parent_defs = tcx.generics_of(def_id); + let count = parent_defs.count(); + let mut stack = vec![(def_id, parent_defs)]; + while let Some(def_id) = parent_defs.parent { + parent_defs = tcx.generics_of(def_id); + stack.push((def_id, parent_defs)); + } + + // We manually build up the substitution, rather than using convenience + // methods in `subst.rs`, so that we can iterate over the arguments and + // parameters in lock-step linearly, instead of trying to match each pair. + let mut substs: SmallVec<[subst::GenericArg<'tcx>; 8]> = SmallVec::with_capacity(count); + // Iterate over each segment of the path. + while let Some((def_id, defs)) = stack.pop() { + let mut params = defs.params.iter().peekable(); + + // If we have already computed substitutions for parents, we can use those directly. + while let Some(¶m) = params.peek() { + if let Some(&kind) = parent_substs.get(param.index as usize) { + substs.push(kind); + params.next(); + } else { + break; + } } - // We manually build up the substitution, rather than using convenience - // methods in `subst.rs`, so that we can iterate over the arguments and - // parameters in lock-step linearly, instead of trying to match each pair. - let mut substs: SmallVec<[subst::GenericArg<'tcx>; 8]> = SmallVec::with_capacity(count); - // Iterate over each segment of the path. - while let Some((def_id, defs)) = stack.pop() { - let mut params = defs.params.iter().peekable(); - - // If we have already computed substitutions for parents, we can use those directly. - while let Some(¶m) = params.peek() { - if let Some(&kind) = parent_substs.get(param.index as usize) { - substs.push(kind); - params.next(); - } else { - break; - } - } - - // `Self` is handled first, unless it's been handled in `parent_substs`. - if has_self { - if let Some(¶m) = params.peek() { - if param.index == 0 { - if let GenericParamDefKind::Type { .. } = param.kind { - substs.push( - self_ty - .map(|ty| ty.into()) - .unwrap_or_else(|| ctx.inferred_kind(None, param, true)), - ); - params.next(); - } - } - } - } - - // Check whether this segment takes generic arguments and the user has provided any. - let (generic_args, infer_args) = ctx.args_for_def_id(def_id); - - let args_iter = generic_args.iter().flat_map(|generic_args| generic_args.args.iter()); - let mut args = args_iter.clone().peekable(); - - // If we encounter a type or const when we expect a lifetime, we infer the lifetimes. - // If we later encounter a lifetime, we know that the arguments were provided in the - // wrong order. `force_infer_lt` records the type or const that forced lifetimes to be - // inferred, so we can use it for diagnostics later. - let mut force_infer_lt = None; - - loop { - // We're going to iterate through the generic arguments that the user - // provided, matching them with the generic parameters we expect. - // Mismatches can occur as a result of elided lifetimes, or for malformed - // input. We try to handle both sensibly. - match (args.peek(), params.peek()) { - (Some(&arg), Some(¶m)) => { - match (arg, ¶m.kind, arg_count.explicit_late_bound) { - (GenericArg::Lifetime(_), GenericParamDefKind::Lifetime, _) - | ( - GenericArg::Type(_) | GenericArg::Infer(_), - GenericParamDefKind::Type { .. }, - _, - ) - | ( - GenericArg::Const(_) | GenericArg::Infer(_), - GenericParamDefKind::Const { .. }, - _, - ) => { - substs.push(ctx.provided_kind(param, arg)); - args.next(); - params.next(); - } - ( - GenericArg::Infer(_) | GenericArg::Type(_) | GenericArg::Const(_), - GenericParamDefKind::Lifetime, - _, - ) => { - // We expected a lifetime argument, but got a type or const - // argument. That means we're inferring the lifetimes. - substs.push(ctx.inferred_kind(None, param, infer_args)); - force_infer_lt = Some((arg, param)); - params.next(); - } - (GenericArg::Lifetime(_), _, ExplicitLateBound::Yes) => { - // We've come across a lifetime when we expected something else in - // the presence of explicit late bounds. This is most likely - // due to the presence of the explicit bound so we're just going to - // ignore it. - args.next(); - } - (_, _, _) => { - // We expected one kind of parameter, but the user provided - // another. This is an error. However, if we already know that - // the arguments don't match up with the parameters, we won't issue - // an additional error, as the user already knows what's wrong. - if arg_count.correct.is_ok() { - // We're going to iterate over the parameters to sort them out, and - // show that order to the user as a possible order for the parameters - let mut param_types_present = defs - .params - .iter() - .map(|param| (param.kind.to_ord(), param.clone())) - .collect::>(); - param_types_present.sort_by_key(|(ord, _)| *ord); - let (mut param_types_present, ordered_params): ( - Vec, - Vec, - ) = param_types_present.into_iter().unzip(); - param_types_present.dedup(); - - Self::generic_arg_mismatch_err( - tcx, - arg, - param, - !args_iter.clone().is_sorted_by_key(|arg| arg.to_ord()), - Some(&format!( - "reorder the arguments: {}: `<{}>`", - param_types_present - .into_iter() - .map(|ord| format!("{}s", ord)) - .collect::>() - .join(", then "), - ordered_params - .into_iter() - .filter_map(|param| { - if param.name == kw::SelfUpper { - None - } else { - Some(param.name.to_string()) - } - }) - .collect::>() - .join(", ") - )), - ); - } - - // We've reported the error, but we want to make sure that this - // problem doesn't bubble down and create additional, irrelevant - // errors. In this case, we're simply going to ignore the argument - // and any following arguments. The rest of the parameters will be - // inferred. - while args.next().is_some() {} - } - } - } - - (Some(&arg), None) => { - // We should never be able to reach this point with well-formed input. - // There are three situations in which we can encounter this issue. - // - // 1. The number of arguments is incorrect. In this case, an error - // will already have been emitted, and we can ignore it. - // 2. There are late-bound lifetime parameters present, yet the - // lifetime arguments have also been explicitly specified by the - // user. - // 3. We've inferred some lifetimes, which have been provided later (i.e. - // after a type or const). We want to throw an error in this case. - - if arg_count.correct.is_ok() - && arg_count.explicit_late_bound == ExplicitLateBound::No - { - let kind = arg.descr(); - assert_eq!(kind, "lifetime"); - let (provided_arg, param) = - force_infer_lt.expect("lifetimes ought to have been inferred"); - Self::generic_arg_mismatch_err(tcx, provided_arg, param, false, None); - } - - break; - } - - (None, Some(¶m)) => { - // If there are fewer arguments than parameters, it means - // we're inferring the remaining arguments. - substs.push(ctx.inferred_kind(Some(&substs), param, infer_args)); + // `Self` is handled first, unless it's been handled in `parent_substs`. + if has_self { + if let Some(¶m) = params.peek() { + if param.index == 0 { + if let GenericParamDefKind::Type { .. } = param.kind { + substs.push( + self_ty + .map(|ty| ty.into()) + .unwrap_or_else(|| ctx.inferred_kind(None, param, true)), + ); params.next(); } - - (None, None) => break, } } } - tcx.intern_substs(&substs) + // Check whether this segment takes generic arguments and the user has provided any. + let (generic_args, infer_args) = ctx.args_for_def_id(def_id); + + let args_iter = generic_args.iter().flat_map(|generic_args| generic_args.args.iter()); + let mut args = args_iter.clone().peekable(); + + // If we encounter a type or const when we expect a lifetime, we infer the lifetimes. + // If we later encounter a lifetime, we know that the arguments were provided in the + // wrong order. `force_infer_lt` records the type or const that forced lifetimes to be + // inferred, so we can use it for diagnostics later. + let mut force_infer_lt = None; + + loop { + // We're going to iterate through the generic arguments that the user + // provided, matching them with the generic parameters we expect. + // Mismatches can occur as a result of elided lifetimes, or for malformed + // input. We try to handle both sensibly. + match (args.peek(), params.peek()) { + (Some(&arg), Some(¶m)) => { + match (arg, ¶m.kind, arg_count.explicit_late_bound) { + (GenericArg::Lifetime(_), GenericParamDefKind::Lifetime, _) + | ( + GenericArg::Type(_) | GenericArg::Infer(_), + GenericParamDefKind::Type { .. }, + _, + ) + | ( + GenericArg::Const(_) | GenericArg::Infer(_), + GenericParamDefKind::Const { .. }, + _, + ) => { + substs.push(ctx.provided_kind(param, arg)); + args.next(); + params.next(); + } + ( + GenericArg::Infer(_) | GenericArg::Type(_) | GenericArg::Const(_), + GenericParamDefKind::Lifetime, + _, + ) => { + // We expected a lifetime argument, but got a type or const + // argument. That means we're inferring the lifetimes. + substs.push(ctx.inferred_kind(None, param, infer_args)); + force_infer_lt = Some((arg, param)); + params.next(); + } + (GenericArg::Lifetime(_), _, ExplicitLateBound::Yes) => { + // We've come across a lifetime when we expected something else in + // the presence of explicit late bounds. This is most likely + // due to the presence of the explicit bound so we're just going to + // ignore it. + args.next(); + } + (_, _, _) => { + // We expected one kind of parameter, but the user provided + // another. This is an error. However, if we already know that + // the arguments don't match up with the parameters, we won't issue + // an additional error, as the user already knows what's wrong. + if arg_count.correct.is_ok() { + // We're going to iterate over the parameters to sort them out, and + // show that order to the user as a possible order for the parameters + let mut param_types_present = defs + .params + .iter() + .map(|param| (param.kind.to_ord(), param.clone())) + .collect::>(); + param_types_present.sort_by_key(|(ord, _)| *ord); + let (mut param_types_present, ordered_params): ( + Vec, + Vec, + ) = param_types_present.into_iter().unzip(); + param_types_present.dedup(); + + generic_arg_mismatch_err( + tcx, + arg, + param, + !args_iter.clone().is_sorted_by_key(|arg| arg.to_ord()), + Some(&format!( + "reorder the arguments: {}: `<{}>`", + param_types_present + .into_iter() + .map(|ord| format!("{}s", ord)) + .collect::>() + .join(", then "), + ordered_params + .into_iter() + .filter_map(|param| { + if param.name == kw::SelfUpper { + None + } else { + Some(param.name.to_string()) + } + }) + .collect::>() + .join(", ") + )), + ); + } + + // We've reported the error, but we want to make sure that this + // problem doesn't bubble down and create additional, irrelevant + // errors. In this case, we're simply going to ignore the argument + // and any following arguments. The rest of the parameters will be + // inferred. + while args.next().is_some() {} + } + } + } + + (Some(&arg), None) => { + // We should never be able to reach this point with well-formed input. + // There are three situations in which we can encounter this issue. + // + // 1. The number of arguments is incorrect. In this case, an error + // will already have been emitted, and we can ignore it. + // 2. There are late-bound lifetime parameters present, yet the + // lifetime arguments have also been explicitly specified by the + // user. + // 3. We've inferred some lifetimes, which have been provided later (i.e. + // after a type or const). We want to throw an error in this case. + + if arg_count.correct.is_ok() + && arg_count.explicit_late_bound == ExplicitLateBound::No + { + let kind = arg.descr(); + assert_eq!(kind, "lifetime"); + let (provided_arg, param) = + force_infer_lt.expect("lifetimes ought to have been inferred"); + generic_arg_mismatch_err(tcx, provided_arg, param, false, None); + } + + break; + } + + (None, Some(¶m)) => { + // If there are fewer arguments than parameters, it means + // we're inferring the remaining arguments. + substs.push(ctx.inferred_kind(Some(&substs), param, infer_args)); + params.next(); + } + + (None, None) => break, + } + } } - /// Checks that the correct number of generic arguments have been provided. - /// Used specifically for function calls. - pub fn check_generic_arg_count_for_call( - tcx: TyCtxt<'_>, - span: Span, - def_id: DefId, - generics: &ty::Generics, - seg: &hir::PathSegment<'_>, - is_method_call: IsMethodCall, - ) -> GenericArgCountResult { - let empty_args = hir::GenericArgs::none(); - let gen_args = seg.args.unwrap_or(&empty_args); - let gen_pos = if is_method_call == IsMethodCall::Yes { - GenericArgPosition::MethodCall - } else { - GenericArgPosition::Value - }; - let has_self = generics.parent.is_none() && generics.has_self; + tcx.intern_substs(&substs) +} - Self::check_generic_arg_count( - tcx, - span, - def_id, - seg, - generics, - gen_args, - gen_pos, - has_self, - seg.infer_args, - ) - } +/// Checks that the correct number of generic arguments have been provided. +/// Used specifically for function calls. +pub fn check_generic_arg_count_for_call( + tcx: TyCtxt<'_>, + span: Span, + def_id: DefId, + generics: &ty::Generics, + seg: &hir::PathSegment<'_>, + is_method_call: IsMethodCall, +) -> GenericArgCountResult { + let empty_args = hir::GenericArgs::none(); + let gen_args = seg.args.unwrap_or(&empty_args); + let gen_pos = if is_method_call == IsMethodCall::Yes { + GenericArgPosition::MethodCall + } else { + GenericArgPosition::Value + }; + let has_self = generics.parent.is_none() && generics.has_self; - /// Checks that the correct number of generic arguments have been provided. - /// This is used both for datatypes and function calls. - #[instrument(skip(tcx, gen_pos), level = "debug")] - pub(crate) fn check_generic_arg_count( - tcx: TyCtxt<'_>, - span: Span, - def_id: DefId, - seg: &hir::PathSegment<'_>, - gen_params: &ty::Generics, - gen_args: &hir::GenericArgs<'_>, - gen_pos: GenericArgPosition, - has_self: bool, - infer_args: bool, - ) -> GenericArgCountResult { - let default_counts = gen_params.own_defaults(); - let param_counts = gen_params.own_counts(); + check_generic_arg_count( + tcx, + span, + def_id, + seg, + generics, + gen_args, + gen_pos, + has_self, + seg.infer_args, + ) +} - // Subtracting from param count to ensure type params synthesized from `impl Trait` - // cannot be explicitly specified. - let synth_type_param_count = gen_params - .params - .iter() - .filter(|param| { - matches!(param.kind, ty::GenericParamDefKind::Type { synthetic: true, .. }) - }) - .count(); - let named_type_param_count = - param_counts.types - has_self as usize - synth_type_param_count; - let infer_lifetimes = - (gen_pos != GenericArgPosition::Type || infer_args) && !gen_args.has_lifetime_params(); +/// Checks that the correct number of generic arguments have been provided. +/// This is used both for datatypes and function calls. +#[instrument(skip(tcx, gen_pos), level = "debug")] +pub(crate) fn check_generic_arg_count( + tcx: TyCtxt<'_>, + span: Span, + def_id: DefId, + seg: &hir::PathSegment<'_>, + gen_params: &ty::Generics, + gen_args: &hir::GenericArgs<'_>, + gen_pos: GenericArgPosition, + has_self: bool, + infer_args: bool, +) -> GenericArgCountResult { + let default_counts = gen_params.own_defaults(); + let param_counts = gen_params.own_counts(); - if gen_pos != GenericArgPosition::Type && let Some(b) = gen_args.bindings.first() { - Self::prohibit_assoc_ty_binding(tcx, b.span); + // Subtracting from param count to ensure type params synthesized from `impl Trait` + // cannot be explicitly specified. + let synth_type_param_count = gen_params + .params + .iter() + .filter(|param| matches!(param.kind, ty::GenericParamDefKind::Type { synthetic: true, .. })) + .count(); + let named_type_param_count = param_counts.types - has_self as usize - synth_type_param_count; + let infer_lifetimes = + (gen_pos != GenericArgPosition::Type || infer_args) && !gen_args.has_lifetime_params(); + + if gen_pos != GenericArgPosition::Type && let Some(b) = gen_args.bindings.first() { + prohibit_assoc_ty_binding(tcx, b.span); } - let explicit_late_bound = - Self::prohibit_explicit_late_bound_lifetimes(tcx, gen_params, gen_args, gen_pos); + let explicit_late_bound = + prohibit_explicit_late_bound_lifetimes(tcx, gen_params, gen_args, gen_pos); - let mut invalid_args = vec![]; + let mut invalid_args = vec![]; - let mut check_lifetime_args = - |min_expected_args: usize, - max_expected_args: usize, - provided_args: usize, - late_bounds_ignore: bool| { - if (min_expected_args..=max_expected_args).contains(&provided_args) { - return Ok(()); - } + let mut check_lifetime_args = |min_expected_args: usize, + max_expected_args: usize, + provided_args: usize, + late_bounds_ignore: bool| { + if (min_expected_args..=max_expected_args).contains(&provided_args) { + return Ok(()); + } - if late_bounds_ignore { - return Ok(()); - } + if late_bounds_ignore { + return Ok(()); + } - if provided_args > max_expected_args { - invalid_args.extend( - gen_args.args[max_expected_args..provided_args] - .iter() - .map(|arg| arg.span()), - ); - }; - - let gen_args_info = if provided_args > min_expected_args { - invalid_args.extend( - gen_args.args[min_expected_args..provided_args] - .iter() - .map(|arg| arg.span()), - ); - let num_redundant_args = provided_args - min_expected_args; - GenericArgsInfo::ExcessLifetimes { num_redundant_args } - } else { - let num_missing_args = min_expected_args - provided_args; - GenericArgsInfo::MissingLifetimes { num_missing_args } - }; - - let reported = WrongNumberOfGenericArgs::new( - tcx, - gen_args_info, - seg, - gen_params, - has_self as usize, - gen_args, - def_id, - ) - .diagnostic() - .emit(); - - Err(reported) - }; - - let min_expected_lifetime_args = if infer_lifetimes { 0 } else { param_counts.lifetimes }; - let max_expected_lifetime_args = param_counts.lifetimes; - let num_provided_lifetime_args = gen_args.num_lifetime_params(); - - let lifetimes_correct = check_lifetime_args( - min_expected_lifetime_args, - max_expected_lifetime_args, - num_provided_lifetime_args, - explicit_late_bound == ExplicitLateBound::Yes, - ); - - let mut check_types_and_consts = |expected_min, - expected_max, - expected_max_with_synth, - provided, - params_offset, - args_offset| { - debug!( - ?expected_min, - ?expected_max, - ?provided, - ?params_offset, - ?args_offset, - "check_types_and_consts" + if provided_args > max_expected_args { + invalid_args.extend( + gen_args.args[max_expected_args..provided_args].iter().map(|arg| arg.span()), ); - if (expected_min..=expected_max).contains(&provided) { - return Ok(()); - } - - let num_default_params = expected_max - expected_min; - - let gen_args_info = if provided > expected_max { - invalid_args.extend( - gen_args.args[args_offset + expected_max..args_offset + provided] - .iter() - .map(|arg| arg.span()), - ); - let num_redundant_args = provided - expected_max; - - // Provide extra note if synthetic arguments like `impl Trait` are specified. - let synth_provided = provided <= expected_max_with_synth; - - GenericArgsInfo::ExcessTypesOrConsts { - num_redundant_args, - num_default_params, - args_offset, - synth_provided, - } - } else { - let num_missing_args = expected_max - provided; - - GenericArgsInfo::MissingTypesOrConsts { - num_missing_args, - num_default_params, - args_offset, - } - }; - - debug!(?gen_args_info); - - let reported = WrongNumberOfGenericArgs::new( - tcx, - gen_args_info, - seg, - gen_params, - params_offset, - gen_args, - def_id, - ) - .diagnostic() - .emit_unless(gen_args.has_err()); - - Err(reported) }; - let args_correct = { - let expected_min = if infer_args { - 0 - } else { - param_counts.consts + named_type_param_count - - default_counts.types - - default_counts.consts - }; - debug!(?expected_min); - debug!(arg_counts.lifetimes=?gen_args.num_lifetime_params()); - - check_types_and_consts( - expected_min, - param_counts.consts + named_type_param_count, - param_counts.consts + named_type_param_count + synth_type_param_count, - gen_args.num_generic_params(), - param_counts.lifetimes + has_self as usize, - gen_args.num_lifetime_params(), - ) - }; - - GenericArgCountResult { - explicit_late_bound, - correct: lifetimes_correct.and(args_correct).map_err(|reported| { - GenericArgCountMismatch { reported: Some(reported), invalid_args } - }), - } - } - - /// Emits an error regarding forbidden type binding associations - pub fn prohibit_assoc_ty_binding(tcx: TyCtxt<'_>, span: Span) { - tcx.sess.emit_err(AssocTypeBindingNotAllowed { span }); - } - - /// Prohibits explicit lifetime arguments if late-bound lifetime parameters - /// are present. This is used both for datatypes and function calls. - pub(crate) fn prohibit_explicit_late_bound_lifetimes( - tcx: TyCtxt<'_>, - def: &ty::Generics, - args: &hir::GenericArgs<'_>, - position: GenericArgPosition, - ) -> ExplicitLateBound { - let param_counts = def.own_counts(); - let infer_lifetimes = position != GenericArgPosition::Type && !args.has_lifetime_params(); - - if infer_lifetimes { - return ExplicitLateBound::No; - } - - if let Some(span_late) = def.has_late_bound_regions { - let msg = "cannot specify lifetime arguments explicitly \ - if late bound lifetime parameters are present"; - let note = "the late bound lifetime parameter is introduced here"; - let span = args.args[0].span(); - - if position == GenericArgPosition::Value - && args.num_lifetime_params() != param_counts.lifetimes - { - let mut err = tcx.sess.struct_span_err(span, msg); - err.span_note(span_late, note); - err.emit(); - } else { - let mut multispan = MultiSpan::from_span(span); - multispan.push_span_label(span_late, note); - tcx.struct_span_lint_hir( - LATE_BOUND_LIFETIME_ARGUMENTS, - args.args[0].hir_id(), - multispan, - msg, - |lint| lint, - ); - } - - ExplicitLateBound::Yes + let gen_args_info = if provided_args > min_expected_args { + invalid_args.extend( + gen_args.args[min_expected_args..provided_args].iter().map(|arg| arg.span()), + ); + let num_redundant_args = provided_args - min_expected_args; + GenericArgsInfo::ExcessLifetimes { num_redundant_args } } else { - ExplicitLateBound::No + let num_missing_args = min_expected_args - provided_args; + GenericArgsInfo::MissingLifetimes { num_missing_args } + }; + + let reported = WrongNumberOfGenericArgs::new( + tcx, + gen_args_info, + seg, + gen_params, + has_self as usize, + gen_args, + def_id, + ) + .diagnostic() + .emit(); + + Err(reported) + }; + + let min_expected_lifetime_args = if infer_lifetimes { 0 } else { param_counts.lifetimes }; + let max_expected_lifetime_args = param_counts.lifetimes; + let num_provided_lifetime_args = gen_args.num_lifetime_params(); + + let lifetimes_correct = check_lifetime_args( + min_expected_lifetime_args, + max_expected_lifetime_args, + num_provided_lifetime_args, + explicit_late_bound == ExplicitLateBound::Yes, + ); + + let mut check_types_and_consts = |expected_min, + expected_max, + expected_max_with_synth, + provided, + params_offset, + args_offset| { + debug!( + ?expected_min, + ?expected_max, + ?provided, + ?params_offset, + ?args_offset, + "check_types_and_consts" + ); + if (expected_min..=expected_max).contains(&provided) { + return Ok(()); } + + let num_default_params = expected_max - expected_min; + + let gen_args_info = if provided > expected_max { + invalid_args.extend( + gen_args.args[args_offset + expected_max..args_offset + provided] + .iter() + .map(|arg| arg.span()), + ); + let num_redundant_args = provided - expected_max; + + // Provide extra note if synthetic arguments like `impl Trait` are specified. + let synth_provided = provided <= expected_max_with_synth; + + GenericArgsInfo::ExcessTypesOrConsts { + num_redundant_args, + num_default_params, + args_offset, + synth_provided, + } + } else { + let num_missing_args = expected_max - provided; + + GenericArgsInfo::MissingTypesOrConsts { + num_missing_args, + num_default_params, + args_offset, + } + }; + + debug!(?gen_args_info); + + let reported = WrongNumberOfGenericArgs::new( + tcx, + gen_args_info, + seg, + gen_params, + params_offset, + gen_args, + def_id, + ) + .diagnostic() + .emit_unless(gen_args.has_err()); + + Err(reported) + }; + + let args_correct = { + let expected_min = if infer_args { + 0 + } else { + param_counts.consts + named_type_param_count + - default_counts.types + - default_counts.consts + }; + debug!(?expected_min); + debug!(arg_counts.lifetimes=?gen_args.num_lifetime_params()); + + check_types_and_consts( + expected_min, + param_counts.consts + named_type_param_count, + param_counts.consts + named_type_param_count + synth_type_param_count, + gen_args.num_generic_params(), + param_counts.lifetimes + has_self as usize, + gen_args.num_lifetime_params(), + ) + }; + + GenericArgCountResult { + explicit_late_bound, + correct: lifetimes_correct + .and(args_correct) + .map_err(|reported| GenericArgCountMismatch { reported: Some(reported), invalid_args }), + } +} + +/// Emits an error regarding forbidden type binding associations +pub fn prohibit_assoc_ty_binding(tcx: TyCtxt<'_>, span: Span) { + tcx.sess.emit_err(AssocTypeBindingNotAllowed { span }); +} + +/// Prohibits explicit lifetime arguments if late-bound lifetime parameters +/// are present. This is used both for datatypes and function calls. +pub(crate) fn prohibit_explicit_late_bound_lifetimes( + tcx: TyCtxt<'_>, + def: &ty::Generics, + args: &hir::GenericArgs<'_>, + position: GenericArgPosition, +) -> ExplicitLateBound { + let param_counts = def.own_counts(); + let infer_lifetimes = position != GenericArgPosition::Type && !args.has_lifetime_params(); + + if infer_lifetimes { + return ExplicitLateBound::No; + } + + if let Some(span_late) = def.has_late_bound_regions { + let msg = "cannot specify lifetime arguments explicitly \ + if late bound lifetime parameters are present"; + let note = "the late bound lifetime parameter is introduced here"; + let span = args.args[0].span(); + + if position == GenericArgPosition::Value + && args.num_lifetime_params() != param_counts.lifetimes + { + let mut err = tcx.sess.struct_span_err(span, msg); + err.span_note(span_late, note); + err.emit(); + } else { + let mut multispan = MultiSpan::from_span(span); + multispan.push_span_label(span_late, note); + tcx.struct_span_lint_hir( + LATE_BOUND_LIFETIME_ARGUMENTS, + args.args[0].hir_id(), + multispan, + msg, + |lint| lint, + ); + } + + ExplicitLateBound::Yes + } else { + ExplicitLateBound::No } } diff --git a/compiler/rustc_hir_analysis/src/astconv/mod.rs b/compiler/rustc_hir_analysis/src/astconv/mod.rs index 3a284aecb667..9fa0e6e8eaa6 100644 --- a/compiler/rustc_hir_analysis/src/astconv/mod.rs +++ b/compiler/rustc_hir_analysis/src/astconv/mod.rs @@ -3,8 +3,11 @@ //! instance of `AstConv`. mod errors; -mod generics; +pub mod generics; +use crate::astconv::generics::{ + check_generic_arg_count, create_substs_for_generic_args, prohibit_assoc_ty_binding, +}; use crate::bounds::Bounds; use crate::collect::HirPlaceholderCollector; use crate::errors::{ @@ -286,7 +289,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { ty::BoundConstness::NotConst, ); if let Some(b) = item_segment.args().bindings.first() { - Self::prohibit_assoc_ty_binding(self.tcx(), b.span); + prohibit_assoc_ty_binding(self.tcx(), b.span); } substs @@ -356,7 +359,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { assert!(self_ty.is_none()); } - let arg_count = Self::check_generic_arg_count( + let arg_count = check_generic_arg_count( tcx, span, def_id, @@ -531,7 +534,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { inferred_params: vec![], infer_args, }; - let substs = Self::create_substs_for_generic_args( + let substs = create_substs_for_generic_args( tcx, def_id, parent_substs, @@ -617,7 +620,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { ); if let Some(b) = item_segment.args().bindings.first() { - Self::prohibit_assoc_ty_binding(self.tcx(), b.span); + prohibit_assoc_ty_binding(self.tcx(), b.span); } args @@ -811,7 +814,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { constness, ); if let Some(b) = trait_segment.args().bindings.first() { - Self::prohibit_assoc_ty_binding(self.tcx(), b.span); + prohibit_assoc_ty_binding(self.tcx(), b.span); } self.tcx().mk_trait_ref(trait_def_id, substs) } @@ -2308,7 +2311,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { for segment in segments { // Only emit the first error to avoid overloading the user with error messages. if let Some(b) = segment.args().bindings.first() { - Self::prohibit_assoc_ty_binding(self.tcx(), b.span); + prohibit_assoc_ty_binding(self.tcx(), b.span); return true; } } diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs index 006e49f8bf47..8570715b41e5 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs @@ -10,6 +10,9 @@ use rustc_hir::def::{CtorOf, DefKind, Res}; use rustc_hir::def_id::DefId; use rustc_hir::lang_items::LangItem; use rustc_hir::{ExprKind, GenericArg, Node, QPath}; +use rustc_hir_analysis::astconv::generics::{ + check_generic_arg_count_for_call, create_substs_for_generic_args, +}; use rustc_hir_analysis::astconv::{ AstConv, CreateSubstsForGenericArgsCtxt, ExplicitLateBound, GenericArgCountMismatch, GenericArgCountResult, IsMethodCall, PathSeg, @@ -1067,7 +1070,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // parameter internally, but we don't allow users to specify the // parameter's value explicitly, so we have to do some error- // checking here. - let arg_count = >::check_generic_arg_count_for_call( + let arg_count = check_generic_arg_count_for_call( tcx, span, def_id, @@ -1233,7 +1236,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } let substs_raw = self_ctor_substs.unwrap_or_else(|| { - >::create_substs_for_generic_args( + create_substs_for_generic_args( tcx, def_id, &[], diff --git a/compiler/rustc_hir_typeck/src/method/confirm.rs b/compiler/rustc_hir_typeck/src/method/confirm.rs index ff9f5bca6b5e..4a33a791e1b7 100644 --- a/compiler/rustc_hir_typeck/src/method/confirm.rs +++ b/compiler/rustc_hir_typeck/src/method/confirm.rs @@ -4,6 +4,9 @@ use crate::{callee, FnCtxt}; use rustc_hir as hir; use rustc_hir::def_id::DefId; use rustc_hir::GenericArg; +use rustc_hir_analysis::astconv::generics::{ + check_generic_arg_count_for_call, create_substs_for_generic_args, +}; use rustc_hir_analysis::astconv::{AstConv, CreateSubstsForGenericArgsCtxt, IsMethodCall}; use rustc_infer::infer::{self, InferOk}; use rustc_middle::traits::{ObligationCauseCode, UnifyReceiverContext}; @@ -331,7 +334,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { // variables. let generics = self.tcx.generics_of(pick.item.def_id); - let arg_count_correct = >::check_generic_arg_count_for_call( + let arg_count_correct = check_generic_arg_count_for_call( self.tcx, self.span, pick.item.def_id, @@ -398,7 +401,7 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> { } } - let substs = >::create_substs_for_generic_args( + let substs = create_substs_for_generic_args( self.tcx, pick.item.def_id, parent_substs, From 0d834d9523930293e4d9755e82f064b835791785 Mon Sep 17 00:00:00 2001 From: DebugSteven Date: Wed, 11 Jan 2023 12:13:35 -0700 Subject: [PATCH 416/478] keep --wrapper-version argument in x --- src/tools/x/src/main.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/tools/x/src/main.rs b/src/tools/x/src/main.rs index f07ff43efe98..01f7187851e3 100644 --- a/src/tools/x/src/main.rs +++ b/src/tools/x/src/main.rs @@ -52,6 +52,14 @@ fn exec_or_status(command: &mut Command) -> io::Result { } fn main() { + match env::args().skip(1).next().as_deref() { + Some("--wrapper-version") => { + let version = env!("CARGO_PKG_VERSION"); + println!("{}", version); + return; + } + _ => {} + } let current = match env::current_dir() { Ok(dir) => dir, Err(err) => { From fb5d2153473b8a61e8697d05da10fc37d849fb80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Wed, 11 Jan 2023 03:07:14 +0000 Subject: [PATCH 417/478] Conserve cause of `ImplDerivedObligation` in E0599 CC #86377. --- compiler/rustc_hir_typeck/src/method/probe.rs | 18 ++++- .../rustc_hir_typeck/src/method/suggest.rs | 41 ++++++------ .../generic_const_exprs/issue-69654.stderr | 10 ++- .../generic_const_exprs/issue-80742.stderr | 13 +++- tests/ui/derives/issue-91492.stderr | 9 ++- tests/ui/derives/issue-91550.stderr | 35 ++++++++-- .../method-unsatified-assoc-type-predicate.rs | 2 +- tests/ui/impl-trait/issues/issue-62742.stderr | 9 ++- ...ethod-not-found-generic-arg-elision.stderr | 17 ++++- .../derive-trait-for-method-call.stderr | 67 ++++++++++++++++--- 10 files changed, 171 insertions(+), 50 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index 5d8383170f0d..63067deb7b07 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -1556,7 +1556,23 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { // Convert the bounds into obligations. let impl_obligations = traits::predicates_for_generics( - |_, _| cause.clone(), + |_idx, span| { + let misc = traits::ObligationCause::misc(span, self.body_id); + let parent_trait_pred = ty::Binder::dummy(ty::TraitPredicate { + trait_ref: ty::TraitRef::from_method(self.tcx, impl_def_id, substs), + constness: ty::BoundConstness::NotConst, + polarity: ty::ImplPolarity::Positive, + }); + misc.derived_cause(parent_trait_pred, |derived| { + traits::ImplDerivedObligation(Box::new( + traits::ImplDerivedObligationCause { + derived, + impl_def_id, + span, + }, + )) + }) + }, self.param_env, impl_bounds, ); diff --git a/compiler/rustc_hir_typeck/src/method/suggest.rs b/compiler/rustc_hir_typeck/src/method/suggest.rs index 62e80659486a..8c39e4413c53 100644 --- a/compiler/rustc_hir_typeck/src/method/suggest.rs +++ b/compiler/rustc_hir_typeck/src/method/suggest.rs @@ -101,6 +101,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.autoderef(span, ty).any(|(ty, _)| matches!(ty.kind(), ty::Slice(..) | ty::Array(..))) } + #[instrument(level = "debug", skip(self))] pub fn report_method_error( &self, span: Span, @@ -587,21 +588,18 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Find all the requirements that come from a local `impl` block. let mut skip_list: FxHashSet<_> = Default::default(); let mut spanned_predicates: FxHashMap = Default::default(); - for (data, p, parent_p, impl_def_id, cause) in unsatisfied_predicates + for (p, parent_p, impl_def_id, cause) in unsatisfied_predicates .iter() .filter_map(|(p, parent, c)| c.as_ref().map(|c| (p, parent, c))) .filter_map(|(p, parent, c)| match c.code() { - ObligationCauseCode::ImplDerivedObligation(data) => { - Some((&data.derived, p, parent, data.impl_def_id, data)) + ObligationCauseCode::ImplDerivedObligation(data) + if matches!(p.kind().skip_binder(), ty::PredicateKind::Clause(_)) => + { + Some((p, parent, data.impl_def_id, data)) } _ => None, }) { - let parent_trait_ref = data.parent_trait_pred; - let path = parent_trait_ref.print_modifiers_and_trait_path(); - let tr_self_ty = parent_trait_ref.skip_binder().self_ty(); - let unsatisfied_msg = "unsatisfied trait bound introduced here"; - let derive_msg = "unsatisfied trait bound introduced in this `derive` macro"; match self.tcx.hir().get_if_local(impl_def_id) { // Unmet obligation comes from a `derive` macro, point at it once to // avoid multiple span labels pointing at the same place. @@ -618,9 +616,12 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { { let span = self_ty.span.ctxt().outer_expn_data().call_site; let mut spans: MultiSpan = span.into(); - spans.push_span_label(span, derive_msg); + spans.push_span_label( + span, + "unsatisfied trait bound introduced in this `derive` macro", + ); let entry = spanned_predicates.entry(spans); - entry.or_insert_with(|| (path, tr_self_ty, Vec::new())).2.push(p); + entry.or_insert_with(|| Vec::new()).push(p); } // Unmet obligation coming from an `impl`. @@ -647,8 +648,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { }; err.span_suggestion_verbose( sp, - "consider relaxing the type parameter's implicit \ - `Sized` bound", + "consider relaxing the type parameter's implicit `Sized` bound", sugg, Applicability::MachineApplicable, ); @@ -661,7 +661,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { skip_list.insert(p); let mut spans = if cause.span != *item_span { let mut spans: MultiSpan = cause.span.into(); - spans.push_span_label(cause.span, unsatisfied_msg); + spans.push_span_label( + cause.span, + "unsatisfied trait bound introduced here", + ); spans } else { let mut spans = Vec::with_capacity(2); @@ -677,7 +680,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { spans.push_span_label(self_ty.span, ""); let entry = spanned_predicates.entry(spans); - entry.or_insert_with(|| (path, tr_self_ty, Vec::new())).2.push(p); + entry.or_insert_with(|| Vec::new()).push(p); } Some(Node::Item(hir::Item { kind: hir::ItemKind::Trait(rustc_ast::ast::IsAuto::Yes, ..), @@ -694,11 +697,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } let mut spanned_predicates: Vec<_> = spanned_predicates.into_iter().collect(); - spanned_predicates.sort_by_key(|(span, (_, _, _))| span.primary_span()); - for (span, (_path, _self_ty, preds)) in spanned_predicates { - let mut preds: Vec<_> = preds - .into_iter() - .filter_map(|pred| format_pred(*pred)) + spanned_predicates.sort_by_key(|(span, _)| span.primary_span()); + for (span, predicates) in spanned_predicates { + let mut preds: Vec<_> = predicates + .iter() + .filter_map(|pred| format_pred(**pred)) .map(|(p, _)| format!("`{}`", p)) .collect(); preds.sort(); diff --git a/tests/ui/const-generics/generic_const_exprs/issue-69654.stderr b/tests/ui/const-generics/generic_const_exprs/issue-69654.stderr index c3e2f8e1646f..eb4ff8305dac 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-69654.stderr +++ b/tests/ui/const-generics/generic_const_exprs/issue-69654.stderr @@ -15,8 +15,14 @@ LL | struct Foo {} LL | Foo::foo(); | ^^^ function or associated item cannot be called on `Foo<_>` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `[u8; _]: Bar<[(); _]>` +note: trait bound `[u8; _]: Bar<[(); _]>` was not satisfied + --> $DIR/issue-69654.rs:11:14 + | +LL | impl Foo + | ------ +LL | where +LL | [u8; N]: Bar<[(); N]>, + | ^^^^^^^^^^^^ unsatisfied trait bound introduced here error: aborting due to 2 previous errors diff --git a/tests/ui/const-generics/generic_const_exprs/issue-80742.stderr b/tests/ui/const-generics/generic_const_exprs/issue-80742.stderr index a08c9912527c..6aa8ee13b790 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-80742.stderr +++ b/tests/ui/const-generics/generic_const_exprs/issue-80742.stderr @@ -23,8 +23,17 @@ LL | let dst = Inline::::new(0); | = note: doesn't satisfy `dyn Debug: Sized` | - = note: the following trait bounds were not satisfied: - `dyn Debug: Sized` +note: trait bound `dyn Debug: Sized` was not satisfied + --> $DIR/issue-80742.rs:20:6 + | +LL | impl Inline + | ^ --------- + | | + | unsatisfied trait bound introduced here +help: consider relaxing the type parameter's implicit `Sized` bound + | +LL | impl Inline + | ++++++++ error[E0080]: evaluation of `Inline::::{constant#0}` failed --> $SRC_DIR/core/src/mem/mod.rs:LL:COL diff --git a/tests/ui/derives/issue-91492.stderr b/tests/ui/derives/issue-91492.stderr index fbd48336d912..cee30ac50a6a 100644 --- a/tests/ui/derives/issue-91492.stderr +++ b/tests/ui/derives/issue-91492.stderr @@ -42,8 +42,13 @@ LL | struct Object(T, A); LL | foo.use_clone(); | ^^^^^^^^^ method cannot be called on `Object` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `NoDerives: Clone` +note: trait bound `NoDerives: Clone` was not satisfied + --> $DIR/issue-91492.rs:18:9 + | +LL | impl Object { + | ^^^^^ ------------ + | | + | unsatisfied trait bound introduced here help: consider annotating `NoDerives` with `#[derive(Clone)]` | LL | #[derive(Clone)] diff --git a/tests/ui/derives/issue-91550.stderr b/tests/ui/derives/issue-91550.stderr index 12be269565da..e8d67ccb3592 100644 --- a/tests/ui/derives/issue-91550.stderr +++ b/tests/ui/derives/issue-91550.stderr @@ -30,8 +30,13 @@ LL | struct Object(T); LL | foo.use_eq(); | ^^^^^^ method cannot be called on `Object` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `NoDerives: Eq` +note: trait bound `NoDerives: Eq` was not satisfied + --> $DIR/issue-91550.rs:15:9 + | +LL | impl Object { + | ^^ --------- + | | + | unsatisfied trait bound introduced here help: consider annotating `NoDerives` with `#[derive(Eq, PartialEq)]` | LL | #[derive(Eq, PartialEq)] @@ -49,8 +54,13 @@ LL | struct Object(T); LL | foo.use_ord(); | ^^^^^^^ method cannot be called on `Object` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `NoDerives: Ord` +note: trait bound `NoDerives: Ord` was not satisfied + --> $DIR/issue-91550.rs:18:9 + | +LL | impl Object { + | ^^^ --------- + | | + | unsatisfied trait bound introduced here help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]` | LL | #[derive(Eq, Ord, PartialEq, PartialOrd)] @@ -71,9 +81,20 @@ LL | struct Object(T); LL | foo.use_ord_and_partial_ord(); | ^^^^^^^^^^^^^^^^^^^^^^^ method cannot be called on `Object` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `NoDerives: Ord` - `NoDerives: PartialOrd` +note: trait bound `NoDerives: Ord` was not satisfied + --> $DIR/issue-91550.rs:21:9 + | +LL | impl Object { + | ^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `NoDerives: PartialOrd` was not satisfied + --> $DIR/issue-91550.rs:21:15 + | +LL | impl Object { + | ^^^^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]` | LL | #[derive(Eq, Ord, PartialEq, PartialOrd)] diff --git a/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs b/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs index 36974b3df5e6..83655341d6a2 100644 --- a/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs +++ b/tests/ui/generic-associated-types/method-unsatified-assoc-type-predicate.rs @@ -11,7 +11,7 @@ trait M { impl = i32>> M for T {} //~^ NOTE trait bound `::Y = i32` was not satisfied -//~| NOTE unsatisfied trait bound introduced here +//~| NOTE //~| NOTE //~| NOTE diff --git a/tests/ui/impl-trait/issues/issue-62742.stderr b/tests/ui/impl-trait/issues/issue-62742.stderr index bc342dc46893..d872291c8705 100644 --- a/tests/ui/impl-trait/issues/issue-62742.stderr +++ b/tests/ui/impl-trait/issues/issue-62742.stderr @@ -23,8 +23,13 @@ LL | pub struct RawImpl(PhantomData); LL | pub struct SafeImpl>(PhantomData<(A, T)>); | ----------------------------------------- function or associated item `foo` not found for this struct | - = note: the following trait bounds were not satisfied: - `RawImpl<()>: Raw<()>` +note: trait bound `RawImpl<()>: Raw<()>` was not satisfied + --> $DIR/issue-62742.rs:28:20 + | +LL | impl> SafeImpl { + | ^^^^^^ -------------- + | | + | unsatisfied trait bound introduced here note: the trait `Raw` must be implemented --> $DIR/issue-62742.rs:12:1 | diff --git a/tests/ui/methods/method-not-found-generic-arg-elision.stderr b/tests/ui/methods/method-not-found-generic-arg-elision.stderr index 8846efba871b..6ec369644a05 100644 --- a/tests/ui/methods/method-not-found-generic-arg-elision.stderr +++ b/tests/ui/methods/method-not-found-generic-arg-elision.stderr @@ -88,9 +88,20 @@ LL | struct Struct { LL | s.method(); | ^^^^^^ method cannot be called on `Struct` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `f64: Eq` - `f64: Ord` +note: trait bound `f64: Eq` was not satisfied + --> $DIR/method-not-found-generic-arg-elision.rs:74:36 + | +LL | impl Struct { + | ^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `f64: Ord` was not satisfied + --> $DIR/method-not-found-generic-arg-elision.rs:74:54 + | +LL | impl Struct { + | ^^^ --------- + | | + | unsatisfied trait bound introduced here error: aborting due to 9 previous errors diff --git a/tests/ui/suggestions/derive-trait-for-method-call.stderr b/tests/ui/suggestions/derive-trait-for-method-call.stderr index 14e8a2675dd1..8d5957bd7191 100644 --- a/tests/ui/suggestions/derive-trait-for-method-call.stderr +++ b/tests/ui/suggestions/derive-trait-for-method-call.stderr @@ -16,10 +16,27 @@ LL | struct Foo (X, Y); LL | let y = x.test(); | ^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `Enum: Clone` - `Enum: Default` - `CloneEnum: Default` +note: trait bound `Enum: Clone` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:9 + | +LL | impl Foo { + | ^^^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `Enum: Default` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:17 + | +LL | impl Foo { + | ^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `CloneEnum: Default` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:40 + | +LL | impl Foo { + | ^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here note: the trait `Default` must be implemented --> $SRC_DIR/core/src/default.rs:LL:COL help: consider annotating `Enum` with `#[derive(Clone)]` @@ -45,10 +62,27 @@ LL | struct Foo (X, Y); LL | let y = x.test(); | ^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds | - = note: the following trait bounds were not satisfied: - `Struct: Clone` - `Struct: Default` - `CloneStruct: Default` +note: trait bound `Struct: Clone` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:9 + | +LL | impl Foo { + | ^^^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `Struct: Default` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:17 + | +LL | impl Foo { + | ^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `CloneStruct: Default` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:40 + | +LL | impl Foo { + | ^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here help: consider annotating `CloneStruct` with `#[derive(Default)]` | LL | #[derive(Default)] @@ -73,9 +107,20 @@ LL | let y = x.test(); | = note: doesn't satisfy `Vec: Clone` | - = note: the following trait bounds were not satisfied: - `Vec: Clone` - `Instant: Default` +note: trait bound `Vec: Clone` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:9 + | +LL | impl Foo { + | ^^^^^ --------- + | | + | unsatisfied trait bound introduced here +note: trait bound `Instant: Default` was not satisfied + --> $DIR/derive-trait-for-method-call.rs:20:40 + | +LL | impl Foo { + | ^^^^^^^ --------- + | | + | unsatisfied trait bound introduced here error: aborting due to 3 previous errors From 317adda649763de4c15692da327c216f05106a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Wed, 11 Jan 2023 04:11:06 +0000 Subject: [PATCH 418/478] Tweak output --- .../rustc_hir_typeck/src/method/suggest.rs | 52 ++++++++------- .../derives/derive-assoc-type-not-impl.stderr | 3 - tests/ui/derives/issue-91550.stderr | 16 ++--- ...ethod-not-found-generic-arg-elision.stderr | 16 ++--- ...issing-trait-bounds-for-method-call.stderr | 16 ++--- .../derive-trait-for-method-call.stderr | 66 +++++++------------ .../union-derive-clone.mirunsafeck.stderr | 3 - .../union-derive-clone.thirunsafeck.stderr | 3 - 8 files changed, 68 insertions(+), 107 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/method/suggest.rs b/compiler/rustc_hir_typeck/src/method/suggest.rs index 8c39e4413c53..8166eb829904 100644 --- a/compiler/rustc_hir_typeck/src/method/suggest.rs +++ b/compiler/rustc_hir_typeck/src/method/suggest.rs @@ -587,7 +587,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Find all the requirements that come from a local `impl` block. let mut skip_list: FxHashSet<_> = Default::default(); - let mut spanned_predicates: FxHashMap = Default::default(); + let mut spanned_predicates = FxHashMap::default(); for (p, parent_p, impl_def_id, cause) in unsatisfied_predicates .iter() .filter_map(|(p, parent, c)| c.as_ref().map(|c| (p, parent, c))) @@ -615,13 +615,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { ) => { let span = self_ty.span.ctxt().outer_expn_data().call_site; - let mut spans: MultiSpan = span.into(); - spans.push_span_label( + let entry = spanned_predicates.entry(span); + let entry = entry.or_insert_with(|| { + (FxHashSet::default(), FxHashSet::default(), Vec::new()) + }); + entry.0.insert(span); + entry.1.insert(( span, "unsatisfied trait bound introduced in this `derive` macro", - ); - let entry = spanned_predicates.entry(spans); - entry.or_insert_with(|| Vec::new()).push(p); + )); + entry.2.push(p); + skip_list.insert(p); } // Unmet obligation coming from an `impl`. @@ -659,28 +663,24 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let _ = format_pred(*pred); } skip_list.insert(p); - let mut spans = if cause.span != *item_span { - let mut spans: MultiSpan = cause.span.into(); - spans.push_span_label( - cause.span, - "unsatisfied trait bound introduced here", - ); - spans + let entry = spanned_predicates.entry(self_ty.span); + let entry = entry.or_insert_with(|| { + (FxHashSet::default(), FxHashSet::default(), Vec::new()) + }); + entry.2.push(p); + if cause.span != *item_span { + entry.0.insert(cause.span); + entry.1.insert((cause.span, "unsatisfied trait bound introduced here")); } else { - let mut spans = Vec::with_capacity(2); if let Some(trait_ref) = of_trait { - spans.push(trait_ref.path.span); + entry.0.insert(trait_ref.path.span); } - spans.push(self_ty.span); - spans.into() + entry.0.insert(self_ty.span); }; if let Some(trait_ref) = of_trait { - spans.push_span_label(trait_ref.path.span, ""); + entry.1.insert((trait_ref.path.span, "")); } - spans.push_span_label(self_ty.span, ""); - - let entry = spanned_predicates.entry(spans); - entry.or_insert_with(|| Vec::new()).push(p); + entry.1.insert((self_ty.span, "")); } Some(Node::Item(hir::Item { kind: hir::ItemKind::Trait(rustc_ast::ast::IsAuto::Yes, ..), @@ -697,8 +697,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } let mut spanned_predicates: Vec<_> = spanned_predicates.into_iter().collect(); - spanned_predicates.sort_by_key(|(span, _)| span.primary_span()); - for (span, predicates) in spanned_predicates { + spanned_predicates.sort_by_key(|(span, _)| *span); + for (_, (primary_spans, span_labels, predicates)) in spanned_predicates { let mut preds: Vec<_> = predicates .iter() .filter_map(|pred| format_pred(**pred)) @@ -711,6 +711,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } else { format!("the following trait bounds were not satisfied:\n{}", preds.join("\n"),) }; + let mut span: MultiSpan = primary_spans.into_iter().collect::>().into(); + for (sp, label) in span_labels { + span.push_span_label(sp, label); + } err.span_note(span, &msg); unsatisfied_bounds = true; } diff --git a/tests/ui/derives/derive-assoc-type-not-impl.stderr b/tests/ui/derives/derive-assoc-type-not-impl.stderr index c4fddcf5f246..91b334b412bc 100644 --- a/tests/ui/derives/derive-assoc-type-not-impl.stderr +++ b/tests/ui/derives/derive-assoc-type-not-impl.stderr @@ -18,9 +18,6 @@ note: trait bound `NotClone: Clone` was not satisfied | LL | #[derive(Clone)] | ^^^^^ unsatisfied trait bound introduced in this `derive` macro - = note: the following trait bounds were not satisfied: - `NotClone: Clone` - which is required by `Bar: Clone` = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `clone`, perhaps you need to implement it: candidate #1: `Clone` diff --git a/tests/ui/derives/issue-91550.stderr b/tests/ui/derives/issue-91550.stderr index e8d67ccb3592..bf0bb3fbdf8f 100644 --- a/tests/ui/derives/issue-91550.stderr +++ b/tests/ui/derives/issue-91550.stderr @@ -81,20 +81,16 @@ LL | struct Object(T); LL | foo.use_ord_and_partial_ord(); | ^^^^^^^^^^^^^^^^^^^^^^^ method cannot be called on `Object` due to unsatisfied trait bounds | -note: trait bound `NoDerives: Ord` was not satisfied +note: the following trait bounds were not satisfied: + `NoDerives: Ord` + `NoDerives: PartialOrd` --> $DIR/issue-91550.rs:21:9 | LL | impl Object { - | ^^^ --------- - | | + | ^^^ ^^^^^^^^^^ --------- + | | | + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `NoDerives: PartialOrd` was not satisfied - --> $DIR/issue-91550.rs:21:15 - | -LL | impl Object { - | ^^^^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here help: consider annotating `NoDerives` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]` | LL | #[derive(Eq, Ord, PartialEq, PartialOrd)] diff --git a/tests/ui/methods/method-not-found-generic-arg-elision.stderr b/tests/ui/methods/method-not-found-generic-arg-elision.stderr index 6ec369644a05..f3db56d1d539 100644 --- a/tests/ui/methods/method-not-found-generic-arg-elision.stderr +++ b/tests/ui/methods/method-not-found-generic-arg-elision.stderr @@ -88,20 +88,16 @@ LL | struct Struct { LL | s.method(); | ^^^^^^ method cannot be called on `Struct` due to unsatisfied trait bounds | -note: trait bound `f64: Eq` was not satisfied +note: the following trait bounds were not satisfied: + `f64: Eq` + `f64: Ord` --> $DIR/method-not-found-generic-arg-elision.rs:74:36 | LL | impl Struct { - | ^^ --------- - | | + | ^^ ^^^ --------- + | | | + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `f64: Ord` was not satisfied - --> $DIR/method-not-found-generic-arg-elision.rs:74:54 - | -LL | impl Struct { - | ^^^ --------- - | | - | unsatisfied trait bound introduced here error: aborting due to 9 previous errors diff --git a/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr b/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr index 9e94aa2c7b3b..968e285af7ff 100644 --- a/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr +++ b/tests/ui/missing-trait-bounds/missing-trait-bounds-for-method-call.stderr @@ -7,20 +7,16 @@ LL | struct Foo { LL | self.foo(); | ^^^ method cannot be called on `&Foo` due to unsatisfied trait bounds | -note: trait bound `T: Default` was not satisfied +note: the following trait bounds were not satisfied: + `T: Bar` + `T: Default` --> $DIR/missing-trait-bounds-for-method-call.rs:10:9 | LL | impl Bar for Foo {} - | ^^^^^^^ --- ------ - | | + | ^^^^^^^ ^^^ --- ------ + | | | + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `T: Bar` was not satisfied - --> $DIR/missing-trait-bounds-for-method-call.rs:10:19 - | -LL | impl Bar for Foo {} - | ^^^ --- ------ - | | - | unsatisfied trait bound introduced here help: consider restricting the type parameters to satisfy the trait bounds | LL | struct Foo where T: Bar, T: Default { diff --git a/tests/ui/suggestions/derive-trait-for-method-call.stderr b/tests/ui/suggestions/derive-trait-for-method-call.stderr index 8d5957bd7191..924b26a8c75f 100644 --- a/tests/ui/suggestions/derive-trait-for-method-call.stderr +++ b/tests/ui/suggestions/derive-trait-for-method-call.stderr @@ -16,27 +16,18 @@ LL | struct Foo (X, Y); LL | let y = x.test(); | ^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds | -note: trait bound `Enum: Clone` was not satisfied +note: the following trait bounds were not satisfied: + `CloneEnum: Default` + `Enum: Clone` + `Enum: Default` --> $DIR/derive-trait-for-method-call.rs:20:9 | LL | impl Foo { - | ^^^^^ --------- - | | + | ^^^^^ ^^^^^^^ ^^^^^^^ --------- + | | | | + | | | unsatisfied trait bound introduced here + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `Enum: Default` was not satisfied - --> $DIR/derive-trait-for-method-call.rs:20:17 - | -LL | impl Foo { - | ^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here -note: trait bound `CloneEnum: Default` was not satisfied - --> $DIR/derive-trait-for-method-call.rs:20:40 - | -LL | impl Foo { - | ^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here note: the trait `Default` must be implemented --> $SRC_DIR/core/src/default.rs:LL:COL help: consider annotating `Enum` with `#[derive(Clone)]` @@ -62,27 +53,18 @@ LL | struct Foo (X, Y); LL | let y = x.test(); | ^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds | -note: trait bound `Struct: Clone` was not satisfied +note: the following trait bounds were not satisfied: + `CloneStruct: Default` + `Struct: Clone` + `Struct: Default` --> $DIR/derive-trait-for-method-call.rs:20:9 | LL | impl Foo { - | ^^^^^ --------- - | | + | ^^^^^ ^^^^^^^ ^^^^^^^ --------- + | | | | + | | | unsatisfied trait bound introduced here + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `Struct: Default` was not satisfied - --> $DIR/derive-trait-for-method-call.rs:20:17 - | -LL | impl Foo { - | ^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here -note: trait bound `CloneStruct: Default` was not satisfied - --> $DIR/derive-trait-for-method-call.rs:20:40 - | -LL | impl Foo { - | ^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here help: consider annotating `CloneStruct` with `#[derive(Default)]` | LL | #[derive(Default)] @@ -107,20 +89,16 @@ LL | let y = x.test(); | = note: doesn't satisfy `Vec: Clone` | -note: trait bound `Vec: Clone` was not satisfied +note: the following trait bounds were not satisfied: + `Instant: Default` + `Vec: Clone` --> $DIR/derive-trait-for-method-call.rs:20:9 | LL | impl Foo { - | ^^^^^ --------- - | | + | ^^^^^ ^^^^^^^ --------- + | | | + | | unsatisfied trait bound introduced here | unsatisfied trait bound introduced here -note: trait bound `Instant: Default` was not satisfied - --> $DIR/derive-trait-for-method-call.rs:20:40 - | -LL | impl Foo { - | ^^^^^^^ --------- - | | - | unsatisfied trait bound introduced here error: aborting due to 3 previous errors diff --git a/tests/ui/union/union-derive-clone.mirunsafeck.stderr b/tests/ui/union/union-derive-clone.mirunsafeck.stderr index 65ff72fe474b..b80e8b988adb 100644 --- a/tests/ui/union/union-derive-clone.mirunsafeck.stderr +++ b/tests/ui/union/union-derive-clone.mirunsafeck.stderr @@ -32,9 +32,6 @@ note: trait bound `CloneNoCopy: Copy` was not satisfied | LL | #[derive(Clone, Copy)] | ^^^^^ unsatisfied trait bound introduced in this `derive` macro - = note: the following trait bounds were not satisfied: - `CloneNoCopy: Copy` - which is required by `U5: Clone` help: consider annotating `CloneNoCopy` with `#[derive(Clone, Copy)]` | LL | #[derive(Clone, Copy)] diff --git a/tests/ui/union/union-derive-clone.thirunsafeck.stderr b/tests/ui/union/union-derive-clone.thirunsafeck.stderr index 65ff72fe474b..b80e8b988adb 100644 --- a/tests/ui/union/union-derive-clone.thirunsafeck.stderr +++ b/tests/ui/union/union-derive-clone.thirunsafeck.stderr @@ -32,9 +32,6 @@ note: trait bound `CloneNoCopy: Copy` was not satisfied | LL | #[derive(Clone, Copy)] | ^^^^^ unsatisfied trait bound introduced in this `derive` macro - = note: the following trait bounds were not satisfied: - `CloneNoCopy: Copy` - which is required by `U5: Clone` help: consider annotating `CloneNoCopy` with `#[derive(Clone, Copy)]` | LL | #[derive(Clone, Copy)] From 9a39d7e441fb5f879a25d326d6f1546b34d4c531 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 11 Jan 2023 03:21:11 +0000 Subject: [PATCH 419/478] Note predicate span on ImplDerivedObligation --- .../src/traits/error_reporting/suggestions.rs | 28 ++++++++++++++++--- .../hr-associated-type-bound-2.stderr | 3 ++ .../associated-types/impl-wf-cycle-1.stderr | 3 ++ .../associated-types/impl-wf-cycle-2.stderr | 3 ++ tests/ui/associated-types/issue-44153.stderr | 2 ++ .../ui/associated-types/issue-65774-1.stderr | 4 ++- .../substs-ppaux.normal.stderr | 4 ++- .../substs-ppaux.verbose.stderr | 4 ++- ...ypeck-default-trait-impl-precedence.stderr | 4 ++- tests/ui/block-result/issue-22645.stderr | 4 ++- .../generic_const_exprs/issue-85848.stderr | 10 ++++--- .../ui/consts/const-blocks/trait-error.stderr | 2 +- tests/ui/derives/deriving-copyclone.stderr | 6 ++-- tests/ui/error-codes/E0275.stderr | 2 +- .../impl_bounds.stderr | 4 +-- .../issue-101020.stderr | 2 +- .../issue-62203-hrtb-ice.stderr | 3 ++ .../normalize-under-binder/issue-89118.stderr | 12 ++++++-- .../nested-return-type2-tait2.stderr | 4 ++- .../nested-return-type2-tait3.stderr | 4 ++- ...ction-mismatch-in-impl-where-clause.stderr | 2 +- tests/ui/inference/issue-80816.rs | 1 + tests/ui/inference/issue-80816.stderr | 8 ++++-- tests/ui/issues/issue-20413.stderr | 10 +++---- tests/ui/issues/issue-22872.stderr | 3 ++ tests/ui/issues/issue-23122-2.stderr | 4 ++- tests/ui/issues/issue-38821.stderr | 4 ++- tests/ui/issues/issue-39970.stderr | 3 ++ .../kindck/kindck-impl-type-params-2.stderr | 4 ++- .../ui/kindck/kindck-impl-type-params.stderr | 24 ++++++++++++---- .../kindck-inherited-copy-bound.curr.stderr | 4 ++- ...copy-bound.object_safe_for_dispatch.stderr | 4 ++- tests/ui/phantom-auto-trait.stderr | 4 +-- .../issue-104884-trait-impl-sugg-err.stderr | 2 +- .../feature-gate-do_not_recommend.stderr | 4 ++- .../specializing-constness-2.stderr | 4 ++- tests/ui/specialization/issue-38091-2.stderr | 3 ++ tests/ui/specialization/issue-39448.stderr | 7 ++++- .../ui/suggestions/derive-clone-for-eq.stderr | 4 ++- .../derive-macro-missing-bounds.stderr | 10 ++++--- tests/ui/suggestions/issue-96223.stderr | 5 +++- tests/ui/traits/cycle-cache-err-60010.stderr | 6 ++++ .../ui/traits/inductive-overflow/lifetime.rs | 1 + .../traits/inductive-overflow/lifetime.stderr | 8 ++++-- .../inductive-overflow/simultaneous.stderr | 4 ++- .../inductive-overflow/supertrait.stderr | 4 ++- tests/ui/traits/issue-18400.stderr | 4 ++- tests/ui/traits/issue-91594.stderr | 4 ++- .../negated-auto-traits-error.stderr | 4 ++- ...t-non-existing-fully-qualified-path.stderr | 3 ++ .../issue-90400-2.stderr | 4 ++- .../underconstrained_generic.stderr | 4 ++- 52 files changed, 200 insertions(+), 68 deletions(-) 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 439854958270..53769742c47a 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -36,7 +36,7 @@ use rustc_middle::ty::{ TypeSuperFoldable, TypeVisitable, TypeckResults, }; use rustc_span::symbol::{sym, Ident, Symbol}; -use rustc_span::{BytePos, DesugaringKind, ExpnKind, Span, DUMMY_SP}; +use rustc_span::{BytePos, DesugaringKind, ExpnKind, MacroKind, Span, DUMMY_SP}; use rustc_target::spec::abi; use std::ops::Deref; @@ -2949,7 +2949,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { // FIXME: we should do something else so that it works even on crate foreign // auto traits. is_auto_trait = matches!(is_auto, hir::IsAuto::Yes); - err.span_note(ident.span, &msg) + err.span_note(ident.span, &msg); } Some(Node::Item(hir::Item { kind: hir::ItemKind::Impl(hir::Impl { of_trait, self_ty, .. }), @@ -2960,9 +2960,29 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { spans.push(trait_ref.path.span); } spans.push(self_ty.span); - err.span_note(spans, &msg) + let mut spans: MultiSpan = spans.into(); + if matches!( + self_ty.span.ctxt().outer_expn_data().kind, + ExpnKind::Macro(MacroKind::Derive, _) + ) || matches!( + of_trait.as_ref().map(|t| t.path.span.ctxt().outer_expn_data().kind), + Some(ExpnKind::Macro(MacroKind::Derive, _)) + ) { + spans.push_span_label( + data.span, + "unsatisfied trait bound introduced in this `derive` macro", + ); + } else if !data.span.is_dummy() && !data.span.overlaps(self_ty.span) { + spans.push_span_label( + data.span, + "unsatisfied trait bound introduced here", + ); + } + err.span_note(spans, &msg); + } + _ => { + err.note(&msg); } - _ => err.note(&msg), }; if let Some(file) = file { diff --git a/tests/ui/associated-types/hr-associated-type-bound-2.stderr b/tests/ui/associated-types/hr-associated-type-bound-2.stderr index a85edd7a08da..749986f09c63 100644 --- a/tests/ui/associated-types/hr-associated-type-bound-2.stderr +++ b/tests/ui/associated-types/hr-associated-type-bound-2.stderr @@ -10,6 +10,9 @@ note: required for `u32` to implement `for<'b> X<'b>` | LL | impl X<'_> for u32 | ^^^^^ ^^^ +LL | where +LL | for<'b> >::U: Clone, + | ----- unsatisfied trait bound introduced here = note: 128 redundant requirements hidden = note: required for `u32` to implement `for<'b> X<'b>` diff --git a/tests/ui/associated-types/impl-wf-cycle-1.stderr b/tests/ui/associated-types/impl-wf-cycle-1.stderr index 6661347e4f86..206060f1980d 100644 --- a/tests/ui/associated-types/impl-wf-cycle-1.stderr +++ b/tests/ui/associated-types/impl-wf-cycle-1.stderr @@ -9,6 +9,9 @@ note: required for `(T,)` to implement `Grault` | LL | impl Grault for (T,) | ^^^^^^ ^^^^ +... +LL | Self::A: Baz, + | --- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `(T,)` to implement `Grault` diff --git a/tests/ui/associated-types/impl-wf-cycle-2.stderr b/tests/ui/associated-types/impl-wf-cycle-2.stderr index ec4ffe27c5fd..771ba751e8c9 100644 --- a/tests/ui/associated-types/impl-wf-cycle-2.stderr +++ b/tests/ui/associated-types/impl-wf-cycle-2.stderr @@ -9,6 +9,9 @@ note: required for `(T,)` to implement `Grault` | LL | impl Grault for (T,) | ^^^^^^ ^^^^ +... +LL | Self::A: Copy, + | ---- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/associated-types/issue-44153.stderr b/tests/ui/associated-types/issue-44153.stderr index 9c92f19d8bf9..8bddcd955689 100644 --- a/tests/ui/associated-types/issue-44153.stderr +++ b/tests/ui/associated-types/issue-44153.stderr @@ -14,6 +14,8 @@ note: required for `()` to implement `Visit` | LL | impl<'a> Visit for () where | ^^^^^ ^^ +LL | (): Array, + | -------------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/associated-types/issue-65774-1.stderr b/tests/ui/associated-types/issue-65774-1.stderr index 3b294d65d56e..91b557555d58 100644 --- a/tests/ui/associated-types/issue-65774-1.stderr +++ b/tests/ui/associated-types/issue-65774-1.stderr @@ -22,7 +22,9 @@ note: required for `&mut T` to implement `MyDisplay` --> $DIR/issue-65774-1.rs:5:24 | LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { } - | ^^^^^^^^^ ^^^^^^^^^ + | --------- ^^^^^^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `&mut T` to the object type `dyn MyDisplay` error: aborting due to 2 previous errors diff --git a/tests/ui/associated-types/substs-ppaux.normal.stderr b/tests/ui/associated-types/substs-ppaux.normal.stderr index 3f180cf4f1f8..eadaa35b65e5 100644 --- a/tests/ui/associated-types/substs-ppaux.normal.stderr +++ b/tests/ui/associated-types/substs-ppaux.normal.stderr @@ -81,7 +81,9 @@ note: required for `str` to implement `Foo<'_, '_, u8>` --> $DIR/substs-ppaux.rs:11:17 | LL | impl<'a,'b,T,S> Foo<'a, 'b, S> for T {} - | ^^^^^^^^^^^^^^ ^ + | - ^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to 5 previous errors diff --git a/tests/ui/associated-types/substs-ppaux.verbose.stderr b/tests/ui/associated-types/substs-ppaux.verbose.stderr index 16dd29de2c54..2077543ce303 100644 --- a/tests/ui/associated-types/substs-ppaux.verbose.stderr +++ b/tests/ui/associated-types/substs-ppaux.verbose.stderr @@ -81,7 +81,9 @@ note: required for `str` to implement `Foo<'_#0r, '_#1r, u8>` --> $DIR/substs-ppaux.rs:11:17 | LL | impl<'a,'b,T,S> Foo<'a, 'b, S> for T {} - | ^^^^^^^^^^^^^^ ^ + | - ^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to 5 previous errors diff --git a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr index ce7095664c11..9aae9013d1b0 100644 --- a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr +++ b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr @@ -9,7 +9,9 @@ note: required for `&'static u32` to implement `Defaulted` --> $DIR/typeck-default-trait-impl-precedence.rs:10:19 | LL | impl<'a,T:Signed> Defaulted for &'a T { } - | ^^^^^^^^^ ^^^^^ + | ------ ^^^^^^^^^ ^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_defaulted` --> $DIR/typeck-default-trait-impl-precedence.rs:12:19 | diff --git a/tests/ui/block-result/issue-22645.stderr b/tests/ui/block-result/issue-22645.stderr index 28debd60a998..24341c0f58a8 100644 --- a/tests/ui/block-result/issue-22645.stderr +++ b/tests/ui/block-result/issue-22645.stderr @@ -9,7 +9,9 @@ note: required for `Bob` to implement `Add<{integer}>` --> $DIR/issue-22645.rs:8:19 | LL | impl Add for Bob { - | ^^^^^^^^^ ^^^ + | ------ ^^^^^^^^^ ^^^ + | | + | unsatisfied trait bound introduced here error[E0308]: mismatched types --> $DIR/issue-22645.rs:15:3 diff --git a/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr b/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr index 09bcb0860b71..e50ac671eca5 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr +++ b/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr @@ -11,12 +11,12 @@ note: required for `&C` to implement `Contains<(), true>` --> $DIR/issue-85848.rs:21:12 | LL | impl Contains() }> for U where T: _Contains {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ------------ unsatisfied trait bound introduced here note: required for `&C` to implement `Delegates<()>` --> $DIR/issue-85848.rs:12:12 | LL | impl Delegates for T where T: Contains {} - | ^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^ ^ ----------------- unsatisfied trait bound introduced here note: required by a bound in `writes_to_specific_path` --> $DIR/issue-85848.rs:30:31 | @@ -36,12 +36,14 @@ note: required for `&C` to implement `Contains<(), true>` --> $DIR/issue-85848.rs:21:12 | LL | impl Contains() }> for U where T: _Contains {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^----------------------^ ^ + | | + | unsatisfied trait bound introduced here note: required for `&C` to implement `Delegates<()>` --> $DIR/issue-85848.rs:12:12 | LL | impl Delegates for T where T: Contains {} - | ^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^ ^ ----------------- unsatisfied trait bound introduced here note: required by a bound in `writes_to_specific_path` --> $DIR/issue-85848.rs:30:31 | diff --git a/tests/ui/consts/const-blocks/trait-error.stderr b/tests/ui/consts/const-blocks/trait-error.stderr index b11dd4b80872..06fa4b0b1f30 100644 --- a/tests/ui/consts/const-blocks/trait-error.stderr +++ b/tests/ui/consts/const-blocks/trait-error.stderr @@ -8,7 +8,7 @@ note: required for `Foo` to implement `Copy` --> $DIR/trait-error.rs:1:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro = note: the `Copy` trait is required because this value will be copied for each element of the array = help: consider creating a new `const` item and initializing it with the result of the function call to be used in the repeat position, like `const VAL: Type = const_fn();` and `let x = [VAL; 42];` = help: create an inline `const` block, see RFC #2920 for more information diff --git a/tests/ui/derives/deriving-copyclone.stderr b/tests/ui/derives/deriving-copyclone.stderr index 80e2dd7fedef..9c4ca01ff377 100644 --- a/tests/ui/derives/deriving-copyclone.stderr +++ b/tests/ui/derives/deriving-copyclone.stderr @@ -10,7 +10,7 @@ note: required for `B` to implement `Copy` --> $DIR/deriving-copyclone.rs:9:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_copy` --> $DIR/deriving-copyclone.rs:18:15 | @@ -34,7 +34,7 @@ note: required for `B` to implement `Clone` --> $DIR/deriving-copyclone.rs:9:16 | LL | #[derive(Copy, Clone)] - | ^^^^^ + | ^^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_clone` --> $DIR/deriving-copyclone.rs:19:16 | @@ -58,7 +58,7 @@ note: required for `B` to implement `Copy` --> $DIR/deriving-copyclone.rs:9:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_copy` --> $DIR/deriving-copyclone.rs:18:15 | diff --git a/tests/ui/error-codes/E0275.stderr b/tests/ui/error-codes/E0275.stderr index 451a683ac8a6..cf9a7f69bfbd 100644 --- a/tests/ui/error-codes/E0275.stderr +++ b/tests/ui/error-codes/E0275.stderr @@ -9,7 +9,7 @@ note: required for `Bar $DIR/E0275.rs:6:9 | LL | impl Foo for T where Bar: Foo {} - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/error-codes/E0275/E0275.long-type-hash.txt' = note: 127 redundant requirements hidden = note: required for `Bar` to implement `Foo` diff --git a/tests/ui/generic-associated-types/impl_bounds.stderr b/tests/ui/generic-associated-types/impl_bounds.stderr index 3456b345cc28..261070d1db4b 100644 --- a/tests/ui/generic-associated-types/impl_bounds.stderr +++ b/tests/ui/generic-associated-types/impl_bounds.stderr @@ -31,7 +31,7 @@ note: required for `Fooy` to implement `Copy` --> $DIR/impl_bounds.rs:10:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: the requirement `Fooy: Copy` appears on the `impl`'s associated type `C` but not on the corresponding trait's associated type --> $DIR/impl_bounds.rs:6:10 | @@ -56,7 +56,7 @@ note: required for `Fooy` to implement `Copy` --> $DIR/impl_bounds.rs:10:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: the requirement `Fooy: Copy` appears on the `impl`'s method `d` but not on the corresponding trait's method --> $DIR/impl_bounds.rs:7:8 | diff --git a/tests/ui/generic-associated-types/issue-101020.stderr b/tests/ui/generic-associated-types/issue-101020.stderr index 422ac5484271..1f9273a8c4ab 100644 --- a/tests/ui/generic-associated-types/issue-101020.stderr +++ b/tests/ui/generic-associated-types/issue-101020.stderr @@ -8,7 +8,7 @@ note: required for `&'a mut ()` to implement `for<'a> FuncInput<'a, &'a mut ()>` --> $DIR/issue-101020.rs:27:20 | LL | impl<'a, T, F: 'a> FuncInput<'a, F> for T where F: Foo {} - | ^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^^^^^ ^ ------ unsatisfied trait bound introduced here note: required by a bound in `LendingIterator::consume` --> $DIR/issue-101020.rs:9:33 | diff --git a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr index fdd192f43137..381865db07d1 100644 --- a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr +++ b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr @@ -49,6 +49,9 @@ note: required for `L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]>` to i | LL | impl<'a, A, T> T0<'a, A> for L | ^^^^^^^^^ ^^^^ +LL | where +LL | T: FnMut(A) -> Unit3, + | ----- unsatisfied trait bound introduced here note: required by a bound in `T1::m` --> $DIR/issue-62203-hrtb-ice.rs:27:12 | diff --git a/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr index 14fe1803b734..62d0128fd85a 100644 --- a/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr +++ b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr @@ -8,7 +8,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `StackContext` --> $DIR/issue-89118.rs:9:14 | @@ -28,7 +30,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `EthernetWorker` --> $DIR/issue-89118.rs:28:14 | @@ -48,7 +52,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `StackContext` --> $DIR/issue-89118.rs:9:14 | diff --git a/tests/ui/impl-trait/nested-return-type2-tait2.stderr b/tests/ui/impl-trait/nested-return-type2-tait2.stderr index 348c737b0b16..b85bb5efd100 100644 --- a/tests/ui/impl-trait/nested-return-type2-tait2.stderr +++ b/tests/ui/impl-trait/nested-return-type2-tait2.stderr @@ -9,7 +9,9 @@ note: required for `[closure@$DIR/nested-return-type2-tait2.rs:27:5: 27:7]` to i --> $DIR/nested-return-type2-tait2.rs:14:31 | LL | impl R> Trait for F { - | ^^^^^ ^ + | --- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/impl-trait/nested-return-type2-tait3.stderr b/tests/ui/impl-trait/nested-return-type2-tait3.stderr index 6ac671415575..19fd3c134acd 100644 --- a/tests/ui/impl-trait/nested-return-type2-tait3.stderr +++ b/tests/ui/impl-trait/nested-return-type2-tait3.stderr @@ -9,7 +9,9 @@ note: required for `[closure@$DIR/nested-return-type2-tait3.rs:26:5: 26:7]` to i --> $DIR/nested-return-type2-tait3.rs:14:31 | LL | impl R> Trait for F { - | ^^^^^ ^ + | --- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr index cf2998bbf407..a4ff510477a4 100644 --- a/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr +++ b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr @@ -13,7 +13,7 @@ note: required for `()` to implement `Test` --> $DIR/projection-mismatch-in-impl-where-clause.rs:11:9 | LL | impl Test for T where T: Super {} - | ^^^^ ^ + | ^^^^ ^ ---------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/inference/issue-80816.rs b/tests/ui/inference/issue-80816.rs index ead320a4fe42..4d319b44987e 100644 --- a/tests/ui/inference/issue-80816.rs +++ b/tests/ui/inference/issue-80816.rs @@ -30,6 +30,7 @@ pub trait Access { } impl, P: Deref> Access for P { //~^ NOTE: required for `Arc>>` to implement `Access<_>` + //~| NOTE unsatisfied trait bound introduced here type Guard = A::Guard; } impl Access for ArcSwapAny { diff --git a/tests/ui/inference/issue-80816.stderr b/tests/ui/inference/issue-80816.stderr index bd833340df4c..80c0c8abec6a 100644 --- a/tests/ui/inference/issue-80816.stderr +++ b/tests/ui/inference/issue-80816.stderr @@ -1,11 +1,11 @@ error[E0283]: type annotations needed - --> $DIR/issue-80816.rs:49:38 + --> $DIR/issue-80816.rs:50:38 | LL | let guard: Guard> = s.load(); | ^^^^ | note: multiple `impl`s satisfying `ArcSwapAny>: Access<_>` found - --> $DIR/issue-80816.rs:35:1 + --> $DIR/issue-80816.rs:36:1 | LL | impl Access for ArcSwapAny { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -16,7 +16,9 @@ note: required for `Arc>>` to implement `Access<_>` --> $DIR/issue-80816.rs:31:45 | LL | impl, P: Deref> Access for P { - | ^^^^^^^^^ ^ + | --------- ^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here help: try using a fully qualified path to specify the expected types | LL | let guard: Guard> = >> as Access>::load(&s); diff --git a/tests/ui/issues/issue-20413.stderr b/tests/ui/issues/issue-20413.stderr index 78df445972c9..202e8463145c 100644 --- a/tests/ui/issues/issue-20413.stderr +++ b/tests/ui/issues/issue-20413.stderr @@ -18,7 +18,7 @@ note: required for `NoData $DIR/issue-20413.rs:9:9 | LL | impl Foo for T where NoData: Foo { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 127 redundant requirements hidden = note: required for `NoData` to implement `Foo` @@ -34,13 +34,13 @@ note: required for `AlmostNoData $DIR/issue-20413.rs:28:9 | LL | impl Bar for T where EvenLessData: Baz { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' note: required for `EvenLessData>>>>>>` to implement `Baz` --> $DIR/issue-20413.rs:35:9 | LL | impl Baz for T where AlmostNoData: Bar { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 126 redundant requirements hidden = note: required for `EvenLessData` to implement `Baz` @@ -56,13 +56,13 @@ note: required for `EvenLessData $DIR/issue-20413.rs:35:9 | LL | impl Baz for T where AlmostNoData: Bar { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' note: required for `AlmostNoData>>>>>>` to implement `Bar` --> $DIR/issue-20413.rs:28:9 | LL | impl Bar for T where EvenLessData: Baz { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 126 redundant requirements hidden = note: required for `AlmostNoData` to implement `Bar` diff --git a/tests/ui/issues/issue-22872.stderr b/tests/ui/issues/issue-22872.stderr index 7382d40c0107..9510197197a8 100644 --- a/tests/ui/issues/issue-22872.stderr +++ b/tests/ui/issues/issue-22872.stderr @@ -10,6 +10,9 @@ note: required for `Wrapper

` to implement `for<'b> Wrap<'b>` | LL | impl<'b, P> Wrap<'b> for Wrapper

| ^^^^^^^^ ^^^^^^^^^^ +LL | where P: Process<'b>, +LL |

>::Item: Iterator { + | -------- unsatisfied trait bound introduced here = note: required for the cast from `Wrapper

` to the object type `dyn for<'b> Wrap<'b>` help: consider further restricting the associated type | diff --git a/tests/ui/issues/issue-23122-2.stderr b/tests/ui/issues/issue-23122-2.stderr index 1f50b06a0e4c..06e5b711a822 100644 --- a/tests/ui/issues/issue-23122-2.stderr +++ b/tests/ui/issues/issue-23122-2.stderr @@ -9,7 +9,9 @@ note: required for `GetNext<<<<<<<... as Next>::Next as Next>::Next as Next>::Ne --> $DIR/issue-23122-2.rs:10:15 | LL | impl Next for GetNext { - | ^^^^ ^^^^^^^^^^ + | - ^^^^ ^^^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-23122-2/issue-23122-2.long-type-hash.txt' error: aborting due to previous error diff --git a/tests/ui/issues/issue-38821.stderr b/tests/ui/issues/issue-38821.stderr index 9abd2436b8a3..a52a9c138f14 100644 --- a/tests/ui/issues/issue-38821.stderr +++ b/tests/ui/issues/issue-38821.stderr @@ -8,7 +8,9 @@ note: required for `::SqlType` to implement `IntoNullable` --> $DIR/issue-38821.rs:9:18 | LL | impl IntoNullable for T { - | ^^^^^^^^^^^^ ^ + | ------- ^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider further restricting the associated type | diff --git a/tests/ui/issues/issue-39970.stderr b/tests/ui/issues/issue-39970.stderr index 774575d1d019..0cabdf7f234a 100644 --- a/tests/ui/issues/issue-39970.stderr +++ b/tests/ui/issues/issue-39970.stderr @@ -14,6 +14,9 @@ note: required for `()` to implement `Visit` | LL | impl Visit for () where | ^^^^^ ^^ +LL | //(): for<'a> Array<'a, Element=&'a ()>, // No ICE +LL | (): for<'a> Array<'a, Element=()>, // ICE + | ---------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/kindck/kindck-impl-type-params-2.stderr b/tests/ui/kindck/kindck-impl-type-params-2.stderr index 930d96375bff..1d26ae51f44a 100644 --- a/tests/ui/kindck/kindck-impl-type-params-2.stderr +++ b/tests/ui/kindck/kindck-impl-type-params-2.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-impl-type-params-2.rs:6:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-impl-type-params-2.rs:9:17 | diff --git a/tests/ui/kindck/kindck-impl-type-params.stderr b/tests/ui/kindck/kindck-impl-type-params.stderr index 8dbe0c38c1ee..6fd1fc3f7a1a 100644 --- a/tests/ui/kindck/kindck-impl-type-params.stderr +++ b/tests/ui/kindck/kindck-impl-type-params.stderr @@ -8,7 +8,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -25,7 +27,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -42,7 +46,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -59,7 +65,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -77,7 +85,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` error[E0277]: the trait bound `Foo: Copy` is not satisfied @@ -91,7 +101,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider annotating `Foo` with `#[derive(Copy)]` | diff --git a/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr index e81d2441e6ef..8d45748a6c41 100644 --- a/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr +++ b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-inherited-copy-bound.rs:14:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-inherited-copy-bound.rs:17:17 | diff --git a/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr index 2380533b9c3e..2fbb5a98a8d9 100644 --- a/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr +++ b/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-inherited-copy-bound.rs:14:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-inherited-copy-bound.rs:17:17 | diff --git a/tests/ui/phantom-auto-trait.stderr b/tests/ui/phantom-auto-trait.stderr index 015c8fa4cd19..4769d53eb354 100644 --- a/tests/ui/phantom-auto-trait.stderr +++ b/tests/ui/phantom-auto-trait.stderr @@ -10,7 +10,7 @@ note: required for `&T` to implement `Zen` --> $DIR/phantom-auto-trait.rs:10:24 | LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} - | ^^^ ^^^^^ + | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here = note: required because it appears within the type `PhantomData<&T>` note: required because it appears within the type `Guard<'_, T>` --> $DIR/phantom-auto-trait.rs:12:8 @@ -39,7 +39,7 @@ note: required for `&T` to implement `Zen` --> $DIR/phantom-auto-trait.rs:10:24 | LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} - | ^^^ ^^^^^ + | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here = note: required because it appears within the type `PhantomData<&T>` note: required because it appears within the type `Guard<'_, T>` --> $DIR/phantom-auto-trait.rs:12:8 diff --git a/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr index 14e5df21ef65..3b2a5e701886 100644 --- a/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr +++ b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr @@ -29,7 +29,7 @@ note: required for `PriorityQueue` to implement `PartialOrd` --> $DIR/issue-104884-trait-impl-sugg-err.rs:13:10 | LL | #[derive(PartialOrd, AddImpl)] - | ^^^^^^^^^^ + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `Ord` --> $SRC_DIR/core/src/cmp.rs:LL:COL = note: this error originates in the derive macro `AddImpl` which comes from the expansion of the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr index 2749add82ac0..a3e559054f9b 100644 --- a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr +++ b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr @@ -11,7 +11,9 @@ note: required for `u8` to implement `Bar` --> $DIR/feature-gate-do_not_recommend.rs:13:14 | LL | impl Bar for T { - | ^^^ ^ + | --- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `stuff` --> $DIR/feature-gate-do_not_recommend.rs:16:13 | diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr index c554671e18d8..8923416f4c77 100644 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr @@ -8,7 +8,9 @@ note: required for `T` to implement `~const A` --> $DIR/specializing-constness-2.rs:20:37 | LL | impl const A for T { - | ^ ^ + | ---------- ^ ^ + | | + | unsatisfied trait bound introduced here help: consider further restricting this bound | LL | const fn generic() { diff --git a/tests/ui/specialization/issue-38091-2.stderr b/tests/ui/specialization/issue-38091-2.stderr index 117fb10bb7ef..5a05f9c270ab 100644 --- a/tests/ui/specialization/issue-38091-2.stderr +++ b/tests/ui/specialization/issue-38091-2.stderr @@ -15,6 +15,9 @@ note: required for `i32` to implement `Iterate<'_>` | LL | impl<'a, T> Iterate<'a> for T | ^^^^^^^^^^^ ^ +LL | where +LL | T: Check, + | ----- unsatisfied trait bound introduced here error: aborting due to previous error; 1 warning emitted diff --git a/tests/ui/specialization/issue-39448.stderr b/tests/ui/specialization/issue-39448.stderr index 60157d9a3e1b..9ce51d1136d0 100644 --- a/tests/ui/specialization/issue-39448.stderr +++ b/tests/ui/specialization/issue-39448.stderr @@ -18,12 +18,17 @@ note: required for `T` to implement `FromA` --> $DIR/issue-39448.rs:24:29 | LL | impl> FromA for U { - | ^^^^^^^^ ^ + | -------- ^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required for `U` to implement `ToA` --> $DIR/issue-39448.rs:34:12 | LL | impl ToA for T | ^^^^^^ ^ +LL | where +LL | U: FromA, + | -------- unsatisfied trait bound introduced here error: aborting due to previous error; 1 warning emitted diff --git a/tests/ui/suggestions/derive-clone-for-eq.stderr b/tests/ui/suggestions/derive-clone-for-eq.stderr index 0a18b770405c..9d843c2514b9 100644 --- a/tests/ui/suggestions/derive-clone-for-eq.stderr +++ b/tests/ui/suggestions/derive-clone-for-eq.stderr @@ -8,7 +8,9 @@ note: required for `Struct` to implement `PartialEq` --> $DIR/derive-clone-for-eq.rs:9:19 | LL | impl PartialEq for Struct - | ^^^^^^^^^^^^ ^^^^^^^^^ + | ----- ^^^^^^^^^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `Eq` --> $SRC_DIR/core/src/cmp.rs:LL:COL = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/suggestions/derive-macro-missing-bounds.stderr b/tests/ui/suggestions/derive-macro-missing-bounds.stderr index b9f7739654a9..79036279df95 100644 --- a/tests/ui/suggestions/derive-macro-missing-bounds.stderr +++ b/tests/ui/suggestions/derive-macro-missing-bounds.stderr @@ -30,7 +30,9 @@ note: required for `c::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:34:28 | LL | impl Debug for Inner { - | ^^^^^ ^^^^^^^^ + | ----- ^^^^^ ^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&c::Inner` to implement `Debug` = note: required for the cast from `&c::Inner` to the object type `dyn Debug` @@ -52,7 +54,7 @@ note: required for `d::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:49:13 | LL | impl Debug for Inner where T: Debug, T: Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&d::Inner` to implement `Debug` = note: required for the cast from `&d::Inner` to the object type `dyn Debug` @@ -74,7 +76,7 @@ note: required for `e::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:64:13 | LL | impl Debug for Inner where T: Debug + Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&e::Inner` to implement `Debug` = note: required for the cast from `&e::Inner` to the object type `dyn Debug` @@ -96,7 +98,7 @@ note: required for `f::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:79:20 | LL | impl Debug for Inner where T: Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&f::Inner` to implement `Debug` = note: required for the cast from `&f::Inner` to the object type `dyn Debug` diff --git a/tests/ui/suggestions/issue-96223.stderr b/tests/ui/suggestions/issue-96223.stderr index 72a9a739a64f..d4e9433dfda0 100644 --- a/tests/ui/suggestions/issue-96223.stderr +++ b/tests/ui/suggestions/issue-96223.stderr @@ -11,12 +11,15 @@ note: required for `Baz>` to implement `for<'de> Foo<'de>` --> $DIR/issue-96223.rs:16:14 | LL | impl<'de, T> Foo<'de> for Baz where T: Foo<'de> {} - | ^^^^^^^^ ^^^^^^ + | ^^^^^^^^ ^^^^^^ -------- unsatisfied trait bound introduced here note: required for `Empty` to implement `Dummy` --> $DIR/issue-96223.rs:20:9 | LL | impl Dummy for Empty | ^^^^^^^^ ^^^^^ +... +LL | for<'de> Baz<>::Inner>: Foo<'de>, + | -------- unsatisfied trait bound introduced here note: required by a bound in `icey_bounds` --> $DIR/issue-96223.rs:45:19 | diff --git a/tests/ui/traits/cycle-cache-err-60010.stderr b/tests/ui/traits/cycle-cache-err-60010.stderr index 2478eb35422e..eeee997608e6 100644 --- a/tests/ui/traits/cycle-cache-err-60010.stderr +++ b/tests/ui/traits/cycle-cache-err-60010.stderr @@ -22,11 +22,17 @@ note: required for `RootDatabase` to implement `SourceDatabase` | LL | impl SourceDatabase for T | ^^^^^^^^^^^^^^ ^ +LL | where +LL | T: RefUnwindSafe, + | ------------- unsatisfied trait bound introduced here note: required for `ParseQuery` to implement `Query` --> $DIR/cycle-cache-err-60010.rs:37:10 | LL | impl Query for ParseQuery | ^^^^^^^^^ ^^^^^^^^^^ +LL | where +LL | DB: SourceDatabase, + | -------------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/traits/inductive-overflow/lifetime.rs b/tests/ui/traits/inductive-overflow/lifetime.rs index 004e477374a6..bf536d21cf97 100644 --- a/tests/ui/traits/inductive-overflow/lifetime.rs +++ b/tests/ui/traits/inductive-overflow/lifetime.rs @@ -16,6 +16,7 @@ struct C<'a>(&'a ()); struct X(T::P); impl NotAuto for Box {} //~ NOTE: required +//~^ NOTE unsatisfied trait bound introduced here impl NotAuto for X where T::P: NotAuto {} impl<'a> NotAuto for C<'a> {} diff --git a/tests/ui/traits/inductive-overflow/lifetime.stderr b/tests/ui/traits/inductive-overflow/lifetime.stderr index b72d53bddbc8..357e59991a3d 100644 --- a/tests/ui/traits/inductive-overflow/lifetime.stderr +++ b/tests/ui/traits/inductive-overflow/lifetime.stderr @@ -1,5 +1,5 @@ error[E0275]: overflow evaluating the requirement `X>: NotAuto` - --> $DIR/lifetime.rs:28:5 + --> $DIR/lifetime.rs:29:5 | LL | is_send::>>(); | ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -8,11 +8,13 @@ note: required for `Box>>` to implement `NotAuto` --> $DIR/lifetime.rs:18:18 | LL | impl NotAuto for Box {} - | ^^^^^^^ ^^^^^^ + | ------- ^^^^^^^ ^^^^^^ + | | + | unsatisfied trait bound introduced here = note: 3 redundant requirements hidden = note: required for `X>` to implement `NotAuto` note: required by a bound in `is_send` - --> $DIR/lifetime.rs:22:15 + --> $DIR/lifetime.rs:23:15 | LL | fn is_send() {} | ^^^^^^^ required by this bound in `is_send` diff --git a/tests/ui/traits/inductive-overflow/simultaneous.stderr b/tests/ui/traits/inductive-overflow/simultaneous.stderr index 09930e60efe4..e3b4ec07d236 100644 --- a/tests/ui/traits/inductive-overflow/simultaneous.stderr +++ b/tests/ui/traits/inductive-overflow/simultaneous.stderr @@ -8,7 +8,9 @@ note: required for `{integer}` to implement `Combo` --> $DIR/simultaneous.rs:11:34 | LL | impl Combo for T {} - | ^^^^^ ^ + | ---------- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_ee` --> $DIR/simultaneous.rs:13:13 | diff --git a/tests/ui/traits/inductive-overflow/supertrait.stderr b/tests/ui/traits/inductive-overflow/supertrait.stderr index 4b862cf79ce3..b537ecf17213 100644 --- a/tests/ui/traits/inductive-overflow/supertrait.stderr +++ b/tests/ui/traits/inductive-overflow/supertrait.stderr @@ -8,7 +8,9 @@ note: required for `NoClone` to implement `Magic` --> $DIR/supertrait.rs:5:16 | LL | impl Magic for T {} - | ^^^^^ ^ + | ----- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `copy` --> $DIR/supertrait.rs:7:12 | diff --git a/tests/ui/traits/issue-18400.stderr b/tests/ui/traits/issue-18400.stderr index 4394e6f7e05f..edaf08f490f1 100644 --- a/tests/ui/traits/issue-18400.stderr +++ b/tests/ui/traits/issue-18400.stderr @@ -9,7 +9,9 @@ note: required for `{integer}` to implement `Set<&[_]>` --> $DIR/issue-18400.rs:6:16 | LL | impl<'a, T, S> Set<&'a [T]> for S where - | ^^^^^^^^^^^^ ^ + | - ^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here = note: 128 redundant requirements hidden = note: required for `{integer}` to implement `Set<&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[_]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]>` diff --git a/tests/ui/traits/issue-91594.stderr b/tests/ui/traits/issue-91594.stderr index 9f9acf851135..6b314fa586d3 100644 --- a/tests/ui/traits/issue-91594.stderr +++ b/tests/ui/traits/issue-91594.stderr @@ -9,7 +9,9 @@ note: required for `Foo` to implement `Component` --> $DIR/issue-91594.rs:13:27 | LL | impl> Component for Foo { - | ^^^^^^^^^^^^ ^^^ + | ---------------- ^^^^^^^^^^^^ ^^^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr index 30cc76b2e1aa..ce690b749f55 100644 --- a/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr +++ b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr @@ -113,7 +113,9 @@ note: required for `Outer2` to implement `Sync` --> $DIR/negated-auto-traits-error.rs:14:22 | LL | unsafe impl Sync for Outer2 {} - | ^^^^ ^^^^^^^^^ + | ---- ^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_sync` --> $DIR/negated-auto-traits-error.rs:17:15 | diff --git a/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr index 53178328c56a..92d9d32cf9c7 100644 --- a/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr +++ b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr @@ -27,6 +27,9 @@ note: required for `A` to implement `V<_>` | LL | impl V for A | ^^^^ ^^^^ +LL | where +LL | T: I, + | ---- unsatisfied trait bound introduced here help: try using a fully qualified path to specify the expected types | LL | as V>::method(a); diff --git a/tests/ui/type-alias-impl-trait/issue-90400-2.stderr b/tests/ui/type-alias-impl-trait/issue-90400-2.stderr index 50b2dc0495d7..0c45046f5f51 100644 --- a/tests/ui/type-alias-impl-trait/issue-90400-2.stderr +++ b/tests/ui/type-alias-impl-trait/issue-90400-2.stderr @@ -8,7 +8,9 @@ note: required for `MyBaz` to implement `Baz` --> $DIR/issue-90400-2.rs:30:14 | LL | impl Baz for MyBaz { - | ^^^ ^^^^^^^^ + | --- ^^^ ^^^^^^^^ + | | + | unsatisfied trait bound introduced here help: consider restricting type parameter `B` | LL | type FooFn = impl Baz; diff --git a/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr b/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr index 95fb6f6a55ae..103636b6cdde 100644 --- a/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr +++ b/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr @@ -8,7 +8,9 @@ note: required for `()` to implement `ProofForConversion` --> $DIR/underconstrained_generic.rs:13:16 | LL | impl ProofForConversion for () { - | ^^^^^^^^^^^^^^^^^^^^^ ^^ + | ----- ^^^^^^^^^^^^^^^^^^^^^ ^^ + | | + | unsatisfied trait bound introduced here help: consider restricting type parameter `T` | LL | type Converter = impl ProofForConversion; From 70a8d8dcf3c07c3a43c3ee0561dfe5ce594ae365 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Fri, 6 Jan 2023 08:47:35 +0000 Subject: [PATCH 420/478] Allow codegen to unsize dyn* to dyn --- compiler/rustc_codegen_ssa/src/base.rs | 4 +--- tests/ui/dyn-star/dyn-star-to-dyn.rs | 9 +++++++++ tests/ui/dyn-star/dyn-star-to-dyn.stderr | 11 +++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 tests/ui/dyn-star/dyn-star-to-dyn.rs create mode 100644 tests/ui/dyn-star/dyn-star-to-dyn.stderr diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index d318c15d3422..f7312f6fcdaf 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -153,9 +153,7 @@ pub fn unsized_info<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>( ( &ty::Dynamic(ref data_a, _, src_dyn_kind), &ty::Dynamic(ref data_b, _, target_dyn_kind), - ) => { - assert_eq!(src_dyn_kind, target_dyn_kind); - + ) if src_dyn_kind == target_dyn_kind => { let old_info = old_info.expect("unsized_info: missing old info for trait upcasting coercion"); if data_a.principal_def_id() == data_b.principal_def_id() { diff --git a/tests/ui/dyn-star/dyn-star-to-dyn.rs b/tests/ui/dyn-star/dyn-star-to-dyn.rs new file mode 100644 index 000000000000..a6d9df9523af --- /dev/null +++ b/tests/ui/dyn-star/dyn-star-to-dyn.rs @@ -0,0 +1,9 @@ +// build-pass + +#![feature(dyn_star)] +//~^ WARN the feature `dyn_star` is incomplete and may not be safe to use and/or cause compiler crashes + +fn main() { + let x: dyn* Send = &(); + let x = Box::new(x) as Box; +} diff --git a/tests/ui/dyn-star/dyn-star-to-dyn.stderr b/tests/ui/dyn-star/dyn-star-to-dyn.stderr new file mode 100644 index 000000000000..03aedf5f797a --- /dev/null +++ b/tests/ui/dyn-star/dyn-star-to-dyn.stderr @@ -0,0 +1,11 @@ +warning: the feature `dyn_star` is incomplete and may not be safe to use and/or cause compiler crashes + --> $DIR/dyn-star-to-dyn.rs:3:12 + | +LL | #![feature(dyn_star)] + | ^^^^^^^^ + | + = note: see issue #102425 for more information + = note: `#[warn(incomplete_features)]` on by default + +warning: 1 warning emitted + From ede5c31af4388b1259138f4f7d8eb52daeae7f5f Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Fri, 6 Jan 2023 03:09:14 +0000 Subject: [PATCH 421/478] Be more specific about constructor `FnDef`s in type mismatch --- compiler/rustc_middle/src/ty/error.rs | 14 +++++++++++--- tests/ui/issues/issue-35241.stderr | 6 +++--- tests/ui/resolve/privacy-enum-ctor.stderr | 18 +++++++++--------- .../fn-or-tuple-struct-without-args.stderr | 18 +++++++++--------- .../typeck/issue-87181/empty-tuple-method.rs | 2 +- .../issue-87181/empty-tuple-method.stderr | 2 +- tests/ui/typeck/issue-87181/enum-variant.rs | 2 +- .../ui/typeck/issue-87181/enum-variant.stderr | 2 +- tests/ui/typeck/issue-87181/tuple-method.rs | 2 +- .../ui/typeck/issue-87181/tuple-method.stderr | 2 +- tests/ui/typeck/issue-96738.stderr | 2 +- 11 files changed, 39 insertions(+), 31 deletions(-) diff --git a/compiler/rustc_middle/src/ty/error.rs b/compiler/rustc_middle/src/ty/error.rs index 50554cf9a82c..5d394f71f0d7 100644 --- a/compiler/rustc_middle/src/ty/error.rs +++ b/compiler/rustc_middle/src/ty/error.rs @@ -2,10 +2,10 @@ use crate::traits::{ObligationCause, ObligationCauseCode}; use crate::ty::diagnostics::suggest_constraining_type_param; use crate::ty::print::{with_forced_trimmed_paths, FmtPrinter, Printer}; use crate::ty::{self, BoundRegionKind, Region, Ty, TyCtxt}; -use hir::def::DefKind; use rustc_errors::Applicability::{MachineApplicable, MaybeIncorrect}; use rustc_errors::{pluralize, Diagnostic, MultiSpan}; use rustc_hir as hir; +use rustc_hir::def::{CtorOf, DefKind}; use rustc_hir::def_id::DefId; use rustc_span::symbol::{sym, Symbol}; use rustc_span::{BytePos, Span}; @@ -319,7 +319,11 @@ impl<'tcx> Ty<'tcx> { .into() } } - ty::FnDef(..) => "fn item".into(), + ty::FnDef(def_id, ..) => match tcx.def_kind(def_id) { + DefKind::Ctor(CtorOf::Struct, _) => "struct constructor".into(), + DefKind::Ctor(CtorOf::Variant, _) => "enum constructor".into(), + _ => "fn item".into(), + }, ty::FnPtr(_) => "fn pointer".into(), ty::Dynamic(ref inner, ..) if let Some(principal) = inner.principal() => { format!("trait object `dyn {}`", tcx.def_path_str(principal.def_id())).into() @@ -366,7 +370,11 @@ impl<'tcx> Ty<'tcx> { _ => "reference", } .into(), - ty::FnDef(..) => "fn item".into(), + ty::FnDef(def_id, ..) => match tcx.def_kind(def_id) { + DefKind::Ctor(CtorOf::Struct, _) => "struct constructor".into(), + DefKind::Ctor(CtorOf::Variant, _) => "enum constructor".into(), + _ => "fn item".into(), + }, ty::FnPtr(_) => "fn pointer".into(), ty::Dynamic(..) => "trait object".into(), ty::Closure(..) => "closure".into(), diff --git a/tests/ui/issues/issue-35241.stderr b/tests/ui/issues/issue-35241.stderr index 42a78ed97e02..a01a8ffe76ee 100644 --- a/tests/ui/issues/issue-35241.stderr +++ b/tests/ui/issues/issue-35241.stderr @@ -5,12 +5,12 @@ LL | struct Foo(u32); | ---------- fn(u32) -> Foo {Foo} defined here LL | LL | fn test() -> Foo { Foo } - | --- ^^^ expected struct `Foo`, found fn item + | --- ^^^ expected struct `Foo`, found struct constructor | | | expected `Foo` because of return type | - = note: expected struct `Foo` - found fn item `fn(u32) -> Foo {Foo}` + = note: expected struct `Foo` + found struct constructor `fn(u32) -> Foo {Foo}` help: use parentheses to construct this tuple struct | LL | fn test() -> Foo { Foo(/* u32 */) } diff --git a/tests/ui/resolve/privacy-enum-ctor.stderr b/tests/ui/resolve/privacy-enum-ctor.stderr index d734fa76b4a3..d9dbfb9f5417 100644 --- a/tests/ui/resolve/privacy-enum-ctor.stderr +++ b/tests/ui/resolve/privacy-enum-ctor.stderr @@ -267,12 +267,12 @@ LL | Fn(u8), | -- fn(u8) -> Z {Z::Fn} defined here ... LL | let _: Z = Z::Fn; - | - ^^^^^ expected enum `Z`, found fn item + | - ^^^^^ expected enum `Z`, found enum constructor | | | expected due to this | - = note: expected enum `Z` - found fn item `fn(u8) -> Z {Z::Fn}` + = note: expected enum `Z` + found enum constructor `fn(u8) -> Z {Z::Fn}` help: use parentheses to construct this tuple variant | LL | let _: Z = Z::Fn(/* u8 */); @@ -308,12 +308,12 @@ LL | Fn(u8), | -- fn(u8) -> E {E::Fn} defined here ... LL | let _: E = m::E::Fn; - | - ^^^^^^^^ expected enum `E`, found fn item + | - ^^^^^^^^ expected enum `E`, found enum constructor | | | expected due to this | - = note: expected enum `E` - found fn item `fn(u8) -> E {E::Fn}` + = note: expected enum `E` + found enum constructor `fn(u8) -> E {E::Fn}` help: use parentheses to construct this tuple variant | LL | let _: E = m::E::Fn(/* u8 */); @@ -349,12 +349,12 @@ LL | Fn(u8), | -- fn(u8) -> E {E::Fn} defined here ... LL | let _: E = E::Fn; - | - ^^^^^ expected enum `E`, found fn item + | - ^^^^^ expected enum `E`, found enum constructor | | | expected due to this | - = note: expected enum `E` - found fn item `fn(u8) -> E {E::Fn}` + = note: expected enum `E` + found enum constructor `fn(u8) -> E {E::Fn}` help: use parentheses to construct this tuple variant | LL | let _: E = E::Fn(/* u8 */); diff --git a/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr b/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr index d0ddb34d9fe2..a92568ada4c9 100644 --- a/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr +++ b/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr @@ -23,12 +23,12 @@ LL | struct S(usize, usize); | -------- fn(usize, usize) -> S {S} defined here ... LL | let _: S = S; - | - ^ expected struct `S`, found fn item + | - ^ expected struct `S`, found struct constructor | | | expected due to this | - = note: expected struct `S` - found fn item `fn(usize, usize) -> S {S}` + = note: expected struct `S` + found struct constructor `fn(usize, usize) -> S {S}` help: use parentheses to construct this tuple struct | LL | let _: S = S(/* usize */, /* usize */); @@ -59,12 +59,12 @@ LL | struct V(); | -------- fn() -> V {V} defined here ... LL | let _: V = V; - | - ^ expected struct `V`, found fn item + | - ^ expected struct `V`, found struct constructor | | | expected due to this | - = note: expected struct `V` - found fn item `fn() -> V {V}` + = note: expected struct `V` + found struct constructor `fn() -> V {V}` help: use parentheses to construct this tuple struct | LL | let _: V = V(); @@ -113,12 +113,12 @@ LL | A(usize), | - fn(usize) -> E {E::A} defined here ... LL | let _: E = E::A; - | - ^^^^ expected enum `E`, found fn item + | - ^^^^ expected enum `E`, found enum constructor | | | expected due to this | - = note: expected enum `E` - found fn item `fn(usize) -> E {E::A}` + = note: expected enum `E` + found enum constructor `fn(usize) -> E {E::A}` help: use parentheses to construct this tuple variant | LL | let _: E = E::A(/* usize */); diff --git a/tests/ui/typeck/issue-87181/empty-tuple-method.rs b/tests/ui/typeck/issue-87181/empty-tuple-method.rs index be68ad32ae55..96b3f8dab8da 100644 --- a/tests/ui/typeck/issue-87181/empty-tuple-method.rs +++ b/tests/ui/typeck/issue-87181/empty-tuple-method.rs @@ -10,5 +10,5 @@ impl Foo { fn main() { let thing = Bar { bar: Foo }; thing.bar.foo(); - //~^ ERROR no method named `foo` found for fn item `fn() -> Foo {Foo}` in the current scope [E0599] + //~^ ERROR no method named `foo` found for struct constructor `fn() -> Foo {Foo}` in the current scope [E0599] } diff --git a/tests/ui/typeck/issue-87181/empty-tuple-method.stderr b/tests/ui/typeck/issue-87181/empty-tuple-method.stderr index 23e7b7cc363f..f0ca49e6d1e3 100644 --- a/tests/ui/typeck/issue-87181/empty-tuple-method.stderr +++ b/tests/ui/typeck/issue-87181/empty-tuple-method.stderr @@ -1,4 +1,4 @@ -error[E0599]: no method named `foo` found for fn item `fn() -> Foo {Foo}` in the current scope +error[E0599]: no method named `foo` found for struct constructor `fn() -> Foo {Foo}` in the current scope --> $DIR/empty-tuple-method.rs:12:15 | LL | thing.bar.foo(); diff --git a/tests/ui/typeck/issue-87181/enum-variant.rs b/tests/ui/typeck/issue-87181/enum-variant.rs index d87f99c3c5a1..ed01656ce72a 100644 --- a/tests/ui/typeck/issue-87181/enum-variant.rs +++ b/tests/ui/typeck/issue-87181/enum-variant.rs @@ -12,5 +12,5 @@ impl Foo { fn main() { let thing = Bar { bar: Foo::Tup }; thing.bar.foo(); - //~^ ERROR no method named `foo` found for fn item `fn() -> Foo {Foo::Tup}` in the current scope [E0599] + //~^ ERROR no method named `foo` found for enum constructor `fn() -> Foo {Foo::Tup}` in the current scope [E0599] } diff --git a/tests/ui/typeck/issue-87181/enum-variant.stderr b/tests/ui/typeck/issue-87181/enum-variant.stderr index 2247ea27021f..d313a887abd9 100644 --- a/tests/ui/typeck/issue-87181/enum-variant.stderr +++ b/tests/ui/typeck/issue-87181/enum-variant.stderr @@ -1,4 +1,4 @@ -error[E0599]: no method named `foo` found for fn item `fn() -> Foo {Foo::Tup}` in the current scope +error[E0599]: no method named `foo` found for enum constructor `fn() -> Foo {Foo::Tup}` in the current scope --> $DIR/enum-variant.rs:14:15 | LL | thing.bar.foo(); diff --git a/tests/ui/typeck/issue-87181/tuple-method.rs b/tests/ui/typeck/issue-87181/tuple-method.rs index e88f642b0707..6310984438c6 100644 --- a/tests/ui/typeck/issue-87181/tuple-method.rs +++ b/tests/ui/typeck/issue-87181/tuple-method.rs @@ -10,5 +10,5 @@ impl Foo { fn main() { let thing = Bar { bar: Foo }; thing.bar.foo(); - //~^ ERROR no method named `foo` found for fn item `fn(u8, i32) -> Foo {Foo}` in the current scope [E0599] + //~^ ERROR no method named `foo` found for struct constructor `fn(u8, i32) -> Foo {Foo}` in the current scope [E0599] } diff --git a/tests/ui/typeck/issue-87181/tuple-method.stderr b/tests/ui/typeck/issue-87181/tuple-method.stderr index e27c41858d32..de3dc15a54b1 100644 --- a/tests/ui/typeck/issue-87181/tuple-method.stderr +++ b/tests/ui/typeck/issue-87181/tuple-method.stderr @@ -1,4 +1,4 @@ -error[E0599]: no method named `foo` found for fn item `fn(u8, i32) -> Foo {Foo}` in the current scope +error[E0599]: no method named `foo` found for struct constructor `fn(u8, i32) -> Foo {Foo}` in the current scope --> $DIR/tuple-method.rs:12:15 | LL | thing.bar.foo(); diff --git a/tests/ui/typeck/issue-96738.stderr b/tests/ui/typeck/issue-96738.stderr index 0d4d87ef47e2..547cffffa2ee 100644 --- a/tests/ui/typeck/issue-96738.stderr +++ b/tests/ui/typeck/issue-96738.stderr @@ -1,4 +1,4 @@ -error[E0599]: no method named `nonexistent_method` found for fn item `fn(_) -> Option<_> {Option::<_>::Some}` in the current scope +error[E0599]: no method named `nonexistent_method` found for enum constructor `fn(_) -> Option<_> {Option::<_>::Some}` in the current scope --> $DIR/issue-96738.rs:2:10 | LL | Some.nonexistent_method(); From d375440dab2378dc3075755f388f2cbb242a3971 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Fri, 6 Jan 2023 03:33:57 +0000 Subject: [PATCH 422/478] label where constructor is defined and note that it should be called --- .../src/fn_ctxt/suggestions.rs | 18 ++++++++++--- .../substs-ppaux.normal.stderr | 8 +++--- .../substs-ppaux.verbose.stderr | 8 +++--- tests/ui/issues/issue-35241.stderr | 2 +- tests/ui/resolve/privacy-enum-ctor.stderr | 6 ++--- .../fn-or-tuple-struct-without-args.stderr | 26 +++++++++---------- 6 files changed, 39 insertions(+), 29 deletions(-) diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 91498265259d..3372a1b0dcbe 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs @@ -5,7 +5,7 @@ use crate::method::probe::{IsSuggestion, Mode, ProbeScope}; use rustc_ast::util::parser::{ExprPrecedence, PREC_POSTFIX}; use rustc_errors::{Applicability, Diagnostic, MultiSpan}; use rustc_hir as hir; -use rustc_hir::def::{CtorOf, DefKind}; +use rustc_hir::def::{CtorKind, CtorOf, DefKind}; use rustc_hir::lang_items::LangItem; use rustc_hir::{ Expr, ExprKind, GenericBound, Node, Path, QPath, Stmt, StmtKind, TyKind, WherePredicate, @@ -417,10 +417,20 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } else if self.suggest_else_fn_with_closure(err, expr, found, expected) { return true; } else if self.suggest_fn_call(err, expr, found, |output| self.can_coerce(output, expected)) - && let ty::FnDef(def_id, ..) = &found.kind() - && let Some(sp) = self.tcx.hir().span_if_local(*def_id) + && let ty::FnDef(def_id, ..) = *found.kind() + && let Some(sp) = self.tcx.hir().span_if_local(def_id) { - err.span_label(sp, format!("{found} defined here")); + let name = self.tcx.item_name(def_id); + let kind = self.tcx.def_kind(def_id); + if let DefKind::Ctor(of, CtorKind::Fn) = kind { + err.span_label(sp, format!("`{name}` defines {} constructor here, which should be called", match of { + CtorOf::Struct => "a struct", + CtorOf::Variant => "an enum variant", + })); + } else { + let descr = kind.descr(def_id); + err.span_label(sp, format!("{descr} `{name}` defined here")); + } return true; } else if self.check_for_cast(err, expr, found, expected, expected_ty_expr) { return true; diff --git a/tests/ui/associated-types/substs-ppaux.normal.stderr b/tests/ui/associated-types/substs-ppaux.normal.stderr index 3f180cf4f1f8..b50eac05c6bc 100644 --- a/tests/ui/associated-types/substs-ppaux.normal.stderr +++ b/tests/ui/associated-types/substs-ppaux.normal.stderr @@ -2,7 +2,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:16:17 | LL | fn bar<'a, T>() where T: 'a {} - | --------------------------- fn() {>::bar::<'static, char>} defined here + | --------------------------- associated function `bar` defined here ... LL | let x: () = >::bar::<'static, char>; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -20,7 +20,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:25:17 | LL | fn bar<'a, T>() where T: 'a {} - | --------------------------- fn() {>::bar::<'static, char>} defined here + | --------------------------- associated function `bar` defined here ... LL | let x: () = >::bar::<'static, char>; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -38,7 +38,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:33:17 | LL | fn baz() {} - | -------- fn() {>::baz} defined here + | -------- associated function `baz` defined here ... LL | let x: () = >::baz; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -56,7 +56,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:41:17 | LL | fn foo<'z>() where &'z (): Sized { - | -------------------------------- fn() {foo::<'static>} defined here + | -------------------------------- function `foo` defined here ... LL | let x: () = foo::<'static>; | -- ^^^^^^^^^^^^^^ expected `()`, found fn item diff --git a/tests/ui/associated-types/substs-ppaux.verbose.stderr b/tests/ui/associated-types/substs-ppaux.verbose.stderr index 16dd29de2c54..a81924d8b3c5 100644 --- a/tests/ui/associated-types/substs-ppaux.verbose.stderr +++ b/tests/ui/associated-types/substs-ppaux.verbose.stderr @@ -2,7 +2,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:16:17 | LL | fn bar<'a, T>() where T: 'a {} - | --------------------------- fn() {>::bar::} defined here + | --------------------------- associated function `bar` defined here ... LL | let x: () = >::bar::<'static, char>; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -20,7 +20,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:25:17 | LL | fn bar<'a, T>() where T: 'a {} - | --------------------------- fn() {>::bar::} defined here + | --------------------------- associated function `bar` defined here ... LL | let x: () = >::bar::<'static, char>; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -38,7 +38,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:33:17 | LL | fn baz() {} - | -------- fn() {>::baz} defined here + | -------- associated function `baz` defined here ... LL | let x: () = >::baz; | -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item @@ -56,7 +56,7 @@ error[E0308]: mismatched types --> $DIR/substs-ppaux.rs:41:17 | LL | fn foo<'z>() where &'z (): Sized { - | -------------------------------- fn() {foo::} defined here + | -------------------------------- function `foo` defined here ... LL | let x: () = foo::<'static>; | -- ^^^^^^^^^^^^^^ expected `()`, found fn item diff --git a/tests/ui/issues/issue-35241.stderr b/tests/ui/issues/issue-35241.stderr index a01a8ffe76ee..d600e934bd57 100644 --- a/tests/ui/issues/issue-35241.stderr +++ b/tests/ui/issues/issue-35241.stderr @@ -2,7 +2,7 @@ error[E0308]: mismatched types --> $DIR/issue-35241.rs:3:20 | LL | struct Foo(u32); - | ---------- fn(u32) -> Foo {Foo} defined here + | ---------- `Foo` defines a struct constructor here, which should be called LL | LL | fn test() -> Foo { Foo } | --- ^^^ expected struct `Foo`, found struct constructor diff --git a/tests/ui/resolve/privacy-enum-ctor.stderr b/tests/ui/resolve/privacy-enum-ctor.stderr index d9dbfb9f5417..a24fe4d23ea2 100644 --- a/tests/ui/resolve/privacy-enum-ctor.stderr +++ b/tests/ui/resolve/privacy-enum-ctor.stderr @@ -264,7 +264,7 @@ error[E0308]: mismatched types --> $DIR/privacy-enum-ctor.rs:27:20 | LL | Fn(u8), - | -- fn(u8) -> Z {Z::Fn} defined here + | -- `Fn` defines an enum variant constructor here, which should be called ... LL | let _: Z = Z::Fn; | - ^^^^^ expected enum `Z`, found enum constructor @@ -305,7 +305,7 @@ error[E0308]: mismatched types --> $DIR/privacy-enum-ctor.rs:43:16 | LL | Fn(u8), - | -- fn(u8) -> E {E::Fn} defined here + | -- `Fn` defines an enum variant constructor here, which should be called ... LL | let _: E = m::E::Fn; | - ^^^^^^^^ expected enum `E`, found enum constructor @@ -346,7 +346,7 @@ error[E0308]: mismatched types --> $DIR/privacy-enum-ctor.rs:51:16 | LL | Fn(u8), - | -- fn(u8) -> E {E::Fn} defined here + | -- `Fn` defines an enum variant constructor here, which should be called ... LL | let _: E = E::Fn; | - ^^^^^ expected enum `E`, found enum constructor diff --git a/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr b/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr index a92568ada4c9..4cbcd31fa5ec 100644 --- a/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr +++ b/tests/ui/suggestions/fn-or-tuple-struct-without-args.stderr @@ -2,7 +2,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:29:20 | LL | fn foo(a: usize, b: usize) -> usize { a } - | ----------------------------------- fn(usize, usize) -> usize {foo} defined here + | ----------------------------------- function `foo` defined here ... LL | let _: usize = foo; | ----- ^^^ expected `usize`, found fn item @@ -20,7 +20,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:30:16 | LL | struct S(usize, usize); - | -------- fn(usize, usize) -> S {S} defined here + | -------- `S` defines a struct constructor here, which should be called ... LL | let _: S = S; | - ^ expected struct `S`, found struct constructor @@ -38,7 +38,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:31:20 | LL | fn bar() -> usize { 42 } - | ----------------- fn() -> usize {bar} defined here + | ----------------- function `bar` defined here ... LL | let _: usize = bar; | ----- ^^^ expected `usize`, found fn item @@ -56,7 +56,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:32:16 | LL | struct V(); - | -------- fn() -> V {V} defined here + | -------- `V` defines a struct constructor here, which should be called ... LL | let _: V = V; | - ^ expected struct `V`, found struct constructor @@ -74,7 +74,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:33:20 | LL | fn baz(x: usize, y: usize) -> usize { x } - | ----------------------------------- fn(usize, usize) -> usize {<_ as T>::baz} defined here + | ----------------------------------- associated function `baz` defined here ... LL | let _: usize = T::baz; | ----- ^^^^^^ expected `usize`, found fn item @@ -92,7 +92,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:34:20 | LL | fn bat(x: usize) -> usize { 42 } - | ------------------------- fn(usize) -> usize {<_ as T>::bat} defined here + | ------------------------- associated function `bat` defined here ... LL | let _: usize = T::bat; | ----- ^^^^^^ expected `usize`, found fn item @@ -110,7 +110,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:35:16 | LL | A(usize), - | - fn(usize) -> E {E::A} defined here + | - `A` defines an enum variant constructor here, which should be called ... LL | let _: E = E::A; | - ^^^^ expected enum `E`, found enum constructor @@ -134,7 +134,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:37:20 | LL | fn baz(x: usize, y: usize) -> usize { x } - | ----------------------------------- fn(usize, usize) -> usize {::baz} defined here + | ----------------------------------- associated function `baz` defined here ... LL | let _: usize = X::baz; | ----- ^^^^^^ expected `usize`, found fn item @@ -152,7 +152,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:38:20 | LL | fn bat(x: usize) -> usize { 42 } - | ------------------------- fn(usize) -> usize {::bat} defined here + | ------------------------- associated function `bat` defined here ... LL | let _: usize = X::bat; | ----- ^^^^^^ expected `usize`, found fn item @@ -170,7 +170,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:39:20 | LL | fn bax(x: usize) -> usize { 42 } - | ------------------------- fn(usize) -> usize {::bax} defined here + | ------------------------- associated function `bax` defined here ... LL | let _: usize = X::bax; | ----- ^^^^^^ expected `usize`, found fn item @@ -188,7 +188,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:40:20 | LL | fn bach(x: usize) -> usize; - | --------------------------- fn(usize) -> usize {::bach} defined here + | --------------------------- associated function `bach` defined here ... LL | let _: usize = X::bach; | ----- ^^^^^^^ expected `usize`, found fn item @@ -206,7 +206,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:41:20 | LL | fn ban(&self) -> usize { 42 } - | ---------------------- for<'a> fn(&'a X) -> usize {::ban} defined here + | ---------------------- associated function `ban` defined here ... LL | let _: usize = X::ban; | ----- ^^^^^^ expected `usize`, found fn item @@ -224,7 +224,7 @@ error[E0308]: mismatched types --> $DIR/fn-or-tuple-struct-without-args.rs:42:20 | LL | fn bal(&self) -> usize; - | ----------------------- for<'a> fn(&'a X) -> usize {::bal} defined here + | ----------------------- associated function `bal` defined here ... LL | let _: usize = X::bal; | ----- ^^^^^^ expected `usize`, found fn item From 959616ef44fe919f297bba1c3ddc65bd8f2432fc Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sat, 31 Dec 2022 03:03:28 +0000 Subject: [PATCH 423/478] Handle inference variables in CollectAllMismatches correctly --- .../traits/error_reporting/method_chain.rs | 13 ++++++---- .../ct-var-in-collect_all_mismatches.rs | 20 ++++++++++++++++ .../ct-var-in-collect_all_mismatches.stderr | 22 +++++++++++++++++ .../invalid-iterator-chain-with-int-infer.rs | 4 ++++ ...valid-iterator-chain-with-int-infer.stderr | 24 +++++++++++++++++++ 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 tests/ui/consts/ct-var-in-collect_all_mismatches.rs create mode 100644 tests/ui/consts/ct-var-in-collect_all_mismatches.stderr create mode 100644 tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs create mode 100644 tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/method_chain.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/method_chain.rs index 27c207528c73..ba9ee57d4099 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/method_chain.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/method_chain.rs @@ -55,7 +55,7 @@ impl<'a, 'tcx> TypeRelation<'tcx> for CollectAllMismatches<'a, 'tcx> { fn tys(&mut self, a: Ty<'tcx>, b: Ty<'tcx>) -> RelateResult<'tcx, Ty<'tcx>> { self.infcx.probe(|_| { - if a.is_ty_infer() || b.is_ty_infer() { + if a.is_ty_var() || b.is_ty_var() { Ok(a) } else { self.infcx.super_combine_tys(self, a, b).or_else(|e| { @@ -71,10 +71,13 @@ impl<'a, 'tcx> TypeRelation<'tcx> for CollectAllMismatches<'a, 'tcx> { a: ty::Const<'tcx>, b: ty::Const<'tcx>, ) -> RelateResult<'tcx, ty::Const<'tcx>> { - if a == b { - return Ok(a); - } - relate::super_relate_consts(self, a, b) // could do something similar here for constants! + self.infcx.probe(|_| { + if a.is_ct_infer() || b.is_ct_infer() { + Ok(a) + } else { + relate::super_relate_consts(self, a, b) // could do something similar here for constants! + } + }) } fn binders>( diff --git a/tests/ui/consts/ct-var-in-collect_all_mismatches.rs b/tests/ui/consts/ct-var-in-collect_all_mismatches.rs new file mode 100644 index 000000000000..5fb633de9831 --- /dev/null +++ b/tests/ui/consts/ct-var-in-collect_all_mismatches.rs @@ -0,0 +1,20 @@ +struct Foo { + array: [T; N], +} + +trait Bar {} + +impl Foo { + fn trigger(self) { + self.unsatisfied() + //~^ ERROR the trait bound `T: Bar` is not satisfied + } + + fn unsatisfied(self) + where + T: Bar, + { + } +} + +fn main() {} diff --git a/tests/ui/consts/ct-var-in-collect_all_mismatches.stderr b/tests/ui/consts/ct-var-in-collect_all_mismatches.stderr new file mode 100644 index 000000000000..43fba2573ff6 --- /dev/null +++ b/tests/ui/consts/ct-var-in-collect_all_mismatches.stderr @@ -0,0 +1,22 @@ +error[E0277]: the trait bound `T: Bar` is not satisfied + --> $DIR/ct-var-in-collect_all_mismatches.rs:9:14 + | +LL | self.unsatisfied() + | ^^^^^^^^^^^ the trait `Bar` is not implemented for `T` + | +note: required by a bound in `Foo::::unsatisfied` + --> $DIR/ct-var-in-collect_all_mismatches.rs:15:12 + | +LL | fn unsatisfied(self) + | ----------- required by a bound in this +LL | where +LL | T: Bar, + | ^^^^^^ required by this bound in `Foo::::unsatisfied` +help: consider restricting type parameter `T` + | +LL | impl, const N: usize> Foo { + | ++++++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs new file mode 100644 index 000000000000..882a1d139544 --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs @@ -0,0 +1,4 @@ +fn main() { + let x = Some(()).iter().map(|()| 1).sum::(); + //~^ ERROR a value of type `f32` cannot be made by summing an iterator over elements of type `{integer}` +} diff --git a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr new file mode 100644 index 000000000000..3cb5e44c7110 --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr @@ -0,0 +1,24 @@ +error[E0277]: a value of type `f32` cannot be made by summing an iterator over elements of type `{integer}` + --> $DIR/invalid-iterator-chain-with-int-infer.rs:2:41 + | +LL | let x = Some(()).iter().map(|()| 1).sum::(); + | ^^^ value of type `f32` cannot be made by summing a `std::iter::Iterator` + | + = help: the trait `Sum<{integer}>` is not implemented for `f32` + = help: the following other types implement trait `Sum`: + > + +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain-with-int-infer.rs:2:29 + | +LL | let x = Some(()).iter().map(|()| 1).sum::(); + | -------- ------ ^^^^^^^^^^^ `Iterator::Item` changed to `{integer}` here + | | | + | | `Iterator::Item` is `&()` here + | this expression has type `Option<()>` +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. From 4e30ad8d60e920f486fd1462939dbdaf3bd4c544 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Fri, 30 Dec 2022 21:51:12 +0000 Subject: [PATCH 424/478] Reuse ErrorGuaranteed during relation --- compiler/rustc_middle/src/ty/_match.rs | 4 +++- compiler/rustc_middle/src/ty/relate.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_middle/src/ty/_match.rs b/compiler/rustc_middle/src/ty/_match.rs index cd147d7e5581..b9c5a4e0d0d4 100644 --- a/compiler/rustc_middle/src/ty/_match.rs +++ b/compiler/rustc_middle/src/ty/_match.rs @@ -89,7 +89,9 @@ impl<'tcx> TypeRelation<'tcx> for Match<'tcx> { Err(TypeError::Sorts(relate::expected_found(self, a, b))) } - (&ty::Error(_), _) | (_, &ty::Error(_)) => Ok(self.tcx().ty_error()), + (&ty::Error(guar), _) | (_, &ty::Error(guar)) => { + Ok(self.tcx().ty_error_with_guaranteed(guar)) + } _ => relate::super_relate_tys(self, a, b), } diff --git a/compiler/rustc_middle/src/ty/relate.rs b/compiler/rustc_middle/src/ty/relate.rs index 4d34ca3d66b5..65fd8d9753de 100644 --- a/compiler/rustc_middle/src/ty/relate.rs +++ b/compiler/rustc_middle/src/ty/relate.rs @@ -414,7 +414,7 @@ pub fn super_relate_tys<'tcx, R: TypeRelation<'tcx>>( bug!("bound types encountered in super_relate_tys") } - (&ty::Error(_), _) | (_, &ty::Error(_)) => Ok(tcx.ty_error()), + (&ty::Error(guar), _) | (_, &ty::Error(guar)) => Ok(tcx.ty_error_with_guaranteed(guar)), (&ty::Never, _) | (&ty::Char, _) From 83fbc71d021d2aa741ad18890e7a51a28830d45e Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sun, 1 Jan 2023 23:48:10 +0000 Subject: [PATCH 425/478] Filter impl and where-clause candidates that reference errors --- .../src/traits/select/candidate_assembly.rs | 3 +- .../src/traits/select/mod.rs | 3 ++ tests/ui/c-variadic/issue-86053-1.rs | 2 +- tests/ui/c-variadic/issue-86053-1.stderr | 22 +--------- .../issue-72787.min.stderr | 43 ++----------------- .../generic_const_exprs/issue-72787.rs | 2 - tests/ui/traits/ignore-err-impls.rs | 9 ++++ tests/ui/traits/ignore-err-impls.stderr | 11 +++++ tests/ui/where-clauses/ignore-err-clauses.rs | 14 ++++++ .../where-clauses/ignore-err-clauses.stderr | 9 ++++ 10 files changed, 54 insertions(+), 64 deletions(-) create mode 100644 tests/ui/traits/ignore-err-impls.rs create mode 100644 tests/ui/traits/ignore-err-impls.stderr create mode 100644 tests/ui/where-clauses/ignore-err-clauses.rs create mode 100644 tests/ui/where-clauses/ignore-err-clauses.stderr diff --git a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs index c54d901e9b10..170c1673dbd7 100644 --- a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs +++ b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs @@ -174,7 +174,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { .param_env .caller_bounds() .iter() - .filter_map(|o| o.to_opt_poly_trait_pred()); + .filter_map(|p| p.to_opt_poly_trait_pred()) + .filter(|p| !p.references_error()); // Micro-optimization: filter out predicates relating to different traits. let matching_bounds = diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs index 3f14491f8032..2615e2622821 100644 --- a/compiler/rustc_trait_selection/src/traits/select/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs @@ -2377,6 +2377,9 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { let impl_substs = self.infcx.fresh_substs_for_item(obligation.cause.span, impl_def_id); let impl_trait_ref = impl_trait_ref.subst(self.tcx(), impl_substs); + if impl_trait_ref.references_error() { + return Err(()); + } debug!(?impl_trait_ref); diff --git a/tests/ui/c-variadic/issue-86053-1.rs b/tests/ui/c-variadic/issue-86053-1.rs index b30548e19f9f..49d5c0390bc1 100644 --- a/tests/ui/c-variadic/issue-86053-1.rs +++ b/tests/ui/c-variadic/issue-86053-1.rs @@ -2,7 +2,7 @@ // error-pattern:unexpected `self` parameter in function // error-pattern:`...` must be the last argument of a C-variadic function // error-pattern:cannot find type `F` in this scope -// error-pattern:in type `&'a &'b usize`, reference has a longer lifetime than the data it references + #![feature(c_variadic)] #![crate_type="lib"] diff --git a/tests/ui/c-variadic/issue-86053-1.stderr b/tests/ui/c-variadic/issue-86053-1.stderr index d1f13d52362d..5a02f4aa93a9 100644 --- a/tests/ui/c-variadic/issue-86053-1.stderr +++ b/tests/ui/c-variadic/issue-86053-1.stderr @@ -76,24 +76,6 @@ help: you might be missing a type parameter LL | fn ordering4 < 'a , 'b, F > ( a : , self , self , self , | +++ -error[E0491]: in type `&'a &'b usize`, reference has a longer lifetime than the data it references - --> $DIR/issue-86053-1.rs:11:52 - | -LL | self , ... , self , self , ... ) where F : FnOnce ( & 'a & 'b usize ) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - | -note: the pointer is valid for the lifetime `'a` as defined here - --> $DIR/issue-86053-1.rs:10:16 - | -LL | fn ordering4 < 'a , 'b > ( a : , self , self , self , - | ^^ -note: but the referenced data is only valid for the lifetime `'b` as defined here - --> $DIR/issue-86053-1.rs:10:21 - | -LL | fn ordering4 < 'a , 'b > ( a : , self , self , self , - | ^^ +error: aborting due to 11 previous errors -error: aborting due to 12 previous errors - -Some errors have detailed explanations: E0412, E0491. -For more information about an error, try `rustc --explain E0412`. +For more information about this error, try `rustc --explain E0412`. diff --git a/tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr b/tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr index 0af5493f8167..ea6f5f692765 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr +++ b/tests/ui/const-generics/generic_const_exprs/issue-72787.min.stderr @@ -17,7 +17,7 @@ LL | Condition<{ LHS <= RHS }>: True = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions error: generic parameters may not be used in const operations - --> $DIR/issue-72787.rs:25:25 + --> $DIR/issue-72787.rs:23:25 | LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, | ^ cannot perform const operation using `I` @@ -26,7 +26,7 @@ LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions error: generic parameters may not be used in const operations - --> $DIR/issue-72787.rs:25:36 + --> $DIR/issue-72787.rs:23:36 | LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, | ^ cannot perform const operation using `J` @@ -34,42 +34,5 @@ LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, = help: const parameters may only be used as standalone arguments, i.e. `J` = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions -error[E0283]: type annotations needed: cannot satisfy `IsLessOrEqual: True` - --> $DIR/issue-72787.rs:21:26 - | -LL | IsLessOrEqual: True, - | ^^^^ - | -note: multiple `impl`s or `where` clauses satisfying `IsLessOrEqual: True` found - --> $DIR/issue-72787.rs:10:1 - | -LL | impl True for IsLessOrEqual where - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -LL | IsLessOrEqual: True, - | ^^^^ -... -LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, - | ^^^^ +error: aborting due to 4 previous errors -error[E0283]: type annotations needed: cannot satisfy `IsLessOrEqual: True` - --> $DIR/issue-72787.rs:21:26 - | -LL | IsLessOrEqual: True, - | ^^^^ - | -note: multiple `impl`s or `where` clauses satisfying `IsLessOrEqual: True` found - --> $DIR/issue-72787.rs:10:1 - | -LL | impl True for IsLessOrEqual where - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -LL | IsLessOrEqual: True, - | ^^^^ -... -LL | IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, - | ^^^^ - -error: aborting due to 6 previous errors - -For more information about this error, try `rustc --explain E0283`. diff --git a/tests/ui/const-generics/generic_const_exprs/issue-72787.rs b/tests/ui/const-generics/generic_const_exprs/issue-72787.rs index c651bf1c8de9..657fec2e9cb7 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-72787.rs +++ b/tests/ui/const-generics/generic_const_exprs/issue-72787.rs @@ -19,8 +19,6 @@ struct S; impl S where IsLessOrEqual: True, -//[min]~^ Error type annotations needed -//[min]~| Error type annotations needed IsLessOrEqual: True, IsLessOrEqual<{ 8 - I }, { 8 - J }>: True, //[min]~^ Error generic parameters may not be used in const operations diff --git a/tests/ui/traits/ignore-err-impls.rs b/tests/ui/traits/ignore-err-impls.rs new file mode 100644 index 000000000000..67e880b006a7 --- /dev/null +++ b/tests/ui/traits/ignore-err-impls.rs @@ -0,0 +1,9 @@ +pub struct S; + +trait Generic {} + +impl<'a, T> Generic<&'a T> for S {} +impl Generic for S {} +//~^ ERROR cannot find type `Type` in this scope + +fn main() {} diff --git a/tests/ui/traits/ignore-err-impls.stderr b/tests/ui/traits/ignore-err-impls.stderr new file mode 100644 index 000000000000..1390106a2912 --- /dev/null +++ b/tests/ui/traits/ignore-err-impls.stderr @@ -0,0 +1,11 @@ +error[E0412]: cannot find type `Type` in this scope + --> $DIR/ignore-err-impls.rs:6:14 + | +LL | impl Generic for S {} + | - ^^^^ not found in this scope + | | + | help: you might be missing a type parameter: `` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0412`. diff --git a/tests/ui/where-clauses/ignore-err-clauses.rs b/tests/ui/where-clauses/ignore-err-clauses.rs new file mode 100644 index 000000000000..c76f0e1a8b2b --- /dev/null +++ b/tests/ui/where-clauses/ignore-err-clauses.rs @@ -0,0 +1,14 @@ +use std::ops::Add; + +fn dbl(x: T) -> ::Output +where + T: Copy + Add, + UUU: Copy, + //~^ ERROR cannot find type `UUU` in this scope +{ + x + x +} + +fn main() { + println!("{}", dbl(3)); +} diff --git a/tests/ui/where-clauses/ignore-err-clauses.stderr b/tests/ui/where-clauses/ignore-err-clauses.stderr new file mode 100644 index 000000000000..cfddc3e10b64 --- /dev/null +++ b/tests/ui/where-clauses/ignore-err-clauses.stderr @@ -0,0 +1,9 @@ +error[E0412]: cannot find type `UUU` in this scope + --> $DIR/ignore-err-clauses.rs:6:5 + | +LL | UUU: Copy, + | ^^^ not found in this scope + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0412`. From c8334ce60cce9571fcfdea31a3e67e3933fb7665 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 27 Dec 2022 00:39:36 +0000 Subject: [PATCH 426/478] Move autoderef to rustc_hir_analysis --- .../locales/en-US/hir_analysis.ftl | 4 ++ .../locales/en-US/trait_selection.ftl | 4 -- .../src/autoderef.rs | 4 ++ .../rustc_hir_analysis/src/check/wfcheck.rs | 3 +- compiler/rustc_hir_analysis/src/errors.rs | 12 ++++++ compiler/rustc_hir_analysis/src/lib.rs | 1 + compiler/rustc_hir_typeck/src/autoderef.rs | 2 +- compiler/rustc_hir_typeck/src/callee.rs | 2 +- compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs | 10 ++++- compiler/rustc_hir_typeck/src/method/probe.rs | 2 +- compiler/rustc_hir_typeck/src/place_op.rs | 2 +- .../src/infer/error_reporting/mod.rs | 7 ++- compiler/rustc_infer/src/infer/mod.rs | 4 ++ compiler/rustc_trait_selection/src/errors.rs | 13 ------ compiler/rustc_trait_selection/src/lib.rs | 1 - .../src/traits/error_reporting/suggestions.rs | 43 ++++++++++--------- 16 files changed, 69 insertions(+), 45 deletions(-) rename compiler/{rustc_trait_selection => rustc_hir_analysis}/src/autoderef.rs (98%) diff --git a/compiler/rustc_error_messages/locales/en-US/hir_analysis.ftl b/compiler/rustc_error_messages/locales/en-US/hir_analysis.ftl index 26cdf8a58f3f..41f458f6c178 100644 --- a/compiler/rustc_error_messages/locales/en-US/hir_analysis.ftl +++ b/compiler/rustc_error_messages/locales/en-US/hir_analysis.ftl @@ -120,3 +120,7 @@ hir_analysis_self_in_impl_self = hir_analysis_linkage_type = invalid type for variable with `#[linkage]` attribute + +hir_analysis_auto_deref_reached_recursion_limit = reached the recursion limit while auto-dereferencing `{$ty}` + .label = deref recursion limit reached + .help = consider increasing the recursion limit by adding a `#![recursion_limit = "{$suggested_limit}"]` attribute to your crate (`{$crate_name}`) diff --git a/compiler/rustc_error_messages/locales/en-US/trait_selection.ftl b/compiler/rustc_error_messages/locales/en-US/trait_selection.ftl index 004e0ab18969..14eb4a5502d5 100644 --- a/compiler/rustc_error_messages/locales/en-US/trait_selection.ftl +++ b/compiler/rustc_error_messages/locales/en-US/trait_selection.ftl @@ -2,10 +2,6 @@ trait_selection_dump_vtable_entries = vtable entries for `{$trait_ref}`: {$entri trait_selection_unable_to_construct_constant_value = unable to construct a constant value for the unevaluated constant {$unevaluated} -trait_selection_auto_deref_reached_recursion_limit = reached the recursion limit while auto-dereferencing `{$ty}` - .label = deref recursion limit reached - .help = consider increasing the recursion limit by adding a `#![recursion_limit = "{$suggested_limit}"]` attribute to your crate (`{$crate_name}`) - trait_selection_empty_on_clause_in_rustc_on_unimplemented = empty `on`-clause in `#[rustc_on_unimplemented]` .label = empty on-clause here diff --git a/compiler/rustc_trait_selection/src/autoderef.rs b/compiler/rustc_hir_analysis/src/autoderef.rs similarity index 98% rename from compiler/rustc_trait_selection/src/autoderef.rs rename to compiler/rustc_hir_analysis/src/autoderef.rs index e988c77a064f..730560cc6868 100644 --- a/compiler/rustc_trait_selection/src/autoderef.rs +++ b/compiler/rustc_hir_analysis/src/autoderef.rs @@ -178,6 +178,10 @@ impl<'a, 'tcx> Autoderef<'a, 'tcx> { self.state.obligations } + pub fn current_obligations(&self) -> Vec> { + self.state.obligations.clone() + } + pub fn steps(&self) -> &[(Ty<'tcx>, AutoderefKind)] { &self.state.steps } diff --git a/compiler/rustc_hir_analysis/src/check/wfcheck.rs b/compiler/rustc_hir_analysis/src/check/wfcheck.rs index e9baab594530..d1f4dbc8d845 100644 --- a/compiler/rustc_hir_analysis/src/check/wfcheck.rs +++ b/compiler/rustc_hir_analysis/src/check/wfcheck.rs @@ -1,4 +1,6 @@ +use crate::autoderef::Autoderef; use crate::constrained_generic_params::{identify_constrained_generic_params, Parameter}; + use hir::def::DefKind; use rustc_ast as ast; use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexSet}; @@ -22,7 +24,6 @@ use rustc_session::parse::feature_err; use rustc_span::symbol::{sym, Ident, Symbol}; use rustc_span::{Span, DUMMY_SP}; use rustc_target::spec::abi::Abi; -use rustc_trait_selection::autoderef::Autoderef; use rustc_trait_selection::traits::error_reporting::TypeErrCtxtExt; use rustc_trait_selection::traits::outlives_bounds::InferCtxtExt as _; use rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt as _; diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs index d383fcacb3a9..04f5f3f62765 100644 --- a/compiler/rustc_hir_analysis/src/errors.rs +++ b/compiler/rustc_hir_analysis/src/errors.rs @@ -300,3 +300,15 @@ pub(crate) struct LinkageType { #[primary_span] pub span: Span, } + +#[derive(Diagnostic)] +#[help] +#[diag(hir_analysis_auto_deref_reached_recursion_limit, code = "E0055")] +pub struct AutoDerefReachedRecursionLimit<'a> { + #[primary_span] + #[label] + pub span: Span, + pub ty: Ty<'a>, + pub suggested_limit: rustc_session::Limit, + pub crate_name: Symbol, +} diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs index 2058832d5fdc..65c1d7f373a3 100644 --- a/compiler/rustc_hir_analysis/src/lib.rs +++ b/compiler/rustc_hir_analysis/src/lib.rs @@ -84,6 +84,7 @@ extern crate rustc_middle; pub mod check; pub mod astconv; +pub mod autoderef; mod bounds; mod check_unused; mod coherence; diff --git a/compiler/rustc_hir_typeck/src/autoderef.rs b/compiler/rustc_hir_typeck/src/autoderef.rs index 41b52a4c4a9f..7873257c4e3d 100644 --- a/compiler/rustc_hir_typeck/src/autoderef.rs +++ b/compiler/rustc_hir_typeck/src/autoderef.rs @@ -2,11 +2,11 @@ use super::method::MethodCallee; use super::{FnCtxt, PlaceOp}; +use rustc_hir_analysis::autoderef::{Autoderef, AutoderefKind}; use rustc_infer::infer::InferOk; use rustc_middle::ty::adjustment::{Adjust, Adjustment, OverloadedDeref}; use rustc_middle::ty::{self, Ty}; use rustc_span::Span; -use rustc_trait_selection::autoderef::{Autoderef, AutoderefKind}; use std::iter; diff --git a/compiler/rustc_hir_typeck/src/callee.rs b/compiler/rustc_hir_typeck/src/callee.rs index 3b664363d232..8d417290407e 100644 --- a/compiler/rustc_hir_typeck/src/callee.rs +++ b/compiler/rustc_hir_typeck/src/callee.rs @@ -8,6 +8,7 @@ use rustc_errors::{struct_span_err, Applicability, Diagnostic, ErrorGuaranteed, use rustc_hir as hir; use rustc_hir::def::{self, CtorKind, Namespace, Res}; use rustc_hir::def_id::DefId; +use rustc_hir_analysis::autoderef::Autoderef; use rustc_infer::{ infer, traits::{self, Obligation}, @@ -25,7 +26,6 @@ use rustc_span::def_id::LocalDefId; use rustc_span::symbol::{sym, Ident}; use rustc_span::Span; use rustc_target::spec::abi; -use rustc_trait_selection::autoderef::Autoderef; use rustc_trait_selection::infer::InferCtxtExt as _; use rustc_trait_selection::traits::error_reporting::DefIdOrName; use rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt as _; diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs index 6347b9a69a00..27db4d27b609 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs @@ -20,7 +20,7 @@ use rustc_middle::ty::subst::GenericArgKind; use rustc_middle::ty::{self, Const, Ty, TyCtxt, TypeVisitable}; use rustc_session::Session; use rustc_span::symbol::Ident; -use rustc_span::{self, Span}; +use rustc_span::{self, Span, DUMMY_SP}; use rustc_trait_selection::traits::{ObligationCause, ObligationCauseCode, ObligationCtxt}; use std::cell::{Cell, RefCell}; @@ -175,6 +175,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { fn_sig }) }), + autoderef_steps: Box::new(|ty| { + let mut autoderef = self.autoderef(DUMMY_SP, ty).silence_errors(); + let mut steps = vec![]; + while let Some((ty, _)) = autoderef.next() { + steps.push((ty, autoderef.current_obligations())); + } + steps + }), } } diff --git a/compiler/rustc_hir_typeck/src/method/probe.rs b/compiler/rustc_hir_typeck/src/method/probe.rs index 5d8383170f0d..ba9c0c8d15e7 100644 --- a/compiler/rustc_hir_typeck/src/method/probe.rs +++ b/compiler/rustc_hir_typeck/src/method/probe.rs @@ -9,6 +9,7 @@ use rustc_data_structures::fx::FxHashSet; use rustc_errors::Applicability; use rustc_hir as hir; use rustc_hir::def::DefKind; +use rustc_hir_analysis::autoderef::{self, Autoderef}; use rustc_infer::infer::canonical::OriginalQueryValues; use rustc_infer::infer::canonical::{Canonical, QueryResponse}; use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind}; @@ -29,7 +30,6 @@ use rustc_span::lev_distance::{ }; use rustc_span::symbol::sym; use rustc_span::{symbol::Ident, Span, Symbol, DUMMY_SP}; -use rustc_trait_selection::autoderef::{self, Autoderef}; use rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt; use rustc_trait_selection::traits::query::method_autoderef::MethodAutoderefBadTy; use rustc_trait_selection::traits::query::method_autoderef::{ diff --git a/compiler/rustc_hir_typeck/src/place_op.rs b/compiler/rustc_hir_typeck/src/place_op.rs index a0f048fc09b9..ae0df5aa8f1c 100644 --- a/compiler/rustc_hir_typeck/src/place_op.rs +++ b/compiler/rustc_hir_typeck/src/place_op.rs @@ -3,6 +3,7 @@ use crate::{has_expected_num_generic_args, FnCtxt, PlaceOp}; use rustc_ast as ast; use rustc_errors::Applicability; use rustc_hir as hir; +use rustc_hir_analysis::autoderef::Autoderef; use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind}; use rustc_infer::infer::InferOk; use rustc_middle::ty::adjustment::{Adjust, Adjustment, OverloadedDeref, PointerCast}; @@ -10,7 +11,6 @@ use rustc_middle::ty::adjustment::{AllowTwoPhase, AutoBorrow, AutoBorrowMutabili use rustc_middle::ty::{self, Ty}; use rustc_span::symbol::{sym, Ident}; use rustc_span::Span; -use rustc_trait_selection::autoderef::Autoderef; use std::slice; impl<'a, 'tcx> FnCtxt<'a, 'tcx> { diff --git a/compiler/rustc_infer/src/infer/error_reporting/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/mod.rs index 66db1a2f9289..0223979263d8 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/mod.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/mod.rs @@ -55,6 +55,7 @@ use crate::infer::ExpectedFound; use crate::traits::error_reporting::report_object_safety_error; use crate::traits::{ IfExpressionCause, MatchExpressionArmCause, ObligationCause, ObligationCauseCode, + PredicateObligation, }; use rustc_data_structures::fx::{FxIndexMap, FxIndexSet}; @@ -91,8 +92,12 @@ pub mod nice_region_error; pub struct TypeErrCtxt<'a, 'tcx> { pub infcx: &'a InferCtxt<'tcx>, pub typeck_results: Option>>, - pub normalize_fn_sig: Box) -> ty::PolyFnSig<'tcx> + 'a>, pub fallback_has_occurred: bool, + + pub normalize_fn_sig: Box) -> ty::PolyFnSig<'tcx> + 'a>, + + pub autoderef_steps: + Box) -> Vec<(Ty<'tcx>, Vec>)> + 'a>, } impl TypeErrCtxt<'_, '_> { diff --git a/compiler/rustc_infer/src/infer/mod.rs b/compiler/rustc_infer/src/infer/mod.rs index 6bef3f000a5a..8825b5e12c3d 100644 --- a/compiler/rustc_infer/src/infer/mod.rs +++ b/compiler/rustc_infer/src/infer/mod.rs @@ -688,6 +688,10 @@ impl<'tcx> InferCtxt<'tcx> { typeck_results: None, fallback_has_occurred: false, normalize_fn_sig: Box::new(|fn_sig| fn_sig), + autoderef_steps: Box::new(|ty| { + debug_assert!(false, "shouldn't be using autoderef_steps outside of typeck"); + vec![(ty, vec![])] + }), } } diff --git a/compiler/rustc_trait_selection/src/errors.rs b/compiler/rustc_trait_selection/src/errors.rs index 19f404cb5b78..4405537c645a 100644 --- a/compiler/rustc_trait_selection/src/errors.rs +++ b/compiler/rustc_trait_selection/src/errors.rs @@ -1,7 +1,6 @@ use rustc_errors::{fluent, ErrorGuaranteed, Handler, IntoDiagnostic}; use rustc_macros::Diagnostic; use rustc_middle::ty::{self, PolyTraitRef, Ty}; -use rustc_session::Limit; use rustc_span::{Span, Symbol}; #[derive(Diagnostic)] @@ -21,18 +20,6 @@ pub struct UnableToConstructConstantValue<'a> { pub unevaluated: ty::UnevaluatedConst<'a>, } -#[derive(Diagnostic)] -#[help] -#[diag(trait_selection_auto_deref_reached_recursion_limit, code = "E0055")] -pub struct AutoDerefReachedRecursionLimit<'a> { - #[primary_span] - #[label] - pub span: Span, - pub ty: Ty<'a>, - pub suggested_limit: Limit, - pub crate_name: Symbol, -} - #[derive(Diagnostic)] #[diag(trait_selection_empty_on_clause_in_rustc_on_unimplemented, code = "E0232")] pub struct EmptyOnClauseInOnUnimplemented { diff --git a/compiler/rustc_trait_selection/src/lib.rs b/compiler/rustc_trait_selection/src/lib.rs index a30d1df4ede5..081ac966c696 100644 --- a/compiler/rustc_trait_selection/src/lib.rs +++ b/compiler/rustc_trait_selection/src/lib.rs @@ -35,7 +35,6 @@ extern crate rustc_middle; #[macro_use] extern crate smallvec; -pub mod autoderef; pub mod errors; pub mod infer; pub mod solve; 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 439854958270..6c6696439c1b 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -5,7 +5,6 @@ use super::{ PredicateObligation, }; -use crate::autoderef::Autoderef; use crate::infer::InferCtxt; use crate::traits::{NormalizeExt, ObligationCtxt}; @@ -750,26 +749,30 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { } if let ty::Ref(region, base_ty, mutbl) = *real_ty.skip_binder().kind() { - let mut autoderef = Autoderef::new( - self, - obligation.param_env, - obligation.cause.body_id, - span, - base_ty, - ); - if let Some(steps) = autoderef.find_map(|(ty, steps)| { - // Re-add the `&` - let ty = self.tcx.mk_ref(region, TypeAndMut { ty, mutbl }); + let autoderef = (self.autoderef_steps)(base_ty); + if let Some(steps) = + autoderef.into_iter().enumerate().find_map(|(steps, (ty, obligations))| { + // Re-add the `&` + let ty = self.tcx.mk_ref(region, TypeAndMut { ty, mutbl }); - // Remapping bound vars here - let real_trait_pred_and_ty = - real_trait_pred.map_bound(|inner_trait_pred| (inner_trait_pred, ty)); - let obligation = self.mk_trait_obligation_with_new_self_ty( - obligation.param_env, - real_trait_pred_and_ty, - ); - Some(steps).filter(|_| self.predicate_may_hold(&obligation)) - }) { + // Remapping bound vars here + let real_trait_pred_and_ty = + real_trait_pred.map_bound(|inner_trait_pred| (inner_trait_pred, ty)); + let obligation = self.mk_trait_obligation_with_new_self_ty( + obligation.param_env, + real_trait_pred_and_ty, + ); + if obligations + .iter() + .chain([&obligation]) + .all(|obligation| self.predicate_may_hold(obligation)) + { + Some(steps) + } else { + None + } + }) + { if steps > 0 { // Don't care about `&mut` because `DerefMut` is used less // often and user will not expect autoderef happens. From ad13d9fbbe7d7a3bc5e59ad1f829e132d6cb1b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 8 Jan 2023 01:15:28 +0000 Subject: [PATCH 427/478] Suggest making private tuple struct field public Fix #52144. --- .../rustc_resolve/src/build_reduced_graph.rs | 2 ++ .../rustc_resolve/src/late/diagnostics.rs | 20 +++++++++++++++++++ compiler/rustc_resolve/src/lib.rs | 5 +++++ tests/ui/privacy/issue-75906.stderr | 4 ++++ tests/ui/privacy/issue-75907.rs | 2 +- tests/ui/privacy/issue-75907.stderr | 8 ++++++++ tests/ui/resolve/issue-42944.rs | 2 +- tests/ui/resolve/issue-42944.stderr | 12 +++++++---- 8 files changed, 49 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 58f6fd2b006f..928f372d948d 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -331,7 +331,9 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { .iter() .map(|field| respan(field.span, field.ident.map_or(kw::Empty, |ident| ident.name))) .collect(); + let field_vis = vdata.fields().iter().map(|field| field.vis.span).collect(); self.r.field_names.insert(def_id, field_names); + self.r.field_visibility_spans.insert(def_id, field_vis); } fn insert_field_names_extern(&mut self, def_id: DefId) { diff --git a/compiler/rustc_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index 74522f185422..a675a1fb78bb 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -1451,6 +1451,26 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { .collect(); if non_visible_spans.len() > 0 { + if let Some(visibility_spans) = self.r.field_visibility_spans.get(&def_id) { + err.multipart_suggestion_verbose( + &format!( + "consider making the field{} publicly accessible", + pluralize!(visibility_spans.len()) + ), + visibility_spans + .iter() + .map(|span| { + ( + *span, + if span.lo() == span.hi() { "pub " } else { "pub" } + .to_string(), + ) + }) + .collect(), + Applicability::MaybeIncorrect, + ); + } + let mut m: MultiSpan = non_visible_spans.clone().into(); non_visible_spans .into_iter() diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs index 2182b7369377..84d9794ccf26 100644 --- a/compiler/rustc_resolve/src/lib.rs +++ b/compiler/rustc_resolve/src/lib.rs @@ -881,6 +881,10 @@ pub struct Resolver<'a> { /// Used for hints during error reporting. field_names: FxHashMap>>, + /// Span of the privacy modifier in fields of an item `DefId` accessible with dot syntax. + /// Used for hints during error reporting. + field_visibility_spans: FxHashMap>, + /// All imports known to succeed or fail. determined_imports: Vec<&'a Import<'a>>, @@ -1268,6 +1272,7 @@ impl<'a> Resolver<'a> { has_self: FxHashSet::default(), field_names: FxHashMap::default(), + field_visibility_spans: FxHashMap::default(), determined_imports: Vec::new(), indeterminate_imports: Vec::new(), diff --git a/tests/ui/privacy/issue-75906.stderr b/tests/ui/privacy/issue-75906.stderr index 4c6a68646adc..600dc7c876ff 100644 --- a/tests/ui/privacy/issue-75906.stderr +++ b/tests/ui/privacy/issue-75906.stderr @@ -9,6 +9,10 @@ note: constructor is not visible here due to private fields | LL | pub struct Bar(u8); | ^^ private field +help: consider making the field publicly accessible + | +LL | pub struct Bar(pub u8); + | +++ error: aborting due to previous error diff --git a/tests/ui/privacy/issue-75907.rs b/tests/ui/privacy/issue-75907.rs index 6da99cf6435c..3bed841d13ea 100644 --- a/tests/ui/privacy/issue-75907.rs +++ b/tests/ui/privacy/issue-75907.rs @@ -2,7 +2,7 @@ mod foo { pub(crate) struct Foo(u8); - pub(crate) struct Bar(pub u8, u8, Foo); + pub(crate) struct Bar(pub u8, pub(in crate::foo) u8, Foo); pub(crate) fn make_bar() -> Bar { Bar(1, 12, Foo(10)) diff --git a/tests/ui/privacy/issue-75907.stderr b/tests/ui/privacy/issue-75907.stderr index 2f89e31a31a1..f7cb874c2cc0 100644 --- a/tests/ui/privacy/issue-75907.stderr +++ b/tests/ui/privacy/issue-75907.stderr @@ -11,6 +11,10 @@ LL | let Bar(x, y, Foo(z)) = make_bar(); | ^ ^^^^^^ private field | | | private field +help: consider making the fields publicly accessible + | +LL | pub(crate) struct Bar(pub u8, pub u8, pub Foo); + | ~~~ ~~~ +++ error[E0532]: cannot match against a tuple struct which contains private fields --> $DIR/issue-75907.rs:15:19 @@ -23,6 +27,10 @@ note: constructor is not visible here due to private fields | LL | let Bar(x, y, Foo(z)) = make_bar(); | ^ private field +help: consider making the field publicly accessible + | +LL | pub(crate) struct Foo(pub u8); + | +++ error: aborting due to 2 previous errors diff --git a/tests/ui/resolve/issue-42944.rs b/tests/ui/resolve/issue-42944.rs index a4404857a56a..7e439c10b7b8 100644 --- a/tests/ui/resolve/issue-42944.rs +++ b/tests/ui/resolve/issue-42944.rs @@ -1,5 +1,5 @@ mod foo { - pub struct Bx(()); + pub struct Bx(pub(in crate::foo) ()); } mod bar { diff --git a/tests/ui/resolve/issue-42944.stderr b/tests/ui/resolve/issue-42944.stderr index 0ee9fd391fe1..4ffa9402c667 100644 --- a/tests/ui/resolve/issue-42944.stderr +++ b/tests/ui/resolve/issue-42944.stderr @@ -7,8 +7,8 @@ LL | Bx(()); note: tuple struct `foo::Bx` exists but is inaccessible --> $DIR/issue-42944.rs:2:5 | -LL | pub struct Bx(()); - | ^^^^^^^^^^^^^^^^^^ not accessible +LL | pub struct Bx(pub(in crate::foo) ()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible error[E0423]: cannot initialize a tuple struct which contains private fields --> $DIR/issue-42944.rs:9:9 @@ -19,8 +19,12 @@ LL | Bx(()); note: constructor is not visible here due to private fields --> $DIR/issue-42944.rs:2:19 | -LL | pub struct Bx(()); - | ^^ private field +LL | pub struct Bx(pub(in crate::foo) ()); + | ^^^^^^^^^^^^^^^^^^^^^ private field +help: consider making the field publicly accessible + | +LL | pub struct Bx(pub ()); + | ~~~ error: aborting due to 2 previous errors From eb835093a3bc4dc571c1a612cc2efde85906e63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 8 Jan 2023 07:18:07 +0000 Subject: [PATCH 428/478] review comment --- compiler/rustc_resolve/src/late/diagnostics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index a675a1fb78bb..6923ca7ef1bf 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -1462,7 +1462,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { .map(|span| { ( *span, - if span.lo() == span.hi() { "pub " } else { "pub" } + if span.is_empty() { "pub " } else { "pub" } .to_string(), ) }) From 41e66d902589964cda32a5a89c34023a9f78398b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Tue, 10 Jan 2023 20:57:02 +0000 Subject: [PATCH 429/478] review comments: Tweak output * Account for `struct S(pub(super)Ty);` in suggestion * Suggest changing field visibility in E0603 too --- .../rustc_resolve/src/build_reduced_graph.rs | 14 ++- compiler/rustc_resolve/src/diagnostics.rs | 14 ++- .../rustc_resolve/src/late/diagnostics.rs | 15 +-- tests/ui/privacy/privacy5.stderr | 96 +++++++++++++++++++ .../privacy/suggest-making-field-public.fixed | 15 +++ .../ui/privacy/suggest-making-field-public.rs | 15 +++ .../suggest-making-field-public.stderr | 39 ++++++++ tests/ui/resolve/privacy-struct-ctor.stderr | 16 ++++ 8 files changed, 210 insertions(+), 14 deletions(-) create mode 100644 tests/ui/privacy/suggest-making-field-public.fixed create mode 100644 tests/ui/privacy/suggest-making-field-public.rs create mode 100644 tests/ui/privacy/suggest-making-field-public.stderr diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 928f372d948d..b1b04c92a750 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -331,8 +331,15 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { .iter() .map(|field| respan(field.span, field.ident.map_or(kw::Empty, |ident| ident.name))) .collect(); - let field_vis = vdata.fields().iter().map(|field| field.vis.span).collect(); self.r.field_names.insert(def_id, field_names); + } + + fn insert_field_visibilities_local(&mut self, def_id: DefId, vdata: &ast::VariantData) { + let field_vis = vdata + .fields() + .iter() + .map(|field| field.vis.span.until(field.ident.map_or(field.ty.span, |i| i.span))) + .collect(); self.r.field_visibility_spans.insert(def_id, field_vis); } @@ -739,6 +746,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { // Record field names for error reporting. self.insert_field_names_local(def_id, vdata); + self.insert_field_visibilities_local(def_id, vdata); // If this is a tuple or unit struct, define a name // in the value namespace as well. @@ -772,6 +780,8 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { Res::Def(DefKind::Ctor(CtorOf::Struct, ctor_kind), ctor_def_id.to_def_id()); self.r.define(parent, ident, ValueNS, (ctor_res, ctor_vis, sp, expansion)); self.r.visibilities.insert(ctor_def_id, ctor_vis); + // We need the field visibility spans also for the constructor for E0603. + self.insert_field_visibilities_local(ctor_def_id.to_def_id(), vdata); self.r .struct_constructors @@ -785,6 +795,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { // Record field names for error reporting. self.insert_field_names_local(def_id, vdata); + self.insert_field_visibilities_local(def_id, vdata); } ItemKind::Trait(..) => { @@ -1512,6 +1523,7 @@ impl<'a, 'b> Visitor<'b> for BuildReducedGraphVisitor<'a, 'b> { // Record field names for error reporting. self.insert_field_names_local(def_id.to_def_id(), &variant.data); + self.insert_field_visibilities_local(def_id.to_def_id(), &variant.data); visit::walk_variant(self, variant); } diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 7d62d67d64f0..1a852de8eed6 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -6,7 +6,9 @@ use rustc_ast::{self as ast, Crate, ItemKind, ModKind, NodeId, Path, CRATE_NODE_ use rustc_ast_pretty::pprust; use rustc_data_structures::fx::FxHashSet; use rustc_errors::struct_span_err; -use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, MultiSpan}; +use rustc_errors::{ + pluralize, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, MultiSpan, +}; use rustc_feature::BUILTIN_ATTRIBUTES; use rustc_hir::def::Namespace::{self, *}; use rustc_hir::def::{self, CtorKind, CtorOf, DefKind, NonMacroAttrKind, PerNS}; @@ -1604,6 +1606,16 @@ impl<'a> Resolver<'a> { err.span_label(ident.span, &format!("private {}", descr)); if let Some(span) = ctor_fields_span { err.span_label(span, "a constructor is private if any of the fields is private"); + if let Res::Def(_, d) = res && let Some(fields) = self.field_visibility_spans.get(&d) { + err.multipart_suggestion_verbose( + &format!( + "consider making the field{} publicly accessible", + pluralize!(fields.len()) + ), + fields.iter().map(|span| (*span, "pub ".to_string())).collect(), + Applicability::MaybeIncorrect, + ); + } } // Print the whole import chain to make it easier to see what happens. diff --git a/compiler/rustc_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index 6923ca7ef1bf..d92f5a7c05e6 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -1451,22 +1451,13 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { .collect(); if non_visible_spans.len() > 0 { - if let Some(visibility_spans) = self.r.field_visibility_spans.get(&def_id) { + if let Some(fields) = self.r.field_visibility_spans.get(&def_id) { err.multipart_suggestion_verbose( &format!( "consider making the field{} publicly accessible", - pluralize!(visibility_spans.len()) + pluralize!(fields.len()) ), - visibility_spans - .iter() - .map(|span| { - ( - *span, - if span.is_empty() { "pub " } else { "pub" } - .to_string(), - ) - }) - .collect(), + fields.iter().map(|span| (*span, "pub ".to_string())).collect(), Applicability::MaybeIncorrect, ); } diff --git a/tests/ui/privacy/privacy5.stderr b/tests/ui/privacy/privacy5.stderr index 680161272cef..615b0af2762d 100644 --- a/tests/ui/privacy/privacy5.stderr +++ b/tests/ui/privacy/privacy5.stderr @@ -12,6 +12,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:52:16 @@ -27,6 +31,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:53:16 @@ -42,6 +50,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:56:12 @@ -57,6 +69,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:57:12 @@ -72,6 +88,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:58:18 @@ -87,6 +107,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:59:18 @@ -102,6 +126,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:61:12 @@ -117,6 +145,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:62:12 @@ -132,6 +164,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:63:18 @@ -147,6 +183,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:64:18 @@ -162,6 +202,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:65:18 @@ -177,6 +221,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:65:32 @@ -192,6 +240,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:68:12 @@ -207,6 +259,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:69:12 @@ -222,6 +278,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:70:12 @@ -237,6 +297,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:71:12 @@ -252,6 +316,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:72:18 @@ -267,6 +335,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:73:18 @@ -282,6 +354,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:74:18 @@ -297,6 +373,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:75:18 @@ -312,6 +392,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:83:17 @@ -327,6 +411,10 @@ note: the tuple struct constructor `A` is defined here | LL | pub struct A(()); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub ()); + | +++ error[E0603]: tuple struct constructor `B` is private --> $DIR/privacy5.rs:84:17 @@ -342,6 +430,10 @@ note: the tuple struct constructor `B` is defined here | LL | pub struct B(isize); | ^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct B(pub isize); + | +++ error[E0603]: tuple struct constructor `C` is private --> $DIR/privacy5.rs:85:17 @@ -357,6 +449,10 @@ note: the tuple struct constructor `C` is defined here | LL | pub struct C(pub isize, isize); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the fields publicly accessible + | +LL | pub struct C(pub isize, pub isize); + | ~~~ +++ error[E0603]: tuple struct constructor `A` is private --> $DIR/privacy5.rs:90:20 diff --git a/tests/ui/privacy/suggest-making-field-public.fixed b/tests/ui/privacy/suggest-making-field-public.fixed new file mode 100644 index 000000000000..78e335b3db1c --- /dev/null +++ b/tests/ui/privacy/suggest-making-field-public.fixed @@ -0,0 +1,15 @@ +// run-rustfix +mod a { + pub struct A(pub String); +} + +mod b { + use crate::a::A; + pub fn x() { + A("".into()); //~ ERROR cannot initialize a tuple struct which contains private fields + } +} +fn main() { + a::A("a".into()); //~ ERROR tuple struct constructor `A` is private + b::x(); +} diff --git a/tests/ui/privacy/suggest-making-field-public.rs b/tests/ui/privacy/suggest-making-field-public.rs new file mode 100644 index 000000000000..b65c801d10e6 --- /dev/null +++ b/tests/ui/privacy/suggest-making-field-public.rs @@ -0,0 +1,15 @@ +// run-rustfix +mod a { + pub struct A(pub(self)String); +} + +mod b { + use crate::a::A; + pub fn x() { + A("".into()); //~ ERROR cannot initialize a tuple struct which contains private fields + } +} +fn main() { + a::A("a".into()); //~ ERROR tuple struct constructor `A` is private + b::x(); +} diff --git a/tests/ui/privacy/suggest-making-field-public.stderr b/tests/ui/privacy/suggest-making-field-public.stderr new file mode 100644 index 000000000000..e92e9aae310e --- /dev/null +++ b/tests/ui/privacy/suggest-making-field-public.stderr @@ -0,0 +1,39 @@ +error[E0603]: tuple struct constructor `A` is private + --> $DIR/suggest-making-field-public.rs:13:8 + | +LL | pub struct A(pub(self)String); + | --------------- a constructor is private if any of the fields is private +... +LL | a::A("a".into()); + | ^ private tuple struct constructor + | +note: the tuple struct constructor `A` is defined here + --> $DIR/suggest-making-field-public.rs:3:5 + | +LL | pub struct A(pub(self)String); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct A(pub String); + | ~~~ + +error[E0423]: cannot initialize a tuple struct which contains private fields + --> $DIR/suggest-making-field-public.rs:9:9 + | +LL | A("".into()); + | ^ + | +note: constructor is not visible here due to private fields + --> $DIR/suggest-making-field-public.rs:3:18 + | +LL | pub struct A(pub(self)String); + | ^^^^^^^^^^^^^^^ private field +help: consider making the field publicly accessible + | +LL | pub struct A(pub String); + | ~~~ + +error: aborting due to 2 previous errors + +Some errors have detailed explanations: E0423, E0603. +For more information about an error, try `rustc --explain E0423`. diff --git a/tests/ui/resolve/privacy-struct-ctor.stderr b/tests/ui/resolve/privacy-struct-ctor.stderr index 17a666a401ce..c1fcaaf05738 100644 --- a/tests/ui/resolve/privacy-struct-ctor.stderr +++ b/tests/ui/resolve/privacy-struct-ctor.stderr @@ -53,6 +53,10 @@ note: the tuple struct constructor `Z` is defined here | LL | pub(in m) struct Z(pub(in m::n) u8); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub(in m) struct Z(pub u8); + | ~~~ error[E0603]: tuple struct constructor `S` is private --> $DIR/privacy-struct-ctor.rs:29:8 @@ -68,6 +72,10 @@ note: the tuple struct constructor `S` is defined here | LL | pub struct S(u8); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct S(pub u8); + | +++ error[E0603]: tuple struct constructor `S` is private --> $DIR/privacy-struct-ctor.rs:31:19 @@ -83,6 +91,10 @@ note: the tuple struct constructor `S` is defined here | LL | pub struct S(u8); | ^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub struct S(pub u8); + | +++ error[E0603]: tuple struct constructor `Z` is private --> $DIR/privacy-struct-ctor.rs:35:11 @@ -98,6 +110,10 @@ note: the tuple struct constructor `Z` is defined here | LL | pub(in m) struct Z(pub(in m::n) u8); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +help: consider making the field publicly accessible + | +LL | pub(in m) struct Z(pub u8); + | ~~~ error[E0603]: tuple struct constructor `S` is private --> $DIR/privacy-struct-ctor.rs:41:16 From 2024aa48b4e92894e6f780a13c03db7605e1a5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 1 Jan 2023 18:43:47 -0800 Subject: [PATCH 430/478] Make `&`-removal suggestion verbose --- .../src/traits/error_reporting/suggestions.rs | 71 ++++++++++++------- .../impl-trait/in-trait/issue-102140.stderr | 12 ++-- tests/ui/not-panic/not-panic-safe.stderr | 5 +- .../suggestions/suggest-remove-refs-1.stderr | 10 +-- .../suggestions/suggest-remove-refs-2.stderr | 10 +-- .../suggestions/suggest-remove-refs-3.stderr | 20 +++--- .../suggestions/suggest-remove-refs-4.fixed | 5 ++ tests/ui/suggestions/suggest-remove-refs-4.rs | 5 ++ .../suggestions/suggest-remove-refs-4.stderr | 17 +++++ tests/ui/typeck/issue-57404.stderr | 11 +-- 10 files changed, 113 insertions(+), 53 deletions(-) create mode 100644 tests/ui/suggestions/suggest-remove-refs-4.fixed create mode 100644 tests/ui/suggestions/suggest-remove-refs-4.rs create mode 100644 tests/ui/suggestions/suggest-remove-refs-4.stderr 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 439854958270..553144078ee4 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1358,26 +1358,41 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { err: &mut Diagnostic, trait_pred: ty::PolyTraitPredicate<'tcx>, ) -> bool { - let span = obligation.cause.span; - + let mut span = obligation.cause.span; + while span.desugaring_kind().is_some() { + // Remove all the hir desugaring contexts while maintaining the macro contexts. + span.remove_mark(); + } let mut suggested = false; - if let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(span) { - let refs_number = - snippet.chars().filter(|c| !c.is_whitespace()).take_while(|c| *c == '&').count(); - if let Some('\'') = snippet.chars().filter(|c| !c.is_whitespace()).nth(refs_number) { - // Do not suggest removal of borrow from type arguments. - return false; - } - // Skipping binder here, remapping below - let mut suggested_ty = trait_pred.self_ty().skip_binder(); + let mut expr_finder = super::FindExprBySpan { span, result: None }; + let Some(hir::Node::Expr(body)) = self.tcx.hir().find(obligation.cause.body_id) else { + return false; + }; + expr_finder.visit_expr(&body); + let mut count = 0; + let mut suggestions = vec![]; + let Some(mut expr) = expr_finder.result else { return false; }; + // Skipping binder here, remapping below + let mut suggested_ty = trait_pred.self_ty().skip_binder(); + + 'outer: loop { + while let hir::ExprKind::AddrOf(_, _, borrowed) = expr.kind { + count += 1; + let span = if expr.span.eq_ctxt(borrowed.span) { + expr.span.until(borrowed.span) + } else { + expr.span.with_hi(expr.span.lo() + BytePos(1)) + }; + suggestions.push((span, String::new())); - for refs_remaining in 0..refs_number { let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else { break; }; suggested_ty = *inner_ty; + expr = borrowed; + // Remapping bound vars here let trait_pred_and_suggested_ty = trait_pred.map_bound(|trait_pred| (trait_pred, suggested_ty)); @@ -1388,25 +1403,33 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { ); if self.predicate_may_hold(&new_obligation) { - let sp = self - .tcx - .sess - .source_map() - .span_take_while(span, |c| c.is_whitespace() || *c == '&'); - - let remove_refs = refs_remaining + 1; - - let msg = if remove_refs == 1 { + let msg = if count == 1 { "consider removing the leading `&`-reference".to_string() } else { - format!("consider removing {} leading `&`-references", remove_refs) + format!("consider removing {count} leading `&`-references") }; - err.span_suggestion_short(sp, &msg, "", Applicability::MachineApplicable); + err.multipart_suggestion_verbose( + &msg, + suggestions, + Applicability::MachineApplicable, + ); suggested = true; - break; + break 'outer; } } + if let hir::ExprKind::Path(hir::QPath::Resolved(None, path)) = expr.kind + && let hir::def::Res::Local(hir_id) = path.res + && let Some(hir::Node::Pat(binding)) = self.tcx.hir().find(hir_id) + && let parent_hir_id = self.tcx.hir().get_parent_node(binding.hir_id) + && let Some(hir::Node::Local(local)) = self.tcx.hir().find(parent_hir_id) + && let None = local.ty + && let Some(binding_expr) = local.init + { + expr = binding_expr; + } else { + break 'outer; + } } suggested } diff --git a/tests/ui/impl-trait/in-trait/issue-102140.stderr b/tests/ui/impl-trait/in-trait/issue-102140.stderr index 08602185f50c..18bb63745d7a 100644 --- a/tests/ui/impl-trait/in-trait/issue-102140.stderr +++ b/tests/ui/impl-trait/in-trait/issue-102140.stderr @@ -2,11 +2,15 @@ error[E0277]: the trait bound `&dyn MyTrait: MyTrait` is not satisfied --> $DIR/issue-102140.rs:23:22 | LL | MyTrait::foo(&self) - | ------------ -^^^^ - | | | - | | the trait `MyTrait` is not implemented for `&dyn MyTrait` - | | help: consider removing the leading `&`-reference + | ------------ ^^^^^ the trait `MyTrait` is not implemented for `&dyn MyTrait` + | | | required by a bound introduced by this call + | +help: consider removing the leading `&`-reference + | +LL - MyTrait::foo(&self) +LL + MyTrait::foo(self) + | error[E0277]: the trait bound `&dyn MyTrait: MyTrait` is not satisfied --> $DIR/issue-102140.rs:23:9 diff --git a/tests/ui/not-panic/not-panic-safe.stderr b/tests/ui/not-panic/not-panic-safe.stderr index 2cd51a439988..013c5ee70445 100644 --- a/tests/ui/not-panic/not-panic-safe.stderr +++ b/tests/ui/not-panic/not-panic-safe.stderr @@ -2,10 +2,7 @@ error[E0277]: the type `&mut i32` may not be safely transferred across an unwind --> $DIR/not-panic-safe.rs:8:14 | LL | assert::<&mut i32>(); - | -^^^^^^^ - | | - | `&mut i32` may not be safely transferred across an unwind boundary - | help: consider removing the leading `&`-reference + | ^^^^^^^^ `&mut i32` may not be safely transferred across an unwind boundary | = help: the trait `UnwindSafe` is not implemented for `&mut i32` = note: `UnwindSafe` is implemented for `&i32`, but not for `&mut i32` diff --git a/tests/ui/suggestions/suggest-remove-refs-1.stderr b/tests/ui/suggestions/suggest-remove-refs-1.stderr index 1a843f3f5097..387770535f68 100644 --- a/tests/ui/suggestions/suggest-remove-refs-1.stderr +++ b/tests/ui/suggestions/suggest-remove-refs-1.stderr @@ -2,13 +2,15 @@ error[E0277]: `&Enumerate>` is not an iterator --> $DIR/suggest-remove-refs-1.rs:6:19 | LL | for (i, _) in &v.iter().enumerate() { - | -^^^^^^^^^^^^^^^^^^^^ - | | - | `&Enumerate>` is not an iterator - | help: consider removing the leading `&`-reference + | ^^^^^^^^^^^^^^^^^^^^^ `&Enumerate>` is not an iterator | = help: the trait `Iterator` is not implemented for `&Enumerate>` = note: required for `&Enumerate>` to implement `IntoIterator` +help: consider removing the leading `&`-reference + | +LL - for (i, _) in &v.iter().enumerate() { +LL + for (i, _) in v.iter().enumerate() { + | error: aborting due to previous error diff --git a/tests/ui/suggestions/suggest-remove-refs-2.stderr b/tests/ui/suggestions/suggest-remove-refs-2.stderr index f39361d529fb..1632b2abb2f8 100644 --- a/tests/ui/suggestions/suggest-remove-refs-2.stderr +++ b/tests/ui/suggestions/suggest-remove-refs-2.stderr @@ -2,13 +2,15 @@ error[E0277]: `&&&&&Enumerate>` is not an iterat --> $DIR/suggest-remove-refs-2.rs:6:19 | LL | for (i, _) in & & & & &v.iter().enumerate() { - | ---------^^^^^^^^^^^^^^^^^^^^ - | | - | `&&&&&Enumerate>` is not an iterator - | help: consider removing 5 leading `&`-references + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&&&&&Enumerate>` is not an iterator | = help: the trait `Iterator` is not implemented for `&&&&&Enumerate>` = note: required for `&&&&&Enumerate>` to implement `IntoIterator` +help: consider removing 5 leading `&`-references + | +LL - for (i, _) in & & & & &v.iter().enumerate() { +LL + for (i, _) in v.iter().enumerate() { + | error: aborting due to previous error diff --git a/tests/ui/suggestions/suggest-remove-refs-3.stderr b/tests/ui/suggestions/suggest-remove-refs-3.stderr index 31cca323d0e4..7bf421a7729d 100644 --- a/tests/ui/suggestions/suggest-remove-refs-3.stderr +++ b/tests/ui/suggestions/suggest-remove-refs-3.stderr @@ -1,18 +1,20 @@ error[E0277]: `&&&&&Enumerate>` is not an iterator --> $DIR/suggest-remove-refs-3.rs:6:19 | -LL | for (i, _) in & & & - | ____________________^ - | | ___________________| - | || -LL | || & &v - | ||___________- help: consider removing 5 leading `&`-references -LL | | .iter() -LL | | .enumerate() { - | |_____________________^ `&&&&&Enumerate>` is not an iterator +LL | for (i, _) in & & & + | ___________________^ +LL | | & &v +LL | | .iter() +LL | | .enumerate() { + | |____________________^ `&&&&&Enumerate>` is not an iterator | = help: the trait `Iterator` is not implemented for `&&&&&Enumerate>` = note: required for `&&&&&Enumerate>` to implement `IntoIterator` +help: consider removing 5 leading `&`-references + | +LL - for (i, _) in & & & +LL + for (i, _) in v + | error: aborting due to previous error diff --git a/tests/ui/suggestions/suggest-remove-refs-4.fixed b/tests/ui/suggestions/suggest-remove-refs-4.fixed new file mode 100644 index 000000000000..dd63d2159724 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-4.fixed @@ -0,0 +1,5 @@ +// run-rustfix +fn main() { + let foo = [1,2,3].iter(); + for _i in foo {} //~ ERROR E0277 +} diff --git a/tests/ui/suggestions/suggest-remove-refs-4.rs b/tests/ui/suggestions/suggest-remove-refs-4.rs new file mode 100644 index 000000000000..3c3d9b1b3f98 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-4.rs @@ -0,0 +1,5 @@ +// run-rustfix +fn main() { + let foo = &[1,2,3].iter(); + for _i in &foo {} //~ ERROR E0277 +} diff --git a/tests/ui/suggestions/suggest-remove-refs-4.stderr b/tests/ui/suggestions/suggest-remove-refs-4.stderr new file mode 100644 index 000000000000..e4ad17e06716 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-4.stderr @@ -0,0 +1,17 @@ +error[E0277]: `&&std::slice::Iter<'_, {integer}>` is not an iterator + --> $DIR/suggest-remove-refs-4.rs:4:15 + | +LL | for _i in &foo {} + | ^^^^ `&&std::slice::Iter<'_, {integer}>` is not an iterator + | + = help: the trait `Iterator` is not implemented for `&&std::slice::Iter<'_, {integer}>` + = note: required for `&&std::slice::Iter<'_, {integer}>` to implement `IntoIterator` +help: consider removing 2 leading `&`-references + | +LL ~ let foo = [1,2,3].iter(); +LL ~ for _i in foo {} + | + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/typeck/issue-57404.stderr b/tests/ui/typeck/issue-57404.stderr index 5065ac32ad2b..a631dbb39fb8 100644 --- a/tests/ui/typeck/issue-57404.stderr +++ b/tests/ui/typeck/issue-57404.stderr @@ -2,14 +2,17 @@ error[E0277]: `&mut ()` is not a tuple --> $DIR/issue-57404.rs:6:41 | LL | handlers.unwrap().as_mut().call_mut(&mut ()); - | -------- -^^^^^^ - | | | - | | the trait `Tuple` is not implemented for `&mut ()` - | | help: consider removing the leading `&`-reference + | -------- ^^^^^^^ the trait `Tuple` is not implemented for `&mut ()` + | | | required by a bound introduced by this call | note: required by a bound in `call_mut` --> $SRC_DIR/core/src/ops/function.rs:LL:COL +help: consider removing the leading `&`-reference + | +LL - handlers.unwrap().as_mut().call_mut(&mut ()); +LL + handlers.unwrap().as_mut().call_mut(()); + | error: aborting due to previous error From ce83be4af8462d8d6fadb2829c8ca7f4353fca9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 1 Jan 2023 19:35:53 -0800 Subject: [PATCH 431/478] Account for type params --- .../src/traits/error_reporting/suggestions.rs | 88 +++++++++++++------ tests/ui/kindck/kindck-copy.stderr | 12 ++- tests/ui/not-panic/not-panic-safe.rs | 4 +- tests/ui/not-panic/not-panic-safe.stderr | 15 ++-- 4 files changed, 81 insertions(+), 38 deletions(-) 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 553144078ee4..bcc820048049 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1363,19 +1363,70 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { // Remove all the hir desugaring contexts while maintaining the macro contexts. span.remove_mark(); } - let mut suggested = false; - - let mut expr_finder = super::FindExprBySpan { span, result: None }; + let mut expr_finder = super::FindExprBySpan::new(span); let Some(hir::Node::Expr(body)) = self.tcx.hir().find(obligation.cause.body_id) else { return false; }; expr_finder.visit_expr(&body); + let mut maybe_suggest = |suggested_ty, count, suggestions| { + // Remapping bound vars here + let trait_pred_and_suggested_ty = + trait_pred.map_bound(|trait_pred| (trait_pred, suggested_ty)); + + let new_obligation = self.mk_trait_obligation_with_new_self_ty( + obligation.param_env, + trait_pred_and_suggested_ty, + ); + + if self.predicate_may_hold(&new_obligation) { + let msg = if count == 1 { + "consider removing the leading `&`-reference".to_string() + } else { + format!("consider removing {count} leading `&`-references") + }; + + err.multipart_suggestion_verbose( + &msg, + suggestions, + Applicability::MachineApplicable, + ); + true + } else { + false + } + }; + + // Maybe suggest removal of borrows from types in type parameters, like in + // `src/test/ui/not-panic/not-panic-safe.rs`. let mut count = 0; let mut suggestions = vec![]; - let Some(mut expr) = expr_finder.result else { return false; }; // Skipping binder here, remapping below let mut suggested_ty = trait_pred.self_ty().skip_binder(); + if let Some(mut hir_ty) = expr_finder.ty_result { + while let hir::TyKind::Ref(_, mut_ty) = &hir_ty.kind { + count += 1; + let span = hir_ty.span.until(mut_ty.ty.span); + suggestions.push((span, String::new())); + let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else { + break; + }; + suggested_ty = *inner_ty; + + hir_ty = mut_ty.ty; + + if maybe_suggest(suggested_ty, count, suggestions.clone()) { + return true; + } + } + } + + // Maybe suggest removal of borrows from expressions, like in `for i in &&&foo {}`. + let Some(mut expr) = expr_finder.result else { return false; }; + let mut count = 0; + let mut suggestions = vec![]; + // Skipping binder here, remapping below + let mut suggested_ty = trait_pred.self_ty().skip_binder(); 'outer: loop { while let hir::ExprKind::AddrOf(_, _, borrowed) = expr.kind { count += 1; @@ -1387,35 +1438,14 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { suggestions.push((span, String::new())); let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else { - break; + break 'outer; }; suggested_ty = *inner_ty; expr = borrowed; - // Remapping bound vars here - let trait_pred_and_suggested_ty = - trait_pred.map_bound(|trait_pred| (trait_pred, suggested_ty)); - - let new_obligation = self.mk_trait_obligation_with_new_self_ty( - obligation.param_env, - trait_pred_and_suggested_ty, - ); - - if self.predicate_may_hold(&new_obligation) { - let msg = if count == 1 { - "consider removing the leading `&`-reference".to_string() - } else { - format!("consider removing {count} leading `&`-references") - }; - - err.multipart_suggestion_verbose( - &msg, - suggestions, - Applicability::MachineApplicable, - ); - suggested = true; - break 'outer; + if maybe_suggest(suggested_ty, count, suggestions.clone()) { + return true; } } if let hir::ExprKind::Path(hir::QPath::Resolved(None, path)) = expr.kind @@ -1431,7 +1461,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { break 'outer; } } - suggested + false } fn suggest_remove_await(&self, obligation: &PredicateObligation<'tcx>, err: &mut Diagnostic) { diff --git a/tests/ui/kindck/kindck-copy.stderr b/tests/ui/kindck/kindck-copy.stderr index 9af89159a8cf..aee2aa98a60c 100644 --- a/tests/ui/kindck/kindck-copy.stderr +++ b/tests/ui/kindck/kindck-copy.stderr @@ -4,12 +4,16 @@ error[E0277]: the trait bound `&'static mut isize: Copy` is not satisfied LL | assert_copy::<&'static mut isize>(); | ^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `&'static mut isize` | - = help: the trait `Copy` is implemented for `isize` note: required by a bound in `assert_copy` --> $DIR/kindck-copy.rs:5:18 | LL | fn assert_copy() { } | ^^^^ required by this bound in `assert_copy` +help: consider removing the leading `&`-reference + | +LL - assert_copy::<&'static mut isize>(); +LL + assert_copy::(); + | error[E0277]: the trait bound `&'a mut isize: Copy` is not satisfied --> $DIR/kindck-copy.rs:28:19 @@ -17,12 +21,16 @@ error[E0277]: the trait bound `&'a mut isize: Copy` is not satisfied LL | assert_copy::<&'a mut isize>(); | ^^^^^^^^^^^^^ the trait `Copy` is not implemented for `&'a mut isize` | - = help: the trait `Copy` is implemented for `isize` note: required by a bound in `assert_copy` --> $DIR/kindck-copy.rs:5:18 | LL | fn assert_copy() { } | ^^^^ required by this bound in `assert_copy` +help: consider removing the leading `&`-reference + | +LL - assert_copy::<&'a mut isize>(); +LL + assert_copy::(); + | error[E0277]: the trait bound `Box: Copy` is not satisfied --> $DIR/kindck-copy.rs:31:19 diff --git a/tests/ui/not-panic/not-panic-safe.rs b/tests/ui/not-panic/not-panic-safe.rs index 4165c5dc13aa..1b3c6482ce94 100644 --- a/tests/ui/not-panic/not-panic-safe.rs +++ b/tests/ui/not-panic/not-panic-safe.rs @@ -5,6 +5,6 @@ use std::panic::UnwindSafe; fn assert() {} fn main() { - assert::<&mut i32>(); - //~^ ERROR the type `&mut i32` may not be safely transferred across an unwind boundary + assert::<&mut &mut &i32>(); + //~^ ERROR the type `&mut &mut &i32` may not be safely transferred across an unwind boundary } diff --git a/tests/ui/not-panic/not-panic-safe.stderr b/tests/ui/not-panic/not-panic-safe.stderr index 013c5ee70445..37a6aee39066 100644 --- a/tests/ui/not-panic/not-panic-safe.stderr +++ b/tests/ui/not-panic/not-panic-safe.stderr @@ -1,16 +1,21 @@ -error[E0277]: the type `&mut i32` may not be safely transferred across an unwind boundary +error[E0277]: the type `&mut &mut &i32` may not be safely transferred across an unwind boundary --> $DIR/not-panic-safe.rs:8:14 | -LL | assert::<&mut i32>(); - | ^^^^^^^^ `&mut i32` may not be safely transferred across an unwind boundary +LL | assert::<&mut &mut &i32>(); + | ^^^^^^^^^^^^^^ `&mut &mut &i32` may not be safely transferred across an unwind boundary | - = help: the trait `UnwindSafe` is not implemented for `&mut i32` - = note: `UnwindSafe` is implemented for `&i32`, but not for `&mut i32` + = help: the trait `UnwindSafe` is not implemented for `&mut &mut &i32` + = note: `UnwindSafe` is implemented for `&&mut &i32`, but not for `&mut &mut &i32` note: required by a bound in `assert` --> $DIR/not-panic-safe.rs:5:14 | LL | fn assert() {} | ^^^^^^^^^^ required by this bound in `assert` +help: consider removing 2 leading `&`-references + | +LL - assert::<&mut &mut &i32>(); +LL + assert::<&i32>(); + | error: aborting due to previous error From bb7211702e17dd2d10a6d04962d37331ea032010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sat, 7 Jan 2023 19:35:40 +0000 Subject: [PATCH 432/478] fix rebase --- .../src/traits/error_reporting/suggestions.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 bcc820048049..7e900fe0034b 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1451,8 +1451,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { if let hir::ExprKind::Path(hir::QPath::Resolved(None, path)) = expr.kind && let hir::def::Res::Local(hir_id) = path.res && let Some(hir::Node::Pat(binding)) = self.tcx.hir().find(hir_id) - && let parent_hir_id = self.tcx.hir().get_parent_node(binding.hir_id) - && let Some(hir::Node::Local(local)) = self.tcx.hir().find(parent_hir_id) + && let Some(hir::Node::Local(local)) = self.tcx.hir().find_parent(binding.hir_id) && let None = local.ty && let Some(binding_expr) = local.init { From 8b8cce16bfb74bcb06250ed3b9b3dc8c97e1ee4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Mon, 9 Jan 2023 04:43:18 +0000 Subject: [PATCH 433/478] Use the root trait predicate to determine whether to remove references Fix #84837. --- .../src/traits/error_reporting/suggestions.rs | 8 ++++ ...ypeck-default-trait-impl-precedence.stderr | 6 ++- tests/ui/not-panic/not-panic-safe-4.stderr | 10 +++++ .../suggestions/suggest-remove-refs-5.fixed | 8 ++++ tests/ui/suggestions/suggest-remove-refs-5.rs | 8 ++++ .../suggestions/suggest-remove-refs-5.stderr | 37 +++++++++++++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 tests/ui/suggestions/suggest-remove-refs-5.fixed create mode 100644 tests/ui/suggestions/suggest-remove-refs-5.rs create mode 100644 tests/ui/suggestions/suggest-remove-refs-5.stderr 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 7e900fe0034b..678e7b878298 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -1359,6 +1359,14 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { trait_pred: ty::PolyTraitPredicate<'tcx>, ) -> bool { let mut span = obligation.cause.span; + let mut trait_pred = trait_pred; + let mut code = obligation.cause.code(); + while let Some((c, Some(parent_trait_pred))) = code.parent() { + // We want the root obligation, in order to detect properly handle + // `for _ in &mut &mut vec![] {}`. + code = c; + trait_pred = parent_trait_pred; + } while span.desugaring_kind().is_some() { // Remove all the hir desugaring contexts while maintaining the macro contexts. span.remove_mark(); diff --git a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr index ce7095664c11..32256ed69a76 100644 --- a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr +++ b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr @@ -4,7 +4,6 @@ error[E0277]: the trait bound `u32: Signed` is not satisfied LL | is_defaulted::<&'static u32>(); | ^^^^^^^^^^^^ the trait `Signed` is not implemented for `u32` | - = help: the trait `Signed` is implemented for `i32` note: required for `&'static u32` to implement `Defaulted` --> $DIR/typeck-default-trait-impl-precedence.rs:10:19 | @@ -15,6 +14,11 @@ note: required by a bound in `is_defaulted` | LL | fn is_defaulted() { } | ^^^^^^^^^ required by this bound in `is_defaulted` +help: consider removing the leading `&`-reference + | +LL - is_defaulted::<&'static u32>(); +LL + is_defaulted::(); + | error: aborting due to previous error diff --git a/tests/ui/not-panic/not-panic-safe-4.stderr b/tests/ui/not-panic/not-panic-safe-4.stderr index fc1c594d0d42..9428c125651e 100644 --- a/tests/ui/not-panic/not-panic-safe-4.stderr +++ b/tests/ui/not-panic/not-panic-safe-4.stderr @@ -12,6 +12,11 @@ note: required by a bound in `assert` | LL | fn assert() {} | ^^^^^^^^^^ required by this bound in `assert` +help: consider removing the leading `&`-reference + | +LL - assert::<&RefCell>(); +LL + assert::>(); + | error[E0277]: the type `UnsafeCell` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary --> $DIR/not-panic-safe-4.rs:9:14 @@ -28,6 +33,11 @@ note: required by a bound in `assert` | LL | fn assert() {} | ^^^^^^^^^^ required by this bound in `assert` +help: consider removing the leading `&`-reference + | +LL - assert::<&RefCell>(); +LL + assert::>(); + | error: aborting due to 2 previous errors diff --git a/tests/ui/suggestions/suggest-remove-refs-5.fixed b/tests/ui/suggestions/suggest-remove-refs-5.fixed new file mode 100644 index 000000000000..9f59f9c199a3 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-5.fixed @@ -0,0 +1,8 @@ +// run-rustfix +fn main() { + let v = &mut Vec::::new(); + for _ in v {} //~ ERROR E0277 + + let v = &mut [1u8]; + for _ in v {} //~ ERROR E0277 +} diff --git a/tests/ui/suggestions/suggest-remove-refs-5.rs b/tests/ui/suggestions/suggest-remove-refs-5.rs new file mode 100644 index 000000000000..d56aa0c9ca47 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-5.rs @@ -0,0 +1,8 @@ +// run-rustfix +fn main() { + let v = &mut &mut Vec::::new(); + for _ in &mut &mut v {} //~ ERROR E0277 + + let v = &mut &mut [1u8]; + for _ in &mut v {} //~ ERROR E0277 +} diff --git a/tests/ui/suggestions/suggest-remove-refs-5.stderr b/tests/ui/suggestions/suggest-remove-refs-5.stderr new file mode 100644 index 000000000000..7de84d6122b5 --- /dev/null +++ b/tests/ui/suggestions/suggest-remove-refs-5.stderr @@ -0,0 +1,37 @@ +error[E0277]: `Vec` is not an iterator + --> $DIR/suggest-remove-refs-5.rs:4:14 + | +LL | for _ in &mut &mut v {} + | ^^^^^^^^^^^ `Vec` is not an iterator; try calling `.into_iter()` or `.iter()` + | + = help: the trait `Iterator` is not implemented for `Vec` + = note: required for `&mut Vec` to implement `Iterator` + = note: 3 redundant requirements hidden + = note: required for `&mut &mut &mut &mut Vec` to implement `Iterator` + = note: required for `&mut &mut &mut &mut Vec` to implement `IntoIterator` +help: consider removing 3 leading `&`-references + | +LL ~ let v = &mut Vec::::new(); +LL ~ for _ in v {} + | + +error[E0277]: `[u8; 1]` is not an iterator + --> $DIR/suggest-remove-refs-5.rs:7:14 + | +LL | for _ in &mut v {} + | ^^^^^^ `[u8; 1]` is not an iterator; try calling `.into_iter()` or `.iter()` + | + = help: the trait `Iterator` is not implemented for `[u8; 1]` + = note: required for `&mut [u8; 1]` to implement `Iterator` + = note: 2 redundant requirements hidden + = note: required for `&mut &mut &mut [u8; 1]` to implement `Iterator` + = note: required for `&mut &mut &mut [u8; 1]` to implement `IntoIterator` +help: consider removing 2 leading `&`-references + | +LL ~ let v = &mut [1u8]; +LL ~ for _ in v {} + | + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0277`. From f1ffe823cf1496436a1490e838dec375b225b97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 8 Jan 2023 18:41:09 +0000 Subject: [PATCH 434/478] Hide more of long types in E0271 Fix #40186. --- compiler/rustc_middle/src/ty/print/pretty.rs | 18 ++++++++-- .../src/traits/error_reporting/mod.rs | 29 ++++++++++++++-- .../src/traits/error_reporting/suggestions.rs | 24 +++++++++++--- tests/ui/diagnostic-width/E0271.rs | 33 +++++++++++++++++++ tests/ui/diagnostic-width/E0271.stderr | 23 +++++++++++++ .../issue-62203-hrtb-ice.stderr | 4 +-- .../bound-normalization-fail.stderr | 8 ++--- 7 files changed, 123 insertions(+), 16 deletions(-) create mode 100644 tests/ui/diagnostic-width/E0271.rs create mode 100644 tests/ui/diagnostic-width/E0271.stderr diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index c49e75d68ad3..a91e8de5f21e 100644 --- a/compiler/rustc_middle/src/ty/print/pretty.rs +++ b/compiler/rustc_middle/src/ty/print/pretty.rs @@ -283,6 +283,8 @@ pub trait PrettyPrinter<'tcx>: /// This is typically the case for all non-`'_` regions. fn should_print_region(&self, region: ty::Region<'tcx>) -> bool; + fn reset_type_limit(&mut self) {} + // Defaults (should not be overridden): /// If possible, this returns a global path resolving to `def_id` that is visible @@ -1981,6 +1983,10 @@ impl<'tcx> PrettyPrinter<'tcx> for FmtPrinter<'_, 'tcx> { self.0.ty_infer_name_resolver.as_ref().and_then(|func| func(id)) } + fn reset_type_limit(&mut self) { + self.printed_type_count = 0; + } + fn const_infer_name(&self, id: ty::ConstVid<'tcx>) -> Option { self.0.const_infer_name_resolver.as_ref().and_then(|func| func(id)) } @@ -2722,11 +2728,15 @@ define_print_and_forward_display! { } ty::SubtypePredicate<'tcx> { - p!(print(self.a), " <: ", print(self.b)) + p!(print(self.a), " <: "); + cx.reset_type_limit(); + p!(print(self.b)) } ty::CoercePredicate<'tcx> { - p!(print(self.a), " -> ", print(self.b)) + p!(print(self.a), " -> "); + cx.reset_type_limit(); + p!(print(self.b)) } ty::TraitPredicate<'tcx> { @@ -2738,7 +2748,9 @@ define_print_and_forward_display! { } ty::ProjectionPredicate<'tcx> { - p!(print(self.projection_ty), " == ", print(self.term)) + p!(print(self.projection_ty), " == "); + cx.reset_type_limit(); + p!(print(self.term)) } ty::Term<'tcx> { diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs index 5f06c4d82828..20bede22c342 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs @@ -1724,7 +1724,19 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> { .and_then(|(predicate, _, normalized_term, expected_term)| { self.maybe_detailed_projection_msg(predicate, normalized_term, expected_term) }) - .unwrap_or_else(|| format!("type mismatch resolving `{}`", predicate)); + .unwrap_or_else(|| { + with_forced_trimmed_paths!(format!( + "type mismatch resolving `{}`", + self.resolve_vars_if_possible(predicate) + .print(FmtPrinter::new_with_limit( + self.tcx, + Namespace::TypeNS, + rustc_session::Limit(10), + )) + .unwrap() + .into_buffer() + )) + }); let mut diag = struct_span_err!(self.tcx.sess, obligation.cause.span, E0271, "{msg}"); let secondary_span = match predicate.kind().skip_binder() { @@ -1755,7 +1767,20 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> { kind: hir::ImplItemKind::Type(ty), .. }), - ) => Some((ty.span, format!("type mismatch resolving `{}`", predicate))), + ) => Some(( + ty.span, + with_forced_trimmed_paths!(format!( + "type mismatch resolving `{}`", + self.resolve_vars_if_possible(predicate) + .print(FmtPrinter::new_with_limit( + self.tcx, + Namespace::TypeNS, + rustc_session::Limit(5), + )) + .unwrap() + .into_buffer() + )), + )), _ => None, }), _ => None, 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 439854958270..e3e1663be254 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -2622,11 +2622,25 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { } } ObligationCauseCode::ObjectCastObligation(concrete_ty, object_ty) => { - err.note(&format!( - "required for the cast from `{}` to the object type `{}`", - self.ty_to_string(concrete_ty), - self.ty_to_string(object_ty) - )); + let (concrete_ty, concrete_file) = + self.tcx.short_ty_string(self.resolve_vars_if_possible(concrete_ty)); + let (object_ty, object_file) = + self.tcx.short_ty_string(self.resolve_vars_if_possible(object_ty)); + err.note(&with_forced_trimmed_paths!(format!( + "required for the cast from `{concrete_ty}` to the object type `{object_ty}`", + ))); + if let Some(file) = concrete_file { + err.note(&format!( + "the full name for the casted type has been written to '{}'", + file.display(), + )); + } + if let Some(file) = object_file { + err.note(&format!( + "the full name for the object type has been written to '{}'", + file.display(), + )); + } } ObligationCauseCode::Coercion { source: _, target } => { err.note(&format!("required by cast to type `{}`", self.ty_to_string(target))); diff --git a/tests/ui/diagnostic-width/E0271.rs b/tests/ui/diagnostic-width/E0271.rs new file mode 100644 index 000000000000..7e6b71408558 --- /dev/null +++ b/tests/ui/diagnostic-width/E0271.rs @@ -0,0 +1,33 @@ +// compile-flags: --diagnostic-width=40 +// normalize-stderr-test: "long-type-\d+" -> "long-type-hash" +trait Future { + type Error; +} + +impl Future for Result { + type Error = E; +} + +impl Future for Option { + type Error = (); +} + +struct Foo; + +fn foo() -> Box> { + Box::new( //~ ERROR E0271 + Ok::<_, ()>( + Err::<(), _>( + Ok::<_, ()>( + Err::<(), _>( + Ok::<_, ()>( + Err::<(), _>(Some(5)) + ) + ) + ) + ) + ) + ) +} +fn main() { +} diff --git a/tests/ui/diagnostic-width/E0271.stderr b/tests/ui/diagnostic-width/E0271.stderr new file mode 100644 index 000000000000..ed7b6651d018 --- /dev/null +++ b/tests/ui/diagnostic-width/E0271.stderr @@ -0,0 +1,23 @@ +error[E0271]: type mismatch resolving `>, ...>>, ...>>, ...> as Future>::Error == Foo` + --> $DIR/E0271.rs:18:5 + | +LL | / Box::new( +LL | | Ok::<_, ()>( +LL | | Err::<(), _>( +LL | | Ok::<_, ()>( +... | +LL | | ) +LL | | ) + | |_____^ type mismatch resolving `, ...>>, ...> as Future>::Error == Foo` + | +note: expected this to be `Foo` + --> $DIR/E0271.rs:8:18 + | +LL | type Error = E; + | ^ + = note: required for the cast from `Result, ...>` to the object type `dyn Future` + = note: the full name for the casted type has been written to '$TEST_BUILD_DIR/diagnostic-width/E0271/E0271.long-type-hash.txt' + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0271`. diff --git a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr index fdd192f43137..f843115a1d9a 100644 --- a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr +++ b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr @@ -1,4 +1,4 @@ -error[E0271]: type mismatch resolving `for<'r> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V` +error[E0271]: type mismatch resolving `for<'r> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V` --> $DIR/issue-62203-hrtb-ice.rs:39:9 | LL | let v = Unit2.m( @@ -10,7 +10,7 @@ LL | | f: |x| { ... | LL | | }, LL | | }, - | |_________^ type mismatch resolving `for<'r> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V` + | |_________^ type mismatch resolving `for<'r> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V` | note: expected this to be `<_ as Ty<'_>>::V` --> $DIR/issue-62203-hrtb-ice.rs:21:14 diff --git a/tests/ui/impl-trait/bound-normalization-fail.stderr b/tests/ui/impl-trait/bound-normalization-fail.stderr index a9fa2da569f8..f04a753a0e8b 100644 --- a/tests/ui/impl-trait/bound-normalization-fail.stderr +++ b/tests/ui/impl-trait/bound-normalization-fail.stderr @@ -1,8 +1,8 @@ -error[E0271]: type mismatch resolving ` as FooLike>::Output == ::Assoc` +error[E0271]: type mismatch resolving ` as FooLike>::Output == ::Assoc` --> $DIR/bound-normalization-fail.rs:25:32 | LL | fn foo_fail() -> impl FooLike { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving ` as FooLike>::Output == ::Assoc` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving ` as FooLike>::Output == ::Assoc` LL | LL | Foo(()) | ------- return type was inferred to be `Foo<()>` here @@ -28,11 +28,11 @@ LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { = note: see issue #103532 for more information = help: add `#![feature(impl_trait_projections)]` to the crate attributes to enable -error[E0271]: type mismatch resolving ` as FooLike>::Output == >::Assoc` +error[E0271]: type mismatch resolving ` as FooLike>::Output == >::Assoc` --> $DIR/bound-normalization-fail.rs:41:41 | LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving ` as FooLike>::Output == >::Assoc` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving ` as FooLike>::Output == >::Assoc` ... LL | Foo(()) | ------- return type was inferred to be `Foo<()>` here From 44a5ce6f75f03e0ef8975104ab7a8d6129adaa71 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Tue, 10 Jan 2023 11:23:58 +0000 Subject: [PATCH 435/478] Test that we cannot use trait impl methods arguments as defining uses --- .../type-alias-impl-trait/unnameable_type.rs | 24 ++++++++++++++ .../unnameable_type.stderr | 31 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 tests/ui/type-alias-impl-trait/unnameable_type.rs create mode 100644 tests/ui/type-alias-impl-trait/unnameable_type.stderr diff --git a/tests/ui/type-alias-impl-trait/unnameable_type.rs b/tests/ui/type-alias-impl-trait/unnameable_type.rs new file mode 100644 index 000000000000..1739ab0063fa --- /dev/null +++ b/tests/ui/type-alias-impl-trait/unnameable_type.rs @@ -0,0 +1,24 @@ +#![feature(type_alias_impl_trait)] + +// This test ensures that unnameable types stay unnameable +// https://github.com/rust-lang/rust/issues/63063#issuecomment-1360053614 + +// library +mod private { + pub struct Private; + pub trait Trait { + fn dont_define_this(_private: Private) {} + } +} + +use private::Trait; + +// downstream +type MyPrivate = impl Sized; +//~^ ERROR: unconstrained opaque type +impl Trait for u32 { + fn dont_define_this(_private: MyPrivate) {} + //~^ ERROR: incompatible type for trait +} + +fn main() {} diff --git a/tests/ui/type-alias-impl-trait/unnameable_type.stderr b/tests/ui/type-alias-impl-trait/unnameable_type.stderr new file mode 100644 index 000000000000..7dc6efc4b1b6 --- /dev/null +++ b/tests/ui/type-alias-impl-trait/unnameable_type.stderr @@ -0,0 +1,31 @@ +error: unconstrained opaque type + --> $DIR/unnameable_type.rs:17:18 + | +LL | type MyPrivate = impl Sized; + | ^^^^^^^^^^ + | + = note: `MyPrivate` must be used in combination with a concrete type within the same module + +error[E0053]: method `dont_define_this` has an incompatible type for trait + --> $DIR/unnameable_type.rs:20:35 + | +LL | type MyPrivate = impl Sized; + | ---------- the found opaque type +... +LL | fn dont_define_this(_private: MyPrivate) {} + | ^^^^^^^^^ + | | + | expected struct `Private`, found opaque type + | help: change the parameter type to match the trait: `Private` + | +note: type in trait + --> $DIR/unnameable_type.rs:10:39 + | +LL | fn dont_define_this(_private: Private) {} + | ^^^^^^^ + = note: expected signature `fn(Private)` + found signature `fn(MyPrivate)` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0053`. From 48b7e2a5b93e01fbf30484a8dd4f8ead24db0196 Mon Sep 17 00:00:00 2001 From: Daniel Henry-Mantilla Date: Mon, 31 Oct 2022 13:07:40 +0100 Subject: [PATCH 436/478] Stabilize `::{core,std}::pin::pin!` --- library/core/src/pin.rs | 10 +++------- library/core/tests/lib.rs | 1 - src/tools/miri/tests/pass/issues/issue-miri-2068.rs | 2 -- .../pass/stacked-borrows/future-self-referential.rs | 2 -- tests/ui/pin-macro/cant_access_internals.rs | 1 - tests/ui/pin-macro/cant_access_internals.stderr | 2 +- .../pin-macro/lifetime_errors_on_promotion_misusage.rs | 1 - .../lifetime_errors_on_promotion_misusage.stderr | 4 ++-- 8 files changed, 6 insertions(+), 17 deletions(-) diff --git a/library/core/src/pin.rs b/library/core/src/pin.rs index 3f8acc8505ff..2eb29d4f9c57 100644 --- a/library/core/src/pin.rs +++ b/library/core/src/pin.rs @@ -622,9 +622,8 @@ impl Pin

{ /// that the closure is pinned. /// /// The better alternative is to avoid all that trouble and do the pinning in the outer function - /// instead (here using the unstable `pin` macro): + /// instead (here using the [`pin!`][crate::pin::pin] macro): /// ``` - /// #![feature(pin_macro)] /// use std::pin::pin; /// use std::task::Context; /// use std::future::Future; @@ -1026,7 +1025,6 @@ impl DispatchFromDyn> for Pin

where P: DispatchFromDyn {} /// ### Basic usage /// /// ```rust -/// #![feature(pin_macro)] /// # use core::marker::PhantomPinned as Foo; /// use core::pin::{pin, Pin}; /// @@ -1044,7 +1042,6 @@ impl DispatchFromDyn> for Pin

where P: DispatchFromDyn {} /// ### Manually polling a `Future` (without `Unpin` bounds) /// /// ```rust -/// #![feature(pin_macro)] /// use std::{ /// future::Future, /// pin::pin, @@ -1083,7 +1080,7 @@ impl DispatchFromDyn> for Pin

where P: DispatchFromDyn {} /// ### With `Generator`s /// /// ```rust -/// #![feature(generators, generator_trait, pin_macro)] +/// #![feature(generators, generator_trait)] /// use core::{ /// ops::{Generator, GeneratorState}, /// pin::pin, @@ -1126,7 +1123,6 @@ impl DispatchFromDyn> for Pin

where P: DispatchFromDyn {} /// The following, for instance, fails to compile: /// /// ```rust,compile_fail -/// #![feature(pin_macro)] /// use core::pin::{pin, Pin}; /// # use core::{marker::PhantomPinned as Foo, mem::drop as stuff}; /// @@ -1168,7 +1164,7 @@ impl DispatchFromDyn> for Pin

where P: DispatchFromDyn {} /// constructor. /// /// [`Box::pin`]: ../../std/boxed/struct.Box.html#method.pin -#[unstable(feature = "pin_macro", issue = "93178")] +#[stable(feature = "pin_macro", since = "CURRENT_RUSTC_VERSION")] #[rustc_macro_transparency = "semitransparent"] #[allow_internal_unstable(unsafe_pin_internals)] pub macro pin($value:expr $(,)?) { diff --git a/library/core/tests/lib.rs b/library/core/tests/lib.rs index c910cb65c55d..42a26ae1675c 100644 --- a/library/core/tests/lib.rs +++ b/library/core/tests/lib.rs @@ -48,7 +48,6 @@ #![feature(is_sorted)] #![feature(layout_for_ptr)] #![feature(pattern)] -#![feature(pin_macro)] #![feature(sort_internals)] #![feature(slice_take)] #![feature(slice_from_ptr_range)] diff --git a/src/tools/miri/tests/pass/issues/issue-miri-2068.rs b/src/tools/miri/tests/pass/issues/issue-miri-2068.rs index 7576ba78f607..fe4078f77107 100644 --- a/src/tools/miri/tests/pass/issues/issue-miri-2068.rs +++ b/src/tools/miri/tests/pass/issues/issue-miri-2068.rs @@ -1,5 +1,3 @@ -#![feature(pin_macro)] - use core::future::Future; use core::pin::Pin; use core::task::{Context, Poll}; diff --git a/src/tools/miri/tests/pass/stacked-borrows/future-self-referential.rs b/src/tools/miri/tests/pass/stacked-borrows/future-self-referential.rs index 3ba21552fd36..96fc0be344db 100644 --- a/src/tools/miri/tests/pass/stacked-borrows/future-self-referential.rs +++ b/src/tools/miri/tests/pass/stacked-borrows/future-self-referential.rs @@ -1,5 +1,3 @@ -#![feature(pin_macro)] - use std::future::*; use std::marker::PhantomPinned; use std::pin::*; diff --git a/tests/ui/pin-macro/cant_access_internals.rs b/tests/ui/pin-macro/cant_access_internals.rs index 120d08894f8f..5826a18b5718 100644 --- a/tests/ui/pin-macro/cant_access_internals.rs +++ b/tests/ui/pin-macro/cant_access_internals.rs @@ -1,5 +1,4 @@ // edition:2018 -#![feature(pin_macro)] use core::{ marker::PhantomPinned, diff --git a/tests/ui/pin-macro/cant_access_internals.stderr b/tests/ui/pin-macro/cant_access_internals.stderr index 060c9c48c21c..d43027657f04 100644 --- a/tests/ui/pin-macro/cant_access_internals.stderr +++ b/tests/ui/pin-macro/cant_access_internals.stderr @@ -1,5 +1,5 @@ error[E0658]: use of unstable library feature 'unsafe_pin_internals' - --> $DIR/cant_access_internals.rs:12:15 + --> $DIR/cant_access_internals.rs:11:15 | LL | mem::take(phantom_pinned.pointer); | ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs index ca2b6cf75937..59774bc753dc 100644 --- a/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs +++ b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.rs @@ -1,5 +1,4 @@ // edition:2018 -#![feature(pin_macro)] use core::{ convert::identity, diff --git a/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr index fc1be052fb79..4ecc6370d3ca 100644 --- a/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr +++ b/tests/ui/pin-macro/lifetime_errors_on_promotion_misusage.stderr @@ -1,5 +1,5 @@ error[E0716]: temporary value dropped while borrowed - --> $DIR/lifetime_errors_on_promotion_misusage.rs:12:35 + --> $DIR/lifetime_errors_on_promotion_misusage.rs:11:35 | LL | let phantom_pinned = identity(pin!(PhantomPinned)); | ^^^^^^^^^^^^^^^^^^^ - temporary value is freed at the end of this statement @@ -13,7 +13,7 @@ LL | stuff(phantom_pinned) = note: this error originates in the macro `pin` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0716]: temporary value dropped while borrowed - --> $DIR/lifetime_errors_on_promotion_misusage.rs:19:30 + --> $DIR/lifetime_errors_on_promotion_misusage.rs:18:30 | LL | let phantom_pinned = { | -------------- borrow later stored here From 7aff210ead0eba3b4c6e6b2cbae5157e1ffe0562 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Mon, 9 Jan 2023 00:00:41 +0100 Subject: [PATCH 437/478] Support eager subdiagnostics again --- .../src/diagnostics/diagnostic_builder.rs | 24 +++++++++++--- compiler/rustc_macros/src/lib.rs | 1 + .../session-diagnostic/diagnostic-derive.rs | 2 -- .../diagnostic-derive.stderr | 32 +++++-------------- 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/compiler/rustc_macros/src/diagnostics/diagnostic_builder.rs b/compiler/rustc_macros/src/diagnostics/diagnostic_builder.rs index 82f6812026a7..e405462bbb86 100644 --- a/compiler/rustc_macros/src/diagnostics/diagnostic_builder.rs +++ b/compiler/rustc_macros/src/diagnostics/diagnostic_builder.rs @@ -382,10 +382,26 @@ impl<'a> DiagnosticDeriveVariantBuilder<'a> { return Ok(quote! { #diag.subdiagnostic(#binding); }); } } - (Meta::List(_), "subdiagnostic") => { - throw_invalid_attr!(attr, &meta, |diag| { - diag.help("`subdiagnostic` does not support nested attributes") - }) + (Meta::List(MetaList { ref nested, .. }), "subdiagnostic") => { + if nested.len() == 1 + && let Some(NestedMeta::Meta(Meta::Path(path))) = nested.first() + && path.is_ident("eager") { + let handler = match &self.parent.kind { + DiagnosticDeriveKind::Diagnostic { handler } => handler, + DiagnosticDeriveKind::LintDiagnostic => { + throw_invalid_attr!(attr, &meta, |diag| { + diag.help("eager subdiagnostics are not supported on lints") + }) + } + }; + return Ok(quote! { #diag.eager_subdiagnostic(#handler, #binding); }); + } else { + throw_invalid_attr!(attr, &meta, |diag| { + diag.help( + "`eager` is the only supported nested attribute for `subdiagnostic`", + ) + }) + } } _ => (), } diff --git a/compiler/rustc_macros/src/lib.rs b/compiler/rustc_macros/src/lib.rs index ac916bb60689..bb3722fe156e 100644 --- a/compiler/rustc_macros/src/lib.rs +++ b/compiler/rustc_macros/src/lib.rs @@ -1,5 +1,6 @@ #![feature(allow_internal_unstable)] #![feature(if_let_guard)] +#![feature(let_chains)] #![feature(never_type)] #![feature(proc_macro_diagnostic)] #![feature(proc_macro_span)] diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs index c19b639a8d58..65d9601e78ab 100644 --- a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs +++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs @@ -723,7 +723,6 @@ struct SubdiagnosticEagerLint { #[diag(compiletest_example)] struct SubdiagnosticEagerCorrect { #[subdiagnostic(eager)] - //~^ ERROR `#[subdiagnostic(...)]` is not a valid attribute note: Note, } @@ -744,7 +743,6 @@ pub(crate) struct SubdiagnosticWithSuggestion { #[diag(compiletest_example)] struct SubdiagnosticEagerSuggestion { #[subdiagnostic(eager)] - //~^ ERROR `#[subdiagnostic(...)]` is not a valid attribute sub: SubdiagnosticWithSuggestion, } diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr index f39d32a221ca..13e806a434f6 100644 --- a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr +++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr @@ -539,7 +539,7 @@ error: `#[subdiagnostic(...)]` is not a valid attribute LL | #[subdiagnostic(bad)] | ^^^^^^^^^^^^^^^^^^^^^ | - = help: `subdiagnostic` does not support nested attributes + = help: `eager` is the only supported nested attribute for `subdiagnostic` error: `#[subdiagnostic = ...]` is not a valid attribute --> $DIR/diagnostic-derive.rs:693:5 @@ -553,7 +553,7 @@ error: `#[subdiagnostic(...)]` is not a valid attribute LL | #[subdiagnostic(bad, bad)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | - = help: `subdiagnostic` does not support nested attributes + = help: `eager` is the only supported nested attribute for `subdiagnostic` error: `#[subdiagnostic(...)]` is not a valid attribute --> $DIR/diagnostic-derive.rs:709:5 @@ -561,7 +561,7 @@ error: `#[subdiagnostic(...)]` is not a valid attribute LL | #[subdiagnostic("bad")] | ^^^^^^^^^^^^^^^^^^^^^^^ | - = help: `subdiagnostic` does not support nested attributes + = help: `eager` is the only supported nested attribute for `subdiagnostic` error: `#[subdiagnostic(...)]` is not a valid attribute --> $DIR/diagnostic-derive.rs:717:5 @@ -569,38 +569,22 @@ error: `#[subdiagnostic(...)]` is not a valid attribute LL | #[subdiagnostic(eager)] | ^^^^^^^^^^^^^^^^^^^^^^^ | - = help: `subdiagnostic` does not support nested attributes - -error: `#[subdiagnostic(...)]` is not a valid attribute - --> $DIR/diagnostic-derive.rs:725:5 - | -LL | #[subdiagnostic(eager)] - | ^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: `subdiagnostic` does not support nested attributes - -error: `#[subdiagnostic(...)]` is not a valid attribute - --> $DIR/diagnostic-derive.rs:746:5 - | -LL | #[subdiagnostic(eager)] - | ^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: `subdiagnostic` does not support nested attributes + = help: eager subdiagnostics are not supported on lints error: expected at least one string literal for `code(...)` - --> $DIR/diagnostic-derive.rs:777:18 + --> $DIR/diagnostic-derive.rs:775:18 | LL | #[suggestion(code())] | ^^^^^^ error: `code(...)` must contain only string literals - --> $DIR/diagnostic-derive.rs:785:23 + --> $DIR/diagnostic-derive.rs:783:23 | LL | #[suggestion(code(foo))] | ^^^ error: `code = "..."`/`code(...)` must contain only string literals - --> $DIR/diagnostic-derive.rs:793:18 + --> $DIR/diagnostic-derive.rs:791:18 | LL | #[suggestion(code = 3)] | ^^^^^^^^ @@ -676,7 +660,7 @@ note: required by a bound in `DiagnosticBuilder::<'a, G>::set_arg` --> $COMPILER_DIR/rustc_errors/src/diagnostic_builder.rs:LL:CC = note: this error originates in the derive macro `Diagnostic` which comes from the expansion of the macro `forward` (in Nightly builds, run with -Z macro-backtrace for more info) -error: aborting due to 85 previous errors +error: aborting due to 83 previous errors Some errors have detailed explanations: E0277, E0425. For more information about an error, try `rustc --explain E0277`. From 519b1abd198255a6f6c69d80c20b57729622d61a Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Tue, 20 Dec 2022 00:28:33 +0100 Subject: [PATCH 438/478] Translate const_to_pat.rs --- .../locales/en-US/mir_build.ftl | 19 ++ compiler/rustc_mir_build/src/errors.rs | 51 +++++ .../src/thir/pattern/const_to_pat.rs | 190 +++++------------- 3 files changed, 122 insertions(+), 138 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 60d3d3e69abb..4faaffce7bb3 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -299,3 +299,22 @@ mir_build_multiple_mut_borrows = cannot borrow value as mutable more than once a .mutable_borrow = another mutable borrow, by `{$name_mut}`, occurs here .immutable_borrow = also borrowed as immutable, by `{$name_immut}`, here .moved = also moved into `{$name_moved}` here + +mir_build_union_pattern = cannot use unions in constant patterns + +mir_build_type_not_structural = + to use a constant of type `{$non_sm_ty}` in a pattern, `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` + +mir_build_unsized_pattern = cannot use unsized non-slice type `{$non_sm_ty}` in constant patterns + +mir_build_invalid_pattern = `{$non_sm_ty}` cannot be used in patterns + +mir_build_float_pattern = floating-point types cannot be used in patterns + +mir_build_pointer_pattern = function pointers and unsized pointers in patterns behave unpredictably and should not be relied upon. See https://github.com/rust-lang/rust/issues/70861 for details. + +mir_build_indirect_structural_match = + to use a constant of type `{$non_sm_ty}` in a pattern, `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` + +mir_build_nontrivial_structural_match = + to use a constant of type `{$non_sm_ty}` in a pattern, the constant's initializer must be trivial or `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` \ No newline at end of file diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 68179001b916..840a1faf95a2 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -614,3 +614,54 @@ pub enum MultipleMutBorrowOccurence { name_moved: Ident, }, } + +#[derive(Diagnostic)] +#[diag(mir_build_union_pattern)] +pub struct UnionPattern { + #[primary_span] + pub span: Span, +} + +#[derive(Diagnostic)] +#[diag(mir_build_type_not_structural)] +pub struct TypeNotStructural<'tcx> { + #[primary_span] + pub span: Span, + pub non_sm_ty: Ty<'tcx>, +} + +#[derive(Diagnostic)] +#[diag(mir_build_invalid_pattern)] +pub struct InvalidPattern<'tcx> { + #[primary_span] + pub span: Span, + pub non_sm_ty: Ty<'tcx>, +} + +#[derive(Diagnostic)] +#[diag(mir_build_unsized_pattern)] +pub struct UnsizedPattern<'tcx> { + #[primary_span] + pub span: Span, + pub non_sm_ty: Ty<'tcx>, +} + +#[derive(LintDiagnostic)] +#[diag(mir_build_float_pattern)] +pub struct FloatPattern; + +#[derive(LintDiagnostic)] +#[diag(mir_build_pointer_pattern)] +pub struct PointerPattern; + +#[derive(LintDiagnostic)] +#[diag(mir_build_indirect_structural_match)] +pub struct IndirectStructuralMatch<'tcx> { + pub non_sm_ty: Ty<'tcx>, +} + +#[derive(LintDiagnostic)] +#[diag(mir_build_nontrivial_structural_match)] +pub struct NontrivialStructuralMatch<'tcx> { + pub non_sm_ty: Ty<'tcx>, +} diff --git a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs index 6470efab2e93..8e7ca32feb34 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs @@ -1,11 +1,9 @@ -use rustc_errors::DelayDm; use rustc_hir as hir; use rustc_index::vec::Idx; use rustc_infer::infer::{InferCtxt, TyCtxtInferExt}; use rustc_middle::mir::{self, Field}; use rustc_middle::thir::{FieldPat, Pat, PatKind}; -use rustc_middle::ty::print::with_no_trimmed_paths; -use rustc_middle::ty::{self, AdtDef, Ty, TyCtxt}; +use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_session::lint; use rustc_span::Span; use rustc_trait_selection::traits::predicate_for_trait_def; @@ -15,6 +13,10 @@ use rustc_trait_selection::traits::{self, ObligationCause, PredicateObligation}; use std::cell::Cell; use super::PatCtxt; +use crate::errors::{ + FloatPattern, IndirectStructuralMatch, InvalidPattern, NontrivialStructuralMatch, + PointerPattern, TypeNotStructural, UnionPattern, UnsizedPattern, +}; impl<'a, 'tcx> PatCtxt<'a, 'tcx> { /// Converts an evaluated constant to a pattern (if possible). @@ -105,47 +107,6 @@ impl<'tcx> ConstToPat<'tcx> { self.infcx.tcx } - fn adt_derive_msg(&self, adt_def: AdtDef<'tcx>) -> String { - let path = self.tcx().def_path_str(adt_def.did()); - format!( - "to use a constant of type `{}` in a pattern, \ - `{}` must be annotated with `#[derive(PartialEq, Eq)]`", - path, path, - ) - } - - fn search_for_structural_match_violation(&self, ty: Ty<'tcx>) -> Option { - traits::search_for_structural_match_violation(self.span, self.tcx(), ty).map(|non_sm_ty| { - with_no_trimmed_paths!(match non_sm_ty.kind() { - ty::Adt(adt, _) => self.adt_derive_msg(*adt), - ty::Dynamic(..) => { - "trait objects cannot be used in patterns".to_string() - } - ty::Alias(ty::Opaque, ..) => { - "opaque types cannot be used in patterns".to_string() - } - ty::Closure(..) => { - "closures cannot be used in patterns".to_string() - } - ty::Generator(..) | ty::GeneratorWitness(..) => { - "generators cannot be used in patterns".to_string() - } - ty::Float(..) => { - "floating-point numbers cannot be used in patterns".to_string() - } - ty::FnPtr(..) => { - "function pointers cannot be used in patterns".to_string() - } - ty::RawPtr(..) => { - "raw pointers cannot be used in patterns".to_string() - } - _ => { - bug!("use of a value of `{non_sm_ty}` inside a pattern") - } - }) - }) - } - fn type_marked_structural(&self, ty: Ty<'tcx>) -> bool { ty.is_structural_eq_shallow(self.infcx.tcx) } @@ -176,7 +137,8 @@ impl<'tcx> ConstToPat<'tcx> { // If we were able to successfully convert the const to some pat, // double-check that all types in the const implement `Structural`. - let structural = self.search_for_structural_match_violation(cv.ty()); + let structural = + traits::search_for_structural_match_violation(self.span, self.tcx(), cv.ty()); debug!( "search_for_structural_match_violation cv.ty: {:?} returned: {:?}", cv.ty(), @@ -194,17 +156,18 @@ impl<'tcx> ConstToPat<'tcx> { return inlined_const_as_pat; } - if let Some(msg) = structural { + if let Some(non_sm_ty) = structural { if !self.type_may_have_partial_eq_impl(cv.ty()) { - // span_fatal avoids ICE from resolution of non-existent method (rare case). - self.tcx().sess.span_fatal(self.span, &msg); + // fatal avoids ICE from resolution of non-existent method (rare case). + self.tcx() + .sess + .emit_fatal(TypeNotStructural { span: self.span, non_sm_ty: non_sm_ty }); } else if mir_structural_match_violation && !self.saw_const_match_lint.get() { - self.tcx().struct_span_lint_hir( + self.tcx().emit_spanned_lint( lint::builtin::INDIRECT_STRUCTURAL_MATCH, self.id, self.span, - msg, - |lint| lint, + IndirectStructuralMatch { non_sm_ty }, ); } else { debug!( @@ -278,12 +241,11 @@ impl<'tcx> ConstToPat<'tcx> { let kind = match cv.ty().kind() { ty::Float(_) => { if self.include_lint_checks { - tcx.struct_span_lint_hir( + tcx.emit_spanned_lint( lint::builtin::ILLEGAL_FLOATING_POINT_LITERAL_PATTERN, id, span, - "floating-point types cannot be used in patterns", - |lint| lint, + FloatPattern, ); } PatKind::Constant { value: cv } @@ -291,29 +253,22 @@ impl<'tcx> ConstToPat<'tcx> { ty::Adt(adt_def, _) if adt_def.is_union() => { // Matching on union fields is unsafe, we can't hide it in constants self.saw_const_match_error.set(true); - let msg = "cannot use unions in constant patterns"; - if self.include_lint_checks { - tcx.sess.span_err(span, msg); - } else { - tcx.sess.delay_span_bug(span, msg); - } + let err = UnionPattern { span }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); PatKind::Wild } ty::Adt(..) if !self.type_may_have_partial_eq_impl(cv.ty()) // FIXME(#73448): Find a way to bring const qualification into parity with // `search_for_structural_match_violation` and then remove this condition. - && self.search_for_structural_match_violation(cv.ty()).is_some() => + + // Obtain the actual type that isn't annotated. If we just looked at `cv.ty` we + // could get `Option`, even though `Option` is annotated with derive. + && let Some(non_sm_ty) = traits::search_for_structural_match_violation(span, tcx, cv.ty()) => { - // Obtain the actual type that isn't annotated. If we just looked at `cv.ty` we - // could get `Option`, even though `Option` is annotated with derive. - let msg = self.search_for_structural_match_violation(cv.ty()).unwrap(); self.saw_const_match_error.set(true); - if self.include_lint_checks { - tcx.sess.span_err(self.span, &msg); - } else { - tcx.sess.delay_span_bug(self.span, &msg); - } + let err = TypeNotStructural { span, non_sm_ty }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); PatKind::Wild } // If the type is not structurally comparable, just emit the constant directly, @@ -331,19 +286,11 @@ impl<'tcx> ConstToPat<'tcx> { && !self.saw_const_match_lint.get() { self.saw_const_match_lint.set(true); - tcx.struct_span_lint_hir( + tcx.emit_spanned_lint( lint::builtin::INDIRECT_STRUCTURAL_MATCH, id, span, - DelayDm(|| { - format!( - "to use a constant of type `{}` in a pattern, \ - `{}` must be annotated with `#[derive(PartialEq, Eq)]`", - cv.ty(), - cv.ty(), - ) - }), - |lint| lint, + IndirectStructuralMatch { non_sm_ty: cv.ty() }, ); } // Since we are behind a reference, we can just bubble the error up so we get a @@ -357,18 +304,9 @@ impl<'tcx> ConstToPat<'tcx> { adt_def, cv.ty() ); - let path = tcx.def_path_str(adt_def.did()); - let msg = format!( - "to use a constant of type `{}` in a pattern, \ - `{}` must be annotated with `#[derive(PartialEq, Eq)]`", - path, path, - ); self.saw_const_match_error.set(true); - if self.include_lint_checks { - tcx.sess.span_err(span, &msg); - } else { - tcx.sess.delay_span_bug(span, &msg); - } + let err = TypeNotStructural { span, non_sm_ty: cv.ty() }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); PatKind::Wild } ty::Adt(adt_def, substs) if adt_def.is_enum() => { @@ -401,12 +339,8 @@ impl<'tcx> ConstToPat<'tcx> { // These are not allowed and will error elsewhere anyway. ty::Dynamic(..) => { self.saw_const_match_error.set(true); - let msg = format!("`{}` cannot be used in patterns", cv.ty()); - if self.include_lint_checks { - tcx.sess.span_err(span, &msg); - } else { - tcx.sess.delay_span_bug(span, &msg); - } + let err = InvalidPattern { span, non_sm_ty: cv.ty() }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); PatKind::Wild } // `&str` is represented as `ConstValue::Slice`, let's keep using this @@ -471,32 +405,26 @@ impl<'tcx> ConstToPat<'tcx> { // this pattern to a `PartialEq::eq` comparison and `PartialEq::eq` takes a // reference. This makes the rest of the matching logic simpler as it doesn't have // to figure out how to get a reference again. - ty::Adt(adt_def, _) if !self.type_marked_structural(*pointee_ty) => { + ty::Adt(_, _) if !self.type_marked_structural(*pointee_ty) => { if self.behind_reference.get() { if self.include_lint_checks && !self.saw_const_match_error.get() && !self.saw_const_match_lint.get() { - self.saw_const_match_lint.set(true); - let msg = self.adt_derive_msg(adt_def); - self.tcx().struct_span_lint_hir( + self.saw_const_match_lint.set(true); + tcx.emit_spanned_lint( lint::builtin::INDIRECT_STRUCTURAL_MATCH, self.id, - self.span, - msg, - |lint| lint, + span, + IndirectStructuralMatch { non_sm_ty: *pointee_ty }, ); } PatKind::Constant { value: cv } } else { if !self.saw_const_match_error.get() { self.saw_const_match_error.set(true); - let msg = self.adt_derive_msg(adt_def); - if self.include_lint_checks { - tcx.sess.span_err(span, &msg); - } else { - tcx.sess.delay_span_bug(span, &msg); - } + let err = TypeNotStructural { span, non_sm_ty: *pointee_ty }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); } PatKind::Wild } @@ -507,13 +435,11 @@ impl<'tcx> ConstToPat<'tcx> { _ => { if !pointee_ty.is_sized(tcx, param_env) { // `tcx.deref_mir_constant()` below will ICE with an unsized type - // (except slices, which are handled in a separate arm above). - let msg = format!("cannot use unsized non-slice type `{}` in constant patterns", pointee_ty); - if self.include_lint_checks { - tcx.sess.span_err(span, &msg); - } else { - tcx.sess.delay_span_bug(span, &msg); - } + // (except slices, which are handled in a separate arm above). + + let err = UnsizedPattern { span, non_sm_ty: *pointee_ty }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); + PatKind::Wild } else { let old = self.behind_reference.replace(true); @@ -545,27 +471,19 @@ impl<'tcx> ConstToPat<'tcx> { && !self.saw_const_match_lint.get() { self.saw_const_match_lint.set(true); - let msg = "function pointers and unsized pointers in patterns behave \ - unpredictably and should not be relied upon. \ - See https://github.com/rust-lang/rust/issues/70861 for details."; - tcx.struct_span_lint_hir( + tcx.emit_spanned_lint( lint::builtin::POINTER_STRUCTURAL_MATCH, id, span, - msg, - |lint| lint, + PointerPattern ); } PatKind::Constant { value: cv } } _ => { self.saw_const_match_error.set(true); - let msg = format!("`{}` cannot be used in patterns", cv.ty()); - if self.include_lint_checks { - tcx.sess.span_err(span, &msg); - } else { - tcx.sess.delay_span_bug(span, &msg); - } + let err = InvalidPattern { span, non_sm_ty: cv.ty() }; + tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); PatKind::Wild } }; @@ -576,21 +494,17 @@ impl<'tcx> ConstToPat<'tcx> { && mir_structural_match_violation // FIXME(#73448): Find a way to bring const qualification into parity with // `search_for_structural_match_violation` and then remove this condition. - && self.search_for_structural_match_violation(cv.ty()).is_some() - { - self.saw_const_match_lint.set(true); + // Obtain the actual type that isn't annotated. If we just looked at `cv.ty` we // could get `Option`, even though `Option` is annotated with derive. - let msg = self.search_for_structural_match_violation(cv.ty()).unwrap().replace( - "in a pattern,", - "in a pattern, the constant's initializer must be trivial or", - ); - tcx.struct_span_lint_hir( + && let Some(non_sm_ty) = traits::search_for_structural_match_violation(span, tcx, cv.ty()) + { + self.saw_const_match_lint.set(true); + tcx.emit_spanned_lint( lint::builtin::NONTRIVIAL_STRUCTURAL_MATCH, id, span, - msg, - |lint| lint, + NontrivialStructuralMatch {non_sm_ty} ); } From 5d2b9a9ed09ac8a4cb4b7977cdc513fe1cf56408 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Tue, 20 Dec 2022 16:43:34 +0100 Subject: [PATCH 439/478] Migrate deconstruct_pat.rs --- .../locales/en-US/mir_build.ftl | 8 ++++- compiler/rustc_middle/src/thir.rs | 7 ++++ compiler/rustc_mir_build/src/errors.rs | 20 +++++++++++ .../src/thir/pattern/deconstruct_pat.rs | 35 ++++++++----------- .../overlapping_range_endpoints.stderr | 1 - 5 files changed, 48 insertions(+), 23 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 4faaffce7bb3..162cfce0a241 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -317,4 +317,10 @@ mir_build_indirect_structural_match = to use a constant of type `{$non_sm_ty}` in a pattern, `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` mir_build_nontrivial_structural_match = - to use a constant of type `{$non_sm_ty}` in a pattern, the constant's initializer must be trivial or `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` \ No newline at end of file + to use a constant of type `{$non_sm_ty}` in a pattern, the constant's initializer must be trivial or `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` + +mir_build_overlapping_range_endpoints = multiple patterns overlap on their endpoints + .range = ... with this range + .note = you likely meant to write mutually exclusive ranges + +mir_build_overlapping_range = this range overlaps on `{$range}`... diff --git a/compiler/rustc_middle/src/thir.rs b/compiler/rustc_middle/src/thir.rs index ac903010c8d3..5f320708c841 100644 --- a/compiler/rustc_middle/src/thir.rs +++ b/compiler/rustc_middle/src/thir.rs @@ -9,6 +9,7 @@ //! [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/thir.html use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece}; +use rustc_errors::{DiagnosticArgValue, IntoDiagnosticArg}; use rustc_hir as hir; use rustc_hir::def_id::DefId; use rustc_hir::RangeEnd; @@ -575,6 +576,12 @@ impl<'tcx> Pat<'tcx> { } } +impl<'tcx> IntoDiagnosticArg for Pat<'tcx> { + fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> { + format!("{}", self).into_diagnostic_arg() + } +} + #[derive(Clone, Debug, HashStable)] pub struct Ascription<'tcx> { pub annotation: CanonicalUserTypeAnnotation<'tcx>, diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 840a1faf95a2..6bb15730b006 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -4,6 +4,7 @@ use rustc_errors::{ error_code, Applicability, DiagnosticBuilder, ErrorGuaranteed, IntoDiagnostic, MultiSpan, }; use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic}; +use rustc_middle::thir::Pat; use rustc_middle::ty::{self, Ty}; use rustc_span::{symbol::Ident, Span}; @@ -665,3 +666,22 @@ pub struct IndirectStructuralMatch<'tcx> { pub struct NontrivialStructuralMatch<'tcx> { pub non_sm_ty: Ty<'tcx>, } + +#[derive(LintDiagnostic)] +#[diag(mir_build_overlapping_range_endpoints)] +#[note] +pub struct OverlappingRangeEndpoints<'tcx> { + #[label(range)] + pub range: Span, + #[subdiagnostic] + pub overlap: Overlap<'tcx>, +} + +#[derive(Debug)] +#[derive(Subdiagnostic)] +#[label(mir_build_overlapping_range)] +pub struct Overlap<'tcx> { + #[primary_span] + pub span: Span, + pub range: Pat<'tcx>, +} diff --git a/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs b/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs index a95349d76709..323df1b8147d 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs @@ -67,6 +67,7 @@ use self::SliceKind::*; use super::compare_const_vals; use super::usefulness::{MatchCheckCtxt, PatCtxt}; +use crate::errors::{Overlap, OverlappingRangeEndpoints}; /// Recursively expand this pattern into its subpatterns. Only useful for or-patterns. fn expand_or_pat<'p, 'tcx>(pat: &'p Pat<'tcx>) -> Vec<&'p Pat<'tcx>> { @@ -96,7 +97,7 @@ fn expand_or_pat<'p, 'tcx>(pat: &'p Pat<'tcx>) -> Vec<&'p Pat<'tcx>> { /// `IntRange` is never used to encode an empty range or a "range" that wraps /// around the (offset) space: i.e., `range.lo <= range.hi`. #[derive(Clone, PartialEq, Eq)] -pub(super) struct IntRange { +pub(crate) struct IntRange { range: RangeInclusive, /// Keeps the bias used for encoding the range. It depends on the type of the range and /// possibly the pointer size of the current architecture. The algorithm ensures we never @@ -284,32 +285,24 @@ impl IntRange { return; } - let overlaps: Vec<_> = pats + // Get the first overlap. We get only the first rather than all of them + // because displaying multiple overlaps requires a way to eagerly translate + // lintdiagnostics, but that doesn't exist. + let overlap = pats .filter_map(|pat| Some((pat.ctor().as_int_range()?, pat.span()))) .filter(|(range, _)| self.suspicious_intersection(range)) - .map(|(range, span)| (self.intersection(&range).unwrap(), span)) - .collect(); + .map(|(range, span)| Overlap { + range: self.intersection(&range).unwrap().to_pat(pcx.cx.tcx, pcx.ty), + span, + }) + .next(); - if !overlaps.is_empty() { - pcx.cx.tcx.struct_span_lint_hir( + if let Some(overlap) = overlap { + pcx.cx.tcx.emit_spanned_lint( lint::builtin::OVERLAPPING_RANGE_ENDPOINTS, hir_id, pcx.span, - "multiple patterns overlap on their endpoints", - |lint| { - for (int_range, span) in overlaps { - lint.span_label( - span, - &format!( - "this range overlaps on `{}`...", - int_range.to_pat(pcx.cx.tcx, pcx.ty) - ), - ); - } - lint.span_label(pcx.span, "... with this range"); - lint.note("you likely meant to write mutually exclusive ranges"); - lint - }, + OverlappingRangeEndpoints { overlap, range: pcx.span }, ); } } diff --git a/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr index ea0e8f6e49e0..a1c802add170 100644 --- a/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr +++ b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr @@ -59,7 +59,6 @@ error: multiple patterns overlap on their endpoints LL | 0..=10 => {} | ------ this range overlaps on `10_u8`... LL | 20..=30 => {} - | ------- this range overlaps on `20_u8`... LL | 10..=20 => {} | ^^^^^^^ ... with this range | From ef3307289056ac3151a1a6eb29065932e5326bcf Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Tue, 20 Dec 2022 21:24:18 +0100 Subject: [PATCH 440/478] Migrate usefulness.rs --- .../locales/en-US/mir_build.ftl | 14 +++++++++++-- compiler/rustc_mir_build/src/errors.rs | 14 +++++++++++++ .../src/thir/pattern/const_to_pat.rs | 2 +- .../rustc_mir_build/src/thir/pattern/mod.rs | 2 +- .../src/thir/pattern/usefulness.rs | 21 +++++++++++++++++-- 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 162cfce0a241..9f10dc4b634c 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -313,10 +313,10 @@ mir_build_float_pattern = floating-point types cannot be used in patterns mir_build_pointer_pattern = function pointers and unsized pointers in patterns behave unpredictably and should not be relied upon. See https://github.com/rust-lang/rust/issues/70861 for details. -mir_build_indirect_structural_match = +mir_build_indirect_structural_match = to use a constant of type `{$non_sm_ty}` in a pattern, `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` -mir_build_nontrivial_structural_match = +mir_build_nontrivial_structural_match = to use a constant of type `{$non_sm_ty}` in a pattern, the constant's initializer must be trivial or `{$non_sm_ty}` must be annotated with `#[derive(PartialEq, Eq)]` mir_build_overlapping_range_endpoints = multiple patterns overlap on their endpoints @@ -324,3 +324,13 @@ mir_build_overlapping_range_endpoints = multiple patterns overlap on their endpo .note = you likely meant to write mutually exclusive ranges mir_build_overlapping_range = this range overlaps on `{$range}`... + +mir_build_non_exhaustive_omitted_pattern = some variants are not matched explicitly + .label = {$count -> + [1] pattern `{$witness_1}` + [2] patterns `{$witness_1}` and `{$witness_2}` + [3] patterns `{$witness_1}`, `{$witness_2}` and `{$witness_3}` + *[other] patterns `{$witness_1}`, `{$witness_2}`, `{$witness_3}` and more + } not covered + .help = ensure that all variants are matched explicitly by adding the suggested match arms + .note = the matched value is of type `{$scrut_ty}` and the `non_exhaustive_omitted_patterns` attribute was found diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 6bb15730b006..e15da5bb9ce1 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -685,3 +685,17 @@ pub struct Overlap<'tcx> { pub span: Span, pub range: Pat<'tcx>, } + +#[derive(LintDiagnostic)] +#[diag(mir_build_non_exhaustive_omitted_pattern)] +#[help] +#[note] +pub(crate) struct NonExhaustiveOmittedPattern<'tcx> { + pub scrut_ty: Ty<'tcx>, + #[label] + pub uncovered: Span, + pub count: usize, + pub witness_1: Pat<'tcx>, + pub witness_2: Pat<'tcx>, + pub witness_3: Pat<'tcx>, +} diff --git a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs index 8e7ca32feb34..7f3519945c3f 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs @@ -435,7 +435,7 @@ impl<'tcx> ConstToPat<'tcx> { _ => { if !pointee_ty.is_sized(tcx, param_env) { // `tcx.deref_mir_constant()` below will ICE with an unsized type - // (except slices, which are handled in a separate arm above). + // (except slices, which are handled in a separate arm above). let err = UnsizedPattern { span, non_sm_ty: *pointee_ty }; tcx.sess.create_err(err).emit_unless(!self.include_lint_checks); diff --git a/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index 2c775b397182..6395b75a08f6 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/mod.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/mod.rs @@ -2,7 +2,7 @@ mod check_match; mod const_to_pat; -mod deconstruct_pat; +pub(crate) mod deconstruct_pat; mod usefulness; pub(crate) use self::check_match::check_match; diff --git a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs index 8f80cb95e58e..37aed5bd14da 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs @@ -291,9 +291,8 @@ use self::ArmType::*; use self::Usefulness::*; - -use super::check_match::{joined_uncovered_patterns, pattern_not_covered_label}; use super::deconstruct_pat::{Constructor, DeconstructedPat, Fields, SplitWildcard}; +use crate::errors::NonExhaustiveOmittedPattern; use rustc_data_structures::captures::Captures; @@ -754,6 +753,23 @@ fn lint_non_exhaustive_omitted_patterns<'p, 'tcx>( hir_id: HirId, witnesses: Vec>, ) { + let witness_1 = witnesses.get(0).unwrap().to_pat(cx); + + cx.tcx.emit_spanned_lint( + NON_EXHAUSTIVE_OMITTED_PATTERNS, + hir_id, + sp, + NonExhaustiveOmittedPattern { + scrut_ty, + uncovered: sp, + count: witnesses.len(), + // Substitute dummy values if witnesses is smaller than 3. + witness_2: witnesses.get(1).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), + witness_3: witnesses.get(2).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), + witness_1, + }, + ); + /* cx.tcx.struct_span_lint_hir(NON_EXHAUSTIVE_OMITTED_PATTERNS, hir_id, sp, "some variants are not matched explicitly", |lint| { let joined_patterns = joined_uncovered_patterns(cx, &witnesses); lint.span_label(sp, pattern_not_covered_label(&witnesses, &joined_patterns)); @@ -766,6 +782,7 @@ fn lint_non_exhaustive_omitted_patterns<'p, 'tcx>( )); lint }); + */ } /// Algorithm from . From 31c20210b9683f983953e1a4e45db94146b3c7cb Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Fri, 23 Dec 2022 21:02:23 +0100 Subject: [PATCH 441/478] Migrate pattern matching --- .../locales/en-US/mir_build.ftl | 36 ++- compiler/rustc_mir_build/src/errors.rs | 166 +++++++++++++- compiler/rustc_mir_build/src/lib.rs | 1 + .../src/thir/pattern/check_match.rs | 209 +++++++----------- .../src/thir/pattern/usefulness.rs | 59 ++--- .../ui/consts/const-match-check.eval1.stderr | 2 +- .../ui/consts/const-match-check.eval2.stderr | 2 +- .../consts/const-match-check.matchck.stderr | 8 +- tests/ui/consts/const-pattern-irrefutable.rs | 18 +- .../consts/const-pattern-irrefutable.stderr | 19 +- tests/ui/consts/const_let_refutable.stderr | 2 +- tests/ui/empty/empty-never-array.rs | 3 +- tests/ui/empty/empty-never-array.stderr | 10 +- tests/ui/error-codes/E0005.stderr | 9 +- tests/ui/error-codes/E0297.stderr | 7 +- .../feature-gate-exhaustive-patterns.stderr | 9 +- ...oop-refutable-pattern-error-message.stderr | 2 +- tests/ui/issues/issue-15381.rs | 3 +- tests/ui/issues/issue-15381.stderr | 2 +- .../ui/never_type/exhaustive_patterns.stderr | 8 +- ...een-expanded-earlier-non-exhaustive.stderr | 2 +- tests/ui/pattern/usefulness/issue-31561.rs | 3 +- .../ui/pattern/usefulness/issue-31561.stderr | 12 +- .../usefulness/non-exhaustive-defined-here.rs | 38 ++-- .../non-exhaustive-defined-here.stderr | 54 ++--- .../usefulness/refutable-pattern-errors.rs | 6 +- .../refutable-pattern-errors.stderr | 6 +- .../usefulness/refutable-pattern-in-fn-arg.rs | 3 +- .../refutable-pattern-in-fn-arg.stderr | 2 +- ...recursive-types-are-not-uninhabited.stderr | 9 +- .../const-pat-non-exaustive-let-new-var.rs | 5 +- ...const-pat-non-exaustive-let-new-var.stderr | 5 +- .../ui/uninhabited/uninhabited-irrefutable.rs | 4 +- .../uninhabited-irrefutable.stderr | 10 +- .../uninhabited-matches-feature-gated.stderr | 9 +- 35 files changed, 417 insertions(+), 326 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 9f10dc4b634c..b277942cdcca 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -326,11 +326,39 @@ mir_build_overlapping_range_endpoints = multiple patterns overlap on their endpo mir_build_overlapping_range = this range overlaps on `{$range}`... mir_build_non_exhaustive_omitted_pattern = some variants are not matched explicitly - .label = {$count -> + .help = ensure that all variants are matched explicitly by adding the suggested match arms + .note = the matched value is of type `{$scrut_ty}` and the `non_exhaustive_omitted_patterns` attribute was found + +mir_build_uncovered = {$count -> [1] pattern `{$witness_1}` [2] patterns `{$witness_1}` and `{$witness_2}` [3] patterns `{$witness_1}`, `{$witness_2}` and `{$witness_3}` - *[other] patterns `{$witness_1}`, `{$witness_2}`, `{$witness_3}` and more + *[other] patterns `{$witness_1}`, `{$witness_2}`, `{$witness_3}` and {$remainder} more } not covered - .help = ensure that all variants are matched explicitly by adding the suggested match arms - .note = the matched value is of type `{$scrut_ty}` and the `non_exhaustive_omitted_patterns` attribute was found + +mir_build_pattern_not_covered = refutable pattern in {$origin} + .pattern_ty = the matched value is of type `{$pattern_ty}` + +mir_build_inform_irrefutable = `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant + +mir_build_more_information = for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html + +mir_build_res_defined_here = {$res} defined here + +mir_build_adt_defined_here = `{$ty}` defined here + +mir_build_variant_defined_here = not covered + +mir_build_interpreted_as_const = introduce a variable instead + +mir_build_confused = missing patterns are not covered because `{$variable}` is interpreted as {$article} {$res} pattern, not a new variable + +mir_build_suggest_if_let = you might want to use `if let` to ignore the {$count -> + [one] variant that isn't + *[other] variants that aren't + } matched + +mir_build_suggest_let_else = alternatively, you might want to use `let else` to handle the {$count -> + [one] variant that isn't + *[other] variants that aren't + } matched diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index e15da5bb9ce1..a3c58c31654f 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -1,8 +1,11 @@ +use crate::thir::pattern::deconstruct_pat::DeconstructedPat; use crate::thir::pattern::MatchCheckCtxt; use rustc_errors::Handler; use rustc_errors::{ - error_code, Applicability, DiagnosticBuilder, ErrorGuaranteed, IntoDiagnostic, MultiSpan, + error_code, AddToDiagnostic, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, + IntoDiagnostic, MultiSpan, SubdiagnosticMessage, }; +use rustc_hir::def::Res; use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic}; use rustc_middle::thir::Pat; use rustc_middle::ty::{self, Ty}; @@ -677,7 +680,6 @@ pub struct OverlappingRangeEndpoints<'tcx> { pub overlap: Overlap<'tcx>, } -#[derive(Debug)] #[derive(Subdiagnostic)] #[label(mir_build_overlapping_range)] pub struct Overlap<'tcx> { @@ -692,10 +694,158 @@ pub struct Overlap<'tcx> { #[note] pub(crate) struct NonExhaustiveOmittedPattern<'tcx> { pub scrut_ty: Ty<'tcx>, - #[label] - pub uncovered: Span, - pub count: usize, - pub witness_1: Pat<'tcx>, - pub witness_2: Pat<'tcx>, - pub witness_3: Pat<'tcx>, + #[subdiagnostic] + pub uncovered: Uncovered<'tcx>, +} + +#[derive(Subdiagnostic)] +#[label(mir_build_uncovered)] +pub(crate) struct Uncovered<'tcx> { + #[primary_span] + span: Span, + count: usize, + witness_1: Pat<'tcx>, + witness_2: Pat<'tcx>, + witness_3: Pat<'tcx>, + remainder: usize, +} + +impl<'tcx> Uncovered<'tcx> { + pub fn new<'p>( + span: Span, + cx: &MatchCheckCtxt<'p, 'tcx>, + witnesses: Vec>, + ) -> Self { + let witness_1 = witnesses.get(0).unwrap().to_pat(cx); + Self { + span, + count: witnesses.len(), + // Substitute dummy values if witnesses is smaller than 3. These will never be read. + witness_2: witnesses.get(1).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), + witness_3: witnesses.get(2).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), + witness_1, + remainder: witnesses.len().saturating_sub(3), + } + } +} + +#[derive(Diagnostic)] +#[diag(mir_build_pattern_not_covered, code = "E0005")] +pub(crate) struct PatternNotCovered<'s, 'tcx> { + #[primary_span] + pub span: Span, + pub origin: &'s str, + #[subdiagnostic] + pub uncovered: Uncovered<'tcx>, + #[subdiagnostic] + pub inform: Option, + #[subdiagnostic] + pub interpreted_as_const: Option, + #[subdiagnostic] + pub adt_defined_here: Option>, + #[note(pattern_ty)] + pub _p: (), + pub pattern_ty: Ty<'tcx>, + #[subdiagnostic] + pub if_let_suggestion: Option, + #[subdiagnostic] + pub let_else_suggestion: Option, + #[subdiagnostic] + pub res_defined_here: Option, +} + +#[derive(Subdiagnostic)] +#[note(mir_build_inform_irrefutable)] +#[note(mir_build_more_information)] +pub struct Inform; + +pub struct AdtDefinedHere<'tcx> { + pub adt_def_span: Span, + pub ty: Ty<'tcx>, + pub variants: Vec, +} + +pub struct Variant { + pub span: Span, +} + +impl<'tcx> AddToDiagnostic for AdtDefinedHere<'tcx> { + fn add_to_diagnostic_with(self, diag: &mut Diagnostic, _: F) + where + F: Fn(&mut Diagnostic, SubdiagnosticMessage) -> SubdiagnosticMessage, + { + diag.set_arg("ty", self.ty); + let mut spans = MultiSpan::from(self.adt_def_span); + + for Variant { span } in self.variants { + spans.push_span_label(span, rustc_errors::fluent::mir_build_variant_defined_here); + } + + diag.span_note(spans, rustc_errors::fluent::mir_build_adt_defined_here); + } +} + +#[derive(Subdiagnostic)] +#[label(mir_build_res_defined_here)] +pub struct ResDefinedHere { + #[primary_span] + pub def_span: Span, + pub res: Res, +} + +#[derive(Subdiagnostic)] +#[suggestion( + mir_build_interpreted_as_const, + code = "{variable}_var", + applicability = "maybe-incorrect" +)] +#[label(mir_build_confused)] +pub struct InterpretedAsConst { + #[primary_span] + pub span: Span, + pub article: &'static str, + pub variable: String, + pub res: Res, +} + +#[derive(Subdiagnostic)] +pub enum SuggestIfLet { + #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] + None { + #[suggestion_part(code = "if ")] + start_span: Span, + #[suggestion_part(code = " {{ todo!() }}")] + semi_span: Span, + count: usize, + }, + #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] + One { + #[suggestion_part(code = "let {binding} = if ")] + start_span: Span, + #[suggestion_part(code = " {{ {binding} }} else {{ todo!() }}")] + end_span: Span, + binding: Ident, + count: usize, + }, + #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] + More { + #[suggestion_part(code = "let ({bindings}) = if ")] + start_span: Span, + #[suggestion_part(code = " {{ ({bindings}) }} else {{ todo!() }}")] + end_span: Span, + bindings: String, + count: usize, + }, +} + +#[derive(Subdiagnostic)] +#[suggestion( + mir_build_suggest_let_else, + code = " else {{ todo!() }}", + applicability = "has-placeholders" +)] +pub struct SuggestLetElse { + #[primary_span] + pub end_span: Span, + pub count: usize, } diff --git a/compiler/rustc_mir_build/src/lib.rs b/compiler/rustc_mir_build/src/lib.rs index 2b05e92fdcf2..fb7ae6f1d242 100644 --- a/compiler/rustc_mir_build/src/lib.rs +++ b/compiler/rustc_mir_build/src/lib.rs @@ -10,6 +10,7 @@ #![feature(let_chains)] #![feature(min_specialization)] #![feature(once_cell)] +#![feature(try_blocks)] #![recursion_limit = "256"] #[macro_use] diff --git a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs index e7ee0d9e908e..422c2ff3ede0 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs @@ -1,3 +1,8 @@ +//#![allow(unused_imports, unused_variables)] + +//#![warn(rustc::untranslatable_diagnostic)] +//#![warn(rustc::diagnostic_outside_of_impl)] + use super::deconstruct_pat::{Constructor, DeconstructedPat}; use super::usefulness::{ compute_match_usefulness, MatchArm, MatchCheckCtxt, Reachability, UsefulnessReport, @@ -9,8 +14,7 @@ use crate::errors::*; use rustc_arena::TypedArena; use rustc_ast::Mutability; use rustc_errors::{ - pluralize, struct_span_err, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, - MultiSpan, + struct_span_err, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, MultiSpan, }; use rustc_hir as hir; use rustc_hir::def::*; @@ -378,8 +382,8 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { let pattern = self.lower_pattern(&mut cx, pat, &mut false); let pattern_ty = pattern.ty(); - let arms = vec![MatchArm { pat: pattern, hir_id: pat.hir_id, has_guard: false }]; - let report = compute_match_usefulness(&cx, &arms, pat.hir_id, pattern_ty); + let arm = MatchArm { pat: pattern, hir_id: pat.hir_id, has_guard: false }; + let report = compute_match_usefulness(&cx, &[arm], pat.hir_id, pattern_ty); // Note: we ignore whether the pattern is unreachable (i.e. whether the type is empty). We // only care about exhaustiveness here. @@ -390,145 +394,82 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { return; } - let joined_patterns = joined_uncovered_patterns(&cx, &witnesses); - - let mut bindings = vec![]; - - let mut err = struct_span_err!( - self.tcx.sess, - pat.span, - E0005, - "refutable pattern in {}: {} not covered", - origin, - joined_patterns - ); - let suggest_if_let = match &pat.kind { - hir::PatKind::Path(hir::QPath::Resolved(None, path)) - if path.segments.len() == 1 && path.segments[0].args.is_none() => + let (inform, interpreted_as_const, res_defined_here, if_let_suggestion, let_else_suggestion) = + if let hir::PatKind::Path(hir::QPath::Resolved( + None, + hir::Path { + segments: &[hir::PathSegment { args: None, res, ident, .. }], + .. + }, + )) = &pat.kind { - const_not_var(&mut err, cx.tcx, pat, path); - false - } - _ => { - pat.walk(&mut |pat: &hir::Pat<'_>| { - match pat.kind { - hir::PatKind::Binding(_, _, ident, _) => { - bindings.push(ident); + ( + None, + Some(InterpretedAsConst { + span: pat.span, + article: res.article(), + variable: ident.to_string().to_lowercase(), + res, + }), + try { + ResDefinedHere { + def_span: cx.tcx.hir().res_span(res)?, + res, } - _ => {} + }, + None, None, + ) + } else if let Some(span) = sp && self.tcx.sess.source_map().is_span_accessible(span) { + let mut bindings = vec![]; + pat.walk_always(&mut |pat: &hir::Pat<'_>| { + if let hir::PatKind::Binding(_, _, ident, _) = pat.kind { + bindings.push(ident); } - true }); - - err.span_label(pat.span, pattern_not_covered_label(&witnesses, &joined_patterns)); - true - } - }; - - if let (Some(span), true) = (sp, suggest_if_let) { - err.note( - "`let` bindings require an \"irrefutable pattern\", like a `struct` or \ - an `enum` with only one variant", - ); - if self.tcx.sess.source_map().is_span_accessible(span) { let semi_span = span.shrink_to_hi().with_lo(span.hi() - BytePos(1)); let start_span = span.shrink_to_lo(); let end_span = semi_span.shrink_to_lo(); - err.multipart_suggestion( - &format!( - "you might want to use `if let` to ignore the variant{} that {} matched", - pluralize!(witnesses.len()), - match witnesses.len() { - 1 => "isn't", - _ => "aren't", - }, - ), - vec![ - match &bindings[..] { - [] => (start_span, "if ".to_string()), - [binding] => (start_span, format!("let {} = if ", binding)), - bindings => ( - start_span, - format!( - "let ({}) = if ", - bindings - .iter() - .map(|ident| ident.to_string()) - .collect::>() - .join(", ") - ), - ), - }, - match &bindings[..] { - [] => (semi_span, " { todo!() }".to_string()), - [binding] => { - (end_span, format!(" {{ {} }} else {{ todo!() }}", binding)) - } - bindings => ( - end_span, - format!( - " {{ ({}) }} else {{ todo!() }}", - bindings - .iter() - .map(|ident| ident.to_string()) - .collect::>() - .join(", ") - ), - ), - }, - ], - Applicability::HasPlaceholders, - ); - if !bindings.is_empty() { - err.span_suggestion_verbose( - semi_span.shrink_to_lo(), - &format!( - "alternatively, you might want to use \ - let else to handle the variant{} that {} matched", - pluralize!(witnesses.len()), - match witnesses.len() { - 1 => "isn't", - _ => "aren't", - }, - ), - " else { todo!() }", - Applicability::HasPlaceholders, - ); - } + let count = witnesses.len(); + let if_let = match *bindings { + [] => SuggestIfLet::None{start_span, semi_span, count}, + [binding] => SuggestIfLet::One{start_span, end_span, count, binding }, + _ => SuggestIfLet::More{start_span, end_span, count, bindings: bindings + .iter() + .map(|ident| ident.to_string()) + .collect::>() + .join(", ")}, + }; + let let_else = if bindings.is_empty() {None} else{Some( SuggestLetElse{end_span, count })}; + (sp.map(|_|Inform), None, None, Some(if_let), let_else) + } else{ + (sp.map(|_|Inform), None, None, None, None) + }; + + let adt_defined_here = try { + let ty = pattern_ty.peel_refs(); + let ty::Adt(def, _) = ty.kind() else { None? }; + let adt_def_span = cx.tcx.hir().get_if_local(def.did())?.ident()?.span; + let mut variants = vec![]; + + for span in maybe_point_at_variant(&cx, *def, witnesses.iter().take(5)) { + variants.push(Variant { span }); } - err.note( - "for more information, visit \ - https://doc.rust-lang.org/book/ch18-02-refutability.html", - ); - } + AdtDefinedHere { adt_def_span, ty, variants } + }; - adt_defined_here(&cx, &mut err, pattern_ty, &witnesses); - err.note(&format!("the matched value is of type `{}`", pattern_ty)); - err.emit(); - } -} - -/// A path pattern was interpreted as a constant, not a new variable. -/// This caused an irrefutable match failure in e.g. `let`. -fn const_not_var(err: &mut Diagnostic, tcx: TyCtxt<'_>, pat: &Pat<'_>, path: &hir::Path<'_>) { - let descr = path.res.descr(); - err.span_label( - pat.span, - format!("interpreted as {} {} pattern, not a new variable", path.res.article(), descr,), - ); - - err.span_suggestion( - pat.span, - "introduce a variable instead", - format!("{}_var", path.segments[0].ident).to_lowercase(), - // Cannot use `MachineApplicable` as it's not really *always* correct - // because there may be such an identifier in scope or the user maybe - // really wanted to match against the constant. This is quite unlikely however. - Applicability::MaybeIncorrect, - ); - - if let Some(span) = tcx.hir().res_span(path.res) { - err.span_label(span, format!("{} defined here", descr)); + self.tcx.sess.emit_err(PatternNotCovered { + span: pat.span, + origin, + uncovered: Uncovered::new(pat.span, &cx, witnesses), + inform, + interpreted_as_const, + _p: (), + pattern_ty, + if_let_suggestion, + let_else_suggestion, + res_defined_here, + adt_defined_here, + }); } } diff --git a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs index 37aed5bd14da..be66d0d47651 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs @@ -292,7 +292,7 @@ use self::ArmType::*; use self::Usefulness::*; use super::deconstruct_pat::{Constructor, DeconstructedPat, Fields, SplitWildcard}; -use crate::errors::NonExhaustiveOmittedPattern; +use crate::errors::{NonExhaustiveOmittedPattern, Uncovered}; use rustc_data_structures::captures::Captures; @@ -742,49 +742,6 @@ impl<'p, 'tcx> Witness<'p, 'tcx> { } } -/// Report that a match of a `non_exhaustive` enum marked with `non_exhaustive_omitted_patterns` -/// is not exhaustive enough. -/// -/// NB: The partner lint for structs lives in `compiler/rustc_hir_analysis/src/check/pat.rs`. -fn lint_non_exhaustive_omitted_patterns<'p, 'tcx>( - cx: &MatchCheckCtxt<'p, 'tcx>, - scrut_ty: Ty<'tcx>, - sp: Span, - hir_id: HirId, - witnesses: Vec>, -) { - let witness_1 = witnesses.get(0).unwrap().to_pat(cx); - - cx.tcx.emit_spanned_lint( - NON_EXHAUSTIVE_OMITTED_PATTERNS, - hir_id, - sp, - NonExhaustiveOmittedPattern { - scrut_ty, - uncovered: sp, - count: witnesses.len(), - // Substitute dummy values if witnesses is smaller than 3. - witness_2: witnesses.get(1).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), - witness_3: witnesses.get(2).map(|w| w.to_pat(cx)).unwrap_or_else(|| witness_1.clone()), - witness_1, - }, - ); - /* - cx.tcx.struct_span_lint_hir(NON_EXHAUSTIVE_OMITTED_PATTERNS, hir_id, sp, "some variants are not matched explicitly", |lint| { - let joined_patterns = joined_uncovered_patterns(cx, &witnesses); - lint.span_label(sp, pattern_not_covered_label(&witnesses, &joined_patterns)); - lint.help( - "ensure that all variants are matched explicitly by adding the suggested match arms", - ); - lint.note(&format!( - "the matched value is of type `{}` and the `non_exhaustive_omitted_patterns` attribute was found", - scrut_ty, - )); - lint - }); - */ -} - /// Algorithm from . /// The algorithm from the paper has been modified to correctly handle empty /// types. The changes are: @@ -930,7 +887,19 @@ fn is_useful<'p, 'tcx>( .collect::>() }; - lint_non_exhaustive_omitted_patterns(pcx.cx, pcx.ty, pcx.span, hir_id, patterns); + // Report that a match of a `non_exhaustive` enum marked with `non_exhaustive_omitted_patterns` + // is not exhaustive enough. + // + // NB: The partner lint for structs lives in `compiler/rustc_hir_analysis/src/check/pat.rs`. + cx.tcx.emit_spanned_lint( + NON_EXHAUSTIVE_OMITTED_PATTERNS, + hir_id, + pcx.span, + NonExhaustiveOmittedPattern { + scrut_ty: pcx.ty, + uncovered: Uncovered::new(pcx.span, pcx.cx, patterns), + }, + ); } ret.extend(usefulness); diff --git a/tests/ui/consts/const-match-check.eval1.stderr b/tests/ui/consts/const-match-check.eval1.stderr index 6e61dbbd8eee..1caf1617e213 100644 --- a/tests/ui/consts/const-match-check.eval1.stderr +++ b/tests/ui/consts/const-match-check.eval1.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:25:15 | LL | A = { let 0 = 0; 0 }, diff --git a/tests/ui/consts/const-match-check.eval2.stderr b/tests/ui/consts/const-match-check.eval2.stderr index 1b3b6e06c3df..f038ba1c8ed8 100644 --- a/tests/ui/consts/const-match-check.eval2.stderr +++ b/tests/ui/consts/const-match-check.eval2.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:31:24 | LL | let x: [i32; { let 0 = 0; 0 }] = []; diff --git a/tests/ui/consts/const-match-check.matchck.stderr b/tests/ui/consts/const-match-check.matchck.stderr index bc8edfa7af9f..b1921f8a41e4 100644 --- a/tests/ui/consts/const-match-check.matchck.stderr +++ b/tests/ui/consts/const-match-check.matchck.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:4:22 | LL | const X: i32 = { let 0 = 0; 0 }; @@ -12,7 +12,7 @@ help: you might want to use `if let` to ignore the variants that aren't matched LL | const X: i32 = { if let 0 = 0 { todo!() } 0 }; | ++ ~~~~~~~~~~~ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:8:23 | LL | static Y: i32 = { let 0 = 0; 0 }; @@ -26,7 +26,7 @@ help: you might want to use `if let` to ignore the variants that aren't matched LL | static Y: i32 = { if let 0 = 0 { todo!() } 0 }; | ++ ~~~~~~~~~~~ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:13:26 | LL | const X: i32 = { let 0 = 0; 0 }; @@ -40,7 +40,7 @@ help: you might want to use `if let` to ignore the variants that aren't matched LL | const X: i32 = { if let 0 = 0 { todo!() } 0 }; | ++ ~~~~~~~~~~~ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-match-check.rs:19:26 | LL | const X: i32 = { let 0 = 0; 0 }; diff --git a/tests/ui/consts/const-pattern-irrefutable.rs b/tests/ui/consts/const-pattern-irrefutable.rs index 2105c12a1680..61bdf57ffdb9 100644 --- a/tests/ui/consts/const-pattern-irrefutable.rs +++ b/tests/ui/consts/const-pattern-irrefutable.rs @@ -9,8 +9,20 @@ use foo::d; const a: u8 = 2; fn main() { - let a = 4; //~ ERROR refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX - let c = 4; //~ ERROR refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX - let d = 4; //~ ERROR refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX + let a = 4; + //~^ ERROR refutable pattern in local binding + //~| patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + //~| missing patterns are not covered because `a` is interpreted as a constant pattern, not a new variable + //~| HELP introduce a variable instead + let c = 4; + //~^ ERROR refutable pattern in local binding + //~| patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + //~| missing patterns are not covered because `c` is interpreted as a constant pattern, not a new variable + //~| HELP introduce a variable instead + let d = 4; + //~^ ERROR refutable pattern in local binding + //~| patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + //~| missing patterns are not covered because `d` is interpreted as a constant pattern, not a new variable + //~| HELP introduce a variable instead fn f() {} // Check that the `NOTE`s still work with an item here (cf. issue #35115). } diff --git a/tests/ui/consts/const-pattern-irrefutable.stderr b/tests/ui/consts/const-pattern-irrefutable.stderr index a2b8f072c6ea..c156ea1610c4 100644 --- a/tests/ui/consts/const-pattern-irrefutable.stderr +++ b/tests/ui/consts/const-pattern-irrefutable.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-pattern-irrefutable.rs:12:9 | LL | const a: u8 = 2; @@ -7,13 +7,14 @@ LL | const a: u8 = 2; LL | let a = 4; | ^ | | - | interpreted as a constant pattern, not a new variable + | patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + | missing patterns are not covered because `a` is interpreted as a constant pattern, not a new variable | help: introduce a variable instead: `a_var` | = note: the matched value is of type `u8` -error[E0005]: refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered - --> $DIR/const-pattern-irrefutable.rs:13:9 +error[E0005]: refutable pattern in local binding + --> $DIR/const-pattern-irrefutable.rs:17:9 | LL | pub const b: u8 = 2; | --------------- constant defined here @@ -21,13 +22,14 @@ LL | pub const b: u8 = 2; LL | let c = 4; | ^ | | - | interpreted as a constant pattern, not a new variable + | patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + | missing patterns are not covered because `c` is interpreted as a constant pattern, not a new variable | help: introduce a variable instead: `c_var` | = note: the matched value is of type `u8` -error[E0005]: refutable pattern in local binding: `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered - --> $DIR/const-pattern-irrefutable.rs:14:9 +error[E0005]: refutable pattern in local binding + --> $DIR/const-pattern-irrefutable.rs:22:9 | LL | pub const d: u8 = 2; | --------------- constant defined here @@ -35,7 +37,8 @@ LL | pub const d: u8 = 2; LL | let d = 4; | ^ | | - | interpreted as a constant pattern, not a new variable + | patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered + | missing patterns are not covered because `d` is interpreted as a constant pattern, not a new variable | help: introduce a variable instead: `d_var` | = note: the matched value is of type `u8` diff --git a/tests/ui/consts/const_let_refutable.stderr b/tests/ui/consts/const_let_refutable.stderr index d7e8c048f7dc..d6119028f5b5 100644 --- a/tests/ui/consts/const_let_refutable.stderr +++ b/tests/ui/consts/const_let_refutable.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in function argument: `&[]`, `&[_]` and `&[_, _, _, ..]` not covered +error[E0005]: refutable pattern in function argument --> $DIR/const_let_refutable.rs:3:16 | LL | const fn slice(&[a, b]: &[i32]) -> i32 { diff --git a/tests/ui/empty/empty-never-array.rs b/tests/ui/empty/empty-never-array.rs index 3de2b1a78a3d..fd93346101d8 100644 --- a/tests/ui/empty/empty-never-array.rs +++ b/tests/ui/empty/empty-never-array.rs @@ -8,7 +8,8 @@ enum Helper { fn transmute(t: T) -> U { let Helper::U(u) = Helper::T(t, []); - //~^ ERROR refutable pattern in local binding: `Helper::T(_, _)` not covered + //~^ ERROR refutable pattern in local binding + //~| `Helper::T(_, _)` not covered u } diff --git a/tests/ui/empty/empty-never-array.stderr b/tests/ui/empty/empty-never-array.stderr index adf782743680..9385382f860b 100644 --- a/tests/ui/empty/empty-never-array.stderr +++ b/tests/ui/empty/empty-never-array.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Helper::T(_, _)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/empty-never-array.rs:10:9 | LL | let Helper::U(u) = Helper::T(t, []); @@ -7,18 +7,18 @@ LL | let Helper::U(u) = Helper::T(t, []); = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `Helper` defined here - --> $DIR/empty-never-array.rs:4:5 + --> $DIR/empty-never-array.rs:3:6 | LL | enum Helper { - | ------ + | ^^^^^^ LL | T(T, [!; 0]), - | ^ not covered + | - not covered = note: the matched value is of type `Helper` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let u = if let Helper::U(u) = Helper::T(t, []) { u } else { todo!() }; | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Helper::U(u) = Helper::T(t, []) else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/error-codes/E0005.stderr b/tests/ui/error-codes/E0005.stderr index 0f179259356d..3c27a7d4c064 100644 --- a/tests/ui/error-codes/E0005.stderr +++ b/tests/ui/error-codes/E0005.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `None` not covered +error[E0005]: refutable pattern in local binding --> $DIR/E0005.rs:3:9 | LL | let Some(y) = x; @@ -6,17 +6,12 @@ LL | let Some(y) = x; | = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html -note: `Option` defined here - --> $SRC_DIR/core/src/option.rs:LL:COL - ::: $SRC_DIR/core/src/option.rs:LL:COL - | - = note: not covered = note: the matched value is of type `Option` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let y = if let Some(y) = x { y } else { todo!() }; | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Some(y) = x else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/error-codes/E0297.stderr b/tests/ui/error-codes/E0297.stderr index 903422f3b9b8..293028f5f68b 100644 --- a/tests/ui/error-codes/E0297.stderr +++ b/tests/ui/error-codes/E0297.stderr @@ -1,14 +1,9 @@ -error[E0005]: refutable pattern in `for` loop binding: `None` not covered +error[E0005]: refutable pattern in `for` loop binding --> $DIR/E0297.rs:4:9 | LL | for Some(x) in xs {} | ^^^^^^^ pattern `None` not covered | -note: `Option` defined here - --> $SRC_DIR/core/src/option.rs:LL:COL - ::: $SRC_DIR/core/src/option.rs:LL:COL - | - = note: not covered = note: the matched value is of type `Option` error: aborting due to previous error diff --git a/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr index e253e4791e8b..5e4df7422fcf 100644 --- a/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr +++ b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Err(_)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/feature-gate-exhaustive-patterns.rs:8:9 | LL | let Ok(_x) = foo(); @@ -6,17 +6,12 @@ LL | let Ok(_x) = foo(); | = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html -note: `Result` defined here - --> $SRC_DIR/core/src/result.rs:LL:COL - ::: $SRC_DIR/core/src/result.rs:LL:COL - | - = note: not covered = note: the matched value is of type `Result` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let _x = if let Ok(_x) = foo() { _x } else { todo!() }; | +++++++++++ +++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(_x) = foo() else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/for/for-loop-refutable-pattern-error-message.stderr b/tests/ui/for/for-loop-refutable-pattern-error-message.stderr index 20b689aa5e0a..49a82a6769dc 100644 --- a/tests/ui/for/for-loop-refutable-pattern-error-message.stderr +++ b/tests/ui/for/for-loop-refutable-pattern-error-message.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in `for` loop binding: `&i32::MIN..=0_i32` and `&2_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in `for` loop binding --> $DIR/for-loop-refutable-pattern-error-message.rs:2:9 | LL | for &1 in [1].iter() {} diff --git a/tests/ui/issues/issue-15381.rs b/tests/ui/issues/issue-15381.rs index 392fb1b24ddc..23b266bef1d9 100644 --- a/tests/ui/issues/issue-15381.rs +++ b/tests/ui/issues/issue-15381.rs @@ -2,7 +2,8 @@ fn main() { let values: Vec = vec![1,2,3,4,5,6,7,8]; for &[x,y,z] in values.chunks(3).filter(|&xs| xs.len() == 3) { - //~^ ERROR refutable pattern in `for` loop binding: `&[]`, `&[_]`, `&[_, _]` and 1 more not + //~^ ERROR refutable pattern in `for` loop binding + //~| patterns `&[]`, `&[_]`, `&[_, _]` and 1 more not covered println!("y={}", y); } } diff --git a/tests/ui/issues/issue-15381.stderr b/tests/ui/issues/issue-15381.stderr index c4667ce1c8ba..085958411ccb 100644 --- a/tests/ui/issues/issue-15381.stderr +++ b/tests/ui/issues/issue-15381.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in `for` loop binding: `&[]`, `&[_]`, `&[_, _]` and 1 more not covered +error[E0005]: refutable pattern in `for` loop binding --> $DIR/issue-15381.rs:4:9 | LL | for &[x,y,z] in values.chunks(3).filter(|&xs| xs.len() == 3) { diff --git a/tests/ui/never_type/exhaustive_patterns.stderr b/tests/ui/never_type/exhaustive_patterns.stderr index e41baf862180..40c7c1d1067f 100644 --- a/tests/ui/never_type/exhaustive_patterns.stderr +++ b/tests/ui/never_type/exhaustive_patterns.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Either::B(_)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/exhaustive_patterns.rs:20:9 | LL | let Either::A(()) = foo(); @@ -7,13 +7,13 @@ LL | let Either::A(()) = foo(); = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `Either<(), !>` defined here - --> $DIR/exhaustive_patterns.rs:12:5 + --> $DIR/exhaustive_patterns.rs:10:6 | LL | enum Either { - | ------ + | ^^^^^^ LL | A(A), LL | B(inner::Wrapper), - | ^ not covered + | - not covered = note: the matched value is of type `Either<(), !>` help: you might want to use `if let` to ignore the variant that isn't matched | diff --git a/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr b/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr index 95b22ac05948..4adcf4feee90 100644 --- a/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr +++ b/tests/ui/or-patterns/issue-69875-should-have-been-expanded-earlier-non-exhaustive.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `3_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:2:10 | LL | let (0 | (1 | 2)) = 0; diff --git a/tests/ui/pattern/usefulness/issue-31561.rs b/tests/ui/pattern/usefulness/issue-31561.rs index 5b878851a314..82414f0418bb 100644 --- a/tests/ui/pattern/usefulness/issue-31561.rs +++ b/tests/ui/pattern/usefulness/issue-31561.rs @@ -6,5 +6,6 @@ enum Thing { fn main() { let Thing::Foo(y) = Thing::Foo(1); - //~^ ERROR refutable pattern in local binding: `Thing::Bar` and `Thing::Baz` not covered + //~^ ERROR refutable pattern in local binding + //~| `Thing::Bar` and `Thing::Baz` not covered } diff --git a/tests/ui/pattern/usefulness/issue-31561.stderr b/tests/ui/pattern/usefulness/issue-31561.stderr index 20f2f09500aa..202fe9de5d3e 100644 --- a/tests/ui/pattern/usefulness/issue-31561.stderr +++ b/tests/ui/pattern/usefulness/issue-31561.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Thing::Bar` and `Thing::Baz` not covered +error[E0005]: refutable pattern in local binding --> $DIR/issue-31561.rs:8:9 | LL | let Thing::Foo(y) = Thing::Foo(1); @@ -7,21 +7,21 @@ LL | let Thing::Foo(y) = Thing::Foo(1); = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `Thing` defined here - --> $DIR/issue-31561.rs:3:5 + --> $DIR/issue-31561.rs:1:6 | LL | enum Thing { - | ----- + | ^^^^^ LL | Foo(u8), LL | Bar, - | ^^^ not covered + | --- not covered LL | Baz - | ^^^ not covered + | --- not covered = note: the matched value is of type `Thing` help: you might want to use `if let` to ignore the variants that aren't matched | LL | let y = if let Thing::Foo(y) = Thing::Foo(1) { y } else { todo!() }; | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variants that aren't matched +help: alternatively, you might want to use `let else` to handle the variants that aren't matched | LL | let Thing::Foo(y) = Thing::Foo(1) else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs index af42fc1aeb46..5145f769075d 100644 --- a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs +++ b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.rs @@ -15,9 +15,6 @@ enum E { //~^ NOTE `E` defined here //~| NOTE `E` defined here //~| NOTE `E` defined here - //~| NOTE `E` defined here - //~| NOTE `E` defined here - //~| NOTE `E` defined here //~| NOTE not covered //~| NOTE not covered //~| NOTE not covered @@ -41,37 +38,41 @@ fn by_val(e: E) { E::A => {} } - let E::A = e; //~ ERROR refutable pattern in local binding: `E::B` and `E::C` not covered - //~^ NOTE patterns `E::B` and `E::C` not covered + let E::A = e; + //~^ ERROR refutable pattern in local binding + //~| patterns `E::B` and `E::C` not covered //~| NOTE `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with //~| NOTE for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html //~| NOTE the matched value is of type `E` } fn by_ref_once(e: &E) { - match e { //~ ERROR non-exhaustive patterns: `&E::B` and `&E::C` not covered - //~^ NOTE patterns `&E::B` and `&E::C` not covered + match e { + //~^ ERROR non-exhaustive patterns + //~| patterns `&E::B` and `&E::C` not covered //~| NOTE the matched value is of type `&E` E::A => {} } - let E::A = e; //~ ERROR refutable pattern in local binding: `&E::B` and `&E::C` not covered - //~^ NOTE patterns `&E::B` and `&E::C` not covered + let E::A = e; + //~^ ERROR refutable pattern in local binding + //~| patterns `&E::B` and `&E::C` not covered //~| NOTE `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with //~| NOTE for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html //~| NOTE the matched value is of type `&E` } fn by_ref_thrice(e: & &mut &E) { - match e { //~ ERROR non-exhaustive patterns: `&&mut &E::B` and `&&mut &E::C` not covered - //~^ NOTE patterns `&&mut &E::B` and `&&mut &E::C` not covered + match e { + //~^ ERROR non-exhaustive patterns + //~| patterns `&&mut &E::B` and `&&mut &E::C` not covered //~| NOTE the matched value is of type `&&mut &E` E::A => {} } let E::A = e; - //~^ ERROR refutable pattern in local binding: `&&mut &E::B` and `&&mut &E::C` not covered - //~| NOTE patterns `&&mut &E::B` and `&&mut &E::C` not covered + //~^ ERROR refutable pattern in local binding + //~| patterns `&&mut &E::B` and `&&mut &E::C` not covered //~| NOTE `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with //~| NOTE for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html //~| NOTE the matched value is of type `&&mut &E` @@ -83,20 +84,21 @@ enum Opt { Some(u8), None, //~^ NOTE `Opt` defined here - //~| NOTE `Opt` defined here //~| NOTE not covered //~| NOTE not covered } fn ref_pat(e: Opt) { - match e {//~ ERROR non-exhaustive patterns: `Opt::None` not covered - //~^ NOTE pattern `Opt::None` not covered + match e { + //~^ ERROR non-exhaustive patterns + //~| pattern `Opt::None` not covered //~| NOTE the matched value is of type `Opt` Opt::Some(ref _x) => {} } - let Opt::Some(ref _x) = e; //~ ERROR refutable pattern in local binding: `Opt::None` not covered - //~^ NOTE the matched value is of type `Opt` + let Opt::Some(ref _x) = e; + //~^ ERROR refutable pattern in local binding + //~| NOTE the matched value is of type `Opt` //~| NOTE pattern `Opt::None` not covered //~| NOTE `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with //~| NOTE for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html diff --git a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr index 678c9b2ab58c..3e375066f1b5 100644 --- a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr +++ b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr @@ -1,5 +1,5 @@ error[E0004]: non-exhaustive patterns: `E::B` and `E::C` not covered - --> $DIR/non-exhaustive-defined-here.rs:38:11 + --> $DIR/non-exhaustive-defined-here.rs:35:11 | LL | match e1 { | ^^ patterns `E::B` and `E::C` not covered @@ -22,8 +22,8 @@ LL ~ E::A => {} LL + E::B | E::C => todo!() | -error[E0005]: refutable pattern in local binding: `E::B` and `E::C` not covered - --> $DIR/non-exhaustive-defined-here.rs:44:9 +error[E0005]: refutable pattern in local binding + --> $DIR/non-exhaustive-defined-here.rs:41:9 | LL | let E::A = e; | ^^^^ patterns `E::B` and `E::C` not covered @@ -31,16 +31,16 @@ LL | let E::A = e; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `E` defined here - --> $DIR/non-exhaustive-defined-here.rs:14:5 + --> $DIR/non-exhaustive-defined-here.rs:6:6 | LL | enum E { - | - + | ^ ... LL | B, - | ^ not covered + | - not covered ... LL | C - | ^ not covered + | - not covered = note: the matched value is of type `E` help: you might want to use `if let` to ignore the variants that aren't matched | @@ -48,7 +48,7 @@ LL | if let E::A = e { todo!() } | ++ ~~~~~~~~~~~ error[E0004]: non-exhaustive patterns: `&E::B` and `&E::C` not covered - --> $DIR/non-exhaustive-defined-here.rs:52:11 + --> $DIR/non-exhaustive-defined-here.rs:50:11 | LL | match e { | ^ patterns `&E::B` and `&E::C` not covered @@ -71,8 +71,8 @@ LL ~ E::A => {} LL + &E::B | &E::C => todo!() | -error[E0005]: refutable pattern in local binding: `&E::B` and `&E::C` not covered - --> $DIR/non-exhaustive-defined-here.rs:58:9 +error[E0005]: refutable pattern in local binding + --> $DIR/non-exhaustive-defined-here.rs:57:9 | LL | let E::A = e; | ^^^^ patterns `&E::B` and `&E::C` not covered @@ -80,16 +80,16 @@ LL | let E::A = e; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `E` defined here - --> $DIR/non-exhaustive-defined-here.rs:14:5 + --> $DIR/non-exhaustive-defined-here.rs:6:6 | LL | enum E { - | - + | ^ ... LL | B, - | ^ not covered + | - not covered ... LL | C - | ^ not covered + | - not covered = note: the matched value is of type `&E` help: you might want to use `if let` to ignore the variants that aren't matched | @@ -120,8 +120,8 @@ LL ~ E::A => {} LL + &&mut &E::B | &&mut &E::C => todo!() | -error[E0005]: refutable pattern in local binding: `&&mut &E::B` and `&&mut &E::C` not covered - --> $DIR/non-exhaustive-defined-here.rs:72:9 +error[E0005]: refutable pattern in local binding + --> $DIR/non-exhaustive-defined-here.rs:73:9 | LL | let E::A = e; | ^^^^ patterns `&&mut &E::B` and `&&mut &E::C` not covered @@ -129,16 +129,16 @@ LL | let E::A = e; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `E` defined here - --> $DIR/non-exhaustive-defined-here.rs:14:5 + --> $DIR/non-exhaustive-defined-here.rs:6:6 | LL | enum E { - | - + | ^ ... LL | B, - | ^ not covered + | - not covered ... LL | C - | ^ not covered + | - not covered = note: the matched value is of type `&&mut &E` help: you might want to use `if let` to ignore the variants that aren't matched | @@ -152,7 +152,7 @@ LL | match e { | ^ pattern `Opt::None` not covered | note: `Opt` defined here - --> $DIR/non-exhaustive-defined-here.rs:84:5 + --> $DIR/non-exhaustive-defined-here.rs:85:5 | LL | enum Opt { | --- @@ -166,8 +166,8 @@ LL ~ Opt::Some(ref _x) => {} LL + Opt::None => todo!() | -error[E0005]: refutable pattern in local binding: `Opt::None` not covered - --> $DIR/non-exhaustive-defined-here.rs:98:9 +error[E0005]: refutable pattern in local binding + --> $DIR/non-exhaustive-defined-here.rs:99:9 | LL | let Opt::Some(ref _x) = e; | ^^^^^^^^^^^^^^^^^ pattern `Opt::None` not covered @@ -175,19 +175,19 @@ LL | let Opt::Some(ref _x) = e; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `Opt` defined here - --> $DIR/non-exhaustive-defined-here.rs:84:5 + --> $DIR/non-exhaustive-defined-here.rs:81:6 | LL | enum Opt { - | --- + | ^^^ ... LL | None, - | ^^^^ not covered + | ---- not covered = note: the matched value is of type `Opt` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let _x = if let Opt::Some(ref _x) = e { _x } else { todo!() }; | +++++++++++ +++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Opt::Some(ref _x) = e else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/pattern/usefulness/refutable-pattern-errors.rs b/tests/ui/pattern/usefulness/refutable-pattern-errors.rs index 7c9aa51e7484..7a3e991d5931 100644 --- a/tests/ui/pattern/usefulness/refutable-pattern-errors.rs +++ b/tests/ui/pattern/usefulness/refutable-pattern-errors.rs @@ -1,7 +1,9 @@ fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } -//~^ ERROR refutable pattern in function argument: `(_, _)` not covered +//~^ ERROR refutable pattern in function argument +//~| `(_, _)` not covered fn main() { let (1, (Some(1), 2..=3)) = (1, (None, 2)); - //~^ ERROR refutable pattern in local binding: `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered + //~^ ERROR refutable pattern in local binding + //~| `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered } diff --git a/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr b/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr index d1dacc822e94..c518de47740d 100644 --- a/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr +++ b/tests/ui/pattern/usefulness/refutable-pattern-errors.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in function argument: `(_, _)` not covered +error[E0005]: refutable pattern in function argument --> $DIR/refutable-pattern-errors.rs:1:9 | LL | fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } @@ -6,8 +6,8 @@ LL | fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } | = note: the matched value is of type `(isize, (Option, isize))` -error[E0005]: refutable pattern in local binding: `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered - --> $DIR/refutable-pattern-errors.rs:5:9 +error[E0005]: refutable pattern in local binding + --> $DIR/refutable-pattern-errors.rs:6:9 | LL | let (1, (Some(1), 2..=3)) = (1, (None, 2)); | ^^^^^^^^^^^^^^^^^^^^^ patterns `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered diff --git a/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs index a2d9e1935de7..17dc38ab25d9 100644 --- a/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs +++ b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.rs @@ -1,5 +1,6 @@ fn main() { let f = |3: isize| println!("hello"); - //~^ ERROR refutable pattern in function argument: `_` not covered + //~^ ERROR refutable pattern in function argument + //~| `_` not covered f(4); } diff --git a/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr index c9d8cf43f95f..55f0b2319fb7 100644 --- a/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr +++ b/tests/ui/pattern/usefulness/refutable-pattern-in-fn-arg.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in function argument: `_` not covered +error[E0005]: refutable pattern in function argument --> $DIR/refutable-pattern-in-fn-arg.rs:2:14 | LL | let f = |3: isize| println!("hello"); diff --git a/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr b/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr index 86ad6aa847c9..b7521df88ec5 100644 --- a/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr +++ b/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Err(_)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/recursive-types-are-not-uninhabited.rs:6:9 | LL | let Ok(x) = res; @@ -6,17 +6,12 @@ LL | let Ok(x) = res; | = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html -note: `Result>` defined here - --> $SRC_DIR/core/src/result.rs:LL:COL - ::: $SRC_DIR/core/src/result.rs:LL:COL - | - = note: not covered = note: the matched value is of type `Result>` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let x = if let Ok(x) = res { x } else { todo!() }; | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(x) = res else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs index ac819dce6db2..15f08486f0f0 100644 --- a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs +++ b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.rs @@ -1,7 +1,8 @@ fn main() { let A = 3; - //~^ ERROR refutable pattern in local binding: `i32::MIN..=1_i32` and - //~| interpreted as a constant pattern, not a new variable + //~^ ERROR refutable pattern in local binding + //~| patterns `i32::MIN..=1_i32` and `3_i32..=i32::MAX` not covered + //~| missing patterns are not covered because `a` is interpreted as a constant pattern, not a new variable //~| HELP introduce a variable instead //~| SUGGESTION a_var diff --git a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr index 618bcaca14c4..1c1cab25fbfa 100644 --- a/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr +++ b/tests/ui/suggestions/const-pat-non-exaustive-let-new-var.stderr @@ -1,10 +1,11 @@ -error[E0005]: refutable pattern in local binding: `i32::MIN..=1_i32` and `3_i32..=i32::MAX` not covered +error[E0005]: refutable pattern in local binding --> $DIR/const-pat-non-exaustive-let-new-var.rs:2:9 | LL | let A = 3; | ^ | | - | interpreted as a constant pattern, not a new variable + | patterns `i32::MIN..=1_i32` and `3_i32..=i32::MAX` not covered + | missing patterns are not covered because `a` is interpreted as a constant pattern, not a new variable | help: introduce a variable instead: `a_var` ... LL | const A: i32 = 2; diff --git a/tests/ui/uninhabited/uninhabited-irrefutable.rs b/tests/ui/uninhabited/uninhabited-irrefutable.rs index 1a0f3c5e5504..4b001aca2d1c 100644 --- a/tests/ui/uninhabited/uninhabited-irrefutable.rs +++ b/tests/ui/uninhabited/uninhabited-irrefutable.rs @@ -24,5 +24,7 @@ enum Foo { fn main() { let x: Foo = Foo::D(123, 456); - let Foo::D(_y, _z) = x; //~ ERROR refutable pattern in local binding: `Foo::A(_)` not covered + let Foo::D(_y, _z) = x; + //~^ ERROR refutable pattern in local binding + //~| `Foo::A(_)` not covered } diff --git a/tests/ui/uninhabited/uninhabited-irrefutable.stderr b/tests/ui/uninhabited/uninhabited-irrefutable.stderr index 32f287a18188..461863e11279 100644 --- a/tests/ui/uninhabited/uninhabited-irrefutable.stderr +++ b/tests/ui/uninhabited/uninhabited-irrefutable.stderr @@ -1,4 +1,4 @@ -error[E0005]: refutable pattern in local binding: `Foo::A(_)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/uninhabited-irrefutable.rs:27:9 | LL | let Foo::D(_y, _z) = x; @@ -7,18 +7,18 @@ LL | let Foo::D(_y, _z) = x; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html note: `Foo` defined here - --> $DIR/uninhabited-irrefutable.rs:19:5 + --> $DIR/uninhabited-irrefutable.rs:18:6 | LL | enum Foo { - | --- + | ^^^ LL | A(foo::SecretlyEmpty), - | ^ not covered + | - not covered = note: the matched value is of type `Foo` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let (_y, _z) = if let Foo::D(_y, _z) = x { (_y, _z) } else { todo!() }; | +++++++++++++++++ +++++++++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Foo::D(_y, _z) = x else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr b/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr index d33a61ca8485..2c67eac51f52 100644 --- a/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr +++ b/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr @@ -95,7 +95,7 @@ LL ~ Ok(x) => x, LL ~ Err(_) => todo!(), | -error[E0005]: refutable pattern in local binding: `Err(_)` not covered +error[E0005]: refutable pattern in local binding --> $DIR/uninhabited-matches-feature-gated.rs:37:9 | LL | let Ok(x) = x; @@ -103,17 +103,12 @@ LL | let Ok(x) = x; | = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html -note: `Result` defined here - --> $SRC_DIR/core/src/result.rs:LL:COL - ::: $SRC_DIR/core/src/result.rs:LL:COL - | - = note: not covered = note: the matched value is of type `Result` help: you might want to use `if let` to ignore the variant that isn't matched | LL | let x = if let Ok(x) = x { x } else { todo!() }; | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use let else to handle the variant that isn't matched +help: alternatively, you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(x) = x else { todo!() }; | ++++++++++++++++ From 8476c517c08c21d770a80d4bf0fea28834ae45f0 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Fri, 23 Dec 2022 22:23:37 +0100 Subject: [PATCH 442/478] Don't recommend `if let` if `let else` works --- .../locales/en-US/mir_build.ftl | 2 +- compiler/rustc_mir_build/src/errors.rs | 42 +++++-------------- .../src/thir/pattern/check_match.rs | 23 ++++------ tests/ui/empty/empty-never-array.stderr | 6 +-- tests/ui/error-codes/E0005.stderr | 6 +-- .../feature-gate-exhaustive-patterns.stderr | 6 +-- .../ui/pattern/usefulness/issue-31561.stderr | 6 +-- .../non-exhaustive-defined-here.stderr | 6 +-- ...recursive-types-are-not-uninhabited.stderr | 6 +-- .../uninhabited-irrefutable.stderr | 6 +-- .../uninhabited-matches-feature-gated.stderr | 6 +-- 11 files changed, 26 insertions(+), 89 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index b277942cdcca..976614ecd9eb 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -358,7 +358,7 @@ mir_build_suggest_if_let = you might want to use `if let` to ignore the {$count *[other] variants that aren't } matched -mir_build_suggest_let_else = alternatively, you might want to use `let else` to handle the {$count -> +mir_build_suggest_let_else = you might want to use `let else` to handle the {$count -> [one] variant that isn't *[other] variants that aren't } matched diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index a3c58c31654f..1b2fbae2cd5b 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -747,9 +747,7 @@ pub(crate) struct PatternNotCovered<'s, 'tcx> { pub _p: (), pub pattern_ty: Ty<'tcx>, #[subdiagnostic] - pub if_let_suggestion: Option, - #[subdiagnostic] - pub let_else_suggestion: Option, + pub let_suggestion: Option, #[subdiagnostic] pub res_defined_here: Option, } @@ -809,43 +807,23 @@ pub struct InterpretedAsConst { } #[derive(Subdiagnostic)] -pub enum SuggestIfLet { +pub enum SuggestLet { #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] - None { + If { #[suggestion_part(code = "if ")] start_span: Span, #[suggestion_part(code = " {{ todo!() }}")] semi_span: Span, count: usize, }, - #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] - One { - #[suggestion_part(code = "let {binding} = if ")] - start_span: Span, - #[suggestion_part(code = " {{ {binding} }} else {{ todo!() }}")] + #[suggestion( + mir_build_suggest_let_else, + code = " else {{ todo!() }}", + applicability = "has-placeholders" + )] + Else { + #[primary_span] end_span: Span, - binding: Ident, - count: usize, - }, - #[multipart_suggestion(mir_build_suggest_if_let, applicability = "has-placeholders")] - More { - #[suggestion_part(code = "let ({bindings}) = if ")] - start_span: Span, - #[suggestion_part(code = " {{ ({bindings}) }} else {{ todo!() }}")] - end_span: Span, - bindings: String, count: usize, }, } - -#[derive(Subdiagnostic)] -#[suggestion( - mir_build_suggest_let_else, - code = " else {{ todo!() }}", - applicability = "has-placeholders" -)] -pub struct SuggestLetElse { - #[primary_span] - pub end_span: Span, - pub count: usize, -} diff --git a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs index 422c2ff3ede0..694815928959 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs @@ -394,7 +394,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { return; } - let (inform, interpreted_as_const, res_defined_here, if_let_suggestion, let_else_suggestion) = + let (inform, interpreted_as_const, res_defined_here,let_suggestion) = if let hir::PatKind::Path(hir::QPath::Resolved( None, hir::Path { @@ -417,7 +417,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { res, } }, - None, None, + None, ) } else if let Some(span) = sp && self.tcx.sess.source_map().is_span_accessible(span) { let mut bindings = vec![]; @@ -430,19 +430,11 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { let start_span = span.shrink_to_lo(); let end_span = semi_span.shrink_to_lo(); let count = witnesses.len(); - let if_let = match *bindings { - [] => SuggestIfLet::None{start_span, semi_span, count}, - [binding] => SuggestIfLet::One{start_span, end_span, count, binding }, - _ => SuggestIfLet::More{start_span, end_span, count, bindings: bindings - .iter() - .map(|ident| ident.to_string()) - .collect::>() - .join(", ")}, - }; - let let_else = if bindings.is_empty() {None} else{Some( SuggestLetElse{end_span, count })}; - (sp.map(|_|Inform), None, None, Some(if_let), let_else) + + let let_suggestion = if bindings.is_empty() {SuggestLet::If{start_span, semi_span, count}} else{ SuggestLet::Else{end_span, count }}; + (sp.map(|_|Inform), None, None, Some(let_suggestion)) } else{ - (sp.map(|_|Inform), None, None, None, None) + (sp.map(|_|Inform), None, None, None) }; let adt_defined_here = try { @@ -465,8 +457,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> { interpreted_as_const, _p: (), pattern_ty, - if_let_suggestion, - let_else_suggestion, + let_suggestion, res_defined_here, adt_defined_here, }); diff --git a/tests/ui/empty/empty-never-array.stderr b/tests/ui/empty/empty-never-array.stderr index 9385382f860b..a488e484b2bf 100644 --- a/tests/ui/empty/empty-never-array.stderr +++ b/tests/ui/empty/empty-never-array.stderr @@ -14,11 +14,7 @@ LL | enum Helper { LL | T(T, [!; 0]), | - not covered = note: the matched value is of type `Helper` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let u = if let Helper::U(u) = Helper::T(t, []) { u } else { todo!() }; - | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Helper::U(u) = Helper::T(t, []) else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/error-codes/E0005.stderr b/tests/ui/error-codes/E0005.stderr index 3c27a7d4c064..4692b66413df 100644 --- a/tests/ui/error-codes/E0005.stderr +++ b/tests/ui/error-codes/E0005.stderr @@ -7,11 +7,7 @@ LL | let Some(y) = x; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html = note: the matched value is of type `Option` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let y = if let Some(y) = x { y } else { todo!() }; - | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Some(y) = x else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr index 5e4df7422fcf..49e7ab6082c8 100644 --- a/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr +++ b/tests/ui/feature-gates/feature-gate-exhaustive-patterns.stderr @@ -7,11 +7,7 @@ LL | let Ok(_x) = foo(); = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html = note: the matched value is of type `Result` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let _x = if let Ok(_x) = foo() { _x } else { todo!() }; - | +++++++++++ +++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(_x) = foo() else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/pattern/usefulness/issue-31561.stderr b/tests/ui/pattern/usefulness/issue-31561.stderr index 202fe9de5d3e..5367de5e513c 100644 --- a/tests/ui/pattern/usefulness/issue-31561.stderr +++ b/tests/ui/pattern/usefulness/issue-31561.stderr @@ -17,11 +17,7 @@ LL | Bar, LL | Baz | --- not covered = note: the matched value is of type `Thing` -help: you might want to use `if let` to ignore the variants that aren't matched - | -LL | let y = if let Thing::Foo(y) = Thing::Foo(1) { y } else { todo!() }; - | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variants that aren't matched +help: you might want to use `let else` to handle the variants that aren't matched | LL | let Thing::Foo(y) = Thing::Foo(1) else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr index 3e375066f1b5..769d4070fb58 100644 --- a/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr +++ b/tests/ui/pattern/usefulness/non-exhaustive-defined-here.stderr @@ -183,11 +183,7 @@ LL | enum Opt { LL | None, | ---- not covered = note: the matched value is of type `Opt` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let _x = if let Opt::Some(ref _x) = e { _x } else { todo!() }; - | +++++++++++ +++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Opt::Some(ref _x) = e else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr b/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr index b7521df88ec5..1b4d80d90571 100644 --- a/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr +++ b/tests/ui/recursion/recursive-types-are-not-uninhabited.stderr @@ -7,11 +7,7 @@ LL | let Ok(x) = res; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html = note: the matched value is of type `Result>` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let x = if let Ok(x) = res { x } else { todo!() }; - | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(x) = res else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/uninhabited/uninhabited-irrefutable.stderr b/tests/ui/uninhabited/uninhabited-irrefutable.stderr index 461863e11279..8cafea555c17 100644 --- a/tests/ui/uninhabited/uninhabited-irrefutable.stderr +++ b/tests/ui/uninhabited/uninhabited-irrefutable.stderr @@ -14,11 +14,7 @@ LL | enum Foo { LL | A(foo::SecretlyEmpty), | - not covered = note: the matched value is of type `Foo` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let (_y, _z) = if let Foo::D(_y, _z) = x { (_y, _z) } else { todo!() }; - | +++++++++++++++++ +++++++++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Foo::D(_y, _z) = x else { todo!() }; | ++++++++++++++++ diff --git a/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr b/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr index 2c67eac51f52..466d7f2eadb9 100644 --- a/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr +++ b/tests/ui/uninhabited/uninhabited-matches-feature-gated.stderr @@ -104,11 +104,7 @@ LL | let Ok(x) = x; = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html = note: the matched value is of type `Result` -help: you might want to use `if let` to ignore the variant that isn't matched - | -LL | let x = if let Ok(x) = x { x } else { todo!() }; - | ++++++++++ ++++++++++++++++++++++ -help: alternatively, you might want to use `let else` to handle the variant that isn't matched +help: you might want to use `let else` to handle the variant that isn't matched | LL | let Ok(x) = x else { todo!() }; | ++++++++++++++++ From 3d260fa63c9730371b1898a73433499d2fc0b53e Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Fri, 23 Dec 2022 22:26:12 +0100 Subject: [PATCH 443/478] Some cleanup, oops --- compiler/rustc_mir_build/src/thir/pattern/check_match.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs index 694815928959..e13c0662ef85 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs @@ -1,8 +1,3 @@ -//#![allow(unused_imports, unused_variables)] - -//#![warn(rustc::untranslatable_diagnostic)] -//#![warn(rustc::diagnostic_outside_of_impl)] - use super::deconstruct_pat::{Constructor, DeconstructedPat}; use super::usefulness::{ compute_match_usefulness, MatchArm, MatchCheckCtxt, Reachability, UsefulnessReport, From 372ac9c1a29820f4393ba59eb49f81959bca2926 Mon Sep 17 00:00:00 2001 From: mejrs <> Date: Mon, 9 Jan 2023 22:37:56 +0100 Subject: [PATCH 444/478] Translate `Overlap` eagerly --- .../locales/en-US/mir_build.ftl | 2 -- compiler/rustc_mir_build/src/errors.rs | 19 +++++++++++++++---- .../src/thir/pattern/deconstruct_pat.rs | 9 +++------ .../overlapping_range_endpoints.stderr | 1 + 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl index 976614ecd9eb..801a5b31e02f 100644 --- a/compiler/rustc_error_messages/locales/en-US/mir_build.ftl +++ b/compiler/rustc_error_messages/locales/en-US/mir_build.ftl @@ -323,8 +323,6 @@ mir_build_overlapping_range_endpoints = multiple patterns overlap on their endpo .range = ... with this range .note = you likely meant to write mutually exclusive ranges -mir_build_overlapping_range = this range overlaps on `{$range}`... - mir_build_non_exhaustive_omitted_pattern = some variants are not matched explicitly .help = ensure that all variants are matched explicitly by adding the suggested match arms .note = the matched value is of type `{$scrut_ty}` and the `non_exhaustive_omitted_patterns` attribute was found diff --git a/compiler/rustc_mir_build/src/errors.rs b/compiler/rustc_mir_build/src/errors.rs index 1b2fbae2cd5b..39b67d995fa3 100644 --- a/compiler/rustc_mir_build/src/errors.rs +++ b/compiler/rustc_mir_build/src/errors.rs @@ -677,17 +677,28 @@ pub struct OverlappingRangeEndpoints<'tcx> { #[label(range)] pub range: Span, #[subdiagnostic] - pub overlap: Overlap<'tcx>, + pub overlap: Vec>, } -#[derive(Subdiagnostic)] -#[label(mir_build_overlapping_range)] pub struct Overlap<'tcx> { - #[primary_span] pub span: Span, pub range: Pat<'tcx>, } +impl<'tcx> AddToDiagnostic for Overlap<'tcx> { + fn add_to_diagnostic_with(self, diag: &mut Diagnostic, _: F) + where + F: Fn(&mut Diagnostic, SubdiagnosticMessage) -> SubdiagnosticMessage, + { + let Overlap { span, range } = self; + + // FIXME(mejrs) unfortunately `#[derive(LintDiagnostic)]` + // does not support `#[subdiagnostic(eager)]`... + let message = format!("this range overlaps on `{range}`..."); + diag.span_label(span, message); + } +} + #[derive(LintDiagnostic)] #[diag(mir_build_non_exhaustive_omitted_pattern)] #[help] diff --git a/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs b/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs index 323df1b8147d..17b3c475f83c 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs @@ -285,19 +285,16 @@ impl IntRange { return; } - // Get the first overlap. We get only the first rather than all of them - // because displaying multiple overlaps requires a way to eagerly translate - // lintdiagnostics, but that doesn't exist. - let overlap = pats + let overlap: Vec<_> = pats .filter_map(|pat| Some((pat.ctor().as_int_range()?, pat.span()))) .filter(|(range, _)| self.suspicious_intersection(range)) .map(|(range, span)| Overlap { range: self.intersection(&range).unwrap().to_pat(pcx.cx.tcx, pcx.ty), span, }) - .next(); + .collect(); - if let Some(overlap) = overlap { + if !overlap.is_empty() { pcx.cx.tcx.emit_spanned_lint( lint::builtin::OVERLAPPING_RANGE_ENDPOINTS, hir_id, diff --git a/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr index a1c802add170..ea0e8f6e49e0 100644 --- a/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr +++ b/tests/ui/pattern/usefulness/integer-ranges/overlapping_range_endpoints.stderr @@ -59,6 +59,7 @@ error: multiple patterns overlap on their endpoints LL | 0..=10 => {} | ------ this range overlaps on `10_u8`... LL | 20..=30 => {} + | ------- this range overlaps on `20_u8`... LL | 10..=20 => {} | ^^^^^^^ ... with this range | From 621d4122413b371b0aaa53480d8efd80c4b5f0ba Mon Sep 17 00:00:00 2001 From: yanchen4791 Date: Mon, 26 Dec 2022 15:43:31 -0800 Subject: [PATCH 445/478] Fix invalid syntax in impl Trait parameter type suggestions for E0311 --- .../src/infer/error_reporting/mod.rs | 94 ++++++++++++--- tests/ui/error-codes/E0311.fixed | 13 +++ tests/ui/error-codes/E0311.rs | 4 + tests/ui/error-codes/E0311.stderr | 10 +- ...roducing-and-adding-missing-lifetime.fixed | 13 +++ ...introducing-and-adding-missing-lifetime.rs | 4 + ...oducing-and-adding-missing-lifetime.stderr | 10 +- .../suggestions/lifetimes/issue-105544.fixed | 45 +++++++ .../ui/suggestions/lifetimes/issue-105544.rs | 45 +++++++ .../suggestions/lifetimes/issue-105544.stderr | 110 ++++++++++++++++++ .../missing-lifetimes-in-signature-2.fixed | 29 +++++ .../missing-lifetimes-in-signature-2.rs | 3 + .../missing-lifetimes-in-signature-2.stderr | 10 +- .../missing-lifetimes-in-signature.stderr | 14 +-- 14 files changed, 365 insertions(+), 39 deletions(-) create mode 100644 tests/ui/error-codes/E0311.fixed create mode 100644 tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.fixed create mode 100644 tests/ui/suggestions/lifetimes/issue-105544.fixed create mode 100644 tests/ui/suggestions/lifetimes/issue-105544.rs create mode 100644 tests/ui/suggestions/lifetimes/issue-105544.stderr create mode 100644 tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.fixed diff --git a/compiler/rustc_infer/src/infer/error_reporting/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/mod.rs index 66db1a2f9289..9747f360eca4 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/mod.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/mod.rs @@ -2144,18 +2144,21 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { // suggest adding an explicit lifetime bound to it. let generics = self.tcx.generics_of(generic_param_scope); // type_param_span is (span, has_bounds) + let mut is_synthetic = false; + let mut ast_generics = None; let type_param_span = match bound_kind { GenericKind::Param(ref param) => { // Account for the case where `param` corresponds to `Self`, // which doesn't have the expected type argument. if !(generics.has_self && param.index == 0) { let type_param = generics.type_param(param, self.tcx); + is_synthetic = type_param.kind.is_synthetic(); type_param.def_id.as_local().map(|def_id| { // Get the `hir::Param` to verify whether it already has any bounds. // We do this to avoid suggesting code that ends up as `T: 'a'b`, // instead we suggest `T: 'a + 'b` in that case. let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id); - let ast_generics = self.tcx.hir().get_generics(hir_id.owner.def_id); + ast_generics = self.tcx.hir().get_generics(hir_id.owner.def_id); let bounds = ast_generics.and_then(|g| g.bounds_span_for_suggestions(def_id)); // `sp` only covers `T`, change it so that it covers @@ -2187,11 +2190,64 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { .unwrap_or("'lt".to_string()) }; - let add_lt_sugg = generics - .params - .first() - .and_then(|param| param.def_id.as_local()) - .map(|def_id| (self.tcx.def_span(def_id).shrink_to_lo(), format!("{}, ", new_lt))); + let mut add_lt_suggs: Vec> = vec![]; + if is_synthetic { + if let Some(ast_generics) = ast_generics { + let named_lifetime_param_exist = ast_generics.params.iter().any(|p| { + matches!( + p.kind, + hir::GenericParamKind::Lifetime { kind: hir::LifetimeParamKind::Explicit } + ) + }); + if named_lifetime_param_exist && let [param, ..] = ast_generics.params + { + add_lt_suggs.push(Some(( + self.tcx.def_span(param.def_id).shrink_to_lo(), + format!("{new_lt}, "), + ))); + } else { + add_lt_suggs + .push(Some((ast_generics.span.shrink_to_hi(), format!("<{new_lt}>")))); + } + } + } else { + if let [param, ..] = &generics.params[..] && let Some(def_id) = param.def_id.as_local() + { + add_lt_suggs + .push(Some((self.tcx.def_span(def_id).shrink_to_lo(), format!("{new_lt}, ")))); + } + } + + if let Some(ast_generics) = ast_generics { + for p in ast_generics.params { + if p.is_elided_lifetime() { + if self + .tcx + .sess + .source_map() + .span_to_prev_source(p.span.shrink_to_hi()) + .ok() + .map_or(false, |s| *s.as_bytes().last().unwrap() == b'&') + { + add_lt_suggs + .push(Some( + ( + p.span.shrink_to_hi(), + if let Ok(snip) = self.tcx.sess.source_map().span_to_next_source(p.span) + && snip.starts_with(' ') + { + format!("{new_lt}") + } else { + format!("{new_lt} ") + } + ) + )); + } else { + add_lt_suggs.push(Some((p.span.shrink_to_hi(), format!("<{new_lt}>")))); + } + } + } + } let labeled_user_string = match bound_kind { GenericKind::Param(ref p) => format!("the parameter type `{}`", p), @@ -2215,20 +2271,22 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { ); } - fn binding_suggestion( + fn binding_suggestion<'tcx, S: fmt::Display>( err: &mut Diagnostic, type_param_span: Option<(Span, bool)>, - bound_kind: GenericKind<'_>, + bound_kind: GenericKind<'tcx>, sub: S, - add_lt_sugg: Option<(Span, String)>, + add_lt_suggs: Vec>, ) { let msg = "consider adding an explicit lifetime bound"; if let Some((sp, has_lifetimes)) = type_param_span { let suggestion = if has_lifetimes { format!(" + {}", sub) } else { format!(": {}", sub) }; let mut suggestions = vec![(sp, suggestion)]; - if let Some(add_lt_sugg) = add_lt_sugg { - suggestions.push(add_lt_sugg); + for add_lt_sugg in add_lt_suggs { + if let Some(add_lt_sugg) = add_lt_sugg { + suggestions.push(add_lt_sugg); + } } err.multipart_suggestion_verbose( format!("{msg}..."), @@ -2252,9 +2310,11 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { }; let mut sugg = vec![(sp, suggestion), (span.shrink_to_hi(), format!(" + {}", new_lt))]; - if let Some(lt) = add_lt_sugg.clone() { - sugg.push(lt); - sugg.rotate_right(1); + for add_lt_sugg in add_lt_suggs.clone() { + if let Some(lt) = add_lt_sugg { + sugg.push(lt); + sugg.rotate_right(1); + } } // `MaybeIncorrect` due to issue #41966. err.multipart_suggestion(msg, sugg, Applicability::MaybeIncorrect); @@ -2358,7 +2418,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { // for the bound is not suitable for suggestions when `-Zverbose` is set because it // uses `Debug` output, so we handle it specially here so that suggestions are // always correct. - binding_suggestion(&mut err, type_param_span, bound_kind, name, None); + binding_suggestion(&mut err, type_param_span, bound_kind, name, vec![]); err } @@ -2371,7 +2431,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { "{} may not live long enough", labeled_user_string ); - binding_suggestion(&mut err, type_param_span, bound_kind, "'static", None); + binding_suggestion(&mut err, type_param_span, bound_kind, "'static", vec![]); err } @@ -2410,7 +2470,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { type_param_span, bound_kind, new_lt, - add_lt_sugg, + add_lt_suggs, ); } } diff --git a/tests/ui/error-codes/E0311.fixed b/tests/ui/error-codes/E0311.fixed new file mode 100644 index 000000000000..4410a4d707af --- /dev/null +++ b/tests/ui/error-codes/E0311.fixed @@ -0,0 +1,13 @@ +// run-rustfix + +#![allow(warnings)] + +fn no_restriction<'a, T: 'a>(x: &'a ()) -> &() { + with_restriction::(x) //~ ERROR E0311 +} + +fn with_restriction<'a, T: 'a>(x: &'a ()) -> &'a () { + x +} + +fn main() {} diff --git a/tests/ui/error-codes/E0311.rs b/tests/ui/error-codes/E0311.rs index 566b518b4331..99e454f4d75c 100644 --- a/tests/ui/error-codes/E0311.rs +++ b/tests/ui/error-codes/E0311.rs @@ -1,3 +1,7 @@ +// run-rustfix + +#![allow(warnings)] + fn no_restriction(x: &()) -> &() { with_restriction::(x) //~ ERROR E0311 } diff --git a/tests/ui/error-codes/E0311.stderr b/tests/ui/error-codes/E0311.stderr index 9873b5ae6ff1..b0e6dd1e2727 100644 --- a/tests/ui/error-codes/E0311.stderr +++ b/tests/ui/error-codes/E0311.stderr @@ -1,23 +1,23 @@ error[E0311]: the parameter type `T` may not live long enough - --> $DIR/E0311.rs:2:5 + --> $DIR/E0311.rs:6:5 | LL | with_restriction::(x) | ^^^^^^^^^^^^^^^^^^^^^ | note: the parameter type `T` must be valid for the anonymous lifetime defined here... - --> $DIR/E0311.rs:1:25 + --> $DIR/E0311.rs:5:25 | LL | fn no_restriction(x: &()) -> &() { | ^^^ note: ...so that the type `T` will meet its required lifetime bounds - --> $DIR/E0311.rs:2:5 + --> $DIR/E0311.rs:6:5 | LL | with_restriction::(x) | ^^^^^^^^^^^^^^^^^^^^^ help: consider adding an explicit lifetime bound... | -LL | fn no_restriction<'a, T: 'a>(x: &()) -> &() { - | +++ ++++ +LL | fn no_restriction<'a, T: 'a>(x: &'a ()) -> &() { + | +++ ++++ ++ error: aborting due to previous error diff --git a/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.fixed b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.fixed new file mode 100644 index 000000000000..f977f0bd3a8c --- /dev/null +++ b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.fixed @@ -0,0 +1,13 @@ +// run-rustfix + +#![allow(warnings)] + +fn no_restriction<'a, T: 'a>(x: &'a ()) -> &() { + with_restriction::(x) //~ ERROR the parameter type `T` may not live long enough +} + +fn with_restriction<'b, T: 'b>(x: &'b ()) -> &'b () { + x +} + +fn main() {} diff --git a/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs index 645bc7db0dda..d6ce112ec93d 100644 --- a/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs +++ b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.rs @@ -1,3 +1,7 @@ +// run-rustfix + +#![allow(warnings)] + fn no_restriction(x: &()) -> &() { with_restriction::(x) //~ ERROR the parameter type `T` may not live long enough } diff --git a/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr index 31fd8a4d633e..2d58d3a02f35 100644 --- a/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr +++ b/tests/ui/lifetimes/suggest-introducing-and-adding-missing-lifetime.stderr @@ -1,23 +1,23 @@ error[E0311]: the parameter type `T` may not live long enough - --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:2:5 + --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:6:5 | LL | with_restriction::(x) | ^^^^^^^^^^^^^^^^^^^^^ | note: the parameter type `T` must be valid for the anonymous lifetime defined here... - --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:1:25 + --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:5:25 | LL | fn no_restriction(x: &()) -> &() { | ^^^ note: ...so that the type `T` will meet its required lifetime bounds - --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:2:5 + --> $DIR/suggest-introducing-and-adding-missing-lifetime.rs:6:5 | LL | with_restriction::(x) | ^^^^^^^^^^^^^^^^^^^^^ help: consider adding an explicit lifetime bound... | -LL | fn no_restriction<'a, T: 'a>(x: &()) -> &() { - | +++ ++++ +LL | fn no_restriction<'a, T: 'a>(x: &'a ()) -> &() { + | +++ ++++ ++ error: aborting due to previous error diff --git a/tests/ui/suggestions/lifetimes/issue-105544.fixed b/tests/ui/suggestions/lifetimes/issue-105544.fixed new file mode 100644 index 000000000000..47087eb47497 --- /dev/null +++ b/tests/ui/suggestions/lifetimes/issue-105544.fixed @@ -0,0 +1,45 @@ +// run-rustfix + +#![allow(warnings)] + +fn foo<'a>(d: impl Sized + 'a, p: &'a mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `impl Sized` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `impl Sized` may not live long enough + //~| NOTE ...so that the type `impl Sized` will meet its required lifetime bounds +} + +fn foo1<'b>(d: impl Sized + 'b, p: &'b mut ()) -> impl Sized + '_ { +//~^ HELP consider adding an explicit lifetime bound... + (d, p) //~ NOTE ...so that the type `impl Sized` will meet its required lifetime bounds + //~^ ERROR the parameter type `impl Sized` may not live long enough +} + +fn foo2<'b, 'a>(d: impl Sized + 'a + 'b, p: &'b mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `impl Sized + 'a` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `impl Sized + 'a` may not live long enough + //~| NOTE ...so that the type `impl Sized + 'a` will meet its required lifetime bounds +} + +fn bar<'a, T : Sized + 'a>(d: T, p: &'a mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `T` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `T` may not live long enough + //~| NOTE ...so that the type `T` will meet its required lifetime bounds +} + +fn bar1<'b, T : Sized + 'b>(d: T, p: &'b mut ()) -> impl Sized + '_ { +//~^ HELP consider adding an explicit lifetime bound... + (d, p) //~ NOTE ...so that the type `T` will meet its required lifetime bounds + //~^ ERROR the parameter type `T` may not live long enough +} + +fn bar2<'b, 'a, T : Sized + 'a + 'b>(d: T, p: &'b mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `T` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `T` may not live long enough + //~| NOTE ...so that the type `T` will meet its required lifetime bounds +} + +fn main() {} diff --git a/tests/ui/suggestions/lifetimes/issue-105544.rs b/tests/ui/suggestions/lifetimes/issue-105544.rs new file mode 100644 index 000000000000..bd3bc1ef9bd2 --- /dev/null +++ b/tests/ui/suggestions/lifetimes/issue-105544.rs @@ -0,0 +1,45 @@ +// run-rustfix + +#![allow(warnings)] + +fn foo(d: impl Sized, p: &mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `impl Sized` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `impl Sized` may not live long enough + //~| NOTE ...so that the type `impl Sized` will meet its required lifetime bounds +} + +fn foo1<'b>(d: impl Sized, p: &'b mut ()) -> impl Sized + '_ { +//~^ HELP consider adding an explicit lifetime bound... + (d, p) //~ NOTE ...so that the type `impl Sized` will meet its required lifetime bounds + //~^ ERROR the parameter type `impl Sized` may not live long enough +} + +fn foo2<'a>(d: impl Sized + 'a, p: &mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `impl Sized + 'a` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `impl Sized + 'a` may not live long enough + //~| NOTE ...so that the type `impl Sized + 'a` will meet its required lifetime bounds +} + +fn bar(d: T, p: & mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `T` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `T` may not live long enough + //~| NOTE ...so that the type `T` will meet its required lifetime bounds +} + +fn bar1<'b, T : Sized>(d: T, p: &'b mut ()) -> impl Sized + '_ { +//~^ HELP consider adding an explicit lifetime bound... + (d, p) //~ NOTE ...so that the type `T` will meet its required lifetime bounds + //~^ ERROR the parameter type `T` may not live long enough +} + +fn bar2<'a, T : Sized + 'a>(d: T, p: &mut ()) -> impl Sized + '_ { //~ NOTE the parameter type `T` must be valid for the anonymous lifetime defined here... +//~^ HELP consider adding an explicit lifetime bound + (d, p) + //~^ ERROR the parameter type `T` may not live long enough + //~| NOTE ...so that the type `T` will meet its required lifetime bounds +} + +fn main() {} diff --git a/tests/ui/suggestions/lifetimes/issue-105544.stderr b/tests/ui/suggestions/lifetimes/issue-105544.stderr new file mode 100644 index 000000000000..08fe21b11b50 --- /dev/null +++ b/tests/ui/suggestions/lifetimes/issue-105544.stderr @@ -0,0 +1,110 @@ +error[E0311]: the parameter type `impl Sized` may not live long enough + --> $DIR/issue-105544.rs:7:5 + | +LL | (d, p) + | ^^^^^^ + | +note: the parameter type `impl Sized` must be valid for the anonymous lifetime defined here... + --> $DIR/issue-105544.rs:5:26 + | +LL | fn foo(d: impl Sized, p: &mut ()) -> impl Sized + '_ { + | ^^^^^^^ +note: ...so that the type `impl Sized` will meet its required lifetime bounds + --> $DIR/issue-105544.rs:7:5 + | +LL | (d, p) + | ^^^^^^ +help: consider adding an explicit lifetime bound... + | +LL | fn foo<'a>(d: impl Sized + 'a, p: &'a mut ()) -> impl Sized + '_ { + | ++++ ++++ ++ + +error[E0309]: the parameter type `impl Sized` may not live long enough + --> $DIR/issue-105544.rs:14:5 + | +LL | (d, p) + | ^^^^^^ ...so that the type `impl Sized` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn foo1<'b>(d: impl Sized + 'b, p: &'b mut ()) -> impl Sized + '_ { + | ++++ + +error[E0311]: the parameter type `impl Sized + 'a` may not live long enough + --> $DIR/issue-105544.rs:20:5 + | +LL | (d, p) + | ^^^^^^ + | +note: the parameter type `impl Sized + 'a` must be valid for the anonymous lifetime defined here... + --> $DIR/issue-105544.rs:18:36 + | +LL | fn foo2<'a>(d: impl Sized + 'a, p: &mut ()) -> impl Sized + '_ { + | ^^^^^^^ +note: ...so that the type `impl Sized + 'a` will meet its required lifetime bounds + --> $DIR/issue-105544.rs:20:5 + | +LL | (d, p) + | ^^^^^^ +help: consider adding an explicit lifetime bound... + | +LL | fn foo2<'b, 'a>(d: impl Sized + 'a + 'b, p: &'b mut ()) -> impl Sized + '_ { + | +++ ++++ ++ + +error[E0311]: the parameter type `T` may not live long enough + --> $DIR/issue-105544.rs:27:5 + | +LL | (d, p) + | ^^^^^^ + | +note: the parameter type `T` must be valid for the anonymous lifetime defined here... + --> $DIR/issue-105544.rs:25:28 + | +LL | fn bar(d: T, p: & mut ()) -> impl Sized + '_ { + | ^^^^^^^^ +note: ...so that the type `T` will meet its required lifetime bounds + --> $DIR/issue-105544.rs:27:5 + | +LL | (d, p) + | ^^^^^^ +help: consider adding an explicit lifetime bound... + | +LL | fn bar<'a, T : Sized + 'a>(d: T, p: &'a mut ()) -> impl Sized + '_ { + | +++ ++++ ++ + +error[E0309]: the parameter type `T` may not live long enough + --> $DIR/issue-105544.rs:34:5 + | +LL | (d, p) + | ^^^^^^ ...so that the type `T` will meet its required lifetime bounds + | +help: consider adding an explicit lifetime bound... + | +LL | fn bar1<'b, T : Sized + 'b>(d: T, p: &'b mut ()) -> impl Sized + '_ { + | ++++ + +error[E0311]: the parameter type `T` may not live long enough + --> $DIR/issue-105544.rs:40:5 + | +LL | (d, p) + | ^^^^^^ + | +note: the parameter type `T` must be valid for the anonymous lifetime defined here... + --> $DIR/issue-105544.rs:38:38 + | +LL | fn bar2<'a, T : Sized + 'a>(d: T, p: &mut ()) -> impl Sized + '_ { + | ^^^^^^^ +note: ...so that the type `T` will meet its required lifetime bounds + --> $DIR/issue-105544.rs:40:5 + | +LL | (d, p) + | ^^^^^^ +help: consider adding an explicit lifetime bound... + | +LL | fn bar2<'b, 'a, T : Sized + 'a + 'b>(d: T, p: &'b mut ()) -> impl Sized + '_ { + | +++ ++++ ++ + +error: aborting due to 6 previous errors + +Some errors have detailed explanations: E0309, E0311. +For more information about an error, try `rustc --explain E0309`. diff --git a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.fixed b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.fixed new file mode 100644 index 000000000000..4013d98c3cfe --- /dev/null +++ b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.fixed @@ -0,0 +1,29 @@ +// Regression test for #81650 +// run-rustfix + +#![allow(warnings)] + +struct Foo<'a> { + x: &'a mut &'a i32, +} + +impl<'a> Foo<'a> { + fn bar(&self, f: F) + where + F: FnOnce(&Foo<'a>) -> T, + F: 'a, + {} +} + +trait Test { + fn test(&self); +} + +fn func<'a, T: Test + 'a>(foo: &'a Foo<'a>, t: T) { + foo.bar(move |_| { + //~^ ERROR the parameter type `T` may not live long enough + t.test(); + }); +} + +fn main() {} diff --git a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs index c6802ac6cc70..4096d95e5fd7 100644 --- a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs +++ b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs @@ -1,4 +1,7 @@ // Regression test for #81650 +// run-rustfix + +#![allow(warnings)] struct Foo<'a> { x: &'a mut &'a i32, diff --git a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr index 872263fd7311..936d87f79682 100644 --- a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr +++ b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.stderr @@ -1,5 +1,5 @@ error[E0311]: the parameter type `T` may not live long enough - --> $DIR/missing-lifetimes-in-signature-2.rs:20:5 + --> $DIR/missing-lifetimes-in-signature-2.rs:23:5 | LL | / foo.bar(move |_| { LL | | @@ -8,12 +8,12 @@ LL | | }); | |______^ | note: the parameter type `T` must be valid for the anonymous lifetime defined here... - --> $DIR/missing-lifetimes-in-signature-2.rs:19:24 + --> $DIR/missing-lifetimes-in-signature-2.rs:22:24 | LL | fn func(foo: &Foo, t: T) { | ^^^ note: ...so that the type `T` will meet its required lifetime bounds - --> $DIR/missing-lifetimes-in-signature-2.rs:20:5 + --> $DIR/missing-lifetimes-in-signature-2.rs:23:5 | LL | / foo.bar(move |_| { LL | | @@ -22,8 +22,8 @@ LL | | }); | |______^ help: consider adding an explicit lifetime bound... | -LL | fn func<'a, T: Test + 'a>(foo: &Foo, t: T) { - | +++ ++++ +LL | fn func<'a, T: Test + 'a>(foo: &'a Foo<'a>, t: T) { + | +++ ++++ ++ ++++ error: aborting due to previous error diff --git a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr index fa758bf05df5..c5c3f7b468c8 100644 --- a/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr +++ b/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature.stderr @@ -47,7 +47,7 @@ LL | | } | |_____^ help: consider adding an explicit lifetime bound... | -LL ~ fn bar<'a, G, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ +LL ~ fn bar<'a, G, T>(g: G, dest: &'a mut T) -> impl FnOnce() + '_ LL | where LL ~ G: Get + 'a, | @@ -76,8 +76,8 @@ LL | | } | |_____^ help: consider adding an explicit lifetime bound... | -LL | fn qux<'b, 'a, G: 'a + 'b, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ - | +++ ++++ +LL | fn qux<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + '_ + | +++ ++++ ++ error[E0311]: the parameter type `G` may not live long enough --> $DIR/missing-lifetimes-in-signature.rs:61:9 @@ -103,8 +103,8 @@ LL | | } | |_________^ help: consider adding an explicit lifetime bound... | -LL | fn qux<'c, 'b, G: Get + 'b + 'c, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ { - | +++ ++++ +LL | fn qux<'c, 'b, G: Get + 'b + 'c, T>(g: G, dest: &'c mut T) -> impl FnOnce() + '_ { + | +++ ++++ ++ error[E0311]: the parameter type `G` may not live long enough --> $DIR/missing-lifetimes-in-signature.rs:73:5 @@ -132,8 +132,8 @@ LL | | } | |_____^ help: consider adding an explicit lifetime bound... | -LL | fn bat<'b, 'a, G: 'a + 'b, T>(g: G, dest: &mut T) -> impl FnOnce() + '_ + 'a - | +++ ++++ +LL | fn bat<'b, 'a, G: 'a + 'b, T>(g: G, dest: &'b mut T) -> impl FnOnce() + '_ + 'a + | +++ ++++ ++ error[E0621]: explicit lifetime required in the type of `dest` --> $DIR/missing-lifetimes-in-signature.rs:73:5 From b78a571ce1f293aab990c98a86db3b2084a9a794 Mon Sep 17 00:00:00 2001 From: clubby789 Date: Wed, 11 Jan 2023 22:54:46 +0000 Subject: [PATCH 446/478] Clean up `OnUnimplementedFormatString::verify` --- .../error_reporting/on_unimplemented.rs | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/on_unimplemented.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/on_unimplemented.rs index b0a730c8ad16..e599996230f5 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/on_unimplemented.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/on_unimplemented.rs @@ -37,6 +37,21 @@ pub trait TypeErrCtxtExt<'tcx> { ) -> OnUnimplementedNote; } +/// The symbols which are always allowed in a format string +static ALLOWED_FORMAT_SYMBOLS: &[Symbol] = &[ + kw::SelfUpper, + sym::ItemContext, + sym::from_method, + sym::from_desugaring, + sym::direct, + sym::cause, + sym::integral, + sym::integer_, + sym::float, + sym::_Self, + sym::crate_local, +]; + impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { fn impl_similar_to( &self, @@ -543,38 +558,26 @@ impl<'tcx> OnUnimplementedFormatString { Piece::NextArgument(a) => match a.position { Position::ArgumentNamed(s) => { match Symbol::intern(s) { - // `{Self}` is allowed - kw::SelfUpper => (), // `{ThisTraitsName}` is allowed s if s == trait_name => (), - // `{from_method}` is allowed - sym::from_method => (), - // `{from_desugaring}` is allowed - sym::from_desugaring => (), - // `{ItemContext}` is allowed - sym::ItemContext => (), - // `{integral}` and `{integer}` and `{float}` are allowed - sym::integral | sym::integer_ | sym::float => (), + s if ALLOWED_FORMAT_SYMBOLS.contains(&s) => (), // So is `{A}` if A is a type parameter - s => match generics.params.iter().find(|param| param.name == s) { - Some(_) => (), - None => { - let reported = struct_span_err!( - tcx.sess, - span, - E0230, - "there is no parameter `{}` on {}", - s, - if trait_def_id == item_def_id { - format!("trait `{}`", trait_name) - } else { - "impl".to_string() - } - ) - .emit(); - result = Err(reported); - } - }, + s if generics.params.iter().any(|param| param.name == s) => (), + s => { + result = Err(struct_span_err!( + tcx.sess, + span, + E0230, + "there is no parameter `{}` on {}", + s, + if trait_def_id == item_def_id { + format!("trait `{}`", trait_name) + } else { + "impl".to_string() + } + ) + .emit()); + } } } // `{:1}` and `{}` are not to be used From 02005e9f22bf06e74c3ed6ce56be112d7366bd15 Mon Sep 17 00:00:00 2001 From: Ezra Shaw Date: Wed, 11 Jan 2023 22:46:14 +1300 Subject: [PATCH 447/478] remove unreachable error code `E0490` --- compiler/rustc_error_codes/src/error_codes.rs | 2 +- .../locales/en-US/infer.ftl | 1 - .../src/infer/error_reporting/note.rs | 35 ------------------- .../src/infer/lexical_region_resolve/mod.rs | 23 ++---------- compiler/rustc_infer/src/infer/mod.rs | 4 --- src/tools/tidy/src/error_codes.rs | 6 ++-- 6 files changed, 5 insertions(+), 66 deletions(-) diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 686c22bc386d..d09463aad763 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -618,7 +618,7 @@ E0791: include_str!("./error_codes/E0791.md"), // E0487, // unsafe use of destructor: destructor might be called while... // E0488, // lifetime of variable does not enclose its declaration // E0489, // type/lifetime parameter not in scope here - E0490, // a value of type `..` is borrowed for too long +// E0490, // removed: unreachable E0523, // two dependencies have same (crate-name, disambiguator) but different SVH // E0526, // shuffle indices are not constant // E0540, // multiple rustc_deprecated attributes diff --git a/compiler/rustc_error_messages/locales/en-US/infer.ftl b/compiler/rustc_error_messages/locales/en-US/infer.ftl index c1cb07cf0dfe..ae0091b03736 100644 --- a/compiler/rustc_error_messages/locales/en-US/infer.ftl +++ b/compiler/rustc_error_messages/locales/en-US/infer.ftl @@ -101,7 +101,6 @@ infer_subtype_2 = ...so that {$requirement -> infer_reborrow = ...so that reference does not outlive borrowed content infer_reborrow_upvar = ...so that closure can access `{$name}` infer_relate_object_bound = ...so that it can be closed over into an object -infer_data_borrowed = ...so that the type `{$name}` is not borrowed for too long infer_reference_outlives_referent = ...so that the reference type `{$name}` does not outlive the data it points at infer_relate_param_bound = ...so that the type `{$name}` will meet its required lifetime bounds{$continues -> [true] ... diff --git a/compiler/rustc_infer/src/infer/error_reporting/note.rs b/compiler/rustc_infer/src/infer/error_reporting/note.rs index 7bb79d7bda8d..7504ed094a3d 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/note.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/note.rs @@ -29,15 +29,6 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { RegionOriginNote::Plain { span, msg: fluent::infer_relate_object_bound } .add_to_diagnostic(err); } - infer::DataBorrowed(ty, span) => { - RegionOriginNote::WithName { - span, - msg: fluent::infer_data_borrowed, - name: &self.ty_to_string(ty), - continues: false, - } - .add_to_diagnostic(err); - } infer::ReferenceOutlivesReferent(ty, span) => { RegionOriginNote::WithName { span, @@ -227,32 +218,6 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { ); err } - infer::DataBorrowed(ty, span) => { - let mut err = struct_span_err!( - self.tcx.sess, - span, - E0490, - "a value of type `{}` is borrowed for too long", - self.ty_to_string(ty) - ); - note_and_explain_region( - self.tcx, - &mut err, - "the type is valid for ", - sub, - "", - None, - ); - note_and_explain_region( - self.tcx, - &mut err, - "but the borrow lasts for ", - sup, - "", - None, - ); - err - } infer::ReferenceOutlivesReferent(ty, span) => { let mut err = struct_span_err!( self.tcx.sess, diff --git a/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs b/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs index da2c6fbc05f5..897545046c33 100644 --- a/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs +++ b/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs @@ -702,26 +702,8 @@ impl<'cx, 'tcx> LexicalResolver<'cx, 'tcx> { // Obtain the spans for all the places that can // influence the constraints on this value for // richer diagnostics in `static_impl_trait`. - let influences: Vec = self - .data - .constraints - .iter() - .filter_map(|(constraint, origin)| match (constraint, origin) { - ( - Constraint::VarSubVar(_, sup), - SubregionOrigin::DataBorrowed(_, sp), - ) if sup == &node_vid => Some(*sp), - _ => None, - }) - .collect(); - self.collect_error_for_expanding_node( - graph, - &mut dup_vec, - node_vid, - errors, - influences, - ); + self.collect_error_for_expanding_node(graph, &mut dup_vec, node_vid, errors); } } } @@ -775,7 +757,6 @@ impl<'cx, 'tcx> LexicalResolver<'cx, 'tcx> { dup_vec: &mut IndexVec>, node_idx: RegionVid, errors: &mut Vec>, - influences: Vec, ) { // Errors in expanding nodes result from a lower-bound that is // not contained by an upper-bound. @@ -830,7 +811,7 @@ impl<'cx, 'tcx> LexicalResolver<'cx, 'tcx> { lower_bound.region, upper_bound.origin.clone(), upper_bound.region, - influences, + vec![], )); return; } diff --git a/compiler/rustc_infer/src/infer/mod.rs b/compiler/rustc_infer/src/infer/mod.rs index 6bef3f000a5a..0e355b6d1eec 100644 --- a/compiler/rustc_infer/src/infer/mod.rs +++ b/compiler/rustc_infer/src/infer/mod.rs @@ -410,9 +410,6 @@ pub enum SubregionOrigin<'tcx> { /// Creating a pointer `b` to contents of another reference Reborrow(Span), - /// Data with type `Ty<'tcx>` was borrowed - DataBorrowed(Ty<'tcx>, Span), - /// (&'a &'b T) where a >= b ReferenceOutlivesReferent(Ty<'tcx>, Span), @@ -1974,7 +1971,6 @@ impl<'tcx> SubregionOrigin<'tcx> { RelateParamBound(a, ..) => a, RelateRegionParamBound(a) => a, Reborrow(a) => a, - DataBorrowed(_, a) => a, ReferenceOutlivesReferent(_, a) => a, CompareImplItemObligation { span, .. } => span, AscribeUserTypeProvePredicate(span) => span, diff --git a/src/tools/tidy/src/error_codes.rs b/src/tools/tidy/src/error_codes.rs index 9aacc07e0ab4..8b44a09fdf0b 100644 --- a/src/tools/tidy/src/error_codes.rs +++ b/src/tools/tidy/src/error_codes.rs @@ -31,10 +31,8 @@ const IGNORE_DOCTEST_CHECK: &[&str] = &["E0208", "E0464", "E0570", "E0601", "E0602", "E0640", "E0717"]; // Error codes that don't yet have a UI test. This list will eventually be removed. -const IGNORE_UI_TEST_CHECK: &[&str] = &[ - "E0461", "E0465", "E0476", "E0490", "E0514", "E0523", "E0554", "E0640", "E0717", "E0729", - "E0789", -]; +const IGNORE_UI_TEST_CHECK: &[&str] = + &["E0461", "E0465", "E0476", "E0514", "E0523", "E0554", "E0640", "E0717", "E0729", "E0789"]; macro_rules! verbose_print { ($verbose:expr, $($fmt:tt)*) => { From 46f9e878f68e6ece9e8dad54c67e97e5dd5838e1 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Fri, 16 Dec 2022 15:02:22 -0500 Subject: [PATCH 448/478] Stabilize `abi_efiapi` feature Tracking issue: https://github.com/rust-lang/rust/issues/65815 --- compiler/rustc_feature/src/accepted.rs | 2 + compiler/rustc_feature/src/active.rs | 2 - compiler/rustc_target/src/spec/abi.rs | 6 +- .../src/language-features/abi-efiapi.md | 23 ------- tests/codegen/abi-efiapi.rs | 2 +- ...ature-gate-extended_varargs_abi_support.rs | 2 - ...e-gate-extended_varargs_abi_support.stderr | 12 ++-- tests/ui/c-variadic/variadic-ffi-2.rs | 1 - tests/ui/c-variadic/variadic-ffi-2.stderr | 2 +- .../feature-gates/feature-gate-abi-efiapi.rs | 33 ---------- .../feature-gate-abi-efiapi.stderr | 66 ------------------- 11 files changed, 11 insertions(+), 140 deletions(-) delete mode 100644 src/doc/unstable-book/src/language-features/abi-efiapi.md delete mode 100644 tests/ui/feature-gates/feature-gate-abi-efiapi.rs delete mode 100644 tests/ui/feature-gates/feature-gate-abi-efiapi.stderr diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs index e2f30fb89b91..3f6e81a7ce1e 100644 --- a/compiler/rustc_feature/src/accepted.rs +++ b/compiler/rustc_feature/src/accepted.rs @@ -48,6 +48,8 @@ declare_features! ( /// Allows `#[target_feature(...)]` on aarch64 platforms (accepted, aarch64_target_feature, "1.61.0", Some(44839), None), + /// Allows using the `efiapi` ABI. + (accepted, abi_efiapi, "CURRENT_RUSTC_VERSION", Some(65815), None), /// Allows the sysV64 ABI to be specified on all platforms /// instead of just the platforms on which it is the C ABI. (accepted, abi_sysv64, "1.24.0", Some(36167), None), diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index 691c0955cad7..2a79bd28d80e 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -282,8 +282,6 @@ declare_features! ( (active, abi_avr_interrupt, "1.45.0", Some(69664), None), /// Allows `extern "C-cmse-nonsecure-call" fn()`. (active, abi_c_cmse_nonsecure_call, "1.51.0", Some(81391), None), - /// Allows using the `efiapi` ABI. - (active, abi_efiapi, "1.40.0", Some(65815), None), /// Allows `extern "msp430-interrupt" fn()`. (active, abi_msp430_interrupt, "1.16.0", Some(38487), None), /// Allows `extern "ptx-*" fn()`. diff --git a/compiler/rustc_target/src/spec/abi.rs b/compiler/rustc_target/src/spec/abi.rs index cb2a0c04c6aa..d4f7ed31b895 100644 --- a/compiler/rustc_target/src/spec/abi.rs +++ b/compiler/rustc_target/src/spec/abi.rs @@ -149,7 +149,7 @@ pub fn is_stable(name: &str) -> Result<(), AbiDisabled> { match name { // Stable "Rust" | "C" | "cdecl" | "stdcall" | "fastcall" | "aapcs" | "win64" | "sysv64" - | "system" => Ok(()), + | "system" | "efiapi" => Ok(()), "rust-intrinsic" => Err(AbiDisabled::Unstable { feature: sym::intrinsics, explain: "intrinsics are subject to change", @@ -198,10 +198,6 @@ pub fn is_stable(name: &str) -> Result<(), AbiDisabled> { feature: sym::abi_avr_interrupt, explain: "avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change", }), - "efiapi" => Err(AbiDisabled::Unstable { - feature: sym::abi_efiapi, - explain: "efiapi ABI is experimental and subject to change", - }), "C-cmse-nonsecure-call" => Err(AbiDisabled::Unstable { feature: sym::abi_c_cmse_nonsecure_call, explain: "C-cmse-nonsecure-call ABI is experimental and subject to change", diff --git a/src/doc/unstable-book/src/language-features/abi-efiapi.md b/src/doc/unstable-book/src/language-features/abi-efiapi.md deleted file mode 100644 index b492da88474e..000000000000 --- a/src/doc/unstable-book/src/language-features/abi-efiapi.md +++ /dev/null @@ -1,23 +0,0 @@ -# `abi_efiapi` - -The tracking issue for this feature is: [#65815] - -[#65815]: https://github.com/rust-lang/rust/issues/65815 - ------------------------- - -The `efiapi` calling convention can be used for defining a function with -an ABI compatible with the UEFI Interfaces as defined in the [UEFI -Specification]. - -Example: - -```rust,ignore (not-all-targets-support-uefi) -#![feature(abi_efiapi)] - -extern "efiapi" { fn f1(); } - -extern "efiapi" fn f2() { todo!() } -``` - -[UEFI Specification]: https://uefi.org/specs/UEFI/2.10/ diff --git a/tests/codegen/abi-efiapi.rs b/tests/codegen/abi-efiapi.rs index 9061d7432a3f..9502ebf59af7 100644 --- a/tests/codegen/abi-efiapi.rs +++ b/tests/codegen/abi-efiapi.rs @@ -14,7 +14,7 @@ // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] -#![feature(no_core, lang_items, abi_efiapi)] +#![feature(no_core, lang_items)] #![no_core] #[lang="sized"] diff --git a/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs index 087743e505d2..fce6210b2f43 100644 --- a/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs +++ b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.rs @@ -1,5 +1,3 @@ -#![feature(abi_efiapi)] - fn efiapi(f: extern "efiapi" fn(usize, ...)) { //~^ ERROR: C-variadic function must have a compatible calling convention, like `C` or `cdecl` //~^^ ERROR: using calling conventions other than `C` or `cdecl` for varargs functions is unstable diff --git a/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr index 007d7d7953c9..5b97b396fb12 100644 --- a/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr +++ b/tests/ui/c-variadic/feature-gate-extended_varargs_abi_support.stderr @@ -1,5 +1,5 @@ error[E0658]: using calling conventions other than `C` or `cdecl` for varargs functions is unstable - --> $DIR/feature-gate-extended_varargs_abi_support.rs:3:14 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:1:14 | LL | fn efiapi(f: extern "efiapi" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -8,13 +8,13 @@ LL | fn efiapi(f: extern "efiapi" fn(usize, ...)) { = help: add `#![feature(extended_varargs_abi_support)]` to the crate attributes to enable error[E0045]: C-variadic function must have a compatible calling convention, like `C` or `cdecl` - --> $DIR/feature-gate-extended_varargs_abi_support.rs:3:14 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:1:14 | LL | fn efiapi(f: extern "efiapi" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadic function must have a compatible calling convention error[E0658]: using calling conventions other than `C` or `cdecl` for varargs functions is unstable - --> $DIR/feature-gate-extended_varargs_abi_support.rs:8:12 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:6:12 | LL | fn sysv(f: extern "sysv64" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -23,13 +23,13 @@ LL | fn sysv(f: extern "sysv64" fn(usize, ...)) { = help: add `#![feature(extended_varargs_abi_support)]` to the crate attributes to enable error[E0045]: C-variadic function must have a compatible calling convention, like `C` or `cdecl` - --> $DIR/feature-gate-extended_varargs_abi_support.rs:8:12 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:6:12 | LL | fn sysv(f: extern "sysv64" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadic function must have a compatible calling convention error[E0658]: using calling conventions other than `C` or `cdecl` for varargs functions is unstable - --> $DIR/feature-gate-extended_varargs_abi_support.rs:13:11 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:11:11 | LL | fn win(f: extern "win64" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -38,7 +38,7 @@ LL | fn win(f: extern "win64" fn(usize, ...)) { = help: add `#![feature(extended_varargs_abi_support)]` to the crate attributes to enable error[E0045]: C-variadic function must have a compatible calling convention, like `C` or `cdecl` - --> $DIR/feature-gate-extended_varargs_abi_support.rs:13:11 + --> $DIR/feature-gate-extended_varargs_abi_support.rs:11:11 | LL | fn win(f: extern "win64" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadic function must have a compatible calling convention diff --git a/tests/ui/c-variadic/variadic-ffi-2.rs b/tests/ui/c-variadic/variadic-ffi-2.rs index 96cea87546e7..c34b7e55f6ae 100644 --- a/tests/ui/c-variadic/variadic-ffi-2.rs +++ b/tests/ui/c-variadic/variadic-ffi-2.rs @@ -1,6 +1,5 @@ // ignore-arm stdcall isn't supported #![feature(extended_varargs_abi_support)] -#![feature(abi_efiapi)] fn baz(f: extern "stdcall" fn(usize, ...)) { //~^ ERROR: C-variadic function must have a compatible calling convention, diff --git a/tests/ui/c-variadic/variadic-ffi-2.stderr b/tests/ui/c-variadic/variadic-ffi-2.stderr index 4e74c9d92278..e21001ecaf8b 100644 --- a/tests/ui/c-variadic/variadic-ffi-2.stderr +++ b/tests/ui/c-variadic/variadic-ffi-2.stderr @@ -1,5 +1,5 @@ error[E0045]: C-variadic function must have a compatible calling convention, like `C`, `cdecl`, `win64`, `sysv64` or `efiapi` - --> $DIR/variadic-ffi-2.rs:5:11 + --> $DIR/variadic-ffi-2.rs:4:11 | LL | fn baz(f: extern "stdcall" fn(usize, ...)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadic function must have a compatible calling convention diff --git a/tests/ui/feature-gates/feature-gate-abi-efiapi.rs b/tests/ui/feature-gates/feature-gate-abi-efiapi.rs deleted file mode 100644 index 0c0d736acd04..000000000000 --- a/tests/ui/feature-gates/feature-gate-abi-efiapi.rs +++ /dev/null @@ -1,33 +0,0 @@ -// needs-llvm-components: x86 -// compile-flags: --target=x86_64-unknown-linux-gnu --crate-type=rlib -#![no_core] -#![feature(no_core, lang_items)] -#[lang="sized"] -trait Sized { } - -// Functions -extern "efiapi" fn f1() {} //~ ERROR efiapi ABI is experimental - -// Methods in trait defintion -trait Tr { - extern "efiapi" fn f2(); //~ ERROR efiapi ABI is experimental - extern "efiapi" fn f3() {} //~ ERROR efiapi ABI is experimental -} - -struct S; - -// Methods in trait impl -impl Tr for S { - extern "efiapi" fn f2() {} //~ ERROR efiapi ABI is experimental -} - -// Methods in inherent impl -impl S { - extern "efiapi" fn f4() {} //~ ERROR efiapi ABI is experimental -} - -// Function pointer types -type A = extern "efiapi" fn(); //~ ERROR efiapi ABI is experimental - -// Foreign modules -extern "efiapi" {} //~ ERROR efiapi ABI is experimental diff --git a/tests/ui/feature-gates/feature-gate-abi-efiapi.stderr b/tests/ui/feature-gates/feature-gate-abi-efiapi.stderr deleted file mode 100644 index 5b01dcc6d859..000000000000 --- a/tests/ui/feature-gates/feature-gate-abi-efiapi.stderr +++ /dev/null @@ -1,66 +0,0 @@ -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:9:8 - | -LL | extern "efiapi" fn f1() {} - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:13:12 - | -LL | extern "efiapi" fn f2(); - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:14:12 - | -LL | extern "efiapi" fn f3() {} - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:21:12 - | -LL | extern "efiapi" fn f2() {} - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:26:12 - | -LL | extern "efiapi" fn f4() {} - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:30:17 - | -LL | type A = extern "efiapi" fn(); - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi-efiapi.rs:33:8 - | -LL | extern "efiapi" {} - | ^^^^^^^^ - | - = note: see issue #65815 for more information - = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable - -error: aborting due to 7 previous errors - -For more information about this error, try `rustc --explain E0658`. From 4fb10c0ce45673264d5dd428f4d5a4a389a2f1de Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Tue, 20 Dec 2022 16:15:55 +0000 Subject: [PATCH 449/478] parse const closures --- compiler/rustc_ast/src/ast.rs | 1 + compiler/rustc_ast/src/mut_visit.rs | 2 ++ compiler/rustc_ast/src/visit.rs | 1 + compiler/rustc_ast_lowering/src/expr.rs | 6 ++++++ compiler/rustc_ast_lowering/src/item.rs | 2 +- .../rustc_ast_pretty/src/pprust/state/expr.rs | 2 ++ compiler/rustc_expand/src/build.rs | 1 + compiler/rustc_hir/src/hir.rs | 1 + compiler/rustc_hir/src/intravisit.rs | 1 + compiler/rustc_hir_pretty/src/lib.rs | 14 ++++++++++---- compiler/rustc_parse/src/parser/expr.rs | 8 +++++++- compiler/rustc_parse/src/parser/mod.rs | 10 ++++++++++ src/tools/rustfmt/src/closures.rs | 19 ++++++++++++++++--- src/tools/rustfmt/src/expr.rs | 1 + tests/ui/parser/recover-quantified-closure.rs | 2 +- .../parser/recover-quantified-closure.stderr | 4 ++-- 16 files changed, 63 insertions(+), 12 deletions(-) diff --git a/compiler/rustc_ast/src/ast.rs b/compiler/rustc_ast/src/ast.rs index e656fb3740bb..7de594719ddc 100644 --- a/compiler/rustc_ast/src/ast.rs +++ b/compiler/rustc_ast/src/ast.rs @@ -1307,6 +1307,7 @@ impl Expr { pub struct Closure { pub binder: ClosureBinder, pub capture_clause: CaptureBy, + pub constness: Const, pub asyncness: Async, pub movability: Movability, pub fn_decl: P, diff --git a/compiler/rustc_ast/src/mut_visit.rs b/compiler/rustc_ast/src/mut_visit.rs index c572171e8f44..77f342d1eb32 100644 --- a/compiler/rustc_ast/src/mut_visit.rs +++ b/compiler/rustc_ast/src/mut_visit.rs @@ -1362,6 +1362,7 @@ pub fn noop_visit_expr( ExprKind::Closure(box Closure { binder, capture_clause: _, + constness, asyncness, movability: _, fn_decl, @@ -1370,6 +1371,7 @@ pub fn noop_visit_expr( fn_arg_span: _, }) => { vis.visit_closure_binder(binder); + visit_constness(constness, vis); vis.visit_asyncness(asyncness); vis.visit_fn_decl(fn_decl); vis.visit_expr(body); diff --git a/compiler/rustc_ast/src/visit.rs b/compiler/rustc_ast/src/visit.rs index df7145a722a4..e8823eff83af 100644 --- a/compiler/rustc_ast/src/visit.rs +++ b/compiler/rustc_ast/src/visit.rs @@ -836,6 +836,7 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) { binder, capture_clause: _, asyncness: _, + constness: _, movability: _, fn_decl, body, diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index 14f082be9ba8..c3611b2f522b 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -209,6 +209,7 @@ impl<'hir> LoweringContext<'_, 'hir> { ExprKind::Closure(box Closure { binder, capture_clause, + constness, asyncness, movability, fn_decl, @@ -233,6 +234,7 @@ impl<'hir> LoweringContext<'_, 'hir> { binder, *capture_clause, e.id, + *constness, *movability, fn_decl, body, @@ -651,6 +653,7 @@ impl<'hir> LoweringContext<'_, 'hir> { fn_decl_span: self.lower_span(span), fn_arg_span: None, movability: Some(hir::Movability::Static), + constness: hir::Constness::NotConst, }); hir::ExprKind::Closure(c) @@ -890,6 +893,7 @@ impl<'hir> LoweringContext<'_, 'hir> { binder: &ClosureBinder, capture_clause: CaptureBy, closure_id: NodeId, + constness: Const, movability: Movability, decl: &FnDecl, body: &Expr, @@ -927,6 +931,7 @@ impl<'hir> LoweringContext<'_, 'hir> { fn_decl_span: self.lower_span(fn_decl_span), fn_arg_span: Some(self.lower_span(fn_arg_span)), movability: generator_option, + constness: self.lower_constness(constness), }); hir::ExprKind::Closure(c) @@ -1041,6 +1046,7 @@ impl<'hir> LoweringContext<'_, 'hir> { fn_decl_span: self.lower_span(fn_decl_span), fn_arg_span: Some(self.lower_span(fn_arg_span)), movability: None, + constness: hir::Constness::NotConst, }); hir::ExprKind::Closure(c) } diff --git a/compiler/rustc_ast_lowering/src/item.rs b/compiler/rustc_ast_lowering/src/item.rs index ea30bed5ace4..065779d0670c 100644 --- a/compiler/rustc_ast_lowering/src/item.rs +++ b/compiler/rustc_ast_lowering/src/item.rs @@ -1239,7 +1239,7 @@ impl<'hir> LoweringContext<'_, 'hir> { } } - fn lower_constness(&mut self, c: Const) -> hir::Constness { + pub(super) fn lower_constness(&mut self, c: Const) -> hir::Constness { match c { Const::Yes(_) => hir::Constness::Const, Const::No => hir::Constness::NotConst, diff --git a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs index 3b17f6dd627e..b125c6407d05 100644 --- a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs +++ b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs @@ -399,6 +399,7 @@ impl<'a> State<'a> { ast::ExprKind::Closure(box ast::Closure { binder, capture_clause, + constness, asyncness, movability, fn_decl, @@ -407,6 +408,7 @@ impl<'a> State<'a> { fn_arg_span: _, }) => { self.print_closure_binder(binder); + self.print_constness(*constness); self.print_movability(*movability); self.print_asyncness(*asyncness); self.print_capture_clause(*capture_clause); diff --git a/compiler/rustc_expand/src/build.rs b/compiler/rustc_expand/src/build.rs index 93b3af4ab973..9b16e79d49a9 100644 --- a/compiler/rustc_expand/src/build.rs +++ b/compiler/rustc_expand/src/build.rs @@ -533,6 +533,7 @@ impl<'a> ExtCtxt<'a> { ast::ExprKind::Closure(Box::new(ast::Closure { binder: ast::ClosureBinder::NotPresent, capture_clause: ast::CaptureBy::Ref, + constness: ast::Const::No, asyncness: ast::Async::No, movability: ast::Movability::Movable, fn_decl, diff --git a/compiler/rustc_hir/src/hir.rs b/compiler/rustc_hir/src/hir.rs index bc897ed8112e..60f5b79de103 100644 --- a/compiler/rustc_hir/src/hir.rs +++ b/compiler/rustc_hir/src/hir.rs @@ -938,6 +938,7 @@ pub struct Crate<'hir> { pub struct Closure<'hir> { pub def_id: LocalDefId, pub binder: ClosureBinder, + pub constness: Constness, pub capture_clause: CaptureBy, pub bound_generic_params: &'hir [GenericParam<'hir>], pub fn_decl: &'hir FnDecl<'hir>, diff --git a/compiler/rustc_hir/src/intravisit.rs b/compiler/rustc_hir/src/intravisit.rs index 6c475b659eba..02641b7cf8fb 100644 --- a/compiler/rustc_hir/src/intravisit.rs +++ b/compiler/rustc_hir/src/intravisit.rs @@ -742,6 +742,7 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr<'v>) fn_decl_span: _, fn_arg_span: _, movability: _, + constness: _, }) => { walk_list!(visitor, visit_generic_param, bound_generic_params); visitor.visit_fn(FnKind::Closure, fn_decl, body, expression.span, expression.hir_id) diff --git a/compiler/rustc_hir_pretty/src/lib.rs b/compiler/rustc_hir_pretty/src/lib.rs index 3e3af8395a11..f74c551a45b6 100644 --- a/compiler/rustc_hir_pretty/src/lib.rs +++ b/compiler/rustc_hir_pretty/src/lib.rs @@ -1464,6 +1464,7 @@ impl<'a> State<'a> { } hir::ExprKind::Closure(&hir::Closure { binder, + constness, capture_clause, bound_generic_params, fn_decl, @@ -1474,6 +1475,7 @@ impl<'a> State<'a> { def_id: _, }) => { self.print_closure_binder(binder, bound_generic_params); + self.print_constness(constness); self.print_capture_clause(capture_clause); self.print_closure_params(fn_decl, body); @@ -2272,10 +2274,7 @@ impl<'a> State<'a> { } pub fn print_fn_header_info(&mut self, header: hir::FnHeader) { - match header.constness { - hir::Constness::NotConst => {} - hir::Constness::Const => self.word_nbsp("const"), - } + self.print_constness(header.constness); match header.asyncness { hir::IsAsync::NotAsync => {} @@ -2292,6 +2291,13 @@ impl<'a> State<'a> { self.word("fn") } + pub fn print_constness(&mut self, s: hir::Constness) { + match s { + hir::Constness::NotConst => {} + hir::Constness::Const => self.word_nbsp("const"), + } + } + pub fn print_unsafety(&mut self, s: hir::Unsafety) { match s { hir::Unsafety::Normal => {} diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index f5093fb02a87..dd2b03988c3e 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -1325,7 +1325,10 @@ impl<'a> Parser<'a> { self.parse_array_or_repeat_expr(Delimiter::Bracket) } else if self.check_path() { self.parse_path_start_expr() - } else if self.check_keyword(kw::Move) || self.check_keyword(kw::Static) { + } else if self.check_keyword(kw::Move) + || self.check_keyword(kw::Static) + || self.check_const_closure() + { self.parse_closure_expr() } else if self.eat_keyword(kw::If) { self.parse_if_expr() @@ -2065,6 +2068,8 @@ impl<'a> Parser<'a> { ClosureBinder::NotPresent }; + let constness = self.parse_constness(Case::Sensitive); + let movability = if self.eat_keyword(kw::Static) { Movability::Static } else { Movability::Movable }; @@ -2111,6 +2116,7 @@ impl<'a> Parser<'a> { ExprKind::Closure(Box::new(ast::Closure { binder, capture_clause, + constness, asyncness, movability, fn_decl, diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 49d319815395..2fd2a4e5154f 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -736,6 +736,16 @@ impl<'a> Parser<'a> { self.check_or_expected(self.token.can_begin_const_arg(), TokenType::Const) } + fn check_const_closure(&self) -> bool { + self.is_keyword_ahead(0, &[kw::Const]) + && self.look_ahead(1, |t| match &t.kind { + token::Ident(kw::Move | kw::Static | kw::Async, _) + | token::OrOr + | token::BinOp(token::Or) => true, + _ => false, + }) + } + fn check_inline_const(&self, dist: usize) -> bool { self.is_keyword_ahead(dist, &[kw::Const]) && self.look_ahead(dist + 1, |t| match &t.kind { diff --git a/src/tools/rustfmt/src/closures.rs b/src/tools/rustfmt/src/closures.rs index 244d4427c562..8fd0fcf8f5c2 100644 --- a/src/tools/rustfmt/src/closures.rs +++ b/src/tools/rustfmt/src/closures.rs @@ -26,6 +26,7 @@ use crate::utils::{last_line_width, left_most_sub_expr, stmt_expr, NodeIdExt}; pub(crate) fn rewrite_closure( binder: &ast::ClosureBinder, + constness: ast::Const, capture: ast::CaptureBy, is_async: &ast::Async, movability: ast::Movability, @@ -38,7 +39,7 @@ pub(crate) fn rewrite_closure( debug!("rewrite_closure {:?}", body); let (prefix, extra_offset) = rewrite_closure_fn_decl( - binder, capture, is_async, movability, fn_decl, body, span, context, shape, + binder, constness, capture, is_async, movability, fn_decl, body, span, context, shape, )?; // 1 = space between `|...|` and body. let body_shape = shape.offset_left(extra_offset)?; @@ -230,6 +231,7 @@ fn rewrite_closure_block( // Return type is (prefix, extra_offset) fn rewrite_closure_fn_decl( binder: &ast::ClosureBinder, + constness: ast::Const, capture: ast::CaptureBy, asyncness: &ast::Async, movability: ast::Movability, @@ -250,6 +252,12 @@ fn rewrite_closure_fn_decl( ast::ClosureBinder::NotPresent => "".to_owned(), }; + let const_ = if matches!(constness, ast::Const::Yes(_)) { + "const " + } else { + "" + }; + let immovable = if movability == ast::Movability::Static { "static " } else { @@ -264,7 +272,7 @@ fn rewrite_closure_fn_decl( // 4 = "|| {".len(), which is overconservative when the closure consists of // a single expression. let nested_shape = shape - .shrink_left(binder.len() + immovable.len() + is_async.len() + mover.len())? + .shrink_left(binder.len() + const_.len() + immovable.len() + is_async.len() + mover.len())? .sub_width(4)?; // 1 = | @@ -302,7 +310,10 @@ fn rewrite_closure_fn_decl( .tactic(tactic) .preserve_newline(true); let list_str = write_list(&item_vec, &fmt)?; - let mut prefix = format!("{}{}{}{}|{}|", binder, immovable, is_async, mover, list_str); + let mut prefix = format!( + "{}{}{}{}{}|{}|", + binder, const_, immovable, is_async, mover, list_str + ); if !ret_str.is_empty() { if prefix.contains('\n') { @@ -329,6 +340,7 @@ pub(crate) fn rewrite_last_closure( if let ast::ExprKind::Closure(ref closure) = expr.kind { let ast::Closure { ref binder, + constness, capture_clause, ref asyncness, movability, @@ -349,6 +361,7 @@ pub(crate) fn rewrite_last_closure( }; let (prefix, extra_offset) = rewrite_closure_fn_decl( binder, + constness, capture_clause, asyncness, movability, diff --git a/src/tools/rustfmt/src/expr.rs b/src/tools/rustfmt/src/expr.rs index 414e767690bd..868ff045ab78 100644 --- a/src/tools/rustfmt/src/expr.rs +++ b/src/tools/rustfmt/src/expr.rs @@ -205,6 +205,7 @@ pub(crate) fn format_expr( } ast::ExprKind::Closure(ref cl) => closures::rewrite_closure( &cl.binder, + cl.constness, cl.capture_clause, &cl.asyncness, cl.movability, diff --git a/tests/ui/parser/recover-quantified-closure.rs b/tests/ui/parser/recover-quantified-closure.rs index 10af39b70074..df22f5e065c8 100644 --- a/tests/ui/parser/recover-quantified-closure.rs +++ b/tests/ui/parser/recover-quantified-closure.rs @@ -7,6 +7,6 @@ fn main() { enum Foo { Bar } fn foo(x: impl Iterator) { for ::Bar in x {} - //~^ ERROR expected one of `move`, `static`, `|` + //~^ ERROR expected one of `const`, `move`, `static`, `|` //~^^ ERROR `for<...>` binders for closures are experimental } diff --git a/tests/ui/parser/recover-quantified-closure.stderr b/tests/ui/parser/recover-quantified-closure.stderr index 39eec80f658a..9ec4d2c034d0 100644 --- a/tests/ui/parser/recover-quantified-closure.stderr +++ b/tests/ui/parser/recover-quantified-closure.stderr @@ -1,8 +1,8 @@ -error: expected one of `move`, `static`, `|`, or `||`, found `::` +error: expected one of `const`, `move`, `static`, `|`, or `||`, found `::` --> $DIR/recover-quantified-closure.rs:9:14 | LL | for ::Bar in x {} - | ^^ expected one of `move`, `static`, `|`, or `||` + | ^^ expected one of `const`, `move`, `static`, `|`, or `||` error[E0658]: `for<...>` binders for closures are experimental --> $DIR/recover-quantified-closure.rs:2:5 From e7fea8c7e63cd60aa583e6ee761716bef9a7cc1a Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Wed, 21 Dec 2022 14:51:02 +0000 Subject: [PATCH 450/478] gate const closures --- compiler/rustc_ast_passes/src/feature_gate.rs | 8 ++++++++ compiler/rustc_feature/src/active.rs | 4 +++- compiler/rustc_span/src/symbol.rs | 1 + .../rfc-2632-const-trait-impl/const_closures/gate.rs | 4 ++++ .../const_closures/gate.stderr | 12 ++++++++++++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs create mode 100644 src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs index 039338f543cc..89ba6f936d14 100644 --- a/compiler/rustc_ast_passes/src/feature_gate.rs +++ b/compiler/rustc_ast_passes/src/feature_gate.rs @@ -385,6 +385,14 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { ast::ExprKind::TryBlock(_) => { gate_feature_post!(&self, try_blocks, e.span, "`try` expression is experimental"); } + ast::ExprKind::Closure(box ast::Closure { constness: ast::Const::Yes(_), .. }) => { + gate_feature_post!( + &self, + const_closures, + e.span, + "const closures are experimental" + ); + } _ => {} } visit::walk_expr(self, e) diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index 691c0955cad7..d6eda08f6621 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -342,7 +342,9 @@ declare_features! ( (active, collapse_debuginfo, "1.65.0", Some(100758), None), /// Allows `async {}` expressions in const contexts. (active, const_async_blocks, "1.53.0", Some(85368), None), - // Allows limiting the evaluation steps of const expressions + /// Allows `const || {}` closures in const contexts. + (incomplete, const_closures, "CURRENT_RUSTC_VERSION", Some(106003), None), + /// Allows limiting the evaluation steps of const expressions (active, const_eval_limit, "1.43.0", Some(67217), None), /// Allows the definition of `const extern fn` and `const unsafe extern fn`. (active, const_extern_fn, "1.40.0", Some(64926), None), diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs index fbb12701d96a..706002f79b1f 100644 --- a/compiler/rustc_span/src/symbol.rs +++ b/compiler/rustc_span/src/symbol.rs @@ -498,6 +498,7 @@ symbols! { console, const_allocate, const_async_blocks, + const_closures, const_compare_raw_pointers, const_constructor, const_deallocate, diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs new file mode 100644 index 000000000000..89551121ad24 --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs @@ -0,0 +1,4 @@ +fn main() { + (const || {})(); + //~^ ERROR: const closures are experimental +} diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr new file mode 100644 index 000000000000..94a7fe9e62c4 --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr @@ -0,0 +1,12 @@ +error[E0658]: const closures are experimental + --> $DIR/gate.rs:2:6 + | +LL | (const || {})(); + | ^^^^^^^^^^^ + | + = note: see issue #106003 for more information + = help: add `#![feature(const_closures)]` to the crate attributes to enable + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0658`. From 23718a3cc207c20655c08c828b497dbb52413f50 Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Wed, 21 Dec 2022 15:47:33 +0000 Subject: [PATCH 451/478] suggest adding const_trait_impl if error because of that --- .../src/transform/check_consts/check.rs | 4 ++++ .../rustc_const_eval/src/transform/check_consts/ops.rs | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_const_eval/src/transform/check_consts/check.rs b/compiler/rustc_const_eval/src/transform/check_consts/check.rs index 54213d55a2da..fd166e3c9387 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/check.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/check.rs @@ -730,6 +730,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: Some(sym::const_trait_impl), }); return; } @@ -802,6 +803,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: None, }); return; } @@ -844,6 +846,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: None, }); return; } @@ -903,6 +906,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { substs, span: *fn_span, from_hir_call: *from_hir_call, + feature: None, }); return; } diff --git a/compiler/rustc_const_eval/src/transform/check_consts/ops.rs b/compiler/rustc_const_eval/src/transform/check_consts/ops.rs index b19d270e6105..0cb5d2ff8c71 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/ops.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/ops.rs @@ -111,6 +111,7 @@ pub struct FnCallNonConst<'tcx> { pub substs: SubstsRef<'tcx>, pub span: Span, pub from_hir_call: bool, + pub feature: Option, } impl<'tcx> NonConstOp<'tcx> for FnCallNonConst<'tcx> { @@ -119,7 +120,7 @@ impl<'tcx> NonConstOp<'tcx> for FnCallNonConst<'tcx> { ccx: &ConstCx<'_, 'tcx>, _: Span, ) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> { - let FnCallNonConst { caller, callee, substs, span, from_hir_call } = *self; + let FnCallNonConst { caller, callee, substs, span, from_hir_call, feature } = *self; let ConstCx { tcx, param_env, .. } = *ccx; let diag_trait = |err, self_ty: Ty<'_>, trait_id| { @@ -318,6 +319,13 @@ impl<'tcx> NonConstOp<'tcx> for FnCallNonConst<'tcx> { ccx.const_kind(), )); + if let Some(feature) = feature && ccx.tcx.sess.is_nightly_build() { + err.help(&format!( + "add `#![feature({})]` to the crate attributes to enable", + feature, + )); + } + if let ConstContext::Static(_) = ccx.const_kind() { err.note("consider wrapping this expression in `Lazy::new(|| ...)` from the `once_cell` crate: https://crates.io/crates/once_cell"); } From 6e63f7be54d084b3ba31b3706b3a1eb36a98b43f Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Wed, 21 Dec 2022 16:32:16 +0000 Subject: [PATCH 452/478] attempt to make a minimal example work --- .../src/const_eval/fn_queries.rs | 1 + compiler/rustc_const_eval/src/lib.rs | 1 + .../src/transform/check_consts/check.rs | 14 ++++++++++ compiler/rustc_metadata/src/rmeta/encoder.rs | 2 ++ compiler/rustc_middle/src/hir/map/mod.rs | 2 +- compiler/rustc_middle/src/traits/select.rs | 4 ++- compiler/rustc_middle/src/ty/mod.rs | 6 +++-- .../src/traits/select/candidate_assembly.rs | 11 +++++--- .../src/traits/select/confirmation.rs | 2 +- .../src/traits/select/mod.rs | 27 ++++++++++--------- .../const_closures/call.rs | 10 +++++++ .../const_closures/gate.rs | 1 + .../const_closures/gate.stderr | 2 +- 13 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs diff --git a/compiler/rustc_const_eval/src/const_eval/fn_queries.rs b/compiler/rustc_const_eval/src/const_eval/fn_queries.rs index f1674d04f8d1..351c701305ad 100644 --- a/compiler/rustc_const_eval/src/const_eval/fn_queries.rs +++ b/compiler/rustc_const_eval/src/const_eval/fn_queries.rs @@ -41,6 +41,7 @@ fn constness(tcx: TyCtxt<'_>, def_id: DefId) -> hir::Constness { }; if is_const { hir::Constness::Const } else { hir::Constness::NotConst } } + hir::Node::Expr(e) if let hir::ExprKind::Closure(c) = e.kind => c.constness, _ => { if let Some(fn_kind) = node.fn_kind() { if fn_kind.constness() == hir::Constness::Const { diff --git a/compiler/rustc_const_eval/src/lib.rs b/compiler/rustc_const_eval/src/lib.rs index 443c01fdb90c..46e7b09a55e1 100644 --- a/compiler/rustc_const_eval/src/lib.rs +++ b/compiler/rustc_const_eval/src/lib.rs @@ -20,6 +20,7 @@ Rust MIR: a lowered representation of Rust. #![feature(trusted_step)] #![feature(try_blocks)] #![feature(yeet_expr)] +#![feature(if_let_guard)] #![feature(is_some_and)] #![recursion_limit = "256"] diff --git a/compiler/rustc_const_eval/src/transform/check_consts/check.rs b/compiler/rustc_const_eval/src/transform/check_consts/check.rs index fd166e3c9387..38212496ec84 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/check.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/check.rs @@ -783,6 +783,20 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { ); return; } + Ok(Some(ImplSource::Closure(data))) => { + if !tcx.is_const_fn_raw(data.closure_def_id) { + self.check_op(ops::FnCallNonConst { + caller, + callee, + substs, + span: *fn_span, + from_hir_call: *from_hir_call, + feature: None, + }); + + return; + } + } Ok(Some(ImplSource::UserDefined(data))) => { let callee_name = tcx.item_name(callee); if let Some(&did) = tcx diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index bdc4ae391f04..030328d1e26f 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -1686,6 +1686,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> { } ty::Closure(_, substs) => { + let constness = self.tcx.constness(def_id.to_def_id()); + self.tables.constness.set(def_id.to_def_id().index, constness); record!(self.tables.fn_sig[def_id.to_def_id()] <- substs.as_closure().sig()); } diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 883554f959cc..4b09a9b6939e 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -485,7 +485,7 @@ impl<'hir> Map<'hir> { BodyOwnerKind::Static(mt) => ConstContext::Static(mt), BodyOwnerKind::Fn if self.tcx.is_constructor(def_id.to_def_id()) => return None, - BodyOwnerKind::Fn if self.tcx.is_const_fn_raw(def_id.to_def_id()) => { + BodyOwnerKind::Fn | BodyOwnerKind::Closure if self.tcx.is_const_fn_raw(def_id.to_def_id()) => { ConstContext::ConstFn } BodyOwnerKind::Fn if self.tcx.is_const_default_method(def_id.to_def_id()) => { diff --git a/compiler/rustc_middle/src/traits/select.rs b/compiler/rustc_middle/src/traits/select.rs index ec69864c951d..1cc9fd526b44 100644 --- a/compiler/rustc_middle/src/traits/select.rs +++ b/compiler/rustc_middle/src/traits/select.rs @@ -131,7 +131,9 @@ pub enum SelectionCandidate<'tcx> { /// Implementation of a `Fn`-family trait by one of the anonymous types /// generated for an `||` expression. - ClosureCandidate, + ClosureCandidate { + is_const: bool, + }, /// Implementation of a `Generator` trait by one of the anonymous types /// generated for a generator. diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index fa571d480b64..993e95b35148 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -2465,8 +2465,10 @@ impl<'tcx> TyCtxt<'tcx> { #[inline] pub fn is_const_fn_raw(self, def_id: DefId) -> bool { - matches!(self.def_kind(def_id), DefKind::Fn | DefKind::AssocFn | DefKind::Ctor(..)) - && self.constness(def_id) == hir::Constness::Const + matches!( + self.def_kind(def_id), + DefKind::Fn | DefKind::AssocFn | DefKind::Ctor(..) | DefKind::Closure + ) && self.constness(def_id) == hir::Constness::Const } #[inline] diff --git a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs index c54d901e9b10..a5635ccfec4f 100644 --- a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs +++ b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs @@ -254,18 +254,23 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // touch bound regions, they just capture the in-scope // type/region parameters match *obligation.self_ty().skip_binder().kind() { - ty::Closure(_, closure_substs) => { + ty::Closure(def_id, closure_substs) => { + let is_const = self.tcx().is_const_fn_raw(def_id); debug!(?kind, ?obligation, "assemble_unboxed_candidates"); match self.infcx.closure_kind(closure_substs) { Some(closure_kind) => { debug!(?closure_kind, "assemble_unboxed_candidates"); if closure_kind.extends(kind) { - candidates.vec.push(ClosureCandidate); + candidates.vec.push(ClosureCandidate { + is_const, + }); } } None => { debug!("assemble_unboxed_candidates: closure_kind not yet known"); - candidates.vec.push(ClosureCandidate); + candidates.vec.push(ClosureCandidate { + is_const, + }); } } } diff --git a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs index 15526b34ed2d..a41d10f10435 100644 --- a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs +++ b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs @@ -84,7 +84,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { ImplSource::Object(data) } - ClosureCandidate => { + ClosureCandidate { .. } => { let vtable_closure = self.confirm_closure_candidate(obligation)?; ImplSource::Closure(vtable_closure) } diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs index 3f14491f8032..25a294b54013 100644 --- a/compiler/rustc_trait_selection/src/traits/select/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs @@ -1365,15 +1365,18 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // const param ParamCandidate(trait_pred) if trait_pred.is_const_if_const() => {} // const projection - ProjectionCandidate(_, ty::BoundConstness::ConstIfConst) => {} + ProjectionCandidate(_, ty::BoundConstness::ConstIfConst) // auto trait impl - AutoImplCandidate => {} + | AutoImplCandidate // generator / future, this will raise error in other places // or ignore error with const_async_blocks feature - GeneratorCandidate => {} - FutureCandidate => {} + | GeneratorCandidate + | FutureCandidate // FnDef where the function is const - FnPointerCandidate { is_const: true } => {} + | FnPointerCandidate { is_const: true } + | ConstDestructCandidate(_) + | ClosureCandidate { is_const: true } => {} + FnPointerCandidate { is_const: false } => { if let ty::FnDef(def_id, _) = obligation.self_ty().skip_binder().kind() && tcx.trait_of_item(*def_id).is_some() { // Trait methods are not seen as const unless the trait is implemented as const. @@ -1382,7 +1385,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { continue } } - ConstDestructCandidate(_) => {} + _ => { // reject all other types of candidates continue; @@ -1844,7 +1847,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { ( ParamCandidate(ref cand), ImplCandidate(..) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } @@ -1863,7 +1866,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { } ( ImplCandidate(_) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } @@ -1894,7 +1897,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { ( ObjectCandidate(_) | ProjectionCandidate(..), ImplCandidate(..) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } @@ -1907,7 +1910,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { ( ImplCandidate(..) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } @@ -1989,7 +1992,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // Everything else is ambiguous ( ImplCandidate(_) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } @@ -1999,7 +2002,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { | BuiltinCandidate { has_nested: true } | TraitAliasCandidate, ImplCandidate(_) - | ClosureCandidate + | ClosureCandidate { .. } | GeneratorCandidate | FutureCandidate | FnPointerCandidate { .. } diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs b/src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs new file mode 100644 index 000000000000..5f48c2353735 --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs @@ -0,0 +1,10 @@ +// check-pass + +#![feature(const_closures, const_trait_impl)] +#![allow(incomplete_features)] + +pub const _: () = { + assert!((const || true)()); +}; + +fn main() {} diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs index 89551121ad24..f2cd26c91b64 100644 --- a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs @@ -1,3 +1,4 @@ +// gate-test-const_closures fn main() { (const || {})(); //~^ ERROR: const closures are experimental diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr index 94a7fe9e62c4..30edc4127e1f 100644 --- a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr @@ -1,5 +1,5 @@ error[E0658]: const closures are experimental - --> $DIR/gate.rs:2:6 + --> $DIR/gate.rs:3:6 | LL | (const || {})(); | ^^^^^^^^^^^ From f6725c0a9833b48d3d8bc463385872b3a5227dad Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Thu, 22 Dec 2022 07:19:15 +0000 Subject: [PATCH 453/478] fix fn_sig ice --- .../src/transform/check_consts/check.rs | 2 +- .../src/transform/check_consts/mod.rs | 13 ++++++++++++- .../non-const-op-const-closure-non-const-outer.rs | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs diff --git a/compiler/rustc_const_eval/src/transform/check_consts/check.rs b/compiler/rustc_const_eval/src/transform/check_consts/check.rs index 38212496ec84..d4c75cd55ce1 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/check.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/check.rs @@ -242,7 +242,7 @@ impl<'mir, 'tcx> Checker<'mir, 'tcx> { // impl trait is gone in MIR, so check the return type of a const fn by its signature // instead of the type of the return place. self.span = body.local_decls[RETURN_PLACE].source_info.span; - let return_ty = tcx.fn_sig(def_id).output(); + let return_ty = self.ccx.fn_sig().output(); self.check_local_or_return_ty(return_ty.skip_binder(), RETURN_PLACE); } diff --git a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs index 0a90572d39e3..b528bc923301 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs @@ -8,7 +8,7 @@ use rustc_attr as attr; use rustc_hir as hir; use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_middle::mir; -use rustc_middle::ty::{self, TyCtxt}; +use rustc_middle::ty::{self, TyCtxt, PolyFnSig}; use rustc_span::Symbol; pub use self::qualifs::Qualif; @@ -64,6 +64,17 @@ impl<'mir, 'tcx> ConstCx<'mir, 'tcx> { fn is_async(&self) -> bool { self.tcx.asyncness(self.def_id()).is_async() } + + pub fn fn_sig(&self) -> PolyFnSig<'tcx> { + let did = self.def_id().to_def_id(); + if self.tcx.is_closure(did) { + let ty = self.tcx.type_of(did); + let ty::Closure(_, substs) = ty.kind() else { bug!("type_of closure not ty::Closure") }; + substs.as_closure().sig() + } else { + self.tcx.fn_sig(did) + } + } } pub fn rustc_allow_const_fn_unstable( diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs b/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs new file mode 100644 index 000000000000..cd8bb5963ada --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs @@ -0,0 +1,15 @@ +#![feature(const_closures, const_trait_impl)] +#![allow(incomplete_features)] + +trait Foo { + fn foo(&self); +} + +impl Foo for () { + fn foo(&self) {} +} + +fn main() { + (const || { (()).foo() })(); + //~^ ERROR: cannot call non-const fn +} From b0aa859c2440864bdc6d25d7d40071d91745d342 Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Thu, 22 Dec 2022 18:15:15 +0000 Subject: [PATCH 454/478] fix fmt and bless --- .../src/transform/check_consts/mod.rs | 2 +- compiler/rustc_middle/src/hir/map/mod.rs | 4 +++- .../src/traits/select/candidate_assembly.rs | 8 ++------ .../non-const-op-const-closure-non-const-outer.stderr | 11 +++++++++++ tests/ui/check-static-values-constraints.stderr | 1 + tests/ui/const-generics/issue-93647.stderr | 1 + tests/ui/consts/const-fn-error.stderr | 2 ++ tests/ui/consts/const-for.stderr | 2 ++ .../consts/invalid-inline-const-in-match-arm.stderr | 1 + tests/ui/consts/issue-28113.stderr | 1 + tests/ui/consts/issue-56164.stderr | 1 + .../ui/consts/issue-68542-closure-in-array-len.stderr | 1 + tests/ui/consts/issue-90870.fixed | 3 +++ tests/ui/consts/issue-90870.rs | 3 +++ tests/ui/consts/issue-90870.stderr | 7 +++++-- tests/ui/never_type/issue-52443.stderr | 2 ++ tests/ui/resolve/issue-39559-2.stderr | 2 ++ .../const_derives/derive-const-non-const-type.stderr | 1 + .../cross-crate.stock.stderr | 1 + .../staged-api-user-crate.stderr | 1 + .../std-impl-gate.stock.stderr | 1 + 21 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr diff --git a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs index b528bc923301..54868e418c4b 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs @@ -8,7 +8,7 @@ use rustc_attr as attr; use rustc_hir as hir; use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_middle::mir; -use rustc_middle::ty::{self, TyCtxt, PolyFnSig}; +use rustc_middle::ty::{self, PolyFnSig, TyCtxt}; use rustc_span::Symbol; pub use self::qualifs::Qualif; diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 4b09a9b6939e..48bae7a2d4e1 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -485,7 +485,9 @@ impl<'hir> Map<'hir> { BodyOwnerKind::Static(mt) => ConstContext::Static(mt), BodyOwnerKind::Fn if self.tcx.is_constructor(def_id.to_def_id()) => return None, - BodyOwnerKind::Fn | BodyOwnerKind::Closure if self.tcx.is_const_fn_raw(def_id.to_def_id()) => { + BodyOwnerKind::Fn | BodyOwnerKind::Closure + if self.tcx.is_const_fn_raw(def_id.to_def_id()) => + { ConstContext::ConstFn } BodyOwnerKind::Fn if self.tcx.is_const_default_method(def_id.to_def_id()) => { diff --git a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs index a5635ccfec4f..9a094acfb71e 100644 --- a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs +++ b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs @@ -261,16 +261,12 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { Some(closure_kind) => { debug!(?closure_kind, "assemble_unboxed_candidates"); if closure_kind.extends(kind) { - candidates.vec.push(ClosureCandidate { - is_const, - }); + candidates.vec.push(ClosureCandidate { is_const }); } } None => { debug!("assemble_unboxed_candidates: closure_kind not yet known"); - candidates.vec.push(ClosureCandidate { - is_const, - }); + candidates.vec.push(ClosureCandidate { is_const }); } } } diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr b/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr new file mode 100644 index 000000000000..979d7febbcaf --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr @@ -0,0 +1,11 @@ +error[E0015]: cannot call non-const fn `<() as Foo>::foo` in constant functions + --> $DIR/non-const-op-const-closure-non-const-outer.rs:13:22 + | +LL | (const || { (()).foo() })(); + | ^^^^^ + | + = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/check-static-values-constraints.stderr b/tests/ui/check-static-values-constraints.stderr index b13700a4ea5b..49056678448e 100644 --- a/tests/ui/check-static-values-constraints.stderr +++ b/tests/ui/check-static-values-constraints.stderr @@ -22,6 +22,7 @@ LL | field2: SafeEnum::Variant4("str".to_string()) | ^^^^^^^^^^^ | = note: calls in statics are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable = note: consider wrapping this expression in `Lazy::new(|| ...)` from the `once_cell` crate: https://crates.io/crates/once_cell error[E0010]: allocations are not allowed in statics diff --git a/tests/ui/const-generics/issue-93647.stderr b/tests/ui/const-generics/issue-93647.stderr index e2048ecd60f6..18370eea5714 100644 --- a/tests/ui/const-generics/issue-93647.stderr +++ b/tests/ui/const-generics/issue-93647.stderr @@ -6,6 +6,7 @@ LL | (||1usize)() | = note: closures need an RFC before allowed to be called in constants = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/consts/const-fn-error.stderr b/tests/ui/consts/const-fn-error.stderr index f6b532fb6586..f735b3d53ce4 100644 --- a/tests/ui/consts/const-fn-error.stderr +++ b/tests/ui/consts/const-fn-error.stderr @@ -22,6 +22,7 @@ LL | for i in 0..x { note: impl defined here, but it is not `const` --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error[E0658]: mutable references are not allowed in constant functions --> $DIR/const-fn-error.rs:5:14 @@ -39,6 +40,7 @@ LL | for i in 0..x { | ^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to 4 previous errors diff --git a/tests/ui/consts/const-for.stderr b/tests/ui/consts/const-for.stderr index 294ea627d854..3fb9787c0d86 100644 --- a/tests/ui/consts/const-for.stderr +++ b/tests/ui/consts/const-for.stderr @@ -7,6 +7,7 @@ LL | for _ in 0..5 {} note: impl defined here, but it is not `const` --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error[E0015]: cannot call non-const fn ` as Iterator>::next` in constants --> $DIR/const-for.rs:5:14 @@ -15,6 +16,7 @@ LL | for _ in 0..5 {} | ^^^^ | = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to 2 previous errors diff --git a/tests/ui/consts/invalid-inline-const-in-match-arm.stderr b/tests/ui/consts/invalid-inline-const-in-match-arm.stderr index ab594c921f91..257ecd7f3cf7 100644 --- a/tests/ui/consts/invalid-inline-const-in-match-arm.stderr +++ b/tests/ui/consts/invalid-inline-const-in-match-arm.stderr @@ -6,6 +6,7 @@ LL | const { (|| {})() } => {} | = note: closures need an RFC before allowed to be called in constants = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/consts/issue-28113.stderr b/tests/ui/consts/issue-28113.stderr index 7ad1f752eb08..1294cc99bf73 100644 --- a/tests/ui/consts/issue-28113.stderr +++ b/tests/ui/consts/issue-28113.stderr @@ -6,6 +6,7 @@ LL | || -> u8 { 5 }() | = note: closures need an RFC before allowed to be called in constants = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/consts/issue-56164.stderr b/tests/ui/consts/issue-56164.stderr index 2579b3e78272..845b23d5d873 100644 --- a/tests/ui/consts/issue-56164.stderr +++ b/tests/ui/consts/issue-56164.stderr @@ -6,6 +6,7 @@ LL | const fn foo() { (||{})() } | = note: closures need an RFC before allowed to be called in constant functions = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: function pointer calls are not allowed in constant functions --> $DIR/issue-56164.rs:5:5 diff --git a/tests/ui/consts/issue-68542-closure-in-array-len.stderr b/tests/ui/consts/issue-68542-closure-in-array-len.stderr index 74fbbc680f7e..d23513ed7ffb 100644 --- a/tests/ui/consts/issue-68542-closure-in-array-len.stderr +++ b/tests/ui/consts/issue-68542-closure-in-array-len.stderr @@ -6,6 +6,7 @@ LL | a: [(); (|| { 0 })()] | = note: closures need an RFC before allowed to be called in constants = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/consts/issue-90870.fixed b/tests/ui/consts/issue-90870.fixed index 0d28e06e5325..df44689efed7 100644 --- a/tests/ui/consts/issue-90870.fixed +++ b/tests/ui/consts/issue-90870.fixed @@ -8,12 +8,14 @@ const fn f(a: &u8, b: &u8) -> bool { *a == *b //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` } const fn g(a: &&&&i64, b: &&&&i64) -> bool { ****a == ****b //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` } const fn h(mut a: &[u8], mut b: &[u8]) -> bool { @@ -21,6 +23,7 @@ const fn h(mut a: &[u8], mut b: &[u8]) -> bool { if *l == *r { //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` a = at; b = bt; } else { diff --git a/tests/ui/consts/issue-90870.rs b/tests/ui/consts/issue-90870.rs index c6bfffd2c5c1..676ac73c64d9 100644 --- a/tests/ui/consts/issue-90870.rs +++ b/tests/ui/consts/issue-90870.rs @@ -8,12 +8,14 @@ const fn f(a: &u8, b: &u8) -> bool { a == b //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` } const fn g(a: &&&&i64, b: &&&&i64) -> bool { a == b //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` } const fn h(mut a: &[u8], mut b: &[u8]) -> bool { @@ -21,6 +23,7 @@ const fn h(mut a: &[u8], mut b: &[u8]) -> bool { if l == r { //~^ ERROR: cannot call non-const operator in constant functions [E0015] //~| HELP: consider dereferencing here + //~| HELP: add `#![feature(const_trait_impl)]` a = at; b = bt; } else { diff --git a/tests/ui/consts/issue-90870.stderr b/tests/ui/consts/issue-90870.stderr index 478445cfb39c..8825efd1449d 100644 --- a/tests/ui/consts/issue-90870.stderr +++ b/tests/ui/consts/issue-90870.stderr @@ -5,30 +5,33 @@ LL | a == b | ^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable help: consider dereferencing here | LL | *a == *b | + + error[E0015]: cannot call non-const operator in constant functions - --> $DIR/issue-90870.rs:14:5 + --> $DIR/issue-90870.rs:15:5 | LL | a == b | ^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable help: consider dereferencing here | LL | ****a == ****b | ++++ ++++ error[E0015]: cannot call non-const operator in constant functions - --> $DIR/issue-90870.rs:21:12 + --> $DIR/issue-90870.rs:23:12 | LL | if l == r { | ^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable help: consider dereferencing here | LL | if *l == *r { diff --git a/tests/ui/never_type/issue-52443.stderr b/tests/ui/never_type/issue-52443.stderr index de5c9c560163..33b7a9185d0e 100644 --- a/tests/ui/never_type/issue-52443.stderr +++ b/tests/ui/never_type/issue-52443.stderr @@ -47,6 +47,7 @@ LL | [(); { for _ in 0usize.. {}; 0}]; note: impl defined here, but it is not `const` --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error[E0658]: mutable references are not allowed in constants --> $DIR/issue-52443.rs:9:21 @@ -64,6 +65,7 @@ LL | [(); { for _ in 0usize.. {}; 0}]; | ^^^^^^^^ | = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to 6 previous errors; 1 warning emitted diff --git a/tests/ui/resolve/issue-39559-2.stderr b/tests/ui/resolve/issue-39559-2.stderr index ea27e7bd2508..e9d8eb0835bd 100644 --- a/tests/ui/resolve/issue-39559-2.stderr +++ b/tests/ui/resolve/issue-39559-2.stderr @@ -5,6 +5,7 @@ LL | let array: [usize; Dim3::dim()] | ^^^^^^^^^^^ | = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error[E0015]: cannot call non-const fn `::dim` in constants --> $DIR/issue-39559-2.rs:16:15 @@ -13,6 +14,7 @@ LL | = [0; Dim3::dim()]; | ^^^^^^^^^^^ | = note: calls in constants are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to 2 previous errors diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr index d463c774e289..96e0c78b9c7d 100644 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr @@ -7,6 +7,7 @@ LL | pub struct S(A); | ^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info) error: aborting due to previous error diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr index 086547542bb0..22f13a7416e9 100644 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr @@ -5,6 +5,7 @@ LL | Const.func(); | ^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr index 61f9840e0d0a..d7aa0d95cfc7 100644 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr @@ -5,6 +5,7 @@ LL | Unstable::func(); | ^^^^^^^^^^^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error diff --git a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr index 0b450a947428..6a3396401d2b 100644 --- a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr @@ -5,6 +5,7 @@ LL | Default::default() | ^^^^^^^^^^^^^^^^^^ | = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants + = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable error: aborting due to previous error From ca1eb4309e7dc169873dfd5c33401f99937e8cc9 Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Mon, 26 Dec 2022 10:48:54 +0000 Subject: [PATCH 455/478] test use in libcore --- library/core/src/cmp.rs | 26 +++++++++++++--------- library/core/src/lib.rs | 1 + tests/ui-fulldeps/pprust-expr-roundtrip.rs | 1 + 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/library/core/src/cmp.rs b/library/core/src/cmp.rs index ebf5baa3c020..a7d6fec7d3dc 100644 --- a/library/core/src/cmp.rs +++ b/library/core/src/cmp.rs @@ -1234,17 +1234,23 @@ where F: ~const Destruct, K: ~const Destruct, { - const fn imp K, K: ~const Ord>( - f: &mut F, - (v1, v2): (&T, &T), - ) -> Ordering - where - T: ~const Destruct, - K: ~const Destruct, - { - f(v1).cmp(&f(v2)) + cfg_if! { + if #[cfg(bootstrap)] { + const fn imp K, K: ~const Ord>( + f: &mut F, + (v1, v2): (&T, &T), + ) -> Ordering + where + T: ~const Destruct, + K: ~const Destruct, + { + f(v1).cmp(&f(v2)) + } + min_by(v1, v2, ConstFnMutClosure::new(&mut f, imp)) + } else { + min_by(v1, v2, const |v1, v2| f(v1).cmp(&f(v2))) + } } - min_by(v1, v2, ConstFnMutClosure::new(&mut f, imp)) } /// Compares and returns the maximum of two values. diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs index 9e0d7cab63e5..20b325546e2f 100644 --- a/library/core/src/lib.rs +++ b/library/core/src/lib.rs @@ -191,6 +191,7 @@ #![feature(cfg_sanitize)] #![feature(cfg_target_has_atomic)] #![feature(cfg_target_has_atomic_equal_alignment)] +#![cfg_attr(not(bootstrap), feature(const_closures))] #![feature(const_fn_floating_point_arithmetic)] #![feature(const_mut_refs)] #![feature(const_precise_live_drops)] diff --git a/tests/ui-fulldeps/pprust-expr-roundtrip.rs b/tests/ui-fulldeps/pprust-expr-roundtrip.rs index 6dbabc8eb348..7a91dcf0dad3 100644 --- a/tests/ui-fulldeps/pprust-expr-roundtrip.rs +++ b/tests/ui-fulldeps/pprust-expr-roundtrip.rs @@ -126,6 +126,7 @@ fn iter_exprs(depth: usize, f: &mut dyn FnMut(P)) { g(ExprKind::Closure(Box::new(Closure { binder: ClosureBinder::NotPresent, capture_clause: CaptureBy::Value, + constness: Const::No, asyncness: Async::No, movability: Movability::Movable, fn_decl: decl.clone(), From 740f6aaf95e12ad265eb54f78bd56fe3891827bd Mon Sep 17 00:00:00 2001 From: clubby789 Date: Thu, 12 Jan 2023 03:19:08 +0000 Subject: [PATCH 456/478] Fix rendering 'const' for intrinsics --- src/librustdoc/clean/types.rs | 12 ++++++++++-- tests/rustdoc/const-intrinsic.rs | 25 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 tests/rustdoc/const-intrinsic.rs diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 5c63efef717d..87de41fde63c 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -676,7 +676,8 @@ impl Item { } let header = match *self.kind { ItemKind::ForeignFunctionItem(_) => { - let abi = tcx.fn_sig(self.item_id.as_def_id().unwrap()).abi(); + let def_id = self.item_id.as_def_id().unwrap(); + let abi = tcx.fn_sig(def_id).abi(); hir::FnHeader { unsafety: if abi == Abi::RustIntrinsic { intrinsic_operation_unsafety(tcx, self.item_id.as_def_id().unwrap()) @@ -684,7 +685,14 @@ impl Item { hir::Unsafety::Unsafe }, abi, - constness: hir::Constness::NotConst, + constness: if abi == Abi::RustIntrinsic + && tcx.is_const_fn(def_id) + && is_unstable_const_fn(tcx, def_id).is_none() + { + hir::Constness::Const + } else { + hir::Constness::NotConst + }, asyncness: hir::IsAsync::NotAsync, } } diff --git a/tests/rustdoc/const-intrinsic.rs b/tests/rustdoc/const-intrinsic.rs new file mode 100644 index 000000000000..2fc486d01dae --- /dev/null +++ b/tests/rustdoc/const-intrinsic.rs @@ -0,0 +1,25 @@ +#![feature(intrinsics)] +#![feature(staged_api)] + +#![crate_name = "foo"] +#![stable(since="1.0.0", feature="rust1")] + +extern "rust-intrinsic" { + // @has 'foo/fn.transmute.html' + // @has - '//pre[@class="rust fn"]' 'pub const unsafe extern "rust-intrinsic" fn transmute(_: T) -> U' + #[stable(since="1.0.0", feature="rust1")] + #[rustc_const_stable(feature = "const_transmute", since = "1.56.0")] + pub fn transmute(_: T) -> U; + + // @has 'foo/fn.unreachable.html' + // @has - '//pre[@class="rust fn"]' 'pub unsafe extern "rust-intrinsic" fn unreachable() -> !' + #[stable(since="1.0.0", feature="rust1")] + pub fn unreachable() -> !; +} + +extern "C" { + // @has 'foo/fn.needs_drop.html' + // @has - '//pre[@class="rust fn"]' 'pub unsafe extern "C" fn needs_drop() -> !' + #[stable(since="1.0.0", feature="rust1")] + pub fn needs_drop() -> !; +} From 42a50bac319c0fc4fedf295fb1e606f015c48bb6 Mon Sep 17 00:00:00 2001 From: Deadbeef Date: Thu, 12 Jan 2023 04:20:00 +0000 Subject: [PATCH 457/478] move to correct test --- .../const_closures => tests/ui/rfc-2632-const-trait-impl}/call.rs | 0 .../const_closures => tests/ui/rfc-2632-const-trait-impl}/gate.rs | 0 .../ui/rfc-2632-const-trait-impl}/gate.stderr | 0 .../non-const-op-const-closure-non-const-outer.rs | 0 .../non-const-op-const-closure-non-const-outer.stderr | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {src/test/ui/rfc-2632-const-trait-impl/const_closures => tests/ui/rfc-2632-const-trait-impl}/call.rs (100%) rename {src/test/ui/rfc-2632-const-trait-impl/const_closures => tests/ui/rfc-2632-const-trait-impl}/gate.rs (100%) rename {src/test/ui/rfc-2632-const-trait-impl/const_closures => tests/ui/rfc-2632-const-trait-impl}/gate.stderr (100%) rename {src/test/ui/rfc-2632-const-trait-impl/const_closures => tests/ui/rfc-2632-const-trait-impl}/non-const-op-const-closure-non-const-outer.rs (100%) rename {src/test/ui/rfc-2632-const-trait-impl/const_closures => tests/ui/rfc-2632-const-trait-impl}/non-const-op-const-closure-non-const-outer.stderr (100%) diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs b/tests/ui/rfc-2632-const-trait-impl/call.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_closures/call.rs rename to tests/ui/rfc-2632-const-trait-impl/call.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs b/tests/ui/rfc-2632-const-trait-impl/gate.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.rs rename to tests/ui/rfc-2632-const-trait-impl/gate.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr b/tests/ui/rfc-2632-const-trait-impl/gate.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_closures/gate.stderr rename to tests/ui/rfc-2632-const-trait-impl/gate.stderr diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs b/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.rs similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.rs rename to tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.rs diff --git a/src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr b/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.stderr similarity index 100% rename from src/test/ui/rfc-2632-const-trait-impl/const_closures/non-const-op-const-closure-non-const-outer.stderr rename to tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.stderr From 0a2b55d4c8d133d56fb31a3b67cda6f974834890 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Thu, 12 Jan 2023 06:07:53 +0000 Subject: [PATCH 458/478] Revert "Make nested RPITIT inherit the parent opaque's generics." and adjust test This reverts commit e2d41f4c974f0cc09e5aafb02883f222487610f9. --- .../src/collect/generics_of.rs | 16 +++++++++++++++- tests/ui/async-await/in-trait/nested-rpit.rs | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_hir_analysis/src/collect/generics_of.rs b/compiler/rustc_hir_analysis/src/collect/generics_of.rs index 96221c3e3d86..9a5f447c260f 100644 --- a/compiler/rustc_hir_analysis/src/collect/generics_of.rs +++ b/compiler/rustc_hir_analysis/src/collect/generics_of.rs @@ -4,6 +4,7 @@ use hir::{ GenericParamKind, HirId, Node, }; use rustc_hir as hir; +use rustc_hir::def::DefKind; use rustc_hir::def_id::DefId; use rustc_middle::ty::{self, TyCtxt}; use rustc_session::lint; @@ -142,7 +143,20 @@ pub(super) fn generics_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::Generics { Some(tcx.typeck_root_def_id(def_id)) } Node::Item(item) => match item.kind { - ItemKind::OpaqueTy(hir::OpaqueTy { .. }) => { + ItemKind::OpaqueTy(hir::OpaqueTy { + origin: + hir::OpaqueTyOrigin::FnReturn(fn_def_id) | hir::OpaqueTyOrigin::AsyncFn(fn_def_id), + in_trait, + .. + }) => { + if in_trait { + assert!(matches!(tcx.def_kind(fn_def_id), DefKind::AssocFn)) + } else { + assert!(matches!(tcx.def_kind(fn_def_id), DefKind::AssocFn | DefKind::Fn)) + } + Some(fn_def_id.to_def_id()) + } + ItemKind::OpaqueTy(hir::OpaqueTy { origin: hir::OpaqueTyOrigin::TyAlias, .. }) => { let parent_id = tcx.hir().get_parent_item(hir_id); assert_ne!(parent_id, hir::CRATE_OWNER_ID); debug!("generics_of: parent of opaque ty {:?} is {:?}", def_id, parent_id); diff --git a/tests/ui/async-await/in-trait/nested-rpit.rs b/tests/ui/async-await/in-trait/nested-rpit.rs index ae8e0aed0cc5..41d72ebb4d4c 100644 --- a/tests/ui/async-await/in-trait/nested-rpit.rs +++ b/tests/ui/async-await/in-trait/nested-rpit.rs @@ -1,5 +1,7 @@ -// check-pass // edition: 2021 +// known-bug: #105197 +// failure-status:101 +// dont-check-compiler-stderr #![feature(async_fn_in_trait)] #![feature(return_position_impl_trait_in_trait)] From fb0ecc028840ae97cc38258f7e2cbbfcd70a8f29 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Thu, 12 Jan 2023 06:53:06 +0000 Subject: [PATCH 459/478] Add `WaffleLapkin` to compiler reviewers --- triagebot.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/triagebot.toml b/triagebot.toml index 1f1b1f1110db..a7b4925bc178 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -478,6 +478,7 @@ compiler-team-contributors = [ "@jackh726", "@TaKO8Ki", "@Nilstrieb", + "@WaffleLapkin", ] compiler = [ "compiler-team", From 58782a8842bdd74e3304092251a1d06e5b6b550b Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Mon, 12 Dec 2022 10:48:02 +0000 Subject: [PATCH 460/478] Harden the pre-tyctxt query system against accidental recomputation --- compiler/rustc_data_structures/src/steal.rs | 5 + compiler/rustc_driver/src/lib.rs | 11 +- compiler/rustc_interface/src/queries.rs | 108 ++++++++++-------- src/librustdoc/doctest.rs | 8 +- src/librustdoc/lib.rs | 5 +- src/tools/miri/src/bin/miri.rs | 2 +- .../obtain-borrowck/driver.rs | 2 +- 7 files changed, 78 insertions(+), 63 deletions(-) diff --git a/compiler/rustc_data_structures/src/steal.rs b/compiler/rustc_data_structures/src/steal.rs index a3ece6550473..9a0fd52677d1 100644 --- a/compiler/rustc_data_structures/src/steal.rs +++ b/compiler/rustc_data_structures/src/steal.rs @@ -40,6 +40,11 @@ impl Steal { ReadGuard::map(borrow, |opt| opt.as_ref().unwrap()) } + #[track_caller] + pub fn get_mut(&mut self) -> &mut T { + self.value.get_mut().as_mut().expect("attempt to read from stolen value") + } + #[track_caller] pub fn steal(&self) -> T { let value_ref = &mut *self.value.try_write().expect("stealing value which is locked"); diff --git a/compiler/rustc_driver/src/lib.rs b/compiler/rustc_driver/src/lib.rs index 3cbe0052359b..508d5cfc8e31 100644 --- a/compiler/rustc_driver/src/lib.rs +++ b/compiler/rustc_driver/src/lib.rs @@ -309,8 +309,8 @@ fn run_compiler( if let Some(ppm) = &sess.opts.pretty { if ppm.needs_ast_map() { - let expanded_crate = queries.expansion()?.peek().0.clone(); - queries.global_ctxt()?.peek_mut().enter(|tcx| { + let expanded_crate = queries.expansion()?.borrow().0.clone(); + queries.global_ctxt()?.enter(|tcx| { pretty::print_after_hir_lowering( tcx, compiler.input(), @@ -321,7 +321,7 @@ fn run_compiler( Ok(()) })?; } else { - let krate = queries.parse()?.take(); + let krate = queries.parse()?.steal(); pretty::print_after_parsing( sess, compiler.input(), @@ -343,7 +343,8 @@ fn run_compiler( } { - let (_, lint_store) = &*queries.register_plugins()?.peek(); + let plugins = queries.register_plugins()?; + let (_, lint_store) = &*plugins.borrow(); // Lint plugins are registered; now we can process command line flags. if sess.opts.describe_lints { @@ -371,7 +372,7 @@ fn run_compiler( return early_exit(); } - queries.global_ctxt()?.peek_mut().enter(|tcx| { + queries.global_ctxt()?.enter(|tcx| { let result = tcx.analysis(()); if sess.opts.unstable_opts.save_analysis { let crate_name = tcx.crate_name(LOCAL_CRATE); diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 1d0c7f5b7a38..041bb9eb7a1c 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -5,6 +5,7 @@ use crate::passes::{self, BoxedResolver, QueryContext}; use rustc_ast as ast; use rustc_codegen_ssa::traits::CodegenBackend; use rustc_codegen_ssa::CodegenResults; +use rustc_data_structures::steal::Steal; use rustc_data_structures::svh::Svh; use rustc_data_structures::sync::{Lrc, OnceCell, WorkerLocal}; use rustc_hir::def_id::LOCAL_CRATE; @@ -19,43 +20,53 @@ use rustc_session::{output::find_crate_name, Session}; use rustc_span::symbol::sym; use rustc_span::Symbol; use std::any::Any; -use std::cell::{Ref, RefCell, RefMut}; +use std::cell::{RefCell, RefMut}; use std::rc::Rc; use std::sync::Arc; /// Represent the result of a query. /// -/// This result can be stolen with the [`take`] method and generated with the [`compute`] method. +/// This result can be stolen once with the [`steal`] method and generated with the [`compute`] method. /// -/// [`take`]: Self::take +/// [`steal`]: Steal::steal /// [`compute`]: Self::compute pub struct Query { - result: RefCell>>, + /// `None` means no value has been computed yet. + result: RefCell>>>, } impl Query { - fn compute Result>(&self, f: F) -> Result<&Query> { - self.result.borrow_mut().get_or_insert_with(f).as_ref().map(|_| self).map_err(|&err| err) + fn compute Result>(&self, f: F) -> Result> { + RefMut::filter_map( + self.result.borrow_mut(), + |r: &mut Option>>| -> Option<&mut Steal> { + r.get_or_insert_with(|| f().map(Steal::new)).as_mut().ok() + }, + ) + .map_err(|r| *r.as_ref().unwrap().as_ref().map(|_| ()).unwrap_err()) + .map(QueryResult) } +} - /// Takes ownership of the query result. Further attempts to take or peek the query - /// result will panic unless it is generated by calling the `compute` method. - pub fn take(&self) -> T { - self.result.borrow_mut().take().expect("missing query result").unwrap() +pub struct QueryResult<'a, T>(RefMut<'a, Steal>); + +impl<'a, T> std::ops::Deref for QueryResult<'a, T> { + type Target = RefMut<'a, Steal>; + + fn deref(&self) -> &Self::Target { + &self.0 } +} - /// Borrows the query result using the RefCell. Panics if the result is stolen. - pub fn peek(&self) -> Ref<'_, T> { - Ref::map(self.result.borrow(), |r| { - r.as_ref().unwrap().as_ref().expect("missing query result") - }) +impl<'a, T> std::ops::DerefMut for QueryResult<'a, T> { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 } +} - /// Mutably borrows the query result using the RefCell. Panics if the result is stolen. - pub fn peek_mut(&self) -> RefMut<'_, T> { - RefMut::map(self.result.borrow_mut(), |r| { - r.as_mut().unwrap().as_mut().expect("missing query result") - }) +impl<'a, 'tcx> QueryResult<'a, QueryContext<'tcx>> { + pub fn enter(mut self, f: impl FnOnce(TyCtxt<'tcx>) -> T) -> T { + (*self.0).get_mut().enter(f) } } @@ -111,24 +122,24 @@ impl<'tcx> Queries<'tcx> { self.compiler.codegen_backend() } - fn dep_graph_future(&self) -> Result<&Query>> { + fn dep_graph_future(&self) -> Result>> { self.dep_graph_future.compute(|| { let sess = self.session(); Ok(sess.opts.build_dep_graph().then(|| rustc_incremental::load_dep_graph(sess))) }) } - pub fn parse(&self) -> Result<&Query> { + pub fn parse(&self) -> Result> { self.parse.compute(|| { passes::parse(self.session(), &self.compiler.input) .map_err(|mut parse_error| parse_error.emit()) }) } - pub fn register_plugins(&self) -> Result<&Query<(ast::Crate, Lrc)>> { + pub fn register_plugins(&self) -> Result)>> { self.register_plugins.compute(|| { - let crate_name = *self.crate_name()?.peek(); - let krate = self.parse()?.take(); + let crate_name = *self.crate_name()?.borrow(); + let krate = self.parse()?.steal(); let empty: &(dyn Fn(&Session, &mut LintStore) + Sync + Send) = &|_, _| {}; let (krate, lint_store) = passes::register_plugins( @@ -150,11 +161,11 @@ impl<'tcx> Queries<'tcx> { }) } - pub fn crate_name(&self) -> Result<&Query> { + pub fn crate_name(&self) -> Result> { self.crate_name.compute(|| { Ok({ let parse_result = self.parse()?; - let krate = parse_result.peek(); + let krate = parse_result.borrow(); // parse `#[crate_name]` even if `--crate-name` was passed, to make sure it matches. find_crate_name(self.session(), &krate.attrs, &self.compiler.input) }) @@ -163,11 +174,12 @@ impl<'tcx> Queries<'tcx> { pub fn expansion( &self, - ) -> Result<&Query<(Lrc, Rc>, Lrc)>> { + ) -> Result, Rc>, Lrc)>> + { trace!("expansion"); self.expansion.compute(|| { - let crate_name = *self.crate_name()?.peek(); - let (krate, lint_store) = self.register_plugins()?.take(); + let crate_name = *self.crate_name()?.borrow(); + let (krate, lint_store) = self.register_plugins()?.steal(); let _timer = self.session().timer("configure_and_expand"); let sess = self.session(); let mut resolver = passes::create_resolver( @@ -183,10 +195,10 @@ impl<'tcx> Queries<'tcx> { }) } - fn dep_graph(&self) -> Result<&Query> { + fn dep_graph(&self) -> Result> { self.dep_graph.compute(|| { let sess = self.session(); - let future_opt = self.dep_graph_future()?.take(); + let future_opt = self.dep_graph_future()?.steal(); let dep_graph = future_opt .and_then(|future| { let (prev_graph, prev_work_products) = @@ -199,10 +211,11 @@ impl<'tcx> Queries<'tcx> { }) } - pub fn prepare_outputs(&self) -> Result<&Query> { + pub fn prepare_outputs(&self) -> Result> { self.prepare_outputs.compute(|| { - let (krate, boxed_resolver, _) = &*self.expansion()?.peek(); - let crate_name = *self.crate_name()?.peek(); + let expansion = self.expansion()?; + let (krate, boxed_resolver, _) = &*expansion.borrow(); + let crate_name = *self.crate_name()?.borrow(); passes::prepare_outputs( self.session(), self.compiler, @@ -213,12 +226,12 @@ impl<'tcx> Queries<'tcx> { }) } - pub fn global_ctxt(&'tcx self) -> Result<&Query>> { + pub fn global_ctxt(&'tcx self) -> Result>> { self.global_ctxt.compute(|| { - let crate_name = *self.crate_name()?.peek(); - let outputs = self.prepare_outputs()?.take(); - let dep_graph = self.dep_graph()?.peek().clone(); - let (krate, resolver, lint_store) = self.expansion()?.take(); + let crate_name = *self.crate_name()?.borrow(); + let outputs = self.prepare_outputs()?.steal(); + let dep_graph = self.dep_graph()?.borrow().clone(); + let (krate, resolver, lint_store) = self.expansion()?.steal(); Ok(passes::create_global_ctxt( self.compiler, lint_store, @@ -235,9 +248,9 @@ impl<'tcx> Queries<'tcx> { }) } - pub fn ongoing_codegen(&'tcx self) -> Result<&Query>> { + pub fn ongoing_codegen(&'tcx self) -> Result>> { self.ongoing_codegen.compute(|| { - self.global_ctxt()?.peek_mut().enter(|tcx| { + self.global_ctxt()?.enter(|tcx| { tcx.analysis(()).ok(); // Don't do code generation if there were any errors @@ -293,12 +306,10 @@ impl<'tcx> Queries<'tcx> { let sess = self.session().clone(); let codegen_backend = self.codegen_backend().clone(); - let dep_graph = self.dep_graph()?.peek().clone(); - let (crate_hash, prepare_outputs) = self - .global_ctxt()? - .peek_mut() - .enter(|tcx| (tcx.crate_hash(LOCAL_CRATE), tcx.output_filenames(()).clone())); - let ongoing_codegen = self.ongoing_codegen()?.take(); + let (crate_hash, prepare_outputs, dep_graph) = self.global_ctxt()?.enter(|tcx| { + (tcx.crate_hash(LOCAL_CRATE), tcx.output_filenames(()).clone(), tcx.dep_graph.clone()) + }); + let ongoing_codegen = self.ongoing_codegen()?.steal(); Ok(Linker { sess, @@ -382,6 +393,7 @@ impl Compiler { // NOTE: intentionally does not compute the global context if it hasn't been built yet, // since that likely means there was a parse error. if let Some(Ok(gcx)) = &mut *queries.global_ctxt.result.borrow_mut() { + let gcx = gcx.get_mut(); // We assume that no queries are run past here. If there are new queries // after this point, they'll show up as "" in self-profiling data. { diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 81d9c46447a3..5f8c777f32a5 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -115,9 +115,7 @@ pub(crate) fn run(options: RustdocOptions) -> Result<(), ErrorGuaranteed> { let (tests, unused_extern_reports, compiling_test_count) = interface::run_compiler(config, |compiler| { compiler.enter(|queries| { - let mut global_ctxt = queries.global_ctxt()?.take(); - - let collector = global_ctxt.enter(|tcx| { + let collector = queries.global_ctxt()?.enter(|tcx| { let crate_attrs = tcx.hir().attrs(CRATE_HIR_ID); let opts = scrape_test_config(crate_attrs); @@ -156,9 +154,7 @@ pub(crate) fn run(options: RustdocOptions) -> Result<(), ErrorGuaranteed> { let unused_extern_reports = collector.unused_extern_reports.clone(); let compiling_test_count = collector.compiling_test_count.load(Ordering::SeqCst); - let ret: Result<_, ErrorGuaranteed> = - Ok((collector.tests, unused_extern_reports, compiling_test_count)); - ret + Ok((collector.tests, unused_extern_reports, compiling_test_count)) }) })?; diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index ef1d7da5a341..ed77de200a9b 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -800,7 +800,8 @@ fn main_args(at_args: &[String]) -> MainResult { // FIXME(#83761): Resolver cloning can lead to inconsistencies between data in the // two copies because one of the copies can be modified after `TyCtxt` construction. let (resolver, resolver_caches) = { - let (krate, resolver, _) = &*abort_on_err(queries.expansion(), sess).peek(); + let expansion = abort_on_err(queries.expansion(), sess); + let (krate, resolver, _) = &*expansion.borrow(); let resolver_caches = resolver.borrow_mut().access(|resolver| { collect_intra_doc_links::early_resolve_intra_doc_links( resolver, @@ -817,7 +818,7 @@ fn main_args(at_args: &[String]) -> MainResult { sess.fatal("Compilation failed, aborting rustdoc"); } - let mut global_ctxt = abort_on_err(queries.global_ctxt(), sess).peek_mut(); + let global_ctxt = abort_on_err(queries.global_ctxt(), sess); global_ctxt.enter(|tcx| { let (krate, render_opts, mut cache) = sess.time("run_global_ctxt", || { diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs index 8c01748613cf..6a147de3be2e 100644 --- a/src/tools/miri/src/bin/miri.rs +++ b/src/tools/miri/src/bin/miri.rs @@ -61,7 +61,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls { ) -> Compilation { compiler.session().abort_if_errors(); - queries.global_ctxt().unwrap().peek_mut().enter(|tcx| { + queries.global_ctxt().unwrap().enter(|tcx| { init_late_loggers(tcx); if !tcx.sess.crate_types().contains(&CrateType::Executable) { tcx.sess.fatal("miri only makes sense on bin crates"); diff --git a/tests/run-make-fulldeps/obtain-borrowck/driver.rs b/tests/run-make-fulldeps/obtain-borrowck/driver.rs index a6c60df83a63..9cd504f004de 100644 --- a/tests/run-make-fulldeps/obtain-borrowck/driver.rs +++ b/tests/run-make-fulldeps/obtain-borrowck/driver.rs @@ -62,7 +62,7 @@ impl rustc_driver::Callbacks for CompilerCalls { queries: &'tcx Queries<'tcx>, ) -> Compilation { compiler.session().abort_if_errors(); - queries.global_ctxt().unwrap().peek_mut().enter(|tcx| { + queries.global_ctxt().unwrap().enter(|tcx| { // Collect definition ids of MIR bodies. let hir = tcx.hir(); let mut bodies = Vec::new(); From 797f2479974bfe0d759f4a2bd51dfef95b8d75cf Mon Sep 17 00:00:00 2001 From: Arthur Carcano Date: Tue, 10 Jan 2023 11:38:53 +0100 Subject: [PATCH 461/478] Mark ZST as FFI-safe if all its fields are PhantomData Modify the linting behavior and add the corresponding regression test --- compiler/rustc_lint/src/types.rs | 46 ++++++++++---------- tests/ui/lint/lint-ffi-safety-all-phantom.rs | 22 ++++++++++ 2 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 tests/ui/lint/lint-ffi-safety-all-phantom.rs diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index fa415243ba06..8bceae08a038 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -878,39 +878,39 @@ impl<'a, 'tcx> ImproperCTypesVisitor<'a, 'tcx> { ) -> FfiResult<'tcx> { use FfiResult::*; - if def.repr().transparent() { + let transparent_safety = def.repr().transparent().then(|| { // Can assume that at most one field is not a ZST, so only check // that field's type for FFI-safety. if let Some(field) = transparent_newtype_field(self.cx.tcx, variant) { - self.check_field_type_for_ffi(cache, field, substs) + return self.check_field_type_for_ffi(cache, field, substs); } else { // All fields are ZSTs; this means that the type should behave - // like (), which is FFI-unsafe + // like (), which is FFI-unsafe... except if all fields are PhantomData, + // which is tested for below FfiUnsafe { ty, reason: fluent::lint_improper_ctypes_struct_zst, help: None } } - } else { - // We can't completely trust repr(C) markings; make sure the fields are - // actually safe. - let mut all_phantom = !variant.fields.is_empty(); - for field in &variant.fields { - match self.check_field_type_for_ffi(cache, &field, substs) { - FfiSafe => { - all_phantom = false; - } - FfiPhantom(..) if def.is_enum() => { - return FfiUnsafe { - ty, - reason: fluent::lint_improper_ctypes_enum_phantomdata, - help: None, - }; - } - FfiPhantom(..) => {} - r => return r, + }); + // We can't completely trust repr(C) markings; make sure the fields are + // actually safe. + let mut all_phantom = !variant.fields.is_empty(); + for field in &variant.fields { + match self.check_field_type_for_ffi(cache, &field, substs) { + FfiSafe => { + all_phantom = false; } + FfiPhantom(..) if !def.repr().transparent() && def.is_enum() => { + return FfiUnsafe { + ty, + reason: fluent::lint_improper_ctypes_enum_phantomdata, + help: None, + }; + } + FfiPhantom(..) => {} + r => return transparent_safety.unwrap_or(r), } - - if all_phantom { FfiPhantom(ty) } else { FfiSafe } } + + if all_phantom { FfiPhantom(ty) } else { transparent_safety.unwrap_or(FfiSafe) } } /// Checks if the given type is "ffi-safe" (has a stable, well-defined diff --git a/tests/ui/lint/lint-ffi-safety-all-phantom.rs b/tests/ui/lint/lint-ffi-safety-all-phantom.rs new file mode 100644 index 000000000000..7419d3458009 --- /dev/null +++ b/tests/ui/lint/lint-ffi-safety-all-phantom.rs @@ -0,0 +1,22 @@ +// This is a regression test for issue https://github.com/rust-lang/rust/issues/106629. +// It ensures that transparent types where all fields are PhantomData are marked as +// FFI-safe. + +// check-pass + +#[repr(transparent)] +#[derive(Copy, Clone)] +struct MyPhantom(core::marker::PhantomData); + +#[repr(C)] +#[derive(Copy, Clone)] +pub struct Bar { + pub x: i32, + _marker: MyPhantom, +} + +extern "C" { + pub fn foo(bar: *mut Bar); +} + +fn main() {} From 920633258f237e3aed59adb1e9e900431962ab7a Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 12 Jan 2023 14:22:18 +0100 Subject: [PATCH 462/478] fix --- tests/ui/derived_hash_with_manual_eq.rs | 2 + tests/ui/derived_hash_with_manual_eq.stderr | 10 +-- tests/ui/rename.fixed | 2 + tests/ui/rename.stderr | 90 +++++++++++---------- 4 files changed, 57 insertions(+), 47 deletions(-) diff --git a/tests/ui/derived_hash_with_manual_eq.rs b/tests/ui/derived_hash_with_manual_eq.rs index 0804e3cffa1a..8ad09a8de43d 100644 --- a/tests/ui/derived_hash_with_manual_eq.rs +++ b/tests/ui/derived_hash_with_manual_eq.rs @@ -27,6 +27,8 @@ impl PartialEq for Baz { } } +// Implementing `Hash` with a derived `PartialEq` is fine. See #2627 + #[derive(PartialEq)] struct Bah; diff --git a/tests/ui/derived_hash_with_manual_eq.stderr b/tests/ui/derived_hash_with_manual_eq.stderr index 16965aa42d8c..230940f25fb6 100644 --- a/tests/ui/derived_hash_with_manual_eq.stderr +++ b/tests/ui/derived_hash_with_manual_eq.stderr @@ -1,25 +1,25 @@ error: you are deriving `Hash` but have implemented `PartialEq` explicitly - --> $DIR/derive_hash_xor_eq.rs:12:10 + --> $DIR/derived_hash_with_manual_eq.rs:12:10 | LL | #[derive(Hash)] | ^^^^ | note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:15:1 + --> $DIR/derived_hash_with_manual_eq.rs:15:1 | LL | impl PartialEq for Bar { | ^^^^^^^^^^^^^^^^^^^^^^ - = note: `#[deny(clippy::derive_hash_xor_eq)]` on by default + = note: `#[deny(clippy::derived_hash_with_manual_eq)]` on by default = note: this error originates in the derive macro `Hash` (in Nightly builds, run with -Z macro-backtrace for more info) error: you are deriving `Hash` but have implemented `PartialEq` explicitly - --> $DIR/derive_hash_xor_eq.rs:21:10 + --> $DIR/derived_hash_with_manual_eq.rs:21:10 | LL | #[derive(Hash)] | ^^^^ | note: `PartialEq` implemented here - --> $DIR/derive_hash_xor_eq.rs:24:1 + --> $DIR/derived_hash_with_manual_eq.rs:24:1 | LL | impl PartialEq for Baz { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/ui/rename.fixed b/tests/ui/rename.fixed index 2f76b5752960..5076f61334d6 100644 --- a/tests/ui/rename.fixed +++ b/tests/ui/rename.fixed @@ -10,6 +10,7 @@ #![allow(clippy::box_collection)] #![allow(clippy::redundant_static_lifetimes)] #![allow(clippy::cognitive_complexity)] +#![allow(clippy::derived_hash_with_manual_eq)] #![allow(clippy::disallowed_methods)] #![allow(clippy::disallowed_types)] #![allow(clippy::mixed_read_write_in_expression)] @@ -45,6 +46,7 @@ #![warn(clippy::box_collection)] #![warn(clippy::redundant_static_lifetimes)] #![warn(clippy::cognitive_complexity)] +#![warn(clippy::derived_hash_with_manual_eq)] #![warn(clippy::disallowed_methods)] #![warn(clippy::disallowed_types)] #![warn(clippy::mixed_read_write_in_expression)] diff --git a/tests/ui/rename.stderr b/tests/ui/rename.stderr index 9af58dc75a68..27a0263292ef 100644 --- a/tests/ui/rename.stderr +++ b/tests/ui/rename.stderr @@ -1,5 +1,5 @@ error: lint `clippy::almost_complete_letter_range` has been renamed to `clippy::almost_complete_range` - --> $DIR/rename.rs:41:9 + --> $DIR/rename.rs:42:9 | LL | #![warn(clippy::almost_complete_letter_range)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::almost_complete_range` @@ -7,244 +7,250 @@ LL | #![warn(clippy::almost_complete_letter_range)] = note: `-D renamed-and-removed-lints` implied by `-D warnings` error: lint `clippy::blacklisted_name` has been renamed to `clippy::disallowed_names` - --> $DIR/rename.rs:42:9 + --> $DIR/rename.rs:43:9 | LL | #![warn(clippy::blacklisted_name)] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::disallowed_names` error: lint `clippy::block_in_if_condition_expr` has been renamed to `clippy::blocks_in_if_conditions` - --> $DIR/rename.rs:43:9 + --> $DIR/rename.rs:44:9 | LL | #![warn(clippy::block_in_if_condition_expr)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::blocks_in_if_conditions` error: lint `clippy::block_in_if_condition_stmt` has been renamed to `clippy::blocks_in_if_conditions` - --> $DIR/rename.rs:44:9 + --> $DIR/rename.rs:45:9 | LL | #![warn(clippy::block_in_if_condition_stmt)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::blocks_in_if_conditions` error: lint `clippy::box_vec` has been renamed to `clippy::box_collection` - --> $DIR/rename.rs:45:9 + --> $DIR/rename.rs:46:9 | LL | #![warn(clippy::box_vec)] | ^^^^^^^^^^^^^^^ help: use the new name: `clippy::box_collection` error: lint `clippy::const_static_lifetime` has been renamed to `clippy::redundant_static_lifetimes` - --> $DIR/rename.rs:46:9 + --> $DIR/rename.rs:47:9 | LL | #![warn(clippy::const_static_lifetime)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::redundant_static_lifetimes` error: lint `clippy::cyclomatic_complexity` has been renamed to `clippy::cognitive_complexity` - --> $DIR/rename.rs:47:9 + --> $DIR/rename.rs:48:9 | LL | #![warn(clippy::cyclomatic_complexity)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::cognitive_complexity` +error: lint `clippy::derive_hash_xor_eq` has been renamed to `clippy::derived_hash_with_manual_eq` + --> $DIR/rename.rs:49:9 + | +LL | #![warn(clippy::derive_hash_xor_eq)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::derived_hash_with_manual_eq` + error: lint `clippy::disallowed_method` has been renamed to `clippy::disallowed_methods` - --> $DIR/rename.rs:48:9 + --> $DIR/rename.rs:50:9 | LL | #![warn(clippy::disallowed_method)] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::disallowed_methods` error: lint `clippy::disallowed_type` has been renamed to `clippy::disallowed_types` - --> $DIR/rename.rs:49:9 + --> $DIR/rename.rs:51:9 | LL | #![warn(clippy::disallowed_type)] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::disallowed_types` error: lint `clippy::eval_order_dependence` has been renamed to `clippy::mixed_read_write_in_expression` - --> $DIR/rename.rs:50:9 + --> $DIR/rename.rs:52:9 | LL | #![warn(clippy::eval_order_dependence)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::mixed_read_write_in_expression` error: lint `clippy::identity_conversion` has been renamed to `clippy::useless_conversion` - --> $DIR/rename.rs:51:9 + --> $DIR/rename.rs:53:9 | LL | #![warn(clippy::identity_conversion)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::useless_conversion` error: lint `clippy::if_let_some_result` has been renamed to `clippy::match_result_ok` - --> $DIR/rename.rs:52:9 + --> $DIR/rename.rs:54:9 | LL | #![warn(clippy::if_let_some_result)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::match_result_ok` error: lint `clippy::logic_bug` has been renamed to `clippy::overly_complex_bool_expr` - --> $DIR/rename.rs:53:9 + --> $DIR/rename.rs:55:9 | LL | #![warn(clippy::logic_bug)] | ^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::overly_complex_bool_expr` error: lint `clippy::new_without_default_derive` has been renamed to `clippy::new_without_default` - --> $DIR/rename.rs:54:9 + --> $DIR/rename.rs:56:9 | LL | #![warn(clippy::new_without_default_derive)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::new_without_default` error: lint `clippy::option_and_then_some` has been renamed to `clippy::bind_instead_of_map` - --> $DIR/rename.rs:55:9 + --> $DIR/rename.rs:57:9 | LL | #![warn(clippy::option_and_then_some)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::bind_instead_of_map` error: lint `clippy::option_expect_used` has been renamed to `clippy::expect_used` - --> $DIR/rename.rs:56:9 + --> $DIR/rename.rs:58:9 | LL | #![warn(clippy::option_expect_used)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::expect_used` error: lint `clippy::option_map_unwrap_or` has been renamed to `clippy::map_unwrap_or` - --> $DIR/rename.rs:57:9 + --> $DIR/rename.rs:59:9 | LL | #![warn(clippy::option_map_unwrap_or)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::map_unwrap_or` error: lint `clippy::option_map_unwrap_or_else` has been renamed to `clippy::map_unwrap_or` - --> $DIR/rename.rs:58:9 + --> $DIR/rename.rs:60:9 | LL | #![warn(clippy::option_map_unwrap_or_else)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::map_unwrap_or` error: lint `clippy::option_unwrap_used` has been renamed to `clippy::unwrap_used` - --> $DIR/rename.rs:59:9 + --> $DIR/rename.rs:61:9 | LL | #![warn(clippy::option_unwrap_used)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::unwrap_used` error: lint `clippy::ref_in_deref` has been renamed to `clippy::needless_borrow` - --> $DIR/rename.rs:60:9 + --> $DIR/rename.rs:62:9 | LL | #![warn(clippy::ref_in_deref)] | ^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::needless_borrow` error: lint `clippy::result_expect_used` has been renamed to `clippy::expect_used` - --> $DIR/rename.rs:61:9 + --> $DIR/rename.rs:63:9 | LL | #![warn(clippy::result_expect_used)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::expect_used` error: lint `clippy::result_map_unwrap_or_else` has been renamed to `clippy::map_unwrap_or` - --> $DIR/rename.rs:62:9 + --> $DIR/rename.rs:64:9 | LL | #![warn(clippy::result_map_unwrap_or_else)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::map_unwrap_or` error: lint `clippy::result_unwrap_used` has been renamed to `clippy::unwrap_used` - --> $DIR/rename.rs:63:9 + --> $DIR/rename.rs:65:9 | LL | #![warn(clippy::result_unwrap_used)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::unwrap_used` error: lint `clippy::single_char_push_str` has been renamed to `clippy::single_char_add_str` - --> $DIR/rename.rs:64:9 + --> $DIR/rename.rs:66:9 | LL | #![warn(clippy::single_char_push_str)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::single_char_add_str` error: lint `clippy::stutter` has been renamed to `clippy::module_name_repetitions` - --> $DIR/rename.rs:65:9 + --> $DIR/rename.rs:67:9 | LL | #![warn(clippy::stutter)] | ^^^^^^^^^^^^^^^ help: use the new name: `clippy::module_name_repetitions` error: lint `clippy::to_string_in_display` has been renamed to `clippy::recursive_format_impl` - --> $DIR/rename.rs:66:9 + --> $DIR/rename.rs:68:9 | LL | #![warn(clippy::to_string_in_display)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::recursive_format_impl` error: lint `clippy::zero_width_space` has been renamed to `clippy::invisible_characters` - --> $DIR/rename.rs:67:9 + --> $DIR/rename.rs:69:9 | LL | #![warn(clippy::zero_width_space)] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::invisible_characters` error: lint `clippy::drop_bounds` has been renamed to `drop_bounds` - --> $DIR/rename.rs:68:9 + --> $DIR/rename.rs:70:9 | LL | #![warn(clippy::drop_bounds)] | ^^^^^^^^^^^^^^^^^^^ help: use the new name: `drop_bounds` error: lint `clippy::for_loop_over_option` has been renamed to `for_loops_over_fallibles` - --> $DIR/rename.rs:69:9 + --> $DIR/rename.rs:71:9 | LL | #![warn(clippy::for_loop_over_option)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `for_loops_over_fallibles` error: lint `clippy::for_loop_over_result` has been renamed to `for_loops_over_fallibles` - --> $DIR/rename.rs:70:9 + --> $DIR/rename.rs:72:9 | LL | #![warn(clippy::for_loop_over_result)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `for_loops_over_fallibles` error: lint `clippy::for_loops_over_fallibles` has been renamed to `for_loops_over_fallibles` - --> $DIR/rename.rs:71:9 + --> $DIR/rename.rs:73:9 | LL | #![warn(clippy::for_loops_over_fallibles)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `for_loops_over_fallibles` error: lint `clippy::into_iter_on_array` has been renamed to `array_into_iter` - --> $DIR/rename.rs:72:9 + --> $DIR/rename.rs:74:9 | LL | #![warn(clippy::into_iter_on_array)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `array_into_iter` error: lint `clippy::invalid_atomic_ordering` has been renamed to `invalid_atomic_ordering` - --> $DIR/rename.rs:73:9 + --> $DIR/rename.rs:75:9 | LL | #![warn(clippy::invalid_atomic_ordering)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `invalid_atomic_ordering` error: lint `clippy::invalid_ref` has been renamed to `invalid_value` - --> $DIR/rename.rs:74:9 + --> $DIR/rename.rs:76:9 | LL | #![warn(clippy::invalid_ref)] | ^^^^^^^^^^^^^^^^^^^ help: use the new name: `invalid_value` error: lint `clippy::let_underscore_drop` has been renamed to `let_underscore_drop` - --> $DIR/rename.rs:75:9 + --> $DIR/rename.rs:77:9 | LL | #![warn(clippy::let_underscore_drop)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `let_underscore_drop` error: lint `clippy::mem_discriminant_non_enum` has been renamed to `enum_intrinsics_non_enums` - --> $DIR/rename.rs:76:9 + --> $DIR/rename.rs:78:9 | LL | #![warn(clippy::mem_discriminant_non_enum)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `enum_intrinsics_non_enums` error: lint `clippy::panic_params` has been renamed to `non_fmt_panics` - --> $DIR/rename.rs:77:9 + --> $DIR/rename.rs:79:9 | LL | #![warn(clippy::panic_params)] | ^^^^^^^^^^^^^^^^^^^^ help: use the new name: `non_fmt_panics` error: lint `clippy::positional_named_format_parameters` has been renamed to `named_arguments_used_positionally` - --> $DIR/rename.rs:78:9 + --> $DIR/rename.rs:80:9 | LL | #![warn(clippy::positional_named_format_parameters)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `named_arguments_used_positionally` error: lint `clippy::temporary_cstring_as_ptr` has been renamed to `temporary_cstring_as_ptr` - --> $DIR/rename.rs:79:9 + --> $DIR/rename.rs:81:9 | LL | #![warn(clippy::temporary_cstring_as_ptr)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `temporary_cstring_as_ptr` error: lint `clippy::unknown_clippy_lints` has been renamed to `unknown_lints` - --> $DIR/rename.rs:80:9 + --> $DIR/rename.rs:82:9 | LL | #![warn(clippy::unknown_clippy_lints)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `unknown_lints` error: lint `clippy::unused_label` has been renamed to `unused_labels` - --> $DIR/rename.rs:81:9 + --> $DIR/rename.rs:83:9 | LL | #![warn(clippy::unused_label)] | ^^^^^^^^^^^^^^^^^^^^ help: use the new name: `unused_labels` -error: aborting due to 41 previous errors +error: aborting due to 42 previous errors From bdf990022a0eadede1831b8523d77adf36811823 Mon Sep 17 00:00:00 2001 From: Petar Dambovaliev Date: Wed, 11 Jan 2023 20:28:56 +0100 Subject: [PATCH 463/478] add note for float iterator --- library/core/src/iter/traits/iterator.rs | 5 +++++ tests/ui/iterators/float_iterator_hint.rs | 15 +++++++++++++++ tests/ui/iterators/float_iterator_hint.stderr | 13 +++++++++++++ tests/ui/iterators/integral.stderr | 1 + 4 files changed, 34 insertions(+) create mode 100644 tests/ui/iterators/float_iterator_hint.rs create mode 100644 tests/ui/iterators/float_iterator_hint.stderr diff --git a/library/core/src/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index 99aaf798e411..a4a665d48d58 100644 --- a/library/core/src/iter/traits/iterator.rs +++ b/library/core/src/iter/traits/iterator.rs @@ -58,6 +58,11 @@ fn _assert_is_object_safe(_: &dyn Iterator) {} note = "if you want to iterate between `start` until a value `end`, use the exclusive range \ syntax `start..end` or the inclusive range syntax `start..=end`" ), + on( + _Self = "{float}", + note = "if you want to iterate between `start` until a value `end`, use the exclusive range \ + syntax `start..end` or the inclusive range syntax `start..=end`" + ), label = "`{Self}` is not an iterator", message = "`{Self}` is not an iterator" )] diff --git a/tests/ui/iterators/float_iterator_hint.rs b/tests/ui/iterators/float_iterator_hint.rs new file mode 100644 index 000000000000..a3335ca41f77 --- /dev/null +++ b/tests/ui/iterators/float_iterator_hint.rs @@ -0,0 +1,15 @@ +// #106728 + +fn main() { + for i in 0.2 { + //~^ ERROR `{float}` is not an iterator + //~| `{float}` is not an iterator + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` + //~| NOTE required for `{float}` to implement `IntoIterator` + println!(); + } +} diff --git a/tests/ui/iterators/float_iterator_hint.stderr b/tests/ui/iterators/float_iterator_hint.stderr new file mode 100644 index 000000000000..bae23a1f8ff8 --- /dev/null +++ b/tests/ui/iterators/float_iterator_hint.stderr @@ -0,0 +1,13 @@ +error[E0277]: `{float}` is not an iterator + --> $DIR/float_iterator_hint.rs:4:14 + | +LL | for i in 0.2 { + | ^^^ `{float}` is not an iterator + | + = help: the trait `Iterator` is not implemented for `{float}` + = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` + = note: required for `{float}` to implement `IntoIterator` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/iterators/integral.stderr b/tests/ui/iterators/integral.stderr index 047a71f98d9f..c142fec8da0f 100644 --- a/tests/ui/iterators/integral.stderr +++ b/tests/ui/iterators/integral.stderr @@ -115,6 +115,7 @@ LL | for _ in 42.0 {} | ^^^^ `{float}` is not an iterator | = help: the trait `Iterator` is not implemented for `{float}` + = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` = note: required for `{float}` to implement `IntoIterator` error: aborting due to 12 previous errors From 86168c381016f2f3626b3c0ba1ba9ee7da23b478 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Thu, 12 Jan 2023 15:36:15 +0100 Subject: [PATCH 464/478] Add mw to triagebot.toml --- triagebot.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/triagebot.toml b/triagebot.toml index 1f1b1f1110db..079a61107a38 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -471,6 +471,7 @@ compiler-team = [ "@lcnr", "@nagisa", "@wesleywiser", + "@michaelwoerister", ] compiler-team-contributors = [ "@compiler-errors", From 2633d5f5d0fad269e968586295a8587308314be1 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 11 Jan 2023 20:41:07 +0100 Subject: [PATCH 465/478] Fix not displayed re-export of `doc(hidden)` item --- src/librustdoc/passes/strip_priv_imports.rs | 3 ++- src/librustdoc/passes/strip_private.rs | 3 ++- src/librustdoc/passes/stripper.rs | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/passes/strip_priv_imports.rs b/src/librustdoc/passes/strip_priv_imports.rs index 3bac5a8e5d74..4c992e94833d 100644 --- a/src/librustdoc/passes/strip_priv_imports.rs +++ b/src/librustdoc/passes/strip_priv_imports.rs @@ -12,5 +12,6 @@ pub(crate) const STRIP_PRIV_IMPORTS: Pass = Pass { }; pub(crate) fn strip_priv_imports(krate: clean::Crate, cx: &mut DocContext<'_>) -> clean::Crate { - ImportStripper { tcx: cx.tcx }.fold_crate(krate) + let is_json_output = cx.output_format.is_json() && !cx.show_coverage; + ImportStripper { tcx: cx.tcx, is_json_output }.fold_crate(krate) } diff --git a/src/librustdoc/passes/strip_private.rs b/src/librustdoc/passes/strip_private.rs index 8fc42462de96..bb6dccb7c949 100644 --- a/src/librustdoc/passes/strip_private.rs +++ b/src/librustdoc/passes/strip_private.rs @@ -28,7 +28,8 @@ pub(crate) fn strip_private(mut krate: clean::Crate, cx: &mut DocContext<'_>) -> is_json_output, tcx: cx.tcx, }; - krate = ImportStripper { tcx: cx.tcx }.fold_crate(stripper.fold_crate(krate)); + krate = + ImportStripper { tcx: cx.tcx, is_json_output }.fold_crate(stripper.fold_crate(krate)); } // strip all impls referencing private items diff --git a/src/librustdoc/passes/stripper.rs b/src/librustdoc/passes/stripper.rs index f8a0d77538d3..f5501b3d5238 100644 --- a/src/librustdoc/passes/stripper.rs +++ b/src/librustdoc/passes/stripper.rs @@ -243,12 +243,25 @@ impl<'a> DocFolder for ImplStripper<'a, '_> { /// This stripper discards all private import statements (`use`, `extern crate`) pub(crate) struct ImportStripper<'tcx> { pub(crate) tcx: TyCtxt<'tcx>, + pub(crate) is_json_output: bool, +} + +impl<'tcx> ImportStripper<'tcx> { + fn import_should_be_hidden(&self, i: &Item, imp: &clean::Import) -> bool { + if self.is_json_output { + // FIXME: This should be handled the same way as for HTML output. + imp.imported_item_is_doc_hidden(self.tcx) + } else { + i.attrs.lists(sym::doc).has_word(sym::hidden) + } + } } impl<'tcx> DocFolder for ImportStripper<'tcx> { fn fold_item(&mut self, i: Item) -> Option { match *i.kind { - clean::ImportItem(imp) if imp.imported_item_is_doc_hidden(self.tcx) => None, + clean::ImportItem(imp) if self.import_should_be_hidden(&i, &imp) => None, + clean::ImportItem(_) if i.attrs.lists(sym::doc).has_word(sym::hidden) => None, clean::ExternCrateItem { .. } | clean::ImportItem(..) if i.visibility(self.tcx) != Some(Visibility::Public) => { From 675640c92a1fb1de99227802851fd2811d1ebd08 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 12 Jan 2023 18:03:50 +0100 Subject: [PATCH 466/478] Add test for displayed re-export of `doc(hidden)` --- tests/rustdoc/reexport-doc-hidden.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 tests/rustdoc/reexport-doc-hidden.rs diff --git a/tests/rustdoc/reexport-doc-hidden.rs b/tests/rustdoc/reexport-doc-hidden.rs new file mode 100644 index 000000000000..3ea5fde72f71 --- /dev/null +++ b/tests/rustdoc/reexport-doc-hidden.rs @@ -0,0 +1,26 @@ +// Part of . +// This test ensures that reexporting a `doc(hidden)` item will +// still show the reexport. + +#![crate_name = "foo"] + +#[doc(hidden)] +pub type Type = u32; + +// @has 'foo/index.html' +// @has - '//*[@id="reexport.Type2"]/code' 'pub use crate::Type as Type2;' +pub use crate::Type as Type2; + +// @count - '//*[@id="reexport.Type3"]' 0 +#[doc(hidden)] +pub use crate::Type as Type3; + +#[macro_export] +#[doc(hidden)] +macro_rules! foo { + () => {}; +} + +// This is a bug: https://github.com/rust-lang/rust/issues/59368 +// @!has - '//*[@id="reexport.Macro"]/code' 'pub use crate::foo as Macro;' +pub use crate::foo as Macro; From 321c530fadb766c594698be7c83ab7cbc443bf1c Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 3 Jan 2023 18:04:28 +0000 Subject: [PATCH 467/478] Don't pass `--sysroot` twice if SYSROOT is set This is useful for rust-lang/rust to allow setting a sysroot that's *only* for build scripts, different from the regular sysroot passed in RUSTFLAGS (since cargo doesn't apply RUSTFLAGS to build scripts or proc-macros). That said, the exact motivation is not particularly important: this fixes a regression from https://github.com/rust-lang/rust-clippy/pull/9881/commits/5907e9155ed7f1312d108aa2110853472da3b029#r1060215684. Note that only RUSTFLAGS is tested in the new integration test; passing --sysroot through `clippy-driver` never worked as far as I can tell, and no one is using it, so I didn't fix it here. --- src/driver.rs | 5 ++- tests/integration.rs | 97 +++++++++++++++++++++++++++++++++----------- 2 files changed, 77 insertions(+), 25 deletions(-) diff --git a/src/driver.rs b/src/driver.rs index bcc096c570e1..d521e8d88398 100644 --- a/src/driver.rs +++ b/src/driver.rs @@ -256,11 +256,14 @@ pub fn main() { LazyLock::force(&ICE_HOOK); exit(rustc_driver::catch_with_exit_code(move || { let mut orig_args: Vec = env::args().collect(); + let has_sysroot_arg = arg_value(&orig_args, "--sysroot", |_| true).is_some(); let sys_root_env = std::env::var("SYSROOT").ok(); let pass_sysroot_env_if_given = |args: &mut Vec, sys_root_env| { if let Some(sys_root) = sys_root_env { - args.extend(vec!["--sysroot".into(), sys_root]); + if !has_sysroot_arg { + args.extend(vec!["--sysroot".into(), sys_root]); + } }; }; diff --git a/tests/integration.rs b/tests/integration.rs index 818ff70b33f4..319e8eb2da60 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,19 +1,42 @@ +//! To run this test, use +//! `env INTEGRATION=rust-lang/log cargo test --test integration --features=integration` +//! +//! You can use a different `INTEGRATION` value to test different repositories. + #![cfg(feature = "integration")] #![cfg_attr(feature = "deny-warnings", deny(warnings))] #![warn(rust_2018_idioms, unused_lifetimes)] -use std::env; use std::ffi::OsStr; +use std::path::{Path, PathBuf}; use std::process::Command; +use std::{env, eprintln}; #[cfg(not(windows))] const CARGO_CLIPPY: &str = "cargo-clippy"; #[cfg(windows)] const CARGO_CLIPPY: &str = "cargo-clippy.exe"; -#[cfg_attr(feature = "integration", test)] -fn integration_test() { - let repo_name = env::var("INTEGRATION").expect("`INTEGRATION` var not set"); +// NOTE: arguments passed to the returned command will be `clippy-driver` args, not `cargo-clippy` +// args. Use `cargo_args` to pass arguments to cargo-clippy. +fn clippy_command(repo_dir: &Path, cargo_args: &[&str]) -> Command { + let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let target_dir = option_env!("CARGO_TARGET_DIR").map_or_else(|| root_dir.join("target"), PathBuf::from); + let clippy_binary = target_dir.join(env!("PROFILE")).join(CARGO_CLIPPY); + + let mut cargo_clippy = Command::new(clippy_binary); + cargo_clippy + .current_dir(repo_dir) + .env("RUST_BACKTRACE", "full") + .env("CARGO_TARGET_DIR", root_dir.join("target")) + .args(["clippy", "--all-targets", "--all-features"]) + .args(cargo_args) + .args(["--", "--cap-lints", "warn", "-Wclippy::pedantic", "-Wclippy::nursery"]); + cargo_clippy +} + +/// Return a directory with a checkout of the repository in `INTEGRATION`. +fn repo_dir(repo_name: &str) -> PathBuf { let repo_url = format!("https://github.com/{repo_name}"); let crate_name = repo_name .split('/') @@ -34,28 +57,19 @@ fn integration_test() { .expect("unable to run git"); assert!(st.success()); - let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let target_dir = std::path::Path::new(&root_dir).join("target"); - let clippy_binary = target_dir.join(env!("PROFILE")).join(CARGO_CLIPPY); - - let output = Command::new(clippy_binary) - .current_dir(repo_dir) - .env("RUST_BACKTRACE", "full") - .env("CARGO_TARGET_DIR", target_dir) - .args([ - "clippy", - "--all-targets", - "--all-features", - "--", - "--cap-lints", - "warn", - "-Wclippy::pedantic", - "-Wclippy::nursery", - ]) - .output() - .expect("unable to run clippy"); + repo_dir +} +#[cfg_attr(feature = "integration", test)] +fn integration_test() { + let repo_name = env::var("INTEGRATION").expect("`INTEGRATION` var not set"); + let repo_dir = repo_dir(&repo_name); + let output = clippy_command(&repo_dir, &[]).output().expect("failed to run clippy"); let stderr = String::from_utf8_lossy(&output.stderr); + if !stderr.is_empty() { + eprintln!("{stderr}"); + } + if let Some(backtrace_start) = stderr.find("error: internal compiler error") { static BACKTRACE_END_MSG: &str = "end of query stack"; let backtrace_end = stderr[backtrace_start..] @@ -90,3 +104,38 @@ fn integration_test() { None => panic!("Process terminated by signal"), } } + +#[cfg_attr(feature = "integration", test)] +fn test_sysroot() { + #[track_caller] + fn verify_cmd(cmd: &mut Command) { + // Test that SYSROOT is ignored if `--sysroot` is passed explicitly. + cmd.env("SYSROOT", "/dummy/value/does/not/exist"); + // We don't actually care about emitting lints, we only want to verify clippy doesn't give a hard + // error. + cmd.arg("-Awarnings"); + let output = cmd.output().expect("failed to run clippy"); + let stderr = String::from_utf8_lossy(&output.stderr); + assert!(stderr.is_empty(), "clippy printed an error: {stderr}"); + assert!(output.status.success(), "clippy exited with an error"); + } + + let rustc = std::env::var("RUSTC").unwrap_or("rustc".to_string()); + let rustc_output = Command::new(rustc) + .args(["--print", "sysroot"]) + .output() + .expect("unable to run rustc"); + assert!(rustc_output.status.success()); + let sysroot = String::from_utf8(rustc_output.stdout).unwrap(); + let sysroot = sysroot.trim_end(); + + // This is a fairly small repo; we want to avoid checking out anything heavy twice, so just + // hard-code it. + let repo_name = "rust-lang/log"; + let repo_dir = repo_dir(repo_name); + // Pass the sysroot through RUSTFLAGS. + verify_cmd(clippy_command(&repo_dir, &["--quiet"]).env("RUSTFLAGS", format!("--sysroot={sysroot}"))); + // NOTE: we don't test passing the arguments directly to clippy-driver (with `-- --sysroot`) + // because it breaks for some reason. I (@jyn514) haven't taken time to track down the bug + // because rust-lang/rust uses RUSTFLAGS and nearly no one else uses --sysroot. +} From fe007179ec3560f86bd15686d60372f8307ca225 Mon Sep 17 00:00:00 2001 From: Philipp Krones Date: Thu, 12 Jan 2023 18:30:51 +0100 Subject: [PATCH 468/478] Add cargo-clippy sysroot test Whne SYSROOT is defined, clippy-driver will insert a --sysroot argument when calling rustc. However, when a sysroot argument is already defined, e.g. through RUSTFLAGS=--sysroot=... the `cargo clippy` call would error. This tests that the sysroot argument is only passed once and that SYSROOT is ignored in this case. --- .github/driver.sh | 7 ++++ tests/integration.rs | 98 +++++++++++++------------------------------- 2 files changed, 36 insertions(+), 69 deletions(-) diff --git a/.github/driver.sh b/.github/driver.sh index 6ff189fc8592..798782340ee7 100644 --- a/.github/driver.sh +++ b/.github/driver.sh @@ -17,6 +17,13 @@ test "$sysroot" = $desired_sysroot sysroot=$(SYSROOT=$desired_sysroot ./target/debug/clippy-driver --print sysroot) test "$sysroot" = $desired_sysroot +# Check that the --sysroot argument is only passed once (SYSROOT is ignored) +( + cd rustc_tools_util + touch src/lib.rs + SYSROOT=/tmp RUSTFLAGS="--sysroot=$(rustc --print sysroot)" ../target/debug/cargo-clippy clippy --verbose +) + # Make sure this isn't set - clippy-driver should cope without it unset CARGO_MANIFEST_DIR diff --git a/tests/integration.rs b/tests/integration.rs index 319e8eb2da60..a771d8b87c81 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,42 +1,28 @@ -//! To run this test, use +//! This test is meant to only be run in CI. To run it locally use: +//! //! `env INTEGRATION=rust-lang/log cargo test --test integration --features=integration` //! //! You can use a different `INTEGRATION` value to test different repositories. +//! +//! This test will clone the specified repository and run Clippy on it. The test succeeds, if +//! Clippy doesn't produce an ICE. Lint warnings are ignored by this test. #![cfg(feature = "integration")] #![cfg_attr(feature = "deny-warnings", deny(warnings))] #![warn(rust_2018_idioms, unused_lifetimes)] +use std::env; use std::ffi::OsStr; -use std::path::{Path, PathBuf}; use std::process::Command; -use std::{env, eprintln}; #[cfg(not(windows))] const CARGO_CLIPPY: &str = "cargo-clippy"; #[cfg(windows)] const CARGO_CLIPPY: &str = "cargo-clippy.exe"; -// NOTE: arguments passed to the returned command will be `clippy-driver` args, not `cargo-clippy` -// args. Use `cargo_args` to pass arguments to cargo-clippy. -fn clippy_command(repo_dir: &Path, cargo_args: &[&str]) -> Command { - let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let target_dir = option_env!("CARGO_TARGET_DIR").map_or_else(|| root_dir.join("target"), PathBuf::from); - let clippy_binary = target_dir.join(env!("PROFILE")).join(CARGO_CLIPPY); - - let mut cargo_clippy = Command::new(clippy_binary); - cargo_clippy - .current_dir(repo_dir) - .env("RUST_BACKTRACE", "full") - .env("CARGO_TARGET_DIR", root_dir.join("target")) - .args(["clippy", "--all-targets", "--all-features"]) - .args(cargo_args) - .args(["--", "--cap-lints", "warn", "-Wclippy::pedantic", "-Wclippy::nursery"]); - cargo_clippy -} - -/// Return a directory with a checkout of the repository in `INTEGRATION`. -fn repo_dir(repo_name: &str) -> PathBuf { +#[cfg_attr(feature = "integration", test)] +fn integration_test() { + let repo_name = env::var("INTEGRATION").expect("`INTEGRATION` var not set"); let repo_url = format!("https://github.com/{repo_name}"); let crate_name = repo_name .split('/') @@ -57,19 +43,28 @@ fn repo_dir(repo_name: &str) -> PathBuf { .expect("unable to run git"); assert!(st.success()); - repo_dir -} + let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let target_dir = std::path::Path::new(&root_dir).join("target"); + let clippy_binary = target_dir.join(env!("PROFILE")).join(CARGO_CLIPPY); + + let output = Command::new(clippy_binary) + .current_dir(repo_dir) + .env("RUST_BACKTRACE", "full") + .env("CARGO_TARGET_DIR", target_dir) + .args([ + "clippy", + "--all-targets", + "--all-features", + "--", + "--cap-lints", + "warn", + "-Wclippy::pedantic", + "-Wclippy::nursery", + ]) + .output() + .expect("unable to run clippy"); -#[cfg_attr(feature = "integration", test)] -fn integration_test() { - let repo_name = env::var("INTEGRATION").expect("`INTEGRATION` var not set"); - let repo_dir = repo_dir(&repo_name); - let output = clippy_command(&repo_dir, &[]).output().expect("failed to run clippy"); let stderr = String::from_utf8_lossy(&output.stderr); - if !stderr.is_empty() { - eprintln!("{stderr}"); - } - if let Some(backtrace_start) = stderr.find("error: internal compiler error") { static BACKTRACE_END_MSG: &str = "end of query stack"; let backtrace_end = stderr[backtrace_start..] @@ -104,38 +99,3 @@ fn integration_test() { None => panic!("Process terminated by signal"), } } - -#[cfg_attr(feature = "integration", test)] -fn test_sysroot() { - #[track_caller] - fn verify_cmd(cmd: &mut Command) { - // Test that SYSROOT is ignored if `--sysroot` is passed explicitly. - cmd.env("SYSROOT", "/dummy/value/does/not/exist"); - // We don't actually care about emitting lints, we only want to verify clippy doesn't give a hard - // error. - cmd.arg("-Awarnings"); - let output = cmd.output().expect("failed to run clippy"); - let stderr = String::from_utf8_lossy(&output.stderr); - assert!(stderr.is_empty(), "clippy printed an error: {stderr}"); - assert!(output.status.success(), "clippy exited with an error"); - } - - let rustc = std::env::var("RUSTC").unwrap_or("rustc".to_string()); - let rustc_output = Command::new(rustc) - .args(["--print", "sysroot"]) - .output() - .expect("unable to run rustc"); - assert!(rustc_output.status.success()); - let sysroot = String::from_utf8(rustc_output.stdout).unwrap(); - let sysroot = sysroot.trim_end(); - - // This is a fairly small repo; we want to avoid checking out anything heavy twice, so just - // hard-code it. - let repo_name = "rust-lang/log"; - let repo_dir = repo_dir(repo_name); - // Pass the sysroot through RUSTFLAGS. - verify_cmd(clippy_command(&repo_dir, &["--quiet"]).env("RUSTFLAGS", format!("--sysroot={sysroot}"))); - // NOTE: we don't test passing the arguments directly to clippy-driver (with `-- --sysroot`) - // because it breaks for some reason. I (@jyn514) haven't taken time to track down the bug - // because rust-lang/rust uses RUSTFLAGS and nearly no one else uses --sysroot. -} From 5b51a8ef4f0fc5a4ba1fce1e16cea844f4f2e9a9 Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Thu, 12 Jan 2023 17:40:48 +0000 Subject: [PATCH 469/478] Exclude formatting commit from blame Excludes https://github.com/rust-lang/rust/commit/c34fbfaad38cf5829ef5cfe780dc9d58480adeaa to make Git blame a bit more useful. --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index b40066d05d35..71adf9b00911 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -6,3 +6,5 @@ a06baa56b95674fc626b3c3fd680d6a65357fe60 971c549ca334b7b7406e61e958efcca9c4152822 # refactor infcx building 283abbf0e7d20176f76006825b5c52e9a4234e4c +# format libstd/sys +c34fbfaad38cf5829ef5cfe780dc9d58480adeaa From 616b6d2be13092b53b83cd4e53e5e88f310a86fc Mon Sep 17 00:00:00 2001 From: Philipp Krones Date: Thu, 12 Jan 2023 19:00:16 +0100 Subject: [PATCH 470/478] Bump nightly version -> 2023-01-12 --- rust-toolchain | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain b/rust-toolchain index 9399d422036d..40a6f47095ec 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2022-12-29" +channel = "nightly-2023-01-12" components = ["cargo", "llvm-tools", "rust-src", "rust-std", "rustc", "rustc-dev", "rustfmt"] From cd76d574e444197d692d8652c27f869038430af1 Mon Sep 17 00:00:00 2001 From: Philipp Krones Date: Thu, 12 Jan 2023 19:12:06 +0100 Subject: [PATCH 471/478] Also add rustc_driver to clippy_utils I'm not sure why this is necessary. It worked without this for me locally, but this fails in CI. The same was done in clippy_dev --- clippy_utils/src/lib.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clippy_utils/src/lib.rs b/clippy_utils/src/lib.rs index 991be9727c21..7a4a9036dd36 100644 --- a/clippy_utils/src/lib.rs +++ b/clippy_utils/src/lib.rs @@ -22,6 +22,9 @@ extern crate rustc_ast; extern crate rustc_ast_pretty; extern crate rustc_attr; extern crate rustc_data_structures; +// The `rustc_driver` crate seems to be required in order to use the `rust_ast` crate. +#[allow(unused_extern_crates)] +extern crate rustc_driver; extern crate rustc_errors; extern crate rustc_hir; extern crate rustc_hir_typeck; From 5eed9c69ca9fa04a1417f1f14df0bb5bab2fc8c8 Mon Sep 17 00:00:00 2001 From: Jason Newcomb Date: Thu, 12 Jan 2023 13:28:22 -0500 Subject: [PATCH 472/478] Revert 4dbd8ad34e7f6820f6e9e99531353e7ffe37b76a, c7dc96155853a3919b973347277d0e9bcaaa22f0, ed519ad746e31f64c4e9255be561785612532d37 and c6477eb71188311f01f409da628fab7062697bd7 --- clippy_lints/src/dereference.rs | 8 +- clippy_lints/src/redundant_clone.rs | 4 +- clippy_utils/src/mir/possible_borrower.rs | 277 ++++++++-------------- tests/ui/needless_borrow.fixed | 13 +- tests/ui/needless_borrow.rs | 13 +- tests/ui/needless_borrow.stderr | 8 +- tests/ui/redundant_clone.fixed | 6 - tests/ui/redundant_clone.rs | 6 - tests/ui/redundant_clone.stderr | 14 +- 9 files changed, 112 insertions(+), 237 deletions(-) diff --git a/clippy_lints/src/dereference.rs b/clippy_lints/src/dereference.rs index 728941b8b3d9..7b43d8ccc67d 100644 --- a/clippy_lints/src/dereference.rs +++ b/clippy_lints/src/dereference.rs @@ -1282,10 +1282,10 @@ fn referent_used_exactly_once<'tcx>( possible_borrowers.push((body_owner_local_def_id, PossibleBorrowerMap::new(cx, mir))); } let possible_borrower = &mut possible_borrowers.last_mut().unwrap().1; - // If `place.local` were not included here, the `copyable_iterator::warn` test would fail. The - // reason is that `PossibleBorrowerVisitor::visit_terminator` considers `place.local` a possible - // borrower of itself. See the comment in that method for an explanation as to why. - possible_borrower.at_most_borrowers(cx, &[local, place.local], place.local, location) + // If `only_borrowers` were used here, the `copyable_iterator::warn` test would fail. The reason is + // that `PossibleBorrowerVisitor::visit_terminator` considers `place.local` a possible borrower of + // itself. See the comment in that method for an explanation as to why. + possible_borrower.bounded_borrowers(&[local], &[local, place.local], place.local, location) && used_exactly_once(mir, place.local).unwrap_or(false) } else { false diff --git a/clippy_lints/src/redundant_clone.rs b/clippy_lints/src/redundant_clone.rs index 0e7c5cca7240..c1677fb3da1c 100644 --- a/clippy_lints/src/redundant_clone.rs +++ b/clippy_lints/src/redundant_clone.rs @@ -131,7 +131,7 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClone { // `res = clone(arg)` can be turned into `res = move arg;` // if `arg` is the only borrow of `cloned` at this point. - if cannot_move_out || !possible_borrower.at_most_borrowers(cx, &[arg], cloned, loc) { + if cannot_move_out || !possible_borrower.only_borrowers(&[arg], cloned, loc) { continue; } @@ -178,7 +178,7 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClone { // StorageDead(pred_arg); // res = to_path_buf(cloned); // ``` - if cannot_move_out || !possible_borrower.at_most_borrowers(cx, &[arg, cloned], local, loc) { + if cannot_move_out || !possible_borrower.only_borrowers(&[arg, cloned], local, loc) { continue; } diff --git a/clippy_utils/src/mir/possible_borrower.rs b/clippy_utils/src/mir/possible_borrower.rs index 395d46e7a2f8..8c695801c73f 100644 --- a/clippy_utils/src/mir/possible_borrower.rs +++ b/clippy_utils/src/mir/possible_borrower.rs @@ -1,137 +1,89 @@ -use super::possible_origin::PossibleOriginVisitor; +use super::{possible_origin::PossibleOriginVisitor, transitive_relation::TransitiveRelation}; use crate::ty::is_copy; -use rustc_data_structures::fx::{FxHashMap, FxIndexMap}; +use rustc_data_structures::fx::FxHashMap; use rustc_index::bit_set::{BitSet, HybridBitSet}; use rustc_lint::LateContext; -use rustc_middle::mir::{ - self, visit::Visitor as _, BasicBlock, Local, Location, Mutability, Statement, StatementKind, Terminator, -}; -use rustc_middle::ty::{self, visit::TypeVisitor, TyCtxt}; -use rustc_mir_dataflow::{ - fmt::DebugWithContext, impls::MaybeStorageLive, lattice::JoinSemiLattice, Analysis, AnalysisDomain, - CallReturnPlaces, ResultsCursor, -}; -use std::borrow::Cow; +use rustc_middle::mir::{self, visit::Visitor as _, Mutability}; +use rustc_middle::ty::{self, visit::TypeVisitor}; +use rustc_mir_dataflow::{impls::MaybeStorageLive, Analysis, ResultsCursor}; use std::ops::ControlFlow; /// Collects the possible borrowers of each local. /// For example, `b = &a; c = &a;` will make `b` and (transitively) `c` /// possible borrowers of `a`. #[allow(clippy::module_name_repetitions)] -struct PossibleBorrowerAnalysis<'b, 'tcx> { - tcx: TyCtxt<'tcx>, +struct PossibleBorrowerVisitor<'a, 'b, 'tcx> { + possible_borrower: TransitiveRelation, body: &'b mir::Body<'tcx>, + cx: &'a LateContext<'tcx>, possible_origin: FxHashMap>, } -#[derive(Clone, Debug, Eq, PartialEq)] -struct PossibleBorrowerState { - map: FxIndexMap>, - domain_size: usize, -} - -impl PossibleBorrowerState { - fn new(domain_size: usize) -> Self { - Self { - map: FxIndexMap::default(), - domain_size, - } - } - - #[allow(clippy::similar_names)] - fn add(&mut self, borrowed: Local, borrower: Local) { - self.map - .entry(borrowed) - .or_insert(BitSet::new_empty(self.domain_size)) - .insert(borrower); - } -} - -impl DebugWithContext for PossibleBorrowerState { - fn fmt_with(&self, _ctxt: &C, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - <_ as std::fmt::Debug>::fmt(self, f) - } - fn fmt_diff_with(&self, _old: &Self, _ctxt: &C, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - unimplemented!() - } -} - -impl JoinSemiLattice for PossibleBorrowerState { - fn join(&mut self, other: &Self) -> bool { - let mut changed = false; - for (&borrowed, borrowers) in other.map.iter() { - if !borrowers.is_empty() { - changed |= self - .map - .entry(borrowed) - .or_insert(BitSet::new_empty(self.domain_size)) - .union(borrowers); - } - } - changed - } -} - -impl<'b, 'tcx> AnalysisDomain<'tcx> for PossibleBorrowerAnalysis<'b, 'tcx> { - type Domain = PossibleBorrowerState; - - const NAME: &'static str = "possible_borrower"; - - fn bottom_value(&self, body: &mir::Body<'tcx>) -> Self::Domain { - PossibleBorrowerState::new(body.local_decls.len()) - } - - fn initialize_start_block(&self, _body: &mir::Body<'tcx>, _entry_set: &mut Self::Domain) {} -} - -impl<'b, 'tcx> PossibleBorrowerAnalysis<'b, 'tcx> { +impl<'a, 'b, 'tcx> PossibleBorrowerVisitor<'a, 'b, 'tcx> { fn new( - tcx: TyCtxt<'tcx>, + cx: &'a LateContext<'tcx>, body: &'b mir::Body<'tcx>, possible_origin: FxHashMap>, ) -> Self { Self { - tcx, + possible_borrower: TransitiveRelation::default(), + cx, body, possible_origin, } } + + fn into_map( + self, + cx: &'a LateContext<'tcx>, + maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, + ) -> PossibleBorrowerMap<'b, 'tcx> { + let mut map = FxHashMap::default(); + for row in (1..self.body.local_decls.len()).map(mir::Local::from_usize) { + if is_copy(cx, self.body.local_decls[row].ty) { + continue; + } + + let mut borrowers = self.possible_borrower.reachable_from(row, self.body.local_decls.len()); + borrowers.remove(mir::Local::from_usize(0)); + if !borrowers.is_empty() { + map.insert(row, borrowers); + } + } + + let bs = BitSet::new_empty(self.body.local_decls.len()); + PossibleBorrowerMap { + map, + maybe_live, + bitset: (bs.clone(), bs), + } + } } -impl<'b, 'tcx> Analysis<'tcx> for PossibleBorrowerAnalysis<'b, 'tcx> { - fn apply_call_return_effect( - &self, - _state: &mut Self::Domain, - _block: BasicBlock, - _return_places: CallReturnPlaces<'_, 'tcx>, - ) { - } - - fn apply_statement_effect(&self, state: &mut Self::Domain, statement: &Statement<'tcx>, _location: Location) { - if let StatementKind::Assign(box (place, rvalue)) = &statement.kind { - let lhs = place.local; - match rvalue { - mir::Rvalue::Ref(_, _, borrowed) => { - state.add(borrowed.local, lhs); - }, - other => { - if ContainsRegion - .visit_ty(place.ty(&self.body.local_decls, self.tcx).ty) - .is_continue() - { - return; +impl<'a, 'b, 'tcx> mir::visit::Visitor<'tcx> for PossibleBorrowerVisitor<'a, 'b, 'tcx> { + fn visit_assign(&mut self, place: &mir::Place<'tcx>, rvalue: &mir::Rvalue<'_>, _location: mir::Location) { + let lhs = place.local; + match rvalue { + mir::Rvalue::Ref(_, _, borrowed) => { + self.possible_borrower.add(borrowed.local, lhs); + }, + other => { + if ContainsRegion + .visit_ty(place.ty(&self.body.local_decls, self.cx.tcx).ty) + .is_continue() + { + return; + } + rvalue_locals(other, |rhs| { + if lhs != rhs { + self.possible_borrower.add(rhs, lhs); } - rvalue_locals(other, |rhs| { - if lhs != rhs { - state.add(rhs, lhs); - } - }); - }, - } + }); + }, } } - fn apply_terminator_effect(&self, state: &mut Self::Domain, terminator: &Terminator<'tcx>, _location: Location) { + fn visit_terminator(&mut self, terminator: &mir::Terminator<'_>, _loc: mir::Location) { if let mir::TerminatorKind::Call { args, destination: mir::Place { local: dest, .. }, @@ -171,10 +123,10 @@ impl<'b, 'tcx> Analysis<'tcx> for PossibleBorrowerAnalysis<'b, 'tcx> { for y in mutable_variables { for x in &immutable_borrowers { - state.add(*x, y); + self.possible_borrower.add(*x, y); } for x in &mutable_borrowers { - state.add(*x, y); + self.possible_borrower.add(*x, y); } } } @@ -210,98 +162,73 @@ fn rvalue_locals(rvalue: &mir::Rvalue<'_>, mut visit: impl FnMut(mir::Local)) { } } -/// Result of `PossibleBorrowerAnalysis`. +/// Result of `PossibleBorrowerVisitor`. #[allow(clippy::module_name_repetitions)] pub struct PossibleBorrowerMap<'b, 'tcx> { - body: &'b mir::Body<'tcx>, - possible_borrower: ResultsCursor<'b, 'tcx, PossibleBorrowerAnalysis<'b, 'tcx>>, - maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive<'b>>, - pushed: BitSet, - stack: Vec, + /// Mapping `Local -> its possible borrowers` + pub map: FxHashMap>, + maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, + // Caches to avoid allocation of `BitSet` on every query + pub bitset: (BitSet, BitSet), } -impl<'b, 'tcx> PossibleBorrowerMap<'b, 'tcx> { - pub fn new(cx: &LateContext<'tcx>, mir: &'b mir::Body<'tcx>) -> Self { +impl<'a, 'b, 'tcx> PossibleBorrowerMap<'b, 'tcx> { + pub fn new(cx: &'a LateContext<'tcx>, mir: &'b mir::Body<'tcx>) -> Self { let possible_origin = { let mut vis = PossibleOriginVisitor::new(mir); vis.visit_body(mir); vis.into_map(cx) }; - let possible_borrower = PossibleBorrowerAnalysis::new(cx.tcx, mir, possible_origin) + let maybe_storage_live_result = MaybeStorageLive::new(BitSet::new_empty(mir.local_decls.len())) .into_engine(cx.tcx, mir) - .pass_name("possible_borrower") + .pass_name("redundant_clone") .iterate_to_fixpoint() .into_results_cursor(mir); - let maybe_live = MaybeStorageLive::new(Cow::Owned(BitSet::new_empty(mir.local_decls.len()))) - .into_engine(cx.tcx, mir) - .pass_name("possible_borrower") - .iterate_to_fixpoint() - .into_results_cursor(mir); - PossibleBorrowerMap { - body: mir, - possible_borrower, - maybe_live, - pushed: BitSet::new_empty(mir.local_decls.len()), - stack: Vec::with_capacity(mir.local_decls.len()), - } + let mut vis = PossibleBorrowerVisitor::new(cx, mir, possible_origin); + vis.visit_body(mir); + vis.into_map(cx, maybe_storage_live_result) } - /// Returns true if the set of borrowers of `borrowed` living at `at` includes no more than - /// `borrowers`. - /// Notes: - /// 1. It would be nice if `PossibleBorrowerMap` could store `cx` so that `at_most_borrowers` - /// would not require it to be passed in. But a `PossibleBorrowerMap` is stored in `LintPass` - /// `Dereferencing`, which outlives any `LateContext`. - /// 2. In all current uses of `at_most_borrowers`, `borrowers` is a slice of at most two - /// elements. Thus, `borrowers.contains(...)` is effectively a constant-time operation. If - /// `at_most_borrowers`'s uses were to expand beyond this, its implementation might have to be - /// adjusted. - pub fn at_most_borrowers( + /// Returns true if the set of borrowers of `borrowed` living at `at` matches with `borrowers`. + pub fn only_borrowers(&mut self, borrowers: &[mir::Local], borrowed: mir::Local, at: mir::Location) -> bool { + self.bounded_borrowers(borrowers, borrowers, borrowed, at) + } + + /// Returns true if the set of borrowers of `borrowed` living at `at` includes at least `below` + /// but no more than `above`. + pub fn bounded_borrowers( &mut self, - cx: &LateContext<'tcx>, - borrowers: &[mir::Local], + below: &[mir::Local], + above: &[mir::Local], borrowed: mir::Local, at: mir::Location, ) -> bool { - if is_copy(cx, self.body.local_decls[borrowed].ty) { - return true; - } + self.maybe_live.seek_after_primary_effect(at); - self.possible_borrower.seek_before_primary_effect(at); - self.maybe_live.seek_before_primary_effect(at); - - let possible_borrower = &self.possible_borrower.get().map; - let maybe_live = &self.maybe_live; - - self.pushed.clear(); - self.stack.clear(); - - if let Some(borrowers) = possible_borrower.get(&borrowed) { - for b in borrowers.iter() { - if self.pushed.insert(b) { - self.stack.push(b); - } + self.bitset.0.clear(); + let maybe_live = &mut self.maybe_live; + if let Some(bitset) = self.map.get(&borrowed) { + for b in bitset.iter().filter(move |b| maybe_live.contains(*b)) { + self.bitset.0.insert(b); } } else { - // Nothing borrows `borrowed` at `at`. - return true; + return false; } - while let Some(borrower) = self.stack.pop() { - if maybe_live.contains(borrower) && !borrowers.contains(&borrower) { - return false; - } - - if let Some(borrowers) = possible_borrower.get(&borrower) { - for b in borrowers.iter() { - if self.pushed.insert(b) { - self.stack.push(b); - } - } - } + self.bitset.1.clear(); + for b in below { + self.bitset.1.insert(*b); } - true + if !self.bitset.0.superset(&self.bitset.1) { + return false; + } + + for b in above { + self.bitset.0.remove(*b); + } + + self.bitset.0.is_empty() } pub fn local_is_alive_at(&mut self, local: mir::Local, at: mir::Location) -> bool { diff --git a/tests/ui/needless_borrow.fixed b/tests/ui/needless_borrow.fixed index 31e1cb6c3d7f..4cb7f6b687f1 100644 --- a/tests/ui/needless_borrow.fixed +++ b/tests/ui/needless_borrow.fixed @@ -1,5 +1,5 @@ // run-rustfix -#![feature(custom_inner_attributes, lint_reasons, rustc_private)] +#![feature(lint_reasons)] #![allow( unused, clippy::uninlined_format_args, @@ -491,14 +491,3 @@ mod issue_9782_method_variant { S.foo::<&[u8; 100]>(&a); } } - -extern crate rustc_lint; -extern crate rustc_span; - -#[allow(dead_code)] -mod span_lint { - use rustc_lint::{LateContext, Lint, LintContext}; - fn foo(cx: &LateContext<'_>, lint: &'static Lint) { - cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(String::new())); - } -} diff --git a/tests/ui/needless_borrow.rs b/tests/ui/needless_borrow.rs index 55c2738fcf27..9a01190ed8db 100644 --- a/tests/ui/needless_borrow.rs +++ b/tests/ui/needless_borrow.rs @@ -1,5 +1,5 @@ // run-rustfix -#![feature(custom_inner_attributes, lint_reasons, rustc_private)] +#![feature(lint_reasons)] #![allow( unused, clippy::uninlined_format_args, @@ -491,14 +491,3 @@ mod issue_9782_method_variant { S.foo::<&[u8; 100]>(&a); } } - -extern crate rustc_lint; -extern crate rustc_span; - -#[allow(dead_code)] -mod span_lint { - use rustc_lint::{LateContext, Lint, LintContext}; - fn foo(cx: &LateContext<'_>, lint: &'static Lint) { - cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(&String::new())); - } -} diff --git a/tests/ui/needless_borrow.stderr b/tests/ui/needless_borrow.stderr index 98a48d68317b..d26c317124b8 100644 --- a/tests/ui/needless_borrow.stderr +++ b/tests/ui/needless_borrow.stderr @@ -216,11 +216,5 @@ error: the borrowed expression implements the required traits LL | foo(&a); | ^^ help: change this to: `a` -error: the borrowed expression implements the required traits - --> $DIR/needless_borrow.rs:502:85 - | -LL | cx.struct_span_lint(lint, rustc_span::Span::default(), "", |diag| diag.note(&String::new())); - | ^^^^^^^^^^^^^^ help: change this to: `String::new()` - -error: aborting due to 37 previous errors +error: aborting due to 36 previous errors diff --git a/tests/ui/redundant_clone.fixed b/tests/ui/redundant_clone.fixed index a157b6a6f9ad..00b427450935 100644 --- a/tests/ui/redundant_clone.fixed +++ b/tests/ui/redundant_clone.fixed @@ -239,9 +239,3 @@ fn false_negative_5707() { let _z = x.clone(); // pr 7346 can't lint on `x` drop(y); } - -#[allow(unused, clippy::manual_retain)] -fn possible_borrower_improvements() { - let mut s = String::from("foobar"); - s = s.chars().filter(|&c| c != 'o').collect(); -} diff --git a/tests/ui/redundant_clone.rs b/tests/ui/redundant_clone.rs index 430672e8b8df..f899127db8d0 100644 --- a/tests/ui/redundant_clone.rs +++ b/tests/ui/redundant_clone.rs @@ -239,9 +239,3 @@ fn false_negative_5707() { let _z = x.clone(); // pr 7346 can't lint on `x` drop(y); } - -#[allow(unused, clippy::manual_retain)] -fn possible_borrower_improvements() { - let mut s = String::from("foobar"); - s = s.chars().filter(|&c| c != 'o').to_owned().collect(); -} diff --git a/tests/ui/redundant_clone.stderr b/tests/ui/redundant_clone.stderr index 1bacc2c76af1..782590034d05 100644 --- a/tests/ui/redundant_clone.stderr +++ b/tests/ui/redundant_clone.stderr @@ -179,17 +179,5 @@ note: this value is dropped without further use LL | foo(&x.clone(), move || { | ^ -error: redundant clone - --> $DIR/redundant_clone.rs:246:40 - | -LL | s = s.chars().filter(|&c| c != 'o').to_owned().collect(); - | ^^^^^^^^^^^ help: remove this - | -note: this value is dropped without further use - --> $DIR/redundant_clone.rs:246:9 - | -LL | s = s.chars().filter(|&c| c != 'o').to_owned().collect(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 16 previous errors +error: aborting due to 15 previous errors From 757e944ba6ace471727cb320c75a52b321c05322 Mon Sep 17 00:00:00 2001 From: Jason Newcomb Date: Thu, 12 Jan 2023 13:29:23 -0500 Subject: [PATCH 473/478] Adjust old code for newer rustc version. --- clippy_utils/src/mir/possible_borrower.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/clippy_utils/src/mir/possible_borrower.rs b/clippy_utils/src/mir/possible_borrower.rs index 8c695801c73f..9adae7733894 100644 --- a/clippy_utils/src/mir/possible_borrower.rs +++ b/clippy_utils/src/mir/possible_borrower.rs @@ -6,6 +6,7 @@ use rustc_lint::LateContext; use rustc_middle::mir::{self, visit::Visitor as _, Mutability}; use rustc_middle::ty::{self, visit::TypeVisitor}; use rustc_mir_dataflow::{impls::MaybeStorageLive, Analysis, ResultsCursor}; +use std::borrow::Cow; use std::ops::ControlFlow; /// Collects the possible borrowers of each local. @@ -36,7 +37,7 @@ impl<'a, 'b, 'tcx> PossibleBorrowerVisitor<'a, 'b, 'tcx> { fn into_map( self, cx: &'a LateContext<'tcx>, - maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, + maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive<'tcx>>, ) -> PossibleBorrowerMap<'b, 'tcx> { let mut map = FxHashMap::default(); for row in (1..self.body.local_decls.len()).map(mir::Local::from_usize) { @@ -167,7 +168,7 @@ fn rvalue_locals(rvalue: &mir::Rvalue<'_>, mut visit: impl FnMut(mir::Local)) { pub struct PossibleBorrowerMap<'b, 'tcx> { /// Mapping `Local -> its possible borrowers` pub map: FxHashMap>, - maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive>, + maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive<'tcx>>, // Caches to avoid allocation of `BitSet` on every query pub bitset: (BitSet, BitSet), } @@ -179,7 +180,7 @@ impl<'a, 'b, 'tcx> PossibleBorrowerMap<'b, 'tcx> { vis.visit_body(mir); vis.into_map(cx) }; - let maybe_storage_live_result = MaybeStorageLive::new(BitSet::new_empty(mir.local_decls.len())) + let maybe_storage_live_result = MaybeStorageLive::new(Cow::Owned(BitSet::new_empty(mir.local_decls.len()))) .into_engine(cx.tcx, mir) .pass_name("redundant_clone") .iterate_to_fixpoint() From 9742679ebed966c62bf457df8353b9a5c6c22d29 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 13 Jan 2023 11:45:34 +0100 Subject: [PATCH 474/478] Preparing for merge from rustc --- src/tools/miri/rust-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version index cf6d9c280804..d42c0367b77d 100644 --- a/src/tools/miri/rust-version +++ b/src/tools/miri/rust-version @@ -1 +1 @@ -c54c8cbac882e149e04a9e1f2d146fd548ae30ae +279f1c9d8c26a8d227ae8ab806d262bb784b251b From 6a28fb42a8b8f1f67fe854c2206148171e434d73 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 16 Nov 2022 20:34:16 +0000 Subject: [PATCH 475/478] Remove double spaces after dots in comments --- compiler/rustc_abi/src/lib.rs | 4 +-- compiler/rustc_ast/src/util/parser.rs | 2 +- compiler/rustc_ast_lowering/src/index.rs | 2 +- compiler/rustc_ast_lowering/src/item.rs | 2 +- compiler/rustc_ast_lowering/src/lib.rs | 8 +++--- .../rustc_ast_pretty/src/pprust/state/expr.rs | 4 +-- compiler/rustc_borrowck/src/lib.rs | 2 +- .../rustc_borrowck/src/member_constraints.rs | 4 +-- compiler/rustc_borrowck/src/nll.rs | 2 +- compiler/rustc_borrowck/src/place_ext.rs | 2 +- .../rustc_borrowck/src/region_infer/mod.rs | 6 ++-- .../src/type_check/constraint_conversion.rs | 2 +- .../src/type_check/free_region_relations.rs | 4 +-- .../src/type_check/liveness/trace.rs | 2 +- compiler/rustc_borrowck/src/type_check/mod.rs | 2 +- .../rustc_borrowck/src/universal_regions.rs | 2 +- .../src/deriving/clone.rs | 2 +- compiler/rustc_builtin_macros/src/env.rs | 2 +- compiler/rustc_builtin_macros/src/format.rs | 2 +- .../src/format_foreign.rs | 2 +- .../rustc_codegen_cranelift/src/constant.rs | 2 +- compiler/rustc_codegen_llvm/src/abi.rs | 2 +- compiler/rustc_codegen_llvm/src/asm.rs | 2 +- .../rustc_codegen_llvm/src/back/archive.rs | 6 ++-- compiler/rustc_codegen_llvm/src/back/write.rs | 2 +- compiler/rustc_codegen_llvm/src/callee.rs | 4 +-- compiler/rustc_codegen_llvm/src/consts.rs | 4 +-- compiler/rustc_codegen_llvm/src/intrinsic.rs | 4 +-- compiler/rustc_codegen_llvm/src/type_of.rs | 4 +-- compiler/rustc_codegen_ssa/src/back/link.rs | 4 +-- compiler/rustc_codegen_ssa/src/back/linker.rs | 2 +- compiler/rustc_codegen_ssa/src/back/write.rs | 14 +++++----- .../rustc_codegen_ssa/src/codegen_attrs.rs | 4 +-- .../rustc_codegen_ssa/src/mir/debuginfo.rs | 4 +-- .../src/const_eval/machine.rs | 2 +- .../src/interpret/eval_context.rs | 4 +-- .../rustc_const_eval/src/interpret/intern.rs | 10 +++---- .../rustc_const_eval/src/interpret/machine.rs | 4 +-- .../rustc_const_eval/src/interpret/memory.rs | 4 +-- .../rustc_const_eval/src/interpret/operand.rs | 2 +- .../rustc_const_eval/src/interpret/place.rs | 6 ++-- .../src/interpret/terminator.rs | 8 +++--- .../src/interpret/validity.rs | 12 ++++---- compiler/rustc_data_structures/src/frozen.rs | 2 +- .../src/graph/scc/tests.rs | 2 +- .../src/transitive_relation.rs | 2 +- compiler/rustc_driver/README.md | 2 +- compiler/rustc_error_codes/src/error_codes.rs | 4 +-- .../src/error_codes/E0387.md | 2 +- .../src/error_codes/E0713.md | 2 +- .../src/error_codes/E0714.md | 2 +- compiler/rustc_errors/src/diagnostic.rs | 6 ++-- compiler/rustc_errors/src/emitter.rs | 6 ++-- compiler/rustc_expand/src/mbe/quoted.rs | 4 +-- .../rustc_expand/src/proc_macro_server.rs | 2 +- compiler/rustc_hir/src/def.rs | 2 +- compiler/rustc_hir/src/hir.rs | 4 +-- .../rustc_hir_analysis/src/astconv/errors.rs | 2 +- .../src/astconv/generics.rs | 14 +++++----- .../rustc_hir_analysis/src/astconv/mod.rs | 6 ++-- .../src/check/compare_impl_item.rs | 10 +++---- .../rustc_hir_analysis/src/check/dropck.rs | 2 +- compiler/rustc_hir_analysis/src/check/mod.rs | 18 ++++++------ .../rustc_hir_analysis/src/check/region.rs | 2 +- .../rustc_hir_analysis/src/check_unused.rs | 2 +- .../src/coherence/builtin.rs | 2 +- .../rustc_hir_analysis/src/coherence/mod.rs | 2 +- .../src/collect/lifetimes.rs | 12 ++++---- .../src/collect/predicates_of.rs | 2 +- compiler/rustc_hir_analysis/src/lib.rs | 8 +++--- .../src/outlives/implicit_infer.rs | 2 +- .../rustc_hir_analysis/src/outlives/utils.rs | 8 +++--- .../rustc_hir_analysis/src/variance/solve.rs | 2 +- compiler/rustc_hir_typeck/src/closure.rs | 2 +- compiler/rustc_hir_typeck/src/coercion.rs | 12 ++++---- compiler/rustc_hir_typeck/src/expr.rs | 6 ++-- compiler/rustc_hir_typeck/src/fallback.rs | 10 +++---- .../src/fn_ctxt/suggestions.rs | 4 +-- .../drop_ranges/record_consumed_borrow.rs | 2 +- .../src/mem_categorization.rs | 2 +- compiler/rustc_hir_typeck/src/method/mod.rs | 2 +- .../rustc_incremental/src/assert_dep_graph.rs | 2 +- .../src/persist/dirty_clean.rs | 2 +- compiler/rustc_infer/src/infer/combine.rs | 2 +- .../nice_region_error/placeholder_error.rs | 2 +- compiler/rustc_infer/src/infer/lattice.rs | 2 +- .../src/infer/lexical_region_resolve/mod.rs | 6 ++-- compiler/rustc_infer/src/infer/mod.rs | 6 ++-- .../rustc_infer/src/infer/nll_relate/mod.rs | 4 +-- .../rustc_infer/src/infer/opaque_types.rs | 4 +-- .../src/infer/outlives/components.rs | 4 +-- .../src/infer/outlives/obligations.rs | 2 +- .../rustc_infer/src/infer/type_variable.rs | 2 +- compiler/rustc_infer/src/traits/util.rs | 2 +- compiler/rustc_lexer/src/lib.rs | 2 +- compiler/rustc_lexer/src/unescape.rs | 2 +- compiler/rustc_lint/src/levels.rs | 4 +-- compiler/rustc_lint/src/lints.rs | 2 +- .../rustc_llvm/llvm-wrapper/PassWrapper.cpp | 4 +-- compiler/rustc_metadata/src/fs.rs | 2 +- compiler/rustc_metadata/src/locator.rs | 2 +- compiler/rustc_metadata/src/native_libs.rs | 4 +-- compiler/rustc_metadata/src/rmeta/encoder.rs | 2 +- compiler/rustc_middle/src/hir/map/mod.rs | 4 +-- compiler/rustc_middle/src/hir/mod.rs | 2 +- .../rustc_middle/src/mir/interpret/mod.rs | 6 ++-- compiler/rustc_middle/src/mir/mod.rs | 2 +- compiler/rustc_middle/src/mir/terminator.rs | 2 +- compiler/rustc_middle/src/ty/assoc.rs | 2 +- compiler/rustc_middle/src/ty/context.rs | 4 +-- compiler/rustc_middle/src/ty/fold.rs | 2 +- compiler/rustc_middle/src/ty/instance.rs | 4 +-- compiler/rustc_middle/src/ty/layout.rs | 2 +- compiler/rustc_middle/src/ty/mod.rs | 8 +++--- compiler/rustc_middle/src/ty/print/pretty.rs | 4 +-- .../rustc_middle/src/ty/structural_impls.rs | 4 +-- compiler/rustc_middle/src/ty/sty.rs | 2 +- .../rustc_middle/src/ty/typeck_results.rs | 6 ++-- .../src/build/expr/as_operand.rs | 2 +- .../rustc_mir_build/src/build/expr/stmt.rs | 2 +- .../rustc_mir_build/src/build/matches/mod.rs | 4 +-- .../rustc_mir_build/src/build/matches/test.rs | 4 +-- compiler/rustc_mir_build/src/build/scope.rs | 4 +-- compiler/rustc_mir_build/src/lints.rs | 2 +- compiler/rustc_mir_dataflow/src/impls/mod.rs | 2 +- compiler/rustc_mir_transform/src/add_retag.rs | 2 +- compiler/rustc_mir_transform/src/sroa.rs | 2 +- compiler/rustc_parse/src/parser/mod.rs | 4 +-- compiler/rustc_passes/src/liveness.rs | 28 +++++++++---------- compiler/rustc_passes/src/stability.rs | 2 +- .../rustc_query_system/src/dep_graph/graph.rs | 10 +++---- .../src/dep_graph/serialized.rs | 4 +-- .../rustc_query_system/src/query/caches.rs | 4 +-- compiler/rustc_resolve/src/late.rs | 12 ++++---- compiler/rustc_session/src/config.rs | 4 +-- compiler/rustc_session/src/cstore.rs | 2 +- compiler/rustc_session/src/filesearch.rs | 2 +- compiler/rustc_session/src/output.rs | 4 +-- compiler/rustc_session/src/session.rs | 2 +- compiler/rustc_span/src/hygiene.rs | 2 +- .../src/spec/aarch64_apple_darwin.rs | 2 +- .../src/spec/i686_apple_darwin.rs | 2 +- .../rustc_target/src/spec/illumos_base.rs | 12 ++++---- compiler/rustc_target/src/spec/mod.rs | 2 +- .../src/spec/sparcv9_sun_solaris.rs | 2 +- .../src/spec/x86_64_apple_darwin.rs | 2 +- .../src/traits/error_reporting/mod.rs | 2 +- .../src/traits/error_reporting/suggestions.rs | 4 +-- .../src/traits/object_safety.rs | 2 +- .../src/traits/project.rs | 4 +-- .../src/traits/select/candidate_assembly.rs | 2 +- .../src/traits/select/confirmation.rs | 6 ++-- .../src/traits/select/mod.rs | 10 +++---- .../traits/specialize/specialization_graph.rs | 2 +- .../rustc_trait_selection/src/traits/wf.rs | 2 +- compiler/rustc_traits/src/codegen.rs | 2 +- compiler/rustc_type_ir/src/sty.rs | 2 +- 157 files changed, 313 insertions(+), 313 deletions(-) diff --git a/compiler/rustc_abi/src/lib.rs b/compiler/rustc_abi/src/lib.rs index 4582d3c6badf..accdb6da782d 100644 --- a/compiler/rustc_abi/src/lib.rs +++ b/compiler/rustc_abi/src/lib.rs @@ -1263,8 +1263,8 @@ pub enum Variants { /// Enum-likes with more than one inhabited variant: each variant comes with /// a *discriminant* (usually the same as the variant index but the user can - /// assign explicit discriminant values). That discriminant is encoded - /// as a *tag* on the machine. The layout of each variant is + /// assign explicit discriminant values). That discriminant is encoded + /// as a *tag* on the machine. The layout of each variant is /// a struct, and they all have space reserved for the tag. /// For enums, the tag is the sole field of the layout. Multiple { diff --git a/compiler/rustc_ast/src/util/parser.rs b/compiler/rustc_ast/src/util/parser.rs index 819f1884a069..4f7099c7be8a 100644 --- a/compiler/rustc_ast/src/util/parser.rs +++ b/compiler/rustc_ast/src/util/parser.rs @@ -304,7 +304,7 @@ impl ExprPrecedence { | ExprPrecedence::Yeet => PREC_JUMP, // `Range` claims to have higher precedence than `Assign`, but `x .. x = x` fails to - // parse, instead of parsing as `(x .. x) = x`. Giving `Range` a lower precedence + // parse, instead of parsing as `(x .. x) = x`. Giving `Range` a lower precedence // ensures that `pprust` will add parentheses in the right places to get the desired // parse. ExprPrecedence::Range => PREC_RANGE, diff --git a/compiler/rustc_ast_lowering/src/index.rs b/compiler/rustc_ast_lowering/src/index.rs index fe0bd43815d7..63033085bec6 100644 --- a/compiler/rustc_ast_lowering/src/index.rs +++ b/compiler/rustc_ast_lowering/src/index.rs @@ -38,7 +38,7 @@ pub(super) fn index_hir<'hir>( ) -> (IndexVec>>, FxHashMap) { let mut nodes = IndexVec::new(); // This node's parent should never be accessed: the owner's parent is computed by the - // hir_owner_parent query. Make it invalid (= ItemLocalId::MAX) to force an ICE whenever it is + // hir_owner_parent query. Make it invalid (= ItemLocalId::MAX) to force an ICE whenever it is // used. nodes.push(Some(ParentedNode { parent: ItemLocalId::INVALID, node: item.into() })); let mut collector = NodeCollector { diff --git a/compiler/rustc_ast_lowering/src/item.rs b/compiler/rustc_ast_lowering/src/item.rs index 065779d0670c..5d2589cb2b2f 100644 --- a/compiler/rustc_ast_lowering/src/item.rs +++ b/compiler/rustc_ast_lowering/src/item.rs @@ -523,7 +523,7 @@ impl<'hir> LoweringContext<'_, 'hir> { // // The first two are produced by recursively invoking // `lower_use_tree` (and indeed there may be things - // like `use foo::{a::{b, c}}` and so forth). They + // like `use foo::{a::{b, c}}` and so forth). They // wind up being directly added to // `self.items`. However, the structure of this // function also requires us to return one item, and diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index 2e135aafb1e0..1f3473dcf229 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -663,7 +663,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { self.arena.alloc(hir::OwnerInfo { nodes, parenting, attrs, trait_map }) } - /// Hash the HIR node twice, one deep and one shallow hash. This allows to differentiate + /// Hash the HIR node twice, one deep and one shallow hash. This allows to differentiate /// queries which depend on the full HIR tree and those which only depend on the item signature. fn hash_owner( &mut self, @@ -1194,7 +1194,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { itctx: &ImplTraitContext, ) -> hir::Ty<'hir> { // Check whether we should interpret this as a bare trait object. - // This check mirrors the one in late resolution. We only introduce this special case in + // This check mirrors the one in late resolution. We only introduce this special case in // the rare occurrence we need to lower `Fresh` anonymous lifetimes. // The other cases when a qpath should be opportunistically made a trait object are handled // by `ty_path`. @@ -1919,7 +1919,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { this.with_remapping(new_remapping, |this| { // We have to be careful to get elision right here. The // idea is that we create a lifetime parameter for each - // lifetime in the return type. So, given a return type + // lifetime in the return type. So, given a return type // like `async fn foo(..) -> &[&u32]`, we lower to `impl // Future`. // @@ -2013,7 +2013,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { // Create the `Foo<...>` reference itself. Note that the `type // Foo = impl Trait` is, internally, created as a child of the - // async fn, so the *type parameters* are inherited. It's + // async fn, so the *type parameters* are inherited. It's // only the lifetime parameters that we must supply. let opaque_ty_ref = hir::TyKind::OpaqueDef( hir::ItemId { owner_id: hir::OwnerId { def_id: opaque_ty_def_id } }, diff --git a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs index b125c6407d05..2a18e5164a30 100644 --- a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs +++ b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs @@ -473,10 +473,10 @@ impl<'a> State<'a> { self.word("]"); } ast::ExprKind::Range(start, end, limits) => { - // Special case for `Range`. `AssocOp` claims that `Range` has higher precedence + // Special case for `Range`. `AssocOp` claims that `Range` has higher precedence // than `Assign`, but `x .. x = x` gives a parse error instead of `x .. (x = x)`. // Here we use a fake precedence value so that any child with lower precedence than - // a "normal" binop gets parenthesized. (`LOr` is the lowest-precedence binop.) + // a "normal" binop gets parenthesized. (`LOr` is the lowest-precedence binop.) let fake_prec = AssocOp::LOr.precedence() as i8; if let Some(e) = start { self.print_expr_maybe_paren(e, fake_prec); diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs index 278ffed07477..2384f851a662 100644 --- a/compiler/rustc_borrowck/src/lib.rs +++ b/compiler/rustc_borrowck/src/lib.rs @@ -2173,7 +2173,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { // `self.foo` -- we want to double // check that the location `*self` // is mutable (i.e., this is not a - // `Fn` closure). But if that + // `Fn` closure). But if that // check succeeds, we want to // *blame* the mutability on // `place` (that is, diff --git a/compiler/rustc_borrowck/src/member_constraints.rs b/compiler/rustc_borrowck/src/member_constraints.rs index b63e286676ff..4af324f740ae 100644 --- a/compiler/rustc_borrowck/src/member_constraints.rs +++ b/compiler/rustc_borrowck/src/member_constraints.rs @@ -109,7 +109,7 @@ where R1: Copy + Hash + Eq, { /// Remap the "member region" key using `map_fn`, producing a new - /// member constraint set. This is used in the NLL code to map from + /// member constraint set. This is used in the NLL code to map from /// the original `RegionVid` to an scc index. In some cases, we /// may have multiple `R1` values mapping to the same `R2` key -- that /// is ok, the two sets will be merged. @@ -158,7 +158,7 @@ where } /// Iterate down the constraint indices associated with a given - /// peek-region. You can then use `choice_regions` and other + /// peek-region. You can then use `choice_regions` and other /// methods to access data. pub(crate) fn indices( &self, diff --git a/compiler/rustc_borrowck/src/nll.rs b/compiler/rustc_borrowck/src/nll.rs index e379e6470623..b2d92d0dba7a 100644 --- a/compiler/rustc_borrowck/src/nll.rs +++ b/compiler/rustc_borrowck/src/nll.rs @@ -385,7 +385,7 @@ pub(super) fn dump_annotation<'tcx>( // When the enclosing function is tagged with `#[rustc_regions]`, // we dump out various bits of state as warnings. This is useful - // for verifying that the compiler is behaving as expected. These + // for verifying that the compiler is behaving as expected. These // warnings focus on the closure region requirements -- for // viewing the intraprocedural state, the -Zdump-mir output is // better. diff --git a/compiler/rustc_borrowck/src/place_ext.rs b/compiler/rustc_borrowck/src/place_ext.rs index 9f6b1fdfcb54..85d207b2fc9a 100644 --- a/compiler/rustc_borrowck/src/place_ext.rs +++ b/compiler/rustc_borrowck/src/place_ext.rs @@ -63,7 +63,7 @@ impl<'tcx> PlaceExt<'tcx> for Place<'tcx> { ty::RawPtr(..) | ty::Ref(_, _, hir::Mutability::Not) => { // For both derefs of raw pointers and `&T` // references, the original path is `Copy` and - // therefore not significant. In particular, + // therefore not significant. In particular, // there is nothing the user can do to the // original path that would invalidate the // newly created reference -- and if there diff --git a/compiler/rustc_borrowck/src/region_infer/mod.rs b/compiler/rustc_borrowck/src/region_infer/mod.rs index 308f6e19a73e..89788c16cbb0 100644 --- a/compiler/rustc_borrowck/src/region_infer/mod.rs +++ b/compiler/rustc_borrowck/src/region_infer/mod.rs @@ -680,7 +680,7 @@ impl<'tcx> RegionInferenceContext<'tcx> { /// enforce the constraint). /// /// The current value of `scc` at the time the method is invoked - /// is considered a *lower bound*. If possible, we will modify + /// is considered a *lower bound*. If possible, we will modify /// the constraint to set it equal to one of the option regions. /// If we make any changes, returns true, else false. #[instrument(skip(self, member_constraint_index), level = "debug")] @@ -959,7 +959,7 @@ impl<'tcx> RegionInferenceContext<'tcx> { // // This is needed because -- particularly in the case // where `ur` is a local bound -- we are sometimes in a - // position to prove things that our caller cannot. See + // position to prove things that our caller cannot. See // #53570 for an example. if self.eval_verify_bound(infcx, param_env, generic_ty, ur, &type_test.verify_bound) { continue; @@ -2035,7 +2035,7 @@ impl<'tcx> RegionInferenceContext<'tcx> { // '5: '6 ('6 is the target) // // Some of those regions are unified with `'6` (in the same - // SCC). We want to screen those out. After that point, the + // SCC). We want to screen those out. After that point, the // "closest" constraint we have to the end is going to be the // most likely to be the point where the value escapes -- but // we still want to screen for an "interesting" point to diff --git a/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs b/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs index ce7f857e2731..e15d1b99ad20 100644 --- a/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs +++ b/compiler/rustc_borrowck/src/type_check/constraint_conversion.rs @@ -107,7 +107,7 @@ impl<'a, 'tcx> ConstraintConversion<'a, 'tcx> { closure_substs: ty::SubstsRef<'tcx>, ) { // Extract the values of the free regions in `closure_substs` - // into a vector. These are the regions that we will be + // into a vector. These are the regions that we will be // relating to one another. let closure_mapping = &UniversalRegions::closure_mapping( self.tcx, diff --git a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs index 09cf870bcf35..a12560089906 100644 --- a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs +++ b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs @@ -98,7 +98,7 @@ impl UniversalRegionRelations<'_> { let upper_bounds = self.non_local_upper_bounds(fr); // In case we find more than one, reduce to one for - // convenience. This is to prevent us from generating more + // convenience. This is to prevent us from generating more // complex constraints, but it will cause spurious errors. let post_dom = self.inverse_outlives.mutual_immediate_postdominator(upper_bounds); @@ -128,7 +128,7 @@ impl UniversalRegionRelations<'_> { let lower_bounds = self.non_local_bounds(&self.outlives, fr); // In case we find more than one, reduce to one for - // convenience. This is to prevent us from generating more + // convenience. This is to prevent us from generating more // complex constraints, but it will cause spurious errors. let post_dom = self.outlives.mutual_immediate_postdominator(lower_bounds); diff --git a/compiler/rustc_borrowck/src/type_check/liveness/trace.rs b/compiler/rustc_borrowck/src/type_check/liveness/trace.rs index 42b577175e43..3ff5d188a3d3 100644 --- a/compiler/rustc_borrowck/src/type_check/liveness/trace.rs +++ b/compiler/rustc_borrowck/src/type_check/liveness/trace.rs @@ -328,7 +328,7 @@ impl<'me, 'typeck, 'flow, 'tcx> LivenessResults<'me, 'typeck, 'flow, 'tcx> { debug_assert!(self.drop_live_at.contains(term_point)); // Otherwise, scan backwards through the statements in the - // block. One of them may be either a definition or use + // block. One of them may be either a definition or use // live point. let term_location = self.cx.elements.to_location(term_point); debug_assert_eq!(self.cx.body.terminator_loc(term_location.block), term_location,); diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index 7a3db191f0c6..81bd4c2a783e 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -1665,7 +1665,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { fn ensure_place_sized(&mut self, ty: Ty<'tcx>, span: Span) { let tcx = self.tcx(); - // Erase the regions from `ty` to get a global type. The + // Erase the regions from `ty` to get a global type. The // `Sized` bound in no way depends on precise regions, so this // shouldn't affect `is_sized`. let erased_ty = tcx.erase_regions(ty); diff --git a/compiler/rustc_borrowck/src/universal_regions.rs b/compiler/rustc_borrowck/src/universal_regions.rs index a4a0c5b90fed..5b4d99682d98 100644 --- a/compiler/rustc_borrowck/src/universal_regions.rs +++ b/compiler/rustc_borrowck/src/universal_regions.rs @@ -637,7 +637,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> { let closure_ty = tcx.closure_env_ty(def_id, substs, env_region).unwrap(); // The "inputs" of the closure in the - // signature appear as a tuple. The MIR side + // signature appear as a tuple. The MIR side // flattens this tuple. let (&output, tuplized_inputs) = inputs_and_output.skip_binder().split_last().unwrap(); diff --git a/compiler/rustc_builtin_macros/src/deriving/clone.rs b/compiler/rustc_builtin_macros/src/deriving/clone.rs index d59b3b8c86d3..3f174e2d9014 100644 --- a/compiler/rustc_builtin_macros/src/deriving/clone.rs +++ b/compiler/rustc_builtin_macros/src/deriving/clone.rs @@ -20,7 +20,7 @@ pub fn expand_deriving_clone( // some additional `AssertParamIsClone` assertions. // // We can use the simple form if either of the following are true. - // - The type derives Copy and there are no generic parameters. (If we + // - The type derives Copy and there are no generic parameters. (If we // used the simple form with generics, we'd have to bound the generics // with Clone + Copy, and then there'd be no Clone impl at all if the // user fills in something that is Clone but not Copy. After diff --git a/compiler/rustc_builtin_macros/src/env.rs b/compiler/rustc_builtin_macros/src/env.rs index 84d06b69a9d9..e5a5e606930f 100644 --- a/compiler/rustc_builtin_macros/src/env.rs +++ b/compiler/rustc_builtin_macros/src/env.rs @@ -1,4 +1,4 @@ -// The compiler code necessary to support the env! extension. Eventually this +// The compiler code necessary to support the env! extension. Eventually this // should all get sucked into either the compiler syntax extension plugin // interface. // diff --git a/compiler/rustc_builtin_macros/src/format.rs b/compiler/rustc_builtin_macros/src/format.rs index b2b7b9d75bd3..9f4bbbc62c81 100644 --- a/compiler/rustc_builtin_macros/src/format.rs +++ b/compiler/rustc_builtin_macros/src/format.rs @@ -583,7 +583,7 @@ fn report_missing_placeholders( if detect_foreign_fmt { use super::format_foreign as foreign; - // The set of foreign substitutions we've explained. This prevents spamming the user + // The set of foreign substitutions we've explained. This prevents spamming the user // with `%d should be written as {}` over and over again. let mut explained = FxHashSet::default(); diff --git a/compiler/rustc_builtin_macros/src/format_foreign.rs b/compiler/rustc_builtin_macros/src/format_foreign.rs index 6f7fc3a95ba6..bd9e903b6ba2 100644 --- a/compiler/rustc_builtin_macros/src/format_foreign.rs +++ b/compiler/rustc_builtin_macros/src/format_foreign.rs @@ -253,7 +253,7 @@ pub(crate) mod printf { #[derive(Copy, Clone, PartialEq, Debug)] pub enum Num { // The range of these values is technically bounded by `NL_ARGMAX`... but, at least for GNU - // libc, it apparently has no real fixed limit. A `u16` is used here on the basis that it + // libc, it apparently has no real fixed limit. A `u16` is used here on the basis that it // is *vanishingly* unlikely that *anyone* is going to try formatting something wider, or // with more precision, than 32 thousand positions which is so wide it couldn't possibly fit // on a screen. diff --git a/compiler/rustc_codegen_cranelift/src/constant.rs b/compiler/rustc_codegen_cranelift/src/constant.rs index dee6fb5b5130..51450897bfc1 100644 --- a/compiler/rustc_codegen_cranelift/src/constant.rs +++ b/compiler/rustc_codegen_cranelift/src/constant.rs @@ -304,7 +304,7 @@ fn data_id_for_static( // Comment copied from https://github.com/rust-lang/rust/blob/45060c2a66dfd667f88bd8b94261b28a58d85bd5/src/librustc_codegen_llvm/consts.rs#L141 // Declare an internal global `extern_with_linkage_foo` which - // is initialized with the address of `foo`. If `foo` is + // is initialized with the address of `foo`. If `foo` is // discarded during linking (for example, if `foo` has weak // linkage and there are no definitions), then // `extern_with_linkage_foo` will instead be initialized to diff --git a/compiler/rustc_codegen_llvm/src/abi.rs b/compiler/rustc_codegen_llvm/src/abi.rs index 546540dfd762..28be6d033f8b 100644 --- a/compiler/rustc_codegen_llvm/src/abi.rs +++ b/compiler/rustc_codegen_llvm/src/abi.rs @@ -221,7 +221,7 @@ impl<'ll, 'tcx> ArgAbiExt<'ll, 'tcx> for ArgAbi<'tcx, Ty<'tcx>> { bx.store(val, cast_dst, self.layout.align.abi); } else { // The actual return type is a struct, but the ABI - // adaptation code has cast it into some scalar type. The + // adaptation code has cast it into some scalar type. The // code that follows is the only reliable way I have // found to do a transform like i64 -> {i32,i32}. // Basically we dump the data onto the stack then memcpy it. diff --git a/compiler/rustc_codegen_llvm/src/asm.rs b/compiler/rustc_codegen_llvm/src/asm.rs index 606f710641fc..52c8b51796c0 100644 --- a/compiler/rustc_codegen_llvm/src/asm.rs +++ b/compiler/rustc_codegen_llvm/src/asm.rs @@ -445,7 +445,7 @@ pub(crate) fn inline_asm_call<'ll>( }; // Store mark in a metadata node so we can map LLVM errors - // back to source locations. See #17552. + // back to source locations. See #17552. let key = "srcloc"; let kind = llvm::LLVMGetMDKindIDInContext( bx.llcx, diff --git a/compiler/rustc_codegen_llvm/src/back/archive.rs b/compiler/rustc_codegen_llvm/src/back/archive.rs index 36aba5bb740b..426f57c06080 100644 --- a/compiler/rustc_codegen_llvm/src/back/archive.rs +++ b/compiler/rustc_codegen_llvm/src/back/archive.rs @@ -145,7 +145,7 @@ impl ArchiveBuilderBuilder for LlvmArchiveBuilderBuilder { // The binutils linker used on -windows-gnu targets cannot read the import // libraries generated by LLVM: in our attempts, the linker produced an .EXE // that loaded but crashed with an AV upon calling one of the imported - // functions. Therefore, use binutils to create the import library instead, + // functions. Therefore, use binutils to create the import library instead, // by writing a .DEF file to the temp dir and calling binutils's dlltool. let def_file_path = tmpdir.join(format!("{}{}", lib_name, name_suffix)).with_extension("def"); @@ -219,7 +219,7 @@ impl ArchiveBuilderBuilder for LlvmArchiveBuilderBuilder { // All import names are Rust identifiers and therefore cannot contain \0 characters. // FIXME: when support for #[link_name] is implemented, ensure that the import names - // still don't contain any \0 characters. Also need to check that the names don't + // still don't contain any \0 characters. Also need to check that the names don't // contain substrings like " @" or "NONAME" that are keywords or otherwise reserved // in definition files. let cstring_import_name_and_ordinal_vector: Vec<(CString, Option)> = @@ -433,7 +433,7 @@ fn find_binutils_dlltool(sess: &Session) -> OsString { } // The user didn't specify the location of the dlltool binary, and we weren't able - // to find the appropriate one on the PATH. Just return the name of the tool + // to find the appropriate one on the PATH. Just return the name of the tool // and let the invocation fail with a hopefully useful error message. tool_name } diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs index e23c88b62c14..b2af9f31e449 100644 --- a/compiler/rustc_codegen_llvm/src/back/write.rs +++ b/compiler/rustc_codegen_llvm/src/back/write.rs @@ -909,7 +909,7 @@ unsafe fn embed_bitcode( // Create a `__imp_ = &symbol` global for every public static `symbol`. // This is required to satisfy `dllimport` references to static data in .rlibs -// when using MSVC linker. We do this only for data, as linker can fix up +// when using MSVC linker. We do this only for data, as linker can fix up // code references on its own. // See #26591, #27438 fn create_msvc_imps( diff --git a/compiler/rustc_codegen_llvm/src/callee.rs b/compiler/rustc_codegen_llvm/src/callee.rs index 70ff5c9617b7..f1d01a4602a5 100644 --- a/compiler/rustc_codegen_llvm/src/callee.rs +++ b/compiler/rustc_codegen_llvm/src/callee.rs @@ -49,8 +49,8 @@ pub fn get_fn<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>, instance: Instance<'tcx>) -> let llptrty = fn_abi.ptr_to_llvm_type(cx); // This is subtle and surprising, but sometimes we have to bitcast - // the resulting fn pointer. The reason has to do with external - // functions. If you have two crates that both bind the same C + // the resulting fn pointer. The reason has to do with external + // functions. If you have two crates that both bind the same C // library, they may not use precisely the same types: for // example, they will probably each declare their own structs, // which are distinct types from LLVM's point of view (nominal diff --git a/compiler/rustc_codegen_llvm/src/consts.rs b/compiler/rustc_codegen_llvm/src/consts.rs index 3626aa901c0e..16467b614fea 100644 --- a/compiler/rustc_codegen_llvm/src/consts.rs +++ b/compiler/rustc_codegen_llvm/src/consts.rs @@ -140,7 +140,7 @@ pub fn codegen_static_initializer<'ll, 'tcx>( fn set_global_alignment<'ll>(cx: &CodegenCx<'ll, '_>, gv: &'ll Value, mut align: Align) { // The target may require greater alignment for globals than the type does. // Note: GCC and Clang also allow `__attribute__((aligned))` on variables, - // which can force it to be smaller. Rust doesn't support this yet. + // which can force it to be smaller. Rust doesn't support this yet. if let Some(min) = cx.sess().target.min_global_align { match Align::from_bits(min) { Ok(min) => align = align.max(min), @@ -171,7 +171,7 @@ fn check_and_apply_linkage<'ll, 'tcx>( llvm::LLVMRustSetLinkage(g1, base::linkage_to_llvm(linkage)); // Declare an internal global `extern_with_linkage_foo` which - // is initialized with the address of `foo`. If `foo` is + // is initialized with the address of `foo`. If `foo` is // discarded during linking (for example, if `foo` has weak // linkage and there are no definitions), then // `extern_with_linkage_foo` will instead be initialized to diff --git a/compiler/rustc_codegen_llvm/src/intrinsic.rs b/compiler/rustc_codegen_llvm/src/intrinsic.rs index 680d810f78eb..a6a75eff9a36 100644 --- a/compiler/rustc_codegen_llvm/src/intrinsic.rs +++ b/compiler/rustc_codegen_llvm/src/intrinsic.rs @@ -654,7 +654,7 @@ fn codegen_gnu_try<'ll>( // Type indicator for the exception being thrown. // // The first value in this tuple is a pointer to the exception object - // being thrown. The second value is a "selector" indicating which of + // being thrown. The second value is a "selector" indicating which of // the landing pad clauses the exception's type had been matched to. // rust_try ignores the selector. bx.switch_to_block(catch); @@ -718,7 +718,7 @@ fn codegen_emcc_try<'ll>( // Type indicator for the exception being thrown. // // The first value in this tuple is a pointer to the exception object - // being thrown. The second value is a "selector" indicating which of + // being thrown. The second value is a "selector" indicating which of // the landing pad clauses the exception's type had been matched to. bx.switch_to_block(catch); let tydesc = bx.eh_catch_typeinfo(); diff --git a/compiler/rustc_codegen_llvm/src/type_of.rs b/compiler/rustc_codegen_llvm/src/type_of.rs index 182adf817857..75cd5df97231 100644 --- a/compiler/rustc_codegen_llvm/src/type_of.rs +++ b/compiler/rustc_codegen_llvm/src/type_of.rs @@ -352,10 +352,10 @@ impl<'tcx> LayoutLlvmExt<'tcx> for TyAndLayout<'tcx> { let scalar = [a, b][index]; // Make sure to return the same type `immediate_llvm_type` would when - // dealing with an immediate pair. This means that `(bool, bool)` is + // dealing with an immediate pair. This means that `(bool, bool)` is // effectively represented as `{i8, i8}` in memory and two `i1`s as an // immediate, just like `bool` is typically `i8` in memory and only `i1` - // when immediate. We need to load/store `bool` as `i8` to avoid + // when immediate. We need to load/store `bool` as `i8` to avoid // crippling LLVM optimizations or triggering other LLVM bugs with `i1`. if immediate && scalar.is_bool() { return cx.type_i1(); diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 8ca7103ed482..c79dcb0f65e4 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -445,7 +445,7 @@ fn link_rlib<'a>( /// Extract all symbols defined in raw-dylib libraries, collated by library name. /// /// If we have multiple extern blocks that specify symbols defined in the same raw-dylib library, -/// then the CodegenResults value contains one NativeLib instance for each block. However, the +/// then the CodegenResults value contains one NativeLib instance for each block. However, the /// linker appears to expect only a single import library for each library used, so we need to /// collate the symbols together by library name before generating the import libraries. fn collate_raw_dylibs<'a, 'b>( @@ -1197,7 +1197,7 @@ pub fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) { if cfg!(any(target_os = "solaris", target_os = "illumos")) { // On historical Solaris systems, "cc" may have // been Sun Studio, which is not flag-compatible - // with "gcc". This history casts a long shadow, + // with "gcc". This history casts a long shadow, // and many modern illumos distributions today // ship GCC as "gcc" without also making it // available as "cc". diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index 0268659d3b9a..eaf1e9817c20 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -544,7 +544,7 @@ impl<'a> Linker for GccLinker<'a> { // link times negatively. // // -dead_strip can't be part of the pre_link_args because it's also used - // for partial linking when using multiple codegen units (-r). So we + // for partial linking when using multiple codegen units (-r). So we // insert it here. if self.sess.target.is_like_osx { self.linker_arg("-dead_strip"); diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 25dc88c535da..9f1614af7b16 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -105,7 +105,7 @@ pub struct ModuleConfig { pub emit_thin_lto: bool, pub bc_cmdline: String, - // Miscellaneous flags. These are mostly copied from command-line + // Miscellaneous flags. These are mostly copied from command-line // options. pub verify_llvm_ir: bool, pub no_prepopulate_passes: bool, @@ -538,7 +538,7 @@ fn produce_final_output_artifacts( let copy_if_one_unit = |output_type: OutputType, keep_numbered: bool| { if compiled_modules.modules.len() == 1 { - // 1) Only one codegen unit. In this case it's no difficulty + // 1) Only one codegen unit. In this case it's no difficulty // to copy `foo.0.x` to `foo.x`. let module_name = Some(&compiled_modules.modules[0].name[..]); let path = crate_output.temp_path(output_type, module_name); @@ -557,15 +557,15 @@ fn produce_final_output_artifacts( .to_owned(); if crate_output.outputs.contains_key(&output_type) { - // 2) Multiple codegen units, with `--emit foo=some_name`. We have + // 2) Multiple codegen units, with `--emit foo=some_name`. We have // no good solution for this case, so warn the user. sess.emit_warning(errors::IgnoringEmitPath { extension }); } else if crate_output.single_output_file.is_some() { - // 3) Multiple codegen units, with `-o some_name`. We have + // 3) Multiple codegen units, with `-o some_name`. We have // no good solution for this case, so warn the user. sess.emit_warning(errors::IgnoringOutput { extension }); } else { - // 4) Multiple codegen units, but no explicit name. We + // 4) Multiple codegen units, but no explicit name. We // just leave the `foo.0.x` files in place. // (We don't have to do any work in this case.) } @@ -579,7 +579,7 @@ fn produce_final_output_artifacts( match *output_type { OutputType::Bitcode => { user_wants_bitcode = true; - // Copy to .bc, but always keep the .0.bc. There is a later + // Copy to .bc, but always keep the .0.bc. There is a later // check to figure out if we should delete .0.bc files, or keep // them for making an rlib. copy_if_one_unit(OutputType::Bitcode, true); @@ -611,7 +611,7 @@ fn produce_final_output_artifacts( // `-C save-temps` or `--emit=` flags). if !sess.opts.cg.save_temps { - // Remove the temporary .#module-name#.o objects. If the user didn't + // Remove the temporary .#module-name#.o objects. If the user didn't // explicitly request bitcode (with --emit=bc), and the bitcode is not // needed for building an rlib, then we must remove .#module-name#.bc as // well. diff --git a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs index b0fa77456673..8808ad2dcd13 100644 --- a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs +++ b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs @@ -658,13 +658,13 @@ fn check_link_ordinal(tcx: TyCtxt<'_>, attr: &ast::Attribute) -> Option { sole_meta_list { // According to the table at https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#import-header, - // the ordinal must fit into 16 bits. Similarly, the Ordinal field in COFFShortExport (defined + // the ordinal must fit into 16 bits. Similarly, the Ordinal field in COFFShortExport (defined // in llvm/include/llvm/Object/COFFImportFile.h), which we use to communicate import information // to LLVM for `#[link(kind = "raw-dylib"_])`, is also defined to be uint16_t. // // FIXME: should we allow an ordinal of 0? The MSVC toolchain has inconsistent support for this: // both LINK.EXE and LIB.EXE signal errors and abort when given a .DEF file that specifies - // a zero ordinal. However, llvm-dlltool is perfectly happy to generate an import library + // a zero ordinal. However, llvm-dlltool is perfectly happy to generate an import library // for such a .DEF file, and MSVC's LINK.EXE is also perfectly happy to consume an import // library produced by LLVM with an ordinal of 0, and it generates an .EXE. (I don't know yet // if the resulting EXE runs, as I haven't yet built the necessary DLL -- see earlier comment diff --git a/compiler/rustc_codegen_ssa/src/mir/debuginfo.rs b/compiler/rustc_codegen_ssa/src/mir/debuginfo.rs index b7982b633f57..e9bc40c33107 100644 --- a/compiler/rustc_codegen_ssa/src/mir/debuginfo.rs +++ b/compiler/rustc_codegen_ssa/src/mir/debuginfo.rs @@ -57,9 +57,9 @@ pub struct DebugScope { } impl<'tcx, S: Copy, L: Copy> DebugScope { - /// DILocations inherit source file name from the parent DIScope. Due to macro expansions + /// DILocations inherit source file name from the parent DIScope. Due to macro expansions /// it may so happen that the current span belongs to a different file than the DIScope - /// corresponding to span's containing source scope. If so, we need to create a DIScope + /// corresponding to span's containing source scope. If so, we need to create a DIScope /// "extension" into that file. pub fn adjust_dbg_scope_for_span>( &self, diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs index e006a62feeab..4f7c1fc96f13 100644 --- a/compiler/rustc_const_eval/src/const_eval/machine.rs +++ b/compiler/rustc_const_eval/src/const_eval/machine.rs @@ -408,7 +408,7 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir, // Only check non-glue functions if let ty::InstanceDef::Item(def) = instance.def { // Execution might have wandered off into other crates, so we cannot do a stability- - // sensitive check here. But we can at least rule out functions that are not const + // sensitive check here. But we can at least rule out functions that are not const // at all. if !ecx.tcx.is_const_fn_raw(def.did) { // allow calling functions inside a trait marked with #[const_trait]. diff --git a/compiler/rustc_const_eval/src/interpret/eval_context.rs b/compiler/rustc_const_eval/src/interpret/eval_context.rs index f551b5c29114..d13fed7a9c26 100644 --- a/compiler/rustc_const_eval/src/interpret/eval_context.rs +++ b/compiler/rustc_const_eval/src/interpret/eval_context.rs @@ -196,7 +196,7 @@ impl<'tcx, Prov: Provenance + 'static> LocalState<'tcx, Prov> { } } - /// Overwrite the local. If the local can be overwritten in place, return a reference + /// Overwrite the local. If the local can be overwritten in place, return a reference /// to do so; otherwise return the `MemPlace` to consult instead. /// /// Note: This may only be invoked from the `Machine::access_local_mut` hook and not from @@ -592,7 +592,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { ); // Recurse to get the size of the dynamically sized field (must be - // the last field). Can't have foreign types here, how would we + // the last field). Can't have foreign types here, how would we // adjust alignment and size for them? let field = layout.field(self, layout.fields.count() - 1); let Some((unsized_size, mut unsized_align)) = self.size_and_align_of(metadata, &field)? else { diff --git a/compiler/rustc_const_eval/src/interpret/intern.rs b/compiler/rustc_const_eval/src/interpret/intern.rs index 458cc6180d53..54528b1dbf4a 100644 --- a/compiler/rustc_const_eval/src/interpret/intern.rs +++ b/compiler/rustc_const_eval/src/interpret/intern.rs @@ -59,7 +59,7 @@ struct InternVisitor<'rt, 'mir, 'tcx, M: CompileTimeMachine<'mir, 'tcx, const_ev #[derive(Copy, Clone, Debug, PartialEq, Hash, Eq)] enum InternMode { - /// A static and its current mutability. Below shared references inside a `static mut`, + /// A static and its current mutability. Below shared references inside a `static mut`, /// this is *immutable*, and below mutable references inside an `UnsafeCell`, this /// is *mutable*. Static(hir::Mutability), @@ -296,7 +296,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: CompileTimeMachine<'mir, 'tcx, const_eval::Memory } } InternMode::Const => { - // Ignore `UnsafeCell`, everything is immutable. Validity does some sanity + // Ignore `UnsafeCell`, everything is immutable. Validity does some sanity // checking for mutable references that we encounter -- they must all be // ZST. InternMode::Const @@ -330,7 +330,7 @@ pub enum InternKind { /// Intern `ret` and everything it references. /// -/// This *cannot raise an interpreter error*. Doing so is left to validation, which +/// This *cannot raise an interpreter error*. Doing so is left to validation, which /// tracks where in the value we are and thus can show much better error messages. #[instrument(level = "debug", skip(ecx))] pub fn intern_const_alloc_recursive< @@ -379,7 +379,7 @@ pub fn intern_const_alloc_recursive< inside_unsafe_cell: false, } .visit_value(&mplace); - // We deliberately *ignore* interpreter errors here. When there is a problem, the remaining + // We deliberately *ignore* interpreter errors here. When there is a problem, the remaining // references are "leftover"-interned, and later validation will show a proper error // and point at the right part of the value causing the problem. match res { @@ -454,7 +454,7 @@ pub fn intern_const_alloc_recursive< return Err(reported); } else if ecx.tcx.try_get_global_alloc(alloc_id).is_none() { // We have hit an `AllocId` that is neither in local or global memory and isn't - // marked as dangling by local memory. That should be impossible. + // marked as dangling by local memory. That should be impossible. span_bug!(ecx.tcx.span, "encountered unknown alloc id {:?}", alloc_id); } } diff --git a/compiler/rustc_const_eval/src/interpret/machine.rs b/compiler/rustc_const_eval/src/interpret/machine.rs index 1d4ef20d0651..248953de8672 100644 --- a/compiler/rustc_const_eval/src/interpret/machine.rs +++ b/compiler/rustc_const_eval/src/interpret/machine.rs @@ -180,7 +180,7 @@ pub trait Machine<'mir, 'tcx>: Sized { unwind: StackPopUnwind, ) -> InterpResult<'tcx, Option<(&'mir mir::Body<'tcx>, ty::Instance<'tcx>)>>; - /// Execute `fn_val`. It is the hook's responsibility to advance the instruction + /// Execute `fn_val`. It is the hook's responsibility to advance the instruction /// pointer as appropriate. fn call_extra_fn( ecx: &mut InterpCx<'mir, 'tcx, Self>, @@ -439,7 +439,7 @@ pub trait Machine<'mir, 'tcx>: Sized { } /// A lot of the flexibility above is just needed for `Miri`, but all "compile-time" machines -/// (CTFE and ConstProp) use the same instance. Here, we share that code. +/// (CTFE and ConstProp) use the same instance. Here, we share that code. pub macro compile_time_machine(<$mir: lifetime, $tcx: lifetime>) { type Provenance = AllocId; type ProvenanceExtra = (); diff --git a/compiler/rustc_const_eval/src/interpret/memory.rs b/compiler/rustc_const_eval/src/interpret/memory.rs index 5b1ac6b2f65e..2f31bfc91005 100644 --- a/compiler/rustc_const_eval/src/interpret/memory.rs +++ b/compiler/rustc_const_eval/src/interpret/memory.rs @@ -146,7 +146,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'mir, 'tcx, M> { impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { /// Call this to turn untagged "global" pointers (obtained via `tcx`) into - /// the machine pointer to the allocation. Must never be used + /// the machine pointer to the allocation. Must never be used /// for any other pointers, nor for TLS statics. /// /// Using the resulting pointer represents a *direct* access to that memory @@ -536,7 +536,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { &self, id: AllocId, ) -> InterpResult<'tcx, &Allocation> { - // The error type of the inner closure here is somewhat funny. We have two + // The error type of the inner closure here is somewhat funny. We have two // ways of "erroring": An actual error, or because we got a reference from // `get_global_alloc` that we can actually use directly without inserting anything anywhere. // So the error type is `InterpResult<'tcx, &Allocation>`. diff --git a/compiler/rustc_const_eval/src/interpret/operand.rs b/compiler/rustc_const_eval/src/interpret/operand.rs index fcc6f8ea8528..7e93f1b8ef51 100644 --- a/compiler/rustc_const_eval/src/interpret/operand.rs +++ b/compiler/rustc_const_eval/src/interpret/operand.rs @@ -488,7 +488,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { Ok(OpTy { op, layout: place.layout, align: Some(place.align) }) } - /// Evaluate a place with the goal of reading from it. This lets us sometimes + /// Evaluate a place with the goal of reading from it. This lets us sometimes /// avoid allocations. pub fn eval_place_to_op( &self, diff --git a/compiler/rustc_const_eval/src/interpret/place.rs b/compiler/rustc_const_eval/src/interpret/place.rs index 97a73e98abcb..274af61ee7c1 100644 --- a/compiler/rustc_const_eval/src/interpret/place.rs +++ b/compiler/rustc_const_eval/src/interpret/place.rs @@ -233,7 +233,7 @@ impl<'tcx, Prov: Provenance> MPlaceTy<'tcx, Prov> { _ => bug!("len not supported on unsized type {:?}", self.layout.ty), } } else { - // Go through the layout. There are lots of types that support a length, + // Go through the layout. There are lots of types that support a length, // e.g., SIMD types. (But not all repr(simd) types even have FieldsShape::Array!) match self.layout.fields { abi::FieldsShape::Array { count, .. } => Ok(count), @@ -294,7 +294,7 @@ where M: Machine<'mir, 'tcx, Provenance = Prov>, { /// Take a value, which represents a (thin or wide) reference, and make it a place. - /// Alignment is just based on the type. This is the inverse of `MemPlace::to_ref()`. + /// Alignment is just based on the type. This is the inverse of `MemPlace::to_ref()`. /// /// Only call this if you are sure the place is "valid" (aligned and inbounds), or do not /// want to ever use the place for memory access! @@ -703,7 +703,7 @@ where &mut Operand::Immediate(local_val) => { // We need to make an allocation. - // We need the layout of the local. We can NOT use the layout we got, + // We need the layout of the local. We can NOT use the layout we got, // that might e.g., be an inner field of a struct with `Scalar` layout, // that has different alignment than the outer field. let local_layout = diff --git a/compiler/rustc_const_eval/src/interpret/terminator.rs b/compiler/rustc_const_eval/src/interpret/terminator.rs index 550c7a44c419..da320cd1cd5f 100644 --- a/compiler/rustc_const_eval/src/interpret/terminator.rs +++ b/compiler/rustc_const_eval/src/interpret/terminator.rs @@ -446,7 +446,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { // they go to. // For where they come from: If the ABI is RustCall, we untuple the - // last incoming argument. These two iterators do not have the same type, + // last incoming argument. These two iterators do not have the same type, // so to keep the code paths uniform we accept an allocation // (for RustCall ABI only). let caller_args: Cow<'_, [OpTy<'tcx, M::Provenance>]> = @@ -481,7 +481,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { .filter(|arg_and_abi| !matches!(arg_and_abi.1.mode, PassMode::Ignore)); // Now we have to spread them out across the callee's locals, - // taking into account the `spread_arg`. If we could write + // taking into account the `spread_arg`. If we could write // this is a single iterator (that handles `spread_arg`), then // `pass_argument` would be the loop body. It takes care to // not advance `caller_iter` for ZSTs. @@ -648,8 +648,8 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { unwind: Option, ) -> InterpResult<'tcx> { trace!("drop_in_place: {:?},\n {:?}, {:?}", *place, place.layout.ty, instance); - // We take the address of the object. This may well be unaligned, which is fine - // for us here. However, unaligned accesses will probably make the actual drop + // We take the address of the object. This may well be unaligned, which is fine + // for us here. However, unaligned accesses will probably make the actual drop // implementation fail -- a problem shared by rustc. let place = self.force_allocation(place)?; diff --git a/compiler/rustc_const_eval/src/interpret/validity.rs b/compiler/rustc_const_eval/src/interpret/validity.rs index f905d3fb479a..43bea23b651e 100644 --- a/compiler/rustc_const_eval/src/interpret/validity.rs +++ b/compiler/rustc_const_eval/src/interpret/validity.rs @@ -175,7 +175,7 @@ fn write_path(out: &mut String, path: &[PathElem]) { TupleElem(idx) => write!(out, ".{}", idx), ArrayElem(idx) => write!(out, "[{}]", idx), // `.` does not match Rust syntax, but it is more readable for long paths -- and - // some of the other items here also are not Rust syntax. Actually we can't + // some of the other items here also are not Rust syntax. Actually we can't // even use the usual syntax because we are just showing the projections, // not the root. Deref => write!(out, "."), @@ -484,7 +484,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, ' } /// Check if this is a value of primitive type, and if yes check the validity of the value - /// at that type. Return `true` if the type is indeed primitive. + /// at that type. Return `true` if the type is indeed primitive. fn try_visit_primitive( &mut self, value: &OpTy<'tcx, M::Provenance>, @@ -623,7 +623,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, ' // Can only happen during CTFE. // We support 2 kinds of ranges here: full range, and excluding zero. if start == 1 && end == max_value { - // Only null is the niche. So make sure the ptr is NOT null. + // Only null is the niche. So make sure the ptr is NOT null. if self.ecx.scalar_may_be_null(scalar)? { throw_validation_failure!(self.path, { "a potentially null pointer" } @@ -759,7 +759,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValueVisitor<'mir, 'tcx, M> // Recursively walk the value at its type. self.walk_value(op)?; - // *After* all of this, check the ABI. We need to check the ABI to handle + // *After* all of this, check the ABI. We need to check the ABI to handle // types like `NonNull` where the `Scalar` info is more restrictive than what // the fields say (`rustc_layout_scalar_valid_range_start`). // But in most cases, this will just propagate what the fields say, @@ -857,10 +857,10 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValueVisitor<'mir, 'tcx, M> // Optimization: we just check the entire range at once. // NOTE: Keep this in sync with the handling of integer and float // types above, in `visit_primitive`. - // In run-time mode, we accept pointers in here. This is actually more + // In run-time mode, we accept pointers in here. This is actually more // permissive than a per-element check would be, e.g., we accept // a &[u8] that contains a pointer even though bytewise checking would - // reject it. However, that's good: We don't inherently want + // reject it. However, that's good: We don't inherently want // to reject those pointers, we just do not have the machinery to // talk about parts of a pointer. // We also accept uninit, for consistency with the slow path. diff --git a/compiler/rustc_data_structures/src/frozen.rs b/compiler/rustc_data_structures/src/frozen.rs index c81e1b124f0e..73190574667f 100644 --- a/compiler/rustc_data_structures/src/frozen.rs +++ b/compiler/rustc_data_structures/src/frozen.rs @@ -36,7 +36,7 @@ //! ``` //! //! `Frozen` impls `Deref`, so we can ergonomically call methods on `Bar`, but it doesn't `impl -//! DerefMut`. Now calling `foo.compute.mutate()` will result in a compile-time error stating that +//! DerefMut`. Now calling `foo.compute.mutate()` will result in a compile-time error stating that //! `mutate` requires a mutable reference but we don't have one. //! //! # Caveats diff --git a/compiler/rustc_data_structures/src/graph/scc/tests.rs b/compiler/rustc_data_structures/src/graph/scc/tests.rs index 9940fee60d7d..820a70fc8e44 100644 --- a/compiler/rustc_data_structures/src/graph/scc/tests.rs +++ b/compiler/rustc_data_structures/src/graph/scc/tests.rs @@ -84,7 +84,7 @@ fn test_find_state_2() { // 0 -> 1 -> 2 -> 1 // // and at this point detect a cycle. The state of 2 will thus be - // `InCycleWith { 1 }`. We will then visit the 1 -> 3 edge, which + // `InCycleWith { 1 }`. We will then visit the 1 -> 3 edge, which // will attempt to visit 0 as well, thus going to the state // `InCycleWith { 0 }`. Finally, node 1 will complete; the lowest // depth of any successor was 3 which had depth 0, and thus it diff --git a/compiler/rustc_data_structures/src/transitive_relation.rs b/compiler/rustc_data_structures/src/transitive_relation.rs index 1ff0d58df140..cd391fe357a6 100644 --- a/compiler/rustc_data_structures/src/transitive_relation.rs +++ b/compiler/rustc_data_structures/src/transitive_relation.rs @@ -250,7 +250,7 @@ impl TransitiveRelation { // values. So here is what we do: // // 1. Find the vector `[X | a < X && b < X]` of all values - // `X` where `a < X` and `b < X`. In terms of the + // `X` where `a < X` and `b < X`. In terms of the // graph, this means all values reachable from both `a` // and `b`. Note that this vector is also a set, but we // use the term vector because the order matters diff --git a/compiler/rustc_driver/README.md b/compiler/rustc_driver/README.md index 37dc7f6ba5fe..6d7fba36fb3d 100644 --- a/compiler/rustc_driver/README.md +++ b/compiler/rustc_driver/README.md @@ -1,5 +1,5 @@ The `driver` crate is effectively the "main" function for the rust -compiler. It orchestrates the compilation process and "knits together" +compiler. It orchestrates the compilation process and "knits together" the code from the other crates within rustc. This crate itself does not contain any of the "main logic" of the compiler (though it does have some code related to pretty printing or other minor compiler diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 24258974bb97..2746396b75ab 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -1,5 +1,5 @@ -// Error messages for EXXXX errors. Each message should start and end with a -// new line, and be wrapped to 80 characters. In vim you can `:set tw=80` and +// Error messages for EXXXX errors. Each message should start and end with a +// new line, and be wrapped to 80 characters. In vim you can `:set tw=80` and // use `gq` to wrap paragraphs. Use `:set tw=0` to disable. // // /!\ IMPORTANT /!\ diff --git a/compiler/rustc_error_codes/src/error_codes/E0387.md b/compiler/rustc_error_codes/src/error_codes/E0387.md index 38ad19bd6aa9..1c62d410efe4 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0387.md +++ b/compiler/rustc_error_codes/src/error_codes/E0387.md @@ -17,7 +17,7 @@ fn mutable() { foo(|| x = 2); } -// Attempts to take a mutable reference to closed-over data. Error message +// Attempts to take a mutable reference to closed-over data. Error message // reads: `cannot borrow data mutably in a captured outer variable...` fn mut_addr() { let mut x = 0u32; diff --git a/compiler/rustc_error_codes/src/error_codes/E0713.md b/compiler/rustc_error_codes/src/error_codes/E0713.md index 9b1b77f3bc70..a7b9bbeb122f 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0713.md +++ b/compiler/rustc_error_codes/src/error_codes/E0713.md @@ -22,7 +22,7 @@ gets called when they go out of scope. This destructor gets exclusive access to the fields of the struct when it runs. This means that when `s` reaches the end of `demo`, its destructor -gets exclusive access to its `&mut`-borrowed string data. allowing +gets exclusive access to its `&mut`-borrowed string data. allowing another borrow of that string data (`p`), to exist across the drop of `s` would be a violation of the principle that `&mut`-borrows have exclusive, unaliased access to their referenced data. diff --git a/compiler/rustc_error_codes/src/error_codes/E0714.md b/compiler/rustc_error_codes/src/error_codes/E0714.md index 45d1cafa6906..b75735d602e0 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0714.md +++ b/compiler/rustc_error_codes/src/error_codes/E0714.md @@ -15,5 +15,5 @@ fn main() {} ``` The items of marker traits cannot be overridden, so there's no need to have them -when they cannot be changed per-type anyway. If you wanted them for ergonomic +when they cannot be changed per-type anyway. If you wanted them for ergonomic reasons, consider making an extension trait instead. diff --git a/compiler/rustc_errors/src/diagnostic.rs b/compiler/rustc_errors/src/diagnostic.rs index e19a6fe0ee9b..51b2ff6a0038 100644 --- a/compiler/rustc_errors/src/diagnostic.rs +++ b/compiler/rustc_errors/src/diagnostic.rs @@ -114,9 +114,9 @@ pub struct Diagnostic { pub suggestions: Result, SuggestionsDisabled>, args: FxHashMap, DiagnosticArgValue<'static>>, - /// This is not used for highlighting or rendering any error message. Rather, it can be used - /// as a sort key to sort a buffer of diagnostics. By default, it is the primary span of - /// `span` if there is one. Otherwise, it is `DUMMY_SP`. + /// This is not used for highlighting or rendering any error message. Rather, it can be used + /// as a sort key to sort a buffer of diagnostics. By default, it is the primary span of + /// `span` if there is one. Otherwise, it is `DUMMY_SP`. pub sort_span: Span, /// If diagnostic is from Lint, custom hash function ignores notes diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index 7f01df321010..628e19999215 100644 --- a/compiler/rustc_errors/src/emitter.rs +++ b/compiler/rustc_errors/src/emitter.rs @@ -1791,7 +1791,7 @@ impl EmitterWriter { if let Some(span) = span.primary_span() { // Compare the primary span of the diagnostic with the span of the suggestion - // being emitted. If they belong to the same file, we don't *need* to show the + // being emitted. If they belong to the same file, we don't *need* to show the // file name, saving in verbosity, but if it *isn't* we do need it, otherwise we're // telling users to make a change but not clarifying *where*. let loc = sm.lookup_char_pos(parts[0].span.lo()); @@ -2529,11 +2529,11 @@ fn emit_to_destination( // // On Unix systems, we write into a buffered terminal rather than directly to a terminal. When // the .flush() is called we take the buffer created from the buffered writes and write it at - // one shot. Because the Unix systems use ANSI for the colors, which is a text-based styling + // one shot. Because the Unix systems use ANSI for the colors, which is a text-based styling // scheme, this buffered approach works and maintains the styling. // // On Windows, styling happens through calls to a terminal API. This prevents us from using the - // same buffering approach. Instead, we use a global Windows mutex, which we acquire long + // same buffering approach. Instead, we use a global Windows mutex, which we acquire long // enough to output the full error message, then we release. let _buffer_lock = lock::acquire_global_lock("rustc_errors"); for (pos, line) in rendered_buffer.iter().enumerate() { diff --git a/compiler/rustc_expand/src/mbe/quoted.rs b/compiler/rustc_expand/src/mbe/quoted.rs index 878284f5928d..bc298b0ad2b1 100644 --- a/compiler/rustc_expand/src/mbe/quoted.rs +++ b/compiler/rustc_expand/src/mbe/quoted.rs @@ -171,7 +171,7 @@ fn parse_tree( } else { match delim { Delimiter::Brace => { - // The delimiter is `{`. This indicates the beginning + // The delimiter is `{`. This indicates the beginning // of a meta-variable expression (e.g. `${count(ident)}`). // Try to parse the meta-variable expression. match MetaVarExpr::parse(&tts, delim_span.entire(), sess) { @@ -200,7 +200,7 @@ fn parse_tree( } } // If we didn't find a metavar expression above, then we must have a - // repetition sequence in the macro (e.g. `$(pat)*`). Parse the + // repetition sequence in the macro (e.g. `$(pat)*`). Parse the // contents of the sequence itself let sequence = parse(tts, parsing_patterns, sess, node_id, features, edition); // Get the Kleene operator and optional separator diff --git a/compiler/rustc_expand/src/proc_macro_server.rs b/compiler/rustc_expand/src/proc_macro_server.rs index 768bdab8a541..af38077b0806 100644 --- a/compiler/rustc_expand/src/proc_macro_server.rs +++ b/compiler/rustc_expand/src/proc_macro_server.rs @@ -230,7 +230,7 @@ impl FromInternal<(TokenStream, &mut Rustc<'_, '_>)> for Vec` expands to an opaque type like `type /// Foo<'a> = impl Trait`, but `impl Trait { pub hash_without_bodies: Fingerprint, /// Full HIR for the current owner. // The zeroth node's parent should never be accessed: the owner's parent is computed by the - // hir_owner_parent query. It is set to `ItemLocalId::INVALID` to force an ICE if accidentally + // hir_owner_parent query. It is set to `ItemLocalId::INVALID` to force an ICE if accidentally // used. pub nodes: IndexVec>>, /// Content of local bodies. diff --git a/compiler/rustc_hir_analysis/src/astconv/errors.rs b/compiler/rustc_hir_analysis/src/astconv/errors.rs index 5368dc0735bc..232ef2079d6b 100644 --- a/compiler/rustc_hir_analysis/src/astconv/errors.rs +++ b/compiler/rustc_hir_analysis/src/astconv/errors.rs @@ -331,7 +331,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { } if potential_assoc_types.len() == assoc_items.len() { // When the amount of missing associated types equals the number of - // extra type arguments present. A suggesting to replace the generic args with + // extra type arguments present. A suggesting to replace the generic args with // associated types is already emitted. already_has_generics_args_suggestion = true; } else if let (Ok(snippet), false) = diff --git a/compiler/rustc_hir_analysis/src/astconv/generics.rs b/compiler/rustc_hir_analysis/src/astconv/generics.rs index ce3682a8f2d5..7a499327dbf2 100644 --- a/compiler/rustc_hir_analysis/src/astconv/generics.rs +++ b/compiler/rustc_hir_analysis/src/astconv/generics.rs @@ -337,13 +337,13 @@ pub fn create_substs_for_generic_args<'tcx, 'a>( // We should never be able to reach this point with well-formed input. // There are three situations in which we can encounter this issue. // - // 1. The number of arguments is incorrect. In this case, an error - // will already have been emitted, and we can ignore it. - // 2. There are late-bound lifetime parameters present, yet the - // lifetime arguments have also been explicitly specified by the - // user. - // 3. We've inferred some lifetimes, which have been provided later (i.e. - // after a type or const). We want to throw an error in this case. + // 1. The number of arguments is incorrect. In this case, an error + // will already have been emitted, and we can ignore it. + // 2. There are late-bound lifetime parameters present, yet the + // lifetime arguments have also been explicitly specified by the + // user. + // 3. We've inferred some lifetimes, which have been provided later (i.e. + // after a type or const). We want to throw an error in this case. if arg_count.correct.is_ok() && arg_count.explicit_late_bound == ExplicitLateBound::No diff --git a/compiler/rustc_hir_analysis/src/astconv/mod.rs b/compiler/rustc_hir_analysis/src/astconv/mod.rs index 9fa0e6e8eaa6..6a673e8ae4e3 100644 --- a/compiler/rustc_hir_analysis/src/astconv/mod.rs +++ b/compiler/rustc_hir_analysis/src/astconv/mod.rs @@ -993,7 +993,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { /// ``` /// /// The `sized_by_default` parameter indicates if, in this context, the `param_ty` should be - /// considered `Sized` unless there is an explicit `?Sized` bound. This would be true in the + /// considered `Sized` unless there is an explicit `?Sized` bound. This would be true in the /// example above, but is not true in supertrait listings like `trait Foo: Bar + Baz`. /// /// `span` should be the declaration size of the parameter. @@ -1498,7 +1498,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { i.trait_ref().map_bound(|trait_ref: ty::TraitRef<'tcx>| { assert_eq!(trait_ref.self_ty(), dummy_self); - // Verify that `dummy_self` did not leak inside default type parameters. This + // Verify that `dummy_self` did not leak inside default type parameters. This // could not be done at path creation, since we need to see through trait aliases. let mut missing_type_params = vec![]; let mut references_self = false; @@ -2694,7 +2694,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { } /// Parses the programmer's textual representation of a type into our - /// internal notion of a type. This is meant to be used within a path. + /// internal notion of a type. This is meant to be used within a path. pub fn ast_ty_to_ty_in_path(&self, ast_ty: &hir::Ty<'_>) -> Ty<'tcx> { self.ast_ty_to_ty_inner(ast_ty, false, true) } diff --git a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs index 7af89934d142..b193e7b4d4cd 100644 --- a/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs +++ b/compiler/rustc_hir_analysis/src/check/compare_impl_item.rs @@ -136,7 +136,7 @@ pub(super) fn compare_impl_method<'tcx>( /// <'a> fn(t: &'i0 U0, m: &'a) -> Foo /// /// This type is also the same but the name of the bound region (`'a` -/// vs `'b`). However, the normal subtyping rules on fn types handle +/// vs `'b`). However, the normal subtyping rules on fn types handle /// this kind of equivalency just fine. /// /// We now use these substitutions to ensure that all declared bounds are @@ -625,7 +625,7 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>( match infcx.fully_resolve(ty) { Ok(ty) => { // `ty` contains free regions that we created earlier while liberating the - // trait fn signature. However, projection normalization expects `ty` to + // trait fn signature. However, projection normalization expects `ty` to // contains `def_id`'s early-bound regions. let id_substs = InternalSubsts::identity_for_item(tcx, def_id); debug!(?id_substs, ?substs); @@ -883,7 +883,7 @@ fn check_region_bounds_on_impl_item<'tcx>( // Must have same number of early-bound lifetime parameters. // Unfortunately, if the user screws up the bounds, then this - // will change classification between early and late. E.g., + // will change classification between early and late. E.g., // if in trait we have `<'a,'b:'a>`, and in impl we just have // `<'a,'b>`, then we have 2 early-bound lifetime parameters // in trait but 0 in the impl. But if we report "expected 2 @@ -994,9 +994,9 @@ fn compare_self_type<'tcx>( impl_trait_ref: ty::TraitRef<'tcx>, ) -> Result<(), ErrorGuaranteed> { // Try to give more informative error messages about self typing - // mismatches. Note that any mismatch will also be detected + // mismatches. Note that any mismatch will also be detected // below, where we construct a canonical function type that - // includes the self parameter as a normal parameter. It's just + // includes the self parameter as a normal parameter. It's just // that the error messages you get out of this code are a bit more // inscrutable, particularly for cases where one method has no // self. diff --git a/compiler/rustc_hir_analysis/src/check/dropck.rs b/compiler/rustc_hir_analysis/src/check/dropck.rs index d6e3ddb0a613..64fd61c1359b 100644 --- a/compiler/rustc_hir_analysis/src/check/dropck.rs +++ b/compiler/rustc_hir_analysis/src/check/dropck.rs @@ -46,7 +46,7 @@ pub fn check_drop_impl(tcx: TyCtxt<'_>, drop_impl_did: DefId) -> Result<(), Erro ) } _ => { - // Destructors only work on nominal types. This was + // Destructors only work on nominal types. This was // already checked by coherence, but compilation may // not have been terminated. let span = tcx.def_span(drop_impl_did); diff --git a/compiler/rustc_hir_analysis/src/check/mod.rs b/compiler/rustc_hir_analysis/src/check/mod.rs index 382c3f529451..14bca34b77be 100644 --- a/compiler/rustc_hir_analysis/src/check/mod.rs +++ b/compiler/rustc_hir_analysis/src/check/mod.rs @@ -14,23 +14,23 @@ can be broken down into several distinct phases: - main: the main pass does the lion's share of the work: it determines the types of all expressions, resolves - methods, checks for most invalid conditions, and so forth. In + methods, checks for most invalid conditions, and so forth. In some cases, where a type is unknown, it may create a type or region variable and use that as the type of an expression. In the process of checking, various constraints will be placed on these type variables through the subtyping relationships requested - through the `demand` module. The `infer` module is in charge + through the `demand` module. The `infer` module is in charge of resolving those constraints. - regionck: after main is complete, the regionck pass goes over all types looking for regions and making sure that they did not escape - into places where they are not in scope. This may also influence the + into places where they are not in scope. This may also influence the final assignments of the various region variables if there is some flexibility. - writeback: writes the final types within a function body, replacing - type variables with their final inferred types. These final types + type variables with their final inferred types. These final types are written into the `tcx.node_types` table, which should *never* contain any reference to a type variable. @@ -38,8 +38,8 @@ can be broken down into several distinct phases: While type checking a function, the intermediate types for the expressions, blocks, and so forth contained within the function are -stored in `fcx.node_types` and `fcx.node_substs`. These types -may contain unresolved type variables. After type checking is +stored in `fcx.node_types` and `fcx.node_substs`. These types +may contain unresolved type variables. After type checking is complete, the functions in the writeback module are used to take the types from this table, resolve them, and then write them into their permanent home in the type context `tcx`. @@ -51,12 +51,12 @@ nodes within the function. The types of top-level items, which never contain unbound type variables, are stored directly into the `tcx` typeck_results. -N.B., a type variable is not the same thing as a type parameter. A +N.B., a type variable is not the same thing as a type parameter. A type variable is an instance of a type parameter. That is, given a generic function `fn foo(t: T)`, while checking the function `foo`, the type `ty_param(0)` refers to the type `T`, which is treated in abstract. However, when `foo()` is called, `T` will be -substituted for a fresh type variable `N`. This variable will +substituted for a fresh type variable `N`. This variable will eventually be resolved to some concrete type (which might itself be a type parameter). @@ -441,7 +441,7 @@ fn suggestion_signature(assoc: &ty::AssocItem, tcx: TyCtxt<'_>) -> String { ty::AssocKind::Fn => { // We skip the binder here because the binder would deanonymize all // late-bound regions, and we don't want method signatures to show up - // `as for<'r> fn(&'r MyType)`. Pretty-printing handles late-bound + // `as for<'r> fn(&'r MyType)`. Pretty-printing handles late-bound // regions just fine, showing `fn(&MyType)`. fn_sig_suggestion( tcx, diff --git a/compiler/rustc_hir_analysis/src/check/region.rs b/compiler/rustc_hir_analysis/src/check/region.rs index b315ebad4686..479a10d6000a 100644 --- a/compiler/rustc_hir_analysis/src/check/region.rs +++ b/compiler/rustc_hir_analysis/src/check/region.rs @@ -325,7 +325,7 @@ fn resolve_expr<'tcx>(visitor: &mut RegionResolutionVisitor<'tcx>, expr: &'tcx h // The idea is that call.callee_id represents *the time when // the invoked function is actually running* and call.id // represents *the time to prepare the arguments and make the - // call*. See the section "Borrows in Calls" borrowck/README.md + // call*. See the section "Borrows in Calls" borrowck/README.md // for an extended explanation of why this distinction is // important. // diff --git a/compiler/rustc_hir_analysis/src/check_unused.rs b/compiler/rustc_hir_analysis/src/check_unused.rs index 5749b04783ce..ebb78213a63a 100644 --- a/compiler/rustc_hir_analysis/src/check_unused.rs +++ b/compiler/rustc_hir_analysis/src/check_unused.rs @@ -50,7 +50,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) { fn unused_crates_lint(tcx: TyCtxt<'_>) { let lint = lint::builtin::UNUSED_EXTERN_CRATES; - // Collect first the crates that are completely unused. These we + // Collect first the crates that are completely unused. These we // can always suggest removing (no matter which edition we are // in). let unused_extern_crates: FxHashMap = tcx diff --git a/compiler/rustc_hir_analysis/src/coherence/builtin.rs b/compiler/rustc_hir_analysis/src/coherence/builtin.rs index 2e2c1591e9b4..74179a2bc68c 100644 --- a/compiler/rustc_hir_analysis/src/coherence/builtin.rs +++ b/compiler/rustc_hir_analysis/src/coherence/builtin.rs @@ -438,7 +438,7 @@ pub fn coerce_unsized_info<'tcx>(tcx: TyCtxt<'tcx>, impl_did: DefId) -> CoerceUn // when this coercion occurs, we would be changing the // field `ptr` from a thin pointer of type `*mut [i32; // 3]` to a fat pointer of type `*mut [i32]` (with - // extra data `3`). **The purpose of this check is to + // extra data `3`). **The purpose of this check is to // make sure that we know how to do this conversion.** // // To check if this impl is legal, we would walk down diff --git a/compiler/rustc_hir_analysis/src/coherence/mod.rs b/compiler/rustc_hir_analysis/src/coherence/mod.rs index 1bf3768fead3..ba347851af88 100644 --- a/compiler/rustc_hir_analysis/src/coherence/mod.rs +++ b/compiler/rustc_hir_analysis/src/coherence/mod.rs @@ -171,7 +171,7 @@ fn check_object_overlap<'tcx>( for component_def_id in component_def_ids { if !tcx.is_object_safe(component_def_id) { // Without the 'object_safe_for_dispatch' feature this is an error - // which will be reported by wfcheck. Ignore it here. + // which will be reported by wfcheck. Ignore it here. // This is tested by `coherence-impl-trait-for-trait-object-safe.rs`. // With the feature enabled, the trait is not implemented automatically, // so this is valid. diff --git a/compiler/rustc_hir_analysis/src/collect/lifetimes.rs b/compiler/rustc_hir_analysis/src/collect/lifetimes.rs index 35f10dc87374..9435022ddf0e 100644 --- a/compiler/rustc_hir_analysis/src/collect/lifetimes.rs +++ b/compiler/rustc_hir_analysis/src/collect/lifetimes.rs @@ -1,9 +1,9 @@ //! Resolution of early vs late bound lifetimes. //! -//! Name resolution for lifetimes is performed on the AST and embedded into HIR. From this +//! Name resolution for lifetimes is performed on the AST and embedded into HIR. From this //! information, typechecking needs to transform the lifetime parameters into bound lifetimes. -//! Lifetimes can be early-bound or late-bound. Construction of typechecking terms needs to visit -//! the types in HIR to identify late-bound lifetimes and assign their Debruijn indices. This file +//! Lifetimes can be early-bound or late-bound. Construction of typechecking terms needs to visit +//! the types in HIR to identify late-bound lifetimes and assign their Debruijn indices. This file //! is also responsible for assigning their semantics to implicit lifetimes in trait objects. use rustc_ast::walk_list; @@ -70,7 +70,7 @@ impl RegionExt for Region { /// that it corresponds to. /// /// FIXME. This struct gets converted to a `ResolveLifetimes` for -/// actual use. It has the same data, but indexed by `LocalDefId`. This +/// actual use. It has the same data, but indexed by `LocalDefId`. This /// is silly. #[derive(Debug, Default)] struct NamedRegionMap { @@ -1283,7 +1283,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> { // We may fail to resolve higher-ranked lifetimes that are mentioned by APIT. // AST-based resolution does not care for impl-trait desugaring, which are the - // responibility of lowering. This may create a mismatch between the resolution + // responibility of lowering. This may create a mismatch between the resolution // AST found (`region_def_id`) which points to HRTB, and what HIR allows. // ``` // fn foo(x: impl for<'a> Trait<'a, Assoc = impl Copy + 'a>) {} @@ -1434,7 +1434,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> { DefKind::ConstParam => Some(ObjectLifetimeDefault::Empty), DefKind::TyParam => Some(self.tcx.object_lifetime_default(param.def_id)), // We may also get a `Trait` or `TraitAlias` because of how generics `Self` parameter - // works. Ignore it because it can't have a meaningful lifetime default. + // works. Ignore it because it can't have a meaningful lifetime default. DefKind::LifetimeParam | DefKind::Trait | DefKind::TraitAlias => None, dk => bug!("unexpected def_kind {:?}", dk), } diff --git a/compiler/rustc_hir_analysis/src/collect/predicates_of.rs b/compiler/rustc_hir_analysis/src/collect/predicates_of.rs index 234253556845..d43a2d72cecc 100644 --- a/compiler/rustc_hir_analysis/src/collect/predicates_of.rs +++ b/compiler/rustc_hir_analysis/src/collect/predicates_of.rs @@ -246,7 +246,7 @@ fn gather_explicit_predicates_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericP // Subtle: before we store the predicates into the tcx, we // sort them so that predicates like `T: Foo` come - // before uses of `U`. This avoids false ambiguity errors + // before uses of `U`. This avoids false ambiguity errors // in trait checking. See `setup_constraining_predicates` // for details. if let Node::Item(&Item { kind: ItemKind::Impl { .. }, .. }) = node { diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs index ddc5b7668812..9f8da463650f 100644 --- a/compiler/rustc_hir_analysis/src/lib.rs +++ b/compiler/rustc_hir_analysis/src/lib.rs @@ -22,7 +22,7 @@ several major phases: 4. Finally, the check phase then checks function bodies and so forth. Within the check phase, we check each function body one at a time (bodies of function expressions are checked as part of the - containing function). Inference is used to supply types wherever + containing function). Inference is used to supply types wherever they are unknown. The actual checking of a function itself has several phases (check, regionck, writeback), as discussed in the documentation for the [`check`] module. @@ -46,7 +46,7 @@ independently: local variables, type parameters, etc as necessary. - infer: finds the types to use for each type variable such that - all subtyping and assignment constraints are met. In essence, the check + all subtyping and assignment constraints are met. In essence, the check module specifies the constraints, and the infer module solves them. ## Note @@ -542,7 +542,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) -> Result<(), ErrorGuaranteed> { pub fn hir_ty_to_ty<'tcx>(tcx: TyCtxt<'tcx>, hir_ty: &hir::Ty<'_>) -> Ty<'tcx> { // In case there are any projections, etc., find the "environment" // def-ID that will be used to determine the traits/predicates in - // scope. This is derived from the enclosing item-like thing. + // scope. This is derived from the enclosing item-like thing. let env_def_id = tcx.hir().get_parent_item(hir_ty.hir_id); let item_cx = self::collect::ItemCtxt::new(tcx, env_def_id.to_def_id()); item_cx.astconv().ast_ty_to_ty(hir_ty) @@ -555,7 +555,7 @@ pub fn hir_trait_to_predicates<'tcx>( ) -> Bounds<'tcx> { // In case there are any projections, etc., find the "environment" // def-ID that will be used to determine the traits/predicates in - // scope. This is derived from the enclosing item-like thing. + // scope. This is derived from the enclosing item-like thing. let env_def_id = tcx.hir().get_parent_item(hir_trait.hir_ref_id); let item_cx = self::collect::ItemCtxt::new(tcx, env_def_id.to_def_id()); let mut bounds = Bounds::default(); diff --git a/compiler/rustc_hir_analysis/src/outlives/implicit_infer.rs b/compiler/rustc_hir_analysis/src/outlives/implicit_infer.rs index a46f2a94cd28..925042436dec 100644 --- a/compiler/rustc_hir_analysis/src/outlives/implicit_infer.rs +++ b/compiler/rustc_hir_analysis/src/outlives/implicit_infer.rs @@ -139,7 +139,7 @@ fn insert_required_predicates_to_be_wf<'tcx>( if let Some(unsubstituted_predicates) = global_inferred_outlives.get(&def.did()) { for (unsubstituted_predicate, &span) in &unsubstituted_predicates.0 { // `unsubstituted_predicate` is `U: 'b` in the - // example above. So apply the substitution to + // example above. So apply the substitution to // get `T: 'a` (or `predicate`): let predicate = unsubstituted_predicates .rebind(*unsubstituted_predicate) diff --git a/compiler/rustc_hir_analysis/src/outlives/utils.rs b/compiler/rustc_hir_analysis/src/outlives/utils.rs index b51b740d08e2..c930b921b75c 100644 --- a/compiler/rustc_hir_analysis/src/outlives/utils.rs +++ b/compiler/rustc_hir_analysis/src/outlives/utils.rs @@ -48,7 +48,7 @@ pub(crate) fn insert_outlives_predicate<'tcx>( // ``` // // Here `outlived_region = 'a` and `kind = &'b - // u32`. Decomposing `&'b u32` into + // u32`. Decomposing `&'b u32` into // components would yield `'b`, and we add the // where clause that `'b: 'a`. insert_outlives_predicate( @@ -71,7 +71,7 @@ pub(crate) fn insert_outlives_predicate<'tcx>( // ``` // // Here `outlived_region = 'a` and `kind = - // Vec`. Decomposing `Vec` into + // Vec`. Decomposing `Vec` into // components would yield `U`, and we add the // where clause that `U: 'a`. let ty: Ty<'tcx> = param_ty.to_ty(tcx); @@ -115,7 +115,7 @@ pub(crate) fn insert_outlives_predicate<'tcx>( Component::EscapingProjection(_) => { // As above, but the projection involves - // late-bound regions. Therefore, the WF + // late-bound regions. Therefore, the WF // requirement is not checked in type definition // but at fn call site, so ignore it. // @@ -175,7 +175,7 @@ fn is_free_region(region: Region<'_>) -> bool { // } // // The type above might generate a `T: 'b` bound, but we can - // ignore it. We can't put it on the struct header anyway. + // ignore it. We can't put it on the struct header anyway. ty::ReLateBound(..) => false, // These regions don't appear in types from type declarations: diff --git a/compiler/rustc_hir_analysis/src/variance/solve.rs b/compiler/rustc_hir_analysis/src/variance/solve.rs index 97aca621aa21..c9b59d35704b 100644 --- a/compiler/rustc_hir_analysis/src/variance/solve.rs +++ b/compiler/rustc_hir_analysis/src/variance/solve.rs @@ -44,7 +44,7 @@ pub fn solve_constraints<'tcx>( impl<'a, 'tcx> SolveContext<'a, 'tcx> { fn solve(&mut self) { - // Propagate constraints until a fixed point is reached. Note + // Propagate constraints until a fixed point is reached. Note // that the maximum number of iterations is 2C where C is the // number of constraints (each variable can change values at most // twice). Since number of constraints is linear in size of the diff --git a/compiler/rustc_hir_typeck/src/closure.rs b/compiler/rustc_hir_typeck/src/closure.rs index 399702fd41ab..26e8dd654c13 100644 --- a/compiler/rustc_hir_typeck/src/closure.rs +++ b/compiler/rustc_hir_typeck/src/closure.rs @@ -524,7 +524,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // FIXME(#45727): As discussed in [this comment][c1], naively // forcing equality here actually results in suboptimal error - // messages in some cases. For now, if there would have been + // messages in some cases. For now, if there would have been // an obvious error, we fallback to declaring the type of the // closure to be the one the user gave, which allows other // error message code to trigger. diff --git a/compiler/rustc_hir_typeck/src/coercion.rs b/compiler/rustc_hir_typeck/src/coercion.rs index 7e1c0faa453a..bbf7b81a2cc6 100644 --- a/compiler/rustc_hir_typeck/src/coercion.rs +++ b/compiler/rustc_hir_typeck/src/coercion.rs @@ -313,7 +313,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> { // If we have a parameter of type `&M T_a` and the value // provided is `expr`, we will be adding an implicit borrow, - // meaning that we convert `f(expr)` to `f(&M *expr)`. Therefore, + // meaning that we convert `f(expr)` to `f(&M *expr)`. Therefore, // to type check, we will construct the type that `&M*expr` would // yield. @@ -340,7 +340,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> { continue; } - // At this point, we have deref'd `a` to `referent_ty`. So + // At this point, we have deref'd `a` to `referent_ty`. So // imagine we are coercing from `&'a mut Vec` to `&'b mut [T]`. // In the autoderef loop for `&'a mut Vec`, we would get // three callbacks: @@ -371,7 +371,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> { // - if in sub mode, that means we want to use `'b` (the // region from the target reference) for both // pointers [2]. This is because sub mode (somewhat - // arbitrarily) returns the subtype region. In the case + // arbitrarily) returns the subtype region. In the case // where we are coercing to a target type, we know we // want to use that target type region (`'b`) because -- // for the program to type-check -- it must be the @@ -383,7 +383,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> { // annotate the region of a borrow), and regionck has // code that adds edges from the region of a borrow // (`'b`, here) into the regions in the borrowed - // expression (`*x`, here). (Search for "link".) + // expression (`*x`, here). (Search for "link".) // - if in lub mode, things can get fairly complicated. The // easiest thing is just to make a fresh // region variable [4], which effectively means we defer @@ -457,7 +457,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> { if ty == a && mt_a.mutbl.is_not() && autoderef.step_count() == 1 { // As a special case, if we would produce `&'a *x`, that's // a total no-op. We end up with the type `&'a T` just as - // we started with. In that case, just skip it + // we started with. In that case, just skip it // altogether. This is just an optimization. // // Note that for `&mut`, we DO want to reborrow -- @@ -1476,7 +1476,7 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> { // if let Some(x) = ... { } // // we wind up with a second match arm that is like `_ => - // ()`. That is the case we are considering here. We take + // ()`. That is the case we are considering here. We take // a different path to get the right "expected, found" // message and so forth (and because we know that // `expression_ty` will be unit). diff --git a/compiler/rustc_hir_typeck/src/expr.rs b/compiler/rustc_hir_typeck/src/expr.rs index ba1a5a0cb03e..bc7474cdfcf3 100644 --- a/compiler/rustc_hir_typeck/src/expr.rs +++ b/compiler/rustc_hir_typeck/src/expr.rs @@ -459,9 +459,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } hir::BorrowKind::Ref => { // Note: at this point, we cannot say what the best lifetime - // is to use for resulting pointer. We want to use the + // is to use for resulting pointer. We want to use the // shortest lifetime possible so as to avoid spurious borrowck - // errors. Moreover, the longest lifetime will depend on the + // errors. Moreover, the longest lifetime will depend on the // precise details of the value whose address is being taken // (and how long it is valid), which we don't know yet until // type inference is complete. @@ -687,7 +687,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } else { // If `ctxt.coerce` is `None`, we can just ignore - // the type of the expression. This is because + // the type of the expression. This is because // either this was a break *without* a value, in // which case it is always a legal type (`()`), or // else an error would have been flagged by the diff --git a/compiler/rustc_hir_typeck/src/fallback.rs b/compiler/rustc_hir_typeck/src/fallback.rs index 2cc7b357c0a4..dde8797804f0 100644 --- a/compiler/rustc_hir_typeck/src/fallback.rs +++ b/compiler/rustc_hir_typeck/src/fallback.rs @@ -42,7 +42,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { // We now see if we can make progress. This might cause us to // unify inference variables for opaque types, since we may // have unified some other type variables during the first - // phase of fallback. This means that we only replace + // phase of fallback. This means that we only replace // inference variables with their underlying opaque types as a // last resort. // @@ -76,7 +76,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { // (and the setting of `#![feature(never_type_fallback)]`). // // Fallback becomes very dubious if we have encountered - // type-checking errors. In that case, fallback to Error. + // type-checking errors. In that case, fallback to Error. // // Sets `FnCtxt::fallback_has_occurred` if fallback is performed // during this call. @@ -136,7 +136,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { /// constrained to have some other type). /// /// However, the fallback used to be `()` (before the `!` type was - /// added). Moreover, there are cases where the `!` type 'leaks + /// added). Moreover, there are cases where the `!` type 'leaks /// out' from dead code into type variables that affect live /// code. The most common case is something like this: /// @@ -149,7 +149,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { /// ``` /// /// Here, coercing the type `!` into `?M` will create a diverging - /// type variable `?X` where `?X <: ?M`. We also have that `?D <: + /// type variable `?X` where `?X <: ?M`. We also have that `?D <: /// ?M`. If `?M` winds up unconstrained, then `?X` will /// fallback. If it falls back to `!`, then all the type variables /// will wind up equal to `!` -- this includes the type `?D` @@ -185,7 +185,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> { /// /// The algorithm we use: /// * Identify all variables that are coerced *into* by a - /// diverging variable. Do this by iterating over each + /// diverging variable. Do this by iterating over each /// diverging, unsolved variable and finding all variables /// reachable from there. Call that set `D`. /// * Walk over all unsolved, non-diverging variables, and find diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 005bd164065d..156c02149e7c 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs @@ -452,7 +452,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { && method_call_list.contains(&conversion_method.name) // If receiver is `.clone()` and found type has one of those methods, // we guess that the user wants to convert from a slice type (`&[]` or `&str`) - // to an owned type (`Vec` or `String`). These conversions clone internally, + // to an owned type (`Vec` or `String`). These conversions clone internally, // so we remove the user's `clone` call. { vec![( @@ -649,7 +649,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } ty::Adt(def, _) if def.is_box() && self.can_coerce(box_found, expected) => { - // Check if the parent expression is a call to Pin::new. If it + // Check if the parent expression is a call to Pin::new. If it // is and we were expecting a Box, ergo Pin>, we // can suggest Box::pin. let parent = self.tcx.hir().parent_id(expr.hir_id); diff --git a/compiler/rustc_hir_typeck/src/generator_interior/drop_ranges/record_consumed_borrow.rs b/compiler/rustc_hir_typeck/src/generator_interior/drop_ranges/record_consumed_borrow.rs index 472205be7b5e..ed3d89031570 100644 --- a/compiler/rustc_hir_typeck/src/generator_interior/drop_ranges/record_consumed_borrow.rs +++ b/compiler/rustc_hir_typeck/src/generator_interior/drop_ranges/record_consumed_borrow.rs @@ -116,7 +116,7 @@ impl<'tcx> ExprUseDelegate<'tcx> { // where the `identity(...)` (the rvalue) produces a return type // of `&'rv mut A`, where `'a: 'rv`. We then assign this result to // `'y`, resulting in (transitively) `'a: 'y` (i.e., while `y` is in use, - // `a` will be considered borrowed). Other parts of the code will ensure + // `a` will be considered borrowed). Other parts of the code will ensure // that if `y` is live over a yield, `&'y mut A` appears in the generator // state. If `'y` is live, then any sound region analysis must conclude // that `'a` is also live. So if this causes a bug, blame some other diff --git a/compiler/rustc_hir_typeck/src/mem_categorization.rs b/compiler/rustc_hir_typeck/src/mem_categorization.rs index 0b5dc946c1de..48c75cde9a5f 100644 --- a/compiler/rustc_hir_typeck/src/mem_categorization.rs +++ b/compiler/rustc_hir_typeck/src/mem_categorization.rs @@ -736,7 +736,7 @@ impl<'a, 'tcx> MemCategorizationContext<'a, 'tcx> { } PatKind::Box(ref subpat) | PatKind::Ref(ref subpat, _) => { - // box p1, &p1, &mut p1. we can ignore the mutability of + // box p1, &p1, &mut p1. we can ignore the mutability of // PatKind::Ref since that information is already contained // in the type. let subplace = self.cat_deref(pat, place_with_id)?; diff --git a/compiler/rustc_hir_typeck/src/method/mod.rs b/compiler/rustc_hir_typeck/src/method/mod.rs index 146d5e60c2f3..b810a967a245 100644 --- a/compiler/rustc_hir_typeck/src/method/mod.rs +++ b/compiler/rustc_hir_typeck/src/method/mod.rs @@ -413,7 +413,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Register obligations for the parameters. This will include the // `Self` parameter, which in turn has a bound of the main trait, - // so this also effectively registers `obligation` as well. (We + // so this also effectively registers `obligation` as well. (We // used to register `obligation` explicitly, but that resulted in // double error messages being reported.) // diff --git a/compiler/rustc_incremental/src/assert_dep_graph.rs b/compiler/rustc_incremental/src/assert_dep_graph.rs index 67b4d6d6959f..33a9a0cabb9d 100644 --- a/compiler/rustc_incremental/src/assert_dep_graph.rs +++ b/compiler/rustc_incremental/src/assert_dep_graph.rs @@ -368,7 +368,7 @@ fn walk_between<'q>( ) -> FxHashSet { // This is a bit tricky. We want to include a node only if it is: // (a) reachable from a source and (b) will reach a target. And we - // have to be careful about cycles etc. Luckily efficiency is not + // have to be careful about cycles etc. Luckily efficiency is not // a big concern! #[derive(Copy, Clone, PartialEq)] diff --git a/compiler/rustc_incremental/src/persist/dirty_clean.rs b/compiler/rustc_incremental/src/persist/dirty_clean.rs index d1d328128bc1..ed7b272b13d1 100644 --- a/compiler/rustc_incremental/src/persist/dirty_clean.rs +++ b/compiler/rustc_incremental/src/persist/dirty_clean.rs @@ -1,4 +1,4 @@ -//! Debugging code to test fingerprints computed for query results. For each node marked with +//! Debugging code to test fingerprints computed for query results. For each node marked with //! `#[rustc_clean]` we will compare the fingerprint from the current and from the previous //! compilation session as appropriate: //! diff --git a/compiler/rustc_infer/src/infer/combine.rs b/compiler/rustc_infer/src/infer/combine.rs index 77e38e47fcfa..72676b718fab 100644 --- a/compiler/rustc_infer/src/infer/combine.rs +++ b/compiler/rustc_infer/src/infer/combine.rs @@ -331,7 +331,7 @@ impl<'infcx, 'tcx> CombineFields<'infcx, 'tcx> { debug_assert!(self.infcx.inner.borrow_mut().type_variables().probe(b_vid).is_unknown()); // Generalize type of `a_ty` appropriately depending on the - // direction. As an example, assume: + // direction. As an example, assume: // // - `a_ty == &'x ?1`, where `'x` is some free region and `?1` is an // inference variable, diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/placeholder_error.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/placeholder_error.rs index 202f39521e96..99431567edac 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/placeholder_error.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/placeholder_error.rs @@ -370,7 +370,7 @@ impl<'tcx> NiceRegionError<'_, 'tcx> { // in the types are about to print // - Meanwhile, the `maybe_highlighting_region` calls set up // highlights so that, if they do appear, we will replace - // them `'0` and whatever. (This replacement takes place + // them `'0` and whatever. (This replacement takes place // inside the closure given to `maybe_highlighting_region`.) // // There is some duplication between the calls -- i.e., the diff --git a/compiler/rustc_infer/src/infer/lattice.rs b/compiler/rustc_infer/src/infer/lattice.rs index 0ebc6d55bcba..4dbb4b4d7b4d 100644 --- a/compiler/rustc_infer/src/infer/lattice.rs +++ b/compiler/rustc_infer/src/infer/lattice.rs @@ -78,7 +78,7 @@ where // // Example: if the LHS is a type variable, and RHS is // `Box`, then we current compare `v` to the RHS first, - // which will instantiate `v` with `Box`. Then when `v` + // which will instantiate `v` with `Box`. Then when `v` // is compared to the LHS, we instantiate LHS with `Box`. // But if we did in reverse order, we would create a `v <: // LHS` (or vice versa) constraint and then instantiate diff --git a/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs b/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs index 897545046c33..0b478f4cf5cd 100644 --- a/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs +++ b/compiler/rustc_infer/src/infer/lexical_region_resolve/mod.rs @@ -52,7 +52,7 @@ pub struct LexicalRegionResolutions<'tcx> { #[derive(Copy, Clone, Debug)] pub(crate) enum VarValue<'tcx> { - /// Empty lifetime is for data that is never accessed. We tag the + /// Empty lifetime is for data that is never accessed. We tag the /// empty lifetime with a universe -- the idea is that we don't /// want `exists<'a> { forall<'b> { 'b: 'a } }` to be satisfiable. /// Therefore, the `'empty` in a universe `U` is less than all @@ -510,7 +510,7 @@ impl<'cx, 'tcx> LexicalResolver<'cx, 'tcx> { } // If both `a` and `b` are free, consult the declared - // relationships. Note that this can be more precise than the + // relationships. Note that this can be more precise than the // `lub` relationship defined below, since sometimes the "lub" // is actually the `postdom_upper_bound` (see // `TransitiveRelation` for more details). @@ -665,7 +665,7 @@ impl<'cx, 'tcx> LexicalResolver<'cx, 'tcx> { // conflicting regions to report to the user. As we walk, we // trip the flags from false to true, and if we find that // we've already reported an error involving any particular - // node we just stop and don't report the current error. The + // node we just stop and don't report the current error. The // idea is to report errors that derive from independent // regions of the graph, but not those that derive from // overlapping locations. diff --git a/compiler/rustc_infer/src/infer/mod.rs b/compiler/rustc_infer/src/infer/mod.rs index 4acd0d0edfec..f0e42c1fce49 100644 --- a/compiler/rustc_infer/src/infer/mod.rs +++ b/compiler/rustc_infer/src/infer/mod.rs @@ -1105,7 +1105,7 @@ impl<'tcx> InferCtxt<'tcx> { self.tcx.mk_region(ty::ReVar(region_var)) } - /// Return the universe that the region `r` was created in. For + /// Return the universe that the region `r` was created in. For /// most regions (e.g., `'static`, named regions from the user, /// etc) this is the root universe U0. For inference variables or /// placeholders, however, it will return the universe which they @@ -1361,7 +1361,7 @@ impl<'tcx> InferCtxt<'tcx> { } /// Resolve any type variables found in `value` -- but only one - /// level. So, if the variable `?X` is bound to some type + /// level. So, if the variable `?X` is bound to some type /// `Foo`, then this would return `Foo` (but `?Y` may /// itself be bound to a type). /// @@ -1720,7 +1720,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> { if let None = self.tainted_by_errors() { // As a heuristic, just skip reporting region errors // altogether if other errors have been reported while - // this infcx was in use. This is totally hokey but + // this infcx was in use. This is totally hokey but // otherwise we have a hard time separating legit region // errors from silly ones. self.report_region_errors(generic_param_scope, &errors); diff --git a/compiler/rustc_infer/src/infer/nll_relate/mod.rs b/compiler/rustc_infer/src/infer/nll_relate/mod.rs index 1f9d86a78d6e..985cb6463a06 100644 --- a/compiler/rustc_infer/src/infer/nll_relate/mod.rs +++ b/compiler/rustc_infer/src/infer/nll_relate/mod.rs @@ -439,7 +439,7 @@ trait VidValuePair<'tcx>: Debug { fn value_ty(&self) -> Ty<'tcx>; /// Extract the scopes that apply to whichever side of the tuple - /// the vid was found on. See the comment where this is called + /// the vid was found on. See the comment where this is called /// for more details on why we want them. fn vid_scopes<'r, D: TypeRelatingDelegate<'tcx>>( &self, @@ -831,7 +831,7 @@ where /// (these are not explicitly present in the ty representation right /// now). This visitor handles that: it descends the type, tracking /// binder depth, and finds late-bound regions targeting the -/// `for<..`>. For each of those, it creates an entry in +/// `for<..`>. For each of those, it creates an entry in /// `bound_region_scope`. struct ScopeInstantiator<'me, 'tcx> { next_region: &'me mut dyn FnMut(ty::BoundRegion) -> ty::Region<'tcx>, diff --git a/compiler/rustc_infer/src/infer/opaque_types.rs b/compiler/rustc_infer/src/infer/opaque_types.rs index 749e960bfd03..6b54ee9576f6 100644 --- a/compiler/rustc_infer/src/infer/opaque_types.rs +++ b/compiler/rustc_infer/src/infer/opaque_types.rs @@ -112,7 +112,7 @@ impl<'tcx> InferCtxt<'tcx> { DefiningAnchor::Bind(_) => { // Check that this is `impl Trait` type is // declared by `parent_def_id` -- i.e., one whose - // value we are inferring. At present, this is + // value we are inferring. At present, this is // always true during the first phase of // type-check, but not always true later on during // NLL. Once we support named opaque types more fully, @@ -380,7 +380,7 @@ impl<'tcx> InferCtxt<'tcx> { }; let item_kind = &self.tcx.hir().expect_item(def_id).kind; - let hir::ItemKind::OpaqueTy(hir::OpaqueTy { origin, .. }) = item_kind else { + let hir::ItemKind::OpaqueTy(hir::OpaqueTy { origin, .. }) = item_kind else { span_bug!( span, "weird opaque type: {:#?}, {:#?}", diff --git a/compiler/rustc_infer/src/infer/outlives/components.rs b/compiler/rustc_infer/src/infer/outlives/components.rs index aa2b5d067d26..31d978b4ccb2 100644 --- a/compiler/rustc_infer/src/infer/outlives/components.rs +++ b/compiler/rustc_infer/src/infer/outlives/components.rs @@ -153,7 +153,7 @@ fn compute_components<'tcx>( out.push(Component::Projection(*data)); } else { // fallback case: hard code - // OutlivesProjectionComponents. Continue walking + // OutlivesProjectionComponents. Continue walking // through and constrain Pi. let mut subcomponents = smallvec![]; let mut subvisited = SsoHashSet::new(); @@ -195,7 +195,7 @@ fn compute_components<'tcx>( ty::Error(_) => { // (*) Function pointers and trait objects are both binders. // In the RFC, this means we would add the bound regions to - // the "bound regions list". In our representation, no such + // the "bound regions list". In our representation, no such // list is maintained explicitly, because bound regions // themselves can be readily identified. compute_components_recursive(tcx, ty.into(), out, visited); diff --git a/compiler/rustc_infer/src/infer/outlives/obligations.rs b/compiler/rustc_infer/src/infer/outlives/obligations.rs index a85e6a19b11b..07838911c885 100644 --- a/compiler/rustc_infer/src/infer/outlives/obligations.rs +++ b/compiler/rustc_infer/src/infer/outlives/obligations.rs @@ -371,7 +371,7 @@ where // particular). :) First off, we have to choose between using the // OutlivesProjectionEnv, OutlivesProjectionTraitDef, and // OutlivesProjectionComponent rules, any one of which is - // sufficient. If there are no inference variables involved, it's + // sufficient. If there are no inference variables involved, it's // not hard to pick the right rule, but if there are, we're in a // bit of a catch 22: if we picked which rule we were going to // use, we could add constraints to the region inference graph diff --git a/compiler/rustc_infer/src/infer/type_variable.rs b/compiler/rustc_infer/src/infer/type_variable.rs index 7ff086452536..263c6a47dd2a 100644 --- a/compiler/rustc_infer/src/infer/type_variable.rs +++ b/compiler/rustc_infer/src/infer/type_variable.rs @@ -433,7 +433,7 @@ impl<'tcx> ut::UnifyValue for TypeVariableValue<'tcx> { fn unify_values(value1: &Self, value2: &Self) -> Result { match (value1, value2) { // We never equate two type variables, both of which - // have known types. Instead, we recursively equate + // have known types. Instead, we recursively equate // those types. (&TypeVariableValue::Known { .. }, &TypeVariableValue::Known { .. }) => { bug!("equating two type variables, both of which have known types") diff --git a/compiler/rustc_infer/src/traits/util.rs b/compiler/rustc_infer/src/traits/util.rs index 8f0bd3a9abe5..c2ac2c5db26e 100644 --- a/compiler/rustc_infer/src/traits/util.rs +++ b/compiler/rustc_infer/src/traits/util.rs @@ -333,7 +333,7 @@ pub fn transitive_bounds<'tcx>( /// A specialized variant of `elaborate_trait_refs` that only elaborates trait references that may /// define the given associated type `assoc_name`. It uses the /// `super_predicates_that_define_assoc_type` query to avoid enumerating super-predicates that -/// aren't related to `assoc_item`. This is used when resolving types like `Self::Item` or +/// aren't related to `assoc_item`. This is used when resolving types like `Self::Item` or /// `T::Item` and helps to avoid cycle errors (see e.g. #35237). pub fn transitive_bounds_that_define_assoc_type<'tcx>( tcx: TyCtxt<'tcx>, diff --git a/compiler/rustc_lexer/src/lib.rs b/compiler/rustc_lexer/src/lib.rs index 4c65fca29b89..6e815863d06f 100644 --- a/compiler/rustc_lexer/src/lib.rs +++ b/compiler/rustc_lexer/src/lib.rs @@ -2,7 +2,7 @@ //! //! The idea with `rustc_lexer` is to make a reusable library, //! by separating out pure lexing and rustc-specific concerns, like spans, -//! error reporting, and interning. So, rustc_lexer operates directly on `&str`, +//! error reporting, and interning. So, rustc_lexer operates directly on `&str`, //! produces simple tokens which are a pair of type-tag and a bit of original text, //! and does not report errors, instead storing them as flags on the token. //! diff --git a/compiler/rustc_lexer/src/unescape.rs b/compiler/rustc_lexer/src/unescape.rs index 87c44638a8de..8507ca9d89ed 100644 --- a/compiler/rustc_lexer/src/unescape.rs +++ b/compiler/rustc_lexer/src/unescape.rs @@ -299,7 +299,7 @@ where let tail = &tail[first_non_space..]; if let Some(c) = tail.chars().nth(0) { // For error reporting, we would like the span to contain the character that was not - // skipped. The +1 is necessary to account for the leading \ that started the escape. + // skipped. The +1 is necessary to account for the leading \ that started the escape. let end = start + first_non_space + c.len_utf8() + 1; if c.is_whitespace() { callback(start..end, Err(EscapeError::UnskippedWhitespaceWarning)); diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs index 09dfb1022d85..cca36913dea1 100644 --- a/compiler/rustc_lint/src/levels.rs +++ b/compiler/rustc_lint/src/levels.rs @@ -50,7 +50,7 @@ rustc_index::newtype_index! { } } -/// Specifications found at this position in the stack. This map only represents the lints +/// Specifications found at this position in the stack. This map only represents the lints /// found for one set of attributes (like `shallow_lint_levels_on` does). /// /// We store the level specifications as a linked list. @@ -163,7 +163,7 @@ fn shallow_lint_levels_on(tcx: TyCtxt<'_>, owner: hir::OwnerId) -> ShallowLintLe match attrs.map.range(..) { // There is only something to do if there are attributes at all. [] => {} - // Most of the time, there is only one attribute. Avoid fetching HIR in that case. + // Most of the time, there is only one attribute. Avoid fetching HIR in that case. [(local_id, _)] => levels.add_id(HirId { owner, local_id: *local_id }), // Otherwise, we need to visit the attributes in source code order, so we fetch HIR and do // a standard visit. diff --git a/compiler/rustc_lint/src/lints.rs b/compiler/rustc_lint/src/lints.rs index c3782a496891..c997d8945d16 100644 --- a/compiler/rustc_lint/src/lints.rs +++ b/compiler/rustc_lint/src/lints.rs @@ -277,7 +277,7 @@ impl AddToDiagnostic for SuggestChangingAssocTypes<'_, '_> { ) -> rustc_errors::SubdiagnosticMessage, { // Access to associates types should use `::Assoc`, which does not need a - // bound. Let's see if this type does that. + // bound. Let's see if this type does that. // We use a HIR visitor to walk the type. use rustc_hir::intravisit::{self, Visitor}; diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp index 2865ea892733..f728bff0e3b9 100644 --- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp @@ -461,7 +461,7 @@ extern "C" void LLVMRustAddLibraryInfo(LLVMPassManagerRef PMR, LLVMModuleRef M, extern "C" void LLVMRustSetLLVMOptions(int Argc, char **Argv) { // Initializing the command-line options more than once is not allowed. So, - // check if they've already been initialized. (This could happen if we're + // check if they've already been initialized. (This could happen if we're // being called from rustpkg, for example). If the arguments change, then // that's just kinda unfortunate. static bool Initialized = false; @@ -1428,7 +1428,7 @@ LLVMRustThinLTOBufferLen(const LLVMRustThinLTOBuffer *Buffer) { } // This is what we used to parse upstream bitcode for actual ThinLTO -// processing. We'll call this once per module optimized through ThinLTO, and +// processing. We'll call this once per module optimized through ThinLTO, and // it'll be called concurrently on many threads. extern "C" LLVMModuleRef LLVMRustParseBitcodeForLTO(LLVMContextRef Context, diff --git a/compiler/rustc_metadata/src/fs.rs b/compiler/rustc_metadata/src/fs.rs index 7601f6bd3221..f6431899731f 100644 --- a/compiler/rustc_metadata/src/fs.rs +++ b/compiler/rustc_metadata/src/fs.rs @@ -90,7 +90,7 @@ pub fn encode_and_write_metadata(tcx: TyCtxt<'_>) -> (EncodedMetadata, bool) { let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata"); // If the user requests metadata as output, rename `metadata_filename` - // to the expected output `out_filename`. The match above should ensure + // to the expected output `out_filename`. The match above should ensure // this file always exists. let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata); let (metadata_filename, metadata_tmpdir) = if need_metadata_file { diff --git a/compiler/rustc_metadata/src/locator.rs b/compiler/rustc_metadata/src/locator.rs index 92dc5bd41cba..0f5f74007c10 100644 --- a/compiler/rustc_metadata/src/locator.rs +++ b/compiler/rustc_metadata/src/locator.rs @@ -591,7 +591,7 @@ impl<'a> CrateLocator<'a> { Err(MetadataError::LoadFailure(err)) => { info!("no metadata found: {}", err); // The file was present and created by the same compiler version, but we - // couldn't load it for some reason. Give a hard error instead of silently + // couldn't load it for some reason. Give a hard error instead of silently // ignoring it, but only if we would have given an error anyway. self.crate_rejections .via_invalid diff --git a/compiler/rustc_metadata/src/native_libs.rs b/compiler/rustc_metadata/src/native_libs.rs index 59869ee41737..6f05c76e89de 100644 --- a/compiler/rustc_metadata/src/native_libs.rs +++ b/compiler/rustc_metadata/src/native_libs.rs @@ -433,10 +433,10 @@ impl<'tcx> Collector<'tcx> { } // Update kind and, optionally, the name of all native libraries - // (there may be more than one) with the specified name. If any + // (there may be more than one) with the specified name. If any // library is mentioned more than once, keep the latest mention // of it, so that any possible dependent libraries appear before - // it. (This ensures that the linker is able to see symbols from + // it. (This ensures that the linker is able to see symbols from // all possible dependent libraries before linking in the library // in question.) for passed_lib in &self.tcx.sess.opts.libs { diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index 030328d1e26f..6407ff7d0971 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -172,7 +172,7 @@ impl<'a, 'tcx> Encodable> for SyntaxContext { impl<'a, 'tcx> Encodable> for ExpnId { fn encode(&self, s: &mut EncodeContext<'a, 'tcx>) { if self.krate == LOCAL_CRATE { - // We will only write details for local expansions. Non-local expansions will fetch + // We will only write details for local expansions. Non-local expansions will fetch // data from the corresponding crate's metadata. // FIXME(#43047) FIXME(#74731) We may eventually want to avoid relying on external // metadata from proc-macro crates. diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 48bae7a2d4e1..9e63c2bd2216 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -582,10 +582,10 @@ impl<'hir> Map<'hir> { /// Visits all item-likes in the crate in some deterministic (but unspecified) order. If you /// need to process every item-like, and don't care about visiting nested items in a particular - /// order then this method is the best choice. If you do care about this nesting, you should + /// order then this method is the best choice. If you do care about this nesting, you should /// use the `tcx.hir().walk_toplevel_module`. /// - /// Note that this function will access HIR for all the item-likes in the crate. If you only + /// Note that this function will access HIR for all the item-likes in the crate. If you only /// need to access some of them, it is usually better to manually loop on the iterators /// provided by `tcx.hir_crate_items(())`. /// diff --git a/compiler/rustc_middle/src/hir/mod.rs b/compiler/rustc_middle/src/hir/mod.rs index a633201e3d9a..96d36b441f31 100644 --- a/compiler/rustc_middle/src/hir/mod.rs +++ b/compiler/rustc_middle/src/hir/mod.rs @@ -36,7 +36,7 @@ impl<'a, 'tcx> HashStable> for Owner<'tcx> { } /// Gather the LocalDefId for each item-like within a module, including items contained within -/// bodies. The Ids are in visitor order. This is used to partition a pass between modules. +/// bodies. The Ids are in visitor order. This is used to partition a pass between modules. #[derive(Debug, HashStable, Encodable, Decodable)] pub struct ModuleItems { submodules: Box<[OwnerId]>, diff --git a/compiler/rustc_middle/src/mir/interpret/mod.rs b/compiler/rustc_middle/src/mir/interpret/mod.rs index 8fe349d9640d..5f425a287687 100644 --- a/compiler/rustc_middle/src/mir/interpret/mod.rs +++ b/compiler/rustc_middle/src/mir/interpret/mod.rs @@ -509,7 +509,7 @@ impl<'tcx> TyCtxt<'tcx> { self.reserve_and_set_dedup(GlobalAlloc::Static(static_id)) } - /// Generates an `AllocId` for a function. Depending on the function type, + /// Generates an `AllocId` for a function. Depending on the function type, /// this might get deduplicated or assigned a new ID each time. pub fn create_fn_alloc(self, instance: Instance<'tcx>) -> AllocId { // Functions cannot be identified by pointers, as asm-equal functions can get deduplicated @@ -518,7 +518,7 @@ impl<'tcx> TyCtxt<'tcx> { // We thus generate a new `AllocId` for every mention of a function. This means that // `main as fn() == main as fn()` is false, while `let x = main as fn(); x == x` is true. // However, formatting code relies on function identity (see #58320), so we only do - // this for generic functions. Lifetime parameters are ignored. + // this for generic functions. Lifetime parameters are ignored. let is_generic = instance .substs .into_iter() @@ -535,7 +535,7 @@ impl<'tcx> TyCtxt<'tcx> { } } - /// Generates an `AllocId` for a (symbolic, not-reified) vtable. Will get deduplicated. + /// Generates an `AllocId` for a (symbolic, not-reified) vtable. Will get deduplicated. pub fn create_vtable_alloc( self, ty: Ty<'tcx>, diff --git a/compiler/rustc_middle/src/mir/mod.rs b/compiler/rustc_middle/src/mir/mod.rs index 14bdff4568f5..e52b243ecf63 100644 --- a/compiler/rustc_middle/src/mir/mod.rs +++ b/compiler/rustc_middle/src/mir/mod.rs @@ -2483,7 +2483,7 @@ impl<'tcx> ConstantKind<'tcx> { // FIXME(const_generics): We currently have to special case parameters because `min_const_generics` // does not provide the parents generics to anonymous constants. We still allow generic const - // parameters by themselves however, e.g. `N`. These constants would cause an ICE if we were to + // parameters by themselves however, e.g. `N`. These constants would cause an ICE if we were to // ever try to substitute the generic parameters in their bodies. // // While this doesn't happen as these constants are always used as `ty::ConstKind::Param`, it does diff --git a/compiler/rustc_middle/src/mir/terminator.rs b/compiler/rustc_middle/src/mir/terminator.rs index 438f36373ca9..6e905224c133 100644 --- a/compiler/rustc_middle/src/mir/terminator.rs +++ b/compiler/rustc_middle/src/mir/terminator.rs @@ -74,7 +74,7 @@ impl SwitchTargets { } /// Finds the `BasicBlock` to which this `SwitchInt` will branch given the - /// specific value. This cannot fail, as it'll return the `otherwise` + /// specific value. This cannot fail, as it'll return the `otherwise` /// branch if there's not a specific match for the value. pub fn target_for_value(&self, value: u128) -> BasicBlock { self.iter().find_map(|(v, t)| (v == value).then_some(t)).unwrap_or_else(|| self.otherwise()) diff --git a/compiler/rustc_middle/src/ty/assoc.rs b/compiler/rustc_middle/src/ty/assoc.rs index 55ee5bd2f810..859a58c8998c 100644 --- a/compiler/rustc_middle/src/ty/assoc.rs +++ b/compiler/rustc_middle/src/ty/assoc.rs @@ -72,7 +72,7 @@ impl AssocItem { ty::AssocKind::Fn => { // We skip the binder here because the binder would deanonymize all // late-bound regions, and we don't want method signatures to show up - // `as for<'r> fn(&'r MyType)`. Pretty-printing handles late-bound + // `as for<'r> fn(&'r MyType)`. Pretty-printing handles late-bound // regions just fine, showing `fn(&MyType)`. tcx.fn_sig(self.def_id).skip_binder().to_string() } diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index 5de414077a2b..c1d2672f2792 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -891,7 +891,7 @@ impl<'tcx> TyCtxt<'tcx> { self.dep_graph.read_index(DepNodeIndex::FOREVER_RED_NODE); // Leak a read lock once we start iterating on definitions, to prevent adding new ones - // while iterating. If some query needs to add definitions, it should be `ensure`d above. + // while iterating. If some query needs to add definitions, it should be `ensure`d above. let definitions = self.untracked.definitions.leak(); definitions.def_path_table() } @@ -903,7 +903,7 @@ impl<'tcx> TyCtxt<'tcx> { // definitions change. self.ensure().hir_crate(()); // Leak a read lock once we start iterating on definitions, to prevent adding new ones - // while iterating. If some query needs to add definitions, it should be `ensure`d above. + // while iterating. If some query needs to add definitions, it should be `ensure`d above. let definitions = self.untracked.definitions.leak(); definitions.def_path_hash_to_def_index_map() } diff --git a/compiler/rustc_middle/src/ty/fold.rs b/compiler/rustc_middle/src/ty/fold.rs index 09fee0c3f7c3..6b9a37d848da 100644 --- a/compiler/rustc_middle/src/ty/fold.rs +++ b/compiler/rustc_middle/src/ty/fold.rs @@ -290,7 +290,7 @@ pub struct RegionFolder<'a, 'tcx> { tcx: TyCtxt<'tcx>, /// Stores the index of a binder *just outside* the stuff we have - /// visited. So this begins as INNERMOST; when we pass through a + /// visited. So this begins as INNERMOST; when we pass through a /// binder, it is incremented (via `shift_in`). current_index: ty::DebruijnIndex, diff --git a/compiler/rustc_middle/src/ty/instance.rs b/compiler/rustc_middle/src/ty/instance.rs index 4ee4d7caec1f..6ac00d16c53d 100644 --- a/compiler/rustc_middle/src/ty/instance.rs +++ b/compiler/rustc_middle/src/ty/instance.rs @@ -756,14 +756,14 @@ fn needs_fn_once_adapter_shim( Ok(false) } (ty::ClosureKind::Fn, ty::ClosureKind::FnMut) => { - // The closure fn `llfn` is a `fn(&self, ...)`. We want a + // The closure fn `llfn` is a `fn(&self, ...)`. We want a // `fn(&mut self, ...)`. In fact, at codegen time, these are // basically the same thing, so we can just return llfn. Ok(false) } (ty::ClosureKind::Fn | ty::ClosureKind::FnMut, ty::ClosureKind::FnOnce) => { // The closure fn `llfn` is a `fn(&self, ...)` or `fn(&mut - // self, ...)`. We want a `fn(self, ...)`. We can produce + // self, ...)`. We want a `fn(self, ...)`. We can produce // this by doing something like: // // fn call_once(self, ...) { call_mut(&self, ...) } diff --git a/compiler/rustc_middle/src/ty/layout.rs b/compiler/rustc_middle/src/ty/layout.rs index 00f53afd6632..dfd016569c27 100644 --- a/compiler/rustc_middle/src/ty/layout.rs +++ b/compiler/rustc_middle/src/ty/layout.rs @@ -879,7 +879,7 @@ where // // If the niche is a pointer, it's either valid (according // to its type), or null (which the niche field's scalar - // validity range encodes). This allows using + // validity range encodes). This allows using // `dereferenceable_or_null` for e.g., `Option<&T>`, and // this will continue to work as long as we don't start // using more niches than just null (e.g., the first page of diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index 993e95b35148..1df19a2abf33 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -689,7 +689,7 @@ impl<'tcx> Predicate<'tcx> { // // In terms of why this is sound, the idea is that whenever there // is an impl of `T:Foo<'a>`, it must show that `T:Bar<'a,'a>` - // holds. So if there is an impl of `T:Foo<'a>` that applies to + // holds. So if there is an impl of `T:Foo<'a>` that applies to // all `'a`, then we must know that `T:Bar<'a,'a>` holds for all // `'a`. // @@ -701,7 +701,7 @@ impl<'tcx> Predicate<'tcx> { // Here, if we have `for<'x> T: Foo1<'x>`, then what do we know? // The answer is that we know `for<'x,'b> T: Bar1<'x,'b>`. The // reason is similar to the previous example: any impl of - // `T:Foo1<'x>` must show that `for<'b> T: Bar1<'x, 'b>`. So + // `T:Foo1<'x>` must show that `for<'b> T: Bar1<'x, 'b>`. So // basically we would want to collapse the bound lifetimes from // the input (`trait_ref`) and the supertraits. // @@ -1330,7 +1330,7 @@ impl<'tcx> OpaqueHiddenType<'tcx> { debug!(?id_substs); // This zip may have several times the same lifetime in `substs` paired with a different - // lifetime from `id_substs`. Simply `collect`ing the iterator is the correct behaviour: + // lifetime from `id_substs`. Simply `collect`ing the iterator is the correct behaviour: // it will pick the last one, which is the one we introduced in the impl-trait desugaring. let map = substs.iter().zip(id_substs); @@ -2141,7 +2141,7 @@ impl<'tcx> TyCtxt<'tcx> { /// Look up the name of a definition across crates. This does not look at HIR. /// - /// This method will ICE if the corresponding item does not have a name. In these cases, use + /// This method will ICE if the corresponding item does not have a name. In these cases, use /// [`opt_item_name`] instead. /// /// [`opt_item_name`]: Self::opt_item_name diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index a91e8de5f21e..42fc78a4715f 100644 --- a/compiler/rustc_middle/src/ty/print/pretty.rs +++ b/compiler/rustc_middle/src/ty/print/pretty.rs @@ -2132,9 +2132,9 @@ impl<'tcx> FmtPrinter<'_, 'tcx> { let identify_regions = self.tcx.sess.opts.unstable_opts.identify_regions; - // These printouts are concise. They do not contain all the information + // These printouts are concise. They do not contain all the information // the user might want to diagnose an error, but there is basically no way - // to fit that into a short string. Hence the recommendation to use + // to fit that into a short string. Hence the recommendation to use // `explain_region()` or `note_and_explain_region()`. match *region { ty::ReEarlyBound(ref data) => { diff --git a/compiler/rustc_middle/src/ty/structural_impls.rs b/compiler/rustc_middle/src/ty/structural_impls.rs index 30073b541ecb..7c5563ac1aed 100644 --- a/compiler/rustc_middle/src/ty/structural_impls.rs +++ b/compiler/rustc_middle/src/ty/structural_impls.rs @@ -455,7 +455,7 @@ impl<'tcx, T: TypeFoldable<'tcx>> TypeFoldable<'tcx> for Rc { let slot = Rc::get_mut_unchecked(&mut unique); // Semantically move the contained type out from `unique`, fold - // it, then move the folded value back into `unique`. Should + // it, then move the folded value back into `unique`. Should // folding fail, `ManuallyDrop` ensures that the "moved-out" // value is not re-dropped. let owned = ManuallyDrop::take(slot); @@ -501,7 +501,7 @@ impl<'tcx, T: TypeFoldable<'tcx>> TypeFoldable<'tcx> for Arc { let slot = Arc::get_mut_unchecked(&mut unique); // Semantically move the contained type out from `unique`, fold - // it, then move the folded value back into `unique`. Should + // it, then move the folded value back into `unique`. Should // folding fail, `ManuallyDrop` ensures that the "moved-out" // value is not re-dropped. let owned = ManuallyDrop::take(slot); diff --git a/compiler/rustc_middle/src/ty/sty.rs b/compiler/rustc_middle/src/ty/sty.rs index f7e4c8215698..14e5f01099a0 100644 --- a/compiler/rustc_middle/src/ty/sty.rs +++ b/compiler/rustc_middle/src/ty/sty.rs @@ -205,7 +205,7 @@ static_assert_size!(TyKind<'_>, 32); /// /// ## Generators /// -/// Generators are handled similarly in `GeneratorSubsts`. The set of +/// Generators are handled similarly in `GeneratorSubsts`. The set of /// type parameters is similar, but `CK` and `CS` are replaced by the /// following type parameters: /// diff --git a/compiler/rustc_middle/src/ty/typeck_results.rs b/compiler/rustc_middle/src/ty/typeck_results.rs index 028a03c0b2bd..1018dd7e2adf 100644 --- a/compiler/rustc_middle/src/ty/typeck_results.rs +++ b/compiler/rustc_middle/src/ty/typeck_results.rs @@ -397,10 +397,10 @@ impl<'tcx> TypeckResults<'tcx> { /// Returns the type of an expression as a monotype. /// - /// NB (1): This is the PRE-ADJUSTMENT TYPE for the expression. That is, in + /// NB (1): This is the PRE-ADJUSTMENT TYPE for the expression. That is, in /// some cases, we insert `Adjustment` annotations such as auto-deref or - /// auto-ref. The type returned by this function does not consider such - /// adjustments. See `expr_ty_adjusted()` instead. + /// auto-ref. The type returned by this function does not consider such + /// adjustments. See `expr_ty_adjusted()` instead. /// /// NB (2): This type doesn't provide type parameter substitutions; e.g., if you /// ask for the type of `id` in `id(3)`, it will return `fn(&isize) -> isize` diff --git a/compiler/rustc_mir_build/src/build/expr/as_operand.rs b/compiler/rustc_mir_build/src/build/expr/as_operand.rs index dbcb0132c9f8..c621efb3b3a5 100644 --- a/compiler/rustc_mir_build/src/build/expr/as_operand.rs +++ b/compiler/rustc_mir_build/src/build/expr/as_operand.rs @@ -27,7 +27,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { /// suitable also to be passed as function arguments. /// /// The operand returned from this function will *not be valid* after an ExprKind::Scope is - /// passed, so please do *not* return it from functions to avoid bad miscompiles. Returns an + /// passed, so please do *not* return it from functions to avoid bad miscompiles. Returns an /// operand suitable for use as a call argument. This is almost always equivalent to /// `as_operand`, except for the particular case of passing values of (potentially) unsized /// types "by value" (see details below). diff --git a/compiler/rustc_mir_build/src/build/expr/stmt.rs b/compiler/rustc_mir_build/src/build/expr/stmt.rs index e9f327978aab..a73ab344718a 100644 --- a/compiler/rustc_mir_build/src/build/expr/stmt.rs +++ b/compiler/rustc_mir_build/src/build/expr/stmt.rs @@ -57,7 +57,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // question raised here -- should we "freeze" the // value of the lhs here? I'm inclined to think not, // since it seems closer to the semantics of the - // overloaded version, which takes `&mut self`. This + // overloaded version, which takes `&mut self`. This // only affects weird things like `x += {x += 1; x}` // -- is that equal to `x + (x + 1)` or `2*(x+1)`? diff --git a/compiler/rustc_mir_build/src/build/matches/mod.rs b/compiler/rustc_mir_build/src/build/matches/mod.rs index f90aba80bf3c..0961ce11e2f9 100644 --- a/compiler/rustc_mir_build/src/build/matches/mod.rs +++ b/compiler/rustc_mir_build/src/build/matches/mod.rs @@ -1870,7 +1870,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // ``` // let place = Foo::new(); // match place { foo if inspect(foo) - // => feed(foo), ... } + // => feed(foo), ... } // ``` // // will be treated as if it were really something like: @@ -1885,7 +1885,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // ``` // let place = Foo::new(); // match place { ref mut foo if inspect(foo) - // => feed(foo), ... } + // => feed(foo), ... } // ``` // // will be treated as if it were really something like: diff --git a/compiler/rustc_mir_build/src/build/matches/test.rs b/compiler/rustc_mir_build/src/build/matches/test.rs index 46e14cc9ac3b..ad7a568a2318 100644 --- a/compiler/rustc_mir_build/src/build/matches/test.rs +++ b/compiler/rustc_mir_build/src/build/matches/test.rs @@ -456,7 +456,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { span: source_info.span, // FIXME(#54571): This constant comes from user input (a - // constant in a pattern). Are there forms where users can add + // constant in a pattern). Are there forms where users can add // type annotations here? For example, an associated constant? // Need to experiment. user_ty: None, @@ -504,7 +504,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { /// This is used by the overall `match_candidates` algorithm to structure /// the match as a whole. See `match_candidates` for more details. /// - /// FIXME(#29623). In some cases, we have some tricky choices to make. for + /// FIXME(#29623). In some cases, we have some tricky choices to make. for /// example, if we are testing that `x == 22`, but the candidate is `x @ /// 13..55`, what should we do? In the event that the test is true, we know /// that the candidate applies, but in the event of false, we don't know diff --git a/compiler/rustc_mir_build/src/build/scope.rs b/compiler/rustc_mir_build/src/build/scope.rs index c92634a609de..591b416337b3 100644 --- a/compiler/rustc_mir_build/src/build/scope.rs +++ b/compiler/rustc_mir_build/src/build/scope.rs @@ -53,7 +53,7 @@ loop { ``` When processing the `let x`, we will add one drop to the scope for -`x`. The break will then insert a drop for `x`. When we process `let +`x`. The break will then insert a drop for `x`. When we process `let y`, we will add another drop (in fact, to a subscope, but let's ignore that for now); any later drops would also drop `y`. @@ -757,7 +757,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { if self.tcx.sess.opts.unstable_opts.maximal_hir_to_mir_coverage { // Some consumers of rustc need to map MIR locations back to HIR nodes. Currently the // the only part of rustc that tracks MIR -> HIR is the `SourceScopeLocalData::lint_root` - // field that tracks lint levels for MIR locations. Normally the number of source scopes + // field that tracks lint levels for MIR locations. Normally the number of source scopes // is limited to the set of nodes with lint annotations. The -Zmaximal-hir-to-mir-coverage // flag changes this behavior to maximize the number of source scopes, increasing the // granularity of the MIR->HIR mapping. diff --git a/compiler/rustc_mir_build/src/lints.rs b/compiler/rustc_mir_build/src/lints.rs index 8529c64cd5cc..fac4997fcbf6 100644 --- a/compiler/rustc_mir_build/src/lints.rs +++ b/compiler/rustc_mir_build/src/lints.rs @@ -60,7 +60,7 @@ impl<'mir, 'tcx> Search<'mir, 'tcx> { /// Returns `true` if `func` refers to the function we are searching in. fn is_recursive_call(&self, func: &Operand<'tcx>, args: &[Operand<'tcx>]) -> bool { let Search { tcx, body, trait_substs, .. } = *self; - // Resolving function type to a specific instance that is being called is expensive. To + // Resolving function type to a specific instance that is being called is expensive. To // avoid the cost we check the number of arguments first, which is sufficient to reject // most of calls as non-recursive. if args.len() != body.arg_count { diff --git a/compiler/rustc_mir_dataflow/src/impls/mod.rs b/compiler/rustc_mir_dataflow/src/impls/mod.rs index bc31ec42b8b6..4b5324e203aa 100644 --- a/compiler/rustc_mir_dataflow/src/impls/mod.rs +++ b/compiler/rustc_mir_dataflow/src/impls/mod.rs @@ -750,7 +750,7 @@ where /// Calls `f` for each mutable borrow or raw reference in the program. /// -/// This DOES NOT call `f` for a shared borrow of a type with interior mutability. That's okay for +/// This DOES NOT call `f` for a shared borrow of a type with interior mutability. That's okay for /// initializedness, because we cannot move from an `UnsafeCell` (outside of `core::cell`), but /// other analyses will likely need to check for `!Freeze`. fn for_each_mut_borrow<'tcx>( diff --git a/compiler/rustc_mir_transform/src/add_retag.rs b/compiler/rustc_mir_transform/src/add_retag.rs index 3d22035f0785..7d2146214c6d 100644 --- a/compiler/rustc_mir_transform/src/add_retag.rs +++ b/compiler/rustc_mir_transform/src/add_retag.rs @@ -120,7 +120,7 @@ impl<'tcx> MirPass<'tcx> for AddRetag { // PART 3 // Add retag after assignments where data "enters" this function: the RHS is behind a deref and the LHS is not. for block_data in basic_blocks { - // We want to insert statements as we iterate. To this end, we + // We want to insert statements as we iterate. To this end, we // iterate backwards using indices. for i in (0..block_data.statements.len()).rev() { let (retag_kind, place) = match block_data.statements[i].kind { diff --git a/compiler/rustc_mir_transform/src/sroa.rs b/compiler/rustc_mir_transform/src/sroa.rs index 3a2bf0515165..42124f5a4808 100644 --- a/compiler/rustc_mir_transform/src/sroa.rs +++ b/compiler/rustc_mir_transform/src/sroa.rs @@ -215,7 +215,7 @@ struct ReplacementVisitor<'tcx, 'll> { replacements: ReplacementMap<'tcx>, /// This is used to check that we are not leaving references to replaced locals behind. all_dead_locals: BitSet, - /// Pre-computed list of all "new" locals for each "old" local. This is used to expand storage + /// Pre-computed list of all "new" locals for each "old" local. This is used to expand storage /// and deinit statement and debuginfo. fragments: IndexVec], Local)>>, } diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 2fd2a4e5154f..ffb23b50a160 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -542,9 +542,9 @@ impl<'a> Parser<'a> { } } - /// Expect next token to be edible or inedible token. If edible, + /// Expect next token to be edible or inedible token. If edible, /// then consume it; if inedible, then return without consuming - /// anything. Signal a fatal error if next token is unexpected. + /// anything. Signal a fatal error if next token is unexpected. pub fn expect_one_of( &mut self, edible: &[TokenKind], diff --git a/compiler/rustc_passes/src/liveness.rs b/compiler/rustc_passes/src/liveness.rs index b49432b79962..6afdcc37fe86 100644 --- a/compiler/rustc_passes/src/liveness.rs +++ b/compiler/rustc_passes/src/liveness.rs @@ -191,9 +191,9 @@ pub fn provide(providers: &mut Providers) { // Creating ir_maps // // This is the first pass and the one that drives the main -// computation. It walks up and down the IR once. On the way down, +// computation. It walks up and down the IR once. On the way down, // we count for each function the number of variables as well as -// liveness nodes. A liveness node is basically an expression or +// liveness nodes. A liveness node is basically an expression or // capture clause that does something of interest: either it has // interesting control flow or it uses/defines a local variable. // @@ -203,11 +203,11 @@ pub fn provide(providers: &mut Providers) { // of live variables at each program point. // // Finally, we run back over the IR one last time and, using the -// computed liveness, check various safety conditions. For example, +// computed liveness, check various safety conditions. For example, // there must be no live nodes at the definition site for a variable -// unless it has an initializer. Similarly, each non-mutable local +// unless it has an initializer. Similarly, each non-mutable local // variable must not be assigned if there is some successor -// assignment. And so forth. +// assignment. And so forth. struct CaptureInfo { ln: LiveNode, @@ -417,7 +417,7 @@ impl<'tcx> Visitor<'tcx> for IrMaps<'tcx> { self.add_live_node_for_node(expr.hir_id, ExprNode(expr.span, expr.hir_id)); // Make a live_node for each mentioned variable, with the span - // being the location that the variable is used. This results + // being the location that the variable is used. This results // in better error messages than just pointing at the closure // construction site. let mut call_caps = Vec::new(); @@ -792,7 +792,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { match stmt.kind { hir::StmtKind::Local(ref local) => { // Note: we mark the variable as defined regardless of whether - // there is an initializer. Initially I had thought to only mark + // there is an initializer. Initially I had thought to only mark // the live variable as defined if it was initialized, and then we // could check for uninit variables just by scanning what is live // at the start of the function. But that doesn't work so well for @@ -1169,24 +1169,24 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { // // # Tracked places // - // A tracked place is a local variable/argument `x`. In + // A tracked place is a local variable/argument `x`. In // these cases, the link_node where the write occurs is linked - // to node id of `x`. The `write_place()` routine generates - // the contents of this node. There are no subcomponents to + // to node id of `x`. The `write_place()` routine generates + // the contents of this node. There are no subcomponents to // consider. // // # Non-tracked places // - // These are places like `x[5]` or `x.f`. In that case, we + // These are places like `x[5]` or `x.f`. In that case, we // basically ignore the value which is written to but generate - // reads for the components---`x` in these two examples. The + // reads for the components---`x` in these two examples. The // components reads are generated by // `propagate_through_place_components()` (this fn). // // # Illegal places // // It is still possible to observe assignments to non-places; - // these errors are detected in the later pass borrowck. We + // these errors are detected in the later pass borrowck. We // just ignore such cases and treat them as reads. match expr.kind { @@ -1204,7 +1204,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { } // We do not track other places, so just propagate through - // to their subcomponents. Also, it may happen that + // to their subcomponents. Also, it may happen that // non-places occur here, because those are detected in the // later pass borrowck. _ => succ, diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs index 96f7236de5cb..34e1abb78b2d 100644 --- a/compiler/rustc_passes/src/stability.rs +++ b/compiler/rustc_passes/src/stability.rs @@ -147,7 +147,7 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> { } if !self.tcx.features().staged_api { - // Propagate unstability. This can happen even for non-staged-api crates in case + // Propagate unstability. This can happen even for non-staged-api crates in case // -Zforce-unstable-if-unmarked is set. if let Some(stab) = self.parent_stab { if inherit_deprecation.yes() && stab.is_unstable() { diff --git a/compiler/rustc_query_system/src/dep_graph/graph.rs b/compiler/rustc_query_system/src/dep_graph/graph.rs index 53c9da157371..47b2fd8f8f47 100644 --- a/compiler/rustc_query_system/src/dep_graph/graph.rs +++ b/compiler/rustc_query_system/src/dep_graph/graph.rs @@ -490,8 +490,8 @@ impl DepGraph { /// This is used to remove cycles during type-checking const generic parameters. /// /// As usual in the query system, we consider the current state of the calling query - /// only depends on the list of dependencies up to now. As a consequence, the value - /// that this query gives us can only depend on those dependencies too. Therefore, + /// only depends on the list of dependencies up to now. As a consequence, the value + /// that this query gives us can only depend on those dependencies too. Therefore, /// it is sound to use the current dependency set for the created node. /// /// During replay, the order of the nodes is relevant in the dependency graph. @@ -510,9 +510,9 @@ impl DepGraph { hash_result: Option, &R) -> Fingerprint>, ) -> DepNodeIndex { if let Some(data) = self.data.as_ref() { - // The caller query has more dependencies than the node we are creating. We may + // The caller query has more dependencies than the node we are creating. We may // encounter a case where this created node is marked as green, but the caller query is - // subsequently marked as red or recomputed. In this case, we will end up feeding a + // subsequently marked as red or recomputed. In this case, we will end up feeding a // value to an existing node. // // For sanity, we still check that the loaded stable hash and the new one match. @@ -980,7 +980,7 @@ rustc_index::newtype_index! { /// graph: they are only added. /// /// The nodes in it are identified by a `DepNodeIndex`. We avoid keeping the nodes -/// in memory. This is important, because these graph structures are some of the +/// in memory. This is important, because these graph structures are some of the /// largest in the compiler. /// /// For this reason, we avoid storing `DepNode`s more than once as map diff --git a/compiler/rustc_query_system/src/dep_graph/serialized.rs b/compiler/rustc_query_system/src/dep_graph/serialized.rs index dfc1344f85c7..a81595b2420c 100644 --- a/compiler/rustc_query_system/src/dep_graph/serialized.rs +++ b/compiler/rustc_query_system/src/dep_graph/serialized.rs @@ -1,14 +1,14 @@ //! The data that we will serialize and deserialize. //! //! The dep-graph is serialized as a sequence of NodeInfo, with the dependencies -//! specified inline. The total number of nodes and edges are stored as the last +//! specified inline. The total number of nodes and edges are stored as the last //! 16 bytes of the file, so we can find them easily at decoding time. //! //! The serialisation is performed on-demand when each node is emitted. Using this //! scheme, we do not need to keep the current graph in memory. //! //! The deserialization is performed manually, in order to convert from the stored -//! sequence of NodeInfos to the different arrays in SerializedDepGraph. Since the +//! sequence of NodeInfos to the different arrays in SerializedDepGraph. Since the //! node and edge count are stored at the end of the file, all the arrays can be //! pre-allocated with the right length. diff --git a/compiler/rustc_query_system/src/query/caches.rs b/compiler/rustc_query_system/src/query/caches.rs index f65846fc77f6..77d0d0314fc1 100644 --- a/compiler/rustc_query_system/src/query/caches.rs +++ b/compiler/rustc_query_system/src/query/caches.rs @@ -116,7 +116,7 @@ where let mut lock = self.cache.get_shard_by_value(&key).lock(); #[cfg(not(parallel_compiler))] let mut lock = self.cache.lock(); - // We may be overwriting another value. This is all right, since the dep-graph + // We may be overwriting another value. This is all right, since the dep-graph // will check that the fingerprint matches. lock.insert(key, (value.clone(), index)); value @@ -203,7 +203,7 @@ where let mut lock = self.cache.get_shard_by_value(&key).lock(); #[cfg(not(parallel_compiler))] let mut lock = self.cache.lock(); - // We may be overwriting another value. This is all right, since the dep-graph + // We may be overwriting another value. This is all right, since the dep-graph // will check that the fingerprint matches. lock.insert(key, value); &value.0 diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs index ca43762aa214..d6491b8b0146 100644 --- a/compiler/rustc_resolve/src/late.rs +++ b/compiler/rustc_resolve/src/late.rs @@ -668,7 +668,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> { && let Some(partial_res) = self.r.partial_res_map.get(&ty.id) && let Some(Res::Def(DefKind::Trait | DefKind::TraitAlias, _)) = partial_res.full_res() { - // This path is actually a bare trait object. In case of a bare `Fn`-trait + // This path is actually a bare trait object. In case of a bare `Fn`-trait // object with anonymous lifetimes, we need this rib to correctly place the // synthetic lifetimes. let span = ty.span.shrink_to_lo().to(path.span.shrink_to_lo()); @@ -1046,7 +1046,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> { // Probe the lifetime ribs to know how to behave. for rib in self.lifetime_ribs.iter().rev() { match rib.kind { - // We are inside a `PolyTraitRef`. The lifetimes are + // We are inside a `PolyTraitRef`. The lifetimes are // to be intoduced in that (maybe implicit) `for<>` binder. LifetimeRibKind::Generics { binder, @@ -1069,7 +1069,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> { ); break; } - // We have nowhere to introduce generics. Code is malformed, + // We have nowhere to introduce generics. Code is malformed, // so use regular lifetime resolution to avoid spurious errors. LifetimeRibKind::Item | LifetimeRibKind::Generics { .. } => { visit::walk_generic_args(self, args); @@ -1775,7 +1775,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> { break; } // `LifetimeRes::Error`, which would usually be used in the case of - // `ReportError`, is unsuitable here, as we don't emit an error yet. Instead, + // `ReportError`, is unsuitable here, as we don't emit an error yet. Instead, // we simply resolve to an implicit lifetime, which will be checked later, at // which point a suitable error will be emitted. LifetimeRibKind::AnonymousReportError | LifetimeRibKind::Item => { @@ -3647,7 +3647,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> { if let Some(qself) = qself { if qself.position == 0 { // This is a case like `::B`, where there is no - // trait to resolve. In that case, we leave the `B` + // trait to resolve. In that case, we leave the `B` // segment to be resolved by type-check. return Ok(Some(PartialRes::with_unresolved_segments( Res::Def(DefKind::Mod, CRATE_DEF_ID.to_def_id()), @@ -3658,7 +3658,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> { // Make sure `A::B` in `::C` is a trait item. // // Currently, `path` names the full item (`A::B::C`, in - // our example). so we extract the prefix of that that is + // our example). so we extract the prefix of that that is // the trait (the slice upto and including // `qself.position`). And then we recursively resolve that, // but with `qself` set to `None`. diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 1ccfc59f7a9d..1f9d63401713 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -715,7 +715,7 @@ impl OutputFilenames { pub fn host_triple() -> &'static str { // Get the host triple out of the build environment. This ensures that our // idea of the host triple is the same as for the set of libraries we've - // actually built. We can't just take LLVM's host triple because they + // actually built. We can't just take LLVM's host triple because they // normalize all ix86 architectures to i386. // // Instead of grabbing the host triple (for the current host), we grab (at @@ -1271,7 +1271,7 @@ impl RustcOptGroup { // The `opt` local module holds wrappers around the `getopts` API that // adds extra rustc-specific metadata to each option; such metadata -// is exposed by . The public +// is exposed by . The public // functions below ending with `_u` are the functions that return // *unstable* options, i.e., options that are only enabled when the // user also passes the `-Z unstable-options` debugging flag. diff --git a/compiler/rustc_session/src/cstore.rs b/compiler/rustc_session/src/cstore.rs index 7f926f7d8bc4..4ae9a3fae474 100644 --- a/compiler/rustc_session/src/cstore.rs +++ b/compiler/rustc_session/src/cstore.rs @@ -228,7 +228,7 @@ pub trait CrateStore: std::fmt::Debug { fn def_path_hash(&self, def: DefId) -> DefPathHash; // This information is safe to access, since it's hashed as part of the StableCrateId, which - // incr. comp. uses to identify a CrateNum. + // incr. comp. uses to identify a CrateNum. fn crate_name(&self, cnum: CrateNum) -> Symbol; fn stable_crate_id(&self, cnum: CrateNum) -> StableCrateId; fn stable_crate_id_to_crate_num(&self, stable_crate_id: StableCrateId) -> CrateNum; diff --git a/compiler/rustc_session/src/filesearch.rs b/compiler/rustc_session/src/filesearch.rs index 6f1b31ff9c3a..b6a328908ce0 100644 --- a/compiler/rustc_session/src/filesearch.rs +++ b/compiler/rustc_session/src/filesearch.rs @@ -155,7 +155,7 @@ pub fn sysroot_candidates() -> SmallVec<[PathBuf; 2]> { /// This function checks if sysroot is found using env::args().next(), and if it /// is not found, finds sysroot from current rustc_driver dll. pub fn get_or_default_sysroot() -> Result { - // Follow symlinks. If the resolved path is relative, make it absolute. + // Follow symlinks. If the resolved path is relative, make it absolute. fn canonicalize(path: PathBuf) -> PathBuf { let path = fs::canonicalize(&path).unwrap_or(path); // See comments on this target function, but the gist is that diff --git a/compiler/rustc_session/src/output.rs b/compiler/rustc_session/src/output.rs index 8ee3057de625..cf45d6f1aa5c 100644 --- a/compiler/rustc_session/src/output.rs +++ b/compiler/rustc_session/src/output.rs @@ -29,9 +29,9 @@ pub fn out_filename( out_filename } -/// Make sure files are writeable. Mac, FreeBSD, and Windows system linkers +/// Make sure files are writeable. Mac, FreeBSD, and Windows system linkers /// check this already -- however, the Linux linker will happily overwrite a -/// read-only file. We should be consistent. +/// read-only file. We should be consistent. pub fn check_file_is_writeable(file: &Path, sess: &Session) { if !is_writeable(file) { sess.emit_fatal(FileIsNotWriteable { file }); diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index 1b2e8d9dc707..8d92954ec949 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -197,7 +197,7 @@ pub struct Session { pub ctfe_backtrace: Lock, /// This tracks where `-Zunleash-the-miri-inside-of-you` was used to get around a - /// const check, optionally with the relevant feature gate. We use this to + /// const check, optionally with the relevant feature gate. We use this to /// warn about unleashing, but with a single diagnostic instead of dozens that /// drown everything else in noise. miri_unleashed_features: Lock)>>, diff --git a/compiler/rustc_span/src/hygiene.rs b/compiler/rustc_span/src/hygiene.rs index a9a9a3fbf9d8..dee823eefde6 100644 --- a/compiler/rustc_span/src/hygiene.rs +++ b/compiler/rustc_span/src/hygiene.rs @@ -338,7 +338,7 @@ pub struct HygieneData { /// first and then resolved later), so we use an `Option` here. local_expn_data: IndexVec>, local_expn_hashes: IndexVec, - /// Data and hash information from external crates. We may eventually want to remove these + /// Data and hash information from external crates. We may eventually want to remove these /// maps, and fetch the information directly from the other crate's metadata like DefIds do. foreign_expn_data: FxHashMap, foreign_expn_hashes: FxHashMap, diff --git a/compiler/rustc_target/src/spec/aarch64_apple_darwin.rs b/compiler/rustc_target/src/spec/aarch64_apple_darwin.rs index e72cab629ff1..b69ade7e4aa0 100644 --- a/compiler/rustc_target/src/spec/aarch64_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/aarch64_apple_darwin.rs @@ -12,7 +12,7 @@ pub fn target() -> Target { Target { // Clang automatically chooses a more specific target based on - // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work + // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work // correctly, we do too. llvm_target: macos_llvm_target(arch).into(), pointer_width: 64, diff --git a/compiler/rustc_target/src/spec/i686_apple_darwin.rs b/compiler/rustc_target/src/spec/i686_apple_darwin.rs index ad22467ba9c8..b5103d15db69 100644 --- a/compiler/rustc_target/src/spec/i686_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/i686_apple_darwin.rs @@ -12,7 +12,7 @@ pub fn target() -> Target { Target { // Clang automatically chooses a more specific target based on - // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work + // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work // correctly, we do too. // // While ld64 doesn't understand i686, LLVM does. diff --git a/compiler/rustc_target/src/spec/illumos_base.rs b/compiler/rustc_target/src/spec/illumos_base.rs index 8ac351584434..e63e789752bc 100644 --- a/compiler/rustc_target/src/spec/illumos_base.rs +++ b/compiler/rustc_target/src/spec/illumos_base.rs @@ -5,8 +5,8 @@ pub fn opts() -> TargetOptions { LinkerFlavor::Unix(Cc::Yes), &[ // The illumos libc contains a stack unwinding implementation, as - // does libgcc_s. The latter implementation includes several - // additional symbols that are not always in base libc. To force + // does libgcc_s. The latter implementation includes several + // additional symbols that are not always in base libc. To force // the consistent use of just one unwinder, we ensure libc appears // after libgcc_s in the NEEDED list for the resultant binary by // ignoring any attempts to add it as a dynamic dependency until the @@ -17,7 +17,7 @@ pub fn opts() -> TargetOptions { "-lc", // LLVM will insert calls to the stack protector functions // "__stack_chk_fail" and "__stack_chk_guard" into code in native - // object files. Some platforms include these symbols directly in + // object files. Some platforms include these symbols directly in // libc, but at least historically these have been provided in // libssp.so on illumos and Solaris systems. "-lssp", @@ -40,16 +40,16 @@ pub fn opts() -> TargetOptions { // cleanup handlers (in C, this would be something along the lines of: // void register_callback(void (*fn)(void *), void *arg); // (see src/libstd/sys/unix/fast_thread_local.rs) that is currently - // missing in illumos. For now at least, we must fallback to using + // missing in illumos. For now at least, we must fallback to using // pthread_{get,set}specific. //has_thread_local: true, // FIXME: Currently, rust is invoking cc to link, which ends up - // causing these to get included twice. We should eventually transition + // causing these to get included twice. We should eventually transition // to having rustc invoke ld directly, in which case these will need to // be uncommented. // - // We want XPG6 behavior from libc and libm. See standards(5) + // We want XPG6 behavior from libc and libm. See standards(5) //pre_link_objects_exe: vec![ // "/usr/lib/amd64/values-Xc.o".into(), // "/usr/lib/amd64/values-xpg6.o".into(), diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 1e80b8b759db..a094c2c54526 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -2622,7 +2622,7 @@ impl Target { /// Search for a JSON file specifying the given target triple. /// /// If none is found in `$RUST_TARGET_PATH`, look for a file called `target.json` inside the - /// sysroot under the target-triple's `rustlib` directory. Note that it could also just be a + /// sysroot under the target-triple's `rustlib` directory. Note that it could also just be a /// bare filename already, so also check for that. If one of the hardcoded targets we know /// about, just return it directly. /// diff --git a/compiler/rustc_target/src/spec/sparcv9_sun_solaris.rs b/compiler/rustc_target/src/spec/sparcv9_sun_solaris.rs index 440194ef216b..4d2bc98ab783 100644 --- a/compiler/rustc_target/src/spec/sparcv9_sun_solaris.rs +++ b/compiler/rustc_target/src/spec/sparcv9_sun_solaris.rs @@ -15,7 +15,7 @@ pub fn target() -> Target { pointer_width: 64, data_layout: "E-m:e-i64:64-n32:64-S128".into(), // Use "sparc64" instead of "sparcv9" here, since the former is already - // used widely in the source base. If we ever needed ABI + // used widely in the source base. If we ever needed ABI // differentiation from the sparc64, we could, but that would probably // just be confusing. arch: "sparc64".into(), diff --git a/compiler/rustc_target/src/spec/x86_64_apple_darwin.rs b/compiler/rustc_target/src/spec/x86_64_apple_darwin.rs index 9a3e7a805002..e90bda9c9a87 100644 --- a/compiler/rustc_target/src/spec/x86_64_apple_darwin.rs +++ b/compiler/rustc_target/src/spec/x86_64_apple_darwin.rs @@ -14,7 +14,7 @@ pub fn target() -> Target { Target { // Clang automatically chooses a more specific target based on - // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work + // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work // correctly, we do too. llvm_target: macos_llvm_target(arch).into(), pointer_width: 64, diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs index 20bede22c342..5ee2514652cb 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs @@ -2193,7 +2193,7 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> { // This is kind of a hack: it frequently happens that some earlier // error prevents types from being fully inferred, and then we get // a bunch of uninteresting errors saying something like " doesn't implement Sized". It may even be true that we + // #0> doesn't implement Sized". It may even be true that we // could just skip over all checks where the self-ty is an // inference variable, but I was afraid that there might be an // inference variable created, registered as an obligation, and 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 1b98ead29f85..cabf51e01da3 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -2259,7 +2259,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { // generator interior are not generally known, so we // want to erase them when comparing (and anyway, // `Send` and other bounds are generally unaffected by - // the choice of region). When erasing regions, we + // the choice of region). When erasing regions, we // also have to erase late-bound regions. This is // because the types that appear in the generator // interior generally contain "bound regions" to @@ -2275,7 +2275,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { }; // Get the typeck results from the infcx if the generator is the function we are currently - // type-checking; otherwise, get them by performing a query. This is needed to avoid + // type-checking; otherwise, get them by performing a query. This is needed to avoid // cycles. If we can't use resolved types because the generator comes from another crate, // we still provide a targeted error but without all the relevant spans. let generator_data = match &self.typeck_results { diff --git a/compiler/rustc_trait_selection/src/traits/object_safety.rs b/compiler/rustc_trait_selection/src/traits/object_safety.rs index 8b1ced78f4e8..9a0e3d298eda 100644 --- a/compiler/rustc_trait_selection/src/traits/object_safety.rs +++ b/compiler/rustc_trait_selection/src/traits/object_safety.rs @@ -809,7 +809,7 @@ fn contains_illegal_self_type_reference<'tcx, T: TypeVisitable<'tcx>>( // SomeTrait` is in fact a supertrait of the // current trait. In that case, this type is // legal, because the type `X` will be specified - // in the object type. Note that we can just use + // in the object type. Note that we can just use // direct equality here because all of these types // are part of the formal parameter listing, and // hence there should be no inference variables. diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs index 81966f3fcb23..eecd4cf03beb 100644 --- a/compiler/rustc_trait_selection/src/traits/project.rs +++ b/compiler/rustc_trait_selection/src/traits/project.rs @@ -148,7 +148,7 @@ impl<'tcx> ProjectionCandidateSet<'tcx> { } // Prefer where-clauses. As in select, if there are multiple - // candidates, we prefer where-clause candidates over impls. This + // candidates, we prefer where-clause candidates over impls. This // may seem a bit surprising, since impls are the source of // "truth" in some sense, but in fact some of the impls that SEEM // applicable are not, because of nested obligations. Where @@ -1034,7 +1034,7 @@ fn opt_normalize_projection_type<'a, 'b, 'tcx>( } Err(ProjectionCacheEntry::InProgress) => { // Under lazy normalization, this can arise when - // bootstrapping. That is, imagine an environment with a + // bootstrapping. That is, imagine an environment with a // where-clause like `A::B == u32`. Now, if we are asked // to normalize `A::B`, we will want to check the // where-clauses in scope. So we will try to unify `A::B` diff --git a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs index 8c291d1595d9..98bf1cd7a7cc 100644 --- a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs +++ b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs @@ -398,7 +398,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { } ty::Param(..) | ty::Alias(ty::Projection, ..) => { // In these cases, we don't know what the actual - // type is. Therefore, we cannot break it down + // type is. Therefore, we cannot break it down // into its constituent types. So we don't // consider the `..` impl but instead just add no // candidates: this means that typeck will only diff --git a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs index a41d10f10435..f41d3c460acd 100644 --- a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs +++ b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs @@ -2,7 +2,7 @@ //! //! Confirmation unifies the output type parameters of the trait //! with the values found in the obligation, possibly yielding a -//! type error. See the [rustc dev guide] for more details. +//! type error. See the [rustc dev guide] for more details. //! //! [rustc dev guide]: //! https://rustc-dev-guide.rust-lang.org/traits/resolution.html#confirmation @@ -357,8 +357,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { nested, ); - // Adds the predicates from the trait. Note that this contains a `Self: Trait` - // predicate as usual. It won't have any effect since auto traits are coinductive. + // Adds the predicates from the trait. Note that this contains a `Self: Trait` + // predicate as usual. It won't have any effect since auto traits are coinductive. obligations.extend(trait_obligations); debug!(?obligations, "vtable_auto_impl"); diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs index 305902af7c82..b217b5c32885 100644 --- a/compiler/rustc_trait_selection/src/traits/select/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs @@ -430,7 +430,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // impl Vec { fn push_clone(...) { ... } } // // and we were to see some code `foo.push_clone()` where `boo` - // is a `Vec` and `Bar` does not implement `Clone`. If + // is a `Vec` and `Bar` does not implement `Clone`. If // we were to winnow, we'd wind up with zero candidates. // Instead, we select the right impl now but report "`Bar` does // not implement `Clone`". @@ -2324,7 +2324,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // Matching // // Matching is a common path used for both evaluation and - // confirmation. It basically unifies types that appear in impls + // confirmation. It basically unifies types that appear in impls // and traits. This does affect the surrounding environment; // therefore, when used during evaluation, match routines must be // run inside of a `probe()` so that their side-effects are @@ -2644,7 +2644,7 @@ impl<'o, 'tcx> TraitObligationStack<'o, 'tcx> { /// In Issue #60010, we found a bug in rustc where it would cache /// these intermediate results. This was fixed in #60444 by disabling /// *all* caching for things involved in a cycle -- in our example, -/// that would mean we don't cache that `Bar: Send`. But this led +/// that would mean we don't cache that `Bar: Send`. But this led /// to large slowdowns. /// /// Specifically, imagine this scenario, where proving `Baz: Send` @@ -2670,7 +2670,7 @@ impl<'o, 'tcx> TraitObligationStack<'o, 'tcx> { /// a result at `reached_depth`, so it marks the *current* solution as /// provisional as well. If an error is encountered, we toss out any /// provisional results added from the subtree that encountered the -/// error. When we pop the node at `reached_depth` from the stack, we +/// error. When we pop the node at `reached_depth` from the stack, we /// can commit all the things that remain in the provisional cache. struct ProvisionalEvaluationCache<'tcx> { /// next "depth first number" to issue -- just a counter @@ -2781,7 +2781,7 @@ impl<'tcx> ProvisionalEvaluationCache<'tcx> { } /// Invoked when the node with dfn `dfn` does not get a successful - /// result. This will clear out any provisional cache entries + /// result. This will clear out any provisional cache entries /// that were added since `dfn` was created. This is because the /// provisional entries are things which must assume that the /// things on the stack at the time of their creation succeeded -- diff --git a/compiler/rustc_trait_selection/src/traits/specialize/specialization_graph.rs b/compiler/rustc_trait_selection/src/traits/specialize/specialization_graph.rs index 02b066777402..03cd4ea27e13 100644 --- a/compiler/rustc_trait_selection/src/traits/specialize/specialization_graph.rs +++ b/compiler/rustc_trait_selection/src/traits/specialize/specialization_graph.rs @@ -417,7 +417,7 @@ pub(crate) fn assoc_def( } else { // This is saying that neither the trait nor // the impl contain a definition for this - // associated type. Normally this situation + // associated type. Normally this situation // could only arise through a compiler bug -- // if the user wrote a bad item name, it // should have failed in astconv. diff --git a/compiler/rustc_trait_selection/src/traits/wf.rs b/compiler/rustc_trait_selection/src/traits/wf.rs index fec4047ff49b..e6f3dd17d218 100644 --- a/compiler/rustc_trait_selection/src/traits/wf.rs +++ b/compiler/rustc_trait_selection/src/traits/wf.rs @@ -76,7 +76,7 @@ pub fn obligations<'tcx>( } /// Returns the obligations that make this trait reference -/// well-formed. For example, if there is a trait `Set` defined like +/// well-formed. For example, if there is a trait `Set` defined like /// `trait Set`, then the trait reference `Foo: Set` is WF /// if `Bar: Eq`. pub fn trait_obligations<'tcx>( diff --git a/compiler/rustc_traits/src/codegen.rs b/compiler/rustc_traits/src/codegen.rs index f127ef8343f9..c0da8a8169e5 100644 --- a/compiler/rustc_traits/src/codegen.rs +++ b/compiler/rustc_traits/src/codegen.rs @@ -1,5 +1,5 @@ // This file contains various trait resolution methods used by codegen. -// They all assume regions can be erased and monomorphic types. It +// They all assume regions can be erased and monomorphic types. It // seems likely that they should eventually be merged into more // general routines. diff --git a/compiler/rustc_type_ir/src/sty.rs b/compiler/rustc_type_ir/src/sty.rs index b944cbd698d1..5f29588ae4d2 100644 --- a/compiler/rustc_type_ir/src/sty.rs +++ b/compiler/rustc_type_ir/src/sty.rs @@ -807,7 +807,7 @@ where /// /// Note that inference variables and bound regions are not included /// in this diagram. In the case of inference variables, they should -/// be inferred to some other region from the diagram. In the case of +/// be inferred to some other region from the diagram. In the case of /// bound regions, they are excluded because they don't make sense to /// include -- the diagram indicates the relationship between free /// regions. From a49f57180d8a677e44abe30346d216c192e92fd4 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Tue, 17 Jan 2023 08:09:51 +0000 Subject: [PATCH 476/478] Add a tidy check to check for ". \w" --- src/tools/tidy/src/style.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index 5c4ba8693645..ae7e3d8d702a 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -45,6 +45,9 @@ C++ code used llvm_unreachable, which triggers undefined behavior when executed when assertions are disabled. Use llvm::report_fatal_error for increased robustness."; +const DOUBLE_SPACE_AFTER_DOT: &str = r"\ +Use a single space after dots in comments."; + const ANNOTATIONS_TO_IGNORE: &[&str] = &[ "// @!has", "// @has", @@ -405,6 +408,19 @@ pub fn check(path: &Path, bad: &mut bool) { if filename.ends_with(".cpp") && line.contains("llvm_unreachable") { err(LLVM_UNREACHABLE_INFO); } + + // For now only enforce in compiler + let is_compiler = || file.components().any(|c| c.as_os_str() == "compiler"); + if is_compiler() + && line.contains("//") + && line + .chars() + .collect::>() + .windows(4) + .any(|cs| matches!(cs, ['.', ' ', ' ', last] if last.is_alphabetic())) + { + err(DOUBLE_SPACE_AFTER_DOT) + } } if leading_new_lines { let mut err = |_| { From 7d59c0ccaa3aeb528a66ae3d2fec6a5ebbe44bc2 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Thu, 12 Jan 2023 20:01:36 +0000 Subject: [PATCH 477/478] Skip tidy style checks for `rustc_apfloat` --- src/tools/tidy/src/style.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index ae7e3d8d702a..6a0855405ec9 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -282,6 +282,10 @@ pub fn check(path: &Path, bad: &mut bool) { if filename.contains("ignore-tidy") { return; } + // apfloat shouldn't be changed because of license problems + if is_in(file, "compiler", "rustc_apfloat") { + return; + } let mut skip_cr = contains_ignore_directive(can_contain, &contents, "cr"); let mut skip_undocumented_unsafe = contains_ignore_directive(can_contain, &contents, "undocumented-unsafe"); From 4aa07c921abafcc43fc9d545d8ec86b80103ec4e Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 13 Jan 2023 14:01:33 +0100 Subject: [PATCH 478/478] clippy --- src/tools/miri/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs index 7024927b2056..84b64b039132 100644 --- a/src/tools/miri/src/lib.rs +++ b/src/tools/miri/src/lib.rs @@ -21,7 +21,7 @@ clippy::single_match, clippy::useless_format, clippy::derive_partial_eq_without_eq, - clippy::derive_hash_xor_eq, + clippy::derived_hash_with_manual_eq, clippy::too_many_arguments, clippy::type_complexity, clippy::single_element_loop,